Modify test to avoid race condition.
automerge: 3da136a

* commit '3da136aa47e2d1608b98abb2580f024b36f92831':
  Modify test to avoid race condition.
diff --git a/ABI-bugs.txt b/ABI-bugs.txt
deleted file mode 100644
index 51da9f0..0000000
--- a/ABI-bugs.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-KNOWN ABI BUGS
---------------
-
-  time_t is 32-bit. http://b/5819737
-
-  off_t is 32-bit. There is off64_t, but no _FILE_OFFSET_BITS support.
-
-  sigset_t is too small on ARM and x86 (but correct on MIPS), so support
-  for real-time signals is broken. http://b/5828899
-
-  atexit(3) handlers registered by a shared library aren't called on
-  dlclose(3); this only affects ARM. http://b/4998315
diff --git a/CPPLINT.cfg b/CPPLINT.cfg
new file mode 100644
index 0000000..560d791
--- /dev/null
+++ b/CPPLINT.cfg
@@ -0,0 +1,2 @@
+set noparent
+filter=-build/header_guard,-runtime/int,-readability/function
diff --git a/HACKING.txt b/HACKING.txt
deleted file mode 100644
index 27e1368..0000000
--- a/HACKING.txt
+++ /dev/null
@@ -1,162 +0,0 @@
-Working on bionic
-=================
-
-What are the big pieces of bionic?
-----------------------------------
-
-libc/ --- libc.so, libc.a
-  The C library. Stuff like fopen(3) and kill(2).
-libm/ --- libm.so, libm.a
-  The math library. Traditionally Unix systems kept stuff like sin(3) and
-  cos(3) in a separate library to save space in the days before shared
-  libraries.
-libdl/ --- libdl.so
-  The dynamic linker interface library. This is actually just a bunch of
-  stubs that the dynamic linker replaces with pointers to its own
-  implementation at runtime. This is where stuff like dlopen(3) lives.
-libstdc++/ --- libstdc++.so
-  The C++ ABI support functions. The C++ compiler doesn't know how to
-  implement thread-safe static initialization and the like, so it just calls
-  functions that are supplied by the system. Stuff like __cxa_guard_acquire
-  and __cxa_pure_virtual live here.
-
-linker/ --- /system/bin/linker and /system/bin/linker64
-  The dynamic linker. When you run a dynamically-linked executable, its ELF
-  file has a DT_INTERP entry that says "use the following program to start me".
-  On Android, that's either linker or linker64 (depending on whether it's a
-  32-bit or 64-bit executable). It's responsible for loading the ELF executable
-  into memory and resolving references to symbols (so that when your code tries
-  to jump to fopen(3), say, it lands in the right place).
-
-tests/ --- unit tests
-  The tests/ directory contains unit tests. Roughly arranged as one file per
-  publicly-exported header file.
-benchmarks/ --- benchmarks
-  The benchmarks/ directory contains benchmarks.
-
-
-What's in libc/?
-----------------
-
-libc/
-  arch-arm/
-  arch-arm64/
-  arch-common/
-  arch-mips/
-  arch-mips64/
-  arch-x86/
-  arch-x86_64/
-    # Each architecture has its own subdirectory for stuff that isn't shared
-    # because it's architecture-specific. There will be a .mk file in here that
-    # drags in all the architecture-specific files.
-    bionic/
-      # Every architecture needs a handful of machine-specific assembler files.
-      # They live here.
-    include/
-      machine/
-        # The majority of header files are actually in libc/include/, but many
-        # of them pull in a <machine/something.h> for things like limits,
-        # endianness, and how floating point numbers are represented. Those
-        # headers live here.
-    string/
-      # Most architectures have a handful of optional assembler files
-      # implementing optimized versions of various routines. The <string.h>
-      # functions are particular favorites.
-    syscalls/
-      # The syscalls directories contain script-generated assembler files.
-      # See 'Adding system calls' later.
-
-  include/
-    # The public header files on everyone's include path. These are a mixture of
-    # files written by us and files taken from BSD.
-
-  kernel/
-    # The kernel uapi header files. These are scrubbed copies of the originals
-    # in external/kernel-headers/. These files must not be edited directly. The
-    # generate_uapi_headers.sh script should be used to go from a kernel tree to
-    # external/kernel-headers/ --- this takes care of the architecture-specific
-    # details. The update_all.py script should be used to regenerate bionic's
-    # scrubbed headers from external/kernel-headers/.
-
-  private/
-    # These are private header files meant for use within bionic itself.
-
-  dns/
-    # Contains the DNS resolver (originates from NetBSD code).
-
-  upstream-dlmalloc/
-  upstream-freebsd/
-  upstream-netbsd/
-  upstream-openbsd/
-    # These directories contain unmolested upstream source. Any time we can
-    # just use a BSD implementation of something unmodified, we should.
-    # The structure under these directories mimics the upstream tree,
-    # but there's also...
-    android/
-      include/
-        # This is where we keep the hacks necessary to build BSD source
-        # in our world. The *-compat.h files are automatically included
-        # using -include, but we also provide equivalents for missing
-        # header/source files needed by the BSD implementation.
-
-  bionic/
-    # This is the biggest mess. The C++ files are files we own, typically
-    # because the Linux kernel interface is sufficiently different that we
-    # can't use any of the BSD implementations. The C files are usually
-    # legacy mess that needs to be sorted out, either by replacing it with
-    # current upstream source in one of the upstream directories or by
-    # switching the file to C++ and cleaning it up.
-
-  stdio/
-    # These are legacy files of dubious provenance. We're working to clean
-    # this mess up, and this directory should disappear.
-
-  tools/
-    # Various tools used to maintain bionic.
-
-  tzcode/
-    # A modified superset of the IANA tzcode. Most of the modifications relate
-    # to Android's use of a single file (with corresponding index) to contain
-    # time zone data.
-  zoneinfo/
-    # Android-format time zone data.
-    # See 'Updating tzdata' later.
-
-
-Adding system calls
--------------------
-
-Adding a system call usually involves:
-
-  1. Add entries to SYSCALLS.TXT.
-     See SYSCALLS.TXT itself for documentation on the format.
-  2. Run the gensyscalls.py script.
-  3. Add constants (and perhaps types) to the appropriate header file.
-     Note that you should check to see whether the constants are already in
-     kernel uapi header files, in which case you just need to make sure that
-     the appropriate POSIX header file in libc/include/ includes the
-     relevant file or files.
-  4. Add function declarations to the appropriate header file.
-  5. Add at least basic tests. Even a test that deliberately supplies
-     an invalid argument helps check that we're generating the right symbol
-     and have the right declaration in the header file. (And strace(1) can
-     confirm that the correct system call is being made.)
-
-
-Updating kernel header files
-----------------------------
-
-As mentioned above, this is currently a two-step process:
-
-  1. Use generate_uapi_headers.sh to go from a Linux source tree to appropriate
-     contents for external/kernel-headers/.
-  2. Run update_all.py to scrub those headers and import them into bionic.
-
-
-Updating tzdata
----------------
-
-This is fully automated:
-
-  1. Run update-tzdata.py.
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..79bb72a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,273 @@
+Working on bionic
+=================
+
+What are the big pieces of bionic?
+----------------------------------
+
+#### libc/ --- libc.so, libc.a
+
+The C library. Stuff like `fopen(3)` and `kill(2)`.
+
+#### libm/ --- libm.so, libm.a
+
+The math library. Traditionally Unix systems kept stuff like `sin(3)` and
+`cos(3)` in a separate library to save space in the days before shared
+libraries.
+
+#### libdl/ --- libdl.so
+
+The dynamic linker interface library. This is actually just a bunch of stubs
+that the dynamic linker replaces with pointers to its own implementation at
+runtime. This is where stuff like `dlopen(3)` lives.
+
+#### libstdc++/ --- libstdc++.so
+
+The C++ ABI support functions. The C++ compiler doesn't know how to implement
+thread-safe static initialization and the like, so it just calls functions that
+are supplied by the system. Stuff like `__cxa_guard_acquire` and
+`__cxa_pure_virtual` live here.
+
+#### linker/ --- /system/bin/linker and /system/bin/linker64
+
+The dynamic linker. When you run a dynamically-linked executable, its ELF file
+has a `DT_INTERP` entry that says "use the following program to start me".  On
+Android, that's either `linker` or `linker64` (depending on whether it's a
+32-bit or 64-bit executable). It's responsible for loading the ELF executable
+into memory and resolving references to symbols (so that when your code tries to
+jump to `fopen(3)`, say, it lands in the right place).
+
+#### tests/ --- unit tests
+
+The `tests/` directory contains unit tests. Roughly arranged as one file per
+publicly-exported header file.
+
+#### benchmarks/ --- benchmarks
+
+The `benchmarks/` directory contains benchmarks.
+
+
+What's in libc/?
+----------------
+
+<pre>
+libc/
+  arch-arm/
+  arch-arm64/
+  arch-common/
+  arch-mips/
+  arch-mips64/
+  arch-x86/
+  arch-x86_64/
+    # Each architecture has its own subdirectory for stuff that isn't shared
+    # because it's architecture-specific. There will be a .mk file in here that
+    # drags in all the architecture-specific files.
+    bionic/
+      # Every architecture needs a handful of machine-specific assembler files.
+      # They live here.
+    include/
+      machine/
+        # The majority of header files are actually in libc/include/, but many
+        # of them pull in a <machine/something.h> for things like limits,
+        # endianness, and how floating point numbers are represented. Those
+        # headers live here.
+    string/
+      # Most architectures have a handful of optional assembler files
+      # implementing optimized versions of various routines. The <string.h>
+      # functions are particular favorites.
+    syscalls/
+      # The syscalls directories contain script-generated assembler files.
+      # See 'Adding system calls' later.
+
+  include/
+    # The public header files on everyone's include path. These are a mixture of
+    # files written by us and files taken from BSD.
+
+  kernel/
+    # The kernel uapi header files. These are scrubbed copies of the originals
+    # in external/kernel-headers/. These files must not be edited directly. The
+    # generate_uapi_headers.sh script should be used to go from a kernel tree to
+    # external/kernel-headers/ --- this takes care of the architecture-specific
+    # details. The update_all.py script should be used to regenerate bionic's
+    # scrubbed headers from external/kernel-headers/.
+
+  private/
+    # These are private header files meant for use within bionic itself.
+
+  dns/
+    # Contains the DNS resolver (originates from NetBSD code).
+
+  upstream-dlmalloc/
+  upstream-freebsd/
+  upstream-netbsd/
+  upstream-openbsd/
+    # These directories contain unmolested upstream source. Any time we can
+    # just use a BSD implementation of something unmodified, we should.
+    # The structure under these directories mimics the upstream tree,
+    # but there's also...
+    android/
+      include/
+        # This is where we keep the hacks necessary to build BSD source
+        # in our world. The *-compat.h files are automatically included
+        # using -include, but we also provide equivalents for missing
+        # header/source files needed by the BSD implementation.
+
+  bionic/
+    # This is the biggest mess. The C++ files are files we own, typically
+    # because the Linux kernel interface is sufficiently different that we
+    # can't use any of the BSD implementations. The C files are usually
+    # legacy mess that needs to be sorted out, either by replacing it with
+    # current upstream source in one of the upstream directories or by
+    # switching the file to C++ and cleaning it up.
+
+  stdio/
+    # These are legacy files of dubious provenance. We're working to clean
+    # this mess up, and this directory should disappear.
+
+  tools/
+    # Various tools used to maintain bionic.
+
+  tzcode/
+    # A modified superset of the IANA tzcode. Most of the modifications relate
+    # to Android's use of a single file (with corresponding index) to contain
+    # time zone data.
+  zoneinfo/
+    # Android-format time zone data.
+    # See 'Updating tzdata' later.
+</pre>
+
+
+Adding system calls
+-------------------
+
+Adding a system call usually involves:
+
+  1. Add entries to SYSCALLS.TXT.
+     See SYSCALLS.TXT itself for documentation on the format.
+  2. Run the gensyscalls.py script.
+  3. Add constants (and perhaps types) to the appropriate header file.
+     Note that you should check to see whether the constants are already in
+     kernel uapi header files, in which case you just need to make sure that
+     the appropriate POSIX header file in libc/include/ includes the
+     relevant file or files.
+  4. Add function declarations to the appropriate header file.
+  5. Add at least basic tests. Even a test that deliberately supplies
+     an invalid argument helps check that we're generating the right symbol
+     and have the right declaration in the header file. (And strace(1) can
+     confirm that the correct system call is being made.)
+
+
+Updating kernel header files
+----------------------------
+
+As mentioned above, this is currently a two-step process:
+
+  1. Use generate_uapi_headers.sh to go from a Linux source tree to appropriate
+     contents for external/kernel-headers/.
+  2. Run update_all.py to scrub those headers and import them into bionic.
+
+
+Updating tzdata
+---------------
+
+This is fully automated:
+
+  1. Run update-tzdata.py.
+
+
+Verifying changes
+-----------------
+
+If you make a change that is likely to have a wide effect on the tree (such as a
+libc header change), you should run `make checkbuild`. A regular `make` will
+_not_ build the entire tree; just the minimum number of projects that are
+required for the device. Tests, additional developer tools, and various other
+modules will not be built. Note that `make checkbuild` will not be complete
+either, as `make tests` covers a few additional modules, but generally speaking
+`make checkbuild` is enough.
+
+
+Running the tests
+-----------------
+
+The tests are all built from the tests/ directory.
+
+### Device tests
+
+    $ mma
+    $ adb sync
+    $ adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32
+    $ adb shell \
+        /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static32
+    # Only for 64-bit targets
+    $ adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64
+    $ adb shell \
+        /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static64
+
+### Host tests
+
+The host tests require that you have `lunch`ed either an x86 or x86_64 target.
+
+    $ mma
+    $ mm bionic-unit-tests-run-on-host32
+    $ mm bionic-unit-tests-run-on-host64  # For 64-bit *targets* only.
+
+### Against glibc
+
+As a way to check that our tests do in fact test the correct behavior (and not
+just the behavior we think is correct), it is possible to run the tests against
+the host's glibc. The executables are already in your path.
+
+    $ mma
+    $ bionic-unit-tests-glibc32
+    $ bionic-unit-tests-glibc64
+
+
+Gathering test coverage
+-----------------------
+
+For either host or target coverage, you must first:
+
+ * `$ export NATIVE_COVERAGE=true`
+     * Note that the build system is ignorant to this flag being toggled, i.e. if
+       you change this flag, you will have to manually rebuild bionic.
+ * Set `bionic_coverage=true` in `libc/Android.mk` and `libm/Android.mk`.
+
+### Coverage from device tests
+
+    $ mma
+    $ adb sync
+    $ adb shell \
+        GCOV_PREFIX=/data/local/tmp/gcov \
+        GCOV_PREFIX_STRIP=`echo $ANDROID_BUILD_TOP | grep -o / | wc -l` \
+        /data/nativetest/bionic-unit-tests/bionic-unit-tests32
+    $ acov
+
+`acov` will pull all coverage information from the device, push it to the right
+directories, run `lcov`, and open the coverage report in your browser.
+
+### Coverage from host tests
+
+First, build and run the host tests as usual (see above).
+
+    $ croot
+    $ lcov -c -d $ANDROID_PRODUCT_OUT -o coverage.info
+    $ genhtml -o covreport coverage.info # or lcov --list coverage.info
+
+The coverage report is now available at `covreport/index.html`.
+
+
+LP32 ABI bugs
+-------------
+
+This probably belongs in the NDK documentation rather than here, but these
+are the known ABI bugs in LP32:
+
+ * `time_t` is 32-bit. <http://b/5819737>
+
+ * `off_t` is 32-bit. There is `off64_t`, but no `_FILE_OFFSET_BITS` support.
+   Many of the `off64_t` functions are missing in older releases, and
+   stdio uses 32-bit offsets, so there's no way to fully implement
+   `_FILE_OFFSET_BITS`.
+
+ * `sigset_t` is too small on ARM and x86 (but correct on MIPS), so support
+   for real-time signals is broken. <http://b/5828899>
diff --git a/benchmarks/Android.mk b/benchmarks/Android.mk
index 4d7ad96..e1580fe 100644
--- a/benchmarks/Android.mk
+++ b/benchmarks/Android.mk
@@ -14,23 +14,56 @@
 # limitations under the License.
 #
 
-ifneq ($(BUILD_TINY_ANDROID), true)
-
 LOCAL_PATH := $(call my-dir)
 
 # -----------------------------------------------------------------------------
+# Benchmarks library, usable by projects outside this directory.
+# -----------------------------------------------------------------------------
+
+benchmark_cflags := \
+    -O2 \
+    -fno-builtin \
+    -Wall \
+    -Wextra \
+    -Werror \
+    -Wunused \
+
+benchmark_cppflags := \
+    -std=gnu++11 \
+
+benchmarklib_src_files := \
+    Benchmark.cpp \
+    utils.cpp \
+    main.cpp \
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libbenchmark
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
+LOCAL_SRC_FILES := $(benchmarklib_src_files)
+LOCAL_C_INCLUDES := $(benchmark_c_includes)
+LOCAL_STATIC_LIBRARIES := libbase
+include $(BUILD_STATIC_LIBRARY)
+
+# Only supported on linux systems.
+ifeq ($(HOST_OS),linux)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libbenchmark
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
+LOCAL_SRC_FILES := $(benchmarklib_src_files)
+LOCAL_C_INCLUDES := $(benchmark_c_includes)
+LOCAL_MULTILIB := both
+LOCAL_STATIC_LIBRARIES := libbase
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+endif
+
+# -----------------------------------------------------------------------------
 # Benchmarks.
 # -----------------------------------------------------------------------------
-
-benchmark_c_flags = \
-    -O2 \
-    -Wall -Wextra -Wunused \
-    -Werror \
-    -fno-builtin \
-    -std=gnu++11 \
-
-benchmark_src_files = \
-    benchmark_main.cpp \
+benchmark_src_files := \
     math_benchmark.cpp \
     property_benchmark.cpp \
     pthread_benchmark.cpp \
@@ -41,40 +74,58 @@
     unistd_benchmark.cpp \
 
 # Build benchmarks for the device (with bionic's .so). Run with:
-#   adb shell bionic-benchmarks
+#   adb shell bionic-benchmarks32
+#   adb shell bionic-benchmarks64
 include $(CLEAR_VARS)
 LOCAL_MODULE := bionic-benchmarks
 LOCAL_MODULE_STEM_32 := bionic-benchmarks32
 LOCAL_MODULE_STEM_64 := bionic-benchmarks64
 LOCAL_MULTILIB := both
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-LOCAL_CFLAGS += $(benchmark_c_flags)
-LOCAL_C_INCLUDES += external/stlport/stlport bionic/ bionic/libstdc++/include
-LOCAL_SHARED_LIBRARIES += libstlport
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
 LOCAL_SRC_FILES := $(benchmark_src_files)
+LOCAL_STATIC_LIBRARIES := libbenchmark libbase
 include $(BUILD_EXECUTABLE)
 
-ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
-ifeq ($(TARGET_ARCH),x86)
-LINKER = linker
-NATIVE_SUFFIX=32
-else
-LINKER = linker64
-NATIVE_SUFFIX=64
+# We don't build a static benchmark executable because it's not usually
+# useful. If you're trying to run the current benchmarks on an older
+# release, it's (so far at least) always because you want to measure the
+# performance of the old release's libc, and a static benchmark isn't
+# going to let you do that.
+
+# Only supported on linux systems.
+ifeq ($(HOST_OS),linux)
+
+# Build benchmarks for the host (against glibc!). Run with:
+include $(CLEAR_VARS)
+LOCAL_MODULE := bionic-benchmarks-glibc
+LOCAL_MODULE_STEM_32 := bionic-benchmarks-glibc32
+LOCAL_MODULE_STEM_64 := bionic-benchmarks-glibc64
+LOCAL_MULTILIB := both
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
+LOCAL_LDFLAGS := -lrt
+LOCAL_SRC_FILES := $(benchmark_src_files)
+LOCAL_STATIC_LIBRARIES := libbenchmark libbase
+include $(BUILD_HOST_EXECUTABLE)
+
 endif
 
-bionic-benchmarks-run-on-host: bionic-benchmarks $(TARGET_OUT_EXECUTABLES)/$(LINKER) $(TARGET_OUT_EXECUTABLES)/sh
-	if [ ! -d /system -o ! -d /system/bin ]; then \
-	  echo "Attempting to create /system/bin"; \
-	  sudo mkdir -p -m 0777 /system/bin; \
-	fi
-	mkdir -p $(TARGET_OUT_DATA)/local/tmp
-	cp $(TARGET_OUT_EXECUTABLES)/$(LINKER) /system/bin
-	cp $(TARGET_OUT_EXECUTABLES)/sh /system/bin
+ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
+include $(LOCAL_PATH)/../build/run-on-host.mk
+
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
+bionic-benchmarks-run-on-host32: bionic-benchmarks bionic-prepare-run-on-host
 	ANDROID_DATA=$(TARGET_OUT_DATA) \
 	ANDROID_ROOT=$(TARGET_OUT) \
-	LD_LIBRARY_PATH=$(TARGET_OUT_SHARED_LIBRARIES) \
-		$(TARGET_OUT_EXECUTABLES)/bionic-benchmarks$(NATIVE_SUFFIX) $(BIONIC_BENCHMARKS_FLAGS)
-endif # linux-x86
+		$(TARGET_OUT_EXECUTABLES)/bionic-benchmarks32 $(BIONIC_BENCHMARKS_FLAGS)
+endif
 
-endif # !BUILD_TINY_ANDROID
+ifeq ($(TARGET_IS_64_BIT),true)
+bionic-benchmarks-run-on-host64: bionic-benchmarks bionic-prepare-run-on-host
+	ANDROID_DATA=$(TARGET_OUT_DATA) \
+	ANDROID_ROOT=$(TARGET_OUT) \
+		$(TARGET_OUT_EXECUTABLES)/bionic-benchmarks64 $(BIONIC_BENCHMARKS_FLAGS)
+endif
+
+endif
diff --git a/benchmarks/Benchmark.cpp b/benchmarks/Benchmark.cpp
new file mode 100644
index 0000000..ea6000fe
--- /dev/null
+++ b/benchmarks/Benchmark.cpp
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include <inttypes.h>
+#include <regex.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include <string>
+#include <vector>
+
+#include <base/stringprintf.h>
+
+#include <benchmark/Benchmark.h>
+
+#include "utils.h"
+
+namespace testing {
+
+static uint64_t NanoTime() {
+  struct timespec t;
+  t.tv_sec = t.tv_nsec = 0;
+  clock_gettime(CLOCK_MONOTONIC, &t);
+  return static_cast<uint64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec;
+}
+
+bool Benchmark::header_printed_;
+
+std::vector<Benchmark*>& Benchmark::List() {
+  static std::vector<Benchmark*> list;
+  return list;
+}
+
+int Benchmark::MaxNameColumnWidth() {
+  size_t max = 20;
+  for (auto& benchmark : List()) {
+    max = std::max(max, benchmark->NameColumnWidth());
+  }
+  return static_cast<int>(max);
+}
+
+size_t Benchmark::RunAll(std::vector<regex_t*>& regs) {
+  size_t benchmarks_run = 0;
+  header_printed_ = false;
+  for (auto& benchmark : List()) {
+    benchmarks_run += benchmark->RunAllArgs(regs);
+  }
+  return benchmarks_run;
+}
+
+void Benchmark::PrintHeader() {
+  if (!header_printed_) {
+    printf("%-*s %10s %10s\n", MaxNameColumnWidth(), "", "iterations", "ns/op");
+    header_printed_ = true;
+  }
+}
+
+template <typename T>
+bool BenchmarkT<T>::ShouldRun(std::vector<regex_t*>& regs, T arg) {
+  if (regs.empty()) {
+    return true;
+  }
+
+  for (const auto& re : regs) {
+    if (regexec(re, GetNameStr(arg).c_str(), 0, NULL, 0) != REG_NOMATCH) {
+      return true;
+    }
+  }
+  return false;
+}
+
+void Benchmark::StopBenchmarkTiming() {
+  if (start_time_ns_ != 0) {
+    total_time_ns_ += NanoTime() - start_time_ns_;
+  }
+  start_time_ns_ = 0;
+}
+
+void Benchmark::StartBenchmarkTiming() {
+  if (start_time_ns_ == 0) {
+    start_time_ns_ = NanoTime();
+  }
+}
+
+std::string BenchmarkWithoutArg::GetNameStr(void*) {
+  return Name();
+}
+
+template <>
+std::string BenchmarkWithArg<int>::GetNameStr(int arg) {
+  return Name() + "/" + PrettyInt(arg, 2);
+}
+
+template <>
+std::string BenchmarkWithArg<double>::GetNameStr(double arg) {
+  return Name() + "/" + android::base::StringPrintf("%0.6f", arg);
+}
+
+template<typename T>
+void BenchmarkT<T>::RunWithArg(T arg) {
+  int new_iterations = 1;
+  int iterations;
+  while (new_iterations < 1e8) {
+    bytes_processed_ = 0;
+    total_time_ns_ = 0;
+    start_time_ns_ = 0;
+
+    iterations = new_iterations;
+    RunIterations(iterations, arg);
+    if (total_time_ns_ >= 1e9) {
+      break;
+    }
+
+    if (total_time_ns_/iterations == 0) {
+      new_iterations = 1e9;
+    } else {
+      new_iterations = 1e9/ (total_time_ns_/iterations);
+    }
+    new_iterations = std::max(iterations + 1,
+                          std::min(new_iterations + new_iterations/2, 100*iterations));
+
+    new_iterations = Round(new_iterations);
+  }
+
+  printf("%-*s %10s %10" PRId64, MaxNameColumnWidth(), GetNameStr(arg).c_str(),
+         PrettyInt(iterations, 10).c_str(), total_time_ns_/iterations);
+
+  if (total_time_ns_ > 0 && bytes_processed_ > 0) {
+    double gib_processed = static_cast<double>(bytes_processed_)/1e9;
+    double seconds = static_cast<double>(total_time_ns_)/1e9;
+    printf(" %8.3f GiB/s", gib_processed/seconds);
+  }
+  printf("\n");
+  fflush(stdout);
+}
+
+template class BenchmarkT<int>;
+template class BenchmarkT<double>;
+template class BenchmarkT<void*>;
+
+template class BenchmarkWithArg<int>;
+template class BenchmarkWithArg<double>;
+
+}  // namespace testing
diff --git a/benchmarks/benchmark.h b/benchmarks/benchmark.h
deleted file mode 100644
index d7af50f..0000000
--- a/benchmarks/benchmark.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#include <stdint.h>
-
-#include <vector>
-
-namespace testing {
-
-class Benchmark {
- public:
-  Benchmark(const char* name, void (*fn)(int)) {
-    Register(name, fn, NULL);
-  }
-
-  Benchmark(const char* name, void (*fn_range)(int, int)) {
-    Register(name, NULL, fn_range);
-  }
-
-  Benchmark* Arg(int x);
-
-  const char* Name();
-
-  bool ShouldRun(int argc, char* argv[]);
-  void Run();
-
- private:
-  const char* name_;
-
-  void (*fn_)(int);
-  void (*fn_range_)(int, int);
-
-  std::vector<int> args_;
-
-  void Register(const char* name, void (*fn)(int), void (*fn_range)(int, int));
-  void RunRepeatedlyWithArg(int iterations, int arg);
-  void RunWithArg(int arg);
-};
-
-}  // namespace testing
-
-void SetBenchmarkBytesProcessed(int64_t);
-void StopBenchmarkTiming();
-void StartBenchmarkTiming();
-
-#define BENCHMARK(f) \
-    static ::testing::Benchmark* _benchmark_##f __attribute__((unused)) = \
-        (new ::testing::Benchmark(#f, f))
diff --git a/benchmarks/benchmark/Benchmark.h b/benchmarks/benchmark/Benchmark.h
new file mode 100644
index 0000000..ae5c1a2
--- /dev/null
+++ b/benchmarks/benchmark/Benchmark.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#ifndef BENCHMARKS_BENCHMARK_H_
+#define BENCHMARKS_BENCHMARK_H_
+
+#include <regex.h>
+#include <stdint.h>
+
+#include <string>
+#include <vector>
+
+namespace testing {
+
+class Benchmark {
+public:
+  Benchmark() {
+    List().push_back(this);
+  }
+  virtual ~Benchmark() {}
+
+  virtual std::string Name() = 0;
+
+  virtual size_t RunAllArgs(std::vector<regex_t*>&) = 0;
+
+  void SetBenchmarkBytesProcessed(uint64_t bytes) { bytes_processed_ += bytes; }
+  void StopBenchmarkTiming();
+  void StartBenchmarkTiming();
+
+  // Run all of the benchmarks that have registered.
+  static size_t RunAll(std::vector<regex_t*>&);
+
+  static std::vector<Benchmark*>& List();
+
+  static int MaxNameColumnWidth();
+
+protected:
+  virtual size_t NameColumnWidth() = 0;
+
+  uint64_t bytes_processed_;
+  uint64_t total_time_ns_;
+  uint64_t start_time_ns_;
+
+  static bool header_printed_;
+
+  static void PrintHeader();
+};
+
+template <typename T>
+class BenchmarkT : public Benchmark {
+public:
+  BenchmarkT() {}
+  virtual ~BenchmarkT() {}
+
+protected:
+  bool ShouldRun(std::vector<regex_t*>&, T arg);
+  void RunWithArg(T arg);
+  virtual void RunIterations(int, T) = 0;
+  virtual std::string GetNameStr(T) = 0;
+};
+
+class BenchmarkWithoutArg : public BenchmarkT<void*> {
+public:
+  BenchmarkWithoutArg() {}
+  virtual ~BenchmarkWithoutArg() {}
+
+protected:
+  virtual size_t RunAllArgs(std::vector<regex_t*>& regs) override {
+    size_t benchmarks_run = 0;
+    if (BenchmarkT<void*>::ShouldRun(regs, nullptr)) {
+      PrintHeader();
+      RunWithArg(nullptr);
+      benchmarks_run++;
+    }
+    return benchmarks_run;
+  }
+
+  virtual void RunIterations(int iters, void*) override {
+    Run(iters);
+  }
+
+  virtual void Run(int) = 0;
+
+  virtual size_t NameColumnWidth() override {
+    return Name().size();
+  }
+
+  virtual std::string GetNameStr(void *) override;
+};
+
+template<typename T>
+class BenchmarkWithArg : public BenchmarkT<T> {
+public:
+  BenchmarkWithArg() {}
+  virtual ~BenchmarkWithArg() {}
+
+  BenchmarkWithArg* Arg(T arg) {
+    args_.push_back(arg);
+    return this;
+  }
+
+protected:
+  virtual size_t NameColumnWidth() override {
+    size_t max = 0;
+    for (const auto& arg : args_) {
+      max = std::max(max, GetNameStr(arg).size());
+    }
+    return max;
+  }
+
+  std::string GetNameStr(T arg) override;
+
+  virtual size_t RunAllArgs(std::vector<regex_t*>& regs) override {
+    size_t benchmarks_run = 0;
+    for (T& arg : args_) {
+      if (BenchmarkT<T>::ShouldRun(regs, arg)) {
+        Benchmark::PrintHeader();
+        BenchmarkT<T>::RunWithArg(arg);
+        benchmarks_run++;
+      }
+    }
+    return benchmarks_run;
+  }
+
+  virtual void RunIterations(int iters, T arg) override {
+    Run(iters, arg);
+  }
+
+  virtual void Run(int iters, T arg) = 0;
+
+private:
+  std::vector<T> args_;
+};
+
+}  // namespace testing
+
+#define BENCHMARK_START(f, super_class) \
+  class f : public super_class { \
+  public: \
+    f() {} \
+    virtual ~f() {} \
+    virtual std::string Name() override { return #f; } \
+
+#define BENCHMARK_NO_ARG(f) \
+  BENCHMARK_START(f, ::testing::BenchmarkWithoutArg) \
+    virtual void Run(int) override; \
+  }; \
+  static ::testing::Benchmark* __benchmark_##f = new f()
+
+#define BENCHMARK_WITH_ARG(f, arg_type) \
+  BENCHMARK_START(f, ::testing::BenchmarkWithArg<arg_type>) \
+    virtual void Run(int, arg_type) override; \
+  }; \
+  static ::testing::BenchmarkWithArg<arg_type>* __benchmark_##f = (new f())
+
+#endif  // BENCHMARKS_BENCHMARK_H_
diff --git a/benchmarks/benchmark_main.cpp b/benchmarks/benchmark_main.cpp
deleted file mode 100644
index d60670b..0000000
--- a/benchmarks/benchmark_main.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#include "benchmark.h"
-
-#include <regex.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <string>
-#include <map>
-
-#include <inttypes.h>
-
-static int64_t g_bytes_processed;
-static int64_t g_benchmark_total_time_ns;
-static int64_t g_benchmark_start_time_ns;
-
-typedef std::map<std::string, ::testing::Benchmark*> BenchmarkMap;
-typedef BenchmarkMap::iterator BenchmarkMapIt;
-static BenchmarkMap g_benchmarks;
-static int g_name_column_width = 20;
-
-static int Round(int n) {
-  int base = 1;
-  while (base*10 < n) {
-    base *= 10;
-  }
-  if (n < 2*base) {
-    return 2*base;
-  }
-  if (n < 5*base) {
-    return 5*base;
-  }
-  return 10*base;
-}
-
-static int64_t NanoTime() {
-  struct timespec t;
-  t.tv_sec = t.tv_nsec = 0;
-  clock_gettime(CLOCK_MONOTONIC, &t);
-  return static_cast<int64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec;
-}
-
-namespace testing {
-
-Benchmark* Benchmark::Arg(int arg) {
-  args_.push_back(arg);
-  return this;
-}
-
-const char* Benchmark::Name() {
-  return name_;
-}
-
-bool Benchmark::ShouldRun(int argc, char* argv[]) {
-  if (argc == 1) {
-    return true;  // With no arguments, we run all benchmarks.
-  }
-  // Otherwise, we interpret each argument as a regular expression and
-  // see if any of our benchmarks match.
-  for (int i = 1; i < argc; i++) {
-    regex_t re;
-    if (regcomp(&re, argv[i], 0) != 0) {
-      fprintf(stderr, "couldn't compile \"%s\" as a regular expression!\n", argv[i]);
-      exit(EXIT_FAILURE);
-    }
-    int match = regexec(&re, name_, 0, NULL, 0);
-    regfree(&re);
-    if (match != REG_NOMATCH) {
-      return true;
-    }
-  }
-  return false;
-}
-
-void Benchmark::Register(const char* name, void (*fn)(int), void (*fn_range)(int, int)) {
-  name_ = name;
-  fn_ = fn;
-  fn_range_ = fn_range;
-
-  if (fn_ == NULL && fn_range_ == NULL) {
-    fprintf(stderr, "%s: missing function\n", name_);
-    exit(EXIT_FAILURE);
-  }
-
-  g_benchmarks.insert(std::make_pair(name, this));
-}
-
-void Benchmark::Run() {
-  if (fn_ != NULL) {
-    RunWithArg(0);
-  } else {
-    if (args_.empty()) {
-      fprintf(stderr, "%s: no args!\n", name_);
-      exit(EXIT_FAILURE);
-    }
-    for (size_t i = 0; i < args_.size(); ++i) {
-      RunWithArg(args_[i]);
-    }
-  }
-}
-
-void Benchmark::RunRepeatedlyWithArg(int iterations, int arg) {
-  g_bytes_processed = 0;
-  g_benchmark_total_time_ns = 0;
-  g_benchmark_start_time_ns = NanoTime();
-  if (fn_ != NULL) {
-    fn_(iterations);
-  } else {
-    fn_range_(iterations, arg);
-  }
-  if (g_benchmark_start_time_ns != 0) {
-    g_benchmark_total_time_ns += NanoTime() - g_benchmark_start_time_ns;
-  }
-}
-
-void Benchmark::RunWithArg(int arg) {
-  // run once in case it's expensive
-  int iterations = 1;
-  RunRepeatedlyWithArg(iterations, arg);
-  while (g_benchmark_total_time_ns < 1e9 && iterations < 1e9) {
-    int last = iterations;
-    if (g_benchmark_total_time_ns/iterations == 0) {
-      iterations = 1e9;
-    } else {
-      iterations = 1e9 / (g_benchmark_total_time_ns/iterations);
-    }
-    iterations = std::max(last + 1, std::min(iterations + iterations/2, 100*last));
-    iterations = Round(iterations);
-    RunRepeatedlyWithArg(iterations, arg);
-  }
-
-  char throughput[100];
-  throughput[0] = '\0';
-  if (g_benchmark_total_time_ns > 0 && g_bytes_processed > 0) {
-    double mib_processed = static_cast<double>(g_bytes_processed)/1e6;
-    double seconds = static_cast<double>(g_benchmark_total_time_ns)/1e9;
-    snprintf(throughput, sizeof(throughput), " %8.2f MiB/s", mib_processed/seconds);
-  }
-
-  char full_name[100];
-  if (fn_range_ != NULL) {
-    if (arg >= (1<<20)) {
-      snprintf(full_name, sizeof(full_name), "%s/%dM", name_, arg/(1<<20));
-    } else if (arg >= (1<<10)) {
-      snprintf(full_name, sizeof(full_name), "%s/%dK", name_, arg/(1<<10));
-    } else {
-      snprintf(full_name, sizeof(full_name), "%s/%d", name_, arg);
-    }
-  } else {
-    snprintf(full_name, sizeof(full_name), "%s", name_);
-  }
-
-  printf("%-*s %10d %10" PRId64 "%s\n", g_name_column_width, full_name,
-         iterations, g_benchmark_total_time_ns/iterations, throughput);
-  fflush(stdout);
-}
-
-}  // namespace testing
-
-void SetBenchmarkBytesProcessed(int64_t x) {
-  g_bytes_processed = x;
-}
-
-void StopBenchmarkTiming() {
-  if (g_benchmark_start_time_ns != 0) {
-    g_benchmark_total_time_ns += NanoTime() - g_benchmark_start_time_ns;
-  }
-  g_benchmark_start_time_ns = 0;
-}
-
-void StartBenchmarkTiming() {
-  if (g_benchmark_start_time_ns == 0) {
-    g_benchmark_start_time_ns = NanoTime();
-  }
-}
-
-int main(int argc, char* argv[]) {
-  if (g_benchmarks.empty()) {
-    fprintf(stderr, "No benchmarks registered!\n");
-    exit(EXIT_FAILURE);
-  }
-
-  for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
-    int name_width = static_cast<int>(strlen(it->second->Name()));
-    g_name_column_width = std::max(g_name_column_width, name_width);
-  }
-
-  bool need_header = true;
-  for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
-    ::testing::Benchmark* b = it->second;
-    if (b->ShouldRun(argc, argv)) {
-      if (need_header) {
-        printf("%-*s %10s %10s\n", g_name_column_width, "", "iterations", "ns/op");
-        fflush(stdout);
-        need_header = false;
-      }
-      b->Run();
-    }
-  }
-
-  if (need_header) {
-    fprintf(stderr, "No matching benchmarks!\n");
-    fprintf(stderr, "Available benchmarks:\n");
-    for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
-      fprintf(stderr, "  %s\n", it->second->Name());
-    }
-    exit(EXIT_FAILURE);
-  }
-
-  return 0;
-}
diff --git a/benchmarks/main.cpp b/benchmarks/main.cpp
new file mode 100644
index 0000000..5bce479
--- /dev/null
+++ b/benchmarks/main.cpp
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+
+#include <regex.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <vector>
+
+#include <benchmark/Benchmark.h>
+
+int main(int argc, char* argv[]) {
+  if (::testing::Benchmark::List().empty()) {
+    fprintf(stderr, "No benchmarks registered!\n");
+    exit(EXIT_FAILURE);
+  }
+
+  std::vector<regex_t*> regs;
+  for (int i = 1; i < argc; i++) {
+    regex_t* re = new regex_t;
+    int errcode = regcomp(re, argv[i], 0);
+    if (errcode != 0) {
+      size_t errbuf_size = regerror(errcode, re, NULL, 0);
+      if (errbuf_size > 0) {
+        char* errbuf = new char[errbuf_size];
+        regerror(errcode, re, errbuf, errbuf_size);
+        fprintf(stderr, "Couldn't compile \"%s\" as a regular expression: %s\n",
+                argv[i], errbuf);
+      } else {
+        fprintf(stderr, "Unknown compile error for \"%s\" as a regular expression!\n", argv[i]);
+      }
+      exit(EXIT_FAILURE);
+    }
+    regs.push_back(re);
+  }
+
+  if (::testing::Benchmark::RunAll(regs) == 0) {
+    fprintf(stderr, "No matching benchmarks!\n");
+    fprintf(stderr, "Available benchmarks:\n");
+    for (const auto& benchmark : ::testing::Benchmark::List()) {
+      fprintf(stderr, "  %s\n", benchmark->Name().c_str());
+    }
+    exit(EXIT_FAILURE);
+  }
+
+  return 0;
+}
diff --git a/benchmarks/math_benchmark.cpp b/benchmarks/math_benchmark.cpp
index a9748cd..4de28d1 100644
--- a/benchmarks/math_benchmark.cpp
+++ b/benchmarks/math_benchmark.cpp
@@ -14,16 +14,20 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <fenv.h>
 #include <math.h>
 
-// Avoid optimization.
-double d;
-double v;
+#include <benchmark/Benchmark.h>
 
-static void BM_math_sqrt(int iters) {
+#define AT_COMMON_VALS \
+    Arg(1234.0)->Arg(nan(""))->Arg(HUGE_VAL)->Arg(0.0)
+
+// Avoid optimization.
+volatile double d;
+volatile double v;
+
+BENCHMARK_NO_ARG(BM_math_sqrt);
+void BM_math_sqrt::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 0.0;
@@ -34,9 +38,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sqrt);
 
-static void BM_math_log10(int iters) {
+BENCHMARK_NO_ARG(BM_math_log10);
+void BM_math_log10::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 0.0;
@@ -47,9 +51,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_log10);
 
-static void BM_math_logb(int iters) {
+BENCHMARK_NO_ARG(BM_math_logb);
+void BM_math_logb::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 0.0;
@@ -60,61 +64,22 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_logb);
 
-static void BM_math_isinf_NORMAL(int iters) {
+BENCHMARK_WITH_ARG(BM_math_isinf, double)->AT_COMMON_VALS;
+void BM_math_isinf::Run(int iters, double value) {
   StartBenchmarkTiming();
 
   d = 0.0;
-  v = 1234.0; // FP_NORMAL
+  v = value;
   for (int i = 0; i < iters; ++i) {
     d += (isinf)(v);
   }
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_isinf_NORMAL);
 
-static void BM_math_isinf_NAN(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = nan(""); // FP_NAN
-  for (int i = 0; i < iters; ++i) {
-    d += (isinf)(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_isinf_NAN);
-
-static void BM_math_isinf_INFINITE(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = HUGE_VAL; // FP_INFINITE
-  for (int i = 0; i < iters; ++i) {
-    d += (isinf)(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_isinf_INFINITE);
-
-static void BM_math_isinf_ZERO(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = 0.0; // FP_ZERO
-  for (int i = 0; i < iters; ++i) {
-    d += (isinf)(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_isinf_ZERO);
-
-static void BM_math_sin_fast(int iters) {
+BENCHMARK_NO_ARG(BM_math_sin_fast);
+void BM_math_sin_fast::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 1.0;
@@ -124,9 +89,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sin_fast);
 
-static void BM_math_sin_feupdateenv(int iters) {
+BENCHMARK_NO_ARG(BM_math_sin_feupdateenv);
+void BM_math_sin_feupdateenv::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 1.0;
@@ -140,9 +105,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sin_feupdateenv);
 
-static void BM_math_sin_fesetenv(int iters) {
+BENCHMARK_NO_ARG(BM_math_sin_fesetenv);
+void BM_math_sin_fesetenv::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 1.0;
@@ -156,56 +121,16 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sin_fesetenv);
 
-static void BM_math_fpclassify_NORMAL(int iters) {
+BENCHMARK_WITH_ARG(BM_math_fpclassify, double)->AT_COMMON_VALS;
+void BM_math_fpclassify::Run(int iters, double value) {
   StartBenchmarkTiming();
 
   d = 0.0;
-  v = 1234.0; // FP_NORMAL
+  v = value;
   for (int i = 0; i < iters; ++i) {
     d += fpclassify(v);
   }
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_fpclassify_NORMAL);
-
-static void BM_math_fpclassify_NAN(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = nan(""); // FP_NAN
-  for (int i = 0; i < iters; ++i) {
-    d += fpclassify(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_fpclassify_NAN);
-
-static void BM_math_fpclassify_INFINITE(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = HUGE_VAL; // FP_INFINITE
-  for (int i = 0; i < iters; ++i) {
-    d += fpclassify(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_fpclassify_INFINITE);
-
-static void BM_math_fpclassify_ZERO(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = 0.0; // FP_ZERO
-  for (int i = 0; i < iters; ++i) {
-    d += fpclassify(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_fpclassify_ZERO);
diff --git a/benchmarks/property_benchmark.cpp b/benchmarks/property_benchmark.cpp
index 0802b4c..944cd68 100644
--- a/benchmarks/property_benchmark.cpp
+++ b/benchmarks/property_benchmark.cpp
@@ -14,19 +14,21 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 
+#include <string>
+
+#if defined(__BIONIC__)
+
 #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
 #include <sys/_system_properties.h>
 
-#include <vector>
-#include <string>
+#include <benchmark/Benchmark.h>
 
-extern void *__system_property_area__;
+extern void* __system_property_area__;
 
 // Do not exceed 512, that is about the largest number of properties
 // that can be created with the current property area size.
@@ -34,200 +36,198 @@
     Arg(1)->Arg(4)->Arg(16)->Arg(64)->Arg(128)->Arg(256)->Arg(512)
 
 struct LocalPropertyTestState {
-    LocalPropertyTestState(int nprops) : nprops(nprops), valid(false) {
-        static const char prop_name_chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.";
+  LocalPropertyTestState(int nprops) : nprops(nprops), valid(false) {
+    static const char prop_name_chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.";
 
-        const char* android_data = getenv("ANDROID_DATA");
-        if (android_data == NULL) {
-          printf("ANDROID_DATA environment variable not set\n");
-          return;
-        }
-        char dir_template[PATH_MAX];
-        snprintf(dir_template, sizeof(dir_template), "%s/local/tmp/prop-XXXXXX", android_data);
-        char *dirname = mkdtemp(dir_template);
-        if (!dirname) {
-            printf("making temp file for test state failed (is %s/local/tmp writable?): %s\n",
-                   android_data, strerror(errno));
-            return;
-        }
-
-        old_pa = __system_property_area__;
-        __system_property_area__ = NULL;
-
-        pa_dirname = dirname;
-        pa_filename = pa_dirname + "/__properties__";
-
-        __system_property_set_filename(pa_filename.c_str());
-        __system_property_area_init();
-
-        names = new char* [nprops];
-        name_lens = new int[nprops];
-        values = new char* [nprops];
-        value_lens = new int[nprops];
-
-        srandom(nprops);
-
-        for (int i = 0; i < nprops; i++) {
-            // Make sure the name has at least 10 characters to make
-            // it very unlikely to generate the same random name.
-            name_lens[i] = (random() % (PROP_NAME_MAX - 10)) + 10;
-            names[i] = new char[PROP_NAME_MAX + 1];
-            size_t prop_name_len = sizeof(prop_name_chars) - 1;
-            for (int j = 0; j < name_lens[i]; j++) {
-                if (j == 0 || names[i][j-1] == '.' || j == name_lens[i] - 1) {
-                    // Certain values are not allowed:
-                    // - Don't start name with '.'
-                    // - Don't allow '.' to appear twice in a row
-                    // - Don't allow the name to end with '.'
-                    // This assumes that '.' is the last character in the
-                    // array so that decrementing the length by one removes
-                    // the value from the possible values.
-                    prop_name_len--;
-                }
-                names[i][j] = prop_name_chars[random() % prop_name_len];
-            }
-            names[i][name_lens[i]] = 0;
-
-            // Make sure the value contains at least 1 character.
-            value_lens[i] = (random() % (PROP_VALUE_MAX - 1)) + 1;
-            values[i] = new char[PROP_VALUE_MAX];
-            for (int j = 0; j < value_lens[i]; j++) {
-                values[i][j] = prop_name_chars[random() % (sizeof(prop_name_chars) - 1)];
-            }
-
-            if (__system_property_add(names[i], name_lens[i], values[i], value_lens[i]) < 0) {
-                printf("Failed to add a property, terminating...\n");
-                printf("%s = %.*s\n", names[i], value_lens[i], values[i]);
-                exit(1);
-            }
-        }
-
-        valid = true;
+    const char* android_data = getenv("ANDROID_DATA");
+    if (android_data == NULL) {
+      printf("ANDROID_DATA environment variable not set\n");
+      return;
+    }
+    char dir_template[PATH_MAX];
+    snprintf(dir_template, sizeof(dir_template), "%s/local/tmp/prop-XXXXXX", android_data);
+    char* dirname = mkdtemp(dir_template);
+    if (!dirname) {
+      printf("making temp file for test state failed (is %s/local/tmp writable?): %s\n",
+             android_data, strerror(errno));
+      return;
     }
 
-    ~LocalPropertyTestState() {
-        if (!valid)
-            return;
+    old_pa = __system_property_area__;
+    __system_property_area__ = NULL;
 
-        __system_property_area__ = old_pa;
+    pa_dirname = dirname;
+    pa_filename = pa_dirname + "/__properties__";
 
-        __system_property_set_filename(PROP_FILENAME);
-        unlink(pa_filename.c_str());
-        rmdir(pa_dirname.c_str());
+    __system_property_set_filename(pa_filename.c_str());
+    __system_property_area_init();
 
-        for (int i = 0; i < nprops; i++) {
-            delete names[i];
-            delete values[i];
+    names = new char* [nprops];
+    name_lens = new int[nprops];
+    values = new char* [nprops];
+    value_lens = new int[nprops];
+
+    srandom(nprops);
+
+    for (int i = 0; i < nprops; i++) {
+      // Make sure the name has at least 10 characters to make
+      // it very unlikely to generate the same random name.
+      name_lens[i] = (random() % (PROP_NAME_MAX - 10)) + 10;
+      names[i] = new char[PROP_NAME_MAX + 1];
+      size_t prop_name_len = sizeof(prop_name_chars) - 1;
+      for (int j = 0; j < name_lens[i]; j++) {
+        if (j == 0 || names[i][j-1] == '.' || j == name_lens[i] - 1) {
+          // Certain values are not allowed:
+          // - Don't start name with '.'
+          // - Don't allow '.' to appear twice in a row
+          // - Don't allow the name to end with '.'
+          // This assumes that '.' is the last character in the
+          // array so that decrementing the length by one removes
+          // the value from the possible values.
+          prop_name_len--;
         }
-        delete[] names;
-        delete[] name_lens;
-        delete[] values;
-        delete[] value_lens;
+        names[i][j] = prop_name_chars[random() % prop_name_len];
+      }
+      names[i][name_lens[i]] = 0;
+
+      // Make sure the value contains at least 1 character.
+      value_lens[i] = (random() % (PROP_VALUE_MAX - 1)) + 1;
+      values[i] = new char[PROP_VALUE_MAX];
+      for (int j = 0; j < value_lens[i]; j++) {
+        values[i][j] = prop_name_chars[random() % (sizeof(prop_name_chars) - 1)];
+      }
+
+      if (__system_property_add(names[i], name_lens[i], values[i], value_lens[i]) < 0) {
+        printf("Failed to add a property, terminating...\n");
+        printf("%s = %.*s\n", names[i], value_lens[i], values[i]);
+        exit(1);
+      }
     }
+
+    valid = true;
+  }
+
+  ~LocalPropertyTestState() {
+    if (!valid)
+      return;
+
+    __system_property_area__ = old_pa;
+
+    __system_property_set_filename(PROP_FILENAME);
+    unlink(pa_filename.c_str());
+    rmdir(pa_dirname.c_str());
+
+    for (int i = 0; i < nprops; i++) {
+      delete names[i];
+      delete values[i];
+    }
+    delete[] names;
+    delete[] name_lens;
+    delete[] values;
+    delete[] value_lens;
+  }
 public:
-    const int nprops;
-    char **names;
-    int *name_lens;
-    char **values;
-    int *value_lens;
-    bool valid;
+  const int nprops;
+  char** names;
+  int* name_lens;
+  char** values;
+  int* value_lens;
+  bool valid;
 
 private:
-    std::string pa_dirname;
-    std::string pa_filename;
-    void *old_pa;
+  std::string pa_dirname;
+  std::string pa_filename;
+  void* old_pa;
 };
 
-static void BM_property_get(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_get, int)->TEST_NUM_PROPS;
+void BM_property_get::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
-    char value[PROP_VALUE_MAX];
+  LocalPropertyTestState pa(nprops);
+  char value[PROP_VALUE_MAX];
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
+  srandom(iters * nprops);
 
-    StartBenchmarkTiming();
+  StartBenchmarkTiming();
 
-    for (int i = 0; i < iters; i++) {
-        __system_property_get(pa.names[random() % nprops], value);
-    }
-    StopBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_get(pa.names[random() % nprops], value);
+  }
+  StopBenchmarkTiming();
 }
-BENCHMARK(BM_property_get)->TEST_NUM_PROPS;
 
-static void BM_property_find(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_find, int)->TEST_NUM_PROPS;
+void BM_property_find::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
+  LocalPropertyTestState pa(nprops);
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
+  srandom(iters * nprops);
 
-    StartBenchmarkTiming();
+  StartBenchmarkTiming();
 
-    for (int i = 0; i < iters; i++) {
-        __system_property_find(pa.names[random() % nprops]);
-    }
-    StopBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_find(pa.names[random() % nprops]);
+  }
+  StopBenchmarkTiming();
 }
-BENCHMARK(BM_property_find)->TEST_NUM_PROPS;
 
-static void BM_property_read(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_read, int)->TEST_NUM_PROPS;
+void BM_property_read::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
+  LocalPropertyTestState pa(nprops);
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
-    const prop_info** pinfo = new const prop_info*[iters];
-    char propvalue[PROP_VALUE_MAX];
+  srandom(iters * nprops);
+  const prop_info** pinfo = new const prop_info*[iters];
+  char propvalue[PROP_VALUE_MAX];
 
-    for (int i = 0; i < iters; i++) {
-        pinfo[i] = __system_property_find(pa.names[random() % nprops]);
-    }
+  for (int i = 0; i < iters; i++) {
+    pinfo[i] = __system_property_find(pa.names[random() % nprops]);
+  }
 
-    StartBenchmarkTiming();
-    for (int i = 0; i < iters; i++) {
-        __system_property_read(pinfo[i], 0, propvalue);
-    }
-    StopBenchmarkTiming();
+  StartBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_read(pinfo[i], 0, propvalue);
+  }
+  StopBenchmarkTiming();
 
-    delete[] pinfo;
+  delete[] pinfo;
 }
-BENCHMARK(BM_property_read)->TEST_NUM_PROPS;
 
-static void BM_property_serial(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_serial, int)->TEST_NUM_PROPS;
+void BM_property_serial::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
+  LocalPropertyTestState pa(nprops);
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
-    const prop_info** pinfo = new const prop_info*[iters];
+  srandom(iters * nprops);
+  const prop_info** pinfo = new const prop_info*[iters];
 
-    for (int i = 0; i < iters; i++) {
-        pinfo[i] = __system_property_find(pa.names[random() % nprops]);
-    }
+  for (int i = 0; i < iters; i++) {
+    pinfo[i] = __system_property_find(pa.names[random() % nprops]);
+  }
 
-    StartBenchmarkTiming();
-    for (int i = 0; i < iters; i++) {
-        __system_property_serial(pinfo[i]);
-    }
-    StopBenchmarkTiming();
+  StartBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_serial(pinfo[i]);
+  }
+  StopBenchmarkTiming();
 
-    delete[] pinfo;
+  delete[] pinfo;
 }
-BENCHMARK(BM_property_serial)->TEST_NUM_PROPS;
+
+#endif  // __BIONIC__
diff --git a/benchmarks/pthread_benchmark.cpp b/benchmarks/pthread_benchmark.cpp
index c010dd2..ad31e7e 100644
--- a/benchmarks/pthread_benchmark.cpp
+++ b/benchmarks/pthread_benchmark.cpp
@@ -14,14 +14,15 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <pthread.h>
 
+#include <benchmark/Benchmark.h>
+
 // Stop GCC optimizing out our pure function.
 /* Must not be static! */ pthread_t (*pthread_self_fp)() = pthread_self;
 
-static void BM_pthread_self(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_self);
+void BM_pthread_self::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -30,9 +31,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_self);
 
-static void BM_pthread_getspecific(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_getspecific);
+void BM_pthread_getspecific::Run(int iters) {
   StopBenchmarkTiming();
   pthread_key_t key;
   pthread_key_create(&key, NULL);
@@ -45,12 +46,27 @@
   StopBenchmarkTiming();
   pthread_key_delete(key);
 }
-BENCHMARK(BM_pthread_getspecific);
+
+BENCHMARK_NO_ARG(BM_pthread_setspecific);
+void BM_pthread_setspecific::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_key_t key;
+  pthread_key_create(&key, NULL);
+  StartBenchmarkTiming();
+
+  for (int i = 0; i < iters; ++i) {
+    pthread_setspecific(key, NULL);
+  }
+
+  StopBenchmarkTiming();
+  pthread_key_delete(key);
+}
 
 static void DummyPthreadOnceInitFunction() {
 }
 
-static void BM_pthread_once(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_once);
+void BM_pthread_once::Run(int iters) {
   StopBenchmarkTiming();
   pthread_once_t once = PTHREAD_ONCE_INIT;
   pthread_once(&once, DummyPthreadOnceInitFunction);
@@ -62,9 +78,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_once);
 
-static void BM_pthread_mutex_lock(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_mutex_lock);
+void BM_pthread_mutex_lock::Run(int iters) {
   StopBenchmarkTiming();
   pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
   StartBenchmarkTiming();
@@ -76,11 +92,11 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_mutex_lock);
 
-static void BM_pthread_mutex_lock_ERRORCHECK(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_mutex_lock_ERRORCHECK);
+void BM_pthread_mutex_lock_ERRORCHECK::Run(int iters) {
   StopBenchmarkTiming();
-  pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER;
+  pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -90,11 +106,11 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_mutex_lock_ERRORCHECK);
 
-static void BM_pthread_mutex_lock_RECURSIVE(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_mutex_lock_RECURSIVE);
+void BM_pthread_mutex_lock_RECURSIVE::Run(int iters) {
   StopBenchmarkTiming();
-  pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
+  pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -104,4 +120,114 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_mutex_lock_RECURSIVE);
+
+BENCHMARK_NO_ARG(BM_pthread_rwlock_read);
+void BM_pthread_rwlock_read::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_rwlock_t lock;
+  pthread_rwlock_init(&lock, NULL);
+  StartBenchmarkTiming();
+
+  for (int i = 0; i < iters; ++i) {
+    pthread_rwlock_rdlock(&lock);
+    pthread_rwlock_unlock(&lock);
+  }
+
+  StopBenchmarkTiming();
+  pthread_rwlock_destroy(&lock);
+}
+
+BENCHMARK_NO_ARG(BM_pthread_rwlock_write);
+void BM_pthread_rwlock_write::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_rwlock_t lock;
+  pthread_rwlock_init(&lock, NULL);
+  StartBenchmarkTiming();
+
+  for (int i = 0; i < iters; ++i) {
+    pthread_rwlock_wrlock(&lock);
+    pthread_rwlock_unlock(&lock);
+  }
+
+  StopBenchmarkTiming();
+  pthread_rwlock_destroy(&lock);
+}
+
+static void* IdleThread(void*) {
+  return NULL;
+}
+
+BENCHMARK_NO_ARG(BM_pthread_create);
+void BM_pthread_create::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_t thread;
+
+  for (int i = 0; i < iters; ++i) {
+    StartBenchmarkTiming();
+    pthread_create(&thread, NULL, IdleThread, NULL);
+    StopBenchmarkTiming();
+    pthread_join(thread, NULL);
+  }
+}
+
+static void* RunThread(void* arg) {
+  ::testing::Benchmark* benchmark = reinterpret_cast<::testing::Benchmark*>(arg);
+  benchmark->StopBenchmarkTiming();
+  return NULL;
+}
+
+BENCHMARK_NO_ARG(BM_pthread_create_and_run);
+void BM_pthread_create_and_run::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_t thread;
+
+  for (int i = 0; i < iters; ++i) {
+    StartBenchmarkTiming();
+    pthread_create(&thread, NULL, RunThread, this);
+    pthread_join(thread, NULL);
+  }
+}
+
+static void* ExitThread(void* arg) {
+  ::testing::Benchmark* benchmark = reinterpret_cast<::testing::Benchmark*>(arg);
+  benchmark->StartBenchmarkTiming();
+  pthread_exit(NULL);
+}
+
+BENCHMARK_NO_ARG(BM_pthread_exit_and_join);
+void BM_pthread_exit_and_join::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_t thread;
+
+  for (int i = 0; i < iters; ++i) {
+    pthread_create(&thread, NULL, ExitThread, this);
+    pthread_join(thread, NULL);
+    StopBenchmarkTiming();
+  }
+}
+
+BENCHMARK_NO_ARG(BM_pthread_key_create);
+void BM_pthread_key_create::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_key_t key;
+
+  for (int i = 0; i < iters; ++i) {
+    StartBenchmarkTiming();
+    pthread_key_create(&key, NULL);
+    StopBenchmarkTiming();
+    pthread_key_delete(key);
+  }
+}
+
+BENCHMARK_NO_ARG(BM_pthread_key_delete);
+void BM_pthread_key_delete::Run(int iters) {
+  StopBenchmarkTiming();
+  pthread_key_t key;
+
+  for (int i = 0; i < iters; ++i) {
+    pthread_key_create(&key, NULL);
+    StartBenchmarkTiming();
+    pthread_key_delete(key);
+    StopBenchmarkTiming();
+  }
+}
diff --git a/benchmarks/semaphore_benchmark.cpp b/benchmarks/semaphore_benchmark.cpp
index a11fcc1..8dd5684 100644
--- a/benchmarks/semaphore_benchmark.cpp
+++ b/benchmarks/semaphore_benchmark.cpp
@@ -14,11 +14,15 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
+#include <pthread.h>
 #include <semaphore.h>
+#include <stdatomic.h>
+#include <stdio.h>
 
-static void BM_semaphore_sem_getvalue(int iters) {
+#include <benchmark/Benchmark.h>
+
+BENCHMARK_NO_ARG(BM_semaphore_sem_getvalue);
+void BM_semaphore_sem_getvalue::Run(int iters) {
   StopBenchmarkTiming();
   sem_t semaphore;
   sem_init(&semaphore, 1, 1);
@@ -31,9 +35,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_semaphore_sem_getvalue);
 
-static void BM_semaphore_sem_wait_sem_post(int iters) {
+BENCHMARK_NO_ARG(BM_semaphore_sem_wait_sem_post);
+void BM_semaphore_sem_wait_sem_post::Run(int iters) {
   StopBenchmarkTiming();
   sem_t semaphore;
   sem_init(&semaphore, 1, 1);
@@ -46,4 +50,94 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_semaphore_sem_wait_sem_post);
+
+/*
+ *    This test reports the overhead of the underlying futex wake syscall on
+ * the producer. It does not report the overhead from issuing the wake to the
+ * point where the posted consumer thread wakes up. It suffers from
+ * clock_gettime syscall overhead. Lock the CPU speed for consistent results
+ * as we may not reach >50% cpu utilization.
+ *
+ *    We will run a background thread that catches the sem_post wakeup and
+ * loops immediately returning back to sleep in sem_wait for the next one. This
+ * thread is run with policy SCHED_OTHER (normal policy), a middle policy.
+ *
+ *    The primary thread will run at SCHED_IDLE (lowest priority policy) when
+ * monitoring the background thread to detect when it hits sem_wait sleep. It
+ * will do so with no clock running. Once we are ready, we will switch to
+ * SCHED_FIFO (highest priority policy) to time the act of running sem_post
+ * with the benchmark clock running. This ensures nothing else in the system
+ * can preempt our timed activity, including the background thread. We are
+ * also protected with the scheduling policy of letting a process hit a
+ * resource limit rather than get hit with a context switch.
+ *
+ *    The background thread will start executing either on another CPU, or
+ * after we back down from SCHED_FIFO, but certainly not in the context of
+ * the timing of the sem_post.
+ */
+static atomic_int BM_semaphore_sem_post_running;
+
+static void *BM_semaphore_sem_post_start_thread(void *obj) {
+    sem_t *semaphore = reinterpret_cast<sem_t *>(obj);
+
+    while ((BM_semaphore_sem_post_running > 0) && !sem_wait(semaphore)) {
+        ;
+    }
+    BM_semaphore_sem_post_running = -1;
+    return NULL;
+}
+
+BENCHMARK_NO_ARG(BM_semaphore_sem_post);
+void BM_semaphore_sem_post::Run(int iters) {
+  StopBenchmarkTiming();
+
+  sem_t semaphore;
+  sem_init(&semaphore, 0, 0);
+
+  pthread_attr_t attr;
+  pthread_attr_init(&attr);
+  BM_semaphore_sem_post_running = 1;
+  struct sched_param param = { 0, };
+  pthread_attr_setschedparam(&attr, &param);
+  pthread_attr_setschedpolicy(&attr, SCHED_OTHER);
+  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+  pthread_t pthread;
+  pthread_create(&pthread, &attr, BM_semaphore_sem_post_start_thread, &semaphore);
+  pthread_attr_destroy(&attr);
+
+  sched_setscheduler((pid_t)0, SCHED_IDLE, &param);
+  for (int i = 0; i < iters; ++i) {
+    int trys = 3, dummy = 0;
+    do {
+      if (BM_semaphore_sem_post_running < 0) {
+        sched_setscheduler((pid_t)0, SCHED_OTHER, &param);
+        fprintf(stderr, "BM_semaphore_sem_post: start_thread died unexpectedly\n");
+        return;
+      }
+      sched_yield();
+      sem_getvalue(&semaphore, &dummy);
+      if (dummy < 0) {  // POSIX.1-2001 possibility 1
+        break;
+      }
+      if (dummy == 0) { // POSIX.1-2001 possibility 2
+        --trys;
+      }
+    } while (trys);
+    param.sched_priority = 1;
+    sched_setscheduler((pid_t)0, SCHED_FIFO, &param);
+    StartBenchmarkTiming();
+    sem_post(&semaphore);
+    StopBenchmarkTiming(); // Remember to subtract clock syscall overhead
+    param.sched_priority = 0;
+    sched_setscheduler((pid_t)0, SCHED_IDLE, &param);
+  }
+  sched_setscheduler((pid_t)0, SCHED_OTHER, &param);
+
+  if (BM_semaphore_sem_post_running > 0) {
+    BM_semaphore_sem_post_running = 0;
+  }
+  do {
+    sem_post(&semaphore);
+    sched_yield();
+  } while (!BM_semaphore_sem_post_running);
+}
diff --git a/benchmarks/stdio_benchmark.cpp b/benchmarks/stdio_benchmark.cpp
index e899df7..342e561 100644
--- a/benchmarks/stdio_benchmark.cpp
+++ b/benchmarks/stdio_benchmark.cpp
@@ -14,9 +14,10 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <stdio.h>
+#include <stdio_ext.h>
+
+#include <benchmark/Benchmark.h>
 
 #define KB 1024
 #define MB 1024*KB
@@ -25,37 +26,68 @@
     Arg(1)->Arg(2)->Arg(3)->Arg(4)->Arg(8)->Arg(16)->Arg(32)->Arg(64)->Arg(512)-> \
     Arg(1*KB)->Arg(4*KB)->Arg(8*KB)->Arg(16*KB)->Arg(64*KB)
 
-static void BM_stdio_fread(int iters, int chunk_size) {
-  StopBenchmarkTiming();
+template <typename Fn>
+void ReadWriteTest(::testing::Benchmark* benchmark, int iters, int chunk_size, Fn f, bool buffered) {
+  benchmark->StopBenchmarkTiming();
   FILE* fp = fopen("/dev/zero", "rw");
+  __fsetlocking(fp, FSETLOCKING_BYCALLER);
   char* buf = new char[chunk_size];
-  StartBenchmarkTiming();
+  benchmark->StartBenchmarkTiming();
 
-  for (int i = 0; i < iters; ++i) {
-    fread(buf, chunk_size, 1, fp);
+  if (!buffered) {
+    setvbuf(fp, 0, _IONBF, 0);
   }
 
-  StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(chunk_size));
+  for (int i = 0; i < iters; ++i) {
+    f(buf, chunk_size, 1, fp);
+  }
+
+  benchmark->StopBenchmarkTiming();
+  benchmark->SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(chunk_size));
   delete[] buf;
   fclose(fp);
 }
-BENCHMARK(BM_stdio_fread)->AT_COMMON_SIZES;
 
-
-static void BM_stdio_fwrite(int iters, int chunk_size) {
-  StopBenchmarkTiming();
-  FILE* fp = fopen("/dev/zero", "rw");
-  char* buf = new char[chunk_size];
-  StartBenchmarkTiming();
-
-  for (int i = 0; i < iters; ++i) {
-      fwrite(buf, chunk_size, 1, fp);
-  }
-
-  StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(chunk_size));
-  delete[] buf;
-  fclose(fp);
+BENCHMARK_WITH_ARG(BM_stdio_fread, int)->AT_COMMON_SIZES;
+void BM_stdio_fread::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fread, true);
 }
-BENCHMARK(BM_stdio_fwrite)->AT_COMMON_SIZES;
+
+BENCHMARK_WITH_ARG(BM_stdio_fwrite, int)->AT_COMMON_SIZES;
+void BM_stdio_fwrite::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fwrite, true);
+}
+
+BENCHMARK_WITH_ARG(BM_stdio_fread_unbuffered, int)->AT_COMMON_SIZES;
+void BM_stdio_fread_unbuffered::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fread, false);
+}
+
+BENCHMARK_WITH_ARG(BM_stdio_fwrite_unbuffered, int)->AT_COMMON_SIZES;
+void BM_stdio_fwrite_unbuffered::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fwrite, false);
+}
+
+static void FopenFgetsFclose(int iters, bool no_locking) {
+  char buf[1024];
+  for (int i = 0; i < iters; ++i) {
+    FILE* fp = fopen("/proc/version", "re");
+    if (no_locking) __fsetlocking(fp, FSETLOCKING_BYCALLER);
+    fgets(buf, sizeof(buf), fp);
+    fclose(fp);
+  }
+}
+
+BENCHMARK_NO_ARG(BM_stdio_fopen_fgets_fclose_locking);
+void BM_stdio_fopen_fgets_fclose_locking::Run(int iters) {
+  StartBenchmarkTiming();
+  FopenFgetsFclose(iters, false);
+  StopBenchmarkTiming();
+}
+
+BENCHMARK_NO_ARG(BM_stdio_fopen_fgets_fclose_no_locking);
+void BM_stdio_fopen_fgets_fclose_no_locking::Run(int iters) {
+  StartBenchmarkTiming();
+  FopenFgetsFclose(iters, true);
+  StopBenchmarkTiming();
+}
diff --git a/benchmarks/string_benchmark.cpp b/benchmarks/string_benchmark.cpp
index 536e253..866aa00 100644
--- a/benchmarks/string_benchmark.cpp
+++ b/benchmarks/string_benchmark.cpp
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
+#include <stdint.h>
 #include <string.h>
 
+#include <benchmark/Benchmark.h>
+
 #define KB 1024
 #define MB 1024*KB
 
@@ -26,7 +27,8 @@
 
 // TODO: test unaligned operation too? (currently everything will be 8-byte aligned by malloc.)
 
-static void BM_string_memcmp(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memcmp, int)->AT_COMMON_SIZES;
+void BM_string_memcmp::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* src = new char[nbytes]; char* dst = new char[nbytes];
   memset(src, 'x', nbytes);
@@ -39,13 +41,13 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] src;
   delete[] dst;
 }
-BENCHMARK(BM_string_memcmp)->AT_COMMON_SIZES;
 
-static void BM_string_memcpy(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memcpy, int)->AT_COMMON_SIZES;
+void BM_string_memcpy::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* src = new char[nbytes]; char* dst = new char[nbytes];
   memset(src, 'x', nbytes);
@@ -56,13 +58,13 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] src;
   delete[] dst;
 }
-BENCHMARK(BM_string_memcpy)->AT_COMMON_SIZES;
 
-static void BM_string_memmove(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memmove, int)->AT_COMMON_SIZES;
+void BM_string_memmove::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* buf = new char[nbytes + 64];
   memset(buf, 'x', nbytes + 64);
@@ -73,12 +75,12 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] buf;
 }
-BENCHMARK(BM_string_memmove)->AT_COMMON_SIZES;
 
-static void BM_string_memset(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memset, int)->AT_COMMON_SIZES;
+void BM_string_memset::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* dst = new char[nbytes];
   StartBenchmarkTiming();
@@ -88,12 +90,12 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] dst;
 }
-BENCHMARK(BM_string_memset)->AT_COMMON_SIZES;
 
-static void BM_string_strlen(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_strlen, int)->AT_COMMON_SIZES;
+void BM_string_strlen::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* s = new char[nbytes];
   memset(s, 'x', nbytes);
@@ -106,7 +108,6 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] s;
 }
-BENCHMARK(BM_string_strlen)->AT_COMMON_SIZES;
diff --git a/benchmarks/time_benchmark.cpp b/benchmarks/time_benchmark.cpp
index 22f6e8e..6688bbc 100644
--- a/benchmarks/time_benchmark.cpp
+++ b/benchmarks/time_benchmark.cpp
@@ -14,12 +14,14 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <sys/syscall.h>
+#include <sys/time.h>
 #include <time.h>
 
-static void BM_time_clock_gettime(int iters) {
+#include <benchmark/Benchmark.h>
+
+BENCHMARK_NO_ARG(BM_time_clock_gettime);
+void BM_time_clock_gettime::Run(int iters) {
   StartBenchmarkTiming();
 
   timespec t;
@@ -29,9 +31,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_clock_gettime);
 
-static void BM_time_clock_gettime_syscall(int iters) {
+BENCHMARK_NO_ARG(BM_time_clock_gettime_syscall);
+void BM_time_clock_gettime_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   timespec t;
@@ -41,9 +43,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_clock_gettime_syscall);
 
-static void BM_time_gettimeofday(int iters) {
+BENCHMARK_NO_ARG(BM_time_gettimeofday);
+void BM_time_gettimeofday::Run(int iters) {
   StartBenchmarkTiming();
 
   timeval tv;
@@ -53,9 +55,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_gettimeofday);
 
-static void BM_time_gettimeofday_syscall(int iters) {
+BENCHMARK_NO_ARG(BM_time_gettimeofday_syscall);
+void BM_time_gettimeofday_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   timeval tv;
@@ -65,9 +67,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_gettimeofday_syscall);
 
-static void BM_time_time(int iters) {
+BENCHMARK_NO_ARG(BM_time_time);
+void BM_time_time::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -76,4 +78,3 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_time);
diff --git a/benchmarks/unistd_benchmark.cpp b/benchmarks/unistd_benchmark.cpp
index 7e2ac30..09ca0e6 100644
--- a/benchmarks/unistd_benchmark.cpp
+++ b/benchmarks/unistd_benchmark.cpp
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <sys/syscall.h>
 #include <unistd.h>
 
-static void BM_unistd_getpid(int iters) {
+#include <benchmark/Benchmark.h>
+
+BENCHMARK_NO_ARG(BM_unistd_getpid);
+void BM_unistd_getpid::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -28,9 +29,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_getpid);
 
-static void BM_unistd_getpid_syscall(int iters) {
+BENCHMARK_NO_ARG(BM_unistd_getpid_syscall);
+void BM_unistd_getpid_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -39,12 +40,14 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_getpid_syscall);
+
+#if defined(__BIONIC__)
 
 // Stop GCC optimizing out our pure function.
 /* Must not be static! */ pid_t (*gettid_fp)() = gettid;
 
-static void BM_unistd_gettid(int iters) {
+BENCHMARK_NO_ARG(BM_unistd_gettid);
+void BM_unistd_gettid::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -53,9 +56,11 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_gettid);
 
-static void BM_unistd_gettid_syscall(int iters) {
+#endif
+
+BENCHMARK_NO_ARG(BM_unistd_gettid_syscall);
+void BM_unistd_gettid_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -64,4 +69,3 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_gettid_syscall);
diff --git a/benchmarks/utils.cpp b/benchmarks/utils.cpp
new file mode 100644
index 0000000..863b9db
--- /dev/null
+++ b/benchmarks/utils.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <string>
+
+#include "utils.h"
+
+int Round(int n) {
+  int base = 1;
+  while (base*10 < n) {
+    base *= 10;
+  }
+  if (n < 2*base) {
+    return 2*base;
+  }
+  if (n < 5*base) {
+    return 5*base;
+  }
+  return 10*base;
+}
+
+// Similar to the code in art, but supporting both binary and decimal prefixes.
+std::string PrettyInt(long value, size_t base) {
+  if (base != 2 && base != 10) abort();
+
+  uint64_t count = static_cast<uint64_t>(value);
+  bool negative_number = false;
+  if (value < 0) {
+    negative_number = true;
+    count = static_cast<uint64_t>(-value);
+  }
+
+  // The byte thresholds at which we display amounts. A count is displayed
+  // in unit U when kUnitThresholds[U] <= bytes < kUnitThresholds[U+1].
+  static const uint64_t kUnitThresholds2[] = {
+    1024*1024*1024 /* Gi */, 2*1024*1024 /* Mi */, 3*1024 /* Ki */, 0,
+  };
+  static const uint64_t kUnitThresholds10[] = {
+    1000*1000*1000 /* G */, 2*1000*1000 /* M */, 3*1000 /* k */, 0,
+  };
+  static const uint64_t kAmountPerUnit2[] = { 1024*1024*1024, 1024*1024, 1024, 1 };
+  static const uint64_t kAmountPerUnit10[] = { 1000*1000*1000, 1000*1000, 1000, 1 };
+  static const char* const kUnitStrings2[] = { "Gi", "Mi", "Ki", "" };
+  static const char* const kUnitStrings10[] = { "G", "M", "k", "" };
+
+  // Which set are we using?
+  const uint64_t* kUnitThresholds = ((base == 2) ? kUnitThresholds2 : kUnitThresholds10);
+  const uint64_t* kAmountPerUnit = ((base == 2) ? kAmountPerUnit2 : kAmountPerUnit10);
+  const char* const* kUnitStrings = ((base == 2) ? kUnitStrings2 : kUnitStrings10);
+
+  size_t i = 0;
+  for (; kUnitThresholds[i] != 0; ++i) {
+    if (count >= kUnitThresholds[i]) {
+      break;
+    }
+  }
+  char* s = NULL;
+  asprintf(&s, "%s%" PRId64 "%s", (negative_number ? "-" : ""),
+           count / kAmountPerUnit[i], kUnitStrings[i]);
+  std::string result(s);
+  free(s);
+  return result;
+}
diff --git a/benchmarks/utils.h b/benchmarks/utils.h
new file mode 100644
index 0000000..c3c64ba
--- /dev/null
+++ b/benchmarks/utils.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#ifndef BENCHMARKS_UTILS_H
+#define BENCHMARKS_UTILS_H
+
+#include <stddef.h>
+#include <string>
+
+int Round(int n);
+std::string PrettyInt(long value, size_t base);
+
+#endif  // BENCHMARKS_UTILS_H
diff --git a/build/run-on-host.mk b/build/run-on-host.mk
new file mode 100644
index 0000000..dc7e5d5
--- /dev/null
+++ b/build/run-on-host.mk
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2014 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.
+#
+
+# Include once
+ifneq ($(bionic_run_on_host_mk_included),true)
+bionic_run_on_host_mk_included:=true
+
+ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm mips x86))
+LINKER = linker64
+else
+LINKER = linker
+endif
+
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
+# gtest needs ANDROID_DATA/local/tmp for death test output.
+# Make sure to create ANDROID_DATA/local/tmp if doesn't exist.
+# bionic itself should always work relative to ANDROID_DATA or ANDROID_ROOT.
+bionic-prepare-run-on-host: $(TARGET_OUT_EXECUTABLES)/$(LINKER) $(TARGET_OUT)/etc/hosts $(TARGET_OUT_EXECUTABLES)/sh
+	if [ ! -d /system ]; then \
+	  echo "Attempting to create /system"; \
+	  sudo mkdir -p -m 0777 /system; \
+	fi
+	mkdir -p $(TARGET_OUT_DATA)/local/tmp
+	ln -fs `realpath $(TARGET_OUT)/bin` /system/
+	ln -fs `realpath $(TARGET_OUT)/etc` /system/
+	ln -fs `realpath $(TARGET_OUT)/lib` /system/
+	if [ -d "$(TARGET_OUT)/lib64" ]; then \
+	  ln -fs `realpath $(TARGET_OUT)/lib64` /system/; \
+	fi
+endif
+endif
diff --git a/libc/Android.mk b/libc/Android.mk
index 3005092..d41f8af 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -1,5 +1,7 @@
 LOCAL_PATH := $(call my-dir)
 
+bionic_coverage := false
+
 # Make everything depend on any changes to included makefiles.
 libc_common_additional_dependencies := $(LOCAL_PATH)/Android.mk
 
@@ -38,12 +40,9 @@
 # =========================================================
 libc_common_src_files := \
     bionic/bindresvport.c \
-    bionic/daemon.c \
-    bionic/err.c \
     bionic/ether_aton.c \
     bionic/ether_ntoa.c \
     bionic/fts.c \
-    bionic/gethostname.c \
     bionic/getpriority.c \
     bionic/if_indextoname.c \
     bionic/if_nametoindex.c \
@@ -51,11 +50,9 @@
     bionic/ioctl.c \
     bionic/isatty.c \
     bionic/memmem.c \
-    bionic/pathconf.c \
     bionic/pututline.c \
     bionic/sched_cpualloc.c \
     bionic/sched_cpucount.c \
-    bionic/semaphore.c \
     bionic/sigblock.c \
     bionic/siginterrupt.c \
     bionic/sigsetmask.c \
@@ -64,13 +61,24 @@
     stdio/fread.c \
     stdio/snprintf.c\
     stdio/sprintf.c \
+    stdio/stdio.c \
+    stdio/stdio_ext.cpp \
+    stdlib/atexit.c \
+    stdlib/exit.c \
 
 # Fortify implementations of libc functions.
 libc_common_src_files += \
     bionic/__FD_chk.cpp \
     bionic/__fgets_chk.cpp \
+    bionic/__memchr_chk.cpp \
     bionic/__memmove_chk.cpp \
+    bionic/__memrchr_chk.cpp \
+    bionic/__poll_chk.cpp \
+    bionic/__pread64_chk.cpp \
+    bionic/__pread_chk.cpp \
     bionic/__read_chk.cpp \
+    bionic/__readlink_chk.cpp \
+    bionic/__readlinkat_chk.cpp \
     bionic/__recvfrom_chk.cpp \
     bionic/__stpcpy_chk.cpp \
     bionic/__stpncpy_chk.cpp \
@@ -85,13 +93,14 @@
     bionic/__vsnprintf_chk.cpp \
     bionic/__vsprintf_chk.cpp \
 
-libc_bionic_src_files := \
+libc_bionic_ndk_src_files := \
     bionic/abort.cpp \
     bionic/accept.cpp \
     bionic/accept4.cpp \
     bionic/access.cpp \
     bionic/assert.cpp \
     bionic/atof.cpp \
+    bionic/bionic_systrace.cpp \
     bionic/bionic_time_conversions.cpp \
     bionic/brk.cpp \
     bionic/c16rtomb.cpp \
@@ -100,7 +109,10 @@
     bionic/chown.cpp \
     bionic/clearenv.cpp \
     bionic/clock.cpp \
+    bionic/clock_getcpuclockid.cpp \
+    bionic/clock_nanosleep.cpp \
     bionic/clone.cpp \
+    bionic/close.cpp \
     bionic/__cmsg_nxthdr.cpp \
     bionic/connect.cpp \
     bionic/ctype.cpp \
@@ -110,19 +122,22 @@
     bionic/epoll_pwait.cpp \
     bionic/epoll_wait.cpp \
     bionic/__errno.cpp \
+    bionic/error.cpp \
     bionic/eventfd_read.cpp \
     bionic/eventfd_write.cpp \
+    bionic/faccessat.cpp \
+    bionic/fchmod.cpp \
+    bionic/fchmodat.cpp \
     bionic/ffs.cpp \
     bionic/flockfile.cpp \
-    bionic/fork.cpp \
     bionic/fpclassify.cpp \
     bionic/futimens.cpp \
-    bionic/getauxval.cpp \
     bionic/getcwd.cpp \
-    bionic/getentropy_linux.c \
+    bionic/gethostname.cpp \
     bionic/getpgrp.cpp \
     bionic/getpid.cpp \
     bionic/gettid.cpp \
+    bionic/__gnu_basename.cpp \
     bionic/inotify_init.cpp \
     bionic/lchown.cpp \
     bionic/lfs64_support.cpp \
@@ -134,42 +149,25 @@
     bionic/link.cpp \
     bionic/locale.cpp \
     bionic/lstat.cpp \
+    bionic/malloc_info.cpp \
     bionic/mbrtoc16.cpp \
     bionic/mbrtoc32.cpp \
     bionic/mbstate.cpp \
+    bionic/mempcpy.cpp \
     bionic/mkdir.cpp \
     bionic/mkfifo.cpp \
     bionic/mknod.cpp \
     bionic/mntent.cpp \
     bionic/NetdClientDispatch.cpp \
     bionic/open.cpp \
+    bionic/pathconf.cpp \
     bionic/pause.cpp \
     bionic/pipe.cpp \
     bionic/poll.cpp \
     bionic/posix_fadvise.cpp \
     bionic/posix_fallocate.cpp \
+    bionic/posix_madvise.cpp \
     bionic/posix_timers.cpp \
-    bionic/pthread_atfork.cpp \
-    bionic/pthread_attr.cpp \
-    bionic/pthread_cond.cpp \
-    bionic/pthread_create.cpp \
-    bionic/pthread_detach.cpp \
-    bionic/pthread_equal.cpp \
-    bionic/pthread_exit.cpp \
-    bionic/pthread_getcpuclockid.cpp \
-    bionic/pthread_getschedparam.cpp \
-    bionic/pthread_gettid_np.cpp \
-    bionic/pthread_internals.cpp \
-    bionic/pthread_join.cpp \
-    bionic/pthread_key.cpp \
-    bionic/pthread_kill.cpp \
-    bionic/pthread_mutex.cpp \
-    bionic/pthread_once.cpp \
-    bionic/pthread_rwlock.cpp \
-    bionic/pthread_self.cpp \
-    bionic/pthread_setname_np.cpp \
-    bionic/pthread_setschedparam.cpp \
-    bionic/pthread_sigmask.cpp \
     bionic/ptrace.cpp \
     bionic/pty.cpp \
     bionic/raise.cpp \
@@ -182,6 +180,7 @@
     bionic/scandir.cpp \
     bionic/sched_getaffinity.cpp \
     bionic/sched_getcpu.cpp \
+    bionic/semaphore.cpp \
     bionic/send.cpp \
     bionic/setegid.cpp \
     bionic/__set_errno.cpp \
@@ -197,24 +196,21 @@
     bionic/signalfd.cpp \
     bionic/sigpending.cpp \
     bionic/sigprocmask.cpp \
+    bionic/sigqueue.cpp \
     bionic/sigsuspend.cpp \
+    bionic/sigtimedwait.cpp \
     bionic/sigwait.cpp \
+    bionic/sigwaitinfo.cpp \
     bionic/socket.cpp \
     bionic/stat.cpp \
     bionic/statvfs.cpp \
-    bionic/strcoll_l.cpp \
     bionic/strerror.cpp \
     bionic/strerror_r.cpp \
-    bionic/strftime_l.cpp \
     bionic/strsignal.cpp \
     bionic/strtold.cpp \
-    bionic/strtold_l.cpp \
-    bionic/strtoll_l.cpp \
-    bionic/strtoull_l.cpp \
-    bionic/strxfrm_l.cpp \
     bionic/stubs.cpp \
     bionic/symlink.cpp \
-    bionic/sysconf.cpp \
+    bionic/sysinfo.cpp \
     bionic/syslog.cpp \
     bionic/sys_siglist.c \
     bionic/sys_signame.c \
@@ -226,10 +222,27 @@
     bionic/umount.cpp \
     bionic/unlink.cpp \
     bionic/utimes.cpp \
-    bionic/vdso.cpp \
     bionic/wait.cpp \
     bionic/wchar.cpp \
     bionic/wctype.cpp \
+    bionic/wmempcpy.cpp \
+
+libc_bionic_src_files :=
+
+# The fork implementation depends on pthread data, so we can't include it in
+# libc_ndk.a.
+libc_bionic_src_files += bionic/fork.cpp
+
+# The data that backs getauxval is initialized in the libc init functions which
+# are invoked by the linker. If this file is included in libc_ndk.a, only one of
+# the copies of the global data will be initialized, resulting in nullptr
+# dereferences.
+libc_bionic_src_files += bionic/getauxval.cpp
+
+# These three require getauxval, which isn't available on older platforms.
+libc_bionic_src_files += bionic/getentropy_linux.c
+libc_bionic_src_files += bionic/sysconf.cpp
+libc_bionic_src_files += bionic/vdso.cpp
 
 libc_cxa_src_files := \
     bionic/__cxa_guard.cpp \
@@ -240,9 +253,6 @@
     upstream-freebsd/lib/libc/gen/ldexp.c \
     upstream-freebsd/lib/libc/gen/sleep.c \
     upstream-freebsd/lib/libc/gen/usleep.c \
-    upstream-freebsd/lib/libc/stdio/fclose.c \
-    upstream-freebsd/lib/libc/stdio/flags.c \
-    upstream-freebsd/lib/libc/stdio/fopen.c \
     upstream-freebsd/lib/libc/stdlib/abs.c \
     upstream-freebsd/lib/libc/stdlib/getopt_long.c \
     upstream-freebsd/lib/libc/stdlib/imaxabs.c \
@@ -267,7 +277,6 @@
     upstream-freebsd/lib/libc/string/wcsspn.c \
     upstream-freebsd/lib/libc/string/wcstok.c \
     upstream-freebsd/lib/libc/string/wmemchr.c \
-    upstream-freebsd/lib/libc/string/wmemcpy.c \
     upstream-freebsd/lib/libc/string/wmemset.c \
 
 libc_upstream_netbsd_src_files := \
@@ -288,8 +297,8 @@
     upstream-netbsd/lib/libc/stdlib/div.c \
     upstream-netbsd/lib/libc/stdlib/drand48.c \
     upstream-netbsd/lib/libc/stdlib/erand48.c \
-    upstream-netbsd/lib/libc/stdlib/insque.c \
     upstream-netbsd/lib/libc/stdlib/jrand48.c \
+    upstream-netbsd/lib/libc/stdlib/lcong48.c \
     upstream-netbsd/lib/libc/stdlib/ldiv.c \
     upstream-netbsd/lib/libc/stdlib/lldiv.c \
     upstream-netbsd/lib/libc/stdlib/lrand48.c \
@@ -297,14 +306,12 @@
     upstream-netbsd/lib/libc/stdlib/nrand48.c \
     upstream-netbsd/lib/libc/stdlib/_rand48.c \
     upstream-netbsd/lib/libc/stdlib/rand_r.c \
-    upstream-netbsd/lib/libc/stdlib/remque.c \
     upstream-netbsd/lib/libc/stdlib/seed48.c \
     upstream-netbsd/lib/libc/stdlib/srand48.c \
     upstream-netbsd/lib/libc/string/memccpy.c \
     upstream-netbsd/lib/libc/string/strcasestr.c \
     upstream-netbsd/lib/libc/string/strcoll.c \
     upstream-netbsd/lib/libc/string/strxfrm.c \
-    upstream-netbsd/lib/libc/unistd/killpg.c \
 
 libc_upstream_openbsd_gdtoa_src_files := \
     upstream-openbsd/android/gdtoa_support.cpp \
@@ -333,11 +340,18 @@
     $(libc_upstream_openbsd_gdtoa_src_files) \
     upstream-openbsd/lib/libc/gdtoa/strtorQ.c \
 
+# These two depend on getentropy_linux.cpp, which isn't in libc_ndk.a.
 libc_upstream_openbsd_src_files := \
     upstream-openbsd/lib/libc/crypt/arc4random.c \
     upstream-openbsd/lib/libc/crypt/arc4random_uniform.c \
+
+libc_upstream_openbsd_ndk_src_files := \
+    upstream-openbsd/lib/libc/compat-43/killpg.c \
     upstream-openbsd/lib/libc/gen/alarm.c \
     upstream-openbsd/lib/libc/gen/ctype_.c \
+    upstream-openbsd/lib/libc/gen/daemon.c \
+    upstream-openbsd/lib/libc/gen/err.c \
+    upstream-openbsd/lib/libc/gen/errx.c \
     upstream-openbsd/lib/libc/gen/exec.c \
     upstream-openbsd/lib/libc/gen/fnmatch.c \
     upstream-openbsd/lib/libc/gen/ftok.c \
@@ -347,6 +361,12 @@
     upstream-openbsd/lib/libc/gen/time.c \
     upstream-openbsd/lib/libc/gen/tolower_.c \
     upstream-openbsd/lib/libc/gen/toupper_.c \
+    upstream-openbsd/lib/libc/gen/verr.c \
+    upstream-openbsd/lib/libc/gen/verrx.c \
+    upstream-openbsd/lib/libc/gen/vwarn.c \
+    upstream-openbsd/lib/libc/gen/vwarnx.c \
+    upstream-openbsd/lib/libc/gen/warn.c \
+    upstream-openbsd/lib/libc/gen/warnx.c \
     upstream-openbsd/lib/libc/locale/btowc.c \
     upstream-openbsd/lib/libc/locale/mbrlen.c \
     upstream-openbsd/lib/libc/locale/mbstowcs.c \
@@ -380,6 +400,7 @@
     upstream-openbsd/lib/libc/stdio/asprintf.c \
     upstream-openbsd/lib/libc/stdio/clrerr.c \
     upstream-openbsd/lib/libc/stdio/dprintf.c \
+    upstream-openbsd/lib/libc/stdio/fclose.c \
     upstream-openbsd/lib/libc/stdio/fdopen.c \
     upstream-openbsd/lib/libc/stdio/feof.c \
     upstream-openbsd/lib/libc/stdio/ferror.c \
@@ -391,6 +412,9 @@
     upstream-openbsd/lib/libc/stdio/fgetwc.c \
     upstream-openbsd/lib/libc/stdio/fgetws.c \
     upstream-openbsd/lib/libc/stdio/fileno.c \
+    upstream-openbsd/lib/libc/stdio/flags.c \
+    upstream-openbsd/lib/libc/stdio/fmemopen.c \
+    upstream-openbsd/lib/libc/stdio/fopen.c \
     upstream-openbsd/lib/libc/stdio/fprintf.c \
     upstream-openbsd/lib/libc/stdio/fpurge.c \
     upstream-openbsd/lib/libc/stdio/fputc.c \
@@ -418,6 +442,8 @@
     upstream-openbsd/lib/libc/stdio/getwchar.c \
     upstream-openbsd/lib/libc/stdio/makebuf.c \
     upstream-openbsd/lib/libc/stdio/mktemp.c \
+    upstream-openbsd/lib/libc/stdio/open_memstream.c \
+    upstream-openbsd/lib/libc/stdio/open_wmemstream.c \
     upstream-openbsd/lib/libc/stdio/perror.c \
     upstream-openbsd/lib/libc/stdio/printf.c \
     upstream-openbsd/lib/libc/stdio/putc.c \
@@ -434,7 +460,6 @@
     upstream-openbsd/lib/libc/stdio/setbuffer.c \
     upstream-openbsd/lib/libc/stdio/setvbuf.c \
     upstream-openbsd/lib/libc/stdio/sscanf.c \
-    upstream-openbsd/lib/libc/stdio/stdio.c \
     upstream-openbsd/lib/libc/stdio/swprintf.c \
     upstream-openbsd/lib/libc/stdio/swscanf.c \
     upstream-openbsd/lib/libc/stdio/tempnam.c \
@@ -460,13 +485,14 @@
     upstream-openbsd/lib/libc/stdio/wprintf.c \
     upstream-openbsd/lib/libc/stdio/wscanf.c \
     upstream-openbsd/lib/libc/stdio/wsetup.c \
-    upstream-openbsd/lib/libc/stdlib/atexit.c \
     upstream-openbsd/lib/libc/stdlib/atoi.c \
     upstream-openbsd/lib/libc/stdlib/atol.c \
     upstream-openbsd/lib/libc/stdlib/atoll.c \
-    upstream-openbsd/lib/libc/stdlib/exit.c \
     upstream-openbsd/lib/libc/stdlib/getenv.c \
+    upstream-openbsd/lib/libc/stdlib/insque.c \
     upstream-openbsd/lib/libc/stdlib/lsearch.c \
+    upstream-openbsd/lib/libc/stdlib/reallocarray.c \
+    upstream-openbsd/lib/libc/stdlib/remque.c \
     upstream-openbsd/lib/libc/stdlib/setenv.c \
     upstream-openbsd/lib/libc/stdlib/strtoimax.c \
     upstream-openbsd/lib/libc/stdlib/strtol.c \
@@ -486,13 +512,57 @@
     upstream-openbsd/lib/libc/string/strspn.c \
     upstream-openbsd/lib/libc/string/strstr.c \
     upstream-openbsd/lib/libc/string/strtok.c \
+    upstream-openbsd/lib/libc/string/wmemcpy.c \
     upstream-openbsd/lib/libc/string/wcslcpy.c \
     upstream-openbsd/lib/libc/string/wcsstr.c \
     upstream-openbsd/lib/libc/string/wcswidth.c \
 
+libc_pthread_src_files := \
+    bionic/pthread_atfork.cpp \
+    bionic/pthread_attr.cpp \
+    bionic/pthread_cond.cpp \
+    bionic/pthread_create.cpp \
+    bionic/pthread_detach.cpp \
+    bionic/pthread_equal.cpp \
+    bionic/pthread_exit.cpp \
+    bionic/pthread_getcpuclockid.cpp \
+    bionic/pthread_getschedparam.cpp \
+    bionic/pthread_gettid_np.cpp \
+    bionic/pthread_internal.cpp \
+    bionic/pthread_join.cpp \
+    bionic/pthread_key.cpp \
+    bionic/pthread_kill.cpp \
+    bionic/pthread_mutex.cpp \
+    bionic/pthread_once.cpp \
+    bionic/pthread_rwlock.cpp \
+    bionic/pthread_self.cpp \
+    bionic/pthread_setname_np.cpp \
+    bionic/pthread_setschedparam.cpp \
+    bionic/pthread_sigmask.cpp \
+
+libc_thread_atexit_impl_src_files := \
+    bionic/__cxa_thread_atexit_impl.cpp \
+
 libc_arch_static_src_files := \
     bionic/dl_iterate_phdr_static.cpp \
 
+# Various kinds of LP32 cruft.
+# ========================================================
+libc_bionic_src_files_32 += \
+    bionic/mmap.cpp \
+
+libc_common_src_files_32 += \
+    bionic/legacy_32_bit_support.cpp \
+    bionic/ndk_cruft.cpp \
+    bionic/time64.c \
+
+libc_netbsd_src_files_32 += \
+    upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \
+
+libc_openbsd_src_files_32 += \
+    upstream-openbsd/lib/libc/stdio/putw.c \
+
+
 # Define some common cflags
 # ========================================================
 libc_common_cflags := \
@@ -535,13 +605,6 @@
   libc_common_cflags += -DMALLOC_ALIGNMENT=$(BOARD_MALLOC_ALIGNMENT)
 endif
 
-# Define ANDROID_SMP appropriately.
-ifeq ($(TARGET_CPU_SMP),true)
-    libc_common_cflags += -DANDROID_SMP=1
-else
-    libc_common_cflags += -DANDROID_SMP=0
-endif
-
 # Define some common conlyflags
 libc_common_conlyflags := \
     -std=gnu99
@@ -556,12 +619,13 @@
     $(LOCAL_PATH)/stdio   \
 
 # ========================================================
-# Add in the arch-specific flags.
+# Add in the arch or 32-bit specific flags
 # Must be called with $(eval).
 # $(1): the LOCAL_ variable name
 # $(2): the bionic variable name to pull in
 define patch-up-arch-specific-flags
 $(1)_$(TARGET_ARCH) += $($(2)_$(TARGET_ARCH))
+$(1)_32 += $($(2)_32)
 ifdef TARGET_2ND_ARCH
 $(1)_$(TARGET_2ND_ARCH) += $($(2)_$(TARGET_2ND_ARCH))
 endif
@@ -586,7 +650,10 @@
 LOCAL_MODULE := libc_stack_protector
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 include $(BUILD_STATIC_LIBRARY)
@@ -624,7 +691,10 @@
 LOCAL_MODULE := libc_tzcode
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 include $(BUILD_STATIC_LIBRARY)
@@ -642,25 +712,35 @@
     upstream-netbsd/lib/libc/isc/ev_timers.c \
     upstream-netbsd/lib/libc/resolv/mtctxres.c \
 
-LOCAL_CFLAGS := \
+# We use the OpenBSD res_random.
+LOCAL_CFLAGS += \
+    -Dres_randomid=__res_randomid
+LOCAL_SRC_FILES += \
+    upstream-openbsd/lib/libc/net/res_random.c \
+
+LOCAL_CFLAGS += \
     $(libc_common_cflags) \
     -DANDROID_CHANGES \
     -DINET6 \
     -fvisibility=hidden \
     -Wno-unused-parameter \
-    -I$(LOCAL_PATH)/dns/include \
-    -I$(LOCAL_PATH)/private \
-    -I$(LOCAL_PATH)/upstream-netbsd/lib/libc/include \
-    -I$(LOCAL_PATH)/upstream-netbsd/android/include \
     -include netbsd-compat.h \
 
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) \
+    $(LOCAL_PATH)/dns/include \
+    $(LOCAL_PATH)/private \
+    $(LOCAL_PATH)/upstream-netbsd/lib/libc/include \
+    $(LOCAL_PATH)/upstream-netbsd/android/include \
+
 LOCAL_MODULE := libc_dns
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 include $(BUILD_STATIC_LIBRARY)
@@ -679,17 +759,21 @@
 LOCAL_CFLAGS := \
     $(libc_common_cflags) \
     -Wno-sign-compare -Wno-uninitialized \
-    -I$(LOCAL_PATH)/upstream-freebsd/android/include \
-    -I$(LOCAL_PATH)/upstream-freebsd/lib/libc/include \
     -include freebsd-compat.h \
 
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) \
+    $(LOCAL_PATH)/upstream-freebsd/android/include \
+    $(LOCAL_PATH)/upstream-freebsd/lib/libc/include \
+
 LOCAL_MODULE := libc_freebsd
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_freebsd_src_files))
@@ -710,17 +794,21 @@
     $(libc_common_cflags) \
     -Wno-sign-compare -Wno-uninitialized \
     -DPOSIX_MISTAKE \
-    -I$(LOCAL_PATH)/upstream-netbsd/android/include \
-    -I$(LOCAL_PATH)/upstream-netbsd/lib/libc/include \
     -include netbsd-compat.h \
 
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) \
+    $(LOCAL_PATH)/upstream-netbsd/android/include \
+    $(LOCAL_PATH)/upstream-netbsd/lib/libc/include \
+
 LOCAL_MODULE := libc_netbsd
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_netbsd_src_files))
@@ -728,6 +816,46 @@
 
 
 # ========================================================
+# libc_openbsd_ndk.a - upstream OpenBSD C library code
+# that can be safely included in the libc_ndk.a (doesn't
+# contain any troublesome global data or constructors).
+# ========================================================
+#
+# These files are built with the openbsd-compat.h header file
+# automatically included.
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_upstream_openbsd_ndk_src_files)
+LOCAL_CLANG := $(use_clang)
+
+LOCAL_CFLAGS := \
+    $(libc_common_cflags) \
+    -Wno-sign-compare \
+    -Wno-uninitialized \
+    -Wno-unused-parameter \
+    -include openbsd-compat.h \
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) \
+    $(LOCAL_PATH)/private \
+    $(LOCAL_PATH)/upstream-openbsd/android/include \
+    $(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
+    $(LOCAL_PATH)/upstream-openbsd/lib/libc/gdtoa/ \
+
+LOCAL_MODULE := libc_openbsd_ndk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
+include $(BUILD_STATIC_LIBRARY)
+
+
+# ========================================================
 # libc_openbsd.a - upstream OpenBSD C library code
 # ========================================================
 #
@@ -737,28 +865,29 @@
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := $(libc_upstream_openbsd_src_files)
-ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
-  # Clang has wrong long double size or LDBL_MANT_DIG, http://b/17163651.
-  LOCAL_CLANG := false
-else
-  LOCAL_CLANG := $(use_clang)
-endif
+LOCAL_CLANG := $(use_clang)
 
 LOCAL_CFLAGS := \
     $(libc_common_cflags) \
-    -Wno-sign-compare -Wno-uninitialized -Wno-unused-parameter \
-    -I$(LOCAL_PATH)/private \
-    -I$(LOCAL_PATH)/upstream-openbsd/android/include \
-    -I$(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
-    -I$(LOCAL_PATH)/upstream-openbsd/lib/libc/gdtoa/ \
+    -Wno-sign-compare \
+    -Wno-uninitialized \
+    -Wno-unused-parameter \
     -include openbsd-compat.h \
 
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) \
+    $(LOCAL_PATH)/private \
+    $(LOCAL_PATH)/upstream-openbsd/android/include \
+    $(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
+    $(LOCAL_PATH)/upstream-openbsd/lib/libc/gdtoa/ \
+
 LOCAL_MODULE := libc_openbsd
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_openbsd_src_files))
@@ -776,28 +905,27 @@
 
 LOCAL_SRC_FILES_32 := $(libc_upstream_openbsd_gdtoa_src_files_32)
 LOCAL_SRC_FILES_64 := $(libc_upstream_openbsd_gdtoa_src_files_64)
-ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
-  # Clang has wrong long double size or LDBL_MANT_DIG, http://b/17163651.
-  LOCAL_CLANG := false
-else
-  LOCAL_CLANG := $(use_clang)
-endif
+LOCAL_CLANG := $(use_clang)
 
 LOCAL_CFLAGS := \
     $(libc_common_cflags) \
     -Wno-sign-compare -Wno-uninitialized \
     -fvisibility=hidden \
-    -I$(LOCAL_PATH)/private \
-    -I$(LOCAL_PATH)/upstream-openbsd/android/include \
-    -I$(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
     -include openbsd-compat.h \
 
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) \
+    $(LOCAL_PATH)/private \
+    $(LOCAL_PATH)/upstream-openbsd/android/include \
+    $(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
+
 LOCAL_MODULE := libc_gdtoa
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 include $(BUILD_STATIC_LIBRARY)
@@ -813,23 +941,106 @@
 LOCAL_CFLAGS := $(libc_common_cflags) \
     -Wframe-larger-than=2048 \
 
-ifeq ($(TARGET_ARCH),x86_64)
-  # Clang assembler has problem with ssse3-strcmp-slm.S, http://b/17302991
-  LOCAL_CLANG_ASFLAGS += -no-integrated-as
-endif
+# memcpy.S, memchr.S, etc. do not compile with Clang.
+LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
+LOCAL_CLANG_ASFLAGS_arm64 += -no-integrated-as
 
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
-LOCAL_CPPFLAGS := $(libc_common_cppflags)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast
+LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
 LOCAL_MODULE := libc_bionic
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
+include $(BUILD_STATIC_LIBRARY)
+
+
+# ========================================================
+# libc_bionic_ndk.a - The portions of libc_bionic that can
+# be safely used in libc_ndk.a (no troublesome global data
+# or constructors).
+# ========================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_bionic_ndk_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) \
+    -Wframe-larger-than=2048 \
+
+# memcpy.S, memchr.S, etc. do not compile with Clang.
+LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
+LOCAL_CLANG_ASFLAGS_arm64 += -no-integrated-as
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast
+LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
+LOCAL_MODULE := libc_bionic_ndk
+LOCAL_CLANG := $(use_clang)
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_bionic_src_files))
 include $(BUILD_STATIC_LIBRARY)
 
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := $(libc_thread_atexit_impl_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) -Wframe-larger-than=2048
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_MODULE := libc_thread_atexit_impl
+# TODO: Clang tries to use __tls_get_addr which is not supported yet
+# remove after it is implemented.
+LOCAL_CLANG := false
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+include $(BUILD_STATIC_LIBRARY)
+
+# ========================================================
+# libc_pthread.a - pthreads parts that previously lived in
+# libc_bionic.a. Relocated to their own library because
+# they can't be included in libc_ndk.a (as they layout of
+# pthread_t has changed over the years and has ABI
+# compatibility issues).
+# ========================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_pthread_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) \
+    -Wframe-larger-than=2048 \
+
+# memcpy.S, memchr.S, etc. do not compile with Clang.
+LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
+LOCAL_CLANG_ASFLAGS_arm64 += -no-integrated-as
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_MODULE := libc_pthread
+LOCAL_CLANG := $(use_clang)
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+include $(BUILD_STATIC_LIBRARY)
+
 
 # ========================================================
 # libc_cxa.a - Things traditionally in libstdc++
@@ -843,12 +1054,21 @@
 
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
 LOCAL_MODULE := libc_cxa
-# GCC refuses to hide new/delete
-LOCAL_CLANG := true
+LOCAL_CLANG := true # GCC refuses to hide new/delete
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+# b/17574078: Need to disable coverage until we have a prebuilt libprofile_rt.
+# Since this is a static library built with clang, it needs to link
+# libprofile_rt when it is linked into the final binary. Since the final binary
+# is built with GCC, it won't link libprofile_rt. We can't very easily just add
+# libprofile_rt to all link lines the way we've done for libgcov because
+# libprofile_rt isn't prebuilt, and it would be tricky to write a rule that
+# would make sure libprofile_rt is built.
+LOCAL_NATIVE_COVERAGE := false
 
 include $(BUILD_STATIC_LIBRARY)
 
@@ -866,7 +1086,10 @@
 LOCAL_MODULE := libc_syscalls
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 include $(BUILD_STATIC_LIBRARY)
 
@@ -885,8 +1108,78 @@
 LOCAL_CLANG := $(use_clang)
 LOCAL_CFLAGS := $(libc_common_cflags) -fno-builtin
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+include $(BUILD_STATIC_LIBRARY)
+
+# ========================================================
+# libc_ndk.a
+# Compatibility library for the NDK. This library contains
+# all the parts of libc that are safe to statically link.
+# We can't safely statically link things that can only run
+# on a certain version of the OS. Examples include
+# anything that talks to netd (a large portion of the DNS
+# code) and anything that is dependent on the layout of a
+# data structure that has changed across releases (such as
+# pthread_t).
+# ========================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libc_ndk
+LOCAL_CLANG := $(use_clang)
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CFLAGS := $(libc_common_cflags) -fvisibility=hidden -O0
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
+LOCAL_SRC_FILES := \
+    $(libc_common_src_files) \
+    $(libc_arch_dynamic_src_files) \
+    $(libc_ndk_stub_src_files) \
+    bionic/malloc_debug_common.cpp \
+
+LOCAL_SRC_FILES_arm += \
+    arch-common/bionic/crtbegin_so.c \
+    arch-arm/bionic/atexit_legacy.c \
+    arch-common/bionic/crtend_so.S \
+
+LOCAL_CFLAGS := $(libc_common_cflags) \
+    -DLIBC_STATIC \
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+    libc_bionic_ndk \
+    libc_cxa \
+    libc_freebsd \
+    libc_gdtoa \
+    libc_malloc \
+    libc_netbsd \
+    libc_openbsd_ndk \
+    libc_stack_protector \
+    libc_syscalls \
+    libc_tzcode \
+    libm \
+
+LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi
+LOCAL_CXX_STL := none
+
+ifneq ($(MALLOC_IMPL),dlmalloc)
+LOCAL_WHOLE_STATIC_LIBRARIES += libjemalloc
+endif
+
+$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
+$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_common_src_files))
+$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files))
+$(eval $(call patch-up-arch-specific-flags,LOCAL_ASFLAGS,LOCAL_CFLAGS))
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 include $(BUILD_STATIC_LIBRARY)
 
 # ========================================================
@@ -905,6 +1198,7 @@
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 LOCAL_WHOLE_STATIC_LIBRARIES := \
     libc_bionic \
+    libc_bionic_ndk \
     libc_cxa \
     libc_dns \
     libc_freebsd \
@@ -912,20 +1206,22 @@
     libc_malloc \
     libc_netbsd \
     libc_openbsd \
+    libc_openbsd_ndk \
+    libc_pthread \
     libc_stack_protector \
     libc_syscalls \
+    libc_thread_atexit_impl \
     libc_tzcode \
 
 LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi
 
-ifneq ($(MALLOC_IMPL),dlmalloc)
-LOCAL_WHOLE_STATIC_LIBRARIES += libjemalloc
-endif
-
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
 # TODO: split out the asflags.
 LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_common_src_files))
@@ -947,7 +1243,6 @@
 
 LOCAL_SRC_FILES := \
     $(libc_arch_static_src_files) \
-    $(libc_static_common_src_files) \
     bionic/libc_init_static.cpp
 
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
@@ -961,7 +1256,10 @@
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_static_src_files))
@@ -982,6 +1280,9 @@
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_MODULE := libc_malloc
 LOCAL_CLANG := $(use_clang)
+LOCAL_CXX_STL := none
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 include $(BUILD_STATIC_LIBRARY)
 
@@ -993,7 +1294,6 @@
 
 LOCAL_SRC_FILES := \
     $(libc_arch_static_src_files) \
-    $(libc_static_common_src_files) \
     bionic/malloc_debug_common.cpp \
     bionic/libc_init_static.cpp \
 
@@ -1007,7 +1307,15 @@
 LOCAL_CLANG := $(use_clang)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
+
+ifneq ($(MALLOC_IMPL),dlmalloc)
+LOCAL_WHOLE_STATIC_LIBRARIES += libjemalloc
+endif
+
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_static_src_files))
@@ -1022,23 +1330,31 @@
 LOCAL_CFLAGS := $(libc_common_cflags)
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
+
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_SRC_FILES := \
+    arch-common/bionic/crtbegin_so.c \
+    arch-common/bionic/crtbrand.S \
     $(libc_arch_dynamic_src_files) \
-    $(libc_static_common_src_files) \
     bionic/malloc_debug_common.cpp \
     bionic/libc_init_dynamic.cpp \
     bionic/NetdClient.cpp \
+    arch-common/bionic/crtend_so.S \
 
 LOCAL_MODULE := libc
 LOCAL_CLANG := $(use_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 LOCAL_REQUIRED_MODULES := tzdata
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(libc_common_additional_dependencies) \
+    $(LOCAL_PATH)/version_script.txt \
 
 # Leave the symbols in the shared library so that stack unwinders can produce
 # meaningful name resolution.
 LOCAL_STRIP_MODULE := keep_symbols
 
+# Do not pack libc.so relocations; see http://b/20645321 for details.
+LOCAL_PACK_MODULE_RELOCATIONS := false
+
 # WARNING: The only library libc.so should depend on is libdl.so!  If you add other libraries,
 # make sure to add -Wl,--exclude-libs=libgcc.a to the LOCAL_LDFLAGS for those libraries.  This
 # ensures that symbols that are pulled into those new libraries from libgcc.a are not declared
@@ -1049,25 +1365,39 @@
 
 LOCAL_SHARED_LIBRARIES := libdl
 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
+
+ifneq ($(MALLOC_IMPL),dlmalloc)
+LOCAL_WHOLE_STATIC_LIBRARIES += libjemalloc
+endif
+
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
+# Don't re-export new/delete and friends, even if the compiler really wants to.
+LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/version_script.txt
+
 # We'd really like to do this for all architectures, but since this wasn't done
 # before, these symbols must continue to be exported on LP32 for binary
 # compatibility.
-LOCAL_LDFLAGS_arm64 := -Wl,--exclude-libs,libgcc.a
-LOCAL_LDFLAGS_mips64 := -Wl,--exclude-libs,libgcc.a
-LOCAL_LDFLAGS_x86_64 := -Wl,--exclude-libs,libgcc.a
+# TODO: disabled for http://b/20065774.
+#LOCAL_LDFLAGS_64 := -Wl,--exclude-libs,libgcc.a
+
+# TODO: This is to work around b/19059885. Remove after root cause is fixed
+LOCAL_LDFLAGS_arm := -Wl,--hash-style=sysv
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files))
-$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_static_common_src_files))
+
+LOCAL_NO_CRT := true
+LOCAL_ASFLAGS += $(libc_crt_target_cflags)
+
 # special for arm
-LOCAL_NO_CRT_arm := true
 LOCAL_CFLAGS_arm += -DCRT_LEGACY_WORKAROUND
 LOCAL_SRC_FILES_arm += \
-    arch-common/bionic/crtbegin_so.c \
-    arch-arm/bionic/atexit_legacy.c \
-    arch-common/bionic/crtend_so.S
+    arch-arm/bionic/atexit_legacy.c
+
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 include $(BUILD_SHARED_LIBRARY)
 
@@ -1085,10 +1415,7 @@
 # ========================================================
 include $(CLEAR_VARS)
 
-LOCAL_CFLAGS := \
-    $(libc_common_cflags) \
-    -DMALLOC_LEAK_CHECK \
-
+LOCAL_CFLAGS := $(libc_common_cflags)
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
 
@@ -1105,17 +1432,26 @@
 
 LOCAL_MODULE := libc_malloc_debug_leak
 LOCAL_CLANG := $(use_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(libc_common_additional_dependencies) \
+    $(LOCAL_PATH)/version_script.txt \
 
 LOCAL_SHARED_LIBRARIES := libc libdl
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 # Only need this for arm since libc++ uses its own unwind code that
 # doesn't mix with the other default unwind code.
-LOCAL_STATIC_LIBRARIES_arm := libc++
+LOCAL_STATIC_LIBRARIES_arm := libunwind_llvm
+LOCAL_STATIC_LIBRARIES += libc++abi
 LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
 
+# Don't re-export new/delete and friends, even if the compiler really wants to.
+LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/version_script.txt
+
 # Don't install on release build
 LOCAL_MODULE_TAGS := eng debug
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 include $(BUILD_SHARED_LIBRARY)
@@ -1141,13 +1477,21 @@
 
 LOCAL_MODULE := libc_malloc_debug_qemu
 LOCAL_CLANG := $(use_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(libc_common_additional_dependencies) \
+    $(LOCAL_PATH)/version_script.txt \
 
 LOCAL_SHARED_LIBRARIES := libc libdl
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
+# Don't re-export new/delete and friends, even if the compiler really wants to.
+LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/version_script.txt
+
 # Don't install on release build
 LOCAL_MODULE_TAGS := eng debug
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 include $(BUILD_SHARED_LIBRARY)
@@ -1164,26 +1508,36 @@
     bionic/libc_logging.cpp \
 
 include $(CLEAR_VARS)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
 LOCAL_CFLAGS := $(libc_common_cflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
+
+# TODO: This is to work around b/19059885. Remove after root cause is fixed
+LOCAL_LDFLAGS_arm := -Wl,--hash-style=sysv
+
 LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
 LOCAL_MODULE:= libstdc++
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 include $(BUILD_SHARED_LIBRARY)
 
 # ========================================================
 # libstdc++.a
 # ========================================================
 include $(CLEAR_VARS)
-LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
 LOCAL_CFLAGS := $(libc_common_cflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
 LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
 LOCAL_MODULE:= libstdc++
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 include $(BUILD_STATIC_LIBRARY)
 
 
diff --git a/libc/NOTICE b/libc/NOTICE
index 80d9a27..1fa31c2 100644
--- a/libc/NOTICE
+++ b/libc/NOTICE
@@ -1679,35 +1679,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 1990 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. 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.
-
--------------------------------------------------------------------
-
 Copyright (c) 1990 The Regents of the University of California.
 All rights reserved.
 
@@ -2511,35 +2482,6 @@
 -------------------------------------------------------------------
 
 Copyright (c) 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. 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.
-
--------------------------------------------------------------------
-
-Copyright (c) 1993
    The Regents of the University of California.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -2568,33 +2510,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 1993 Christopher G. Demetriou
-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. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 (c) 1993 Martin Birgmeier
 All rights reserved.
 
@@ -2714,63 +2629,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 1996-2004 Per Fogelstrom, Opsycon AB
-
-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 AUTHOR ``AS IS'' AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (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 (c) 1997 Mark Brinicombe
-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 Mark Brinicombe
-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 AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (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 (c) 1997 Mark Brinicombe
 Copyright (c) 2010 Android Open Source Project.
 All rights reserved.
@@ -3131,38 +2989,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 1999 Kungliga Tekniska Högskolan
-(Royal Institute of Technology, Stockholm, Sweden).
-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. Neither the name of KTH nor the names of its contributors may be
-   used to endorse or promote products derived from this software without
-   specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-
--------------------------------------------------------------------
-
 Copyright (c) 2000 Ben Harris.
 Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
 All rights reserved.
@@ -3426,34 +3252,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
-
-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. Neither the name of Opsycon AB nor the names of its contributors
-   may be used to endorse or promote products derived from this software
-   without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (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 (c) 2002 The NetBSD Foundation, Inc.
 All rights reserved.
 
@@ -4086,6 +3884,22 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
+
+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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
 Copyright (c) 2008 Todd C. Miller <millert@openbsd.org>
 
 Permission to use, copy, modify, and distribute this software for any
@@ -4422,6 +4236,39 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+
+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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+Copyright (c) 2009 Ted Unangst
+
+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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
 Copyright (c) 2011 The Android Open Source Project
 Copyright (c) 2008 ARM Ltd
 All rights reserved.
@@ -4639,35 +4486,32 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2013, Linaro Limited
-   All rights reserved.
+Copyright (c) 2013 The NetBSD Foundation, Inc.
+All rights reserved.
 
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
+This code is derived from software contributed to The NetBSD Foundation
+by Christos Zoulas.
 
-      * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
+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.
 
-      * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-      * Neither the name of Linaro Limited nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (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 SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
 
 -------------------------------------------------------------------
 
@@ -4853,6 +4697,42 @@
 
 -------------------------------------------------------------------
 
+Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
+Copyright 2008 Damien Miller <djm@openbsd.org>
+All rights reserved.
+
+Theo de Raadt <deraadt@openbsd.org> came up with the idea of using
+such a mathematical system to generate more random (yet non-repeating)
+ids to solve the resolver/named problem.  But Niels designed the
+actual system based on the constraints.
+
+Later modified by Damien Miller to wrap the LCG output in a 15-bit
+permutation generator based on a Luby-Rackoff block cipher. This
+ensures the output is non-repeating and preserves the MSB twiddle
+trick, but makes it more resistant to LCG prediction.
+
+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 AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 2000 David E. O'Brien, John D. Polstra.
 All rights reserved.
 
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index c3b7bab..33e30eb 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -95,13 +95,13 @@
 ssize_t     pread64|pread(int, void*, size_t, off_t) arm64,mips64,x86_64
 ssize_t     pwrite64(int, void*, size_t, off64_t) arm,mips,x86
 ssize_t     pwrite64|pwrite(int, void*, size_t, off_t) arm64,mips64,x86_64
-int         close(int)                      all
+int         ___close:close(int)  all
 pid_t       __getpid:getpid()  all
 int         munmap(void*, size_t)  all
 void*       mremap(void*, size_t, size_t, unsigned long)  all
 int         msync(const void*, size_t, int)    all
 int         mprotect(const void*, size_t, int)  all
-int         madvise(const void*, size_t, int)  all
+int         madvise(void*, size_t, int)  all
 int         mlock(const void* addr, size_t len)    all
 int         munlock(const void* addr, size_t len)   all
 int         mlockall(int flags)   all
@@ -113,7 +113,7 @@
 int         __fcntl64:fcntl64(int, int, void*)  arm,mips,x86
 int         fcntl(int, int, void*)  arm64,mips64,x86_64
 int         flock(int, int)   all
-int         fchmod(int, mode_t)  all
+int         ___fchmod:fchmod(int, mode_t)  all
 int         dup(int)  all
 int         pipe2(int*, int) all
 int         dup3(int, int, int)   all
@@ -130,11 +130,11 @@
 int __getdents64:getdents64(unsigned int, struct dirent*, unsigned int)   arm,arm64,mips,mips64,x86,x86_64
 
 int __openat:openat(int, const char*, int, mode_t) all
-int faccessat(int, const char*, int, int)  all
-int fchmodat(int, const char*, mode_t, int)  all
+int ___faccessat:faccessat(int, const char*, int)  all
+int ___fchmodat:fchmodat(int, const char*, mode_t)  all
 int fchownat(int, const char*, uid_t, gid_t, int)  all
 int fstatat64|fstatat:fstatat64(int, const char*, struct stat*, int)   arm,mips,x86
-int fstatat64|fstatat:newfstatat(int, const char*, struct stat*, int)  arm64,mips64,x86_64
+int fstatat64|fstatat:newfstatat(int, const char*, struct stat*, int)  arm64,x86_64
 int linkat(int, const char*, int, const char*, int)  all
 int mkdirat(int, const char*, mode_t)  all
 int mknodat(int, const char*, mode_t, dev_t)  all
@@ -174,12 +174,12 @@
 int __fadvise64:fadvise64(int, off64_t, off64_t, int) arm64,mips,mips64,x86_64
 
 int __fstatfs64:fstatfs64(int, size_t, struct statfs*)  arm,mips,x86
-int fstatfs64|fstatfs:fstatfs(int, struct statfs*)  arm64,mips64,x86_64
+int __fstatfs:fstatfs(int, struct statfs*)  arm64,mips64,x86_64
 int __statfs64:statfs64(const char*, size_t, struct statfs*)  arm,mips,x86
-int statfs64|statfs:statfs(const char*, struct statfs*)  arm64,mips64,x86_64
+int __statfs:statfs(const char*, struct statfs*)  arm64,mips64,x86_64
 
 int     fstat64|fstat:fstat64(int, struct stat*)    arm,mips,x86
-int     fstat64|fstat:fstat(int, struct stat*)    arm64,mips64,x86_64
+int     fstat64|fstat:fstat(int, struct stat*)    arm64,x86_64
 
 # file system
 int     chdir(const char*)              all
@@ -202,9 +202,9 @@
 int           settimeofday(const struct timeval*, const struct timezone*)   all
 clock_t       times(struct tms*)       all
 int           nanosleep(const struct timespec*, struct timespec*)   all
-int           clock_settime(clockid_t clk_id, const struct timespec* tp)  all
-int           clock_getres(clockid_t clk_id, struct timespec* res)   all
-int           clock_nanosleep(clockid_t clock_id, int flags, const struct timespec* req, struct timespec* rem)  all
+int           clock_settime(clockid_t, const struct timespec*)  all
+int           clock_getres(clockid_t, struct timespec*)   all
+int           __clock_nanosleep:clock_nanosleep(clockid_t, int, const struct timespec*, struct timespec*)  all
 int           getitimer(int, const struct itimerval*)   all
 int           setitimer(int, const struct itimerval*, struct itimerval*)  all
 int           __timer_create:timer_create(clockid_t clockid, struct sigevent* evp, __kernel_timer_t* timerid)    all
@@ -223,6 +223,7 @@
 int     __rt_sigprocmask:rt_sigprocmask(int, const sigset_t*, sigset_t*, size_t)  all
 int     __rt_sigsuspend:rt_sigsuspend(const sigset_t*, size_t)  all
 int     __rt_sigtimedwait:rt_sigtimedwait(const sigset_t*, struct siginfo_t*, struct timespec_t*, size_t)  all
+int     __rt_sigqueueinfo:rt_sigqueueinfo(pid_t, int, siginfo_t*)  all
 int     __signalfd4:signalfd4(int, const sigset_t*, size_t, int)  all
 
 # sockets
@@ -313,6 +314,8 @@
 int setfsgid(gid_t)  all
 int setfsuid(uid_t)  all
 
+int sethostname(const char*, size_t)  all
+
 pid_t wait4(pid_t, int*, int, struct rusage*)  all
 int __waitid:waitid(int, pid_t, struct siginfo_t*, int, void*)  all
 
@@ -321,7 +324,7 @@
 int     cacheflush:__ARM_NR_cacheflush(long start, long end, long flags)  arm
 
 # MIPS-specific
-int     _flush_cache:cacheflush(char* addr, const int nbytes, const int op) mips,mips64
+int     _flush_cache:cacheflush(char* addr, const int nbytes, const int op) mips
 int     __set_tls:set_thread_area(void*) mips,mips64
 
 # x86-specific
diff --git a/libc/arch-arm/arm.mk b/libc/arch-arm/arm.mk
index cca4ed0..6ef81bb 100644
--- a/libc/arch-arm/arm.mk
+++ b/libc/arch-arm/arm.mk
@@ -1,30 +1,10 @@
 # 32-bit arm.
 
 #
-# Various kinds of LP32 cruft.
-#
-
-libc_bionic_src_files_arm += \
-    bionic/mmap.cpp \
-
-libc_common_src_files_arm += \
-    bionic/legacy_32_bit_support.cpp \
-    bionic/ndk_cruft.cpp \
-    bionic/time64.c \
-
-libc_netbsd_src_files_arm += \
-    upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \
-
-libc_openbsd_src_files_arm += \
-    upstream-openbsd/lib/libc/stdio/putw.c \
-
-#
 # Default implementations of functions that are commonly optimized.
 #
 
 libc_bionic_src_files_arm += \
-    bionic/memchr.c \
-    bionic/memrchr.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
@@ -40,7 +20,8 @@
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
 libc_openbsd_src_files_arm += \
-    upstream-openbsd/lib/libc/string/bcopy.c \
+    upstream-openbsd/lib/libc/string/memchr.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strlcat.c \
     upstream-openbsd/lib/libc/string/strlcpy.c \
@@ -58,11 +39,9 @@
     arch-arm/bionic/__bionic_clone.S \
     arch-arm/bionic/_exit_with_stack_teardown.S \
     arch-arm/bionic/libgcc_compat.c \
-    arch-arm/bionic/memcmp.S \
+    arch-arm/bionic/libgcc_protect_unwind.c \
     arch-arm/bionic/__restore.S \
-    arch-arm/bionic/_setjmp.S \
     arch-arm/bionic/setjmp.S \
-    arch-arm/bionic/sigsetjmp.S \
     arch-arm/bionic/syscall.S \
 
 libc_arch_static_src_files_arm := arch-arm/bionic/exidx_static.c
diff --git a/libc/arch-arm/bionic/__aeabi.c b/libc/arch-arm/bionic/__aeabi.c
index 3254f64..254c7a6 100644
--- a/libc/arch-arm/bionic/__aeabi.c
+++ b/libc/arch-arm/bionic/__aeabi.c
@@ -39,6 +39,9 @@
 
 extern int __cxa_atexit(void (*)(void*), void*, void*);
 
+// All of these are weak symbols to avoid multiple definition errors when
+// linking with libstdc++-v3 or compiler-rt.
+
 /* The "C++ ABI for ARM" document states that static C++ constructors,
  * which are called from the .init_array, should manually call
  * __aeabi_atexit() to register static destructors explicitly.
@@ -47,35 +50,35 @@
  * variable from the shared object that contains the constructor/destructor
  */
 
-// Make this a weak symbol to avoid a multiple definition error when linking with libstdc++-v3.
 int __attribute__((weak))
 __aeabi_atexit(void *object, void (*destructor) (void *), void *dso_handle) {
     return __cxa_atexit(destructor, object, dso_handle);
 }
 
 
-void __aeabi_memcpy8(void *dest, const void *src, size_t n) {
+void __attribute__((weak))
+__aeabi_memcpy8(void *dest, const void *src, size_t n) {
     memcpy(dest, src, n);
 }
 
-void __aeabi_memcpy4(void *dest, const void *src, size_t n) {
+void __attribute__((weak)) __aeabi_memcpy4(void *dest, const void *src, size_t n) {
     memcpy(dest, src, n);
 }
 
-void __aeabi_memcpy(void *dest, const void *src, size_t n) {
+void __attribute__((weak)) __aeabi_memcpy(void *dest, const void *src, size_t n) {
     memcpy(dest, src, n);
 }
 
 
-void __aeabi_memmove8(void *dest, const void *src, size_t n) {
+void __attribute__((weak)) __aeabi_memmove8(void *dest, const void *src, size_t n) {
     memmove(dest, src, n);
 }
 
-void __aeabi_memmove4(void *dest, const void *src, size_t n) {
+void __attribute__((weak)) __aeabi_memmove4(void *dest, const void *src, size_t n) {
     memmove(dest, src, n);
 }
 
-void __aeabi_memmove(void *dest, const void *src, size_t n) {
+void __attribute__((weak)) __aeabi_memmove(void *dest, const void *src, size_t n) {
     memmove(dest, src, n);
 }
 
@@ -84,27 +87,27 @@
  *  This allows __aeabi_memclr to tail-call __aeabi_memset
  */
 
-void __aeabi_memset8(void *dest, size_t n, int c) {
+void __attribute__((weak)) __aeabi_memset8(void *dest, size_t n, int c) {
     memset(dest, c, n);
 }
 
-void __aeabi_memset4(void *dest, size_t n, int c) {
+void __attribute__((weak)) __aeabi_memset4(void *dest, size_t n, int c) {
     memset(dest, c, n);
 }
 
-void __aeabi_memset(void *dest, size_t n, int c) {
+void __attribute__((weak)) __aeabi_memset(void *dest, size_t n, int c) {
     memset(dest, c, n);
 }
 
 
-void __aeabi_memclr8(void *dest, size_t n) {
+void __attribute__((weak)) __aeabi_memclr8(void *dest, size_t n) {
     __aeabi_memset8(dest, n, 0);
 }
 
-void __aeabi_memclr4(void *dest, size_t n) {
+void __attribute__((weak)) __aeabi_memclr4(void *dest, size_t n) {
     __aeabi_memset4(dest, n, 0);
 }
 
-void __aeabi_memclr(void *dest, size_t n) {
+void __attribute__((weak)) __aeabi_memclr(void *dest, size_t n) {
     __aeabi_memset(dest, n, 0);
 }
diff --git a/libc/arch-arm/bionic/__bionic_clone.S b/libc/arch-arm/bionic/__bionic_clone.S
index f5cf9e0..a268f9d 100644
--- a/libc/arch-arm/bionic/__bionic_clone.S
+++ b/libc/arch-arm/bionic/__bionic_clone.S
@@ -42,13 +42,14 @@
     # load extra parameters
     ldmfd   ip, {r4, r5, r6}
 
-    # store 'fn' and 'arg' to the child stack
-    str     r5, [r1, #-4]
-    str     r6, [r1, #-8]
+    # Push 'fn' and 'arg' onto the child stack.
+    stmdb   r1!, {r5, r6}
 
-    # System call
+    # Make the system call.
     ldr     r7, =__NR_clone
     swi     #0
+
+    # Are we the child?
     movs    r0, r0
     beq     1f
 
@@ -62,8 +63,8 @@
 1:  # The child.
     # Setting lr to 0 will make the unwinder stop at __start_thread
     mov    lr, #0
-    ldr    r0, [sp, #-4]
-    ldr    r1, [sp, #-8]
+    # Call __start_thread with the 'fn' and 'arg' we stored on the child stack.
+    pop    {r0, r1}
     b      __start_thread
 END(__bionic_clone)
 .hidden __bionic_clone
diff --git a/libc/arch-arm/bionic/_setjmp.S b/libc/arch-arm/bionic/_setjmp.S
deleted file mode 100644
index 64a0a31..0000000
--- a/libc/arch-arm/bionic/_setjmp.S
+++ /dev/null
@@ -1,113 +0,0 @@
-/*	$OpenBSD: _setjmp.S,v 1.2 2004/02/01 05:40:52 drahn Exp $	*/
-/*	$NetBSD: _setjmp.S,v 1.5 2003/04/05 23:08:51 bjh21 Exp $	*/
-
-/*
- * Copyright (c) 1997 Mark Brinicombe
- * Copyright (c) 2010 Android Open Source Project.
- * 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 Mark Brinicombe
- * 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 AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 <private/bionic_asm.h>
-#include <machine/setjmp.h>
-#include <machine/cpu-features.h>
-
-/*
- * C library -- _setjmp, _longjmp
- *
- *	_longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	_setjmp(a)
- * by restoring registers from the stack.
- * The previous signal state is NOT restored.
- *
- * Note: r0 is the return value
- *       r1-r3 are scratch registers in functions
- */
-
-ENTRY(_setjmp)
-	ldr	r1, .L_setjmp_magic
-	str	r1, [r0, #(_JB_MAGIC * 4)]
-
-	/* Store core registers */
-	add     r1, r0, #(_JB_CORE_BASE * 4)
-	stmia   r1, {r4-r14}
-
-#ifdef __ARM_HAVE_VFP
-	/* Store floating-point registers */
-	add     r1, r0, #(_JB_FLOAT_BASE * 4)
-	vstmia  r1, {d8-d15}
-	/* Store floating-point state */
-	fmrx    r1, fpscr
-	str     r1, [r0, #(_JB_FLOAT_STATE * 4)]
-#endif  /* __ARM_HAVE_VFP */
-
-        mov	r0, #0x00000000
-        bx      lr
-END(_setjmp)
-
-.L_setjmp_magic:
-	.word	_JB_MAGIC__SETJMP
-
-ENTRY(_longjmp)
-	ldr	r2, .L_setjmp_magic
-	ldr	r3, [r0, #(_JB_MAGIC * 4)]
-	teq	r2, r3
-	bne	botch
-
-#ifdef __ARM_HAVE_VFP
-	/* Restore floating-point registers */
-	add     r2, r0, #(_JB_FLOAT_BASE * 4)
-	vldmia  r2, {d8-d15}
-	/* Restore floating-point state */
-	ldr     r2, [r0, #(_JB_FLOAT_STATE * 4)]
-	fmxr    fpscr, r2
-#endif /* __ARM_HAVE_VFP */
-
-	/* Restore core registers */
-	add     r2, r0, #(_JB_CORE_BASE * 4)
-	ldmia   r2, {r4-r14}
-
-	/* Validate sp and r14 */
-	teq	sp, #0
-	teqne	r14, #0
-	beq	botch
-
-	/* Set return value */
-	mov	r0, r1
-	teq	r0, #0x00000000
-	moveq	r0, #0x00000001
-	bx      lr
-
-	/* validation failed, die die die. */
-botch:
-	bl	PIC_SYM(longjmperror, PLT)
-	bl	PIC_SYM(abort, PLT)
-	b	. - 8		/* Cannot get here */
-END(_longjmp)
diff --git a/libc/arch-arm/bionic/abort_arm.S b/libc/arch-arm/bionic/abort_arm.S
index 6b181ef..1039502 100644
--- a/libc/arch-arm/bionic/abort_arm.S
+++ b/libc/arch-arm/bionic/abort_arm.S
@@ -40,5 +40,5 @@
     .cfi_def_cfa_offset 8
     .cfi_rel_offset r3, 0
     .cfi_rel_offset r14, 4
-    bl      PIC_SYM(__libc_android_abort, PLT)
+    bl      __libc_android_abort
 END(abort)
diff --git a/libc/arch-arm/bionic/libgcc_protect_unwind.c b/libc/arch-arm/bionic/libgcc_protect_unwind.c
new file mode 100644
index 0000000..6d758fc
--- /dev/null
+++ b/libc/arch-arm/bionic/libgcc_protect_unwind.c
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+
+// TODO: This file should go away once unwinder migration to libc++.so is complete.
+
+extern char _Unwind_Backtrace __attribute((visibility("protected")));
+extern char __gnu_Unwind_Find_exidx __attribute((visibility("protected")));
+extern char __gnu_Unwind_Restore_VFP_D __attribute((visibility("protected")));
+extern char __gnu_Unwind_Restore_VFP __attribute((visibility("protected")));
+extern char __gnu_Unwind_Restore_VFP_D_16_to_31 __attribute((visibility("protected")));
+extern char __gnu_Unwind_Restore_WMMXD __attribute((visibility("protected")));
+extern char __gnu_Unwind_Restore_WMMXC __attribute((visibility("protected")));
+extern char _Unwind_GetCFA __attribute((visibility("protected")));
+extern char __gnu_Unwind_RaiseException __attribute((visibility("protected")));
+extern char __gnu_Unwind_ForcedUnwind __attribute((visibility("protected")));
+extern char __gnu_Unwind_Resume __attribute((visibility("protected")));
+extern char __gnu_Unwind_Resume_or_Rethrow __attribute((visibility("protected")));
+extern char _Unwind_Complete __attribute((visibility("protected")));
+extern char _Unwind_DeleteException __attribute((visibility("protected")));
+extern char _Unwind_VRS_Get __attribute((visibility("protected")));
+extern char _Unwind_VRS_Set __attribute((visibility("protected")));
+extern char __gnu_Unwind_Backtrace __attribute((visibility("protected")));
+extern char _Unwind_VRS_Pop __attribute((visibility("protected")));
+extern char __gnu_Unwind_Save_VFP_D __attribute((visibility("protected")));
+extern char __gnu_Unwind_Save_VFP __attribute((visibility("protected")));
+extern char __gnu_Unwind_Save_VFP_D_16_to_31 __attribute((visibility("protected")));
+extern char __gnu_Unwind_Save_WMMXD __attribute((visibility("protected")));
+extern char __gnu_Unwind_Save_WMMXC __attribute((visibility("protected")));
+extern char ___Unwind_RaiseException __attribute((visibility("protected")));
+extern char _Unwind_RaiseException __attribute((visibility("protected")));
+extern char ___Unwind_Resume __attribute((visibility("protected")));
+extern char _Unwind_Resume __attribute((visibility("protected")));
+extern char ___Unwind_Resume_or_Rethrow __attribute((visibility("protected")));
+extern char _Unwind_Resume_or_Rethrow __attribute((visibility("protected")));
+extern char ___Unwind_ForcedUnwind __attribute((visibility("protected")));
+extern char _Unwind_ForcedUnwind __attribute((visibility("protected")));
+extern char ___Unwind_Backtrace __attribute((visibility("protected")));
+extern char _Unwind_GetRegionStart __attribute((visibility("protected")));
+extern char _Unwind_GetLanguageSpecificData __attribute((visibility("protected")));
+extern char _Unwind_GetDataRelBase __attribute((visibility("protected")));
+extern char _Unwind_GetTextRelBase __attribute((visibility("protected")));
+
+void* __bionic_libgcc_unwind_symbols[] = {
+    &_Unwind_Backtrace,
+    &__gnu_Unwind_Find_exidx,
+    &__gnu_Unwind_Restore_VFP_D,
+    &__gnu_Unwind_Restore_VFP,
+    &__gnu_Unwind_Restore_VFP_D_16_to_31,
+    &__gnu_Unwind_Restore_WMMXD,
+    &__gnu_Unwind_Restore_WMMXC,
+    &_Unwind_GetCFA,
+    &__gnu_Unwind_RaiseException,
+    &__gnu_Unwind_ForcedUnwind,
+    &__gnu_Unwind_Resume,
+    &__gnu_Unwind_Resume_or_Rethrow,
+    &_Unwind_Complete,
+    &_Unwind_DeleteException,
+    &_Unwind_VRS_Get,
+    &_Unwind_VRS_Set,
+    &__gnu_Unwind_Backtrace,
+    &_Unwind_VRS_Pop,
+    &__gnu_Unwind_Save_VFP_D,
+    &__gnu_Unwind_Save_VFP,
+    &__gnu_Unwind_Save_VFP_D_16_to_31,
+    &__gnu_Unwind_Save_WMMXD,
+    &__gnu_Unwind_Save_WMMXC,
+    &___Unwind_RaiseException,
+    &_Unwind_RaiseException,
+    &___Unwind_Resume,
+    &_Unwind_Resume,
+    &___Unwind_Resume_or_Rethrow,
+    &_Unwind_Resume_or_Rethrow,
+    &___Unwind_ForcedUnwind,
+    &_Unwind_ForcedUnwind,
+    &___Unwind_Backtrace,
+    &_Unwind_GetRegionStart,
+    &_Unwind_GetLanguageSpecificData,
+    &_Unwind_GetDataRelBase,
+    &_Unwind_GetTextRelBase,
+};
diff --git a/libc/arch-arm/bionic/memcpy.S b/libc/arch-arm/bionic/memcpy.S
deleted file mode 100644
index 2c9b10c..0000000
--- a/libc/arch-arm/bionic/memcpy.S
+++ /dev/null
@@ -1,686 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <machine/cpu-features.h>
-#include <private/bionic_asm.h>
-
-#if defined(__ARM_NEON__) && !defined(ARCH_ARM_USE_NON_NEON_MEMCPY)
-
-        .text
-        .fpu    neon
-
-#ifdef HAVE_32_BYTE_CACHE_LINE
-/* a prefetch distance of 2 cache-lines */
-#define CACHE_LINE_SIZE     32
-#else
-/* a prefetch distance of 4 cache-lines works best experimentally */
-#define CACHE_LINE_SIZE     64
-#endif
-
-ENTRY(memcpy)
-        .save       {r0, lr}
-        /* start preloading as early as possible */
-        pld         [r1, #(CACHE_LINE_SIZE * 0)]
-        stmfd       sp!, {r0, lr}
-        pld         [r1, #(CACHE_LINE_SIZE * 1)]
-
-/* If Neon supports unaligned access then remove the align code,
- * unless a size limit has been specified.
- */
-#ifndef NEON_UNALIGNED_ACCESS
-        /* do we have at least 16-bytes to copy (needed for alignment below) */
-        cmp         r2, #16
-        blo         5f
-
-        /* check if buffers are aligned. If so, run arm-only version */
-        eor         r3, r0, r1
-        ands        r3, r3, #0x3
-        beq         11f
-
-        /* align destination to cache-line for the write-buffer */
-        rsb         r3, r0, #0
-        ands        r3, r3, #0xF
-        beq         2f
-
-        /* copy up to 15-bytes (count in r3) */
-        sub         r2, r2, r3
-        movs        ip, r3, lsl #31
-        ldrmib      lr, [r1], #1
-        strmib      lr, [r0], #1
-        ldrcsb      ip, [r1], #1
-        ldrcsb      lr, [r1], #1
-        strcsb      ip, [r0], #1
-        strcsb      lr, [r0], #1
-        movs        ip, r3, lsl #29
-        bge         1f
-        // copies 4 bytes, destination 32-bits aligned
-        vld4.8      {d0[0], d1[0], d2[0], d3[0]}, [r1]!
-        vst4.8      {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]!
-1:      bcc         2f
-        // copies 8 bytes, destination 64-bits aligned
-        vld1.8      {d0}, [r1]!
-        vst1.8      {d0}, [r0, :64]!
-2:
-        /* preload immediately the next cache line, which we may need */
-        pld         [r1, #(CACHE_LINE_SIZE * 0)]
-        pld         [r1, #(CACHE_LINE_SIZE * 1)]
-
-#ifdef HAVE_32_BYTE_CACHE_LINE
-        /* make sure we have at least 32 bytes to copy */
-        subs        r2, r2, #32
-        blo         4f
-
-        /* preload all the cache lines we need.
-         * NOTE: the number of pld below depends on PREFETCH_DISTANCE,
-         * ideally would would increase the distance in the main loop to
-         * avoid the goofy code below. In practice this doesn't seem to make
-         * a big difference.
-         */
-        pld         [r1, #(PREFETCH_DISTANCE)]
-
-1:      /* The main loop copies 32 bytes at a time */
-        vld1.8      {d0  - d3},   [r1]!
-        pld         [r1, #(PREFETCH_DISTANCE)]
-        subs        r2, r2, #32
-        vst1.8      {d0  - d3},   [r0, :128]!
-        bhs         1b
-#else
-        /* make sure we have at least 64 bytes to copy */
-        subs        r2, r2, #64
-        blo         2f
-
-        /* preload all the cache lines we need. */
-        pld         [r1, #(CACHE_LINE_SIZE * 2)]
-        pld         [r1, #(CACHE_LINE_SIZE * 3)]
-
-1:      /* The main loop copies 64 bytes at a time */
-        vld1.8      {d0 - d3}, [r1]!
-        vld1.8      {d4 - d7}, [r1]!
-#ifdef  HAVE_32_BYTE_CACHE_LINE
-        pld         [r1, #(CACHE_LINE_SIZE * 2)]
-        pld         [r1, #(CACHE_LINE_SIZE * 3)]
-#else
-        pld         [r1, #(CACHE_LINE_SIZE * 3)]
-#endif
-        subs        r2, r2, #64
-        vst1.8      {d0 - d3}, [r0, :128]!
-        vst1.8      {d4 - d7}, [r0, :128]!
-        bhs         1b
-
-2:      /* fix-up the remaining count and make sure we have >= 32 bytes left */
-        add         r2, r2, #64
-        subs        r2, r2, #32
-        blo         4f
-
-3:      /* 32 bytes at a time. These cache lines were already preloaded */
-        vld1.8      {d0 - d3}, [r1]!
-        subs        r2, r2, #32
-        vst1.8      {d0 - d3}, [r0, :128]!
-        bhs         3b
-#endif
-4:      /* less than 32 left */
-        add         r2, r2, #32
-        tst         r2, #0x10
-        beq         5f
-        // copies 16 bytes, 128-bits aligned
-        vld1.8      {d0, d1}, [r1]!
-        vst1.8      {d0, d1}, [r0, :128]!
-5:      /* copy up to 15-bytes (count in r2) */
-        movs        ip, r2, lsl #29
-        bcc         1f
-        vld1.8      {d0}, [r1]!
-        vst1.8      {d0}, [r0]!
-1:      bge         2f
-        vld4.8      {d0[0], d1[0], d2[0], d3[0]}, [r1]!
-        vst4.8      {d0[0], d1[0], d2[0], d3[0]}, [r0]!
-2:      movs        ip, r2, lsl #31
-        ldrmib      r3, [r1], #1
-        ldrcsb      ip, [r1], #1
-        ldrcsb      lr, [r1], #1
-        strmib      r3, [r0], #1
-        strcsb      ip, [r0], #1
-        strcsb      lr, [r0], #1
-
-        ldmfd       sp!, {r0, lr}
-        bx          lr
-
-#else   /* NEON_UNALIGNED_ACCESS */
-
-        // Check so divider is at least 16 bytes, needed for alignment code.
-        cmp         r2, #16
-        blo         5f
-
-#ifdef NEON_MEMCPY_ALIGNMENT_DIVIDER
-        /* Check the upper size limit for Neon unaligned memory access in memcpy */
-#if NEON_MEMCPY_ALIGNMENT_DIVIDER >= 16
-        cmp         r2, #NEON_MEMCPY_ALIGNMENT_DIVIDER
-        blo         3f
-#endif
-        /* check if buffers are aligned. If so, run arm-only version */
-        eor         r3, r0, r1
-        ands        r3, r3, #0x3
-        beq         11f
-
-        /* align destination to 16 bytes for the write-buffer */
-        rsb         r3, r0, #0
-        ands        r3, r3, #0xF
-        beq         3f
-
-        /* copy up to 15-bytes (count in r3) */
-        sub         r2, r2, r3
-        movs        ip, r3, lsl #31
-        ldrmib      lr, [r1], #1
-        strmib      lr, [r0], #1
-        ldrcsb      ip, [r1], #1
-        ldrcsb      lr, [r1], #1
-        strcsb      ip, [r0], #1
-        strcsb      lr, [r0], #1
-        movs        ip, r3, lsl #29
-        bge         1f
-        // copies 4 bytes, destination 32-bits aligned
-        vld1.32     {d0[0]}, [r1]!
-        vst1.32     {d0[0]}, [r0, :32]!
-1:      bcc         2f
-        // copies 8 bytes, destination 64-bits aligned
-        vld1.8      {d0}, [r1]!
-        vst1.8      {d0}, [r0, :64]!
-2:
-        /* preload immediately the next cache line, which we may need */
-        pld         [r1, #(CACHE_LINE_SIZE * 0)]
-        pld         [r1, #(CACHE_LINE_SIZE * 1)]
-3:
-#endif
-        /* make sure we have at least 64 bytes to copy */
-        subs        r2, r2, #64
-        blo         2f
-
-        /* preload all the cache lines we need */
-        pld         [r1, #(CACHE_LINE_SIZE * 2)]
-        pld         [r1, #(CACHE_LINE_SIZE * 3)]
-
-1:      /* The main loop copies 64 bytes at a time */
-        vld1.8      {d0 - d3}, [r1]!
-        vld1.8      {d4 - d7}, [r1]!
-#ifdef  HAVE_32_BYTE_CACHE_LINE
-        pld         [r1, #(CACHE_LINE_SIZE * 2)]
-        pld         [r1, #(CACHE_LINE_SIZE * 3)]
-#else
-        pld         [r1, #(CACHE_LINE_SIZE * 3)]
-#endif
-        subs        r2, r2, #64
-        vst1.8      {d0 - d3}, [r0]!
-        vst1.8      {d4 - d7}, [r0]!
-        bhs         1b
-
-2:      /* fix-up the remaining count and make sure we have >= 32 bytes left */
-        add         r2, r2, #64
-        subs        r2, r2, #32
-        blo         4f
-
-3:      /* 32 bytes at a time. These cache lines were already preloaded */
-        vld1.8      {d0 - d3}, [r1]!
-        subs        r2, r2, #32
-        vst1.8      {d0 - d3}, [r0]!
-        bhs         3b
-
-4:      /* less than 32 left */
-        add         r2, r2, #32
-        tst         r2, #0x10
-        beq         5f
-        // copies 16 bytes, 128-bits aligned
-        vld1.8      {d0, d1}, [r1]!
-        vst1.8      {d0, d1}, [r0]!
-5:      /* copy up to 15-bytes (count in r2) */
-        movs        ip, r2, lsl #29
-        bcc         1f
-        vld1.8      {d0}, [r1]!
-        vst1.8      {d0}, [r0]!
-1:      bge         2f
-        vld1.32     {d0[0]}, [r1]!
-        vst1.32     {d0[0]}, [r0]!
-2:      movs        ip, r2, lsl #31
-        ldrmib      r3, [r1], #1
-        ldrcsb      ip, [r1], #1
-        ldrcsb      lr, [r1], #1
-        strmib      r3, [r0], #1
-        strcsb      ip, [r0], #1
-        strcsb      lr, [r0], #1
-
-        ldmfd       sp!, {r0, lr}
-        bx          lr
-#endif  /* NEON_UNALIGNED_ACCESS */
-11:
-        /* Simple arm-only copy loop to handle aligned copy operations */
-        stmfd       sp!, {r4, r5, r6, r7, r8}
-        pld         [r1, #(CACHE_LINE_SIZE * 2)]
-
-        /* Check alignment */
-        rsb         r3, r1, #0
-        ands        r3, #3
-        beq         2f
-
-        /* align source to 32 bits. We need to insert 2 instructions between
-         * a ldr[b|h] and str[b|h] because byte and half-word instructions
-         * stall 2 cycles.
-         */
-        movs        r12, r3, lsl #31
-        sub         r2, r2, r3      /* we know that r3 <= r2 because r2 >= 4 */
-        ldrmib      r3, [r1], #1
-        ldrcsb      r4, [r1], #1
-        ldrcsb      r5, [r1], #1
-        strmib      r3, [r0], #1
-        strcsb      r4, [r0], #1
-        strcsb      r5, [r0], #1
-2:
-        subs        r2, #32
-        blt         5f
-        pld         [r1, #(CACHE_LINE_SIZE * 3)]
-3:      /* Main copy loop, copying 32 bytes at a time */
-        pld         [r1, #(CACHE_LINE_SIZE * 4)]
-        ldmia       r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
-        subs        r2, r2, #32
-        stmia       r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
-        bge         3b
-5:      /* Handle any remaining bytes */
-        adds        r2, #32
-        beq         6f
-
-        movs        r12, r2, lsl #28
-        ldmcsia     r1!, {r3, r4, r5, r6}   /* 16 bytes */
-        ldmmiia     r1!, {r7, r8}           /*  8 bytes */
-        stmcsia     r0!, {r3, r4, r5, r6}
-        stmmiia     r0!, {r7, r8}
-        movs        r12, r2, lsl #30
-        ldrcs       r3, [r1], #4            /*  4 bytes */
-        ldrmih      r4, [r1], #2            /*  2 bytes */
-        strcs       r3, [r0], #4
-        strmih      r4, [r0], #2
-        tst         r2, #0x1
-        ldrneb      r3, [r1]                /*  last byte  */
-        strneb      r3, [r0]
-6:
-        ldmfd       sp!, {r4, r5, r6, r7, r8}
-        ldmfd       sp!, {r0, pc}
-END(memcpy)
-
-
-#else   /* __ARM_ARCH__ < 7 */
-
-
-		/*
-		 * Optimized memcpy() for ARM.
-         *
-		 * note that memcpy() always returns the destination pointer,
-		 * so we have to preserve R0.
-		 */
-
-ENTRY(memcpy)
-		/* The stack must always be 64-bits aligned to be compliant with the
-		 * ARM ABI. Since we have to save R0, we might as well save R4
-		 * which we can use for better pipelining of the reads below
-		 */
-        .save       {r0, r4, lr}
-        stmfd       sp!, {r0, r4, lr}
-        /* Making room for r5-r11 which will be spilled later */
-        .pad        #28
-        sub         sp, sp, #28
-
-        // preload the destination because we'll align it to a cache line
-        // with small writes. Also start the source "pump".
-        pld         [r0, #0]
-        pld         [r1, #0]
-        pld         [r1, #32]
-
-		/* it simplifies things to take care of len<4 early */
-		cmp			r2, #4
-		blo			copy_last_3_and_return
-
-		/* compute the offset to align the source
-		 * offset = (4-(src&3))&3 = -src & 3
-		 */
-		rsb			r3, r1, #0
-		ands		r3, r3, #3
-		beq			src_aligned
-
-		/* align source to 32 bits. We need to insert 2 instructions between
-		 * a ldr[b|h] and str[b|h] because byte and half-word instructions
-		 * stall 2 cycles.
-		 */
-		movs		r12, r3, lsl #31
-		sub			r2, r2, r3		/* we know that r3 <= r2 because r2 >= 4 */
-		ldrmib		r3, [r1], #1
-		ldrcsb		r4, [r1], #1
-		ldrcsb		r12,[r1], #1
-        strmib		r3, [r0], #1
-		strcsb		r4, [r0], #1
-		strcsb		r12,[r0], #1
-
-src_aligned:
-
-		/* see if src and dst are aligned together (congruent) */
-		eor			r12, r0, r1
-		tst			r12, #3
-		bne			non_congruent
-
-        /* Use post-incriment mode for stm to spill r5-r11 to reserved stack
-         * frame. Don't update sp.
-         */
-        stmea		sp, {r5-r11}
-
-		/* align the destination to a cache-line */
-		rsb         r3, r0, #0
-		ands		r3, r3, #0x1C
-		beq         congruent_aligned32
-		cmp         r3, r2
-		andhi		r3, r2, #0x1C
-
-		/* conditionnaly copies 0 to 7 words (length in r3) */
-		movs		r12, r3, lsl #28
-		ldmcsia		r1!, {r4, r5, r6, r7}	/* 16 bytes */
-		ldmmiia		r1!, {r8, r9}			/*  8 bytes */
-		stmcsia		r0!, {r4, r5, r6, r7}
-		stmmiia		r0!, {r8, r9}
-		tst         r3, #0x4
-		ldrne		r10,[r1], #4			/*  4 bytes */
-		strne		r10,[r0], #4
-		sub         r2, r2, r3
-
-congruent_aligned32:
-		/*
-		 * here source is aligned to 32 bytes.
-		 */
-
-cached_aligned32:
-        subs        r2, r2, #32
-        blo         less_than_32_left
-
-        /*
-         * We preload a cache-line up to 64 bytes ahead. On the 926, this will
-         * stall only until the requested world is fetched, but the linefill
-         * continues in the the background.
-         * While the linefill is going, we write our previous cache-line
-         * into the write-buffer (which should have some free space).
-         * When the linefill is done, the writebuffer will
-         * start dumping its content into memory
-         *
-         * While all this is going, we then load a full cache line into
-         * 8 registers, this cache line should be in the cache by now
-         * (or partly in the cache).
-         *
-         * This code should work well regardless of the source/dest alignment.
-         *
-         */
-
-        // Align the preload register to a cache-line because the cpu does
-        // "critical word first" (the first word requested is loaded first).
-        bic         r12, r1, #0x1F
-        add         r12, r12, #64
-
-1:      ldmia       r1!, { r4-r11 }
-        pld         [r12, #64]
-        subs        r2, r2, #32
-
-        // NOTE: if r12 is more than 64 ahead of r1, the following ldrhi
-        // for ARM9 preload will not be safely guarded by the preceding subs.
-        // When it is safely guarded the only possibility to have SIGSEGV here
-        // is because the caller overstates the length.
-        ldrhi       r3, [r12], #32      /* cheap ARM9 preload */
-        stmia       r0!, { r4-r11 }
-		bhs         1b
-
-        add         r2, r2, #32
-
-
-
-
-less_than_32_left:
-		/*
-		 * less than 32 bytes left at this point (length in r2)
-		 */
-
-		/* skip all this if there is nothing to do, which should
-		 * be a common case (if not executed the code below takes
-		 * about 16 cycles)
-		 */
-		tst			r2, #0x1F
-		beq			1f
-
-		/* conditionnaly copies 0 to 31 bytes */
-		movs		r12, r2, lsl #28
-		ldmcsia		r1!, {r4, r5, r6, r7}	/* 16 bytes */
-		ldmmiia		r1!, {r8, r9}			/*  8 bytes */
-		stmcsia		r0!, {r4, r5, r6, r7}
-		stmmiia		r0!, {r8, r9}
-		movs		r12, r2, lsl #30
-		ldrcs		r3, [r1], #4			/*  4 bytes */
-		ldrmih		r4, [r1], #2			/*  2 bytes */
-		strcs		r3, [r0], #4
-		strmih		r4, [r0], #2
-		tst         r2, #0x1
-		ldrneb		r3, [r1]				/*  last byte  */
-		strneb		r3, [r0]
-
-		/* we're done! restore everything and return */
-1:		ldmfd		sp!, {r5-r11}
-		ldmfd		sp!, {r0, r4, lr}
-		bx			lr
-
-		/********************************************************************/
-
-non_congruent:
-		/*
-		 * here source is aligned to 4 bytes
-		 * but destination is not.
-		 *
-		 * in the code below r2 is the number of bytes read
-		 * (the number of bytes written is always smaller, because we have
-		 * partial words in the shift queue)
-		 */
-		cmp			r2, #4
-		blo			copy_last_3_and_return
-
-        /* Use post-incriment mode for stm to spill r5-r11 to reserved stack
-         * frame. Don't update sp.
-         */
-        stmea		sp, {r5-r11}
-
-		/* compute shifts needed to align src to dest */
-		rsb			r5, r0, #0
-		and			r5, r5, #3			/* r5 = # bytes in partial words */
-		mov			r12, r5, lsl #3		/* r12 = right */
-		rsb			lr, r12, #32		/* lr = left  */
-
-		/* read the first word */
-		ldr			r3, [r1], #4
-		sub			r2, r2, #4
-
-		/* write a partial word (0 to 3 bytes), such that destination
-		 * becomes aligned to 32 bits (r5 = nb of words to copy for alignment)
-		 */
-		movs		r5, r5, lsl #31
-		strmib		r3, [r0], #1
-		movmi		r3, r3, lsr #8
-		strcsb		r3, [r0], #1
-		movcs		r3, r3, lsr #8
-		strcsb		r3, [r0], #1
-		movcs		r3, r3, lsr #8
-
-		cmp			r2, #4
-		blo			partial_word_tail
-
-		/* Align destination to 32 bytes (cache line boundary) */
-1:		tst			r0, #0x1c
-		beq			2f
-		ldr			r5, [r1], #4
-		sub         r2, r2, #4
-		orr			r4, r3, r5,		lsl lr
-		mov			r3, r5,			lsr r12
-		str			r4, [r0], #4
-        cmp         r2, #4
-		bhs			1b
-		blo			partial_word_tail
-
-		/* copy 32 bytes at a time */
-2:		subs		r2, r2, #32
-		blo			less_than_thirtytwo
-
-		/* Use immediate mode for the shifts, because there is an extra cycle
-		 * for register shifts, which could account for up to 50% of
-		 * performance hit.
-		 */
-
-        cmp			r12, #24
-		beq			loop24
-		cmp			r12, #8
-		beq			loop8
-
-loop16:
-        ldr         r12, [r1], #4
-1:      mov         r4, r12
-		ldmia		r1!, {   r5,r6,r7,  r8,r9,r10,r11}
-        pld         [r1, #64]
-        subs        r2, r2, #32
-        ldrhs       r12, [r1], #4
-		orr			r3, r3, r4,		lsl #16
-		mov			r4, r4,			lsr #16
-		orr			r4, r4, r5,		lsl #16
-		mov			r5, r5,			lsr #16
-		orr			r5, r5, r6,		lsl #16
-		mov			r6, r6,			lsr #16
-		orr			r6, r6, r7,		lsl #16
-		mov			r7, r7,			lsr #16
-		orr			r7, r7, r8,		lsl #16
-		mov			r8, r8,			lsr #16
-		orr			r8, r8, r9,		lsl #16
-		mov			r9, r9,			lsr #16
-		orr			r9, r9, r10,	lsl #16
-		mov			r10, r10,		lsr #16
-		orr			r10, r10, r11,	lsl #16
-		stmia		r0!, {r3,r4,r5,r6, r7,r8,r9,r10}
-		mov			r3, r11,		lsr #16
-		bhs			1b
-		b			less_than_thirtytwo
-
-loop8:
-        ldr         r12, [r1], #4
-1:      mov         r4, r12
-		ldmia		r1!, {   r5,r6,r7,  r8,r9,r10,r11}
-        pld         [r1, #64]
-		subs		r2, r2, #32
-        ldrhs       r12, [r1], #4
-		orr			r3, r3, r4,		lsl #24
-		mov			r4, r4,			lsr #8
-		orr			r4, r4, r5,		lsl #24
-		mov			r5, r5,			lsr #8
-		orr			r5, r5, r6,		lsl #24
-		mov			r6, r6,			lsr #8
-		orr			r6, r6, r7,		lsl #24
-		mov			r7, r7,			lsr #8
-		orr			r7, r7, r8,		lsl #24
-		mov			r8, r8,			lsr #8
-		orr			r8, r8, r9,		lsl #24
-		mov			r9, r9,			lsr #8
-		orr			r9, r9, r10,	lsl #24
-		mov			r10, r10,		lsr #8
-		orr			r10, r10, r11,	lsl #24
-		stmia		r0!, {r3,r4,r5,r6, r7,r8,r9,r10}
-		mov			r3, r11,		lsr #8
-		bhs			1b
-		b			less_than_thirtytwo
-
-loop24:
-        ldr         r12, [r1], #4
-1:      mov         r4, r12
-		ldmia		r1!, {   r5,r6,r7,  r8,r9,r10,r11}
-        pld         [r1, #64]
-		subs		r2, r2, #32
-        ldrhs       r12, [r1], #4
-		orr			r3, r3, r4,		lsl #8
-		mov			r4, r4,			lsr #24
-		orr			r4, r4, r5,		lsl #8
-		mov			r5, r5,			lsr #24
-		orr			r5, r5, r6,		lsl #8
-		mov			r6, r6,			lsr #24
-		orr			r6, r6, r7,		lsl #8
-		mov			r7, r7,			lsr #24
-		orr			r7, r7, r8,		lsl #8
-		mov			r8, r8,			lsr #24
-		orr			r8, r8, r9,		lsl #8
-		mov			r9, r9,			lsr #24
-		orr			r9, r9, r10,	lsl #8
-		mov			r10, r10,		lsr #24
-		orr			r10, r10, r11,	lsl #8
-		stmia		r0!, {r3,r4,r5,r6, r7,r8,r9,r10}
-		mov			r3, r11,		lsr #24
-		bhs			1b
-
-
-less_than_thirtytwo:
-		/* copy the last 0 to 31 bytes of the source */
-		rsb			r12, lr, #32		/* we corrupted r12, recompute it  */
-		add			r2, r2, #32
-		cmp			r2, #4
-		blo			partial_word_tail
-
-1:		ldr			r5, [r1], #4
-		sub         r2, r2, #4
-		orr			r4, r3, r5,		lsl lr
-		mov			r3,	r5,			lsr r12
-		str			r4, [r0], #4
-        cmp         r2, #4
-		bhs			1b
-
-partial_word_tail:
-		/* we have a partial word in the input buffer */
-		movs		r5, lr, lsl #(31-3)
-		strmib		r3, [r0], #1
-		movmi		r3, r3, lsr #8
-		strcsb		r3, [r0], #1
-		movcs		r3, r3, lsr #8
-		strcsb		r3, [r0], #1
-
-		/* Refill spilled registers from the stack. Don't update sp. */
-		ldmfd		sp, {r5-r11}
-
-copy_last_3_and_return:
-		movs		r2, r2, lsl #31	/* copy remaining 0, 1, 2 or 3 bytes */
-		ldrmib		r2, [r1], #1
-		ldrcsb		r3, [r1], #1
-		ldrcsb		r12,[r1]
-		strmib		r2, [r0], #1
-		strcsb		r3, [r0], #1
-		strcsb		r12,[r0]
-
-        /* we're done! restore sp and spilled registers and return */
-        add         sp,  sp, #28
-		ldmfd		sp!, {r0, r4, lr}
-		bx			lr
-END(memcpy)
-
-
-#endif    /* __ARM_ARCH__ < 7 */
diff --git a/libc/arch-arm/bionic/memcpy.a9.S b/libc/arch-arm/bionic/memcpy.a9.S
deleted file mode 100644
index 259701d..0000000
--- a/libc/arch-arm/bionic/memcpy.a9.S
+++ /dev/null
@@ -1,614 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-      * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-      * Neither the name of Linaro Limited nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (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 memcpy routine is optimised for Cortex-A15 cores and takes advantage
-   of VFP or NEON when built with the appropriate flags.
-
-   Assumptions:
-
-    ARMv6 (ARMv7-a if using Neon)
-    ARM state
-    Unaligned accesses
-    LDRD/STRD support unaligned word accesses
-
- */
-
-#include <machine/cpu-features.h>
-#include <private/bionic_asm.h>
-
-	.syntax unified
-	/* This implementation requires ARM state.  */
-	.arm
-
-#ifdef __ARM_NEON__
-
-	.fpu	neon
-	.arch	armv7-a
-# define FRAME_SIZE	4
-# define USE_VFP
-# define USE_NEON
-
-#elif !defined (__SOFTFP__)
-
-	.arch	armv6
-	.fpu	vfpv2
-# define FRAME_SIZE	32
-# define USE_VFP
-
-#else
-	.arch	armv6
-# define FRAME_SIZE    32
-
-#endif
-
-/* Old versions of GAS incorrectly implement the NEON align semantics.  */
-#ifdef BROKEN_ASM_NEON_ALIGN
-#define ALIGN(addr, align) addr,:align
-#else
-#define ALIGN(addr, align) addr:align
-#endif
-
-#define PC_OFFSET	8	/* PC pipeline compensation.  */
-#define INSN_SIZE	4
-
-/* Call parameters.  */
-#define dstin	r0
-#define src	r1
-#define count	r2
-
-/* Locals.  */
-#define tmp1	r3
-#define dst	ip
-#define tmp2	r10
-
-#ifndef USE_NEON
-/* For bulk copies using GP registers.  */
-#define	A_l	r2		/* Call-clobbered.  */
-#define	A_h	r3		/* Call-clobbered.  */
-#define	B_l	r4
-#define	B_h	r5
-#define	C_l	r6
-#define	C_h	r7
-#define	D_l	r8
-#define	D_h	r9
-#endif
-
-/* Number of lines ahead to pre-fetch data.  If you change this the code
-   below will need adjustment to compensate.  */
-
-#define prefetch_lines	5
-
-#ifdef USE_VFP
-	.macro	cpy_line_vfp vreg, base
-	vstr	\vreg, [dst, #\base]
-	vldr	\vreg, [src, #\base]
-	vstr	d0, [dst, #\base + 8]
-	vldr	d0, [src, #\base + 8]
-	vstr	d1, [dst, #\base + 16]
-	vldr	d1, [src, #\base + 16]
-	vstr	d2, [dst, #\base + 24]
-	vldr	d2, [src, #\base + 24]
-	vstr	\vreg, [dst, #\base + 32]
-	vldr	\vreg, [src, #\base + prefetch_lines * 64 - 32]
-	vstr	d0, [dst, #\base + 40]
-	vldr	d0, [src, #\base + 40]
-	vstr	d1, [dst, #\base + 48]
-	vldr	d1, [src, #\base + 48]
-	vstr	d2, [dst, #\base + 56]
-	vldr	d2, [src, #\base + 56]
-	.endm
-
-	.macro	cpy_tail_vfp vreg, base
-	vstr	\vreg, [dst, #\base]
-	vldr	\vreg, [src, #\base]
-	vstr	d0, [dst, #\base + 8]
-	vldr	d0, [src, #\base + 8]
-	vstr	d1, [dst, #\base + 16]
-	vldr	d1, [src, #\base + 16]
-	vstr	d2, [dst, #\base + 24]
-	vldr	d2, [src, #\base + 24]
-	vstr	\vreg, [dst, #\base + 32]
-	vstr	d0, [dst, #\base + 40]
-	vldr	d0, [src, #\base + 40]
-	vstr	d1, [dst, #\base + 48]
-	vldr	d1, [src, #\base + 48]
-	vstr	d2, [dst, #\base + 56]
-	vldr	d2, [src, #\base + 56]
-	.endm
-#endif
-
-	.p2align 6
-ENTRY(memcpy)
-
-	mov	dst, dstin	/* Preserve dstin, we need to return it.  */
-	cmp	count, #64
-	bge	.Lcpy_not_short
-	/* Deal with small copies quickly by dropping straight into the
-	   exit block.  */
-
-.Ltail63unaligned:
-#ifdef USE_NEON
-	and	tmp1, count, #0x38
-	rsb	tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE)
-	add	pc, pc, tmp1
-	vld1.8	{d0}, [src]!	/* 14 words to go.  */
-	vst1.8	{d0}, [dst]!
-	vld1.8	{d0}, [src]!	/* 12 words to go.  */
-	vst1.8	{d0}, [dst]!
-	vld1.8	{d0}, [src]!	/* 10 words to go.  */
-	vst1.8	{d0}, [dst]!
-	vld1.8	{d0}, [src]!	/* 8 words to go.  */
-	vst1.8	{d0}, [dst]!
-	vld1.8	{d0}, [src]!	/* 6 words to go.  */
-	vst1.8	{d0}, [dst]!
-	vld1.8	{d0}, [src]!	/* 4 words to go.  */
-	vst1.8	{d0}, [dst]!
-	vld1.8	{d0}, [src]!	/* 2 words to go.  */
-	vst1.8	{d0}, [dst]!
-
-	tst	count, #4
-	ldrne	tmp1, [src], #4
-	strne	tmp1, [dst], #4
-#else
-	/* Copy up to 15 full words of data.  May not be aligned.  */
-	/* Cannot use VFP for unaligned data.  */
-	and	tmp1, count, #0x3c
-	add	dst, dst, tmp1
-	add	src, src, tmp1
-	rsb	tmp1, tmp1, #(60 - PC_OFFSET/2 + INSN_SIZE/2)
-	/* Jump directly into the sequence below at the correct offset.  */
-	add	pc, pc, tmp1, lsl #1
-
-	ldr	tmp1, [src, #-60]	/* 15 words to go.  */
-	str	tmp1, [dst, #-60]
-
-	ldr	tmp1, [src, #-56]	/* 14 words to go.  */
-	str	tmp1, [dst, #-56]
-	ldr	tmp1, [src, #-52]
-	str	tmp1, [dst, #-52]
-
-	ldr	tmp1, [src, #-48]	/* 12 words to go.  */
-	str	tmp1, [dst, #-48]
-	ldr	tmp1, [src, #-44]
-	str	tmp1, [dst, #-44]
-
-	ldr	tmp1, [src, #-40]	/* 10 words to go.  */
-	str	tmp1, [dst, #-40]
-	ldr	tmp1, [src, #-36]
-	str	tmp1, [dst, #-36]
-
-	ldr	tmp1, [src, #-32]	/* 8 words to go.  */
-	str	tmp1, [dst, #-32]
-	ldr	tmp1, [src, #-28]
-	str	tmp1, [dst, #-28]
-
-	ldr	tmp1, [src, #-24]	/* 6 words to go.  */
-	str	tmp1, [dst, #-24]
-	ldr	tmp1, [src, #-20]
-	str	tmp1, [dst, #-20]
-
-	ldr	tmp1, [src, #-16]	/* 4 words to go.  */
-	str	tmp1, [dst, #-16]
-	ldr	tmp1, [src, #-12]
-	str	tmp1, [dst, #-12]
-
-	ldr	tmp1, [src, #-8]	/* 2 words to go.  */
-	str	tmp1, [dst, #-8]
-	ldr	tmp1, [src, #-4]
-	str	tmp1, [dst, #-4]
-#endif
-
-	lsls	count, count, #31
-	ldrhcs	tmp1, [src], #2
-	ldrbne	src, [src]		/* Src is dead, use as a scratch.  */
-	strhcs	tmp1, [dst], #2
-	strbne	src, [dst]
-	bx	lr
-
-.Lcpy_not_short:
-	/* At least 64 bytes to copy, but don't know the alignment yet.  */
-	str	tmp2, [sp, #-FRAME_SIZE]!
-	and	tmp2, src, #7
-	and	tmp1, dst, #7
-	cmp	tmp1, tmp2
-	bne	.Lcpy_notaligned
-
-#ifdef USE_VFP
-	/* Magic dust alert!  Force VFP on Cortex-A9.  Experiments show
-	   that the FP pipeline is much better at streaming loads and
-	   stores.  This is outside the critical loop.  */
-	vmov.f32	s0, s0
-#endif
-
-	/* SRC and DST have the same mutual 32-bit alignment, but we may
-	   still need to pre-copy some bytes to get to natural alignment.
-	   We bring DST into full 64-bit alignment.  */
-	lsls	tmp2, dst, #29
-	beq	1f
-	rsbs	tmp2, tmp2, #0
-	sub	count, count, tmp2, lsr #29
-	ldrmi	tmp1, [src], #4
-	strmi	tmp1, [dst], #4
-	lsls	tmp2, tmp2, #2
-	ldrhcs	tmp1, [src], #2
-	ldrbne	tmp2, [src], #1
-	strhcs	tmp1, [dst], #2
-	strbne	tmp2, [dst], #1
-
-1:
-	subs	tmp2, count, #64	/* Use tmp2 for count.  */
-	blt	.Ltail63aligned
-
-	cmp	tmp2, #512
-	bge	.Lcpy_body_long
-
-.Lcpy_body_medium:			/* Count in tmp2.  */
-#ifdef USE_VFP
-1:
-	vldr	d0, [src, #0]
-	subs	tmp2, tmp2, #64
-	vldr	d1, [src, #8]
-	vstr	d0, [dst, #0]
-	vldr	d0, [src, #16]
-	vstr	d1, [dst, #8]
-	vldr	d1, [src, #24]
-	vstr	d0, [dst, #16]
-	vldr	d0, [src, #32]
-	vstr	d1, [dst, #24]
-	vldr	d1, [src, #40]
-	vstr	d0, [dst, #32]
-	vldr	d0, [src, #48]
-	vstr	d1, [dst, #40]
-	vldr	d1, [src, #56]
-	vstr	d0, [dst, #48]
-	add	src, src, #64
-	vstr	d1, [dst, #56]
-	add	dst, dst, #64
-	bge	1b
-	tst	tmp2, #0x3f
-	beq	.Ldone
-
-.Ltail63aligned:			/* Count in tmp2.  */
-	and	tmp1, tmp2, #0x38
-	add	dst, dst, tmp1
-	add	src, src, tmp1
-	rsb	tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE)
-	add	pc, pc, tmp1
-
-	vldr	d0, [src, #-56]	/* 14 words to go.  */
-	vstr	d0, [dst, #-56]
-	vldr	d0, [src, #-48]	/* 12 words to go.  */
-	vstr	d0, [dst, #-48]
-	vldr	d0, [src, #-40]	/* 10 words to go.  */
-	vstr	d0, [dst, #-40]
-	vldr	d0, [src, #-32]	/* 8 words to go.  */
-	vstr	d0, [dst, #-32]
-	vldr	d0, [src, #-24]	/* 6 words to go.  */
-	vstr	d0, [dst, #-24]
-	vldr	d0, [src, #-16]	/* 4 words to go.  */
-	vstr	d0, [dst, #-16]
-	vldr	d0, [src, #-8]	/* 2 words to go.  */
-	vstr	d0, [dst, #-8]
-#else
-	sub	src, src, #8
-	sub	dst, dst, #8
-1:
-	ldrd	A_l, A_h, [src, #8]
-	strd	A_l, A_h, [dst, #8]
-	ldrd	A_l, A_h, [src, #16]
-	strd	A_l, A_h, [dst, #16]
-	ldrd	A_l, A_h, [src, #24]
-	strd	A_l, A_h, [dst, #24]
-	ldrd	A_l, A_h, [src, #32]
-	strd	A_l, A_h, [dst, #32]
-	ldrd	A_l, A_h, [src, #40]
-	strd	A_l, A_h, [dst, #40]
-	ldrd	A_l, A_h, [src, #48]
-	strd	A_l, A_h, [dst, #48]
-	ldrd	A_l, A_h, [src, #56]
-	strd	A_l, A_h, [dst, #56]
-	ldrd	A_l, A_h, [src, #64]!
-	strd	A_l, A_h, [dst, #64]!
-	subs	tmp2, tmp2, #64
-	bge	1b
-	tst	tmp2, #0x3f
-	bne	1f
-	ldr	tmp2,[sp], #FRAME_SIZE
-	bx	lr
-1:
-	add	src, src, #8
-	add	dst, dst, #8
-
-.Ltail63aligned:			/* Count in tmp2.  */
-	/* Copy up to 7 d-words of data.  Similar to Ltail63unaligned, but
-	   we know that the src and dest are 32-bit aligned so we can use
-	   LDRD/STRD to improve efficiency.  */
-	/* TMP2 is now negative, but we don't care about that.  The bottom
-	   six bits still tell us how many bytes are left to copy.  */
-
-	and	tmp1, tmp2, #0x38
-	add	dst, dst, tmp1
-	add	src, src, tmp1
-	rsb	tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE)
-	add	pc, pc, tmp1
-	ldrd	A_l, A_h, [src, #-56]	/* 14 words to go.  */
-	strd	A_l, A_h, [dst, #-56]
-	ldrd	A_l, A_h, [src, #-48]	/* 12 words to go.  */
-	strd	A_l, A_h, [dst, #-48]
-	ldrd	A_l, A_h, [src, #-40]	/* 10 words to go.  */
-	strd	A_l, A_h, [dst, #-40]
-	ldrd	A_l, A_h, [src, #-32]	/* 8 words to go.  */
-	strd	A_l, A_h, [dst, #-32]
-	ldrd	A_l, A_h, [src, #-24]	/* 6 words to go.  */
-	strd	A_l, A_h, [dst, #-24]
-	ldrd	A_l, A_h, [src, #-16]	/* 4 words to go.  */
-	strd	A_l, A_h, [dst, #-16]
-	ldrd	A_l, A_h, [src, #-8]	/* 2 words to go.  */
-	strd	A_l, A_h, [dst, #-8]
-
-#endif
-	tst	tmp2, #4
-	ldrne	tmp1, [src], #4
-	strne	tmp1, [dst], #4
-	lsls	tmp2, tmp2, #31		/* Count (tmp2) now dead. */
-	ldrhcs	tmp1, [src], #2
-	ldrbne	tmp2, [src]
-	strhcs	tmp1, [dst], #2
-	strbne	tmp2, [dst]
-
-.Ldone:
-	ldr	tmp2, [sp], #FRAME_SIZE
-	bx	lr
-
-.Lcpy_body_long:			/* Count in tmp2.  */
-
-	/* Long copy.  We know that there's at least (prefetch_lines * 64)
-	   bytes to go.  */
-#ifdef USE_VFP
-	/* Don't use PLD.  Instead, read some data in advance of the current
-	   copy position into a register.  This should act like a PLD
-	   operation but we won't have to repeat the transfer.  */
-
-	vldr	d3, [src, #0]
-	vldr	d4, [src, #64]
-	vldr	d5, [src, #128]
-	vldr	d6, [src, #192]
-	vldr	d7, [src, #256]
-
-	vldr	d0, [src, #8]
-	vldr	d1, [src, #16]
-	vldr	d2, [src, #24]
-	add	src, src, #32
-
-	subs	tmp2, tmp2, #prefetch_lines * 64 * 2
-	blt	2f
-1:
-	cpy_line_vfp	d3, 0
-	cpy_line_vfp	d4, 64
-	cpy_line_vfp	d5, 128
-	add	dst, dst, #3 * 64
-	add	src, src, #3 * 64
-	cpy_line_vfp	d6, 0
-	cpy_line_vfp	d7, 64
-	add	dst, dst, #2 * 64
-	add	src, src, #2 * 64
-	subs	tmp2, tmp2, #prefetch_lines * 64
-	bge	1b
-
-2:
-	cpy_tail_vfp	d3, 0
-	cpy_tail_vfp	d4, 64
-	cpy_tail_vfp	d5, 128
-	add	src, src, #3 * 64
-	add	dst, dst, #3 * 64
-	cpy_tail_vfp	d6, 0
-	vstr	d7, [dst, #64]
-	vldr	d7, [src, #64]
-	vstr	d0, [dst, #64 + 8]
-	vldr	d0, [src, #64 + 8]
-	vstr	d1, [dst, #64 + 16]
-	vldr	d1, [src, #64 + 16]
-	vstr	d2, [dst, #64 + 24]
-	vldr	d2, [src, #64 + 24]
-	vstr	d7, [dst, #64 + 32]
-	add	src, src, #96
-	vstr	d0, [dst, #64 + 40]
-	vstr	d1, [dst, #64 + 48]
-	vstr	d2, [dst, #64 + 56]
-	add	dst, dst, #128
-	add	tmp2, tmp2, #prefetch_lines * 64
-	b	.Lcpy_body_medium
-#else
-	/* Long copy.  Use an SMS style loop to maximize the I/O
-	   bandwidth of the core.  We don't have enough spare registers
-	   to synthesise prefetching, so use PLD operations.  */
-	/* Pre-bias src and dst.  */
-	sub	src, src, #8
-	sub	dst, dst, #8
-	pld	[src, #8]
-	pld	[src, #72]
-	subs	tmp2, tmp2, #64
-	pld	[src, #136]
-	ldrd	A_l, A_h, [src, #8]
-	strd	B_l, B_h, [sp, #8]
-	ldrd	B_l, B_h, [src, #16]
-	strd	C_l, C_h, [sp, #16]
-	ldrd	C_l, C_h, [src, #24]
-	strd	D_l, D_h, [sp, #24]
-	pld	[src, #200]
-	ldrd	D_l, D_h, [src, #32]!
-	b	1f
-	.p2align	6
-2:
-	pld	[src, #232]
-	strd	A_l, A_h, [dst, #40]
-	ldrd	A_l, A_h, [src, #40]
-	strd	B_l, B_h, [dst, #48]
-	ldrd	B_l, B_h, [src, #48]
-	strd	C_l, C_h, [dst, #56]
-	ldrd	C_l, C_h, [src, #56]
-	strd	D_l, D_h, [dst, #64]!
-	ldrd	D_l, D_h, [src, #64]!
-	subs	tmp2, tmp2, #64
-1:
-	strd	A_l, A_h, [dst, #8]
-	ldrd	A_l, A_h, [src, #8]
-	strd	B_l, B_h, [dst, #16]
-	ldrd	B_l, B_h, [src, #16]
-	strd	C_l, C_h, [dst, #24]
-	ldrd	C_l, C_h, [src, #24]
-	strd	D_l, D_h, [dst, #32]
-	ldrd	D_l, D_h, [src, #32]
-	bcs	2b
-	/* Save the remaining bytes and restore the callee-saved regs.  */
-	strd	A_l, A_h, [dst, #40]
-	add	src, src, #40
-	strd	B_l, B_h, [dst, #48]
-	ldrd	B_l, B_h, [sp, #8]
-	strd	C_l, C_h, [dst, #56]
-	ldrd	C_l, C_h, [sp, #16]
-	strd	D_l, D_h, [dst, #64]
-	ldrd	D_l, D_h, [sp, #24]
-	add	dst, dst, #72
-	tst	tmp2, #0x3f
-	bne	.Ltail63aligned
-	ldr	tmp2, [sp], #FRAME_SIZE
-	bx	lr
-#endif
-
-.Lcpy_notaligned:
-	pld	[src]
-	pld	[src, #64]
-	/* There's at least 64 bytes to copy, but there is no mutual
-	   alignment.  */
-	/* Bring DST to 64-bit alignment.  */
-	lsls	tmp2, dst, #29
-	pld	[src, #(2 * 64)]
-	beq	1f
-	rsbs	tmp2, tmp2, #0
-	sub	count, count, tmp2, lsr #29
-	ldrmi	tmp1, [src], #4
-	strmi	tmp1, [dst], #4
-	lsls	tmp2, tmp2, #2
-	ldrbne	tmp1, [src], #1
-	ldrhcs	tmp2, [src], #2
-	strbne	tmp1, [dst], #1
-	strhcs	tmp2, [dst], #2
-1:
-	pld	[src, #(3 * 64)]
-	subs	count, count, #64
-	ldrmi	tmp2, [sp], #FRAME_SIZE
-	bmi	.Ltail63unaligned
-	pld	[src, #(4 * 64)]
-
-#ifdef USE_NEON
-	vld1.8	{d0-d3}, [src]!
-	vld1.8	{d4-d7}, [src]!
-	subs	count, count, #64
-	bmi	2f
-1:
-	pld	[src, #(4 * 64)]
-	vst1.8	{d0-d3}, [ALIGN (dst, 64)]!
-	vld1.8	{d0-d3}, [src]!
-	vst1.8	{d4-d7}, [ALIGN (dst, 64)]!
-	vld1.8	{d4-d7}, [src]!
-	subs	count, count, #64
-	bpl	1b
-2:
-	vst1.8	{d0-d3}, [ALIGN (dst, 64)]!
-	vst1.8	{d4-d7}, [ALIGN (dst, 64)]!
-	ands	count, count, #0x3f
-#else
-	/* Use an SMS style loop to maximize the I/O bandwidth.  */
-	sub	src, src, #4
-	sub	dst, dst, #8
-	subs	tmp2, count, #64	/* Use tmp2 for count.  */
-	ldr	A_l, [src, #4]
-	ldr	A_h, [src, #8]
-	strd	B_l, B_h, [sp, #8]
-	ldr	B_l, [src, #12]
-	ldr	B_h, [src, #16]
-	strd	C_l, C_h, [sp, #16]
-	ldr	C_l, [src, #20]
-	ldr	C_h, [src, #24]
-	strd	D_l, D_h, [sp, #24]
-	ldr	D_l, [src, #28]
-	ldr	D_h, [src, #32]!
-	b	1f
-	.p2align	6
-2:
-	pld	[src, #(5 * 64) - (32 - 4)]
-	strd	A_l, A_h, [dst, #40]
-	ldr	A_l, [src, #36]
-	ldr	A_h, [src, #40]
-	strd	B_l, B_h, [dst, #48]
-	ldr	B_l, [src, #44]
-	ldr	B_h, [src, #48]
-	strd	C_l, C_h, [dst, #56]
-	ldr	C_l, [src, #52]
-	ldr	C_h, [src, #56]
-	strd	D_l, D_h, [dst, #64]!
-	ldr	D_l, [src, #60]
-	ldr	D_h, [src, #64]!
-	subs	tmp2, tmp2, #64
-1:
-	strd	A_l, A_h, [dst, #8]
-	ldr	A_l, [src, #4]
-	ldr	A_h, [src, #8]
-	strd	B_l, B_h, [dst, #16]
-	ldr	B_l, [src, #12]
-	ldr	B_h, [src, #16]
-	strd	C_l, C_h, [dst, #24]
-	ldr	C_l, [src, #20]
-	ldr	C_h, [src, #24]
-	strd	D_l, D_h, [dst, #32]
-	ldr	D_l, [src, #28]
-	ldr	D_h, [src, #32]
-	bcs	2b
-
-	/* Save the remaining bytes and restore the callee-saved regs.  */
-	strd	A_l, A_h, [dst, #40]
-	add	src, src, #36
-	strd	B_l, B_h, [dst, #48]
-	ldrd	B_l, B_h, [sp, #8]
-	strd	C_l, C_h, [dst, #56]
-	ldrd	C_l, C_h, [sp, #16]
-	strd	D_l, D_h, [dst, #64]
-	ldrd	D_l, D_h, [sp, #24]
-	add	dst, dst, #72
-	ands	count, tmp2, #0x3f
-#endif
-	ldr	tmp2, [sp], #FRAME_SIZE
-	bne	.Ltail63unaligned
-	bx	lr
-END(memcpy)
diff --git a/libc/arch-arm/bionic/setjmp.S b/libc/arch-arm/bionic/setjmp.S
index ed59d07..8220c08 100644
--- a/libc/arch-arm/bionic/setjmp.S
+++ b/libc/arch-arm/bionic/setjmp.S
@@ -1,6 +1,3 @@
-/*	$OpenBSD: setjmp.S,v 1.2 2004/02/01 05:40:52 drahn Exp $	*/
-/*	$NetBSD: setjmp.S,v 1.5 2003/04/05 23:08:51 bjh21 Exp $	*/
-
 /*
  * Copyright (c) 1997 Mark Brinicombe
  * Copyright (c) 2010 Android Open Source Project.
@@ -35,119 +32,142 @@
  */
 
 #include <private/bionic_asm.h>
-#include <machine/setjmp.h>
-#include <machine/cpu-features.h>
 
-/*
- * C library -- setjmp, longjmp
- *
- *	longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	setjmp(a)
- * by restoring registers from the stack.
- * The previous signal state is restored.
- */
+// According to the ARM AAPCS document, we only need to save
+// the following registers:
+//
+//  Core   r4-r14
+//
+//  VFP    d8-d15  (see section 5.1.2.1)
+//
+//      Registers s16-s31 (d8-d15, q4-q7) must be preserved across subroutine
+//      calls; registers s0-s15 (d0-d7, q0-q3) do not need to be preserved
+//      (and can be used for passing arguments or returning results in standard
+//      procedure-call variants). Registers d16-d31 (q8-q15), if present, do
+//      not need to be preserved.
+//
+//  FPSCR  saved because glibc does.
+
+// The internal structure of a jmp_buf is totally private.
+// Current layout (may change in the future):
+//
+// word   name         description
+// 0      magic        magic number
+// 1      sigmask      signal mask (not used with _setjmp / _longjmp)
+// 2      float_base   base of float registers (d8 to d15)
+// 18     float_state  floating-point status and control register
+// 19     core_base    base of core registers (r4 to r14)
+// 30     reserved     reserved entries (room to grow)
+// 64
+//
+// NOTE: float_base must be at an even word index, since the
+//       FP registers will be loaded/stored with instructions
+//       that expect 8-byte alignment.
+
+#define _JB_SIGFLAG     0
+#define _JB_SIGMASK     (_JB_SIGFLAG+1)
+#define _JB_FLOAT_BASE  (_JB_SIGMASK+1)
+#define _JB_FLOAT_STATE (_JB_FLOAT_BASE + (15-8+1)*2)
+#define _JB_CORE_BASE   (_JB_FLOAT_STATE+1)
 
 ENTRY(setjmp)
-	/* Block all signals and retrieve the old signal mask */
-	stmfd	sp!, {r0, r14}
-	.cfi_def_cfa_offset 8
-	.cfi_rel_offset r0, 0
-	.cfi_rel_offset r14, 4
-	mov	r0, #0x00000000
-
-	bl	PIC_SYM(sigblock, PLT)
-	mov	r1, r0
-
-	ldmfd	sp!, {r0, r14}
-	.cfi_def_cfa_offset 0
-
-	/* Store signal mask */
-	str	r1, [r0, #(_JB_SIGMASK * 4)]
-
-	ldr	r1, .Lsetjmp_magic
-	str	r1, [r0, #(_JB_MAGIC * 4)]
-
-	/* Store core registers */
-	add     r1, r0, #(_JB_CORE_BASE * 4)
-	stmia   r1, {r4-r14}
-
-#ifdef __ARM_HAVE_VFP
-	/* Store floating-point registers */
-	add     r1, r0, #(_JB_FLOAT_BASE * 4)
-	vstmia  r1, {d8-d15}
-	/* Store floating-point state */
-	fmrx    r1, fpscr
-	str     r1, [r0, #(_JB_FLOAT_STATE * 4)]
-#endif  /* __ARM_HAVE_VFP */
-
-	mov	r0, #0x00000000
-	bx      lr
+  mov r1, #1
+  b sigsetjmp
 END(setjmp)
 
-.Lsetjmp_magic:
-	.word	_JB_MAGIC_SETJMP
+ENTRY(_setjmp)
+  mov r1, #0
+  b sigsetjmp
+END(_setjmp)
 
+// int sigsetjmp(sigjmp_buf env, int save_signal_mask);
+ENTRY(sigsetjmp)
+  // Record whether or not we're saving the signal mask.
+  str r1, [r0, #(_JB_SIGFLAG * 4)]
 
-ENTRY(longjmp)
-	ldr	r2, .Lsetjmp_magic
-	ldr	r3, [r0, #(_JB_MAGIC * 4)]
-	teq	r2, r3
-	bne	botch
+  // Do we need to save the signal mask?
+  teq r1, #0
+  beq 1f
 
-	/* Fetch signal mask */
-	ldr	r2, [r0, #(_JB_SIGMASK * 4)]
+  // Get current signal mask.
+  stmfd sp!, {r0, r14}
+  .cfi_def_cfa_offset 8
+  .cfi_rel_offset r0, 0
+  .cfi_rel_offset r14, 4
+  mov r0, #0
+  bl sigblock
+  mov r1, r0
+  ldmfd sp!, {r0, r14}
+  .cfi_def_cfa_offset 0
 
-	/* Set signal mask */
-	stmfd	sp!, {r0, r1, r14}
-	.cfi_def_cfa_offset 12
-	.cfi_rel_offset r0, 0
-	.cfi_rel_offset r1, 4
-	.cfi_rel_offset r14, 8
-	sub	sp, sp, #4	/* align the stack */
-	.cfi_adjust_cfa_offset 4
+  // Save the signal mask.
+  str r1, [r0, #(_JB_SIGMASK * 4)]
 
-	mov	r0, r2
-	bl	PIC_SYM(sigsetmask, PLT)
+1:
+  // Save core registers.
+  add r1, r0, #(_JB_CORE_BASE * 4)
+  stmia r1, {r4-r14}
 
-	add	sp, sp, #4	/* unalign the stack */
-	.cfi_adjust_cfa_offset -4
-	ldmfd	sp!, {r0, r1, r14}
-	.cfi_def_cfa_offset 0
+  // Save floating-point registers.
+  add r1, r0, #(_JB_FLOAT_BASE * 4)
+  vstmia  r1, {d8-d15}
 
-#ifdef __ARM_HAVE_VFP
-	/* Restore floating-point registers */
-	add     r2, r0, #(_JB_FLOAT_BASE * 4)
-	vldmia  r2, {d8-d15}
-	/* Restore floating-point state */
-	ldr     r2, [r0, #(_JB_FLOAT_STATE * 4)]
-	fmxr    fpscr, r2
-#endif /* __ARM_HAVE_VFP */
+  // Save floating-point state.
+  fmrx r1, fpscr
+  str r1, [r0, #(_JB_FLOAT_STATE * 4)]
 
-	/* Restore core registers */
-	add     r2, r0, #(_JB_CORE_BASE * 4)
-	ldmia   r2, {r4-r14}
+  mov r0, #0
+  bx lr
+END(sigsetjmp)
 
-	/* Validate sp and r14 */
-	teq	sp, #0
-	teqne	r14, #0
-	beq	botch
+// void siglongjmp(sigjmp_buf env, int value);
+ENTRY(siglongjmp)
+  // Do we need to restore the signal mask?
+  ldr r2, [r0, #(_JB_SIGFLAG * 4)]
+  teq r2, #0
+  beq 1f
 
-	/* Set return value */
+  // Restore the signal mask.
+  stmfd sp!, {r0, r1, r14}
+  .cfi_def_cfa_offset 12
+  .cfi_rel_offset r0, 0
+  .cfi_rel_offset r1, 4
+  .cfi_rel_offset r14, 8
+  sub sp, sp, #4 // Align the stack.
+  .cfi_adjust_cfa_offset 4
 
-	mov	r0, r1
-	teq	r0, #0x00000000
-	moveq	r0, #0x00000001
-        bx      lr
-#ifdef __ARM_26__
-	mov	r15, r14
-#else
-	mov	r15, r14
-#endif
+  ldr r0, [r0, #(_JB_SIGMASK * 4)]
+  bl sigsetmask
 
-	/* validation failed, die die die. */
-botch:
-	bl	PIC_SYM(longjmperror, PLT)
-	bl	PIC_SYM(abort, PLT)
-	b	. - 8		/* Cannot get here */
-END(longjmp)
+  add sp, sp, #4 // Unalign the stack.
+  .cfi_adjust_cfa_offset -4
+  ldmfd sp!, {r0, r1, r14}
+  .cfi_def_cfa_offset 0
+
+1:
+  // Restore floating-point registers.
+  add r2, r0, #(_JB_FLOAT_BASE * 4)
+  vldmia r2, {d8-d15}
+
+  // Restore floating-point state.
+  ldr r2, [r0, #(_JB_FLOAT_STATE * 4)]
+  fmxr fpscr, r2
+
+  // Restore core registers.
+  add r2, r0, #(_JB_CORE_BASE * 4)
+  ldmia r2, {r4-r14}
+
+  // Validate sp and r14.
+  teq sp, #0
+  teqne r14, #0
+  bleq longjmperror
+
+  // Set return value.
+  mov r0, r1
+  teq r0, #0
+  moveq r0, #1
+  bx lr
+END(siglongjmp)
+
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-arm/bionic/sigsetjmp.S b/libc/arch-arm/bionic/sigsetjmp.S
deleted file mode 100644
index 7016f50..0000000
--- a/libc/arch-arm/bionic/sigsetjmp.S
+++ /dev/null
@@ -1,66 +0,0 @@
-/*	$OpenBSD: sigsetjmp.S,v 1.2 2004/02/01 05:40:52 drahn Exp $	*/
-/*	$NetBSD: sigsetjmp.S,v 1.3 2002/08/17 19:54:30 thorpej Exp $	*/
-
-/*
- * Copyright (c) 1997 Mark Brinicombe
- * 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 Mark Brinicombe
- * 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 AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _ALIGN_TEXT .align 0
-
-#include <private/bionic_asm.h>
-#include <machine/setjmp.h>
-
-/*
- * C library -- sigsetjmp, siglongjmp
- *
- *	longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	setjmp(a, m)
- * by restoring registers from the stack.
- * The previous signal state is restored.
- */
-
-ENTRY(sigsetjmp)
-	teq	r1, #0
-	beq	PIC_SYM(_setjmp, PLT)
-	b	PIC_SYM(setjmp, PLT)
-END(sigsetjmp)
-
-.L_setjmp_magic:
-	.word	_JB_MAGIC__SETJMP
-
-ENTRY(siglongjmp)
-	ldr	r2, .L_setjmp_magic
-	ldr	r3, [r0]
-	teq	r2, r3
-	beq	PIC_SYM(_longjmp, PLT)
-	b	PIC_SYM(longjmp, PLT)
-END(siglongjmp)
diff --git a/libc/arch-arm/bionic/strcmp.S b/libc/arch-arm/bionic/strcmp.S
deleted file mode 100644
index 6dba942..0000000
--- a/libc/arch-arm/bionic/strcmp.S
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * Copyright (c) 2011 The Android Open Source Project
- * Copyright (c) 2008 ARM Ltd
- * 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. The name of the company may not be used to endorse or promote
- *    products derived from this software without specific prior written
- *    permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (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 <machine/cpu-features.h>
-#include <private/bionic_asm.h>
-
-	.text
-
-#ifdef __ARMEB__
-#define SHFT2LSB lsl
-#define SHFT2LSBEQ lsleq
-#define SHFT2MSB lsr
-#define SHFT2MSBEQ lsreq
-#define MSB 0x000000ff
-#define LSB 0xff000000
-#else
-#define SHFT2LSB lsr
-#define SHFT2LSBEQ lsreq
-#define SHFT2MSB lsl
-#define SHFT2MSBEQ lsleq
-#define MSB 0xff000000
-#define LSB 0x000000ff
-#endif
-
-#define magic1(REG) REG
-#define magic2(REG) REG, lsl #7
-
-ENTRY(strcmp)
-	pld	[r0, #0]
-	pld	[r1, #0]
-	eor	r2, r0, r1
-	tst	r2, #3
-
-	/* Strings not at same byte offset from a word boundary.  */
-	bne	.Lstrcmp_unaligned
-	ands	r2, r0, #3
-	bic	r0, r0, #3
-	bic	r1, r1, #3
-	ldr	ip, [r0], #4
-	it	eq
-	ldreq	r3, [r1], #4
-	beq	1f
-
-	/* Although s1 and s2 have identical initial alignment, they are
-	 * not currently word aligned.  Rather than comparing bytes,
-	 * make sure that any bytes fetched from before the addressed
-	 * bytes are forced to 0xff.  Then they will always compare
-	 * equal.
-	 */
-	eor	r2, r2, #3
-	lsl	r2, r2, #3
-	mvn	r3, #MSB
-	SHFT2LSB	r2, r3, r2
-	ldr	r3, [r1], #4
-	orr	ip, ip, r2
-	orr	r3, r3, r2
-1:
-	/* Load the 'magic' constant 0x01010101. */
-	str	r4, [sp, #-4]!
-	mov	r4, #1
-	orr	r4, r4, r4, lsl #8
-	orr	r4, r4, r4, lsl #16
-	.p2align	2
-4:
-	pld	[r0, #8]
-	pld	[r1, #8]
-	sub	r2, ip, magic1(r4)
-	cmp	ip, r3
-	itttt	eq
-
-	/* check for any zero bytes in first word */
-	biceq	r2, r2, ip
-	tsteq	r2, magic2(r4)
-	ldreq	ip, [r0], #4
-	ldreq	r3, [r1], #4
-	beq	4b
-2:
-	/* There's a zero or a different byte in the word */
-	SHFT2MSB	r0, ip, #24
-	SHFT2LSB	ip, ip, #8
-	cmp	r0, #1
-	it	cs
-	cmpcs	r0, r3, SHFT2MSB #24
-	it	eq
-	SHFT2LSBEQ r3, r3, #8
-	beq	2b
-	/* On a big-endian machine, r0 contains the desired byte in bits
-	 * 0-7; on a little-endian machine they are in bits 24-31.  In
-	 * both cases the other bits in r0 are all zero.  For r3 the
-	 * interesting byte is at the other end of the word, but the
-	 * other bits are not necessarily zero.  We need a signed result
-	 * representing the differnece in the unsigned bytes, so for the
-	 * little-endian case we can't just shift the interesting bits up.
-	 */
-#ifdef __ARMEB__
-	sub	r0, r0, r3, lsr #24
-#else
-	and	r3, r3, #255
-	/* No RSB instruction in Thumb2 */
-#ifdef __thumb2__
-	lsr	r0, r0, #24
-	sub	r0, r0, r3
-#else
-	rsb	r0, r3, r0, lsr #24
-#endif
-#endif
-	ldr	r4, [sp], #4
-	bx	lr
-
-.Lstrcmp_unaligned:
-	wp1 .req r0
-	wp2 .req r1
-	b1  .req r2
-	w1  .req r4
-	w2  .req r5
-	t1  .req ip
-	@ r3 is scratch
-
-	/* First of all, compare bytes until wp1(sp1) is word-aligned. */
-1:
-	tst	wp1, #3
-	beq	2f
-	ldrb	r2, [wp1], #1
-	ldrb	r3, [wp2], #1
-	cmp	r2, #1
-	it	cs
-	cmpcs	r2, r3
-	beq	1b
-	sub	r0, r2, r3
-	bx	lr
-
-2:
-	str	r5, [sp, #-4]!
-	str	r4, [sp, #-4]!
-	mov	b1, #1
-	orr	b1, b1, b1, lsl #8
-	orr	b1, b1, b1, lsl #16
-
-	and	t1, wp2, #3
-	bic	wp2, wp2, #3
-	ldr	w1, [wp1], #4
-	ldr	w2, [wp2], #4
-	cmp	t1, #2
-	beq	2f
-	bhi	3f
-
-	/* Critical inner Loop: Block with 3 bytes initial overlap */
-	.p2align	2
-1:
-	bic	t1, w1, #MSB
-	cmp	t1, w2, SHFT2LSB #8
-	sub	r3, w1, b1
-	bic	r3, r3, w1
-	bne	4f
-	ands	r3, r3, b1, lsl #7
-	it	eq
-	ldreq	w2, [wp2], #4
-	bne	5f
-	eor	t1, t1, w1
-	cmp	t1, w2, SHFT2MSB #24
-	bne	6f
-	ldr	w1, [wp1], #4
-	b	1b
-4:
-	SHFT2LSB	w2, w2, #8
-	b	8f
-
-5:
-#ifdef __ARMEB__
-	/* The syndrome value may contain false ones if the string ends
-	 * with the bytes 0x01 0x00
-	 */
-	tst	w1, #0xff000000
-	itt	ne
-	tstne	w1, #0x00ff0000
-	tstne	w1, #0x0000ff00
-	beq	7f
-#else
-	bics	r3, r3, #0xff000000
-	bne	7f
-#endif
-	ldrb	w2, [wp2]
-	SHFT2LSB	t1, w1, #24
-#ifdef __ARMEB__
-	lsl	w2, w2, #24
-#endif
-	b	8f
-
-6:
-	SHFT2LSB	t1, w1, #24
-	and	w2, w2, #LSB
-	b	8f
-
-	/* Critical inner Loop: Block with 2 bytes initial overlap */
-	.p2align	2
-2:
-	SHFT2MSB	t1, w1, #16
-	sub	r3, w1, b1
-	SHFT2LSB	t1, t1, #16
-	bic	r3, r3, w1
-	cmp	t1, w2, SHFT2LSB #16
-	bne	4f
-	ands	r3, r3, b1, lsl #7
-	it	eq
-	ldreq	w2, [wp2], #4
-	bne	5f
-	eor	t1, t1, w1
-	cmp	t1, w2, SHFT2MSB #16
-	bne	6f
-	ldr	w1, [wp1], #4
-	b	2b
-
-5:
-#ifdef __ARMEB__
-	/* The syndrome value may contain false ones if the string ends
-	 * with the bytes 0x01 0x00
-	 */
-	tst	w1, #0xff000000
-	it	ne
-	tstne	w1, #0x00ff0000
-	beq	7f
-#else
-	lsls	r3, r3, #16
-	bne	7f
-#endif
-	ldrh	w2, [wp2]
-	SHFT2LSB	t1, w1, #16
-#ifdef __ARMEB__
-	lsl	w2, w2, #16
-#endif
-	b	8f
-
-6:
-	SHFT2MSB	w2, w2, #16
-	SHFT2LSB	t1, w1, #16
-4:
-	SHFT2LSB	w2, w2, #16
-	b	8f
-
-	/* Critical inner Loop: Block with 1 byte initial overlap */
-	.p2align	2
-3:
-	and	t1, w1, #LSB
-	cmp	t1, w2, SHFT2LSB #24
-	sub	r3, w1, b1
-	bic	r3, r3, w1
-	bne	4f
-	ands	r3, r3, b1, lsl #7
-	it	eq
-	ldreq	w2, [wp2], #4
-	bne	5f
-	eor	t1, t1, w1
-	cmp	t1, w2, SHFT2MSB #8
-	bne	6f
-	ldr	w1, [wp1], #4
-	b	3b
-4:
-	SHFT2LSB	w2, w2, #24
-	b	8f
-5:
-	/* The syndrome value may contain false ones if the string ends
-	 * with the bytes 0x01 0x00
-	 */
-	tst	w1, #LSB
-	beq	7f
-	ldr	w2, [wp2], #4
-6:
-	SHFT2LSB	t1, w1, #8
-	bic	w2, w2, #MSB
-	b	8f
-7:
-	mov	r0, #0
-	ldr	r4, [sp], #4
-	ldr	r5, [sp], #4
-	bx	lr
-
-8:
-	and	r2, t1, #LSB
-	and	r0, w2, #LSB
-	cmp	r0, #1
-	it	cs
-	cmpcs	r0, r2
-	itt	eq
-	SHFT2LSBEQ	t1, t1, #8
-	SHFT2LSBEQ	w2, w2, #8
-	beq	8b
-	sub	r0, r2, r0
-	ldr	r4, [sp], #4
-	ldr	r5, [sp], #4
-	bx	lr
-END(strcmp)
diff --git a/libc/arch-arm/cortex-a15/cortex-a15.mk b/libc/arch-arm/cortex-a15/cortex-a15.mk
index f1abe32..6fa3270 100644
--- a/libc/arch-arm/cortex-a15/cortex-a15.mk
+++ b/libc/arch-arm/cortex-a15/cortex-a15.mk
@@ -8,4 +8,9 @@
     arch-arm/cortex-a15/bionic/strcpy.S \
     arch-arm/cortex-a15/bionic/__strcpy_chk.S \
     arch-arm/cortex-a15/bionic/strlen.S \
-    bionic/memmove.c \
+
+libc_bionic_src_files_arm += \
+    arch-arm/generic/bionic/memcmp.S \
+
+libc_bionic_src_files_arm += \
+    arch-arm/denver/bionic/memmove.S \
diff --git a/libc/arch-arm/cortex-a9/bionic/memcpy_base.S b/libc/arch-arm/cortex-a9/bionic/memcpy_base.S
index 5e81305..bb08b94 100644
--- a/libc/arch-arm/cortex-a9/bionic/memcpy_base.S
+++ b/libc/arch-arm/cortex-a9/bionic/memcpy_base.S
@@ -44,7 +44,7 @@
         /* check if buffers are aligned. If so, run arm-only version */
         eor         r3, r0, r1
         ands        r3, r3, #0x3
-        beq         __memcpy_base_aligned
+        beq         MEMCPY_BASE_ALIGNED
 
         /* Check the upper size limit for Neon unaligned memory access in memcpy */
         cmp         r2, #224
diff --git a/libc/arch-arm/cortex-a9/cortex-a9.mk b/libc/arch-arm/cortex-a9/cortex-a9.mk
index c82db3b..7b38de1 100644
--- a/libc/arch-arm/cortex-a9/cortex-a9.mk
+++ b/libc/arch-arm/cortex-a9/cortex-a9.mk
@@ -8,4 +8,9 @@
     arch-arm/cortex-a9/bionic/strcpy.S \
     arch-arm/cortex-a9/bionic/__strcpy_chk.S \
     arch-arm/cortex-a9/bionic/strlen.S \
-    bionic/memmove.c \
+
+libc_bionic_src_files_arm += \
+    arch-arm/generic/bionic/memcmp.S \
+
+libc_bionic_src_files_arm += \
+    arch-arm/denver/bionic/memmove.S \
diff --git a/libc/arch-arm/denver/bionic/memset.S b/libc/arch-arm/denver/bionic/memset.S
index bf3d9ad..d77c244 100644
--- a/libc/arch-arm/denver/bionic/memset.S
+++ b/libc/arch-arm/denver/bionic/memset.S
@@ -37,6 +37,7 @@
          * memset() returns its first argument.
          */
 
+        .cpu        cortex-a15
         .fpu        neon
         .syntax     unified
 
diff --git a/libc/arch-arm/denver/denver.mk b/libc/arch-arm/denver/denver.mk
index 0bc52a2..5fddf95 100644
--- a/libc/arch-arm/denver/denver.mk
+++ b/libc/arch-arm/denver/denver.mk
@@ -1,4 +1,5 @@
 libc_bionic_src_files_arm += \
+    arch-arm/generic/bionic/memcmp.S \
     arch-arm/denver/bionic/memcpy.S \
     arch-arm/denver/bionic/memmove.S \
     arch-arm/denver/bionic/memset.S \
diff --git a/libc/arch-arm/bionic/memcmp.S b/libc/arch-arm/generic/bionic/memcmp.S
similarity index 100%
rename from libc/arch-arm/bionic/memcmp.S
rename to libc/arch-arm/generic/bionic/memcmp.S
diff --git a/libc/arch-arm/generic/generic.mk b/libc/arch-arm/generic/generic.mk
index 95be867..e49d6d2 100644
--- a/libc/arch-arm/generic/generic.mk
+++ b/libc/arch-arm/generic/generic.mk
@@ -1,11 +1,14 @@
 libc_bionic_src_files_arm += \
+    arch-arm/generic/bionic/memcmp.S \
     arch-arm/generic/bionic/memcpy.S \
     arch-arm/generic/bionic/memset.S \
     arch-arm/generic/bionic/strcmp.S \
     arch-arm/generic/bionic/strcpy.S \
     arch-arm/generic/bionic/strlen.c \
-    bionic/memmove.c \
     bionic/__strcat_chk.cpp \
     bionic/__strcpy_chk.cpp \
+
+libc_openbsd_src_files_arm += \
+    upstream-openbsd/lib/libc/string/memmove.c \
     upstream-openbsd/lib/libc/string/stpcpy.c \
     upstream-openbsd/lib/libc/string/strcat.c \
diff --git a/libc/arch-arm/include/machine/asm.h b/libc/arch-arm/include/machine/asm.h
index 7954f05..70dbe67 100644
--- a/libc/arch-arm/include/machine/asm.h
+++ b/libc/arch-arm/include/machine/asm.h
@@ -38,9 +38,7 @@
 #ifndef _ARM32_ASM_H_
 #define _ARM32_ASM_H_
 
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 0
-#endif
+#define __bionic_asm_align 0
 
 #undef __bionic_asm_custom_entry
 #undef __bionic_asm_custom_end
@@ -50,10 +48,4 @@
 #undef __bionic_asm_function_type
 #define __bionic_asm_function_type #function
 
-#if defined(__ELF__) && defined(PIC)
-#define PIC_SYM(x,y) x ## ( ## y ## )
-#else
-#define PIC_SYM(x,y) x
-#endif
-
 #endif /* !_ARM_ASM_H_ */
diff --git a/libc/arch-arm/include/machine/cpu-features.h b/libc/arch-arm/include/machine/cpu-features.h
index fc5a8fd..fc8c80d 100644
--- a/libc/arch-arm/include/machine/cpu-features.h
+++ b/libc/arch-arm/include/machine/cpu-features.h
@@ -28,14 +28,6 @@
 #ifndef _ARM_MACHINE_CPU_FEATURES_H
 #define _ARM_MACHINE_CPU_FEATURES_H
 
-/* The purpose of this file is to define several macros corresponding
- * to CPU features that may or may not be available at build time on
- * on the target CPU.
- *
- * This is done to abstract us from the various ARM Architecture
- * quirks and alphabet soup.
- */
-
 /* __ARM_ARCH__ is a number corresponding to the ARM revision
  * we're going to support. Our toolchain doesn't define __ARM_ARCH__
  * so try to guess it.
@@ -53,31 +45,4 @@
 #  endif
 #endif
 
-/* define __ARM_HAVE_HALFWORD_MULTIPLY when half-word multiply instructions
- * this means variants of: smul, smulw, smla, smlaw, smlal
- */
-#define  __ARM_HAVE_HALFWORD_MULTIPLY  1
-
-/* define __ARM_HAVE_LDREXD for ARMv7 architecture
- * (also present in ARMv6K, but not implemented in ARMv7-M, neither of which
- * we care about)
- */
-#if __ARM_ARCH__ >= 7
-#  define __ARM_HAVE_LDREXD
-#endif
-
-/* define _ARM_HAVE_VFP if we have VFPv3
- */
-#if __ARM_ARCH__ >= 7 && defined __VFP_FP__
-#  define __ARM_HAVE_VFP
-#endif
-
-/* define _ARM_HAVE_NEON for ARMv7 architecture if we support the
- * Neon SIMD instruction set extensions. This also implies
- * that VFPv3-D32 is supported.
- */
-#if __ARM_ARCH__ >= 7 && defined __ARM_NEON__
-#  define __ARM_HAVE_NEON
-#endif
-
 #endif /* _ARM_MACHINE_CPU_FEATURES_H */
diff --git a/libc/arch-arm/include/machine/elf_machdep.h b/libc/arch-arm/include/machine/elf_machdep.h
index 97d8434..542f638 100644
--- a/libc/arch-arm/include/machine/elf_machdep.h
+++ b/libc/arch-arm/include/machine/elf_machdep.h
@@ -102,6 +102,8 @@
 
 /* 112-127 are reserved for private experiments. */
 
+#define R_ARM_IRELATIVE   160
+
 #define R_ARM_RXPC25		249
 #define R_ARM_RSBREL32		250
 #define R_ARM_THM_RPC22		251
diff --git a/libc/arch-arm/include/machine/endian.h b/libc/arch-arm/include/machine/endian.h
deleted file mode 100644
index 8d9723d..0000000
--- a/libc/arch-arm/include/machine/endian.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*	$OpenBSD: endian.h,v 1.3 2005/12/13 00:35:23 millert Exp $	*/
-
-/*
- * Copyright (C) 2010 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 _ARM_ENDIAN_H_
-#define _ARM_ENDIAN_H_
-
-#ifdef __GNUC__
-
-/* According to RealView Assembler User's Guide, REV and REV16 are available
- * in Thumb code and 16-bit instructions when used in Thumb-2 code.
- *
- * REV Rd, Rm
- *   Rd and Rm must both be Lo registers.
- *
- * REV16 Rd, Rm
- *   Rd and Rm must both be Lo registers.
- *
- * The +l constraint takes care of this without constraining us in ARM mode.
- */
-#define __swap16md(x) ({                                        \
-    register u_int16_t _x = (x);                                \
-    __asm__ __volatile__("rev16 %0, %0" : "+l" (_x));           \
-    _x;                                                         \
-})
-
-#define __swap32md(x) ({                                        \
-    register u_int32_t _x = (x);                                \
-    __asm__ __volatile__("rev %0, %0" : "+l" (_x));             \
-    _x;                                                         \
-})
-
-#define __swap64md(x) ({                                        \
-    u_int64_t _swap64md_x = (x);                                \
-    (u_int64_t) __swap32md(_swap64md_x >> 32) |                 \
-        (u_int64_t) __swap32md(_swap64md_x & 0xffffffff) << 32; \
-})
-
-/* Tell sys/endian.h we have MD variants of the swap macros.  */
-#define MD_SWAP
-
-#endif  /* __GNUC__ */
-
-#if defined(__ARMEB__)
-#define _BYTE_ORDER _BIG_ENDIAN
-#else
-#define _BYTE_ORDER _LITTLE_ENDIAN
-#endif
-#define __STRICT_ALIGNMENT
-#include <sys/types.h>
-#include <sys/endian.h>
-
-#endif  /* !_ARM_ENDIAN_H_ */
diff --git a/libc/arch-arm/include/machine/exec.h b/libc/arch-arm/include/machine/exec.h
deleted file mode 100644
index 227b207..0000000
--- a/libc/arch-arm/include/machine/exec.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*	$OpenBSD: exec.h,v 1.9 2003/04/17 03:42:14 drahn Exp $	*/
-/*	$NetBSD: exec.h,v 1.6 1994/10/27 04:16:05 cgd Exp $	*/
-
-/*
- * Copyright (c) 1993 Christopher G. Demetriou
- * 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. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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 _ARM_EXEC_H_
-#define _ARM_EXEC_H_
-
-#define __LDPGSZ	4096
-
-#define NATIVE_EXEC_ELF
-
-#define ARCH_ELFSIZE		32
-
-#define ELF_TARG_CLASS		ELFCLASS32
-#define ELF_TARG_DATA		ELFDATA2LSB
-#define ELF_TARG_MACH		EM_ARM
-
-#define _NLIST_DO_AOUT
-#define _NLIST_DO_ELF
-
-#define _KERN_DO_AOUT
-#define _KERN_DO_ELF
-
-#endif  /* _ARM_EXEC_H_ */
diff --git a/libc/arch-arm/include/machine/setjmp.h b/libc/arch-arm/include/machine/setjmp.h
index 0941202..cc9c347 100644
--- a/libc/arch-arm/include/machine/setjmp.h
+++ b/libc/arch-arm/include/machine/setjmp.h
@@ -26,10 +26,6 @@
  * SUCH DAMAGE.
  */
 
-/*
- * machine/setjmp.h: machine dependent setjmp-related information.
- */
-
 /* _JBLEN is the size of a jmp_buf in longs.
  * Do not modify this value or you will break the ABI !
  *
@@ -37,46 +33,3 @@
  * that was replaced by this one.
  */
 #define _JBLEN  64
-
-/* According to the ARM AAPCS document, we only need to save
- * the following registers:
- *
- *  Core   r4-r14
- *
- *  VFP    d8-d15  (see section 5.1.2.1)
- *
- *      Registers s16-s31 (d8-d15, q4-q7) must be preserved across subroutine
- *      calls; registers s0-s15 (d0-d7, q0-q3) do not need to be preserved
- *      (and can be used for passing arguments or returning results in standard
- *      procedure-call variants). Registers d16-d31 (q8-q15), if present, do
- *      not need to be preserved.
- *
- *  FPSCR  saved because GLibc does saves it too.
- *
- */
-
-/* The internal structure of a jmp_buf is totally private.
- * Current layout (may change in the future):
- *
- * word   name         description
- * 0      magic        magic number
- * 1      sigmask      signal mask (not used with _setjmp / _longjmp)
- * 2      float_base   base of float registers (d8 to d15)
- * 18     float_state  floating-point status and control register
- * 19     core_base    base of core registers (r4 to r14)
- * 30     reserved     reserved entries (room to grow)
- * 64
- *
- * NOTE: float_base must be at an even word index, since the
- *       FP registers will be loaded/stored with instructions
- *       that expect 8-byte alignment.
- */
-
-#define _JB_MAGIC       0
-#define _JB_SIGMASK     (_JB_MAGIC+1)
-#define _JB_FLOAT_BASE  (_JB_SIGMASK+1)
-#define _JB_FLOAT_STATE (_JB_FLOAT_BASE + (15-8+1)*2)
-#define _JB_CORE_BASE   (_JB_FLOAT_STATE+1)
-
-#define _JB_MAGIC__SETJMP	0x4278f500
-#define _JB_MAGIC_SETJMP	0x4278f501
diff --git a/libc/arch-arm/krait/krait.mk b/libc/arch-arm/krait/krait.mk
index 1bb7b0a..88b4d66 100644
--- a/libc/arch-arm/krait/krait.mk
+++ b/libc/arch-arm/krait/krait.mk
@@ -11,4 +11,9 @@
     arch-arm/cortex-a15/bionic/strcat.S \
     arch-arm/cortex-a15/bionic/strcpy.S \
     arch-arm/cortex-a15/bionic/strlen.S \
-    bionic/memmove.c \
+
+libc_bionic_src_files_arm += \
+    arch-arm/generic/bionic/memcmp.S \
+
+libc_bionic_src_files_arm += \
+    arch-arm/denver/bionic/memmove.S \
diff --git a/libc/arch-arm/syscalls/___close.S b/libc/arch-arm/syscalls/___close.S
new file mode 100644
index 0000000..db8a230
--- /dev/null
+++ b/libc/arch-arm/syscalls/___close.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___close)
+    mov     ip, r7
+    ldr     r7, =__NR_close
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno_internal
+END(___close)
+.hidden ___close
diff --git a/libc/arch-arm/syscalls/___faccessat.S b/libc/arch-arm/syscalls/___faccessat.S
new file mode 100644
index 0000000..1d09cf7
--- /dev/null
+++ b/libc/arch-arm/syscalls/___faccessat.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___faccessat)
+    mov     ip, r7
+    ldr     r7, =__NR_faccessat
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno_internal
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-arm/syscalls/___fchmod.S b/libc/arch-arm/syscalls/___fchmod.S
new file mode 100644
index 0000000..c6da4f8
--- /dev/null
+++ b/libc/arch-arm/syscalls/___fchmod.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmod)
+    mov     ip, r7
+    ldr     r7, =__NR_fchmod
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno_internal
+END(___fchmod)
+.hidden ___fchmod
diff --git a/libc/arch-arm/syscalls/___fchmodat.S b/libc/arch-arm/syscalls/___fchmodat.S
new file mode 100644
index 0000000..91bbda5
--- /dev/null
+++ b/libc/arch-arm/syscalls/___fchmodat.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmodat)
+    mov     ip, r7
+    ldr     r7, =__NR_fchmodat
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno_internal
+END(___fchmodat)
+.hidden ___fchmodat
diff --git a/libc/arch-arm/syscalls/__clock_nanosleep.S b/libc/arch-arm/syscalls/__clock_nanosleep.S
new file mode 100644
index 0000000..ba7ffc4
--- /dev/null
+++ b/libc/arch-arm/syscalls/__clock_nanosleep.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__clock_nanosleep)
+    mov     ip, r7
+    ldr     r7, =__NR_clock_nanosleep
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno_internal
+END(__clock_nanosleep)
diff --git a/libc/arch-arm/syscalls/__rt_sigqueueinfo.S b/libc/arch-arm/syscalls/__rt_sigqueueinfo.S
new file mode 100644
index 0000000..c823cee
--- /dev/null
+++ b/libc/arch-arm/syscalls/__rt_sigqueueinfo.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__rt_sigqueueinfo)
+    mov     ip, r7
+    ldr     r7, =__NR_rt_sigqueueinfo
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno_internal
+END(__rt_sigqueueinfo)
diff --git a/libc/arch-arm/syscalls/_exit.S b/libc/arch-arm/syscalls/_exit.S
index 328a5ce..77da743 100644
--- a/libc/arch-arm/syscalls/_exit.S
+++ b/libc/arch-arm/syscalls/_exit.S
@@ -13,5 +13,4 @@
     b       __set_errno_internal
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-arm/syscalls/clock_nanosleep.S b/libc/arch-arm/syscalls/clock_nanosleep.S
deleted file mode 100644
index 80295bb..0000000
--- a/libc/arch-arm/syscalls/clock_nanosleep.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(clock_nanosleep)
-    mov     ip, r7
-    ldr     r7, =__NR_clock_nanosleep
-    swi     #0
-    mov     r7, ip
-    cmn     r0, #(MAX_ERRNO + 1)
-    bxls    lr
-    neg     r0, r0
-    b       __set_errno_internal
-END(clock_nanosleep)
diff --git a/libc/arch-arm/syscalls/close.S b/libc/arch-arm/syscalls/close.S
deleted file mode 100644
index ec05445..0000000
--- a/libc/arch-arm/syscalls/close.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(close)
-    mov     ip, r7
-    ldr     r7, =__NR_close
-    swi     #0
-    mov     r7, ip
-    cmn     r0, #(MAX_ERRNO + 1)
-    bxls    lr
-    neg     r0, r0
-    b       __set_errno_internal
-END(close)
diff --git a/libc/arch-arm/syscalls/faccessat.S b/libc/arch-arm/syscalls/faccessat.S
deleted file mode 100644
index a1df5c0..0000000
--- a/libc/arch-arm/syscalls/faccessat.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(faccessat)
-    mov     ip, r7
-    ldr     r7, =__NR_faccessat
-    swi     #0
-    mov     r7, ip
-    cmn     r0, #(MAX_ERRNO + 1)
-    bxls    lr
-    neg     r0, r0
-    b       __set_errno_internal
-END(faccessat)
diff --git a/libc/arch-arm/syscalls/fchmod.S b/libc/arch-arm/syscalls/fchmod.S
deleted file mode 100644
index 5675f0a..0000000
--- a/libc/arch-arm/syscalls/fchmod.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmod)
-    mov     ip, r7
-    ldr     r7, =__NR_fchmod
-    swi     #0
-    mov     r7, ip
-    cmn     r0, #(MAX_ERRNO + 1)
-    bxls    lr
-    neg     r0, r0
-    b       __set_errno_internal
-END(fchmod)
diff --git a/libc/arch-arm/syscalls/fchmodat.S b/libc/arch-arm/syscalls/fchmodat.S
deleted file mode 100644
index 3f7e0ee..0000000
--- a/libc/arch-arm/syscalls/fchmodat.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmodat)
-    mov     ip, r7
-    ldr     r7, =__NR_fchmodat
-    swi     #0
-    mov     r7, ip
-    cmn     r0, #(MAX_ERRNO + 1)
-    bxls    lr
-    neg     r0, r0
-    b       __set_errno_internal
-END(fchmodat)
diff --git a/libc/arch-arm/syscalls/fstat64.S b/libc/arch-arm/syscalls/fstat64.S
index c60e7ee..798bba7 100644
--- a/libc/arch-arm/syscalls/fstat64.S
+++ b/libc/arch-arm/syscalls/fstat64.S
@@ -13,5 +13,4 @@
     b       __set_errno_internal
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-arm/syscalls/fstatat64.S b/libc/arch-arm/syscalls/fstatat64.S
index ce56c36..03e0052 100644
--- a/libc/arch-arm/syscalls/fstatat64.S
+++ b/libc/arch-arm/syscalls/fstatat64.S
@@ -13,5 +13,4 @@
     b       __set_errno_internal
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-arm/syscalls/sethostname.S b/libc/arch-arm/syscalls/sethostname.S
new file mode 100644
index 0000000..0a98fd3
--- /dev/null
+++ b/libc/arch-arm/syscalls/sethostname.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sethostname)
+    mov     ip, r7
+    ldr     r7, =__NR_sethostname
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno_internal
+END(sethostname)
diff --git a/libc/arch-arm64/arm64.mk b/libc/arch-arm64/arm64.mk
index bb6ca63..6a2f313 100644
--- a/libc/arch-arm64/arm64.mk
+++ b/libc/arch-arm64/arm64.mk
@@ -8,7 +8,6 @@
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memrchr.c \
     bionic/strrchr.cpp \
 
 libc_freebsd_src_files_arm64 += \
@@ -21,6 +20,7 @@
     upstream-freebsd/lib/libc/string/wmemcmp.c \
 
 libc_openbsd_src_files_arm64 += \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strcat.c \
     upstream-openbsd/lib/libc/string/strlcat.c \
@@ -35,13 +35,13 @@
 libc_bionic_src_files_arm64 += \
     arch-arm64/bionic/__bionic_clone.S \
     arch-arm64/bionic/_exit_with_stack_teardown.S \
-    arch-arm64/bionic/_setjmp.S \
     arch-arm64/bionic/setjmp.S \
     arch-arm64/bionic/__set_tls.c \
-    arch-arm64/bionic/sigsetjmp.S \
     arch-arm64/bionic/syscall.S \
     arch-arm64/bionic/vfork.S \
 
+# Work around for http://b/20065774.
+libc_bionic_src_files_arm64 += arch-arm64/bionic/libgcc_compat.c
 
 libc_crt_target_cflags_arm64 := \
     -I$(LOCAL_PATH)/arch-arm64/include
@@ -61,6 +61,6 @@
 $(error "TARGET_CPU_VARIANT not set or set to an unknown value. Possible values are generic, denver64. Use generic for devices that do not have a CPU similar to any of the supported cpu variants.")
 endif
 include $(cpu_variant_mk)
-libc_common_additional_dependencies += $(cpu_variank_mk)
+libc_common_additional_dependencies += $(cpu_variant_mk)
 
 cpu_variant_mk :=
diff --git a/libc/arch-arm64/bionic/__bionic_clone.S b/libc/arch-arm64/bionic/__bionic_clone.S
index 56ac0f6..27e44e7 100644
--- a/libc/arch-arm64/bionic/__bionic_clone.S
+++ b/libc/arch-arm64/bionic/__bionic_clone.S
@@ -31,8 +31,8 @@
 // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
 
 ENTRY(__bionic_clone)
-    # Copy 'fn' and 'arg' onto the child stack.
-    stp     x5, x6, [x1, #-16]
+    # Push 'fn' and 'arg' onto the child stack.
+    stp     x5, x6, [x1, #-16]!
 
     # Make the system call.
     mov     x8, __NR_clone
@@ -49,12 +49,12 @@
     ret
 
 .L_bc_child:
-    # We're in the child now. Set the end of the frame record chain...
-    mov     x29, xzr
-    # Setting x30 to 0 will make the unwinder stop at __start_thread
-    mov     x30, xzr
-    # ...and call __start_thread with the 'fn' and 'arg' we stored on the child stack.
-    ldp     x0, x1, [sp, #-16]
+    # We're in the child now. Set the end of the frame record chain.
+    mov     x29, #0
+    # Setting x30 to 0 will make the unwinder stop at __start_thread.
+    mov     x30, #0
+    # Call __start_thread with the 'fn' and 'arg' we stored on the child stack.
+    ldp     x0, x1, [sp], #16
     b       __start_thread
 END(__bionic_clone)
 .hidden __bionic_clone
diff --git a/libc/arch-arm64/bionic/_setjmp.S b/libc/arch-arm64/bionic/_setjmp.S
deleted file mode 100644
index 3836899..0000000
--- a/libc/arch-arm64/bionic/_setjmp.S
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <private/bionic_asm.h>
-#include <machine/setjmp.h>
-
-/*
- * C library - _setjmp, _longjmp
- *
- * _longjmp(jmp_buf state, int value)
- * will generate a "return(v)" from the last call to _setjmp(state) by restoring
- * registers from the stack. The previous signal state is NOT restored.
- *
- * NOTE: x0 return value
- *       x9-x15 temporary registers
- */
-
-ENTRY(_setjmp)
-    /* store magic number */
-    ldr     w9, .L_setjmp_magic
-    str     w9, [x0, #(_JB_MAGIC * 4)]
-
-    /* store core registers */
-    mov     x10, sp
-    stp     x30, x10, [x0, #(_JB_CORE_BASE * 4 + 16 * 0)]
-    stp     x28, x29, [x0, #(_JB_CORE_BASE * 4 + 16 * 1)]
-    stp     x26, x27, [x0, #(_JB_CORE_BASE * 4 + 16 * 2)]
-    stp     x24, x25, [x0, #(_JB_CORE_BASE * 4 + 16 * 3)]
-    stp     x22, x23, [x0, #(_JB_CORE_BASE * 4 + 16 * 4)]
-    stp     x20, x21, [x0, #(_JB_CORE_BASE * 4 + 16 * 5)]
-    str     x19,      [x0, #(_JB_CORE_BASE * 4 + 16 * 6)]
-
-    /* store floating point registers */
-    stp     d14, d15, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 0)]
-    stp     d12, d13, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 1)]
-    stp     d10, d11, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 2)]
-    stp     d8,  d9,  [x0, #(_JB_FLOAT_BASE * 4 + 16 * 3)]
-
-    mov     w0, wzr
-    ret
-END(_setjmp)
-
-.L_setjmp_magic:
-    .word   _JB_MAGIC__SETJMP
-
-ENTRY(_longjmp)
-    /* check magic */
-    ldr     w9, .L_setjmp_magic
-    ldr     w10, [x0, #(_JB_MAGIC * 4)]
-    cmp     w9, w10
-    b.ne    .L_fail
-
-    /* restore core registers */
-    ldp     x30, x10, [x0, #(_JB_CORE_BASE * 4 + 16 * 0)]
-    mov     sp, x10
-    ldp     x28, x29, [x0, #(_JB_CORE_BASE * 4 + 16 * 1)]
-    ldp     x26, x27, [x0, #(_JB_CORE_BASE * 4 + 16 * 2)]
-    ldp     x24, x25, [x0, #(_JB_CORE_BASE * 4 + 16 * 3)]
-    ldp     x22, x23, [x0, #(_JB_CORE_BASE * 4 + 16 * 4)]
-    ldp     x20, x21, [x0, #(_JB_CORE_BASE * 4 + 16 * 5)]
-    ldr     x19,      [x0, #(_JB_CORE_BASE * 4 + 16 * 6)]
-
-    /* restore floating point registers */
-    ldp     d14, d15, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 0)]
-    ldp     d12, d13, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 1)]
-    ldp     d10, d11, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 2)]
-    ldp     d8,  d9,  [x0, #(_JB_FLOAT_BASE * 4 + 16 * 3)]
-
-    /* validate sp (sp mod 16 = 0) and lr (lr mod 4 = 0) */
-    tst     x30, #3
-    b.ne    .L_fail
-    mov     x10, sp
-    tst     x10, #15
-    b.ne    .L_fail
-
-    /* set return value */
-    cmp     w1, wzr
-    csinc   w0, w1, wzr, ne
-    ret
-
-    /* validation failed, die die die */
-.L_fail:
-    bl      PIC_SYM(longjmperror, PLT)
-    bl      PIC_SYM(abort, PLT)
-    b        . - 8       /* Cannot get here */
-END(_longjmp)
diff --git a/libc/arch-arm64/bionic/crtbegin.c b/libc/arch-arm64/bionic/crtbegin.c
index fec0b11..7e2c5d7 100644
--- a/libc/arch-arm64/bionic/crtbegin.c
+++ b/libc/arch-arm64/bionic/crtbegin.c
@@ -67,3 +67,4 @@
 
 #include "../../arch-common/bionic/__dso_handle.h"
 #include "../../arch-common/bionic/atexit.h"
+#include "../../arch-common/bionic/pthread_atfork.h"
diff --git a/libc/arch-arm64/bionic/libgcc_compat.c b/libc/arch-arm64/bionic/libgcc_compat.c
new file mode 100644
index 0000000..2dae3f5
--- /dev/null
+++ b/libc/arch-arm64/bionic/libgcc_compat.c
@@ -0,0 +1,15 @@
+/* STOPSHIP: remove this once the flounder blobs have been rebuilt (http://b/20065774). */
+
+#if !defined(__clang__)
+
+extern void __clear_cache(char*, char*);
+extern char _Unwind_Backtrace;
+extern char _Unwind_GetIP;
+
+void* __bionic_libgcc_compat_symbols[] = {
+    &__clear_cache,
+    &_Unwind_Backtrace,
+    &_Unwind_GetIP,
+};
+
+#endif
diff --git a/libc/arch-arm64/bionic/setjmp.S b/libc/arch-arm64/bionic/setjmp.S
index f9d2266..ba0a226 100644
--- a/libc/arch-arm64/bionic/setjmp.S
+++ b/libc/arch-arm64/bionic/setjmp.S
@@ -27,97 +27,124 @@
  */
 
 #include <private/bionic_asm.h>
-#include <machine/setjmp.h>
 
-/*
- * C library - _setjmp, _longjmp
- *
- * _longjmp(jmp_buf state, int value)
- * will generate a "return(v)" from the last call to _setjmp(state) by restoring
- * registers from the stack. The previous signal state is NOT restored.
- *
- * NOTE: x0 return value
- *       x9-x15 temporary registers
- */
+// According to AARCH64 PCS document we need to save the following
+// registers:
+//
+// Core     x19 - x30, sp (see section 5.1.1)
+// VFP      d8 - d15 (see section 5.1.2)
+//
+// NOTE: All the registers saved here will have 64 bit vales.
+//       AAPCS mandates that the higher part of q registers do not need to
+//       be saved by the callee.
+
+#define _JB_SIGFLAG     0
+#define _JB_SIGMASK     (_JB_SIGFLAG + 1)
+#define _JB_X30_SP      (_JB_SIGMASK + 1)
+#define _JB_X28_X29     (_JB_X30_SP  + 2)
+#define _JB_X26_X27     (_JB_X28_X29 + 2)
+#define _JB_X24_X25     (_JB_X26_X27 + 2)
+#define _JB_X22_X23     (_JB_X24_X25 + 2)
+#define _JB_X20_X21     (_JB_X22_X23 + 2)
+#define _JB_X19         (_JB_X20_X21 + 2)
+#define _JB_D14_D15     (_JB_X19 + 1)
+#define _JB_D12_D13     (_JB_D14_D15 + 2)
+#define _JB_D10_D11     (_JB_D12_D13 + 2)
+#define _JB_D8_D9       (_JB_D10_D11 + 2)
 
 ENTRY(setjmp)
-    /* block all signals an retrieve signal mask */
-    stp     x0, x30, [sp, #-16]!
-
-    mov     x0, xzr
-    bl      PIC_SYM(sigblock, PLT)
-    mov     w1, w0
-
-    ldp     x0, x30, [sp], #16
-
-    /* store signal mask */
-    str     w1, [x0, #(_JB_SIGMASK *4)]
-
-    /* store magic number */
-    ldr     w9, .L_setjmp_magic
-    str     w9, [x0, #(_JB_MAGIC * 4)]
-
-    /* store core registers */
-    mov     x10, sp
-    stp     x30, x10, [x0, #(_JB_CORE_BASE * 4 + 16 * 0)]
-    stp     x28, x29, [x0, #(_JB_CORE_BASE * 4 + 16 * 1)]
-    stp     x26, x27, [x0, #(_JB_CORE_BASE * 4 + 16 * 2)]
-    stp     x24, x25, [x0, #(_JB_CORE_BASE * 4 + 16 * 3)]
-    stp     x22, x23, [x0, #(_JB_CORE_BASE * 4 + 16 * 4)]
-    stp     x20, x21, [x0, #(_JB_CORE_BASE * 4 + 16 * 5)]
-    str     x19,      [x0, #(_JB_CORE_BASE * 4 + 16 * 6)]
-
-    /* store floating point registers */
-    stp     d14, d15, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 0)]
-    stp     d12, d13, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 1)]
-    stp     d10, d11, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 2)]
-    stp     d8,  d9,  [x0, #(_JB_FLOAT_BASE * 4 + 16 * 3)]
-
-    mov     w0, wzr
-    ret
+  mov w1, #1
+  b sigsetjmp
 END(setjmp)
 
-.L_setjmp_magic:
-    .word   _JB_MAGIC__SETJMP
+ENTRY(_setjmp)
+  mov w1, #0
+  b sigsetjmp
+END(_setjmp)
 
-ENTRY(longjmp)
-    /* check magic */
-    ldr     w9, .L_setjmp_magic
-    ldr     w10, [x0, #(_JB_MAGIC * 4)]
-    cmp     w9, w10
-    b.ne    .L_fail
+// int sigsetjmp(sigjmp_buf env, int save_signal_mask);
+ENTRY(sigsetjmp)
+  // Record whether or not we're saving the signal mask.
+  str w1, [x0, #(_JB_SIGFLAG * 8)]
 
-    /* restore core registers */
-    ldp     x30, x10, [x0, #(_JB_CORE_BASE * 4 + 16 * 0)]
-    mov     sp, x10
-    ldp     x28, x29, [x0, #(_JB_CORE_BASE * 4 + 16 * 1)]
-    ldp     x26, x27, [x0, #(_JB_CORE_BASE * 4 + 16 * 2)]
-    ldp     x24, x25, [x0, #(_JB_CORE_BASE * 4 + 16 * 3)]
-    ldp     x22, x23, [x0, #(_JB_CORE_BASE * 4 + 16 * 4)]
-    ldp     x20, x21, [x0, #(_JB_CORE_BASE * 4 + 16 * 5)]
-    ldr     x19,      [x0, #(_JB_CORE_BASE * 4 + 16 * 6)]
+  // Do we need to save the signal mask?
+  cbz w1, 1f
 
-    /* restore floating point registers */
-    ldp     d14, d15, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 0)]
-    ldp     d12, d13, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 1)]
-    ldp     d10, d11, [x0, #(_JB_FLOAT_BASE * 4 + 16 * 2)]
-    ldp     d8,  d9,  [x0, #(_JB_FLOAT_BASE * 4 + 16 * 3)]
+  // Save current signal mask.
+  stp x0, x30, [sp, #-16]!
+  // The 'how' argument is ignored if new_mask is NULL.
+  mov x1, #0 // NULL.
+  add x2, x0, #(_JB_SIGMASK * 8) // old_mask.
+  bl sigprocmask
+  ldp x0, x30, [sp], #16
 
-    /* validate sp (sp mod 16 = 0) and lr (lr mod 4 = 0) */
-    tst     x30, #3
-    b.ne    .L_fail
-    mov     x10, sp
-    tst     x10, #15
-    b.ne    .L_fail
+1:
+  // Save core registers.
+  mov x10, sp
+  stp x30, x10, [x0, #(_JB_X30_SP  * 8)]
+  stp x28, x29, [x0, #(_JB_X28_X29 * 8)]
+  stp x26, x27, [x0, #(_JB_X26_X27 * 8)]
+  stp x24, x25, [x0, #(_JB_X24_X25 * 8)]
+  stp x22, x23, [x0, #(_JB_X22_X23 * 8)]
+  stp x20, x21, [x0, #(_JB_X20_X21 * 8)]
+  str x19,      [x0, #(_JB_X19     * 8)]
 
-    /* set return value */
-    cmp     w1, wzr
-    csinc   w0, w1, wzr, ne
-    ret
+  // Save floating point registers.
+  stp d14, d15, [x0, #(_JB_D14_D15 * 8)]
+  stp d12, d13, [x0, #(_JB_D12_D13 * 8)]
+  stp d10, d11, [x0, #(_JB_D10_D11 * 8)]
+  stp d8,  d9,  [x0, #(_JB_D8_D9   * 8)]
 
-    /* validation failed, die die die */
-.L_fail:
-    bl      PIC_SYM(longjmperror, PLT)
-    bl      PIC_SYM(abort, PLT)
-    b       . - 8       /* Cannot get here */
-END(longjmp)
+  mov w0, #0
+  ret
+END(sigsetjmp)
+
+// void siglongjmp(sigjmp_buf env, int value);
+ENTRY(siglongjmp)
+  // Do we need to restore the signal mask?
+  ldr w9, [x0, #(_JB_SIGFLAG * 8)]
+  cbz w9, 1f
+
+  // Restore signal mask.
+  stp x0, x30, [sp, #-16]!
+  mov x19, x1 // Save 'value'.
+  mov x2, x0
+  mov x0, #2 // SIG_SETMASK
+  add x1, x2, #(_JB_SIGMASK * 8) // new_mask.
+  mov x2, #0 // NULL.
+  bl sigprocmask
+  mov x1, x19 // Restore 'value'.
+  ldp x0, x30, [sp], #16
+
+1:
+  // Restore core registers.
+  ldp x30, x10, [x0, #(_JB_X30_SP  * 8)]
+  mov sp, x10
+  ldp x28, x29, [x0, #(_JB_X28_X29 * 8)]
+  ldp x26, x27, [x0, #(_JB_X26_X27 * 8)]
+  ldp x24, x25, [x0, #(_JB_X24_X25 * 8)]
+  ldp x22, x23, [x0, #(_JB_X22_X23 * 8)]
+  ldp x20, x21, [x0, #(_JB_X20_X21 * 8)]
+  ldr x19,      [x0, #(_JB_X19     * 8)]
+
+  // Restore floating point registers.
+  ldp d14, d15, [x0, #(_JB_D14_D15 * 8)]
+  ldp d12, d13, [x0, #(_JB_D12_D13 * 8)]
+  ldp d10, d11, [x0, #(_JB_D10_D11 * 8)]
+  ldp d8,  d9,  [x0, #(_JB_D8_D9   * 8)]
+
+  // Validate sp (sp mod 16 = 0) and lr (lr mod 4 = 0).
+  tst x30, #3
+  b.ne longjmperror
+  mov x10, sp
+  tst x10, #15
+  b.ne longjmperror
+
+  // Set return value.
+  cmp w1, wzr
+  csinc w0, w1, wzr, ne
+  ret
+END(siglongjmp)
+
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-arm64/bionic/sigsetjmp.S b/libc/arch-arm64/bionic/sigsetjmp.S
deleted file mode 100644
index 4fdb367..0000000
--- a/libc/arch-arm64/bionic/sigsetjmp.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <private/bionic_asm.h>
-#include <machine/setjmp.h>
-
-/*
- * int sigsetjmp(sigjmp_buf env, int savesigs);
- * void siglongjmp(sigjmp_buf env, int val);
- */
-
-ENTRY(sigsetjmp)
-    cbz     w1, PIC_SYM(_setjmp, PLT)
-    b       PIC_SYM(setjmp, PLT)
-END(sigsetjmp)
-
-.L_setjmp_magic:
-    .word   _JB_MAGIC__SETJMP
-
-ENTRY(siglongjmp)
-    ldr     w2, .L_setjmp_magic
-    ldr     w3, [x0]
-    cmp     w2, w3
-    b.eq    PIC_SYM(_longjmp, PLT)
-    b       PIC_SYM(longjmp, PLT)
-END(siglongjmp)
diff --git a/libc/arch-arm64/include/machine/asm.h b/libc/arch-arm64/include/machine/asm.h
index 4bfabaf..2bea043 100644
--- a/libc/arch-arm64/include/machine/asm.h
+++ b/libc/arch-arm64/include/machine/asm.h
@@ -38,17 +38,9 @@
 #ifndef _AARCH64_ASM_H_
 #define _AARCH64_ASM_H_
 
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 0
-#endif
+#define __bionic_asm_align 0
 
 #undef __bionic_asm_function_type
 #define __bionic_asm_function_type %function
 
-#if defined(__ELF__) && defined(PIC)
-#define PIC_SYM(x,y) x ## ( ## y ## )
-#else
-#define PIC_SYM(x,y) x
-#endif
-
 #endif /* _AARCH64_ASM_H_ */
diff --git a/libc/arch-arm64/include/machine/endian.h b/libc/arch-arm64/include/machine/endian.h
deleted file mode 100644
index 87a038d..0000000
--- a/libc/arch-arm64/include/machine/endian.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 _AARCH64_ENDIAN_H_
-#define _AARCH64_ENDIAN_H_
-
-#include <sys/types.h>
-#include <sys/endian.h>
-
-#ifdef __GNUC__
-
-#define __swap16md(x) ({                                        \
-    register u_int16_t _x = (x);                                \
-    __asm volatile ("rev16 %0, %0" : "+r" (_x));                \
-    _x;                                                         \
-})
-
-/* Use GCC builtins */
-#define __swap32md(x) __builtin_bswap32(x)
-#define __swap64md(x) __builtin_bswap64(x)
-
-/* Tell sys/endian.h we have MD variants of the swap macros.  */
-#define MD_SWAP
-
-#endif  /* __GNUC__ */
-
-#if defined(__AARCH64EB__)
-#define _BYTE_ORDER _BIG_ENDIAN
-#else
-#define _BYTE_ORDER _LITTLE_ENDIAN
-#endif
-
-#endif /* _AARCH64_ENDIAN_H_ */
diff --git a/libc/arch-arm64/include/machine/exec.h b/libc/arch-arm64/include/machine/exec.h
deleted file mode 100644
index 7437626..0000000
--- a/libc/arch-arm64/include/machine/exec.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*	$OpenBSD: exec.h,v 1.9 2003/04/17 03:42:14 drahn Exp $	*/
-/*	$NetBSD: exec.h,v 1.6 1994/10/27 04:16:05 cgd Exp $	*/
-
-/*
- * Copyright (c) 1993 Christopher G. Demetriou
- * 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. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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 _AARCH64_EXEC_H_
-#define _AARCH64_EXEC_H_
-
-#define	__LDPGSZ		4096
-
-#define	NATIVE_EXEC_ELF
-
-#define	ARCH_ELFSIZE		64
-
-#define	ELF_TARG_CLASS		ELFCLASS64		/* 64-bit objects */
-#define	ELF_TARG_DATA		ELFDATA2LSB
-#define	ELF_TARG_MACH		EM_AARCH64
-
-#define	_NLIST_DO_AOUT
-#define	_NLIST_DO_ELF
-
-#define	_KERN_DO_AOUT
-#define	_KERN_DO_ELF64
-
-#endif  /* _AARCH64_EXEC_H_ */
diff --git a/libc/arch-arm64/include/machine/setjmp.h b/libc/arch-arm64/include/machine/setjmp.h
index 1c237da..27c2fe5 100644
--- a/libc/arch-arm64/include/machine/setjmp.h
+++ b/libc/arch-arm64/include/machine/setjmp.h
@@ -26,48 +26,5 @@
  * SUCH DAMAGE.
  */
 
-/*
- * machine/setjmp.h: machine dependent setjmp-related information.
- */
-
-/* _JBLEN is the size of a jmp_buf in longs(64bit on AArch64) */
+/* _JBLEN is the size of a jmp_buf in longs (64bit on AArch64) */
 #define _JBLEN 32
-
-/* According to AARCH64 PCS document we need to save the following
- * registers:
- *
- * Core     x19 - x30, sp (see section 5.1.1)
- * VFP      d8 - d15 (see section 5.1.2)
- *
- * NOTE: All the registers saved here will have 64bit vales (except FPSR).
- *       AAPCS mandates that the higher part of q registers does not need to
- *       be saveved by the callee.
- */
-
-/* The structure of jmp_buf for AArch64:
- *
- * NOTE: _JBLEN is the size of jmp_buf in longs(64bit on AArch64)! The table
- *      below computes the offsets in words(32bit).
- *
- *  word        name            description
- *  0       magic           magic number
- *  1       sigmask         signal mask (not used with _setjmp / _longjmp)
- *  2       core_base       base of core registers (x19-x30, sp)
- *  28      float_base      base of float registers (d8-d15)
- *  44      reserved        reserved entries (room to grow)
- *  64
- *
- *
- *  NOTE: The instructions that load/store core/vfp registers expect 8-byte
- *        alignment. Contrary to the previous setjmp header for ARM we do not
- *        need to save status/control registers for VFP (it is not a
- *        requirement for setjmp).
- */
-
-#define _JB_MAGIC       0
-#define _JB_SIGMASK     (_JB_MAGIC+1)
-#define _JB_CORE_BASE   (_JB_SIGMASK+1)
-#define _JB_FLOAT_BASE  (_JB_CORE_BASE + (31-19+1)*2)
-
-#define _JB_MAGIC__SETJMP   0x53657200
-#define _JB_MAGIC_SETJMP    0x53657201
diff --git a/libc/arch-arm64/syscalls/___close.S b/libc/arch-arm64/syscalls/___close.S
new file mode 100644
index 0000000..8fb8361
--- /dev/null
+++ b/libc/arch-arm64/syscalls/___close.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___close)
+    mov     x8, __NR_close
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(___close)
+.hidden ___close
diff --git a/libc/arch-arm64/syscalls/___faccessat.S b/libc/arch-arm64/syscalls/___faccessat.S
new file mode 100644
index 0000000..6a41b69
--- /dev/null
+++ b/libc/arch-arm64/syscalls/___faccessat.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___faccessat)
+    mov     x8, __NR_faccessat
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-arm64/syscalls/___fchmod.S b/libc/arch-arm64/syscalls/___fchmod.S
new file mode 100644
index 0000000..a143c65
--- /dev/null
+++ b/libc/arch-arm64/syscalls/___fchmod.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmod)
+    mov     x8, __NR_fchmod
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(___fchmod)
+.hidden ___fchmod
diff --git a/libc/arch-arm64/syscalls/___fchmodat.S b/libc/arch-arm64/syscalls/___fchmodat.S
new file mode 100644
index 0000000..1ab3736
--- /dev/null
+++ b/libc/arch-arm64/syscalls/___fchmodat.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmodat)
+    mov     x8, __NR_fchmodat
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(___fchmodat)
+.hidden ___fchmodat
diff --git a/libc/arch-arm64/syscalls/__clock_nanosleep.S b/libc/arch-arm64/syscalls/__clock_nanosleep.S
new file mode 100644
index 0000000..1df15d6
--- /dev/null
+++ b/libc/arch-arm64/syscalls/__clock_nanosleep.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__clock_nanosleep)
+    mov     x8, __NR_clock_nanosleep
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(__clock_nanosleep)
+.hidden __clock_nanosleep
diff --git a/libc/arch-arm64/syscalls/__fstatfs.S b/libc/arch-arm64/syscalls/__fstatfs.S
new file mode 100644
index 0000000..7e350d6
--- /dev/null
+++ b/libc/arch-arm64/syscalls/__fstatfs.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__fstatfs)
+    mov     x8, __NR_fstatfs
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(__fstatfs)
+.hidden __fstatfs
diff --git a/libc/arch-arm64/syscalls/__rt_sigqueueinfo.S b/libc/arch-arm64/syscalls/__rt_sigqueueinfo.S
new file mode 100644
index 0000000..2b23e18
--- /dev/null
+++ b/libc/arch-arm64/syscalls/__rt_sigqueueinfo.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__rt_sigqueueinfo)
+    mov     x8, __NR_rt_sigqueueinfo
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(__rt_sigqueueinfo)
+.hidden __rt_sigqueueinfo
diff --git a/libc/arch-arm64/syscalls/__statfs.S b/libc/arch-arm64/syscalls/__statfs.S
new file mode 100644
index 0000000..962c590
--- /dev/null
+++ b/libc/arch-arm64/syscalls/__statfs.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__statfs)
+    mov     x8, __NR_statfs
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(__statfs)
+.hidden __statfs
diff --git a/libc/arch-arm64/syscalls/_exit.S b/libc/arch-arm64/syscalls/_exit.S
index edf6744..d50f38d 100644
--- a/libc/arch-arm64/syscalls/_exit.S
+++ b/libc/arch-arm64/syscalls/_exit.S
@@ -13,5 +13,4 @@
     ret
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-arm64/syscalls/clock_nanosleep.S b/libc/arch-arm64/syscalls/clock_nanosleep.S
deleted file mode 100644
index 349c5cc..0000000
--- a/libc/arch-arm64/syscalls/clock_nanosleep.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(clock_nanosleep)
-    mov     x8, __NR_clock_nanosleep
-    svc     #0
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno_internal
-
-    ret
-END(clock_nanosleep)
diff --git a/libc/arch-arm64/syscalls/close.S b/libc/arch-arm64/syscalls/close.S
deleted file mode 100644
index 3624581..0000000
--- a/libc/arch-arm64/syscalls/close.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(close)
-    mov     x8, __NR_close
-    svc     #0
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno_internal
-
-    ret
-END(close)
diff --git a/libc/arch-arm64/syscalls/faccessat.S b/libc/arch-arm64/syscalls/faccessat.S
deleted file mode 100644
index 4c96cfa..0000000
--- a/libc/arch-arm64/syscalls/faccessat.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(faccessat)
-    mov     x8, __NR_faccessat
-    svc     #0
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno_internal
-
-    ret
-END(faccessat)
diff --git a/libc/arch-arm64/syscalls/fallocate.S b/libc/arch-arm64/syscalls/fallocate.S
index ef3d4a4..d42a0ba 100644
--- a/libc/arch-arm64/syscalls/fallocate.S
+++ b/libc/arch-arm64/syscalls/fallocate.S
@@ -13,5 +13,4 @@
     ret
 END(fallocate)
 
-    .globl fallocate64
-    .equ fallocate64, fallocate
+ALIAS_SYMBOL(fallocate64, fallocate)
diff --git a/libc/arch-arm64/syscalls/fchmod.S b/libc/arch-arm64/syscalls/fchmod.S
deleted file mode 100644
index 83a8060..0000000
--- a/libc/arch-arm64/syscalls/fchmod.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmod)
-    mov     x8, __NR_fchmod
-    svc     #0
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno_internal
-
-    ret
-END(fchmod)
diff --git a/libc/arch-arm64/syscalls/fchmodat.S b/libc/arch-arm64/syscalls/fchmodat.S
deleted file mode 100644
index 8c5bb0e..0000000
--- a/libc/arch-arm64/syscalls/fchmodat.S
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmodat)
-    mov     x8, __NR_fchmodat
-    svc     #0
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno_internal
-
-    ret
-END(fchmodat)
diff --git a/libc/arch-arm64/syscalls/fstat64.S b/libc/arch-arm64/syscalls/fstat64.S
index 85a07f5..f7c9f54 100644
--- a/libc/arch-arm64/syscalls/fstat64.S
+++ b/libc/arch-arm64/syscalls/fstat64.S
@@ -13,5 +13,4 @@
     ret
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-arm64/syscalls/fstatat64.S b/libc/arch-arm64/syscalls/fstatat64.S
index dafd982..9f8f2c5 100644
--- a/libc/arch-arm64/syscalls/fstatat64.S
+++ b/libc/arch-arm64/syscalls/fstatat64.S
@@ -13,5 +13,4 @@
     ret
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-arm64/syscalls/fstatfs64.S b/libc/arch-arm64/syscalls/fstatfs64.S
deleted file mode 100644
index 2ca2dcd..0000000
--- a/libc/arch-arm64/syscalls/fstatfs64.S
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fstatfs64)
-    mov     x8, __NR_fstatfs
-    svc     #0
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno_internal
-
-    ret
-END(fstatfs64)
-
-    .globl fstatfs
-    .equ fstatfs, fstatfs64
diff --git a/libc/arch-arm64/syscalls/ftruncate.S b/libc/arch-arm64/syscalls/ftruncate.S
index c6e99f5..c21e098 100644
--- a/libc/arch-arm64/syscalls/ftruncate.S
+++ b/libc/arch-arm64/syscalls/ftruncate.S
@@ -13,5 +13,4 @@
     ret
 END(ftruncate)
 
-    .globl ftruncate64
-    .equ ftruncate64, ftruncate
+ALIAS_SYMBOL(ftruncate64, ftruncate)
diff --git a/libc/arch-arm64/syscalls/getrlimit.S b/libc/arch-arm64/syscalls/getrlimit.S
index 518ab73..03ee9a8 100644
--- a/libc/arch-arm64/syscalls/getrlimit.S
+++ b/libc/arch-arm64/syscalls/getrlimit.S
@@ -13,5 +13,4 @@
     ret
 END(getrlimit)
 
-    .globl getrlimit64
-    .equ getrlimit64, getrlimit
+ALIAS_SYMBOL(getrlimit64, getrlimit)
diff --git a/libc/arch-arm64/syscalls/lseek.S b/libc/arch-arm64/syscalls/lseek.S
index de96df0..93afeb7 100644
--- a/libc/arch-arm64/syscalls/lseek.S
+++ b/libc/arch-arm64/syscalls/lseek.S
@@ -13,5 +13,4 @@
     ret
 END(lseek)
 
-    .globl lseek64
-    .equ lseek64, lseek
+ALIAS_SYMBOL(lseek64, lseek)
diff --git a/libc/arch-arm64/syscalls/mmap.S b/libc/arch-arm64/syscalls/mmap.S
index 64b955e..65371bc 100644
--- a/libc/arch-arm64/syscalls/mmap.S
+++ b/libc/arch-arm64/syscalls/mmap.S
@@ -13,5 +13,4 @@
     ret
 END(mmap)
 
-    .globl mmap64
-    .equ mmap64, mmap
+ALIAS_SYMBOL(mmap64, mmap)
diff --git a/libc/arch-arm64/syscalls/pread64.S b/libc/arch-arm64/syscalls/pread64.S
index eafc044..6c9f0e9 100644
--- a/libc/arch-arm64/syscalls/pread64.S
+++ b/libc/arch-arm64/syscalls/pread64.S
@@ -13,5 +13,4 @@
     ret
 END(pread64)
 
-    .globl pread
-    .equ pread, pread64
+ALIAS_SYMBOL(pread, pread64)
diff --git a/libc/arch-arm64/syscalls/prlimit64.S b/libc/arch-arm64/syscalls/prlimit64.S
index 2bece99..9c018ba 100644
--- a/libc/arch-arm64/syscalls/prlimit64.S
+++ b/libc/arch-arm64/syscalls/prlimit64.S
@@ -13,5 +13,4 @@
     ret
 END(prlimit64)
 
-    .globl prlimit
-    .equ prlimit, prlimit64
+ALIAS_SYMBOL(prlimit, prlimit64)
diff --git a/libc/arch-arm64/syscalls/pwrite64.S b/libc/arch-arm64/syscalls/pwrite64.S
index 6970954..1599c14 100644
--- a/libc/arch-arm64/syscalls/pwrite64.S
+++ b/libc/arch-arm64/syscalls/pwrite64.S
@@ -13,5 +13,4 @@
     ret
 END(pwrite64)
 
-    .globl pwrite
-    .equ pwrite, pwrite64
+ALIAS_SYMBOL(pwrite, pwrite64)
diff --git a/libc/arch-arm64/syscalls/sendfile.S b/libc/arch-arm64/syscalls/sendfile.S
index 17a0d46..50ac12d 100644
--- a/libc/arch-arm64/syscalls/sendfile.S
+++ b/libc/arch-arm64/syscalls/sendfile.S
@@ -13,5 +13,4 @@
     ret
 END(sendfile)
 
-    .globl sendfile64
-    .equ sendfile64, sendfile
+ALIAS_SYMBOL(sendfile64, sendfile)
diff --git a/libc/arch-arm64/syscalls/sethostname.S b/libc/arch-arm64/syscalls/sethostname.S
new file mode 100644
index 0000000..2dea457
--- /dev/null
+++ b/libc/arch-arm64/syscalls/sethostname.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sethostname)
+    mov     x8, __NR_sethostname
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno_internal
+
+    ret
+END(sethostname)
diff --git a/libc/arch-arm64/syscalls/setrlimit.S b/libc/arch-arm64/syscalls/setrlimit.S
index 6cb6b98..52c75a1 100644
--- a/libc/arch-arm64/syscalls/setrlimit.S
+++ b/libc/arch-arm64/syscalls/setrlimit.S
@@ -13,5 +13,4 @@
     ret
 END(setrlimit)
 
-    .globl setrlimit64
-    .equ setrlimit64, setrlimit
+ALIAS_SYMBOL(setrlimit64, setrlimit)
diff --git a/libc/arch-arm64/syscalls/statfs64.S b/libc/arch-arm64/syscalls/statfs64.S
deleted file mode 100644
index ec8c588..0000000
--- a/libc/arch-arm64/syscalls/statfs64.S
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(statfs64)
-    mov     x8, __NR_statfs
-    svc     #0
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno_internal
-
-    ret
-END(statfs64)
-
-    .globl statfs
-    .equ statfs, statfs64
diff --git a/libc/arch-arm64/syscalls/truncate.S b/libc/arch-arm64/syscalls/truncate.S
index 0e5a33e..e01cc7d 100644
--- a/libc/arch-arm64/syscalls/truncate.S
+++ b/libc/arch-arm64/syscalls/truncate.S
@@ -13,5 +13,4 @@
     ret
 END(truncate)
 
-    .globl truncate64
-    .equ truncate64, truncate
+ALIAS_SYMBOL(truncate64, truncate)
diff --git a/libc/arch-common/bionic/crtbegin.c b/libc/arch-common/bionic/crtbegin.c
index fa9f3f3..c46405c 100644
--- a/libc/arch-common/bionic/crtbegin.c
+++ b/libc/arch-common/bionic/crtbegin.c
@@ -59,6 +59,7 @@
 
 #include "__dso_handle.h"
 #include "atexit.h"
+#include "pthread_atfork.h"
 #ifdef __i386__
 # include "../../arch-x86/bionic/__stack_chk_fail_local.h"
 #endif
diff --git a/libc/arch-common/bionic/crtbegin_so.c b/libc/arch-common/bionic/crtbegin_so.c
index 641e45a..3754363 100644
--- a/libc/arch-common/bionic/crtbegin_so.c
+++ b/libc/arch-common/bionic/crtbegin_so.c
@@ -56,6 +56,7 @@
 # include "__dso_handle_so.h"
 # include "atexit.h"
 #endif
+#include "pthread_atfork.h"
 #ifdef __i386__
 # include "../../arch-x86/bionic/__stack_chk_fail_local.h"
 #endif
diff --git a/libc/arch-common/bionic/crtbrand.S b/libc/arch-common/bionic/crtbrand.S
new file mode 100644
index 0000000..11bbfbe
--- /dev/null
+++ b/libc/arch-common/bionic/crtbrand.S
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+	.section	.note.android.ident,"a",%note
+	.align	2
+	.type	abitag, %object
+abitag:
+	.long	2f-1f			/* int32_t namesz */
+	.long	3f-2f			/* int32_t descsz */
+	.long	1			/* int32_t type */
+1:	.ascii	"Android\0"		/* char name[] */
+2:	.long	PLATFORM_SDK_VERSION	/* int32_t android_api */
+3:
+	.size	abitag, .-abitag
diff --git a/libc/arch-common/bionic/pthread_atfork.h b/libc/arch-common/bionic/pthread_atfork.h
new file mode 100644
index 0000000..0c48a12
--- /dev/null
+++ b/libc/arch-common/bionic/pthread_atfork.h
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+extern void* __dso_handle;
+
+extern int __register_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void), void* dso);
+
+#ifndef _LIBC
+// Libc used to export this in previous versions, therefore it needs
+// to remain global for binary compatibility.
+__attribute__ ((visibility ("hidden")))
+#endif
+int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) {
+  return __register_atfork(prepare, parent, child, &__dso_handle);
+}
+
diff --git a/libc/arch-mips/bionic/_setjmp.S b/libc/arch-mips/bionic/_setjmp.S
deleted file mode 100644
index d237e6d..0000000
--- a/libc/arch-mips/bionic/_setjmp.S
+++ /dev/null
@@ -1,150 +0,0 @@
-/*	$OpenBSD: _setjmp.S,v 1.4 2005/08/07 16:40:15 espie Exp $ */
-
-/*
- * Copyright (c) 2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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. Neither the name of Opsycon AB nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 <private/bionic_asm.h>
-#include <machine/regnum.h>
-#include <machine/signal.h>
-
-/*
- * _setjmp, _longjmp (not restoring signal state)
- *
- * XXX FPSET should probably be taken from SR setting. hmmm...
- *  GPOFF and FRAMESIZE must be the same for both _setjmp and _longjmp!
- *
- */
-
-FRAMESZ= MKFSIZ(0,4)
-GPOFF= FRAMESZ-2*REGSZ
-
-LEAF(_setjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, _setjmp)
-	SAVE_GP(GPOFF)
-	.set	noreorder
-#if defined(__mips64)
-	dli	v0, 0xACEDBADE			# sigcontext magic number
-#else
-	li	v0, 0xACEDBADE			# sigcontext magic number
-#endif
-	REG_S	v0, SC_REGS+ZERO*REGSZ(a0)
-	REG_S	s0, SC_REGS+S0*REGSZ(a0)
-	REG_S	s1, SC_REGS+S1*REGSZ(a0)
-	REG_S	s2, SC_REGS+S2*REGSZ(a0)
-	REG_S	s3, SC_REGS+S3*REGSZ(a0)
-	REG_S	s4, SC_REGS+S4*REGSZ(a0)
-	REG_S	s5, SC_REGS+S5*REGSZ(a0)
-	REG_S	s6, SC_REGS+S6*REGSZ(a0)
-	REG_S	s7, SC_REGS+S7*REGSZ(a0)
-	REG_S	s8, SC_REGS+S8*REGSZ(a0)
-	REG_L	v0, GPOFF(sp)
-	REG_S	v0, SC_REGS+GP*REGSZ(a0)
-	PTR_ADDU v0, sp, FRAMESZ
-	REG_S	v0, SC_REGS+SP*REGSZ(a0)
-	REG_S	ra, SC_PC(a0)
-
-#if !defined(SOFTFLOAT)
-	li	v0, 1				# be nice if we could tell
-	REG_S	v0, SC_FPUSED(a0)		# sc_fpused = 1
-	cfc1	v0, $31
-	s.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	s.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	s.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	s.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	s.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	s.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	s.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	s.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	s.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	s.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	s.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	s.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
-#endif
-	REG_S	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-#endif /* !SOFTFLOAT */
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	j	ra
-	 move	v0, zero
-END(_setjmp)
-
-LEAF(_longjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, _longjmp)
-	SAVE_GP(GPOFF)
-	.set    noreorder
-	REG_L	v0, SC_REGS+ZERO*REGSZ(a0)
-	bne	v0, 0xACEDBADE, botch		# jump if error
-	REG_L	ra, SC_PC(a0)
-	REG_L	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-	REG_L	s0, SC_REGS+S0*REGSZ(a0)
-	REG_L	s1, SC_REGS+S1*REGSZ(a0)
-	REG_L	s2, SC_REGS+S2*REGSZ(a0)
-	REG_L	s3, SC_REGS+S3*REGSZ(a0)
-	REG_L	s4, SC_REGS+S4*REGSZ(a0)
-	REG_L	s5, SC_REGS+S5*REGSZ(a0)
-	REG_L	s6, SC_REGS+S6*REGSZ(a0)
-	REG_L	s7, SC_REGS+S7*REGSZ(a0)
-	REG_L	s8, SC_REGS+S8*REGSZ(a0)
-	REG_L	gp, SC_REGS+GP*REGSZ(a0)
-	REG_L	sp, SC_REGS+SP*REGSZ(a0)
-#if !defined(SOFTFLOAT)
-	ctc1	v0, $31
-	l.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	l.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	l.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	l.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	l.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	l.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	l.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	l.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	l.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	l.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	l.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	l.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
-#endif
-#endif /* !SOFTFLOAT */
-	bne	a1, zero, 1f
-	 nop
-	li	a1, 1			# never return 0!
-1:
-	j	ra
-	 move	v0, a1
-
-botch:
-	jal	longjmperror
-	nop
-	jal	abort
-	nop
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-END(_longjmp)
diff --git a/libc/arch-mips/bionic/atexit.h b/libc/arch-mips/bionic/atexit.h
deleted file mode 100644
index 759008c..0000000
--- a/libc/arch-mips/bionic/atexit.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-extern void *__dso_handle;
-extern int __cxa_atexit(void (*func)(void *), void *arg, void *dso);
-
-__attribute__ ((visibility ("hidden")))
-int atexit(void (*func)(void))
-{
-  return (__cxa_atexit((void (*)(void *))func, (void *)0, &__dso_handle));
-}
diff --git a/libc/arch-mips/bionic/crtbegin.c b/libc/arch-mips/bionic/crtbegin.c
index 28e8817..d72ec7b 100644
--- a/libc/arch-mips/bionic/crtbegin.c
+++ b/libc/arch-mips/bionic/crtbegin.c
@@ -91,4 +91,5 @@
 );
 
 #include "../../arch-common/bionic/__dso_handle.h"
-#include "atexit.h"
+#include "../../arch-common/bionic/atexit.h"
+#include "../../arch-common/bionic/pthread_atfork.h"
diff --git a/libc/arch-mips/bionic/crtbegin_so.c b/libc/arch-mips/bionic/crtbegin_so.c
deleted file mode 100644
index d664ce6..0000000
--- a/libc/arch-mips/bionic/crtbegin_so.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-extern void __cxa_finalize(void *);
-extern void *__dso_handle;
-
-__attribute__((visibility("hidden"),destructor))
-void __on_dlclose() {
-  __cxa_finalize(&__dso_handle);
-}
-
-#include "../../arch-common/bionic/__dso_handle_so.h"
-#include "atexit.h"
diff --git a/libc/arch-mips/bionic/setjmp.S b/libc/arch-mips/bionic/setjmp.S
index 31786be..bed9562 100644
--- a/libc/arch-mips/bionic/setjmp.S
+++ b/libc/arch-mips/bionic/setjmp.S
@@ -1,5 +1,30 @@
-/*      $OpenBSD: setjmp.S,v 1.5 2005/08/07 16:40:15 espie Exp $ */
-
+/*
+ * Copyright (C) 2014-2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
  *
@@ -28,14 +53,122 @@
  * SUCH DAMAGE.
  *
  */
+/*-
+ * Copyright (c) 1991, 1993, 1995,
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Havard Eidnes.
+ *
+ * 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. 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.
+ */
+/*
+ * Copyright (c) 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Ralph Campbell.
+ *
+ * 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. 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.
+ *
+ *	@(#)signal.h	8.1 (Berkeley) 6/10/93
+ */
 
 #include <private/bionic_asm.h>
-#include <machine/regnum.h>
-#include <machine/signal.h>
+#include <machine/setjmp.h>
+
+/* jmpbuf is declared to users as an array of longs, which is only
+ * 4-byte aligned in 32-bit builds.  The Mips jmpbuf begins with a
+ * dynamically-sized 0- or 4-byte unused filler so that double-prec FP regs
+ * are saved to 8-byte-aligned mem cells.
+ * All the following jmpbuf offsets are from the rounded-DOWN base addr.
+ */
+
+/* Fields of same size on all MIPS abis: */
+/*     	field:		byte offset:	size:						*/
+/*     	dynam filler	(0*4)		   0-4 bytes of rounddown filler, DON'T TOUCH!!
+						often overlays user storage!!		*/
+#define	SC_MAGIC_OFFSET	(1*4)		/* 4 bytes, identify jmpbuf, first actual field */
+#define	SC_FLAG_OFFSET	(2*4)		/* 4 bytes, savesigs flag */
+#define	SC_FPSR_OFFSET	(3*4)		/* 4 bytes, floating point control/status reg */
+/* following fields are 8-byte aligned */
+#define	SC_MASK_OFFSET	(4*4)		/* 16 bytes, mips32/mips64 version of sigset_t */
+#define	SC_SPARE_OFFSET	(8*4)		/* 8 bytes, reserved for future uses */
+
+/* Registers that are 4-byte on mips32 o32, and 8-byte on mips64 n64 abi */
+#define	SC_REGS_OFFSET	(10*4)		/* SC_REGS_BYTES */
+#define	SC_REGS_SAVED	12 /*regs*/	/* ra,s0-s8,gp,sp */
+#define	SC_REGS_BYTES   (SC_REGS_SAVED*REGSZ)
+#define	SC_REGS		SC_REGS_OFFSET
+
+/* Double floating pt registers are 8-bytes on all abis,
+ * but the number of saved fp regs varies for o32/n32 versus n64 abis:
+ */
+
+#ifdef __LP64__
+#define	SC_FPREGS_SAVED	8  /* all  fp regs f24,f25,f26,f27,f28,f29,f30,f31 */
+#else
+#define	SC_FPREGS_SAVED	6  /* even fp regs f20,f22,f24,f26,f28,f30 */
+#endif
+
+#define	SC_FPREGS_OFFSET (SC_REGS_OFFSET + SC_REGS_BYTES)  /* SC_FPREGS_BYTES */
+#define	SC_FPREGS_BYTES (SC_FPREGS_SAVED*REGSZ_FP)
+#define	SC_FPREGS	SC_FPREGS_OFFSET
+
+#define	SC_TOTAL_BYTES	(SC_FPREGS_OFFSET + SC_FPREGS_BYTES)
+#define	SC_TOTAL_LONGS	(SC_TOTAL_BYTES/REGSZ)
+
+#if SC_TOTAL_LONGS > _JBLEN
+#error _JBLEN is too small
+#endif
 
 /*
- * setjmp, longjmp implementation for libc. this code depends
- * on the layout of the struct sigcontext in machine/signal.h.
+ *
+ *  GPOFF and FRAMESIZE must be the same for all setjmp/longjmp routines
  *
  */
 
@@ -45,130 +178,179 @@
 GPOFF= FRAMESZ-2*REGSZ
 RAOFF= FRAMESZ-1*REGSZ
 
-NON_LEAF(setjmp, FRAMESZ, ra)
+NON_LEAF(sigsetjmp, FRAMESZ, ra)
 	.mask	0x80000000, RAOFF
 	PTR_SUBU sp, FRAMESZ			# allocate stack frame
-	SETUP_GP64(GPOFF, setjmp)
+	SETUP_GP64(GPOFF, sigsetjmp)
 	SAVE_GP(GPOFF)
 	.set	reorder
-	REG_S	ra, RAOFF(sp)			# save state
+
+setjmp_common:
+#ifndef __LP64__
+	li	t0, ~7
+	and	a0, t0				# round jmpbuf addr DOWN to 8-byte boundary
+#endif
+	sw	a1, SC_FLAG_OFFSET(a0)		# save savesigs flag
+	beqz	a1, 1f				# do saving of signal mask?
+
+	REG_S	ra, RAOFF(sp)			# spill state
 	REG_S	a0, A0OFF(sp)
-
-	move	a0, zero			# get current signal mask
-	jal	sigblock
-
-	REG_L	v1, A0OFF(sp)			# v1 = jmpbuf
-	REG_S	v0, SC_MASK(v1)			# save sc_mask = sigblock(0)
-
-	REG_L	a0, A0OFF(sp)			# restore jmpbuf
+	# call sigprocmask(int how ignored, sigset_t* null, sigset_t* SC_MASK(a0)):
+	LA	a2, SC_MASK_OFFSET(a0)		# gets current signal mask
+	li	a0, 0				# how; ignored when new mask is null
+	li	a1, 0				# null new mask
+	jal	sigprocmask			# get current signal mask
+	REG_L	a0, A0OFF(sp)
 	REG_L	ra, RAOFF(sp)
-	REG_S	ra, SC_PC(a0)			# sc_pc = return address
-#if defined(__mips64)
-	dli	v0, 0xACEDBADE			# sigcontext magic number
-#else
+1:
 	li	v0, 0xACEDBADE			# sigcontext magic number
-#endif
-	REG_S	v0, SC_REGS+ZERO*REGSZ(a0)
-	REG_S	s0, SC_REGS+S0*REGSZ(a0)
-	REG_S	s1, SC_REGS+S1*REGSZ(a0)
-	REG_S	s2, SC_REGS+S2*REGSZ(a0)
-	REG_S	s3, SC_REGS+S3*REGSZ(a0)
-	REG_S	s4, SC_REGS+S4*REGSZ(a0)
-	REG_S	s5, SC_REGS+S5*REGSZ(a0)
-	REG_S	s6, SC_REGS+S6*REGSZ(a0)
-	REG_S	s7, SC_REGS+S7*REGSZ(a0)
-	REG_S	s8, SC_REGS+S8*REGSZ(a0)
+	sw	v0, SC_MAGIC_OFFSET(a0)
+	# callee-saved long-sized regs:
+	REG_S	ra, SC_REGS+0*REGSZ(a0)
+	REG_S	s0, SC_REGS+1*REGSZ(a0)
+	REG_S	s1, SC_REGS+2*REGSZ(a0)
+	REG_S	s2, SC_REGS+3*REGSZ(a0)
+	REG_S	s3, SC_REGS+4*REGSZ(a0)
+	REG_S	s4, SC_REGS+5*REGSZ(a0)
+	REG_S	s5, SC_REGS+6*REGSZ(a0)
+	REG_S	s6, SC_REGS+7*REGSZ(a0)
+	REG_S	s7, SC_REGS+8*REGSZ(a0)
+	REG_S	s8, SC_REGS+9*REGSZ(a0)
 	REG_L	v0, GPOFF(sp)
-	REG_S	v0, SC_REGS+GP*REGSZ(a0)
+	REG_S	v0, SC_REGS+10*REGSZ(a0)	# save gp
 	PTR_ADDU v0, sp, FRAMESZ
-	REG_S	v0, SC_REGS+SP*REGSZ(a0)
+	REG_S	v0, SC_REGS+11*REGSZ(a0)	# save orig sp
 
-#if !defined(SOFTFLOAT)
-	li	v0, 1				# be nice if we could tell
-	REG_S	v0, SC_FPUSED(a0)		# sc_fpused = 1
 	cfc1	v0, $31
-	s.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	s.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	s.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	s.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	s.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	s.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	s.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	s.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	s.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	s.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	s.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	s.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
+
+#ifdef __LP64__
+	# callee-saved fp regs on mips n64 ABI are $f24..$f31
+	s.d	$f24, SC_FPREGS+0*REGSZ_FP(a0)
+	s.d	$f25, SC_FPREGS+1*REGSZ_FP(a0)
+	s.d	$f26, SC_FPREGS+2*REGSZ_FP(a0)
+	s.d	$f27, SC_FPREGS+3*REGSZ_FP(a0)
+	s.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
+	s.d	$f29, SC_FPREGS+5*REGSZ_FP(a0)
+	s.d	$f30, SC_FPREGS+6*REGSZ_FP(a0)
+	s.d	$f31, SC_FPREGS+7*REGSZ_FP(a0)
+#else
+	# callee-saved fp regs on mips o32 ABI are
+	#   the even-numbered double fp regs $f20,$f22,...$f30
+	s.d	$f20, SC_FPREGS+0*REGSZ_FP(a0)
+	s.d	$f22, SC_FPREGS+1*REGSZ_FP(a0)
+	s.d	$f24, SC_FPREGS+2*REGSZ_FP(a0)
+	s.d	$f26, SC_FPREGS+3*REGSZ_FP(a0)
+	s.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
+	s.d	$f30, SC_FPREGS+5*REGSZ_FP(a0)
 #endif
-	REG_S	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-#endif /* !SOFTFLOAT */
+	sw	v0, SC_FPSR_OFFSET(a0)
 	move	v0, zero
 	RESTORE_GP64
 	PTR_ADDU sp, FRAMESZ
 	j	ra
+END(sigsetjmp)
 
-botch:
-	jal	longjmperror
-	jal	abort
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
+
+# Alternate entry points:
+
+NON_LEAF(setjmp, FRAMESZ, ra)
+	.mask	0x80000000, RAOFF
+	PTR_SUBU sp, FRAMESZ
+	SETUP_GP64(GPOFF, setjmp)		# can't share sigsetjmp's gp code
+	SAVE_GP(GPOFF)
+	.set	reorder
+
+	li	a1, 1				# save/restore signals state
+	b	setjmp_common			# tail call
 END(setjmp)
 
 
-LEAF(longjmp, FRAMESZ)
+NON_LEAF(_setjmp, FRAMESZ, ra)
+	.mask	0x80000000, RAOFF
 	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, longjmp)
+	SETUP_GP64(GPOFF, _setjmp)		# can't share sigsetjmp's gp code
 	SAVE_GP(GPOFF)
 	.set	reorder
-	sw	a1, A1OFF(sp)
-	sw	a0, A0OFF(sp)
 
-	lw	a0, SC_MASK(a0)
-	jal	sigsetmask
+	li	a1, 0				# don't save/restore signals
+	b	setjmp_common			# tail call
+END(_setjmp)
 
-	lw	a0, A0OFF(sp)
-	lw	a1, A1OFF(sp)
 
-	.set	noreorder
-	REG_L	v0, SC_REGS+ZERO*REGSZ(a0)
-	bne	v0, 0xACEDBADE, botch		# jump if error
-	REG_L	ra, SC_PC(a0)
-	REG_L	s0, SC_REGS+S0*REGSZ(a0)
-	REG_L	s1, SC_REGS+S1*REGSZ(a0)
-	REG_L	s2, SC_REGS+S2*REGSZ(a0)
-	REG_L	s3, SC_REGS+S3*REGSZ(a0)
-	REG_L	s4, SC_REGS+S4*REGSZ(a0)
-	REG_L	s5, SC_REGS+S5*REGSZ(a0)
-	REG_L	s6, SC_REGS+S6*REGSZ(a0)
-	REG_L	s7, SC_REGS+S7*REGSZ(a0)
-	REG_L	s8, SC_REGS+S8*REGSZ(a0)
-	REG_L	gp, SC_REGS+GP*REGSZ(a0)
-	REG_L	sp, SC_REGS+SP*REGSZ(a0)
+NON_LEAF(siglongjmp, FRAMESZ, ra)
+	.mask	0x80000000, RAOFF
+	PTR_SUBU sp, FRAMESZ
+	SETUP_GP64(GPOFF, siglongjmp)
+	SAVE_GP(GPOFF)
+	.set	reorder
 
-#if !defined(SOFTFLOAT)
-	REG_L	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-	ctc1	v0, $31
-	l.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	l.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	l.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	l.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	l.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	l.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	l.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	l.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	l.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	l.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	l.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	l.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
+#ifndef __LP64__
+	li	t0, ~7
+	and	a0, t0				# round jmpbuf addr DOWN to 8-byte boundary
 #endif
-#endif /* !SOFTFLOAT */
+	lw	v0, SC_MAGIC_OFFSET(a0)
+	li	t0, 0xACEDBADE
+	bne	v0, t0, longjmp_botch		# jump if error
+
+	lw	t0, SC_FLAG_OFFSET(a0)		# get savesigs flag
+	beqz	t0, 1f				# restore signal mask?
+
+	REG_S	a1, A1OFF(sp)			# temp spill
+	REG_S	a0, A0OFF(sp)
+        # call sigprocmask(int how SIG_SETMASK, sigset_t* SC_MASK(a0), sigset_t* null):
+	LA	a1, SC_MASK_OFFSET(a0)		# signals being restored
+	li	a0, 3				# mips SIG_SETMASK
+	li	a2, 0				# null
+	jal	sigprocmask			# restore signal mask
+	REG_L	a0, A0OFF(sp)
+	REG_L	a1, A1OFF(sp)
+1:
+	# callee-saved long-sized regs:
+	REG_L	ra, SC_REGS+0*REGSZ(a0)
+	REG_L	s0, SC_REGS+1*REGSZ(a0)
+	REG_L	s1, SC_REGS+2*REGSZ(a0)
+	REG_L	s2, SC_REGS+3*REGSZ(a0)
+	REG_L	s3, SC_REGS+4*REGSZ(a0)
+	REG_L	s4, SC_REGS+5*REGSZ(a0)
+	REG_L	s5, SC_REGS+6*REGSZ(a0)
+	REG_L	s6, SC_REGS+7*REGSZ(a0)
+	REG_L	s7, SC_REGS+8*REGSZ(a0)
+	REG_L	s8, SC_REGS+9*REGSZ(a0)
+	REG_L	gp, SC_REGS+10*REGSZ(a0)
+	REG_L	sp, SC_REGS+11*REGSZ(a0)
+
+	lw	v0, SC_FPSR_OFFSET(a0)
+	ctc1	v0, $31			# restore old fr mode before fp values
+#ifdef __LP64__
+	# callee-saved fp regs on mips n64 ABI are $f24..$f31
+	l.d	$f24, SC_FPREGS+0*REGSZ_FP(a0)
+	l.d	$f25, SC_FPREGS+1*REGSZ_FP(a0)
+	l.d	$f26, SC_FPREGS+2*REGSZ_FP(a0)
+	l.d	$f27, SC_FPREGS+3*REGSZ_FP(a0)
+	l.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
+	l.d	$f29, SC_FPREGS+5*REGSZ_FP(a0)
+	l.d	$f30, SC_FPREGS+6*REGSZ_FP(a0)
+	l.d	$f31, SC_FPREGS+7*REGSZ_FP(a0)
+#else
+	# callee-saved fp regs on mips o32 ABI are
+	#   the even-numbered double fp regs $f20,$f22,...$f30
+	l.d	$f20, SC_FPREGS+0*REGSZ_FP(a0)
+	l.d	$f22, SC_FPREGS+1*REGSZ_FP(a0)
+	l.d	$f24, SC_FPREGS+2*REGSZ_FP(a0)
+	l.d	$f26, SC_FPREGS+3*REGSZ_FP(a0)
+	l.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
+	l.d	$f30, SC_FPREGS+5*REGSZ_FP(a0)
+#endif
 	bne	a1, zero, 1f
-	 nop
 	li	a1, 1			# never return 0!
 1:
-	j	ra
-	 move	v0, a1
+	move	v0, a1
+	j	ra			# return to setjmp call site
 
-END(longjmp)
+longjmp_botch:
+	jal	longjmperror
+	jal	abort
+END(siglongjmp)
+
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-mips/bionic/sigsetjmp.S b/libc/arch-mips/bionic/sigsetjmp.S
deleted file mode 100644
index 9d2e5ea..0000000
--- a/libc/arch-mips/bionic/sigsetjmp.S
+++ /dev/null
@@ -1,77 +0,0 @@
-/* $OpenBSD: sigsetjmp.S,v 1.5 2005/08/07 16:40:15 espie Exp $ */
-/*-
- * Copyright (c) 1991, 1993, 1995,
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Havard Eidnes.
- *
- * 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. 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.
- */
-
-#include <private/bionic_asm.h>
-#include <machine/regnum.h>
-#include <machine/setjmp.h>
-
-/*
- * trampolines for sigsetjmp and  siglongjmp save and restore mask.
- *
- */
-FRAMESZ= MKFSIZ(1,1)
-GPOFF= FRAMESZ-2*REGSZ
-
-LEAF(sigsetjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, sigsetjmp)
-	.set	reorder
-	REG_S	a1, (_JBLEN*REGSZ)(a0)		# save "savemask"
-	bne	a1, 0x0, 1f			# do saving of signal mask?
-	LA	t9, _setjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr t9
-
-1:	LA	t9, setjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr t9
-END(sigsetjmp)
-
-LEAF(siglongjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, siglongjmp)
-	.set	reorder
-	REG_L	t0, (_JBLEN*REGSZ)(a0)		# get "savemask"
-	bne	t0, 0x0, 1f			# restore signal mask?
-	LA	t9, _longjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr	t9
-1:
-	LA	t9, longjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr	t9
-END(siglongjmp)
diff --git a/libc/arch-mips/include/machine/asm.h b/libc/arch-mips/include/machine/asm.h
index 5eacde3..cdc7914 100644
--- a/libc/arch-mips/include/machine/asm.h
+++ b/libc/arch-mips/include/machine/asm.h
@@ -28,9 +28,7 @@
 #ifndef _MIPS64_ASM_H
 #define _MIPS64_ASM_H
 
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 4
-#endif
+#define __bionic_asm_align 4
 
 #undef __bionic_asm_custom_entry
 #undef __bionic_asm_custom_end
diff --git a/libc/arch-mips/include/machine/elf_machdep.h b/libc/arch-mips/include/machine/elf_machdep.h
index d27d431..0aacedf 100644
--- a/libc/arch-mips/include/machine/elf_machdep.h
+++ b/libc/arch-mips/include/machine/elf_machdep.h
@@ -121,6 +121,7 @@
 #define	DT_MIPS_GOTSYM		0x70000013	/* first dynamic sym in got */
 #define DT_MIPS_HIPAGENO	0x70000014
 #define	DT_MIPS_RLD_MAP		0x70000016	/* address of loader map */
+#define DT_MIPS_RLD_MAP2	0x70000035	/* offset of loader map, used for PIE */
 
 /*
  * ELF Flags
diff --git a/libc/arch-mips/include/machine/endian.h b/libc/arch-mips/include/machine/endian.h
deleted file mode 100644
index 41a9004..0000000
--- a/libc/arch-mips/include/machine/endian.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*	$OpenBSD: endian.h,v 1.5 2006/02/27 23:35:59 miod Exp $ */
-
-/*
- * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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 AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _MIPS64_ENDIAN_H_
-#define _MIPS64_ENDIAN_H_
-
-#ifdef __GNUC__
-
-#if defined(__mips_isa_rev) && (__mips_isa_rev >= 2)
-#define __swap16md(x) ({					\
-    register uint16_t _x = (x);					\
-    register uint16_t _r;					\
-    __asm volatile ("wsbh %0, %1" : "=r" (_r) : "r" (_x));	\
-    _r;								\
-})
-
-#define __swap32md(x) ({					\
-    register uint32_t _x = (x);					\
-    register uint32_t _r;					\
-    __asm volatile ("wsbh %0, %1; rotr %0, %0, 16" : "=r" (_r) : "r" (_x)); \
-    _r;								\
-})
-
-#define __swap64md(x) ({					\
-    uint64_t _swap64md_x = (x);					\
-    (uint64_t) __swap32md(_swap64md_x >> 32) |			\
-        (uint64_t) __swap32md(_swap64md_x & 0xffffffff) << 32;	\
-})
-
-/* Tell sys/endian.h we have MD variants of the swap macros.  */
-#define MD_SWAP
-
-#endif  /* __mips32r2__ */
-#endif  /* __GNUC__ */
-
-#if defined(__MIPSEB__)
-#define _BYTE_ORDER _BIG_ENDIAN
-#else
-#define _BYTE_ORDER _LITTLE_ENDIAN
-#endif
-#define __STRICT_ALIGNMENT
-#include <sys/types.h>
-#include <sys/endian.h>
-
-#endif /* _MIPS64_ENDIAN_H_ */
diff --git a/libc/arch-mips/include/machine/exec.h b/libc/arch-mips/include/machine/exec.h
deleted file mode 100644
index 3c63f74..0000000
--- a/libc/arch-mips/include/machine/exec.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/*	$OpenBSD: exec.h,v 1.1 2004/10/18 19:05:36 grange Exp $	*/
-
-/*
- * Copyright (c) 1996-2004 Per Fogelstrom, Opsycon AB
- *
- * 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 AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _MIPS64_EXEC_H_
-#define _MIPS64_EXEC_H_
-
-#define	__LDPGSZ	4096
-
-/*
- *  Define what exec "formats" we should handle.
- */
-#define NATIVE_EXEC_ELF
-#define NATIVE_ELFSIZE 64
-#define	EXEC_SCRIPT
-
-/*
- *  If included from sys/exec.h define kernels ELF format.
- */
-#ifdef __LP64__
-#define	ARCH_ELFSIZE 64
-#define DB_ELFSIZE 64
-#define ELF_TARG_CLASS  ELFCLASS64
-#else
-#define	ARCH_ELFSIZE 32
-#define DB_ELFSIZE 32
-#define ELF_TARG_CLASS  ELFCLASS32
-#endif
-
-#if defined(__MIPSEB__)
-#define ELF_TARG_DATA		ELFDATA2MSB
-#else
-#define ELF_TARG_DATA		ELFDATA2LSB
-#endif
-#define ELF_TARG_MACH		EM_MIPS
-
-#define _NLIST_DO_ELF
-
-#if defined(_LP64)
-#define _KERN_DO_ELF64
-#if defined(COMPAT_O32)
-#define _KERN_DO_ELF
-#endif
-#else
-#define _KERN_DO_ELF
-#endif
-
-/* Information taken from MIPS ABI supplemental */
-
-/* Architecture dependent Segment types - p_type */
-#define PT_MIPS_REGINFO 0x70000000      /* Register usage information */
-
-/* Architecture dependent d_tag field for Elf32_Dyn.  */
-#define DT_MIPS_RLD_VERSION  0x70000001 /* Runtime Linker Interface ID */
-#define DT_MIPS_TIME_STAMP   0x70000002 /* Timestamp */
-#define DT_MIPS_ICHECKSUM    0x70000003 /* Cksum of ext. str. and com. sizes */
-#define DT_MIPS_IVERSION     0x70000004 /* Version string (string tbl index) */
-#define DT_MIPS_FLAGS        0x70000005 /* Flags */
-#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Segment base address */
-#define DT_MIPS_CONFLICT     0x70000008 /* Adr of .conflict section */
-#define DT_MIPS_LIBLIST      0x70000009 /* Address of .liblist section */
-#define DT_MIPS_LOCAL_GOTNO  0x7000000a /* Number of local .GOT entries */
-#define DT_MIPS_CONFLICTNO   0x7000000b /* Number of .conflict entries */
-#define DT_MIPS_LIBLISTNO    0x70000010 /* Number of .liblist entries */
-#define DT_MIPS_SYMTABNO     0x70000011 /* Number of .dynsym entries */
-#define DT_MIPS_UNREFEXTNO   0x70000012 /* First external DYNSYM */
-#define DT_MIPS_GOTSYM       0x70000013 /* First GOT entry in .dynsym */
-#define DT_MIPS_HIPAGENO     0x70000014 /* Number of GOT page table entries */
-#define DT_MIPS_RLD_MAP      0x70000016 /* Address of debug map pointer */
-
-#define DT_PROCNUM (DT_MIPS_RLD_MAP - DT_LOPROC + 1)
-
-/*
- * Legal values for e_flags field of Elf32_Ehdr.
- */
-#define EF_MIPS_NOREORDER	0x00000001	/* .noreorder was used */
-#define EF_MIPS_PIC		0x00000002	/* Contains PIC code */
-#define EF_MIPS_CPIC		0x00000004	/* Uses PIC calling sequence */
-#define	EF_MIPS_ABI2		0x00000020	/* -n32 on Irix 6 */
-#define	EF_MIPS_32BITMODE	0x00000100	/* 64 bit in 32 bit mode... */
-#define EF_MIPS_ARCH		0xf0000000	/* MIPS architecture level */
-#define	E_MIPS_ARCH_1		0x00000000
-#define	E_MIPS_ARCH_2		0x10000000
-#define	E_MIPS_ARCH_3		0x20000000
-#define	E_MIPS_ARCH_4		0x30000000
-#define	EF_MIPS_ABI		0x0000f000	/* ABI level */
-#define	E_MIPS_ABI_NONE		0x00000000	/* ABI level not set */
-#define	E_MIPS_ABI_O32		0x00001000
-#define	E_MIPS_ABI_O64		0x00002000
-#define	E_MIPS_ABI_EABI32	0x00004000
-#define	E_MIPS_ABI_EABI64	0x00004000
-
-/*
- * Mips special sections.
- */
-#define	SHN_MIPS_ACOMMON	0xff00		/* Allocated common symbols */
-#define	SHN_MIPS_SCOMMON	0xff03		/* Small common symbols */
-#define	SHN_MIPS_SUNDEFINED	0xff04		/* Small undefined symbols */
-
-/*
- * Legal values for sh_type field of Elf32_Shdr.
- */
-#define	SHT_MIPS_LIBLIST  0x70000000	/* Shared objects used in link */
-#define	SHT_MIPS_CONFLICT 0x70000002	/* Conflicting symbols */
-#define	SHT_MIPS_GPTAB    0x70000003	/* Global data area sizes */
-#define	SHT_MIPS_UCODE    0x70000004	/* Reserved for SGI/MIPS compilers */
-#define	SHT_MIPS_DEBUG    0x70000005	/* MIPS ECOFF debugging information */
-#define	SHT_MIPS_REGINFO  0x70000006	/* Register usage information */
-
-/*
- * Legal values for sh_flags field of Elf32_Shdr.
- */
-#define	SHF_MIPS_GPREL	0x10000000	/* Must be part of global data area */
-
-#if 0
-/*
- * Entries found in sections of type SHT_MIPS_GPTAB.
- */
-typedef union {
-	struct {
-		Elf32_Word gt_current_g_value;	/* -G val used in compilation */
-		Elf32_Word gt_unused;	/* Not used */
-	} gt_header;			/* First entry in section */
-	struct {
-		Elf32_Word gt_g_value;	/* If this val were used for -G */
-		Elf32_Word gt_bytes;	/* This many bytes would be used */
-	} gt_entry;			/* Subsequent entries in section */
-} Elf32_gptab;
-
-/*
- * Entry found in sections of type SHT_MIPS_REGINFO.
- */
-typedef struct {
-	Elf32_Word	ri_gprmask;	/* General registers used */
-	Elf32_Word	ri_cprmask[4];	/* Coprocessor registers used */
-	Elf32_Sword	ri_gp_value;	/* $gp register value */
-} Elf32_RegInfo;
-#endif
-
-
-/*
- * Mips relocations.
- */
-
-#define	R_MIPS_NONE	0	/* No reloc */
-#define	R_MIPS_16	1	/* Direct 16 bit */
-#define	R_MIPS_32	2	/* Direct 32 bit */
-#define	R_MIPS_REL32	3	/* PC relative 32 bit */
-#define	R_MIPS_26	4	/* Direct 26 bit shifted */
-#define	R_MIPS_HI16	5	/* High 16 bit */
-#define	R_MIPS_LO16	6	/* Low 16 bit */
-#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
-#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
-#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
-#define	R_MIPS_PC16	10	/* PC relative 16 bit */
-#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
-#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
-
-#define	R_MIPS_64	18
-
-#define	R_MIPS_REL32_64	((R_MIPS_64 << 8) | R_MIPS_REL32)
-
-
-#endif	/* !_MIPS64_EXEC_H_ */
diff --git a/libc/arch-mips/include/machine/regdef.h b/libc/arch-mips/include/machine/regdef.h
index ae18392..3a7cd68 100644
--- a/libc/arch-mips/include/machine/regdef.h
+++ b/libc/arch-mips/include/machine/regdef.h
@@ -37,6 +37,13 @@
 #ifndef _MIPS_REGDEF_H_
 #define _MIPS_REGDEF_H_
 
+#if (_MIPS_SIM == _ABI64) && !defined(__mips_n64)
+#define __mips_n64 1
+#endif
+#if (_MIPS_SIM == _ABIN32) &&  !defined(__mips_n32)
+#define __mips_n32 1
+#endif
+
 #define zero	$0	/* always zero */
 #define AT	$at	/* assembler temp */
 #define v0	$2	/* return value */
diff --git a/libc/arch-mips/include/machine/regnum.h b/libc/arch-mips/include/machine/regnum.h
deleted file mode 100644
index bfe1280..0000000
--- a/libc/arch-mips/include/machine/regnum.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*	$OpenBSD: regnum.h,v 1.3 2004/08/10 20:28:13 deraadt Exp $ */
-
-/*
- * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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 AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _MIPS64_REGNUM_H_
-#define _MIPS64_REGNUM_H_
-
-/*
- * Location of the saved registers relative to ZERO.
- * Usage is p->p_regs[XX].
- */
-#define ZERO	0
-#define AST	1
-#define V0	2
-#define V1	3
-#define A0	4
-#define A1	5
-#define A2	6
-#define A3	7
-#define T0	8
-#define T1	9
-#define T2	10
-#define T3	11
-#define T4	12
-#define T5	13
-#define T6	14
-#define T7	15
-#define S0	16
-#define S1	17
-#define S2	18
-#define S3	19
-#define S4	20
-#define S5	21
-#define S6	22
-#define S7	23
-#define T8	24
-#define T9	25
-#define K0	26
-#define K1	27
-#define GP	28
-#define SP	29
-#define S8	30
-#define RA	31
-#define	SR	32
-#define	PS	SR	/* alias for SR */
-#define MULLO	33
-#define MULHI	34
-#define BADVADDR 35
-#define CAUSE	36
-#define	PC	37
-#define	IC	38
-#define	CPL	39
-
-#define	NUMSAVEREGS 40		/* Number of registers saved in trap */
-
-#define FPBASE	NUMSAVEREGS
-#define F0	(FPBASE+0)
-#define F1	(FPBASE+1)
-#define F2	(FPBASE+2)
-#define F3	(FPBASE+3)
-#define F4	(FPBASE+4)
-#define F5	(FPBASE+5)
-#define F6	(FPBASE+6)
-#define F7	(FPBASE+7)
-#define F8	(FPBASE+8)
-#define F9	(FPBASE+9)
-#define F10	(FPBASE+10)
-#define F11	(FPBASE+11)
-#define F12	(FPBASE+12)
-#define F13	(FPBASE+13)
-#define F14	(FPBASE+14)
-#define F15	(FPBASE+15)
-#define F16	(FPBASE+16)
-#define F17	(FPBASE+17)
-#define F18	(FPBASE+18)
-#define F19	(FPBASE+19)
-#define F20	(FPBASE+20)
-#define F21	(FPBASE+21)
-#define F22	(FPBASE+22)
-#define F23	(FPBASE+23)
-#define F24	(FPBASE+24)
-#define F25	(FPBASE+25)
-#define F26	(FPBASE+26)
-#define F27	(FPBASE+27)
-#define F28	(FPBASE+28)
-#define F29	(FPBASE+29)
-#define F30	(FPBASE+30)
-#define F31	(FPBASE+31)
-#define	FSR	(FPBASE+32)
-
-#define	NUMFPREGS 33
-
-#define	NREGS	(NUMSAVEREGS + NUMFPREGS)
-
-#endif /* !_MIPS64_REGNUM_H_ */
diff --git a/libc/arch-mips/include/machine/setjmp.h b/libc/arch-mips/include/machine/setjmp.h
index 55ba7be..4067d51 100644
--- a/libc/arch-mips/include/machine/setjmp.h
+++ b/libc/arch-mips/include/machine/setjmp.h
@@ -5,6 +5,11 @@
 #ifndef _MIPS_SETJMP_H_
 #define _MIPS_SETJMP_H_
 
-#define	_JBLEN	157		/* size, in longs, of a jmp_buf */
+#ifdef __LP64__
+#define	_JBLEN	25	/* size, in 8-byte longs, of a mips64 jmp_buf/sigjmp_buf */
+#else
+#define	_JBLEN	157	/* historical size, in 4-byte longs, of a mips32 jmp_buf */
+			/* actual used size is 34 */
+#endif
 
 #endif /* !_MIPS_SETJMP_H_ */
diff --git a/libc/arch-mips/include/machine/signal.h b/libc/arch-mips/include/machine/signal.h
deleted file mode 100644
index b31715c..0000000
--- a/libc/arch-mips/include/machine/signal.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*	$OpenBSD: signal.h,v 1.8 2006/01/09 18:18:37 millert Exp $	*/
-
-/*
- * Copyright (c) 1992, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Ralph Campbell.
- *
- * 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. 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.
- *
- *	@(#)signal.h	8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _MIPS_SIGNAL_H_
-#define _MIPS_SIGNAL_H_
-
-#define	SC_REGMASK	(0*REGSZ)
-#define	SC_STATUS	(1*REGSZ)
-#define	SC_PC		(2*REGSZ)
-#define	SC_REGS		(SC_PC+8)
-#define	SC_FPREGS	(SC_REGS+32*8)
-#define	SC_ACX		(SC_FPREGS+32*REGSZ_FP)
-#define	SC_USED_MATH	(SC_ACX+3*REGSZ)
-/* OpenBSD compatibility */
-#define	SC_MASK		SC_REGMASK
-#define	SC_FPUSED	SC_USED_MATH
-
-#endif	/* !_MIPS_SIGNAL_H_ */
diff --git a/libc/include/sgidefs.h b/libc/arch-mips/include/sgidefs.h
similarity index 100%
rename from libc/include/sgidefs.h
rename to libc/arch-mips/include/sgidefs.h
diff --git a/libc/arch-mips/mips.mk b/libc/arch-mips/mips.mk
index ac75a4b..33eceab 100644
--- a/libc/arch-mips/mips.mk
+++ b/libc/arch-mips/mips.mk
@@ -1,36 +1,15 @@
 # 32-bit mips.
 
 #
-# Various kinds of LP32 cruft.
-#
-
-libc_bionic_src_files_mips += \
-    bionic/mmap.cpp \
-
-libc_common_src_files_mips += \
-    bionic/legacy_32_bit_support.cpp \
-    bionic/ndk_cruft.cpp \
-    bionic/time64.c \
-
-libc_netbsd_src_files_mips += \
-    upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \
-
-libc_openbsd_src_files_mips += \
-    upstream-openbsd/lib/libc/stdio/putw.c \
-
-#
 # Default implementations of functions that are commonly optimized.
 #
 
 libc_bionic_src_files_mips += \
+    arch-mips/string/memcmp.c \
     bionic/__memcpy_chk.cpp \
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memchr.c \
-    bionic/memcmp.c \
-    bionic/memmove.c \
-    bionic/memrchr.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
@@ -46,7 +25,9 @@
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
 libc_openbsd_src_files_mips += \
-    upstream-openbsd/lib/libc/string/bcopy.c \
+    upstream-openbsd/lib/libc/string/memchr.c \
+    upstream-openbsd/lib/libc/string/memmove.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpcpy.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strcat.c \
@@ -67,9 +48,7 @@
     arch-mips/bionic/bzero.S \
     arch-mips/bionic/cacheflush.cpp \
     arch-mips/bionic/_exit_with_stack_teardown.S \
-    arch-mips/bionic/_setjmp.S \
     arch-mips/bionic/setjmp.S \
-    arch-mips/bionic/sigsetjmp.S \
     arch-mips/bionic/syscall.S \
     arch-mips/bionic/vfork.S \
 
@@ -81,11 +60,9 @@
 
 else
 libc_bionic_src_files_mips += \
-    bionic/memcpy.cpp \
-    bionic/memset.c \
-
-libc_openbsd_src_files_mips += \
-    upstream-openbsd/lib/libc/string/strlen.c \
+    arch-mips/string/memcpy.c \
+    arch-mips/string/memset.c \
+    arch-mips/string/strlen.c \
 
 endif
 
diff --git a/libc/bionic/memcmp.c b/libc/arch-mips/string/memcmp.c
similarity index 100%
rename from libc/bionic/memcmp.c
rename to libc/arch-mips/string/memcmp.c
diff --git a/libc/arch-mips/string/memcpy.c b/libc/arch-mips/string/memcpy.c
new file mode 100644
index 0000000..5551a6d
--- /dev/null
+++ b/libc/arch-mips/string/memcpy.c
@@ -0,0 +1,91 @@
+/*	$OpenBSD: memcpy.c,v 1.1 2014/11/30 19:43:56 deraadt Exp $ */
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <syslog.h>
+
+/*
+ * sizeof(word) MUST BE A POWER OF TWO
+ * SO THAT wmask BELOW IS ALL ONES
+ */
+typedef	long word;		/* "word" used for optimal copy speed */
+
+#define	wsize	sizeof(word)
+#define	wmask	(wsize - 1)
+
+/*
+ * Copy a block of memory, not handling overlap.
+ */
+void *
+memcpy(void *dst0, const void *src0, size_t length)
+{
+	char *dst = dst0;
+	const char *src = src0;
+	size_t t;
+
+	if (length == 0 || dst == src)		/* nothing to do */
+		goto done;
+
+	/*
+	 * Macros: loop-t-times; and loop-t-times, t>0
+	 */
+#define	TLOOP(s) if (t) TLOOP1(s)
+#define	TLOOP1(s) do { s; } while (--t)
+
+	/*
+	 * Copy forward.
+	 */
+	t = (long)src;	/* only need low bits */
+	if ((t | (long)dst) & wmask) {
+		/*
+		 * Try to align operands.  This cannot be done
+		 * unless the low bits match.
+		 */
+		if ((t ^ (long)dst) & wmask || length < wsize)
+			t = length;
+		else
+			t = wsize - (t & wmask);
+		length -= t;
+		TLOOP1(*dst++ = *src++);
+	}
+	/*
+	 * Copy whole words, then mop up any trailing bytes.
+	 */
+	t = length / wsize;
+	TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);
+	t = length & wmask;
+	TLOOP(*dst++ = *src++);
+done:
+	return (dst0);
+}
diff --git a/libc/arch-mips/string/memset.S b/libc/arch-mips/string/memset.S
index 3e630ca..09b756b 100644
--- a/libc/arch-mips/string/memset.S
+++ b/libc/arch-mips/string/memset.S
@@ -67,86 +67,6 @@
 #define DBG
 #endif
 
-/*
- * void _memset16(uint16_t* dst, uint16_t value, size_t size);
- */
-
-LEAF(_memset16,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,1			# a0 must be halfword aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,1			# a2 must be even
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is even
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a2,zero,0,1
-#else
-	ori	a2,1
-	xori	a2,1
-#endif
-#endif
-
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a1,a1,16,16
-#else
-	andi	a1,0xffff
-	sll	t3,a1,16
-	or	a1,t3
-#endif
-
-	beqz	a2,.Ldone
-	 andi	t1,a0,2
-	beqz	t1,.Lalignok
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-	sh	a1,0(a0)		# store one halfword to get aligned
-	addu	a0,2
-	subu	a2,2
-.Lalignok:
-	slti	t1,a2,4			# .Laligned for 4 or more bytes
-	beqz	t1,.Laligned
-	 sne	t1,a2,2			# one more halfword?
-	bnez	t1,.Ldone
-	 nop
-	sh	a1,0(a0)
-.Ldone:
-	j	ra
-	 nop
-	.set reorder
-END(_memset16)
-
-/*
- * void _memset32(uint32_t* dst, uint32_t value, size_t size);
- */
-
-LEAF(_memset32,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,3			# a0 must be word aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,3			# a2 must be a multiple of 4 bytes
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is a multiple of 4
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	$a2,$0,0,2
-#else
-	ori	a2,3
-	xori	a2,3
-#endif
-#endif
-
-	bnez	a2,.Laligned		# any work to do?
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-
-	j	ra
-	 nop
-	.set reorder
-END(_memset32)
-
 LEAF(memset,0)
 
 	.set	noreorder
diff --git a/libc/bionic/memset.c b/libc/arch-mips/string/memset.c
similarity index 100%
rename from libc/bionic/memset.c
rename to libc/arch-mips/string/memset.c
diff --git a/libc/arch-mips/string/mips_strlen.c b/libc/arch-mips/string/mips_strlen.c
index 9fb7e6a..45fc4b4 100644
--- a/libc/arch-mips/string/mips_strlen.c
+++ b/libc/arch-mips/string/mips_strlen.c
@@ -30,6 +30,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <string.h>
 #include "mips-string-ops.h"
 
 #define do_strlen_word(__av) {\
@@ -47,8 +48,8 @@
 #define strlen my_strlen
 #endif
 
-int
-strlen (const void *_a)
+size_t
+strlen (const char *_a)
 {
   int cnt = 0;
   unsigned x;
diff --git a/libc/upstream-openbsd/lib/libc/string/strlen.c b/libc/arch-mips/string/strlen.c
similarity index 100%
rename from libc/upstream-openbsd/lib/libc/string/strlen.c
rename to libc/arch-mips/string/strlen.c
diff --git a/libc/arch-mips/syscalls/___close.S b/libc/arch-mips/syscalls/___close.S
new file mode 100644
index 0000000..356cfd6
--- /dev/null
+++ b/libc/arch-mips/syscalls/___close.S
@@ -0,0 +1,20 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___close)
+    .set noreorder
+    .cpload t9
+    li v0, __NR_close
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    la t9,__set_errno_internal
+    j t9
+    nop
+    .set reorder
+END(___close)
+.hidden ___close
diff --git a/libc/arch-mips/syscalls/___faccessat.S b/libc/arch-mips/syscalls/___faccessat.S
new file mode 100644
index 0000000..4e11bae
--- /dev/null
+++ b/libc/arch-mips/syscalls/___faccessat.S
@@ -0,0 +1,20 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___faccessat)
+    .set noreorder
+    .cpload t9
+    li v0, __NR_faccessat
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    la t9,__set_errno_internal
+    j t9
+    nop
+    .set reorder
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-mips/syscalls/___fchmod.S b/libc/arch-mips/syscalls/___fchmod.S
new file mode 100644
index 0000000..ac102ec
--- /dev/null
+++ b/libc/arch-mips/syscalls/___fchmod.S
@@ -0,0 +1,20 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmod)
+    .set noreorder
+    .cpload t9
+    li v0, __NR_fchmod
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    la t9,__set_errno_internal
+    j t9
+    nop
+    .set reorder
+END(___fchmod)
+.hidden ___fchmod
diff --git a/libc/arch-mips/syscalls/___fchmodat.S b/libc/arch-mips/syscalls/___fchmodat.S
new file mode 100644
index 0000000..d581efa
--- /dev/null
+++ b/libc/arch-mips/syscalls/___fchmodat.S
@@ -0,0 +1,20 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmodat)
+    .set noreorder
+    .cpload t9
+    li v0, __NR_fchmodat
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    la t9,__set_errno_internal
+    j t9
+    nop
+    .set reorder
+END(___fchmodat)
+.hidden ___fchmodat
diff --git a/libc/arch-mips/syscalls/__clock_nanosleep.S b/libc/arch-mips/syscalls/__clock_nanosleep.S
new file mode 100644
index 0000000..97bfa27
--- /dev/null
+++ b/libc/arch-mips/syscalls/__clock_nanosleep.S
@@ -0,0 +1,19 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__clock_nanosleep)
+    .set noreorder
+    .cpload t9
+    li v0, __NR_clock_nanosleep
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    la t9,__set_errno_internal
+    j t9
+    nop
+    .set reorder
+END(__clock_nanosleep)
diff --git a/libc/arch-mips/syscalls/__rt_sigqueueinfo.S b/libc/arch-mips/syscalls/__rt_sigqueueinfo.S
new file mode 100644
index 0000000..a978bc4
--- /dev/null
+++ b/libc/arch-mips/syscalls/__rt_sigqueueinfo.S
@@ -0,0 +1,19 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__rt_sigqueueinfo)
+    .set noreorder
+    .cpload t9
+    li v0, __NR_rt_sigqueueinfo
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    la t9,__set_errno_internal
+    j t9
+    nop
+    .set reorder
+END(__rt_sigqueueinfo)
diff --git a/libc/arch-mips/syscalls/_exit.S b/libc/arch-mips/syscalls/_exit.S
index 5ac1324..6e97aac 100644
--- a/libc/arch-mips/syscalls/_exit.S
+++ b/libc/arch-mips/syscalls/_exit.S
@@ -18,5 +18,4 @@
     .set reorder
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-mips/syscalls/clock_nanosleep.S b/libc/arch-mips/syscalls/clock_nanosleep.S
deleted file mode 100644
index 6002ab4..0000000
--- a/libc/arch-mips/syscalls/clock_nanosleep.S
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(clock_nanosleep)
-    .set noreorder
-    .cpload t9
-    li v0, __NR_clock_nanosleep
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    la t9,__set_errno_internal
-    j t9
-    nop
-    .set reorder
-END(clock_nanosleep)
diff --git a/libc/arch-mips/syscalls/close.S b/libc/arch-mips/syscalls/close.S
deleted file mode 100644
index 231f497..0000000
--- a/libc/arch-mips/syscalls/close.S
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(close)
-    .set noreorder
-    .cpload t9
-    li v0, __NR_close
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    la t9,__set_errno_internal
-    j t9
-    nop
-    .set reorder
-END(close)
diff --git a/libc/arch-mips/syscalls/faccessat.S b/libc/arch-mips/syscalls/faccessat.S
deleted file mode 100644
index e616106..0000000
--- a/libc/arch-mips/syscalls/faccessat.S
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(faccessat)
-    .set noreorder
-    .cpload t9
-    li v0, __NR_faccessat
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    la t9,__set_errno_internal
-    j t9
-    nop
-    .set reorder
-END(faccessat)
diff --git a/libc/arch-mips/syscalls/fchmod.S b/libc/arch-mips/syscalls/fchmod.S
deleted file mode 100644
index 2a95cc3..0000000
--- a/libc/arch-mips/syscalls/fchmod.S
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmod)
-    .set noreorder
-    .cpload t9
-    li v0, __NR_fchmod
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    la t9,__set_errno_internal
-    j t9
-    nop
-    .set reorder
-END(fchmod)
diff --git a/libc/arch-mips/syscalls/fchmodat.S b/libc/arch-mips/syscalls/fchmodat.S
deleted file mode 100644
index d9de036..0000000
--- a/libc/arch-mips/syscalls/fchmodat.S
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmodat)
-    .set noreorder
-    .cpload t9
-    li v0, __NR_fchmodat
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    la t9,__set_errno_internal
-    j t9
-    nop
-    .set reorder
-END(fchmodat)
diff --git a/libc/arch-mips/syscalls/fstat64.S b/libc/arch-mips/syscalls/fstat64.S
index 525c23c..16e2791 100644
--- a/libc/arch-mips/syscalls/fstat64.S
+++ b/libc/arch-mips/syscalls/fstat64.S
@@ -18,5 +18,4 @@
     .set reorder
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-mips/syscalls/fstatat64.S b/libc/arch-mips/syscalls/fstatat64.S
index f7b8e1d..ebcf6b0 100644
--- a/libc/arch-mips/syscalls/fstatat64.S
+++ b/libc/arch-mips/syscalls/fstatat64.S
@@ -18,5 +18,4 @@
     .set reorder
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-mips/syscalls/sethostname.S b/libc/arch-mips/syscalls/sethostname.S
new file mode 100644
index 0000000..2987b52
--- /dev/null
+++ b/libc/arch-mips/syscalls/sethostname.S
@@ -0,0 +1,19 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sethostname)
+    .set noreorder
+    .cpload t9
+    li v0, __NR_sethostname
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    la t9,__set_errno_internal
+    j t9
+    nop
+    .set reorder
+END(sethostname)
diff --git a/libc/arch-mips64/bionic/_setjmp.S b/libc/arch-mips64/bionic/_setjmp.S
deleted file mode 100644
index d237e6d..0000000
--- a/libc/arch-mips64/bionic/_setjmp.S
+++ /dev/null
@@ -1,150 +0,0 @@
-/*	$OpenBSD: _setjmp.S,v 1.4 2005/08/07 16:40:15 espie Exp $ */
-
-/*
- * Copyright (c) 2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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. Neither the name of Opsycon AB nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 <private/bionic_asm.h>
-#include <machine/regnum.h>
-#include <machine/signal.h>
-
-/*
- * _setjmp, _longjmp (not restoring signal state)
- *
- * XXX FPSET should probably be taken from SR setting. hmmm...
- *  GPOFF and FRAMESIZE must be the same for both _setjmp and _longjmp!
- *
- */
-
-FRAMESZ= MKFSIZ(0,4)
-GPOFF= FRAMESZ-2*REGSZ
-
-LEAF(_setjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, _setjmp)
-	SAVE_GP(GPOFF)
-	.set	noreorder
-#if defined(__mips64)
-	dli	v0, 0xACEDBADE			# sigcontext magic number
-#else
-	li	v0, 0xACEDBADE			# sigcontext magic number
-#endif
-	REG_S	v0, SC_REGS+ZERO*REGSZ(a0)
-	REG_S	s0, SC_REGS+S0*REGSZ(a0)
-	REG_S	s1, SC_REGS+S1*REGSZ(a0)
-	REG_S	s2, SC_REGS+S2*REGSZ(a0)
-	REG_S	s3, SC_REGS+S3*REGSZ(a0)
-	REG_S	s4, SC_REGS+S4*REGSZ(a0)
-	REG_S	s5, SC_REGS+S5*REGSZ(a0)
-	REG_S	s6, SC_REGS+S6*REGSZ(a0)
-	REG_S	s7, SC_REGS+S7*REGSZ(a0)
-	REG_S	s8, SC_REGS+S8*REGSZ(a0)
-	REG_L	v0, GPOFF(sp)
-	REG_S	v0, SC_REGS+GP*REGSZ(a0)
-	PTR_ADDU v0, sp, FRAMESZ
-	REG_S	v0, SC_REGS+SP*REGSZ(a0)
-	REG_S	ra, SC_PC(a0)
-
-#if !defined(SOFTFLOAT)
-	li	v0, 1				# be nice if we could tell
-	REG_S	v0, SC_FPUSED(a0)		# sc_fpused = 1
-	cfc1	v0, $31
-	s.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	s.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	s.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	s.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	s.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	s.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	s.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	s.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	s.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	s.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	s.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	s.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
-#endif
-	REG_S	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-#endif /* !SOFTFLOAT */
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	j	ra
-	 move	v0, zero
-END(_setjmp)
-
-LEAF(_longjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, _longjmp)
-	SAVE_GP(GPOFF)
-	.set    noreorder
-	REG_L	v0, SC_REGS+ZERO*REGSZ(a0)
-	bne	v0, 0xACEDBADE, botch		# jump if error
-	REG_L	ra, SC_PC(a0)
-	REG_L	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-	REG_L	s0, SC_REGS+S0*REGSZ(a0)
-	REG_L	s1, SC_REGS+S1*REGSZ(a0)
-	REG_L	s2, SC_REGS+S2*REGSZ(a0)
-	REG_L	s3, SC_REGS+S3*REGSZ(a0)
-	REG_L	s4, SC_REGS+S4*REGSZ(a0)
-	REG_L	s5, SC_REGS+S5*REGSZ(a0)
-	REG_L	s6, SC_REGS+S6*REGSZ(a0)
-	REG_L	s7, SC_REGS+S7*REGSZ(a0)
-	REG_L	s8, SC_REGS+S8*REGSZ(a0)
-	REG_L	gp, SC_REGS+GP*REGSZ(a0)
-	REG_L	sp, SC_REGS+SP*REGSZ(a0)
-#if !defined(SOFTFLOAT)
-	ctc1	v0, $31
-	l.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	l.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	l.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	l.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	l.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	l.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	l.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	l.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	l.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	l.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	l.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	l.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
-#endif
-#endif /* !SOFTFLOAT */
-	bne	a1, zero, 1f
-	 nop
-	li	a1, 1			# never return 0!
-1:
-	j	ra
-	 move	v0, a1
-
-botch:
-	jal	longjmperror
-	nop
-	jal	abort
-	nop
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-END(_longjmp)
diff --git a/libc/arch-mips64/bionic/atexit.h b/libc/arch-mips64/bionic/atexit.h
deleted file mode 100644
index 759008c..0000000
--- a/libc/arch-mips64/bionic/atexit.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-extern void *__dso_handle;
-extern int __cxa_atexit(void (*func)(void *), void *arg, void *dso);
-
-__attribute__ ((visibility ("hidden")))
-int atexit(void (*func)(void))
-{
-  return (__cxa_atexit((void (*)(void *))func, (void *)0, &__dso_handle));
-}
diff --git a/libc/arch-mips64/bionic/crtbegin.c b/libc/arch-mips64/bionic/crtbegin.c
index 2ea31ad..bdd423b 100644
--- a/libc/arch-mips64/bionic/crtbegin.c
+++ b/libc/arch-mips64/bionic/crtbegin.c
@@ -91,4 +91,5 @@
 );
 
 #include "../../arch-common/bionic/__dso_handle.h"
-#include "atexit.h"
+#include "../../arch-common/bionic/atexit.h"
+#include "../../arch-common/bionic/pthread_atfork.h"
diff --git a/libc/arch-mips64/bionic/crtbegin_so.c b/libc/arch-mips64/bionic/crtbegin_so.c
deleted file mode 100644
index d664ce6..0000000
--- a/libc/arch-mips64/bionic/crtbegin_so.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-extern void __cxa_finalize(void *);
-extern void *__dso_handle;
-
-__attribute__((visibility("hidden"),destructor))
-void __on_dlclose() {
-  __cxa_finalize(&__dso_handle);
-}
-
-#include "../../arch-common/bionic/__dso_handle_so.h"
-#include "atexit.h"
diff --git a/libc/arch-mips64/bionic/setjmp.S b/libc/arch-mips64/bionic/setjmp.S
deleted file mode 100644
index 31786be..0000000
--- a/libc/arch-mips64/bionic/setjmp.S
+++ /dev/null
@@ -1,174 +0,0 @@
-/*      $OpenBSD: setjmp.S,v 1.5 2005/08/07 16:40:15 espie Exp $ */
-
-/*
- * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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. Neither the name of Opsycon AB nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 <private/bionic_asm.h>
-#include <machine/regnum.h>
-#include <machine/signal.h>
-
-/*
- * setjmp, longjmp implementation for libc. this code depends
- * on the layout of the struct sigcontext in machine/signal.h.
- *
- */
-
-FRAMESZ= MKFSIZ(2,6)
-A1OFF= FRAMESZ-4*REGSZ
-A0OFF= FRAMESZ-3*REGSZ
-GPOFF= FRAMESZ-2*REGSZ
-RAOFF= FRAMESZ-1*REGSZ
-
-NON_LEAF(setjmp, FRAMESZ, ra)
-	.mask	0x80000000, RAOFF
-	PTR_SUBU sp, FRAMESZ			# allocate stack frame
-	SETUP_GP64(GPOFF, setjmp)
-	SAVE_GP(GPOFF)
-	.set	reorder
-	REG_S	ra, RAOFF(sp)			# save state
-	REG_S	a0, A0OFF(sp)
-
-	move	a0, zero			# get current signal mask
-	jal	sigblock
-
-	REG_L	v1, A0OFF(sp)			# v1 = jmpbuf
-	REG_S	v0, SC_MASK(v1)			# save sc_mask = sigblock(0)
-
-	REG_L	a0, A0OFF(sp)			# restore jmpbuf
-	REG_L	ra, RAOFF(sp)
-	REG_S	ra, SC_PC(a0)			# sc_pc = return address
-#if defined(__mips64)
-	dli	v0, 0xACEDBADE			# sigcontext magic number
-#else
-	li	v0, 0xACEDBADE			# sigcontext magic number
-#endif
-	REG_S	v0, SC_REGS+ZERO*REGSZ(a0)
-	REG_S	s0, SC_REGS+S0*REGSZ(a0)
-	REG_S	s1, SC_REGS+S1*REGSZ(a0)
-	REG_S	s2, SC_REGS+S2*REGSZ(a0)
-	REG_S	s3, SC_REGS+S3*REGSZ(a0)
-	REG_S	s4, SC_REGS+S4*REGSZ(a0)
-	REG_S	s5, SC_REGS+S5*REGSZ(a0)
-	REG_S	s6, SC_REGS+S6*REGSZ(a0)
-	REG_S	s7, SC_REGS+S7*REGSZ(a0)
-	REG_S	s8, SC_REGS+S8*REGSZ(a0)
-	REG_L	v0, GPOFF(sp)
-	REG_S	v0, SC_REGS+GP*REGSZ(a0)
-	PTR_ADDU v0, sp, FRAMESZ
-	REG_S	v0, SC_REGS+SP*REGSZ(a0)
-
-#if !defined(SOFTFLOAT)
-	li	v0, 1				# be nice if we could tell
-	REG_S	v0, SC_FPUSED(a0)		# sc_fpused = 1
-	cfc1	v0, $31
-	s.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	s.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	s.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	s.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	s.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	s.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	s.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	s.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	s.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	s.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	s.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	s.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
-#endif
-	REG_S	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-#endif /* !SOFTFLOAT */
-	move	v0, zero
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	j	ra
-
-botch:
-	jal	longjmperror
-	jal	abort
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-END(setjmp)
-
-
-LEAF(longjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, longjmp)
-	SAVE_GP(GPOFF)
-	.set	reorder
-	sw	a1, A1OFF(sp)
-	sw	a0, A0OFF(sp)
-
-	lw	a0, SC_MASK(a0)
-	jal	sigsetmask
-
-	lw	a0, A0OFF(sp)
-	lw	a1, A1OFF(sp)
-
-	.set	noreorder
-	REG_L	v0, SC_REGS+ZERO*REGSZ(a0)
-	bne	v0, 0xACEDBADE, botch		# jump if error
-	REG_L	ra, SC_PC(a0)
-	REG_L	s0, SC_REGS+S0*REGSZ(a0)
-	REG_L	s1, SC_REGS+S1*REGSZ(a0)
-	REG_L	s2, SC_REGS+S2*REGSZ(a0)
-	REG_L	s3, SC_REGS+S3*REGSZ(a0)
-	REG_L	s4, SC_REGS+S4*REGSZ(a0)
-	REG_L	s5, SC_REGS+S5*REGSZ(a0)
-	REG_L	s6, SC_REGS+S6*REGSZ(a0)
-	REG_L	s7, SC_REGS+S7*REGSZ(a0)
-	REG_L	s8, SC_REGS+S8*REGSZ(a0)
-	REG_L	gp, SC_REGS+GP*REGSZ(a0)
-	REG_L	sp, SC_REGS+SP*REGSZ(a0)
-
-#if !defined(SOFTFLOAT)
-	REG_L	v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
-	ctc1	v0, $31
-	l.d	$f20, SC_FPREGS+((F20-F0)*REGSZ_FP)(a0)
-	l.d	$f22, SC_FPREGS+((F22-F0)*REGSZ_FP)(a0)
-	l.d	$f24, SC_FPREGS+((F24-F0)*REGSZ_FP)(a0)
-	l.d	$f26, SC_FPREGS+((F26-F0)*REGSZ_FP)(a0)
-	l.d	$f28, SC_FPREGS+((F28-F0)*REGSZ_FP)(a0)
-	l.d	$f30, SC_FPREGS+((F30-F0)*REGSZ_FP)(a0)
-#if _MIPS_FPSET == 32
-	l.d	$f21, SC_FPREGS+((F21-F0)*REGSZ_FP)(a0)
-	l.d	$f23, SC_FPREGS+((F23-F0)*REGSZ_FP)(a0)
-	l.d	$f25, SC_FPREGS+((F25-F0)*REGSZ_FP)(a0)
-	l.d	$f27, SC_FPREGS+((F27-F0)*REGSZ_FP)(a0)
-	l.d	$f29, SC_FPREGS+((F29-F0)*REGSZ_FP)(a0)
-	l.d	$f31, SC_FPREGS+((F31-F0)*REGSZ_FP)(a0)
-#endif
-#endif /* !SOFTFLOAT */
-	bne	a1, zero, 1f
-	 nop
-	li	a1, 1			# never return 0!
-1:
-	j	ra
-	 move	v0, a1
-
-END(longjmp)
diff --git a/libc/arch-mips64/bionic/setjmp.S b/libc/arch-mips64/bionic/setjmp.S
new file mode 120000
index 0000000..b117bb6
--- /dev/null
+++ b/libc/arch-mips64/bionic/setjmp.S
@@ -0,0 +1 @@
+../../arch-mips/bionic/setjmp.S
\ No newline at end of file
diff --git a/libc/arch-mips64/bionic/sigsetjmp.S b/libc/arch-mips64/bionic/sigsetjmp.S
deleted file mode 100644
index 9d2e5ea..0000000
--- a/libc/arch-mips64/bionic/sigsetjmp.S
+++ /dev/null
@@ -1,77 +0,0 @@
-/* $OpenBSD: sigsetjmp.S,v 1.5 2005/08/07 16:40:15 espie Exp $ */
-/*-
- * Copyright (c) 1991, 1993, 1995,
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Havard Eidnes.
- *
- * 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. 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.
- */
-
-#include <private/bionic_asm.h>
-#include <machine/regnum.h>
-#include <machine/setjmp.h>
-
-/*
- * trampolines for sigsetjmp and  siglongjmp save and restore mask.
- *
- */
-FRAMESZ= MKFSIZ(1,1)
-GPOFF= FRAMESZ-2*REGSZ
-
-LEAF(sigsetjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, sigsetjmp)
-	.set	reorder
-	REG_S	a1, (_JBLEN*REGSZ)(a0)		# save "savemask"
-	bne	a1, 0x0, 1f			# do saving of signal mask?
-	LA	t9, _setjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr t9
-
-1:	LA	t9, setjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr t9
-END(sigsetjmp)
-
-LEAF(siglongjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, siglongjmp)
-	.set	reorder
-	REG_L	t0, (_JBLEN*REGSZ)(a0)		# get "savemask"
-	bne	t0, 0x0, 1f			# restore signal mask?
-	LA	t9, _longjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr	t9
-1:
-	LA	t9, longjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr	t9
-END(siglongjmp)
diff --git a/libc/arch-mips64/bionic/stat.cpp b/libc/arch-mips64/bionic/stat.cpp
new file mode 100644
index 0000000..2767fbd
--- /dev/null
+++ b/libc/arch-mips64/bionic/stat.cpp
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <sys/types.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+struct kernel_stat {
+ unsigned int st_dev;
+ unsigned int st_pad0[3];
+ unsigned long st_ino;
+ mode_t st_mode;
+ __u32 st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ unsigned int st_rdev;
+ unsigned int st_pad1[3];
+ __kernel_off_t st_size;
+ unsigned int _st_atime;
+ unsigned int st_atime_nsec;
+ unsigned int _st_mtime;
+ unsigned int st_mtime_nsec;
+ unsigned int _st_ctime;
+ unsigned int st_ctime_nsec;
+ unsigned int st_blksize;
+ unsigned int st_pad2;
+ unsigned long st_blocks;
+};
+
+void copy_stat(struct stat *st, struct kernel_stat *s)
+{
+  st->st_dev = static_cast<dev_t>(s->st_dev);
+  st->st_ino = static_cast<ino_t>(s->st_ino);
+  st->st_mode = static_cast<mode_t>(s->st_mode);
+  st->st_nlink = static_cast<nlink_t>(s->st_nlink);
+  st->st_uid = static_cast<uid_t>(s->st_uid);
+  st->st_gid = static_cast<gid_t>(s->st_gid);
+  st->st_rdev = static_cast<dev_t>(s->st_rdev);
+  st->st_size = static_cast<off_t>(s->st_size);
+  st->st_blksize = static_cast<int>(s->st_blksize);
+  st->st_blocks = static_cast<long>(s->st_blocks);
+  st->st_atim.tv_sec = static_cast<time_t>(s->_st_atime);
+  st->st_atim.tv_nsec = static_cast<long>(s->st_atime_nsec);
+  st->st_mtim.tv_sec = static_cast<time_t>(s->_st_mtime);
+  st->st_mtim.tv_nsec = static_cast<long>(s->st_mtime_nsec);
+  st->st_ctim.tv_sec = static_cast<time_t>(s->_st_ctime);
+  st->st_ctim.tv_nsec = static_cast<long>(s->st_ctime_nsec);
+}
+
+int fstat(int fp, struct stat *st)
+{
+  kernel_stat s;
+  int ret;
+  ret = syscall (__NR_fstat, fp, &s);
+  copy_stat (st, &s);
+  return ret;
+}
+__strong_alias(fstat64, fstat);
+
+int newfstatat(int dirfd, const char *pathname, struct stat *buf, int flags)
+{
+   kernel_stat s;
+   int ret;
+   ret = syscall(__NR_newfstatat, dirfd, pathname, &s, flags);
+   copy_stat(buf, &s);
+   return ret;
+}
+
+int fstatat(int dirfd, const char *pathname, struct stat *buf, int flags)
+{
+   kernel_stat s;
+   int ret;
+   ret = syscall(__NR_newfstatat, dirfd, pathname, &s, flags);
+   copy_stat(buf, &s);
+   return ret;
+}
+__strong_alias(fstatat64, fstatat);
diff --git a/libc/arch-mips64/bionic/syscall.S b/libc/arch-mips64/bionic/syscall.S
index 924741d..4c739fd 100644
--- a/libc/arch-mips64/bionic/syscall.S
+++ b/libc/arch-mips64/bionic/syscall.S
@@ -52,7 +52,7 @@
 #else
 	move	a3, a4
 	move	a4, a5
-	REG_L	a5, FRAMESZ(sp)
+	move	a5, a6
 #endif
 	syscall
 	move	a0, v0
diff --git a/libc/arch-mips64/include b/libc/arch-mips64/include
new file mode 120000
index 0000000..fabbe8a
--- /dev/null
+++ b/libc/arch-mips64/include
@@ -0,0 +1 @@
+../arch-mips/include
\ No newline at end of file
diff --git a/libc/arch-mips64/include/machine/asm.h b/libc/arch-mips64/include/machine/asm.h
deleted file mode 100644
index 5eacde3..0000000
--- a/libc/arch-mips64/include/machine/asm.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/*	$OpenBSD: asm.h,v 1.7 2004/10/20 12:49:15 pefo Exp $ */
-
-/*
- * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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 AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _MIPS64_ASM_H
-#define _MIPS64_ASM_H
-
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 4
-#endif
-
-#undef __bionic_asm_custom_entry
-#undef __bionic_asm_custom_end
-#define __bionic_asm_custom_entry(f) .ent f
-#define __bionic_asm_custom_end(f) .end f
-
-#include <machine/regdef.h>
-
-#define	_MIPS_ISA_MIPS1	1	/* R2000/R3000 */
-#define	_MIPS_ISA_MIPS2	2	/* R4000/R6000 */
-#define	_MIPS_ISA_MIPS3	3	/* R4000 */
-#define	_MIPS_ISA_MIPS4	4	/* TFP (R1x000) */
-#define	_MIPS_ISA_MIPS5 5
-#define	_MIPS_ISA_MIPS32 6
-#define	_MIPS_ISA_MIPS64 7
-
-#if !defined(ABICALLS) && !defined(_NO_ABICALLS)
-#define	ABICALLS	.abicalls
-#endif
-
-#if defined(ABICALLS) && !defined(_KERNEL)
-	ABICALLS
-#endif
-
-#if !defined(__MIPSEL__) && !defined(__MIPSEB__)
-#error "__MIPSEL__ or __MIPSEB__ must be defined"
-#endif
-/*
- * Define how to access unaligned data word
- */
-#if defined(__MIPSEL__)
-#define LWLO    lwl
-#define LWHI    lwr
-#define	SWLO	swl
-#define	SWHI	swr
-#define LDLO    ldl
-#define LDHI    ldr
-#define	SDLO	sdl
-#define	SDHI	sdr
-#endif
-#if defined(__MIPSEB__)
-#define LWLO    lwr
-#define LWHI    lwl
-#define	SWLO	swr
-#define	SWHI	swl
-#define LDLO    ldr
-#define LDHI    ldl
-#define	SDLO	sdr
-#define	SDHI	sdl
-#endif
-
-/*
- *  Define programming environment for ABI.
- */
-#if defined(ABICALLS) && !defined(_KERNEL) && !defined(_STANDALONE)
-
-#if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
-#define NARGSAVE	4
-
-#define	SETUP_GP		\
-	.set	noreorder;	\
-	.cpload	t9;		\
-	.set	reorder;
-
-#define	SAVE_GP(x)		\
-	.cprestore x
-
-#define	SETUP_GP64(gpoff, name)
-#define	RESTORE_GP64
-#endif
-
-#if (_MIPS_SIM == _ABI64) || (_MIPS_SIM == _ABIN32)
-#define NARGSAVE	0
-
-#define	SETUP_GP
-#define	SAVE_GP(x)
-#define	SETUP_GP64(gpoff, name)	\
-	.cpsetup t9, gpoff, name
-#define	RESTORE_GP64		\
-	.cpreturn
-#endif
-
-#define	MKFSIZ(narg,locals) (((narg+locals)*REGSZ+31)&(~31))
-
-#else /* defined(ABICALLS) && !defined(_KERNEL) */
-
-#define	NARGSAVE	4
-#define	SETUP_GP
-#define	SAVE_GP(x)
-
-#define	ALIGNSZ		16	/* Stack layout alignment */
-#define	FRAMESZ(sz)	(((sz) + (ALIGNSZ-1)) & ~(ALIGNSZ-1))
-
-#endif
-
-/*
- *  Basic register operations based on selected ISA
- */
-#if (_MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2 || _MIPS_ISA == _MIPS_ISA_MIPS32)
-#define REGSZ		4	/* 32 bit mode register size */
-#define LOGREGSZ	2	/* log rsize */
-#define	REG_S	sw
-#define	REG_L	lw
-#define	CF_SZ		24	/* Call frame size */
-#define	CF_ARGSZ	16	/* Call frame arg size */
-#define	CF_RA_OFFS	20	/* Call ra save offset */
-#endif
-
-#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4 || _MIPS_ISA == _MIPS_ISA_MIPS64)
-#define REGSZ		8	/* 64 bit mode register size */
-#define LOGREGSZ	3	/* log rsize */
-#define	REG_S	sd
-#define	REG_L	ld
-#define	CF_SZ		48	/* Call frame size (multiple of ALIGNSZ) */
-#define	CF_ARGSZ	32	/* Call frame arg size */
-#define	CF_RA_OFFS	40	/* Call ra save offset */
-#endif
-
-#define REGSZ_FP	 8	/* 64 bit FP register size */
-
-#ifndef __LP64__
-#define	PTR_L		lw
-#define	PTR_S		sw
-#define	PTR_SUB		sub
-#define	PTR_ADD		add
-#define	PTR_SUBU	subu
-#define	PTR_ADDU	addu
-#define LI		li
-#define	LA		la
-#define	PTR_SLL		sll
-#define	PTR_SRL		srl
-#define	PTR_VAL		.word
-#else
-#define	PTR_L		ld
-#define	PTR_S		sd
-#define	PTR_ADD		dadd
-#define	PTR_SUB		dsub
-#define	PTR_SUBU	dsubu
-#define	PTR_ADDU	daddu
-#define LI		dli
-#define LA		dla
-#define	PTR_SLL		dsll
-#define	PTR_SRL		dsrl
-#define	PTR_VAL		.dword
-#endif
-
-/*
- * LEAF(x, fsize)
- *
- *	Declare a leaf routine.
- */
-#define LEAF(x, fsize)		\
-	.align	3;		\
-	.globl x;		\
-	.ent x, 0;		\
-x: ;				\
-	.cfi_startproc; \
-	.frame sp, fsize, ra;	\
-	SETUP_GP		\
-
-/*
- * NON_LEAF(x)
- *
- *	Declare a non-leaf routine (a routine that makes other C calls).
- */
-#define NON_LEAF(x, fsize, retpc) \
-	.align	3;		\
-	.globl x;		\
-	.ent x, 0;		\
-x: ;				\
-	.cfi_startproc; \
-	.frame sp, fsize, retpc; \
-	SETUP_GP		\
-
-#endif /* !_MIPS_ASM_H */
diff --git a/libc/arch-mips64/include/machine/elf_machdep.h b/libc/arch-mips64/include/machine/elf_machdep.h
deleted file mode 100644
index d27d431..0000000
--- a/libc/arch-mips64/include/machine/elf_machdep.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.15 2011/03/15 07:39:22 matt Exp $	*/
-
-#ifndef _MIPS_ELF_MACHDEP_H_
-#define  _MIPS_ELF_MACHDEP_H_
-
-#ifdef _LP64
-#define ARCH_ELFSIZE		64	/* MD native binary size */
-#else
-#define ARCH_ELFSIZE		32	/* MD native binary size */
-#endif
-
-#if ELFSIZE == 32
-#define	ELF32_MACHDEP_ID_CASES						\
-		case EM_MIPS:						\
-			break;
-
-#define	ELF32_MACHDEP_ID	EM_MIPS
-#elif ELFSIZE == 64
-#define	ELF64_MACHDEP_ID_CASES						\
-		case EM_MIPS:						\
-			break;
-
-#define	ELF64_MACHDEP_ID	EM_MIPS
-#endif
-
-/* mips relocs.  */
-
-#define R_MIPS_NONE		0
-#define R_MIPS_16		1
-#define R_MIPS_32		2
-#define R_MIPS_REL32		3
-#define R_MIPS_REL		R_MIPS_REL32
-#define R_MIPS_26		4
-#define R_MIPS_HI16		5	/* high 16 bits of symbol value */
-#define R_MIPS_LO16		6	/* low 16 bits of symbol value */
-#define R_MIPS_GPREL16		7  	/* GP-relative reference  */
-#define R_MIPS_LITERAL		8 	/* Reference to literal section  */
-#define R_MIPS_GOT16		9	/* Reference to global offset table */
-#define R_MIPS_GOT		R_MIPS_GOT16
-#define R_MIPS_PC16		10  	/* 16 bit PC relative reference */
-#define R_MIPS_CALL16 		11  	/* 16 bit call thru glbl offset tbl */
-#define R_MIPS_CALL		R_MIPS_CALL16
-#define R_MIPS_GPREL32		12
-
-/* 13, 14, 15 are not defined at this point. */
-#define R_MIPS_UNUSED1		13
-#define R_MIPS_UNUSED2		14
-#define R_MIPS_UNUSED3		15
-
-/*
- * The remaining relocs are apparently part of the 64-bit Irix ELF ABI.
- */
-#define R_MIPS_SHIFT5		16
-#define R_MIPS_SHIFT6		17
-
-#define R_MIPS_64		18
-#define R_MIPS_GOT_DISP		19
-#define R_MIPS_GOT_PAGE		20
-#define R_MIPS_GOT_OFST		21
-#define R_MIPS_GOT_HI16		22
-#define R_MIPS_GOT_LO16		23
-#define R_MIPS_SUB 		24
-#define R_MIPS_INSERT_A		25
-#define R_MIPS_INSERT_B		26
-#define R_MIPS_DELETE		27
-#define R_MIPS_HIGHER		28
-#define R_MIPS_HIGHEST		29
-#define R_MIPS_CALL_HI16	30
-#define R_MIPS_CALL_LO16	31
-#define R_MIPS_SCN_DISP		32
-#define R_MIPS_REL16		33
-#define R_MIPS_ADD_IMMEDIATE	34
-#define R_MIPS_PJUMP		35
-#define R_MIPS_RELGOT		36
-#define	R_MIPS_JALR		37
-/* TLS relocations */
-
-#define R_MIPS_TLS_DTPMOD32	38	/* Module number 32 bit */
-#define R_MIPS_TLS_DTPREL32	39	/* Module-relative offset 32 bit */
-#define R_MIPS_TLS_DTPMOD64	40	/* Module number 64 bit */
-#define R_MIPS_TLS_DTPREL64	41	/* Module-relative offset 64 bit */
-#define R_MIPS_TLS_GD		42	/* 16 bit GOT offset for GD */
-#define R_MIPS_TLS_LDM		43	/* 16 bit GOT offset for LDM */
-#define R_MIPS_TLS_DTPREL_HI16	44	/* Module-relative offset, high 16 bits */
-#define R_MIPS_TLS_DTPREL_LO16	45	/* Module-relative offset, low 16 bits */
-#define R_MIPS_TLS_GOTTPREL	46	/* 16 bit GOT offset for IE */
-#define R_MIPS_TLS_TPREL32	47	/* TP-relative offset, 32 bit */
-#define R_MIPS_TLS_TPREL64	48	/* TP-relative offset, 64 bit */
-#define R_MIPS_TLS_TPREL_HI16	49	/* TP-relative offset, high 16 bits */
-#define R_MIPS_TLS_TPREL_LO16	50	/* TP-relative offset, low 16 bits */
-
-#define R_MIPS_max		51
-
-#define R_TYPE(name)		__CONCAT(R_MIPS_,name)
-
-#define	R_MIPS16_min		100
-#define	R_MIPS16_26		100
-#define	R_MIPS16_GPREL		101
-#define	R_MIPS16_GOT16		102
-#define	R_MIPS16_CALL16		103
-#define	R_MIPS16_HI16		104
-#define	R_MIPS16_LO16		105
-#define	R_MIPS16_max		106
-
-
-/* mips dynamic tags */
-
-#define DT_MIPS_RLD_VERSION	0x70000001
-#define DT_MIPS_TIME_STAMP	0x70000002
-#define DT_MIPS_ICHECKSUM	0x70000003
-#define DT_MIPS_IVERSION	0x70000004
-#define DT_MIPS_FLAGS		0x70000005
-#define DT_MIPS_BASE_ADDRESS	0x70000006
-#define DT_MIPS_CONFLICT	0x70000008
-#define DT_MIPS_LIBLIST		0x70000009
-#define DT_MIPS_CONFLICTNO	0x7000000b
-#define	DT_MIPS_LOCAL_GOTNO	0x7000000a	/* number of local got ents */
-#define DT_MIPS_LIBLISTNO	0x70000010
-#define	DT_MIPS_SYMTABNO	0x70000011	/* number of .dynsym entries */
-#define DT_MIPS_UNREFEXTNO	0x70000012
-#define	DT_MIPS_GOTSYM		0x70000013	/* first dynamic sym in got */
-#define DT_MIPS_HIPAGENO	0x70000014
-#define	DT_MIPS_RLD_MAP		0x70000016	/* address of loader map */
-
-/*
- * ELF Flags
- */
-#define	EF_MIPS_PIC		0x00000002	/* Contains PIC code */
-#define	EF_MIPS_CPIC		0x00000004	/* STD PIC calling sequence */
-#define	EF_MIPS_ABI2		0x00000020	/* N32 */
-
-#define	EF_MIPS_ARCH_ASE	0x0f000000	/* Architectural extensions */
-#define	EF_MIPS_ARCH_MDMX	0x08000000	/* MDMX multimedia extension */
-#define	EF_MIPS_ARCH_M16	0x04000000	/* MIPS-16 ISA extensions */
-
-#define	EF_MIPS_ARCH		0xf0000000	/* Architecture field */
-#define	EF_MIPS_ARCH_1		0x00000000	/* -mips1 code */
-#define	EF_MIPS_ARCH_2		0x10000000	/* -mips2 code */
-#define	EF_MIPS_ARCH_3		0x20000000	/* -mips3 code */
-#define	EF_MIPS_ARCH_4		0x30000000	/* -mips4 code */
-#define	EF_MIPS_ARCH_5		0x40000000	/* -mips5 code */
-#define	EF_MIPS_ARCH_32		0x50000000	/* -mips32 code */
-#define	EF_MIPS_ARCH_64		0x60000000	/* -mips64 code */
-#define	EF_MIPS_ARCH_32R2	0x70000000	/* -mips32r2 code */
-#define	EF_MIPS_ARCH_64R2	0x80000000	/* -mips64r2 code */
-
-#define	EF_MIPS_ABI		0x0000f000
-#define	EF_MIPS_ABI_O32		0x00001000
-#define	EF_MIPS_ABI_O64		0x00002000
-#define	EF_MIPS_ABI_EABI32	0x00003000
-#define	EF_MIPS_ABI_EABI64	0x00004000
-
-#if defined(__MIPSEB__)
-#define	ELF32_MACHDEP_ENDIANNESS	ELFDATA2MSB
-#define	ELF64_MACHDEP_ENDIANNESS	ELFDATA2MSB
-#elif defined(__MIPSEL__)
-#define	ELF32_MACHDEP_ENDIANNESS	ELFDATA2LSB
-#define	ELF64_MACHDEP_ENDIANNESS	ELFDATA2LSB
-#elif !defined(HAVE_NBTOOL_CONFIG_H)
-#error neither __MIPSEL__ nor __MIPSEB__ are defined.
-#endif
-
-#ifdef _KERNEL
-#ifdef _KERNEL_OPT
-#include "opt_compat_netbsd.h"
-#endif
-#ifdef COMPAT_16
-/*
- * Up to 1.6, the ELF dynamic loader (ld.elf_so) was not relocatable.
- * Tell the kernel ELF exec code not to try relocating the interpreter
- * for dynamically-linked ELF binaries.
- */
-#define ELF_INTERP_NON_RELOCATABLE
-#endif /* COMPAT_16 */
-
-/*
- * We need to be able to include the ELF header so we can pick out the
- * ABI being used.
- */
-#ifdef ELFSIZE
-#define	ELF_MD_PROBE_FUNC	ELFNAME2(mips_netbsd,probe)
-#define	ELF_MD_COREDUMP_SETUP	ELFNAME2(coredump,setup)
-#endif
-
-struct exec_package;
-
-int mips_netbsd_elf32_probe(struct lwp *, struct exec_package *, void *, char *,
-	vaddr_t *);
-void coredump_elf32_setup(struct lwp *, void *);
-
-int mips_netbsd_elf64_probe(struct lwp *, struct exec_package *, void *, char *,
-	vaddr_t *);
-void coredump_elf64_setup(struct lwp *, void *);
-#endif /* _KERNEL */
-
-#endif /* _MIPS_ELF_MACHDEP_H_ */
diff --git a/libc/arch-mips64/include/machine/endian.h b/libc/arch-mips64/include/machine/endian.h
deleted file mode 100644
index 41a9004..0000000
--- a/libc/arch-mips64/include/machine/endian.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*	$OpenBSD: endian.h,v 1.5 2006/02/27 23:35:59 miod Exp $ */
-
-/*
- * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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 AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _MIPS64_ENDIAN_H_
-#define _MIPS64_ENDIAN_H_
-
-#ifdef __GNUC__
-
-#if defined(__mips_isa_rev) && (__mips_isa_rev >= 2)
-#define __swap16md(x) ({					\
-    register uint16_t _x = (x);					\
-    register uint16_t _r;					\
-    __asm volatile ("wsbh %0, %1" : "=r" (_r) : "r" (_x));	\
-    _r;								\
-})
-
-#define __swap32md(x) ({					\
-    register uint32_t _x = (x);					\
-    register uint32_t _r;					\
-    __asm volatile ("wsbh %0, %1; rotr %0, %0, 16" : "=r" (_r) : "r" (_x)); \
-    _r;								\
-})
-
-#define __swap64md(x) ({					\
-    uint64_t _swap64md_x = (x);					\
-    (uint64_t) __swap32md(_swap64md_x >> 32) |			\
-        (uint64_t) __swap32md(_swap64md_x & 0xffffffff) << 32;	\
-})
-
-/* Tell sys/endian.h we have MD variants of the swap macros.  */
-#define MD_SWAP
-
-#endif  /* __mips32r2__ */
-#endif  /* __GNUC__ */
-
-#if defined(__MIPSEB__)
-#define _BYTE_ORDER _BIG_ENDIAN
-#else
-#define _BYTE_ORDER _LITTLE_ENDIAN
-#endif
-#define __STRICT_ALIGNMENT
-#include <sys/types.h>
-#include <sys/endian.h>
-
-#endif /* _MIPS64_ENDIAN_H_ */
diff --git a/libc/arch-mips64/include/machine/exec.h b/libc/arch-mips64/include/machine/exec.h
deleted file mode 100644
index 3c63f74..0000000
--- a/libc/arch-mips64/include/machine/exec.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/*	$OpenBSD: exec.h,v 1.1 2004/10/18 19:05:36 grange Exp $	*/
-
-/*
- * Copyright (c) 1996-2004 Per Fogelstrom, Opsycon AB
- *
- * 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 AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _MIPS64_EXEC_H_
-#define _MIPS64_EXEC_H_
-
-#define	__LDPGSZ	4096
-
-/*
- *  Define what exec "formats" we should handle.
- */
-#define NATIVE_EXEC_ELF
-#define NATIVE_ELFSIZE 64
-#define	EXEC_SCRIPT
-
-/*
- *  If included from sys/exec.h define kernels ELF format.
- */
-#ifdef __LP64__
-#define	ARCH_ELFSIZE 64
-#define DB_ELFSIZE 64
-#define ELF_TARG_CLASS  ELFCLASS64
-#else
-#define	ARCH_ELFSIZE 32
-#define DB_ELFSIZE 32
-#define ELF_TARG_CLASS  ELFCLASS32
-#endif
-
-#if defined(__MIPSEB__)
-#define ELF_TARG_DATA		ELFDATA2MSB
-#else
-#define ELF_TARG_DATA		ELFDATA2LSB
-#endif
-#define ELF_TARG_MACH		EM_MIPS
-
-#define _NLIST_DO_ELF
-
-#if defined(_LP64)
-#define _KERN_DO_ELF64
-#if defined(COMPAT_O32)
-#define _KERN_DO_ELF
-#endif
-#else
-#define _KERN_DO_ELF
-#endif
-
-/* Information taken from MIPS ABI supplemental */
-
-/* Architecture dependent Segment types - p_type */
-#define PT_MIPS_REGINFO 0x70000000      /* Register usage information */
-
-/* Architecture dependent d_tag field for Elf32_Dyn.  */
-#define DT_MIPS_RLD_VERSION  0x70000001 /* Runtime Linker Interface ID */
-#define DT_MIPS_TIME_STAMP   0x70000002 /* Timestamp */
-#define DT_MIPS_ICHECKSUM    0x70000003 /* Cksum of ext. str. and com. sizes */
-#define DT_MIPS_IVERSION     0x70000004 /* Version string (string tbl index) */
-#define DT_MIPS_FLAGS        0x70000005 /* Flags */
-#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Segment base address */
-#define DT_MIPS_CONFLICT     0x70000008 /* Adr of .conflict section */
-#define DT_MIPS_LIBLIST      0x70000009 /* Address of .liblist section */
-#define DT_MIPS_LOCAL_GOTNO  0x7000000a /* Number of local .GOT entries */
-#define DT_MIPS_CONFLICTNO   0x7000000b /* Number of .conflict entries */
-#define DT_MIPS_LIBLISTNO    0x70000010 /* Number of .liblist entries */
-#define DT_MIPS_SYMTABNO     0x70000011 /* Number of .dynsym entries */
-#define DT_MIPS_UNREFEXTNO   0x70000012 /* First external DYNSYM */
-#define DT_MIPS_GOTSYM       0x70000013 /* First GOT entry in .dynsym */
-#define DT_MIPS_HIPAGENO     0x70000014 /* Number of GOT page table entries */
-#define DT_MIPS_RLD_MAP      0x70000016 /* Address of debug map pointer */
-
-#define DT_PROCNUM (DT_MIPS_RLD_MAP - DT_LOPROC + 1)
-
-/*
- * Legal values for e_flags field of Elf32_Ehdr.
- */
-#define EF_MIPS_NOREORDER	0x00000001	/* .noreorder was used */
-#define EF_MIPS_PIC		0x00000002	/* Contains PIC code */
-#define EF_MIPS_CPIC		0x00000004	/* Uses PIC calling sequence */
-#define	EF_MIPS_ABI2		0x00000020	/* -n32 on Irix 6 */
-#define	EF_MIPS_32BITMODE	0x00000100	/* 64 bit in 32 bit mode... */
-#define EF_MIPS_ARCH		0xf0000000	/* MIPS architecture level */
-#define	E_MIPS_ARCH_1		0x00000000
-#define	E_MIPS_ARCH_2		0x10000000
-#define	E_MIPS_ARCH_3		0x20000000
-#define	E_MIPS_ARCH_4		0x30000000
-#define	EF_MIPS_ABI		0x0000f000	/* ABI level */
-#define	E_MIPS_ABI_NONE		0x00000000	/* ABI level not set */
-#define	E_MIPS_ABI_O32		0x00001000
-#define	E_MIPS_ABI_O64		0x00002000
-#define	E_MIPS_ABI_EABI32	0x00004000
-#define	E_MIPS_ABI_EABI64	0x00004000
-
-/*
- * Mips special sections.
- */
-#define	SHN_MIPS_ACOMMON	0xff00		/* Allocated common symbols */
-#define	SHN_MIPS_SCOMMON	0xff03		/* Small common symbols */
-#define	SHN_MIPS_SUNDEFINED	0xff04		/* Small undefined symbols */
-
-/*
- * Legal values for sh_type field of Elf32_Shdr.
- */
-#define	SHT_MIPS_LIBLIST  0x70000000	/* Shared objects used in link */
-#define	SHT_MIPS_CONFLICT 0x70000002	/* Conflicting symbols */
-#define	SHT_MIPS_GPTAB    0x70000003	/* Global data area sizes */
-#define	SHT_MIPS_UCODE    0x70000004	/* Reserved for SGI/MIPS compilers */
-#define	SHT_MIPS_DEBUG    0x70000005	/* MIPS ECOFF debugging information */
-#define	SHT_MIPS_REGINFO  0x70000006	/* Register usage information */
-
-/*
- * Legal values for sh_flags field of Elf32_Shdr.
- */
-#define	SHF_MIPS_GPREL	0x10000000	/* Must be part of global data area */
-
-#if 0
-/*
- * Entries found in sections of type SHT_MIPS_GPTAB.
- */
-typedef union {
-	struct {
-		Elf32_Word gt_current_g_value;	/* -G val used in compilation */
-		Elf32_Word gt_unused;	/* Not used */
-	} gt_header;			/* First entry in section */
-	struct {
-		Elf32_Word gt_g_value;	/* If this val were used for -G */
-		Elf32_Word gt_bytes;	/* This many bytes would be used */
-	} gt_entry;			/* Subsequent entries in section */
-} Elf32_gptab;
-
-/*
- * Entry found in sections of type SHT_MIPS_REGINFO.
- */
-typedef struct {
-	Elf32_Word	ri_gprmask;	/* General registers used */
-	Elf32_Word	ri_cprmask[4];	/* Coprocessor registers used */
-	Elf32_Sword	ri_gp_value;	/* $gp register value */
-} Elf32_RegInfo;
-#endif
-
-
-/*
- * Mips relocations.
- */
-
-#define	R_MIPS_NONE	0	/* No reloc */
-#define	R_MIPS_16	1	/* Direct 16 bit */
-#define	R_MIPS_32	2	/* Direct 32 bit */
-#define	R_MIPS_REL32	3	/* PC relative 32 bit */
-#define	R_MIPS_26	4	/* Direct 26 bit shifted */
-#define	R_MIPS_HI16	5	/* High 16 bit */
-#define	R_MIPS_LO16	6	/* Low 16 bit */
-#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
-#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
-#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
-#define	R_MIPS_PC16	10	/* PC relative 16 bit */
-#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
-#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
-
-#define	R_MIPS_64	18
-
-#define	R_MIPS_REL32_64	((R_MIPS_64 << 8) | R_MIPS_REL32)
-
-
-#endif	/* !_MIPS64_EXEC_H_ */
diff --git a/libc/arch-mips64/include/machine/regdef.h b/libc/arch-mips64/include/machine/regdef.h
deleted file mode 100644
index 3a7cd68..0000000
--- a/libc/arch-mips64/include/machine/regdef.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*	$OpenBSD: regdef.h,v 1.3 2005/08/07 07:29:44 miod Exp $	*/
-
-/*
- * Copyright (c) 1992, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Ralph Campbell. This file is derived from the MIPS RISC
- * Architecture book by Gerry Kane.
- *
- * 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. 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.
- *
- *	@(#)regdef.h	8.1 (Berkeley) 6/10/93
- */
-#ifndef _MIPS_REGDEF_H_
-#define _MIPS_REGDEF_H_
-
-#if (_MIPS_SIM == _ABI64) && !defined(__mips_n64)
-#define __mips_n64 1
-#endif
-#if (_MIPS_SIM == _ABIN32) &&  !defined(__mips_n32)
-#define __mips_n32 1
-#endif
-
-#define zero	$0	/* always zero */
-#define AT	$at	/* assembler temp */
-#define v0	$2	/* return value */
-#define v1	$3
-#define a0	$4	/* argument registers */
-#define a1	$5
-#define a2	$6
-#define a3	$7
-#if defined(__mips_n32) || defined(__mips_n64)
-#define a4	$8	/* expanded register arguments */
-#define a5	$9
-#define a6	$10
-#define a7	$11
-#define ta0	$8	/* alias */
-#define ta1	$9
-#define ta2	$10
-#define ta3	$11
-#define t0	$12	/* temp registers (not saved across subroutine calls) */
-#define t1	$13
-#define t2	$14
-#define t3	$15
-#else
-#define t0	$8	/* temp registers (not saved across subroutine calls) */
-#define t1	$9
-#define t2	$10
-#define t3	$11
-#define t4	$12
-#define t5	$13
-#define t6	$14
-#define t7	$15
-#define ta0	$12	/* alias */
-#define ta1	$13
-#define ta2	$14
-#define ta3	$15
-#endif
-#define s0	$16	/* saved across subroutine calls (callee saved) */
-#define s1	$17
-#define s2	$18
-#define s3	$19
-#define s4	$20
-#define s5	$21
-#define s6	$22
-#define s7	$23
-#define t8	$24	/* two more temp registers */
-#define t9	$25
-#define k0	$26	/* kernel temporary */
-#define k1	$27
-#define gp	$28	/* global pointer */
-#define sp	$29	/* stack pointer */
-#define s8	$30	/* one more callee saved */
-#define ra	$31	/* return address */
-
-#endif /* !_MIPS_REGDEF_H_ */
diff --git a/libc/arch-mips64/include/machine/regnum.h b/libc/arch-mips64/include/machine/regnum.h
deleted file mode 100644
index bfe1280..0000000
--- a/libc/arch-mips64/include/machine/regnum.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*	$OpenBSD: regnum.h,v 1.3 2004/08/10 20:28:13 deraadt Exp $ */
-
-/*
- * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- *
- * 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 AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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 _MIPS64_REGNUM_H_
-#define _MIPS64_REGNUM_H_
-
-/*
- * Location of the saved registers relative to ZERO.
- * Usage is p->p_regs[XX].
- */
-#define ZERO	0
-#define AST	1
-#define V0	2
-#define V1	3
-#define A0	4
-#define A1	5
-#define A2	6
-#define A3	7
-#define T0	8
-#define T1	9
-#define T2	10
-#define T3	11
-#define T4	12
-#define T5	13
-#define T6	14
-#define T7	15
-#define S0	16
-#define S1	17
-#define S2	18
-#define S3	19
-#define S4	20
-#define S5	21
-#define S6	22
-#define S7	23
-#define T8	24
-#define T9	25
-#define K0	26
-#define K1	27
-#define GP	28
-#define SP	29
-#define S8	30
-#define RA	31
-#define	SR	32
-#define	PS	SR	/* alias for SR */
-#define MULLO	33
-#define MULHI	34
-#define BADVADDR 35
-#define CAUSE	36
-#define	PC	37
-#define	IC	38
-#define	CPL	39
-
-#define	NUMSAVEREGS 40		/* Number of registers saved in trap */
-
-#define FPBASE	NUMSAVEREGS
-#define F0	(FPBASE+0)
-#define F1	(FPBASE+1)
-#define F2	(FPBASE+2)
-#define F3	(FPBASE+3)
-#define F4	(FPBASE+4)
-#define F5	(FPBASE+5)
-#define F6	(FPBASE+6)
-#define F7	(FPBASE+7)
-#define F8	(FPBASE+8)
-#define F9	(FPBASE+9)
-#define F10	(FPBASE+10)
-#define F11	(FPBASE+11)
-#define F12	(FPBASE+12)
-#define F13	(FPBASE+13)
-#define F14	(FPBASE+14)
-#define F15	(FPBASE+15)
-#define F16	(FPBASE+16)
-#define F17	(FPBASE+17)
-#define F18	(FPBASE+18)
-#define F19	(FPBASE+19)
-#define F20	(FPBASE+20)
-#define F21	(FPBASE+21)
-#define F22	(FPBASE+22)
-#define F23	(FPBASE+23)
-#define F24	(FPBASE+24)
-#define F25	(FPBASE+25)
-#define F26	(FPBASE+26)
-#define F27	(FPBASE+27)
-#define F28	(FPBASE+28)
-#define F29	(FPBASE+29)
-#define F30	(FPBASE+30)
-#define F31	(FPBASE+31)
-#define	FSR	(FPBASE+32)
-
-#define	NUMFPREGS 33
-
-#define	NREGS	(NUMSAVEREGS + NUMFPREGS)
-
-#endif /* !_MIPS64_REGNUM_H_ */
diff --git a/libc/arch-mips64/include/machine/setjmp.h b/libc/arch-mips64/include/machine/setjmp.h
deleted file mode 100644
index 55ba7be..0000000
--- a/libc/arch-mips64/include/machine/setjmp.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*	$OpenBSD: setjmp.h,v 1.2 2004/08/10 21:10:56 pefo Exp $	*/
-
-/* Public domain */
-
-#ifndef _MIPS_SETJMP_H_
-#define _MIPS_SETJMP_H_
-
-#define	_JBLEN	157		/* size, in longs, of a jmp_buf */
-
-#endif /* !_MIPS_SETJMP_H_ */
diff --git a/libc/arch-mips64/include/machine/signal.h b/libc/arch-mips64/include/machine/signal.h
deleted file mode 100644
index b31715c..0000000
--- a/libc/arch-mips64/include/machine/signal.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*	$OpenBSD: signal.h,v 1.8 2006/01/09 18:18:37 millert Exp $	*/
-
-/*
- * Copyright (c) 1992, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Ralph Campbell.
- *
- * 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. 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.
- *
- *	@(#)signal.h	8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _MIPS_SIGNAL_H_
-#define _MIPS_SIGNAL_H_
-
-#define	SC_REGMASK	(0*REGSZ)
-#define	SC_STATUS	(1*REGSZ)
-#define	SC_PC		(2*REGSZ)
-#define	SC_REGS		(SC_PC+8)
-#define	SC_FPREGS	(SC_REGS+32*8)
-#define	SC_ACX		(SC_FPREGS+32*REGSZ_FP)
-#define	SC_USED_MATH	(SC_ACX+3*REGSZ)
-/* OpenBSD compatibility */
-#define	SC_MASK		SC_REGMASK
-#define	SC_FPUSED	SC_USED_MATH
-
-#endif	/* !_MIPS_SIGNAL_H_ */
diff --git a/libc/arch-mips64/mips64.mk b/libc/arch-mips64/mips64.mk
index 0d4b727..2b81e63 100644
--- a/libc/arch-mips64/mips64.mk
+++ b/libc/arch-mips64/mips64.mk
@@ -9,15 +9,13 @@
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memchr.c \
-    bionic/memcmp.c \
-    bionic/memcpy.cpp \
-    bionic/memmove.c \
-    bionic/memrchr.c \
-    bionic/memset.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
+    arch-mips/string/memcmp.c \
+    arch-mips/string/memcpy.c \
+    arch-mips/string/memset.c \
+    arch-mips/string/strlen.c \
 
 libc_freebsd_src_files_mips64 += \
     upstream-freebsd/lib/libc/string/wcscat.c \
@@ -30,6 +28,9 @@
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
 libc_openbsd_src_files_mips64 += \
+    upstream-openbsd/lib/libc/string/memchr.c \
+    upstream-openbsd/lib/libc/string/memmove.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpcpy.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strcat.c \
@@ -37,7 +38,6 @@
     upstream-openbsd/lib/libc/string/strcpy.c \
     upstream-openbsd/lib/libc/string/strlcat.c \
     upstream-openbsd/lib/libc/string/strlcpy.c \
-    upstream-openbsd/lib/libc/string/strlen.c \
     upstream-openbsd/lib/libc/string/strncat.c \
     upstream-openbsd/lib/libc/string/strncmp.c \
     upstream-openbsd/lib/libc/string/strncpy.c \
@@ -49,12 +49,10 @@
 libc_bionic_src_files_mips64 += \
     arch-mips64/bionic/__bionic_clone.S \
     arch-mips64/bionic/_exit_with_stack_teardown.S \
-    arch-mips64/bionic/__get_sp.S \
-    arch-mips64/bionic/_setjmp.S \
     arch-mips64/bionic/setjmp.S \
-    arch-mips64/bionic/sigsetjmp.S \
     arch-mips64/bionic/syscall.S \
     arch-mips64/bionic/vfork.S \
+    arch-mips64/bionic/stat.cpp \
 
 libc_crt_target_cflags_mips64 := \
     $($(my_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS) \
diff --git a/libc/arch-mips64/string/memset.S b/libc/arch-mips64/string/memset.S
index 3e630ca..09b756b 100644
--- a/libc/arch-mips64/string/memset.S
+++ b/libc/arch-mips64/string/memset.S
@@ -67,86 +67,6 @@
 #define DBG
 #endif
 
-/*
- * void _memset16(uint16_t* dst, uint16_t value, size_t size);
- */
-
-LEAF(_memset16,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,1			# a0 must be halfword aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,1			# a2 must be even
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is even
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a2,zero,0,1
-#else
-	ori	a2,1
-	xori	a2,1
-#endif
-#endif
-
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a1,a1,16,16
-#else
-	andi	a1,0xffff
-	sll	t3,a1,16
-	or	a1,t3
-#endif
-
-	beqz	a2,.Ldone
-	 andi	t1,a0,2
-	beqz	t1,.Lalignok
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-	sh	a1,0(a0)		# store one halfword to get aligned
-	addu	a0,2
-	subu	a2,2
-.Lalignok:
-	slti	t1,a2,4			# .Laligned for 4 or more bytes
-	beqz	t1,.Laligned
-	 sne	t1,a2,2			# one more halfword?
-	bnez	t1,.Ldone
-	 nop
-	sh	a1,0(a0)
-.Ldone:
-	j	ra
-	 nop
-	.set reorder
-END(_memset16)
-
-/*
- * void _memset32(uint32_t* dst, uint32_t value, size_t size);
- */
-
-LEAF(_memset32,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,3			# a0 must be word aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,3			# a2 must be a multiple of 4 bytes
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is a multiple of 4
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	$a2,$0,0,2
-#else
-	ori	a2,3
-	xori	a2,3
-#endif
-#endif
-
-	bnez	a2,.Laligned		# any work to do?
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-
-	j	ra
-	 nop
-	.set reorder
-END(_memset32)
-
 LEAF(memset,0)
 
 	.set	noreorder
diff --git a/libc/arch-mips64/syscalls/___close.S b/libc/arch-mips64/syscalls/___close.S
new file mode 100644
index 0000000..f1ce708
--- /dev/null
+++ b/libc/arch-mips64/syscalls/___close.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___close)
+    .set push
+    .set noreorder
+    li v0, __NR_close
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(___close)
+.hidden ___close
diff --git a/libc/arch-mips64/syscalls/___faccessat.S b/libc/arch-mips64/syscalls/___faccessat.S
new file mode 100644
index 0000000..240625f
--- /dev/null
+++ b/libc/arch-mips64/syscalls/___faccessat.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___faccessat)
+    .set push
+    .set noreorder
+    li v0, __NR_faccessat
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-mips64/syscalls/___fchmod.S b/libc/arch-mips64/syscalls/___fchmod.S
new file mode 100644
index 0000000..7c16c54
--- /dev/null
+++ b/libc/arch-mips64/syscalls/___fchmod.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmod)
+    .set push
+    .set noreorder
+    li v0, __NR_fchmod
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(___fchmod)
+.hidden ___fchmod
diff --git a/libc/arch-mips64/syscalls/___fchmodat.S b/libc/arch-mips64/syscalls/___fchmodat.S
new file mode 100644
index 0000000..50f108e
--- /dev/null
+++ b/libc/arch-mips64/syscalls/___fchmodat.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmodat)
+    .set push
+    .set noreorder
+    li v0, __NR_fchmodat
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(___fchmodat)
+.hidden ___fchmodat
diff --git a/libc/arch-mips64/syscalls/__clock_nanosleep.S b/libc/arch-mips64/syscalls/__clock_nanosleep.S
new file mode 100644
index 0000000..204675f
--- /dev/null
+++ b/libc/arch-mips64/syscalls/__clock_nanosleep.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__clock_nanosleep)
+    .set push
+    .set noreorder
+    li v0, __NR_clock_nanosleep
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(__clock_nanosleep)
+.hidden __clock_nanosleep
diff --git a/libc/arch-mips64/syscalls/__fstatfs.S b/libc/arch-mips64/syscalls/__fstatfs.S
new file mode 100644
index 0000000..8766e22
--- /dev/null
+++ b/libc/arch-mips64/syscalls/__fstatfs.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__fstatfs)
+    .set push
+    .set noreorder
+    li v0, __NR_fstatfs
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(__fstatfs)
+.hidden __fstatfs
diff --git a/libc/arch-mips64/syscalls/__rt_sigqueueinfo.S b/libc/arch-mips64/syscalls/__rt_sigqueueinfo.S
new file mode 100644
index 0000000..e97aeba
--- /dev/null
+++ b/libc/arch-mips64/syscalls/__rt_sigqueueinfo.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__rt_sigqueueinfo)
+    .set push
+    .set noreorder
+    li v0, __NR_rt_sigqueueinfo
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(__rt_sigqueueinfo)
+.hidden __rt_sigqueueinfo
diff --git a/libc/arch-mips64/syscalls/__statfs.S b/libc/arch-mips64/syscalls/__statfs.S
new file mode 100644
index 0000000..52db4e2
--- /dev/null
+++ b/libc/arch-mips64/syscalls/__statfs.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__statfs)
+    .set push
+    .set noreorder
+    li v0, __NR_statfs
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(__statfs)
+.hidden __statfs
diff --git a/libc/arch-mips64/syscalls/_exit.S b/libc/arch-mips64/syscalls/_exit.S
index da5a2f7..37f8119 100644
--- a/libc/arch-mips64/syscalls/_exit.S
+++ b/libc/arch-mips64/syscalls/_exit.S
@@ -24,5 +24,4 @@
     .set pop
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-mips64/syscalls/_flush_cache.S b/libc/arch-mips64/syscalls/_flush_cache.S
deleted file mode 100644
index a9e4842..0000000
--- a/libc/arch-mips64/syscalls/_flush_cache.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(_flush_cache)
-    .set push
-    .set noreorder
-    li v0, __NR_cacheflush
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(_flush_cache)
diff --git a/libc/arch-mips64/syscalls/clock_nanosleep.S b/libc/arch-mips64/syscalls/clock_nanosleep.S
deleted file mode 100644
index c958a10..0000000
--- a/libc/arch-mips64/syscalls/clock_nanosleep.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(clock_nanosleep)
-    .set push
-    .set noreorder
-    li v0, __NR_clock_nanosleep
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(clock_nanosleep)
diff --git a/libc/arch-mips64/syscalls/close.S b/libc/arch-mips64/syscalls/close.S
deleted file mode 100644
index 5e237dd..0000000
--- a/libc/arch-mips64/syscalls/close.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(close)
-    .set push
-    .set noreorder
-    li v0, __NR_close
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(close)
diff --git a/libc/arch-mips64/syscalls/faccessat.S b/libc/arch-mips64/syscalls/faccessat.S
deleted file mode 100644
index 18bb800..0000000
--- a/libc/arch-mips64/syscalls/faccessat.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(faccessat)
-    .set push
-    .set noreorder
-    li v0, __NR_faccessat
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(faccessat)
diff --git a/libc/arch-mips64/syscalls/fallocate.S b/libc/arch-mips64/syscalls/fallocate.S
index c1ef0ed..14e25a0 100644
--- a/libc/arch-mips64/syscalls/fallocate.S
+++ b/libc/arch-mips64/syscalls/fallocate.S
@@ -24,5 +24,4 @@
     .set pop
 END(fallocate)
 
-    .globl fallocate64
-    .equ fallocate64, fallocate
+ALIAS_SYMBOL(fallocate64, fallocate)
diff --git a/libc/arch-mips64/syscalls/fchmod.S b/libc/arch-mips64/syscalls/fchmod.S
deleted file mode 100644
index a877b78..0000000
--- a/libc/arch-mips64/syscalls/fchmod.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmod)
-    .set push
-    .set noreorder
-    li v0, __NR_fchmod
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(fchmod)
diff --git a/libc/arch-mips64/syscalls/fchmodat.S b/libc/arch-mips64/syscalls/fchmodat.S
deleted file mode 100644
index 151492a..0000000
--- a/libc/arch-mips64/syscalls/fchmodat.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmodat)
-    .set push
-    .set noreorder
-    li v0, __NR_fchmodat
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(fchmodat)
diff --git a/libc/arch-mips64/syscalls/fstat64.S b/libc/arch-mips64/syscalls/fstat64.S
deleted file mode 100644
index a14d51c..0000000
--- a/libc/arch-mips64/syscalls/fstat64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fstat64)
-    .set push
-    .set noreorder
-    li v0, __NR_fstat
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(fstat64)
-
-    .globl fstat
-    .equ fstat, fstat64
diff --git a/libc/arch-mips64/syscalls/fstatat64.S b/libc/arch-mips64/syscalls/fstatat64.S
deleted file mode 100644
index 7888a43..0000000
--- a/libc/arch-mips64/syscalls/fstatat64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fstatat64)
-    .set push
-    .set noreorder
-    li v0, __NR_newfstatat
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(fstatat64)
-
-    .globl fstatat
-    .equ fstatat, fstatat64
diff --git a/libc/arch-mips64/syscalls/fstatfs64.S b/libc/arch-mips64/syscalls/fstatfs64.S
deleted file mode 100644
index 12e885c..0000000
--- a/libc/arch-mips64/syscalls/fstatfs64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fstatfs64)
-    .set push
-    .set noreorder
-    li v0, __NR_fstatfs
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(fstatfs64)
-
-    .globl fstatfs
-    .equ fstatfs, fstatfs64
diff --git a/libc/arch-mips64/syscalls/ftruncate.S b/libc/arch-mips64/syscalls/ftruncate.S
index 58b847b..063e8f3 100644
--- a/libc/arch-mips64/syscalls/ftruncate.S
+++ b/libc/arch-mips64/syscalls/ftruncate.S
@@ -24,5 +24,4 @@
     .set pop
 END(ftruncate)
 
-    .globl ftruncate64
-    .equ ftruncate64, ftruncate
+ALIAS_SYMBOL(ftruncate64, ftruncate)
diff --git a/libc/arch-mips64/syscalls/getrlimit.S b/libc/arch-mips64/syscalls/getrlimit.S
index 7576c17..5e2a82a 100644
--- a/libc/arch-mips64/syscalls/getrlimit.S
+++ b/libc/arch-mips64/syscalls/getrlimit.S
@@ -24,5 +24,4 @@
     .set pop
 END(getrlimit)
 
-    .globl getrlimit64
-    .equ getrlimit64, getrlimit
+ALIAS_SYMBOL(getrlimit64, getrlimit)
diff --git a/libc/arch-mips64/syscalls/lseek.S b/libc/arch-mips64/syscalls/lseek.S
index 5c92d70..3bfc29d 100644
--- a/libc/arch-mips64/syscalls/lseek.S
+++ b/libc/arch-mips64/syscalls/lseek.S
@@ -24,5 +24,4 @@
     .set pop
 END(lseek)
 
-    .globl lseek64
-    .equ lseek64, lseek
+ALIAS_SYMBOL(lseek64, lseek)
diff --git a/libc/arch-mips64/syscalls/mmap.S b/libc/arch-mips64/syscalls/mmap.S
index 393271a..cc53eb2 100644
--- a/libc/arch-mips64/syscalls/mmap.S
+++ b/libc/arch-mips64/syscalls/mmap.S
@@ -24,5 +24,4 @@
     .set pop
 END(mmap)
 
-    .globl mmap64
-    .equ mmap64, mmap
+ALIAS_SYMBOL(mmap64, mmap)
diff --git a/libc/arch-mips64/syscalls/pread64.S b/libc/arch-mips64/syscalls/pread64.S
index 90e0612..7965ba9 100644
--- a/libc/arch-mips64/syscalls/pread64.S
+++ b/libc/arch-mips64/syscalls/pread64.S
@@ -24,5 +24,4 @@
     .set pop
 END(pread64)
 
-    .globl pread
-    .equ pread, pread64
+ALIAS_SYMBOL(pread, pread64)
diff --git a/libc/arch-mips64/syscalls/prlimit64.S b/libc/arch-mips64/syscalls/prlimit64.S
index 5f0ba1d..e04a5b6 100644
--- a/libc/arch-mips64/syscalls/prlimit64.S
+++ b/libc/arch-mips64/syscalls/prlimit64.S
@@ -24,5 +24,4 @@
     .set pop
 END(prlimit64)
 
-    .globl prlimit
-    .equ prlimit, prlimit64
+ALIAS_SYMBOL(prlimit, prlimit64)
diff --git a/libc/arch-mips64/syscalls/pwrite64.S b/libc/arch-mips64/syscalls/pwrite64.S
index e34f8db..97e0183 100644
--- a/libc/arch-mips64/syscalls/pwrite64.S
+++ b/libc/arch-mips64/syscalls/pwrite64.S
@@ -24,5 +24,4 @@
     .set pop
 END(pwrite64)
 
-    .globl pwrite
-    .equ pwrite, pwrite64
+ALIAS_SYMBOL(pwrite, pwrite64)
diff --git a/libc/arch-mips64/syscalls/sendfile.S b/libc/arch-mips64/syscalls/sendfile.S
index f330242..a50459e 100644
--- a/libc/arch-mips64/syscalls/sendfile.S
+++ b/libc/arch-mips64/syscalls/sendfile.S
@@ -24,5 +24,4 @@
     .set pop
 END(sendfile)
 
-    .globl sendfile64
-    .equ sendfile64, sendfile
+ALIAS_SYMBOL(sendfile64, sendfile)
diff --git a/libc/arch-mips64/syscalls/sethostname.S b/libc/arch-mips64/syscalls/sethostname.S
new file mode 100644
index 0000000..2f132a2
--- /dev/null
+++ b/libc/arch-mips64/syscalls/sethostname.S
@@ -0,0 +1,25 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sethostname)
+    .set push
+    .set noreorder
+    li v0, __NR_sethostname
+    syscall
+    bnez a3, 1f
+    move a0, v0
+    j ra
+    nop
+1:
+    move t0, ra
+    bal     2f
+    nop
+2:
+    .cpsetup ra, t1, 2b
+    LA t9,__set_errno_internal
+    .cpreturn
+    j t9
+    move ra, t0
+    .set pop
+END(sethostname)
diff --git a/libc/arch-mips64/syscalls/setrlimit.S b/libc/arch-mips64/syscalls/setrlimit.S
index 0e5e80e..be6fdc3 100644
--- a/libc/arch-mips64/syscalls/setrlimit.S
+++ b/libc/arch-mips64/syscalls/setrlimit.S
@@ -24,5 +24,4 @@
     .set pop
 END(setrlimit)
 
-    .globl setrlimit64
-    .equ setrlimit64, setrlimit
+ALIAS_SYMBOL(setrlimit64, setrlimit)
diff --git a/libc/arch-mips64/syscalls/statfs64.S b/libc/arch-mips64/syscalls/statfs64.S
deleted file mode 100644
index 74351f7..0000000
--- a/libc/arch-mips64/syscalls/statfs64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(statfs64)
-    .set push
-    .set noreorder
-    li v0, __NR_statfs
-    syscall
-    bnez a3, 1f
-    move a0, v0
-    j ra
-    nop
-1:
-    move t0, ra
-    bal     2f
-    nop
-2:
-    .cpsetup ra, t1, 2b
-    LA t9,__set_errno_internal
-    .cpreturn
-    j t9
-    move ra, t0
-    .set pop
-END(statfs64)
-
-    .globl statfs
-    .equ statfs, statfs64
diff --git a/libc/arch-mips64/syscalls/truncate.S b/libc/arch-mips64/syscalls/truncate.S
index fb3b7eb..b832796 100644
--- a/libc/arch-mips64/syscalls/truncate.S
+++ b/libc/arch-mips64/syscalls/truncate.S
@@ -24,5 +24,4 @@
     .set pop
 END(truncate)
 
-    .globl truncate64
-    .equ truncate64, truncate
+ALIAS_SYMBOL(truncate64, truncate)
diff --git a/libc/arch-x86/atom/string/sse2-wcslen-atom.S b/libc/arch-x86/atom/string/sse2-wcslen-atom.S
index 6a6ad51..2f10db4 100644
--- a/libc/arch-x86/atom/string/sse2-wcslen-atom.S
+++ b/libc/arch-x86/atom/string/sse2-wcslen-atom.S
@@ -65,21 +65,21 @@
 ENTRY (wcslen)
 	mov	STR(%esp), %edx
 #endif
-	cmp	$0, (%edx)
+	cmpl	$0, (%edx)
 	jz	L(exit_tail0)
-	cmp	$0, 4(%edx)
+	cmpl	$0, 4(%edx)
 	jz	L(exit_tail1)
-	cmp	$0, 8(%edx)
+	cmpl	$0, 8(%edx)
 	jz	L(exit_tail2)
-	cmp	$0, 12(%edx)
+	cmpl	$0, 12(%edx)
 	jz	L(exit_tail3)
-	cmp	$0, 16(%edx)
+	cmpl	$0, 16(%edx)
 	jz	L(exit_tail4)
-	cmp	$0, 20(%edx)
+	cmpl	$0, 20(%edx)
 	jz	L(exit_tail5)
-	cmp	$0, 24(%edx)
+	cmpl	$0, 24(%edx)
 	jz	L(exit_tail6)
-	cmp	$0, 28(%edx)
+	cmpl	$0, 28(%edx)
 	jz	L(exit_tail7)
 
 	pxor	%xmm0, %xmm0
diff --git a/libc/arch-x86/atom/string/ssse3-wcscat-atom.S b/libc/arch-x86/atom/string/ssse3-wcscat-atom.S
index 17b0843..8a389a3 100644
--- a/libc/arch-x86/atom/string/ssse3-wcscat-atom.S
+++ b/libc/arch-x86/atom/string/ssse3-wcscat-atom.S
@@ -98,13 +98,13 @@
 	mov	STR2(%esp), %ecx
 	lea	(%edi, %eax), %edx
 
-	cmp	$0, (%ecx)
+	cmpl	$0, (%ecx)
 	jz	L(Exit4)
-	cmp	$0, 4(%ecx)
+	cmpl	$0, 4(%ecx)
 	jz	L(Exit8)
-	cmp	$0, 8(%ecx)
+	cmpl	$0, 8(%ecx)
 	jz	L(Exit12)
-	cmp	$0, 12(%ecx)
+	cmpl	$0, 12(%ecx)
 	jz	L(Exit16)
 
 #undef RETURN
diff --git a/libc/arch-x86/atom/string/ssse3-wcscpy-atom.S b/libc/arch-x86/atom/string/ssse3-wcscpy-atom.S
index 8ba84bc..27cb61e 100644
--- a/libc/arch-x86/atom/string/ssse3-wcscpy-atom.S
+++ b/libc/arch-x86/atom/string/ssse3-wcscpy-atom.S
@@ -92,13 +92,13 @@
 	mov	STR1(%esp), %edx
 	mov	STR2(%esp), %ecx
 
-	cmp	$0, (%ecx)
+	cmpl	$0, (%ecx)
 	jz	L(ExitTail4)
-	cmp	$0, 4(%ecx)
+	cmpl	$0, 4(%ecx)
 	jz	L(ExitTail8)
-	cmp	$0, 8(%ecx)
+	cmpl	$0, 8(%ecx)
 	jz	L(ExitTail12)
-	cmp	$0, 12(%ecx)
+	cmpl	$0, 12(%ecx)
 	jz	L(ExitTail16)
 
 	PUSH	(%edi)
diff --git a/libc/arch-x86/bionic/__bionic_clone.S b/libc/arch-x86/bionic/__bionic_clone.S
index ef78aee..1a6f642 100644
--- a/libc/arch-x86/bionic/__bionic_clone.S
+++ b/libc/arch-x86/bionic/__bionic_clone.S
@@ -3,8 +3,14 @@
 // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
 ENTRY(__bionic_clone)
         pushl   %ebx
+        .cfi_adjust_cfa_offset 4
+        .cfi_rel_offset ebx, 0
         pushl   %esi
+        .cfi_adjust_cfa_offset 4
+        .cfi_rel_offset esi, 0
         pushl   %edi
+        .cfi_adjust_cfa_offset 4
+        .cfi_rel_offset edi, 0
 
         # Load system call arguments into registers.
         movl    16(%esp), %ebx   # flags
@@ -46,8 +52,14 @@
         # We're the parent; nothing to do.
 .L_bc_return:
         popl    %edi
+        .cfi_adjust_cfa_offset -4
+        .cfi_restore edi
         popl    %esi
+        .cfi_adjust_cfa_offset -4
+        .cfi_restore esi
         popl    %ebx
+        .cfi_adjust_cfa_offset -4
+        .cfi_restore ebx
         ret
 END(__bionic_clone)
 .hidden __bionic_clone
diff --git a/libc/arch-x86/bionic/_setjmp.S b/libc/arch-x86/bionic/_setjmp.S
deleted file mode 100644
index 0b256a2..0000000
--- a/libc/arch-x86/bionic/_setjmp.S
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $OpenBSD: _setjmp.S,v 1.5 2005/08/07 11:30:38 espie Exp $ */
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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. 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.
- */
-
-#include <private/bionic_asm.h>
-
-/*
- * C library -- _setjmp, _longjmp
- *
- *	_longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	_setjmp(a)
- * by restoring registers from the stack.
- * The previous signal state is NOT restored.
- */
-
-ENTRY(_setjmp)
-	movl	4(%esp),%eax
-	movl	0(%esp),%edx
-	movl	%edx, 0(%eax)		/* rta */
-	movl	%ebx, 4(%eax)
-	movl	%esp, 8(%eax)
-	movl	%ebp,12(%eax)
-	movl	%esi,16(%eax)
-	movl	%edi,20(%eax)
-	xorl	%eax,%eax
-	ret
-END(_setjmp)
-
-ENTRY(_longjmp)
-	movl	4(%esp),%edx
-	movl	8(%esp),%eax
-	movl	0(%edx),%ecx
-	movl	4(%edx),%ebx
-	movl	8(%edx),%esp
-	movl	12(%edx),%ebp
-	movl	16(%edx),%esi
-	movl	20(%edx),%edi
-	testl	%eax,%eax
-	jnz	1f
-	incl	%eax
-1:	movl	%ecx,0(%esp)
-	ret
-END(_longjmp)
diff --git a/libc/arch-x86/bionic/setjmp.S b/libc/arch-x86/bionic/setjmp.S
index 8f9d67c..18ad810 100644
--- a/libc/arch-x86/bionic/setjmp.S
+++ b/libc/arch-x86/bionic/setjmp.S
@@ -1,4 +1,3 @@
-/* $OpenBSD: setjmp.S,v 1.8 2005/08/07 11:30:38 espie Exp $ */
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -33,55 +32,96 @@
 
 #include <private/bionic_asm.h>
 
-/*
- * C library -- setjmp, longjmp
- *
- *	longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	setjmp(a)
- * by restoring registers from the stack.
- * The previous signal state is restored.
- */
+#define _JB_EDX 0
+#define _JB_EBX 1
+#define _JB_ESP 2
+#define _JB_EBP 3
+#define _JB_ESI 4
+#define _JB_EDI 5
+#define _JB_SIGMASK 6
+#define _JB_SIGFLAG 7
 
 ENTRY(setjmp)
-	PIC_PROLOGUE
-	pushl	$0
-	call	PIC_PLT(sigblock)
-	addl	$4,%esp
-	PIC_EPILOGUE
-
-	movl	4(%esp),%ecx
-	movl	0(%esp),%edx
-	movl	%edx, 0(%ecx)
-	movl	%ebx, 4(%ecx)
-	movl	%esp, 8(%ecx)
-	movl	%ebp,12(%ecx)
-	movl	%esi,16(%ecx)
-	movl	%edi,20(%ecx)
-	movl	%eax,24(%ecx)
-	xorl	%eax,%eax
-	ret
+  movl 4(%esp),%ecx
+  movl $1,(_JB_SIGFLAG * 4)(%ecx)
+  jmp .L_sigsetjmp_signal_mask
 END(setjmp)
 
-ENTRY(longjmp)
-	movl	4(%esp),%edx
-	PIC_PROLOGUE
-	pushl	24(%edx)
-	call	PIC_PLT(sigsetmask)
-	addl	$4,%esp
-	PIC_EPILOGUE
+ENTRY(_setjmp)
+  movl 4(%esp),%ecx
+  movl $0,(_JB_SIGFLAG * 4)(%ecx)
+  jmp .L_sigsetjmp_no_signal_mask
+END(_setjmp)
 
-	movl	4(%esp),%edx
-	movl	8(%esp),%eax
-	movl	0(%edx),%ecx
-	movl	4(%edx),%ebx
-	movl	8(%edx),%esp
-	movl	12(%edx),%ebp
-	movl	16(%edx),%esi
-	movl	20(%edx),%edi
-	testl	%eax,%eax
-	jnz	1f
-	incl	%eax
-1:	movl	%ecx,0(%esp)
-	ret
-END(longjmp)
+ENTRY(sigsetjmp)
+  movl 4(%esp),%ecx
+  movl 8(%esp),%eax
+
+  // Record whether or not the signal mask is valid.
+  movl %eax,(_JB_SIGFLAG * 4)(%ecx)
+
+  // Do we need to save the signal mask?
+  testl %eax,%eax
+  jz 1f
+
+.L_sigsetjmp_signal_mask:
+  // Get the current signal mask.
+  PIC_PROLOGUE
+  pushl $0
+  call PIC_PLT(sigblock)
+  addl $4,%esp
+  PIC_EPILOGUE
+
+  // Save the signal mask.
+  movl 4(%esp),%ecx
+  movl %eax,(_JB_SIGMASK * 4)(%ecx)
+
+.L_sigsetjmp_no_signal_mask:
+1:
+  // Save the callee-save registers.
+  movl 0(%esp),%edx
+  movl %edx,(_JB_EDX * 4)(%ecx)
+  movl %ebx,(_JB_EBX * 4)(%ecx)
+  movl %esp,(_JB_ESP * 4)(%ecx)
+  movl %ebp,(_JB_EBP * 4)(%ecx)
+  movl %esi,(_JB_ESI * 4)(%ecx)
+  movl %edi,(_JB_EDI * 4)(%ecx)
+
+  xorl %eax,%eax
+  ret
+END(sigsetjmp)
+
+ENTRY(siglongjmp)
+  // Do we have a signal mask to restore?
+  movl 4(%esp),%edx
+  cmpl $0,(_JB_SIGFLAG * 4)(%edx)
+  jz 1f
+
+  // Restore the signal mask.
+  PIC_PROLOGUE
+  pushl (_JB_SIGMASK * 4)(%edx)
+  call PIC_PLT(sigsetmask)
+  addl $4,%esp
+  PIC_EPILOGUE
+
+1:
+  // Restore the callee-save registers.
+  movl 4(%esp),%edx
+  movl 8(%esp),%eax
+  movl (_JB_EDX * 4)(%edx),%ecx
+  movl (_JB_EBX * 4)(%edx),%ebx
+  movl (_JB_ESP * 4)(%edx),%esp
+  movl (_JB_EBP * 4)(%edx),%ebp
+  movl (_JB_ESI * 4)(%edx),%esi
+  movl (_JB_EDI * 4)(%edx),%edi
+
+  testl %eax,%eax
+  jnz 2f
+  incl %eax
+2:
+  movl %ecx,0(%esp)
+  ret
+END(siglongjmp)
+
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-x86/bionic/sigsetjmp.S b/libc/arch-x86/bionic/sigsetjmp.S
deleted file mode 100644
index 250c606..0000000
--- a/libc/arch-x86/bionic/sigsetjmp.S
+++ /dev/null
@@ -1,86 +0,0 @@
-/* $OpenBSD: sigsetjmp.S,v 1.7 2005/08/07 11:30:38 espie Exp $ */
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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. 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.
- */
-
-#include <private/bionic_asm.h>
-
-ENTRY(sigsetjmp)
-	movl	4(%esp),%ecx
-	movl	8(%esp),%eax
-	movl	%eax,28(%ecx)
-	testl	%eax,%eax
-	jz	1f
-
-	PIC_PROLOGUE
-	pushl	$0
-	call	PIC_PLT(sigblock)
-	addl	$4,%esp
-	PIC_EPILOGUE
-
-	movl	4(%esp),%ecx
-	movl	%eax,24(%ecx)
-1:	movl	0(%esp),%edx
-	movl	%edx, 0(%ecx)
-	movl	%ebx, 4(%ecx)
-	movl	%esp, 8(%ecx)
-	movl	%ebp,12(%ecx)
-	movl	%esi,16(%ecx)
-	movl	%edi,20(%ecx)
-	xorl	%eax,%eax
-	ret
-END(sigsetjmp)
-
-ENTRY(siglongjmp)
-	movl	4(%esp),%edx
-	cmpl	$0,28(%edx)
-	jz	1f
-
-	PIC_PROLOGUE
-	pushl	24(%edx)
-	call	PIC_PLT(sigsetmask)
-	addl	$4,%esp
-	PIC_EPILOGUE
-
-1:	movl	4(%esp),%edx
-	movl	8(%esp),%eax
-	movl	0(%edx),%ecx
-	movl	4(%edx),%ebx
-	movl	8(%edx),%esp
-	movl	12(%edx),%ebp
-	movl	16(%edx),%esi
-	movl	20(%edx),%edi
-	testl	%eax,%eax
-	jnz	2f
-	incl	%eax
-2:	movl	%ecx,0(%esp)
-	ret
-END(siglongjmp)
diff --git a/libc/arch-x86/bionic/syscall.S b/libc/arch-x86/bionic/syscall.S
index f85ec39..2a15102 100644
--- a/libc/arch-x86/bionic/syscall.S
+++ b/libc/arch-x86/bionic/syscall.S
@@ -15,9 +15,17 @@
 ENTRY(syscall)
     # Push the callee save registers.
     push    %ebx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ebx, 0
     push    %esi
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset esi, 0
     push    %edi
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset edi, 0
     push    %ebp
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ebp, 0
 
     # Load all the arguments from the calling frame.
     # (Not all will be valid, depending on the syscall.)
@@ -43,8 +51,16 @@
 1:
     # Restore the callee save registers.
     pop    %ebp
+    .cfi_adjust_cfa_offset -4
+    .cfi_restore ebp
     pop    %edi
+    .cfi_adjust_cfa_offset -4
+    .cfi_restore edi
     pop    %esi
+    .cfi_adjust_cfa_offset -4
+    .cfi_restore esi
     pop    %ebx
+    .cfi_adjust_cfa_offset -4
+    .cfi_restore ebx
     ret
 END(syscall)
diff --git a/libc/arch-x86/bionic/vfork.S b/libc/arch-x86/bionic/vfork.S
index 6c02910..ca7af0f 100644
--- a/libc/arch-x86/bionic/vfork.S
+++ b/libc/arch-x86/bionic/vfork.S
@@ -32,6 +32,8 @@
 
 ENTRY(vfork)
   popl    %ecx  // Grab the return address.
+  .cfi_adjust_cfa_offset 4
+  .cfi_rel_offset ecx, 0
   movl    $__NR_vfork, %eax
   int     $0x80
   cmpl    $-MAX_ERRNO, %eax
diff --git a/libc/arch-x86/include/machine/asm.h b/libc/arch-x86/include/machine/asm.h
index 672493d..943f9dd 100644
--- a/libc/arch-x86/include/machine/asm.h
+++ b/libc/arch-x86/include/machine/asm.h
@@ -49,15 +49,6 @@
 #define PIC_GOT(x)	x@GOT(%ebx)
 #define PIC_GOTOFF(x)	x@GOTOFF(%ebx)
 
-/* let kernels and others override entrypoint alignment */
-#if !defined(_ALIGN_TEXT) && !defined(_KERNEL)
-# ifdef _STANDALONE
-#  define _ALIGN_TEXT .align 1
-# elif defined __ELF__
-#  define _ALIGN_TEXT .align 16
-# else
-#  define _ALIGN_TEXT .align 4
-# endif
-#endif
+#define __bionic_asm_align 16
 
 #endif /* !_I386_ASM_H_ */
diff --git a/libc/arch-x86/include/machine/endian.h b/libc/arch-x86/include/machine/endian.h
deleted file mode 100644
index e1506b1..0000000
--- a/libc/arch-x86/include/machine/endian.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*	$OpenBSD: endian.h,v 1.17 2011/03/12 04:03:04 guenther Exp $	*/
-
-/*-
- * Copyright (c) 1997 Niklas Hallqvist.  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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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 _MACHINE_ENDIAN_H_
-#define _MACHINE_ENDIAN_H_
-
-#ifdef __GNUC__
-
-#define	__swap32md(x) __statement({					\
-	uint32_t __swap32md_x = (x);					\
-									\
-	__asm ("bswap %0" : "+r" (__swap32md_x));			\
-	__swap32md_x;							\
-})
-
-#define	__swap64md(x) __statement({					\
-	uint64_t __swap64md_x = (x);					\
-									\
-	(uint64_t)__swap32md(__swap64md_x >> 32) |			\
-	    (uint64_t)__swap32md(__swap64md_x & 0xffffffff) << 32;	\
-})
-#define	__swap16md(x) __statement({					\
-	uint16_t __swap16md_x = (x);					\
-									\
-	__asm ("rorw $8, %w0" : "+r" (__swap16md_x));			\
-	__swap16md_x;							\
-})
-
-/* Tell sys/endian.h we have MD variants of the swap macros.  */
-#define MD_SWAP
-
-#endif	/* __GNUC__ */
-
-#define _BYTE_ORDER _LITTLE_ENDIAN
-#include <sys/types.h>
-#include <sys/endian.h>
-
-#endif /* _MACHINE_ENDIAN_H_ */
diff --git a/libc/arch-x86/include/machine/exec.h b/libc/arch-x86/include/machine/exec.h
deleted file mode 100644
index d091741..0000000
--- a/libc/arch-x86/include/machine/exec.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*	$OpenBSD: exec.h,v 1.9 2003/04/17 03:42:14 drahn Exp $	*/
-/*	$NetBSD: exec.h,v 1.6 1994/10/27 04:16:05 cgd Exp $	*/
-
-/*
- * Copyright (c) 1993 Christopher G. Demetriou
- * 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. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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 _I386_EXEC_H_
-#define _I386_EXEC_H_
-
-#define __LDPGSZ	4096
-
-#define NATIVE_EXEC_ELF
-
-#define ARCH_ELFSIZE		32
-
-#define ELF_TARG_CLASS		ELFCLASS32
-#define ELF_TARG_DATA		ELFDATA2LSB
-#define ELF_TARG_MACH		EM_386 /* XXX - EM_486 is currently unused
-                                          by all OSs/compilers/linkers */
-
-#define _NLIST_DO_AOUT
-#define _NLIST_DO_ELF
-
-#define _KERN_DO_AOUT
-#define _KERN_DO_ELF
-
-#endif  /* _I386_EXEC_H_ */
diff --git a/libc/arch-x86/syscalls/___close.S b/libc/arch-x86/syscalls/___close.S
new file mode 100644
index 0000000..796944b
--- /dev/null
+++ b/libc/arch-x86/syscalls/___close.S
@@ -0,0 +1,22 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___close)
+    pushl   %ebx
+    .cfi_def_cfa_offset 8
+    .cfi_rel_offset ebx, 0
+    mov     8(%esp), %ebx
+    movl    $__NR_close, %eax
+    int     $0x80
+    cmpl    $-MAX_ERRNO, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno_internal
+    addl    $4, %esp
+1:
+    popl    %ebx
+    ret
+END(___close)
+.hidden ___close
diff --git a/libc/arch-x86/syscalls/___faccessat.S b/libc/arch-x86/syscalls/___faccessat.S
new file mode 100644
index 0000000..361a6ea
--- /dev/null
+++ b/libc/arch-x86/syscalls/___faccessat.S
@@ -0,0 +1,32 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___faccessat)
+    pushl   %ebx
+    .cfi_def_cfa_offset 8
+    .cfi_rel_offset ebx, 0
+    pushl   %ecx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ecx, 0
+    pushl   %edx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset edx, 0
+    mov     16(%esp), %ebx
+    mov     20(%esp), %ecx
+    mov     24(%esp), %edx
+    movl    $__NR_faccessat, %eax
+    int     $0x80
+    cmpl    $-MAX_ERRNO, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno_internal
+    addl    $4, %esp
+1:
+    popl    %edx
+    popl    %ecx
+    popl    %ebx
+    ret
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-x86/syscalls/___fchmod.S b/libc/arch-x86/syscalls/___fchmod.S
new file mode 100644
index 0000000..119a695
--- /dev/null
+++ b/libc/arch-x86/syscalls/___fchmod.S
@@ -0,0 +1,27 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmod)
+    pushl   %ebx
+    .cfi_def_cfa_offset 8
+    .cfi_rel_offset ebx, 0
+    pushl   %ecx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ecx, 0
+    mov     12(%esp), %ebx
+    mov     16(%esp), %ecx
+    movl    $__NR_fchmod, %eax
+    int     $0x80
+    cmpl    $-MAX_ERRNO, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno_internal
+    addl    $4, %esp
+1:
+    popl    %ecx
+    popl    %ebx
+    ret
+END(___fchmod)
+.hidden ___fchmod
diff --git a/libc/arch-x86/syscalls/___fchmodat.S b/libc/arch-x86/syscalls/___fchmodat.S
new file mode 100644
index 0000000..b15bb64
--- /dev/null
+++ b/libc/arch-x86/syscalls/___fchmodat.S
@@ -0,0 +1,32 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmodat)
+    pushl   %ebx
+    .cfi_def_cfa_offset 8
+    .cfi_rel_offset ebx, 0
+    pushl   %ecx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ecx, 0
+    pushl   %edx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset edx, 0
+    mov     16(%esp), %ebx
+    mov     20(%esp), %ecx
+    mov     24(%esp), %edx
+    movl    $__NR_fchmodat, %eax
+    int     $0x80
+    cmpl    $-MAX_ERRNO, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno_internal
+    addl    $4, %esp
+1:
+    popl    %edx
+    popl    %ecx
+    popl    %ebx
+    ret
+END(___fchmodat)
+.hidden ___fchmodat
diff --git a/libc/arch-x86/syscalls/__clock_nanosleep.S b/libc/arch-x86/syscalls/__clock_nanosleep.S
new file mode 100644
index 0000000..75a54d1
--- /dev/null
+++ b/libc/arch-x86/syscalls/__clock_nanosleep.S
@@ -0,0 +1,36 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__clock_nanosleep)
+    pushl   %ebx
+    .cfi_def_cfa_offset 8
+    .cfi_rel_offset ebx, 0
+    pushl   %ecx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ecx, 0
+    pushl   %edx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset edx, 0
+    pushl   %esi
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset esi, 0
+    mov     20(%esp), %ebx
+    mov     24(%esp), %ecx
+    mov     28(%esp), %edx
+    mov     32(%esp), %esi
+    movl    $__NR_clock_nanosleep, %eax
+    int     $0x80
+    cmpl    $-MAX_ERRNO, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno_internal
+    addl    $4, %esp
+1:
+    popl    %esi
+    popl    %edx
+    popl    %ecx
+    popl    %ebx
+    ret
+END(__clock_nanosleep)
diff --git a/libc/arch-x86/syscalls/__rt_sigqueueinfo.S b/libc/arch-x86/syscalls/__rt_sigqueueinfo.S
new file mode 100644
index 0000000..4152100
--- /dev/null
+++ b/libc/arch-x86/syscalls/__rt_sigqueueinfo.S
@@ -0,0 +1,31 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__rt_sigqueueinfo)
+    pushl   %ebx
+    .cfi_def_cfa_offset 8
+    .cfi_rel_offset ebx, 0
+    pushl   %ecx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ecx, 0
+    pushl   %edx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset edx, 0
+    mov     16(%esp), %ebx
+    mov     20(%esp), %ecx
+    mov     24(%esp), %edx
+    movl    $__NR_rt_sigqueueinfo, %eax
+    int     $0x80
+    cmpl    $-MAX_ERRNO, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno_internal
+    addl    $4, %esp
+1:
+    popl    %edx
+    popl    %ecx
+    popl    %ebx
+    ret
+END(__rt_sigqueueinfo)
diff --git a/libc/arch-x86/syscalls/_exit.S b/libc/arch-x86/syscalls/_exit.S
index 8528ee4..9945b35 100644
--- a/libc/arch-x86/syscalls/_exit.S
+++ b/libc/arch-x86/syscalls/_exit.S
@@ -20,5 +20,4 @@
     ret
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-x86/syscalls/clock_nanosleep.S b/libc/arch-x86/syscalls/clock_nanosleep.S
deleted file mode 100644
index 5e2cc03..0000000
--- a/libc/arch-x86/syscalls/clock_nanosleep.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(clock_nanosleep)
-    pushl   %ebx
-    .cfi_def_cfa_offset 8
-    .cfi_rel_offset ebx, 0
-    pushl   %ecx
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset ecx, 0
-    pushl   %edx
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset edx, 0
-    pushl   %esi
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset esi, 0
-    mov     20(%esp), %ebx
-    mov     24(%esp), %ecx
-    mov     28(%esp), %edx
-    mov     32(%esp), %esi
-    movl    $__NR_clock_nanosleep, %eax
-    int     $0x80
-    cmpl    $-MAX_ERRNO, %eax
-    jb      1f
-    negl    %eax
-    pushl   %eax
-    call    __set_errno_internal
-    addl    $4, %esp
-1:
-    popl    %esi
-    popl    %edx
-    popl    %ecx
-    popl    %ebx
-    ret
-END(clock_nanosleep)
diff --git a/libc/arch-x86/syscalls/close.S b/libc/arch-x86/syscalls/close.S
deleted file mode 100644
index f6cce62..0000000
--- a/libc/arch-x86/syscalls/close.S
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(close)
-    pushl   %ebx
-    .cfi_def_cfa_offset 8
-    .cfi_rel_offset ebx, 0
-    mov     8(%esp), %ebx
-    movl    $__NR_close, %eax
-    int     $0x80
-    cmpl    $-MAX_ERRNO, %eax
-    jb      1f
-    negl    %eax
-    pushl   %eax
-    call    __set_errno_internal
-    addl    $4, %esp
-1:
-    popl    %ebx
-    ret
-END(close)
diff --git a/libc/arch-x86/syscalls/faccessat.S b/libc/arch-x86/syscalls/faccessat.S
deleted file mode 100644
index 9d52231..0000000
--- a/libc/arch-x86/syscalls/faccessat.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(faccessat)
-    pushl   %ebx
-    .cfi_def_cfa_offset 8
-    .cfi_rel_offset ebx, 0
-    pushl   %ecx
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset ecx, 0
-    pushl   %edx
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset edx, 0
-    pushl   %esi
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset esi, 0
-    mov     20(%esp), %ebx
-    mov     24(%esp), %ecx
-    mov     28(%esp), %edx
-    mov     32(%esp), %esi
-    movl    $__NR_faccessat, %eax
-    int     $0x80
-    cmpl    $-MAX_ERRNO, %eax
-    jb      1f
-    negl    %eax
-    pushl   %eax
-    call    __set_errno_internal
-    addl    $4, %esp
-1:
-    popl    %esi
-    popl    %edx
-    popl    %ecx
-    popl    %ebx
-    ret
-END(faccessat)
diff --git a/libc/arch-x86/syscalls/fchmod.S b/libc/arch-x86/syscalls/fchmod.S
deleted file mode 100644
index 37851ff..0000000
--- a/libc/arch-x86/syscalls/fchmod.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmod)
-    pushl   %ebx
-    .cfi_def_cfa_offset 8
-    .cfi_rel_offset ebx, 0
-    pushl   %ecx
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset ecx, 0
-    mov     12(%esp), %ebx
-    mov     16(%esp), %ecx
-    movl    $__NR_fchmod, %eax
-    int     $0x80
-    cmpl    $-MAX_ERRNO, %eax
-    jb      1f
-    negl    %eax
-    pushl   %eax
-    call    __set_errno_internal
-    addl    $4, %esp
-1:
-    popl    %ecx
-    popl    %ebx
-    ret
-END(fchmod)
diff --git a/libc/arch-x86/syscalls/fchmodat.S b/libc/arch-x86/syscalls/fchmodat.S
deleted file mode 100644
index f515512..0000000
--- a/libc/arch-x86/syscalls/fchmodat.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmodat)
-    pushl   %ebx
-    .cfi_def_cfa_offset 8
-    .cfi_rel_offset ebx, 0
-    pushl   %ecx
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset ecx, 0
-    pushl   %edx
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset edx, 0
-    pushl   %esi
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset esi, 0
-    mov     20(%esp), %ebx
-    mov     24(%esp), %ecx
-    mov     28(%esp), %edx
-    mov     32(%esp), %esi
-    movl    $__NR_fchmodat, %eax
-    int     $0x80
-    cmpl    $-MAX_ERRNO, %eax
-    jb      1f
-    negl    %eax
-    pushl   %eax
-    call    __set_errno_internal
-    addl    $4, %esp
-1:
-    popl    %esi
-    popl    %edx
-    popl    %ecx
-    popl    %ebx
-    ret
-END(fchmodat)
diff --git a/libc/arch-x86/syscalls/fstat64.S b/libc/arch-x86/syscalls/fstat64.S
index fc16233..ba385a4 100644
--- a/libc/arch-x86/syscalls/fstat64.S
+++ b/libc/arch-x86/syscalls/fstat64.S
@@ -25,5 +25,4 @@
     ret
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-x86/syscalls/fstatat64.S b/libc/arch-x86/syscalls/fstatat64.S
index a3697e6..90e87b6 100644
--- a/libc/arch-x86/syscalls/fstatat64.S
+++ b/libc/arch-x86/syscalls/fstatat64.S
@@ -35,5 +35,4 @@
     ret
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-x86/syscalls/sethostname.S b/libc/arch-x86/syscalls/sethostname.S
new file mode 100644
index 0000000..bfcfd73
--- /dev/null
+++ b/libc/arch-x86/syscalls/sethostname.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sethostname)
+    pushl   %ebx
+    .cfi_def_cfa_offset 8
+    .cfi_rel_offset ebx, 0
+    pushl   %ecx
+    .cfi_adjust_cfa_offset 4
+    .cfi_rel_offset ecx, 0
+    mov     12(%esp), %ebx
+    mov     16(%esp), %ecx
+    movl    $__NR_sethostname, %eax
+    int     $0x80
+    cmpl    $-MAX_ERRNO, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno_internal
+    addl    $4, %esp
+1:
+    popl    %ecx
+    popl    %ebx
+    ret
+END(sethostname)
diff --git a/libc/arch-x86/x86.mk b/libc/arch-x86/x86.mk
index 2c90317..e5d70a9 100644
--- a/libc/arch-x86/x86.mk
+++ b/libc/arch-x86/x86.mk
@@ -1,24 +1,6 @@
 # 32-bit x86.
 
 #
-# Various kinds of LP32 cruft.
-#
-
-libc_bionic_src_files_x86 += \
-    bionic/mmap.cpp \
-
-libc_common_src_files_x86 += \
-    bionic/legacy_32_bit_support.cpp \
-    bionic/ndk_cruft.cpp \
-    bionic/time64.c \
-
-libc_netbsd_src_files_x86 += \
-    upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \
-
-libc_openbsd_src_files_x86 += \
-    upstream-openbsd/lib/libc/stdio/putw.c \
-
-#
 # Default implementations of functions that are commonly optimized.
 #
 
@@ -40,10 +22,8 @@
     arch-x86/bionic/_exit_with_stack_teardown.S \
     arch-x86/bionic/libgcc_compat.c \
     arch-x86/bionic/__restore.S \
-    arch-x86/bionic/_setjmp.S \
     arch-x86/bionic/setjmp.S \
     arch-x86/bionic/__set_tls.c \
-    arch-x86/bionic/sigsetjmp.S \
     arch-x86/bionic/syscall.S \
     arch-x86/bionic/vfork.S \
 
diff --git a/libc/arch-x86_64/bionic/_setjmp.S b/libc/arch-x86_64/bionic/_setjmp.S
deleted file mode 100644
index c617030..0000000
--- a/libc/arch-x86_64/bionic/_setjmp.S
+++ /dev/null
@@ -1,83 +0,0 @@
-/*	$OpenBSD: _setjmp.S,v 1.1 2004/01/28 01:44:45 mickey Exp $	*/
-/*	$NetBSD: _setjmp.S,v 1.1 2001/06/19 00:25:02 fvdl Exp $	*/
-
-/*
- * Copyright (c) 2001 Wasabi Systems, Inc.
- * All rights reserved.
- *
- * Written by Frank van der Linden for Wasabi Systems, Inc.
- *
- * 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 for the NetBSD Project by
- *      Wasabi Systems, Inc.
- * 4. The name of Wasabi Systems, Inc. may not be used to endorse
- *    or promote products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (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 <private/bionic_asm.h>
-#include <machine/setjmp.h>
-
-/*
- * C library -- _setjmp, _longjmp
- *
- *	_longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	_setjmp(a)
- * by restoring registers from the stack.
- * The previous signal state is NOT restored.
- */
-
-ENTRY(_setjmp)
-	movq    (%rsp),%r11
-	movq    %rbx,(_JB_RBX * 8)(%rdi)
-	movq    %rbp,(_JB_RBP * 8)(%rdi)
-	movq    %r12,(_JB_R12 * 8)(%rdi)
-	movq    %r13,(_JB_R13 * 8)(%rdi)
-	movq    %r14,(_JB_R14 * 8)(%rdi)
-	movq    %r15,(_JB_R15 * 8)(%rdi)
-	movq    %rsp,(_JB_RSP * 8)(%rdi)
-	movq    %r11,(_JB_PC  * 8)(%rdi)
-
-	xorl	%eax,%eax
-	ret
-END(_setjmp)
-
-ENTRY(_longjmp)
-	movq    (_JB_RBX * 8)(%rdi),%rbx
-	movq    (_JB_RBP * 8)(%rdi),%rbp
-	movq    (_JB_R12 * 8)(%rdi),%r12
-	movq    (_JB_R13 * 8)(%rdi),%r13
-	movq    (_JB_R14 * 8)(%rdi),%r14
-	movq    (_JB_R15 * 8)(%rdi),%r15
-	movq    (_JB_RSP * 8)(%rdi),%rsp
-	movq    (_JB_PC  * 8)(%rdi),%r11
-
-	movl	%esi,%eax
-	testl	%eax,%eax
-	jnz	1f
-	incl	%eax
-1:	movq	%r11,0(%rsp)
-	ret
-END(_longjmp)
diff --git a/libc/arch-x86_64/bionic/setjmp.S b/libc/arch-x86_64/bionic/setjmp.S
index f356877..5559f54 100644
--- a/libc/arch-x86_64/bionic/setjmp.S
+++ b/libc/arch-x86_64/bionic/setjmp.S
@@ -1,6 +1,3 @@
-/*	$OpenBSD: setjmp.S,v 1.3 2012/08/22 17:19:34 pascal Exp $	*/
-/*	$NetBSD: __setjmp14.S,v 1.1 2001/06/19 00:25:02 fvdl Exp $	*/
-
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
  * All rights reserved.
@@ -37,60 +34,100 @@
  */
 
 #include <private/bionic_asm.h>
-#include <machine/setjmp.h>
 
-/*
- * C library -- _setjmp, _longjmp
- *
- *	longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	setjmp(a)
- * by restoring registers from the stack.
- * The previous signal state is restored.
- */
+// These are only the callee-saved registers. Code calling setjmp
+// will expect the rest to be clobbered anyway.
+
+#define _JB_RBX 0
+#define _JB_RBP 1
+#define _JB_R12 2
+#define _JB_R13 3
+#define _JB_R14 4
+#define _JB_R15 5
+#define _JB_RSP 6
+#define _JB_PC 7
+#define _JB_SIGFLAG 8
+#define _JB_SIGMASK 9
+#define _JB_SIGMASK_RT 10 // sigprocmask will write here too.
 
 ENTRY(setjmp)
-	pushq	%rdi
-	xorq	%rdi,%rdi
-	call	PIC_PLT(sigblock)
-	popq	%rdi
-	movq	%rax,(_JB_SIGMASK * 8)(%rdi)
-
-	movq	(%rsp),%r11
-	movq	%rbx,(_JB_RBX * 8)(%rdi)
-	movq	%rbp,(_JB_RBP * 8)(%rdi)
-	movq	%r12,(_JB_R12 * 8)(%rdi)
-	movq	%r13,(_JB_R13 * 8)(%rdi)
-	movq	%r14,(_JB_R14 * 8)(%rdi)
-	movq	%r15,(_JB_R15 * 8)(%rdi)
-	movq	%rsp,(_JB_RSP * 8)(%rdi)
-	movq	%r11,(_JB_PC  * 8)(%rdi)
-
-2:	xorl	%eax,%eax
-	ret
+  movl $1,%esi
+  jmp PIC_PLT(sigsetjmp)
 END(setjmp)
 
-ENTRY(longjmp)
-	movq	%rdi,%r12
-	movl	%esi,%r8d
+ENTRY(_setjmp)
+  movl $0,%esi
+  jmp PIC_PLT(sigsetjmp)
+END(_setjmp)
 
-	movq	(_JB_SIGMASK * 8)(%rdi),%rdi
-	pushq	%r8
-	call	PIC_PLT(sigsetmask)
-	popq	%r8
-	movq	(_JB_RBX * 8)(%r12),%rbx
-	movq	(_JB_RBP * 8)(%r12),%rbp
-	movq	(_JB_R13 * 8)(%r12),%r13
-	movq	(_JB_R14 * 8)(%r12),%r14
-	movq	(_JB_R15 * 8)(%r12),%r15
-	movq	(_JB_RSP * 8)(%r12),%rsp
-	movq	(_JB_PC  * 8)(%r12),%r11
-	movq	(_JB_R12 * 8)(%r12),%r12
+// int sigsetjmp(sigjmp_buf env, int save_signal_mask);
+ENTRY(sigsetjmp)
+  // Record whether or not we're saving the signal mask.
+  movl %esi,(_JB_SIGFLAG * 8)(%rdi)
 
-	movl	%r8d,%eax
-	testl	%eax,%eax
-	jnz	1f
-	incl	%eax
-1:	movq	%r11,0(%rsp)
-	ret
-END(longjmp)
+  // Do we need to save the signal mask?
+  testl %esi,%esi
+  jz 2f
+
+  // Save current signal mask.
+  pushq %rdi // Push 'env'.
+  // The 'how' argument is ignored if new_mask is NULL.
+  xorq %rsi,%rsi // NULL.
+  leaq (_JB_SIGMASK * 8)(%rdi),%rdx // old_mask.
+  call PIC_PLT(sigprocmask)
+  popq %rdi // Pop 'env'.
+
+2:
+  // Save the callee-save registers.
+  movq (%rsp),%r11
+  movq %rbx,(_JB_RBX * 8)(%rdi)
+  movq %rbp,(_JB_RBP * 8)(%rdi)
+  movq %r12,(_JB_R12 * 8)(%rdi)
+  movq %r13,(_JB_R13 * 8)(%rdi)
+  movq %r14,(_JB_R14 * 8)(%rdi)
+  movq %r15,(_JB_R15 * 8)(%rdi)
+  movq %rsp,(_JB_RSP * 8)(%rdi)
+  movq %r11,(_JB_PC  * 8)(%rdi)
+
+  xorl %eax,%eax
+  ret
+END(sigsetjmp)
+
+// void siglongjmp(sigjmp_buf env, int value);
+ENTRY(siglongjmp)
+  movq %rdi,%r12
+  pushq %rsi // Push 'value'.
+
+  // Do we need to restore the signal mask?
+  cmpl $0,(_JB_SIGFLAG * 8)(%rdi)
+  jz 2f
+
+  // Restore the signal mask.
+  movq $2,%rdi // SIG_SETMASK.
+  leaq (_JB_SIGMASK * 8)(%r12),%rsi // new_mask.
+  xorq %rdx,%rdx // NULL.
+  call PIC_PLT(sigprocmask)
+
+2:
+  popq %rax // Pop 'value'.
+
+  // Restore the callee-save registers.
+  movq (_JB_RBX * 8)(%r12),%rbx
+  movq (_JB_RBP * 8)(%r12),%rbp
+  movq (_JB_R13 * 8)(%r12),%r13
+  movq (_JB_R14 * 8)(%r12),%r14
+  movq (_JB_R15 * 8)(%r12),%r15
+  movq (_JB_RSP * 8)(%r12),%rsp
+  movq (_JB_PC  * 8)(%r12),%r11
+  movq (_JB_R12 * 8)(%r12),%r12
+
+  testl %eax,%eax
+  jnz 1f
+  incl %eax
+1:
+  movq %r11,0(%rsp)
+  ret
+END(siglongjmp)
+
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-x86_64/bionic/sigsetjmp.S b/libc/arch-x86_64/bionic/sigsetjmp.S
deleted file mode 100644
index 571fea3..0000000
--- a/libc/arch-x86_64/bionic/sigsetjmp.S
+++ /dev/null
@@ -1,101 +0,0 @@
-/*	$OpenBSD: sigsetjmp.S,v 1.3 2012/08/22 17:19:34 pascal Exp $	*/
-/*	$NetBSD: __setjmp14.S,v 1.1 2001/06/19 00:25:02 fvdl Exp $	*/
-
-/*
- * Copyright (c) 2001 Wasabi Systems, Inc.
- * All rights reserved.
- *
- * Written by Frank van der Linden for Wasabi Systems, Inc.
- *
- * 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 for the NetBSD Project by
- *      Wasabi Systems, Inc.
- * 4. The name of Wasabi Systems, Inc. may not be used to endorse
- *    or promote products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (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 <private/bionic_asm.h>
-#include <machine/setjmp.h>
-
-/*
- * C library -- _setjmp, _longjmp
- *
- *	longjmp(a,v)
- * will generate a "return(v)" from the last call to
- *	setjmp(a)
- * by restoring registers from the stack.
- * The previous signal state is restored.
- */
-
-ENTRY(sigsetjmp)
-	movl    %esi,(_JB_SIGFLAG  * 8)(%rdi)
-	testl   %esi,%esi
-	jz      2f
-
-	pushq	%rdi
-	xorq	%rdi,%rdi
-	call	PIC_PLT(sigblock)
-	popq	%rdi
-	movq	%rax,(_JB_SIGMASK * 8)(%rdi)
-
-2:	movq	(%rsp),%r11
-	movq	%rbx,(_JB_RBX * 8)(%rdi)
-	movq	%rbp,(_JB_RBP * 8)(%rdi)
-	movq	%r12,(_JB_R12 * 8)(%rdi)
-	movq	%r13,(_JB_R13 * 8)(%rdi)
-	movq	%r14,(_JB_R14 * 8)(%rdi)
-	movq	%r15,(_JB_R15 * 8)(%rdi)
-	movq	%rsp,(_JB_RSP * 8)(%rdi)
-	movq	%r11,(_JB_PC  * 8)(%rdi)
-
-2:	xorl	%eax,%eax
-	ret
-END(sigsetjmp)
-
-ENTRY(siglongjmp)
-	movq	%rdi,%r12
-	pushq   %rsi
-	cmpl    $0, (_JB_SIGFLAG * 8)(%rdi)
-	jz      2f
-
-	movq	(_JB_SIGMASK * 8)(%rdi),%rdi
-	call	PIC_PLT(sigsetmask)
-2:	popq	%rax
-	movq	(_JB_RBX * 8)(%r12),%rbx
-	movq	(_JB_RBP * 8)(%r12),%rbp
-	movq	(_JB_R13 * 8)(%r12),%r13
-	movq	(_JB_R14 * 8)(%r12),%r14
-	movq	(_JB_R15 * 8)(%r12),%r15
-	movq	(_JB_RSP * 8)(%r12),%rsp
-	movq	(_JB_PC  * 8)(%r12),%r11
-	movq	(_JB_R12 * 8)(%r12),%r12
-
-	testl	%eax,%eax
-	jnz	1f
-	incl	%eax
-1:	movq	%r11,0(%rsp)
-	ret
-END(siglongjmp)
diff --git a/libc/arch-x86_64/include/machine/asm.h b/libc/arch-x86_64/include/machine/asm.h
index 06da39a..28cd08f 100644
--- a/libc/arch-x86_64/include/machine/asm.h
+++ b/libc/arch-x86_64/include/machine/asm.h
@@ -40,13 +40,6 @@
 #define PIC_PLT(x)	x@PLT
 #define PIC_GOT(x)	x@GOTPCREL(%rip)
 
-/* let kernels and others override entrypoint alignment */
-#ifndef _ALIGN_TEXT
-# ifdef _STANDALONE
-#  define _ALIGN_TEXT .align 4
-# else
-#  define _ALIGN_TEXT .align 16
-# endif
-#endif
+#define __bionic_asm_align 16
 
 #endif /* !_AMD64_ASM_H_ */
diff --git a/libc/arch-x86_64/include/machine/endian.h b/libc/arch-x86_64/include/machine/endian.h
deleted file mode 100644
index 7889a37..0000000
--- a/libc/arch-x86_64/include/machine/endian.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*	$OpenBSD: endian.h,v 1.5 2011/03/12 22:27:48 guenther Exp $	*/
-
-/*-
- * Copyright (c) 1997 Niklas Hallqvist.  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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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 _MACHINE_ENDIAN_H_
-#define _MACHINE_ENDIAN_H_
-
-#ifdef __GNUC__
-
-#define	__swap32md(x) __statement({					\
-	u_int32_t __swap32md_x = (x);					\
-									\
-	__asm ("bswap %0" : "+r" (__swap32md_x));			\
-	__swap32md_x;							\
-})
-
-#define	__swap64md(x) __statement({					\
-	u_int64_t __swap64md_x = (x);					\
-									\
-	__asm ("bswapq %0" : "+r" (__swap64md_x));			\
-	__swap64md_x;							\
-})
-
-#define	__swap16md(x) __statement({					\
-	u_int16_t __swap16md_x = (x);					\
-									\
-	__asm ("rorw $8, %w0" : "+r" (__swap16md_x));			\
-	__swap16md_x;							\
-})
-
-/* Tell sys/endian.h we have MD variants of the swap macros.  */
-#define MD_SWAP
-
-#endif	/* __GNUC__ */
-
-#define _BYTE_ORDER _LITTLE_ENDIAN
-#include <sys/endian.h>
-
-#endif /* _MACHINE_ENDIAN_H_ */
diff --git a/libc/arch-x86_64/include/machine/exec.h b/libc/arch-x86_64/include/machine/exec.h
deleted file mode 100644
index 829351c..0000000
--- a/libc/arch-x86_64/include/machine/exec.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*	$OpenBSD: exec.h,v 1.4 2012/09/11 15:44:17 deraadt Exp $	*/
-/*
- * Written by Artur Grabowski <art@openbsd.org> Public Domain
- */
-
-#ifndef _MACHINE_EXEC_H_
-#define _MACHINE_EXEC_H_
-
-#define __LDPGSZ 4096
-
-#define ARCH_ELFSIZE 64
-
-#define ELF_TARG_CLASS		ELFCLASS64
-#define ELF_TARG_DATA		ELFDATA2LSB
-#define ELF_TARG_MACH		EM_X86_64
-
-#define _NLIST_DO_ELF
-#define _KERN_DO_ELF64
-
-#endif
diff --git a/libc/arch-x86_64/include/machine/setjmp.h b/libc/arch-x86_64/include/machine/setjmp.h
index 01d6066..46ddd4b 100644
--- a/libc/arch-x86_64/include/machine/setjmp.h
+++ b/libc/arch-x86_64/include/machine/setjmp.h
@@ -1,21 +1,4 @@
 /*	$OpenBSD: setjmp.h,v 1.1 2004/01/28 01:39:39 mickey Exp $	*/
 /*	$NetBSD: setjmp.h,v 1.1 2003/04/26 18:39:47 fvdl Exp $	*/
 
-/*
- * machine/setjmp.h: machine dependent setjmp-related information.
- * These are only the callee-saved registers, code calling setjmp
- * will expect the rest to be clobbered anyway.
- */
-
-#define _JB_RBX		0
-#define _JB_RBP		1
-#define _JB_R12		2
-#define _JB_R13		3
-#define _JB_R14		4
-#define _JB_R15		5
-#define _JB_RSP		6
-#define _JB_PC		7
-#define _JB_SIGFLAG	8
-#define _JB_SIGMASK	9
-
 #define	_JBLEN	11		/* size, in longs, of a jmp_buf */
diff --git a/libc/arch-x86_64/string/sse2-strlcat-slm.S b/libc/arch-x86_64/string/sse2-strlcat-slm.S
new file mode 100644
index 0000000..d79e8c1
--- /dev/null
+++ b/libc/arch-x86_64/string/sse2-strlcat-slm.S
@@ -0,0 +1,37 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 USE_AS_STRLCAT
+
+#ifndef STRLCPY
+# define STRLCPY	strlcat
+#endif
+
+#include "sse2-strlcpy-slm.S"
diff --git a/libc/arch-x86_64/string/sse2-strlcpy-slm.S b/libc/arch-x86_64/string/sse2-strlcpy-slm.S
new file mode 100755
index 0000000..9d4b52f
--- /dev/null
+++ b/libc/arch-x86_64/string/sse2-strlcpy-slm.S
@@ -0,0 +1,1062 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 L
+# define L(label)	.L##label
+#endif
+
+#ifndef cfi_startproc
+# define cfi_startproc	.cfi_startproc
+#endif
+
+#ifndef cfi_endproc
+# define cfi_endproc	.cfi_endproc
+#endif
+
+#ifndef ENTRY
+# define ENTRY(name)	\
+	.type name, @function;	\
+	.globl name;	\
+	.p2align 4;	\
+name:	\
+	cfi_startproc
+#endif
+
+#ifndef END
+# define END(name)	\
+       cfi_endproc;	\
+       .size name, .-name
+#endif
+
+
+#ifndef STRLCPY
+# define STRLCPY	strlcpy
+#endif
+
+#define JMPTBL(I, B)	I - B
+#define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE)	\
+	lea	TABLE(%rip), %r11;	\
+	movslq	(%r11, INDEX, SCALE), %rcx;	\
+	lea	(%r11, %rcx), %rcx;	\
+	jmp	*%rcx
+
+#define RETURN	\
+	add	%r9, %rax;	\
+	ret
+
+.text
+ENTRY (STRLCPY)
+	xor	%rax, %rax
+	xor	%r9, %r9
+	mov	%rdx, %r8
+	cmp	$0, %r8
+	jz	L(CalculateSrcLen)
+
+#ifdef USE_AS_STRLCAT
+	xor	%rcx, %rcx
+	pxor	%xmm0, %xmm0
+
+	movdqu	(%rdi), %xmm1
+	pcmpeqb %xmm1, %xmm0
+	pmovmskb %xmm0, %rdx
+
+	cmp	$17, %r8
+	jb	L(SizeEndCase1)
+	test	%rdx, %rdx
+	jnz	L(StringEndCase1)
+
+	add	$16, %rax
+	movdqu	16(%rdi), %xmm1
+	pcmpeqb %xmm1, %xmm0
+	pmovmskb %xmm0, %rdx
+
+	cmp	$33, %r8
+	jb	L(SizeEndCase1)
+	test	%rdx, %rdx
+	jnz	L(StringEndCase1)
+
+	mov	%rdi, %rcx
+	and	$15, %rcx
+	and	$-16, %rdi
+
+	add	%rcx, %r8
+	sub	$16, %r8
+
+L(DstLenLoop):
+	movdqa	(%rdi, %rax), %xmm1
+	pcmpeqb %xmm1, %xmm0
+	pmovmskb %xmm0, %rdx
+	sub	$16, %r8
+	jbe	L(SizeEndCase2)
+	test	%rdx, %rdx
+	jnz	L(StringEndCase2)
+	add	$16, %rax
+	jmp	L(DstLenLoop)
+
+L(StringEndCase2):
+	add	$16, %r8
+	bsf	%rdx, %rdx
+	sub	%rdx, %r8
+	add	%rdx, %rax
+	sub	%rcx, %r9
+	add	%rax, %rdi
+	jmp	 L(CopySrcString)
+
+L(SizeEndCase1):
+	test	%rdx, %rdx
+	jz	L(SizeEnd)
+	bsf	%rdx, %rdx
+	add	%rdx, %rax
+	cmp	%r8, %rax
+	jb	L(StringEnd)
+L(SizeEnd):
+	mov	%r8, %r9
+	jmp	L(CalculateSrcLenCase1)
+
+L(SizeEndCase2):
+	add	$16, %r8
+	test	%rdx, %rdx
+	jz	L(StringEndCase4)
+	bsf	%rdx, %rdx
+	cmp	%r8, %rdx
+	jb	L(StringEndCase3)
+L(StringEndCase4):
+	add	%r8, %rax
+	sub	%rcx, %rax
+	mov	%rax, %r9
+	jmp	L(CalculateSrcLenCase1)
+
+L(StringEndCase3):
+	add	%rdx, %rax
+	sub	%rcx, %r9
+	add	%rax, %rdi
+	sub	%rdx, %r8
+	jmp	L(CopySrcString)
+
+L(StringEndCase1):
+	bsf	%rdx, %rdx
+	add	%rdx, %rax
+	sub	%rcx, %rax
+L(StringEnd):
+	add	%rax, %rdi
+	sub	%rax, %r8
+#endif
+
+	mov	%rsi, %rcx
+	and	$63, %rcx
+	cmp	$32, %rcx
+	jbe	L(CopySrcString)
+
+	and	$-16, %rsi
+	and	$15, %rcx
+	pxor	%xmm0, %xmm0
+	pxor	%xmm1, %xmm1
+
+	pcmpeqb	(%rsi), %xmm1
+	pmovmskb %xmm1, %rdx
+	shr	%cl, %rdx
+	mov	$16, %r10
+	sub	%rcx, %r10
+	cmp	%r10, %r8
+	jbe	L(CopyFrom1To16BytesTailCase2OrCase3)
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To16BytesTail)
+
+	pcmpeqb	16(%rsi), %xmm0
+	pmovmskb %xmm0, %rdx
+	add	$16, %r10
+	cmp	%r10, %r8
+	jbe	L(CopyFrom1To32BytesCase2OrCase3)
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To32Bytes)
+
+	movdqu	(%rsi, %rcx), %xmm1
+	movdqu	%xmm1, (%rdi)
+#ifdef USE_AS_STRLCAT
+	add	%rax, %r9
+#endif
+	jmp	L(LoopStart)
+
+	.p2align 4
+L(CopySrcString):
+#ifdef USE_AS_STRLCAT
+	add	%rax, %r9
+	xor	%rax, %rax
+#endif
+	pxor	%xmm0, %xmm0
+	movdqu	(%rsi), %xmm1
+	pcmpeqb	%xmm1, %xmm0
+	pmovmskb %xmm0, %rdx
+
+	cmp	$17, %r8
+	jb	L(CopyFrom1To16BytesTail1Case2OrCase3)
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To16BytesTail1)
+
+	movdqu	16(%rsi), %xmm2
+	pcmpeqb	%xmm2, %xmm0
+	movdqu	%xmm1, (%rdi)
+	pmovmskb %xmm0, %rdx
+	add	$16, %rax
+
+	cmp	$33, %r8
+	jb	L(CopyFrom1To32Bytes1Case2OrCase3)
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To32Bytes1)
+
+	mov	%rsi, %rcx
+	and	$15, %rcx
+	and	$-16, %rsi
+
+L(LoopStart):
+	sub	%rcx, %rdi
+	add	%rcx, %r8
+	sub	$16, %r8
+	mov	$16, %rax
+
+L(16Loop):
+	movdqa	(%rsi, %rax), %xmm1
+	pcmpeqb	%xmm1, %xmm0
+	pmovmskb %xmm0, %rdx
+	sub	$16, %r8
+	jbe	L(CopyFrom1To16BytesCase2OrCase3)
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To16BytesXmmExit)
+	movdqu	%xmm1, (%rdi, %rax)
+	add	$16, %rax
+	jmp	L(16Loop)
+
+/*------End of main part with loops---------------------*/
+
+/* Case1 */
+	.p2align 4
+L(CopyFrom1To16Bytes):
+	add	%rcx, %rdi
+	add	%rcx, %rsi
+	bsf	%rdx, %rdx
+	add	%rdx, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitStringTailTable), %rdx, 4)
+
+	.p2align 4
+L(CopyFrom1To16BytesTail):
+	add	%rcx, %rsi
+	bsf	%rdx, %rdx
+	add	%rdx, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitStringTailTable), %rdx, 4)
+
+	.p2align 4
+L(CopyFrom1To32Bytes1):
+	add	$16, %rsi
+	add	$16, %rdi
+	sub	$16, %r8
+L(CopyFrom1To16BytesTail1):
+	bsf	%rdx, %rdx
+	add	%rdx, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitStringTailTable), %rdx, 4)
+
+	.p2align 4
+L(CopyFrom1To32Bytes):
+	bsf	%rdx, %rdx
+	add	%rcx, %rsi
+	add	$16, %rdx
+	sub	%rcx, %rdx
+	add	%rdx, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitStringTailTable), %rdx, 4)
+
+	.p2align 4
+L(CopyFrom1To16BytesExit):
+	add	%rdx, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitStringTailTable), %rdx, 4)
+
+/* Case2 */
+
+	.p2align 4
+L(CopyFrom1To16BytesCase2):
+	add	$16, %r8
+	add	%rax, %rdi
+	add	%rax, %rsi
+	bsf	%rdx, %rdx
+	sub	%rcx, %rax
+	cmp	%r8, %rdx
+	jb	L(CopyFrom1To16BytesExit)
+	add	%r8, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+	.p2align 4
+L(CopyFrom1To32BytesCase2):
+	add	%rcx, %rsi
+	bsf	%rdx, %rdx
+	add	$16, %rdx
+	sub	%rcx, %rdx
+	cmp	%r8, %rdx
+	jb	L(CopyFrom1To16BytesExit)
+	add	%r8, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+L(CopyFrom1To16BytesTailCase2):
+	add	%rcx, %rsi
+	bsf	%rdx, %rdx
+	cmp	%r8, %rdx
+	jb	L(CopyFrom1To16BytesExit)
+	add	%r8, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+	.p2align 4
+L(CopyFrom1To16BytesTail1Case2):
+	bsf	%rdx, %rdx
+	cmp	%r8, %rdx
+	jb	L(CopyFrom1To16BytesExit)
+	add	%r8, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+/* Case2 or Case3,  Case3 */
+
+	.p2align 4
+L(CopyFrom1To16BytesCase2OrCase3):
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To16BytesCase2)
+	add	$16, %r8
+	add	%rax, %rdi
+	add	%rax, %rsi
+	add	%r8, %rax
+	sub	%rcx, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+	.p2align 4
+L(CopyFrom1To32BytesCase2OrCase3):
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To32BytesCase2)
+	add	%rcx, %rsi
+	add	%r8, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+	.p2align 4
+L(CopyFrom1To16BytesTailCase2OrCase3):
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To16BytesTailCase2)
+	add	%rcx, %rsi
+	add	%r8, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+	.p2align 4
+L(CopyFrom1To32Bytes1Case2OrCase3):
+	add	$16, %rdi
+	add	$16, %rsi
+	sub	$16, %r8
+L(CopyFrom1To16BytesTail1Case2OrCase3):
+	test	%rdx, %rdx
+	jnz	L(CopyFrom1To16BytesTail1Case2)
+	add	%r8, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitTable), %r8, 4)
+
+	.p2align 4
+L(CopyFrom1To16BytesXmmExit):
+	bsf	%rdx, %rdx
+	add	%rax, %rdi
+	add	%rax, %rsi
+	add	%rdx, %rax
+	sub	%rcx, %rax
+	BRANCH_TO_JMPTBL_ENTRY (L(ExitStringTailTable), %rdx, 4)
+
+/*------------End labels regarding with copying 1-16 bytes--and 1-32 bytes----*/
+
+
+	.p2align 4
+L(Exit0):
+	RETURN
+
+	.p2align 4
+L(Exit1):
+	movb	$0, (%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit2):
+	movb	(%rsi), %dh
+	movb	%dh, (%rdi)
+	movb	$0, 1(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit3):
+	movw	(%rsi), %dx
+	movw	%dx, (%rdi)
+	movb	$0, 2(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit4):
+	movw	(%rsi), %cx
+	movb	2(%rsi), %dh
+	movw	%cx, (%rdi)
+	movb	%dh, 2(%rdi)
+	movb	$0, 3(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit5):
+	movl	(%rsi), %edx
+	movl	%edx, (%rdi)
+	movb	$0, 4(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit6):
+	movl	(%rsi), %ecx
+	movb	4(%rsi), %dh
+	movl	%ecx, (%rdi)
+	movb	%dh, 4(%rdi)
+	movb	$0, 5(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit7):
+	movl	(%rsi), %ecx
+	movw	4(%rsi), %dx
+	movl	%ecx, (%rdi)
+	movw	%dx, 4(%rdi)
+	movb	$0, 6(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit8):
+	movl	(%rsi), %ecx
+	movl	3(%rsi), %edx
+	movl	%ecx, (%rdi)
+	movl	%edx, 3(%rdi)
+	movb	$0, 7(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit9):
+	movq	(%rsi), %rdx
+	movq	%rdx, (%rdi)
+	movb	$0, 8(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit10):
+	movq	(%rsi), %rcx
+	movb	8(%rsi), %dh
+	movq	%rcx, (%rdi)
+	movb	%dh, 8(%rdi)
+	movb	$0, 9(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit11):
+	movq	(%rsi), %rcx
+	movw	8(%rsi), %dx
+	movq	%rcx, (%rdi)
+	movw	%dx, 8(%rdi)
+	movb	$0, 10(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit12):
+	movq	(%rsi), %rcx
+	movl	7(%rsi), %edx
+	movq	%rcx, (%rdi)
+	movl	%edx, 7(%rdi)
+	movb	$0, 11(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit13):
+	movq	(%rsi), %rcx
+	movl	8(%rsi), %edx
+	movq	%rcx, (%rdi)
+	movl	%edx, 8(%rdi)
+	movb	$0, 12(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit14):
+	movq	(%rsi), %rcx
+	movq	5(%rsi), %rdx
+	movq	%rcx, (%rdi)
+	movq	%rdx, 5(%rdi)
+	movb	$0, 13(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit15):
+	movq	(%rsi), %rcx
+	movq	6(%rsi), %rdx
+	movq	%rcx, (%rdi)
+	movq	%rdx, 6(%rdi)
+	movb	$0, 14(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit16):
+	movq	(%rsi), %rcx
+	movq	7(%rsi), %rdx
+	movq	%rcx, (%rdi)
+	movq	%rdx, 7(%rdi)
+	movb	$0, 15(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit17):
+	movdqu	(%rsi), %xmm0
+	movdqu	%xmm0, (%rdi)
+	movb	$0, 16(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit18):
+	movdqu	(%rsi), %xmm0
+	movb	16(%rsi), %dh
+	movdqu	%xmm0, (%rdi)
+	movb	%dh, 16(%rdi)
+	movb	$0, 17(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit19):
+	movdqu	(%rsi), %xmm0
+	movw	16(%rsi), %cx
+	movdqu	%xmm0, (%rdi)
+	movw	%cx, 16(%rdi)
+	movb	$0, 18(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit20):
+	movdqu	(%rsi), %xmm0
+	movl	15(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	movl	%ecx, 15(%rdi)
+	movb	$0, 19(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit21):
+	movdqu	(%rsi), %xmm0
+	movl	16(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	movl	%ecx, 16(%rdi)
+	movb	$0, 20(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit22):
+	movdqu	(%rsi), %xmm0
+	movl	16(%rsi), %ecx
+	movb	20(%rsi), %dh
+	movdqu	%xmm0, (%rdi)
+	movl	%ecx, 16(%rdi)
+	movb	%dh, 20(%rdi)
+	movb	$0, 21(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit23):
+	movdqu	(%rsi), %xmm0
+	movq	14(%rsi), %rcx
+	movdqu	%xmm0, (%rdi)
+	movq	%rcx, 14(%rdi)
+	movb	$0, 22(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit24):
+	movdqu	(%rsi), %xmm0
+	movq	15(%rsi), %rcx
+	movdqu	%xmm0, (%rdi)
+	movq	%rcx, 15(%rdi)
+	movb	$0, 23(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit25):
+	movdqu	(%rsi), %xmm0
+	movq	16(%rsi), %rcx
+	movdqu	%xmm0, (%rdi)
+	movq	%rcx, 16(%rdi)
+	movb	$0, 24(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit26):
+	movdqu	(%rsi), %xmm0
+	movq	16(%rsi), %rcx
+	movb	24(%rsi), %dh
+	movdqu	%xmm0, (%rdi)
+	movq	%rcx, 16(%rdi)
+	mov	%dh, 24(%rdi)
+	movb	$0, 25(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit27):
+	movdqu	(%rsi), %xmm0
+	movq	16(%rsi), %rdx
+	movw	24(%rsi), %cx
+	movdqu	%xmm0, (%rdi)
+	movq	%rdx, 16(%rdi)
+	movw	%cx, 24(%rdi)
+	movb	$0, 26(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit28):
+	movdqu	(%rsi), %xmm0
+	movq	16(%rsi), %rdx
+	movl	23(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	movq	%rdx, 16(%rdi)
+	movl	%ecx, 23(%rdi)
+	movb	$0, 27(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit29):
+	movdqu	(%rsi), %xmm0
+	movq	16(%rsi), %rdx
+	movl	24(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	movq	%rdx, 16(%rdi)
+	movl	%ecx, 24(%rdi)
+	movb	$0, 28(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit30):
+	movdqu	(%rsi), %xmm0
+	movdqu	13(%rsi), %xmm2
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 13(%rdi)
+	movb	$0, 29(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit31):
+	movdqu	(%rsi), %xmm0
+	movdqu	14(%rsi), %xmm2
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 14(%rdi)
+	movb	$0, 30(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(Exit32):
+	movdqu	(%rsi), %xmm0
+	movdqu	15(%rsi), %xmm2
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 15(%rdi)
+	movb	$0, 31(%rdi)
+	jmp	L(CalculateSrcLen)
+
+	.p2align 4
+L(StringTail0):
+	mov	(%rsi), %dl
+	mov	%dl, (%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail1):
+	mov	(%rsi), %dx
+	mov	%dx, (%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail2):
+	mov	(%rsi), %cx
+	mov	2(%rsi), %dl
+	mov	%cx, (%rdi)
+	mov	%dl, 2(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail3):
+	mov	(%rsi), %edx
+	mov	%edx, (%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail4):
+	mov	(%rsi), %ecx
+	mov	4(%rsi), %dl
+	mov	%ecx, (%rdi)
+	mov	%dl, 4(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail5):
+	mov	(%rsi), %ecx
+	mov	4(%rsi), %dx
+	mov	%ecx, (%rdi)
+	mov	%dx, 4(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail6):
+	mov	(%rsi), %ecx
+	mov	3(%rsi), %edx
+	mov	%ecx, (%rdi)
+	mov	%edx, 3(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail7):
+	mov	(%rsi), %rdx
+	mov	%rdx, (%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail8):
+	mov	(%rsi), %rcx
+	mov	8(%rsi), %dl
+	mov	%rcx, (%rdi)
+	mov	%dl, 8(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail9):
+	mov	(%rsi), %rcx
+	mov	8(%rsi), %dx
+	mov	%rcx, (%rdi)
+	mov	%dx, 8(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail10):
+	mov	(%rsi), %rcx
+	mov	7(%rsi), %edx
+	mov	%rcx, (%rdi)
+	mov	%edx, 7(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail11):
+	mov	(%rsi), %rcx
+	mov	8(%rsi), %edx
+	mov	%rcx, (%rdi)
+	mov	%edx, 8(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail12):
+	mov	(%rsi), %rcx
+	mov	5(%rsi), %rdx
+	mov	%rcx, (%rdi)
+	mov	%rdx, 5(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail13):
+	mov	(%rsi), %rcx
+	mov	6(%rsi), %rdx
+	mov	%rcx, (%rdi)
+	mov	%rdx, 6(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail14):
+	mov	(%rsi), %rcx
+	mov	7(%rsi), %rdx
+	mov	%rcx, (%rdi)
+	mov	%rdx, 7(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail15):
+	movdqu	(%rsi), %xmm0
+	movdqu	%xmm0, (%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail16):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %cl
+	movdqu	%xmm0, (%rdi)
+	mov	%cl, 16(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail17):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %cx
+	movdqu	%xmm0, (%rdi)
+	mov	%cx, 16(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail18):
+	movdqu	(%rsi), %xmm0
+	mov	15(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	mov	%ecx, 15(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail19):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	mov	%ecx, 16(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail20):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %ecx
+	mov	20(%rsi), %dl
+	movdqu	%xmm0, (%rdi)
+	mov	%ecx, 16(%rdi)
+	mov	%dl, 20(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail21):
+	movdqu	(%rsi), %xmm0
+	mov	14(%rsi), %rcx
+	movdqu	%xmm0, (%rdi)
+	mov	%rcx, 14(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail22):
+	movdqu	(%rsi), %xmm0
+	mov	15(%rsi), %rcx
+	movdqu	%xmm0, (%rdi)
+	mov	%rcx, 15(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail23):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %rcx
+	movdqu	%xmm0, (%rdi)
+	mov	%rcx, 16(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail24):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %rdx
+	mov	24(%rsi), %cl
+	movdqu	%xmm0, (%rdi)
+	mov	%rdx, 16(%rdi)
+	mov	%cl, 24(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail25):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %rdx
+	mov	24(%rsi), %cx
+	movdqu	%xmm0, (%rdi)
+	mov	%rdx, 16(%rdi)
+	mov	%cx, 24(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail26):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %rdx
+	mov	23(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	mov	%rdx, 16(%rdi)
+	mov	%ecx, 23(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail27):
+	movdqu	(%rsi), %xmm0
+	mov	16(%rsi), %rdx
+	mov	24(%rsi), %ecx
+	movdqu	%xmm0, (%rdi)
+	mov	%rdx, 16(%rdi)
+	mov	%ecx, 24(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail28):
+	movdqu	(%rsi), %xmm0
+	movdqu	13(%rsi), %xmm2
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 13(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail29):
+	movdqu	(%rsi), %xmm0
+	movdqu	14(%rsi), %xmm2
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 14(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail30):
+	movdqu	(%rsi), %xmm0
+	movdqu	15(%rsi), %xmm2
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 15(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail31):
+	movdqu	(%rsi), %xmm0
+	movdqu	16(%rsi), %xmm2
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 16(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail32):
+	movdqu	(%rsi), %xmm0
+	movdqu	16(%rsi), %xmm2
+	mov	32(%rsi), %cl
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 16(%rdi)
+	mov	%cl, 32(%rdi)
+	RETURN
+
+	.p2align 4
+L(StringTail33):
+	movdqu	(%rsi), %xmm0
+	movdqu	16(%rsi), %xmm2
+	mov	32(%rsi), %cl
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm2, 16(%rdi)
+	mov	%cl, 32(%rdi)
+	RETURN
+
+	.p2align 4
+L(CalculateSrcLenCase1):
+	xor	%r8, %r8
+	xor	%rax, %rax
+L(CalculateSrcLen):
+	pxor	%xmm0, %xmm0
+	xor	%rcx, %rcx
+	add	%r8, %rsi
+	movdqu	(%rsi), %xmm1
+	pcmpeqb	%xmm1, %xmm0
+	pmovmskb %xmm0, %rdx
+	test	%rdx, %rdx
+	jnz	L(SrcLenLoopEnd)
+
+	add	%rax, %r9
+	mov	$16, %rax
+	mov	%rsi, %rcx
+	and	$15, %rcx
+	and	$-16, %rsi
+L(SrcLenLoop):
+	movdqa	(%rsi, %rax), %xmm1
+	pcmpeqb	%xmm1, %xmm0
+	pmovmskb %xmm0, %rdx
+	test	%rdx, %rdx
+	jnz	L(SrcLenLoopEnd)
+	add	$16, %rax
+	jmp	L(SrcLenLoop)
+
+	.p2align 4
+L(SrcLenLoopEnd):
+	bsf	%rdx, %rdx
+	add	%rdx, %rax
+	sub	%rcx, %rax
+	RETURN
+
+END (STRLCPY)
+
+	.p2align 4
+	.section .rodata
+L(ExitTable):
+	.int	JMPTBL(L(Exit0), L(ExitTable))
+	.int	JMPTBL(L(Exit1), L(ExitTable))
+	.int	JMPTBL(L(Exit2), L(ExitTable))
+	.int	JMPTBL(L(Exit3), L(ExitTable))
+	.int	JMPTBL(L(Exit4), L(ExitTable))
+	.int	JMPTBL(L(Exit5), L(ExitTable))
+	.int	JMPTBL(L(Exit6), L(ExitTable))
+	.int	JMPTBL(L(Exit7), L(ExitTable))
+	.int	JMPTBL(L(Exit8), L(ExitTable))
+	.int	JMPTBL(L(Exit9), L(ExitTable))
+	.int	JMPTBL(L(Exit10), L(ExitTable))
+	.int	JMPTBL(L(Exit11), L(ExitTable))
+	.int	JMPTBL(L(Exit12), L(ExitTable))
+	.int	JMPTBL(L(Exit13), L(ExitTable))
+	.int	JMPTBL(L(Exit14), L(ExitTable))
+	.int	JMPTBL(L(Exit15), L(ExitTable))
+	.int	JMPTBL(L(Exit16), L(ExitTable))
+	.int	JMPTBL(L(Exit17), L(ExitTable))
+	.int	JMPTBL(L(Exit18), L(ExitTable))
+	.int	JMPTBL(L(Exit19), L(ExitTable))
+	.int	JMPTBL(L(Exit20), L(ExitTable))
+	.int	JMPTBL(L(Exit21), L(ExitTable))
+	.int	JMPTBL(L(Exit22), L(ExitTable))
+	.int	JMPTBL(L(Exit23), L(ExitTable))
+	.int	JMPTBL(L(Exit24), L(ExitTable))
+	.int	JMPTBL(L(Exit25), L(ExitTable))
+	.int	JMPTBL(L(Exit26), L(ExitTable))
+	.int	JMPTBL(L(Exit27), L(ExitTable))
+	.int	JMPTBL(L(Exit28), L(ExitTable))
+	.int	JMPTBL(L(Exit29), L(ExitTable))
+	.int	JMPTBL(L(Exit30), L(ExitTable))
+	.int	JMPTBL(L(Exit31), L(ExitTable))
+	.int	JMPTBL(L(Exit32), L(ExitTable))
+L(ExitStringTailTable):
+	.int	JMPTBL(L(StringTail0), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail1), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail2), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail3), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail4), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail5), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail6), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail7), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail8), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail9), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail10), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail11), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail12), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail13), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail14), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail15), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail16), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail17), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail18), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail19), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail20), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail21), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail22), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail23), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail24), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail25), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail26), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail27), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail28), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail29), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail30), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail31), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail32), L(ExitStringTailTable))
+	.int	JMPTBL(L(StringTail33), L(ExitStringTailTable))
diff --git a/libc/arch-x86_64/string/ssse3-strcmp-slm.S b/libc/arch-x86_64/string/ssse3-strcmp-slm.S
index 0dd8c27..e8acd5b 100644
--- a/libc/arch-x86_64/string/ssse3-strcmp-slm.S
+++ b/libc/arch-x86_64/string/ssse3-strcmp-slm.S
@@ -1897,8 +1897,8 @@
 
 	.p2align 4
 L(Byte0):
-	movzx	(%rsi), %ecx
-	movzx	(%rdi), %eax
+	movzbl	(%rsi), %ecx
+	movzbl	(%rdi), %eax
 
 	sub	%ecx, %eax
 	ret
diff --git a/libc/arch-x86_64/syscalls/___close.S b/libc/arch-x86_64/syscalls/___close.S
new file mode 100644
index 0000000..8607f05
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/___close.S
@@ -0,0 +1,16 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___close)
+    movl    $__NR_close, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(___close)
+.hidden ___close
diff --git a/libc/arch-x86_64/syscalls/___faccessat.S b/libc/arch-x86_64/syscalls/___faccessat.S
new file mode 100644
index 0000000..e8fd3f5
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/___faccessat.S
@@ -0,0 +1,16 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___faccessat)
+    movl    $__NR_faccessat, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-x86_64/syscalls/___fchmod.S b/libc/arch-x86_64/syscalls/___fchmod.S
new file mode 100644
index 0000000..7bccbef
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/___fchmod.S
@@ -0,0 +1,16 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmod)
+    movl    $__NR_fchmod, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(___fchmod)
+.hidden ___fchmod
diff --git a/libc/arch-x86_64/syscalls/___fchmodat.S b/libc/arch-x86_64/syscalls/___fchmodat.S
new file mode 100644
index 0000000..483ec7d
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/___fchmodat.S
@@ -0,0 +1,16 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(___fchmodat)
+    movl    $__NR_fchmodat, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(___fchmodat)
+.hidden ___fchmodat
diff --git a/libc/arch-x86_64/syscalls/__clock_nanosleep.S b/libc/arch-x86_64/syscalls/__clock_nanosleep.S
new file mode 100644
index 0000000..37726c0
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/__clock_nanosleep.S
@@ -0,0 +1,17 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__clock_nanosleep)
+    movq    %rcx, %r10
+    movl    $__NR_clock_nanosleep, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(__clock_nanosleep)
+.hidden __clock_nanosleep
diff --git a/libc/arch-x86_64/syscalls/__fstatfs.S b/libc/arch-x86_64/syscalls/__fstatfs.S
new file mode 100644
index 0000000..b50e355
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/__fstatfs.S
@@ -0,0 +1,16 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__fstatfs)
+    movl    $__NR_fstatfs, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(__fstatfs)
+.hidden __fstatfs
diff --git a/libc/arch-x86_64/syscalls/__rt_sigqueueinfo.S b/libc/arch-x86_64/syscalls/__rt_sigqueueinfo.S
new file mode 100644
index 0000000..52b6863
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/__rt_sigqueueinfo.S
@@ -0,0 +1,16 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__rt_sigqueueinfo)
+    movl    $__NR_rt_sigqueueinfo, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(__rt_sigqueueinfo)
+.hidden __rt_sigqueueinfo
diff --git a/libc/arch-x86_64/syscalls/__statfs.S b/libc/arch-x86_64/syscalls/__statfs.S
new file mode 100644
index 0000000..607a809
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/__statfs.S
@@ -0,0 +1,16 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__statfs)
+    movl    $__NR_statfs, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(__statfs)
+.hidden __statfs
diff --git a/libc/arch-x86_64/syscalls/_exit.S b/libc/arch-x86_64/syscalls/_exit.S
index c79091d..1ab4d4f 100644
--- a/libc/arch-x86_64/syscalls/_exit.S
+++ b/libc/arch-x86_64/syscalls/_exit.S
@@ -14,5 +14,4 @@
     ret
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-x86_64/syscalls/clock_nanosleep.S b/libc/arch-x86_64/syscalls/clock_nanosleep.S
deleted file mode 100644
index 2a79bdd..0000000
--- a/libc/arch-x86_64/syscalls/clock_nanosleep.S
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(clock_nanosleep)
-    movq    %rcx, %r10
-    movl    $__NR_clock_nanosleep, %eax
-    syscall
-    cmpq    $-MAX_ERRNO, %rax
-    jb      1f
-    negl    %eax
-    movl    %eax, %edi
-    call    __set_errno_internal
-1:
-    ret
-END(clock_nanosleep)
diff --git a/libc/arch-x86_64/syscalls/close.S b/libc/arch-x86_64/syscalls/close.S
deleted file mode 100644
index 8a7ada1..0000000
--- a/libc/arch-x86_64/syscalls/close.S
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(close)
-    movl    $__NR_close, %eax
-    syscall
-    cmpq    $-MAX_ERRNO, %rax
-    jb      1f
-    negl    %eax
-    movl    %eax, %edi
-    call    __set_errno_internal
-1:
-    ret
-END(close)
diff --git a/libc/arch-x86_64/syscalls/faccessat.S b/libc/arch-x86_64/syscalls/faccessat.S
deleted file mode 100644
index 05a6e78..0000000
--- a/libc/arch-x86_64/syscalls/faccessat.S
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(faccessat)
-    movq    %rcx, %r10
-    movl    $__NR_faccessat, %eax
-    syscall
-    cmpq    $-MAX_ERRNO, %rax
-    jb      1f
-    negl    %eax
-    movl    %eax, %edi
-    call    __set_errno_internal
-1:
-    ret
-END(faccessat)
diff --git a/libc/arch-x86_64/syscalls/fallocate.S b/libc/arch-x86_64/syscalls/fallocate.S
index 8307f7e..f6f891b 100644
--- a/libc/arch-x86_64/syscalls/fallocate.S
+++ b/libc/arch-x86_64/syscalls/fallocate.S
@@ -15,5 +15,4 @@
     ret
 END(fallocate)
 
-    .globl fallocate64
-    .equ fallocate64, fallocate
+ALIAS_SYMBOL(fallocate64, fallocate)
diff --git a/libc/arch-x86_64/syscalls/fchmod.S b/libc/arch-x86_64/syscalls/fchmod.S
deleted file mode 100644
index b35bd21..0000000
--- a/libc/arch-x86_64/syscalls/fchmod.S
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmod)
-    movl    $__NR_fchmod, %eax
-    syscall
-    cmpq    $-MAX_ERRNO, %rax
-    jb      1f
-    negl    %eax
-    movl    %eax, %edi
-    call    __set_errno_internal
-1:
-    ret
-END(fchmod)
diff --git a/libc/arch-x86_64/syscalls/fchmodat.S b/libc/arch-x86_64/syscalls/fchmodat.S
deleted file mode 100644
index 2d78d8e..0000000
--- a/libc/arch-x86_64/syscalls/fchmodat.S
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fchmodat)
-    movq    %rcx, %r10
-    movl    $__NR_fchmodat, %eax
-    syscall
-    cmpq    $-MAX_ERRNO, %rax
-    jb      1f
-    negl    %eax
-    movl    %eax, %edi
-    call    __set_errno_internal
-1:
-    ret
-END(fchmodat)
diff --git a/libc/arch-x86_64/syscalls/fstat64.S b/libc/arch-x86_64/syscalls/fstat64.S
index de57668..a0d4fa1 100644
--- a/libc/arch-x86_64/syscalls/fstat64.S
+++ b/libc/arch-x86_64/syscalls/fstat64.S
@@ -14,5 +14,4 @@
     ret
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-x86_64/syscalls/fstatat64.S b/libc/arch-x86_64/syscalls/fstatat64.S
index 47785bb..1984d68 100644
--- a/libc/arch-x86_64/syscalls/fstatat64.S
+++ b/libc/arch-x86_64/syscalls/fstatat64.S
@@ -15,5 +15,4 @@
     ret
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-x86_64/syscalls/fstatfs64.S b/libc/arch-x86_64/syscalls/fstatfs64.S
deleted file mode 100644
index f727350..0000000
--- a/libc/arch-x86_64/syscalls/fstatfs64.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(fstatfs64)
-    movl    $__NR_fstatfs, %eax
-    syscall
-    cmpq    $-MAX_ERRNO, %rax
-    jb      1f
-    negl    %eax
-    movl    %eax, %edi
-    call    __set_errno_internal
-1:
-    ret
-END(fstatfs64)
-
-    .globl fstatfs
-    .equ fstatfs, fstatfs64
diff --git a/libc/arch-x86_64/syscalls/ftruncate.S b/libc/arch-x86_64/syscalls/ftruncate.S
index 0365368..7917468 100644
--- a/libc/arch-x86_64/syscalls/ftruncate.S
+++ b/libc/arch-x86_64/syscalls/ftruncate.S
@@ -14,5 +14,4 @@
     ret
 END(ftruncate)
 
-    .globl ftruncate64
-    .equ ftruncate64, ftruncate
+ALIAS_SYMBOL(ftruncate64, ftruncate)
diff --git a/libc/arch-x86_64/syscalls/getrlimit.S b/libc/arch-x86_64/syscalls/getrlimit.S
index 2d272a1..00ed08a 100644
--- a/libc/arch-x86_64/syscalls/getrlimit.S
+++ b/libc/arch-x86_64/syscalls/getrlimit.S
@@ -14,5 +14,4 @@
     ret
 END(getrlimit)
 
-    .globl getrlimit64
-    .equ getrlimit64, getrlimit
+ALIAS_SYMBOL(getrlimit64, getrlimit)
diff --git a/libc/arch-x86_64/syscalls/lseek.S b/libc/arch-x86_64/syscalls/lseek.S
index 153b935..69d60c2 100644
--- a/libc/arch-x86_64/syscalls/lseek.S
+++ b/libc/arch-x86_64/syscalls/lseek.S
@@ -14,5 +14,4 @@
     ret
 END(lseek)
 
-    .globl lseek64
-    .equ lseek64, lseek
+ALIAS_SYMBOL(lseek64, lseek)
diff --git a/libc/arch-x86_64/syscalls/mmap.S b/libc/arch-x86_64/syscalls/mmap.S
index 8aa4780..0c25473 100644
--- a/libc/arch-x86_64/syscalls/mmap.S
+++ b/libc/arch-x86_64/syscalls/mmap.S
@@ -15,5 +15,4 @@
     ret
 END(mmap)
 
-    .globl mmap64
-    .equ mmap64, mmap
+ALIAS_SYMBOL(mmap64, mmap)
diff --git a/libc/arch-x86_64/syscalls/pread64.S b/libc/arch-x86_64/syscalls/pread64.S
index 3aa56e5..eaa47b1 100644
--- a/libc/arch-x86_64/syscalls/pread64.S
+++ b/libc/arch-x86_64/syscalls/pread64.S
@@ -15,5 +15,4 @@
     ret
 END(pread64)
 
-    .globl pread
-    .equ pread, pread64
+ALIAS_SYMBOL(pread, pread64)
diff --git a/libc/arch-x86_64/syscalls/prlimit64.S b/libc/arch-x86_64/syscalls/prlimit64.S
index 63ec492..737b863 100644
--- a/libc/arch-x86_64/syscalls/prlimit64.S
+++ b/libc/arch-x86_64/syscalls/prlimit64.S
@@ -15,5 +15,4 @@
     ret
 END(prlimit64)
 
-    .globl prlimit
-    .equ prlimit, prlimit64
+ALIAS_SYMBOL(prlimit, prlimit64)
diff --git a/libc/arch-x86_64/syscalls/pwrite64.S b/libc/arch-x86_64/syscalls/pwrite64.S
index 2779fb4..edb60af 100644
--- a/libc/arch-x86_64/syscalls/pwrite64.S
+++ b/libc/arch-x86_64/syscalls/pwrite64.S
@@ -15,5 +15,4 @@
     ret
 END(pwrite64)
 
-    .globl pwrite
-    .equ pwrite, pwrite64
+ALIAS_SYMBOL(pwrite, pwrite64)
diff --git a/libc/arch-x86_64/syscalls/sendfile.S b/libc/arch-x86_64/syscalls/sendfile.S
index 117b0aa..c0fa4ee 100644
--- a/libc/arch-x86_64/syscalls/sendfile.S
+++ b/libc/arch-x86_64/syscalls/sendfile.S
@@ -15,5 +15,4 @@
     ret
 END(sendfile)
 
-    .globl sendfile64
-    .equ sendfile64, sendfile
+ALIAS_SYMBOL(sendfile64, sendfile)
diff --git a/libc/arch-x86_64/syscalls/sethostname.S b/libc/arch-x86_64/syscalls/sethostname.S
new file mode 100644
index 0000000..4bcd12d
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/sethostname.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sethostname)
+    movl    $__NR_sethostname, %eax
+    syscall
+    cmpq    $-MAX_ERRNO, %rax
+    jb      1f
+    negl    %eax
+    movl    %eax, %edi
+    call    __set_errno_internal
+1:
+    ret
+END(sethostname)
diff --git a/libc/arch-x86_64/syscalls/setrlimit.S b/libc/arch-x86_64/syscalls/setrlimit.S
index ef03068..3843ff9 100644
--- a/libc/arch-x86_64/syscalls/setrlimit.S
+++ b/libc/arch-x86_64/syscalls/setrlimit.S
@@ -14,5 +14,4 @@
     ret
 END(setrlimit)
 
-    .globl setrlimit64
-    .equ setrlimit64, setrlimit
+ALIAS_SYMBOL(setrlimit64, setrlimit)
diff --git a/libc/arch-x86_64/syscalls/statfs64.S b/libc/arch-x86_64/syscalls/statfs64.S
deleted file mode 100644
index 16f6bdd..0000000
--- a/libc/arch-x86_64/syscalls/statfs64.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(statfs64)
-    movl    $__NR_statfs, %eax
-    syscall
-    cmpq    $-MAX_ERRNO, %rax
-    jb      1f
-    negl    %eax
-    movl    %eax, %edi
-    call    __set_errno_internal
-1:
-    ret
-END(statfs64)
-
-    .globl statfs
-    .equ statfs, statfs64
diff --git a/libc/arch-x86_64/syscalls/truncate.S b/libc/arch-x86_64/syscalls/truncate.S
index 2ecd05b..4b953a3 100644
--- a/libc/arch-x86_64/syscalls/truncate.S
+++ b/libc/arch-x86_64/syscalls/truncate.S
@@ -14,5 +14,4 @@
     ret
 END(truncate)
 
-    .globl truncate64
-    .equ truncate64, truncate
+ALIAS_SYMBOL(truncate64, truncate)
diff --git a/libc/arch-x86_64/x86_64.mk b/libc/arch-x86_64/x86_64.mk
index 8675ef4..06d3185 100644
--- a/libc/arch-x86_64/x86_64.mk
+++ b/libc/arch-x86_64/x86_64.mk
@@ -9,8 +9,6 @@
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memchr.c \
-    bionic/memrchr.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
@@ -26,8 +24,8 @@
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
 libc_openbsd_src_files_x86_64 += \
-    upstream-openbsd/lib/libc/string/strlcat.c \
-    upstream-openbsd/lib/libc/string/strlcpy.c \
+    upstream-openbsd/lib/libc/string/memchr.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
 
 #
 # Inherently architecture-specific code.
@@ -37,10 +35,8 @@
     arch-x86_64/bionic/__bionic_clone.S \
     arch-x86_64/bionic/_exit_with_stack_teardown.S \
     arch-x86_64/bionic/__restore_rt.S \
-    arch-x86_64/bionic/_setjmp.S \
     arch-x86_64/bionic/setjmp.S \
     arch-x86_64/bionic/__set_tls.c \
-    arch-x86_64/bionic/sigsetjmp.S \
     arch-x86_64/bionic/syscall.S \
     arch-x86_64/bionic/vfork.S \
 
@@ -56,6 +52,8 @@
     arch-x86_64/string/sse2-stpncpy-slm.S \
     arch-x86_64/string/sse2-strcat-slm.S \
     arch-x86_64/string/sse2-strcpy-slm.S \
+    arch-x86_64/string/sse2-strlcat-slm.S \
+    arch-x86_64/string/sse2-strlcpy-slm.S \
     arch-x86_64/string/sse2-strlen-slm.S \
     arch-x86_64/string/sse2-strncat-slm.S \
     arch-x86_64/string/sse2-strncpy-slm.S \
diff --git a/libc/bionic/NetdClient.cpp b/libc/bionic/NetdClient.cpp
index 5b0f4fd..b117d72 100644
--- a/libc/bionic/NetdClient.cpp
+++ b/libc/bionic/NetdClient.cpp
@@ -34,7 +34,7 @@
 }
 
 static void netdClientInitImpl() {
-    void* netdClientHandle = dlopen("libnetd_client.so", RTLD_LAZY);
+    void* netdClientHandle = dlopen("libnetd_client.so", RTLD_NOW);
     if (netdClientHandle == NULL) {
         // If the library is not available, it's not an error. We'll just use
         // default implementations of functions that it would've overridden.
diff --git a/libc/bionic/__cxa_guard.cpp b/libc/bionic/__cxa_guard.cpp
index 5b0d57d..5b34b58 100644
--- a/libc/bionic/__cxa_guard.cpp
+++ b/libc/bionic/__cxa_guard.cpp
@@ -14,10 +14,13 @@
  * limitations under the License.
  */
 
-#include <stddef.h>
 #include <endian.h>
+#include <limits.h>
+#undef _USING_LIBCXX  // Prevent using of <atomic>.
+#include <stdatomic.h>
 
-#include "private/bionic_atomic_inline.h"
+#include <stddef.h>
+
 #include "private/bionic_futex.h"
 
 // This file contains C++ ABI support functions for one time
@@ -49,66 +52,82 @@
 // values. The LSB is tested by the compiler-generated code before calling
 // __cxa_guard_acquire.
 union _guard_t {
-    int volatile state;
-    int32_t aligner;
+  atomic_int state;
+  int32_t aligner;
 };
 
-const static int ready = 0x1;
-const static int pending = 0x2;
-const static int waiting = 0x6;
-
 #else
 // The Itanium/x86 C++ ABI (used by all other architectures) mandates that
 // guard variables are 64-bit aligned, 64-bit values. The LSB is tested by
 // the compiler-generated code before calling __cxa_guard_acquire.
 union _guard_t {
-    int volatile state;
-    int64_t aligner;
+  atomic_int state;
+  int64_t aligner;
 };
 
-const static int ready     = letoh32(0x1);
-const static int pending   = letoh32(0x100);
-const static int waiting   = letoh32(0x10000);
 #endif
 
+// Set construction state values according to reference documentation.
+// 0 is the initialization value.
+// Arm requires ((*gv & 1) == 1) after __cxa_guard_release, ((*gv & 3) == 0) after __cxa_guard_abort.
+// X86 requires first byte not modified by __cxa_guard_acquire, first byte is non-zero after
+// __cxa_guard_release.
+
+#define CONSTRUCTION_NOT_YET_STARTED                0
+#define CONSTRUCTION_COMPLETE                       1
+#define CONSTRUCTION_UNDERWAY_WITHOUT_WAITER    0x100
+#define CONSTRUCTION_UNDERWAY_WITH_WAITER       0x200
+
 extern "C" int __cxa_guard_acquire(_guard_t* gv) {
-    // 0 -> pending, return 1
-    // pending -> waiting, wait and return 0
-    // waiting: untouched, wait and return 0
-    // ready: untouched, return 0
+  int old_value = atomic_load_explicit(&gv->state, memory_order_relaxed);
 
-retry:
-    if (__bionic_cmpxchg(0, pending, &gv->state) == 0) {
-        ANDROID_MEMBAR_FULL();
-        return 1;
-    }
-    __bionic_cmpxchg(pending, waiting, &gv->state); // Indicate there is a waiter
-    __futex_wait(&gv->state, waiting, NULL);
-
-    if (gv->state != ready) {
-        // __cxa_guard_abort was called, let every thread try since there is no return code for this condition
-        goto retry;
+  while (true) {
+    if (old_value == CONSTRUCTION_COMPLETE) {
+      // A load_acquire operation is need before exiting with COMPLETE state, as we have to ensure
+      // that all the stores performed by the construction function are observable on this CPU
+      // after we exit.
+      atomic_thread_fence(memory_order_acquire);
+      return 0;
+    } else if (old_value == CONSTRUCTION_NOT_YET_STARTED) {
+      if (!atomic_compare_exchange_weak_explicit(&gv->state, &old_value,
+                                                  CONSTRUCTION_UNDERWAY_WITHOUT_WAITER,
+                                                  memory_order_relaxed,
+                                                  memory_order_relaxed)) {
+        continue;
+      }
+      // The acquire fence may not be needed. But as described in section 3.3.2 of
+      // the Itanium C++ ABI specification, it probably has to behave like the
+      // acquisition of a mutex, which needs an acquire fence.
+      atomic_thread_fence(memory_order_acquire);
+      return 1;
+    } else if (old_value == CONSTRUCTION_UNDERWAY_WITHOUT_WAITER) {
+      if (!atomic_compare_exchange_weak_explicit(&gv->state, &old_value,
+                                                 CONSTRUCTION_UNDERWAY_WITH_WAITER,
+                                                 memory_order_relaxed,
+                                                 memory_order_relaxed)) {
+        continue;
+      }
     }
 
-    ANDROID_MEMBAR_FULL();
-    return 0;
+    __futex_wait_ex(&gv->state, false, CONSTRUCTION_UNDERWAY_WITH_WAITER, NULL);
+    old_value = atomic_load_explicit(&gv->state, memory_order_relaxed);
+  }
 }
 
 extern "C" void __cxa_guard_release(_guard_t* gv) {
-    // pending -> ready
-    // waiting -> ready, and wake
-
-    ANDROID_MEMBAR_FULL();
-    if (__bionic_cmpxchg(pending, ready, &gv->state) == 0) {
-        return;
-    }
-
-    gv->state = ready;
-    __futex_wake(&gv->state, 0x7fffffff);
+  // Release fence is used to make all stores performed by the construction function
+  // visible in other threads.
+  int old_value = atomic_exchange_explicit(&gv->state, CONSTRUCTION_COMPLETE, memory_order_release);
+  if (old_value == CONSTRUCTION_UNDERWAY_WITH_WAITER) {
+    __futex_wake_ex(&gv->state, false, INT_MAX);
+  }
 }
 
 extern "C" void __cxa_guard_abort(_guard_t* gv) {
-    ANDROID_MEMBAR_FULL();
-    gv->state= 0;
-    __futex_wake(&gv->state, 0x7fffffff);
+  // Release fence is used to make all stores performed by the construction function
+  // visible in other threads.
+  int old_value = atomic_exchange_explicit(&gv->state, CONSTRUCTION_NOT_YET_STARTED, memory_order_release);
+  if (old_value == CONSTRUCTION_UNDERWAY_WITH_WAITER) {
+    __futex_wake_ex(&gv->state, false, INT_MAX);
+  }
 }
diff --git a/libc/bionic/__cxa_thread_atexit_impl.cpp b/libc/bionic/__cxa_thread_atexit_impl.cpp
new file mode 100644
index 0000000..0e427d3
--- /dev/null
+++ b/libc/bionic/__cxa_thread_atexit_impl.cpp
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+#include <sys/cdefs.h>
+
+struct thread_local_dtor {
+  void (*func) (void *);
+  void *arg;
+  void *dso_handle; // unused...
+  thread_local_dtor* next;
+};
+
+static __thread thread_local_dtor* thread_local_dtors = nullptr;
+
+extern "C" int __cxa_thread_atexit_impl(void (*func) (void *), void *arg, void *dso_handle) {
+  thread_local_dtor* dtor = new thread_local_dtor();
+
+  dtor->func = func;
+  dtor->arg = arg;
+  dtor->dso_handle = dso_handle;
+  dtor->next = thread_local_dtors;
+
+  thread_local_dtors = dtor;
+
+  return 0;
+}
+
+extern "C" __LIBC_HIDDEN__ void __cxa_thread_finalize() {
+  while (thread_local_dtors != nullptr) {
+    thread_local_dtor* current = thread_local_dtors;
+    thread_local_dtors = current->next;
+
+    current->func(current->arg);
+    delete current;
+  }
+}
diff --git a/libc/bionic/__gnu_basename.cpp b/libc/bionic/__gnu_basename.cpp
new file mode 100644
index 0000000..1eb3f65
--- /dev/null
+++ b/libc/bionic/__gnu_basename.cpp
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _GNU_SOURCE 1
+#include <string.h>
+
+extern "C" const char* __gnu_basename(const char* path) {
+  const char* last_slash = strrchr(path, '/');
+  return (last_slash != NULL) ? last_slash + 1 : path;
+}
diff --git a/libc/bionic/__memchr_chk.cpp b/libc/bionic/__memchr_chk.cpp
new file mode 100644
index 0000000..d141c04
--- /dev/null
+++ b/libc/bionic/__memchr_chk.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#undef _FORTIFY_SOURCE
+#include <string.h>
+#include "private/libc_logging.h"
+
+extern "C" void* __memchr_chk(const void* s, int c, size_t n, size_t buf_size) {
+  if (__predict_false(n > buf_size)) {
+    __fortify_chk_fail("memchr: prevented read past end of buffer", 0);
+  }
+
+  return memchr(s, c, n);
+}
diff --git a/libc/bionic/__memrchr_chk.cpp b/libc/bionic/__memrchr_chk.cpp
new file mode 100644
index 0000000..8529dfc
--- /dev/null
+++ b/libc/bionic/__memrchr_chk.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#undef _FORTIFY_SOURCE
+#include <string.h>
+#include "private/libc_logging.h"
+
+extern "C" void* __memrchr_chk(const void* s, int c, size_t n, size_t buf_size) {
+  if (__predict_false(n > buf_size)) {
+    __fortify_chk_fail("memrchr: prevented read past end of buffer", 0);
+  }
+
+  return memrchr(s, c, n);
+}
diff --git a/libc/bionic/__poll_chk.cpp b/libc/bionic/__poll_chk.cpp
new file mode 100644
index 0000000..a24ab8e
--- /dev/null
+++ b/libc/bionic/__poll_chk.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#undef _FORTIFY_SOURCE
+#include <poll.h>
+#include "private/libc_logging.h"
+
+extern "C" int __poll_chk(struct pollfd* fds, nfds_t fd_count, int timeout, size_t fds_size) {
+  if (__predict_false(fds_size / sizeof(*fds) < fd_count)) {
+    __fortify_chk_fail("poll: pollfd array smaller than fd count", 0);
+  }
+  return poll(fds, fd_count, timeout);
+}
+
+extern "C" int __ppoll_chk(struct pollfd* fds, nfds_t fd_count, const struct timespec* timeout, const sigset_t* mask, size_t fds_size) {
+  if (__predict_false(fds_size / sizeof(*fds) < fd_count)) {
+    __fortify_chk_fail("ppoll: pollfd array smaller than fd count", 0);
+  }
+  return ppoll(fds, fd_count, timeout, mask);
+}
diff --git a/libc/bionic/__pread64_chk.cpp b/libc/bionic/__pread64_chk.cpp
new file mode 100644
index 0000000..5d6ad2d
--- /dev/null
+++ b/libc/bionic/__pread64_chk.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#undef _FORTIFY_SOURCE
+#include <unistd.h>
+#include "private/libc_logging.h"
+
+extern "C" ssize_t __pread64_chk(int fd, void* buf, size_t count, off64_t offset, size_t buf_size) {
+  if (__predict_false(count > buf_size)) {
+    __fortify_chk_fail("pread64: prevented write past end of buffer", 0);
+  }
+
+  if (__predict_false(count > SSIZE_MAX)) {
+    __fortify_chk_fail("pread64: count > SSIZE_MAX", 0);
+  }
+
+  return pread64(fd, buf, count, offset);
+}
diff --git a/libc/bionic/__pread_chk.cpp b/libc/bionic/__pread_chk.cpp
new file mode 100644
index 0000000..7109ce6
--- /dev/null
+++ b/libc/bionic/__pread_chk.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#undef _FORTIFY_SOURCE
+#include <unistd.h>
+#include "private/libc_logging.h"
+
+extern "C" ssize_t __pread_chk(int fd, void* buf, size_t count, off_t offset, size_t buf_size) {
+  if (__predict_false(count > buf_size)) {
+    __fortify_chk_fail("pread: prevented write past end of buffer", 0);
+  }
+
+  if (__predict_false(count > SSIZE_MAX)) {
+    __fortify_chk_fail("pread: count > SSIZE_MAX", 0);
+  }
+
+  return pread(fd, buf, count, offset);
+}
diff --git a/libc/bionic/__readlink_chk.cpp b/libc/bionic/__readlink_chk.cpp
new file mode 100644
index 0000000..f19f917
--- /dev/null
+++ b/libc/bionic/__readlink_chk.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#undef _FORTIFY_SOURCE
+#include <unistd.h>
+#include "private/libc_logging.h"
+
+extern "C" ssize_t __readlink_chk(const char* path, char* buf, size_t size, size_t buf_size) {
+  if (__predict_false(size > buf_size)) {
+    __fortify_chk_fail("readlink: prevented write past end of buffer", 0);
+  }
+
+  if (__predict_false(size > SSIZE_MAX)) {
+    __fortify_chk_fail("readlink: size > SSIZE_MAX", 0);
+  }
+
+  return readlink(path, buf, size);
+}
diff --git a/libc/bionic/__readlinkat_chk.cpp b/libc/bionic/__readlinkat_chk.cpp
new file mode 100644
index 0000000..a11db8e
--- /dev/null
+++ b/libc/bionic/__readlinkat_chk.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#undef _FORTIFY_SOURCE
+#include <unistd.h>
+#include "private/libc_logging.h"
+
+extern "C" ssize_t __readlinkat_chk(int dirfd, const char* path, char* buf, size_t size, size_t buf_size) {
+  if (__predict_false(size > buf_size)) {
+    __fortify_chk_fail("readlinkat: prevented write past end of buffer", 0);
+  }
+
+  if (__predict_false(size > SSIZE_MAX)) {
+    __fortify_chk_fail("readlinkat: size > SSIZE_MAX", 0);
+  }
+
+  return readlinkat(dirfd, path, buf, size);
+}
diff --git a/libc/bionic/bionic_systrace.cpp b/libc/bionic/bionic_systrace.cpp
new file mode 100644
index 0000000..10521cf
--- /dev/null
+++ b/libc/bionic/bionic_systrace.cpp
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <cutils/trace.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "private/bionic_systrace.h"
+#include "private/libc_logging.h"
+
+#define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
+#include <sys/_system_properties.h>
+
+#define WRITE_OFFSET   32
+
+static const prop_info* g_pinfo = NULL;
+static uint32_t g_serial = -1;
+static uint64_t g_tags = 0;
+static int g_trace_marker_fd = -1;
+
+static bool should_trace() {
+  // If g_pinfo is null, this means that systrace hasn't been run and it's safe to
+  // assume that no trace writing will need to take place.  However, to avoid running
+  // this costly find check each time, we set it to a non-tracing value so that next
+  // time, it will just check the serial to see if the value has been changed.
+  // this function also deals with the bootup case, during which the call to property
+  // set will fail if the property server hasn't yet started.
+  if (g_pinfo == NULL) {
+    g_pinfo = __system_property_find("debug.atrace.tags.enableflags");
+    if (g_pinfo == NULL) {
+      __system_property_set("debug.atrace.tags.enableflags", "0");
+      g_pinfo = __system_property_find("debug.atrace.tags.enableflags");
+      if (g_pinfo == NULL) {
+        return false;
+      }
+    }
+  }
+
+  // Find out which tags have been enabled on the command line and set
+  // the value of tags accordingly.  If the value of the property changes,
+  // the serial will also change, so the costly system_property_read function
+  // can be avoided by calling the much cheaper system_property_serial
+  // first.  The values within pinfo may change, but its location is guaranteed
+  // not to move.
+  const uint32_t cur_serial = __system_property_serial(g_pinfo);
+  if (cur_serial != g_serial) {
+    g_serial = cur_serial;
+    char value[PROP_VALUE_MAX];
+    __system_property_read(g_pinfo, 0, value);
+    g_tags = strtoull(value, NULL, 0);
+  }
+
+  // Finally, verify that this tag value enables bionic tracing.
+  return ((g_tags & ATRACE_TAG_BIONIC) != 0);
+}
+
+ScopedTrace::ScopedTrace(const char* message) {
+  if (!should_trace()) {
+    return;
+  }
+
+  if (g_trace_marker_fd == -1) {
+    g_trace_marker_fd = open("/sys/kernel/debug/tracing/trace_marker", O_CLOEXEC | O_WRONLY);
+    if (g_trace_marker_fd == -1) {
+      __libc_fatal("Could not open kernel trace file: %s\n", strerror(errno));
+    }
+  }
+
+  // If bionic tracing has been enabled, then write the message to the
+  // kernel trace_marker.
+  int length = strlen(message);
+  char buf[length + WRITE_OFFSET];
+  size_t len = snprintf(buf, length + WRITE_OFFSET, "B|%d|%s", getpid(), message);
+  ssize_t wbytes = TEMP_FAILURE_RETRY(write(g_trace_marker_fd, buf, len));
+
+  // Error while writing
+  if (static_cast<size_t>(wbytes) != len) {
+    __libc_fatal("Could not write to kernel trace file: %s\n", strerror(errno));
+  }
+}
+
+ScopedTrace::~ScopedTrace() {
+  if (!should_trace()) {
+    return;
+  }
+
+  ssize_t wbytes = TEMP_FAILURE_RETRY(write(g_trace_marker_fd, "E", 1));
+
+  // Error while writing
+  if (static_cast<size_t>(wbytes) != 1) {
+    __libc_fatal("Could not write to kernel trace file: %s\n", strerror(errno));
+  }
+}
diff --git a/libc/bionic/bionic_time_conversions.cpp b/libc/bionic/bionic_time_conversions.cpp
index 7f3c026..75e8d49 100644
--- a/libc/bionic/bionic_time_conversions.cpp
+++ b/libc/bionic/bionic_time_conversions.cpp
@@ -28,6 +28,8 @@
 
 #include "private/bionic_time_conversions.h"
 
+#include "private/bionic_constants.h"
+
 bool timespec_from_timeval(timespec& ts, const timeval& tv) {
   // Whole seconds can just be copied.
   ts.tv_sec = tv.tv_sec;
@@ -49,3 +51,19 @@
   tv.tv_sec = ts.tv_sec;
   tv.tv_usec = ts.tv_nsec / 1000;
 }
+
+// Initializes 'ts' with the difference between 'abs_ts' and the current time
+// according to 'clock'. Returns false if abstime already expired, true otherwise.
+bool timespec_from_absolute_timespec(timespec& ts, const timespec& abs_ts, clockid_t clock) {
+  clock_gettime(clock, &ts);
+  ts.tv_sec = abs_ts.tv_sec - ts.tv_sec;
+  ts.tv_nsec = abs_ts.tv_nsec - ts.tv_nsec;
+  if (ts.tv_nsec < 0) {
+    ts.tv_sec--;
+    ts.tv_nsec += NS_PER_S;
+  }
+  if (ts.tv_nsec < 0 || ts.tv_sec < 0) {
+    return false;
+  }
+  return true;
+}
diff --git a/libc/bionic/chown.cpp b/libc/bionic/chown.cpp
index bc2e605..dce1673 100644
--- a/libc/bionic/chown.cpp
+++ b/libc/bionic/chown.cpp
@@ -29,6 +29,7 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <unistd.h>
 
 int chown(const char* path, uid_t uid, gid_t gid) {
   return fchownat(AT_FDCWD, path, uid, gid, 0);
diff --git a/libc/bionic/clock.cpp b/libc/bionic/clock.cpp
index 5bd32f9..053e9e7 100644
--- a/libc/bionic/clock.cpp
+++ b/libc/bionic/clock.cpp
@@ -30,7 +30,7 @@
 #include <sys/sysconf.h>
 #include <sys/times.h>
 
-#define NS_PER_S 1000000000 // No "private/bionic_constants.h" in lmp-dev.
+#include "private/bionic_constants.h"
 
 // http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock.html
 clock_t clock() {
diff --git a/libc/bionic/clock_getcpuclockid.cpp b/libc/bionic/clock_getcpuclockid.cpp
new file mode 100644
index 0000000..5511eb4
--- /dev/null
+++ b/libc/bionic/clock_getcpuclockid.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <errno.h>
+#include <time.h>
+
+#include "private/ErrnoRestorer.h"
+
+int clock_getcpuclockid(pid_t pid, clockid_t* clockid) {
+  ErrnoRestorer errno_restorer;
+
+  // The tid is stored in the top bits, but negated.
+  clockid_t result = ~static_cast<clockid_t>(pid) << 3;
+  // Bits 0 and 1: clock type (0 = CPUCLOCK_PROF, 1 = CPUCLOCK_VIRT, 2 = CPUCLOCK_SCHED).
+  result |= 2;
+  // Bit 2: thread (set) or process (clear). Bit 2 already 0.
+
+  timespec ts;
+  if (clock_getres(result, &ts) == -1) {
+    return ESRCH;
+  }
+
+  *clockid = result;
+  return 0;
+}
diff --git a/libc/bionic/clock_nanosleep.cpp b/libc/bionic/clock_nanosleep.cpp
new file mode 100644
index 0000000..15b8fe7
--- /dev/null
+++ b/libc/bionic/clock_nanosleep.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <time.h>
+
+#include "private/ErrnoRestorer.h"
+
+extern "C" int __clock_nanosleep(clockid_t, int, const timespec*, timespec*);
+
+int clock_nanosleep(clockid_t clock_id, int flags, const timespec* in, timespec* out) {
+  ErrnoRestorer errno_restorer;
+  return (__clock_nanosleep(clock_id, flags, in, out) == 0) ? 0 : errno;
+}
diff --git a/libc/bionic/clone.cpp b/libc/bionic/clone.cpp
index 0a0fdd5..9b5c9e7 100644
--- a/libc/bionic/clone.cpp
+++ b/libc/bionic/clone.cpp
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#define __GNU_SOURCE 1
+#define _GNU_SOURCE 1
 #include <sched.h>
 #include <stdlib.h>
 #include <stdarg.h>
diff --git a/libc/bionic/close.cpp b/libc/bionic/close.cpp
new file mode 100644
index 0000000..18225f0
--- /dev/null
+++ b/libc/bionic/close.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <errno.h>
+#include <unistd.h>
+
+extern "C" int ___close(int);
+
+int close(int fd) {
+  int rc = ___close(fd);
+  if (rc == -1 && errno == EINTR) {
+    // POSIX says that if close returns with EINTR, the fd must not be closed.
+    // Linus disagrees: http://lkml.indiana.edu/hypermail/linux/kernel/0509.1/0877.html
+    // The future POSIX solution is posix_close (http://austingroupbugs.net/view.php?id=529),
+    // with the state after EINTR being undefined, and EINPROGRESS for the case where close
+    // was interrupted by a signal but the file descriptor was actually closed.
+    // My concern with that future behavior is that it breaks existing code that assumes
+    // that close only returns -1 if it failed. Unlike other system calls, I have real
+    // difficulty even imagining a caller that would need to know that close was interrupted
+    // but succeeded. So returning EINTR is wrong (because Linux always closes) and EINPROGRESS
+    // is harmful because callers need to be rewritten to understand that EINPROGRESS isn't
+    // actually a failure, but will be reported as one.
+
+    // We don't restore errno because that would incur a cost (the TLS read) for every caller.
+    // Since callers don't know ahead of time whether close will legitimately fail, they need
+    // to have stashed the old errno value anyway if they plan on using it afterwards, so
+    // us clobbering errno here doesn't change anything in that respect.
+    return 0;
+  }
+  return rc;
+}
diff --git a/libc/bionic/crtbrand.c b/libc/bionic/crtbrand.c
deleted file mode 100644
index 31fcbc7..0000000
--- a/libc/bionic/crtbrand.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * Copyright 2000 David E. O'Brien, John D. Polstra.
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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>
-
-#define ABI_VENDOR	"Android"
-#define ABI_SECTION	".note.android.ident"
-#define ABI_NOTETYPE	1
-#define ABI_ANDROID_API	PLATFORM_SDK_VERSION
-
-/*
- * Special ".note" entry to tag an Android binary and specify the ABI version.
- *
- * For all arches except sparc, gcc emits the section directive for the
- * following struct with a PROGBITS type.  However, the section should be
- * of NOTE type, according to the Generic SysV ABI spec.
- *
- * Unfortunately, there is no clean way to tell gcc to use another section type,
- * so this C file (or the C file that includes it) must be compiled in multiple
- * steps:
- *
- * - Compile the .c file to a .s file.
- * - Edit the .s file to change the 'progbits' type to 'note', for the section
- *   directive that defines the .note.ABI-tag section.
- * - Compile the .s file to an object file.
- *
- * These steps are done in the invididual Makefiles for each applicable arch.
- */
-static const struct {
-    int32_t	namesz;
-    int32_t	descsz;
-    int32_t	type;
-    char	name[sizeof ABI_VENDOR];
-    int32_t	android_api;
-} abitag __attribute__ ((section (ABI_SECTION), aligned(4), used)) = {
-    sizeof ABI_VENDOR,
-    sizeof(int32_t),
-    ABI_NOTETYPE,
-    ABI_VENDOR,
-    ABI_ANDROID_API,
-};
diff --git a/libc/bionic/daemon.c b/libc/bionic/daemon.c
deleted file mode 100644
index 8181d16..0000000
--- a/libc/bionic/daemon.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <fcntl.h>
-
-int  daemon( int  nochdir, int  noclose )
-{
-   pid_t  pid;
-
-   if ( !nochdir && chdir("/") != 0 )
-       return -1;
-   
-   if ( !noclose )
-   {
-     int  fd = open("/dev/null", O_RDWR);
-
-     if ( fd < 0 )
-      return -1;
-
-     if ( dup2( fd, 0 ) < 0 ||
-	  dup2( fd, 1 ) < 0 ||
-          dup2( fd, 2 ) < 0 ) 
-     {
-       close(fd);
-      return -1;
-     }
-     close(fd);
-  }
-  
-   pid = fork();
-   if (pid < 0)
-    return -1;
-
-   if (pid > 0)
-    _exit(0);
-
-   if ( setsid() < 0 )
-     return -1;
-
-   return 0;
-}
-
diff --git a/libc/bionic/debug_mapinfo.cpp b/libc/bionic/debug_mapinfo.cpp
index d83799a..698ab6b 100644
--- a/libc/bionic/debug_mapinfo.cpp
+++ b/libc/bionic/debug_mapinfo.cpp
@@ -71,7 +71,7 @@
   struct mapinfo_t* milist = NULL;
   char data[1024]; // Used to read lines as well as to construct the filename.
   snprintf(data, sizeof(data), "/proc/%d/maps", pid);
-  FILE* fp = fopen(data, "r");
+  FILE* fp = fopen(data, "re");
   if (fp != NULL) {
     while (fgets(data, sizeof(data), fp) != NULL) {
       mapinfo_t* mi = parse_maps_line(data);
diff --git a/libc/bionic/debug_stacktrace.cpp b/libc/bionic/debug_stacktrace.cpp
index b86e2af..71e876b 100644
--- a/libc/bionic/debug_stacktrace.cpp
+++ b/libc/bionic/debug_stacktrace.cpp
@@ -30,6 +30,7 @@
 
 #include <dlfcn.h>
 #include <inttypes.h>
+#include <malloc.h>
 #include <unistd.h>
 #include <unwind.h>
 #include <sys/types.h>
@@ -44,41 +45,22 @@
 #define PAD_PTR "08" PRIxPTR
 #endif
 
-/* depends how the system includes define this */
-#ifdef HAVE_UNWIND_CONTEXT_STRUCT
 typedef struct _Unwind_Context __unwind_context;
-#else
-typedef _Unwind_Context __unwind_context;
-#endif
+
+extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
 
 static mapinfo_t* g_map_info = NULL;
-static void* g_demangler;
-typedef char* (*DemanglerFn)(const char*, char*, size_t*, int*);
-static DemanglerFn g_demangler_fn = NULL;
 
 __LIBC_HIDDEN__ void backtrace_startup() {
   ScopedDisableDebugCalls disable;
 
   g_map_info = mapinfo_create(getpid());
-  g_demangler = dlopen("libgccdemangle.so", RTLD_NOW);
-  if (g_demangler != NULL) {
-    void* sym = dlsym(g_demangler, "__cxa_demangle");
-    g_demangler_fn = reinterpret_cast<DemanglerFn>(sym);
-  }
 }
 
 __LIBC_HIDDEN__ void backtrace_shutdown() {
   ScopedDisableDebugCalls disable;
 
   mapinfo_destroy(g_map_info);
-  dlclose(g_demangler);
-}
-
-static char* demangle(const char* symbol) {
-  if (g_demangler_fn == NULL) {
-    return NULL;
-  }
-  return (*g_demangler_fn)(symbol, NULL, NULL, NULL);
 }
 
 struct stack_crawl_state_t {
@@ -162,8 +144,7 @@
       soname = "<unknown>";
     }
     if (symbol != NULL) {
-      // TODO: we might need a flag to say whether it's safe to allocate (demangling allocates).
-      char* demangled_symbol = demangle(symbol);
+      char* demangled_symbol = __cxa_demangle(symbol, NULL, NULL, NULL);
       const char* best_name = (demangled_symbol != NULL) ? demangled_symbol : symbol;
 
       __libc_format_log(ANDROID_LOG_ERROR, "libc",
diff --git a/libc/bionic/dirent.cpp b/libc/bionic/dirent.cpp
index 7abc7f3..fb45398 100644
--- a/libc/bionic/dirent.cpp
+++ b/libc/bionic/dirent.cpp
@@ -30,6 +30,8 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <malloc.h>
+#include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
@@ -43,6 +45,7 @@
   int fd_;
   size_t available_bytes_;
   dirent* next_;
+  long current_pos_;
   pthread_mutex_t mutex_;
   dirent buff_[15];
 };
@@ -55,6 +58,7 @@
   d->fd_ = fd;
   d->available_bytes_ = 0;
   d->next_ = NULL;
+  d->current_pos_ = 0L;
   pthread_mutex_init(&d->mutex_, NULL);
   return d;
 }
@@ -78,7 +82,7 @@
 }
 
 DIR* opendir(const char* path) {
-  int fd = open(path, O_RDONLY | O_DIRECTORY);
+  int fd = open(path, O_CLOEXEC | O_DIRECTORY | O_RDONLY);
   return (fd != -1) ? __allocate_DIR(fd) : NULL;
 }
 
@@ -100,6 +104,9 @@
   dirent* entry = d->next_;
   d->next_ = reinterpret_cast<dirent*>(reinterpret_cast<char*>(entry) + entry->d_reclen);
   d->available_bytes_ -= entry->d_reclen;
+  // The directory entry offset uses 0, 1, 2 instead of real file offset,
+  // so the value range of long type is enough.
+  d->current_pos_ = static_cast<long>(entry->d_off);
   return entry;
 }
 
@@ -146,6 +153,20 @@
   ScopedPthreadMutexLocker locker(&d->mutex_);
   lseek(d->fd_, 0, SEEK_SET);
   d->available_bytes_ = 0;
+  d->current_pos_ = 0L;
+}
+
+void seekdir(DIR* d, long offset) {
+  ScopedPthreadMutexLocker locker(&d->mutex_);
+  off_t ret = lseek(d->fd_, offset, SEEK_SET);
+  if (ret != -1L) {
+    d->available_bytes_ = 0;
+    d->current_pos_ = ret;
+  }
+}
+
+long telldir(DIR* d) {
+  return d->current_pos_;
 }
 
 int alphasort(const dirent** a, const dirent** b) {
diff --git a/libc/bionic/dlmalloc.c b/libc/bionic/dlmalloc.c
index e89c5d1..5853e7c 100644
--- a/libc/bionic/dlmalloc.c
+++ b/libc/bionic/dlmalloc.c
@@ -16,6 +16,7 @@
 
 #include "dlmalloc.h"
 
+#include "malloc.h"
 #include "private/bionic_prctl.h"
 #include "private/libc_logging.h"
 
@@ -54,3 +55,25 @@
   prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map, length, "libc_malloc");
   return map;
 }
+
+// Since dlmalloc isn't the default, we'll leave this unimplemented for now. If
+// we decide we need it later, we can fill it in.
+size_t __mallinfo_narenas() {
+  return 0;
+}
+
+size_t __mallinfo_nbins() {
+  return 0;
+}
+
+struct mallinfo __mallinfo_arena_info(size_t aidx __unused) {
+  struct mallinfo mi;
+  memset(&mi, 0, sizeof(mi));
+  return mi;
+}
+
+struct mallinfo __mallinfo_bin_info(size_t aidx __unused, size_t bidx __unused) {
+  struct mallinfo mi;
+  memset(&mi, 0, sizeof(mi));
+  return mi;
+}
diff --git a/libc/bionic/dup2.cpp b/libc/bionic/dup2.cpp
index 0b8632b..98c5646 100644
--- a/libc/bionic/dup2.cpp
+++ b/libc/bionic/dup2.cpp
@@ -26,8 +26,19 @@
  * SUCH DAMAGE.
  */
 
+#include <fcntl.h>
 #include <unistd.h>
 
 int dup2(int old_fd, int new_fd) {
+  // If old_fd is equal to new_fd and a valid file descriptor, dup2 returns
+  // old_fd without closing it. This is not true of dup3, so we have to
+  // handle this case ourselves.
+  if (old_fd == new_fd) {
+    if (fcntl(old_fd, F_GETFD) == -1) {
+      return -1;
+    }
+    return old_fd;
+  }
+
   return dup3(old_fd, new_fd, 0);
 }
diff --git a/libc/bionic/err.c b/libc/bionic/err.c
deleted file mode 100644
index 84a3d85..0000000
--- a/libc/bionic/err.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*-
- * Copyright (c) 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. 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.
- */
-
-#include <sys/cdefs.h>
-#include <err.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <errno.h>
-
-extern const char* __progname;
-
-__noreturn void
-err(int eval, const char *fmt, ...)
-{
-        va_list ap;
-
-        va_start(ap, fmt);
-        verr(eval, fmt, ap);
-        va_end(ap);
-}
-
-__noreturn void
-errx(int eval, const char *fmt, ...)
-{
-        va_list ap;
-
-        va_start(ap, fmt);
-        verrx(eval, fmt, ap);
-        va_end(ap);
-}
-
-__noreturn void
-verr(int eval, const char *fmt, va_list ap)
-{
-        int sverrno;
-
-        sverrno = errno;
-        (void)fprintf(stderr, "%s: ", __progname);
-        if (fmt != NULL) {
-                (void)vfprintf(stderr, fmt, ap);
-                (void)fprintf(stderr, ": ");
-        }
-        (void)fprintf(stderr, "%s\n", strerror(sverrno));
-        exit(eval);
-}
-
-
-__noreturn void
-verrx(int eval, const char *fmt, va_list ap)
-{
-        (void)fprintf(stderr, "%s: ", __progname);
-        if (fmt != NULL)
-                (void)vfprintf(stderr, fmt, ap);
-        (void)fprintf(stderr, "\n");
-        exit(eval);
-}
-
-void
-warn(const char *fmt, ...)
-{
-	va_list ap;
-
-	va_start(ap, fmt);
-	vwarn(fmt, ap);
-	va_end(ap);
-}
-
-void
-warnx(const char *fmt, ...)
-{
-	va_list ap;
-
-	va_start(ap, fmt);
-	vwarnx(fmt, ap);
-	va_end(ap);
-}
-
-void
-vwarn(const char *fmt, va_list ap)
-{
-	int sverrno;
-
-	sverrno = errno;
-	(void)fprintf(stderr, "%s: ", __progname);
-	if (fmt != NULL) {
-		(void)vfprintf(stderr, fmt, ap);
-		(void)fprintf(stderr, ": ");
-	}
-	(void)fprintf(stderr, "%s\n", strerror(sverrno));
-}
-
-void
-vwarnx(const char *fmt, va_list ap)
-{
-	(void)fprintf(stderr, "%s: ", __progname);
-	if (fmt != NULL)
-		(void)vfprintf(stderr, fmt, ap);
-	(void)fprintf(stderr, "\n");
-}
diff --git a/libc/bionic/error.cpp b/libc/bionic/error.cpp
new file mode 100644
index 0000000..e8df0e0
--- /dev/null
+++ b/libc/bionic/error.cpp
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <error.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+unsigned int error_message_count = 0;
+void (*error_print_progname)(void) = NULL;
+int error_one_per_line = 0;
+
+static void __error_head() {
+  ++error_message_count;
+
+  if (error_print_progname != NULL) {
+    error_print_progname();
+  } else {
+    fflush(stdout);
+    fprintf(stderr, "%s:", getprogname());
+  }
+}
+
+static void __error_tail(int status, int error) {
+  if (error != 0) {
+    fprintf(stderr, ": %s", strerror(error));
+  }
+
+  putc('\n', stderr);
+  fflush(stderr);
+
+  if (status != 0) {
+    exit(status);
+  }
+}
+
+void error(int status, int error, const char* fmt, ...) {
+  __error_head();
+  putc(' ', stderr);
+
+  va_list ap;
+  va_start(ap, fmt);
+  vfprintf(stderr, fmt, ap);
+  va_end(ap);
+
+  __error_tail(status, error);
+}
+
+void error_at_line(int status, int error, const char* file, unsigned int line, const char* fmt, ...) {
+  if (error_one_per_line) {
+    static const char* last_file;
+    static unsigned int last_line;
+    if (last_line == line && last_file != NULL && strcmp(last_file, file) == 0) {
+      return;
+    }
+    last_file = file;
+    last_line = line;
+  }
+
+  __error_head();
+  fprintf(stderr, "%s:%d: ", file, line);
+
+  va_list ap;
+  va_start(ap, fmt);
+  vfprintf(stderr, fmt, ap);
+  va_end(ap);
+
+  __error_tail(status, error);
+}
diff --git a/libc/bionic/faccessat.cpp b/libc/bionic/faccessat.cpp
new file mode 100644
index 0000000..5f375e0
--- /dev/null
+++ b/libc/bionic/faccessat.cpp
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <unistd.h>
+#include <errno.h>
+
+extern "C" int ___faccessat(int, const char*, int);
+
+int faccessat(int dirfd, const char* pathname, int mode, int flags) {
+  // "The mode specifies the accessibility check(s) to be performed,
+  // and is either the value F_OK, or a mask consisting of the
+  // bitwise OR of one or more of R_OK, W_OK, and X_OK."
+  if ((mode != F_OK) && ((mode & ~(R_OK | W_OK | X_OK)) != 0) &&
+      ((mode & (R_OK | W_OK | X_OK)) == 0)) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  if (flags != 0) {
+    // We deliberately don't support AT_SYMLINK_NOFOLLOW, a glibc
+    // only feature which is error prone and dangerous.
+    //
+    // AT_EACCESS isn't supported either. Android doesn't have setuid
+    // programs, and never runs code with euid!=uid. It could be
+    // implemented in an expensive way, following the model at
+    // https://gitlab.com/bminor/musl/commit/0a05eace163cee9b08571d2ff9d90f5e82d9c228
+    // but not worth it.
+    errno = EINVAL;
+    return -1;
+  }
+
+  return ___faccessat(dirfd, pathname, mode);
+}
diff --git a/libc/bionic/fchmod.cpp b/libc/bionic/fchmod.cpp
new file mode 100644
index 0000000..ace8c6b
--- /dev/null
+++ b/libc/bionic/fchmod.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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/stat.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdio.h>
+
+extern "C" int ___fchmod(int, mode_t);
+
+int fchmod(int fd, mode_t mode) {
+  int saved_errno = errno;
+  int result = ___fchmod(fd, mode);
+
+  if ((result == 0) || (errno != EBADF)) {
+    return result;
+  }
+
+  // fd could be an O_PATH file descriptor, and the kernel
+  // may not directly support fchmod() on such a file descriptor.
+  // Use /proc/self/fd instead to emulate this support.
+  // https://sourceware.org/bugzilla/show_bug.cgi?id=14578
+  //
+  // As of February 2015, there are no kernels which support fchmod
+  // on an O_PATH file descriptor, and "man open" documents fchmod
+  // on O_PATH file descriptors as returning EBADF.
+  int fd_flag = fcntl(fd, F_GETFL);
+  if ((fd_flag == -1) || ((fd_flag & O_PATH) == 0)) {
+    errno = EBADF;
+    return -1;
+  }
+
+  char buf[40];
+  snprintf(buf, sizeof(buf), "/proc/self/fd/%d", fd);
+  errno = saved_errno;
+  result = chmod(buf, mode);
+  if ((result == -1) && (errno == ELOOP)) {
+    // Linux does not support changing the mode of a symlink.
+    // For fchmodat(AT_SYMLINK_NOFOLLOW), POSIX requires a return
+    // value of ENOTSUP. Assume that's true here too.
+    errno = ENOTSUP;
+  }
+
+  return result;
+}
diff --git a/libc/bionic/fchmodat.cpp b/libc/bionic/fchmodat.cpp
new file mode 100644
index 0000000..1f83c4b
--- /dev/null
+++ b/libc/bionic/fchmodat.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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/stat.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "private/ErrnoRestorer.h"
+
+extern "C" int ___fchmodat(int, const char*, mode_t);
+
+int fchmodat(int dirfd, const char* pathname, mode_t mode, int flags) {
+  if ((flags & ~AT_SYMLINK_NOFOLLOW) != 0) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  if (flags & AT_SYMLINK_NOFOLLOW) {
+    // Emulate AT_SYMLINK_NOFOLLOW using the mechanism described
+    // at https://sourceware.org/bugzilla/show_bug.cgi?id=14578
+    // comment #10
+
+    int fd = openat(dirfd, pathname, O_PATH | O_NOFOLLOW | O_CLOEXEC);
+    if (fd == -1) {
+      return -1; // returns errno from openat
+    }
+
+    // POSIX requires that ENOTSUP be returned when the system
+    // doesn't support setting the mode of a symbolic link.
+    // This is true for all Linux kernels.
+    // We rely on the O_PATH compatibility layer added in the
+    // fchmod() function to get errno correct.
+    int result = fchmod(fd, mode);
+    ErrnoRestorer errno_restorer; // don't let close() clobber errno
+    close(fd);
+    return result;
+  }
+
+  return ___fchmodat(dirfd, pathname, mode);
+}
diff --git a/libc/bionic/fts.c b/libc/bionic/fts.c
index c491b6a..31a4b2f 100644
--- a/libc/bionic/fts.c
+++ b/libc/bionic/fts.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: fts.c,v 1.46 2014/05/25 17:47:04 tedu Exp $	*/
+/*	$OpenBSD: fts.c,v 1.48 2014/11/20 04:14:15 guenther Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993, 1994
@@ -49,11 +49,12 @@
 static void	 fts_padjust(FTS *, FTSENT *);
 static int	 fts_palloc(FTS *, size_t);
 static FTSENT	*fts_sort(FTS *, FTSENT *, int);
-static u_short	 fts_stat(FTS *, FTSENT *, int);
+static u_short	 fts_stat(FTS *, FTSENT *, int, int);
 static int	 fts_safe_changedir(FTS *, FTSENT *, int, char *);
 
 #define ALIGNBYTES (sizeof(uintptr_t) - 1)
 #define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) &~ ALIGNBYTES)
+void* reallocarray(void*, size_t, size_t);
 
 #define	ISDOT(a)	(a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2])))
 
@@ -119,7 +120,7 @@
 		p->fts_level = FTS_ROOTLEVEL;
 		p->fts_parent = parent;
 		p->fts_accpath = p->fts_name;
-		p->fts_info = fts_stat(sp, p, ISSET(FTS_COMFOLLOW));
+		p->fts_info = fts_stat(sp, p, ISSET(FTS_COMFOLLOW), -1);
 
 		/* Command-line "." and ".." are real directories. */
 		if (p->fts_info == FTS_DOT)
@@ -273,7 +274,7 @@
 
 	/* Any type of file may be re-visited; re-stat and re-turn. */
 	if (instr == FTS_AGAIN) {
-		p->fts_info = fts_stat(sp, p, 0);
+		p->fts_info = fts_stat(sp, p, 0, -1);
 		return (p);
 	}
 
@@ -285,7 +286,7 @@
 	 */
 	if (instr == FTS_FOLLOW &&
 	    (p->fts_info == FTS_SL || p->fts_info == FTS_SLNONE)) {
-		p->fts_info = fts_stat(sp, p, 1);
+		p->fts_info = fts_stat(sp, p, 1, -1);
 		if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) {
 			if ((p->fts_symfd = open(".", O_RDONLY, 0)) < 0) {
 				p->fts_errno = errno;
@@ -374,7 +375,7 @@
 		if (p->fts_instr == FTS_SKIP)
 			goto next;
 		if (p->fts_instr == FTS_FOLLOW) {
-			p->fts_info = fts_stat(sp, p, 1);
+			p->fts_info = fts_stat(sp, p, 1, -1);
 			if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) {
 				if ((p->fts_symfd =
 				    open(".", O_RDONLY, 0)) < 0) {
@@ -719,10 +720,11 @@
 			if (ISSET(FTS_NOCHDIR)) {
 				p->fts_accpath = p->fts_path;
 				memmove(cp, p->fts_name, p->fts_namelen + 1);
-			} else
+				p->fts_info = fts_stat(sp, p, 0, dirfd(dirp));
+			} else {
 				p->fts_accpath = p->fts_name;
-			/* Stat it. */
-			p->fts_info = fts_stat(sp, p, 0);
+				p->fts_info = fts_stat(sp, p, 0, -1);
+			}
 
 			/* Decrement link count if applicable. */
 			if (nlinks > 0 && (p->fts_info == FTS_D ||
@@ -789,13 +791,20 @@
 }
 
 static u_short
-fts_stat(FTS *sp, FTSENT *p, int follow)
+fts_stat(FTS *sp, FTSENT *p, int follow, int dfd)
 {
 	FTSENT *t;
 	dev_t dev;
 	ino_t ino;
 	struct stat *sbp, sb;
 	int saved_errno;
+	const char *path;
+
+	if (dfd == -1) {
+		path = p->fts_accpath;
+		dfd = AT_FDCWD;
+	} else
+		path = p->fts_name;
 
 	/* If user needs stat info, stat buffer already allocated. */
 	sbp = ISSET(FTS_NOSTAT) ? &sb : p->fts_statp;
@@ -806,16 +815,16 @@
 	 * fail, set the errno from the stat call.
 	 */
 	if (ISSET(FTS_LOGICAL) || follow) {
-		if (stat(p->fts_accpath, sbp)) {
+		if (fstatat(dfd, path, sbp, 0)) {
 			saved_errno = errno;
-			if (!lstat(p->fts_accpath, sbp)) {
+			if (!fstatat(dfd, path, sbp, AT_SYMLINK_NOFOLLOW)) {
 				errno = 0;
 				return (FTS_SLNONE);
 			}
 			p->fts_errno = saved_errno;
 			goto err;
 		}
-	} else if (lstat(p->fts_accpath, sbp)) {
+	} else if (fstatat(dfd, path, sbp, AT_SYMLINK_NOFOLLOW)) {
 		p->fts_errno = errno;
 err:		memset(sbp, 0, sizeof(struct stat));
 		return (FTS_NS);
@@ -873,8 +882,8 @@
 		struct _ftsent **a;
 
 		sp->fts_nitems = nitems + 40;
-		if ((a = realloc(sp->fts_array,
-		    sp->fts_nitems * sizeof(FTSENT *))) == NULL) {
+		if ((a = reallocarray(sp->fts_array,
+		    sp->fts_nitems, sizeof(FTSENT *))) == NULL) {
 			if (sp->fts_array)
 				free(sp->fts_array);
 			sp->fts_array = NULL;
diff --git a/libc/bionic/getauxval.cpp b/libc/bionic/getauxval.cpp
index bc41824..22922b9 100644
--- a/libc/bionic/getauxval.cpp
+++ b/libc/bionic/getauxval.cpp
@@ -31,6 +31,7 @@
 #include <sys/auxv.h>
 #include <private/bionic_auxv.h>
 #include <elf.h>
+#include <errno.h>
 
 __LIBC_HIDDEN__ ElfW(auxv_t)* __libc_auxv = NULL;
 
@@ -40,5 +41,6 @@
       return v->a_un.a_val;
     }
   }
+  errno = ENOENT;
   return 0;
 }
diff --git a/libc/bionic/getcwd.cpp b/libc/bionic/getcwd.cpp
index 47c807f..a8bbcf3 100644
--- a/libc/bionic/getcwd.cpp
+++ b/libc/bionic/getcwd.cpp
@@ -26,8 +26,10 @@
  * SUCH DAMAGE.
  */
 
-#include <unistd.h>
 #include <errno.h>
+#include <malloc.h>
+#include <string.h>
+#include <unistd.h>
 
 extern "C" int __getcwd(char* buf, size_t size);
 
diff --git a/libc/bionic/gethostname.c b/libc/bionic/gethostname.c
deleted file mode 100644
index 5d3d7d9..0000000
--- a/libc/bionic/gethostname.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/utsname.h>
-
-int gethostname(char*  buff, size_t  buflen)
-{
-    struct utsname  name;
-    int             result = 0;
-
-    result = uname(&name);
-    if (result != -1)
-    {
-        int  namelen = strlen(name.nodename);
-
-        if ((int)buflen < namelen+1) {
-            errno = EINVAL;
-            result = -1;
-        } else {
-            memcpy( buff, name.nodename, namelen+1 );
-        }
-    }
-    return result;
-}
diff --git a/libc/bionic/gethostname.cpp b/libc/bionic/gethostname.cpp
new file mode 100644
index 0000000..962fea1
--- /dev/null
+++ b/libc/bionic/gethostname.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <errno.h>
+#include <string.h>
+#include <sys/utsname.h>
+#include <unistd.h>
+
+int gethostname(char* buf, size_t n) {
+  struct utsname name;
+  if (uname(&name) == -1) {
+    return -1;
+  }
+
+  size_t name_length = static_cast<size_t>(strlen(name.nodename) + 1);
+  if (name_length > n) {
+    errno = ENAMETOOLONG;
+    return -1;
+  }
+
+  memcpy(buf, name.nodename, name_length);
+  return 0;
+}
diff --git a/libc/bionic/hash.h b/libc/bionic/hash.h
deleted file mode 100644
index 3b483f1..0000000
--- a/libc/bionic/hash.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 1999 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden). 
- * 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. Neither the name of KTH nor the names of its contributors may be
- *    used to endorse or promote products derived from this software without
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-/* $Heimdal: hash.h,v 1.1 1999/03/22 19:16:25 joda Exp $
-   $NetBSD: hash.h,v 1.1.1.3 2002/09/12 12:41:42 joda Exp $ */
-
-/* stuff in common between md4, md5, and sha1 */
-
-#ifndef __hash_h__
-#define __hash_h__
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef min
-#define min(a,b) (((a)>(b))?(b):(a))
-#endif
-
-/* Vector Crays doesn't have a good 32-bit type, or more precisely,
-   int32_t as defined by <bind/bitypes.h> isn't 32 bits, and we don't
-   want to depend in being able to redefine this type.  To cope with
-   this we have to clamp the result in some places to [0,2^32); no
-   need to do this on other machines.  Did I say this was a mess?
-   */
-
-#ifdef _CRAY
-#define CRAYFIX(X) ((X) & 0xffffffff)
-#else
-#define CRAYFIX(X) (X)
-#endif
-
-static inline u_int32_t
-cshift (u_int32_t x, unsigned int n)
-{
-    x = CRAYFIX(x);
-    return CRAYFIX((x << n) | (x >> (32 - n)));
-}
-
-#endif /* __hash_h__ */
diff --git a/libc/bionic/jemalloc.h b/libc/bionic/jemalloc.h
index feb1f43..98ea0ee 100644
--- a/libc/bionic/jemalloc.h
+++ b/libc/bionic/jemalloc.h
@@ -18,6 +18,7 @@
 #define LIBC_BIONIC_JEMALLOC_H_
 
 #include <jemalloc/jemalloc.h>
+#include <malloc.h>  // For struct mallinfo.
 
 // Need to wrap memalign since je_memalign fails on non-power of 2 alignments.
 #define je_memalign je_memalign_round_up_boundary
diff --git a/libc/bionic/lchown.cpp b/libc/bionic/lchown.cpp
index 95251db..24611a5 100644
--- a/libc/bionic/lchown.cpp
+++ b/libc/bionic/lchown.cpp
@@ -29,6 +29,7 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <unistd.h>
 
 int lchown(const char* path, uid_t uid, gid_t gid) {
   return fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW);
diff --git a/libc/bionic/legacy_32_bit_support.cpp b/libc/bionic/legacy_32_bit_support.cpp
index 73f77be..a107664 100644
--- a/libc/bionic/legacy_32_bit_support.cpp
+++ b/libc/bionic/legacy_32_bit_support.cpp
@@ -26,6 +26,8 @@
  * SUCH DAMAGE.
  */
 
+#undef _FORTIFY_SOURCE
+
 #include <errno.h>
 #include <fcntl.h>
 #include <stdarg.h>
@@ -40,9 +42,7 @@
 
 // System calls we need.
 extern "C" int __fcntl64(int, int, void*);
-extern "C" int __fstatfs64(int, size_t, struct statfs*);
 extern "C" int __llseek(int, unsigned long, unsigned long, off64_t*, int);
-extern "C" int __statfs64(const char*, size_t, struct statfs*);
 
 // For fcntl we use the fcntl64 system call to signal that we're using struct flock64.
 int fcntl(int fd, int cmd, ...) {
@@ -55,18 +55,6 @@
   return __fcntl64(fd, cmd, arg);
 }
 
-// For fstatfs we need to add the extra argument giving the kernel the size of the buffer.
-int fstatfs(int fd, struct statfs* stat) {
-  return __fstatfs64(fd, sizeof(*stat), stat);
-}
-__strong_alias(fstatfs64, fstatfs);
-
-// For statfs we need to add the extra argument giving the kernel the size of the buffer.
-int statfs(const char* path, struct statfs* stat) {
-  return __statfs64(path, sizeof(*stat), stat);
-}
-__strong_alias(statfs64, statfs);
-
 // For lseek64 we need to use the llseek system call which splits the off64_t in two and
 // returns the off64_t result via a pointer because 32-bit kernels can't return 64-bit results.
 off64_t lseek64(int fd, off64_t off, int whence) {
diff --git a/libc/bionic/lfs64_support.cpp b/libc/bionic/lfs64_support.cpp
index ab795f5..45d4f7f 100644
--- a/libc/bionic/lfs64_support.cpp
+++ b/libc/bionic/lfs64_support.cpp
@@ -17,11 +17,20 @@
 #include <ftw.h>
 #include <stdlib.h>
 
-int mkstemp64(char* filename) {
-  // Delegation will work in this case because all the transitive dependencies
-  // are already 64-bit ready. In particular, we don't have non-O_LARGEFILE
-  // open (our open is actually open64) and stat and stat64 are the same.
-  return mkstemp(filename);
+// Delegation will work in these cases because all the transitive dependencies
+// are already 64-bit ready. In particular, we don't have non-O_LARGEFILE
+// open (our open is actually open64) and stat and stat64 are the same.
+int mkstemp64(char* path) {
+  return mkstemp(path);
+}
+int mkostemp64(char* path, int flags) {
+  return mkostemp(path, flags);
+}
+int mkstemps64(char* path, int suffix_length) {
+  return mkstemps(path, suffix_length);
+}
+int mkostemps64(char* path, int suffix_length, int flags) {
+  return mkostemps(path, suffix_length, flags);
 }
 
 typedef int (*ftw_fn)(const char*, const struct stat*, int);
diff --git a/libc/bionic/libc_init_common.cpp b/libc/bionic/libc_init_common.cpp
index 950073a..36dc085 100644
--- a/libc/bionic/libc_init_common.cpp
+++ b/libc/bionic/libc_init_common.cpp
@@ -49,7 +49,7 @@
 extern "C" int __set_tls(void* ptr);
 extern "C" int __set_tid_address(int* tid_address);
 
-void __libc_init_vdso();
+__LIBC_HIDDEN__ void __libc_init_vdso();
 
 // Not public, but well-known in the BSDs.
 const char* __progname;
@@ -74,9 +74,7 @@
 void __libc_init_tls(KernelArgumentBlock& args) {
   __libc_auxv = args.auxv;
 
-  static void* tls[BIONIC_TLS_SLOTS];
   static pthread_internal_t main_thread;
-  main_thread.tls = tls;
 
   // Tell the kernel to clear our tid field when we exit, so we're like any other pthread.
   // As a side-effect, this tells us our pid (which is the same as the main thread's tid).
@@ -87,16 +85,17 @@
   // because things like environment variables with global scope live on it.
   // We also can't free the pthread_internal_t itself, since that lives on the main
   // thread's stack rather than on the heap.
+  // The main thread has no mmap allocated space for stack or pthread_internal_t.
+  main_thread.mmap_size = 0;
   pthread_attr_init(&main_thread.attr);
-  main_thread.attr.flags = PTHREAD_ATTR_FLAG_USER_ALLOCATED_STACK | PTHREAD_ATTR_FLAG_MAIN_THREAD;
   main_thread.attr.guard_size = 0; // The main thread has no guard page.
   main_thread.attr.stack_size = 0; // User code should never see this; we'll compute it when asked.
   // TODO: the main thread's sched_policy and sched_priority need to be queried.
 
-  __init_thread(&main_thread, false);
+  __init_thread(&main_thread);
   __init_tls(&main_thread);
   __set_tls(main_thread.tls);
-  tls[TLS_SLOT_BIONIC_PREINIT] = &args;
+  main_thread.tls[TLS_SLOT_BIONIC_PREINIT] = &args;
 
   __init_alternate_signal_stack(&main_thread);
 }
@@ -114,7 +113,7 @@
 
   // Get the main thread from TLS and add it to the thread list.
   pthread_internal_t* main_thread = __get_thread();
-  _pthread_internal_add(main_thread);
+  __pthread_internal_add(main_thread);
 
   __system_properties_init(); // Requires 'environ'.
 
@@ -129,33 +128,34 @@
  * entry in the list has value -1, the last one has value 0.
  */
 void __libc_fini(void* array) {
-  void** fini_array = reinterpret_cast<void**>(array);
-  const size_t minus1 = ~(size_t)0; /* ensure proper sign extension */
+  typedef void (*Dtor)();
+  Dtor* fini_array = reinterpret_cast<Dtor*>(array);
+  const Dtor minus1 = reinterpret_cast<Dtor>(static_cast<uintptr_t>(-1));
 
-  /* Sanity check - first entry must be -1 */
-  if (array == NULL || (size_t)fini_array[0] != minus1) {
+  // Sanity check - first entry must be -1.
+  if (array == NULL || fini_array[0] != minus1) {
     return;
   }
 
-  /* skip over it */
+  // Skip over it.
   fini_array += 1;
 
-  /* Count the number of destructors. */
+  // Count the number of destructors.
   int count = 0;
   while (fini_array[count] != NULL) {
     ++count;
   }
 
-  /* Now call each destructor in reverse order. */
+  // Now call each destructor in reverse order.
   while (count > 0) {
-    void (*func)() = (void (*)()) fini_array[--count];
+    Dtor dtor = fini_array[--count];
 
-    /* Sanity check, any -1 in the list is ignored */
-    if ((size_t)func == minus1) {
+    // Sanity check, any -1 in the list is ignored.
+    if (dtor == minus1) {
       continue;
     }
 
-    func();
+    dtor();
   }
 
 #ifndef LIBC_STATIC
diff --git a/libc/bionic/libc_logging.cpp b/libc/bionic/libc_logging.cpp
index 5655526..cb0b334 100644
--- a/libc/bionic/libc_logging.cpp
+++ b/libc/bionic/libc_logging.cpp
@@ -56,6 +56,7 @@
   EVENT_TYPE_LONG     = 1,
   EVENT_TYPE_STRING   = 2,
   EVENT_TYPE_LIST     = 3,
+  EVENT_TYPE_FLOAT    = 4,
 };
 
 struct BufferOutputStream {
@@ -75,10 +76,12 @@
       len = strlen(data);
     }
 
+    total += len;
+
     while (len > 0) {
       int avail = end_ - pos_;
       if (avail == 0) {
-        break;
+        return;
       }
       if (avail > len) {
         avail = len;
@@ -87,11 +90,10 @@
       pos_ += avail;
       pos_[0] = '\0';
       len -= avail;
-      total += avail;
     }
   }
 
-  int total;
+  size_t total;
 
  private:
   char* buffer_;
@@ -109,18 +111,19 @@
       len = strlen(data);
     }
 
+    total += len;
+
     while (len > 0) {
       int rc = TEMP_FAILURE_RETRY(write(fd_, data, len));
       if (rc == -1) {
-        break;
+        return;
       }
       data += rc;
       len -= rc;
-      total += rc;
     }
   }
 
-  int total;
+  size_t total;
 
  private:
   int fd_;
@@ -425,7 +428,7 @@
 }
 
 static int __libc_write_stderr(const char* tag, const char* msg) {
-  int fd = TEMP_FAILURE_RETRY(open("/dev/stderr", O_CLOEXEC | O_WRONLY));
+  int fd = TEMP_FAILURE_RETRY(open("/dev/stderr", O_CLOEXEC | O_WRONLY | O_APPEND));
   if (fd == -1) {
     return -1;
   }
@@ -436,7 +439,7 @@
   vec[1].iov_base = const_cast<char*>(": ");
   vec[1].iov_len = 2;
   vec[2].iov_base = const_cast<char*>(msg);
-  vec[2].iov_len = strlen(msg) + 1;
+  vec[2].iov_len = strlen(msg);
   vec[3].iov_base = const_cast<char*>("\n");
   vec[3].iov_len = 1;
 
@@ -446,8 +449,7 @@
 }
 
 #ifdef TARGET_USES_LOGD
-static int __libc_open_log_socket()
-{
+static int __libc_open_log_socket() {
   // ToDo: Ideally we want this to fail if the gid of the current
   // process is AID_LOGD, but will have to wait until we have
   // registered this in private/android_filesystem_config.h. We have
@@ -489,7 +491,6 @@
 static int __libc_write_log(int priority, const char* tag, const char* msg) {
 #ifdef TARGET_USES_LOGD
   int main_log_fd = __libc_open_log_socket();
-
   if (main_log_fd == -1) {
     // Try stderr instead.
     return __libc_write_stderr(tag, msg);
@@ -612,7 +613,7 @@
   if (tag != 0) {
     __libc_android_log_event_uid(tag);
   }
-  __libc_fatal("FORTIFY_SOURCE: %s. Calling abort().", msg);
+  __libc_fatal("FORTIFY: %s", msg);
 }
 
 static void __libc_fatal(const char* format, va_list args) {
@@ -620,12 +621,12 @@
   BufferOutputStream os(msg, sizeof(msg));
   out_vformat(os, format, args);
 
-  // log to stderr for the benefit of "adb shell" users.
+  // Log to stderr for the benefit of "adb shell" users.
   struct iovec iov[2] = {
-    {msg, strlen(msg)},
-    {const_cast<void*>(static_cast<const void*>("\n")), 1},
+    { msg, os.total },
+    { const_cast<char*>("\n"), 1 },
   };
-  writev(2, iov, 2);
+  TEMP_FAILURE_RETRY(writev(2, iov, 2));
 
   // Log to the log for the benefit of regular app developers (whose stdout and stderr are closed).
   __libc_write_log(ANDROID_LOG_FATAL, "libc", msg);
diff --git a/libc/bionic/libgen.cpp b/libc/bionic/libgen.cpp
index b98f504..2f29d7b 100644
--- a/libc/bionic/libgen.cpp
+++ b/libc/bionic/libgen.cpp
@@ -36,6 +36,9 @@
 
 #include "private/ThreadLocalBuffer.h"
 
+static ThreadLocalBuffer<char, MAXPATHLEN> g_basename_tls_buffer;
+static ThreadLocalBuffer<char, MAXPATHLEN> g_dirname_tls_buffer;
+
 __LIBC64_HIDDEN__ int basename_r(const char* path, char* buffer, size_t buffer_size) {
   const char* startp = NULL;
   const char* endp = NULL;
@@ -147,17 +150,14 @@
   return result;
 }
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(basename);
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(dirname);
-
 char* basename(const char* path) {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, basename, MAXPATHLEN);
-  int rc = basename_r(path, basename_tls_buffer, basename_tls_buffer_size);
-  return (rc < 0) ? NULL : basename_tls_buffer;
+  char* buf = g_basename_tls_buffer.get();
+  int rc = basename_r(path, buf, g_basename_tls_buffer.size());
+  return (rc < 0) ? NULL : buf;
 }
 
 char* dirname(const char* path) {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, dirname, MAXPATHLEN);
-  int rc = dirname_r(path, dirname_tls_buffer, dirname_tls_buffer_size);
-  return (rc < 0) ? NULL : dirname_tls_buffer;
+  char* buf = g_dirname_tls_buffer.get();
+  int rc = dirname_r(path, buf, g_dirname_tls_buffer.size());
+  return (rc < 0) ? NULL : buf;
 }
diff --git a/libc/bionic/locale.cpp b/libc/bionic/locale.cpp
index ddb49ce..b42b440 100644
--- a/libc/bionic/locale.cpp
+++ b/libc/bionic/locale.cpp
@@ -26,9 +26,14 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <locale.h>
 #include <pthread.h>
 #include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <time.h>
+#include <wchar.h>
 
 #include "private/bionic_macros.h"
 
@@ -53,15 +58,18 @@
   DISALLOW_COPY_AND_ASSIGN(__locale_t);
 };
 
+size_t __ctype_get_mb_cur_max() {
+  locale_t l = uselocale(NULL);
+  if (l == LC_GLOBAL_LOCALE) {
+    return __bionic_current_locale_is_utf8 ? 4 : 1;
+  } else {
+    return l->mb_cur_max;
+  }
+}
+
 static pthread_once_t g_locale_once = PTHREAD_ONCE_INIT;
 static lconv g_locale;
 
-// We don't use pthread_once for this so that we know when the resource (a TLS slot) will be taken.
-static pthread_key_t g_uselocale_key;
-__attribute__((constructor)) static void __bionic_tls_uselocale_key_init() {
-  pthread_key_create(&g_uselocale_key, NULL);
-}
-
 static void __locale_init() {
   g_locale.decimal_point = const_cast<char*>(".");
 
@@ -92,15 +100,6 @@
   g_locale.int_n_sign_posn = CHAR_MAX;
 }
 
-size_t __ctype_get_mb_cur_max() {
-  locale_t l = reinterpret_cast<locale_t>(pthread_getspecific(g_uselocale_key));
-  if (l == nullptr || l == LC_GLOBAL_LOCALE) {
-    return __bionic_current_locale_is_utf8 ? 4 : 1;
-  } else {
-    return l->mb_cur_max;
-  }
-}
-
 static bool __is_supported_locale(const char* locale) {
   return (strcmp(locale, "") == 0 ||
           strcmp(locale, "C") == 0 ||
@@ -123,8 +122,8 @@
 }
 
 locale_t newlocale(int category_mask, const char* locale_name, locale_t /*base*/) {
-  // Is 'category_mask' valid?
-  if ((category_mask & ~LC_ALL_MASK) != 0) {
+  // Are 'category_mask' and 'locale_name' valid?
+  if ((category_mask & ~LC_ALL_MASK) != 0 || locale_name == NULL) {
     errno = EINVAL;
     return NULL;
   }
@@ -157,7 +156,16 @@
   return const_cast<char*>(__bionic_current_locale_is_utf8 ? "C.UTF-8" : "C");
 }
 
+// We can't use a constructor to create g_uselocal_key, because it may be used in constructors.
+static pthread_once_t g_uselocale_once = PTHREAD_ONCE_INIT;
+static pthread_key_t g_uselocale_key;
+
+static void g_uselocale_key_init() {
+  pthread_key_create(&g_uselocale_key, NULL);
+}
+
 locale_t uselocale(locale_t new_locale) {
+  pthread_once(&g_uselocale_once, g_uselocale_key_init);
   locale_t old_locale = static_cast<locale_t>(pthread_getspecific(g_uselocale_key));
 
   // If this is the first call to uselocale(3) on this thread, we return LC_GLOBAL_LOCALE.
@@ -171,3 +179,47 @@
 
   return old_locale;
 }
+
+int strcasecmp_l(const char* s1, const char* s2, locale_t) {
+  return strcasecmp(s1, s2);
+}
+
+int strcoll_l(const char* s1, const char* s2, locale_t) {
+  return strcoll(s1, s2);
+}
+
+char* strerror_l(int error, locale_t) {
+  return strerror(error);
+}
+
+size_t strftime_l(char* s, size_t max, const char* format, const struct tm* tm, locale_t) {
+  return strftime(s, max, format, tm);
+}
+
+int strncasecmp_l(const char* s1, const char* s2, size_t n, locale_t) {
+  return strncasecmp(s1, s2, n);
+}
+
+long double strtold_l(const char* s, char** end_ptr, locale_t) {
+  return strtold(s, end_ptr);
+}
+
+long long strtoll_l(const char* s, char** end_ptr, int base, locale_t) {
+  return strtoll(s, end_ptr, base);
+}
+
+unsigned long long strtoull_l(const char* s, char** end_ptr, int base, locale_t) {
+  return strtoull(s, end_ptr, base);
+}
+
+size_t strxfrm_l(char* dst, const char* src, size_t n, locale_t) {
+  return strxfrm(dst, src, n);
+}
+
+int wcscasecmp_l(const wchar_t* ws1, const wchar_t* ws2, locale_t) {
+  return wcscasecmp(ws1, ws2);
+}
+
+int wcsncasecmp_l(const wchar_t* ws1, const wchar_t* ws2, size_t n, locale_t) {
+  return wcsncasecmp(ws1, ws2, n);
+}
diff --git a/libc/bionic/malloc_debug_common.cpp b/libc/bionic/malloc_debug_common.cpp
index 0b6a142..ee796c6 100644
--- a/libc/bionic/malloc_debug_common.cpp
+++ b/libc/bionic/malloc_debug_common.cpp
@@ -29,19 +29,19 @@
 // Contains definition of structures, global variables, and implementation of
 // routines that are used by malloc leak detection code and other components in
 // the system. The trick is that some components expect these data and
-// routines to be defined / implemented in libc.so library, regardless
-// whether or not MALLOC_LEAK_CHECK macro is defined. To make things even
-// more tricky, malloc leak detection code, implemented in
-// libc_malloc_debug.so also requires access to these variables and routines
-// (to fill allocation entry hash table, for example). So, all relevant
-// variables and routines are defined / implemented here and exported
-// to all, leak detection code and other components via dynamic (libc.so),
-// or static (libc.a) linking.
+// routines to be defined / implemented in libc.so, regardless whether or not
+// malloc leak detection code is going to run. To make things even more tricky,
+// malloc leak detection code, implemented in libc_malloc_debug.so also
+// requires access to these variables and routines (to fill allocation entry
+// hash table, for example). So, all relevant variables and routines are
+// defined / implemented here and exported to all, leak detection code and
+// other components via dynamic (libc.so), or static (libc.a) linking.
 
 #include "malloc_debug_common.h"
 
 #include <pthread.h>
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 
 #include "private/ScopedPthreadMutexLocker.h"
@@ -402,7 +402,7 @@
   }
 
   // Load .so that implements the required malloc debugging functionality.
-  void* malloc_impl_handle = dlopen(so_name, RTLD_LAZY);
+  void* malloc_impl_handle = dlopen(so_name, RTLD_NOW);
   if (malloc_impl_handle == NULL) {
     error_log("%s: Missing module %s required for malloc debug level %d: %s",
               getprogname(), so_name, g_malloc_debug_level, dlerror());
diff --git a/libc/bionic/malloc_debug_leak.cpp b/libc/bionic/malloc_debug_leak.cpp
index df0f997..64f2112 100644
--- a/libc/bionic/malloc_debug_leak.cpp
+++ b/libc/bionic/malloc_debug_leak.cpp
@@ -55,13 +55,6 @@
 #include "private/libc_logging.h"
 #include "private/ScopedPthreadMutexLocker.h"
 
-// This file should be included into the build only when
-// MALLOC_LEAK_CHECK, or MALLOC_QEMU_INSTRUMENT, or both
-// macros are defined.
-#ifndef MALLOC_LEAK_CHECK
-#error MALLOC_LEAK_CHECK is not defined.
-#endif  // !MALLOC_LEAK_CHECK
-
 extern int gMallocLeakZygoteChild;
 extern HashTable* g_hash_table;
 extern const MallocDebug* g_malloc_dispatch;
diff --git a/libc/bionic/malloc_debug_qemu.cpp b/libc/bionic/malloc_debug_qemu.cpp
index b3b604d..fa40b35 100644
--- a/libc/bionic/malloc_debug_qemu.cpp
+++ b/libc/bionic/malloc_debug_qemu.cpp
@@ -45,6 +45,7 @@
 #include <stdlib.h>
 #include <stddef.h>
 #include <stdio.h>
+#include <string.h>
 #include <fcntl.h>
 #include <sys/mman.h>
 #include <sys/param.h>
@@ -606,7 +607,7 @@
      * the memory mapped spaces into writes to an I/O port that emulator
      * "listens to" on the other end. Note that until we open and map that
      * device, logging to emulator's stdout will not be available. */
-    int fd = open("/dev/qemu_trace", O_RDWR);
+    int fd = open("/dev/qemu_trace", O_CLOEXEC | O_RDWR);
     if (fd < 0) {
         error_log("Unable to open /dev/qemu_trace");
         return false;
diff --git a/libc/bionic/malloc_info.cpp b/libc/bionic/malloc_info.cpp
new file mode 100644
index 0000000..99caedb
--- /dev/null
+++ b/libc/bionic/malloc_info.cpp
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include "malloc_info.h"
+
+#include <errno.h>
+#include "private/bionic_macros.h"
+
+class __LIBC_HIDDEN__ Elem {
+public:
+  // name must be valid throughout lifetime of the object.
+  explicit Elem(FILE* fp, const char* name,
+                const char* attr_fmt = nullptr, ...) {
+    this->fp = fp;
+    this->name = name;
+
+    fprintf(fp, "<%s", name);
+    if (attr_fmt != nullptr) {
+      va_list args;
+      va_start(args, attr_fmt);
+      fputc(' ', fp);
+      vfprintf(fp, attr_fmt, args);
+      va_end(args);
+    }
+    fputc('>', fp);
+  }
+
+  ~Elem() noexcept {
+    fprintf(fp, "</%s>", name);
+  }
+
+  void contents(const char* fmt, ...) {
+      va_list args;
+      va_start(args, fmt);
+      vfprintf(fp, fmt, args);
+      va_end(args);
+  }
+
+private:
+  FILE* fp;
+  const char* name;
+
+  DISALLOW_COPY_AND_ASSIGN(Elem);
+};
+
+int malloc_info(int options, FILE* fp) {
+  if (options != 0) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  Elem root(fp, "malloc", "version=\"jemalloc-1\"");
+
+  // Dump all of the large allocations in the arenas.
+  for (size_t i = 0; i < __mallinfo_narenas(); i++) {
+    struct mallinfo mi = __mallinfo_arena_info(i);
+    if (mi.hblkhd != 0) {
+      Elem arena_elem(fp, "heap", "nr=\"%d\"", i);
+      {
+        Elem(fp, "allocated-large").contents("%zu", mi.ordblks);
+        Elem(fp, "allocated-huge").contents("%zu", mi.uordblks);
+        Elem(fp, "allocated-bins").contents("%zu", mi.fsmblks);
+
+        size_t total = 0;
+        for (size_t j = 0; j < __mallinfo_nbins(); j++) {
+          struct mallinfo mi = __mallinfo_bin_info(i, j);
+          if (mi.ordblks != 0) {
+            Elem bin_elem(fp, "bin", "nr=\"%d\"", j);
+            Elem(fp, "allocated").contents("%zu", mi.ordblks);
+            Elem(fp, "nmalloc").contents("%zu", mi.uordblks);
+            Elem(fp, "ndalloc").contents("%zu", mi.fordblks);
+            total += mi.ordblks;
+          }
+        }
+        Elem(fp, "bins-total").contents("%zu", total);
+      }
+    }
+  }
+
+  return 0;
+}
diff --git a/libc/bionic/malloc_info.h b/libc/bionic/malloc_info.h
new file mode 100644
index 0000000..5fffae9
--- /dev/null
+++ b/libc/bionic/malloc_info.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#ifndef LIBC_BIONIC_MALLOC_INFO_H_
+#define LIBC_BIONIC_MALLOC_INFO_H_
+
+#include <malloc.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+__LIBC_HIDDEN__ size_t __mallinfo_narenas();
+__LIBC_HIDDEN__ size_t __mallinfo_nbins();
+__LIBC_HIDDEN__ struct mallinfo __mallinfo_arena_info(size_t);
+__LIBC_HIDDEN__ struct mallinfo __mallinfo_bin_info(size_t, size_t);
+
+__END_DECLS
+
+#endif // LIBC_BIONIC_MALLOC_INFO_H_
diff --git a/libc/bionic/memchr.c b/libc/bionic/memchr.c
deleted file mode 100644
index b14167a..0000000
--- a/libc/bionic/memchr.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <stddef.h>
-#include <string.h>
-
-void *memchr(const void *s, int c, size_t n)
-{
-    const unsigned char*  p   = s;
-    const unsigned char*  end = p + n;
-
-    for (;;) {
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-    }
-    if (p >= end)
-        return NULL;
-    else
-        return (void*) p;
-}
diff --git a/libc/bionic/memcpy.cpp b/libc/bionic/memcpy.cpp
deleted file mode 100644
index d527e85..0000000
--- a/libc/bionic/memcpy.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#undef _FORTIFY_SOURCE
-#include <string.h>
-#include <strings.h>
-
-// Our unoptimized memcpy just calls the best bcopy available.
-// (It's this way round rather than the opposite because we're based on BSD source.)
-void* memcpy(void* dst, const void* src, size_t n) {
-  bcopy(src, dst, n);
-  return dst;
-}
diff --git a/libc/bionic/memmove.c b/libc/bionic/memmove.c
deleted file mode 100644
index 39c766e..0000000
--- a/libc/bionic/memmove.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 MEMMOVE
-#include "upstream-openbsd/lib/libc/string/bcopy.c"
diff --git a/libc/bionic/mempcpy.cpp b/libc/bionic/mempcpy.cpp
new file mode 100644
index 0000000..b7b72f7
--- /dev/null
+++ b/libc/bionic/mempcpy.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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>
+
+void* mempcpy(void* dst, const void* src, size_t n) {
+  return reinterpret_cast<char*>(memcpy(dst, src, n)) + n;
+}
diff --git a/libc/bionic/memrchr.c b/libc/bionic/memrchr.c
deleted file mode 100644
index aeb5643..0000000
--- a/libc/bionic/memrchr.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <stddef.h>
-#include <string.h>
-
-void *memrchr(const void *s, int c, size_t n)
-{
-    if (n > 0) {
-        const char*  p = (const char*) s;
-        const char*  q = p + n;
-
-        while (1) {
-            q--; if (q < p || q[0] == (char) c) break;
-            q--; if (q < p || q[0] == (char) c) break;
-            q--; if (q < p || q[0] == (char) c) break;
-            q--; if (q < p || q[0] == (char) c) break;
-        }
-        if (q >= p)
-            return (void*)q;
-    }
-    return NULL;
-}
diff --git a/libc/bionic/mkfifo.cpp b/libc/bionic/mkfifo.cpp
index 08ffad1..a98b350 100644
--- a/libc/bionic/mkfifo.cpp
+++ b/libc/bionic/mkfifo.cpp
@@ -28,6 +28,12 @@
 
 #include <sys/stat.h>
 
+#include <fcntl.h>
+
 int mkfifo(const char* path, mode_t mode) {
-  return mknod(path, (mode & ~S_IFMT) | S_IFIFO, 0);
+  return mkfifoat(AT_FDCWD, path, mode);
+}
+
+int mkfifoat(int fd, const char* path, mode_t mode) {
+  return mknodat(fd, path, (mode & ~S_IFMT) | S_IFIFO, 0);
 }
diff --git a/libc/bionic/mntent.cpp b/libc/bionic/mntent.cpp
index 93b6915..d169e29 100644
--- a/libc/bionic/mntent.cpp
+++ b/libc/bionic/mntent.cpp
@@ -27,12 +27,43 @@
  */
 
 #include <mntent.h>
+#include <string.h>
 
-mntent* getmntent(FILE*) {
-  return NULL;
+#include "private/ThreadLocalBuffer.h"
+
+static ThreadLocalBuffer<mntent> g_getmntent_mntent_tls_buffer;
+static ThreadLocalBuffer<char, BUFSIZ> g_getmntent_strings_tls_buffer;
+
+mntent* getmntent(FILE* fp) {
+  return getmntent_r(fp, g_getmntent_mntent_tls_buffer.get(),
+                     g_getmntent_strings_tls_buffer.get(),
+                     g_getmntent_strings_tls_buffer.size());
 }
 
-mntent* getmntent_r(FILE*, struct mntent*, char*, int) {
+mntent* getmntent_r(FILE* fp, struct mntent* e, char* buf, int buf_len) {
+  memset(e, 0, sizeof(*e));
+  while (fgets(buf, buf_len, fp) != NULL) {
+    // Entries look like "proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0".
+    // That is: mnt_fsname mnt_dir mnt_type mnt_opts 0 0.
+    int fsname0, fsname1, dir0, dir1, type0, type1, opts0, opts1;
+    if (sscanf(buf, " %n%*s%n %n%*s%n %n%*s%n %n%*s%n %d %d",
+               &fsname0, &fsname1, &dir0, &dir1, &type0, &type1, &opts0, &opts1,
+               &e->mnt_freq, &e->mnt_passno) == 2) {
+      e->mnt_fsname = &buf[fsname0];
+      buf[fsname1] = '\0';
+
+      e->mnt_dir = &buf[dir0];
+      buf[dir1] = '\0';
+
+      e->mnt_type = &buf[type0];
+      buf[type1] = '\0';
+
+      e->mnt_opts = &buf[opts0];
+      buf[opts1] = '\0';
+
+      return e;
+    }
+  }
   return NULL;
 }
 
diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp
index 7600817..8b34495 100644
--- a/libc/bionic/ndk_cruft.cpp
+++ b/libc/bionic/ndk_cruft.cpp
@@ -26,11 +26,11 @@
  * SUCH DAMAGE.
  */
 
-// This file perpetuates the mistakes of the past, but only for 32-bit targets.
-#if !defined(__LP64__)
+// This file perpetuates the mistakes of the past.
 
 #include <ctype.h>
 #include <dirent.h>
+#include <errno.h>
 #include <inttypes.h>
 #include <pthread.h>
 #include <signal.h>
@@ -45,6 +45,11 @@
 #include <unistd.h>
 #include <wchar.h>
 
+#include "private/libc_logging.h"
+
+// The part is only for 32-bit targets.
+#if !defined(__LP64__)
+
 // These were accidentally declared in <unistd.h> because we stupidly used to inline
 // getpagesize() and __getpageshift(). Needed for backwards compatibility with old NDK apps.
 extern "C" {
@@ -235,6 +240,16 @@
   return signal(signum, handler);
 }
 
+#if !defined(__i386__)
+// This was removed from POSIX 2008.
+#undef bcopy
+extern "C" void bcopy(const void* src, void* dst, size_t n) {
+  memcpy(dst, src, n);
+}
+#else
+// x86 has an assembler implementation.
+#endif
+
 // sysv_signal() was never in POSIX.
 extern sighandler_t _signal(int signum, sighandler_t handler, int flags);
 extern "C" sighandler_t sysv_signal(int signum, sighandler_t handler) {
@@ -320,10 +335,37 @@
   return malloc_usable_size(ptr);
 }
 
+// In L we added a public pthread_gettid_np, but some apps were using the private API.
+extern "C" pid_t __pthread_gettid(pthread_t t) {
+  return pthread_gettid_np(t);
+}
+
 // Older versions of appportable used dlmalloc directly instead of malloc,
 // so export this compatibility shim that simply calls malloc.
 extern "C" void* dlmalloc(size_t size) {
   return malloc(size);
 }
 
-#endif
+#define __get_thread __real_get_thread
+#include "pthread_internal.h"
+#undef __get_thread
+// Various third-party apps contain a backport of our pthread_rwlock implementation that uses this.
+extern "C" pthread_internal_t* __get_thread() {
+  return __real_get_thread();
+}
+
+#endif // !defined(__LP64__)
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" char* getusershell() {
+  return NULL;
+}
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" void setusershell() { }
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" void endusershell() { }
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" void endpwent() { }
diff --git a/libc/bionic/new.cpp b/libc/bionic/new.cpp
index fcfd1bd..cd84c2e 100644
--- a/libc/bionic/new.cpp
+++ b/libc/bionic/new.cpp
@@ -38,11 +38,11 @@
     return p;
 }
 
-void  operator delete(void* ptr) {
+void  operator delete(void* ptr) throw() {
     free(ptr);
 }
 
-void  operator delete[](void* ptr) {
+void  operator delete[](void* ptr) throw() {
     free(ptr);
 }
 
@@ -54,10 +54,10 @@
     return malloc(size);
 }
 
-void  operator delete(void* ptr, const std::nothrow_t&) {
+void  operator delete(void* ptr, const std::nothrow_t&) throw() {
     free(ptr);
 }
 
-void  operator delete[](void* ptr, const std::nothrow_t&) {
+void  operator delete[](void* ptr, const std::nothrow_t&) throw() {
     free(ptr);
 }
diff --git a/libc/bionic/open.cpp b/libc/bionic/open.cpp
index bd832c0..a6d8086 100644
--- a/libc/bionic/open.cpp
+++ b/libc/bionic/open.cpp
@@ -54,7 +54,7 @@
   if ((flags & O_CREAT) != 0) {
     va_list args;
     va_start(args, flags);
-    mode = (mode_t) va_arg(args, int);
+    mode = static_cast<mode_t>(va_arg(args, int));
     va_end(args);
   }
 
@@ -76,7 +76,7 @@
   if ((flags & O_CREAT) != 0) {
     va_list args;
     va_start(args, flags);
-    mode = (mode_t) va_arg(args, int);
+    mode = static_cast<mode_t>(va_arg(args, int));
     va_end(args);
   }
 
diff --git a/libc/bionic/pathconf.c b/libc/bionic/pathconf.c
deleted file mode 100644
index cf81272..0000000
--- a/libc/bionic/pathconf.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <pathconf.h>
-#include <sys/vfs.h>
-#include <sys/limits.h>
-#include <errno.h>
-
-/* these may not be defined yet by our headers */
-#ifndef _POSIX_VDISABLE
-#define _POSIX_VDISABLE  -1
-#endif
-
-#ifndef _POSIX_SYNC_IO
-#define _POSIX_SYNC_IO  -1
-#endif
-
-#ifndef _POSIX_PRIO_IO
-#define _POSIX_PRIO_IO  -1
-#endif
-
-#ifndef _POSIX_ASYNC_IO
-#define _POSIX_ASYNC_IO  -1
-#endif
-
-
-static long
-__filesizebits( struct statfs*  s )
-{
-#define   EOL_MAGIC   0x0000U
-
-    /* list of known 64-bit aware filesystems */
-    static const uint32_t  known64[] = {
-        EXT2_SUPER_MAGIC,
-        UFS_MAGIC,
-        REISERFS_SUPER_MAGIC,
-        XFS_SUPER_MAGIC,
-        SMB_SUPER_MAGIC,
-        UDF_SUPER_MAGIC,
-        JFS_SUPER_MAGIC,
-        NTFS_SB_MAGIC,
-        VXFS_SUPER_MAGIC,
-        EOL_MAGIC
-    };
-    int  nn = 0;
-
-    for (; known64[nn] != EOL_MAGIC; ++nn) {
-        if (known64[nn] == s->f_type) {
-            return 64;
-        }
-    }
-    return 32;
-}
-
-
-static long
-__link_max( struct statfs*  s )
-{
-    // These constant values were taken from kernel headers.
-    // They're not available in uapi headers.
-    static const struct { uint32_t  type; int  max; }  knownMax[] =
-    {
-        { EXT2_SUPER_MAGIC, 32000 },
-        { EXT3_SUPER_MAGIC, 32000 },
-        { MINIX_SUPER_MAGIC, 250 },
-        { MINIX2_SUPER_MAGIC, 65530 },
-        { REISERFS_SUPER_MAGIC, 0xffff - 1000 },
-        { UFS_MAGIC, 32000 },
-        { EOL_MAGIC, 0 }
-    };
-    int   nn = 0;
-
-    for (; knownMax[nn].type != EOL_MAGIC; ++nn) {
-        if (knownMax[nn].type == s->f_type) {
-            return knownMax[nn].max;
-        }
-    }
-    return LINK_MAX;
-}
-
-static long
-__2_symlinks( struct statfs*  s )
-{
-    /* list of know filesystems that don't support symlinks */
-    static const uint32_t  knownNoSymlinks[] = {
-        ADFS_SUPER_MAGIC, BFS_MAGIC, CRAMFS_MAGIC,
-        EFS_SUPER_MAGIC, MSDOS_SUPER_MAGIC, NTFS_SB_MAGIC,
-        QNX4_SUPER_MAGIC,
-        EOL_MAGIC
-    };
-    int  nn = 0;
-
-    for (; knownNoSymlinks[nn] != EOL_MAGIC; ++nn) {
-        if (knownNoSymlinks[nn] == s->f_type) {
-            return 0;
-        }
-    }
-    return 1;
-}
-
-static long
-__name_max( struct statfs*  s )
-{
-    return s->f_namelen;
-}
-
-long
-pathconf(const char *path, int name)
-{
-    struct statfs  buf;
-    int            ret = statfs( path, &buf );
-
-    if (ret < 0)
-        return -1;
-
-    switch (name) {
-    case _PC_FILESIZEBITS:
-        return __filesizebits(&buf);
-
-    case _PC_LINK_MAX:
-        return __link_max(&buf);
-
-    case _PC_MAX_CANON:
-        return MAX_CANON;
-
-    case _PC_MAX_INPUT:
-        return MAX_INPUT;
-
-    case _PC_NAME_MAX:
-        return __name_max(&buf);
-
-    case _PC_PATH_MAX:
-        return PATH_MAX;
-
-    case _PC_PIPE_BUF:
-        return PIPE_BUF;
-
-    case _PC_2_SYMLINKS:
-        return __2_symlinks(&buf);
-
-#if 0  /* don't know what to do there, the specs are really weird */
-    case _PC_ALLOC_SIZE_MIN:
-    case _PC_REC_INCR_XFER_SIZE:
-    case _PC_REC_MAX_XFER_SIZE:
-    case _PC_REC_MIN_XFER_SIZE:
-    case _PC_REC_XFER_ALIGN:
-#endif
-
-    case _PC_SYMLINK_MAX:
-        return -1;  /* no limit */
-
-    case _PC_CHOWN_RESTRICTED:
-        return _POSIX_CHOWN_RESTRICTED;
-
-    case _PC_NO_TRUNC:
-        return _POSIX_NO_TRUNC;
-
-    case _PC_VDISABLE:
-        return _POSIX_VDISABLE;
-
-    case _PC_ASYNC_IO:
-        return _POSIX_ASYNC_IO;
-
-    case _PC_PRIO_IO:
-        return _POSIX_PRIO_IO;
-
-    case _PC_SYNC_IO:
-        return _POSIX_SYNC_IO;
-
-    default:
-        errno = EINVAL;
-        return -1;
-    }
-}
-
-long fpathconf(int fildes, int name)
-{
-    struct statfs  buf;
-    int            ret = fstatfs(fildes, &buf);
-
-    if (ret < 0)
-        return -1;
-
-    switch (name) {
-    case _PC_FILESIZEBITS:
-        return __filesizebits(&buf);
-
-    case _PC_LINK_MAX:
-        return __link_max(&buf);
-
-    case _PC_MAX_CANON:
-        return MAX_CANON;
-
-    case _PC_MAX_INPUT:
-        return MAX_INPUT;
-
-    case _PC_NAME_MAX:
-        return __name_max(&buf);
-
-    case _PC_PATH_MAX:
-        return PATH_MAX;
-
-    case _PC_PIPE_BUF:
-        return PIPE_BUF;
-
-    case _PC_2_SYMLINKS:
-        return __2_symlinks(&buf);
-
-#if 0  /* don't know what to do there, the specs are really weird */
-    case _PC_ALLOC_SIZE_MIN:
-    case _PC_REC_INCR_XFER_SIZE:
-    case _PC_REC_MAX_XFER_SIZE:
-    case _PC_REC_MIN_XFER_SIZE:
-    case _PC_REC_XFER_ALIGN:
-#endif
-
-    case _PC_SYMLINK_MAX:
-        return -1;  /* no limit */
-
-    case _PC_CHOWN_RESTRICTED:
-        return _POSIX_CHOWN_RESTRICTED;
-
-    case _PC_NO_TRUNC:
-        return _POSIX_NO_TRUNC;
-
-    case _PC_VDISABLE:
-        return _POSIX_VDISABLE;
-
-    case _PC_ASYNC_IO:
-        return _POSIX_ASYNC_IO;
-
-    case _PC_PRIO_IO:
-        return _POSIX_PRIO_IO;
-
-    case _PC_SYNC_IO:
-        return _POSIX_SYNC_IO;
-
-    default:
-        errno = EINVAL;
-        return -1;
-    }
-}
diff --git a/libc/bionic/pathconf.cpp b/libc/bionic/pathconf.cpp
new file mode 100644
index 0000000..e6f5742
--- /dev/null
+++ b/libc/bionic/pathconf.cpp
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <errno.h>
+#include <sys/limits.h>
+#include <sys/vfs.h>
+
+static long __filesizebits(const struct statfs& s) {
+  switch (s.f_type) {
+    case JFFS2_SUPER_MAGIC:
+    case MSDOS_SUPER_MAGIC:
+    case NCP_SUPER_MAGIC:
+      return 32;
+  }
+  // There won't be any new 32-bit file systems.
+  return 64;
+}
+
+static long __link_max(const struct statfs& s) {
+  // These constant values were taken from kernel headers.
+  // They're not available in uapi headers.
+  switch (s.f_type) {
+    case EXT2_SUPER_MAGIC:
+      return 32000;
+    case MINIX_SUPER_MAGIC:
+      return 250;
+    case MINIX2_SUPER_MAGIC:
+      return 65530;
+    case REISERFS_SUPER_MAGIC:
+      return 0xffff - 1000;
+    case UFS_MAGIC:
+      return 32000;
+  }
+  return LINK_MAX;
+}
+
+static long __2_symlinks(const struct statfs& s) {
+  switch (s.f_type) {
+    case ADFS_SUPER_MAGIC:
+    case BFS_MAGIC:
+    case CRAMFS_MAGIC:
+    case EFS_SUPER_MAGIC:
+    case MSDOS_SUPER_MAGIC:
+    case QNX4_SUPER_MAGIC:
+      return 0;
+  }
+  return 1;
+}
+
+static long __pathconf(const struct statfs& s, int name) {
+  switch (name) {
+    case _PC_FILESIZEBITS:
+      return __filesizebits(s);
+
+    case _PC_LINK_MAX:
+      return __link_max(s);
+
+    case _PC_MAX_CANON:
+      return MAX_CANON;
+
+    case _PC_MAX_INPUT:
+      return MAX_INPUT;
+
+    case _PC_NAME_MAX:
+      return s.f_namelen;
+
+    case _PC_PATH_MAX:
+      return PATH_MAX;
+
+    case _PC_PIPE_BUF:
+      return PIPE_BUF;
+
+    case _PC_2_SYMLINKS:
+      return __2_symlinks(s);
+
+    case _PC_ALLOC_SIZE_MIN:  /* fall through */
+    case _PC_REC_XFER_ALIGN:
+      return s.f_frsize;
+
+    case _PC_REC_MIN_XFER_SIZE:
+      return s.f_bsize;
+
+#if 0
+    case _PC_REC_INCR_XFER_SIZE:
+    case _PC_REC_MAX_XFER_SIZE:
+#endif
+
+    case _PC_SYMLINK_MAX:
+      return -1; /* no limit */
+
+    case _PC_CHOWN_RESTRICTED:
+      return _POSIX_CHOWN_RESTRICTED;
+
+    case _PC_NO_TRUNC:
+      return _POSIX_NO_TRUNC;
+
+    case _PC_VDISABLE:
+      return _POSIX_VDISABLE;
+
+    case _PC_ASYNC_IO:
+      return -1;
+
+    case _PC_PRIO_IO:
+      return -1;
+
+    case _PC_SYNC_IO:
+      return -1;
+
+    default:
+      errno = EINVAL;
+      return -1;
+  }
+}
+
+long pathconf(const char* path, int name) {
+  struct statfs sb;
+  if (statfs(path, &sb) == -1) {
+    return -1;
+  }
+  return __pathconf(sb, name);
+}
+
+long fpathconf(int fd, int name) {
+  struct statfs sb;
+  if (fstatfs(fd, &sb) == -1) {
+    return -1;
+  }
+  return __pathconf(sb, name);
+}
diff --git a/libc/bionic/poll.cpp b/libc/bionic/poll.cpp
index ebb318d..23ef90a 100644
--- a/libc/bionic/poll.cpp
+++ b/libc/bionic/poll.cpp
@@ -26,6 +26,8 @@
  * SUCH DAMAGE.
  */
 
+#undef _FORTIFY_SOURCE
+#include <errno.h>
 #include <sys/poll.h>
 #include <sys/select.h>
 
diff --git a/libc/bionic/posix_madvise.cpp b/libc/bionic/posix_madvise.cpp
new file mode 100644
index 0000000..d77be01
--- /dev/null
+++ b/libc/bionic/posix_madvise.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <errno.h>
+#include <sys/mman.h>
+
+#include "private/ErrnoRestorer.h"
+
+int posix_madvise(void* addr, size_t len, int advice) {
+  ErrnoRestorer errno_restorer;
+
+  // Don't call madvise() on POSIX_MADV_DONTNEED, it will make the space not available.
+  if (advice == POSIX_MADV_DONTNEED) {
+    return 0;
+  }
+  return (madvise(addr, len, advice) == 0 ? 0 : errno);
+}
diff --git a/libc/bionic/posix_timers.cpp b/libc/bionic/posix_timers.cpp
index 3c664d9..c8f71c8 100644
--- a/libc/bionic/posix_timers.cpp
+++ b/libc/bionic/posix_timers.cpp
@@ -26,13 +26,15 @@
  * SUCH DAMAGE.
  */
 
-#include "pthread_internal.h"
-#include "private/bionic_futex.h"
 #include "private/kernel_sigset_t.h"
 
 #include <errno.h>
+#include <malloc.h>
+#include <pthread.h>
+#include <stdatomic.h>
 #include <stdio.h>
 #include <string.h>
+#include <time.h>
 
 // System calls.
 extern "C" int __rt_sigtimedwait(const sigset_t*, siginfo_t*, const struct timespec*, size_t);
@@ -58,11 +60,11 @@
 
   int sigev_notify;
 
-  // These fields are only needed for a SIGEV_THREAD timer.
+  // The fields below are only needed for a SIGEV_THREAD timer.
   pthread_t callback_thread;
   void (*callback)(sigval_t);
   sigval_t callback_argument;
-  volatile bool armed;
+  atomic_bool deleted;  // Set when the timer is deleted, to prevent further calling of callback.
 };
 
 static __kernel_timer_t to_kernel_timer_id(timer_t timer) {
@@ -84,8 +86,13 @@
       continue;
     }
 
-    if (si.si_code == SI_TIMER && timer->armed) {
+    if (si.si_code == SI_TIMER) {
       // This signal was sent because a timer fired, so call the callback.
+
+      // All events to the callback will be ignored when the timer is deleted.
+      if (atomic_load(&timer->deleted) == true) {
+        continue;
+      }
       timer->callback(timer->callback_argument);
     } else if (si.si_code == SI_TKILL) {
       // This signal was sent because someone wants us to exit.
@@ -96,9 +103,7 @@
 }
 
 static void __timer_thread_stop(PosixTimer* timer) {
-  // Immediately mark the timer as disarmed so even if some events
-  // continue to happen, the callback won't be called.
-  timer->armed = false;
+  atomic_store(&timer->deleted, true);
   pthread_kill(timer->callback_thread, TIMER_SIGNAL);
 }
 
@@ -125,7 +130,7 @@
   // Otherwise, this must be SIGEV_THREAD timer...
   timer->callback = evp->sigev_notify_function;
   timer->callback_argument = evp->sigev_value;
-  timer->armed = false;
+  atomic_init(&timer->deleted, false);
 
   // Check arguments that the kernel doesn't care about but we do.
   if (timer->callback == NULL) {
@@ -169,10 +174,10 @@
     return -1;
   }
 
-  // Give the thread a meaningful name.
+  // Give the thread a specific meaningful name.
   // It can't do this itself because the kernel timer isn't created until after it's running.
-  char name[32];
-  snprintf(name, sizeof(name), "POSIX interval timer %d", to_kernel_timer_id(timer));
+  char name[16]; // 16 is the kernel-imposed limit.
+  snprintf(name, sizeof(name), "POSIX timer %d", to_kernel_timer_id(timer));
   pthread_setname_np(timer->callback_thread, name);
 
   *timer_id = timer;
@@ -198,25 +203,19 @@
   return 0;
 }
 
-// http://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_getoverrun.html
+// http://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_gettime.html
 int timer_gettime(timer_t id, itimerspec* ts) {
   return __timer_gettime(to_kernel_timer_id(id), ts);
 }
 
-// http://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_getoverrun.html
+// http://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_settime.html
+// When using timer_settime to disarm a repeatable SIGEV_THREAD timer with a very small
+// period (like below 1ms), the kernel may continue to send events to the callback thread
+// for a few extra times. This behavior is fine because in POSIX standard: The effect of
+// disarming or resetting a timer with pending expiration notifications is unspecified.
 int timer_settime(timer_t id, int flags, const itimerspec* ts, itimerspec* ots) {
   PosixTimer* timer= reinterpret_cast<PosixTimer*>(id);
-  int rc = __timer_settime(timer->kernel_timer_id, flags, ts, ots);
-  if (rc == 0) {
-    // Mark the timer as either being armed or disarmed. This avoids the
-    // callback being called after the disarm for SIGEV_THREAD timers only.
-    if (ts->it_value.tv_sec != 0 || ts->it_value.tv_nsec != 0) {
-      timer->armed = true;
-    } else {
-      timer->armed = false;
-    }
-  }
-  return rc;
+  return __timer_settime(timer->kernel_timer_id, flags, ts, ots);
 }
 
 // http://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_getoverrun.html
diff --git a/libc/bionic/pthread_accessor.h b/libc/bionic/pthread_accessor.h
deleted file mode 100644
index df4a5a2..0000000
--- a/libc/bionic/pthread_accessor.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#ifndef PTHREAD_ACCESSOR_H
-#define PTHREAD_ACCESSOR_H
-
-#include <pthread.h>
-
-#include "private/bionic_macros.h"
-#include "pthread_internal.h"
-
-class pthread_accessor {
- public:
-  explicit pthread_accessor(pthread_t desired_thread) {
-    Lock();
-    for (thread_ = g_thread_list; thread_ != NULL; thread_ = thread_->next) {
-      if (thread_ == reinterpret_cast<pthread_internal_t*>(desired_thread)) {
-        break;
-      }
-    }
-  }
-
-  ~pthread_accessor() {
-    Unlock();
-  }
-
-  void Unlock() {
-    if (is_locked_) {
-      is_locked_ = false;
-      thread_ = NULL;
-      pthread_mutex_unlock(&g_thread_list_lock);
-    }
-  }
-
-  pthread_internal_t& operator*() const { return *thread_; }
-  pthread_internal_t* operator->() const { return thread_; }
-  pthread_internal_t* get() const { return thread_; }
-
- private:
-  pthread_internal_t* thread_;
-  bool is_locked_;
-
-  void Lock() {
-    pthread_mutex_lock(&g_thread_list_lock);
-    is_locked_ = true;
-  }
-
-  DISALLOW_COPY_AND_ASSIGN(pthread_accessor);
-};
-
-#endif // PTHREAD_ACCESSOR_H
diff --git a/libc/bionic/pthread_atfork.cpp b/libc/bionic/pthread_atfork.cpp
index b845f7d..093ffd2 100644
--- a/libc/bionic/pthread_atfork.cpp
+++ b/libc/bionic/pthread_atfork.cpp
@@ -28,6 +28,9 @@
 
 #include <errno.h>
 #include <pthread.h>
+#include <stdlib.h>
+
+#include "private/bionic_macros.h"
 
 struct atfork_t {
   atfork_t* next;
@@ -36,79 +39,143 @@
   void (*prepare)(void);
   void (*child)(void);
   void (*parent)(void);
+
+  void* dso_handle;
 };
 
-struct atfork_list_t {
-  atfork_t* first;
-  atfork_t* last;
+class atfork_list_t {
+ public:
+  atfork_list_t() : first_(nullptr), last_(nullptr) {}
+
+  template<typename F>
+  void walk_forward(F f) {
+    for (atfork_t* it = first_; it != nullptr; it = it->next) {
+      f(it);
+    }
+  }
+
+  template<typename F>
+  void walk_backwards(F f) {
+    for (atfork_t* it = last_; it != nullptr; it = it->prev) {
+      f(it);
+    }
+  }
+
+  void push_back(atfork_t* entry) {
+    entry->next = nullptr;
+    entry->prev = last_;
+    if (entry->prev != nullptr) {
+      entry->prev->next = entry;
+    }
+    if (first_ == nullptr) {
+      first_ = entry;
+    }
+    last_ = entry;
+  }
+
+  template<typename F>
+  void remove_if(F predicate) {
+    atfork_t* it = first_;
+    while (it != nullptr) {
+      if (predicate(it)) {
+        atfork_t* entry = it;
+        it = it->next;
+        remove(entry);
+      } else {
+        it = it->next;
+      }
+    }
+  }
+
+ private:
+  void remove(atfork_t* entry) {
+    if (entry->prev != nullptr) {
+      entry->prev->next = entry->next;
+    } else {
+      first_ = entry->next;
+    }
+
+    if (entry->next != nullptr) {
+      entry->next->prev = entry->prev;
+    } else {
+      last_ = entry->prev;
+    }
+
+    free(entry);
+  }
+
+  atfork_t* first_;
+  atfork_t* last_;
+
+  DISALLOW_COPY_AND_ASSIGN(atfork_list_t);
 };
 
-static pthread_mutex_t g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
-static atfork_list_t g_atfork_list = { NULL, NULL };
+static pthread_mutex_t g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+static atfork_list_t g_atfork_list;
 
 void __bionic_atfork_run_prepare() {
   // We lock the atfork list here, unlock it in the parent, and reset it in the child.
   // This ensures that nobody can modify the handler array between the calls
   // to the prepare and parent/child handlers.
-  //
-  // TODO: If a handler tries to mutate the list, they'll block. We should probably copy
-  // the list before forking, and have prepare, parent, and child all work on the consistent copy.
   pthread_mutex_lock(&g_atfork_list_mutex);
 
   // Call pthread_atfork() prepare handlers. POSIX states that the prepare
   // handlers should be called in the reverse order of the parent/child
   // handlers, so we iterate backwards.
-  for (atfork_t* it = g_atfork_list.last; it != NULL; it = it->prev) {
-    if (it->prepare != NULL) {
+  g_atfork_list.walk_backwards([](atfork_t* it) {
+    if (it->prepare != nullptr) {
       it->prepare();
     }
-  }
+  });
 }
 
 void __bionic_atfork_run_child() {
-  for (atfork_t* it = g_atfork_list.first; it != NULL; it = it->next) {
-    if (it->child != NULL) {
+  g_atfork_list.walk_forward([](atfork_t* it) {
+    if (it->child != nullptr) {
       it->child();
     }
-  }
+  });
 
-  g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
+  g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
 }
 
 void __bionic_atfork_run_parent() {
-  for (atfork_t* it = g_atfork_list.first; it != NULL; it = it->next) {
-    if (it->parent != NULL) {
+  g_atfork_list.walk_forward([](atfork_t* it) {
+    if (it->parent != nullptr) {
       it->parent();
     }
-  }
+  });
 
   pthread_mutex_unlock(&g_atfork_list_mutex);
 }
 
-int pthread_atfork(void (*prepare)(void), void (*parent)(void), void(*child)(void)) {
+// __register_atfork is the name used by glibc
+extern "C" int __register_atfork(void (*prepare)(void), void (*parent)(void),
+                                 void(*child)(void), void* dso) {
   atfork_t* entry = reinterpret_cast<atfork_t*>(malloc(sizeof(atfork_t)));
-  if (entry == NULL) {
+  if (entry == nullptr) {
     return ENOMEM;
   }
 
   entry->prepare = prepare;
   entry->parent = parent;
   entry->child = child;
+  entry->dso_handle = dso;
 
   pthread_mutex_lock(&g_atfork_list_mutex);
 
-  // Append 'entry' to the list.
-  entry->next = NULL;
-  entry->prev = g_atfork_list.last;
-  if (entry->prev != NULL) {
-    entry->prev->next = entry;
-  }
-  if (g_atfork_list.first == NULL) {
-    g_atfork_list.first = entry;
-  }
-  g_atfork_list.last = entry;
+  g_atfork_list.push_back(entry);
 
   pthread_mutex_unlock(&g_atfork_list_mutex);
 
   return 0;
 }
+
+extern "C" __LIBC_HIDDEN__ void __unregister_atfork(void* dso) {
+  pthread_mutex_lock(&g_atfork_list_mutex);
+  g_atfork_list.remove_if([&](const atfork_t* entry) {
+    return entry->dso_handle == dso;
+  });
+  pthread_mutex_unlock(&g_atfork_list_mutex);
+}
+
diff --git a/libc/bionic/pthread_attr.cpp b/libc/bionic/pthread_attr.cpp
index c65ccc1..7ad3431 100644
--- a/libc/bionic/pthread_attr.cpp
+++ b/libc/bionic/pthread_attr.cpp
@@ -152,9 +152,6 @@
 }
 
 int pthread_attr_getstack(const pthread_attr_t* attr, void** stack_base, size_t* stack_size) {
-  if ((attr->flags & PTHREAD_ATTR_FLAG_MAIN_THREAD) != 0) {
-    return __pthread_attr_getstack_main_thread(stack_base, stack_size);
-  }
   *stack_base = attr->stack_base;
   *stack_size = attr->stack_size;
   return 0;
@@ -171,7 +168,18 @@
 }
 
 int pthread_getattr_np(pthread_t t, pthread_attr_t* attr) {
-  *attr = reinterpret_cast<pthread_internal_t*>(t)->attr;
+  pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(t);
+  *attr = thread->attr;
+  // We prefer reading join_state here to setting thread->attr.flags in pthread_detach.
+  // Because data race exists in the latter case.
+  if (atomic_load(&thread->join_state) == THREAD_DETACHED) {
+    attr->flags |= PTHREAD_ATTR_FLAG_DETACHED;
+  }
+  // The main thread's stack information is not stored in thread->attr, and we need to
+  // collect that at runtime.
+  if (thread->tid == getpid()) {
+    return __pthread_attr_getstack_main_thread(&attr->stack_base, &attr->stack_size);
+  }
   return 0;
 }
 
diff --git a/libc/bionic/pthread_cond.cpp b/libc/bionic/pthread_cond.cpp
index e623b62..4a69da5 100644
--- a/libc/bionic/pthread_cond.cpp
+++ b/libc/bionic/pthread_cond.cpp
@@ -30,17 +30,24 @@
 
 #include <errno.h>
 #include <limits.h>
+#include <stdatomic.h>
 #include <sys/mman.h>
 #include <time.h>
 #include <unistd.h>
 
 #include "pthread_internal.h"
 
-#include "private/bionic_atomic_inline.h"
 #include "private/bionic_futex.h"
 #include "private/bionic_time_conversions.h"
 #include "private/bionic_tls.h"
 
+// XXX *technically* there is a race condition that could allow
+// XXX a signal to be missed.  If thread A is preempted in _wait()
+// XXX after unlocking the mutex and before waiting, and if other
+// XXX threads call signal or broadcast UINT_MAX/2 times (exactly),
+// XXX before thread A is scheduled again and calls futex_wait(),
+// XXX then the signal will be lost.
+
 // We use one bit in pthread_condattr_t (long) values as the 'shared' flag
 // and one bit for the clock type (CLOCK_REALTIME is ((clockid_t) 1), and
 // CLOCK_MONOTONIC is ((clockid_t) 0).). The rest of the bits are a counter.
@@ -57,7 +64,6 @@
 #define COND_GET_CLOCK(c) (((c) & COND_CLOCK_MASK) >> 1)
 #define COND_SET_CLOCK(attr, c) ((attr) | (c << 1))
 
-
 int pthread_condattr_init(pthread_condattr_t* attr) {
   *attr = 0;
   *attr |= PTHREAD_PROCESS_PRIVATE;
@@ -98,62 +104,78 @@
   return 0;
 }
 
+struct pthread_cond_internal_t {
+  atomic_uint state;
 
-// XXX *technically* there is a race condition that could allow
-// XXX a signal to be missed.  If thread A is preempted in _wait()
-// XXX after unlocking the mutex and before waiting, and if other
-// XXX threads call signal or broadcast UINT_MAX/2 times (exactly),
-// XXX before thread A is scheduled again and calls futex_wait(),
-// XXX then the signal will be lost.
-
-int pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t* attr) {
-  if (attr != NULL) {
-    cond->value = (*attr & COND_FLAGS_MASK);
-  } else {
-    cond->value = 0;
+  bool process_shared() {
+    return COND_IS_SHARED(atomic_load_explicit(&state, memory_order_relaxed));
   }
 
+  int get_clock() {
+    return COND_GET_CLOCK(atomic_load_explicit(&state, memory_order_relaxed));
+  }
+
+#if defined(__LP64__)
+  char __reserved[44];
+#endif
+};
+
+static_assert(sizeof(pthread_cond_t) == sizeof(pthread_cond_internal_t),
+              "pthread_cond_t should actually be pthread_cond_internal_t in implementation.");
+
+// For binary compatibility with old version of pthread_cond_t, we can't use more strict alignment
+// than 4-byte alignment.
+static_assert(alignof(pthread_cond_t) == 4,
+              "pthread_cond_t should fulfill the alignment requirement of pthread_cond_internal_t.");
+
+static pthread_cond_internal_t* __get_internal_cond(pthread_cond_t* cond_interface) {
+  return reinterpret_cast<pthread_cond_internal_t*>(cond_interface);
+}
+
+int pthread_cond_init(pthread_cond_t* cond_interface, const pthread_condattr_t* attr) {
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
+
+  unsigned int init_state = 0;
+  if (attr != NULL) {
+    init_state = (*attr & COND_FLAGS_MASK);
+  }
+  atomic_init(&cond->state, init_state);
+
   return 0;
 }
 
-int pthread_cond_destroy(pthread_cond_t* cond) {
-  cond->value = 0xdeadc04d;
+int pthread_cond_destroy(pthread_cond_t* cond_interface) {
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
+  atomic_store_explicit(&cond->state, 0xdeadc04d, memory_order_relaxed);
   return 0;
 }
 
 // This function is used by pthread_cond_broadcast and
 // pthread_cond_signal to atomically decrement the counter
-// then wake up 'counter' threads.
-static int __pthread_cond_pulse(pthread_cond_t* cond, int counter) {
-  int flags = (cond->value & COND_FLAGS_MASK);
-  while (true) {
-    int old_value = cond->value;
-    int new_value = ((old_value - COND_COUNTER_STEP) & COND_COUNTER_MASK) | flags;
-    if (__bionic_cmpxchg(old_value, new_value, &cond->value) == 0) {
-      break;
-    }
-  }
+// then wake up thread_count threads.
+static int __pthread_cond_pulse(pthread_cond_internal_t* cond, int thread_count) {
+  // We don't use a release/seq_cst fence here. Because pthread_cond_wait/signal can't be
+  // used as a method for memory synchronization by itself. It should always be used with
+  // pthread mutexes. Note that Spurious wakeups from pthread_cond_wait/timedwait may occur,
+  // so when using condition variables there is always a boolean predicate involving shared
+  // variables associated with each condition wait that is true if the thread should proceed.
+  // If the predicate is seen true before a condition wait, pthread_cond_wait/timedwait will
+  // not be called. That's why pthread_wait/signal pair can't be used as a method for memory
+  // synchronization. And it doesn't help even if we use any fence here.
 
-  // Ensure that all memory accesses previously made by this thread are
-  // visible to the woken thread(s).  On the other side, the "wait"
-  // code will issue any necessary barriers when locking the mutex.
-  //
-  // This may not strictly be necessary -- if the caller follows
-  // recommended practice and holds the mutex before signaling the cond
-  // var, the mutex ops will provide correct semantics.  If they don't
-  // hold the mutex, they're subject to race conditions anyway.
-  ANDROID_MEMBAR_FULL();
+  // The increase of value should leave flags alone, even if the value can overflows.
+  atomic_fetch_add_explicit(&cond->state, COND_COUNTER_STEP, memory_order_relaxed);
 
-  __futex_wake_ex(&cond->value, COND_IS_SHARED(cond->value), counter);
+  __futex_wake_ex(&cond->state, cond->process_shared(), thread_count);
   return 0;
 }
 
-__LIBC_HIDDEN__
-int __pthread_cond_timedwait_relative(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* reltime) {
-  int old_value = cond->value;
+static int __pthread_cond_timedwait_relative(pthread_cond_internal_t* cond, pthread_mutex_t* mutex,
+                                             const timespec* rel_timeout_or_null) {
+  unsigned int old_state = atomic_load_explicit(&cond->state, memory_order_relaxed);
 
   pthread_mutex_unlock(mutex);
-  int status = __futex_wait_ex(&cond->value, COND_IS_SHARED(cond->value), old_value, reltime);
+  int status = __futex_wait_ex(&cond->state, cond->process_shared(), old_state, rel_timeout_or_null);
   pthread_mutex_lock(mutex);
 
   if (status == -ETIMEDOUT) {
@@ -162,56 +184,68 @@
   return 0;
 }
 
-__LIBC_HIDDEN__
-int __pthread_cond_timedwait(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* abstime, clockid_t clock) {
+static int __pthread_cond_timedwait(pthread_cond_internal_t* cond, pthread_mutex_t* mutex,
+                                    const timespec* abs_timeout_or_null, clockid_t clock) {
   timespec ts;
-  timespec* tsp;
+  timespec* rel_timeout = NULL;
 
-  if (abstime != NULL) {
-    if (__timespec_from_absolute(&ts, abstime, clock) < 0) {
+  if (abs_timeout_or_null != NULL) {
+    rel_timeout = &ts;
+    if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, clock)) {
       return ETIMEDOUT;
     }
-    tsp = &ts;
-  } else {
-    tsp = NULL;
   }
 
-  return __pthread_cond_timedwait_relative(cond, mutex, tsp);
+  return __pthread_cond_timedwait_relative(cond, mutex, rel_timeout);
 }
 
-int pthread_cond_broadcast(pthread_cond_t* cond) {
-  return __pthread_cond_pulse(cond, INT_MAX);
+int pthread_cond_broadcast(pthread_cond_t* cond_interface) {
+  return __pthread_cond_pulse(__get_internal_cond(cond_interface), INT_MAX);
 }
 
-int pthread_cond_signal(pthread_cond_t* cond) {
-  return __pthread_cond_pulse(cond, 1);
+int pthread_cond_signal(pthread_cond_t* cond_interface) {
+  return __pthread_cond_pulse(__get_internal_cond(cond_interface), 1);
 }
 
-int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex) {
-  return __pthread_cond_timedwait(cond, mutex, NULL, COND_GET_CLOCK(cond->value));
+int pthread_cond_wait(pthread_cond_t* cond_interface, pthread_mutex_t* mutex) {
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
+  return __pthread_cond_timedwait(cond, mutex, NULL, cond->get_clock());
 }
 
-int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t * mutex, const timespec *abstime) {
-  return __pthread_cond_timedwait(cond, mutex, abstime, COND_GET_CLOCK(cond->value));
+int pthread_cond_timedwait(pthread_cond_t *cond_interface, pthread_mutex_t * mutex,
+                           const timespec *abstime) {
+
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
+  return __pthread_cond_timedwait(cond, mutex, abstime, cond->get_clock());
 }
 
 #if !defined(__LP64__)
 // TODO: this exists only for backward binary compatibility on 32 bit platforms.
-extern "C" int pthread_cond_timedwait_monotonic(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* abstime) {
-  return __pthread_cond_timedwait(cond, mutex, abstime, CLOCK_MONOTONIC);
+extern "C" int pthread_cond_timedwait_monotonic(pthread_cond_t* cond_interface,
+                                                pthread_mutex_t* mutex,
+                                                const timespec* abs_timeout) {
+
+  return __pthread_cond_timedwait(__get_internal_cond(cond_interface), mutex, abs_timeout,
+                                  CLOCK_MONOTONIC);
 }
 
-extern "C" int pthread_cond_timedwait_monotonic_np(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* abstime) {
-  return __pthread_cond_timedwait(cond, mutex, abstime, CLOCK_MONOTONIC);
+extern "C" int pthread_cond_timedwait_monotonic_np(pthread_cond_t* cond_interface,
+                                                   pthread_mutex_t* mutex,
+                                                   const timespec* abs_timeout) {
+  return pthread_cond_timedwait_monotonic(cond_interface, mutex, abs_timeout);
 }
 
-extern "C" int pthread_cond_timedwait_relative_np(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* reltime) {
-  return __pthread_cond_timedwait_relative(cond, mutex, reltime);
+extern "C" int pthread_cond_timedwait_relative_np(pthread_cond_t* cond_interface,
+                                                  pthread_mutex_t* mutex,
+                                                  const timespec* rel_timeout) {
+
+  return __pthread_cond_timedwait_relative(__get_internal_cond(cond_interface), mutex, rel_timeout);
 }
 
-extern "C" int pthread_cond_timeout_np(pthread_cond_t* cond, pthread_mutex_t* mutex, unsigned ms) {
+extern "C" int pthread_cond_timeout_np(pthread_cond_t* cond_interface,
+                                       pthread_mutex_t* mutex, unsigned ms) {
   timespec ts;
   timespec_from_ms(ts, ms);
-  return __pthread_cond_timedwait_relative(cond, mutex, &ts);
+  return pthread_cond_timedwait_relative_np(cond_interface, mutex, &ts);
 }
 #endif // !defined(__LP64__)
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp
index fc8afa2..dbdb180 100644
--- a/libc/bionic/pthread_create.cpp
+++ b/libc/bionic/pthread_create.cpp
@@ -29,12 +29,14 @@
 #include <pthread.h>
 
 #include <errno.h>
+#include <string.h>
 #include <sys/mman.h>
 #include <unistd.h>
 
 #include "pthread_internal.h"
 
 #include "private/bionic_macros.h"
+#include "private/bionic_prctl.h"
 #include "private/bionic_ssp.h"
 #include "private/bionic_tls.h"
 #include "private/libc_logging.h"
@@ -51,33 +53,52 @@
 
 // This code is used both by each new pthread and the code that initializes the main thread.
 void __init_tls(pthread_internal_t* thread) {
-  if (thread->user_allocated_stack()) {
-    // We don't know where the user got their stack, so assume the worst and zero the TLS area.
-    memset(&thread->tls[0], 0, BIONIC_TLS_SLOTS * sizeof(void*));
+  if (thread->mmap_size == 0) {
+    // If the TLS area was not allocated by mmap(), it may not have been cleared to zero.
+    // So assume the worst and zero the TLS area.
+    memset(thread->tls, 0, sizeof(thread->tls));
+    memset(thread->key_data, 0, sizeof(thread->key_data));
   }
 
   // Slot 0 must point to itself. The x86 Linux kernel reads the TLS from %fs:0.
   thread->tls[TLS_SLOT_SELF] = thread->tls;
   thread->tls[TLS_SLOT_THREAD_ID] = thread;
   // GCC looks in the TLS for the stack guard on x86, so copy it there from our global.
-  thread->tls[TLS_SLOT_STACK_GUARD] = (void*) __stack_chk_guard;
+  thread->tls[TLS_SLOT_STACK_GUARD] = reinterpret_cast<void*>(__stack_chk_guard);
 }
 
 void __init_alternate_signal_stack(pthread_internal_t* thread) {
   // Create and set an alternate signal stack.
-  stack_t ss;
-  ss.ss_sp = mmap(NULL, SIGSTKSZ, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
-  if (ss.ss_sp != MAP_FAILED) {
-    ss.ss_size = SIGSTKSZ;
+  void* stack_base = mmap(NULL, SIGNAL_STACK_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+  if (stack_base != MAP_FAILED) {
+
+    // Create a guard page to catch stack overflows in signal handlers.
+    if (mprotect(stack_base, PAGE_SIZE, PROT_NONE) == -1) {
+      munmap(stack_base, SIGNAL_STACK_SIZE);
+      return;
+    }
+    stack_t ss;
+    ss.ss_sp = reinterpret_cast<uint8_t*>(stack_base) + PAGE_SIZE;
+    ss.ss_size = SIGNAL_STACK_SIZE - PAGE_SIZE;
     ss.ss_flags = 0;
     sigaltstack(&ss, NULL);
-    thread->alternate_signal_stack = ss.ss_sp;
+    thread->alternate_signal_stack = stack_base;
+
+    // We can only use const static allocated string for mapped region name, as Android kernel
+    // uses the string pointer directly when dumping /proc/pid/maps.
+    prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ss.ss_sp, ss.ss_size, "thread signal stack");
   }
 }
 
-int __init_thread(pthread_internal_t* thread, bool add_to_thread_list) {
+int __init_thread(pthread_internal_t* thread) {
   int error = 0;
 
+  if (__predict_true((thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) == 0)) {
+    atomic_init(&thread->join_state, THREAD_NOT_JOINED);
+  } else {
+    atomic_init(&thread->join_state, THREAD_DETACHED);
+  }
+
   // Set the scheduling policy/priority of the thread.
   if (thread->attr.sched_policy != SCHED_NORMAL) {
     sched_param param;
@@ -94,36 +115,73 @@
 
   thread->cleanup_stack = NULL;
 
-  if (add_to_thread_list) {
-    _pthread_internal_add(thread);
-  }
-
   return error;
 }
 
-static void* __create_thread_stack(pthread_internal_t* thread) {
+static void* __create_thread_mapped_space(size_t mmap_size, size_t stack_guard_size) {
   // Create a new private anonymous map.
   int prot = PROT_READ | PROT_WRITE;
   int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE;
-  void* stack = mmap(NULL, thread->attr.stack_size, prot, flags, -1, 0);
-  if (stack == MAP_FAILED) {
+  void* space = mmap(NULL, mmap_size, prot, flags, -1, 0);
+  if (space == MAP_FAILED) {
     __libc_format_log(ANDROID_LOG_WARN,
                       "libc",
-                      "pthread_create failed: couldn't allocate %zd-byte stack: %s",
-                      thread->attr.stack_size, strerror(errno));
+                      "pthread_create failed: couldn't allocate %zu-bytes mapped space: %s",
+                      mmap_size, strerror(errno));
     return NULL;
   }
 
-  // Set the guard region at the end of the stack to PROT_NONE.
-  if (mprotect(stack, thread->attr.guard_size, PROT_NONE) == -1) {
+  // Stack is at the lower end of mapped space, stack guard region is at the lower end of stack.
+  // Set the stack guard region to PROT_NONE, so we can detect thread stack overflow.
+  if (mprotect(space, stack_guard_size, PROT_NONE) == -1) {
     __libc_format_log(ANDROID_LOG_WARN, "libc",
-                      "pthread_create failed: couldn't mprotect PROT_NONE %zd-byte stack guard region: %s",
-                      thread->attr.guard_size, strerror(errno));
-    munmap(stack, thread->attr.stack_size);
+                      "pthread_create failed: couldn't mprotect PROT_NONE %zu-byte stack guard region: %s",
+                      stack_guard_size, strerror(errno));
+    munmap(space, mmap_size);
     return NULL;
   }
 
-  return stack;
+  return space;
+}
+
+static int __allocate_thread(pthread_attr_t* attr, pthread_internal_t** threadp, void** child_stack) {
+  size_t mmap_size;
+  uint8_t* stack_top;
+
+  if (attr->stack_base == NULL) {
+    // The caller didn't provide a stack, so allocate one.
+    // Make sure the stack size and guard size are multiples of PAGE_SIZE.
+    mmap_size = BIONIC_ALIGN(attr->stack_size + sizeof(pthread_internal_t), PAGE_SIZE);
+    attr->guard_size = BIONIC_ALIGN(attr->guard_size, PAGE_SIZE);
+    attr->stack_base = __create_thread_mapped_space(mmap_size, attr->guard_size);
+    if (attr->stack_base == NULL) {
+      return EAGAIN;
+    }
+    stack_top = reinterpret_cast<uint8_t*>(attr->stack_base) + mmap_size;
+  } else {
+    // Remember the mmap size is zero and we don't need to free it.
+    mmap_size = 0;
+    stack_top = reinterpret_cast<uint8_t*>(attr->stack_base) + attr->stack_size;
+  }
+
+  // Mapped space(or user allocated stack) is used for:
+  //   pthread_internal_t
+  //   thread stack (including guard page)
+
+  // To safely access the pthread_internal_t and thread stack, we need to find a 16-byte aligned boundary.
+  stack_top = reinterpret_cast<uint8_t*>(
+                (reinterpret_cast<uintptr_t>(stack_top) - sizeof(pthread_internal_t)) & ~0xf);
+
+  pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(stack_top);
+  attr->stack_size = stack_top - reinterpret_cast<uint8_t*>(attr->stack_base);
+
+  thread->mmap_size = mmap_size;
+  thread->attr = *attr;
+  __init_tls(thread);
+
+  *threadp = thread;
+  *child_stack = stack_top;
+  return 0;
 }
 
 static int __pthread_start(void* arg) {
@@ -158,44 +216,21 @@
   // Inform the rest of the C library that at least one thread was created.
   __isthreaded = 1;
 
-  pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(calloc(sizeof(*thread), 1));
-  if (thread == NULL) {
-    __libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: couldn't allocate thread");
-    return EAGAIN;
-  }
-
+  pthread_attr_t thread_attr;
   if (attr == NULL) {
-    pthread_attr_init(&thread->attr);
+    pthread_attr_init(&thread_attr);
   } else {
-    thread->attr = *attr;
+    thread_attr = *attr;
     attr = NULL; // Prevent misuse below.
   }
 
-  // Make sure the stack size and guard size are multiples of PAGE_SIZE.
-  thread->attr.stack_size = BIONIC_ALIGN(thread->attr.stack_size, PAGE_SIZE);
-  thread->attr.guard_size = BIONIC_ALIGN(thread->attr.guard_size, PAGE_SIZE);
-
-  if (thread->attr.stack_base == NULL) {
-    // The caller didn't provide a stack, so allocate one.
-    thread->attr.stack_base = __create_thread_stack(thread);
-    if (thread->attr.stack_base == NULL) {
-      free(thread);
-      return EAGAIN;
-    }
-  } else {
-    // The caller did provide a stack, so remember we're not supposed to free it.
-    thread->attr.flags |= PTHREAD_ATTR_FLAG_USER_ALLOCATED_STACK;
+  pthread_internal_t* thread = NULL;
+  void* child_stack = NULL;
+  int result = __allocate_thread(&thread_attr, &thread, &child_stack);
+  if (result != 0) {
+    return result;
   }
 
-  // Make room for the TLS area.
-  // The child stack is the same address, just growing in the opposite direction.
-  // At offsets >= 0, we have the TLS slots.
-  // At offsets < 0, we have the child stack.
-  thread->tls = reinterpret_cast<void**>(reinterpret_cast<uint8_t*>(thread->attr.stack_base) +
-                                         thread->attr.stack_size - BIONIC_TLS_SLOTS * sizeof(void*));
-  void* child_stack = thread->tls;
-  __init_tls(thread);
-
   // Create a mutex for the thread in TLS to wait on once it starts so we can keep
   // it from doing anything until after we notify the debugger about it
   //
@@ -212,7 +247,7 @@
 
   int flags = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM |
       CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID;
-  void* tls = thread->tls;
+  void* tls = reinterpret_cast<void*>(thread->tls);
 #if defined(__i386__)
   // On x86 (but not x86-64), CLONE_SETTLS takes a pointer to a struct user_desc rather than
   // a pointer to the TLS itself.
@@ -227,26 +262,26 @@
     // be unblocked, but we're about to unmap the memory the mutex is stored in, so this serves as a
     // reminder that you can't rewrite this function to use a ScopedPthreadMutexLocker.
     pthread_mutex_unlock(&thread->startup_handshake_mutex);
-    if (!thread->user_allocated_stack()) {
-      munmap(thread->attr.stack_base, thread->attr.stack_size);
+    if (thread->mmap_size != 0) {
+      munmap(thread->attr.stack_base, thread->mmap_size);
     }
-    free(thread);
     __libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: clone failed: %s", strerror(errno));
     return clone_errno;
   }
 
-  int init_errno = __init_thread(thread, true);
+  int init_errno = __init_thread(thread);
   if (init_errno != 0) {
     // Mark the thread detached and replace its start_routine with a no-op.
     // Letting the thread run is the easiest way to clean up its resources.
-    thread->attr.flags |= PTHREAD_ATTR_FLAG_DETACHED;
+    atomic_store(&thread->join_state, THREAD_DETACHED);
+    __pthread_internal_add(thread);
     thread->start_routine = __do_nothing;
     pthread_mutex_unlock(&thread->startup_handshake_mutex);
     return init_errno;
   }
 
   // Publish the pthread_t and unlock the mutex to let the new thread start running.
-  *thread_out = reinterpret_cast<pthread_t>(thread);
+  *thread_out = __pthread_internal_add(thread);
   pthread_mutex_unlock(&thread->startup_handshake_mutex);
 
   return 0;
diff --git a/libc/bionic/pthread_detach.cpp b/libc/bionic/pthread_detach.cpp
index a8608e3..fb8e0dd 100644
--- a/libc/bionic/pthread_detach.cpp
+++ b/libc/bionic/pthread_detach.cpp
@@ -27,29 +27,26 @@
  */
 
 #include <errno.h>
+#include <pthread.h>
 
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_detach(pthread_t t) {
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
-      return ESRCH;
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
+    return ESRCH;
   }
 
-  if (thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) {
-    return EINVAL; // Already detached.
+  ThreadJoinState old_state = THREAD_NOT_JOINED;
+  while (old_state == THREAD_NOT_JOINED &&
+         !atomic_compare_exchange_weak(&thread->join_state, &old_state, THREAD_DETACHED)) {
   }
 
-  if (thread->attr.flags & PTHREAD_ATTR_FLAG_JOINED) {
-    return 0; // Already being joined; silently do nothing, like glibc.
-  }
-
-  if (thread->tid == 0) {
-    // Already exited; clean up.
-    _pthread_internal_remove_locked(thread.get());
+  if (old_state == THREAD_NOT_JOINED) {
     return 0;
+  } else if (old_state == THREAD_EXITED_NOT_JOINED) {
+    // Use pthread_join to clean it up.
+    return pthread_join(t, NULL);
   }
-
-  thread->attr.flags |= PTHREAD_ATTR_FLAG_DETACHED;
-  return 0;
+  return EINVAL;
 }
diff --git a/libc/bionic/pthread_exit.cpp b/libc/bionic/pthread_exit.cpp
index 6cd5311..ceda931 100644
--- a/libc/bionic/pthread_exit.cpp
+++ b/libc/bionic/pthread_exit.cpp
@@ -37,6 +37,7 @@
 extern "C" __noreturn void _exit_with_stack_teardown(void*, size_t);
 extern "C" __noreturn void __exit(int);
 extern "C" int __set_tid_address(int*);
+extern "C" void __cxa_thread_finalize();
 
 /* CAVEAT: our implementation of pthread_cleanup_push/pop doesn't support C++ exceptions
  *         and thread cancelation
@@ -59,10 +60,13 @@
 }
 
 void pthread_exit(void* return_value) {
+  // Call dtors for thread_local objects first.
+  __cxa_thread_finalize();
+
   pthread_internal_t* thread = __get_thread();
   thread->return_value = return_value;
 
-  // Call the cleanup handlers first.
+  // Call the cleanup handlers.
   while (thread->cleanup_stack) {
     __pthread_cleanup_t* c = thread->cleanup_stack;
     thread->cleanup_stack = c->__cleanup_prev;
@@ -83,54 +87,40 @@
     sigaltstack(&ss, NULL);
 
     // Free it.
-    munmap(thread->alternate_signal_stack, SIGSTKSZ);
+    munmap(thread->alternate_signal_stack, SIGNAL_STACK_SIZE);
     thread->alternate_signal_stack = NULL;
   }
 
-  // Keep track of what we need to know about the stack before we lose the pthread_internal_t.
-  void* stack_base = thread->attr.stack_base;
-  size_t stack_size = thread->attr.stack_size;
-  bool user_allocated_stack = thread->user_allocated_stack();
+  ThreadJoinState old_state = THREAD_NOT_JOINED;
+  while (old_state == THREAD_NOT_JOINED &&
+         !atomic_compare_exchange_weak(&thread->join_state, &old_state, THREAD_EXITED_NOT_JOINED)) {
+  }
 
-  pthread_mutex_lock(&g_thread_list_lock);
-  if ((thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) != 0) {
-    // The thread is detached, so we can free the pthread_internal_t.
+  if (old_state == THREAD_DETACHED) {
+    // The thread is detached, no one will use pthread_internal_t after pthread_exit.
+    // So we can free mapped space, which includes pthread_internal_t and thread stack.
     // First make sure that the kernel does not try to clear the tid field
     // because we'll have freed the memory before the thread actually exits.
     __set_tid_address(NULL);
-    _pthread_internal_remove_locked(thread);
-  } else {
-    // Make sure that the pthread_internal_t doesn't have stale pointers to a stack that
-    // will be unmapped after the exit call below.
-    if (!user_allocated_stack) {
-      thread->attr.stack_base = NULL;
-      thread->attr.stack_size = 0;
-      thread->tls = NULL;
+
+    // pthread_internal_t is freed below with stack, not here.
+    __pthread_internal_remove(thread);
+
+    if (thread->mmap_size != 0) {
+      // We need to free mapped space for detached threads when they exit.
+      // That's not something we can do in C.
+
+      // We don't want to take a signal after we've unmapped the stack.
+      // That's one last thing we can handle in C.
+      sigset_t mask;
+      sigfillset(&mask);
+      sigprocmask(SIG_SETMASK, &mask, NULL);
+
+      _exit_with_stack_teardown(thread->attr.stack_base, thread->mmap_size);
     }
-    // pthread_join is responsible for destroying the pthread_internal_t for non-detached threads.
-    // The kernel will futex_wake on the pthread_internal_t::tid field to wake pthread_join.
   }
-  pthread_mutex_unlock(&g_thread_list_lock);
 
-  // Perform a second key cleanup. When using jemalloc, a call to free from
-  // _pthread_internal_remove_locked causes the memory associated with a key
-  // to be reallocated.
-  // TODO: When b/16847284 is fixed this call can be removed.
-  pthread_key_clean_all();
-
-  if (user_allocated_stack) {
-    // Cleaning up this thread's stack is the creator's responsibility, not ours.
-    __exit(0);
-  } else {
-    // We need to munmap the stack we're running on before calling exit.
-    // That's not something we can do in C.
-
-    // We don't want to take a signal after we've unmapped the stack.
-    // That's one last thing we can handle in C.
-    sigset_t mask;
-    sigfillset(&mask);
-    sigprocmask(SIG_SETMASK, &mask, NULL);
-
-    _exit_with_stack_teardown(stack_base, stack_size);
-  }
+  // No need to free mapped space. Either there was no space mapped, or it is left for
+  // the pthread_join caller to clean up.
+  __exit(0);
 }
diff --git a/libc/bionic/pthread_getcpuclockid.cpp b/libc/bionic/pthread_getcpuclockid.cpp
index d11f56a..2bf2004 100644
--- a/libc/bionic/pthread_getcpuclockid.cpp
+++ b/libc/bionic/pthread_getcpuclockid.cpp
@@ -28,11 +28,11 @@
 
 #include <errno.h>
 
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_getcpuclockid(pthread_t t, clockid_t* clockid) {
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
diff --git a/libc/bionic/pthread_getschedparam.cpp b/libc/bionic/pthread_getschedparam.cpp
index 2cdc11a..052fb05 100644
--- a/libc/bionic/pthread_getschedparam.cpp
+++ b/libc/bionic/pthread_getschedparam.cpp
@@ -29,13 +29,13 @@
 #include <errno.h>
 
 #include "private/ErrnoRestorer.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_getschedparam(pthread_t t, int* policy, sched_param* param) {
   ErrnoRestorer errno_restorer;
 
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
diff --git a/libc/bionic/pthread_gettid_np.cpp b/libc/bionic/pthread_gettid_np.cpp
index f4663a7..c996a05 100644
--- a/libc/bionic/pthread_gettid_np.cpp
+++ b/libc/bionic/pthread_gettid_np.cpp
@@ -27,13 +27,7 @@
  */
 
 #include "pthread_internal.h"
-#include "private/bionic_pthread.h"
 
 pid_t pthread_gettid_np(pthread_t t) {
   return reinterpret_cast<pthread_internal_t*>(t)->tid;
 }
-
-// TODO: move callers over to pthread_gettid_np and remove this.
-pid_t __pthread_gettid(pthread_t t) {
-  return pthread_gettid_np(t);
-}
diff --git a/libc/bionic/pthread_internal.cpp b/libc/bionic/pthread_internal.cpp
new file mode 100644
index 0000000..1967ccf
--- /dev/null
+++ b/libc/bionic/pthread_internal.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 "pthread_internal.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#include "private/bionic_futex.h"
+#include "private/bionic_tls.h"
+#include "private/libc_logging.h"
+#include "private/ScopedPthreadMutexLocker.h"
+
+static pthread_internal_t* g_thread_list = NULL;
+static pthread_mutex_t g_thread_list_lock = PTHREAD_MUTEX_INITIALIZER;
+
+pthread_t __pthread_internal_add(pthread_internal_t* thread) {
+  ScopedPthreadMutexLocker locker(&g_thread_list_lock);
+
+  // We insert at the head.
+  thread->next = g_thread_list;
+  thread->prev = NULL;
+  if (thread->next != NULL) {
+    thread->next->prev = thread;
+  }
+  g_thread_list = thread;
+  return reinterpret_cast<pthread_t>(thread);
+}
+
+void __pthread_internal_remove(pthread_internal_t* thread) {
+  ScopedPthreadMutexLocker locker(&g_thread_list_lock);
+
+  if (thread->next != NULL) {
+    thread->next->prev = thread->prev;
+  }
+  if (thread->prev != NULL) {
+    thread->prev->next = thread->next;
+  } else {
+    g_thread_list = thread->next;
+  }
+}
+
+static void __pthread_internal_free(pthread_internal_t* thread) {
+  if (thread->mmap_size != 0) {
+    // Free mapped space, including thread stack and pthread_internal_t.
+    munmap(thread->attr.stack_base, thread->mmap_size);
+  }
+}
+
+void __pthread_internal_remove_and_free(pthread_internal_t* thread) {
+  __pthread_internal_remove(thread);
+  __pthread_internal_free(thread);
+}
+
+pthread_internal_t* __pthread_internal_find(pthread_t thread_id) {
+  pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(thread_id);
+  ScopedPthreadMutexLocker locker(&g_thread_list_lock);
+
+  for (pthread_internal_t* t = g_thread_list; t != NULL; t = t->next) {
+    if (t == thread) {
+      return thread;
+    }
+  }
+  return NULL;
+}
diff --git a/libc/bionic/pthread_internal.h b/libc/bionic/pthread_internal.h
index a5b3002..3b91e6a 100644
--- a/libc/bionic/pthread_internal.h
+++ b/libc/bionic/pthread_internal.h
@@ -29,18 +29,27 @@
 #define _PTHREAD_INTERNAL_H_
 
 #include <pthread.h>
+#include <stdatomic.h>
+
+#include "private/bionic_tls.h"
 
 /* Has the thread been detached by a pthread_join or pthread_detach call? */
 #define PTHREAD_ATTR_FLAG_DETACHED 0x00000001
 
-/* Was the thread's stack allocated by the user rather than by us? */
-#define PTHREAD_ATTR_FLAG_USER_ALLOCATED_STACK 0x00000002
-
 /* Has the thread been joined by another thread? */
-#define PTHREAD_ATTR_FLAG_JOINED 0x00000004
+#define PTHREAD_ATTR_FLAG_JOINED 0x00000002
 
-/* Is this the main thread? */
-#define PTHREAD_ATTR_FLAG_MAIN_THREAD 0x80000000
+struct pthread_key_data_t {
+  uintptr_t seq; // Use uintptr_t just for alignment, as we use pointer below.
+  void* data;
+};
+
+enum ThreadJoinState {
+  THREAD_NOT_JOINED,
+  THREAD_EXITED_NOT_JOINED,
+  THREAD_JOINED,
+  THREAD_DETACHED
+};
 
 struct pthread_internal_t {
   struct pthread_internal_t* next;
@@ -68,14 +77,10 @@
     return (*cached_pid != 0);
   }
 
-  bool user_allocated_stack() {
-    return (attr.flags & PTHREAD_ATTR_FLAG_USER_ALLOCATED_STACK) != 0;
-  }
-
-  void** tls;
-
   pthread_attr_t attr;
 
+  _Atomic(ThreadJoinState) join_state;
+
   __pthread_cleanup_t* cleanup_stack;
 
   void* (*start_routine)(void*);
@@ -86,6 +91,12 @@
 
   pthread_mutex_t startup_handshake_mutex;
 
+  size_t mmap_size;
+
+  void* tls[BIONIC_TLS_SLOTS];
+
+  pthread_key_data_t key_data[BIONIC_PTHREAD_KEY_COUNT];
+
   /*
    * The dynamic linker implements dlerror(3), which makes it hard for us to implement this
    * per-thread buffer by simply using malloc(3) and free(3).
@@ -94,16 +105,21 @@
   char dlerror_buffer[__BIONIC_DLERROR_BUFFER_SIZE];
 };
 
-__LIBC_HIDDEN__ int __init_thread(pthread_internal_t* thread, bool add_to_thread_list);
+__LIBC_HIDDEN__ int __init_thread(pthread_internal_t* thread);
 __LIBC_HIDDEN__ void __init_tls(pthread_internal_t* thread);
 __LIBC_HIDDEN__ void __init_alternate_signal_stack(pthread_internal_t*);
-__LIBC_HIDDEN__ void _pthread_internal_add(pthread_internal_t* thread);
 
-/* Various third-party apps contain a backport of our pthread_rwlock implementation that uses this. */
-extern "C" __LIBC64_HIDDEN__ pthread_internal_t* __get_thread(void);
+__LIBC_HIDDEN__ pthread_t           __pthread_internal_add(pthread_internal_t* thread);
+__LIBC_HIDDEN__ pthread_internal_t* __pthread_internal_find(pthread_t pthread_id);
+__LIBC_HIDDEN__ void                __pthread_internal_remove(pthread_internal_t* thread);
+__LIBC_HIDDEN__ void                __pthread_internal_remove_and_free(pthread_internal_t* thread);
+
+// Make __get_thread() inlined for performance reason. See http://b/19825434.
+static inline __always_inline pthread_internal_t* __get_thread() {
+  return reinterpret_cast<pthread_internal_t*>(__get_tls()[TLS_SLOT_THREAD_ID]);
+}
 
 __LIBC_HIDDEN__ void pthread_key_clean_all(void);
-__LIBC_HIDDEN__ void _pthread_internal_remove_locked(pthread_internal_t* thread);
 
 /*
  * Traditionally we gave threads a 1MiB stack. When we started
@@ -114,10 +130,8 @@
  */
 #define PTHREAD_STACK_SIZE_DEFAULT ((1 * 1024 * 1024) - SIGSTKSZ)
 
-__LIBC_HIDDEN__ extern pthread_internal_t* g_thread_list;
-__LIBC_HIDDEN__ extern pthread_mutex_t g_thread_list_lock;
-
-__LIBC_HIDDEN__ int __timespec_from_absolute(timespec*, const timespec*, clockid_t);
+/* Leave room for a guard page in the internally created signal stacks. */
+#define SIGNAL_STACK_SIZE (SIGSTKSZ + PAGE_SIZE)
 
 /* Needed by fork. */
 __LIBC_HIDDEN__ extern void __bionic_atfork_run_prepare();
diff --git a/libc/bionic/pthread_internals.cpp b/libc/bionic/pthread_internals.cpp
deleted file mode 100644
index 4c08ba8..0000000
--- a/libc/bionic/pthread_internals.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 "pthread_internal.h"
-
-#include "private/bionic_futex.h"
-#include "private/bionic_tls.h"
-#include "private/ScopedPthreadMutexLocker.h"
-
-pthread_internal_t* g_thread_list = NULL;
-pthread_mutex_t g_thread_list_lock = PTHREAD_MUTEX_INITIALIZER;
-
-void _pthread_internal_remove_locked(pthread_internal_t* thread) {
-  if (thread->next != NULL) {
-    thread->next->prev = thread->prev;
-  }
-  if (thread->prev != NULL) {
-    thread->prev->next = thread->next;
-  } else {
-    g_thread_list = thread->next;
-  }
-
-  // The main thread is not heap-allocated. See __libc_init_tls for the declaration,
-  // and __libc_init_common for the point where it's added to the thread list.
-  if ((thread->attr.flags & PTHREAD_ATTR_FLAG_MAIN_THREAD) == 0) {
-    free(thread);
-  }
-}
-
-void _pthread_internal_add(pthread_internal_t* thread) {
-  ScopedPthreadMutexLocker locker(&g_thread_list_lock);
-
-  // We insert at the head.
-  thread->next = g_thread_list;
-  thread->prev = NULL;
-  if (thread->next != NULL) {
-    thread->next->prev = thread;
-  }
-  g_thread_list = thread;
-}
-
-pthread_internal_t* __get_thread(void) {
-  return reinterpret_cast<pthread_internal_t*>(__get_tls()[TLS_SLOT_THREAD_ID]);
-}
-
-// Initialize 'ts' with the difference between 'abstime' and the current time
-// according to 'clock'. Returns -1 if abstime already expired, or 0 otherwise.
-int __timespec_from_absolute(timespec* ts, const timespec* abstime, clockid_t clock) {
-  clock_gettime(clock, ts);
-  ts->tv_sec  = abstime->tv_sec - ts->tv_sec;
-  ts->tv_nsec = abstime->tv_nsec - ts->tv_nsec;
-  if (ts->tv_nsec < 0) {
-    ts->tv_sec--;
-    ts->tv_nsec += 1000000000;
-  }
-  if ((ts->tv_nsec < 0) || (ts->tv_sec < 0)) {
-    return -1;
-  }
-  return 0;
-}
diff --git a/libc/bionic/pthread_join.cpp b/libc/bionic/pthread_join.cpp
index 0cbed62..4d852cb 100644
--- a/libc/bionic/pthread_join.cpp
+++ b/libc/bionic/pthread_join.cpp
@@ -29,36 +29,31 @@
 #include <errno.h>
 
 #include "private/bionic_futex.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_join(pthread_t t, void** return_value) {
   if (t == pthread_self()) {
     return EDEADLK;
   }
 
-  pid_t tid;
-  volatile int* tid_ptr;
-  {
-    pthread_accessor thread(t);
-    if (thread.get() == NULL) {
-      return ESRCH;
-    }
-
-    if ((thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) != 0) {
-      return EINVAL;
-    }
-
-    if ((thread->attr.flags & PTHREAD_ATTR_FLAG_JOINED) != 0) {
-      return EINVAL;
-    }
-
-    // Okay, looks like we can signal our intention to join.
-    thread->attr.flags |= PTHREAD_ATTR_FLAG_JOINED;
-    tid = thread->tid;
-    tid_ptr = &thread->tid;
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
+    return ESRCH;
   }
 
-  // We set the PTHREAD_ATTR_FLAG_JOINED flag with the lock held,
+  ThreadJoinState old_state = THREAD_NOT_JOINED;
+  while ((old_state == THREAD_NOT_JOINED || old_state == THREAD_EXITED_NOT_JOINED) &&
+         !atomic_compare_exchange_weak(&thread->join_state, &old_state, THREAD_JOINED)) {
+  }
+
+  if (old_state == THREAD_DETACHED || old_state == THREAD_JOINED) {
+    return EINVAL;
+  }
+
+  pid_t tid = thread->tid;
+  volatile int* tid_ptr = &thread->tid;
+
+  // We set thread->join_state to THREAD_JOINED with atomic operation,
   // so no one is going to remove this thread except us.
 
   // Wait for the thread to actually exit, if it hasn't already.
@@ -66,14 +61,10 @@
     __futex_wait(tid_ptr, tid, NULL);
   }
 
-  // Take the lock again so we can pull the thread's return value
-  // and remove the thread from the list.
-  pthread_accessor thread(t);
-
   if (return_value) {
     *return_value = thread->return_value;
   }
 
-  _pthread_internal_remove_locked(thread.get());
+  __pthread_internal_remove_and_free(thread);
   return 0;
 }
diff --git a/libc/bionic/pthread_key.cpp b/libc/bionic/pthread_key.cpp
index 27eab27..6d77afa 100644
--- a/libc/bionic/pthread_key.cpp
+++ b/libc/bionic/pthread_key.cpp
@@ -26,176 +26,107 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <pthread.h>
+#include <stdatomic.h>
 
 #include "private/bionic_tls.h"
 #include "pthread_internal.h"
 
-/* A technical note regarding our thread-local-storage (TLS) implementation:
- *
- * There can be up to BIONIC_TLS_SLOTS independent TLS keys in a given process,
- * The keys below TLS_SLOT_FIRST_USER_SLOT are reserved for Bionic to hold
- * special thread-specific variables like errno or a pointer to
- * the current thread's descriptor. These entries cannot be accessed through
- * pthread_getspecific() / pthread_setspecific() or pthread_key_delete()
- *
- * The 'tls_map_t' type defined below implements a shared global map of
- * currently created/allocated TLS keys and the destructors associated
- * with them.
- *
- * The global TLS map simply contains a bitmap of allocated keys, and
- * an array of destructors.
- *
- * Each thread has a TLS area that is a simple array of BIONIC_TLS_SLOTS void*
- * pointers. the TLS area of the main thread is stack-allocated in
- * __libc_init_common, while the TLS area of other threads is placed at
- * the top of their stack in pthread_create.
- *
- * When pthread_key_delete() is called it will erase the key's bitmap bit
- * and its destructor, and will also clear the key data in the TLS area of
- * all created threads. As mandated by Posix, it is the responsibility of
- * the caller of pthread_key_delete() to properly reclaim the objects that
- * were pointed to by these data fields (either before or after the call).
- */
-
-#define TLSMAP_BITS       32
-#define TLSMAP_WORDS      ((BIONIC_TLS_SLOTS+TLSMAP_BITS-1)/TLSMAP_BITS)
-#define TLSMAP_WORD(m,k)  (m).map[(k)/TLSMAP_BITS]
-#define TLSMAP_MASK(k)    (1U << ((k)&(TLSMAP_BITS-1)))
-
-static inline bool IsValidUserKey(pthread_key_t key) {
-  return (key >= TLS_SLOT_FIRST_USER_SLOT && key < BIONIC_TLS_SLOTS);
-}
-
 typedef void (*key_destructor_t)(void*);
 
-struct tls_map_t {
-  bool is_initialized;
+#define SEQ_KEY_IN_USE_BIT     0
 
-  /* bitmap of allocated keys */
-  uint32_t map[TLSMAP_WORDS];
+#define SEQ_INCREMENT_STEP  (1 << SEQ_KEY_IN_USE_BIT)
 
-  key_destructor_t key_destructors[BIONIC_TLS_SLOTS];
+// pthread_key_internal_t records the use of each pthread key slot:
+//   seq records the state of the slot.
+//      bit 0 is 1 when the key is in use, 0 when it is unused. Each time we create or delete the
+//      pthread key in the slot, we increse the seq by 1 (which inverts bit 0). The reason to use
+//      a sequence number instead of a boolean value here is that when the key slot is deleted and
+//      reused for a new key, pthread_getspecific will not return stale data.
+//   key_destructor records the destructor called at thread exit.
+struct pthread_key_internal_t {
+  atomic_uintptr_t seq;
+  atomic_uintptr_t key_destructor;
 };
 
-class ScopedTlsMapAccess {
- public:
-  ScopedTlsMapAccess() {
-    Lock();
+static pthread_key_internal_t key_map[BIONIC_PTHREAD_KEY_COUNT];
 
-    // If this is the first time the TLS map has been accessed,
-    // mark the slots belonging to well-known keys as being in use.
-    // This isn't currently necessary because the well-known keys
-    // can only be accessed directly by bionic itself, do not have
-    // destructors, and all the functions that touch the TLS map
-    // start after the maximum well-known slot.
-    if (!s_tls_map_.is_initialized) {
-      for (pthread_key_t key = 0; key < TLS_SLOT_FIRST_USER_SLOT; ++key) {
-        SetInUse(key, NULL);
-      }
-      s_tls_map_.is_initialized = true;
-    }
-  }
+static inline bool SeqOfKeyInUse(uintptr_t seq) {
+  return seq & (1 << SEQ_KEY_IN_USE_BIT);
+}
 
-  ~ScopedTlsMapAccess() {
-    Unlock();
-  }
+#define KEY_VALID_FLAG (1 << 31)
 
-  int CreateKey(pthread_key_t* result, void (*key_destructor)(void*)) {
-    // Take the first unallocated key.
-    for (int key = 0; key < BIONIC_TLS_SLOTS; ++key) {
-      if (!IsInUse(key)) {
-        SetInUse(key, key_destructor);
-        *result = key;
-        return 0;
-      }
-    }
+static_assert(sizeof(pthread_key_t) == sizeof(int) && static_cast<pthread_key_t>(-1) < 0,
+              "pthread_key_t should be typedef to int");
 
-    // We hit PTHREAD_KEYS_MAX. POSIX says EAGAIN for this case.
-    return EAGAIN;
-  }
+static inline bool KeyInValidRange(pthread_key_t key) {
+  // key < 0 means bit 31 is set.
+  // Then key < (2^31 | BIONIC_PTHREAD_KEY_COUNT) means the index part of key < BIONIC_PTHREAD_KEY_COUNT.
+  return (key < (KEY_VALID_FLAG | BIONIC_PTHREAD_KEY_COUNT));
+}
 
-  void DeleteKey(pthread_key_t key) {
-    TLSMAP_WORD(s_tls_map_, key) &= ~TLSMAP_MASK(key);
-    s_tls_map_.key_destructors[key] = NULL;
-  }
-
-  bool IsInUse(pthread_key_t key) {
-    return (TLSMAP_WORD(s_tls_map_, key) & TLSMAP_MASK(key)) != 0;
-  }
-
-  void SetInUse(pthread_key_t key, void (*key_destructor)(void*)) {
-    TLSMAP_WORD(s_tls_map_, key) |= TLSMAP_MASK(key);
-    s_tls_map_.key_destructors[key] = key_destructor;
-  }
-
-  // Called from pthread_exit() to remove all TLS key data
-  // from this thread's TLS area. This must call the destructor of all keys
-  // that have a non-NULL data value and a non-NULL destructor.
-  void CleanAll() {
-    void** tls = __get_tls();
-
-    // Because destructors can do funky things like deleting/creating other
-    // keys, we need to implement this in a loop.
-    for (int rounds = PTHREAD_DESTRUCTOR_ITERATIONS; rounds > 0; --rounds) {
-      size_t called_destructor_count = 0;
-      for (int key = 0; key < BIONIC_TLS_SLOTS; ++key) {
-        if (IsInUse(key)) {
-          void* data = tls[key];
-          void (*key_destructor)(void*) = s_tls_map_.key_destructors[key];
-
-          if (data != NULL && key_destructor != NULL) {
-            // we need to clear the key data now, this will prevent the
-            // destructor (or a later one) from seeing the old value if
-            // it calls pthread_getspecific() for some odd reason
-
-            // we do not do this if 'key_destructor == NULL' just in case another
-            // destructor function might be responsible for manually
-            // releasing the corresponding data.
-            tls[key] = NULL;
-
-            // because the destructor is free to call pthread_key_create
-            // and/or pthread_key_delete, we need to temporarily unlock
-            // the TLS map
-            Unlock();
-            (*key_destructor)(data);
-            Lock();
-            ++called_destructor_count;
-          }
-        }
-      }
-
-      // If we didn't call any destructors, there is no need to check the TLS data again.
-      if (called_destructor_count == 0) {
-        break;
-      }
-    }
-  }
-
- private:
-  static tls_map_t s_tls_map_;
-  static pthread_mutex_t s_tls_map_lock_;
-
-  void Lock() {
-    pthread_mutex_lock(&s_tls_map_lock_);
-  }
-
-  void Unlock() {
-    pthread_mutex_unlock(&s_tls_map_lock_);
-  }
-};
-
-__LIBC_HIDDEN__ tls_map_t ScopedTlsMapAccess::s_tls_map_;
-__LIBC_HIDDEN__ pthread_mutex_t ScopedTlsMapAccess::s_tls_map_lock_;
-
+// Called from pthread_exit() to remove all pthread keys. This must call the destructor of
+// all keys that have a non-NULL data value and a non-NULL destructor.
 __LIBC_HIDDEN__ void pthread_key_clean_all() {
-  ScopedTlsMapAccess tls_map;
-  tls_map.CleanAll();
+  // Because destructors can do funky things like deleting/creating other keys,
+  // we need to implement this in a loop.
+  pthread_key_data_t* key_data = __get_thread()->key_data;
+  for (size_t rounds = PTHREAD_DESTRUCTOR_ITERATIONS; rounds > 0; --rounds) {
+    size_t called_destructor_count = 0;
+    for (size_t i = 0; i < BIONIC_PTHREAD_KEY_COUNT; ++i) {
+      uintptr_t seq = atomic_load_explicit(&key_map[i].seq, memory_order_relaxed);
+      if (SeqOfKeyInUse(seq) && seq == key_data[i].seq && key_data[i].data != NULL) {
+        // Other threads may be calling pthread_key_delete/pthread_key_create while current thread
+        // is exiting. So we need to ensure we read the right key_destructor.
+        // We can rely on a user-established happens-before relationship between the creation and
+        // use of pthread key to ensure that we're not getting an earlier key_destructor.
+        // To avoid using the key_destructor of the newly created key in the same slot, we need to
+        // recheck the sequence number after reading key_destructor. As a result, we either see the
+        // right key_destructor, or the sequence number must have changed when we reread it below.
+        key_destructor_t key_destructor = reinterpret_cast<key_destructor_t>(
+          atomic_load_explicit(&key_map[i].key_destructor, memory_order_relaxed));
+        if (key_destructor == NULL) {
+          continue;
+        }
+        atomic_thread_fence(memory_order_acquire);
+        if (atomic_load_explicit(&key_map[i].seq, memory_order_relaxed) != seq) {
+           continue;
+        }
+
+        // We need to clear the key data now, this will prevent the destructor (or a later one)
+        // from seeing the old value if it calls pthread_getspecific().
+        // We don't do this if 'key_destructor == NULL' just in case another destructor
+        // function is responsible for manually releasing the corresponding data.
+        void* data = key_data[i].data;
+        key_data[i].data = NULL;
+
+        (*key_destructor)(data);
+        ++called_destructor_count;
+      }
+    }
+
+    // If we didn't call any destructors, there is no need to check the pthread keys again.
+    if (called_destructor_count == 0) {
+      break;
+    }
+  }
 }
 
 int pthread_key_create(pthread_key_t* key, void (*key_destructor)(void*)) {
-  ScopedTlsMapAccess tls_map;
-  return tls_map.CreateKey(key, key_destructor);
+  for (size_t i = 0; i < BIONIC_PTHREAD_KEY_COUNT; ++i) {
+    uintptr_t seq = atomic_load_explicit(&key_map[i].seq, memory_order_relaxed);
+    while (!SeqOfKeyInUse(seq)) {
+      if (atomic_compare_exchange_weak(&key_map[i].seq, &seq, seq + SEQ_INCREMENT_STEP)) {
+        atomic_store(&key_map[i].key_destructor, reinterpret_cast<uintptr_t>(key_destructor));
+        *key = i | KEY_VALID_FLAG;
+        return 0;
+      }
+    }
+  }
+  return EAGAIN;
 }
 
 // Deletes a pthread_key_t. note that the standard mandates that this does
@@ -203,52 +134,49 @@
 // responsibility of the caller to properly dispose of the corresponding data
 // and resources, using any means it finds suitable.
 int pthread_key_delete(pthread_key_t key) {
-  ScopedTlsMapAccess tls_map;
-
-  if (!IsValidUserKey(key) || !tls_map.IsInUse(key)) {
+  if (__predict_false(!KeyInValidRange(key))) {
     return EINVAL;
   }
-
-  // Clear value in all threads.
-  pthread_mutex_lock(&g_thread_list_lock);
-  for (pthread_internal_t*  t = g_thread_list; t != NULL; t = t->next) {
-    // Skip zombie threads. They don't have a valid TLS area any more.
-    // Similarly, it is possible to have t->tls == NULL for threads that
-    // were just recently created through pthread_create() but whose
-    // startup trampoline (__pthread_start) hasn't been run yet by the
-    // scheduler. t->tls will also be NULL after a thread's stack has been
-    // unmapped but before the ongoing pthread_join() is finished.
-    if (t->tid == 0 || t->tls == NULL) {
-      continue;
+  key &= ~KEY_VALID_FLAG;
+  // Increase seq to invalidate values in all threads.
+  uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
+  if (SeqOfKeyInUse(seq)) {
+    if (atomic_compare_exchange_strong(&key_map[key].seq, &seq, seq + SEQ_INCREMENT_STEP)) {
+      return 0;
     }
-
-    t->tls[key] = NULL;
   }
-  tls_map.DeleteKey(key);
-
-  pthread_mutex_unlock(&g_thread_list_lock);
-  return 0;
+  return EINVAL;
 }
 
 void* pthread_getspecific(pthread_key_t key) {
-  if (!IsValidUserKey(key)) {
+  if (__predict_false(!KeyInValidRange(key))) {
     return NULL;
   }
-
-  // For performance reasons, we do not lock/unlock the global TLS map
-  // to check that the key is properly allocated. If the key was not
-  // allocated, the value read from the TLS should always be NULL
-  // due to pthread_key_delete() clearing the values for all threads.
-  return __get_tls()[key];
+  key &= ~KEY_VALID_FLAG;
+  uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
+  pthread_key_data_t* data = &(__get_thread()->key_data[key]);
+  // It is user's responsibility to synchornize between the creation and use of pthread keys,
+  // so we use memory_order_relaxed when checking the sequence number.
+  if (__predict_true(SeqOfKeyInUse(seq) && data->seq == seq)) {
+    return data->data;
+  }
+  // We arrive here when current thread holds the seq of an deleted pthread key. So the
+  // data is for the deleted pthread key, and should be cleared.
+  data->data = NULL;
+  return NULL;
 }
 
 int pthread_setspecific(pthread_key_t key, const void* ptr) {
-  ScopedTlsMapAccess tls_map;
-
-  if (!IsValidUserKey(key) || !tls_map.IsInUse(key)) {
+  if (__predict_false(!KeyInValidRange(key))) {
     return EINVAL;
   }
-
-  __get_tls()[key] = const_cast<void*>(ptr);
-  return 0;
+  key &= ~KEY_VALID_FLAG;
+  uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
+  if (__predict_true(SeqOfKeyInUse(seq))) {
+    pthread_key_data_t* data = &(__get_thread()->key_data[key]);
+    data->seq = seq;
+    data->data = const_cast<void*>(ptr);
+    return 0;
+  }
+  return EINVAL;
 }
diff --git a/libc/bionic/pthread_kill.cpp b/libc/bionic/pthread_kill.cpp
index 163317e..93513fa 100644
--- a/libc/bionic/pthread_kill.cpp
+++ b/libc/bionic/pthread_kill.cpp
@@ -30,26 +30,17 @@
 #include <unistd.h>
 
 #include "private/ErrnoRestorer.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 extern "C" int tgkill(int tgid, int tid, int sig);
 
 int pthread_kill(pthread_t t, int sig) {
   ErrnoRestorer errno_restorer;
 
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
-  // There's a race here, but it's one we share with all other C libraries.
-  pid_t tid = thread->tid;
-  thread.Unlock();
-
-  int rc = tgkill(getpid(), tid, sig);
-  if (rc == -1) {
-    return errno;
-  }
-
-  return 0;
+  return (tgkill(getpid(), thread->tid, sig) == -1) ? errno : 0;
 }
diff --git a/libc/bionic/pthread_mutex.cpp b/libc/bionic/pthread_mutex.cpp
index ae2557f..4fec753 100644
--- a/libc/bionic/pthread_mutex.cpp
+++ b/libc/bionic/pthread_mutex.cpp
@@ -30,169 +30,20 @@
 
 #include <errno.h>
 #include <limits.h>
+#include <stdatomic.h>
+#include <string.h>
+#include <sys/cdefs.h>
 #include <sys/mman.h>
 #include <unistd.h>
 
 #include "pthread_internal.h"
 
-#include "private/bionic_atomic_inline.h"
+#include "private/bionic_constants.h"
 #include "private/bionic_futex.h"
+#include "private/bionic_systrace.h"
+#include "private/bionic_time_conversions.h"
 #include "private/bionic_tls.h"
 
-extern void pthread_debug_mutex_lock_check(pthread_mutex_t *mutex);
-extern void pthread_debug_mutex_unlock_check(pthread_mutex_t *mutex);
-
-/* a mutex is implemented as a 32-bit integer holding the following fields
- *
- * bits:     name     description
- * 31-16     tid      owner thread's tid (recursive and errorcheck only)
- * 15-14     type     mutex type
- * 13        shared   process-shared flag
- * 12-2      counter  counter of recursive mutexes
- * 1-0       state    lock state (0, 1 or 2)
- */
-
-/* Convenience macro, creates a mask of 'bits' bits that starts from
- * the 'shift'-th least significant bit in a 32-bit word.
- *
- * Examples: FIELD_MASK(0,4)  -> 0xf
- *           FIELD_MASK(16,9) -> 0x1ff0000
- */
-#define  FIELD_MASK(shift,bits)           (((1 << (bits))-1) << (shift))
-
-/* This one is used to create a bit pattern from a given field value */
-#define  FIELD_TO_BITS(val,shift,bits)    (((val) & ((1 << (bits))-1)) << (shift))
-
-/* And this one does the opposite, i.e. extract a field's value from a bit pattern */
-#define  FIELD_FROM_BITS(val,shift,bits)  (((val) >> (shift)) & ((1 << (bits))-1))
-
-/* Mutex state:
- *
- * 0 for unlocked
- * 1 for locked, no waiters
- * 2 for locked, maybe waiters
- */
-#define  MUTEX_STATE_SHIFT      0
-#define  MUTEX_STATE_LEN        2
-
-#define  MUTEX_STATE_MASK           FIELD_MASK(MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-#define  MUTEX_STATE_FROM_BITS(v)   FIELD_FROM_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-#define  MUTEX_STATE_TO_BITS(v)     FIELD_TO_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-
-#define  MUTEX_STATE_UNLOCKED            0   /* must be 0 to match __PTHREAD_MUTEX_INIT_VALUE */
-#define  MUTEX_STATE_LOCKED_UNCONTENDED  1   /* must be 1 due to atomic dec in unlock operation */
-#define  MUTEX_STATE_LOCKED_CONTENDED    2   /* must be 1 + LOCKED_UNCONTENDED due to atomic dec */
-
-#define  MUTEX_STATE_FROM_BITS(v)    FIELD_FROM_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-#define  MUTEX_STATE_TO_BITS(v)      FIELD_TO_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-
-#define  MUTEX_STATE_BITS_UNLOCKED            MUTEX_STATE_TO_BITS(MUTEX_STATE_UNLOCKED)
-#define  MUTEX_STATE_BITS_LOCKED_UNCONTENDED  MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_UNCONTENDED)
-#define  MUTEX_STATE_BITS_LOCKED_CONTENDED    MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_CONTENDED)
-
-/* return true iff the mutex if locked with no waiters */
-#define  MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(v)  (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_UNCONTENDED)
-
-/* return true iff the mutex if locked with maybe waiters */
-#define  MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(v)   (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_CONTENDED)
-
-/* used to flip from LOCKED_UNCONTENDED to LOCKED_CONTENDED */
-#define  MUTEX_STATE_BITS_FLIP_CONTENTION(v)      ((v) ^ (MUTEX_STATE_BITS_LOCKED_CONTENDED ^ MUTEX_STATE_BITS_LOCKED_UNCONTENDED))
-
-/* Mutex counter:
- *
- * We need to check for overflow before incrementing, and we also need to
- * detect when the counter is 0
- */
-#define  MUTEX_COUNTER_SHIFT         2
-#define  MUTEX_COUNTER_LEN           11
-#define  MUTEX_COUNTER_MASK          FIELD_MASK(MUTEX_COUNTER_SHIFT, MUTEX_COUNTER_LEN)
-
-#define  MUTEX_COUNTER_BITS_WILL_OVERFLOW(v)    (((v) & MUTEX_COUNTER_MASK) == MUTEX_COUNTER_MASK)
-#define  MUTEX_COUNTER_BITS_IS_ZERO(v)          (((v) & MUTEX_COUNTER_MASK) == 0)
-
-/* Used to increment the counter directly after overflow has been checked */
-#define  MUTEX_COUNTER_BITS_ONE      FIELD_TO_BITS(1,MUTEX_COUNTER_SHIFT,MUTEX_COUNTER_LEN)
-
-/* Returns true iff the counter is 0 */
-#define  MUTEX_COUNTER_BITS_ARE_ZERO(v)  (((v) & MUTEX_COUNTER_MASK) == 0)
-
-/* Mutex shared bit flag
- *
- * This flag is set to indicate that the mutex is shared among processes.
- * This changes the futex opcode we use for futex wait/wake operations
- * (non-shared operations are much faster).
- */
-#define  MUTEX_SHARED_SHIFT    13
-#define  MUTEX_SHARED_MASK     FIELD_MASK(MUTEX_SHARED_SHIFT,1)
-
-/* Mutex type:
- *
- * We support normal, recursive and errorcheck mutexes.
- *
- * The constants defined here *cannot* be changed because they must match
- * the C library ABI which defines the following initialization values in
- * <pthread.h>:
- *
- *   __PTHREAD_MUTEX_INIT_VALUE
- *   __PTHREAD_RECURSIVE_MUTEX_VALUE
- *   __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE
- */
-#define  MUTEX_TYPE_SHIFT      14
-#define  MUTEX_TYPE_LEN        2
-#define  MUTEX_TYPE_MASK       FIELD_MASK(MUTEX_TYPE_SHIFT,MUTEX_TYPE_LEN)
-
-#define  MUTEX_TYPE_NORMAL          0  /* Must be 0 to match __PTHREAD_MUTEX_INIT_VALUE */
-#define  MUTEX_TYPE_RECURSIVE       1
-#define  MUTEX_TYPE_ERRORCHECK      2
-
-#define  MUTEX_TYPE_TO_BITS(t)       FIELD_TO_BITS(t, MUTEX_TYPE_SHIFT, MUTEX_TYPE_LEN)
-
-#define  MUTEX_TYPE_BITS_NORMAL      MUTEX_TYPE_TO_BITS(MUTEX_TYPE_NORMAL)
-#define  MUTEX_TYPE_BITS_RECURSIVE   MUTEX_TYPE_TO_BITS(MUTEX_TYPE_RECURSIVE)
-#define  MUTEX_TYPE_BITS_ERRORCHECK  MUTEX_TYPE_TO_BITS(MUTEX_TYPE_ERRORCHECK)
-
-/* Mutex owner field:
- *
- * This is only used for recursive and errorcheck mutexes. It holds the
- * tid of the owning thread. Note that this works because the Linux
- * kernel _only_ uses 16-bit values for tids.
- *
- * More specifically, it will wrap to 10000 when it reaches over 32768 for
- * application processes. You can check this by running the following inside
- * an adb shell session:
- *
-    OLDPID=$$;
-    while true; do
-    NEWPID=$(sh -c 'echo $$')
-    if [ "$NEWPID" -gt 32768 ]; then
-        echo "AARGH: new PID $NEWPID is too high!"
-        exit 1
-    fi
-    if [ "$NEWPID" -lt "$OLDPID" ]; then
-        echo "****** Wrapping from PID $OLDPID to $NEWPID. *******"
-    else
-        echo -n "$NEWPID!"
-    fi
-    OLDPID=$NEWPID
-    done
-
- * Note that you can run the same example on a desktop Linux system,
- * the wrapping will also happen at 32768, but will go back to 300 instead.
- */
-#define  MUTEX_OWNER_SHIFT     16
-#define  MUTEX_OWNER_LEN       16
-
-#define  MUTEX_OWNER_FROM_BITS(v)    FIELD_FROM_BITS(v,MUTEX_OWNER_SHIFT,MUTEX_OWNER_LEN)
-#define  MUTEX_OWNER_TO_BITS(v)      FIELD_TO_BITS(v,MUTEX_OWNER_SHIFT,MUTEX_OWNER_LEN)
-
-/* Convenience macros.
- *
- * These are used to form or modify the bit pattern of a given mutex value
- */
-
-
-
 /* a mutex attribute holds the following fields
  *
  * bits:     name       description
@@ -202,7 +53,6 @@
 #define  MUTEXATTR_TYPE_MASK   0x000f
 #define  MUTEXATTR_SHARED_MASK 0x0010
 
-
 int pthread_mutexattr_init(pthread_mutexattr_t *attr)
 {
     *attr = PTHREAD_MUTEX_DEFAULT;
@@ -263,38 +113,177 @@
     return 0;
 }
 
-int pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t* attr) {
+/* a mutex contains a state value and a owner_tid.
+ * The value is implemented as a 16-bit integer holding the following fields:
+ *
+ * bits:     name     description
+ * 15-14     type     mutex type
+ * 13        shared   process-shared flag
+ * 12-2      counter  counter of recursive mutexes
+ * 1-0       state    lock state (0, 1 or 2)
+ *
+ * The owner_tid is used only in recursive and errorcheck mutex to hold the mutex owner thread tid.
+ */
+
+/* Convenience macro, creates a mask of 'bits' bits that starts from
+ * the 'shift'-th least significant bit in a 32-bit word.
+ *
+ * Examples: FIELD_MASK(0,4)  -> 0xf
+ *           FIELD_MASK(16,9) -> 0x1ff0000
+ */
+#define  FIELD_MASK(shift,bits)           (((1 << (bits))-1) << (shift))
+
+/* This one is used to create a bit pattern from a given field value */
+#define  FIELD_TO_BITS(val,shift,bits)    (((val) & ((1 << (bits))-1)) << (shift))
+
+/* And this one does the opposite, i.e. extract a field's value from a bit pattern */
+#define  FIELD_FROM_BITS(val,shift,bits)  (((val) >> (shift)) & ((1 << (bits))-1))
+
+
+/* Convenience macros.
+ *
+ * These are used to form or modify the bit pattern of a given mutex value
+ */
+
+/* Mutex state:
+ *
+ * 0 for unlocked
+ * 1 for locked, no waiters
+ * 2 for locked, maybe waiters
+ */
+#define  MUTEX_STATE_SHIFT      0
+#define  MUTEX_STATE_LEN        2
+
+#define  MUTEX_STATE_MASK           FIELD_MASK(MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+#define  MUTEX_STATE_FROM_BITS(v)   FIELD_FROM_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+#define  MUTEX_STATE_TO_BITS(v)     FIELD_TO_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+
+#define  MUTEX_STATE_UNLOCKED            0   /* must be 0 to match PTHREAD_MUTEX_INITIALIZER */
+#define  MUTEX_STATE_LOCKED_UNCONTENDED  1   /* must be 1 due to atomic dec in unlock operation */
+#define  MUTEX_STATE_LOCKED_CONTENDED    2   /* must be 1 + LOCKED_UNCONTENDED due to atomic dec */
+
+#define  MUTEX_STATE_BITS_UNLOCKED            MUTEX_STATE_TO_BITS(MUTEX_STATE_UNLOCKED)
+#define  MUTEX_STATE_BITS_LOCKED_UNCONTENDED  MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_UNCONTENDED)
+#define  MUTEX_STATE_BITS_LOCKED_CONTENDED    MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_CONTENDED)
+
+/* return true iff the mutex if locked with no waiters */
+#define  MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(v)  (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_UNCONTENDED)
+
+/* return true iff the mutex if locked with maybe waiters */
+#define  MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(v)   (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_CONTENDED)
+
+/* used to flip from LOCKED_UNCONTENDED to LOCKED_CONTENDED */
+#define  MUTEX_STATE_BITS_FLIP_CONTENTION(v)      ((v) ^ (MUTEX_STATE_BITS_LOCKED_CONTENDED ^ MUTEX_STATE_BITS_LOCKED_UNCONTENDED))
+
+/* Mutex counter:
+ *
+ * We need to check for overflow before incrementing, and we also need to
+ * detect when the counter is 0
+ */
+#define  MUTEX_COUNTER_SHIFT         2
+#define  MUTEX_COUNTER_LEN           11
+#define  MUTEX_COUNTER_MASK          FIELD_MASK(MUTEX_COUNTER_SHIFT, MUTEX_COUNTER_LEN)
+
+#define  MUTEX_COUNTER_BITS_WILL_OVERFLOW(v)    (((v) & MUTEX_COUNTER_MASK) == MUTEX_COUNTER_MASK)
+#define  MUTEX_COUNTER_BITS_IS_ZERO(v)          (((v) & MUTEX_COUNTER_MASK) == 0)
+
+/* Used to increment the counter directly after overflow has been checked */
+#define  MUTEX_COUNTER_BITS_ONE      FIELD_TO_BITS(1, MUTEX_COUNTER_SHIFT,MUTEX_COUNTER_LEN)
+
+/* Mutex shared bit flag
+ *
+ * This flag is set to indicate that the mutex is shared among processes.
+ * This changes the futex opcode we use for futex wait/wake operations
+ * (non-shared operations are much faster).
+ */
+#define  MUTEX_SHARED_SHIFT    13
+#define  MUTEX_SHARED_MASK     FIELD_MASK(MUTEX_SHARED_SHIFT,1)
+
+/* Mutex type:
+ * We support normal, recursive and errorcheck mutexes.
+ */
+#define  MUTEX_TYPE_SHIFT      14
+#define  MUTEX_TYPE_LEN        2
+#define  MUTEX_TYPE_MASK       FIELD_MASK(MUTEX_TYPE_SHIFT,MUTEX_TYPE_LEN)
+
+#define  MUTEX_TYPE_TO_BITS(t)       FIELD_TO_BITS(t, MUTEX_TYPE_SHIFT, MUTEX_TYPE_LEN)
+
+#define  MUTEX_TYPE_BITS_NORMAL      MUTEX_TYPE_TO_BITS(PTHREAD_MUTEX_NORMAL)
+#define  MUTEX_TYPE_BITS_RECURSIVE   MUTEX_TYPE_TO_BITS(PTHREAD_MUTEX_RECURSIVE)
+#define  MUTEX_TYPE_BITS_ERRORCHECK  MUTEX_TYPE_TO_BITS(PTHREAD_MUTEX_ERRORCHECK)
+
+struct pthread_mutex_internal_t {
+  _Atomic(uint16_t) state;
+#if defined(__LP64__)
+  uint16_t __pad;
+  atomic_int owner_tid;
+  char __reserved[32];
+#else
+  _Atomic(uint16_t) owner_tid;
+#endif
+} __attribute__((aligned(4)));
+
+static_assert(sizeof(pthread_mutex_t) == sizeof(pthread_mutex_internal_t),
+              "pthread_mutex_t should actually be pthread_mutex_internal_t in implementation.");
+
+// For binary compatibility with old version of pthread_mutex_t, we can't use more strict alignment
+// than 4-byte alignment.
+static_assert(alignof(pthread_mutex_t) == 4,
+              "pthread_mutex_t should fulfill the alignment of pthread_mutex_internal_t.");
+
+static inline pthread_mutex_internal_t* __get_internal_mutex(pthread_mutex_t* mutex_interface) {
+  return reinterpret_cast<pthread_mutex_internal_t*>(mutex_interface);
+}
+
+int pthread_mutex_init(pthread_mutex_t* mutex_interface, const pthread_mutexattr_t* attr) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
+
+    memset(mutex, 0, sizeof(pthread_mutex_internal_t));
+
     if (__predict_true(attr == NULL)) {
-        mutex->value = MUTEX_TYPE_BITS_NORMAL;
+        atomic_init(&mutex->state, MUTEX_TYPE_BITS_NORMAL);
         return 0;
     }
 
-    int value = 0;
+    uint16_t state = 0;
     if ((*attr & MUTEXATTR_SHARED_MASK) != 0) {
-        value |= MUTEX_SHARED_MASK;
+        state |= MUTEX_SHARED_MASK;
     }
 
     switch (*attr & MUTEXATTR_TYPE_MASK) {
     case PTHREAD_MUTEX_NORMAL:
-        value |= MUTEX_TYPE_BITS_NORMAL;
-        break;
+      state |= MUTEX_TYPE_BITS_NORMAL;
+      break;
     case PTHREAD_MUTEX_RECURSIVE:
-        value |= MUTEX_TYPE_BITS_RECURSIVE;
-        break;
+      state |= MUTEX_TYPE_BITS_RECURSIVE;
+      break;
     case PTHREAD_MUTEX_ERRORCHECK:
-        value |= MUTEX_TYPE_BITS_ERRORCHECK;
-        break;
+      state |= MUTEX_TYPE_BITS_ERRORCHECK;
+      break;
     default:
         return EINVAL;
     }
 
-    mutex->value = value;
+    atomic_init(&mutex->state, state);
+    atomic_init(&mutex->owner_tid, 0);
     return 0;
 }
 
+static inline __always_inline int __pthread_normal_mutex_trylock(pthread_mutex_internal_t* mutex,
+                                                                 uint16_t shared) {
+    const uint16_t unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+
+    uint16_t old_state = unlocked;
+    if (__predict_true(atomic_compare_exchange_strong_explicit(&mutex->state, &old_state,
+                         locked_uncontended, memory_order_acquire, memory_order_relaxed))) {
+        return 0;
+    }
+    return EBUSY;
+}
 
 /*
- * Lock a non-recursive mutex.
+ * Lock a mutex of type NORMAL.
  *
  * As noted above, there are three states:
  *   0 (unlocked, no contention)
@@ -305,450 +294,341 @@
  * "type" value is zero, so the only bits that will be set are the ones in
  * the lock state field.
  */
-static inline void _normal_lock(pthread_mutex_t* mutex, int shared) {
-    /* convenience shortcuts */
-    const int unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
-    const int locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-    /*
-     * The common case is an unlocked mutex, so we begin by trying to
-     * change the lock's state from 0 (UNLOCKED) to 1 (LOCKED).
-     * __bionic_cmpxchg() returns 0 if it made the swap successfully.
-     * If the result is nonzero, this lock is already held by another thread.
-     */
-    if (__bionic_cmpxchg(unlocked, locked_uncontended, &mutex->value) != 0) {
-        const int locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-        /*
-         * We want to go to sleep until the mutex is available, which
-         * requires promoting it to state 2 (CONTENDED). We need to
-         * swap in the new state value and then wait until somebody wakes us up.
-         *
-         * __bionic_swap() returns the previous value.  We swap 2 in and
-         * see if we got zero back; if so, we have acquired the lock.  If
-         * not, another thread still holds the lock and we wait again.
-         *
-         * The second argument to the __futex_wait() call is compared
-         * against the current value.  If it doesn't match, __futex_wait()
-         * returns immediately (otherwise, it sleeps for a time specified
-         * by the third argument; 0 means sleep forever).  This ensures
-         * that the mutex is in state 2 when we go to sleep on it, which
-         * guarantees a wake-up call.
-         */
-        while (__bionic_swap(locked_contended, &mutex->value) != unlocked) {
-            __futex_wait_ex(&mutex->value, shared, locked_contended, NULL);
+static inline __always_inline int __pthread_normal_mutex_lock(pthread_mutex_internal_t* mutex,
+                                                              uint16_t shared,
+                                                              const timespec* abs_timeout_or_null,
+                                                              clockid_t clock) {
+    if (__predict_true(__pthread_normal_mutex_trylock(mutex, shared) == 0)) {
+        return 0;
+    }
+
+    ScopedTrace trace("Contending for pthread mutex");
+
+    const uint16_t unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
+
+    // We want to go to sleep until the mutex is available, which requires
+    // promoting it to locked_contended. We need to swap in the new state
+    // and then wait until somebody wakes us up.
+    // An atomic_exchange is used to compete with other threads for the lock.
+    // If it returns unlocked, we have acquired the lock, otherwise another
+    // thread still holds the lock and we should wait again.
+    // If lock is acquired, an acquire fence is needed to make all memory accesses
+    // made by other threads visible to the current CPU.
+    while (atomic_exchange_explicit(&mutex->state, locked_contended,
+                                    memory_order_acquire) != unlocked) {
+        timespec ts;
+        timespec* rel_timeout = NULL;
+        if (abs_timeout_or_null != NULL) {
+            rel_timeout = &ts;
+            if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, clock)) {
+                return ETIMEDOUT;
+            }
+        }
+        if (__futex_wait_ex(&mutex->state, shared, locked_contended, rel_timeout) == -ETIMEDOUT) {
+            return ETIMEDOUT;
         }
     }
-    ANDROID_MEMBAR_FULL();
+    return 0;
 }
 
 /*
- * Release a non-recursive mutex.  The caller is responsible for determining
+ * Release a normal mutex.  The caller is responsible for determining
  * that we are in fact the owner of this lock.
  */
-static inline void _normal_unlock(pthread_mutex_t* mutex, int shared) {
-    ANDROID_MEMBAR_FULL();
+static inline __always_inline void __pthread_normal_mutex_unlock(pthread_mutex_internal_t* mutex,
+                                                                 uint16_t shared) {
+    const uint16_t unlocked         = shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
 
-    /*
-     * The mutex state will be 1 or (rarely) 2.  We use an atomic decrement
-     * to release the lock.  __bionic_atomic_dec() returns the previous value;
-     * if it wasn't 1 we have to do some additional work.
-     */
-    if (__bionic_atomic_dec(&mutex->value) != (shared|MUTEX_STATE_BITS_LOCKED_UNCONTENDED)) {
-        /*
-         * Start by releasing the lock.  The decrement changed it from
-         * "contended lock" to "uncontended lock", which means we still
-         * hold it, and anybody who tries to sneak in will push it back
-         * to state 2.
-         *
-         * Once we set it to zero the lock is up for grabs.  We follow
-         * this with a __futex_wake() to ensure that one of the waiting
-         * threads has a chance to grab it.
-         *
-         * This doesn't cause a race with the swap/wait pair in
-         * _normal_lock(), because the __futex_wait() call there will
-         * return immediately if the mutex value isn't 2.
-         */
-        mutex->value = shared;
-
-        /*
-         * Wake up one waiting thread.  We don't know which thread will be
-         * woken or when it'll start executing -- futexes make no guarantees
-         * here.  There may not even be a thread waiting.
-         *
-         * The newly-woken thread will replace the 0 we just set above
-         * with 2, which means that when it eventually releases the mutex
-         * it will also call FUTEX_WAKE.  This results in one extra wake
-         * call whenever a lock is contended, but lets us avoid forgetting
-         * anyone without requiring us to track the number of sleepers.
-         *
-         * It's possible for another thread to sneak in and grab the lock
-         * between the zero assignment above and the wake call below.  If
-         * the new thread is "slow" and holds the lock for a while, we'll
-         * wake up a sleeper, which will swap in a 2 and then go back to
-         * sleep since the lock is still held.  If the new thread is "fast",
-         * running to completion before we call wake, the thread we
-         * eventually wake will find an unlocked mutex and will execute.
-         * Either way we have correct behavior and nobody is orphaned on
-         * the wait queue.
-         */
-        __futex_wake_ex(&mutex->value, shared, 1);
+    // We use an atomic_exchange to release the lock. If locked_contended state
+    // is returned, some threads is waiting for the lock and we need to wake up
+    // one of them.
+    // A release fence is required to make previous stores visible to next
+    // lock owner threads.
+    if (atomic_exchange_explicit(&mutex->state, unlocked,
+                                 memory_order_release) == locked_contended) {
+        // Wake up one waiting thread. We don't know which thread will be
+        // woken or when it'll start executing -- futexes make no guarantees
+        // here. There may not even be a thread waiting.
+        //
+        // The newly-woken thread will replace the unlocked state we just set above
+        // with locked_contended state, which means that when it eventually releases
+        // the mutex it will also call FUTEX_WAKE. This results in one extra wake
+        // call whenever a lock is contended, but let us avoid forgetting anyone
+        // without requiring us to track the number of sleepers.
+        //
+        // It's possible for another thread to sneak in and grab the lock between
+        // the exchange above and the wake call below. If the new thread is "slow"
+        // and holds the lock for a while, we'll wake up a sleeper, which will swap
+        // in locked_uncontended state and then go back to sleep since the lock is
+        // still held. If the new thread is "fast", running to completion before
+        // we call wake, the thread we eventually wake will find an unlocked mutex
+        // and will execute. Either way we have correct behavior and nobody is
+        // orphaned on the wait queue.
+        __futex_wake_ex(&mutex->state, shared, 1);
     }
 }
 
-/* This common inlined function is used to increment the counter of an
- * errorcheck or recursive mutex.
+/* This common inlined function is used to increment the counter of a recursive mutex.
  *
- * For errorcheck mutexes, it will return EDEADLK
- * If the counter overflows, it will return EAGAIN
- * Otherwise, it atomically increments the counter and returns 0
- * after providing an acquire barrier.
+ * If the counter overflows, it will return EAGAIN.
+ * Otherwise, it atomically increments the counter and returns 0.
  *
- * mtype is the current mutex type
- * mvalue is the current mutex value (already loaded)
- * mutex pointers to the mutex.
  */
-static inline __always_inline int _recursive_increment(pthread_mutex_t* mutex, int mvalue, int mtype) {
-    if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
-        /* trying to re-lock a mutex we already acquired */
-        return EDEADLK;
-    }
-
-    /* Detect recursive lock overflow and return EAGAIN.
-     * This is safe because only the owner thread can modify the
-     * counter bits in the mutex value.
-     */
-    if (MUTEX_COUNTER_BITS_WILL_OVERFLOW(mvalue)) {
+static inline __always_inline int __recursive_increment(pthread_mutex_internal_t* mutex,
+                                                        uint16_t old_state) {
+    // Detect recursive lock overflow and return EAGAIN.
+    // This is safe because only the owner thread can modify the
+    // counter bits in the mutex value.
+    if (MUTEX_COUNTER_BITS_WILL_OVERFLOW(old_state)) {
         return EAGAIN;
     }
 
-    /* We own the mutex, but other threads are able to change
-     * the lower bits (e.g. promoting it to "contended"), so we
-     * need to use an atomic cmpxchg loop to update the counter.
-     */
-    for (;;) {
-        /* increment counter, overflow was already checked */
-        int newval = mvalue + MUTEX_COUNTER_BITS_ONE;
-        if (__predict_true(__bionic_cmpxchg(mvalue, newval, &mutex->value) == 0)) {
-            /* mutex is still locked, not need for a memory barrier */
-            return 0;
-        }
-        /* the value was changed, this happens when another thread changes
-         * the lower state bits from 1 to 2 to indicate contention. This
-         * cannot change the counter, so simply reload and try again.
-         */
-        mvalue = mutex->value;
-    }
-}
-
-int pthread_mutex_lock(pthread_mutex_t* mutex) {
-#if !defined(__LP64__)
-    if (mutex == NULL) {
-        return EINVAL;
-    }
-#endif
-
-    int mvalue, mtype, tid, shared;
-
-    mvalue = mutex->value;
-    mtype = (mvalue & MUTEX_TYPE_MASK);
-    shared = (mvalue & MUTEX_SHARED_MASK);
-
-    /* Handle non-recursive case first */
-    if ( __predict_true(mtype == MUTEX_TYPE_BITS_NORMAL) ) {
-        _normal_lock(mutex, shared);
-        return 0;
-    }
-
-    /* Do we already own this recursive or error-check mutex ? */
-    tid = __get_thread()->tid;
-    if ( tid == MUTEX_OWNER_FROM_BITS(mvalue) )
-        return _recursive_increment(mutex, mvalue, mtype);
-
-    /* Add in shared state to avoid extra 'or' operations below */
-    mtype |= shared;
-
-    /* First, if the mutex is unlocked, try to quickly acquire it.
-     * In the optimistic case where this works, set the state to 1 to
-     * indicate locked with no contention */
-    if (mvalue == mtype) {
-        int newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-        if (__bionic_cmpxchg(mvalue, newval, &mutex->value) == 0) {
-            ANDROID_MEMBAR_FULL();
-            return 0;
-        }
-        /* argh, the value changed, reload before entering the loop */
-        mvalue = mutex->value;
-    }
-
-    for (;;) {
-        int newval;
-
-        /* if the mutex is unlocked, its value should be 'mtype' and
-         * we try to acquire it by setting its owner and state atomically.
-         * NOTE: We put the state to 2 since we _know_ there is contention
-         * when we are in this loop. This ensures all waiters will be
-         * unlocked.
-         */
-        if (mvalue == mtype) {
-            newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-            /* TODO: Change this to __bionic_cmpxchg_acquire when we
-             *        implement it to get rid of the explicit memory
-             *        barrier below.
-             */
-            if (__predict_false(__bionic_cmpxchg(mvalue, newval, &mutex->value) != 0)) {
-                mvalue = mutex->value;
-                continue;
-            }
-            ANDROID_MEMBAR_FULL();
-            return 0;
-        }
-
-        /* the mutex is already locked by another thread, if its state is 1
-         * we will change it to 2 to indicate contention. */
-        if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(mvalue)) {
-            newval = MUTEX_STATE_BITS_FLIP_CONTENTION(mvalue); /* locked state 1 => state 2 */
-            if (__predict_false(__bionic_cmpxchg(mvalue, newval, &mutex->value) != 0)) {
-                mvalue = mutex->value;
-                continue;
-            }
-            mvalue = newval;
-        }
-
-        /* wait until the mutex is unlocked */
-        __futex_wait_ex(&mutex->value, shared, mvalue, NULL);
-
-        mvalue = mutex->value;
-    }
-    /* NOTREACHED */
-}
-
-int pthread_mutex_unlock(pthread_mutex_t* mutex) {
-#if !defined(__LP64__)
-    if (mutex == NULL) {
-        return EINVAL;
-    }
-#endif
-
-    int mvalue, mtype, tid, shared;
-
-    mvalue = mutex->value;
-    mtype  = (mvalue & MUTEX_TYPE_MASK);
-    shared = (mvalue & MUTEX_SHARED_MASK);
-
-    /* Handle common case first */
-    if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
-        _normal_unlock(mutex, shared);
-        return 0;
-    }
-
-    /* Do we already own this recursive or error-check mutex ? */
-    tid = __get_thread()->tid;
-    if ( tid != MUTEX_OWNER_FROM_BITS(mvalue) )
-        return EPERM;
-
-    /* If the counter is > 0, we can simply decrement it atomically.
-     * Since other threads can mutate the lower state bits (and only the
-     * lower state bits), use a cmpxchg to do it.
-     */
-    if (!MUTEX_COUNTER_BITS_IS_ZERO(mvalue)) {
-        for (;;) {
-            int newval = mvalue - MUTEX_COUNTER_BITS_ONE;
-            if (__predict_true(__bionic_cmpxchg(mvalue, newval, &mutex->value) == 0)) {
-                /* success: we still own the mutex, so no memory barrier */
-                return 0;
-            }
-            /* the value changed, so reload and loop */
-            mvalue = mutex->value;
-        }
-    }
-
-    /* the counter is 0, so we're going to unlock the mutex by resetting
-     * its value to 'unlocked'. We need to perform a swap in order
-     * to read the current state, which will be 2 if there are waiters
-     * to awake.
-     *
-     * TODO: Change this to __bionic_swap_release when we implement it
-     *        to get rid of the explicit memory barrier below.
-     */
-    ANDROID_MEMBAR_FULL();  /* RELEASE BARRIER */
-    mvalue = __bionic_swap(mtype | shared | MUTEX_STATE_BITS_UNLOCKED, &mutex->value);
-
-    /* Wake one waiting thread, if any */
-    if (MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(mvalue)) {
-        __futex_wake_ex(&mutex->value, shared, 1);
-    }
+    // Other threads are able to change the lower bits (e.g. promoting it to "contended"),
+    // but the mutex counter will not overflow. So we use atomic_fetch_add operation here.
+    // The mutex is still locked by current thread, so we don't need a release fence.
+    atomic_fetch_add_explicit(&mutex->state, MUTEX_COUNTER_BITS_ONE, memory_order_relaxed);
     return 0;
 }
 
-int pthread_mutex_trylock(pthread_mutex_t* mutex) {
-    int mvalue, mtype, tid, shared;
+static inline __always_inline int __recursive_or_errorcheck_mutex_wait(
+                                                      pthread_mutex_internal_t* mutex,
+                                                      uint16_t shared,
+                                                      uint16_t old_state,
+                                                      const timespec* rel_timeout) {
+// __futex_wait always waits on a 32-bit value. But state is 16-bit. For a normal mutex, the owner_tid
+// field in mutex is not used. On 64-bit devices, the __pad field in mutex is not used.
+// But when a recursive or errorcheck mutex is used on 32-bit devices, we need to add the
+// owner_tid value in the value argument for __futex_wait, otherwise we may always get EAGAIN error.
 
-    mvalue = mutex->value;
-    mtype  = (mvalue & MUTEX_TYPE_MASK);
-    shared = (mvalue & MUTEX_SHARED_MASK);
+#if defined(__LP64__)
+  return __futex_wait_ex(&mutex->state, shared, old_state, rel_timeout);
 
-    /* Handle common case first */
-    if ( __predict_true(mtype == MUTEX_TYPE_BITS_NORMAL) )
-    {
-        if (__bionic_cmpxchg(shared|MUTEX_STATE_BITS_UNLOCKED,
-                             shared|MUTEX_STATE_BITS_LOCKED_UNCONTENDED,
-                             &mutex->value) == 0) {
-            ANDROID_MEMBAR_FULL();
-            return 0;
-        }
+#else
+  // This implementation works only when the layout of pthread_mutex_internal_t matches below expectation.
+  // And it is based on the assumption that Android is always in little-endian devices.
+  static_assert(offsetof(pthread_mutex_internal_t, state) == 0, "");
+  static_assert(offsetof(pthread_mutex_internal_t, owner_tid) == 2, "");
 
-        return EBUSY;
+  uint32_t owner_tid = atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed);
+  return __futex_wait_ex(&mutex->state, shared, (owner_tid << 16) | old_state, rel_timeout);
+#endif
+}
+
+static int __pthread_mutex_lock_with_timeout(pthread_mutex_internal_t* mutex,
+                                           const timespec* abs_timeout_or_null, clockid_t clock) {
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
+
+    // Handle common case first.
+    if ( __predict_true(mtype == MUTEX_TYPE_BITS_NORMAL) ) {
+        return __pthread_normal_mutex_lock(mutex, shared, abs_timeout_or_null, clock);
     }
 
-    /* Do we already own this recursive or error-check mutex ? */
-    tid = __get_thread()->tid;
-    if ( tid == MUTEX_OWNER_FROM_BITS(mvalue) )
-        return _recursive_increment(mutex, mvalue, mtype);
+    // Do we already own this recursive or error-check mutex?
+    pid_t tid = __get_thread()->tid;
+    if (tid == atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed)) {
+        if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
+            return EDEADLK;
+        }
+        return __recursive_increment(mutex, old_state);
+    }
 
-    /* Same as pthread_mutex_lock, except that we don't want to wait, and
-     * the only operation that can succeed is a single cmpxchg to acquire the
-     * lock if it is released / not owned by anyone. No need for a complex loop.
-     */
-    mtype |= shared | MUTEX_STATE_BITS_UNLOCKED;
-    mvalue = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+    const uint16_t unlocked           = mtype | shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_uncontended = mtype | shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+    const uint16_t locked_contended   = mtype | shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
 
-    if (__predict_true(__bionic_cmpxchg(mtype, mvalue, &mutex->value) == 0)) {
-        ANDROID_MEMBAR_FULL();
+    // First, if the mutex is unlocked, try to quickly acquire it.
+    // In the optimistic case where this works, set the state to locked_uncontended.
+    if (old_state == unlocked) {
+        // If exchanged successfully, an acquire fence is required to make
+        // all memory accesses made by other threads visible to the current CPU.
+        if (__predict_true(atomic_compare_exchange_strong_explicit(&mutex->state, &old_state,
+                             locked_uncontended, memory_order_acquire, memory_order_relaxed))) {
+            atomic_store_explicit(&mutex->owner_tid, tid, memory_order_relaxed);
+            return 0;
+        }
+    }
+
+    ScopedTrace trace("Contending for pthread mutex");
+
+    while (true) {
+        if (old_state == unlocked) {
+            // NOTE: We put the state to locked_contended since we _know_ there
+            // is contention when we are in this loop. This ensures all waiters
+            // will be unlocked.
+
+            // If exchanged successfully, an acquire fence is required to make
+            // all memory accesses made by other threads visible to the current CPU.
+            if (__predict_true(atomic_compare_exchange_weak_explicit(&mutex->state,
+                                                                     &old_state, locked_contended,
+                                                                     memory_order_acquire,
+                                                                     memory_order_relaxed))) {
+                atomic_store_explicit(&mutex->owner_tid, tid, memory_order_relaxed);
+                return 0;
+            }
+            continue;
+        } else if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(old_state)) {
+            // We should set it to locked_contended beforing going to sleep. This can make
+            // sure waiters will be woken up eventually.
+
+            int new_state = MUTEX_STATE_BITS_FLIP_CONTENTION(old_state);
+            if (__predict_false(!atomic_compare_exchange_weak_explicit(&mutex->state,
+                                                                       &old_state, new_state,
+                                                                       memory_order_relaxed,
+                                                                       memory_order_relaxed))) {
+                continue;
+            }
+            old_state = new_state;
+        }
+
+        // We are in locked_contended state, sleep until someone wakes us up.
+        timespec ts;
+        timespec* rel_timeout = NULL;
+        if (abs_timeout_or_null != NULL) {
+            rel_timeout = &ts;
+            if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, clock)) {
+                return ETIMEDOUT;
+            }
+        }
+        if (__recursive_or_errorcheck_mutex_wait(mutex, shared, old_state, rel_timeout) == -ETIMEDOUT) {
+            return ETIMEDOUT;
+        }
+        old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    }
+}
+
+int pthread_mutex_lock(pthread_mutex_t* mutex_interface) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
+
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
+    // Avoid slowing down fast path of normal mutex lock operation.
+    if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
+      if (__predict_true(__pthread_normal_mutex_trylock(mutex, shared) == 0)) {
+        return 0;
+      }
+    }
+    return __pthread_mutex_lock_with_timeout(mutex, NULL, 0);
+}
+
+int pthread_mutex_unlock(pthread_mutex_t* mutex_interface) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
+
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype  = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
+
+    // Handle common case first.
+    if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
+        __pthread_normal_mutex_unlock(mutex, shared);
         return 0;
     }
 
+    // Do we already own this recursive or error-check mutex?
+    pid_t tid = __get_thread()->tid;
+    if ( tid != atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed) ) {
+        return EPERM;
+    }
+
+    // If the counter is > 0, we can simply decrement it atomically.
+    // Since other threads can mutate the lower state bits (and only the
+    // lower state bits), use a compare_exchange loop to do it.
+    if (!MUTEX_COUNTER_BITS_IS_ZERO(old_state)) {
+        // We still own the mutex, so a release fence is not needed.
+        atomic_fetch_sub_explicit(&mutex->state, MUTEX_COUNTER_BITS_ONE, memory_order_relaxed);
+        return 0;
+    }
+
+    // The counter is 0, so we'are going to unlock the mutex by resetting its
+    // state to unlocked, we need to perform a atomic_exchange inorder to read
+    // the current state, which will be locked_contended if there may have waiters
+    // to awake.
+    // A release fence is required to make previous stores visible to next
+    // lock owner threads.
+    atomic_store_explicit(&mutex->owner_tid, 0, memory_order_relaxed);
+    const uint16_t unlocked = mtype | shared | MUTEX_STATE_BITS_UNLOCKED;
+    old_state = atomic_exchange_explicit(&mutex->state, unlocked, memory_order_release);
+    if (MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(old_state)) {
+        __futex_wake_ex(&mutex->state, shared, 1);
+    }
+
+    return 0;
+}
+
+int pthread_mutex_trylock(pthread_mutex_t* mutex_interface) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
+
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype  = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
+
+    const uint16_t unlocked           = mtype | shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_uncontended = mtype | shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+
+    // Handle common case first.
+    if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
+        return __pthread_normal_mutex_trylock(mutex, shared);
+    }
+
+    // Do we already own this recursive or error-check mutex?
+    pid_t tid = __get_thread()->tid;
+    if (tid == atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed)) {
+        if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
+            return EBUSY;
+        }
+        return __recursive_increment(mutex, old_state);
+    }
+
+    // Same as pthread_mutex_lock, except that we don't want to wait, and
+    // the only operation that can succeed is a single compare_exchange to acquire the
+    // lock if it is released / not owned by anyone. No need for a complex loop.
+    // If exchanged successfully, an acquire fence is required to make
+    // all memory accesses made by other threads visible to the current CPU.
+    old_state = unlocked;
+    if (__predict_true(atomic_compare_exchange_strong_explicit(&mutex->state, &old_state,
+                                                               locked_uncontended,
+                                                               memory_order_acquire,
+                                                               memory_order_relaxed))) {
+        atomic_store_explicit(&mutex->owner_tid, tid, memory_order_relaxed);
+        return 0;
+    }
     return EBUSY;
 }
 
-static int __pthread_mutex_timedlock(pthread_mutex_t* mutex, const timespec* abs_timeout, clockid_t clock) {
-  timespec ts;
-
-  int mvalue = mutex->value;
-  int mtype  = (mvalue & MUTEX_TYPE_MASK);
-  int shared = (mvalue & MUTEX_SHARED_MASK);
-
-  // Handle common case first.
-  if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
-    const int unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
-    const int locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-    const int locked_contended   = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-
-    // Fast path for uncontended lock. Note: MUTEX_TYPE_BITS_NORMAL is 0.
-    if (__bionic_cmpxchg(unlocked, locked_uncontended, &mutex->value) == 0) {
-      ANDROID_MEMBAR_FULL();
-      return 0;
-    }
-
-    // Loop while needed.
-    while (__bionic_swap(locked_contended, &mutex->value) != unlocked) {
-      if (__timespec_from_absolute(&ts, abs_timeout, clock) < 0) {
-        return ETIMEDOUT;
-      }
-      __futex_wait_ex(&mutex->value, shared, locked_contended, &ts);
-    }
-    ANDROID_MEMBAR_FULL();
-    return 0;
-  }
-
-  // Do we already own this recursive or error-check mutex?
-  pid_t tid = __get_thread()->tid;
-  if (tid == MUTEX_OWNER_FROM_BITS(mvalue)) {
-    return _recursive_increment(mutex, mvalue, mtype);
-  }
-
-  // The following implements the same loop as pthread_mutex_lock_impl
-  // but adds checks to ensure that the operation never exceeds the
-  // absolute expiration time.
-  mtype |= shared;
-
-  // First try a quick lock.
-  if (mvalue == mtype) {
-    mvalue = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-    if (__predict_true(__bionic_cmpxchg(mtype, mvalue, &mutex->value) == 0)) {
-      ANDROID_MEMBAR_FULL();
-      return 0;
-    }
-    mvalue = mutex->value;
-  }
-
-  while (true) {
-    // If the value is 'unlocked', try to acquire it directly.
-    // NOTE: put state to 2 since we know there is contention.
-    if (mvalue == mtype) { // Unlocked.
-      mvalue = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-      if (__bionic_cmpxchg(mtype, mvalue, &mutex->value) == 0) {
-        ANDROID_MEMBAR_FULL();
-        return 0;
-      }
-      // The value changed before we could lock it. We need to check
-      // the time to avoid livelocks, reload the value, then loop again.
-      if (__timespec_from_absolute(&ts, abs_timeout, clock) < 0) {
-        return ETIMEDOUT;
-      }
-
-      mvalue = mutex->value;
-      continue;
-    }
-
-    // The value is locked. If 'uncontended', try to switch its state
-    // to 'contented' to ensure we get woken up later.
-    if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(mvalue)) {
-      int newval = MUTEX_STATE_BITS_FLIP_CONTENTION(mvalue);
-      if (__bionic_cmpxchg(mvalue, newval, &mutex->value) != 0) {
-        // This failed because the value changed, reload it.
-        mvalue = mutex->value;
-      } else {
-        // This succeeded, update mvalue.
-        mvalue = newval;
-      }
-    }
-
-    // Check time and update 'ts'.
-    if (__timespec_from_absolute(&ts, abs_timeout, clock) < 0) {
-      return ETIMEDOUT;
-    }
-
-    // Only wait to be woken up if the state is '2', otherwise we'll
-    // simply loop right now. This can happen when the second cmpxchg
-    // in our loop failed because the mutex was unlocked by another thread.
-    if (MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(mvalue)) {
-      if (__futex_wait_ex(&mutex->value, shared, mvalue, &ts) == -ETIMEDOUT) {
-        return ETIMEDOUT;
-      }
-      mvalue = mutex->value;
-    }
-  }
-  /* NOTREACHED */
-}
-
 #if !defined(__LP64__)
-extern "C" int pthread_mutex_lock_timeout_np(pthread_mutex_t* mutex, unsigned ms) {
-  timespec abs_timeout;
-  clock_gettime(CLOCK_MONOTONIC, &abs_timeout);
-  abs_timeout.tv_sec  += ms / 1000;
-  abs_timeout.tv_nsec += (ms % 1000) * 1000000;
-  if (abs_timeout.tv_nsec >= 1000000000) {
-    abs_timeout.tv_sec++;
-    abs_timeout.tv_nsec -= 1000000000;
-  }
+extern "C" int pthread_mutex_lock_timeout_np(pthread_mutex_t* mutex_interface, unsigned ms) {
+    timespec abs_timeout;
+    clock_gettime(CLOCK_MONOTONIC, &abs_timeout);
+    abs_timeout.tv_sec  += ms / 1000;
+    abs_timeout.tv_nsec += (ms % 1000) * 1000000;
+    if (abs_timeout.tv_nsec >= NS_PER_S) {
+        abs_timeout.tv_sec++;
+        abs_timeout.tv_nsec -= NS_PER_S;
+    }
 
-  int error = __pthread_mutex_timedlock(mutex, &abs_timeout, CLOCK_MONOTONIC);
-  if (error == ETIMEDOUT) {
-    error = EBUSY;
-  }
-  return error;
+    int error = __pthread_mutex_lock_with_timeout(__get_internal_mutex(mutex_interface),
+                                                  &abs_timeout, CLOCK_MONOTONIC);
+    if (error == ETIMEDOUT) {
+        error = EBUSY;
+    }
+    return error;
 }
 #endif
 
-int pthread_mutex_timedlock(pthread_mutex_t* mutex, const timespec* abs_timeout) {
-  return __pthread_mutex_timedlock(mutex, abs_timeout, CLOCK_REALTIME);
+int pthread_mutex_timedlock(pthread_mutex_t* mutex_interface, const timespec* abs_timeout) {
+    return __pthread_mutex_lock_with_timeout(__get_internal_mutex(mutex_interface),
+                                             abs_timeout, CLOCK_REALTIME);
 }
 
-int pthread_mutex_destroy(pthread_mutex_t* mutex) {
-  // Use trylock to ensure that the mutex is valid and not already locked.
-  int error = pthread_mutex_trylock(mutex);
-  if (error != 0) {
-    return error;
-  }
-  mutex->value = 0xdead10cc;
-  return 0;
+int pthread_mutex_destroy(pthread_mutex_t* mutex_interface) {
+    // Use trylock to ensure that the mutex is valid and not already locked.
+    int error = pthread_mutex_trylock(mutex_interface);
+    if (error != 0) {
+        return error;
+    }
+    return 0;
 }
diff --git a/libc/bionic/pthread_once.cpp b/libc/bionic/pthread_once.cpp
index 6d9d7d1..7688a23 100644
--- a/libc/bionic/pthread_once.cpp
+++ b/libc/bionic/pthread_once.cpp
@@ -27,74 +27,59 @@
  */
 
 #include <pthread.h>
+#include <stdatomic.h>
 
-#include "private/bionic_atomic_inline.h"
 #include "private/bionic_futex.h"
 
-#define ONCE_INITIALIZING           (1 << 0)
-#define ONCE_COMPLETED              (1 << 1)
+#define ONCE_INITIALIZATION_NOT_YET_STARTED   0
+#define ONCE_INITIALIZATION_UNDERWAY          1
+#define ONCE_INITIALIZATION_COMPLETE          2
 
 /* NOTE: this implementation doesn't support a init function that throws a C++ exception
  *       or calls fork()
  */
 int pthread_once(pthread_once_t* once_control, void (*init_routine)(void)) {
-  volatile pthread_once_t* once_control_ptr = once_control;
+  static_assert(sizeof(atomic_int) == sizeof(pthread_once_t),
+                "pthread_once_t should actually be atomic_int in implementation.");
 
-  // PTHREAD_ONCE_INIT is 0, we use the following bit flags
-  //   bit 0 set  -> initialization is under way
-  //   bit 1 set  -> initialization is complete
+  // We prefer casting to atomic_int instead of declaring pthread_once_t to be atomic_int directly.
+  // Because using the second method pollutes pthread.h, and causes an error when compiling libcxx.
+  atomic_int* once_control_ptr = reinterpret_cast<atomic_int*>(once_control);
 
   // First check if the once is already initialized. This will be the common
   // case and we want to make this as fast as possible. Note that this still
   // requires a load_acquire operation here to ensure that all the
   // stores performed by the initialization function are observable on
   // this CPU after we exit.
-  if (__predict_true((*once_control_ptr & ONCE_COMPLETED) != 0)) {
-    ANDROID_MEMBAR_FULL();
-    return 0;
-  }
+  int old_value = atomic_load_explicit(once_control_ptr, memory_order_acquire);
 
   while (true) {
-    // Try to atomically set the INITIALIZING flag.
-    // This requires a cmpxchg loop, and we may need
-    // to exit prematurely if we detect that
-    // COMPLETED is now set.
-    int32_t  old_value, new_value;
-
-    do {
-      old_value = *once_control_ptr;
-      if ((old_value & ONCE_COMPLETED) != 0) {
-        break;
-      }
-
-      new_value = old_value | ONCE_INITIALIZING;
-    } while (__bionic_cmpxchg(old_value, new_value, once_control_ptr) != 0);
-
-    if ((old_value & ONCE_COMPLETED) != 0) {
-      // We detected that COMPLETED was set while in our loop.
-      ANDROID_MEMBAR_FULL();
+    if (__predict_true(old_value == ONCE_INITIALIZATION_COMPLETE)) {
       return 0;
     }
 
-    if ((old_value & ONCE_INITIALIZING) == 0) {
-      // We got there first, we can jump out of the loop to handle the initialization.
-      break;
+    // Try to atomically set the initialization underway flag. This requires a compare exchange
+    // in a loop, and we may need to exit prematurely if the initialization is complete.
+    if (!atomic_compare_exchange_weak_explicit(once_control_ptr, &old_value,
+                                               ONCE_INITIALIZATION_UNDERWAY,
+                                               memory_order_acquire, memory_order_acquire)) {
+      continue;
     }
 
-    // Another thread is running the initialization and hasn't completed
-    // yet, so wait for it, then try again.
+    if (old_value == ONCE_INITIALIZATION_NOT_YET_STARTED) {
+      // We got here first, we can handle the initialization.
+      (*init_routine)();
+
+      // Do a store_release indicating that initialization is complete.
+      atomic_store_explicit(once_control_ptr, ONCE_INITIALIZATION_COMPLETE, memory_order_release);
+
+      // Wake up any waiters, if any.
+      __futex_wake_ex(once_control_ptr, 0, INT_MAX);
+      return 0;
+    }
+
+    // The initialization is underway, wait for its finish.
     __futex_wait_ex(once_control_ptr, 0, old_value, NULL);
+    old_value = atomic_load_explicit(once_control_ptr, memory_order_acquire);
   }
-
-  // Call the initialization function.
-  (*init_routine)();
-
-  // Do a store_release indicating that initialization is complete.
-  ANDROID_MEMBAR_FULL();
-  *once_control_ptr = ONCE_COMPLETED;
-
-  // Wake up any waiters, if any.
-  __futex_wake_ex(once_control_ptr, 0, INT_MAX);
-
-  return 0;
 }
diff --git a/libc/bionic/pthread_rwlock.cpp b/libc/bionic/pthread_rwlock.cpp
index 063137b..934210e 100644
--- a/libc/bionic/pthread_rwlock.cpp
+++ b/libc/bionic/pthread_rwlock.cpp
@@ -27,9 +27,13 @@
  */
 
 #include <errno.h>
+#include <stdatomic.h>
+#include <string.h>
 
 #include "pthread_internal.h"
 #include "private/bionic_futex.h"
+#include "private/bionic_lock.h"
+#include "private/bionic_time_conversions.h"
 
 /* Technical note:
  *
@@ -51,35 +55,39 @@
  *  - This implementation will return EDEADLK in "write after write" and "read after
  *    write" cases and will deadlock in write after read case.
  *
- * TODO: VERY CAREFULLY convert this to use C++11 atomics when possible. All volatile
- * members of pthread_rwlock_t should be converted to atomics<> and __sync_bool_compare_and_swap
- * should be changed to compare_exchange_strong accompanied by the proper ordering
- * constraints (comments have been added with the intending ordering across the code).
- *
- * TODO: As it stands now, pending_readers and pending_writers could be merged into a
- * a single waiters variable.  Keeping them separate adds a bit of clarity and keeps
- * the door open for a writer-biased implementation.
- *
  */
 
-#define RWLOCKATTR_DEFAULT     0
-#define RWLOCKATTR_SHARED_MASK 0x0010
+// A rwlockattr is implemented as a 32-bit integer which has following fields:
+//  bits    name              description
+//   1     rwlock_kind       have rwlock preference like PTHREAD_RWLOCK_PREFER_READER_NP.
+//   0      process_shared    set to 1 if the rwlock is shared between processes.
 
-static inline bool rwlock_is_shared(const pthread_rwlock_t* rwlock) {
-  return rwlock->attr == PTHREAD_PROCESS_SHARED;
+#define RWLOCKATTR_PSHARED_SHIFT 0
+#define RWLOCKATTR_KIND_SHIFT    1
+
+#define RWLOCKATTR_PSHARED_MASK  1
+#define RWLOCKATTR_KIND_MASK     2
+#define RWLOCKATTR_RESERVED_MASK (~3)
+
+static inline __always_inline __always_inline bool __rwlockattr_getpshared(const pthread_rwlockattr_t* attr) {
+  return (*attr & RWLOCKATTR_PSHARED_MASK) >> RWLOCKATTR_PSHARED_SHIFT;
 }
 
-static bool timespec_from_absolute(timespec* rel_timeout, const timespec* abs_timeout) {
-  if (abs_timeout != NULL) {
-    if (__timespec_from_absolute(rel_timeout, abs_timeout, CLOCK_REALTIME) < 0) {
-      return false;
-    }
-  }
-  return true;
+static inline __always_inline __always_inline void __rwlockattr_setpshared(pthread_rwlockattr_t* attr, int pshared) {
+  *attr = (*attr & ~RWLOCKATTR_PSHARED_MASK) | (pshared << RWLOCKATTR_PSHARED_SHIFT);
 }
 
+static inline __always_inline int __rwlockattr_getkind(const pthread_rwlockattr_t* attr) {
+  return (*attr & RWLOCKATTR_KIND_MASK) >> RWLOCKATTR_KIND_SHIFT;
+}
+
+static inline __always_inline void __rwlockattr_setkind(pthread_rwlockattr_t* attr, int kind) {
+  *attr = (*attr & ~RWLOCKATTR_KIND_MASK) | (kind << RWLOCKATTR_KIND_SHIFT);
+}
+
+
 int pthread_rwlockattr_init(pthread_rwlockattr_t* attr) {
-  *attr = PTHREAD_PROCESS_PRIVATE;
+  *attr = 0;
   return 0;
 }
 
@@ -88,193 +96,412 @@
   return 0;
 }
 
+int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t* attr, int* pshared) {
+  if (__rwlockattr_getpshared(attr)) {
+    *pshared = PTHREAD_PROCESS_SHARED;
+  } else {
+    *pshared = PTHREAD_PROCESS_PRIVATE;
+  }
+  return 0;
+}
+
 int pthread_rwlockattr_setpshared(pthread_rwlockattr_t* attr, int pshared) {
   switch (pshared) {
     case PTHREAD_PROCESS_PRIVATE:
+      __rwlockattr_setpshared(attr, 0);
+      return 0;
     case PTHREAD_PROCESS_SHARED:
-      *attr = pshared;
+      __rwlockattr_setpshared(attr, 1);
       return 0;
     default:
       return EINVAL;
   }
 }
 
-int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t* attr, int* pshared) {
-  *pshared = *attr;
+int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t* attr, int* pref) {
+  *pref = __rwlockattr_getkind(attr);
   return 0;
 }
 
-int pthread_rwlock_init(pthread_rwlock_t* rwlock, const pthread_rwlockattr_t* attr) {
-  if (attr != NULL) {
-    switch (*attr) {
-      case PTHREAD_PROCESS_SHARED:
-      case PTHREAD_PROCESS_PRIVATE:
-        rwlock->attr= *attr;
+int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t* attr, int pref) {
+  switch (pref) {
+    case PTHREAD_RWLOCK_PREFER_READER_NP:   // Fall through.
+    case PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP:
+      __rwlockattr_setkind(attr, pref);
+      return 0;
+    default:
+      return EINVAL;
+  }
+}
+
+// A rwlock state is implemented as a 32-bit integer which has following rules:
+//  bits      name                              description
+//   31      owned_by_writer_flag              set to 1 if the lock is owned by a writer now.
+//  30-2     reader_count                      the count of readers holding the lock.
+//   1       have_pending_writers              set to 1 if having pending writers.
+//   0       have_pending_readers              set to 1 if having pending readers.
+
+#define STATE_HAVE_PENDING_READERS_SHIFT    0
+#define STATE_HAVE_PENDING_WRITERS_SHIFT    1
+#define STATE_READER_COUNT_SHIFT            2
+#define STATE_OWNED_BY_WRITER_SHIFT        31
+
+#define STATE_HAVE_PENDING_READERS_FLAG     (1 << STATE_HAVE_PENDING_READERS_SHIFT)
+#define STATE_HAVE_PENDING_WRITERS_FLAG     (1 << STATE_HAVE_PENDING_WRITERS_SHIFT)
+#define STATE_READER_COUNT_CHANGE_STEP  (1 << STATE_READER_COUNT_SHIFT)
+#define STATE_OWNED_BY_WRITER_FLAG      (1 << STATE_OWNED_BY_WRITER_SHIFT)
+
+#define STATE_HAVE_PENDING_READERS_OR_WRITERS_FLAG \
+          (STATE_HAVE_PENDING_READERS_FLAG | STATE_HAVE_PENDING_WRITERS_FLAG)
+
+struct pthread_rwlock_internal_t {
+  atomic_int state;
+  atomic_int writer_tid;
+
+  bool pshared;
+  bool writer_nonrecursive_preferred;
+  uint16_t __pad;
+
+// When a reader thread plans to suspend on the rwlock, it will add STATE_HAVE_PENDING_READERS_FLAG
+// in state, increase pending_reader_count, and wait on pending_reader_wakeup_serial. After woken
+// up, the reader thread decreases pending_reader_count, and the last pending reader thread should
+// remove STATE_HAVE_PENDING_READERS_FLAG in state. A pending writer thread works in a similar way,
+// except that it uses flag and members for writer threads.
+
+  Lock pending_lock;  // All pending members below are protected by pending_lock.
+  uint32_t pending_reader_count;  // Count of pending reader threads.
+  uint32_t pending_writer_count;  // Count of pending writer threads.
+  uint32_t pending_reader_wakeup_serial;  // Pending reader threads wait on this address by futex_wait.
+  uint32_t pending_writer_wakeup_serial;  // Pending writer threads wait on this address by futex_wait.
+
+#if defined(__LP64__)
+  char __reserved[20];
+#else
+  char __reserved[4];
+#endif
+};
+
+static inline __always_inline bool __state_owned_by_writer(int state) {
+  return state < 0;
+}
+
+static inline __always_inline bool __state_owned_by_readers(int state) {
+  // If state >= 0, the owned_by_writer_flag is not set.
+  // And if state >= STATE_READER_COUNT_CHANGE_STEP, the reader_count field is not empty.
+  return state >= STATE_READER_COUNT_CHANGE_STEP;
+}
+
+static inline __always_inline bool __state_owned_by_readers_or_writer(int state) {
+  return state < 0 || state >= STATE_READER_COUNT_CHANGE_STEP;
+}
+
+static inline __always_inline int __state_add_writer_flag(int state) {
+  return state | STATE_OWNED_BY_WRITER_FLAG;
+}
+
+static inline __always_inline bool __state_is_last_reader(int state) {
+  return (state >> STATE_READER_COUNT_SHIFT) == 1;
+}
+
+static inline __always_inline bool __state_have_pending_writers(int state) {
+  return state & STATE_HAVE_PENDING_WRITERS_FLAG;
+}
+
+static inline __always_inline bool __state_have_pending_readers_or_writers(int state) {
+  return state & STATE_HAVE_PENDING_READERS_OR_WRITERS_FLAG;
+}
+
+static_assert(sizeof(pthread_rwlock_t) == sizeof(pthread_rwlock_internal_t),
+              "pthread_rwlock_t should actually be pthread_rwlock_internal_t in implementation.");
+
+// For binary compatibility with old version of pthread_rwlock_t, we can't use more strict
+// alignment than 4-byte alignment.
+static_assert(alignof(pthread_rwlock_t) == 4,
+             "pthread_rwlock_t should fulfill the alignment requirement of pthread_rwlock_internal_t.");
+
+static inline __always_inline pthread_rwlock_internal_t* __get_internal_rwlock(pthread_rwlock_t* rwlock_interface) {
+  return reinterpret_cast<pthread_rwlock_internal_t*>(rwlock_interface);
+}
+
+int pthread_rwlock_init(pthread_rwlock_t* rwlock_interface, const pthread_rwlockattr_t* attr) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
+  memset(rwlock, 0, sizeof(pthread_rwlock_internal_t));
+
+  if (__predict_false(attr != NULL)) {
+    rwlock->pshared = __rwlockattr_getpshared(attr);
+    int kind = __rwlockattr_getkind(attr);
+    switch (kind) {
+      case PTHREAD_RWLOCK_PREFER_READER_NP:
+        rwlock->writer_nonrecursive_preferred = false;
+        break;
+      case PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP:
+        rwlock->writer_nonrecursive_preferred = true;
         break;
       default:
         return EINVAL;
     }
+    if ((*attr & RWLOCKATTR_RESERVED_MASK) != 0) {
+      return EINVAL;
+    }
   }
 
-  rwlock->state = 0;
-  rwlock->pending_readers = 0;
-  rwlock->pending_writers = 0;
-  rwlock->writer_thread_id = 0;
-
+  atomic_init(&rwlock->state, 0);
+  rwlock->pending_lock.init(rwlock->pshared);
   return 0;
 }
 
-int pthread_rwlock_destroy(pthread_rwlock_t* rwlock) {
-  if (rwlock->state != 0) {
+int pthread_rwlock_destroy(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
+  if (atomic_load_explicit(&rwlock->state, memory_order_relaxed) != 0) {
     return EBUSY;
   }
   return 0;
 }
 
-static int __pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
-  if (__predict_false(__get_thread()->tid == rwlock->writer_thread_id)) {
+static inline __always_inline bool __can_acquire_read_lock(int old_state,
+                                                             bool writer_nonrecursive_preferred) {
+  // If writer is preferred with nonrecursive reader, we prevent further readers from acquiring
+  // the lock when there are writers waiting for the lock.
+  bool cannot_apply = __state_owned_by_writer(old_state) ||
+                      (writer_nonrecursive_preferred && __state_have_pending_writers(old_state));
+  return !cannot_apply;
+}
+
+static inline __always_inline int __pthread_rwlock_tryrdlock(pthread_rwlock_internal_t* rwlock) {
+  int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+
+  while (__predict_true(__can_acquire_read_lock(old_state, rwlock->writer_nonrecursive_preferred))) {
+
+    int new_state = old_state + STATE_READER_COUNT_CHANGE_STEP;
+    if (__predict_false(!__state_owned_by_readers(new_state))) { // Happens when reader count overflows.
+      return EAGAIN;
+    }
+    if (__predict_true(atomic_compare_exchange_weak_explicit(&rwlock->state, &old_state, new_state,
+                                              memory_order_acquire, memory_order_relaxed))) {
+      return 0;
+    }
+  }
+  return EBUSY;
+}
+
+static int __pthread_rwlock_timedrdlock(pthread_rwlock_internal_t* rwlock,
+                                        const timespec* abs_timeout_or_null) {
+
+  if (atomic_load_explicit(&rwlock->writer_tid, memory_order_relaxed) == __get_thread()->tid) {
     return EDEADLK;
   }
 
-  timespec ts;
-  timespec* rel_timeout = (abs_timeout == NULL) ? NULL : &ts;
-  bool done = false;
-  do {
-    // This is actually a race read as there's nothing that guarantees the atomicity of integer
-    // reads / writes. However, in practice this "never" happens so until we switch to C++11 this
-    // should work fine. The same applies in the other places this idiom is used.
-    int32_t cur_state = rwlock->state;  // C++11 relaxed atomic read
-    if (__predict_true(cur_state >= 0)) {
-      // Add as an extra reader.
-      done = __sync_bool_compare_and_swap(&rwlock->state, cur_state, cur_state + 1);  // C++11 memory_order_aquire
-    } else {
-      if (!timespec_from_absolute(rel_timeout, abs_timeout)) {
-        return ETIMEDOUT;
-      }
-      // Owner holds it in write mode, hang up.
-      // To avoid losing wake ups the pending_readers update and the state read should be
-      // sequentially consistent. (currently enforced by __sync_fetch_and_add which creates a full barrier)
-      __sync_fetch_and_add(&rwlock->pending_readers, 1);  // C++11 memory_order_relaxed (if the futex_wait ensures the ordering)
-      int ret = __futex_wait_ex(&rwlock->state, rwlock_is_shared(rwlock), cur_state, rel_timeout);
-      __sync_fetch_and_sub(&rwlock->pending_readers, 1);  // C++11 memory_order_relaxed
-      if (ret == -ETIMEDOUT) {
+  while (true) {
+    int ret = __pthread_rwlock_tryrdlock(rwlock);
+    if (ret == 0 || ret == EAGAIN) {
+      return ret;
+    }
+
+    int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+    if (__can_acquire_read_lock(old_state, rwlock->writer_nonrecursive_preferred)) {
+      continue;
+    }
+
+    timespec ts;
+    timespec* rel_timeout = NULL;
+
+    if (abs_timeout_or_null != NULL) {
+      rel_timeout = &ts;
+      if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, CLOCK_REALTIME)) {
         return ETIMEDOUT;
       }
     }
-  } while (!done);
 
-  return 0;
+    rwlock->pending_lock.lock();
+    rwlock->pending_reader_count++;
+
+    // We rely on the fact that all atomic exchange operations on the same object (here it is
+    // rwlock->state) always appear to occur in a single total order. If the pending flag is added
+    // before unlocking, the unlocking thread will wakeup the waiter. Otherwise, we will see the
+    // state is unlocked and will not wait anymore.
+    old_state = atomic_fetch_or_explicit(&rwlock->state, STATE_HAVE_PENDING_READERS_FLAG,
+                                         memory_order_relaxed);
+
+    int old_serial = rwlock->pending_reader_wakeup_serial;
+    rwlock->pending_lock.unlock();
+
+    int futex_ret = 0;
+    if (!__can_acquire_read_lock(old_state, rwlock->writer_nonrecursive_preferred)) {
+      futex_ret = __futex_wait_ex(&rwlock->pending_reader_wakeup_serial, rwlock->pshared,
+                                  old_serial, rel_timeout);
+    }
+
+    rwlock->pending_lock.lock();
+    rwlock->pending_reader_count--;
+    if (rwlock->pending_reader_count == 0) {
+      atomic_fetch_and_explicit(&rwlock->state, ~STATE_HAVE_PENDING_READERS_FLAG,
+                                memory_order_relaxed);
+    }
+    rwlock->pending_lock.unlock();
+
+    if (futex_ret == -ETIMEDOUT) {
+      return ETIMEDOUT;
+    }
+  }
 }
 
-static int __pthread_rwlock_timedwrlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
-  int tid = __get_thread()->tid;
-  if (__predict_false(tid == rwlock->writer_thread_id)) {
+static inline __always_inline bool __can_acquire_write_lock(int old_state) {
+  return !__state_owned_by_readers_or_writer(old_state);
+}
+
+static inline __always_inline int __pthread_rwlock_trywrlock(pthread_rwlock_internal_t* rwlock) {
+  int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+
+  while (__predict_true(__can_acquire_write_lock(old_state))) {
+    if (__predict_true(atomic_compare_exchange_weak_explicit(&rwlock->state, &old_state,
+          __state_add_writer_flag(old_state), memory_order_acquire, memory_order_relaxed))) {
+
+      atomic_store_explicit(&rwlock->writer_tid, __get_thread()->tid, memory_order_relaxed);
+      return 0;
+    }
+  }
+  return EBUSY;
+}
+
+static int __pthread_rwlock_timedwrlock(pthread_rwlock_internal_t* rwlock,
+                                        const timespec* abs_timeout_or_null) {
+
+  if (atomic_load_explicit(&rwlock->writer_tid, memory_order_relaxed) == __get_thread()->tid) {
     return EDEADLK;
   }
+  while (true) {
+    int ret = __pthread_rwlock_trywrlock(rwlock);
+    if (ret == 0) {
+      return ret;
+    }
 
-  timespec ts;
-  timespec* rel_timeout = (abs_timeout == NULL) ? NULL : &ts;
-  bool done = false;
-  do {
-    int32_t cur_state = rwlock->state;
-    if (__predict_true(cur_state == 0)) {
-      // Change state from 0 to -1.
-      done =  __sync_bool_compare_and_swap(&rwlock->state, 0 /* cur state */, -1 /* new state */);  // C++11 memory_order_aquire
-    } else {
-      if (!timespec_from_absolute(rel_timeout, abs_timeout)) {
-        return ETIMEDOUT;
-      }
-      // Failed to acquire, hang up.
-      // To avoid losing wake ups the pending_writers update and the state read should be
-      // sequentially consistent. (currently enforced by __sync_fetch_and_add which creates a full barrier)
-      __sync_fetch_and_add(&rwlock->pending_writers, 1);  // C++11 memory_order_relaxed (if the futex_wait ensures the ordering)
-      int ret = __futex_wait_ex(&rwlock->state, rwlock_is_shared(rwlock), cur_state, rel_timeout);
-      __sync_fetch_and_sub(&rwlock->pending_writers, 1);  // C++11 memory_order_relaxed
-      if (ret == -ETIMEDOUT) {
+    int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+    if (__can_acquire_write_lock(old_state)) {
+      continue;
+    }
+
+    timespec ts;
+    timespec* rel_timeout = NULL;
+
+    if (abs_timeout_or_null != NULL) {
+      rel_timeout = &ts;
+      if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, CLOCK_REALTIME)) {
         return ETIMEDOUT;
       }
     }
-  } while (!done);
 
-  rwlock->writer_thread_id = tid;
-  return 0;
+    rwlock->pending_lock.lock();
+    rwlock->pending_writer_count++;
+
+    old_state = atomic_fetch_or_explicit(&rwlock->state, STATE_HAVE_PENDING_WRITERS_FLAG,
+                                         memory_order_relaxed);
+
+    int old_serial = rwlock->pending_writer_wakeup_serial;
+    rwlock->pending_lock.unlock();
+
+    int futex_ret = 0;
+    if (!__can_acquire_write_lock(old_state)) {
+      futex_ret = __futex_wait_ex(&rwlock->pending_writer_wakeup_serial, rwlock->pshared,
+                                  old_serial, rel_timeout);
+    }
+
+    rwlock->pending_lock.lock();
+    rwlock->pending_writer_count--;
+    if (rwlock->pending_writer_count == 0) {
+      atomic_fetch_and_explicit(&rwlock->state, ~STATE_HAVE_PENDING_WRITERS_FLAG,
+                                memory_order_relaxed);
+    }
+    rwlock->pending_lock.unlock();
+
+    if (futex_ret == -ETIMEDOUT) {
+      return ETIMEDOUT;
+    }
+  }
 }
 
-int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock) {
+int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+  // Avoid slowing down fast path of rdlock.
+  if (__predict_true(__pthread_rwlock_tryrdlock(rwlock) == 0)) {
+    return 0;
+  }
   return __pthread_rwlock_timedrdlock(rwlock, NULL);
 }
 
-int pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
+int pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock_interface, const timespec* abs_timeout) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
   return __pthread_rwlock_timedrdlock(rwlock, abs_timeout);
 }
 
-int pthread_rwlock_tryrdlock(pthread_rwlock_t* rwlock) {
-  int32_t cur_state = rwlock->state;
-  if ((cur_state >= 0) &&
-      __sync_bool_compare_and_swap(&rwlock->state, cur_state, cur_state + 1)) {  // C++11 memory_order_acquire
-    return 0;
-  }
-  return EBUSY;
+int pthread_rwlock_tryrdlock(pthread_rwlock_t* rwlock_interface) {
+  return __pthread_rwlock_tryrdlock(__get_internal_rwlock(rwlock_interface));
 }
 
-int pthread_rwlock_wrlock(pthread_rwlock_t* rwlock) {
+int pthread_rwlock_wrlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+  // Avoid slowing down fast path of wrlock.
+  if (__predict_true(__pthread_rwlock_trywrlock(rwlock) == 0)) {
+    return 0;
+  }
   return __pthread_rwlock_timedwrlock(rwlock, NULL);
 }
 
-int pthread_rwlock_timedwrlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
+int pthread_rwlock_timedwrlock(pthread_rwlock_t* rwlock_interface, const timespec* abs_timeout) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
   return __pthread_rwlock_timedwrlock(rwlock, abs_timeout);
 }
 
-int pthread_rwlock_trywrlock(pthread_rwlock_t* rwlock) {
-  int tid = __get_thread()->tid;
-  int32_t cur_state = rwlock->state;
-  if ((cur_state == 0) &&
-      __sync_bool_compare_and_swap(&rwlock->state, 0 /* cur state */, -1 /* new state */)) {  // C++11 memory_order_acquire
-    rwlock->writer_thread_id = tid;
-    return 0;
-  }
-  return EBUSY;
+int pthread_rwlock_trywrlock(pthread_rwlock_t* rwlock_interface) {
+  return __pthread_rwlock_trywrlock(__get_internal_rwlock(rwlock_interface));
 }
 
+int pthread_rwlock_unlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
 
-int pthread_rwlock_unlock(pthread_rwlock_t* rwlock) {
-  int tid = __get_thread()->tid;
-  bool done = false;
-  do {
-    int32_t cur_state = rwlock->state;
-    if (cur_state == 0) {
+  int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+  if (__state_owned_by_writer(old_state)) {
+    if (atomic_load_explicit(&rwlock->writer_tid, memory_order_relaxed) != __get_thread()->tid) {
       return EPERM;
     }
-    if (cur_state == -1) {
-      if (rwlock->writer_thread_id != tid) {
-        return EPERM;
-      }
-      // We're no longer the owner.
-      rwlock->writer_thread_id = 0;
-      // Change state from -1 to 0.
-      // We use __sync_bool_compare_and_swap to achieve sequential consistency of the state store and
-      // the following pendingX loads. A simple store with memory_order_release semantics
-      // is not enough to guarantee that the pendingX loads are not reordered before the
-      // store (which may lead to a lost wakeup).
-      __sync_bool_compare_and_swap( &rwlock->state, -1 /* cur state*/, 0 /* new state */);  // C++11 maybe memory_order_seq_cst?
-
-      // Wake any waiters.
-      if (__predict_false(rwlock->pending_readers > 0 || rwlock->pending_writers > 0)) {
-        __futex_wake_ex(&rwlock->state, rwlock_is_shared(rwlock), INT_MAX);
-      }
-      done = true;
-    } else { // cur_state > 0
-      // Reduce state by 1.
-      // See the comment above on why we need __sync_bool_compare_and_swap.
-      done = __sync_bool_compare_and_swap(&rwlock->state, cur_state, cur_state - 1);  // C++11 maybe memory_order_seq_cst?
-      if (done && (cur_state - 1) == 0) {
-        // There are no more readers, wake any waiters.
-        if (__predict_false(rwlock->pending_readers > 0 || rwlock->pending_writers > 0)) {
-          __futex_wake_ex(&rwlock->state, rwlock_is_shared(rwlock), INT_MAX);
-        }
-      }
+    atomic_store_explicit(&rwlock->writer_tid, 0, memory_order_relaxed);
+    old_state = atomic_fetch_and_explicit(&rwlock->state, ~STATE_OWNED_BY_WRITER_FLAG,
+                                          memory_order_release);
+    if (!__state_have_pending_readers_or_writers(old_state)) {
+      return 0;
     }
-  } while (!done);
 
+  } else if (__state_owned_by_readers(old_state)) {
+    old_state = atomic_fetch_sub_explicit(&rwlock->state, STATE_READER_COUNT_CHANGE_STEP,
+                                          memory_order_release);
+    if (!__state_is_last_reader(old_state) || !__state_have_pending_readers_or_writers(old_state)) {
+      return 0;
+    }
+
+  } else {
+    return EPERM;
+  }
+
+  // Wake up pending readers or writers.
+  rwlock->pending_lock.lock();
+  if (rwlock->pending_writer_count != 0) {
+    rwlock->pending_writer_wakeup_serial++;
+    rwlock->pending_lock.unlock();
+
+    __futex_wake_ex(&rwlock->pending_writer_wakeup_serial, rwlock->pshared, 1);
+
+  } else if (rwlock->pending_reader_count != 0) {
+    rwlock->pending_reader_wakeup_serial++;
+    rwlock->pending_lock.unlock();
+
+    __futex_wake_ex(&rwlock->pending_reader_wakeup_serial, rwlock->pshared, INT_MAX);
+
+  } else {
+    // It happens when waiters are woken up by timeout.
+    rwlock->pending_lock.unlock();
+  }
   return 0;
 }
diff --git a/libc/bionic/pthread_setname_np.cpp b/libc/bionic/pthread_setname_np.cpp
index 1ddf810..bb1114e 100644
--- a/libc/bionic/pthread_setname_np.cpp
+++ b/libc/bionic/pthread_setname_np.cpp
@@ -30,14 +30,14 @@
 
 #include <fcntl.h>
 #include <stdio.h> // For snprintf.
+#include <string.h>
 #include <sys/prctl.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
 
-#include "pthread_accessor.h"
-#include "pthread_internal.h"
 #include "private/ErrnoRestorer.h"
+#include "pthread_internal.h"
 
 // This value is not exported by kernel headers.
 #define MAX_TASK_COMM_LEN 16
@@ -57,17 +57,15 @@
   }
 
   // We have to change another thread's name.
-  pid_t tid = 0;
-  {
-    pthread_accessor thread(t);
-    if (thread.get() == NULL) {
-      return ESRCH;
-    }
-    tid = thread->tid;
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
+    return ENOENT;
   }
+  pid_t tid = thread->tid;
+
   char comm_name[sizeof(TASK_COMM_FMT) + 8];
   snprintf(comm_name, sizeof(comm_name), TASK_COMM_FMT, tid);
-  int fd = open(comm_name, O_WRONLY);
+  int fd = open(comm_name, O_CLOEXEC | O_WRONLY);
   if (fd == -1) {
     return errno;
   }
diff --git a/libc/bionic/pthread_setschedparam.cpp b/libc/bionic/pthread_setschedparam.cpp
index 419cc6f..0ad68bb 100644
--- a/libc/bionic/pthread_setschedparam.cpp
+++ b/libc/bionic/pthread_setschedparam.cpp
@@ -29,13 +29,13 @@
 #include <errno.h>
 
 #include "private/ErrnoRestorer.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_setschedparam(pthread_t t, int policy, const sched_param* param) {
   ErrnoRestorer errno_restorer;
 
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
diff --git a/libc/bionic/pty.cpp b/libc/bionic/pty.cpp
index 995e006..1a37847 100644
--- a/libc/bionic/pty.cpp
+++ b/libc/bionic/pty.cpp
@@ -28,13 +28,20 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <pty.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/ioctl.h>
 #include <termios.h>
 #include <unistd.h>
+#include <utmp.h>
 
-int getpt(void) {
+#include "private/ThreadLocalBuffer.h"
+
+static ThreadLocalBuffer<char, 32> g_ptsname_tls_buffer;
+static ThreadLocalBuffer<char, 64> g_ttyname_tls_buffer;
+
+int getpt() {
   return posix_openpt(O_RDWR|O_NOCTTY);
 }
 
@@ -47,8 +54,9 @@
 }
 
 char* ptsname(int fd) {
-  static char buf[64];
-  return ptsname_r(fd, buf, sizeof(buf)) == 0 ? buf : NULL;
+  char* buf = g_ptsname_tls_buffer.get();
+  int error = ptsname_r(fd, buf, g_ptsname_tls_buffer.size());
+  return (error == 0) ? buf : NULL;
 }
 
 int ptsname_r(int fd, char* buf, size_t len) {
@@ -72,8 +80,9 @@
 }
 
 char* ttyname(int fd) {
-  static char buf[64];
-  return ttyname_r(fd, buf, sizeof(buf)) == 0 ? buf : NULL;
+  char* buf = g_ttyname_tls_buffer.get();
+  int error = ttyname_r(fd, buf, g_ttyname_tls_buffer.size());
+  return (error == 0) ? buf : NULL;
 }
 
 int ttyname_r(int fd, char* buf, size_t len) {
@@ -105,3 +114,83 @@
   int unlock = 0;
   return ioctl(fd, TIOCSPTLCK, &unlock);
 }
+
+int openpty(int* master, int* slave, char* name, const termios* t, const winsize* ws) {
+  *master = getpt();
+  if (*master == -1) {
+    return -1;
+  }
+
+  if (grantpt(*master) == -1 || unlockpt(*master) == -1) {
+    close(*master);
+    return -1;
+  }
+
+  char buf[32];
+  if (name == NULL) {
+    name = buf;
+  }
+  if (ptsname_r(*master, name, sizeof(buf)) != 0) {
+    close(*master);
+    return -1;
+  }
+
+  *slave = open(name, O_RDWR|O_NOCTTY);
+  if (*slave == -1) {
+    close(*master);
+    return -1;
+  }
+
+  if (t != NULL) {
+    tcsetattr(*slave, TCSAFLUSH, t);
+  }
+  if (ws != NULL) {
+    ioctl(*slave, TIOCSWINSZ, ws);
+  }
+
+  return 0;
+}
+
+int forkpty(int* master, char* name, const termios* t, const winsize* ws) {
+  int slave;
+  if (openpty(master, &slave, name, t, ws) == -1) {
+    return -1;
+  }
+
+  pid_t pid = fork();
+  if (pid == -1) {
+    close(*master);
+    close(slave);
+    return -1;
+  }
+
+  if (pid == 0) {
+    // Child.
+    close(*master);
+    if (login_tty(slave) == -1) {
+      _exit(1);
+    }
+    return 0;
+  }
+
+  // Parent.
+  close(slave);
+  return pid;
+}
+
+int login_tty(int fd) {
+  setsid();
+
+  if (ioctl(fd, TIOCSCTTY, NULL) == -1) {
+    return -1;
+  }
+
+  dup2(fd, STDIN_FILENO);
+  dup2(fd, STDOUT_FILENO);
+  dup2(fd, STDERR_FILENO);
+  if (fd > STDERR_FILENO) {
+    close(fd);
+  }
+
+  return 0;
+}
diff --git a/libc/bionic/pututline.c b/libc/bionic/pututline.c
index c8427f7..8cbf470 100644
--- a/libc/bionic/pututline.c
+++ b/libc/bionic/pututline.c
@@ -36,7 +36,7 @@
     struct utmp u;
     long i;
 
-    if (!(f = fopen(_PATH_UTMP, "w+")))
+    if (!(f = fopen(_PATH_UTMP, "w+e")))
         return;
 
     while (fread(&u, sizeof(struct utmp), 1, f) == 1)
@@ -55,7 +55,7 @@
 
     fclose(f);
 
-    if (!(f = fopen(_PATH_UTMP, "w+")))
+    if (!(f = fopen(_PATH_UTMP, "w+e")))
         return;
     fwrite(utmp, sizeof(struct utmp), 1, f);
 
diff --git a/libc/bionic/raise.cpp b/libc/bionic/raise.cpp
index f69d90b..b134b5a 100644
--- a/libc/bionic/raise.cpp
+++ b/libc/bionic/raise.cpp
@@ -26,7 +26,9 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <pthread.h>
+#include <signal.h>
 
 int raise(int sig) {
   int rc = pthread_kill(pthread_self(), sig);
diff --git a/libc/bionic/readlink.cpp b/libc/bionic/readlink.cpp
index a2c5e91..a53f933 100644
--- a/libc/bionic/readlink.cpp
+++ b/libc/bionic/readlink.cpp
@@ -26,9 +26,12 @@
  * SUCH DAMAGE.
  */
 
+#undef _FORTIFY_SOURCE
+
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <unistd.h>
 
 ssize_t readlink(const char* path, char* buf, size_t size) {
   return readlinkat(AT_FDCWD, path, buf, size);
diff --git a/libc/bionic/scandir.cpp b/libc/bionic/scandir.cpp
index 9f731ab..ee62fee 100644
--- a/libc/bionic/scandir.cpp
+++ b/libc/bionic/scandir.cpp
@@ -18,6 +18,7 @@
 
 #include <errno.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "private/bionic_macros.h"
 #include "private/ScopedReaddir.h"
@@ -49,7 +50,8 @@
   bool Add(dirent* entry) {
     if (size_ >= capacity_) {
       size_t new_capacity = capacity_ + 32;
-      dirent** new_names = (dirent**) realloc(names_, new_capacity * sizeof(dirent*));
+      dirent** new_names =
+          reinterpret_cast<dirent**>(realloc(names_, new_capacity * sizeof(dirent*)));
       if (new_names == NULL) {
         return false;
       }
@@ -68,7 +70,8 @@
   void Sort(int (*comparator)(const dirent**, const dirent**)) {
     // If we have entries and a comparator, sort them.
     if (size_ > 0 && comparator != NULL) {
-      qsort(names_, size_, sizeof(dirent*), (int (*)(const void*, const void*)) comparator);
+      qsort(names_, size_, sizeof(dirent*),
+            reinterpret_cast<int (*)(const void*, const void*)>(comparator));
     }
   }
 
@@ -80,7 +83,7 @@
   static dirent* CopyDirent(dirent* original) {
     // Allocate the minimum number of bytes necessary, rounded up to a 4-byte boundary.
     size_t size = ((original->d_reclen + 3) & ~3);
-    dirent* copy = (dirent*) malloc(size);
+    dirent* copy = reinterpret_cast<dirent*>(malloc(size));
     memcpy(copy, original, original->d_reclen);
     return copy;
   }
diff --git a/libc/bionic/semaphore.c b/libc/bionic/semaphore.c
deleted file mode 100644
index 1fa019e..0000000
--- a/libc/bionic/semaphore.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <semaphore.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <time.h>
-#include <limits.h>
-
-#include "private/bionic_atomic_inline.h"
-#include "private/bionic_futex.h"
-
-/* In this implementation, a semaphore contains a
- * 31-bit signed value and a 1-bit 'shared' flag
- * (for process-sharing purpose).
- *
- * We use the value -1 to indicate contention on the
- * semaphore, 0 or more to indicate uncontended state,
- * any value lower than -2 is invalid at runtime.
- *
- * State diagram:
- *
- * post(1)  ==> 2
- * post(0)  ==> 1
- * post(-1) ==> 1, then wake all waiters
- *
- * wait(2)  ==> 1
- * wait(1)  ==> 0
- * wait(0)  ==> -1 then wait for a wake up + loop
- * wait(-1) ==> -1 then wait for a wake up + loop
- *
- */
-
-/* Use the upper 31-bits for the counter, and the lower one
- * for the shared flag.
- */
-#define SEMCOUNT_SHARED_MASK      0x00000001
-#define SEMCOUNT_VALUE_MASK       0xfffffffe
-#define SEMCOUNT_VALUE_SHIFT      1
-
-/* Maximum unsigned value that can be stored in the semaphore.
- * One bit is used for the shared flag, another one for the
- * sign bit, leaving us with only 30 bits.
- */
-#define SEM_MAX_VALUE             0x3fffffff
-
-/* convert a value into the corresponding sem->count bit pattern */
-#define SEMCOUNT_FROM_VALUE(val)    (((val) << SEMCOUNT_VALUE_SHIFT) & SEMCOUNT_VALUE_MASK)
-
-/* convert a sem->count bit pattern into the corresponding signed value */
-#define SEMCOUNT_TO_VALUE(sval)  ((int)(sval) >> SEMCOUNT_VALUE_SHIFT)
-
-/* the value +1 as a sem->count bit-pattern. */
-#define SEMCOUNT_ONE              SEMCOUNT_FROM_VALUE(1)
-
-/* the value -1 as a sem->count bit-pattern. */
-#define SEMCOUNT_MINUS_ONE        SEMCOUNT_FROM_VALUE(-1)
-
-#define SEMCOUNT_DECREMENT(sval)    (((sval) - (1U << SEMCOUNT_VALUE_SHIFT)) & SEMCOUNT_VALUE_MASK)
-#define SEMCOUNT_INCREMENT(sval)    (((sval) + (1U << SEMCOUNT_VALUE_SHIFT)) & SEMCOUNT_VALUE_MASK)
-
-/* return the shared bitflag from a semaphore */
-#define SEM_GET_SHARED(sem)       ((sem)->count & SEMCOUNT_SHARED_MASK)
-
-
-int sem_init(sem_t *sem, int pshared, unsigned int value)
-{
-    if (sem == NULL) {
-        errno = EINVAL;
-        return -1;
-    }
-
-    /* ensure that 'value' can be stored in the semaphore */
-    if (value > SEM_MAX_VALUE) {
-        errno = EINVAL;
-        return -1;
-    }
-
-    sem->count = SEMCOUNT_FROM_VALUE(value);
-    if (pshared != 0)
-        sem->count |= SEMCOUNT_SHARED_MASK;
-
-    return 0;
-}
-
-
-int sem_destroy(sem_t *sem)
-{
-    int count;
-
-    if (sem == NULL) {
-        errno = EINVAL;
-        return -1;
-    }
-    count = SEMCOUNT_TO_VALUE(sem->count);
-    if (count < 0) {
-        errno = EBUSY;
-        return -1;
-    }
-    sem->count = 0;
-    return 0;
-}
-
-
-sem_t *sem_open(const char *name __unused, int oflag __unused, ...)
-{
-    errno = ENOSYS;
-    return SEM_FAILED;
-}
-
-
-int sem_close(sem_t *sem)
-{
-    if (sem == NULL) {
-        errno = EINVAL;
-        return -1;
-    }
-    errno = ENOSYS;
-    return -1;
-}
-
-
-int sem_unlink(const char* name __unused)
-{
-    errno = ENOSYS;
-    return -1;
-}
-
-
-/* Decrement a semaphore's value atomically,
- * and return the old one. As a special case,
- * this returns immediately if the value is
- * negative (i.e. -1)
- */
-static int
-__sem_dec(volatile unsigned int *pvalue)
-{
-    unsigned int shared = (*pvalue & SEMCOUNT_SHARED_MASK);
-    unsigned int old, new;
-    int          ret;
-
-    do {
-        old = (*pvalue & SEMCOUNT_VALUE_MASK);
-        ret = SEMCOUNT_TO_VALUE(old);
-        if (ret < 0)
-            break;
-
-        new = SEMCOUNT_DECREMENT(old);
-    }
-    while (__bionic_cmpxchg((int)(old|shared),
-                            (int)(new|shared),
-                            (volatile int *)pvalue) != 0);
-    return ret;
-}
-
-/* Same as __sem_dec, but will not touch anything if the
- * value is already negative *or* 0. Returns the old value.
- */
-static int
-__sem_trydec(volatile unsigned int *pvalue)
-{
-    unsigned int shared = (*pvalue & SEMCOUNT_SHARED_MASK);
-    unsigned int old, new;
-    int          ret;
-
-    do {
-        old = (*pvalue & SEMCOUNT_VALUE_MASK);
-        ret = SEMCOUNT_TO_VALUE(old);
-        if (ret <= 0)
-            break;
-
-        new = SEMCOUNT_DECREMENT(old);
-    }
-    while (__bionic_cmpxchg((int)(old|shared),
-                            (int)(new|shared),
-                            (volatile int *)pvalue) != 0);
-
-    return ret;
-}
-
-
-/* "Increment" the value of a semaphore atomically and
- * return its old value. Note that this implements
- * the special case of "incrementing" any negative
- * value to +1 directly.
- *
- * NOTE: The value will _not_ wrap above SEM_VALUE_MAX
- */
-static int
-__sem_inc(volatile unsigned int *pvalue)
-{
-    unsigned int  shared = (*pvalue & SEMCOUNT_SHARED_MASK);
-    unsigned int  old, new;
-    int           ret;
-
-    do {
-        old = (*pvalue & SEMCOUNT_VALUE_MASK);
-        ret = SEMCOUNT_TO_VALUE(old);
-
-        /* Can't go higher than SEM_MAX_VALUE */
-        if (ret == SEM_MAX_VALUE)
-            break;
-
-        /* If the counter is negative, go directly to +1,
-         * otherwise just increment */
-        if (ret < 0)
-            new = SEMCOUNT_ONE;
-        else
-            new = SEMCOUNT_INCREMENT(old);
-    }
-    while ( __bionic_cmpxchg((int)(old|shared),
-                             (int)(new|shared),
-                             (volatile int*)pvalue) != 0);
-
-    return ret;
-}
-
-/* lock a semaphore */
-int sem_wait(sem_t *sem)
-{
-    unsigned shared;
-
-    if (sem == NULL) {
-        errno = EINVAL;
-        return -1;
-    }
-
-    shared = SEM_GET_SHARED(sem);
-
-    for (;;) {
-        if (__sem_dec(&sem->count) > 0)
-            break;
-
-        __futex_wait_ex(&sem->count, shared, shared|SEMCOUNT_MINUS_ONE, NULL);
-    }
-    ANDROID_MEMBAR_FULL();
-    return 0;
-}
-
-int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout)
-{
-    unsigned int shared;
-
-    if (sem == NULL) {
-        errno = EINVAL;
-        return -1;
-    }
-
-    /* POSIX says we need to try to decrement the semaphore
-     * before checking the timeout value. Note that if the
-     * value is currently 0, __sem_trydec() does nothing.
-     */
-    if (__sem_trydec(&sem->count) > 0) {
-        ANDROID_MEMBAR_FULL();
-        return 0;
-    }
-
-    /* Check it as per Posix */
-    if (abs_timeout == NULL    ||
-        abs_timeout->tv_sec < 0 ||
-        abs_timeout->tv_nsec < 0 ||
-        abs_timeout->tv_nsec >= 1000000000)
-    {
-        errno = EINVAL;
-        return -1;
-    }
-
-    shared = SEM_GET_SHARED(sem);
-
-    for (;;) {
-        struct timespec ts;
-        int             ret;
-
-        /* Posix mandates CLOCK_REALTIME here */
-        clock_gettime( CLOCK_REALTIME, &ts );
-        ts.tv_sec  = abs_timeout->tv_sec - ts.tv_sec;
-        ts.tv_nsec = abs_timeout->tv_nsec - ts.tv_nsec;
-        if (ts.tv_nsec < 0) {
-            ts.tv_nsec += 1000000000;
-            ts.tv_sec  -= 1;
-        }
-
-        if (ts.tv_sec < 0 || ts.tv_nsec < 0) {
-            errno = ETIMEDOUT;
-            return -1;
-        }
-
-        /* Try to grab the semaphore. If the value was 0, this
-         * will also change it to -1 */
-        if (__sem_dec(&sem->count) > 0) {
-            ANDROID_MEMBAR_FULL();
-            break;
-        }
-
-        /* Contention detected. wait for a wakeup event */
-        ret = __futex_wait_ex(&sem->count, shared, shared|SEMCOUNT_MINUS_ONE, &ts);
-
-        /* return in case of timeout or interrupt */
-        if (ret == -ETIMEDOUT || ret == -EINTR) {
-            errno = -ret;
-            return -1;
-        }
-    }
-    return 0;
-}
-
-/* Unlock a semaphore */
-int sem_post(sem_t *sem)
-{
-    unsigned int shared;
-    int          old;
-
-    if (sem == NULL)
-        return EINVAL;
-
-    shared = SEM_GET_SHARED(sem);
-
-    ANDROID_MEMBAR_FULL();
-    old = __sem_inc(&sem->count);
-    if (old < 0) {
-        /* contention on the semaphore, wake up all waiters */
-        __futex_wake_ex(&sem->count, shared, INT_MAX);
-    }
-    else if (old == SEM_MAX_VALUE) {
-        /* overflow detected */
-        errno = EOVERFLOW;
-        return -1;
-    }
-
-    return 0;
-}
-
-int  sem_trywait(sem_t *sem)
-{
-    if (sem == NULL) {
-        errno = EINVAL;
-        return -1;
-    }
-
-    if (__sem_trydec(&sem->count) > 0) {
-        ANDROID_MEMBAR_FULL();
-        return 0;
-    } else {
-        errno = EAGAIN;
-        return -1;
-    }
-}
-
-/* Note that Posix requires that sem_getvalue() returns, in
- * case of contention, the negative of the number of waiting
- * threads.
- *
- * However, code that depends on this negative value to be
- * meaningful is most probably racy. The GLibc sem_getvalue()
- * only returns the semaphore value, which is 0, in case of
- * contention, so we will mimick this behaviour here instead
- * for better compatibility.
- */
-int  sem_getvalue(sem_t *sem, int *sval)
-{
-    int  val;
-
-    if (sem == NULL || sval == NULL) {
-        errno = EINVAL;
-        return -1;
-    }
-
-    val = SEMCOUNT_TO_VALUE(sem->count);
-    if (val < 0)
-        val = 0;
-
-    *sval = val;
-    return 0;
-}
diff --git a/libc/bionic/semaphore.cpp b/libc/bionic/semaphore.cpp
new file mode 100644
index 0000000..0b04650
--- /dev/null
+++ b/libc/bionic/semaphore.cpp
@@ -0,0 +1,310 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 order requirements for POSIX semaphores appear unclear and are
+// currently interpreted inconsistently.
+// We conservatively prefer sequentially consistent operations for now.
+// CAUTION: This is more conservative than some other major implementations,
+// and may change if and when the issue is resolved.
+
+#include <semaphore.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdatomic.h>
+#include <sys/time.h>
+#include <time.h>
+
+#include "private/bionic_constants.h"
+#include "private/bionic_futex.h"
+#include "private/bionic_time_conversions.h"
+
+// In this implementation, a semaphore contains a
+// 31-bit signed value and a 1-bit 'shared' flag
+// (for process-sharing purpose).
+//
+// We use the value -1 to indicate contention on the
+// semaphore, 0 or more to indicate uncontended state,
+// any value lower than -2 is invalid at runtime.
+//
+// State diagram:
+//
+// post(1)  ==> 2
+// post(0)  ==> 1
+// post(-1) ==> 1, then wake all waiters
+//
+// wait(2)  ==> 1
+// wait(1)  ==> 0
+// wait(0)  ==> -1 then wait for a wake up + loop
+// wait(-1) ==> -1 then wait for a wake up + loop
+
+// Use the upper 31-bits for the counter, and the lower one
+// for the shared flag.
+#define SEMCOUNT_SHARED_MASK      0x00000001
+#define SEMCOUNT_VALUE_MASK       0xfffffffe
+#define SEMCOUNT_VALUE_SHIFT      1
+
+// Convert a value into the corresponding sem->count bit pattern.
+#define SEMCOUNT_FROM_VALUE(val)    (((val) << SEMCOUNT_VALUE_SHIFT) & SEMCOUNT_VALUE_MASK)
+
+// Convert a sem->count bit pattern into the corresponding signed value.
+static inline int SEMCOUNT_TO_VALUE(unsigned int sval) {
+  return (static_cast<int>(sval) >> SEMCOUNT_VALUE_SHIFT);
+}
+
+// The value +1 as a sem->count bit-pattern.
+#define SEMCOUNT_ONE              SEMCOUNT_FROM_VALUE(1)
+
+// The value -1 as a sem->count bit-pattern.
+#define SEMCOUNT_MINUS_ONE        SEMCOUNT_FROM_VALUE(-1)
+
+#define SEMCOUNT_DECREMENT(sval)    (((sval) - (1U << SEMCOUNT_VALUE_SHIFT)) & SEMCOUNT_VALUE_MASK)
+#define SEMCOUNT_INCREMENT(sval)    (((sval) + (1U << SEMCOUNT_VALUE_SHIFT)) & SEMCOUNT_VALUE_MASK)
+
+static inline atomic_uint* SEM_TO_ATOMIC_POINTER(sem_t* sem) {
+  static_assert(sizeof(atomic_uint) == sizeof(sem->count),
+                "sem->count should actually be atomic_uint in implementation.");
+
+  // We prefer casting to atomic_uint instead of declaring sem->count to be atomic_uint directly.
+  // Because using the second method pollutes semaphore.h.
+  return reinterpret_cast<atomic_uint*>(&sem->count);
+}
+
+// Return the shared bitflag from a semaphore counter.
+static inline unsigned int SEM_GET_SHARED(atomic_uint* sem_count_ptr) {
+  // memory_order_relaxed is used as SHARED flag will not be changed after init.
+  return (atomic_load_explicit(sem_count_ptr, memory_order_relaxed) & SEMCOUNT_SHARED_MASK);
+}
+
+int sem_init(sem_t* sem, int pshared, unsigned int value) {
+  // Ensure that 'value' can be stored in the semaphore.
+  if (value > SEM_VALUE_MAX) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  unsigned int count = SEMCOUNT_FROM_VALUE(value);
+  if (pshared != 0) {
+    count |= SEMCOUNT_SHARED_MASK;
+  }
+
+  atomic_uint* sem_count_ptr = SEM_TO_ATOMIC_POINTER(sem);
+  atomic_init(sem_count_ptr, count);
+  return 0;
+}
+
+int sem_destroy(sem_t*) {
+  return 0;
+}
+
+sem_t* sem_open(const char*, int, ...) {
+  errno = ENOSYS;
+  return SEM_FAILED;
+}
+
+int sem_close(sem_t*) {
+  errno = ENOSYS;
+  return -1;
+}
+
+int sem_unlink(const char*) {
+  errno = ENOSYS;
+  return -1;
+}
+
+// Decrement a semaphore's value atomically,
+// and return the old one. As a special case,
+// this returns immediately if the value is
+// negative (i.e. -1)
+static int __sem_dec(atomic_uint* sem_count_ptr) {
+  unsigned int old_value = atomic_load_explicit(sem_count_ptr, memory_order_relaxed);
+  unsigned int shared = old_value & SEMCOUNT_SHARED_MASK;
+
+  // Use memory_order_seq_cst in atomic_compare_exchange operation to ensure all
+  // memory access made by other threads can be seen in current thread.
+  // An acquire fence may be sufficient, but it is still in discussion whether
+  // POSIX semaphores should provide sequential consistency.
+  do {
+    if (SEMCOUNT_TO_VALUE(old_value) < 0) {
+      break;
+    }
+  } while (!atomic_compare_exchange_weak(sem_count_ptr, &old_value,
+           SEMCOUNT_DECREMENT(old_value) | shared));
+
+  return SEMCOUNT_TO_VALUE(old_value);
+}
+
+// Same as __sem_dec, but will not touch anything if the
+// value is already negative *or* 0. Returns the old value.
+static int __sem_trydec(atomic_uint* sem_count_ptr) {
+  unsigned int old_value = atomic_load_explicit(sem_count_ptr, memory_order_relaxed);
+  unsigned int shared = old_value & SEMCOUNT_SHARED_MASK;
+
+  // Use memory_order_seq_cst in atomic_compare_exchange operation to ensure all
+  // memory access made by other threads can be seen in current thread.
+  // An acquire fence may be sufficient, but it is still in discussion whether
+  // POSIX semaphores should provide sequential consistency.
+  do {
+    if (SEMCOUNT_TO_VALUE(old_value) <= 0) {
+      break;
+    }
+  } while (!atomic_compare_exchange_weak(sem_count_ptr, &old_value,
+           SEMCOUNT_DECREMENT(old_value) | shared));
+
+  return SEMCOUNT_TO_VALUE(old_value);
+}
+
+// "Increment" the value of a semaphore atomically and
+// return its old value. Note that this implements
+// the special case of "incrementing" any negative
+// value to +1 directly.
+//
+// NOTE: The value will _not_ wrap above SEM_VALUE_MAX
+static int __sem_inc(atomic_uint* sem_count_ptr) {
+  unsigned int old_value = atomic_load_explicit(sem_count_ptr, memory_order_relaxed);
+  unsigned int shared = old_value  & SEMCOUNT_SHARED_MASK;
+  unsigned int new_value;
+
+  // Use memory_order_seq_cst in atomic_compare_exchange operation to ensure all
+  // memory access made before can be seen in other threads.
+  // A release fence may be sufficient, but it is still in discussion whether
+  // POSIX semaphores should provide sequential consistency.
+  do {
+    // Can't go higher than SEM_VALUE_MAX.
+    if (SEMCOUNT_TO_VALUE(old_value) == SEM_VALUE_MAX) {
+      break;
+    }
+
+    // If the counter is negative, go directly to one, otherwise just increment.
+    if (SEMCOUNT_TO_VALUE(old_value) < 0) {
+      new_value = SEMCOUNT_ONE | shared;
+    } else {
+      new_value = SEMCOUNT_INCREMENT(old_value) | shared;
+    }
+  } while (!atomic_compare_exchange_weak(sem_count_ptr, &old_value,
+           new_value));
+
+  return SEMCOUNT_TO_VALUE(old_value);
+}
+
+int sem_wait(sem_t* sem) {
+  atomic_uint* sem_count_ptr = SEM_TO_ATOMIC_POINTER(sem);
+  unsigned int shared = SEM_GET_SHARED(sem_count_ptr);
+
+  while (true) {
+    if (__sem_dec(sem_count_ptr) > 0) {
+      return 0;
+    }
+
+    __futex_wait_ex(sem_count_ptr, shared, shared | SEMCOUNT_MINUS_ONE, NULL);
+  }
+}
+
+int sem_timedwait(sem_t* sem, const timespec* abs_timeout) {
+  atomic_uint* sem_count_ptr = SEM_TO_ATOMIC_POINTER(sem);
+
+  // POSIX says we need to try to decrement the semaphore
+  // before checking the timeout value. Note that if the
+  // value is currently 0, __sem_trydec() does nothing.
+  if (__sem_trydec(sem_count_ptr) > 0) {
+    return 0;
+  }
+
+  // Check it as per POSIX.
+  if (abs_timeout == NULL || abs_timeout->tv_sec < 0 || abs_timeout->tv_nsec < 0 || abs_timeout->tv_nsec >= NS_PER_S) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  unsigned int shared = SEM_GET_SHARED(sem_count_ptr);
+
+  while (true) {
+    // POSIX mandates CLOCK_REALTIME here.
+    timespec ts;
+    if (!timespec_from_absolute_timespec(ts, *abs_timeout, CLOCK_REALTIME)) {
+      errno = ETIMEDOUT;
+      return -1;
+    }
+
+    // Try to grab the semaphore. If the value was 0, this will also change it to -1.
+    if (__sem_dec(sem_count_ptr) > 0) {
+      break;
+    }
+
+    // Contention detected. Wait for a wakeup event.
+    int ret = __futex_wait_ex(sem_count_ptr, shared, shared | SEMCOUNT_MINUS_ONE, &ts);
+
+    // Return in case of timeout or interrupt.
+    if (ret == -ETIMEDOUT || ret == -EINTR) {
+      errno = -ret;
+      return -1;
+    }
+  }
+  return 0;
+}
+
+int sem_post(sem_t* sem) {
+  atomic_uint* sem_count_ptr = SEM_TO_ATOMIC_POINTER(sem);
+  unsigned int shared = SEM_GET_SHARED(sem_count_ptr);
+
+  int old_value = __sem_inc(sem_count_ptr);
+  if (old_value < 0) {
+    // Contention on the semaphore. Wake up all waiters.
+    __futex_wake_ex(sem_count_ptr, shared, INT_MAX);
+  } else if (old_value == SEM_VALUE_MAX) {
+    // Overflow detected.
+    errno = EOVERFLOW;
+    return -1;
+  }
+
+  return 0;
+}
+
+int sem_trywait(sem_t* sem) {
+  atomic_uint* sem_count_ptr = SEM_TO_ATOMIC_POINTER(sem);
+  if (__sem_trydec(sem_count_ptr) > 0) {
+    return 0;
+  } else {
+    errno = EAGAIN;
+    return -1;
+  }
+}
+
+int sem_getvalue(sem_t* sem, int* sval) {
+  atomic_uint* sem_count_ptr = SEM_TO_ATOMIC_POINTER(sem);
+
+  // Use memory_order_seq_cst in atomic_load operation.
+  // memory_order_relaxed may be fine here, but it is still in discussion
+  // whether POSIX semaphores should provide sequential consistency.
+  int val = SEMCOUNT_TO_VALUE(atomic_load(sem_count_ptr));
+  if (val < 0) {
+    val = 0;
+  }
+
+  *sval = val;
+  return 0;
+}
diff --git a/libc/bionic/sigaddset.cpp b/libc/bionic/sigaddset.cpp
index 33ec6f8..ca6b982 100644
--- a/libc/bionic/sigaddset.cpp
+++ b/libc/bionic/sigaddset.cpp
@@ -26,12 +26,13 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <signal.h>
 
 int sigaddset(sigset_t* set, int signum) {
   int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
-  unsigned long* local_set = (unsigned long*) set;
-  if (set == NULL || bit < 0 || bit >= (int) (8*sizeof(sigset_t))) {
+  unsigned long* local_set = reinterpret_cast<unsigned long*>(set);
+  if (set == NULL || bit < 0 || bit >= static_cast<int>(8*sizeof(sigset_t))) {
     errno = EINVAL;
     return -1;
   }
diff --git a/libc/bionic/sigdelset.cpp b/libc/bionic/sigdelset.cpp
index 9eea250..48363d3 100644
--- a/libc/bionic/sigdelset.cpp
+++ b/libc/bionic/sigdelset.cpp
@@ -26,12 +26,13 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <signal.h>
 
 int sigdelset(sigset_t* set, int signum) {
   int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
-  unsigned long* local_set = (unsigned long*) set;
-  if (set == NULL || bit < 0 || bit >= (int) (8*sizeof(sigset_t))) {
+  unsigned long* local_set = reinterpret_cast<unsigned long*>(set);
+  if (set == NULL || bit < 0 || bit >= static_cast<int>(8*sizeof(sigset_t))) {
     errno = EINVAL;
     return -1;
   }
diff --git a/libc/bionic/sigemptyset.cpp b/libc/bionic/sigemptyset.cpp
index 2993169..58166a1 100644
--- a/libc/bionic/sigemptyset.cpp
+++ b/libc/bionic/sigemptyset.cpp
@@ -26,7 +26,9 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <signal.h>
+#include <string.h>
 
 int sigemptyset(sigset_t* set) {
   if (set == NULL) {
diff --git a/libc/bionic/sigfillset.cpp b/libc/bionic/sigfillset.cpp
index 7b7cbb8..cb67394 100644
--- a/libc/bionic/sigfillset.cpp
+++ b/libc/bionic/sigfillset.cpp
@@ -26,7 +26,9 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <signal.h>
+#include <string.h>
 
 int sigfillset(sigset_t* set) {
   if (set == NULL) {
diff --git a/libc/bionic/sigismember.cpp b/libc/bionic/sigismember.cpp
index 0dc73ac..9d1fc3c 100644
--- a/libc/bionic/sigismember.cpp
+++ b/libc/bionic/sigismember.cpp
@@ -26,14 +26,15 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <signal.h>
 
 int sigismember(const sigset_t* set, int signum) {
   int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
-  const unsigned long* local_set = (const unsigned long*) set;
-  if (set == NULL || bit < 0 || bit >= (int) (8*sizeof(sigset_t))) {
+  const unsigned long* local_set = reinterpret_cast<const unsigned long*>(set);
+  if (set == NULL || bit < 0 || bit >= static_cast<int>(8*sizeof(sigset_t))) {
     errno = EINVAL;
     return -1;
   }
-  return (int) ((local_set[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1);
+  return static_cast<int>((local_set[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1);
 }
diff --git a/libc/bionic/signal.cpp b/libc/bionic/signal.cpp
index 66d75bd..74a2f65 100644
--- a/libc/bionic/signal.cpp
+++ b/libc/bionic/signal.cpp
@@ -43,7 +43,7 @@
     return SIG_ERR;
   }
 
-  return (sighandler_t) sa.sa_handler;
+  return sa.sa_handler;
 }
 
 sighandler_t signal(int signum, sighandler_t handler) {
diff --git a/libc/bionic/sigqueue.cpp b/libc/bionic/sigqueue.cpp
new file mode 100644
index 0000000..39c8798
--- /dev/null
+++ b/libc/bionic/sigqueue.cpp
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <signal.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+extern "C" int __rt_sigqueueinfo(pid_t, int, siginfo_t*);
+
+int sigqueue(pid_t pid, int signo, const sigval value) {
+  siginfo_t info;
+  memset(&info, 0, sizeof(siginfo_t));
+  info.si_signo = signo;
+  info.si_code = SI_QUEUE;
+  info.si_pid = getpid();
+  info.si_uid = getuid();
+  info.si_value = value;
+
+  return __rt_sigqueueinfo(pid, signo, &info);
+}
diff --git a/libc/bionic/sigtimedwait.cpp b/libc/bionic/sigtimedwait.cpp
new file mode 100644
index 0000000..c29f806
--- /dev/null
+++ b/libc/bionic/sigtimedwait.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <signal.h>
+
+#include "private/kernel_sigset_t.h"
+
+extern "C" int __rt_sigtimedwait(const sigset_t*, siginfo_t*, const timespec*, size_t);
+
+int sigtimedwait(const sigset_t* set, siginfo_t* info, const timespec* timeout) {
+  kernel_sigset_t sigset(set);
+  return __rt_sigtimedwait(sigset.get(), info, timeout, sizeof(sigset));
+}
diff --git a/libc/bionic/sigwaitinfo.cpp b/libc/bionic/sigwaitinfo.cpp
new file mode 100644
index 0000000..43e2395
--- /dev/null
+++ b/libc/bionic/sigwaitinfo.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <signal.h>
+
+int sigwaitinfo(const sigset_t* set, siginfo_t* info) {
+  return sigtimedwait(set, info, NULL);
+}
diff --git a/libc/bionic/statvfs.cpp b/libc/bionic/statvfs.cpp
index f1e2833..39ffb64 100644
--- a/libc/bionic/statvfs.cpp
+++ b/libc/bionic/statvfs.cpp
@@ -21,13 +21,17 @@
 // Paper over the fact that 32-bit kernels use fstatfs64/statfs64 with an extra argument,
 // but 64-bit kernels don't have the "64" bit suffix or the extra size_t argument.
 #if __LP64__
-#  define __fstatfs64(fd,size,buf) fstatfs(fd,buf)
-#  define __statfs64(path,size,buf) statfs(path,buf)
+extern "C" int __fstatfs(int, struct statfs*);
+extern "C" int __statfs(const char*, struct statfs*);
+#  define __fstatfs64(fd,size,buf) __fstatfs(fd,buf)
+#  define __statfs64(path,size,buf) __statfs(path,buf)
 #else
 extern "C" int __fstatfs64(int, size_t, struct statfs*);
 extern "C" int __statfs64(const char*, size_t, struct statfs*);
 #endif
 
+// The kernel sets a private ST_VALID flag to signal to the C library whether the
+// f_flags field is valid. This flag should not be exposed to users of the C library.
 #define ST_VALID 0x0020
 
 static void __statfs_to_statvfs(const struct statfs& in, struct statvfs* out) {
@@ -40,13 +44,33 @@
   out->f_ffree = in.f_ffree;
   out->f_favail = in.f_ffree;
   out->f_fsid = in.f_fsid.__val[0] | (static_cast<uint64_t>(in.f_fsid.__val[1]) << 32);
-  out->f_flag = in.f_flags & ~ST_VALID;
+  out->f_flag = in.f_flags;
   out->f_namemax = in.f_namelen;
 }
 
+int fstatfs(int fd, struct statfs* result) {
+  int rc = __fstatfs64(fd, sizeof(*result), result);
+  if (rc != 0) {
+    return rc;
+  }
+  result->f_flags &= ~ST_VALID;
+  return 0;
+}
+__strong_alias(fstatfs64, fstatfs);
+
+int statfs(const char* path, struct statfs* result) {
+  int rc = __statfs64(path, sizeof(*result), result);
+  if (rc != 0) {
+    return rc;
+  }
+  result->f_flags &= ~ST_VALID;
+  return 0;
+}
+__strong_alias(statfs64, statfs);
+
 int statvfs(const char* path, struct statvfs* result) {
   struct statfs tmp;
-  int rc = __statfs64(path, sizeof(tmp), &tmp);
+  int rc = statfs(path, &tmp);
   if (rc != 0) {
     return rc;
   }
@@ -57,7 +81,7 @@
 
 int fstatvfs(int fd, struct statvfs* result) {
   struct statfs tmp;
-  int rc = __fstatfs64(fd, sizeof(tmp), &tmp);
+  int rc = fstatfs(fd, &tmp);
   if (rc != 0) {
     return rc;
   }
diff --git a/libc/bionic/strcoll_l.cpp b/libc/bionic/strcoll_l.cpp
deleted file mode 100644
index 7d7c28b..0000000
--- a/libc/bionic/strcoll_l.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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>
-
-int strcoll_l(const char *s1, const char *s2, locale_t) {
-  return strcoll(s1, s2);
-}
diff --git a/libc/bionic/strerror.cpp b/libc/bionic/strerror.cpp
index d1518ff..f74194f 100644
--- a/libc/bionic/strerror.cpp
+++ b/libc/bionic/strerror.cpp
@@ -31,16 +31,16 @@
 
 extern "C" const char* __strerror_lookup(int);
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(strerror);
+static ThreadLocalBuffer<char, NL_TEXTMAX> g_strerror_tls_buffer;
 
 char* strerror(int error_number) {
   // Just return the original constant in the easy cases.
   char* result = const_cast<char*>(__strerror_lookup(error_number));
-  if (result != NULL) {
+  if (result != nullptr) {
     return result;
   }
 
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, strerror, NL_TEXTMAX);
-  strerror_r(error_number, strerror_tls_buffer, strerror_tls_buffer_size);
-  return strerror_tls_buffer;
+  result = g_strerror_tls_buffer.get();
+  strerror_r(error_number, result, g_strerror_tls_buffer.size());
+  return result;
 }
diff --git a/libc/bionic/strerror_r.cpp b/libc/bionic/strerror_r.cpp
index 1e57cc0..d419fb1 100644
--- a/libc/bionic/strerror_r.cpp
+++ b/libc/bionic/strerror_r.cpp
@@ -1,11 +1,16 @@
 /* $OpenBSD: strerror_r.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */
 /* Public Domain <marc@snafu.org> */
 
+// G++ automatically defines _GNU_SOURCE, which then means that <string.h>
+// gives us the GNU variant.
+#undef _GNU_SOURCE
+
+#include <string.h>
+
 #include <errno.h>
 #include <limits.h>
 #include <signal.h>
 #include <stdio.h>
-#include <string.h>
 
 #include "private/ErrnoRestorer.h"
 #include "private/libc_logging.h"
@@ -62,6 +67,12 @@
   return 0;
 }
 
+extern "C" char* __gnu_strerror_r(int error_number, char* buf, size_t buf_len) {
+  ErrnoRestorer errno_restorer; // The glibc strerror_r doesn't set errno if it truncates...
+  strerror_r(error_number, buf, buf_len);
+  return buf; // ...and just returns whatever fit.
+}
+
 extern "C" __LIBC_HIDDEN__ const char* __strsignal(int signal_number, char* buf, size_t buf_len) {
   const char* signal_name = __strsignal_lookup(signal_number);
   if (signal_name != NULL) {
diff --git a/libc/bionic/strftime_l.cpp b/libc/bionic/strftime_l.cpp
deleted file mode 100644
index fb01da5..0000000
--- a/libc/bionic/strftime_l.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 <time.h>
-
-size_t strftime_l(char *s, size_t max, const char *format, const struct tm *tm,
-                  locale_t) {
-  return strftime(s, max, format, tm);
-}
diff --git a/libc/bionic/strsignal.cpp b/libc/bionic/strsignal.cpp
index 9f0193a..c389ddd 100644
--- a/libc/bionic/strsignal.cpp
+++ b/libc/bionic/strsignal.cpp
@@ -32,7 +32,7 @@
 extern "C" const char* __strsignal_lookup(int);
 extern "C" const char* __strsignal(int, char*, size_t);
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(strsignal);
+static ThreadLocalBuffer<char, NL_TEXTMAX> g_strsignal_tls_buffer;
 
 char* strsignal(int signal_number) {
   // Just return the original constant in the easy cases.
@@ -41,6 +41,6 @@
     return result;
   }
 
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, strsignal, NL_TEXTMAX);
-  return const_cast<char*>(__strsignal(signal_number, strsignal_tls_buffer, strsignal_tls_buffer_size));
+  return const_cast<char*>(__strsignal(signal_number, g_strsignal_tls_buffer.get(),
+                                       g_strsignal_tls_buffer.size()));
 }
diff --git a/libc/bionic/strtold_l.cpp b/libc/bionic/strtold_l.cpp
deleted file mode 100644
index 4b230b9..0000000
--- a/libc/bionic/strtold_l.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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>
-
-long double strtold_l(const char *nptr, char **endptr, locale_t) {
-  return strtold(nptr, endptr);
-}
diff --git a/libc/bionic/strtoll_l.cpp b/libc/bionic/strtoll_l.cpp
deleted file mode 100644
index 47b126e..0000000
--- a/libc/bionic/strtoll_l.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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>
-
-long long strtoll_l(const char *nptr, char **endptr, int base, locale_t) {
-  return strtoll(nptr, endptr, base);
-}
diff --git a/libc/bionic/strtoull_l.cpp b/libc/bionic/strtoull_l.cpp
deleted file mode 100644
index 398ba0e..0000000
--- a/libc/bionic/strtoull_l.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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>
-
-unsigned long long strtoull_l(const char *nptr, char **endptr, int base,
-                              locale_t) {
-  return strtoull(nptr, endptr, base);
-}
diff --git a/libc/bionic/strxfrm_l.cpp b/libc/bionic/strxfrm_l.cpp
deleted file mode 100644
index afe3b96..0000000
--- a/libc/bionic/strxfrm_l.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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>
-
-size_t strxfrm_l(char *dest, const char *src, size_t n, locale_t) {
-  return strxfrm(dest, src, n);
-}
diff --git a/libc/bionic/stubs.cpp b/libc/bionic/stubs.cpp
index b1e38be..b57aeda 100644
--- a/libc/bionic/stubs.cpp
+++ b/libc/bionic/stubs.cpp
@@ -35,25 +35,46 @@
 #include <pwd.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 
 #include "private/android_filesystem_config.h"
 #include "private/ErrnoRestorer.h"
 #include "private/libc_logging.h"
+#include "private/ThreadLocalBuffer.h"
 
-// Thread-specific state for the non-reentrant functions.
-static pthread_once_t stubs_once = PTHREAD_ONCE_INIT;
-static pthread_key_t stubs_key;
-struct stubs_state_t {
-  passwd passwd_;
+// POSIX seems to envisage an implementation where the <pwd.h> functions are
+// implemented by brute-force searching with getpwent(3), and the <grp.h>
+// functions are implemented similarly with getgrent(3). This means that it's
+// okay for all the <grp.h> functions to share state, and all the <passwd.h>
+// functions to share state, but <grp.h> functions can't clobber <passwd.h>
+// functions' state and vice versa.
+
+struct group_state_t {
   group group_;
   char* group_members_[2];
-  char app_name_buffer_[32];
   char group_name_buffer_[32];
+};
+
+struct passwd_state_t {
+  passwd passwd_;
+  char name_buffer_[32];
   char dir_buffer_[32];
   char sh_buffer_[32];
 };
 
+static ThreadLocalBuffer<group_state_t> g_group_tls_buffer;
+static ThreadLocalBuffer<passwd_state_t> g_passwd_tls_buffer;
+
+static group_state_t* __group_state() {
+  group_state_t* result = g_group_tls_buffer.get();
+  if (result != nullptr) {
+    memset(result, 0, sizeof(group_state_t));
+    result->group_.gr_mem = result->group_members_;
+  }
+  return result;
+}
+
 static int do_getpw_r(int by_name, const char* name, uid_t uid,
                       passwd* dst, char* buf, size_t byte_count,
                       passwd** result) {
@@ -91,7 +112,7 @@
 
   // pw_passwd and pw_gecos are non-POSIX and unused (always NULL) in bionic.
   dst->pw_passwd = NULL;
-#ifdef __LP64__
+#if defined(__LP64__)
   dst->pw_gecos = NULL;
 #endif
 
@@ -113,48 +134,14 @@
   return do_getpw_r(0, NULL, uid, pwd, buf, byte_count, result);
 }
 
-static stubs_state_t* stubs_state_alloc() {
-  stubs_state_t*  s = static_cast<stubs_state_t*>(calloc(1, sizeof(*s)));
-  if (s != NULL) {
-    s->group_.gr_mem = s->group_members_;
-  }
-  return s;
-}
-
-static void stubs_state_free(void* ptr) {
-  stubs_state_t* state = static_cast<stubs_state_t*>(ptr);
-  free(state);
-}
-
-static void __stubs_key_init() {
-  pthread_key_create(&stubs_key, stubs_state_free);
-}
-
-static stubs_state_t* __stubs_state() {
-  pthread_once(&stubs_once, __stubs_key_init);
-  stubs_state_t* s = static_cast<stubs_state_t*>(pthread_getspecific(stubs_key));
-  if (s == NULL) {
-    s = stubs_state_alloc();
-    if (s == NULL) {
-      errno = ENOMEM;  // Just in case.
-    } else {
-      if (pthread_setspecific(stubs_key, s) != 0) {
-        stubs_state_free(s);
-        errno = ENOMEM;
-        s = NULL;
-      }
-    }
-  }
-  return s;
-}
-
-static passwd* android_iinfo_to_passwd(stubs_state_t* state,
+static passwd* android_iinfo_to_passwd(passwd_state_t* state,
                                        const android_id_info* iinfo) {
+  snprintf(state->name_buffer_, sizeof(state->name_buffer_), "%s", iinfo->name);
   snprintf(state->dir_buffer_, sizeof(state->dir_buffer_), "/");
   snprintf(state->sh_buffer_, sizeof(state->sh_buffer_), "/system/bin/sh");
 
   passwd* pw = &state->passwd_;
-  pw->pw_name  = (char*) iinfo->name;
+  pw->pw_name  = state->name_buffer_;
   pw->pw_uid   = iinfo->aid;
   pw->pw_gid   = iinfo->aid;
   pw->pw_dir   = state->dir_buffer_;
@@ -162,16 +149,18 @@
   return pw;
 }
 
-static group* android_iinfo_to_group(group* gr,
+static group* android_iinfo_to_group(group_state_t* state,
                                      const android_id_info* iinfo) {
-  gr->gr_name   = (char*) iinfo->name;
+  snprintf(state->group_name_buffer_, sizeof(state->group_name_buffer_), "%s", iinfo->name);
+
+  group* gr = &state->group_;
+  gr->gr_name   = state->group_name_buffer_;
   gr->gr_gid    = iinfo->aid;
   gr->gr_mem[0] = gr->gr_name;
-  gr->gr_mem[1] = NULL;
   return gr;
 }
 
-static passwd* android_id_to_passwd(stubs_state_t* state, unsigned id) {
+static passwd* android_id_to_passwd(passwd_state_t* state, unsigned id) {
   for (size_t n = 0; n < android_id_count; ++n) {
     if (android_ids[n].aid == id) {
       return android_iinfo_to_passwd(state, android_ids + n);
@@ -180,7 +169,7 @@
   return NULL;
 }
 
-static passwd* android_name_to_passwd(stubs_state_t* state, const char* name) {
+static passwd* android_name_to_passwd(passwd_state_t* state, const char* name) {
   for (size_t n = 0; n < android_id_count; ++n) {
     if (!strcmp(android_ids[n].name, name)) {
       return android_iinfo_to_passwd(state, android_ids + n);
@@ -189,37 +178,46 @@
   return NULL;
 }
 
-static group* android_id_to_group(group* gr, unsigned id) {
+static group* android_id_to_group(group_state_t* state, unsigned id) {
   for (size_t n = 0; n < android_id_count; ++n) {
     if (android_ids[n].aid == id) {
-      return android_iinfo_to_group(gr, android_ids + n);
+      return android_iinfo_to_group(state, android_ids + n);
     }
   }
   return NULL;
 }
 
-static group* android_name_to_group(group* gr, const char* name) {
+static group* android_name_to_group(group_state_t* state, const char* name) {
   for (size_t n = 0; n < android_id_count; ++n) {
     if (!strcmp(android_ids[n].name, name)) {
-      return android_iinfo_to_group(gr, android_ids + n);
+      return android_iinfo_to_group(state, android_ids + n);
     }
   }
   return NULL;
 }
 
 // Translate a user/group name to the corresponding user/group id.
+// all_a1234 -> 0 * AID_USER + AID_SHARED_GID_START + 1234 (group name only)
 // u0_a1234 -> 0 * AID_USER + AID_APP + 1234
 // u2_i1000 -> 2 * AID_USER + AID_ISOLATED_START + 1000
 // u1_system -> 1 * AID_USER + android_ids['system']
 // returns 0 and sets errno to ENOENT in case of error
-static unsigned app_id_from_name(const char* name) {
-  if (name[0] != 'u' || !isdigit(name[1])) {
+static id_t app_id_from_name(const char* name, bool is_group) {
+  char* end;
+  unsigned long userid;
+  bool is_shared_gid = false;
+
+  if (is_group && name[0] == 'a' && name[1] == 'l' && name[2] == 'l') {
+    end = const_cast<char*>(name+3);
+    userid = 0;
+    is_shared_gid = true;
+  } else if (name[0] == 'u' && isdigit(name[1])) {
+    userid = strtoul(name+1, &end, 10);
+  } else {
     errno = ENOENT;
     return 0;
   }
 
-  char* end;
-  unsigned long userid = strtoul(name+1, &end, 10);
   if (end[0] != '_' || end[1] == 0) {
     errno = ENOENT;
     return 0;
@@ -227,8 +225,17 @@
 
   unsigned long appid = 0;
   if (end[1] == 'a' && isdigit(end[2])) {
-    // end will point to \0 if the strtoul below succeeds.
-    appid = strtoul(end+2, &end, 10) + AID_APP;
+    if (is_shared_gid) {
+      // end will point to \0 if the strtoul below succeeds.
+      appid = strtoul(end+2, &end, 10) + AID_SHARED_GID_START;
+      if (appid > AID_SHARED_GID_END) {
+        errno = ENOENT;
+        return 0;
+      }
+    } else {
+      // end will point to \0 if the strtoul below succeeds.
+      appid = strtoul(end+2, &end, 10) + AID_APP;
+    }
   } else if (end[1] == 'i' && isdigit(end[2])) {
     // end will point to \0 if the strtoul below succeeds.
     appid = strtoul(end+2, &end, 10) + AID_ISOLATED_START;
@@ -238,6 +245,7 @@
         appid = android_ids[n].aid;
         // Move the end pointer to the null terminator.
         end += strlen(android_ids[n].name) + 1;
+        break;
       }
     }
   }
@@ -260,14 +268,32 @@
     return 0;
   }
 
-  return (unsigned)(appid + userid*AID_USER);
+  return (appid + userid*AID_USER);
 }
 
-static void print_app_name_from_appid_userid(const uid_t appid,
-    const uid_t userid, char* buffer, const int bufferlen) {
+static void print_app_name_from_uid(const uid_t uid, char* buffer, const int bufferlen) {
+  const uid_t appid = uid % AID_USER;
+  const uid_t userid = uid / AID_USER;
   if (appid >= AID_ISOLATED_START) {
     snprintf(buffer, bufferlen, "u%u_i%u", userid, appid - AID_ISOLATED_START);
-  } else if (userid == 0 && appid >= AID_SHARED_GID_START) {
+  } else if (appid < AID_APP) {
+    for (size_t n = 0; n < android_id_count; n++) {
+      if (android_ids[n].aid == appid) {
+        snprintf(buffer, bufferlen, "u%u_%s", userid, android_ids[n].name);
+        return;
+      }
+    }
+  } else {
+    snprintf(buffer, bufferlen, "u%u_a%u", userid, appid - AID_APP);
+  }
+}
+
+static void print_app_name_from_gid(const gid_t gid, char* buffer, const int bufferlen) {
+  const uid_t appid = gid % AID_USER;
+  const uid_t userid = gid / AID_USER;
+  if (appid >= AID_ISOLATED_START) {
+    snprintf(buffer, bufferlen, "u%u_i%u", userid, appid - AID_ISOLATED_START);
+  } else if (userid == 0 && appid >= AID_SHARED_GID_START && appid <= AID_SHARED_GID_END) {
     snprintf(buffer, bufferlen, "all_a%u", appid - AID_SHARED_GID_START);
   } else if (appid < AID_APP) {
     for (size_t n = 0; n < android_id_count; n++) {
@@ -281,32 +307,21 @@
   }
 }
 
-static void print_app_name_from_uid(const uid_t uid, char* buffer, const int bufferlen) {
-  const uid_t appid = uid % AID_USER;
-  const uid_t userid = uid / AID_USER;
-  return print_app_name_from_appid_userid(appid, userid, buffer, bufferlen);
-}
-
 // Translate a uid into the corresponding name.
 // 0 to AID_APP-1                   -> "system", "radio", etc.
 // AID_APP to AID_ISOLATED_START-1  -> u0_a1234
 // AID_ISOLATED_START to AID_USER-1 -> u0_i1234
 // AID_USER+                        -> u1_radio, u1_a1234, u2_i1234, etc.
 // returns a passwd structure (sets errno to ENOENT on failure).
-static passwd* app_id_to_passwd(uid_t uid, stubs_state_t* state) {
-  passwd* pw = &state->passwd_;
-
+static passwd* app_id_to_passwd(uid_t uid, passwd_state_t* state) {
   if (uid < AID_APP) {
     errno = ENOENT;
     return NULL;
   }
 
+  print_app_name_from_uid(uid, state->name_buffer_, sizeof(state->name_buffer_));
+
   const uid_t appid = uid % AID_USER;
-  const uid_t userid = uid / AID_USER;
-
-  print_app_name_from_appid_userid(appid, userid, state->app_name_buffer_,
-                                   sizeof(state->app_name_buffer_));
-
   if (appid < AID_APP) {
       snprintf(state->dir_buffer_, sizeof(state->dir_buffer_), "/");
   } else {
@@ -315,37 +330,34 @@
 
   snprintf(state->sh_buffer_, sizeof(state->sh_buffer_), "/system/bin/sh");
 
-  pw->pw_name  = state->app_name_buffer_;
+  passwd* pw = &state->passwd_;
+  pw->pw_name  = state->name_buffer_;
   pw->pw_dir   = state->dir_buffer_;
   pw->pw_shell = state->sh_buffer_;
   pw->pw_uid   = uid;
   pw->pw_gid   = uid;
-
   return pw;
 }
 
 // Translate a gid into the corresponding app_<gid>
 // group structure (sets errno to ENOENT on failure).
-static group* app_id_to_group(gid_t gid, stubs_state_t* state) {
+static group* app_id_to_group(gid_t gid, group_state_t* state) {
   if (gid < AID_APP) {
     errno = ENOENT;
     return NULL;
   }
 
-  print_app_name_from_uid(gid, state->group_name_buffer_,
-                          sizeof(state->group_name_buffer_));
+  print_app_name_from_gid(gid, state->group_name_buffer_, sizeof(state->group_name_buffer_));
 
   group* gr = &state->group_;
   gr->gr_name   = state->group_name_buffer_;
   gr->gr_gid    = gid;
   gr->gr_mem[0] = gr->gr_name;
-  gr->gr_mem[1] = NULL;
   return gr;
 }
 
-
 passwd* getpwuid(uid_t uid) { // NOLINT: implementing bad function.
-  stubs_state_t* state = __stubs_state();
+  passwd_state_t* state = g_passwd_tls_buffer.get();
   if (state == NULL) {
     return NULL;
   }
@@ -358,7 +370,7 @@
 }
 
 passwd* getpwnam(const char* login) { // NOLINT: implementing bad function.
-  stubs_state_t* state = __stubs_state();
+  passwd_state_t* state = g_passwd_tls_buffer.get();
   if (state == NULL) {
     return NULL;
   }
@@ -367,17 +379,17 @@
   if (pw != NULL) {
     return pw;
   }
-  return app_id_to_passwd(app_id_from_name(login), state);
+  return app_id_to_passwd(app_id_from_name(login, false), state);
 }
 
 // All users are in just one group, the one passed in.
 int getgrouplist(const char* /*user*/, gid_t group, gid_t* groups, int* ngroups) {
-    if (*ngroups < 1) {
-        *ngroups = 1;
-        return -1;
-    }
-    groups[0] = group;
-    return (*ngroups = 1);
+  if (*ngroups < 1) {
+    *ngroups = 1;
+    return -1;
+  }
+  groups[0] = group;
+  return (*ngroups = 1);
 }
 
 char* getlogin() { // NOLINT: implementing bad function.
@@ -386,30 +398,28 @@
 }
 
 group* getgrgid(gid_t gid) { // NOLINT: implementing bad function.
-  stubs_state_t* state = __stubs_state();
+  group_state_t* state = __group_state();
   if (state == NULL) {
     return NULL;
   }
 
-  group* gr = android_id_to_group(&state->group_, gid);
+  group* gr = android_id_to_group(state, gid);
   if (gr != NULL) {
     return gr;
   }
-
   return app_id_to_group(gid, state);
 }
 
 group* getgrnam(const char* name) { // NOLINT: implementing bad function.
-  stubs_state_t* state = __stubs_state();
+  group_state_t* state = __group_state();
   if (state == NULL) {
     return NULL;
   }
 
-  if (android_name_to_group(&state->group_, name) != 0) {
+  if (android_name_to_group(state, name) != 0) {
     return &state->group_;
   }
-
-  return app_id_to_group(app_id_from_name(name), state);
+  return app_id_to_group(app_id_from_name(name, true), state);
 }
 
 // We don't have an /etc/networks, so all inputs return NULL.
@@ -432,31 +442,6 @@
   return NULL;
 }
 
-static void unimplemented_stub(const char* function) {
-  const char* fmt = "%s(3) is not implemented on Android\n";
-  __libc_format_log(ANDROID_LOG_WARN, "libc", fmt, function);
-  fprintf(stderr, fmt, function);
-}
-
-#define UNIMPLEMENTED unimplemented_stub(__PRETTY_FUNCTION__)
-
-void endpwent() {
-  UNIMPLEMENTED;
-}
-
-char* getusershell() {
-  UNIMPLEMENTED;
-  return NULL;
-}
-
-void setusershell() {
-  UNIMPLEMENTED;
-}
-
-void endusershell() {
-  UNIMPLEMENTED;
-}
-
 // Portable code should use sysconf(_SC_PAGE_SIZE) directly instead.
 int getpagesize() {
   // We dont use sysconf(3) here because that drags in stdio, which makes static binaries fat.
diff --git a/libc/bionic/sysconf.cpp b/libc/bionic/sysconf.cpp
index 7734e40..c301b27 100644
--- a/libc/bionic/sysconf.cpp
+++ b/libc/bionic/sysconf.cpp
@@ -26,123 +26,20 @@
  * SUCH DAMAGE.
  */
 
-#include <ctype.h>
-#include <dirent.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
+#include <linux/uio.h>  // For UIO_MAXIOV.
 #include <pthread.h>
 #include <stdio.h>  // For FOPEN_MAX.
-#include <string.h>
+#include <sys/auxv.h>
+#include <sys/resource.h>
 #include <sys/sysconf.h>
+#include <sys/sysinfo.h>
 #include <time.h>
 #include <unistd.h>
 
 #include "private/bionic_tls.h"
-#include "private/ScopedReaddir.h"
-
-/* seems to be the default on Linux, per the GLibc sources and my own digging */
-
-#define  SYSTEM_CLK_TCK         100
-#define  SYSTEM_IOV_MAX         1024
-#define  SYSTEM_DELAYTIMER_MAX  2147483647
-#define  SYSTEM_MQ_OPEN_MAX     8
-#define  SYSTEM_MQ_PRIO_MAX     32768
-#define  SYSTEM_SEM_NSEMS_MAX   256
-#define  SYSTEM_SEM_VALUE_MAX   0x3fffffff  /* see bionic/semaphore.c */
-#define  SYSTEM_SIGQUEUE_MAX    32
-#define  SYSTEM_TIMER_MAX       32
-#define  SYSTEM_LOGIN_NAME_MAX  256
-#define  SYSTEM_TTY_NAME_MAX    32
-
-/* the following depends on our implementation */
-#define  SYSTEM_ATEXIT_MAX          65536    /* our implementation is unlimited */
-#define  SYSTEM_THREAD_THREADS_MAX  2048     /* really unlimited */
-
-#define  SYSTEM_2_C_BIND     _POSIX_VERSION  /* Posix C binding version */
-#define  SYSTEM_2_C_VER      _POSIX2_C_VERSION
-#define  SYSTEM_2_C_DEV      -1       /* Posix C development tools unsupported on the device */
-#define  SYSTEM_2_FORT_DEV   -1       /* Fortran development unsupported */
-#define  SYSTEM_2_FORT_RUN   -1       /* Fortran runtime unsupported */
-#define  SYSTEM_2_SW_DEV     -1       /* posix software dev utilities unsupported */
-#define  SYSTEM_2_LOCALEDEF  -1       /* localedef() unimplemented */
-#define  SYSTEM_2_UPE        -1       /* No UPE for you ! (User Portability Utilities) */
-#define  SYSTEM_2_VERSION    -1       /* No posix command-line tools */
-
-static bool __matches_cpuN(const char* s) {
-  // The %c trick is to ensure that we have the anchored match "^cpu[0-9]+$".
-  unsigned cpu;
-  char dummy;
-  return (sscanf(s, "cpu%u%c", &cpu, &dummy) == 1);
-}
-
-static int __sysconf_nprocessors_conf() {
-  // On x86 kernels you can use /proc/cpuinfo for this, but on ARM kernels offline CPUs disappear
-  // from there. This method works on both.
-  ScopedReaddir reader("/sys/devices/system/cpu");
-  if (reader.IsBad()) {
-    return 1;
-  }
-
-  int result = 0;
-  dirent* entry;
-  while ((entry = reader.ReadEntry()) != NULL) {
-    if (entry->d_type == DT_DIR && __matches_cpuN(entry->d_name)) {
-      ++result;
-    }
-  }
-  return result;
-}
-
-static int __sysconf_nprocessors_onln() {
-  FILE* fp = fopen("/proc/stat", "r");
-  if (fp == NULL) {
-    return 1;
-  }
-
-  int result = 0;
-  char buf[256];
-  while (fgets(buf, sizeof(buf), fp) != NULL) {
-    // Extract just the first word from the line.
-    // 'cpu0 7976751 1364388 3116842 469770388 8629405 0 49047 0 0 0'
-    char* p = strchr(buf, ' ');
-    if (p != NULL) {
-      *p = 0;
-    }
-    if (__matches_cpuN(buf)) {
-      ++result;
-    }
-  }
-  fclose(fp);
-  return result;
-}
-
-static int __get_meminfo(const char* pattern) {
-  FILE* fp = fopen("/proc/meminfo", "r");
-  if (fp == NULL) {
-    return -1;
-  }
-
-  int result = -1;
-  char buf[256];
-  while (fgets(buf, sizeof(buf), fp) != NULL) {
-    long total;
-    if (sscanf(buf, pattern, &total) == 1) {
-      result = (int) (total / (PAGE_SIZE/1024));
-      break;
-    }
-  }
-  fclose(fp);
-  return result;
-}
-
-static int __sysconf_phys_pages() {
-  return __get_meminfo("MemTotal: %ld kB");
-}
-
-static int __sysconf_avphys_pages() {
-  return __get_meminfo("MemFree: %ld kB");
-}
 
 static int __sysconf_monotonic_clock() {
   timespec t;
@@ -150,200 +47,174 @@
   return (rc == -1) ? -1 : _POSIX_VERSION;
 }
 
+static bool __sysconf_has_clock(clockid_t clock_id) {
+  return clock_getres(clock_id, NULL) == 0;
+}
+
+static long __sysconf_rlimit(int resource) {
+  rlimit rl;
+  getrlimit(resource, &rl);
+  return rl.rlim_cur;
+}
+
 long sysconf(int name) {
-    switch (name) {
-#ifdef _POSIX_ARG_MAX
-    case _SC_ARG_MAX:           return _POSIX_ARG_MAX;
-#endif
-#ifdef _POSIX2_BC_BASE_MAX
-    case _SC_BC_BASE_MAX:       return _POSIX2_BC_BASE_MAX;
-#endif
-#ifdef _POSIX2_BC_DIM_MAX
-    case _SC_BC_DIM_MAX:        return _POSIX2_BC_DIM_MAX;
-#endif
-#ifdef _POSIX2_BC_SCALE_MAX
-    case _SC_BC_SCALE_MAX:      return _POSIX2_BC_SCALE_MAX;
-#endif
-#ifdef _POSIX2_BC_STRING_MAX
-    case _SC_BC_STRING_MAX:     return _POSIX2_BC_STRING_MAX;
-#endif
-    case _SC_CHILD_MAX:         return CHILD_MAX;
-    case _SC_CLK_TCK:           return SYSTEM_CLK_TCK;
-#ifdef _POSIX2_COLL_WEIGHTS_MASK
-    case _SC_COLL_WEIGHTS_MAX:  return _POSIX2_COLL_WEIGHTS_MASK;
-#endif
-#ifdef _POSIX2_EXPR_NEST_MAX
-    case _SC_EXPR_NEST_MAX:    return _POSIX2_EXPR_NEST_MAX;
-#endif
-#ifdef _POSIX2_LINE_MAX
-    case _SC_LINE_MAX:          return _POSIX2_LINE_MAX;
-#endif
+  switch (name) {
+    case _SC_ARG_MAX:           return ARG_MAX;
+    case _SC_BC_BASE_MAX:       return _POSIX2_BC_BASE_MAX;   // Minimum requirement.
+    case _SC_BC_DIM_MAX:        return _POSIX2_BC_DIM_MAX;    // Minimum requirement.
+    case _SC_BC_SCALE_MAX:      return _POSIX2_BC_SCALE_MAX;  // Minimum requirement.
+    case _SC_BC_STRING_MAX:     return _POSIX2_BC_STRING_MAX; // Minimum requirement.
+    case _SC_CHILD_MAX:         return __sysconf_rlimit(RLIMIT_NPROC);
+    case _SC_CLK_TCK:           return static_cast<long>(getauxval(AT_CLKTCK));
+    case _SC_COLL_WEIGHTS_MAX:  return _POSIX2_COLL_WEIGHTS_MAX;  // Minimum requirement.
+    case _SC_EXPR_NEST_MAX:     return _POSIX2_EXPR_NEST_MAX;     // Minimum requirement.
+    case _SC_LINE_MAX:          return _POSIX2_LINE_MAX;          // Minimum requirement.
     case _SC_NGROUPS_MAX:       return NGROUPS_MAX;
-    case _SC_OPEN_MAX:          return OPEN_MAX;
-    //case _SC_PASS_MAX:          return PASS_MAX;
-    case _SC_2_C_BIND:          return SYSTEM_2_C_BIND;
-    case _SC_2_C_DEV:           return SYSTEM_2_C_DEV;
-    case _SC_2_C_VERSION:       return SYSTEM_2_C_VER;
-    //case _SC_2_CHAR_TERM:         return ;
-    case _SC_2_FORT_DEV:        return SYSTEM_2_FORT_DEV;
-    case _SC_2_FORT_RUN:        return SYSTEM_2_FORT_RUN;
-    case _SC_2_LOCALEDEF:       return SYSTEM_2_LOCALEDEF;
-    case _SC_2_SW_DEV:          return SYSTEM_2_SW_DEV;
-    case _SC_2_UPE:             return SYSTEM_2_UPE;
-    case _SC_2_VERSION:         return SYSTEM_2_VERSION;
-#ifdef _POSIX_JOB_CONTROL
+    case _SC_OPEN_MAX:          return __sysconf_rlimit(RLIMIT_NOFILE);
+    case _SC_PASS_MAX:          return PASS_MAX;
+    case _SC_2_C_BIND:          return _POSIX2_C_BIND;
+    case _SC_2_C_DEV:           return _POSIX2_C_DEV;
+    case _SC_2_CHAR_TERM:       return _POSIX2_CHAR_TERM;
+    case _SC_2_FORT_DEV:        return -1;
+    case _SC_2_FORT_RUN:        return -1;
+    case _SC_2_LOCALEDEF:       return _POSIX2_LOCALEDEF;
+    case _SC_2_SW_DEV:          return _POSIX2_SW_DEV;
+    case _SC_2_UPE:             return _POSIX2_UPE;
+    case _SC_2_VERSION:         return _POSIX2_VERSION;
     case _SC_JOB_CONTROL:       return _POSIX_JOB_CONTROL;
-#endif
-#ifdef _POSIX_SAVED_IDS
     case _SC_SAVED_IDS:         return _POSIX_SAVED_IDS;
-#endif
-#ifdef _POSIX_VERSION
     case _SC_VERSION:           return _POSIX_VERSION;
-#endif
-    //case _SC_RE_DUP_<AX:        return ;
+    case _SC_RE_DUP_MAX:        return _POSIX_RE_DUP_MAX;         // Minimum requirement.
     case _SC_STREAM_MAX:        return FOPEN_MAX;
-    //case _SC_TZNAME_MAX:        return ;
-#if _XOPEN_CRYPT
+    case _SC_TZNAME_MAX:        return _POSIX_TZNAME_MAX;         // Minimum requirement.
     case _SC_XOPEN_CRYPT:       return _XOPEN_CRYPT;
-#endif
-#ifdef _XOPEN_ENH_I18N
     case _SC_XOPEN_ENH_I18N:    return _XOPEN_ENH_I18N;
-#endif
-#ifdef _XOPEN_SHM
     case _SC_XOPEN_SHM:         return _XOPEN_SHM;
-#endif
-#ifdef _XOPEN_VERSION
     case _SC_XOPEN_VERSION:     return _XOPEN_VERSION;
-#endif
-#ifdef _XOPEN_XCU_VERSION
-    case _SC_XOPEN_XCU_VERSION: return _XOPEN_XCU_VERSION;
-#endif
-#ifdef _XOPEN_REALTIME
     case _SC_XOPEN_REALTIME:    return _XOPEN_REALTIME;
-#endif
-#ifdef _XOPEN_REALTIME_THREADS
     case _SC_XOPEN_REALTIME_THREADS: return _XOPEN_REALTIME_THREADS;
-#endif
-#ifdef _XOPEN_LEGACY
     case _SC_XOPEN_LEGACY:      return _XOPEN_LEGACY;
-#endif
-    case _SC_ATEXIT_MAX:        return SYSTEM_ATEXIT_MAX;
-    case _SC_IOV_MAX:           return SYSTEM_IOV_MAX;
+    case _SC_ATEXIT_MAX:        return LONG_MAX;    // Unlimited.
+    case _SC_IOV_MAX:           return UIO_MAXIOV;
 
-    case _SC_PAGESIZE:
-    case _SC_PAGE_SIZE:
-        return PAGE_SIZE;
-
-#ifdef _XOPEN_UNIX
+    case _SC_PAGESIZE:          // Fall through, PAGESIZE and PAGE_SIZE always hold the same value.
+    case _SC_PAGE_SIZE:         return PAGE_SIZE;
     case _SC_XOPEN_UNIX:        return _XOPEN_UNIX;
-#endif
-
-    // XXX: TODO: XBS5 nonsense
-
-#ifdef AIO_LISTIO_MAX
-    case _SC_AIO_LISTIO_MAX:       return AIO_LISTIO_MAX;
-#endif
-#ifdef AIO_MAX
-    case _SC_AIO_MAX:              return AIO_MAX;
-#endif
-#ifdef AIO_PRIO_DELTA_MAX
-    case _SC_AIO_PRIO_DELTA_MAX:   return AIO_PRIO_DELTA_MAX;
-#endif
-    case _SC_DELAYTIMER_MAX:    return SYSTEM_DELAYTIMER_MAX;
-    case _SC_MQ_OPEN_MAX:       return SYSTEM_MQ_OPEN_MAX;
-    case _SC_MQ_PRIO_MAX:       return SYSTEM_MQ_PRIO_MAX;
+    case _SC_AIO_LISTIO_MAX:    return _POSIX_AIO_LISTIO_MAX;     // Minimum requirement.
+    case _SC_AIO_MAX:           return _POSIX_AIO_MAX;            // Minimum requirement.
+    case _SC_AIO_PRIO_DELTA_MAX:return 0;                         // Minimum requirement.
+    case _SC_DELAYTIMER_MAX:    return INT_MAX;
+    case _SC_MQ_OPEN_MAX:       return _POSIX_MQ_OPEN_MAX;        // Minimum requirement.
+    case _SC_MQ_PRIO_MAX:       return _POSIX_MQ_PRIO_MAX;        // Minimum requirement.
     case _SC_RTSIG_MAX:         return RTSIG_MAX;
-    case _SC_SEM_NSEMS_MAX:     return SYSTEM_SEM_NSEMS_MAX;
-    case _SC_SEM_VALUE_MAX:     return SYSTEM_SEM_VALUE_MAX;
-    case _SC_SIGQUEUE_MAX:      return SYSTEM_SIGQUEUE_MAX;
-    case _SC_TIMER_MAX:         return SYSTEM_TIMER_MAX;
-#ifdef _POSIX_ASYNCHRONOUS_IO
+    case _SC_SEM_NSEMS_MAX:     return _POSIX_SEM_NSEMS_MAX;      // Minimum requirement.
+    case _SC_SEM_VALUE_MAX:     return SEM_VALUE_MAX;
+    case _SC_SIGQUEUE_MAX:      return _POSIX_SIGQUEUE_MAX;       // Minimum requirement.
+    case _SC_TIMER_MAX:         return _POSIX_TIMER_MAX;          // Minimum requirement.
     case _SC_ASYNCHRONOUS_IO:   return _POSIX_ASYNCHRONOUS_IO;
-#endif
-#ifdef _POSIX_FSYNC
     case _SC_FSYNC:             return _POSIX_FSYNC;
-#endif
-#ifdef _POSIX_MAPPED_FILES
     case _SC_MAPPED_FILES:      return _POSIX_MAPPED_FILES;
-#endif
-#ifdef _POSIX_MEMLOCK
     case _SC_MEMLOCK:           return _POSIX_MEMLOCK;
-#endif
-#ifdef _POSIX_MEMLOCK_RANGE
-    case _SC_MEMLOCK_RANGE:     return _POSIX_MEMLOCK_RANGE
-#endif
-#ifdef _POSIX_MEMORY_PROTECTION
+    case _SC_MEMLOCK_RANGE:     return _POSIX_MEMLOCK_RANGE;
     case _SC_MEMORY_PROTECTION: return _POSIX_MEMORY_PROTECTION;
-#endif
-#ifdef _POSIX_MESSAGE_PASSING
     case _SC_MESSAGE_PASSING:   return _POSIX_MESSAGE_PASSING;
-#endif
-#ifdef _POSIX_PRIORITIZED_IO
     case _SC_PRIORITIZED_IO:    return _POSIX_PRIORITIZED_IO;
-#endif
-#ifdef _POSIX_PRIORITY_SCHEDULING
     case _SC_PRIORITY_SCHEDULING:  return _POSIX_PRIORITY_SCHEDULING;
-#endif
-#ifdef _POSIX_REALTIME_SIGNALS
     case _SC_REALTIME_SIGNALS:  return _POSIX_REALTIME_SIGNALS;
-#endif
-#ifdef _POSIX_SEMAPHORES
     case _SC_SEMAPHORES:        return _POSIX_SEMAPHORES;
-#endif
-#ifdef _POSIX_SHARED_MEMORY_OBJECTS
     case _SC_SHARED_MEMORY_OBJECTS:  return _POSIX_SHARED_MEMORY_OBJECTS;
-#endif
-#ifdef _POSIX_SYNCHRONIZED_IO
     case _SC_SYNCHRONIZED_IO:   return _POSIX_SYNCHRONIZED_IO;
-#endif
-#ifdef _POSIX_TIMERS
     case _SC_TIMERS:            return _POSIX_TIMERS;
-#endif
-
-    case _SC_GETGR_R_SIZE_MAX: return 1024;
-    case _SC_GETPW_R_SIZE_MAX: return 1024;
-
-    case _SC_LOGIN_NAME_MAX:    return SYSTEM_LOGIN_NAME_MAX;
-
-    case _SC_THREAD_DESTRUCTOR_ITERATIONS:
-      return _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
-
-    case _SC_THREAD_KEYS_MAX:
-      return (BIONIC_TLS_SLOTS - TLS_SLOT_FIRST_USER_SLOT - BIONIC_TLS_RESERVED_SLOTS);
-
+    case _SC_GETGR_R_SIZE_MAX:  return 1024;
+    case _SC_GETPW_R_SIZE_MAX:  return 1024;
+    case _SC_LOGIN_NAME_MAX:    return 256;   // Seems default on linux.
+    case _SC_THREAD_DESTRUCTOR_ITERATIONS: return PTHREAD_DESTRUCTOR_ITERATIONS;
+    case _SC_THREAD_KEYS_MAX:   return PTHREAD_KEYS_MAX;
     case _SC_THREAD_STACK_MIN:    return PTHREAD_STACK_MIN;
-    case _SC_THREAD_THREADS_MAX:  return SYSTEM_THREAD_THREADS_MAX;
-    case _SC_TTY_NAME_MAX:        return SYSTEM_TTY_NAME_MAX;
-#ifdef _POSIX_THREADS
+    case _SC_THREAD_THREADS_MAX:  return PTHREAD_THREADS_MAX;
+    case _SC_TTY_NAME_MAX:        return 32;  // Seems default on linux.
     case _SC_THREADS:             return _POSIX_THREADS;
-#endif
-
-    case _SC_THREAD_ATTR_STACKADDR:   return -1; // Removed in POSIX 2008
-    case _SC_THREAD_ATTR_STACKSIZE:   return -1; // Removed in POSIX 2008
-
-#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+    case _SC_THREAD_ATTR_STACKADDR:   return _POSIX_THREAD_ATTR_STACKADDR;
+    case _SC_THREAD_ATTR_STACKSIZE:   return _POSIX_THREAD_ATTR_STACKSIZE;
     case _SC_THREAD_PRIORITY_SCHEDULING:  return _POSIX_THREAD_PRIORITY_SCHEDULING;
-#endif
-#ifdef _POSIX_THREAD_PRIO_INHERIT
-    case _SC_THREAD_PRIO_INHERIT:         return _POSIX_THREAD_PRIO_INHERIT;
-#endif
-#ifdef _POSIX_THREAD_PRIO_PROTECT
+    case _SC_THREAD_PRIO_INHERIT: return _POSIX_THREAD_PRIO_INHERIT;
     case _SC_THREAD_PRIO_PROTECT: return _POSIX_THREAD_PRIO_PROTECT;
-#endif
-#ifdef _POSIX_THREAD_SAFE_FUNCTIONS
-    case _SC_THREAD_SAFE_FUNCTIONS:  return _POSIX_THREAD_SAFE_FUNCTIONS
-#endif
-
+    case _SC_THREAD_SAFE_FUNCTIONS:  return _POSIX_THREAD_SAFE_FUNCTIONS;
+    case _SC_NPROCESSORS_CONF:  return get_nprocs_conf();
+    case _SC_NPROCESSORS_ONLN:  return get_nprocs();
+    case _SC_PHYS_PAGES:        return get_phys_pages();
+    case _SC_AVPHYS_PAGES:      return get_avphys_pages();
     case _SC_MONOTONIC_CLOCK:   return __sysconf_monotonic_clock();
-    case _SC_NPROCESSORS_CONF:  return __sysconf_nprocessors_conf();
-    case _SC_NPROCESSORS_ONLN:  return __sysconf_nprocessors_onln();
-    case _SC_PHYS_PAGES:        return __sysconf_phys_pages();
-    case _SC_AVPHYS_PAGES:      return __sysconf_avphys_pages();
+
+    case _SC_2_PBS:             return -1;     // Obsolescent in POSIX.1-2008.
+    case _SC_2_PBS_ACCOUNTING:  return -1;     // Obsolescent in POSIX.1-2008.
+    case _SC_2_PBS_CHECKPOINT:  return -1;     // Obsolescent in POSIX.1-2008.
+    case _SC_2_PBS_LOCATE:      return -1;     // Obsolescent in POSIX.1-2008.
+    case _SC_2_PBS_MESSAGE:     return -1;     // Obsolescent in POSIX.1-2008.
+    case _SC_2_PBS_TRACK:       return -1;     // Obsolescent in POSIX.1-2008.
+    case _SC_ADVISORY_INFO:     return _POSIX_ADVISORY_INFO;
+    case _SC_BARRIERS:          return _POSIX_BARRIERS;
+    case _SC_CLOCK_SELECTION:   return _POSIX_CLOCK_SELECTION;
+    case _SC_CPUTIME:
+      return __sysconf_has_clock(CLOCK_PROCESS_CPUTIME_ID) ?_POSIX_VERSION : -1;
+
+    case _SC_HOST_NAME_MAX:     return _POSIX_HOST_NAME_MAX;    // Minimum requirement.
+    case _SC_IPV6:              return _POSIX_IPV6;
+    case _SC_RAW_SOCKETS:       return _POSIX_RAW_SOCKETS;
+    case _SC_READER_WRITER_LOCKS: return _POSIX_READER_WRITER_LOCKS;
+    case _SC_REGEXP:            return _POSIX_REGEXP;
+    case _SC_SHELL:             return _POSIX_SHELL;
+    case _SC_SPAWN:             return _POSIX_SPAWN;
+    case _SC_SPIN_LOCKS:        return _POSIX_SPIN_LOCKS;
+    case _SC_SPORADIC_SERVER:   return _POSIX_SPORADIC_SERVER;
+    case _SC_SS_REPL_MAX:       return -1;
+    case _SC_SYMLOOP_MAX:       return _POSIX_SYMLOOP_MAX;      // Minimum requirement.
+    case _SC_THREAD_CPUTIME:
+      return __sysconf_has_clock(CLOCK_THREAD_CPUTIME_ID) ? _POSIX_VERSION : -1;
+
+    case _SC_THREAD_PROCESS_SHARED: return _POSIX_THREAD_PROCESS_SHARED;
+    case _SC_THREAD_ROBUST_PRIO_INHERIT:  return _POSIX_THREAD_ROBUST_PRIO_INHERIT;
+    case _SC_THREAD_ROBUST_PRIO_PROTECT:  return _POSIX_THREAD_ROBUST_PRIO_PROTECT;
+    case _SC_THREAD_SPORADIC_SERVER:      return _POSIX_THREAD_SPORADIC_SERVER;
+    case _SC_TIMEOUTS:          return _POSIX_TIMEOUTS;
+    case _SC_TRACE:             return -1;             // Obsolescent in POSIX.1-2008.
+    case _SC_TRACE_EVENT_FILTER:      return -1;       // Obsolescent in POSIX.1-2008.
+    case _SC_TRACE_EVENT_NAME_MAX:    return -1;
+    case _SC_TRACE_INHERIT:     return -1;             // Obsolescent in POSIX.1-2008.
+    case _SC_TRACE_LOG:         return -1;             // Obsolescent in POSIX.1-2008.
+    case _SC_TRACE_NAME_MAX:    return -1;
+    case _SC_TRACE_SYS_MAX:     return -1;
+    case _SC_TRACE_USER_EVENT_MAX:    return -1;
+    case _SC_TYPED_MEMORY_OBJECTS:    return _POSIX_TYPED_MEMORY_OBJECTS;
+    case _SC_V7_ILP32_OFF32:    return _POSIX_V7_ILP32_OFF32;
+    case _SC_V7_ILP32_OFFBIG:   return _POSIX_V7_ILP32_OFFBIG;
+    case _SC_V7_LP64_OFF64:     return _POSIX_V7_LP64_OFF64;
+    case _SC_V7_LPBIG_OFFBIG:   return _POSIX_V7_LPBIG_OFFBIG;
+    case _SC_XOPEN_STREAMS:     return -1;            // Obsolescent in POSIX.1-2008.
+    case _SC_XOPEN_UUCP:        return -1;
+
+    // We do not have actual implementations for cache queries.
+    // It's valid to return 0 as the result is unknown.
+    case _SC_LEVEL1_ICACHE_SIZE:      return 0;
+    case _SC_LEVEL1_ICACHE_ASSOC:     return 0;
+    case _SC_LEVEL1_ICACHE_LINESIZE:  return 0;
+    case _SC_LEVEL1_DCACHE_SIZE:      return 0;
+    case _SC_LEVEL1_DCACHE_ASSOC:     return 0;
+    case _SC_LEVEL1_DCACHE_LINESIZE:  return 0;
+    case _SC_LEVEL2_CACHE_SIZE:       return 0;
+    case _SC_LEVEL2_CACHE_ASSOC:      return 0;
+    case _SC_LEVEL2_CACHE_LINESIZE:   return 0;
+    case _SC_LEVEL3_CACHE_SIZE:       return 0;
+    case _SC_LEVEL3_CACHE_ASSOC:      return 0;
+    case _SC_LEVEL3_CACHE_LINESIZE:   return 0;
+    case _SC_LEVEL4_CACHE_SIZE:       return 0;
+    case _SC_LEVEL4_CACHE_ASSOC:      return 0;
+    case _SC_LEVEL4_CACHE_LINESIZE:   return 0;
 
     default:
-       /* Posix says EINVAL is the only error that shall be returned,
-        * but GLibc uses ENOSYS */
-        errno = ENOSYS;
-        return -1;
-    }
+      // Posix says EINVAL is the only error that shall be returned,
+      // but glibc uses ENOSYS.
+      errno = ENOSYS;
+      return -1;
+  }
 }
diff --git a/libc/bionic/sysinfo.cpp b/libc/bionic/sysinfo.cpp
new file mode 100644
index 0000000..82cb76a
--- /dev/null
+++ b/libc/bionic/sysinfo.cpp
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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/sysinfo.h>
+
+#include <dirent.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "private/ScopedReaddir.h"
+
+static bool __matches_cpuN(const char* s) {
+  // The %c trick is to ensure that we have the anchored match "^cpu[0-9]+$".
+  unsigned cpu;
+  char dummy;
+  return (sscanf(s, "cpu%u%c", &cpu, &dummy) == 1);
+}
+
+int get_nprocs_conf() {
+  // On x86 kernels you can use /proc/cpuinfo for this, but on ARM kernels offline CPUs disappear
+  // from there. This method works on both.
+  ScopedReaddir reader("/sys/devices/system/cpu");
+  if (reader.IsBad()) {
+    return 1;
+  }
+
+  int result = 0;
+  dirent* entry;
+  while ((entry = reader.ReadEntry()) != NULL) {
+    if (entry->d_type == DT_DIR && __matches_cpuN(entry->d_name)) {
+      ++result;
+    }
+  }
+  return result;
+}
+
+int get_nprocs() {
+  FILE* fp = fopen("/proc/stat", "re");
+  if (fp == NULL) {
+    return 1;
+  }
+
+  int result = 0;
+  char buf[256];
+  while (fgets(buf, sizeof(buf), fp) != NULL) {
+    // Extract just the first word from the line.
+    // 'cpu0 7976751 1364388 3116842 469770388 8629405 0 49047 0 0 0'
+    char* p = strchr(buf, ' ');
+    if (p != NULL) {
+      *p = 0;
+    }
+    if (__matches_cpuN(buf)) {
+      ++result;
+    }
+  }
+  fclose(fp);
+  return result;
+}
+
+static int __get_meminfo_page_count(const char* pattern) {
+  FILE* fp = fopen("/proc/meminfo", "re");
+  if (fp == NULL) {
+    return -1;
+  }
+
+  int page_count = -1;
+  char buf[256];
+  while (fgets(buf, sizeof(buf), fp) != NULL) {
+    long total;
+    if (sscanf(buf, pattern, &total) == 1) {
+      page_count = static_cast<int>(total / (PAGE_SIZE / 1024));
+      break;
+    }
+  }
+  fclose(fp);
+  return page_count;
+}
+
+long get_phys_pages() {
+  return __get_meminfo_page_count("MemTotal: %ld kB");
+}
+
+long get_avphys_pages() {
+  return __get_meminfo_page_count("MemFree: %ld kB");
+}
diff --git a/libc/bionic/syslog.cpp b/libc/bionic/syslog.cpp
index d8b8b19..8e3f34f 100644
--- a/libc/bionic/syslog.cpp
+++ b/libc/bionic/syslog.cpp
@@ -16,6 +16,7 @@
 
 #include <errno.h>
 #include <stdlib.h>
+#include <string.h>
 #include <syslog.h>
 
 #include "private/libc_logging.h"
diff --git a/libc/bionic/system_properties.cpp b/libc/bionic/system_properties.cpp
index 0e16bf3..c436a16 100644
--- a/libc/bionic/system_properties.cpp
+++ b/libc/bionic/system_properties.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 #include <new>
+#include <stdatomic.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
@@ -45,13 +46,11 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <netinet/in.h>
-#include <unistd.h>
 
 #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
 #include <sys/_system_properties.h>
 #include <sys/system_properties.h>
 
-#include "private/bionic_atomic_inline.h"
 #include "private/bionic_futex.h"
 #include "private/bionic_macros.h"
 
@@ -80,12 +79,26 @@
     uint8_t namelen;
     uint8_t reserved[3];
 
-    volatile uint32_t prop;
+    // The property trie is updated only by the init process (single threaded) which provides
+    // property service. And it can be read by multiple threads at the same time.
+    // As the property trie is not protected by locks, we use atomic_uint_least32_t types for the
+    // left, right, children "pointers" in the trie node. To make sure readers who see the
+    // change of "pointers" can also notice the change of prop_bt structure contents pointed by
+    // the "pointers", we always use release-consume ordering pair when accessing these "pointers".
 
-    volatile uint32_t left;
-    volatile uint32_t right;
+    // prop "points" to prop_info structure if there is a propery associated with the trie node.
+    // Its situation is similar to the left, right, children "pointers". So we use
+    // atomic_uint_least32_t and release-consume ordering to protect it as well.
 
-    volatile uint32_t children;
+    // We should also avoid rereading these fields redundantly, since not
+    // all processor implementations ensure that multiple loads from the
+    // same field are carried out in the right order.
+    atomic_uint_least32_t prop;
+
+    atomic_uint_least32_t left;
+    atomic_uint_least32_t right;
+
+    atomic_uint_least32_t children;
 
     char name[0];
 
@@ -93,7 +106,6 @@
         this->namelen = name_length;
         memcpy(this->name, name, name_length);
         this->name[name_length] = '\0';
-        ANDROID_MEMBAR_FULL();
     }
 
 private:
@@ -102,14 +114,15 @@
 
 struct prop_area {
     uint32_t bytes_used;
-    volatile uint32_t serial;
+    atomic_uint_least32_t serial;
     uint32_t magic;
     uint32_t version;
     uint32_t reserved[28];
     char data[0];
 
     prop_area(const uint32_t magic, const uint32_t version) :
-        serial(0), magic(magic), version(version) {
+        magic(magic), version(version) {
+        atomic_init(&serial, 0);
         memset(reserved, 0, sizeof(reserved));
         // Allocate enough space for the root node.
         bytes_used = sizeof(prop_bt);
@@ -120,7 +133,7 @@
 };
 
 struct prop_info {
-    volatile uint32_t serial;
+    atomic_uint_least32_t serial;
     char value[PROP_VALUE_MAX];
     char name[0];
 
@@ -128,10 +141,9 @@
               const uint8_t valuelen) {
         memcpy(this->name, name, namelen);
         this->name[namelen] = '\0';
-        this->serial = (valuelen << 24);
+        atomic_init(&this->serial, valuelen << 24);
         memcpy(this->value, value, valuelen);
         this->value[valuelen] = '\0';
-        ANDROID_MEMBAR_FULL();
     }
 private:
     DISALLOW_COPY_AND_ASSIGN(prop_info);
@@ -188,14 +200,6 @@
         return -1;
     }
 
-    // TODO: Is this really required ? Does android run on any kernels that
-    // don't support O_CLOEXEC ?
-    const int ret = fcntl(fd, F_SETFD, FD_CLOEXEC);
-    if (ret < 0) {
-        close(fd);
-        return -1;
-    }
-
     if (ftruncate(fd, PA_SIZE) < 0) {
         close(fd);
         return -1;
@@ -258,18 +262,9 @@
 
 static int map_prop_area()
 {
-    int fd(open(property_filename, O_RDONLY | O_NOFOLLOW | O_CLOEXEC));
-    if (fd >= 0) {
-        /* For old kernels that don't support O_CLOEXEC */
-        const int ret = fcntl(fd, F_SETFD, FD_CLOEXEC);
-        if (ret < 0) {
-            close(fd);
-            return -1;
-        }
-    }
-
+    int fd = open(property_filename, O_CLOEXEC | O_NOFOLLOW | O_RDONLY);
     bool close_fd = true;
-    if ((fd < 0) && (errno == ENOENT)) {
+    if (fd == -1 && errno == ENOENT) {
         /*
          * For backwards compatibility, if the file doesn't
          * exist, we use the environment to get the file descriptor.
@@ -295,10 +290,10 @@
     return map_result;
 }
 
-static void *allocate_obj(const size_t size, uint32_t *const off)
+static void *allocate_obj(const size_t size, uint_least32_t *const off)
 {
     prop_area *pa = __system_property_area__;
-    const size_t aligned = BIONIC_ALIGN(size, sizeof(uint32_t));
+    const size_t aligned = BIONIC_ALIGN(size, sizeof(uint_least32_t));
     if (pa->bytes_used + aligned > pa_data_size) {
         return NULL;
     }
@@ -308,12 +303,12 @@
     return pa->data + *off;
 }
 
-static prop_bt *new_prop_bt(const char *name, uint8_t namelen, uint32_t *const off)
+static prop_bt *new_prop_bt(const char *name, uint8_t namelen, uint_least32_t *const off)
 {
-    uint32_t new_offset;
-    void *const offset = allocate_obj(sizeof(prop_bt) + namelen + 1, &new_offset);
-    if (offset) {
-        prop_bt* bt = new(offset) prop_bt(name, namelen);
+    uint_least32_t new_offset;
+    void *const p = allocate_obj(sizeof(prop_bt) + namelen + 1, &new_offset);
+    if (p != NULL) {
+        prop_bt* bt = new(p) prop_bt(name, namelen);
         *off = new_offset;
         return bt;
     }
@@ -322,20 +317,20 @@
 }
 
 static prop_info *new_prop_info(const char *name, uint8_t namelen,
-        const char *value, uint8_t valuelen, uint32_t *const off)
+        const char *value, uint8_t valuelen, uint_least32_t *const off)
 {
-    uint32_t off_tmp;
-    void* const offset = allocate_obj(sizeof(prop_info) + namelen + 1, &off_tmp);
-    if (offset) {
-        prop_info* info = new(offset) prop_info(name, namelen, value, valuelen);
-        *off = off_tmp;
+    uint_least32_t new_offset;
+    void* const p = allocate_obj(sizeof(prop_info) + namelen + 1, &new_offset);
+    if (p != NULL) {
+        prop_info* info = new(p) prop_info(name, namelen, value, valuelen);
+        *off = new_offset;
         return info;
     }
 
     return NULL;
 }
 
-static void *to_prop_obj(const uint32_t off)
+static void *to_prop_obj(uint_least32_t off)
 {
     if (off > pa_data_size)
         return NULL;
@@ -345,7 +340,17 @@
     return (__system_property_area__->data + off);
 }
 
-static prop_bt *root_node()
+static inline prop_bt *to_prop_bt(atomic_uint_least32_t* off_p) {
+  uint_least32_t off = atomic_load_explicit(off_p, memory_order_consume);
+  return reinterpret_cast<prop_bt*>(to_prop_obj(off));
+}
+
+static inline prop_info *to_prop_info(atomic_uint_least32_t* off_p) {
+  uint_least32_t off = atomic_load_explicit(off_p, memory_order_consume);
+  return reinterpret_cast<prop_info*>(to_prop_obj(off));
+}
+
+static inline prop_bt *root_node()
 {
     return reinterpret_cast<prop_bt*>(to_prop_obj(0));
 }
@@ -377,36 +382,34 @@
         }
 
         if (ret < 0) {
-            if (current->left) {
-                current = reinterpret_cast<prop_bt*>(to_prop_obj(current->left));
+            uint_least32_t left_offset = atomic_load_explicit(&current->left, memory_order_relaxed);
+            if (left_offset != 0) {
+                current = to_prop_bt(&current->left);
             } else {
                 if (!alloc_if_needed) {
                    return NULL;
                 }
 
-                // Note that there isn't a race condition here. "clients" never
-                // reach this code-path since It's only the (single threaded) server
-                // that allocates new nodes. Though "bt->left" is volatile, it can't
-                // have changed since the last value was last read.
-                uint32_t new_offset = 0;
+                uint_least32_t new_offset;
                 prop_bt* new_bt = new_prop_bt(name, namelen, &new_offset);
                 if (new_bt) {
-                    current->left = new_offset;
+                    atomic_store_explicit(&current->left, new_offset, memory_order_release);
                 }
                 return new_bt;
             }
         } else {
-            if (current->right) {
-                current = reinterpret_cast<prop_bt*>(to_prop_obj(current->right));
+            uint_least32_t right_offset = atomic_load_explicit(&current->right, memory_order_relaxed);
+            if (right_offset != 0) {
+                current = to_prop_bt(&current->right);
             } else {
                 if (!alloc_if_needed) {
                    return NULL;
                 }
 
-                uint32_t new_offset;
+                uint_least32_t new_offset;
                 prop_bt* new_bt = new_prop_bt(name, namelen, &new_offset);
                 if (new_bt) {
-                    current->right = new_offset;
+                    atomic_store_explicit(&current->right, new_offset, memory_order_release);
                 }
                 return new_bt;
             }
@@ -433,13 +436,14 @@
         }
 
         prop_bt* root = NULL;
-        if (current->children) {
-            root = reinterpret_cast<prop_bt*>(to_prop_obj(current->children));
+        uint_least32_t children_offset = atomic_load_explicit(&current->children, memory_order_relaxed);
+        if (children_offset != 0) {
+            root = to_prop_bt(&current->children);
         } else if (alloc_if_needed) {
-            uint32_t new_bt_offset;
-            root = new_prop_bt(remaining_name, substr_size, &new_bt_offset);
+            uint_least32_t new_offset;
+            root = new_prop_bt(remaining_name, substr_size, &new_offset);
             if (root) {
-                current->children = new_bt_offset;
+                atomic_store_explicit(&current->children, new_offset, memory_order_release);
             }
         }
 
@@ -458,13 +462,14 @@
         remaining_name = sep + 1;
     }
 
-    if (current->prop) {
-        return reinterpret_cast<prop_info*>(to_prop_obj(current->prop));
+    uint_least32_t prop_offset = atomic_load_explicit(&current->prop, memory_order_relaxed);
+    if (prop_offset != 0) {
+        return to_prop_info(&current->prop);
     } else if (alloc_if_needed) {
-        uint32_t new_info_offset;
-        prop_info* new_info = new_prop_info(name, namelen, value, valuelen, &new_info_offset);
+        uint_least32_t new_offset;
+        prop_info* new_info = new_prop_info(name, namelen, value, valuelen, &new_offset);
         if (new_info) {
-            current->prop = new_info_offset;
+            atomic_store_explicit(&current->prop, new_offset, memory_order_release);
         }
 
         return new_info;
@@ -538,31 +543,34 @@
     cookie->count++;
 }
 
-static int foreach_property(const uint32_t off,
+static int foreach_property(prop_bt *const trie,
         void (*propfn)(const prop_info *pi, void *cookie), void *cookie)
 {
-    prop_bt *trie = reinterpret_cast<prop_bt*>(to_prop_obj(off));
     if (!trie)
         return -1;
 
-    if (trie->left) {
-        const int err = foreach_property(trie->left, propfn, cookie);
+    uint_least32_t left_offset = atomic_load_explicit(&trie->left, memory_order_relaxed);
+    if (left_offset != 0) {
+        const int err = foreach_property(to_prop_bt(&trie->left), propfn, cookie);
         if (err < 0)
             return -1;
     }
-    if (trie->prop) {
-        prop_info *info = reinterpret_cast<prop_info*>(to_prop_obj(trie->prop));
+    uint_least32_t prop_offset = atomic_load_explicit(&trie->prop, memory_order_relaxed);
+    if (prop_offset != 0) {
+        prop_info *info = to_prop_info(&trie->prop);
         if (!info)
             return -1;
         propfn(info, cookie);
     }
-    if (trie->children) {
-        const int err = foreach_property(trie->children, propfn, cookie);
+    uint_least32_t children_offset = atomic_load_explicit(&trie->children, memory_order_relaxed);
+    if (children_offset != 0) {
+        const int err = foreach_property(to_prop_bt(&trie->children), propfn, cookie);
         if (err < 0)
             return -1;
     }
-    if (trie->right) {
-        const int err = foreach_property(trie->right, propfn, cookie);
+    uint_least32_t right_offset = atomic_load_explicit(&trie->right, memory_order_relaxed);
+    if (right_offset != 0) {
+        const int err = foreach_property(to_prop_bt(&trie->right), propfn, cookie);
         if (err < 0)
             return -1;
     }
@@ -590,6 +598,16 @@
     return map_prop_area_rw();
 }
 
+unsigned int __system_property_area_serial()
+{
+    prop_area *pa = __system_property_area__;
+    if (!pa) {
+        return -1;
+    }
+    // Make sure this read fulfilled before __system_property_serial
+    return atomic_load_explicit(&(pa->serial), memory_order_acquire);
+}
+
 const prop_info *__system_property_find(const char *name)
 {
     if (__predict_false(compat_mode)) {
@@ -598,6 +616,14 @@
     return find_property(root_node(), name, strlen(name), NULL, 0, false);
 }
 
+// The C11 standard doesn't allow atomic loads from const fields,
+// though C++11 does.  Fudge it until standards get straightened out.
+static inline uint_least32_t load_const_atomic(const atomic_uint_least32_t* s,
+                                               memory_order mo) {
+    atomic_uint_least32_t* non_const_s = const_cast<atomic_uint_least32_t*>(s);
+    return atomic_load_explicit(non_const_s, mo);
+}
+
 int __system_property_read(const prop_info *pi, char *name, char *value)
 {
     if (__predict_false(compat_mode)) {
@@ -605,11 +631,20 @@
     }
 
     while (true) {
-        uint32_t serial = __system_property_serial(pi);
+        uint32_t serial = __system_property_serial(pi); // acquire semantics
         size_t len = SERIAL_VALUE_LEN(serial);
         memcpy(value, pi->value, len + 1);
-        ANDROID_MEMBAR_FULL();
-        if (serial == pi->serial) {
+        // TODO: Fix the synchronization scheme here.
+        // There is no fully supported way to implement this kind
+        // of synchronization in C++11, since the memcpy races with
+        // updates to pi, and the data being accessed is not atomic.
+        // The following fence is unintuitive, but would be the
+        // correct one if memcpy used memory_order_relaxed atomic accesses.
+        // In practice it seems unlikely that the generated code would
+        // would be any different, so this should be OK.
+        atomic_thread_fence(memory_order_acquire);
+        if (serial ==
+                load_const_atomic(&(pi->serial), memory_order_relaxed)) {
             if (name != 0) {
                 strcpy(name, pi->name);
             }
@@ -658,14 +693,24 @@
     if (len >= PROP_VALUE_MAX)
         return -1;
 
-    pi->serial = pi->serial | 1;
-    ANDROID_MEMBAR_FULL();
+    uint32_t serial = atomic_load_explicit(&pi->serial, memory_order_relaxed);
+    serial |= 1;
+    atomic_store_explicit(&pi->serial, serial, memory_order_relaxed);
+    // The memcpy call here also races.  Again pretend it
+    // used memory_order_relaxed atomics, and use the analogous
+    // counterintuitive fence.
+    atomic_thread_fence(memory_order_release);
     memcpy(pi->value, value, len + 1);
-    ANDROID_MEMBAR_FULL();
-    pi->serial = (len << 24) | ((pi->serial + 1) & 0xffffff);
+    atomic_store_explicit(
+        &pi->serial,
+        (len << 24) | ((serial + 1) & 0xffffff),
+        memory_order_release);
     __futex_wake(&pi->serial, INT32_MAX);
 
-    pa->serial++;
+    atomic_store_explicit(
+        &pa->serial,
+        atomic_load_explicit(&pa->serial, memory_order_relaxed) + 1,
+        memory_order_release);
     __futex_wake(&pa->serial, INT32_MAX);
 
     return 0;
@@ -688,17 +733,25 @@
     if (!pi)
         return -1;
 
-    pa->serial++;
+    // There is only a single mutator, but we want to make sure that
+    // updates are visible to a reader waiting for the update.
+    atomic_store_explicit(
+        &pa->serial,
+        atomic_load_explicit(&pa->serial, memory_order_relaxed) + 1,
+        memory_order_release);
     __futex_wake(&pa->serial, INT32_MAX);
     return 0;
 }
 
+// Wait for non-locked serial, and retrieve it with acquire semantics.
 unsigned int __system_property_serial(const prop_info *pi)
 {
-    uint32_t serial = pi->serial;
+    uint32_t serial = load_const_atomic(&pi->serial, memory_order_acquire);
     while (SERIAL_DIRTY(serial)) {
-        __futex_wait(const_cast<volatile uint32_t*>(&pi->serial), serial, NULL);
-        serial = pi->serial;
+        __futex_wait(const_cast<volatile void *>(
+                        reinterpret_cast<const void *>(&pi->serial)),
+                     serial, NULL);
+        serial = load_const_atomic(&pi->serial, memory_order_acquire);
     }
     return serial;
 }
@@ -706,12 +759,14 @@
 unsigned int __system_property_wait_any(unsigned int serial)
 {
     prop_area *pa = __system_property_area__;
+    uint32_t my_serial;
 
     do {
         __futex_wait(&pa->serial, serial, NULL);
-    } while (pa->serial == serial);
+        my_serial = atomic_load_explicit(&pa->serial, memory_order_acquire);
+    } while (my_serial == serial);
 
-    return pa->serial;
+    return my_serial;
 }
 
 const prop_info *__system_property_find_nth(unsigned n)
@@ -733,5 +788,5 @@
         return __system_property_foreach_compat(propfn, cookie);
     }
 
-    return foreach_property(0, propfn, cookie);
+    return foreach_property(root_node(), propfn, cookie);
 }
diff --git a/libc/bionic/tdestroy.cpp b/libc/bionic/tdestroy.cpp
index 49614b8..95c3e64 100644
--- a/libc/bionic/tdestroy.cpp
+++ b/libc/bionic/tdestroy.cpp
@@ -21,7 +21,7 @@
 // Destroy a tree and free all allocated resources.
 // This is a GNU extension, not available from BSD.
 void tdestroy(void* root, void (*destroy_func)(void*)) {
-  node_t* root_node = (node_t*) root;
+  node_t* root_node = reinterpret_cast<node_t*>(root);
   if (root_node == NULL) {
     return;
   }
diff --git a/libc/bionic/termios.cpp b/libc/bionic/termios.cpp
index 082dcdc..44ae643 100644
--- a/libc/bionic/termios.cpp
+++ b/libc/bionic/termios.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <termios.h>
 #include <unistd.h>
 
diff --git a/libc/bionic/time64.c b/libc/bionic/time64.c
index 95dfab5..da38bf3b 100644
--- a/libc/bionic/time64.c
+++ b/libc/bionic/time64.c
@@ -748,10 +748,24 @@
 char *asctime64_r( const struct TM* date, char *result ) {
     /* I figure everything else can be displayed, even hour 25, but if
        these are out of range we walk off the name arrays */
-    if( !valid_tm_wday(date) || !valid_tm_mon(date) )
+    if (!valid_tm_wday(date) || !valid_tm_mon(date)) {
         return NULL;
+    }
 
-    sprintf(result, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
+    /* Docs state this function does not support years beyond 9999. */
+    if (1900 + date->tm_year > 9999) {
+        return NULL;
+    }
+
+    /*
+     * The IBM docs for this function state that the result buffer can be
+     * assumed to be at least 26 bytes wide. The docs also state that this is
+     * only valid for years <= 9999, so we know this format string will not
+     * print more than that many characters.
+     *
+     * http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/asctimer.htm
+     */
+    snprintf(result, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
         wday_name[date->tm_wday],
         mon_name[date->tm_mon],
         date->tm_mday, date->tm_hour,
diff --git a/libc/bionic/utimes.cpp b/libc/bionic/utimes.cpp
index 65f2d0b..0b66e6c 100644
--- a/libc/bionic/utimes.cpp
+++ b/libc/bionic/utimes.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/time.h>
diff --git a/libc/bionic/vdso.cpp b/libc/bionic/vdso.cpp
index 0875ee6..a240663 100644
--- a/libc/bionic/vdso.cpp
+++ b/libc/bionic/vdso.cpp
@@ -15,6 +15,7 @@
  */
 
 #include <link.h>
+#include <string.h>
 #include <sys/auxv.h>
 #include <unistd.h>
 
@@ -52,13 +53,13 @@
 
 int clock_gettime(int clock_id, timespec* tp) {
   static int (*vdso_clock_gettime)(int, timespec*) =
-      (int (*)(int, timespec*)) vdso_entries[VDSO_CLOCK_GETTIME].fn;
+      reinterpret_cast<int (*)(int, timespec*)>(vdso_entries[VDSO_CLOCK_GETTIME].fn);
   return vdso_clock_gettime(clock_id, tp);
 }
 
 int gettimeofday(timeval* tv, struct timezone* tz) {
   static int (*vdso_gettimeofday)(timeval*, struct timezone*) =
-      (int (*)(timeval*, struct timezone*)) vdso_entries[VDSO_GETTIMEOFDAY].fn;
+      reinterpret_cast<int (*)(timeval*, struct timezone*)>(vdso_entries[VDSO_GETTIMEOFDAY].fn);
   return vdso_gettimeofday(tv, tz);
 }
 
diff --git a/libc/bionic/wmempcpy.cpp b/libc/bionic/wmempcpy.cpp
new file mode 100644
index 0000000..54ebf86
--- /dev/null
+++ b/libc/bionic/wmempcpy.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <wchar.h>
+
+wchar_t* wmempcpy(wchar_t* dst, const wchar_t* src, size_t n) {
+  return wmemcpy(dst, src, n) + n;
+}
diff --git a/libc/crt.mk b/libc/crt.mk
index c3ba54b..6365332 100644
--- a/libc/crt.mk
+++ b/libc/crt.mk
@@ -31,30 +31,19 @@
 
 my_libc_crt_target_ldflags := $(libc_crt_target_ldflags_$(my_arch))
 
-
-# See the comment in crtbrand.c for the reason why we need to generate
-# crtbrand.s before generating crtbrand.o.
-GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.s
-$(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
-$(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
-$(GEN): $(LOCAL_PATH)/bionic/crtbrand.c
-	@mkdir -p $(dir $@)
-	$(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) -S \
-		-MD -MF $(@:%.s=%.d) -o $@ $<
-	$(hide) sed -i -e '/\.note\.ABI-tag/s/progbits/note/' $@
-	$(call transform-d-to-p-args,$(@:%.s=%.d),$(@:%.s=%.P))
--include $(GEN:%.s=%.P)
-
-
+# crtbrand.S -> crtbrand.o
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
-$(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.s
+$(GEN): $(LOCAL_PATH)/arch-common/bionic/crtbrand.S
 	@mkdir -p $(dir $@)
-	$(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) -o $@ -c $<
+	$(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) \
+		-MD -MF $(@:%.o=%.d) -o $@ -c $<
+	$(transform-d-to-p)
+-include $(GEN:%.o=%.P)
 
-
-GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
+# crtbegin_so.c -> crtbegin_so1.o
+GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so1.o
 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
 $(GEN): $(my_libc_crt_target_crtbegin_so_file)
@@ -64,7 +53,16 @@
 	$(transform-d-to-p)
 -include $(GEN:%.o=%.P)
 
+# crtbegin_so1.o + crtbrand.o -> crtbegin_so.o
+GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
+$(GEN): PRIVATE_LD := $($(my_2nd_arch_prefix)TARGET_LD)
+$(GEN): PRIVATE_LDFLAGS := $(my_libc_crt_target_ldflags)
+$(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so1.o \
+    $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
+	@mkdir -p $(dir $@)
+	$(hide) $(PRIVATE_LD) $(PRIVATE_LDFLAGS) -r -o $@ $^
 
+# crtend_so.S -> crtend_so.o
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o
 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
@@ -75,8 +73,7 @@
 	$(transform-d-to-p)
 -include $(GEN:%.o=%.P)
 
-
-# The following two are installed to device
+# crtbegin_so.o and crtend_so.o are installed to device
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_SHARED_LIBRARIES)/crtbegin_so.o
 $(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
 	$(hide) mkdir -p $(dir $@) && cp -f $< $@
@@ -87,7 +84,7 @@
 	$(hide) mkdir -p $(dir $@) && cp -f $< $@
 ALL_GENERATED_SOURCES += $(GEN)
 
-
+# crtbegin.c -> crtbegin_static1.o
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static1.o
 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_cflags)
@@ -98,7 +95,7 @@
 	$(transform-d-to-p)
 -include $(GEN:%.o=%.P)
 
-
+# crtbegin_static1.o + crtbrand.o -> crtbegin_static.o
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o
 $(GEN): PRIVATE_LD := $($(my_2nd_arch_prefix)TARGET_LD)
 $(GEN): PRIVATE_LDFLAGS := $(my_libc_crt_target_ldflags)
@@ -107,7 +104,7 @@
 	@mkdir -p $(dir $@)
 	$(hide) $(PRIVATE_LD) $(PRIVATE_LDFLAGS) -r -o $@ $^
 
-
+# crtbegin.c -> crtbegin_dynamic1.o
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic1.o
 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_cflags)
@@ -118,7 +115,7 @@
 	$(transform-d-to-p)
 -include $(GEN:%.o=%.P)
 
-
+# crtbegin_dynamic1.o + crtbrand.o -> crtbegin_dynamic.o
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o
 $(GEN): PRIVATE_LD := $($(my_2nd_arch_prefix)TARGET_LD)
 $(GEN): PRIVATE_LDFLAGS := $(my_libc_crt_target_ldflags)
@@ -127,7 +124,7 @@
 	@mkdir -p $(dir $@)
 	$(hide) $(PRIVATE_LD) $(PRIVATE_LDFLAGS) -r -o $@ $^
 
-
+# crtend.S -> crtend_android.o
 # We rename crtend.o to crtend_android.o to avoid a
 # name clash between gcc and bionic.
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_android.o
diff --git a/libc/dns/gethnamaddr.c b/libc/dns/gethnamaddr.c
deleted file mode 100644
index 1d847b8..0000000
--- a/libc/dns/gethnamaddr.c
+++ /dev/null
@@ -1,1416 +0,0 @@
-/*	$NetBSD: gethnamaddr.c,v 1.70 2006/03/22 00:03:51 christos Exp $	*/
-
-/*
- * ++Copyright++ 1985, 1988, 1993
- * -
- * Copyright (c) 1985, 1988, 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. 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.
- * -
- * Portions Copyright (c) 1993 by Digital Equipment Corporation.
- *
- * 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, and that
- * the name of Digital Equipment Corporation not be used in advertising or
- * publicity pertaining to distribution of the document or software without
- * specific, written prior permission.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
- * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, 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 THIS
- * SOFTWARE.
- * -
- * --Copyright--
- */
-
-#include <sys/cdefs.h>
-#include <sys/types.h>
-
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <arpa/nameser.h>
-#include "NetdClientDispatch.h"
-#include "resolv_netid.h"
-#include "resolv_private.h"
-#include "resolv_cache.h"
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <netdb.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <strings.h>
-#include <syslog.h>
-#include <unistd.h>
-
-#define ALIGNBYTES (sizeof(uintptr_t) - 1)
-#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) &~ ALIGNBYTES)
-
-#ifndef LOG_AUTH
-# define LOG_AUTH 0
-#endif
-
-#define MULTI_PTRS_ARE_ALIASES 1	/* XXX - experimental */
-
-#include "nsswitch.h"
-#include <stdlib.h>
-#include <string.h>
-
-// This should be synchronized to ResponseCode.h
-static const int DnsProxyQueryResult = 222;
-
-static const char AskedForGot[] =
-			  "gethostby*.getanswer: asked for \"%s\", got \"%s\"";
-
-#define	MAXPACKET	(64*1024)
-
-typedef union {
-    HEADER hdr;
-    u_char buf[MAXPACKET];
-} querybuf;
-
-typedef union {
-    int32_t al;
-    char ac;
-} align;
-
-#ifdef DEBUG
-static void dprintf(const char *, res_state, ...)
-	__attribute__((__format__(__printf__, 1, 3)));
-#endif
-static struct hostent *getanswer(const querybuf *, int, const char *, int,
-    res_state);
-static void map_v4v6_address(const char *, char *);
-static void map_v4v6_hostent(struct hostent *, char **, char *);
-static void addrsort(char **, int, res_state);
-
-static void _sethtent(int);
-static void _endhtent(void);
-static struct hostent *_gethtent(void);
-void ht_sethostent(int);
-void ht_endhostent(void);
-struct hostent *ht_gethostbyname(char *);
-struct hostent *ht_gethostbyaddr(const char *, int, int);
-void dns_service(void);
-#undef dn_skipname
-int dn_skipname(const u_char *, const u_char *);
-static int _gethtbyaddr(void *, void *, va_list);
-static int _gethtbyname(void *, void *, va_list);
-static struct hostent *_gethtbyname2(const char *, int);
-static int _dns_gethtbyaddr(void *, void *, va_list);
-static int _dns_gethtbyname(void *, void *, va_list);
-
-static struct hostent *gethostbyname_internal(const char *, int, res_state, unsigned, unsigned);
-
-static const ns_src default_dns_files[] = {
-	{ NSSRC_FILES, 	NS_SUCCESS },
-	{ NSSRC_DNS, 	NS_SUCCESS },
-	{ 0, 0 }
-};
-
-
-#ifdef DEBUG
-static void
-dprintf(const char *msg, res_state res, ...)
-{
-	assert(msg != NULL);
-
-	if (res->options & RES_DEBUG) {
-		int save = errno;
-		va_list ap;
-
-		va_start (ap, res);
-		vprintf(msg, ap);
-		va_end (ap);
-
-		errno = save;
-	}
-}
-#else
-# define dprintf(msg, res, num) ((void)0) /*nada*/
-#endif
-
-#define BOUNDED_INCR(x) \
-	do { \
-		cp += (x); \
-		if (cp > eom) { \
-			h_errno = NO_RECOVERY; \
-			return NULL; \
-		} \
-	} while (/*CONSTCOND*/0)
-
-#define BOUNDS_CHECK(ptr, count) \
-	do { \
-		if ((ptr) + (count) > eom) { \
-			h_errno = NO_RECOVERY; \
-			return NULL; \
-		} \
-	} while (/*CONSTCOND*/0)
-
-static struct hostent *
-getanswer(const querybuf *answer, int anslen, const char *qname, int qtype,
-    res_state res)
-{
-	const HEADER *hp;
-	const u_char *cp;
-	int n;
-	const u_char *eom, *erdata;
-	char *bp, **ap, **hap, *ep;
-	int type, class, ancount, qdcount;
-	int haveanswer, had_error;
-	int toobig = 0;
-	char tbuf[MAXDNAME];
-	const char *tname;
-	int (*name_ok)(const char *);
-	res_static  rs = __res_get_static();
-
-	assert(answer != NULL);
-	assert(qname != NULL);
-
-	tname = qname;
-	rs->host.h_name = NULL;
-	eom = answer->buf + anslen;
-	switch (qtype) {
-	case T_A:
-	case T_AAAA:
-		name_ok = res_hnok;
-		break;
-	case T_PTR:
-		name_ok = res_dnok;
-		break;
-	default:
-		return NULL;	/* XXX should be abort(); */
-	}
-	/*
-	 * find first satisfactory answer
-	 */
-	hp = &answer->hdr;
-	ancount = ntohs(hp->ancount);
-	qdcount = ntohs(hp->qdcount);
-	bp = rs->hostbuf;
-	ep = rs->hostbuf + sizeof rs->hostbuf;
-	cp = answer->buf;
-	BOUNDED_INCR(HFIXEDSZ);
-	if (qdcount != 1) {
-		h_errno = NO_RECOVERY;
-		return NULL;
-	}
-	n = dn_expand(answer->buf, eom, cp, bp, ep - bp);
-	if ((n < 0) || !(*name_ok)(bp)) {
-		h_errno = NO_RECOVERY;
-		return NULL;
-	}
-	BOUNDED_INCR(n + QFIXEDSZ);
-	if (qtype == T_A || qtype == T_AAAA) {
-		/* res_send() has already verified that the query name is the
-		 * same as the one we sent; this just gets the expanded name
-		 * (i.e., with the succeeding search-domain tacked on).
-		 */
-		n = strlen(bp) + 1;		/* for the \0 */
-		if (n >= MAXHOSTNAMELEN) {
-			h_errno = NO_RECOVERY;
-			return NULL;
-		}
-		rs->host.h_name = bp;
-		bp += n;
-		/* The qname can be abbreviated, but h_name is now absolute. */
-		qname = rs->host.h_name;
-	}
-	ap = rs->host_aliases;
-	*ap = NULL;
-	rs->host.h_aliases = rs->host_aliases;
-	hap = rs->h_addr_ptrs;
-	*hap = NULL;
-	rs->host.h_addr_list = rs->h_addr_ptrs;
-	haveanswer = 0;
-	had_error = 0;
-	while (ancount-- > 0 && cp < eom && !had_error) {
-		n = dn_expand(answer->buf, eom, cp, bp, ep - bp);
-		if ((n < 0) || !(*name_ok)(bp)) {
-			had_error++;
-			continue;
-		}
-		cp += n;			/* name */
-		BOUNDS_CHECK(cp, 3 * INT16SZ + INT32SZ);
-		type = _getshort(cp);
- 		cp += INT16SZ;			/* type */
-		class = _getshort(cp);
- 		cp += INT16SZ + INT32SZ;	/* class, TTL */
-		n = _getshort(cp);
-		cp += INT16SZ;			/* len */
-		BOUNDS_CHECK(cp, n);
-		erdata = cp + n;
-		if (class != C_IN) {
-			/* XXX - debug? syslog? */
-			cp += n;
-			continue;		/* XXX - had_error++ ? */
-		}
-		if ((qtype == T_A || qtype == T_AAAA) && type == T_CNAME) {
-			if (ap >= &rs->host_aliases[MAXALIASES-1])
-				continue;
-			n = dn_expand(answer->buf, eom, cp, tbuf, sizeof tbuf);
-			if ((n < 0) || !(*name_ok)(tbuf)) {
-				had_error++;
-				continue;
-			}
-			cp += n;
-			if (cp != erdata) {
-				h_errno = NO_RECOVERY;
-				return NULL;
-			}
-			/* Store alias. */
-			*ap++ = bp;
-			n = strlen(bp) + 1;	/* for the \0 */
-			if (n >= MAXHOSTNAMELEN) {
-				had_error++;
-				continue;
-			}
-			bp += n;
-			/* Get canonical name. */
-			n = strlen(tbuf) + 1;	/* for the \0 */
-			if (n > ep - bp || n >= MAXHOSTNAMELEN) {
-				had_error++;
-				continue;
-			}
-			strlcpy(bp, tbuf, (size_t)(ep - bp));
-			rs->host.h_name = bp;
-			bp += n;
-			continue;
-		}
-		if (qtype == T_PTR && type == T_CNAME) {
-			n = dn_expand(answer->buf, eom, cp, tbuf, sizeof tbuf);
-			if (n < 0 || !res_dnok(tbuf)) {
-				had_error++;
-				continue;
-			}
-			cp += n;
-			if (cp != erdata) {
-				h_errno = NO_RECOVERY;
-				return NULL;
-			}
-			/* Get canonical name. */
-			n = strlen(tbuf) + 1;	/* for the \0 */
-			if (n > ep - bp || n >= MAXHOSTNAMELEN) {
-				had_error++;
-				continue;
-			}
-			strlcpy(bp, tbuf, (size_t)(ep - bp));
-			tname = bp;
-			bp += n;
-			continue;
-		}
-		if (type != qtype) {
-			if (type != T_KEY && type != T_SIG)
-				syslog(LOG_NOTICE|LOG_AUTH,
-	       "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"",
-				       qname, p_class(C_IN), p_type(qtype),
-				       p_type(type));
-			cp += n;
-			continue;		/* XXX - had_error++ ? */
-		}
-		switch (type) {
-		case T_PTR:
-			if (strcasecmp(tname, bp) != 0) {
-				syslog(LOG_NOTICE|LOG_AUTH,
-				       AskedForGot, qname, bp);
-				cp += n;
-				continue;	/* XXX - had_error++ ? */
-			}
-			n = dn_expand(answer->buf, eom, cp, bp, ep - bp);
-			if ((n < 0) || !res_hnok(bp)) {
-				had_error++;
-				break;
-			}
-#if MULTI_PTRS_ARE_ALIASES
-			cp += n;
-			if (cp != erdata) {
-				h_errno = NO_RECOVERY;
-				return NULL;
-			}
-			if (!haveanswer)
-				rs->host.h_name = bp;
-			else if (ap < &rs->host_aliases[MAXALIASES-1])
-				*ap++ = bp;
-			else
-				n = -1;
-			if (n != -1) {
-				n = strlen(bp) + 1;	/* for the \0 */
-				if (n >= MAXHOSTNAMELEN) {
-					had_error++;
-					break;
-				}
-				bp += n;
-			}
-			break;
-#else
-			rs->host.h_name = bp;
-			if (res->options & RES_USE_INET6) {
-				n = strlen(bp) + 1;	/* for the \0 */
-				if (n >= MAXHOSTNAMELEN) {
-					had_error++;
-					break;
-				}
-				bp += n;
-				map_v4v6_hostent(&rs->host, &bp, ep);
-			}
-			h_errno = NETDB_SUCCESS;
-			return &rs->host;
-#endif
-		case T_A:
-		case T_AAAA:
-			if (strcasecmp(rs->host.h_name, bp) != 0) {
-				syslog(LOG_NOTICE|LOG_AUTH,
-				       AskedForGot, rs->host.h_name, bp);
-				cp += n;
-				continue;	/* XXX - had_error++ ? */
-			}
-			if (n != rs->host.h_length) {
-				cp += n;
-				continue;
-			}
-			if (type == T_AAAA) {
-				struct in6_addr in6;
-				memcpy(&in6, cp, IN6ADDRSZ);
-				if (IN6_IS_ADDR_V4MAPPED(&in6)) {
-					cp += n;
-					continue;
-				}
-			}
-			if (!haveanswer) {
-				int nn;
-
-				rs->host.h_name = bp;
-				nn = strlen(bp) + 1;	/* for the \0 */
-				bp += nn;
-			}
-
-			bp += sizeof(align) -
-			    (size_t)((u_long)bp % sizeof(align));
-
-			if (bp + n >= &rs->hostbuf[sizeof rs->hostbuf]) {
-				dprintf("size (%d) too big\n", res, n);
-				had_error++;
-				continue;
-			}
-			if (hap >= &rs->h_addr_ptrs[MAXADDRS-1]) {
-				if (!toobig++)
-					dprintf("Too many addresses (%d)\n",
-						res, MAXADDRS);
-				cp += n;
-				continue;
-			}
-			(void)memcpy(*hap++ = bp, cp, (size_t)n);
-			bp += n;
-			cp += n;
-			if (cp != erdata) {
-				h_errno = NO_RECOVERY;
-				return NULL;
-			}
-			break;
-		default:
-			abort();
-		}
-		if (!had_error)
-			haveanswer++;
-	}
-	if (haveanswer) {
-		*ap = NULL;
-		*hap = NULL;
-		/*
-		 * Note: we sort even if host can take only one address
-		 * in its return structures - should give it the "best"
-		 * address in that case, not some random one
-		 */
-		if (res->nsort && haveanswer > 1 && qtype == T_A)
-			addrsort(rs->h_addr_ptrs, haveanswer, res);
-		if (!rs->host.h_name) {
-			n = strlen(qname) + 1;	/* for the \0 */
-			if (n > ep - bp || n >= MAXHOSTNAMELEN)
-				goto no_recovery;
-			strlcpy(bp, qname, (size_t)(ep - bp));
-			rs->host.h_name = bp;
-			bp += n;
-		}
-		if (res->options & RES_USE_INET6)
-			map_v4v6_hostent(&rs->host, &bp, ep);
-		h_errno = NETDB_SUCCESS;
-		return &rs->host;
-	}
- no_recovery:
-	h_errno = NO_RECOVERY;
-	return NULL;
-}
-
-int
-gethostbyname_r(const char *name, struct hostent *hp, char *buf, size_t buflen,
-    struct hostent**result, int *errorp)
-{
-        struct hostent *res;
-
-        res = gethostbyname(name);
-        *errorp = h_errno;
-        if (res == NULL) {
-                *result = NULL;
-                return -1;
-        }
-        memcpy(hp, res, sizeof *hp);
-        *result = hp;
-        return 0;
-}
-
-struct hostent *
-gethostbyname(const char *name)
-{
-	struct hostent *hp;
-	res_state res = __res_get_state();
-
-	if (res == NULL)
-		return NULL;
-
-	assert(name != NULL);
-
-	/* try IPv6 first - if that fails do IPv4 */
-	if (res->options & RES_USE_INET6) {
-		hp = gethostbyname_internal(name, AF_INET6, res, NETID_UNSET, MARK_UNSET);
-		if (hp) {
-			__res_put_state(res);
-			return hp;
-		}
-	}
-	hp = gethostbyname_internal(name, AF_INET, res, NETID_UNSET, MARK_UNSET);
-	__res_put_state(res);
-	return hp;
-}
-
-struct hostent *
-gethostbyname2(const char *name, int af)
-{
-	return android_gethostbynamefornet(name, af, NETID_UNSET, MARK_UNSET);
-}
-
-struct hostent *
-android_gethostbynamefornet(const char *name, int af, unsigned netid, unsigned mark)
-{
-	struct hostent *hp;
-	res_state res = __res_get_state();
-
-	if (res == NULL)
-		return NULL;
-	hp = gethostbyname_internal(name, af, res, netid, mark);
-	__res_put_state(res);
-	return hp;
-}
-
-
-static FILE* android_open_proxy()
-{
-	int sock;
-	const int one = 1;
-	struct sockaddr_un proxy_addr;
-
-	sock = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
-	if (sock < 0) {
-		return NULL;
-	}
-
-	setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
-	memset(&proxy_addr, 0, sizeof(proxy_addr));
-	proxy_addr.sun_family = AF_UNIX;
-	strlcpy(proxy_addr.sun_path, "/dev/socket/dnsproxyd", sizeof(proxy_addr.sun_path));
-	if (TEMP_FAILURE_RETRY(connect(sock,
-			(const struct sockaddr*) &proxy_addr,
-			sizeof(proxy_addr))) != 0) {
-		close(sock);
-		return NULL;
-	}
-
-	return fdopen(sock, "r+");
-}
-
-static struct hostent *
-android_read_hostent(FILE* proxy)
-{
-	uint32_t size;
-	char buf[4];
-	if (fread(buf, 1, sizeof(buf), proxy) != sizeof(buf)) return NULL;
-
-	/* This is reading serialized data from system/netd/server/DnsProxyListener.cpp
-	 * and changes here need to be matched there */
-	int result_code = strtol(buf, NULL, 10);
-	if (result_code != DnsProxyQueryResult) {
-		fread(&size, 1, sizeof(size), proxy);
-		return NULL;
-	}
-
-	if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
-	size = ntohl(size);
-	res_static rs = __res_get_static();
-	memset(&rs->host, 0, sizeof(rs->host));
-	char *ptr = rs->hostbuf;
-
-	if (fread(ptr, 1, size, proxy) != size) return NULL;
-	ptr += size;
-	rs->host.h_name = rs->hostbuf;
-
-	char **aliases = rs->host_aliases;
-	rs->host.h_aliases = rs->host_aliases;
-	while (1) {
-		if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
-		size = ntohl(size);
-
-		if (size == 0) {
-			*aliases = NULL;
-			break;
-		}
-		if (fread(ptr, 1, size, proxy) != size) return NULL;
-		*aliases++ = ptr;
-		ptr += size;
-	}
-
-	if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
-	rs->host.h_addrtype = ntohl(size);
-
-	if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
-	rs->host.h_length = ntohl(size);
-
-	char **addrs = rs->h_addr_ptrs;
-	rs->host.h_addr_list = rs->h_addr_ptrs;
-	while (1) {
-		if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
-		size = ntohl(size);
-		if (size == 0) {
-			*addrs = NULL;
-			break;
-		}
-		if (fread(ptr, 1, size, proxy) != size) return NULL;
-		*addrs++ = ptr;
-		ptr += size;
-	}
-
-	return &rs->host;
-}
-
-
-static struct hostent *
-gethostbyname_internal_real(const char *name, int af, res_state res)
-{
-	const char *cp;
-	char *bp, *ep;
-	int size;
-	struct hostent *hp;
-	res_static rs = __res_get_static();
-
-	static const ns_dtab dtab[] = {
-		NS_FILES_CB(_gethtbyname, NULL)
-		{ NSSRC_DNS, _dns_gethtbyname, NULL },	/* force -DHESIOD */
-		{ 0, 0, 0 }
-	};
-
-	assert(name != NULL);
-
-	switch (af) {
-	case AF_INET:
-		size = INADDRSZ;
-		break;
-	case AF_INET6:
-		size = IN6ADDRSZ;
-		break;
-	default:
-		h_errno = NETDB_INTERNAL;
-		errno = EAFNOSUPPORT;
-		return NULL;
-	}
-
-	rs->host.h_addrtype = af;
-	rs->host.h_length = size;
-
-	/*
-	 * if there aren't any dots, it could be a user-level alias.
-	 * this is also done in res_nquery() since we are not the only
-	 * function that looks up host names.
-	 */
-	if (!strchr(name, '.') && (cp = __hostalias(name)))
-		name = cp;
-
-	/*
-	 * disallow names consisting only of digits/dots, unless
-	 * they end in a dot.
-	 */
-	if (isdigit((u_char) name[0]))
-		for (cp = name;; ++cp) {
-			if (!*cp) {
-				if (*--cp == '.')
-					break;
-				/*
-				 * All-numeric, no dot at the end.
-				 * Fake up a hostent as if we'd actually
-				 * done a lookup.
-				 */
-				if (inet_pton(af, name,
-				    (char *)(void *)rs->host_addr) <= 0) {
-					h_errno = HOST_NOT_FOUND;
-					return NULL;
-				}
-				strncpy(rs->hostbuf, name, MAXDNAME);
-				rs->hostbuf[MAXDNAME] = '\0';
-				bp = rs->hostbuf + MAXDNAME;
-				ep = rs->hostbuf + sizeof rs->hostbuf;
-				rs->host.h_name = rs->hostbuf;
-				rs->host.h_aliases = rs->host_aliases;
-				rs->host_aliases[0] = NULL;
-				rs->h_addr_ptrs[0] = (char *)(void *)rs->host_addr;
-				rs->h_addr_ptrs[1] = NULL;
-				rs->host.h_addr_list = rs->h_addr_ptrs;
-				if (res->options & RES_USE_INET6)
-					map_v4v6_hostent(&rs->host, &bp, ep);
-				h_errno = NETDB_SUCCESS;
-				return &rs->host;
-			}
-			if (!isdigit((u_char) *cp) && *cp != '.')
-				break;
-		}
-	if ((isxdigit((u_char) name[0]) && strchr(name, ':') != NULL) ||
-	    name[0] == ':')
-		for (cp = name;; ++cp) {
-			if (!*cp) {
-				if (*--cp == '.')
-					break;
-				/*
-				 * All-IPv6-legal, no dot at the end.
-				 * Fake up a hostent as if we'd actually
-				 * done a lookup.
-				 */
-				if (inet_pton(af, name,
-				    (char *)(void *)rs->host_addr) <= 0) {
-					h_errno = HOST_NOT_FOUND;
-					return NULL;
-				}
-				strncpy(rs->hostbuf, name, MAXDNAME);
-				rs->hostbuf[MAXDNAME] = '\0';
-				bp = rs->hostbuf + MAXDNAME;
-				ep = rs->hostbuf + sizeof rs->hostbuf;
-				rs->host.h_name = rs->hostbuf;
-				rs->host.h_aliases = rs->host_aliases;
-				rs->host_aliases[0] = NULL;
-				rs->h_addr_ptrs[0] = (char *)(void *)rs->host_addr;
-				rs->h_addr_ptrs[1] = NULL;
-				rs->host.h_addr_list = rs->h_addr_ptrs;
-				h_errno = NETDB_SUCCESS;
-				return &rs->host;
-			}
-			if (!isxdigit((u_char) *cp) && *cp != ':' && *cp != '.')
-				break;
-		}
-
-	hp = NULL;
-	h_errno = NETDB_INTERNAL;
-	if (nsdispatch(&hp, dtab, NSDB_HOSTS, "gethostbyname",
-	    default_dns_files, name, strlen(name), af) != NS_SUCCESS) {
-		return NULL;
-	}
-	h_errno = NETDB_SUCCESS;
-	return hp;
-}
-
-
-// very similar in proxy-ness to android_getaddrinfo_proxy
-static struct hostent *
-gethostbyname_internal(const char *name, int af, res_state res, unsigned netid, unsigned mark)
-{
-	const char *cache_mode = getenv("ANDROID_DNS_MODE");
-	FILE* proxy = NULL;
-	struct hostent *result = NULL;
-
-	if (cache_mode != NULL && strcmp(cache_mode, "local") == 0) {
-		res_setnetid(res, netid);
-		res_setmark(res, mark);
-		return gethostbyname_internal_real(name, af, res);
-	}
-
-	proxy = android_open_proxy();
-	if (proxy == NULL) goto exit;
-
-	netid = __netdClientDispatch.netIdForResolv(netid);
-
-	/* This is writing to system/netd/server/DnsProxyListener.cpp and changes
-	 * here need to be matched there */
-	if (fprintf(proxy, "gethostbyname %u %s %d",
-			netid,
-			name == NULL ? "^" : name,
-			af) < 0) {
-		goto exit;
-	}
-
-	if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
-		goto exit;
-	}
-
-	result = android_read_hostent(proxy);
-
-exit:
-	if (proxy != NULL) {
-		fclose(proxy);
-	}
-	return result;
-}
-
-
-struct hostent *
-android_gethostbyaddrfornet_proxy(const void *addr,
-    socklen_t len, int af, unsigned netid)
-{
-	struct hostent *result = NULL;
-	FILE* proxy = android_open_proxy();
-
-	if (proxy == NULL) goto exit;
-
-	char buf[INET6_ADDRSTRLEN];  //big enough for IPv4 and IPv6
-	const char * addrStr = inet_ntop(af, addr, buf, sizeof(buf));
-	if (addrStr == NULL) goto exit;
-
-	netid = __netdClientDispatch.netIdForResolv(netid);
-
-	if (fprintf(proxy, "gethostbyaddr %s %d %d %u",
-			addrStr, len, af, netid) < 0) {
-		goto exit;
-	}
-
-	if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
-		goto exit;
-	}
-
-	result = android_read_hostent(proxy);
-exit:
-	if (proxy != NULL) {
-		fclose(proxy);
-	}
-	return result;
-}
-
-struct hostent *
-android_gethostbyaddrfornet_real(const void *addr,
-    socklen_t len, int af, unsigned netid, unsigned mark)
-{
-	const u_char *uaddr = (const u_char *)addr;
-	socklen_t size;
-	struct hostent *hp;
-	static const ns_dtab dtab[] = {
-		NS_FILES_CB(_gethtbyaddr, NULL)
-		{ NSSRC_DNS, _dns_gethtbyaddr, NULL },	/* force -DHESIOD */
-		{ 0, 0, 0 }
-	};
-
-	assert(addr != NULL);
-
-	if (af == AF_INET6 && len == NS_IN6ADDRSZ &&
-	    (IN6_IS_ADDR_LINKLOCAL((const struct in6_addr *)addr) ||
-	     IN6_IS_ADDR_SITELOCAL((const struct in6_addr *)addr))) {
-		h_errno = HOST_NOT_FOUND;
-		return NULL;
-	}
-	if (af == AF_INET6 && len == NS_IN6ADDRSZ &&
-	    (IN6_IS_ADDR_V4MAPPED((const struct in6_addr *)addr) ||
-	     IN6_IS_ADDR_V4COMPAT((const struct in6_addr *)addr))) {
-		/* Unmap. */
-		uaddr += NS_IN6ADDRSZ - NS_INADDRSZ;
-		addr = uaddr;
-		af = AF_INET;
-		len = NS_INADDRSZ;
-	}
-	switch (af) {
-	case AF_INET:
-		size = NS_INADDRSZ;
-		break;
-	case AF_INET6:
-		size = NS_IN6ADDRSZ;
-		break;
-	default:
-		errno = EAFNOSUPPORT;
-		h_errno = NETDB_INTERNAL;
-		return NULL;
-	}
-	if (size != len) {
-		errno = EINVAL;
-		h_errno = NETDB_INTERNAL;
-		return NULL;
-	}
-	hp = NULL;
-	h_errno = NETDB_INTERNAL;
-	if (nsdispatch(&hp, dtab, NSDB_HOSTS, "gethostbyaddr",
-		default_dns_files, uaddr, len, af, netid, mark) != NS_SUCCESS)
-		return NULL;
-	h_errno = NETDB_SUCCESS;
-	return hp;
-}
-
-struct hostent *
-android_gethostbyaddrfornet(const void *addr, socklen_t len, int af, unsigned netid, unsigned mark)
-{
-	const char *cache_mode = getenv("ANDROID_DNS_MODE");
-
-	if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
-		return android_gethostbyaddrfornet_proxy(addr, len, af, netid);
-	} else {
-		return android_gethostbyaddrfornet_real(addr,len, af, netid, mark);
-	}
-}
-
-struct hostent *
-gethostbyaddr(const void *addr, socklen_t len, int af)
-{
-	return android_gethostbyaddrfornet(addr, len, af, NETID_UNSET, MARK_UNSET);
-}
-
-
-static void
-_sethtent(int f)
-{
-    res_static  rs = __res_get_static();
-    if (rs == NULL) return;
-	if (!rs->hostf)
-		rs->hostf = fopen(_PATH_HOSTS, "r" );
-	else
-		rewind(rs->hostf);
-	rs->stayopen = f;
-}
-
-static void
-_endhtent(void)
-{
-    res_static  rs = __res_get_static();
-    if (rs == NULL) return;
-
-	if (rs->hostf && !rs->stayopen) {
-		(void) fclose(rs->hostf);
-		rs->hostf = NULL;
-	}
-}
-
-static struct hostent *
-_gethtent(void)
-{
-	char *p;
-	char *cp, **q;
-	int af, len;
-	res_static  rs = __res_get_static();
-
-	if (!rs->hostf && !(rs->hostf = fopen(_PATH_HOSTS, "r" ))) {
-		h_errno = NETDB_INTERNAL;
-		return NULL;
-	}
- again:
-	if (!(p = fgets(rs->hostbuf, sizeof rs->hostbuf, rs->hostf))) {
-		h_errno = HOST_NOT_FOUND;
-		return NULL;
-	}
-	if (*p == '#')
-		goto again;
-	if (!(cp = strpbrk(p, "#\n")))
-		goto again;
-	*cp = '\0';
-	if (!(cp = strpbrk(p, " \t")))
-		goto again;
-	*cp++ = '\0';
-	if (inet_pton(AF_INET6, p, (char *)(void *)rs->host_addr) > 0) {
-		af = AF_INET6;
-		len = IN6ADDRSZ;
-	} else if (inet_pton(AF_INET, p, (char *)(void *)rs->host_addr) > 0) {
-		res_state res = __res_get_state();
-		if (res == NULL)
-			return NULL;
-		if (res->options & RES_USE_INET6) {
-			map_v4v6_address((char *)(void *)rs->host_addr,
-			    (char *)(void *)rs->host_addr);
-			af = AF_INET6;
-			len = IN6ADDRSZ;
-		} else {
-			af = AF_INET;
-			len = INADDRSZ;
-		}
-		__res_put_state(res);
-	} else {
-		goto again;
-	}
-	/* if this is not something we're looking for, skip it. */
-	if (rs->host.h_addrtype != 0 && rs->host.h_addrtype != af)
-		goto again;
-	if (rs->host.h_length != 0 && rs->host.h_length != len)
-		goto again;
-	rs->h_addr_ptrs[0] = (char *)(void *)rs->host_addr;
-	rs->h_addr_ptrs[1] = NULL;
-	rs->host.h_addr_list = rs->h_addr_ptrs;
-	rs->host.h_length = len;
-	rs->host.h_addrtype = af;
-	while (*cp == ' ' || *cp == '\t')
-		cp++;
-	rs->host.h_name = cp;
-	q = rs->host.h_aliases = rs->host_aliases;
-	if ((cp = strpbrk(cp, " \t")) != NULL)
-		*cp++ = '\0';
-	while (cp && *cp) {
-		if (*cp == ' ' || *cp == '\t') {
-			cp++;
-			continue;
-		}
-		if (q < &rs->host_aliases[MAXALIASES - 1])
-			*q++ = cp;
-		if ((cp = strpbrk(cp, " \t")) != NULL)
-			*cp++ = '\0';
-	}
-	*q = NULL;
-	h_errno = NETDB_SUCCESS;
-	return &rs->host;
-}
-
-/*ARGSUSED*/
-int
-_gethtbyname(void *rv, void *cb_data, va_list ap)
-{
-	struct hostent *hp;
-	const char *name;
-	int af;
-
-	assert(rv != NULL);
-
-	name = va_arg(ap, char *);
-	/* NOSTRICT skip len */(void)va_arg(ap, int);
-	af = va_arg(ap, int);
-
-	hp = NULL;
-#if 0
-	{
-		res_state res = __res_get_state();
-		if (res == NULL)
-			return NS_NOTFOUND;
-		if (res->options & RES_USE_INET6)
-			hp = _gethtbyname2(name, AF_INET6);
-		if (hp==NULL)
-			hp = _gethtbyname2(name, AF_INET);
-		__res_put_state(res);
-	}
-#else
-	hp = _gethtbyname2(name, af);
-#endif
-	*((struct hostent **)rv) = hp;
-	if (hp == NULL) {
-		h_errno = HOST_NOT_FOUND;
-		return NS_NOTFOUND;
-	}
-	return NS_SUCCESS;
-}
-
-static struct hostent *
-_gethtbyname2(const char *name, int af)
-{
-	struct hostent *p;
-	char *tmpbuf, *ptr, **cp;
-	int num;
-	size_t len;
-	res_static rs = __res_get_static();
-
-	assert(name != NULL);
-
-	_sethtent(rs->stayopen);
-	ptr = tmpbuf = NULL;
-	num = 0;
-	while ((p = _gethtent()) != NULL && num < MAXADDRS) {
-		if (p->h_addrtype != af)
-			continue;
-		if (strcasecmp(p->h_name, name) != 0) {
-			for (cp = p->h_aliases; *cp != NULL; cp++)
-				if (strcasecmp(*cp, name) == 0)
-					break;
-			if (*cp == NULL) continue;
-		}
-
-		if (num == 0) {
-			size_t bufsize;
-			char *src;
-
-			bufsize = strlen(p->h_name) + 2 +
-				  MAXADDRS * p->h_length +
-				  ALIGNBYTES;
-			for (cp = p->h_aliases; *cp != NULL; cp++)
-				bufsize += strlen(*cp) + 1;
-
-			if ((tmpbuf = malloc(bufsize)) == NULL) {
-				h_errno = NETDB_INTERNAL;
-				return NULL;
-			}
-
-			ptr = tmpbuf;
-			src = p->h_name;
-			while ((*ptr++ = *src++) != '\0');
-			for (cp = p->h_aliases; *cp != NULL; cp++) {
-				src = *cp;
-				while ((*ptr++ = *src++) != '\0');
-			}
-			*ptr++ = '\0';
-
-			ptr = (char *)(void *)ALIGN(ptr);
-		}
-
-		(void)memcpy(ptr, p->h_addr_list[0], (size_t)p->h_length);
-		ptr += p->h_length;
-		num++;
-	}
-	_endhtent();
-	if (num == 0) return NULL;
-
-	len = ptr - tmpbuf;
-	if (len > (sizeof(rs->hostbuf) - ALIGNBYTES)) {
-		free(tmpbuf);
-		errno = ENOSPC;
-		h_errno = NETDB_INTERNAL;
-		return NULL;
-	}
-	ptr = memcpy((void *)ALIGN(rs->hostbuf), tmpbuf, len);
-	free(tmpbuf);
-
-	rs->host.h_name = ptr;
-	while (*ptr++);
-
-	cp = rs->host_aliases;
-	while (*ptr) {
-		*cp++ = ptr;
-		while (*ptr++);
-	}
-	ptr++;
-	*cp = NULL;
-
-	ptr = (char *)(void *)ALIGN(ptr);
-	cp = rs->h_addr_ptrs;
-	while (num--) {
-		*cp++ = ptr;
-		ptr += rs->host.h_length;
-	}
-	*cp = NULL;
-
-	return &rs->host;
-}
-
-/*ARGSUSED*/
-static int
-_gethtbyaddr(void *rv, void *cb_data, va_list ap)
-{
-	struct hostent *p;
-	const unsigned char *addr;
-	int len, af;
-	res_static  rs = __res_get_static();
-
-	assert(rv != NULL);
-
-	addr = va_arg(ap, unsigned char *);
-	len = va_arg(ap, int);
-	af = va_arg(ap, int);
-
-	rs->host.h_length = len;
-	rs->host.h_addrtype = af;
-
-	_sethtent(rs->stayopen);
-	while ((p = _gethtent()) != NULL)
-		if (p->h_addrtype == af && !memcmp(p->h_addr, addr,
-		    (size_t)len))
-			break;
-	_endhtent();
-	*((struct hostent **)rv) = p;
-	if (p==NULL) {
-		h_errno = HOST_NOT_FOUND;
-		return NS_NOTFOUND;
-	}
-	return NS_SUCCESS;
-}
-
-static void
-map_v4v6_address(const char *src, char *dst)
-{
-	u_char *p = (u_char *)dst;
-	char tmp[INADDRSZ];
-	int i;
-
-	assert(src != NULL);
-	assert(dst != NULL);
-
-	/* Stash a temporary copy so our caller can update in place. */
-	(void)memcpy(tmp, src, INADDRSZ);
-	/* Mark this ipv6 addr as a mapped ipv4. */
-	for (i = 0; i < 10; i++)
-		*p++ = 0x00;
-	*p++ = 0xff;
-	*p++ = 0xff;
-	/* Retrieve the saved copy and we're done. */
-	(void)memcpy((void *)p, tmp, INADDRSZ);
-}
-
-static void
-map_v4v6_hostent(struct hostent *hp, char **bpp, char *ep)
-{
-	char **ap;
-
-	assert(hp != NULL);
-	assert(bpp != NULL);
-	assert(ep != NULL);
-
-	if (hp->h_addrtype != AF_INET || hp->h_length != INADDRSZ)
-		return;
-	hp->h_addrtype = AF_INET6;
-	hp->h_length = IN6ADDRSZ;
-	for (ap = hp->h_addr_list; *ap; ap++) {
-		int i = sizeof(align) - (size_t)((u_long)*bpp % sizeof(align));
-
-		if (ep - *bpp < (i + IN6ADDRSZ)) {
-			/* Out of memory.  Truncate address list here.  XXX */
-			*ap = NULL;
-			return;
-		}
-		*bpp += i;
-		map_v4v6_address(*ap, *bpp);
-		*ap = *bpp;
-		*bpp += IN6ADDRSZ;
-	}
-}
-
-static void
-addrsort(char **ap, int num, res_state res)
-{
-	int i, j;
-	char **p;
-	short aval[MAXADDRS];
-	int needsort = 0;
-
-	assert(ap != NULL);
-
-	p = ap;
-	for (i = 0; i < num; i++, p++) {
-	    for (j = 0 ; (unsigned)j < res->nsort; j++)
-		if (res->sort_list[j].addr.s_addr ==
-		    (((struct in_addr *)(void *)(*p))->s_addr &
-		    res->sort_list[j].mask))
-			break;
-	    aval[i] = j;
-	    if (needsort == 0 && i > 0 && j < aval[i-1])
-		needsort = i;
-	}
-	if (!needsort)
-	    return;
-
-	while (needsort < num) {
-	    for (j = needsort - 1; j >= 0; j--) {
-		if (aval[j] > aval[j+1]) {
-		    char *hp;
-
-		    i = aval[j];
-		    aval[j] = aval[j+1];
-		    aval[j+1] = i;
-
-		    hp = ap[j];
-		    ap[j] = ap[j+1];
-		    ap[j+1] = hp;
-		} else
-		    break;
-	    }
-	    needsort++;
-	}
-}
-
-struct hostent *
-gethostent(void)
-{
-    res_static  rs = __res_get_static();
-	rs->host.h_addrtype = 0;
-	rs->host.h_length = 0;
-	return _gethtent();
-}
-
-/*ARGSUSED*/
-static int
-_dns_gethtbyname(void *rv, void *cb_data, va_list ap)
-{
-	querybuf *buf;
-	int n, type;
-	struct hostent *hp;
-	const char *name;
-	int af;
-	res_state res;
-
-	assert(rv != NULL);
-
-	name = va_arg(ap, char *);
-	/* NOSTRICT skip len */(void)va_arg(ap, int);
-	af = va_arg(ap, int);
-
-	switch (af) {
-	case AF_INET:
-		type = T_A;
-		break;
-	case AF_INET6:
-		type = T_AAAA;
-		break;
-	default:
-		return NS_UNAVAIL;
-	}
-	buf = malloc(sizeof(*buf));
-	if (buf == NULL) {
-		h_errno = NETDB_INTERNAL;
-		return NS_NOTFOUND;
-	}
-	res = __res_get_state();
-	if (res == NULL) {
-		free(buf);
-		return NS_NOTFOUND;
-	}
-	n = res_nsearch(res, name, C_IN, type, buf->buf, sizeof(buf->buf));
-	if (n < 0) {
-		free(buf);
-		dprintf("res_nsearch failed (%d)\n", res, n);
-		__res_put_state(res);
-		return NS_NOTFOUND;
-	}
-	hp = getanswer(buf, n, name, type, res);
-	free(buf);
-	__res_put_state(res);
-	if (hp == NULL)
-		switch (h_errno) {
-		case HOST_NOT_FOUND:
-			return NS_NOTFOUND;
-		case TRY_AGAIN:
-			return NS_TRYAGAIN;
-		default:
-			return NS_UNAVAIL;
-		}
-	*((struct hostent **)rv) = hp;
-	return NS_SUCCESS;
-}
-
-/*ARGSUSED*/
-static int
-_dns_gethtbyaddr(void *rv, void	*cb_data, va_list ap)
-{
-	char qbuf[MAXDNAME + 1], *qp, *ep;
-	int n;
-	querybuf *buf;
-	struct hostent *hp;
-	const unsigned char *uaddr;
-	int len, af, advance;
-	res_state res;
-	unsigned netid, mark;
-	res_static rs = __res_get_static();
-
-	assert(rv != NULL);
-
-	uaddr = va_arg(ap, unsigned char *);
-	len = va_arg(ap, int);
-	af = va_arg(ap, int);
-	netid = va_arg(ap, unsigned);
-	mark = va_arg(ap, unsigned);
-
-	switch (af) {
-	case AF_INET:
-		(void)snprintf(qbuf, sizeof(qbuf), "%u.%u.%u.%u.in-addr.arpa",
-		    (uaddr[3] & 0xff), (uaddr[2] & 0xff),
-		    (uaddr[1] & 0xff), (uaddr[0] & 0xff));
-		break;
-
-	case AF_INET6:
-		qp = qbuf;
-		ep = qbuf + sizeof(qbuf) - 1;
-		for (n = IN6ADDRSZ - 1; n >= 0; n--) {
-			advance = snprintf(qp, (size_t)(ep - qp), "%x.%x.",
-			    uaddr[n] & 0xf,
-			    ((unsigned int)uaddr[n] >> 4) & 0xf);
-			if (advance > 0 && qp + advance < ep)
-				qp += advance;
-			else {
-				h_errno = NETDB_INTERNAL;
-				return NS_NOTFOUND;
-			}
-		}
-		if (strlcat(qbuf, "ip6.arpa", sizeof(qbuf)) >= sizeof(qbuf)) {
-			h_errno = NETDB_INTERNAL;
-			return NS_NOTFOUND;
-		}
-		break;
-	default:
-		abort();
-	}
-
-	buf = malloc(sizeof(*buf));
-	if (buf == NULL) {
-		h_errno = NETDB_INTERNAL;
-		return NS_NOTFOUND;
-	}
-	res = __res_get_state();
-	if (res == NULL) {
-		free(buf);
-		return NS_NOTFOUND;
-	}
-	res_setnetid(res, netid);
-	res_setmark(res, mark);
-	n = res_nquery(res, qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));
-	if (n < 0) {
-		free(buf);
-		dprintf("res_nquery failed (%d)\n", res, n);
-		__res_put_state(res);
-		return NS_NOTFOUND;
-	}
-	hp = getanswer(buf, n, qbuf, T_PTR, res);
-	free(buf);
-	if (hp == NULL) {
-		__res_put_state(res);
-		switch (h_errno) {
-		case HOST_NOT_FOUND:
-			return NS_NOTFOUND;
-		case TRY_AGAIN:
-			return NS_TRYAGAIN;
-		default:
-			return NS_UNAVAIL;
-		}
-	}
-	hp->h_addrtype = af;
-	hp->h_length = len;
-	(void)memcpy(rs->host_addr, uaddr, (size_t)len);
-	rs->h_addr_ptrs[0] = (char *)(void *)rs->host_addr;
-	rs->h_addr_ptrs[1] = NULL;
-	if (af == AF_INET && (res->options & RES_USE_INET6)) {
-		map_v4v6_address((char *)(void *)rs->host_addr,
-		    (char *)(void *)rs->host_addr);
-		hp->h_addrtype = AF_INET6;
-		hp->h_length = IN6ADDRSZ;
-	}
-
-	__res_put_state(res);
-	*((struct hostent **)rv) = hp;
-	h_errno = NETDB_SUCCESS;
-	return NS_SUCCESS;
-}
diff --git a/libc/dns/include/hostent.h b/libc/dns/include/hostent.h
new file mode 100644
index 0000000..8b9a637
--- /dev/null
+++ b/libc/dns/include/hostent.h
@@ -0,0 +1,93 @@
+/*	$NetBSD: hostent.h,v 1.2 2013/08/27 09:56:12 christos Exp $	*/
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * 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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (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 _DNS_NET_HOSTENT_H
+#define _DNS_NET_HOSTENT_H
+
+#include <stdio.h>
+#include <netdb.h>
+#include <stdarg.h>
+
+/*
+ * These are not being advertised because the interfaces are non-standard.
+ * There are versions by linux, aix, qnx, sun, etc. Our versions are used
+ * internally to provide thread safety; they mostly resemble qnx.
+ */
+void sethostent_r(FILE **);
+struct hostent	*netbsd_gethostent_r(FILE *, struct hostent *, char *, size_t, int *);
+void endhostent_r(FILE **);
+
+/*
+ * The following are internal API's and are used only for testing.
+ */
+struct getnamaddr {
+	struct hostent *hp;
+	char *buf;
+	size_t buflen;
+	int *he;
+};
+
+/* /etc/hosts lookup */
+int _hf_gethtbyaddr(void *, void *, va_list);
+int _hf_gethtbyname(void *, void *, va_list);
+
+#ifdef YP
+/* NIS lookup */
+int _yp_gethtbyaddr(void *, void *, va_list);
+int _yp_gethtbyname(void *, void *, va_list);
+#endif
+
+#define HENT_ARRAY(dst, anum, ptr, len) \
+	do { \
+		size_t _len = (anum + 1) * sizeof(*dst); \
+		if (_len > len) \
+			goto nospc; \
+		dst = (void *)ptr; \
+		ptr += _len; \
+		len -= _len; \
+	} while (/*CONSTCOND*/0)
+
+#define HENT_COPY(dst, src, slen, ptr, len) \
+	do { \
+		if ((size_t)slen > len) \
+			goto nospc; \
+		memcpy(ptr, src, (size_t)slen); \
+		dst = ptr; \
+		ptr += slen; \
+		len -= slen; \
+	} while (/* CONSTCOND */0)
+
+#define HENT_SCOPY(dst, src, ptr, len) \
+	do { \
+		size_t _len = strlen(src) + 1; \
+		HENT_COPY(dst, src, _len, ptr, len); \
+	} while (/* CONSTCOND */0)
+
+#endif /* _DNS_NET_HOSTENT_H */
diff --git a/libc/dns/include/resolv_netid.h b/libc/dns/include/resolv_netid.h
index e5521b8..1d0f869 100644
--- a/libc/dns/include/resolv_netid.h
+++ b/libc/dns/include/resolv_netid.h
@@ -34,6 +34,7 @@
  */
 #include <sys/cdefs.h>
 #include <netinet/in.h>
+#include <stdio.h>
 
 /*
  * Passing NETID_UNSET as the netId causes system/netd/server/DnsProxyListener.cpp to
@@ -68,9 +69,9 @@
 extern void _resolv_delete_cache_for_net(unsigned netid) __used_in_netd;
 
 /* Internal use only. */
-struct hostent *android_gethostbyaddrfornet_proxy(const void *, socklen_t, int , unsigned);
-int android_getnameinfofornet(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t,
-		 int, unsigned, unsigned);
+struct hostent *android_gethostbyaddrfornet_proxy(const void *, socklen_t, int , unsigned, unsigned) __LIBC_HIDDEN__;
+int android_getnameinfofornet(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int, unsigned, unsigned) __LIBC_HIDDEN__;
+FILE* android_open_proxy(void) __LIBC_HIDDEN__;
 
 /* delete the cache associated with a certain network */
 extern void _resolv_delete_cache_for_net(unsigned netid);
diff --git a/libc/dns/include/resolv_private.h b/libc/dns/include/resolv_private.h
index a91a4b8..0dab3d8 100644
--- a/libc/dns/include/resolv_private.h
+++ b/libc/dns/include/resolv_private.h
@@ -63,6 +63,13 @@
 /* Despite this file's name, it's part of libresolv. On Android, that means it's part of libc :-( */
 #pragma GCC visibility push(default)
 
+// Linux defines MAXHOSTNAMELEN as 64, while the domain name limit in
+// RFC 1034 and RFC 1035 is 255 octets.
+#ifdef MAXHOSTNAMELEN
+#undef MAXHOSTNAMELEN
+#endif
+#define MAXHOSTNAMELEN 256
+
 /*
  * Revision information.  This is the release date in YYYYMMDD format.
  * It can change every day so the right thing to do with it is use it
@@ -426,7 +433,7 @@
 int		b64_pton(char const *, u_char *, size_t);
 #endif
 int		loc_aton(const char *, u_char *);
-const char *	loc_ntoa(const u_char *, char *);
+const char *	loc_ntoa(const u_char *, char *, size_t);
 int		dn_skipname(const u_char *, const u_char *);
 void		putlong(uint32_t, u_char *);
 void		putshort(uint16_t, u_char *);
diff --git a/libc/dns/nameser/ns_name.c b/libc/dns/nameser/ns_name.c
index e3759ab..3a202c1 100644
--- a/libc/dns/nameser/ns_name.c
+++ b/libc/dns/nameser/ns_name.c
@@ -43,12 +43,6 @@
 #include <stdlib.h>
 #include <limits.h>
 
-#ifdef SPRINTF_CHAR
-# define SPRINTF(x) ((int)strlen(sprintf/**/x))
-#else
-# define SPRINTF(x) (sprintf x)
-#endif
-
 #define NS_TYPE_ELT			0x40 /* EDNS0 extended label type */
 #define DNS_LABELTYPE_BITSTRING		0x41
 
@@ -1012,31 +1006,31 @@
 		return(-1);
 
 	cp++;
-	i = SPRINTF((dn, "\\[x"));
+	i = snprintf(dn, eom - dn, "\\[x");
 	if (i < 0)
 		return (-1);
 	dn += i;
 	for (b = blen; b > 7; b -= 8, cp++) {
-		i = SPRINTF((dn, "%02x", *cp & 0xff));
+		i = snprintf(dn, eom - dn, "%02x", *cp & 0xff);
 		if (i < 0)
 			return (-1);
 		dn += i;
 	}
 	if (b > 4) {
 		tc = *cp++;
-		i = SPRINTF((dn, "%02x", tc & (0xff << (8 - b))));
+		i = snprintf(dn, eom - dn, "%02x", tc & (0xff << (8 - b)));
 		if (i < 0)
 			return (-1);
 		dn += i;
 	} else if (b > 0) {
 		tc = *cp++;
-		i = SPRINTF((dn, "%1x",
-			       (((u_int32_t)tc >> 4) & 0x0f) & (0x0f << (4 - b))));
+		i = snprintf(dn, eom - dn, "%1x",
+			       (((u_int32_t)tc >> 4) & 0x0f) & (0x0f << (4 - b)));
 		if (i < 0)
 			return (-1);
 		dn += i;
 	}
-	i = SPRINTF((dn, "/%d]", blen));
+	i = snprintf(dn, eom - dn, "/%d]", blen);
 	if (i < 0)
 		return (-1);
 	dn += i;
diff --git a/libc/dns/nameser/ns_print.c b/libc/dns/nameser/ns_print.c
index 0a6a1d6..32c8715 100644
--- a/libc/dns/nameser/ns_print.c
+++ b/libc/dns/nameser/ns_print.c
@@ -48,12 +48,6 @@
 #include <string.h>
 #include <ctype.h>
 
-#ifdef SPRINTF_CHAR
-# define SPRINTF(x) ((int)strlen(sprintf/**/x))
-#else
-# define SPRINTF(x) (sprintf x)
-#endif
-
 #ifndef MIN
 #define	MIN(x,y)	((x)<(y)?(x):(y))
 #endif
@@ -155,7 +149,7 @@
 	 */
 	T(x = ns_format_ttl(ttl, buf, buflen));
 	addlen((size_t)x, &buf, &buflen);
-	len = SPRINTF((tmp, " %s %s", p_class(class), p_type(type)));
+	len = snprintf(tmp, sizeof(tmp), " %s %s", p_class(class), p_type(type));
 	T(addstr(tmp, (size_t)len, &buf, &buflen));
 	T(spaced = addtab((size_t)(x + len), (size_t)16, spaced, &buf, &buflen));
 
@@ -218,7 +212,7 @@
 		/* Serial number. */
 		t = ns_get32(rdata);  rdata += NS_INT32SZ;
 		T(addstr("\t\t\t\t\t", (size_t)5, &buf, &buflen));
-		len = SPRINTF((tmp, "%lu", t));
+		len = snprintf(tmp, sizeof(tmp), "%lu", t);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		T(spaced = addtab((size_t)len, (size_t)16, spaced, &buf, &buflen));
 		T(addstr("; serial\n", (size_t)9, &buf, &buflen));
@@ -275,7 +269,7 @@
 		/* Priority. */
 		t = ns_get16(rdata);
 		rdata += NS_INT16SZ;
-		len = SPRINTF((tmp, "%u ", t));
+		len = snprintf(tmp, sizeof(tmp), "%u ", t);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Target. */
@@ -293,7 +287,7 @@
 		/* Priority. */
 		t = ns_get16(rdata);
 		rdata += NS_INT16SZ;
-		len = SPRINTF((tmp, "%u ", t));
+		len = snprintf(tmp, sizeof(tmp), "%u ", t);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Name1. */
@@ -344,7 +338,7 @@
 		char t[255];
 
 		/* XXX protocol format checking? */
-		(void) loc_ntoa(rdata, t);
+		(void) loc_ntoa(rdata, t, sizeof(t));
 		T(addstr(t, strlen(t), &buf, &buflen));
 		break;
 	    }
@@ -359,7 +353,7 @@
 		/* Order, Precedence. */
 		order = ns_get16(rdata);	rdata += NS_INT16SZ;
 		preference = ns_get16(rdata);	rdata += NS_INT16SZ;
-		len = SPRINTF((t, "%u %u ", order, preference));
+		len = snprintf(t, sizeof(t), "%u %u ", order, preference);
 		T(addstr(t, (size_t)len, &buf, &buflen));
 
 		/* Flags. */
@@ -401,7 +395,7 @@
 		priority = ns_get16(rdata);  rdata += NS_INT16SZ;
 		weight   = ns_get16(rdata);  rdata += NS_INT16SZ;
 		port     = ns_get16(rdata);  rdata += NS_INT16SZ;
-		len = SPRINTF((t, "%u %u %u ", priority, weight, port));
+		len = snprintf(t, sizeof(t), "%u %u %u ", priority, weight, port);
 		T(addstr(t, (size_t)len, &buf, &buflen));
 
 		/* Server. */
@@ -432,7 +426,7 @@
 		rdata += NS_INADDRSZ;
 
 		/* Protocol. */
-		len = SPRINTF((tmp, " %u ( ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), " %u ( ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata += NS_INT8SZ;
 
@@ -449,7 +443,7 @@
 						lcnt = 10;
 						spaced = 0;
 					}
-					len = SPRINTF((tmp, "%d ", n));
+					len = snprintf(tmp, sizeof(tmp), "%d ", n);
 					T(addstr(tmp, (size_t)len, &buf, &buflen));
 					lcnt--;
 				}
@@ -480,8 +474,8 @@
 		keyflags = ns_get16(rdata);  rdata += NS_INT16SZ;
 		protocol = *rdata++;
 		algorithm = *rdata++;
-		len = SPRINTF((tmp, "0x%04x %u %u",
-			       keyflags, protocol, algorithm));
+		len = snprintf(tmp, sizeof(tmp), "0x%04x %u %u",
+			       keyflags, protocol, algorithm);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Public key data. */
@@ -502,7 +496,7 @@
 		}
 		if (len > 15)
 			T(addstr(" )", (size_t)2, &buf, &buflen));
-		n = SPRINTF((tmp, " ; key_tag= %u", key_id));
+		n = snprintf(tmp, sizeof(tmp), " ; key_tag= %u", key_id);
 		T(addstr(tmp, (size_t)n, &buf, &buflen));
 
 		break;
@@ -524,25 +518,25 @@
 		algorithm = *rdata++;
 		labels = *rdata++;
 		t = ns_get32(rdata);  rdata += NS_INT32SZ;
-		len = SPRINTF((tmp, "%s %d %d %lu ",
-			       p_type((int)typ), algorithm, labels, t));
+		len = snprintf(tmp, sizeof(tmp), "%s %d %d %lu ",
+			       p_type((int)typ), algorithm, labels, t);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		if (labels > (u_int)dn_count_labels(name))
 			goto formerr;
 
 		/* Signature expiry. */
 		t = ns_get32(rdata);  rdata += NS_INT32SZ;
-		len = SPRINTF((tmp, "%s ", p_secstodate(t)));
+		len = snprintf(tmp, sizeof(tmp), "%s ", p_secstodate(t));
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Time signed. */
 		t = ns_get32(rdata);  rdata += NS_INT32SZ;
-		len = SPRINTF((tmp, "%s ", p_secstodate(t)));
+		len = snprintf(tmp, sizeof(tmp), "%s ", p_secstodate(t));
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Signature Footprint. */
 		footprint = ns_get16(rdata);  rdata += NS_INT16SZ;
-		len = SPRINTF((tmp, "%u ", footprint));
+		len = snprintf(tmp, sizeof(tmp), "%u ", footprint);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Signer's name. */
@@ -579,7 +573,7 @@
 		n = edata - rdata;
 		for (c = 0; c < n*8; c++)
 			if (NS_NXT_BIT_ISSET(c, rdata)) {
-				len = SPRINTF((tmp, " %s", p_type((int)c)));
+				len = snprintf(tmp, sizeof(tmp), " %s", p_type((int)c));
 				T(addstr(tmp, (size_t)len, &buf, &buflen));
 			}
 		break;
@@ -596,7 +590,7 @@
 		key_tag = ns_get16(rdata); rdata += NS_INT16SZ;
 		alg = (u_int) *rdata++;
 
-		len = SPRINTF((tmp1, "%d %d %d ", c_type, key_tag, alg));
+		len = snprintf(tmp1, sizeof(tmp1), "%d %d %d ", c_type, key_tag, alg);
 		T(addstr(tmp1, (size_t)len, &buf, &buflen));
 		siz = (edata-rdata)*4/3 + 4; /* "+4" accounts for trailing \0 */
 		if (siz > sizeof(base64_cert) * 3/4) {
@@ -640,12 +634,12 @@
 
 		/* Inception. */
 		t = ns_get32(rdata);  rdata += NS_INT32SZ;
-		len = SPRINTF((tmp, "%s ", p_secstodate(t)));
+		len = snprintf(tmp, sizeof(tmp), "%s ", p_secstodate(t));
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Experation. */
 		t = ns_get32(rdata);  rdata += NS_INT32SZ;
-		len = SPRINTF((tmp, "%s ", p_secstodate(t)));
+		len = snprintf(tmp, sizeof(tmp), "%s ", p_secstodate(t));
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* Mode , Error, Key Size. */
@@ -653,7 +647,7 @@
 		mode = ns_get16(rdata);  rdata += NS_INT16SZ;
 		err  = ns_get16(rdata);  rdata += NS_INT16SZ;
 		keysize  = ns_get16(rdata);  rdata += NS_INT16SZ;
-		len = SPRINTF((tmp, "%u %u %u ", mode, err, keysize));
+		len = snprintf(tmp, sizeof(tmp), "%u %u %u ", mode, err, keysize);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		/* XXX need to dump key, print otherdata length & other data */
@@ -670,7 +664,7 @@
 		n = ns_get16(rdata); rdata += INT16SZ;
 		rdata += n; /* sig */
 		n = ns_get16(rdata); rdata += INT16SZ; /* original id */
-		sprintf(buf, "%d", ns_get16(rdata));
+		snprintf(buf, buflen, "%d", ns_get16(rdata));
 		rdata += INT16SZ;
 		addlen(strlen(buf), &buf, &buflen);
 		break;
@@ -682,7 +676,7 @@
 
 		/* prefix length */
 		if (rdlen == 0U) goto formerr;
-		len = SPRINTF((tmp, "%d ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%d ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		pbit = *rdata;
 		if (pbit > 128) goto formerr;
@@ -710,7 +704,7 @@
 	    }
 
 	case ns_t_opt: {
-		len = SPRINTF((tmp, "%u bytes", class));
+		len = snprintf(tmp, sizeof(tmp), "%u bytes", class);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		break;
 	    }
@@ -724,21 +718,21 @@
 			if (rdlen < 4U) goto formerr;
 			t = ns_get16(rdata);
 			rdata += NS_INT16SZ;
-			len = SPRINTF((tmp, "%u ", t));
+			len = snprintf(tmp, sizeof(tmp), "%u ", t);
 			T(addstr(tmp, (size_t)len, &buf, &buflen));
 		} else
 			if (rdlen < 2U) goto formerr;
 
-		len = SPRINTF((tmp, "%u ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%u ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata++;
 
-		len = SPRINTF((tmp, "%u ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%u ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata++;
 
 		while (rdata < edata) {
-			len = SPRINTF((tmp, "%02X", *rdata));
+			len = snprintf(tmp, sizeof(tmp), "%02X", *rdata);
 			T(addstr(tmp, (size_t)len, &buf, &buflen));
 			rdata++;
 		}
@@ -749,17 +743,17 @@
 	case ns_t_nsec3param: {
 		u_int t, w, l, j, k, c;
 
-		len = SPRINTF((tmp, "%u ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%u ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata++;
 
-		len = SPRINTF((tmp, "%u ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%u ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata++;
 
 		t = ns_get16(rdata);
 		rdata += NS_INT16SZ;
-		len = SPRINTF((tmp, "%u ", t));
+		len = snprintf(tmp, sizeof(tmp), "%u ", t);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 		t = *rdata++;
@@ -767,7 +761,7 @@
 			T(addstr("-", 1, &buf, &buflen));
 		} else {
 			while (t-- > 0) {
-				len = SPRINTF((tmp, "%02X", *rdata));
+				len = snprintf(tmp, sizeof(tmp), "%02X", *rdata);
 				T(addstr(tmp, (size_t)len, &buf, &buflen));
 				rdata++;
 			}
@@ -851,7 +845,7 @@
 					if ((rdata[j] & (0x80 >> k)) == 0)
 						continue;
 					c = w * 256 + j * 8 + k;
-					len = SPRINTF((tmp, " %s", p_type((ns_type)c)));
+					len = snprintf(tmp, sizeof(tmp), " %s", p_type((ns_type)c));
 					T(addstr(tmp, (size_t)len, &buf, &buflen));
 				}
 			}
@@ -875,7 +869,7 @@
 					if ((rdata[j] & (0x80 >> k)) == 0)
 						continue;
 					c = w * 256 + j * 8 + k;
-					len = SPRINTF((tmp, " %s", p_type((ns_type)c)));
+					len = snprintf(tmp, sizeof(tmp), " %s", p_type((ns_type)c));
 					T(addstr(tmp, (size_t)len, &buf, &buflen));
 				}
 			}
@@ -949,15 +943,15 @@
 			goto hexify;
 		}
 
-		len = SPRINTF((tmp, "%u ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%u ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata++;
 
-		len = SPRINTF((tmp, "%u ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%u ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata++;
 
-		len = SPRINTF((tmp, "%u ", *rdata));
+		len = snprintf(tmp, sizeof(tmp), "%u ", *rdata);
 		T(addstr(tmp, (size_t)len, &buf, &buflen));
 		rdata++;
 
@@ -1030,11 +1024,11 @@
 			const char *str = "record too long to print";
 			T(addstr(str, strlen(str), &buf, &buflen));
 		} else {
-			len = sprintf(tmp, "( %u ", algorithm);
+			len = snprintf(tmp, sizeof(tmp), "( %u ", algorithm);
 			T(addstr(tmp, (size_t)len, &buf, &buflen));
 
 			for (i = 0; i < hip_len; i++) {
-				len = sprintf(tmp, "%02X", *rdata);
+				len = snprintf(tmp, sizeof(tmp), "%02X", *rdata);
 				T(addstr(tmp, (size_t)len, &buf, &buflen));
 				rdata++;
 			}
@@ -1069,23 +1063,23 @@
 	int n, m;
 	char *p;
 
-	len = SPRINTF((tmp, "\\# %u%s\t; %s", (unsigned)(edata - rdata),
-		       rdlen != 0U ? " (" : "", comment));
+	len = snprintf(tmp, sizeof(tmp), "\\# %u%s\t; %s", (unsigned)(edata - rdata),
+		       rdlen != 0U ? " (" : "", comment);
 	T(addstr(tmp, (size_t)len, &buf, &buflen));
 	while (rdata < edata) {
 		p = tmp;
-		p += SPRINTF((p, "\n\t"));
+		p += snprintf(p, sizeof(tmp), "\n\t");
 		spaced = 0;
 		n = MIN(16, (int)(edata - rdata));
 		for (m = 0; m < n; m++)
-			p += SPRINTF((p, "%02x ", rdata[m]));
+			p += snprintf(p, sizeof(tmp) - (p - tmp), "%02x ", rdata[m]);
 		T(addstr(tmp, (size_t)(p - tmp), &buf, &buflen));
 		if (n < 16) {
 			T(addstr(")", (size_t)1, &buf, &buflen));
 			T(addtab((size_t)(p - tmp + 1), (size_t)48, spaced, &buf, &buflen));
 		}
 		p = tmp;
-		p += SPRINTF((p, "; "));
+		p += snprintf(p, sizeof(tmp), "; ");
 		for (m = 0; m < n; m++)
 			*p++ = (isascii(rdata[m]) && isprint(rdata[m]))
 				? rdata[m]
diff --git a/libc/dns/nameser/ns_ttl.c b/libc/dns/nameser/ns_ttl.c
index 2395b99..de073b8 100644
--- a/libc/dns/nameser/ns_ttl.c
+++ b/libc/dns/nameser/ns_ttl.c
@@ -36,12 +36,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#ifdef SPRINTF_CHAR
-# define SPRINTF(x) strlen(sprintf/**/x)
-#else
-# define SPRINTF(x) ((size_t)sprintf x)
-#endif
-
 /* Forward. */
 
 static int	fmt1(int t, char s, char **buf, size_t *buflen);
@@ -157,8 +151,8 @@
 	char tmp[50];
 	size_t len;
 
-	len = SPRINTF((tmp, "%d%c", t, s));
-	if (len + 1 > *buflen)
+	len = (size_t)snprintf(tmp, sizeof(tmp), "%d%c", t, s);
+	if ((int)len < 0 || len + 1 > *buflen)
 		return (-1);
 	strcpy(*buf, tmp);
 	*buf += len;
diff --git a/libc/dns/net/getaddrinfo.c b/libc/dns/net/getaddrinfo.c
index 2612d6a..c73c085 100644
--- a/libc/dns/net/getaddrinfo.c
+++ b/libc/dns/net/getaddrinfo.c
@@ -324,7 +324,11 @@
 {
 	struct addrinfo *next;
 
-	assert(ai != NULL);
+#if __ANDROID__
+	if (ai == NULL) return;
+#else
+	_DIAGASSERT(ai != NULL);
+#endif
 
 	do {
 		next = ai->ai_next;
@@ -408,16 +412,21 @@
 	return _test_connect(PF_INET, &addr.generic, sizeof(addr.in), mark);
 }
 
+bool readBE32(FILE* fp, int32_t* result) {
+  int32_t tmp;
+  if (fread(&tmp, sizeof(tmp), 1, fp) != 1) {
+    return false;
+  }
+  *result = ntohl(tmp);
+  return true;
+}
+
 // Returns 0 on success, else returns on error.
 static int
 android_getaddrinfo_proxy(
     const char *hostname, const char *servname,
     const struct addrinfo *hints, struct addrinfo **res, unsigned netid)
 {
-	int sock;
-	const int one = 1;
-	struct sockaddr_un proxy_addr;
-	FILE* proxy = NULL;
 	int success = 0;
 
 	// Clear this at start, as we use its non-NULLness later (in the
@@ -433,27 +442,14 @@
 		return EAI_NODATA;
 	}
 
-	sock = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
-	if (sock < 0) {
-		return EAI_NODATA;
-	}
-
-	setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
-	memset(&proxy_addr, 0, sizeof(proxy_addr));
-	proxy_addr.sun_family = AF_UNIX;
-	strlcpy(proxy_addr.sun_path, "/dev/socket/dnsproxyd",
-		sizeof(proxy_addr.sun_path));
-	if (TEMP_FAILURE_RETRY(connect(sock,
-				       (const struct sockaddr*) &proxy_addr,
-				       sizeof(proxy_addr))) != 0) {
-		close(sock);
-		return EAI_NODATA;
+	FILE* proxy = android_open_proxy();
+	if (proxy == NULL) {
+		return EAI_SYSTEM;
 	}
 
 	netid = __netdClientDispatch.netIdForResolv(netid);
 
 	// Send the request.
-	proxy = fdopen(sock, "r+");
 	if (fprintf(proxy, "getaddrinfo %s %s %d %d %d %d %u",
 		    hostname == NULL ? "^" : hostname,
 		    servname == NULL ? "^" : servname,
@@ -486,61 +482,62 @@
 	struct addrinfo* ai = NULL;
 	struct addrinfo** nextres = res;
 	while (1) {
-		uint32_t addrinfo_len;
-		if (fread(&addrinfo_len, sizeof(addrinfo_len),
-			  1, proxy) != 1) {
+		int32_t have_more;
+		if (!readBE32(proxy, &have_more)) {
 			break;
 		}
-		addrinfo_len = ntohl(addrinfo_len);
-		if (addrinfo_len == 0) {
+		if (have_more == 0) {
 			success = 1;
 			break;
 		}
 
-		if (addrinfo_len < sizeof(struct addrinfo)) {
-			break;
-		}
-		struct addrinfo* ai = calloc(1, addrinfo_len +
-					     sizeof(struct sockaddr_storage));
+		struct addrinfo* ai = calloc(1, sizeof(struct addrinfo) + sizeof(struct sockaddr_storage));
 		if (ai == NULL) {
 			break;
 		}
+		ai->ai_addr = (struct sockaddr*)(ai + 1);
 
-		if (fread(ai, addrinfo_len, 1, proxy) != 1) {
-			// Error; fall through.
+		// struct addrinfo {
+		//	int	ai_flags;	/* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
+		//	int	ai_family;	/* PF_xxx */
+		//	int	ai_socktype;	/* SOCK_xxx */
+		//	int	ai_protocol;	/* 0 or IPPROTO_xxx for IPv4 and IPv6 */
+		//	socklen_t ai_addrlen;	/* length of ai_addr */
+		//	char	*ai_canonname;	/* canonical name for hostname */
+		//	struct	sockaddr *ai_addr;	/* binary address */
+		//	struct	addrinfo *ai_next;	/* next structure in linked list */
+		// };
+
+		// Read the struct piece by piece because we might be a 32-bit process
+		// talking to a 64-bit netd.
+		int32_t addr_len;
+		bool success =
+				readBE32(proxy, &ai->ai_flags) &&
+				readBE32(proxy, &ai->ai_family) &&
+				readBE32(proxy, &ai->ai_socktype) &&
+				readBE32(proxy, &ai->ai_protocol) &&
+				readBE32(proxy, &addr_len);
+		if (!success) {
 			break;
 		}
 
-		// Zero out the pointer fields we copied which aren't
-		// valid in this address space.
-		ai->ai_addr = NULL;
-		ai->ai_canonname = NULL;
-		ai->ai_next = NULL;
-
-		// struct sockaddr
-		uint32_t addr_len;
-		if (fread(&addr_len, sizeof(addr_len), 1, proxy) != 1) {
-			break;
-		}
-		addr_len = ntohl(addr_len);
+		// Set ai_addrlen and read the ai_addr data.
+		ai->ai_addrlen = addr_len;
 		if (addr_len != 0) {
-			if (addr_len > sizeof(struct sockaddr_storage)) {
+			if ((size_t) addr_len > sizeof(struct sockaddr_storage)) {
 				// Bogus; too big.
 				break;
 			}
-			struct sockaddr* addr = (struct sockaddr*)(ai + 1);
-			if (fread(addr, addr_len, 1, proxy) != 1) {
+			if (fread(ai->ai_addr, addr_len, 1, proxy) != 1) {
 				break;
 			}
-			ai->ai_addr = addr;
 		}
 
-		// cannonname
-		uint32_t name_len;
-		if (fread(&name_len, sizeof(name_len), 1, proxy) != 1) {
+		// The string for ai_cannonname.
+		int32_t name_len;
+		if (!readBE32(proxy, &name_len)) {
 			break;
 		}
-		name_len = ntohl(name_len);
 		if (name_len != 0) {
 			ai->ai_canonname = (char*) malloc(name_len);
 			if (fread(ai->ai_canonname, name_len, 1, proxy) != 1) {
@@ -599,7 +596,6 @@
 	struct addrinfo ai0;
 	struct addrinfo *pai;
 	const struct explore *ex;
-	const char* cache_mode = getenv("ANDROID_DNS_MODE");
 
 	/* hostname is allowed to be NULL */
 	/* servname is allowed to be NULL */
@@ -734,13 +730,12 @@
 	if (pai->ai_flags & AI_NUMERICHOST)
 		ERR(EAI_NONAME);
 
-        /*
-         * BEGIN ANDROID CHANGES; proxying to the cache
-         */
-	if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
-		// we're not the proxy - pass the request to them
-		return android_getaddrinfo_proxy(hostname, servname, hints, res, netid);
+#if defined(__ANDROID__)
+	int gai_error = android_getaddrinfo_proxy(hostname, servname, hints, res, netid);
+	if (gai_error != EAI_SYSTEM) {
+		return gai_error;
 	}
+#endif
 
 	/*
 	 * hostname as alphabetical name.
@@ -2017,7 +2012,7 @@
 {
 
 	if (!*hostf)
-		*hostf = fopen(_PATH_HOSTS, "r" );
+		*hostf = fopen(_PATH_HOSTS, "re");
 	else
 		rewind(*hostf);
 }
@@ -2046,7 +2041,7 @@
 	assert(name != NULL);
 	assert(pai != NULL);
 
-	if (!*hostf && !(*hostf = fopen(_PATH_HOSTS, "r" )))
+	if (!*hostf && !(*hostf = fopen(_PATH_HOSTS, "re")))
 		return (NULL);
  again:
 	if (!(p = fgets(hostbuf, sizeof hostbuf, *hostf)))
diff --git a/libc/dns/net/gethnamaddr.c b/libc/dns/net/gethnamaddr.c
new file mode 100644
index 0000000..8f5800a
--- /dev/null
+++ b/libc/dns/net/gethnamaddr.c
@@ -0,0 +1,1631 @@
+/*	$NetBSD: gethnamaddr.c,v 1.91 2014/06/19 15:08:18 christos Exp $	*/
+
+/*
+ * ++Copyright++ 1985, 1988, 1993
+ * -
+ * Copyright (c) 1985, 1988, 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. 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.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * 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, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, 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 THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
+ */
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <arpa/nameser.h>
+#include "NetdClientDispatch.h"
+#include "resolv_netid.h"
+#include "resolv_private.h"
+#include "resolv_cache.h"
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <netdb.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <strings.h>
+#include <syslog.h>
+#include <unistd.h>
+
+#define ALIGNBYTES (sizeof(uintptr_t) - 1)
+#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) &~ ALIGNBYTES)
+
+#ifndef LOG_AUTH
+# define LOG_AUTH 0
+#endif
+
+#define MULTI_PTRS_ARE_ALIASES 1	/* XXX - experimental */
+
+#include "nsswitch.h"
+#include <stdlib.h>
+#include <string.h>
+
+#include "hostent.h"
+
+#define maybe_ok(res, nm, ok) (((res)->options & RES_NOCHECKNAME) != 0U || \
+                               (ok)(nm) != 0)
+#define maybe_hnok(res, hn) maybe_ok((res), (hn), res_hnok)
+#define maybe_dnok(res, dn) maybe_ok((res), (dn), res_dnok)
+
+#define addalias(d, s, arr, siz) do {			\
+	if (d >= &arr[siz]) {				\
+		char **xptr = realloc(arr, (siz + 10) * sizeof(*arr)); \
+		if (xptr == NULL)			\
+			goto nospc;			\
+		d = xptr + (d - arr);			\
+		arr = xptr;				\
+		siz += 10;				\
+	}						\
+	*d++ = s;					\
+} while (/*CONSTCOND*/0)
+
+#define setup(arr, siz) do {				\
+	arr = malloc((siz = 10) * sizeof(*arr)); 	\
+	if (arr == NULL)				\
+		goto nospc;				\
+} while (/*CONSTCOND*/0)
+
+// This should be synchronized to ResponseCode.h
+static const int DnsProxyQueryResult = 222;
+
+static const char AskedForGot[] =
+			  "gethostby*.getanswer: asked for \"%s\", got \"%s\"";
+
+#define	MAXPACKET	(64*1024)
+
+typedef union {
+    HEADER hdr;
+    u_char buf[MAXPACKET];
+} querybuf;
+
+typedef union {
+    int32_t al;
+    char ac;
+} align;
+
+#ifdef DEBUG
+static void debugprintf(const char *, res_state, ...)
+	__attribute__((__format__(__printf__, 1, 3)));
+#endif
+static struct hostent *getanswer(const querybuf *, int, const char *, int,
+    res_state, struct hostent *, char *, size_t, int *);
+static void map_v4v6_address(const char *, char *);
+static void map_v4v6_hostent(struct hostent *, char **, char *);
+static void addrsort(char **, int, res_state);
+
+void ht_sethostent(int);
+void ht_endhostent(void);
+struct hostent *ht_gethostbyname(char *);
+struct hostent *ht_gethostbyaddr(const char *, int, int);
+void dns_service(void);
+#undef dn_skipname
+int dn_skipname(const u_char *, const u_char *);
+static int _dns_gethtbyaddr(void *, void *, va_list);
+static int _dns_gethtbyname(void *, void *, va_list);
+
+static struct hostent *gethostbyname_internal(const char *, int, res_state,
+    struct hostent *, char *, size_t, int *, unsigned, unsigned);
+static struct hostent* android_gethostbyaddrfornet_proxy_internal(const void*, socklen_t,
+    int, struct hostent *, char *, size_t, int *, unsigned, unsigned);
+
+static const ns_src default_dns_files[] = {
+	{ NSSRC_FILES, 	NS_SUCCESS },
+	{ NSSRC_DNS, 	NS_SUCCESS },
+	{ 0, 0 }
+};
+
+
+#ifdef DEBUG
+static void
+debugprintf(const char *msg, res_state res, ...)
+{
+	_DIAGASSERT(msg != NULL);
+
+	if (res->options & RES_DEBUG) {
+		int save = errno;
+		va_list ap;
+
+		va_start (ap, res);
+		vprintf(msg, ap);
+		va_end (ap);
+
+		errno = save;
+	}
+}
+#else
+# define debugprintf(msg, res, num) /*nada*/
+#endif
+
+#define BOUNDED_INCR(x) \
+	do { \
+		cp += (x); \
+		if (cp > eom) \
+			goto no_recovery; \
+	} while (/*CONSTCOND*/0)
+
+#define BOUNDS_CHECK(ptr, count) \
+	do { \
+		if ((ptr) + (count) > eom) \
+			goto no_recovery; \
+	} while (/*CONSTCOND*/0)
+
+static struct hostent *
+getanswer(const querybuf *answer, int anslen, const char *qname, int qtype,
+    res_state res, struct hostent *hent, char *buf, size_t buflen, int *he)
+{
+	const HEADER *hp;
+	const u_char *cp;
+	int n;
+	size_t qlen;
+	const u_char *eom, *erdata;
+	char *bp, **ap, **hap, *ep;
+	int type, class, ancount, qdcount;
+	int haveanswer, had_error;
+	int toobig = 0;
+	char tbuf[MAXDNAME];
+	char **aliases;
+	size_t maxaliases;
+	char *addr_ptrs[MAXADDRS];
+	const char *tname;
+	int (*name_ok)(const char *);
+
+	_DIAGASSERT(answer != NULL);
+	_DIAGASSERT(qname != NULL);
+
+	tname = qname;
+	hent->h_name = NULL;
+	eom = answer->buf + anslen;
+	switch (qtype) {
+	case T_A:
+	case T_AAAA:
+		name_ok = res_hnok;
+		break;
+	case T_PTR:
+		name_ok = res_dnok;
+		break;
+	default:
+	  *he = NO_RECOVERY;
+		return NULL;	/* XXX should be abort(); */
+	}
+
+	setup(aliases, maxaliases);
+	/*
+	 * find first satisfactory answer
+	 */
+	hp = &answer->hdr;
+	ancount = ntohs(hp->ancount);
+	qdcount = ntohs(hp->qdcount);
+	bp = buf;
+	ep = buf + buflen;
+	cp = answer->buf;
+	BOUNDED_INCR(HFIXEDSZ);
+	if (qdcount != 1)
+		goto no_recovery;
+
+	n = dn_expand(answer->buf, eom, cp, bp, (int)(ep - bp));
+	if ((n < 0) || !maybe_ok(res, bp, name_ok))
+		goto no_recovery;
+
+	BOUNDED_INCR(n + QFIXEDSZ);
+	if (qtype == T_A || qtype == T_AAAA) {
+		/* res_send() has already verified that the query name is the
+		 * same as the one we sent; this just gets the expanded name
+		 * (i.e., with the succeeding search-domain tacked on).
+		 */
+		n = (int)strlen(bp) + 1;		/* for the \0 */
+		if (n >= MAXHOSTNAMELEN)
+			goto no_recovery;
+		hent->h_name = bp;
+		bp += n;
+		/* The qname can be abbreviated, but h_name is now absolute. */
+		qname = hent->h_name;
+	}
+	hent->h_aliases = ap = aliases;
+	hent->h_addr_list = hap = addr_ptrs;
+	*ap = NULL;
+	*hap = NULL;
+	haveanswer = 0;
+	had_error = 0;
+	while (ancount-- > 0 && cp < eom && !had_error) {
+		n = dn_expand(answer->buf, eom, cp, bp, (int)(ep - bp));
+		if ((n < 0) || !maybe_ok(res, bp, name_ok)) {
+			had_error++;
+			continue;
+		}
+		cp += n;			/* name */
+		BOUNDS_CHECK(cp, 3 * INT16SZ + INT32SZ);
+		type = _getshort(cp);
+ 		cp += INT16SZ;			/* type */
+		class = _getshort(cp);
+ 		cp += INT16SZ + INT32SZ;	/* class, TTL */
+		n = _getshort(cp);
+		cp += INT16SZ;			/* len */
+		BOUNDS_CHECK(cp, n);
+		erdata = cp + n;
+		if (class != C_IN) {
+			/* XXX - debug? syslog? */
+			cp += n;
+			continue;		/* XXX - had_error++ ? */
+		}
+		if ((qtype == T_A || qtype == T_AAAA) && type == T_CNAME) {
+			n = dn_expand(answer->buf, eom, cp, tbuf,
+			    (int)sizeof tbuf);
+			if ((n < 0) || !maybe_ok(res, tbuf, name_ok)) {
+				had_error++;
+				continue;
+			}
+			cp += n;
+			if (cp != erdata)
+				goto no_recovery;
+			/* Store alias. */
+			addalias(ap, bp, aliases, maxaliases);
+			n = (int)strlen(bp) + 1;	/* for the \0 */
+			if (n >= MAXHOSTNAMELEN) {
+				had_error++;
+				continue;
+			}
+			bp += n;
+			/* Get canonical name. */
+			n = (int)strlen(tbuf) + 1;	/* for the \0 */
+			if (n > ep - bp || n >= MAXHOSTNAMELEN) {
+				had_error++;
+				continue;
+			}
+			strlcpy(bp, tbuf, (size_t)(ep - bp));
+			hent->h_name = bp;
+			bp += n;
+			continue;
+		}
+		if (qtype == T_PTR && type == T_CNAME) {
+			n = dn_expand(answer->buf, eom, cp, tbuf,
+			    (int)sizeof tbuf);
+			if (n < 0 || !maybe_dnok(res, tbuf)) {
+				had_error++;
+				continue;
+			}
+			cp += n;
+			if (cp != erdata)
+				goto no_recovery;
+			/* Get canonical name. */
+			n = (int)strlen(tbuf) + 1;	/* for the \0 */
+			if (n > ep - bp || n >= MAXHOSTNAMELEN) {
+				had_error++;
+				continue;
+			}
+			strlcpy(bp, tbuf, (size_t)(ep - bp));
+			tname = bp;
+			bp += n;
+			continue;
+		}
+		if (type != qtype) {
+			if (type != T_KEY && type != T_SIG)
+				syslog(LOG_NOTICE|LOG_AUTH,
+	       "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"",
+				       qname, p_class(C_IN), p_type(qtype),
+				       p_type(type));
+			cp += n;
+			continue;		/* XXX - had_error++ ? */
+		}
+		switch (type) {
+		case T_PTR:
+			if (strcasecmp(tname, bp) != 0) {
+				syslog(LOG_NOTICE|LOG_AUTH,
+				       AskedForGot, qname, bp);
+				cp += n;
+				continue;	/* XXX - had_error++ ? */
+			}
+			n = dn_expand(answer->buf, eom, cp, bp, (int)(ep - bp));
+			if ((n < 0) || !maybe_hnok(res, bp)) {
+				had_error++;
+				break;
+			}
+#if MULTI_PTRS_ARE_ALIASES
+			cp += n;
+			if (cp != erdata)
+				goto no_recovery;
+			if (!haveanswer)
+				hent->h_name = bp;
+			else
+				addalias(ap, bp, aliases, maxaliases);
+			if (n != -1) {
+				n = (int)strlen(bp) + 1;	/* for the \0 */
+				if (n >= MAXHOSTNAMELEN) {
+					had_error++;
+					break;
+				}
+				bp += n;
+			}
+			break;
+#else
+			hent->h_name = bp;
+			if (res->options & RES_USE_INET6) {
+				n = strlen(bp) + 1;	/* for the \0 */
+				if (n >= MAXHOSTNAMELEN) {
+					had_error++;
+					break;
+				}
+				bp += n;
+				map_v4v6_hostent(hent, &bp, ep);
+			}
+			goto success;
+#endif
+		case T_A:
+		case T_AAAA:
+			if (strcasecmp(hent->h_name, bp) != 0) {
+				syslog(LOG_NOTICE|LOG_AUTH,
+				       AskedForGot, hent->h_name, bp);
+				cp += n;
+				continue;	/* XXX - had_error++ ? */
+			}
+			if (n != hent->h_length) {
+				cp += n;
+				continue;
+			}
+			if (type == T_AAAA) {
+				struct in6_addr in6;
+				memcpy(&in6, cp, NS_IN6ADDRSZ);
+				if (IN6_IS_ADDR_V4MAPPED(&in6)) {
+					cp += n;
+					continue;
+				}
+			}
+			if (!haveanswer) {
+				int nn;
+
+				hent->h_name = bp;
+				nn = (int)strlen(bp) + 1;	/* for the \0 */
+				bp += nn;
+			}
+
+			bp += sizeof(align) -
+			    (size_t)((u_long)bp % sizeof(align));
+
+			if (bp + n >= ep) {
+				debugprintf("size (%d) too big\n", res, n);
+				had_error++;
+				continue;
+			}
+			if (hap >= &addr_ptrs[MAXADDRS - 1]) {
+				if (!toobig++) {
+					debugprintf("Too many addresses (%d)\n",
+						res, MAXADDRS);
+				}
+				cp += n;
+				continue;
+			}
+			(void)memcpy(*hap++ = bp, cp, (size_t)n);
+			bp += n;
+			cp += n;
+			if (cp != erdata)
+				goto no_recovery;
+			break;
+		default:
+			abort();
+		}
+		if (!had_error)
+			haveanswer++;
+	}
+	if (haveanswer) {
+		*ap = NULL;
+		*hap = NULL;
+		/*
+		 * Note: we sort even if host can take only one address
+		 * in its return structures - should give it the "best"
+		 * address in that case, not some random one
+		 */
+		if (res->nsort && haveanswer > 1 && qtype == T_A)
+			addrsort(addr_ptrs, haveanswer, res);
+		if (!hent->h_name) {
+			n = (int)strlen(qname) + 1;	/* for the \0 */
+			if (n > ep - bp || n >= MAXHOSTNAMELEN)
+				goto no_recovery;
+			strlcpy(bp, qname, (size_t)(ep - bp));
+			hent->h_name = bp;
+			bp += n;
+		}
+		if (res->options & RES_USE_INET6)
+			map_v4v6_hostent(hent, &bp, ep);
+	  goto success;
+	}
+no_recovery:
+	free(aliases);
+	*he = NO_RECOVERY;
+	return NULL;
+success:
+	bp = (char *)ALIGN(bp);
+	n = (int)(ap - aliases);
+	qlen = (n + 1) * sizeof(*hent->h_aliases);
+	if ((size_t)(ep - bp) < qlen)
+		goto nospc;
+	hent->h_aliases = (void *)bp;
+	memcpy(bp, aliases, qlen);
+	free(aliases);
+	aliases = NULL;
+
+	bp += qlen;
+	n = (int)(hap - addr_ptrs);
+	qlen = (n + 1) * sizeof(*hent->h_addr_list);
+	if ((size_t)(ep - bp) < qlen)
+		goto nospc;
+	hent->h_addr_list = (void *)bp;
+	memcpy(bp, addr_ptrs, qlen);
+	*he = NETDB_SUCCESS;
+	return hent;
+nospc:
+	free(aliases);
+	errno = ENOSPC;
+	*he = NETDB_INTERNAL;
+	return NULL;
+}
+
+/* The prototype of gethostbyname_r is from glibc, not that in netbsd. */
+int
+gethostbyname_r(const char *name, struct hostent *hp, char *buf, size_t buflen,
+    struct hostent **result, int *errorp)
+{
+	res_state res = __res_get_state();
+
+	if (res == NULL) {
+	  *result = NULL;
+		*errorp = NETDB_INTERNAL;
+		return -1;
+	}
+
+	_DIAGASSERT(name != NULL);
+
+	if (res->options & RES_USE_INET6) {
+		*result = gethostbyname_internal(name, AF_INET6, res, hp, buf, buflen, errorp, NETID_UNSET,
+		                                 MARK_UNSET);
+		if (*result) {
+			__res_put_state(res);
+			return 0;
+		}
+	}
+	*result = gethostbyname_internal(name, AF_INET, res, hp, buf, buflen, errorp, NETID_UNSET,
+	                                 MARK_UNSET);
+	__res_put_state(res);
+	if (!*result && errno == ENOSPC) {
+	  errno = ERANGE;
+	  return ERANGE; /* Return error as in linux manual page. */
+	}
+	return (*result) ? 0 : -1;
+}
+
+/* The prototype of gethostbyname2_r is from glibc, not that in netbsd. */
+int
+gethostbyname2_r(const char *name, int af, struct hostent *hp, char *buf,
+    size_t buflen, struct hostent **result, int *errorp)
+{
+	res_state res = __res_get_state();
+
+	if (res == NULL) {
+		*result = NULL;
+		*errorp = NETDB_INTERNAL;
+		return -1;
+	}
+	*result = gethostbyname_internal(name, af, res, hp, buf, buflen, errorp, NETID_UNSET,
+	                                 MARK_UNSET);
+	__res_put_state(res);
+	if (!*result && errno == ENOSPC) {
+		errno = ERANGE;
+		return ERANGE;
+	}
+	return (*result) ? 0 : -1;
+}
+
+__LIBC_HIDDEN__ FILE* android_open_proxy() {
+	const char* cache_mode = getenv("ANDROID_DNS_MODE");
+	bool use_proxy = (cache_mode == NULL || strcmp(cache_mode, "local") != 0);
+	if (!use_proxy) {
+		return NULL;
+	}
+
+	int s = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
+	if (s == -1) {
+		return NULL;
+	}
+
+	const int one = 1;
+	setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
+
+	struct sockaddr_un proxy_addr;
+	memset(&proxy_addr, 0, sizeof(proxy_addr));
+	proxy_addr.sun_family = AF_UNIX;
+	strlcpy(proxy_addr.sun_path, "/dev/socket/dnsproxyd", sizeof(proxy_addr.sun_path));
+
+	if (TEMP_FAILURE_RETRY(connect(s, (const struct sockaddr*) &proxy_addr, sizeof(proxy_addr))) != 0) {
+		close(s);
+		return NULL;
+	}
+
+	return fdopen(s, "r+");
+}
+
+static struct hostent *
+android_read_hostent(FILE* proxy, struct hostent* hp, char* hbuf, size_t hbuflen, int *he)
+{
+	uint32_t size;
+	char buf[4];
+	if (fread(buf, 1, sizeof(buf), proxy) != sizeof(buf)) return NULL;
+
+	// This is reading serialized data from system/netd/server/DnsProxyListener.cpp
+	// and changes here need to be matched there.
+	int result_code = strtol(buf, NULL, 10);
+	if (result_code != DnsProxyQueryResult) {
+		fread(&size, 1, sizeof(size), proxy);
+		*he = HOST_NOT_FOUND;
+		return NULL;
+	}
+
+	if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
+	size = ntohl(size);
+
+	memset(hp, 0, sizeof(*hp));
+	char *ptr = hbuf;
+	char *hbuf_end = hbuf + hbuflen;
+
+	if (ptr + size > hbuf_end) {
+		goto nospc;
+	}
+	if (fread(ptr, 1, size, proxy) != size) return NULL;
+	hp->h_name = ptr;
+	ptr += size;
+
+	char *aliases_ptrs[MAXALIASES];
+	char **aliases = &aliases_ptrs[0];
+
+	while (1) {
+		if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
+		size = ntohl(size);
+
+		if (size == 0) {
+			*aliases = NULL;
+			break;
+		}
+		if (ptr + size > hbuf_end) {
+		  goto nospc;
+		}
+		if (fread(ptr, 1, size, proxy) != size) return NULL;
+		if (aliases < &aliases_ptrs[MAXALIASES - 1]) {
+		  *aliases++ = ptr;
+		}
+		ptr += size;
+	}
+
+	int aliases_len = ((int)(aliases - aliases_ptrs) + 1) * sizeof(*hp->h_aliases);
+	if (ptr + aliases_len > hbuf_end) {
+		goto nospc;
+	}
+	hp->h_aliases = (void*)ptr;
+	memcpy(ptr, aliases_ptrs, aliases_len);
+	ptr += aliases_len;
+
+	if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
+	hp->h_addrtype = ntohl(size);
+
+	if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
+	hp->h_length = ntohl(size);
+
+	char *addr_ptrs[MAXADDRS];
+	char **addr_p = &addr_ptrs[0];
+
+	while (1) {
+		if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
+		size = ntohl(size);
+		if (size == 0) {
+			*addr_p = NULL;
+			break;
+		}
+		if (ptr + size > hbuf_end) {
+		  goto nospc;
+		}
+		if (fread(ptr, 1, size, proxy) != size) return NULL;
+		if (addr_p < &addr_ptrs[MAXADDRS - 1]) {
+		  *addr_p++ = ptr;
+		}
+		ptr += size;
+	}
+
+	int addrs_len = ((int)(addr_p - addr_ptrs) + 1) * sizeof(*hp->h_addr_list);
+	if (ptr + addrs_len > hbuf_end) {
+		goto nospc;
+	}
+	hp->h_addr_list = (void*)ptr;
+	memcpy(ptr, addr_ptrs, addrs_len);
+	*he = NETDB_SUCCESS;
+	return hp;
+
+nospc:
+	*he = NETDB_INTERNAL;
+	errno = ENOSPC;
+	return NULL;
+}
+
+static struct hostent *
+gethostbyname_internal_real(const char *name, int af, res_state res, struct hostent *hp, char *buf,
+                            size_t buflen, int *he)
+{
+	const char *cp;
+	struct getnamaddr info;
+	char hbuf[MAXHOSTNAMELEN];
+	size_t size;
+	static const ns_dtab dtab[] = {
+		NS_FILES_CB(_hf_gethtbyname, NULL)
+		{ NSSRC_DNS, _dns_gethtbyname, NULL },	/* force -DHESIOD */
+		NS_NIS_CB(_yp_gethtbyname, NULL)
+		NS_NULL_CB
+	};
+
+	_DIAGASSERT(name != NULL);
+
+	switch (af) {
+	case AF_INET:
+		size = NS_INADDRSZ;
+		break;
+	case AF_INET6:
+		size = NS_IN6ADDRSZ;
+		break;
+	default:
+		*he = NETDB_INTERNAL;
+		errno = EAFNOSUPPORT;
+		return NULL;
+	}
+	if (buflen < size)
+		goto nospc;
+
+	hp->h_addrtype = af;
+	hp->h_length = (int)size;
+
+	/*
+	 * if there aren't any dots, it could be a user-level alias.
+	 * this is also done in res_nquery() since we are not the only
+	 * function that looks up host names.
+	 */
+	if (!strchr(name, '.') && (cp = res_hostalias(res, name,
+	    hbuf, sizeof(hbuf))))
+		name = cp;
+
+	/*
+	 * disallow names consisting only of digits/dots, unless
+	 * they end in a dot.
+	 */
+	if (isdigit((u_char) name[0]))
+		for (cp = name;; ++cp) {
+			if (!*cp) {
+				if (*--cp == '.')
+					break;
+				/*
+				 * All-numeric, no dot at the end.
+				 * Fake up a hostent as if we'd actually
+				 * done a lookup.
+				 */
+				goto fake;
+			}
+			if (!isdigit((u_char) *cp) && *cp != '.')
+				break;
+		}
+	if ((isxdigit((u_char) name[0]) && strchr(name, ':') != NULL) ||
+	    name[0] == ':')
+		for (cp = name;; ++cp) {
+			if (!*cp) {
+				if (*--cp == '.')
+					break;
+				/*
+				 * All-IPv6-legal, no dot at the end.
+				 * Fake up a hostent as if we'd actually
+				 * done a lookup.
+				 */
+				goto fake;
+			}
+			if (!isxdigit((u_char) *cp) && *cp != ':' && *cp != '.')
+				break;
+		}
+
+	*he = NETDB_INTERNAL;
+	info.hp = hp;
+	info.buf = buf;
+	info.buflen = buflen;
+	info.he = he;
+	if (nsdispatch(&info, dtab, NSDB_HOSTS, "gethostbyname",
+	    default_dns_files, name, strlen(name), af) != NS_SUCCESS)
+		return NULL;
+	*he = NETDB_SUCCESS;
+	return hp;
+nospc:
+	*he = NETDB_INTERNAL;
+	errno = ENOSPC;
+	return NULL;
+fake:
+	HENT_ARRAY(hp->h_addr_list, 1, buf, buflen);
+	HENT_ARRAY(hp->h_aliases, 0, buf, buflen);
+
+	hp->h_aliases[0] = NULL;
+	if (size > buflen)
+		goto nospc;
+
+	if (inet_pton(af, name, buf) <= 0) {
+		*he = HOST_NOT_FOUND;
+		return NULL;
+	}
+	hp->h_addr_list[0] = buf;
+	hp->h_addr_list[1] = NULL;
+	buf += size;
+	buflen -= size;
+	HENT_SCOPY(hp->h_name, name, buf, buflen);
+	if (res->options & RES_USE_INET6)
+		map_v4v6_hostent(hp, &buf, buf + buflen);
+	*he = NETDB_SUCCESS;
+	return hp;
+}
+
+// very similar in proxy-ness to android_getaddrinfo_proxy
+static struct hostent *
+gethostbyname_internal(const char *name, int af, res_state res, struct hostent *hp, char *hbuf,
+                       size_t hbuflen, int *errorp, unsigned netid, unsigned mark)
+{
+	FILE* proxy = android_open_proxy();
+	if (proxy == NULL) {
+		// Either we're not supposed to be using the proxy or the proxy is unavailable.
+		res_setnetid(res, netid);
+		res_setmark(res, mark);
+		return gethostbyname_internal_real(name, af, res, hp, hbuf, hbuflen, errorp);
+	}
+
+	netid = __netdClientDispatch.netIdForResolv(netid);
+
+	// This is writing to system/netd/server/DnsProxyListener.cpp and changes
+	// here need to be matched there.
+	if (fprintf(proxy, "gethostbyname %u %s %d",
+			netid,
+			name == NULL ? "^" : name,
+			af) < 0) {
+		fclose(proxy);
+		return NULL;
+	}
+
+	if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
+		fclose(proxy);
+		return NULL;
+	}
+
+	struct hostent* result = android_read_hostent(proxy, hp, hbuf, hbuflen, errorp);
+	fclose(proxy);
+	return result;
+}
+
+/* The prototype of gethostbyaddr_r is from glibc, not that in netbsd. */
+int gethostbyaddr_r(const void *addr, socklen_t len, int af, struct hostent *hp, char *buf,
+                    size_t buflen, struct hostent **result, int *h_errnop)
+{
+	*result = android_gethostbyaddrfornet_proxy_internal(addr, len, af, hp, buf, buflen, h_errnop,
+                                                       NETID_UNSET, MARK_UNSET);
+	if (!*result && errno == ENOSPC) {
+		errno = ERANGE;
+		return ERANGE;
+	}
+	return (*result) ? 0 : -1;
+}
+
+static struct hostent *
+android_gethostbyaddrfornet_real(const void *addr, socklen_t len, int af, struct hostent *hp,
+                                 char *buf, size_t buflen, int *he, unsigned netid, unsigned mark)
+{
+	const u_char *uaddr = (const u_char *)addr;
+	socklen_t size;
+	struct getnamaddr info;
+	static const ns_dtab dtab[] = {
+		NS_FILES_CB(_hf_gethtbyaddr, NULL)
+		{ NSSRC_DNS, _dns_gethtbyaddr, NULL },	/* force -DHESIOD */
+		NS_NIS_CB(_yp_gethtbyaddr, NULL)
+		NS_NULL_CB
+	};
+
+	_DIAGASSERT(addr != NULL);
+
+	if (af == AF_INET6 && len == NS_IN6ADDRSZ &&
+	    (IN6_IS_ADDR_LINKLOCAL((const struct in6_addr *)addr) ||
+	     IN6_IS_ADDR_SITELOCAL((const struct in6_addr *)addr))) {
+		*he = HOST_NOT_FOUND;
+		return NULL;
+	}
+	if (af == AF_INET6 && len == NS_IN6ADDRSZ &&
+	    (IN6_IS_ADDR_V4MAPPED((const struct in6_addr *)addr) ||
+	     IN6_IS_ADDR_V4COMPAT((const struct in6_addr *)addr))) {
+		/* Unmap. */
+		uaddr += NS_IN6ADDRSZ - NS_INADDRSZ;
+		addr = uaddr;
+		af = AF_INET;
+		len = NS_INADDRSZ;
+	}
+	switch (af) {
+	case AF_INET:
+		size = NS_INADDRSZ;
+		break;
+	case AF_INET6:
+		size = NS_IN6ADDRSZ;
+		break;
+	default:
+		errno = EAFNOSUPPORT;
+		*he = NETDB_INTERNAL;
+		return NULL;
+	}
+	if (size != len) {
+		errno = EINVAL;
+		*he = NETDB_INTERNAL;
+		return NULL;
+	}
+	info.hp = hp;
+	info.buf = buf;
+	info.buflen = buflen;
+	info.he = he;
+	*he = NETDB_INTERNAL;
+	if (nsdispatch(&info, dtab, NSDB_HOSTS, "gethostbyaddr",
+	    default_dns_files, uaddr, len, af, netid, mark) != NS_SUCCESS)
+		return NULL;
+	*he = NETDB_SUCCESS;
+	return hp;
+}
+
+static struct hostent*
+android_gethostbyaddrfornet_proxy_internal(const void* addr, socklen_t len, int af,
+                             struct hostent *hp, char *hbuf, size_t hbuflen, int *he,
+                             unsigned netid, unsigned mark)
+{
+	FILE* proxy = android_open_proxy();
+	if (proxy == NULL) {
+		// Either we're not supposed to be using the proxy or the proxy is unavailable.
+		return android_gethostbyaddrfornet_real(addr,len, af, hp, hbuf, hbuflen, he, netid, mark);
+	}
+
+	char buf[INET6_ADDRSTRLEN];  //big enough for IPv4 and IPv6
+	const char * addrStr = inet_ntop(af, addr, buf, sizeof(buf));
+	if (addrStr == NULL) {
+		fclose(proxy);
+		return NULL;
+	}
+
+	netid = __netdClientDispatch.netIdForResolv(netid);
+
+	if (fprintf(proxy, "gethostbyaddr %s %d %d %u",
+			addrStr, len, af, netid) < 0) {
+		fclose(proxy);
+		return NULL;
+	}
+
+	if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
+		fclose(proxy);
+		return NULL;
+	}
+
+	struct hostent *result = android_read_hostent(proxy, hp, hbuf, hbuflen, he);
+	fclose(proxy);
+	return result;
+}
+
+struct hostent*
+netbsd_gethostent_r(FILE *hf, struct hostent *hent, char *buf, size_t buflen, int *he)
+{
+	char *p, *name;
+	char *cp, **q;
+	int af, len;
+	size_t anum;
+	char **aliases;
+	size_t maxaliases;
+	struct in6_addr host_addr;
+
+	if (hf == NULL) {
+		*he = NETDB_INTERNAL;
+		errno = EINVAL;
+		return NULL;
+	}
+	p = NULL;
+	setup(aliases, maxaliases);
+
+	/* Allocate a new space to read file lines like upstream does.
+	 * To keep reentrancy we cannot use __res_get_static()->hostbuf here,
+	 * as the buffer may be used to store content for a previous hostent
+	 * returned by non-reentrant functions like gethostbyname().
+	 */
+	const size_t line_buf_size = sizeof(__res_get_static()->hostbuf);
+	if ((p = malloc(line_buf_size)) == NULL) {
+	  goto nospc;
+	}
+	for (;;) {
+		if (!fgets(p, line_buf_size, hf)) {
+			free(p);
+			free(aliases);
+			*he = HOST_NOT_FOUND;
+			return NULL;
+    		}
+		if (*p == '#') {
+			continue;
+		}
+		if (!(cp = strpbrk(p, "#\n"))) {
+			continue;
+		}
+		*cp = '\0';
+		if (!(cp = strpbrk(p, " \t")))
+			continue;
+		*cp++ = '\0';
+		if (inet_pton(AF_INET6, p, &host_addr) > 0) {
+			af = AF_INET6;
+			len = NS_IN6ADDRSZ;
+		} else {
+			if (inet_pton(AF_INET, p, &host_addr) <= 0)
+				continue;
+
+			res_state res = __res_get_state();
+			if (res == NULL)
+				goto nospc;
+			if (res->options & RES_USE_INET6) {
+				map_v4v6_address(buf, buf);
+				af = AF_INET6;
+				len = NS_IN6ADDRSZ;
+			} else {
+				af = AF_INET;
+				len = NS_INADDRSZ;
+			}
+			__res_put_state(res);
+		}
+
+		/* if this is not something we're looking for, skip it. */
+		if (hent->h_addrtype != 0 && hent->h_addrtype != af)
+			continue;
+		if (hent->h_length != 0 && hent->h_length != len)
+			continue;
+
+		while (*cp == ' ' || *cp == '\t')
+			cp++;
+		if ((cp = strpbrk(name = cp, " \t")) != NULL)
+			*cp++ = '\0';
+		q = aliases;
+		while (cp && *cp) {
+			if (*cp == ' ' || *cp == '\t') {
+				cp++;
+				continue;
+			}
+			addalias(q, cp, aliases, maxaliases);
+			if ((cp = strpbrk(cp, " \t")) != NULL)
+				*cp++ = '\0';
+		}
+		break;
+	}
+	hent->h_length = len;
+	hent->h_addrtype = af;
+	HENT_ARRAY(hent->h_addr_list, 1, buf, buflen);
+	anum = (size_t)(q - aliases);
+	HENT_ARRAY(hent->h_aliases, anum, buf, buflen);
+	HENT_COPY(hent->h_addr_list[0], &host_addr, hent->h_length, buf,
+	    buflen);
+	hent->h_addr_list[1] = NULL;
+
+	HENT_SCOPY(hent->h_name, name, buf, buflen);
+	for (size_t i = 0; i < anum; i++)
+		HENT_SCOPY(hent->h_aliases[i], aliases[i], buf, buflen);
+	hent->h_aliases[anum] = NULL;
+
+	*he = NETDB_SUCCESS;
+	free(p);
+	free(aliases);
+	return hent;
+nospc:
+	free(p);
+	free(aliases);
+	errno = ENOSPC;
+	*he = NETDB_INTERNAL;
+	return NULL;
+}
+
+static void
+map_v4v6_address(const char *src, char *dst)
+{
+	u_char *p = (u_char *)dst;
+	char tmp[NS_INADDRSZ];
+	int i;
+
+	_DIAGASSERT(src != NULL);
+	_DIAGASSERT(dst != NULL);
+
+	/* Stash a temporary copy so our caller can update in place. */
+	(void)memcpy(tmp, src, NS_INADDRSZ);
+	/* Mark this ipv6 addr as a mapped ipv4. */
+	for (i = 0; i < 10; i++)
+		*p++ = 0x00;
+	*p++ = 0xff;
+	*p++ = 0xff;
+	/* Retrieve the saved copy and we're done. */
+	(void)memcpy(p, tmp, NS_INADDRSZ);
+}
+
+static void
+map_v4v6_hostent(struct hostent *hp, char **bpp, char *ep)
+{
+	char **ap;
+
+	_DIAGASSERT(hp != NULL);
+	_DIAGASSERT(bpp != NULL);
+	_DIAGASSERT(ep != NULL);
+
+	if (hp->h_addrtype != AF_INET || hp->h_length != NS_INADDRSZ)
+		return;
+	hp->h_addrtype = AF_INET6;
+	hp->h_length = NS_IN6ADDRSZ;
+	for (ap = hp->h_addr_list; *ap; ap++) {
+		int i = (int)(sizeof(align) -
+		    (size_t)((u_long)*bpp % sizeof(align)));
+
+		if (ep - *bpp < (i + NS_IN6ADDRSZ)) {
+			/* Out of memory.  Truncate address list here.  XXX */
+			*ap = NULL;
+			return;
+		}
+		*bpp += i;
+		map_v4v6_address(*ap, *bpp);
+		*ap = *bpp;
+		*bpp += NS_IN6ADDRSZ;
+	}
+}
+
+static void
+addrsort(char **ap, int num, res_state res)
+{
+	int i, j;
+	char **p;
+	short aval[MAXADDRS];
+	int needsort = 0;
+
+	_DIAGASSERT(ap != NULL);
+
+	p = ap;
+	for (i = 0; i < num; i++, p++) {
+	    for (j = 0 ; (unsigned)j < res->nsort; j++)
+		if (res->sort_list[j].addr.s_addr ==
+		    (((struct in_addr *)(void *)(*p))->s_addr &
+		    res->sort_list[j].mask))
+			break;
+	    aval[i] = j;
+	    if (needsort == 0 && i > 0 && j < aval[i-1])
+		needsort = i;
+	}
+	if (!needsort)
+	    return;
+
+	while (needsort < num) {
+	    for (j = needsort - 1; j >= 0; j--) {
+		if (aval[j] > aval[j+1]) {
+		    char *hp;
+
+		    i = aval[j];
+		    aval[j] = aval[j+1];
+		    aval[j+1] = i;
+
+		    hp = ap[j];
+		    ap[j] = ap[j+1];
+		    ap[j+1] = hp;
+		} else
+		    break;
+	    }
+	    needsort++;
+	}
+}
+
+/*ARGSUSED*/
+static int
+_dns_gethtbyname(void *rv, void *cb_data, va_list ap)
+{
+	querybuf *buf;
+	int n, type;
+	struct hostent *hp;
+	const char *name;
+	res_state res;
+	struct getnamaddr *info = rv;
+
+	_DIAGASSERT(rv != NULL);
+
+	name = va_arg(ap, char *);
+	/* NOSTRICT skip string len */(void)va_arg(ap, int);
+	info->hp->h_addrtype = va_arg(ap, int);
+
+	switch (info->hp->h_addrtype) {
+	case AF_INET:
+		info->hp->h_length = NS_INADDRSZ;
+		type = T_A;
+		break;
+	case AF_INET6:
+		info->hp->h_length = NS_IN6ADDRSZ;
+		type = T_AAAA;
+		break;
+	default:
+		return NS_UNAVAIL;
+	}
+	buf = malloc(sizeof(*buf));
+	if (buf == NULL) {
+		*info->he = NETDB_INTERNAL;
+		return NS_NOTFOUND;
+	}
+	res = __res_get_state();
+	if (res == NULL) {
+		free(buf);
+		return NS_NOTFOUND;
+	}
+	n = res_nsearch(res, name, C_IN, type, buf->buf, (int)sizeof(buf->buf));
+	if (n < 0) {
+		free(buf);
+		debugprintf("res_nsearch failed (%d)\n", res, n);
+		__res_put_state(res);
+		return NS_NOTFOUND;
+	}
+	hp = getanswer(buf, n, name, type, res, info->hp, info->buf,
+	    info->buflen, info->he);
+	free(buf);
+	__res_put_state(res);
+	if (hp == NULL)
+		switch (*info->he) {
+		case HOST_NOT_FOUND:
+			return NS_NOTFOUND;
+		case TRY_AGAIN:
+			return NS_TRYAGAIN;
+		default:
+			return NS_UNAVAIL;
+		}
+	return NS_SUCCESS;
+}
+
+/*ARGSUSED*/
+static int
+_dns_gethtbyaddr(void *rv, void	*cb_data, va_list ap)
+{
+	char qbuf[MAXDNAME + 1], *qp, *ep;
+	int n;
+	querybuf *buf;
+	struct hostent *hp;
+	const unsigned char *uaddr;
+	int advance;
+	res_state res;
+	char *bf;
+	size_t blen;
+	struct getnamaddr *info = rv;
+	unsigned netid, mark;
+
+	_DIAGASSERT(rv != NULL);
+
+	uaddr = va_arg(ap, unsigned char *);
+	info->hp->h_length = va_arg(ap, int);
+	info->hp->h_addrtype = va_arg(ap, int);
+	netid = va_arg(ap, unsigned);
+	mark = va_arg(ap, unsigned);
+
+	switch (info->hp->h_addrtype) {
+	case AF_INET:
+		(void)snprintf(qbuf, sizeof(qbuf), "%u.%u.%u.%u.in-addr.arpa",
+		    (uaddr[3] & 0xff), (uaddr[2] & 0xff),
+		    (uaddr[1] & 0xff), (uaddr[0] & 0xff));
+		break;
+
+	case AF_INET6:
+		qp = qbuf;
+		ep = qbuf + sizeof(qbuf) - 1;
+		for (n = NS_IN6ADDRSZ - 1; n >= 0; n--) {
+			advance = snprintf(qp, (size_t)(ep - qp), "%x.%x.",
+			    uaddr[n] & 0xf,
+			    ((unsigned int)uaddr[n] >> 4) & 0xf);
+			if (advance > 0 && qp + advance < ep)
+				qp += advance;
+			else {
+				*info->he = NETDB_INTERNAL;
+				return NS_NOTFOUND;
+			}
+		}
+		if (strlcat(qbuf, "ip6.arpa", sizeof(qbuf)) >= sizeof(qbuf)) {
+			*info->he = NETDB_INTERNAL;
+			return NS_NOTFOUND;
+		}
+		break;
+	default:
+		return NS_UNAVAIL;
+	}
+
+	buf = malloc(sizeof(*buf));
+	if (buf == NULL) {
+		*info->he = NETDB_INTERNAL;
+		return NS_NOTFOUND;
+	}
+	res = __res_get_state();
+	if (res == NULL) {
+		free(buf);
+		return NS_NOTFOUND;
+	}
+	res_setnetid(res, netid);
+	res_setmark(res, mark);
+	n = res_nquery(res, qbuf, C_IN, T_PTR, buf->buf, (int)sizeof(buf->buf));
+	if (n < 0) {
+		free(buf);
+		debugprintf("res_nquery failed (%d)\n", res, n);
+		__res_put_state(res);
+		return NS_NOTFOUND;
+	}
+	hp = getanswer(buf, n, qbuf, T_PTR, res, info->hp, info->buf,
+	    info->buflen, info->he);
+	free(buf);
+	if (hp == NULL) {
+		__res_put_state(res);
+		switch (*info->he) {
+		case HOST_NOT_FOUND:
+			return NS_NOTFOUND;
+		case TRY_AGAIN:
+			return NS_TRYAGAIN;
+		default:
+			return NS_UNAVAIL;
+		}
+	}
+
+	bf = (void *)(hp->h_addr_list + 2);
+	blen = (size_t)(bf - info->buf);
+	if (blen + info->hp->h_length > info->buflen)
+		goto nospc;
+	hp->h_addr_list[0] = bf;
+	hp->h_addr_list[1] = NULL;
+	(void)memcpy(bf, uaddr, (size_t)info->hp->h_length);
+	if (info->hp->h_addrtype == AF_INET && (res->options & RES_USE_INET6)) {
+		if (blen + NS_IN6ADDRSZ > info->buflen)
+			goto nospc;
+		map_v4v6_address(bf, bf);
+		hp->h_addrtype = AF_INET6;
+		hp->h_length = NS_IN6ADDRSZ;
+	}
+
+	__res_put_state(res);
+	*info->he = NETDB_SUCCESS;
+	return NS_SUCCESS;
+nospc:
+	errno = ENOSPC;
+	*info->he = NETDB_INTERNAL;
+	return NS_UNAVAIL;
+}
+
+#ifdef YP
+/*ARGSUSED*/
+static struct hostent *
+_yp_hostent(char *line, int af, struct getnamaddr *info)
+{
+	struct in6_addr host_addrs[MAXADDRS];
+	char **aliases;
+	size_t maxaliases;
+	char *p = line;
+	char *cp, **q, *ptr;
+	size_t len, anum, i;
+	int addrok;
+	int more;
+	size_t naddrs;
+	struct hostent *hp = info->hp;
+
+	_DIAGASSERT(line != NULL);
+
+	hp->h_name = NULL;
+	hp->h_addrtype = af;
+	switch (af) {
+	case AF_INET:
+		hp->h_length = NS_INADDRSZ;
+		break;
+	case AF_INET6:
+		hp->h_length = NS_IN6ADDRSZ;
+		break;
+	default:
+		return NULL;
+	}
+	setup(aliases, maxaliases);
+	naddrs = 0;
+	q = aliases;
+
+nextline:
+	/* check for host_addrs overflow */
+	if (naddrs >= __arraycount(host_addrs))
+		goto done;
+
+	more = 0;
+	cp = strpbrk(p, " \t");
+	if (cp == NULL)
+		goto done;
+	*cp++ = '\0';
+
+	/* p has should have an address */
+	addrok = inet_pton(af, p, &host_addrs[naddrs]);
+	if (addrok != 1) {
+		/* skip to the next line */
+		while (cp && *cp) {
+			if (*cp == '\n') {
+				cp++;
+				goto nextline;
+			}
+			cp++;
+		}
+		goto done;
+	}
+	naddrs++;
+
+	while (*cp == ' ' || *cp == '\t')
+		cp++;
+	p = cp;
+	cp = strpbrk(p, " \t\n");
+	if (cp != NULL) {
+		if (*cp == '\n')
+			more = 1;
+		*cp++ = '\0';
+	}
+	if (!hp->h_name)
+		hp->h_name = p;
+	else if (strcmp(hp->h_name, p) == 0)
+		;
+	else
+		addalias(q, p, aliases, maxaliases);
+	p = cp;
+	if (more)
+		goto nextline;
+
+	while (cp && *cp) {
+		if (*cp == ' ' || *cp == '\t') {
+			cp++;
+			continue;
+		}
+		if (*cp == '\n') {
+			cp++;
+			goto nextline;
+		}
+		addalias(q, cp, aliases, maxaliases);
+		cp = strpbrk(cp, " \t");
+		if (cp != NULL)
+			*cp++ = '\0';
+	}
+
+done:
+	if (hp->h_name == NULL) {
+		free(aliases);
+		return NULL;
+	}
+
+	ptr = info->buf;
+	len = info->buflen;
+
+	anum = (size_t)(q - aliases);
+	HENT_ARRAY(hp->h_addr_list, naddrs, ptr, len);
+	HENT_ARRAY(hp->h_aliases, anum, ptr, len);
+
+	for (i = 0; i < naddrs; i++)
+		HENT_COPY(hp->h_addr_list[i], &host_addrs[i], hp->h_length,
+		    ptr, len);
+	hp->h_addr_list[naddrs] = NULL;
+
+	HENT_SCOPY(hp->h_name, hp->h_name, ptr, len);
+
+	for (i = 0; i < anum; i++)
+		HENT_SCOPY(hp->h_aliases[i], aliases[i], ptr, len);
+	hp->h_aliases[anum] = NULL;
+	free(aliases);
+
+	return hp;
+nospc:
+	free(aliases);
+	*info->he = NETDB_INTERNAL;
+	errno = ENOSPC;
+	return NULL;
+}
+
+/*ARGSUSED*/
+int
+_yp_gethtbyaddr(void *rv, void *cb_data, va_list ap)
+{
+	struct hostent *hp = NULL;
+	char *ypcurrent;
+	int ypcurrentlen, r;
+	char name[INET6_ADDRSTRLEN];	/* XXX enough? */
+	const unsigned char *uaddr;
+	int af;
+	const char *map;
+	struct getnamaddr *info = rv;
+
+	_DIAGASSERT(rv != NULL);
+
+	uaddr = va_arg(ap, unsigned char *);
+	/* NOSTRICT skip len */(void)va_arg(ap, int);
+	af = va_arg(ap, int);
+
+	if (!__ypdomain) {
+		if (_yp_check(&__ypdomain) == 0)
+			return NS_UNAVAIL;
+	}
+	/*
+	 * XXX unfortunately, we cannot support IPv6 extended scoped address
+	 * notation here.  gethostbyaddr() is not scope-aware.  too bad.
+	 */
+	if (inet_ntop(af, uaddr, name, (socklen_t)sizeof(name)) == NULL)
+		return NS_UNAVAIL;
+	switch (af) {
+	case AF_INET:
+		map = "hosts.byaddr";
+		break;
+	default:
+		map = "ipnodes.byaddr";
+		break;
+	}
+	ypcurrent = NULL;
+	r = yp_match(__ypdomain, map, name,
+		(int)strlen(name), &ypcurrent, &ypcurrentlen);
+	if (r == 0)
+		hp = _yp_hostent(ypcurrent, af, info);
+	else
+		hp = NULL;
+	free(ypcurrent);
+	if (hp == NULL) {
+		*info->he = HOST_NOT_FOUND;
+		return NS_NOTFOUND;
+	}
+	return NS_SUCCESS;
+}
+
+/*ARGSUSED*/
+int
+_yp_gethtbyname(void *rv, void *cb_data, va_list ap)
+{
+	struct hostent *hp;
+	char *ypcurrent;
+	int ypcurrentlen, r;
+	const char *name;
+	int af;
+	const char *map;
+	struct getnamaddr *info = rv;
+
+	_DIAGASSERT(rv != NULL);
+
+	name = va_arg(ap, char *);
+	/* NOSTRICT skip string len */(void)va_arg(ap, int);
+	af = va_arg(ap, int);
+
+	if (!__ypdomain) {
+		if (_yp_check(&__ypdomain) == 0)
+			return NS_UNAVAIL;
+	}
+	switch (af) {
+	case AF_INET:
+		map = "hosts.byname";
+		break;
+	default:
+		map = "ipnodes.byname";
+		break;
+	}
+	ypcurrent = NULL;
+	r = yp_match(__ypdomain, map, name,
+		(int)strlen(name), &ypcurrent, &ypcurrentlen);
+	if (r == 0)
+		hp = _yp_hostent(ypcurrent, af, info);
+	else
+		hp = NULL;
+	free(ypcurrent);
+	if (hp == NULL) {
+		*info->he = HOST_NOT_FOUND;
+		return NS_NOTFOUND;
+	}
+	return NS_SUCCESS;
+}
+#endif
+
+/*
+ * Non-reentrant versions.
+ */
+
+struct hostent *
+gethostbyname(const char *name)
+{
+	struct hostent *result = NULL;
+	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+
+	gethostbyname_r(name, &rs->host, rs->hostbuf, sizeof(rs->hostbuf), &result, &h_errno);
+	return result;
+}
+
+struct hostent *
+gethostbyname2(const char *name, int af)
+{
+	struct hostent *result = NULL;
+	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+
+	gethostbyname2_r(name, af, &rs->host, rs->hostbuf, sizeof(rs->hostbuf), &result, &h_errno);
+	return result;
+}
+
+struct hostent *
+android_gethostbynamefornet(const char *name, int af, unsigned netid, unsigned mark)
+{
+	struct hostent *hp;
+	res_state res = __res_get_state();
+	if (res == NULL)
+		return NULL;
+	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+	hp = gethostbyname_internal(name, af, res, &rs->host, rs->hostbuf, sizeof(rs->hostbuf),
+	                            &h_errno, netid, mark);
+	__res_put_state(res);
+	return hp;
+}
+
+struct hostent *
+gethostbyaddr(const void *addr, socklen_t len, int af)
+{
+	return android_gethostbyaddrfornet_proxy(addr, len, af, NETID_UNSET, MARK_UNSET);
+}
+
+struct hostent *
+android_gethostbyaddrfornet(const void *addr, socklen_t len, int af, unsigned netid, unsigned mark)
+{
+	return android_gethostbyaddrfornet_proxy(addr, len, af, netid, mark);
+}
+
+__LIBC_HIDDEN__ struct hostent*
+android_gethostbyaddrfornet_proxy(const void* addr, socklen_t len, int af,
+                                  unsigned netid, unsigned mark)
+{
+	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+	return android_gethostbyaddrfornet_proxy_internal(addr, len, af, &rs->host, rs->hostbuf,
+                                                    sizeof(rs->hostbuf), &h_errno, netid, mark);
+}
+
+struct hostent *
+gethostent(void)
+{
+  res_static  rs = __res_get_static();
+	if (!rs->hostf) {
+	  sethostent_r(&rs->hostf);
+	  if (!rs->hostf) {
+	    h_errno = NETDB_INTERNAL;
+	    return NULL;
+	  }
+	}
+	memset(&rs->host, 0, sizeof(rs->host));
+	return netbsd_gethostent_r(rs->hostf, &rs->host, rs->hostbuf, sizeof(rs->hostbuf), &h_errno);
+}
diff --git a/libc/dns/net/getnameinfo.c b/libc/dns/net/getnameinfo.c
index b9c0280..893e982 100644
--- a/libc/dns/net/getnameinfo.c
+++ b/libc/dns/net/getnameinfo.c
@@ -303,7 +303,7 @@
 			break;
 		}
 	} else {
-		hp = android_gethostbyaddrfornet_proxy(addr, afd->a_addrlen, afd->a_af, netid);
+		hp = android_gethostbyaddrfornet_proxy(addr, afd->a_addrlen, afd->a_af, netid, mark);
 		if (hp) {
 #if 0
 			/*
diff --git a/libc/dns/net/getservbyname.c b/libc/dns/net/getservbyname.c
index c95c9b0..c32416c 100644
--- a/libc/dns/net/getservbyname.c
+++ b/libc/dns/net/getservbyname.c
@@ -25,29 +25,19 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#include <sys/cdefs.h>
-#include <sys/types.h>
+
 #include <netdb.h>
+
 #include "servent.h"
 
-struct servent *
-getservbyname(const char *name, const char *proto)
-{
-    res_static       rs = __res_get_static();
-
-    if (rs == NULL || proto == NULL || name == NULL) {
-        errno = EINVAL;
-        return NULL;
+struct servent* getservbyname(const char* name, const char* proto) {
+  res_static rs = __res_get_static();
+  rs->servent_ptr = NULL;
+  struct servent* s;
+  while ((s = getservent_r(rs)) != NULL) {
+    if (strcmp(s->s_name, name) == 0 && (proto == NULL || strcmp(s->s_proto, proto) == 0)) {
+      return s;
     }
-
-    rs->servent_ptr = NULL;
-    while (1) {
-        struct servent*  s = getservent_r(rs);
-        if (s == NULL)
-            break;
-        if ( !strcmp( s->s_name, name ) && !strcmp( s->s_proto, proto ) )
-            return s;
-    }
-
-    return NULL;
+  }
+  return NULL;
 }
diff --git a/libc/dns/net/getservent.c b/libc/dns/net/getservent.c
index 9f6ec32..0a727c7 100644
--- a/libc/dns/net/getservent.c
+++ b/libc/dns/net/getservent.c
@@ -28,6 +28,7 @@
 #include <sys/cdefs.h>
 #include <sys/types.h>
 #include <endian.h>
+#include <malloc.h>
 #include <netdb.h>
 #include "servent.h"
 #include "services.h"
diff --git a/libc/dns/net/nsdispatch.c b/libc/dns/net/nsdispatch.c
index fb6d8f6..d025592 100644
--- a/libc/dns/net/nsdispatch.c
+++ b/libc/dns/net/nsdispatch.c
@@ -71,6 +71,7 @@
 #include <sys/cdefs.h>
 
 #include <assert.h>
+#include <errno.h>
 #include <nsswitch.h>
 #include <stdarg.h>
 #include <strings.h>
@@ -133,6 +134,10 @@
 				continue;
 			if (result & srclist[i].flags)
 				break;
+			/* Stop trying next resolver when there is a memory space fatal error. */
+			if ((result & NS_UNAVAIL) != 0 && errno == ENOSPC) {
+			  break;
+			}
 		}
 	}
 	result &= NS_STATUSMASK;	/* clear private flags in result */
diff --git a/libc/dns/net/services.h b/libc/dns/net/services.h
index fa199d0..7f748f7 100644
--- a/libc/dns/net/services.h
+++ b/libc/dns/net/services.h
@@ -30,8 +30,8 @@
 \6tacacs\0\61u\0\
 \12re-mail-ck\0\62t\0\
 \12re-mail-ck\0\62u\0\
-\6domain\0\65t\1\12nameserver\
-\6domain\0\65u\1\12nameserver\
+\6domain\0\65t\0\
+\6domain\0\65u\0\
 \3mtp\0\71t\0\
 \11tacacs-ds\0\101t\0\
 \11tacacs-ds\0\101u\0\
@@ -44,8 +44,8 @@
 \6gopher\0\106u\0\
 \3rje\0\115t\1\6netrjs\
 \6finger\0\117t\0\
-\3www\0\120t\1\4http\
-\3www\0\120u\0\
+\4http\0\120t\1\3www\
+\4http\0\120u\0\
 \4link\0\127t\1\7ttylink\
 \10kerberos\0\130t\3\11kerberos5\4krb5\14kerberos-sec\
 \10kerberos\0\130u\3\11kerberos5\4krb5\14kerberos-sec\
@@ -138,12 +138,16 @@
 \4ldap\1\205u\0\
 \4imsp\1\226t\0\
 \4imsp\1\226u\0\
+\6svrloc\1\253t\0\
+\6svrloc\1\253u\0\
 \5https\1\273t\0\
 \5https\1\273u\0\
 \4snpp\1\274t\0\
 \4snpp\1\274u\0\
 \14microsoft-ds\1\275t\0\
 \14microsoft-ds\1\275u\0\
+\7kpasswd\1\320t\0\
+\7kpasswd\1\320u\0\
 \4saft\1\347t\0\
 \4saft\1\347u\0\
 \6isakmp\1\364t\0\
@@ -158,6 +162,8 @@
 \10npmp-gui\2\143u\1\14dqs313_execd\
 \10hmmp-ind\2\144t\1\20dqs313_intercell\
 \10hmmp-ind\2\144u\1\20dqs313_intercell\
+\4qmqp\2\164t\0\
+\4qmqp\2\164u\0\
 \3ipp\2\167t\0\
 \3ipp\2\167u\0\
 \4exec\2\0t\0\
@@ -181,8 +187,14 @@
 \4uucp\2\34t\1\5uucpd\
 \6klogin\2\37t\0\
 \6kshell\2\40t\1\5krcmd\
+\15dhcpv6-client\2\42t\0\
+\15dhcpv6-client\2\42u\0\
+\15dhcpv6-server\2\43t\0\
+\15dhcpv6-server\2\43u\0\
 \12afpovertcp\2\44t\0\
 \12afpovertcp\2\44u\0\
+\4idfp\2\45t\0\
+\4idfp\2\45u\0\
 \10remotefs\2\54t\2\12rfs_server\3rfs\
 \5nntps\2\63t\1\5snntp\
 \5nntps\2\63u\1\5snntp\
@@ -239,19 +251,33 @@
 \13sa-msg-port\6\156u\1\13old-radacct\
 \6kermit\6\161t\0\
 \6kermit\6\161u\0\
+\11groupwise\6\215t\0\
+\11groupwise\6\215u\0\
 \3l2f\6\245t\1\4l2tp\
 \3l2f\6\245u\1\4l2tp\
 \6radius\7\24t\0\
 \6radius\7\24u\0\
 \13radius-acct\7\25t\1\7radacct\
 \13radius-acct\7\25u\1\7radacct\
+\4msnp\7\107t\0\
+\4msnp\7\107u\0\
 \13unix-status\7\245t\0\
 \12log-server\7\246t\0\
 \12remoteping\7\247t\0\
+\12cisco-sccp\7\320t\0\
+\12cisco-sccp\7\320u\0\
+\6search\7\332t\1\4ndtp\
+\13pipe-server\7\332t\1\13pipe_server\
 \3nfs\10\1t\0\
 \3nfs\10\1u\0\
+\6gnunet\10\46t\0\
+\6gnunet\10\46u\0\
 \12rtcm-sc104\10\65t\0\
 \12rtcm-sc104\10\65u\0\
+\15gsigatekeeper\10\107t\0\
+\15gsigatekeeper\10\107u\0\
+\4gris\10\127t\0\
+\4gris\10\127u\0\
 \12cvspserver\11\141t\0\
 \12cvspserver\11\141u\0\
 \5venus\11\176t\0\
@@ -266,10 +292,14 @@
 \3mon\12\27u\0\
 \4dict\12\104t\0\
 \4dict\12\104u\0\
+\15f5-globalsite\12\350t\0\
+\15f5-globalsite\12\350u\0\
+\6gsiftp\12\373t\0\
+\6gsiftp\12\373u\0\
 \4gpsd\13\203t\0\
 \4gpsd\13\203u\0\
-\6gds_db\13\352t\0\
-\6gds_db\13\352u\0\
+\6gds-db\13\352t\1\6gds_db\
+\6gds-db\13\352u\1\6gds_db\
 \5icpv2\14\72t\1\3icp\
 \5icpv2\14\72u\1\3icp\
 \5mysql\14\352t\0\
@@ -282,24 +312,49 @@
 \4daap\16\151u\0\
 \3svn\16\152t\1\12subversion\
 \3svn\16\152u\1\12subversion\
+\5suucp\17\277t\0\
+\5suucp\17\277u\0\
+\6sysrqd\17\376t\0\
+\6sysrqd\17\376u\0\
+\5sieve\20\136t\0\
+\4epmd\21\21t\0\
+\4epmd\21\21u\0\
+\6remctl\21\25t\0\
+\6remctl\21\25u\0\
+\11f5-iquery\21\1t\0\
+\11f5-iquery\21\1u\0\
 \3iax\21\331t\0\
 \3iax\21\331u\0\
+\3mtn\22\123t\0\
+\3mtn\22\123u\0\
 \13radmin-port\23\43t\0\
 \13radmin-port\23\43u\0\
 \3rfe\23\212u\0\
 \3rfe\23\212t\0\
+\4mmcc\23\272t\0\
+\4mmcc\23\272u\0\
 \3sip\23\304t\0\
 \3sip\23\304u\0\
 \7sip-tls\23\305t\0\
 \7sip-tls\23\305u\0\
+\3aol\24\106t\0\
+\3aol\24\106u\0\
 \13xmpp-client\24\146t\1\15jabber-client\
 \13xmpp-client\24\146u\1\15jabber-client\
 \13xmpp-server\24\225t\1\15jabber-server\
 \13xmpp-server\24\225u\1\15jabber-server\
 \10cfengine\24\274t\0\
 \10cfengine\24\274u\0\
+\4mdns\24\351t\0\
+\4mdns\24\351u\0\
 \12postgresql\25\70t\1\10postgres\
 \12postgresql\25\70u\1\10postgres\
+\7freeciv\25\264t\1\4rptp\
+\7freeciv\25\264u\0\
+\4amqp\26\50t\0\
+\4amqp\26\50u\0\
+\3ggz\26\70t\0\
+\3ggz\26\70u\0\
 \3x11\27\160t\1\5x11-0\
 \3x11\27\160u\1\5x11-0\
 \5x11-1\27\161t\0\
@@ -320,6 +375,12 @@
 \14gnutella-svc\30\312u\0\
 \14gnutella-rtr\30\313t\0\
 \14gnutella-rtr\30\313u\0\
+\13sge-qmaster\31\54t\1\13sge_qmaster\
+\13sge-qmaster\31\54u\1\13sge_qmaster\
+\11sge-execd\31\55t\1\11sge_execd\
+\11sge-execd\31\55u\1\11sge_execd\
+\13mysql-proxy\31\56t\0\
+\13mysql-proxy\31\56u\0\
 \17afs3-fileserver\33\130t\1\3bbs\
 \17afs3-fileserver\33\130u\1\3bbs\
 \15afs3-callback\33\131t\0\
@@ -342,12 +403,21 @@
 \13afs3-rmtsys\33\141u\0\
 \14font-service\33\274t\1\3xfs\
 \14font-service\33\274u\1\3xfs\
+\10http-alt\37\220t\1\10webcache\
+\10http-alt\37\220u\0\
 \12bacula-dir\43\215t\0\
 \12bacula-dir\43\215u\0\
 \11bacula-fd\43\216t\0\
 \11bacula-fd\43\216u\0\
 \11bacula-sd\43\217t\0\
 \11bacula-sd\43\217u\0\
+\5xmms2\45\303t\0\
+\5xmms2\45\303u\0\
+\3nbd\52\71t\0\
+\14zabbix-agent\47\102t\0\
+\14zabbix-agent\47\102u\0\
+\16zabbix-trapper\47\103t\0\
+\16zabbix-trapper\47\103u\0\
 \6amanda\47\140t\0\
 \6amanda\47\140u\0\
 \3hkp\54\153t\0\
@@ -364,16 +434,17 @@
 \4bpcd\65\326u\0\
 \6vopied\65\327t\0\
 \6vopied\65\327u\0\
+\4dcap\126\155t\0\
+\7gsidcap\126\160t\0\
 \4wnn6\127\1t\0\
 \4wnn6\127\1u\0\
 \11kerberos4\2\356u\2\13kerberos-iv\3kdc\
 \11kerberos4\2\356t\2\13kerberos-iv\3kdc\
-\17kerberos_master\2\357u\0\
-\17kerberos_master\2\357t\0\
-\15passwd_server\2\360u\0\
-\10krb_prop\2\362t\2\11krb5_prop\5hprop\
+\17kerberos-master\2\357u\1\17kerberos_master\
+\17kerberos-master\2\357t\0\
+\15passwd-server\2\360u\1\15passwd_server\
+\10krb-prop\2\362t\3\10krb_prop\11krb5_prop\5hprop\
 \11krbupdate\2\370t\1\4kreg\
-\7kpasswd\2\371t\1\4kpwd\
 \4swat\3\205t\0\
 \4kpop\4\125t\0\
 \5knetd\10\5t\0\
@@ -389,9 +460,9 @@
 \10poppassd\0\152t\0\
 \10poppassd\0\152u\0\
 \5ssmtp\1\321t\1\5smtps\
-\10moira_db\3\7t\0\
-\14moira_update\3\11t\0\
-\12moira_ureg\3\13u\0\
+\10moira-db\3\7t\1\10moira_db\
+\14moira-update\3\11t\1\14moira_update\
+\12moira-ureg\3\13u\1\12moira_ureg\
 \5spamd\3\17t\0\
 \5omirr\3\50t\1\6omirrd\
 \5omirr\3\50u\1\6omirrd\
@@ -404,9 +475,7 @@
 \4xtel\5\41t\0\
 \5xtelw\5\42t\0\
 \7support\5\371t\0\
-\5sieve\7\320t\0\
 \7cfinger\7\323t\0\
-\4ndtp\7\332t\0\
 \4frox\10\111t\0\
 \10ninstall\10\146t\0\
 \10ninstall\10\146u\0\
@@ -436,9 +505,7 @@
 \7hostmon\24\353t\0\
 \7hostmon\24\353u\0\
 \5rplay\25\263u\0\
-\5rplay\25\263t\0\
-\4rptp\25\264u\0\
-\4rptp\25\264t\0\
+\4nrpe\26\42t\0\
 \4nsca\26\43t\0\
 \4mrtd\26\52t\0\
 \6bgpsim\26\53t\0\
@@ -446,14 +513,15 @@
 \11sane-port\31\246t\2\4sane\5saned\
 \4ircd\32\13t\0\
 \10zope-ftp\37\125t\0\
-\10webcache\37\220t\0\
 \6tproxy\37\221t\0\
 \7omniorb\37\230t\0\
 \7omniorb\37\230u\0\
 \20clc-build-daemon\43\36t\0\
 \6xinetd\43\212t\0\
 \13mandelspawn\44\217u\1\12mandelbrot\
+\3git\44\312t\0\
 \4zope\45\311t\0\
+\6webmin\47\20t\0\
 \7kamanda\47\141t\0\
 \7kamanda\47\141u\0\
 \11amandaidx\47\142t\0\
@@ -473,6 +541,7 @@
 \5binkp\137\352t\0\
 \3asp\152\356t\0\
 \3asp\152\356u\0\
+\6csync2\170\221t\0\
 \11dircproxy\336\250t\0\
 \5tfido\353\21t\0\
 \4fido\353\23t\0\
diff --git a/libc/dns/net/sethostent.c b/libc/dns/net/sethostent.c
new file mode 100644
index 0000000..916421e
--- /dev/null
+++ b/libc/dns/net/sethostent.c
@@ -0,0 +1,275 @@
+/*	$NetBSD: sethostent.c,v 1.20 2014/03/17 13:24:23 christos Exp $	*/
+
+/*
+ * Copyright (c) 1985, 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. 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.
+ */
+
+#include <sys/cdefs.h>
+#if defined(LIBC_SCCS) && !defined(lint)
+#if 0
+static char sccsid[] = "@(#)sethostent.c	8.1 (Berkeley) 6/4/93";
+static char rcsid[] = "Id: sethostent.c,v 8.5 1996/09/28 06:51:07 vixie Exp ";
+#else
+__RCSID("$NetBSD: sethostent.c,v 1.20 2014/03/17 13:24:23 christos Exp $");
+#endif
+#endif /* LIBC_SCCS and not lint */
+
+#include "namespace.h"
+#include <sys/param.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <arpa/inet.h>
+#include <assert.h>
+#include <string.h>
+#include <nsswitch.h>
+#include <netdb.h>
+#include <resolv.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#include "hostent.h"
+#include "resolv_private.h"
+
+#define ALIGNBYTES (sizeof(uintptr_t) - 1)
+#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) &~ ALIGNBYTES)
+
+#ifndef _REENTRANT
+void	res_close(void);
+#endif
+
+static struct hostent *_hf_gethtbyname2(const char *, int, struct getnamaddr *);
+
+static const char *_h_hosts = _PATH_HOSTS;
+
+void
+sethostent_r(FILE **hf)
+{
+	if (!*hf)
+		*hf = fopen(_h_hosts, "re");
+	else
+		rewind(*hf);
+}
+
+void
+endhostent_r(FILE **hf)
+{
+	if (*hf) {
+		(void)fclose(*hf);
+		*hf = NULL;
+	}
+}
+
+/*ARGSUSED*/
+int
+_hf_gethtbyname(void *rv, void *cb_data, va_list ap)
+{
+	struct hostent *hp;
+	const char *name;
+	int af;
+	struct getnamaddr *info = rv;
+
+	_DIAGASSERT(rv != NULL);
+
+	name = va_arg(ap, char *);
+	/* NOSTRICT skip string len */(void)va_arg(ap, int);
+	af = va_arg(ap, int);
+
+#if 0
+	{
+		res_state res = __res_get_state();
+		if (res == NULL)
+			return NS_NOTFOUND;
+		if (res->options & RES_USE_INET6)
+			hp = _hf_gethtbyname2(name, AF_INET6, info);
+		else
+			hp = NULL;
+		if (hp == NULL)
+			hp = _hf_gethtbyname2(name, AF_INET, info);
+		__res_put_state(res);
+	}
+#else
+	hp = _hf_gethtbyname2(name, af, info);
+#endif
+	if (hp == NULL) {
+		if (*info->he == NETDB_INTERNAL && errno == ENOSPC) {
+			return NS_UNAVAIL;
+		}
+		return NS_NOTFOUND;
+	}
+	return NS_SUCCESS;
+}
+
+static struct hostent *
+_hf_gethtbyname2(const char *name, int af, struct getnamaddr *info)
+{
+	struct hostent *hp, hent;
+	char *buf, *ptr;
+	size_t len, anum, num, i;
+	FILE *hf;
+	char *aliases[MAXALIASES];
+	char *addr_ptrs[MAXADDRS];
+
+	_DIAGASSERT(name != NULL);
+
+	hf = NULL;
+	sethostent_r(&hf);
+	if (hf == NULL) {
+		errno = EINVAL;
+		*info->he = NETDB_INTERNAL;
+		return NULL;
+	}
+
+	if ((ptr = buf = malloc(len = info->buflen)) == NULL) {
+		endhostent_r(&hf);
+		*info->he = NETDB_INTERNAL;
+		return NULL;
+	}
+
+	anum = 0;		/* XXX: gcc */
+	hent.h_name = NULL;	/* XXX: gcc */
+	hent.h_addrtype = 0;	/* XXX: gcc */
+	hent.h_length = 0;	/* XXX: gcc */
+
+	for (num = 0; num < MAXADDRS;) {
+		info->hp->h_addrtype = af;
+		info->hp->h_length = 0;
+
+		hp = netbsd_gethostent_r(hf, info->hp, info->buf, info->buflen,
+		    info->he);
+		if (hp == NULL) {
+			if (*info->he == NETDB_INTERNAL && errno == ENOSPC) {
+				goto nospc;
+			}
+			break;
+		}
+
+		if (strcasecmp(hp->h_name, name) != 0) {
+			char **cp;
+			for (cp = hp->h_aliases; *cp != NULL; cp++)
+				if (strcasecmp(*cp, name) == 0)
+					break;
+			if (*cp == NULL) continue;
+		}
+
+		if (num == 0) {
+			hent.h_addrtype = af = hp->h_addrtype;
+			hent.h_length = hp->h_length;
+
+			HENT_SCOPY(hent.h_name, hp->h_name, ptr, len);
+			for (anum = 0; hp->h_aliases[anum]; anum++) {
+				if (anum >= MAXALIASES)
+					goto nospc;
+				HENT_SCOPY(aliases[anum], hp->h_aliases[anum],
+				    ptr, len);
+			}
+			ptr = (void *)ALIGN(ptr);
+			if ((size_t)(ptr - buf) >= info->buflen)
+				goto nospc;
+		}
+
+		if (num >= MAXADDRS)
+			goto nospc;
+		HENT_COPY(addr_ptrs[num], hp->h_addr_list[0], hp->h_length, ptr,
+		    len);
+		num++;
+	}
+	endhostent_r(&hf);
+
+	if (num == 0) {
+		*info->he = HOST_NOT_FOUND;
+		free(buf);
+		return NULL;
+	}
+
+	hp = info->hp;
+	ptr = info->buf;
+	len = info->buflen;
+
+	hp->h_addrtype = hent.h_addrtype;
+	hp->h_length = hent.h_length;
+
+	HENT_ARRAY(hp->h_aliases, anum, ptr, len);
+	HENT_ARRAY(hp->h_addr_list, num, ptr, len);
+
+	for (i = 0; i < num; i++)
+		HENT_COPY(hp->h_addr_list[i], addr_ptrs[i], hp->h_length, ptr,
+		    len);
+	hp->h_addr_list[num] = NULL;
+
+	HENT_SCOPY(hp->h_name, hent.h_name, ptr, len);
+
+	for (i = 0; i < anum; i++)
+		HENT_SCOPY(hp->h_aliases[i], aliases[i], ptr, len);
+	hp->h_aliases[anum] = NULL;
+
+	free(buf);
+	return hp;
+nospc:
+	endhostent_r(&hf);
+	*info->he = NETDB_INTERNAL;
+	free(buf);
+	errno = ENOSPC;
+	return NULL;
+}
+
+/*ARGSUSED*/
+int
+_hf_gethtbyaddr(void *rv, void *cb_data, va_list ap)
+{
+	struct hostent *hp;
+	const unsigned char *addr;
+	struct getnamaddr *info = rv;
+	FILE *hf;
+
+	_DIAGASSERT(rv != NULL);
+
+	addr = va_arg(ap, unsigned char *);
+	info->hp->h_length = va_arg(ap, int);
+	info->hp->h_addrtype = va_arg(ap, int);
+
+	hf = NULL;
+	sethostent_r(&hf);
+	if (hf == NULL) {
+		*info->he = NETDB_INTERNAL;
+		return NS_UNAVAIL;
+	}
+	while ((hp = netbsd_gethostent_r(hf, info->hp, info->buf, info->buflen,
+	    info->he)) != NULL)
+		if (!memcmp(hp->h_addr_list[0], addr, (size_t)hp->h_length))
+			break;
+	endhostent_r(&hf);
+
+	if (hp == NULL) {
+		if (errno == ENOSPC) {
+			return NS_UNAVAIL;
+		}
+		*info->he = HOST_NOT_FOUND;
+		return NS_NOTFOUND;
+	}
+	return NS_SUCCESS;
+}
diff --git a/libc/dns/resolv/res_cache.c b/libc/dns/resolv/res_cache.c
index d68ec3b..5a78450 100644
--- a/libc/dns/resolv/res_cache.c
+++ b/libc/dns/resolv/res_cache.c
@@ -28,6 +28,8 @@
 
 #include "resolv_cache.h"
 #include <resolv.h>
+#include <stdarg.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
@@ -45,6 +47,8 @@
 #include "resolv_netid.h"
 #include "res_private.h"
 
+#include "private/libc_logging.h"
+
 /* This code implements a small and *simple* DNS resolver cache.
  *
  * It is only used to cache DNS answers for a time defined by the smallest TTL
@@ -100,10 +104,6 @@
  */
 #define  CONFIG_ENV  "BIONIC_DNSCACHE"
 
-/* entries older than CONFIG_SECONDS seconds are always discarded.
- */
-#define  CONFIG_SECONDS    (60*10)    /* 10 minutes */
-
 /* default number of entries kept in the cache. This value has been
  * determined by browsing through various sites and counting the number
  * of corresponding requests. Keep in mind that our framework is currently
@@ -152,13 +152,21 @@
 /* set to 1 to debug query data */
 #define  DEBUG_DATA  0
 
-#undef XLOG
 #if DEBUG
-#  include "private/libc_logging.h"
-#  define XLOG(...)  __libc_format_log(ANDROID_LOG_DEBUG,"libc",__VA_ARGS__)
+#define __DEBUG__
+#else
+#define __DEBUG__ __attribute__((unused))
+#endif
 
-#include <stdio.h>
-#include <stdarg.h>
+#undef XLOG
+
+#define XLOG(...) ({ \
+    if (DEBUG) { \
+        __libc_format_log(ANDROID_LOG_DEBUG,"libc",__VA_ARGS__); \
+    } else { \
+        ((void)0); \
+    } \
+})
 
 /** BOUNDED BUFFER FORMATTING
  **/
@@ -205,7 +213,7 @@
  */
 
 /* add a char to a bounded buffer */
-static char*
+char*
 _bprint_c( char*  p, char*  end, int  c )
 {
     if (p < end) {
@@ -220,7 +228,7 @@
 }
 
 /* add a sequence of bytes to a bounded buffer */
-static char*
+char*
 _bprint_b( char*  p, char*  end, const char*  buf, int  len )
 {
     int  avail = end - p;
@@ -243,15 +251,15 @@
 }
 
 /* add a string to a bounded buffer */
-static char*
+char*
 _bprint_s( char*  p, char*  end, const char*  str )
 {
     return _bprint_b(p, end, str, strlen(str));
 }
 
 /* add a formatted string to a bounded buffer */
-static char*
-_bprint( char*  p, char*  end, const char*  format, ... )
+char* _bprint( char*  p, char*  end, const char*  format, ... ) __DEBUG__;
+char* _bprint( char*  p, char*  end, const char*  format, ... )
 {
     int      avail, n;
     va_list  args;
@@ -278,7 +286,7 @@
 }
 
 /* add a hex value to a bounded buffer, up to 8 digits */
-static char*
+char*
 _bprint_hex( char*  p, char*  end, unsigned  value, int  numDigits )
 {
     char   text[sizeof(unsigned)*2];
@@ -291,7 +299,7 @@
 }
 
 /* add the hexadecimal dump of some memory area to a bounded buffer */
-static char*
+char*
 _bprint_hexdump( char*  p, char*  end, const uint8_t*  data, int  datalen )
 {
     int   lineSize = 16;
@@ -330,20 +338,17 @@
 }
 
 /* dump the content of a query of packet to the log */
-static void
-XLOG_BYTES( const void*  base, int  len )
+void XLOG_BYTES( const void*  base, int  len ) __DEBUG__;
+void XLOG_BYTES( const void*  base, int  len )
 {
-    char  buff[1024];
-    char*  p = buff, *end = p + sizeof(buff);
+    if (DEBUG_DATA) {
+        char  buff[1024];
+        char*  p = buff, *end = p + sizeof(buff);
 
-    p = _bprint_hexdump(p, end, base, len);
-    XLOG("%s",buff);
-}
-
-#else /* !DEBUG */
-#  define  XLOG(...)        ((void)0)
-#  define  XLOG_BYTES(a,b)  ((void)0)
-#endif
+        p = _bprint_hexdump(p, end, base, len);
+        XLOG("%s",buff);
+    }
+} __DEBUG__
 
 static time_t
 _time_now( void )
@@ -1090,7 +1095,7 @@
         XLOG("ns_parserr failed. %s\n", strerror(errno));
     }
 
-    XLOG("TTL = %d\n", result);
+    XLOG("TTL = %lu\n", result);
 
     return result;
 }
@@ -1453,7 +1458,7 @@
     char* buf;
     int fileLen;
 
-    fp = fopen("/data/reslog.txt", "w+");
+    fp = fopen("/data/reslog.txt", "w+e");
     if (fp != NULL) {
         statep = __res_get_state();
 
@@ -1949,7 +1954,7 @@
         hints.ai_family = PF_UNSPEC;
         hints.ai_socktype = SOCK_DGRAM; /*dummy*/
         hints.ai_flags = AI_NUMERICHOST;
-        sprintf(sbuf, "%u", NAMESERVER_PORT);
+        snprintf(sbuf, sizeof(sbuf), "%u", NAMESERVER_PORT);
 
         index = 0;
         for (i = 0; i < numservers && i < MAXNS; i++) {
diff --git a/libc/dns/resolv/res_debug.c b/libc/dns/resolv/res_debug.c
index 7a05a5f..5f889cb 100644
--- a/libc/dns/resolv/res_debug.c
+++ b/libc/dns/resolv/res_debug.c
@@ -126,14 +126,6 @@
 #include <strings.h>
 #include <time.h>
 
-
-
-#ifdef SPRINTF_CHAR
-# define SPRINTF(x) strlen(sprintf/**/x)
-#else
-# define SPRINTF(x) sprintf x
-#endif
-
 extern const char * const _res_opcodes[];
 extern const char * const _res_sectioncodes[];
 
@@ -588,7 +580,7 @@
 		}
 	}
 
-	sprintf(unname, "%d", number);		/* XXX nonreentrant */
+	snprintf(unname, sizeof(unname), "%d", number);		/* XXX nonreentrant */
 	if (success)
 		*success = 0;
 	return (unname);
@@ -605,7 +597,7 @@
 			return (syms->humanname);
 		}
 	}
-	sprintf(unname, "%d", number);		/* XXX nonreentrant */
+	snprintf(unname, sizeof(unname), "%d", number);		/* XXX nonreentrant */
 	if (success)
 		*success = 0;
 	return (unname);
@@ -625,7 +617,7 @@
 		return (result);
 	if (type < 0 || type > 0xffff)
 		return ("BADTYPE");
-	sprintf(typebuf, "TYPE%d", type);
+	snprintf(typebuf, sizeof(typebuf), "TYPE%d", type);
 	return (typebuf);
 }
 
@@ -661,7 +653,7 @@
 		return (result);
 	if (class < 0 || class > 0xffff)
 		return ("BADCLASS");
-	sprintf(classbuf, "CLASS%d", class);
+	snprintf(classbuf, sizeof(classbuf), "CLASS%d", class);
 	return (classbuf);
 }
 
@@ -703,7 +695,7 @@
 	case RES_NO_NIBBLE2:	return "no-nibble2";
 #endif
 				/* XXX nonreentrant */
-	default:		sprintf(nbuf, "?0x%lx?", (u_long)option);
+	default:		snprintf(nbuf, sizeof(nbuf), "?0x%lx?", (u_long)option);
 				return (nbuf);
 	}
 }
@@ -716,7 +708,7 @@
 	static char nbuf[40];		/* XXX nonreentrant */
 
 	if (ns_format_ttl((u_long)value, nbuf, sizeof nbuf) < 0)
-		sprintf(nbuf, "%u", value);
+		snprintf(nbuf, sizeof(nbuf), "%u", value);
 	return (nbuf);
 }
 
@@ -745,7 +737,7 @@
 		break;
 #endif
 	default:
-		sprintf(ret, "[af%d]", u.sin.sin_family);
+		snprintf(ret, sizeof(ret), "[af%d]", u.sin.sin_family);
 		break;
 	}
 	if (size > 0U) {
@@ -777,7 +769,7 @@
 
 	val = mantissa * poweroften[exponent];
 
-	(void) sprintf(retbuf, "%lu.%.2lu", val/100, val%100);
+	(void) snprintf(retbuf, sizeof(retbuf), "%lu.%.2lu", val/100, val%100);
 	return (retbuf);
 }
 
@@ -1028,7 +1020,7 @@
 
 /* takes an on-the-wire LOC RR and formats it in a human readable format. */
 const char *
-loc_ntoa(const u_char *binary, char *ascii)
+loc_ntoa(const u_char *binary, char *ascii, size_t bufsiz)
 {
 	static const char *error = "?";
 	static char tmpbuf[sizeof
@@ -1055,7 +1047,7 @@
 		ascii = tmpbuf;
 
 	if (versionval) {
-		(void) sprintf(ascii, "; error: unknown LOC RR version");
+		(void) snprintf(ascii, bufsiz, "; error: unknown LOC RR version");
 		return (ascii);
 	}
 
@@ -1114,7 +1106,7 @@
 	hpstr = strdup(precsize_ntoa((u_int32_t)hpval));
 	vpstr = strdup(precsize_ntoa((u_int32_t)vpval));
 
-	sprintf(ascii,
+	snprintf(ascii, bufsiz,
 	    "%d %.2d %.2d.%.3d %c %d %.2d %.2d.%.3d %c %s%d.%.2dm %sm %sm %sm",
 		latdeg, latmin, latsec, latsecfrac, northsouth,
 		longdeg, longmin, longsec, longsecfrac, eastwest,
@@ -1180,7 +1172,7 @@
 #endif
 	mytime->tm_year += 1900;
 	mytime->tm_mon += 1;
-	sprintf(output, "%04d%02d%02d%02d%02d%02d",
+	snprintf(output, sizeof(output), "%04d%02d%02d%02d%02d%02d",
 		mytime->tm_year, mytime->tm_mon, mytime->tm_mday,
 		mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 	return (output);
diff --git a/libc/dns/resolv/res_init.c b/libc/dns/resolv/res_init.c
index f1cbed8..713b6e0 100644
--- a/libc/dns/resolv/res_init.c
+++ b/libc/dns/resolv/res_init.c
@@ -289,7 +289,7 @@
 	 line[sizeof(name) - 1] == '\t'))
 
 	nserv = 0;
-	if ((fp = fopen(_PATH_RESCONF, "r")) != NULL) {
+	if ((fp = fopen(_PATH_RESCONF, "re")) != NULL) {
 	    /* read the config file */
 	    while (fgets(buf, sizeof(buf), fp) != NULL) {
 		/* skip comments */
@@ -616,47 +616,6 @@
 }
 #endif
 
-#ifdef ANDROID_CHANGES
-static int
-real_randomid(u_int *random_value) {
-	/* open the nonblocking random device, returning -1 on failure */
-	int random_device = open("/dev/urandom", O_RDONLY | O_CLOEXEC);
-	if (random_device < 0) {
-		return -1;
-	}
-
-	/* read from the random device, returning -1 on failure (or too many retries)*/
-	for (u_int retry = 5; retry > 0; retry--) {
-		int retval = read(random_device, random_value, sizeof(u_int));
-		if (retval == sizeof(u_int)) {
-			*random_value &= 0xffff;
-			close(random_device);
-			return 0;
-		} else if ((retval < 0) && (errno != EINTR)) {
-			break;
-		}
-	}
-
-	close(random_device);
-	return -1;
-}
-#endif /* ANDROID_CHANGES */
-
-u_int
-res_randomid(void) {
-#ifdef ANDROID_CHANGES
-	int status = 0;
-	u_int output = 0;
-	status = real_randomid(&output);
-	if (status != -1) {
-		return output;
-	}
-#endif /* ANDROID_CHANGES */
-	struct timeval now;
-	gettimeofday(&now, NULL);
-	return (0xffff & (now.tv_sec ^ now.tv_usec ^ getpid()));
-}
-
 /*%
  * This routine is for closing the socket if a virtual circuit is used and
  * the program wants to close it.  This provides support for endhostent()
diff --git a/libc/dns/resolv/res_query.c b/libc/dns/resolv/res_query.c
index 6cd9b15..09be8b4 100644
--- a/libc/dns/resolv/res_query.c
+++ b/libc/dns/resolv/res_query.c
@@ -414,7 +414,7 @@
 			RES_SET_H_ERRNO(statp, NO_RECOVERY);
 			return (-1);
 		}
-		sprintf(nbuf, "%s.%s", name, domain);
+		snprintf(nbuf, sizeof(nbuf), "%s.%s", name, domain);
 	}
 	return (res_nquery(statp, longname, class, type, answer, anslen));
 }
diff --git a/libc/dns/resolv/res_state.c b/libc/dns/resolv/res_state.c
index 57791d1..afccd99 100644
--- a/libc/dns/resolv/res_state.c
+++ b/libc/dns/resolv/res_state.c
@@ -34,6 +34,7 @@
 #include "resolv_cache.h"
 #include <pthread.h>
 #include <stdlib.h>
+#include <string.h>
 
 #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
 #include <sys/_system_properties.h>
@@ -49,9 +50,6 @@
 #  define D(...)  do{}while(0)
 #endif
 
-static pthread_key_t   _res_key;
-static pthread_once_t  _res_once = PTHREAD_ONCE_INIT;
-
 typedef struct {
     int                  _h_errno;
     // TODO: Have one __res_state per network so we don't have to repopulate frequently.
@@ -105,17 +103,16 @@
     free(rt);
 }
 
-static void
-_res_init_key( void )
-{
-    pthread_key_create( &_res_key, _res_thread_free );
+static pthread_key_t _res_key;
+
+__attribute__((constructor)) static void __res_key_init() {
+    pthread_key_create(&_res_key, _res_thread_free);
 }
 
 static _res_thread*
 _res_thread_get(void)
 {
     _res_thread*  rt;
-    pthread_once( &_res_once, _res_init_key );
     rt = pthread_getspecific( _res_key );
 
     if (rt != NULL) {
diff --git a/libc/include/android/dlext.h b/libc/include/android/dlext.h
index f27e4e5..f10a8a2 100644
--- a/libc/include/android/dlext.h
+++ b/libc/include/android/dlext.h
@@ -18,7 +18,9 @@
 #define __ANDROID_DLEXT_H__
 
 #include <stddef.h>
+#include <stdint.h>
 #include <sys/cdefs.h>
+#include <sys/types.h>  /* for off64_t */
 
 __BEGIN_DECLS
 
@@ -57,16 +59,28 @@
   /* If opening a library using library_fd read it starting at library_fd_offset.
    * This flag is only valid when ANDROID_DLEXT_USE_LIBRARY_FD is set.
    */
-
   ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET    = 0x20,
 
+  /* When set, do not check if the library has already been loaded by file stat(2)s.
+   *
+   * This flag allows forced loading of the library in the case when for some
+   * reason multiple ELF files share the same filename (because the already-loaded
+   * library has been removed and overwritten, for example).
+   *
+   * Note that if the library has the same dt_soname as an old one and some other
+   * library has the soname in DT_NEEDED list, the first one will be used to resolve any
+   * dependencies.
+   */
+  ANDROID_DLEXT_FORCE_LOAD = 0x40,
+
   /* Mask of valid bits */
   ANDROID_DLEXT_VALID_FLAG_BITS       = ANDROID_DLEXT_RESERVED_ADDRESS |
                                         ANDROID_DLEXT_RESERVED_ADDRESS_HINT |
                                         ANDROID_DLEXT_WRITE_RELRO |
                                         ANDROID_DLEXT_USE_RELRO |
                                         ANDROID_DLEXT_USE_LIBRARY_FD |
-                                        ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET,
+                                        ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET |
+                                        ANDROID_DLEXT_FORCE_LOAD,
 };
 
 typedef struct {
diff --git a/libc/include/android/legacy_errno_inlines.h b/libc/include/android/legacy_errno_inlines.h
new file mode 100644
index 0000000..71096fc
--- /dev/null
+++ b/libc/include/android/legacy_errno_inlines.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _ANDROID_LEGACY_ERRNO_INLINES_H
+#define _ANDROID_LEGACY_ERRNO_INLINES_H
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+static __inline int __attribute__((deprecated)) __set_errno(int n) {
+  errno = n;
+  return -1;
+}
+
+__END_DECLS
+
+#endif /* _ANDROID_LEGACY_ERRNO_INLINES_H */
diff --git a/libc/include/android/legacy_signal_inlines.h b/libc/include/android/legacy_signal_inlines.h
new file mode 100644
index 0000000..1b6e687
--- /dev/null
+++ b/libc/include/android/legacy_signal_inlines.h
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _ANDROID_LEGACY_SIGNAL_INLINES_H_
+#define _ANDROID_LEGACY_SIGNAL_INLINES_H_
+
+#include <string.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+extern sighandler_t bsd_signal(int signum, sighandler_t handler);
+
+static __inline int sigismember(sigset_t *set, int signum) {
+  /* Signal numbers start at 1, but bit positions start at 0. */
+  int bit = signum - 1;
+  const unsigned long *local_set = (const unsigned long *)set;
+  if (set == NULL || bit < 0 || bit >= (int)(8 * sizeof(sigset_t))) {
+    errno = EINVAL;
+    return -1;
+  }
+  return (int)((local_set[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1);
+}
+
+static __inline int sigaddset(sigset_t *set, int signum) {
+  /* Signal numbers start at 1, but bit positions start at 0. */
+  int bit = signum - 1;
+  unsigned long *local_set = (unsigned long *)set;
+  if (set == NULL || bit < 0 || bit >= (int)(8 * sizeof(sigset_t))) {
+    errno = EINVAL;
+    return -1;
+  }
+  local_set[bit / LONG_BIT] |= 1UL << (bit % LONG_BIT);
+  return 0;
+}
+
+static __inline int sigdelset(sigset_t *set, int signum) {
+  /* Signal numbers start at 1, but bit positions start at 0. */
+  int bit = signum - 1;
+  unsigned long *local_set = (unsigned long *)set;
+  if (set == NULL || bit < 0 || bit >= (int)(8 * sizeof(sigset_t))) {
+    errno = EINVAL;
+    return -1;
+  }
+  local_set[bit / LONG_BIT] &= ~(1UL << (bit % LONG_BIT));
+  return 0;
+}
+
+static __inline int sigemptyset(sigset_t *set) {
+  if (set == NULL) {
+    errno = EINVAL;
+    return -1;
+  }
+  memset(set, 0, sizeof(sigset_t));
+  return 0;
+}
+
+static __inline int sigfillset(sigset_t *set) {
+  if (set == NULL) {
+    errno = EINVAL;
+    return -1;
+  }
+  memset(set, ~0, sizeof(sigset_t));
+  return 0;
+}
+
+static __inline sighandler_t signal(int s, sighandler_t f) {
+  return bsd_signal(s, f);
+}
+
+__END_DECLS
+
+#endif /* _ANDROID_LEGACY_SIGNAL_INLINES_H_ */
diff --git a/libc/include/android/legacy_stdlib_inlines.h b/libc/include/android/legacy_stdlib_inlines.h
new file mode 100644
index 0000000..58a2a9e
--- /dev/null
+++ b/libc/include/android/legacy_stdlib_inlines.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _ANDROID_LEGACY_STDLIB_INLINES_H_
+#define _ANDROID_LEGACY_STDLIB_INLINES_H_
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+static __inline float strtof(const char *nptr, char **endptr) {
+  return (float)strtod(nptr, endptr);
+}
+
+static __inline double atof(const char *nptr) { return (strtod(nptr, NULL)); }
+
+static __inline int abs(int __n) { return (__n < 0) ? -__n : __n; }
+
+static __inline long labs(long __n) { return (__n < 0L) ? -__n : __n; }
+
+static __inline long long llabs(long long __n) {
+  return (__n < 0LL) ? -__n : __n;
+}
+
+static __inline int rand(void) { return (int)lrand48(); }
+
+static __inline void srand(unsigned int __s) { srand48(__s); }
+
+static __inline long random(void) { return lrand48(); }
+
+static __inline void srandom(unsigned int __s) { srand48(__s); }
+
+static __inline int grantpt(int __fd __attribute((unused))) {
+  return 0; /* devpts does this all for us! */
+}
+
+__END_DECLS
+
+#endif /* _ANDROID_LEGACY_STDLIB_INLINES_H_ */
diff --git a/libc/include/android/legacy_sys_atomics_inlines.h b/libc/include/android/legacy_sys_atomics_inlines.h
new file mode 100644
index 0000000..85cbade
--- /dev/null
+++ b/libc/include/android/legacy_sys_atomics_inlines.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _ANDROID_LEGACY_SYS_ATOMICS_INLINES_H_
+#define _ANDROID_LEGACY_SYS_ATOMICS_INLINES_H_
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+/* Note: atomic operations that were exported by the C library didn't
+ *       provide any memory barriers, which created potential issues on
+ *       multi-core devices. We now define them as inlined calls to
+ *       GCC sync builtins, which always provide a full barrier.
+ *
+ *       NOTE: The C library still exports atomic functions by the same
+ *              name to ensure ABI stability for existing NDK machine code.
+ *
+ *       If you are an NDK developer, we encourage you to rebuild your
+ *       unmodified sources against this header as soon as possible.
+ */
+#define __ATOMIC_INLINE__ static __inline __attribute__((always_inline))
+
+__ATOMIC_INLINE__ int __atomic_cmpxchg(int old, int _new, volatile int *ptr) {
+  /* We must return 0 on success */
+  return __sync_val_compare_and_swap(ptr, old, _new) != old;
+}
+
+__ATOMIC_INLINE__ int __atomic_swap(int _new, volatile int *ptr) {
+  int prev;
+  do {
+    prev = *ptr;
+  } while (__sync_val_compare_and_swap(ptr, prev, _new) != prev);
+  return prev;
+}
+
+__ATOMIC_INLINE__ int __atomic_dec(volatile int *ptr) {
+  return __sync_fetch_and_sub(ptr, 1);
+}
+
+__ATOMIC_INLINE__ int __atomic_inc(volatile int *ptr) {
+  return __sync_fetch_and_add(ptr, 1);
+}
+
+__END_DECLS
+
+#endif /* _ANDROID_LEGACY_SYS_ATOMICS_INLINES_H_ */
diff --git a/libc/include/android/legacy_sys_stat_inlines.h b/libc/include/android/legacy_sys_stat_inlines.h
new file mode 100644
index 0000000..f6d3c0f
--- /dev/null
+++ b/libc/include/android/legacy_sys_stat_inlines.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _ANDROID_LEGACY_SYS_STAT_INLINES_H_
+#define _ANDROID_LEGACY_SYS_STAT_INLINES_H_
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+static __inline int mkfifo(const char *__p, mode_t __m) {
+  return mknod(__p, (__m & ~S_IFMT) | S_IFIFO, (dev_t)0);
+}
+
+__END_DECLS
+
+#endif /* _ANDROID_LEGACY_SYS_STAT_INLINES_H_ */
diff --git a/libc/include/android/legacy_termios_inlines.h b/libc/include/android/legacy_termios_inlines.h
new file mode 100644
index 0000000..fb61f27
--- /dev/null
+++ b/libc/include/android/legacy_termios_inlines.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _ANDROID_LEGACY_TERMIOS_INLINES_H_
+#define _ANDROID_LEGACY_TERMIOS_INLINES_H_
+
+#include <linux/termios.h>
+#include <sys/cdefs.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+static __inline int tcgetattr(int fd, struct termios *s) {
+  return ioctl(fd, TCGETS, s);
+}
+
+static __inline int tcsetattr(int fd, int __opt, const struct termios *s) {
+  return ioctl(fd, __opt, (void *)s);
+}
+
+static __inline int tcflow(int fd, int action) {
+  return ioctl(fd, TCXONC, (void *)(intptr_t)action);
+}
+
+static __inline int tcflush(int fd, int __queue) {
+  return ioctl(fd, TCFLSH, (void *)(intptr_t)__queue);
+}
+
+static __inline pid_t tcgetsid(int fd) {
+  pid_t _pid;
+  return ioctl(fd, TIOCGSID, &_pid) ? (pid_t)-1 : _pid;
+}
+
+static __inline int tcsendbreak(int fd, int __duration) {
+  return ioctl(fd, TCSBRKP, (void *)(uintptr_t)__duration);
+}
+
+static __inline speed_t cfgetospeed(const struct termios *s) {
+  return (speed_t)(s->c_cflag & CBAUD);
+}
+
+static __inline int cfsetospeed(struct termios *s, speed_t speed) {
+  s->c_cflag = (s->c_cflag & ~CBAUD) | (speed & CBAUD);
+  return 0;
+}
+
+static __inline speed_t cfgetispeed(const struct termios *s) {
+  return (speed_t)(s->c_cflag & CBAUD);
+}
+
+static __inline int cfsetispeed(struct termios *s, speed_t speed) {
+  s->c_cflag = (s->c_cflag & ~CBAUD) | (speed & CBAUD);
+  return 0;
+}
+
+static __inline void cfmakeraw(struct termios *s) {
+  s->c_iflag &=
+      ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
+  s->c_oflag &= ~OPOST;
+  s->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
+  s->c_cflag &= ~(CSIZE | PARENB);
+  s->c_cflag |= CS8;
+}
+
+__END_DECLS
+
+#endif /* _ANDROID_LEGACY_TERMIOS_INLINES_H_ */
diff --git a/libc/include/arpa/nameser_compat.h b/libc/include/arpa/nameser_compat.h
index e060f60..539864e 100644
--- a/libc/include/arpa/nameser_compat.h
+++ b/libc/include/arpa/nameser_compat.h
@@ -44,53 +44,6 @@
 
 #include <endian.h>
 
-#ifndef BYTE_ORDER
-#if (BSD >= 199103)
-# include <machine/endian.h>
-#else
-#ifdef __linux__
-# include <endian.h>
-#else
-#define	LITTLE_ENDIAN	1234	/* least-significant byte first (vax, pc) */
-#define	BIG_ENDIAN	4321	/* most-significant byte first (IBM, net) */
-#define	PDP_ENDIAN	3412	/* LSB first in word, MSW first in long (pdp)*/
-
-#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \
-    defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \
-    defined(__i386__) || defined(__i386) || defined(__amd64__) || \
-    defined(__x86_64__) || defined(MIPSEL) || defined(_MIPSEL) || \
-    defined(BIT_ZERO_ON_RIGHT) || defined(__alpha__) || defined(__alpha) || \
-    (defined(__Lynx__) && defined(__x86__))
-#define BYTE_ORDER	LITTLE_ENDIAN
-#endif
-
-#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
-    defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
-    defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\
-    defined(apollo) || defined(__convex__) || defined(_CRAY) || \
-    defined(__hppa) || defined(__hp9000) || \
-    defined(__hp9000s300) || defined(__hp9000s700) || \
-    defined(__hp3000s900) || defined(__hpux) || defined(MPE) || \
-    defined (BIT_ZERO_ON_LEFT) || defined(m68k) || defined(__sparc) ||  \
-    (defined(__Lynx__) && \
-     (defined(__68k__) || defined(__sparc__) || defined(__powerpc__)))
-#define BYTE_ORDER	BIG_ENDIAN
-#endif
-#endif /* __linux */
-#endif /* BSD */
-#endif /* BYTE_ORDER */
-
-#if !defined(BYTE_ORDER) || \
-    (BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \
-    BYTE_ORDER != PDP_ENDIAN)
-	/* you must determine what the correct bit order is for
-	 * your compiler - the next line is an intentional error
-	 * which will force your compiles to bomb until you fix
-	 * the above macros.
-	 */
-  #error "Undefined or invalid BYTE_ORDER";
-#endif
-
 /*
  * Structure for query header.  The order of the fields is machine- and
  * compiler-dependent, depending on the byte/bit order and the layout
diff --git a/libc/include/ctype.h b/libc/include/ctype.h
index d05a952..83b5ba7 100644
--- a/libc/include/ctype.h
+++ b/libc/include/ctype.h
@@ -43,36 +43,37 @@
 #include <sys/cdefs.h>
 #include <xlocale.h>
 
-#define	_CTYPE_U	0x01
-#define	_CTYPE_L	0x02
-#define	_CTYPE_D	0x04
-#define	_CTYPE_S	0x08
-#define	_CTYPE_P	0x10
-#define	_CTYPE_C	0x20
-#define	_CTYPE_X	0x40
-#define	_CTYPE_B	0x80
-#define	_CTYPE_R	(_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_D|_CTYPE_B)
-#define	_CTYPE_A	(_CTYPE_L|_CTYPE_U)
+#define _CTYPE_U 0x01
+#define _CTYPE_L 0x02
+#define _CTYPE_D 0x04
+#define _CTYPE_S 0x08
+#define _CTYPE_P 0x10
+#define _CTYPE_C 0x20
+#define _CTYPE_X 0x40
+#define _CTYPE_B 0x80
+#define _CTYPE_R (_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_D|_CTYPE_B)
+#define _CTYPE_A (_CTYPE_L|_CTYPE_U)
 
 __BEGIN_DECLS
 
 extern const char	*_ctype_;
 
 #if defined(__GNUC__) || defined(_ANSI_LIBRARY) || defined(lint)
-int	isalnum(int);
-int	isalpha(int);
-int	iscntrl(int);
-int	isdigit(int);
-int	isgraph(int);
-int	islower(int);
-int	isprint(int);
-int	ispunct(int);
-int	isspace(int);
-int	isupper(int);
-int	isxdigit(int);
-int	tolower(int);
-int	toupper(int);
+int isalnum(int);
+int isalpha(int);
+int iscntrl(int);
+int isdigit(int);
+int isgraph(int);
+int islower(int);
+int isprint(int);
+int ispunct(int);
+int isspace(int);
+int isupper(int);
+int isxdigit(int);
+int tolower(int);
+int toupper(int);
 
+#if __ANDROID_API__ >= 21
 int isalnum_l(int, locale_t);
 int isalpha_l(int, locale_t);
 int isblank_l(int, locale_t);
@@ -87,17 +88,18 @@
 int isxdigit_l(int, locale_t);
 int tolower_l(int, locale_t);
 int toupper_l(int, locale_t);
+#endif /* __ANDROID_API__ >= 21 */
 
 #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __POSIX_VISIBLE > 200112 \
     || __XPG_VISIBLE > 600
-int	isblank(int);
+int isblank(int);
 #endif
 
 #if __BSD_VISIBLE || __XPG_VISIBLE
-int	isascii(int);
-int	toascii(int);
-int	_tolower(int);
-int	_toupper(int);
+int isascii(int);
+int toascii(int);
+int _tolower(int);
+int _toupper(int);
 #endif /* __BSD_VISIBLE || __XPG_VISIBLE */
 
 #endif /* __GNUC__ || _ANSI_LIBRARY || lint */
diff --git a/libc/include/dirent.h b/libc/include/dirent.h
index a849a61..63716a4 100644
--- a/libc/include/dirent.h
+++ b/libc/include/dirent.h
@@ -58,6 +58,12 @@
 
 #undef __DIRENT64_BODY
 
+/* glibc compatibility. */
+#undef _DIRENT_HAVE_D_NAMLEN /* Linux doesn't have a d_namlen field. */
+#define _DIRENT_HAVE_D_RECLEN
+#define _DIRENT_HAVE_D_OFF
+#define _DIRENT_HAVE_D_TYPE
+
 #define d_fileno d_ino
 
 typedef struct DIR DIR;
@@ -70,6 +76,8 @@
 extern int readdir64_r(DIR*, struct dirent64*, struct dirent64**);
 extern int closedir(DIR*);
 extern void rewinddir(DIR*);
+extern void seekdir(DIR*, long);
+extern long telldir(DIR*);
 extern int dirfd(DIR*);
 extern int alphasort(const struct dirent**, const struct dirent**);
 extern int alphasort64(const struct dirent64**, const struct dirent64**);
diff --git a/libc/include/dlfcn.h b/libc/include/dlfcn.h
index 8dde08c..afa7687 100644
--- a/libc/include/dlfcn.h
+++ b/libc/include/dlfcn.h
@@ -64,6 +64,7 @@
   RTLD_GLOBAL = 2,
 #endif
   RTLD_NOLOAD = 4,
+  RTLD_NODELETE = 0x01000,
 };
 
 #if defined (__LP64__)
diff --git a/libc/include/elf.h b/libc/include/elf.h
index 7de464e..df768ba 100644
--- a/libc/include/elf.h
+++ b/libc/include/elf.h
@@ -48,35 +48,100 @@
   } a_un;
 } Elf64_auxv_t;
 
+typedef Elf32_Half Elf32_Versym;
+typedef Elf64_Half Elf64_Versym;
+
+typedef struct {
+  Elf32_Half vd_version;
+  Elf32_Half vd_flags;
+  Elf32_Half vd_ndx;
+  Elf32_Half vd_cnt;
+  Elf32_Word vd_hash;
+  Elf32_Word vd_aux;
+  Elf32_Word vd_next;
+} Elf32_Verdef;
+
+typedef struct {
+  Elf32_Word vda_name;
+  Elf32_Word vda_next;
+} Elf32_Verdaux;
+
+typedef struct {
+  Elf64_Half vd_version;
+  Elf64_Half vd_flags;
+  Elf64_Half vd_ndx;
+  Elf64_Half vd_cnt;
+  Elf64_Word vd_hash;
+  Elf64_Word vd_aux;
+  Elf64_Word vd_next;
+} Elf64_Verdef;
+
+typedef struct {
+  Elf64_Word vda_name;
+  Elf64_Word vda_next;
+} Elf64_Verdaux;
+
+typedef struct {
+  Elf32_Half vn_version;
+  Elf32_Half vn_cnt;
+  Elf32_Word vn_file;
+  Elf32_Word vn_aux;
+  Elf32_Word vn_next;
+} Elf32_Verneed;
+
+typedef struct {
+  Elf32_Word vna_hash;
+  Elf32_Half vna_flags;
+  Elf32_Half vna_other;
+  Elf32_Word vna_name;
+  Elf32_Word vna_next;
+} Elf32_Vernaux;
+
+typedef struct {
+  Elf64_Half vn_version;
+  Elf64_Half vn_cnt;
+  Elf64_Word vn_file;
+  Elf64_Word vn_aux;
+  Elf64_Word vn_next;
+} Elf64_Verneed;
+
+typedef struct {
+  Elf64_Word vna_hash;
+  Elf64_Half vna_flags;
+  Elf64_Half vna_other;
+  Elf64_Word vna_name;
+  Elf64_Word vna_next;
+} Elf64_Vernaux;
+
 #define DF_ORIGIN     0x00000001
 #define DF_SYMBOLIC   0x00000002
 #define DF_TEXTREL    0x00000004
 #define DF_BIND_NOW   0x00000008
 #define DF_STATIC_TLS 0x00000010
 
-#define DF_1_NOW        0x00000001 // Perform complete relocation processing.
-#define DF_1_GLOBAL     0x00000002 // implies RTLD_GLOBAL
+#define DF_1_NOW        0x00000001 /* Perform complete relocation processing. */
+#define DF_1_GLOBAL     0x00000002 /* implies RTLD_GLOBAL */
 #define DF_1_GROUP      0x00000004
-#define DF_1_NODELETE   0x00000008 // implies RTLD_NODELETE
+#define DF_1_NODELETE   0x00000008 /* implies RTLD_NODELETE */
 #define DF_1_LOADFLTR   0x00000010
 #define DF_1_INITFIRST  0x00000020
-#define DF_1_NOOPEN     0x00000040 // Object can not be used with dlopen(3)
+#define DF_1_NOOPEN     0x00000040 /* Object can not be used with dlopen(3) */
 #define DF_1_ORIGIN     0x00000080
 #define DF_1_DIRECT     0x00000100
 #define DF_1_TRANS      0x00000200
 #define DF_1_INTERPOSE  0x00000400
 #define DF_1_NODEFLIB   0x00000800
-#define DF_1_NODUMP     0x00001000 // Object cannot be dumped with dldump(3)
+#define DF_1_NODUMP     0x00001000 /* Object cannot be dumped with dldump(3) */
 #define DF_1_CONFALT    0x00002000
 #define DF_1_ENDFILTEE  0x00004000
 #define DF_1_DISPRELDNE 0x00008000
 #define DF_1_DISPRELPND 0x00010000
 #define DF_1_NODIRECT   0x00020000
-#define DF_1_IGNMULDEF  0x00040000 // Internal use
-#define DF_1_NOKSYMS    0x00080000 // Internal use
-#define DF_1_NOHDR      0x00100000 // Internal use
+#define DF_1_IGNMULDEF  0x00040000 /* Internal use */
+#define DF_1_NOKSYMS    0x00080000 /* Internal use */
+#define DF_1_NOHDR      0x00100000 /* Internal use */
 #define DF_1_EDITED     0x00200000
-#define DF_1_NORELOC    0x00400000 // Internal use
+#define DF_1_NORELOC    0x00400000 /* Internal use */
 #define DF_1_SYMINTPOSE 0x00800000
 #define DF_1_GLOBAUDIT  0x01000000
 #define DF_1_SINGLETON  0x02000000
@@ -94,6 +159,16 @@
 #define DT_PREINIT_ARRAY 32
 #define DT_PREINIT_ARRAYSZ 33
 
+/* Android compressed rel/rela sections */
+#define DT_ANDROID_REL (DT_LOOS + 2)
+#define DT_ANDROID_RELSZ (DT_LOOS + 3)
+
+#define DT_ANDROID_RELA (DT_LOOS + 4)
+#define DT_ANDROID_RELASZ (DT_LOOS + 5)
+
+/* gnu hash entry */
+#define DT_GNU_HASH 0x6ffffef5
+
 #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */
 
 #define PT_GNU_RELRO 0x6474e552
@@ -103,10 +178,26 @@
 #define STB_LOPROC    13
 #define STB_HIPROC    15
 
+#define SHT_LOOS    0x60000000
+#define SHT_HIOS    0x6fffffff
+
 #define STT_GNU_IFUNC 10
 #define STT_LOOS      10
 #define STT_HIOS      12
 #define STT_LOPROC    13
 #define STT_HIPROC    15
 
+/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
+#define NT_FPREGSET NT_PRFPREG
+
+#define ELF_NOTE_GNU "GNU"
+
+#define NT_GNU_BUILD_ID 3
+
+#define VER_FLG_BASE 0x1
+#define VER_FLG_WEAK 0x2
+
+#define VER_NDX_LOCAL  0
+#define VER_NDX_GLOBAL 1
+
 #endif /* _ELF_H */
diff --git a/libc/include/errno.h b/libc/include/errno.h
index 1a36b7a..82f4b42 100644
--- a/libc/include/errno.h
+++ b/libc/include/errno.h
@@ -46,6 +46,10 @@
 /* a macro expanding to the errno l-value */
 #define  errno   (*__errno())
 
+#if __ANDROID_API__ < 21
+#include <android/legacy_errno_inlines.h>
+#endif
+
 __END_DECLS
 
 #endif /* _ERRNO_H */
diff --git a/libc/include/error.h b/libc/include/error.h
new file mode 100644
index 0000000..dd12884
--- /dev/null
+++ b/libc/include/error.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _ERROR_H
+#define _ERROR_H 1
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+void error(int, int, const char*, ...) __printflike(3, 4);
+void error_at_line(int, int, const char*, unsigned int, const char*, ...) __printflike(5, 6);
+
+extern void (*error_print_progname)(void);
+extern unsigned int error_message_count;
+extern int error_one_per_line;
+
+__END_DECLS
+
+#endif
diff --git a/libc/include/fcntl.h b/libc/include/fcntl.h
index 794e62c..0f016d7 100644
--- a/libc/include/fcntl.h
+++ b/libc/include/fcntl.h
@@ -33,26 +33,20 @@
 #include <sys/types.h>
 #include <linux/fadvise.h>
 #include <linux/fcntl.h>
+#include <linux/stat.h>
 #include <linux/uio.h>
-#include <unistd.h>  /* this is not required, but makes client code much happier */
 
 __BEGIN_DECLS
 
 #ifdef __LP64__
-/* LP64 kernels don't have flock64 because their flock is 64-bit. */
-struct flock64 {
-  short l_type;
-  short l_whence;
-  off64_t l_start;
-  off64_t l_len;
-  pid_t l_pid;
-};
+/* LP64 kernels don't have F_*64 defines because their flock is 64-bit. */
 #define F_GETLK64  F_GETLK
 #define F_SETLK64  F_SETLK
 #define F_SETLKW64 F_SETLKW
 #endif
 
 #define O_ASYNC FASYNC
+#define O_RSYNC O_SYNC
 
 #define SPLICE_F_MOVE 1
 #define SPLICE_F_NONBLOCK 2
@@ -65,22 +59,29 @@
 
 extern int creat(const char*, mode_t);
 extern int creat64(const char*, mode_t);
-extern int fallocate64(int, int, off64_t, off64_t);
-extern int fallocate(int, int, off_t, off_t);
 extern int fcntl(int, int, ...);
 extern int openat(int, const char*, int, ...);
 extern int openat64(int, const char*, int, ...);
 extern int open(const char*, int, ...);
 extern int open64(const char*, int, ...);
-extern int posix_fadvise64(int, off64_t, off64_t, int);
-extern int posix_fadvise(int, off_t, off_t, int);
-extern int posix_fallocate64(int, off64_t, off64_t);
-extern int posix_fallocate(int, off_t, off_t);
 extern ssize_t splice(int, off64_t*, int, off64_t*, size_t, unsigned int);
 extern ssize_t tee(int, int, size_t, unsigned int);
 extern int unlinkat(int, const char*, int);
 extern ssize_t vmsplice(int, const struct iovec*, size_t, unsigned int);
 
+#if defined(__USE_FILE_OFFSET64)
+extern int fallocate(int, int, off_t, off_t) __RENAME(fallocate64);
+extern int posix_fadvise(int, off_t, off_t, int) __RENAME(posix_fadvise64);
+extern int posix_fallocate(int, off_t, off_t) __RENAME(posix_fallocate);
+#else
+extern int fallocate(int, int, off_t, off_t);
+extern int posix_fadvise(int, off_t, off_t, int);
+extern int posix_fallocate(int, off_t, off_t);
+#endif
+extern int fallocate64(int, int, off64_t, off64_t);
+extern int posix_fadvise64(int, off64_t, off64_t, int);
+extern int posix_fallocate64(int, off64_t, off64_t);
+
 extern int __open_2(const char*, int);
 extern int __open_real(const char*, int, ...) __RENAME(open);
 extern int __openat_2(int, const char*, int);
diff --git a/libc/include/features.h b/libc/include/features.h
index 343c84d..a279c7f 100644
--- a/libc/include/features.h
+++ b/libc/include/features.h
@@ -25,34 +25,11 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _FEATURES_H_
 #define _FEATURES_H_
 
-/* certain Linux-specific programs expect a <features.h> header file
- * that defines various features macros
- */
-
-/* we do include a number of BSD extensions */
-#define  _BSD_SOURCE  1
-
-/* we do include a number of GNU extensions */
-#define  _GNU_SOURCE  1
-
-/* C95 support */
-#undef __USE_ISOC95
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L
-# define __USE_ISOC95   1
-#endif
-
-/* C99 support */
-#undef __USE_ISOC99
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-# define __USE_ISOC99   1
-#endif
-
-/* Posix support */
-#define  __USE_POSIX   1
-#define  __USE_POSIX2  1
-#define  __USE_XPG     1
+/* Our <features.h> macro fun is all in <sys/cdefs.h>. */
+#include <sys/cdefs.h>
 
 #endif /* _FEATURES_H_ */
diff --git a/libc/include/fts.h b/libc/include/fts.h
index da26a88..cde0349 100644
--- a/libc/include/fts.h
+++ b/libc/include/fts.h
@@ -35,6 +35,8 @@
 #ifndef	_FTS_H_
 #define	_FTS_H_
 
+#include <sys/types.h>
+
 typedef struct {
 	struct _ftsent *fts_cur;	/* current node */
 	struct _ftsent *fts_child;	/* linked list of children */
@@ -111,8 +113,6 @@
 	char fts_name[1];		/* file name */
 } FTSENT;
 
-#include <sys/cdefs.h>
-
 __BEGIN_DECLS
 FTSENT	*fts_children(FTS *, int);
 int	 fts_close(FTS *);
diff --git a/libc/include/grp.h b/libc/include/grp.h
index fc4d520..df7a613 100644
--- a/libc/include/grp.h
+++ b/libc/include/grp.h
@@ -54,9 +54,9 @@
 struct group	*getgrgid(gid_t);
 struct group	*getgrnam(const char *);
 #if __POSIX_VISIBLE >= 200112 || __XPG_VISIBLE
-struct group	*getgrent(void);
-void		 setgrent(void);
-void		 endgrent(void);
+struct group	*getgrent(void)  __attribute__((deprecated("getgrent is meaningless on Android")));
+void setgrent(void) __attribute__((deprecated("setgrent is meaningless on Android")));
+void endgrent(void) __attribute__((deprecated("endgrent is meaningless on Android")));
 int		 getgrgid_r(gid_t, struct group *, char *,
 		    size_t, struct group **);
 int		 getgrnam_r(const char *, struct group *, char *,
diff --git a/libc/include/libgen.h b/libc/include/libgen.h
index 9dcec75..e89328e 100644
--- a/libc/include/libgen.h
+++ b/libc/include/libgen.h
@@ -25,6 +25,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _LIBGEN_H
 #define _LIBGEN_H
 
@@ -33,8 +34,18 @@
 
 __BEGIN_DECLS
 
-/* On Android these don't modify their input, and use thread-local storage for their results. */
+#if !defined(__bionic_using_gnu_basename)
+/*
+ * <string.h> gets you the GNU basename.
+ * <libgen.h> the POSIX one.
+ * Note that our "POSIX" one has the wrong argument cv-qualifiers, but doesn't
+ * modify its input and uses thread-local storage for the result if necessary.
+ */
 extern char* basename(const char*);
+#define __bionic_using_posix_basename
+#endif
+
+/* This has the wrong argument cv-qualifiers, but doesn't modify its input and uses thread-local storage for the result if necessary. */
 extern char* dirname(const char*);
 
 #if !defined(__LP64__)
diff --git a/libc/include/limits.h b/libc/include/limits.h
index fb09657..6ae629b 100644
--- a/libc/include/limits.h
+++ b/libc/include/limits.h
@@ -37,39 +37,6 @@
 
 #include <sys/cdefs.h>
 
-#if __POSIX_VISIBLE
-#define	_POSIX_ARG_MAX		4096
-#define	_POSIX_CHILD_MAX	25
-#define	_POSIX_LINK_MAX		8
-#define	_POSIX_MAX_CANON	255
-#define	_POSIX_MAX_INPUT	255
-#define	_POSIX_NAME_MAX		14
-#define	_POSIX_NGROUPS_MAX	0
-#define	_POSIX_OPEN_MAX		16
-#define	_POSIX_PATH_MAX		256
-#define _POSIX_PIPE_BUF		512
-#define	_POSIX_RE_DUP_MAX	255
-#define _POSIX_SSIZE_MAX	32767
-#define _POSIX_STREAM_MAX	8
-#define _POSIX_SYMLINK_MAX	255
-#define _POSIX_SYMLOOP_MAX	8
-#define _POSIX_TZNAME_MAX	3
-
-#define	_POSIX2_BC_BASE_MAX	99
-#define	_POSIX2_BC_DIM_MAX	2048
-#define	_POSIX2_BC_SCALE_MAX	99
-#define	_POSIX2_BC_STRING_MAX	1000
-#define	_POSIX2_COLL_WEIGHTS_MAX	2
-#define	_POSIX2_EXPR_NEST_MAX	32
-#define	_POSIX2_LINE_MAX	2048
-#define	_POSIX2_RE_DUP_MAX	_POSIX_RE_DUP_MAX
-
-#if __POSIX_VISIBLE >= 200112
-#define _POSIX_TTY_NAME_MAX	9	/* includes trailing NUL */
-#define _POSIX_LOGIN_NAME_MAX	9	/* includes trailing NUL */
-#endif /* __POSIX_VISIBLE >= 200112 */
-#endif /* __POSIX_VISIBLE */
-
 #if __XPG_VISIBLE
 #define PASS_MAX		128	/* _PASSWORD_LEN from <pwd.h> */
 
@@ -125,4 +92,10 @@
 /* glibc's PAGE_MASK is the bitwise negation of BSD's! TODO: remove? */
 #define PAGE_MASK (~(PAGE_SIZE - 1))
 
+#define SEM_VALUE_MAX 0x3fffffff
+
+/* POSIX says these belong in <unistd.h> but BSD has some in <limits.h>. */
+#include <machine/posix_limits.h>
+
+#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
 #endif /* !_LIMITS_H_ */
diff --git a/libc/include/machine/endian.h b/libc/include/machine/endian.h
new file mode 100644
index 0000000..ac89519
--- /dev/null
+++ b/libc/include/machine/endian.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _MACHINE_ENDIAN_H_
+#define _MACHINE_ENDIAN_H_
+
+/* This file is for BSD source compatibility only. Use <endian.h> or <sys/endian.h> instead. */
+#include <sys/endian.h>
+
+#endif /* _MACHINE_ENDIAN_H_ */
diff --git a/libc/include/machine/posix_limits.h b/libc/include/machine/posix_limits.h
new file mode 100644
index 0000000..787af5c
--- /dev/null
+++ b/libc/include/machine/posix_limits.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _POSIX_LIMITS_H_
+#define _POSIX_LIMITS_H_
+
+
+/* Any constant values here other than -1 or 200809L are explicitly specified by POSIX.1-2008. */
+/* Keep it sorted. */
+#define _POSIX_ADVISORY_INFO        200809L
+#define _POSIX_AIO_LISTIO_MAX       2
+#define _POSIX_AIO_MAX              1
+#define _POSIX_ARG_MAX              4096
+#define _POSIX_ASYNCHRONOUS_IO      -1  /* not implemented */
+#define _POSIX_BARRIERS             -1  /* not implemented */
+#define _POSIX_CHILD_MAX            25
+#define _POSIX_CHOWN_RESTRICTED     1  /* yes, chown requires appropriate privileges */
+#define _POSIX_CLOCK_SELECTION      200809L
+#define _POSIX_CPUTIME              0  /* Use sysconf to detect support at runtime. */
+#define _POSIX_DELAYTIMER_MAX       32
+#define _POSIX_FSYNC                200809L  /* fdatasync() supported */
+#define _POSIX_HOST_NAME_MAX        255
+#define _POSIX_IPV6                 200809L
+#define _POSIX_JOB_CONTROL          1  /* job control is a Linux feature */
+#define _POSIX_LINK_MAX             8
+#define _POSIX_LOGIN_NAME_MAX       9  /* includes trailing NUL */
+#define _POSIX_MAPPED_FILES         200809L  /* mmap-ed files supported */
+#define _POSIX_MAX_CANON            255
+#define _POSIX_MAX_INPUT            255
+#define _POSIX_MEMLOCK              200809L
+#define _POSIX_MEMLOCK_RANGE        200809L
+#define _POSIX_MEMORY_PROTECTION    200809L
+#define _POSIX_MESSAGE_PASSING      -1  /* not implemented */
+#define _POSIX_MONOTONIC_CLOCK      0  /* the monotonic clock may be available; ask sysconf */
+#define _POSIX_MQ_OPEN_MAX          8
+#define _POSIX_MQ_PRIO_MAX          32
+#define _POSIX_NAME_MAX             14
+#define _POSIX_NGROUPS_MAX          8
+#define _POSIX_NO_TRUNC             1  /* very long pathnames generate an error */
+#define _POSIX_OPEN_MAX             20
+#define _POSIX_PATH_MAX             256
+#define _POSIX_PIPE_BUF             512
+#define _POSIX_PRIORITY_SCHEDULING  200809L  /* priority scheduling is a Linux feature */
+#define _POSIX_PRIORITIZED_IO       -1  /* not implemented */
+#define _POSIX_RAW_SOCKETS          200809L
+#define _POSIX_READER_WRITER_LOCKS  200809L
+#define _POSIX_REALTIME_SIGNALS     200809L
+#define _POSIX_REGEXP               1
+#define _POSIX_RE_DUP_MAX           255
+#define _POSIX_SAVED_IDS            1  /* saved user ids is a Linux feature */
+#define _POSIX_SEMAPHORES           200809L
+#define _POSIX_SEM_NSEMS_MAX        256
+#define _POSIX_SEM_VALUE_MAX        32767
+#define _POSIX_SHARED_MEMORY_OBJECTS  -1  /* shm_open()/shm_unlink() not implemented */
+#define _POSIX_SHELL                1   /* system() supported */
+#define _POSIX_SIGQUEUE_MAX         32
+#define _POSIX_SPAWN                -1  /* not implemented */
+#define _POSIX_SPIN_LOCKS           -1  /* not implemented */
+#define _POSIX_SPORADIC_SERVER      -1  /* not implemented */
+#define _POSIX_SSIZE_MAX            32767
+#define _POSIX_STREAM_MAX           8
+#define _POSIX_SYMLINK_MAX          255
+#define _POSIX_SYMLOOP_MAX          8
+#define _POSIX_SYNCHRONIZED_IO      200809L  /* synchronized i/o supported */
+#define _POSIX_THREADS              200809L  /* we support threads */
+#define _POSIX_THREAD_ATTR_STACKADDR  200809L
+#define _POSIX_THREAD_ATTR_STACKSIZE  200809L
+#define _POSIX_THREAD_CPUTIME       0  /* Use sysconf to detect support at runtime. */
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+#define _POSIX_THREAD_KEYS_MAX      128
+#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
+#define _POSIX_THREAD_PRIO_INHERIT  200809L  /* linux feature */
+#define _POSIX_THREAD_PRIO_PROTECT  200809L  /* linux feature */
+#define _POSIX_THREAD_PROCESS_SHARED  -1  /* not implemented */
+#define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1  /* not implemented */
+#define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1  /* not implemented */
+#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
+#define _POSIX_THREAD_SPORADIC_SERVER -1  /* not implemented */
+#define _POSIX_THREAD_THREADS_MAX   64
+#define _POSIX_TIMEOUTS             200809L
+#define _POSIX_TIMERS               200809L  /* Posix timers are supported */
+#define _POSIX_TIMER_MAX            32
+#define _POSIX_TRACE                -1  /* not implemented */
+#define _POSIX_TRACE_EVENT_FILTER   -1  /* not implemented */
+#define _POSIX_TRACE_INHERIT        -1  /* not implemented */
+#define _POSIX_TRACE_LOG            -1  /* not implemented */
+#define _POSIX_TRACE_NAME_MAX       8
+#define _POSIX_TRACE_SYS_MAX        8
+#define _POSIX_TRACE_USER_EVENT_MAX 32
+#define _POSIX_TTY_NAME_MAX         9  /* includes trailing NUL */
+#define _POSIX_TYPED_MEMORY_OBJECTS -1  /* not implemented */
+#define _POSIX_TZNAME_MAX           6
+#define _POSIX_VDISABLE             '\0'
+
+#if defined(__LP64__)
+#define _POSIX_V7_ILP32_OFF32       -1
+#define _POSIX_V7_ILP32_OFFBIG      -1
+#define _POSIX_V7_LP64_OFF64         1
+#define _POSIX_V7_LPBIG_OFFBIG       1
+#else
+#define _POSIX_V7_ILP32_OFF32        1
+#define _POSIX_V7_ILP32_OFFBIG      -1
+#define _POSIX_V7_LP64_OFF64        -1
+#define _POSIX_V7_LPBIG_OFFBIG      -1
+#endif
+
+#define _POSIX2_BC_BASE_MAX         99
+#define _POSIX2_BC_DIM_MAX          2048
+#define _POSIX2_BC_SCALE_MAX        99
+#define _POSIX2_BC_STRING_MAX       1000
+#define _POSIX2_CHARCLASS_NAME_MAX  14
+#define _POSIX2_CHAR_TERM           -1  /* not implemented */
+#define _POSIX2_COLL_WEIGHTS_MAX    2
+#define _POSIX2_C_BIND              _POSIX_VERSION
+#define _POSIX2_C_DEV               -1  /* c dev utilities not implemented */
+#define _POSIX2_EXPR_NEST_MAX       32
+#define _POSIX2_LINE_MAX            2048
+#define _POSIX2_LOCALEDEF           -1  /* localedef utilitiy not implemented */
+#define _POSIX2_RE_DUP_MAX          _POSIX_RE_DUP_MAX
+#define _POSIX2_SW_DEV              -1  /* software dev utilities not implemented */
+#define _POSIX2_UPE                 -1  /* user portability utilities not implemented */
+
+#define _XOPEN_ENH_I18N             -1  /* we don't support internationalization in the C library */
+#define _XOPEN_CRYPT                -1  /* don't support X/Open Encryption */
+#define _XOPEN_IOV_MAX              16
+#define _XOPEN_LEGACY               -1  /* not support all */
+#define _XOPEN_REALTIME             -1 /* we don't support all these functions */
+#define _XOPEN_REALTIME_THREADS     -1  /* same here */
+#define _XOPEN_SHM                  -1
+#define _XOPEN_UNIX                 1
+
+#endif /* _POSIX_LIMITS_H_ */
diff --git a/libc/include/machine/pthread_types.h b/libc/include/machine/pthread_types.h
new file mode 100644
index 0000000..900541c
--- /dev/null
+++ b/libc/include/machine/pthread_types.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _MACHINE_PTHREAD_TYPES_H_
+#define _MACHINE_PTHREAD_TYPES_H_
+
+#include <sys/types.h>
+
+typedef long pthread_t;
+
+typedef struct {
+  uint32_t flags;
+  void* stack_base;
+  size_t stack_size;
+  size_t guard_size;
+  int32_t sched_policy;
+  int32_t sched_priority;
+#ifdef __LP64__
+  char __reserved[16];
+#endif
+} pthread_attr_t;
+
+#endif /* _MACHINE_PTHREAD_TYPES_H_ */
diff --git a/libc/include/machine/timespec.h b/libc/include/machine/timespec.h
new file mode 100644
index 0000000..11779ae
--- /dev/null
+++ b/libc/include/machine/timespec.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _MACHINE_TIMESPEC_H_
+#define _MACHINE_TIMESPEC_H_
+
+#include <sys/types.h>
+
+/*
+ * This file is used to include timespec definition without introducing the whole
+ * <linux/time.h>, <sys/time.h> or <time.h>.
+ */
+#ifndef _STRUCT_TIMESPEC
+#define _STRUCT_TIMESPEC
+struct timespec {
+  time_t tv_sec;
+  long tv_nsec;
+};
+#endif
+
+#endif /* _MACHINE_TIMESPEC_H_ */
diff --git a/libc/include/malloc.h b/libc/include/malloc.h
index e6ea276..cb1dd3b 100644
--- a/libc/include/malloc.h
+++ b/libc/include/malloc.h
@@ -24,6 +24,7 @@
  */
 #include <sys/cdefs.h>
 #include <stddef.h>
+#include <stdio.h>
 
 __BEGIN_DECLS
 
@@ -53,6 +54,27 @@
 
 extern struct mallinfo mallinfo(void);
 
+/*
+ * XML structure for malloc_info(3) is in the following format:
+ *
+ * <malloc version="jemalloc-1">
+ *   <heap nr="INT">
+ *     <allocated-large>INT</allocated-large>
+ *     <allocated-huge>INT</allocated-huge>
+ *     <allocated-bins>INT</allocated-bins>
+ *     <bins-total>INT</bins-total>
+ *     <bin nr="INT">
+ *       <allocated>INT</allocated>
+ *       <nmalloc>INT</nmalloc>
+ *       <ndalloc>INT</ndalloc>
+ *     </bin>
+ *     <!-- more bins -->
+ *   </heap>
+ *   <!-- more heaps -->
+ * </malloc>
+ */
+extern int malloc_info(int, FILE *);
+
 __END_DECLS
 
 #endif  /* LIBC_INCLUDE_MALLOC_H_ */
diff --git a/libc/include/net/ethernet.h b/libc/include/net/ethernet.h
index b1b88dd..47858b3 100644
--- a/libc/include/net/ethernet.h
+++ b/libc/include/net/ethernet.h
@@ -25,8 +25,11 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _NET_ETHERNET_H_
-#define _NET_IF_ETHERNET_H_
+#define _NET_ETHERNET_H_
+
 #include <linux/if_ether.h>
 #include <net/if_ether.h>
-#endif /* !_NET_ETHERNET_H_ */
+
+#endif
diff --git a/libc/include/net/if.h b/libc/include/net/if.h
index f36f37e..0efbf7f 100644
--- a/libc/include/net/if.h
+++ b/libc/include/net/if.h
@@ -26,9 +26,13 @@
  * SUCH DAMAGE.
  */
 
+#ifndef _NET_IF_H_
+#define _NET_IF_H_
+
 #include <sys/socket.h>
 #include <linux/if.h>
 #include <sys/cdefs.h>
+
 #ifndef IF_NAMESIZE
 #define IF_NAMESIZE IFNAMSIZ
 #endif
@@ -42,3 +46,5 @@
 extern char*        if_indextoname(unsigned ifindex, char *ifname);
 
 __END_DECLS
+
+#endif
diff --git a/libc/include/net/if_types.h b/libc/include/net/if_types.h
index f0a04f7..eff6d53 100644
--- a/libc/include/net/if_types.h
+++ b/libc/include/net/if_types.h
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_types.h,v 1.24 2005/12/10 23:21:38 elad Exp $	*/
+/*	$NetBSD: if_types.h,v 1.26 2012/08/05 21:21:41 wiz Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993, 1994
@@ -249,7 +249,7 @@
 #define IFT_DOCSCABLEUPSTREAMCHANNEL 0xcd /* CATV Upstream Channel */
 #define IFT_ECONET		   0xce /* Acorn Econet */
 #define IFT_PON155		   0xcf /* FSAN 155Mb Symetrical PON interface */
-#define IFT_PON622		   0xd0 /* FSAN 622Mb Symetrical PON interface */*/
+#define IFT_PON622		   0xd0 /* FSAN 622Mb Symetrical PON interface */
 #define IFT_BRIDGE		   0xd1 /* Transparent bridge interface */
 #define IFT_LINEGROUP		   0xd2 /* Interface common to multiple lines */
 #define IFT_VOICEEMFGD		   0xd3 /* voice E&M Feature Group D */
@@ -263,5 +263,6 @@
 #define IFT_FAITH	0xf2
 #define IFT_PFLOG	0xf5		/* Packet filter logging */
 #define IFT_PFSYNC	0xf6		/* Packet filter state syncing */
+#define IFT_CARP	0xf8		/* Common Address Redundancy Protocol */
 
 #endif /* !_NET_IF_TYPES_H_ */
diff --git a/libc/include/net/route.h b/libc/include/net/route.h
index a60df24..326fbe7 100644
--- a/libc/include/net/route.h
+++ b/libc/include/net/route.h
@@ -1 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _NET_ROUTE_H_
+#define _NET_ROUTE_H_
+
+#include <sys/socket.h>
 #include <linux/route.h>
+#include <linux/in6.h>
+#include <linux/ipv6_route.h>
+
+#endif
diff --git a/libc/include/netdb.h b/libc/include/netdb.h
index 527d5c1..3bb973c 100644
--- a/libc/include/netdb.h
+++ b/libc/include/netdb.h
@@ -73,9 +73,6 @@
 #define	_PATH_PROTOCOLS	"/system/etc/protocols"
 #define	_PATH_SERVICES	"/system/etc/services"
 
-#define  MAXHOSTNAMELEN  256
-
-
 /*
  * Structures returned by network data base library.  All addresses are
  * supplied in host order, and returned in network order (suitable for
@@ -209,7 +206,7 @@
 void endservent(void);
 void freehostent(struct hostent *);
 struct hostent	*gethostbyaddr(const void *, socklen_t, int);
-int gethostbyaddr_r(const void *, int, int, struct hostent *, char *, size_t, struct hostent **, int *);
+int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
 struct hostent	*gethostbyname(const char *);
 int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
 struct hostent	*gethostbyname2(const char *, int);
diff --git a/libc/include/pathconf.h b/libc/include/pathconf.h
deleted file mode 100644
index 94f9787..0000000
--- a/libc/include/pathconf.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 _PATHCONF_H_
-#define _PATHCONF_H_
-
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-
-/* constants to be used for the 'name' paremeter of pathconf/fpathconf */
-
-#define  _PC_FILESIZEBITS       0x0000
-#define  _PC_LINK_MAX           0x0001
-#define  _PC_MAX_CANON          0x0002
-#define  _PC_MAX_INPUT          0x0003
-#define  _PC_NAME_MAX           0x0004
-#define  _PC_PATH_MAX           0x0005
-#define  _PC_PIPE_BUF           0x0006
-#define  _PC_2_SYMLINKS         0x0007
-#define  _PC_ALLOC_SIZE_MIN     0x0008
-#define  _PC_REC_INCR_XFER_SIZE 0x0009
-#define  _PC_REC_MAX_XFER_SIZE  0x000a
-#define  _PC_REC_MIN_XFER_SIZE  0x000b
-#define  _PC_REC_XFER_ALIGN     0x000c
-#define  _PC_SYMLINK_MAX        0x000d
-#define  _PC_CHOWN_RESTRICTED   0x000e
-#define  _PC_NO_TRUNC           0x000f
-#define  _PC_VDISABLE           0x0010
-#define  _PC_ASYNC_IO           0x0011
-#define  _PC_PRIO_IO            0x0012
-#define  _PC_SYNC_IO            0x0013
-
-extern long fpathconf(int fildes, int name);
-extern long pathconf(const char *path, int name);
-
-__END_DECLS
-
-#endif /* _PATHCONF_H_ */
-
diff --git a/libc/include/paths.h b/libc/include/paths.h
index a72162f..82c2804 100644
--- a/libc/include/paths.h
+++ b/libc/include/paths.h
@@ -32,43 +32,13 @@
 #ifndef _PATHS_H_
 #define	_PATHS_H_
 
-/* Default search path. */
-#define	_PATH_DEFPATH	"/usr/bin:/bin"
-/* All standard utilities path. */
-#define	_PATH_STDPATH \
-	"/usr/bin:/bin:/usr/sbin:/sbin"
-
 #define	_PATH_BSHELL	"/system/bin/sh"
 #define	_PATH_CONSOLE	"/dev/console"
-#define	_PATH_CSHELL	"/bin/csh"
-#define	_PATH_DEVDB	"/var/run/dev.db"
-#define	_PATH_DEVNULL	"/dev/null"
-#define	_PATH_DRUM	"/dev/drum"
-#define	_PATH_KLOG	"/proc/kmsg"
-#define	_PATH_KMEM	"/dev/kmem"
-#define	_PATH_LASTLOG	"/var/log/lastlog"
-#define	_PATH_MAILDIR	"/var/mail"
-#define	_PATH_MAN	"/usr/share/man"
-#define	_PATH_MEM	"/dev/mem"
-#define	_PATH_MNTTAB	"/etc/fstab"
-#define	_PATH_MOUNTED	"/etc/mtab"
-#define	_PATH_NOLOGIN	"/etc/nologin"
-#define	_PATH_PRESERVE	"/var/lib"
-#define	_PATH_RWHODIR	"/var/spool/rwho"
-#define	_PATH_SENDMAIL	"/usr/sbin/sendmail"
-#define	_PATH_SHADOW	"/etc/shadow"
-#define	_PATH_SHELLS	"/etc/shells"
-#define	_PATH_TTY	"/dev/tty"
-#define	_PATH_UNIX	"/boot/vmlinux"
-#define _PATH_UTMP	"/var/run/utmp"
-#define	_PATH_VI	"/bin/vi"
-#define _PATH_WTMP	"/var/log/wtmp"
-
-/* Provide trailing slash, since mostly used for building pathnames. */
+#define	_PATH_DEFPATH	"/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin"
 #define	_PATH_DEV	"/dev/"
-#define	_PATH_TMP	"/tmp/"
-#define	_PATH_VARDB	"/var/db/"
-#define	_PATH_VARRUN	"/var/run/"
-#define	_PATH_VARTMP	"/var/tmp/"
+#define	_PATH_DEVNULL	"/dev/null"
+#define	_PATH_KLOG	"/proc/kmsg"
+#define	_PATH_MOUNTED	"/proc/mounts"
+#define	_PATH_TTY	"/dev/tty"
 
 #endif /* !_PATHS_H_ */
diff --git a/libc/include/poll.h b/libc/include/poll.h
index 0199cab..7c16d81 100644
--- a/libc/include/poll.h
+++ b/libc/include/poll.h
@@ -38,8 +38,52 @@
 
 typedef unsigned int nfds_t;
 
-extern int poll(struct pollfd*, nfds_t, int);
-extern int ppoll(struct pollfd*, nfds_t, const struct timespec*, const sigset_t*);
+int poll(struct pollfd*, nfds_t, int);
+int ppoll(struct pollfd*, nfds_t, const struct timespec*, const sigset_t*);
+
+int __poll_chk(struct pollfd*, nfds_t, int, size_t);
+int __poll_real(struct pollfd*, nfds_t, int) __RENAME(poll);
+__errordecl(__poll_too_small_error, "poll: pollfd array smaller than fd count");
+
+int __ppoll_chk(struct pollfd*, nfds_t, const struct timespec*, const sigset_t*, size_t);
+int __ppoll_real(struct pollfd*, nfds_t, const struct timespec*, const sigset_t*) __RENAME(ppoll);
+__errordecl(__ppoll_too_small_error, "ppoll: pollfd array smaller than fd count");
+
+#if defined(__BIONIC_FORTIFY)
+
+__BIONIC_FORTIFY_INLINE
+int poll(struct pollfd* fds, nfds_t fd_count, int timeout) {
+#if defined(__clang__)
+  return __poll_chk(fds, fd_count, timeout, __bos(fds));
+#else
+  if (__bos(fds) != __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+    if (!__builtin_constant_p(fd_count)) {
+      return __poll_chk(fds, fd_count, timeout, __bos(fds));
+    } else if (__bos(fds) / sizeof(*fds) < fd_count) {
+      __poll_too_small_error();
+    }
+  }
+  return __poll_real(fds, fd_count, timeout);
+#endif
+}
+
+__BIONIC_FORTIFY_INLINE
+int ppoll(struct pollfd* fds, nfds_t fd_count, const struct timespec* timeout, const sigset_t* mask) {
+#if defined(__clang__)
+  return __ppoll_chk(fds, fd_count, timeout, mask, __bos(fds));
+#else
+  if (__bos(fds) != __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+    if (!__builtin_constant_p(fd_count)) {
+      return __ppoll_chk(fds, fd_count, timeout, mask, __bos(fds));
+    } else if (__bos(fds) / sizeof(*fds) < fd_count) {
+      __ppoll_too_small_error();
+    }
+  }
+  return __ppoll_real(fds, fd_count, timeout, mask);
+#endif
+}
+
+#endif
 
 __END_DECLS
 
diff --git a/libc/include/pthread.h b/libc/include/pthread.h
index c32890b..26d68e4 100644
--- a/libc/include/pthread.h
+++ b/libc/include/pthread.h
@@ -29,32 +29,22 @@
 #ifndef _PTHREAD_H_
 #define _PTHREAD_H_
 
-#include <time.h>
-#include <signal.h>
-#include <sched.h>
 #include <limits.h>
+#include <machine/pthread_types.h>
+#include <sched.h>
+#include <sys/cdefs.h>
 #include <sys/types.h>
-
-#if defined(__LP64__)
-  #define __RESERVED_INITIALIZER , {0}
-#else
-  #define __RESERVED_INITIALIZER
-#endif
+#include <time.h>
 
 typedef struct {
-  int volatile value;
-#ifdef __LP64__
-  char __reserved[36];
+#if defined(__LP64__)
+  int32_t __private[10];
+#else
+  int32_t __private[1];
 #endif
 } pthread_mutex_t;
 
-#define  __PTHREAD_MUTEX_INIT_VALUE            0
-#define  __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE  0x4000
-#define  __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
-
-#define  PTHREAD_MUTEX_INITIALIZER             {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-#define  PTHREAD_RECURSIVE_MUTEX_INITIALIZER   {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-#define  PTHREAD_ERRORCHECK_MUTEX_INITIALIZER  {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
+typedef long pthread_mutexattr_t;
 
 enum {
     PTHREAD_MUTEX_NORMAL = 0,
@@ -67,60 +57,42 @@
     PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
 };
 
+#define PTHREAD_MUTEX_INITIALIZER { { ((PTHREAD_MUTEX_NORMAL & 3) << 14) } }
+#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP { { ((PTHREAD_MUTEX_RECURSIVE & 3) << 14) } }
+#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP { { ((PTHREAD_MUTEX_ERRORCHECK & 3) << 14) } }
+
 typedef struct {
-  int volatile value;
-#ifdef __LP64__
-  char __reserved[44];
+#if defined(__LP64__)
+  int32_t __private[12];
+#else
+  int32_t __private[1];
 #endif
 } pthread_cond_t;
 
-#define PTHREAD_COND_INITIALIZER  {0 __RESERVED_INITIALIZER}
+typedef long pthread_condattr_t;
+
+#define PTHREAD_COND_INITIALIZER  { { 0 } }
 
 typedef struct {
-  uint32_t flags;
-  void* stack_base;
-  size_t stack_size;
-  size_t guard_size;
-  int32_t sched_policy;
-  int32_t sched_priority;
-#ifdef __LP64__
-  char __reserved[16];
+#if defined(__LP64__)
+  int32_t __private[14];
+#else
+  int32_t __private[10];
 #endif
-} pthread_attr_t;
-
-typedef long pthread_mutexattr_t;
-typedef long pthread_condattr_t;
+} pthread_rwlock_t;
 
 typedef long pthread_rwlockattr_t;
 
-typedef struct {
-#if !defined(__LP64__)
-  pthread_mutex_t __unused_lock;
-  pthread_cond_t __unused_cond;
-#endif
-  volatile int32_t state; // 0=unlock, -1=writer lock, +n=reader lock
-  volatile int32_t writer_thread_id;
-  volatile int32_t pending_readers;
-  volatile int32_t pending_writers;
-  int32_t attr;
-#ifdef __LP64__
-  char __reserved[36];
-#else
-  char __reserved[12];
-#endif
+#define PTHREAD_RWLOCK_INITIALIZER  { { 0 } }
 
-} pthread_rwlock_t;
-
-#ifdef __LP64__
-  #define PTHREAD_RWLOCK_INITIALIZER  { 0, 0, 0, 0, 0, { 0 } }
-#else
-  #define PTHREAD_RWLOCK_INITIALIZER  { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0, 0, 0, 0, { 0 } }
-#endif
+enum {
+  PTHREAD_RWLOCK_PREFER_READER_NP = 0,
+  PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP = 1,
+};
 
 typedef int pthread_key_t;
-typedef long pthread_t;
 
-typedef volatile int pthread_once_t;
+typedef int pthread_once_t;
 
 #define PTHREAD_ONCE_INIT 0
 
@@ -195,8 +167,6 @@
 int pthread_key_create(pthread_key_t*, void (*)(void*)) __nonnull((1));
 int pthread_key_delete(pthread_key_t);
 
-int pthread_kill(pthread_t, int);
-
 int pthread_mutexattr_destroy(pthread_mutexattr_t*) __nonnull((1));
 int pthread_mutexattr_getpshared(const pthread_mutexattr_t*, int*) __nonnull((1, 2));
 int pthread_mutexattr_gettype(const pthread_mutexattr_t*, int*) __nonnull((1, 2));
@@ -206,17 +176,19 @@
 
 int pthread_mutex_destroy(pthread_mutex_t*) __nonnull((1));
 int pthread_mutex_init(pthread_mutex_t*, const pthread_mutexattr_t*) __nonnull((1));
-int pthread_mutex_lock(pthread_mutex_t*) /* __nonnull((1)) */;
+int pthread_mutex_lock(pthread_mutex_t*) __nonnull((1));
 int pthread_mutex_timedlock(pthread_mutex_t*, const struct timespec*) __nonnull((1, 2));
 int pthread_mutex_trylock(pthread_mutex_t*) __nonnull((1));
-int pthread_mutex_unlock(pthread_mutex_t*) /* __nonnull((1)) */;
+int pthread_mutex_unlock(pthread_mutex_t*) __nonnull((1));
 
 int pthread_once(pthread_once_t*, void (*)(void)) __nonnull((1, 2));
 
+int pthread_rwlockattr_init(pthread_rwlockattr_t*) __nonnull((1));
 int pthread_rwlockattr_destroy(pthread_rwlockattr_t*) __nonnull((1));
 int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t*, int*) __nonnull((1, 2));
-int pthread_rwlockattr_init(pthread_rwlockattr_t*) __nonnull((1));
 int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int) __nonnull((1));
+int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t*, int*) __nonnull((1, 2));
+int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t*, int) __nonnull((1));
 
 int pthread_rwlock_destroy(pthread_rwlock_t*) __nonnull((1));
 int pthread_rwlock_init(pthread_rwlock_t*, const pthread_rwlockattr_t*) __nonnull((1));
@@ -236,8 +208,6 @@
 
 int pthread_setspecific(pthread_key_t, const void*);
 
-int pthread_sigmask(int, const sigset_t*, sigset_t*);
-
 typedef void (*__pthread_cleanup_func_t)(void*);
 
 typedef struct __pthread_cleanup_t {
diff --git a/libc/include/pty.h b/libc/include/pty.h
new file mode 100644
index 0000000..bca1137
--- /dev/null
+++ b/libc/include/pty.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _PTY_H
+#define _PTY_H
+
+#include <sys/cdefs.h>
+
+#include <termios.h>
+#include <sys/ioctl.h>
+
+__BEGIN_DECLS
+
+int openpty(int*, int*, char*, const struct termios*, const struct winsize*);
+int forkpty(int*, char*, const struct termios*, const struct winsize*);
+
+__END_DECLS
+
+#endif /* _PTY_H */
diff --git a/libc/include/pwd.h b/libc/include/pwd.h
index 6d483c0..6012b96 100644
--- a/libc/include/pwd.h
+++ b/libc/include/pwd.h
@@ -119,10 +119,6 @@
 int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);
 int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);
 
-void endpwent(void);
-struct passwd* getpwent(void);
-int setpwent(void);
-
 __END_DECLS
 
 #endif
diff --git a/libc/include/sched.h b/libc/include/sched.h
index e43b6cc..930dd7c 100644
--- a/libc/include/sched.h
+++ b/libc/include/sched.h
@@ -28,10 +28,9 @@
 #ifndef _SCHED_H_
 #define _SCHED_H_
 
-#include <sys/cdefs.h>
-#include <sys/time.h>
-
 #include <linux/sched.h>
+#include <machine/timespec.h>
+#include <sys/cdefs.h>
 
 __BEGIN_DECLS
 
@@ -39,9 +38,8 @@
 #define SCHED_OTHER SCHED_NORMAL
 
 struct sched_param {
-  int __sched_priority;
+  int sched_priority;
 };
-#define sched_priority __sched_priority
 
 extern int sched_setscheduler(pid_t, int, const struct sched_param*);
 extern int sched_getscheduler(pid_t);
@@ -52,7 +50,7 @@
 extern int sched_getparam(pid_t, struct sched_param*);
 extern int sched_rr_get_interval(pid_t, struct timespec*);
 
-#ifdef _GNU_SOURCE
+#if defined(__USE_GNU)
 
 extern int clone(int (*)(void*), void*, int, void*, ...);
 extern int unshare(int);
@@ -146,7 +144,7 @@
 
 extern int __sched_cpucount(size_t setsize, cpu_set_t* set);
 
-#endif /* _GNU_SOURCE */
+#endif /* __USE_GNU */
 
 __END_DECLS
 
diff --git a/libc/include/semaphore.h b/libc/include/semaphore.h
index 7ae3c3a..4ef13af 100644
--- a/libc/include/semaphore.h
+++ b/libc/include/semaphore.h
@@ -25,6 +25,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SEMAPHORE_H
 #define _SEMAPHORE_H
 
@@ -32,8 +33,10 @@
 
 __BEGIN_DECLS
 
+struct timespec;
+
 typedef struct {
-  volatile unsigned int count;
+  unsigned int count;
 #ifdef __LP64__
   int __reserved[3];
 #endif
@@ -41,20 +44,18 @@
 
 #define SEM_FAILED NULL
 
-extern int sem_init(sem_t *sem, int pshared, unsigned int value);
+int sem_destroy(sem_t*);
+int sem_getvalue(sem_t*, int*);
+int sem_init(sem_t*, int, unsigned int);
+int sem_post(sem_t*);
+int sem_timedwait(sem_t*, const struct timespec*);
+int sem_trywait(sem_t*);
+int sem_wait(sem_t*);
 
-extern int    sem_close(sem_t *);
-extern int    sem_destroy(sem_t *);
-extern int    sem_getvalue(sem_t *, int *);
-extern int    sem_init(sem_t *, int, unsigned int);
-extern sem_t *sem_open(const char *, int, ...);
-extern int    sem_post(sem_t *);
-extern int    sem_trywait(sem_t *);
-extern int    sem_unlink(const char *);
-extern int    sem_wait(sem_t *);
-
-struct timespec;
-extern int    sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
+/* These aren't actually implemented. */
+sem_t* sem_open(const char*, int, ...);
+int sem_close(sem_t*);
+int sem_unlink(const char*);
 
 __END_DECLS
 
diff --git a/libc/include/signal.h b/libc/include/signal.h
index e23e65b..554e0ac 100644
--- a/libc/include/signal.h
+++ b/libc/include/signal.h
@@ -29,12 +29,12 @@
 #ifndef _SIGNAL_H_
 #define _SIGNAL_H_
 
-#include <errno.h>
-#include <sys/cdefs.h>
-#include <limits.h>		/* For LONG_BIT */
-#include <string.h>		/* For memset() */
-#include <sys/types.h>
 #include <asm/sigcontext.h>
+#include <limits.h>
+#include <machine/pthread_types.h>
+#include <machine/timespec.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
 
 #if defined(__LP64__) || defined(__mips__)
 /* For 64-bit (and mips), the kernel's struct sigaction doesn't match the POSIX one,
@@ -105,15 +105,15 @@
 
 extern int sigaction(int, const struct sigaction*, struct sigaction*);
 
-extern sighandler_t signal(int, sighandler_t);
+_BIONIC_NOT_BEFORE_21(extern sighandler_t signal(int, sighandler_t);)
 
 extern int siginterrupt(int, int);
 
-extern int sigaddset(sigset_t*, int);
-extern int sigdelset(sigset_t*, int);
-extern int sigemptyset(sigset_t*);
-extern int sigfillset(sigset_t*);
-extern int sigismember(const sigset_t*, int);
+_BIONIC_NOT_BEFORE_21(extern int sigaddset(sigset_t*, int);)
+_BIONIC_NOT_BEFORE_21(extern int sigdelset(sigset_t*, int);)
+_BIONIC_NOT_BEFORE_21(extern int sigemptyset(sigset_t*);)
+_BIONIC_NOT_BEFORE_21(extern int sigfillset(sigset_t*);)
+_BIONIC_NOT_BEFORE_21(extern int sigismember(const sigset_t*, int);)
 
 extern int sigpending(sigset_t*) __nonnull((1));
 extern int sigprocmask(int, const sigset_t*, sigset_t*);
@@ -129,6 +129,17 @@
 extern void psiginfo(const siginfo_t*, const char*);
 extern void psignal(int, const char*);
 
+extern int pthread_kill(pthread_t, int);
+extern int pthread_sigmask(int, const sigset_t*, sigset_t*);
+
+extern int sigqueue(pid_t, int, const union sigval);
+extern int sigtimedwait(const sigset_t*, siginfo_t*, const struct timespec*);
+extern int sigwaitinfo(const sigset_t*, siginfo_t*);
+
+#if __ANDROID_API__ < 21
+#include <android/legacy_signal_inlines.h>
+#endif
+
 __END_DECLS
 
 #endif /* _SIGNAL_H_ */
diff --git a/libc/include/stdatomic.h b/libc/include/stdatomic.h
index 58cb1bc..2c4f1ce 100644
--- a/libc/include/stdatomic.h
+++ b/libc/include/stdatomic.h
@@ -32,6 +32,12 @@
 
 #include <sys/cdefs.h>
 
+#if defined(__GNUC__) && !defined(__GNUC_PREREQ)
+/* Duplicate definition here, since the mingw sys/cdefs.h omits the  */
+/* definition, and this needs to be usable there.                    */
+#define	__GNUC_PREREQ(x, y)    \
+	((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || (__GNUC__ > (x)))
+#endif /* __GNUC__ && ... */
 
 #if defined(__cplusplus) && __cplusplus >= 201103L && defined(_USING_LIBCXX)
 # ifdef __clang__
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index a0161de..f5ed652 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -38,6 +38,14 @@
 #ifndef	_STDIO_H_
 #define	_STDIO_H_
 
+/*
+ * This file must contain a reference to __gnuc_va_list so that GCC's
+ * fixincludes knows that that's what's being used for va_list, and so
+ * to leave our <stdio.h> alone. (fixincludes gets in the way of pointing
+ * one toolchain at various different sets of platform headers.)
+ * If you alter this comment, be sure to keep "__gnuc_va_list" in it!
+ */
+
 #include <sys/cdefs.h>
 #include <sys/types.h>
 
@@ -49,8 +57,6 @@
 
 __BEGIN_DECLS
 
-#define	_FSTDIO			/* Define for new stdio with functions. */
-
 typedef off_t fpos_t;		/* stdio file position type */
 
 /*
@@ -138,7 +144,16 @@
 	fpos_t	_offset;	/* current lseek offset */
 } FILE;
 
+/* Legacy BSD implementation of stdin/stdout/stderr. */
 extern FILE __sF[];
+/* More obvious implementation. */
+extern FILE* stdin;
+extern FILE* stdout;
+extern FILE* stderr;
+/* C99 and earlier plus current C++ standards say these must be macros. */
+#define stdin stdin
+#define stdout stdout
+#define stderr stderr
 
 #define	__SLBF	0x0001		/* line buffered */
 #define	__SNBF	0x0002		/* unbuffered */
@@ -190,20 +205,9 @@
 #define	L_tmpnam	1024	/* XXX must be == PATH_MAX */
 #define	TMP_MAX		308915776
 
-/* Always ensure that these are consistent with <fcntl.h> and <unistd.h>! */
-#ifndef SEEK_SET
-#define	SEEK_SET	0	/* set file offset to offset */
-#endif
-#ifndef SEEK_CUR
-#define	SEEK_CUR	1	/* set file offset to current plus offset */
-#endif
-#ifndef SEEK_END
-#define	SEEK_END	2	/* set file offset to EOF plus offset */
-#endif
-
-#define	stdin	(&__sF[0])
-#define	stdout	(&__sF[1])
-#define	stderr	(&__sF[2])
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
 
 /*
  * Functions defined in ANSI C standard.
@@ -260,27 +264,38 @@
 
 #ifndef __AUDIT__
 #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
-char* gets(char*) __warnattr("gets is very unsafe; consider using fgets");
+char* gets(char*) __attribute__((deprecated("gets is unsafe, use fgets instead")));
 #endif
 int sprintf(char* __restrict, const char* __restrict, ...)
     __printflike(2, 3) __warnattr("sprintf is often misused; please use snprintf");
-char* tmpnam(char*) __warnattr("tmpnam possibly used unsafely; consider using mkstemp");
 int vsprintf(char* __restrict, const char* __restrict, __va_list)
     __printflike(2, 0) __warnattr("vsprintf is often misused; please use vsnprintf");
+char* tmpnam(char*) __attribute__((deprecated("tmpnam is unsafe, use mkstemp or tmpfile instead")));
 #if __XPG_VISIBLE
 char* tempnam(const char*, const char*)
-    __warnattr("tempnam possibly used unsafely; consider using mkstemp");
+    __attribute__((deprecated("tempnam is unsafe, use mkstemp or tmpfile instead")));
 #endif
 #endif
 
 extern int rename(const char*, const char*);
 extern int renameat(int, const char*, int, const char*);
 
+#if defined(__USE_FILE_OFFSET64)
+/* Not possible. */
+int	 fgetpos(FILE * __restrict, fpos_t * __restrict)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+int	 fsetpos(FILE *, const fpos_t *)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+int	 fseeko(FILE *, off_t, int)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+off_t	 ftello(FILE *)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+#else
 int	 fgetpos(FILE * __restrict, fpos_t * __restrict);
 int	 fsetpos(FILE *, const fpos_t *);
-
 int	 fseeko(FILE *, off_t, int);
 off_t	 ftello(FILE *);
+#endif
 
 #if __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE
 int	 snprintf(char * __restrict, size_t, const char * __restrict, ...)
@@ -324,6 +339,11 @@
 int	 putchar_unlocked(int);
 #endif /* __POSIX_VISIBLE >= 199506 */
 
+#if __POSIX_VISIBLE >= 200809
+FILE* fmemopen(void*, size_t, const char*);
+FILE* open_memstream(char**, size_t*);
+#endif /* __POSIX_VISIBLE >= 200809 */
+
 #endif /* __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE */
 
 /*
@@ -340,6 +360,10 @@
     __va_list)
 		__printflike(2, 0);
 
+void clearerr_unlocked(FILE*);
+int feof_unlocked(FILE*);
+int ferror_unlocked(FILE*);
+
 /*
  * Stdio function-access interface.
  */
diff --git a/libc/include/stdio_ext.h b/libc/include/stdio_ext.h
new file mode 100644
index 0000000..f299e54
--- /dev/null
+++ b/libc/include/stdio_ext.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _STDIO_EXT_H
+#define _STDIO_EXT_H
+
+#include <sys/cdefs.h>
+#include <stdio.h>
+
+#define FSETLOCKING_QUERY 0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+__BEGIN_DECLS
+
+size_t __fbufsize(FILE*);
+int __freading(FILE*);
+int __fwriting(FILE*);
+int __freadable(FILE*);
+int __fwritable(FILE*);
+int __flbf(FILE*);
+void __fpurge(FILE*);
+size_t __fpending(FILE*);
+void _flushlbf(void);
+int __fsetlocking(FILE*, int);
+
+__END_DECLS
+
+#endif /* _STDIO_EXT_H */
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 52f371b..efca577 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -25,16 +25,16 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#ifndef _STDLIB_H_
-#define _STDLIB_H_
+
+#ifndef _STDLIB_H
+#define _STDLIB_H
 
 #include <sys/cdefs.h>
+#include <xlocale.h>
 
-#include <stddef.h>
-#include <string.h>
 #include <alloca.h>
-#include <strings.h>
-#include <memory.h>
+#include <malloc.h>
+#include <stddef.h>
 
 __BEGIN_DECLS
 
@@ -58,9 +58,16 @@
 extern int clearenv(void);
 
 extern char* mkdtemp(char*);
-extern char* mktemp(char*) __warnattr("mktemp possibly used unsafely; consider using mkstemp");
-extern int mkstemp(char*);
+extern char* mktemp(char*) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+
+extern int mkostemp64(char*, int);
+extern int mkostemp(char*, int);
+extern int mkostemps64(char*, int, int);
+extern int mkostemps(char*, int, int);
 extern int mkstemp64(char*);
+extern int mkstemp(char*);
+extern int mkstemps64(char*, int);
+extern int mkstemps(char*, int);
 
 extern long strtol(const char *, char **, int);
 extern long long strtoll(const char *, char **, int);
@@ -69,10 +76,10 @@
 
 extern int posix_memalign(void **memptr, size_t alignment, size_t size);
 
-extern double atof(const char*);
+_BIONIC_NOT_BEFORE_21(extern double atof(const char*);)
 
 extern double strtod(const char*, char**) __LIBC_ABI_PUBLIC__;
-extern float strtof(const char*, char**) __LIBC_ABI_PUBLIC__;
+_BIONIC_NOT_BEFORE_21(extern float strtof(const char*, char**) __LIBC_ABI_PUBLIC__;)
 extern long double strtold(const char*, char**) __LIBC_ABI_PUBLIC__;
 
 extern long double strtold_l(const char *, char **, locale_t) __LIBC_ABI_PUBLIC__;
@@ -83,12 +90,12 @@
 extern long atol(const char*) __purefunc;
 extern long long atoll(const char*) __purefunc;
 
-extern int abs(int) __pure2;
-extern long labs(long) __pure2;
-extern long long llabs(long long) __pure2;
+_BIONIC_NOT_BEFORE_21(extern int abs(int) __pure2;)
+_BIONIC_NOT_BEFORE_21(extern long labs(long) __pure2;)
+_BIONIC_NOT_BEFORE_21(extern long long llabs(long long) __pure2;)
 
 extern char * realpath(const char *path, char *resolved);
-extern int system(const char * string);
+extern int system(const char *string);
 
 extern void * bsearch(const void *key, const void *base0,
 	size_t nmemb, size_t size,
@@ -96,34 +103,35 @@
 
 extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
 
-extern long jrand48(unsigned short *);
-extern long mrand48(void);
-extern long nrand48(unsigned short *);
-extern long lrand48(void);
-extern unsigned short *seed48(unsigned short*);
-extern double erand48(unsigned short xsubi[3]);
-extern double drand48(void);
-extern void srand48(long);
-
-unsigned int arc4random(void);
-unsigned int arc4random_uniform(unsigned int);
+uint32_t arc4random(void);
+uint32_t arc4random_uniform(uint32_t);
 void arc4random_buf(void*, size_t);
 
 #define RAND_MAX 0x7fffffff
 
-int rand(void);
+_BIONIC_NOT_BEFORE_21(int rand(void);)
 int rand_r(unsigned int*);
-void srand(unsigned int);
+_BIONIC_NOT_BEFORE_21(void srand(unsigned int);)
+
+double drand48(void);
+double erand48(unsigned short[3]);
+long jrand48(unsigned short[3]);
+void lcong48(unsigned short[7]);
+long lrand48(void);
+long mrand48(void);
+long nrand48(unsigned short[3]);
+unsigned short* seed48(unsigned short[3]);
+void srand48(long);
 
 char* initstate(unsigned int, char*, size_t);
-long random(void);
+_BIONIC_NOT_BEFORE_21(long random(void);)
 char* setstate(char*);
-void srandom(unsigned int);
+_BIONIC_NOT_BEFORE_21(void srandom(unsigned int);)
 
 int getpt(void);
-int grantpt(int);
+_BIONIC_NOT_BEFORE_21(int grantpt(int);)
 int posix_openpt(int);
-char* ptsname(int) __warnattr("ptsname is not thread-safe; use ptsname_r instead");
+char* ptsname(int);
 int ptsname_r(int, char*, size_t);
 int unlockpt(int);
 
@@ -164,6 +172,31 @@
 extern size_t __ctype_get_mb_cur_max(void);
 #define MB_CUR_MAX __ctype_get_mb_cur_max()
 
+#if __ANDROID_API__ < 21
+#include <android/legacy_stdlib_inlines.h>
+#endif
+
+#if defined(__BIONIC_FORTIFY)
+
+extern char* __realpath_real(const char*, char*) __RENAME(realpath);
+__errordecl(__realpath_size_error, "realpath output parameter must be NULL or a >= PATH_MAX bytes buffer");
+
+#if !defined(__clang__)
+__BIONIC_FORTIFY_INLINE
+char* realpath(const char* path, char* resolved) {
+    size_t bos = __bos(resolved);
+
+    /* PATH_MAX is unavailable without polluting the namespace, but it's always 4096 on Linux */
+    if (bos != __BIONIC_FORTIFY_UNKNOWN_SIZE && bos < 4096) {
+        __realpath_size_error();
+    }
+
+    return __realpath_real(path, resolved);
+}
+#endif
+
+#endif /* defined(__BIONIC_FORTIFY) */
+
 __END_DECLS
 
-#endif /* _STDLIB_H_ */
+#endif /* _STDLIB_H */
diff --git a/libc/include/string.h b/libc/include/string.h
index f2f6dd2..d32c164 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -25,21 +25,28 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#ifndef _STRING_H_
-#define _STRING_H_
+
+#ifndef _STRING_H
+#define _STRING_H
 
 #include <sys/cdefs.h>
 #include <stddef.h>
-#include <malloc.h>
 #include <xlocale.h>
 
 __BEGIN_DECLS
 
+#if defined(__USE_BSD)
+#include <strings.h>
+#endif
+
 extern void*  memccpy(void* __restrict, const void* __restrict, int, size_t);
 extern void*  memchr(const void *, int, size_t) __purefunc;
 extern void*  memrchr(const void *, int, size_t) __purefunc;
 extern int    memcmp(const void *, const void *, size_t) __purefunc;
 extern void*  memcpy(void* __restrict, const void* __restrict, size_t);
+#if defined(__USE_GNU)
+extern void*  mempcpy(void* __restrict, const void* __restrict, size_t);
+#endif
 extern void*  memmove(void *, const void *, size_t);
 extern void*  memset(void *, int, size_t);
 extern void*  memmem(const void *, size_t, const void *, size_t) __purefunc;
@@ -57,8 +64,11 @@
 extern char*  strcpy(char* __restrict, const char* __restrict);
 extern char*  strcat(char* __restrict, const char* __restrict);
 
-extern int    strcasecmp(const char *, const char *) __purefunc;
-extern int    strncasecmp(const char *, const char *, size_t) __purefunc;
+int strcasecmp(const char*, const char*) __purefunc;
+int strcasecmp_l(const char*, const char*, locale_t) __purefunc;
+int strncasecmp(const char*, const char*, size_t) __purefunc;
+int strncasecmp_l(const char*, const char*, size_t, locale_t) __purefunc;
+
 extern char*  strdup(const char *);
 
 extern char*  strstr(const char *, const char *) __purefunc;
@@ -66,8 +76,13 @@
 extern char*  strtok(char* __restrict, const char* __restrict);
 extern char*  strtok_r(char* __restrict, const char* __restrict, char** __restrict);
 
-extern char*  strerror(int);
-extern int    strerror_r(int errnum, char *buf, size_t n);
+extern char* strerror(int);
+extern char* strerror_l(int, locale_t);
+#if defined(__USE_GNU)
+extern char* strerror_r(int, char*, size_t) __RENAME(__gnu_strerror_r);
+#else /* POSIX */
+extern int strerror_r(int, char*, size_t);
+#endif
 
 extern size_t strnlen(const char *, size_t) __purefunc;
 extern char*  strncat(char* __restrict, const char* __restrict, size_t);
@@ -92,6 +107,27 @@
 extern int    strcoll_l(const char *, const char *, locale_t) __purefunc;
 extern size_t strxfrm_l(char* __restrict, const char* __restrict, size_t, locale_t);
 
+#if defined(__USE_GNU) && !defined(__bionic_using_posix_basename)
+/*
+ * glibc has a basename in <string.h> that's different to the POSIX one in <libgen.h>.
+ * It doesn't modify its argument, and in C++ it's const-correct.
+ */
+#if defined(__cplusplus)
+extern "C++" char* basename(char*) __RENAME(__gnu_basename) __nonnull((1));
+extern "C++" const char* basename(const char*) __RENAME(__gnu_basename) __nonnull((1));
+#else
+extern char* basename(const char*) __RENAME(__gnu_basename) __nonnull((1));
+#endif
+#define __bionic_using_gnu_basename
+#endif
+
+extern void* __memchr_chk(const void*, int, size_t, size_t);
+__errordecl(__memchr_buf_size_error, "memchr called with size bigger than buffer");
+
+extern void* __memrchr_chk(const void*, int, size_t, size_t);
+__errordecl(__memrchr_buf_size_error, "memrchr called with size bigger than buffer");
+extern void* __memrchr_real(const void*, int, size_t) __RENAME(memrchr);
+
 extern char* __stpncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
 extern char* __strncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
 extern size_t __strlcpy_real(char* __restrict, const char* __restrict, size_t) __RENAME(strlcpy);
@@ -102,6 +138,48 @@
 #if defined(__BIONIC_FORTIFY)
 
 __BIONIC_FORTIFY_INLINE
+void* memchr(const void *s, int c, size_t n) {
+    size_t bos = __bos(s);
+
+#if !defined(__clang__)
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __builtin_memchr(s, c, n);
+    }
+
+    if (__builtin_constant_p(n) && (n > bos)) {
+        __memchr_buf_size_error();
+    }
+
+    if (__builtin_constant_p(n) && (n <= bos)) {
+        return __builtin_memchr(s, c, n);
+    }
+#endif
+
+    return __memchr_chk(s, c, n, bos);
+}
+
+__BIONIC_FORTIFY_INLINE
+void* memrchr(const void *s, int c, size_t n) {
+    size_t bos = __bos(s);
+
+#if !defined(__clang__)
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __memrchr_real(s, c, n);
+    }
+
+    if (__builtin_constant_p(n) && (n > bos)) {
+        __memrchr_buf_size_error();
+    }
+
+    if (__builtin_constant_p(n) && (n <= bos)) {
+        return __memrchr_real(s, c, n);
+    }
+#endif
+
+    return __memrchr_chk(s, c, n, bos);
+}
+
+__BIONIC_FORTIFY_INLINE
 void* memcpy(void* __restrict dest, const void* __restrict src, size_t copy_amount) {
     return __builtin___memcpy_chk(dest, src, copy_amount, __bos0(dest));
 }
@@ -281,4 +359,4 @@
 
 __END_DECLS
 
-#endif /* _STRING_H_ */
+#endif /* _STRING_H */
diff --git a/libc/include/strings.h b/libc/include/strings.h
index ae261cf..1253006 100644
--- a/libc/include/strings.h
+++ b/libc/include/strings.h
@@ -41,22 +41,23 @@
 
 #include <sys/types.h>
 #include <sys/cdefs.h>
+#include <xlocale.h>
 
 __BEGIN_DECLS
 #if defined(__BIONIC_FORTIFY)
-#define bcopy(b1, b2, len) \
-  (void)(__builtin___memmove_chk((b2), (b1), (len), __bos0(b2)))
-#define bzero(b, len) \
-  (void)(__builtin___memset_chk((b), '\0', (len), __bos0(b)))
+#define bcopy(b1, b2, len) (void)(__builtin___memmove_chk((b2), (b1), (len), __bos0(b2)))
+#define bzero(b, len) (void)(__builtin___memset_chk((b), '\0', (len), __bos0(b)))
 #else
 #define bcopy(b1, b2, len) (void)(__builtin_memmove((b2), (b1), (len)))
 #define bzero(b, len) (void)(__builtin_memset((b), '\0', (len)))
 #endif
 
+int ffs(int);
 
-int	 ffs(int);
-int	 strcasecmp(const char *, const char *);
-int	 strncasecmp(const char *, const char *, size_t);
+int strcasecmp(const char*, const char*) __purefunc;
+int strcasecmp_l(const char*, const char*, locale_t) __purefunc;
+int strncasecmp(const char*, const char*, size_t) __purefunc;
+int strncasecmp_l(const char*, const char*, size_t, locale_t) __purefunc;
 
 __END_DECLS
 
diff --git a/libc/include/sys/_errdefs.h b/libc/include/sys/_errdefs.h
index 3eeadf4..3c3c9d7 100644
--- a/libc/include/sys/_errdefs.h
+++ b/libc/include/sys/_errdefs.h
@@ -45,7 +45,7 @@
 __BIONIC_ERRDEF( ENXIO          ,   6, "No such device or address" )
 __BIONIC_ERRDEF( E2BIG          ,   7, "Argument list too long" )
 __BIONIC_ERRDEF( ENOEXEC        ,   8, "Exec format error" )
-__BIONIC_ERRDEF( EBADF          ,   9, "Bad file number" )
+__BIONIC_ERRDEF( EBADF          ,   9, "Bad file descriptor" )
 __BIONIC_ERRDEF( ECHILD         ,  10, "No child processes" )
 __BIONIC_ERRDEF( EAGAIN         ,  11, "Try again" )
 __BIONIC_ERRDEF( ENOMEM         ,  12, "Out of memory" )
diff --git a/libc/include/sys/_system_properties.h b/libc/include/sys/_system_properties.h
index 0349e4c..8086020 100644
--- a/libc/include/sys/_system_properties.h
+++ b/libc/include/sys/_system_properties.h
@@ -50,7 +50,7 @@
 
 __BEGIN_DECLS
 
-struct prop_msg 
+struct prop_msg
 {
     unsigned cmd;
     char name[PROP_NAME_MAX];
@@ -58,7 +58,7 @@
 };
 
 #define PROP_MSG_SETPROP 1
-    
+
 /*
 ** Rules:
 **
@@ -80,8 +80,8 @@
 
 #define PROP_PATH_RAMDISK_DEFAULT  "/default.prop"
 #define PROP_PATH_SYSTEM_BUILD     "/system/build.prop"
-#define PROP_PATH_SYSTEM_DEFAULT   "/system/default.prop"
 #define PROP_PATH_VENDOR_BUILD     "/vendor/build.prop"
+#define PROP_PATH_BOOTIMAGE_BUILD  "/build.prop"
 #define PROP_PATH_LOCAL_OVERRIDE   "/data/local.prop"
 #define PROP_PATH_FACTORY          "/factory/factory.prop"
 
@@ -98,6 +98,30 @@
 */
 int __system_property_area_init();
 
+/* Read the global serial number of the system properties
+**
+** Called to predict if a series of cached __system_property_find
+** objects will have seen __system_property_serial values change.
+** But also aids the converse, as changes in the global serial can
+** also be used to predict if a failed __system_property_find
+** could in-turn now find a new object; thus preventing the
+** cycles of effort to poll __system_property_find.
+**
+** Typically called at beginning of a cache cycle to signal if _any_ possible
+** changes have occurred since last. If there is, one may check each individual
+** __system_property_serial to confirm dirty, or __system_property_find
+** to check if the property now exists. If a call to __system_property_add
+** or __system_property_update has completed between two calls to
+** __system_property_area_serial then the second call will return a larger
+** value than the first call. Beware of race conditions as changes to the
+** properties are not atomic, the main value of this call is to determine
+** whether the expensive __system_property_find is worth retrying to see if
+** a property now exists.
+**
+** Returns the serial number on success, -1 on error.
+*/
+unsigned int __system_property_area_serial();
+
 /* Add a new system property.  Can only be done by a single
 ** process that has write access to the property area, and
 ** that process must handle sequencing to ensure the property
diff --git a/libc/include/sys/atomics.h b/libc/include/sys/atomics.h
new file mode 100644
index 0000000..38ab366
--- /dev/null
+++ b/libc/include/sys/atomics.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _SYS_ATOMICS_H_
+#define _SYS_ATOMICS_H_
+
+/*
+ * These got proper out of line definitions in L. Putting the inline definitions
+ * back for old targets brings us closer to being able to use one set of headers
+ * for all API levels.
+ *
+ * The other inlines we put back went in to their appropriate headers, but the
+ * sys/atomics.h header was removed, so we'll just add these somewhere we can be
+ * sure they will be included.
+ */
+#if __ANDROID_API__ < 21
+#include <android/legacy_sys_atomics_inlines.h>
+#endif
+
+#endif /* _SYS_ATOMICS_H_ */
diff --git a/libc/include/sys/cachectl.h b/libc/include/sys/cachectl.h
index 57e6ae7..a302ff8 100644
--- a/libc/include/sys/cachectl.h
+++ b/libc/include/sys/cachectl.h
@@ -31,6 +31,5 @@
 #ifdef __mips__
 #include <asm/cachectl.h>
 extern int __cachectl (void *addr, __const int nbytes, __const int op);
-extern int _flush_cache (char *addr, __const int nbytes, __const int op);
 #endif
 #endif /* sys/cachectl.h */
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
index 504e439..04613f4 100644
--- a/libc/include/sys/cdefs.h
+++ b/libc/include/sys/cdefs.h
@@ -77,7 +77,9 @@
 #define	__GNUC_PREREQ(x, y)	0
 #endif
 
-#include <sys/cdefs_elf.h>
+#define __strong_alias(alias, sym) \
+    __asm__(".global " #alias "\n" \
+            #alias " = " #sym);
 
 #if defined(__cplusplus)
 #define	__BEGIN_DECLS		extern "C" {
@@ -263,13 +265,6 @@
 #endif
 #endif /* !(__STDC_VERSION__ >= 199901L) */
 
-#if defined(_KERNEL)
-#if defined(NO_KERNEL_RCSIDS)
-#undef __KERNEL_RCSID
-#define	__KERNEL_RCSID(_n, _s)		/* nothing */
-#endif /* NO_KERNEL_RCSIDS */
-#endif /* _KERNEL */
-
 /*
  * A barrier to stop the optimizer from moving code or assume live
  * register values. This is gcc specific, the version is more or less
@@ -340,13 +335,15 @@
 #endif
 
 #if __GNUC_PREREQ(4, 3)
-#define __errordecl(name, msg) extern void name(void) __attribute__((__error__(msg)))
+#define __errorattr(msg) __attribute__((__error__(msg)))
 #define __warnattr(msg) __attribute__((__warning__(msg)))
 #else
-#define __errordecl(name, msg) extern void name(void)
+#define __errorattr(msg)
 #define __warnattr(msg)
 #endif
 
+#define __errordecl(name, msg) extern void name(void) __errorattr(msg)
+
 /*
  * Some BSD source needs these macros.
  * Originally they embedded the rcs versions of each source file
@@ -358,9 +355,41 @@
 #define __RCSID(_s) /* nothing */
 #define __SCCSID(_s) /* nothing */
 
+/*
+ * _BSD_SOURCE and _GNU_SOURCE are expected to be defined by callers before
+ * any standard header file is included. In those header files we test
+ * against __USE_BSD and __USE_GNU. glibc does this in <features.h> but we
+ * do it in <sys/cdefs.h> instead because that's where our existing
+ * _POSIX_C_SOURCE tests were, and we're already confident that <sys/cdefs.h>
+ * is included everywhere it should be.
+ *
+ * The _GNU_SOURCE test needs to come before any _BSD_SOURCE or _POSIX* tests
+ * because _GNU_SOURCE implies everything else.
+ */
+#if defined(_GNU_SOURCE)
+# define __USE_GNU 1
+# undef _POSIX_SOURCE
+# define _POSIX_SOURCE 1
+# undef _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE 200809L
+# undef _BSD_SOURCE
+# define _BSD_SOURCE 1
+#endif
+
+#if defined(_BSD_SOURCE)
+# define __USE_BSD 1
+#endif
+
+/*
+ * _FILE_OFFSET_BITS 64 support.
+ */
+#if !defined(__LP64__) && defined(_FILE_OFFSET_BITS)
+#if _FILE_OFFSET_BITS == 64
+#define __USE_FILE_OFFSET64 1
+#endif
+#endif
+
 /*-
- * The following definitions are an extension of the behavior originally
- * implemented in <sys/_posix.h>, but with a different level of granularity.
  * POSIX.1 requires that the macros we test be defined before any standard
  * header file is included.
  *
@@ -538,4 +567,10 @@
 /* Used to rename functions so that the compiler emits a call to 'x' rather than the function this was applied to. */
 #define __RENAME(x) __asm__(#x)
 
+#if __ANDROID_API__ >= 21
+#define _BIONIC_NOT_BEFORE_21(x) x
+#else
+#define _BIONIC_NOT_BEFORE_21(x)
+#endif /* __ANDROID_API__ >= 21 */
+
 #endif /* !_SYS_CDEFS_H_ */
diff --git a/libc/include/sys/cdefs_elf.h b/libc/include/sys/cdefs_elf.h
deleted file mode 100644
index 6bb0a57..0000000
--- a/libc/include/sys/cdefs_elf.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*	$NetBSD: cdefs_elf.h,v 1.22 2005/02/26 22:25:34 perry Exp $	*/
-
-/*
- * Copyright (c) 1995, 1996 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
- *  School of Computer Science
- *  Carnegie Mellon University
- *  Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#ifndef _SYS_CDEFS_ELF_H_
-#define	_SYS_CDEFS_ELF_H_
-
-#define __strong_alias(alias, sym) \
-    __asm__(".global " #alias "\n" \
-            #alias " = " #sym);
-
-#define __weak_alias(alias,sym) \
-    __asm__(".weak " #alias "\n" \
-            #alias " = " #sym);
-
-/* We use __warnattr instead of __warn_references.
- * TODO: remove this and put an empty definition in one of the upstream-* compatibility headers.
- */
-#define	__warn_references(sym,msg)					\
-    /*__asm__(".section .gnu.warning." #sym "\n\t.ascii \"" msg "\"\n\t.text");*/
-
-#endif /* !_SYS_CDEFS_ELF_H_ */
diff --git a/libc/include/sys/endian.h b/libc/include/sys/endian.h
index be4c905..2fd480d 100644
--- a/libc/include/sys/endian.h
+++ b/libc/include/sys/endian.h
@@ -1,5 +1,3 @@
-/*	$OpenBSD: endian.h,v 1.17 2006/01/06 18:53:05 millert Exp $	*/
-
 /*-
  * Copyright (c) 1997 Niklas Hallqvist.  All rights reserved.
  *
@@ -24,169 +22,30 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- * Generic definitions for little- and big-endian systems.  Other endianesses
- * has to be dealt with in the specific machine/endian.h file for that port.
- *
- * This file is meant to be included from a little- or big-endian port's
- * machine/endian.h after setting _BYTE_ORDER to either 1234 for little endian
- * or 4321 for big..
- */
-
 #ifndef _SYS_ENDIAN_H_
 #define _SYS_ENDIAN_H_
 
 #include <sys/cdefs.h>
-#include <machine/endian.h>
 
 #include <stdint.h>
 
 #define _LITTLE_ENDIAN	1234
 #define _BIG_ENDIAN	4321
 #define _PDP_ENDIAN	3412
+#define _BYTE_ORDER _LITTLE_ENDIAN
+#define __LITTLE_ENDIAN_BITFIELD
 
-#if __BSD_VISIBLE
-#define LITTLE_ENDIAN	_LITTLE_ENDIAN
-#define BIG_ENDIAN	_BIG_ENDIAN
-#define PDP_ENDIAN	_PDP_ENDIAN
-#define BYTE_ORDER	_BYTE_ORDER
+#ifndef __LITTLE_ENDIAN
+#define __LITTLE_ENDIAN _LITTLE_ENDIAN
 #endif
-
-#ifdef __GNUC__
-
-#define __swap16gen(x) __statement({					\
-	__uint16_t __swap16gen_x = (x);					\
-									\
-	(__uint16_t)((__swap16gen_x & 0xff) << 8 |			\
-	    (__swap16gen_x & 0xff00) >> 8);				\
-})
-
-#define __swap32gen(x) __statement({					\
-	__uint32_t __swap32gen_x = (x);					\
-									\
-	(__uint32_t)((__swap32gen_x & 0xff) << 24 |			\
-	    (__swap32gen_x & 0xff00) << 8 |				\
-	    (__swap32gen_x & 0xff0000) >> 8 |				\
-	    (__swap32gen_x & 0xff000000) >> 24);			\
-})
-
-#define __swap64gen(x) __statement({					\
-	__uint64_t __swap64gen_x = (x);					\
-									\
-	(__uint64_t)((__swap64gen_x & 0xff) << 56 |			\
-	    (__swap64gen_x & 0xff00ULL) << 40 |				\
-	    (__swap64gen_x & 0xff0000ULL) << 24 |			\
-	    (__swap64gen_x & 0xff000000ULL) << 8 |			\
-	    (__swap64gen_x & 0xff00000000ULL) >> 8 |			\
-	    (__swap64gen_x & 0xff0000000000ULL) >> 24 |			\
-	    (__swap64gen_x & 0xff000000000000ULL) >> 40 |		\
-	    (__swap64gen_x & 0xff00000000000000ULL) >> 56);		\
-})
-
-#else /* __GNUC__ */
-
-/* Note that these macros evaluate their arguments several times.  */
-#define __swap16gen(x)							\
-    (__uint16_t)(((__uint16_t)(x) & 0xff) << 8 | ((__uint16_t)(x) & 0xff00) >> 8)
-
-#define __swap32gen(x)							\
-    (__uint32_t)(((__uint32_t)(x) & 0xff) << 24 |			\
-    ((__uint32_t)(x) & 0xff00) << 8 | ((__uint32_t)(x) & 0xff0000) >> 8 |\
-    ((__uint32_t)(x) & 0xff000000) >> 24)
-
-#define __swap64gen(x)							\
-	(__uint64_t)((((__uint64_t)(x) & 0xff) << 56) |			\
-	    ((__uint64_t)(x) & 0xff00ULL) << 40 |			\
-	    ((__uint64_t)(x) & 0xff0000ULL) << 24 |			\
-	    ((__uint64_t)(x) & 0xff000000ULL) << 8 |			\
-	    ((__uint64_t)(x) & 0xff00000000ULL) >> 8 |			\
-	    ((__uint64_t)(x) & 0xff0000000000ULL) >> 24 |		\
-	    ((__uint64_t)(x) & 0xff000000000000ULL) >> 40 |		\
-	    ((__uint64_t)(x) & 0xff00000000000000ULL) >> 56)
-
-#endif /* __GNUC__ */
-
-/*
- * Define MD_SWAP if you provide swap{16,32}md functions/macros that are
- * optimized for your architecture,  These will be used for swap{16,32}
- * unless the argument is a constant and we are using GCC, where we can
- * take advantage of the CSE phase much better by using the generic version.
- */
-#ifdef MD_SWAP
-#if __GNUC__
-
-#define __swap16(x) __statement({					\
-	__uint16_t __swap16_x = (x);					\
-									\
-	__builtin_constant_p(x) ? __swap16gen(__swap16_x) :		\
-	    __swap16md(__swap16_x);					\
-})
-
-#define __swap32(x) __statement({					\
-	__uint32_t __swap32_x = (x);					\
-									\
-	__builtin_constant_p(x) ? __swap32gen(__swap32_x) :		\
-	    __swap32md(__swap32_x);					\
-})
-
-#define __swap64(x) __statement({					\
-	__uint64_t __swap64_x = (x);					\
-									\
-	__builtin_constant_p(x) ? __swap64gen(__swap64_x) :		\
-	    __swap64md(__swap64_x);					\
-})
-
-#endif /* __GNUC__  */
-
-#else /* MD_SWAP */
-#define __swap16 __swap16gen
-#define __swap32 __swap32gen
-#define __swap64 __swap64gen
-#endif /* MD_SWAP */
-
-#define __swap16_multi(v, n) do {						\
-	__size_t __swap16_multi_n = (n);				\
-	__uint16_t *__swap16_multi_v = (v);				\
-									\
-	while (__swap16_multi_n) {					\
-		*__swap16_multi_v = swap16(*__swap16_multi_v);		\
-		__swap16_multi_v++;					\
-		__swap16_multi_n--;					\
-	}								\
-} while (0)
-
-#if __BSD_VISIBLE
-#define swap16 __swap16
-#define swap32 __swap32
-#define swap64 __swap64
-#define swap16_multi __swap16_multi
-#endif /* __BSD_VISIBLE */
-
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-
-/* Can be overridden by machine/endian.h before inclusion of this file.  */
-#ifndef _QUAD_HIGHWORD
-#define _QUAD_HIGHWORD 1
+#ifndef __BIG_ENDIAN
+#define __BIG_ENDIAN _BIG_ENDIAN
 #endif
-#ifndef _QUAD_LOWWORD
-#define _QUAD_LOWWORD 0
-#endif
+#define __BYTE_ORDER _BYTE_ORDER
 
-#if __BSD_VISIBLE
-#define htobe16 __swap16
-#define htobe32 __swap32
-#define htobe64 __swap64
-#define betoh16 __swap16
-#define betoh32 __swap32
-#define betoh64 __swap64
-
-#define htole16(x) (x)
-#define htole32(x) (x)
-#define htole64(x) (x)
-#define letoh16(x) (x)
-#define letoh32(x) (x)
-#define letoh64(x) (x)
-#endif /* __BSD_VISIBLE */
+#define __swap16 __builtin_bswap16
+#define __swap32 __builtin_bswap32
+#define __swap64 __builtin_bswap64
 
 /* glibc compatibility. */
 __BEGIN_DECLS
@@ -205,67 +64,35 @@
 #define htonq(x) __swap64(x)
 #define ntohq(x) __swap64(x)
 
-#define __LITTLE_ENDIAN_BITFIELD
-
-#endif /* _BYTE_ORDER */
-
-#if _BYTE_ORDER == _BIG_ENDIAN
-
-/* Can be overridden by machine/endian.h before inclusion of this file.  */
-#ifndef _QUAD_HIGHWORD
-#define _QUAD_HIGHWORD 0
-#endif
-#ifndef _QUAD_LOWWORD
-#define _QUAD_LOWWORD 1
-#endif
-
 #if __BSD_VISIBLE
-#define htole16 __swap16
-#define htole32 __swap32
-#define htole64 __swap64
-#define letoh16 __swap16
-#define letoh32 __swap32
-#define letoh64 __swap64
+#define LITTLE_ENDIAN _LITTLE_ENDIAN
+#define BIG_ENDIAN _BIG_ENDIAN
+#define PDP_ENDIAN _PDP_ENDIAN
+#define BYTE_ORDER _BYTE_ORDER
 
-#define htobe16(x) (x)
-#define htobe32(x) (x)
-#define htobe64(x) (x)
-#define betoh16(x) (x)
-#define betoh32(x) (x)
-#define betoh64(x) (x)
-#endif /* __BSD_VISIBLE */
-
-#define htons(x) (x)
-#define htonl(x) (x)
-#define ntohs(x) (x)
-#define ntohl(x) (x)
-
-/* Bionic additions */
-#define ntohq(x) (x)
-#define htonq(x) (x)
-
-#define __BIG_ENDIAN_BITFIELD
-
-#endif /* _BYTE_ORDER */
-
-#if __BSD_VISIBLE
 #define	NTOHL(x) (x) = ntohl((u_int32_t)(x))
 #define	NTOHS(x) (x) = ntohs((u_int16_t)(x))
 #define	HTONL(x) (x) = htonl((u_int32_t)(x))
 #define	HTONS(x) (x) = htons((u_int16_t)(x))
-#endif
 
+#define swap16 __swap16
+#define swap32 __swap32
+#define swap64 __swap64
 
-#define  __BYTE_ORDER       _BYTE_ORDER
-#ifndef  __LITTLE_ENDIAN
-#define  __LITTLE_ENDIAN    _LITTLE_ENDIAN
-#endif
-#ifndef  __BIG_ENDIAN
-#define  __BIG_ENDIAN       _BIG_ENDIAN
-#endif
+#define htobe16 __swap16
+#define htobe32 __swap32
+#define htobe64 __swap64
+#define betoh16 __swap16
+#define betoh32 __swap32
+#define betoh64 __swap64
 
+#define htole16(x) (x)
+#define htole32(x) (x)
+#define htole64(x) (x)
+#define letoh16(x) (x)
+#define letoh32(x) (x)
+#define letoh64(x) (x)
 
-#ifdef __BSD_VISIBLE
 /*
  * glibc-compatible beXXtoh/leXXtoh synonyms for htobeXX/htoleXX.
  * The BSDs export both sets of names, bionic historically only
@@ -278,6 +105,6 @@
 #define le16toh(x) htole16(x)
 #define le32toh(x) htole32(x)
 #define le64toh(x) htole64(x)
-#endif
+#endif /* __BSD_VISIBLE */
 
 #endif /* _SYS_ENDIAN_H_ */
diff --git a/libc/include/sys/file.h b/libc/include/sys/file.h
index cf2f4b1..f414d34 100644
--- a/libc/include/sys/file.h
+++ b/libc/include/sys/file.h
@@ -25,14 +25,19 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_FILE_H_
 #define _SYS_FILE_H_
 
 #include <sys/cdefs.h>
 #include <sys/types.h>
 
-/* ANDROID: needed for flock() */
-#include <unistd.h>
 #include <fcntl.h>
 
+__BEGIN_DECLS
+
+int flock(int, int);
+
+__END_DECLS
+
 #endif /* _SYS_FILE_H_ */
diff --git a/libc/include/sys/glibc-syscalls.h b/libc/include/sys/glibc-syscalls.h
index 459ee78..926209b 100644
--- a/libc/include/sys/glibc-syscalls.h
+++ b/libc/include/sys/glibc-syscalls.h
@@ -12,6 +12,7 @@
 #define SYS_arch_specific_syscall __NR_arch_specific_syscall
 #define SYS_bdflush __NR_bdflush
 #define SYS_bind __NR_bind
+#define SYS_bpf __NR_bpf
 #define SYS_brk __NR_brk
 #define SYS_capget __NR_capget
 #define SYS_capset __NR_capset
@@ -90,6 +91,7 @@
 #define SYS_getpid __NR_getpid
 #define SYS_getppid __NR_getppid
 #define SYS_getpriority __NR_getpriority
+#define SYS_getrandom __NR_getrandom
 #define SYS_getresgid __NR_getresgid
 #define SYS_getresuid __NR_getresuid
 #define SYS_getrlimit __NR_getrlimit
@@ -134,6 +136,7 @@
 #define SYS_lstat64 __NR_lstat64
 #define SYS_madvise __NR_madvise
 #define SYS_mbind __NR_mbind
+#define SYS_memfd_create __NR_memfd_create
 #define SYS_migrate_pages __NR_migrate_pages
 #define SYS_mincore __NR_mincore
 #define SYS_mkdir __NR_mkdir
@@ -203,6 +206,7 @@
 #define SYS_removexattr __NR_removexattr
 #define SYS_rename __NR_rename
 #define SYS_renameat __NR_renameat
+#define SYS_renameat2 __NR_renameat2
 #define SYS_request_key __NR_request_key
 #define SYS_restart_syscall __NR_restart_syscall
 #define SYS_rmdir __NR_rmdir
@@ -226,6 +230,7 @@
 #define SYS_sched_setparam __NR_sched_setparam
 #define SYS_sched_setscheduler __NR_sched_setscheduler
 #define SYS_sched_yield __NR_sched_yield
+#define SYS_seccomp __NR_seccomp
 #define SYS_select __NR_select
 #define SYS_semctl __NR_semctl
 #define SYS_semget __NR_semget
@@ -332,6 +337,7 @@
 #define SYS_arm_sync_file_range __NR_arm_sync_file_range
 #define SYS_bdflush __NR_bdflush
 #define SYS_bind __NR_bind
+#define SYS_bpf __NR_bpf
 #define SYS_brk __NR_brk
 #define SYS_capget __NR_capget
 #define SYS_capset __NR_capset
@@ -414,6 +420,7 @@
 #define SYS_getpid __NR_getpid
 #define SYS_getppid __NR_getppid
 #define SYS_getpriority __NR_getpriority
+#define SYS_getrandom __NR_getrandom
 #define SYS_getresgid __NR_getresgid
 #define SYS_getresgid32 __NR_getresgid32
 #define SYS_getresuid __NR_getresuid
@@ -462,6 +469,7 @@
 #define SYS_lstat64 __NR_lstat64
 #define SYS_madvise __NR_madvise
 #define SYS_mbind __NR_mbind
+#define SYS_memfd_create __NR_memfd_create
 #define SYS_mincore __NR_mincore
 #define SYS_mkdir __NR_mkdir
 #define SYS_mkdirat __NR_mkdirat
@@ -533,6 +541,7 @@
 #define SYS_removexattr __NR_removexattr
 #define SYS_rename __NR_rename
 #define SYS_renameat __NR_renameat
+#define SYS_renameat2 __NR_renameat2
 #define SYS_request_key __NR_request_key
 #define SYS_restart_syscall __NR_restart_syscall
 #define SYS_rmdir __NR_rmdir
@@ -556,6 +565,7 @@
 #define SYS_sched_setparam __NR_sched_setparam
 #define SYS_sched_setscheduler __NR_sched_setscheduler
 #define SYS_sched_yield __NR_sched_yield
+#define SYS_seccomp __NR_seccomp
 #define SYS_select __NR_select
 #define SYS_semctl __NR_semctl
 #define SYS_semget __NR_semget
@@ -679,6 +689,7 @@
 #define SYS_alarm __NR_alarm
 #define SYS_bdflush __NR_bdflush
 #define SYS_bind __NR_bind
+#define SYS_bpf __NR_bpf
 #define SYS_break __NR_break
 #define SYS_brk __NR_brk
 #define SYS_cachectl __NR_cachectl
@@ -763,6 +774,7 @@
 #define SYS_getpmsg __NR_getpmsg
 #define SYS_getppid __NR_getppid
 #define SYS_getpriority __NR_getpriority
+#define SYS_getrandom __NR_getrandom
 #define SYS_getresgid __NR_getresgid
 #define SYS_getresuid __NR_getresuid
 #define SYS_getrlimit __NR_getrlimit
@@ -812,6 +824,7 @@
 #define SYS_lstat64 __NR_lstat64
 #define SYS_madvise __NR_madvise
 #define SYS_mbind __NR_mbind
+#define SYS_memfd_create __NR_memfd_create
 #define SYS_migrate_pages __NR_migrate_pages
 #define SYS_mincore __NR_mincore
 #define SYS_mkdir __NR_mkdir
@@ -888,6 +901,7 @@
 #define SYS_removexattr __NR_removexattr
 #define SYS_rename __NR_rename
 #define SYS_renameat __NR_renameat
+#define SYS_renameat2 __NR_renameat2
 #define SYS_request_key __NR_request_key
 #define SYS_reserved177 __NR_reserved177
 #define SYS_reserved193 __NR_reserved193
@@ -915,6 +929,7 @@
 #define SYS_sched_setparam __NR_sched_setparam
 #define SYS_sched_setscheduler __NR_sched_setscheduler
 #define SYS_sched_yield __NR_sched_yield
+#define SYS_seccomp __NR_seccomp
 #define SYS_semctl __NR_semctl
 #define SYS_semget __NR_semget
 #define SYS_semop __NR_semop
@@ -1039,6 +1054,7 @@
 #define SYS_afs_syscall __NR_afs_syscall
 #define SYS_alarm __NR_alarm
 #define SYS_bdflush __NR_bdflush
+#define SYS_bpf __NR_bpf
 #define SYS_break __NR_break
 #define SYS_brk __NR_brk
 #define SYS_capget __NR_capget
@@ -1127,6 +1143,7 @@
 #define SYS_getpmsg __NR_getpmsg
 #define SYS_getppid __NR_getppid
 #define SYS_getpriority __NR_getpriority
+#define SYS_getrandom __NR_getrandom
 #define SYS_getresgid __NR_getresgid
 #define SYS_getresgid32 __NR_getresgid32
 #define SYS_getresuid __NR_getresuid
@@ -1177,6 +1194,7 @@
 #define SYS_lstat64 __NR_lstat64
 #define SYS_madvise __NR_madvise
 #define SYS_mbind __NR_mbind
+#define SYS_memfd_create __NR_memfd_create
 #define SYS_migrate_pages __NR_migrate_pages
 #define SYS_mincore __NR_mincore
 #define SYS_mkdir __NR_mkdir
@@ -1250,6 +1268,7 @@
 #define SYS_removexattr __NR_removexattr
 #define SYS_rename __NR_rename
 #define SYS_renameat __NR_renameat
+#define SYS_renameat2 __NR_renameat2
 #define SYS_request_key __NR_request_key
 #define SYS_restart_syscall __NR_restart_syscall
 #define SYS_rmdir __NR_rmdir
@@ -1273,6 +1292,7 @@
 #define SYS_sched_setparam __NR_sched_setparam
 #define SYS_sched_setscheduler __NR_sched_setscheduler
 #define SYS_sched_yield __NR_sched_yield
+#define SYS_seccomp __NR_seccomp
 #define SYS_select __NR_select
 #define SYS_sendfile __NR_sendfile
 #define SYS_sendfile64 __NR_sendfile64
@@ -1389,6 +1409,7 @@
 #define SYS_alarm __NR_alarm
 #define SYS_arch_prctl __NR_arch_prctl
 #define SYS_bind __NR_bind
+#define SYS_bpf __NR_bpf
 #define SYS_brk __NR_brk
 #define SYS_capget __NR_capget
 #define SYS_capset __NR_capset
@@ -1467,6 +1488,7 @@
 #define SYS_getpmsg __NR_getpmsg
 #define SYS_getppid __NR_getppid
 #define SYS_getpriority __NR_getpriority
+#define SYS_getrandom __NR_getrandom
 #define SYS_getresgid __NR_getresgid
 #define SYS_getresuid __NR_getresuid
 #define SYS_getrlimit __NR_getrlimit
@@ -1494,6 +1516,7 @@
 #define SYS_ioprio_get __NR_ioprio_get
 #define SYS_ioprio_set __NR_ioprio_set
 #define SYS_kcmp __NR_kcmp
+#define SYS_kexec_file_load __NR_kexec_file_load
 #define SYS_kexec_load __NR_kexec_load
 #define SYS_keyctl __NR_keyctl
 #define SYS_kill __NR_kill
@@ -1511,6 +1534,7 @@
 #define SYS_lstat __NR_lstat
 #define SYS_madvise __NR_madvise
 #define SYS_mbind __NR_mbind
+#define SYS_memfd_create __NR_memfd_create
 #define SYS_migrate_pages __NR_migrate_pages
 #define SYS_mincore __NR_mincore
 #define SYS_mkdir __NR_mkdir
@@ -1580,6 +1604,7 @@
 #define SYS_removexattr __NR_removexattr
 #define SYS_rename __NR_rename
 #define SYS_renameat __NR_renameat
+#define SYS_renameat2 __NR_renameat2
 #define SYS_request_key __NR_request_key
 #define SYS_restart_syscall __NR_restart_syscall
 #define SYS_rmdir __NR_rmdir
@@ -1603,6 +1628,7 @@
 #define SYS_sched_setparam __NR_sched_setparam
 #define SYS_sched_setscheduler __NR_sched_setscheduler
 #define SYS_sched_yield __NR_sched_yield
+#define SYS_seccomp __NR_seccomp
 #define SYS_security __NR_security
 #define SYS_select __NR_select
 #define SYS_semctl __NR_semctl
diff --git a/libc/include/sys/limits.h b/libc/include/sys/limits.h
index c50eb10..be79cf3 100644
--- a/libc/include/sys/limits.h
+++ b/libc/include/sys/limits.h
@@ -115,57 +115,13 @@
 
 /* Bionic-specific definitions */
 
-#define  _POSIX_VERSION             200112L   /* Posix C language bindings version */
+#define  _POSIX_VERSION             200809L   /* Posix C language bindings version */
 #define  _POSIX2_VERSION            -1        /* we don't support Posix command-line tools */
-#define  _POSIX2_C_VERSION          _POSIX_VERSION
-#define  _XOPEN_VERSION             500       /* by Posix definition */
-#define  _XOPEN_XCU_VERSION         -1        /* we don't support command-line utilities */
-
-/* tell what we implement legacy stuff when appropriate */
-#if _POSIX_VERSION > 0
-#define  _XOPEN_XPG2                1
-#define  _XOPEN_XPG3                1
-#define  _XOPEN_XPG4                1
-#define  _XOPEN_UNIX                1
-#endif
-
-#define  _XOPEN_ENH_I18N          -1  /* we don't support internationalization in the C library */
-#define  _XOPEN_CRYPT             -1  /* don't support X/Open Encryption */
-#define  _XOPEN_LEGACY            -1  /* don't claim we support these, we have some of them but not all */
-#define  _XOPEN_REALTIME          -1 /* we don't support all these functions */
-#define  _XOPEN_REALTIME_THREADS  -1  /* same here */
-
-#define  _POSIX_REALTIME_SIGNALS    -1  /* for now, this is not supported */
-#define  _POSIX_PRIORITY_SCHEDULING  1  /* priority scheduling is a Linux feature */
-#define  _POSIX_TIMERS               1  /* Posix timers are supported */
-#undef   _POSIX_ASYNCHRONOUS_IO         /* aio_ functions are not supported */
-#define  _POSIX_SYNCHRONIZED_IO      1  /* synchronized i/o supported */
-#define  _POSIX_FSYNC                1  /* fdatasync() supported */
-#define  _POSIX_MAPPED_FILES         1  /* mmap-ed files supported */
-
-/* XXX: TODO: complete and check list here */
+#define  _XOPEN_VERSION             700       /* by Posix definition */
 
 
-#define  _POSIX_THREADS             1    /* we support threads */
-#define  _POSIX_THREAD_STACKADDR    1    /* we support thread stack address */
-#define  _POSIX_THREAD_STACKSIZE    1    /* we support thread stack size */
-#define  _POSIX_THREAD_PRIO_INHERIT 200112L   /* linux feature */
-#define  _POSIX_THREAD_PRIO_PROTECT 200112L   /* linux feature */
-
-#undef   _POSIX_PROCESS_SHARED           /* we don't support process-shared synchronization */
-#undef   _POSIX_THREAD_SAFE_FUNCTIONS    /* most functions are, but not everything yet */
-#define  _POSIX_CHOWN_RESTRICTED    1    /* yes, chown requires appropriate privileges */
-#define  _POSIX_MONOTONIC_CLOCK     0    /* the monotonic clock may be available; ask sysconf */
-#define  _POSIX_NO_TRUNC            1    /* very long pathnames generate an error */
-#define  _POSIX_SAVED_IDS           1    /* saved user ids is a Linux feature */
-#define  _POSIX_JOB_CONTROL         1    /* job control is a Linux feature */
-
-#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 /* the minimum mandated by POSIX */
-#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
-#define _POSIX_THREAD_KEYS_MAX 128            /* the minimum mandated by POSIX */
-#define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX
-#define _POSIX_THREAD_THREADS_MAX 64          /* the minimum mandated by POSIX */
-#define PTHREAD_THREADS_MAX                   /* bionic has no specific limit */
-
+#define PTHREAD_DESTRUCTOR_ITERATIONS 4     // >= _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+#define PTHREAD_KEYS_MAX              128   // >= _POSIX_THREAD_KEYS_MAX
+#define PTHREAD_THREADS_MAX           2048  // bionic has no specific limit
 
 #endif
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 5a8c985..6857f60 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -43,8 +43,19 @@
 #define MREMAP_MAYMOVE  1
 #define MREMAP_FIXED    2
 
+#define POSIX_MADV_NORMAL     MADV_NORMAL
+#define POSIX_MADV_RANDOM     MADV_RANDOM
+#define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
+#define POSIX_MADV_WILLNEED   MADV_WILLNEED
+#define POSIX_MADV_DONTNEED   MADV_DONTNEED
+
+#if defined(__USE_FILE_OFFSET64)
+extern void* mmap(void*, size_t, int, int, int, off_t) __RENAME(mmap64);
+#else
 extern void* mmap(void*, size_t, int, int, int, off_t);
+#endif
 extern void* mmap64(void*, size_t, int, int, int, off64_t);
+
 extern int munmap(void*, size_t);
 extern int msync(const void*, size_t, int);
 extern int mprotect(const void*, size_t, int);
@@ -54,13 +65,15 @@
 extern int munlockall(void);
 extern int mlock(const void*, size_t);
 extern int munlock(const void*, size_t);
-extern int madvise(const void*, size_t, int);
+extern int madvise(void*, size_t, int);
 
 extern int mlock(const void*, size_t);
 extern int munlock(const void*, size_t);
 
 extern int mincore(void*, size_t, unsigned char*);
 
+extern int posix_madvise(void*, size_t, int);
+
 __END_DECLS
 
 #endif /* _SYS_MMAN_H_ */
diff --git a/libc/include/sys/mount.h b/libc/include/sys/mount.h
index 3c35d31..fd7cf17 100644
--- a/libc/include/sys/mount.h
+++ b/libc/include/sys/mount.h
@@ -25,6 +25,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_MOUNT_H
 #define _SYS_MOUNT_H
 
@@ -35,9 +36,10 @@
 __BEGIN_DECLS
 
 /* umount2 flags. */
-#define MNT_FORCE	1	/* Forcibly unmount */
-#define MNT_DETACH	2	/* Detach from tree only */
-#define MNT_EXPIRE	4	/* Mark for expiry */
+#define MNT_FORCE 1
+#define MNT_DETACH 2
+#define MNT_EXPIRE 4
+#define UMOUNT_NOFOLLOW 8
 
 extern int mount(const char*, const char*, const char*, unsigned long, const void*);
 extern int umount(const char*);
diff --git a/libc/include/sys/resource.h b/libc/include/sys/resource.h
index a91fa53..3f8dd45 100644
--- a/libc/include/sys/resource.h
+++ b/libc/include/sys/resource.h
@@ -36,6 +36,10 @@
 
 __BEGIN_DECLS
 
+/* The kernel header doesn't have these, but POSIX does. */
+#define RLIM_SAVED_CUR RLIM_INFINITY
+#define RLIM_SAVED_MAX RLIM_INFINITY
+
 typedef unsigned long rlim_t;
 
 extern int getrlimit(int, struct rlimit*);
diff --git a/libc/include/sys/select.h b/libc/include/sys/select.h
index 32c1206..0c4a823 100644
--- a/libc/include/sys/select.h
+++ b/libc/include/sys/select.h
@@ -29,11 +29,10 @@
 #ifndef _SYS_SELECT_H_
 #define _SYS_SELECT_H_
 
-#include <sys/cdefs.h>
-#include <sys/time.h>
-#include <sys/types.h>
+#include <linux/time.h>
 #include <signal.h>
-#include <string.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
 
 __BEGIN_DECLS
 
@@ -49,7 +48,14 @@
 #define __FDMASK(fd) (1UL << ((fd) % NFDBITS))
 #define __FDS_BITS(set) (((fd_set*)(set))->fds_bits)
 
-#define FD_ZERO(set) (memset(set, 0, sizeof(*(fd_set*)(set))))
+/* Inline loop so we don't have to declare memset. */
+#define FD_ZERO(set) \
+  do { \
+    size_t __i; \
+    for (__i = 0; __i < __FDSET_LONGS; ++__i) { \
+      (set)->fds_bits[__i] = 0; \
+    } \
+  } while (0)
 
 extern void __FD_CLR_chk(int, fd_set*, size_t);
 extern void __FD_SET_chk(int, fd_set*, size_t);
diff --git a/libc/include/sys/sendfile.h b/libc/include/sys/sendfile.h
index 81a3c44..c588e68 100644
--- a/libc/include/sys/sendfile.h
+++ b/libc/include/sys/sendfile.h
@@ -34,7 +34,11 @@
 
 __BEGIN_DECLS
 
+#if defined(__USE_FILE_OFFSET64)
+extern ssize_t sendfile(int out_fd, int in_fd, off_t* offset, size_t count) __RENAME(sendfile64);
+#else
 extern ssize_t sendfile(int out_fd, int in_fd, off_t* offset, size_t count);
+#endif
 extern ssize_t sendfile64(int out_fd, int in_fd, off64_t* offset, size_t count);
 
 __END_DECLS
diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h
index 9c7373a..c22516f 100644
--- a/libc/include/sys/stat.h
+++ b/libc/include/sys/stat.h
@@ -25,91 +25,81 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_STAT_H_
 #define _SYS_STAT_H_
 
+#include <linux/stat.h>
+#include <machine/timespec.h>
 #include <sys/cdefs.h>
 #include <sys/types.h>
-#include <sys/time.h>
-#include <linux/stat.h>
-
-#include <endian.h>
 
 __BEGIN_DECLS
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) || (defined(__mips__) && defined(__LP64__))
 #define __STAT64_BODY \
-  unsigned long st_dev; \
-  unsigned long st_ino; \
-  unsigned int st_mode; \
-  unsigned int st_nlink; \
+  dev_t st_dev; \
+  ino_t st_ino; \
+  mode_t st_mode; \
+  nlink_t st_nlink; \
   uid_t st_uid; \
   gid_t st_gid; \
-  unsigned long st_rdev; \
+  dev_t st_rdev; \
   unsigned long __pad1; \
-  long st_size; \
+  off_t 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; \
+  struct timespec st_atim; \
+  struct timespec st_mtim; \
+  struct timespec st_ctim; \
   unsigned int __unused4; \
   unsigned int __unused5; \
 
-#elif defined(__mips__)
+#elif defined(__mips__) && !defined(__LP64__)
 #define __STAT64_BODY \
   unsigned int st_dev; \
   unsigned int __pad0[3]; \
   unsigned long long st_ino; \
-  unsigned int st_mode; \
-  unsigned int st_nlink; \
+  mode_t st_mode; \
+  nlink_t st_nlink; \
   uid_t st_uid; \
   gid_t st_gid; \
   unsigned int st_rdev; \
   unsigned int __pad1[3]; \
   long long st_size; \
-  unsigned int st_atime; \
-  unsigned int st_atime_nsec; \
-  unsigned int st_mtime; \
-  unsigned int st_mtime_nsec; \
-  unsigned int st_ctime; \
-  unsigned int st_ctime_nsec; \
+  struct timespec st_atim; \
+  struct timespec st_mtim; \
+  struct timespec st_ctim; \
   unsigned int st_blksize; \
   unsigned int __pad2; \
   unsigned long long st_blocks; \
 
 #elif defined(__x86_64__)
 #define __STAT64_BODY \
-  unsigned long st_dev; \
-  unsigned long st_ino; \
+  dev_t st_dev; \
+  ino_t st_ino; \
   unsigned long st_nlink; \
-  unsigned int st_mode; \
+  mode_t st_mode; \
   uid_t st_uid; \
   gid_t st_gid; \
   unsigned int __pad0; \
-  unsigned long st_rdev; \
-  long st_size; \
+  dev_t st_rdev; \
+  off_t st_size; \
   long st_blksize; \
   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; \
+  struct timespec st_atim; \
+  struct timespec st_mtim; \
+  struct timespec st_ctim; \
   long __pad3[3]; \
 
-#else
+#else /* __arm__ || __i386__ */
 #define __STAT64_BODY \
   unsigned long long st_dev; \
   unsigned char __pad0[4]; \
   unsigned long __st_ino; \
   unsigned int st_mode; \
-  unsigned int st_nlink; \
+  nlink_t st_nlink; \
   uid_t st_uid; \
   gid_t st_gid; \
   unsigned long long st_rdev; \
@@ -117,12 +107,9 @@
   long long st_size; \
   unsigned long st_blksize; \
   unsigned long 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; \
+  struct timespec st_atim; \
+  struct timespec st_mtim; \
+  struct timespec st_ctim; \
   unsigned long long st_ino; \
 
 #endif
@@ -132,9 +119,14 @@
 
 #undef __STAT64_BODY
 
-#define st_atimensec st_atime_nsec
-#define st_mtimensec st_mtime_nsec
-#define st_ctimensec st_ctime_nsec
+/* Compatibility with older versions of POSIX. */
+#define st_atime st_atim.tv_sec
+#define st_mtime st_mtim.tv_sec
+#define st_ctime st_ctim.tv_sec
+/* Compatibility with glibc. */
+#define st_atimensec st_atim.tv_nsec
+#define st_mtimensec st_mtim.tv_nsec
+#define st_ctimensec st_ctim.tv_nsec
 
 #ifdef __USE_BSD
 /* Permission macros provided by glibc for compatibility with BSDs. */
@@ -179,7 +171,8 @@
 }
 #endif /* defined(__BIONIC_FORTIFY) */
 
-extern int mkfifo(const char*, mode_t);
+_BIONIC_NOT_BEFORE_21(extern int mkfifo(const char*, mode_t);)
+extern int mkfifoat(int, const char*, mode_t);
 
 extern int fchmodat(int, const char*, mode_t, int);
 extern int mkdirat(int, const char*, mode_t);
@@ -190,6 +183,10 @@
 extern int utimensat(int fd, const char *path, const struct timespec times[2], int flags);
 extern int futimens(int fd, const struct timespec times[2]);
 
+#if __ANDROID_API__ < 21
+#include <android/legacy_sys_stat_inlines.h>
+#endif
+
 __END_DECLS
 
 #endif /* _SYS_STAT_H_ */
diff --git a/libc/include/sys/syscall.h b/libc/include/sys/syscall.h
index 34a29df..21eaf33 100644
--- a/libc/include/sys/syscall.h
+++ b/libc/include/sys/syscall.h
@@ -25,20 +25,13 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_SYSCALL_H_
 #define _SYS_SYSCALL_H_
 
-#include <errno.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <asm/unistd.h>
+#include <asm/unistd.h> /* Linux kernel __NR_* names. */
+#include <sys/glibc-syscalls.h> /* glibc-compatible SYS_* aliases. */
 
-#include <sys/glibc-syscalls.h> /* glibc-compatible SYS_* aliases for our __NR_* names. */
-
-__BEGIN_DECLS
-
-long syscall(long number, ...);
-
-__END_DECLS
+/* The syscall function itself is declared in <unistd.h>, not here. */
 
 #endif /* _SYS_SYSCALL_H_ */
diff --git a/libc/include/sys/sysconf.h b/libc/include/sys/sysconf.h
index 3d058d7..ca32132 100644
--- a/libc/include/sys/sysconf.h
+++ b/libc/include/sys/sysconf.h
@@ -50,7 +50,7 @@
 #define _SC_PASS_MAX            0x000c
 #define _SC_2_C_BIND            0x000d
 #define _SC_2_C_DEV             0x000e
-#define _SC_2_C_VERSION         0x000f
+#define _SC_2_C_VERSION         0x000f  /* Obsolescent in POSIX.1-2008, TODO: remove it. */
 #define _SC_2_CHAR_TERM         0x0010
 #define _SC_2_FORT_DEV          0x0011
 #define _SC_2_FORT_RUN          0x0012
@@ -68,7 +68,7 @@
 #define _SC_XOPEN_ENH_I18N      0x001e
 #define _SC_XOPEN_SHM           0x001f
 #define _SC_XOPEN_VERSION       0x0020
-#define _SC_XOPEN_XCU_VERSION   0x0021
+#define _SC_XOPEN_XCU_VERSION   0x0021  /* Obsolescent in POSIX.1-2008, TODO: remove it. */
 #define _SC_XOPEN_REALTIME      0x0022
 #define _SC_XOPEN_REALTIME_THREADS  0x0023
 #define _SC_XOPEN_LEGACY        0x0024
@@ -77,10 +77,10 @@
 #define _SC_PAGESIZE            0x0027
 #define _SC_PAGE_SIZE           0x0028
 #define _SC_XOPEN_UNIX          0x0029
-#define _SC_XBS5_ILP32_OFF32    0x002a
-#define _SC_XBS5_ILP32_OFFBIG   0x002b
-#define _SC_XBS5_LP64_OFF64     0x002c
-#define _SC_XBS5_LPBIG_OFFBIG   0x002d
+#define _SC_XBS5_ILP32_OFF32    0x002a  /* Obsolescent in POSIX.1-2008, TODO: remove it. */
+#define _SC_XBS5_ILP32_OFFBIG   0x002b  /* Obsolescent in POSIX.1-2008, TODO: remove it. */
+#define _SC_XBS5_LP64_OFF64     0x002c  /* Obsolescent in POSIX.1-2008, TODO: remove it. */
+#define _SC_XBS5_LPBIG_OFFBIG   0x002d  /* Obsolescent in POSIX.1-2008, TODO: remove it. */
 #define _SC_AIO_LISTIO_MAX      0x002e
 #define _SC_AIO_MAX             0x002f
 #define _SC_AIO_PRIO_DELTA_MAX  0x0030
@@ -129,6 +129,65 @@
 #define _SC_AVPHYS_PAGES                0x0063
 #define _SC_MONOTONIC_CLOCK             0x0064
 
+#define _SC_2_PBS               0x0065
+#define _SC_2_PBS_ACCOUNTING    0x0066
+#define _SC_2_PBS_CHECKPOINT    0x0067
+#define _SC_2_PBS_LOCATE        0x0068
+#define _SC_2_PBS_MESSAGE       0x0069
+#define _SC_2_PBS_TRACK         0x006a
+#define _SC_ADVISORY_INFO       0x006b
+#define _SC_BARRIERS            0x006c
+#define _SC_CLOCK_SELECTION     0x006d
+#define _SC_CPUTIME             0x006e
+#define _SC_HOST_NAME_MAX       0x006f
+#define _SC_IPV6                0x0070
+#define _SC_RAW_SOCKETS         0x0071
+#define _SC_READER_WRITER_LOCKS 0x0072
+#define _SC_REGEXP              0x0073
+#define _SC_SHELL               0x0074
+#define _SC_SPAWN               0x0075
+#define _SC_SPIN_LOCKS          0x0076
+#define _SC_SPORADIC_SERVER     0x0077
+#define _SC_SS_REPL_MAX         0x0078
+#define _SC_SYMLOOP_MAX         0x0079
+#define _SC_THREAD_CPUTIME      0x007a
+#define _SC_THREAD_PROCESS_SHARED       0x007b
+#define _SC_THREAD_ROBUST_PRIO_INHERIT  0x007c
+#define _SC_THREAD_ROBUST_PRIO_PROTECT  0x007d
+#define _SC_THREAD_SPORADIC_SERVER      0x007e
+#define _SC_TIMEOUTS            0x007f
+#define _SC_TRACE               0x0080
+#define _SC_TRACE_EVENT_FILTER  0x0081
+#define _SC_TRACE_EVENT_NAME_MAX  0x0082
+#define _SC_TRACE_INHERIT       0x0083
+#define _SC_TRACE_LOG           0x0084
+#define _SC_TRACE_NAME_MAX      0x0085
+#define _SC_TRACE_SYS_MAX       0x0086
+#define _SC_TRACE_USER_EVENT_MAX  0x0087
+#define _SC_TYPED_MEMORY_OBJECTS  0x0088
+#define _SC_V7_ILP32_OFF32      0x0089
+#define _SC_V7_ILP32_OFFBIG     0x008a
+#define _SC_V7_LP64_OFF64       0x008b
+#define _SC_V7_LPBIG_OFFBIG     0x008c
+#define _SC_XOPEN_STREAMS       0x008d
+#define _SC_XOPEN_UUCP          0x008e
+
+#define _SC_LEVEL1_ICACHE_SIZE      0x008f
+#define _SC_LEVEL1_ICACHE_ASSOC     0x0090
+#define _SC_LEVEL1_ICACHE_LINESIZE  0x0091
+#define _SC_LEVEL1_DCACHE_SIZE      0x0092
+#define _SC_LEVEL1_DCACHE_ASSOC     0x0093
+#define _SC_LEVEL1_DCACHE_LINESIZE  0x0094
+#define _SC_LEVEL2_CACHE_SIZE       0x0095
+#define _SC_LEVEL2_CACHE_ASSOC      0x0096
+#define _SC_LEVEL2_CACHE_LINESIZE   0x0097
+#define _SC_LEVEL3_CACHE_SIZE       0x0098
+#define _SC_LEVEL3_CACHE_ASSOC      0x0099
+#define _SC_LEVEL3_CACHE_LINESIZE   0x009a
+#define _SC_LEVEL4_CACHE_SIZE       0x009b
+#define _SC_LEVEL4_CACHE_ASSOC      0x009c
+#define _SC_LEVEL4_CACHE_LINESIZE   0x009d
+
 long sysconf(int);
 
 __END_DECLS
diff --git a/libc/include/sys/sysinfo.h b/libc/include/sys/sysinfo.h
index c7e46e6..b66bc8e 100644
--- a/libc/include/sys/sysinfo.h
+++ b/libc/include/sys/sysinfo.h
@@ -33,7 +33,15 @@
 
 __BEGIN_DECLS
 
-extern int sysinfo (struct sysinfo *info);
+int sysinfo(struct sysinfo* info);
+
+int get_nprocs_conf(void);
+
+int get_nprocs(void);
+
+long get_phys_pages(void);
+
+long get_avphys_pages(void);
 
 __END_DECLS
 
diff --git a/libc/include/sys/types.h b/libc/include/sys/types.h
index a5fa692..a6b0fd8 100644
--- a/libc/include/sys/types.h
+++ b/libc/include/sys/types.h
@@ -90,16 +90,14 @@
 typedef __kernel_time_t __time_t;
 typedef __time_t time_t;
 
-/* This historical accident means that we had a 32-bit off_t on 32-bit architectures. */
-#if !defined(__LP64__)
-typedef __kernel_off_t off_t;
-typedef __kernel_loff_t loff_t;
+#if defined(__USE_FILE_OFFSET64) || defined(__LP64__)
+typedef int64_t off_t;
+typedef off_t loff_t;
 typedef loff_t off64_t;
 #else
-/* We could re-use the LP32 definitions, but that would mean that although off_t and loff_t/off64_t
- * would be the same size, they wouldn't actually be the same type, which can lead to warnings. */
+/* This historical accident means that we had a 32-bit off_t on 32-bit architectures. */
 typedef __kernel_off_t off_t;
-typedef off_t loff_t;
+typedef __kernel_loff_t loff_t;
 typedef loff_t off64_t;
 #endif
 
diff --git a/libc/include/sys/ucontext.h b/libc/include/sys/ucontext.h
index dd2a0bb..b68d704 100644
--- a/libc/include/sys/ucontext.h
+++ b/libc/include/sys/ucontext.h
@@ -180,6 +180,25 @@
   } fp_r;
 } fpregset_t;
 
+#ifdef __LP64__
+typedef struct {
+  gregset_t gregs;
+  fpregset_t fpregs;
+  greg_t mdhi;
+  greg_t hi1;
+  greg_t hi2;
+  greg_t hi3;
+  greg_t mdlo;
+  greg_t lo1;
+  greg_t lo2;
+  greg_t lo3;
+  greg_t pc;
+  uint32_t fpc_csr;
+  uint32_t used_math;
+  uint32_t dsp;
+  uint32_t reserved;
+} mcontext_t;
+#else
 typedef struct {
   unsigned regmask;
   unsigned status;
@@ -200,6 +219,7 @@
   unsigned long hi3;
   unsigned long lo3;
 } mcontext_t;
+#endif
 
 typedef struct ucontext {
   unsigned long uc_flags;
@@ -209,10 +229,6 @@
   sigset_t uc_sigmask;
 } ucontext_t;
 
-#elif defined(__mips64__)
-
-#error TODO
-
 #elif defined(__x86_64__)
 
 enum {
diff --git a/libc/include/sys/user.h b/libc/include/sys/user.h
index 0e36825..b370add 100644
--- a/libc/include/sys/user.h
+++ b/libc/include/sys/user.h
@@ -31,6 +31,7 @@
 
 #include <sys/cdefs.h>
 #include <limits.h> /* For PAGE_SIZE. */
+#include <stddef.h> /* For size_t. */
 
 __BEGIN_DECLS
 
diff --git a/libc/include/sys/vfs.h b/libc/include/sys/vfs.h
index 5358ffb..1fbc8be 100644
--- a/libc/include/sys/vfs.h
+++ b/libc/include/sys/vfs.h
@@ -25,6 +25,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_VFS_H_
 #define _SYS_VFS_H_
 
@@ -114,50 +115,27 @@
 #define _STATFS_F_FRSIZE
 #define _STATFS_F_FLAGS
 
-#define  ADFS_SUPER_MAGIC      0xadf5
-#define  AFFS_SUPER_MAGIC      0xADFF
-#define  BEFS_SUPER_MAGIC      0x42465331
-#define  BFS_MAGIC             0x1BADFACE
-#define  CIFS_MAGIC_NUMBER     0xFF534D42
-#define  CODA_SUPER_MAGIC      0x73757245
-#define  COH_SUPER_MAGIC       0x012FF7B7
-#define  CRAMFS_MAGIC          0x28cd3d45
-#define  DEVFS_SUPER_MAGIC     0x1373
-#define  EFS_SUPER_MAGIC       0x00414A53
-#define  EXT_SUPER_MAGIC       0x137D
-#define  EXT2_OLD_SUPER_MAGIC  0xEF51
-#define  EXT2_SUPER_MAGIC      0xEF53
-#define  EXT3_SUPER_MAGIC      0xEF53
-#define  HFS_SUPER_MAGIC       0x4244
-#define  HPFS_SUPER_MAGIC      0xF995E849
-#define  HUGETLBFS_MAGIC       0x958458f6
-#define  ISOFS_SUPER_MAGIC     0x9660
-#define  JFFS2_SUPER_MAGIC     0x72b6
-#define  JFS_SUPER_MAGIC       0x3153464a
-#define  MINIX_SUPER_MAGIC     0x137F /* orig. minix */
-#define  MINIX_SUPER_MAGIC2    0x138F /* 30 char minix */
-#define  MINIX2_SUPER_MAGIC    0x2468 /* minix V2 */
-#define  MINIX2_SUPER_MAGIC2   0x2478 /* minix V2, 30 char names */
-#define  MSDOS_SUPER_MAGIC     0x4d44
-#define  NCP_SUPER_MAGIC       0x564c
-#define  NFS_SUPER_MAGIC       0x6969
-#define  NTFS_SB_MAGIC         0x5346544e
-#define  OPENPROM_SUPER_MAGIC  0x9fa1
-#define  PROC_SUPER_MAGIC      0x9fa0
-#define  QNX4_SUPER_MAGIC      0x002f
-#define  REISERFS_SUPER_MAGIC  0x52654973
-#define  ROMFS_MAGIC           0x7275
-#define  SMB_SUPER_MAGIC       0x517B
-#define  SYSV2_SUPER_MAGIC     0x012FF7B6
-#define  SYSV4_SUPER_MAGIC     0x012FF7B5
-#define  TMPFS_MAGIC           0x01021994
-#define  UDF_SUPER_MAGIC       0x15013346
-#define  UFS_MAGIC             0x00011954
-#define  USBDEVICE_SUPER_MAGIC 0x9fa2
-#define  VXFS_SUPER_MAGIC      0xa501FCF5
-#define  XENIX_SUPER_MAGIC     0x012FF7B4
-#define  XFS_SUPER_MAGIC       0x58465342
-#define  _XIAFS_SUPER_MAGIC    0x012FD16D
+/* Pull in the kernel magic numbers. */
+#include <linux/magic.h>
+/* Add in ones that we had historically that aren't in the uapi header. */
+#define BEFS_SUPER_MAGIC      0x42465331
+#define BFS_MAGIC             0x1BADFACE
+#define CIFS_MAGIC_NUMBER     0xFF534D42
+#define COH_SUPER_MAGIC       0x012FF7B7
+#define DEVFS_SUPER_MAGIC     0x1373
+#define EXT_SUPER_MAGIC       0x137D
+#define EXT2_OLD_SUPER_MAGIC  0xEF51
+#define HFS_SUPER_MAGIC       0x4244
+#define JFS_SUPER_MAGIC       0x3153464a
+#define NTFS_SB_MAGIC         0x5346544e
+#define ROMFS_MAGIC           0x7275
+#define SYSV2_SUPER_MAGIC     0x012FF7B6
+#define SYSV4_SUPER_MAGIC     0x012FF7B5
+#define UDF_SUPER_MAGIC       0x15013346
+#define UFS_MAGIC             0x00011954
+#define VXFS_SUPER_MAGIC      0xa501FCF5
+#define XENIX_SUPER_MAGIC     0x012FF7B4
+#define XFS_SUPER_MAGIC       0x58465342
 
 extern int statfs(const char*, struct statfs*) __nonnull((1, 2));
 extern int statfs64(const char*, struct statfs64*) __nonnull((1, 2));
diff --git a/libc/include/syslog.h b/libc/include/syslog.h
index cbceab2..8000f03 100644
--- a/libc/include/syslog.h
+++ b/libc/include/syslog.h
@@ -47,6 +47,7 @@
 
 #define LOG_PRIMASK 7
 #define LOG_PRI(x) ((x) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
 
 /* Facilities are currently ignored on Android. */
 #define LOG_KERN     0000
diff --git a/libc/include/termios.h b/libc/include/termios.h
index b9685ca..683fde2 100644
--- a/libc/include/termios.h
+++ b/libc/include/termios.h
@@ -35,6 +35,7 @@
 
 __BEGIN_DECLS
 
+#if __ANDROID_API__ >= 21
 speed_t cfgetispeed(const struct termios*);
 speed_t cfgetospeed(const struct termios*);
 void cfmakeraw(struct termios*);
@@ -48,6 +49,9 @@
 pid_t tcgetsid(int);
 int tcsendbreak(int, int);
 int tcsetattr(int, int, const struct termios*);
+#else
+#include <android/legacy_termios_inlines.h>
+#endif
 
 __END_DECLS
 
diff --git a/libc/include/time.h b/libc/include/time.h
index 34a53b2..1b0f6a1 100644
--- a/libc/include/time.h
+++ b/libc/include/time.h
@@ -85,8 +85,12 @@
 
 extern clock_t clock(void) __LIBC_ABI_PUBLIC__;
 
-extern int clock_getres(int, struct timespec*) __LIBC_ABI_PUBLIC__;
-extern int clock_gettime(int, struct timespec*) __LIBC_ABI_PUBLIC__;
+extern int clock_getcpuclockid(pid_t, clockid_t*) __LIBC_ABI_PUBLIC__;
+
+extern int clock_getres(clockid_t, struct timespec*) __LIBC_ABI_PUBLIC__;
+extern int clock_gettime(clockid_t, struct timespec*) __LIBC_ABI_PUBLIC__;
+extern int clock_nanosleep(clockid_t, int, const struct timespec*, struct timespec*) __LIBC_ABI_PUBLIC__;
+extern int clock_settime(clockid_t, const struct timespec*) __LIBC_ABI_PUBLIC__;
 
 extern int timer_create(int, struct sigevent*, timer_t*) __LIBC_ABI_PUBLIC__;
 extern int timer_delete(timer_t) __LIBC_ABI_PUBLIC__;
diff --git a/libc/include/uchar.h b/libc/include/uchar.h
index e1fcb5c..0ec9d2e 100644
--- a/libc/include/uchar.h
+++ b/libc/include/uchar.h
@@ -34,6 +34,11 @@
 
 __BEGIN_DECLS
 
+#if defined(__GNUC__) && __GNUC__ >= 5 && !defined(__cplusplus)
+typedef __CHAR16_TYPE__ char16_t;
+typedef __CHAR32_TYPE__ char32_t;
+#endif
+
 #define __STD_UTF_16__ 1
 #define __STD_UTF_32__ 1
 
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index 1bfdb0e..f0de29e 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -25,6 +25,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _UNISTD_H_
 #define _UNISTD_H_
 
@@ -33,20 +34,45 @@
 #include <sys/types.h>
 #include <sys/select.h>
 #include <sys/sysconf.h>
-#include <pathconf.h>
+
+#include <machine/posix_limits.h>
 
 __BEGIN_DECLS
 
-/* Standard file descriptor numbers. */
 #define STDIN_FILENO	0
 #define STDOUT_FILENO	1
 #define STDERR_FILENO	2
 
-/* Values for whence in fseek and lseek */
+#define F_OK 0
+#define X_OK 1
+#define W_OK 2
+#define R_OK 4
+
 #define SEEK_SET 0
 #define SEEK_CUR 1
 #define SEEK_END 2
 
+#define _PC_FILESIZEBITS 0
+#define _PC_LINK_MAX 1
+#define _PC_MAX_CANON 2
+#define _PC_MAX_INPUT 3
+#define _PC_NAME_MAX 4
+#define _PC_PATH_MAX 5
+#define _PC_PIPE_BUF 6
+#define _PC_2_SYMLINKS 7
+#define _PC_ALLOC_SIZE_MIN 8
+#define _PC_REC_INCR_XFER_SIZE 9
+#define _PC_REC_MAX_XFER_SIZE 10
+#define _PC_REC_MIN_XFER_SIZE 11
+#define _PC_REC_XFER_ALIGN 12
+#define _PC_SYMLINK_MAX 13
+#define _PC_CHOWN_RESTRICTED 14
+#define _PC_NO_TRUNC 15
+#define _PC_VDISABLE 16
+#define _PC_ASYNC_IO 17
+#define _PC_PRIO_IO 18
+#define _PC_SYNC_IO 19
+
 extern char** environ;
 
 extern __noreturn void _exit(int);
@@ -90,17 +116,9 @@
 extern int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
 extern int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
 extern char* getlogin(void);
-extern char* getusershell(void);
-extern void setusershell(void);
-extern void endusershell(void);
 
-
-
-/* Macros for access() */
-#define R_OK  4  /* Read */
-#define W_OK  2  /* Write */
-#define X_OK  1  /* Execute */
-#define F_OK  0  /* Existence */
+extern long fpathconf(int, int);
+extern long pathconf(const char*, int);
 
 extern int access(const char*, int);
 extern int faccessat(int, const char*, int, int);
@@ -112,7 +130,7 @@
 extern int fchdir(int);
 extern int rmdir(const char *);
 extern int pipe(int *);
-#ifdef _GNU_SOURCE
+#if defined(__USE_GNU)
 extern int pipe2(int *, int);
 #endif
 extern int chroot(const char *);
@@ -124,34 +142,40 @@
 extern int fchown(int, uid_t, gid_t);
 extern int fchownat(int, const char*, uid_t, gid_t, int);
 extern int lchown(const char *, uid_t, gid_t);
-extern int truncate(const char *, off_t);
-extern int truncate64(const char *, off64_t);
 extern char *getcwd(char *, size_t);
 
 extern int sync(void);
 
 extern int close(int);
-extern off_t lseek(int, off_t, int);
-extern off64_t lseek64(int, off64_t, int);
 
 extern ssize_t read(int, void *, size_t);
 extern ssize_t write(int, const void *, size_t);
-extern ssize_t pread(int, void *, size_t, off_t);
-extern ssize_t pread64(int, void *, size_t, off64_t);
-extern ssize_t pwrite(int, const void *, size_t, off_t);
-extern ssize_t pwrite64(int, const void *, size_t, off64_t);
 
 extern int dup(int);
 extern int dup2(int, int);
-#ifdef _GNU_SOURCE
 extern int dup3(int, int, int);
-#endif
 extern int fcntl(int, int, ...);
 extern int ioctl(int, int, ...);
-extern int flock(int, int);
 extern int fsync(int);
 extern int fdatasync(int);
+
+#if defined(__USE_FILE_OFFSET64)
+extern int truncate(const char *, off_t) __RENAME(truncate64);
+extern off_t lseek(int, off_t, int) __RENAME(lseek64);
+extern ssize_t pread(int, void *, size_t, off_t) __RENAME(pread64);
+extern ssize_t pwrite(int, const void *, size_t, off_t) __RENAME(pwrite64);
+extern int ftruncate(int, off_t) __RENAME(ftruncate64);
+#else
+extern int truncate(const char *, off_t);
+extern off_t lseek(int, off_t, int);
+extern ssize_t pread(int, void *, size_t, off_t);
+extern ssize_t pwrite(int, const void *, size_t, off_t);
 extern int ftruncate(int, off_t);
+#endif
+extern int truncate64(const char *, off64_t);
+extern off64_t lseek64(int, off64_t, int);
+extern ssize_t pread64(int, void *, size_t, off64_t);
+extern ssize_t pwrite64(int, const void *, size_t, off64_t);
 extern int ftruncate64(int, off64_t);
 
 extern int pause(void);
@@ -159,7 +183,8 @@
 extern unsigned int sleep(unsigned int);
 extern int usleep(useconds_t);
 
-extern int gethostname(char *, size_t);
+int gethostname(char*, size_t);
+int sethostname(const char*, size_t);
 
 extern void *__brk(void *);
 extern int brk(void *);
@@ -170,7 +195,7 @@
 extern int optind, opterr, optopt;
 
 extern int isatty(int);
-extern char* ttyname(int) __warnattr("ttyname is not thread-safe; use ttyname_r instead");
+extern char* ttyname(int);
 extern int ttyname_r(int, char*, size_t);
 
 extern int  acct(const char*  filepath);
@@ -179,6 +204,8 @@
 
 long sysconf(int);
 
+long syscall(long number, ...);
+
 extern int daemon(int, int);
 
 #if defined(__arm__) || (defined(__mips__) && !defined(__LP64__))
@@ -197,13 +224,89 @@
     } while (_rc == -1 && errno == EINTR); \
     _rc; })
 
+extern ssize_t __pread_chk(int, void*, size_t, off_t, size_t);
+__errordecl(__pread_dest_size_error, "pread called with size bigger than destination");
+__errordecl(__pread_count_toobig_error, "pread called with count > SSIZE_MAX");
+extern ssize_t __pread_real(int, void*, size_t, off_t) __RENAME(pread);
+
+extern ssize_t __pread64_chk(int, void*, size_t, off64_t, size_t);
+__errordecl(__pread64_dest_size_error, "pread64 called with size bigger than destination");
+__errordecl(__pread64_count_toobig_error, "pread64 called with count > SSIZE_MAX");
+extern ssize_t __pread64_real(int, void*, size_t, off64_t) __RENAME(pread64);
+
 extern ssize_t __read_chk(int, void*, size_t, size_t);
 __errordecl(__read_dest_size_error, "read called with size bigger than destination");
 __errordecl(__read_count_toobig_error, "read called with count > SSIZE_MAX");
 extern ssize_t __read_real(int, void*, size_t) __RENAME(read);
 
+extern ssize_t __readlink_chk(const char*, char*, size_t, size_t);
+__errordecl(__readlink_dest_size_error, "readlink called with size bigger than destination");
+__errordecl(__readlink_size_toobig_error, "readlink called with size > SSIZE_MAX");
+extern ssize_t __readlink_real(const char*, char*, size_t) __RENAME(readlink);
+
+extern ssize_t __readlinkat_chk(int dirfd, const char*, char*, size_t, size_t);
+__errordecl(__readlinkat_dest_size_error, "readlinkat called with size bigger than destination");
+__errordecl(__readlinkat_size_toobig_error, "readlinkat called with size > SSIZE_MAX");
+extern ssize_t __readlinkat_real(int dirfd, const char*, char*, size_t) __RENAME(readlinkat);
+
 #if defined(__BIONIC_FORTIFY)
 
+#if defined(__USE_FILE_OFFSET64)
+#define __PREAD_PREFIX(x) __pread64_ ## x
+#else
+#define __PREAD_PREFIX(x) __pread_ ## x
+#endif
+
+__BIONIC_FORTIFY_INLINE
+ssize_t pread(int fd, void* buf, size_t count, off_t offset) {
+    size_t bos = __bos0(buf);
+
+#if !defined(__clang__)
+    if (__builtin_constant_p(count) && (count > SSIZE_MAX)) {
+        __PREAD_PREFIX(count_toobig_error)();
+    }
+
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __PREAD_PREFIX(real)(fd, buf, count, offset);
+    }
+
+    if (__builtin_constant_p(count) && (count > bos)) {
+        __PREAD_PREFIX(dest_size_error)();
+    }
+
+    if (__builtin_constant_p(count) && (count <= bos)) {
+        return __PREAD_PREFIX(real)(fd, buf, count, offset);
+    }
+#endif
+
+    return __PREAD_PREFIX(chk)(fd, buf, count, offset, bos);
+}
+
+__BIONIC_FORTIFY_INLINE
+ssize_t pread64(int fd, void* buf, size_t count, off64_t offset) {
+    size_t bos = __bos0(buf);
+
+#if !defined(__clang__)
+    if (__builtin_constant_p(count) && (count > SSIZE_MAX)) {
+        __pread64_count_toobig_error();
+    }
+
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __pread64_real(fd, buf, count, offset);
+    }
+
+    if (__builtin_constant_p(count) && (count > bos)) {
+        __pread64_dest_size_error();
+    }
+
+    if (__builtin_constant_p(count) && (count <= bos)) {
+        return __pread64_real(fd, buf, count, offset);
+    }
+#endif
+
+    return __pread64_chk(fd, buf, count, offset, bos);
+}
+
 __BIONIC_FORTIFY_INLINE
 ssize_t read(int fd, void* buf, size_t count) {
     size_t bos = __bos0(buf);
@@ -228,6 +331,57 @@
 
     return __read_chk(fd, buf, count, bos);
 }
+
+__BIONIC_FORTIFY_INLINE
+ssize_t readlink(const char* path, char* buf, size_t size) {
+    size_t bos = __bos(buf);
+
+#if !defined(__clang__)
+    if (__builtin_constant_p(size) && (size > SSIZE_MAX)) {
+        __readlink_size_toobig_error();
+    }
+
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __readlink_real(path, buf, size);
+    }
+
+    if (__builtin_constant_p(size) && (size > bos)) {
+        __readlink_dest_size_error();
+    }
+
+    if (__builtin_constant_p(size) && (size <= bos)) {
+        return __readlink_real(path, buf, size);
+    }
+#endif
+
+    return __readlink_chk(path, buf, size, bos);
+}
+
+__BIONIC_FORTIFY_INLINE
+ssize_t readlinkat(int dirfd, const char* path, char* buf, size_t size) {
+    size_t bos = __bos(buf);
+
+#if !defined(__clang__)
+    if (__builtin_constant_p(size) && (size > SSIZE_MAX)) {
+        __readlinkat_size_toobig_error();
+    }
+
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __readlinkat_real(dirfd, path, buf, size);
+    }
+
+    if (__builtin_constant_p(size) && (size > bos)) {
+        __readlinkat_dest_size_error();
+    }
+
+    if (__builtin_constant_p(size) && (size <= bos)) {
+        return __readlinkat_real(dirfd, path, buf, size);
+    }
+#endif
+
+    return __readlinkat_chk(dirfd, path, buf, size, bos);
+}
+
 #endif /* defined(__BIONIC_FORTIFY) */
 
 __END_DECLS
diff --git a/libc/include/utmp.h b/libc/include/utmp.h
index d764227..ebf2372 100644
--- a/libc/include/utmp.h
+++ b/libc/include/utmp.h
@@ -91,6 +91,8 @@
 void setutent();
 struct utmp* getutent();
 
+int login_tty(int);
+
 __END_DECLS
 
 #endif /* _UTMP_H_ */
diff --git a/libc/include/wchar.h b/libc/include/wchar.h
index e0e5c82..ea6aca0 100644
--- a/libc/include/wchar.h
+++ b/libc/include/wchar.h
@@ -34,6 +34,7 @@
 #include <stdarg.h>
 #include <stddef.h>
 #include <time.h>
+#include <xlocale.h>
 
 #include <machine/wchar_limits.h>
 
@@ -110,8 +111,11 @@
 extern int vswscanf(const wchar_t*, const wchar_t*, va_list);
 extern int vwprintf(const wchar_t*, va_list);
 extern int vwscanf(const wchar_t*, va_list);
+extern wchar_t* wcpcpy (wchar_t*, const wchar_t *);
+extern wchar_t* wcpncpy (wchar_t*, const wchar_t *, size_t);
 extern size_t            wcrtomb(char *, wchar_t, mbstate_t *);
 extern int               wcscasecmp(const wchar_t *, const wchar_t *);
+extern int               wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
 extern wchar_t          *wcscat(wchar_t *, const wchar_t *);
 extern wchar_t          *wcschr(const wchar_t *, wchar_t);
 extern int               wcscmp(const wchar_t *, const wchar_t *);
@@ -121,6 +125,7 @@
 extern size_t            wcsftime(wchar_t *, size_t, const wchar_t *, const struct tm *) __LIBC_ABI_PUBLIC__;
 extern size_t            wcslen(const wchar_t *);
 extern int               wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
+extern int               wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
 extern wchar_t          *wcsncat(wchar_t *, const wchar_t *, size_t);
 extern int               wcsncmp(const wchar_t *, const wchar_t *, size_t);
 extern wchar_t          *wcsncpy(wchar_t *, const wchar_t *, size_t);
@@ -146,6 +151,9 @@
 extern wchar_t          *wmemchr(const wchar_t *, wchar_t, size_t);
 extern int               wmemcmp(const wchar_t *, const wchar_t *, size_t);
 extern wchar_t          *wmemcpy(wchar_t *, const wchar_t *, size_t);
+#if defined(__USE_GNU)
+extern wchar_t          *wmempcpy(wchar_t *, const wchar_t *, size_t);
+#endif
 extern wchar_t          *wmemmove(wchar_t *, const wchar_t *, size_t);
 extern wchar_t          *wmemset(wchar_t *, wchar_t, size_t);
 extern int               wprintf(const wchar_t *, ...);
@@ -166,6 +174,7 @@
 extern wctrans_t wctrans(const char*);
 
 #if __POSIX_VISIBLE >= 200809
+FILE* open_wmemstream(wchar_t**, size_t*);
 wchar_t* wcsdup(const wchar_t*);
 size_t wcsnlen(const wchar_t*, size_t);
 #endif
diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py
index 6601817..0e0ed76 100755
--- a/libc/kernel/tools/clean_header.py
+++ b/libc/kernel/tools/clean_header.py
@@ -60,12 +60,7 @@
 #   using them anyway.
 #
 #
-# 3. Whitespace cleanup:
-#
-#   The final pass removes any comments and empty lines from the final headers.
-#
-#
-# 4. Add a standard disclaimer:
+# 3. Add a standard disclaimer:
 #
 #   The message:
 #
@@ -141,8 +136,9 @@
 
     # now, let's parse the file
     #
-    blocks = cpp.BlockParser().parseFile(path)
-    if not blocks:
+    parser = cpp.BlockParser()
+    blocks = parser.parseFile(path)
+    if not parser.parsed:
         sys.stderr.write( "error: can't parse '%s'" % path )
         sys.exit(1)
 
@@ -157,9 +153,7 @@
     blocks.optimizeIf01()
     blocks.removeVarsAndFuncs( statics )
     blocks.replaceTokens( kernel_token_replacements )
-    blocks.removeComments()
     blocks.removeMacroDefines( kernel_ignored_macros )
-    blocks.removeWhiteSpace()
 
     out = StringOutput()
     out.write( kernel_disclaimer )
@@ -199,8 +193,7 @@
         if opt == '-u':
             noUpdate = 0
         elif opt == '-v':
-            verbose = 1
-            D_setlevel(1)
+            logging.basicConfig(level=logging.DEBUG)
         elif opt == '-k':
             kernel_original_path = arg
         elif opt == '-d':
diff --git a/libc/kernel/tools/cpp.py b/libc/kernel/tools/cpp.py
index 2be9532..10ce290 100644
--- a/libc/kernel/tools/cpp.py
+++ b/libc/kernel/tools/cpp.py
@@ -1,560 +1,403 @@
-# a glorified C pre-processor parser
+#!/usr/bin/python
+"""A glorified C pre-processor parser."""
 
-import sys, re, string
-from utils import *
-from defaults import *
+import ctypes
+import logging
+import os
+import re
+import site
+import utils
 
-debugTokens             = False
-debugDirectiveTokenizer = False
-debugLineParsing        = False
-debugCppExpr            = False
-debugOptimIf01          = False
+top = os.getenv('ANDROID_BUILD_TOP')
+if top is None:
+    utils.panic('ANDROID_BUILD_TOP not set.\n')
 
-#####################################################################################
-#####################################################################################
-#####                                                                           #####
-#####           C P P   T O K E N S                                             #####
-#####                                                                           #####
-#####################################################################################
-#####################################################################################
+# Set up the env vars for libclang.
+site.addsitedir(os.path.join(top, 'external/clang/bindings/python'))
+
+import clang.cindex
+from clang.cindex import conf
+from clang.cindex import Cursor
+from clang.cindex import CursorKind
+from clang.cindex import SourceLocation
+from clang.cindex import SourceRange
+from clang.cindex import TokenGroup
+from clang.cindex import TokenKind
+from clang.cindex import TranslationUnit
+
+# Set up LD_LIBRARY_PATH to include libclang.so, libLLVM.so, and etc.
+# Note that setting LD_LIBRARY_PATH with os.putenv() sometimes doesn't help.
+clang.cindex.Config.set_library_path(os.path.join(top, 'prebuilts/sdk/tools/linux/lib64'))
+
+from defaults import kCppUndefinedMacro
+from defaults import kernel_remove_config_macros
+from defaults import kernel_token_replacements
+
+
+debugBlockParser = False
+debugCppExpr = False
+debugOptimIf01 = False
+
+###############################################################################
+###############################################################################
+#####                                                                     #####
+#####           C P P   T O K E N S                                       #####
+#####                                                                     #####
+###############################################################################
+###############################################################################
 
 # the list of supported C-preprocessor tokens
 # plus a couple of C tokens as well
-tokEOF       = "\0"
-tokLN        = "\n"
+tokEOF = "\0"
+tokLN = "\n"
 tokSTRINGIFY = "#"
-tokCONCAT    = "##"
-tokLOGICAND  = "&&"
-tokLOGICOR   = "||"
-tokSHL       = "<<"
-tokSHR       = ">>"
-tokEQUAL     = "=="
-tokNEQUAL    = "!="
-tokLT        = "<"
-tokLTE       = "<="
-tokGT        = ">"
-tokGTE       = ">="
-tokELLIPSIS  = "..."
-tokSPACE     = " "
-tokDEFINED   = "defined"
-tokLPAREN    = "("
-tokRPAREN    = ")"
-tokNOT       = "!"
-tokPLUS      = "+"
-tokMINUS     = "-"
-tokMULTIPLY  = "*"
-tokDIVIDE    = "/"
-tokMODULUS   = "%"
-tokBINAND    = "&"
-tokBINOR     = "|"
-tokBINXOR    = "^"
-tokCOMMA     = ","
-tokLBRACE    = "{"
-tokRBRACE    = "}"
-tokARROW     = "->"
+tokCONCAT = "##"
+tokLOGICAND = "&&"
+tokLOGICOR = "||"
+tokSHL = "<<"
+tokSHR = ">>"
+tokEQUAL = "=="
+tokNEQUAL = "!="
+tokLT = "<"
+tokLTE = "<="
+tokGT = ">"
+tokGTE = ">="
+tokELLIPSIS = "..."
+tokSPACE = " "
+tokDEFINED = "defined"
+tokLPAREN = "("
+tokRPAREN = ")"
+tokNOT = "!"
+tokPLUS = "+"
+tokMINUS = "-"
+tokMULTIPLY = "*"
+tokDIVIDE = "/"
+tokMODULUS = "%"
+tokBINAND = "&"
+tokBINOR = "|"
+tokBINXOR = "^"
+tokCOMMA = ","
+tokLBRACE = "{"
+tokRBRACE = "}"
+tokARROW = "->"
 tokINCREMENT = "++"
 tokDECREMENT = "--"
-tokNUMBER    = "<number>"
-tokIDENT     = "<ident>"
-tokSTRING    = "<string>"
+tokNUMBER = "<number>"
+tokIDENT = "<ident>"
+tokSTRING = "<string>"
 
-class Token:
-    """a simple class to hold information about a given token.
-       each token has a position in the source code, as well as
-       an 'id' and a 'value'. the id is a string that identifies
-       the token's class, while the value is the string of the
-       original token itself.
 
-       for example, the tokenizer concatenates a series of spaces
-       and tabs as a single tokSPACE id, whose value if the original
-       spaces+tabs sequence."""
+class Token(clang.cindex.Token):
+    """A class that represents one token after parsing.
 
-    def __init__(self):
-        self.id     = None
-        self.value  = None
-        self.lineno = 0
-        self.colno  = 0
+    It inherits the class in libclang, with an extra id property to hold the
+    new spelling of the token. The spelling property in the base class is
+    defined as read-only. New names after macro instantiation are saved in
+    their ids now. It also facilitates the renaming of directive optimizations
+    like replacing 'ifndef X' with 'if !defined(X)'.
 
-    def set(self,id,val=None):
-        self.id = id
-        if val:
-            self.value = val
+    It also overrides the cursor property of the base class. Because the one
+    in libclang always queries based on a single token, which usually doesn't
+    hold useful information. The cursor in this class can be set by calling
+    CppTokenizer.getTokensWithCursors(). Otherwise it returns the one in the
+    base class.
+    """
+
+    def __init__(self, tu=None, group=None, int_data=None, ptr_data=None,
+                 cursor=None):
+        clang.cindex.Token.__init__(self)
+        self._id = None
+        self._tu = tu
+        self._group = group
+        self._cursor = cursor
+        # self.int_data and self.ptr_data are from the base class. But
+        # self.int_data doesn't accept a None value.
+        if int_data is not None:
+            self.int_data = int_data
+        self.ptr_data = ptr_data
+
+    @property
+    def id(self):
+        """Name of the token."""
+        if self._id is None:
+            return self.spelling
         else:
-            self.value = id
-        return None
+            return self._id
 
-    def copyFrom(self,src):
-        self.id     = src.id
-        self.value  = src.value
-        self.lineno = src.lineno
-        self.colno  = src.colno
+    @id.setter
+    def id(self, new_id):
+        """Setting name of the token."""
+        self._id = new_id
+
+    @property
+    def cursor(self):
+        if self._cursor is None:
+            self._cursor = clang.cindex.Token.cursor
+        return self._cursor
+
+    @cursor.setter
+    def cursor(self, new_cursor):
+        self._cursor = new_cursor
 
     def __repr__(self):
-        if self.id == tokIDENT:
-            return "(ident %s)" % self.value
-        if self.id == tokNUMBER:
-            return "(number %s)" % self.value
-        if self.id == tokSTRING:
-            return "(string '%s')" % self.value
-        if self.id == tokLN:
-            return "<LN>"
-        if self.id == tokEOF:
-            return "<EOF>"
-        if self.id == tokSPACE and self.value == "\\":
-            # this corresponds to a trailing \ that was transformed into a tokSPACE
-            return "<\\>"
+        if self.id == 'defined':
+            return self.id
+        elif self.kind == TokenKind.IDENTIFIER:
+            return "(ident %s)" % self.id
 
         return self.id
 
     def __str__(self):
-        if self.id == tokIDENT:
-            return self.value
-        if self.id == tokNUMBER:
-            return self.value
-        if self.id == tokSTRING:
-            return self.value
-        if self.id == tokEOF:
-            return "<EOF>"
-        if self.id == tokSPACE:
-            if self.value == "\\":  # trailing \
-                return "\\\n"
-            else:
-                return self.value
-
         return self.id
 
+
 class BadExpectedToken(Exception):
-    def __init__(self,msg):
-        print msg
+    """An exception that will be raised for unexpected tokens."""
+    pass
 
 
-#####################################################################################
-#####################################################################################
-#####                                                                           #####
-#####           C P P   T O K E N I Z E R                                       #####
-#####                                                                           #####
-#####################################################################################
-#####################################################################################
+# The __contains__ function in libclang SourceRange class contains a bug. It
+# gives wrong result when dealing with single line range.
+# Bug filed with upstream:
+# http://llvm.org/bugs/show_bug.cgi?id=22243, http://reviews.llvm.org/D7277
+def SourceRange__contains__(self, other):
+    """Determine if a given location is inside the range."""
+    if not isinstance(other, SourceLocation):
+        return False
+    if other.file is None and self.start.file is None:
+        pass
+    elif (self.start.file.name != other.file.name or
+          other.file.name != self.end.file.name):
+        # same file name
+        return False
+    # same file, in between lines
+    if self.start.line < other.line < self.end.line:
+        return True
+    # same file, same line
+    elif self.start.line == other.line == self.end.line:
+        if self.start.column <= other.column <= self.end.column:
+            return True
+    elif self.start.line == other.line:
+        # same file first line
+        if self.start.column <= other.column:
+            return True
+    elif other.line == self.end.line:
+        # same file last line
+        if other.column <= self.end.column:
+            return True
+    return False
 
-# list of long symbols, i.e. those that take more than one characters
-cppLongSymbols = [ tokCONCAT, tokLOGICAND, tokLOGICOR, tokSHL, tokSHR, tokELLIPSIS, tokEQUAL,\
-                   tokNEQUAL, tokLTE, tokGTE, tokARROW, tokINCREMENT, tokDECREMENT ]
 
-class CppTokenizer:
-    """an abstract class used to convert some input text into a list
-       of tokens. real implementations follow and differ in the format
-       of the input text only"""
+SourceRange.__contains__ = SourceRange__contains__
+
+
+################################################################################
+################################################################################
+#####                                                                      #####
+#####           C P P   T O K E N I Z E R                                  #####
+#####                                                                      #####
+################################################################################
+################################################################################
+
+
+class CppTokenizer(object):
+    """A tokenizer that converts some input text into a list of tokens.
+
+    It calls libclang's tokenizer to get the parsed tokens. In addition, it
+    updates the cursor property in each token after parsing, by calling
+    getTokensWithCursors().
+    """
+
+    clang_flags = ['-E', '-x', 'c']
+    options = TranslationUnit.PARSE_DETAILED_PROCESSING_RECORD
 
     def __init__(self):
-        """initialize a new CppTokenizer object"""
-        self.eof  = False  # end of file reached ?
-        self.text = None   # content of current line, with final \n stripped
-        self.line = 0      # number of current line
-        self.pos  = 0      # current character position in current line
-        self.len  = 0      # length of current line text
-        self.held = Token()
+        """Initialize a new CppTokenizer object."""
+        self._indexer = clang.cindex.Index.create()
+        self._tu = None
+        self._index = 0
+        self.tokens = None
 
-    def setLineText(self,line):
-        """set the content of the (next) current line. should be called
-           by fillLineText() in derived classes"""
-        self.text = line
-        self.len  = len(line)
-        self.pos  = 0
+    def _getTokensWithCursors(self):
+        """Helper method to return all tokens with their cursors.
 
-    def fillLineText(self):
-        """refresh the content of 'line' with a new line of input"""
-        # to be overriden
-        self.eof = True
+        The cursor property in a clang Token doesn't provide enough
+        information. Because it is queried based on single token each time
+        without any context, i.e. via calling conf.lib.clang_annotateTokens()
+        with only one token given. So we often see 'INVALID_FILE' in one
+        token's cursor. In this function it passes all the available tokens
+        to get more informative cursors.
+        """
 
-    def markPos(self,tok):
-        """mark the position of the current token in the source file"""
-        if self.eof or self.pos > self.len:
-            tok.lineno = self.line + 1
-            tok.colno  = 0
+        tokens_memory = ctypes.POINTER(clang.cindex.Token)()
+        tokens_count = ctypes.c_uint()
+
+        conf.lib.clang_tokenize(self._tu, self._tu.cursor.extent,
+                                ctypes.byref(tokens_memory),
+                                ctypes.byref(tokens_count))
+
+        count = int(tokens_count.value)
+
+        # If we get no tokens, no memory was allocated. Be sure not to return
+        # anything and potentially call a destructor on nothing.
+        if count < 1:
+            return
+
+        cursors = (Cursor * count)()
+        cursors_memory = ctypes.cast(cursors, ctypes.POINTER(Cursor))
+
+        conf.lib.clang_annotateTokens(self._tu, tokens_memory, count,
+                                      cursors_memory)
+
+        tokens_array = ctypes.cast(
+            tokens_memory,
+            ctypes.POINTER(clang.cindex.Token * count)).contents
+        token_group = TokenGroup(self._tu, tokens_memory, tokens_count)
+
+        tokens = []
+        for i in xrange(0, count):
+            token = Token(self._tu, token_group,
+                          int_data=tokens_array[i].int_data,
+                          ptr_data=tokens_array[i].ptr_data,
+                          cursor=cursors[i])
+            # We only want non-comment tokens.
+            if token.kind != TokenKind.COMMENT:
+                tokens.append(token)
+
+        return tokens
+
+    def parseString(self, lines):
+        """Parse a list of text lines into a BlockList object."""
+        file_ = 'dummy.c'
+        self._tu = self._indexer.parse(file_, self.clang_flags,
+                                       unsaved_files=[(file_, lines)],
+                                       options=self.options)
+        self.tokens = self._getTokensWithCursors()
+
+    def parseFile(self, file_):
+        """Parse a file into a BlockList object."""
+        self._tu = self._indexer.parse(file_, self.clang_flags,
+                                       options=self.options)
+        self.tokens = self._getTokensWithCursors()
+
+    def nextToken(self):
+        """Return next token from the list."""
+        if self._index < len(self.tokens):
+            t = self.tokens[self._index]
+            self._index += 1
+            return t
         else:
-            tok.lineno = self.line
-            tok.colno  = self.pos
-
-    def peekChar(self):
-        """return the current token under the cursor without moving it"""
-        if self.eof:
-            return tokEOF
-
-        if self.pos > self.len:
-            self.pos   = 0
-            self.line += 1
-            self.fillLineText()
-            if self.eof:
-                return tokEOF
-
-        if self.pos == self.len:
-            return tokLN
-        else:
-            return self.text[self.pos]
-
-    def peekNChar(self,n):
-        """try to peek the next n chars on the same line"""
-        if self.pos + n > self.len:
             return None
-        return self.text[self.pos:self.pos+n]
 
-    def skipChar(self):
-        """increment the token cursor position"""
-        if not self.eof:
-            self.pos += 1
 
-    def skipNChars(self,n):
-        if self.pos + n <= self.len:
-            self.pos += n
-        else:
-            while n > 0:
-                self.skipChar()
-                n -= 1
+class CppStringTokenizer(CppTokenizer):
+    """A CppTokenizer derived class that accepts a string of text as input."""
 
-    def nextChar(self):
-        """retrieve the token at the current cursor position, then skip it"""
-        result = self.peekChar()
-        self.skipChar()
-        return  result
-
-    def getEscape(self):
-        # try to get all characters after a backslash (\)
-        result = self.nextChar()
-        if result == "0":
-            # octal number ?
-            num = self.peekNChar(3)
-            if num != None:
-                isOctal = True
-                for d in num:
-                    if not d in "01234567":
-                        isOctal = False
-                        break
-                if isOctal:
-                    result += num
-                    self.skipNChars(3)
-        elif result == "x" or result == "X":
-            # hex number ?
-            num = self.peekNChar(2)
-            if num != None:
-                isHex = True
-                for d in num:
-                    if not d in "012345678abcdefABCDEF":
-                        isHex = False
-                        break
-                if isHex:
-                    result += num
-                    self.skipNChars(2)
-        elif result == "u" or result == "U":
-            # unicode char ?
-            num = self.peekNChar(4)
-            if num != None:
-                isHex = True
-                for d in num:
-                    if not d in "012345678abcdefABCDEF":
-                        isHex = False
-                        break
-                if isHex:
-                    result += num
-                    self.skipNChars(4)
-
-        return result
-
-    def nextRealToken(self,tok):
-        """return next CPP token, used internally by nextToken()"""
-        c = self.nextChar()
-        if c == tokEOF or c == tokLN:
-            return tok.set(c)
-
-        if c == '/':
-            c = self.peekChar()
-            if c == '/':   # C++ comment line
-                self.skipChar()
-                while 1:
-                    c = self.nextChar()
-                    if c == tokEOF or c == tokLN:
-                        break
-                return tok.set(tokLN)
-            if c == '*':   # C comment start
-                self.skipChar()
-                value = "/*"
-                prev_c = None
-                while 1:
-                    c = self.nextChar()
-                    if c == tokEOF:
-                        return tok.set(tokEOF,value)
-                    if c == '/' and prev_c == '*':
-                        break
-                    prev_c = c
-                    value += c
-
-                value += "/"
-                return tok.set(tokSPACE,value)
-            c = '/'
-
-        if c.isspace():
-            while 1:
-                c2 = self.peekChar()
-                if c2 == tokLN or not c2.isspace():
-                    break
-                c += c2
-                self.skipChar()
-            return tok.set(tokSPACE,c)
-
-        if c == '\\':
-            if debugTokens:
-                print "nextRealToken: \\ found, next token is '%s'" % repr(self.peekChar())
-            if self.peekChar() == tokLN:   # trailing \
-                # eat the tokLN
-                self.skipChar()
-                # we replace a trailing \ by a tokSPACE whose value is
-                # simply "\\". this allows us to detect them later when
-                # needed.
-                return tok.set(tokSPACE,"\\")
-            else:
-                # treat as a single token here ?
-                c +=self.getEscape()
-                return tok.set(c)
-
-        if c == "'":  # chars
-            c2 = self.nextChar()
-            c += c2
-            if c2 == '\\':
-                c += self.getEscape()
-
-            while 1:
-                c2 = self.nextChar()
-                if c2 == tokEOF:
-                    break
-                c += c2
-                if c2 == "'":
-                    break
-
-            return tok.set(tokSTRING, c)
-
-        if c == '"':  # strings
-            quote = 0
-            while 1:
-                c2  = self.nextChar()
-                if c2 == tokEOF:
-                    return tok.set(tokSTRING,c)
-
-                c += c2
-                if not quote:
-                    if c2 == '"':
-                        return tok.set(tokSTRING,c)
-                    if c2 == "\\":
-                        quote = 1
-                else:
-                    quote = 0
-
-        if c >= "0" and c <= "9":  # integers ?
-            while 1:
-                c2 = self.peekChar()
-                if c2 == tokLN or (not c2.isalnum() and c2 != "_"):
-                    break
-                c += c2
-                self.skipChar()
-            return tok.set(tokNUMBER,c)
-
-        if c.isalnum() or c == "_":  # identifiers ?
-            while 1:
-                c2 = self.peekChar()
-                if c2 == tokLN or (not c2.isalnum() and c2 != "_"):
-                    break
-                c += c2
-                self.skipChar()
-            if c == tokDEFINED:
-                return tok.set(tokDEFINED)
-            else:
-                return tok.set(tokIDENT,c)
-
-        # check special symbols
-        for sk in cppLongSymbols:
-            if c == sk[0]:
-                sklen = len(sk[1:])
-                if self.pos + sklen <= self.len and \
-                   self.text[self.pos:self.pos+sklen] == sk[1:]:
-                    self.pos += sklen
-                    return tok.set(sk)
-
-        return tok.set(c)
-
-    def nextToken(self,tok):
-        """return the next token from the input text. this function
-           really updates 'tok', and does not return a new one"""
-        self.markPos(tok)
-        self.nextRealToken(tok)
-
-    def getToken(self):
-        tok = Token()
-        self.nextToken(tok)
-        if debugTokens:
-            print "getTokens: %s" % repr(tok)
-        return tok
-
-    def toTokenList(self):
-        """convert the input text of a CppTokenizer into a direct
-           list of token objects. tokEOF is stripped from the result"""
-        result = []
-        while 1:
-            tok = Token()
-            self.nextToken(tok)
-            if tok.id == tokEOF:
-                break
-            result.append(tok)
-        return result
-
-class CppLineTokenizer(CppTokenizer):
-    """a CppTokenizer derived class that accepts a single line of text as input"""
-    def __init__(self,line,lineno=1):
+    def __init__(self, line):
         CppTokenizer.__init__(self)
-        self.line = lineno
-        self.setLineText(line)
-
-
-class CppLinesTokenizer(CppTokenizer):
-    """a CppTokenizer derived class that accepts a list of texdt lines as input.
-       the lines must not have a trailing \n"""
-    def __init__(self,lines=[],lineno=1):
-        """initialize a CppLinesTokenizer. you can later add lines using addLines()"""
-        CppTokenizer.__init__(self)
-        self.line  = lineno
-        self.lines = lines
-        self.index = 0
-        self.count = len(lines)
-
-        if self.count > 0:
-            self.fillLineText()
-        else:
-            self.eof = True
-
-    def addLine(self,line):
-        """add a line to a CppLinesTokenizer. this can be done after tokenization
-           happens"""
-        if self.count == 0:
-            self.setLineText(line)
-            self.index = 1
-        self.lines.append(line)
-        self.count += 1
-        self.eof    = False
-
-    def fillLineText(self):
-        if self.index < self.count:
-            self.setLineText(self.lines[self.index])
-            self.index += 1
-        else:
-            self.eof = True
+        self.parseString(line)
 
 
 class CppFileTokenizer(CppTokenizer):
-    def __init__(self,file,lineno=1):
-        CppTokenizer.__init__(self)
-        self.file = file
-        self.line = lineno
+    """A CppTokenizer derived class that accepts a file as input."""
 
-    def fillLineText(self):
-        line = self.file.readline()
-        if len(line) > 0:
-            if line[-1] == '\n':
-                line = line[:-1]
-            if len(line) > 0 and line[-1] == "\r":
-                line = line[:-1]
-            self.setLineText(line)
-        else:
-            self.eof = True
+    def __init__(self, file_):
+        CppTokenizer.__init__(self)
+        self.parseFile(file_)
+
 
 # Unit testing
 #
-class CppTokenizerTester:
-    """a class used to test CppTokenizer classes"""
-    def __init__(self,tokenizer=None):
-        self.tokenizer = tokenizer
-        self.token     = Token()
+class CppTokenizerTester(object):
+    """A class used to test CppTokenizer classes."""
 
-    def setTokenizer(self,tokenizer):
-        self.tokenizer = tokenizer
+    def __init__(self, tokenizer=None):
+        self._tokenizer = tokenizer
+        self._token = None
 
-    def expect(self,id):
-        self.tokenizer.nextToken(self.token)
-        tokid = self.token.id
+    def setTokenizer(self, tokenizer):
+        self._tokenizer = tokenizer
+
+    def expect(self, id):
+        self._token = self._tokenizer.nextToken()
+        if self._token is None:
+            tokid = ''
+        else:
+            tokid = self._token.id
         if tokid == id:
             return
-        if self.token.value == id and (tokid == tokIDENT or tokid == tokNUMBER):
-            return
-        raise BadExpectedToken, "###  BAD TOKEN: '%s' expecting '%s'" % (self.token.id,id)
+        raise BadExpectedToken("###  BAD TOKEN: '%s' expecting '%s'" % (
+            tokid, id))
 
-    def expectToken(self,id,line,col):
+    def expectToken(self, id, line, col):
         self.expect(id)
-        if self.token.lineno != line:
-            raise BadExpectedToken, "###  BAD LINENO: token '%s' got '%d' expecting '%d'" % (id,self.token.lineno,line)
-        if self.token.colno != col:
-            raise BadExpectedToken, "###  BAD COLNO: '%d' expecting '%d'" % (self.token.colno,col)
+        if self._token.location.line != line:
+            raise BadExpectedToken(
+                "###  BAD LINENO: token '%s' got '%d' expecting '%d'" % (
+                    id, self._token.lineno, line))
+        if self._token.location.column != col:
+            raise BadExpectedToken("###  BAD COLNO: '%d' expecting '%d'" % (
+                self._token.colno, col))
 
-    def expectTokenVal(self,id,value,line,col):
-        self.expectToken(id,line,col)
-        if self.token.value != value:
-            raise BadExpectedToken, "###  BAD VALUE: '%s' expecting '%s'" % (self.token.value,value)
+    def expectTokens(self, tokens):
+        for id, line, col in tokens:
+            self.expectToken(id, line, col)
 
-    def expectList(self,list):
-        for item in list:
+    def expectList(self, list_):
+        for item in list_:
             self.expect(item)
 
+
 def test_CppTokenizer():
     tester = CppTokenizerTester()
 
-    tester.setTokenizer( CppLineTokenizer("#an/example  && (01923_xy)") )
-    tester.expectList( ["#", "an", "/", "example", tokSPACE, tokLOGICAND, tokSPACE, tokLPAREN, "01923_xy", \
-                       tokRPAREN, tokLN, tokEOF] )
+    tester.setTokenizer(CppStringTokenizer("#an/example  && (01923_xy)"))
+    tester.expectList(["#", "an", "/", "example", tokLOGICAND, tokLPAREN,
+                       "01923_xy", tokRPAREN])
 
-    tester.setTokenizer( CppLineTokenizer("FOO(BAR) && defined(BAZ)") )
-    tester.expectList( ["FOO", tokLPAREN, "BAR", tokRPAREN, tokSPACE, tokLOGICAND, tokSPACE,
-                        tokDEFINED, tokLPAREN, "BAZ", tokRPAREN, tokLN, tokEOF] )
+    tester.setTokenizer(CppStringTokenizer("FOO(BAR) && defined(BAZ)"))
+    tester.expectList(["FOO", tokLPAREN, "BAR", tokRPAREN, tokLOGICAND,
+                       "defined", tokLPAREN, "BAZ", tokRPAREN])
 
-    tester.setTokenizer( CppLinesTokenizer( ["/*", "#", "*/"] ) )
-    tester.expectList( [ tokSPACE, tokLN, tokEOF ] )
+    tester.setTokenizer(CppStringTokenizer("/*\n#\n*/"))
+    tester.expectList([])
 
-    tester.setTokenizer( CppLinesTokenizer( ["first", "second"] ) )
-    tester.expectList( [ "first", tokLN, "second", tokLN, tokEOF ] )
+    tester.setTokenizer(CppStringTokenizer("first\nsecond"))
+    tester.expectList(["first", "second"])
 
-    tester.setTokenizer( CppLinesTokenizer( ["first second", "  third"] ) )
-    tester.expectToken( "first", 1, 0 )
-    tester.expectToken( tokSPACE, 1, 5 )
-    tester.expectToken( "second", 1, 6 )
-    tester.expectToken( tokLN, 1, 12 )
-    tester.expectToken( tokSPACE, 2, 0 )
-    tester.expectToken( "third", 2, 2 )
+    tester.setTokenizer(CppStringTokenizer("first second\n  third"))
+    tester.expectTokens([("first", 1, 1),
+                         ("second", 1, 7),
+                         ("third", 2, 3)])
 
-    tester.setTokenizer( CppLinesTokenizer( [ "boo /* what the", "hell */" ] ) )
-    tester.expectList( [ "boo", tokSPACE ] )
-    tester.expectTokenVal( tokSPACE, "/* what the\nhell */", 1, 4 )
-    tester.expectList( [ tokLN, tokEOF ] )
+    tester.setTokenizer(CppStringTokenizer("boo /* what the\nhell */"))
+    tester.expectTokens([("boo", 1, 1)])
 
-    tester.setTokenizer( CppLinesTokenizer( [ "an \\", " example" ] ) )
-    tester.expectToken( "an", 1, 0 )
-    tester.expectToken( tokSPACE, 1, 2 )
-    tester.expectTokenVal( tokSPACE, "\\", 1, 3 )
-    tester.expectToken( tokSPACE, 2, 0 )
-    tester.expectToken( "example", 2, 1 )
-    tester.expectToken( tokLN, 2, 8 )
-
+    tester.setTokenizer(CppStringTokenizer("an \\\n example"))
+    tester.expectTokens([("an", 1, 1),
+                         ("example", 2, 2)])
     return True
 
 
-#####################################################################################
-#####################################################################################
-#####                                                                           #####
-#####           C P P   E X P R E S S I O N S                                   #####
-#####                                                                           #####
-#####################################################################################
-#####################################################################################
+################################################################################
+################################################################################
+#####                                                                      #####
+#####           C P P   E X P R E S S I O N S                              #####
+#####                                                                      #####
+################################################################################
+################################################################################
 
-class CppExpr:
-    """a class that models the condition of #if directives into
-        an expression tree. each node in the tree is of the form (op,arg) or (op,arg1,arg2)
-        where "op" is a string describing the operation"""
 
-    unaries  = [ "!", "~" ]
-    binaries = [ "+", "-", "<", "<=", ">=", ">", "&&", "||", "*", "/", "%", "&", "|", "^", "<<", ">>", "==", "!=", "?", ":" ]
+class CppExpr(object):
+    """A class that models the condition of #if directives into an expr tree.
+
+    Each node in the tree is of the form (op, arg) or (op, arg1, arg2) where
+    "op" is a string describing the operation
+    """
+
+    unaries = ["!", "~"]
+    binaries = ["+", "-", "<", "<=", ">=", ">", "&&", "||", "*", "/", "%",
+                "&", "|", "^", "<<", ">>", "==", "!=", "?", ":"]
     precedences = {
         "?": 1, ":": 1,
         "||": 2,
@@ -570,197 +413,191 @@
         "!": 12, "~": 12
     }
 
-    re_cpp_constant = re.compile(r"((\d|\w|_)+)")
-
     def __init__(self, tokens):
-        """initialize a CppExpr. 'tokens' must be a CppToken list"""
-        self.tok  = tokens
-        self.n    = len(tokens)
-        self.i    = 0
+        """Initialize a CppExpr. 'tokens' must be a CppToken list."""
+        self.tokens = tokens
+        self._num_tokens = len(tokens)
+        self._index = 0
+
         if debugCppExpr:
             print "CppExpr: trying to parse %s" % repr(tokens)
         self.expr = self.parseExpression(0)
         if debugCppExpr:
             print "CppExpr: got " + repr(self.expr)
-        if self.i != self.n:
-            print 'crap at end of input (%d != %d): %s' % (self.i, self.n, repr(tokens))
-            raise
-
+        if self._index != self._num_tokens:
+            self.throw(BadExpectedToken, "crap at end of input (%d != %d): %s"
+                       % (self._index, self._num_tokens, repr(tokens)))
 
     def throw(self, exception, msg):
-        if self.i < self.n:
-            tok = self.tok[self.i]
-            print "%d:%d: %s" % (tok.lineno,tok.colno,msg)
+        if self._index < self._num_tokens:
+            tok = self.tokens[self._index]
+            print "%d:%d: %s" % (tok.location.line, tok.location.column, msg)
         else:
             print "EOF: %s" % msg
         raise exception(msg)
 
-
-    def skip_spaces(self):
-        """skip spaces in input token list"""
-        while self.i < self.n:
-            t = self.tok[self.i]
-            if t.id != tokSPACE and t.id != tokLN:
-                break
-            self.i += 1
-
-
     def expectId(self, id):
-        """check that a given token id is at the current position, then skip over it"""
-        self.skip_spaces()
-        if self.i >= self.n or self.tok[self.i].id != id:
-            self.throw(BadExpectedToken,self.i,"### expecting '%s' in expression, got '%s'" % (id, self.tok[self.i].id))
-        self.i += 1
-
-
-    def expectIdent(self):
-        self.skip_spaces()
-        if self.i >= self.n or self.tok[self.i].id != tokIDENT:
-            self.throw(BadExpectedToken, self.i,"### expecting identifier in expression, got '%s'" % (id, self.tok[self.i].id))
-        self.i += 1
-
+        """Check that a given token id is at the current position."""
+        token = self.tokens[self._index]
+        if self._index >= self._num_tokens or token.id != id:
+            self.throw(BadExpectedToken,
+                       "### expecting '%s' in expression, got '%s'" % (
+                           id, token.id))
+        self._index += 1
 
     def is_decimal(self):
-        v = self.tok[self.i].value[:]
-        while len(v) > 0 and v[-1] in "ULul":
-            v = v[:-1]
-        for digit in v:
-            if not digit.isdigit():
-                return None
-
-        self.i += 1
-        return ("int", string.atoi(v))
-
-
-    def is_hexadecimal(self):
-        v = self.tok[self.i].value[:]
-        while len(v) > 0 and v[-1] in "ULul":
-            v = v[:-1]
-        if len(v) > 2 and (v[0:2] == "0x" or v[0:2] == "0X"):
-            for digit in v[2:]:
-                if not digit in "0123456789abcdefABCDEF":
-                    return None
-
-            # for a hex expression tuple, the argument
-            # is the value as an integer
-            self.i += 1
-            return ("hex", int(v[2:], 16))
-
-        return None
-
-
-    def is_integer(self):
-        if self.tok[self.i].id != tokNUMBER:
+        token = self.tokens[self._index].id
+        if token[-1] in "ULul":
+            token = token[:-1]
+        try:
+            val = int(token, 10)
+            self._index += 1
+            return ('int', val)
+        except ValueError:
             return None
 
-        c = self.is_decimal()
-        if c: return c
+    def is_octal(self):
+        token = self.tokens[self._index].id
+        if token[-1] in "ULul":
+            token = token[:-1]
+        if len(token) < 2 or token[0] != '0':
+            return None
+        try:
+            val = int(token, 8)
+            self._index += 1
+            return ('oct', val)
+        except ValueError:
+            return None
+
+    def is_hexadecimal(self):
+        token = self.tokens[self._index].id
+        if token[-1] in "ULul":
+            token = token[:-1]
+        if len(token) < 3 or (token[:2] != '0x' and token[:2] != '0X'):
+            return None
+        try:
+            val = int(token, 16)
+            self._index += 1
+            return ('hex', val)
+        except ValueError:
+            return None
+
+    def is_integer(self):
+        if self.tokens[self._index].kind != TokenKind.LITERAL:
+            return None
 
         c = self.is_hexadecimal()
-        if c: return c
+        if c:
+            return c
+
+        c = self.is_octal()
+        if c:
+            return c
+
+        c = self.is_decimal()
+        if c:
+            return c
 
         return None
 
-
     def is_number(self):
-        t = self.tok[self.i]
-        if t.id == tokMINUS and self.i+1 < self.n:
-            self.i += 1
+        t = self.tokens[self._index]
+        if t.id == tokMINUS and self._index + 1 < self._num_tokens:
+            self._index += 1
             c = self.is_integer()
             if c:
-                op, val  = c
+                op, val = c
                 return (op, -val)
-        if t.id == tokPLUS and self.i+1 < self.n:
+        if t.id == tokPLUS and self._index + 1 < self._num_tokens:
+            self._index += 1
             c = self.is_integer()
-            if c: return c
+            if c:
+                return c
 
         return self.is_integer()
 
-
     def is_defined(self):
-        t = self.tok[self.i]
+        t = self.tokens[self._index]
         if t.id != tokDEFINED:
             return None
 
-        # we have the defined keyword, check the rest
-        self.i += 1
-        self.skip_spaces()
-        used_parens = 0
-        if self.i < self.n and self.tok[self.i].id == tokLPAREN:
-            used_parens = 1
-            self.i += 1
-            self.skip_spaces()
+        # We have the defined keyword, check the rest.
+        self._index += 1
+        used_parens = False
+        if (self._index < self._num_tokens and
+            self.tokens[self._index].id == tokLPAREN):
+            used_parens = True
+            self._index += 1
 
-        if self.i >= self.n:
-            self.throw(CppConstantExpected,i,"### 'defined' must be followed  by macro name or left paren")
+        if self._index >= self._num_tokens:
+            self.throw(BadExpectedToken,
+                       "### 'defined' must be followed by macro name or left "
+                       "paren")
 
-        t = self.tok[self.i]
-        if t.id != tokIDENT:
-            self.throw(CppConstantExpected,i,"### 'defined' must be followed by macro name")
+        t = self.tokens[self._index]
+        if t.kind != TokenKind.IDENTIFIER:
+            self.throw(BadExpectedToken,
+                       "### 'defined' must be followed by macro name")
 
-        self.i += 1
+        self._index += 1
         if used_parens:
             self.expectId(tokRPAREN)
 
-        return ("defined", t.value)
-
+        return ("defined", t.id)
 
     def is_call_or_ident(self):
-        self.skip_spaces()
-        if self.i >= self.n:
+        if self._index >= self._num_tokens:
             return None
 
-        t = self.tok[self.i]
-        if t.id != tokIDENT:
+        t = self.tokens[self._index]
+        if t.kind != TokenKind.IDENTIFIER:
             return None
 
-        name = t.value
+        name = t.id
 
-        self.i += 1
-        self.skip_spaces()
-        if self.i >= self.n or self.tok[self.i].id != tokLPAREN:
+        self._index += 1
+        if (self._index >= self._num_tokens or
+            self.tokens[self._index].id != tokLPAREN):
             return ("ident", name)
 
-        params    = []
-        depth     = 1
-        self.i += 1
-        j  = self.i
-        while self.i < self.n:
-            id = self.tok[self.i].id
+        params = []
+        depth = 1
+        self._index += 1
+        j = self._index
+        while self._index < self._num_tokens:
+            id = self.tokens[self._index].id
             if id == tokLPAREN:
                 depth += 1
             elif depth == 1 and (id == tokCOMMA or id == tokRPAREN):
-                while j < self.i and self.tok[j].id == tokSPACE:
-                    j += 1
-                k = self.i
-                while k > j and self.tok[k-1].id == tokSPACE:
-                    k -= 1
-                param = self.tok[j:k]
+                k = self._index
+                param = self.tokens[j:k]
                 params.append(param)
                 if id == tokRPAREN:
                     break
-                j = self.i+1
+                j = self._index + 1
             elif id == tokRPAREN:
                 depth -= 1
-            self.i += 1
+            self._index += 1
 
-        if self.i >= self.n:
+        if self._index >= self._num_tokens:
             return None
 
-        self.i += 1
+        self._index += 1
         return ("call", (name, params))
 
+    # Implements the "precedence climbing" algorithm from
+    # http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm.
+    # The "classic" algorithm would be fine if we were using a tool to
+    # generate the parser, but we're not. Dijkstra's "shunting yard"
+    # algorithm hasn't been necessary yet.
 
-    # Implements the "precedence climbing" algorithm from http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm.
-    # The "classic" algorithm would be fine if we were using a tool to generate the parser, but we're not.
-    # Dijkstra's "shunting yard" algorithm hasn't been necessary yet.
     def parseExpression(self, minPrecedence):
-        self.skip_spaces()
-        if self.i >= self.n:
+        if self._index >= self._num_tokens:
             return None
 
         node = self.parsePrimary()
-        while self.token() != None and self.isBinary(self.token()) and self.precedence(self.token()) >= minPrecedence:
+        while (self.token() and self.isBinary(self.token()) and
+               self.precedence(self.token()) >= minPrecedence):
             op = self.token()
             self.nextToken()
             rhs = self.parseExpression(self.precedence(op) + 1)
@@ -768,7 +605,6 @@
 
         return node
 
-
     def parsePrimary(self):
         op = self.token()
         if self.isUnary(op):
@@ -784,51 +620,47 @@
             self.nextToken()
             primary = self.parseExpression(0)
             self.expectId(":")
-        elif op.id == tokNUMBER:
+        elif op.id == '+' or op.id == '-' or op.kind == TokenKind.LITERAL:
             primary = self.is_number()
-        elif op.id == tokIDENT:
-            primary = self.is_call_or_ident()
+        # Checking for 'defined' needs to come first now because 'defined' is
+        # recognized as IDENTIFIER.
         elif op.id == tokDEFINED:
             primary = self.is_defined()
+        elif op.kind == TokenKind.IDENTIFIER:
+            primary = self.is_call_or_ident()
         else:
-            self.throw(BadExpectedToken, "didn't expect to see a %s in factor" % (self.tok[self.i].id))
-
-        self.skip_spaces()
-
-        return primary;
-
+            self.throw(BadExpectedToken,
+                       "didn't expect to see a %s in factor" % (
+                           self.tokens[self._index].id))
+        return primary
 
     def isBinary(self, token):
         return token.id in self.binaries
 
-
     def isUnary(self, token):
         return token.id in self.unaries
 
-
     def precedence(self, token):
         return self.precedences.get(token.id)
 
-
     def token(self):
-        if self.i >= self.n:
+        if self._index >= self._num_tokens:
             return None
-        return self.tok[self.i]
-
+        return self.tokens[self._index]
 
     def nextToken(self):
-        self.i += 1
-        self.skip_spaces()
-        if self.i >= self.n:
+        self._index += 1
+        if self._index >= self._num_tokens:
             return None
-        return self.tok[self.i]
-
+        return self.tokens[self._index]
 
     def dump_node(self, e):
         op = e[0]
         line = "(" + op
         if op == "int":
             line += " %d)" % e[1]
+        elif op == "oct":
+            line += " 0%o)" % e[1]
         elif op == "hex":
             line += " 0x%x)" % e[1]
         elif op == "ident":
@@ -864,31 +696,33 @@
             return "%d" % e[1]
         if op == "hex":
             return "0x%x" % e[1]
+        if op == "oct":
+            return "0%o" % e[1]
         if op == "ident":
             # XXX: should try to expand
             return e[1]
         if op == "defined":
             return "defined(%s)" % e[1]
 
-        prec = CppExpr.precedences.get(op,1000)
-        arg  = e[1]
+        prec = CppExpr.precedences.get(op, 1000)
+        arg = e[1]
         if op in CppExpr.unaries:
             arg_src = self.source_node(arg)
-            arg_op  = arg[0]
-            arg_prec = CppExpr.precedences.get(arg[0],1000)
+            arg_op = arg[0]
+            arg_prec = CppExpr.precedences.get(arg_op, 1000)
             if arg_prec < prec:
                 return "!(" + arg_src + ")"
             else:
                 return "!" + arg_src
         if op in CppExpr.binaries:
-            arg2     = e[2]
-            arg1_op  = arg[0]
-            arg2_op  = arg2[0]
+            arg2 = e[2]
+            arg1_op = arg[0]
+            arg2_op = arg2[0]
             arg1_src = self.source_node(arg)
             arg2_src = self.source_node(arg2)
-            if CppExpr.precedences.get(arg1_op,1000) < prec:
+            if CppExpr.precedences.get(arg1_op, 1000) < prec:
                 arg1_src = "(%s)" % arg1_src
-            if CppExpr.precedences.get(arg2_op,1000) < prec:
+            if CppExpr.precedences.get(arg2_op, 1000) < prec:
                 arg2_src = "(%s)" % arg2_src
 
             return "%s %s %s" % (arg1_src, op, arg2_src)
@@ -897,19 +731,21 @@
     def __str__(self):
         return self.source_node(self.expr)
 
-    def int_node(self,e):
-        if e[0] == "int":
+    @staticmethod
+    def int_node(e):
+        if e[0] in ["int", "oct", "hex"]:
             return e[1]
-        elif e[1] == "hex":
-            return int(e[1],16)
         else:
             return None
 
     def toInt(self):
         return self.int_node(self.expr)
 
-    def optimize_node(self, e, macros={}):
+    def optimize_node(self, e, macros=None):
+        if macros is None:
+            macros = {}
         op = e[0]
+
         if op == "defined":
             op, name = e
             if macros.has_key(name):
@@ -919,7 +755,7 @@
                     try:
                         value = int(macros[name])
                         return ("int", value)
-                    except:
+                    except ValueError:
                         return ("defined", macros[name])
 
             if kernel_remove_config_macros and name.startswith("CONFIG_"):
@@ -933,7 +769,7 @@
                 try:
                     value = int(macros[name])
                     expanded = ("int", value)
-                except:
+                except ValueError:
                     expanded = ("ident", macros[name])
                 return self.optimize_node(expanded, macros)
             return e
@@ -950,16 +786,16 @@
 
         elif op == "&&":
             op, l, r = e
-            l  = self.optimize_node(l, macros)
-            r  = self.optimize_node(r, macros)
+            l = self.optimize_node(l, macros)
+            r = self.optimize_node(r, macros)
             li = self.int_node(l)
             ri = self.int_node(r)
-            if li != None:
+            if li is not None:
                 if li == 0:
                     return ("int", 0)
                 else:
                     return r
-            elif ri != None:
+            elif ri is not None:
                 if ri == 0:
                     return ("int", 0)
                 else:
@@ -968,16 +804,16 @@
 
         elif op == "||":
             op, l, r = e
-            l  = self.optimize_node(l, macros)
-            r  = self.optimize_node(r, macros)
+            l = self.optimize_node(l, macros)
+            r = self.optimize_node(r, macros)
             li = self.int_node(l)
             ri = self.int_node(r)
-            if li != None:
+            if li is not None:
                 if li == 0:
                     return r
                 else:
                     return ("int", 1)
-            elif ri != None:
+            elif ri is not None:
                 if ri == 0:
                     return l
                 else:
@@ -987,50 +823,54 @@
         else:
             return e
 
-    def optimize(self,macros={}):
+    def optimize(self, macros=None):
+        if macros is None:
+            macros = {}
         self.expr = self.optimize_node(self.expr, macros)
 
-    def is_equal_node(self,e1,e2):
-        if e1[0] != e2[0] or len(e1) != len(e2):
-            return False
-
-        op = e1[0]
-        if op == "int" or op == "hex" or op == "!" or op == "defined":
-            return e1[0] == e2[0]
-
-        return self.is_equal_node(e1[1],e2[1]) and self.is_equal_node(e1[2],e2[2])
-
-    def is_equal(self,other):
-        return self.is_equal_node(self.expr,other.expr)
 
 def test_cpp_expr(expr, expected):
-    e = CppExpr( CppLineTokenizer( expr ).toTokenList() )
+    e = CppExpr(CppStringTokenizer(expr).tokens)
     s1 = repr(e)
     if s1 != expected:
-        print "[FAIL]: expression '%s' generates '%s', should be '%s'" % (expr, s1, expected)
+        print ("[FAIL]: expression '%s' generates '%s', should be "
+               "'%s'" % (expr, s1, expected))
         global failure_count
         failure_count += 1
 
-def test_cpp_expr_optim(expr, expected, macros={}):
-    e = CppExpr( CppLineTokenizer( expr ).toTokenList() )
+
+def test_cpp_expr_optim(expr, expected, macros=None):
+    if macros is None:
+        macros = {}
+    e = CppExpr(CppStringTokenizer(expr).tokens)
     e.optimize(macros)
     s1 = repr(e)
     if s1 != expected:
-        print "[FAIL]: optimized expression '%s' generates '%s' with macros %s, should be '%s'" % (expr, s1, macros, expected)
+        print ("[FAIL]: optimized expression '%s' generates '%s' with "
+               "macros %s, should be '%s'" % (expr, s1, macros, expected))
         global failure_count
         failure_count += 1
 
+
 def test_cpp_expr_source(expr, expected):
-    e = CppExpr( CppLineTokenizer( expr ).toTokenList() )
+    e = CppExpr(CppStringTokenizer(expr).tokens)
     s1 = str(e)
     if s1 != expected:
-        print "[FAIL]: source expression '%s' generates '%s', should be '%s'" % (expr, s1, expected)
+        print ("[FAIL]: source expression '%s' generates '%s', should "
+               "be '%s'" % (expr, s1, expected))
         global failure_count
         failure_count += 1
 
+
 def test_CppExpr():
     test_cpp_expr("0", "(int 0)")
     test_cpp_expr("1", "(int 1)")
+    test_cpp_expr("-5", "(int -5)")
+    test_cpp_expr("+1", "(int 1)")
+    test_cpp_expr("0U", "(int 0)")
+    test_cpp_expr("015", "(oct 015)")
+    test_cpp_expr("015l", "(oct 015)")
+    test_cpp_expr("0x3e", "(hex 0x3e)")
     test_cpp_expr("(0)", "(int 0)")
     test_cpp_expr("1 && 1", "(&& (int 1) (int 1))")
     test_cpp_expr("1 && 0", "(&& (int 1) (int 0))")
@@ -1039,13 +879,17 @@
     test_cpp_expr("defined(EXAMPLE)", "(defined EXAMPLE)")
     test_cpp_expr("defined ( EXAMPLE ) ", "(defined EXAMPLE)")
     test_cpp_expr("!defined(EXAMPLE)", "(! (defined EXAMPLE))")
-    test_cpp_expr("defined(ABC) || defined(BINGO)", "(|| (defined ABC) (defined BINGO))")
-    test_cpp_expr("FOO(BAR)", "(call FOO [BAR])")
-    test_cpp_expr("A == 1 || defined(B)", "(|| (== (ident A) (int 1)) (defined B))")
+    test_cpp_expr("defined(ABC) || defined(BINGO)",
+                  "(|| (defined ABC) (defined BINGO))")
+    test_cpp_expr("FOO(BAR,5)", "(call FOO [BAR,5])")
+    test_cpp_expr("A == 1 || defined(B)",
+                  "(|| (== (ident A) (int 1)) (defined B))")
 
     test_cpp_expr_optim("0", "(int 0)")
     test_cpp_expr_optim("1", "(int 1)")
     test_cpp_expr_optim("1 && 1", "(int 1)")
+    test_cpp_expr_optim("1 && +1", "(int 1)")
+    test_cpp_expr_optim("0x1 && 01", "(oct 01)")
     test_cpp_expr_optim("1 && 0", "(int 0)")
     test_cpp_expr_optim("0 && 1", "(int 0)")
     test_cpp_expr_optim("0 && 0", "(int 0)")
@@ -1054,32 +898,48 @@
     test_cpp_expr_optim("0 || 1", "(int 1)")
     test_cpp_expr_optim("0 || 0", "(int 0)")
     test_cpp_expr_optim("A", "(ident A)")
-    test_cpp_expr_optim("A", "(int 1)", { "A": 1 })
-    test_cpp_expr_optim("A || B", "(int 1)", { "A": 1 })
-    test_cpp_expr_optim("A || B", "(int 1)", { "B": 1 })
-    test_cpp_expr_optim("A && B", "(ident B)", { "A": 1 })
-    test_cpp_expr_optim("A && B", "(ident A)", { "B": 1 })
+    test_cpp_expr_optim("A", "(int 1)", {"A": 1})
+    test_cpp_expr_optim("A || B", "(int 1)", {"A": 1})
+    test_cpp_expr_optim("A || B", "(int 1)", {"B": 1})
+    test_cpp_expr_optim("A && B", "(ident B)", {"A": 1})
+    test_cpp_expr_optim("A && B", "(ident A)", {"B": 1})
     test_cpp_expr_optim("A && B", "(&& (ident A) (ident B))")
     test_cpp_expr_optim("EXAMPLE", "(ident EXAMPLE)")
     test_cpp_expr_optim("EXAMPLE - 3", "(- (ident EXAMPLE) (int 3))")
     test_cpp_expr_optim("defined(EXAMPLE)", "(defined EXAMPLE)")
-    test_cpp_expr_optim("defined(EXAMPLE)", "(defined XOWOE)", { "EXAMPLE": "XOWOE" })
-    test_cpp_expr_optim("defined(EXAMPLE)", "(int 0)", { "EXAMPLE": kCppUndefinedMacro})
+    test_cpp_expr_optim("defined(EXAMPLE)", "(defined XOWOE)",
+                        {"EXAMPLE": "XOWOE"})
+    test_cpp_expr_optim("defined(EXAMPLE)", "(int 0)",
+                        {"EXAMPLE": kCppUndefinedMacro})
     test_cpp_expr_optim("!defined(EXAMPLE)", "(! (defined EXAMPLE))")
-    test_cpp_expr_optim("!defined(EXAMPLE)", "(! (defined XOWOE))", { "EXAMPLE" : "XOWOE" })
-    test_cpp_expr_optim("!defined(EXAMPLE)", "(int 1)", { "EXAMPLE" : kCppUndefinedMacro })
-    test_cpp_expr_optim("defined(A) || defined(B)", "(|| (defined A) (defined B))")
-    test_cpp_expr_optim("defined(A) || defined(B)", "(int 1)", { "A" : "1" })
-    test_cpp_expr_optim("defined(A) || defined(B)", "(int 1)", { "B" : "1" })
-    test_cpp_expr_optim("defined(A) || defined(B)", "(defined A)", { "B" : kCppUndefinedMacro })
-    test_cpp_expr_optim("defined(A) || defined(B)", "(int 0)", { "A" : kCppUndefinedMacro, "B" : kCppUndefinedMacro })
-    test_cpp_expr_optim("defined(A) && defined(B)", "(&& (defined A) (defined B))")
-    test_cpp_expr_optim("defined(A) && defined(B)", "(defined B)", { "A" : "1" })
-    test_cpp_expr_optim("defined(A) && defined(B)", "(defined A)", { "B" : "1" })
-    test_cpp_expr_optim("defined(A) && defined(B)", "(int 0)", { "B" : kCppUndefinedMacro })
-    test_cpp_expr_optim("defined(A) && defined(B)", "(int 0)", { "A" : kCppUndefinedMacro })
-    test_cpp_expr_optim("A == 1 || defined(B)", "(|| (== (ident A) (int 1)) (defined B))" )
-    test_cpp_expr_optim("defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)", "(|| (! (defined __GLIBC__)) (< (ident __GLIBC__) (int 2)))", { "__KERNEL__": kCppUndefinedMacro })
+    test_cpp_expr_optim("!defined(EXAMPLE)", "(! (defined XOWOE))",
+                        {"EXAMPLE": "XOWOE"})
+    test_cpp_expr_optim("!defined(EXAMPLE)", "(int 1)",
+                        {"EXAMPLE": kCppUndefinedMacro})
+    test_cpp_expr_optim("defined(A) || defined(B)",
+                        "(|| (defined A) (defined B))")
+    test_cpp_expr_optim("defined(A) || defined(B)", "(int 1)", {"A": "1"})
+    test_cpp_expr_optim("defined(A) || defined(B)", "(int 1)", {"B": "1"})
+    test_cpp_expr_optim("defined(A) || defined(B)", "(defined A)",
+                        {"B": kCppUndefinedMacro})
+    test_cpp_expr_optim("defined(A) || defined(B)", "(int 0)",
+                        {"A": kCppUndefinedMacro, "B": kCppUndefinedMacro})
+    test_cpp_expr_optim("defined(A) && defined(B)",
+                        "(&& (defined A) (defined B))")
+    test_cpp_expr_optim("defined(A) && defined(B)",
+                        "(defined B)", {"A": "1"})
+    test_cpp_expr_optim("defined(A) && defined(B)",
+                        "(defined A)", {"B": "1"})
+    test_cpp_expr_optim("defined(A) && defined(B)", "(int 0)",
+                        {"B": kCppUndefinedMacro})
+    test_cpp_expr_optim("defined(A) && defined(B)",
+                        "(int 0)", {"A": kCppUndefinedMacro})
+    test_cpp_expr_optim("A == 1 || defined(B)",
+                        "(|| (== (ident A) (int 1)) (defined B))")
+    test_cpp_expr_optim(
+        "defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)",
+        "(|| (! (defined __GLIBC__)) (< (ident __GLIBC__) (int 2)))",
+        {"__KERNEL__": kCppUndefinedMacro})
 
     test_cpp_expr_source("0", "0")
     test_cpp_expr_source("1", "1")
@@ -1098,179 +958,176 @@
     test_cpp_expr_source("A == 1 || defined(B)", "A == 1 || defined(B)")
 
 
-#####################################################################################
-#####################################################################################
-#####                                                                           #####
-#####          C P P   B L O C K                                                #####
-#####                                                                           #####
-#####################################################################################
-#####################################################################################
+################################################################################
+################################################################################
+#####                                                                      #####
+#####          C P P   B L O C K                                           #####
+#####                                                                      #####
+################################################################################
+################################################################################
 
-class Block:
-    """a class used to model a block of input source text. there are two block types:
-        - directive blocks: contain the tokens of a single pre-processor directive (e.g. #if)
-        - text blocks, contain the tokens of non-directive blocks
 
-       the cpp parser class below will transform an input source file into a list of Block
-       objects (grouped in a BlockList object for convenience)"""
+class Block(object):
+    """A class used to model a block of input source text.
 
-    def __init__(self,tokens,directive=None,lineno=0):
-        """initialize a new block, if 'directive' is None, this is a text block
-           NOTE: this automatically converts '#ifdef MACRO' into '#if defined(MACRO)'
-                 and '#ifndef MACRO' into '#if !defined(MACRO)'"""
+    There are two block types:
+      - directive blocks: contain the tokens of a single pre-processor
+        directive (e.g. #if)
+      - text blocks, contain the tokens of non-directive blocks
+
+    The cpp parser class below will transform an input source file into a list
+    of Block objects (grouped in a BlockList object for convenience)
+    """
+
+    def __init__(self, tokens, directive=None, lineno=0, identifier=None):
+        """Initialize a new block, if 'directive' is None, it is a text block.
+
+        NOTE: This automatically converts '#ifdef MACRO' into
+        '#if defined(MACRO)' and '#ifndef MACRO' into '#if !defined(MACRO)'.
+        """
+
         if directive == "ifdef":
             tok = Token()
-            tok.set(tokDEFINED)
-            tokens = [ tok ] + tokens
+            tok.id = tokDEFINED
+            tokens = [tok] + tokens
             directive = "if"
 
         elif directive == "ifndef":
             tok1 = Token()
             tok2 = Token()
-            tok1.set(tokNOT)
-            tok2.set(tokDEFINED)
-            tokens = [ tok1, tok2 ] + tokens
+            tok1.id = tokNOT
+            tok2.id = tokDEFINED
+            tokens = [tok1, tok2] + tokens
             directive = "if"
 
-        self.tokens    = tokens
+        self.tokens = tokens
         self.directive = directive
+        self.define_id = identifier
         if lineno > 0:
             self.lineno = lineno
         else:
-            self.lineno = self.tokens[0].lineno
+            self.lineno = self.tokens[0].location.line
 
         if self.isIf():
-            self.expr = CppExpr( self.tokens )
+            self.expr = CppExpr(self.tokens)
 
     def isDirective(self):
-        """returns True iff this is a directive block"""
-        return self.directive != None
+        """Return True iff this is a directive block."""
+        return self.directive is not None
 
     def isConditional(self):
-        """returns True iff this is a conditional directive block"""
-        return self.directive in ["if","ifdef","ifndef","else","elif","endif"]
+        """Return True iff this is a conditional directive block."""
+        return self.directive in ["if", "ifdef", "ifndef", "else", "elif",
+                                  "endif"]
 
     def isDefine(self):
-        """returns the macro name in a #define directive, or None otherwise"""
+        """Return the macro name in a #define directive, or None otherwise."""
         if self.directive != "define":
             return None
-
-        return self.tokens[0].value
+        return self.define_id
 
     def isIf(self):
-        """returns True iff this is an #if-like directive block"""
-        return self.directive in ["if","ifdef","ifndef","elif"]
+        """Return True iff this is an #if-like directive block."""
+        return self.directive in ["if", "ifdef", "ifndef", "elif"]
+
+    def isEndif(self):
+        """Return True iff this is an #endif directive block."""
+        return self.directive == "endif"
 
     def isInclude(self):
-        """checks whether this is a #include directive. if true, then returns the
-           corresponding file name (with brackets or double-qoutes). None otherwise"""
+        """Check whether this is a #include directive.
+
+        If true, returns the corresponding file name (with brackets or
+        double-qoutes). None otherwise.
+        """
+
         if self.directive != "include":
             return None
+        return ''.join([str(x) for x in self.tokens])
 
-        if self.tokens[0].id == tokSTRING:
-            # a double-quote include, that's easy
-            return self.tokens[0].value
+    @staticmethod
+    def format_blocks(tokens, indent=0):
+        """Return the formatted lines of strings with proper indentation."""
+        newline = True
+        result = []
+        buf = ''
+        i = 0
+        while i < len(tokens):
+            t = tokens[i]
+            if t.id == '{':
+                buf += ' {'
+                result.append(strip_space(buf))
+                indent += 2
+                buf = ''
+                newline = True
+            elif t.id == '}':
+                indent -= 2
+                if not newline:
+                    result.append(strip_space(buf))
+                # Look ahead to determine if it's the end of line.
+                if (i + 1 < len(tokens) and
+                    (tokens[i+1].id == ';' or
+                     tokens[i+1].id in ['else', '__attribute__',
+                                        '__attribute', '__packed'] or
+                     tokens[i+1].kind == TokenKind.IDENTIFIER)):
+                    buf = ' ' * indent + '}'
+                    newline = False
+                else:
+                    result.append(' ' * indent + '}')
+                    buf = ''
+                    newline = True
+            elif t.id == ';':
+                result.append(strip_space(buf) + ';')
+                buf = ''
+                newline = True
+            # We prefer a new line for each constant in enum.
+            elif t.id == ',' and t.cursor.kind == CursorKind.ENUM_DECL:
+                result.append(strip_space(buf) + ',')
+                buf = ''
+                newline = True
+            else:
+                if newline:
+                    buf += ' ' * indent + str(t)
+                else:
+                    buf += ' ' + str(t)
+                newline = False
+            i += 1
 
-        # we only want the bracket part, not any comments or junk after it
-        if self.tokens[0].id == "<":
-            i   = 0
-            tok = self.tokens
-            n   = len(tok)
-            while i < n and tok[i].id != ">":
-                i += 1
+        if buf:
+            result.append(strip_space(buf))
 
-            if i >= n:
-                return None
+        return result, indent
 
-            return string.join([ str(x) for x in tok[:i+1] ],"")
-
-        else:
-            return None
-
-    def removeWhiteSpace(self):
-        # Remove trailing whitespace and empty lines
-        # All whitespace is also contracted to a single space
-        if self.directive != None:
-            return
-
-        tokens = []
-        line   = 0     # index of line start
-        space  = -1    # index of first space, or -1
-        ii = 0
-        nn = len(self.tokens)
-        while ii < nn:
-            tok = self.tokens[ii]
-
-            # If we find a space, record its position if this is the first
-            # one the line start or the previous character. Don't append
-            # anything to tokens array yet though.
-            if tok.id == tokSPACE:
-                if space < 0:
-                    space = ii
-                ii += 1
-                continue
-
-            # If this is a line space, ignore the spaces we found previously
-            # on the line, and remove empty lines.
-            if tok.id == tokLN:
-                old_line  = line
-                old_space = space
-                ii   += 1
-                line  = ii
-                space = -1
-                if old_space == old_line:  # line only contains spaces
-                    continue
-                if ii-1 == old_line:  # line is empty
-                    continue
-                tokens.append(tok)
-                continue
-
-            # Other token, append any space range if any, converting each
-            # one to a single space character, then append the token.
-            if space >= 0:
-                jj = space
-                space = -1
-                while jj < ii:
-                    tok2 = self.tokens[jj]
-                    tok2.value = " "
-                    tokens.append(tok2)
-                    jj += 1
-
-            tokens.append(tok)
-            ii += 1
-
-        self.tokens = tokens
-
-    def writeWithWarning(self,out,warning,left_count,repeat_count):
+    def writeWithWarning(self, out, warning, left_count, repeat_count, indent):
+        """Dump the current block with warnings."""
         # removeWhiteSpace() will sometimes creates non-directive blocks
         # without any tokens. These come from blocks that only contained
         # empty lines and spaces. They should not be printed in the final
         # output, and then should not be counted for this operation.
         #
-        if not self.directive and self.tokens == []:
-            return left_count
+        if self.directive is None and not self.tokens:
+            return left_count, indent
 
         if self.directive:
-            out.write(str(self).rstrip() + "\n")
+            out.write(str(self) + '\n')
             left_count -= 1
             if left_count == 0:
                 out.write(warning)
                 left_count = repeat_count
 
         else:
-            for tok in self.tokens:
-                out.write(str(tok))
-                if tok.id == tokLN:
-                    left_count -= 1
-                    if left_count == 0:
-                        out.write(warning)
-                        left_count = repeat_count
+            lines, indent = self.format_blocks(self.tokens, indent)
+            for line in lines:
+                out.write(line + '\n')
+                left_count -= 1
+                if left_count == 0:
+                    out.write(warning)
+                    left_count = repeat_count
 
-        return left_count
-
+        return left_count, indent
 
     def __repr__(self):
-        """generate the representation of a given block"""
+        """Generate the representation of a given block."""
         if self.directive:
             result = "#%s " % self.directive
             if self.isIf():
@@ -1286,8 +1143,9 @@
         return result
 
     def __str__(self):
-        """generate the string representation of a given block"""
+        """Generate the string representation of a given block."""
         if self.directive:
+            # "#if"
             if self.directive == "if":
                 # small optimization to re-generate #ifdef and #ifndef
                 e = self.expr.expr
@@ -1298,114 +1156,138 @@
                     result = "#ifndef %s" % e[1][1]
                 else:
                     result = "#if " + str(self.expr)
+
+            # "#define"
+            elif self.isDefine():
+                result = "#%s %s" % (self.directive, self.define_id)
+                if self.tokens:
+                    result += " "
+                expr = strip_space(' '.join([tok.id for tok in self.tokens]))
+                # remove the space between name and '(' in function call
+                result += re.sub(r'(\w+) \(', r'\1(', expr)
+
+            # "#error"
+            # Concatenating tokens with a space separator, because they may
+            # not be quoted and broken into several tokens
+            elif self.directive == "error":
+                result = "#error %s" % ' '.join([tok.id for tok in self.tokens])
+
             else:
                 result = "#%s" % self.directive
-                if len(self.tokens):
+                if self.tokens:
                     result += " "
-                for tok in self.tokens:
-                    result += str(tok)
+                result += ''.join([tok.id for tok in self.tokens])
         else:
-            result = ""
-            for tok in self.tokens:
-                result += str(tok)
+            lines, _ = self.format_blocks(self.tokens)
+            result = '\n'.join(lines)
 
         return result
 
-class BlockList:
-    """a convenience class used to hold and process a list of blocks returned by
-       the cpp parser"""
-    def __init__(self,blocks):
+
+class BlockList(object):
+    """A convenience class used to hold and process a list of blocks.
+
+    It calls the cpp parser to get the blocks.
+    """
+
+    def __init__(self, blocks):
         self.blocks = blocks
 
     def __len__(self):
         return len(self.blocks)
 
-    def __getitem__(self,n):
+    def __getitem__(self, n):
         return self.blocks[n]
 
     def __repr__(self):
         return repr(self.blocks)
 
     def __str__(self):
-        result = ""
-        for b in self.blocks:
-            result += str(b)
-            if b.isDirective():
-                result = result.rstrip() + '\n'
+        result = '\n'.join([str(b) for b in self.blocks])
         return result
 
-    def  optimizeIf01(self):
-        """remove the code between #if 0 .. #endif in a BlockList"""
+    def dump(self):
+        """Dump all the blocks in current BlockList."""
+        print '##### BEGIN #####'
+        for i, b in enumerate(self.blocks):
+            print '### BLOCK %d ###' % i
+            print b
+        print '##### END #####'
+
+    def optimizeIf01(self):
+        """Remove the code between #if 0 .. #endif in a BlockList."""
         self.blocks = optimize_if01(self.blocks)
 
     def optimizeMacros(self, macros):
-        """remove known defined and undefined macros from a BlockList"""
+        """Remove known defined and undefined macros from a BlockList."""
         for b in self.blocks:
             if b.isIf():
                 b.expr.optimize(macros)
 
-    def removeMacroDefines(self,macros):
-        """remove known macro definitions from a BlockList"""
-        self.blocks = remove_macro_defines(self.blocks,macros)
+    def removeMacroDefines(self, macros):
+        """Remove known macro definitions from a BlockList."""
+        self.blocks = remove_macro_defines(self.blocks, macros)
 
-    def removeWhiteSpace(self):
-        for b in self.blocks:
-            b.removeWhiteSpace()
-
-    def optimizeAll(self,macros):
+    def optimizeAll(self, macros):
         self.optimizeMacros(macros)
         self.optimizeIf01()
         return
 
     def findIncludes(self):
-        """return the list of included files in a BlockList"""
+        """Return the list of included files in a BlockList."""
         result = []
         for b in self.blocks:
             i = b.isInclude()
             if i:
                 result.append(i)
-
         return result
 
-
-    def write(self,out):
+    def write(self, out):
         out.write(str(self))
 
-    def writeWithWarning(self,out,warning,repeat_count):
+    def writeWithWarning(self, out, warning, repeat_count):
         left_count = repeat_count
+        indent = 0
         for b in self.blocks:
-            left_count = b.writeWithWarning(out,warning,left_count,repeat_count)
+            left_count, indent = b.writeWithWarning(out, warning, left_count,
+                                                    repeat_count, indent)
 
-    def removeComments(self):
-        for b in self.blocks:
-            for tok in b.tokens:
-                if tok.id == tokSPACE:
-                    tok.value = " "
+    def removeVarsAndFuncs(self, knownStatics=None):
+        """Remove variable and function declarations.
 
-    def removeVarsAndFuncs(self,knownStatics=set()):
-        """remove all extern and static declarations corresponding
-           to variable and function declarations. we only accept typedefs
-           and enum/structs/union declarations.
+        All extern and static declarations corresponding to variable and
+        function declarations are removed. We only accept typedefs and
+        enum/structs/union declarations.
 
-           however, we keep the definitions corresponding to the set
-           of known static inline functions in the set 'knownStatics',
-           which is useful for optimized byteorder swap functions and
-           stuff like that.
-           """
+        However, we keep the definitions corresponding to the set of known
+        static inline functions in the set 'knownStatics', which is useful
+        for optimized byteorder swap functions and stuff like that.
+        """
+
+        # NOTE: It's also removing function-like macros, such as __SYSCALL(...)
+        # in uapi/asm-generic/unistd.h, or KEY_FIELD(...) in linux/bcache.h.
+        # It could be problematic when we have function-like macros but without
+        # '}' following them. It will skip all the tokens/blocks until seeing a
+        # '}' as the function end. Fortunately we don't have such cases in the
+        # current kernel headers.
+
         # state = 0 => normal (i.e. LN + spaces)
         # state = 1 => typedef/struct encountered, ends with ";"
         # state = 2 => var declaration encountered, ends with ";"
         # state = 3 => func declaration encountered, ends with "}"
-        state      = 0
-        depth      = 0
-        blocks2    = []
+
+        if knownStatics is None:
+            knownStatics = set()
+        state = 0
+        depth = 0
+        blocks2 = []
         skipTokens = False
         for b in self.blocks:
             if b.isDirective():
                 blocks2.append(b)
             else:
-                n     = len(b.tokens)
-                i     = 0
+                n = len(b.tokens)
+                i = 0
                 if skipTokens:
                     first = n
                 else:
@@ -1434,21 +1316,16 @@
                             state = 0
                             if skipTokens:
                                 skipTokens = False
-                                first = i+1
+                                first = i + 1
 
-                        i = i+1
-                        continue
-
-                    # We are looking for the start of a new type/func/var
-                    # ignore whitespace
-                    if tokid in [tokLN, tokSPACE]:
-                        i = i+1
+                        i += 1
                         continue
 
                     # Is it a new type definition, then start recording it
-                    if tok.value in [ 'struct', 'typedef', 'enum', 'union', '__extension__' ]:
+                    if tok.id in ['struct', 'typedef', 'enum', 'union',
+                                  '__extension__']:
                         state = 1
-                        i     = i+1
+                        i += 1
                         continue
 
                     # Is it a variable or function definition. If so, first
@@ -1464,18 +1341,18 @@
                     # We also assume that the var/func name is the last
                     # identifier before the terminator.
                     #
-                    j = i+1
+                    j = i + 1
                     ident = ""
                     while j < n:
                         tokid = b.tokens[j].id
                         if tokid == '(':  # a function declaration
                             state = 3
                             break
-                        elif tokid == ';': # a variable declaration
+                        elif tokid == ';':  # a variable declaration
                             state = 2
                             break
-                        if tokid == tokIDENT:
-                            ident = b.tokens[j].value
+                        if b.tokens[j].kind == TokenKind.IDENTIFIER:
+                            ident = b.tokens[j].id
                         j += 1
 
                     if j >= n:
@@ -1488,221 +1365,309 @@
                         # without making our parser much more
                         # complex.
                         #
-                        #print "### skip unterminated static '%s'" % ident
+                        logging.debug("### skip unterminated static '%s'",
+                                      ident)
                         break
 
                     if ident in knownStatics:
-                        #print "### keep var/func '%s': %s" % (ident,repr(b.tokens[i:j]))
-                        pass
+                        logging.debug("### keep var/func '%s': %s", ident,
+                                      repr(b.tokens[i:j]))
                     else:
                         # We're going to skip the tokens for this declaration
-                        #print "### skip variable /func'%s': %s" % (ident,repr(b.tokens[i:j]))
+                        logging.debug("### skip var/func '%s': %s", ident,
+                                      repr(b.tokens[i:j]))
                         if i > first:
-                            blocks2.append( Block(b.tokens[first:i]))
+                            blocks2.append(Block(b.tokens[first:i]))
                         skipTokens = True
-                        first      = n
+                        first = n
 
-                    i = i+1
+                    i += 1
 
                 if i > first:
-                    #print "### final '%s'" % repr(b.tokens[first:i])
-                    blocks2.append( Block(b.tokens[first:i]) )
+                    # print "### final '%s'" % repr(b.tokens[first:i])
+                    blocks2.append(Block(b.tokens[first:i]))
 
         self.blocks = blocks2
 
-    def insertDisclaimer(self,disclaimer="/* auto-generated file, DO NOT EDIT */"):
-        """insert your standard issue disclaimer that this is an
-           auto-generated file, etc.."""
-        tokens = CppLineTokenizer( disclaimer ).toTokenList()
-        tokens = tokens[:-1]  # remove trailing tokLN
-        self.blocks = [ Block(tokens) ] + self.blocks
-
-    def replaceTokens(self,replacements):
-        """replace tokens according to the given dict"""
+    def replaceTokens(self, replacements):
+        """Replace tokens according to the given dict."""
         for b in self.blocks:
             made_change = False
-            if b.isInclude() == None:
+            if b.isInclude() is None:
                 for tok in b.tokens:
-                    if tok.id == tokIDENT:
-                        if tok.value in replacements:
-                            tok.value = replacements[tok.value]
+                    if tok.kind == TokenKind.IDENTIFIER:
+                        if tok.id in replacements:
+                            tok.id = replacements[tok.id]
                             made_change = True
 
+                if b.isDefine() and b.define_id in replacements:
+                    b.define_id = replacements[b.define_id]
+                    made_change = True
+
             if made_change and b.isIf():
                 # Keep 'expr' in sync with 'tokens'.
                 b.expr = CppExpr(b.tokens)
 
-class BlockParser:
-    """a class used to convert an input source file into a BlockList object"""
 
-    def __init__(self,tokzer=None):
-        """initialize a block parser. the input source is provided through a Tokenizer
-           object"""
-        self.reset(tokzer)
+def strip_space(s):
+    """Strip out redundant space in a given string."""
 
-    def reset(self,tokzer):
-        self.state  = 1
-        self.tokzer = tokzer
+    # NOTE: It ought to be more clever to not destroy spaces in string tokens.
+    replacements = {' . ': '.',
+                    ' [': '[',
+                    '[ ': '[',
+                    ' ]': ']',
+                    '( ': '(',
+                    ' )': ')',
+                    ' ,': ',',
+                    '# ': '#',
+                    ' ;': ';',
+                    '~ ': '~',
+                    ' -> ': '->'}
+    result = s
+    for r in replacements:
+        result = result.replace(r, replacements[r])
 
-    def getBlocks(self,tokzer=None):
-        """tokenize and parse the input source, return a BlockList object
-           NOTE: empty and line-numbering directives are ignored and removed
-                 from the result. as a consequence, it is possible to have
-                 two successive text blocks in the result"""
-        # state 0 => in source code
-        # state 1 => in source code, after a LN
-        # state 2 => in source code, after LN then some space
-        state   = 1
-        lastLN  = 0
-        current = []
-        blocks  = []
+    # Remove the space between function name and the parenthesis.
+    result = re.sub(r'(\w+) \(', r'\1(', result)
+    return result
 
-        if tokzer == None:
-            tokzer = self.tokzer
 
-        while 1:
-            tok = tokzer.getToken()
-            if tok.id == tokEOF:
-                break
+class BlockParser(object):
+    """A class that converts an input source file into a BlockList object."""
 
-            if tok.id == tokLN:
-                state    = 1
-                current.append(tok)
-                lastLN   = len(current)
+    def __init__(self, tokzer=None):
+        """Initialize a block parser.
 
-            elif tok.id == tokSPACE:
-                if state == 1:
-                    state = 2
-                current.append(tok)
+        The input source is provided through a Tokenizer object.
+        """
+        self._tokzer = tokzer
+        self._parsed = False
 
-            elif tok.id == "#":
-                if state > 0:
-                    # this is the start of a directive
+    @property
+    def parsed(self):
+        return self._parsed
 
-                    if lastLN > 0:
-                        # record previous tokens as text block
-                        block   = Block(current[:lastLN])
-                        blocks.append(block)
-                        lastLN  = 0
+    @staticmethod
+    def _short_extent(extent):
+        return '%d:%d - %d:%d' % (extent.start.line, extent.start.column,
+                                  extent.end.line, extent.end.column)
 
-                    current = []
+    def getBlocks(self, tokzer=None):
+        """Return all the blocks parsed."""
 
-                    # skip spaces after the #
-                    while 1:
-                        tok = tokzer.getToken()
-                        if tok.id != tokSPACE:
-                            break
+        def consume_extent(i, tokens, extent=None, detect_change=False):
+            """Return tokens that belong to the given extent.
 
-                    if tok.id != tokIDENT:
-                        # empty or line-numbering, ignore it
-                        if tok.id != tokLN and tok.id != tokEOF:
-                            while 1:
-                                tok = tokzer.getToken()
-                                if tok.id == tokLN or tok.id == tokEOF:
-                                    break
-                        continue
+            It parses all the tokens that follow tokens[i], until getting out
+            of the extent. When detect_change is True, it may terminate early
+            when detecting preprocessing directives inside the extent.
+            """
 
-                    directive = tok.value
-                    lineno    = tok.lineno
+            result = []
+            if extent is None:
+                extent = tokens[i].cursor.extent
 
-                    # skip spaces
-                    tok = tokzer.getToken()
-                    while tok.id == tokSPACE:
-                        tok = tokzer.getToken()
+            while i < len(tokens) and tokens[i].location in extent:
+                t = tokens[i]
+                if debugBlockParser:
+                    print ' ' * 2, t.id, t.kind, t.cursor.kind
+                if (detect_change and t.cursor.extent != extent and
+                    t.cursor.kind == CursorKind.PREPROCESSING_DIRECTIVE):
+                    break
+                result.append(t)
+                i += 1
+            return (i, result)
 
-                    # then record tokens until LN
-                    dirtokens = []
-                    while tok.id != tokLN and tok.id != tokEOF:
-                        dirtokens.append(tok)
-                        tok = tokzer.getToken()
+        def consume_line(i, tokens):
+            """Return tokens that follow tokens[i] in the same line."""
+            result = []
+            line = tokens[i].location.line
+            while i < len(tokens) and tokens[i].location.line == line:
+                if tokens[i].cursor.kind == CursorKind.PREPROCESSING_DIRECTIVE:
+                    break
+                result.append(tokens[i])
+                i += 1
+            return (i, result)
 
-                    block = Block(dirtokens,directive,lineno)
-                    blocks.append(block)
-                    state   = 1
+        if tokzer is None:
+            tokzer = self._tokzer
+        tokens = tokzer.tokens
+
+        blocks = []
+        buf = []
+        i = 0
+
+        while i < len(tokens):
+            t = tokens[i]
+            cursor = t.cursor
+
+            if debugBlockParser:
+                print ("%d: Processing [%s], kind=[%s], cursor=[%s], "
+                       "extent=[%s]" % (t.location.line, t.spelling, t.kind,
+                                        cursor.kind,
+                                        self._short_extent(cursor.extent)))
+
+            if cursor.kind == CursorKind.PREPROCESSING_DIRECTIVE:
+                if buf:
+                    blocks.append(Block(buf))
+                    buf = []
+
+                j = i
+                if j + 1 >= len(tokens):
+                    raise BadExpectedToken("### BAD TOKEN at %s" % (t.location))
+                directive = tokens[j+1].id
+
+                if directive == 'define':
+                    if i+2 >= len(tokens):
+                        raise BadExpectedToken("### BAD TOKEN at %s" %
+                                               (tokens[i].location))
+
+                    # Skip '#' and 'define'.
+                    extent = tokens[i].cursor.extent
+                    i += 2
+                    id = ''
+                    # We need to separate the id from the remaining of
+                    # the line, especially for the function-like macro.
+                    if (i + 1 < len(tokens) and tokens[i+1].id == '(' and
+                        (tokens[i].location.column + len(tokens[i].spelling) ==
+                         tokens[i+1].location.column)):
+                        while i < len(tokens):
+                            id += tokens[i].id
+                            if tokens[i].spelling == ')':
+                                i += 1
+                                break
+                            i += 1
+                    else:
+                        id += tokens[i].id
+                        # Advance to the next token that follows the macro id
+                        i += 1
+
+                    (i, ret) = consume_extent(i, tokens, extent=extent)
+                    blocks.append(Block(ret, directive=directive,
+                                        lineno=t.location.line, identifier=id))
+
+                else:
+                    (i, ret) = consume_extent(i, tokens)
+                    blocks.append(Block(ret[2:], directive=directive,
+                                        lineno=t.location.line))
+
+            elif cursor.kind == CursorKind.INCLUSION_DIRECTIVE:
+                if buf:
+                    blocks.append(Block(buf))
+                    buf = []
+                directive = tokens[i+1].id
+                (i, ret) = consume_extent(i, tokens)
+
+                blocks.append(Block(ret[2:], directive=directive,
+                                    lineno=t.location.line))
+
+            elif cursor.kind == CursorKind.VAR_DECL:
+                if buf:
+                    blocks.append(Block(buf))
+                    buf = []
+
+                (i, ret) = consume_extent(i, tokens, detect_change=True)
+                buf += ret
+
+            elif cursor.kind == CursorKind.FUNCTION_DECL:
+                if buf:
+                    blocks.append(Block(buf))
+                    buf = []
+
+                (i, ret) = consume_extent(i, tokens, detect_change=True)
+                buf += ret
 
             else:
-                state = 0
-                current.append(tok)
+                (i, ret) = consume_line(i, tokens)
+                buf += ret
 
-        if len(current) > 0:
-            block = Block(current)
-            blocks.append(block)
+        if buf:
+            blocks.append(Block(buf))
+
+        # _parsed=True indicates a successful parsing, although may result an
+        # empty BlockList.
+        self._parsed = True
 
         return BlockList(blocks)
 
-    def parse(self,tokzer):
-        return self.getBlocks( tokzer )
+    def parse(self, tokzer):
+        return self.getBlocks(tokzer)
 
-    def parseLines(self,lines):
-        """parse a list of text lines into a BlockList object"""
-        return self.getBlocks( CppLinesTokenizer(lines) )
-
-    def parseFile(self,path):
-        """parse a file into a BlockList object"""
-        file = open(path, "rt")
-        result = self.getBlocks( CppFileTokenizer(file) )
-        file.close()
-        return result
+    def parseFile(self, path):
+        return self.getBlocks(CppFileTokenizer(path))
 
 
-def test_block_parsing(lines,expected):
-    blocks = BlockParser().parse( CppLinesTokenizer(lines) )
+def test_block_parsing(lines, expected):
+    """Helper method to test the correctness of BlockParser.parse."""
+    blocks = BlockParser().parse(CppStringTokenizer('\n'.join(lines)))
     if len(blocks) != len(expected):
-        raise BadExpectedToken, "parser.buildBlocks returned '%s' expecting '%s'" \
-              % (str(blocks), repr(expected))
+        raise BadExpectedToken("BlockParser.parse() returned '%s' expecting "
+                               "'%s'" % (str(blocks), repr(expected)))
     for n in range(len(blocks)):
         if str(blocks[n]) != expected[n]:
-            raise BadExpectedToken, "parser.buildBlocks()[%d] is '%s', expecting '%s'" \
-                  % (n, str(blocks[n]), expected[n])
-    #for block in blocks:
-    #    print block
+            raise BadExpectedToken("BlockParser.parse()[%d] is '%s', "
+                                   "expecting '%s'" % (n, str(blocks[n]),
+                                                       expected[n]))
+
 
 def test_BlockParser():
-    test_block_parsing(["#error hello"],["#error hello"])
-    test_block_parsing([ "foo", "", "bar" ], [ "foo\n\nbar\n" ])
-    test_block_parsing([ "foo", "  #  ", "bar" ], [ "foo\n","bar\n" ])
-    test_block_parsing(\
-        [ "foo", "   #  ", "  #  /* ahah */ if defined(__KERNEL__) ", "bar", "#endif" ],
-        [ "foo\n", "#ifdef __KERNEL__", "bar\n", "#endif" ] )
+    test_block_parsing(["#error hello"], ["#error hello"])
+    test_block_parsing(["foo", "", "bar"], ["foo bar"])
+
+    # We currently cannot handle the following case with libclang properly.
+    # Fortunately it doesn't appear in current headers.
+    # test_block_parsing(["foo", "  #  ", "bar"], ["foo", "bar"])
+
+    test_block_parsing(["foo",
+                        "  #  /* ahah */ if defined(__KERNEL__) /* more */",
+                        "bar", "#endif"],
+                       ["foo", "#ifdef __KERNEL__", "bar", "#endif"])
 
 
-#####################################################################################
-#####################################################################################
-#####                                                                           #####
-#####        B L O C K   L I S T   O P T I M I Z A T I O N                      #####
-#####                                                                           #####
-#####################################################################################
-#####################################################################################
+################################################################################
+################################################################################
+#####                                                                      #####
+#####        B L O C K   L I S T   O P T I M I Z A T I O N                 #####
+#####                                                                      #####
+################################################################################
+################################################################################
 
-def  remove_macro_defines( blocks, excludedMacros=set() ):
-    """remove macro definitions like #define <macroName>  ...."""
+
+def remove_macro_defines(blocks, excludedMacros=None):
+    """Remove macro definitions like #define <macroName>  ...."""
+    if excludedMacros is None:
+        excludedMacros = set()
     result = []
     for b in blocks:
         macroName = b.isDefine()
-        if macroName == None or not macroName in excludedMacros:
+        if macroName is None or macroName not in excludedMacros:
             result.append(b)
 
     return result
 
-def  find_matching_endif( blocks, i ):
-    n     = len(blocks)
+
+def find_matching_endif(blocks, i):
+    """Traverse the blocks to find out the matching #endif."""
+    n = len(blocks)
     depth = 1
     while i < n:
         if blocks[i].isDirective():
-            dir = blocks[i].directive
-            if dir in [ "if", "ifndef", "ifdef" ]:
+            dir_ = blocks[i].directive
+            if dir_ in ["if", "ifndef", "ifdef"]:
                 depth += 1
-            elif depth == 1 and dir in [ "else", "elif" ]:
+            elif depth == 1 and dir_ in ["else", "elif"]:
                 return i
-            elif dir == "endif":
+            elif dir_ == "endif":
                 depth -= 1
                 if depth == 0:
                     return i
         i += 1
     return i
 
-def  optimize_if01( blocks ):
-    """remove the code between #if 0 .. #endif in a list of CppBlocks"""
+
+def optimize_if01(blocks):
+    """Remove the code between #if 0 .. #endif in a list of CppBlocks."""
     i = 0
     n = len(blocks)
     result = []
@@ -1711,69 +1676,76 @@
         while j < n and not blocks[j].isIf():
             j += 1
         if j > i:
-            D2("appending lines %d to %d" % (blocks[i].lineno, blocks[j-1].lineno))
+            logging.debug("appending lines %d to %d", blocks[i].lineno,
+                          blocks[j-1].lineno)
             result += blocks[i:j]
         if j >= n:
             break
         expr = blocks[j].expr
-        r    = expr.toInt()
-        if r == None:
+        r = expr.toInt()
+        if r is None:
             result.append(blocks[j])
             i = j + 1
             continue
 
         if r == 0:
             # if 0 => skip everything until the corresponding #endif
-            j = find_matching_endif( blocks, j+1 )
+            j = find_matching_endif(blocks, j + 1)
             if j >= n:
                 # unterminated #if 0, finish here
                 break
-            dir = blocks[j].directive
-            if dir == "endif":
-                D2("remove 'if 0' .. 'endif' (lines %d to %d)" % (blocks[i].lineno, blocks[j].lineno))
+            dir_ = blocks[j].directive
+            if dir_ == "endif":
+                logging.debug("remove 'if 0' .. 'endif' (lines %d to %d)",
+                              blocks[i].lineno, blocks[j].lineno)
                 i = j + 1
-            elif dir == "else":
+            elif dir_ == "else":
                 # convert 'else' into 'if 1'
-                D2("convert 'if 0' .. 'else' into 'if 1' (lines %d to %d)" % (blocks[i].lineno, blocks[j-1].lineno))
+                logging.debug("convert 'if 0' .. 'else' into 'if 1' (lines %d "
+                              "to %d)", blocks[i].lineno, blocks[j-1].lineno)
                 blocks[j].directive = "if"
-                blocks[j].expr      = CppExpr( CppLineTokenizer("1").toTokenList() )
+                blocks[j].expr = CppExpr(CppStringTokenizer("1").tokens)
                 i = j
-            elif dir == "elif":
+            elif dir_ == "elif":
                 # convert 'elif' into 'if'
-                D2("convert 'if 0' .. 'elif' into 'if'")
+                logging.debug("convert 'if 0' .. 'elif' into 'if'")
                 blocks[j].directive = "if"
                 i = j
             continue
 
         # if 1 => find corresponding endif and remove/transform them
-        k = find_matching_endif( blocks, j+1 )
+        k = find_matching_endif(blocks, j + 1)
         if k >= n:
             # unterminated #if 1, finish here
-            D2("unterminated 'if 1'")
+            logging.debug("unterminated 'if 1'")
             result += blocks[j+1:k]
             break
 
-        dir = blocks[k].directive
-        if dir == "endif":
-            D2("convert 'if 1' .. 'endif' (lines %d to %d)"  % (blocks[j].lineno, blocks[k].lineno))
+        dir_ = blocks[k].directive
+        if dir_ == "endif":
+            logging.debug("convert 'if 1' .. 'endif' (lines %d to %d)",
+                          blocks[j].lineno, blocks[k].lineno)
             result += optimize_if01(blocks[j+1:k])
-            i       = k+1
-        elif dir == "else":
+            i = k + 1
+        elif dir_ == "else":
             # convert 'else' into 'if 0'
-            D2("convert 'if 1' .. 'else' (lines %d to %d)"  % (blocks[j].lineno, blocks[k].lineno))
+            logging.debug("convert 'if 1' .. 'else' (lines %d to %d)",
+                          blocks[j].lineno, blocks[k].lineno)
             result += optimize_if01(blocks[j+1:k])
             blocks[k].directive = "if"
-            blocks[k].expr      = CppExpr( CppLineTokenizer("0").toTokenList() )
+            blocks[k].expr = CppExpr(CppStringTokenizer("0").tokens)
             i = k
-        elif dir == "elif":
+        elif dir_ == "elif":
             # convert 'elif' into 'if 0'
-            D2("convert 'if 1' .. 'elif' (lines %d to %d)" % (blocks[j].lineno, blocks[k].lineno))
+            logging.debug("convert 'if 1' .. 'elif' (lines %d to %d)",
+                          blocks[j].lineno, blocks[k].lineno)
             result += optimize_if01(blocks[j+1:k])
-            blocks[k].expr      = CppExpr( CppLineTokenizer("0").toTokenList() )
+            blocks[k].expr = CppExpr(CppStringTokenizer("0").tokens)
             i = k
     return result
 
-def  test_optimizeAll():
+
+def test_optimizeAll():
     text = """\
 #if 1
 #define  GOOD_1
@@ -1816,50 +1788,41 @@
 
     expected = """\
 #define GOOD_1
-
 #define GOOD_2
-
 #define GOOD_3
-
-
 #if !defined(__GLIBC__) || __GLIBC__ < 2
 #define X
 #endif
-
 #ifndef __SIGRTMAX
 #define __SIGRTMAX 123
-#endif
-
+#endif\
 """
 
-    out = StringOutput()
-    lines = string.split(text, '\n')
-    list = BlockParser().parse( CppLinesTokenizer(lines) )
-    #D_setlevel(2)
-    list.replaceTokens( kernel_token_replacements )
-    list.optimizeAll( {"__KERNEL__":kCppUndefinedMacro} )
-    list.write(out)
+    out = utils.StringOutput()
+    blocks = BlockParser().parse(CppStringTokenizer(text))
+    blocks.replaceTokens(kernel_token_replacements)
+    blocks.optimizeAll({"__KERNEL__": kCppUndefinedMacro})
+    blocks.write(out)
     if out.get() != expected:
         print "[FAIL]: macro optimization failed\n"
         print "<<<< expecting '",
         print expected,
-        print "'\n>>>> result '"
+        print "'\n>>>> result '",
         print out.get(),
         print "'\n----"
         global failure_count
         failure_count += 1
 
 
-# -- Always run the unit tests.
-
 def runUnitTests():
-    """run all unit tests for this program"""
+    """Always run all unit tests for this program."""
     test_CppTokenizer()
     test_CppExpr()
     test_optimizeAll()
     test_BlockParser()
 
+
 failure_count = 0
 runUnitTests()
 if failure_count != 0:
-    sys.exit(1)
+    utils.panic("Unit tests failed in cpp.py.\n")
diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py
index 2efd455..8aba998 100644
--- a/libc/kernel/tools/defaults.py
+++ b/libc/kernel/tools/defaults.py
@@ -118,10 +118,8 @@
 # the generated files.
 #
 kernel_ignored_macros = set(
-        [ "MAXHOSTNAMELEN",  # for some reason, Linux defines it to 64
-                             # while most of the BSD code expects this to be 256
-                             # so ignore the kernel-provided definition and
-                             # define it in the Bionic headers instead
+        [
+
         ]
     )
 
diff --git a/libc/kernel/tools/generate_uapi_headers.sh b/libc/kernel/tools/generate_uapi_headers.sh
index 386159a..90ba0ed 100755
--- a/libc/kernel/tools/generate_uapi_headers.sh
+++ b/libc/kernel/tools/generate_uapi_headers.sh
@@ -159,7 +159,7 @@
   cd "${TMPDIR}"
   echo "Fetching android kernel source ${KERNEL_VERSION}"
   git clone https://android.googlesource.com/kernel/common.git
-  cd "${COMMON}"
+  cd "${src_dir}"
   git checkout "${KERNEL_VERSION}"
   KERNEL_DIR="${TMPDIR}"
 elif [[ "${KERNEL_DIR}" == "" ]]; then
@@ -180,6 +180,8 @@
   done
 fi
 
+cd ${ANDROID_BUILD_TOP}
+
 # Copy all of the include/uapi files to the kernel headers uapi directory.
 copy_hdrs "${KERNEL_DIR}/${src_dir}/include/uapi" "${ANDROID_KERNEL_DIR}/uapi"
 
diff --git a/libc/kernel/tools/update_all.py b/libc/kernel/tools/update_all.py
index 73862da..f45d4e0 100755
--- a/libc/kernel/tools/update_all.py
+++ b/libc/kernel/tools/update_all.py
@@ -40,12 +40,7 @@
     if not os.path.isdir(original_dir):
         panic( "Missing directory, please specify one through command-line: %s\n" % original_dir )
 
-# Fixme: This should be removed after next release.
-# Do not update ion.h ion_test.h until after next release in aosp.
-source = subprocess.check_output('git remote show', shell=True).strip()
 skip_ion = False
-if source == "aosp":
-    skip_ion = True
 
 # find all source files in 'original'
 #
diff --git a/libc/kernel/tools/utils.py b/libc/kernel/tools/utils.py
index 0478e93..e5a310e 100644
--- a/libc/kernel/tools/utils.py
+++ b/libc/kernel/tools/utils.py
@@ -1,59 +1,29 @@
 # common python utility routines for the Bionic tool scripts
 
-import sys, os, commands, string, commands
+import commands
+import logging
+import os
+import string
+import sys
 
-# basic debugging trace support
-# call D_setlevel to set the verbosity level
-# and D(), D2(), D3(), D4() to add traces
-#
-verbose = 0
 
 def panic(msg):
-    sys.stderr.write( find_program_name() + ": error: " )
-    sys.stderr.write( msg )
+    sys.stderr.write(os.path.basename(sys.argv[0]) + ": error: ")
+    sys.stderr.write(msg)
     sys.exit(1)
 
-def D(msg):
-    global verbose
-    if verbose > 0:
-        print msg
-
-def D2(msg):
-    global verbose
-    if verbose >= 2:
-        print msg
-
-def D3(msg):
-    global verbose
-    if verbose >= 3:
-        print msg
-
-def D4(msg):
-    global verbose
-    if verbose >= 4:
-        print msg
-
-def D_setlevel(level):
-    global verbose
-    verbose = level
-
-
-#  other stuff
-#
-#
-def find_program_name():
-    return os.path.basename(sys.argv[0])
 
 def find_program_dir():
     return os.path.dirname(sys.argv[0])
 
+
 class StringOutput:
     def __init__(self):
         self.line = ""
 
     def write(self,msg):
         self.line += msg
-        D2("write '%s'" % msg)
+        logging.debug("write '%s'" % msg)
 
     def get(self):
         return self.line
@@ -76,47 +46,6 @@
             continue
         os.mkdir(dir)
 
-def walk_source_files(paths,callback,args,excludes=[]):
-    """recursively walk a list of paths and files, only keeping the source files in directories"""
-    for path in paths:
-        if len(path) > 0 and path[0] == '@':
-            # this is the name of another file, include it and parse it
-            path = path[1:]
-            if os.path.exists(path):
-                for line in open(path):
-                    if len(line) > 0 and line[-1] == '\n':
-                        line = line[:-1]
-                    walk_source_files([line],callback,args,excludes)
-            continue
-        if not os.path.isdir(path):
-            callback(path,args)
-        else:
-            for root, dirs, files in os.walk(path):
-                #print "w-- %s (ex: %s)" % (repr((root,dirs)), repr(excludes))
-                if len(excludes):
-                    for d in dirs[:]:
-                        if os.path.join(root,d) in excludes:
-                            dirs.remove(d)
-                for f in files:
-                    r, ext = os.path.splitext(f)
-                    if ext in [ ".h", ".c", ".cpp", ".S" ]:
-                        callback( "%s/%s" % (root,f), args )
-
-def cleanup_dir(path):
-    """create a directory if needed, and ensure that it is totally empty
-       by removing any existing content in it"""
-    if not os.path.exists(path):
-        os.mkdir(path)
-    else:
-        for root, dirs, files in os.walk(path, topdown=False):
-            if root.endswith("kernel_headers/"):
-                # skip 'kernel_headers'
-                continue
-            for name in files:
-                os.remove(os.path.join(root, name))
-            for name in dirs:
-                os.rmdir(os.path.join(root, name))
-
 
 class BatchFileUpdater:
     """a class used to edit several files at once"""
diff --git a/libc/kernel/uapi/asm-arm/asm/a.out.h b/libc/kernel/uapi/asm-arm/asm/a.out.h
index 54b30ac..3d51506 100644
--- a/libc/kernel/uapi/asm-arm/asm/a.out.h
+++ b/libc/kernel/uapi/asm-arm/asm/a.out.h
@@ -21,28 +21,26 @@
 #include <linux/personality.h>
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct exec
-{
- __u32 a_info;
- __u32 a_text;
+struct exec {
+  __u32 a_info;
+  __u32 a_text;
+  __u32 a_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 a_data;
- __u32 a_bss;
- __u32 a_syms;
- __u32 a_entry;
+  __u32 a_bss;
+  __u32 a_syms;
+  __u32 a_entry;
+  __u32 a_trsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 a_trsize;
- __u32 a_drsize;
+  __u32 a_drsize;
 };
 #define N_TXTADDR(a) (0x00008000)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_TRSIZE(a) ((a).a_trsize)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_DRSIZE(a) ((a).a_drsize)
 #define N_SYMSIZE(a) ((a).a_syms)
 #define M_ARM 103
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef LIBRARY_START_TEXT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LIBRARY_START_TEXT (0x00c00000)
 #endif
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-arm/asm/hwcap.h b/libc/kernel/uapi/asm-arm/asm/hwcap.h
index e70f3b8..25dc930 100644
--- a/libc/kernel/uapi/asm-arm/asm/hwcap.h
+++ b/libc/kernel/uapi/asm-arm/asm/hwcap.h
@@ -47,4 +47,10 @@
 #define HWCAP_LPAE (1 << 20)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HWCAP_EVTSTRM (1 << 21)
+#define HWCAP2_AES (1 << 0)
+#define HWCAP2_PMULL (1 << 1)
+#define HWCAP2_SHA1 (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HWCAP2_SHA2 (1 << 3)
+#define HWCAP2_CRC32 (1 << 4)
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/kvm.h b/libc/kernel/uapi/asm-arm/asm/kvm.h
index 2b5a17e..c37d809 100644
--- a/libc/kernel/uapi/asm-arm/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm/asm/kvm.h
@@ -19,136 +19,141 @@
 #ifndef __ARM_KVM_H__
 #define __ARM_KVM_H__
 #include <linux/types.h>
-#include <asm/ptrace.h>
+#include <linux/psci.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/ptrace.h>
 #define __KVM_HAVE_GUEST_DEBUG
 #define __KVM_HAVE_IRQ_LINE
-#define KVM_REG_SIZE(id)   (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
-#define KVM_ARM_SVC_sp svc_regs[0]
+#define __KVM_HAVE_READONLY_MEM
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define KVM_ARM_SVC_sp svc_regs[0]
 #define KVM_ARM_SVC_lr svc_regs[1]
 #define KVM_ARM_SVC_spsr svc_regs[2]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_ABT_sp abt_regs[0]
 #define KVM_ARM_ABT_lr abt_regs[1]
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_ABT_spsr abt_regs[2]
 #define KVM_ARM_UND_sp und_regs[0]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_UND_lr und_regs[1]
 #define KVM_ARM_UND_spsr und_regs[2]
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_IRQ_sp irq_regs[0]
 #define KVM_ARM_IRQ_lr irq_regs[1]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_IRQ_spsr irq_regs[2]
 #define KVM_ARM_FIQ_r8 fiq_regs[0]
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_FIQ_r9 fiq_regs[1]
 #define KVM_ARM_FIQ_r10 fiq_regs[2]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_FIQ_fp fiq_regs[3]
 #define KVM_ARM_FIQ_ip fiq_regs[4]
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_FIQ_sp fiq_regs[5]
 #define KVM_ARM_FIQ_lr fiq_regs[6]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_FIQ_spsr fiq_regs[7]
 struct kvm_regs {
+  struct pt_regs usr_regs;
+  unsigned long svc_regs[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct pt_regs usr_regs;
- unsigned long svc_regs[3];
- unsigned long abt_regs[3];
- unsigned long und_regs[3];
+  unsigned long abt_regs[3];
+  unsigned long und_regs[3];
+  unsigned long irq_regs[3];
+  unsigned long fiq_regs[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long irq_regs[3];
- unsigned long fiq_regs[8];
 };
 #define KVM_ARM_TARGET_CORTEX_A15 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_TARGET_CORTEX_A7 1
 #define KVM_ARM_NUM_TARGETS 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
 #define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_DEVICE_ID_SHIFT 16
 #define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
 #define KVM_VGIC_V2_DIST_SIZE 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_VGIC_V2_CPU_SIZE 0x2000
 #define KVM_ARM_VCPU_POWER_OFF 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_ARM_VCPU_PSCI_0_2 1
 struct kvm_vcpu_init {
- __u32 target;
- __u32 features[7];
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 target;
+  __u32 features[7];
+};
 struct kvm_sregs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_fpu {
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_guest_debug_arch {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_debug_exit_arch {
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_sync_regs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_arch_memory_slot {
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_COPROC_MASK 0x000000000FFF0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_COPROC_SHIFT 16
 #define KVM_REG_ARM_32_OPC2_MASK 0x0000000000000007
 #define KVM_REG_ARM_32_OPC2_SHIFT 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_OPC1_MASK 0x0000000000000078
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_OPC1_SHIFT 3
 #define KVM_REG_ARM_CRM_MASK 0x0000000000000780
 #define KVM_REG_ARM_CRM_SHIFT 7
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_32_CRN_MASK 0x0000000000007800
-#define KVM_REG_ARM_32_CRN_SHIFT 11
-#define ARM_CP15_REG_SHIFT_MASK(x,n)   (((x) << KVM_REG_ARM_ ## n ## _SHIFT) & KVM_REG_ARM_ ## n ## _MASK)
-#define __ARM_CP15_REG(op1,crn,crm,op2)   (KVM_REG_ARM | (15 << KVM_REG_ARM_COPROC_SHIFT) |   ARM_CP15_REG_SHIFT_MASK(op1, OPC1) |   ARM_CP15_REG_SHIFT_MASK(crn, 32_CRN) |   ARM_CP15_REG_SHIFT_MASK(crm, CRM) |   ARM_CP15_REG_SHIFT_MASK(op2, 32_OPC2))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_ARM_32_CRN_SHIFT 11
+#define ARM_CP15_REG_SHIFT_MASK(x,n) (((x) << KVM_REG_ARM_ ##n ##_SHIFT) & KVM_REG_ARM_ ##n ##_MASK)
+#define __ARM_CP15_REG(op1,crn,crm,op2) (KVM_REG_ARM | (15 << KVM_REG_ARM_COPROC_SHIFT) | ARM_CP15_REG_SHIFT_MASK(op1, OPC1) | ARM_CP15_REG_SHIFT_MASK(crn, 32_CRN) | ARM_CP15_REG_SHIFT_MASK(crm, CRM) | ARM_CP15_REG_SHIFT_MASK(op2, 32_OPC2))
 #define ARM_CP15_REG32(...) (__ARM_CP15_REG(__VA_ARGS__) | KVM_REG_SIZE_U32)
-#define __ARM_CP15_REG64(op1,crm)   (__ARM_CP15_REG(op1, 0, crm, 0) | KVM_REG_SIZE_U64)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __ARM_CP15_REG64(op1,crm) (__ARM_CP15_REG(op1, 0, crm, 0) | KVM_REG_SIZE_U64)
 #define ARM_CP15_REG64(...) __ARM_CP15_REG64(__VA_ARGS__)
 #define KVM_REG_ARM_TIMER_CTL ARM_CP15_REG32(0, 14, 3, 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_TIMER_CNT ARM_CP15_REG64(1, 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_TIMER_CVAL ARM_CP15_REG64(3, 14)
 #define KVM_REG_ARM_CORE (0x0010 << KVM_REG_ARM_COPROC_SHIFT)
 #define KVM_REG_ARM_CORE_REG(name) (offsetof(struct kvm_regs, name) / 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_DEMUX (0x0011 << KVM_REG_ARM_COPROC_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_DEMUX_ID_MASK 0x000000000000FF00
 #define KVM_REG_ARM_DEMUX_ID_SHIFT 8
 #define KVM_REG_ARM_DEMUX_ID_CCSIDR (0x00 << KVM_REG_ARM_DEMUX_ID_SHIFT)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_DEMUX_VAL_MASK 0x00000000000000FF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_DEMUX_VAL_SHIFT 0
 #define KVM_REG_ARM_VFP (0x0012 << KVM_REG_ARM_COPROC_SHIFT)
 #define KVM_REG_ARM_VFP_MASK 0x000000000000FFFF
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_VFP_BASE_REG 0x0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_VFP_FPSID 0x1000
 #define KVM_REG_ARM_VFP_FPSCR 0x1001
 #define KVM_REG_ARM_VFP_MVFR1 0x1006
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_VFP_MVFR0 0x1007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_ARM_VFP_FPEXC 0x1008
 #define KVM_REG_ARM_VFP_FPINST 0x1009
 #define KVM_REG_ARM_VFP_FPINST2 0x100A
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
 #define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0
 #define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
+#define KVM_DEV_ARM_VGIC_GRP_NR_IRQS 3
 #define KVM_ARM_IRQ_TYPE_SHIFT 24
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_IRQ_TYPE_MASK 0xff
@@ -172,9 +177,9 @@
 #define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3)
-#define KVM_PSCI_RET_SUCCESS 0
-#define KVM_PSCI_RET_NI ((unsigned long)-1)
-#define KVM_PSCI_RET_INVAL ((unsigned long)-2)
+#define KVM_PSCI_RET_SUCCESS PSCI_RET_SUCCESS
+#define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
+#define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KVM_PSCI_RET_DENIED ((unsigned long)-3)
+#define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/mman.h b/libc/kernel/uapi/asm-arm/asm/mman.h
index 40f0e97..ec9453d 100644
--- a/libc/kernel/uapi/asm-arm/asm/mman.h
+++ b/libc/kernel/uapi/asm-arm/asm/mman.h
@@ -17,4 +17,4 @@
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/mman.h>
-#define arch_mmap_check(addr, len, flags)   (((flags) & MAP_FIXED && (addr) < FIRST_USER_ADDRESS) ? -EINVAL : 0)
+#define arch_mmap_check(addr,len,flags) (((flags) & MAP_FIXED && (addr) < FIRST_USER_ADDRESS) ? - EINVAL : 0)
diff --git a/libc/kernel/uapi/asm-arm/asm/perf_regs.h b/libc/kernel/uapi/asm-arm/asm/perf_regs.h
index 745bcf3..537eb44 100644
--- a/libc/kernel/uapi/asm-arm/asm/perf_regs.h
+++ b/libc/kernel/uapi/asm-arm/asm/perf_regs.h
@@ -19,27 +19,27 @@
 #ifndef _ASM_ARM_PERF_REGS_H
 #define _ASM_ARM_PERF_REGS_H
 enum perf_event_arm_regs {
- PERF_REG_ARM_R0,
+  PERF_REG_ARM_R0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_ARM_R1,
- PERF_REG_ARM_R2,
- PERF_REG_ARM_R3,
- PERF_REG_ARM_R4,
+  PERF_REG_ARM_R1,
+  PERF_REG_ARM_R2,
+  PERF_REG_ARM_R3,
+  PERF_REG_ARM_R4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_ARM_R5,
- PERF_REG_ARM_R6,
- PERF_REG_ARM_R7,
- PERF_REG_ARM_R8,
+  PERF_REG_ARM_R5,
+  PERF_REG_ARM_R6,
+  PERF_REG_ARM_R7,
+  PERF_REG_ARM_R8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_ARM_R9,
- PERF_REG_ARM_R10,
- PERF_REG_ARM_FP,
- PERF_REG_ARM_IP,
+  PERF_REG_ARM_R9,
+  PERF_REG_ARM_R10,
+  PERF_REG_ARM_FP,
+  PERF_REG_ARM_IP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_ARM_SP,
- PERF_REG_ARM_LR,
- PERF_REG_ARM_PC,
- PERF_REG_ARM_MAX,
+  PERF_REG_ARM_SP,
+  PERF_REG_ARM_LR,
+  PERF_REG_ARM_PC,
+  PERF_REG_ARM_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/ptrace.h b/libc/kernel/uapi/asm-arm/asm/ptrace.h
index 9d39d49..6a01598 100644
--- a/libc/kernel/uapi/asm-arm/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-arm/asm/ptrace.h
@@ -89,7 +89,7 @@
 #define PT_TEXT_END_ADDR 0x10008
 #ifndef __ASSEMBLY__
 struct pt_regs {
- long uregs[18];
+  long uregs[18];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ARM_cpsr uregs[16]
@@ -114,7 +114,7 @@
 #define ARM_r1 uregs[1]
 #define ARM_r0 uregs[0]
 #define ARM_ORIG_r0 uregs[17]
-#define ARM_VFPREGS_SIZE ( 32 * 8   + 4   )
+#define ARM_VFPREGS_SIZE (32 * 8 + 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/setup.h b/libc/kernel/uapi/asm-arm/asm/setup.h
index 0f2a18b..5fd2f20 100644
--- a/libc/kernel/uapi/asm-arm/asm/setup.h
+++ b/libc/kernel/uapi/asm-arm/asm/setup.h
@@ -23,133 +23,133 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATAG_NONE 0x00000000
 struct tag_header {
- __u32 size;
- __u32 tag;
+  __u32 size;
+  __u32 tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ATAG_CORE 0x54410001
 struct tag_core {
- __u32 flags;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pagesize;
- __u32 rootdev;
+  __u32 pagesize;
+  __u32 rootdev;
 };
 #define ATAG_MEM 0x54410002
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tag_mem32 {
- __u32 size;
- __u32 start;
+  __u32 size;
+  __u32 start;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATAG_VIDEOTEXT 0x54410003
 struct tag_videotext {
- __u8 x;
- __u8 y;
+  __u8 x;
+  __u8 y;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 video_page;
- __u8 video_mode;
- __u8 video_cols;
- __u16 video_ega_bx;
+  __u16 video_page;
+  __u8 video_mode;
+  __u8 video_cols;
+  __u16 video_ega_bx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 video_lines;
- __u8 video_isvga;
- __u16 video_points;
+  __u8 video_lines;
+  __u8 video_isvga;
+  __u16 video_points;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATAG_RAMDISK 0x54410004
 struct tag_ramdisk {
- __u32 flags;
- __u32 size;
+  __u32 flags;
+  __u32 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 start;
+  __u32 start;
 };
 #define ATAG_INITRD 0x54410005
 #define ATAG_INITRD2 0x54420005
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tag_initrd {
- __u32 start;
- __u32 size;
+  __u32 start;
+  __u32 size;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATAG_SERIAL 0x54410006
 struct tag_serialnr {
- __u32 low;
- __u32 high;
+  __u32 low;
+  __u32 high;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ATAG_REVISION 0x54410007
 struct tag_revision {
- __u32 rev;
+  __u32 rev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ATAG_VIDEOLFB 0x54410008
 struct tag_videolfb {
- __u16 lfb_width;
+  __u16 lfb_width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 lfb_height;
- __u16 lfb_depth;
- __u16 lfb_linelength;
- __u32 lfb_base;
+  __u16 lfb_height;
+  __u16 lfb_depth;
+  __u16 lfb_linelength;
+  __u32 lfb_base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lfb_size;
- __u8 red_size;
- __u8 red_pos;
- __u8 green_size;
+  __u32 lfb_size;
+  __u8 red_size;
+  __u8 red_pos;
+  __u8 green_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 green_pos;
- __u8 blue_size;
- __u8 blue_pos;
- __u8 rsvd_size;
+  __u8 green_pos;
+  __u8 blue_size;
+  __u8 blue_pos;
+  __u8 rsvd_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rsvd_pos;
+  __u8 rsvd_pos;
 };
 #define ATAG_CMDLINE 0x54410009
 struct tag_cmdline {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char cmdline[1];
+  char cmdline[1];
 };
 #define ATAG_ACORN 0x41000101
 struct tag_acorn {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 memc_control_reg;
- __u32 vram_pages;
- __u8 sounddefault;
- __u8 adfsdrives;
+  __u32 memc_control_reg;
+  __u32 vram_pages;
+  __u8 sounddefault;
+  __u8 adfsdrives;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ATAG_MEMCLK 0x41000402
 struct tag_memclk {
- __u32 fmemclk;
+  __u32 fmemclk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tag {
- struct tag_header hdr;
- union {
+  struct tag_header hdr;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tag_core core;
- struct tag_mem32 mem;
- struct tag_videotext videotext;
- struct tag_ramdisk ramdisk;
+    struct tag_core core;
+    struct tag_mem32 mem;
+    struct tag_videotext videotext;
+    struct tag_ramdisk ramdisk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tag_initrd initrd;
- struct tag_serialnr serialnr;
- struct tag_revision revision;
- struct tag_videolfb videolfb;
+    struct tag_initrd initrd;
+    struct tag_serialnr serialnr;
+    struct tag_revision revision;
+    struct tag_videolfb videolfb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tag_cmdline cmdline;
- struct tag_acorn acorn;
- struct tag_memclk memclk;
- } u;
+    struct tag_cmdline cmdline;
+    struct tag_acorn acorn;
+    struct tag_memclk memclk;
+  } u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tagtable {
- __u32 tag;
- int (*parse)(const struct tag *);
+  __u32 tag;
+  int(* parse) (const struct tag *);
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define tag_member_present(tag,member)   ((unsigned long)(&((struct tag *)0L)->member + 1)   <= (tag)->hdr.size * 4)
-#define tag_next(t) ((struct tag *)((__u32 *)(t) + (t)->hdr.size))
+#define tag_member_present(tag,member) ((unsigned long) (& ((struct tag *) 0L)->member + 1) <= (tag)->hdr.size * 4)
+#define tag_next(t) ((struct tag *) ((__u32 *) (t) + (t)->hdr.size))
 #define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define for_each_tag(t,base)   for (t = base; t->hdr.size; t = tag_next(t))
+#define for_each_tag(t,base) for(t = base; t->hdr.size; t = tag_next(t))
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/sigcontext.h b/libc/kernel/uapi/asm-arm/asm/sigcontext.h
index bda2339..739de4c 100644
--- a/libc/kernel/uapi/asm-arm/asm/sigcontext.h
+++ b/libc/kernel/uapi/asm-arm/asm/sigcontext.h
@@ -19,32 +19,32 @@
 #ifndef _ASMARM_SIGCONTEXT_H
 #define _ASMARM_SIGCONTEXT_H
 struct sigcontext {
- unsigned long trap_no;
+  unsigned long trap_no;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long error_code;
- unsigned long oldmask;
- unsigned long arm_r0;
- unsigned long arm_r1;
+  unsigned long error_code;
+  unsigned long oldmask;
+  unsigned long arm_r0;
+  unsigned long arm_r1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long arm_r2;
- unsigned long arm_r3;
- unsigned long arm_r4;
- unsigned long arm_r5;
+  unsigned long arm_r2;
+  unsigned long arm_r3;
+  unsigned long arm_r4;
+  unsigned long arm_r5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long arm_r6;
- unsigned long arm_r7;
- unsigned long arm_r8;
- unsigned long arm_r9;
+  unsigned long arm_r6;
+  unsigned long arm_r7;
+  unsigned long arm_r8;
+  unsigned long arm_r9;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long arm_r10;
- unsigned long arm_fp;
- unsigned long arm_ip;
- unsigned long arm_sp;
+  unsigned long arm_r10;
+  unsigned long arm_fp;
+  unsigned long arm_ip;
+  unsigned long arm_sp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long arm_lr;
- unsigned long arm_pc;
- unsigned long arm_cpsr;
- unsigned long fault_address;
+  unsigned long arm_lr;
+  unsigned long arm_pc;
+  unsigned long arm_cpsr;
+  unsigned long fault_address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/signal.h b/libc/kernel/uapi/asm-arm/asm/signal.h
index fd39aaa..5ee272b 100644
--- a/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -88,23 +88,23 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/signal-defs.h>
 struct sigaction {
- union {
- __sighandler_t _sa_handler;
+  union {
+    __sighandler_t _sa_handler;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void (*_sa_sigaction)(int, struct siginfo *, void *);
- } _u;
- sigset_t sa_mask;
- unsigned long sa_flags;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void (*sa_restorer)(void);
+  void(* sa_restorer) (void);
 };
 #define sa_handler _u._sa_handler
 #define sa_sigaction _u._sa_sigaction
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct sigaltstack {
- void __user *ss_sp;
- int ss_flags;
- size_t ss_size;
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } stack_t;
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/stat.h b/libc/kernel/uapi/asm-arm/asm/stat.h
index b3425dd..5a78c01 100644
--- a/libc/kernel/uapi/asm-arm/asm/stat.h
+++ b/libc/kernel/uapi/asm-arm/asm/stat.h
@@ -19,73 +19,73 @@
 #ifndef _ASMARM_STAT_H
 #define _ASMARM_STAT_H
 struct __old_kernel_stat {
- unsigned short st_dev;
+  unsigned short st_dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short st_ino;
- unsigned short st_mode;
- unsigned short st_nlink;
- unsigned short st_uid;
+  unsigned short st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short st_gid;
- unsigned short st_rdev;
- unsigned long st_size;
- unsigned long st_atime;
+  unsigned short st_gid;
+  unsigned short st_rdev;
+  unsigned long st_size;
+  unsigned long st_atime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_mtime;
- unsigned long st_ctime;
+  unsigned long st_mtime;
+  unsigned long st_ctime;
 };
 #define STAT_HAVE_NSEC
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct stat {
- unsigned long st_dev;
- unsigned long st_ino;
- unsigned short st_mode;
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned short st_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short st_nlink;
- unsigned short st_uid;
- unsigned short st_gid;
- unsigned long st_rdev;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned long st_rdev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_size;
- unsigned long st_blksize;
- unsigned long st_blocks;
- unsigned long st_atime;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
+  unsigned long st_atime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_atime_nsec;
- unsigned long st_mtime;
- unsigned long st_mtime_nsec;
- unsigned long st_ctime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_ctime_nsec;
- unsigned long __unused4;
- unsigned long __unused5;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct stat64 {
- unsigned long long st_dev;
- unsigned char __pad0[4];
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
 #define STAT64_HAS_BROKEN_ST_INO 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __st_ino;
- unsigned int st_mode;
- unsigned int st_nlink;
- unsigned long st_uid;
+  unsigned long __st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned long st_uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_gid;
- unsigned long long st_rdev;
- unsigned char __pad3[4];
- long long st_size;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
+  unsigned char __pad3[4];
+  long long st_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_blksize;
- unsigned long long st_blocks;
- unsigned long st_atime;
- unsigned long st_atime_nsec;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_mtime;
- unsigned long st_mtime_nsec;
- unsigned long st_ctime;
- unsigned long st_ctime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long long st_ino;
+  unsigned long long st_ino;
 };
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/statfs.h b/libc/kernel/uapi/asm-arm/asm/statfs.h
index d1f3b81..60ccd6b 100644
--- a/libc/kernel/uapi/asm-arm/asm/statfs.h
+++ b/libc/kernel/uapi/asm-arm/asm/statfs.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _ASMARM_STATFS_H
 #define _ASMARM_STATFS_H
-#define ARCH_PACK_STATFS64 __attribute__((packed,aligned(4)))
+#define ARCH_PACK_STATFS64 __attribute__((packed, aligned(4)))
 #include <asm-generic/statfs.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd.h b/libc/kernel/uapi/asm-arm/asm/unistd.h
index be9f36f..32f6688 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd.h
@@ -21,464 +21,470 @@
 #define __NR_OABI_SYSCALL_BASE 0x900000
 #define __NR_SYSCALL_BASE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_restart_syscall (__NR_SYSCALL_BASE+ 0)
-#define __NR_exit (__NR_SYSCALL_BASE+ 1)
-#define __NR_fork (__NR_SYSCALL_BASE+ 2)
-#define __NR_read (__NR_SYSCALL_BASE+ 3)
+#define __NR_restart_syscall (__NR_SYSCALL_BASE + 0)
+#define __NR_exit (__NR_SYSCALL_BASE + 1)
+#define __NR_fork (__NR_SYSCALL_BASE + 2)
+#define __NR_read (__NR_SYSCALL_BASE + 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_write (__NR_SYSCALL_BASE+ 4)
-#define __NR_open (__NR_SYSCALL_BASE+ 5)
-#define __NR_close (__NR_SYSCALL_BASE+ 6)
-#define __NR_creat (__NR_SYSCALL_BASE+ 8)
+#define __NR_write (__NR_SYSCALL_BASE + 4)
+#define __NR_open (__NR_SYSCALL_BASE + 5)
+#define __NR_close (__NR_SYSCALL_BASE + 6)
+#define __NR_creat (__NR_SYSCALL_BASE + 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_link (__NR_SYSCALL_BASE+ 9)
-#define __NR_unlink (__NR_SYSCALL_BASE+ 10)
-#define __NR_execve (__NR_SYSCALL_BASE+ 11)
-#define __NR_chdir (__NR_SYSCALL_BASE+ 12)
+#define __NR_link (__NR_SYSCALL_BASE + 9)
+#define __NR_unlink (__NR_SYSCALL_BASE + 10)
+#define __NR_execve (__NR_SYSCALL_BASE + 11)
+#define __NR_chdir (__NR_SYSCALL_BASE + 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_time (__NR_SYSCALL_BASE+ 13)
-#define __NR_mknod (__NR_SYSCALL_BASE+ 14)
-#define __NR_chmod (__NR_SYSCALL_BASE+ 15)
-#define __NR_lchown (__NR_SYSCALL_BASE+ 16)
+#define __NR_time (__NR_SYSCALL_BASE + 13)
+#define __NR_mknod (__NR_SYSCALL_BASE + 14)
+#define __NR_chmod (__NR_SYSCALL_BASE + 15)
+#define __NR_lchown (__NR_SYSCALL_BASE + 16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_lseek (__NR_SYSCALL_BASE+ 19)
-#define __NR_getpid (__NR_SYSCALL_BASE+ 20)
-#define __NR_mount (__NR_SYSCALL_BASE+ 21)
-#define __NR_umount (__NR_SYSCALL_BASE+ 22)
+#define __NR_lseek (__NR_SYSCALL_BASE + 19)
+#define __NR_getpid (__NR_SYSCALL_BASE + 20)
+#define __NR_mount (__NR_SYSCALL_BASE + 21)
+#define __NR_umount (__NR_SYSCALL_BASE + 22)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_setuid (__NR_SYSCALL_BASE+ 23)
-#define __NR_getuid (__NR_SYSCALL_BASE+ 24)
-#define __NR_stime (__NR_SYSCALL_BASE+ 25)
-#define __NR_ptrace (__NR_SYSCALL_BASE+ 26)
+#define __NR_setuid (__NR_SYSCALL_BASE + 23)
+#define __NR_getuid (__NR_SYSCALL_BASE + 24)
+#define __NR_stime (__NR_SYSCALL_BASE + 25)
+#define __NR_ptrace (__NR_SYSCALL_BASE + 26)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_alarm (__NR_SYSCALL_BASE+ 27)
-#define __NR_pause (__NR_SYSCALL_BASE+ 29)
-#define __NR_utime (__NR_SYSCALL_BASE+ 30)
-#define __NR_access (__NR_SYSCALL_BASE+ 33)
+#define __NR_alarm (__NR_SYSCALL_BASE + 27)
+#define __NR_pause (__NR_SYSCALL_BASE + 29)
+#define __NR_utime (__NR_SYSCALL_BASE + 30)
+#define __NR_access (__NR_SYSCALL_BASE + 33)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_nice (__NR_SYSCALL_BASE+ 34)
-#define __NR_sync (__NR_SYSCALL_BASE+ 36)
-#define __NR_kill (__NR_SYSCALL_BASE+ 37)
-#define __NR_rename (__NR_SYSCALL_BASE+ 38)
+#define __NR_nice (__NR_SYSCALL_BASE + 34)
+#define __NR_sync (__NR_SYSCALL_BASE + 36)
+#define __NR_kill (__NR_SYSCALL_BASE + 37)
+#define __NR_rename (__NR_SYSCALL_BASE + 38)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_mkdir (__NR_SYSCALL_BASE+ 39)
-#define __NR_rmdir (__NR_SYSCALL_BASE+ 40)
-#define __NR_dup (__NR_SYSCALL_BASE+ 41)
-#define __NR_pipe (__NR_SYSCALL_BASE+ 42)
+#define __NR_mkdir (__NR_SYSCALL_BASE + 39)
+#define __NR_rmdir (__NR_SYSCALL_BASE + 40)
+#define __NR_dup (__NR_SYSCALL_BASE + 41)
+#define __NR_pipe (__NR_SYSCALL_BASE + 42)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_times (__NR_SYSCALL_BASE+ 43)
-#define __NR_brk (__NR_SYSCALL_BASE+ 45)
-#define __NR_setgid (__NR_SYSCALL_BASE+ 46)
-#define __NR_getgid (__NR_SYSCALL_BASE+ 47)
+#define __NR_times (__NR_SYSCALL_BASE + 43)
+#define __NR_brk (__NR_SYSCALL_BASE + 45)
+#define __NR_setgid (__NR_SYSCALL_BASE + 46)
+#define __NR_getgid (__NR_SYSCALL_BASE + 47)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_geteuid (__NR_SYSCALL_BASE+ 49)
-#define __NR_getegid (__NR_SYSCALL_BASE+ 50)
-#define __NR_acct (__NR_SYSCALL_BASE+ 51)
-#define __NR_umount2 (__NR_SYSCALL_BASE+ 52)
+#define __NR_geteuid (__NR_SYSCALL_BASE + 49)
+#define __NR_getegid (__NR_SYSCALL_BASE + 50)
+#define __NR_acct (__NR_SYSCALL_BASE + 51)
+#define __NR_umount2 (__NR_SYSCALL_BASE + 52)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_ioctl (__NR_SYSCALL_BASE+ 54)
-#define __NR_fcntl (__NR_SYSCALL_BASE+ 55)
-#define __NR_setpgid (__NR_SYSCALL_BASE+ 57)
-#define __NR_umask (__NR_SYSCALL_BASE+ 60)
+#define __NR_ioctl (__NR_SYSCALL_BASE + 54)
+#define __NR_fcntl (__NR_SYSCALL_BASE + 55)
+#define __NR_setpgid (__NR_SYSCALL_BASE + 57)
+#define __NR_umask (__NR_SYSCALL_BASE + 60)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_chroot (__NR_SYSCALL_BASE+ 61)
-#define __NR_ustat (__NR_SYSCALL_BASE+ 62)
-#define __NR_dup2 (__NR_SYSCALL_BASE+ 63)
-#define __NR_getppid (__NR_SYSCALL_BASE+ 64)
+#define __NR_chroot (__NR_SYSCALL_BASE + 61)
+#define __NR_ustat (__NR_SYSCALL_BASE + 62)
+#define __NR_dup2 (__NR_SYSCALL_BASE + 63)
+#define __NR_getppid (__NR_SYSCALL_BASE + 64)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getpgrp (__NR_SYSCALL_BASE+ 65)
-#define __NR_setsid (__NR_SYSCALL_BASE+ 66)
-#define __NR_sigaction (__NR_SYSCALL_BASE+ 67)
-#define __NR_setreuid (__NR_SYSCALL_BASE+ 70)
+#define __NR_getpgrp (__NR_SYSCALL_BASE + 65)
+#define __NR_setsid (__NR_SYSCALL_BASE + 66)
+#define __NR_sigaction (__NR_SYSCALL_BASE + 67)
+#define __NR_setreuid (__NR_SYSCALL_BASE + 70)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_setregid (__NR_SYSCALL_BASE+ 71)
-#define __NR_sigsuspend (__NR_SYSCALL_BASE+ 72)
-#define __NR_sigpending (__NR_SYSCALL_BASE+ 73)
-#define __NR_sethostname (__NR_SYSCALL_BASE+ 74)
+#define __NR_setregid (__NR_SYSCALL_BASE + 71)
+#define __NR_sigsuspend (__NR_SYSCALL_BASE + 72)
+#define __NR_sigpending (__NR_SYSCALL_BASE + 73)
+#define __NR_sethostname (__NR_SYSCALL_BASE + 74)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_setrlimit (__NR_SYSCALL_BASE+ 75)
-#define __NR_getrlimit (__NR_SYSCALL_BASE+ 76)
-#define __NR_getrusage (__NR_SYSCALL_BASE+ 77)
-#define __NR_gettimeofday (__NR_SYSCALL_BASE+ 78)
+#define __NR_setrlimit (__NR_SYSCALL_BASE + 75)
+#define __NR_getrlimit (__NR_SYSCALL_BASE + 76)
+#define __NR_getrusage (__NR_SYSCALL_BASE + 77)
+#define __NR_gettimeofday (__NR_SYSCALL_BASE + 78)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_settimeofday (__NR_SYSCALL_BASE+ 79)
-#define __NR_getgroups (__NR_SYSCALL_BASE+ 80)
-#define __NR_setgroups (__NR_SYSCALL_BASE+ 81)
-#define __NR_select (__NR_SYSCALL_BASE+ 82)
+#define __NR_settimeofday (__NR_SYSCALL_BASE + 79)
+#define __NR_getgroups (__NR_SYSCALL_BASE + 80)
+#define __NR_setgroups (__NR_SYSCALL_BASE + 81)
+#define __NR_select (__NR_SYSCALL_BASE + 82)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_symlink (__NR_SYSCALL_BASE+ 83)
-#define __NR_readlink (__NR_SYSCALL_BASE+ 85)
-#define __NR_uselib (__NR_SYSCALL_BASE+ 86)
-#define __NR_swapon (__NR_SYSCALL_BASE+ 87)
+#define __NR_symlink (__NR_SYSCALL_BASE + 83)
+#define __NR_readlink (__NR_SYSCALL_BASE + 85)
+#define __NR_uselib (__NR_SYSCALL_BASE + 86)
+#define __NR_swapon (__NR_SYSCALL_BASE + 87)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_reboot (__NR_SYSCALL_BASE+ 88)
-#define __NR_readdir (__NR_SYSCALL_BASE+ 89)
-#define __NR_mmap (__NR_SYSCALL_BASE+ 90)
-#define __NR_munmap (__NR_SYSCALL_BASE+ 91)
+#define __NR_reboot (__NR_SYSCALL_BASE + 88)
+#define __NR_readdir (__NR_SYSCALL_BASE + 89)
+#define __NR_mmap (__NR_SYSCALL_BASE + 90)
+#define __NR_munmap (__NR_SYSCALL_BASE + 91)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_truncate (__NR_SYSCALL_BASE+ 92)
-#define __NR_ftruncate (__NR_SYSCALL_BASE+ 93)
-#define __NR_fchmod (__NR_SYSCALL_BASE+ 94)
-#define __NR_fchown (__NR_SYSCALL_BASE+ 95)
+#define __NR_truncate (__NR_SYSCALL_BASE + 92)
+#define __NR_ftruncate (__NR_SYSCALL_BASE + 93)
+#define __NR_fchmod (__NR_SYSCALL_BASE + 94)
+#define __NR_fchown (__NR_SYSCALL_BASE + 95)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getpriority (__NR_SYSCALL_BASE+ 96)
-#define __NR_setpriority (__NR_SYSCALL_BASE+ 97)
-#define __NR_statfs (__NR_SYSCALL_BASE+ 99)
-#define __NR_fstatfs (__NR_SYSCALL_BASE+100)
+#define __NR_getpriority (__NR_SYSCALL_BASE + 96)
+#define __NR_setpriority (__NR_SYSCALL_BASE + 97)
+#define __NR_statfs (__NR_SYSCALL_BASE + 99)
+#define __NR_fstatfs (__NR_SYSCALL_BASE + 100)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_socketcall (__NR_SYSCALL_BASE+102)
-#define __NR_syslog (__NR_SYSCALL_BASE+103)
-#define __NR_setitimer (__NR_SYSCALL_BASE+104)
-#define __NR_getitimer (__NR_SYSCALL_BASE+105)
+#define __NR_socketcall (__NR_SYSCALL_BASE + 102)
+#define __NR_syslog (__NR_SYSCALL_BASE + 103)
+#define __NR_setitimer (__NR_SYSCALL_BASE + 104)
+#define __NR_getitimer (__NR_SYSCALL_BASE + 105)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_stat (__NR_SYSCALL_BASE+106)
-#define __NR_lstat (__NR_SYSCALL_BASE+107)
-#define __NR_fstat (__NR_SYSCALL_BASE+108)
-#define __NR_vhangup (__NR_SYSCALL_BASE+111)
+#define __NR_stat (__NR_SYSCALL_BASE + 106)
+#define __NR_lstat (__NR_SYSCALL_BASE + 107)
+#define __NR_fstat (__NR_SYSCALL_BASE + 108)
+#define __NR_vhangup (__NR_SYSCALL_BASE + 111)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_syscall (__NR_SYSCALL_BASE+113)
-#define __NR_wait4 (__NR_SYSCALL_BASE+114)
-#define __NR_swapoff (__NR_SYSCALL_BASE+115)
-#define __NR_sysinfo (__NR_SYSCALL_BASE+116)
+#define __NR_syscall (__NR_SYSCALL_BASE + 113)
+#define __NR_wait4 (__NR_SYSCALL_BASE + 114)
+#define __NR_swapoff (__NR_SYSCALL_BASE + 115)
+#define __NR_sysinfo (__NR_SYSCALL_BASE + 116)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_ipc (__NR_SYSCALL_BASE+117)
-#define __NR_fsync (__NR_SYSCALL_BASE+118)
-#define __NR_sigreturn (__NR_SYSCALL_BASE+119)
-#define __NR_clone (__NR_SYSCALL_BASE+120)
+#define __NR_ipc (__NR_SYSCALL_BASE + 117)
+#define __NR_fsync (__NR_SYSCALL_BASE + 118)
+#define __NR_sigreturn (__NR_SYSCALL_BASE + 119)
+#define __NR_clone (__NR_SYSCALL_BASE + 120)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_setdomainname (__NR_SYSCALL_BASE+121)
-#define __NR_uname (__NR_SYSCALL_BASE+122)
-#define __NR_adjtimex (__NR_SYSCALL_BASE+124)
-#define __NR_mprotect (__NR_SYSCALL_BASE+125)
+#define __NR_setdomainname (__NR_SYSCALL_BASE + 121)
+#define __NR_uname (__NR_SYSCALL_BASE + 122)
+#define __NR_adjtimex (__NR_SYSCALL_BASE + 124)
+#define __NR_mprotect (__NR_SYSCALL_BASE + 125)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_sigprocmask (__NR_SYSCALL_BASE+126)
-#define __NR_init_module (__NR_SYSCALL_BASE+128)
-#define __NR_delete_module (__NR_SYSCALL_BASE+129)
-#define __NR_quotactl (__NR_SYSCALL_BASE+131)
+#define __NR_sigprocmask (__NR_SYSCALL_BASE + 126)
+#define __NR_init_module (__NR_SYSCALL_BASE + 128)
+#define __NR_delete_module (__NR_SYSCALL_BASE + 129)
+#define __NR_quotactl (__NR_SYSCALL_BASE + 131)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getpgid (__NR_SYSCALL_BASE+132)
-#define __NR_fchdir (__NR_SYSCALL_BASE+133)
-#define __NR_bdflush (__NR_SYSCALL_BASE+134)
-#define __NR_sysfs (__NR_SYSCALL_BASE+135)
+#define __NR_getpgid (__NR_SYSCALL_BASE + 132)
+#define __NR_fchdir (__NR_SYSCALL_BASE + 133)
+#define __NR_bdflush (__NR_SYSCALL_BASE + 134)
+#define __NR_sysfs (__NR_SYSCALL_BASE + 135)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_personality (__NR_SYSCALL_BASE+136)
-#define __NR_setfsuid (__NR_SYSCALL_BASE+138)
-#define __NR_setfsgid (__NR_SYSCALL_BASE+139)
-#define __NR__llseek (__NR_SYSCALL_BASE+140)
+#define __NR_personality (__NR_SYSCALL_BASE + 136)
+#define __NR_setfsuid (__NR_SYSCALL_BASE + 138)
+#define __NR_setfsgid (__NR_SYSCALL_BASE + 139)
+#define __NR__llseek (__NR_SYSCALL_BASE + 140)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getdents (__NR_SYSCALL_BASE+141)
-#define __NR__newselect (__NR_SYSCALL_BASE+142)
-#define __NR_flock (__NR_SYSCALL_BASE+143)
-#define __NR_msync (__NR_SYSCALL_BASE+144)
+#define __NR_getdents (__NR_SYSCALL_BASE + 141)
+#define __NR__newselect (__NR_SYSCALL_BASE + 142)
+#define __NR_flock (__NR_SYSCALL_BASE + 143)
+#define __NR_msync (__NR_SYSCALL_BASE + 144)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_readv (__NR_SYSCALL_BASE+145)
-#define __NR_writev (__NR_SYSCALL_BASE+146)
-#define __NR_getsid (__NR_SYSCALL_BASE+147)
-#define __NR_fdatasync (__NR_SYSCALL_BASE+148)
+#define __NR_readv (__NR_SYSCALL_BASE + 145)
+#define __NR_writev (__NR_SYSCALL_BASE + 146)
+#define __NR_getsid (__NR_SYSCALL_BASE + 147)
+#define __NR_fdatasync (__NR_SYSCALL_BASE + 148)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR__sysctl (__NR_SYSCALL_BASE+149)
-#define __NR_mlock (__NR_SYSCALL_BASE+150)
-#define __NR_munlock (__NR_SYSCALL_BASE+151)
-#define __NR_mlockall (__NR_SYSCALL_BASE+152)
+#define __NR__sysctl (__NR_SYSCALL_BASE + 149)
+#define __NR_mlock (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock (__NR_SYSCALL_BASE + 151)
+#define __NR_mlockall (__NR_SYSCALL_BASE + 152)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_munlockall (__NR_SYSCALL_BASE+153)
-#define __NR_sched_setparam (__NR_SYSCALL_BASE+154)
-#define __NR_sched_getparam (__NR_SYSCALL_BASE+155)
-#define __NR_sched_setscheduler (__NR_SYSCALL_BASE+156)
+#define __NR_munlockall (__NR_SYSCALL_BASE + 153)
+#define __NR_sched_setparam (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler (__NR_SYSCALL_BASE + 156)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_sched_getscheduler (__NR_SYSCALL_BASE+157)
-#define __NR_sched_yield (__NR_SYSCALL_BASE+158)
-#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE+159)
-#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE+160)
+#define __NR_sched_getscheduler (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE + 160)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE+161)
-#define __NR_nanosleep (__NR_SYSCALL_BASE+162)
-#define __NR_mremap (__NR_SYSCALL_BASE+163)
-#define __NR_setresuid (__NR_SYSCALL_BASE+164)
+#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap (__NR_SYSCALL_BASE + 163)
+#define __NR_setresuid (__NR_SYSCALL_BASE + 164)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getresuid (__NR_SYSCALL_BASE+165)
-#define __NR_poll (__NR_SYSCALL_BASE+168)
-#define __NR_nfsservctl (__NR_SYSCALL_BASE+169)
-#define __NR_setresgid (__NR_SYSCALL_BASE+170)
+#define __NR_getresuid (__NR_SYSCALL_BASE + 165)
+#define __NR_poll (__NR_SYSCALL_BASE + 168)
+#define __NR_nfsservctl (__NR_SYSCALL_BASE + 169)
+#define __NR_setresgid (__NR_SYSCALL_BASE + 170)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getresgid (__NR_SYSCALL_BASE+171)
-#define __NR_prctl (__NR_SYSCALL_BASE+172)
-#define __NR_rt_sigreturn (__NR_SYSCALL_BASE+173)
-#define __NR_rt_sigaction (__NR_SYSCALL_BASE+174)
+#define __NR_getresgid (__NR_SYSCALL_BASE + 171)
+#define __NR_prctl (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigreturn (__NR_SYSCALL_BASE + 173)
+#define __NR_rt_sigaction (__NR_SYSCALL_BASE + 174)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE+175)
-#define __NR_rt_sigpending (__NR_SYSCALL_BASE+176)
-#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE+177)
-#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE+178)
+#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigpending (__NR_SYSCALL_BASE + 176)
+#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE + 177)
+#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE + 178)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE+179)
-#define __NR_pread64 (__NR_SYSCALL_BASE+180)
-#define __NR_pwrite64 (__NR_SYSCALL_BASE+181)
-#define __NR_chown (__NR_SYSCALL_BASE+182)
+#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE + 179)
+#define __NR_pread64 (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64 (__NR_SYSCALL_BASE + 181)
+#define __NR_chown (__NR_SYSCALL_BASE + 182)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getcwd (__NR_SYSCALL_BASE+183)
-#define __NR_capget (__NR_SYSCALL_BASE+184)
-#define __NR_capset (__NR_SYSCALL_BASE+185)
-#define __NR_sigaltstack (__NR_SYSCALL_BASE+186)
+#define __NR_getcwd (__NR_SYSCALL_BASE + 183)
+#define __NR_capget (__NR_SYSCALL_BASE + 184)
+#define __NR_capset (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack (__NR_SYSCALL_BASE + 186)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_sendfile (__NR_SYSCALL_BASE+187)
-#define __NR_vfork (__NR_SYSCALL_BASE+190)
-#define __NR_ugetrlimit (__NR_SYSCALL_BASE+191)
-#define __NR_mmap2 (__NR_SYSCALL_BASE+192)
+#define __NR_sendfile (__NR_SYSCALL_BASE + 187)
+#define __NR_vfork (__NR_SYSCALL_BASE + 190)
+#define __NR_ugetrlimit (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2 (__NR_SYSCALL_BASE + 192)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_truncate64 (__NR_SYSCALL_BASE+193)
-#define __NR_ftruncate64 (__NR_SYSCALL_BASE+194)
-#define __NR_stat64 (__NR_SYSCALL_BASE+195)
-#define __NR_lstat64 (__NR_SYSCALL_BASE+196)
+#define __NR_truncate64 (__NR_SYSCALL_BASE + 193)
+#define __NR_ftruncate64 (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64 (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64 (__NR_SYSCALL_BASE + 196)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_fstat64 (__NR_SYSCALL_BASE+197)
-#define __NR_lchown32 (__NR_SYSCALL_BASE+198)
-#define __NR_getuid32 (__NR_SYSCALL_BASE+199)
-#define __NR_getgid32 (__NR_SYSCALL_BASE+200)
+#define __NR_fstat64 (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32 (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32 (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32 (__NR_SYSCALL_BASE + 200)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_geteuid32 (__NR_SYSCALL_BASE+201)
-#define __NR_getegid32 (__NR_SYSCALL_BASE+202)
-#define __NR_setreuid32 (__NR_SYSCALL_BASE+203)
-#define __NR_setregid32 (__NR_SYSCALL_BASE+204)
+#define __NR_geteuid32 (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32 (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32 (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32 (__NR_SYSCALL_BASE + 204)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getgroups32 (__NR_SYSCALL_BASE+205)
-#define __NR_setgroups32 (__NR_SYSCALL_BASE+206)
-#define __NR_fchown32 (__NR_SYSCALL_BASE+207)
-#define __NR_setresuid32 (__NR_SYSCALL_BASE+208)
+#define __NR_getgroups32 (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32 (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32 (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32 (__NR_SYSCALL_BASE + 208)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getresuid32 (__NR_SYSCALL_BASE+209)
-#define __NR_setresgid32 (__NR_SYSCALL_BASE+210)
-#define __NR_getresgid32 (__NR_SYSCALL_BASE+211)
-#define __NR_chown32 (__NR_SYSCALL_BASE+212)
+#define __NR_getresuid32 (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32 (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32 (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32 (__NR_SYSCALL_BASE + 212)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_setuid32 (__NR_SYSCALL_BASE+213)
-#define __NR_setgid32 (__NR_SYSCALL_BASE+214)
-#define __NR_setfsuid32 (__NR_SYSCALL_BASE+215)
-#define __NR_setfsgid32 (__NR_SYSCALL_BASE+216)
+#define __NR_setuid32 (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32 (__NR_SYSCALL_BASE + 214)
+#define __NR_setfsuid32 (__NR_SYSCALL_BASE + 215)
+#define __NR_setfsgid32 (__NR_SYSCALL_BASE + 216)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_getdents64 (__NR_SYSCALL_BASE+217)
-#define __NR_pivot_root (__NR_SYSCALL_BASE+218)
-#define __NR_mincore (__NR_SYSCALL_BASE+219)
-#define __NR_madvise (__NR_SYSCALL_BASE+220)
+#define __NR_getdents64 (__NR_SYSCALL_BASE + 217)
+#define __NR_pivot_root (__NR_SYSCALL_BASE + 218)
+#define __NR_mincore (__NR_SYSCALL_BASE + 219)
+#define __NR_madvise (__NR_SYSCALL_BASE + 220)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_fcntl64 (__NR_SYSCALL_BASE+221)
-#define __NR_gettid (__NR_SYSCALL_BASE+224)
-#define __NR_readahead (__NR_SYSCALL_BASE+225)
-#define __NR_setxattr (__NR_SYSCALL_BASE+226)
+#define __NR_fcntl64 (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid (__NR_SYSCALL_BASE + 224)
+#define __NR_readahead (__NR_SYSCALL_BASE + 225)
+#define __NR_setxattr (__NR_SYSCALL_BASE + 226)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_lsetxattr (__NR_SYSCALL_BASE+227)
-#define __NR_fsetxattr (__NR_SYSCALL_BASE+228)
-#define __NR_getxattr (__NR_SYSCALL_BASE+229)
-#define __NR_lgetxattr (__NR_SYSCALL_BASE+230)
+#define __NR_lsetxattr (__NR_SYSCALL_BASE + 227)
+#define __NR_fsetxattr (__NR_SYSCALL_BASE + 228)
+#define __NR_getxattr (__NR_SYSCALL_BASE + 229)
+#define __NR_lgetxattr (__NR_SYSCALL_BASE + 230)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_fgetxattr (__NR_SYSCALL_BASE+231)
-#define __NR_listxattr (__NR_SYSCALL_BASE+232)
-#define __NR_llistxattr (__NR_SYSCALL_BASE+233)
-#define __NR_flistxattr (__NR_SYSCALL_BASE+234)
+#define __NR_fgetxattr (__NR_SYSCALL_BASE + 231)
+#define __NR_listxattr (__NR_SYSCALL_BASE + 232)
+#define __NR_llistxattr (__NR_SYSCALL_BASE + 233)
+#define __NR_flistxattr (__NR_SYSCALL_BASE + 234)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_removexattr (__NR_SYSCALL_BASE+235)
-#define __NR_lremovexattr (__NR_SYSCALL_BASE+236)
-#define __NR_fremovexattr (__NR_SYSCALL_BASE+237)
-#define __NR_tkill (__NR_SYSCALL_BASE+238)
+#define __NR_removexattr (__NR_SYSCALL_BASE + 235)
+#define __NR_lremovexattr (__NR_SYSCALL_BASE + 236)
+#define __NR_fremovexattr (__NR_SYSCALL_BASE + 237)
+#define __NR_tkill (__NR_SYSCALL_BASE + 238)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_sendfile64 (__NR_SYSCALL_BASE+239)
-#define __NR_futex (__NR_SYSCALL_BASE+240)
-#define __NR_sched_setaffinity (__NR_SYSCALL_BASE+241)
-#define __NR_sched_getaffinity (__NR_SYSCALL_BASE+242)
+#define __NR_sendfile64 (__NR_SYSCALL_BASE + 239)
+#define __NR_futex (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity (__NR_SYSCALL_BASE + 242)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_io_setup (__NR_SYSCALL_BASE+243)
-#define __NR_io_destroy (__NR_SYSCALL_BASE+244)
-#define __NR_io_getevents (__NR_SYSCALL_BASE+245)
-#define __NR_io_submit (__NR_SYSCALL_BASE+246)
+#define __NR_io_setup (__NR_SYSCALL_BASE + 243)
+#define __NR_io_destroy (__NR_SYSCALL_BASE + 244)
+#define __NR_io_getevents (__NR_SYSCALL_BASE + 245)
+#define __NR_io_submit (__NR_SYSCALL_BASE + 246)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_io_cancel (__NR_SYSCALL_BASE+247)
-#define __NR_exit_group (__NR_SYSCALL_BASE+248)
-#define __NR_lookup_dcookie (__NR_SYSCALL_BASE+249)
-#define __NR_epoll_create (__NR_SYSCALL_BASE+250)
+#define __NR_io_cancel (__NR_SYSCALL_BASE + 247)
+#define __NR_exit_group (__NR_SYSCALL_BASE + 248)
+#define __NR_lookup_dcookie (__NR_SYSCALL_BASE + 249)
+#define __NR_epoll_create (__NR_SYSCALL_BASE + 250)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_epoll_ctl (__NR_SYSCALL_BASE+251)
-#define __NR_epoll_wait (__NR_SYSCALL_BASE+252)
-#define __NR_remap_file_pages (__NR_SYSCALL_BASE+253)
-#define __NR_set_tid_address (__NR_SYSCALL_BASE+256)
+#define __NR_epoll_ctl (__NR_SYSCALL_BASE + 251)
+#define __NR_epoll_wait (__NR_SYSCALL_BASE + 252)
+#define __NR_remap_file_pages (__NR_SYSCALL_BASE + 253)
+#define __NR_set_tid_address (__NR_SYSCALL_BASE + 256)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_timer_create (__NR_SYSCALL_BASE+257)
-#define __NR_timer_settime (__NR_SYSCALL_BASE+258)
-#define __NR_timer_gettime (__NR_SYSCALL_BASE+259)
-#define __NR_timer_getoverrun (__NR_SYSCALL_BASE+260)
+#define __NR_timer_create (__NR_SYSCALL_BASE + 257)
+#define __NR_timer_settime (__NR_SYSCALL_BASE + 258)
+#define __NR_timer_gettime (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_getoverrun (__NR_SYSCALL_BASE + 260)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_timer_delete (__NR_SYSCALL_BASE+261)
-#define __NR_clock_settime (__NR_SYSCALL_BASE+262)
-#define __NR_clock_gettime (__NR_SYSCALL_BASE+263)
-#define __NR_clock_getres (__NR_SYSCALL_BASE+264)
+#define __NR_timer_delete (__NR_SYSCALL_BASE + 261)
+#define __NR_clock_settime (__NR_SYSCALL_BASE + 262)
+#define __NR_clock_gettime (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_getres (__NR_SYSCALL_BASE + 264)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_clock_nanosleep (__NR_SYSCALL_BASE+265)
-#define __NR_statfs64 (__NR_SYSCALL_BASE+266)
-#define __NR_fstatfs64 (__NR_SYSCALL_BASE+267)
-#define __NR_tgkill (__NR_SYSCALL_BASE+268)
+#define __NR_clock_nanosleep (__NR_SYSCALL_BASE + 265)
+#define __NR_statfs64 (__NR_SYSCALL_BASE + 266)
+#define __NR_fstatfs64 (__NR_SYSCALL_BASE + 267)
+#define __NR_tgkill (__NR_SYSCALL_BASE + 268)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_utimes (__NR_SYSCALL_BASE+269)
-#define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE+270)
-#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE+271)
-#define __NR_pciconfig_read (__NR_SYSCALL_BASE+272)
+#define __NR_utimes (__NR_SYSCALL_BASE + 269)
+#define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE + 270)
+#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE + 271)
+#define __NR_pciconfig_read (__NR_SYSCALL_BASE + 272)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_pciconfig_write (__NR_SYSCALL_BASE+273)
-#define __NR_mq_open (__NR_SYSCALL_BASE+274)
-#define __NR_mq_unlink (__NR_SYSCALL_BASE+275)
-#define __NR_mq_timedsend (__NR_SYSCALL_BASE+276)
+#define __NR_pciconfig_write (__NR_SYSCALL_BASE + 273)
+#define __NR_mq_open (__NR_SYSCALL_BASE + 274)
+#define __NR_mq_unlink (__NR_SYSCALL_BASE + 275)
+#define __NR_mq_timedsend (__NR_SYSCALL_BASE + 276)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_mq_timedreceive (__NR_SYSCALL_BASE+277)
-#define __NR_mq_notify (__NR_SYSCALL_BASE+278)
-#define __NR_mq_getsetattr (__NR_SYSCALL_BASE+279)
-#define __NR_waitid (__NR_SYSCALL_BASE+280)
+#define __NR_mq_timedreceive (__NR_SYSCALL_BASE + 277)
+#define __NR_mq_notify (__NR_SYSCALL_BASE + 278)
+#define __NR_mq_getsetattr (__NR_SYSCALL_BASE + 279)
+#define __NR_waitid (__NR_SYSCALL_BASE + 280)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_socket (__NR_SYSCALL_BASE+281)
-#define __NR_bind (__NR_SYSCALL_BASE+282)
-#define __NR_connect (__NR_SYSCALL_BASE+283)
-#define __NR_listen (__NR_SYSCALL_BASE+284)
+#define __NR_socket (__NR_SYSCALL_BASE + 281)
+#define __NR_bind (__NR_SYSCALL_BASE + 282)
+#define __NR_connect (__NR_SYSCALL_BASE + 283)
+#define __NR_listen (__NR_SYSCALL_BASE + 284)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_accept (__NR_SYSCALL_BASE+285)
-#define __NR_getsockname (__NR_SYSCALL_BASE+286)
-#define __NR_getpeername (__NR_SYSCALL_BASE+287)
-#define __NR_socketpair (__NR_SYSCALL_BASE+288)
+#define __NR_accept (__NR_SYSCALL_BASE + 285)
+#define __NR_getsockname (__NR_SYSCALL_BASE + 286)
+#define __NR_getpeername (__NR_SYSCALL_BASE + 287)
+#define __NR_socketpair (__NR_SYSCALL_BASE + 288)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_send (__NR_SYSCALL_BASE+289)
-#define __NR_sendto (__NR_SYSCALL_BASE+290)
-#define __NR_recv (__NR_SYSCALL_BASE+291)
-#define __NR_recvfrom (__NR_SYSCALL_BASE+292)
+#define __NR_send (__NR_SYSCALL_BASE + 289)
+#define __NR_sendto (__NR_SYSCALL_BASE + 290)
+#define __NR_recv (__NR_SYSCALL_BASE + 291)
+#define __NR_recvfrom (__NR_SYSCALL_BASE + 292)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_shutdown (__NR_SYSCALL_BASE+293)
-#define __NR_setsockopt (__NR_SYSCALL_BASE+294)
-#define __NR_getsockopt (__NR_SYSCALL_BASE+295)
-#define __NR_sendmsg (__NR_SYSCALL_BASE+296)
+#define __NR_shutdown (__NR_SYSCALL_BASE + 293)
+#define __NR_setsockopt (__NR_SYSCALL_BASE + 294)
+#define __NR_getsockopt (__NR_SYSCALL_BASE + 295)
+#define __NR_sendmsg (__NR_SYSCALL_BASE + 296)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_recvmsg (__NR_SYSCALL_BASE+297)
-#define __NR_semop (__NR_SYSCALL_BASE+298)
-#define __NR_semget (__NR_SYSCALL_BASE+299)
-#define __NR_semctl (__NR_SYSCALL_BASE+300)
+#define __NR_recvmsg (__NR_SYSCALL_BASE + 297)
+#define __NR_semop (__NR_SYSCALL_BASE + 298)
+#define __NR_semget (__NR_SYSCALL_BASE + 299)
+#define __NR_semctl (__NR_SYSCALL_BASE + 300)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_msgsnd (__NR_SYSCALL_BASE+301)
-#define __NR_msgrcv (__NR_SYSCALL_BASE+302)
-#define __NR_msgget (__NR_SYSCALL_BASE+303)
-#define __NR_msgctl (__NR_SYSCALL_BASE+304)
+#define __NR_msgsnd (__NR_SYSCALL_BASE + 301)
+#define __NR_msgrcv (__NR_SYSCALL_BASE + 302)
+#define __NR_msgget (__NR_SYSCALL_BASE + 303)
+#define __NR_msgctl (__NR_SYSCALL_BASE + 304)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_shmat (__NR_SYSCALL_BASE+305)
-#define __NR_shmdt (__NR_SYSCALL_BASE+306)
-#define __NR_shmget (__NR_SYSCALL_BASE+307)
-#define __NR_shmctl (__NR_SYSCALL_BASE+308)
+#define __NR_shmat (__NR_SYSCALL_BASE + 305)
+#define __NR_shmdt (__NR_SYSCALL_BASE + 306)
+#define __NR_shmget (__NR_SYSCALL_BASE + 307)
+#define __NR_shmctl (__NR_SYSCALL_BASE + 308)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_add_key (__NR_SYSCALL_BASE+309)
-#define __NR_request_key (__NR_SYSCALL_BASE+310)
-#define __NR_keyctl (__NR_SYSCALL_BASE+311)
-#define __NR_semtimedop (__NR_SYSCALL_BASE+312)
+#define __NR_add_key (__NR_SYSCALL_BASE + 309)
+#define __NR_request_key (__NR_SYSCALL_BASE + 310)
+#define __NR_keyctl (__NR_SYSCALL_BASE + 311)
+#define __NR_semtimedop (__NR_SYSCALL_BASE + 312)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_vserver (__NR_SYSCALL_BASE+313)
-#define __NR_ioprio_set (__NR_SYSCALL_BASE+314)
-#define __NR_ioprio_get (__NR_SYSCALL_BASE+315)
-#define __NR_inotify_init (__NR_SYSCALL_BASE+316)
+#define __NR_vserver (__NR_SYSCALL_BASE + 313)
+#define __NR_ioprio_set (__NR_SYSCALL_BASE + 314)
+#define __NR_ioprio_get (__NR_SYSCALL_BASE + 315)
+#define __NR_inotify_init (__NR_SYSCALL_BASE + 316)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317)
-#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318)
-#define __NR_mbind (__NR_SYSCALL_BASE+319)
-#define __NR_get_mempolicy (__NR_SYSCALL_BASE+320)
+#define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 317)
+#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 318)
+#define __NR_mbind (__NR_SYSCALL_BASE + 319)
+#define __NR_get_mempolicy (__NR_SYSCALL_BASE + 320)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_set_mempolicy (__NR_SYSCALL_BASE+321)
-#define __NR_openat (__NR_SYSCALL_BASE+322)
-#define __NR_mkdirat (__NR_SYSCALL_BASE+323)
-#define __NR_mknodat (__NR_SYSCALL_BASE+324)
+#define __NR_set_mempolicy (__NR_SYSCALL_BASE + 321)
+#define __NR_openat (__NR_SYSCALL_BASE + 322)
+#define __NR_mkdirat (__NR_SYSCALL_BASE + 323)
+#define __NR_mknodat (__NR_SYSCALL_BASE + 324)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_fchownat (__NR_SYSCALL_BASE+325)
-#define __NR_futimesat (__NR_SYSCALL_BASE+326)
-#define __NR_fstatat64 (__NR_SYSCALL_BASE+327)
-#define __NR_unlinkat (__NR_SYSCALL_BASE+328)
+#define __NR_fchownat (__NR_SYSCALL_BASE + 325)
+#define __NR_futimesat (__NR_SYSCALL_BASE + 326)
+#define __NR_fstatat64 (__NR_SYSCALL_BASE + 327)
+#define __NR_unlinkat (__NR_SYSCALL_BASE + 328)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_renameat (__NR_SYSCALL_BASE+329)
-#define __NR_linkat (__NR_SYSCALL_BASE+330)
-#define __NR_symlinkat (__NR_SYSCALL_BASE+331)
-#define __NR_readlinkat (__NR_SYSCALL_BASE+332)
+#define __NR_renameat (__NR_SYSCALL_BASE + 329)
+#define __NR_linkat (__NR_SYSCALL_BASE + 330)
+#define __NR_symlinkat (__NR_SYSCALL_BASE + 331)
+#define __NR_readlinkat (__NR_SYSCALL_BASE + 332)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_fchmodat (__NR_SYSCALL_BASE+333)
-#define __NR_faccessat (__NR_SYSCALL_BASE+334)
-#define __NR_pselect6 (__NR_SYSCALL_BASE+335)
-#define __NR_ppoll (__NR_SYSCALL_BASE+336)
+#define __NR_fchmodat (__NR_SYSCALL_BASE + 333)
+#define __NR_faccessat (__NR_SYSCALL_BASE + 334)
+#define __NR_pselect6 (__NR_SYSCALL_BASE + 335)
+#define __NR_ppoll (__NR_SYSCALL_BASE + 336)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_unshare (__NR_SYSCALL_BASE+337)
-#define __NR_set_robust_list (__NR_SYSCALL_BASE+338)
-#define __NR_get_robust_list (__NR_SYSCALL_BASE+339)
-#define __NR_splice (__NR_SYSCALL_BASE+340)
+#define __NR_unshare (__NR_SYSCALL_BASE + 337)
+#define __NR_set_robust_list (__NR_SYSCALL_BASE + 338)
+#define __NR_get_robust_list (__NR_SYSCALL_BASE + 339)
+#define __NR_splice (__NR_SYSCALL_BASE + 340)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_arm_sync_file_range (__NR_SYSCALL_BASE+341)
+#define __NR_arm_sync_file_range (__NR_SYSCALL_BASE + 341)
 #define __NR_sync_file_range2 __NR_arm_sync_file_range
-#define __NR_tee (__NR_SYSCALL_BASE+342)
-#define __NR_vmsplice (__NR_SYSCALL_BASE+343)
+#define __NR_tee (__NR_SYSCALL_BASE + 342)
+#define __NR_vmsplice (__NR_SYSCALL_BASE + 343)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_move_pages (__NR_SYSCALL_BASE+344)
-#define __NR_getcpu (__NR_SYSCALL_BASE+345)
-#define __NR_epoll_pwait (__NR_SYSCALL_BASE+346)
-#define __NR_kexec_load (__NR_SYSCALL_BASE+347)
+#define __NR_move_pages (__NR_SYSCALL_BASE + 344)
+#define __NR_getcpu (__NR_SYSCALL_BASE + 345)
+#define __NR_epoll_pwait (__NR_SYSCALL_BASE + 346)
+#define __NR_kexec_load (__NR_SYSCALL_BASE + 347)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_utimensat (__NR_SYSCALL_BASE+348)
-#define __NR_signalfd (__NR_SYSCALL_BASE+349)
-#define __NR_timerfd_create (__NR_SYSCALL_BASE+350)
-#define __NR_eventfd (__NR_SYSCALL_BASE+351)
+#define __NR_utimensat (__NR_SYSCALL_BASE + 348)
+#define __NR_signalfd (__NR_SYSCALL_BASE + 349)
+#define __NR_timerfd_create (__NR_SYSCALL_BASE + 350)
+#define __NR_eventfd (__NR_SYSCALL_BASE + 351)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_fallocate (__NR_SYSCALL_BASE+352)
-#define __NR_timerfd_settime (__NR_SYSCALL_BASE+353)
-#define __NR_timerfd_gettime (__NR_SYSCALL_BASE+354)
-#define __NR_signalfd4 (__NR_SYSCALL_BASE+355)
+#define __NR_fallocate (__NR_SYSCALL_BASE + 352)
+#define __NR_timerfd_settime (__NR_SYSCALL_BASE + 353)
+#define __NR_timerfd_gettime (__NR_SYSCALL_BASE + 354)
+#define __NR_signalfd4 (__NR_SYSCALL_BASE + 355)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_eventfd2 (__NR_SYSCALL_BASE+356)
-#define __NR_epoll_create1 (__NR_SYSCALL_BASE+357)
-#define __NR_dup3 (__NR_SYSCALL_BASE+358)
-#define __NR_pipe2 (__NR_SYSCALL_BASE+359)
+#define __NR_eventfd2 (__NR_SYSCALL_BASE + 356)
+#define __NR_epoll_create1 (__NR_SYSCALL_BASE + 357)
+#define __NR_dup3 (__NR_SYSCALL_BASE + 358)
+#define __NR_pipe2 (__NR_SYSCALL_BASE + 359)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_inotify_init1 (__NR_SYSCALL_BASE+360)
-#define __NR_preadv (__NR_SYSCALL_BASE+361)
-#define __NR_pwritev (__NR_SYSCALL_BASE+362)
-#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE+363)
+#define __NR_inotify_init1 (__NR_SYSCALL_BASE + 360)
+#define __NR_preadv (__NR_SYSCALL_BASE + 361)
+#define __NR_pwritev (__NR_SYSCALL_BASE + 362)
+#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE + 363)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_perf_event_open (__NR_SYSCALL_BASE+364)
-#define __NR_recvmmsg (__NR_SYSCALL_BASE+365)
-#define __NR_accept4 (__NR_SYSCALL_BASE+366)
-#define __NR_fanotify_init (__NR_SYSCALL_BASE+367)
+#define __NR_perf_event_open (__NR_SYSCALL_BASE + 364)
+#define __NR_recvmmsg (__NR_SYSCALL_BASE + 365)
+#define __NR_accept4 (__NR_SYSCALL_BASE + 366)
+#define __NR_fanotify_init (__NR_SYSCALL_BASE + 367)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_fanotify_mark (__NR_SYSCALL_BASE+368)
-#define __NR_prlimit64 (__NR_SYSCALL_BASE+369)
-#define __NR_name_to_handle_at (__NR_SYSCALL_BASE+370)
-#define __NR_open_by_handle_at (__NR_SYSCALL_BASE+371)
+#define __NR_fanotify_mark (__NR_SYSCALL_BASE + 368)
+#define __NR_prlimit64 (__NR_SYSCALL_BASE + 369)
+#define __NR_name_to_handle_at (__NR_SYSCALL_BASE + 370)
+#define __NR_open_by_handle_at (__NR_SYSCALL_BASE + 371)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_clock_adjtime (__NR_SYSCALL_BASE+372)
-#define __NR_syncfs (__NR_SYSCALL_BASE+373)
-#define __NR_sendmmsg (__NR_SYSCALL_BASE+374)
-#define __NR_setns (__NR_SYSCALL_BASE+375)
+#define __NR_clock_adjtime (__NR_SYSCALL_BASE + 372)
+#define __NR_syncfs (__NR_SYSCALL_BASE + 373)
+#define __NR_sendmmsg (__NR_SYSCALL_BASE + 374)
+#define __NR_setns (__NR_SYSCALL_BASE + 375)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_process_vm_readv (__NR_SYSCALL_BASE+376)
-#define __NR_process_vm_writev (__NR_SYSCALL_BASE+377)
-#define __NR_kcmp (__NR_SYSCALL_BASE+378)
-#define __NR_finit_module (__NR_SYSCALL_BASE+379)
+#define __NR_process_vm_readv (__NR_SYSCALL_BASE + 376)
+#define __NR_process_vm_writev (__NR_SYSCALL_BASE + 377)
+#define __NR_kcmp (__NR_SYSCALL_BASE + 378)
+#define __NR_finit_module (__NR_SYSCALL_BASE + 379)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_sched_setattr (__NR_SYSCALL_BASE+380)
-#define __NR_sched_getattr (__NR_SYSCALL_BASE+381)
-#define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000)
-#define __ARM_NR_breakpoint (__ARM_NR_BASE+1)
+#define __NR_sched_setattr (__NR_SYSCALL_BASE + 380)
+#define __NR_sched_getattr (__NR_SYSCALL_BASE + 381)
+#define __NR_renameat2 (__NR_SYSCALL_BASE + 382)
+#define __NR_seccomp (__NR_SYSCALL_BASE + 383)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __ARM_NR_cacheflush (__ARM_NR_BASE+2)
-#define __ARM_NR_usr26 (__ARM_NR_BASE+3)
-#define __ARM_NR_usr32 (__ARM_NR_BASE+4)
-#define __ARM_NR_set_tls (__ARM_NR_BASE+5)
+#define __NR_getrandom (__NR_SYSCALL_BASE + 384)
+#define __NR_memfd_create (__NR_SYSCALL_BASE + 385)
+#define __NR_bpf (__NR_SYSCALL_BASE + 386)
+#define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0x0f0000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __ARM_NR_breakpoint (__ARM_NR_BASE + 1)
+#define __ARM_NR_cacheflush (__ARM_NR_BASE + 2)
+#define __ARM_NR_usr26 (__ARM_NR_BASE + 3)
+#define __ARM_NR_usr32 (__ARM_NR_BASE + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __ARM_NR_set_tls (__ARM_NR_BASE + 5)
 #undef __NR_time
 #undef __NR_umount
 #undef __NR_stime
-#undef __NR_alarm
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef __NR_alarm
 #undef __NR_utime
 #undef __NR_getrlimit
 #undef __NR_select
-#undef __NR_readdir
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef __NR_readdir
 #undef __NR_mmap
 #undef __NR_socketcall
 #undef __NR_syscall
-#undef __NR_ipc
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef __NR_ipc
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index 93abd43..855e084 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -28,45 +28,50 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_NR_SPSR 5
 #ifndef __ASSEMBLY__
+#include <linux/psci.h>
 #include <asm/types.h>
-#include <asm/ptrace.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/ptrace.h>
 #define __KVM_HAVE_GUEST_DEBUG
 #define __KVM_HAVE_IRQ_LINE
-#define KVM_REG_SIZE(id)   (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define __KVM_HAVE_READONLY_MEM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
 struct kvm_regs {
+  struct user_pt_regs regs;
+  __u64 sp_el1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct user_pt_regs regs;
- __u64 sp_el1;
- __u64 elr_el1;
- __u64 spsr[KVM_NR_SPSR];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct user_fpsimd_state fp_regs;
+  __u64 elr_el1;
+  __u64 spsr[KVM_NR_SPSR];
+  struct user_fpsimd_state fp_regs;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_TARGET_AEM_V8 0
 #define KVM_ARM_TARGET_FOUNDATION_V8 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_TARGET_CORTEX_A57 2
 #define KVM_ARM_TARGET_XGENE_POTENZA 3
-#define KVM_ARM_NUM_TARGETS 4
-#define KVM_ARM_DEVICE_TYPE_SHIFT 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_ARM_TARGET_CORTEX_A53 4
+#define KVM_ARM_NUM_TARGETS 5
+#define KVM_ARM_DEVICE_TYPE_SHIFT 0
 #define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_DEVICE_ID_SHIFT 16
 #define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
 #define KVM_VGIC_V2_DIST_SIZE 0x1000
 #define KVM_VGIC_V2_CPU_SIZE 0x2000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_VCPU_POWER_OFF 0
-#define KVM_ARM_VCPU_EL1_32BIT 1
-struct kvm_vcpu_init {
- __u32 target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 features[7];
+#define KVM_ARM_VCPU_EL1_32BIT 1
+#define KVM_ARM_VCPU_PSCI_0_2 2
+struct kvm_vcpu_init {
+  __u32 target;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 features[7];
 };
 struct kvm_sregs {
 };
@@ -109,9 +114,9 @@
 #define KVM_REG_ARM64_SYSREG_CRM_SHIFT 3
 #define KVM_REG_ARM64_SYSREG_OP2_MASK 0x0000000000000007
 #define KVM_REG_ARM64_SYSREG_OP2_SHIFT 0
-#define ARM64_SYS_REG_SHIFT_MASK(x,n)   (((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) &   KVM_REG_ARM64_SYSREG_ ## n ## _MASK)
+#define ARM64_SYS_REG_SHIFT_MASK(x,n) (((x) << KVM_REG_ARM64_SYSREG_ ##n ##_SHIFT) & KVM_REG_ARM64_SYSREG_ ##n ##_MASK)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __ARM64_SYS_REG(op0,op1,crn,crm,op2)   (KVM_REG_ARM64 | KVM_REG_ARM64_SYSREG |   ARM64_SYS_REG_SHIFT_MASK(op0, OP0) |   ARM64_SYS_REG_SHIFT_MASK(op1, OP1) |   ARM64_SYS_REG_SHIFT_MASK(crn, CRN) |   ARM64_SYS_REG_SHIFT_MASK(crm, CRM) |   ARM64_SYS_REG_SHIFT_MASK(op2, OP2))
+#define __ARM64_SYS_REG(op0,op1,crn,crm,op2) (KVM_REG_ARM64 | KVM_REG_ARM64_SYSREG | ARM64_SYS_REG_SHIFT_MASK(op0, OP0) | ARM64_SYS_REG_SHIFT_MASK(op1, OP1) | ARM64_SYS_REG_SHIFT_MASK(crn, CRN) | ARM64_SYS_REG_SHIFT_MASK(crm, CRM) | ARM64_SYS_REG_SHIFT_MASK(op2, OP2))
 #define ARM64_SYS_REG(...) (__ARM64_SYS_REG(__VA_ARGS__) | KVM_REG_SIZE_U64)
 #define KVM_REG_ARM_TIMER_CTL ARM64_SYS_REG(3, 3, 14, 3, 1)
 #define KVM_REG_ARM_TIMER_CNT ARM64_SYS_REG(3, 3, 14, 3, 2)
@@ -126,33 +131,34 @@
 #define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0
 #define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_DEV_ARM_VGIC_GRP_NR_IRQS 3
 #define KVM_ARM_IRQ_TYPE_SHIFT 24
 #define KVM_ARM_IRQ_TYPE_MASK 0xff
 #define KVM_ARM_IRQ_VCPU_SHIFT 16
-#define KVM_ARM_IRQ_VCPU_MASK 0xff
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_ARM_IRQ_VCPU_MASK 0xff
 #define KVM_ARM_IRQ_NUM_SHIFT 0
 #define KVM_ARM_IRQ_NUM_MASK 0xffff
 #define KVM_ARM_IRQ_TYPE_CPU 0
-#define KVM_ARM_IRQ_TYPE_SPI 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_ARM_IRQ_TYPE_SPI 1
 #define KVM_ARM_IRQ_TYPE_PPI 2
 #define KVM_ARM_IRQ_CPU_IRQ 0
 #define KVM_ARM_IRQ_CPU_FIQ 1
-#define KVM_ARM_IRQ_GIC_MAX 127
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_ARM_IRQ_GIC_MAX 127
 #define KVM_PSCI_FN_BASE 0x95c1ba5e
 #define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n))
 #define KVM_PSCI_FN_CPU_SUSPEND KVM_PSCI_FN(0)
-#define KVM_PSCI_FN_CPU_OFF KVM_PSCI_FN(1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_PSCI_FN_CPU_OFF KVM_PSCI_FN(1)
 #define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2)
 #define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3)
-#define KVM_PSCI_RET_SUCCESS 0
-#define KVM_PSCI_RET_NI ((unsigned long)-1)
+#define KVM_PSCI_RET_SUCCESS PSCI_RET_SUCCESS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KVM_PSCI_RET_INVAL ((unsigned long)-2)
-#define KVM_PSCI_RET_DENIED ((unsigned long)-3)
-#endif
+#define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
+#define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
+#define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
new file mode 100644
index 0000000..741bc75
--- /dev/null
+++ b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_ARM64_PERF_REGS_H
+#define _ASM_ARM64_PERF_REGS_H
+enum perf_event_arm_regs {
+  PERF_REG_ARM64_X0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X1,
+  PERF_REG_ARM64_X2,
+  PERF_REG_ARM64_X3,
+  PERF_REG_ARM64_X4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X5,
+  PERF_REG_ARM64_X6,
+  PERF_REG_ARM64_X7,
+  PERF_REG_ARM64_X8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X9,
+  PERF_REG_ARM64_X10,
+  PERF_REG_ARM64_X11,
+  PERF_REG_ARM64_X12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X13,
+  PERF_REG_ARM64_X14,
+  PERF_REG_ARM64_X15,
+  PERF_REG_ARM64_X16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X17,
+  PERF_REG_ARM64_X18,
+  PERF_REG_ARM64_X19,
+  PERF_REG_ARM64_X20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X21,
+  PERF_REG_ARM64_X22,
+  PERF_REG_ARM64_X23,
+  PERF_REG_ARM64_X24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X25,
+  PERF_REG_ARM64_X26,
+  PERF_REG_ARM64_X27,
+  PERF_REG_ARM64_X28,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_X29,
+  PERF_REG_ARM64_LR,
+  PERF_REG_ARM64_SP,
+  PERF_REG_ARM64_PC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_REG_ARM64_MAX,
+};
+#endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/posix_types.h b/libc/kernel/uapi/asm-arm64/asm/posix_types.h
index 1b89253..6289bbe 100644
--- a/libc/kernel/uapi/asm-arm64/asm/posix_types.h
+++ b/libc/kernel/uapi/asm-arm64/asm/posix_types.h
@@ -16,4 +16,11 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef __ASM_POSIX_TYPES_H
+#define __ASM_POSIX_TYPES_H
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __kernel_old_uid_t __kernel_old_uid_t
 #include <asm-generic/posix_types.h>
+#endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 5650e2d..ec531f9 100644
--- a/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -51,28 +51,28 @@
 #ifndef __ASSEMBLY__
 struct user_pt_regs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 regs[31];
- __u64 sp;
- __u64 pc;
- __u64 pstate;
+  __u64 regs[31];
+  __u64 sp;
+  __u64 pc;
+  __u64 pstate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct user_fpsimd_state {
- __uint128_t vregs[32];
- __u32 fpsr;
+  __uint128_t vregs[32];
+  __u32 fpsr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fpcr;
+  __u32 fpcr;
 };
 struct user_hwdebug_state {
- __u32 dbg_info;
+  __u32 dbg_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
- struct {
- __u64 addr;
- __u32 ctrl;
+  __u32 pad;
+  struct {
+    __u64 addr;
+    __u32 ctrl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
- } dbg_regs[16];
+    __u32 pad;
+  } dbg_regs[16];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-arm64/asm/sigcontext.h b/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
index c59f9c0..393dfd4 100644
--- a/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
+++ b/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
@@ -21,26 +21,33 @@
 #include <linux/types.h>
 struct sigcontext {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 fault_address;
- __u64 regs[31];
- __u64 sp;
- __u64 pc;
+  __u64 fault_address;
+  __u64 regs[31];
+  __u64 sp;
+  __u64 pc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 pstate;
- __u8 __reserved[4096] __attribute__((__aligned__(16)));
+  __u64 pstate;
+  __u8 __reserved[4096] __attribute__((__aligned__(16)));
 };
 struct _aarch64_ctx {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 magic;
- __u32 size;
+  __u32 magic;
+  __u32 size;
 };
 #define FPSIMD_MAGIC 0x46508001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fpsimd_context {
- struct _aarch64_ctx head;
- __u32 fpsr;
- __u32 fpcr;
+  struct _aarch64_ctx head;
+  __u32 fpsr;
+  __u32 fpcr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __uint128_t vregs[32];
+  __uint128_t vregs[32];
+};
+#define ESR_MAGIC 0x45535201
+struct esr_context {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct _aarch64_ctx head;
+  __u64 esr;
 };
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-arm64/asm/statfs.h b/libc/kernel/uapi/asm-arm64/asm/statfs.h
index 8f38412..3469b8a 100644
--- a/libc/kernel/uapi/asm-arm64/asm/statfs.h
+++ b/libc/kernel/uapi/asm-arm64/asm/statfs.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_STATFS_H
 #define __ASM_STATFS_H
-#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4)))
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
 #include <asm-generic/statfs.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-generic/fcntl.h b/libc/kernel/uapi/asm-generic/fcntl.h
index a15878f..9753cf3 100644
--- a/libc/kernel/uapi/asm-generic/fcntl.h
+++ b/libc/kernel/uapi/asm-generic/fcntl.h
@@ -79,7 +79,7 @@
 #endif
 #ifndef O_SYNC
 #define __O_SYNC 04000000
-#define O_SYNC (__O_SYNC|O_DSYNC)
+#define O_SYNC (__O_SYNC | O_DSYNC)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef O_PATH
@@ -136,71 +136,73 @@
 #define F_GETOWNER_UIDS 17
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define F_OFD_GETLK 36
+#define F_OFD_SETLK 37
+#define F_OFD_SETLKW 38
 #define F_OWNER_TID 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_OWNER_PID 1
 #define F_OWNER_PGRP 2
 struct f_owner_ex {
+  int type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int type;
- __kernel_pid_t pid;
+  __kernel_pid_t pid;
 };
 #define FD_CLOEXEC 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef F_RDLCK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_RDLCK 0
 #define F_WRLCK 1
 #define F_UNLCK 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef F_EXLCK
 #define F_EXLCK 4
 #define F_SHLCK 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOCK_SH 1
 #define LOCK_EX 2
 #define LOCK_NB 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOCK_UN 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOCK_MAND 32
 #define LOCK_READ 64
 #define LOCK_WRITE 128
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOCK_RW 192
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_LINUX_SPECIFIC_BASE 1024
 #ifndef HAVE_ARCH_STRUCT_FLOCK
 #ifndef __ARCH_FLOCK_PAD
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_FLOCK_PAD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 struct flock {
- short l_type;
+  short l_type;
+  short l_whence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short l_whence;
- __kernel_off_t l_start;
- __kernel_off_t l_len;
- __kernel_pid_t l_pid;
+  __kernel_off_t l_start;
+  __kernel_off_t l_len;
+  __kernel_pid_t l_pid;
+  __ARCH_FLOCK_PAD
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __ARCH_FLOCK_PAD
 };
 #endif
-#ifndef __LP64__
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef HAVE_ARCH_STRUCT_FLOCK64
 #ifndef __ARCH_FLOCK64_PAD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_FLOCK64_PAD
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct flock64 {
- short l_type;
- short l_whence;
- __kernel_loff_t l_start;
+  short l_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_loff_t l_len;
- __kernel_pid_t l_pid;
- __ARCH_FLOCK64_PAD
+  short l_whence;
+  __kernel_loff_t l_start;
+  __kernel_loff_t l_len;
+  __kernel_pid_t l_pid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __ARCH_FLOCK64_PAD
 };
+#endif
+#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#endif
-#endif
-#endif
diff --git a/libc/kernel/uapi/asm-generic/ioctl.h b/libc/kernel/uapi/asm-generic/ioctl.h
index 79ec83c..468c301 100644
--- a/libc/kernel/uapi/asm-generic/ioctl.h
+++ b/libc/kernel/uapi/asm-generic/ioctl.h
@@ -28,16 +28,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_DIRBITS 2
 #endif
-#define _IOC_NRMASK ((1 << _IOC_NRBITS)-1)
-#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1)
+#define _IOC_NRMASK ((1 << _IOC_NRBITS) - 1)
+#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS) - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1)
-#define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1)
+#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS) - 1)
+#define _IOC_DIRMASK ((1 << _IOC_DIRBITS) - 1)
 #define _IOC_NRSHIFT 0
-#define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS)
+#define _IOC_TYPESHIFT (_IOC_NRSHIFT + _IOC_NRBITS)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS)
-#define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS)
+#define _IOC_SIZESHIFT (_IOC_TYPESHIFT + _IOC_TYPEBITS)
+#define _IOC_DIRSHIFT (_IOC_SIZESHIFT + _IOC_SIZEBITS)
 #ifndef _IOC_NONE
 #define _IOC_NONE 0U
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -49,17 +49,17 @@
 #ifndef _IOC_READ
 #define _IOC_READ 2U
 #endif
-#define _IOC(dir,type,nr,size)   (((dir) << _IOC_DIRSHIFT) |   ((type) << _IOC_TYPESHIFT) |   ((nr) << _IOC_NRSHIFT) |   ((size) << _IOC_SIZESHIFT))
+#define _IOC(dir,type,nr,size) (((dir) << _IOC_DIRSHIFT) | ((type) << _IOC_TYPESHIFT) | ((nr) << _IOC_NRSHIFT) | ((size) << _IOC_SIZESHIFT))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_TYPECHECK(t) (sizeof(t))
-#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0)
-#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size)))
-#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
+#define _IO(type,nr) _IOC(_IOC_NONE, (type), (nr), 0)
+#define _IOR(type,nr,size) _IOC(_IOC_READ, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOW(type,nr,size) _IOC(_IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
-#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size))
-#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
-#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
+#define _IOWR(type,nr,size) _IOC(_IOC_READ | _IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ, (type), (nr), sizeof(size))
+#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE, (type), (nr), sizeof(size))
+#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ | _IOC_WRITE, (type), (nr), sizeof(size))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
 #define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
@@ -68,7 +68,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT)
 #define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT)
-#define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
+#define IOC_INOUT ((_IOC_WRITE | _IOC_READ) << _IOC_DIRSHIFT)
 #define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
diff --git a/libc/kernel/uapi/asm-generic/ipcbuf.h b/libc/kernel/uapi/asm-generic/ipcbuf.h
index cc7274e..b16f729 100644
--- a/libc/kernel/uapi/asm-generic/ipcbuf.h
+++ b/libc/kernel/uapi/asm-generic/ipcbuf.h
@@ -19,20 +19,20 @@
 #ifndef __ASM_GENERIC_IPCBUF_H
 #define __ASM_GENERIC_IPCBUF_H
 struct ipc64_perm {
- __kernel_key_t key;
+  __kernel_key_t key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_uid32_t uid;
- __kernel_gid32_t gid;
- __kernel_uid32_t cuid;
- __kernel_gid32_t cgid;
+  __kernel_uid32_t uid;
+  __kernel_gid32_t gid;
+  __kernel_uid32_t cuid;
+  __kernel_gid32_t cgid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_mode_t mode;
- unsigned char __pad1[4 - sizeof(__kernel_mode_t)];
- unsigned short seq;
- unsigned short __pad2;
+  __kernel_mode_t mode;
+  unsigned char __pad1[4 - sizeof(__kernel_mode_t)];
+  unsigned short seq;
+  unsigned short __pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t __unused1;
- __kernel_ulong_t __unused2;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-generic/msgbuf.h b/libc/kernel/uapi/asm-generic/msgbuf.h
index b2500ef..867672e 100644
--- a/libc/kernel/uapi/asm-generic/msgbuf.h
+++ b/libc/kernel/uapi/asm-generic/msgbuf.h
@@ -21,30 +21,30 @@
 #include <asm/bitsperlong.h>
 struct msqid64_ds {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ipc64_perm msg_perm;
- __kernel_time_t msg_stime;
+  struct ipc64_perm msg_perm;
+  __kernel_time_t msg_stime;
 #if __BITS_PER_LONG != 64
- unsigned long __unused1;
+  unsigned long __unused1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __kernel_time_t msg_rtime;
+  __kernel_time_t msg_rtime;
 #if __BITS_PER_LONG != 64
- unsigned long __unused2;
+  unsigned long __unused2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __kernel_time_t msg_ctime;
+  __kernel_time_t msg_ctime;
 #if __BITS_PER_LONG != 64
- unsigned long __unused3;
+  unsigned long __unused3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __kernel_ulong_t msg_cbytes;
- __kernel_ulong_t msg_qnum;
- __kernel_ulong_t msg_qbytes;
+  __kernel_ulong_t msg_cbytes;
+  __kernel_ulong_t msg_qnum;
+  __kernel_ulong_t msg_qbytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t msg_lspid;
- __kernel_pid_t msg_lrpid;
- __kernel_ulong_t __unused4;
- __kernel_ulong_t __unused5;
+  __kernel_pid_t msg_lspid;
+  __kernel_pid_t msg_lrpid;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-generic/param.h b/libc/kernel/uapi/asm-generic/param.h
index 416c4fb..6bde154 100644
--- a/libc/kernel/uapi/asm-generic/param.h
+++ b/libc/kernel/uapi/asm-generic/param.h
@@ -27,7 +27,8 @@
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef NOGROUP
-#define NOGROUP (-1)
+#define NOGROUP (- 1)
 #endif
-#endif
+#define MAXHOSTNAMELEN 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/asm-generic/poll.h b/libc/kernel/uapi/asm-generic/poll.h
index 7faa0b8..4137abb 100644
--- a/libc/kernel/uapi/asm-generic/poll.h
+++ b/libc/kernel/uapi/asm-generic/poll.h
@@ -51,9 +51,9 @@
 #define POLL_BUSY_LOOP 0x8000
 struct pollfd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int fd;
- short events;
- short revents;
+  int fd;
+  short events;
+  short revents;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-generic/posix_types.h b/libc/kernel/uapi/asm-generic/posix_types.h
index 1519aff..aa68412 100644
--- a/libc/kernel/uapi/asm-generic/posix_types.h
+++ b/libc/kernel/uapi/asm-generic/posix_types.h
@@ -82,7 +82,7 @@
 #ifndef __kernel_fsid_t
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- int val[2];
+  int val[2];
 } __kernel_fsid_t;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-generic/resource.h b/libc/kernel/uapi/asm-generic/resource.h
index 243817a..a2bb17f 100644
--- a/libc/kernel/uapi/asm-generic/resource.h
+++ b/libc/kernel/uapi/asm-generic/resource.h
@@ -56,8 +56,4 @@
 #define RLIM_INFINITY (~0UL)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#ifndef _STK_LIM_MAX
-#define _STK_LIM_MAX RLIM_INFINITY
 #endif
-#endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-generic/sembuf.h b/libc/kernel/uapi/asm-generic/sembuf.h
index bcf1702..1cc4e32 100644
--- a/libc/kernel/uapi/asm-generic/sembuf.h
+++ b/libc/kernel/uapi/asm-generic/sembuf.h
@@ -21,20 +21,20 @@
 #include <asm/bitsperlong.h>
 struct semid64_ds {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ipc64_perm sem_perm;
- __kernel_time_t sem_otime;
+  struct ipc64_perm sem_perm;
+  __kernel_time_t sem_otime;
 #if __BITS_PER_LONG != 64
- unsigned long __unused1;
+  unsigned long __unused1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __kernel_time_t sem_ctime;
+  __kernel_time_t sem_ctime;
 #if __BITS_PER_LONG != 64
- unsigned long __unused2;
+  unsigned long __unused2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- unsigned long sem_nsems;
- unsigned long __unused3;
- unsigned long __unused4;
+  unsigned long sem_nsems;
+  unsigned long __unused3;
+  unsigned long __unused4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-generic/shmbuf.h b/libc/kernel/uapi/asm-generic/shmbuf.h
index 68b859d..6eb8b6a 100644
--- a/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -21,43 +21,43 @@
 #include <asm/bitsperlong.h>
 struct shmid64_ds {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ipc64_perm shm_perm;
- size_t shm_segsz;
- __kernel_time_t shm_atime;
+  struct ipc64_perm shm_perm;
+  size_t shm_segsz;
+  __kernel_time_t shm_atime;
 #if __BITS_PER_LONG != 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __unused1;
+  unsigned long __unused1;
 #endif
- __kernel_time_t shm_dtime;
+  __kernel_time_t shm_dtime;
 #if __BITS_PER_LONG != 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __unused2;
+  unsigned long __unused2;
 #endif
- __kernel_time_t shm_ctime;
+  __kernel_time_t shm_ctime;
 #if __BITS_PER_LONG != 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __unused3;
+  unsigned long __unused3;
 #endif
- __kernel_pid_t shm_cpid;
- __kernel_pid_t shm_lpid;
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t shm_nattch;
- __kernel_ulong_t __unused4;
- __kernel_ulong_t __unused5;
+  __kernel_ulong_t shm_nattch;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct shminfo64 {
- __kernel_ulong_t shmmax;
- __kernel_ulong_t shmmin;
- __kernel_ulong_t shmmni;
+  __kernel_ulong_t shmmax;
+  __kernel_ulong_t shmmin;
+  __kernel_ulong_t shmmni;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t shmseg;
- __kernel_ulong_t shmall;
- __kernel_ulong_t __unused1;
- __kernel_ulong_t __unused2;
+  __kernel_ulong_t shmseg;
+  __kernel_ulong_t shmall;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t __unused3;
- __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-generic/siginfo.h b/libc/kernel/uapi/asm-generic/siginfo.h
index 42770ee..2083fa1 100644
--- a/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/libc/kernel/uapi/asm-generic/siginfo.h
@@ -22,8 +22,8 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union sigval {
- int sival_int;
- void __user *sival_ptr;
+  int sival_int;
+  void __user * sival_ptr;
 } sigval_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ARCH_SI_PREAMBLE_SIZE
@@ -52,62 +52,62 @@
 #ifndef HAVE_ARCH_SIGINFO_T
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct siginfo {
- int si_signo;
- int si_errno;
- int si_code;
+  int si_signo;
+  int si_errno;
+  int si_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- int _pad[SI_PAD_SIZE];
- struct {
- __kernel_pid_t _pid;
+  union {
+    int _pad[SI_PAD_SIZE];
+    struct {
+      __kernel_pid_t _pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __ARCH_SI_UID_T _uid;
- } _kill;
- struct {
- __kernel_timer_t _tid;
+      __ARCH_SI_UID_T _uid;
+    } _kill;
+    struct {
+      __kernel_timer_t _tid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int _overrun;
- char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
- sigval_t _sigval;
- int _sys_private;
+      int _overrun;
+      char _pad[sizeof(__ARCH_SI_UID_T) - sizeof(int)];
+      sigval_t _sigval;
+      int _sys_private;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } _timer;
- struct {
- __kernel_pid_t _pid;
- __ARCH_SI_UID_T _uid;
+    } _timer;
+    struct {
+      __kernel_pid_t _pid;
+      __ARCH_SI_UID_T _uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- sigval_t _sigval;
- } _rt;
- struct {
- __kernel_pid_t _pid;
+      sigval_t _sigval;
+    } _rt;
+    struct {
+      __kernel_pid_t _pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __ARCH_SI_UID_T _uid;
- int _status;
- __ARCH_SI_CLOCK_T _utime;
- __ARCH_SI_CLOCK_T _stime;
+      __ARCH_SI_UID_T _uid;
+      int _status;
+      __ARCH_SI_CLOCK_T _utime;
+      __ARCH_SI_CLOCK_T _stime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } _sigchld;
- struct {
- void __user *_addr;
+    } _sigchld;
+    struct {
+      void __user * _addr;
 #ifdef __ARCH_SI_TRAPNO
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int _trapno;
+      int _trapno;
 #endif
- short _addr_lsb;
- } _sigfault;
+      short _addr_lsb;
+    } _sigfault;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __ARCH_SI_BAND_T _band;
- int _fd;
- } _sigpoll;
+    struct {
+      __ARCH_SI_BAND_T _band;
+      int _fd;
+    } _sigpoll;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- void __user *_call_addr;
- int _syscall;
- unsigned int _arch;
+    struct {
+      void __user * _call_addr;
+      int _syscall;
+      unsigned int _arch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } _sigsys;
- } _sifields;
+    } _sigsys;
+  } _sifields;
 } __ARCH_SI_ATTRIBUTES siginfo_t;
 #define __ARCH_SIGSYS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -154,76 +154,76 @@
 #define __SI_CODE(T,N) (N)
 #define SI_USER 0
 #define SI_KERNEL 0x80
-#define SI_QUEUE -1
+#define SI_QUEUE - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SI_TIMER __SI_CODE(__SI_TIMER,-2)
-#define SI_MESGQ __SI_CODE(__SI_MESGQ,-3)
-#define SI_ASYNCIO -4
-#define SI_SIGIO -5
+#define SI_TIMER __SI_CODE(__SI_TIMER, - 2)
+#define SI_MESGQ __SI_CODE(__SI_MESGQ, - 3)
+#define SI_ASYNCIO - 4
+#define SI_SIGIO - 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SI_TKILL -6
-#define SI_DETHREAD -7
+#define SI_TKILL - 6
+#define SI_DETHREAD - 7
 #define SI_FROMUSER(siptr) ((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ILL_ILLOPC (__SI_FAULT|1)
-#define ILL_ILLOPN (__SI_FAULT|2)
-#define ILL_ILLADR (__SI_FAULT|3)
-#define ILL_ILLTRP (__SI_FAULT|4)
+#define ILL_ILLOPC (__SI_FAULT | 1)
+#define ILL_ILLOPN (__SI_FAULT | 2)
+#define ILL_ILLADR (__SI_FAULT | 3)
+#define ILL_ILLTRP (__SI_FAULT | 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ILL_PRVOPC (__SI_FAULT|5)
-#define ILL_PRVREG (__SI_FAULT|6)
-#define ILL_COPROC (__SI_FAULT|7)
-#define ILL_BADSTK (__SI_FAULT|8)
+#define ILL_PRVOPC (__SI_FAULT | 5)
+#define ILL_PRVREG (__SI_FAULT | 6)
+#define ILL_COPROC (__SI_FAULT | 7)
+#define ILL_BADSTK (__SI_FAULT | 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIGILL 8
-#define FPE_INTDIV (__SI_FAULT|1)
-#define FPE_INTOVF (__SI_FAULT|2)
-#define FPE_FLTDIV (__SI_FAULT|3)
+#define FPE_INTDIV (__SI_FAULT | 1)
+#define FPE_INTOVF (__SI_FAULT | 2)
+#define FPE_FLTDIV (__SI_FAULT | 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FPE_FLTOVF (__SI_FAULT|4)
-#define FPE_FLTUND (__SI_FAULT|5)
-#define FPE_FLTRES (__SI_FAULT|6)
-#define FPE_FLTINV (__SI_FAULT|7)
+#define FPE_FLTOVF (__SI_FAULT | 4)
+#define FPE_FLTUND (__SI_FAULT | 5)
+#define FPE_FLTRES (__SI_FAULT | 6)
+#define FPE_FLTINV (__SI_FAULT | 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FPE_FLTSUB (__SI_FAULT|8)
+#define FPE_FLTSUB (__SI_FAULT | 8)
 #define NSIGFPE 8
-#define SEGV_MAPERR (__SI_FAULT|1)
-#define SEGV_ACCERR (__SI_FAULT|2)
+#define SEGV_MAPERR (__SI_FAULT | 1)
+#define SEGV_ACCERR (__SI_FAULT | 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIGSEGV 2
-#define BUS_ADRALN (__SI_FAULT|1)
-#define BUS_ADRERR (__SI_FAULT|2)
-#define BUS_OBJERR (__SI_FAULT|3)
+#define BUS_ADRALN (__SI_FAULT | 1)
+#define BUS_ADRERR (__SI_FAULT | 2)
+#define BUS_OBJERR (__SI_FAULT | 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BUS_MCEERR_AR (__SI_FAULT|4)
-#define BUS_MCEERR_AO (__SI_FAULT|5)
+#define BUS_MCEERR_AR (__SI_FAULT | 4)
+#define BUS_MCEERR_AO (__SI_FAULT | 5)
 #define NSIGBUS 5
-#define TRAP_BRKPT (__SI_FAULT|1)
+#define TRAP_BRKPT (__SI_FAULT | 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TRAP_TRACE (__SI_FAULT|2)
-#define TRAP_BRANCH (__SI_FAULT|3)
-#define TRAP_HWBKPT (__SI_FAULT|4)
+#define TRAP_TRACE (__SI_FAULT | 2)
+#define TRAP_BRANCH (__SI_FAULT | 3)
+#define TRAP_HWBKPT (__SI_FAULT | 4)
 #define NSIGTRAP 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CLD_EXITED (__SI_CHLD|1)
-#define CLD_KILLED (__SI_CHLD|2)
-#define CLD_DUMPED (__SI_CHLD|3)
-#define CLD_TRAPPED (__SI_CHLD|4)
+#define CLD_EXITED (__SI_CHLD | 1)
+#define CLD_KILLED (__SI_CHLD | 2)
+#define CLD_DUMPED (__SI_CHLD | 3)
+#define CLD_TRAPPED (__SI_CHLD | 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CLD_STOPPED (__SI_CHLD|5)
-#define CLD_CONTINUED (__SI_CHLD|6)
+#define CLD_STOPPED (__SI_CHLD | 5)
+#define CLD_CONTINUED (__SI_CHLD | 6)
 #define NSIGCHLD 6
-#define POLL_IN (__SI_POLL|1)
+#define POLL_IN (__SI_POLL | 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define POLL_OUT (__SI_POLL|2)
-#define POLL_MSG (__SI_POLL|3)
-#define POLL_ERR (__SI_POLL|4)
-#define POLL_PRI (__SI_POLL|5)
+#define POLL_OUT (__SI_POLL | 2)
+#define POLL_MSG (__SI_POLL | 3)
+#define POLL_ERR (__SI_POLL | 4)
+#define POLL_PRI (__SI_POLL | 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define POLL_HUP (__SI_POLL|6)
+#define POLL_HUP (__SI_POLL | 6)
 #define NSIGPOLL 6
-#define SYS_SECCOMP (__SI_SYS|1)
+#define SYS_SECCOMP (__SI_SYS | 1)
 #define NSIGSYS 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGEV_SIGNAL 0
@@ -236,22 +236,22 @@
 #endif
 #define SIGEV_MAX_SIZE 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE)   / sizeof(int))
+#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE) / sizeof(int))
 typedef struct sigevent {
- sigval_t sigev_value;
- int sigev_signo;
+  sigval_t sigev_value;
+  int sigev_signo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int sigev_notify;
- union {
- int _pad[SIGEV_PAD_SIZE];
- int _tid;
+  int sigev_notify;
+  union {
+    int _pad[SIGEV_PAD_SIZE];
+    int _tid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- void (*_function)(sigval_t);
- void *_attribute;
- } _sigev_thread;
+    struct {
+      void(* _function) (sigval_t);
+      void * _attribute;
+    } _sigev_thread;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } _sigev_un;
+  } _sigev_un;
 } sigevent_t;
 #define sigev_notify_function _sigev_un._sigev_thread._function
 #define sigev_notify_attributes _sigev_un._sigev_thread._attribute
diff --git a/libc/kernel/uapi/asm-generic/signal-defs.h b/libc/kernel/uapi/asm-generic/signal-defs.h
index f47cbe7..ad77d77 100644
--- a/libc/kernel/uapi/asm-generic/signal-defs.h
+++ b/libc/kernel/uapi/asm-generic/signal-defs.h
@@ -33,13 +33,13 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
 typedef void __signalfn_t(int);
-typedef __signalfn_t __user *__sighandler_t;
+typedef __signalfn_t __user * __sighandler_t;
 typedef void __restorefn_t(void);
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef __restorefn_t __user *__sigrestore_t;
-#define SIG_DFL ((__force __sighandler_t)0)
-#define SIG_IGN ((__force __sighandler_t)1)
-#define SIG_ERR ((__force __sighandler_t)-1)
+typedef __restorefn_t __user * __sigrestore_t;
+#define SIG_DFL ((__force __sighandler_t) 0)
+#define SIG_IGN ((__force __sighandler_t) 1)
+#define SIG_ERR ((__force __sighandler_t) - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-generic/signal.h b/libc/kernel/uapi/asm-generic/signal.h
index e103240..30188cb 100644
--- a/libc/kernel/uapi/asm-generic/signal.h
+++ b/libc/kernel/uapi/asm-generic/signal.h
@@ -87,7 +87,7 @@
 #ifndef __ASSEMBLY__
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- unsigned long sig[_NSIG_WORDS];
+  unsigned long sig[_NSIG_WORDS];
 } sigset_t;
 typedef unsigned long old_sigset_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -97,19 +97,19 @@
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sigaction {
- __sighandler_t sa_handler;
- unsigned long sa_flags;
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
 #ifdef SA_RESTORER
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __sigrestore_t sa_restorer;
+  __sigrestore_t sa_restorer;
 #endif
- sigset_t sa_mask;
+  sigset_t sa_mask;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct sigaltstack {
- void __user *ss_sp;
- int ss_flags;
- size_t ss_size;
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } stack_t;
 #endif
diff --git a/libc/kernel/uapi/asm-generic/stat.h b/libc/kernel/uapi/asm-generic/stat.h
index a94c69d..4dbc208 100644
--- a/libc/kernel/uapi/asm-generic/stat.h
+++ b/libc/kernel/uapi/asm-generic/stat.h
@@ -22,59 +22,59 @@
 #define STAT_HAVE_NSEC 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct stat {
- unsigned long st_dev;
- unsigned long st_ino;
- unsigned int st_mode;
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned int st_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_nlink;
- unsigned int st_uid;
- unsigned int st_gid;
- unsigned long st_rdev;
+  unsigned int st_nlink;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned long st_rdev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __pad1;
- long st_size;
- int st_blksize;
- int __pad2;
+  unsigned long __pad1;
+  long st_size;
+  int st_blksize;
+  int __pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long st_blocks;
- long st_atime;
- unsigned long st_atime_nsec;
- long st_mtime;
+  long st_blocks;
+  long st_atime;
+  unsigned long st_atime_nsec;
+  long st_mtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_mtime_nsec;
- long st_ctime;
- unsigned long st_ctime_nsec;
- unsigned int __unused4;
+  unsigned long st_mtime_nsec;
+  long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned int __unused4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int __unused5;
+  unsigned int __unused5;
 };
 #if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64)
 struct stat64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long long st_dev;
- unsigned long long st_ino;
- unsigned int st_mode;
- unsigned int st_nlink;
+  unsigned long long st_dev;
+  unsigned long long st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_uid;
- unsigned int st_gid;
- unsigned long long st_rdev;
- unsigned long long __pad1;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned long long st_rdev;
+  unsigned long long __pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long long st_size;
- int st_blksize;
- int __pad2;
- long long st_blocks;
+  long long st_size;
+  int st_blksize;
+  int __pad2;
+  long long st_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int st_atime;
- unsigned int st_atime_nsec;
- int st_mtime;
- unsigned int st_mtime_nsec;
+  int st_atime;
+  unsigned int st_atime_nsec;
+  int st_mtime;
+  unsigned int st_mtime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int st_ctime;
- unsigned int st_ctime_nsec;
- unsigned int __unused4;
- unsigned int __unused5;
+  int st_ctime;
+  unsigned int st_ctime_nsec;
+  unsigned int __unused4;
+  unsigned int __unused5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-generic/statfs.h b/libc/kernel/uapi/asm-generic/statfs.h
index 1c8c589..0d03cff 100644
--- a/libc/kernel/uapi/asm-generic/statfs.h
+++ b/libc/kernel/uapi/asm-generic/statfs.h
@@ -29,21 +29,21 @@
 #endif
 #endif
 struct statfs {
- __statfs_word f_type;
+  __statfs_word f_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __statfs_word f_bsize;
- __statfs_word f_blocks;
- __statfs_word f_bfree;
- __statfs_word f_bavail;
+  __statfs_word f_bsize;
+  __statfs_word f_blocks;
+  __statfs_word f_bfree;
+  __statfs_word f_bavail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __statfs_word f_files;
- __statfs_word f_ffree;
- __kernel_fsid_t f_fsid;
- __statfs_word f_namelen;
+  __statfs_word f_files;
+  __statfs_word f_ffree;
+  __kernel_fsid_t f_fsid;
+  __statfs_word f_namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __statfs_word f_frsize;
- __statfs_word f_flags;
- __statfs_word f_spare[4];
+  __statfs_word f_frsize;
+  __statfs_word f_flags;
+  __statfs_word f_spare[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef ARCH_PACK_STATFS64
@@ -51,20 +51,20 @@
 #endif
 struct statfs64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __statfs_word f_type;
- __statfs_word f_bsize;
- __u64 f_blocks;
- __u64 f_bfree;
+  __statfs_word f_type;
+  __statfs_word f_bsize;
+  __u64 f_blocks;
+  __u64 f_bfree;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 f_bavail;
- __u64 f_files;
- __u64 f_ffree;
- __kernel_fsid_t f_fsid;
+  __u64 f_bavail;
+  __u64 f_files;
+  __u64 f_ffree;
+  __kernel_fsid_t f_fsid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __statfs_word f_namelen;
- __statfs_word f_frsize;
- __statfs_word f_flags;
- __statfs_word f_spare[4];
+  __statfs_word f_namelen;
+  __statfs_word f_frsize;
+  __statfs_word f_flags;
+  __statfs_word f_spare[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ARCH_PACK_STATFS64;
 #ifndef ARCH_PACK_COMPAT_STATFS64
@@ -72,20 +72,20 @@
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct compat_statfs64 {
- __u32 f_type;
- __u32 f_bsize;
- __u64 f_blocks;
+  __u32 f_type;
+  __u32 f_bsize;
+  __u64 f_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 f_bfree;
- __u64 f_bavail;
- __u64 f_files;
- __u64 f_ffree;
+  __u64 f_bfree;
+  __u64 f_bavail;
+  __u64 f_files;
+  __u64 f_ffree;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_fsid_t f_fsid;
- __u32 f_namelen;
- __u32 f_frsize;
- __u32 f_flags;
+  __kernel_fsid_t f_fsid;
+  __u32 f_namelen;
+  __u32 f_frsize;
+  __u32 f_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 f_spare[4];
+  __u32 f_spare[4];
 } ARCH_PACK_COMPAT_STATFS64;
 #endif
diff --git a/libc/kernel/uapi/asm-generic/termbits.h b/libc/kernel/uapi/asm-generic/termbits.h
index 58acd3d..c08bbb8 100644
--- a/libc/kernel/uapi/asm-generic/termbits.h
+++ b/libc/kernel/uapi/asm-generic/termbits.h
@@ -26,38 +26,38 @@
 #define NCCS 19
 struct termios {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tcflag_t c_iflag;
- tcflag_t c_oflag;
- tcflag_t c_cflag;
- tcflag_t c_lflag;
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cc_t c_line;
- cc_t c_cc[NCCS];
+  cc_t c_line;
+  cc_t c_cc[NCCS];
 };
 struct termios2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tcflag_t c_iflag;
- tcflag_t c_oflag;
- tcflag_t c_cflag;
- tcflag_t c_lflag;
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cc_t c_line;
- cc_t c_cc[NCCS];
- speed_t c_ispeed;
- speed_t c_ospeed;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t c_ispeed;
+  speed_t c_ospeed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ktermios {
- tcflag_t c_iflag;
- tcflag_t c_oflag;
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tcflag_t c_cflag;
- tcflag_t c_lflag;
- cc_t c_line;
- cc_t c_cc[NCCS];
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- speed_t c_ispeed;
- speed_t c_ospeed;
+  speed_t c_ispeed;
+  speed_t c_ospeed;
 };
 #define VINTR 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-generic/termios.h b/libc/kernel/uapi/asm-generic/termios.h
index 0a5dfd6..1e5f9ce 100644
--- a/libc/kernel/uapi/asm-generic/termios.h
+++ b/libc/kernel/uapi/asm-generic/termios.h
@@ -22,22 +22,22 @@
 #include <asm/ioctls.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct winsize {
- unsigned short ws_row;
- unsigned short ws_col;
- unsigned short ws_xpixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short ws_ypixel;
+  unsigned short ws_ypixel;
 };
 #define NCC 8
 struct termio {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short c_iflag;
- unsigned short c_oflag;
- unsigned short c_cflag;
- unsigned short c_lflag;
+  unsigned short c_iflag;
+  unsigned short c_oflag;
+  unsigned short c_cflag;
+  unsigned short c_lflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char c_line;
- unsigned char c_cc[NCC];
+  unsigned char c_line;
+  unsigned char c_cc[NCC];
 };
 #define TIOCM_LE 0x001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-generic/ucontext.h b/libc/kernel/uapi/asm-generic/ucontext.h
index f26d1cc..cfb1d2b 100644
--- a/libc/kernel/uapi/asm-generic/ucontext.h
+++ b/libc/kernel/uapi/asm-generic/ucontext.h
@@ -19,12 +19,12 @@
 #ifndef __ASM_GENERIC_UCONTEXT_H
 #define __ASM_GENERIC_UCONTEXT_H
 struct ucontext {
- unsigned long uc_flags;
+  unsigned long uc_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ucontext *uc_link;
- stack_t uc_stack;
- struct sigcontext uc_mcontext;
- sigset_t uc_sigmask;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  struct sigcontext uc_mcontext;
+  sigset_t uc_sigmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index becc82d..d7ac6c2 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -18,22 +18,22 @@
  ****************************************************************************/
 #include <asm/bitsperlong.h>
 #ifndef __SYSCALL
-#define __SYSCALL(x, y)
+#define __SYSCALL(x,y)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if __BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT)
-#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32)
+#define __SC_3264(_nr,_32,_64) __SYSCALL(_nr, _32)
 #else
-#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64)
+#define __SC_3264(_nr,_32,_64) __SYSCALL(_nr, _64)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifdef __SYSCALL_COMPAT
-#define __SC_COMP(_nr, _sys, _comp) __SYSCALL(_nr, _comp)
-#define __SC_COMP_3264(_nr, _32, _64, _comp) __SYSCALL(_nr, _comp)
+#define __SC_COMP(_nr,_sys,_comp) __SYSCALL(_nr, _comp)
+#define __SC_COMP_3264(_nr,_32,_64,_comp) __SYSCALL(_nr, _comp)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
-#define __SC_COMP(_nr, _sys, _comp) __SYSCALL(_nr, _sys)
-#define __SC_COMP_3264(_nr, _32, _64, _comp) __SC_3264(_nr, _32, _64)
+#define __SC_COMP(_nr,_sys,_comp) __SYSCALL(_nr, _sys)
+#define __SC_COMP_3264(_nr,_32,_64,_comp) __SC_3264(_nr, _32, _64)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_io_setup 0
@@ -113,407 +113,414 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_quotactl 60
 #define __NR_getdents64 61
+#define __ARCH_WANT_COMPAT_SYS_GETDENTS64
 #define __NR3264_lseek 62
-#define __NR_read 63
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_read 63
 #define __NR_write 64
 #define __NR_readv 65
 #define __NR_writev 66
-#define __NR_pread64 67
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_pread64 67
 #define __NR_pwrite64 68
 #define __NR_preadv 69
 #define __NR_pwritev 70
-#define __NR3264_sendfile 71
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR3264_sendfile 71
 #define __NR_pselect6 72
 #define __NR_ppoll 73
 #define __NR_signalfd4 74
-#define __NR_vmsplice 75
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_vmsplice 75
 #define __NR_splice 76
 #define __NR_tee 77
 #define __NR_readlinkat 78
-#define __NR3264_fstatat 79
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR3264_fstatat 79
 #define __NR3264_fstat 80
 #define __NR_sync 81
 #define __NR_fsync 82
-#define __NR_fdatasync 83
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fdatasync 83
 #ifdef __ARCH_WANT_SYNC_FILE_RANGE2
 #define __NR_sync_file_range2 84
 #else
-#define __NR_sync_file_range 84
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sync_file_range 84
 #endif
 #define __NR_timerfd_create 85
 #define __NR_timerfd_settime 86
-#define __NR_timerfd_gettime 87
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timerfd_gettime 87
 #define __NR_utimensat 88
 #define __NR_acct 89
 #define __NR_capget 90
-#define __NR_capset 91
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_capset 91
 #define __NR_personality 92
 #define __NR_exit 93
 #define __NR_exit_group 94
-#define __NR_waitid 95
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_waitid 95
 #define __NR_set_tid_address 96
 #define __NR_unshare 97
 #define __NR_futex 98
-#define __NR_set_robust_list 99
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_set_robust_list 99
 #define __NR_get_robust_list 100
 #define __NR_nanosleep 101
 #define __NR_getitimer 102
-#define __NR_setitimer 103
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setitimer 103
 #define __NR_kexec_load 104
 #define __NR_init_module 105
 #define __NR_delete_module 106
-#define __NR_timer_create 107
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timer_create 107
 #define __NR_timer_gettime 108
 #define __NR_timer_getoverrun 109
 #define __NR_timer_settime 110
-#define __NR_timer_delete 111
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timer_delete 111
 #define __NR_clock_settime 112
 #define __NR_clock_gettime 113
 #define __NR_clock_getres 114
-#define __NR_clock_nanosleep 115
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_clock_nanosleep 115
 #define __NR_syslog 116
 #define __NR_ptrace 117
 #define __NR_sched_setparam 118
-#define __NR_sched_setscheduler 119
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_setscheduler 119
 #define __NR_sched_getscheduler 120
 #define __NR_sched_getparam 121
 #define __NR_sched_setaffinity 122
-#define __NR_sched_getaffinity 123
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_getaffinity 123
 #define __NR_sched_yield 124
 #define __NR_sched_get_priority_max 125
 #define __NR_sched_get_priority_min 126
-#define __NR_sched_rr_get_interval 127
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_rr_get_interval 127
 #define __NR_restart_syscall 128
 #define __NR_kill 129
 #define __NR_tkill 130
-#define __NR_tgkill 131
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_tgkill 131
 #define __NR_sigaltstack 132
 #define __NR_rt_sigsuspend 133
 #define __NR_rt_sigaction 134
-#define __NR_rt_sigprocmask 135
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigprocmask 135
 #define __NR_rt_sigpending 136
 #define __NR_rt_sigtimedwait 137
 #define __NR_rt_sigqueueinfo 138
-#define __NR_rt_sigreturn 139
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigreturn 139
 #define __NR_setpriority 140
 #define __NR_getpriority 141
 #define __NR_reboot 142
-#define __NR_setregid 143
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setregid 143
 #define __NR_setgid 144
 #define __NR_setreuid 145
 #define __NR_setuid 146
-#define __NR_setresuid 147
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setresuid 147
 #define __NR_getresuid 148
 #define __NR_setresgid 149
 #define __NR_getresgid 150
-#define __NR_setfsuid 151
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setfsuid 151
 #define __NR_setfsgid 152
 #define __NR_times 153
 #define __NR_setpgid 154
-#define __NR_getpgid 155
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getpgid 155
 #define __NR_getsid 156
 #define __NR_setsid 157
 #define __NR_getgroups 158
-#define __NR_setgroups 159
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setgroups 159
 #define __NR_uname 160
 #define __NR_sethostname 161
 #define __NR_setdomainname 162
-#define __NR_getrlimit 163
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getrlimit 163
 #define __NR_setrlimit 164
 #define __NR_getrusage 165
 #define __NR_umask 166
-#define __NR_prctl 167
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_prctl 167
 #define __NR_getcpu 168
 #define __NR_gettimeofday 169
 #define __NR_settimeofday 170
-#define __NR_adjtimex 171
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_adjtimex 171
 #define __NR_getpid 172
 #define __NR_getppid 173
 #define __NR_getuid 174
-#define __NR_geteuid 175
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_geteuid 175
 #define __NR_getgid 176
 #define __NR_getegid 177
 #define __NR_gettid 178
-#define __NR_sysinfo 179
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sysinfo 179
 #define __NR_mq_open 180
 #define __NR_mq_unlink 181
 #define __NR_mq_timedsend 182
-#define __NR_mq_timedreceive 183
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_timedreceive 183
 #define __NR_mq_notify 184
 #define __NR_mq_getsetattr 185
 #define __NR_msgget 186
-#define __NR_msgctl 187
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_msgctl 187
 #define __NR_msgrcv 188
 #define __NR_msgsnd 189
 #define __NR_semget 190
-#define __NR_semctl 191
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_semctl 191
 #define __NR_semtimedop 192
 #define __NR_semop 193
 #define __NR_shmget 194
-#define __NR_shmctl 195
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_shmctl 195
 #define __NR_shmat 196
 #define __NR_shmdt 197
 #define __NR_socket 198
-#define __NR_socketpair 199
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_socketpair 199
 #define __NR_bind 200
 #define __NR_listen 201
 #define __NR_accept 202
-#define __NR_connect 203
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_connect 203
 #define __NR_getsockname 204
 #define __NR_getpeername 205
 #define __NR_sendto 206
-#define __NR_recvfrom 207
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_recvfrom 207
 #define __NR_setsockopt 208
 #define __NR_getsockopt 209
 #define __NR_shutdown 210
-#define __NR_sendmsg 211
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sendmsg 211
 #define __NR_recvmsg 212
 #define __NR_readahead 213
 #define __NR_brk 214
-#define __NR_munmap 215
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_munmap 215
 #define __NR_mremap 216
 #define __NR_add_key 217
 #define __NR_request_key 218
-#define __NR_keyctl 219
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_keyctl 219
 #define __NR_clone 220
 #define __NR_execve 221
 #define __NR3264_mmap 222
-#define __NR3264_fadvise64 223
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR3264_fadvise64 223
 #ifndef __ARCH_NOMMU
 #define __NR_swapon 224
 #define __NR_swapoff 225
-#define __NR_mprotect 226
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mprotect 226
 #define __NR_msync 227
 #define __NR_mlock 228
 #define __NR_munlock 229
-#define __NR_mlockall 230
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mlockall 230
 #define __NR_munlockall 231
 #define __NR_mincore 232
 #define __NR_madvise 233
-#define __NR_remap_file_pages 234
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_remap_file_pages 234
 #define __NR_mbind 235
 #define __NR_get_mempolicy 236
 #define __NR_set_mempolicy 237
-#define __NR_migrate_pages 238
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_migrate_pages 238
 #define __NR_move_pages 239
 #endif
 #define __NR_rt_tgsigqueueinfo 240
-#define __NR_perf_event_open 241
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_perf_event_open 241
 #define __NR_accept4 242
 #define __NR_recvmmsg 243
 #define __NR_arch_specific_syscall 244
-#define __NR_wait4 260
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_wait4 260
 #define __NR_prlimit64 261
 #define __NR_fanotify_init 262
 #define __NR_fanotify_mark 263
-#define __NR_name_to_handle_at 264
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_name_to_handle_at 264
 #define __NR_open_by_handle_at 265
 #define __NR_clock_adjtime 266
 #define __NR_syncfs 267
-#define __NR_setns 268
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setns 268
 #define __NR_sendmmsg 269
 #define __NR_process_vm_readv 270
 #define __NR_process_vm_writev 271
-#define __NR_kcmp 272
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_kcmp 272
 #define __NR_finit_module 273
 #define __NR_sched_setattr 274
 #define __NR_sched_getattr 275
-#undef __NR_syscalls
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_syscalls 276
+#define __NR_renameat2 276
+#define __NR_seccomp 277
+#define __NR_getrandom 278
+#define __NR_memfd_create 279
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_bpf 280
+#undef __NR_syscalls
+#define __NR_syscalls 281
 #ifdef __ARCH_WANT_SYSCALL_NO_AT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_open 1024
 #define __NR_link 1025
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unlink 1026
 #define __NR_mknod 1027
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_chmod 1028
 #define __NR_chown 1029
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mkdir 1030
 #define __NR_rmdir 1031
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lchown 1032
 #define __NR_access 1033
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rename 1034
 #define __NR_readlink 1035
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_symlink 1036
 #define __NR_utimes 1037
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR3264_stat 1038
 #define __NR3264_lstat 1039
-#undef __NR_syscalls
-#define __NR_syscalls (__NR3264_lstat+1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef __NR_syscalls
+#define __NR_syscalls (__NR3264_lstat + 1)
 #endif
 #ifdef __ARCH_WANT_SYSCALL_NO_FLAGS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pipe 1040
 #define __NR_dup2 1041
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_create 1042
 #define __NR_inotify_init 1043
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_eventfd 1044
 #define __NR_signalfd 1045
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __NR_syscalls
-#define __NR_syscalls (__NR_signalfd+1)
+#define __NR_syscalls (__NR_signalfd + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #if (__BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT)) && defined(__ARCH_WANT_SYSCALL_OFF_T)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendfile 1046
 #define __NR_ftruncate 1047
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_truncate 1048
 #define __NR_stat 1049
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lstat 1050
 #define __NR_fstat 1051
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fcntl 1052
 #define __NR_fadvise64 1053
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_WANT_SYS_FADVISE64
 #define __NR_newfstatat 1054
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_WANT_SYS_NEWFSTATAT
 #define __NR_fstatfs 1055
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_statfs 1056
 #define __NR_lseek 1057
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mmap 1058
 #undef __NR_syscalls
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_syscalls (__NR_mmap+1)
+#define __NR_syscalls (__NR_mmap + 1)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __ARCH_WANT_SYSCALL_DEPRECATED
 #define __NR_alarm 1059
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_WANT_SYS_ALARM
 #define __NR_getpgrp 1060
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_WANT_SYS_GETPGRP
 #define __NR_pause 1061
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_WANT_SYS_PAUSE
 #define __NR_time 1062
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_WANT_SYS_TIME
 #define __ARCH_WANT_COMPAT_SYS_TIME
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_utime 1063
 #define __ARCH_WANT_SYS_UTIME
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_creat 1064
 #define __NR_getdents 1065
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_WANT_SYS_GETDENTS
 #define __NR_futimesat 1066
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_select 1067
 #define __ARCH_WANT_SYS_SELECT
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_poll 1068
 #define __NR_epoll_wait 1069
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ustat 1070
 #define __NR_vfork 1071
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_oldwait4 1072
 #define __NR_recv 1073
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_send 1074
 #define __NR_bdflush 1075
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_umount 1076
 #define __ARCH_WANT_SYS_OLDUMOUNT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_uselib 1077
 #define __NR__sysctl 1078
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fork 1079
 #undef __NR_syscalls
-#define __NR_syscalls (__NR_fork+1)
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_syscalls (__NR_fork + 1)
+#endif
 #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT)
 #define __NR_fcntl __NR3264_fcntl
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_statfs __NR3264_statfs
 #define __NR_fstatfs __NR3264_fstatfs
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_truncate __NR3264_truncate
 #define __NR_ftruncate __NR3264_ftruncate
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lseek __NR3264_lseek
 #define __NR_sendfile __NR3264_sendfile
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_newfstatat __NR3264_fstatat
 #define __NR_fstat __NR3264_fstat
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mmap __NR3264_mmap
 #define __NR_fadvise64 __NR3264_fadvise64
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __NR3264_stat
 #define __NR_stat __NR3264_stat
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lstat __NR3264_lstat
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define __NR_fcntl64 __NR3264_fcntl
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_statfs64 __NR3264_statfs
 #define __NR_fstatfs64 __NR3264_fstatfs
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_truncate64 __NR3264_truncate
 #define __NR_ftruncate64 __NR3264_ftruncate
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_llseek __NR3264_lseek
 #define __NR_sendfile64 __NR3264_sendfile
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fstatat64 __NR3264_fstatat
 #define __NR_fstat64 __NR3264_fstat
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mmap2 __NR3264_mmap
 #define __NR_fadvise64_64 __NR3264_fadvise64
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __NR3264_stat
 #define __NR_stat64 __NR3264_stat
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lstat64 __NR3264_lstat
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/bitfield.h b/libc/kernel/uapi/asm-mips/asm/bitfield.h
new file mode 100644
index 0000000..dbe56cc
--- /dev/null
+++ b/libc/kernel/uapi/asm-mips/asm/bitfield.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_ASM_BITFIELD_H
+#define __UAPI_ASM_BITFIELD_H
+#define __BITFIELD_FIELD(field,more) more field;
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/cachectl.h b/libc/kernel/uapi/asm-mips/asm/cachectl.h
index 6cc6f28..86cf3e4 100644
--- a/libc/kernel/uapi/asm-mips/asm/cachectl.h
+++ b/libc/kernel/uapi/asm-mips/asm/cachectl.h
@@ -18,10 +18,10 @@
  ****************************************************************************/
 #ifndef _ASM_CACHECTL
 #define _ASM_CACHECTL
-#define ICACHE (1<<0)
-#define DCACHE (1<<1)
+#define ICACHE (1 << 0)
+#define DCACHE (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BCACHE (ICACHE|DCACHE)
+#define BCACHE (ICACHE | DCACHE)
 #define CACHEABLE 0
 #define UNCACHEABLE 1
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/fcntl.h b/libc/kernel/uapi/asm-mips/asm/fcntl.h
index 02ea3ac..86ad973 100644
--- a/libc/kernel/uapi/asm-mips/asm/fcntl.h
+++ b/libc/kernel/uapi/asm-mips/asm/fcntl.h
@@ -32,7 +32,7 @@
 #define O_LARGEFILE 0x2000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __O_SYNC 0x4000
-#define O_SYNC (__O_SYNC|O_DSYNC)
+#define O_SYNC (__O_SYNC | O_DSYNC)
 #define O_DIRECT 0x8000
 #define F_GETLK 14
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -51,14 +51,14 @@
 #include <linux/types.h>
 struct flock {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short l_type;
- short l_whence;
- __kernel_off_t l_start;
- __kernel_off_t l_len;
+  short l_type;
+  short l_whence;
+  __kernel_off_t l_start;
+  __kernel_off_t l_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long l_sysid;
- __kernel_pid_t l_pid;
- long pad[4];
+  long l_sysid;
+  __kernel_pid_t l_pid;
+  long pad[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HAVE_ARCH_STRUCT_FLOCK
diff --git a/libc/kernel/uapi/asm-mips/asm/inst.h b/libc/kernel/uapi/asm-mips/asm/inst.h
index c46d09b..e9b8372 100644
--- a/libc/kernel/uapi/asm-mips/asm/inst.h
+++ b/libc/kernel/uapi/asm-mips/asm/inst.h
@@ -18,867 +18,1033 @@
  ****************************************************************************/
 #ifndef _UAPI_ASM_INST_H
 #define _UAPI_ASM_INST_H
+#include <asm/bitfield.h>
 enum major_op {
- spec_op, bcond_op, j_op, jal_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- beq_op, bne_op, blez_op, bgtz_op,
- addi_op, addiu_op, slti_op, sltiu_op,
- andi_op, ori_op, xori_op, lui_op,
- cop0_op, cop1_op, cop2_op, cop1x_op,
+  spec_op,
+  bcond_op,
+  j_op,
+  jal_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- beql_op, bnel_op, blezl_op, bgtzl_op,
- daddi_op, daddiu_op, ldl_op, ldr_op,
- spec2_op, jalx_op, mdmx_op, spec3_op,
- lb_op, lh_op, lwl_op, lw_op,
+  beq_op,
+  bne_op,
+  blez_op,
+  bgtz_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- lbu_op, lhu_op, lwr_op, lwu_op,
- sb_op, sh_op, swl_op, sw_op,
- sdl_op, sdr_op, swr_op, cache_op,
- ll_op, lwc1_op, lwc2_op, pref_op,
+  addi_op,
+  addiu_op,
+  slti_op,
+  sltiu_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- lld_op, ldc1_op, ldc2_op, ld_op,
- sc_op, swc1_op, swc2_op, major_3b_op,
- scd_op, sdc1_op, sdc2_op, sd_op
+  andi_op,
+  ori_op,
+  xori_op,
+  lui_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  cop0_op,
+  cop1_op,
+  cop2_op,
+  cop1x_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  beql_op,
+  bnel_op,
+  blezl_op,
+  bgtzl_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  daddi_op,
+  daddiu_op,
+  ldl_op,
+  ldr_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  spec2_op,
+  jalx_op,
+  mdmx_op,
+  spec3_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  lb_op,
+  lh_op,
+  lwl_op,
+  lw_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  lbu_op,
+  lhu_op,
+  lwr_op,
+  lwu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sb_op,
+  sh_op,
+  swl_op,
+  sw_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sdl_op,
+  sdr_op,
+  swr_op,
+  cache_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ll_op,
+  lwc1_op,
+  lwc2_op,
+  pref_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  lld_op,
+  ldc1_op,
+  ldc2_op,
+  ld_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sc_op,
+  swc1_op,
+  swc2_op,
+  major_3b_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  scd_op,
+  sdc1_op,
+  sdc2_op,
+  sd_op
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum spec_op {
- sll_op, movc_op, srl_op, sra_op,
- sllv_op, pmon_op, srlv_op, srav_op,
- jr_op, jalr_op, movz_op, movn_op,
+  sll_op,
+  movc_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- syscall_op, break_op, spim_op, sync_op,
- mfhi_op, mthi_op, mflo_op, mtlo_op,
- dsllv_op, spec2_unused_op, dsrlv_op, dsrav_op,
- mult_op, multu_op, div_op, divu_op,
+  srl_op,
+  sra_op,
+  sllv_op,
+  pmon_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dmult_op, dmultu_op, ddiv_op, ddivu_op,
- add_op, addu_op, sub_op, subu_op,
- and_op, or_op, xor_op, nor_op,
- spec3_unused_op, spec4_unused_op, slt_op, sltu_op,
+  srlv_op,
+  srav_op,
+  jr_op,
+  jalr_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dadd_op, daddu_op, dsub_op, dsubu_op,
- tge_op, tgeu_op, tlt_op, tltu_op,
- teq_op, spec5_unused_op, tne_op, spec6_unused_op,
- dsll_op, spec7_unused_op, dsrl_op, dsra_op,
+  movz_op,
+  movn_op,
+  syscall_op,
+  break_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dsll32_op, spec8_unused_op, dsrl32_op, dsra32_op
+  spim_op,
+  sync_op,
+  mfhi_op,
+  mthi_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mflo_op,
+  mtlo_op,
+  dsllv_op,
+  spec2_unused_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  dsrlv_op,
+  dsrav_op,
+  mult_op,
+  multu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  div_op,
+  divu_op,
+  dmult_op,
+  dmultu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ddiv_op,
+  ddivu_op,
+  add_op,
+  addu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sub_op,
+  subu_op,
+  and_op,
+  or_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  xor_op,
+  nor_op,
+  spec3_unused_op,
+  spec4_unused_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  slt_op,
+  sltu_op,
+  dadd_op,
+  daddu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  dsub_op,
+  dsubu_op,
+  tge_op,
+  tgeu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  tlt_op,
+  tltu_op,
+  teq_op,
+  spec5_unused_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  tne_op,
+  spec6_unused_op,
+  dsll_op,
+  spec7_unused_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  dsrl_op,
+  dsra_op,
+  dsll32_op,
+  spec8_unused_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  dsrl32_op,
+  dsra32_op
 };
 enum spec2_op {
- madd_op, maddu_op, mul_op, spec2_3_unused_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- msub_op, msubu_op,
- clz_op = 0x20, clo_op,
- dclz_op = 0x24, dclo_op,
- sdbpp_op = 0x3f
+  madd_op,
+  maddu_op,
+  mul_op,
+  spec2_3_unused_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  msub_op,
+  msubu_op,
+  clz_op = 0x20,
+  clo_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  dclz_op = 0x24,
+  dclo_op,
+  sdbpp_op = 0x3f
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum spec3_op {
- ext_op, dextm_op, dextu_op, dext_op,
- ins_op, dinsm_op, dinsu_op, dins_op,
+  ext_op,
+  dextm_op,
+  dextu_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- lx_op = 0x0a,
- bshfl_op = 0x20,
- dbshfl_op = 0x24,
- rdhwr_op = 0x3b
+  dext_op,
+  ins_op,
+  dinsm_op,
+  dinsu_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  dins_op,
+  yield_op = 0x09,
+  lx_op = 0x0a,
+  lwle_op = 0x19,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  lwre_op = 0x1a,
+  cachee_op = 0x1b,
+  sbe_op = 0x1c,
+  she_op = 0x1d,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sce_op = 0x1e,
+  swe_op = 0x1f,
+  bshfl_op = 0x20,
+  swle_op = 0x21,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  swre_op = 0x22,
+  prefe_op = 0x23,
+  dbshfl_op = 0x24,
+  lbue_op = 0x28,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  lhue_op = 0x29,
+  lbe_op = 0x2c,
+  lhe_op = 0x2d,
+  lle_op = 0x2e,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  lwe_op = 0x2f,
+  rdhwr_op = 0x3b
 };
 enum rt_op {
- bltz_op, bgez_op, bltzl_op, bgezl_op,
- spimi_op, unused_rt_op_0x05, unused_rt_op_0x06, unused_rt_op_0x07,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tgei_op, tgeiu_op, tlti_op, tltiu_op,
- teqi_op, unused_0x0d_rt_op, tnei_op, unused_0x0f_rt_op,
- bltzal_op, bgezal_op, bltzall_op, bgezall_op,
- rt_op_0x14, rt_op_0x15, rt_op_0x16, rt_op_0x17,
+  bltz_op,
+  bgez_op,
+  bltzl_op,
+  bgezl_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- rt_op_0x18, rt_op_0x19, rt_op_0x1a, rt_op_0x1b,
- bposge32_op, rt_op_0x1d, rt_op_0x1e, rt_op_0x1f
+  spimi_op,
+  unused_rt_op_0x05,
+  unused_rt_op_0x06,
+  unused_rt_op_0x07,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  tgei_op,
+  tgeiu_op,
+  tlti_op,
+  tltiu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  teqi_op,
+  unused_0x0d_rt_op,
+  tnei_op,
+  unused_0x0f_rt_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  bltzal_op,
+  bgezal_op,
+  bltzall_op,
+  bgezall_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  rt_op_0x14,
+  rt_op_0x15,
+  rt_op_0x16,
+  rt_op_0x17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  rt_op_0x18,
+  rt_op_0x19,
+  rt_op_0x1a,
+  rt_op_0x1b,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  bposge32_op,
+  rt_op_0x1d,
+  rt_op_0x1e,
+  rt_op_0x1f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum cop_op {
+  mfc_op = 0x00,
+  dmfc_op = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mfc_op = 0x00, dmfc_op = 0x01,
- cfc_op = 0x02, mfhc_op = 0x03,
- mtc_op = 0x04, dmtc_op = 0x05,
- ctc_op = 0x06, mthc_op = 0x07,
+  cfc_op = 0x02,
+  mfhc_op = 0x03,
+  mtc_op = 0x04,
+  dmtc_op = 0x05,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- bc_op = 0x08, cop_op = 0x10,
- copm_op = 0x18
+  ctc_op = 0x06,
+  mthc_op = 0x07,
+  bc_op = 0x08,
+  cop_op = 0x10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  copm_op = 0x18
 };
 enum bcop_op {
+  bcf_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- bcf_op, bct_op, bcfl_op, bctl_op
+  bct_op,
+  bcfl_op,
+  bctl_op
 };
-enum cop0_coi_func {
- tlbr_op = 0x01, tlbwi_op = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tlbwr_op = 0x06, tlbp_op = 0x08,
- rfe_op = 0x10, eret_op = 0x18
+enum cop0_coi_func {
+  tlbr_op = 0x01,
+  tlbwi_op = 0x02,
+  tlbwr_op = 0x06,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  tlbp_op = 0x08,
+  rfe_op = 0x10,
+  eret_op = 0x18,
+  wait_op = 0x20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum cop0_com_func {
+  tlbr1_op = 0x01,
+  tlbw_op = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tlbr1_op = 0x01, tlbw_op = 0x02,
- tlbp1_op = 0x08, dctr_op = 0x09,
- dctw_op = 0x0a
+  tlbp1_op = 0x08,
+  dctr_op = 0x09,
+  dctw_op = 0x0a
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cop1_fmt {
- s_fmt, d_fmt, e_fmt, q_fmt,
- w_fmt, l_fmt
+  s_fmt,
+  d_fmt,
+  e_fmt,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  q_fmt,
+  w_fmt,
+  l_fmt
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cop1_sdw_func {
- fadd_op = 0x00, fsub_op = 0x01,
- fmul_op = 0x02, fdiv_op = 0x03,
- fsqrt_op = 0x04, fabs_op = 0x05,
+  fadd_op = 0x00,
+  fsub_op = 0x01,
+  fmul_op = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fmov_op = 0x06, fneg_op = 0x07,
- froundl_op = 0x08, ftruncl_op = 0x09,
- fceill_op = 0x0a, ffloorl_op = 0x0b,
- fround_op = 0x0c, ftrunc_op = 0x0d,
+  fdiv_op = 0x03,
+  fsqrt_op = 0x04,
+  fabs_op = 0x05,
+  fmov_op = 0x06,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fceil_op = 0x0e, ffloor_op = 0x0f,
- fmovc_op = 0x11, fmovz_op = 0x12,
- fmovn_op = 0x13, frecip_op = 0x15,
- frsqrt_op = 0x16, fcvts_op = 0x20,
+  fneg_op = 0x07,
+  froundl_op = 0x08,
+  ftruncl_op = 0x09,
+  fceill_op = 0x0a,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fcvtd_op = 0x21, fcvte_op = 0x22,
- fcvtw_op = 0x24, fcvtl_op = 0x25,
- fcmp_op = 0x30
+  ffloorl_op = 0x0b,
+  fround_op = 0x0c,
+  ftrunc_op = 0x0d,
+  fceil_op = 0x0e,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ffloor_op = 0x0f,
+  fmovc_op = 0x11,
+  fmovz_op = 0x12,
+  fmovn_op = 0x13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  frecip_op = 0x15,
+  frsqrt_op = 0x16,
+  fcvts_op = 0x20,
+  fcvtd_op = 0x21,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  fcvte_op = 0x22,
+  fcvtw_op = 0x24,
+  fcvtl_op = 0x25,
+  fcmp_op = 0x30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cop1x_func {
- lwxc1_op = 0x00, ldxc1_op = 0x01,
- swxc1_op = 0x08, sdxc1_op = 0x09,
- pfetch_op = 0x0f, madd_s_op = 0x20,
+  lwxc1_op = 0x00,
+  ldxc1_op = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- madd_d_op = 0x21, madd_e_op = 0x22,
- msub_s_op = 0x28, msub_d_op = 0x29,
- msub_e_op = 0x2a, nmadd_s_op = 0x30,
- nmadd_d_op = 0x31, nmadd_e_op = 0x32,
+  swxc1_op = 0x08,
+  sdxc1_op = 0x09,
+  pfetch_op = 0x0f,
+  madd_s_op = 0x20,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- nmsub_s_op = 0x38, nmsub_d_op = 0x39,
- nmsub_e_op = 0x3a
+  madd_d_op = 0x21,
+  madd_e_op = 0x22,
+  msub_s_op = 0x28,
+  msub_d_op = 0x29,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  msub_e_op = 0x2a,
+  nmadd_s_op = 0x30,
+  nmadd_d_op = 0x31,
+  nmadd_e_op = 0x32,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  nmsub_s_op = 0x38,
+  nmsub_d_op = 0x39,
+  nmsub_e_op = 0x3a
 };
-enum mad_func {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- madd_fp_op = 0x08, msub_fp_op = 0x0a,
- nmadd_fp_op = 0x0c, nmsub_fp_op = 0x0e
+enum mad_func {
+  madd_fp_op = 0x08,
+  msub_fp_op = 0x0a,
+  nmadd_fp_op = 0x0c,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  nmsub_fp_op = 0x0e
 };
 enum lx_func {
+  lwx_op = 0x00,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- lwx_op = 0x00,
- lhx_op = 0x04,
- lbux_op = 0x06,
- ldx_op = 0x08,
+  lhx_op = 0x04,
+  lbux_op = 0x06,
+  ldx_op = 0x08,
+  lwux_op = 0x10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- lwux_op = 0x10,
- lhux_op = 0x14,
- lbx_op = 0x16,
+  lhux_op = 0x14,
+  lbx_op = 0x16,
 };
+enum bshfl_func {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  wsbh_op = 0x2,
+  dshd_op = 0x5,
+  seb_op = 0x10,
+  seh_op = 0x18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum mm_major_op {
- mm_pool32a_op, mm_pool16a_op, mm_lbu16_op, mm_move16_op,
- mm_addi32_op, mm_lbu32_op, mm_sb32_op, mm_lb32_op,
- mm_pool32b_op, mm_pool16b_op, mm_lhu16_op, mm_andi16_op,
+  mm_pool32a_op,
+  mm_pool16a_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_addiu32_op, mm_lhu32_op, mm_sh32_op, mm_lh32_op,
- mm_pool32i_op, mm_pool16c_op, mm_lwsp16_op, mm_pool16d_op,
- mm_ori32_op, mm_pool32f_op, mm_reserved1_op, mm_reserved2_op,
- mm_pool32c_op, mm_lwgp16_op, mm_lw16_op, mm_pool16e_op,
+  mm_lbu16_op,
+  mm_move16_op,
+  mm_addi32_op,
+  mm_lbu32_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_xori32_op, mm_jals32_op, mm_addiupc_op, mm_reserved3_op,
- mm_reserved4_op, mm_pool16f_op, mm_sb16_op, mm_beqz16_op,
- mm_slti32_op, mm_beq32_op, mm_swc132_op, mm_lwc132_op,
- mm_reserved5_op, mm_reserved6_op, mm_sh16_op, mm_bnez16_op,
+  mm_sb32_op,
+  mm_lb32_op,
+  mm_pool32b_op,
+  mm_pool16b_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_sltiu32_op, mm_bne32_op, mm_sdc132_op, mm_ldc132_op,
- mm_reserved7_op, mm_reserved8_op, mm_swsp16_op, mm_b16_op,
- mm_andi32_op, mm_j32_op, mm_sd32_op, mm_ld32_op,
- mm_reserved11_op, mm_reserved12_op, mm_sw16_op, mm_li16_op,
+  mm_lhu16_op,
+  mm_andi16_op,
+  mm_addiu32_op,
+  mm_lhu32_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_jalx32_op, mm_jal32_op, mm_sw32_op, mm_lw32_op,
+  mm_sh32_op,
+  mm_lh32_op,
+  mm_pool32i_op,
+  mm_pool16c_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_lwsp16_op,
+  mm_pool16d_op,
+  mm_ori32_op,
+  mm_pool32f_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_reserved1_op,
+  mm_reserved2_op,
+  mm_pool32c_op,
+  mm_lwgp16_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_lw16_op,
+  mm_pool16e_op,
+  mm_xori32_op,
+  mm_jals32_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_addiupc_op,
+  mm_reserved3_op,
+  mm_reserved4_op,
+  mm_pool16f_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_sb16_op,
+  mm_beqz16_op,
+  mm_slti32_op,
+  mm_beq32_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_swc132_op,
+  mm_lwc132_op,
+  mm_reserved5_op,
+  mm_reserved6_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_sh16_op,
+  mm_bnez16_op,
+  mm_sltiu32_op,
+  mm_bne32_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_sdc132_op,
+  mm_ldc132_op,
+  mm_reserved7_op,
+  mm_reserved8_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_swsp16_op,
+  mm_b16_op,
+  mm_andi32_op,
+  mm_j32_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_sd32_op,
+  mm_ld32_op,
+  mm_reserved11_op,
+  mm_reserved12_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_sw16_op,
+  mm_li16_op,
+  mm_jalx32_op,
+  mm_jal32_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_sw32_op,
+  mm_lw32_op,
 };
 enum mm_32i_minor_op {
- mm_bltz_op, mm_bltzal_op, mm_bgez_op, mm_bgezal_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_blez_op, mm_bnezc_op, mm_bgtz_op, mm_beqzc_op,
- mm_tlti_op, mm_tgei_op, mm_tltiu_op, mm_tgeiu_op,
- mm_tnei_op, mm_lui_op, mm_teqi_op, mm_reserved13_op,
- mm_synci_op, mm_bltzals_op, mm_reserved14_op, mm_bgezals_op,
+  mm_bltz_op,
+  mm_bltzal_op,
+  mm_bgez_op,
+  mm_bgezal_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_bc2f_op, mm_bc2t_op, mm_reserved15_op, mm_reserved16_op,
- mm_reserved17_op, mm_reserved18_op, mm_bposge64_op, mm_bposge32_op,
- mm_bc1f_op, mm_bc1t_op, mm_reserved19_op, mm_reserved20_op,
- mm_bc1any2f_op, mm_bc1any2t_op, mm_bc1any4f_op, mm_bc1any4t_op,
+  mm_blez_op,
+  mm_bnezc_op,
+  mm_bgtz_op,
+  mm_beqzc_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_tlti_op,
+  mm_tgei_op,
+  mm_tltiu_op,
+  mm_tgeiu_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_tnei_op,
+  mm_lui_op,
+  mm_teqi_op,
+  mm_reserved13_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_synci_op,
+  mm_bltzals_op,
+  mm_reserved14_op,
+  mm_bgezals_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_bc2f_op,
+  mm_bc2t_op,
+  mm_reserved15_op,
+  mm_reserved16_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_reserved17_op,
+  mm_reserved18_op,
+  mm_bposge64_op,
+  mm_bposge32_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_bc1f_op,
+  mm_bc1t_op,
+  mm_reserved19_op,
+  mm_reserved20_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_bc1any2f_op,
+  mm_bc1any2t_op,
+  mm_bc1any4f_op,
+  mm_bc1any4t_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum mm_32a_minor_op {
- mm_sll32_op = 0x000,
- mm_ins_op = 0x00c,
+  mm_sll32_op = 0x000,
+  mm_ins_op = 0x00c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_ext_op = 0x02c,
- mm_pool32axf_op = 0x03c,
- mm_srl32_op = 0x040,
- mm_sra_op = 0x080,
+  mm_sllv32_op = 0x010,
+  mm_ext_op = 0x02c,
+  mm_pool32axf_op = 0x03c,
+  mm_srl32_op = 0x040,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_rotr_op = 0x0c0,
- mm_lwxs_op = 0x118,
- mm_addu32_op = 0x150,
- mm_subu32_op = 0x1d0,
+  mm_sra_op = 0x080,
+  mm_srlv32_op = 0x090,
+  mm_rotr_op = 0x0c0,
+  mm_lwxs_op = 0x118,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_and_op = 0x250,
- mm_or32_op = 0x290,
- mm_xor32_op = 0x310,
+  mm_addu32_op = 0x150,
+  mm_subu32_op = 0x1d0,
+  mm_wsbh_op = 0x1ec,
+  mm_mul_op = 0x210,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_and_op = 0x250,
+  mm_or32_op = 0x290,
+  mm_xor32_op = 0x310,
+  mm_slt_op = 0x350,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_sltu_op = 0x390,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_32b_func {
- mm_lwc2_func = 0x0,
- mm_lwp_func = 0x1,
- mm_ldc2_func = 0x2,
+  mm_lwc2_func = 0x0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_ldp_func = 0x4,
- mm_lwm32_func = 0x5,
- mm_cache_func = 0x6,
- mm_ldm_func = 0x7,
+  mm_lwp_func = 0x1,
+  mm_ldc2_func = 0x2,
+  mm_ldp_func = 0x4,
+  mm_lwm32_func = 0x5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_swc2_func = 0x8,
- mm_swp_func = 0x9,
- mm_sdc2_func = 0xa,
- mm_sdp_func = 0xc,
+  mm_cache_func = 0x6,
+  mm_ldm_func = 0x7,
+  mm_swc2_func = 0x8,
+  mm_swp_func = 0x9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_swm32_func = 0xd,
- mm_sdm_func = 0xf,
+  mm_sdc2_func = 0xa,
+  mm_sdp_func = 0xc,
+  mm_swm32_func = 0xd,
+  mm_sdm_func = 0xf,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum mm_32c_func {
+  mm_pref_func = 0x2,
+  mm_ll_func = 0x3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_pref_func = 0x2,
- mm_ll_func = 0x3,
- mm_swr_func = 0x9,
- mm_sc_func = 0xb,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_lwu_func = 0xe,
+  mm_swr_func = 0x9,
+  mm_sc_func = 0xb,
+  mm_lwu_func = 0xe,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_32axf_minor_op {
- mm_mfc0_op = 0x003,
+  mm_mfc0_op = 0x003,
+  mm_mtc0_op = 0x00b,
+  mm_tlbp_op = 0x00d,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_mtc0_op = 0x00b,
- mm_tlbp_op = 0x00d,
- mm_jalr_op = 0x03c,
- mm_tlbr_op = 0x04d,
+  mm_mfhi32_op = 0x035,
+  mm_jalr_op = 0x03c,
+  mm_tlbr_op = 0x04d,
+  mm_mflo32_op = 0x075,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_jalrhb_op = 0x07c,
- mm_tlbwi_op = 0x08d,
- mm_tlbwr_op = 0x0cd,
- mm_jalrs_op = 0x13c,
+  mm_jalrhb_op = 0x07c,
+  mm_tlbwi_op = 0x08d,
+  mm_tlbwr_op = 0x0cd,
+  mm_jalrs_op = 0x13c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_jalrshb_op = 0x17c,
- mm_syscall_op = 0x22d,
- mm_eret_op = 0x3cd,
+  mm_jalrshb_op = 0x17c,
+  mm_sync_op = 0x1ad,
+  mm_syscall_op = 0x22d,
+  mm_wait_op = 0x24d,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_eret_op = 0x3cd,
+  mm_divu_op = 0x5dc,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_32f_minor_op {
- mm_32f_00_op = 0x00,
- mm_32f_01_op = 0x01,
- mm_32f_02_op = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_32f_10_op = 0x08,
- mm_32f_11_op = 0x09,
- mm_32f_12_op = 0x0a,
- mm_32f_20_op = 0x10,
+  mm_32f_00_op = 0x00,
+  mm_32f_01_op = 0x01,
+  mm_32f_02_op = 0x02,
+  mm_32f_10_op = 0x08,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_32f_30_op = 0x18,
- mm_32f_40_op = 0x20,
- mm_32f_41_op = 0x21,
- mm_32f_42_op = 0x22,
+  mm_32f_11_op = 0x09,
+  mm_32f_12_op = 0x0a,
+  mm_32f_20_op = 0x10,
+  mm_32f_30_op = 0x18,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_32f_50_op = 0x28,
- mm_32f_51_op = 0x29,
- mm_32f_52_op = 0x2a,
- mm_32f_60_op = 0x30,
+  mm_32f_40_op = 0x20,
+  mm_32f_41_op = 0x21,
+  mm_32f_42_op = 0x22,
+  mm_32f_50_op = 0x28,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_32f_70_op = 0x38,
- mm_32f_73_op = 0x3b,
- mm_32f_74_op = 0x3c,
+  mm_32f_51_op = 0x29,
+  mm_32f_52_op = 0x2a,
+  mm_32f_60_op = 0x30,
+  mm_32f_70_op = 0x38,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_32f_73_op = 0x3b,
+  mm_32f_74_op = 0x3c,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_32f_10_minor_op {
- mm_lwxc1_op = 0x1,
- mm_swxc1_op,
- mm_ldxc1_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_sdxc1_op,
- mm_luxc1_op,
- mm_suxc1_op,
+  mm_lwxc1_op = 0x1,
+  mm_swxc1_op,
+  mm_ldxc1_op,
+  mm_sdxc1_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_luxc1_op,
+  mm_suxc1_op,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_32f_func {
- mm_lwxc1_func = 0x048,
- mm_swxc1_func = 0x088,
- mm_ldxc1_func = 0x0c8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_sdxc1_func = 0x108,
+  mm_lwxc1_func = 0x048,
+  mm_swxc1_func = 0x088,
+  mm_ldxc1_func = 0x0c8,
+  mm_sdxc1_func = 0x108,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum mm_32f_40_minor_op {
- mm_fmovf_op,
+  mm_fmovf_op,
+  mm_fmovt_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_fmovt_op,
 };
 enum mm_32f_60_minor_op {
- mm_fadd_op,
+  mm_fadd_op,
+  mm_fsub_op,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_fsub_op,
- mm_fmul_op,
- mm_fdiv_op,
+  mm_fmul_op,
+  mm_fdiv_op,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_32f_70_minor_op {
- mm_fmovn_op,
- mm_fmovz_op,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_fmovn_op,
+  mm_fmovz_op,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_32f_73_minor_op {
- mm_fmov0_op = 0x01,
- mm_fcvtl_op = 0x04,
- mm_movf0_op = 0x05,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_frsqrt_op = 0x08,
- mm_ffloorl_op = 0x0c,
- mm_fabs0_op = 0x0d,
- mm_fcvtw_op = 0x24,
+  mm_fmov0_op = 0x01,
+  mm_fcvtl_op = 0x04,
+  mm_movf0_op = 0x05,
+  mm_frsqrt_op = 0x08,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_movt0_op = 0x25,
- mm_fsqrt_op = 0x28,
- mm_ffloorw_op = 0x2c,
- mm_fneg0_op = 0x2d,
+  mm_ffloorl_op = 0x0c,
+  mm_fabs0_op = 0x0d,
+  mm_fcvtw_op = 0x24,
+  mm_movt0_op = 0x25,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_cfc1_op = 0x40,
- mm_frecip_op = 0x48,
- mm_fceill_op = 0x4c,
- mm_fcvtd0_op = 0x4d,
+  mm_fsqrt_op = 0x28,
+  mm_ffloorw_op = 0x2c,
+  mm_fneg0_op = 0x2d,
+  mm_cfc1_op = 0x40,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_ctc1_op = 0x60,
- mm_fceilw_op = 0x6c,
- mm_fcvts0_op = 0x6d,
- mm_mfc1_op = 0x80,
+  mm_frecip_op = 0x48,
+  mm_fceill_op = 0x4c,
+  mm_fcvtd0_op = 0x4d,
+  mm_ctc1_op = 0x60,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_fmov1_op = 0x81,
- mm_movf1_op = 0x85,
- mm_ftruncl_op = 0x8c,
- mm_fabs1_op = 0x8d,
+  mm_fceilw_op = 0x6c,
+  mm_fcvts0_op = 0x6d,
+  mm_mfc1_op = 0x80,
+  mm_fmov1_op = 0x81,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_mtc1_op = 0xa0,
- mm_movt1_op = 0xa5,
- mm_ftruncw_op = 0xac,
- mm_fneg1_op = 0xad,
+  mm_movf1_op = 0x85,
+  mm_ftruncl_op = 0x8c,
+  mm_fabs1_op = 0x8d,
+  mm_mtc1_op = 0xa0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_mfhc1_op = 0xc0,
- mm_froundl_op = 0xcc,
- mm_fcvtd1_op = 0xcd,
- mm_mthc1_op = 0xe0,
+  mm_movt1_op = 0xa5,
+  mm_ftruncw_op = 0xac,
+  mm_fneg1_op = 0xad,
+  mm_mfhc1_op = 0xc0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_froundw_op = 0xec,
- mm_fcvts1_op = 0xed,
+  mm_froundl_op = 0xcc,
+  mm_fcvtd1_op = 0xcd,
+  mm_mthc1_op = 0xe0,
+  mm_froundw_op = 0xec,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_fcvts1_op = 0xed,
 };
 enum mm_16c_minor_op {
+  mm_lwm16_op = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_lwm16_op = 0x04,
- mm_swm16_op = 0x05,
- mm_jr16_op = 0x0c,
- mm_jrc_op = 0x0d,
+  mm_swm16_op = 0x05,
+  mm_jr16_op = 0x0c,
+  mm_jrc_op = 0x0d,
+  mm_jalr16_op = 0x0e,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mm_jalr16_op = 0x0e,
- mm_jalrs16_op = 0x0f,
- mm_jraddiusp_op = 0x18,
+  mm_jalrs16_op = 0x0f,
+  mm_jraddiusp_op = 0x18,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mm_16d_minor_op {
- mm_addius5_func,
- mm_addiusp_func,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  mm_addius5_func,
+  mm_addiusp_func,
+};
 enum MIPS16e_ops {
- MIPS16e_jal_op = 003,
- MIPS16e_ld_op = 007,
- MIPS16e_i8_op = 014,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIPS16e_sd_op = 017,
- MIPS16e_lb_op = 020,
- MIPS16e_lh_op = 021,
- MIPS16e_lwsp_op = 022,
+  MIPS16e_jal_op = 003,
+  MIPS16e_ld_op = 007,
+  MIPS16e_i8_op = 014,
+  MIPS16e_sd_op = 017,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIPS16e_lw_op = 023,
- MIPS16e_lbu_op = 024,
- MIPS16e_lhu_op = 025,
- MIPS16e_lwpc_op = 026,
+  MIPS16e_lb_op = 020,
+  MIPS16e_lh_op = 021,
+  MIPS16e_lwsp_op = 022,
+  MIPS16e_lw_op = 023,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIPS16e_lwu_op = 027,
- MIPS16e_sb_op = 030,
- MIPS16e_sh_op = 031,
- MIPS16e_swsp_op = 032,
+  MIPS16e_lbu_op = 024,
+  MIPS16e_lhu_op = 025,
+  MIPS16e_lwpc_op = 026,
+  MIPS16e_lwu_op = 027,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIPS16e_sw_op = 033,
- MIPS16e_rr_op = 035,
- MIPS16e_extend_op = 036,
- MIPS16e_i64_op = 037,
+  MIPS16e_sb_op = 030,
+  MIPS16e_sh_op = 031,
+  MIPS16e_swsp_op = 032,
+  MIPS16e_sw_op = 033,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MIPS16e_rr_op = 035,
+  MIPS16e_extend_op = 036,
+  MIPS16e_i64_op = 037,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum MIPS16e_i64_func {
- MIPS16e_ldsp_func,
- MIPS16e_sdsp_func,
+  MIPS16e_ldsp_func,
+  MIPS16e_sdsp_func,
+  MIPS16e_sdrasp_func,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIPS16e_sdrasp_func,
- MIPS16e_dadjsp_func,
- MIPS16e_ldpc_func,
+  MIPS16e_dadjsp_func,
+  MIPS16e_ldpc_func,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum MIPS16e_rr_func {
- MIPS16e_jr_func,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MIPS16e_jr_func,
 };
 enum MIPS6e_i8_func {
+  MIPS16e_swrasp_func = 02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIPS16e_swrasp_func = 02,
 };
 #define MM_NOP16 0x0c00
-#define BITFIELD_FIELD(field, more)   more   field;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct j_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int target : 26,
- ;))
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int target : 26,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ))
 };
 struct i_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rs : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(signed int simmediate : 16,
- ;))))
+ ))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct u_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rs : 5,
- BITFIELD_FIELD(unsigned int rt : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int uimmediate : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int uimmediate : 16,
- ;))))
+ ))))
 };
 struct c_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int c_op : 3, __BITFIELD_FIELD(unsigned int cache : 2, __BITFIELD_FIELD(unsigned int simmediate : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rs : 5,
- BITFIELD_FIELD(unsigned int c_op : 3,
- BITFIELD_FIELD(unsigned int cache : 2,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int simmediate : 16,
- ;)))))
+ )))))
 };
 struct r_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rs : 5,
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(unsigned int rd : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int re : 5,
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
+ ))))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct p_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rs : 5,
- BITFIELD_FIELD(unsigned int rt : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int rd : 5,
- BITFIELD_FIELD(unsigned int re : 5,
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ))))))
 };
 struct f_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int : 1,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int : 1, __BITFIELD_FIELD(unsigned int fmt : 4, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fmt : 4,
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(unsigned int rd : 5,
- BITFIELD_FIELD(unsigned int re : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 6,
- ;)))))))
+ )))))))
 };
 struct ma_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int fmt : 2,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int fr : 5,
- BITFIELD_FIELD(unsigned int ft : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fd : 5,
- BITFIELD_FIELD(unsigned int func : 4,
- BITFIELD_FIELD(unsigned int fmt : 2,
- ;)))))))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ )))))))
 };
 struct b_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int code : 20,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int code : 20, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 6,
- ;)))
+ )))
 };
 struct ps_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rs : 5,
- BITFIELD_FIELD(unsigned int ft : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fd : 5,
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
+ ))))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int sel : 4,
- BITFIELD_FIELD(unsigned int fmt : 1,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int sel : 4, __BITFIELD_FIELD(unsigned int fmt : 1, __BITFIELD_FIELD(unsigned int vt : 5, __BITFIELD_FIELD(unsigned int vs : 5, __BITFIELD_FIELD(unsigned int vd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int vt : 5,
- BITFIELD_FIELD(unsigned int vs : 5,
- BITFIELD_FIELD(unsigned int vd : 5,
- BITFIELD_FIELD(unsigned int func : 6,
+ )))))))
+};
+struct spec3_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 9, __BITFIELD_FIELD(unsigned int func : 7,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;)))))))
+ )))))
 };
 struct fb_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int bc : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int flag : 2, __BITFIELD_FIELD(signed int simmediate : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int bc : 5,
- BITFIELD_FIELD(unsigned int cc : 3,
- BITFIELD_FIELD(unsigned int flag : 2,
- BITFIELD_FIELD(signed int simmediate : 16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;)))))
+ )))))
 };
 struct fp0_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fmt : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fmt : 5,
- BITFIELD_FIELD(unsigned int ft : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int fd : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
+ ))))))
 };
 struct mm_fp0_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 2, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int ft : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int fd : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fmt : 3,
- BITFIELD_FIELD(unsigned int op : 2,
- BITFIELD_FIELD(unsigned int func : 6,
- ;)))))))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ )))))))
 };
 struct fp1_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int op : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int fd : 5,
- BITFIELD_FIELD(unsigned int func : 6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;))))))
+ ))))))
 };
 struct mm_fp1_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 8, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int fmt : 2,
- BITFIELD_FIELD(unsigned int op : 8,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
+ ))))))
 };
 struct mm_fp2_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int zero : 2, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 3, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int fd : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int cc : 3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int zero : 2,
- BITFIELD_FIELD(unsigned int fmt : 2,
- BITFIELD_FIELD(unsigned int op : 3,
- BITFIELD_FIELD(unsigned int func : 6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;))))))))
+ ))))))))
 };
 struct mm_fp3_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 7, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int fmt : 3,
- BITFIELD_FIELD(unsigned int op : 7,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
+ ))))))
 };
 struct mm_fp4_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int cond : 4, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int cc : 3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fmt : 3,
- BITFIELD_FIELD(unsigned int cond : 4,
- BITFIELD_FIELD(unsigned int func : 6,
- ;)))))))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ )))))))
 };
 struct mm_fp5_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int index : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int base : 5,
- BITFIELD_FIELD(unsigned int fd : 5,
- BITFIELD_FIELD(unsigned int op : 5,
- BITFIELD_FIELD(unsigned int func : 6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;))))))
+ ))))))
 };
 struct fp6_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fr : 5,
- BITFIELD_FIELD(unsigned int ft : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int fd : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
+ ))))))
 };
 struct mm_fp6_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int func : 6,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int ft : 5,
- BITFIELD_FIELD(unsigned int fs : 5,
- BITFIELD_FIELD(unsigned int fd : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int fr : 5,
- BITFIELD_FIELD(unsigned int func : 6,
- ;))))))
+ ))))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mm_i_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(unsigned int rs : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(signed int simmediate : 16,
- ;))))
+ ))))
 };
 struct mm_m_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(signed int simmediate : 12,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rd : 5,
- BITFIELD_FIELD(unsigned int base : 5,
- BITFIELD_FIELD(unsigned int func : 4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(signed int simmediate : 12,
- ;)))))
+ )))))
 };
 struct mm_x_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int func : 11,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int index : 5,
- BITFIELD_FIELD(unsigned int base : 5,
- BITFIELD_FIELD(unsigned int rd : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 11,
- ;)))))
+ )))))
 };
 struct mm_b0_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int simmediate : 10, __BITFIELD_FIELD(unsigned int : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(signed int simmediate : 10,
- BITFIELD_FIELD(unsigned int : 16,
- ;)))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ )))
 };
 struct mm_b1_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rs : 3,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(signed int simmediate : 7,
- BITFIELD_FIELD(unsigned int : 16,
- ;))))
+ ))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mm16_m_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int func : 4,
- BITFIELD_FIELD(unsigned int rlist : 2,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int rlist : 2, __BITFIELD_FIELD(unsigned int imm : 4, __BITFIELD_FIELD(unsigned int : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int imm : 4,
- BITFIELD_FIELD(unsigned int : 16,
- ;)))))
+ )))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mm16_rb_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rt : 3,
- BITFIELD_FIELD(unsigned int base : 3,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(unsigned int base : 3, __BITFIELD_FIELD(signed int simmediate : 4, __BITFIELD_FIELD(unsigned int : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(signed int simmediate : 4,
- BITFIELD_FIELD(unsigned int : 16,
- ;)))))
+ )))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mm16_r3_format {
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rt : 3,
- BITFIELD_FIELD(signed int simmediate : 7,
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int : 16,
- ;))))
+ ))))
 };
 struct mm16_r5_format {
+  __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 5, __BITFIELD_FIELD(unsigned int : 16,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 6,
- BITFIELD_FIELD(unsigned int rt : 5,
- BITFIELD_FIELD(signed int simmediate : 5,
- BITFIELD_FIELD(unsigned int : 16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;))))
+ ))))
 };
 struct m16e_rr {
- BITFIELD_FIELD(unsigned int opcode : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int nd : 1, __BITFIELD_FIELD(unsigned int l : 1, __BITFIELD_FIELD(unsigned int ra : 1, __BITFIELD_FIELD(unsigned int func : 5,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int rx : 3,
- BITFIELD_FIELD(unsigned int nd : 1,
- BITFIELD_FIELD(unsigned int l : 1,
- BITFIELD_FIELD(unsigned int ra : 1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 5,
- ;))))))
+ ))))))
 };
 struct m16e_jal {
+  __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int x : 1, __BITFIELD_FIELD(unsigned int imm20_16 : 5, __BITFIELD_FIELD(signed int imm25_21 : 5,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 5,
- BITFIELD_FIELD(unsigned int x : 1,
- BITFIELD_FIELD(unsigned int imm20_16 : 5,
- BITFIELD_FIELD(signed int imm25_21 : 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;))))
+ ))))
 };
 struct m16e_i64 {
- BITFIELD_FIELD(unsigned int opcode : 5,
+  __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int func : 3,
- BITFIELD_FIELD(unsigned int imm : 8,
- ;)))
+ )))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct m16e_ri64 {
- BITFIELD_FIELD(unsigned int opcode : 5,
- BITFIELD_FIELD(unsigned int func : 3,
- BITFIELD_FIELD(unsigned int ry : 3,
+  __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int imm : 5,
- ;))))
+ ))))
 };
 struct m16e_ri {
+  __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int opcode : 5,
- BITFIELD_FIELD(unsigned int rx : 3,
- BITFIELD_FIELD(unsigned int imm : 8,
- ;)))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ )))
 };
 struct m16e_rri {
- BITFIELD_FIELD(unsigned int opcode : 5,
- BITFIELD_FIELD(unsigned int rx : 3,
+  __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BITFIELD_FIELD(unsigned int ry : 3,
- BITFIELD_FIELD(unsigned int imm : 5,
- ;))))
+ ))))
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct m16e_i8 {
- BITFIELD_FIELD(unsigned int opcode : 5,
- BITFIELD_FIELD(unsigned int func : 3,
- BITFIELD_FIELD(unsigned int imm : 8,
+  __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ;)))
+ )))
 };
 union mips_instruction {
- unsigned int word;
+  unsigned int word;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short halfword[2];
- unsigned char byte[4];
- struct j_format j_format;
- struct i_format i_format;
+  unsigned short halfword[2];
+  unsigned char byte[4];
+  struct j_format j_format;
+  struct i_format i_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct u_format u_format;
- struct c_format c_format;
- struct r_format r_format;
- struct p_format p_format;
+  struct u_format u_format;
+  struct c_format c_format;
+  struct r_format r_format;
+  struct p_format p_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct f_format f_format;
- struct ma_format ma_format;
- struct b_format b_format;
- struct ps_format ps_format;
+  struct f_format f_format;
+  struct ma_format ma_format;
+  struct b_format b_format;
+  struct ps_format ps_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v_format v_format;
- struct fb_format fb_format;
- struct fp0_format fp0_format;
- struct mm_fp0_format mm_fp0_format;
+  struct v_format v_format;
+  struct spec3_format spec3_format;
+  struct fb_format fb_format;
+  struct fp0_format fp0_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fp1_format fp1_format;
- struct mm_fp1_format mm_fp1_format;
- struct mm_fp2_format mm_fp2_format;
- struct mm_fp3_format mm_fp3_format;
+  struct mm_fp0_format mm_fp0_format;
+  struct fp1_format fp1_format;
+  struct mm_fp1_format mm_fp1_format;
+  struct mm_fp2_format mm_fp2_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct mm_fp4_format mm_fp4_format;
- struct mm_fp5_format mm_fp5_format;
- struct fp6_format fp6_format;
- struct mm_fp6_format mm_fp6_format;
+  struct mm_fp3_format mm_fp3_format;
+  struct mm_fp4_format mm_fp4_format;
+  struct mm_fp5_format mm_fp5_format;
+  struct fp6_format fp6_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct mm_i_format mm_i_format;
- struct mm_m_format mm_m_format;
- struct mm_x_format mm_x_format;
- struct mm_b0_format mm_b0_format;
+  struct mm_fp6_format mm_fp6_format;
+  struct mm_i_format mm_i_format;
+  struct mm_m_format mm_m_format;
+  struct mm_x_format mm_x_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct mm_b1_format mm_b1_format;
- struct mm16_m_format mm16_m_format ;
- struct mm16_rb_format mm16_rb_format;
- struct mm16_r3_format mm16_r3_format;
+  struct mm_b0_format mm_b0_format;
+  struct mm_b1_format mm_b1_format;
+  struct mm16_m_format mm16_m_format;
+  struct mm16_rb_format mm16_rb_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct mm16_r5_format mm16_r5_format;
+  struct mm16_r3_format mm16_r3_format;
+  struct mm16_r5_format mm16_r5_format;
 };
 union mips16e_instruction {
- unsigned int full : 16;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct m16e_rr rr;
- struct m16e_jal jal;
- struct m16e_i64 i64;
- struct m16e_ri64 ri64;
+  unsigned int full : 16;
+  struct m16e_rr rr;
+  struct m16e_jal jal;
+  struct m16e_i64 i64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct m16e_ri ri;
- struct m16e_rri rri;
- struct m16e_i8 i8;
+  struct m16e_ri64 ri64;
+  struct m16e_ri ri;
+  struct m16e_rri rri;
+  struct m16e_i8 i8;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/ioctls.h b/libc/kernel/uapi/asm-mips/asm/ioctls.h
index 32e6e34..973bcc7 100644
--- a/libc/kernel/uapi/asm-mips/asm/ioctls.h
+++ b/libc/kernel/uapi/asm-mips/asm/ioctls.h
@@ -88,37 +88,39 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSETSW2 _IOW('T', 0x2C, struct termios2)
 #define TCSETSF2 _IOW('T', 0x2D, struct termios2)
+#define TIOCGRS485 _IOR('T', 0x2E, struct serial_rs485)
+#define TIOCSRS485 _IOWR('T', 0x2F, struct serial_rs485)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGPTN _IOR('T', 0x30, unsigned int)
 #define TIOCSPTLCK _IOW('T', 0x31, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGDEV _IOR('T', 0x32, unsigned int)
 #define TIOCSIG _IOW('T', 0x36, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCVHANGUP 0x5437
 #define TIOCGPKT _IOR('T', 0x38, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGPTLCK _IOR('T', 0x39, int)
 #define TIOCGEXCL _IOR('T', 0x40, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSCTTY 0x5480
 #define TIOCGSOFTCAR 0x5481
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSSOFTCAR 0x5482
 #define TIOCLINUX 0x5483
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGSERIAL 0x5484
 #define TIOCSSERIAL 0x5485
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSBRKP 0x5486
 #define TIOCSERCONFIG 0x5488
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSERGWILD 0x5489
 #define TIOCSERSWILD 0x548a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGLCKTRMIOS 0x548b
 #define TIOCSLCKTRMIOS 0x548c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSERGSTRUCT 0x548d
 #define TIOCSERGETLSR 0x548e
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSERGETMULTI 0x548f
 #define TIOCSERSETMULTI 0x5490
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCMIWAIT 0x5491
 #define TIOCGICOUNT 0x5492
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/kvm.h b/libc/kernel/uapi/asm-mips/asm/kvm.h
index 69084ee..0206d16 100644
--- a/libc/kernel/uapi/asm-mips/asm/kvm.h
+++ b/libc/kernel/uapi/asm-mips/asm/kvm.h
@@ -21,22 +21,22 @@
 #include <linux/types.h>
 struct kvm_regs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 gpr[32];
- __u64 hi;
- __u64 lo;
- __u64 pc;
+  __u64 gpr[32];
+  __u64 hi;
+  __u64 lo;
+  __u64 pc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_fpu {
- __u64 fpr[32];
- __u32 fir;
+  __u64 fpr[32];
+  __u32 fir;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fccr;
- __u32 fexr;
- __u32 fenr;
- __u32 fcsr;
+  __u32 fccr;
+  __u32 fexr;
+  __u32 fenr;
+  __u32 fcsr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
+  __u32 pad;
 };
 #define KVM_REG_MIPS_R0 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 0)
 #define KVM_REG_MIPS_R1 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 1)
@@ -82,8 +82,13 @@
 #define KVM_REG_MIPS_LO (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 33)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_REG_MIPS_PC (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 34)
+#define KVM_REG_MIPS_COUNT_CTL (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 0x20000 | 0)
+#define KVM_REG_MIPS_COUNT_CTL_DC 0x00000001
+#define KVM_REG_MIPS_COUNT_RESUME (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 0x20000 | 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_MIPS_COUNT_HZ (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 0x20000 | 2)
 struct kvm_debug_exit_arch {
- __u64 epc;
+  __u64 epc;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_guest_debug_arch {
@@ -94,8 +99,8 @@
 struct kvm_sregs {
 };
 struct kvm_mips_interrupt {
- __u32 cpu;
+  __u32 cpu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 irq;
+  __u32 irq;
 };
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/kvm_para.h b/libc/kernel/uapi/asm-mips/asm/kvm_para.h
index e19f7a0..825c12a 100644
--- a/libc/kernel/uapi/asm-mips/asm/kvm_para.h
+++ b/libc/kernel/uapi/asm-mips/asm/kvm_para.h
@@ -16,4 +16,6 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#include <asm-generic/kvm_para.h>
+#ifndef _UAPI_ASM_MIPS_KVM_PARA_H
+#define _UAPI_ASM_MIPS_KVM_PARA_H
+#endif
diff --git a/libc/kernel/uapi/asm-mips/asm/msgbuf.h b/libc/kernel/uapi/asm-mips/asm/msgbuf.h
index efae148..3e700b3 100644
--- a/libc/kernel/uapi/asm-mips/asm/msgbuf.h
+++ b/libc/kernel/uapi/asm-mips/asm/msgbuf.h
@@ -19,31 +19,31 @@
 #ifndef _ASM_MSGBUF_H
 #define _ASM_MSGBUF_H
 struct msqid64_ds {
- struct ipc64_perm msg_perm;
+  struct ipc64_perm msg_perm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t msg_stime;
+  __kernel_time_t msg_stime;
 #ifndef __mips64
- unsigned long __unused1;
+  unsigned long __unused1;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t msg_rtime;
+  __kernel_time_t msg_rtime;
 #ifndef __mips64
- unsigned long __unused2;
+  unsigned long __unused2;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t msg_ctime;
+  __kernel_time_t msg_ctime;
 #ifndef __mips64
- unsigned long __unused3;
+  unsigned long __unused3;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long msg_cbytes;
- unsigned long msg_qnum;
- unsigned long msg_qbytes;
- __kernel_pid_t msg_lspid;
+  unsigned long msg_cbytes;
+  unsigned long msg_qnum;
+  unsigned long msg_qbytes;
+  __kernel_pid_t msg_lspid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t msg_lrpid;
- unsigned long __unused4;
- unsigned long __unused5;
+  __kernel_pid_t msg_lrpid;
+  unsigned long __unused4;
+  unsigned long __unused5;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/posix_types.h b/libc/kernel/uapi/asm-mips/asm/posix_types.h
index e85821c..25a9e3c 100644
--- a/libc/kernel/uapi/asm-mips/asm/posix_types.h
+++ b/libc/kernel/uapi/asm-mips/asm/posix_types.h
@@ -24,7 +24,7 @@
 #define __kernel_daddr_t __kernel_daddr_t
 #if _MIPS_SZLONG == 32
 typedef struct {
- long val[2];
+  long val[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __kernel_fsid_t;
 #define __kernel_fsid_t __kernel_fsid_t
diff --git a/libc/kernel/uapi/asm-mips/asm/ptrace.h b/libc/kernel/uapi/asm-mips/asm/ptrace.h
index 0296cf3..48010e5 100644
--- a/libc/kernel/uapi/asm-mips/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-mips/asm/ptrace.h
@@ -18,76 +18,77 @@
  ****************************************************************************/
 #ifndef _UAPI_ASM_PTRACE_H
 #define _UAPI_ASM_PTRACE_H
+#include <linux/types.h>
 #define FPR_BASE 32
-#define PC 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PC 64
 #define CAUSE 65
 #define BADVADDR 66
 #define MMHI 67
-#define MMLO 68
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMLO 68
 #define FPC_CSR 69
 #define FPC_EIR 70
 #define DSP_BASE 71
-#define DSP_CONTROL 77
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DSP_CONTROL 77
 #define ACX 78
 struct pt_regs {
- unsigned long regs[32];
- unsigned long cp0_status;
+  __u64 regs[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long hi;
- unsigned long lo;
- unsigned long cp0_badvaddr;
- unsigned long cp0_cause;
+  __u64 lo;
+  __u64 hi;
+  __u64 cp0_epc;
+  __u64 cp0_badvaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long cp0_epc;
-} __attribute__ ((aligned (8)));
+  __u64 cp0_status;
+  __u64 cp0_cause;
+} __attribute__((aligned(8)));
 #define PTRACE_GETREGS 12
-#define PTRACE_SETREGS 13
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTRACE_SETREGS 13
 #define PTRACE_GETFPREGS 14
 #define PTRACE_SETFPREGS 15
 #define PTRACE_OLDSETOPTIONS 21
-#define PTRACE_GET_THREAD_AREA 25
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTRACE_GET_THREAD_AREA 25
 #define PTRACE_SET_THREAD_AREA 26
 #define PTRACE_PEEKTEXT_3264 0xc0
 #define PTRACE_PEEKDATA_3264 0xc1
-#define PTRACE_POKETEXT_3264 0xc2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTRACE_POKETEXT_3264 0xc2
 #define PTRACE_POKEDATA_3264 0xc3
 #define PTRACE_GET_THREAD_AREA_3264 0xc4
 enum pt_watch_style {
- pt_watch_style_mips32,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- pt_watch_style_mips64
+  pt_watch_style_mips32,
+  pt_watch_style_mips64
 };
 struct mips32_watch_regs {
- unsigned int watchlo[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short watchhi[8];
- unsigned short watch_masks[8];
- unsigned int num_valid;
+  unsigned int watchlo[8];
+  unsigned short watchhi[8];
+  unsigned short watch_masks[8];
+  unsigned int num_valid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((aligned(8)));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mips64_watch_regs {
- unsigned long long watchlo[8];
- unsigned short watchhi[8];
- unsigned short watch_masks[8];
+  unsigned long long watchlo[8];
+  unsigned short watchhi[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int num_valid;
+  unsigned short watch_masks[8];
+  unsigned int num_valid;
 } __attribute__((aligned(8)));
 struct pt_watch_regs {
- enum pt_watch_style style;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct mips32_watch_regs mips32;
- struct mips64_watch_regs mips64;
- };
+  enum pt_watch_style style;
+  union {
+    struct mips32_watch_regs mips32;
+    struct mips64_watch_regs mips64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  };
 };
 #define PTRACE_GET_WATCH_REGS 0xd0
 #define PTRACE_SET_WATCH_REGS 0xd1
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/asm-mips/asm/reg.h b/libc/kernel/uapi/asm-mips/asm/reg.h
new file mode 100644
index 0000000..c0f003e
--- /dev/null
+++ b/libc/kernel/uapi/asm-mips/asm/reg.h
@@ -0,0 +1,223 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_ASM_MIPS_REG_H
+#define __UAPI_ASM_MIPS_REG_H
+#define MIPS32_EF_R0 6
+#define MIPS32_EF_R1 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R2 8
+#define MIPS32_EF_R3 9
+#define MIPS32_EF_R4 10
+#define MIPS32_EF_R5 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R6 12
+#define MIPS32_EF_R7 13
+#define MIPS32_EF_R8 14
+#define MIPS32_EF_R9 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R10 16
+#define MIPS32_EF_R11 17
+#define MIPS32_EF_R12 18
+#define MIPS32_EF_R13 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R14 20
+#define MIPS32_EF_R15 21
+#define MIPS32_EF_R16 22
+#define MIPS32_EF_R17 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R18 24
+#define MIPS32_EF_R19 25
+#define MIPS32_EF_R20 26
+#define MIPS32_EF_R21 27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R22 28
+#define MIPS32_EF_R23 29
+#define MIPS32_EF_R24 30
+#define MIPS32_EF_R25 31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R26 32
+#define MIPS32_EF_R27 33
+#define MIPS32_EF_R28 34
+#define MIPS32_EF_R29 35
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_R30 36
+#define MIPS32_EF_R31 37
+#define MIPS32_EF_LO 38
+#define MIPS32_EF_HI 39
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_CP0_EPC 40
+#define MIPS32_EF_CP0_BADVADDR 41
+#define MIPS32_EF_CP0_STATUS 42
+#define MIPS32_EF_CP0_CAUSE 43
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS32_EF_UNUSED0 44
+#define MIPS32_EF_SIZE 180
+#define MIPS64_EF_R0 0
+#define MIPS64_EF_R1 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R2 2
+#define MIPS64_EF_R3 3
+#define MIPS64_EF_R4 4
+#define MIPS64_EF_R5 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R6 6
+#define MIPS64_EF_R7 7
+#define MIPS64_EF_R8 8
+#define MIPS64_EF_R9 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R10 10
+#define MIPS64_EF_R11 11
+#define MIPS64_EF_R12 12
+#define MIPS64_EF_R13 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R14 14
+#define MIPS64_EF_R15 15
+#define MIPS64_EF_R16 16
+#define MIPS64_EF_R17 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R18 18
+#define MIPS64_EF_R19 19
+#define MIPS64_EF_R20 20
+#define MIPS64_EF_R21 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R22 22
+#define MIPS64_EF_R23 23
+#define MIPS64_EF_R24 24
+#define MIPS64_EF_R25 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R26 26
+#define MIPS64_EF_R27 27
+#define MIPS64_EF_R28 28
+#define MIPS64_EF_R29 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_R30 30
+#define MIPS64_EF_R31 31
+#define MIPS64_EF_LO 32
+#define MIPS64_EF_HI 33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_CP0_EPC 34
+#define MIPS64_EF_CP0_BADVADDR 35
+#define MIPS64_EF_CP0_STATUS 36
+#define MIPS64_EF_CP0_CAUSE 37
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS64_EF_SIZE 304
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+#define EF_R0 MIPS32_EF_R0
+#define EF_R1 MIPS32_EF_R1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R2 MIPS32_EF_R2
+#define EF_R3 MIPS32_EF_R3
+#define EF_R4 MIPS32_EF_R4
+#define EF_R5 MIPS32_EF_R5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R6 MIPS32_EF_R6
+#define EF_R7 MIPS32_EF_R7
+#define EF_R8 MIPS32_EF_R8
+#define EF_R9 MIPS32_EF_R9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R10 MIPS32_EF_R10
+#define EF_R11 MIPS32_EF_R11
+#define EF_R12 MIPS32_EF_R12
+#define EF_R13 MIPS32_EF_R13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R14 MIPS32_EF_R14
+#define EF_R15 MIPS32_EF_R15
+#define EF_R16 MIPS32_EF_R16
+#define EF_R17 MIPS32_EF_R17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R18 MIPS32_EF_R18
+#define EF_R19 MIPS32_EF_R19
+#define EF_R20 MIPS32_EF_R20
+#define EF_R21 MIPS32_EF_R21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R22 MIPS32_EF_R22
+#define EF_R23 MIPS32_EF_R23
+#define EF_R24 MIPS32_EF_R24
+#define EF_R25 MIPS32_EF_R25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R26 MIPS32_EF_R26
+#define EF_R27 MIPS32_EF_R27
+#define EF_R28 MIPS32_EF_R28
+#define EF_R29 MIPS32_EF_R29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R30 MIPS32_EF_R30
+#define EF_R31 MIPS32_EF_R31
+#define EF_LO MIPS32_EF_LO
+#define EF_HI MIPS32_EF_HI
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_CP0_EPC MIPS32_EF_CP0_EPC
+#define EF_CP0_BADVADDR MIPS32_EF_CP0_BADVADDR
+#define EF_CP0_STATUS MIPS32_EF_CP0_STATUS
+#define EF_CP0_CAUSE MIPS32_EF_CP0_CAUSE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_UNUSED0 MIPS32_EF_UNUSED0
+#define EF_SIZE MIPS32_EF_SIZE
+#elif _MIPS_SIM==_MIPS_SIM_ABI64||_MIPS_SIM==_MIPS_SIM_NABI32
+#define EF_R0 MIPS64_EF_R0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R1 MIPS64_EF_R1
+#define EF_R2 MIPS64_EF_R2
+#define EF_R3 MIPS64_EF_R3
+#define EF_R4 MIPS64_EF_R4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R5 MIPS64_EF_R5
+#define EF_R6 MIPS64_EF_R6
+#define EF_R7 MIPS64_EF_R7
+#define EF_R8 MIPS64_EF_R8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R9 MIPS64_EF_R9
+#define EF_R10 MIPS64_EF_R10
+#define EF_R11 MIPS64_EF_R11
+#define EF_R12 MIPS64_EF_R12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R13 MIPS64_EF_R13
+#define EF_R14 MIPS64_EF_R14
+#define EF_R15 MIPS64_EF_R15
+#define EF_R16 MIPS64_EF_R16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R17 MIPS64_EF_R17
+#define EF_R18 MIPS64_EF_R18
+#define EF_R19 MIPS64_EF_R19
+#define EF_R20 MIPS64_EF_R20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R21 MIPS64_EF_R21
+#define EF_R22 MIPS64_EF_R22
+#define EF_R23 MIPS64_EF_R23
+#define EF_R24 MIPS64_EF_R24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R25 MIPS64_EF_R25
+#define EF_R26 MIPS64_EF_R26
+#define EF_R27 MIPS64_EF_R27
+#define EF_R28 MIPS64_EF_R28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R29 MIPS64_EF_R29
+#define EF_R30 MIPS64_EF_R30
+#define EF_R31 MIPS64_EF_R31
+#define EF_LO MIPS64_EF_LO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_HI MIPS64_EF_HI
+#define EF_CP0_EPC MIPS64_EF_CP0_EPC
+#define EF_CP0_BADVADDR MIPS64_EF_CP0_BADVADDR
+#define EF_CP0_STATUS MIPS64_EF_CP0_STATUS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_CP0_CAUSE MIPS64_EF_CP0_CAUSE
+#define EF_SIZE MIPS64_EF_SIZE
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/sembuf.h b/libc/kernel/uapi/asm-mips/asm/sembuf.h
index b524f68..0a8d4d9 100644
--- a/libc/kernel/uapi/asm-mips/asm/sembuf.h
+++ b/libc/kernel/uapi/asm-mips/asm/sembuf.h
@@ -19,13 +19,13 @@
 #ifndef _ASM_SEMBUF_H
 #define _ASM_SEMBUF_H
 struct semid64_ds {
- struct ipc64_perm sem_perm;
+  struct ipc64_perm sem_perm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t sem_otime;
- __kernel_time_t sem_ctime;
- unsigned long sem_nsems;
- unsigned long __unused1;
+  __kernel_time_t sem_otime;
+  __kernel_time_t sem_ctime;
+  unsigned long sem_nsems;
+  unsigned long __unused1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __unused2;
+  unsigned long __unused2;
 };
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/sgidefs.h b/libc/kernel/uapi/asm-mips/asm/sgidefs.h
index d63f15e..e8b5f6f 100644
--- a/libc/kernel/uapi/asm-mips/asm/sgidefs.h
+++ b/libc/kernel/uapi/asm-mips/asm/sgidefs.h
@@ -19,7 +19,7 @@
 #ifndef __ASM_SGIDEFS_H
 #define __ASM_SGIDEFS_H
 #ifndef __linux__
-#error Use a Linux compiler or give up.
+#error Use a Linux compiler or give up .
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define _MIPS_ISA_MIPS1 1
diff --git a/libc/kernel/uapi/asm-mips/asm/shmbuf.h b/libc/kernel/uapi/asm-mips/asm/shmbuf.h
index 3f7d0b1..8d41650 100644
--- a/libc/kernel/uapi/asm-mips/asm/shmbuf.h
+++ b/libc/kernel/uapi/asm-mips/asm/shmbuf.h
@@ -19,32 +19,32 @@
 #ifndef _ASM_SHMBUF_H
 #define _ASM_SHMBUF_H
 struct shmid64_ds {
- struct ipc64_perm shm_perm;
+  struct ipc64_perm shm_perm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t shm_segsz;
- __kernel_time_t shm_atime;
- __kernel_time_t shm_dtime;
- __kernel_time_t shm_ctime;
+  size_t shm_segsz;
+  __kernel_time_t shm_atime;
+  __kernel_time_t shm_dtime;
+  __kernel_time_t shm_ctime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t shm_cpid;
- __kernel_pid_t shm_lpid;
- unsigned long shm_nattch;
- unsigned long __unused1;
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __unused1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __unused2;
+  unsigned long __unused2;
 };
 struct shminfo64 {
- unsigned long shmmax;
+  unsigned long shmmax;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long shmmin;
- unsigned long shmmni;
- unsigned long shmseg;
- unsigned long shmall;
+  unsigned long shmmin;
+  unsigned long shmmni;
+  unsigned long shmseg;
+  unsigned long shmall;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long __unused1;
- unsigned long __unused2;
- unsigned long __unused3;
- unsigned long __unused4;
+  unsigned long __unused1;
+  unsigned long __unused2;
+  unsigned long __unused3;
+  unsigned long __unused4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/sigcontext.h b/libc/kernel/uapi/asm-mips/asm/sigcontext.h
index 8a877db..59870bc 100644
--- a/libc/kernel/uapi/asm-mips/asm/sigcontext.h
+++ b/libc/kernel/uapi/asm-mips/asm/sigcontext.h
@@ -23,28 +23,28 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if _MIPS_SIM == _MIPS_SIM_ABI32
 struct sigcontext {
- unsigned int sc_regmask;
- unsigned int sc_status;
+  unsigned int sc_regmask;
+  unsigned int sc_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long long sc_pc;
- unsigned long long sc_regs[32];
- unsigned long long sc_fpregs[32];
- unsigned int sc_acx;
+  unsigned long long sc_pc;
+  unsigned long long sc_regs[32];
+  unsigned long long sc_fpregs[32];
+  unsigned int sc_acx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int sc_fpc_csr;
- unsigned int sc_fpc_eir;
- unsigned int sc_used_math;
- unsigned int sc_dsp;
+  unsigned int sc_fpc_csr;
+  unsigned int sc_fpc_eir;
+  unsigned int sc_used_math;
+  unsigned int sc_dsp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long long sc_mdhi;
- unsigned long long sc_mdlo;
- unsigned long sc_hi1;
- unsigned long sc_lo1;
+  unsigned long long sc_mdhi;
+  unsigned long long sc_mdlo;
+  unsigned long sc_hi1;
+  unsigned long sc_lo1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long sc_hi2;
- unsigned long sc_lo2;
- unsigned long sc_hi3;
- unsigned long sc_lo3;
+  unsigned long sc_hi2;
+  unsigned long sc_lo2;
+  unsigned long sc_hi3;
+  unsigned long sc_lo3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
@@ -52,24 +52,24 @@
 #include <linux/posix_types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sigcontext {
- __u64 sc_regs[32];
- __u64 sc_fpregs[32];
- __u64 sc_mdhi;
+  __u64 sc_regs[32];
+  __u64 sc_fpregs[32];
+  __u64 sc_mdhi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sc_hi1;
- __u64 sc_hi2;
- __u64 sc_hi3;
- __u64 sc_mdlo;
+  __u64 sc_hi1;
+  __u64 sc_hi2;
+  __u64 sc_hi3;
+  __u64 sc_mdlo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sc_lo1;
- __u64 sc_lo2;
- __u64 sc_lo3;
- __u64 sc_pc;
+  __u64 sc_lo1;
+  __u64 sc_lo2;
+  __u64 sc_lo3;
+  __u64 sc_pc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sc_fpc_csr;
- __u32 sc_used_math;
- __u32 sc_dsp;
- __u32 sc_reserved;
+  __u32 sc_fpc_csr;
+  __u32 sc_used_math;
+  __u32 sc_dsp;
+  __u32 sc_reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/siginfo.h b/libc/kernel/uapi/asm-mips/asm/siginfo.h
index 599c875..2f95d17 100644
--- a/libc/kernel/uapi/asm-mips/asm/siginfo.h
+++ b/libc/kernel/uapi/asm-mips/asm/siginfo.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_ASM_SIGINFO_H
 #define _UAPI_ASM_SIGINFO_H
-#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int))
+#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2 * sizeof(int))
 #undef __ARCH_SI_TRAPNO
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HAVE_ARCH_SIGINFO_T
@@ -27,7 +27,7 @@
 #if _MIPS_SZLONG == 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
-#elif _MIPS_SZLONG == 64
+#elif _MIPS_SZLONG==64
 #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
 #else
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -37,78 +37,78 @@
 #include <asm-generic/siginfo.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct siginfo {
- int si_signo;
- int si_code;
- int si_errno;
+  int si_signo;
+  int si_code;
+  int si_errno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
- union {
- int _pad[SI_PAD_SIZE];
- struct {
+  int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
+  union {
+    int _pad[SI_PAD_SIZE];
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- pid_t _pid;
- __ARCH_SI_UID_T _uid;
- } _kill;
- struct {
+      pid_t _pid;
+      __ARCH_SI_UID_T _uid;
+    } _kill;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- timer_t _tid;
- int _overrun;
- char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
- sigval_t _sigval;
+      timer_t _tid;
+      int _overrun;
+      char _pad[sizeof(__ARCH_SI_UID_T) - sizeof(int)];
+      sigval_t _sigval;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int _sys_private;
- } _timer;
- struct {
- pid_t _pid;
+      int _sys_private;
+    } _timer;
+    struct {
+      pid_t _pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __ARCH_SI_UID_T _uid;
- sigval_t _sigval;
- } _rt;
- struct {
+      __ARCH_SI_UID_T _uid;
+      sigval_t _sigval;
+    } _rt;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- pid_t _pid;
- __ARCH_SI_UID_T _uid;
- int _status;
- clock_t _utime;
+      pid_t _pid;
+      __ARCH_SI_UID_T _uid;
+      int _status;
+      clock_t _utime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- clock_t _stime;
- } _sigchld;
- struct {
- pid_t _pid;
+      clock_t _stime;
+    } _sigchld;
+    struct {
+      pid_t _pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- clock_t _utime;
- int _status;
- clock_t _stime;
- } _irix_sigchld;
+      clock_t _utime;
+      int _status;
+      clock_t _stime;
+    } _irix_sigchld;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- void __user *_addr;
+    struct {
+      void __user * _addr;
 #ifdef __ARCH_SI_TRAPNO
- int _trapno;
+      int _trapno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- short _addr_lsb;
- } _sigfault;
- struct {
+      short _addr_lsb;
+    } _sigfault;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __ARCH_SI_BAND_T _band;
- int _fd;
- } _sigpoll;
- struct {
+      __ARCH_SI_BAND_T _band;
+      int _fd;
+    } _sigpoll;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *_call_addr;
- int _syscall;
- unsigned int _arch;
- } _sigsys;
+      void __user * _call_addr;
+      int _syscall;
+      unsigned int _arch;
+    } _sigsys;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } _sifields;
+  } _sifields;
 } siginfo_t;
 #undef SI_ASYNCIO
 #undef SI_TIMER
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef SI_MESGQ
-#define SI_ASYNCIO -2
-#define SI_TIMER __SI_CODE(__SI_TIMER, -3)
-#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4)
+#define SI_ASYNCIO - 2
+#define SI_TIMER __SI_CODE(__SI_TIMER, - 3)
+#define SI_MESGQ __SI_CODE(__SI_MESGQ, - 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/signal.h b/libc/kernel/uapi/asm-mips/asm/signal.h
index b774a66..ba88b70 100644
--- a/libc/kernel/uapi/asm-mips/asm/signal.h
+++ b/libc/kernel/uapi/asm-mips/asm/signal.h
@@ -24,7 +24,7 @@
 #define _NSIG_BPW (sizeof(unsigned long) * 8)
 #define _NSIG_WORDS (_KERNEL__NSIG / _NSIG_BPW)
 typedef struct {
- unsigned long sig[_NSIG_WORDS];
+  unsigned long sig[_NSIG_WORDS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } sigset_t;
 typedef unsigned long old_sigset_t;
@@ -93,16 +93,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/signal-defs.h>
 struct sigaction {
- unsigned int sa_flags;
- __sighandler_t sa_handler;
+  unsigned int sa_flags;
+  __sighandler_t sa_handler;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- sigset_t sa_mask;
+  sigset_t sa_mask;
 };
 typedef struct sigaltstack {
- void __user *ss_sp;
+  void __user * ss_sp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t ss_size;
- int ss_flags;
+  size_t ss_size;
+  int ss_flags;
 } stack_t;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/stat.h b/libc/kernel/uapi/asm-mips/asm/stat.h
index a71eecb..cf05e5c 100644
--- a/libc/kernel/uapi/asm-mips/asm/stat.h
+++ b/libc/kernel/uapi/asm-mips/asm/stat.h
@@ -23,86 +23,86 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32
 struct stat {
- unsigned st_dev;
- long st_pad1[3];
+  unsigned st_dev;
+  long st_pad1[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ino_t st_ino;
- mode_t st_mode;
- __u32 st_nlink;
- uid_t st_uid;
+  ino_t st_ino;
+  mode_t st_mode;
+  __u32 st_nlink;
+  uid_t st_uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- gid_t st_gid;
- unsigned st_rdev;
- long st_pad2[2];
- __kernel_off_t st_size;
+  gid_t st_gid;
+  unsigned st_rdev;
+  long st_pad2[2];
+  __kernel_off_t st_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long st_pad3;
- time_t st_atime;
- long st_atime_nsec;
- time_t st_mtime;
+  long st_pad3;
+  time_t st_atime;
+  long st_atime_nsec;
+  time_t st_mtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long st_mtime_nsec;
- time_t st_ctime;
- long st_ctime_nsec;
- long st_blksize;
+  long st_mtime_nsec;
+  time_t st_ctime;
+  long st_ctime_nsec;
+  long st_blksize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long st_blocks;
- long st_pad4[14];
+  long st_blocks;
+  long st_pad4[14];
 };
 struct stat64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_dev;
- unsigned long st_pad0[3];
- unsigned long long st_ino;
- mode_t st_mode;
+  unsigned long st_dev;
+  unsigned long st_pad0[3];
+  unsigned long long st_ino;
+  mode_t st_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 st_nlink;
- uid_t st_uid;
- gid_t st_gid;
- unsigned long st_rdev;
+  __u32 st_nlink;
+  uid_t st_uid;
+  gid_t st_gid;
+  unsigned long st_rdev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_pad1[3];
- long long st_size;
- time_t st_atime;
- unsigned long st_atime_nsec;
+  unsigned long st_pad1[3];
+  long long st_size;
+  time_t st_atime;
+  unsigned long st_atime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- time_t st_mtime;
- unsigned long st_mtime_nsec;
- time_t st_ctime;
- unsigned long st_ctime_nsec;
+  time_t st_mtime;
+  unsigned long st_mtime_nsec;
+  time_t st_ctime;
+  unsigned long st_ctime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_blksize;
- unsigned long st_pad2;
- long long st_blocks;
+  unsigned long st_blksize;
+  unsigned long st_pad2;
+  long long st_blocks;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #if _MIPS_SIM == _MIPS_SIM_ABI64
 struct stat {
- unsigned int st_dev;
+  unsigned int st_dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_pad0[3];
- unsigned long st_ino;
- mode_t st_mode;
- __u32 st_nlink;
+  unsigned int st_pad0[3];
+  unsigned long st_ino;
+  mode_t st_mode;
+  __u32 st_nlink;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uid_t st_uid;
- gid_t st_gid;
- unsigned int st_rdev;
- unsigned int st_pad1[3];
+  uid_t st_uid;
+  gid_t st_gid;
+  unsigned int st_rdev;
+  unsigned int st_pad1[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_off_t st_size;
- unsigned int st_atime;
- unsigned int st_atime_nsec;
- unsigned int st_mtime;
+  __kernel_off_t st_size;
+  unsigned int st_atime;
+  unsigned int st_atime_nsec;
+  unsigned int st_mtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_mtime_nsec;
- unsigned int st_ctime;
- unsigned int st_ctime_nsec;
- unsigned int st_blksize;
+  unsigned int st_mtime_nsec;
+  unsigned int st_ctime;
+  unsigned int st_ctime_nsec;
+  unsigned int st_blksize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_pad2;
- unsigned long st_blocks;
+  unsigned int st_pad2;
+  unsigned long st_blocks;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/statfs.h b/libc/kernel/uapi/asm-mips/asm/statfs.h
index 390b751..36cc3d5 100644
--- a/libc/kernel/uapi/asm-mips/asm/statfs.h
+++ b/libc/kernel/uapi/asm-mips/asm/statfs.h
@@ -22,81 +22,81 @@
 #include <asm/sgidefs.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct statfs {
- long f_type;
+  long f_type;
 #define f_fstyp f_type
- long f_bsize;
+  long f_bsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long f_frsize;
- long f_blocks;
- long f_bfree;
- long f_files;
+  long f_frsize;
+  long f_blocks;
+  long f_bfree;
+  long f_files;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long f_ffree;
- long f_bavail;
- __kernel_fsid_t f_fsid;
- long f_namelen;
+  long f_ffree;
+  long f_bavail;
+  __kernel_fsid_t f_fsid;
+  long f_namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long f_flags;
- long f_spare[5];
+  long f_flags;
+  long f_spare[5];
 };
 #if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct statfs64 {
- __u32 f_type;
- __u32 f_bsize;
- __u32 f_frsize;
+  __u32 f_type;
+  __u32 f_bsize;
+  __u32 f_frsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __pad;
- __u64 f_blocks;
- __u64 f_bfree;
- __u64 f_files;
+  __u32 __pad;
+  __u64 f_blocks;
+  __u64 f_bfree;
+  __u64 f_files;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 f_ffree;
- __u64 f_bavail;
- __kernel_fsid_t f_fsid;
- __u32 f_namelen;
+  __u64 f_ffree;
+  __u64 f_bavail;
+  __kernel_fsid_t f_fsid;
+  __u32 f_namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 f_flags;
- __u32 f_spare[5];
+  __u32 f_flags;
+  __u32 f_spare[5];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if _MIPS_SIM == _MIPS_SIM_ABI64
 struct statfs64 {
- long f_type;
- long f_bsize;
+  long f_type;
+  long f_bsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long f_frsize;
- long f_blocks;
- long f_bfree;
- long f_files;
+  long f_frsize;
+  long f_blocks;
+  long f_bfree;
+  long f_files;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long f_ffree;
- long f_bavail;
- __kernel_fsid_t f_fsid;
- long f_namelen;
+  long f_ffree;
+  long f_bavail;
+  __kernel_fsid_t f_fsid;
+  long f_namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long f_flags;
- long f_spare[5];
+  long f_flags;
+  long f_spare[5];
 };
 struct compat_statfs64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 f_type;
- __u32 f_bsize;
- __u32 f_frsize;
- __u32 __pad;
+  __u32 f_type;
+  __u32 f_bsize;
+  __u32 f_frsize;
+  __u32 __pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 f_blocks;
- __u64 f_bfree;
- __u64 f_files;
- __u64 f_ffree;
+  __u64 f_blocks;
+  __u64 f_bfree;
+  __u64 f_files;
+  __u64 f_ffree;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 f_bavail;
- __kernel_fsid_t f_fsid;
- __u32 f_namelen;
- __u32 f_flags;
+  __u64 f_bavail;
+  __kernel_fsid_t f_fsid;
+  __u32 f_namelen;
+  __u32 f_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 f_spare[5];
+  __u32 f_spare[5];
 };
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/swab.h b/libc/kernel/uapi/asm-mips/asm/swab.h
index 41660d0..0629d36 100644
--- a/libc/kernel/uapi/asm-mips/asm/swab.h
+++ b/libc/kernel/uapi/asm-mips/asm/swab.h
@@ -22,7 +22,7 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __SWAB_64_THRU_32__
-#if defined(__mips_isa_rev) && __mips_isa_rev >= 2
+#if defined(__mips_isa_rev) && __mips_isa_rev >= 2 || defined(_MIPS_ARCH_LOONGSON3A)
 #define __arch_swab16 __arch_swab16
 #define __arch_swab32 __arch_swab32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/termbits.h b/libc/kernel/uapi/asm-mips/asm/termbits.h
index 56cab21..f8f8612 100644
--- a/libc/kernel/uapi/asm-mips/asm/termbits.h
+++ b/libc/kernel/uapi/asm-mips/asm/termbits.h
@@ -26,38 +26,38 @@
 #define NCCS 23
 struct termios {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tcflag_t c_iflag;
- tcflag_t c_oflag;
- tcflag_t c_cflag;
- tcflag_t c_lflag;
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cc_t c_line;
- cc_t c_cc[NCCS];
+  cc_t c_line;
+  cc_t c_cc[NCCS];
 };
 struct termios2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tcflag_t c_iflag;
- tcflag_t c_oflag;
- tcflag_t c_cflag;
- tcflag_t c_lflag;
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cc_t c_line;
- cc_t c_cc[NCCS];
- speed_t c_ispeed;
- speed_t c_ospeed;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t c_ispeed;
+  speed_t c_ospeed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ktermios {
- tcflag_t c_iflag;
- tcflag_t c_oflag;
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tcflag_t c_cflag;
- tcflag_t c_lflag;
- cc_t c_line;
- cc_t c_cc[NCCS];
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- speed_t c_ispeed;
- speed_t c_ospeed;
+  speed_t c_ispeed;
+  speed_t c_ospeed;
 };
 #define VINTR 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/termios.h b/libc/kernel/uapi/asm-mips/asm/termios.h
index 16d822a..5174254 100644
--- a/libc/kernel/uapi/asm-mips/asm/termios.h
+++ b/libc/kernel/uapi/asm-mips/asm/termios.h
@@ -23,51 +23,51 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/ioctls.h>
 struct sgttyb {
- char sg_ispeed;
- char sg_ospeed;
+  char sg_ispeed;
+  char sg_ospeed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char sg_erase;
- char sg_kill;
- int sg_flags;
+  char sg_erase;
+  char sg_kill;
+  int sg_flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tchars {
- char t_intrc;
- char t_quitc;
- char t_startc;
+  char t_intrc;
+  char t_quitc;
+  char t_startc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char t_stopc;
- char t_eofc;
- char t_brkc;
+  char t_stopc;
+  char t_eofc;
+  char t_brkc;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ltchars {
- char t_suspc;
- char t_dsuspc;
- char t_rprntc;
+  char t_suspc;
+  char t_dsuspc;
+  char t_rprntc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char t_flushc;
- char t_werasc;
- char t_lnextc;
+  char t_flushc;
+  char t_werasc;
+  char t_lnextc;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct winsize {
- unsigned short ws_row;
- unsigned short ws_col;
- unsigned short ws_xpixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short ws_ypixel;
+  unsigned short ws_ypixel;
 };
 #define NCC 8
 struct termio {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short c_iflag;
- unsigned short c_oflag;
- unsigned short c_cflag;
- unsigned short c_lflag;
+  unsigned short c_iflag;
+  unsigned short c_oflag;
+  unsigned short c_cflag;
+  unsigned short c_lflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char c_line;
- unsigned char c_cc[NCCS];
+  char c_line;
+  unsigned char c_cc[NCCS];
 };
 #define TIOCM_LE 0x001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/types.h b/libc/kernel/uapi/asm-mips/asm/types.h
index 45fea6c..9ef7b7c 100644
--- a/libc/kernel/uapi/asm-mips/asm/types.h
+++ b/libc/kernel/uapi/asm-mips/asm/types.h
@@ -18,11 +18,6 @@
  ****************************************************************************/
 #ifndef _UAPI_ASM_TYPES_H
 #define _UAPI_ASM_TYPES_H
-#if _MIPS_SZLONG == 64
-#include <asm-generic/int-l64.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#else
 #include <asm-generic/int-ll64.h>
 #endif
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd.h b/libc/kernel/uapi/asm-mips/asm/unistd.h
index 37c3da1..04a45bf 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd.h
@@ -459,805 +459,823 @@
 #define __NR_finit_module (__NR_Linux + 348)
 #define __NR_sched_setattr (__NR_Linux + 349)
 #define __NR_sched_getattr (__NR_Linux + 350)
-#define __NR_Linux_syscalls 350
+#define __NR_renameat2 (__NR_Linux + 351)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_seccomp (__NR_Linux + 352)
+#define __NR_getrandom (__NR_Linux + 353)
+#define __NR_memfd_create (__NR_Linux + 354)
+#define __NR_bpf (__NR_Linux + 355)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_Linux_syscalls 355
 #endif
 #define __NR_O32_Linux 4000
-#define __NR_O32_Linux_syscalls 350
-#if _MIPS_SIM == _MIPS_SIM_ABI64
+#define __NR_O32_Linux_syscalls 355
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SIM == _MIPS_SIM_ABI64
 #define __NR_Linux 5000
 #define __NR_read (__NR_Linux + 0)
 #define __NR_write (__NR_Linux + 1)
-#define __NR_open (__NR_Linux + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_open (__NR_Linux + 2)
 #define __NR_close (__NR_Linux + 3)
 #define __NR_stat (__NR_Linux + 4)
 #define __NR_fstat (__NR_Linux + 5)
-#define __NR_lstat (__NR_Linux + 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lstat (__NR_Linux + 6)
 #define __NR_poll (__NR_Linux + 7)
 #define __NR_lseek (__NR_Linux + 8)
 #define __NR_mmap (__NR_Linux + 9)
-#define __NR_mprotect (__NR_Linux + 10)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mprotect (__NR_Linux + 10)
 #define __NR_munmap (__NR_Linux + 11)
 #define __NR_brk (__NR_Linux + 12)
 #define __NR_rt_sigaction (__NR_Linux + 13)
-#define __NR_rt_sigprocmask (__NR_Linux + 14)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigprocmask (__NR_Linux + 14)
 #define __NR_ioctl (__NR_Linux + 15)
 #define __NR_pread64 (__NR_Linux + 16)
 #define __NR_pwrite64 (__NR_Linux + 17)
-#define __NR_readv (__NR_Linux + 18)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_readv (__NR_Linux + 18)
 #define __NR_writev (__NR_Linux + 19)
 #define __NR_access (__NR_Linux + 20)
 #define __NR_pipe (__NR_Linux + 21)
-#define __NR__newselect (__NR_Linux + 22)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR__newselect (__NR_Linux + 22)
 #define __NR_sched_yield (__NR_Linux + 23)
 #define __NR_mremap (__NR_Linux + 24)
 #define __NR_msync (__NR_Linux + 25)
-#define __NR_mincore (__NR_Linux + 26)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mincore (__NR_Linux + 26)
 #define __NR_madvise (__NR_Linux + 27)
 #define __NR_shmget (__NR_Linux + 28)
 #define __NR_shmat (__NR_Linux + 29)
-#define __NR_shmctl (__NR_Linux + 30)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_shmctl (__NR_Linux + 30)
 #define __NR_dup (__NR_Linux + 31)
 #define __NR_dup2 (__NR_Linux + 32)
 #define __NR_pause (__NR_Linux + 33)
-#define __NR_nanosleep (__NR_Linux + 34)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_nanosleep (__NR_Linux + 34)
 #define __NR_getitimer (__NR_Linux + 35)
 #define __NR_setitimer (__NR_Linux + 36)
 #define __NR_alarm (__NR_Linux + 37)
-#define __NR_getpid (__NR_Linux + 38)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getpid (__NR_Linux + 38)
 #define __NR_sendfile (__NR_Linux + 39)
 #define __NR_socket (__NR_Linux + 40)
 #define __NR_connect (__NR_Linux + 41)
-#define __NR_accept (__NR_Linux + 42)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_accept (__NR_Linux + 42)
 #define __NR_sendto (__NR_Linux + 43)
 #define __NR_recvfrom (__NR_Linux + 44)
 #define __NR_sendmsg (__NR_Linux + 45)
-#define __NR_recvmsg (__NR_Linux + 46)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_recvmsg (__NR_Linux + 46)
 #define __NR_shutdown (__NR_Linux + 47)
 #define __NR_bind (__NR_Linux + 48)
 #define __NR_listen (__NR_Linux + 49)
-#define __NR_getsockname (__NR_Linux + 50)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getsockname (__NR_Linux + 50)
 #define __NR_getpeername (__NR_Linux + 51)
 #define __NR_socketpair (__NR_Linux + 52)
 #define __NR_setsockopt (__NR_Linux + 53)
-#define __NR_getsockopt (__NR_Linux + 54)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getsockopt (__NR_Linux + 54)
 #define __NR_clone (__NR_Linux + 55)
 #define __NR_fork (__NR_Linux + 56)
 #define __NR_execve (__NR_Linux + 57)
-#define __NR_exit (__NR_Linux + 58)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_exit (__NR_Linux + 58)
 #define __NR_wait4 (__NR_Linux + 59)
 #define __NR_kill (__NR_Linux + 60)
 #define __NR_uname (__NR_Linux + 61)
-#define __NR_semget (__NR_Linux + 62)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_semget (__NR_Linux + 62)
 #define __NR_semop (__NR_Linux + 63)
 #define __NR_semctl (__NR_Linux + 64)
 #define __NR_shmdt (__NR_Linux + 65)
-#define __NR_msgget (__NR_Linux + 66)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_msgget (__NR_Linux + 66)
 #define __NR_msgsnd (__NR_Linux + 67)
 #define __NR_msgrcv (__NR_Linux + 68)
 #define __NR_msgctl (__NR_Linux + 69)
-#define __NR_fcntl (__NR_Linux + 70)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fcntl (__NR_Linux + 70)
 #define __NR_flock (__NR_Linux + 71)
 #define __NR_fsync (__NR_Linux + 72)
 #define __NR_fdatasync (__NR_Linux + 73)
-#define __NR_truncate (__NR_Linux + 74)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_truncate (__NR_Linux + 74)
 #define __NR_ftruncate (__NR_Linux + 75)
 #define __NR_getdents (__NR_Linux + 76)
 #define __NR_getcwd (__NR_Linux + 77)
-#define __NR_chdir (__NR_Linux + 78)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_chdir (__NR_Linux + 78)
 #define __NR_fchdir (__NR_Linux + 79)
 #define __NR_rename (__NR_Linux + 80)
 #define __NR_mkdir (__NR_Linux + 81)
-#define __NR_rmdir (__NR_Linux + 82)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rmdir (__NR_Linux + 82)
 #define __NR_creat (__NR_Linux + 83)
 #define __NR_link (__NR_Linux + 84)
 #define __NR_unlink (__NR_Linux + 85)
-#define __NR_symlink (__NR_Linux + 86)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_symlink (__NR_Linux + 86)
 #define __NR_readlink (__NR_Linux + 87)
 #define __NR_chmod (__NR_Linux + 88)
 #define __NR_fchmod (__NR_Linux + 89)
-#define __NR_chown (__NR_Linux + 90)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_chown (__NR_Linux + 90)
 #define __NR_fchown (__NR_Linux + 91)
 #define __NR_lchown (__NR_Linux + 92)
 #define __NR_umask (__NR_Linux + 93)
-#define __NR_gettimeofday (__NR_Linux + 94)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_gettimeofday (__NR_Linux + 94)
 #define __NR_getrlimit (__NR_Linux + 95)
 #define __NR_getrusage (__NR_Linux + 96)
 #define __NR_sysinfo (__NR_Linux + 97)
-#define __NR_times (__NR_Linux + 98)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_times (__NR_Linux + 98)
 #define __NR_ptrace (__NR_Linux + 99)
 #define __NR_getuid (__NR_Linux + 100)
 #define __NR_syslog (__NR_Linux + 101)
-#define __NR_getgid (__NR_Linux + 102)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getgid (__NR_Linux + 102)
 #define __NR_setuid (__NR_Linux + 103)
 #define __NR_setgid (__NR_Linux + 104)
 #define __NR_geteuid (__NR_Linux + 105)
-#define __NR_getegid (__NR_Linux + 106)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getegid (__NR_Linux + 106)
 #define __NR_setpgid (__NR_Linux + 107)
 #define __NR_getppid (__NR_Linux + 108)
 #define __NR_getpgrp (__NR_Linux + 109)
-#define __NR_setsid (__NR_Linux + 110)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setsid (__NR_Linux + 110)
 #define __NR_setreuid (__NR_Linux + 111)
 #define __NR_setregid (__NR_Linux + 112)
 #define __NR_getgroups (__NR_Linux + 113)
-#define __NR_setgroups (__NR_Linux + 114)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setgroups (__NR_Linux + 114)
 #define __NR_setresuid (__NR_Linux + 115)
 #define __NR_getresuid (__NR_Linux + 116)
 #define __NR_setresgid (__NR_Linux + 117)
-#define __NR_getresgid (__NR_Linux + 118)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getresgid (__NR_Linux + 118)
 #define __NR_getpgid (__NR_Linux + 119)
 #define __NR_setfsuid (__NR_Linux + 120)
 #define __NR_setfsgid (__NR_Linux + 121)
-#define __NR_getsid (__NR_Linux + 122)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getsid (__NR_Linux + 122)
 #define __NR_capget (__NR_Linux + 123)
 #define __NR_capset (__NR_Linux + 124)
 #define __NR_rt_sigpending (__NR_Linux + 125)
-#define __NR_rt_sigtimedwait (__NR_Linux + 126)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigtimedwait (__NR_Linux + 126)
 #define __NR_rt_sigqueueinfo (__NR_Linux + 127)
 #define __NR_rt_sigsuspend (__NR_Linux + 128)
 #define __NR_sigaltstack (__NR_Linux + 129)
-#define __NR_utime (__NR_Linux + 130)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utime (__NR_Linux + 130)
 #define __NR_mknod (__NR_Linux + 131)
 #define __NR_personality (__NR_Linux + 132)
 #define __NR_ustat (__NR_Linux + 133)
-#define __NR_statfs (__NR_Linux + 134)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_statfs (__NR_Linux + 134)
 #define __NR_fstatfs (__NR_Linux + 135)
 #define __NR_sysfs (__NR_Linux + 136)
 #define __NR_getpriority (__NR_Linux + 137)
-#define __NR_setpriority (__NR_Linux + 138)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setpriority (__NR_Linux + 138)
 #define __NR_sched_setparam (__NR_Linux + 139)
 #define __NR_sched_getparam (__NR_Linux + 140)
 #define __NR_sched_setscheduler (__NR_Linux + 141)
-#define __NR_sched_getscheduler (__NR_Linux + 142)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_getscheduler (__NR_Linux + 142)
 #define __NR_sched_get_priority_max (__NR_Linux + 143)
 #define __NR_sched_get_priority_min (__NR_Linux + 144)
 #define __NR_sched_rr_get_interval (__NR_Linux + 145)
-#define __NR_mlock (__NR_Linux + 146)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mlock (__NR_Linux + 146)
 #define __NR_munlock (__NR_Linux + 147)
 #define __NR_mlockall (__NR_Linux + 148)
 #define __NR_munlockall (__NR_Linux + 149)
-#define __NR_vhangup (__NR_Linux + 150)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_vhangup (__NR_Linux + 150)
 #define __NR_pivot_root (__NR_Linux + 151)
 #define __NR__sysctl (__NR_Linux + 152)
 #define __NR_prctl (__NR_Linux + 153)
-#define __NR_adjtimex (__NR_Linux + 154)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_adjtimex (__NR_Linux + 154)
 #define __NR_setrlimit (__NR_Linux + 155)
 #define __NR_chroot (__NR_Linux + 156)
 #define __NR_sync (__NR_Linux + 157)
-#define __NR_acct (__NR_Linux + 158)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_acct (__NR_Linux + 158)
 #define __NR_settimeofday (__NR_Linux + 159)
 #define __NR_mount (__NR_Linux + 160)
 #define __NR_umount2 (__NR_Linux + 161)
-#define __NR_swapon (__NR_Linux + 162)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_swapon (__NR_Linux + 162)
 #define __NR_swapoff (__NR_Linux + 163)
 #define __NR_reboot (__NR_Linux + 164)
 #define __NR_sethostname (__NR_Linux + 165)
-#define __NR_setdomainname (__NR_Linux + 166)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setdomainname (__NR_Linux + 166)
 #define __NR_create_module (__NR_Linux + 167)
 #define __NR_init_module (__NR_Linux + 168)
 #define __NR_delete_module (__NR_Linux + 169)
-#define __NR_get_kernel_syms (__NR_Linux + 170)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_get_kernel_syms (__NR_Linux + 170)
 #define __NR_query_module (__NR_Linux + 171)
 #define __NR_quotactl (__NR_Linux + 172)
 #define __NR_nfsservctl (__NR_Linux + 173)
-#define __NR_getpmsg (__NR_Linux + 174)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getpmsg (__NR_Linux + 174)
 #define __NR_putpmsg (__NR_Linux + 175)
 #define __NR_afs_syscall (__NR_Linux + 176)
 #define __NR_reserved177 (__NR_Linux + 177)
-#define __NR_gettid (__NR_Linux + 178)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_gettid (__NR_Linux + 178)
 #define __NR_readahead (__NR_Linux + 179)
 #define __NR_setxattr (__NR_Linux + 180)
 #define __NR_lsetxattr (__NR_Linux + 181)
-#define __NR_fsetxattr (__NR_Linux + 182)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fsetxattr (__NR_Linux + 182)
 #define __NR_getxattr (__NR_Linux + 183)
 #define __NR_lgetxattr (__NR_Linux + 184)
 #define __NR_fgetxattr (__NR_Linux + 185)
-#define __NR_listxattr (__NR_Linux + 186)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_listxattr (__NR_Linux + 186)
 #define __NR_llistxattr (__NR_Linux + 187)
 #define __NR_flistxattr (__NR_Linux + 188)
 #define __NR_removexattr (__NR_Linux + 189)
-#define __NR_lremovexattr (__NR_Linux + 190)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lremovexattr (__NR_Linux + 190)
 #define __NR_fremovexattr (__NR_Linux + 191)
 #define __NR_tkill (__NR_Linux + 192)
 #define __NR_reserved193 (__NR_Linux + 193)
-#define __NR_futex (__NR_Linux + 194)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_futex (__NR_Linux + 194)
 #define __NR_sched_setaffinity (__NR_Linux + 195)
 #define __NR_sched_getaffinity (__NR_Linux + 196)
 #define __NR_cacheflush (__NR_Linux + 197)
-#define __NR_cachectl (__NR_Linux + 198)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_cachectl (__NR_Linux + 198)
 #define __NR_sysmips (__NR_Linux + 199)
 #define __NR_io_setup (__NR_Linux + 200)
 #define __NR_io_destroy (__NR_Linux + 201)
-#define __NR_io_getevents (__NR_Linux + 202)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_io_getevents (__NR_Linux + 202)
 #define __NR_io_submit (__NR_Linux + 203)
 #define __NR_io_cancel (__NR_Linux + 204)
 #define __NR_exit_group (__NR_Linux + 205)
-#define __NR_lookup_dcookie (__NR_Linux + 206)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lookup_dcookie (__NR_Linux + 206)
 #define __NR_epoll_create (__NR_Linux + 207)
 #define __NR_epoll_ctl (__NR_Linux + 208)
 #define __NR_epoll_wait (__NR_Linux + 209)
-#define __NR_remap_file_pages (__NR_Linux + 210)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_remap_file_pages (__NR_Linux + 210)
 #define __NR_rt_sigreturn (__NR_Linux + 211)
 #define __NR_set_tid_address (__NR_Linux + 212)
 #define __NR_restart_syscall (__NR_Linux + 213)
-#define __NR_semtimedop (__NR_Linux + 214)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_semtimedop (__NR_Linux + 214)
 #define __NR_fadvise64 (__NR_Linux + 215)
 #define __NR_timer_create (__NR_Linux + 216)
 #define __NR_timer_settime (__NR_Linux + 217)
-#define __NR_timer_gettime (__NR_Linux + 218)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timer_gettime (__NR_Linux + 218)
 #define __NR_timer_getoverrun (__NR_Linux + 219)
 #define __NR_timer_delete (__NR_Linux + 220)
 #define __NR_clock_settime (__NR_Linux + 221)
-#define __NR_clock_gettime (__NR_Linux + 222)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_clock_gettime (__NR_Linux + 222)
 #define __NR_clock_getres (__NR_Linux + 223)
 #define __NR_clock_nanosleep (__NR_Linux + 224)
 #define __NR_tgkill (__NR_Linux + 225)
-#define __NR_utimes (__NR_Linux + 226)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utimes (__NR_Linux + 226)
 #define __NR_mbind (__NR_Linux + 227)
 #define __NR_get_mempolicy (__NR_Linux + 228)
 #define __NR_set_mempolicy (__NR_Linux + 229)
-#define __NR_mq_open (__NR_Linux + 230)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_open (__NR_Linux + 230)
 #define __NR_mq_unlink (__NR_Linux + 231)
 #define __NR_mq_timedsend (__NR_Linux + 232)
 #define __NR_mq_timedreceive (__NR_Linux + 233)
-#define __NR_mq_notify (__NR_Linux + 234)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_notify (__NR_Linux + 234)
 #define __NR_mq_getsetattr (__NR_Linux + 235)
 #define __NR_vserver (__NR_Linux + 236)
 #define __NR_waitid (__NR_Linux + 237)
-#define __NR_add_key (__NR_Linux + 239)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_add_key (__NR_Linux + 239)
 #define __NR_request_key (__NR_Linux + 240)
 #define __NR_keyctl (__NR_Linux + 241)
 #define __NR_set_thread_area (__NR_Linux + 242)
-#define __NR_inotify_init (__NR_Linux + 243)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_inotify_init (__NR_Linux + 243)
 #define __NR_inotify_add_watch (__NR_Linux + 244)
 #define __NR_inotify_rm_watch (__NR_Linux + 245)
 #define __NR_migrate_pages (__NR_Linux + 246)
-#define __NR_openat (__NR_Linux + 247)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_openat (__NR_Linux + 247)
 #define __NR_mkdirat (__NR_Linux + 248)
 #define __NR_mknodat (__NR_Linux + 249)
 #define __NR_fchownat (__NR_Linux + 250)
-#define __NR_futimesat (__NR_Linux + 251)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_futimesat (__NR_Linux + 251)
 #define __NR_newfstatat (__NR_Linux + 252)
 #define __NR_unlinkat (__NR_Linux + 253)
 #define __NR_renameat (__NR_Linux + 254)
-#define __NR_linkat (__NR_Linux + 255)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_linkat (__NR_Linux + 255)
 #define __NR_symlinkat (__NR_Linux + 256)
 #define __NR_readlinkat (__NR_Linux + 257)
 #define __NR_fchmodat (__NR_Linux + 258)
-#define __NR_faccessat (__NR_Linux + 259)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_faccessat (__NR_Linux + 259)
 #define __NR_pselect6 (__NR_Linux + 260)
 #define __NR_ppoll (__NR_Linux + 261)
 #define __NR_unshare (__NR_Linux + 262)
-#define __NR_splice (__NR_Linux + 263)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_splice (__NR_Linux + 263)
 #define __NR_sync_file_range (__NR_Linux + 264)
 #define __NR_tee (__NR_Linux + 265)
 #define __NR_vmsplice (__NR_Linux + 266)
-#define __NR_move_pages (__NR_Linux + 267)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_move_pages (__NR_Linux + 267)
 #define __NR_set_robust_list (__NR_Linux + 268)
 #define __NR_get_robust_list (__NR_Linux + 269)
 #define __NR_kexec_load (__NR_Linux + 270)
-#define __NR_getcpu (__NR_Linux + 271)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getcpu (__NR_Linux + 271)
 #define __NR_epoll_pwait (__NR_Linux + 272)
 #define __NR_ioprio_set (__NR_Linux + 273)
 #define __NR_ioprio_get (__NR_Linux + 274)
-#define __NR_utimensat (__NR_Linux + 275)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utimensat (__NR_Linux + 275)
 #define __NR_signalfd (__NR_Linux + 276)
 #define __NR_timerfd (__NR_Linux + 277)
 #define __NR_eventfd (__NR_Linux + 278)
-#define __NR_fallocate (__NR_Linux + 279)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fallocate (__NR_Linux + 279)
 #define __NR_timerfd_create (__NR_Linux + 280)
 #define __NR_timerfd_gettime (__NR_Linux + 281)
 #define __NR_timerfd_settime (__NR_Linux + 282)
-#define __NR_signalfd4 (__NR_Linux + 283)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_signalfd4 (__NR_Linux + 283)
 #define __NR_eventfd2 (__NR_Linux + 284)
 #define __NR_epoll_create1 (__NR_Linux + 285)
 #define __NR_dup3 (__NR_Linux + 286)
-#define __NR_pipe2 (__NR_Linux + 287)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_pipe2 (__NR_Linux + 287)
 #define __NR_inotify_init1 (__NR_Linux + 288)
 #define __NR_preadv (__NR_Linux + 289)
 #define __NR_pwritev (__NR_Linux + 290)
-#define __NR_rt_tgsigqueueinfo (__NR_Linux + 291)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_tgsigqueueinfo (__NR_Linux + 291)
 #define __NR_perf_event_open (__NR_Linux + 292)
 #define __NR_accept4 (__NR_Linux + 293)
 #define __NR_recvmmsg (__NR_Linux + 294)
-#define __NR_fanotify_init (__NR_Linux + 295)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fanotify_init (__NR_Linux + 295)
 #define __NR_fanotify_mark (__NR_Linux + 296)
 #define __NR_prlimit64 (__NR_Linux + 297)
 #define __NR_name_to_handle_at (__NR_Linux + 298)
-#define __NR_open_by_handle_at (__NR_Linux + 299)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_open_by_handle_at (__NR_Linux + 299)
 #define __NR_clock_adjtime (__NR_Linux + 300)
 #define __NR_syncfs (__NR_Linux + 301)
 #define __NR_sendmmsg (__NR_Linux + 302)
-#define __NR_setns (__NR_Linux + 303)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setns (__NR_Linux + 303)
 #define __NR_process_vm_readv (__NR_Linux + 304)
 #define __NR_process_vm_writev (__NR_Linux + 305)
 #define __NR_kcmp (__NR_Linux + 306)
-#define __NR_finit_module (__NR_Linux + 307)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_finit_module (__NR_Linux + 307)
 #define __NR_getdents64 (__NR_Linux + 308)
 #define __NR_sched_setattr (__NR_Linux + 309)
 #define __NR_sched_getattr (__NR_Linux + 310)
-#define __NR_Linux_syscalls 310
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_renameat2 (__NR_Linux + 311)
+#define __NR_seccomp (__NR_Linux + 312)
+#define __NR_getrandom (__NR_Linux + 313)
+#define __NR_memfd_create (__NR_Linux + 314)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_bpf (__NR_Linux + 315)
+#define __NR_Linux_syscalls 315
 #endif
 #define __NR_64_Linux 5000
-#define __NR_64_Linux_syscalls 310
-#if _MIPS_SIM == _MIPS_SIM_NABI32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_64_Linux_syscalls 315
+#if _MIPS_SIM == _MIPS_SIM_NABI32
 #define __NR_Linux 6000
 #define __NR_read (__NR_Linux + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_write (__NR_Linux + 1)
 #define __NR_open (__NR_Linux + 2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_close (__NR_Linux + 3)
 #define __NR_stat (__NR_Linux + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fstat (__NR_Linux + 5)
 #define __NR_lstat (__NR_Linux + 6)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_poll (__NR_Linux + 7)
 #define __NR_lseek (__NR_Linux + 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mmap (__NR_Linux + 9)
 #define __NR_mprotect (__NR_Linux + 10)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_munmap (__NR_Linux + 11)
 #define __NR_brk (__NR_Linux + 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigaction (__NR_Linux + 13)
 #define __NR_rt_sigprocmask (__NR_Linux + 14)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioctl (__NR_Linux + 15)
 #define __NR_pread64 (__NR_Linux + 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pwrite64 (__NR_Linux + 17)
 #define __NR_readv (__NR_Linux + 18)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_writev (__NR_Linux + 19)
 #define __NR_access (__NR_Linux + 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pipe (__NR_Linux + 21)
 #define __NR__newselect (__NR_Linux + 22)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_yield (__NR_Linux + 23)
 #define __NR_mremap (__NR_Linux + 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_msync (__NR_Linux + 25)
 #define __NR_mincore (__NR_Linux + 26)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_madvise (__NR_Linux + 27)
 #define __NR_shmget (__NR_Linux + 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_shmat (__NR_Linux + 29)
 #define __NR_shmctl (__NR_Linux + 30)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_dup (__NR_Linux + 31)
 #define __NR_dup2 (__NR_Linux + 32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pause (__NR_Linux + 33)
 #define __NR_nanosleep (__NR_Linux + 34)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getitimer (__NR_Linux + 35)
 #define __NR_setitimer (__NR_Linux + 36)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_alarm (__NR_Linux + 37)
 #define __NR_getpid (__NR_Linux + 38)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendfile (__NR_Linux + 39)
 #define __NR_socket (__NR_Linux + 40)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_connect (__NR_Linux + 41)
 #define __NR_accept (__NR_Linux + 42)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendto (__NR_Linux + 43)
 #define __NR_recvfrom (__NR_Linux + 44)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendmsg (__NR_Linux + 45)
 #define __NR_recvmsg (__NR_Linux + 46)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_shutdown (__NR_Linux + 47)
 #define __NR_bind (__NR_Linux + 48)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_listen (__NR_Linux + 49)
 #define __NR_getsockname (__NR_Linux + 50)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getpeername (__NR_Linux + 51)
 #define __NR_socketpair (__NR_Linux + 52)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setsockopt (__NR_Linux + 53)
 #define __NR_getsockopt (__NR_Linux + 54)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clone (__NR_Linux + 55)
 #define __NR_fork (__NR_Linux + 56)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_execve (__NR_Linux + 57)
 #define __NR_exit (__NR_Linux + 58)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_wait4 (__NR_Linux + 59)
 #define __NR_kill (__NR_Linux + 60)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_uname (__NR_Linux + 61)
 #define __NR_semget (__NR_Linux + 62)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_semop (__NR_Linux + 63)
 #define __NR_semctl (__NR_Linux + 64)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_shmdt (__NR_Linux + 65)
 #define __NR_msgget (__NR_Linux + 66)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_msgsnd (__NR_Linux + 67)
 #define __NR_msgrcv (__NR_Linux + 68)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_msgctl (__NR_Linux + 69)
 #define __NR_fcntl (__NR_Linux + 70)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_flock (__NR_Linux + 71)
 #define __NR_fsync (__NR_Linux + 72)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fdatasync (__NR_Linux + 73)
 #define __NR_truncate (__NR_Linux + 74)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ftruncate (__NR_Linux + 75)
 #define __NR_getdents (__NR_Linux + 76)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getcwd (__NR_Linux + 77)
 #define __NR_chdir (__NR_Linux + 78)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fchdir (__NR_Linux + 79)
 #define __NR_rename (__NR_Linux + 80)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mkdir (__NR_Linux + 81)
 #define __NR_rmdir (__NR_Linux + 82)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_creat (__NR_Linux + 83)
 #define __NR_link (__NR_Linux + 84)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unlink (__NR_Linux + 85)
 #define __NR_symlink (__NR_Linux + 86)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_readlink (__NR_Linux + 87)
 #define __NR_chmod (__NR_Linux + 88)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fchmod (__NR_Linux + 89)
 #define __NR_chown (__NR_Linux + 90)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fchown (__NR_Linux + 91)
 #define __NR_lchown (__NR_Linux + 92)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_umask (__NR_Linux + 93)
 #define __NR_gettimeofday (__NR_Linux + 94)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getrlimit (__NR_Linux + 95)
 #define __NR_getrusage (__NR_Linux + 96)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sysinfo (__NR_Linux + 97)
 #define __NR_times (__NR_Linux + 98)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ptrace (__NR_Linux + 99)
 #define __NR_getuid (__NR_Linux + 100)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_syslog (__NR_Linux + 101)
 #define __NR_getgid (__NR_Linux + 102)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setuid (__NR_Linux + 103)
 #define __NR_setgid (__NR_Linux + 104)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_geteuid (__NR_Linux + 105)
 #define __NR_getegid (__NR_Linux + 106)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setpgid (__NR_Linux + 107)
 #define __NR_getppid (__NR_Linux + 108)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getpgrp (__NR_Linux + 109)
 #define __NR_setsid (__NR_Linux + 110)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setreuid (__NR_Linux + 111)
 #define __NR_setregid (__NR_Linux + 112)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getgroups (__NR_Linux + 113)
 #define __NR_setgroups (__NR_Linux + 114)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setresuid (__NR_Linux + 115)
 #define __NR_getresuid (__NR_Linux + 116)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setresgid (__NR_Linux + 117)
 #define __NR_getresgid (__NR_Linux + 118)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getpgid (__NR_Linux + 119)
 #define __NR_setfsuid (__NR_Linux + 120)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setfsgid (__NR_Linux + 121)
 #define __NR_getsid (__NR_Linux + 122)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_capget (__NR_Linux + 123)
 #define __NR_capset (__NR_Linux + 124)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigpending (__NR_Linux + 125)
 #define __NR_rt_sigtimedwait (__NR_Linux + 126)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigqueueinfo (__NR_Linux + 127)
 #define __NR_rt_sigsuspend (__NR_Linux + 128)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sigaltstack (__NR_Linux + 129)
 #define __NR_utime (__NR_Linux + 130)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mknod (__NR_Linux + 131)
 #define __NR_personality (__NR_Linux + 132)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ustat (__NR_Linux + 133)
 #define __NR_statfs (__NR_Linux + 134)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fstatfs (__NR_Linux + 135)
 #define __NR_sysfs (__NR_Linux + 136)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getpriority (__NR_Linux + 137)
 #define __NR_setpriority (__NR_Linux + 138)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_setparam (__NR_Linux + 139)
 #define __NR_sched_getparam (__NR_Linux + 140)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_setscheduler (__NR_Linux + 141)
 #define __NR_sched_getscheduler (__NR_Linux + 142)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_get_priority_max (__NR_Linux + 143)
 #define __NR_sched_get_priority_min (__NR_Linux + 144)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_rr_get_interval (__NR_Linux + 145)
 #define __NR_mlock (__NR_Linux + 146)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_munlock (__NR_Linux + 147)
 #define __NR_mlockall (__NR_Linux + 148)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_munlockall (__NR_Linux + 149)
 #define __NR_vhangup (__NR_Linux + 150)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pivot_root (__NR_Linux + 151)
 #define __NR__sysctl (__NR_Linux + 152)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_prctl (__NR_Linux + 153)
 #define __NR_adjtimex (__NR_Linux + 154)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setrlimit (__NR_Linux + 155)
 #define __NR_chroot (__NR_Linux + 156)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sync (__NR_Linux + 157)
 #define __NR_acct (__NR_Linux + 158)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_settimeofday (__NR_Linux + 159)
 #define __NR_mount (__NR_Linux + 160)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_umount2 (__NR_Linux + 161)
 #define __NR_swapon (__NR_Linux + 162)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_swapoff (__NR_Linux + 163)
 #define __NR_reboot (__NR_Linux + 164)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sethostname (__NR_Linux + 165)
 #define __NR_setdomainname (__NR_Linux + 166)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_create_module (__NR_Linux + 167)
 #define __NR_init_module (__NR_Linux + 168)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_delete_module (__NR_Linux + 169)
 #define __NR_get_kernel_syms (__NR_Linux + 170)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_query_module (__NR_Linux + 171)
 #define __NR_quotactl (__NR_Linux + 172)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_nfsservctl (__NR_Linux + 173)
 #define __NR_getpmsg (__NR_Linux + 174)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_putpmsg (__NR_Linux + 175)
 #define __NR_afs_syscall (__NR_Linux + 176)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_reserved177 (__NR_Linux + 177)
 #define __NR_gettid (__NR_Linux + 178)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_readahead (__NR_Linux + 179)
 #define __NR_setxattr (__NR_Linux + 180)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lsetxattr (__NR_Linux + 181)
 #define __NR_fsetxattr (__NR_Linux + 182)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getxattr (__NR_Linux + 183)
 #define __NR_lgetxattr (__NR_Linux + 184)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fgetxattr (__NR_Linux + 185)
 #define __NR_listxattr (__NR_Linux + 186)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_llistxattr (__NR_Linux + 187)
 #define __NR_flistxattr (__NR_Linux + 188)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_removexattr (__NR_Linux + 189)
 #define __NR_lremovexattr (__NR_Linux + 190)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fremovexattr (__NR_Linux + 191)
 #define __NR_tkill (__NR_Linux + 192)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_reserved193 (__NR_Linux + 193)
 #define __NR_futex (__NR_Linux + 194)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_setaffinity (__NR_Linux + 195)
 #define __NR_sched_getaffinity (__NR_Linux + 196)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_cacheflush (__NR_Linux + 197)
 #define __NR_cachectl (__NR_Linux + 198)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sysmips (__NR_Linux + 199)
 #define __NR_io_setup (__NR_Linux + 200)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_io_destroy (__NR_Linux + 201)
 #define __NR_io_getevents (__NR_Linux + 202)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_io_submit (__NR_Linux + 203)
 #define __NR_io_cancel (__NR_Linux + 204)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_exit_group (__NR_Linux + 205)
 #define __NR_lookup_dcookie (__NR_Linux + 206)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_create (__NR_Linux + 207)
 #define __NR_epoll_ctl (__NR_Linux + 208)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_wait (__NR_Linux + 209)
 #define __NR_remap_file_pages (__NR_Linux + 210)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigreturn (__NR_Linux + 211)
 #define __NR_fcntl64 (__NR_Linux + 212)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_tid_address (__NR_Linux + 213)
 #define __NR_restart_syscall (__NR_Linux + 214)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_semtimedop (__NR_Linux + 215)
 #define __NR_fadvise64 (__NR_Linux + 216)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_statfs64 (__NR_Linux + 217)
 #define __NR_fstatfs64 (__NR_Linux + 218)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendfile64 (__NR_Linux + 219)
 #define __NR_timer_create (__NR_Linux + 220)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timer_settime (__NR_Linux + 221)
 #define __NR_timer_gettime (__NR_Linux + 222)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timer_getoverrun (__NR_Linux + 223)
 #define __NR_timer_delete (__NR_Linux + 224)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clock_settime (__NR_Linux + 225)
 #define __NR_clock_gettime (__NR_Linux + 226)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clock_getres (__NR_Linux + 227)
 #define __NR_clock_nanosleep (__NR_Linux + 228)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_tgkill (__NR_Linux + 229)
 #define __NR_utimes (__NR_Linux + 230)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mbind (__NR_Linux + 231)
 #define __NR_get_mempolicy (__NR_Linux + 232)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_mempolicy (__NR_Linux + 233)
 #define __NR_mq_open (__NR_Linux + 234)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_unlink (__NR_Linux + 235)
 #define __NR_mq_timedsend (__NR_Linux + 236)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_timedreceive (__NR_Linux + 237)
 #define __NR_mq_notify (__NR_Linux + 238)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_getsetattr (__NR_Linux + 239)
 #define __NR_vserver (__NR_Linux + 240)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_waitid (__NR_Linux + 241)
 #define __NR_add_key (__NR_Linux + 243)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_request_key (__NR_Linux + 244)
 #define __NR_keyctl (__NR_Linux + 245)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_thread_area (__NR_Linux + 246)
 #define __NR_inotify_init (__NR_Linux + 247)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_inotify_add_watch (__NR_Linux + 248)
 #define __NR_inotify_rm_watch (__NR_Linux + 249)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_migrate_pages (__NR_Linux + 250)
 #define __NR_openat (__NR_Linux + 251)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mkdirat (__NR_Linux + 252)
 #define __NR_mknodat (__NR_Linux + 253)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fchownat (__NR_Linux + 254)
 #define __NR_futimesat (__NR_Linux + 255)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_newfstatat (__NR_Linux + 256)
 #define __NR_unlinkat (__NR_Linux + 257)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_renameat (__NR_Linux + 258)
 #define __NR_linkat (__NR_Linux + 259)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_symlinkat (__NR_Linux + 260)
 #define __NR_readlinkat (__NR_Linux + 261)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fchmodat (__NR_Linux + 262)
 #define __NR_faccessat (__NR_Linux + 263)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pselect6 (__NR_Linux + 264)
 #define __NR_ppoll (__NR_Linux + 265)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unshare (__NR_Linux + 266)
 #define __NR_splice (__NR_Linux + 267)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sync_file_range (__NR_Linux + 268)
 #define __NR_tee (__NR_Linux + 269)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_vmsplice (__NR_Linux + 270)
 #define __NR_move_pages (__NR_Linux + 271)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_robust_list (__NR_Linux + 272)
 #define __NR_get_robust_list (__NR_Linux + 273)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_kexec_load (__NR_Linux + 274)
 #define __NR_getcpu (__NR_Linux + 275)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_pwait (__NR_Linux + 276)
 #define __NR_ioprio_set (__NR_Linux + 277)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioprio_get (__NR_Linux + 278)
 #define __NR_utimensat (__NR_Linux + 279)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_signalfd (__NR_Linux + 280)
 #define __NR_timerfd (__NR_Linux + 281)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_eventfd (__NR_Linux + 282)
 #define __NR_fallocate (__NR_Linux + 283)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timerfd_create (__NR_Linux + 284)
 #define __NR_timerfd_gettime (__NR_Linux + 285)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timerfd_settime (__NR_Linux + 286)
 #define __NR_signalfd4 (__NR_Linux + 287)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_eventfd2 (__NR_Linux + 288)
 #define __NR_epoll_create1 (__NR_Linux + 289)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_dup3 (__NR_Linux + 290)
 #define __NR_pipe2 (__NR_Linux + 291)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_inotify_init1 (__NR_Linux + 292)
 #define __NR_preadv (__NR_Linux + 293)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pwritev (__NR_Linux + 294)
 #define __NR_rt_tgsigqueueinfo (__NR_Linux + 295)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_perf_event_open (__NR_Linux + 296)
 #define __NR_accept4 (__NR_Linux + 297)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_recvmmsg (__NR_Linux + 298)
 #define __NR_getdents64 (__NR_Linux + 299)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fanotify_init (__NR_Linux + 300)
 #define __NR_fanotify_mark (__NR_Linux + 301)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_prlimit64 (__NR_Linux + 302)
 #define __NR_name_to_handle_at (__NR_Linux + 303)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_open_by_handle_at (__NR_Linux + 304)
 #define __NR_clock_adjtime (__NR_Linux + 305)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_syncfs (__NR_Linux + 306)
 #define __NR_sendmmsg (__NR_Linux + 307)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setns (__NR_Linux + 308)
 #define __NR_process_vm_readv (__NR_Linux + 309)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_process_vm_writev (__NR_Linux + 310)
 #define __NR_kcmp (__NR_Linux + 311)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_finit_module (__NR_Linux + 312)
 #define __NR_sched_setattr (__NR_Linux + 313)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_getattr (__NR_Linux + 314)
-#define __NR_Linux_syscalls 314
+#define __NR_renameat2 (__NR_Linux + 315)
+#define __NR_seccomp (__NR_Linux + 316)
+#define __NR_getrandom (__NR_Linux + 317)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_memfd_create (__NR_Linux + 318)
+#define __NR_bpf (__NR_Linux + 319)
+#define __NR_Linux_syscalls 319
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_N32_Linux 6000
-#define __NR_N32_Linux_syscalls 314
+#define __NR_N32_Linux_syscalls 319
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/a.out.h b/libc/kernel/uapi/asm-x86/asm/a.out.h
index fa287b5..d1a4740 100644
--- a/libc/kernel/uapi/asm-x86/asm/a.out.h
+++ b/libc/kernel/uapi/asm-x86/asm/a.out.h
@@ -18,22 +18,21 @@
  ****************************************************************************/
 #ifndef _ASM_X86_A_OUT_H
 #define _ASM_X86_A_OUT_H
-struct exec
-{
+struct exec {
+  unsigned int a_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int a_info;
- unsigned a_text;
- unsigned a_data;
- unsigned a_bss;
+  unsigned a_text;
+  unsigned a_data;
+  unsigned a_bss;
+  unsigned a_syms;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned a_syms;
- unsigned a_entry;
- unsigned a_trsize;
- unsigned a_drsize;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned a_entry;
+  unsigned a_trsize;
+  unsigned a_drsize;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_TRSIZE(a) ((a).a_trsize)
 #define N_DRSIZE(a) ((a).a_drsize)
 #define N_SYMSIZE(a) ((a).a_syms)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index b576825..27201d6 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -28,17 +28,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
-#define LOADED_HIGH (1<<0)
-#define QUIET_FLAG (1<<5)
+#define LOADED_HIGH (1 << 0)
+#define QUIET_FLAG (1 << 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KEEP_SEGMENTS (1<<6)
-#define CAN_USE_HEAP (1<<7)
-#define XLF_KERNEL_64 (1<<0)
-#define XLF_CAN_BE_LOADED_ABOVE_4G (1<<1)
+#define KEEP_SEGMENTS (1 << 6)
+#define CAN_USE_HEAP (1 << 7)
+#define XLF_KERNEL_64 (1 << 0)
+#define XLF_CAN_BE_LOADED_ABOVE_4G (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define XLF_EFI_HANDOVER_32 (1<<2)
-#define XLF_EFI_HANDOVER_64 (1<<3)
-#define XLF_EFI_KEXEC (1<<4)
+#define XLF_EFI_HANDOVER_32 (1 << 2)
+#define XLF_EFI_HANDOVER_64 (1 << 3)
+#define XLF_EFI_KEXEC (1 << 4)
 #ifndef __ASSEMBLY__
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
@@ -51,138 +51,138 @@
 #include <video/edid.h>
 struct setup_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 next;
- __u32 type;
- __u32 len;
- __u8 data[0];
+  __u64 next;
+  __u32 type;
+  __u32 len;
+  __u8 data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct setup_header {
- __u8 setup_sects;
- __u16 root_flags;
+  __u8 setup_sects;
+  __u16 root_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 syssize;
- __u16 ram_size;
- __u16 vid_mode;
- __u16 root_dev;
+  __u32 syssize;
+  __u16 ram_size;
+  __u16 vid_mode;
+  __u16 root_dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 boot_flag;
- __u16 jump;
- __u32 header;
- __u16 version;
+  __u16 boot_flag;
+  __u16 jump;
+  __u32 header;
+  __u16 version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 realmode_swtch;
- __u16 start_sys;
- __u16 kernel_version;
- __u8 type_of_loader;
+  __u32 realmode_swtch;
+  __u16 start_sys;
+  __u16 kernel_version;
+  __u8 type_of_loader;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 loadflags;
- __u16 setup_move_size;
- __u32 code32_start;
- __u32 ramdisk_image;
+  __u8 loadflags;
+  __u16 setup_move_size;
+  __u32 code32_start;
+  __u32 ramdisk_image;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ramdisk_size;
- __u32 bootsect_kludge;
- __u16 heap_end_ptr;
- __u8 ext_loader_ver;
+  __u32 ramdisk_size;
+  __u32 bootsect_kludge;
+  __u16 heap_end_ptr;
+  __u8 ext_loader_ver;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ext_loader_type;
- __u32 cmd_line_ptr;
- __u32 initrd_addr_max;
- __u32 kernel_alignment;
+  __u8 ext_loader_type;
+  __u32 cmd_line_ptr;
+  __u32 initrd_addr_max;
+  __u32 kernel_alignment;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 relocatable_kernel;
- __u8 min_alignment;
- __u16 xloadflags;
- __u32 cmdline_size;
+  __u8 relocatable_kernel;
+  __u8 min_alignment;
+  __u16 xloadflags;
+  __u32 cmdline_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 hardware_subarch;
- __u64 hardware_subarch_data;
- __u32 payload_offset;
- __u32 payload_length;
+  __u32 hardware_subarch;
+  __u64 hardware_subarch_data;
+  __u32 payload_offset;
+  __u32 payload_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 setup_data;
- __u64 pref_address;
- __u32 init_size;
- __u32 handover_offset;
+  __u64 setup_data;
+  __u64 pref_address;
+  __u32 init_size;
+  __u32 handover_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct sys_desc_table {
- __u16 length;
- __u8 table[14];
+  __u16 length;
+  __u8 table[14];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct olpc_ofw_header {
- __u32 ofw_magic;
- __u32 ofw_version;
+  __u32 ofw_magic;
+  __u32 ofw_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cif_handler;
- __u32 irq_desc_table;
+  __u32 cif_handler;
+  __u32 irq_desc_table;
 } __attribute__((packed));
 struct efi_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 efi_loader_signature;
- __u32 efi_systab;
- __u32 efi_memdesc_size;
- __u32 efi_memdesc_version;
+  __u32 efi_loader_signature;
+  __u32 efi_systab;
+  __u32 efi_memdesc_size;
+  __u32 efi_memdesc_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 efi_memmap;
- __u32 efi_memmap_size;
- __u32 efi_systab_hi;
- __u32 efi_memmap_hi;
+  __u32 efi_memmap;
+  __u32 efi_memmap_size;
+  __u32 efi_systab_hi;
+  __u32 efi_memmap_hi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct boot_params {
- struct screen_info screen_info;
- struct apm_bios_info apm_bios_info;
+  struct screen_info screen_info;
+  struct apm_bios_info apm_bios_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 _pad2[4];
- __u64 tboot_addr;
- struct ist_info ist_info;
- __u8 _pad3[16];
+  __u8 _pad2[4];
+  __u64 tboot_addr;
+  struct ist_info ist_info;
+  __u8 _pad3[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 hd0_info[16];
- __u8 hd1_info[16];
- struct sys_desc_table sys_desc_table;
- struct olpc_ofw_header olpc_ofw_header;
+  __u8 hd0_info[16];
+  __u8 hd1_info[16];
+  struct sys_desc_table sys_desc_table;
+  struct olpc_ofw_header olpc_ofw_header;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ext_ramdisk_image;
- __u32 ext_ramdisk_size;
- __u32 ext_cmd_line_ptr;
- __u8 _pad4[116];
+  __u32 ext_ramdisk_image;
+  __u32 ext_ramdisk_size;
+  __u32 ext_cmd_line_ptr;
+  __u8 _pad4[116];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct edid_info edid_info;
- struct efi_info efi_info;
- __u32 alt_mem_k;
- __u32 scratch;
+  struct edid_info edid_info;
+  struct efi_info efi_info;
+  __u32 alt_mem_k;
+  __u32 scratch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 e820_entries;
- __u8 eddbuf_entries;
- __u8 edd_mbr_sig_buf_entries;
- __u8 kbd_status;
+  __u8 e820_entries;
+  __u8 eddbuf_entries;
+  __u8 edd_mbr_sig_buf_entries;
+  __u8 kbd_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 _pad5[3];
- __u8 sentinel;
- __u8 _pad6[1];
- struct setup_header hdr;
+  __u8 _pad5[3];
+  __u8 sentinel;
+  __u8 _pad6[1];
+  struct setup_header hdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)];
- __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
- struct e820entry e820_map[E820MAX];
- __u8 _pad8[48];
+  __u8 _pad7[0x290 - 0x1f1 - sizeof(struct setup_header)];
+  __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
+  struct e820entry e820_map[E820MAX];
+  __u8 _pad8[48];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct edd_info eddbuf[EDDMAXNR];
- __u8 _pad9[276];
+  struct edd_info eddbuf[EDDMAXNR];
+  __u8 _pad9[276];
 } __attribute__((packed));
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- X86_SUBARCH_PC = 0,
- X86_SUBARCH_LGUEST,
- X86_SUBARCH_XEN,
- X86_SUBARCH_INTEL_MID,
+  X86_SUBARCH_PC = 0,
+  X86_SUBARCH_LGUEST,
+  X86_SUBARCH_XEN,
+  X86_SUBARCH_INTEL_MID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- X86_SUBARCH_CE4100,
- X86_NR_SUBARCHS,
+  X86_SUBARCH_CE4100,
+  X86_NR_SUBARCHS,
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/debugreg.h b/libc/kernel/uapi/asm-x86/asm/debugreg.h
index c8b30a5..2c63706 100644
--- a/libc/kernel/uapi/asm-x86/asm/debugreg.h
+++ b/libc/kernel/uapi/asm-x86/asm/debugreg.h
@@ -29,7 +29,7 @@
 #define DR_TRAP1 (0x2)
 #define DR_TRAP2 (0x4)
 #define DR_TRAP3 (0x8)
-#define DR_TRAP_BITS (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)
+#define DR_TRAP_BITS (DR_TRAP0 | DR_TRAP1 | DR_TRAP2 | DR_TRAP3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DR_STEP (0x4000)
 #define DR_SWITCH (0x8000)
diff --git a/libc/kernel/uapi/asm-x86/asm/e820.h b/libc/kernel/uapi/asm-x86/asm/e820.h
index b7084cf..d4cb389 100644
--- a/libc/kernel/uapi/asm-x86/asm/e820.h
+++ b/libc/kernel/uapi/asm-x86/asm/e820.h
@@ -34,15 +34,15 @@
 #ifndef __ASSEMBLY__
 #include <linux/types.h>
 struct e820entry {
- __u64 addr;
+  __u64 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 size;
- __u32 type;
+  __u64 size;
+  __u32 type;
 } __attribute__((packed));
 struct e820map {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 nr_map;
- struct e820entry map[E820_X_MAX];
+  __u32 nr_map;
+  struct e820entry map[E820_X_MAX];
 };
 #define ISA_START_ADDRESS 0xa0000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/hyperv.h b/libc/kernel/uapi/asm-x86/asm/hyperv.h
index 965e80a..e869504 100644
--- a/libc/kernel/uapi/asm-x86/asm/hyperv.h
+++ b/libc/kernel/uapi/asm-x86/asm/hyperv.h
@@ -117,12 +117,12 @@
 #define HV_X64_MSR_HYPERCALL_ENABLE 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT 12
-#define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_MASK   (~((1ull << HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT) - 1))
+#define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_MASK (~((1ull << HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT) - 1))
 #define HV_X64_HV_NOTIFY_LONG_SPIN_WAIT 0x0008
 #define HV_X64_MSR_APIC_ASSIST_PAGE_ENABLE 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HV_X64_MSR_APIC_ASSIST_PAGE_ADDRESS_SHIFT 12
-#define HV_X64_MSR_APIC_ASSIST_PAGE_ADDRESS_MASK   (~((1ull << HV_X64_MSR_APIC_ASSIST_PAGE_ADDRESS_SHIFT) - 1))
+#define HV_X64_MSR_APIC_ASSIST_PAGE_ADDRESS_MASK (~((1ull << HV_X64_MSR_APIC_ASSIST_PAGE_ADDRESS_SHIFT) - 1))
 #define HV_X64_MSR_TSC_REFERENCE_ENABLE 0x00000001
 #define HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -138,11 +138,11 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HV_STATUS_INSUFFICIENT_BUFFERS 19
 typedef struct _HV_REFERENCE_TSC_PAGE {
- __u32 tsc_sequence;
- __u32 res1;
+  __u32 tsc_sequence;
+  __u32 res1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 tsc_scale;
- __s64 tsc_offset;
-} HV_REFERENCE_TSC_PAGE, *PHV_REFERENCE_TSC_PAGE;
+  __u64 tsc_scale;
+  __s64 tsc_offset;
+} HV_REFERENCE_TSC_PAGE, * PHV_REFERENCE_TSC_PAGE;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/ist.h b/libc/kernel/uapi/asm-x86/asm/ist.h
index 36d3c3d..27db89f 100644
--- a/libc/kernel/uapi/asm-x86/asm/ist.h
+++ b/libc/kernel/uapi/asm-x86/asm/ist.h
@@ -21,10 +21,10 @@
 #include <linux/types.h>
 struct ist_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 signature;
- __u32 command;
- __u32 event;
- __u32 perf_level;
+  __u32 signature;
+  __u32 command;
+  __u32 event;
+  __u32 perf_level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index 200d818..6b6b6f2 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -38,326 +38,329 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_VECTOR 14
 #define MF_VECTOR 16
+#define AC_VECTOR 17
 #define MC_VECTOR 18
-#define __KVM_HAVE_PIT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XM_VECTOR 19
+#define VE_VECTOR 20
+#define __KVM_HAVE_PIT
 #define __KVM_HAVE_IOAPIC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KVM_HAVE_IRQ_LINE
 #define __KVM_HAVE_MSI
 #define __KVM_HAVE_USER_NMI
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KVM_HAVE_GUEST_DEBUG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KVM_HAVE_MSIX
 #define __KVM_HAVE_MCE
 #define __KVM_HAVE_PIT_STATE2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KVM_HAVE_XEN_HVM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KVM_HAVE_VCPU_EVENTS
 #define __KVM_HAVE_DEBUGREGS
 #define __KVM_HAVE_XSAVE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KVM_HAVE_XCRS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KVM_HAVE_READONLY_MEM
 #define KVM_NR_INTERRUPTS 256
 struct kvm_memory_alias {
+  __u32 slot;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 slot;
- __u32 flags;
- __u64 guest_phys_addr;
- __u64 memory_size;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 target_phys_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 target_phys_addr;
 };
 struct kvm_pic_state {
- __u8 last_irr;
+  __u8 last_irr;
+  __u8 irr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 irr;
- __u8 imr;
- __u8 isr;
- __u8 priority_add;
+  __u8 imr;
+  __u8 isr;
+  __u8 priority_add;
+  __u8 irq_base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 irq_base;
- __u8 read_reg_select;
- __u8 poll;
- __u8 special_mask;
+  __u8 read_reg_select;
+  __u8 poll;
+  __u8 special_mask;
+  __u8 init_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 init_state;
- __u8 auto_eoi;
- __u8 rotate_on_auto_eoi;
- __u8 special_fully_nested_mode;
+  __u8 auto_eoi;
+  __u8 rotate_on_auto_eoi;
+  __u8 special_fully_nested_mode;
+  __u8 init4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 init4;
- __u8 elcr;
- __u8 elcr_mask;
+  __u8 elcr;
+  __u8 elcr_mask;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IOAPIC_NUM_PINS 24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_ioapic_state {
- __u64 base_address;
- __u32 ioregsel;
+  __u64 base_address;
+  __u32 ioregsel;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 irr;
- __u32 pad;
- union {
+  __u32 irr;
+  __u32 pad;
+  union {
+    __u64 bits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 bits;
- struct {
- __u8 vector;
- __u8 delivery_mode:3;
+    struct {
+      __u8 vector;
+      __u8 delivery_mode : 3;
+      __u8 dest_mode : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dest_mode:1;
- __u8 delivery_status:1;
- __u8 polarity:1;
- __u8 remote_irr:1;
+      __u8 delivery_status : 1;
+      __u8 polarity : 1;
+      __u8 remote_irr : 1;
+      __u8 trig_mode : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 trig_mode:1;
- __u8 mask:1;
- __u8 reserve:7;
- __u8 reserved[4];
+      __u8 mask : 1;
+      __u8 reserve : 7;
+      __u8 reserved[4];
+      __u8 dest_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dest_id;
- } fields;
- } redirtbl[KVM_IOAPIC_NUM_PINS];
+    } fields;
+  } redirtbl[KVM_IOAPIC_NUM_PINS];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IRQCHIP_PIC_MASTER 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IRQCHIP_PIC_SLAVE 1
 #define KVM_IRQCHIP_IOAPIC 2
 #define KVM_NR_IRQCHIPS 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_regs {
- __u64 rax, rbx, rcx, rdx;
- __u64 rsi, rdi, rsp, rbp;
- __u64 r8, r9, r10, r11;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 r12, r13, r14, r15;
- __u64 rip, rflags;
+  __u64 rax, rbx, rcx, rdx;
+  __u64 rsi, rdi, rsp, rbp;
+  __u64 r8, r9, r10, r11;
+  __u64 r12, r13, r14, r15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 rip, rflags;
 };
 #define KVM_APIC_REG_SIZE 0x400
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_lapic_state {
- char regs[KVM_APIC_REG_SIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char regs[KVM_APIC_REG_SIZE];
 };
 struct kvm_segment {
+  __u64 base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 base;
- __u32 limit;
- __u16 selector;
- __u8 type;
+  __u32 limit;
+  __u16 selector;
+  __u8 type;
+  __u8 present, dpl, db, s, l, g, avl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 present, dpl, db, s, l, g, avl;
- __u8 unusable;
- __u8 padding;
+  __u8 unusable;
+  __u8 padding;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_dtable {
- __u64 base;
- __u16 limit;
- __u16 padding[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 base;
+  __u16 limit;
+  __u16 padding[3];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_sregs {
- struct kvm_segment cs, ds, es, fs, gs, ss;
- struct kvm_segment tr, ldt;
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct kvm_dtable gdt, idt;
- __u64 cr0, cr2, cr3, cr4, cr8;
- __u64 efer;
- __u64 apic_base;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
 };
 struct kvm_fpu {
- __u8 fpr[8][16];
+  __u8 fpr[8][16];
+  __u16 fcw;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 fcw;
- __u16 fsw;
- __u8 ftwx;
- __u8 pad1;
+  __u16 fsw;
+  __u8 ftwx;
+  __u8 pad1;
+  __u16 last_opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 last_opcode;
- __u64 last_ip;
- __u64 last_dp;
- __u8 xmm[16][16];
+  __u64 last_ip;
+  __u64 last_dp;
+  __u8 xmm[16][16];
+  __u32 mxcsr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mxcsr;
- __u32 pad2;
+  __u32 pad2;
 };
 struct kvm_msr_entry {
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 reserved;
- __u64 data;
+  __u32 reserved;
+  __u64 data;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_msrs {
- __u32 nmsrs;
- __u32 pad;
- struct kvm_msr_entry entries[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 nmsrs;
+  __u32 pad;
+  struct kvm_msr_entry entries[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_msr_list {
- __u32 nmsrs;
- __u32 indices[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 nmsrs;
+  __u32 indices[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_cpuid_entry {
- __u32 function;
- __u32 eax;
+  __u32 function;
+  __u32 eax;
+  __u32 ebx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ebx;
- __u32 ecx;
- __u32 edx;
- __u32 padding;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding;
 };
-struct kvm_cpuid {
- __u32 nent;
- __u32 padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct kvm_cpuid_entry entries[0];
+struct kvm_cpuid {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry entries[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_cpuid_entry2 {
- __u32 function;
+  __u32 function;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 flags;
- __u32 eax;
- __u32 ebx;
+  __u32 flags;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ecx;
- __u32 edx;
- __u32 padding[3];
+  __u32 edx;
+  __u32 padding[3];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
 #define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
 struct kvm_cpuid2 {
+  __u32 nent;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 nent;
- __u32 padding;
- struct kvm_cpuid_entry2 entries[0];
+  __u32 padding;
+  struct kvm_cpuid_entry2 entries[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_pit_channel_state {
- __u32 count;
- __u16 latched_count;
- __u8 count_latched;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 status_latched;
- __u8 status;
- __u8 read_state;
- __u8 write_state;
+  __u32 count;
+  __u16 latched_count;
+  __u8 count_latched;
+  __u8 status_latched;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 write_latch;
- __u8 rw_mode;
- __u8 mode;
- __u8 bcd;
+  __u8 status;
+  __u8 read_state;
+  __u8 write_state;
+  __u8 write_latch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 gate;
- __s64 count_load_time;
+  __u8 rw_mode;
+  __u8 mode;
+  __u8 bcd;
+  __u8 gate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s64 count_load_time;
 };
 struct kvm_debug_exit_arch {
+  __u32 exception;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 exception;
- __u32 pad;
- __u64 pc;
- __u64 dr6;
+  __u32 pad;
+  __u64 pc;
+  __u64 dr6;
+  __u64 dr7;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 dr7;
 };
 #define KVM_GUESTDBG_USE_SW_BP 0x00010000
 #define KVM_GUESTDBG_USE_HW_BP 0x00020000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GUESTDBG_INJECT_DB 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GUESTDBG_INJECT_BP 0x00080000
 struct kvm_guest_debug_arch {
- __u64 debugreg[8];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 debugreg[8];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_pit_state {
- struct kvm_pit_channel_state channels[3];
+  struct kvm_pit_channel_state channels[3];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
-struct kvm_pit_state2 {
- struct kvm_pit_channel_state channels[3];
- __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[9];
+struct kvm_pit_state2 {
+  struct kvm_pit_channel_state channels[3];
+  __u32 flags;
+  __u32 reserved[9];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_reinject_control {
- __u8 pit_reinject;
+  __u8 pit_reinject;
+  __u8 reserved[31];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved[31];
 };
 #define KVM_VCPUEVENT_VALID_NMI_PENDING 0x00000001
 #define KVM_VCPUEVENT_VALID_SIPI_VECTOR 0x00000002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u8 injected;
- __u8 nr;
- __u8 has_error_code;
+    __u8 injected;
+    __u8 nr;
+    __u8 has_error_code;
+    __u8 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad;
- __u32 error_code;
- } exception;
- struct {
+    __u32 error_code;
+  } exception;
+  struct {
+    __u8 injected;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 injected;
- __u8 nr;
- __u8 soft;
- __u8 shadow;
+    __u8 nr;
+    __u8 soft;
+    __u8 shadow;
+  } interrupt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } interrupt;
- struct {
- __u8 injected;
- __u8 pending;
+  struct {
+    __u8 injected;
+    __u8 pending;
+    __u8 masked;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 masked;
- __u8 pad;
- } nmi;
- __u32 sipi_vector;
+    __u8 pad;
+  } nmi;
+  __u32 sipi_vector;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 reserved[10];
+  __u32 reserved[10];
 };
 struct kvm_debugregs {
+  __u64 db[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 db[4];
- __u64 dr6;
- __u64 dr7;
- __u64 flags;
+  __u64 dr6;
+  __u64 dr7;
+  __u64 flags;
+  __u64 reserved[9];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved[9];
 };
 struct kvm_xsave {
- __u32 region[1024];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 region[1024];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
- __u32 xcr;
+  __u32 xcr;
+  __u32 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
- __u64 value;
+  __u64 value;
 };
 struct kvm_xcrs {
+  __u32 nr_xcrs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 nr_xcrs;
- __u32 flags;
- struct kvm_xcr xcrs[KVM_MAX_XCRS];
- __u64 padding[16];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 flags;
+  struct kvm_xcr xcrs[KVM_MAX_XCRS];
+  __u64 padding[16];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_sync_regs {
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm_para.h b/libc/kernel/uapi/asm-x86/asm/kvm_para.h
index 7fb5efe..968d5bb 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm_para.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm_para.h
@@ -46,15 +46,15 @@
 #define MSR_KVM_PV_EOI_EN 0x4b564d04
 struct kvm_steal_time {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 steal;
- __u32 version;
- __u32 flags;
- __u32 pad[12];
+  __u64 steal;
+  __u32 version;
+  __u32 flags;
+  __u32 pad[12];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define KVM_STEAL_ALIGNMENT_BITS 5
-#define KVM_STEAL_VALID_BITS ((-1ULL << (KVM_STEAL_ALIGNMENT_BITS + 1)))
-#define KVM_STEAL_RESERVED_MASK (((1 << KVM_STEAL_ALIGNMENT_BITS) - 1 ) << 1)
+#define KVM_STEAL_VALID_BITS ((- 1ULL << (KVM_STEAL_ALIGNMENT_BITS + 1)))
+#define KVM_STEAL_RESERVED_MASK (((1 << KVM_STEAL_ALIGNMENT_BITS) - 1) << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_MAX_MMU_OP_BATCH 32
 #define KVM_ASYNC_PF_ENABLED (1 << 0)
@@ -64,32 +64,32 @@
 #define KVM_MMU_OP_FLUSH_TLB 2
 #define KVM_MMU_OP_RELEASE_PT 3
 struct kvm_mmu_op_header {
- __u32 op;
+  __u32 op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
+  __u32 pad;
 };
 struct kvm_mmu_op_write_pte {
- struct kvm_mmu_op_header header;
+  struct kvm_mmu_op_header header;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 pte_phys;
- __u64 pte_val;
+  __u64 pte_phys;
+  __u64 pte_val;
 };
 struct kvm_mmu_op_flush_tlb {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct kvm_mmu_op_header header;
+  struct kvm_mmu_op_header header;
 };
 struct kvm_mmu_op_release_pt {
- struct kvm_mmu_op_header header;
+  struct kvm_mmu_op_header header;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 pt_phys;
+  __u64 pt_phys;
 };
 #define KVM_PV_REASON_PAGE_NOT_PRESENT 1
 #define KVM_PV_REASON_PAGE_READY 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_vcpu_pv_apf_data {
- __u32 reason;
- __u8 pad[60];
- __u32 enabled;
+  __u32 reason;
+  __u8 pad[60];
+  __u32 enabled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define KVM_PV_EOI_BIT 0
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm_perf.h b/libc/kernel/uapi/asm-x86/asm/kvm_perf.h
new file mode 100644
index 0000000..4301de2
--- /dev/null
+++ b/libc/kernel/uapi/asm-x86/asm/kvm_perf.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_KVM_PERF_H
+#define _ASM_X86_KVM_PERF_H
+#include <asm/svm.h>
+#include <asm/vmx.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/kvm.h>
+#define DECODE_STR_LEN 20
+#define VCPU_ID "vcpu_id"
+#define KVM_ENTRY_TRACE "kvm:kvm_entry"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_EXIT_TRACE "kvm:kvm_exit"
+#define KVM_EXIT_REASON "exit_reason"
+#endif
diff --git a/libc/kernel/uapi/asm-x86/asm/ldt.h b/libc/kernel/uapi/asm-x86/asm/ldt.h
index ff88760..c901fee 100644
--- a/libc/kernel/uapi/asm-x86/asm/ldt.h
+++ b/libc/kernel/uapi/asm-x86/asm/ldt.h
@@ -23,20 +23,20 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
 struct user_desc {
- unsigned int entry_number;
- unsigned int base_addr;
+  unsigned int entry_number;
+  unsigned int base_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int limit;
- unsigned int seg_32bit:1;
- unsigned int contents:2;
- unsigned int read_exec_only:1;
+  unsigned int limit;
+  unsigned int seg_32bit : 1;
+  unsigned int contents : 2;
+  unsigned int read_exec_only : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int limit_in_pages:1;
- unsigned int seg_not_present:1;
- unsigned int useable:1;
+  unsigned int limit_in_pages : 1;
+  unsigned int seg_not_present : 1;
+  unsigned int useable : 1;
 #ifdef __x86_64__
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int lm:1;
+  unsigned int lm : 1;
 #endif
 };
 #define MODIFY_LDT_CONTENTS_DATA 0
diff --git a/libc/kernel/uapi/asm-x86/asm/mce.h b/libc/kernel/uapi/asm-x86/asm/mce.h
index 48c1b35..dce4194 100644
--- a/libc/kernel/uapi/asm-x86/asm/mce.h
+++ b/libc/kernel/uapi/asm-x86/asm/mce.h
@@ -22,29 +22,29 @@
 #include <asm/ioctls.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mce {
- __u64 status;
- __u64 misc;
- __u64 addr;
+  __u64 status;
+  __u64 misc;
+  __u64 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 mcgstatus;
- __u64 ip;
- __u64 tsc;
- __u64 time;
+  __u64 mcgstatus;
+  __u64 ip;
+  __u64 tsc;
+  __u64 time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cpuvendor;
- __u8 inject_flags;
- __u16 pad;
- __u32 cpuid;
+  __u8 cpuvendor;
+  __u8 inject_flags;
+  __u16 pad;
+  __u32 cpuid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cs;
- __u8 bank;
- __u8 cpu;
- __u8 finished;
+  __u8 cs;
+  __u8 bank;
+  __u8 cpu;
+  __u8 finished;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 extcpu;
- __u32 socketid;
- __u32 apicid;
- __u64 mcgcap;
+  __u32 extcpu;
+  __u32 socketid;
+  __u32 apicid;
+  __u64 mcgcap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define MCE_GET_RECORD_LEN _IOR('M', 1, int)
diff --git a/libc/kernel/uapi/asm-x86/asm/msr-index.h b/libc/kernel/uapi/asm-x86/asm/msr-index.h
index 6e4cac7..221cec2 100644
--- a/libc/kernel/uapi/asm-x86/asm/msr-index.h
+++ b/libc/kernel/uapi/asm-x86/asm/msr-index.h
@@ -38,15 +38,15 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _EFER_LMSLE 13
 #define _EFER_FFXSR 14
-#define EFER_SCE (1<<_EFER_SCE)
-#define EFER_LME (1<<_EFER_LME)
+#define EFER_SCE (1 << _EFER_SCE)
+#define EFER_LME (1 << _EFER_LME)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define EFER_LMA (1<<_EFER_LMA)
-#define EFER_NX (1<<_EFER_NX)
-#define EFER_SVME (1<<_EFER_SVME)
-#define EFER_LMSLE (1<<_EFER_LMSLE)
+#define EFER_LMA (1 << _EFER_LMA)
+#define EFER_NX (1 << _EFER_NX)
+#define EFER_SVME (1 << _EFER_SVME)
+#define EFER_LMSLE (1 << _EFER_LMSLE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define EFER_FFXSR (1<<_EFER_FFXSR)
+#define EFER_FFXSR (1 << _EFER_FFXSR)
 #define MSR_IA32_PERFCTR0 0x000000c1
 #define MSR_IA32_PERFCTR1 0x000000c2
 #define MSR_FSB_FREQ 0x000000cd
@@ -162,154 +162,159 @@
 #define MSR_PP1_POLICY 0x00000642
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_CORE_C1_RES 0x00000660
+#define MSR_CC6_DEMOTION_POLICY_CONFIG 0x00000668
+#define MSR_MC6_DEMOTION_POLICY_CONFIG 0x00000669
 #define MSR_AMD64_MC0_MASK 0xc0010044
-#define MSR_IA32_MCx_CTL(x) (MSR_IA32_MC0_CTL + 4*(x))
-#define MSR_IA32_MCx_STATUS(x) (MSR_IA32_MC0_STATUS + 4*(x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_IA32_MCx_ADDR(x) (MSR_IA32_MC0_ADDR + 4*(x))
-#define MSR_IA32_MCx_MISC(x) (MSR_IA32_MC0_MISC + 4*(x))
+#define MSR_IA32_MCx_CTL(x) (MSR_IA32_MC0_CTL + 4 * (x))
+#define MSR_IA32_MCx_STATUS(x) (MSR_IA32_MC0_STATUS + 4 * (x))
+#define MSR_IA32_MCx_ADDR(x) (MSR_IA32_MC0_ADDR + 4 * (x))
+#define MSR_IA32_MCx_MISC(x) (MSR_IA32_MC0_MISC + 4 * (x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_MCx_MASK(x) (MSR_AMD64_MC0_MASK + (x))
 #define MSR_IA32_MC0_CTL2 0x00000280
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MCx_CTL2(x) (MSR_IA32_MC0_CTL2 + (x))
 #define MSR_P6_PERFCTR0 0x000000c1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P6_PERFCTR1 0x000000c2
 #define MSR_P6_EVNTSEL0 0x00000186
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P6_EVNTSEL1 0x00000187
 #define MSR_KNC_PERFCTR0 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_KNC_PERFCTR1 0x00000021
 #define MSR_KNC_EVNTSEL0 0x00000028
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_KNC_EVNTSEL1 0x00000029
 #define MSR_IA32_PMC0 0x000004c1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_PATCH_LEVEL 0x0000008b
 #define MSR_AMD64_TSC_RATIO 0xc0000104
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_NB_CFG 0xc001001f
 #define MSR_AMD64_PATCH_LOADER 0xc0010020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_OSVW_ID_LENGTH 0xc0010140
 #define MSR_AMD64_OSVW_STATUS 0xc0010141
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_LS_CFG 0xc0011020
 #define MSR_AMD64_DC_CFG 0xc0011022
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_BU_CFG2 0xc001102a
 #define MSR_AMD64_IBSFETCHCTL 0xc0011030
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSFETCHLINAD 0xc0011031
 #define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032
-#define MSR_AMD64_IBSFETCH_REG_COUNT 3
-#define MSR_AMD64_IBSFETCH_REG_MASK ((1UL<<MSR_AMD64_IBSFETCH_REG_COUNT)-1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_AMD64_IBSFETCH_REG_COUNT 3
+#define MSR_AMD64_IBSFETCH_REG_MASK ((1UL << MSR_AMD64_IBSFETCH_REG_COUNT) - 1)
 #define MSR_AMD64_IBSOPCTL 0xc0011033
 #define MSR_AMD64_IBSOPRIP 0xc0011034
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSOPDATA 0xc0011035
 #define MSR_AMD64_IBSOPDATA2 0xc0011036
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSOPDATA3 0xc0011037
 #define MSR_AMD64_IBSDCLINAD 0xc0011038
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSDCPHYSAD 0xc0011039
 #define MSR_AMD64_IBSOP_REG_COUNT 7
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_AMD64_IBSOP_REG_MASK ((1UL<<MSR_AMD64_IBSOP_REG_COUNT)-1)
+#define MSR_AMD64_IBSOP_REG_MASK ((1UL << MSR_AMD64_IBSOP_REG_COUNT) - 1)
 #define MSR_AMD64_IBSCTL 0xc001103a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSBRTARGET 0xc001103b
 #define MSR_AMD64_IBS_REG_COUNT_MAX 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_F16H_L2I_PERF_CTL 0xc0010230
 #define MSR_F16H_L2I_PERF_CTR 0xc0010231
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_F15H_PERF_CTL 0xc0010200
 #define MSR_F15H_PERF_CTR 0xc0010201
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_F15H_NB_PERF_CTL 0xc0010240
 #define MSR_F15H_NB_PERF_CTR 0xc0010241
-#define MSR_FAM10H_MMIO_CONF_BASE 0xc0010058
-#define FAM10H_MMIO_CONF_ENABLE (1<<0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_FAM10H_MMIO_CONF_BASE 0xc0010058
+#define FAM10H_MMIO_CONF_ENABLE (1 << 0)
 #define FAM10H_MMIO_CONF_BUSRANGE_MASK 0xf
 #define FAM10H_MMIO_CONF_BUSRANGE_SHIFT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAM10H_MMIO_CONF_BASE_MASK 0xfffffffULL
 #define FAM10H_MMIO_CONF_BASE_SHIFT 20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_FAM10H_NODE_ID 0xc001100c
 #define MSR_K8_TOP_MEM1 0xc001001a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K8_TOP_MEM2 0xc001001d
 #define MSR_K8_SYSCFG 0xc0010010
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K8_INT_PENDING_MSG 0xc0010055
 #define K8_INTP_C1E_ACTIVE_MASK 0x18000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K8_TSEG_ADDR 0xc0010112
 #define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000
 #define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL0 0xc0010000
 #define MSR_K7_PERFCTR0 0xc0010004
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL1 0xc0010001
 #define MSR_K7_PERFCTR1 0xc0010005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL2 0xc0010002
 #define MSR_K7_PERFCTR2 0xc0010006
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL3 0xc0010003
 #define MSR_K7_PERFCTR3 0xc0010007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_CLK_CTL 0xc001001b
 #define MSR_K7_HWCR 0xc0010015
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_FID_VID_CTL 0xc0010041
 #define MSR_K7_FID_VID_STATUS 0xc0010042
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K6_WHCR 0xc0000082
 #define MSR_K6_UWCCR 0xc0000085
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K6_EPMR 0xc0000086
 #define MSR_K6_PSOR 0xc0000087
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K6_PFIR 0xc0000088
 #define MSR_IDT_FCR1 0x00000107
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_FCR2 0x00000108
 #define MSR_IDT_FCR3 0x00000109
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_FCR4 0x0000010a
 #define MSR_IDT_MCR0 0x00000110
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR1 0x00000111
 #define MSR_IDT_MCR2 0x00000112
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR3 0x00000113
 #define MSR_IDT_MCR4 0x00000114
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR5 0x00000115
 #define MSR_IDT_MCR6 0x00000116
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR7 0x00000117
 #define MSR_IDT_MCR_CTRL 0x00000120
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_VIA_FCR 0x00001107
 #define MSR_VIA_LONGHAUL 0x0000110a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_VIA_RNG 0x0000110b
 #define MSR_VIA_BCR2 0x00001147
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_TMTA_LONGRUN_CTRL 0x80868010
 #define MSR_TMTA_LONGRUN_FLAGS 0x80868011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_TMTA_LRTI_READOUT 0x80868018
 #define MSR_TMTA_LRTI_VOLT_MHZ 0x8086801a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_P5_MC_ADDR 0x00000000
 #define MSR_IA32_P5_MC_TYPE 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_TSC 0x00000010
 #define MSR_IA32_PLATFORM_ID 0x00000017
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_EBL_CR_POWERON 0x0000002a
 #define MSR_EBC_FREQUENCY_ID 0x0000002c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_SMI_COUNT 0x00000034
 #define MSR_IA32_FEATURE_CONTROL 0x0000003a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_TSC_ADJUST 0x0000003b
-#define FEATURE_CONTROL_LOCKED (1<<0)
-#define FEATURE_CONTROL_VMXON_ENABLED_INSIDE_SMX (1<<1)
-#define FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX (1<<2)
+#define MSR_IA32_BNDCFGS 0x00000d90
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_XSS 0x00000da0
+#define FEATURE_CONTROL_LOCKED (1 << 0)
+#define FEATURE_CONTROL_VMXON_ENABLED_INSIDE_SMX (1 << 1)
+#define FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_APICBASE 0x0000001b
-#define MSR_IA32_APICBASE_BSP (1<<8)
-#define MSR_IA32_APICBASE_ENABLE (1<<11)
-#define MSR_IA32_APICBASE_BASE (0xfffff<<12)
+#define MSR_IA32_APICBASE_BSP (1 << 8)
+#define MSR_IA32_APICBASE_ENABLE (1 << 11)
+#define MSR_IA32_APICBASE_BASE (0xfffff << 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_TSCDEADLINE 0x000006e0
 #define MSR_IA32_UCODE_WRITE 0x00000079
@@ -364,201 +369,233 @@
 #define THERM_LOG_THRESHOLD0 (1 << 7)
 #define THERM_STATUS_THRESHOLD1 (1 << 8)
 #define THERM_LOG_THRESHOLD1 (1 << 9)
-#define MSR_IA32_MISC_ENABLE_FAST_STRING (1ULL << 0)
+#define MSR_IA32_MISC_ENABLE_FAST_STRING_BIT 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_IA32_MISC_ENABLE_TCC (1ULL << 1)
-#define MSR_IA32_MISC_ENABLE_EMON (1ULL << 7)
-#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL (1ULL << 11)
-#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL (1ULL << 12)
+#define MSR_IA32_MISC_ENABLE_FAST_STRING (1ULL << MSR_IA32_MISC_ENABLE_FAST_STRING_BIT)
+#define MSR_IA32_MISC_ENABLE_TCC_BIT 1
+#define MSR_IA32_MISC_ENABLE_TCC (1ULL << MSR_IA32_MISC_ENABLE_TCC_BIT)
+#define MSR_IA32_MISC_ENABLE_EMON_BIT 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP (1ULL << 16)
-#define MSR_IA32_MISC_ENABLE_MWAIT (1ULL << 18)
-#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID (1ULL << 22)
-#define MSR_IA32_MISC_ENABLE_XTPR_DISABLE (1ULL << 23)
+#define MSR_IA32_MISC_ENABLE_EMON (1ULL << MSR_IA32_MISC_ENABLE_EMON_BIT)
+#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL_BIT 11
+#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL (1ULL << MSR_IA32_MISC_ENABLE_BTS_UNAVAIL_BIT)
+#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL_BIT 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_IA32_MISC_ENABLE_XD_DISABLE (1ULL << 34)
-#define MSR_IA32_MISC_ENABLE_X87_COMPAT (1ULL << 2)
-#define MSR_IA32_MISC_ENABLE_TM1 (1ULL << 3)
-#define MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE (1ULL << 4)
+#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL (1ULL << MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL_BIT)
+#define MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP_BIT 16
+#define MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP (1ULL << MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP_BIT)
+#define MSR_IA32_MISC_ENABLE_MWAIT_BIT 18
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE (1ULL << 6)
-#define MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK (1ULL << 8)
-#define MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE (1ULL << 9)
-#define MSR_IA32_MISC_ENABLE_FERR (1ULL << 10)
+#define MSR_IA32_MISC_ENABLE_MWAIT (1ULL << MSR_IA32_MISC_ENABLE_MWAIT_BIT)
+#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID_BIT 22
+#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID (1ULL << MSR_IA32_MISC_ENABLE_LIMIT_CPUID_BIT)
+#define MSR_IA32_MISC_ENABLE_XTPR_DISABLE_BIT 23
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX (1ULL << 10)
-#define MSR_IA32_MISC_ENABLE_TM2 (1ULL << 13)
-#define MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE (1ULL << 19)
-#define MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK (1ULL << 20)
+#define MSR_IA32_MISC_ENABLE_XTPR_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_XTPR_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_XD_DISABLE_BIT 34
+#define MSR_IA32_MISC_ENABLE_XD_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_XD_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_X87_COMPAT_BIT 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSR_IA32_MISC_ENABLE_L1D_CONTEXT (1ULL << 24)
-#define MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE (1ULL << 37)
-#define MSR_IA32_MISC_ENABLE_TURBO_DISABLE (1ULL << 38)
-#define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE (1ULL << 39)
+#define MSR_IA32_MISC_ENABLE_X87_COMPAT (1ULL << MSR_IA32_MISC_ENABLE_X87_COMPAT_BIT)
+#define MSR_IA32_MISC_ENABLE_TM1_BIT 3
+#define MSR_IA32_MISC_ENABLE_TM1 (1ULL << MSR_IA32_MISC_ENABLE_TM1_BIT)
+#define MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE_BIT 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE_BIT 6
+#define MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK_BIT 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK (1ULL << MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK_BIT)
+#define MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE_BIT 9
+#define MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_FERR_BIT 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MISC_ENABLE_FERR (1ULL << MSR_IA32_MISC_ENABLE_FERR_BIT)
+#define MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX_BIT 10
+#define MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX (1ULL << MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX_BIT)
+#define MSR_IA32_MISC_ENABLE_TM2_BIT 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MISC_ENABLE_TM2 (1ULL << MSR_IA32_MISC_ENABLE_TM2_BIT)
+#define MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE_BIT 19
+#define MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK_BIT 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK (1ULL << MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK_BIT)
+#define MSR_IA32_MISC_ENABLE_L1D_CONTEXT_BIT 24
+#define MSR_IA32_MISC_ENABLE_L1D_CONTEXT (1ULL << MSR_IA32_MISC_ENABLE_L1D_CONTEXT_BIT)
+#define MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE_BIT 37
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_TURBO_DISABLE_BIT 38
+#define MSR_IA32_MISC_ENABLE_TURBO_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_TURBO_DISABLE_BIT)
+#define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE_BIT 39
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE (1ULL << MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE_BIT)
 #define MSR_IA32_TSC_DEADLINE 0x000006E0
 #define MSR_IA32_MCG_EAX 0x00000180
 #define MSR_IA32_MCG_EBX 0x00000181
-#define MSR_IA32_MCG_ECX 0x00000182
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MCG_ECX 0x00000182
 #define MSR_IA32_MCG_EDX 0x00000183
 #define MSR_IA32_MCG_ESI 0x00000184
 #define MSR_IA32_MCG_EDI 0x00000185
-#define MSR_IA32_MCG_EBP 0x00000186
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MCG_EBP 0x00000186
 #define MSR_IA32_MCG_ESP 0x00000187
 #define MSR_IA32_MCG_EFLAGS 0x00000188
 #define MSR_IA32_MCG_EIP 0x00000189
-#define MSR_IA32_MCG_RESERVED 0x0000018a
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_MCG_RESERVED 0x0000018a
 #define MSR_P4_BPU_PERFCTR0 0x00000300
 #define MSR_P4_BPU_PERFCTR1 0x00000301
 #define MSR_P4_BPU_PERFCTR2 0x00000302
-#define MSR_P4_BPU_PERFCTR3 0x00000303
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_BPU_PERFCTR3 0x00000303
 #define MSR_P4_MS_PERFCTR0 0x00000304
 #define MSR_P4_MS_PERFCTR1 0x00000305
 #define MSR_P4_MS_PERFCTR2 0x00000306
-#define MSR_P4_MS_PERFCTR3 0x00000307
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_MS_PERFCTR3 0x00000307
 #define MSR_P4_FLAME_PERFCTR0 0x00000308
 #define MSR_P4_FLAME_PERFCTR1 0x00000309
 #define MSR_P4_FLAME_PERFCTR2 0x0000030a
-#define MSR_P4_FLAME_PERFCTR3 0x0000030b
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_FLAME_PERFCTR3 0x0000030b
 #define MSR_P4_IQ_PERFCTR0 0x0000030c
 #define MSR_P4_IQ_PERFCTR1 0x0000030d
 #define MSR_P4_IQ_PERFCTR2 0x0000030e
-#define MSR_P4_IQ_PERFCTR3 0x0000030f
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_IQ_PERFCTR3 0x0000030f
 #define MSR_P4_IQ_PERFCTR4 0x00000310
 #define MSR_P4_IQ_PERFCTR5 0x00000311
 #define MSR_P4_BPU_CCCR0 0x00000360
-#define MSR_P4_BPU_CCCR1 0x00000361
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_BPU_CCCR1 0x00000361
 #define MSR_P4_BPU_CCCR2 0x00000362
 #define MSR_P4_BPU_CCCR3 0x00000363
 #define MSR_P4_MS_CCCR0 0x00000364
-#define MSR_P4_MS_CCCR1 0x00000365
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_MS_CCCR1 0x00000365
 #define MSR_P4_MS_CCCR2 0x00000366
 #define MSR_P4_MS_CCCR3 0x00000367
 #define MSR_P4_FLAME_CCCR0 0x00000368
-#define MSR_P4_FLAME_CCCR1 0x00000369
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_FLAME_CCCR1 0x00000369
 #define MSR_P4_FLAME_CCCR2 0x0000036a
 #define MSR_P4_FLAME_CCCR3 0x0000036b
 #define MSR_P4_IQ_CCCR0 0x0000036c
-#define MSR_P4_IQ_CCCR1 0x0000036d
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_IQ_CCCR1 0x0000036d
 #define MSR_P4_IQ_CCCR2 0x0000036e
 #define MSR_P4_IQ_CCCR3 0x0000036f
 #define MSR_P4_IQ_CCCR4 0x00000370
-#define MSR_P4_IQ_CCCR5 0x00000371
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_IQ_CCCR5 0x00000371
 #define MSR_P4_ALF_ESCR0 0x000003ca
 #define MSR_P4_ALF_ESCR1 0x000003cb
 #define MSR_P4_BPU_ESCR0 0x000003b2
-#define MSR_P4_BPU_ESCR1 0x000003b3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_BPU_ESCR1 0x000003b3
 #define MSR_P4_BSU_ESCR0 0x000003a0
 #define MSR_P4_BSU_ESCR1 0x000003a1
 #define MSR_P4_CRU_ESCR0 0x000003b8
-#define MSR_P4_CRU_ESCR1 0x000003b9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_CRU_ESCR1 0x000003b9
 #define MSR_P4_CRU_ESCR2 0x000003cc
 #define MSR_P4_CRU_ESCR3 0x000003cd
 #define MSR_P4_CRU_ESCR4 0x000003e0
-#define MSR_P4_CRU_ESCR5 0x000003e1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_CRU_ESCR5 0x000003e1
 #define MSR_P4_DAC_ESCR0 0x000003a8
 #define MSR_P4_DAC_ESCR1 0x000003a9
 #define MSR_P4_FIRM_ESCR0 0x000003a4
-#define MSR_P4_FIRM_ESCR1 0x000003a5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_FIRM_ESCR1 0x000003a5
 #define MSR_P4_FLAME_ESCR0 0x000003a6
 #define MSR_P4_FLAME_ESCR1 0x000003a7
 #define MSR_P4_FSB_ESCR0 0x000003a2
-#define MSR_P4_FSB_ESCR1 0x000003a3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_FSB_ESCR1 0x000003a3
 #define MSR_P4_IQ_ESCR0 0x000003ba
 #define MSR_P4_IQ_ESCR1 0x000003bb
 #define MSR_P4_IS_ESCR0 0x000003b4
-#define MSR_P4_IS_ESCR1 0x000003b5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_IS_ESCR1 0x000003b5
 #define MSR_P4_ITLB_ESCR0 0x000003b6
 #define MSR_P4_ITLB_ESCR1 0x000003b7
 #define MSR_P4_IX_ESCR0 0x000003c8
-#define MSR_P4_IX_ESCR1 0x000003c9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_IX_ESCR1 0x000003c9
 #define MSR_P4_MOB_ESCR0 0x000003aa
 #define MSR_P4_MOB_ESCR1 0x000003ab
 #define MSR_P4_MS_ESCR0 0x000003c0
-#define MSR_P4_MS_ESCR1 0x000003c1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_MS_ESCR1 0x000003c1
 #define MSR_P4_PMH_ESCR0 0x000003ac
 #define MSR_P4_PMH_ESCR1 0x000003ad
 #define MSR_P4_RAT_ESCR0 0x000003bc
-#define MSR_P4_RAT_ESCR1 0x000003bd
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_RAT_ESCR1 0x000003bd
 #define MSR_P4_SAAT_ESCR0 0x000003ae
 #define MSR_P4_SAAT_ESCR1 0x000003af
 #define MSR_P4_SSU_ESCR0 0x000003be
-#define MSR_P4_SSU_ESCR1 0x000003bf
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_SSU_ESCR1 0x000003bf
 #define MSR_P4_TBPU_ESCR0 0x000003c2
 #define MSR_P4_TBPU_ESCR1 0x000003c3
 #define MSR_P4_TC_ESCR0 0x000003c4
-#define MSR_P4_TC_ESCR1 0x000003c5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_P4_TC_ESCR1 0x000003c5
 #define MSR_P4_U2L_ESCR0 0x000003b0
 #define MSR_P4_U2L_ESCR1 0x000003b1
 #define MSR_P4_PEBS_MATRIX_VERT 0x000003f2
-#define MSR_CORE_PERF_FIXED_CTR0 0x00000309
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_CORE_PERF_FIXED_CTR0 0x00000309
 #define MSR_CORE_PERF_FIXED_CTR1 0x0000030a
 #define MSR_CORE_PERF_FIXED_CTR2 0x0000030b
 #define MSR_CORE_PERF_FIXED_CTR_CTRL 0x0000038d
-#define MSR_CORE_PERF_GLOBAL_STATUS 0x0000038e
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_CORE_PERF_GLOBAL_STATUS 0x0000038e
 #define MSR_CORE_PERF_GLOBAL_CTRL 0x0000038f
 #define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x00000390
 #define MSR_GEODE_BUSCONT_CONF0 0x00001900
-#define MSR_IA32_VMX_BASIC 0x00000480
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_VMX_BASIC 0x00000480
 #define MSR_IA32_VMX_PINBASED_CTLS 0x00000481
 #define MSR_IA32_VMX_PROCBASED_CTLS 0x00000482
 #define MSR_IA32_VMX_EXIT_CTLS 0x00000483
-#define MSR_IA32_VMX_ENTRY_CTLS 0x00000484
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_VMX_ENTRY_CTLS 0x00000484
 #define MSR_IA32_VMX_MISC 0x00000485
 #define MSR_IA32_VMX_CR0_FIXED0 0x00000486
 #define MSR_IA32_VMX_CR0_FIXED1 0x00000487
-#define MSR_IA32_VMX_CR4_FIXED0 0x00000488
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_VMX_CR4_FIXED0 0x00000488
 #define MSR_IA32_VMX_CR4_FIXED1 0x00000489
 #define MSR_IA32_VMX_VMCS_ENUM 0x0000048a
 #define MSR_IA32_VMX_PROCBASED_CTLS2 0x0000048b
-#define MSR_IA32_VMX_EPT_VPID_CAP 0x0000048c
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_VMX_EPT_VPID_CAP 0x0000048c
 #define MSR_IA32_VMX_TRUE_PINBASED_CTLS 0x0000048d
 #define MSR_IA32_VMX_TRUE_PROCBASED_CTLS 0x0000048e
 #define MSR_IA32_VMX_TRUE_EXIT_CTLS 0x0000048f
-#define MSR_IA32_VMX_TRUE_ENTRY_CTLS 0x00000490
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSR_IA32_VMX_TRUE_ENTRY_CTLS 0x00000490
 #define MSR_IA32_VMX_VMFUNC 0x00000491
 #define VMX_BASIC_VMCS_SIZE_SHIFT 32
+#define VMX_BASIC_TRUE_CTLS (1ULL << 55)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMX_BASIC_64 0x0001000000000000LLU
 #define VMX_BASIC_MEM_TYPE_SHIFT 50
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMX_BASIC_MEM_TYPE_MASK 0x003c000000000000LLU
 #define VMX_BASIC_MEM_TYPE_WB 6LLU
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMX_BASIC_INOUT 0x0040000000000000LLU
 #define MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS (1ULL << 29)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_VMX_MISC_PREEMPTION_TIMER_SCALE 0x1F
 #define MSR_VM_CR 0xc0010114
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_VM_IGNNE 0xc0010115
 #define MSR_VM_HSAVE_PA 0xc0010117
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/mtrr.h b/libc/kernel/uapi/asm-x86/asm/mtrr.h
index 1fd101c..135fa33 100644
--- a/libc/kernel/uapi/asm-x86/asm/mtrr.h
+++ b/libc/kernel/uapi/asm-x86/asm/mtrr.h
@@ -26,54 +26,54 @@
 #ifdef __i386__
 struct mtrr_sentry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long base;
- unsigned int size;
- unsigned int type;
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtrr_gentry {
- unsigned int regnum;
- unsigned long base;
- unsigned int size;
+  unsigned int regnum;
+  unsigned long base;
+  unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int type;
+  unsigned int type;
 };
 #else
 struct mtrr_sentry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 base;
- __u32 size;
- __u32 type;
+  __u64 base;
+  __u32 size;
+  __u32 type;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtrr_gentry {
- __u64 base;
- __u32 size;
- __u32 regnum;
+  __u64 base;
+  __u32 size;
+  __u32 regnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 _pad;
+  __u32 type;
+  __u32 _pad;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtrr_var_range {
- __u32 base_lo;
- __u32 base_hi;
- __u32 mask_lo;
+  __u32 base_lo;
+  __u32 base_hi;
+  __u32 mask_lo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mask_hi;
+  __u32 mask_hi;
 };
 typedef __u8 mtrr_type;
 #define MTRR_NUM_FIXED_RANGES 88
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTRR_MAX_VAR_RANGES 256
 struct mtrr_state_type {
- struct mtrr_var_range var_ranges[MTRR_MAX_VAR_RANGES];
- mtrr_type fixed_ranges[MTRR_NUM_FIXED_RANGES];
+  struct mtrr_var_range var_ranges[MTRR_MAX_VAR_RANGES];
+  mtrr_type fixed_ranges[MTRR_NUM_FIXED_RANGES];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char enabled;
- unsigned char have_fixed;
- mtrr_type def_type;
+  unsigned char enabled;
+  unsigned char have_fixed;
+  mtrr_type def_type;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
diff --git a/libc/kernel/uapi/asm-x86/asm/perf_regs.h b/libc/kernel/uapi/asm-x86/asm/perf_regs.h
index 61db4e0..a651919 100644
--- a/libc/kernel/uapi/asm-x86/asm/perf_regs.h
+++ b/libc/kernel/uapi/asm-x86/asm/perf_regs.h
@@ -19,38 +19,38 @@
 #ifndef _ASM_X86_PERF_REGS_H
 #define _ASM_X86_PERF_REGS_H
 enum perf_event_x86_regs {
- PERF_REG_X86_AX,
+  PERF_REG_X86_AX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_X86_BX,
- PERF_REG_X86_CX,
- PERF_REG_X86_DX,
- PERF_REG_X86_SI,
+  PERF_REG_X86_BX,
+  PERF_REG_X86_CX,
+  PERF_REG_X86_DX,
+  PERF_REG_X86_SI,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_X86_DI,
- PERF_REG_X86_BP,
- PERF_REG_X86_SP,
- PERF_REG_X86_IP,
+  PERF_REG_X86_DI,
+  PERF_REG_X86_BP,
+  PERF_REG_X86_SP,
+  PERF_REG_X86_IP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_X86_FLAGS,
- PERF_REG_X86_CS,
- PERF_REG_X86_SS,
- PERF_REG_X86_DS,
+  PERF_REG_X86_FLAGS,
+  PERF_REG_X86_CS,
+  PERF_REG_X86_SS,
+  PERF_REG_X86_DS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_X86_ES,
- PERF_REG_X86_FS,
- PERF_REG_X86_GS,
- PERF_REG_X86_R8,
+  PERF_REG_X86_ES,
+  PERF_REG_X86_FS,
+  PERF_REG_X86_GS,
+  PERF_REG_X86_R8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_X86_R9,
- PERF_REG_X86_R10,
- PERF_REG_X86_R11,
- PERF_REG_X86_R12,
+  PERF_REG_X86_R9,
+  PERF_REG_X86_R10,
+  PERF_REG_X86_R11,
+  PERF_REG_X86_R12,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_X86_R13,
- PERF_REG_X86_R14,
- PERF_REG_X86_R15,
- PERF_REG_X86_32_MAX = PERF_REG_X86_GS + 1,
+  PERF_REG_X86_R13,
+  PERF_REG_X86_R14,
+  PERF_REG_X86_R15,
+  PERF_REG_X86_32_MAX = PERF_REG_X86_GS + 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_REG_X86_64_MAX = PERF_REG_X86_R15 + 1,
+  PERF_REG_X86_64_MAX = PERF_REG_X86_R15 + 1,
 };
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/processor-flags.h b/libc/kernel/uapi/asm-x86/asm/processor-flags.h
index aead779..3c36ddc 100644
--- a/libc/kernel/uapi/asm-x86/asm/processor-flags.h
+++ b/libc/kernel/uapi/asm-x86/asm/processor-flags.h
@@ -46,7 +46,7 @@
 #define X86_EFLAGS_OF _BITUL(X86_EFLAGS_OF_BIT)
 #define X86_EFLAGS_IOPL_BIT 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define X86_EFLAGS_IOPL (_AC(3,UL) << X86_EFLAGS_IOPL_BIT)
+#define X86_EFLAGS_IOPL (_AC(3, UL) << X86_EFLAGS_IOPL_BIT)
 #define X86_EFLAGS_NT_BIT 14
 #define X86_EFLAGS_NT _BITUL(X86_EFLAGS_NT_BIT)
 #define X86_EFLAGS_RF_BIT 16
@@ -99,7 +99,7 @@
 #define X86_CR3_PWT _BITUL(X86_CR3_PWT_BIT)
 #define X86_CR3_PCD_BIT 4
 #define X86_CR3_PCD _BITUL(X86_CR3_PCD_BIT)
-#define X86_CR3_PCID_MASK _AC(0x00000fff,UL)
+#define X86_CR3_PCID_MASK _AC(0x00000fff, UL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR4_VME_BIT 0
 #define X86_CR4_VME _BITUL(X86_CR4_VME_BIT)
@@ -146,7 +146,7 @@
 #define X86_CR4_SMAP_BIT 21
 #define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define X86_CR8_TPR _AC(0x0000000f,UL)
+#define X86_CR8_TPR _AC(0x0000000f, UL)
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
 #define CX86_CCR0 0xc0
diff --git a/libc/kernel/uapi/asm-x86/asm/ptrace.h b/libc/kernel/uapi/asm-x86/asm/ptrace.h
index 2efb9c4..802d809 100644
--- a/libc/kernel/uapi/asm-x86/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-x86/asm/ptrace.h
@@ -26,57 +26,57 @@
 #ifdef __i386__
 struct pt_regs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long ebx;
- long ecx;
- long edx;
- long esi;
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long edi;
- long ebp;
- long eax;
- int xds;
+  long edi;
+  long ebp;
+  long eax;
+  int xds;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int xes;
- int xfs;
- int xgs;
- long orig_eax;
+  int xes;
+  int xfs;
+  int xgs;
+  long orig_eax;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long eip;
- int xcs;
- long eflags;
- long esp;
+  long eip;
+  int xcs;
+  long eflags;
+  long esp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int xss;
+  int xss;
 };
 #else
 struct pt_regs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long r15;
- unsigned long r14;
- unsigned long r13;
- unsigned long r12;
+  unsigned long r15;
+  unsigned long r14;
+  unsigned long r13;
+  unsigned long r12;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long rbp;
- unsigned long rbx;
- unsigned long r11;
- unsigned long r10;
+  unsigned long rbp;
+  unsigned long rbx;
+  unsigned long r11;
+  unsigned long r10;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long r9;
- unsigned long r8;
- unsigned long rax;
- unsigned long rcx;
+  unsigned long r9;
+  unsigned long r8;
+  unsigned long rax;
+  unsigned long rcx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long rdx;
- unsigned long rsi;
- unsigned long rdi;
- unsigned long orig_rax;
+  unsigned long rdx;
+  unsigned long rsi;
+  unsigned long rdi;
+  unsigned long orig_rax;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long rip;
- unsigned long cs;
- unsigned long eflags;
- unsigned long rsp;
+  unsigned long rip;
+  unsigned long cs;
+  unsigned long eflags;
+  unsigned long rsp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long ss;
+  unsigned long ss;
 };
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/sembuf.h b/libc/kernel/uapi/asm-x86/asm/sembuf.h
index 41d3b2a..b7c0dbe 100644
--- a/libc/kernel/uapi/asm-x86/asm/sembuf.h
+++ b/libc/kernel/uapi/asm-x86/asm/sembuf.h
@@ -19,16 +19,16 @@
 #ifndef _ASM_X86_SEMBUF_H
 #define _ASM_X86_SEMBUF_H
 struct semid64_ds {
- struct ipc64_perm sem_perm;
+  struct ipc64_perm sem_perm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t sem_otime;
- __kernel_ulong_t __unused1;
- __kernel_time_t sem_ctime;
- __kernel_ulong_t __unused2;
+  __kernel_time_t sem_otime;
+  __kernel_ulong_t __unused1;
+  __kernel_time_t sem_ctime;
+  __kernel_ulong_t __unused2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t sem_nsems;
- __kernel_ulong_t __unused3;
- __kernel_ulong_t __unused4;
+  __kernel_ulong_t sem_nsems;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/sigcontext.h b/libc/kernel/uapi/asm-x86/asm/sigcontext.h
index 7fe3128..b925d44 100644
--- a/libc/kernel/uapi/asm-x86/asm/sigcontext.h
+++ b/libc/kernel/uapi/asm-x86/asm/sigcontext.h
@@ -26,168 +26,168 @@
 #define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
 struct _fpx_sw_bytes {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 magic1;
- __u32 extended_size;
- __u64 xstate_bv;
- __u32 xstate_size;
+  __u32 magic1;
+  __u32 extended_size;
+  __u64 xstate_bv;
+  __u32 xstate_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 padding[7];
+  __u32 padding[7];
 };
 #ifdef __i386__
 struct _fpreg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short significand[4];
- unsigned short exponent;
+  unsigned short significand[4];
+  unsigned short exponent;
 };
 struct _fpxreg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short significand[4];
- unsigned short exponent;
- unsigned short padding[3];
+  unsigned short significand[4];
+  unsigned short exponent;
+  unsigned short padding[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _xmmreg {
- unsigned long element[4];
+  unsigned long element[4];
 };
 struct _fpstate {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long cw;
- unsigned long sw;
- unsigned long tag;
- unsigned long ipoff;
+  unsigned long cw;
+  unsigned long sw;
+  unsigned long tag;
+  unsigned long ipoff;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long cssel;
- unsigned long dataoff;
- unsigned long datasel;
- struct _fpreg _st[8];
+  unsigned long cssel;
+  unsigned long dataoff;
+  unsigned long datasel;
+  struct _fpreg _st[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short status;
- unsigned short magic;
- unsigned long _fxsr_env[6];
- unsigned long mxcsr;
+  unsigned short status;
+  unsigned short magic;
+  unsigned long _fxsr_env[6];
+  unsigned long mxcsr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long reserved;
- struct _fpxreg _fxsr_st[8];
- struct _xmmreg _xmm[8];
- unsigned long padding1[44];
+  unsigned long reserved;
+  struct _fpxreg _fxsr_st[8];
+  struct _xmmreg _xmm[8];
+  unsigned long padding1[44];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- unsigned long padding2[12];
- struct _fpx_sw_bytes sw_reserved;
- };
+  union {
+    unsigned long padding2[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define X86_FXSR_MAGIC 0x0000
 struct sigcontext {
- unsigned short gs, __gsh;
+  unsigned short gs, __gsh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short fs, __fsh;
- unsigned short es, __esh;
- unsigned short ds, __dsh;
- unsigned long edi;
+  unsigned short fs, __fsh;
+  unsigned short es, __esh;
+  unsigned short ds, __dsh;
+  unsigned long edi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long esi;
- unsigned long ebp;
- unsigned long esp;
- unsigned long ebx;
+  unsigned long esi;
+  unsigned long ebp;
+  unsigned long esp;
+  unsigned long ebx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long edx;
- unsigned long ecx;
- unsigned long eax;
- unsigned long trapno;
+  unsigned long edx;
+  unsigned long ecx;
+  unsigned long eax;
+  unsigned long trapno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long err;
- unsigned long eip;
- unsigned short cs, __csh;
- unsigned long eflags;
+  unsigned long err;
+  unsigned long eip;
+  unsigned short cs, __csh;
+  unsigned long eflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long esp_at_signal;
- unsigned short ss, __ssh;
- struct _fpstate __user *fpstate;
- unsigned long oldmask;
+  unsigned long esp_at_signal;
+  unsigned short ss, __ssh;
+  struct _fpstate __user * fpstate;
+  unsigned long oldmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long cr2;
+  unsigned long cr2;
 };
 #else
 struct _fpstate {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 cwd;
- __u16 swd;
- __u16 twd;
- __u16 fop;
+  __u16 cwd;
+  __u16 swd;
+  __u16 twd;
+  __u16 fop;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rip;
- __u64 rdp;
- __u32 mxcsr;
- __u32 mxcsr_mask;
+  __u64 rip;
+  __u64 rdp;
+  __u32 mxcsr;
+  __u32 mxcsr_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 st_space[32];
- __u32 xmm_space[64];
- __u32 reserved2[12];
- union {
+  __u32 st_space[32];
+  __u32 xmm_space[64];
+  __u32 reserved2[12];
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved3[12];
- struct _fpx_sw_bytes sw_reserved;
- };
+    __u32 reserved3[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sigcontext {
- __u64 r8;
- __u64 r9;
- __u64 r10;
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 r11;
- __u64 r12;
- __u64 r13;
- __u64 r14;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 r15;
- __u64 rdi;
- __u64 rsi;
- __u64 rbp;
+  __u64 r15;
+  __u64 rdi;
+  __u64 rsi;
+  __u64 rbp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rbx;
- __u64 rdx;
- __u64 rax;
- __u64 rcx;
+  __u64 rbx;
+  __u64 rdx;
+  __u64 rax;
+  __u64 rcx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rsp;
- __u64 rip;
- __u64 eflags;
- __u16 cs;
+  __u64 rsp;
+  __u64 rip;
+  __u64 eflags;
+  __u16 cs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 gs;
- __u16 fs;
- __u16 __pad0;
- __u64 err;
+  __u16 gs;
+  __u16 fs;
+  __u16 __pad0;
+  __u64 err;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 trapno;
- __u64 oldmask;
- __u64 cr2;
- struct _fpstate __user *fpstate;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  struct _fpstate __user * fpstate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __ILP32__
- __u32 __fpstate_pad;
+  __u32 __fpstate_pad;
 #endif
- __u64 reserved1[8];
+  __u64 reserved1[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
 struct _xsave_hdr {
- __u64 xstate_bv;
+  __u64 xstate_bv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved1[2];
- __u64 reserved2[5];
+  __u64 reserved1[2];
+  __u64 reserved2[5];
 };
 struct _ymmh_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ymmh_space[64];
+  __u32 ymmh_space[64];
 };
 struct _xstate {
- struct _fpstate fpstate;
+  struct _fpstate fpstate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct _xsave_hdr xstate_hdr;
- struct _ymmh_state ymmh;
+  struct _xsave_hdr xstate_hdr;
+  struct _ymmh_state ymmh;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/sigcontext32.h b/libc/kernel/uapi/asm-x86/asm/sigcontext32.h
index 35585df..8f38dfd 100644
--- a/libc/kernel/uapi/asm-x86/asm/sigcontext32.h
+++ b/libc/kernel/uapi/asm-x86/asm/sigcontext32.h
@@ -22,75 +22,75 @@
 #define X86_FXSR_MAGIC 0x0000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _fpreg {
- unsigned short significand[4];
- unsigned short exponent;
+  unsigned short significand[4];
+  unsigned short exponent;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _fpxreg {
- unsigned short significand[4];
- unsigned short exponent;
- unsigned short padding[3];
+  unsigned short significand[4];
+  unsigned short exponent;
+  unsigned short padding[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct _xmmreg {
- __u32 element[4];
+  __u32 element[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _fpstate_ia32 {
- __u32 cw;
- __u32 sw;
- __u32 tag;
+  __u32 cw;
+  __u32 sw;
+  __u32 tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ipoff;
- __u32 cssel;
- __u32 dataoff;
- __u32 datasel;
+  __u32 ipoff;
+  __u32 cssel;
+  __u32 dataoff;
+  __u32 datasel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct _fpreg _st[8];
- unsigned short status;
- unsigned short magic;
- __u32 _fxsr_env[6];
+  struct _fpreg _st[8];
+  unsigned short status;
+  unsigned short magic;
+  __u32 _fxsr_env[6];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mxcsr;
- __u32 reserved;
- struct _fpxreg _fxsr_st[8];
- struct _xmmreg _xmm[8];
+  __u32 mxcsr;
+  __u32 reserved;
+  struct _fpxreg _fxsr_st[8];
+  struct _xmmreg _xmm[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 padding[44];
- union {
- __u32 padding2[12];
- struct _fpx_sw_bytes sw_reserved;
+  __u32 padding[44];
+  union {
+    __u32 padding2[12];
+    struct _fpx_sw_bytes sw_reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+  };
 };
 struct sigcontext_ia32 {
- unsigned short gs, __gsh;
+  unsigned short gs, __gsh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short fs, __fsh;
- unsigned short es, __esh;
- unsigned short ds, __dsh;
- unsigned int di;
+  unsigned short fs, __fsh;
+  unsigned short es, __esh;
+  unsigned short ds, __dsh;
+  unsigned int di;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int si;
- unsigned int bp;
- unsigned int sp;
- unsigned int bx;
+  unsigned int si;
+  unsigned int bp;
+  unsigned int sp;
+  unsigned int bx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dx;
- unsigned int cx;
- unsigned int ax;
- unsigned int trapno;
+  unsigned int dx;
+  unsigned int cx;
+  unsigned int ax;
+  unsigned int trapno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int err;
- unsigned int ip;
- unsigned short cs, __csh;
- unsigned int flags;
+  unsigned int err;
+  unsigned int ip;
+  unsigned short cs, __csh;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int sp_at_signal;
- unsigned short ss, __ssh;
- unsigned int fpstate;
- unsigned int oldmask;
+  unsigned int sp_at_signal;
+  unsigned short ss, __ssh;
+  unsigned int fpstate;
+  unsigned int oldmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cr2;
+  unsigned int cr2;
 };
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/signal.h b/libc/kernel/uapi/asm-x86/asm/signal.h
index 308c7a9..dba268f 100644
--- a/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -93,33 +93,33 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __i386__
 struct sigaction {
- union {
- __sighandler_t _sa_handler;
+  union {
+    __sighandler_t _sa_handler;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void (*_sa_sigaction)(int, struct siginfo *, void *);
- } _u;
- sigset_t sa_mask;
- unsigned long sa_flags;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void (*sa_restorer)(void);
+  void(* sa_restorer) (void);
 };
 #define sa_handler _u._sa_handler
 #define sa_sigaction _u._sa_sigaction
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 struct sigaction {
- __sighandler_t sa_handler;
- unsigned long sa_flags;
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __sigrestore_t sa_restorer;
- sigset_t sa_mask;
+  __sigrestore_t sa_restorer;
+  sigset_t sa_mask;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct sigaltstack {
- void __user *ss_sp;
- int ss_flags;
- size_t ss_size;
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } stack_t;
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/stat.h b/libc/kernel/uapi/asm-x86/asm/stat.h
index aebacbd..c11fdfd 100644
--- a/libc/kernel/uapi/asm-x86/asm/stat.h
+++ b/libc/kernel/uapi/asm-x86/asm/stat.h
@@ -23,111 +23,114 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __i386__
 struct stat {
- unsigned long st_dev;
- unsigned long st_ino;
+  unsigned long st_dev;
+  unsigned long st_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short st_mode;
- unsigned short st_nlink;
- unsigned short st_uid;
- unsigned short st_gid;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_rdev;
- unsigned long st_size;
- unsigned long st_blksize;
- unsigned long st_blocks;
+  unsigned long st_rdev;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_atime;
- unsigned long st_atime_nsec;
- unsigned long st_mtime;
- unsigned long st_mtime_nsec;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_ctime;
- unsigned long st_ctime_nsec;
- unsigned long __unused4;
- unsigned long __unused5;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define INIT_STRUCT_STAT_PADDING(st) do {   st.__unused4 = 0;   st.__unused5 = 0;  } while (0)
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__unused4 = 0; st.__unused5 = 0; \
+} while(0)
 #define STAT64_HAS_BROKEN_ST_INO 1
 struct stat64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long long st_dev;
- unsigned char __pad0[4];
- unsigned long __st_ino;
- unsigned int st_mode;
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
+  unsigned long __st_ino;
+  unsigned int st_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_nlink;
- unsigned long st_uid;
- unsigned long st_gid;
- unsigned long long st_rdev;
+  unsigned int st_nlink;
+  unsigned long st_uid;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char __pad3[4];
- long long st_size;
- unsigned long st_blksize;
- unsigned long long st_blocks;
+  unsigned char __pad3[4];
+  long long st_size;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_atime;
- unsigned long st_atime_nsec;
- unsigned long st_mtime;
- unsigned int st_mtime_nsec;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned int st_mtime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_ctime;
- unsigned long st_ctime_nsec;
- unsigned long long st_ino;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long long st_ino;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define INIT_STRUCT_STAT64_PADDING(st) do {   memset(&st.__pad0, 0, sizeof(st.__pad0));   memset(&st.__pad3, 0, sizeof(st.__pad3));  } while (0)
+#define INIT_STRUCT_STAT64_PADDING(st) do { memset(& st.__pad0, 0, sizeof(st.__pad0)); memset(& st.__pad3, 0, sizeof(st.__pad3)); \
+} while(0)
 #else
 struct stat {
- __kernel_ulong_t st_dev;
+  __kernel_ulong_t st_dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t st_ino;
- __kernel_ulong_t st_nlink;
- unsigned int st_mode;
- unsigned int st_uid;
+  __kernel_ulong_t st_ino;
+  __kernel_ulong_t st_nlink;
+  unsigned int st_mode;
+  unsigned int st_uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_gid;
- unsigned int __pad0;
- __kernel_ulong_t st_rdev;
- __kernel_long_t st_size;
+  unsigned int st_gid;
+  unsigned int __pad0;
+  __kernel_ulong_t st_rdev;
+  __kernel_long_t st_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t st_blksize;
- __kernel_long_t st_blocks;
- __kernel_ulong_t st_atime;
- __kernel_ulong_t st_atime_nsec;
+  __kernel_long_t st_blksize;
+  __kernel_long_t st_blocks;
+  __kernel_ulong_t st_atime;
+  __kernel_ulong_t st_atime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t st_mtime;
- __kernel_ulong_t st_mtime_nsec;
- __kernel_ulong_t st_ctime;
- __kernel_ulong_t st_ctime_nsec;
+  __kernel_ulong_t st_mtime;
+  __kernel_ulong_t st_mtime_nsec;
+  __kernel_ulong_t st_ctime;
+  __kernel_ulong_t st_ctime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t __linux_unused[3];
+  __kernel_long_t __linux_unused[3];
 };
-#define INIT_STRUCT_STAT_PADDING(st) do {   st.__pad0 = 0;   st.__linux_unused[0] = 0;   st.__linux_unused[1] = 0;   st.__linux_unused[2] = 0;  } while (0)
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__pad0 = 0; st.__linux_unused[0] = 0; st.__linux_unused[1] = 0; st.__linux_unused[2] = 0; \
+} while(0)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __old_kernel_stat {
- unsigned short st_dev;
- unsigned short st_ino;
- unsigned short st_mode;
+  unsigned short st_dev;
+  unsigned short st_ino;
+  unsigned short st_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short st_nlink;
- unsigned short st_uid;
- unsigned short st_gid;
- unsigned short st_rdev;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned short st_rdev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __i386__
- unsigned long st_size;
- unsigned long st_atime;
- unsigned long st_mtime;
+  unsigned long st_size;
+  unsigned long st_atime;
+  unsigned long st_mtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long st_ctime;
+  unsigned long st_ctime;
 #else
- unsigned int st_size;
- unsigned int st_atime;
+  unsigned int st_size;
+  unsigned int st_atime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int st_mtime;
- unsigned int st_ctime;
+  unsigned int st_mtime;
+  unsigned int st_ctime;
 #endif
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/asm-x86/asm/statfs.h b/libc/kernel/uapi/asm-x86/asm/statfs.h
index efc8d06..3174035 100644
--- a/libc/kernel/uapi/asm-x86/asm/statfs.h
+++ b/libc/kernel/uapi/asm-x86/asm/statfs.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _ASM_X86_STATFS_H
 #define _ASM_X86_STATFS_H
-#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4)))
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
 #include <asm-generic/statfs.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/svm.h b/libc/kernel/uapi/asm-x86/asm/svm.h
index 85231e8..1ee4fd8 100644
--- a/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -108,7 +108,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SVM_EXIT_XSETBV 0x08d
 #define SVM_EXIT_NPF 0x400
-#define SVM_EXIT_ERR -1
-#define SVM_EXIT_REASONS   { SVM_EXIT_READ_CR0, "read_cr0" },   { SVM_EXIT_READ_CR3, "read_cr3" },   { SVM_EXIT_READ_CR4, "read_cr4" },   { SVM_EXIT_READ_CR8, "read_cr8" },   { SVM_EXIT_WRITE_CR0, "write_cr0" },   { SVM_EXIT_WRITE_CR3, "write_cr3" },   { SVM_EXIT_WRITE_CR4, "write_cr4" },   { SVM_EXIT_WRITE_CR8, "write_cr8" },   { SVM_EXIT_READ_DR0, "read_dr0" },   { SVM_EXIT_READ_DR1, "read_dr1" },   { SVM_EXIT_READ_DR2, "read_dr2" },   { SVM_EXIT_READ_DR3, "read_dr3" },   { SVM_EXIT_WRITE_DR0, "write_dr0" },   { SVM_EXIT_WRITE_DR1, "write_dr1" },   { SVM_EXIT_WRITE_DR2, "write_dr2" },   { SVM_EXIT_WRITE_DR3, "write_dr3" },   { SVM_EXIT_WRITE_DR5, "write_dr5" },   { SVM_EXIT_WRITE_DR7, "write_dr7" },   { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" },   { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" },   { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" },   { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" },   { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" },   { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" },   { SVM_EXIT_INTR, "interrupt" },   { SVM_EXIT_NMI, "nmi" },   { SVM_EXIT_SMI, "smi" },   { SVM_EXIT_INIT, "init" },   { SVM_EXIT_VINTR, "vintr" },   { SVM_EXIT_CPUID, "cpuid" },   { SVM_EXIT_INVD, "invd" },   { SVM_EXIT_HLT, "hlt" },   { SVM_EXIT_INVLPG, "invlpg" },   { SVM_EXIT_INVLPGA, "invlpga" },   { SVM_EXIT_IOIO, "io" },   { SVM_EXIT_MSR, "msr" },   { SVM_EXIT_TASK_SWITCH, "task_switch" },   { SVM_EXIT_SHUTDOWN, "shutdown" },   { SVM_EXIT_VMRUN, "vmrun" },   { SVM_EXIT_VMMCALL, "hypercall" },   { SVM_EXIT_VMLOAD, "vmload" },   { SVM_EXIT_VMSAVE, "vmsave" },   { SVM_EXIT_STGI, "stgi" },   { SVM_EXIT_CLGI, "clgi" },   { SVM_EXIT_SKINIT, "skinit" },   { SVM_EXIT_WBINVD, "wbinvd" },   { SVM_EXIT_MONITOR, "monitor" },   { SVM_EXIT_MWAIT, "mwait" },   { SVM_EXIT_XSETBV, "xsetbv" },   { SVM_EXIT_NPF, "npf" }
+#define SVM_EXIT_ERR - 1
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_NPF, "npf" }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_32.h b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
index 4838ae1..c1a7ef4 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
@@ -454,5 +454,11 @@
 #define __NR_finit_module 350
 #define __NR_sched_setattr 351
 #define __NR_sched_getattr 352
-#endif
+#define __NR_renameat2 353
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_seccomp 354
+#define __NR_getrandom 355
+#define __NR_memfd_create 356
+#define __NR_bpf 357
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_64.h b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
index 7bdb301..c538b21 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
@@ -413,4 +413,12 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_setattr 314
 #define __NR_sched_getattr 315
+#define __NR_renameat2 316
+#define __NR_seccomp 317
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getrandom 318
+#define __NR_memfd_create 319
+#define __NR_kexec_file_load 320
+#define __NR_bpf 321
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
index ee51fb5..d87d074 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
@@ -247,119 +247,124 @@
 #define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204)
-#define __NR_io_setup (__X32_SYSCALL_BIT + 206)
 #define __NR_io_destroy (__X32_SYSCALL_BIT + 207)
 #define __NR_io_getevents (__X32_SYSCALL_BIT + 208)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __NR_io_submit (__X32_SYSCALL_BIT + 209)
 #define __NR_io_cancel (__X32_SYSCALL_BIT + 210)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212)
 #define __NR_epoll_create (__X32_SYSCALL_BIT + 213)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216)
 #define __NR_getdents64 (__X32_SYSCALL_BIT + 217)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_tid_address (__X32_SYSCALL_BIT + 218)
 #define __NR_restart_syscall (__X32_SYSCALL_BIT + 219)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_semtimedop (__X32_SYSCALL_BIT + 220)
 #define __NR_fadvise64 (__X32_SYSCALL_BIT + 221)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timer_settime (__X32_SYSCALL_BIT + 223)
 #define __NR_timer_gettime (__X32_SYSCALL_BIT + 224)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225)
 #define __NR_timer_delete (__X32_SYSCALL_BIT + 226)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clock_settime (__X32_SYSCALL_BIT + 227)
 #define __NR_clock_gettime (__X32_SYSCALL_BIT + 228)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clock_getres (__X32_SYSCALL_BIT + 229)
 #define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_exit_group (__X32_SYSCALL_BIT + 231)
 #define __NR_epoll_wait (__X32_SYSCALL_BIT + 232)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233)
 #define __NR_tgkill (__X32_SYSCALL_BIT + 234)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_utimes (__X32_SYSCALL_BIT + 235)
 #define __NR_mbind (__X32_SYSCALL_BIT + 237)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238)
 #define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_open (__X32_SYSCALL_BIT + 240)
 #define __NR_mq_unlink (__X32_SYSCALL_BIT + 241)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242)
 #define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245)
 #define __NR_add_key (__X32_SYSCALL_BIT + 248)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_request_key (__X32_SYSCALL_BIT + 249)
 #define __NR_keyctl (__X32_SYSCALL_BIT + 250)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioprio_set (__X32_SYSCALL_BIT + 251)
 #define __NR_ioprio_get (__X32_SYSCALL_BIT + 252)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_inotify_init (__X32_SYSCALL_BIT + 253)
 #define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255)
 #define __NR_migrate_pages (__X32_SYSCALL_BIT + 256)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_openat (__X32_SYSCALL_BIT + 257)
 #define __NR_mkdirat (__X32_SYSCALL_BIT + 258)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mknodat (__X32_SYSCALL_BIT + 259)
 #define __NR_fchownat (__X32_SYSCALL_BIT + 260)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_futimesat (__X32_SYSCALL_BIT + 261)
 #define __NR_newfstatat (__X32_SYSCALL_BIT + 262)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unlinkat (__X32_SYSCALL_BIT + 263)
 #define __NR_renameat (__X32_SYSCALL_BIT + 264)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_linkat (__X32_SYSCALL_BIT + 265)
 #define __NR_symlinkat (__X32_SYSCALL_BIT + 266)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_readlinkat (__X32_SYSCALL_BIT + 267)
 #define __NR_fchmodat (__X32_SYSCALL_BIT + 268)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_faccessat (__X32_SYSCALL_BIT + 269)
 #define __NR_pselect6 (__X32_SYSCALL_BIT + 270)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ppoll (__X32_SYSCALL_BIT + 271)
 #define __NR_unshare (__X32_SYSCALL_BIT + 272)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_splice (__X32_SYSCALL_BIT + 275)
 #define __NR_tee (__X32_SYSCALL_BIT + 276)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sync_file_range (__X32_SYSCALL_BIT + 277)
 #define __NR_utimensat (__X32_SYSCALL_BIT + 280)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281)
 #define __NR_signalfd (__X32_SYSCALL_BIT + 282)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timerfd_create (__X32_SYSCALL_BIT + 283)
 #define __NR_eventfd (__X32_SYSCALL_BIT + 284)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fallocate (__X32_SYSCALL_BIT + 285)
 #define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287)
 #define __NR_accept4 (__X32_SYSCALL_BIT + 288)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_signalfd4 (__X32_SYSCALL_BIT + 289)
 #define __NR_eventfd2 (__X32_SYSCALL_BIT + 290)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291)
 #define __NR_dup3 (__X32_SYSCALL_BIT + 292)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pipe2 (__X32_SYSCALL_BIT + 293)
 #define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_perf_event_open (__X32_SYSCALL_BIT + 298)
 #define __NR_fanotify_init (__X32_SYSCALL_BIT + 300)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301)
 #define __NR_prlimit64 (__X32_SYSCALL_BIT + 302)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303)
 #define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305)
 #define __NR_syncfs (__X32_SYSCALL_BIT + 306)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setns (__X32_SYSCALL_BIT + 308)
 #define __NR_getcpu (__X32_SYSCALL_BIT + 309)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_kcmp (__X32_SYSCALL_BIT + 312)
 #define __NR_finit_module (__X32_SYSCALL_BIT + 313)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_setattr (__X32_SYSCALL_BIT + 314)
 #define __NR_sched_getattr (__X32_SYSCALL_BIT + 315)
+#define __NR_renameat2 (__X32_SYSCALL_BIT + 316)
+#define __NR_seccomp (__X32_SYSCALL_BIT + 317)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getrandom (__X32_SYSCALL_BIT + 318)
+#define __NR_memfd_create (__X32_SYSCALL_BIT + 319)
+#define __NR_kexec_file_load (__X32_SYSCALL_BIT + 320)
+#define __NR_bpf (__X32_SYSCALL_BIT + 321)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
 #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
@@ -399,5 +404,7 @@
 #define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540)
 #define __NR_setsockopt (__X32_SYSCALL_BIT + 541)
 #define __NR_getsockopt (__X32_SYSCALL_BIT + 542)
-#endif
+#define __NR_io_setup (__X32_SYSCALL_BIT + 543)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_io_submit (__X32_SYSCALL_BIT + 544)
+#endif
diff --git a/libc/kernel/uapi/asm-x86/asm/vm86.h b/libc/kernel/uapi/asm-x86/asm/vm86.h
index 42513cc..eb53504 100644
--- a/libc/kernel/uapi/asm-x86/asm/vm86.h
+++ b/libc/kernel/uapi/asm-x86/asm/vm86.h
@@ -48,68 +48,68 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_GET_AND_RESET_IRQ 6
 struct vm86_regs {
- long ebx;
- long ecx;
+  long ebx;
+  long ecx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long edx;
- long esi;
- long edi;
- long ebp;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long eax;
- long __null_ds;
- long __null_es;
- long __null_fs;
+  long eax;
+  long __null_ds;
+  long __null_es;
+  long __null_fs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long __null_gs;
- long orig_eax;
- long eip;
- unsigned short cs, __csh;
+  long __null_gs;
+  long orig_eax;
+  long eip;
+  unsigned short cs, __csh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long eflags;
- long esp;
- unsigned short ss, __ssh;
- unsigned short es, __esh;
+  long eflags;
+  long esp;
+  unsigned short ss, __ssh;
+  unsigned short es, __esh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short ds, __dsh;
- unsigned short fs, __fsh;
- unsigned short gs, __gsh;
+  unsigned short ds, __dsh;
+  unsigned short fs, __fsh;
+  unsigned short gs, __gsh;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct revectored_struct {
- unsigned long __map[8];
+  unsigned long __map[8];
 };
 struct vm86_struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct vm86_regs regs;
- unsigned long flags;
- unsigned long screen_bitmap;
- unsigned long cpu_type;
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct revectored_struct int_revectored;
- struct revectored_struct int21_revectored;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
 };
 #define VM86_SCREEN_BITMAP 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm86plus_info_struct {
- unsigned long force_return_for_pic:1;
- unsigned long vm86dbg_active:1;
- unsigned long vm86dbg_TFpendig:1;
+  unsigned long force_return_for_pic : 1;
+  unsigned long vm86dbg_active : 1;
+  unsigned long vm86dbg_TFpendig : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long unused:28;
- unsigned long is_vm86pus:1;
- unsigned char vm86dbg_intxxtab[32];
+  unsigned long unused : 28;
+  unsigned long is_vm86pus : 1;
+  unsigned char vm86dbg_intxxtab[32];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm86plus_struct {
- struct vm86_regs regs;
- unsigned long flags;
- unsigned long screen_bitmap;
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long cpu_type;
- struct revectored_struct int_revectored;
- struct revectored_struct int21_revectored;
- struct vm86plus_info_struct vm86plus;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+  struct vm86plus_info_struct vm86plus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/vmx.h b/libc/kernel/uapi/asm-x86/asm/vmx.h
index e10e2b6..6731d3c 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -68,11 +68,12 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXIT_REASON_INVEPT 50
 #define EXIT_REASON_PREEMPTION_TIMER 52
+#define EXIT_REASON_INVVPID 53
 #define EXIT_REASON_WBINVD 54
-#define EXIT_REASON_XSETBV 55
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EXIT_REASON_XSETBV 55
 #define EXIT_REASON_APIC_WRITE 56
 #define EXIT_REASON_INVPCID 58
-#define VMX_EXIT_REASONS   { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" },   { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" },   { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" },   { EXIT_REASON_PENDING_INTERRUPT, "PENDING_INTERRUPT" },   { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" },   { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" },   { EXIT_REASON_CPUID, "CPUID" },   { EXIT_REASON_HLT, "HLT" },   { EXIT_REASON_INVLPG, "INVLPG" },   { EXIT_REASON_RDPMC, "RDPMC" },   { EXIT_REASON_RDTSC, "RDTSC" },   { EXIT_REASON_VMCALL, "VMCALL" },   { EXIT_REASON_VMCLEAR, "VMCLEAR" },   { EXIT_REASON_VMLAUNCH, "VMLAUNCH" },   { EXIT_REASON_VMPTRLD, "VMPTRLD" },   { EXIT_REASON_VMPTRST, "VMPTRST" },   { EXIT_REASON_VMREAD, "VMREAD" },   { EXIT_REASON_VMRESUME, "VMRESUME" },   { EXIT_REASON_VMWRITE, "VMWRITE" },   { EXIT_REASON_VMOFF, "VMOFF" },   { EXIT_REASON_VMON, "VMON" },   { EXIT_REASON_CR_ACCESS, "CR_ACCESS" },   { EXIT_REASON_DR_ACCESS, "DR_ACCESS" },   { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" },   { EXIT_REASON_MSR_READ, "MSR_READ" },   { EXIT_REASON_MSR_WRITE, "MSR_WRITE" },   { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" },   { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" },   { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" },   { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" },   { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" },   { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" },   { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" },   { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" },   { EXIT_REASON_INVEPT, "INVEPT" },   { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" },   { EXIT_REASON_WBINVD, "WBINVD" },   { EXIT_REASON_APIC_WRITE, "APIC_WRITE" },   { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" },   { EXIT_REASON_INVALID_STATE, "INVALID_STATE" },   { EXIT_REASON_INVD, "INVD" },   { EXIT_REASON_INVPCID, "INVPCID" }
-#endif
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_PENDING_INTERRUPT, "PENDING_INTERRUPT" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_INVPCID, "INVPCID" }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/asm-x86/asm/vsyscall.h b/libc/kernel/uapi/asm-x86/asm/vsyscall.h
index 4a5b3ab..95bf2ca 100644
--- a/libc/kernel/uapi/asm-x86/asm/vsyscall.h
+++ b/libc/kernel/uapi/asm-x86/asm/vsyscall.h
@@ -19,16 +19,11 @@
 #ifndef _UAPI_ASM_X86_VSYSCALL_H
 #define _UAPI_ASM_X86_VSYSCALL_H
 enum vsyscall_num {
- __NR_vgettimeofday,
+  __NR_vgettimeofday,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NR_vtime,
- __NR_vgetcpu,
+  __NR_vtime,
+  __NR_vgetcpu,
 };
-#define VSYSCALL_START (-10UL << 20)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VSYSCALL_SIZE 1024
-#define VSYSCALL_END (-2UL << 20)
-#define VSYSCALL_MAPPED_PAGES 1
-#define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))
+#define VSYSCALL_ADDR (- 10UL << 20)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/drm/armada_drm.h b/libc/kernel/uapi/drm/armada_drm.h
index efd7dd4..160c4f8 100644
--- a/libc/kernel/uapi/drm/armada_drm.h
+++ b/libc/kernel/uapi/drm/armada_drm.h
@@ -22,30 +22,30 @@
 #define DRM_ARMADA_GEM_MMAP 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_ARMADA_GEM_PWRITE 0x03
-#define ARMADA_IOCTL(dir, name, str)   DRM_##dir(DRM_COMMAND_BASE + DRM_ARMADA_##name, struct drm_armada_##str)
+#define ARMADA_IOCTL(dir,name,str) DRM_ ##dir(DRM_COMMAND_BASE + DRM_ARMADA_ ##name, struct drm_armada_ ##str)
 struct drm_armada_gem_create {
- uint32_t handle;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t size;
+  uint32_t size;
 };
-#define DRM_IOCTL_ARMADA_GEM_CREATE   ARMADA_IOCTL(IOWR, GEM_CREATE, gem_create)
+#define DRM_IOCTL_ARMADA_GEM_CREATE ARMADA_IOCTL(IOWR, GEM_CREATE, gem_create)
 struct drm_armada_gem_mmap {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t pad;
- uint64_t offset;
- uint64_t size;
+  uint32_t handle;
+  uint32_t pad;
+  uint64_t offset;
+  uint64_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t addr;
+  uint64_t addr;
 };
-#define DRM_IOCTL_ARMADA_GEM_MMAP   ARMADA_IOCTL(IOWR, GEM_MMAP, gem_mmap)
+#define DRM_IOCTL_ARMADA_GEM_MMAP ARMADA_IOCTL(IOWR, GEM_MMAP, gem_mmap)
 struct drm_armada_gem_pwrite {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t ptr;
- uint32_t handle;
- uint32_t offset;
- uint32_t size;
+  uint64_t ptr;
+  uint32_t handle;
+  uint32_t offset;
+  uint32_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define DRM_IOCTL_ARMADA_GEM_PWRITE   ARMADA_IOCTL(IOW, GEM_PWRITE, gem_pwrite)
+#define DRM_IOCTL_ARMADA_GEM_PWRITE ARMADA_IOCTL(IOW, GEM_PWRITE, gem_pwrite)
 #endif
diff --git a/libc/kernel/uapi/drm/drm.h b/libc/kernel/uapi/drm/drm.h
index ed848a8..8efc7d7 100644
--- a/libc/kernel/uapi/drm/drm.h
+++ b/libc/kernel/uapi/drm/drm.h
@@ -49,376 +49,376 @@
 #define _DRM_LOCK_CONT 0x40000000U
 #define _DRM_LOCK_IS_HELD(lock) ((lock) & _DRM_LOCK_HELD)
 #define _DRM_LOCK_IS_CONT(lock) ((lock) & _DRM_LOCK_CONT)
-#define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
+#define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD | _DRM_LOCK_CONT))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned int drm_context_t;
 typedef unsigned int drm_drawable_t;
 typedef unsigned int drm_magic_t;
 struct drm_clip_rect {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short x1;
- unsigned short y1;
- unsigned short x2;
- unsigned short y2;
+  unsigned short x1;
+  unsigned short y1;
+  unsigned short x2;
+  unsigned short y2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_drawable_info {
- unsigned int num_rects;
- struct drm_clip_rect *rects;
+  unsigned int num_rects;
+  struct drm_clip_rect * rects;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_tex_region {
- unsigned char next;
- unsigned char prev;
+  unsigned char next;
+  unsigned char prev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char in_use;
- unsigned char padding;
- unsigned int age;
+  unsigned char in_use;
+  unsigned char padding;
+  unsigned int age;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_hw_lock {
- __volatile__ unsigned int lock;
- char padding[60];
+  __volatile__ unsigned int lock;
+  char padding[60];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_version {
- int version_major;
- int version_minor;
- int version_patchlevel;
+  int version_major;
+  int version_minor;
+  int version_patchlevel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t name_len;
- char __user *name;
- size_t date_len;
- char __user *date;
+  size_t name_len;
+  char __user * name;
+  size_t date_len;
+  char __user * date;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t desc_len;
- char __user *desc;
+  size_t desc_len;
+  char __user * desc;
 };
 struct drm_unique {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t unique_len;
- char __user *unique;
+  size_t unique_len;
+  char __user * unique;
 };
 struct drm_list {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int count;
- struct drm_version __user *version;
+  int count;
+  struct drm_version __user * version;
 };
 struct drm_block {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int unused;
+  int unused;
 };
 struct drm_control {
- enum {
+  enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DRM_ADD_COMMAND,
- DRM_RM_COMMAND,
- DRM_INST_HANDLER,
- DRM_UNINST_HANDLER
+    DRM_ADD_COMMAND,
+    DRM_RM_COMMAND,
+    DRM_INST_HANDLER,
+    DRM_UNINST_HANDLER
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } func;
- int irq;
+  } func;
+  int irq;
 };
 enum drm_map_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_FRAME_BUFFER = 0,
- _DRM_REGISTERS = 1,
- _DRM_SHM = 2,
- _DRM_AGP = 3,
+  _DRM_FRAME_BUFFER = 0,
+  _DRM_REGISTERS = 1,
+  _DRM_SHM = 2,
+  _DRM_AGP = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_SCATTER_GATHER = 4,
- _DRM_CONSISTENT = 5,
+  _DRM_SCATTER_GATHER = 4,
+  _DRM_CONSISTENT = 5,
 };
 enum drm_map_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_RESTRICTED = 0x01,
- _DRM_READ_ONLY = 0x02,
- _DRM_LOCKED = 0x04,
- _DRM_KERNEL = 0x08,
+  _DRM_RESTRICTED = 0x01,
+  _DRM_READ_ONLY = 0x02,
+  _DRM_LOCKED = 0x04,
+  _DRM_KERNEL = 0x08,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_WRITE_COMBINING = 0x10,
- _DRM_CONTAINS_LOCK = 0x20,
- _DRM_REMOVABLE = 0x40,
- _DRM_DRIVER = 0x80
+  _DRM_WRITE_COMBINING = 0x10,
+  _DRM_CONTAINS_LOCK = 0x20,
+  _DRM_REMOVABLE = 0x40,
+  _DRM_DRIVER = 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_ctx_priv_map {
- unsigned int ctx_id;
- void *handle;
+  unsigned int ctx_id;
+  void * handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_map {
- unsigned long offset;
- unsigned long size;
+  unsigned long offset;
+  unsigned long size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum drm_map_type type;
- enum drm_map_flags flags;
- void *handle;
- int mtrr;
+  enum drm_map_type type;
+  enum drm_map_flags flags;
+  void * handle;
+  int mtrr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_client {
- int idx;
- int auth;
+  int idx;
+  int auth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long pid;
- unsigned long uid;
- unsigned long magic;
- unsigned long iocs;
+  unsigned long pid;
+  unsigned long uid;
+  unsigned long magic;
+  unsigned long iocs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum drm_stat_type {
- _DRM_STAT_LOCK,
- _DRM_STAT_OPENS,
+  _DRM_STAT_LOCK,
+  _DRM_STAT_OPENS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_STAT_CLOSES,
- _DRM_STAT_IOCTLS,
- _DRM_STAT_LOCKS,
- _DRM_STAT_UNLOCKS,
+  _DRM_STAT_CLOSES,
+  _DRM_STAT_IOCTLS,
+  _DRM_STAT_LOCKS,
+  _DRM_STAT_UNLOCKS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_STAT_VALUE,
- _DRM_STAT_BYTE,
- _DRM_STAT_COUNT,
- _DRM_STAT_IRQ,
+  _DRM_STAT_VALUE,
+  _DRM_STAT_BYTE,
+  _DRM_STAT_COUNT,
+  _DRM_STAT_IRQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_STAT_PRIMARY,
- _DRM_STAT_SECONDARY,
- _DRM_STAT_DMA,
- _DRM_STAT_SPECIAL,
+  _DRM_STAT_PRIMARY,
+  _DRM_STAT_SECONDARY,
+  _DRM_STAT_DMA,
+  _DRM_STAT_SPECIAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_STAT_MISSED
+  _DRM_STAT_MISSED
 };
 struct drm_stats {
- unsigned long count;
+  unsigned long count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned long value;
- enum drm_stat_type type;
- } data[15];
+  struct {
+    unsigned long value;
+    enum drm_stat_type type;
+  } data[15];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum drm_lock_flags {
- _DRM_LOCK_READY = 0x01,
- _DRM_LOCK_QUIESCENT = 0x02,
+  _DRM_LOCK_READY = 0x01,
+  _DRM_LOCK_QUIESCENT = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_LOCK_FLUSH = 0x04,
- _DRM_LOCK_FLUSH_ALL = 0x08,
- _DRM_HALT_ALL_QUEUES = 0x10,
- _DRM_HALT_CUR_QUEUES = 0x20
+  _DRM_LOCK_FLUSH = 0x04,
+  _DRM_LOCK_FLUSH_ALL = 0x08,
+  _DRM_HALT_ALL_QUEUES = 0x10,
+  _DRM_HALT_CUR_QUEUES = 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_lock {
- int context;
- enum drm_lock_flags flags;
+  int context;
+  enum drm_lock_flags flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum drm_dma_flags {
- _DRM_DMA_BLOCK = 0x01,
- _DRM_DMA_WHILE_LOCKED = 0x02,
+  _DRM_DMA_BLOCK = 0x01,
+  _DRM_DMA_WHILE_LOCKED = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_DMA_PRIORITY = 0x04,
- _DRM_DMA_WAIT = 0x10,
- _DRM_DMA_SMALLER_OK = 0x20,
- _DRM_DMA_LARGER_OK = 0x40
+  _DRM_DMA_PRIORITY = 0x04,
+  _DRM_DMA_WAIT = 0x10,
+  _DRM_DMA_SMALLER_OK = 0x20,
+  _DRM_DMA_LARGER_OK = 0x40
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_buf_desc {
- int count;
- int size;
+  int count;
+  int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int low_mark;
- int high_mark;
- enum {
- _DRM_PAGE_ALIGN = 0x01,
+  int low_mark;
+  int high_mark;
+  enum {
+    _DRM_PAGE_ALIGN = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_AGP_BUFFER = 0x02,
- _DRM_SG_BUFFER = 0x04,
- _DRM_FB_BUFFER = 0x08,
- _DRM_PCI_BUFFER_RO = 0x10
+    _DRM_AGP_BUFFER = 0x02,
+    _DRM_SG_BUFFER = 0x04,
+    _DRM_FB_BUFFER = 0x08,
+    _DRM_PCI_BUFFER_RO = 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } flags;
- unsigned long agp_start;
+  } flags;
+  unsigned long agp_start;
 };
 struct drm_buf_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int count;
- struct drm_buf_desc __user *list;
+  int count;
+  struct drm_buf_desc __user * list;
 };
 struct drm_buf_free {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int count;
- int __user *list;
+  int count;
+  int __user * list;
 };
 struct drm_buf_pub {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int idx;
- int total;
- int used;
- void __user *address;
+  int idx;
+  int total;
+  int used;
+  void __user * address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_buf_map {
- int count;
- void __user *virtual;
+  int count;
+  void __user * virtual;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_buf_pub __user *list;
+  struct drm_buf_pub __user * list;
 };
 struct drm_dma {
- int context;
+  int context;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int send_count;
- int __user *send_indices;
- int __user *send_sizes;
- enum drm_dma_flags flags;
+  int send_count;
+  int __user * send_indices;
+  int __user * send_sizes;
+  enum drm_dma_flags flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int request_count;
- int request_size;
- int __user *request_indices;
- int __user *request_sizes;
+  int request_count;
+  int request_size;
+  int __user * request_indices;
+  int __user * request_sizes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int granted_count;
+  int granted_count;
 };
 enum drm_ctx_flags {
- _DRM_CONTEXT_PRESERVED = 0x01,
+  _DRM_CONTEXT_PRESERVED = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_CONTEXT_2DONLY = 0x02
+  _DRM_CONTEXT_2DONLY = 0x02
 };
 struct drm_ctx {
- drm_context_t handle;
+  drm_context_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum drm_ctx_flags flags;
+  enum drm_ctx_flags flags;
 };
 struct drm_ctx_res {
- int count;
+  int count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_ctx __user *contexts;
+  struct drm_ctx __user * contexts;
 };
 struct drm_draw {
- drm_drawable_t handle;
+  drm_drawable_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 typedef enum {
- DRM_DRAWABLE_CLIPRECTS,
+  DRM_DRAWABLE_CLIPRECTS,
 } drm_drawable_info_type_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_update_draw {
- drm_drawable_t handle;
- unsigned int type;
- unsigned int num;
+  drm_drawable_t handle;
+  unsigned int type;
+  unsigned int num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long long data;
+  unsigned long long data;
 };
 struct drm_auth {
- drm_magic_t magic;
+  drm_magic_t magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_irq_busid {
- int irq;
- int busnum;
+  int irq;
+  int busnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int devnum;
- int funcnum;
+  int devnum;
+  int funcnum;
 };
 enum drm_vblank_seq_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_VBLANK_ABSOLUTE = 0x0,
- _DRM_VBLANK_RELATIVE = 0x1,
- _DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
- _DRM_VBLANK_EVENT = 0x4000000,
+  _DRM_VBLANK_ABSOLUTE = 0x0,
+  _DRM_VBLANK_RELATIVE = 0x1,
+  _DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
+  _DRM_VBLANK_EVENT = 0x4000000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- _DRM_VBLANK_FLIP = 0x8000000,
- _DRM_VBLANK_NEXTONMISS = 0x10000000,
- _DRM_VBLANK_SECONDARY = 0x20000000,
- _DRM_VBLANK_SIGNAL = 0x40000000
+  _DRM_VBLANK_FLIP = 0x8000000,
+  _DRM_VBLANK_NEXTONMISS = 0x10000000,
+  _DRM_VBLANK_SECONDARY = 0x20000000,
+  _DRM_VBLANK_SIGNAL = 0x40000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define _DRM_VBLANK_HIGH_CRTC_SHIFT 1
 #define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
-#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL |   _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)
+#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_wait_vblank_request {
- enum drm_vblank_seq_type type;
- unsigned int sequence;
- unsigned long signal;
+  enum drm_vblank_seq_type type;
+  unsigned int sequence;
+  unsigned long signal;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_wait_vblank_reply {
- enum drm_vblank_seq_type type;
- unsigned int sequence;
+  enum drm_vblank_seq_type type;
+  unsigned int sequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long tval_sec;
- long tval_usec;
+  long tval_sec;
+  long tval_usec;
 };
 union drm_wait_vblank {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_wait_vblank_request request;
- struct drm_wait_vblank_reply reply;
+  struct drm_wait_vblank_request request;
+  struct drm_wait_vblank_reply reply;
 };
 #define _DRM_PRE_MODESET 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _DRM_POST_MODESET 2
 struct drm_modeset_ctl {
- __u32 crtc;
- __u32 cmd;
+  __u32 crtc;
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_agp_mode {
- unsigned long mode;
+  unsigned long mode;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_agp_buffer {
- unsigned long size;
- unsigned long handle;
- unsigned long type;
+  unsigned long size;
+  unsigned long handle;
+  unsigned long type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long physical;
+  unsigned long physical;
 };
 struct drm_agp_binding {
- unsigned long handle;
+  unsigned long handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long offset;
+  unsigned long offset;
 };
 struct drm_agp_info {
- int agp_version_major;
+  int agp_version_major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int agp_version_minor;
- unsigned long mode;
- unsigned long aperture_base;
- unsigned long aperture_size;
+  int agp_version_minor;
+  unsigned long mode;
+  unsigned long aperture_base;
+  unsigned long aperture_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long memory_allowed;
- unsigned long memory_used;
- unsigned short id_vendor;
- unsigned short id_device;
+  unsigned long memory_allowed;
+  unsigned long memory_used;
+  unsigned short id_vendor;
+  unsigned short id_device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_scatter_gather {
- unsigned long size;
- unsigned long handle;
+  unsigned long size;
+  unsigned long handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_set_version {
- int drm_di_major;
- int drm_di_minor;
+  int drm_di_major;
+  int drm_di_minor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int drm_dd_major;
- int drm_dd_minor;
+  int drm_dd_major;
+  int drm_dd_minor;
 };
 struct drm_gem_close {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- __u32 pad;
+  __u32 handle;
+  __u32 pad;
 };
 struct drm_gem_flink {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- __u32 name;
+  __u32 handle;
+  __u32 name;
 };
 struct drm_gem_open {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 name;
- __u32 handle;
- __u64 size;
+  __u32 name;
+  __u32 handle;
+  __u64 size;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_CAP_DUMB_BUFFER 0x1
@@ -436,205 +436,206 @@
 #define DRM_CAP_CURSOR_HEIGHT 0x9
 struct drm_get_cap {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 capability;
- __u64 value;
+  __u64 capability;
+  __u64 value;
 };
 #define DRM_CLIENT_CAP_STEREO_3D 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
 struct drm_set_client_cap {
- __u64 capability;
- __u64 value;
-};
+  __u64 capability;
+  __u64 value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define DRM_CLOEXEC O_CLOEXEC
 struct drm_prime_handle {
- __u32 handle;
- __u32 flags;
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 fd;
+  __u32 flags;
+  __s32 fd;
 };
 #include <drm/drm_mode.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_BASE 'd'
+#define DRM_IO(nr) _IO(DRM_IOCTL_BASE, nr)
+#define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE, nr, type)
+#define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE, nr, type)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr)
-#define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE,nr,type)
-#define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE,nr,type)
-#define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE,nr,type)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE, nr, type)
 #define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version)
 #define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique)
-#define DRM_IOCTL_GET_MAGIC DRM_IOR( 0x02, struct drm_auth)
-#define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
+#define DRM_IOCTL_GET_MAGIC DRM_IOR(0x02, struct drm_auth)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
 #define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map)
 #define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client)
-#define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats)
+#define DRM_IOCTL_GET_STATS DRM_IOR(0x06, struct drm_stats)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
-#define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
+#define DRM_IOCTL_GEM_CLOSE DRM_IOW(0x09, struct drm_gem_close)
 #define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
-#define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW( 0x0d, struct drm_set_client_cap)
-#define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique)
-#define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth)
+#define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW(0x0d, struct drm_set_client_cap)
+#define DRM_IOCTL_SET_UNIQUE DRM_IOW(0x10, struct drm_unique)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_AUTH_MAGIC DRM_IOW(0x11, struct drm_auth)
 #define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block)
 #define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block)
-#define DRM_IOCTL_CONTROL DRM_IOW( 0x14, struct drm_control)
+#define DRM_IOCTL_CONTROL DRM_IOW(0x14, struct drm_control)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, struct drm_map)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, struct drm_buf_desc)
-#define DRM_IOCTL_MARK_BUFS DRM_IOW( 0x17, struct drm_buf_desc)
+#define DRM_IOCTL_MARK_BUFS DRM_IOW(0x17, struct drm_buf_desc)
 #define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, struct drm_buf_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, struct drm_buf_map)
+#define DRM_IOCTL_FREE_BUFS DRM_IOW(0x1a, struct drm_buf_free)
+#define DRM_IOCTL_RM_MAP DRM_IOW(0x1b, struct drm_map)
+#define DRM_IOCTL_SET_SAREA_CTX DRM_IOW(0x1c, struct drm_ctx_priv_map)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_FREE_BUFS DRM_IOW( 0x1a, struct drm_buf_free)
-#define DRM_IOCTL_RM_MAP DRM_IOW( 0x1b, struct drm_map)
-#define DRM_IOCTL_SET_SAREA_CTX DRM_IOW( 0x1c, struct drm_ctx_priv_map)
 #define DRM_IOCTL_GET_SAREA_CTX DRM_IOWR(0x1d, struct drm_ctx_priv_map)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_SET_MASTER DRM_IO(0x1e)
 #define DRM_IOCTL_DROP_MASTER DRM_IO(0x1f)
 #define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, struct drm_ctx)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, struct drm_ctx)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_MOD_CTX DRM_IOW( 0x22, struct drm_ctx)
+#define DRM_IOCTL_MOD_CTX DRM_IOW(0x22, struct drm_ctx)
 #define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, struct drm_ctx)
-#define DRM_IOCTL_SWITCH_CTX DRM_IOW( 0x24, struct drm_ctx)
-#define DRM_IOCTL_NEW_CTX DRM_IOW( 0x25, struct drm_ctx)
+#define DRM_IOCTL_SWITCH_CTX DRM_IOW(0x24, struct drm_ctx)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_NEW_CTX DRM_IOW(0x25, struct drm_ctx)
 #define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, struct drm_ctx_res)
 #define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, struct drm_draw)
 #define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, struct drm_draw)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_DMA DRM_IOWR(0x29, struct drm_dma)
+#define DRM_IOCTL_LOCK DRM_IOW(0x2a, struct drm_lock)
+#define DRM_IOCTL_UNLOCK DRM_IOW(0x2b, struct drm_lock)
+#define DRM_IOCTL_FINISH DRM_IOW(0x2c, struct drm_lock)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_LOCK DRM_IOW( 0x2a, struct drm_lock)
-#define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock)
-#define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock)
 #define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
-#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
-#define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31)
-#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, struct drm_agp_mode)
+#define DRM_IOCTL_AGP_ACQUIRE DRM_IO(0x30)
+#define DRM_IOCTL_AGP_RELEASE DRM_IO(0x31)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, struct drm_agp_info)
+#define DRM_IOCTL_AGP_ENABLE DRM_IOW(0x32, struct drm_agp_mode)
+#define DRM_IOCTL_AGP_INFO DRM_IOR(0x33, struct drm_agp_info)
 #define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, struct drm_agp_buffer)
-#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, struct drm_agp_buffer)
-#define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, struct drm_agp_binding)
+#define DRM_IOCTL_AGP_FREE DRM_IOW(0x35, struct drm_agp_buffer)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, struct drm_agp_binding)
+#define DRM_IOCTL_AGP_BIND DRM_IOW(0x36, struct drm_agp_binding)
+#define DRM_IOCTL_AGP_UNBIND DRM_IOW(0x37, struct drm_agp_binding)
 #define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather)
-#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, struct drm_scatter_gather)
-#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
+#define DRM_IOCTL_SG_FREE DRM_IOW(0x39, struct drm_scatter_gather)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
 #define DRM_IOCTL_UPDATE_DRAW DRM_IOW(0x3f, struct drm_update_draw)
 #define DRM_IOCTL_MODE_GETRESOURCES DRM_IOWR(0xA0, struct drm_mode_card_res)
 #define DRM_IOCTL_MODE_GETCRTC DRM_IOWR(0xA1, struct drm_mode_crtc)
-#define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA2, struct drm_mode_crtc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA2, struct drm_mode_crtc)
 #define DRM_IOCTL_MODE_CURSOR DRM_IOWR(0xA3, struct drm_mode_cursor)
 #define DRM_IOCTL_MODE_GETGAMMA DRM_IOWR(0xA4, struct drm_mode_crtc_lut)
 #define DRM_IOCTL_MODE_SETGAMMA DRM_IOWR(0xA5, struct drm_mode_crtc_lut)
-#define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xA6, struct drm_mode_get_encoder)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xA6, struct drm_mode_get_encoder)
 #define DRM_IOCTL_MODE_GETCONNECTOR DRM_IOWR(0xA7, struct drm_mode_get_connector)
 #define DRM_IOCTL_MODE_ATTACHMODE DRM_IOWR(0xA8, struct drm_mode_mode_cmd)
 #define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xA9, struct drm_mode_mode_cmd)
-#define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAA, struct drm_mode_get_property)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAA, struct drm_mode_get_property)
 #define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xAB, struct drm_mode_connector_set_property)
 #define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
 #define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
-#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
 #define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
 #define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
 #define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
-#define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
 #define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
 #define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
 #define DRM_IOCTL_MODE_GETPLANERESOURCES DRM_IOWR(0xB5, struct drm_mode_get_plane_res)
-#define DRM_IOCTL_MODE_GETPLANE DRM_IOWR(0xB6, struct drm_mode_get_plane)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_MODE_GETPLANE DRM_IOWR(0xB6, struct drm_mode_get_plane)
 #define DRM_IOCTL_MODE_SETPLANE DRM_IOWR(0xB7, struct drm_mode_set_plane)
 #define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)
 #define DRM_IOCTL_MODE_OBJ_GETPROPERTIES DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)
-#define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
 #define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2)
 #define DRM_COMMAND_BASE 0x40
 #define DRM_COMMAND_END 0xA0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_event {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 length;
+  __u32 type;
+  __u32 length;
 };
-#define DRM_EVENT_VBLANK 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_EVENT_VBLANK 0x01
 #define DRM_EVENT_FLIP_COMPLETE 0x02
 struct drm_event_vblank {
- struct drm_event base;
- __u64 user_data;
+  struct drm_event base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tv_sec;
- __u32 tv_usec;
- __u32 sequence;
- __u32 reserved;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+  __u32 sequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved;
 };
 typedef struct drm_clip_rect drm_clip_rect_t;
 typedef struct drm_drawable_info drm_drawable_info_t;
-typedef struct drm_tex_region drm_tex_region_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct drm_tex_region drm_tex_region_t;
 typedef struct drm_hw_lock drm_hw_lock_t;
 typedef struct drm_version drm_version_t;
 typedef struct drm_unique drm_unique_t;
-typedef struct drm_list drm_list_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct drm_list drm_list_t;
 typedef struct drm_block drm_block_t;
 typedef struct drm_control drm_control_t;
 typedef enum drm_map_type drm_map_type_t;
-typedef enum drm_map_flags drm_map_flags_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef enum drm_map_flags drm_map_flags_t;
 typedef struct drm_ctx_priv_map drm_ctx_priv_map_t;
 typedef struct drm_map drm_map_t;
 typedef struct drm_client drm_client_t;
-typedef enum drm_stat_type drm_stat_type_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef enum drm_stat_type drm_stat_type_t;
 typedef struct drm_stats drm_stats_t;
 typedef enum drm_lock_flags drm_lock_flags_t;
 typedef struct drm_lock drm_lock_t;
-typedef enum drm_dma_flags drm_dma_flags_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef enum drm_dma_flags drm_dma_flags_t;
 typedef struct drm_buf_desc drm_buf_desc_t;
 typedef struct drm_buf_info drm_buf_info_t;
 typedef struct drm_buf_free drm_buf_free_t;
-typedef struct drm_buf_pub drm_buf_pub_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct drm_buf_pub drm_buf_pub_t;
 typedef struct drm_buf_map drm_buf_map_t;
 typedef struct drm_dma drm_dma_t;
 typedef union drm_wait_vblank drm_wait_vblank_t;
-typedef struct drm_agp_mode drm_agp_mode_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct drm_agp_mode drm_agp_mode_t;
 typedef enum drm_ctx_flags drm_ctx_flags_t;
 typedef struct drm_ctx drm_ctx_t;
 typedef struct drm_ctx_res drm_ctx_res_t;
-typedef struct drm_draw drm_draw_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct drm_draw drm_draw_t;
 typedef struct drm_update_draw drm_update_draw_t;
 typedef struct drm_auth drm_auth_t;
 typedef struct drm_irq_busid drm_irq_busid_t;
-typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
 typedef struct drm_agp_buffer drm_agp_buffer_t;
 typedef struct drm_agp_binding drm_agp_binding_t;
 typedef struct drm_agp_info drm_agp_info_t;
-typedef struct drm_scatter_gather drm_scatter_gather_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct drm_scatter_gather drm_scatter_gather_t;
 typedef struct drm_set_version drm_set_version_t;
 #endif
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index e4acf17..47e93dd 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -19,9 +19,9 @@
 #ifndef DRM_FOURCC_H
 #define DRM_FOURCC_H
 #include <linux/types.h>
-#define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) |   ((__u32)(c) << 16) | ((__u32)(d) << 24))
+#define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_FORMAT_BIG_ENDIAN (1<<31)
+#define DRM_FORMAT_BIG_ENDIAN (1 << 31)
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
 #define DRM_FORMAT_RGB332 fourcc_code('R', 'G', 'B', '8')
 #define DRM_FORMAT_BGR233 fourcc_code('B', 'G', 'R', '8')
diff --git a/libc/kernel/uapi/drm/drm_mode.h b/libc/kernel/uapi/drm/drm_mode.h
index bbe1c8e..abd92a1 100644
--- a/libc/kernel/uapi/drm/drm_mode.h
+++ b/libc/kernel/uapi/drm/drm_mode.h
@@ -24,45 +24,45 @@
 #define DRM_CONNECTOR_NAME_LEN 32
 #define DRM_DISPLAY_MODE_LEN 32
 #define DRM_PROP_NAME_LEN 32
-#define DRM_MODE_TYPE_BUILTIN (1<<0)
+#define DRM_MODE_TYPE_BUILTIN (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_TYPE_CLOCK_C ((1<<1) | DRM_MODE_TYPE_BUILTIN)
-#define DRM_MODE_TYPE_CRTC_C ((1<<2) | DRM_MODE_TYPE_BUILTIN)
-#define DRM_MODE_TYPE_PREFERRED (1<<3)
-#define DRM_MODE_TYPE_DEFAULT (1<<4)
+#define DRM_MODE_TYPE_CLOCK_C ((1 << 1) | DRM_MODE_TYPE_BUILTIN)
+#define DRM_MODE_TYPE_CRTC_C ((1 << 2) | DRM_MODE_TYPE_BUILTIN)
+#define DRM_MODE_TYPE_PREFERRED (1 << 3)
+#define DRM_MODE_TYPE_DEFAULT (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_TYPE_USERDEF (1<<5)
-#define DRM_MODE_TYPE_DRIVER (1<<6)
-#define DRM_MODE_FLAG_PHSYNC (1<<0)
-#define DRM_MODE_FLAG_NHSYNC (1<<1)
+#define DRM_MODE_TYPE_USERDEF (1 << 5)
+#define DRM_MODE_TYPE_DRIVER (1 << 6)
+#define DRM_MODE_FLAG_PHSYNC (1 << 0)
+#define DRM_MODE_FLAG_NHSYNC (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_FLAG_PVSYNC (1<<2)
-#define DRM_MODE_FLAG_NVSYNC (1<<3)
-#define DRM_MODE_FLAG_INTERLACE (1<<4)
-#define DRM_MODE_FLAG_DBLSCAN (1<<5)
+#define DRM_MODE_FLAG_PVSYNC (1 << 2)
+#define DRM_MODE_FLAG_NVSYNC (1 << 3)
+#define DRM_MODE_FLAG_INTERLACE (1 << 4)
+#define DRM_MODE_FLAG_DBLSCAN (1 << 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_FLAG_CSYNC (1<<6)
-#define DRM_MODE_FLAG_PCSYNC (1<<7)
-#define DRM_MODE_FLAG_NCSYNC (1<<8)
-#define DRM_MODE_FLAG_HSKEW (1<<9)
+#define DRM_MODE_FLAG_CSYNC (1 << 6)
+#define DRM_MODE_FLAG_PCSYNC (1 << 7)
+#define DRM_MODE_FLAG_NCSYNC (1 << 8)
+#define DRM_MODE_FLAG_HSKEW (1 << 9)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_FLAG_BCAST (1<<10)
-#define DRM_MODE_FLAG_PIXMUX (1<<11)
-#define DRM_MODE_FLAG_DBLCLK (1<<12)
-#define DRM_MODE_FLAG_CLKDIV2 (1<<13)
+#define DRM_MODE_FLAG_BCAST (1 << 10)
+#define DRM_MODE_FLAG_PIXMUX (1 << 11)
+#define DRM_MODE_FLAG_DBLCLK (1 << 12)
+#define DRM_MODE_FLAG_CLKDIV2 (1 << 13)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_FLAG_3D_MASK (0x1f<<14)
-#define DRM_MODE_FLAG_3D_NONE (0<<14)
-#define DRM_MODE_FLAG_3D_FRAME_PACKING (1<<14)
-#define DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE (2<<14)
+#define DRM_MODE_FLAG_3D_MASK (0x1f << 14)
+#define DRM_MODE_FLAG_3D_NONE (0 << 14)
+#define DRM_MODE_FLAG_3D_FRAME_PACKING (1 << 14)
+#define DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE (2 << 14)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_FLAG_3D_LINE_ALTERNATIVE (3<<14)
-#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL (4<<14)
-#define DRM_MODE_FLAG_3D_L_DEPTH (5<<14)
-#define DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH (6<<14)
+#define DRM_MODE_FLAG_3D_LINE_ALTERNATIVE (3 << 14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL (4 << 14)
+#define DRM_MODE_FLAG_3D_L_DEPTH (5 << 14)
+#define DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH (6 << 14)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_FLAG_3D_TOP_AND_BOTTOM (7<<14)
-#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF (8<<14)
+#define DRM_MODE_FLAG_3D_TOP_AND_BOTTOM (7 << 14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF (8 << 14)
 #define DRM_MODE_DPMS_ON 0
 #define DRM_MODE_DPMS_STANDBY 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -73,100 +73,105 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_SCALE_CENTER 2
 #define DRM_MODE_SCALE_ASPECT 3
+#define DRM_MODE_PICTURE_ASPECT_NONE 0
+#define DRM_MODE_PICTURE_ASPECT_4_3 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_MODE_PICTURE_ASPECT_16_9 2
 #define DRM_MODE_DITHERING_OFF 0
 #define DRM_MODE_DITHERING_ON 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_DITHERING_AUTO 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_DIRTY_OFF 0
 #define DRM_MODE_DIRTY_ON 1
 #define DRM_MODE_DIRTY_ANNOTATE 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_modeinfo {
- __u32 clock;
- __u16 hdisplay, hsync_start, hsync_end, htotal, hskew;
- __u16 vdisplay, vsync_start, vsync_end, vtotal, vscan;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vrefresh;
- __u32 flags;
- __u32 type;
- char name[DRM_DISPLAY_MODE_LEN];
+  __u32 clock;
+  __u16 hdisplay, hsync_start, hsync_end, htotal, hskew;
+  __u16 vdisplay, vsync_start, vsync_end, vtotal, vscan;
+  __u32 vrefresh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 flags;
+  __u32 type;
+  char name[DRM_DISPLAY_MODE_LEN];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_card_res {
- __u64 fb_id_ptr;
- __u64 crtc_id_ptr;
+  __u64 fb_id_ptr;
+  __u64 crtc_id_ptr;
+  __u64 connector_id_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 connector_id_ptr;
- __u64 encoder_id_ptr;
- __u32 count_fbs;
- __u32 count_crtcs;
+  __u64 encoder_id_ptr;
+  __u32 count_fbs;
+  __u32 count_crtcs;
+  __u32 count_connectors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count_connectors;
- __u32 count_encoders;
- __u32 min_width, max_width;
- __u32 min_height, max_height;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 count_encoders;
+  __u32 min_width, max_width;
+  __u32 min_height, max_height;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_crtc {
- __u64 set_connectors_ptr;
- __u32 count_connectors;
+  __u64 set_connectors_ptr;
+  __u32 count_connectors;
+  __u32 crtc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 crtc_id;
- __u32 fb_id;
- __u32 x, y;
- __u32 gamma_size;
+  __u32 fb_id;
+  __u32 x, y;
+  __u32 gamma_size;
+  __u32 mode_valid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mode_valid;
- struct drm_mode_modeinfo mode;
+  struct drm_mode_modeinfo mode;
 };
-#define DRM_MODE_PRESENT_TOP_FIELD (1<<0)
+#define DRM_MODE_PRESENT_TOP_FIELD (1 << 0)
+#define DRM_MODE_PRESENT_BOTTOM_FIELD (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_PRESENT_BOTTOM_FIELD (1<<1)
 struct drm_mode_set_plane {
- __u32 plane_id;
- __u32 crtc_id;
+  __u32 plane_id;
+  __u32 crtc_id;
+  __u32 fb_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fb_id;
- __u32 flags;
- __s32 crtc_x, crtc_y;
- __u32 crtc_w, crtc_h;
+  __u32 flags;
+  __s32 crtc_x, crtc_y;
+  __u32 crtc_w, crtc_h;
+  __u32 src_x, src_y;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 src_x, src_y;
- __u32 src_h, src_w;
+  __u32 src_h, src_w;
 };
 struct drm_mode_get_plane {
+  __u32 plane_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 plane_id;
- __u32 crtc_id;
- __u32 fb_id;
- __u32 possible_crtcs;
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 possible_crtcs;
+  __u32 gamma_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gamma_size;
- __u32 count_format_types;
- __u64 format_type_ptr;
+  __u32 count_format_types;
+  __u64 format_type_ptr;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_get_plane_res {
- __u64 plane_id_ptr;
- __u32 count_planes;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 plane_id_ptr;
+  __u32 count_planes;
+};
 #define DRM_MODE_ENCODER_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_ENCODER_DAC 1
 #define DRM_MODE_ENCODER_TMDS 2
 #define DRM_MODE_ENCODER_LVDS 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_ENCODER_TVDAC 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_ENCODER_VIRTUAL 5
 #define DRM_MODE_ENCODER_DSI 6
+#define DRM_MODE_ENCODER_DPMST 7
 struct drm_mode_get_encoder {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 encoder_id;
- __u32 encoder_type;
- __u32 crtc_id;
- __u32 possible_crtcs;
+  __u32 encoder_id;
+  __u32 encoder_type;
+  __u32 crtc_id;
+  __u32 possible_crtcs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 possible_clones;
+  __u32 possible_clones;
 };
 #define DRM_MODE_SUBCONNECTOR_Automatic 0
 #define DRM_MODE_SUBCONNECTOR_Unknown 0
@@ -201,189 +206,195 @@
 #define DRM_MODE_CONNECTOR_DSI 16
 struct drm_mode_get_connector {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 encoders_ptr;
- __u64 modes_ptr;
- __u64 props_ptr;
- __u64 prop_values_ptr;
+  __u64 encoders_ptr;
+  __u64 modes_ptr;
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count_modes;
- __u32 count_props;
- __u32 count_encoders;
- __u32 encoder_id;
+  __u32 count_modes;
+  __u32 count_props;
+  __u32 count_encoders;
+  __u32 encoder_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 connector_id;
- __u32 connector_type;
- __u32 connector_type_id;
- __u32 connection;
+  __u32 connector_id;
+  __u32 connector_type;
+  __u32 connector_type_id;
+  __u32 connection;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mm_width, mm_height;
- __u32 subpixel;
- __u32 pad;
+  __u32 mm_width, mm_height;
+  __u32 subpixel;
+  __u32 pad;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_PROP_PENDING (1<<0)
-#define DRM_MODE_PROP_RANGE (1<<1)
-#define DRM_MODE_PROP_IMMUTABLE (1<<2)
-#define DRM_MODE_PROP_ENUM (1<<3)
+#define DRM_MODE_PROP_PENDING (1 << 0)
+#define DRM_MODE_PROP_RANGE (1 << 1)
+#define DRM_MODE_PROP_IMMUTABLE (1 << 2)
+#define DRM_MODE_PROP_ENUM (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_MODE_PROP_BLOB (1<<4)
-#define DRM_MODE_PROP_BITMASK (1<<5)
+#define DRM_MODE_PROP_BLOB (1 << 4)
+#define DRM_MODE_PROP_BITMASK (1 << 5)
+#define DRM_MODE_PROP_LEGACY_TYPE (DRM_MODE_PROP_RANGE | DRM_MODE_PROP_ENUM | DRM_MODE_PROP_BLOB | DRM_MODE_PROP_BITMASK)
+#define DRM_MODE_PROP_EXTENDED_TYPE 0x0000ffc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_MODE_PROP_TYPE(n) ((n) << 6)
+#define DRM_MODE_PROP_OBJECT DRM_MODE_PROP_TYPE(1)
+#define DRM_MODE_PROP_SIGNED_RANGE DRM_MODE_PROP_TYPE(2)
 struct drm_mode_property_enum {
- __u64 value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[DRM_PROP_NAME_LEN];
+  __u64 value;
+  char name[DRM_PROP_NAME_LEN];
 };
 struct drm_mode_get_property {
- __u64 values_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 enum_blob_ptr;
- __u32 prop_id;
- __u32 flags;
- char name[DRM_PROP_NAME_LEN];
+  __u64 values_ptr;
+  __u64 enum_blob_ptr;
+  __u32 prop_id;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count_values;
- __u32 count_enum_blobs;
+  char name[DRM_PROP_NAME_LEN];
+  __u32 count_values;
+  __u32 count_enum_blobs;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_connector_set_property {
+  __u64 value;
+  __u32 prop_id;
+  __u32 connector_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 value;
- __u32 prop_id;
- __u32 connector_id;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_obj_get_properties {
- __u64 props_ptr;
- __u64 prop_values_ptr;
- __u32 count_props;
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 obj_id;
- __u32 obj_type;
+  __u32 count_props;
+  __u32 obj_id;
+  __u32 obj_type;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_obj_set_property {
+  __u64 value;
+  __u32 prop_id;
+  __u32 obj_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 value;
- __u32 prop_id;
- __u32 obj_id;
- __u32 obj_type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 obj_type;
 };
 struct drm_mode_get_blob {
- __u32 blob_id;
- __u32 length;
+  __u32 blob_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data;
+  __u32 length;
+  __u64 data;
 };
 struct drm_mode_fb_cmd {
- __u32 fb_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 width, height;
- __u32 pitch;
- __u32 bpp;
- __u32 depth;
+  __u32 fb_id;
+  __u32 width, height;
+  __u32 pitch;
+  __u32 bpp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
+  __u32 depth;
+  __u32 handle;
 };
-#define DRM_MODE_FB_INTERLACED (1<<0)
+#define DRM_MODE_FB_INTERLACED (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_fb_cmd2 {
+  __u32 fb_id;
+  __u32 width, height;
+  __u32 pixel_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fb_id;
- __u32 width, height;
- __u32 pixel_format;
- __u32 flags;
+  __u32 flags;
+  __u32 handles[4];
+  __u32 pitches[4];
+  __u32 offsets[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handles[4];
- __u32 pitches[4];
- __u32 offsets[4];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
 #define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
 #define DRM_MODE_FB_DIRTY_FLAGS 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_MODE_FB_DIRTY_MAX_CLIPS 256
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_fb_dirty_cmd {
- __u32 fb_id;
- __u32 flags;
- __u32 color;
+  __u32 fb_id;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_clips;
- __u64 clips_ptr;
+  __u32 color;
+  __u32 num_clips;
+  __u64 clips_ptr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_mode_cmd {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 connector_id;
- struct drm_mode_modeinfo mode;
+  __u32 connector_id;
+  struct drm_mode_modeinfo mode;
 };
-#define DRM_MODE_CURSOR_BO 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_MODE_CURSOR_BO 0x01
 #define DRM_MODE_CURSOR_MOVE 0x02
 #define DRM_MODE_CURSOR_FLAGS 0x03
 struct drm_mode_cursor {
- __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 crtc_id;
- __s32 x;
- __s32 y;
- __u32 width;
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 x;
+  __s32 y;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 height;
- __u32 handle;
+  __u32 width;
+  __u32 height;
+  __u32 handle;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_cursor2 {
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 x;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 crtc_id;
- __s32 x;
- __s32 y;
+  __s32 y;
+  __u32 width;
+  __u32 height;
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 width;
- __u32 height;
- __u32 handle;
- __s32 hot_x;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 hot_y;
+  __s32 hot_x;
+  __s32 hot_y;
 };
 struct drm_mode_crtc_lut {
- __u32 crtc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gamma_size;
- __u64 red;
- __u64 green;
- __u64 blue;
+  __u32 crtc_id;
+  __u32 gamma_size;
+  __u64 red;
+  __u64 green;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 blue;
 };
 #define DRM_MODE_PAGE_FLIP_EVENT 0x01
 #define DRM_MODE_PAGE_FLIP_ASYNC 0x02
-#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT|DRM_MODE_PAGE_FLIP_ASYNC)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_PAGE_FLIP_ASYNC)
 struct drm_mode_crtc_page_flip {
- __u32 crtc_id;
- __u32 fb_id;
- __u32 flags;
+  __u32 crtc_id;
+  __u32 fb_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
- __u64 user_data;
+  __u32 flags;
+  __u32 reserved;
+  __u64 user_data;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_create_dumb {
+  uint32_t height;
+  uint32_t width;
+  uint32_t bpp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t height;
- uint32_t width;
- uint32_t bpp;
- uint32_t flags;
+  uint32_t flags;
+  uint32_t handle;
+  uint32_t pitch;
+  uint64_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t pitch;
- uint64_t size;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_mode_map_dumb {
- __u32 handle;
- __u32 pad;
- __u64 offset;
+  __u32 handle;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 offset;
 };
 struct drm_mode_destroy_dumb {
- uint32_t handle;
-};
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #endif
diff --git a/libc/kernel/uapi/drm/drm_sarea.h b/libc/kernel/uapi/drm/drm_sarea.h
index ecf4440..ca19c2b 100644
--- a/libc/kernel/uapi/drm/drm_sarea.h
+++ b/libc/kernel/uapi/drm/drm_sarea.h
@@ -34,26 +34,26 @@
 #define SAREA_MAX_DRAWABLES 256
 #define SAREA_DRAWABLE_CLAIMED_ENTRY 0x80000000
 struct drm_sarea_drawable {
- unsigned int stamp;
+  unsigned int stamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
+  unsigned int flags;
 };
 struct drm_sarea_frame {
- unsigned int x;
+  unsigned int x;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int y;
- unsigned int width;
- unsigned int height;
- unsigned int fullscreen;
+  unsigned int y;
+  unsigned int width;
+  unsigned int height;
+  unsigned int fullscreen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_sarea {
- struct drm_hw_lock lock;
- struct drm_hw_lock drawable_lock;
+  struct drm_hw_lock lock;
+  struct drm_hw_lock drawable_lock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_sarea_drawable drawableTable[SAREA_MAX_DRAWABLES];
- struct drm_sarea_frame frame;
- drm_context_t dummy_context;
+  struct drm_sarea_drawable drawableTable[SAREA_MAX_DRAWABLES];
+  struct drm_sarea_frame frame;
+  drm_context_t dummy_context;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_sarea_drawable drm_sarea_drawable_t;
diff --git a/libc/kernel/uapi/drm/exynos_drm.h b/libc/kernel/uapi/drm/exynos_drm.h
index 39b228e..47294b7 100644
--- a/libc/kernel/uapi/drm/exynos_drm.h
+++ b/libc/kernel/uapi/drm/exynos_drm.h
@@ -21,261 +21,240 @@
 #include <drm/drm.h>
 struct drm_exynos_gem_create {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t size;
- unsigned int flags;
- unsigned int handle;
+  uint64_t size;
+  unsigned int flags;
+  unsigned int handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct drm_exynos_gem_map_off {
- unsigned int handle;
- unsigned int pad;
- uint64_t offset;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-struct drm_exynos_gem_mmap {
- unsigned int handle;
- unsigned int pad;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t size;
- uint64_t mapped;
-};
 struct drm_exynos_gem_info {
+  unsigned int handle;
+  unsigned int flags;
+  uint64_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int handle;
- unsigned int flags;
- uint64_t size;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_exynos_vidi_connection {
- unsigned int connection;
- unsigned int extensions;
- uint64_t edid;
+  unsigned int connection;
+  unsigned int extensions;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint64_t edid;
 };
 enum e_drm_exynos_gem_mem_type {
- EXYNOS_BO_CONTIG = 0 << 0,
- EXYNOS_BO_NONCONTIG = 1 << 0,
+  EXYNOS_BO_CONTIG = 0 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- EXYNOS_BO_NONCACHABLE = 0 << 1,
- EXYNOS_BO_CACHABLE = 1 << 1,
- EXYNOS_BO_WC = 1 << 2,
- EXYNOS_BO_MASK = EXYNOS_BO_NONCONTIG | EXYNOS_BO_CACHABLE |
+  EXYNOS_BO_NONCONTIG = 1 << 0,
+  EXYNOS_BO_NONCACHABLE = 0 << 1,
+  EXYNOS_BO_CACHABLE = 1 << 1,
+  EXYNOS_BO_WC = 1 << 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- EXYNOS_BO_WC
+  EXYNOS_BO_MASK = EXYNOS_BO_NONCONTIG | EXYNOS_BO_CACHABLE | EXYNOS_BO_WC
 };
 struct drm_exynos_g2d_get_ver {
- __u32 major;
+  __u32 major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 minor;
+  __u32 minor;
 };
 struct drm_exynos_g2d_cmd {
- __u32 offset;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 data;
+  __u32 data;
 };
 enum drm_exynos_g2d_buf_type {
- G2D_BUF_USERPTR = 1 << 31,
+  G2D_BUF_USERPTR = 1 << 31,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum drm_exynos_g2d_event_type {
- G2D_EVENT_NOT,
- G2D_EVENT_NONSTOP,
+  G2D_EVENT_NOT,
+  G2D_EVENT_NONSTOP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- G2D_EVENT_STOP,
+  G2D_EVENT_STOP,
 };
 struct drm_exynos_g2d_userptr {
- unsigned long userptr;
+  unsigned long userptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long size;
+  unsigned long size;
 };
 struct drm_exynos_g2d_set_cmdlist {
- __u64 cmd;
+  __u64 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 cmd_buf;
- __u32 cmd_nr;
- __u32 cmd_buf_nr;
- __u64 event_type;
+  __u64 cmd_buf;
+  __u32 cmd_nr;
+  __u32 cmd_buf_nr;
+  __u64 event_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 user_data;
+  __u64 user_data;
 };
 struct drm_exynos_g2d_exec {
- __u64 async;
+  __u64 async;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum drm_exynos_ops_id {
- EXYNOS_DRM_OPS_SRC,
- EXYNOS_DRM_OPS_DST,
+  EXYNOS_DRM_OPS_SRC,
+  EXYNOS_DRM_OPS_DST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- EXYNOS_DRM_OPS_MAX,
+  EXYNOS_DRM_OPS_MAX,
 };
 struct drm_exynos_sz {
- __u32 hsize;
+  __u32 hsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vsize;
+  __u32 vsize;
 };
 struct drm_exynos_pos {
- __u32 x;
+  __u32 x;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 y;
- __u32 w;
- __u32 h;
+  __u32 y;
+  __u32 w;
+  __u32 h;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum drm_exynos_flip {
- EXYNOS_DRM_FLIP_NONE = (0 << 0),
- EXYNOS_DRM_FLIP_VERTICAL = (1 << 0),
- EXYNOS_DRM_FLIP_HORIZONTAL = (1 << 1),
+  EXYNOS_DRM_FLIP_NONE = (0 << 0),
+  EXYNOS_DRM_FLIP_VERTICAL = (1 << 0),
+  EXYNOS_DRM_FLIP_HORIZONTAL = (1 << 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- EXYNOS_DRM_FLIP_BOTH = EXYNOS_DRM_FLIP_VERTICAL |
- EXYNOS_DRM_FLIP_HORIZONTAL,
+  EXYNOS_DRM_FLIP_BOTH = EXYNOS_DRM_FLIP_VERTICAL | EXYNOS_DRM_FLIP_HORIZONTAL,
 };
 enum drm_exynos_degree {
+  EXYNOS_DRM_DEGREE_0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- EXYNOS_DRM_DEGREE_0,
- EXYNOS_DRM_DEGREE_90,
- EXYNOS_DRM_DEGREE_180,
- EXYNOS_DRM_DEGREE_270,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  EXYNOS_DRM_DEGREE_90,
+  EXYNOS_DRM_DEGREE_180,
+  EXYNOS_DRM_DEGREE_270,
 };
-enum drm_exynos_planer {
- EXYNOS_DRM_PLANAR_Y,
- EXYNOS_DRM_PLANAR_CB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- EXYNOS_DRM_PLANAR_CR,
- EXYNOS_DRM_PLANAR_MAX,
+enum drm_exynos_planer {
+  EXYNOS_DRM_PLANAR_Y,
+  EXYNOS_DRM_PLANAR_CB,
+  EXYNOS_DRM_PLANAR_CR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  EXYNOS_DRM_PLANAR_MAX,
 };
 struct drm_exynos_ipp_prop_list {
+  __u32 version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 version;
- __u32 ipp_id;
- __u32 count;
- __u32 writeback;
+  __u32 ipp_id;
+  __u32 count;
+  __u32 writeback;
+  __u32 flip;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flip;
- __u32 degree;
- __u32 csc;
- __u32 crop;
+  __u32 degree;
+  __u32 csc;
+  __u32 crop;
+  __u32 scale;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 scale;
- __u32 refresh_min;
- __u32 refresh_max;
- __u32 reserved;
+  __u32 refresh_min;
+  __u32 refresh_max;
+  __u32 reserved;
+  struct drm_exynos_sz crop_min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_exynos_sz crop_min;
- struct drm_exynos_sz crop_max;
- struct drm_exynos_sz scale_min;
- struct drm_exynos_sz scale_max;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct drm_exynos_sz crop_max;
+  struct drm_exynos_sz scale_min;
+  struct drm_exynos_sz scale_max;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_exynos_ipp_config {
- enum drm_exynos_ops_id ops_id;
- enum drm_exynos_flip flip;
+  enum drm_exynos_ops_id ops_id;
+  enum drm_exynos_flip flip;
+  enum drm_exynos_degree degree;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum drm_exynos_degree degree;
- __u32 fmt;
- struct drm_exynos_sz sz;
- struct drm_exynos_pos pos;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 fmt;
+  struct drm_exynos_sz sz;
+  struct drm_exynos_pos pos;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum drm_exynos_ipp_cmd {
- IPP_CMD_NONE,
- IPP_CMD_M2M,
+  IPP_CMD_NONE,
+  IPP_CMD_M2M,
+  IPP_CMD_WB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPP_CMD_WB,
- IPP_CMD_OUTPUT,
- IPP_CMD_MAX,
+  IPP_CMD_OUTPUT,
+  IPP_CMD_MAX,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_exynos_ipp_property {
- struct drm_exynos_ipp_config config[EXYNOS_DRM_OPS_MAX];
- enum drm_exynos_ipp_cmd cmd;
- __u32 ipp_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 prop_id;
- __u32 refresh_rate;
+  struct drm_exynos_ipp_config config[EXYNOS_DRM_OPS_MAX];
+  enum drm_exynos_ipp_cmd cmd;
+  __u32 ipp_id;
+  __u32 prop_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 refresh_rate;
 };
 enum drm_exynos_ipp_buf_type {
+  IPP_BUF_ENQUEUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPP_BUF_ENQUEUE,
- IPP_BUF_DEQUEUE,
+  IPP_BUF_DEQUEUE,
 };
 struct drm_exynos_ipp_queue_buf {
+  enum drm_exynos_ops_id ops_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum drm_exynos_ops_id ops_id;
- enum drm_exynos_ipp_buf_type buf_type;
- __u32 prop_id;
- __u32 buf_id;
+  enum drm_exynos_ipp_buf_type buf_type;
+  __u32 prop_id;
+  __u32 buf_id;
+  __u32 handle[EXYNOS_DRM_PLANAR_MAX];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle[EXYNOS_DRM_PLANAR_MAX];
- __u32 reserved;
- __u64 user_data;
+  __u32 reserved;
+  __u64 user_data;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum drm_exynos_ipp_ctrl {
- IPP_CTRL_PLAY,
- IPP_CTRL_STOP,
- IPP_CTRL_PAUSE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPP_CTRL_RESUME,
- IPP_CTRL_MAX,
+  IPP_CTRL_PLAY,
+  IPP_CTRL_STOP,
+  IPP_CTRL_PAUSE,
+  IPP_CTRL_RESUME,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPP_CTRL_MAX,
 };
 struct drm_exynos_ipp_cmd_ctrl {
+  __u32 prop_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 prop_id;
- enum drm_exynos_ipp_ctrl ctrl;
+  enum drm_exynos_ipp_ctrl ctrl;
 };
 #define DRM_EXYNOS_GEM_CREATE 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_EXYNOS_GEM_MAP_OFFSET 0x01
-#define DRM_EXYNOS_GEM_MMAP 0x02
 #define DRM_EXYNOS_GEM_GET 0x04
-#define DRM_EXYNOS_VIDI_CONNECTION 0x07
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_EXYNOS_VIDI_CONNECTION 0x07
 #define DRM_EXYNOS_G2D_GET_VER 0x20
 #define DRM_EXYNOS_G2D_SET_CMDLIST 0x21
 #define DRM_EXYNOS_G2D_EXEC 0x22
-#define DRM_EXYNOS_IPP_GET_PROPERTY 0x30
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_EXYNOS_IPP_GET_PROPERTY 0x30
 #define DRM_EXYNOS_IPP_SET_PROPERTY 0x31
 #define DRM_EXYNOS_IPP_QUEUE_BUF 0x32
 #define DRM_EXYNOS_IPP_CMD_CTRL 0x33
-#define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_EXYNOS_GEM_MAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_GEM_MAP_OFFSET, struct drm_exynos_gem_map_off)
-#define DRM_IOCTL_EXYNOS_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_GEM_MMAP, struct drm_exynos_gem_mmap)
-#define DRM_IOCTL_EXYNOS_GEM_GET DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_GEM_GET, struct drm_exynos_gem_info)
-#define DRM_IOCTL_EXYNOS_VIDI_CONNECTION DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_VIDI_CONNECTION, struct drm_exynos_vidi_connection)
+#define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create)
+#define DRM_IOCTL_EXYNOS_GEM_GET DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_GET, struct drm_exynos_gem_info)
+#define DRM_IOCTL_EXYNOS_VIDI_CONNECTION DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_VIDI_CONNECTION, struct drm_exynos_vidi_connection)
+#define DRM_IOCTL_EXYNOS_G2D_GET_VER DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_GET_VER, struct drm_exynos_g2d_get_ver)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_EXYNOS_G2D_GET_VER DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_G2D_GET_VER, struct drm_exynos_g2d_get_ver)
-#define DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_G2D_SET_CMDLIST, struct drm_exynos_g2d_set_cmdlist)
-#define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec)
-#define DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_IPP_GET_PROPERTY, struct drm_exynos_ipp_prop_list)
+#define DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_SET_CMDLIST, struct drm_exynos_g2d_set_cmdlist)
+#define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec)
+#define DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_GET_PROPERTY, struct drm_exynos_ipp_prop_list)
+#define DRM_IOCTL_EXYNOS_IPP_SET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_SET_PROPERTY, struct drm_exynos_ipp_property)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_EXYNOS_IPP_SET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_IPP_SET_PROPERTY, struct drm_exynos_ipp_property)
-#define DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_IPP_QUEUE_BUF, struct drm_exynos_ipp_queue_buf)
-#define DRM_IOCTL_EXYNOS_IPP_CMD_CTRL DRM_IOWR(DRM_COMMAND_BASE +   DRM_EXYNOS_IPP_CMD_CTRL, struct drm_exynos_ipp_cmd_ctrl)
+#define DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_QUEUE_BUF, struct drm_exynos_ipp_queue_buf)
+#define DRM_IOCTL_EXYNOS_IPP_CMD_CTRL DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_CMD_CTRL, struct drm_exynos_ipp_cmd_ctrl)
 #define DRM_EXYNOS_G2D_EVENT 0x80000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_EXYNOS_IPP_EVENT 0x80000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_exynos_g2d_event {
- struct drm_event base;
- __u64 user_data;
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tv_sec;
- __u32 tv_usec;
- __u32 cmdlist_no;
- __u32 reserved;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 tv_usec;
+  __u32 cmdlist_no;
+  __u32 reserved;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_exynos_ipp_event {
- struct drm_event base;
- __u64 user_data;
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tv_sec;
- __u32 tv_usec;
- __u32 prop_id;
- __u32 reserved;
+  __u32 tv_usec;
+  __u32 prop_id;
+  __u32 reserved;
+  __u32 buf_id[EXYNOS_DRM_OPS_MAX];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 buf_id[EXYNOS_DRM_OPS_MAX];
 };
 #endif
diff --git a/libc/kernel/uapi/drm/i810_drm.h b/libc/kernel/uapi/drm/i810_drm.h
index 946833d..ebe3332 100644
--- a/libc/kernel/uapi/drm/i810_drm.h
+++ b/libc/kernel/uapi/drm/i810_drm.h
@@ -22,7 +22,7 @@
 #define _I810_DEFINES_
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I810_DMA_BUF_ORDER 12
-#define I810_DMA_BUF_SZ (1<<I810_DMA_BUF_ORDER)
+#define I810_DMA_BUF_SZ (1 << I810_DMA_BUF_ORDER)
 #define I810_DMA_BUF_NR 256
 #define I810_NR_SAREA_CLIPRECTS 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -93,81 +93,81 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I810_DEPTH 0x4
 typedef enum _drm_i810_init_func {
- I810_INIT_DMA = 0x01,
- I810_CLEANUP_DMA = 0x02,
+  I810_INIT_DMA = 0x01,
+  I810_CLEANUP_DMA = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I810_INIT_DMA_1_4 = 0x03
+  I810_INIT_DMA_1_4 = 0x03
 } drm_i810_init_func_t;
 typedef struct _drm_i810_init {
- drm_i810_init_func_t func;
+  drm_i810_init_func_t func;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int mmio_offset;
- unsigned int buffers_offset;
- int sarea_priv_offset;
- unsigned int ring_start;
+  unsigned int mmio_offset;
+  unsigned int buffers_offset;
+  int sarea_priv_offset;
+  unsigned int ring_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int ring_end;
- unsigned int ring_size;
- unsigned int front_offset;
- unsigned int back_offset;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
+  unsigned int back_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int depth_offset;
- unsigned int overlay_offset;
- unsigned int overlay_physical;
- unsigned int w;
+  unsigned int depth_offset;
+  unsigned int overlay_offset;
+  unsigned int overlay_physical;
+  unsigned int w;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int h;
- unsigned int pitch;
- unsigned int pitch_bits;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
 } drm_i810_init_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _drm_i810_pre12_init {
- drm_i810_init_func_t func;
- unsigned int mmio_offset;
- unsigned int buffers_offset;
+  drm_i810_init_func_t func;
+  unsigned int mmio_offset;
+  unsigned int buffers_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int sarea_priv_offset;
- unsigned int ring_start;
- unsigned int ring_end;
- unsigned int ring_size;
+  int sarea_priv_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int front_offset;
- unsigned int back_offset;
- unsigned int depth_offset;
- unsigned int w;
+  unsigned int front_offset;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int w;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int h;
- unsigned int pitch;
- unsigned int pitch_bits;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
 } drm_i810_pre12_init_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _drm_i810_tex_region {
- unsigned char next, prev;
- unsigned char in_use;
- int age;
+  unsigned char next, prev;
+  unsigned char in_use;
+  int age;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_i810_tex_region_t;
 typedef struct _drm_i810_sarea {
- unsigned int ContextState[I810_CTX_SETUP_SIZE];
- unsigned int BufferState[I810_DEST_SETUP_SIZE];
+  unsigned int ContextState[I810_CTX_SETUP_SIZE];
+  unsigned int BufferState[I810_DEST_SETUP_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int TexState[2][I810_TEX_SETUP_SIZE];
- unsigned int dirty;
- unsigned int nbox;
- struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];
+  unsigned int TexState[2][I810_TEX_SETUP_SIZE];
+  unsigned int dirty;
+  unsigned int nbox;
+  struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_i810_tex_region_t texList[I810_NR_TEX_REGIONS + 1];
- int texAge;
- int last_enqueue;
- int last_dispatch;
+  drm_i810_tex_region_t texList[I810_NR_TEX_REGIONS + 1];
+  int texAge;
+  int last_enqueue;
+  int last_dispatch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int last_quiescent;
- int ctxOwner;
- int vertex_prim;
- int pf_enabled;
+  int last_quiescent;
+  int ctxOwner;
+  int vertex_prim;
+  int pf_enabled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pf_active;
- int pf_current_page;
+  int pf_active;
+  int pf_current_page;
 } drm_i810_sarea_t;
 #define DRM_I810_INIT 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -188,74 +188,74 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_I810_RSTATUS 0x0d
 #define DRM_I810_FLIP 0x0e
-#define DRM_IOCTL_I810_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I810_INIT, drm_i810_init_t)
-#define DRM_IOCTL_I810_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_I810_VERTEX, drm_i810_vertex_t)
+#define DRM_IOCTL_I810_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I810_INIT, drm_i810_init_t)
+#define DRM_IOCTL_I810_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_I810_VERTEX, drm_i810_vertex_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I810_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_I810_CLEAR, drm_i810_clear_t)
-#define DRM_IOCTL_I810_FLUSH DRM_IO( DRM_COMMAND_BASE + DRM_I810_FLUSH)
-#define DRM_IOCTL_I810_GETAGE DRM_IO( DRM_COMMAND_BASE + DRM_I810_GETAGE)
+#define DRM_IOCTL_I810_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_I810_CLEAR, drm_i810_clear_t)
+#define DRM_IOCTL_I810_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_I810_FLUSH)
+#define DRM_IOCTL_I810_GETAGE DRM_IO(DRM_COMMAND_BASE + DRM_I810_GETAGE)
 #define DRM_IOCTL_I810_GETBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_I810_GETBUF, drm_i810_dma_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I810_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_I810_SWAP)
-#define DRM_IOCTL_I810_COPY DRM_IOW( DRM_COMMAND_BASE + DRM_I810_COPY, drm_i810_copy_t)
-#define DRM_IOCTL_I810_DOCOPY DRM_IO( DRM_COMMAND_BASE + DRM_I810_DOCOPY)
-#define DRM_IOCTL_I810_OV0INFO DRM_IOR( DRM_COMMAND_BASE + DRM_I810_OV0INFO, drm_i810_overlay_t)
+#define DRM_IOCTL_I810_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_I810_SWAP)
+#define DRM_IOCTL_I810_COPY DRM_IOW(DRM_COMMAND_BASE + DRM_I810_COPY, drm_i810_copy_t)
+#define DRM_IOCTL_I810_DOCOPY DRM_IO(DRM_COMMAND_BASE + DRM_I810_DOCOPY)
+#define DRM_IOCTL_I810_OV0INFO DRM_IOR(DRM_COMMAND_BASE + DRM_I810_OV0INFO, drm_i810_overlay_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I810_FSTATUS DRM_IO ( DRM_COMMAND_BASE + DRM_I810_FSTATUS)
-#define DRM_IOCTL_I810_OV0FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_I810_OV0FLIP)
-#define DRM_IOCTL_I810_MC DRM_IOW( DRM_COMMAND_BASE + DRM_I810_MC, drm_i810_mc_t)
-#define DRM_IOCTL_I810_RSTATUS DRM_IO ( DRM_COMMAND_BASE + DRM_I810_RSTATUS)
+#define DRM_IOCTL_I810_FSTATUS DRM_IO(DRM_COMMAND_BASE + DRM_I810_FSTATUS)
+#define DRM_IOCTL_I810_OV0FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I810_OV0FLIP)
+#define DRM_IOCTL_I810_MC DRM_IOW(DRM_COMMAND_BASE + DRM_I810_MC, drm_i810_mc_t)
+#define DRM_IOCTL_I810_RSTATUS DRM_IO(DRM_COMMAND_BASE + DRM_I810_RSTATUS)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I810_FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_I810_FLIP)
+#define DRM_IOCTL_I810_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I810_FLIP)
 typedef struct _drm_i810_clear {
- int clear_color;
- int clear_depth;
+  int clear_color;
+  int clear_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int flags;
+  int flags;
 } drm_i810_clear_t;
 typedef struct _drm_i810_vertex {
- int idx;
+  int idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int used;
- int discard;
+  int used;
+  int discard;
 } drm_i810_vertex_t;
 typedef struct _drm_i810_copy_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int idx;
- int used;
- void *address;
+  int idx;
+  int used;
+  void * address;
 } drm_i810_copy_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PR_TRIANGLES (0x0<<18)
-#define PR_TRISTRIP_0 (0x1<<18)
-#define PR_TRISTRIP_1 (0x2<<18)
-#define PR_TRIFAN (0x3<<18)
+#define PR_TRIANGLES (0x0 << 18)
+#define PR_TRISTRIP_0 (0x1 << 18)
+#define PR_TRISTRIP_1 (0x2 << 18)
+#define PR_TRIFAN (0x3 << 18)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PR_POLYGON (0x4<<18)
-#define PR_LINES (0x5<<18)
-#define PR_LINESTRIP (0x6<<18)
-#define PR_RECTS (0x7<<18)
+#define PR_POLYGON (0x4 << 18)
+#define PR_LINES (0x5 << 18)
+#define PR_LINESTRIP (0x6 << 18)
+#define PR_RECTS (0x7 << 18)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PR_MASK (0x7<<18)
+#define PR_MASK (0x7 << 18)
 typedef struct drm_i810_dma {
- void *virtual;
- int request_idx;
+  void * virtual;
+  int request_idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int request_size;
- int granted;
+  int request_size;
+  int granted;
 } drm_i810_dma_t;
 typedef struct _drm_i810_overlay_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int offset;
- unsigned int physical;
+  unsigned int offset;
+  unsigned int physical;
 } drm_i810_overlay_t;
 typedef struct _drm_i810_mc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int idx;
- int used;
- int num_blocks;
- int *length;
+  int idx;
+  int used;
+  int num_blocks;
+  int * length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int last_render;
+  unsigned int last_render;
 } drm_i810_mc_t;
 #endif
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index 7b9810c..3d15fec 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -27,96 +27,96 @@
 #define I915_LOG_MIN_TEX_REGION_SIZE 14
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _drm_i915_init {
- enum {
- I915_INIT_DMA = 0x01,
- I915_CLEANUP_DMA = 0x02,
+  enum {
+    I915_INIT_DMA = 0x01,
+    I915_CLEANUP_DMA = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I915_RESUME_DMA = 0x03
- } func;
- unsigned int mmio_offset;
- int sarea_priv_offset;
+    I915_RESUME_DMA = 0x03
+  } func;
+  unsigned int mmio_offset;
+  int sarea_priv_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int ring_start;
- unsigned int ring_end;
- unsigned int ring_size;
- unsigned int front_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int back_offset;
- unsigned int depth_offset;
- unsigned int w;
- unsigned int h;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int w;
+  unsigned int h;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int pitch;
- unsigned int pitch_bits;
- unsigned int back_pitch;
- unsigned int depth_pitch;
+  unsigned int pitch;
+  unsigned int pitch_bits;
+  unsigned int back_pitch;
+  unsigned int depth_pitch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cpp;
- unsigned int chipset;
+  unsigned int cpp;
+  unsigned int chipset;
 } drm_i915_init_t;
 typedef struct _drm_i915_sarea {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_tex_region texList[I915_NR_TEX_REGIONS + 1];
- int last_upload;
- int last_enqueue;
- int last_dispatch;
+  struct drm_tex_region texList[I915_NR_TEX_REGIONS + 1];
+  int last_upload;
+  int last_enqueue;
+  int last_dispatch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ctxOwner;
- int texAge;
- int pf_enabled;
- int pf_active;
+  int ctxOwner;
+  int texAge;
+  int pf_enabled;
+  int pf_active;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pf_current_page;
- int perf_boxes;
- int width, height;
- drm_handle_t front_handle;
+  int pf_current_page;
+  int perf_boxes;
+  int width, height;
+  drm_handle_t front_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int front_offset;
- int front_size;
- drm_handle_t back_handle;
- int back_offset;
+  int front_offset;
+  int front_size;
+  drm_handle_t back_handle;
+  int back_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int back_size;
- drm_handle_t depth_handle;
- int depth_offset;
- int depth_size;
+  int back_size;
+  drm_handle_t depth_handle;
+  int depth_offset;
+  int depth_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_handle_t tex_handle;
- int tex_offset;
- int tex_size;
- int log_tex_granularity;
+  drm_handle_t tex_handle;
+  int tex_offset;
+  int tex_size;
+  int log_tex_granularity;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pitch;
- int rotation;
- int rotated_offset;
- int rotated_size;
+  int pitch;
+  int rotation;
+  int rotated_offset;
+  int rotated_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int rotated_pitch;
- int virtualX, virtualY;
- unsigned int front_tiled;
- unsigned int back_tiled;
+  int rotated_pitch;
+  int virtualX, virtualY;
+  unsigned int front_tiled;
+  unsigned int back_tiled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int depth_tiled;
- unsigned int rotated_tiled;
- unsigned int rotated2_tiled;
- int pipeA_x;
+  unsigned int depth_tiled;
+  unsigned int rotated_tiled;
+  unsigned int rotated2_tiled;
+  int pipeA_x;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pipeA_y;
- int pipeA_w;
- int pipeA_h;
- int pipeB_x;
+  int pipeA_y;
+  int pipeA_w;
+  int pipeA_h;
+  int pipeB_x;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pipeB_y;
- int pipeB_w;
- int pipeB_h;
- drm_handle_t unused_handle;
+  int pipeB_y;
+  int pipeB_w;
+  int pipeB_h;
+  drm_handle_t unused_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 unused1, unused2, unused3;
- __u32 front_bo_handle;
- __u32 back_bo_handle;
- __u32 unused_bo_handle;
+  __u32 unused1, unused2, unused3;
+  __u32 front_bo_handle;
+  __u32 back_bo_handle;
+  __u32 unused_bo_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 depth_bo_handle;
+  __u32 depth_bo_handle;
 } drm_i915_sarea_t;
 #define planeA_x pipeA_x
 #define planeA_y pipeA_y
@@ -196,515 +196,529 @@
 #define DRM_I915_REG_READ 0x31
 #define DRM_I915_GET_RESET_STATS 0x32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
-#define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
-#define DRM_IOCTL_I915_FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLIP)
-#define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t)
+#define DRM_I915_GEM_USERPTR 0x33
+#define DRM_IOCTL_I915_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
+#define DRM_IOCTL_I915_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLUSH)
+#define DRM_IOCTL_I915_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLIP)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t)
 #define DRM_IOCTL_I915_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t)
-#define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t)
+#define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t)
 #define DRM_IOCTL_I915_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, drm_i915_getparam_t)
-#define DRM_IOCTL_I915_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SETPARAM, drm_i915_setparam_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_I915_SETPARAM DRM_IOW(DRM_COMMAND_BASE + DRM_I915_SETPARAM, drm_i915_setparam_t)
 #define DRM_IOCTL_I915_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_ALLOC, drm_i915_mem_alloc_t)
-#define DRM_IOCTL_I915_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_FREE, drm_i915_mem_free_t)
-#define DRM_IOCTL_I915_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
-#define DRM_IOCTL_I915_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
+#define DRM_IOCTL_I915_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_FREE, drm_i915_mem_free_t)
+#define DRM_IOCTL_I915_INIT_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I915_DESTROY_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
-#define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
-#define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+#define DRM_IOCTL_I915_CMDBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
+#define DRM_IOCTL_I915_DESTROY_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
+#define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+#define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR(DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_HWS_ADDR DRM_IOW(DRM_COMMAND_BASE + DRM_I915_HWS_ADDR, struct drm_i915_gem_init)
 #define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init)
 #define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer)
-#define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
 #define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
 #define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
 #define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_CACHING, struct drm_i915_gem_caching)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GEM_GET_CACHING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_CACHING, struct drm_i915_gem_caching)
-#define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO ( DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE)
+#define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE)
 #define DRM_IOCTL_I915_GEM_ENTERVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GEM_LEAVEVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct drm_i915_gem_create)
-#define DRM_IOCTL_I915_GEM_PREAD DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread)
-#define DRM_IOCTL_I915_GEM_PWRITE DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite)
+#define DRM_IOCTL_I915_GEM_PREAD DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread)
+#define DRM_IOCTL_I915_GEM_PWRITE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct drm_i915_gem_mmap)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GEM_MMAP_GTT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_gtt)
-#define DRM_IOCTL_I915_GEM_SET_DOMAIN DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain)
-#define DRM_IOCTL_I915_GEM_SW_FINISH DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SW_FINISH, struct drm_i915_gem_sw_finish)
-#define DRM_IOCTL_I915_GEM_SET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_SET_TILING, struct drm_i915_gem_set_tiling)
+#define DRM_IOCTL_I915_GEM_SET_DOMAIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain)
+#define DRM_IOCTL_I915_GEM_SW_FINISH DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SW_FINISH, struct drm_i915_gem_sw_finish)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I915_GEM_GET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_TILING, struct drm_i915_gem_get_tiling)
-#define DRM_IOCTL_I915_GEM_GET_APERTURE DRM_IOR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_APERTURE, struct drm_i915_gem_get_aperture)
+#define DRM_IOCTL_I915_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_SET_TILING, struct drm_i915_gem_set_tiling)
+#define DRM_IOCTL_I915_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_TILING, struct drm_i915_gem_get_tiling)
+#define DRM_IOCTL_I915_GEM_GET_APERTURE DRM_IOR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_APERTURE, struct drm_i915_gem_get_aperture)
 #define DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_PIPE_FROM_CRTC_ID, struct drm_i915_get_pipe_from_crtc_id)
-#define DRM_IOCTL_I915_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MADVISE, struct drm_i915_gem_madvise)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_I915_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MADVISE, struct drm_i915_gem_madvise)
 #define DRM_IOCTL_I915_OVERLAY_PUT_IMAGE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_OVERLAY_PUT_IMAGE, struct drm_intel_overlay_put_image)
 #define DRM_IOCTL_I915_OVERLAY_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs)
 #define DRM_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait)
-#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
-#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
-#define DRM_IOCTL_I915_REG_READ DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read)
+#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
+#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_I915_GET_RESET_STATS DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GET_RESET_STATS, struct drm_i915_reset_stats)
+#define DRM_IOCTL_I915_REG_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read)
+#define DRM_IOCTL_I915_GET_RESET_STATS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_RESET_STATS, struct drm_i915_reset_stats)
+#define DRM_IOCTL_I915_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_USERPTR, struct drm_i915_gem_userptr)
 typedef struct drm_i915_batchbuffer {
- int start;
- int used;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int DR1;
- int DR4;
- int num_cliprects;
- struct drm_clip_rect __user *cliprects;
+  int start;
+  int used;
+  int DR1;
+  int DR4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int num_cliprects;
+  struct drm_clip_rect __user * cliprects;
 } drm_i915_batchbuffer_t;
 typedef struct _drm_i915_cmdbuffer {
- char __user *buf;
- int sz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int DR1;
- int DR4;
- int num_cliprects;
- struct drm_clip_rect __user *cliprects;
+  char __user * buf;
+  int sz;
+  int DR1;
+  int DR4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int num_cliprects;
+  struct drm_clip_rect __user * cliprects;
 } drm_i915_cmdbuffer_t;
 typedef struct drm_i915_irq_emit {
- int __user *irq_seq;
-} drm_i915_irq_emit_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int __user * irq_seq;
+} drm_i915_irq_emit_t;
 typedef struct drm_i915_irq_wait {
- int irq_seq;
+  int irq_seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_i915_irq_wait_t;
 #define I915_PARAM_IRQ_ACTIVE 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_ALLOW_BATCHBUFFER 2
 #define I915_PARAM_LAST_DISPATCH 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_CHIPSET_ID 4
 #define I915_PARAM_HAS_GEM 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_NUM_FENCES_AVAIL 6
 #define I915_PARAM_HAS_OVERLAY 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_PAGEFLIPPING 8
 #define I915_PARAM_HAS_EXECBUF2 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_BSD 10
 #define I915_PARAM_HAS_BLT 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_RELAXED_FENCING 12
 #define I915_PARAM_HAS_COHERENT_RINGS 13
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_EXEC_CONSTANTS 14
 #define I915_PARAM_HAS_RELAXED_DELTA 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_GEN7_SOL_RESET 16
 #define I915_PARAM_HAS_LLC 17
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_ALIASING_PPGTT 18
 #define I915_PARAM_HAS_WAIT_TIMEOUT 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_SEMAPHORES 20
 #define I915_PARAM_HAS_PRIME_VMAP_FLUSH 21
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_VEBOX 22
 #define I915_PARAM_HAS_SECURE_BATCHES 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_PINNED_BATCHES 24
 #define I915_PARAM_HAS_EXEC_NO_RELOC 25
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_PARAM_HAS_EXEC_HANDLE_LUT 26
 #define I915_PARAM_HAS_WT 27
-typedef struct drm_i915_getparam {
- int param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int __user *value;
+#define I915_PARAM_CMD_PARSER_VERSION 28
+typedef struct drm_i915_getparam {
+  int param;
+  int __user * value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_SETPARAM_NUM_USED_FENCES 4
 typedef struct drm_i915_setparam {
- int param;
+  int param;
+  int value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int value;
 } drm_i915_setparam_t;
 #define I915_MEM_REGION_AGP 1
 typedef struct drm_i915_mem_alloc {
+  int region;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int region;
- int alignment;
- int size;
- int __user *region_offset;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int alignment;
+  int size;
+  int __user * region_offset;
 } drm_i915_mem_alloc_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_i915_mem_free {
- int region;
- int region_offset;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int region;
+  int region_offset;
 } drm_i915_mem_free_t;
-typedef struct drm_i915_mem_init_heap {
- int region;
- int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int start;
+typedef struct drm_i915_mem_init_heap {
+  int region;
+  int size;
+  int start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_i915_mem_init_heap_t;
 typedef struct drm_i915_mem_destroy_heap {
- int region;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int region;
 } drm_i915_mem_destroy_heap_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_I915_VBLANK_PIPE_A 1
 #define DRM_I915_VBLANK_PIPE_B 2
 typedef struct drm_i915_vblank_pipe {
+  int pipe;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pipe;
 } drm_i915_vblank_pipe_t;
 typedef struct drm_i915_vblank_swap {
- drm_drawable_t drawable;
+  drm_drawable_t drawable;
+  enum drm_vblank_seq_type seqtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum drm_vblank_seq_type seqtype;
- unsigned int sequence;
+  unsigned int sequence;
 } drm_i915_vblank_swap_t;
 typedef struct drm_i915_hws_addr {
+  __u64 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 addr;
 } drm_i915_hws_addr_t;
 struct drm_i915_gem_init {
- __u64 gtt_start;
+  __u64 gtt_start;
+  __u64 gtt_end;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 gtt_end;
 };
 struct drm_i915_gem_create {
- __u64 size;
+  __u64 size;
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- __u32 pad;
+  __u32 pad;
 };
 struct drm_i915_gem_pread {
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- __u32 pad;
- __u64 offset;
- __u64 size;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data_ptr;
 };
 struct drm_i915_gem_pwrite {
- __u32 handle;
+  __u32 handle;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
- __u64 offset;
- __u64 size;
- __u64 data_ptr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_mmap {
- __u32 handle;
- __u32 pad;
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 offset;
- __u64 size;
- __u64 addr_ptr;
+  __u64 size;
+  __u64 addr_ptr;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_mmap_gtt {
- __u32 handle;
- __u32 pad;
- __u64 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
 };
-struct drm_i915_gem_set_domain {
- __u32 handle;
- __u32 read_domains;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 write_domain;
+struct drm_i915_gem_set_domain {
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domain;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_i915_gem_sw_finish {
- __u32 handle;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_relocation_entry {
- __u32 target_handle;
- __u32 delta;
+  __u32 target_handle;
+  __u32 delta;
+  __u64 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 offset;
- __u64 presumed_offset;
- __u32 read_domains;
- __u32 write_domain;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 presumed_offset;
+  __u32 read_domains;
+  __u32 write_domain;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_GEM_DOMAIN_CPU 0x00000001
 #define I915_GEM_DOMAIN_RENDER 0x00000002
 #define I915_GEM_DOMAIN_SAMPLER 0x00000004
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_GEM_DOMAIN_COMMAND 0x00000008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_GEM_DOMAIN_INSTRUCTION 0x00000010
 #define I915_GEM_DOMAIN_VERTEX 0x00000020
 #define I915_GEM_DOMAIN_GTT 0x00000040
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_exec_object {
- __u32 handle;
- __u32 relocation_count;
- __u64 relocs_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 alignment;
- __u64 offset;
+  __u32 handle;
+  __u32 relocation_count;
+  __u64 relocs_ptr;
+  __u64 alignment;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 offset;
 };
 struct drm_i915_gem_execbuffer {
+  __u64 buffers_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 buffers_ptr;
- __u32 buffer_count;
- __u32 batch_start_offset;
- __u32 batch_len;
+  __u32 buffer_count;
+  __u32 batch_start_offset;
+  __u32 batch_len;
+  __u32 DR1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 DR1;
- __u32 DR4;
- __u32 num_cliprects;
- __u64 cliprects_ptr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 DR4;
+  __u32 num_cliprects;
+  __u64 cliprects_ptr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_exec_object2 {
- __u32 handle;
- __u32 relocation_count;
+  __u32 handle;
+  __u32 relocation_count;
+  __u64 relocs_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 relocs_ptr;
- __u64 alignment;
- __u64 offset;
-#define EXEC_OBJECT_NEEDS_FENCE (1<<0)
+  __u64 alignment;
+  __u64 offset;
+#define EXEC_OBJECT_NEEDS_FENCE (1 << 0)
+#define EXEC_OBJECT_NEEDS_GTT (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define EXEC_OBJECT_NEEDS_GTT (1<<1)
-#define EXEC_OBJECT_WRITE (1<<2)
-#define __EXEC_OBJECT_UNKNOWN_FLAGS -(EXEC_OBJECT_WRITE<<1)
- __u64 flags;
+#define EXEC_OBJECT_WRITE (1 << 2)
+#define __EXEC_OBJECT_UNKNOWN_FLAGS - (EXEC_OBJECT_WRITE << 1)
+  __u64 flags;
+  __u64 rsvd1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rsvd1;
- __u64 rsvd2;
+  __u64 rsvd2;
 };
 struct drm_i915_gem_execbuffer2 {
+  __u64 buffers_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 buffers_ptr;
- __u32 buffer_count;
- __u32 batch_start_offset;
- __u32 batch_len;
+  __u32 buffer_count;
+  __u32 batch_start_offset;
+  __u32 batch_len;
+  __u32 DR1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 DR1;
- __u32 DR4;
- __u32 num_cliprects;
- __u64 cliprects_ptr;
+  __u32 DR4;
+  __u32 num_cliprects;
+  __u64 cliprects_ptr;
+#define I915_EXEC_RING_MASK (7 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I915_EXEC_RING_MASK (7<<0)
-#define I915_EXEC_DEFAULT (0<<0)
-#define I915_EXEC_RENDER (1<<0)
-#define I915_EXEC_BSD (2<<0)
+#define I915_EXEC_DEFAULT (0 << 0)
+#define I915_EXEC_RENDER (1 << 0)
+#define I915_EXEC_BSD (2 << 0)
+#define I915_EXEC_BLT (3 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I915_EXEC_BLT (3<<0)
-#define I915_EXEC_VEBOX (4<<0)
-#define I915_EXEC_CONSTANTS_MASK (3<<6)
-#define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6)
+#define I915_EXEC_VEBOX (4 << 0)
+#define I915_EXEC_CONSTANTS_MASK (3 << 6)
+#define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
+#define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6)
-#define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6)
- __u64 flags;
- __u64 rsvd1;
+#define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
+  __u64 flags;
+  __u64 rsvd1;
+  __u64 rsvd2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rsvd2;
 };
-#define I915_EXEC_GEN7_SOL_RESET (1<<8)
-#define I915_EXEC_SECURE (1<<9)
+#define I915_EXEC_GEN7_SOL_RESET (1 << 8)
+#define I915_EXEC_SECURE (1 << 9)
+#define I915_EXEC_IS_PINNED (1 << 10)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I915_EXEC_IS_PINNED (1<<10)
-#define I915_EXEC_NO_RELOC (1<<11)
-#define I915_EXEC_HANDLE_LUT (1<<12)
-#define __I915_EXEC_UNKNOWN_FLAGS -(I915_EXEC_HANDLE_LUT<<1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I915_EXEC_NO_RELOC (1 << 11)
+#define I915_EXEC_HANDLE_LUT (1 << 12)
+#define __I915_EXEC_UNKNOWN_FLAGS - (I915_EXEC_HANDLE_LUT << 1)
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
-#define i915_execbuffer2_set_context_id(eb2, context)   (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
-#define i915_execbuffer2_get_context_id(eb2)   ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
+#define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
 struct drm_i915_gem_pin {
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- __u32 pad;
- __u64 alignment;
- __u64 offset;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 pad;
+  __u64 alignment;
+  __u64 offset;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_unpin {
- __u32 handle;
- __u32 pad;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
+  __u32 pad;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_busy {
- __u32 handle;
- __u32 busy;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
+  __u32 busy;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_CACHING_NONE 0
 #define I915_CACHING_CACHED 1
 #define I915_CACHING_DISPLAY 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_caching {
- __u32 handle;
- __u32 caching;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
+  __u32 caching;
+};
 #define I915_TILING_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_TILING_X 1
 #define I915_TILING_Y 2
 #define I915_BIT_6_SWIZZLE_NONE 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_BIT_6_SWIZZLE_9 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_BIT_6_SWIZZLE_9_10 2
 #define I915_BIT_6_SWIZZLE_9_11 3
 #define I915_BIT_6_SWIZZLE_9_10_11 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_BIT_6_SWIZZLE_UNKNOWN 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_BIT_6_SWIZZLE_9_17 6
 #define I915_BIT_6_SWIZZLE_9_10_17 7
 struct drm_i915_gem_set_tiling {
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- __u32 tiling_mode;
- __u32 stride;
- __u32 swizzle_mode;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 tiling_mode;
+  __u32 stride;
+  __u32 swizzle_mode;
 };
-struct drm_i915_gem_get_tiling {
- __u32 handle;
- __u32 tiling_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 swizzle_mode;
+struct drm_i915_gem_get_tiling {
+  __u32 handle;
+  __u32 tiling_mode;
+  __u32 swizzle_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_i915_gem_get_aperture {
- __u64 aper_size;
+  __u64 aper_size;
+  __u64 aper_available_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 aper_available_size;
 };
 struct drm_i915_get_pipe_from_crtc_id {
- __u32 crtc_id;
+  __u32 crtc_id;
+  __u32 pipe;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pipe;
 };
 #define I915_MADV_WILLNEED 0
 #define I915_MADV_DONTNEED 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __I915_MADV_PURGED 2
-struct drm_i915_gem_madvise {
- __u32 handle;
- __u32 madv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 retained;
+struct drm_i915_gem_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define I915_OVERLAY_TYPE_MASK 0xff
 #define I915_OVERLAY_YUV_PLANAR 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_YUV_PACKED 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_RGB 0x03
 #define I915_OVERLAY_DEPTH_MASK 0xff00
 #define I915_OVERLAY_RGB24 0x1000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_RGB16 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_RGB15 0x3000
 #define I915_OVERLAY_YUV422 0x0100
 #define I915_OVERLAY_YUV411 0x0200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_YUV420 0x0300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_YUV410 0x0400
 #define I915_OVERLAY_SWAP_MASK 0xff0000
 #define I915_OVERLAY_NO_SWAP 0x000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_UV_SWAP 0x010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_Y_SWAP 0x020000
 #define I915_OVERLAY_Y_AND_UV_SWAP 0x030000
 #define I915_OVERLAY_FLAGS_MASK 0xff000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I915_OVERLAY_ENABLE 0x01000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_intel_overlay_put_image {
- __u32 flags;
- __u32 bo_handle;
+  __u32 flags;
+  __u32 bo_handle;
+  __u16 stride_Y;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 stride_Y;
- __u16 stride_UV;
- __u32 offset_Y;
- __u32 offset_U;
+  __u16 stride_UV;
+  __u32 offset_Y;
+  __u32 offset_U;
+  __u32 offset_V;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 offset_V;
- __u16 src_width;
- __u16 src_height;
- __u16 src_scan_width;
+  __u16 src_width;
+  __u16 src_height;
+  __u16 src_scan_width;
+  __u16 src_scan_height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 src_scan_height;
- __u32 crtc_id;
- __u16 dst_x;
- __u16 dst_y;
+  __u32 crtc_id;
+  __u16 dst_x;
+  __u16 dst_y;
+  __u16 dst_width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 dst_width;
- __u16 dst_height;
+  __u16 dst_height;
 };
-#define I915_OVERLAY_UPDATE_ATTRS (1<<0)
+#define I915_OVERLAY_UPDATE_ATTRS (1 << 0)
+#define I915_OVERLAY_UPDATE_GAMMA (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I915_OVERLAY_UPDATE_GAMMA (1<<1)
 struct drm_intel_overlay_attrs {
- __u32 flags;
- __u32 color_key;
+  __u32 flags;
+  __u32 color_key;
+  __s32 brightness;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 brightness;
- __u32 contrast;
- __u32 saturation;
- __u32 gamma0;
+  __u32 contrast;
+  __u32 saturation;
+  __u32 gamma0;
+  __u32 gamma1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gamma1;
- __u32 gamma2;
- __u32 gamma3;
- __u32 gamma4;
+  __u32 gamma2;
+  __u32 gamma3;
+  __u32 gamma4;
+  __u32 gamma5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gamma5;
 };
-#define I915_SET_COLORKEY_NONE (1<<0)
-#define I915_SET_COLORKEY_DESTINATION (1<<1)
+#define I915_SET_COLORKEY_NONE (1 << 0)
+#define I915_SET_COLORKEY_DESTINATION (1 << 1)
+#define I915_SET_COLORKEY_SOURCE (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I915_SET_COLORKEY_SOURCE (1<<2)
 struct drm_intel_sprite_colorkey {
- __u32 plane_id;
- __u32 min_value;
+  __u32 plane_id;
+  __u32 min_value;
+  __u32 channel_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 channel_mask;
- __u32 max_value;
- __u32 flags;
+  __u32 max_value;
+  __u32 flags;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_wait {
- __u32 bo_handle;
- __u32 flags;
- __s64 timeout_ns;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 bo_handle;
+  __u32 flags;
+  __s64 timeout_ns;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_context_create {
- __u32 ctx_id;
- __u32 pad;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 ctx_id;
+  __u32 pad;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_gem_context_destroy {
- __u32 ctx_id;
- __u32 pad;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 ctx_id;
+  __u32 pad;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_reg_read {
- __u64 offset;
- __u64 val;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 offset;
+  __u64 val;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_i915_reset_stats {
- __u32 ctx_id;
- __u32 flags;
+  __u32 ctx_id;
+  __u32 flags;
+  __u32 reset_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reset_count;
- __u32 batch_active;
- __u32 batch_pending;
- __u32 pad;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 batch_active;
+  __u32 batch_pending;
+  __u32 pad;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct drm_i915_gem_userptr {
+  __u64 user_ptr;
+  __u64 user_size;
+  __u32 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I915_USERPTR_READ_ONLY 0x1
+#define I915_USERPTR_UNSYNCHRONIZED 0x80000000
+  __u32 handle;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/drm/mga_drm.h b/libc/kernel/uapi/drm/mga_drm.h
index 8e43e4d..ded4d89 100644
--- a/libc/kernel/uapi/drm/mga_drm.h
+++ b/libc/kernel/uapi/drm/mga_drm.h
@@ -31,22 +31,22 @@
 #define MGA_WARP_TGZF (MGA_F)
 #define MGA_WARP_TGZA (MGA_A)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGA_WARP_TGZAF (MGA_F|MGA_A)
+#define MGA_WARP_TGZAF (MGA_F | MGA_A)
 #define MGA_WARP_TGZS (MGA_S)
-#define MGA_WARP_TGZSF (MGA_S|MGA_F)
-#define MGA_WARP_TGZSA (MGA_S|MGA_A)
+#define MGA_WARP_TGZSF (MGA_S | MGA_F)
+#define MGA_WARP_TGZSA (MGA_S | MGA_A)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGA_WARP_TGZSAF (MGA_S|MGA_F|MGA_A)
+#define MGA_WARP_TGZSAF (MGA_S | MGA_F | MGA_A)
 #define MGA_WARP_T2GZ (MGA_T2)
-#define MGA_WARP_T2GZF (MGA_T2|MGA_F)
-#define MGA_WARP_T2GZA (MGA_T2|MGA_A)
+#define MGA_WARP_T2GZF (MGA_T2 | MGA_F)
+#define MGA_WARP_T2GZA (MGA_T2 | MGA_A)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGA_WARP_T2GZAF (MGA_T2|MGA_A|MGA_F)
-#define MGA_WARP_T2GZS (MGA_T2|MGA_S)
-#define MGA_WARP_T2GZSF (MGA_T2|MGA_S|MGA_F)
-#define MGA_WARP_T2GZSA (MGA_T2|MGA_S|MGA_A)
+#define MGA_WARP_T2GZAF (MGA_T2 | MGA_A | MGA_F)
+#define MGA_WARP_T2GZS (MGA_T2 | MGA_S)
+#define MGA_WARP_T2GZSF (MGA_T2 | MGA_S | MGA_F)
+#define MGA_WARP_T2GZSA (MGA_T2 | MGA_S | MGA_A)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGA_WARP_T2GZSAF (MGA_T2|MGA_S|MGA_F|MGA_A)
+#define MGA_WARP_T2GZSAF (MGA_T2 | MGA_S | MGA_F | MGA_A)
 #define MGA_MAX_G200_PIPES 8
 #define MGA_MAX_G400_PIPES 16
 #define MGA_MAX_WARP_PIPES MGA_MAX_G400_PIPES
@@ -86,83 +86,83 @@
 #endif
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dstorg;
- unsigned int maccess;
- unsigned int plnwt;
- unsigned int dwgctl;
+  unsigned int dstorg;
+  unsigned int maccess;
+  unsigned int plnwt;
+  unsigned int dwgctl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int alphactrl;
- unsigned int fogcolor;
- unsigned int wflag;
- unsigned int tdualstage0;
+  unsigned int alphactrl;
+  unsigned int fogcolor;
+  unsigned int wflag;
+  unsigned int tdualstage0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tdualstage1;
- unsigned int fcol;
- unsigned int stencil;
- unsigned int stencilctl;
+  unsigned int tdualstage1;
+  unsigned int fcol;
+  unsigned int stencil;
+  unsigned int stencilctl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_mga_context_regs_t;
 typedef struct {
- unsigned int pitch;
+  unsigned int pitch;
 } drm_mga_server_regs_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- unsigned int texctl;
- unsigned int texctl2;
- unsigned int texfilter;
+  unsigned int texctl;
+  unsigned int texctl2;
+  unsigned int texfilter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int texbordercol;
- unsigned int texorg;
- unsigned int texwidth;
- unsigned int texheight;
+  unsigned int texbordercol;
+  unsigned int texorg;
+  unsigned int texwidth;
+  unsigned int texheight;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int texorg1;
- unsigned int texorg2;
- unsigned int texorg3;
- unsigned int texorg4;
+  unsigned int texorg1;
+  unsigned int texorg2;
+  unsigned int texorg3;
+  unsigned int texorg4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_mga_texture_regs_t;
 typedef struct {
- unsigned int head;
- unsigned int wrap;
+  unsigned int head;
+  unsigned int wrap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_mga_age_t;
 typedef struct _drm_mga_sarea {
- drm_mga_context_regs_t context_state;
- drm_mga_server_regs_t server_state;
+  drm_mga_context_regs_t context_state;
+  drm_mga_server_regs_t server_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_mga_texture_regs_t tex_state[2];
- unsigned int warp_pipe;
- unsigned int dirty;
- unsigned int vertsize;
+  drm_mga_texture_regs_t tex_state[2];
+  unsigned int warp_pipe;
+  unsigned int dirty;
+  unsigned int vertsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_clip_rect boxes[MGA_NR_SAREA_CLIPRECTS];
- unsigned int nbox;
- unsigned int req_drawable;
- unsigned int req_draw_buffer;
+  struct drm_clip_rect boxes[MGA_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
+  unsigned int req_drawable;
+  unsigned int req_draw_buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int exported_drawable;
- unsigned int exported_index;
- unsigned int exported_stamp;
- unsigned int exported_buffers;
+  unsigned int exported_drawable;
+  unsigned int exported_index;
+  unsigned int exported_stamp;
+  unsigned int exported_buffers;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int exported_nfront;
- unsigned int exported_nback;
- int exported_back_x, exported_front_x, exported_w;
- int exported_back_y, exported_front_y, exported_h;
+  unsigned int exported_nfront;
+  unsigned int exported_nback;
+  int exported_back_x, exported_front_x, exported_w;
+  int exported_back_y, exported_front_y, exported_h;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_clip_rect exported_boxes[MGA_NR_SAREA_CLIPRECTS];
- unsigned int status[4];
- unsigned int last_wrap;
- drm_mga_age_t last_frame;
+  struct drm_clip_rect exported_boxes[MGA_NR_SAREA_CLIPRECTS];
+  unsigned int status[4];
+  unsigned int last_wrap;
+  drm_mga_age_t last_frame;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int last_enqueue;
- unsigned int last_dispatch;
- unsigned int last_quiescent;
- struct drm_tex_region texList[MGA_NR_TEX_HEAPS][MGA_NR_TEX_REGIONS + 1];
+  unsigned int last_enqueue;
+  unsigned int last_dispatch;
+  unsigned int last_quiescent;
+  struct drm_tex_region texList[MGA_NR_TEX_HEAPS][MGA_NR_TEX_REGIONS + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int texAge[MGA_NR_TEX_HEAPS];
- int ctxOwner;
+  unsigned int texAge[MGA_NR_TEX_HEAPS];
+  int ctxOwner;
 } drm_mga_sarea_t;
 #define DRM_MGA_INIT 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -181,115 +181,115 @@
 #define DRM_MGA_WAIT_FENCE 0x0b
 #define DRM_MGA_DMA_BOOTSTRAP 0x0c
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_MGA_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_INIT, drm_mga_init_t)
-#define DRM_IOCTL_MGA_FLUSH DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_FLUSH, struct drm_lock)
-#define DRM_IOCTL_MGA_RESET DRM_IO( DRM_COMMAND_BASE + DRM_MGA_RESET)
-#define DRM_IOCTL_MGA_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_MGA_SWAP)
+#define DRM_IOCTL_MGA_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_INIT, drm_mga_init_t)
+#define DRM_IOCTL_MGA_FLUSH DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_FLUSH, struct drm_lock)
+#define DRM_IOCTL_MGA_RESET DRM_IO(DRM_COMMAND_BASE + DRM_MGA_RESET)
+#define DRM_IOCTL_MGA_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_MGA_SWAP)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_MGA_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_CLEAR, drm_mga_clear_t)
-#define DRM_IOCTL_MGA_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_VERTEX, drm_mga_vertex_t)
-#define DRM_IOCTL_MGA_INDICES DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_INDICES, drm_mga_indices_t)
-#define DRM_IOCTL_MGA_ILOAD DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_ILOAD, drm_mga_iload_t)
+#define DRM_IOCTL_MGA_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_CLEAR, drm_mga_clear_t)
+#define DRM_IOCTL_MGA_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_VERTEX, drm_mga_vertex_t)
+#define DRM_IOCTL_MGA_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_INDICES, drm_mga_indices_t)
+#define DRM_IOCTL_MGA_ILOAD DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_ILOAD, drm_mga_iload_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_MGA_BLIT DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_BLIT, drm_mga_blit_t)
+#define DRM_IOCTL_MGA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_BLIT, drm_mga_blit_t)
 #define DRM_IOCTL_MGA_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_GETPARAM, drm_mga_getparam_t)
-#define DRM_IOCTL_MGA_SET_FENCE DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_SET_FENCE, __u32)
+#define DRM_IOCTL_MGA_SET_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_SET_FENCE, __u32)
 #define DRM_IOCTL_MGA_WAIT_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_WAIT_FENCE, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_MGA_DMA_BOOTSTRAP DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_DMA_BOOTSTRAP, drm_mga_dma_bootstrap_t)
 typedef struct _drm_mga_warp_index {
- int installed;
- unsigned long phys_addr;
+  int installed;
+  unsigned long phys_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int size;
+  int size;
 } drm_mga_warp_index_t;
 typedef struct drm_mga_init {
- enum {
+  enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MGA_INIT_DMA = 0x01,
- MGA_CLEANUP_DMA = 0x02
- } func;
- unsigned long sarea_priv_offset;
+    MGA_INIT_DMA = 0x01,
+    MGA_CLEANUP_DMA = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int chipset;
- int sgram;
- unsigned int maccess;
- unsigned int fb_cpp;
+  int chipset;
+  int sgram;
+  unsigned int maccess;
+  unsigned int fb_cpp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int front_offset, front_pitch;
- unsigned int back_offset, back_pitch;
- unsigned int depth_cpp;
- unsigned int depth_offset, depth_pitch;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_cpp;
+  unsigned int depth_offset, depth_pitch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int texture_offset[MGA_NR_TEX_HEAPS];
- unsigned int texture_size[MGA_NR_TEX_HEAPS];
- unsigned long fb_offset;
- unsigned long mmio_offset;
+  unsigned int texture_offset[MGA_NR_TEX_HEAPS];
+  unsigned int texture_size[MGA_NR_TEX_HEAPS];
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long status_offset;
- unsigned long warp_offset;
- unsigned long primary_offset;
- unsigned long buffers_offset;
+  unsigned long status_offset;
+  unsigned long warp_offset;
+  unsigned long primary_offset;
+  unsigned long buffers_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_mga_init_t;
 typedef struct drm_mga_dma_bootstrap {
- unsigned long texture_handle;
- __u32 texture_size;
+  unsigned long texture_handle;
+  __u32 texture_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 primary_size;
- __u32 secondary_bin_count;
- __u32 secondary_bin_size;
- __u32 agp_mode;
+  __u32 primary_size;
+  __u32 secondary_bin_count;
+  __u32 secondary_bin_size;
+  __u32 agp_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 agp_size;
+  __u8 agp_size;
 } drm_mga_dma_bootstrap_t;
 typedef struct drm_mga_clear {
- unsigned int flags;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int clear_color;
- unsigned int clear_depth;
- unsigned int color_mask;
- unsigned int depth_mask;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_mga_clear_t;
 typedef struct drm_mga_vertex {
- int idx;
- int used;
+  int idx;
+  int used;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int discard;
+  int discard;
 } drm_mga_vertex_t;
 typedef struct drm_mga_indices {
- int idx;
+  int idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int start;
- unsigned int end;
- int discard;
+  unsigned int start;
+  unsigned int end;
+  int discard;
 } drm_mga_indices_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_mga_iload {
- int idx;
- unsigned int dstorg;
- unsigned int length;
+  int idx;
+  unsigned int dstorg;
+  unsigned int length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_mga_iload_t;
 typedef struct _drm_mga_blit {
- unsigned int planemask;
- unsigned int srcorg;
+  unsigned int planemask;
+  unsigned int srcorg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dstorg;
- int src_pitch, dst_pitch;
- int delta_sx, delta_sy;
- int delta_dx, delta_dy;
+  unsigned int dstorg;
+  int src_pitch, dst_pitch;
+  int delta_sx, delta_sy;
+  int delta_dx, delta_dy;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int height, ydir;
- int source_pitch, dest_pitch;
+  int height, ydir;
+  int source_pitch, dest_pitch;
 } drm_mga_blit_t;
 #define MGA_PARAM_IRQ_NR 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MGA_PARAM_CARD_TYPE 2
 typedef struct drm_mga_getparam {
- int param;
- void __user *value;
+  int param;
+  void __user * value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_mga_getparam_t;
 #endif
diff --git a/libc/kernel/uapi/drm/msm_drm.h b/libc/kernel/uapi/drm/msm_drm.h
index 033bb39..8db4b0d 100644
--- a/libc/kernel/uapi/drm/msm_drm.h
+++ b/libc/kernel/uapi/drm/msm_drm.h
@@ -27,99 +27,104 @@
 #define MSM_PIPE_3D0 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_msm_timespec {
- int64_t tv_sec;
- int64_t tv_nsec;
+  int64_t tv_sec;
+  int64_t tv_nsec;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_PARAM_GPU_ID 0x01
 #define MSM_PARAM_GMEM_SIZE 0x02
+#define MSM_PARAM_CHIP_ID 0x03
 struct drm_msm_param {
- uint32_t pipe;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t param;
- uint64_t value;
+  uint32_t pipe;
+  uint32_t param;
+  uint64_t value;
 };
-#define MSM_BO_SCANOUT 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSM_BO_SCANOUT 0x00000001
 #define MSM_BO_GPU_READONLY 0x00000002
 #define MSM_BO_CACHE_MASK 0x000f0000
 #define MSM_BO_CACHED 0x00010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_BO_WC 0x00020000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_BO_UNCACHED 0x00040000
+#define MSM_BO_FLAGS (MSM_BO_SCANOUT | MSM_BO_GPU_READONLY | MSM_BO_CACHED | MSM_BO_WC | MSM_BO_UNCACHED)
 struct drm_msm_gem_new {
- uint64_t size;
- uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
+  uint64_t size;
+  uint32_t flags;
+  uint32_t handle;
 };
-struct drm_msm_gem_info {
- uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pad;
- uint64_t offset;
+struct drm_msm_gem_info {
+  uint32_t handle;
+  uint32_t pad;
+  uint64_t offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define MSM_PREP_READ 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_PREP_WRITE 0x02
 #define MSM_PREP_NOSYNC 0x04
-struct drm_msm_gem_cpu_prep {
- uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t op;
- struct drm_msm_timespec timeout;
+#define MSM_PREP_FLAGS (MSM_PREP_READ | MSM_PREP_WRITE | MSM_PREP_NOSYNC)
+struct drm_msm_gem_cpu_prep {
+  uint32_t handle;
+  uint32_t op;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct drm_msm_timespec timeout;
 };
 struct drm_msm_gem_cpu_fini {
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
 };
 struct drm_msm_gem_submit_reloc {
- uint32_t submit_offset;
+  uint32_t submit_offset;
+  uint32_t or;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t or;
- int32_t shift;
- uint32_t reloc_idx;
- uint64_t reloc_offset;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int32_t shift;
+  uint32_t reloc_idx;
+  uint64_t reloc_offset;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_SUBMIT_CMD_BUF 0x0001
 #define MSM_SUBMIT_CMD_IB_TARGET_BUF 0x0002
 #define MSM_SUBMIT_CMD_CTX_RESTORE_BUF 0x0003
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_msm_gem_submit_cmd {
- uint32_t type;
- uint32_t submit_idx;
- uint32_t submit_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t size;
- uint32_t pad;
- uint32_t nr_relocs;
- uint64_t __user relocs;
+  uint32_t type;
+  uint32_t submit_idx;
+  uint32_t submit_offset;
+  uint32_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t pad;
+  uint32_t nr_relocs;
+  uint64_t __user relocs;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_SUBMIT_BO_READ 0x0001
 #define MSM_SUBMIT_BO_WRITE 0x0002
+#define MSM_SUBMIT_BO_FLAGS (MSM_SUBMIT_BO_READ | MSM_SUBMIT_BO_WRITE)
 struct drm_msm_gem_submit_bo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint32_t handle;
- uint64_t presumed;
+  uint32_t flags;
+  uint32_t handle;
+  uint64_t presumed;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_msm_gem_submit {
- uint32_t pipe;
- uint32_t fence;
- uint32_t nr_bos;
+  uint32_t pipe;
+  uint32_t fence;
+  uint32_t nr_bos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t nr_cmds;
- uint64_t __user bos;
- uint64_t __user cmds;
+  uint32_t nr_cmds;
+  uint64_t __user bos;
+  uint64_t __user cmds;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_msm_wait_fence {
- uint32_t fence;
- uint32_t pad;
- struct drm_msm_timespec timeout;
+  uint32_t fence;
+  uint32_t pad;
+  struct drm_msm_timespec timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DRM_MSM_GET_PARAM 0x00
@@ -136,9 +141,9 @@
 #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
 #define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
-#define DRM_IOCTL_MSM_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_FINI, struct drm_msm_gem_cpu_fini)
+#define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
+#define DRM_IOCTL_MSM_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_FINI, struct drm_msm_gem_cpu_fini)
 #define DRM_IOCTL_MSM_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_SUBMIT, struct drm_msm_gem_submit)
-#define DRM_IOCTL_MSM_WAIT_FENCE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_WAIT_FENCE, struct drm_msm_wait_fence)
+#define DRM_IOCTL_MSM_WAIT_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_WAIT_FENCE, struct drm_msm_wait_fence)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/drm/nouveau_drm.h b/libc/kernel/uapi/drm/nouveau_drm.h
index 0a2900f..29248a0 100644
--- a/libc/kernel/uapi/drm/nouveau_drm.h
+++ b/libc/kernel/uapi/drm/nouveau_drm.h
@@ -18,6 +18,11 @@
  ****************************************************************************/
 #ifndef __NOUVEAU_DRM_H__
 #define __NOUVEAU_DRM_H__
+#define DRM_NOUVEAU_EVENT_NVIF 0x80000000
+#define NOUVEAU_ABI16_CLIENT 0xffffffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NOUVEAU_ABI16_DEVICE 0xdddddddd
+#define NOUVEAU_ABI16_CHAN(n) (0xcccc0000 | (n))
 #define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
 #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -32,38 +37,38 @@
 #define NOUVEAU_GEM_TILE_NONCONTIG 0x00000008
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_nouveau_gem_info {
- uint32_t handle;
- uint32_t domain;
- uint64_t size;
+  uint32_t handle;
+  uint32_t domain;
+  uint64_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t offset;
- uint64_t map_handle;
- uint32_t tile_mode;
- uint32_t tile_flags;
+  uint64_t offset;
+  uint64_t map_handle;
+  uint32_t tile_mode;
+  uint32_t tile_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_nouveau_gem_new {
- struct drm_nouveau_gem_info info;
- uint32_t channel_hint;
+  struct drm_nouveau_gem_info info;
+  uint32_t channel_hint;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t align;
+  uint32_t align;
 };
 #define NOUVEAU_GEM_MAX_BUFFERS 1024
 struct drm_nouveau_gem_pushbuf_bo_presumed {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t valid;
- uint32_t domain;
- uint64_t offset;
+  uint32_t valid;
+  uint32_t domain;
+  uint64_t offset;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_nouveau_gem_pushbuf_bo {
- uint64_t user_priv;
- uint32_t handle;
- uint32_t read_domains;
+  uint64_t user_priv;
+  uint32_t handle;
+  uint32_t read_domains;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t write_domains;
- uint32_t valid_domains;
- struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
+  uint32_t write_domains;
+  uint32_t valid_domains;
+  struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NOUVEAU_GEM_RELOC_LOW (1 << 0)
@@ -72,51 +77,51 @@
 #define NOUVEAU_GEM_MAX_RELOCS 1024
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_nouveau_gem_pushbuf_reloc {
- uint32_t reloc_bo_index;
- uint32_t reloc_bo_offset;
- uint32_t bo_index;
+  uint32_t reloc_bo_index;
+  uint32_t reloc_bo_offset;
+  uint32_t bo_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint32_t data;
- uint32_t vor;
- uint32_t tor;
+  uint32_t flags;
+  uint32_t data;
+  uint32_t vor;
+  uint32_t tor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NOUVEAU_GEM_MAX_PUSH 512
 struct drm_nouveau_gem_pushbuf_push {
- uint32_t bo_index;
+  uint32_t bo_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pad;
- uint64_t offset;
- uint64_t length;
+  uint32_t pad;
+  uint64_t offset;
+  uint64_t length;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_nouveau_gem_pushbuf {
- uint32_t channel;
- uint32_t nr_buffers;
- uint64_t buffers;
+  uint32_t channel;
+  uint32_t nr_buffers;
+  uint64_t buffers;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t nr_relocs;
- uint32_t nr_push;
- uint64_t relocs;
- uint64_t push;
+  uint32_t nr_relocs;
+  uint32_t nr_push;
+  uint64_t relocs;
+  uint64_t push;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t suffix0;
- uint32_t suffix1;
- uint64_t vram_available;
- uint64_t gart_available;
+  uint32_t suffix0;
+  uint32_t suffix1;
+  uint64_t vram_available;
+  uint64_t gart_available;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NOUVEAU_GEM_CPU_PREP_NOWAIT 0x00000001
 #define NOUVEAU_GEM_CPU_PREP_WRITE 0x00000004
 struct drm_nouveau_gem_cpu_prep {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t flags;
+  uint32_t handle;
+  uint32_t flags;
 };
 struct drm_nouveau_gem_cpu_fini {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
+  uint32_t handle;
 };
 #define DRM_NOUVEAU_GETPARAM 0x00
 #define DRM_NOUVEAU_SETPARAM 0x01
@@ -127,17 +132,18 @@
 #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_NOUVEAU_GPUOBJ_FREE 0x06
+#define DRM_NOUVEAU_NVIF 0x07
 #define DRM_NOUVEAU_GEM_NEW 0x40
 #define DRM_NOUVEAU_GEM_PUSHBUF 0x41
-#define DRM_NOUVEAU_GEM_CPU_PREP 0x42
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_NOUVEAU_GEM_CPU_PREP 0x42
 #define DRM_NOUVEAU_GEM_CPU_FINI 0x43
 #define DRM_NOUVEAU_GEM_INFO 0x44
 #define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep)
-#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
+#define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep)
+#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
 #define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/drm/omap_drm.h b/libc/kernel/uapi/drm/omap_drm.h
index 2d4cb53..efca002 100644
--- a/libc/kernel/uapi/drm/omap_drm.h
+++ b/libc/kernel/uapi/drm/omap_drm.h
@@ -22,8 +22,8 @@
 #define OMAP_PARAM_CHIPSET_ID 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_omap_param {
- uint64_t param;
- uint64_t value;
+  uint64_t param;
+  uint64_t value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_BO_SCANOUT 0x00000001
@@ -39,46 +39,46 @@
 #define OMAP_BO_TILED_32 0x00000300
 #define OMAP_BO_TILED (OMAP_BO_TILED_8 | OMAP_BO_TILED_16 | OMAP_BO_TILED_32)
 union omap_gem_size {
- uint32_t bytes;
+  uint32_t bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- uint16_t width;
- uint16_t height;
- } tiled;
+  struct {
+    uint16_t width;
+    uint16_t height;
+  } tiled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_omap_gem_new {
- union omap_gem_size size;
- uint32_t flags;
+  union omap_gem_size size;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t __pad;
+  uint32_t handle;
+  uint32_t __pad;
 };
 enum omap_gem_op {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAP_GEM_READ = 0x01,
- OMAP_GEM_WRITE = 0x02,
+  OMAP_GEM_READ = 0x01,
+  OMAP_GEM_WRITE = 0x02,
 };
 struct drm_omap_gem_cpu_prep {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t op;
+  uint32_t handle;
+  uint32_t op;
 };
 struct drm_omap_gem_cpu_fini {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t op;
- uint32_t nregions;
- uint32_t __pad;
+  uint32_t handle;
+  uint32_t op;
+  uint32_t nregions;
+  uint32_t __pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_omap_gem_info {
- uint32_t handle;
- uint32_t pad;
+  uint32_t handle;
+  uint32_t pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t offset;
- uint32_t size;
- uint32_t __pad;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t __pad;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_OMAP_GET_PARAM 0x00
@@ -91,10 +91,10 @@
 #define DRM_OMAP_NUM_IOCTLS 0x07
 #define DRM_IOCTL_OMAP_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GET_PARAM, struct drm_omap_param)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_OMAP_SET_PARAM DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_SET_PARAM, struct drm_omap_param)
+#define DRM_IOCTL_OMAP_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_SET_PARAM, struct drm_omap_param)
 #define DRM_IOCTL_OMAP_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_NEW, struct drm_omap_gem_new)
-#define DRM_IOCTL_OMAP_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_PREP, struct drm_omap_gem_cpu_prep)
-#define DRM_IOCTL_OMAP_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_FINI, struct drm_omap_gem_cpu_fini)
+#define DRM_IOCTL_OMAP_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_PREP, struct drm_omap_gem_cpu_prep)
+#define DRM_IOCTL_OMAP_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_FINI, struct drm_omap_gem_cpu_fini)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_OMAP_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_INFO, struct drm_omap_gem_info)
 #endif
diff --git a/libc/kernel/uapi/drm/qxl_drm.h b/libc/kernel/uapi/drm/qxl_drm.h
index 4f48668..3878b75 100644
--- a/libc/kernel/uapi/drm/qxl_drm.h
+++ b/libc/kernel/uapi/drm/qxl_drm.h
@@ -34,85 +34,85 @@
 #define DRM_QXL_CLIENTCAP 0x05
 #define DRM_QXL_ALLOC_SURF 0x06
 struct drm_qxl_alloc {
- uint32_t size;
+  uint32_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
+  uint32_t handle;
 };
 struct drm_qxl_map {
- uint64_t offset;
+  uint64_t offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t pad;
+  uint32_t handle;
+  uint32_t pad;
 };
 #define QXL_RELOC_TYPE_BO 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QXL_RELOC_TYPE_SURF 2
 struct drm_qxl_reloc {
- uint64_t src_offset;
- uint64_t dst_offset;
+  uint64_t src_offset;
+  uint64_t dst_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t src_handle;
- uint32_t dst_handle;
- uint32_t reloc_type;
- uint32_t pad;
+  uint32_t src_handle;
+  uint32_t dst_handle;
+  uint32_t reloc_type;
+  uint32_t pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_qxl_command {
- uint64_t __user command;
- uint64_t __user relocs;
+  uint64_t __user command;
+  uint64_t __user relocs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t type;
- uint32_t command_size;
- uint32_t relocs_num;
- uint32_t pad;
+  uint32_t type;
+  uint32_t command_size;
+  uint32_t relocs_num;
+  uint32_t pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_qxl_execbuffer {
- uint32_t flags;
- uint32_t commands_num;
+  uint32_t flags;
+  uint32_t commands_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t __user commands;
+  uint64_t __user commands;
 };
 struct drm_qxl_update_area {
- uint32_t handle;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t top;
- uint32_t left;
- uint32_t bottom;
- uint32_t right;
+  uint32_t top;
+  uint32_t left;
+  uint32_t bottom;
+  uint32_t right;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pad;
+  uint32_t pad;
 };
 #define QXL_PARAM_NUM_SURFACES 1
 #define QXL_PARAM_MAX_RELOCS 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_qxl_getparam {
- uint64_t param;
- uint64_t value;
+  uint64_t param;
+  uint64_t value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_qxl_clientcap {
- uint32_t index;
- uint32_t pad;
+  uint32_t index;
+  uint32_t pad;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_qxl_alloc_surf {
- uint32_t format;
- uint32_t width;
- uint32_t height;
+  uint32_t format;
+  uint32_t width;
+  uint32_t height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t stride;
- uint32_t handle;
- uint32_t pad;
+  int32_t stride;
+  uint32_t handle;
+  uint32_t pad;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_QXL_ALLOC   DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC, struct drm_qxl_alloc)
-#define DRM_IOCTL_QXL_MAP   DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_MAP, struct drm_qxl_map)
-#define DRM_IOCTL_QXL_EXECBUFFER   DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_EXECBUFFER,  struct drm_qxl_execbuffer)
-#define DRM_IOCTL_QXL_UPDATE_AREA   DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_UPDATE_AREA,  struct drm_qxl_update_area)
+#define DRM_IOCTL_QXL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC, struct drm_qxl_alloc)
+#define DRM_IOCTL_QXL_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_MAP, struct drm_qxl_map)
+#define DRM_IOCTL_QXL_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_EXECBUFFER, struct drm_qxl_execbuffer)
+#define DRM_IOCTL_QXL_UPDATE_AREA DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_UPDATE_AREA, struct drm_qxl_update_area)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_QXL_GETPARAM   DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_GETPARAM,  struct drm_qxl_getparam)
-#define DRM_IOCTL_QXL_CLIENTCAP   DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_CLIENTCAP,  struct drm_qxl_clientcap)
-#define DRM_IOCTL_QXL_ALLOC_SURF   DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC_SURF,  struct drm_qxl_alloc_surf)
+#define DRM_IOCTL_QXL_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_GETPARAM, struct drm_qxl_getparam)
+#define DRM_IOCTL_QXL_CLIENTCAP DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_CLIENTCAP, struct drm_qxl_clientcap)
+#define DRM_IOCTL_QXL_ALLOC_SURF DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC_SURF, struct drm_qxl_alloc_surf)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/drm/r128_drm.h b/libc/kernel/uapi/drm/r128_drm.h
index 0b2c1c9..4e68381 100644
--- a/libc/kernel/uapi/drm/r128_drm.h
+++ b/libc/kernel/uapi/drm/r128_drm.h
@@ -64,61 +64,61 @@
 #define R128_MAX_TEXTURE_UNITS 2
 #endif
 typedef struct {
- unsigned int dst_pitch_offset_c;
+  unsigned int dst_pitch_offset_c;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dp_gui_master_cntl_c;
- unsigned int sc_top_left_c;
- unsigned int sc_bottom_right_c;
- unsigned int z_offset_c;
+  unsigned int dp_gui_master_cntl_c;
+  unsigned int sc_top_left_c;
+  unsigned int sc_bottom_right_c;
+  unsigned int z_offset_c;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int z_pitch_c;
- unsigned int z_sten_cntl_c;
- unsigned int tex_cntl_c;
- unsigned int misc_3d_state_cntl_reg;
+  unsigned int z_pitch_c;
+  unsigned int z_sten_cntl_c;
+  unsigned int tex_cntl_c;
+  unsigned int misc_3d_state_cntl_reg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int texture_clr_cmp_clr_c;
- unsigned int texture_clr_cmp_msk_c;
- unsigned int fog_color_c;
- unsigned int tex_size_pitch_c;
+  unsigned int texture_clr_cmp_clr_c;
+  unsigned int texture_clr_cmp_msk_c;
+  unsigned int fog_color_c;
+  unsigned int tex_size_pitch_c;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int constant_color_c;
- unsigned int pm4_vc_fpu_setup;
- unsigned int setup_cntl;
- unsigned int dp_write_mask;
+  unsigned int constant_color_c;
+  unsigned int pm4_vc_fpu_setup;
+  unsigned int setup_cntl;
+  unsigned int dp_write_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int sten_ref_mask_c;
- unsigned int plane_3d_mask_c;
- unsigned int window_xy_offset;
- unsigned int scale_3d_cntl;
+  unsigned int sten_ref_mask_c;
+  unsigned int plane_3d_mask_c;
+  unsigned int window_xy_offset;
+  unsigned int scale_3d_cntl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_r128_context_regs_t;
 typedef struct {
- unsigned int tex_cntl;
- unsigned int tex_combine_cntl;
+  unsigned int tex_cntl;
+  unsigned int tex_combine_cntl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tex_size_pitch;
- unsigned int tex_offset[R128_MAX_TEXTURE_LEVELS];
- unsigned int tex_border_color;
+  unsigned int tex_size_pitch;
+  unsigned int tex_offset[R128_MAX_TEXTURE_LEVELS];
+  unsigned int tex_border_color;
 } drm_r128_texture_regs_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_r128_sarea {
- drm_r128_context_regs_t context_state;
- drm_r128_texture_regs_t tex_state[R128_MAX_TEXTURE_UNITS];
- unsigned int dirty;
+  drm_r128_context_regs_t context_state;
+  drm_r128_texture_regs_t tex_state[R128_MAX_TEXTURE_UNITS];
+  unsigned int dirty;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int vertsize;
- unsigned int vc_format;
- struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];
- unsigned int nbox;
+  unsigned int vertsize;
+  unsigned int vc_format;
+  struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int last_frame;
- unsigned int last_dispatch;
- struct drm_tex_region tex_list[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS + 1];
- unsigned int tex_age[R128_NR_TEX_HEAPS];
+  unsigned int last_frame;
+  unsigned int last_dispatch;
+  struct drm_tex_region tex_list[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS + 1];
+  unsigned int tex_age[R128_NR_TEX_HEAPS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ctx_owner;
- int pfAllowPageFlip;
- int pfCurrentPage;
+  int ctx_owner;
+  int pfAllowPageFlip;
+  int pfCurrentPage;
 } drm_r128_sarea_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_R128_INIT 0x00
@@ -143,138 +143,138 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_R128_GETPARAM 0x12
 #define DRM_R128_FLIP 0x13
-#define DRM_IOCTL_R128_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_R128_INIT, drm_r128_init_t)
-#define DRM_IOCTL_R128_CCE_START DRM_IO( DRM_COMMAND_BASE + DRM_R128_CCE_START)
+#define DRM_IOCTL_R128_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INIT, drm_r128_init_t)
+#define DRM_IOCTL_R128_CCE_START DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_START)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_R128_CCE_STOP DRM_IOW( DRM_COMMAND_BASE + DRM_R128_CCE_STOP, drm_r128_cce_stop_t)
-#define DRM_IOCTL_R128_CCE_RESET DRM_IO( DRM_COMMAND_BASE + DRM_R128_CCE_RESET)
-#define DRM_IOCTL_R128_CCE_IDLE DRM_IO( DRM_COMMAND_BASE + DRM_R128_CCE_IDLE)
-#define DRM_IOCTL_R128_RESET DRM_IO( DRM_COMMAND_BASE + DRM_R128_RESET)
+#define DRM_IOCTL_R128_CCE_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CCE_STOP, drm_r128_cce_stop_t)
+#define DRM_IOCTL_R128_CCE_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_RESET)
+#define DRM_IOCTL_R128_CCE_IDLE DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_IDLE)
+#define DRM_IOCTL_R128_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_RESET)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_R128_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_R128_SWAP)
-#define DRM_IOCTL_R128_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_R128_CLEAR, drm_r128_clear_t)
-#define DRM_IOCTL_R128_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_R128_VERTEX, drm_r128_vertex_t)
-#define DRM_IOCTL_R128_INDICES DRM_IOW( DRM_COMMAND_BASE + DRM_R128_INDICES, drm_r128_indices_t)
+#define DRM_IOCTL_R128_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_R128_SWAP)
+#define DRM_IOCTL_R128_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR, drm_r128_clear_t)
+#define DRM_IOCTL_R128_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_R128_VERTEX, drm_r128_vertex_t)
+#define DRM_IOCTL_R128_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INDICES, drm_r128_indices_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_R128_BLIT DRM_IOW( DRM_COMMAND_BASE + DRM_R128_BLIT, drm_r128_blit_t)
-#define DRM_IOCTL_R128_DEPTH DRM_IOW( DRM_COMMAND_BASE + DRM_R128_DEPTH, drm_r128_depth_t)
-#define DRM_IOCTL_R128_STIPPLE DRM_IOW( DRM_COMMAND_BASE + DRM_R128_STIPPLE, drm_r128_stipple_t)
+#define DRM_IOCTL_R128_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_BLIT, drm_r128_blit_t)
+#define DRM_IOCTL_R128_DEPTH DRM_IOW(DRM_COMMAND_BASE + DRM_R128_DEPTH, drm_r128_depth_t)
+#define DRM_IOCTL_R128_STIPPLE DRM_IOW(DRM_COMMAND_BASE + DRM_R128_STIPPLE, drm_r128_stipple_t)
 #define DRM_IOCTL_R128_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_INDIRECT, drm_r128_indirect_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + DRM_R128_FULLSCREEN, drm_r128_fullscreen_t)
-#define DRM_IOCTL_R128_CLEAR2 DRM_IOW( DRM_COMMAND_BASE + DRM_R128_CLEAR2, drm_r128_clear2_t)
-#define DRM_IOCTL_R128_GETPARAM DRM_IOWR( DRM_COMMAND_BASE + DRM_R128_GETPARAM, drm_r128_getparam_t)
-#define DRM_IOCTL_R128_FLIP DRM_IO( DRM_COMMAND_BASE + DRM_R128_FLIP)
+#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW(DRM_COMMAND_BASE + DRM_R128_FULLSCREEN, drm_r128_fullscreen_t)
+#define DRM_IOCTL_R128_CLEAR2 DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR2, drm_r128_clear2_t)
+#define DRM_IOCTL_R128_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_GETPARAM, drm_r128_getparam_t)
+#define DRM_IOCTL_R128_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_R128_FLIP)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_r128_init {
- enum {
- R128_INIT_CCE = 0x01,
- R128_CLEANUP_CCE = 0x02
+  enum {
+    R128_INIT_CCE = 0x01,
+    R128_CLEANUP_CCE = 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } func;
- unsigned long sarea_priv_offset;
- int is_pci;
- int cce_mode;
+  } func;
+  unsigned long sarea_priv_offset;
+  int is_pci;
+  int cce_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cce_secure;
- int ring_size;
- int usec_timeout;
- unsigned int fb_bpp;
+  int cce_secure;
+  int ring_size;
+  int usec_timeout;
+  unsigned int fb_bpp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int front_offset, front_pitch;
- unsigned int back_offset, back_pitch;
- unsigned int depth_bpp;
- unsigned int depth_offset, depth_pitch;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int span_offset;
- unsigned long fb_offset;
- unsigned long mmio_offset;
- unsigned long ring_offset;
+  unsigned int span_offset;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long ring_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long ring_rptr_offset;
- unsigned long buffers_offset;
- unsigned long agp_textures_offset;
+  unsigned long ring_rptr_offset;
+  unsigned long buffers_offset;
+  unsigned long agp_textures_offset;
 } drm_r128_init_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_r128_cce_stop {
- int flush;
- int idle;
+  int flush;
+  int idle;
 } drm_r128_cce_stop_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_r128_clear {
- unsigned int flags;
- unsigned int clear_color;
- unsigned int clear_depth;
+  unsigned int flags;
+  unsigned int clear_color;
+  unsigned int clear_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int color_mask;
- unsigned int depth_mask;
+  unsigned int color_mask;
+  unsigned int depth_mask;
 } drm_r128_clear_t;
 typedef struct drm_r128_vertex {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int prim;
- int idx;
- int count;
- int discard;
+  int prim;
+  int idx;
+  int count;
+  int discard;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_r128_vertex_t;
 typedef struct drm_r128_indices {
- int prim;
- int idx;
+  int prim;
+  int idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int start;
- int end;
- int discard;
+  int start;
+  int end;
+  int discard;
 } drm_r128_indices_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_r128_blit {
- int idx;
- int pitch;
- int offset;
+  int idx;
+  int pitch;
+  int offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int format;
- unsigned short x, y;
- unsigned short width, height;
+  int format;
+  unsigned short x, y;
+  unsigned short width, height;
 } drm_r128_blit_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_r128_depth {
- enum {
- R128_WRITE_SPAN = 0x01,
- R128_WRITE_PIXELS = 0x02,
+  enum {
+    R128_WRITE_SPAN = 0x01,
+    R128_WRITE_PIXELS = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- R128_READ_SPAN = 0x03,
- R128_READ_PIXELS = 0x04
- } func;
- int n;
+    R128_READ_SPAN = 0x03,
+    R128_READ_PIXELS = 0x04
+  } func;
+  int n;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int __user *x;
- int __user *y;
- unsigned int __user *buffer;
- unsigned char __user *mask;
+  int __user * x;
+  int __user * y;
+  unsigned int __user * buffer;
+  unsigned char __user * mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_r128_depth_t;
 typedef struct drm_r128_stipple {
- unsigned int __user *mask;
+  unsigned int __user * mask;
 } drm_r128_stipple_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_r128_indirect {
- int idx;
- int start;
- int end;
+  int idx;
+  int start;
+  int end;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int discard;
+  int discard;
 } drm_r128_indirect_t;
 typedef struct drm_r128_fullscreen {
- enum {
+  enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- R128_INIT_FULLSCREEN = 0x01,
- R128_CLEANUP_FULLSCREEN = 0x02
- } func;
+    R128_INIT_FULLSCREEN = 0x01,
+    R128_CLEANUP_FULLSCREEN = 0x02
+  } func;
 } drm_r128_fullscreen_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R128_PARAM_IRQ_NR 1
 typedef struct drm_r128_getparam {
- int param;
- void __user *value;
+  int param;
+  void __user * value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_r128_getparam_t;
 #endif
diff --git a/libc/kernel/uapi/drm/radeon_drm.h b/libc/kernel/uapi/drm/radeon_drm.h
index fd0a3a9..6fb86f1 100644
--- a/libc/kernel/uapi/drm/radeon_drm.h
+++ b/libc/kernel/uapi/drm/radeon_drm.h
@@ -179,34 +179,34 @@
 #define RADEON_CMD_WAIT 8
 #define RADEON_CMD_VECLINEAR 9
 typedef union {
- int i;
+  int i;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned char cmd_type, pad0, pad1, pad2;
- } header;
- struct {
+  struct {
+    unsigned char cmd_type, pad0, pad1, pad2;
+  } header;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cmd_type, packet_id, pad0, pad1;
- } packet;
- struct {
- unsigned char cmd_type, offset, stride, count;
+    unsigned char cmd_type, packet_id, pad0, pad1;
+  } packet;
+  struct {
+    unsigned char cmd_type, offset, stride, count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } scalars;
- struct {
- unsigned char cmd_type, offset, stride, count;
- } vectors;
+  } scalars;
+  struct {
+    unsigned char cmd_type, offset, stride, count;
+  } vectors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned char cmd_type, addr_lo, addr_hi, count;
- } veclinear;
- struct {
+  struct {
+    unsigned char cmd_type, addr_lo, addr_hi, count;
+  } veclinear;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cmd_type, buf_idx, pad0, pad1;
- } dma;
- struct {
- unsigned char cmd_type, flags, pad0, pad1;
+    unsigned char cmd_type, buf_idx, pad0, pad1;
+  } dma;
+  struct {
+    unsigned char cmd_type, flags, pad0, pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } wait;
+  } wait;
 } drm_radeon_cmd_header_t;
 #define RADEON_WAIT_2D 0x1
 #define RADEON_WAIT_3D 0x2
@@ -236,42 +236,42 @@
 #define R300_CMD_R500FP 9
 typedef union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int u;
- struct {
- unsigned char cmd_type, pad0, pad1, pad2;
- } header;
+  unsigned int u;
+  struct {
+    unsigned char cmd_type, pad0, pad1, pad2;
+  } header;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned char cmd_type, count, reglo, reghi;
- } packet0;
- struct {
+  struct {
+    unsigned char cmd_type, count, reglo, reghi;
+  } packet0;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cmd_type, count, adrlo, adrhi;
- } vpu;
- struct {
- unsigned char cmd_type, packet, pad0, pad1;
+    unsigned char cmd_type, count, adrlo, adrhi;
+  } vpu;
+  struct {
+    unsigned char cmd_type, packet, pad0, pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } packet3;
- struct {
- unsigned char cmd_type, packet;
- unsigned short count;
+  } packet3;
+  struct {
+    unsigned char cmd_type, packet;
+    unsigned short count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } delay;
- struct {
- unsigned char cmd_type, buf_idx, pad0, pad1;
- } dma;
+  } delay;
+  struct {
+    unsigned char cmd_type, buf_idx, pad0, pad1;
+  } dma;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned char cmd_type, flags, pad0, pad1;
- } wait;
- struct {
+  struct {
+    unsigned char cmd_type, flags, pad0, pad1;
+  } wait;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cmd_type, reg, n_bufs, flags;
- } scratch;
- struct {
- unsigned char cmd_type, count, adrlo, adrhi_flags;
+    unsigned char cmd_type, reg, n_bufs, flags;
+  } scratch;
+  struct {
+    unsigned char cmd_type, count, adrlo, adrhi_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } r500fp;
+  } r500fp;
 } drm_r300_cmd_header_t;
 #define RADEON_FRONT 0x1
 #define RADEON_BACK 0x2
@@ -314,521 +314,551 @@
 #define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1)
 #endif
 typedef struct {
- unsigned int red;
+  unsigned int red;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int green;
- unsigned int blue;
- unsigned int alpha;
+  unsigned int green;
+  unsigned int blue;
+  unsigned int alpha;
 } radeon_color_regs_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- unsigned int pp_misc;
- unsigned int pp_fog_color;
- unsigned int re_solid_color;
+  unsigned int pp_misc;
+  unsigned int pp_fog_color;
+  unsigned int re_solid_color;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int rb3d_blendcntl;
- unsigned int rb3d_depthoffset;
- unsigned int rb3d_depthpitch;
- unsigned int rb3d_zstencilcntl;
+  unsigned int rb3d_blendcntl;
+  unsigned int rb3d_depthoffset;
+  unsigned int rb3d_depthpitch;
+  unsigned int rb3d_zstencilcntl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int pp_cntl;
- unsigned int rb3d_cntl;
- unsigned int rb3d_coloroffset;
- unsigned int re_width_height;
+  unsigned int pp_cntl;
+  unsigned int rb3d_cntl;
+  unsigned int rb3d_coloroffset;
+  unsigned int re_width_height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int rb3d_colorpitch;
- unsigned int se_cntl;
- unsigned int se_coord_fmt;
- unsigned int re_line_pattern;
+  unsigned int rb3d_colorpitch;
+  unsigned int se_cntl;
+  unsigned int se_coord_fmt;
+  unsigned int re_line_pattern;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int re_line_state;
- unsigned int se_line_width;
- unsigned int pp_lum_matrix;
- unsigned int pp_rot_matrix_0;
+  unsigned int re_line_state;
+  unsigned int se_line_width;
+  unsigned int pp_lum_matrix;
+  unsigned int pp_rot_matrix_0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int pp_rot_matrix_1;
- unsigned int rb3d_stencilrefmask;
- unsigned int rb3d_ropcntl;
- unsigned int rb3d_planemask;
+  unsigned int pp_rot_matrix_1;
+  unsigned int rb3d_stencilrefmask;
+  unsigned int rb3d_ropcntl;
+  unsigned int rb3d_planemask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int se_vport_xscale;
- unsigned int se_vport_xoffset;
- unsigned int se_vport_yscale;
- unsigned int se_vport_yoffset;
+  unsigned int se_vport_xscale;
+  unsigned int se_vport_xoffset;
+  unsigned int se_vport_yscale;
+  unsigned int se_vport_yoffset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int se_vport_zscale;
- unsigned int se_vport_zoffset;
- unsigned int se_cntl_status;
- unsigned int re_top_left;
+  unsigned int se_vport_zscale;
+  unsigned int se_vport_zoffset;
+  unsigned int se_cntl_status;
+  unsigned int re_top_left;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int re_misc;
+  unsigned int re_misc;
 } drm_radeon_context_regs_t;
 typedef struct {
- unsigned int se_zbias_factor;
+  unsigned int se_zbias_factor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int se_zbias_constant;
+  unsigned int se_zbias_constant;
 } drm_radeon_context2_regs_t;
 typedef struct {
- unsigned int pp_txfilter;
+  unsigned int pp_txfilter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int pp_txformat;
- unsigned int pp_txoffset;
- unsigned int pp_txcblend;
- unsigned int pp_txablend;
+  unsigned int pp_txformat;
+  unsigned int pp_txoffset;
+  unsigned int pp_txcblend;
+  unsigned int pp_txablend;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int pp_tfactor;
- unsigned int pp_border_color;
+  unsigned int pp_tfactor;
+  unsigned int pp_border_color;
 } drm_radeon_texture_regs_t;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int start;
- unsigned int finish;
- unsigned int prim:8;
- unsigned int stateidx:8;
+  unsigned int start;
+  unsigned int finish;
+  unsigned int prim : 8;
+  unsigned int stateidx : 8;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int numverts:16;
- unsigned int vc_format;
+  unsigned int numverts : 16;
+  unsigned int vc_format;
 } drm_radeon_prim_t;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_radeon_context_regs_t context;
- drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS];
- drm_radeon_context2_regs_t context2;
- unsigned int dirty;
+  drm_radeon_context_regs_t context;
+  drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS];
+  drm_radeon_context2_regs_t context2;
+  unsigned int dirty;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_radeon_state_t;
 typedef struct {
- drm_radeon_context_regs_t context_state;
- drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS];
+  drm_radeon_context_regs_t context_state;
+  drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dirty;
- unsigned int vertsize;
- unsigned int vc_format;
- struct drm_clip_rect boxes[RADEON_NR_SAREA_CLIPRECTS];
+  unsigned int dirty;
+  unsigned int vertsize;
+  unsigned int vc_format;
+  struct drm_clip_rect boxes[RADEON_NR_SAREA_CLIPRECTS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int nbox;
- unsigned int last_frame;
- unsigned int last_dispatch;
- unsigned int last_clear;
+  unsigned int nbox;
+  unsigned int last_frame;
+  unsigned int last_dispatch;
+  unsigned int last_clear;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_tex_region tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS +
- 1];
- unsigned int tex_age[RADEON_NR_TEX_HEAPS];
- int ctx_owner;
+  struct drm_tex_region tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS + 1];
+  unsigned int tex_age[RADEON_NR_TEX_HEAPS];
+  int ctx_owner;
+  int pfState;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pfState;
- int pfCurrentPage;
- int crtc2_base;
- int tiling_enabled;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int pfCurrentPage;
+  int crtc2_base;
+  int tiling_enabled;
 } drm_radeon_sarea_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_CP_INIT 0x00
 #define DRM_RADEON_CP_START 0x01
 #define DRM_RADEON_CP_STOP 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_CP_RESET 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_CP_IDLE 0x04
 #define DRM_RADEON_RESET 0x05
 #define DRM_RADEON_FULLSCREEN 0x06
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_SWAP 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_CLEAR 0x08
 #define DRM_RADEON_VERTEX 0x09
 #define DRM_RADEON_INDICES 0x0A
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_NOT_USED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_STIPPLE 0x0C
 #define DRM_RADEON_INDIRECT 0x0D
 #define DRM_RADEON_TEXTURE 0x0E
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_VERTEX2 0x0F
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_CMDBUF 0x10
 #define DRM_RADEON_GETPARAM 0x11
 #define DRM_RADEON_FLIP 0x12
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_ALLOC 0x13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_FREE 0x14
 #define DRM_RADEON_INIT_HEAP 0x15
 #define DRM_RADEON_IRQ_EMIT 0x16
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_IRQ_WAIT 0x17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_CP_RESUME 0x18
 #define DRM_RADEON_SETPARAM 0x19
 #define DRM_RADEON_SURF_ALLOC 0x1a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_SURF_FREE 0x1b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_GEM_INFO 0x1c
 #define DRM_RADEON_GEM_CREATE 0x1d
 #define DRM_RADEON_GEM_MMAP 0x1e
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_GEM_PREAD 0x21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_GEM_PWRITE 0x22
 #define DRM_RADEON_GEM_SET_DOMAIN 0x23
 #define DRM_RADEON_GEM_WAIT_IDLE 0x24
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_CS 0x26
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_INFO 0x27
 #define DRM_RADEON_GEM_SET_TILING 0x28
 #define DRM_RADEON_GEM_GET_TILING 0x29
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_GEM_BUSY 0x2a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_GEM_VA 0x2b
-#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
-#define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START)
+#define DRM_RADEON_GEM_OP 0x2c
+#define DRM_RADEON_GEM_USERPTR 0x2d
+#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
-#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESET)
-#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE)
-#define DRM_IOCTL_RADEON_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_RESET)
+#define DRM_IOCTL_RADEON_CP_START DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_START)
+#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
+#define DRM_IOCTL_RADEON_CP_RESET DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_RESET)
+#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t)
-#define DRM_IOCTL_RADEON_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_SWAP)
-#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t)
-#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t)
+#define DRM_IOCTL_RADEON_RESET DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_RESET)
+#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t)
+#define DRM_IOCTL_RADEON_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_SWAP)
+#define DRM_IOCTL_RADEON_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_RADEON_INDICES DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t)
-#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t)
+#define DRM_IOCTL_RADEON_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t)
+#define DRM_IOCTL_RADEON_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t)
+#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t)
 #define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INDIRECT, drm_radeon_indirect_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_TEXTURE, drm_radeon_texture_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t)
-#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t)
+#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t)
+#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t)
 #define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GETPARAM, drm_radeon_getparam_t)
-#define DRM_IOCTL_RADEON_FLIP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_FLIP)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_RADEON_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_FLIP)
 #define DRM_IOCTL_RADEON_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_ALLOC, drm_radeon_mem_alloc_t)
-#define DRM_IOCTL_RADEON_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t)
-#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t)
+#define DRM_IOCTL_RADEON_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t)
+#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT, drm_radeon_irq_emit_t)
+#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t)
+#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME)
+#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t)
-#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME)
-#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t)
-#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
+#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
+#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
 #define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info)
 #define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create)
-#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
 #define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
 #define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
 #define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
-#define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle)
 #define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
 #define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info)
 #define DRM_IOCTL_RADEON_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_TILING, struct drm_radeon_gem_set_tiling)
-#define DRM_IOCTL_RADEON_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_RADEON_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling)
 #define DRM_IOCTL_RADEON_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_BUSY, struct drm_radeon_gem_busy)
 #define DRM_IOCTL_RADEON_GEM_VA DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_VA, struct drm_radeon_gem_va)
+#define DRM_IOCTL_RADEON_GEM_OP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_OP, struct drm_radeon_gem_op)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_RADEON_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_USERPTR, struct drm_radeon_gem_userptr)
 typedef struct drm_radeon_init {
- enum {
+  enum {
+    RADEON_INIT_CP = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RADEON_INIT_CP = 0x01,
- RADEON_CLEANUP_CP = 0x02,
- RADEON_INIT_R200_CP = 0x03,
- RADEON_INIT_R300_CP = 0x04,
+    RADEON_CLEANUP_CP = 0x02,
+    RADEON_INIT_R200_CP = 0x03,
+    RADEON_INIT_R300_CP = 0x04,
+    RADEON_INIT_R600_CP = 0x05
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RADEON_INIT_R600_CP = 0x05
- } func;
- unsigned long sarea_priv_offset;
- int is_pci;
+  } func;
+  unsigned long sarea_priv_offset;
+  int is_pci;
+  int cp_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cp_mode;
- int gart_size;
- int ring_size;
- int usec_timeout;
+  int gart_size;
+  int ring_size;
+  int usec_timeout;
+  unsigned int fb_bpp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int fb_bpp;
- unsigned int front_offset, front_pitch;
- unsigned int back_offset, back_pitch;
- unsigned int depth_bpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int depth_offset, depth_pitch;
- unsigned long fb_offset;
- unsigned long mmio_offset;
- unsigned long ring_offset;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long ring_offset;
+  unsigned long ring_rptr_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long ring_rptr_offset;
- unsigned long buffers_offset;
- unsigned long gart_textures_offset;
+  unsigned long buffers_offset;
+  unsigned long gart_textures_offset;
 } drm_radeon_init_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_cp_stop {
- int flush;
- int idle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int flush;
+  int idle;
 } drm_radeon_cp_stop_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_fullscreen {
- enum {
- RADEON_INIT_FULLSCREEN = 0x01,
- RADEON_CLEANUP_FULLSCREEN = 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } func;
+  enum {
+    RADEON_INIT_FULLSCREEN = 0x01,
+    RADEON_CLEANUP_FULLSCREEN = 0x02
+  } func;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_radeon_fullscreen_t;
 #define CLEAR_X1 0
 #define CLEAR_Y1 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLEAR_X2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLEAR_Y2 3
 #define CLEAR_DEPTH 4
 typedef union drm_radeon_clear_rect {
+  float f[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- float f[5];
- unsigned int ui[5];
+  unsigned int ui[5];
 } drm_radeon_clear_rect_t;
 typedef struct drm_radeon_clear {
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
- unsigned int clear_color;
- unsigned int clear_depth;
- unsigned int color_mask;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int depth_mask;
- drm_radeon_clear_rect_t __user *depth_boxes;
+  drm_radeon_clear_rect_t __user * depth_boxes;
 } drm_radeon_clear_t;
 typedef struct drm_radeon_vertex {
+  int prim;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int prim;
- int idx;
- int count;
- int discard;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int idx;
+  int count;
+  int discard;
 } drm_radeon_vertex_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_indices {
- int prim;
- int idx;
+  int prim;
+  int idx;
+  int start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int start;
- int end;
- int discard;
+  int end;
+  int discard;
 } drm_radeon_indices_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_vertex2 {
- int idx;
- int discard;
- int nr_states;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_radeon_state_t __user *state;
- int nr_prims;
- drm_radeon_prim_t __user *prim;
+  int idx;
+  int discard;
+  int nr_states;
+  drm_radeon_state_t __user * state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int nr_prims;
+  drm_radeon_prim_t __user * prim;
 } drm_radeon_vertex2_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_cmd_buffer {
- int bufsz;
- char __user *buf;
- int nbox;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_clip_rect __user *boxes;
+  int bufsz;
+  char __user * buf;
+  int nbox;
+  struct drm_clip_rect __user * boxes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_radeon_cmd_buffer_t;
 typedef struct drm_radeon_tex_image {
- unsigned int x, y;
+  unsigned int x, y;
+  unsigned int width, height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int width, height;
- const void __user *data;
+  const void __user * data;
 } drm_radeon_tex_image_t;
 typedef struct drm_radeon_texture {
+  unsigned int offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int offset;
- int pitch;
- int format;
- int width;
+  int pitch;
+  int format;
+  int width;
+  int height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int height;
- drm_radeon_tex_image_t __user *image;
+  drm_radeon_tex_image_t __user * image;
 } drm_radeon_texture_t;
 typedef struct drm_radeon_stipple {
+  unsigned int __user * mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int __user *mask;
 } drm_radeon_stipple_t;
 typedef struct drm_radeon_indirect {
- int idx;
+  int idx;
+  int start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int start;
- int end;
- int discard;
+  int end;
+  int discard;
 } drm_radeon_indirect_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_CARD_PCI 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_CARD_AGP 1
 #define RADEON_CARD_PCIE 2
 #define RADEON_PARAM_GART_BUFFER_OFFSET 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_LAST_FRAME 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_LAST_DISPATCH 3
 #define RADEON_PARAM_LAST_CLEAR 4
 #define RADEON_PARAM_IRQ_NR 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_GART_BASE 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_REGISTER_HANDLE 7
 #define RADEON_PARAM_STATUS_HANDLE 8
 #define RADEON_PARAM_SAREA_HANDLE 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_GART_TEX_HANDLE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_SCRATCH_OFFSET 11
 #define RADEON_PARAM_CARD_TYPE 12
 #define RADEON_PARAM_VBLANK_CRTC 13
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_FB_LOCATION 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_PARAM_NUM_GB_PIPES 15
 #define RADEON_PARAM_DEVICE_ID 16
 #define RADEON_PARAM_NUM_Z_PIPES 17
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_getparam {
- int param;
- void __user *value;
-} drm_radeon_getparam_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int param;
+  void __user * value;
+} drm_radeon_getparam_t;
 #define RADEON_MEM_REGION_GART 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_MEM_REGION_FB 2
 typedef struct drm_radeon_mem_alloc {
- int region;
+  int region;
+  int alignment;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int alignment;
- int size;
- int __user *region_offset;
+  int size;
+  int __user * region_offset;
 } drm_radeon_mem_alloc_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_mem_free {
- int region;
- int region_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int region;
+  int region_offset;
 } drm_radeon_mem_free_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_radeon_mem_init_heap {
- int region;
- int size;
- int start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int region;
+  int size;
+  int start;
 } drm_radeon_mem_init_heap_t;
-typedef struct drm_radeon_irq_emit {
- int __user *irq_seq;
-} drm_radeon_irq_emit_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct drm_radeon_irq_emit {
+  int __user * irq_seq;
+} drm_radeon_irq_emit_t;
 typedef struct drm_radeon_irq_wait {
- int irq_seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int irq_seq;
 } drm_radeon_irq_wait_t;
 typedef struct drm_radeon_setparam {
+  unsigned int param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int param;
- __s64 value;
+  __s64 value;
 } drm_radeon_setparam_t;
 #define RADEON_SETPARAM_FB_LOCATION 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_SETPARAM_SWITCH_TILING 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_SETPARAM_PCIGART_LOCATION 3
 #define RADEON_SETPARAM_NEW_MEMMAP 4
 #define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_SETPARAM_VBLANK_CRTC 6
-typedef struct drm_radeon_surface_alloc {
- unsigned int address;
- unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
+typedef struct drm_radeon_surface_alloc {
+  unsigned int address;
+  unsigned int size;
+  unsigned int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_radeon_surface_alloc_t;
 typedef struct drm_radeon_surface_free {
- unsigned int address;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int address;
 } drm_radeon_surface_free_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_RADEON_VBLANK_CRTC1 1
 #define DRM_RADEON_VBLANK_CRTC2 2
 #define RADEON_GEM_DOMAIN_CPU 0x1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_GEM_DOMAIN_GTT 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_GEM_DOMAIN_VRAM 0x4
 struct drm_radeon_gem_info {
- uint64_t gart_size;
+  uint64_t gart_size;
+  uint64_t vram_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t vram_size;
- uint64_t vram_visible;
+  uint64_t vram_visible;
 };
-#define RADEON_GEM_NO_BACKING_STORE 1
+#define RADEON_GEM_NO_BACKING_STORE (1 << 0)
+#define RADEON_GEM_GTT_UC (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_GEM_GTT_WC (1 << 2)
+#define RADEON_GEM_CPU_ACCESS (1 << 3)
+#define RADEON_GEM_NO_CPU_ACCESS (1 << 4)
 struct drm_radeon_gem_create {
- uint64_t size;
- uint64_t alignment;
- uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t initial_domain;
- uint32_t flags;
+  uint64_t size;
+  uint64_t alignment;
+  uint32_t handle;
+  uint32_t initial_domain;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t flags;
 };
-#define RADEON_TILING_MACRO 0x1
+#define RADEON_GEM_USERPTR_READONLY (1 << 0)
+#define RADEON_GEM_USERPTR_ANONONLY (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_GEM_USERPTR_VALIDATE (1 << 2)
+#define RADEON_GEM_USERPTR_REGISTER (1 << 3)
+struct drm_radeon_gem_userptr {
+  uint64_t addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint64_t size;
+  uint32_t flags;
+  uint32_t handle;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_TILING_MACRO 0x1
 #define RADEON_TILING_MICRO 0x2
 #define RADEON_TILING_SWAP_16BIT 0x4
 #define RADEON_TILING_SWAP_32BIT 0x8
-#define RADEON_TILING_SURFACE 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_TILING_SURFACE 0x10
 #define RADEON_TILING_MICRO_SQUARE 0x20
 #define RADEON_TILING_EG_BANKW_SHIFT 8
 #define RADEON_TILING_EG_BANKW_MASK 0xf
-#define RADEON_TILING_EG_BANKH_SHIFT 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_TILING_EG_BANKH_SHIFT 12
 #define RADEON_TILING_EG_BANKH_MASK 0xf
 #define RADEON_TILING_EG_MACRO_TILE_ASPECT_SHIFT 16
 #define RADEON_TILING_EG_MACRO_TILE_ASPECT_MASK 0xf
-#define RADEON_TILING_EG_TILE_SPLIT_SHIFT 24
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_TILING_EG_TILE_SPLIT_SHIFT 24
 #define RADEON_TILING_EG_TILE_SPLIT_MASK 0xf
 #define RADEON_TILING_EG_STENCIL_TILE_SPLIT_SHIFT 28
 #define RADEON_TILING_EG_STENCIL_TILE_SPLIT_MASK 0xf
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_radeon_gem_set_tiling {
+  uint32_t handle;
+  uint32_t tiling_flags;
+  uint32_t pitch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t tiling_flags;
- uint32_t pitch;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_radeon_gem_get_tiling {
- uint32_t handle;
- uint32_t tiling_flags;
- uint32_t pitch;
+  uint32_t handle;
+  uint32_t tiling_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t pitch;
 };
 struct drm_radeon_gem_mmap {
- uint32_t handle;
- uint32_t pad;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t offset;
- uint64_t size;
- uint64_t addr_ptr;
+  uint32_t pad;
+  uint64_t offset;
+  uint64_t size;
+  uint64_t addr_ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_radeon_gem_set_domain {
- uint32_t handle;
- uint32_t read_domains;
- uint32_t write_domain;
+  uint32_t handle;
+  uint32_t read_domains;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t write_domain;
 };
 struct drm_radeon_gem_wait_idle {
- uint32_t handle;
- uint32_t pad;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t pad;
 };
 struct drm_radeon_gem_busy {
- uint32_t handle;
- uint32_t domain;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t domain;
 };
 struct drm_radeon_gem_pread {
- uint32_t handle;
- uint32_t pad;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t offset;
- uint64_t size;
- uint64_t data_ptr;
+  uint32_t pad;
+  uint64_t offset;
+  uint64_t size;
+  uint64_t data_ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_radeon_gem_pwrite {
- uint32_t handle;
- uint32_t pad;
- uint64_t offset;
+  uint32_t handle;
+  uint32_t pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t size;
- uint64_t data_ptr;
+  uint64_t offset;
+  uint64_t size;
+  uint64_t data_ptr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct drm_radeon_gem_op {
+  uint32_t handle;
+  uint32_t op;
+  uint64_t value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define RADEON_GEM_OP_GET_INITIAL_DOMAIN 0
+#define RADEON_GEM_OP_SET_INITIAL_DOMAIN 1
 #define RADEON_VA_MAP 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_VA_UNMAP 2
@@ -843,12 +873,12 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_VM_PAGE_SNOOPED (1 << 4)
 struct drm_radeon_gem_va {
- uint32_t handle;
- uint32_t operation;
+  uint32_t handle;
+  uint32_t operation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t vm_id;
- uint32_t flags;
- uint64_t offset;
+  uint32_t vm_id;
+  uint32_t flags;
+  uint64_t offset;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_CHUNK_ID_RELOCS 0x01
@@ -864,67 +894,77 @@
 #define RADEON_CS_RING_COMPUTE 1
 #define RADEON_CS_RING_DMA 2
 #define RADEON_CS_RING_UVD 3
+#define RADEON_CS_RING_VCE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_radeon_cs_chunk {
+  uint32_t chunk_id;
+  uint32_t length_dw;
+  uint64_t chunk_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t chunk_id;
- uint32_t length_dw;
- uint64_t chunk_data;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_RELOC_PRIO_MASK (0xf << 0)
 struct drm_radeon_cs_reloc {
- uint32_t handle;
- uint32_t read_domains;
- uint32_t write_domain;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
+  uint32_t read_domains;
+  uint32_t write_domain;
+  uint32_t flags;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_radeon_cs {
- uint32_t num_chunks;
+  uint32_t num_chunks;
+  uint32_t cs_id;
+  uint64_t chunks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t cs_id;
- uint64_t chunks;
- uint64_t gart_limit;
- uint64_t vram_limit;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint64_t gart_limit;
+  uint64_t vram_limit;
 };
 #define RADEON_INFO_DEVICE_ID 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_NUM_GB_PIPES 0x01
 #define RADEON_INFO_NUM_Z_PIPES 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_ACCEL_WORKING 0x03
 #define RADEON_INFO_CRTC_FROM_ID 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_ACCEL_WORKING2 0x05
 #define RADEON_INFO_TILING_CONFIG 0x06
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_WANT_HYPERZ 0x07
 #define RADEON_INFO_WANT_CMASK 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_CLOCK_CRYSTAL_FREQ 0x09
 #define RADEON_INFO_NUM_BACKENDS 0x0a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_NUM_TILE_PIPES 0x0b
 #define RADEON_INFO_FUSION_GART_WORKING 0x0c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_BACKEND_MAP 0x0d
 #define RADEON_INFO_VA_START 0x0e
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_IB_VM_MAX_SIZE 0x0f
 #define RADEON_INFO_MAX_PIPES 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_TIMESTAMP 0x11
 #define RADEON_INFO_MAX_SE 0x12
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_MAX_SH_PER_SE 0x13
 #define RADEON_INFO_FASTFB_WORKING 0x14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_RING_WORKING 0x15
 #define RADEON_INFO_SI_TILE_MODE_ARRAY 0x16
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_SI_CP_DMA_COMPUTE 0x17
 #define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY 0x18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RADEON_INFO_SI_BACKEND_ENABLED_MASK 0x19
 #define RADEON_INFO_MAX_SCLK 0x1a
+#define RADEON_INFO_VCE_FW_VERSION 0x1b
+#define RADEON_INFO_VCE_FB_VERSION 0x1c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RADEON_INFO_NUM_BYTES_MOVED 0x1d
+#define RADEON_INFO_VRAM_USAGE 0x1e
+#define RADEON_INFO_GTT_USAGE 0x1f
+#define RADEON_INFO_ACTIVE_CU_COUNT 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_radeon_info {
- uint32_t request;
- uint32_t pad;
- uint64_t value;
+  uint32_t request;
+  uint32_t pad;
+  uint64_t value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SI_TILE_MODE_COLOR_LINEAR_ALIGNED 8
diff --git a/libc/kernel/uapi/drm/savage_drm.h b/libc/kernel/uapi/drm/savage_drm.h
index 4c1d0f8..db873b6 100644
--- a/libc/kernel/uapi/drm/savage_drm.h
+++ b/libc/kernel/uapi/drm/savage_drm.h
@@ -29,156 +29,155 @@
 #define SAVAGE_LOG_MIN_TEX_REGION_SIZE 16
 #endif
 typedef struct _drm_savage_sarea {
- struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +
+  struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- 1];
- unsigned int texAge[SAVAGE_NR_TEX_HEAPS];
- int ctxOwner;
-} drm_savage_sarea_t, *drm_savage_sarea_ptr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int texAge[SAVAGE_NR_TEX_HEAPS];
+  int ctxOwner;
+} drm_savage_sarea_t, * drm_savage_sarea_ptr;
 #define DRM_SAVAGE_BCI_INIT 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_SAVAGE_BCI_CMDBUF 0x01
 #define DRM_SAVAGE_BCI_EVENT_EMIT 0x02
 #define DRM_SAVAGE_BCI_EVENT_WAIT 0x03
+#define DRM_IOCTL_SAVAGE_BCI_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_SAVAGE_BCI_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t)
-#define DRM_IOCTL_SAVAGE_BCI_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t)
+#define DRM_IOCTL_SAVAGE_BCI_CMDBUF DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t)
 #define DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t)
-#define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t)
 #define SAVAGE_DMA_PCI 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_DMA_AGP 3
 typedef struct drm_savage_init {
- enum {
+  enum {
+    SAVAGE_INIT_BCI = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SAVAGE_INIT_BCI = 1,
- SAVAGE_CLEANUP_BCI = 2
- } func;
- unsigned int sarea_priv_offset;
+    SAVAGE_CLEANUP_BCI = 2
+  } func;
+  unsigned int sarea_priv_offset;
+  unsigned int cob_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cob_size;
- unsigned int bci_threshold_lo, bci_threshold_hi;
- unsigned int dma_type;
- unsigned int fb_bpp;
+  unsigned int bci_threshold_lo, bci_threshold_hi;
+  unsigned int dma_type;
+  unsigned int fb_bpp;
+  unsigned int front_offset, front_pitch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int front_offset, front_pitch;
- unsigned int back_offset, back_pitch;
- unsigned int depth_bpp;
- unsigned int depth_offset, depth_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned int texture_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int texture_offset;
- unsigned int texture_size;
- unsigned long status_offset;
- unsigned long buffers_offset;
+  unsigned int texture_size;
+  unsigned long status_offset;
+  unsigned long buffers_offset;
+  unsigned long agp_textures_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long agp_textures_offset;
- unsigned long cmd_dma_offset;
+  unsigned long cmd_dma_offset;
 } drm_savage_init_t;
 typedef union drm_savage_cmd_header drm_savage_cmd_header_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct drm_savage_cmdbuf {
- drm_savage_cmd_header_t __user *cmd_addr;
- unsigned int size;
- unsigned int dma_idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int discard;
- unsigned int __user *vb_addr;
- unsigned int vb_size;
- unsigned int vb_stride;
+  drm_savage_cmd_header_t __user * cmd_addr;
+  unsigned int size;
+  unsigned int dma_idx;
+  int discard;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_clip_rect __user *box_addr;
- unsigned int nbox;
+  unsigned int __user * vb_addr;
+  unsigned int vb_size;
+  unsigned int vb_stride;
+  struct drm_clip_rect __user * box_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int nbox;
 } drm_savage_cmdbuf_t;
 #define SAVAGE_WAIT_2D 0x1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_WAIT_3D 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_WAIT_IRQ 0x4
 typedef struct drm_savage_event {
- unsigned int count;
+  unsigned int count;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
 } drm_savage_event_emit_t, drm_savage_event_wait_t;
 #define SAVAGE_CMD_STATE 0
 #define SAVAGE_CMD_DMA_PRIM 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_CMD_VB_PRIM 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_CMD_DMA_IDX 3
 #define SAVAGE_CMD_VB_IDX 4
 #define SAVAGE_CMD_CLEAR 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_CMD_SWAP 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_PRIM_TRILIST 0
 #define SAVAGE_PRIM_TRISTRIP 1
 #define SAVAGE_PRIM_TRIFAN 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_PRIM_TRILIST_201 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_SKIP_Z 0x01
 #define SAVAGE_SKIP_W 0x02
 #define SAVAGE_SKIP_C0 0x04
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_SKIP_C1 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_SKIP_S0 0x10
 #define SAVAGE_SKIP_T0 0x20
 #define SAVAGE_SKIP_ST0 0x30
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_SKIP_S1 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_SKIP_T1 0x80
 #define SAVAGE_SKIP_ST1 0xc0
 #define SAVAGE_SKIP_ALL_S3D 0x3f
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_SKIP_ALL_S4 0xff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAVAGE_FRONT 0x1
 #define SAVAGE_BACK 0x2
 #define SAVAGE_DEPTH 0x4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union drm_savage_cmd_header {
- struct {
- unsigned char cmd;
- unsigned char pad0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short pad1;
- unsigned short pad2;
- unsigned short pad3;
- } cmd;
+  struct {
+    unsigned char cmd;
+    unsigned char pad0;
+    unsigned short pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned char cmd;
- unsigned char global;
- unsigned short count;
+    unsigned short pad2;
+    unsigned short pad3;
+  } cmd;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short start;
- unsigned short pad3;
- } state;
- struct {
+    unsigned char cmd;
+    unsigned char global;
+    unsigned short count;
+    unsigned short start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cmd;
- unsigned char prim;
- unsigned short skip;
- unsigned short count;
+    unsigned short pad3;
+  } state;
+  struct {
+    unsigned char cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short start;
- } prim;
- struct {
- unsigned char cmd;
+    unsigned char prim;
+    unsigned short skip;
+    unsigned short count;
+    unsigned short start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char prim;
- unsigned short skip;
- unsigned short count;
- unsigned short pad3;
+  } prim;
+  struct {
+    unsigned char cmd;
+    unsigned char prim;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } idx;
- struct {
- unsigned char cmd;
- unsigned char pad0;
+    unsigned short skip;
+    unsigned short count;
+    unsigned short pad3;
+  } idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short pad1;
- unsigned int flags;
- } clear0;
- struct {
+  struct {
+    unsigned char cmd;
+    unsigned char pad0;
+    unsigned short pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int mask;
- unsigned int value;
- } clear1;
+    unsigned int flags;
+  } clear0;
+  struct {
+    unsigned int mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    unsigned int value;
+  } clear1;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/drm/sis_drm.h b/libc/kernel/uapi/drm/sis_drm.h
index 43789ac..5a9e868 100644
--- a/libc/kernel/uapi/drm/sis_drm.h
+++ b/libc/kernel/uapi/drm/sis_drm.h
@@ -29,30 +29,30 @@
 #define DRM_SIS_AGP_FREE 0x15
 #define DRM_SIS_FB_INIT 0x16
 #define DRM_IOCTL_SIS_FB_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_FB_ALLOC, drm_sis_mem_t)
-#define DRM_IOCTL_SIS_FB_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_FB_FREE, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_FB_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_FB_FREE, drm_sis_mem_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_SIS_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_INIT, drm_sis_agp_t)
 #define DRM_IOCTL_SIS_AGP_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_ALLOC, drm_sis_mem_t)
-#define DRM_IOCTL_SIS_AGP_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_AGP_FREE, drm_sis_mem_t)
-#define DRM_IOCTL_SIS_FB_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_FB_INIT, drm_sis_fb_t)
+#define DRM_IOCTL_SIS_AGP_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_AGP_FREE, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_FB_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_FB_INIT, drm_sis_fb_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- int context;
- unsigned long offset;
- unsigned long size;
+  int context;
+  unsigned long offset;
+  unsigned long size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long free;
+  unsigned long free;
 } drm_sis_mem_t;
 typedef struct {
- unsigned long offset, size;
+  unsigned long offset, size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_sis_agp_t;
 typedef struct {
- unsigned long offset, size;
+  unsigned long offset, size;
 } drm_sis_fb_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sis_file_private {
- struct list_head obj_list;
+  struct list_head obj_list;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/drm/tegra_drm.h b/libc/kernel/uapi/drm/tegra_drm.h
index 91d71be..e207c0c 100644
--- a/libc/kernel/uapi/drm/tegra_drm.h
+++ b/libc/kernel/uapi/drm/tegra_drm.h
@@ -23,111 +23,141 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1)
 struct drm_tegra_gem_create {
- __u64 size;
- __u32 flags;
+  __u64 size;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
+  __u32 handle;
 };
 struct drm_tegra_gem_mmap {
- __u32 handle;
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 offset;
+  __u32 offset;
 };
 struct drm_tegra_syncpt_read {
- __u32 id;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 value;
+  __u32 value;
 };
 struct drm_tegra_syncpt_incr {
- __u32 id;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
+  __u32 pad;
 };
 struct drm_tegra_syncpt_wait {
- __u32 id;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 thresh;
- __u32 timeout;
- __u32 value;
+  __u32 thresh;
+  __u32 timeout;
+  __u32 value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_TEGRA_NO_TIMEOUT (0xffffffff)
 struct drm_tegra_open_channel {
- __u32 client;
- __u32 pad;
+  __u32 client;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 context;
+  __u64 context;
 };
 struct drm_tegra_close_channel {
- __u64 context;
+  __u64 context;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_tegra_get_syncpt {
- __u64 context;
- __u32 index;
+  __u64 context;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
+  __u32 id;
 };
 struct drm_tegra_get_syncpt_base {
- __u64 context;
+  __u64 context;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 syncpt;
- __u32 id;
+  __u32 syncpt;
+  __u32 id;
 };
 struct drm_tegra_syncpt {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 incrs;
+  __u32 id;
+  __u32 incrs;
 };
 struct drm_tegra_cmdbuf {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- __u32 offset;
- __u32 words;
- __u32 pad;
+  __u32 handle;
+  __u32 offset;
+  __u32 words;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_tegra_reloc {
- struct {
- __u32 handle;
+  struct {
+    __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 offset;
- } cmdbuf;
- struct {
- __u32 handle;
+    __u32 offset;
+  } cmdbuf;
+  struct {
+    __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 offset;
- } target;
- __u32 shift;
- __u32 pad;
+    __u32 offset;
+  } target;
+  __u32 shift;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_tegra_waitchk {
- __u32 handle;
- __u32 offset;
+  __u32 handle;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 syncpt;
- __u32 thresh;
+  __u32 syncpt;
+  __u32 thresh;
 };
 struct drm_tegra_submit {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 context;
- __u32 num_syncpts;
- __u32 num_cmdbufs;
- __u32 num_relocs;
+  __u64 context;
+  __u32 num_syncpts;
+  __u32 num_cmdbufs;
+  __u32 num_relocs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_waitchks;
- __u32 waitchk_mask;
- __u32 timeout;
- __u32 pad;
+  __u32 num_waitchks;
+  __u32 waitchk_mask;
+  __u32 timeout;
+  __u64 syncpts;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 syncpts;
- __u64 cmdbufs;
- __u64 relocs;
- __u64 waitchks;
+  __u64 cmdbufs;
+  __u64 relocs;
+  __u64 waitchks;
+  __u32 fence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fence;
- __u32 reserved[5];
+  __u32 reserved[5];
+};
+#define DRM_TEGRA_GEM_TILING_MODE_PITCH 0
+#define DRM_TEGRA_GEM_TILING_MODE_TILED 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2
+struct drm_tegra_gem_set_tiling {
+  __u32 handle;
+  __u32 mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 value;
+  __u32 pad;
+};
+struct drm_tegra_gem_get_tiling {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
+  __u32 mode;
+  __u32 value;
+  __u32 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define DRM_TEGRA_GEM_BOTTOM_UP (1 << 0)
+#define DRM_TEGRA_GEM_FLAGS (DRM_TEGRA_GEM_BOTTOM_UP)
+struct drm_tegra_gem_set_flags {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_tegra_gem_get_flags {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 handle;
+  __u32 flags;
 };
 #define DRM_TEGRA_GEM_CREATE 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -142,6 +172,11 @@
 #define DRM_TEGRA_SUBMIT 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_TEGRA_GET_SYNCPT_BASE 0x09
+#define DRM_TEGRA_GEM_SET_TILING 0x0a
+#define DRM_TEGRA_GEM_GET_TILING 0x0b
+#define DRM_TEGRA_GEM_SET_FLAGS 0x0c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_TEGRA_GEM_GET_FLAGS 0x0d
 #define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create)
 #define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap)
 #define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read)
@@ -154,5 +189,10 @@
 #define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt)
 #define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit)
 #define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base)
+#define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling)
+#define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags)
+#define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/drm/via_drm.h b/libc/kernel/uapi/drm/via_drm.h
index 5321a5d..8be086c 100644
--- a/libc/kernel/uapi/drm/via_drm.h
+++ b/libc/kernel/uapi/drm/via_drm.h
@@ -28,7 +28,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIA_NR_XVMC_LOCKS 5
 #define VIA_MAX_CACHELINE_SIZE 64
-#define XVMCLOCKPTR(saPriv,lockNo)   ((volatile struct drm_hw_lock *)(((((unsigned long) (saPriv)->XvMCLockArea) +   (VIA_MAX_CACHELINE_SIZE - 1)) &   ~(VIA_MAX_CACHELINE_SIZE - 1)) +   VIA_MAX_CACHELINE_SIZE*(lockNo)))
+#define XVMCLOCKPTR(saPriv,lockNo) ((volatile struct drm_hw_lock *) (((((unsigned long) (saPriv)->XvMCLockArea) + (VIA_MAX_CACHELINE_SIZE - 1)) & ~(VIA_MAX_CACHELINE_SIZE - 1)) + VIA_MAX_CACHELINE_SIZE * (lockNo)))
 #define VIA_NR_TEX_REGIONS 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIA_LOG_MIN_TEX_REGION_SIZE 16
@@ -64,20 +64,20 @@
 #define DRM_VIA_DMA_BLIT 0x0e
 #define DRM_VIA_BLIT_SYNC 0x0f
 #define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t)
-#define DRM_IOCTL_VIA_FREEMEM DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t)
+#define DRM_IOCTL_VIA_FREEMEM DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_VIA_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t)
 #define DRM_IOCTL_VIA_FB_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t)
 #define DRM_IOCTL_VIA_MAP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t)
-#define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t)
+#define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_IOCTL_VIA_DMA_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t)
-#define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t)
-#define DRM_IOCTL_VIA_FLUSH DRM_IO( DRM_COMMAND_BASE + DRM_VIA_FLUSH)
-#define DRM_IOCTL_VIA_PCICMD DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t)
+#define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t)
+#define DRM_IOCTL_VIA_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_VIA_FLUSH)
+#define DRM_IOCTL_VIA_PCICMD DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE,   drm_via_cmdbuf_size_t)
-#define DRM_IOCTL_VIA_WAIT_IRQ DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t)
+#define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, drm_via_cmdbuf_size_t)
+#define DRM_IOCTL_VIA_WAIT_IRQ DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t)
 #define DRM_IOCTL_VIA_DMA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t)
 #define DRM_IOCTL_VIA_BLIT_SYNC DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -94,152 +94,152 @@
 #define VIA_MEM_MIXED 3
 #define VIA_MEM_UNKNOWN 4
 typedef struct {
- __u32 offset;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 size;
+  __u32 size;
 } drm_via_agp_t;
 typedef struct {
- __u32 offset;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 size;
+  __u32 size;
 } drm_via_fb_t;
 typedef struct {
- __u32 context;
+  __u32 context;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 size;
- unsigned long index;
- unsigned long offset;
+  __u32 type;
+  __u32 size;
+  unsigned long index;
+  unsigned long offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_via_mem_t;
 typedef struct _drm_via_init {
- enum {
- VIA_INIT_MAP = 0x01,
+  enum {
+    VIA_INIT_MAP = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIA_CLEANUP_MAP = 0x02
- } func;
- unsigned long sarea_priv_offset;
- unsigned long fb_offset;
+    VIA_CLEANUP_MAP = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
+  unsigned long fb_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long mmio_offset;
- unsigned long agpAddr;
+  unsigned long mmio_offset;
+  unsigned long agpAddr;
 } drm_via_init_t;
 typedef struct _drm_via_futex {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum {
- VIA_FUTEX_WAIT = 0x00,
- VIA_FUTEX_WAKE = 0X01
- } func;
+  enum {
+    VIA_FUTEX_WAIT = 0x00,
+    VIA_FUTEX_WAKE = 0X01
+  } func;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ms;
- __u32 lock;
- __u32 val;
+  __u32 ms;
+  __u32 lock;
+  __u32 val;
 } drm_via_futex_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _drm_via_dma_init {
- enum {
- VIA_INIT_DMA = 0x01,
- VIA_CLEANUP_DMA = 0x02,
+  enum {
+    VIA_INIT_DMA = 0x01,
+    VIA_CLEANUP_DMA = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIA_DMA_INITIALIZED = 0x03
- } func;
- unsigned long offset;
- unsigned long size;
+    VIA_DMA_INITIALIZED = 0x03
+  } func;
+  unsigned long offset;
+  unsigned long size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long reg_pause_addr;
+  unsigned long reg_pause_addr;
 } drm_via_dma_init_t;
 typedef struct _drm_via_cmdbuffer {
- char __user *buf;
+  char __user * buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long size;
+  unsigned long size;
 } drm_via_cmdbuffer_t;
 typedef struct _drm_via_tex_region {
- unsigned char next, prev;
+  unsigned char next, prev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char inUse;
- int age;
+  unsigned char inUse;
+  int age;
 } drm_via_tex_region_t;
 typedef struct _drm_via_sarea {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dirty;
- unsigned int nbox;
- struct drm_clip_rect boxes[VIA_NR_SAREA_CLIPRECTS];
- drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1];
+  unsigned int dirty;
+  unsigned int nbox;
+  struct drm_clip_rect boxes[VIA_NR_SAREA_CLIPRECTS];
+  drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int texAge;
- int ctxOwner;
- int vertexPrim;
- char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
+  int texAge;
+  int ctxOwner;
+  int vertexPrim;
+  char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
- unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
- unsigned int XvMCCtxNoGrabbed;
- unsigned int pfCurrentOffset;
+  unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
+  unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
+  unsigned int XvMCCtxNoGrabbed;
+  unsigned int pfCurrentOffset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_via_sarea_t;
 typedef struct _drm_via_cmdbuf_size {
- enum {
- VIA_CMDBUF_SPACE = 0x01,
+  enum {
+    VIA_CMDBUF_SPACE = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIA_CMDBUF_LAG = 0x02
- } func;
- int wait;
- __u32 size;
+    VIA_CMDBUF_LAG = 0x02
+  } func;
+  int wait;
+  __u32 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } drm_via_cmdbuf_size_t;
 typedef enum {
- VIA_IRQ_ABSOLUTE = 0x0,
- VIA_IRQ_RELATIVE = 0x1,
+  VIA_IRQ_ABSOLUTE = 0x0,
+  VIA_IRQ_RELATIVE = 0x1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIA_IRQ_SIGNAL = 0x10000000,
- VIA_IRQ_FORCE_SEQUENCE = 0x20000000
+  VIA_IRQ_SIGNAL = 0x10000000,
+  VIA_IRQ_FORCE_SEQUENCE = 0x20000000
 } via_irq_seq_type_t;
 #define VIA_IRQ_FLAGS_MASK 0xF0000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum drm_via_irqs {
- drm_via_irq_hqv0 = 0,
- drm_via_irq_hqv1,
- drm_via_irq_dma0_dd,
+  drm_via_irq_hqv0 = 0,
+  drm_via_irq_hqv1,
+  drm_via_irq_dma0_dd,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_via_irq_dma0_td,
- drm_via_irq_dma1_dd,
- drm_via_irq_dma1_td,
- drm_via_irq_num
+  drm_via_irq_dma0_td,
+  drm_via_irq_dma1_dd,
+  drm_via_irq_dma1_td,
+  drm_via_irq_num
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_via_wait_irq_request {
- unsigned irq;
- via_irq_seq_type_t type;
+  unsigned irq;
+  via_irq_seq_type_t type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sequence;
- __u32 signal;
+  __u32 sequence;
+  __u32 signal;
 };
 typedef union drm_via_irqwait {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_via_wait_irq_request request;
- struct drm_wait_vblank_reply reply;
+  struct drm_via_wait_irq_request request;
+  struct drm_wait_vblank_reply reply;
 } drm_via_irqwait_t;
 typedef struct drm_via_blitsync {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sync_handle;
- unsigned engine;
+  __u32 sync_handle;
+  unsigned engine;
 } drm_via_blitsync_t;
 typedef struct drm_via_dmablit {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_lines;
- __u32 line_length;
- __u32 fb_addr;
- __u32 fb_stride;
+  __u32 num_lines;
+  __u32 line_length;
+  __u32 fb_addr;
+  __u32 fb_stride;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char *mem_addr;
- __u32 mem_stride;
- __u32 flags;
- int to_fb;
+  unsigned char * mem_addr;
+  __u32 mem_stride;
+  __u32 flags;
+  int to_fb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_via_blitsync_t sync;
+  drm_via_blitsync_t sync;
 } drm_via_dmablit_t;
 struct via_file_private {
- struct list_head obj_list;
+  struct list_head obj_list;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/drm/vmwgfx_drm.h b/libc/kernel/uapi/drm/vmwgfx_drm.h
index 849ef7d..c12cdd1 100644
--- a/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef __VMWGFX_DRM_H__
 #define __VMWGFX_DRM_H__
-#include <drm.h>
+#include <drm/drm.h>
 #define DRM_VMW_MAX_SURFACE_FACES 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_VMW_MAX_MIP_LEVELS 24
@@ -68,302 +68,307 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_VMW_PARAM_MAX_MOB_MEMORY 9
 #define DRM_VMW_PARAM_MAX_MOB_SIZE 10
-struct drm_vmw_getparam_arg {
- uint64_t value;
+enum drm_vmw_handle_type {
+  DRM_VMW_HANDLE_LEGACY = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t param;
- uint32_t pad64;
+  DRM_VMW_HANDLE_PRIME = 1
+};
+struct drm_vmw_getparam_arg {
+  uint64_t value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t param;
+  uint32_t pad64;
 };
 struct drm_vmw_context_arg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t cid;
- uint32_t pad64;
+  int32_t cid;
+  uint32_t pad64;
 };
 struct drm_vmw_surface_create_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint32_t format;
- uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES];
- uint64_t size_addr;
+  uint32_t flags;
+  uint32_t format;
+  uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES];
+  uint64_t size_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t shareable;
- int32_t scanout;
+  int32_t shareable;
+  int32_t scanout;
 };
 struct drm_vmw_surface_arg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t sid;
- uint32_t pad64;
+  int32_t sid;
+  enum drm_vmw_handle_type handle_type;
 };
 struct drm_vmw_size {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t width;
- uint32_t height;
- uint32_t depth;
- uint32_t pad64;
+  uint32_t width;
+  uint32_t height;
+  uint32_t depth;
+  uint32_t pad64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 union drm_vmw_surface_create_arg {
- struct drm_vmw_surface_arg rep;
- struct drm_vmw_surface_create_req req;
+  struct drm_vmw_surface_arg rep;
+  struct drm_vmw_surface_create_req req;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 union drm_vmw_surface_reference_arg {
- struct drm_vmw_surface_create_req rep;
- struct drm_vmw_surface_arg req;
+  struct drm_vmw_surface_create_req rep;
+  struct drm_vmw_surface_arg req;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DRM_VMW_EXECBUF_VERSION 1
 struct drm_vmw_execbuf_arg {
- uint64_t commands;
+  uint64_t commands;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t command_size;
- uint32_t throttle_us;
- uint64_t fence_rep;
- uint32_t version;
+  uint32_t command_size;
+  uint32_t throttle_us;
+  uint64_t fence_rep;
+  uint32_t version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
+  uint32_t flags;
 };
 struct drm_vmw_fence_rep {
- uint32_t handle;
+  uint32_t handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t mask;
- uint32_t seqno;
- uint32_t passed_seqno;
- uint32_t pad64;
+  uint32_t mask;
+  uint32_t seqno;
+  uint32_t passed_seqno;
+  uint32_t pad64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t error;
+  int32_t error;
 };
 struct drm_vmw_alloc_dmabuf_req {
- uint32_t size;
+  uint32_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pad64;
+  uint32_t pad64;
 };
 struct drm_vmw_dmabuf_rep {
- uint64_t map_handle;
+  uint64_t map_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t cur_gmr_id;
- uint32_t cur_gmr_offset;
- uint32_t pad64;
+  uint32_t handle;
+  uint32_t cur_gmr_id;
+  uint32_t cur_gmr_offset;
+  uint32_t pad64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 union drm_vmw_alloc_dmabuf_arg {
- struct drm_vmw_alloc_dmabuf_req req;
- struct drm_vmw_dmabuf_rep rep;
+  struct drm_vmw_alloc_dmabuf_req req;
+  struct drm_vmw_dmabuf_rep rep;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_vmw_unref_dmabuf_arg {
- uint32_t handle;
- uint32_t pad64;
+  uint32_t handle;
+  uint32_t pad64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_vmw_rect {
- int32_t x;
- int32_t y;
+  int32_t x;
+  int32_t y;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t w;
- uint32_t h;
+  uint32_t w;
+  uint32_t h;
 };
 struct drm_vmw_control_stream_arg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t stream_id;
- uint32_t enabled;
- uint32_t flags;
- uint32_t color_key;
+  uint32_t stream_id;
+  uint32_t enabled;
+  uint32_t flags;
+  uint32_t color_key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t offset;
- int32_t format;
- uint32_t size;
+  uint32_t handle;
+  uint32_t offset;
+  int32_t format;
+  uint32_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t width;
- uint32_t height;
- uint32_t pitch[3];
- uint32_t pad64;
+  uint32_t width;
+  uint32_t height;
+  uint32_t pitch[3];
+  uint32_t pad64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct drm_vmw_rect src;
- struct drm_vmw_rect dst;
+  struct drm_vmw_rect src;
+  struct drm_vmw_rect dst;
 };
 #define DRM_VMW_CURSOR_BYPASS_ALL (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_VMW_CURSOR_BYPASS_FLAGS (1)
 struct drm_vmw_cursor_bypass_arg {
- uint32_t flags;
- uint32_t crtc_id;
+  uint32_t flags;
+  uint32_t crtc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t xpos;
- int32_t ypos;
- int32_t xhot;
- int32_t yhot;
+  int32_t xpos;
+  int32_t ypos;
+  int32_t xhot;
+  int32_t yhot;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_vmw_stream_arg {
- uint32_t stream_id;
- uint32_t pad64;
+  uint32_t stream_id;
+  uint32_t pad64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_vmw_get_3d_cap_arg {
- uint64_t buffer;
- uint32_t max_size;
+  uint64_t buffer;
+  uint32_t max_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pad64;
+  uint32_t pad64;
 };
 #define DRM_VMW_FENCE_FLAG_EXEC (1 << 0)
 #define DRM_VMW_FENCE_FLAG_QUERY (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRM_VMW_WAIT_OPTION_UNREF (1 << 0)
 struct drm_vmw_fence_wait_arg {
- uint32_t handle;
- int32_t cookie_valid;
+  uint32_t handle;
+  int32_t cookie_valid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t kernel_cookie;
- uint64_t timeout_us;
- int32_t lazy;
- int32_t flags;
+  uint64_t kernel_cookie;
+  uint64_t timeout_us;
+  int32_t lazy;
+  int32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t wait_options;
- int32_t pad64;
+  int32_t wait_options;
+  int32_t pad64;
 };
 struct drm_vmw_fence_signaled_arg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t flags;
- int32_t signaled;
- uint32_t passed_seqno;
+  uint32_t handle;
+  uint32_t flags;
+  int32_t signaled;
+  uint32_t passed_seqno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t signaled_flags;
- uint32_t pad64;
+  uint32_t signaled_flags;
+  uint32_t pad64;
 };
 struct drm_vmw_fence_arg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t handle;
- uint32_t pad64;
+  uint32_t handle;
+  uint32_t pad64;
 };
 #define DRM_VMW_EVENT_FENCE_SIGNALED 0x80000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_vmw_event_fence {
- struct drm_event base;
- uint64_t user_data;
- uint32_t tv_sec;
+  struct drm_event base;
+  uint64_t user_data;
+  uint32_t tv_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t tv_usec;
+  uint32_t tv_usec;
 };
 #define DRM_VMW_FE_FLAG_REQ_TIME (1 << 0)
 struct drm_vmw_fence_event_arg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t fence_rep;
- uint64_t user_data;
- uint32_t handle;
- uint32_t flags;
+  uint64_t fence_rep;
+  uint64_t user_data;
+  uint32_t handle;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_vmw_present_arg {
- uint32_t fb_id;
- uint32_t sid;
+  uint32_t fb_id;
+  uint32_t sid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t dest_x;
- int32_t dest_y;
- uint64_t clips_ptr;
- uint32_t num_clips;
+  int32_t dest_x;
+  int32_t dest_y;
+  uint64_t clips_ptr;
+  uint32_t num_clips;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pad64;
+  uint32_t pad64;
 };
 struct drm_vmw_present_readback_arg {
- uint32_t fb_id;
+  uint32_t fb_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t num_clips;
- uint64_t clips_ptr;
- uint64_t fence_rep;
+  uint32_t num_clips;
+  uint64_t clips_ptr;
+  uint64_t fence_rep;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_vmw_update_layout_arg {
- uint32_t num_outputs;
- uint32_t pad64;
- uint64_t rects;
+  uint32_t num_outputs;
+  uint32_t pad64;
+  uint64_t rects;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum drm_vmw_shader_type {
- drm_vmw_shader_type_vs = 0,
- drm_vmw_shader_type_ps,
+  drm_vmw_shader_type_vs = 0,
+  drm_vmw_shader_type_ps,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_vmw_shader_type_gs
+  drm_vmw_shader_type_gs
 };
 struct drm_vmw_shader_create_arg {
- enum drm_vmw_shader_type shader_type;
+  enum drm_vmw_shader_type shader_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t size;
- uint32_t buffer_handle;
- uint32_t shader_handle;
- uint64_t offset;
+  uint32_t size;
+  uint32_t buffer_handle;
+  uint32_t shader_handle;
+  uint64_t offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_vmw_shader_arg {
- uint32_t handle;
- uint32_t pad64;
+  uint32_t handle;
+  uint32_t pad64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum drm_vmw_surface_flags {
- drm_vmw_surface_flag_shareable = (1 << 0),
- drm_vmw_surface_flag_scanout = (1 << 1),
+  drm_vmw_surface_flag_shareable = (1 << 0),
+  drm_vmw_surface_flag_scanout = (1 << 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_vmw_surface_flag_create_buffer = (1 << 2)
+  drm_vmw_surface_flag_create_buffer = (1 << 2)
 };
 struct drm_vmw_gb_surface_create_req {
- uint32_t svga3d_flags;
+  uint32_t svga3d_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t format;
- uint32_t mip_levels;
- enum drm_vmw_surface_flags drm_surface_flags;
- uint32_t multisample_count;
+  uint32_t format;
+  uint32_t mip_levels;
+  enum drm_vmw_surface_flags drm_surface_flags;
+  uint32_t multisample_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t autogen_filter;
- uint32_t buffer_handle;
- uint32_t pad64;
- struct drm_vmw_size base_size;
+  uint32_t autogen_filter;
+  uint32_t buffer_handle;
+  uint32_t pad64;
+  struct drm_vmw_size base_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct drm_vmw_gb_surface_create_rep {
- uint32_t handle;
- uint32_t backup_size;
+  uint32_t handle;
+  uint32_t backup_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t buffer_handle;
- uint32_t buffer_size;
- uint64_t buffer_map_handle;
+  uint32_t buffer_handle;
+  uint32_t buffer_size;
+  uint64_t buffer_map_handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union drm_vmw_gb_surface_create_arg {
- struct drm_vmw_gb_surface_create_rep rep;
- struct drm_vmw_gb_surface_create_req req;
+  struct drm_vmw_gb_surface_create_rep rep;
+  struct drm_vmw_gb_surface_create_req req;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct drm_vmw_gb_surface_ref_rep {
- struct drm_vmw_gb_surface_create_req creq;
- struct drm_vmw_gb_surface_create_rep crep;
+  struct drm_vmw_gb_surface_create_req creq;
+  struct drm_vmw_gb_surface_create_rep crep;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union drm_vmw_gb_surface_reference_arg {
- struct drm_vmw_gb_surface_ref_rep rep;
- struct drm_vmw_surface_arg req;
+  struct drm_vmw_gb_surface_ref_rep rep;
+  struct drm_vmw_surface_arg req;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum drm_vmw_synccpu_flags {
- drm_vmw_synccpu_read = (1 << 0),
- drm_vmw_synccpu_write = (1 << 1),
- drm_vmw_synccpu_dontblock = (1 << 2),
+  drm_vmw_synccpu_read = (1 << 0),
+  drm_vmw_synccpu_write = (1 << 1),
+  drm_vmw_synccpu_dontblock = (1 << 2),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_vmw_synccpu_allow_cs = (1 << 3)
+  drm_vmw_synccpu_allow_cs = (1 << 3)
 };
 enum drm_vmw_synccpu_op {
- drm_vmw_synccpu_grab,
+  drm_vmw_synccpu_grab,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- drm_vmw_synccpu_release
+  drm_vmw_synccpu_release
 };
 struct drm_vmw_synccpu_arg {
- enum drm_vmw_synccpu_op op;
+  enum drm_vmw_synccpu_op op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum drm_vmw_synccpu_flags flags;
- uint32_t handle;
- uint32_t pad64;
+  enum drm_vmw_synccpu_flags flags;
+  uint32_t handle;
+  uint32_t pad64;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/a.out.h b/libc/kernel/uapi/linux/a.out.h
index 562c90b..f69eb73 100644
--- a/libc/kernel/uapi/linux/a.out.h
+++ b/libc/kernel/uapi/linux/a.out.h
@@ -27,46 +27,46 @@
 enum machine_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef M_OLDSUN2
- M__OLDSUN2 = M_OLDSUN2,
+  M__OLDSUN2 = M_OLDSUN2,
 #else
- M_OLDSUN2 = 0,
+  M_OLDSUN2 = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifdef M_68010
- M__68010 = M_68010,
+  M__68010 = M_68010,
 #else
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- M_68010 = 1,
+  M_68010 = 1,
 #endif
 #ifdef M_68020
- M__68020 = M_68020,
+  M__68020 = M_68020,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
- M_68020 = 2,
+  M_68020 = 2,
 #endif
 #ifdef M_SPARC
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- M__SPARC = M_SPARC,
+  M__SPARC = M_SPARC,
 #else
- M_SPARC = 3,
+  M_SPARC = 3,
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- M_386 = 100,
- M_MIPS1 = 151,
- M_MIPS2 = 152
+  M_386 = 100,
+  M_MIPS1 = 151,
+  M_MIPS2 = 152
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef N_MAGIC
 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
 #endif
-#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
+#define N_MACHTYPE(exec) ((enum machine_type) (((exec).a_info >> 16) & 0xff))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
-#define N_SET_INFO(exec, magic, type, flags)   ((exec).a_info = ((magic) & 0xffff)   | (((int)(type) & 0xff) << 16)   | (((flags) & 0xff) << 24))
-#define N_SET_MAGIC(exec, magic)   ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
-#define N_SET_MACHTYPE(exec, machtype)   ((exec).a_info =   ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
+#define N_SET_INFO(exec,magic,type,flags) ((exec).a_info = ((magic) & 0xffff) | (((int) (type) & 0xff) << 16) | (((flags) & 0xff) << 24))
+#define N_SET_MAGIC(exec,magic) ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
+#define N_SET_MACHTYPE(exec,machtype) ((exec).a_info = ((exec).a_info & 0xff00ffff) | ((((int) (machtype)) & 0xff) << 16))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define N_SET_FLAGS(exec, flags)   ((exec).a_info =   ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
+#define N_SET_FLAGS(exec,flags) ((exec).a_info = ((exec).a_info & 0x00ffffff) | (((flags) & 0xff) << 24))
 #define OMAGIC 0407
 #define NMAGIC 0410
 #define ZMAGIC 0413
@@ -74,12 +74,12 @@
 #define QMAGIC 0314
 #define CMAGIC 0421
 #ifndef N_BADMAG
-#define N_BADMAG(x) (N_MAGIC(x) != OMAGIC   && N_MAGIC(x) != NMAGIC   && N_MAGIC(x) != ZMAGIC   && N_MAGIC(x) != QMAGIC)
+#define N_BADMAG(x) (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-#define _N_HDROFF(x) (1024 - sizeof (struct exec))
+#define _N_HDROFF(x) (1024 - sizeof(struct exec))
 #ifndef N_TXTOFF
-#define N_TXTOFF(x)   (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) :   (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec)))
+#define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof(struct exec) : (N_MAGIC(x) == QMAGIC ? 0 : sizeof(struct exec)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef N_DATOFF
@@ -134,10 +134,10 @@
 #endif
 #endif
 #define _N_SEGMENT_ROUND(x) ALIGN(x, SEGMENT_SIZE)
-#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
+#define _N_TXTENDADDR(x) (N_TXTADDR(x) + (x).a_text)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef N_DATADDR
-#define N_DATADDR(x)   (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x))   : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
+#define N_DATADDR(x) (N_MAGIC(x) == OMAGIC ? (_N_TXTENDADDR(x)) : (_N_SEGMENT_ROUND(_N_TXTENDADDR(x))))
 #endif
 #ifndef N_BSSADDR
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -146,17 +146,17 @@
 #ifndef N_NLIST_DECLARED
 struct nlist {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- char *n_name;
- struct nlist *n_next;
- long n_strx;
+  union {
+    char * n_name;
+    struct nlist * n_next;
+    long n_strx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } n_un;
- unsigned char n_type;
- char n_other;
- short n_desc;
+  } n_un;
+  unsigned char n_type;
+  char n_other;
+  short n_desc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long n_value;
+  unsigned long n_value;
 };
 #endif
 #ifndef N_UNDF
@@ -202,25 +202,24 @@
 #define N_SETV 0x1C
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef N_RELOCATION_INFO_DECLARED
-struct relocation_info
-{
- int r_address;
+struct relocation_info {
+  int r_address;
+  unsigned int r_symbolnum : 24;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int r_symbolnum:24;
- unsigned int r_pcrel:1;
- unsigned int r_length:2;
- unsigned int r_extern:1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int r_pcrel : 1;
+  unsigned int r_length : 2;
+  unsigned int r_extern : 1;
 #ifdef NS32K
- unsigned r_bsr:1;
- unsigned r_disp:1;
- unsigned r_pad:2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned r_bsr : 1;
+  unsigned r_disp : 1;
+  unsigned r_pad : 2;
 #else
- unsigned int r_pad:4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int r_pad : 4;
 #endif
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/acct.h b/libc/kernel/uapi/linux/acct.h
index c14886a..4eb3c92 100644
--- a/libc/kernel/uapi/linux/acct.h
+++ b/libc/kernel/uapi/linux/acct.h
@@ -26,80 +26,78 @@
 typedef __u32 comp2_t;
 #define ACCT_COMM 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct acct
-{
- char ac_flag;
- char ac_version;
+struct acct {
+  char ac_flag;
+  char ac_version;
+  __u16 ac_uid16;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 ac_uid16;
- __u16 ac_gid16;
- __u16 ac_tty;
- __u32 ac_btime;
+  __u16 ac_gid16;
+  __u16 ac_tty;
+  __u32 ac_btime;
+  comp_t ac_utime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- comp_t ac_utime;
- comp_t ac_stime;
- comp_t ac_etime;
- comp_t ac_mem;
+  comp_t ac_stime;
+  comp_t ac_etime;
+  comp_t ac_mem;
+  comp_t ac_io;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- comp_t ac_io;
- comp_t ac_rw;
- comp_t ac_minflt;
- comp_t ac_majflt;
+  comp_t ac_rw;
+  comp_t ac_minflt;
+  comp_t ac_majflt;
+  comp_t ac_swaps;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- comp_t ac_swaps;
- __u16 ac_ahz;
- __u32 ac_exitcode;
- char ac_comm[ACCT_COMM + 1];
+  __u16 ac_ahz;
+  __u32 ac_exitcode;
+  char ac_comm[ACCT_COMM + 1];
+  __u8 ac_etime_hi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ac_etime_hi;
- __u16 ac_etime_lo;
- __u32 ac_uid;
- __u32 ac_gid;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 ac_etime_lo;
+  __u32 ac_uid;
+  __u32 ac_gid;
 };
-struct acct_v3
-{
- char ac_flag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char ac_version;
- __u16 ac_tty;
- __u32 ac_exitcode;
- __u32 ac_uid;
+struct acct_v3 {
+  char ac_flag;
+  char ac_version;
+  __u16 ac_tty;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ac_gid;
- __u32 ac_pid;
- __u32 ac_ppid;
- __u32 ac_btime;
+  __u32 ac_exitcode;
+  __u32 ac_uid;
+  __u32 ac_gid;
+  __u32 ac_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- float ac_etime;
- comp_t ac_utime;
- comp_t ac_stime;
- comp_t ac_mem;
+  __u32 ac_ppid;
+  __u32 ac_btime;
+  float ac_etime;
+  comp_t ac_utime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- comp_t ac_io;
- comp_t ac_rw;
- comp_t ac_minflt;
- comp_t ac_majflt;
+  comp_t ac_stime;
+  comp_t ac_mem;
+  comp_t ac_io;
+  comp_t ac_rw;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- comp_t ac_swaps;
- char ac_comm[ACCT_COMM];
+  comp_t ac_minflt;
+  comp_t ac_majflt;
+  comp_t ac_swaps;
+  char ac_comm[ACCT_COMM];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define AFORK 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASU 0x02
 #define ACOMPAT 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACORE 0x08
 #define AXSIG 0x10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 #define ACCT_BYTEORDER 0x80
-#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
-#define ACCT_BYTEORDER 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
+#define ACCT_BYTEORDER 0x00
 #else
 #error unspecified endianness
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define ACCT_VERSION 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AHZ (HZ)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/adb.h b/libc/kernel/uapi/linux/adb.h
index 1614086..b1dfd33 100644
--- a/libc/kernel/uapi/linux/adb.h
+++ b/libc/kernel/uapi/linux/adb.h
@@ -21,8 +21,8 @@
 #define ADB_BUSRESET 0
 #define ADB_FLUSH(id) (0x01 | ((id) << 4))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ADB_WRITEREG(id, reg) (0x08 | (reg) | ((id) << 4))
-#define ADB_READREG(id, reg) (0x0C | (reg) | ((id) << 4))
+#define ADB_WRITEREG(id,reg) (0x08 | (reg) | ((id) << 4))
+#define ADB_READREG(id,reg) (0x0C | (reg) | ((id) << 4))
 #define ADB_DONGLE 1
 #define ADB_KEYBOARD 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/adfs_fs.h b/libc/kernel/uapi/linux/adfs_fs.h
index 8acc8c6..e5ad04e 100644
--- a/libc/kernel/uapi/linux/adfs_fs.h
+++ b/libc/kernel/uapi/linux/adfs_fs.h
@@ -22,37 +22,37 @@
 #include <linux/magic.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct adfs_discrecord {
- __u8 log2secsize;
- __u8 secspertrack;
- __u8 heads;
+  __u8 log2secsize;
+  __u8 secspertrack;
+  __u8 heads;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 density;
- __u8 idlen;
- __u8 log2bpmb;
- __u8 skew;
+  __u8 density;
+  __u8 idlen;
+  __u8 log2bpmb;
+  __u8 skew;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bootoption;
- __u8 lowsector;
- __u8 nzones;
- __le16 zone_spare;
+  __u8 bootoption;
+  __u8 lowsector;
+  __u8 nzones;
+  __le16 zone_spare;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 root;
- __le32 disc_size;
- __le16 disc_id;
- __u8 disc_name[10];
+  __le32 root;
+  __le32 disc_size;
+  __le16 disc_id;
+  __u8 disc_name[10];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 disc_type;
- __le32 disc_size_high;
- __u8 log2sharesize:4;
- __u8 unused40:4;
+  __le32 disc_type;
+  __le32 disc_size_high;
+  __u8 log2sharesize : 4;
+  __u8 unused40 : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 big_flag:1;
- __u8 unused41:1;
- __u8 nzones_high;
- __le32 format_version;
+  __u8 big_flag : 1;
+  __u8 unused41 : 1;
+  __u8 nzones_high;
+  __le32 format_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 root_size;
- __u8 unused52[60 - 52];
+  __le32 root_size;
+  __u8 unused52[60 - 52];
 };
 #define ADFS_DISCRECORD (0xc00)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/affs_hardblocks.h b/libc/kernel/uapi/linux/affs_hardblocks.h
index 0f56b81..0a61887 100644
--- a/libc/kernel/uapi/linux/affs_hardblocks.h
+++ b/libc/kernel/uapi/linux/affs_hardblocks.h
@@ -21,69 +21,69 @@
 #include <linux/types.h>
 struct RigidDiskBlock {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rdb_ID;
- __be32 rdb_SummedLongs;
- __s32 rdb_ChkSum;
- __u32 rdb_HostID;
+  __u32 rdb_ID;
+  __be32 rdb_SummedLongs;
+  __s32 rdb_ChkSum;
+  __u32 rdb_HostID;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 rdb_BlockBytes;
- __u32 rdb_Flags;
- __u32 rdb_BadBlockList;
- __be32 rdb_PartitionList;
+  __be32 rdb_BlockBytes;
+  __u32 rdb_Flags;
+  __u32 rdb_BadBlockList;
+  __be32 rdb_PartitionList;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rdb_FileSysHeaderList;
- __u32 rdb_DriveInit;
- __u32 rdb_Reserved1[6];
- __u32 rdb_Cylinders;
+  __u32 rdb_FileSysHeaderList;
+  __u32 rdb_DriveInit;
+  __u32 rdb_Reserved1[6];
+  __u32 rdb_Cylinders;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rdb_Sectors;
- __u32 rdb_Heads;
- __u32 rdb_Interleave;
- __u32 rdb_Park;
+  __u32 rdb_Sectors;
+  __u32 rdb_Heads;
+  __u32 rdb_Interleave;
+  __u32 rdb_Park;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rdb_Reserved2[3];
- __u32 rdb_WritePreComp;
- __u32 rdb_ReducedWrite;
- __u32 rdb_StepRate;
+  __u32 rdb_Reserved2[3];
+  __u32 rdb_WritePreComp;
+  __u32 rdb_ReducedWrite;
+  __u32 rdb_StepRate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rdb_Reserved3[5];
- __u32 rdb_RDBBlocksLo;
- __u32 rdb_RDBBlocksHi;
- __u32 rdb_LoCylinder;
+  __u32 rdb_Reserved3[5];
+  __u32 rdb_RDBBlocksLo;
+  __u32 rdb_RDBBlocksHi;
+  __u32 rdb_LoCylinder;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rdb_HiCylinder;
- __u32 rdb_CylBlocks;
- __u32 rdb_AutoParkSeconds;
- __u32 rdb_HighRDSKBlock;
+  __u32 rdb_HiCylinder;
+  __u32 rdb_CylBlocks;
+  __u32 rdb_AutoParkSeconds;
+  __u32 rdb_HighRDSKBlock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rdb_Reserved4;
- char rdb_DiskVendor[8];
- char rdb_DiskProduct[16];
- char rdb_DiskRevision[4];
+  __u32 rdb_Reserved4;
+  char rdb_DiskVendor[8];
+  char rdb_DiskProduct[16];
+  char rdb_DiskRevision[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char rdb_ControllerVendor[8];
- char rdb_ControllerProduct[16];
- char rdb_ControllerRevision[4];
- __u32 rdb_Reserved5[10];
+  char rdb_ControllerVendor[8];
+  char rdb_ControllerProduct[16];
+  char rdb_ControllerRevision[4];
+  __u32 rdb_Reserved5[10];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IDNAME_RIGIDDISK 0x5244534B
 struct PartitionBlock {
- __be32 pb_ID;
+  __be32 pb_ID;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 pb_SummedLongs;
- __s32 pb_ChkSum;
- __u32 pb_HostID;
- __be32 pb_Next;
+  __be32 pb_SummedLongs;
+  __s32 pb_ChkSum;
+  __u32 pb_HostID;
+  __be32 pb_Next;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pb_Flags;
- __u32 pb_Reserved1[2];
- __u32 pb_DevFlags;
- __u8 pb_DriveName[32];
+  __u32 pb_Flags;
+  __u32 pb_Reserved1[2];
+  __u32 pb_DevFlags;
+  __u8 pb_DriveName[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pb_Reserved2[15];
- __be32 pb_Environment[17];
- __u32 pb_EReserved[15];
+  __u32 pb_Reserved2[15];
+  __be32 pb_Environment[17];
+  __u32 pb_EReserved[15];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDNAME_PARTITION 0x50415254
diff --git a/libc/kernel/uapi/linux/agpgart.h b/libc/kernel/uapi/linux/agpgart.h
index f735b95..0b103cc 100644
--- a/libc/kernel/uapi/linux/agpgart.h
+++ b/libc/kernel/uapi/linux/agpgart.h
@@ -19,20 +19,20 @@
 #ifndef _UAPI_AGP_H
 #define _UAPI_AGP_H
 #define AGPIOC_BASE 'A'
-#define AGPIOC_INFO _IOR (AGPIOC_BASE, 0, struct agp_info*)
+#define AGPIOC_INFO _IOR(AGPIOC_BASE, 0, struct agp_info *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AGPIOC_ACQUIRE _IO (AGPIOC_BASE, 1)
-#define AGPIOC_RELEASE _IO (AGPIOC_BASE, 2)
-#define AGPIOC_SETUP _IOW (AGPIOC_BASE, 3, struct agp_setup*)
-#define AGPIOC_RESERVE _IOW (AGPIOC_BASE, 4, struct agp_region*)
+#define AGPIOC_ACQUIRE _IO(AGPIOC_BASE, 1)
+#define AGPIOC_RELEASE _IO(AGPIOC_BASE, 2)
+#define AGPIOC_SETUP _IOW(AGPIOC_BASE, 3, struct agp_setup *)
+#define AGPIOC_RESERVE _IOW(AGPIOC_BASE, 4, struct agp_region *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AGPIOC_PROTECT _IOW (AGPIOC_BASE, 5, struct agp_region*)
-#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 6, struct agp_allocate*)
-#define AGPIOC_DEALLOCATE _IOW (AGPIOC_BASE, 7, int)
-#define AGPIOC_BIND _IOW (AGPIOC_BASE, 8, struct agp_bind*)
+#define AGPIOC_PROTECT _IOW(AGPIOC_BASE, 5, struct agp_region *)
+#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 6, struct agp_allocate *)
+#define AGPIOC_DEALLOCATE _IOW(AGPIOC_BASE, 7, int)
+#define AGPIOC_BIND _IOW(AGPIOC_BASE, 8, struct agp_bind *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AGPIOC_UNBIND _IOW (AGPIOC_BASE, 9, struct agp_unbind*)
-#define AGPIOC_CHIPSET_FLUSH _IO (AGPIOC_BASE, 10)
+#define AGPIOC_UNBIND _IOW(AGPIOC_BASE, 9, struct agp_unbind *)
+#define AGPIOC_CHIPSET_FLUSH _IO(AGPIOC_BASE, 10)
 #define AGP_DEVICE "/dev/agpgart"
 #ifndef TRUE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -44,55 +44,55 @@
 #endif
 #include <linux/types.h>
 struct agp_version {
- __u16 major;
+  __u16 major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 minor;
+  __u16 minor;
 };
 typedef struct _agp_info {
- struct agp_version version;
+  struct agp_version version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bridge_id;
- __u32 agp_mode;
- unsigned long aper_base;
- size_t aper_size;
+  __u32 bridge_id;
+  __u32 agp_mode;
+  unsigned long aper_base;
+  size_t aper_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t pg_total;
- size_t pg_system;
- size_t pg_used;
+  size_t pg_total;
+  size_t pg_system;
+  size_t pg_used;
 } agp_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _agp_setup {
- __u32 agp_mode;
+  __u32 agp_mode;
 } agp_setup;
 typedef struct _agp_segment {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_off_t pg_start;
- __kernel_size_t pg_count;
- int prot;
+  __kernel_off_t pg_start;
+  __kernel_size_t pg_count;
+  int prot;
 } agp_segment;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _agp_region {
- __kernel_pid_t pid;
- __kernel_size_t seg_count;
- struct _agp_segment *seg_list;
+  __kernel_pid_t pid;
+  __kernel_size_t seg_count;
+  struct _agp_segment * seg_list;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } agp_region;
 typedef struct _agp_allocate {
- int key;
- __kernel_size_t pg_count;
+  int key;
+  __kernel_size_t pg_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 physical;
+  __u32 type;
+  __u32 physical;
 } agp_allocate;
 typedef struct _agp_bind {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int key;
- __kernel_off_t pg_start;
+  int key;
+  __kernel_off_t pg_start;
 } agp_bind;
 typedef struct _agp_unbind {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int key;
- __u32 priority;
+  int key;
+  __u32 priority;
 } agp_unbind;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/aio_abi.h b/libc/kernel/uapi/linux/aio_abi.h
index ae02bf7..687c435 100644
--- a/libc/kernel/uapi/linux/aio_abi.h
+++ b/libc/kernel/uapi/linux/aio_abi.h
@@ -23,48 +23,48 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __kernel_ulong_t aio_context_t;
 enum {
- IOCB_CMD_PREAD = 0,
- IOCB_CMD_PWRITE = 1,
+  IOCB_CMD_PREAD = 0,
+  IOCB_CMD_PWRITE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IOCB_CMD_FSYNC = 2,
- IOCB_CMD_FDSYNC = 3,
- IOCB_CMD_NOOP = 6,
- IOCB_CMD_PREADV = 7,
+  IOCB_CMD_FSYNC = 2,
+  IOCB_CMD_FDSYNC = 3,
+  IOCB_CMD_NOOP = 6,
+  IOCB_CMD_PREADV = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IOCB_CMD_PWRITEV = 8,
+  IOCB_CMD_PWRITEV = 8,
 };
 #define IOCB_FLAG_RESFD (1 << 0)
 struct io_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data;
- __u64 obj;
- __s64 res;
- __s64 res2;
+  __u64 data;
+  __u64 obj;
+  __s64 res;
+  __s64 res2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
 #define PADDED(x,y) x, y
-#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
+#elif defined(__BYTE_ORDER)?__BYTE_ORDER==__BIG_ENDIAN:defined(__BIG_ENDIAN)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PADDED(x,y) y, x
 #else
-#error edit for your odd byteorder.
+#error edit for your odd byteorder .
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct iocb {
- __u64 aio_data;
- __u32 PADDED(aio_key, aio_reserved1);
- __u16 aio_lio_opcode;
+  __u64 aio_data;
+  __u32 PADDED(aio_key, aio_reserved1);
+  __u16 aio_lio_opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s16 aio_reqprio;
- __u32 aio_fildes;
- __u64 aio_buf;
- __u64 aio_nbytes;
+  __s16 aio_reqprio;
+  __u32 aio_fildes;
+  __u64 aio_buf;
+  __u64 aio_nbytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s64 aio_offset;
- __u64 aio_reserved2;
- __u32 aio_flags;
- __u32 aio_resfd;
+  __s64 aio_offset;
+  __u64 aio_reserved2;
+  __u32 aio_flags;
+  __u32 aio_resfd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #undef IFBIG
diff --git a/libc/kernel/uapi/linux/android_alarm.h b/libc/kernel/uapi/linux/android_alarm.h
index d0111b2..801a01e 100644
--- a/libc/kernel/uapi/linux/android_alarm.h
+++ b/libc/kernel/uapi/linux/android_alarm.h
@@ -22,37 +22,34 @@
 #include <linux/time.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum android_alarm_type {
- ANDROID_ALARM_RTC_WAKEUP,
- ANDROID_ALARM_RTC,
- ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
+  ANDROID_ALARM_RTC_WAKEUP,
+  ANDROID_ALARM_RTC,
+  ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ANDROID_ALARM_ELAPSED_REALTIME,
- ANDROID_ALARM_SYSTEMTIME,
- ANDROID_ALARM_TYPE_COUNT,
+  ANDROID_ALARM_ELAPSED_REALTIME,
+  ANDROID_ALARM_SYSTEMTIME,
+  ANDROID_ALARM_TYPE_COUNT,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum android_alarm_return_flags {
- ANDROID_ALARM_RTC_WAKEUP_MASK = 1U << ANDROID_ALARM_RTC_WAKEUP,
- ANDROID_ALARM_RTC_MASK = 1U << ANDROID_ALARM_RTC,
- ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP_MASK =
+  ANDROID_ALARM_RTC_WAKEUP_MASK = 1U << ANDROID_ALARM_RTC_WAKEUP,
+  ANDROID_ALARM_RTC_MASK = 1U << ANDROID_ALARM_RTC,
+  ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP_MASK = 1U << ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- 1U << ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
- ANDROID_ALARM_ELAPSED_REALTIME_MASK =
- 1U << ANDROID_ALARM_ELAPSED_REALTIME,
- ANDROID_ALARM_SYSTEMTIME_MASK = 1U << ANDROID_ALARM_SYSTEMTIME,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ANDROID_ALARM_TIME_CHANGE_MASK = 1U << 16
+  ANDROID_ALARM_ELAPSED_REALTIME_MASK = 1U << ANDROID_ALARM_ELAPSED_REALTIME,
+  ANDROID_ALARM_SYSTEMTIME_MASK = 1U << ANDROID_ALARM_SYSTEMTIME,
+  ANDROID_ALARM_TIME_CHANGE_MASK = 1U << 16
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_ALARM_CLEAR(type) _IO('a', 0 | ((type) << 4))
 #define ANDROID_ALARM_WAIT _IO('a', 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ALARM_IOW(c, type, size) _IOW('a', (c) | ((type) << 4), size)
+#define ALARM_IOW(c,type,size) _IOW('a', (c) | ((type) << 4), size)
 #define ANDROID_ALARM_SET(type) ALARM_IOW(2, type, struct timespec)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_ALARM_SET_AND_WAIT(type) ALARM_IOW(3, type, struct timespec)
 #define ANDROID_ALARM_GET_TIME(type) ALARM_IOW(4, type, struct timespec)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec)
 #define ANDROID_ALARM_BASE_CMD(cmd) (cmd & ~(_IOC(0, 0, 0xf0, 0)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_ALARM_IOCTL_TO_TYPE(cmd) (_IOC_NR(cmd) >> 4)
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/apm_bios.h b/libc/kernel/uapi/linux/apm_bios.h
index f3b6130..e6b17ad 100644
--- a/libc/kernel/uapi/linux/apm_bios.h
+++ b/libc/kernel/uapi/linux/apm_bios.h
@@ -23,17 +23,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short apm_eventinfo_t;
 struct apm_bios_info {
- __u16 version;
- __u16 cseg;
+  __u16 version;
+  __u16 cseg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 offset;
- __u16 cseg_16;
- __u16 dseg;
- __u16 flags;
+  __u32 offset;
+  __u16 cseg_16;
+  __u16 dseg;
+  __u16 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 cseg_len;
- __u16 cseg_16_len;
- __u16 dseg_len;
+  __u16 cseg_len;
+  __u16 cseg_16_len;
+  __u16 dseg_len;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_STATE_READY 0x0000
diff --git a/libc/kernel/uapi/linux/ashmem.h b/libc/kernel/uapi/linux/ashmem.h
index a1f8760..4711ef3 100644
--- a/libc/kernel/uapi/linux/ashmem.h
+++ b/libc/kernel/uapi/linux/ashmem.h
@@ -28,8 +28,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASHMEM_IS_PINNED 1
 struct ashmem_pin {
- __u32 offset;
- __u32 len;
+  __u32 offset;
+  __u32 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define __ASHMEMIOC 0x77
diff --git a/libc/kernel/uapi/linux/atalk.h b/libc/kernel/uapi/linux/atalk.h
index b357b91..7154422 100644
--- a/libc/kernel/uapi/linux/atalk.h
+++ b/libc/kernel/uapi/linux/atalk.h
@@ -26,31 +26,31 @@
 #define ATPORT_RESERVED 128
 #define ATPORT_LAST 254
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATADDR_ANYNET (__u16)0
-#define ATADDR_ANYNODE (__u8)0
-#define ATADDR_ANYPORT (__u8)0
-#define ATADDR_BCAST (__u8)255
+#define ATADDR_ANYNET (__u16) 0
+#define ATADDR_ANYNODE (__u8) 0
+#define ATADDR_ANYPORT (__u8) 0
+#define ATADDR_BCAST (__u8) 255
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DDP_MAXSZ 587
 #define DDP_MAXHOPS 15
 #define SIOCATALKDIFADDR (SIOCPROTOPRIVATE + 0)
 struct atalk_addr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 s_net;
- __u8 s_node;
+  __be16 s_net;
+  __u8 s_node;
 };
 struct sockaddr_at {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_sa_family_t sat_family;
- __u8 sat_port;
- struct atalk_addr sat_addr;
- char sat_zero[8];
+  __kernel_sa_family_t sat_family;
+  __u8 sat_port;
+  struct atalk_addr sat_addr;
+  char sat_zero[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct atalk_netrange {
- __u8 nr_phase;
- __be16 nr_firstnet;
+  __u8 nr_phase;
+  __be16 nr_firstnet;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 nr_lastnet;
+  __be16 nr_lastnet;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/atm.h b/libc/kernel/uapi/linux/atm.h
index d89b0af..02bf989 100644
--- a/libc/kernel/uapi/linux/atm.h
+++ b/libc/kernel/uapi/linux/atm.h
@@ -46,17 +46,17 @@
 #define ATM_AAL34 3
 #define ATM_AAL5 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __SO_ENCODE(l,n,t) ((((l) & 0x1FF) << 22) | ((n) << 16) |   sizeof(t))
+#define __SO_ENCODE(l,n,t) ((((l) & 0x1FF) << 22) | ((n) << 16) | sizeof(t))
 #define __SO_LEVEL_MATCH(c,m) (((c) >> 22) == ((m) & 0x1FF))
 #define __SO_NUMBER(c) (((c) >> 16) & 0x3f)
 #define __SO_SIZE(c) ((c) & 0x3fff)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SO_SETCLP __SO_ENCODE(SOL_ATM,0,int)
-#define SO_CIRANGE __SO_ENCODE(SOL_ATM,1,struct atm_cirange)
-#define SO_ATMQOS __SO_ENCODE(SOL_ATM,2,struct atm_qos)
-#define SO_ATMSAP __SO_ENCODE(SOL_ATM,3,struct atm_sap)
+#define SO_SETCLP __SO_ENCODE(SOL_ATM, 0, int)
+#define SO_CIRANGE __SO_ENCODE(SOL_ATM, 1, struct atm_cirange)
+#define SO_ATMQOS __SO_ENCODE(SOL_ATM, 2, struct atm_qos)
+#define SO_ATMSAP __SO_ENCODE(SOL_ATM, 3, struct atm_sap)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SO_ATMPVC __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
+#define SO_ATMPVC __SO_ENCODE(SOL_ATM, 4, struct sockaddr_atmpvc)
 #define SO_MULTIPOINT __SO_ENCODE(SOL_ATM, 5, int)
 #define ATM_HDR_GFC_MASK 0xf0000000
 #define ATM_HDR_GFC_SHIFT 28
@@ -87,56 +87,56 @@
 #define ATM_ABR 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_ANYCLASS 5
-#define ATM_MAX_PCR -1
+#define ATM_MAX_PCR - 1
 struct atm_trafprm {
- unsigned char traffic_class;
+  unsigned char traffic_class;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int max_pcr;
- int pcr;
- int min_pcr;
- int max_cdv;
+  int max_pcr;
+  int pcr;
+  int min_pcr;
+  int max_cdv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int max_sdu;
- unsigned int icr;
- unsigned int tbe;
- unsigned int frtt : 24;
+  int max_sdu;
+  unsigned int icr;
+  unsigned int tbe;
+  unsigned int frtt : 24;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int rif : 4;
- unsigned int rdf : 4;
- unsigned int nrm_pres :1;
- unsigned int trm_pres :1;
+  unsigned int rif : 4;
+  unsigned int rdf : 4;
+  unsigned int nrm_pres : 1;
+  unsigned int trm_pres : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int adtf_pres :1;
- unsigned int cdf_pres :1;
- unsigned int nrm :3;
- unsigned int trm :3;
+  unsigned int adtf_pres : 1;
+  unsigned int cdf_pres : 1;
+  unsigned int nrm : 3;
+  unsigned int trm : 3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int adtf :10;
- unsigned int cdf :3;
- unsigned int spare :9;
+  unsigned int adtf : 10;
+  unsigned int cdf : 3;
+  unsigned int spare : 9;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atm_qos {
- struct atm_trafprm txtp;
- struct atm_trafprm rxtp __ATM_API_ALIGN;
- unsigned char aal __ATM_API_ALIGN;
+  struct atm_trafprm txtp;
+  struct atm_trafprm rxtp __ATM_API_ALIGN;
+  unsigned char aal __ATM_API_ALIGN;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define ATM_ITF_ANY -1
-#define ATM_VPI_ANY -1
-#define ATM_VCI_ANY -1
+#define ATM_ITF_ANY - 1
+#define ATM_VPI_ANY - 1
+#define ATM_VCI_ANY - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_VPI_UNSPEC -2
-#define ATM_VCI_UNSPEC -2
+#define ATM_VPI_UNSPEC - 2
+#define ATM_VCI_UNSPEC - 2
 struct sockaddr_atmpvc {
- unsigned short sap_family;
+  unsigned short sap_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- short itf;
- short vpi;
- int vci;
+  struct {
+    short itf;
+    short vpi;
+    int vci;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } sap_addr __ATM_API_ALIGN;
+  } sap_addr __ATM_API_ALIGN;
 };
 #define ATM_ESA_LEN 20
 #define ATM_E164_LEN 12
@@ -157,21 +157,21 @@
 #define ATM_LIJ_NJ 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_atmsvc {
- unsigned short sas_family;
- struct {
- unsigned char prv[ATM_ESA_LEN];
+  unsigned short sas_family;
+  struct {
+    unsigned char prv[ATM_ESA_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char pub[ATM_E164_LEN+1];
- char lij_type;
- __u32 lij_id;
- } sas_addr __ATM_API_ALIGN;
+    char pub[ATM_E164_LEN + 1];
+    char lij_type;
+    __u32 lij_id;
+  } sas_addr __ATM_API_ALIGN;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct atmif_sioc {
- int number;
- int length;
+  int number;
+  int length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *arg;
+  void __user * arg;
 };
 typedef unsigned short atm_backend_t;
 #endif
diff --git a/libc/kernel/uapi/linux/atm_eni.h b/libc/kernel/uapi/linux/atm_eni.h
index 950a8a0..a658d64 100644
--- a/libc/kernel/uapi/linux/atm_eni.h
+++ b/libc/kernel/uapi/linux/atm_eni.h
@@ -21,9 +21,9 @@
 #include <linux/atmioc.h>
 struct eni_multipliers {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tx,rx;
+  int tx, rx;
 };
-#define ENI_MEMDUMP _IOW('a',ATMIOC_SARPRV,struct atmif_sioc)
-#define ENI_SETMULT _IOW('a',ATMIOC_SARPRV+7,struct atmif_sioc)
+#define ENI_MEMDUMP _IOW('a', ATMIOC_SARPRV, struct atmif_sioc)
+#define ENI_SETMULT _IOW('a', ATMIOC_SARPRV + 7, struct atmif_sioc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/atm_he.h b/libc/kernel/uapi/linux/atm_he.h
index c62f456..809ac61 100644
--- a/libc/kernel/uapi/linux/atm_he.h
+++ b/libc/kernel/uapi/linux/atm_he.h
@@ -27,8 +27,8 @@
 #define HE_REGTYPE_MBOX 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct he_ioctl_reg {
- unsigned addr, val;
- char type;
+  unsigned addr, val;
+  char type;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/atm_idt77105.h b/libc/kernel/uapi/linux/atm_idt77105.h
index c56164e..dc2c9c1 100644
--- a/libc/kernel/uapi/linux/atm_idt77105.h
+++ b/libc/kernel/uapi/linux/atm_idt77105.h
@@ -23,13 +23,13 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/atmdev.h>
 struct idt77105_stats {
- __u32 symbol_errors;
- __u32 tx_cells;
+  __u32 symbol_errors;
+  __u32 tx_cells;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_cells;
- __u32 rx_hec_errors;
+  __u32 rx_cells;
+  __u32 rx_hec_errors;
 };
-#define IDT77105_GETSTAT _IOW('a',ATMIOC_PHYPRV+2,struct atmif_sioc)
+#define IDT77105_GETSTAT _IOW('a', ATMIOC_PHYPRV + 2, struct atmif_sioc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IDT77105_GETSTATZ _IOW('a',ATMIOC_PHYPRV+3,struct atmif_sioc)
+#define IDT77105_GETSTATZ _IOW('a', ATMIOC_PHYPRV + 3, struct atmif_sioc)
 #endif
diff --git a/libc/kernel/uapi/linux/atm_nicstar.h b/libc/kernel/uapi/linux/atm_nicstar.h
index c059751..affedda 100644
--- a/libc/kernel/uapi/linux/atm_nicstar.h
+++ b/libc/kernel/uapi/linux/atm_nicstar.h
@@ -21,28 +21,25 @@
 #include <linux/atmapi.h>
 #include <linux/atmioc.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NS_GETPSTAT _IOWR('a',ATMIOC_SARPRV+1,struct atmif_sioc)
-#define NS_SETBUFLEV _IOW('a',ATMIOC_SARPRV+2,struct atmif_sioc)
-#define NS_ADJBUFLEV _IO('a',ATMIOC_SARPRV+3)
-typedef struct buf_nr
+#define NS_GETPSTAT _IOWR('a', ATMIOC_SARPRV + 1, struct atmif_sioc)
+#define NS_SETBUFLEV _IOW('a', ATMIOC_SARPRV + 2, struct atmif_sioc)
+#define NS_ADJBUFLEV _IO('a', ATMIOC_SARPRV + 3)
+typedef struct buf_nr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- unsigned min;
- unsigned init;
- unsigned max;
+  unsigned min;
+  unsigned init;
+  unsigned max;
+} buf_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-}buf_nr;
-typedef struct pool_levels
-{
- int buftype;
+typedef struct pool_levels {
+  int buftype;
+  int count;
+  buf_nr level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int count;
- buf_nr level;
 } pool_levels;
 #define NS_BUFTYPE_SMALL 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NS_BUFTYPE_LARGE 2
 #define NS_BUFTYPE_HUGE 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NS_BUFTYPE_IOVEC 4
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/atm_tcp.h b/libc/kernel/uapi/linux/atm_tcp.h
index c6500c9..6665675 100644
--- a/libc/kernel/uapi/linux/atm_tcp.h
+++ b/libc/kernel/uapi/linux/atm_tcp.h
@@ -24,27 +24,27 @@
 #include <linux/atmioc.h>
 #include <linux/types.h>
 struct atmtcp_hdr {
- __u16 vpi;
+  __u16 vpi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 vci;
- __u32 length;
+  __u16 vci;
+  __u32 length;
 };
 #define ATMTCP_HDR_MAGIC (~0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATMTCP_CTRL_OPEN 1
 #define ATMTCP_CTRL_CLOSE 2
 struct atmtcp_control {
- struct atmtcp_hdr hdr;
+  struct atmtcp_hdr hdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int type;
- atm_kptr_t vcc;
- struct sockaddr_atmpvc addr;
- struct atm_qos qos;
+  int type;
+  atm_kptr_t vcc;
+  struct sockaddr_atmpvc addr;
+  struct atm_qos qos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int result;
+  int result;
 } __ATM_API_ALIGN;
-#define SIOCSIFATMTCP _IO('a',ATMIOC_ITF)
-#define ATMTCP_CREATE _IO('a',ATMIOC_ITF+14)
+#define SIOCSIFATMTCP _IO('a', ATMIOC_ITF)
+#define ATMTCP_CREATE _IO('a', ATMIOC_ITF + 14)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATMTCP_REMOVE _IO('a',ATMIOC_ITF+15)
+#define ATMTCP_REMOVE _IO('a', ATMIOC_ITF + 15)
 #endif
diff --git a/libc/kernel/uapi/linux/atm_zatm.h b/libc/kernel/uapi/linux/atm_zatm.h
index 0c80ad9..34755bb 100644
--- a/libc/kernel/uapi/linux/atm_zatm.h
+++ b/libc/kernel/uapi/linux/atm_zatm.h
@@ -21,33 +21,33 @@
 #include <linux/atmapi.h>
 #include <linux/atmioc.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ZATM_GETPOOL _IOW('a',ATMIOC_SARPRV+1,struct atmif_sioc)
-#define ZATM_GETPOOLZ _IOW('a',ATMIOC_SARPRV+2,struct atmif_sioc)
-#define ZATM_SETPOOL _IOW('a',ATMIOC_SARPRV+3,struct atmif_sioc)
+#define ZATM_GETPOOL _IOW('a', ATMIOC_SARPRV + 1, struct atmif_sioc)
+#define ZATM_GETPOOLZ _IOW('a', ATMIOC_SARPRV + 2, struct atmif_sioc)
+#define ZATM_SETPOOL _IOW('a', ATMIOC_SARPRV + 3, struct atmif_sioc)
 struct zatm_pool_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ref_count;
- int low_water,high_water;
- int rqa_count,rqu_count;
- int offset,next_off;
+  int ref_count;
+  int low_water, high_water;
+  int rqa_count, rqu_count;
+  int offset, next_off;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int next_cnt,next_thres;
+  int next_cnt, next_thres;
 };
 struct zatm_pool_req {
- int pool_num;
+  int pool_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct zatm_pool_info info;
+  struct zatm_pool_info info;
 };
 struct zatm_t_hist {
- struct timeval real;
+  struct timeval real;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timeval expected;
+  struct timeval expected;
 };
 #define ZATM_OAM_POOL 0
 #define ZATM_AAL0_POOL 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZATM_AAL5_POOL_BASE 2
-#define ZATM_LAST_POOL ZATM_AAL5_POOL_BASE+10
+#define ZATM_LAST_POOL ZATM_AAL5_POOL_BASE + 10
 #define ZATM_TIMER_HISTORY_SIZE 16
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/atmapi.h b/libc/kernel/uapi/linux/atmapi.h
index 16e8fdf..94ff0a0 100644
--- a/libc/kernel/uapi/linux/atmapi.h
+++ b/libc/kernel/uapi/linux/atmapi.h
@@ -24,6 +24,8 @@
 #else
 #define __ATM_API_ALIGN
 #endif
-typedef struct { unsigned char _[8]; } __ATM_API_ALIGN atm_kptr_t;
+typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char _[8];
+} __ATM_API_ALIGN atm_kptr_t;
 #endif
diff --git a/libc/kernel/uapi/linux/atmarp.h b/libc/kernel/uapi/linux/atmarp.h
index eed982c..5574c47 100644
--- a/libc/kernel/uapi/linux/atmarp.h
+++ b/libc/kernel/uapi/linux/atmarp.h
@@ -24,25 +24,25 @@
 #include <linux/atmioc.h>
 #define ATMARP_RETRY_DELAY 30
 #define ATMARP_MAX_UNRES_PACKETS 5
-#define ATMARPD_CTRL _IO('a',ATMIOC_CLIP+1)
+#define ATMARPD_CTRL _IO('a', ATMIOC_CLIP + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATMARP_MKIP _IO('a',ATMIOC_CLIP+2)
-#define ATMARP_SETENTRY _IO('a',ATMIOC_CLIP+3)
-#define ATMARP_ENCAP _IO('a',ATMIOC_CLIP+5)
+#define ATMARP_MKIP _IO('a', ATMIOC_CLIP + 2)
+#define ATMARP_SETENTRY _IO('a', ATMIOC_CLIP + 3)
+#define ATMARP_ENCAP _IO('a', ATMIOC_CLIP + 5)
 enum atmarp_ctrl_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- act_invalid,
- act_need,
- act_up,
- act_down,
+  act_invalid,
+  act_need,
+  act_up,
+  act_down,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- act_change
+  act_change
 };
 struct atmarp_ctrl {
- enum atmarp_ctrl_type type;
+  enum atmarp_ctrl_type type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int itf_num;
- __be32 ip;
+  int itf_num;
+  __be32 ip;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/atmbr2684.h b/libc/kernel/uapi/linux/atmbr2684.h
index 1b1b9c5..92427f5 100644
--- a/libc/kernel/uapi/linux/atmbr2684.h
+++ b/libc/kernel/uapi/linux/atmbr2684.h
@@ -28,7 +28,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BR2684_MEDIA_FDDI (3)
 #define BR2684_MEDIA_802_6 (4)
-#define BR2684_FLAG_ROUTED (1<<16)
+#define BR2684_FLAG_ROUTED (1 << 16)
 #define BR2684_FCSIN_NO (0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BR2684_FCSIN_IGNORE (1)
@@ -44,11 +44,11 @@
 #define BR2684_PAYLOAD_ROUTED (0)
 #define BR2684_PAYLOAD_BRIDGED (1)
 struct atm_newif_br2684 {
- atm_backend_t backend_num;
+  atm_backend_t backend_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int media;
- char ifname[IFNAMSIZ];
- int mtu;
+  int media;
+  char ifname[IFNAMSIZ];
+  int mtu;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BR2684_FIND_BYNOTHING (0)
@@ -56,43 +56,43 @@
 #define BR2684_FIND_BYIFNAME (2)
 struct br2684_if_spec {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int method;
- union {
- char ifname[IFNAMSIZ];
- int devnum;
+  int method;
+  union {
+    char ifname[IFNAMSIZ];
+    int devnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } spec;
+  } spec;
 };
 struct atm_backend_br2684 {
- atm_backend_t backend_num;
+  atm_backend_t backend_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct br2684_if_spec ifspec;
- int fcs_in;
- int fcs_out;
- int fcs_auto;
+  struct br2684_if_spec ifspec;
+  int fcs_in;
+  int fcs_out;
+  int fcs_auto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int encaps;
- int has_vpiid;
- __u8 vpn_id[7];
- int send_padding;
+  int encaps;
+  int has_vpiid;
+  __u8 vpn_id[7];
+  int send_padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int min_size;
+  int min_size;
 };
 struct br2684_filter {
- __be32 prefix;
+  __be32 prefix;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 netmask;
+  __be32 netmask;
 };
 struct br2684_filter_set {
- struct br2684_if_spec ifspec;
+  struct br2684_if_spec ifspec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct br2684_filter filter;
+  struct br2684_filter filter;
 };
 enum br2684_payload {
- p_routed = BR2684_PAYLOAD_ROUTED,
+  p_routed = BR2684_PAYLOAD_ROUTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- p_bridged = BR2684_PAYLOAD_BRIDGED,
+  p_bridged = BR2684_PAYLOAD_BRIDGED,
 };
-#define BR2684_SETFILT _IOW( 'a', ATMIOC_BACKEND + 0,   struct br2684_filter_set)
+#define BR2684_SETFILT _IOW('a', ATMIOC_BACKEND + 0, struct br2684_filter_set)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/atmclip.h b/libc/kernel/uapi/linux/atmclip.h
index 346e402..a266b83 100644
--- a/libc/kernel/uapi/linux/atmclip.h
+++ b/libc/kernel/uapi/linux/atmclip.h
@@ -26,5 +26,5 @@
 #define CLIP_DEFAULT_IDLETIMER 1200
 #define CLIP_CHECK_INTERVAL 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCMKCLIP _IO('a',ATMIOC_CLIP)
+#define SIOCMKCLIP _IO('a', ATMIOC_CLIP)
 #endif
diff --git a/libc/kernel/uapi/linux/atmdev.h b/libc/kernel/uapi/linux/atmdev.h
index 89e8bce..fed75d3 100644
--- a/libc/kernel/uapi/linux/atmdev.h
+++ b/libc/kernel/uapi/linux/atmdev.h
@@ -23,56 +23,56 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/atmioc.h>
 #define ESI_LEN 6
-#define ATM_OC3_PCR (155520000/270*260/8/53)
-#define ATM_25_PCR ((25600000/8-8000)/54)
+#define ATM_OC3_PCR (155520000 / 270 * 260 / 8 / 53)
+#define ATM_25_PCR ((25600000 / 8 - 8000) / 54)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_OC12_PCR (622080000/1080*1040/8/53)
-#define ATM_DS3_PCR (8000*12)
-#define __AAL_STAT_ITEMS   __HANDLE_ITEM(tx);     __HANDLE_ITEM(tx_err);     __HANDLE_ITEM(rx);     __HANDLE_ITEM(rx_err);     __HANDLE_ITEM(rx_drop);
+#define ATM_OC12_PCR (622080000 / 1080 * 1040 / 8 / 53)
+#define ATM_DS3_PCR (8000 * 12)
+#define __AAL_STAT_ITEMS __HANDLE_ITEM(tx); __HANDLE_ITEM(tx_err); __HANDLE_ITEM(rx); __HANDLE_ITEM(rx_err); __HANDLE_ITEM(rx_drop);
 struct atm_aal_stats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __HANDLE_ITEM(i) int i
- __AAL_STAT_ITEMS
+  __AAL_STAT_ITEMS
 #undef __HANDLE_ITEM
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atm_dev_stats {
- struct atm_aal_stats aal0;
- struct atm_aal_stats aal34;
- struct atm_aal_stats aal5;
+  struct atm_aal_stats aal0;
+  struct atm_aal_stats aal34;
+  struct atm_aal_stats aal5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __ATM_API_ALIGN;
-#define ATM_GETLINKRATE _IOW('a',ATMIOC_ITF+1,struct atmif_sioc)
-#define ATM_GETNAMES _IOW('a',ATMIOC_ITF+3,struct atm_iobuf)
-#define ATM_GETTYPE _IOW('a',ATMIOC_ITF+4,struct atmif_sioc)
+#define ATM_GETLINKRATE _IOW('a', ATMIOC_ITF + 1, struct atmif_sioc)
+#define ATM_GETNAMES _IOW('a', ATMIOC_ITF + 3, struct atm_iobuf)
+#define ATM_GETTYPE _IOW('a', ATMIOC_ITF + 4, struct atmif_sioc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_GETESI _IOW('a',ATMIOC_ITF+5,struct atmif_sioc)
-#define ATM_GETADDR _IOW('a',ATMIOC_ITF+6,struct atmif_sioc)
-#define ATM_RSTADDR _IOW('a',ATMIOC_ITF+7,struct atmif_sioc)
-#define ATM_ADDADDR _IOW('a',ATMIOC_ITF+8,struct atmif_sioc)
+#define ATM_GETESI _IOW('a', ATMIOC_ITF + 5, struct atmif_sioc)
+#define ATM_GETADDR _IOW('a', ATMIOC_ITF + 6, struct atmif_sioc)
+#define ATM_RSTADDR _IOW('a', ATMIOC_ITF + 7, struct atmif_sioc)
+#define ATM_ADDADDR _IOW('a', ATMIOC_ITF + 8, struct atmif_sioc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_DELADDR _IOW('a',ATMIOC_ITF+9,struct atmif_sioc)
-#define ATM_GETCIRANGE _IOW('a',ATMIOC_ITF+10,struct atmif_sioc)
-#define ATM_SETCIRANGE _IOW('a',ATMIOC_ITF+11,struct atmif_sioc)
-#define ATM_SETESI _IOW('a',ATMIOC_ITF+12,struct atmif_sioc)
+#define ATM_DELADDR _IOW('a', ATMIOC_ITF + 9, struct atmif_sioc)
+#define ATM_GETCIRANGE _IOW('a', ATMIOC_ITF + 10, struct atmif_sioc)
+#define ATM_SETCIRANGE _IOW('a', ATMIOC_ITF + 11, struct atmif_sioc)
+#define ATM_SETESI _IOW('a', ATMIOC_ITF + 12, struct atmif_sioc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_SETESIF _IOW('a',ATMIOC_ITF+13,struct atmif_sioc)
-#define ATM_ADDLECSADDR _IOW('a', ATMIOC_ITF+14, struct atmif_sioc)
-#define ATM_DELLECSADDR _IOW('a', ATMIOC_ITF+15, struct atmif_sioc)
-#define ATM_GETLECSADDR _IOW('a', ATMIOC_ITF+16, struct atmif_sioc)
+#define ATM_SETESIF _IOW('a', ATMIOC_ITF + 13, struct atmif_sioc)
+#define ATM_ADDLECSADDR _IOW('a', ATMIOC_ITF + 14, struct atmif_sioc)
+#define ATM_DELLECSADDR _IOW('a', ATMIOC_ITF + 15, struct atmif_sioc)
+#define ATM_GETLECSADDR _IOW('a', ATMIOC_ITF + 16, struct atmif_sioc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_GETSTAT _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc)
-#define ATM_GETSTATZ _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc)
-#define ATM_GETLOOP _IOW('a',ATMIOC_SARCOM+2,struct atmif_sioc)
-#define ATM_SETLOOP _IOW('a',ATMIOC_SARCOM+3,struct atmif_sioc)
+#define ATM_GETSTAT _IOW('a', ATMIOC_SARCOM + 0, struct atmif_sioc)
+#define ATM_GETSTATZ _IOW('a', ATMIOC_SARCOM + 1, struct atmif_sioc)
+#define ATM_GETLOOP _IOW('a', ATMIOC_SARCOM + 2, struct atmif_sioc)
+#define ATM_SETLOOP _IOW('a', ATMIOC_SARCOM + 3, struct atmif_sioc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_QUERYLOOP _IOW('a',ATMIOC_SARCOM+4,struct atmif_sioc)
-#define ATM_SETSC _IOW('a',ATMIOC_SPECIAL+1,int)
-#define ATM_SETBACKEND _IOW('a',ATMIOC_SPECIAL+2,atm_backend_t)
-#define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
+#define ATM_QUERYLOOP _IOW('a', ATMIOC_SARCOM + 4, struct atmif_sioc)
+#define ATM_SETSC _IOW('a', ATMIOC_SPECIAL + 1, int)
+#define ATM_SETBACKEND _IOW('a', ATMIOC_SPECIAL + 2, atm_backend_t)
+#define ATM_NEWBACKENDIF _IOW('a', ATMIOC_SPECIAL + 3, atm_backend_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf)
-#define ATM_DROPPARTY _IOW('a', ATMIOC_SPECIAL+5,int)
+#define ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL + 4, struct atm_iobuf)
+#define ATM_DROPPARTY _IOW('a', ATMIOC_SPECIAL + 5, int)
 #define ATM_BACKEND_RAW 0
 #define ATM_BACKEND_PPP 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -102,14 +102,14 @@
 #define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atm_iobuf {
- int length;
- void __user *buffer;
+  int length;
+  void __user * buffer;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATM_CI_MAX -1
+#define ATM_CI_MAX - 1
 struct atm_cirange {
- signed char vpi_bits;
- signed char vci_bits;
+  signed char vpi_bits;
+  signed char vci_bits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ATM_SC_RX 1024
@@ -123,7 +123,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MF_DEC_SHP 16
 #define ATM_MF_BWD 32
-#define ATM_MF_SET (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV |   ATM_MF_DEC_SHP | ATM_MF_BWD)
+#define ATM_MF_SET (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV | ATM_MF_DEC_SHP | ATM_MF_BWD)
 #define ATM_VS_IDLE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_VS_CONNECTED 1
@@ -132,7 +132,7 @@
 #define ATM_VS_INUSE 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_VS_BOUND 5
-#define ATM_VS2TXT_MAP   "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
-#define ATM_VF2TXT_MAP   "ADDR", "READY", "PARTIAL", "REGIS",   "RELEASED", "HASQOS", "LISTEN", "META",   "256", "512", "1024", "2048",   "SESSION", "HASSAP", "BOUND", "CLOSE"
+#define ATM_VS2TXT_MAP "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
+#define ATM_VF2TXT_MAP "ADDR", "READY", "PARTIAL", "REGIS", "RELEASED", "HASQOS", "LISTEN", "META", "256", "512", "1024", "2048", "SESSION", "HASSAP", "BOUND", "CLOSE"
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/atmlec.h b/libc/kernel/uapi/linux/atmlec.h
index 76e10ba..a44d47a 100644
--- a/libc/kernel/uapi/linux/atmlec.h
+++ b/libc/kernel/uapi/linux/atmlec.h
@@ -26,78 +26,78 @@
 #include <linux/types.h>
 #define ATMLEC_CTRL _IO('a', ATMIOC_LANE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATMLEC_DATA _IO('a', ATMIOC_LANE+1)
-#define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2)
+#define ATMLEC_DATA _IO('a', ATMIOC_LANE + 1)
+#define ATMLEC_MCAST _IO('a', ATMIOC_LANE + 2)
 #define MAX_LEC_ITF 48
 typedef enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- l_set_mac_addr,
- l_del_mac_addr,
- l_svc_setup,
- l_addr_delete,
+  l_set_mac_addr,
+  l_del_mac_addr,
+  l_svc_setup,
+  l_addr_delete,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- l_topology_change,
- l_flush_complete,
- l_arp_update,
- l_narp_req,
+  l_topology_change,
+  l_flush_complete,
+  l_arp_update,
+  l_narp_req,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- l_config,
- l_flush_tran_id,
- l_set_lecid,
- l_arp_xmt,
+  l_config,
+  l_flush_tran_id,
+  l_set_lecid,
+  l_arp_xmt,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- l_rdesc_arp_xmt,
- l_associate_req,
- l_should_bridge
+  l_rdesc_arp_xmt,
+  l_associate_req,
+  l_should_bridge
 } atmlec_msg_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATMLEC_MSG_TYPE_MAX l_should_bridge
 struct atmlec_config_msg {
- unsigned int maximum_unknown_frame_count;
- unsigned int max_unknown_frame_time;
+  unsigned int maximum_unknown_frame_count;
+  unsigned int max_unknown_frame_time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short max_retry_count;
- unsigned int aging_time;
- unsigned int forward_delay_time;
- unsigned int arp_response_time;
+  unsigned short max_retry_count;
+  unsigned int aging_time;
+  unsigned int forward_delay_time;
+  unsigned int arp_response_time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flush_timeout;
- unsigned int path_switching_delay;
- unsigned int lane_version;
- int mtu;
+  unsigned int flush_timeout;
+  unsigned int path_switching_delay;
+  unsigned int lane_version;
+  int mtu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int is_proxy;
+  int is_proxy;
 };
 struct atmlec_msg {
- atmlec_msg_type type;
+  atmlec_msg_type type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int sizeoftlvs;
- union {
- struct {
- unsigned char mac_addr[ETH_ALEN];
+  int sizeoftlvs;
+  union {
+    struct {
+      unsigned char mac_addr[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char atm_addr[ATM_ESA_LEN];
- unsigned int flag;
- unsigned int targetless_le_arp;
- unsigned int no_source_le_narp;
+      unsigned char atm_addr[ATM_ESA_LEN];
+      unsigned int flag;
+      unsigned int targetless_le_arp;
+      unsigned int no_source_le_narp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } normal;
- struct atmlec_config_msg config;
- struct {
- __u16 lec_id;
+    } normal;
+    struct atmlec_config_msg config;
+    struct {
+      __u16 lec_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tran_id;
- unsigned char mac_addr[ETH_ALEN];
- unsigned char atm_addr[ATM_ESA_LEN];
- } proxy;
+      __u32 tran_id;
+      unsigned char mac_addr[ETH_ALEN];
+      unsigned char atm_addr[ATM_ESA_LEN];
+    } proxy;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } content;
+  } content;
 } __ATM_API_ALIGN;
 struct atmlec_ioc {
- int dev_num;
+  int dev_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char atm_addr[ATM_ESA_LEN];
- unsigned char receive;
+  unsigned char atm_addr[ATM_ESA_LEN];
+  unsigned char receive;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/atmmpc.h b/libc/kernel/uapi/linux/atmmpc.h
index a946030..7fe60bd 100644
--- a/libc/kernel/uapi/linux/atmmpc.h
+++ b/libc/kernel/uapi/linux/atmmpc.h
@@ -24,71 +24,71 @@
 #include <linux/atm.h>
 #include <linux/types.h>
 #define ATMMPC_CTRL _IO('a', ATMIOC_MPOA)
-#define ATMMPC_DATA _IO('a', ATMIOC_MPOA+1)
+#define ATMMPC_DATA _IO('a', ATMIOC_MPOA + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPC_SOCKET_INGRESS 1
 #define MPC_SOCKET_EGRESS 2
 struct atmmpc_ioc {
- int dev_num;
+  int dev_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ipaddr;
- int type;
+  __be32 ipaddr;
+  int type;
 };
 typedef struct in_ctrl_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 Last_NHRP_CIE_code;
- __u8 Last_Q2931_cause_value;
- __u8 eg_MPC_ATM_addr[ATM_ESA_LEN];
- __be32 tag;
+  __u8 Last_NHRP_CIE_code;
+  __u8 Last_Q2931_cause_value;
+  __u8 eg_MPC_ATM_addr[ATM_ESA_LEN];
+  __be32 tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 in_dst_ip;
- __u16 holding_time;
- __u32 request_id;
+  __be32 in_dst_ip;
+  __u16 holding_time;
+  __u32 request_id;
 } in_ctrl_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct eg_ctrl_info {
- __u8 DLL_header[256];
- __u8 DH_length;
- __be32 cache_id;
+  __u8 DLL_header[256];
+  __u8 DH_length;
+  __be32 cache_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 tag;
- __be32 mps_ip;
- __be32 eg_dst_ip;
- __u8 in_MPC_data_ATM_addr[ATM_ESA_LEN];
+  __be32 tag;
+  __be32 mps_ip;
+  __be32 eg_dst_ip;
+  __u8 in_MPC_data_ATM_addr[ATM_ESA_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 holding_time;
+  __u16 holding_time;
 } eg_ctrl_info;
 struct mpc_parameters {
- __u16 mpc_p1;
+  __u16 mpc_p1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 mpc_p2;
- __u8 mpc_p3[8];
- __u16 mpc_p4;
- __u16 mpc_p5;
+  __u16 mpc_p2;
+  __u8 mpc_p3[8];
+  __u16 mpc_p4;
+  __u16 mpc_p5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 mpc_p6;
-} ;
+  __u16 mpc_p6;
+};
 struct k_message {
- __u16 type;
+  __u16 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ip_mask;
- __u8 MPS_ctrl[ATM_ESA_LEN];
- union {
- in_ctrl_info in_info;
+  __be32 ip_mask;
+  __u8 MPS_ctrl[ATM_ESA_LEN];
+  union {
+    in_ctrl_info in_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- eg_ctrl_info eg_info;
- struct mpc_parameters params;
- } content;
- struct atm_qos qos;
+    eg_ctrl_info eg_info;
+    struct mpc_parameters params;
+  } content;
+  struct atm_qos qos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __ATM_API_ALIGN;
 struct llc_snap_hdr {
- __u8 dsap;
- __u8 ssap;
+  __u8 dsap;
+  __u8 ssap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ui;
- __u8 org[3];
- __u8 type[2];
+  __u8 ui;
+  __u8 org[3];
+  __u8 type[2];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TLV_MPOA_DEVICE_TYPE 0x00a03e2a
diff --git a/libc/kernel/uapi/linux/atmppp.h b/libc/kernel/uapi/linux/atmppp.h
index 98e2e31..6339d5b 100644
--- a/libc/kernel/uapi/linux/atmppp.h
+++ b/libc/kernel/uapi/linux/atmppp.h
@@ -24,8 +24,8 @@
 #define PPPOATM_ENCAPS_VC (1)
 #define PPPOATM_ENCAPS_LLC (2)
 struct atm_backend_ppp {
- atm_backend_t backend_num;
+  atm_backend_t backend_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int encaps;
+  int encaps;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/atmsap.h b/libc/kernel/uapi/linux/atmsap.h
index 85e8020..7dcc273 100644
--- a/libc/kernel/uapi/linux/atmsap.h
+++ b/libc/kernel/uapi/linux/atmsap.h
@@ -74,51 +74,51 @@
 #define ATM_MC_H221 5
 #define ATM_MAX_HLI 8
 struct atm_blli {
- unsigned char l2_proto;
+  unsigned char l2_proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- unsigned char mode;
- unsigned char window;
+  union {
+    struct {
+      unsigned char mode;
+      unsigned char window;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } itu;
- unsigned char user;
- } l2;
- unsigned char l3_proto;
+    } itu;
+    unsigned char user;
+  } l2;
+  unsigned char l3_proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- unsigned char mode;
- unsigned char def_size;
+  union {
+    struct {
+      unsigned char mode;
+      unsigned char def_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char window;
- } itu;
- unsigned char user;
- struct {
+      unsigned char window;
+    } itu;
+    unsigned char user;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char term_type;
- unsigned char fw_mpx_cap;
- unsigned char bw_mpx_cap;
- } h310;
+      unsigned char term_type;
+      unsigned char fw_mpx_cap;
+      unsigned char bw_mpx_cap;
+    } h310;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned char ipi;
- unsigned char snap[5];
- } tr9577;
+    struct {
+      unsigned char ipi;
+      unsigned char snap[5];
+    } tr9577;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } l3;
+  } l3;
 } __ATM_API_ALIGN;
 struct atm_bhli {
- unsigned char hl_type;
+  unsigned char hl_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char hl_length;
- unsigned char hl_info[ATM_MAX_HLI];
+  unsigned char hl_length;
+  unsigned char hl_info[ATM_MAX_HLI];
 };
 #define ATM_MAX_BLLI 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atm_sap {
- struct atm_bhli bhli;
- struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
+  struct atm_bhli bhli;
+  struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/atmsvc.h b/libc/kernel/uapi/linux/atmsvc.h
index 285977c..2df0870 100644
--- a/libc/kernel/uapi/linux/atmsvc.h
+++ b/libc/kernel/uapi/linux/atmsvc.h
@@ -22,27 +22,44 @@
 #include <linux/atm.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/atmioc.h>
-#define ATMSIGD_CTRL _IO('a',ATMIOC_SPECIAL)
-enum atmsvc_msg_type { as_catch_null, as_bind, as_connect, as_accept, as_reject,
- as_listen, as_okay, as_error, as_indicate, as_close,
+#define ATMSIGD_CTRL _IO('a', ATMIOC_SPECIAL)
+enum atmsvc_msg_type {
+  as_catch_null,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- as_itf_notify, as_modify, as_identify, as_terminate,
- as_addparty, as_dropparty };
+  as_bind,
+  as_connect,
+  as_accept,
+  as_reject,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  as_listen,
+  as_okay,
+  as_error,
+  as_indicate,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  as_close,
+  as_itf_notify,
+  as_modify,
+  as_identify,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  as_terminate,
+  as_addparty,
+  as_dropparty
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atmsvc_msg {
- enum atmsvc_msg_type type;
+  enum atmsvc_msg_type type;
+  atm_kptr_t vcc;
+  atm_kptr_t listen_vcc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- atm_kptr_t vcc;
- atm_kptr_t listen_vcc;
- int reply;
- struct sockaddr_atmpvc pvc;
+  int reply;
+  struct sockaddr_atmpvc pvc;
+  struct sockaddr_atmsvc local;
+  struct atm_qos qos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_atmsvc local;
- struct atm_qos qos;
- struct atm_sap sap;
- unsigned int session;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_atmsvc svc;
+  struct atm_sap sap;
+  unsigned int session;
+  struct sockaddr_atmsvc svc;
 } __ATM_API_ALIGN;
-#define SELECT_TOP_PCR(tp) ((tp).pcr ? (tp).pcr :   (tp).max_pcr && (tp).max_pcr != ATM_MAX_PCR ? (tp).max_pcr :   (tp).min_pcr ? (tp).min_pcr : ATM_MAX_PCR)
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SELECT_TOP_PCR(tp) ((tp).pcr ? (tp).pcr : (tp).max_pcr && (tp).max_pcr != ATM_MAX_PCR ? (tp).max_pcr : (tp).min_pcr ? (tp).min_pcr : ATM_MAX_PCR)
+#endif
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index b506512..da6c746 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -46,284 +46,294 @@
 #define AUDIT_SET_FEATURE 1018
 #define AUDIT_GET_FEATURE 1019
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AUDIT_FEATURE_CHANGE 1020
 #define AUDIT_FIRST_USER_MSG 1100
 #define AUDIT_USER_AVC 1107
 #define AUDIT_USER_TTY 1124
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_LAST_USER_MSG 1199
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_FIRST_USER_MSG2 2100
 #define AUDIT_LAST_USER_MSG2 2999
 #define AUDIT_DAEMON_START 1200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_DAEMON_END 1201
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_DAEMON_ABORT 1202
 #define AUDIT_DAEMON_CONFIG 1203
 #define AUDIT_SYSCALL 1300
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_PATH 1302
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_IPC 1303
 #define AUDIT_SOCKETCALL 1304
 #define AUDIT_CONFIG_CHANGE 1305
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_SOCKADDR 1306
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_CWD 1307
 #define AUDIT_EXECVE 1309
 #define AUDIT_IPC_SET_PERM 1311
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_MQ_OPEN 1312
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_MQ_SENDRECV 1313
 #define AUDIT_MQ_NOTIFY 1314
 #define AUDIT_MQ_GETSETATTR 1315
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_KERNEL_OTHER 1316
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_FD_PAIR 1317
 #define AUDIT_OBJ_PID 1318
 #define AUDIT_TTY 1319
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_EOE 1320
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_BPRM_FCAPS 1321
 #define AUDIT_CAPSET 1322
 #define AUDIT_MMAP 1323
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_NETFILTER_PKT 1324
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_NETFILTER_CFG 1325
 #define AUDIT_SECCOMP 1326
-#define AUDIT_AVC 1400
+#define AUDIT_PROCTITLE 1327
+#define AUDIT_FEATURE_CHANGE 1328
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_AVC 1400
 #define AUDIT_SELINUX_ERR 1401
 #define AUDIT_AVC_PATH 1402
 #define AUDIT_MAC_POLICY_LOAD 1403
-#define AUDIT_MAC_STATUS 1404
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_MAC_STATUS 1404
 #define AUDIT_MAC_CONFIG_CHANGE 1405
 #define AUDIT_MAC_UNLBL_ALLOW 1406
 #define AUDIT_MAC_CIPSOV4_ADD 1407
-#define AUDIT_MAC_CIPSOV4_DEL 1408
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_MAC_CIPSOV4_DEL 1408
 #define AUDIT_MAC_MAP_ADD 1409
 #define AUDIT_MAC_MAP_DEL 1410
 #define AUDIT_MAC_IPSEC_ADDSA 1411
-#define AUDIT_MAC_IPSEC_DELSA 1412
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_MAC_IPSEC_DELSA 1412
 #define AUDIT_MAC_IPSEC_ADDSPD 1413
 #define AUDIT_MAC_IPSEC_DELSPD 1414
 #define AUDIT_MAC_IPSEC_EVENT 1415
-#define AUDIT_MAC_UNLBL_STCADD 1416
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_MAC_UNLBL_STCADD 1416
 #define AUDIT_MAC_UNLBL_STCDEL 1417
 #define AUDIT_FIRST_KERN_ANOM_MSG 1700
 #define AUDIT_LAST_KERN_ANOM_MSG 1799
-#define AUDIT_ANOM_PROMISCUOUS 1700
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_ANOM_PROMISCUOUS 1700
 #define AUDIT_ANOM_ABEND 1701
 #define AUDIT_ANOM_LINK 1702
 #define AUDIT_INTEGRITY_DATA 1800
-#define AUDIT_INTEGRITY_METADATA 1801
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_INTEGRITY_METADATA 1801
 #define AUDIT_INTEGRITY_STATUS 1802
 #define AUDIT_INTEGRITY_HASH 1803
 #define AUDIT_INTEGRITY_PCR 1804
-#define AUDIT_INTEGRITY_RULE 1805
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_INTEGRITY_RULE 1805
 #define AUDIT_KERNEL 2000
 #define AUDIT_FILTER_USER 0x00
 #define AUDIT_FILTER_TASK 0x01
-#define AUDIT_FILTER_ENTRY 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_FILTER_ENTRY 0x02
 #define AUDIT_FILTER_WATCH 0x03
 #define AUDIT_FILTER_EXIT 0x04
 #define AUDIT_FILTER_TYPE 0x05
-#define AUDIT_NR_FILTERS 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_NR_FILTERS 6
 #define AUDIT_FILTER_PREPEND 0x10
 #define AUDIT_NEVER 0
 #define AUDIT_POSSIBLE 1
-#define AUDIT_ALWAYS 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_ALWAYS 2
 #define AUDIT_MAX_FIELDS 64
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
-#define AUDIT_WORD(nr) ((__u32)((nr)/32))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr)*32))
+#define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
+#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
-#define AUDIT_CLASS_DIR_WRITE_32 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_CLASS_DIR_WRITE_32 1
 #define AUDIT_CLASS_CHATTR 2
 #define AUDIT_CLASS_CHATTR_32 3
 #define AUDIT_CLASS_READ 4
-#define AUDIT_CLASS_READ_32 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_CLASS_READ_32 5
 #define AUDIT_CLASS_WRITE 6
 #define AUDIT_CLASS_WRITE_32 7
 #define AUDIT_CLASS_SIGNAL 8
-#define AUDIT_CLASS_SIGNAL_32 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_CLASS_SIGNAL_32 9
 #define AUDIT_UNUSED_BITS 0x07FFFC00
 #define AUDIT_COMPARE_UID_TO_OBJ_UID 1
 #define AUDIT_COMPARE_GID_TO_OBJ_GID 2
-#define AUDIT_COMPARE_EUID_TO_OBJ_UID 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_COMPARE_EUID_TO_OBJ_UID 3
 #define AUDIT_COMPARE_EGID_TO_OBJ_GID 4
 #define AUDIT_COMPARE_AUID_TO_OBJ_UID 5
 #define AUDIT_COMPARE_SUID_TO_OBJ_UID 6
-#define AUDIT_COMPARE_SGID_TO_OBJ_GID 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_COMPARE_SGID_TO_OBJ_GID 7
 #define AUDIT_COMPARE_FSUID_TO_OBJ_UID 8
 #define AUDIT_COMPARE_FSGID_TO_OBJ_GID 9
 #define AUDIT_COMPARE_UID_TO_AUID 10
-#define AUDIT_COMPARE_UID_TO_EUID 11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_COMPARE_UID_TO_EUID 11
 #define AUDIT_COMPARE_UID_TO_FSUID 12
 #define AUDIT_COMPARE_UID_TO_SUID 13
 #define AUDIT_COMPARE_AUID_TO_FSUID 14
-#define AUDIT_COMPARE_AUID_TO_SUID 15
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_COMPARE_AUID_TO_SUID 15
 #define AUDIT_COMPARE_AUID_TO_EUID 16
 #define AUDIT_COMPARE_EUID_TO_SUID 17
 #define AUDIT_COMPARE_EUID_TO_FSUID 18
-#define AUDIT_COMPARE_SUID_TO_FSUID 19
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_COMPARE_SUID_TO_FSUID 19
 #define AUDIT_COMPARE_GID_TO_EGID 20
 #define AUDIT_COMPARE_GID_TO_FSGID 21
 #define AUDIT_COMPARE_GID_TO_SGID 22
-#define AUDIT_COMPARE_EGID_TO_FSGID 23
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_COMPARE_EGID_TO_FSGID 23
 #define AUDIT_COMPARE_EGID_TO_SGID 24
 #define AUDIT_COMPARE_SGID_TO_FSGID 25
 #define AUDIT_MAX_FIELD_COMPARE AUDIT_COMPARE_SGID_TO_FSGID
-#define AUDIT_PID 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_PID 0
 #define AUDIT_UID 1
 #define AUDIT_EUID 2
 #define AUDIT_SUID 3
-#define AUDIT_FSUID 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_FSUID 4
 #define AUDIT_GID 5
 #define AUDIT_EGID 6
 #define AUDIT_SGID 7
-#define AUDIT_FSGID 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_FSGID 8
 #define AUDIT_LOGINUID 9
 #define AUDIT_PERS 10
 #define AUDIT_ARCH 11
-#define AUDIT_MSGTYPE 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_MSGTYPE 12
 #define AUDIT_SUBJ_USER 13
 #define AUDIT_SUBJ_ROLE 14
 #define AUDIT_SUBJ_TYPE 15
-#define AUDIT_SUBJ_SEN 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_SUBJ_SEN 16
 #define AUDIT_SUBJ_CLR 17
 #define AUDIT_PPID 18
 #define AUDIT_OBJ_USER 19
-#define AUDIT_OBJ_ROLE 20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_OBJ_ROLE 20
 #define AUDIT_OBJ_TYPE 21
 #define AUDIT_OBJ_LEV_LOW 22
 #define AUDIT_OBJ_LEV_HIGH 23
-#define AUDIT_LOGINUID_SET 24
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_LOGINUID_SET 24
 #define AUDIT_DEVMAJOR 100
 #define AUDIT_DEVMINOR 101
 #define AUDIT_INODE 102
-#define AUDIT_EXIT 103
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_EXIT 103
 #define AUDIT_SUCCESS 104
 #define AUDIT_WATCH 105
 #define AUDIT_PERM 106
-#define AUDIT_DIR 107
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_DIR 107
 #define AUDIT_FILETYPE 108
 #define AUDIT_OBJ_UID 109
 #define AUDIT_OBJ_GID 110
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_FIELD_COMPARE 111
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_ARG0 200
-#define AUDIT_ARG1 (AUDIT_ARG0+1)
-#define AUDIT_ARG2 (AUDIT_ARG0+2)
-#define AUDIT_ARG3 (AUDIT_ARG0+3)
+#define AUDIT_ARG1 (AUDIT_ARG0 + 1)
+#define AUDIT_ARG2 (AUDIT_ARG0 + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_ARG3 (AUDIT_ARG0 + 3)
 #define AUDIT_FILTERKEY 210
 #define AUDIT_NEGATE 0x80000000
 #define AUDIT_BIT_MASK 0x08000000
-#define AUDIT_LESS_THAN 0x10000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_LESS_THAN 0x10000000
 #define AUDIT_GREATER_THAN 0x20000000
 #define AUDIT_NOT_EQUAL 0x30000000
 #define AUDIT_EQUAL 0x40000000
-#define AUDIT_BIT_TEST (AUDIT_BIT_MASK|AUDIT_EQUAL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AUDIT_LESS_THAN_OR_EQUAL (AUDIT_LESS_THAN|AUDIT_EQUAL)
-#define AUDIT_GREATER_THAN_OR_EQUAL (AUDIT_GREATER_THAN|AUDIT_EQUAL)
-#define AUDIT_OPERATORS (AUDIT_EQUAL|AUDIT_NOT_EQUAL|AUDIT_BIT_MASK)
+#define AUDIT_BIT_TEST (AUDIT_BIT_MASK | AUDIT_EQUAL)
+#define AUDIT_LESS_THAN_OR_EQUAL (AUDIT_LESS_THAN | AUDIT_EQUAL)
+#define AUDIT_GREATER_THAN_OR_EQUAL (AUDIT_GREATER_THAN | AUDIT_EQUAL)
+#define AUDIT_OPERATORS (AUDIT_EQUAL | AUDIT_NOT_EQUAL | AUDIT_BIT_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  Audit_equal,
+  Audit_not_equal,
+  Audit_bitmask,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Audit_equal,
- Audit_not_equal,
- Audit_bitmask,
- Audit_bittest,
+  Audit_bittest,
+  Audit_lt,
+  Audit_gt,
+  Audit_le,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Audit_lt,
- Audit_gt,
- Audit_le,
- Audit_ge,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Audit_bad
+  Audit_ge,
+  Audit_bad
 };
 #define AUDIT_STATUS_ENABLED 0x0001
-#define AUDIT_STATUS_FAILURE 0x0002
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_STATUS_FAILURE 0x0002
 #define AUDIT_STATUS_PID 0x0004
 #define AUDIT_STATUS_RATE_LIMIT 0x0008
 #define AUDIT_STATUS_BACKLOG_LIMIT 0x0010
-#define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020
 #define AUDIT_VERSION_BACKLOG_LIMIT 1
 #define AUDIT_VERSION_BACKLOG_WAIT_TIME 2
 #define AUDIT_VERSION_LATEST AUDIT_VERSION_BACKLOG_WAIT_TIME
-#define AUDIT_FAIL_SILENT 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_FAIL_SILENT 0
 #define AUDIT_FAIL_PRINTK 1
 #define AUDIT_FAIL_PANIC 2
+#define __AUDIT_ARCH_CONVENTION_MASK 0x30000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __AUDIT_ARCH_CONVENTION_MIPS64_N32 0x20000000
 #define __AUDIT_ARCH_64BIT 0x80000000
 #define __AUDIT_ARCH_LE 0x40000000
+#define AUDIT_ARCH_AARCH64 (EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AUDIT_ARCH_ALPHA (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
-#define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE)
+#define AUDIT_ARCH_ALPHA (EM_ALPHA | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_ARM (EM_ARM | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_ARMEB (EM_ARM)
-#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)
+#define AUDIT_ARCH_CRIS (EM_CRIS | __AUDIT_ARCH_LE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_ARCH_FRV (EM_FRV)
-#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)
-#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#define AUDIT_ARCH_I386 (EM_386 | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_IA64 (EM_IA_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_M32R (EM_M32R)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_ARCH_M68K (EM_68K)
+#define AUDIT_ARCH_MICROBLAZE (EM_MICROBLAZE)
 #define AUDIT_ARCH_MIPS (EM_MIPS)
-#define AUDIT_ARCH_MIPSEL (EM_MIPS|__AUDIT_ARCH_LE)
-#define AUDIT_ARCH_MIPS64 (EM_MIPS|__AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_MIPSEL (EM_MIPS | __AUDIT_ARCH_LE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#define AUDIT_ARCH_MIPS64 (EM_MIPS | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_MIPS64N32 (EM_MIPS | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_CONVENTION_MIPS64_N32)
+#define AUDIT_ARCH_MIPSEL64 (EM_MIPS | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE | __AUDIT_ARCH_CONVENTION_MIPS64_N32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_ARCH_OPENRISC (EM_OPENRISC)
 #define AUDIT_ARCH_PARISC (EM_PARISC)
-#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_ARCH_PARISC64 (EM_PARISC | __AUDIT_ARCH_64BIT)
 #define AUDIT_ARCH_PPC (EM_PPC)
-#define AUDIT_ARCH_PPC64 (EM_PPC64|__AUDIT_ARCH_64BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUDIT_ARCH_PPC64 (EM_PPC64 | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_PPC64LE (EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_S390 (EM_S390)
-#define AUDIT_ARCH_S390X (EM_S390|__AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_S390X (EM_S390 | __AUDIT_ARCH_64BIT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_ARCH_SH (EM_SH)
-#define AUDIT_ARCH_SHEL (EM_SH|__AUDIT_ARCH_LE)
-#define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)
-#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#define AUDIT_ARCH_SHEL (EM_SH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_SH64 (EM_SH | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_SHEL64 (EM_SH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_ARCH_SPARC (EM_SPARC)
-#define AUDIT_ARCH_SPARC64 (EM_SPARCV9|__AUDIT_ARCH_64BIT)
-#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#define AUDIT_ARCH_SPARC64 (EM_SPARCV9 | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_PERM_EXEC 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_PERM_WRITE 2
@@ -331,64 +341,61 @@
 #define AUDIT_PERM_ATTR 8
 #define AUDIT_MESSAGE_TEXT_MAX 8560
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct audit_status {
- __u32 mask;
- __u32 enabled;
- __u32 failure;
+enum audit_nlgrps {
+  AUDIT_NLGRP_NONE,
+  AUDIT_NLGRP_READLOG,
+  __AUDIT_NLGRP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pid;
- __u32 rate_limit;
- __u32 backlog_limit;
- __u32 lost;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 backlog;
- __u32 version;
- __u32 backlog_wait_time;
 };
+#define AUDIT_NLGRP_MAX (__AUDIT_NLGRP_MAX - 1)
+struct audit_status {
+  __u32 mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 enabled;
+  __u32 failure;
+  __u32 pid;
+  __u32 rate_limit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 backlog_limit;
+  __u32 lost;
+  __u32 backlog;
+  __u32 version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 backlog_wait_time;
+};
 struct audit_features {
 #define AUDIT_FEATURE_VERSION 1
- __u32 vers;
- __u32 mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 features;
- __u32 lock;
+  __u32 vers;
+  __u32 mask;
+  __u32 features;
+  __u32 lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define AUDIT_FEATURE_ONLY_UNSET_LOGINUID 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIT_FEATURE_LOGINUID_IMMUTABLE 1
 #define AUDIT_LAST_FEATURE AUDIT_FEATURE_LOGINUID_IMMUTABLE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define audit_feature_valid(x) ((x) >= 0 && (x) <= AUDIT_LAST_FEATURE)
 #define AUDIT_FEATURE_TO_MASK(x) (1 << ((x) & 31))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct audit_tty_status {
- __u32 enabled;
- __u32 log_passwd;
-};
+  __u32 enabled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AUDIT_UID_UNSET (unsigned int)-1
+  __u32 log_passwd;
+};
+#define AUDIT_UID_UNSET (unsigned int) - 1
 struct audit_rule_data {
- __u32 flags;
- __u32 action;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 field_count;
- __u32 mask[AUDIT_BITMASK_SIZE];
- __u32 fields[AUDIT_MAX_FIELDS];
- __u32 values[AUDIT_MAX_FIELDS];
+  __u32 flags;
+  __u32 action;
+  __u32 field_count;
+  __u32 mask[AUDIT_BITMASK_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fieldflags[AUDIT_MAX_FIELDS];
- __u32 buflen;
- char buf[0];
+  __u32 fields[AUDIT_MAX_FIELDS];
+  __u32 values[AUDIT_MAX_FIELDS];
+  __u32 fieldflags[AUDIT_MAX_FIELDS];
+  __u32 buflen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char buf[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct audit_rule {
- __u32 flags;
- __u32 action;
- __u32 field_count;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mask[AUDIT_BITMASK_SIZE];
- __u32 fields[AUDIT_MAX_FIELDS];
- __u32 values[AUDIT_MAX_FIELDS];
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/auto_fs.h b/libc/kernel/uapi/linux/auto_fs.h
index a195375..b3b045f 100644
--- a/libc/kernel/uapi/linux/auto_fs.h
+++ b/libc/kernel/uapi/linux/auto_fs.h
@@ -34,31 +34,31 @@
 #define autofs_ptype_missing 0
 #define autofs_ptype_expire 1
 struct autofs_packet_hdr {
- int proto_version;
+  int proto_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int type;
+  int type;
 };
 struct autofs_packet_missing {
- struct autofs_packet_hdr hdr;
+  struct autofs_packet_hdr hdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- autofs_wqt_t wait_queue_token;
- int len;
- char name[NAME_MAX+1];
+  autofs_wqt_t wait_queue_token;
+  int len;
+  char name[NAME_MAX + 1];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct autofs_packet_expire {
- struct autofs_packet_hdr hdr;
- int len;
- char name[NAME_MAX+1];
+  struct autofs_packet_hdr hdr;
+  int len;
+  char name[NAME_MAX + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define AUTOFS_IOC_READY _IO(0x93,0x60)
-#define AUTOFS_IOC_FAIL _IO(0x93,0x61)
-#define AUTOFS_IOC_CATATONIC _IO(0x93,0x62)
+#define AUTOFS_IOC_READY _IO(0x93, 0x60)
+#define AUTOFS_IOC_FAIL _IO(0x93, 0x61)
+#define AUTOFS_IOC_CATATONIC _IO(0x93, 0x62)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define AUTOFS_IOC_PROTOVER _IOR(0x93,0x63,int)
-#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93,0x64,compat_ulong_t)
-#define AUTOFS_IOC_SETTIMEOUT _IOWR(0x93,0x64,unsigned long)
-#define AUTOFS_IOC_EXPIRE _IOR(0x93,0x65,struct autofs_packet_expire)
+#define AUTOFS_IOC_PROTOVER _IOR(0x93, 0x63, int)
+#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93, 0x64, compat_ulong_t)
+#define AUTOFS_IOC_SETTIMEOUT _IOWR(0x93, 0x64, unsigned long)
+#define AUTOFS_IOC_EXPIRE _IOR(0x93, 0x65, struct autofs_packet_expire)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/auto_fs4.h b/libc/kernel/uapi/linux/auto_fs4.h
index c7a787b..e2cd337 100644
--- a/libc/kernel/uapi/linux/auto_fs4.h
+++ b/libc/kernel/uapi/linux/auto_fs4.h
@@ -38,10 +38,10 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUTOFS_TYPE_OFFSET 4U
 enum autofs_notify {
- NFY_NONE,
- NFY_MOUNT,
+  NFY_NONE,
+  NFY_MOUNT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFY_EXPIRE
+  NFY_EXPIRE
 };
 #define autofs_ptype_expire_multi 2
 #define autofs_ptype_missing_indirect 3
@@ -51,33 +51,33 @@
 #define autofs_ptype_expire_direct 6
 struct autofs_packet_expire_multi {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct autofs_packet_hdr hdr;
- autofs_wqt_t wait_queue_token;
- int len;
- char name[NAME_MAX+1];
+  struct autofs_packet_hdr hdr;
+  autofs_wqt_t wait_queue_token;
+  int len;
+  char name[NAME_MAX + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 union autofs_packet_union {
- struct autofs_packet_hdr hdr;
- struct autofs_packet_missing missing;
+  struct autofs_packet_hdr hdr;
+  struct autofs_packet_missing missing;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct autofs_packet_expire expire;
- struct autofs_packet_expire_multi expire_multi;
+  struct autofs_packet_expire expire;
+  struct autofs_packet_expire_multi expire_multi;
 };
 struct autofs_v5_packet {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct autofs_packet_hdr hdr;
- autofs_wqt_t wait_queue_token;
- __u32 dev;
- __u64 ino;
+  struct autofs_packet_hdr hdr;
+  autofs_wqt_t wait_queue_token;
+  __u32 dev;
+  __u64 ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 uid;
- __u32 gid;
- __u32 pid;
- __u32 tgid;
+  __u32 uid;
+  __u32 gid;
+  __u32 pid;
+  __u32 tgid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 len;
- char name[NAME_MAX+1];
+  __u32 len;
+  char name[NAME_MAX + 1];
 };
 typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -86,19 +86,19 @@
 typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
 union autofs_v5_packet_union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct autofs_packet_hdr hdr;
- struct autofs_v5_packet v5_packet;
- autofs_packet_missing_indirect_t missing_indirect;
- autofs_packet_expire_indirect_t expire_indirect;
+  struct autofs_packet_hdr hdr;
+  struct autofs_v5_packet v5_packet;
+  autofs_packet_missing_indirect_t missing_indirect;
+  autofs_packet_expire_indirect_t expire_indirect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- autofs_packet_missing_direct_t missing_direct;
- autofs_packet_expire_direct_t expire_direct;
+  autofs_packet_missing_direct_t missing_direct;
+  autofs_packet_expire_direct_t expire_direct;
 };
-#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
+#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93, 0x66, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
 #define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
-#define AUTOFS_IOC_PROTOSUBVER _IOR(0x93,0x67,int)
-#define AUTOFS_IOC_ASKUMOUNT _IOR(0x93,0x70,int)
+#define AUTOFS_IOC_PROTOSUBVER _IOR(0x93, 0x67, int)
+#define AUTOFS_IOC_ASKUMOUNT _IOR(0x93, 0x70, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/ax25.h b/libc/kernel/uapi/linux/ax25.h
index 33a7638..83907c2 100644
--- a/libc/kernel/uapi/linux/ax25.h
+++ b/libc/kernel/uapi/linux/ax25.h
@@ -37,95 +37,95 @@
 #define AX25_IAMDIGI 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AX25_KILL 99
-#define SIOCAX25GETUID (SIOCPROTOPRIVATE+0)
-#define SIOCAX25ADDUID (SIOCPROTOPRIVATE+1)
-#define SIOCAX25DELUID (SIOCPROTOPRIVATE+2)
+#define SIOCAX25GETUID (SIOCPROTOPRIVATE + 0)
+#define SIOCAX25ADDUID (SIOCPROTOPRIVATE + 1)
+#define SIOCAX25DELUID (SIOCPROTOPRIVATE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCAX25NOUID (SIOCPROTOPRIVATE+3)
-#define SIOCAX25OPTRT (SIOCPROTOPRIVATE+7)
-#define SIOCAX25CTLCON (SIOCPROTOPRIVATE+8)
-#define SIOCAX25GETINFOOLD (SIOCPROTOPRIVATE+9)
+#define SIOCAX25NOUID (SIOCPROTOPRIVATE + 3)
+#define SIOCAX25OPTRT (SIOCPROTOPRIVATE + 7)
+#define SIOCAX25CTLCON (SIOCPROTOPRIVATE + 8)
+#define SIOCAX25GETINFOOLD (SIOCPROTOPRIVATE + 9)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCAX25ADDFWD (SIOCPROTOPRIVATE+10)
-#define SIOCAX25DELFWD (SIOCPROTOPRIVATE+11)
-#define SIOCAX25DEVCTL (SIOCPROTOPRIVATE+12)
-#define SIOCAX25GETINFO (SIOCPROTOPRIVATE+13)
+#define SIOCAX25ADDFWD (SIOCPROTOPRIVATE + 10)
+#define SIOCAX25DELFWD (SIOCPROTOPRIVATE + 11)
+#define SIOCAX25DEVCTL (SIOCPROTOPRIVATE + 12)
+#define SIOCAX25GETINFO (SIOCPROTOPRIVATE + 13)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AX25_SET_RT_IPMODE 2
 #define AX25_NOUID_DEFAULT 0
 #define AX25_NOUID_BLOCK 1
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char ax25_call[7];
+  char ax25_call[7];
 } ax25_address;
 struct sockaddr_ax25 {
- __kernel_sa_family_t sax25_family;
+  __kernel_sa_family_t sax25_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ax25_address sax25_call;
- int sax25_ndigis;
+  ax25_address sax25_call;
+  int sax25_ndigis;
 };
 #define sax25_uid sax25_ndigis
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct full_sockaddr_ax25 {
- struct sockaddr_ax25 fsa_ax25;
- ax25_address fsa_digipeater[AX25_MAX_DIGIS];
+  struct sockaddr_ax25 fsa_ax25;
+  ax25_address fsa_digipeater[AX25_MAX_DIGIS];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ax25_routes_struct {
- ax25_address port_addr;
- ax25_address dest_addr;
- unsigned char digi_count;
+  ax25_address port_addr;
+  ax25_address dest_addr;
+  unsigned char digi_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ax25_address digi_addr[AX25_MAX_DIGIS];
+  ax25_address digi_addr[AX25_MAX_DIGIS];
 };
 struct ax25_route_opt_struct {
- ax25_address port_addr;
+  ax25_address port_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ax25_address dest_addr;
- int cmd;
- int arg;
+  ax25_address dest_addr;
+  int cmd;
+  int arg;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ax25_ctl_struct {
- ax25_address port_addr;
- ax25_address source_addr;
- ax25_address dest_addr;
+  ax25_address port_addr;
+  ax25_address source_addr;
+  ax25_address dest_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cmd;
- unsigned long arg;
- unsigned char digi_count;
- ax25_address digi_addr[AX25_MAX_DIGIS];
+  unsigned int cmd;
+  unsigned long arg;
+  unsigned char digi_count;
+  ax25_address digi_addr[AX25_MAX_DIGIS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ax25_info_struct_deprecated {
- unsigned int n2, n2count;
- unsigned int t1, t1timer;
+  unsigned int n2, n2count;
+  unsigned int t1, t1timer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int t2, t2timer;
- unsigned int t3, t3timer;
- unsigned int idle, idletimer;
- unsigned int state;
+  unsigned int t2, t2timer;
+  unsigned int t3, t3timer;
+  unsigned int idle, idletimer;
+  unsigned int state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int rcv_q, snd_q;
+  unsigned int rcv_q, snd_q;
 };
 struct ax25_info_struct {
- unsigned int n2, n2count;
+  unsigned int n2, n2count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int t1, t1timer;
- unsigned int t2, t2timer;
- unsigned int t3, t3timer;
- unsigned int idle, idletimer;
+  unsigned int t1, t1timer;
+  unsigned int t2, t2timer;
+  unsigned int t3, t3timer;
+  unsigned int idle, idletimer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int state;
- unsigned int rcv_q, snd_q;
- unsigned int vs, vr, va, vs_max;
- unsigned int paclen;
+  unsigned int state;
+  unsigned int rcv_q, snd_q;
+  unsigned int vs, vr, va, vs_max;
+  unsigned int paclen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int window;
+  unsigned int window;
 };
 struct ax25_fwd_struct {
- ax25_address port_from;
+  ax25_address port_from;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ax25_address port_to;
+  ax25_address port_to;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/b1lli.h b/libc/kernel/uapi/linux/b1lli.h
index e40323b..f3fd140 100644
--- a/libc/kernel/uapi/linux/b1lli.h
+++ b/libc/kernel/uapi/linux/b1lli.h
@@ -19,35 +19,35 @@
 #ifndef _B1LLI_H_
 #define _B1LLI_H_
 typedef struct avmb1_t4file {
- int len;
+  int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char *data;
+  unsigned char * data;
 } avmb1_t4file;
 typedef struct avmb1_loaddef {
- int contr;
+  int contr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- avmb1_t4file t4file;
+  avmb1_t4file t4file;
 } avmb1_loaddef;
 typedef struct avmb1_loadandconfigdef {
- int contr;
+  int contr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- avmb1_t4file t4file;
- avmb1_t4file t4config;
+  avmb1_t4file t4file;
+  avmb1_t4file t4config;
 } avmb1_loadandconfigdef;
 typedef struct avmb1_resetdef {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int contr;
+  int contr;
 } avmb1_resetdef;
 typedef struct avmb1_getdef {
- int contr;
+  int contr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cardtype;
- int cardstate;
+  int cardtype;
+  int cardstate;
 } avmb1_getdef;
 typedef struct avmb1_carddef {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int port;
- int irq;
+  int port;
+  int irq;
 } avmb1_carddef;
 #define AVM_CARDTYPE_B1 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -56,10 +56,10 @@
 #define AVM_CARDTYPE_M2 3
 typedef struct avmb1_extcarddef {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int port;
- int irq;
- int cardtype;
- int cardnr;
+  int port;
+  int irq;
+  int cardtype;
+  int cardnr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } avmb1_extcarddef;
 #define AVMB1_LOAD 0
diff --git a/libc/kernel/uapi/linux/baycom.h b/libc/kernel/uapi/linux/baycom.h
index 436846a..7f3441b 100644
--- a/libc/kernel/uapi/linux/baycom.h
+++ b/libc/kernel/uapi/linux/baycom.h
@@ -19,17 +19,17 @@
 #ifndef _BAYCOM_H
 #define _BAYCOM_H
 struct baycom_debug_data {
- unsigned long debug1;
+  unsigned long debug1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long debug2;
- long debug3;
+  unsigned long debug2;
+  long debug3;
 };
 struct baycom_ioctl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cmd;
- union {
- struct baycom_debug_data dbg;
- } data;
+  int cmd;
+  union {
+    struct baycom_debug_data dbg;
+  } data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define BAYCOMCTL_GETDEBUG 0x92
diff --git a/libc/kernel/uapi/linux/bcache.h b/libc/kernel/uapi/linux/bcache.h
index 4d1d454..efe692c 100644
--- a/libc/kernel/uapi/linux/bcache.h
+++ b/libc/kernel/uapi/linux/bcache.h
@@ -19,20 +19,28 @@
 #ifndef _LINUX_BCACHE_H
 #define _LINUX_BCACHE_H
 #include <asm/types.h>
-#define BITMASK(name, type, field, offset, size)  static inline __u64 name(const type *k)  { return (k->field >> offset) & ~(~0ULL << size); }    static inline void SET_##name(type *k, __u64 v)  {   k->field &= ~(~(~0ULL << size) << offset);   k->field |= (v & ~(~0ULL << size)) << offset;  }
+#define BITMASK(name,type,field,offset,size) static inline __u64 name(const type * k) \
+{ return(k->field >> offset) & ~(~0ULL << size); } static inline void SET_ ##name(type * k, __u64 v) \
+{ k->field &= ~(~(~0ULL << size) << offset); k->field |= (v & ~(~0ULL << size)) << offset; \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct bkey {
- __u64 high;
- __u64 low;
- __u64 ptr[];
+  __u64 high;
+  __u64 low;
+  __u64 ptr[];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define KEY_FIELD(name, field, offset, size)   BITMASK(name, struct bkey, field, offset, size)
-#define PTR_FIELD(name, offset, size)  static inline __u64 name(const struct bkey *k, unsigned i)  { return (k->ptr[i] >> offset) & ~(~0ULL << size); }    static inline void SET_##name(struct bkey *k, unsigned i, __u64 v)  {   k->ptr[i] &= ~(~(~0ULL << size) << offset);   k->ptr[i] |= (v & ~(~0ULL << size)) << offset;  }
+#define KEY_FIELD(name,field,offset,size) BITMASK(name, struct bkey, field, offset, size)
+#define PTR_FIELD(name,offset,size) static inline __u64 name(const struct bkey * k, unsigned i) \
+{ return(k->ptr[i] >> offset) & ~(~0ULL << size); } static inline void SET_ ##name(struct bkey * k, unsigned i, __u64 v) \
+{ k->ptr[i] &= ~(~(~0ULL << size) << offset); k->ptr[i] |= (v & ~(~0ULL << size)) << offset; \
+}
 #define KEY_SIZE_BITS 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_MAX_U64S 8
-#define KEY(inode, offset, size)  ((struct bkey) {   .high = (1ULL << 63) | ((__u64) (size) << 20) | (inode),   .low = (offset)  })
+#define KEY(inode,offset,size) \
+((struct bkey) {.high = (1ULL << 63) | ((__u64) (size) << 20) | (inode),.low = (offset) \
+})
 #define ZERO_KEY KEY(0, 0, 0)
 #define MAX_KEY_INODE (~(~0 << 20))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -43,11 +51,11 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTR_DEV_BITS 12
 #define PTR_CHECK_DEV ((1 << PTR_DEV_BITS) - 1)
-#define PTR(gen, offset, dev)   ((((__u64) dev) << 51) | ((__u64) offset) << 8 | gen)
-#define bkey_copy(_dest, _src) memcpy(_dest, _src, bkey_bytes(_src))
+#define PTR(gen,offset,dev) ((((__u64) dev) << 51) | ((__u64) offset) << 8 | gen)
+#define bkey_copy(_dest,_src) memcpy(_dest, _src, bkey_bytes(_src))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BKEY_PAD 8
-#define BKEY_PADDED(key)   union { struct bkey key; __u64 key ## _pad[BKEY_PAD]; }
+#define BKEY_PADDED(key) union { struct bkey key; __u64 key ##_pad[BKEY_PAD]; }
 #define BCACHE_SB_VERSION_CDEV 0
 #define BCACHE_SB_VERSION_BDEV 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -63,46 +71,46 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BDEV_DATA_START_DEFAULT 16
 struct cache_sb {
- __u64 csum;
- __u64 offset;
+  __u64 csum;
+  __u64 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 version;
- __u8 magic[16];
- __u8 uuid[16];
- union {
+  __u64 version;
+  __u8 magic[16];
+  __u8 uuid[16];
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 set_uuid[16];
- __u64 set_magic;
- };
- __u8 label[SB_LABEL_SIZE];
+    __u8 set_uuid[16];
+    __u64 set_magic;
+  };
+  __u8 label[SB_LABEL_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 flags;
- __u64 seq;
- __u64 pad[8];
- union {
+  __u64 flags;
+  __u64 seq;
+  __u64 pad[8];
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u64 nbuckets;
- __u16 block_size;
- __u16 bucket_size;
+    struct {
+      __u64 nbuckets;
+      __u16 block_size;
+      __u16 bucket_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 nr_in_set;
- __u16 nr_this_dev;
- };
- struct {
+      __u16 nr_in_set;
+      __u16 nr_this_dev;
+    };
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data_offset;
- };
- };
- __u32 last_mount;
+      __u64 data_offset;
+    };
+  };
+  __u32 last_mount;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 first_bucket;
- union {
- __u16 njournal_buckets;
- __u16 keys;
+  __u16 first_bucket;
+  union {
+    __u16 njournal_buckets;
+    __u16 keys;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- __u64 d[SB_JOURNAL_BUCKETS];
+  };
+  __u64 d[SB_JOURNAL_BUCKETS];
 };
 #define CACHE_REPLACEMENT_LRU 0U
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -127,83 +135,83 @@
 #define BCACHE_JSET_VERSION 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct jset {
- __u64 csum;
- __u64 magic;
- __u64 seq;
+  __u64 csum;
+  __u64 magic;
+  __u64 seq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 version;
- __u32 keys;
- __u64 last_seq;
- BKEY_PADDED(uuid_bucket);
+  __u32 version;
+  __u32 keys;
+  __u64 last_seq;
+  BKEY_PADDED(uuid_bucket);
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BKEY_PADDED(btree_root);
- __u16 btree_level;
- __u16 pad[3];
- __u64 prio_bucket[MAX_CACHES_PER_SET];
+  BKEY_PADDED(btree_root);
+  __u16 btree_level;
+  __u16 pad[3];
+  __u64 prio_bucket[MAX_CACHES_PER_SET];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct bkey start[0];
- __u64 d[0];
- };
+  union {
+    struct bkey start[0];
+    __u64 d[0];
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct prio_set {
- __u64 csum;
- __u64 magic;
+  __u64 csum;
+  __u64 magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 seq;
- __u32 version;
- __u32 pad;
- __u64 next_bucket;
+  __u64 seq;
+  __u32 version;
+  __u32 pad;
+  __u64 next_bucket;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct bucket_disk {
- __u16 prio;
- __u8 gen;
- } __attribute((packed)) data[];
+  struct bucket_disk {
+    __u16 prio;
+    __u8 gen;
+  } __attribute((packed)) data[];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct uuid_entry {
- union {
- struct {
+  union {
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 uuid[16];
- __u8 label[32];
- __u32 first_reg;
- __u32 last_reg;
+      __u8 uuid[16];
+      __u8 label[32];
+      __u32 first_reg;
+      __u32 last_reg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 invalidated;
- __u32 flags;
- __u64 sectors;
- };
+      __u32 invalidated;
+      __u32 flags;
+      __u64 sectors;
+    };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad[128];
- };
+    __u8 pad[128];
+  };
 };
 #define BCACHE_BSET_CSUM 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BCACHE_BSET_VERSION 1
 struct bset {
- __u64 csum;
- __u64 magic;
+  __u64 csum;
+  __u64 magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 seq;
- __u32 version;
- __u32 keys;
- union {
+  __u64 seq;
+  __u32 version;
+  __u32 keys;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct bkey start[0];
- __u64 d[0];
- };
+    struct bkey start[0];
+    __u64 d[0];
+  };
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uuid_entry_v0 {
- __u8 uuid[16];
- __u8 label[32];
- __u32 first_reg;
+  __u8 uuid[16];
+  __u8 label[32];
+  __u32 first_reg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 last_reg;
- __u32 invalidated;
- __u32 pad;
+  __u32 last_reg;
+  __u32 invalidated;
+  __u32 pad;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/bcm933xx_hcs.h b/libc/kernel/uapi/linux/bcm933xx_hcs.h
index 0742995..beaf827 100644
--- a/libc/kernel/uapi/linux/bcm933xx_hcs.h
+++ b/libc/kernel/uapi/linux/bcm933xx_hcs.h
@@ -21,19 +21,19 @@
 #include <linux/types.h>
 struct bcm_hcs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 magic;
- __u16 control;
- __u16 rev_maj;
- __u16 rev_min;
+  __u16 magic;
+  __u16 control;
+  __u16 rev_maj;
+  __u16 rev_min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 build_date;
- __u32 filelen;
- __u32 ldaddress;
- char filename[64];
+  __u32 build_date;
+  __u32 filelen;
+  __u32 ldaddress;
+  char filename[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 hcs;
- __u16 her_znaet_chto;
- __u32 crc;
+  __u16 hcs;
+  __u16 her_znaet_chto;
+  __u32 crc;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/bfs_fs.h b/libc/kernel/uapi/linux/bfs_fs.h
index 75fde77..e2e0615 100644
--- a/libc/kernel/uapi/linux/bfs_fs.h
+++ b/libc/kernel/uapi/linux/bfs_fs.h
@@ -21,7 +21,7 @@
 #include <linux/types.h>
 #define BFS_BSIZE_BITS 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BFS_BSIZE (1<<BFS_BSIZE_BITS)
+#define BFS_BSIZE (1 << BFS_BSIZE_BITS)
 #define BFS_MAGIC 0x1BADFACE
 #define BFS_ROOT_INO 2
 #define BFS_INODES_PER_BLOCK 8
@@ -29,55 +29,55 @@
 #define BFS_VDIR 2L
 #define BFS_VREG 1L
 struct bfs_inode {
- __le16 i_ino;
+  __le16 i_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 i_unused;
- __le32 i_sblock;
- __le32 i_eblock;
- __le32 i_eoffset;
+  __u16 i_unused;
+  __le32 i_sblock;
+  __le32 i_eblock;
+  __le32 i_eoffset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 i_vtype;
- __le32 i_mode;
- __le32 i_uid;
- __le32 i_gid;
+  __le32 i_vtype;
+  __le32 i_mode;
+  __le32 i_uid;
+  __le32 i_gid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 i_nlink;
- __le32 i_atime;
- __le32 i_mtime;
- __le32 i_ctime;
+  __le32 i_nlink;
+  __le32 i_atime;
+  __le32 i_mtime;
+  __le32 i_ctime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 i_padding[4];
+  __u32 i_padding[4];
 };
 #define BFS_NAMELEN 14
 #define BFS_DIRENT_SIZE 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BFS_DIRS_PER_BLOCK 32
 struct bfs_dirent {
- __le16 ino;
- char name[BFS_NAMELEN];
+  __le16 ino;
+  char name[BFS_NAMELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct bfs_super_block {
- __le32 s_magic;
- __le32 s_start;
+  __le32 s_magic;
+  __le32 s_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 s_end;
- __le32 s_from;
- __le32 s_to;
- __s32 s_bfrom;
+  __le32 s_end;
+  __le32 s_from;
+  __le32 s_to;
+  __s32 s_bfrom;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 s_bto;
- char s_fsname[6];
- char s_volume[6];
- __u32 s_padding[118];
+  __s32 s_bto;
+  char s_fsname[6];
+  char s_volume[6];
+  __u32 s_padding[118];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define BFS_OFF2INO(offset)   ((((offset) - BFS_BSIZE) / sizeof(struct bfs_inode)) + BFS_ROOT_INO)
-#define BFS_INO2OFF(ino)   ((__u32)(((ino) - BFS_ROOT_INO) * sizeof(struct bfs_inode)) + BFS_BSIZE)
-#define BFS_NZFILESIZE(ip)   ((le32_to_cpu((ip)->i_eoffset) + 1) - le32_to_cpu((ip)->i_sblock) * BFS_BSIZE)
+#define BFS_OFF2INO(offset) ((((offset) - BFS_BSIZE) / sizeof(struct bfs_inode)) + BFS_ROOT_INO)
+#define BFS_INO2OFF(ino) ((__u32) (((ino) - BFS_ROOT_INO) * sizeof(struct bfs_inode)) + BFS_BSIZE)
+#define BFS_NZFILESIZE(ip) ((le32_to_cpu((ip)->i_eoffset) + 1) - le32_to_cpu((ip)->i_sblock) * BFS_BSIZE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BFS_FILESIZE(ip)   ((ip)->i_sblock == 0 ? 0 : BFS_NZFILESIZE(ip))
-#define BFS_FILEBLOCKS(ip)   ((ip)->i_sblock == 0 ? 0 : (le32_to_cpu((ip)->i_eblock) + 1) - le32_to_cpu((ip)->i_sblock))
-#define BFS_UNCLEAN(bfs_sb, sb)   ((le32_to_cpu(bfs_sb->s_from) != -1) && (le32_to_cpu(bfs_sb->s_to) != -1) && !(sb->s_flags & MS_RDONLY))
+#define BFS_FILESIZE(ip) ((ip)->i_sblock == 0 ? 0 : BFS_NZFILESIZE(ip))
+#define BFS_FILEBLOCKS(ip) ((ip)->i_sblock == 0 ? 0 : (le32_to_cpu((ip)->i_eblock) + 1) - le32_to_cpu((ip)->i_sblock))
+#define BFS_UNCLEAN(bfs_sb,sb) ((le32_to_cpu(bfs_sb->s_from) != - 1) && (le32_to_cpu(bfs_sb->s_to) != - 1) && ! (sb->s_flags & MS_RDONLY))
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/binder.h b/libc/kernel/uapi/linux/binder.h
index 02101ab..af3cea9 100644
--- a/libc/kernel/uapi/linux/binder.h
+++ b/libc/kernel/uapi/linux/binder.h
@@ -19,21 +19,21 @@
 #ifndef _UAPI_LINUX_BINDER_H
 #define _UAPI_LINUX_BINDER_H
 #include <linux/ioctl.h>
-#define B_PACK_CHARS(c1, c2, c3, c4)   ((((c1)<<24)) | (((c2)<<16)) | (((c3)<<8)) | (c4))
+#define B_PACK_CHARS(c1,c2,c3,c4) ((((c1) << 24)) | (((c2) << 16)) | (((c3) << 8)) | (c4))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B_TYPE_LARGE 0x85
 enum {
- BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),
- BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),
+  BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),
+  BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
- BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
- BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
+  BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
+  BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
+  BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
- FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
+  FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
+  FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef BINDER_IPC_32BIT
@@ -46,28 +46,28 @@
 #endif
 struct flat_binder_object {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 flags;
- union {
- binder_uintptr_t binder;
+  __u32 type;
+  __u32 flags;
+  union {
+    binder_uintptr_t binder;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
- };
- binder_uintptr_t cookie;
+    __u32 handle;
+  };
+  binder_uintptr_t cookie;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct binder_write_read {
- binder_size_t write_size;
- binder_size_t write_consumed;
- binder_uintptr_t write_buffer;
+  binder_size_t write_size;
+  binder_size_t write_consumed;
+  binder_uintptr_t write_buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- binder_size_t read_size;
- binder_size_t read_consumed;
- binder_uintptr_t read_buffer;
+  binder_size_t read_size;
+  binder_size_t read_consumed;
+  binder_uintptr_t read_buffer;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct binder_version {
- __s32 protocol_version;
+  __s32 protocol_version;
 };
 #ifdef BINDER_IPC_32BIT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -86,105 +86,105 @@
 #define BINDER_VERSION _IOWR('b', 9, struct binder_version)
 enum transaction_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TF_ONE_WAY = 0x01,
- TF_ROOT_OBJECT = 0x04,
- TF_STATUS_CODE = 0x08,
- TF_ACCEPT_FDS = 0x10,
+  TF_ONE_WAY = 0x01,
+  TF_ROOT_OBJECT = 0x04,
+  TF_STATUS_CODE = 0x08,
+  TF_ACCEPT_FDS = 0x10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct binder_transaction_data {
- union {
- __u32 handle;
+  union {
+    __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- binder_uintptr_t ptr;
- } target;
- binder_uintptr_t cookie;
- __u32 code;
+    binder_uintptr_t ptr;
+  } target;
+  binder_uintptr_t cookie;
+  __u32 code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- pid_t sender_pid;
- uid_t sender_euid;
- binder_size_t data_size;
+  __u32 flags;
+  pid_t sender_pid;
+  uid_t sender_euid;
+  binder_size_t data_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- binder_size_t offsets_size;
- union {
- struct {
- binder_uintptr_t buffer;
+  binder_size_t offsets_size;
+  union {
+    struct {
+      binder_uintptr_t buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- binder_uintptr_t offsets;
- } ptr;
- __u8 buf[8];
- } data;
+      binder_uintptr_t offsets;
+    } ptr;
+    __u8 buf[8];
+  } data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct binder_ptr_cookie {
- binder_uintptr_t ptr;
- binder_uintptr_t cookie;
+  binder_uintptr_t ptr;
+  binder_uintptr_t cookie;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct binder_handle_cookie {
- __u32 handle;
- binder_uintptr_t cookie;
+  __u32 handle;
+  binder_uintptr_t cookie;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__((packed));
+} __packed;
 struct binder_pri_desc {
- __s32 priority;
- __u32 desc;
+  __s32 priority;
+  __u32 desc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct binder_pri_ptr_cookie {
- __s32 priority;
- binder_uintptr_t ptr;
+  __s32 priority;
+  binder_uintptr_t ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- binder_uintptr_t cookie;
+  binder_uintptr_t cookie;
 };
 enum binder_driver_return_protocol {
- BR_ERROR = _IOR('r', 0, __s32),
+  BR_ERROR = _IOR('r', 0, __s32),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BR_OK = _IO('r', 1),
- BR_TRANSACTION = _IOR('r', 2, struct binder_transaction_data),
- BR_REPLY = _IOR('r', 3, struct binder_transaction_data),
- BR_ACQUIRE_RESULT = _IOR('r', 4, __s32),
+  BR_OK = _IO('r', 1),
+  BR_TRANSACTION = _IOR('r', 2, struct binder_transaction_data),
+  BR_REPLY = _IOR('r', 3, struct binder_transaction_data),
+  BR_ACQUIRE_RESULT = _IOR('r', 4, __s32),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BR_DEAD_REPLY = _IO('r', 5),
- BR_TRANSACTION_COMPLETE = _IO('r', 6),
- BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie),
- BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie),
+  BR_DEAD_REPLY = _IO('r', 5),
+  BR_TRANSACTION_COMPLETE = _IO('r', 6),
+  BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie),
+  BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BR_RELEASE = _IOR('r', 9, struct binder_ptr_cookie),
- BR_DECREFS = _IOR('r', 10, struct binder_ptr_cookie),
- BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct binder_pri_ptr_cookie),
- BR_NOOP = _IO('r', 12),
+  BR_RELEASE = _IOR('r', 9, struct binder_ptr_cookie),
+  BR_DECREFS = _IOR('r', 10, struct binder_ptr_cookie),
+  BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct binder_pri_ptr_cookie),
+  BR_NOOP = _IO('r', 12),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BR_SPAWN_LOOPER = _IO('r', 13),
- BR_FINISHED = _IO('r', 14),
- BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t),
- BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t),
+  BR_SPAWN_LOOPER = _IO('r', 13),
+  BR_FINISHED = _IO('r', 14),
+  BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t),
+  BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BR_FAILED_REPLY = _IO('r', 17),
+  BR_FAILED_REPLY = _IO('r', 17),
 };
 enum binder_driver_command_protocol {
- BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data),
+  BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BC_REPLY = _IOW('c', 1, struct binder_transaction_data),
- BC_ACQUIRE_RESULT = _IOW('c', 2, __s32),
- BC_FREE_BUFFER = _IOW('c', 3, binder_uintptr_t),
- BC_INCREFS = _IOW('c', 4, __u32),
+  BC_REPLY = _IOW('c', 1, struct binder_transaction_data),
+  BC_ACQUIRE_RESULT = _IOW('c', 2, __s32),
+  BC_FREE_BUFFER = _IOW('c', 3, binder_uintptr_t),
+  BC_INCREFS = _IOW('c', 4, __u32),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BC_ACQUIRE = _IOW('c', 5, __u32),
- BC_RELEASE = _IOW('c', 6, __u32),
- BC_DECREFS = _IOW('c', 7, __u32),
- BC_INCREFS_DONE = _IOW('c', 8, struct binder_ptr_cookie),
+  BC_ACQUIRE = _IOW('c', 5, __u32),
+  BC_RELEASE = _IOW('c', 6, __u32),
+  BC_DECREFS = _IOW('c', 7, __u32),
+  BC_INCREFS_DONE = _IOW('c', 8, struct binder_ptr_cookie),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BC_ACQUIRE_DONE = _IOW('c', 9, struct binder_ptr_cookie),
- BC_ATTEMPT_ACQUIRE = _IOW('c', 10, struct binder_pri_desc),
- BC_REGISTER_LOOPER = _IO('c', 11),
- BC_ENTER_LOOPER = _IO('c', 12),
+  BC_ACQUIRE_DONE = _IOW('c', 9, struct binder_ptr_cookie),
+  BC_ATTEMPT_ACQUIRE = _IOW('c', 10, struct binder_pri_desc),
+  BC_REGISTER_LOOPER = _IO('c', 11),
+  BC_ENTER_LOOPER = _IO('c', 12),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BC_EXIT_LOOPER = _IO('c', 13),
- BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_handle_cookie),
- BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_handle_cookie),
- BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t),
+  BC_EXIT_LOOPER = _IO('c', 13),
+  BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_handle_cookie),
+  BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_handle_cookie),
+  BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/blkpg.h b/libc/kernel/uapi/linux/blkpg.h
index 8b80809..35b9730 100644
--- a/libc/kernel/uapi/linux/blkpg.h
+++ b/libc/kernel/uapi/linux/blkpg.h
@@ -21,13 +21,13 @@
 #include <linux/compiler.h>
 #include <linux/ioctl.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKPG _IO(0x12,105)
+#define BLKPG _IO(0x12, 105)
 struct blkpg_ioctl_arg {
- int op;
- int flags;
+  int op;
+  int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int datalen;
- void __user *data;
+  int datalen;
+  void __user * data;
 };
 #define BLKPG_ADD_PARTITION 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -37,12 +37,12 @@
 #define BLKPG_VOLNAMELTH 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct blkpg_partition {
- long long start;
- long long length;
- int pno;
+  long long start;
+  long long length;
+  int pno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char devname[BLKPG_DEVNAMELTH];
- char volname[BLKPG_VOLNAMELTH];
+  char devname[BLKPG_DEVNAMELTH];
+  char volname[BLKPG_VOLNAMELTH];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/blktrace_api.h b/libc/kernel/uapi/linux/blktrace_api.h
index d8417bc..aacee15 100644
--- a/libc/kernel/uapi/linux/blktrace_api.h
+++ b/libc/kernel/uapi/linux/blktrace_api.h
@@ -21,60 +21,60 @@
 #include <linux/types.h>
 enum blktrace_cat {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BLK_TC_READ = 1 << 0,
- BLK_TC_WRITE = 1 << 1,
- BLK_TC_FLUSH = 1 << 2,
- BLK_TC_SYNC = 1 << 3,
+  BLK_TC_READ = 1 << 0,
+  BLK_TC_WRITE = 1 << 1,
+  BLK_TC_FLUSH = 1 << 2,
+  BLK_TC_SYNC = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BLK_TC_SYNCIO = BLK_TC_SYNC,
- BLK_TC_QUEUE = 1 << 4,
- BLK_TC_REQUEUE = 1 << 5,
- BLK_TC_ISSUE = 1 << 6,
+  BLK_TC_SYNCIO = BLK_TC_SYNC,
+  BLK_TC_QUEUE = 1 << 4,
+  BLK_TC_REQUEUE = 1 << 5,
+  BLK_TC_ISSUE = 1 << 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BLK_TC_COMPLETE = 1 << 7,
- BLK_TC_FS = 1 << 8,
- BLK_TC_PC = 1 << 9,
- BLK_TC_NOTIFY = 1 << 10,
+  BLK_TC_COMPLETE = 1 << 7,
+  BLK_TC_FS = 1 << 8,
+  BLK_TC_PC = 1 << 9,
+  BLK_TC_NOTIFY = 1 << 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BLK_TC_AHEAD = 1 << 11,
- BLK_TC_META = 1 << 12,
- BLK_TC_DISCARD = 1 << 13,
- BLK_TC_DRV_DATA = 1 << 14,
+  BLK_TC_AHEAD = 1 << 11,
+  BLK_TC_META = 1 << 12,
+  BLK_TC_DISCARD = 1 << 13,
+  BLK_TC_DRV_DATA = 1 << 14,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BLK_TC_FUA = 1 << 15,
- BLK_TC_END = 1 << 15,
+  BLK_TC_FUA = 1 << 15,
+  BLK_TC_END = 1 << 15,
 };
 #define BLK_TC_SHIFT (16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLK_TC_ACT(act) ((act) << BLK_TC_SHIFT)
 enum blktrace_act {
- __BLK_TA_QUEUE = 1,
- __BLK_TA_BACKMERGE,
+  __BLK_TA_QUEUE = 1,
+  __BLK_TA_BACKMERGE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __BLK_TA_FRONTMERGE,
- __BLK_TA_GETRQ,
- __BLK_TA_SLEEPRQ,
- __BLK_TA_REQUEUE,
+  __BLK_TA_FRONTMERGE,
+  __BLK_TA_GETRQ,
+  __BLK_TA_SLEEPRQ,
+  __BLK_TA_REQUEUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __BLK_TA_ISSUE,
- __BLK_TA_COMPLETE,
- __BLK_TA_PLUG,
- __BLK_TA_UNPLUG_IO,
+  __BLK_TA_ISSUE,
+  __BLK_TA_COMPLETE,
+  __BLK_TA_PLUG,
+  __BLK_TA_UNPLUG_IO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __BLK_TA_UNPLUG_TIMER,
- __BLK_TA_INSERT,
- __BLK_TA_SPLIT,
- __BLK_TA_BOUNCE,
+  __BLK_TA_UNPLUG_TIMER,
+  __BLK_TA_INSERT,
+  __BLK_TA_SPLIT,
+  __BLK_TA_BOUNCE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __BLK_TA_REMAP,
- __BLK_TA_ABORT,
- __BLK_TA_DRV_DATA,
+  __BLK_TA_REMAP,
+  __BLK_TA_ABORT,
+  __BLK_TA_DRV_DATA,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum blktrace_notify {
- __BLK_TN_PROCESS = 0,
- __BLK_TN_TIMESTAMP,
- __BLK_TN_MESSAGE,
+  __BLK_TN_PROCESS = 0,
+  __BLK_TN_TIMESTAMP,
+  __BLK_TN_MESSAGE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define BLK_TA_QUEUE (__BLK_TA_QUEUE | BLK_TC_ACT(BLK_TC_QUEUE))
@@ -86,7 +86,7 @@
 #define BLK_TA_REQUEUE (__BLK_TA_REQUEUE | BLK_TC_ACT(BLK_TC_REQUEUE))
 #define BLK_TA_ISSUE (__BLK_TA_ISSUE | BLK_TC_ACT(BLK_TC_ISSUE))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLK_TA_COMPLETE (__BLK_TA_COMPLETE| BLK_TC_ACT(BLK_TC_COMPLETE))
+#define BLK_TA_COMPLETE (__BLK_TA_COMPLETE | BLK_TC_ACT(BLK_TC_COMPLETE))
 #define BLK_TA_PLUG (__BLK_TA_PLUG | BLK_TC_ACT(BLK_TC_QUEUE))
 #define BLK_TA_UNPLUG_IO (__BLK_TA_UNPLUG_IO | BLK_TC_ACT(BLK_TC_QUEUE))
 #define BLK_TA_UNPLUG_TIMER (__BLK_TA_UNPLUG_TIMER | BLK_TC_ACT(BLK_TC_QUEUE))
@@ -106,44 +106,44 @@
 #define BLK_IO_TRACE_VERSION 0x07
 struct blk_io_trace {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 magic;
- __u32 sequence;
- __u64 time;
- __u64 sector;
+  __u32 magic;
+  __u32 sequence;
+  __u64 time;
+  __u64 sector;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bytes;
- __u32 action;
- __u32 pid;
- __u32 device;
+  __u32 bytes;
+  __u32 action;
+  __u32 pid;
+  __u32 device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cpu;
- __u16 error;
- __u16 pdu_len;
+  __u32 cpu;
+  __u16 error;
+  __u16 pdu_len;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct blk_io_trace_remap {
- __be32 device_from;
- __be32 device_to;
- __be64 sector_from;
+  __be32 device_from;
+  __be32 device_to;
+  __be64 sector_from;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- Blktrace_setup = 1,
- Blktrace_running,
+  Blktrace_setup = 1,
+  Blktrace_running,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Blktrace_stopped,
+  Blktrace_stopped,
 };
 #define BLKTRACE_BDEV_SIZE 32
 struct blk_user_trace_setup {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[BLKTRACE_BDEV_SIZE];
- __u16 act_mask;
- __u32 buf_size;
- __u32 buf_nr;
+  char name[BLKTRACE_BDEV_SIZE];
+  __u16 act_mask;
+  __u32 buf_size;
+  __u32 buf_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 start_lba;
- __u64 end_lba;
- __u32 pid;
+  __u64 start_lba;
+  __u64 end_lba;
+  __u32 pid;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
new file mode 100644
index 0000000..cc9f6d6
--- /dev/null
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -0,0 +1,124 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BPF_H__
+#define _UAPI__LINUX_BPF_H__
+#include <linux/types.h>
+#include <linux/bpf_common.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_ALU64 0x07
+#define BPF_DW 0x18
+#define BPF_XADD 0xc0
+#define BPF_MOV 0xb0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_ARSH 0xc0
+#define BPF_END 0xd0
+#define BPF_TO_LE 0x00
+#define BPF_TO_BE 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_FROM_LE BPF_TO_LE
+#define BPF_FROM_BE BPF_TO_BE
+#define BPF_JNE 0x50
+#define BPF_JSGT 0x60
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_JSGE 0x70
+#define BPF_CALL 0x80
+#define BPF_EXIT 0x90
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  BPF_REG_0 = 0,
+  BPF_REG_1,
+  BPF_REG_2,
+  BPF_REG_3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  BPF_REG_4,
+  BPF_REG_5,
+  BPF_REG_6,
+  BPF_REG_7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  BPF_REG_8,
+  BPF_REG_9,
+  BPF_REG_10,
+  __MAX_BPF_REG,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define MAX_BPF_REG __MAX_BPF_REG
+struct bpf_insn {
+  __u8 code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 dst_reg : 4;
+  __u8 src_reg : 4;
+  __s16 off;
+  __s32 imm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum bpf_cmd {
+  BPF_MAP_CREATE,
+  BPF_MAP_LOOKUP_ELEM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  BPF_MAP_UPDATE_ELEM,
+  BPF_MAP_DELETE_ELEM,
+  BPF_MAP_GET_NEXT_KEY,
+  BPF_PROG_LOAD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum bpf_map_type {
+  BPF_MAP_TYPE_UNSPEC,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum bpf_prog_type {
+  BPF_PROG_TYPE_UNSPEC,
+};
+union bpf_attr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct {
+    __u32 map_type;
+    __u32 key_size;
+    __u32 value_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u32 max_entries;
+  };
+  struct {
+    __u32 map_fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __aligned_u64 key;
+    union {
+      __aligned_u64 value;
+      __aligned_u64 next_key;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    };
+  };
+  struct {
+    __u32 prog_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u32 insn_cnt;
+    __aligned_u64 insns;
+    __aligned_u64 license;
+    __u32 log_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u32 log_size;
+    __aligned_u64 log_buf;
+  };
+} __attribute__((aligned(8)));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum bpf_func_id {
+  BPF_FUNC_unspec,
+  __BPF_FUNC_MAX_ID,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/bpf_common.h b/libc/kernel/uapi/linux/bpf_common.h
new file mode 100644
index 0000000..6315aae
--- /dev/null
+++ b/libc/kernel/uapi/linux/bpf_common.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BPF_COMMON_H__
+#define _UAPI__LINUX_BPF_COMMON_H__
+#define BPF_CLASS(code) ((code) & 0x07)
+#define BPF_LD 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_LDX 0x01
+#define BPF_ST 0x02
+#define BPF_STX 0x03
+#define BPF_ALU 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_JMP 0x05
+#define BPF_RET 0x06
+#define BPF_MISC 0x07
+#define BPF_SIZE(code) ((code) & 0x18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_W 0x00
+#define BPF_H 0x08
+#define BPF_B 0x10
+#define BPF_MODE(code) ((code) & 0xe0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_IMM 0x00
+#define BPF_ABS 0x20
+#define BPF_IND 0x40
+#define BPF_MEM 0x60
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_LEN 0x80
+#define BPF_MSH 0xa0
+#define BPF_OP(code) ((code) & 0xf0)
+#define BPF_ADD 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_SUB 0x10
+#define BPF_MUL 0x20
+#define BPF_DIV 0x30
+#define BPF_OR 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_AND 0x50
+#define BPF_LSH 0x60
+#define BPF_RSH 0x70
+#define BPF_NEG 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_MOD 0x90
+#define BPF_XOR 0xa0
+#define BPF_JA 0x00
+#define BPF_JEQ 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_JGT 0x20
+#define BPF_JGE 0x30
+#define BPF_JSET 0x40
+#define BPF_SRC(code) ((code) & 0x08)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_K 0x00
+#define BPF_X 0x08
+#ifndef BPF_MAXINSNS
+#define BPF_MAXINSNS 4096
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/libc/kernel/uapi/linux/bpqether.h b/libc/kernel/uapi/linux/bpqether.h
index d1c65a8..09c00d0 100644
--- a/libc/kernel/uapi/linux/bpqether.h
+++ b/libc/kernel/uapi/linux/bpqether.h
@@ -22,28 +22,28 @@
 #include <linux/if_ether.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-#define SIOCSBPQETHOPT (SIOCDEVPRIVATE+0)
-#define SIOCSBPQETHADDR (SIOCDEVPRIVATE+1)
+#define SIOCSBPQETHOPT (SIOCDEVPRIVATE + 0)
+#define SIOCSBPQETHADDR (SIOCDEVPRIVATE + 1)
 struct bpq_ethaddr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char destination[ETH_ALEN];
- unsigned char accept[ETH_ALEN];
+  unsigned char destination[ETH_ALEN];
+  unsigned char accept[ETH_ALEN];
 };
 #define SIOCGBPQETHPARAM 0x5000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSBPQETHPARAM 0x5001
 struct bpq_req {
- int cmd;
- int speed;
+  int cmd;
+  int speed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int clockmode;
- int txdelay;
- unsigned char persist;
- int slotime;
+  int clockmode;
+  int txdelay;
+  unsigned char persist;
+  int slotime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int squeldelay;
- int dmachan;
- int irq;
+  int squeldelay;
+  int dmachan;
+  int irq;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/bsg.h b/libc/kernel/uapi/linux/bsg.h
index a4df52a..80cc87c 100644
--- a/libc/kernel/uapi/linux/bsg.h
+++ b/libc/kernel/uapi/linux/bsg.h
@@ -26,48 +26,49 @@
 #define BSG_SUB_PROTOCOL_SCSI_TRANSPORT 2
 #define BSG_FLAG_Q_AT_TAIL 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BSG_FLAG_Q_AT_HEAD 0x20
 struct sg_io_v4 {
- __s32 guard;
- __u32 protocol;
- __u32 subprotocol;
+  __s32 guard;
+  __u32 protocol;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 request_len;
- __u64 request;
- __u64 request_tag;
- __u32 request_attr;
+  __u32 subprotocol;
+  __u32 request_len;
+  __u64 request;
+  __u64 request_tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 request_priority;
- __u32 request_extra;
- __u32 max_response_len;
- __u64 response;
+  __u32 request_attr;
+  __u32 request_priority;
+  __u32 request_extra;
+  __u32 max_response_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dout_iovec_count;
- __u32 dout_xfer_len;
- __u32 din_iovec_count;
- __u32 din_xfer_len;
+  __u64 response;
+  __u32 dout_iovec_count;
+  __u32 dout_xfer_len;
+  __u32 din_iovec_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 dout_xferp;
- __u64 din_xferp;
- __u32 timeout;
- __u32 flags;
+  __u32 din_xfer_len;
+  __u64 dout_xferp;
+  __u64 din_xferp;
+  __u32 timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 usr_ptr;
- __u32 spare_in;
- __u32 driver_status;
- __u32 transport_status;
+  __u32 flags;
+  __u64 usr_ptr;
+  __u32 spare_in;
+  __u32 driver_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 device_status;
- __u32 retry_delay;
- __u32 info;
- __u32 duration;
+  __u32 transport_status;
+  __u32 device_status;
+  __u32 retry_delay;
+  __u32 info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 response_len;
- __s32 din_resid;
- __s32 dout_resid;
- __u64 generated_tag;
+  __u32 duration;
+  __u32 response_len;
+  __s32 din_resid;
+  __s32 dout_resid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spare_out;
- __u32 padding;
+  __u64 generated_tag;
+  __u32 spare_out;
+  __u32 padding;
 };
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 11f950f..8047f6a 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -26,8 +26,8 @@
 #define BTRFS_PATH_NAME_MAX 4087
 struct btrfs_ioctl_vol_args {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s64 fd;
- char name[BTRFS_PATH_NAME_MAX + 1];
+  __s64 fd;
+  char name[BTRFS_PATH_NAME_MAX + 1];
 };
 #define BTRFS_DEVICE_PATH_NAME_MAX 1024
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -37,453 +37,468 @@
 #define BTRFS_FSID_SIZE 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_UUID_SIZE 16
+#define BTRFS_UUID_UNPARSED_SIZE 37
 #define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0)
 struct btrfs_qgroup_limit {
- __u64 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 max_rfer;
- __u64 max_excl;
- __u64 rsv_rfer;
- __u64 rsv_excl;
+  __u64 flags;
+  __u64 max_rfer;
+  __u64 max_excl;
+  __u64 rsv_rfer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 rsv_excl;
 };
 struct btrfs_qgroup_inherit {
- __u64 flags;
- __u64 num_qgroups;
+  __u64 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 num_ref_copies;
- __u64 num_excl_copies;
- struct btrfs_qgroup_limit lim;
- __u64 qgroups[0];
+  __u64 num_qgroups;
+  __u64 num_ref_copies;
+  __u64 num_excl_copies;
+  struct btrfs_qgroup_limit lim;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 qgroups[0];
 };
 struct btrfs_ioctl_qgroup_limit_args {
- __u64 qgroupid;
- struct btrfs_qgroup_limit lim;
+  __u64 qgroupid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct btrfs_qgroup_limit lim;
 };
 #define BTRFS_SUBVOL_NAME_MAX 4039
 struct btrfs_ioctl_vol_args_v2 {
- __s64 fd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 transid;
- __u64 flags;
- union {
- struct {
+  __s64 fd;
+  __u64 transid;
+  __u64 flags;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 size;
- struct btrfs_qgroup_inherit __user *qgroup_inherit;
- };
- __u64 unused[4];
+    struct {
+      __u64 size;
+      struct btrfs_qgroup_inherit __user * qgroup_inherit;
+    };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- char name[BTRFS_SUBVOL_NAME_MAX + 1];
+    __u64 unused[4];
+  };
+  char name[BTRFS_SUBVOL_NAME_MAX + 1];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_scrub_progress {
+  __u64 data_extents_scrubbed;
+  __u64 tree_extents_scrubbed;
+  __u64 data_bytes_scrubbed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data_extents_scrubbed;
- __u64 tree_extents_scrubbed;
- __u64 data_bytes_scrubbed;
- __u64 tree_bytes_scrubbed;
+  __u64 tree_bytes_scrubbed;
+  __u64 read_errors;
+  __u64 csum_errors;
+  __u64 verify_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 read_errors;
- __u64 csum_errors;
- __u64 verify_errors;
- __u64 no_csum;
+  __u64 no_csum;
+  __u64 csum_discards;
+  __u64 super_errors;
+  __u64 malloc_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 csum_discards;
- __u64 super_errors;
- __u64 malloc_errors;
- __u64 uncorrectable_errors;
+  __u64 uncorrectable_errors;
+  __u64 corrected_errors;
+  __u64 last_physical;
+  __u64 unverified_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 corrected_errors;
- __u64 last_physical;
- __u64 unverified_errors;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_SCRUB_READONLY 1
 struct btrfs_ioctl_scrub_args {
- __u64 devid;
- __u64 start;
+  __u64 devid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 end;
- __u64 flags;
- struct btrfs_scrub_progress progress;
- __u64 unused[(1024-32-sizeof(struct btrfs_scrub_progress))/8];
+  __u64 start;
+  __u64 end;
+  __u64 flags;
+  struct btrfs_scrub_progress progress;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 unused[(1024 - 32 - sizeof(struct btrfs_scrub_progress)) / 8];
 };
 #define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0
 #define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_dev_replace_start_params {
+  __u64 srcdevid;
+  __u64 cont_reading_from_srcdev_mode;
+  __u8 srcdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 srcdevid;
- __u64 cont_reading_from_srcdev_mode;
- __u8 srcdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1];
- __u8 tgtdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 tgtdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1];
 };
 #define BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED 0
 #define BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED 1
-#define BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED 2
 #define BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED 3
 #define BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED 4
 struct btrfs_ioctl_dev_replace_status_params {
- __u64 replace_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 progress_1000;
- __u64 time_started;
- __u64 time_stopped;
- __u64 num_write_errors;
+  __u64 replace_state;
+  __u64 progress_1000;
+  __u64 time_started;
+  __u64 time_stopped;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 num_uncorrectable_read_errors;
+  __u64 num_write_errors;
+  __u64 num_uncorrectable_read_errors;
 };
 #define BTRFS_IOCTL_DEV_REPLACE_CMD_START 0
-#define BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS 1
 #define BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL 2
 #define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0
 #define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_dev_replace_args {
- __u64 cmd;
- __u64 result;
- union {
+  __u64 cmd;
+  __u64 result;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct btrfs_ioctl_dev_replace_start_params start;
- struct btrfs_ioctl_dev_replace_status_params status;
- };
- __u64 spare[64];
+  union {
+    struct btrfs_ioctl_dev_replace_start_params start;
+    struct btrfs_ioctl_dev_replace_status_params status;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 spare[64];
 };
 struct btrfs_ioctl_dev_info_args {
- __u64 devid;
- __u8 uuid[BTRFS_UUID_SIZE];
+  __u64 devid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 bytes_used;
- __u64 total_bytes;
- __u64 unused[379];
- __u8 path[BTRFS_DEVICE_PATH_NAME_MAX];
+  __u8 uuid[BTRFS_UUID_SIZE];
+  __u64 bytes_used;
+  __u64 total_bytes;
+  __u64 unused[379];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 path[BTRFS_DEVICE_PATH_NAME_MAX];
 };
 struct btrfs_ioctl_fs_info_args {
- __u64 max_id;
- __u64 num_devices;
+  __u64 max_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fsid[BTRFS_FSID_SIZE];
- __u64 reserved[124];
+  __u64 num_devices;
+  __u8 fsid[BTRFS_FSID_SIZE];
+  __u32 nodesize;
+  __u32 sectorsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 clone_alignment;
+  __u32 reserved32;
+  __u64 reserved[122];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_feature_flags {
+  __u64 compat_flags;
+  __u64 compat_ro_flags;
+  __u64 incompat_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 compat_flags;
- __u64 compat_ro_flags;
- __u64 incompat_flags;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_BALANCE_CTL_PAUSE 1
 #define BTRFS_BALANCE_CTL_CANCEL 2
 struct btrfs_balance_args {
- __u64 profiles;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 usage;
- __u64 devid;
- __u64 pstart;
- __u64 pend;
+  __u64 profiles;
+  __u64 usage;
+  __u64 devid;
+  __u64 pstart;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 vstart;
- __u64 vend;
- __u64 target;
- __u64 flags;
+  __u64 pend;
+  __u64 vstart;
+  __u64 vend;
+  __u64 target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 unused[8];
-} __attribute__ ((__packed__));
+  __u64 flags;
+  __u64 limit;
+  __u64 unused[7];
+} __attribute__((__packed__));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_balance_progress {
- __u64 expected;
+  __u64 expected;
+  __u64 considered;
+  __u64 completed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 considered;
- __u64 completed;
 };
 #define BTRFS_BALANCE_STATE_RUNNING (1ULL << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_BALANCE_STATE_PAUSE_REQ (1ULL << 1)
 #define BTRFS_BALANCE_STATE_CANCEL_REQ (1ULL << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_balance_args {
- __u64 flags;
+  __u64 flags;
+  __u64 state;
+  struct btrfs_balance_args data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 state;
- struct btrfs_balance_args data;
- struct btrfs_balance_args meta;
- struct btrfs_balance_args sys;
+  struct btrfs_balance_args meta;
+  struct btrfs_balance_args sys;
+  struct btrfs_balance_progress stat;
+  __u64 unused[72];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct btrfs_balance_progress stat;
- __u64 unused[72];
 };
 #define BTRFS_INO_LOOKUP_PATH_MAX 4080
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_ino_lookup_args {
- __u64 treeid;
- __u64 objectid;
- char name[BTRFS_INO_LOOKUP_PATH_MAX];
+  __u64 treeid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 objectid;
+  char name[BTRFS_INO_LOOKUP_PATH_MAX];
 };
 struct btrfs_ioctl_search_key {
- __u64 tree_id;
- __u64 min_objectid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 max_objectid;
- __u64 min_offset;
- __u64 max_offset;
- __u64 min_transid;
+  __u64 tree_id;
+  __u64 min_objectid;
+  __u64 max_objectid;
+  __u64 min_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 max_transid;
- __u32 min_type;
- __u32 max_type;
- __u32 nr_items;
+  __u64 max_offset;
+  __u64 min_transid;
+  __u64 max_transid;
+  __u32 min_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 unused;
- __u64 unused1;
- __u64 unused2;
- __u64 unused3;
+  __u32 max_type;
+  __u32 nr_items;
+  __u32 unused;
+  __u64 unused1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 unused4;
+  __u64 unused2;
+  __u64 unused3;
+  __u64 unused4;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_search_header {
- __u64 transid;
+  __u64 transid;
+  __u64 objectid;
+  __u64 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 objectid;
- __u64 offset;
- __u32 type;
- __u32 len;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 type;
+  __u32 len;
 };
 #define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key))
-struct btrfs_ioctl_search_args {
- struct btrfs_ioctl_search_key key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
+struct btrfs_ioctl_search_args {
+  struct btrfs_ioctl_search_key key;
+  char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct btrfs_ioctl_search_args_v2 {
+  struct btrfs_ioctl_search_key key;
+  __u64 buf_size;
+  __u64 buf[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct btrfs_ioctl_clone_range_args {
- __s64 src_fd;
+  __s64 src_fd;
+  __u64 src_offset, src_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 src_offset, src_length;
- __u64 dest_offset;
+  __u64 dest_offset;
 };
 #define BTRFS_DEFRAG_RANGE_COMPRESS 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_DEFRAG_RANGE_START_IO 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_SAME_DATA_DIFFERS 1
 struct btrfs_ioctl_same_extent_info {
- __s64 fd;
+  __s64 fd;
+  __u64 logical_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 logical_offset;
- __u64 bytes_deduped;
- __s32 status;
- __u32 reserved;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 bytes_deduped;
+  __s32 status;
+  __u32 reserved;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_same_args {
- __u64 logical_offset;
- __u64 length;
+  __u64 logical_offset;
+  __u64 length;
+  __u16 dest_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 dest_count;
- __u16 reserved1;
- __u32 reserved2;
- struct btrfs_ioctl_same_extent_info info[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 reserved1;
+  __u32 reserved2;
+  struct btrfs_ioctl_same_extent_info info[0];
 };
-struct btrfs_ioctl_space_info {
- __u64 flags;
- __u64 total_bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 used_bytes;
+struct btrfs_ioctl_space_info {
+  __u64 flags;
+  __u64 total_bytes;
+  __u64 used_bytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct btrfs_ioctl_space_args {
- __u64 space_slots;
+  __u64 space_slots;
+  __u64 total_spaces;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 total_spaces;
- struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[0];
 };
 struct btrfs_data_container {
+  __u32 bytes_left;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bytes_left;
- __u32 bytes_missing;
- __u32 elem_cnt;
- __u32 elem_missed;
+  __u32 bytes_missing;
+  __u32 elem_cnt;
+  __u32 elem_missed;
+  __u64 val[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 val[0];
 };
 struct btrfs_ioctl_ino_path_args {
- __u64 inum;
+  __u64 inum;
+  __u64 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 size;
- __u64 reserved[4];
- __u64 fspath;
+  __u64 reserved[4];
+  __u64 fspath;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_logical_ino_args {
- __u64 logical;
- __u64 size;
- __u64 reserved[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 inodes;
+  __u64 logical;
+  __u64 size;
+  __u64 reserved[4];
+  __u64 inodes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum btrfs_dev_stat_values {
- BTRFS_DEV_STAT_WRITE_ERRS,
+  BTRFS_DEV_STAT_WRITE_ERRS,
+  BTRFS_DEV_STAT_READ_ERRS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BTRFS_DEV_STAT_READ_ERRS,
- BTRFS_DEV_STAT_FLUSH_ERRS,
- BTRFS_DEV_STAT_CORRUPTION_ERRS,
- BTRFS_DEV_STAT_GENERATION_ERRS,
+  BTRFS_DEV_STAT_FLUSH_ERRS,
+  BTRFS_DEV_STAT_CORRUPTION_ERRS,
+  BTRFS_DEV_STAT_GENERATION_ERRS,
+  BTRFS_DEV_STAT_VALUES_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BTRFS_DEV_STAT_VALUES_MAX
 };
 #define BTRFS_DEV_STATS_RESET (1ULL << 0)
 struct btrfs_ioctl_get_dev_stats {
+  __u64 devid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 devid;
- __u64 nr_items;
- __u64 flags;
- __u64 values[BTRFS_DEV_STAT_VALUES_MAX];
+  __u64 nr_items;
+  __u64 flags;
+  __u64 values[BTRFS_DEV_STAT_VALUES_MAX];
+  __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX];
 };
 #define BTRFS_QUOTA_CTL_ENABLE 1
 #define BTRFS_QUOTA_CTL_DISABLE 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct btrfs_ioctl_quota_ctl_args {
- __u64 cmd;
- __u64 status;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 cmd;
+  __u64 status;
 };
-struct btrfs_ioctl_quota_rescan_args {
- __u64 flags;
- __u64 progress;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved[6];
+struct btrfs_ioctl_quota_rescan_args {
+  __u64 flags;
+  __u64 progress;
+  __u64 reserved[6];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct btrfs_ioctl_qgroup_assign_args {
- __u64 assign;
+  __u64 assign;
+  __u64 src;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 src;
- __u64 dst;
+  __u64 dst;
 };
 struct btrfs_ioctl_qgroup_create_args {
+  __u64 create;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 create;
- __u64 qgroupid;
+  __u64 qgroupid;
 };
 struct btrfs_ioctl_timespec {
+  __u64 sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sec;
- __u32 nsec;
+  __u32 nsec;
 };
 struct btrfs_ioctl_received_subvol_args {
+  char uuid[BTRFS_UUID_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char uuid[BTRFS_UUID_SIZE];
- __u64 stransid;
- __u64 rtransid;
- struct btrfs_ioctl_timespec stime;
+  __u64 stransid;
+  __u64 rtransid;
+  struct btrfs_ioctl_timespec stime;
+  struct btrfs_ioctl_timespec rtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct btrfs_ioctl_timespec rtime;
- __u64 flags;
- __u64 reserved[16];
+  __u64 flags;
+  __u64 reserved[16];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_SEND_FLAG_NO_FILE_DATA 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
-#define BTRFS_SEND_FLAG_MASK   (BTRFS_SEND_FLAG_NO_FILE_DATA |   BTRFS_SEND_FLAG_OMIT_STREAM_HEADER |   BTRFS_SEND_FLAG_OMIT_END_CMD)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD)
 struct btrfs_ioctl_send_args {
- __s64 send_fd;
- __u64 clone_sources_count;
- __u64 __user *clone_sources;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 parent_root;
- __u64 flags;
- __u64 reserved[4];
+  __s64 send_fd;
+  __u64 clone_sources_count;
+  __u64 __user * clone_sources;
+  __u64 parent_root;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 flags;
+  __u64 reserved[4];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum btrfs_err_code {
- notused,
- BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET,
- BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET,
- BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET,
- BTRFS_ERROR_DEV_TGT_REPLACE,
- BTRFS_ERROR_DEV_MISSING_NOT_FOUND,
+  notused,
+  BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BTRFS_ERROR_DEV_ONLY_WRITABLE,
- BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS
+  BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_TGT_REPLACE,
+  BTRFS_ERROR_DEV_MISSING_NOT_FOUND,
+  BTRFS_ERROR_DEV_ONLY_WRITABLE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS
 };
-#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1,   struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2,   struct btrfs_ioctl_vol_args)
-#define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3,   struct btrfs_ioctl_vol_args)
-#define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4,   struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_TRANS_START _IO(BTRFS_IOCTL_MAGIC, 6)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_IOC_TRANS_END _IO(BTRFS_IOCTL_MAGIC, 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8)
 #define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int)
-#define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10,   struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_RM_DEV _IOW(BTRFS_IOCTL_MAGIC, 11, struct btrfs_ioctl_vol_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_RM_DEV _IOW(BTRFS_IOCTL_MAGIC, 11,   struct btrfs_ioctl_vol_args)
-#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12,   struct btrfs_ioctl_vol_args)
-#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13,   struct btrfs_ioctl_clone_range_args)
-#define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14,   struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, struct btrfs_ioctl_clone_range_args)
+#define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15, struct btrfs_ioctl_vol_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15,   struct btrfs_ioctl_vol_args)
-#define BTRFS_IOC_DEFRAG_RANGE _IOW(BTRFS_IOCTL_MAGIC, 16,   struct btrfs_ioctl_defrag_range_args)
-#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17,   struct btrfs_ioctl_search_args)
-#define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18,   struct btrfs_ioctl_ino_lookup_args)
+#define BTRFS_IOC_DEFRAG_RANGE _IOW(BTRFS_IOCTL_MAGIC, 16, struct btrfs_ioctl_defrag_range_args)
+#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, struct btrfs_ioctl_search_args)
+#define BTRFS_IOC_TREE_SEARCH_V2 _IOWR(BTRFS_IOCTL_MAGIC, 17, struct btrfs_ioctl_search_args_v2)
+#define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18, struct btrfs_ioctl_ino_lookup_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, __u64)
-#define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20,   struct btrfs_ioctl_space_args)
+#define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, struct btrfs_ioctl_space_args)
 #define BTRFS_IOC_START_SYNC _IOR(BTRFS_IOCTL_MAGIC, 24, __u64)
 #define BTRFS_IOC_WAIT_SYNC _IOW(BTRFS_IOCTL_MAGIC, 22, __u64)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23,   struct btrfs_ioctl_vol_args_v2)
-#define BTRFS_IOC_SUBVOL_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 24,   struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_SUBVOL_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2)
 #define BTRFS_IOC_SUBVOL_GETFLAGS _IOR(BTRFS_IOCTL_MAGIC, 25, __u64)
 #define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_SCRUB _IOWR(BTRFS_IOCTL_MAGIC, 27,   struct btrfs_ioctl_scrub_args)
+#define BTRFS_IOC_SCRUB _IOWR(BTRFS_IOCTL_MAGIC, 27, struct btrfs_ioctl_scrub_args)
 #define BTRFS_IOC_SCRUB_CANCEL _IO(BTRFS_IOCTL_MAGIC, 28)
-#define BTRFS_IOC_SCRUB_PROGRESS _IOWR(BTRFS_IOCTL_MAGIC, 29,   struct btrfs_ioctl_scrub_args)
-#define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30,   struct btrfs_ioctl_dev_info_args)
+#define BTRFS_IOC_SCRUB_PROGRESS _IOWR(BTRFS_IOCTL_MAGIC, 29, struct btrfs_ioctl_scrub_args)
+#define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, struct btrfs_ioctl_dev_info_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31,   struct btrfs_ioctl_fs_info_args)
-#define BTRFS_IOC_BALANCE_V2 _IOWR(BTRFS_IOCTL_MAGIC, 32,   struct btrfs_ioctl_balance_args)
+#define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, struct btrfs_ioctl_fs_info_args)
+#define BTRFS_IOC_BALANCE_V2 _IOWR(BTRFS_IOCTL_MAGIC, 32, struct btrfs_ioctl_balance_args)
 #define BTRFS_IOC_BALANCE_CTL _IOW(BTRFS_IOCTL_MAGIC, 33, int)
-#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 34,   struct btrfs_ioctl_balance_args)
+#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 34, struct btrfs_ioctl_balance_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_INO_PATHS _IOWR(BTRFS_IOCTL_MAGIC, 35,   struct btrfs_ioctl_ino_path_args)
-#define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36,   struct btrfs_ioctl_ino_path_args)
-#define BTRFS_IOC_SET_RECEIVED_SUBVOL _IOWR(BTRFS_IOCTL_MAGIC, 37,   struct btrfs_ioctl_received_subvol_args)
+#define BTRFS_IOC_INO_PATHS _IOWR(BTRFS_IOCTL_MAGIC, 35, struct btrfs_ioctl_ino_path_args)
+#define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36, struct btrfs_ioctl_ino_path_args)
+#define BTRFS_IOC_SET_RECEIVED_SUBVOL _IOWR(BTRFS_IOCTL_MAGIC, 37, struct btrfs_ioctl_received_subvol_args)
 #define BTRFS_IOC_SEND _IOW(BTRFS_IOCTL_MAGIC, 38, struct btrfs_ioctl_send_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_DEVICES_READY _IOR(BTRFS_IOCTL_MAGIC, 39,   struct btrfs_ioctl_vol_args)
-#define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40,   struct btrfs_ioctl_quota_ctl_args)
-#define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41,   struct btrfs_ioctl_qgroup_assign_args)
-#define BTRFS_IOC_QGROUP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 42,   struct btrfs_ioctl_qgroup_create_args)
+#define BTRFS_IOC_DEVICES_READY _IOR(BTRFS_IOCTL_MAGIC, 39, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40, struct btrfs_ioctl_quota_ctl_args)
+#define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41, struct btrfs_ioctl_qgroup_assign_args)
+#define BTRFS_IOC_QGROUP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 42, struct btrfs_ioctl_qgroup_create_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43,   struct btrfs_ioctl_qgroup_limit_args)
-#define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44,   struct btrfs_ioctl_quota_rescan_args)
-#define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45,   struct btrfs_ioctl_quota_rescan_args)
+#define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, struct btrfs_ioctl_qgroup_limit_args)
+#define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, struct btrfs_ioctl_quota_rescan_args)
+#define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, struct btrfs_ioctl_quota_rescan_args)
 #define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_GET_FSLABEL _IOR(BTRFS_IOCTL_MAGIC, 49,   char[BTRFS_LABEL_SIZE])
-#define BTRFS_IOC_SET_FSLABEL _IOW(BTRFS_IOCTL_MAGIC, 50,   char[BTRFS_LABEL_SIZE])
-#define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52,   struct btrfs_ioctl_get_dev_stats)
-#define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53,   struct btrfs_ioctl_dev_replace_args)
+#define BTRFS_IOC_GET_FSLABEL _IOR(BTRFS_IOCTL_MAGIC, 49, char[BTRFS_LABEL_SIZE])
+#define BTRFS_IOC_SET_FSLABEL _IOW(BTRFS_IOCTL_MAGIC, 50, char[BTRFS_LABEL_SIZE])
+#define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, struct btrfs_ioctl_get_dev_stats)
+#define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, struct btrfs_ioctl_dev_replace_args)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BTRFS_IOC_FILE_EXTENT_SAME _IOWR(BTRFS_IOCTL_MAGIC, 54,   struct btrfs_ioctl_same_args)
-#define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57,   struct btrfs_ioctl_feature_flags)
-#define BTRFS_IOC_SET_FEATURES _IOW(BTRFS_IOCTL_MAGIC, 57,   struct btrfs_ioctl_feature_flags[2])
-#define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57,   struct btrfs_ioctl_feature_flags[3])
+#define BTRFS_IOC_FILE_EXTENT_SAME _IOWR(BTRFS_IOCTL_MAGIC, 54, struct btrfs_ioctl_same_args)
+#define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, struct btrfs_ioctl_feature_flags)
+#define BTRFS_IOC_SET_FEATURES _IOW(BTRFS_IOCTL_MAGIC, 57, struct btrfs_ioctl_feature_flags[2])
+#define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, struct btrfs_ioctl_feature_flags[3])
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/byteorder/big_endian.h b/libc/kernel/uapi/linux/byteorder/big_endian.h
index 314b875..95da50f 100644
--- a/libc/kernel/uapi/linux/byteorder/big_endian.h
+++ b/libc/kernel/uapi/linux/byteorder/big_endian.h
@@ -28,41 +28,41 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #include <linux/swab.h>
-#define __constant_htonl(x) ((__force __be32)(__u32)(x))
-#define __constant_ntohl(x) ((__force __u32)(__be32)(x))
+#define __constant_htonl(x) ((__force __be32) (__u32) (x))
+#define __constant_ntohl(x) ((__force __u32) (__be32) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_htons(x) ((__force __be16)(__u16)(x))
-#define __constant_ntohs(x) ((__force __u16)(__be16)(x))
-#define __constant_cpu_to_le64(x) ((__force __le64)___constant_swab64((x)))
-#define __constant_le64_to_cpu(x) ___constant_swab64((__force __u64)(__le64)(x))
+#define __constant_htons(x) ((__force __be16) (__u16) (x))
+#define __constant_ntohs(x) ((__force __u16) (__be16) (x))
+#define __constant_cpu_to_le64(x) ((__force __le64) ___constant_swab64((x)))
+#define __constant_le64_to_cpu(x) ___constant_swab64((__force __u64) (__le64) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_cpu_to_le32(x) ((__force __le32)___constant_swab32((x)))
-#define __constant_le32_to_cpu(x) ___constant_swab32((__force __u32)(__le32)(x))
-#define __constant_cpu_to_le16(x) ((__force __le16)___constant_swab16((x)))
-#define __constant_le16_to_cpu(x) ___constant_swab16((__force __u16)(__le16)(x))
+#define __constant_cpu_to_le32(x) ((__force __le32) ___constant_swab32((x)))
+#define __constant_le32_to_cpu(x) ___constant_swab32((__force __u32) (__le32) (x))
+#define __constant_cpu_to_le16(x) ((__force __le16) ___constant_swab16((x)))
+#define __constant_le16_to_cpu(x) ___constant_swab16((__force __u16) (__le16) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_cpu_to_be64(x) ((__force __be64)(__u64)(x))
-#define __constant_be64_to_cpu(x) ((__force __u64)(__be64)(x))
-#define __constant_cpu_to_be32(x) ((__force __be32)(__u32)(x))
-#define __constant_be32_to_cpu(x) ((__force __u32)(__be32)(x))
+#define __constant_cpu_to_be64(x) ((__force __be64) (__u64) (x))
+#define __constant_be64_to_cpu(x) ((__force __u64) (__be64) (x))
+#define __constant_cpu_to_be32(x) ((__force __be32) (__u32) (x))
+#define __constant_be32_to_cpu(x) ((__force __u32) (__be32) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_cpu_to_be16(x) ((__force __be16)(__u16)(x))
-#define __constant_be16_to_cpu(x) ((__force __u16)(__be16)(x))
-#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
-#define __le64_to_cpu(x) __swab64((__force __u64)(__le64)(x))
+#define __constant_cpu_to_be16(x) ((__force __be16) (__u16) (x))
+#define __constant_be16_to_cpu(x) ((__force __u16) (__be16) (x))
+#define __cpu_to_le64(x) ((__force __le64) __swab64((x)))
+#define __le64_to_cpu(x) __swab64((__force __u64) (__le64) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
-#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
-#define __cpu_to_le16(x) ((__force __le16)__swab16((x)))
-#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
+#define __cpu_to_le32(x) ((__force __le32) __swab32((x)))
+#define __le32_to_cpu(x) __swab32((__force __u32) (__le32) (x))
+#define __cpu_to_le16(x) ((__force __le16) __swab16((x)))
+#define __le16_to_cpu(x) __swab16((__force __u16) (__le16) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_be64(x) ((__force __be64)(__u64)(x))
-#define __be64_to_cpu(x) ((__force __u64)(__be64)(x))
-#define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
-#define __be32_to_cpu(x) ((__force __u32)(__be32)(x))
+#define __cpu_to_be64(x) ((__force __be64) (__u64) (x))
+#define __be64_to_cpu(x) ((__force __u64) (__be64) (x))
+#define __cpu_to_be32(x) ((__force __be32) (__u32) (x))
+#define __be32_to_cpu(x) ((__force __u32) (__be32) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_be16(x) ((__force __be16)(__u16)(x))
-#define __be16_to_cpu(x) ((__force __u16)(__be16)(x))
+#define __cpu_to_be16(x) ((__force __be16) (__u16) (x))
+#define __be16_to_cpu(x) ((__force __u16) (__be16) (x))
 #define __cpu_to_le64s(x) __swab64s((x))
 #define __le64_to_cpus(x) __swab64s((x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -71,11 +71,11 @@
 #define __cpu_to_le16s(x) __swab16s((x))
 #define __le16_to_cpus(x) __swab16s((x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_be64s(x) do { (void)(x); } while (0)
-#define __be64_to_cpus(x) do { (void)(x); } while (0)
-#define __cpu_to_be32s(x) do { (void)(x); } while (0)
-#define __be32_to_cpus(x) do { (void)(x); } while (0)
+#define __cpu_to_be64s(x) do { (void) (x); } while(0)
+#define __be64_to_cpus(x) do { (void) (x); } while(0)
+#define __cpu_to_be32s(x) do { (void) (x); } while(0)
+#define __be32_to_cpus(x) do { (void) (x); } while(0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_be16s(x) do { (void)(x); } while (0)
-#define __be16_to_cpus(x) do { (void)(x); } while (0)
+#define __cpu_to_be16s(x) do { (void) (x); } while(0)
+#define __be16_to_cpus(x) do { (void) (x); } while(0)
 #endif
diff --git a/libc/kernel/uapi/linux/byteorder/little_endian.h b/libc/kernel/uapi/linux/byteorder/little_endian.h
index f9543d4..684ee5f 100644
--- a/libc/kernel/uapi/linux/byteorder/little_endian.h
+++ b/libc/kernel/uapi/linux/byteorder/little_endian.h
@@ -28,48 +28,48 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #include <linux/swab.h>
-#define __constant_htonl(x) ((__force __be32)___constant_swab32((x)))
-#define __constant_ntohl(x) ___constant_swab32((__force __be32)(x))
+#define __constant_htonl(x) ((__force __be32) ___constant_swab32((x)))
+#define __constant_ntohl(x) ___constant_swab32((__force __be32) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_htons(x) ((__force __be16)___constant_swab16((x)))
-#define __constant_ntohs(x) ___constant_swab16((__force __be16)(x))
-#define __constant_cpu_to_le64(x) ((__force __le64)(__u64)(x))
-#define __constant_le64_to_cpu(x) ((__force __u64)(__le64)(x))
+#define __constant_htons(x) ((__force __be16) ___constant_swab16((x)))
+#define __constant_ntohs(x) ___constant_swab16((__force __be16) (x))
+#define __constant_cpu_to_le64(x) ((__force __le64) (__u64) (x))
+#define __constant_le64_to_cpu(x) ((__force __u64) (__le64) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_cpu_to_le32(x) ((__force __le32)(__u32)(x))
-#define __constant_le32_to_cpu(x) ((__force __u32)(__le32)(x))
-#define __constant_cpu_to_le16(x) ((__force __le16)(__u16)(x))
-#define __constant_le16_to_cpu(x) ((__force __u16)(__le16)(x))
+#define __constant_cpu_to_le32(x) ((__force __le32) (__u32) (x))
+#define __constant_le32_to_cpu(x) ((__force __u32) (__le32) (x))
+#define __constant_cpu_to_le16(x) ((__force __le16) (__u16) (x))
+#define __constant_le16_to_cpu(x) ((__force __u16) (__le16) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_cpu_to_be64(x) ((__force __be64)___constant_swab64((x)))
-#define __constant_be64_to_cpu(x) ___constant_swab64((__force __u64)(__be64)(x))
-#define __constant_cpu_to_be32(x) ((__force __be32)___constant_swab32((x)))
-#define __constant_be32_to_cpu(x) ___constant_swab32((__force __u32)(__be32)(x))
+#define __constant_cpu_to_be64(x) ((__force __be64) ___constant_swab64((x)))
+#define __constant_be64_to_cpu(x) ___constant_swab64((__force __u64) (__be64) (x))
+#define __constant_cpu_to_be32(x) ((__force __be32) ___constant_swab32((x)))
+#define __constant_be32_to_cpu(x) ___constant_swab32((__force __u32) (__be32) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __constant_cpu_to_be16(x) ((__force __be16)___constant_swab16((x)))
-#define __constant_be16_to_cpu(x) ___constant_swab16((__force __u16)(__be16)(x))
-#define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
-#define __le64_to_cpu(x) ((__force __u64)(__le64)(x))
+#define __constant_cpu_to_be16(x) ((__force __be16) ___constant_swab16((x)))
+#define __constant_be16_to_cpu(x) ___constant_swab16((__force __u16) (__be16) (x))
+#define __cpu_to_le64(x) ((__force __le64) (__u64) (x))
+#define __le64_to_cpu(x) ((__force __u64) (__le64) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
-#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
-#define __cpu_to_le16(x) ((__force __le16)(__u16)(x))
-#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
+#define __cpu_to_le32(x) ((__force __le32) (__u32) (x))
+#define __le32_to_cpu(x) ((__force __u32) (__le32) (x))
+#define __cpu_to_le16(x) ((__force __le16) (__u16) (x))
+#define __le16_to_cpu(x) ((__force __u16) (__le16) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_be64(x) ((__force __be64)__swab64((x)))
-#define __be64_to_cpu(x) __swab64((__force __u64)(__be64)(x))
-#define __cpu_to_be32(x) ((__force __be32)__swab32((x)))
-#define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
+#define __cpu_to_be64(x) ((__force __be64) __swab64((x)))
+#define __be64_to_cpu(x) __swab64((__force __u64) (__be64) (x))
+#define __cpu_to_be32(x) ((__force __be32) __swab32((x)))
+#define __be32_to_cpu(x) __swab32((__force __u32) (__be32) (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_be16(x) ((__force __be16)__swab16((x)))
-#define __be16_to_cpu(x) __swab16((__force __u16)(__be16)(x))
-#define __cpu_to_le64s(x) do { (void)(x); } while (0)
-#define __le64_to_cpus(x) do { (void)(x); } while (0)
+#define __cpu_to_be16(x) ((__force __be16) __swab16((x)))
+#define __be16_to_cpu(x) __swab16((__force __u16) (__be16) (x))
+#define __cpu_to_le64s(x) do { (void) (x); } while(0)
+#define __le64_to_cpus(x) do { (void) (x); } while(0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __cpu_to_le32s(x) do { (void)(x); } while (0)
-#define __le32_to_cpus(x) do { (void)(x); } while (0)
-#define __cpu_to_le16s(x) do { (void)(x); } while (0)
-#define __le16_to_cpus(x) do { (void)(x); } while (0)
+#define __cpu_to_le32s(x) do { (void) (x); } while(0)
+#define __le32_to_cpus(x) do { (void) (x); } while(0)
+#define __cpu_to_le16s(x) do { (void) (x); } while(0)
+#define __le16_to_cpus(x) do { (void) (x); } while(0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be64s(x) __swab64s((x))
 #define __be64_to_cpus(x) __swab64s((x))
diff --git a/libc/kernel/uapi/linux/caif/caif_socket.h b/libc/kernel/uapi/linux/caif/caif_socket.h
index 7218866..879623c 100644
--- a/libc/kernel/uapi/linux/caif/caif_socket.h
+++ b/libc/kernel/uapi/linux/caif/caif_socket.h
@@ -22,79 +22,79 @@
 #include <linux/socket.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum caif_link_selector {
- CAIF_LINK_HIGH_BANDW,
- CAIF_LINK_LOW_LATENCY
+  CAIF_LINK_HIGH_BANDW,
+  CAIF_LINK_LOW_LATENCY
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum caif_channel_priority {
- CAIF_PRIO_MIN = 0x01,
- CAIF_PRIO_LOW = 0x04,
- CAIF_PRIO_NORMAL = 0x0f,
+  CAIF_PRIO_MIN = 0x01,
+  CAIF_PRIO_LOW = 0x04,
+  CAIF_PRIO_NORMAL = 0x0f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CAIF_PRIO_HIGH = 0x14,
- CAIF_PRIO_MAX = 0x1F
+  CAIF_PRIO_HIGH = 0x14,
+  CAIF_PRIO_MAX = 0x1F
 };
 enum caif_protocol_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CAIFPROTO_AT,
- CAIFPROTO_DATAGRAM,
- CAIFPROTO_DATAGRAM_LOOP,
- CAIFPROTO_UTIL,
+  CAIFPROTO_AT,
+  CAIFPROTO_DATAGRAM,
+  CAIFPROTO_DATAGRAM_LOOP,
+  CAIFPROTO_UTIL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CAIFPROTO_RFM,
- CAIFPROTO_DEBUG,
- _CAIFPROTO_MAX
+  CAIFPROTO_RFM,
+  CAIFPROTO_DEBUG,
+  _CAIFPROTO_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAIFPROTO_MAX _CAIFPROTO_MAX
 enum caif_at_type {
- CAIF_ATTYPE_PLAIN = 2
+  CAIF_ATTYPE_PLAIN = 2
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum caif_debug_type {
- CAIF_DEBUG_TRACE_INTERACTIVE = 0,
- CAIF_DEBUG_TRACE,
- CAIF_DEBUG_INTERACTIVE,
+  CAIF_DEBUG_TRACE_INTERACTIVE = 0,
+  CAIF_DEBUG_TRACE,
+  CAIF_DEBUG_INTERACTIVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum caif_debug_service {
- CAIF_RADIO_DEBUG_SERVICE = 1,
- CAIF_APP_DEBUG_SERVICE
+  CAIF_RADIO_DEBUG_SERVICE = 1,
+  CAIF_APP_DEBUG_SERVICE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct sockaddr_caif {
- __kernel_sa_family_t family;
- union {
+  __kernel_sa_family_t family;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u8 type;
- } at;
- struct {
+    struct {
+      __u8 type;
+    } at;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char service[16];
- } util;
- union {
- __u32 connection_id;
+      char service[16];
+    } util;
+    union {
+      __u32 connection_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 nsapi;
- } dgm;
- struct {
- __u32 connection_id;
+      __u8 nsapi;
+    } dgm;
+    struct {
+      __u32 connection_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char volume[16];
- } rfm;
- struct {
- __u8 type;
+      char volume[16];
+    } rfm;
+    struct {
+      __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 service;
- } dbg;
- } u;
+      __u8 service;
+    } dbg;
+  } u;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum caif_socket_opts {
- CAIFSO_LINK_SELECT = 127,
- CAIFSO_REQ_PARAM = 128,
- CAIFSO_RSP_PARAM = 129,
+  CAIFSO_LINK_SELECT = 127,
+  CAIFSO_REQ_PARAM = 128,
+  CAIFSO_RSP_PARAM = 129,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/caif/if_caif.h b/libc/kernel/uapi/linux/caif/if_caif.h
index a237d0b..2904eaa 100644
--- a/libc/kernel/uapi/linux/caif/if_caif.h
+++ b/libc/kernel/uapi/linux/caif/if_caif.h
@@ -23,13 +23,13 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/socket.h>
 enum ifla_caif {
- __IFLA_CAIF_UNSPEC,
- IFLA_CAIF_IPV4_CONNID,
+  __IFLA_CAIF_UNSPEC,
+  IFLA_CAIF_IPV4_CONNID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_CAIF_IPV6_CONNID,
- IFLA_CAIF_LOOPBACK,
- __IFLA_CAIF_MAX
+  IFLA_CAIF_IPV6_CONNID,
+  IFLA_CAIF_LOOPBACK,
+  __IFLA_CAIF_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFLA_CAIF_MAX (__IFLA_CAIF_MAX-1)
+#define IFLA_CAIF_MAX (__IFLA_CAIF_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/can.h b/libc/kernel/uapi/linux/can.h
index 9549bbf..4c4f2c6 100644
--- a/libc/kernel/uapi/linux/can.h
+++ b/libc/kernel/uapi/linux/can.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef CAN_H
-#define CAN_H
+#ifndef _UAPI_CAN_H
+#define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -39,22 +39,22 @@
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
 struct can_frame {
- canid_t can_id;
+  canid_t can_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 can_dlc;
- __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
+  __u8 can_dlc;
+  __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
 };
 #define CANFD_BRS 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CANFD_ESI 0x02
 struct canfd_frame {
- canid_t can_id;
- __u8 len;
+  canid_t can_id;
+  __u8 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- __u8 __res0;
- __u8 __res1;
- __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
+  __u8 flags;
+  __u8 __res0;
+  __u8 __res1;
+  __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CAN_MTU (sizeof(struct can_frame))
@@ -71,18 +71,20 @@
 #define SOL_CAN_BASE 100
 struct sockaddr_can {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_sa_family_t can_family;
- int can_ifindex;
- union {
- struct { canid_t rx_id, tx_id; } tp;
+  __kernel_sa_family_t can_family;
+  int can_ifindex;
+  union {
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } can_addr;
+      canid_t rx_id, tx_id;
+    } tp;
+  } can_addr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct can_filter {
- canid_t can_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- canid_t can_mask;
+  canid_t can_id;
+  canid_t can_mask;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAN_INV_FILTER 0x20000000U
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/can/bcm.h b/libc/kernel/uapi/linux/can/bcm.h
index fca1232..25d71e8 100644
--- a/libc/kernel/uapi/linux/can/bcm.h
+++ b/libc/kernel/uapi/linux/can/bcm.h
@@ -16,38 +16,38 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef CAN_BCM_H
-#define CAN_BCM_H
+#ifndef _UAPI_CAN_BCM_H
+#define _UAPI_CAN_BCM_H
 #include <linux/types.h>
 #include <linux/can.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct bcm_msg_head {
- __u32 opcode;
- __u32 flags;
- __u32 count;
+  __u32 opcode;
+  __u32 flags;
+  __u32 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timeval ival1, ival2;
- canid_t can_id;
- __u32 nframes;
- struct can_frame frames[0];
+  struct timeval ival1, ival2;
+  canid_t can_id;
+  __u32 nframes;
+  struct can_frame frames[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TX_SETUP = 1,
- TX_DELETE,
+  TX_SETUP = 1,
+  TX_DELETE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TX_READ,
- TX_SEND,
- RX_SETUP,
- RX_DELETE,
+  TX_READ,
+  TX_SEND,
+  RX_SETUP,
+  RX_DELETE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RX_READ,
- TX_STATUS,
- TX_EXPIRED,
- RX_STATUS,
+  RX_READ,
+  TX_STATUS,
+  TX_EXPIRED,
+  RX_STATUS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RX_TIMEOUT,
- RX_CHANGED
+  RX_TIMEOUT,
+  RX_CHANGED
 };
 #define SETTIMER 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/can/error.h b/libc/kernel/uapi/linux/can/error.h
index 2436ace..46af758 100644
--- a/libc/kernel/uapi/linux/can/error.h
+++ b/libc/kernel/uapi/linux/can/error.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef CAN_ERROR_H
-#define CAN_ERROR_H
+#ifndef _UAPI_CAN_ERROR_H
+#define _UAPI_CAN_ERROR_H
 #define CAN_ERR_DLC 8
 #define CAN_ERR_TX_TIMEOUT 0x00000001U
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/can/gw.h b/libc/kernel/uapi/linux/can/gw.h
index dd80d48..37703fe 100644
--- a/libc/kernel/uapi/linux/can/gw.h
+++ b/libc/kernel/uapi/linux/can/gw.h
@@ -16,44 +16,44 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef CAN_GW_H
-#define CAN_GW_H
+#ifndef _UAPI_CAN_GW_H
+#define _UAPI_CAN_GW_H
 #include <linux/types.h>
 #include <linux/can.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rtcanmsg {
- __u8 can_family;
- __u8 gwtype;
- __u16 flags;
+  __u8 can_family;
+  __u8 gwtype;
+  __u16 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- CGW_TYPE_UNSPEC,
- CGW_TYPE_CAN_CAN,
+  CGW_TYPE_UNSPEC,
+  CGW_TYPE_CAN_CAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CGW_TYPE_MAX
+  __CGW_TYPE_MAX
 };
 #define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CGW_UNSPEC,
- CGW_MOD_AND,
- CGW_MOD_OR,
- CGW_MOD_XOR,
+  CGW_UNSPEC,
+  CGW_MOD_AND,
+  CGW_MOD_OR,
+  CGW_MOD_XOR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CGW_MOD_SET,
- CGW_CS_XOR,
- CGW_CS_CRC8,
- CGW_HANDLED,
+  CGW_MOD_SET,
+  CGW_CS_XOR,
+  CGW_CS_CRC8,
+  CGW_HANDLED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CGW_DROPPED,
- CGW_SRC_IF,
- CGW_DST_IF,
- CGW_FILTER,
+  CGW_DROPPED,
+  CGW_SRC_IF,
+  CGW_DST_IF,
+  CGW_FILTER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CGW_DELETED,
- CGW_LIM_HOPS,
- __CGW_MAX
+  CGW_DELETED,
+  CGW_LIM_HOPS,
+  __CGW_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CGW_MAX (__CGW_MAX - 1)
@@ -69,41 +69,41 @@
 #define CGW_FRAME_MODS 3
 #define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS)
 struct cgw_frame_mod {
- struct can_frame cf;
+  struct can_frame cf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 modtype;
+  __u8 modtype;
 } __attribute__((packed));
 #define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod)
 struct cgw_csum_xor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s8 from_idx;
- __s8 to_idx;
- __s8 result_idx;
- __u8 init_xor_val;
+  __s8 from_idx;
+  __s8 to_idx;
+  __s8 result_idx;
+  __u8 init_xor_val;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct cgw_csum_crc8 {
- __s8 from_idx;
- __s8 to_idx;
+  __s8 from_idx;
+  __s8 to_idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s8 result_idx;
- __u8 init_crc_val;
- __u8 final_xor_val;
- __u8 crctab[256];
+  __s8 result_idx;
+  __u8 init_crc_val;
+  __u8 final_xor_val;
+  __u8 crctab[256];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 profile;
- __u8 profile_data[20];
+  __u8 profile;
+  __u8 profile_data[20];
 } __attribute__((packed));
 #define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8)
 enum {
- CGW_CRC8PRF_UNSPEC,
- CGW_CRC8PRF_1U8,
+  CGW_CRC8PRF_UNSPEC,
+  CGW_CRC8PRF_1U8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CGW_CRC8PRF_16U8,
- CGW_CRC8PRF_SFFID_XOR,
- __CGW_CRC8PRF_MAX
+  CGW_CRC8PRF_16U8,
+  CGW_CRC8PRF_SFFID_XOR,
+  __CGW_CRC8PRF_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1)
diff --git a/libc/kernel/uapi/linux/can/netlink.h b/libc/kernel/uapi/linux/can/netlink.h
index df8a19c..a1c3159 100644
--- a/libc/kernel/uapi/linux/can/netlink.h
+++ b/libc/kernel/uapi/linux/can/netlink.h
@@ -16,59 +16,59 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef CAN_NETLINK_H
-#define CAN_NETLINK_H
+#ifndef _UAPI_CAN_NETLINK_H
+#define _UAPI_CAN_NETLINK_H
 #include <linux/types.h>
 struct can_bittiming {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bitrate;
- __u32 sample_point;
- __u32 tq;
- __u32 prop_seg;
+  __u32 bitrate;
+  __u32 sample_point;
+  __u32 tq;
+  __u32 prop_seg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 phase_seg1;
- __u32 phase_seg2;
- __u32 sjw;
- __u32 brp;
+  __u32 phase_seg1;
+  __u32 phase_seg2;
+  __u32 sjw;
+  __u32 brp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct can_bittiming_const {
- char name[16];
- __u32 tseg1_min;
+  char name[16];
+  __u32 tseg1_min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tseg1_max;
- __u32 tseg2_min;
- __u32 tseg2_max;
- __u32 sjw_max;
+  __u32 tseg1_max;
+  __u32 tseg2_min;
+  __u32 tseg2_max;
+  __u32 sjw_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 brp_min;
- __u32 brp_max;
- __u32 brp_inc;
+  __u32 brp_min;
+  __u32 brp_max;
+  __u32 brp_inc;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct can_clock {
- __u32 freq;
+  __u32 freq;
 };
 enum can_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CAN_STATE_ERROR_ACTIVE = 0,
- CAN_STATE_ERROR_WARNING,
- CAN_STATE_ERROR_PASSIVE,
- CAN_STATE_BUS_OFF,
+  CAN_STATE_ERROR_ACTIVE = 0,
+  CAN_STATE_ERROR_WARNING,
+  CAN_STATE_ERROR_PASSIVE,
+  CAN_STATE_BUS_OFF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CAN_STATE_STOPPED,
- CAN_STATE_SLEEPING,
- CAN_STATE_MAX
+  CAN_STATE_STOPPED,
+  CAN_STATE_SLEEPING,
+  CAN_STATE_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct can_berr_counter {
- __u16 txerr;
- __u16 rxerr;
+  __u16 txerr;
+  __u16 rxerr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct can_ctrlmode {
- __u32 mask;
- __u32 flags;
+  __u32 mask;
+  __u32 flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAN_CTRLMODE_LOOPBACK 0x01
@@ -77,30 +77,37 @@
 #define CAN_CTRLMODE_ONE_SHOT 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAN_CTRLMODE_BERR_REPORTING 0x10
+#define CAN_CTRLMODE_FD 0x20
+#define CAN_CTRLMODE_PRESUME_ACK 0x40
+#define CAN_CTRLMODE_FD_NON_ISO 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct can_device_stats {
- __u32 bus_error;
- __u32 error_warning;
+  __u32 bus_error;
+  __u32 error_warning;
+  __u32 error_passive;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 error_passive;
- __u32 bus_off;
- __u32 arbitration_lost;
- __u32 restarts;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 bus_off;
+  __u32 arbitration_lost;
+  __u32 restarts;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IFLA_CAN_UNSPEC,
- IFLA_CAN_BITTIMING,
+  IFLA_CAN_UNSPEC,
+  IFLA_CAN_BITTIMING,
+  IFLA_CAN_BITTIMING_CONST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_CAN_BITTIMING_CONST,
- IFLA_CAN_CLOCK,
- IFLA_CAN_STATE,
- IFLA_CAN_CTRLMODE,
+  IFLA_CAN_CLOCK,
+  IFLA_CAN_STATE,
+  IFLA_CAN_CTRLMODE,
+  IFLA_CAN_RESTART_MS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_CAN_RESTART_MS,
- IFLA_CAN_RESTART,
- IFLA_CAN_BERR_COUNTER,
- __IFLA_CAN_MAX
+  IFLA_CAN_RESTART,
+  IFLA_CAN_BERR_COUNTER,
+  IFLA_CAN_DATA_BITTIMING,
+  IFLA_CAN_DATA_BITTIMING_CONST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IFLA_CAN_MAX
 };
 #define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/can/raw.h b/libc/kernel/uapi/linux/can/raw.h
index 9d40c90..a70d881 100644
--- a/libc/kernel/uapi/linux/can/raw.h
+++ b/libc/kernel/uapi/linux/can/raw.h
@@ -16,18 +16,18 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef CAN_RAW_H
-#define CAN_RAW_H
+#ifndef _UAPI_CAN_RAW_H
+#define _UAPI_CAN_RAW_H
 #include <linux/can.h>
 #define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- CAN_RAW_FILTER = 1,
- CAN_RAW_ERR_FILTER,
- CAN_RAW_LOOPBACK,
+  CAN_RAW_FILTER = 1,
+  CAN_RAW_ERR_FILTER,
+  CAN_RAW_LOOPBACK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CAN_RAW_RECV_OWN_MSGS,
- CAN_RAW_FD_FRAMES,
+  CAN_RAW_RECV_OWN_MSGS,
+  CAN_RAW_FD_FRAMES,
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/capability.h b/libc/kernel/uapi/linux/capability.h
index c0ab4d9..6ced6e2 100644
--- a/libc/kernel/uapi/linux/capability.h
+++ b/libc/kernel/uapi/linux/capability.h
@@ -29,16 +29,16 @@
 #define _LINUX_CAPABILITY_VERSION_3 0x20080522
 #define _LINUX_CAPABILITY_U32S_3 2
 typedef struct __user_cap_header_struct {
- __u32 version;
+  __u32 version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pid;
-} __user *cap_user_header_t;
+  int pid;
+} __user * cap_user_header_t;
 typedef struct __user_cap_data_struct {
- __u32 effective;
+  __u32 effective;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 permitted;
- __u32 inheritable;
-} __user *cap_user_data_t;
+  __u32 permitted;
+  __u32 inheritable;
+} __user * cap_user_data_t;
 #define VFS_CAP_REVISION_MASK 0xFF000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFS_CAP_REVISION_SHIFT 24
@@ -47,22 +47,22 @@
 #define VFS_CAP_REVISION_1 0x01000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFS_CAP_U32_1 1
-#define XATTR_CAPS_SZ_1 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_1))
+#define XATTR_CAPS_SZ_1 (sizeof(__le32) * (1 + 2 * VFS_CAP_U32_1))
 #define VFS_CAP_REVISION_2 0x02000000
 #define VFS_CAP_U32_2 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define XATTR_CAPS_SZ_2 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_2))
+#define XATTR_CAPS_SZ_2 (sizeof(__le32) * (1 + 2 * VFS_CAP_U32_2))
 #define XATTR_CAPS_SZ XATTR_CAPS_SZ_2
 #define VFS_CAP_U32 VFS_CAP_U32_2
 #define VFS_CAP_REVISION VFS_CAP_REVISION_2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vfs_cap_data {
- __le32 magic_etc;
- struct {
- __le32 permitted;
+  __le32 magic_etc;
+  struct {
+    __le32 permitted;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 inheritable;
- } data[VFS_CAP_U32];
+    __le32 inheritable;
+  } data[VFS_CAP_U32];
 };
 #define _LINUX_CAPABILITY_VERSION _LINUX_CAPABILITY_VERSION_1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -113,9 +113,11 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_WAKE_ALARM 35
 #define CAP_BLOCK_SUSPEND 36
-#define CAP_LAST_CAP CAP_BLOCK_SUSPEND
-#define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
+#define CAP_AUDIT_READ 37
+#define CAP_LAST_CAP CAP_AUDIT_READ
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
 #define CAP_TO_INDEX(x) ((x) >> 5)
 #define CAP_TO_MASK(x) (1 << ((x) & 31))
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/capi.h b/libc/kernel/uapi/linux/capi.h
index a5622ea..464c26f 100644
--- a/libc/kernel/uapi/linux/capi.h
+++ b/libc/kernel/uapi/linux/capi.h
@@ -23,67 +23,67 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kernelcapi.h>
 typedef struct capi_register_params {
- __u32 level3cnt;
- __u32 datablkcnt;
+  __u32 level3cnt;
+  __u32 datablkcnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 datablklen;
+  __u32 datablklen;
 } capi_register_params;
-#define CAPI_REGISTER _IOW('C',0x01,struct capi_register_params)
+#define CAPI_REGISTER _IOW('C', 0x01, struct capi_register_params)
 #define CAPI_MANUFACTURER_LEN 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_GET_MANUFACTURER _IOWR('C',0x06,int)
+#define CAPI_GET_MANUFACTURER _IOWR('C', 0x06, int)
 typedef struct capi_version {
- __u32 majorversion;
- __u32 minorversion;
+  __u32 majorversion;
+  __u32 minorversion;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 majormanuversion;
- __u32 minormanuversion;
+  __u32 majormanuversion;
+  __u32 minormanuversion;
 } capi_version;
-#define CAPI_GET_VERSION _IOWR('C',0x07,struct capi_version)
+#define CAPI_GET_VERSION _IOWR('C', 0x07, struct capi_version)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPI_SERIAL_LEN 8
-#define CAPI_GET_SERIAL _IOWR('C',0x08,int)
+#define CAPI_GET_SERIAL _IOWR('C', 0x08, int)
 typedef struct capi_profile {
- __u16 ncontroller;
+  __u16 ncontroller;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 nbchannel;
- __u32 goptions;
- __u32 support1;
- __u32 support2;
+  __u16 nbchannel;
+  __u32 goptions;
+  __u32 support1;
+  __u32 support2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 support3;
- __u32 reserved[6];
- __u32 manu[5];
+  __u32 support3;
+  __u32 reserved[6];
+  __u32 manu[5];
 } capi_profile;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_GET_PROFILE _IOWR('C',0x09,struct capi_profile)
+#define CAPI_GET_PROFILE _IOWR('C', 0x09, struct capi_profile)
 typedef struct capi_manufacturer_cmd {
- unsigned long cmd;
- void __user *data;
+  unsigned long cmd;
+  void __user * data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } capi_manufacturer_cmd;
-#define CAPI_MANUFACTURER_CMD _IOWR('C',0x20, struct capi_manufacturer_cmd)
-#define CAPI_GET_ERRCODE _IOR('C',0x21, __u16)
-#define CAPI_INSTALLED _IOR('C',0x22, __u16)
+#define CAPI_MANUFACTURER_CMD _IOWR('C', 0x20, struct capi_manufacturer_cmd)
+#define CAPI_GET_ERRCODE _IOR('C', 0x21, __u16)
+#define CAPI_INSTALLED _IOR('C', 0x22, __u16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union capi_ioctl_struct {
- __u32 contr;
- capi_register_params rparams;
- __u8 manufacturer[CAPI_MANUFACTURER_LEN];
+  __u32 contr;
+  capi_register_params rparams;
+  __u8 manufacturer[CAPI_MANUFACTURER_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- capi_version version;
- __u8 serial[CAPI_SERIAL_LEN];
- capi_profile profile;
- capi_manufacturer_cmd cmd;
+  capi_version version;
+  __u8 serial[CAPI_SERIAL_LEN];
+  capi_profile profile;
+  capi_manufacturer_cmd cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 errcode;
+  __u16 errcode;
 } capi_ioctl_struct;
 #define CAPIFLAG_HIGHJACKING 0x0001
-#define CAPI_GET_FLAGS _IOR('C',0x23, unsigned)
+#define CAPI_GET_FLAGS _IOR('C', 0x23, unsigned)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_SET_FLAGS _IOR('C',0x24, unsigned)
-#define CAPI_CLR_FLAGS _IOR('C',0x25, unsigned)
-#define CAPI_NCCI_OPENCOUNT _IOR('C',0x26, unsigned)
-#define CAPI_NCCI_GETUNIT _IOR('C',0x27, unsigned)
+#define CAPI_SET_FLAGS _IOR('C', 0x24, unsigned)
+#define CAPI_CLR_FLAGS _IOR('C', 0x25, unsigned)
+#define CAPI_NCCI_OPENCOUNT _IOR('C', 0x26, unsigned)
+#define CAPI_NCCI_GETUNIT _IOR('C', 0x27, unsigned)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/cciss_defs.h b/libc/kernel/uapi/linux/cciss_defs.h
index 0fba772..af075f8 100644
--- a/libc/kernel/uapi/linux/cciss_defs.h
+++ b/libc/kernel/uapi/linux/cciss_defs.h
@@ -62,86 +62,86 @@
 #pragma pack(1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union _SCSI3Addr_struct {
- struct {
- BYTE Dev;
- BYTE Bus:6;
+  struct {
+    BYTE Dev;
+    BYTE Bus : 6;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE Mode:2;
- } PeripDev;
- struct {
- BYTE DevLSB;
+    BYTE Mode : 2;
+  } PeripDev;
+  struct {
+    BYTE DevLSB;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE DevMSB:6;
- BYTE Mode:2;
- } LogDev;
- struct {
+    BYTE DevMSB : 6;
+    BYTE Mode : 2;
+  } LogDev;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE Dev:5;
- BYTE Bus:3;
- BYTE Targ:6;
- BYTE Mode:2;
+    BYTE Dev : 5;
+    BYTE Bus : 3;
+    BYTE Targ : 6;
+    BYTE Mode : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } LogUnit;
+  } LogUnit;
 } SCSI3Addr_struct;
 typedef struct _PhysDevAddr_struct {
- DWORD TargetId:24;
+  DWORD TargetId : 24;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DWORD Bus:6;
- DWORD Mode:2;
- SCSI3Addr_struct Target[2];
+  DWORD Bus : 6;
+  DWORD Mode : 2;
+  SCSI3Addr_struct Target[2];
 } PhysDevAddr_struct;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _LogDevAddr_struct {
- DWORD VolId:30;
- DWORD Mode:2;
- BYTE reserved[4];
+  DWORD VolId : 30;
+  DWORD Mode : 2;
+  BYTE reserved[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } LogDevAddr_struct;
 typedef union _LUNAddr_struct {
- BYTE LunAddrBytes[8];
- SCSI3Addr_struct SCSI3Lun[4];
+  BYTE LunAddrBytes[8];
+  SCSI3Addr_struct SCSI3Lun[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PhysDevAddr_struct PhysDev;
- LogDevAddr_struct LogDev;
+  PhysDevAddr_struct PhysDev;
+  LogDevAddr_struct LogDev;
 } LUNAddr_struct;
 typedef struct _RequestBlock_struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE CDBLen;
- struct {
- BYTE Type:3;
- BYTE Attribute:3;
+  BYTE CDBLen;
+  struct {
+    BYTE Type : 3;
+    BYTE Attribute : 3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE Direction:2;
- } Type;
- HWORD Timeout;
- BYTE CDB[16];
+    BYTE Direction : 2;
+  } Type;
+  HWORD Timeout;
+  BYTE CDB[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } RequestBlock_struct;
-typedef union _MoreErrInfo_struct{
- struct {
- BYTE Reserved[3];
+typedef union _MoreErrInfo_struct {
+  struct {
+    BYTE Reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE Type;
- DWORD ErrorInfo;
- } Common_Info;
- struct{
+    BYTE Type;
+    DWORD ErrorInfo;
+  } Common_Info;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE Reserved[2];
- BYTE offense_size;
- BYTE offense_num;
- DWORD offense_value;
+    BYTE Reserved[2];
+    BYTE offense_size;
+    BYTE offense_num;
+    DWORD offense_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } Invalid_Cmd;
+  } Invalid_Cmd;
 } MoreErrInfo_struct;
 typedef struct _ErrorInfo_struct {
- BYTE ScsiStatus;
+  BYTE ScsiStatus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE SenseLen;
- HWORD CommandStatus;
- DWORD ResidualCnt;
- MoreErrInfo_struct MoreErrInfo;
+  BYTE SenseLen;
+  HWORD CommandStatus;
+  DWORD ResidualCnt;
+  MoreErrInfo_struct MoreErrInfo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BYTE SenseInfo[SENSEINFOBYTES];
+  BYTE SenseInfo[SENSEINFOBYTES];
 } ErrorInfo_struct;
 #pragma pack()
 #endif
diff --git a/libc/kernel/uapi/linux/cciss_ioctl.h b/libc/kernel/uapi/linux/cciss_ioctl.h
index 11190b9..ab6e325 100644
--- a/libc/kernel/uapi/linux/cciss_ioctl.h
+++ b/libc/kernel/uapi/linux/cciss_ioctl.h
@@ -23,78 +23,76 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/cciss_defs.h>
 #define CCISS_IOC_MAGIC 'B'
-typedef struct _cciss_pci_info_struct
-{
+typedef struct _cciss_pci_info_struct {
+  unsigned char bus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char bus;
- unsigned char dev_fn;
- unsigned short domain;
- __u32 board_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char dev_fn;
+  unsigned short domain;
+  __u32 board_id;
 } cciss_pci_info_struct;
-typedef struct _cciss_coalint_struct
-{
- __u32 delay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count;
+typedef struct _cciss_coalint_struct {
+  __u32 delay;
+  __u32 count;
 } cciss_coalint_struct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef char NodeName_type[16];
 typedef __u32 Heartbeat_type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CISS_PARSCSIU2 0x0001
 #define CISS_PARCSCIU3 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CISS_FIBRE1G 0x0100
 #define CISS_FIBRE2G 0x0200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u32 BusTypes_type;
 typedef char FirmwareVer_type[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u32 DriverVer_type;
 #define MAX_KMALLOC_SIZE 128000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _IOCTL_Command_struct {
- LUNAddr_struct LUN_info;
- RequestBlock_struct Request;
- ErrorInfo_struct error_info;
+  LUNAddr_struct LUN_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WORD buf_size;
- BYTE __user *buf;
+  RequestBlock_struct Request;
+  ErrorInfo_struct error_info;
+  WORD buf_size;
+  BYTE __user * buf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } IOCTL_Command_struct;
 typedef struct _BIG_IOCTL_Command_struct {
+  LUNAddr_struct LUN_info;
+  RequestBlock_struct Request;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LUNAddr_struct LUN_info;
- RequestBlock_struct Request;
- ErrorInfo_struct error_info;
- DWORD malloc_size;
+  ErrorInfo_struct error_info;
+  DWORD malloc_size;
+  DWORD buf_size;
+  BYTE __user * buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DWORD buf_size;
- BYTE __user *buf;
 } BIG_IOCTL_Command_struct;
-typedef struct _LogvolInfo_struct{
+typedef struct _LogvolInfo_struct {
+  __u32 LunID;
+  int num_opens;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 LunID;
- int num_opens;
- int num_parts;
+  int num_parts;
 } LogvolInfo_struct;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_GETPCIINFO _IOR(CCISS_IOC_MAGIC, 1, cciss_pci_info_struct)
 #define CCISS_GETINTINFO _IOR(CCISS_IOC_MAGIC, 2, cciss_coalint_struct)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_SETINTINFO _IOW(CCISS_IOC_MAGIC, 3, cciss_coalint_struct)
 #define CCISS_GETNODENAME _IOR(CCISS_IOC_MAGIC, 4, NodeName_type)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_SETNODENAME _IOW(CCISS_IOC_MAGIC, 5, NodeName_type)
 #define CCISS_GETHEARTBEAT _IOR(CCISS_IOC_MAGIC, 6, Heartbeat_type)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_GETBUSTYPES _IOR(CCISS_IOC_MAGIC, 7, BusTypes_type)
 #define CCISS_GETFIRMVER _IOR(CCISS_IOC_MAGIC, 8, FirmwareVer_type)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_GETDRIVVER _IOR(CCISS_IOC_MAGIC, 9, DriverVer_type)
 #define CCISS_REVALIDVOLS _IO(CCISS_IOC_MAGIC, 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct)
 #define CCISS_DEREGDISK _IO(CCISS_IOC_MAGIC, 12)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_REGNEWDISK _IOW(CCISS_IOC_MAGIC, 13, int)
 #define CCISS_REGNEWD _IO(CCISS_IOC_MAGIC, 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_RESCANDISK _IO(CCISS_IOC_MAGIC, 16)
 #define CCISS_GETLUNINFO _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCISS_BIG_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL_Command_struct)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/cdrom.h b/libc/kernel/uapi/linux/cdrom.h
index d9d006d..d4d082a 100644
--- a/libc/kernel/uapi/linux/cdrom.h
+++ b/libc/kernel/uapi/linux/cdrom.h
@@ -79,752 +79,735 @@
 #define CDROM_SEND_PACKET 0x5393
 #define CDROM_NEXT_WRITABLE 0x5394
 #define CDROM_LAST_WRITTEN 0x5395
-struct cdrom_msf0
+struct cdrom_msf0 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u8 minute;
- __u8 second;
- __u8 frame;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-union cdrom_addr
-{
- struct cdrom_msf0 msf;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int lba;
-};
-struct cdrom_msf
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdmsf_min0;
- __u8 cdmsf_sec0;
- __u8 cdmsf_frame0;
- __u8 cdmsf_min1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdmsf_sec1;
- __u8 cdmsf_frame1;
-};
-struct cdrom_ti
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u8 cdti_trk0;
- __u8 cdti_ind0;
- __u8 cdti_trk1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdti_ind1;
-};
-struct cdrom_tochdr
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdth_trk0;
- __u8 cdth_trk1;
-};
-struct cdrom_volctrl
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u8 channel0;
- __u8 channel1;
- __u8 channel2;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 channel3;
-};
-struct cdrom_subchnl
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdsc_format;
- __u8 cdsc_audiostatus;
- __u8 cdsc_adr: 4;
- __u8 cdsc_ctrl: 4;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdsc_trk;
- __u8 cdsc_ind;
- union cdrom_addr cdsc_absaddr;
- union cdrom_addr cdsc_reladdr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-struct cdrom_tocentry
-{
- __u8 cdte_track;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdte_adr :4;
- __u8 cdte_ctrl :4;
- __u8 cdte_format;
- union cdrom_addr cdte_addr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cdte_datamode;
-};
-struct cdrom_read
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cdread_lba;
- char *cdread_bufaddr;
- int cdread_buflen;
+  __u8 minute;
+  __u8 second;
+  __u8 frame;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct cdrom_read_audio
-{
- union cdrom_addr addr;
- __u8 addr_format;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int nframes;
- __u8 __user *buf;
+union cdrom_addr {
+  struct cdrom_msf0 msf;
+  int lba;
 };
-struct cdrom_multisession
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- union cdrom_addr addr;
- __u8 xa_flag;
- __u8 addr_format;
+struct cdrom_msf {
+  __u8 cdmsf_min0;
+  __u8 cdmsf_sec0;
+  __u8 cdmsf_frame0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 cdmsf_min1;
+  __u8 cdmsf_sec1;
+  __u8 cdmsf_frame1;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct cdrom_ti {
+  __u8 cdti_trk0;
+  __u8 cdti_ind0;
+  __u8 cdti_trk1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 cdti_ind1;
+};
+struct cdrom_tochdr {
+  __u8 cdth_trk0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 cdth_trk1;
+};
+struct cdrom_volctrl {
+  __u8 channel0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 channel1;
+  __u8 channel2;
+  __u8 channel3;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct cdrom_subchnl {
+  __u8 cdsc_format;
+  __u8 cdsc_audiostatus;
+  __u8 cdsc_adr : 4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 cdsc_ctrl : 4;
+  __u8 cdsc_trk;
+  __u8 cdsc_ind;
+  union cdrom_addr cdsc_absaddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union cdrom_addr cdsc_reladdr;
+};
+struct cdrom_tocentry {
+  __u8 cdte_track;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 cdte_adr : 4;
+  __u8 cdte_ctrl : 4;
+  __u8 cdte_format;
+  union cdrom_addr cdte_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 cdte_datamode;
+};
+struct cdrom_read {
+  int cdread_lba;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char * cdread_bufaddr;
+  int cdread_buflen;
+};
+struct cdrom_read_audio {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union cdrom_addr addr;
+  __u8 addr_format;
+  int nframes;
+  __u8 __user * buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-struct cdrom_mcn
-{
- __u8 medium_catalog_number[14];
+struct cdrom_multisession {
+  union cdrom_addr addr;
+  __u8 xa_flag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 addr_format;
+};
+struct cdrom_mcn {
+  __u8 medium_catalog_number[14];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-struct cdrom_blk
-{
- unsigned from;
+struct cdrom_blk {
+  unsigned from;
+  unsigned short len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short len;
 };
 #define CDROM_PACKET_SIZE 12
 #define CGC_DATA_UNKNOWN 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CGC_DATA_WRITE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CGC_DATA_READ 2
 #define CGC_DATA_NONE 3
-struct cdrom_generic_command
+struct cdrom_generic_command {
+  unsigned char cmd[CDROM_PACKET_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- unsigned char cmd[CDROM_PACKET_SIZE];
- unsigned char __user *buffer;
- unsigned int buflen;
+  unsigned char __user * buffer;
+  unsigned int buflen;
+  int stat;
+  struct request_sense __user * sense;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int stat;
- struct request_sense __user *sense;
- unsigned char data_direction;
- int quiet;
+  unsigned char data_direction;
+  int quiet;
+  int timeout;
+  void __user * reserved[1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int timeout;
- void __user *reserved[1];
 };
 #define CD_MINS 74
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_SECS 60
 #define CD_FRAMES 75
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_SYNC_SIZE 12
 #define CD_MSF_OFFSET 150
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_CHUNK_SIZE 24
 #define CD_NUM_OF_CHUNKS 98
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_FRAMESIZE_SUB 96
 #define CD_HEAD_SIZE 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_SUBHEAD_SIZE 8
 #define CD_EDC_SIZE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_ZERO_SIZE 8
 #define CD_ECC_SIZE 276
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_FRAMESIZE 2048
 #define CD_FRAMESIZE_RAW 2352
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_FRAMESIZE_RAWER 2646
-#define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE)
+#define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW - CD_SYNC_SIZE)
+#define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW - CD_SYNC_SIZE - CD_HEAD_SIZE)
+#define CD_XA_HEAD (CD_HEAD_SIZE + CD_SUBHEAD_SIZE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE)
-#define CD_XA_HEAD (CD_HEAD_SIZE+CD_SUBHEAD_SIZE)
-#define CD_XA_TAIL (CD_EDC_SIZE+CD_ECC_SIZE)
-#define CD_XA_SYNC_HEAD (CD_SYNC_SIZE+CD_XA_HEAD)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CD_XA_TAIL (CD_EDC_SIZE + CD_ECC_SIZE)
+#define CD_XA_SYNC_HEAD (CD_SYNC_SIZE + CD_XA_HEAD)
 #define CDROM_LBA 0x01
 #define CDROM_MSF 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_DATA_TRACK 0x04
 #define CDROM_LEADOUT 0xAA
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_AUDIO_INVALID 0x00
 #define CDROM_AUDIO_PLAY 0x11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_AUDIO_PAUSED 0x12
 #define CDROM_AUDIO_COMPLETED 0x13
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_AUDIO_ERROR 0x14
 #define CDROM_AUDIO_NO_STATUS 0x15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_CLOSE_TRAY 0x1
 #define CDC_OPEN_TRAY 0x2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_LOCK 0x4
 #define CDC_SELECT_SPEED 0x8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_SELECT_DISC 0x10
 #define CDC_MULTI_SESSION 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_MCN 0x40
 #define CDC_MEDIA_CHANGED 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_PLAY_AUDIO 0x100
 #define CDC_RESET 0x200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_DRIVE_STATUS 0x800
 #define CDC_GENERIC_PACKET 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_CD_R 0x2000
 #define CDC_CD_RW 0x4000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_DVD 0x8000
 #define CDC_DVD_R 0x10000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_DVD_RAM 0x20000
 #define CDC_MO_DRIVE 0x40000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_MRW 0x80000
 #define CDC_MRW_W 0x100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_RAM 0x200000
 #define CDS_NO_INFO 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_NO_DISC 1
 #define CDS_TRAY_OPEN 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_DRIVE_NOT_READY 3
 #define CDS_DISC_OK 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_AUDIO 100
 #define CDS_DATA_1 101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_DATA_2 102
 #define CDS_XA_2_1 103
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_XA_2_2 104
 #define CDS_MIXED 105
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDO_AUTO_CLOSE 0x1
 #define CDO_AUTO_EJECT 0x2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDO_USE_FFLAGS 0x4
 #define CDO_LOCK 0x8
-#define CDO_CHECK_TYPE 0x10
-#define CDSL_NONE (INT_MAX-1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CDO_CHECK_TYPE 0x10
+#define CDSL_NONE (INT_MAX - 1)
 #define CDSL_CURRENT INT_MAX
 #define CD_PART_MAX 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_PART_MASK (CD_PART_MAX - 1)
 #define GPCMD_BLANK 0xa1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_CLOSE_TRACK 0x5b
 #define GPCMD_FLUSH_CACHE 0x35
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_FORMAT_UNIT 0x04
 #define GPCMD_GET_CONFIGURATION 0x46
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
 #define GPCMD_GET_PERFORMANCE 0xac
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_INQUIRY 0x12
 #define GPCMD_LOAD_UNLOAD 0xa6
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_MECHANISM_STATUS 0xbd
 #define GPCMD_MODE_SELECT_10 0x55
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_MODE_SENSE_10 0x5a
 #define GPCMD_PAUSE_RESUME 0x4b
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_PLAY_AUDIO_10 0x45
 #define GPCMD_PLAY_AUDIO_MSF 0x47
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_PLAY_AUDIO_TI 0x48
 #define GPCMD_PLAY_CD 0xbc
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
 #define GPCMD_READ_10 0x28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_12 0xa8
 #define GPCMD_READ_BUFFER 0x3c
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_BUFFER_CAPACITY 0x5c
 #define GPCMD_READ_CDVD_CAPACITY 0x25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_CD 0xbe
 #define GPCMD_READ_CD_MSF 0xb9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_DISC_INFO 0x51
 #define GPCMD_READ_DVD_STRUCTURE 0xad
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_FORMAT_CAPACITIES 0x23
 #define GPCMD_READ_HEADER 0x44
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_TRACK_RZONE_INFO 0x52
 #define GPCMD_READ_SUBCHANNEL 0x42
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_TOC_PMA_ATIP 0x43
 #define GPCMD_REPAIR_RZONE_TRACK 0x58
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_REPORT_KEY 0xa4
 #define GPCMD_REQUEST_SENSE 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_RESERVE_RZONE_TRACK 0x53
 #define GPCMD_SEND_CUE_SHEET 0x5d
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SCAN 0xba
 #define GPCMD_SEEK 0x2b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SEND_DVD_STRUCTURE 0xbf
 #define GPCMD_SEND_EVENT 0xa2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SEND_KEY 0xa3
 #define GPCMD_SEND_OPC 0x54
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SET_READ_AHEAD 0xa7
 #define GPCMD_SET_STREAMING 0xb6
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_START_STOP_UNIT 0x1b
 #define GPCMD_STOP_PLAY_SCAN 0x4e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_TEST_UNIT_READY 0x00
 #define GPCMD_VERIFY_10 0x2f
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_WRITE_10 0x2a
 #define GPCMD_WRITE_12 0xaa
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_WRITE_AND_VERIFY_10 0x2e
 #define GPCMD_WRITE_BUFFER 0x3b
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SET_SPEED 0xbb
 #define GPCMD_PLAYAUDIO_TI 0x48
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_GET_MEDIA_STATUS 0xda
 #define GPMODE_VENDOR_PAGE 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_R_W_ERROR_PAGE 0x01
 #define GPMODE_WRITE_PARMS_PAGE 0x05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_WCACHING_PAGE 0x08
 #define GPMODE_AUDIO_CTL_PAGE 0x0e
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_POWER_PAGE 0x1a
 #define GPMODE_FAULT_FAIL_PAGE 0x1c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_TO_PROTECT_PAGE 0x1d
 #define GPMODE_CAPABILITIES_PAGE 0x2a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_ALL_PAGES 0x3f
 #define GPMODE_CDROM_PAGE 0x0d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_STRUCT_PHYSICAL 0x00
 #define DVD_STRUCT_COPYRIGHT 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_STRUCT_DISCKEY 0x02
 #define DVD_STRUCT_BCA 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_STRUCT_MANUFACT 0x04
 struct dvd_layer {
+  __u8 book_version : 4;
+  __u8 book_type : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 book_version : 4;
- __u8 book_type : 4;
- __u8 min_rate : 4;
- __u8 disc_size : 4;
+  __u8 min_rate : 4;
+  __u8 disc_size : 4;
+  __u8 layer_type : 4;
+  __u8 track_path : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 layer_type : 4;
- __u8 track_path : 1;
- __u8 nlayers : 2;
- __u8 track_density : 4;
+  __u8 nlayers : 2;
+  __u8 track_density : 4;
+  __u8 linear_density : 4;
+  __u8 bca : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 linear_density : 4;
- __u8 bca : 1;
- __u32 start_sector;
- __u32 end_sector;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 end_sector_l0;
+  __u32 start_sector;
+  __u32 end_sector;
+  __u32 end_sector_l0;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_LAYERS 4
 struct dvd_physical {
+  __u8 type;
+  __u8 layer_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u8 layer_num;
- struct dvd_layer layer[DVD_LAYERS];
+  struct dvd_layer layer[DVD_LAYERS];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_copyright {
- __u8 type;
- __u8 layer_num;
- __u8 cpst;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rmi;
+  __u8 layer_num;
+  __u8 cpst;
+  __u8 rmi;
 };
-struct dvd_disckey {
- __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned agid : 2;
- __u8 value[2048];
+struct dvd_disckey {
+  __u8 type;
+  unsigned agid : 2;
+  __u8 value[2048];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct dvd_bca {
+  __u8 type;
+  int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- int len;
- __u8 value[188];
+  __u8 value[188];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_manufact {
- __u8 type;
- __u8 layer_num;
- int len;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 value[2048];
+  __u8 layer_num;
+  int len;
+  __u8 value[2048];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union {
- __u8 type;
+  __u8 type;
+  struct dvd_physical physical;
+  struct dvd_copyright copyright;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dvd_physical physical;
- struct dvd_copyright copyright;
- struct dvd_disckey disckey;
- struct dvd_bca bca;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dvd_manufact manufact;
+  struct dvd_disckey disckey;
+  struct dvd_bca bca;
+  struct dvd_manufact manufact;
 } dvd_struct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_LU_SEND_AGID 0
 #define DVD_HOST_SEND_CHALLENGE 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_LU_SEND_KEY1 2
 #define DVD_LU_SEND_CHALLENGE 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_HOST_SEND_KEY2 4
 #define DVD_AUTH_ESTABLISHED 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_AUTH_FAILURE 6
 #define DVD_LU_SEND_TITLE_KEY 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_LU_SEND_ASF 8
 #define DVD_INVALIDATE_AGID 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_LU_SEND_RPC_STATE 10
 #define DVD_HOST_SEND_RPC_STATE 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u8 dvd_key[5];
 typedef __u8 dvd_challenge[10];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_lu_send_agid {
- __u8 type;
- unsigned agid : 2;
+  __u8 type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned agid : 2;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_host_send_challenge {
- __u8 type;
- unsigned agid : 2;
- dvd_challenge chal;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned agid : 2;
+  dvd_challenge chal;
 };
 struct dvd_send_key {
- __u8 type;
- unsigned agid : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dvd_key key;
+  __u8 type;
+  unsigned agid : 2;
+  dvd_key key;
 };
-struct dvd_lu_send_challenge {
- __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned agid : 2;
- dvd_challenge chal;
+struct dvd_lu_send_challenge {
+  __u8 type;
+  unsigned agid : 2;
+  dvd_challenge chal;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DVD_CPM_NO_COPYRIGHT 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_CPM_COPYRIGHTED 1
 #define DVD_CP_SEC_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_CP_SEC_EXIST 1
 #define DVD_CGMS_UNRESTRICTED 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_CGMS_SINGLE 2
 #define DVD_CGMS_RESTRICTED 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_lu_send_title_key {
- __u8 type;
+  __u8 type;
+  unsigned agid : 2;
+  dvd_key title_key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned agid : 2;
- dvd_key title_key;
- int lba;
- unsigned cpm : 1;
+  int lba;
+  unsigned cpm : 1;
+  unsigned cp_sec : 1;
+  unsigned cgms : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned cp_sec : 1;
- unsigned cgms : 2;
 };
 struct dvd_lu_send_asf {
+  __u8 type;
+  unsigned agid : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- unsigned agid : 2;
- unsigned asf : 1;
+  unsigned asf : 1;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_host_send_rpcstate {
- __u8 type;
- __u8 pdrc;
+  __u8 type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 pdrc;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_lu_send_rpcstate {
- __u8 type : 2;
- __u8 vra : 3;
- __u8 ucca : 3;
+  __u8 type : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 region_mask;
- __u8 rpc_scheme;
+  __u8 vra : 3;
+  __u8 ucca : 3;
+  __u8 region_mask;
+  __u8 rpc_scheme;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 typedef union {
+  __u8 type;
+  struct dvd_lu_send_agid lsa;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- struct dvd_lu_send_agid lsa;
- struct dvd_host_send_challenge hsc;
- struct dvd_send_key lsk;
+  struct dvd_host_send_challenge hsc;
+  struct dvd_send_key lsk;
+  struct dvd_lu_send_challenge lsc;
+  struct dvd_send_key hsk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dvd_lu_send_challenge lsc;
- struct dvd_send_key hsk;
- struct dvd_lu_send_title_key lstk;
- struct dvd_lu_send_asf lsasf;
+  struct dvd_lu_send_title_key lstk;
+  struct dvd_lu_send_asf lsasf;
+  struct dvd_host_send_rpcstate hrpcs;
+  struct dvd_lu_send_rpcstate lrpcs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dvd_host_send_rpcstate hrpcs;
- struct dvd_lu_send_rpcstate lrpcs;
 } dvd_authinfo;
 struct request_sense {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 valid : 1;
- __u8 error_code : 7;
+  __u8 valid : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 error_code : 7;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 error_code : 7;
+  __u8 valid : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+  __u8 segment_number;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved1 : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 ili : 1;
+  __u8 reserved2 : 1;
+  __u8 sense_key : 4;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 error_code : 7;
- __u8 valid : 1;
+  __u8 sense_key : 4;
+  __u8 reserved2 : 1;
+  __u8 ili : 1;
+  __u8 reserved1 : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __u8 segment_number;
+  __u8 information[4];
+  __u8 add_sense_len;
+  __u8 command_info[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved1 : 2;
- __u8 ili : 1;
- __u8 reserved2 : 1;
+  __u8 asc;
+  __u8 ascq;
+  __u8 fruc;
+  __u8 sks[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sense_key : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 sense_key : 4;
- __u8 reserved2 : 1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ili : 1;
- __u8 reserved1 : 2;
-#endif
- __u8 information[4];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 add_sense_len;
- __u8 command_info[4];
- __u8 asc;
- __u8 ascq;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fruc;
- __u8 sks[3];
- __u8 asb[46];
+  __u8 asb[46];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDF_RWRT 0x0020
 #define CDF_HWDM 0x0024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDF_MRW 0x0028
 #define CDM_MRW_NOTMRW 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDM_MRW_BGFORMAT_INACTIVE 1
 #define CDM_MRW_BGFORMAT_ACTIVE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDM_MRW_BGFORMAT_COMPLETE 3
 #define MRW_LBA_DMA 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRW_LBA_GAA 1
 #define MRW_MODE_PC_PRE1 0x2c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRW_MODE_PC 0x03
 struct mrw_feature_desc {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 feature_code;
+  __be16 feature_code;
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved1 : 2;
- __u8 feature_version : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 persistent : 1;
- __u8 curr : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 curr : 1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 persistent : 1;
- __u8 feature_version : 4;
- __u8 reserved1 : 2;
-#endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 add_len;
-#ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved2 : 7;
- __u8 write : 1;
+  __u8 reserved1 : 2;
+  __u8 feature_version : 4;
+  __u8 persistent : 1;
+  __u8 curr : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 write : 1;
- __u8 reserved2 : 7;
-#endif
+  __u8 curr : 1;
+  __u8 persistent : 1;
+  __u8 feature_version : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved3;
- __u8 reserved4;
- __u8 reserved5;
+  __u8 reserved1 : 2;
+#endif
+  __u8 add_len;
+#ifdef __BIG_ENDIAN_BITFIELD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved2 : 7;
+  __u8 write : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 write : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved2 : 7;
+#endif
+  __u8 reserved3;
+  __u8 reserved4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved5;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rwrt_feature_desc {
- __be16 feature_code;
+  __be16 feature_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved1 : 2;
+  __u8 reserved1 : 2;
+  __u8 feature_version : 4;
+  __u8 persistent : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 feature_version : 4;
- __u8 persistent : 1;
- __u8 curr : 1;
+  __u8 curr : 1;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 curr : 1;
+  __u8 persistent : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 curr : 1;
- __u8 persistent : 1;
- __u8 feature_version : 4;
- __u8 reserved1 : 2;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 feature_version : 4;
+  __u8 reserved1 : 2;
 #endif
- __u8 add_len;
- __u32 last_lba;
- __u32 block_size;
+  __u8 add_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 blocking;
+  __u32 last_lba;
+  __u32 block_size;
+  __u16 blocking;
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved2 : 7;
- __u8 page_present : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved2 : 7;
+  __u8 page_present : 1;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 page_present : 1;
- __u8 reserved2 : 7;
-#endif
+  __u8 page_present : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved3;
+  __u8 reserved2 : 7;
+#endif
+  __u8 reserved3;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- __be16 disc_information_length;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be16 disc_information_length;
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved1 : 3;
- __u8 erasable : 1;
- __u8 border_status : 2;
+  __u8 reserved1 : 3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 disc_status : 2;
+  __u8 erasable : 1;
+  __u8 border_status : 2;
+  __u8 disc_status : 2;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 disc_status : 2;
- __u8 border_status : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 erasable : 1;
- __u8 reserved1 : 3;
+  __u8 disc_status : 2;
+  __u8 border_status : 2;
+  __u8 erasable : 1;
+  __u8 reserved1 : 3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #error "Please fix <asm/byteorder.h>"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __u8 n_first_track;
- __u8 n_sessions_lsb;
- __u8 first_track_lsb;
+  __u8 n_first_track;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 last_track_lsb;
+  __u8 n_sessions_lsb;
+  __u8 first_track_lsb;
+  __u8 last_track_lsb;
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 did_v : 1;
- __u8 dbc_v : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 uru : 1;
- __u8 reserved2 : 2;
- __u8 dbit : 1;
- __u8 mrw_status : 2;
+  __u8 did_v : 1;
+  __u8 dbc_v : 1;
+  __u8 uru : 1;
+  __u8 reserved2 : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 dbit : 1;
+  __u8 mrw_status : 2;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 mrw_status : 2;
- __u8 dbit : 1;
- __u8 reserved2 : 2;
+  __u8 mrw_status : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 uru : 1;
- __u8 dbc_v : 1;
- __u8 did_v : 1;
+  __u8 dbit : 1;
+  __u8 reserved2 : 2;
+  __u8 uru : 1;
+  __u8 dbc_v : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 did_v : 1;
 #endif
+  __u8 disc_type;
+  __u8 n_sessions_msb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 disc_type;
- __u8 n_sessions_msb;
- __u8 first_track_msb;
- __u8 last_track_msb;
+  __u8 first_track_msb;
+  __u8 last_track_msb;
+  __u32 disc_id;
+  __u32 lead_in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 disc_id;
- __u32 lead_in;
- __u32 lead_out;
- __u8 disc_bar_code[8];
+  __u32 lead_out;
+  __u8 disc_bar_code[8];
+  __u8 reserved3;
+  __u8 n_opc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved3;
- __u8 n_opc;
 } disc_information;
 typedef struct {
+  __be16 track_information_length;
+  __u8 track_lsb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 track_information_length;
- __u8 track_lsb;
- __u8 session_lsb;
- __u8 reserved1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 session_lsb;
+  __u8 reserved1;
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved2 : 2;
- __u8 damage : 1;
- __u8 copy : 1;
+  __u8 reserved2 : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 track_mode : 4;
- __u8 rt : 1;
- __u8 blank : 1;
- __u8 packet : 1;
+  __u8 damage : 1;
+  __u8 copy : 1;
+  __u8 track_mode : 4;
+  __u8 rt : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fp : 1;
- __u8 data_mode : 4;
- __u8 reserved3 : 6;
- __u8 lra_v : 1;
+  __u8 blank : 1;
+  __u8 packet : 1;
+  __u8 fp : 1;
+  __u8 data_mode : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 nwa_v : 1;
+  __u8 reserved3 : 6;
+  __u8 lra_v : 1;
+  __u8 nwa_v : 1;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 track_mode : 4;
- __u8 copy : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 damage : 1;
- __u8 reserved2 : 2;
- __u8 data_mode : 4;
- __u8 fp : 1;
+  __u8 track_mode : 4;
+  __u8 copy : 1;
+  __u8 damage : 1;
+  __u8 reserved2 : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 packet : 1;
- __u8 blank : 1;
- __u8 rt : 1;
- __u8 nwa_v : 1;
+  __u8 data_mode : 4;
+  __u8 fp : 1;
+  __u8 packet : 1;
+  __u8 blank : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 lra_v : 1;
- __u8 reserved3 : 6;
+  __u8 rt : 1;
+  __u8 nwa_v : 1;
+  __u8 lra_v : 1;
+  __u8 reserved3 : 6;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __be32 track_start;
+  __be32 track_start;
+  __be32 next_writable;
+  __be32 free_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 next_writable;
- __be32 free_blocks;
- __be32 fixed_packet_size;
- __be32 track_size;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 last_rec_address;
+  __be32 fixed_packet_size;
+  __be32 track_size;
+  __be32 last_rec_address;
 } track_information;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct feature_header {
- __u32 data_len;
+  __u32 data_len;
+  __u8 reserved1;
+  __u8 reserved2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved1;
- __u8 reserved2;
- __u16 curr_profile;
+  __u16 curr_profile;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mode_page_header {
- __be16 mode_data_length;
- __u8 medium_type;
- __u8 reserved1;
+  __be16 mode_data_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved2;
- __u8 reserved3;
- __be16 desc_length;
+  __u8 medium_type;
+  __u8 reserved1;
+  __u8 reserved2;
+  __u8 reserved3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be16 desc_length;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rm_feature_desc {
- __be16 feature_code;
-#ifdef __BIG_ENDIAN_BITFIELD
- __u8 reserved1:2;
+  __be16 feature_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 feature_version:4;
- __u8 persistent:1;
- __u8 curr:1;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved1 : 2;
+  __u8 feature_version : 4;
+  __u8 persistent : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 curr : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 curr : 1;
+  __u8 persistent : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 feature_version : 4;
+  __u8 reserved1 : 2;
+#endif
+  __u8 add_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 mech_type : 3;
+  __u8 load : 1;
+  __u8 eject : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 pvnt_jmpr : 1;
+  __u8 dbml : 1;
+  __u8 lock : 1;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 curr:1;
- __u8 persistent:1;
- __u8 feature_version:4;
- __u8 reserved1:2;
+  __u8 lock : 1;
+  __u8 dbml : 1;
+  __u8 pvnt_jmpr : 1;
+  __u8 eject : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 load : 1;
+  __u8 mech_type : 3;
 #endif
- __u8 add_len;
-#ifdef __BIG_ENDIAN_BITFIELD
- __u8 mech_type:3;
+  __u8 reserved2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 load:1;
- __u8 eject:1;
- __u8 pvnt_jmpr:1;
- __u8 dbml:1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 lock:1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 lock:1;
- __u8 dbml:1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pvnt_jmpr:1;
- __u8 eject:1;
- __u8 load:1;
- __u8 mech_type:3;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#endif
- __u8 reserved2;
- __u8 reserved3;
- __u8 reserved4;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved3;
+  __u8 reserved4;
 };
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/cgroupstats.h b/libc/kernel/uapi/linux/cgroupstats.h
index 04dfbcb..03794e4 100644
--- a/libc/kernel/uapi/linux/cgroupstats.h
+++ b/libc/kernel/uapi/linux/cgroupstats.h
@@ -22,34 +22,34 @@
 #include <linux/taskstats.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cgroupstats {
- __u64 nr_sleeping;
- __u64 nr_running;
- __u64 nr_stopped;
+  __u64 nr_sleeping;
+  __u64 nr_running;
+  __u64 nr_stopped;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 nr_uninterruptible;
- __u64 nr_io_wait;
+  __u64 nr_uninterruptible;
+  __u64 nr_io_wait;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CGROUPSTATS_CMD_UNSPEC = __TASKSTATS_CMD_MAX,
- CGROUPSTATS_CMD_GET,
- CGROUPSTATS_CMD_NEW,
- __CGROUPSTATS_CMD_MAX,
+  CGROUPSTATS_CMD_UNSPEC = __TASKSTATS_CMD_MAX,
+  CGROUPSTATS_CMD_GET,
+  CGROUPSTATS_CMD_NEW,
+  __CGROUPSTATS_CMD_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CGROUPSTATS_CMD_MAX (__CGROUPSTATS_CMD_MAX - 1)
 enum {
- CGROUPSTATS_TYPE_UNSPEC = 0,
+  CGROUPSTATS_TYPE_UNSPEC = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CGROUPSTATS_TYPE_CGROUP_STATS,
- __CGROUPSTATS_TYPE_MAX,
+  CGROUPSTATS_TYPE_CGROUP_STATS,
+  __CGROUPSTATS_TYPE_MAX,
 };
 #define CGROUPSTATS_TYPE_MAX (__CGROUPSTATS_TYPE_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- CGROUPSTATS_CMD_ATTR_UNSPEC = 0,
- CGROUPSTATS_CMD_ATTR_FD,
- __CGROUPSTATS_CMD_ATTR_MAX,
+  CGROUPSTATS_CMD_ATTR_UNSPEC = 0,
+  CGROUPSTATS_CMD_ATTR_FD,
+  __CGROUPSTATS_CMD_ATTR_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CGROUPSTATS_CMD_ATTR_MAX (__CGROUPSTATS_CMD_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/chio.h b/libc/kernel/uapi/linux/chio.h
index 526ee02..9e34ddf 100644
--- a/libc/kernel/uapi/linux/chio.h
+++ b/libc/kernel/uapi/linux/chio.h
@@ -27,62 +27,62 @@
 #define CHET_V4 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct changer_params {
- int cp_curpicker;
- int cp_npickers;
- int cp_nslots;
+  int cp_curpicker;
+  int cp_npickers;
+  int cp_nslots;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cp_nportals;
- int cp_ndrives;
+  int cp_nportals;
+  int cp_ndrives;
 };
 struct changer_vendor_params {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cvp_n1;
- char cvp_label1[16];
- int cvp_n2;
- char cvp_label2[16];
+  int cvp_n1;
+  char cvp_label1[16];
+  int cvp_n2;
+  char cvp_label2[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cvp_n3;
- char cvp_label3[16];
- int cvp_n4;
- char cvp_label4[16];
+  int cvp_n3;
+  char cvp_label3[16];
+  int cvp_n4;
+  char cvp_label4[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int reserved[8];
+  int reserved[8];
 };
 struct changer_move {
- int cm_fromtype;
+  int cm_fromtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cm_fromunit;
- int cm_totype;
- int cm_tounit;
- int cm_flags;
+  int cm_fromunit;
+  int cm_totype;
+  int cm_tounit;
+  int cm_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CM_INVERT 1
 struct changer_exchange {
- int ce_srctype;
+  int ce_srctype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ce_srcunit;
- int ce_fdsttype;
- int ce_fdstunit;
- int ce_sdsttype;
+  int ce_srcunit;
+  int ce_fdsttype;
+  int ce_fdstunit;
+  int ce_sdsttype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ce_sdstunit;
- int ce_flags;
+  int ce_sdstunit;
+  int ce_flags;
 };
 #define CE_INVERT1 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CE_INVERT2 2
 struct changer_position {
- int cp_type;
- int cp_unit;
+  int cp_type;
+  int cp_unit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cp_flags;
+  int cp_flags;
 };
 #define CP_INVERT 1
 struct changer_element_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ces_type;
- unsigned char __user *ces_data;
+  int ces_type;
+  unsigned char __user * ces_data;
 };
 #define CESTATUS_FULL 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -93,20 +93,20 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CESTATUS_INENAB 0x20
 struct changer_get_element {
- int cge_type;
- int cge_unit;
+  int cge_type;
+  int cge_unit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cge_status;
- int cge_errno;
- int cge_srctype;
- int cge_srcunit;
+  int cge_status;
+  int cge_errno;
+  int cge_srctype;
+  int cge_srcunit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cge_id;
- int cge_lun;
- char cge_pvoltag[36];
- char cge_avoltag[36];
+  int cge_id;
+  int cge_lun;
+  char cge_pvoltag[36];
+  char cge_avoltag[36];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cge_flags;
+  int cge_flags;
 };
 #define CGE_ERRNO 0x01
 #define CGE_INVERT 0x02
@@ -117,27 +117,27 @@
 #define CGE_AVOLTAG 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct changer_set_voltag {
- int csv_type;
- int csv_unit;
- char csv_voltag[36];
+  int csv_type;
+  int csv_unit;
+  char csv_voltag[36];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int csv_flags;
+  int csv_flags;
 };
 #define CSV_PVOLTAG 0x01
 #define CSV_AVOLTAG 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CSV_CLEARTAG 0x04
-#define CHIOMOVE _IOW('c', 1,struct changer_move)
-#define CHIOEXCHANGE _IOW('c', 2,struct changer_exchange)
-#define CHIOPOSITION _IOW('c', 3,struct changer_position)
+#define CHIOMOVE _IOW('c', 1, struct changer_move)
+#define CHIOEXCHANGE _IOW('c', 2, struct changer_exchange)
+#define CHIOPOSITION _IOW('c', 3, struct changer_position)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CHIOGPICKER _IOR('c', 4,int)
-#define CHIOSPICKER _IOW('c', 5,int)
-#define CHIOGPARAMS _IOR('c', 6,struct changer_params)
-#define CHIOGSTATUS _IOW('c', 8,struct changer_element_status)
+#define CHIOGPICKER _IOR('c', 4, int)
+#define CHIOSPICKER _IOW('c', 5, int)
+#define CHIOGPARAMS _IOR('c', 6, struct changer_params)
+#define CHIOGSTATUS _IOW('c', 8, struct changer_element_status)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CHIOGELEM _IOW('c',16,struct changer_get_element)
-#define CHIOINITELEM _IO('c',17)
-#define CHIOSVOLTAG _IOW('c',18,struct changer_set_voltag)
-#define CHIOGVPARAMS _IOR('c',19,struct changer_vendor_params)
+#define CHIOGELEM _IOW('c', 16, struct changer_get_element)
+#define CHIOINITELEM _IO('c', 17)
+#define CHIOSVOLTAG _IOW('c', 18, struct changer_set_voltag)
+#define CHIOGVPARAMS _IOR('c', 19, struct changer_vendor_params)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/cm4000_cs.h b/libc/kernel/uapi/linux/cm4000_cs.h
index 99fe701..b185c75 100644
--- a/libc/kernel/uapi/linux/cm4000_cs.h
+++ b/libc/kernel/uapi/linux/cm4000_cs.h
@@ -24,32 +24,32 @@
 #define MAX_ATR 33
 #define CM4000_MAX_DEV 4
 typedef struct atreq {
- __s32 atr_len;
+  __s32 atr_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char atr[64];
- __s32 power_act;
- unsigned char bIFSD;
- unsigned char bIFSC;
+  unsigned char atr[64];
+  __s32 power_act;
+  unsigned char bIFSD;
+  unsigned char bIFSC;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } atreq_t;
 typedef struct ptsreq {
- __u32 protocol;
- unsigned char flags;
+  __u32 protocol;
+  unsigned char flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char pts1;
- unsigned char pts2;
- unsigned char pts3;
+  unsigned char pts1;
+  unsigned char pts2;
+  unsigned char pts3;
 } ptsreq_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CM_IOC_MAGIC 'c'
 #define CM_IOC_MAXNR 255
-#define CM_IOCGSTATUS _IOR (CM_IOC_MAGIC, 0, unsigned char *)
+#define CM_IOCGSTATUS _IOR(CM_IOC_MAGIC, 0, unsigned char *)
 #define CM_IOCGATR _IOWR(CM_IOC_MAGIC, 1, atreq_t *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CM_IOCSPTS _IOW (CM_IOC_MAGIC, 2, ptsreq_t *)
-#define CM_IOCSRDR _IO (CM_IOC_MAGIC, 3)
-#define CM_IOCARDOFF _IO (CM_IOC_MAGIC, 4)
-#define CM_IOSDBGLVL _IOW(CM_IOC_MAGIC, 250, int*)
+#define CM_IOCSPTS _IOW(CM_IOC_MAGIC, 2, ptsreq_t *)
+#define CM_IOCSRDR _IO(CM_IOC_MAGIC, 3)
+#define CM_IOCARDOFF _IO(CM_IOC_MAGIC, 4)
+#define CM_IOSDBGLVL _IOW(CM_IOC_MAGIC, 250, int *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CM_CARD_INSERTED 0x01
 #define CM_CARD_POWERED 0x02
diff --git a/libc/kernel/uapi/linux/cn_proc.h b/libc/kernel/uapi/linux/cn_proc.h
index ae4d741..edeb424 100644
--- a/libc/kernel/uapi/linux/cn_proc.h
+++ b/libc/kernel/uapi/linux/cn_proc.h
@@ -21,91 +21,91 @@
 #include <linux/types.h>
 enum proc_cn_mcast_op {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PROC_CN_MCAST_LISTEN = 1,
- PROC_CN_MCAST_IGNORE = 2
+  PROC_CN_MCAST_LISTEN = 1,
+  PROC_CN_MCAST_IGNORE = 2
 };
 struct proc_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum what {
- PROC_EVENT_NONE = 0x00000000,
- PROC_EVENT_FORK = 0x00000001,
- PROC_EVENT_EXEC = 0x00000002,
+  enum what {
+    PROC_EVENT_NONE = 0x00000000,
+    PROC_EVENT_FORK = 0x00000001,
+    PROC_EVENT_EXEC = 0x00000002,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PROC_EVENT_UID = 0x00000004,
- PROC_EVENT_GID = 0x00000040,
- PROC_EVENT_SID = 0x00000080,
- PROC_EVENT_PTRACE = 0x00000100,
+    PROC_EVENT_UID = 0x00000004,
+    PROC_EVENT_GID = 0x00000040,
+    PROC_EVENT_SID = 0x00000080,
+    PROC_EVENT_PTRACE = 0x00000100,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PROC_EVENT_COMM = 0x00000200,
- PROC_EVENT_COREDUMP = 0x40000000,
- PROC_EVENT_EXIT = 0x80000000
- } what;
+    PROC_EVENT_COMM = 0x00000200,
+    PROC_EVENT_COREDUMP = 0x40000000,
+    PROC_EVENT_EXIT = 0x80000000
+  } what;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cpu;
- __u64 __attribute__((aligned(8))) timestamp_ns;
- union {
- struct {
+  __u32 cpu;
+  __u64 __attribute__((aligned(8))) timestamp_ns;
+  union {
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 err;
- } ack;
- struct fork_proc_event {
- __kernel_pid_t parent_pid;
+      __u32 err;
+    } ack;
+    struct fork_proc_event {
+      __kernel_pid_t parent_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t parent_tgid;
- __kernel_pid_t child_pid;
- __kernel_pid_t child_tgid;
- } fork;
+      __kernel_pid_t parent_tgid;
+      __kernel_pid_t child_pid;
+      __kernel_pid_t child_tgid;
+    } fork;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct exec_proc_event {
- __kernel_pid_t process_pid;
- __kernel_pid_t process_tgid;
- } exec;
+    struct exec_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+    } exec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct id_proc_event {
- __kernel_pid_t process_pid;
- __kernel_pid_t process_tgid;
- union {
+    struct id_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ruid;
- __u32 rgid;
- } r;
- union {
+        __u32 ruid;
+        __u32 rgid;
+      } r;
+      union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 euid;
- __u32 egid;
- } e;
- } id;
+        __u32 euid;
+        __u32 egid;
+      } e;
+    } id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sid_proc_event {
- __kernel_pid_t process_pid;
- __kernel_pid_t process_tgid;
- } sid;
+    struct sid_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+    } sid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ptrace_proc_event {
- __kernel_pid_t process_pid;
- __kernel_pid_t process_tgid;
- __kernel_pid_t tracer_pid;
+    struct ptrace_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      __kernel_pid_t tracer_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t tracer_tgid;
- } ptrace;
- struct comm_proc_event {
- __kernel_pid_t process_pid;
+      __kernel_pid_t tracer_tgid;
+    } ptrace;
+    struct comm_proc_event {
+      __kernel_pid_t process_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t process_tgid;
- char comm[16];
- } comm;
- struct coredump_proc_event {
+      __kernel_pid_t process_tgid;
+      char comm[16];
+    } comm;
+    struct coredump_proc_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t process_pid;
- __kernel_pid_t process_tgid;
- } coredump;
- struct exit_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+    } coredump;
+    struct exit_proc_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t process_pid;
- __kernel_pid_t process_tgid;
- __u32 exit_code, exit_signal;
- } exit;
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      __u32 exit_code, exit_signal;
+    } exit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } event_data;
+  } event_data;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/coda.h b/libc/kernel/uapi/linux/coda.h
index 4d58179..dfe7b91 100644
--- a/libc/kernel/uapi/linux/coda.h
+++ b/libc/kernel/uapi/linux/coda.h
@@ -44,9 +44,9 @@
 #endif
 #define inline
 struct timespec {
- long ts_sec;
+  long ts_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long ts_nsec;
+  long ts_nsec;
 };
 #else
 #include <sys/time.h>
@@ -69,9 +69,9 @@
 #endif
 #ifdef __CYGWIN32__
 struct timespec {
- time_t tv_sec;
+  time_t tv_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long tv_nsec;
+  long tv_nsec;
 };
 #endif
 #ifndef __BIT_TYPES_DEFINED__
@@ -108,16 +108,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _VENUS_DIRENT_T_ 1
 struct venus_dirent {
- u_int32_t d_fileno;
- u_int16_t d_reclen;
+  u_int32_t d_fileno;
+  u_int16_t d_reclen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- u_int8_t d_type;
- u_int8_t d_namlen;
- char d_name[CODA_MAXNAMLEN + 1];
+  u_int8_t d_type;
+  u_int8_t d_namlen;
+  char d_name[CODA_MAXNAMLEN + 1];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef DIRSIZ
-#define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) +   (((dp)->d_namlen+1 + 3) &~ 3))
+#define DIRSIZ(dp) ((sizeof(struct venus_dirent) - (CODA_MAXNAMLEN + 1)) + (((dp)->d_namlen + 1 + 3) & ~3))
 #define CDT_UNKNOWN 0
 #define CDT_FIFO 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -141,486 +141,499 @@
 #endif
 struct CodaFid {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- u_int32_t opaque[4];
+  u_int32_t opaque[4];
 };
-#define coda_f2i(fid)  (fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)
+#define coda_f2i(fid) (fid ? (fid->opaque[3] ^ (fid->opaque[2] << 10) ^ (fid->opaque[1] << 20) ^ fid->opaque[0]) : 0)
 #ifndef _VENUS_VATTR_T_
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _VENUS_VATTR_T_
-enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };
-struct coda_vattr {
- long va_type;
+enum coda_vtype {
+  C_VNON,
+  C_VREG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- u_short va_mode;
- short va_nlink;
- vuid_t va_uid;
- vgid_t va_gid;
+  C_VDIR,
+  C_VBLK,
+  C_VCHR,
+  C_VLNK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long va_fileid;
- u_quad_t va_size;
- long va_blocksize;
- struct timespec va_atime;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec va_mtime;
- struct timespec va_ctime;
- u_long va_gen;
- u_long va_flags;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cdev_t va_rdev;
- u_quad_t va_bytes;
- u_quad_t va_filerev;
+  C_VSOCK,
+  C_VFIFO,
+  C_VBAD
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct coda_vattr {
+  long va_type;
+  u_short va_mode;
+  short va_nlink;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  vuid_t va_uid;
+  vgid_t va_gid;
+  long va_fileid;
+  u_quad_t va_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  long va_blocksize;
+  struct timespec va_atime;
+  struct timespec va_mtime;
+  struct timespec va_ctime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  u_long va_gen;
+  u_long va_flags;
+  cdev_t va_rdev;
+  u_quad_t va_bytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  u_quad_t va_filerev;
+};
 #endif
 struct coda_statfs {
- int32_t f_blocks;
- int32_t f_bfree;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t f_bavail;
- int32_t f_files;
- int32_t f_ffree;
+  int32_t f_blocks;
+  int32_t f_bfree;
+  int32_t f_bavail;
+  int32_t f_files;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int32_t f_ffree;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_ROOT 2
 #define CODA_OPEN_BY_FD 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_OPEN 4
 #define CODA_CLOSE 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_IOCTL 6
 #define CODA_GETATTR 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_SETATTR 8
 #define CODA_ACCESS 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_LOOKUP 10
 #define CODA_CREATE 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_REMOVE 12
 #define CODA_LINK 13
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_RENAME 14
 #define CODA_MKDIR 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_RMDIR 16
 #define CODA_SYMLINK 18
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_READLINK 19
 #define CODA_FSYNC 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_VGET 22
 #define CODA_SIGNAL 23
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_REPLACE 24
 #define CODA_FLUSH 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_PURGEUSER 26
 #define CODA_ZAPFILE 27
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_ZAPDIR 28
 #define CODA_PURGEFID 30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_OPEN_BY_PATH 31
 #define CODA_RESOLVE 32
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_REINTEGRATE 33
 #define CODA_STATFS 34
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_STORE 35
 #define CODA_RELEASE 36
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_NCALLS 37
 #define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
-#define VC_MAXDATASIZE 8192
-#define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) +  VC_MAXDATASIZE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VC_MAXDATASIZE 8192
+#define VC_MAXMSGSIZE sizeof(union inputArgs) + sizeof(union outputArgs) + VC_MAXDATASIZE
 #define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
 #define CODA_KERNEL_VERSION 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_in_hdr {
- u_int32_t opcode;
+  u_int32_t opcode;
+  u_int32_t unique;
+  pid_t pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- u_int32_t unique;
- pid_t pid;
- pid_t pgid;
- vuid_t uid;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  pid_t pgid;
+  vuid_t uid;
 };
 struct coda_out_hdr {
- u_int32_t opcode;
- u_int32_t unique;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- u_int32_t result;
+  u_int32_t opcode;
+  u_int32_t unique;
+  u_int32_t result;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_root_out {
- struct coda_out_hdr oh;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct CodaFid VFid;
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
 };
-struct coda_root_in {
- struct coda_in_hdr in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct coda_root_in {
+  struct coda_in_hdr in;
 };
 struct coda_open_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int flags;
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
 };
-struct coda_open_out {
- struct coda_out_hdr oh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cdev_t dev;
- ino_t inode;
+struct coda_open_out {
+  struct coda_out_hdr oh;
+  cdev_t dev;
+  ino_t inode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_store_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
+  int flags;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_store_out {
- struct coda_out_hdr out;
+  struct coda_out_hdr out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_release_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
+  int flags;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_release_out {
- struct coda_out_hdr out;
+  struct coda_out_hdr out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_close_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
+  int flags;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_close_out {
- struct coda_out_hdr out;
+  struct coda_out_hdr out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_ioctl_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int cmd;
- int len;
+  int cmd;
+  int len;
+  int rwflag;
+  char * data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int rwflag;
- char *data;
 };
 struct coda_ioctl_out {
+  struct coda_out_hdr oh;
+  int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- int len;
- caddr_t data;
+  caddr_t data;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_getattr_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
-};
+  struct coda_in_hdr ih;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct CodaFid VFid;
+};
 struct coda_getattr_out {
- struct coda_out_hdr oh;
- struct coda_vattr attr;
+  struct coda_out_hdr oh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct coda_vattr attr;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_setattr_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- struct coda_vattr attr;
+  struct coda_in_hdr ih;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct CodaFid VFid;
+  struct coda_vattr attr;
 };
 struct coda_setattr_out {
- struct coda_out_hdr out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct coda_out_hdr out;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_access_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
+  struct coda_in_hdr ih;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct CodaFid VFid;
+  int flags;
 };
 struct coda_access_out {
- struct coda_out_hdr out;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct coda_out_hdr out;
+};
 #define CLU_CASE_SENSITIVE 0x01
 #define CLU_CASE_INSENSITIVE 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_lookup_in {
- struct coda_in_hdr ih;
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int name;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct CodaFid VFid;
- int name;
- int flags;
+  int flags;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_lookup_out {
- struct coda_out_hdr oh;
- struct CodaFid VFid;
- int vtype;
+  struct coda_out_hdr oh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct CodaFid VFid;
+  int vtype;
 };
 struct coda_create_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_vattr attr;
- int excl;
- int mode;
- int name;
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
+  int excl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int mode;
+  int name;
 };
 struct coda_create_out {
- struct coda_out_hdr oh;
- struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_vattr attr;
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
 };
-struct coda_remove_in {
- struct coda_in_hdr ih;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct CodaFid VFid;
- int name;
+struct coda_remove_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_remove_out {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr out;
+  struct coda_out_hdr out;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_link_in {
- struct coda_in_hdr ih;
+  struct coda_in_hdr ih;
+  struct CodaFid sourceFid;
+  struct CodaFid destFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct CodaFid sourceFid;
- struct CodaFid destFid;
- int tname;
+  int tname;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_link_out {
- struct coda_out_hdr out;
+  struct coda_out_hdr out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_rename_in {
+  struct coda_in_hdr ih;
+  struct CodaFid sourceFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_in_hdr ih;
- struct CodaFid sourceFid;
- int srcname;
- struct CodaFid destFid;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int destname;
+  int srcname;
+  struct CodaFid destFid;
+  int destname;
 };
-struct coda_rename_out {
- struct coda_out_hdr out;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct coda_rename_out {
+  struct coda_out_hdr out;
 };
 struct coda_mkdir_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_vattr attr;
- int name;
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
+  int name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_mkdir_out {
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- struct CodaFid VFid;
- struct coda_vattr attr;
+  struct coda_vattr attr;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_rmdir_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int name;
+  struct coda_in_hdr ih;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct CodaFid VFid;
+  int name;
 };
 struct coda_rmdir_out {
- struct coda_out_hdr out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct coda_out_hdr out;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_symlink_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int srcname;
+  struct coda_in_hdr ih;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_vattr attr;
- int tname;
+  struct CodaFid VFid;
+  int srcname;
+  struct coda_vattr attr;
+  int tname;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_symlink_out {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr out;
+  struct coda_out_hdr out;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_readlink_in {
- struct coda_in_hdr ih;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct CodaFid VFid;
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
 };
-struct coda_readlink_out {
- struct coda_out_hdr oh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int count;
- caddr_t data;
+struct coda_readlink_out {
+  struct coda_out_hdr oh;
+  int count;
+  caddr_t data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_fsync_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_in_hdr ih;
- struct CodaFid VFid;
 };
 struct coda_fsync_out {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr out;
+  struct coda_out_hdr out;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_vget_in {
- struct coda_in_hdr ih;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct CodaFid VFid;
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
 };
-struct coda_vget_out {
- struct coda_out_hdr oh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct CodaFid VFid;
- int vtype;
+struct coda_vget_out {
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
+  int vtype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct coda_purgeuser_out {
+  struct coda_out_hdr oh;
+  vuid_t uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- vuid_t uid;
 };
 struct coda_zapfile_out {
+  struct coda_out_hdr oh;
+  struct CodaFid CodaFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- struct CodaFid CodaFid;
 };
 struct coda_zapdir_out {
+  struct coda_out_hdr oh;
+  struct CodaFid CodaFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- struct CodaFid CodaFid;
 };
 struct coda_purgefid_out {
+  struct coda_out_hdr oh;
+  struct CodaFid CodaFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- struct CodaFid CodaFid;
 };
 struct coda_replace_out {
+  struct coda_out_hdr oh;
+  struct CodaFid NewFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- struct CodaFid NewFid;
- struct CodaFid OldFid;
+  struct CodaFid OldFid;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_open_by_fd_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
+  struct coda_in_hdr ih;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct CodaFid VFid;
+  int flags;
 };
 struct coda_open_by_fd_out {
- struct coda_out_hdr oh;
- int fd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct coda_out_hdr oh;
+  int fd;
 };
 struct coda_open_by_path_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int flags;
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_open_by_path_out {
- struct coda_out_hdr oh;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int path;
+  struct coda_out_hdr oh;
+  int path;
 };
-struct coda_statfs_in {
- struct coda_in_hdr in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct coda_statfs_in {
+  struct coda_in_hdr in;
 };
 struct coda_statfs_out {
- struct coda_out_hdr oh;
- struct coda_statfs stat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct coda_out_hdr oh;
+  struct coda_statfs stat;
 };
 #define CODA_NOCACHE 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union inputArgs {
- struct coda_in_hdr ih;
+  struct coda_in_hdr ih;
+  struct coda_open_in coda_open;
+  struct coda_store_in coda_store;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_open_in coda_open;
- struct coda_store_in coda_store;
- struct coda_release_in coda_release;
- struct coda_close_in coda_close;
+  struct coda_release_in coda_release;
+  struct coda_close_in coda_close;
+  struct coda_ioctl_in coda_ioctl;
+  struct coda_getattr_in coda_getattr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_ioctl_in coda_ioctl;
- struct coda_getattr_in coda_getattr;
- struct coda_setattr_in coda_setattr;
- struct coda_access_in coda_access;
+  struct coda_setattr_in coda_setattr;
+  struct coda_access_in coda_access;
+  struct coda_lookup_in coda_lookup;
+  struct coda_create_in coda_create;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_lookup_in coda_lookup;
- struct coda_create_in coda_create;
- struct coda_remove_in coda_remove;
- struct coda_link_in coda_link;
+  struct coda_remove_in coda_remove;
+  struct coda_link_in coda_link;
+  struct coda_rename_in coda_rename;
+  struct coda_mkdir_in coda_mkdir;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_rename_in coda_rename;
- struct coda_mkdir_in coda_mkdir;
- struct coda_rmdir_in coda_rmdir;
- struct coda_symlink_in coda_symlink;
+  struct coda_rmdir_in coda_rmdir;
+  struct coda_symlink_in coda_symlink;
+  struct coda_readlink_in coda_readlink;
+  struct coda_fsync_in coda_fsync;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_readlink_in coda_readlink;
- struct coda_fsync_in coda_fsync;
- struct coda_vget_in coda_vget;
- struct coda_open_by_fd_in coda_open_by_fd;
+  struct coda_vget_in coda_vget;
+  struct coda_open_by_fd_in coda_open_by_fd;
+  struct coda_open_by_path_in coda_open_by_path;
+  struct coda_statfs_in coda_statfs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_open_by_path_in coda_open_by_path;
- struct coda_statfs_in coda_statfs;
 };
 union outputArgs {
+  struct coda_out_hdr oh;
+  struct coda_root_out coda_root;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_out_hdr oh;
- struct coda_root_out coda_root;
- struct coda_open_out coda_open;
- struct coda_ioctl_out coda_ioctl;
+  struct coda_open_out coda_open;
+  struct coda_ioctl_out coda_ioctl;
+  struct coda_getattr_out coda_getattr;
+  struct coda_lookup_out coda_lookup;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_getattr_out coda_getattr;
- struct coda_lookup_out coda_lookup;
- struct coda_create_out coda_create;
- struct coda_mkdir_out coda_mkdir;
+  struct coda_create_out coda_create;
+  struct coda_mkdir_out coda_mkdir;
+  struct coda_readlink_out coda_readlink;
+  struct coda_vget_out coda_vget;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_readlink_out coda_readlink;
- struct coda_vget_out coda_vget;
- struct coda_purgeuser_out coda_purgeuser;
- struct coda_zapfile_out coda_zapfile;
+  struct coda_purgeuser_out coda_purgeuser;
+  struct coda_zapfile_out coda_zapfile;
+  struct coda_zapdir_out coda_zapdir;
+  struct coda_purgefid_out coda_purgefid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_zapdir_out coda_zapdir;
- struct coda_purgefid_out coda_purgefid;
- struct coda_replace_out coda_replace;
- struct coda_open_by_fd_out coda_open_by_fd;
+  struct coda_replace_out coda_replace;
+  struct coda_open_by_fd_out coda_open_by_fd;
+  struct coda_open_by_path_out coda_open_by_path;
+  struct coda_statfs_out coda_statfs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_open_by_path_out coda_open_by_path;
- struct coda_statfs_out coda_statfs;
 };
 union coda_downcalls {
+  struct coda_purgeuser_out purgeuser;
+  struct coda_zapfile_out zapfile;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_purgeuser_out purgeuser;
- struct coda_zapfile_out zapfile;
- struct coda_zapdir_out zapdir;
- struct coda_purgefid_out purgefid;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct coda_replace_out replace;
+  struct coda_zapdir_out zapdir;
+  struct coda_purgefid_out purgefid;
+  struct coda_replace_out replace;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PIOCPARM_MASK 0x0000ffff
 struct ViceIoctl {
+  void __user * in;
+  void __user * out;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *in;
- void __user *out;
- u_short in_size;
- u_short out_size;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  u_short in_size;
+  u_short out_size;
 };
 struct PioctlData {
- const char __user *path;
- int follow;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ViceIoctl vi;
+  const char __user * path;
+  int follow;
+  struct ViceIoctl vi;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_CONTROL ".CONTROL"
 #define CODA_CONTROLLEN 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CTL_INO -1
+#define CTL_INO - 1
 #define CODA_MOUNT_VERSION 1
-struct coda_mount_data {
- int version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int fd;
+struct coda_mount_data {
+  int version;
+  int fd;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/coda_psdev.h b/libc/kernel/uapi/linux/coda_psdev.h
index 79da042..6e4632f 100644
--- a/libc/kernel/uapi/linux/coda_psdev.h
+++ b/libc/kernel/uapi/linux/coda_psdev.h
@@ -23,16 +23,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_CODADEVS 5
 struct upc_req {
- struct list_head uc_chain;
- caddr_t uc_data;
+  struct list_head uc_chain;
+  caddr_t uc_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- u_short uc_flags;
- u_short uc_inSize;
- u_short uc_outSize;
- u_short uc_opcode;
+  u_short uc_flags;
+  u_short uc_inSize;
+  u_short uc_outSize;
+  u_short uc_opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int uc_unique;
- wait_queue_head_t uc_sleep;
+  int uc_unique;
+  wait_queue_head_t uc_sleep;
 };
 #define CODA_REQ_ASYNC 0x1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/coff.h b/libc/kernel/uapi/linux/coff.h
index cdbb8d8..87691db 100644
--- a/libc/kernel/uapi/linux/coff.h
+++ b/libc/kernel/uapi/linux/coff.h
@@ -19,24 +19,24 @@
 #define E_SYMNMLEN 8
 #define E_FILNMLEN 14
 #define E_DIMNUM 4
-#define COFF_SHORT_L(ps) ((short)(((unsigned short)((unsigned char)ps[1])<<8)|  ((unsigned short)((unsigned char)ps[0]))))
+#define COFF_SHORT_L(ps) ((short) (((unsigned short) ((unsigned char) ps[1]) << 8) | ((unsigned short) ((unsigned char) ps[0]))))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define COFF_LONG_L(ps) (((long)(((unsigned long)((unsigned char)ps[3])<<24) |  ((unsigned long)((unsigned char)ps[2])<<16) |  ((unsigned long)((unsigned char)ps[1])<<8) |  ((unsigned long)((unsigned char)ps[0])))))
-#define COFF_SHORT_H(ps) ((short)(((unsigned short)((unsigned char)ps[0])<<8)|  ((unsigned short)((unsigned char)ps[1]))))
-#define COFF_LONG_H(ps) (((long)(((unsigned long)((unsigned char)ps[0])<<24) |  ((unsigned long)((unsigned char)ps[1])<<16) |  ((unsigned long)((unsigned char)ps[2])<<8) |  ((unsigned long)((unsigned char)ps[3])))))
+#define COFF_LONG_L(ps) (((long) (((unsigned long) ((unsigned char) ps[3]) << 24) | ((unsigned long) ((unsigned char) ps[2]) << 16) | ((unsigned long) ((unsigned char) ps[1]) << 8) | ((unsigned long) ((unsigned char) ps[0])))))
+#define COFF_SHORT_H(ps) ((short) (((unsigned short) ((unsigned char) ps[0]) << 8) | ((unsigned short) ((unsigned char) ps[1]))))
+#define COFF_LONG_H(ps) (((long) (((unsigned long) ((unsigned char) ps[0]) << 24) | ((unsigned long) ((unsigned char) ps[1]) << 16) | ((unsigned long) ((unsigned char) ps[2]) << 8) | ((unsigned long) ((unsigned char) ps[3])))))
 #define COFF_LONG(v) COFF_LONG_L(v)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_SHORT(v) COFF_SHORT_L(v)
 struct COFF_filehdr {
- char f_magic[2];
- char f_nscns[2];
+  char f_magic[2];
+  char f_nscns[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char f_timdat[4];
- char f_symptr[4];
- char f_nsyms[4];
- char f_opthdr[2];
+  char f_timdat[4];
+  char f_symptr[4];
+  char f_nsyms[4];
+  char f_opthdr[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char f_flags[2];
+  char f_flags[2];
 };
 #define COFF_F_RELFLG 0000001
 #define COFF_F_EXEC 0000002
@@ -58,186 +58,182 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_FILHDR struct COFF_filehdr
 #define COFF_FILHSZ sizeof(COFF_FILHDR)
-typedef struct
-{
+typedef struct {
+  char magic[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char magic[2];
- char vstamp[2];
- char tsize[4];
- char dsize[4];
+  char vstamp[2];
+  char tsize[4];
+  char dsize[4];
+  char bsize[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char bsize[4];
- char entry[4];
- char text_start[4];
- char data_start[4];
+  char entry[4];
+  char text_start[4];
+  char data_start[4];
+} COFF_AOUTHDR;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-}
-COFF_AOUTHDR;
 #define COFF_AOUTSZ (sizeof(COFF_AOUTHDR))
 #define COFF_STMAGIC 0401
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_OMAGIC 0404
 #define COFF_JMAGIC 0407
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_DMAGIC 0410
 #define COFF_ZMAGIC 0413
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_SHMAGIC 0443
 struct COFF_scnhdr {
- char s_name[8];
- char s_paddr[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char s_vaddr[4];
- char s_size[4];
- char s_scnptr[4];
- char s_relptr[4];
+  char s_name[8];
+  char s_paddr[4];
+  char s_vaddr[4];
+  char s_size[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char s_lnnoptr[4];
- char s_nreloc[2];
- char s_nlnno[2];
- char s_flags[4];
+  char s_scnptr[4];
+  char s_relptr[4];
+  char s_lnnoptr[4];
+  char s_nreloc[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char s_nlnno[2];
+  char s_flags[4];
 };
 #define COFF_SCNHDR struct COFF_scnhdr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_SCNHSZ sizeof(COFF_SCNHDR)
 #define COFF_TEXT ".text"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_DATA ".data"
 #define COFF_BSS ".bss"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_COMMENT ".comment"
 #define COFF_LIB ".lib"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_SECT_TEXT 0
 #define COFF_SECT_DATA 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_SECT_BSS 2
 #define COFF_SECT_REQD 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_STYP_REG 0x00
 #define COFF_STYP_DSECT 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_STYP_NOLOAD 0x02
 #define COFF_STYP_GROUP 0x04
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_STYP_PAD 0x08
 #define COFF_STYP_COPY 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_STYP_TEXT 0x20
 #define COFF_STYP_DATA 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_STYP_BSS 0x80
 #define COFF_STYP_INFO 0x200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_STYP_OVER 0x400
 #define COFF_STYP_LIB 0x800
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct COFF_slib {
- char sl_entsz[4];
- char sl_pathndx[4];
-};
+  char sl_entsz[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char sl_pathndx[4];
+};
 #define COFF_SLIBHD struct COFF_slib
 #define COFF_SLIBSZ sizeof(COFF_SLIBHD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct COFF_lineno {
- union {
+  union {
+    char l_symndx[4];
+    char l_paddr[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char l_symndx[4];
- char l_paddr[4];
- } l_addr;
- char l_lnno[2];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } l_addr;
+  char l_lnno[2];
 };
 #define COFF_LINENO struct COFF_lineno
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_LINESZ 6
 #define COFF_E_SYMNMLEN 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_E_FILNMLEN 14
 #define COFF_E_DIMNUM 4
-struct COFF_syment
-{
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- char e_name[E_SYMNMLEN];
- struct {
- char e_zeroes[4];
+struct COFF_syment {
+  union {
+    char e_name[E_SYMNMLEN];
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char e_offset[4];
- } e;
- } e;
- char e_value[4];
+      char e_zeroes[4];
+      char e_offset[4];
+    } e;
+  } e;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char e_scnum[2];
- char e_type[2];
- char e_sclass[1];
- char e_numaux[1];
+  char e_value[4];
+  char e_scnum[2];
+  char e_type[2];
+  char e_sclass[1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char e_numaux[1];
 };
 #define COFF_N_BTMASK (0xf)
 #define COFF_N_TMASK (0x30)
-#define COFF_N_BTSHFT (4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define COFF_N_BTSHFT (4)
 #define COFF_N_TSHIFT (2)
 union COFF_auxent {
- struct {
- char x_tagndx[4];
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- char x_lnno[2];
- char x_size[2];
+    char x_tagndx[4];
+    union {
+      struct {
+        char x_lnno[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } x_lnsz;
- char x_fsize[4];
- } x_misc;
- union {
+        char x_size[2];
+      } x_lnsz;
+      char x_fsize[4];
+    } x_misc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- char x_lnnoptr[4];
- char x_endndx[4];
- } x_fcn;
+    union {
+      struct {
+        char x_lnnoptr[4];
+        char x_endndx[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- char x_dimen[E_DIMNUM][2];
- } x_ary;
- } x_fcnary;
+      } x_fcn;
+      struct {
+        char x_dimen[E_DIMNUM][2];
+      } x_ary;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char x_tvndx[2];
- } x_sym;
- union {
- char x_fname[E_FILNMLEN];
+    } x_fcnary;
+    char x_tvndx[2];
+  } x_sym;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- char x_zeroes[4];
- char x_offset[4];
- } x_n;
+    char x_fname[E_FILNMLEN];
+    struct {
+      char x_zeroes[4];
+      char x_offset[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } x_file;
- struct {
- char x_scnlen[4];
- char x_nreloc[2];
+    } x_n;
+  } x_file;
+  struct {
+    char x_scnlen[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char x_nlinno[2];
- } x_scn;
- struct {
- char x_tvfill[4];
+    char x_nreloc[2];
+    char x_nlinno[2];
+  } x_scn;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char x_tvlen[2];
- char x_tvran[2][2];
- } x_tv;
+    char x_tvfill[4];
+    char x_tvlen[2];
+    char x_tvran[2][2];
+  } x_tv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COFF_SYMENT struct COFF_syment
 #define COFF_SYMESZ 18
 #define COFF_AUXENT union COFF_auxent
-#define COFF_AUXESZ 18
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define COFF_AUXESZ 18
 #define COFF_ETEXT "etext"
 struct COFF_reloc {
- char r_vaddr[4];
- char r_symndx[4];
+  char r_vaddr[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char r_type[2];
+  char r_symndx[4];
+  char r_type[2];
 };
 #define COFF_RELOC struct COFF_reloc
-#define COFF_RELSZ 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define COFF_RELSZ 10
 #define COFF_DEF_DATA_SECTION_ALIGNMENT 4
 #define COFF_DEF_BSS_SECTION_ALIGNMENT 4
 #define COFF_DEF_TEXT_SECTION_ALIGNMENT 4
-#define COFF_DEF_SECTION_ALIGNMENT 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define COFF_DEF_SECTION_ALIGNMENT 4
diff --git a/libc/kernel/uapi/linux/connector.h b/libc/kernel/uapi/linux/connector.h
index cb5e9e6..b9c478b 100644
--- a/libc/kernel/uapi/linux/connector.h
+++ b/libc/kernel/uapi/linux/connector.h
@@ -47,18 +47,18 @@
 #define CONNECTOR_MAX_MSG_SIZE 16384
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cb_id {
- __u32 idx;
- __u32 val;
+  __u32 idx;
+  __u32 val;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cn_msg {
- struct cb_id id;
- __u32 seq;
- __u32 ack;
+  struct cb_id id;
+  __u32 seq;
+  __u32 ack;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 len;
- __u16 flags;
- __u8 data[0];
+  __u16 len;
+  __u16 flags;
+  __u8 data[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/const.h b/libc/kernel/uapi/linux/const.h
index 9a85be7..25435ed 100644
--- a/libc/kernel/uapi/linux/const.h
+++ b/libc/kernel/uapi/linux/const.h
@@ -23,12 +23,12 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _AT(T,X) X
 #else
-#define __AC(X,Y) (X##Y)
-#define _AC(X,Y) __AC(X,Y)
+#define __AC(X,Y) (X ##Y)
+#define _AC(X,Y) __AC(X, Y)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _AT(T,X) ((T)(X))
+#define _AT(T,X) ((T) (X))
 #endif
-#define _BITUL(x) (_AC(1,UL) << (x))
-#define _BITULL(x) (_AC(1,ULL) << (x))
+#define _BITUL(x) (_AC(1, UL) << (x))
+#define _BITULL(x) (_AC(1, ULL) << (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/cramfs_fs.h b/libc/kernel/uapi/linux/cramfs_fs.h
index 80703cc..970c44b 100644
--- a/libc/kernel/uapi/linux/cramfs_fs.h
+++ b/libc/kernel/uapi/linux/cramfs_fs.h
@@ -32,29 +32,29 @@
 #define CRAMFS_MAXPATHLEN (((1 << CRAMFS_NAMELEN_WIDTH) - 1) << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cramfs_inode {
- __u32 mode:CRAMFS_MODE_WIDTH, uid:CRAMFS_UID_WIDTH;
- __u32 size:CRAMFS_SIZE_WIDTH, gid:CRAMFS_GID_WIDTH;
- __u32 namelen:CRAMFS_NAMELEN_WIDTH, offset:CRAMFS_OFFSET_WIDTH;
+  __u32 mode : CRAMFS_MODE_WIDTH, uid : CRAMFS_UID_WIDTH;
+  __u32 size : CRAMFS_SIZE_WIDTH, gid : CRAMFS_GID_WIDTH;
+  __u32 namelen : CRAMFS_NAMELEN_WIDTH, offset : CRAMFS_OFFSET_WIDTH;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct cramfs_info {
- __u32 crc;
- __u32 edition;
+  __u32 crc;
+  __u32 edition;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 blocks;
- __u32 files;
+  __u32 blocks;
+  __u32 files;
 };
 struct cramfs_super {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 magic;
- __u32 size;
- __u32 flags;
- __u32 future;
+  __u32 magic;
+  __u32 size;
+  __u32 flags;
+  __u32 future;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 signature[16];
- struct cramfs_info fsid;
- __u8 name[16];
- struct cramfs_inode root;
+  __u8 signature[16];
+  struct cramfs_info fsid;
+  __u8 name[16];
+  struct cramfs_inode root;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CRAMFS_FLAG_FSID_VERSION_2 0x00000001
@@ -63,6 +63,6 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CRAMFS_FLAG_WRONG_SIGNATURE 0x00000200
 #define CRAMFS_FLAG_SHIFTED_ROOT_OFFSET 0x00000400
-#define CRAMFS_SUPPORTED_FLAGS ( 0x000000ff   | CRAMFS_FLAG_HOLES   | CRAMFS_FLAG_WRONG_SIGNATURE   | CRAMFS_FLAG_SHIFTED_ROOT_OFFSET )
+#define CRAMFS_SUPPORTED_FLAGS (0x000000ff | CRAMFS_FLAG_HOLES | CRAMFS_FLAG_WRONG_SIGNATURE | CRAMFS_FLAG_SHIFTED_ROOT_OFFSET)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/cyclades.h b/libc/kernel/uapi/linux/cyclades.h
index 55c745e..7012fd0 100644
--- a/libc/kernel/uapi/linux/cyclades.h
+++ b/libc/kernel/uapi/linux/cyclades.h
@@ -21,23 +21,23 @@
 #include <linux/types.h>
 struct cyclades_monitor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long int_count;
- unsigned long char_count;
- unsigned long char_max;
- unsigned long char_last;
+  unsigned long int_count;
+  unsigned long char_count;
+  unsigned long char_max;
+  unsigned long char_last;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct cyclades_idle_stats {
- __kernel_time_t in_use;
- __kernel_time_t recv_idle;
+  __kernel_time_t in_use;
+  __kernel_time_t recv_idle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t xmit_idle;
- unsigned long recv_bytes;
- unsigned long xmit_bytes;
- unsigned long overruns;
+  __kernel_time_t xmit_idle;
+  unsigned long recv_bytes;
+  unsigned long xmit_bytes;
+  unsigned long overruns;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long frame_errs;
- unsigned long parity_errs;
+  unsigned long frame_errs;
+  unsigned long parity_errs;
 };
 #define CYCLADES_MAGIC 0x4359
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -64,14 +64,14 @@
 #define CYSETWAIT 0x435912
 #define CYGETWAIT 0x435913
 #define CZIOC ('M' << 8)
-#define CZ_NBOARDS (CZIOC|0xfa)
+#define CZ_NBOARDS (CZIOC | 0xfa)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CZ_BOOT_START (CZIOC|0xfb)
-#define CZ_BOOT_DATA (CZIOC|0xfc)
-#define CZ_BOOT_END (CZIOC|0xfd)
-#define CZ_TEST (CZIOC|0xfe)
+#define CZ_BOOT_START (CZIOC | 0xfb)
+#define CZ_BOOT_DATA (CZIOC | 0xfc)
+#define CZ_BOOT_END (CZIOC | 0xfd)
+#define CZ_TEST (CZIOC | 0xfe)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CZ_DEF_POLL (HZ/25)
+#define CZ_DEF_POLL (HZ / 25)
 #define MAX_BOARD 4
 #define MAX_DEV 256
 #define CYZ_MAX_SPEED 921600
@@ -79,14 +79,14 @@
 #define CYZ_FIFO_SIZE 16
 #define CYZ_BOOT_NWORDS 0x100
 struct CYZ_BOOT_CTRL {
- unsigned short nboard;
+  unsigned short nboard;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int status[MAX_BOARD];
- int nchannel[MAX_BOARD];
- int fw_rev[MAX_BOARD];
- unsigned long offset;
+  int status[MAX_BOARD];
+  int nchannel[MAX_BOARD];
+  int fw_rev[MAX_BOARD];
+  unsigned long offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long data[CYZ_BOOT_NWORDS];
+  unsigned long data[CYZ_BOOT_NWORDS];
 };
 #ifndef DP_WINDOW_SIZE
 #define DP_WINDOW_SIZE (0x00080000)
@@ -94,66 +94,66 @@
 #define ZE_DP_WINDOW_SIZE (0x00100000)
 #define CTRL_WINDOW_SIZE (0x00000080)
 struct CUSTOM_REG {
- __u32 fpga_id;
+  __u32 fpga_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fpga_version;
- __u32 cpu_start;
- __u32 cpu_stop;
- __u32 misc_reg;
+  __u32 fpga_version;
+  __u32 cpu_start;
+  __u32 cpu_stop;
+  __u32 misc_reg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 idt_mode;
- __u32 uart_irq_status;
- __u32 clear_timer0_irq;
- __u32 clear_timer1_irq;
+  __u32 idt_mode;
+  __u32 uart_irq_status;
+  __u32 clear_timer0_irq;
+  __u32 clear_timer1_irq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 clear_timer2_irq;
- __u32 test_register;
- __u32 test_count;
- __u32 timer_select;
+  __u32 clear_timer2_irq;
+  __u32 test_register;
+  __u32 test_count;
+  __u32 timer_select;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pr_uart_irq_status;
- __u32 ram_wait_state;
- __u32 uart_wait_state;
- __u32 timer_wait_state;
+  __u32 pr_uart_irq_status;
+  __u32 ram_wait_state;
+  __u32 uart_wait_state;
+  __u32 timer_wait_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ack_wait_state;
+  __u32 ack_wait_state;
 };
 struct RUNTIME_9060 {
- __u32 loc_addr_range;
+  __u32 loc_addr_range;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 loc_addr_base;
- __u32 loc_arbitr;
- __u32 endian_descr;
- __u32 loc_rom_range;
+  __u32 loc_addr_base;
+  __u32 loc_arbitr;
+  __u32 endian_descr;
+  __u32 loc_rom_range;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 loc_rom_base;
- __u32 loc_bus_descr;
- __u32 loc_range_mst;
- __u32 loc_base_mst;
+  __u32 loc_rom_base;
+  __u32 loc_bus_descr;
+  __u32 loc_range_mst;
+  __u32 loc_base_mst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 loc_range_io;
- __u32 pci_base_mst;
- __u32 pci_conf_io;
- __u32 filler1;
+  __u32 loc_range_io;
+  __u32 pci_base_mst;
+  __u32 pci_conf_io;
+  __u32 filler1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 filler2;
- __u32 filler3;
- __u32 filler4;
- __u32 mail_box_0;
+  __u32 filler2;
+  __u32 filler3;
+  __u32 filler4;
+  __u32 mail_box_0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mail_box_1;
- __u32 mail_box_2;
- __u32 mail_box_3;
- __u32 filler5;
+  __u32 mail_box_1;
+  __u32 mail_box_2;
+  __u32 mail_box_3;
+  __u32 filler5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 filler6;
- __u32 filler7;
- __u32 filler8;
- __u32 pci_doorbell;
+  __u32 filler6;
+  __u32 filler7;
+  __u32 filler8;
+  __u32 pci_doorbell;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 loc_doorbell;
- __u32 intr_ctrl_stat;
- __u32 init_ctrl;
+  __u32 loc_doorbell;
+  __u32 intr_ctrl_stat;
+  __u32 init_ctrl;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_RAM 0x00000001L
@@ -176,8 +176,8 @@
 #define ZF_TINACT ZF_TINACT_DEF
 struct FIRM_ID {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 signature;
- __u32 zfwctrl_addr;
+  __u32 signature;
+  __u32 zfwctrl_addr;
 };
 #define C_OS_LINUX 0x00000030
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -299,79 +299,79 @@
 #define C_CM_FATAL 0x91
 #define C_CM_HW_RESET 0x92
 struct CH_CTRL {
- __u32 op_mode;
+  __u32 op_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 intr_enable;
- __u32 sw_flow;
- __u32 flow_status;
- __u32 comm_baud;
+  __u32 intr_enable;
+  __u32 sw_flow;
+  __u32 flow_status;
+  __u32 comm_baud;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 comm_parity;
- __u32 comm_data_l;
- __u32 comm_flags;
- __u32 hw_flow;
+  __u32 comm_parity;
+  __u32 comm_data_l;
+  __u32 comm_flags;
+  __u32 hw_flow;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rs_control;
- __u32 rs_status;
- __u32 flow_xon;
- __u32 flow_xoff;
+  __u32 rs_control;
+  __u32 rs_status;
+  __u32 flow_xon;
+  __u32 flow_xoff;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 hw_overflow;
- __u32 sw_overflow;
- __u32 comm_error;
- __u32 ichar;
+  __u32 hw_overflow;
+  __u32 sw_overflow;
+  __u32 comm_error;
+  __u32 ichar;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 filler[7];
+  __u32 filler[7];
 };
 struct BUF_CTRL {
- __u32 flag_dma;
+  __u32 flag_dma;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_bufaddr;
- __u32 tx_bufsize;
- __u32 tx_threshold;
- __u32 tx_get;
+  __u32 tx_bufaddr;
+  __u32 tx_bufsize;
+  __u32 tx_threshold;
+  __u32 tx_get;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_put;
- __u32 rx_bufaddr;
- __u32 rx_bufsize;
- __u32 rx_threshold;
+  __u32 tx_put;
+  __u32 rx_bufaddr;
+  __u32 rx_bufsize;
+  __u32 rx_threshold;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_get;
- __u32 rx_put;
- __u32 filler[5];
+  __u32 rx_get;
+  __u32 rx_put;
+  __u32 filler[5];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct BOARD_CTRL {
- __u32 n_channel;
- __u32 fw_version;
- __u32 op_system;
+  __u32 n_channel;
+  __u32 fw_version;
+  __u32 op_system;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dr_version;
- __u32 inactivity;
- __u32 hcmd_channel;
- __u32 hcmd_param;
+  __u32 dr_version;
+  __u32 inactivity;
+  __u32 hcmd_channel;
+  __u32 hcmd_param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fwcmd_channel;
- __u32 fwcmd_param;
- __u32 zf_int_queue_addr;
- __u32 filler[6];
+  __u32 fwcmd_channel;
+  __u32 fwcmd_param;
+  __u32 zf_int_queue_addr;
+  __u32 filler[6];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define QUEUE_SIZE (10*MAX_CHAN)
+#define QUEUE_SIZE (10 * MAX_CHAN)
 struct INT_QUEUE {
- unsigned char intr_code[QUEUE_SIZE];
+  unsigned char intr_code[QUEUE_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long channel[QUEUE_SIZE];
- unsigned long param[QUEUE_SIZE];
- unsigned long put;
- unsigned long get;
+  unsigned long channel[QUEUE_SIZE];
+  unsigned long param[QUEUE_SIZE];
+  unsigned long put;
+  unsigned long get;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ZFW_CTRL {
- struct BOARD_CTRL board_ctrl;
- struct CH_CTRL ch_ctrl[MAX_CHAN];
+  struct BOARD_CTRL board_ctrl;
+  struct CH_CTRL ch_ctrl[MAX_CHAN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct BUF_CTRL buf_ctrl[MAX_CHAN];
+  struct BUF_CTRL buf_ctrl[MAX_CHAN];
 };
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/cycx_cfm.h b/libc/kernel/uapi/linux/cycx_cfm.h
index 2d9931e..8aa0db0 100644
--- a/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/libc/kernel/uapi/linux/cycx_cfm.h
@@ -38,37 +38,37 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFID_X25_2X 5200
 struct cycx_fw_info {
- unsigned short codeid;
- unsigned short version;
+  unsigned short codeid;
+  unsigned short version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short adapter[CFM_MAX_CYCX];
- unsigned long memsize;
- unsigned short reserved[2];
- unsigned short startoffs;
+  unsigned short adapter[CFM_MAX_CYCX];
+  unsigned long memsize;
+  unsigned short reserved[2];
+  unsigned short startoffs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short winoffs;
- unsigned short codeoffs;
- unsigned long codesize;
- unsigned short dataoffs;
+  unsigned short winoffs;
+  unsigned short codeoffs;
+  unsigned long codesize;
+  unsigned short dataoffs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long datasize;
+  unsigned long datasize;
 };
 struct cycx_firmware {
- char signature[80];
+  char signature[80];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short version;
- unsigned short checksum;
- unsigned short reserved[6];
- char descr[CFM_DESCR_LEN];
+  unsigned short version;
+  unsigned short checksum;
+  unsigned short reserved[6];
+  char descr[CFM_DESCR_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct cycx_fw_info info;
- unsigned char image[0];
+  struct cycx_fw_info info;
+  unsigned char image[0];
 };
 struct cycx_fw_header {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long reset_size;
- unsigned long data_size;
- unsigned long code_size;
+  unsigned long reset_size;
+  unsigned long data_size;
+  unsigned long code_size;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/dcbnl.h b/libc/kernel/uapi/linux/dcbnl.h
index 69b20af..2623b8e 100644
--- a/libc/kernel/uapi/linux/dcbnl.h
+++ b/libc/kernel/uapi/linux/dcbnl.h
@@ -27,52 +27,52 @@
 #define IEEE_8021QAZ_TSA_VENDOR 255
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ieee_ets {
- __u8 willing;
- __u8 ets_cap;
- __u8 cbs;
+  __u8 willing;
+  __u8 ets_cap;
+  __u8 cbs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS];
- __u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS];
- __u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
- __u8 prio_tc[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
+  __u8 prio_tc[IEEE_8021QAZ_MAX_TCS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS];
- __u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS];
- __u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS];
+  __u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ieee_maxrate {
- __u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
+  __u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
 };
 struct ieee_pfc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pfc_cap;
- __u8 pfc_en;
- __u8 mbc;
- __u16 delay;
+  __u8 pfc_cap;
+  __u8 pfc_en;
+  __u8 mbc;
+  __u16 delay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 requests[IEEE_8021QAZ_MAX_TCS];
- __u64 indications[IEEE_8021QAZ_MAX_TCS];
+  __u64 requests[IEEE_8021QAZ_MAX_TCS];
+  __u64 indications[IEEE_8021QAZ_MAX_TCS];
 };
 #define CEE_DCBX_MAX_PGS 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CEE_DCBX_MAX_PRIO 8
 struct cee_pg {
- __u8 willing;
- __u8 error;
+  __u8 willing;
+  __u8 error;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pg_en;
- __u8 tcs_supported;
- __u8 pg_bw[CEE_DCBX_MAX_PGS];
- __u8 prio_pg[CEE_DCBX_MAX_PGS];
+  __u8 pg_en;
+  __u8 tcs_supported;
+  __u8 pg_bw[CEE_DCBX_MAX_PGS];
+  __u8 prio_pg[CEE_DCBX_MAX_PGS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct cee_pfc {
- __u8 willing;
- __u8 error;
+  __u8 willing;
+  __u8 error;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pfc_en;
- __u8 tcs_supported;
+  __u8 pfc_en;
+  __u8 tcs_supported;
 };
 #define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -81,220 +81,220 @@
 #define IEEE_8021QAZ_APP_SEL_ANY 4
 struct dcb_app {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 selector;
- __u8 priority;
- __u16 protocol;
+  __u8 selector;
+  __u8 priority;
+  __u16 protocol;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dcb_peer_app_info {
- __u8 willing;
- __u8 error;
+  __u8 willing;
+  __u8 error;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dcbmsg {
- __u8 dcb_family;
- __u8 cmd;
- __u16 dcb_pad;
+  __u8 dcb_family;
+  __u8 cmd;
+  __u16 dcb_pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum dcbnl_commands {
- DCB_CMD_UNDEFINED,
- DCB_CMD_GSTATE,
+  DCB_CMD_UNDEFINED,
+  DCB_CMD_GSTATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CMD_SSTATE,
- DCB_CMD_PGTX_GCFG,
- DCB_CMD_PGTX_SCFG,
- DCB_CMD_PGRX_GCFG,
+  DCB_CMD_SSTATE,
+  DCB_CMD_PGTX_GCFG,
+  DCB_CMD_PGTX_SCFG,
+  DCB_CMD_PGRX_GCFG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CMD_PGRX_SCFG,
- DCB_CMD_PFC_GCFG,
- DCB_CMD_PFC_SCFG,
- DCB_CMD_SET_ALL,
+  DCB_CMD_PGRX_SCFG,
+  DCB_CMD_PFC_GCFG,
+  DCB_CMD_PFC_SCFG,
+  DCB_CMD_SET_ALL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CMD_GPERM_HWADDR,
- DCB_CMD_GCAP,
- DCB_CMD_GNUMTCS,
- DCB_CMD_SNUMTCS,
+  DCB_CMD_GPERM_HWADDR,
+  DCB_CMD_GCAP,
+  DCB_CMD_GNUMTCS,
+  DCB_CMD_SNUMTCS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CMD_PFC_GSTATE,
- DCB_CMD_PFC_SSTATE,
- DCB_CMD_BCN_GCFG,
- DCB_CMD_BCN_SCFG,
+  DCB_CMD_PFC_GSTATE,
+  DCB_CMD_PFC_SSTATE,
+  DCB_CMD_BCN_GCFG,
+  DCB_CMD_BCN_SCFG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CMD_GAPP,
- DCB_CMD_SAPP,
- DCB_CMD_IEEE_SET,
- DCB_CMD_IEEE_GET,
+  DCB_CMD_GAPP,
+  DCB_CMD_SAPP,
+  DCB_CMD_IEEE_SET,
+  DCB_CMD_IEEE_GET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CMD_GDCBX,
- DCB_CMD_SDCBX,
- DCB_CMD_GFEATCFG,
- DCB_CMD_SFEATCFG,
+  DCB_CMD_GDCBX,
+  DCB_CMD_SDCBX,
+  DCB_CMD_GFEATCFG,
+  DCB_CMD_SFEATCFG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CMD_CEE_GET,
- DCB_CMD_IEEE_DEL,
- __DCB_CMD_ENUM_MAX,
- DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
+  DCB_CMD_CEE_GET,
+  DCB_CMD_IEEE_DEL,
+  __DCB_CMD_ENUM_MAX,
+  DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum dcbnl_attrs {
- DCB_ATTR_UNDEFINED,
- DCB_ATTR_IFNAME,
+  DCB_ATTR_UNDEFINED,
+  DCB_ATTR_IFNAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_STATE,
- DCB_ATTR_PFC_STATE,
- DCB_ATTR_PFC_CFG,
- DCB_ATTR_NUM_TC,
+  DCB_ATTR_STATE,
+  DCB_ATTR_PFC_STATE,
+  DCB_ATTR_PFC_CFG,
+  DCB_ATTR_NUM_TC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_PG_CFG,
- DCB_ATTR_SET_ALL,
- DCB_ATTR_PERM_HWADDR,
- DCB_ATTR_CAP,
+  DCB_ATTR_PG_CFG,
+  DCB_ATTR_SET_ALL,
+  DCB_ATTR_PERM_HWADDR,
+  DCB_ATTR_CAP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_NUMTCS,
- DCB_ATTR_BCN,
- DCB_ATTR_APP,
- DCB_ATTR_IEEE,
+  DCB_ATTR_NUMTCS,
+  DCB_ATTR_BCN,
+  DCB_ATTR_APP,
+  DCB_ATTR_IEEE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_DCBX,
- DCB_ATTR_FEATCFG,
- DCB_ATTR_CEE,
- __DCB_ATTR_ENUM_MAX,
+  DCB_ATTR_DCBX,
+  DCB_ATTR_FEATCFG,
+  DCB_ATTR_CEE,
+  __DCB_ATTR_ENUM_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
+  DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
 };
 enum ieee_attrs {
- DCB_ATTR_IEEE_UNSPEC,
+  DCB_ATTR_IEEE_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_IEEE_ETS,
- DCB_ATTR_IEEE_PFC,
- DCB_ATTR_IEEE_APP_TABLE,
- DCB_ATTR_IEEE_PEER_ETS,
+  DCB_ATTR_IEEE_ETS,
+  DCB_ATTR_IEEE_PFC,
+  DCB_ATTR_IEEE_APP_TABLE,
+  DCB_ATTR_IEEE_PEER_ETS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_IEEE_PEER_PFC,
- DCB_ATTR_IEEE_PEER_APP,
- DCB_ATTR_IEEE_MAXRATE,
- __DCB_ATTR_IEEE_MAX
+  DCB_ATTR_IEEE_PEER_PFC,
+  DCB_ATTR_IEEE_PEER_APP,
+  DCB_ATTR_IEEE_MAXRATE,
+  __DCB_ATTR_IEEE_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
 enum ieee_attrs_app {
- DCB_ATTR_IEEE_APP_UNSPEC,
+  DCB_ATTR_IEEE_APP_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_IEEE_APP,
- __DCB_ATTR_IEEE_APP_MAX
+  DCB_ATTR_IEEE_APP,
+  __DCB_ATTR_IEEE_APP_MAX
 };
 #define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cee_attrs {
- DCB_ATTR_CEE_UNSPEC,
- DCB_ATTR_CEE_PEER_PG,
- DCB_ATTR_CEE_PEER_PFC,
+  DCB_ATTR_CEE_UNSPEC,
+  DCB_ATTR_CEE_PEER_PG,
+  DCB_ATTR_CEE_PEER_PFC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_CEE_PEER_APP_TABLE,
- DCB_ATTR_CEE_TX_PG,
- DCB_ATTR_CEE_RX_PG,
- DCB_ATTR_CEE_PFC,
+  DCB_ATTR_CEE_PEER_APP_TABLE,
+  DCB_ATTR_CEE_TX_PG,
+  DCB_ATTR_CEE_RX_PG,
+  DCB_ATTR_CEE_PFC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_CEE_APP_TABLE,
- DCB_ATTR_CEE_FEAT,
- __DCB_ATTR_CEE_MAX
+  DCB_ATTR_CEE_APP_TABLE,
+  DCB_ATTR_CEE_FEAT,
+  __DCB_ATTR_CEE_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1)
 enum peer_app_attr {
- DCB_ATTR_CEE_PEER_APP_UNSPEC,
- DCB_ATTR_CEE_PEER_APP_INFO,
+  DCB_ATTR_CEE_PEER_APP_UNSPEC,
+  DCB_ATTR_CEE_PEER_APP_INFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_ATTR_CEE_PEER_APP,
- __DCB_ATTR_CEE_PEER_APP_MAX
+  DCB_ATTR_CEE_PEER_APP,
+  __DCB_ATTR_CEE_PEER_APP_MAX
 };
 #define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cee_attrs_app {
- DCB_ATTR_CEE_APP_UNSPEC,
- DCB_ATTR_CEE_APP,
- __DCB_ATTR_CEE_APP_MAX
+  DCB_ATTR_CEE_APP_UNSPEC,
+  DCB_ATTR_CEE_APP,
+  __DCB_ATTR_CEE_APP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DCB_ATTR_CEE_APP_MAX (__DCB_ATTR_CEE_APP_MAX - 1)
 enum dcbnl_pfc_up_attrs {
- DCB_PFC_UP_ATTR_UNDEFINED,
+  DCB_PFC_UP_ATTR_UNDEFINED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PFC_UP_ATTR_0,
- DCB_PFC_UP_ATTR_1,
- DCB_PFC_UP_ATTR_2,
- DCB_PFC_UP_ATTR_3,
+  DCB_PFC_UP_ATTR_0,
+  DCB_PFC_UP_ATTR_1,
+  DCB_PFC_UP_ATTR_2,
+  DCB_PFC_UP_ATTR_3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PFC_UP_ATTR_4,
- DCB_PFC_UP_ATTR_5,
- DCB_PFC_UP_ATTR_6,
- DCB_PFC_UP_ATTR_7,
+  DCB_PFC_UP_ATTR_4,
+  DCB_PFC_UP_ATTR_5,
+  DCB_PFC_UP_ATTR_6,
+  DCB_PFC_UP_ATTR_7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PFC_UP_ATTR_ALL,
- __DCB_PFC_UP_ATTR_ENUM_MAX,
- DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
+  DCB_PFC_UP_ATTR_ALL,
+  __DCB_PFC_UP_ATTR_ENUM_MAX,
+  DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum dcbnl_pg_attrs {
- DCB_PG_ATTR_UNDEFINED,
- DCB_PG_ATTR_TC_0,
- DCB_PG_ATTR_TC_1,
+  DCB_PG_ATTR_UNDEFINED,
+  DCB_PG_ATTR_TC_0,
+  DCB_PG_ATTR_TC_1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PG_ATTR_TC_2,
- DCB_PG_ATTR_TC_3,
- DCB_PG_ATTR_TC_4,
- DCB_PG_ATTR_TC_5,
+  DCB_PG_ATTR_TC_2,
+  DCB_PG_ATTR_TC_3,
+  DCB_PG_ATTR_TC_4,
+  DCB_PG_ATTR_TC_5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PG_ATTR_TC_6,
- DCB_PG_ATTR_TC_7,
- DCB_PG_ATTR_TC_MAX,
- DCB_PG_ATTR_TC_ALL,
+  DCB_PG_ATTR_TC_6,
+  DCB_PG_ATTR_TC_7,
+  DCB_PG_ATTR_TC_MAX,
+  DCB_PG_ATTR_TC_ALL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PG_ATTR_BW_ID_0,
- DCB_PG_ATTR_BW_ID_1,
- DCB_PG_ATTR_BW_ID_2,
- DCB_PG_ATTR_BW_ID_3,
+  DCB_PG_ATTR_BW_ID_0,
+  DCB_PG_ATTR_BW_ID_1,
+  DCB_PG_ATTR_BW_ID_2,
+  DCB_PG_ATTR_BW_ID_3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PG_ATTR_BW_ID_4,
- DCB_PG_ATTR_BW_ID_5,
- DCB_PG_ATTR_BW_ID_6,
- DCB_PG_ATTR_BW_ID_7,
+  DCB_PG_ATTR_BW_ID_4,
+  DCB_PG_ATTR_BW_ID_5,
+  DCB_PG_ATTR_BW_ID_6,
+  DCB_PG_ATTR_BW_ID_7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_PG_ATTR_BW_ID_MAX,
- DCB_PG_ATTR_BW_ID_ALL,
- __DCB_PG_ATTR_ENUM_MAX,
- DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
+  DCB_PG_ATTR_BW_ID_MAX,
+  DCB_PG_ATTR_BW_ID_ALL,
+  __DCB_PG_ATTR_ENUM_MAX,
+  DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum dcbnl_tc_attrs {
- DCB_TC_ATTR_PARAM_UNDEFINED,
- DCB_TC_ATTR_PARAM_PGID,
+  DCB_TC_ATTR_PARAM_UNDEFINED,
+  DCB_TC_ATTR_PARAM_PGID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_TC_ATTR_PARAM_UP_MAPPING,
- DCB_TC_ATTR_PARAM_STRICT_PRIO,
- DCB_TC_ATTR_PARAM_BW_PCT,
- DCB_TC_ATTR_PARAM_ALL,
+  DCB_TC_ATTR_PARAM_UP_MAPPING,
+  DCB_TC_ATTR_PARAM_STRICT_PRIO,
+  DCB_TC_ATTR_PARAM_BW_PCT,
+  DCB_TC_ATTR_PARAM_ALL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __DCB_TC_ATTR_PARAM_ENUM_MAX,
- DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
+  __DCB_TC_ATTR_PARAM_ENUM_MAX,
+  DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
 };
 enum dcbnl_cap_attrs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CAP_ATTR_UNDEFINED,
- DCB_CAP_ATTR_ALL,
- DCB_CAP_ATTR_PG,
- DCB_CAP_ATTR_PFC,
+  DCB_CAP_ATTR_UNDEFINED,
+  DCB_CAP_ATTR_ALL,
+  DCB_CAP_ATTR_PG,
+  DCB_CAP_ATTR_PFC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CAP_ATTR_UP2TC,
- DCB_CAP_ATTR_PG_TCS,
- DCB_CAP_ATTR_PFC_TCS,
- DCB_CAP_ATTR_GSP,
+  DCB_CAP_ATTR_UP2TC,
+  DCB_CAP_ATTR_PG_TCS,
+  DCB_CAP_ATTR_PFC_TCS,
+  DCB_CAP_ATTR_GSP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_CAP_ATTR_BCN,
- DCB_CAP_ATTR_DCBX,
- __DCB_CAP_ATTR_ENUM_MAX,
- DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
+  DCB_CAP_ATTR_BCN,
+  DCB_CAP_ATTR_DCBX,
+  __DCB_CAP_ATTR_ENUM_MAX,
+  DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DCB_CAP_DCBX_HOST 0x01
@@ -304,67 +304,67 @@
 #define DCB_CAP_DCBX_VER_IEEE 0x08
 #define DCB_CAP_DCBX_STATIC 0x10
 enum dcbnl_numtcs_attrs {
- DCB_NUMTCS_ATTR_UNDEFINED,
+  DCB_NUMTCS_ATTR_UNDEFINED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_NUMTCS_ATTR_ALL,
- DCB_NUMTCS_ATTR_PG,
- DCB_NUMTCS_ATTR_PFC,
- __DCB_NUMTCS_ATTR_ENUM_MAX,
+  DCB_NUMTCS_ATTR_ALL,
+  DCB_NUMTCS_ATTR_PG,
+  DCB_NUMTCS_ATTR_PFC,
+  __DCB_NUMTCS_ATTR_ENUM_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
+  DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
 };
-enum dcbnl_bcn_attrs{
- DCB_BCN_ATTR_UNDEFINED = 0,
+enum dcbnl_bcn_attrs {
+  DCB_BCN_ATTR_UNDEFINED = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_BCN_ATTR_RP_0,
- DCB_BCN_ATTR_RP_1,
- DCB_BCN_ATTR_RP_2,
- DCB_BCN_ATTR_RP_3,
+  DCB_BCN_ATTR_RP_0,
+  DCB_BCN_ATTR_RP_1,
+  DCB_BCN_ATTR_RP_2,
+  DCB_BCN_ATTR_RP_3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_BCN_ATTR_RP_4,
- DCB_BCN_ATTR_RP_5,
- DCB_BCN_ATTR_RP_6,
- DCB_BCN_ATTR_RP_7,
+  DCB_BCN_ATTR_RP_4,
+  DCB_BCN_ATTR_RP_5,
+  DCB_BCN_ATTR_RP_6,
+  DCB_BCN_ATTR_RP_7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_BCN_ATTR_RP_ALL,
- DCB_BCN_ATTR_BCNA_0,
- DCB_BCN_ATTR_BCNA_1,
- DCB_BCN_ATTR_ALPHA,
+  DCB_BCN_ATTR_RP_ALL,
+  DCB_BCN_ATTR_BCNA_0,
+  DCB_BCN_ATTR_BCNA_1,
+  DCB_BCN_ATTR_ALPHA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_BCN_ATTR_BETA,
- DCB_BCN_ATTR_GD,
- DCB_BCN_ATTR_GI,
- DCB_BCN_ATTR_TMAX,
+  DCB_BCN_ATTR_BETA,
+  DCB_BCN_ATTR_GD,
+  DCB_BCN_ATTR_GI,
+  DCB_BCN_ATTR_TMAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_BCN_ATTR_TD,
- DCB_BCN_ATTR_RMIN,
- DCB_BCN_ATTR_W,
- DCB_BCN_ATTR_RD,
+  DCB_BCN_ATTR_TD,
+  DCB_BCN_ATTR_RMIN,
+  DCB_BCN_ATTR_W,
+  DCB_BCN_ATTR_RD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_BCN_ATTR_RU,
- DCB_BCN_ATTR_WRTT,
- DCB_BCN_ATTR_RI,
- DCB_BCN_ATTR_C,
+  DCB_BCN_ATTR_RU,
+  DCB_BCN_ATTR_WRTT,
+  DCB_BCN_ATTR_RI,
+  DCB_BCN_ATTR_C,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_BCN_ATTR_ALL,
- __DCB_BCN_ATTR_ENUM_MAX,
- DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
+  DCB_BCN_ATTR_ALL,
+  __DCB_BCN_ATTR_ENUM_MAX,
+  DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum dcb_general_attr_values {
- DCB_ATTR_VALUE_UNDEFINED = 0xff
+  DCB_ATTR_VALUE_UNDEFINED = 0xff
 };
 #define DCB_APP_IDTYPE_ETHTYPE 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DCB_APP_IDTYPE_PORTNUM 0x01
 enum dcbnl_app_attrs {
- DCB_APP_ATTR_UNDEFINED,
- DCB_APP_ATTR_IDTYPE,
+  DCB_APP_ATTR_UNDEFINED,
+  DCB_APP_ATTR_IDTYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_APP_ATTR_ID,
- DCB_APP_ATTR_PRIORITY,
- __DCB_APP_ATTR_ENUM_MAX,
- DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1,
+  DCB_APP_ATTR_ID,
+  DCB_APP_ATTR_PRIORITY,
+  __DCB_APP_ATTR_ENUM_MAX,
+  DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DCB_FEATCFG_ERROR 0x01
@@ -373,14 +373,14 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DCB_FEATCFG_ADVERTISE 0x08
 enum dcbnl_featcfg_attrs {
- DCB_FEATCFG_ATTR_UNDEFINED,
- DCB_FEATCFG_ATTR_ALL,
+  DCB_FEATCFG_ATTR_UNDEFINED,
+  DCB_FEATCFG_ATTR_ALL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_FEATCFG_ATTR_PG,
- DCB_FEATCFG_ATTR_PFC,
- DCB_FEATCFG_ATTR_APP,
- __DCB_FEATCFG_ATTR_ENUM_MAX,
+  DCB_FEATCFG_ATTR_PG,
+  DCB_FEATCFG_ATTR_PFC,
+  DCB_FEATCFG_ATTR_APP,
+  __DCB_FEATCFG_ATTR_ENUM_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1,
+  DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/dccp.h b/libc/kernel/uapi/linux/dccp.h
index 6695fb6..dc4e70e 100644
--- a/libc/kernel/uapi/linux/dccp.h
+++ b/libc/kernel/uapi/linux/dccp.h
@@ -22,163 +22,153 @@
 #include <asm/byteorder.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dccp_hdr {
- __be16 dccph_sport,
- dccph_dport;
- __u8 dccph_doff;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be16 dccph_sport, dccph_dport;
+  __u8 dccph_doff;
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u8 dccph_cscov:4,
- dccph_ccval:4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 dccph_cscov : 4, dccph_ccval : 4;
 #elif defined(__BIG_ENDIAN_BITFIELD)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dccph_ccval:4,
- dccph_cscov:4;
+  __u8 dccph_ccval : 4, dccph_cscov : 4;
 #else
-#error "Adjust your <asm/byteorder.h> defines"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#error "Adjust your <asm/byteorder.h> defines"
 #endif
- __sum16 dccph_checksum;
+  __sum16 dccph_checksum;
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u8 dccph_x:1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dccph_type:4,
- dccph_reserved:3;
+  __u8 dccph_x : 1, dccph_type : 4, dccph_reserved : 3;
 #elif defined(__BIG_ENDIAN_BITFIELD)
- __u8 dccph_reserved:3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dccph_type:4,
- dccph_x:1;
+  __u8 dccph_reserved : 3, dccph_type : 4, dccph_x : 1;
 #else
-#error "Adjust your <asm/byteorder.h> defines"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#error "Adjust your <asm/byteorder.h> defines"
 #endif
- __u8 dccph_seq2;
- __be16 dccph_seq;
+  __u8 dccph_seq2;
+  __be16 dccph_seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dccp_hdr_ext {
- __be32 dccph_seq_low;
+  __be32 dccph_seq_low;
 };
-struct dccp_hdr_request {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 dccph_req_service;
+struct dccp_hdr_request {
+  __be32 dccph_req_service;
 };
 struct dccp_hdr_ack_bits {
- __be16 dccph_reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 dccph_ack_nr_high;
- __be32 dccph_ack_nr_low;
+  __be16 dccph_reserved1;
+  __be16 dccph_ack_nr_high;
+  __be32 dccph_ack_nr_low;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dccp_hdr_response {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dccp_hdr_ack_bits dccph_resp_ack;
- __be32 dccph_resp_service;
+  struct dccp_hdr_ack_bits dccph_resp_ack;
+  __be32 dccph_resp_service;
 };
-struct dccp_hdr_reset {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dccp_hdr_ack_bits dccph_reset_ack;
- __u8 dccph_reset_code,
- dccph_reset_data[3];
+struct dccp_hdr_reset {
+  struct dccp_hdr_ack_bits dccph_reset_ack;
+  __u8 dccph_reset_code, dccph_reset_data[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum dccp_pkt_type {
- DCCP_PKT_REQUEST = 0,
- DCCP_PKT_RESPONSE,
- DCCP_PKT_DATA,
+  DCCP_PKT_REQUEST = 0,
+  DCCP_PKT_RESPONSE,
+  DCCP_PKT_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCP_PKT_ACK,
- DCCP_PKT_DATAACK,
- DCCP_PKT_CLOSEREQ,
- DCCP_PKT_CLOSE,
+  DCCP_PKT_ACK,
+  DCCP_PKT_DATAACK,
+  DCCP_PKT_CLOSEREQ,
+  DCCP_PKT_CLOSE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCP_PKT_RESET,
- DCCP_PKT_SYNC,
- DCCP_PKT_SYNCACK,
- DCCP_PKT_INVALID,
+  DCCP_PKT_RESET,
+  DCCP_PKT_SYNC,
+  DCCP_PKT_SYNCACK,
+  DCCP_PKT_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DCCP_NR_PKT_TYPES DCCP_PKT_INVALID
 enum dccp_reset_codes {
- DCCP_RESET_CODE_UNSPECIFIED = 0,
+  DCCP_RESET_CODE_UNSPECIFIED = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCP_RESET_CODE_CLOSED,
- DCCP_RESET_CODE_ABORTED,
- DCCP_RESET_CODE_NO_CONNECTION,
- DCCP_RESET_CODE_PACKET_ERROR,
+  DCCP_RESET_CODE_CLOSED,
+  DCCP_RESET_CODE_ABORTED,
+  DCCP_RESET_CODE_NO_CONNECTION,
+  DCCP_RESET_CODE_PACKET_ERROR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCP_RESET_CODE_OPTION_ERROR,
- DCCP_RESET_CODE_MANDATORY_ERROR,
- DCCP_RESET_CODE_CONNECTION_REFUSED,
- DCCP_RESET_CODE_BAD_SERVICE_CODE,
+  DCCP_RESET_CODE_OPTION_ERROR,
+  DCCP_RESET_CODE_MANDATORY_ERROR,
+  DCCP_RESET_CODE_CONNECTION_REFUSED,
+  DCCP_RESET_CODE_BAD_SERVICE_CODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCP_RESET_CODE_TOO_BUSY,
- DCCP_RESET_CODE_BAD_INIT_COOKIE,
- DCCP_RESET_CODE_AGGRESSION_PENALTY,
- DCCP_MAX_RESET_CODES
+  DCCP_RESET_CODE_TOO_BUSY,
+  DCCP_RESET_CODE_BAD_INIT_COOKIE,
+  DCCP_RESET_CODE_AGGRESSION_PENALTY,
+  DCCP_MAX_RESET_CODES
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- DCCPO_PADDING = 0,
- DCCPO_MANDATORY = 1,
+  DCCPO_PADDING = 0,
+  DCCPO_MANDATORY = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPO_MIN_RESERVED = 3,
- DCCPO_MAX_RESERVED = 31,
- DCCPO_CHANGE_L = 32,
- DCCPO_CONFIRM_L = 33,
+  DCCPO_MIN_RESERVED = 3,
+  DCCPO_MAX_RESERVED = 31,
+  DCCPO_CHANGE_L = 32,
+  DCCPO_CONFIRM_L = 33,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPO_CHANGE_R = 34,
- DCCPO_CONFIRM_R = 35,
- DCCPO_NDP_COUNT = 37,
- DCCPO_ACK_VECTOR_0 = 38,
+  DCCPO_CHANGE_R = 34,
+  DCCPO_CONFIRM_R = 35,
+  DCCPO_NDP_COUNT = 37,
+  DCCPO_ACK_VECTOR_0 = 38,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPO_ACK_VECTOR_1 = 39,
- DCCPO_TIMESTAMP = 41,
- DCCPO_TIMESTAMP_ECHO = 42,
- DCCPO_ELAPSED_TIME = 43,
+  DCCPO_ACK_VECTOR_1 = 39,
+  DCCPO_TIMESTAMP = 41,
+  DCCPO_TIMESTAMP_ECHO = 42,
+  DCCPO_ELAPSED_TIME = 43,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPO_MAX = 45,
- DCCPO_MIN_RX_CCID_SPECIFIC = 128,
- DCCPO_MAX_RX_CCID_SPECIFIC = 191,
- DCCPO_MIN_TX_CCID_SPECIFIC = 192,
+  DCCPO_MAX = 45,
+  DCCPO_MIN_RX_CCID_SPECIFIC = 128,
+  DCCPO_MAX_RX_CCID_SPECIFIC = 191,
+  DCCPO_MIN_TX_CCID_SPECIFIC = 192,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPO_MAX_TX_CCID_SPECIFIC = 255,
+  DCCPO_MAX_TX_CCID_SPECIFIC = 255,
 };
 #define DCCP_SINGLE_OPT_MAXLEN 253
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPC_CCID2 = 2,
- DCCPC_CCID3 = 3,
+  DCCPC_CCID2 = 2,
+  DCCPC_CCID3 = 3,
 };
 enum dccp_feature_numbers {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPF_RESERVED = 0,
- DCCPF_CCID = 1,
- DCCPF_SHORT_SEQNOS = 2,
- DCCPF_SEQUENCE_WINDOW = 3,
+  DCCPF_RESERVED = 0,
+  DCCPF_CCID = 1,
+  DCCPF_SHORT_SEQNOS = 2,
+  DCCPF_SEQUENCE_WINDOW = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPF_ECN_INCAPABLE = 4,
- DCCPF_ACK_RATIO = 5,
- DCCPF_SEND_ACK_VECTOR = 6,
- DCCPF_SEND_NDP_COUNT = 7,
+  DCCPF_ECN_INCAPABLE = 4,
+  DCCPF_ACK_RATIO = 5,
+  DCCPF_SEND_ACK_VECTOR = 6,
+  DCCPF_SEND_NDP_COUNT = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPF_MIN_CSUM_COVER = 8,
- DCCPF_DATA_CHECKSUM = 9,
- DCCPF_MIN_CCID_SPECIFIC = 128,
- DCCPF_SEND_LEV_RATE = 192,
+  DCCPF_MIN_CSUM_COVER = 8,
+  DCCPF_DATA_CHECKSUM = 9,
+  DCCPF_MIN_CCID_SPECIFIC = 128,
+  DCCPF_SEND_LEV_RATE = 192,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPF_MAX_CCID_SPECIFIC = 255,
+  DCCPF_MAX_CCID_SPECIFIC = 255,
 };
 enum dccp_cmsg_type {
- DCCP_SCM_PRIORITY = 1,
+  DCCP_SCM_PRIORITY = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCP_SCM_QPOLICY_MAX = 0xFFFF,
- DCCP_SCM_MAX
+  DCCP_SCM_QPOLICY_MAX = 0xFFFF,
+  DCCP_SCM_MAX
 };
 enum dccp_packet_dequeueing_policy {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DCCPQ_POLICY_SIMPLE,
- DCCPQ_POLICY_PRIO,
- DCCPQ_POLICY_MAX
+  DCCPQ_POLICY_SIMPLE,
+  DCCPQ_POLICY_PRIO,
+  DCCPQ_POLICY_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DCCP_SOCKOPT_PACKET_SIZE 1
diff --git a/libc/kernel/uapi/linux/dlm.h b/libc/kernel/uapi/linux/dlm.h
index d19282c..e1ac433 100644
--- a/libc/kernel/uapi/linux/dlm.h
+++ b/libc/kernel/uapi/linux/dlm.h
@@ -27,11 +27,11 @@
 #define DLM_SBF_ALTMODE 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dlm_lksb {
- int sb_status;
- __u32 sb_lkid;
- char sb_flags;
+  int sb_status;
+  __u32 sb_lkid;
+  char sb_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char * sb_lvbptr;
+  char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
 #define DLM_LSFL_FS 0x00000004
diff --git a/libc/kernel/uapi/linux/dlm_device.h b/libc/kernel/uapi/linux/dlm_device.h
index 7567e0c..c496d8d 100644
--- a/libc/kernel/uapi/linux/dlm_device.h
+++ b/libc/kernel/uapi/linux/dlm_device.h
@@ -27,67 +27,67 @@
 #define DLM_DEVICE_VERSION_PATCH 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dlm_lock_params {
- __u8 mode;
- __u8 namelen;
- __u16 unused;
+  __u8 mode;
+  __u8 namelen;
+  __u16 unused;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 lkid;
- __u32 parent;
- __u64 xid;
+  __u32 flags;
+  __u32 lkid;
+  __u32 parent;
+  __u64 xid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 timeout;
- void __user *castparam;
- void __user *castaddr;
- void __user *bastparam;
+  __u64 timeout;
+  void __user * castparam;
+  void __user * castaddr;
+  void __user * bastparam;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *bastaddr;
- struct dlm_lksb __user *lksb;
- char lvb[DLM_USER_LVB_LEN];
- char name[0];
+  void __user * bastaddr;
+  struct dlm_lksb __user * lksb;
+  char lvb[DLM_USER_LVB_LEN];
+  char name[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct dlm_lspace_params {
- __u32 flags;
- __u32 minor;
+  __u32 flags;
+  __u32 minor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[0];
+  char name[0];
 };
 struct dlm_purge_params {
- __u32 nodeid;
+  __u32 nodeid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pid;
+  __u32 pid;
 };
 struct dlm_write_request {
- __u32 version[3];
+  __u32 version[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cmd;
- __u8 is64bit;
- __u8 unused[2];
- union {
+  __u8 cmd;
+  __u8 is64bit;
+  __u8 unused[2];
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dlm_lock_params lock;
- struct dlm_lspace_params lspace;
- struct dlm_purge_params purge;
- } i;
+    struct dlm_lock_params lock;
+    struct dlm_lspace_params lspace;
+    struct dlm_purge_params purge;
+  } i;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct dlm_device_version {
- __u32 version[3];
+  __u32 version[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dlm_lock_result {
- __u32 version[3];
- __u32 length;
- void __user * user_astaddr;
+  __u32 version[3];
+  __u32 length;
+  void __user * user_astaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user * user_astparam;
- struct dlm_lksb __user * user_lksb;
- struct dlm_lksb lksb;
- __u8 bast_mode;
+  void __user * user_astparam;
+  struct dlm_lksb __user * user_lksb;
+  struct dlm_lksb lksb;
+  __u8 bast_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 unused[3];
- __u32 lvb_offset;
+  __u8 unused[3];
+  __u32 lvb_offset;
 };
 #define DLM_USER_LOCK 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/dlm_netlink.h b/libc/kernel/uapi/linux/dlm_netlink.h
index 2ea1261..e2bf6b2 100644
--- a/libc/kernel/uapi/linux/dlm_netlink.h
+++ b/libc/kernel/uapi/linux/dlm_netlink.h
@@ -21,44 +21,44 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DLM_STATUS_WAITING = 1,
- DLM_STATUS_GRANTED = 2,
- DLM_STATUS_CONVERT = 3,
+  DLM_STATUS_WAITING = 1,
+  DLM_STATUS_GRANTED = 2,
+  DLM_STATUS_CONVERT = 3,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLM_LOCK_DATA_VERSION 1
 struct dlm_lock_data {
- __u16 version;
- __u32 lockspace_id;
+  __u16 version;
+  __u32 lockspace_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int nodeid;
- int ownpid;
- __u32 id;
- __u32 remid;
+  int nodeid;
+  int ownpid;
+  __u32 id;
+  __u32 remid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 xid;
- __s8 status;
- __s8 grmode;
- __s8 rqmode;
+  __u64 xid;
+  __s8 status;
+  __s8 grmode;
+  __s8 rqmode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long timestamp;
- int resource_namelen;
- char resource_name[DLM_RESNAME_MAXLEN];
+  unsigned long timestamp;
+  int resource_namelen;
+  char resource_name[DLM_RESNAME_MAXLEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- DLM_CMD_UNSPEC = 0,
- DLM_CMD_HELLO,
- DLM_CMD_TIMEOUT,
+  DLM_CMD_UNSPEC = 0,
+  DLM_CMD_HELLO,
+  DLM_CMD_TIMEOUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __DLM_CMD_MAX,
+  __DLM_CMD_MAX,
 };
 #define DLM_CMD_MAX (__DLM_CMD_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DLM_TYPE_UNSPEC = 0,
- DLM_TYPE_LOCK,
- __DLM_TYPE_MAX,
+  DLM_TYPE_UNSPEC = 0,
+  DLM_TYPE_LOCK,
+  __DLM_TYPE_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLM_TYPE_MAX (__DLM_TYPE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/dlm_plock.h b/libc/kernel/uapi/linux/dlm_plock.h
index 1946ef9..425be36 100644
--- a/libc/kernel/uapi/linux/dlm_plock.h
+++ b/libc/kernel/uapi/linux/dlm_plock.h
@@ -26,29 +26,29 @@
 #define DLM_PLOCK_VERSION_PATCH 0
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DLM_PLOCK_OP_LOCK = 1,
- DLM_PLOCK_OP_UNLOCK,
- DLM_PLOCK_OP_GET,
+  DLM_PLOCK_OP_LOCK = 1,
+  DLM_PLOCK_OP_UNLOCK,
+  DLM_PLOCK_OP_GET,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLM_PLOCK_FL_CLOSE 1
 struct dlm_plock_info {
- __u32 version[3];
- __u8 optype;
+  __u32 version[3];
+  __u8 optype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ex;
- __u8 wait;
- __u8 flags;
- __u32 pid;
+  __u8 ex;
+  __u8 wait;
+  __u8 flags;
+  __u32 pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 nodeid;
- __s32 rv;
- __u32 fsid;
- __u64 number;
+  __s32 nodeid;
+  __s32 rv;
+  __u32 fsid;
+  __u64 number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 start;
- __u64 end;
- __u64 owner;
+  __u64 start;
+  __u64 end;
+  __u64 owner;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/dlmconstants.h b/libc/kernel/uapi/linux/dlmconstants.h
index e24d42c..4771d92 100644
--- a/libc/kernel/uapi/linux/dlmconstants.h
+++ b/libc/kernel/uapi/linux/dlmconstants.h
@@ -21,7 +21,7 @@
 #define DLM_LOCKSPACE_LEN 64
 #define DLM_RESNAME_MAXLEN 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DLM_LOCK_IV (-1)
+#define DLM_LOCK_IV (- 1)
 #define DLM_LOCK_NL 0
 #define DLM_LOCK_CR 1
 #define DLM_LOCK_CW 2
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index fbb4cd9..91dccc1 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -27,76 +27,76 @@
 #define DM_UUID_LEN 129
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dm_ioctl {
- __u32 version[3];
- __u32 data_size;
- __u32 data_start;
+  __u32 version[3];
+  __u32 data_size;
+  __u32 data_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 target_count;
- __s32 open_count;
- __u32 flags;
- __u32 event_nr;
+  __u32 target_count;
+  __s32 open_count;
+  __u32 flags;
+  __u32 event_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 padding;
- __u64 dev;
- char name[DM_NAME_LEN];
- char uuid[DM_UUID_LEN];
+  __u32 padding;
+  __u64 dev;
+  char name[DM_NAME_LEN];
+  char uuid[DM_UUID_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char data[7];
+  char data[7];
 };
 struct dm_target_spec {
- __u64 sector_start;
+  __u64 sector_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 length;
- __s32 status;
- __u32 next;
- char target_type[DM_MAX_TYPE_NAME];
+  __u64 length;
+  __s32 status;
+  __u32 next;
+  char target_type[DM_MAX_TYPE_NAME];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct dm_target_deps {
- __u32 count;
- __u32 padding;
+  __u32 count;
+  __u32 padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 dev[0];
+  __u64 dev[0];
 };
 struct dm_name_list {
- __u64 dev;
+  __u64 dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 next;
- char name[0];
+  __u32 next;
+  char name[0];
 };
 struct dm_target_versions {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 next;
- __u32 version[3];
- char name[0];
+  __u32 next;
+  __u32 version[3];
+  char name[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dm_target_msg {
- __u64 sector;
- char message[0];
+  __u64 sector;
+  char message[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- DM_VERSION_CMD = 0,
- DM_REMOVE_ALL_CMD,
- DM_LIST_DEVICES_CMD,
+  DM_VERSION_CMD = 0,
+  DM_REMOVE_ALL_CMD,
+  DM_LIST_DEVICES_CMD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DM_DEV_CREATE_CMD,
- DM_DEV_REMOVE_CMD,
- DM_DEV_RENAME_CMD,
- DM_DEV_SUSPEND_CMD,
+  DM_DEV_CREATE_CMD,
+  DM_DEV_REMOVE_CMD,
+  DM_DEV_RENAME_CMD,
+  DM_DEV_SUSPEND_CMD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DM_DEV_STATUS_CMD,
- DM_DEV_WAIT_CMD,
- DM_TABLE_LOAD_CMD,
- DM_TABLE_CLEAR_CMD,
+  DM_DEV_STATUS_CMD,
+  DM_DEV_WAIT_CMD,
+  DM_TABLE_LOAD_CMD,
+  DM_TABLE_CLEAR_CMD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DM_TABLE_DEPS_CMD,
- DM_TABLE_STATUS_CMD,
- DM_LIST_VERSIONS_CMD,
- DM_TARGET_MSG_CMD,
+  DM_TABLE_DEPS_CMD,
+  DM_TABLE_STATUS_CMD,
+  DM_LIST_VERSIONS_CMD,
+  DM_TARGET_MSG_CMD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DM_DEV_SET_GEOMETRY_CMD
+  DM_DEV_SET_GEOMETRY_CMD
 };
 #define DM_IOCTL 0xfd
 #define DM_VERSION _IOWR(DM_IOCTL, DM_VERSION_CMD, struct dm_ioctl)
@@ -121,9 +121,9 @@
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DM_VERSION_MINOR 27
+#define DM_VERSION_MINOR 28
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl (2013-10-30)"
+#define DM_VERSION_EXTRA "-ioctl(2014-09-17)"
 #define DM_READONLY_FLAG (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_SUSPEND_FLAG (1 << 1)
diff --git a/libc/kernel/uapi/linux/dm-log-userspace.h b/libc/kernel/uapi/linux/dm-log-userspace.h
index 47d45f7..1ce00f2 100644
--- a/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -42,20 +42,20 @@
 #define DM_ULOG_IS_REMOTE_RECOVERING 17
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_ULOG_REQUEST_MASK 0xFF
-#define DM_ULOG_REQUEST_TYPE(request_type)   (DM_ULOG_REQUEST_MASK & (request_type))
+#define DM_ULOG_REQUEST_TYPE(request_type) (DM_ULOG_REQUEST_MASK & (request_type))
 #define DM_ULOG_REQUEST_VERSION 3
 struct dm_ulog_request {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t luid;
- char uuid[DM_UUID_LEN];
- char padding[3];
- uint32_t version;
+  uint64_t luid;
+  char uuid[DM_UUID_LEN];
+  char padding[3];
+  uint32_t version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t error;
- uint32_t seq;
- uint32_t request_type;
- uint32_t data_size;
+  int32_t error;
+  uint32_t seq;
+  uint32_t request_type;
+  uint32_t data_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char data[0];
+  char data[0];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/dn.h b/libc/kernel/uapi/linux/dn.h
index 013a03f..5e21bd9 100644
--- a/libc/kernel/uapi/linux/dn.h
+++ b/libc/kernel/uapi/linux/dn.h
@@ -76,57 +76,57 @@
 #define SDF_UICPROXY 4
 struct dn_naddr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 a_len;
- __u8 a_addr[DN_MAXADDL];
+  __le16 a_len;
+  __u8 a_addr[DN_MAXADDL];
 };
 struct sockaddr_dn {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sdn_family;
- __u8 sdn_flags;
- __u8 sdn_objnum;
- __le16 sdn_objnamel;
+  __u16 sdn_family;
+  __u8 sdn_flags;
+  __u8 sdn_objnum;
+  __le16 sdn_objnamel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sdn_objname[DN_MAXOBJL];
- struct dn_naddr sdn_add;
+  __u8 sdn_objname[DN_MAXOBJL];
+  struct dn_naddr sdn_add;
 };
 #define sdn_nodeaddrl sdn_add.a_len
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define sdn_nodeaddr sdn_add.a_addr
 struct optdata_dn {
- __le16 opt_status;
+  __le16 opt_status;
 #define opt_sts opt_status
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 opt_optl;
- __u8 opt_data[16];
+  __le16 opt_optl;
+  __u8 opt_data[16];
 };
 struct accessdata_dn {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 acc_accl;
- __u8 acc_acc[DN_MAXACCL];
- __u8 acc_passl;
- __u8 acc_pass[DN_MAXACCL];
+  __u8 acc_accl;
+  __u8 acc_acc[DN_MAXACCL];
+  __u8 acc_passl;
+  __u8 acc_pass[DN_MAXACCL];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 acc_userl;
- __u8 acc_user[DN_MAXACCL];
+  __u8 acc_userl;
+  __u8 acc_user[DN_MAXACCL];
 };
 struct linkinfo_dn {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 idn_segsize;
- __u8 idn_linkstate;
+  __u16 idn_segsize;
+  __u8 idn_linkstate;
 };
 union etheraddress {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dne_addr[ETH_ALEN];
- struct {
- __u8 dne_hiord[4];
- __u8 dne_nodeaddr[2];
+  __u8 dne_addr[ETH_ALEN];
+  struct {
+    __u8 dne_hiord[4];
+    __u8 dne_nodeaddr[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } dne_remote;
+  } dne_remote;
 };
 struct dn_addr {
- __le16 dna_family;
+  __le16 dna_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union etheraddress dna_netaddr;
+  union etheraddress dna_netaddr;
 };
 #define DECNET_IOCTL_BASE 0x89
 #define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
diff --git a/libc/kernel/uapi/linux/dqblk_xfs.h b/libc/kernel/uapi/linux/dqblk_xfs.h
index 31b39d6..396e697 100644
--- a/libc/kernel/uapi/linux/dqblk_xfs.h
+++ b/libc/kernel/uapi/linux/dqblk_xfs.h
@@ -19,9 +19,9 @@
 #ifndef _LINUX_DQBLK_XFS_H
 #define _LINUX_DQBLK_XFS_H
 #include <linux/types.h>
-#define XQM_CMD(x) (('X'<<8)+(x))
+#define XQM_CMD(x) (('X' << 8) + (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define XQM_COMMAND(x) (((x) & (0xff<<8)) == ('X'<<8))
+#define XQM_COMMAND(x) (((x) & (0xff << 8)) == ('X' << 8))
 #define XQM_USRQUOTA 0
 #define XQM_GRPQUOTA 1
 #define XQM_PRJQUOTA 2
@@ -39,120 +39,120 @@
 #define Q_XGETQSTATV XQM_CMD(8)
 #define FS_DQUOT_VERSION 1
 typedef struct fs_disk_quota {
- __s8 d_version;
+  __s8 d_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s8 d_flags;
- __u16 d_fieldmask;
- __u32 d_id;
- __u64 d_blk_hardlimit;
+  __s8 d_flags;
+  __u16 d_fieldmask;
+  __u32 d_id;
+  __u64 d_blk_hardlimit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 d_blk_softlimit;
- __u64 d_ino_hardlimit;
- __u64 d_ino_softlimit;
- __u64 d_bcount;
+  __u64 d_blk_softlimit;
+  __u64 d_ino_hardlimit;
+  __u64 d_ino_softlimit;
+  __u64 d_bcount;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 d_icount;
- __s32 d_itimer;
- __s32 d_btimer;
- __u16 d_iwarns;
+  __u64 d_icount;
+  __s32 d_itimer;
+  __s32 d_btimer;
+  __u16 d_iwarns;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 d_bwarns;
- __s32 d_padding2;
- __u64 d_rtb_hardlimit;
- __u64 d_rtb_softlimit;
+  __u16 d_bwarns;
+  __s32 d_padding2;
+  __u64 d_rtb_hardlimit;
+  __u64 d_rtb_softlimit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 d_rtbcount;
- __s32 d_rtbtimer;
- __u16 d_rtbwarns;
- __s16 d_padding3;
+  __u64 d_rtbcount;
+  __s32 d_rtbtimer;
+  __u16 d_rtbwarns;
+  __s16 d_padding3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char d_padding4[8];
+  char d_padding4[8];
 } fs_disk_quota_t;
-#define FS_DQ_ISOFT (1<<0)
-#define FS_DQ_IHARD (1<<1)
+#define FS_DQ_ISOFT (1 << 0)
+#define FS_DQ_IHARD (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FS_DQ_BSOFT (1<<2)
-#define FS_DQ_BHARD (1<<3)
-#define FS_DQ_RTBSOFT (1<<4)
-#define FS_DQ_RTBHARD (1<<5)
+#define FS_DQ_BSOFT (1 << 2)
+#define FS_DQ_BHARD (1 << 3)
+#define FS_DQ_RTBSOFT (1 << 4)
+#define FS_DQ_RTBHARD (1 << 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FS_DQ_LIMIT_MASK (FS_DQ_ISOFT | FS_DQ_IHARD | FS_DQ_BSOFT |   FS_DQ_BHARD | FS_DQ_RTBSOFT | FS_DQ_RTBHARD)
-#define FS_DQ_BTIMER (1<<6)
-#define FS_DQ_ITIMER (1<<7)
-#define FS_DQ_RTBTIMER (1<<8)
+#define FS_DQ_LIMIT_MASK (FS_DQ_ISOFT | FS_DQ_IHARD | FS_DQ_BSOFT | FS_DQ_BHARD | FS_DQ_RTBSOFT | FS_DQ_RTBHARD)
+#define FS_DQ_BTIMER (1 << 6)
+#define FS_DQ_ITIMER (1 << 7)
+#define FS_DQ_RTBTIMER (1 << 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_DQ_TIMER_MASK (FS_DQ_BTIMER | FS_DQ_ITIMER | FS_DQ_RTBTIMER)
-#define FS_DQ_BWARNS (1<<9)
-#define FS_DQ_IWARNS (1<<10)
-#define FS_DQ_RTBWARNS (1<<11)
+#define FS_DQ_BWARNS (1 << 9)
+#define FS_DQ_IWARNS (1 << 10)
+#define FS_DQ_RTBWARNS (1 << 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_DQ_WARNS_MASK (FS_DQ_BWARNS | FS_DQ_IWARNS | FS_DQ_RTBWARNS)
-#define FS_DQ_BCOUNT (1<<12)
-#define FS_DQ_ICOUNT (1<<13)
-#define FS_DQ_RTBCOUNT (1<<14)
+#define FS_DQ_BCOUNT (1 << 12)
+#define FS_DQ_ICOUNT (1 << 13)
+#define FS_DQ_RTBCOUNT (1 << 14)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_DQ_ACCT_MASK (FS_DQ_BCOUNT | FS_DQ_ICOUNT | FS_DQ_RTBCOUNT)
-#define FS_QUOTA_UDQ_ACCT (1<<0)
-#define FS_QUOTA_UDQ_ENFD (1<<1)
-#define FS_QUOTA_GDQ_ACCT (1<<2)
+#define FS_QUOTA_UDQ_ACCT (1 << 0)
+#define FS_QUOTA_UDQ_ENFD (1 << 1)
+#define FS_QUOTA_GDQ_ACCT (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FS_QUOTA_GDQ_ENFD (1<<3)
-#define FS_QUOTA_PDQ_ACCT (1<<4)
-#define FS_QUOTA_PDQ_ENFD (1<<5)
-#define FS_USER_QUOTA (1<<0)
+#define FS_QUOTA_GDQ_ENFD (1 << 3)
+#define FS_QUOTA_PDQ_ACCT (1 << 4)
+#define FS_QUOTA_PDQ_ENFD (1 << 5)
+#define FS_USER_QUOTA (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FS_PROJ_QUOTA (1<<1)
-#define FS_GROUP_QUOTA (1<<2)
+#define FS_PROJ_QUOTA (1 << 1)
+#define FS_GROUP_QUOTA (1 << 2)
 #define FS_QSTAT_VERSION 1
 typedef struct fs_qfilestat {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 qfs_ino;
- __u64 qfs_nblks;
- __u32 qfs_nextents;
+  __u64 qfs_ino;
+  __u64 qfs_nblks;
+  __u32 qfs_nextents;
 } fs_qfilestat_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct fs_quota_stat {
- __s8 qs_version;
- __u16 qs_flags;
- __s8 qs_pad;
+  __s8 qs_version;
+  __u16 qs_flags;
+  __s8 qs_pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fs_qfilestat_t qs_uquota;
- fs_qfilestat_t qs_gquota;
- __u32 qs_incoredqs;
- __s32 qs_btimelimit;
+  fs_qfilestat_t qs_uquota;
+  fs_qfilestat_t qs_gquota;
+  __u32 qs_incoredqs;
+  __s32 qs_btimelimit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 qs_itimelimit;
- __s32 qs_rtbtimelimit;
- __u16 qs_bwarnlimit;
- __u16 qs_iwarnlimit;
+  __s32 qs_itimelimit;
+  __s32 qs_rtbtimelimit;
+  __u16 qs_bwarnlimit;
+  __u16 qs_iwarnlimit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } fs_quota_stat_t;
 #define FS_QSTATV_VERSION1 1
 struct fs_qfilestatv {
- __u64 qfs_ino;
+  __u64 qfs_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 qfs_nblks;
- __u32 qfs_nextents;
- __u32 qfs_pad;
+  __u64 qfs_nblks;
+  __u32 qfs_nextents;
+  __u32 qfs_pad;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fs_quota_statv {
- __s8 qs_version;
- __u8 qs_pad1;
- __u16 qs_flags;
+  __s8 qs_version;
+  __u8 qs_pad1;
+  __u16 qs_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qs_incoredqs;
- struct fs_qfilestatv qs_uquota;
- struct fs_qfilestatv qs_gquota;
- struct fs_qfilestatv qs_pquota;
+  __u32 qs_incoredqs;
+  struct fs_qfilestatv qs_uquota;
+  struct fs_qfilestatv qs_gquota;
+  struct fs_qfilestatv qs_pquota;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 qs_btimelimit;
- __s32 qs_itimelimit;
- __s32 qs_rtbtimelimit;
- __u16 qs_bwarnlimit;
+  __s32 qs_btimelimit;
+  __s32 qs_itimelimit;
+  __s32 qs_rtbtimelimit;
+  __u16 qs_bwarnlimit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 qs_iwarnlimit;
- __u64 qs_pad2[8];
+  __u16 qs_iwarnlimit;
+  __u64 qs_pad2[8];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/dvb/audio.h b/libc/kernel/uapi/linux/dvb/audio.h
index 5e1b1a4..66c2eee 100644
--- a/libc/kernel/uapi/linux/dvb/audio.h
+++ b/libc/kernel/uapi/linux/dvb/audio.h
@@ -21,84 +21,83 @@
 #include <linux/types.h>
 typedef enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- AUDIO_SOURCE_DEMUX,
- AUDIO_SOURCE_MEMORY
+  AUDIO_SOURCE_DEMUX,
+  AUDIO_SOURCE_MEMORY
 } audio_stream_source_t;
 typedef enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- AUDIO_STOPPED,
- AUDIO_PLAYING,
- AUDIO_PAUSED
+  AUDIO_STOPPED,
+  AUDIO_PLAYING,
+  AUDIO_PAUSED
 } audio_play_state_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- AUDIO_STEREO,
- AUDIO_MONO_LEFT,
- AUDIO_MONO_RIGHT,
+  AUDIO_STEREO,
+  AUDIO_MONO_LEFT,
+  AUDIO_MONO_RIGHT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- AUDIO_MONO,
- AUDIO_STEREO_SWAPPED
+  AUDIO_MONO,
+  AUDIO_STEREO_SWAPPED
 } audio_channel_select_t;
 typedef struct audio_mixer {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int volume_left;
- unsigned int volume_right;
+  unsigned int volume_left;
+  unsigned int volume_right;
 } audio_mixer_t;
 typedef struct audio_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int AV_sync_state;
- int mute_state;
- audio_play_state_t play_state;
- audio_stream_source_t stream_source;
+  int AV_sync_state;
+  int mute_state;
+  audio_play_state_t play_state;
+  audio_stream_source_t stream_source;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- audio_channel_select_t channel_select;
- int bypass_mode;
- audio_mixer_t mixer_state;
+  audio_channel_select_t channel_select;
+  int bypass_mode;
+  audio_mixer_t mixer_state;
 } audio_status_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef
-struct audio_karaoke {
- int vocal1;
- int vocal2;
+typedef struct audio_karaoke {
+  int vocal1;
+  int vocal2;
+  int melody;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int melody;
 } audio_karaoke_t;
 typedef __u16 audio_attributes_t;
 #define AUDIO_CAP_DTS 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_CAP_LPCM 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_CAP_MP1 4
 #define AUDIO_CAP_MP2 8
 #define AUDIO_CAP_MP3 16
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_CAP_AAC 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_CAP_OGG 64
 #define AUDIO_CAP_SDDS 128
 #define AUDIO_CAP_AC3 256
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_STOP _IO('o', 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_PLAY _IO('o', 2)
 #define AUDIO_PAUSE _IO('o', 3)
 #define AUDIO_CONTINUE _IO('o', 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SELECT_SOURCE _IO('o', 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SET_MUTE _IO('o', 6)
 #define AUDIO_SET_AV_SYNC _IO('o', 7)
 #define AUDIO_SET_BYPASS_MODE _IO('o', 8)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_CHANNEL_SELECT _IO('o', 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_GET_STATUS _IOR('o', 10, audio_status_t)
 #define AUDIO_GET_CAPABILITIES _IOR('o', 11, unsigned int)
 #define AUDIO_CLEAR_BUFFER _IO('o', 12)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SET_ID _IO('o', 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SET_MIXER _IOW('o', 14, audio_mixer_t)
 #define AUDIO_SET_STREAMTYPE _IO('o', 15)
 #define AUDIO_SET_EXT_ID _IO('o', 16)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t)
 #define AUDIO_GET_PTS _IOR('o', 19, __u64)
 #define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/dvb/ca.h b/libc/kernel/uapi/linux/dvb/ca.h
index 139bd2d..2eed656 100644
--- a/libc/kernel/uapi/linux/dvb/ca.h
+++ b/libc/kernel/uapi/linux/dvb/ca.h
@@ -19,54 +19,54 @@
 #ifndef _DVBCA_H_
 #define _DVBCA_H_
 typedef struct ca_slot_info {
- int num;
+  int num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int type;
+  int type;
 #define CA_CI 1
 #define CA_CI_LINK 2
 #define CA_CI_PHYS 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CA_DESCR 8
 #define CA_SC 128
- unsigned int flags;
+  unsigned int flags;
 #define CA_CI_MODULE_PRESENT 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CA_CI_MODULE_READY 2
 } ca_slot_info_t;
 typedef struct ca_descr_info {
- unsigned int num;
+  unsigned int num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int type;
+  unsigned int type;
 #define CA_ECD 1
 #define CA_NDS 2
 #define CA_DSS 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ca_descr_info_t;
 typedef struct ca_caps {
- unsigned int slot_num;
- unsigned int slot_type;
+  unsigned int slot_num;
+  unsigned int slot_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int descr_num;
- unsigned int descr_type;
+  unsigned int descr_num;
+  unsigned int descr_type;
 } ca_caps_t;
 typedef struct ca_msg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int index;
- unsigned int type;
- unsigned int length;
- unsigned char msg[256];
+  unsigned int index;
+  unsigned int type;
+  unsigned int length;
+  unsigned char msg[256];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ca_msg_t;
 typedef struct ca_descr {
- unsigned int index;
- unsigned int parity;
+  unsigned int index;
+  unsigned int parity;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cw[8];
+  unsigned char cw[8];
 } ca_descr_t;
 typedef struct ca_pid {
- unsigned int pid;
+  unsigned int pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int index;
+  int index;
 } ca_pid_t;
 #define CA_RESET _IO('o', 128)
 #define CA_GET_CAP _IOR('o', 129, ca_caps_t)
diff --git a/libc/kernel/uapi/linux/dvb/dmx.h b/libc/kernel/uapi/linux/dvb/dmx.h
index b93782a..8e1d718 100644
--- a/libc/kernel/uapi/linux/dvb/dmx.h
+++ b/libc/kernel/uapi/linux/dvb/dmx.h
@@ -22,124 +22,117 @@
 #include <time.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_FILTER_SIZE 16
-typedef enum
-{
- DMX_OUT_DECODER,
+typedef enum {
+  DMX_OUT_DECODER,
+  DMX_OUT_TAP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_OUT_TAP,
- DMX_OUT_TS_TAP,
- DMX_OUT_TSDEMUX_TAP
+  DMX_OUT_TS_TAP,
+  DMX_OUT_TSDEMUX_TAP
 } dmx_output_t;
+typedef enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef enum
-{
- DMX_IN_FRONTEND,
- DMX_IN_DVR
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DMX_IN_FRONTEND,
+  DMX_IN_DVR
 } dmx_input_t;
-typedef enum dmx_ts_pes
-{
- DMX_PES_AUDIO0,
+typedef enum dmx_ts_pes {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_PES_VIDEO0,
- DMX_PES_TELETEXT0,
- DMX_PES_SUBTITLE0,
- DMX_PES_PCR0,
+  DMX_PES_AUDIO0,
+  DMX_PES_VIDEO0,
+  DMX_PES_TELETEXT0,
+  DMX_PES_SUBTITLE0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_PES_AUDIO1,
- DMX_PES_VIDEO1,
- DMX_PES_TELETEXT1,
- DMX_PES_SUBTITLE1,
+  DMX_PES_PCR0,
+  DMX_PES_AUDIO1,
+  DMX_PES_VIDEO1,
+  DMX_PES_TELETEXT1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_PES_PCR1,
- DMX_PES_AUDIO2,
- DMX_PES_VIDEO2,
- DMX_PES_TELETEXT2,
+  DMX_PES_SUBTITLE1,
+  DMX_PES_PCR1,
+  DMX_PES_AUDIO2,
+  DMX_PES_VIDEO2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_PES_SUBTITLE2,
- DMX_PES_PCR2,
- DMX_PES_AUDIO3,
- DMX_PES_VIDEO3,
+  DMX_PES_TELETEXT2,
+  DMX_PES_SUBTITLE2,
+  DMX_PES_PCR2,
+  DMX_PES_AUDIO3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_PES_TELETEXT3,
- DMX_PES_SUBTITLE3,
- DMX_PES_PCR3,
- DMX_PES_OTHER
+  DMX_PES_VIDEO3,
+  DMX_PES_TELETEXT3,
+  DMX_PES_SUBTITLE3,
+  DMX_PES_PCR3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DMX_PES_OTHER
 } dmx_pes_type_t;
 #define DMX_PES_AUDIO DMX_PES_AUDIO0
 #define DMX_PES_VIDEO DMX_PES_VIDEO0
-#define DMX_PES_TELETEXT DMX_PES_TELETEXT0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMX_PES_TELETEXT DMX_PES_TELETEXT0
 #define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0
 #define DMX_PES_PCR DMX_PES_PCR0
-typedef struct dmx_filter
-{
+typedef struct dmx_filter {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 filter[DMX_FILTER_SIZE];
- __u8 mask[DMX_FILTER_SIZE];
- __u8 mode[DMX_FILTER_SIZE];
+  __u8 filter[DMX_FILTER_SIZE];
+  __u8 mask[DMX_FILTER_SIZE];
+  __u8 mode[DMX_FILTER_SIZE];
 } dmx_filter_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct dmx_sct_filter_params
-{
- __u16 pid;
- dmx_filter_t filter;
+struct dmx_sct_filter_params {
+  __u16 pid;
+  dmx_filter_t filter;
+  __u32 timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 timeout;
- __u32 flags;
+  __u32 flags;
 #define DMX_CHECK_CRC 1
 #define DMX_ONESHOT 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_IMMEDIATE_START 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_KERNEL_CLIENT 0x8000
 };
-struct dmx_pes_filter_params
+struct dmx_pes_filter_params {
+  __u16 pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u16 pid;
- dmx_input_t input;
- dmx_output_t output;
+  dmx_input_t input;
+  dmx_output_t output;
+  dmx_pes_type_t pes_type;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dmx_pes_type_t pes_type;
- __u32 flags;
 };
 typedef struct dmx_caps {
+  __u32 caps;
+  int num_decoders;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 caps;
- int num_decoders;
 } dmx_caps_t;
 typedef enum {
+  DMX_SOURCE_FRONT0 = 0,
+  DMX_SOURCE_FRONT1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_SOURCE_FRONT0 = 0,
- DMX_SOURCE_FRONT1,
- DMX_SOURCE_FRONT2,
- DMX_SOURCE_FRONT3,
+  DMX_SOURCE_FRONT2,
+  DMX_SOURCE_FRONT3,
+  DMX_SOURCE_DVR0 = 16,
+  DMX_SOURCE_DVR1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DMX_SOURCE_DVR0 = 16,
- DMX_SOURCE_DVR1,
- DMX_SOURCE_DVR2,
- DMX_SOURCE_DVR3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DMX_SOURCE_DVR2,
+  DMX_SOURCE_DVR3
 } dmx_source_t;
 struct dmx_stc {
- unsigned int num;
- unsigned int base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 stc;
+  unsigned int num;
+  unsigned int base;
+  __u64 stc;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_START _IO('o', 41)
 #define DMX_STOP _IO('o', 42)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params)
 #define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_SET_BUFFER_SIZE _IO('o', 45)
 #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t)
 #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
 #define DMX_ADD_PID _IOW('o', 51, __u16)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMX_REMOVE_PID _IOW('o', 52, __u16)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/dvb/frontend.h b/libc/kernel/uapi/linux/dvb/frontend.h
index 3d71733..a97d5e7 100644
--- a/libc/kernel/uapi/linux/dvb/frontend.h
+++ b/libc/kernel/uapi/linux/dvb/frontend.h
@@ -21,253 +21,253 @@
 #include <linux/types.h>
 typedef enum fe_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_QPSK,
- FE_QAM,
- FE_OFDM,
- FE_ATSC
+  FE_QPSK,
+  FE_QAM,
+  FE_OFDM,
+  FE_ATSC
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } fe_type_t;
 typedef enum fe_caps {
- FE_IS_STUPID = 0,
- FE_CAN_INVERSION_AUTO = 0x1,
+  FE_IS_STUPID = 0,
+  FE_CAN_INVERSION_AUTO = 0x1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_FEC_1_2 = 0x2,
- FE_CAN_FEC_2_3 = 0x4,
- FE_CAN_FEC_3_4 = 0x8,
- FE_CAN_FEC_4_5 = 0x10,
+  FE_CAN_FEC_1_2 = 0x2,
+  FE_CAN_FEC_2_3 = 0x4,
+  FE_CAN_FEC_3_4 = 0x8,
+  FE_CAN_FEC_4_5 = 0x10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_FEC_5_6 = 0x20,
- FE_CAN_FEC_6_7 = 0x40,
- FE_CAN_FEC_7_8 = 0x80,
- FE_CAN_FEC_8_9 = 0x100,
+  FE_CAN_FEC_5_6 = 0x20,
+  FE_CAN_FEC_6_7 = 0x40,
+  FE_CAN_FEC_7_8 = 0x80,
+  FE_CAN_FEC_8_9 = 0x100,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_FEC_AUTO = 0x200,
- FE_CAN_QPSK = 0x400,
- FE_CAN_QAM_16 = 0x800,
- FE_CAN_QAM_32 = 0x1000,
+  FE_CAN_FEC_AUTO = 0x200,
+  FE_CAN_QPSK = 0x400,
+  FE_CAN_QAM_16 = 0x800,
+  FE_CAN_QAM_32 = 0x1000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_QAM_64 = 0x2000,
- FE_CAN_QAM_128 = 0x4000,
- FE_CAN_QAM_256 = 0x8000,
- FE_CAN_QAM_AUTO = 0x10000,
+  FE_CAN_QAM_64 = 0x2000,
+  FE_CAN_QAM_128 = 0x4000,
+  FE_CAN_QAM_256 = 0x8000,
+  FE_CAN_QAM_AUTO = 0x10000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
- FE_CAN_BANDWIDTH_AUTO = 0x40000,
- FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
- FE_CAN_HIERARCHY_AUTO = 0x100000,
+  FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
+  FE_CAN_BANDWIDTH_AUTO = 0x40000,
+  FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
+  FE_CAN_HIERARCHY_AUTO = 0x100000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_8VSB = 0x200000,
- FE_CAN_16VSB = 0x400000,
- FE_HAS_EXTENDED_CAPS = 0x800000,
- FE_CAN_MULTISTREAM = 0x4000000,
+  FE_CAN_8VSB = 0x200000,
+  FE_CAN_16VSB = 0x400000,
+  FE_HAS_EXTENDED_CAPS = 0x800000,
+  FE_CAN_MULTISTREAM = 0x4000000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_TURBO_FEC = 0x8000000,
- FE_CAN_2G_MODULATION = 0x10000000,
- FE_NEEDS_BENDING = 0x20000000,
- FE_CAN_RECOVER = 0x40000000,
+  FE_CAN_TURBO_FEC = 0x8000000,
+  FE_CAN_2G_MODULATION = 0x10000000,
+  FE_NEEDS_BENDING = 0x20000000,
+  FE_CAN_RECOVER = 0x40000000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_CAN_MUTE_TS = 0x80000000
+  FE_CAN_MUTE_TS = 0x80000000
 } fe_caps_t;
 struct dvb_frontend_info {
- char name[128];
+  char name[128];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fe_type_t type;
- __u32 frequency_min;
- __u32 frequency_max;
- __u32 frequency_stepsize;
+  fe_type_t type;
+  __u32 frequency_min;
+  __u32 frequency_max;
+  __u32 frequency_stepsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 frequency_tolerance;
- __u32 symbol_rate_min;
- __u32 symbol_rate_max;
- __u32 symbol_rate_tolerance;
+  __u32 frequency_tolerance;
+  __u32 symbol_rate_min;
+  __u32 symbol_rate_max;
+  __u32 symbol_rate_tolerance;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 notifier_delay;
- fe_caps_t caps;
+  __u32 notifier_delay;
+  fe_caps_t caps;
 };
 struct dvb_diseqc_master_cmd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 msg [6];
- __u8 msg_len;
+  __u8 msg[6];
+  __u8 msg_len;
 };
 struct dvb_diseqc_slave_reply {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 msg [4];
- __u8 msg_len;
- int timeout;
+  __u8 msg[4];
+  __u8 msg_len;
+  int timeout;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum fe_sec_voltage {
- SEC_VOLTAGE_13,
- SEC_VOLTAGE_18,
- SEC_VOLTAGE_OFF
+  SEC_VOLTAGE_13,
+  SEC_VOLTAGE_18,
+  SEC_VOLTAGE_OFF
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } fe_sec_voltage_t;
 typedef enum fe_sec_tone_mode {
- SEC_TONE_ON,
- SEC_TONE_OFF
+  SEC_TONE_ON,
+  SEC_TONE_OFF
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } fe_sec_tone_mode_t;
 typedef enum fe_sec_mini_cmd {
- SEC_MINI_A,
- SEC_MINI_B
+  SEC_MINI_A,
+  SEC_MINI_B
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } fe_sec_mini_cmd_t;
 typedef enum fe_status {
- FE_HAS_SIGNAL = 0x01,
- FE_HAS_CARRIER = 0x02,
+  FE_HAS_SIGNAL = 0x01,
+  FE_HAS_CARRIER = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_HAS_VITERBI = 0x04,
- FE_HAS_SYNC = 0x08,
- FE_HAS_LOCK = 0x10,
- FE_TIMEDOUT = 0x20,
+  FE_HAS_VITERBI = 0x04,
+  FE_HAS_SYNC = 0x08,
+  FE_HAS_LOCK = 0x10,
+  FE_TIMEDOUT = 0x20,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_REINIT = 0x40,
+  FE_REINIT = 0x40,
 } fe_status_t;
 typedef enum fe_spectral_inversion {
- INVERSION_OFF,
+  INVERSION_OFF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INVERSION_ON,
- INVERSION_AUTO
+  INVERSION_ON,
+  INVERSION_AUTO
 } fe_spectral_inversion_t;
 typedef enum fe_code_rate {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FEC_NONE = 0,
- FEC_1_2,
- FEC_2_3,
- FEC_3_4,
+  FEC_NONE = 0,
+  FEC_1_2,
+  FEC_2_3,
+  FEC_3_4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FEC_4_5,
- FEC_5_6,
- FEC_6_7,
- FEC_7_8,
+  FEC_4_5,
+  FEC_5_6,
+  FEC_6_7,
+  FEC_7_8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FEC_8_9,
- FEC_AUTO,
- FEC_3_5,
- FEC_9_10,
+  FEC_8_9,
+  FEC_AUTO,
+  FEC_3_5,
+  FEC_9_10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FEC_2_5,
+  FEC_2_5,
 } fe_code_rate_t;
 typedef enum fe_modulation {
- QPSK,
+  QPSK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- QAM_16,
- QAM_32,
- QAM_64,
- QAM_128,
+  QAM_16,
+  QAM_32,
+  QAM_64,
+  QAM_128,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- QAM_256,
- QAM_AUTO,
- VSB_8,
- VSB_16,
+  QAM_256,
+  QAM_AUTO,
+  VSB_8,
+  VSB_16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PSK_8,
- APSK_16,
- APSK_32,
- DQPSK,
+  PSK_8,
+  APSK_16,
+  APSK_32,
+  DQPSK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- QAM_4_NR,
+  QAM_4_NR,
 } fe_modulation_t;
 typedef enum fe_transmit_mode {
- TRANSMISSION_MODE_2K,
+  TRANSMISSION_MODE_2K,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TRANSMISSION_MODE_8K,
- TRANSMISSION_MODE_AUTO,
- TRANSMISSION_MODE_4K,
- TRANSMISSION_MODE_1K,
+  TRANSMISSION_MODE_8K,
+  TRANSMISSION_MODE_AUTO,
+  TRANSMISSION_MODE_4K,
+  TRANSMISSION_MODE_1K,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TRANSMISSION_MODE_16K,
- TRANSMISSION_MODE_32K,
- TRANSMISSION_MODE_C1,
- TRANSMISSION_MODE_C3780,
+  TRANSMISSION_MODE_16K,
+  TRANSMISSION_MODE_32K,
+  TRANSMISSION_MODE_C1,
+  TRANSMISSION_MODE_C3780,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } fe_transmit_mode_t;
 typedef enum fe_bandwidth {
- BANDWIDTH_8_MHZ,
- BANDWIDTH_7_MHZ,
+  BANDWIDTH_8_MHZ,
+  BANDWIDTH_7_MHZ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BANDWIDTH_6_MHZ,
- BANDWIDTH_AUTO,
- BANDWIDTH_5_MHZ,
- BANDWIDTH_10_MHZ,
+  BANDWIDTH_6_MHZ,
+  BANDWIDTH_AUTO,
+  BANDWIDTH_5_MHZ,
+  BANDWIDTH_10_MHZ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BANDWIDTH_1_712_MHZ,
+  BANDWIDTH_1_712_MHZ,
 } fe_bandwidth_t;
 typedef enum fe_guard_interval {
- GUARD_INTERVAL_1_32,
+  GUARD_INTERVAL_1_32,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GUARD_INTERVAL_1_16,
- GUARD_INTERVAL_1_8,
- GUARD_INTERVAL_1_4,
- GUARD_INTERVAL_AUTO,
+  GUARD_INTERVAL_1_16,
+  GUARD_INTERVAL_1_8,
+  GUARD_INTERVAL_1_4,
+  GUARD_INTERVAL_AUTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GUARD_INTERVAL_1_128,
- GUARD_INTERVAL_19_128,
- GUARD_INTERVAL_19_256,
- GUARD_INTERVAL_PN420,
+  GUARD_INTERVAL_1_128,
+  GUARD_INTERVAL_19_128,
+  GUARD_INTERVAL_19_256,
+  GUARD_INTERVAL_PN420,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GUARD_INTERVAL_PN595,
- GUARD_INTERVAL_PN945,
+  GUARD_INTERVAL_PN595,
+  GUARD_INTERVAL_PN945,
 } fe_guard_interval_t;
 typedef enum fe_hierarchy {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HIERARCHY_NONE,
- HIERARCHY_1,
- HIERARCHY_2,
- HIERARCHY_4,
+  HIERARCHY_NONE,
+  HIERARCHY_1,
+  HIERARCHY_2,
+  HIERARCHY_4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HIERARCHY_AUTO
+  HIERARCHY_AUTO
 } fe_hierarchy_t;
 enum fe_interleaving {
- INTERLEAVING_NONE,
+  INTERLEAVING_NONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INTERLEAVING_AUTO,
- INTERLEAVING_240,
- INTERLEAVING_720,
+  INTERLEAVING_AUTO,
+  INTERLEAVING_240,
+  INTERLEAVING_720,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvb_qpsk_parameters {
- __u32 symbol_rate;
- fe_code_rate_t fec_inner;
+  __u32 symbol_rate;
+  fe_code_rate_t fec_inner;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvb_qam_parameters {
- __u32 symbol_rate;
- fe_code_rate_t fec_inner;
- fe_modulation_t modulation;
+  __u32 symbol_rate;
+  fe_code_rate_t fec_inner;
+  fe_modulation_t modulation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct dvb_vsb_parameters {
- fe_modulation_t modulation;
+  fe_modulation_t modulation;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvb_ofdm_parameters {
- fe_bandwidth_t bandwidth;
- fe_code_rate_t code_rate_HP;
- fe_code_rate_t code_rate_LP;
+  fe_bandwidth_t bandwidth;
+  fe_code_rate_t code_rate_HP;
+  fe_code_rate_t code_rate_LP;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fe_modulation_t constellation;
- fe_transmit_mode_t transmission_mode;
- fe_guard_interval_t guard_interval;
- fe_hierarchy_t hierarchy_information;
+  fe_modulation_t constellation;
+  fe_transmit_mode_t transmission_mode;
+  fe_guard_interval_t guard_interval;
+  fe_hierarchy_t hierarchy_information;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct dvb_frontend_parameters {
- __u32 frequency;
- fe_spectral_inversion_t inversion;
+  __u32 frequency;
+  fe_spectral_inversion_t inversion;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct dvb_qpsk_parameters qpsk;
- struct dvb_qam_parameters qam;
- struct dvb_ofdm_parameters ofdm;
+  union {
+    struct dvb_qpsk_parameters qpsk;
+    struct dvb_qam_parameters qam;
+    struct dvb_ofdm_parameters ofdm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct dvb_vsb_parameters vsb;
- } u;
+    struct dvb_vsb_parameters vsb;
+  } u;
 };
 struct dvb_frontend_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fe_status_t status;
- struct dvb_frontend_parameters parameters;
+  fe_status_t status;
+  struct dvb_frontend_parameters parameters;
 };
 #define DTV_UNDEFINED 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -361,135 +361,135 @@
 #define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
 typedef enum fe_pilot {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PILOT_ON,
- PILOT_OFF,
- PILOT_AUTO,
+  PILOT_ON,
+  PILOT_OFF,
+  PILOT_AUTO,
 } fe_pilot_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum fe_rolloff {
- ROLLOFF_35,
- ROLLOFF_20,
- ROLLOFF_25,
+  ROLLOFF_35,
+  ROLLOFF_20,
+  ROLLOFF_25,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ROLLOFF_AUTO,
+  ROLLOFF_AUTO,
 } fe_rolloff_t;
 typedef enum fe_delivery_system {
- SYS_UNDEFINED,
+  SYS_UNDEFINED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SYS_DVBC_ANNEX_A,
- SYS_DVBC_ANNEX_B,
- SYS_DVBT,
- SYS_DSS,
+  SYS_DVBC_ANNEX_A,
+  SYS_DVBC_ANNEX_B,
+  SYS_DVBT,
+  SYS_DSS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SYS_DVBS,
- SYS_DVBS2,
- SYS_DVBH,
- SYS_ISDBT,
+  SYS_DVBS,
+  SYS_DVBS2,
+  SYS_DVBH,
+  SYS_ISDBT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SYS_ISDBS,
- SYS_ISDBC,
- SYS_ATSC,
- SYS_ATSCMH,
+  SYS_ISDBS,
+  SYS_ISDBC,
+  SYS_ATSC,
+  SYS_ATSCMH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SYS_DTMB,
- SYS_CMMB,
- SYS_DAB,
- SYS_DVBT2,
+  SYS_DTMB,
+  SYS_CMMB,
+  SYS_DAB,
+  SYS_DVBT2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SYS_TURBO,
- SYS_DVBC_ANNEX_C,
+  SYS_TURBO,
+  SYS_DVBC_ANNEX_C,
 } fe_delivery_system_t;
 #define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYS_DMBTH SYS_DTMB
 enum atscmh_sccc_block_mode {
- ATSCMH_SCCC_BLK_SEP = 0,
- ATSCMH_SCCC_BLK_COMB = 1,
+  ATSCMH_SCCC_BLK_SEP = 0,
+  ATSCMH_SCCC_BLK_COMB = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ATSCMH_SCCC_BLK_RES = 2,
+  ATSCMH_SCCC_BLK_RES = 2,
 };
 enum atscmh_sccc_code_mode {
- ATSCMH_SCCC_CODE_HLF = 0,
+  ATSCMH_SCCC_CODE_HLF = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ATSCMH_SCCC_CODE_QTR = 1,
- ATSCMH_SCCC_CODE_RES = 2,
+  ATSCMH_SCCC_CODE_QTR = 1,
+  ATSCMH_SCCC_CODE_RES = 2,
 };
 enum atscmh_rs_frame_ensemble {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ATSCMH_RSFRAME_ENS_PRI = 0,
- ATSCMH_RSFRAME_ENS_SEC = 1,
+  ATSCMH_RSFRAME_ENS_PRI = 0,
+  ATSCMH_RSFRAME_ENS_SEC = 1,
 };
 enum atscmh_rs_frame_mode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ATSCMH_RSFRAME_PRI_ONLY = 0,
- ATSCMH_RSFRAME_PRI_SEC = 1,
- ATSCMH_RSFRAME_RES = 2,
+  ATSCMH_RSFRAME_PRI_ONLY = 0,
+  ATSCMH_RSFRAME_PRI_SEC = 1,
+  ATSCMH_RSFRAME_RES = 2,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum atscmh_rs_code_mode {
- ATSCMH_RSCODE_211_187 = 0,
- ATSCMH_RSCODE_223_187 = 1,
- ATSCMH_RSCODE_235_187 = 2,
+  ATSCMH_RSCODE_211_187 = 0,
+  ATSCMH_RSCODE_223_187 = 1,
+  ATSCMH_RSCODE_235_187 = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ATSCMH_RSCODE_RES = 3,
+  ATSCMH_RSCODE_RES = 3,
 };
 #define NO_STREAM_ID_FILTER (~0U)
 #define LNA_AUTO (~0U)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dtv_cmds_h {
- char *name;
- __u32 cmd;
- __u32 set:1;
+  char * name;
+  __u32 cmd;
+  __u32 set : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 buffer:1;
- __u32 reserved:30;
+  __u32 buffer : 1;
+  __u32 reserved : 30;
 };
 enum fecap_scale_params {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FE_SCALE_NOT_AVAILABLE = 0,
- FE_SCALE_DECIBEL,
- FE_SCALE_RELATIVE,
- FE_SCALE_COUNTER
+  FE_SCALE_NOT_AVAILABLE = 0,
+  FE_SCALE_DECIBEL,
+  FE_SCALE_RELATIVE,
+  FE_SCALE_COUNTER
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct dtv_stats {
- __u8 scale;
- union {
+  __u8 scale;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 uvalue;
- __s64 svalue;
- };
-} __attribute__ ((packed));
+    __u64 uvalue;
+    __s64 svalue;
+  };
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_DTV_STATS 4
 struct dtv_fe_stats {
- __u8 len;
- struct dtv_stats stat[MAX_DTV_STATS];
+  __u8 len;
+  struct dtv_stats stat[MAX_DTV_STATS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 struct dtv_property {
- __u32 cmd;
- __u32 reserved[3];
+  __u32 cmd;
+  __u32 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __u32 data;
- struct dtv_fe_stats st;
- struct {
+  union {
+    __u32 data;
+    struct dtv_fe_stats st;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[32];
- __u32 len;
- __u32 reserved1[3];
- void *reserved2;
+      __u8 data[32];
+      __u32 len;
+      __u32 reserved1[3];
+      void * reserved2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } buffer;
- } u;
- int result;
-} __attribute__ ((packed));
+    } buffer;
+  } u;
+  int result;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DTV_IOCTL_MAX_MSGS 64
 struct dtv_properties {
- __u32 num;
- struct dtv_property *props;
+  __u32 num;
+  struct dtv_property * props;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
diff --git a/libc/kernel/uapi/linux/dvb/net.h b/libc/kernel/uapi/linux/dvb/net.h
index 48308d7..f085dc3 100644
--- a/libc/kernel/uapi/linux/dvb/net.h
+++ b/libc/kernel/uapi/linux/dvb/net.h
@@ -21,9 +21,9 @@
 #include <linux/types.h>
 struct dvb_net_if {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pid;
- __u16 if_num;
- __u8 feedtype;
+  __u16 pid;
+  __u16 if_num;
+  __u8 feedtype;
 #define DVB_NET_FEEDTYPE_MPE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVB_NET_FEEDTYPE_ULE 1
@@ -33,8 +33,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NET_GET_IF _IOWR('o', 54, struct dvb_net_if)
 struct __dvb_net_if_old {
- __u16 pid;
- __u16 if_num;
+  __u16 pid;
+  __u16 if_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define __NET_ADD_IF_OLD _IOWR('o', 52, struct __dvb_net_if_old)
diff --git a/libc/kernel/uapi/linux/dvb/osd.h b/libc/kernel/uapi/linux/dvb/osd.h
index 04d673d..9aab98f 100644
--- a/libc/kernel/uapi/linux/dvb/osd.h
+++ b/libc/kernel/uapi/linux/dvb/osd.h
@@ -21,78 +21,78 @@
 #include <linux/compiler.h>
 typedef enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_Close=1,
- OSD_Open,
- OSD_Show,
- OSD_Hide,
+  OSD_Close = 1,
+  OSD_Open,
+  OSD_Show,
+  OSD_Hide,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_Clear,
- OSD_Fill,
- OSD_SetColor,
- OSD_SetPalette,
+  OSD_Clear,
+  OSD_Fill,
+  OSD_SetColor,
+  OSD_SetPalette,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_SetTrans,
- OSD_SetPixel,
- OSD_GetPixel,
- OSD_SetRow,
+  OSD_SetTrans,
+  OSD_SetPixel,
+  OSD_GetPixel,
+  OSD_SetRow,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_SetBlock,
- OSD_FillRow,
- OSD_FillBlock,
- OSD_Line,
+  OSD_SetBlock,
+  OSD_FillRow,
+  OSD_FillBlock,
+  OSD_Line,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_Query,
- OSD_Test,
- OSD_Text,
- OSD_SetWindow,
+  OSD_Query,
+  OSD_Test,
+  OSD_Text,
+  OSD_SetWindow,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_MoveWindow,
- OSD_OpenRaw,
+  OSD_MoveWindow,
+  OSD_OpenRaw,
 } OSD_Command;
 typedef struct osd_cmd_s {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_Command cmd;
- int x0;
- int y0;
- int x1;
+  OSD_Command cmd;
+  int x0;
+  int y0;
+  int x1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int y1;
- int color;
- void __user *data;
+  int y1;
+  int color;
+  void __user * data;
 } osd_cmd_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- OSD_BITMAP1,
- OSD_BITMAP2,
- OSD_BITMAP4,
+  OSD_BITMAP1,
+  OSD_BITMAP2,
+  OSD_BITMAP4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_BITMAP8,
- OSD_BITMAP1HR,
- OSD_BITMAP2HR,
- OSD_BITMAP4HR,
+  OSD_BITMAP8,
+  OSD_BITMAP1HR,
+  OSD_BITMAP2HR,
+  OSD_BITMAP4HR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_BITMAP8HR,
- OSD_YCRCB422,
- OSD_YCRCB444,
- OSD_YCRCB444HR,
+  OSD_BITMAP8HR,
+  OSD_YCRCB422,
+  OSD_YCRCB444,
+  OSD_YCRCB444HR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_VIDEOTSIZE,
- OSD_VIDEOHSIZE,
- OSD_VIDEOQSIZE,
- OSD_VIDEODSIZE,
+  OSD_VIDEOTSIZE,
+  OSD_VIDEOHSIZE,
+  OSD_VIDEOQSIZE,
+  OSD_VIDEODSIZE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_VIDEOTHSIZE,
- OSD_VIDEOTQSIZE,
- OSD_VIDEOTDSIZE,
- OSD_VIDEONSIZE,
+  OSD_VIDEOTHSIZE,
+  OSD_VIDEOTQSIZE,
+  OSD_VIDEOTDSIZE,
+  OSD_VIDEONSIZE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSD_CURSOR
+  OSD_CURSOR
 } osd_raw_window_t;
 typedef struct osd_cap_s {
- int cmd;
+  int cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OSD_CAP_MEMSIZE 1
- long val;
+  long val;
 } osd_cap_t;
 #define OSD_SEND_CMD _IOW('o', 160, osd_cmd_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/dvb/video.h b/libc/kernel/uapi/linux/dvb/video.h
index 7f6d109..c8910bd 100644
--- a/libc/kernel/uapi/linux/dvb/video.h
+++ b/libc/kernel/uapi/linux/dvb/video.h
@@ -23,46 +23,46 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <time.h>
 typedef enum {
- VIDEO_FORMAT_4_3,
- VIDEO_FORMAT_16_9,
+  VIDEO_FORMAT_4_3,
+  VIDEO_FORMAT_16_9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIDEO_FORMAT_221_1
+  VIDEO_FORMAT_221_1
 } video_format_t;
 typedef enum {
- VIDEO_SYSTEM_PAL,
+  VIDEO_SYSTEM_PAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIDEO_SYSTEM_NTSC,
- VIDEO_SYSTEM_PALN,
- VIDEO_SYSTEM_PALNc,
- VIDEO_SYSTEM_PALM,
+  VIDEO_SYSTEM_NTSC,
+  VIDEO_SYSTEM_PALN,
+  VIDEO_SYSTEM_PALNc,
+  VIDEO_SYSTEM_PALM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIDEO_SYSTEM_NTSC60,
- VIDEO_SYSTEM_PAL60,
- VIDEO_SYSTEM_PALM60
+  VIDEO_SYSTEM_NTSC60,
+  VIDEO_SYSTEM_PAL60,
+  VIDEO_SYSTEM_PALM60
 } video_system_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- VIDEO_PAN_SCAN,
- VIDEO_LETTER_BOX,
- VIDEO_CENTER_CUT_OUT
+  VIDEO_PAN_SCAN,
+  VIDEO_LETTER_BOX,
+  VIDEO_CENTER_CUT_OUT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } video_displayformat_t;
 typedef struct {
- int w;
- int h;
+  int w;
+  int h;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- video_format_t aspect_ratio;
+  video_format_t aspect_ratio;
 } video_size_t;
 typedef enum {
- VIDEO_SOURCE_DEMUX,
+  VIDEO_SOURCE_DEMUX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIDEO_SOURCE_MEMORY
+  VIDEO_SOURCE_MEMORY
 } video_stream_source_t;
 typedef enum {
- VIDEO_STOPPED,
+  VIDEO_STOPPED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VIDEO_PLAYING,
- VIDEO_FREEZED
+  VIDEO_PLAYING,
+  VIDEO_FREEZED
 } video_play_state_t;
 #define VIDEO_CMD_PLAY (0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -77,23 +77,23 @@
 #define VIDEO_PLAY_FMT_GOP (1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_command {
- __u32 cmd;
- __u32 flags;
- union {
+  __u32 cmd;
+  __u32 flags;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u64 pts;
- } stop;
- struct {
+    struct {
+      __u64 pts;
+    } stop;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 speed;
- __u32 format;
- } play;
- struct {
+      __s32 speed;
+      __u32 format;
+    } play;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 data[16];
- } raw;
- };
+      __u32 data[16];
+    } raw;
+  };
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_VSYNC_FIELD_UNKNOWN (0)
@@ -102,107 +102,105 @@
 #define VIDEO_VSYNC_FIELD_PROGRESSIVE (3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_event {
- __s32 type;
+  __s32 type;
 #define VIDEO_EVENT_SIZE_CHANGED 1
 #define VIDEO_EVENT_FRAME_RATE_CHANGED 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_EVENT_DECODER_STOPPED 3
 #define VIDEO_EVENT_VSYNC 4
- __kernel_time_t timestamp;
- union {
+  __kernel_time_t timestamp;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- video_size_t size;
- unsigned int frame_rate;
- unsigned char vsync_field;
- } u;
+    video_size_t size;
+    unsigned int frame_rate;
+    unsigned char vsync_field;
+  } u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct video_status {
- int video_blank;
- video_play_state_t play_state;
+  int video_blank;
+  video_play_state_t play_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- video_stream_source_t stream_source;
- video_format_t video_format;
- video_displayformat_t display_format;
+  video_stream_source_t stream_source;
+  video_format_t video_format;
+  video_displayformat_t display_format;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_still_picture {
- char __user *iFrame;
- __s32 size;
+  char __user * iFrame;
+  __s32 size;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef
-struct video_highlight {
- int active;
- __u8 contrast1;
+typedef struct video_highlight {
+  int active;
+  __u8 contrast1;
+  __u8 contrast2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 contrast2;
- __u8 color1;
- __u8 color2;
- __u32 ypos;
+  __u8 color1;
+  __u8 color2;
+  __u32 ypos;
+  __u32 xpos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 xpos;
 } video_highlight_t;
 typedef struct video_spu {
- int active;
+  int active;
+  int stream_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int stream_id;
 } video_spu_t;
 typedef struct video_spu_palette {
- int length;
+  int length;
+  __u8 __user * palette;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 __user *palette;
 } video_spu_palette_t;
 typedef struct video_navi_pack {
- int length;
+  int length;
+  __u8 data[1024];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[1024];
 } video_navi_pack_t;
 typedef __u16 video_attributes_t;
 #define VIDEO_CAP_MPEG1 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_CAP_MPEG2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_CAP_SYS 4
 #define VIDEO_CAP_PROG 8
 #define VIDEO_CAP_SPU 16
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_CAP_NAVI 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_CAP_CSS 64
 #define VIDEO_STOP _IO('o', 21)
 #define VIDEO_PLAY _IO('o', 22)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_FREEZE _IO('o', 23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_CONTINUE _IO('o', 24)
 #define VIDEO_SELECT_SOURCE _IO('o', 25)
 #define VIDEO_SET_BLANK _IO('o', 26)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_GET_STATUS _IOR('o', 27, struct video_status)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_GET_EVENT _IOR('o', 28, struct video_event)
 #define VIDEO_SET_DISPLAY_FORMAT _IO('o', 29)
 #define VIDEO_STILLPICTURE _IOW('o', 30, struct video_still_picture)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_FAST_FORWARD _IO('o', 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_SLOWMOTION _IO('o', 32)
 #define VIDEO_GET_CAPABILITIES _IOR('o', 33, unsigned int)
 #define VIDEO_CLEAR_BUFFER _IO('o', 34)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_SET_ID _IO('o', 35)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_SET_STREAMTYPE _IO('o', 36)
 #define VIDEO_SET_FORMAT _IO('o', 37)
 #define VIDEO_SET_SYSTEM _IO('o', 38)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_SET_HIGHLIGHT _IOW('o', 39, video_highlight_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_SET_SPU _IOW('o', 50, video_spu_t)
 #define VIDEO_SET_SPU_PALETTE _IOW('o', 51, video_spu_palette_t)
 #define VIDEO_GET_NAVI _IOR('o', 52, video_navi_pack_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_SET_ATTRIBUTES _IO('o', 53)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_GET_SIZE _IOR('o', 55, video_size_t)
 #define VIDEO_GET_FRAME_RATE _IOR('o', 56, unsigned int)
 #define VIDEO_GET_PTS _IOR('o', 57, __u64)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_COMMAND _IOWR('o', 59, struct video_command)
 #define VIDEO_TRY_COMMAND _IOWR('o', 60, struct video_command)
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/edd.h b/libc/kernel/uapi/linux/edd.h
index cde1de9..138de2c 100644
--- a/libc/kernel/uapi/linux/edd.h
+++ b/libc/kernel/uapi/linux/edd.h
@@ -56,145 +56,145 @@
 #define EDD_INFO_USE_INT13_FN50 (1 << 7)
 struct edd_device_params {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 length;
- __u16 info_flags;
- __u32 num_default_cylinders;
- __u32 num_default_heads;
+  __u16 length;
+  __u16 info_flags;
+  __u32 num_default_cylinders;
+  __u32 num_default_heads;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sectors_per_track;
- __u64 number_of_sectors;
- __u16 bytes_per_sector;
- __u32 dpte_ptr;
+  __u32 sectors_per_track;
+  __u64 number_of_sectors;
+  __u16 bytes_per_sector;
+  __u32 dpte_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 key;
- __u8 device_path_info_length;
- __u8 reserved2;
- __u16 reserved3;
+  __u16 key;
+  __u8 device_path_info_length;
+  __u8 reserved2;
+  __u16 reserved3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 host_bus_type[4];
- __u8 interface_type[8];
- union {
- struct {
+  __u8 host_bus_type[4];
+  __u8 interface_type[8];
+  union {
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 base_address;
- __u16 reserved1;
- __u32 reserved2;
- } __attribute__ ((packed)) isa;
+      __u16 base_address;
+      __u16 reserved1;
+      __u32 reserved2;
+    } __attribute__((packed)) isa;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u8 bus;
- __u8 slot;
- __u8 function;
+    struct {
+      __u8 bus;
+      __u8 slot;
+      __u8 function;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 channel;
- __u32 reserved;
- } __attribute__ ((packed)) pci;
- struct {
+      __u8 channel;
+      __u32 reserved;
+    } __attribute__((packed)) pci;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved;
- } __attribute__ ((packed)) ibnd;
- struct {
- __u64 reserved;
+      __u64 reserved;
+    } __attribute__((packed)) ibnd;
+    struct {
+      __u64 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } __attribute__ ((packed)) xprs;
- struct {
- __u64 reserved;
- } __attribute__ ((packed)) htpt;
+    } __attribute__((packed)) xprs;
+    struct {
+      __u64 reserved;
+    } __attribute__((packed)) htpt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u64 reserved;
- } __attribute__ ((packed)) unknown;
- } interface_path;
+    struct {
+      __u64 reserved;
+    } __attribute__((packed)) unknown;
+  } interface_path;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- __u8 device;
- __u8 reserved1;
+  union {
+    struct {
+      __u8 device;
+      __u8 reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 reserved2;
- __u32 reserved3;
- __u64 reserved4;
- } __attribute__ ((packed)) ata;
+      __u16 reserved2;
+      __u32 reserved3;
+      __u64 reserved4;
+    } __attribute__((packed)) ata;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u8 device;
- __u8 lun;
- __u8 reserved1;
+    struct {
+      __u8 device;
+      __u8 lun;
+      __u8 reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved2;
- __u32 reserved3;
- __u64 reserved4;
- } __attribute__ ((packed)) atapi;
+      __u8 reserved2;
+      __u32 reserved3;
+      __u64 reserved4;
+    } __attribute__((packed)) atapi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u16 id;
- __u64 lun;
- __u16 reserved1;
+    struct {
+      __u16 id;
+      __u64 lun;
+      __u16 reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved2;
- } __attribute__ ((packed)) scsi;
- struct {
- __u64 serial_number;
+      __u32 reserved2;
+    } __attribute__((packed)) scsi;
+    struct {
+      __u64 serial_number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved;
- } __attribute__ ((packed)) usb;
- struct {
- __u64 eui;
+      __u64 reserved;
+    } __attribute__((packed)) usb;
+    struct {
+      __u64 eui;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved;
- } __attribute__ ((packed)) i1394;
- struct {
- __u64 wwid;
+      __u64 reserved;
+    } __attribute__((packed)) i1394;
+    struct {
+      __u64 wwid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 lun;
- } __attribute__ ((packed)) fibre;
- struct {
- __u64 identity_tag;
+      __u64 lun;
+    } __attribute__((packed)) fibre;
+    struct {
+      __u64 identity_tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved;
- } __attribute__ ((packed)) i2o;
- struct {
- __u32 array_number;
+      __u64 reserved;
+    } __attribute__((packed)) i2o;
+    struct {
+      __u32 array_number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved1;
- __u64 reserved2;
- } __attribute__ ((packed)) raid;
- struct {
+      __u32 reserved1;
+      __u64 reserved2;
+    } __attribute__((packed)) raid;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 device;
- __u8 reserved1;
- __u16 reserved2;
- __u32 reserved3;
+      __u8 device;
+      __u8 reserved1;
+      __u16 reserved2;
+      __u32 reserved3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved4;
- } __attribute__ ((packed)) sata;
- struct {
- __u64 reserved1;
+      __u64 reserved4;
+    } __attribute__((packed)) sata;
+    struct {
+      __u64 reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reserved2;
- } __attribute__ ((packed)) unknown;
- } device_path;
- __u8 reserved4;
+      __u64 reserved2;
+    } __attribute__((packed)) unknown;
+  } device_path;
+  __u8 reserved4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 checksum;
-} __attribute__ ((packed));
+  __u8 checksum;
+} __attribute__((packed));
 struct edd_info {
- __u8 device;
+  __u8 device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 version;
- __u16 interface_support;
- __u16 legacy_max_cylinder;
- __u8 legacy_max_head;
+  __u8 version;
+  __u16 interface_support;
+  __u16 legacy_max_cylinder;
+  __u8 legacy_max_head;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 legacy_sectors_per_track;
- struct edd_device_params params;
-} __attribute__ ((packed));
+  __u8 legacy_sectors_per_track;
+  struct edd_device_params params;
+} __attribute__((packed));
 struct edd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int mbr_signature[EDD_MBR_SIG_MAX];
- struct edd_info edd_info[EDDMAXNR];
- unsigned char mbr_signature_nr;
- unsigned char edd_info_nr;
+  unsigned int mbr_signature[EDD_MBR_SIG_MAX];
+  struct edd_info edd_info[EDDMAXNR];
+  unsigned char mbr_signature_nr;
+  unsigned char edd_info_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/efs_fs_sb.h b/libc/kernel/uapi/linux/efs_fs_sb.h
index 1e25710..87fd415 100644
--- a/libc/kernel/uapi/linux/efs_fs_sb.h
+++ b/libc/kernel/uapi/linux/efs_fs_sb.h
@@ -28,44 +28,44 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFS_ROOTINODE 2
 struct efs_super {
- __be32 fs_size;
- __be32 fs_firstcg;
+  __be32 fs_size;
+  __be32 fs_firstcg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 fs_cgfsize;
- __be16 fs_cgisize;
- __be16 fs_sectors;
- __be16 fs_heads;
+  __be32 fs_cgfsize;
+  __be16 fs_cgisize;
+  __be16 fs_sectors;
+  __be16 fs_heads;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 fs_ncg;
- __be16 fs_dirty;
- __be32 fs_time;
- __be32 fs_magic;
+  __be16 fs_ncg;
+  __be16 fs_dirty;
+  __be32 fs_time;
+  __be32 fs_magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char fs_fname[6];
- char fs_fpack[6];
- __be32 fs_bmsize;
- __be32 fs_tfree;
+  char fs_fname[6];
+  char fs_fpack[6];
+  __be32 fs_bmsize;
+  __be32 fs_tfree;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 fs_tinode;
- __be32 fs_bmblock;
- __be32 fs_replsb;
- __be32 fs_lastialloc;
+  __be32 fs_tinode;
+  __be32 fs_bmblock;
+  __be32 fs_replsb;
+  __be32 fs_lastialloc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char fs_spare[20];
- __be32 fs_checksum;
+  char fs_spare[20];
+  __be32 fs_checksum;
 };
 struct efs_sb_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fs_magic;
- __u32 fs_start;
- __u32 first_block;
- __u32 total_blocks;
+  __u32 fs_magic;
+  __u32 fs_start;
+  __u32 first_block;
+  __u32 total_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 group_size;
- __u32 data_free;
- __u32 inode_free;
- __u16 inode_blocks;
+  __u32 group_size;
+  __u32 data_free;
+  __u32 inode_free;
+  __u16 inode_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 total_groups;
+  __u16 total_groups;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/elf-em.h b/libc/kernel/uapi/linux/elf-em.h
index 1e86c5c..8fe939a 100644
--- a/libc/kernel/uapi/linux/elf-em.h
+++ b/libc/kernel/uapi/linux/elf-em.h
@@ -51,16 +51,18 @@
 #define EM_M32R 88
 #define EM_MN10300 89
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EM_OPENRISC 92
 #define EM_BLACKFIN 106
 #define EM_TI_C6000 140
 #define EM_AARCH64 183
-#define EM_FRV 0x5441
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EM_FRV 0x5441
 #define EM_AVR32 0x18ad
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_V850 0x9080
-#define EM_CYGNUS_M32R 0x9041
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EM_CYGNUS_M32R 0x9041
 #define EM_S390_OLD 0xA390
 #define EM_CYGNUS_MN10300 0xbeef
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/elf-fdpic.h b/libc/kernel/uapi/linux/elf-fdpic.h
index 4441890..45a56e4 100644
--- a/libc/kernel/uapi/linux/elf-fdpic.h
+++ b/libc/kernel/uapi/linux/elf-fdpic.h
@@ -22,16 +22,16 @@
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct elf32_fdpic_loadseg {
- Elf32_Addr addr;
- Elf32_Addr p_vaddr;
- Elf32_Word p_memsz;
+  Elf32_Addr addr;
+  Elf32_Addr p_vaddr;
+  Elf32_Word p_memsz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct elf32_fdpic_loadmap {
- Elf32_Half version;
- Elf32_Half nsegs;
+  Elf32_Half version;
+  Elf32_Half nsegs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct elf32_fdpic_loadseg segs[];
+  struct elf32_fdpic_loadseg segs[];
 };
 #define ELF32_FDPIC_LOADMAP_VERSION 0x0000
 #endif
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 0e0d725..4e42758 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -138,22 +138,22 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
-typedef struct dynamic{
- Elf32_Sword d_tag;
+typedef struct dynamic {
+  Elf32_Sword d_tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union{
- Elf32_Sword d_val;
- Elf32_Addr d_ptr;
- } d_un;
+  union {
+    Elf32_Sword d_val;
+    Elf32_Addr d_ptr;
+  } d_un;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf32_Dyn;
 typedef struct {
- Elf64_Sxword d_tag;
- union {
+  Elf64_Sxword d_tag;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Xword d_val;
- Elf64_Addr d_ptr;
- } d_un;
+    Elf64_Xword d_val;
+    Elf64_Addr d_ptr;
+  } d_un;
 } Elf64_Dyn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF32_R_SYM(x) ((x) >> 8)
@@ -162,116 +162,116 @@
 #define ELF64_R_TYPE(i) ((i) & 0xffffffff)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct elf32_rel {
- Elf32_Addr r_offset;
- Elf32_Word r_info;
+  Elf32_Addr r_offset;
+  Elf32_Word r_info;
 } Elf32_Rel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct elf64_rel {
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
+  Elf64_Addr r_offset;
+  Elf64_Xword r_info;
 } Elf64_Rel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef struct elf32_rela{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
- Elf32_Sword r_addend;
+typedef struct elf32_rela {
+  Elf32_Addr r_offset;
+  Elf32_Word r_info;
+  Elf32_Sword r_addend;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf32_Rela;
 typedef struct elf64_rela {
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
+  Elf64_Addr r_offset;
+  Elf64_Xword r_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Sxword r_addend;
+  Elf64_Sxword r_addend;
 } Elf64_Rela;
-typedef struct elf32_sym{
- Elf32_Word st_name;
+typedef struct elf32_sym {
+  Elf32_Word st_name;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Addr st_value;
- Elf32_Word st_size;
- unsigned char st_info;
- unsigned char st_other;
+  Elf32_Addr st_value;
+  Elf32_Word st_size;
+  unsigned char st_info;
+  unsigned char st_other;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Half st_shndx;
+  Elf32_Half st_shndx;
 } Elf32_Sym;
 typedef struct elf64_sym {
- Elf64_Word st_name;
+  Elf64_Word st_name;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char st_info;
- unsigned char st_other;
- Elf64_Half st_shndx;
- Elf64_Addr st_value;
+  unsigned char st_info;
+  unsigned char st_other;
+  Elf64_Half st_shndx;
+  Elf64_Addr st_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Xword st_size;
+  Elf64_Xword st_size;
 } Elf64_Sym;
 #define EI_NIDENT 16
-typedef struct elf32_hdr{
+typedef struct elf32_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char e_ident[EI_NIDENT];
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
+  unsigned char e_ident[EI_NIDENT];
+  Elf32_Half e_type;
+  Elf32_Half e_machine;
+  Elf32_Word e_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
+  Elf32_Addr e_entry;
+  Elf32_Off e_phoff;
+  Elf32_Off e_shoff;
+  Elf32_Word e_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
+  Elf32_Half e_ehsize;
+  Elf32_Half e_phentsize;
+  Elf32_Half e_phnum;
+  Elf32_Half e_shentsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
+  Elf32_Half e_shnum;
+  Elf32_Half e_shstrndx;
 } Elf32_Ehdr;
 typedef struct elf64_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char e_ident[EI_NIDENT];
- Elf64_Half e_type;
- Elf64_Half e_machine;
- Elf64_Word e_version;
+  unsigned char e_ident[EI_NIDENT];
+  Elf64_Half e_type;
+  Elf64_Half e_machine;
+  Elf64_Word e_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Addr e_entry;
- Elf64_Off e_phoff;
- Elf64_Off e_shoff;
- Elf64_Word e_flags;
+  Elf64_Addr e_entry;
+  Elf64_Off e_phoff;
+  Elf64_Off e_shoff;
+  Elf64_Word e_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Half e_ehsize;
- Elf64_Half e_phentsize;
- Elf64_Half e_phnum;
- Elf64_Half e_shentsize;
+  Elf64_Half e_ehsize;
+  Elf64_Half e_phentsize;
+  Elf64_Half e_phnum;
+  Elf64_Half e_shentsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Half e_shnum;
- Elf64_Half e_shstrndx;
+  Elf64_Half e_shnum;
+  Elf64_Half e_shstrndx;
 } Elf64_Ehdr;
 #define PF_R 0x4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_W 0x2
 #define PF_X 0x1
-typedef struct elf32_phdr{
- Elf32_Word p_type;
+typedef struct elf32_phdr {
+  Elf32_Word p_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
+  Elf32_Off p_offset;
+  Elf32_Addr p_vaddr;
+  Elf32_Addr p_paddr;
+  Elf32_Word p_filesz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
+  Elf32_Word p_memsz;
+  Elf32_Word p_flags;
+  Elf32_Word p_align;
 } Elf32_Phdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct elf64_phdr {
- Elf64_Word p_type;
- Elf64_Word p_flags;
- Elf64_Off p_offset;
+  Elf64_Word p_type;
+  Elf64_Word p_flags;
+  Elf64_Off p_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Addr p_vaddr;
- Elf64_Addr p_paddr;
- Elf64_Xword p_filesz;
- Elf64_Xword p_memsz;
+  Elf64_Addr p_vaddr;
+  Elf64_Addr p_paddr;
+  Elf64_Xword p_filesz;
+  Elf64_Xword p_memsz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Xword p_align;
+  Elf64_Xword p_align;
 } Elf64_Phdr;
 #define SHT_NULL 0
 #define SHT_PROGBITS 1
@@ -309,34 +309,34 @@
 #define SHN_COMMON 0xfff2
 #define SHN_HIRESERVE 0xffff
 typedef struct elf32_shdr {
- Elf32_Word sh_name;
+  Elf32_Word sh_name;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
+  Elf32_Word sh_type;
+  Elf32_Word sh_flags;
+  Elf32_Addr sh_addr;
+  Elf32_Off sh_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
+  Elf32_Word sh_size;
+  Elf32_Word sh_link;
+  Elf32_Word sh_info;
+  Elf32_Word sh_addralign;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Word sh_entsize;
+  Elf32_Word sh_entsize;
 } Elf32_Shdr;
 typedef struct elf64_shdr {
- Elf64_Word sh_name;
+  Elf64_Word sh_name;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Word sh_type;
- Elf64_Xword sh_flags;
- Elf64_Addr sh_addr;
- Elf64_Off sh_offset;
+  Elf64_Word sh_type;
+  Elf64_Xword sh_flags;
+  Elf64_Addr sh_addr;
+  Elf64_Off sh_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Xword sh_size;
- Elf64_Word sh_link;
- Elf64_Word sh_info;
- Elf64_Xword sh_addralign;
+  Elf64_Xword sh_size;
+  Elf64_Word sh_link;
+  Elf64_Word sh_info;
+  Elf64_Xword sh_addralign;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Xword sh_entsize;
+  Elf64_Xword sh_entsize;
 } Elf64_Shdr;
 #define EI_MAG0 0
 #define EI_MAG1 1
@@ -404,26 +404,28 @@
 #define NT_S390_LAST_BREAK 0x306
 #define NT_S390_SYSTEM_CALL 0x307
 #define NT_S390_TDB 0x308
-#define NT_ARM_VFP 0x400
+#define NT_S390_VXRS_LOW 0x309
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NT_S390_VXRS_HIGH 0x30a
+#define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NT_ARM_HW_WATCH 0x403
 #define NT_METAG_CBUF 0x500
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NT_METAG_RPIPE 0x501
 #define NT_METAG_TLS 0x502
-typedef struct elf32_note {
- Elf32_Word n_namesz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf32_Word n_descsz;
- Elf32_Word n_type;
+typedef struct elf32_note {
+  Elf32_Word n_namesz;
+  Elf32_Word n_descsz;
+  Elf32_Word n_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf32_Nhdr;
 typedef struct elf64_note {
+  Elf64_Word n_namesz;
+  Elf64_Word n_descsz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Elf64_Word n_namesz;
- Elf64_Word n_descsz;
- Elf64_Word n_type;
+  Elf64_Word n_type;
 } Elf64_Nhdr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/elfcore.h b/libc/kernel/uapi/linux/elfcore.h
index 0e2338e..dbf2c84 100644
--- a/libc/kernel/uapi/linux/elfcore.h
+++ b/libc/kernel/uapi/linux/elfcore.h
@@ -26,60 +26,56 @@
 #include <linux/elf.h>
 #include <linux/fs.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct elf_siginfo
-{
- int si_signo;
- int si_code;
+struct elf_siginfo {
+  int si_signo;
+  int si_code;
+  int si_errno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int si_errno;
 };
 typedef elf_greg_t greg_t;
 typedef elf_gregset_t gregset_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef elf_fpregset_t fpregset_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef elf_fpxregset_t fpxregset_t;
 #define NGREG ELF_NGREG
-struct elf_prstatus
+struct elf_prstatus {
+  struct elf_siginfo pr_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- struct elf_siginfo pr_info;
- short pr_cursig;
- unsigned long pr_sigpend;
+  short pr_cursig;
+  unsigned long pr_sigpend;
+  unsigned long pr_sighold;
+  pid_t pr_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long pr_sighold;
- pid_t pr_pid;
- pid_t pr_ppid;
- pid_t pr_pgrp;
+  pid_t pr_ppid;
+  pid_t pr_pgrp;
+  pid_t pr_sid;
+  struct timeval pr_utime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- pid_t pr_sid;
- struct timeval pr_utime;
- struct timeval pr_stime;
- struct timeval pr_cutime;
+  struct timeval pr_stime;
+  struct timeval pr_cutime;
+  struct timeval pr_cstime;
+  elf_gregset_t pr_reg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timeval pr_cstime;
- elf_gregset_t pr_reg;
- int pr_fpvalid;
+  int pr_fpvalid;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_PRARGSZ (80)
-struct elf_prpsinfo
-{
- char pr_state;
+struct elf_prpsinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char pr_sname;
- char pr_zomb;
- char pr_nice;
- unsigned long pr_flag;
+  char pr_state;
+  char pr_sname;
+  char pr_zomb;
+  char pr_nice;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_uid_t pr_uid;
- __kernel_gid_t pr_gid;
- pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;
- char pr_fname[16];
+  unsigned long pr_flag;
+  __kernel_uid_t pr_uid;
+  __kernel_gid_t pr_gid;
+  pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char pr_psargs[ELF_PRARGSZ];
+  char pr_fname[16];
+  char pr_psargs[ELF_PRARGSZ];
 };
 typedef struct elf_prstatus prstatus_t;
-typedef struct elf_prpsinfo prpsinfo_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct elf_prpsinfo prpsinfo_t;
 #define PRARGSZ ELF_PRARGSZ
 #endif
diff --git a/libc/kernel/uapi/linux/errqueue.h b/libc/kernel/uapi/linux/errqueue.h
index b8fd3b4..dd57a29 100644
--- a/libc/kernel/uapi/linux/errqueue.h
+++ b/libc/kernel/uapi/linux/errqueue.h
@@ -21,14 +21,14 @@
 #include <linux/types.h>
 struct sock_extended_err {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ee_errno;
- __u8 ee_origin;
- __u8 ee_type;
- __u8 ee_code;
+  __u32 ee_errno;
+  __u8 ee_origin;
+  __u8 ee_type;
+  __u8 ee_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ee_pad;
- __u32 ee_info;
- __u32 ee_data;
+  __u8 ee_pad;
+  __u32 ee_info;
+  __u32 ee_data;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_EE_ORIGIN_NONE 0
@@ -38,6 +38,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_EE_ORIGIN_TXSTATUS 4
 #define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
-#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1))
+#define SO_EE_OFFENDER(ee) ((struct sockaddr *) ((ee) + 1))
+struct scm_timestamping {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct timespec ts[3];
+};
+enum {
+  SCM_TSTAMP_SND,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCM_TSTAMP_SCHED,
+  SCM_TSTAMP_ACK,
+};
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index b6f1327..1a00c7f 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -22,27 +22,27 @@
 #include <linux/if_ether.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_cmd {
- __u32 cmd;
- __u32 supported;
- __u32 advertising;
+  __u32 cmd;
+  __u32 supported;
+  __u32 advertising;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 speed;
- __u8 duplex;
- __u8 port;
- __u8 phy_address;
+  __u16 speed;
+  __u8 duplex;
+  __u8 port;
+  __u8 phy_address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 transceiver;
- __u8 autoneg;
- __u8 mdio_support;
- __u32 maxtxpkt;
+  __u8 transceiver;
+  __u8 autoneg;
+  __u8 mdio_support;
+  __u32 maxtxpkt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 maxrxpkt;
- __u16 speed_hi;
- __u8 eth_tp_mdix;
- __u8 eth_tp_mdix_ctrl;
+  __u32 maxrxpkt;
+  __u16 speed_hi;
+  __u8 eth_tp_mdix;
+  __u8 eth_tp_mdix_ctrl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lp_advertising;
- __u32 reserved[2];
+  __u32 lp_advertising;
+  __u32 reserved[2];
 };
 #define ETH_MDIO_SUPPORTS_C22 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -51,633 +51,679 @@
 #define ETHTOOL_BUSINFO_LEN 32
 struct ethtool_drvinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cmd;
- char driver[32];
- char version[32];
- char fw_version[ETHTOOL_FWVERS_LEN];
+  __u32 cmd;
+  char driver[32];
+  char version[32];
+  char fw_version[ETHTOOL_FWVERS_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char bus_info[ETHTOOL_BUSINFO_LEN];
- char reserved1[32];
- char reserved2[12];
- __u32 n_priv_flags;
+  char bus_info[ETHTOOL_BUSINFO_LEN];
+  char reserved1[32];
+  char reserved2[12];
+  __u32 n_priv_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 n_stats;
- __u32 testinfo_len;
- __u32 eedump_len;
- __u32 regdump_len;
+  __u32 n_stats;
+  __u32 testinfo_len;
+  __u32 eedump_len;
+  __u32 regdump_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SOPASS_MAX 6
 struct ethtool_wolinfo {
- __u32 cmd;
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 supported;
- __u32 wolopts;
- __u8 sopass[SOPASS_MAX];
+  __u32 supported;
+  __u32 wolopts;
+  __u8 sopass[SOPASS_MAX];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_value {
- __u32 cmd;
- __u32 data;
+  __u32 cmd;
+  __u32 data;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum tunable_id {
+  ETHTOOL_ID_UNSPEC,
+  ETHTOOL_RX_COPYBREAK,
+  ETHTOOL_TX_COPYBREAK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum tunable_type_id {
+  ETHTOOL_TUNABLE_UNSPEC,
+  ETHTOOL_TUNABLE_U8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ETHTOOL_TUNABLE_U16,
+  ETHTOOL_TUNABLE_U32,
+  ETHTOOL_TUNABLE_U64,
+  ETHTOOL_TUNABLE_STRING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ETHTOOL_TUNABLE_S8,
+  ETHTOOL_TUNABLE_S16,
+  ETHTOOL_TUNABLE_S32,
+  ETHTOOL_TUNABLE_S64,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct ethtool_tunable {
+  __u32 cmd;
+  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 type_id;
+  __u32 len;
+  void * data[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_regs {
- __u32 cmd;
- __u32 version;
- __u32 len;
+  __u32 cmd;
+  __u32 version;
+  __u32 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[0];
+  __u8 data[0];
 };
 struct ethtool_eeprom {
- __u32 cmd;
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 magic;
- __u32 offset;
- __u32 len;
- __u8 data[0];
+  __u32 magic;
+  __u32 offset;
+  __u32 len;
+  __u8 data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_eee {
- __u32 cmd;
- __u32 supported;
+  __u32 cmd;
+  __u32 supported;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 advertised;
- __u32 lp_advertised;
- __u32 eee_active;
- __u32 eee_enabled;
+  __u32 advertised;
+  __u32 lp_advertised;
+  __u32 eee_active;
+  __u32 eee_enabled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_lpi_enabled;
- __u32 tx_lpi_timer;
- __u32 reserved[2];
+  __u32 tx_lpi_enabled;
+  __u32 tx_lpi_timer;
+  __u32 reserved[2];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_modinfo {
- __u32 cmd;
- __u32 type;
- __u32 eeprom_len;
+  __u32 cmd;
+  __u32 type;
+  __u32 eeprom_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[8];
+  __u32 reserved[8];
 };
 struct ethtool_coalesce {
- __u32 cmd;
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_coalesce_usecs;
- __u32 rx_max_coalesced_frames;
- __u32 rx_coalesce_usecs_irq;
- __u32 rx_max_coalesced_frames_irq;
+  __u32 rx_coalesce_usecs;
+  __u32 rx_max_coalesced_frames;
+  __u32 rx_coalesce_usecs_irq;
+  __u32 rx_max_coalesced_frames_irq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_coalesce_usecs;
- __u32 tx_max_coalesced_frames;
- __u32 tx_coalesce_usecs_irq;
- __u32 tx_max_coalesced_frames_irq;
+  __u32 tx_coalesce_usecs;
+  __u32 tx_max_coalesced_frames;
+  __u32 tx_coalesce_usecs_irq;
+  __u32 tx_max_coalesced_frames_irq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 stats_block_coalesce_usecs;
- __u32 use_adaptive_rx_coalesce;
- __u32 use_adaptive_tx_coalesce;
- __u32 pkt_rate_low;
+  __u32 stats_block_coalesce_usecs;
+  __u32 use_adaptive_rx_coalesce;
+  __u32 use_adaptive_tx_coalesce;
+  __u32 pkt_rate_low;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_coalesce_usecs_low;
- __u32 rx_max_coalesced_frames_low;
- __u32 tx_coalesce_usecs_low;
- __u32 tx_max_coalesced_frames_low;
+  __u32 rx_coalesce_usecs_low;
+  __u32 rx_max_coalesced_frames_low;
+  __u32 tx_coalesce_usecs_low;
+  __u32 tx_max_coalesced_frames_low;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pkt_rate_high;
- __u32 rx_coalesce_usecs_high;
- __u32 rx_max_coalesced_frames_high;
- __u32 tx_coalesce_usecs_high;
+  __u32 pkt_rate_high;
+  __u32 rx_coalesce_usecs_high;
+  __u32 rx_max_coalesced_frames_high;
+  __u32 tx_coalesce_usecs_high;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_max_coalesced_frames_high;
- __u32 rate_sample_interval;
+  __u32 tx_max_coalesced_frames_high;
+  __u32 rate_sample_interval;
 };
 struct ethtool_ringparam {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cmd;
- __u32 rx_max_pending;
- __u32 rx_mini_max_pending;
- __u32 rx_jumbo_max_pending;
+  __u32 cmd;
+  __u32 rx_max_pending;
+  __u32 rx_mini_max_pending;
+  __u32 rx_jumbo_max_pending;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_max_pending;
- __u32 rx_pending;
- __u32 rx_mini_pending;
- __u32 rx_jumbo_pending;
+  __u32 tx_max_pending;
+  __u32 rx_pending;
+  __u32 rx_mini_pending;
+  __u32 rx_jumbo_pending;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_pending;
+  __u32 tx_pending;
 };
 struct ethtool_channels {
- __u32 cmd;
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_rx;
- __u32 max_tx;
- __u32 max_other;
- __u32 max_combined;
+  __u32 max_rx;
+  __u32 max_tx;
+  __u32 max_other;
+  __u32 max_combined;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_count;
- __u32 tx_count;
- __u32 other_count;
- __u32 combined_count;
+  __u32 rx_count;
+  __u32 tx_count;
+  __u32 other_count;
+  __u32 combined_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_pauseparam {
- __u32 cmd;
- __u32 autoneg;
+  __u32 cmd;
+  __u32 autoneg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_pause;
- __u32 tx_pause;
+  __u32 rx_pause;
+  __u32 tx_pause;
 };
 #define ETH_GSTRING_LEN 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ethtool_stringset {
- ETH_SS_TEST = 0,
- ETH_SS_STATS,
- ETH_SS_PRIV_FLAGS,
+  ETH_SS_TEST = 0,
+  ETH_SS_STATS,
+  ETH_SS_PRIV_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ETH_SS_NTUPLE_FILTERS,
- ETH_SS_FEATURES,
+  ETH_SS_NTUPLE_FILTERS,
+  ETH_SS_FEATURES,
 };
 struct ethtool_gstrings {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cmd;
- __u32 string_set;
- __u32 len;
- __u8 data[0];
+  __u32 cmd;
+  __u32 string_set;
+  __u32 len;
+  __u8 data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_sset_info {
- __u32 cmd;
- __u32 reserved;
+  __u32 cmd;
+  __u32 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sset_mask;
- __u32 data[0];
+  __u64 sset_mask;
+  __u32 data[0];
 };
 enum ethtool_test_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ETH_TEST_FL_OFFLINE = (1 << 0),
- ETH_TEST_FL_FAILED = (1 << 1),
- ETH_TEST_FL_EXTERNAL_LB = (1 << 2),
- ETH_TEST_FL_EXTERNAL_LB_DONE = (1 << 3),
+  ETH_TEST_FL_OFFLINE = (1 << 0),
+  ETH_TEST_FL_FAILED = (1 << 1),
+  ETH_TEST_FL_EXTERNAL_LB = (1 << 2),
+  ETH_TEST_FL_EXTERNAL_LB_DONE = (1 << 3),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_test {
- __u32 cmd;
- __u32 flags;
+  __u32 cmd;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
- __u32 len;
- __u64 data[0];
+  __u32 reserved;
+  __u32 len;
+  __u64 data[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_stats {
- __u32 cmd;
- __u32 n_stats;
- __u64 data[0];
+  __u32 cmd;
+  __u32 n_stats;
+  __u64 data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_perm_addr {
- __u32 cmd;
- __u32 size;
+  __u32 cmd;
+  __u32 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[0];
+  __u8 data[0];
 };
 enum ethtool_flags {
- ETH_FLAG_TXVLAN = (1 << 7),
+  ETH_FLAG_TXVLAN = (1 << 7),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ETH_FLAG_RXVLAN = (1 << 8),
- ETH_FLAG_LRO = (1 << 15),
- ETH_FLAG_NTUPLE = (1 << 27),
- ETH_FLAG_RXHASH = (1 << 28),
+  ETH_FLAG_RXVLAN = (1 << 8),
+  ETH_FLAG_LRO = (1 << 15),
+  ETH_FLAG_NTUPLE = (1 << 27),
+  ETH_FLAG_RXHASH = (1 << 28),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_tcpip4_spec {
- __be32 ip4src;
- __be32 ip4dst;
+  __be32 ip4src;
+  __be32 ip4dst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 psrc;
- __be16 pdst;
- __u8 tos;
+  __be16 psrc;
+  __be16 pdst;
+  __u8 tos;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_ah_espip4_spec {
- __be32 ip4src;
- __be32 ip4dst;
- __be32 spi;
+  __be32 ip4src;
+  __be32 ip4dst;
+  __be32 spi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tos;
+  __u8 tos;
 };
 #define ETH_RX_NFC_IP4 1
 struct ethtool_usrip4_spec {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ip4src;
- __be32 ip4dst;
- __be32 l4_4_bytes;
- __u8 tos;
+  __be32 ip4src;
+  __be32 ip4dst;
+  __be32 l4_4_bytes;
+  __u8 tos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ip_ver;
- __u8 proto;
+  __u8 ip_ver;
+  __u8 proto;
 };
 union ethtool_flow_union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ethtool_tcpip4_spec tcp_ip4_spec;
- struct ethtool_tcpip4_spec udp_ip4_spec;
- struct ethtool_tcpip4_spec sctp_ip4_spec;
- struct ethtool_ah_espip4_spec ah_ip4_spec;
+  struct ethtool_tcpip4_spec tcp_ip4_spec;
+  struct ethtool_tcpip4_spec udp_ip4_spec;
+  struct ethtool_tcpip4_spec sctp_ip4_spec;
+  struct ethtool_ah_espip4_spec ah_ip4_spec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ethtool_ah_espip4_spec esp_ip4_spec;
- struct ethtool_usrip4_spec usr_ip4_spec;
- struct ethhdr ether_spec;
- __u8 hdata[52];
+  struct ethtool_ah_espip4_spec esp_ip4_spec;
+  struct ethtool_usrip4_spec usr_ip4_spec;
+  struct ethhdr ether_spec;
+  __u8 hdata[52];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_flow_ext {
- __u8 padding[2];
- unsigned char h_dest[ETH_ALEN];
+  __u8 padding[2];
+  unsigned char h_dest[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 vlan_etype;
- __be16 vlan_tci;
- __be32 data[2];
+  __be16 vlan_etype;
+  __be16 vlan_tci;
+  __be32 data[2];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_rx_flow_spec {
- __u32 flow_type;
- union ethtool_flow_union h_u;
- struct ethtool_flow_ext h_ext;
+  __u32 flow_type;
+  union ethtool_flow_union h_u;
+  struct ethtool_flow_ext h_ext;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union ethtool_flow_union m_u;
- struct ethtool_flow_ext m_ext;
- __u64 ring_cookie;
- __u32 location;
+  union ethtool_flow_union m_u;
+  struct ethtool_flow_ext m_ext;
+  __u64 ring_cookie;
+  __u32 location;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_rxnfc {
- __u32 cmd;
- __u32 flow_type;
+  __u32 cmd;
+  __u32 flow_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data;
- struct ethtool_rx_flow_spec fs;
- __u32 rule_cnt;
- __u32 rule_locs[0];
+  __u64 data;
+  struct ethtool_rx_flow_spec fs;
+  __u32 rule_cnt;
+  __u32 rule_locs[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ethtool_rxfh_indir {
- __u32 cmd;
- __u32 size;
+  __u32 cmd;
+  __u32 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ring_index[0];
+  __u32 ring_index[0];
 };
+struct ethtool_rxfh {
+  __u32 cmd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 rss_context;
+  __u32 indir_size;
+  __u32 key_size;
+  __u32 rsvd[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 rss_config[0];
+};
+#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
 struct ethtool_rx_ntuple_flow_spec {
- __u32 flow_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct ethtool_tcpip4_spec tcp_ip4_spec;
- struct ethtool_tcpip4_spec udp_ip4_spec;
- struct ethtool_tcpip4_spec sctp_ip4_spec;
+  __u32 flow_type;
+  union {
+    struct ethtool_tcpip4_spec tcp_ip4_spec;
+    struct ethtool_tcpip4_spec udp_ip4_spec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ethtool_ah_espip4_spec ah_ip4_spec;
- struct ethtool_ah_espip4_spec esp_ip4_spec;
- struct ethtool_usrip4_spec usr_ip4_spec;
- struct ethhdr ether_spec;
+    struct ethtool_tcpip4_spec sctp_ip4_spec;
+    struct ethtool_ah_espip4_spec ah_ip4_spec;
+    struct ethtool_ah_espip4_spec esp_ip4_spec;
+    struct ethtool_usrip4_spec usr_ip4_spec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 hdata[72];
- } h_u, m_u;
- __u16 vlan_tag;
- __u16 vlan_tag_mask;
+    struct ethhdr ether_spec;
+    __u8 hdata[72];
+  } h_u, m_u;
+  __u16 vlan_tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data;
- __u64 data_mask;
- __s32 action;
-#define ETHTOOL_RXNTUPLE_ACTION_DROP (-1)
+  __u16 vlan_tag_mask;
+  __u64 data;
+  __u64 data_mask;
+  __s32 action;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ETHTOOL_RXNTUPLE_ACTION_CLEAR (-2)
+#define ETHTOOL_RXNTUPLE_ACTION_DROP (- 1)
+#define ETHTOOL_RXNTUPLE_ACTION_CLEAR (- 2)
 };
 struct ethtool_rx_ntuple {
- __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ethtool_rx_ntuple_flow_spec fs;
+  __u32 cmd;
+  struct ethtool_rx_ntuple_flow_spec fs;
 };
 #define ETHTOOL_FLASH_MAX_FILENAME 128
-enum ethtool_flash_op_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ETHTOOL_FLASH_ALL_REGIONS = 0,
+enum ethtool_flash_op_type {
+  ETHTOOL_FLASH_ALL_REGIONS = 0,
 };
 struct ethtool_flash {
- __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 region;
- char data[ETHTOOL_FLASH_MAX_FILENAME];
+  __u32 cmd;
+  __u32 region;
+  char data[ETHTOOL_FLASH_MAX_FILENAME];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ethtool_dump {
+  __u32 cmd;
+  __u32 version;
+  __u32 flag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 len;
+  __u8 data[0];
 };
 #define ETH_FW_DUMP_DISABLE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct ethtool_dump {
- __u32 cmd;
- __u32 version;
- __u32 flag;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 len;
- __u8 data[0];
-};
 struct ethtool_get_features_block {
+  __u32 available;
+  __u32 requested;
+  __u32 active;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 available;
- __u32 requested;
- __u32 active;
- __u32 never_changed;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 never_changed;
 };
 struct ethtool_gfeatures {
- __u32 cmd;
- __u32 size;
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ethtool_get_features_block features[0];
+  __u32 size;
+  struct ethtool_get_features_block features[0];
 };
 struct ethtool_set_features_block {
- __u32 valid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 requested;
+  __u32 valid;
+  __u32 requested;
 };
 struct ethtool_sfeatures {
- __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 size;
- struct ethtool_set_features_block features[0];
+  __u32 cmd;
+  __u32 size;
+  struct ethtool_set_features_block features[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_ts_info {
+  __u32 cmd;
+  __u32 so_timestamping;
+  __s32 phc_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cmd;
- __u32 so_timestamping;
- __s32 phc_index;
- __u32 tx_types;
+  __u32 tx_types;
+  __u32 tx_reserved[3];
+  __u32 rx_filters;
+  __u32 rx_reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_reserved[3];
- __u32 rx_filters;
- __u32 rx_reserved[3];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ethtool_sfeatures_retval_bits {
- ETHTOOL_F_UNSUPPORTED__BIT,
- ETHTOOL_F_WISH__BIT,
- ETHTOOL_F_COMPAT__BIT,
+  ETHTOOL_F_UNSUPPORTED__BIT,
+  ETHTOOL_F_WISH__BIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ETHTOOL_F_COMPAT__BIT,
 };
 #define ETHTOOL_F_UNSUPPORTED (1 << ETHTOOL_F_UNSUPPORTED__BIT)
 #define ETHTOOL_F_WISH (1 << ETHTOOL_F_WISH__BIT)
-#define ETHTOOL_F_COMPAT (1 << ETHTOOL_F_COMPAT__BIT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_F_COMPAT (1 << ETHTOOL_F_COMPAT__BIT)
 #define ETHTOOL_GSET 0x00000001
 #define ETHTOOL_SSET 0x00000002
 #define ETHTOOL_GDRVINFO 0x00000003
-#define ETHTOOL_GREGS 0x00000004
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_GREGS 0x00000004
 #define ETHTOOL_GWOL 0x00000005
 #define ETHTOOL_SWOL 0x00000006
 #define ETHTOOL_GMSGLVL 0x00000007
-#define ETHTOOL_SMSGLVL 0x00000008
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SMSGLVL 0x00000008
 #define ETHTOOL_NWAY_RST 0x00000009
 #define ETHTOOL_GLINK 0x0000000a
 #define ETHTOOL_GEEPROM 0x0000000b
-#define ETHTOOL_SEEPROM 0x0000000c
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SEEPROM 0x0000000c
 #define ETHTOOL_GCOALESCE 0x0000000e
 #define ETHTOOL_SCOALESCE 0x0000000f
 #define ETHTOOL_GRINGPARAM 0x00000010
-#define ETHTOOL_SRINGPARAM 0x00000011
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SRINGPARAM 0x00000011
 #define ETHTOOL_GPAUSEPARAM 0x00000012
 #define ETHTOOL_SPAUSEPARAM 0x00000013
 #define ETHTOOL_GRXCSUM 0x00000014
-#define ETHTOOL_SRXCSUM 0x00000015
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SRXCSUM 0x00000015
 #define ETHTOOL_GTXCSUM 0x00000016
 #define ETHTOOL_STXCSUM 0x00000017
 #define ETHTOOL_GSG 0x00000018
-#define ETHTOOL_SSG 0x00000019
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SSG 0x00000019
 #define ETHTOOL_TEST 0x0000001a
 #define ETHTOOL_GSTRINGS 0x0000001b
 #define ETHTOOL_PHYS_ID 0x0000001c
-#define ETHTOOL_GSTATS 0x0000001d
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_GSTATS 0x0000001d
 #define ETHTOOL_GTSO 0x0000001e
 #define ETHTOOL_STSO 0x0000001f
 #define ETHTOOL_GPERMADDR 0x00000020
-#define ETHTOOL_GUFO 0x00000021
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_GUFO 0x00000021
 #define ETHTOOL_SUFO 0x00000022
 #define ETHTOOL_GGSO 0x00000023
 #define ETHTOOL_SGSO 0x00000024
-#define ETHTOOL_GFLAGS 0x00000025
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_GFLAGS 0x00000025
 #define ETHTOOL_SFLAGS 0x00000026
 #define ETHTOOL_GPFLAGS 0x00000027
 #define ETHTOOL_SPFLAGS 0x00000028
-#define ETHTOOL_GRXFH 0x00000029
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_GRXFH 0x00000029
 #define ETHTOOL_SRXFH 0x0000002a
 #define ETHTOOL_GGRO 0x0000002b
 #define ETHTOOL_SGRO 0x0000002c
-#define ETHTOOL_GRXRINGS 0x0000002d
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_GRXRINGS 0x0000002d
 #define ETHTOOL_GRXCLSRLCNT 0x0000002e
 #define ETHTOOL_GRXCLSRULE 0x0000002f
 #define ETHTOOL_GRXCLSRLALL 0x00000030
-#define ETHTOOL_SRXCLSRLDEL 0x00000031
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SRXCLSRLDEL 0x00000031
 #define ETHTOOL_SRXCLSRLINS 0x00000032
 #define ETHTOOL_FLASHDEV 0x00000033
 #define ETHTOOL_RESET 0x00000034
-#define ETHTOOL_SRXNTUPLE 0x00000035
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SRXNTUPLE 0x00000035
 #define ETHTOOL_GRXNTUPLE 0x00000036
 #define ETHTOOL_GSSET_INFO 0x00000037
 #define ETHTOOL_GRXFHINDIR 0x00000038
-#define ETHTOOL_SRXFHINDIR 0x00000039
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SRXFHINDIR 0x00000039
 #define ETHTOOL_GFEATURES 0x0000003a
 #define ETHTOOL_SFEATURES 0x0000003b
 #define ETHTOOL_GCHANNELS 0x0000003c
-#define ETHTOOL_SCHANNELS 0x0000003d
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SCHANNELS 0x0000003d
 #define ETHTOOL_SET_DUMP 0x0000003e
 #define ETHTOOL_GET_DUMP_FLAG 0x0000003f
 #define ETHTOOL_GET_DUMP_DATA 0x00000040
-#define ETHTOOL_GET_TS_INFO 0x00000041
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_GET_TS_INFO 0x00000041
 #define ETHTOOL_GMODULEINFO 0x00000042
 #define ETHTOOL_GMODULEEEPROM 0x00000043
 #define ETHTOOL_GEEE 0x00000044
-#define ETHTOOL_SEEE 0x00000045
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_SEEE 0x00000045
+#define ETHTOOL_GRSSH 0x00000046
+#define ETHTOOL_SRSSH 0x00000047
+#define ETHTOOL_GTUNABLE 0x00000048
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETHTOOL_STUNABLE 0x00000049
 #define SPARC_ETH_GSET ETHTOOL_GSET
 #define SPARC_ETH_SSET ETHTOOL_SSET
 #define SUPPORTED_10baseT_Half (1 << 0)
-#define SUPPORTED_10baseT_Full (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SUPPORTED_10baseT_Full (1 << 1)
 #define SUPPORTED_100baseT_Half (1 << 2)
 #define SUPPORTED_100baseT_Full (1 << 3)
 #define SUPPORTED_1000baseT_Half (1 << 4)
-#define SUPPORTED_1000baseT_Full (1 << 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SUPPORTED_1000baseT_Full (1 << 5)
 #define SUPPORTED_Autoneg (1 << 6)
 #define SUPPORTED_TP (1 << 7)
 #define SUPPORTED_AUI (1 << 8)
-#define SUPPORTED_MII (1 << 9)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SUPPORTED_MII (1 << 9)
 #define SUPPORTED_FIBRE (1 << 10)
 #define SUPPORTED_BNC (1 << 11)
 #define SUPPORTED_10000baseT_Full (1 << 12)
-#define SUPPORTED_Pause (1 << 13)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SUPPORTED_Pause (1 << 13)
 #define SUPPORTED_Asym_Pause (1 << 14)
 #define SUPPORTED_2500baseX_Full (1 << 15)
 #define SUPPORTED_Backplane (1 << 16)
-#define SUPPORTED_1000baseKX_Full (1 << 17)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SUPPORTED_1000baseKX_Full (1 << 17)
 #define SUPPORTED_10000baseKX4_Full (1 << 18)
 #define SUPPORTED_10000baseKR_Full (1 << 19)
 #define SUPPORTED_10000baseR_FEC (1 << 20)
-#define SUPPORTED_20000baseMLD2_Full (1 << 21)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SUPPORTED_20000baseMLD2_Full (1 << 21)
 #define SUPPORTED_20000baseKR2_Full (1 << 22)
 #define SUPPORTED_40000baseKR4_Full (1 << 23)
 #define SUPPORTED_40000baseCR4_Full (1 << 24)
-#define SUPPORTED_40000baseSR4_Full (1 << 25)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SUPPORTED_40000baseSR4_Full (1 << 25)
 #define SUPPORTED_40000baseLR4_Full (1 << 26)
 #define ADVERTISED_10baseT_Half (1 << 0)
 #define ADVERTISED_10baseT_Full (1 << 1)
-#define ADVERTISED_100baseT_Half (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ADVERTISED_100baseT_Half (1 << 2)
 #define ADVERTISED_100baseT_Full (1 << 3)
 #define ADVERTISED_1000baseT_Half (1 << 4)
 #define ADVERTISED_1000baseT_Full (1 << 5)
-#define ADVERTISED_Autoneg (1 << 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ADVERTISED_Autoneg (1 << 6)
 #define ADVERTISED_TP (1 << 7)
 #define ADVERTISED_AUI (1 << 8)
 #define ADVERTISED_MII (1 << 9)
-#define ADVERTISED_FIBRE (1 << 10)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ADVERTISED_FIBRE (1 << 10)
 #define ADVERTISED_BNC (1 << 11)
 #define ADVERTISED_10000baseT_Full (1 << 12)
 #define ADVERTISED_Pause (1 << 13)
-#define ADVERTISED_Asym_Pause (1 << 14)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ADVERTISED_Asym_Pause (1 << 14)
 #define ADVERTISED_2500baseX_Full (1 << 15)
 #define ADVERTISED_Backplane (1 << 16)
 #define ADVERTISED_1000baseKX_Full (1 << 17)
-#define ADVERTISED_10000baseKX4_Full (1 << 18)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ADVERTISED_10000baseKX4_Full (1 << 18)
 #define ADVERTISED_10000baseKR_Full (1 << 19)
 #define ADVERTISED_10000baseR_FEC (1 << 20)
 #define ADVERTISED_20000baseMLD2_Full (1 << 21)
-#define ADVERTISED_20000baseKR2_Full (1 << 22)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ADVERTISED_20000baseKR2_Full (1 << 22)
 #define ADVERTISED_40000baseKR4_Full (1 << 23)
 #define ADVERTISED_40000baseCR4_Full (1 << 24)
 #define ADVERTISED_40000baseSR4_Full (1 << 25)
-#define ADVERTISED_40000baseLR4_Full (1 << 26)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ADVERTISED_40000baseLR4_Full (1 << 26)
 #define SPEED_10 10
 #define SPEED_100 100
 #define SPEED_1000 1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPEED_2500 2500
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPEED_10000 10000
-#define SPEED_UNKNOWN -1
+#define SPEED_UNKNOWN - 1
 #define DUPLEX_HALF 0x00
-#define DUPLEX_FULL 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DUPLEX_FULL 0x01
 #define DUPLEX_UNKNOWN 0xff
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
-#define PORT_MII 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PORT_MII 0x02
 #define PORT_FIBRE 0x03
 #define PORT_BNC 0x04
 #define PORT_DA 0x05
-#define PORT_NONE 0xef
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PORT_NONE 0xef
 #define PORT_OTHER 0xff
 #define XCVR_INTERNAL 0x00
 #define XCVR_EXTERNAL 0x01
-#define XCVR_DUMMY1 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XCVR_DUMMY1 0x02
 #define XCVR_DUMMY2 0x03
 #define XCVR_DUMMY3 0x04
 #define AUTONEG_DISABLE 0x00
-#define AUTONEG_ENABLE 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AUTONEG_ENABLE 0x01
 #define ETH_TP_MDI_INVALID 0x00
 #define ETH_TP_MDI 0x01
 #define ETH_TP_MDI_X 0x02
-#define ETH_TP_MDI_AUTO 0x03
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETH_TP_MDI_AUTO 0x03
 #define WAKE_PHY (1 << 0)
 #define WAKE_UCAST (1 << 1)
 #define WAKE_MCAST (1 << 2)
-#define WAKE_BCAST (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WAKE_BCAST (1 << 3)
 #define WAKE_ARP (1 << 4)
 #define WAKE_MAGIC (1 << 5)
 #define WAKE_MAGICSECURE (1 << 6)
-#define TCP_V4_FLOW 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCP_V4_FLOW 0x01
 #define UDP_V4_FLOW 0x02
 #define SCTP_V4_FLOW 0x03
 #define AH_ESP_V4_FLOW 0x04
-#define TCP_V6_FLOW 0x05
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCP_V6_FLOW 0x05
 #define UDP_V6_FLOW 0x06
 #define SCTP_V6_FLOW 0x07
 #define AH_ESP_V6_FLOW 0x08
-#define AH_V4_FLOW 0x09
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AH_V4_FLOW 0x09
 #define ESP_V4_FLOW 0x0a
 #define AH_V6_FLOW 0x0b
 #define ESP_V6_FLOW 0x0c
-#define IP_USER_FLOW 0x0d
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP_USER_FLOW 0x0d
 #define IPV4_FLOW 0x10
 #define IPV6_FLOW 0x11
 #define ETHER_FLOW 0x12
-#define FLOW_EXT 0x80000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FLOW_EXT 0x80000000
 #define FLOW_MAC_EXT 0x40000000
 #define RXH_L2DA (1 << 1)
 #define RXH_VLAN (1 << 2)
-#define RXH_L3_PROTO (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RXH_L3_PROTO (1 << 3)
 #define RXH_IP_SRC (1 << 4)
 #define RXH_IP_DST (1 << 5)
 #define RXH_L4_B_0_1 (1 << 6)
-#define RXH_L4_B_2_3 (1 << 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RXH_L4_B_2_3 (1 << 7)
 #define RXH_DISCARD (1 << 31)
 #define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
 #define RX_CLS_LOC_SPECIAL 0x80000000
-#define RX_CLS_LOC_ANY 0xffffffff
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RX_CLS_LOC_ANY 0xffffffff
 #define RX_CLS_LOC_FIRST 0xfffffffe
 #define RX_CLS_LOC_LAST 0xfffffffd
 #define ETH_MODULE_SFF_8079 0x1
-#define ETH_MODULE_SFF_8079_LEN 256
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETH_MODULE_SFF_8079_LEN 256
 #define ETH_MODULE_SFF_8472 0x2
 #define ETH_MODULE_SFF_8472_LEN 512
 enum ethtool_reset_flags {
- ETH_RESET_MGMT = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ETH_RESET_IRQ = 1 << 1,
- ETH_RESET_DMA = 1 << 2,
- ETH_RESET_FILTER = 1 << 3,
- ETH_RESET_OFFLOAD = 1 << 4,
+  ETH_RESET_MGMT = 1 << 0,
+  ETH_RESET_IRQ = 1 << 1,
+  ETH_RESET_DMA = 1 << 2,
+  ETH_RESET_FILTER = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ETH_RESET_MAC = 1 << 5,
- ETH_RESET_PHY = 1 << 6,
- ETH_RESET_RAM = 1 << 7,
- ETH_RESET_DEDICATED = 0x0000ffff,
+  ETH_RESET_OFFLOAD = 1 << 4,
+  ETH_RESET_MAC = 1 << 5,
+  ETH_RESET_PHY = 1 << 6,
+  ETH_RESET_RAM = 1 << 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ETH_RESET_ALL = 0xffffffff,
+  ETH_RESET_DEDICATED = 0x0000ffff,
+  ETH_RESET_ALL = 0xffffffff,
 };
 #define ETH_RESET_SHARED_SHIFT 16
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/eventpoll.h b/libc/kernel/uapi/linux/eventpoll.h
index 9b5aadb..9f329f76 100644
--- a/libc/kernel/uapi/linux/eventpoll.h
+++ b/libc/kernel/uapi/linux/eventpoll.h
@@ -37,8 +37,8 @@
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct epoll_event {
- __u32 events;
- __u64 data;
+  __u32 events;
+  __u64 data;
 } EPOLL_PACKED;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/falloc.h b/libc/kernel/uapi/linux/falloc.h
index 80a4c29..9ea0b24 100644
--- a/libc/kernel/uapi/linux/falloc.h
+++ b/libc/kernel/uapi/linux/falloc.h
@@ -22,4 +22,7 @@
 #define FALLOC_FL_PUNCH_HOLE 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FALLOC_FL_NO_HIDE_STALE 0x04
+#define FALLOC_FL_COLLAPSE_RANGE 0x08
+#define FALLOC_FL_ZERO_RANGE 0x10
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index 6b34a7c..0e34cc7 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -39,11 +39,11 @@
 #define FAN_CLASS_NOTIF 0x00000000
 #define FAN_CLASS_CONTENT 0x00000004
 #define FAN_CLASS_PRE_CONTENT 0x00000008
-#define FAN_ALL_CLASS_BITS (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT |   FAN_CLASS_PRE_CONTENT)
+#define FAN_ALL_CLASS_BITS (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | FAN_CLASS_PRE_CONTENT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAN_UNLIMITED_QUEUE 0x00000010
 #define FAN_UNLIMITED_MARKS 0x00000020
-#define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK |   FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE |  FAN_UNLIMITED_MARKS)
+#define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)
 #define FAN_MARK_ADD 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAN_MARK_REMOVE 0x00000002
@@ -54,35 +54,35 @@
 #define FAN_MARK_IGNORED_MASK 0x00000020
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
-#define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD |  FAN_MARK_REMOVE |  FAN_MARK_DONT_FOLLOW |  FAN_MARK_ONLYDIR |  FAN_MARK_MOUNT |  FAN_MARK_IGNORED_MASK |  FAN_MARK_IGNORED_SURV_MODIFY |  FAN_MARK_FLUSH)
+#define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FAN_ALL_EVENTS (FAN_ACCESS |  FAN_MODIFY |  FAN_CLOSE |  FAN_OPEN)
-#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM |  FAN_ACCESS_PERM)
-#define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS |  FAN_ALL_PERM_EVENTS |  FAN_Q_OVERFLOW)
+#define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
+#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
+#define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS | FAN_ALL_PERM_EVENTS | FAN_Q_OVERFLOW)
 #define FANOTIFY_METADATA_VERSION 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fanotify_event_metadata {
- __u32 event_len;
- __u8 vers;
- __u8 reserved;
+  __u32 event_len;
+  __u8 vers;
+  __u8 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 metadata_len;
- __aligned_u64 mask;
- __s32 fd;
- __s32 pid;
+  __u16 metadata_len;
+  __aligned_u64 mask;
+  __s32 fd;
+  __s32 pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fanotify_response {
- __s32 fd;
- __u32 response;
+  __s32 fd;
+  __u32 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FAN_ALLOW 0x01
 #define FAN_DENY 0x02
-#define FAN_NOFD -1
+#define FAN_NOFD - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAN_EVENT_METADATA_LEN (sizeof(struct fanotify_event_metadata))
-#define FAN_EVENT_NEXT(meta, len) ((len) -= (meta)->event_len,   (struct fanotify_event_metadata*)(((char *)(meta)) +   (meta)->event_len))
-#define FAN_EVENT_OK(meta, len) ((long)(len) >= (long)FAN_EVENT_METADATA_LEN &&   (long)(meta)->event_len >= (long)FAN_EVENT_METADATA_LEN &&   (long)(meta)->event_len <= (long)(len))
+#define FAN_EVENT_NEXT(meta,len) ((len) -= (meta)->event_len, (struct fanotify_event_metadata *) (((char *) (meta)) + (meta)->event_len))
+#define FAN_EVENT_OK(meta,len) ((long) (len) >= (long) FAN_EVENT_METADATA_LEN && (long) (meta)->event_len >= (long) FAN_EVENT_METADATA_LEN && (long) (meta)->event_len <= (long) (len))
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/fb.h b/libc/kernel/uapi/linux/fb.h
index 16b3755..39bb3f4 100644
--- a/libc/kernel/uapi/linux/fb.h
+++ b/libc/kernel/uapi/linux/fb.h
@@ -183,31 +183,31 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FB_CAP_FOURCC 1
 struct fb_fix_screeninfo {
- char id[16];
- unsigned long smem_start;
+  char id[16];
+  unsigned long smem_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 smem_len;
- __u32 type;
- __u32 type_aux;
- __u32 visual;
+  __u32 smem_len;
+  __u32 type;
+  __u32 type_aux;
+  __u32 visual;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 xpanstep;
- __u16 ypanstep;
- __u16 ywrapstep;
- __u32 line_length;
+  __u16 xpanstep;
+  __u16 ypanstep;
+  __u16 ywrapstep;
+  __u32 line_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long mmio_start;
- __u32 mmio_len;
- __u32 accel;
- __u16 capabilities;
+  unsigned long mmio_start;
+  __u32 mmio_len;
+  __u32 accel;
+  __u16 capabilities;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 reserved[2];
+  __u16 reserved[2];
 };
 struct fb_bitfield {
- __u32 offset;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 length;
- __u32 msb_right;
+  __u32 length;
+  __u32 msb_right;
 };
 #define FB_NONSTD_HAM 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -247,61 +247,61 @@
 #define FB_ROTATE_UD 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FB_ROTATE_CCW 3
-#define PICOS2KHZ(a) (1000000000UL/(a))
-#define KHZ2PICOS(a) (1000000000UL/(a))
+#define PICOS2KHZ(a) (1000000000UL / (a))
+#define KHZ2PICOS(a) (1000000000UL / (a))
 struct fb_var_screeninfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 xres;
- __u32 yres;
- __u32 xres_virtual;
- __u32 yres_virtual;
+  __u32 xres;
+  __u32 yres;
+  __u32 xres_virtual;
+  __u32 yres_virtual;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 xoffset;
- __u32 yoffset;
- __u32 bits_per_pixel;
- __u32 grayscale;
+  __u32 xoffset;
+  __u32 yoffset;
+  __u32 bits_per_pixel;
+  __u32 grayscale;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fb_bitfield red;
- struct fb_bitfield green;
- struct fb_bitfield blue;
- struct fb_bitfield transp;
+  struct fb_bitfield red;
+  struct fb_bitfield green;
+  struct fb_bitfield blue;
+  struct fb_bitfield transp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 nonstd;
- __u32 activate;
- __u32 height;
- __u32 width;
+  __u32 nonstd;
+  __u32 activate;
+  __u32 height;
+  __u32 width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 accel_flags;
- __u32 pixclock;
- __u32 left_margin;
- __u32 right_margin;
+  __u32 accel_flags;
+  __u32 pixclock;
+  __u32 left_margin;
+  __u32 right_margin;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 upper_margin;
- __u32 lower_margin;
- __u32 hsync_len;
- __u32 vsync_len;
+  __u32 upper_margin;
+  __u32 lower_margin;
+  __u32 hsync_len;
+  __u32 vsync_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sync;
- __u32 vmode;
- __u32 rotate;
- __u32 colorspace;
+  __u32 sync;
+  __u32 vmode;
+  __u32 rotate;
+  __u32 colorspace;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[4];
+  __u32 reserved[4];
 };
 struct fb_cmap {
- __u32 start;
+  __u32 start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 len;
- __u16 *red;
- __u16 *green;
- __u16 *blue;
+  __u32 len;
+  __u16 * red;
+  __u16 * green;
+  __u16 * blue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 *transp;
+  __u16 * transp;
 };
 struct fb_con2fbmap {
- __u32 console;
+  __u32 console;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 framebuffer;
+  __u32 framebuffer;
 };
 #define VESA_NO_BLANKING 0
 #define VESA_VSYNC_SUSPEND 1
@@ -309,12 +309,12 @@
 #define VESA_HSYNC_SUSPEND 2
 #define VESA_POWERDOWN 3
 enum {
- FB_BLANK_UNBLANK = VESA_NO_BLANKING,
+  FB_BLANK_UNBLANK = VESA_NO_BLANKING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FB_BLANK_NORMAL = VESA_NO_BLANKING + 1,
- FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1,
- FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1,
- FB_BLANK_POWERDOWN = VESA_POWERDOWN + 1
+  FB_BLANK_NORMAL = VESA_NO_BLANKING + 1,
+  FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1,
+  FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1,
+  FB_BLANK_POWERDOWN = VESA_POWERDOWN + 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FB_VBLANK_VBLANKING 0x001
@@ -329,49 +329,49 @@
 #define FB_VBLANK_VSYNCING 0x080
 #define FB_VBLANK_HAVE_VSYNC 0x100
 struct fb_vblank {
- __u32 flags;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count;
- __u32 vcount;
- __u32 hcount;
- __u32 reserved[4];
+  __u32 count;
+  __u32 vcount;
+  __u32 hcount;
+  __u32 reserved[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ROP_COPY 0
 #define ROP_XOR 1
 struct fb_copyarea {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dx;
- __u32 dy;
- __u32 width;
- __u32 height;
+  __u32 dx;
+  __u32 dy;
+  __u32 width;
+  __u32 height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sx;
- __u32 sy;
+  __u32 sx;
+  __u32 sy;
 };
 struct fb_fillrect {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dx;
- __u32 dy;
- __u32 width;
- __u32 height;
+  __u32 dx;
+  __u32 dy;
+  __u32 width;
+  __u32 height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 color;
- __u32 rop;
+  __u32 color;
+  __u32 rop;
 };
 struct fb_image {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dx;
- __u32 dy;
- __u32 width;
- __u32 height;
+  __u32 dx;
+  __u32 dy;
+  __u32 width;
+  __u32 height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fg_color;
- __u32 bg_color;
- __u8 depth;
- const char *data;
+  __u32 fg_color;
+  __u32 bg_color;
+  __u8 depth;
+  const char * data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fb_cmap cmap;
+  struct fb_cmap cmap;
 };
 #define FB_CUR_SETIMAGE 0x01
 #define FB_CUR_SETPOS 0x02
@@ -383,17 +383,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FB_CUR_SETALL 0xFF
 struct fbcurpos {
- __u16 x, y;
+  __u16 x, y;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fb_cursor {
- __u16 set;
- __u16 enable;
- __u16 rop;
+  __u16 set;
+  __u16 enable;
+  __u16 rop;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- const char *mask;
- struct fbcurpos hot;
- struct fb_image image;
+  const char * mask;
+  struct fbcurpos hot;
+  struct fb_image image;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/fcntl.h b/libc/kernel/uapi/linux/fcntl.h
index fc18d87..b888dc9 100644
--- a/libc/kernel/uapi/linux/fcntl.h
+++ b/libc/kernel/uapi/linux/fcntl.h
@@ -24,25 +24,32 @@
 #define F_GETLEASE (F_LINUX_SPECIFIC_BASE + 1)
 #define F_CANCELLK (F_LINUX_SPECIFIC_BASE + 5)
 #define F_DUPFD_CLOEXEC (F_LINUX_SPECIFIC_BASE + 6)
-#define F_NOTIFY (F_LINUX_SPECIFIC_BASE+2)
+#define F_NOTIFY (F_LINUX_SPECIFIC_BASE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
 #define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
+#define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9)
+#define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define F_SEAL_SEAL 0x0001
+#define F_SEAL_SHRINK 0x0002
+#define F_SEAL_GROW 0x0004
+#define F_SEAL_WRITE 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DN_ACCESS 0x00000001
 #define DN_MODIFY 0x00000002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DN_CREATE 0x00000004
 #define DN_DELETE 0x00000008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DN_RENAME 0x00000010
 #define DN_ATTRIB 0x00000020
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DN_MULTISHOT 0x80000000
-#define AT_FDCWD -100
+#define AT_FDCWD - 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_SYMLINK_NOFOLLOW 0x100
 #define AT_REMOVEDIR 0x200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_SYMLINK_FOLLOW 0x400
 #define AT_NO_AUTOMOUNT 0x800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_EMPTY_PATH 0x1000
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/fd.h b/libc/kernel/uapi/linux/fd.h
index cfc82a6..0b97bc2 100644
--- a/libc/kernel/uapi/linux/fd.h
+++ b/libc/kernel/uapi/linux/fd.h
@@ -22,12 +22,7 @@
 #include <linux/compiler.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct floppy_struct {
- unsigned int size,
- sect,
- head,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- track,
- stretch;
+  unsigned int size, sect, head, track, stretch;
 #define FD_STRETCH 1
 #define FD_SWAPSIDES 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -36,219 +31,210 @@
 #define FD_MKSECTBASE(s) (((s) ^ 1) << 2)
 #define FD_SECTBASE(floppy) ((((floppy)->stretch & FD_SECTBASEMASK) >> 2) ^ 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char gap,
- rate,
+  unsigned char gap, rate,
 #define FD_2M 0x4
 #define FD_SIZECODEMASK 0x38
+#define FD_SIZECODE(floppy) (((((floppy)->rate & FD_SIZECODEMASK) >> 3) + 2) % 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FD_SIZECODE(floppy) (((((floppy)->rate&FD_SIZECODEMASK)>> 3)+ 2) %8)
-#define FD_SECTSIZE(floppy) ( (floppy)->rate & FD_2M ?   512 : 128 << FD_SIZECODE(floppy) )
+#define FD_SECTSIZE(floppy) ((floppy)->rate & FD_2M ? 512 : 128 << FD_SIZECODE(floppy))
 #define FD_PERP 0x40
- spec1,
+  spec1, fmt_gap;
+  const char * name;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fmt_gap;
- const char * name;
 };
 #define FDCLRPRM _IO(2, 0x41)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDSETPRM _IOW(2, 0x42, struct floppy_struct)
 #define FDSETMEDIAPRM FDSETPRM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDEFPRM _IOW(2, 0x43, struct floppy_struct)
 #define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDEFMEDIAPRM FDDEFPRM
 #define FDGETMEDIAPRM FDGETPRM
-#define FDMSGON _IO(2,0x45)
-#define FDMSGOFF _IO(2,0x46)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDMSGON _IO(2, 0x45)
+#define FDMSGOFF _IO(2, 0x46)
 #define FD_FILL_BYTE 0xF6
 struct format_descr {
- unsigned int device,head,track;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FDFMTBEG _IO(2,0x47)
-#define FDFMTTRK _IOW(2,0x48, struct format_descr)
-#define FDFMTEND _IO(2,0x49)
+  unsigned int device, head, track;
+};
+#define FDFMTBEG _IO(2, 0x47)
+#define FDFMTTRK _IOW(2, 0x48, struct format_descr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDFMTEND _IO(2, 0x49)
 struct floppy_max_errors {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int
- abort,
- read_track,
- reset,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- recal,
- reporting;
+  unsigned int abort, read_track, reset, recal, reporting;
 };
-#define FDSETEMSGTRESH _IO(2,0x4a)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FDFLUSH _IO(2,0x4b)
+#define FDSETEMSGTRESH _IO(2, 0x4a)
+#define FDFLUSH _IO(2, 0x4b)
 #define FDSETMAXERRS _IOW(2, 0x4c, struct floppy_max_errors)
 #define FDGETMAXERRS _IOR(2, 0x0e, struct floppy_max_errors)
-typedef char floppy_drive_name[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef char floppy_drive_name[16];
 #define FDGETDRVTYP _IOR(2, 0x0f, floppy_drive_name)
 struct floppy_drive_params {
- signed char cmos;
- unsigned long max_dtr;
+  signed char cmos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long hlt;
- unsigned long hut;
- unsigned long srt;
- unsigned long spinup;
+  unsigned long max_dtr;
+  unsigned long hlt;
+  unsigned long hut;
+  unsigned long srt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long spindown;
- unsigned char spindown_offset;
- unsigned char select_delay;
- unsigned char rps;
+  unsigned long spinup;
+  unsigned long spindown;
+  unsigned char spindown_offset;
+  unsigned char select_delay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char tracks;
- unsigned long timeout;
- unsigned char interleave_sect;
- struct floppy_max_errors max_errors;
+  unsigned char rps;
+  unsigned char tracks;
+  unsigned long timeout;
+  unsigned char interleave_sect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char flags;
+  struct floppy_max_errors max_errors;
+  char flags;
 #define FTD_MSG 0x10
 #define FD_BROKEN_DCL 0x20
-#define FD_DEBUG 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FD_DEBUG 0x02
 #define FD_SILENT_DCL_CLEAR 0x4
 #define FD_INVERTED_DCL 0x80
- char read_track;
- short autodetect[8];
+  char read_track;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int checkfreq;
- int native_format;
+  short autodetect[8];
+  int checkfreq;
+  int native_format;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  FD_NEED_TWADDLE_BIT,
+  FD_VERIFY_BIT,
+  FD_DISK_NEWCHANGE_BIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FD_NEED_TWADDLE_BIT,
- FD_VERIFY_BIT,
- FD_DISK_NEWCHANGE_BIT,
- FD_UNUSED_BIT,
+  FD_UNUSED_BIT,
+  FD_DISK_CHANGED_BIT,
+  FD_DISK_WRITABLE_BIT,
+  FD_OPEN_SHOULD_FAIL_BIT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FD_DISK_CHANGED_BIT,
- FD_DISK_WRITABLE_BIT,
- FD_OPEN_SHOULD_FAIL_BIT
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDSETDRVPRM _IOW(2, 0x90, struct floppy_drive_params)
 #define FDGETDRVPRM _IOR(2, 0x11, struct floppy_drive_params)
 struct floppy_drive_struct {
- unsigned long flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned long flags;
 #define FD_NEED_TWADDLE (1 << FD_NEED_TWADDLE_BIT)
 #define FD_VERIFY (1 << FD_VERIFY_BIT)
 #define FD_DISK_NEWCHANGE (1 << FD_DISK_NEWCHANGE_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_DISK_CHANGED (1 << FD_DISK_CHANGED_BIT)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_DISK_WRITABLE (1 << FD_DISK_WRITABLE_BIT)
- unsigned long spinup_date;
- unsigned long select_date;
- unsigned long first_read_date;
+  unsigned long spinup_date;
+  unsigned long select_date;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short probed_format;
- short track;
- short maxblock;
- short maxtrack;
+  unsigned long first_read_date;
+  short probed_format;
+  short track;
+  short maxblock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int generation;
- int keep_data;
- int fd_ref;
- int fd_device;
+  short maxtrack;
+  int generation;
+  int keep_data;
+  int fd_ref;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long last_checked;
- char *dmabuf;
- int bufblocks;
+  int fd_device;
+  unsigned long last_checked;
+  char * dmabuf;
+  int bufblocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDGETDRVSTAT _IOR(2, 0x12, struct floppy_drive_struct)
 #define FDPOLLDRVSTAT _IOR(2, 0x13, struct floppy_drive_struct)
 enum reset_mode {
- FD_RESET_IF_NEEDED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FD_RESET_IF_RAWCMD,
- FD_RESET_ALWAYS
+  FD_RESET_IF_NEEDED,
+  FD_RESET_IF_RAWCMD,
+  FD_RESET_ALWAYS
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDRESET _IO(2, 0x54)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct floppy_fdc_state {
- int spec1;
- int spec2;
- int dtr;
+  int spec1;
+  int spec2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char version;
- unsigned char dor;
- unsigned long address;
- unsigned int rawcmd:2;
+  int dtr;
+  unsigned char version;
+  unsigned char dor;
+  unsigned long address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int reset:1;
- unsigned int need_configure:1;
- unsigned int perp_mode:2;
- unsigned int has_fifo:1;
+  unsigned int rawcmd : 2;
+  unsigned int reset : 1;
+  unsigned int need_configure : 1;
+  unsigned int perp_mode : 2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int driver_version;
+  unsigned int has_fifo : 1;
+  unsigned int driver_version;
 #define FD_DRIVER_VERSION 0x100
- unsigned char track[4];
-};
+  unsigned char track[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define FDGETFDCSTAT _IOR(2, 0x15, struct floppy_fdc_state)
 struct floppy_write_errors {
- unsigned int write_errors;
- unsigned long first_error_sector;
+  unsigned int write_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int first_error_generation;
- unsigned long last_error_sector;
- int last_error_generation;
- unsigned int badness;
+  unsigned long first_error_sector;
+  int first_error_generation;
+  unsigned long last_error_sector;
+  int last_error_generation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int badness;
 };
 #define FDWERRORCLR _IO(2, 0x56)
 #define FDWERRORGET _IOR(2, 0x17, struct floppy_write_errors)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDHAVEBATCHEDRAWCMD
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct floppy_raw_cmd {
- unsigned int flags;
+  unsigned int flags;
 #define FD_RAW_READ 1
-#define FD_RAW_WRITE 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FD_RAW_WRITE 2
 #define FD_RAW_NO_MOTOR 4
 #define FD_RAW_DISK_CHANGE 4
 #define FD_RAW_INTR 8
-#define FD_RAW_SPIN 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FD_RAW_SPIN 0x10
 #define FD_RAW_NO_MOTOR_AFTER 0x20
 #define FD_RAW_NEED_DISK 0x40
 #define FD_RAW_NEED_SEEK 0x80
-#define FD_RAW_MORE 0x100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FD_RAW_MORE 0x100
 #define FD_RAW_STOP_IF_FAILURE 0x200
 #define FD_RAW_STOP_IF_SUCCESS 0x400
 #define FD_RAW_SOFTFAILURE 0x800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_RAW_FAILURE 0x10000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_RAW_HARDFAILURE 0x20000
- void __user *data;
- char *kernel_data;
- struct floppy_raw_cmd *next;
+  void __user * data;
+  char * kernel_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long length;
- long phys_length;
- int buffer_length;
- unsigned char rate;
+  struct floppy_raw_cmd * next;
+  long length;
+  long phys_length;
+  int buffer_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cmd_count;
- unsigned char cmd[16];
- unsigned char reply_count;
- unsigned char reply[16];
+  unsigned char rate;
+  unsigned char cmd_count;
+  unsigned char cmd[16];
+  unsigned char reply_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int track;
- int resultcode;
- int reserved1;
- int reserved2;
+  unsigned char reply[16];
+  int track;
+  int resultcode;
+  int reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int reserved2;
 };
 #define FDRAWCMD _IO(2, 0x58)
 #define FDTWADDLE _IO(2, 0x59)
-#define FDEJECT _IO(2, 0x5a)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDEJECT _IO(2, 0x5a)
 #endif
diff --git a/libc/kernel/uapi/linux/fdreg.h b/libc/kernel/uapi/linux/fdreg.h
index d44bd54..c4f3f5c 100644
--- a/libc/kernel/uapi/linux/fdreg.h
+++ b/libc/kernel/uapi/linux/fdreg.h
@@ -24,12 +24,12 @@
 #else
 #define FD_IOPORT 0x3f0
 #endif
-#define FD_STATUS (4 + FD_IOPORT )
+#define FD_STATUS (4 + FD_IOPORT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FD_DATA (5 + FD_IOPORT )
-#define FD_DOR (2 + FD_IOPORT )
-#define FD_DIR (7 + FD_IOPORT )
-#define FD_DCR (7 + FD_IOPORT )
+#define FD_DATA (5 + FD_IOPORT)
+#define FD_DOR (2 + FD_IOPORT)
+#define FD_DIR (7 + FD_IOPORT)
+#define FD_DCR (7 + FD_IOPORT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STATUS_BUSYMASK 0x0F
 #define STATUS_BUSY 0x10
diff --git a/libc/kernel/uapi/linux/fib_rules.h b/libc/kernel/uapi/linux/fib_rules.h
index afe6bc0..49953ef 100644
--- a/libc/kernel/uapi/linux/fib_rules.h
+++ b/libc/kernel/uapi/linux/fib_rules.h
@@ -31,60 +31,60 @@
 #define FIB_RULE_FIND_SADDR 0x00010000
 struct fib_rule_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 family;
- __u8 dst_len;
- __u8 src_len;
- __u8 tos;
+  __u8 family;
+  __u8 dst_len;
+  __u8 src_len;
+  __u8 tos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 table;
- __u8 res1;
- __u8 res2;
- __u8 action;
+  __u8 table;
+  __u8 res1;
+  __u8 res2;
+  __u8 action;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
+  __u32 flags;
 };
 enum {
- FRA_UNSPEC,
+  FRA_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FRA_DST,
- FRA_SRC,
- FRA_IIFNAME,
+  FRA_DST,
+  FRA_SRC,
+  FRA_IIFNAME,
 #define FRA_IFNAME FRA_IIFNAME
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FRA_GOTO,
- FRA_UNUSED2,
- FRA_PRIORITY,
- FRA_UNUSED3,
+  FRA_GOTO,
+  FRA_UNUSED2,
+  FRA_PRIORITY,
+  FRA_UNUSED3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FRA_UNUSED4,
- FRA_UNUSED5,
- FRA_FWMARK,
- FRA_FLOW,
+  FRA_UNUSED4,
+  FRA_UNUSED5,
+  FRA_FWMARK,
+  FRA_FLOW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FRA_UNUSED6,
- FRA_SUPPRESS_IFGROUP,
- FRA_SUPPRESS_PREFIXLEN,
- FRA_TABLE,
+  FRA_UNUSED6,
+  FRA_SUPPRESS_IFGROUP,
+  FRA_SUPPRESS_PREFIXLEN,
+  FRA_TABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FRA_FWMASK,
- FRA_OIFNAME,
- __FRA_MAX
+  FRA_FWMASK,
+  FRA_OIFNAME,
+  __FRA_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRA_MAX (__FRA_MAX - 1)
 enum {
- FR_ACT_UNSPEC,
- FR_ACT_TO_TBL,
+  FR_ACT_UNSPEC,
+  FR_ACT_TO_TBL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FR_ACT_GOTO,
- FR_ACT_NOP,
- FR_ACT_RES3,
- FR_ACT_RES4,
+  FR_ACT_GOTO,
+  FR_ACT_NOP,
+  FR_ACT_RES3,
+  FR_ACT_RES4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FR_ACT_BLACKHOLE,
- FR_ACT_UNREACHABLE,
- FR_ACT_PROHIBIT,
- __FR_ACT_MAX,
+  FR_ACT_BLACKHOLE,
+  FR_ACT_UNREACHABLE,
+  FR_ACT_PROHIBIT,
+  __FR_ACT_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FR_ACT_MAX (__FR_ACT_MAX - 1)
diff --git a/libc/kernel/uapi/linux/fiemap.h b/libc/kernel/uapi/linux/fiemap.h
index e4b46c2..d41a87d 100644
--- a/libc/kernel/uapi/linux/fiemap.h
+++ b/libc/kernel/uapi/linux/fiemap.h
@@ -21,24 +21,24 @@
 #include <linux/types.h>
 struct fiemap_extent {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 fe_logical;
- __u64 fe_physical;
- __u64 fe_length;
- __u64 fe_reserved64[2];
+  __u64 fe_logical;
+  __u64 fe_physical;
+  __u64 fe_length;
+  __u64 fe_reserved64[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fe_flags;
- __u32 fe_reserved[3];
+  __u32 fe_flags;
+  __u32 fe_reserved[3];
 };
 struct fiemap {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 fm_start;
- __u64 fm_length;
- __u32 fm_flags;
- __u32 fm_mapped_extents;
+  __u64 fm_start;
+  __u64 fm_length;
+  __u32 fm_flags;
+  __u32 fm_mapped_extents;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fm_extent_count;
- __u32 fm_reserved;
- struct fiemap_extent fm_extents[0];
+  __u32 fm_extent_count;
+  __u32 fm_reserved;
+  struct fiemap_extent fm_extents[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIEMAP_MAX_OFFSET (~0ULL)
diff --git a/libc/kernel/uapi/linux/filter.h b/libc/kernel/uapi/linux/filter.h
index 8b75270..4761f9d 100644
--- a/libc/kernel/uapi/linux/filter.h
+++ b/libc/kernel/uapi/linux/filter.h
@@ -21,110 +21,59 @@
 #include <linux/compiler.h>
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/bpf_common.h>
 #define BPF_MAJOR_VERSION 1
 #define BPF_MINOR_VERSION 1
 struct sock_filter {
- __u16 code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 jt;
- __u8 jf;
- __u32 k;
+  __u16 code;
+  __u8 jt;
+  __u8 jf;
+  __u32 k;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sock_fprog {
- unsigned short len;
- struct sock_filter __user *filter;
+  unsigned short len;
+  struct sock_filter __user * filter;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_CLASS(code) ((code) & 0x07)
-#define BPF_LD 0x00
-#define BPF_LDX 0x01
-#define BPF_ST 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_STX 0x03
-#define BPF_ALU 0x04
-#define BPF_JMP 0x05
-#define BPF_RET 0x06
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_MISC 0x07
-#define BPF_SIZE(code) ((code) & 0x18)
-#define BPF_W 0x00
-#define BPF_H 0x08
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_B 0x10
-#define BPF_MODE(code) ((code) & 0xe0)
-#define BPF_IMM 0x00
-#define BPF_ABS 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_IND 0x40
-#define BPF_MEM 0x60
-#define BPF_LEN 0x80
-#define BPF_MSH 0xa0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_OP(code) ((code) & 0xf0)
-#define BPF_ADD 0x00
-#define BPF_SUB 0x10
-#define BPF_MUL 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_DIV 0x30
-#define BPF_OR 0x40
-#define BPF_AND 0x50
-#define BPF_LSH 0x60
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_RSH 0x70
-#define BPF_NEG 0x80
-#define BPF_MOD 0x90
-#define BPF_XOR 0xa0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_JA 0x00
-#define BPF_JEQ 0x10
-#define BPF_JGT 0x20
-#define BPF_JGE 0x30
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_JSET 0x40
-#define BPF_SRC(code) ((code) & 0x08)
-#define BPF_K 0x00
-#define BPF_X 0x08
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_RVAL(code) ((code) & 0x18)
 #define BPF_A 0x10
 #define BPF_MISCOP(code) ((code) & 0xf8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_TAX 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_TXA 0x80
-#ifndef BPF_MAXINSNS
-#define BPF_MAXINSNS 4096
-#endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef BPF_STMT
-#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
+#define BPF_STMT(code,k) { (unsigned short) (code), 0, 0, k }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef BPF_JUMP
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }
+#define BPF_JUMP(code,k,jt,jf) { (unsigned short) (code), jt, jf, k }
 #endif
-#define BPF_MEMWORDS 16
-#define SKF_AD_OFF (-0x1000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BPF_MEMWORDS 16
+#define SKF_AD_OFF (- 0x1000)
 #define SKF_AD_PROTOCOL 0
 #define SKF_AD_PKTTYPE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_AD_IFINDEX 8
 #define SKF_AD_NLATTR 12
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_AD_NLATTR_NEST 16
 #define SKF_AD_MARK 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_AD_QUEUE 24
 #define SKF_AD_HATYPE 28
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_AD_RXHASH 32
 #define SKF_AD_CPU 36
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_AD_ALU_XOR_X 40
 #define SKF_AD_VLAN_TAG 44
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_AD_VLAN_TAG_PRESENT 48
 #define SKF_AD_PAY_OFFSET 52
-#define SKF_AD_MAX 56
-#define SKF_NET_OFF (-0x100000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SKF_LL_OFF (-0x200000)
+#define SKF_AD_RANDOM 56
+#define SKF_AD_MAX 60
+#define SKF_NET_OFF (- 0x100000)
+#define SKF_LL_OFF (- 0x200000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/firewire-cdev.h b/libc/kernel/uapi/linux/firewire-cdev.h
index 1342b06..7cf9059 100644
--- a/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/libc/kernel/uapi/linux/firewire-cdev.h
@@ -36,103 +36,103 @@
 #define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09
 struct fw_cdev_event_common {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 closure;
- __u32 type;
+  __u64 closure;
+  __u32 type;
 };
 struct fw_cdev_event_bus_reset {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 closure;
- __u32 type;
- __u32 node_id;
- __u32 local_node_id;
+  __u64 closure;
+  __u32 type;
+  __u32 node_id;
+  __u32 local_node_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bm_node_id;
- __u32 irm_node_id;
- __u32 root_node_id;
- __u32 generation;
+  __u32 bm_node_id;
+  __u32 irm_node_id;
+  __u32 root_node_id;
+  __u32 generation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_event_response {
- __u64 closure;
- __u32 type;
+  __u64 closure;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rcode;
- __u32 length;
- __u32 data[0];
+  __u32 rcode;
+  __u32 length;
+  __u32 data[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_event_request {
- __u64 closure;
- __u32 type;
- __u32 tcode;
+  __u64 closure;
+  __u32 type;
+  __u32 tcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 offset;
- __u32 handle;
- __u32 length;
- __u32 data[0];
+  __u64 offset;
+  __u32 handle;
+  __u32 length;
+  __u32 data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_event_request2 {
- __u64 closure;
- __u32 type;
+  __u64 closure;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcode;
- __u64 offset;
- __u32 source_node_id;
- __u32 destination_node_id;
+  __u32 tcode;
+  __u64 offset;
+  __u32 source_node_id;
+  __u32 destination_node_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 card;
- __u32 generation;
- __u32 handle;
- __u32 length;
+  __u32 card;
+  __u32 generation;
+  __u32 handle;
+  __u32 length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 data[0];
+  __u32 data[0];
 };
 struct fw_cdev_event_iso_interrupt {
- __u64 closure;
+  __u64 closure;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 cycle;
- __u32 header_length;
- __u32 header[0];
+  __u32 type;
+  __u32 cycle;
+  __u32 header_length;
+  __u32 header[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_event_iso_interrupt_mc {
- __u64 closure;
- __u32 type;
+  __u64 closure;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 completed;
+  __u32 completed;
 };
 struct fw_cdev_event_iso_resource {
- __u64 closure;
+  __u64 closure;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 handle;
- __s32 channel;
- __s32 bandwidth;
+  __u32 type;
+  __u32 handle;
+  __s32 channel;
+  __s32 bandwidth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_event_phy_packet {
- __u64 closure;
- __u32 type;
+  __u64 closure;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rcode;
- __u32 length;
- __u32 data[0];
+  __u32 rcode;
+  __u32 length;
+  __u32 data[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union fw_cdev_event {
- struct fw_cdev_event_common common;
- struct fw_cdev_event_bus_reset bus_reset;
- struct fw_cdev_event_response response;
+  struct fw_cdev_event_common common;
+  struct fw_cdev_event_bus_reset bus_reset;
+  struct fw_cdev_event_response response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fw_cdev_event_request request;
- struct fw_cdev_event_request2 request2;
- struct fw_cdev_event_iso_interrupt iso_interrupt;
- struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc;
+  struct fw_cdev_event_request request;
+  struct fw_cdev_event_request2 request2;
+  struct fw_cdev_event_iso_interrupt iso_interrupt;
+  struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fw_cdev_event_iso_resource iso_resource;
- struct fw_cdev_event_phy_packet phy_packet;
+  struct fw_cdev_event_iso_resource iso_resource;
+  struct fw_cdev_event_phy_packet phy_packet;
 };
 #define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -167,81 +167,81 @@
 #define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_get_info {
- __u32 version;
- __u32 rom_length;
- __u64 rom;
+  __u32 version;
+  __u32 rom_length;
+  __u64 rom;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 bus_reset;
- __u64 bus_reset_closure;
- __u32 card;
+  __u64 bus_reset;
+  __u64 bus_reset_closure;
+  __u32 card;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_send_request {
- __u32 tcode;
- __u32 length;
- __u64 offset;
+  __u32 tcode;
+  __u32 length;
+  __u64 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 closure;
- __u64 data;
- __u32 generation;
+  __u64 closure;
+  __u64 data;
+  __u32 generation;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_send_response {
- __u32 rcode;
- __u32 length;
- __u64 data;
+  __u32 rcode;
+  __u32 length;
+  __u64 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
+  __u32 handle;
 };
 struct fw_cdev_allocate {
- __u64 offset;
+  __u64 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 closure;
- __u32 length;
- __u32 handle;
- __u64 region_end;
+  __u64 closure;
+  __u32 length;
+  __u32 handle;
+  __u64 region_end;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_deallocate {
- __u32 handle;
+  __u32 handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FW_CDEV_LONG_RESET 0
 #define FW_CDEV_SHORT_RESET 1
 struct fw_cdev_initiate_bus_reset {
- __u32 type;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_add_descriptor {
- __u32 immediate;
- __u32 key;
+  __u32 immediate;
+  __u32 key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data;
- __u32 length;
- __u32 handle;
+  __u64 data;
+  __u32 length;
+  __u32 handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_remove_descriptor {
- __u32 handle;
+  __u32 handle;
 };
 #define FW_CDEV_ISO_CONTEXT_TRANSMIT 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FW_CDEV_ISO_CONTEXT_RECEIVE 1
 #define FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL 2
 struct fw_cdev_create_iso_context {
- __u32 type;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 header_size;
- __u32 channel;
- __u32 speed;
- __u64 closure;
+  __u32 header_size;
+  __u32 channel;
+  __u32 speed;
+  __u64 closure;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
+  __u32 handle;
 };
 struct fw_cdev_set_iso_channels {
- __u64 channels;
+  __u64 channels;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
+  __u32 handle;
 };
 #define FW_CDEV_ISO_PAYLOAD_LENGTH(v) (v)
 #define FW_CDEV_ISO_INTERRUPT (1 << 16)
@@ -253,16 +253,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
- __u32 control;
- __u32 header[0];
+  __u32 control;
+  __u32 header[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_queue_iso {
- __u64 packets;
- __u64 data;
+  __u64 packets;
+  __u64 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 size;
- __u32 handle;
+  __u32 size;
+  __u32 handle;
 };
 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG0 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -272,61 +272,61 @@
 #define FW_CDEV_ISO_CONTEXT_MATCH_ALL_TAGS 15
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_start_iso {
- __s32 cycle;
- __u32 sync;
- __u32 tags;
+  __s32 cycle;
+  __u32 sync;
+  __u32 tags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 handle;
+  __u32 handle;
 };
 struct fw_cdev_stop_iso {
- __u32 handle;
+  __u32 handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fw_cdev_flush_iso {
- __u32 handle;
+  __u32 handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_get_cycle_timer {
- __u64 local_time;
- __u32 cycle_timer;
+  __u64 local_time;
+  __u32 cycle_timer;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_get_cycle_timer2 {
- __s64 tv_sec;
- __s32 tv_nsec;
- __s32 clk_id;
+  __s64 tv_sec;
+  __s32 tv_nsec;
+  __s32 clk_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cycle_timer;
+  __u32 cycle_timer;
 };
 struct fw_cdev_allocate_iso_resource {
- __u64 closure;
+  __u64 closure;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 channels;
- __u32 bandwidth;
- __u32 handle;
+  __u64 channels;
+  __u32 bandwidth;
+  __u32 handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fw_cdev_send_stream_packet {
- __u32 length;
- __u32 tag;
- __u32 channel;
+  __u32 length;
+  __u32 tag;
+  __u32 channel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sy;
- __u64 closure;
- __u64 data;
- __u32 generation;
+  __u32 sy;
+  __u64 closure;
+  __u64 data;
+  __u32 generation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 speed;
+  __u32 speed;
 };
 struct fw_cdev_send_phy_packet {
- __u64 closure;
+  __u64 closure;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 data[2];
- __u32 generation;
+  __u32 data[2];
+  __u32 generation;
 };
 struct fw_cdev_receive_phy_packets {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 closure;
+  __u64 closure;
 };
 #define FW_CDEV_VERSION 3
 #endif
diff --git a/libc/kernel/uapi/linux/flat.h b/libc/kernel/uapi/linux/flat.h
index 9945ae3..301fda3 100644
--- a/libc/kernel/uapi/linux/flat.h
+++ b/libc/kernel/uapi/linux/flat.h
@@ -22,21 +22,21 @@
 #define MAX_SHARED_LIBS (1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct flat_hdr {
- char magic[4];
- unsigned long rev;
- unsigned long entry;
+  char magic[4];
+  unsigned long rev;
+  unsigned long entry;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long data_start;
- unsigned long data_end;
- unsigned long bss_end;
- unsigned long stack_size;
+  unsigned long data_start;
+  unsigned long data_end;
+  unsigned long bss_end;
+  unsigned long stack_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long reloc_start;
- unsigned long reloc_count;
- unsigned long flags;
- unsigned long build_date;
+  unsigned long reloc_start;
+  unsigned long reloc_count;
+  unsigned long flags;
+  unsigned long build_date;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long filler[5];
+  unsigned long filler[5];
 };
 #define FLAT_FLAG_RAM 0x0001
 #define FLAT_FLAG_GOTPIC 0x0002
diff --git a/libc/kernel/uapi/linux/fou.h b/libc/kernel/uapi/linux/fou.h
new file mode 100644
index 0000000..a31a4ad
--- /dev/null
+++ b/libc/kernel/uapi/linux/fou.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FOU_H
+#define _UAPI_LINUX_FOU_H
+#define FOU_GENL_NAME "fou"
+#define FOU_GENL_VERSION 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  FOU_ATTR_UNSPEC,
+  FOU_ATTR_PORT,
+  FOU_ATTR_AF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FOU_ATTR_IPPROTO,
+  FOU_ATTR_TYPE,
+  __FOU_ATTR_MAX,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FOU_ATTR_MAX (__FOU_ATTR_MAX - 1)
+enum {
+  FOU_CMD_UNSPEC,
+  FOU_CMD_ADD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FOU_CMD_DEL,
+  __FOU_CMD_MAX,
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FOU_ENCAP_UNSPEC,
+  FOU_ENCAP_DIRECT,
+  FOU_ENCAP_GUE,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FOU_CMD_MAX (__FOU_CMD_MAX - 1)
+#endif
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index d6fc730..bed2405 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -27,7 +27,7 @@
 #define INR_OPEN_MAX 4096
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLOCK_SIZE_BITS 10
-#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
+#define BLOCK_SIZE (1 << BLOCK_SIZE_BITS)
 #define SEEK_SET 0
 #define SEEK_CUR 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -36,151 +36,155 @@
 #define SEEK_HOLE 4
 #define SEEK_MAX SEEK_HOLE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RENAME_NOREPLACE (1 << 0)
+#define RENAME_EXCHANGE (1 << 1)
+#define RENAME_WHITEOUT (1 << 2)
 struct fstrim_range {
- __u64 start;
- __u64 len;
- __u64 minlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 start;
+  __u64 len;
+  __u64 minlen;
 };
-struct files_stat_struct {
- unsigned long nr_files;
- unsigned long nr_free_files;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long max_files;
+struct files_stat_struct {
+  unsigned long nr_files;
+  unsigned long nr_free_files;
+  unsigned long max_files;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct inodes_stat_t {
- long nr_inodes;
+  long nr_inodes;
+  long nr_unused;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long nr_unused;
- long dummy[5];
+  long dummy[5];
 };
 #define NR_FILE 8192
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_RDONLY 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_NOSUID 2
 #define MS_NODEV 4
 #define MS_NOEXEC 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_SYNCHRONOUS 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_REMOUNT 32
 #define MS_MANDLOCK 64
 #define MS_DIRSYNC 128
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_NOATIME 1024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_NODIRATIME 2048
 #define MS_BIND 4096
 #define MS_MOVE 8192
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_REC 16384
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_VERBOSE 32768
 #define MS_SILENT 32768
-#define MS_POSIXACL (1<<16)
+#define MS_POSIXACL (1 << 16)
+#define MS_UNBINDABLE (1 << 17)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MS_UNBINDABLE (1<<17)
-#define MS_PRIVATE (1<<18)
-#define MS_SLAVE (1<<19)
-#define MS_SHARED (1<<20)
+#define MS_PRIVATE (1 << 18)
+#define MS_SLAVE (1 << 19)
+#define MS_SHARED (1 << 20)
+#define MS_RELATIME (1 << 21)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MS_RELATIME (1<<21)
-#define MS_KERNMOUNT (1<<22)
-#define MS_I_VERSION (1<<23)
-#define MS_STRICTATIME (1<<24)
+#define MS_KERNMOUNT (1 << 22)
+#define MS_I_VERSION (1 << 23)
+#define MS_STRICTATIME (1 << 24)
+#define MS_NOSEC (1 << 28)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MS_NOSEC (1<<28)
-#define MS_BORN (1<<29)
-#define MS_ACTIVE (1<<30)
-#define MS_NOUSER (1<<31)
+#define MS_BORN (1 << 29)
+#define MS_ACTIVE (1 << 30)
+#define MS_NOUSER (1 << 31)
+#define MS_RMT_MASK (MS_RDONLY | MS_SYNCHRONOUS | MS_MANDLOCK | MS_I_VERSION)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION)
 #define MS_MGC_VAL 0xC0ED0000
 #define MS_MGC_MSK 0xffff0000
-#define BLKROSET _IO(0x12,93)
+#define BLKROSET _IO(0x12, 93)
+#define BLKROGET _IO(0x12, 94)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKROGET _IO(0x12,94)
-#define BLKRRPART _IO(0x12,95)
-#define BLKGETSIZE _IO(0x12,96)
-#define BLKFLSBUF _IO(0x12,97)
+#define BLKRRPART _IO(0x12, 95)
+#define BLKGETSIZE _IO(0x12, 96)
+#define BLKFLSBUF _IO(0x12, 97)
+#define BLKRASET _IO(0x12, 98)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKRASET _IO(0x12,98)
-#define BLKRAGET _IO(0x12,99)
-#define BLKFRASET _IO(0x12,100)
-#define BLKFRAGET _IO(0x12,101)
+#define BLKRAGET _IO(0x12, 99)
+#define BLKFRASET _IO(0x12, 100)
+#define BLKFRAGET _IO(0x12, 101)
+#define BLKSECTSET _IO(0x12, 102)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKSECTSET _IO(0x12,102)
-#define BLKSECTGET _IO(0x12,103)
-#define BLKSSZGET _IO(0x12,104)
-#define BLKBSZGET _IOR(0x12,112,size_t)
+#define BLKSECTGET _IO(0x12, 103)
+#define BLKSSZGET _IO(0x12, 104)
+#define BLKBSZGET _IOR(0x12, 112, size_t)
+#define BLKBSZSET _IOW(0x12, 113, size_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKBSZSET _IOW(0x12,113,size_t)
-#define BLKGETSIZE64 _IOR(0x12,114,size_t)
-#define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
-#define BLKTRACESTART _IO(0x12,116)
+#define BLKGETSIZE64 _IOR(0x12, 114, size_t)
+#define BLKTRACESETUP _IOWR(0x12, 115, struct blk_user_trace_setup)
+#define BLKTRACESTART _IO(0x12, 116)
+#define BLKTRACESTOP _IO(0x12, 117)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKTRACESTOP _IO(0x12,117)
-#define BLKTRACETEARDOWN _IO(0x12,118)
-#define BLKDISCARD _IO(0x12,119)
-#define BLKIOMIN _IO(0x12,120)
+#define BLKTRACETEARDOWN _IO(0x12, 118)
+#define BLKDISCARD _IO(0x12, 119)
+#define BLKIOMIN _IO(0x12, 120)
+#define BLKIOOPT _IO(0x12, 121)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKIOOPT _IO(0x12,121)
-#define BLKALIGNOFF _IO(0x12,122)
-#define BLKPBSZGET _IO(0x12,123)
-#define BLKDISCARDZEROES _IO(0x12,124)
+#define BLKALIGNOFF _IO(0x12, 122)
+#define BLKPBSZGET _IO(0x12, 123)
+#define BLKDISCARDZEROES _IO(0x12, 124)
+#define BLKSECDISCARD _IO(0x12, 125)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BLKSECDISCARD _IO(0x12,125)
-#define BLKROTATIONAL _IO(0x12,126)
-#define BLKZEROOUT _IO(0x12,127)
+#define BLKROTATIONAL _IO(0x12, 126)
+#define BLKZEROOUT _IO(0x12, 127)
 #define BMAP_IOCTL 1
+#define FIBMAP _IO(0x00, 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FIBMAP _IO(0x00,1)
-#define FIGETBSZ _IO(0x00,2)
+#define FIGETBSZ _IO(0x00, 2)
 #define FIFREEZE _IOWR('X', 119, int)
 #define FITHAW _IOWR('X', 120, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FITRIM _IOWR('X', 121, struct fstrim_range)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_IOC_GETFLAGS _IOR('f', 1, long)
 #define FS_IOC_SETFLAGS _IOW('f', 2, long)
 #define FS_IOC_GETVERSION _IOR('v', 1, long)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_IOC_SETVERSION _IOW('v', 2, long)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap)
 #define FS_IOC32_GETFLAGS _IOR('f', 1, int)
 #define FS_IOC32_SETFLAGS _IOW('f', 2, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_IOC32_GETVERSION _IOR('v', 1, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_IOC32_SETVERSION _IOW('v', 2, int)
 #define FS_SECRM_FL 0x00000001
 #define FS_UNRM_FL 0x00000002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_COMPR_FL 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_SYNC_FL 0x00000008
 #define FS_IMMUTABLE_FL 0x00000010
 #define FS_APPEND_FL 0x00000020
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_NODUMP_FL 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_NOATIME_FL 0x00000080
 #define FS_DIRTY_FL 0x00000100
 #define FS_COMPRBLK_FL 0x00000200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_NOCOMP_FL 0x00000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_ECOMPR_FL 0x00000800
 #define FS_BTREE_FL 0x00001000
 #define FS_INDEX_FL 0x00001000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_IMAGIC_FL 0x00002000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_JOURNAL_DATA_FL 0x00004000
 #define FS_NOTAIL_FL 0x00008000
 #define FS_DIRSYNC_FL 0x00010000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_TOPDIR_FL 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_EXTENT_FL 0x00080000
 #define FS_DIRECTIO_FL 0x00100000
 #define FS_NOCOW_FL 0x00800000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_RESERVED_FL 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_FL_USER_VISIBLE 0x0003DFFF
 #define FS_FL_USER_MODIFIABLE 0x000380FF
 #define SYNC_FILE_RANGE_WAIT_BEFORE 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNC_FILE_RANGE_WRITE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNC_FILE_RANGE_WAIT_AFTER 4
 #endif
diff --git a/libc/kernel/uapi/linux/fsl_hypervisor.h b/libc/kernel/uapi/linux/fsl_hypervisor.h
index d5764d4..841f32c 100644
--- a/libc/kernel/uapi/linux/fsl_hypervisor.h
+++ b/libc/kernel/uapi/linux/fsl_hypervisor.h
@@ -21,65 +21,65 @@
 #include <linux/types.h>
 struct fsl_hv_ioctl_restart {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ret;
- __u32 partition;
+  __u32 ret;
+  __u32 partition;
 };
 struct fsl_hv_ioctl_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ret;
- __u32 partition;
- __u32 status;
+  __u32 ret;
+  __u32 partition;
+  __u32 status;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fsl_hv_ioctl_start {
- __u32 ret;
- __u32 partition;
- __u32 entry_point;
+  __u32 ret;
+  __u32 partition;
+  __u32 entry_point;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 load;
+  __u32 load;
 };
 struct fsl_hv_ioctl_stop {
- __u32 ret;
+  __u32 ret;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 partition;
+  __u32 partition;
 };
 struct fsl_hv_ioctl_memcpy {
- __u32 ret;
+  __u32 ret;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 source;
- __u32 target;
- __u32 reserved;
- __u64 local_vaddr;
+  __u32 source;
+  __u32 target;
+  __u32 reserved;
+  __u64 local_vaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 remote_paddr;
- __u64 count;
+  __u64 remote_paddr;
+  __u64 count;
 };
 struct fsl_hv_ioctl_doorbell {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ret;
- __u32 doorbell;
+  __u32 ret;
+  __u32 doorbell;
 };
 struct fsl_hv_ioctl_prop {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ret;
- __u32 handle;
- __u64 path;
- __u64 propname;
+  __u32 ret;
+  __u32 handle;
+  __u64 path;
+  __u64 propname;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 propval;
- __u32 proplen;
- __u32 reserved;
+  __u64 propval;
+  __u32 proplen;
+  __u32 reserved;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FSL_HV_IOCTL_TYPE 0xAF
-#define FSL_HV_IOCTL_PARTITION_RESTART   _IOWR(FSL_HV_IOCTL_TYPE, 1, struct fsl_hv_ioctl_restart)
-#define FSL_HV_IOCTL_PARTITION_GET_STATUS   _IOWR(FSL_HV_IOCTL_TYPE, 2, struct fsl_hv_ioctl_status)
-#define FSL_HV_IOCTL_PARTITION_START   _IOWR(FSL_HV_IOCTL_TYPE, 3, struct fsl_hv_ioctl_start)
+#define FSL_HV_IOCTL_PARTITION_RESTART _IOWR(FSL_HV_IOCTL_TYPE, 1, struct fsl_hv_ioctl_restart)
+#define FSL_HV_IOCTL_PARTITION_GET_STATUS _IOWR(FSL_HV_IOCTL_TYPE, 2, struct fsl_hv_ioctl_status)
+#define FSL_HV_IOCTL_PARTITION_START _IOWR(FSL_HV_IOCTL_TYPE, 3, struct fsl_hv_ioctl_start)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FSL_HV_IOCTL_PARTITION_STOP   _IOWR(FSL_HV_IOCTL_TYPE, 4, struct fsl_hv_ioctl_stop)
-#define FSL_HV_IOCTL_MEMCPY   _IOWR(FSL_HV_IOCTL_TYPE, 5, struct fsl_hv_ioctl_memcpy)
-#define FSL_HV_IOCTL_DOORBELL   _IOWR(FSL_HV_IOCTL_TYPE, 6, struct fsl_hv_ioctl_doorbell)
-#define FSL_HV_IOCTL_GETPROP   _IOWR(FSL_HV_IOCTL_TYPE, 7, struct fsl_hv_ioctl_prop)
+#define FSL_HV_IOCTL_PARTITION_STOP _IOWR(FSL_HV_IOCTL_TYPE, 4, struct fsl_hv_ioctl_stop)
+#define FSL_HV_IOCTL_MEMCPY _IOWR(FSL_HV_IOCTL_TYPE, 5, struct fsl_hv_ioctl_memcpy)
+#define FSL_HV_IOCTL_DOORBELL _IOWR(FSL_HV_IOCTL_TYPE, 6, struct fsl_hv_ioctl_doorbell)
+#define FSL_HV_IOCTL_GETPROP _IOWR(FSL_HV_IOCTL_TYPE, 7, struct fsl_hv_ioctl_prop)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FSL_HV_IOCTL_SETPROP   _IOWR(FSL_HV_IOCTL_TYPE, 8, struct fsl_hv_ioctl_prop)
+#define FSL_HV_IOCTL_SETPROP _IOWR(FSL_HV_IOCTL_TYPE, 8, struct fsl_hv_ioctl_prop)
 #endif
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 8135d47..4f0d6d3 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -21,52 +21,52 @@
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FUSE_KERNEL_MINOR_VERSION 22
+#define FUSE_KERNEL_MINOR_VERSION 23
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
- uint64_t ino;
+  uint64_t ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t size;
- uint64_t blocks;
- uint64_t atime;
- uint64_t mtime;
+  uint64_t size;
+  uint64_t blocks;
+  uint64_t atime;
+  uint64_t mtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t ctime;
- uint32_t atimensec;
- uint32_t mtimensec;
- uint32_t ctimensec;
+  uint64_t ctime;
+  uint32_t atimensec;
+  uint32_t mtimensec;
+  uint32_t ctimensec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t mode;
- uint32_t nlink;
- uint32_t uid;
- uint32_t gid;
+  uint32_t mode;
+  uint32_t nlink;
+  uint32_t uid;
+  uint32_t gid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t rdev;
- uint32_t blksize;
- uint32_t padding;
+  uint32_t rdev;
+  uint32_t blksize;
+  uint32_t padding;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_kstatfs {
- uint64_t blocks;
- uint64_t bfree;
- uint64_t bavail;
+  uint64_t blocks;
+  uint64_t bfree;
+  uint64_t bavail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t files;
- uint64_t ffree;
- uint32_t bsize;
- uint32_t namelen;
+  uint64_t files;
+  uint64_t ffree;
+  uint32_t bsize;
+  uint32_t namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t frsize;
- uint32_t padding;
- uint32_t spare[6];
+  uint32_t frsize;
+  uint32_t padding;
+  uint32_t spare[6];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_file_lock {
- uint64_t start;
- uint64_t end;
- uint32_t type;
+  uint64_t start;
+  uint64_t end;
+  uint32_t type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pid;
+  uint32_t pid;
 };
 #define FATTR_MODE (1 << 0)
 #define FATTR_UID (1 << 1)
@@ -81,494 +81,510 @@
 #define FATTR_MTIME_NOW (1 << 8)
 #define FATTR_LOCKOWNER (1 << 9)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FATTR_CTIME (1 << 10)
 #define FOPEN_DIRECT_IO (1 << 0)
 #define FOPEN_KEEP_CACHE (1 << 1)
 #define FOPEN_NONSEEKABLE (1 << 2)
-#define FUSE_ASYNC_READ (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FUSE_ASYNC_READ (1 << 0)
 #define FUSE_POSIX_LOCKS (1 << 1)
 #define FUSE_FILE_OPS (1 << 2)
 #define FUSE_ATOMIC_O_TRUNC (1 << 3)
-#define FUSE_EXPORT_SUPPORT (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FUSE_EXPORT_SUPPORT (1 << 4)
 #define FUSE_BIG_WRITES (1 << 5)
 #define FUSE_DONT_MASK (1 << 6)
 #define FUSE_SPLICE_WRITE (1 << 7)
-#define FUSE_SPLICE_MOVE (1 << 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FUSE_SPLICE_MOVE (1 << 8)
 #define FUSE_SPLICE_READ (1 << 9)
 #define FUSE_FLOCK_LOCKS (1 << 10)
 #define FUSE_HAS_IOCTL_DIR (1 << 11)
-#define FUSE_AUTO_INVAL_DATA (1 << 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FUSE_AUTO_INVAL_DATA (1 << 12)
 #define FUSE_DO_READDIRPLUS (1 << 13)
 #define FUSE_READDIRPLUS_AUTO (1 << 14)
 #define FUSE_ASYNC_DIO (1 << 15)
-#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FUSE_WRITEBACK_CACHE (1 << 16)
+#define FUSE_NO_OPEN_SUPPORT (1 << 17)
+#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
 #define FUSE_RELEASE_FLUSH (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
 #define FUSE_GETATTR_FH (1 << 0)
 #define FUSE_LK_FLOCK (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_WRITE_CACHE (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_WRITE_LOCKOWNER (1 << 1)
 #define FUSE_READ_LOCKOWNER (1 << 1)
 #define FUSE_IOCTL_COMPAT (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_IOCTL_UNRESTRICTED (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_IOCTL_RETRY (1 << 2)
 #define FUSE_IOCTL_32BIT (1 << 3)
 #define FUSE_IOCTL_DIR (1 << 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_IOCTL_MAX_IOV 256
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
 enum fuse_opcode {
- FUSE_LOOKUP = 1,
+  FUSE_LOOKUP = 1,
+  FUSE_FORGET = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_FORGET = 2,
- FUSE_GETATTR = 3,
- FUSE_SETATTR = 4,
- FUSE_READLINK = 5,
+  FUSE_GETATTR = 3,
+  FUSE_SETATTR = 4,
+  FUSE_READLINK = 5,
+  FUSE_SYMLINK = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_SYMLINK = 6,
- FUSE_MKNOD = 8,
- FUSE_MKDIR = 9,
- FUSE_UNLINK = 10,
+  FUSE_MKNOD = 8,
+  FUSE_MKDIR = 9,
+  FUSE_UNLINK = 10,
+  FUSE_RMDIR = 11,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_RMDIR = 11,
- FUSE_RENAME = 12,
- FUSE_LINK = 13,
- FUSE_OPEN = 14,
+  FUSE_RENAME = 12,
+  FUSE_LINK = 13,
+  FUSE_OPEN = 14,
+  FUSE_READ = 15,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_READ = 15,
- FUSE_WRITE = 16,
- FUSE_STATFS = 17,
- FUSE_RELEASE = 18,
+  FUSE_WRITE = 16,
+  FUSE_STATFS = 17,
+  FUSE_RELEASE = 18,
+  FUSE_FSYNC = 20,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_FSYNC = 20,
- FUSE_SETXATTR = 21,
- FUSE_GETXATTR = 22,
- FUSE_LISTXATTR = 23,
+  FUSE_SETXATTR = 21,
+  FUSE_GETXATTR = 22,
+  FUSE_LISTXATTR = 23,
+  FUSE_REMOVEXATTR = 24,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_REMOVEXATTR = 24,
- FUSE_FLUSH = 25,
- FUSE_INIT = 26,
- FUSE_OPENDIR = 27,
+  FUSE_FLUSH = 25,
+  FUSE_INIT = 26,
+  FUSE_OPENDIR = 27,
+  FUSE_READDIR = 28,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_READDIR = 28,
- FUSE_RELEASEDIR = 29,
- FUSE_FSYNCDIR = 30,
- FUSE_GETLK = 31,
+  FUSE_RELEASEDIR = 29,
+  FUSE_FSYNCDIR = 30,
+  FUSE_GETLK = 31,
+  FUSE_SETLK = 32,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_SETLK = 32,
- FUSE_SETLKW = 33,
- FUSE_ACCESS = 34,
- FUSE_CREATE = 35,
+  FUSE_SETLKW = 33,
+  FUSE_ACCESS = 34,
+  FUSE_CREATE = 35,
+  FUSE_INTERRUPT = 36,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_INTERRUPT = 36,
- FUSE_BMAP = 37,
- FUSE_DESTROY = 38,
- FUSE_IOCTL = 39,
+  FUSE_BMAP = 37,
+  FUSE_DESTROY = 38,
+  FUSE_IOCTL = 39,
+  FUSE_POLL = 40,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_POLL = 40,
- FUSE_NOTIFY_REPLY = 41,
- FUSE_BATCH_FORGET = 42,
- FUSE_FALLOCATE = 43,
+  FUSE_NOTIFY_REPLY = 41,
+  FUSE_BATCH_FORGET = 42,
+  FUSE_FALLOCATE = 43,
+  FUSE_READDIRPLUS = 44,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_READDIRPLUS = 44,
- CUSE_INIT = 4096,
+  FUSE_RENAME2 = 45,
+  CUSE_INIT = 4096,
 };
 enum fuse_notify_code {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_NOTIFY_POLL = 1,
- FUSE_NOTIFY_INVAL_INODE = 2,
- FUSE_NOTIFY_INVAL_ENTRY = 3,
- FUSE_NOTIFY_STORE = 4,
+  FUSE_NOTIFY_POLL = 1,
+  FUSE_NOTIFY_INVAL_INODE = 2,
+  FUSE_NOTIFY_INVAL_ENTRY = 3,
+  FUSE_NOTIFY_STORE = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUSE_NOTIFY_RETRIEVE = 5,
- FUSE_NOTIFY_DELETE = 6,
- FUSE_NOTIFY_CODE_MAX,
+  FUSE_NOTIFY_RETRIEVE = 5,
+  FUSE_NOTIFY_DELETE = 6,
+  FUSE_NOTIFY_CODE_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_MIN_READ_BUFFER 8192
 #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
 struct fuse_entry_out {
- uint64_t nodeid;
+  uint64_t nodeid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t generation;
- uint64_t entry_valid;
- uint64_t attr_valid;
- uint32_t entry_valid_nsec;
+  uint64_t generation;
+  uint64_t entry_valid;
+  uint64_t attr_valid;
+  uint32_t entry_valid_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t attr_valid_nsec;
- struct fuse_attr attr;
+  uint32_t attr_valid_nsec;
+  struct fuse_attr attr;
 };
 struct fuse_forget_in {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t nlookup;
+  uint64_t nlookup;
 };
 struct fuse_forget_one {
- uint64_t nodeid;
+  uint64_t nodeid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t nlookup;
+  uint64_t nlookup;
 };
 struct fuse_batch_forget_in {
- uint32_t count;
+  uint32_t count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t dummy;
+  uint32_t dummy;
 };
 struct fuse_getattr_in {
- uint32_t getattr_flags;
+  uint32_t getattr_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t dummy;
- uint64_t fh;
+  uint32_t dummy;
+  uint64_t fh;
 };
 #define FUSE_COMPAT_ATTR_OUT_SIZE 96
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_attr_out {
- uint64_t attr_valid;
- uint32_t attr_valid_nsec;
- uint32_t dummy;
+  uint64_t attr_valid;
+  uint32_t attr_valid_nsec;
+  uint32_t dummy;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fuse_attr attr;
+  struct fuse_attr attr;
 };
 #define FUSE_COMPAT_MKNOD_IN_SIZE 8
 struct fuse_mknod_in {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t mode;
- uint32_t rdev;
- uint32_t umask;
- uint32_t padding;
+  uint32_t mode;
+  uint32_t rdev;
+  uint32_t umask;
+  uint32_t padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fuse_mkdir_in {
- uint32_t mode;
- uint32_t umask;
+  uint32_t mode;
+  uint32_t umask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fuse_rename_in {
- uint64_t newdir;
+  uint64_t newdir;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct fuse_rename2_in {
+  uint64_t newdir;
+  uint32_t flags;
+  uint32_t padding;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct fuse_link_in {
- uint64_t oldnodeid;
+  uint64_t oldnodeid;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_setattr_in {
+  uint32_t valid;
+  uint32_t padding;
+  uint64_t fh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t valid;
- uint32_t padding;
- uint64_t fh;
- uint64_t size;
+  uint64_t size;
+  uint64_t lock_owner;
+  uint64_t atime;
+  uint64_t mtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t lock_owner;
- uint64_t atime;
- uint64_t mtime;
- uint64_t unused2;
+  uint64_t ctime;
+  uint32_t atimensec;
+  uint32_t mtimensec;
+  uint32_t ctimensec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t atimensec;
- uint32_t mtimensec;
- uint32_t unused3;
- uint32_t mode;
+  uint32_t mode;
+  uint32_t unused4;
+  uint32_t uid;
+  uint32_t gid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t unused4;
- uint32_t uid;
- uint32_t gid;
- uint32_t unused5;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t unused5;
 };
 struct fuse_open_in {
- uint32_t flags;
- uint32_t unused;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t unused;
 };
 struct fuse_create_in {
- uint32_t flags;
- uint32_t mode;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t umask;
- uint32_t padding;
+  uint32_t mode;
+  uint32_t umask;
+  uint32_t padding;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_open_out {
+  uint64_t fh;
+  uint32_t open_flags;
+  uint32_t padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t fh;
- uint32_t open_flags;
- uint32_t padding;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_release_in {
- uint64_t fh;
- uint32_t flags;
- uint32_t release_flags;
+  uint64_t fh;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t lock_owner;
+  uint32_t release_flags;
+  uint64_t lock_owner;
 };
 struct fuse_flush_in {
- uint64_t fh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t unused;
- uint32_t padding;
- uint64_t lock_owner;
+  uint64_t fh;
+  uint32_t unused;
+  uint32_t padding;
+  uint64_t lock_owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_read_in {
- uint64_t fh;
- uint64_t offset;
- uint32_t size;
+  uint64_t fh;
+  uint64_t offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t read_flags;
- uint64_t lock_owner;
- uint32_t flags;
- uint32_t padding;
+  uint32_t size;
+  uint32_t read_flags;
+  uint64_t lock_owner;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t padding;
 };
 #define FUSE_COMPAT_WRITE_IN_SIZE 24
 struct fuse_write_in {
- uint64_t fh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t offset;
- uint32_t size;
- uint32_t write_flags;
- uint64_t lock_owner;
+  uint64_t fh;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t write_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint32_t padding;
+  uint64_t lock_owner;
+  uint32_t flags;
+  uint32_t padding;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_write_out {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t size;
- uint32_t padding;
+  uint32_t size;
+  uint32_t padding;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUSE_COMPAT_STATFS_SIZE 48
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_statfs_out {
- struct fuse_kstatfs st;
+  struct fuse_kstatfs st;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_fsync_in {
+  uint64_t fh;
+  uint32_t fsync_flags;
+  uint32_t padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t fh;
- uint32_t fsync_flags;
- uint32_t padding;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_setxattr_in {
- uint32_t size;
- uint32_t flags;
-};
+  uint32_t size;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct fuse_getxattr_in {
- uint32_t size;
- uint32_t padding;
-};
+  uint32_t size;
+  uint32_t padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct fuse_getxattr_out {
- uint32_t size;
- uint32_t padding;
-};
+  uint32_t size;
+  uint32_t padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct fuse_lk_in {
- uint64_t fh;
- uint64_t owner;
- struct fuse_file_lock lk;
+  uint64_t fh;
+  uint64_t owner;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t lk_flags;
- uint32_t padding;
+  struct fuse_file_lock lk;
+  uint32_t lk_flags;
+  uint32_t padding;
 };
-struct fuse_lk_out {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fuse_file_lock lk;
+struct fuse_lk_out {
+  struct fuse_file_lock lk;
 };
 struct fuse_access_in {
- uint32_t mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t padding;
+  uint32_t mask;
+  uint32_t padding;
 };
 struct fuse_init_in {
- uint32_t major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t minor;
- uint32_t max_readahead;
- uint32_t flags;
+  uint32_t major;
+  uint32_t minor;
+  uint32_t max_readahead;
+  uint32_t flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FUSE_COMPAT_INIT_OUT_SIZE 8
+#define FUSE_COMPAT_22_INIT_OUT_SIZE 24
 struct fuse_init_out {
- uint32_t major;
- uint32_t minor;
- uint32_t max_readahead;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint16_t max_background;
- uint16_t congestion_threshold;
- uint32_t max_write;
+  uint32_t major;
+  uint32_t minor;
+  uint32_t max_readahead;
+  uint32_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t max_background;
+  uint16_t congestion_threshold;
+  uint32_t max_write;
+  uint32_t time_gran;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t unused[9];
 };
 #define CUSE_INIT_INFO_MAX 4096
 struct cuse_init_in {
- uint32_t major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t minor;
- uint32_t unused;
- uint32_t flags;
+  uint32_t major;
+  uint32_t minor;
+  uint32_t unused;
+  uint32_t flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cuse_init_out {
- uint32_t major;
- uint32_t minor;
- uint32_t unused;
+  uint32_t major;
+  uint32_t minor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint32_t max_read;
- uint32_t max_write;
- uint32_t dev_major;
+  uint32_t unused;
+  uint32_t flags;
+  uint32_t max_read;
+  uint32_t max_write;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t dev_minor;
- uint32_t spare[10];
+  uint32_t dev_major;
+  uint32_t dev_minor;
+  uint32_t spare[10];
 };
-struct fuse_interrupt_in {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t unique;
+struct fuse_interrupt_in {
+  uint64_t unique;
 };
 struct fuse_bmap_in {
- uint64_t block;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t blocksize;
- uint32_t padding;
+  uint64_t block;
+  uint32_t blocksize;
+  uint32_t padding;
 };
-struct fuse_bmap_out {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t block;
+struct fuse_bmap_out {
+  uint64_t block;
 };
 struct fuse_ioctl_in {
- uint64_t fh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint32_t cmd;
- uint64_t arg;
- uint32_t in_size;
+  uint64_t fh;
+  uint32_t flags;
+  uint32_t cmd;
+  uint64_t arg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t out_size;
+  uint32_t in_size;
+  uint32_t out_size;
 };
 struct fuse_ioctl_iovec {
- uint64_t base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t len;
+  uint64_t base;
+  uint64_t len;
 };
 struct fuse_ioctl_out {
- int32_t result;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t flags;
- uint32_t in_iovs;
- uint32_t out_iovs;
+  int32_t result;
+  uint32_t flags;
+  uint32_t in_iovs;
+  uint32_t out_iovs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_poll_in {
- uint64_t fh;
- uint64_t kh;
- uint32_t flags;
+  uint64_t fh;
+  uint64_t kh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t events;
+  uint32_t flags;
+  uint32_t events;
 };
 struct fuse_poll_out {
- uint32_t revents;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t padding;
+  uint32_t revents;
+  uint32_t padding;
 };
 struct fuse_notify_poll_wakeup_out {
- uint64_t kh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint64_t kh;
 };
 struct fuse_fallocate_in {
- uint64_t fh;
- uint64_t offset;
+  uint64_t fh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t length;
- uint32_t mode;
- uint32_t padding;
+  uint64_t offset;
+  uint64_t length;
+  uint32_t mode;
+  uint32_t padding;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_in_header {
- uint32_t len;
- uint32_t opcode;
- uint64_t unique;
+  uint32_t len;
+  uint32_t opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t nodeid;
- uint32_t uid;
- uint32_t gid;
- uint32_t pid;
+  uint64_t unique;
+  uint64_t nodeid;
+  uint32_t uid;
+  uint32_t gid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t padding;
+  uint32_t pid;
+  uint32_t padding;
 };
 struct fuse_out_header {
- uint32_t len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int32_t error;
- uint64_t unique;
+  uint32_t len;
+  int32_t error;
+  uint64_t unique;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_dirent {
+  uint64_t ino;
+  uint64_t off;
+  uint32_t namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t ino;
- uint64_t off;
- uint32_t namelen;
- uint32_t type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[];
+  uint32_t type;
+  char name[];
 };
 #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
-#define FUSE_DIRENT_ALIGN(x)   (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FUSE_DIRENT_SIZE(d)   FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
+#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
+#define FUSE_DIRENT_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
 struct fuse_direntplus {
- struct fuse_entry_out entry_out;
- struct fuse_dirent dirent;
+  struct fuse_entry_out entry_out;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct fuse_dirent dirent;
 };
-#define FUSE_NAME_OFFSET_DIRENTPLUS   offsetof(struct fuse_direntplus, dirent.name)
-#define FUSE_DIRENTPLUS_SIZE(d)   FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
+#define FUSE_NAME_OFFSET_DIRENTPLUS offsetof(struct fuse_direntplus, dirent.name)
+#define FUSE_DIRENTPLUS_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_notify_inval_inode_out {
+  uint64_t ino;
+  int64_t off;
+  int64_t len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t ino;
- int64_t off;
- int64_t len;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_notify_inval_entry_out {
- uint64_t parent;
- uint32_t namelen;
- uint32_t padding;
+  uint64_t parent;
+  uint32_t namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t padding;
 };
 struct fuse_notify_delete_out {
- uint64_t parent;
- uint64_t child;
+  uint64_t parent;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t namelen;
- uint32_t padding;
+  uint64_t child;
+  uint32_t namelen;
+  uint32_t padding;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_notify_store_out {
+  uint64_t nodeid;
+  uint64_t offset;
+  uint32_t size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t nodeid;
- uint64_t offset;
- uint32_t size;
- uint32_t padding;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t padding;
 };
 struct fuse_notify_retrieve_out {
- uint64_t notify_unique;
- uint64_t nodeid;
+  uint64_t notify_unique;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t offset;
- uint32_t size;
- uint32_t padding;
+  uint64_t nodeid;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t padding;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fuse_notify_retrieve_in {
- uint64_t dummy1;
- uint64_t offset;
- uint32_t size;
+  uint64_t dummy1;
+  uint64_t offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t dummy2;
- uint64_t dummy3;
- uint64_t dummy4;
+  uint32_t size;
+  uint32_t dummy2;
+  uint64_t dummy3;
+  uint64_t dummy4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/futex.h b/libc/kernel/uapi/linux/futex.h
index 371c0ea..e03b3f8 100644
--- a/libc/kernel/uapi/linux/futex.h
+++ b/libc/kernel/uapi/linux/futex.h
@@ -53,17 +53,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_WAIT_BITSET_PRIVATE (FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG)
 #define FUTEX_WAKE_BITSET_PRIVATE (FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG)
-#define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI |   FUTEX_PRIVATE_FLAG)
-#define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI |   FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct robust_list {
- struct robust_list __user *next;
+  struct robust_list __user * next;
 };
 struct robust_list_head {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct robust_list list;
- long futex_offset;
- struct robust_list __user *list_op_pending;
+  struct robust_list list;
+  long futex_offset;
+  struct robust_list __user * list_op_pending;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_WAITERS 0x80000000
@@ -87,5 +87,5 @@
 #define FUTEX_OP_CMP_GT 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_OP_CMP_GE 5
-#define FUTEX_OP(op, oparg, cmp, cmparg)   (((op & 0xf) << 28) | ((cmp & 0xf) << 24)   | ((oparg & 0xfff) << 12) | (cmparg & 0xfff))
+#define FUTEX_OP(op,oparg,cmp,cmparg) (((op & 0xf) << 28) | ((cmp & 0xf) << 24) | ((oparg & 0xfff) << 12) | (cmparg & 0xfff))
 #endif
diff --git a/libc/kernel/uapi/linux/gen_stats.h b/libc/kernel/uapi/linux/gen_stats.h
index e1ca73f..9dc9b32 100644
--- a/libc/kernel/uapi/linux/gen_stats.h
+++ b/libc/kernel/uapi/linux/gen_stats.h
@@ -21,49 +21,49 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_STATS_UNSPEC,
- TCA_STATS_BASIC,
- TCA_STATS_RATE_EST,
- TCA_STATS_QUEUE,
+  TCA_STATS_UNSPEC,
+  TCA_STATS_BASIC,
+  TCA_STATS_RATE_EST,
+  TCA_STATS_QUEUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_STATS_APP,
- TCA_STATS_RATE_EST64,
- __TCA_STATS_MAX,
+  TCA_STATS_APP,
+  TCA_STATS_RATE_EST64,
+  __TCA_STATS_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
 struct gnet_stats_basic {
- __u64 bytes;
- __u32 packets;
+  __u64 bytes;
+  __u32 packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct gnet_stats_basic_packed {
- __u64 bytes;
- __u32 packets;
+  __u64 bytes;
+  __u32 packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 struct gnet_stats_rate_est {
- __u32 bps;
- __u32 pps;
+  __u32 bps;
+  __u32 pps;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct gnet_stats_rate_est64 {
- __u64 bps;
- __u64 pps;
+  __u64 bps;
+  __u64 pps;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct gnet_stats_queue {
- __u32 qlen;
- __u32 backlog;
+  __u32 qlen;
+  __u32 backlog;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 drops;
- __u32 requeues;
- __u32 overlimits;
+  __u32 drops;
+  __u32 requeues;
+  __u32 overlimits;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct gnet_estimator {
- signed char interval;
- unsigned char ewma_log;
+  signed char interval;
+  unsigned char ewma_log;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/genetlink.h b/libc/kernel/uapi/linux/genetlink.h
index c069efd..5daa4a6 100644
--- a/libc/kernel/uapi/linux/genetlink.h
+++ b/libc/kernel/uapi/linux/genetlink.h
@@ -26,9 +26,9 @@
 #define GENL_MAX_ID 1023
 struct genlmsghdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cmd;
- __u8 version;
- __u16 reserved;
+  __u8 cmd;
+  __u8 version;
+  __u16 reserved;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GENL_HDRLEN NLMSG_ALIGN(sizeof(struct genlmsghdr))
@@ -43,52 +43,52 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GENL_ID_PMCRAID (NLMSG_MIN_TYPE + 2)
 enum {
- CTRL_CMD_UNSPEC,
- CTRL_CMD_NEWFAMILY,
+  CTRL_CMD_UNSPEC,
+  CTRL_CMD_NEWFAMILY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTRL_CMD_DELFAMILY,
- CTRL_CMD_GETFAMILY,
- CTRL_CMD_NEWOPS,
- CTRL_CMD_DELOPS,
+  CTRL_CMD_DELFAMILY,
+  CTRL_CMD_GETFAMILY,
+  CTRL_CMD_NEWOPS,
+  CTRL_CMD_DELOPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTRL_CMD_GETOPS,
- CTRL_CMD_NEWMCAST_GRP,
- CTRL_CMD_DELMCAST_GRP,
- CTRL_CMD_GETMCAST_GRP,
+  CTRL_CMD_GETOPS,
+  CTRL_CMD_NEWMCAST_GRP,
+  CTRL_CMD_DELMCAST_GRP,
+  CTRL_CMD_GETMCAST_GRP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTRL_CMD_MAX,
+  __CTRL_CMD_MAX,
 };
 #define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTRL_ATTR_UNSPEC,
- CTRL_ATTR_FAMILY_ID,
- CTRL_ATTR_FAMILY_NAME,
- CTRL_ATTR_VERSION,
+  CTRL_ATTR_UNSPEC,
+  CTRL_ATTR_FAMILY_ID,
+  CTRL_ATTR_FAMILY_NAME,
+  CTRL_ATTR_VERSION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTRL_ATTR_HDRSIZE,
- CTRL_ATTR_MAXATTR,
- CTRL_ATTR_OPS,
- CTRL_ATTR_MCAST_GROUPS,
+  CTRL_ATTR_HDRSIZE,
+  CTRL_ATTR_MAXATTR,
+  CTRL_ATTR_OPS,
+  CTRL_ATTR_MCAST_GROUPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTRL_ATTR_MAX,
+  __CTRL_ATTR_MAX,
 };
 #define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTRL_ATTR_OP_UNSPEC,
- CTRL_ATTR_OP_ID,
- CTRL_ATTR_OP_FLAGS,
- __CTRL_ATTR_OP_MAX,
+  CTRL_ATTR_OP_UNSPEC,
+  CTRL_ATTR_OP_ID,
+  CTRL_ATTR_OP_FLAGS,
+  __CTRL_ATTR_OP_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
 enum {
- CTRL_ATTR_MCAST_GRP_UNSPEC,
+  CTRL_ATTR_MCAST_GRP_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTRL_ATTR_MCAST_GRP_NAME,
- CTRL_ATTR_MCAST_GRP_ID,
- __CTRL_ATTR_MCAST_GRP_MAX,
+  CTRL_ATTR_MCAST_GRP_NAME,
+  CTRL_ATTR_MCAST_GRP_ID,
+  __CTRL_ATTR_MCAST_GRP_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
diff --git a/libc/kernel/uapi/linux/genwqe/genwqe_card.h b/libc/kernel/uapi/linux/genwqe/genwqe_card.h
index c831cfc..c9c1186 100644
--- a/libc/kernel/uapi/linux/genwqe/genwqe_card.h
+++ b/libc/kernel/uapi/linux/genwqe/genwqe_card.h
@@ -39,7 +39,7 @@
 #define IO_EXTENDED_DIAG_SELECTOR 0x00000070
 #define IO_EXTENDED_DIAG_READ_MBX 0x00000078
 #define IO_EXTENDED_DIAG_MAP(ring) (0x00000500 | ((ring) << 3))
-#define GENWQE_EXTENDED_DIAG_SELECTOR(ring, trace) (((ring) << 8) | (trace))
+#define GENWQE_EXTENDED_DIAG_SELECTOR(ring,trace) (((ring) << 8) | (trace))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IO_SLU_UNITCFG 0x00000000
 #define IO_SLU_UNITCFG_TYPE_MASK 0x000000000ff00000
@@ -94,11 +94,11 @@
 #define IO_SLC_VF_FREE_RUNNING_TIMER 0x00050108
 #define IO_PF_SLC_VIRTUAL_REGION 0x00050000
 #define IO_PF_SLC_VIRTUAL_WINDOW 0x00060000
-#define IO_PF_SLC_JOBPEND(n) (0x00061000 + 8*(n))
+#define IO_PF_SLC_JOBPEND(n) (0x00061000 + 8 * (n))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IO_SLC_JOBPEND(n) IO_PF_SLC_JOBPEND(n)
-#define IO_SLU_SLC_PARSE_TRAP(n) (0x00011000 + 8*(n))
-#define IO_SLU_SLC_DISP_TRAP(n) (0x00011200 + 8*(n))
+#define IO_SLU_SLC_PARSE_TRAP(n) (0x00011000 + 8 * (n))
+#define IO_SLU_SLC_DISP_TRAP(n) (0x00011200 + 8 * (n))
 #define IO_SLC_CFGREG_GFIR 0x00020000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFIR_ERR_TRIGGER 0x0000ffff
@@ -177,8 +177,8 @@
 #define IO_APP_DEBUG_REG_18 0x02010088
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct genwqe_reg_io {
- __u64 num;
- __u64 val64;
+  __u64 num;
+  __u64 val64;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IO_ILLEGAL_VALUE 0xffffffffffffffffull
@@ -224,108 +224,110 @@
 #define SLCMD_MOVE_FLASH_FLAG_PARTITION (1 << 4)
 #define SLCMD_MOVE_FLASH_FLAG_ERASE (1 << 5)
 enum genwqe_card_state {
- GENWQE_CARD_UNUSED = 0,
+  GENWQE_CARD_UNUSED = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GENWQE_CARD_USED = 1,
- GENWQE_CARD_FATAL_ERROR = 2,
- GENWQE_CARD_STATE_MAX,
+  GENWQE_CARD_USED = 1,
+  GENWQE_CARD_FATAL_ERROR = 2,
+  GENWQE_CARD_RELOAD_BITSTREAM = 3,
+  GENWQE_CARD_STATE_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct genwqe_bitstream {
- __u64 data_addr;
- __u32 size;
- __u32 crc;
+  __u64 data_addr;
+  __u32 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 target_addr;
- __u32 partition;
- __u32 uid;
- __u64 slu_id;
+  __u32 crc;
+  __u64 target_addr;
+  __u32 partition;
+  __u32 uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 app_id;
- __u16 retc;
- __u16 attn;
- __u32 progress;
+  __u64 slu_id;
+  __u64 app_id;
+  __u16 retc;
+  __u16 attn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 progress;
 };
 #define DDCB_LENGTH 256
 #define DDCB_ASIV_LENGTH 104
-#define DDCB_ASIV_LENGTH_ATS 96
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DDCB_ASIV_LENGTH_ATS 96
 #define DDCB_ASV_LENGTH 64
 #define DDCB_FIXUPS 12
 struct genwqe_debug_data {
- char driver_version[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 slu_unitcfg;
- __u64 app_unitcfg;
- __u8 ddcb_before[DDCB_LENGTH];
- __u8 ddcb_prev[DDCB_LENGTH];
+  char driver_version[64];
+  __u64 slu_unitcfg;
+  __u64 app_unitcfg;
+  __u8 ddcb_before[DDCB_LENGTH];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ddcb_finished[DDCB_LENGTH];
+  __u8 ddcb_prev[DDCB_LENGTH];
+  __u8 ddcb_finished[DDCB_LENGTH];
 };
 #define ATS_TYPE_DATA 0x0ull
-#define ATS_TYPE_FLAT_RD 0x4ull
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ATS_TYPE_FLAT_RD 0x4ull
 #define ATS_TYPE_FLAT_RDWR 0x5ull
 #define ATS_TYPE_SGL_RD 0x6ull
 #define ATS_TYPE_SGL_RDWR 0x7ull
-#define ATS_SET_FLAGS(_struct, _field, _flags)   (((_flags) & 0xf) << (44 - (4 * (offsetof(_struct, _field) / 8))))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ATS_GET_FLAGS(_ats, _byte_offs)   (((_ats) >> (44 - (4 * ((_byte_offs) / 8)))) & 0xf)
+#define ATS_SET_FLAGS(_struct,_field,_flags) (((_flags) & 0xf) << (44 - (4 * (offsetof(_struct, _field) / 8))))
+#define ATS_GET_FLAGS(_ats,_byte_offs) (((_ats) >> (44 - (4 * ((_byte_offs) / 8)))) & 0xf)
 struct genwqe_ddcb_cmd {
- __u64 next_addr;
- __u64 flags;
+  __u64 next_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 acfunc;
- __u8 cmd;
- __u8 asiv_length;
- __u8 asv_length;
+  __u64 flags;
+  __u8 acfunc;
+  __u8 cmd;
+  __u8 asiv_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 cmdopts;
- __u16 retc;
- __u16 attn;
- __u16 vcrc;
+  __u8 asv_length;
+  __u16 cmdopts;
+  __u16 retc;
+  __u16 attn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 progress;
- __u64 deque_ts;
- __u64 cmplt_ts;
- __u64 disp_ts;
+  __u16 vcrc;
+  __u32 progress;
+  __u64 deque_ts;
+  __u64 cmplt_ts;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ddata_addr;
- __u8 asv[DDCB_ASV_LENGTH];
- union {
- struct {
+  __u64 disp_ts;
+  __u64 ddata_addr;
+  __u8 asv[DDCB_ASV_LENGTH];
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ats;
- __u8 asiv[DDCB_ASIV_LENGTH_ATS];
- };
- __u8 __asiv[DDCB_ASIV_LENGTH];
+    struct {
+      __u64 ats;
+      __u8 asiv[DDCB_ASIV_LENGTH_ATS];
+    };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+    __u8 __asiv[DDCB_ASIV_LENGTH];
+  };
 };
 #define GENWQE_IOC_CODE 0xa5
-#define GENWQE_READ_REG64 _IOR(GENWQE_IOC_CODE, 30, struct genwqe_reg_io)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GENWQE_READ_REG64 _IOR(GENWQE_IOC_CODE, 30, struct genwqe_reg_io)
 #define GENWQE_WRITE_REG64 _IOW(GENWQE_IOC_CODE, 31, struct genwqe_reg_io)
 #define GENWQE_READ_REG32 _IOR(GENWQE_IOC_CODE, 32, struct genwqe_reg_io)
 #define GENWQE_WRITE_REG32 _IOW(GENWQE_IOC_CODE, 33, struct genwqe_reg_io)
-#define GENWQE_READ_REG16 _IOR(GENWQE_IOC_CODE, 34, struct genwqe_reg_io)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GENWQE_READ_REG16 _IOR(GENWQE_IOC_CODE, 34, struct genwqe_reg_io)
 #define GENWQE_WRITE_REG16 _IOW(GENWQE_IOC_CODE, 35, struct genwqe_reg_io)
 #define GENWQE_GET_CARD_STATE _IOR(GENWQE_IOC_CODE, 36, enum genwqe_card_state)
 struct genwqe_mem {
- __u64 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 size;
- __u64 direction;
- __u64 flags;
+  __u64 addr;
+  __u64 size;
+  __u64 direction;
+  __u64 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GENWQE_PIN_MEM _IOWR(GENWQE_IOC_CODE, 40, struct genwqe_mem)
 #define GENWQE_UNPIN_MEM _IOWR(GENWQE_IOC_CODE, 41, struct genwqe_mem)
-#define GENWQE_EXECUTE_DDCB   _IOWR(GENWQE_IOC_CODE, 50, struct genwqe_ddcb_cmd)
-#define GENWQE_EXECUTE_RAW_DDCB   _IOWR(GENWQE_IOC_CODE, 51, struct genwqe_ddcb_cmd)
+#define GENWQE_EXECUTE_DDCB _IOWR(GENWQE_IOC_CODE, 50, struct genwqe_ddcb_cmd)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GENWQE_EXECUTE_RAW_DDCB _IOWR(GENWQE_IOC_CODE, 51, struct genwqe_ddcb_cmd)
 #define GENWQE_SLU_UPDATE _IOWR(GENWQE_IOC_CODE, 80, struct genwqe_bitstream)
 #define GENWQE_SLU_READ _IOWR(GENWQE_IOC_CODE, 81, struct genwqe_bitstream)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/gfs2_ondisk.h b/libc/kernel/uapi/linux/gfs2_ondisk.h
index a3106ba..fcb5993 100644
--- a/libc/kernel/uapi/linux/gfs2_ondisk.h
+++ b/libc/kernel/uapi/linux/gfs2_ondisk.h
@@ -26,7 +26,7 @@
 #define GFS2_MOUNT_LOCK 0
 #define GFS2_LIVE_LOCK 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define GFS2_TRANS_LOCK 2
+#define GFS2_FREEZE_LOCK 2
 #define GFS2_RENAME_LOCK 3
 #define GFS2_CONTROL_LOCK 4
 #define GFS2_MOUNTED_LOCK 5
@@ -56,8 +56,8 @@
 #define GFS2_FORMAT_MULTI 1900
 struct gfs2_inum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 no_formal_ino;
- __be64 no_addr;
+  __be64 no_formal_ino;
+  __be64 no_addr;
 };
 #define GFS2_METATYPE_NONE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -78,53 +78,53 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_METATYPE_QC 14
 struct gfs2_meta_header {
- __be32 mh_magic;
- __be32 mh_type;
+  __be32 mh_magic;
+  __be32 mh_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 __pad0;
- __be32 mh_format;
- union {
- __be32 mh_jid;
+  __be64 __pad0;
+  __be32 mh_format;
+  union {
+    __be32 mh_jid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 __pad1;
- };
+    __be32 __pad1;
+  };
 };
 #define GFS2_SB_ADDR 128
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_SB_LOCK 0
 #define GFS2_LOCKNAME_LEN 64
 struct gfs2_sb {
- struct gfs2_meta_header sb_header;
+  struct gfs2_meta_header sb_header;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 sb_fs_format;
- __be32 sb_multihost_format;
- __u32 __pad0;
- __be32 sb_bsize;
+  __be32 sb_fs_format;
+  __be32 sb_multihost_format;
+  __u32 __pad0;
+  __be32 sb_bsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 sb_bsize_shift;
- __u32 __pad1;
- struct gfs2_inum sb_master_dir;
- struct gfs2_inum __pad2;
+  __be32 sb_bsize_shift;
+  __u32 __pad1;
+  struct gfs2_inum sb_master_dir;
+  struct gfs2_inum __pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct gfs2_inum sb_root_dir;
- char sb_lockproto[GFS2_LOCKNAME_LEN];
- char sb_locktable[GFS2_LOCKNAME_LEN];
- struct gfs2_inum __pad3;
+  struct gfs2_inum sb_root_dir;
+  char sb_lockproto[GFS2_LOCKNAME_LEN];
+  char sb_locktable[GFS2_LOCKNAME_LEN];
+  struct gfs2_inum __pad3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct gfs2_inum __pad4;
+  struct gfs2_inum __pad4;
 #define GFS2_HAS_UUID 1
- __u8 sb_uuid[16];
+  __u8 sb_uuid[16];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct gfs2_rindex {
- __be64 ri_addr;
- __be32 ri_length;
- __u32 __pad;
+  __be64 ri_addr;
+  __be32 ri_length;
+  __u32 __pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 ri_data0;
- __be32 ri_data;
- __be32 ri_bitbytes;
- __u8 ri_reserved[64];
+  __be64 ri_data0;
+  __be32 ri_data;
+  __be32 ri_bitbytes;
+  __u8 ri_reserved[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define GFS2_NBBY 4
@@ -143,33 +143,33 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_RGF_TRIMMED 0x00000010
 struct gfs2_rgrp_lvb {
- __be32 rl_magic;
- __be32 rl_flags;
+  __be32 rl_magic;
+  __be32 rl_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 rl_free;
- __be32 rl_dinodes;
- __be64 rl_igeneration;
- __be32 rl_unlinked;
+  __be32 rl_free;
+  __be32 rl_dinodes;
+  __be64 rl_igeneration;
+  __be32 rl_unlinked;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 __pad;
+  __be32 __pad;
 };
 struct gfs2_rgrp {
- struct gfs2_meta_header rg_header;
+  struct gfs2_meta_header rg_header;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 rg_flags;
- __be32 rg_free;
- __be32 rg_dinodes;
- __be32 __pad;
+  __be32 rg_flags;
+  __be32 rg_free;
+  __be32 rg_dinodes;
+  __be32 __pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 rg_igeneration;
- __u8 rg_reserved[80];
+  __be64 rg_igeneration;
+  __u8 rg_reserved[80];
 };
 struct gfs2_quota {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 qu_limit;
- __be64 qu_warn;
- __be64 qu_value;
- __u8 qu_reserved[64];
+  __be64 qu_limit;
+  __be64 qu_warn;
+  __be64 qu_value;
+  __u8 qu_reserved[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define GFS2_MAX_META_HEIGHT 10
@@ -178,23 +178,23 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF2DT(sif) (((sif) & S_IFMT) >> 12)
 enum {
- gfs2fl_Jdata = 0,
- gfs2fl_ExHash = 1,
+  gfs2fl_Jdata = 0,
+  gfs2fl_ExHash = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- gfs2fl_Unused = 2,
- gfs2fl_EaIndirect = 3,
- gfs2fl_Directio = 4,
- gfs2fl_Immutable = 5,
+  gfs2fl_Unused = 2,
+  gfs2fl_EaIndirect = 3,
+  gfs2fl_Directio = 4,
+  gfs2fl_Immutable = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- gfs2fl_AppendOnly = 6,
- gfs2fl_NoAtime = 7,
- gfs2fl_Sync = 8,
- gfs2fl_System = 9,
+  gfs2fl_AppendOnly = 6,
+  gfs2fl_NoAtime = 7,
+  gfs2fl_Sync = 8,
+  gfs2fl_System = 9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- gfs2fl_TopLevel = 10,
- gfs2fl_TruncInProg = 29,
- gfs2fl_InheritDirectio = 30,
- gfs2fl_InheritJdata = 31,
+  gfs2fl_TopLevel = 10,
+  gfs2fl_TruncInProg = 29,
+  gfs2fl_InheritDirectio = 30,
+  gfs2fl_InheritJdata = 31,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define GFS2_DIF_JDATA 0x00000001
@@ -216,153 +216,160 @@
 #define GFS2_DIF_INHERIT_JDATA 0x80000000
 struct gfs2_dinode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct gfs2_meta_header di_header;
- struct gfs2_inum di_num;
- __be32 di_mode;
- __be32 di_uid;
+  struct gfs2_meta_header di_header;
+  struct gfs2_inum di_num;
+  __be32 di_mode;
+  __be32 di_uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 di_gid;
- __be32 di_nlink;
- __be64 di_size;
- __be64 di_blocks;
+  __be32 di_gid;
+  __be32 di_nlink;
+  __be64 di_size;
+  __be64 di_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 di_atime;
- __be64 di_mtime;
- __be64 di_ctime;
- __be32 di_major;
+  __be64 di_atime;
+  __be64 di_mtime;
+  __be64 di_ctime;
+  __be32 di_major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 di_minor;
- __be64 di_goal_meta;
- __be64 di_goal_data;
- __be64 di_generation;
+  __be32 di_minor;
+  __be64 di_goal_meta;
+  __be64 di_goal_data;
+  __be64 di_generation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 di_flags;
- __be32 di_payload_format;
- __u16 __pad1;
- __be16 di_height;
+  __be32 di_flags;
+  __be32 di_payload_format;
+  __u16 __pad1;
+  __be16 di_height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __pad2;
- __u16 __pad3;
- __be16 di_depth;
- __be32 di_entries;
+  __u32 __pad2;
+  __u16 __pad3;
+  __be16 di_depth;
+  __be32 di_entries;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct gfs2_inum __pad4;
- __be64 di_eattr;
- __be32 di_atime_nsec;
- __be32 di_mtime_nsec;
+  struct gfs2_inum __pad4;
+  __be64 di_eattr;
+  __be32 di_atime_nsec;
+  __be32 di_mtime_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 di_ctime_nsec;
- __u8 di_reserved[44];
+  __be32 di_ctime_nsec;
+  __u8 di_reserved[44];
 };
 #define GFS2_FNAMESIZE 255
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_DIRENT_SIZE(name_len) ((sizeof(struct gfs2_dirent) + (name_len) + 7) & ~7)
 struct gfs2_dirent {
- struct gfs2_inum de_inum;
- __be32 de_hash;
+  struct gfs2_inum de_inum;
+  __be32 de_hash;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 de_rec_len;
- __be16 de_name_len;
- __be16 de_type;
- __u8 __pad[14];
+  __be16 de_rec_len;
+  __be16 de_name_len;
+  __be16 de_type;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u8 __pad[14];
+    struct {
+      __be16 de_rahead;
+      __u8 pad2[12];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    };
+  };
 };
 struct gfs2_leaf {
- struct gfs2_meta_header lf_header;
- __be16 lf_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 lf_entries;
- __be32 lf_dirent_format;
- __be64 lf_next;
- union {
+  struct gfs2_meta_header lf_header;
+  __be16 lf_depth;
+  __be16 lf_entries;
+  __be32 lf_dirent_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 lf_reserved[64];
- struct {
- __be64 lf_inode;
- __be32 lf_dist;
+  __be64 lf_next;
+  union {
+    __u8 lf_reserved[64];
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 lf_nsec;
- __be64 lf_sec;
- __u8 lf_reserved2[40];
- };
+      __be64 lf_inode;
+      __be32 lf_dist;
+      __be32 lf_nsec;
+      __be64 lf_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+      __u8 lf_reserved2[40];
+    };
+  };
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_EA_MAX_NAME_LEN 255
 #define GFS2_EA_MAX_DATA_LEN 65536
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_EATYPE_UNUSED 0
 #define GFS2_EATYPE_USR 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_EATYPE_SYS 2
 #define GFS2_EATYPE_SECURITY 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_EATYPE_LAST 3
 #define GFS2_EATYPE_VALID(x) ((x) <= GFS2_EATYPE_LAST)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_EAFLAG_LAST 0x01
 struct gfs2_ea_header {
+  __be32 ea_rec_len;
+  __be32 ea_data_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ea_rec_len;
- __be32 ea_data_len;
- __u8 ea_name_len;
- __u8 ea_type;
+  __u8 ea_name_len;
+  __u8 ea_type;
+  __u8 ea_flags;
+  __u8 ea_num_ptrs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ea_flags;
- __u8 ea_num_ptrs;
- __u32 __pad;
+  __u32 __pad;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_LOG_HEAD_UNMOUNT 0x00000001
 struct gfs2_log_header {
- struct gfs2_meta_header lh_header;
- __be64 lh_sequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 lh_flags;
- __be32 lh_tail;
- __be32 lh_blkno;
- __be32 lh_hash;
+  struct gfs2_meta_header lh_header;
+  __be64 lh_sequence;
+  __be32 lh_flags;
+  __be32 lh_tail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be32 lh_blkno;
+  __be32 lh_hash;
 };
 #define GFS2_LOG_DESC_METADATA 300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_LOG_DESC_REVOKE 301
 #define GFS2_LOG_DESC_JDATA 302
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct gfs2_log_descriptor {
- struct gfs2_meta_header ld_header;
- __be32 ld_type;
- __be32 ld_length;
+  struct gfs2_meta_header ld_header;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ld_data1;
- __be32 ld_data2;
- __u8 ld_reserved[32];
+  __be32 ld_type;
+  __be32 ld_length;
+  __be32 ld_data1;
+  __be32 ld_data2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 ld_reserved[32];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_INUM_QUANTUM 1048576
 struct gfs2_inum_range {
- __be64 ir_start;
- __be64 ir_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be64 ir_start;
+  __be64 ir_length;
 };
 struct gfs2_statfs_change {
- __be64 sc_total;
- __be64 sc_free;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 sc_dinodes;
+  __be64 sc_total;
+  __be64 sc_free;
+  __be64 sc_dinodes;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFS2_QCF_USER 0x00000001
 struct gfs2_quota_change {
+  __be64 qc_change;
+  __be32 qc_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 qc_change;
- __be32 qc_flags;
- __be32 qc_id;
+  __be32 qc_id;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct gfs2_quota_lvb {
- __be32 qb_magic;
- __u32 __pad;
- __be64 qb_limit;
+  __be32 qb_magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 qb_warn;
- __be64 qb_value;
+  __u32 __pad;
+  __be64 qb_limit;
+  __be64 qb_warn;
+  __be64 qb_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/hash_info.h b/libc/kernel/uapi/linux/hash_info.h
index fd3543c..552e048 100644
--- a/libc/kernel/uapi/linux/hash_info.h
+++ b/libc/kernel/uapi/linux/hash_info.h
@@ -19,28 +19,28 @@
 #ifndef _UAPI_LINUX_HASH_INFO_H
 #define _UAPI_LINUX_HASH_INFO_H
 enum hash_algo {
- HASH_ALGO_MD4,
+  HASH_ALGO_MD4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HASH_ALGO_MD5,
- HASH_ALGO_SHA1,
- HASH_ALGO_RIPE_MD_160,
- HASH_ALGO_SHA256,
+  HASH_ALGO_MD5,
+  HASH_ALGO_SHA1,
+  HASH_ALGO_RIPE_MD_160,
+  HASH_ALGO_SHA256,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HASH_ALGO_SHA384,
- HASH_ALGO_SHA512,
- HASH_ALGO_SHA224,
- HASH_ALGO_RIPE_MD_128,
+  HASH_ALGO_SHA384,
+  HASH_ALGO_SHA512,
+  HASH_ALGO_SHA224,
+  HASH_ALGO_RIPE_MD_128,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HASH_ALGO_RIPE_MD_256,
- HASH_ALGO_RIPE_MD_320,
- HASH_ALGO_WP_256,
- HASH_ALGO_WP_384,
+  HASH_ALGO_RIPE_MD_256,
+  HASH_ALGO_RIPE_MD_320,
+  HASH_ALGO_WP_256,
+  HASH_ALGO_WP_384,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HASH_ALGO_WP_512,
- HASH_ALGO_TGR_128,
- HASH_ALGO_TGR_160,
- HASH_ALGO_TGR_192,
+  HASH_ALGO_WP_512,
+  HASH_ALGO_TGR_128,
+  HASH_ALGO_TGR_160,
+  HASH_ALGO_TGR_192,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HASH_ALGO__LAST
+  HASH_ALGO__LAST
 };
 #endif
diff --git a/libc/kernel/uapi/linux/hdlc/ioctl.h b/libc/kernel/uapi/linux/hdlc/ioctl.h
index c47d91e..37ff5c7 100644
--- a/libc/kernel/uapi/linux/hdlc/ioctl.h
+++ b/libc/kernel/uapi/linux/hdlc/ioctl.h
@@ -52,47 +52,47 @@
 #ifndef __ASSEMBLY__
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- unsigned int clock_rate;
- unsigned int clock_type;
- unsigned short loopback;
+  unsigned int clock_rate;
+  unsigned int clock_type;
+  unsigned short loopback;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } sync_serial_settings;
 typedef struct {
- unsigned int clock_rate;
- unsigned int clock_type;
+  unsigned int clock_rate;
+  unsigned int clock_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short loopback;
- unsigned int slot_map;
+  unsigned short loopback;
+  unsigned int slot_map;
 } te1_settings;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short encoding;
- unsigned short parity;
+  unsigned short encoding;
+  unsigned short parity;
 } raw_hdlc_proto;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int t391;
- unsigned int t392;
- unsigned int n391;
- unsigned int n392;
+  unsigned int t391;
+  unsigned int t392;
+  unsigned int n391;
+  unsigned int n392;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int n393;
- unsigned short lmi;
- unsigned short dce;
+  unsigned int n393;
+  unsigned short lmi;
+  unsigned short dce;
 } fr_proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- unsigned int dlci;
+  unsigned int dlci;
 } fr_proto_pvc;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dlci;
- char master[IFNAMSIZ];
-}fr_proto_pvc_info;
+  unsigned int dlci;
+  char master[IFNAMSIZ];
+} fr_proto_pvc_info;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int interval;
- unsigned int timeout;
+  unsigned int interval;
+  unsigned int timeout;
 } cisco_proto;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/hdlcdrv.h b/libc/kernel/uapi/linux/hdlcdrv.h
index a37201d..dadc433 100644
--- a/libc/kernel/uapi/linux/hdlcdrv.h
+++ b/libc/kernel/uapi/linux/hdlcdrv.h
@@ -19,57 +19,57 @@
 #ifndef _UAPI_HDLCDRV_H
 #define _UAPI_HDLCDRV_H
 struct hdlcdrv_params {
- int iobase;
+  int iobase;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int irq;
- int dma;
- int dma2;
- int seriobase;
+  int irq;
+  int dma;
+  int dma2;
+  int seriobase;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pariobase;
- int midiiobase;
+  int pariobase;
+  int midiiobase;
 };
 struct hdlcdrv_channel_params {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tx_delay;
- int tx_tail;
- int slottime;
- int ppersist;
+  int tx_delay;
+  int tx_tail;
+  int slottime;
+  int ppersist;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int fulldup;
+  int fulldup;
 };
 struct hdlcdrv_old_channel_state {
- int ptt;
+  int ptt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int dcd;
- int ptt_keyed;
+  int dcd;
+  int ptt_keyed;
 };
 struct hdlcdrv_channel_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ptt;
- int dcd;
- int ptt_keyed;
- unsigned long tx_packets;
+  int ptt;
+  int dcd;
+  int ptt_keyed;
+  unsigned long tx_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long tx_errors;
- unsigned long rx_packets;
- unsigned long rx_errors;
+  unsigned long tx_errors;
+  unsigned long rx_packets;
+  unsigned long rx_errors;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdlcdrv_ioctl {
- int cmd;
- union {
- struct hdlcdrv_params mp;
+  int cmd;
+  union {
+    struct hdlcdrv_params mp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct hdlcdrv_channel_params cp;
- struct hdlcdrv_channel_state cs;
- struct hdlcdrv_old_channel_state ocs;
- unsigned int calibrate;
+    struct hdlcdrv_channel_params cp;
+    struct hdlcdrv_channel_state cs;
+    struct hdlcdrv_old_channel_state ocs;
+    unsigned int calibrate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char bits;
- char modename[128];
- char drivername[32];
- } data;
+    unsigned char bits;
+    char modename[128];
+    char drivername[32];
+  } data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define HDLCDRVCTL_GETMODEMPAR 0
@@ -89,13 +89,13 @@
 #define HDLCDRVCTL_SETMODE 41
 #define HDLCDRVCTL_MODELIST 42
 #define HDLCDRVCTL_DRIVERNAME 43
-#define HDLCDRV_PARMASK_IOBASE (1<<0)
+#define HDLCDRV_PARMASK_IOBASE (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define HDLCDRV_PARMASK_IRQ (1<<1)
-#define HDLCDRV_PARMASK_DMA (1<<2)
-#define HDLCDRV_PARMASK_DMA2 (1<<3)
-#define HDLCDRV_PARMASK_SERIOBASE (1<<4)
+#define HDLCDRV_PARMASK_IRQ (1 << 1)
+#define HDLCDRV_PARMASK_DMA (1 << 2)
+#define HDLCDRV_PARMASK_DMA2 (1 << 3)
+#define HDLCDRV_PARMASK_SERIOBASE (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define HDLCDRV_PARMASK_PARIOBASE (1<<5)
-#define HDLCDRV_PARMASK_MIDIIOBASE (1<<6)
+#define HDLCDRV_PARMASK_PARIOBASE (1 << 5)
+#define HDLCDRV_PARMASK_MIDIIOBASE (1 << 6)
 #endif
diff --git a/libc/kernel/uapi/linux/hdreg.h b/libc/kernel/uapi/linux/hdreg.h
index 69afe0d..300e013 100644
--- a/libc/kernel/uapi/linux/hdreg.h
+++ b/libc/kernel/uapi/linux/hdreg.h
@@ -24,7 +24,7 @@
 #define HDIO_DRIVE_HOB_HDR_SIZE (8 * sizeof(__u8))
 #define HDIO_DRIVE_TASK_HDR_SIZE (8 * sizeof(__u8))
 #define IDE_DRIVE_TASK_NO_DATA 0
-#define IDE_DRIVE_TASK_INVALID -1
+#define IDE_DRIVE_TASK_INVALID - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDE_DRIVE_TASK_SET_XFER 1
 #define IDE_DRIVE_TASK_IN 2
@@ -39,81 +39,81 @@
 typedef unsigned char task_ioreg_t;
 typedef unsigned long sata_ioreg_t;
 typedef union ide_reg_valid_s {
- unsigned all : 16;
+  unsigned all : 16;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- unsigned data : 1;
- unsigned error_feature : 1;
- unsigned sector : 1;
+  struct {
+    unsigned data : 1;
+    unsigned error_feature : 1;
+    unsigned sector : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned nsector : 1;
- unsigned lcyl : 1;
- unsigned hcyl : 1;
- unsigned select : 1;
+    unsigned nsector : 1;
+    unsigned lcyl : 1;
+    unsigned hcyl : 1;
+    unsigned select : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned status_command : 1;
- unsigned data_hob : 1;
- unsigned error_feature_hob : 1;
- unsigned sector_hob : 1;
+    unsigned status_command : 1;
+    unsigned data_hob : 1;
+    unsigned error_feature_hob : 1;
+    unsigned sector_hob : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned nsector_hob : 1;
- unsigned lcyl_hob : 1;
- unsigned hcyl_hob : 1;
- unsigned select_hob : 1;
+    unsigned nsector_hob : 1;
+    unsigned lcyl_hob : 1;
+    unsigned hcyl_hob : 1;
+    unsigned select_hob : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned control_hob : 1;
- } b;
+    unsigned control_hob : 1;
+  } b;
 } ide_reg_valid_t;
 typedef struct ide_task_request_s {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 io_ports[8];
- __u8 hob_ports[8];
- ide_reg_valid_t out_flags;
- ide_reg_valid_t in_flags;
+  __u8 io_ports[8];
+  __u8 hob_ports[8];
+  ide_reg_valid_t out_flags;
+  ide_reg_valid_t in_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int data_phase;
- int req_cmd;
- unsigned long out_size;
- unsigned long in_size;
+  int data_phase;
+  int req_cmd;
+  unsigned long out_size;
+  unsigned long in_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ide_task_request_t;
 typedef struct ide_ioctl_request_s {
- ide_task_request_t *task_request;
- unsigned char *out_buffer;
+  ide_task_request_t * task_request;
+  unsigned char * out_buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char *in_buffer;
+  unsigned char * in_buffer;
 } ide_ioctl_request_t;
 struct hd_drive_cmd_hdr {
- __u8 command;
+  __u8 command;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sector_number;
- __u8 feature;
- __u8 sector_count;
+  __u8 sector_number;
+  __u8 feature;
+  __u8 sector_count;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct hd_drive_task_hdr {
- __u8 data;
- __u8 feature;
- __u8 sector_count;
+  __u8 data;
+  __u8 feature;
+  __u8 sector_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sector_number;
- __u8 low_cylinder;
- __u8 high_cylinder;
- __u8 device_head;
+  __u8 sector_number;
+  __u8 low_cylinder;
+  __u8 high_cylinder;
+  __u8 device_head;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 command;
+  __u8 command;
 } task_struct_t;
 typedef struct hd_drive_hob_hdr {
- __u8 data;
+  __u8 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 feature;
- __u8 sector_count;
- __u8 sector_number;
- __u8 low_cylinder;
+  __u8 feature;
+  __u8 sector_count;
+  __u8 sector_number;
+  __u8 low_cylinder;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 high_cylinder;
- __u8 device_head;
- __u8 control;
+  __u8 high_cylinder;
+  __u8 device_head;
+  __u8 control;
 } hob_struct_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKFILE_NO_DATA 0x0000
@@ -312,11 +312,11 @@
 #define SECURITY_DISABLE_PASSWORD 0xBF
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hd_geometry {
- unsigned char heads;
- unsigned char sectors;
- unsigned short cylinders;
+  unsigned char heads;
+  unsigned char sectors;
+  unsigned short cylinders;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long start;
+  unsigned long start;
 };
 #define HDIO_GETGEO 0x0301
 #define HDIO_GET_UNMASKINTR 0x0302
@@ -366,112 +366,112 @@
 #define HDIO_SET_ADDRESS 0x032f
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BUSSTATE_OFF = 0,
- BUSSTATE_ON,
- BUSSTATE_TRISTATE
+  BUSSTATE_OFF = 0,
+  BUSSTATE_ON,
+  BUSSTATE_TRISTATE
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NEW_HD_DRIVE_ID
 struct hd_driveid {
- unsigned short config;
- unsigned short cyls;
+  unsigned short config;
+  unsigned short cyls;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short reserved2;
- unsigned short heads;
- unsigned short track_bytes;
- unsigned short sector_bytes;
+  unsigned short reserved2;
+  unsigned short heads;
+  unsigned short track_bytes;
+  unsigned short sector_bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short sectors;
- unsigned short vendor0;
- unsigned short vendor1;
- unsigned short vendor2;
+  unsigned short sectors;
+  unsigned short vendor0;
+  unsigned short vendor1;
+  unsigned short vendor2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char serial_no[20];
- unsigned short buf_type;
- unsigned short buf_size;
- unsigned short ecc_bytes;
+  unsigned char serial_no[20];
+  unsigned short buf_type;
+  unsigned short buf_size;
+  unsigned short ecc_bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char fw_rev[8];
- unsigned char model[40];
- unsigned char max_multsect;
- unsigned char vendor3;
+  unsigned char fw_rev[8];
+  unsigned char model[40];
+  unsigned char max_multsect;
+  unsigned char vendor3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short dword_io;
- unsigned char vendor4;
- unsigned char capability;
- unsigned short reserved50;
+  unsigned short dword_io;
+  unsigned char vendor4;
+  unsigned char capability;
+  unsigned short reserved50;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char vendor5;
- unsigned char tPIO;
- unsigned char vendor6;
- unsigned char tDMA;
+  unsigned char vendor5;
+  unsigned char tPIO;
+  unsigned char vendor6;
+  unsigned char tDMA;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short field_valid;
- unsigned short cur_cyls;
- unsigned short cur_heads;
- unsigned short cur_sectors;
+  unsigned short field_valid;
+  unsigned short cur_cyls;
+  unsigned short cur_heads;
+  unsigned short cur_sectors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short cur_capacity0;
- unsigned short cur_capacity1;
- unsigned char multsect;
- unsigned char multsect_valid;
+  unsigned short cur_capacity0;
+  unsigned short cur_capacity1;
+  unsigned char multsect;
+  unsigned char multsect_valid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int lba_capacity;
- unsigned short dma_1word;
- unsigned short dma_mword;
- unsigned short eide_pio_modes;
+  unsigned int lba_capacity;
+  unsigned short dma_1word;
+  unsigned short dma_mword;
+  unsigned short eide_pio_modes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short eide_dma_min;
- unsigned short eide_dma_time;
- unsigned short eide_pio;
- unsigned short eide_pio_iordy;
+  unsigned short eide_dma_min;
+  unsigned short eide_dma_time;
+  unsigned short eide_pio;
+  unsigned short eide_pio_iordy;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short words69_70[2];
- unsigned short words71_74[4];
- unsigned short queue_depth;
- unsigned short words76_79[4];
+  unsigned short words69_70[2];
+  unsigned short words71_74[4];
+  unsigned short queue_depth;
+  unsigned short words76_79[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short major_rev_num;
- unsigned short minor_rev_num;
- unsigned short command_set_1;
- unsigned short command_set_2;
+  unsigned short major_rev_num;
+  unsigned short minor_rev_num;
+  unsigned short command_set_1;
+  unsigned short command_set_2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short cfsse;
- unsigned short cfs_enable_1;
- unsigned short cfs_enable_2;
- unsigned short csf_default;
+  unsigned short cfsse;
+  unsigned short cfs_enable_1;
+  unsigned short cfs_enable_2;
+  unsigned short csf_default;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short dma_ultra;
- unsigned short trseuc;
- unsigned short trsEuc;
- unsigned short CurAPMvalues;
+  unsigned short dma_ultra;
+  unsigned short trseuc;
+  unsigned short trsEuc;
+  unsigned short CurAPMvalues;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short mprc;
- unsigned short hw_config;
- unsigned short acoustic;
- unsigned short msrqs;
+  unsigned short mprc;
+  unsigned short hw_config;
+  unsigned short acoustic;
+  unsigned short msrqs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short sxfert;
- unsigned short sal;
- unsigned int spg;
- unsigned long long lba_capacity_2;
+  unsigned short sxfert;
+  unsigned short sal;
+  unsigned int spg;
+  unsigned long long lba_capacity_2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short words104_125[22];
- unsigned short last_lun;
- unsigned short word127;
- unsigned short dlf;
+  unsigned short words104_125[22];
+  unsigned short last_lun;
+  unsigned short word127;
+  unsigned short dlf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short csfo;
- unsigned short words130_155[26];
- unsigned short word156;
- unsigned short words157_159[3];
+  unsigned short csfo;
+  unsigned short words130_155[26];
+  unsigned short word156;
+  unsigned short words157_159[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short cfa_power;
- unsigned short words161_175[15];
- unsigned short words176_205[30];
- unsigned short words206_254[49];
+  unsigned short cfa_power;
+  unsigned short words161_175[15];
+  unsigned short words176_205[30];
+  unsigned short words206_254[49];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short integrity_word;
+  unsigned short integrity_word;
 };
 #define IDE_NICE_DSC_OVERLAP (0)
 #define IDE_NICE_ATAPI_OVERLAP (1)
diff --git a/libc/kernel/uapi/linux/hiddev.h b/libc/kernel/uapi/linux/hiddev.h
index e4260fe..6f494b1 100644
--- a/libc/kernel/uapi/linux/hiddev.h
+++ b/libc/kernel/uapi/linux/hiddev.h
@@ -21,40 +21,40 @@
 #include <linux/types.h>
 struct hiddev_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned hid;
- signed int value;
+  unsigned hid;
+  signed int value;
 };
 struct hiddev_devinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bustype;
- __u32 busnum;
- __u32 devnum;
- __u32 ifnum;
+  __u32 bustype;
+  __u32 busnum;
+  __u32 devnum;
+  __u32 ifnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s16 vendor;
- __s16 product;
- __s16 version;
- __u32 num_applications;
+  __s16 vendor;
+  __s16 product;
+  __s16 version;
+  __u32 num_applications;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct hiddev_collection_info {
- __u32 index;
- __u32 type;
+  __u32 index;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 usage;
- __u32 level;
+  __u32 usage;
+  __u32 level;
 };
 #define HID_STRING_SIZE 256
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hiddev_string_descriptor {
- __s32 index;
- char value[HID_STRING_SIZE];
+  __s32 index;
+  char value[HID_STRING_SIZE];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hiddev_report_info {
- __u32 report_type;
- __u32 report_id;
- __u32 num_fields;
+  __u32 report_type;
+  __u32 report_id;
+  __u32 num_fields;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define HID_REPORT_ID_UNKNOWN 0xffffffff
@@ -71,23 +71,23 @@
 #define HID_REPORT_TYPE_MAX 3
 struct hiddev_field_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 report_type;
- __u32 report_id;
- __u32 field_index;
- __u32 maxusage;
+  __u32 report_type;
+  __u32 report_id;
+  __u32 field_index;
+  __u32 maxusage;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 physical;
- __u32 logical;
- __u32 application;
+  __u32 flags;
+  __u32 physical;
+  __u32 logical;
+  __u32 application;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 logical_minimum;
- __s32 logical_maximum;
- __s32 physical_minimum;
- __s32 physical_maximum;
+  __s32 logical_minimum;
+  __s32 logical_maximum;
+  __s32 physical_minimum;
+  __s32 physical_maximum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 unit_exponent;
- __u32 unit;
+  __u32 unit_exponent;
+  __u32 unit;
 };
 #define HID_FIELD_CONSTANT 0x001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -102,21 +102,21 @@
 #define HID_FIELD_BUFFERED_BYTE 0x100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hiddev_usage_ref {
- __u32 report_type;
- __u32 report_id;
- __u32 field_index;
+  __u32 report_type;
+  __u32 report_id;
+  __u32 field_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 usage_index;
- __u32 usage_code;
- __s32 value;
+  __u32 usage_index;
+  __u32 usage_code;
+  __s32 value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HID_MAX_MULTI_USAGES 1024
 struct hiddev_usage_ref_multi {
- struct hiddev_usage_ref uref;
- __u32 num_values;
+  struct hiddev_usage_ref uref;
+  __u32 num_values;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 values[HID_MAX_MULTI_USAGES];
+  __s32 values[HID_MAX_MULTI_USAGES];
 };
 #define HID_FIELD_INDEX_NONE 0xffffffff
 #define HID_VERSION 0x010004
diff --git a/libc/kernel/uapi/linux/hidraw.h b/libc/kernel/uapi/linux/hidraw.h
index 0ffacea..7d60d0d 100644
--- a/libc/kernel/uapi/linux/hidraw.h
+++ b/libc/kernel/uapi/linux/hidraw.h
@@ -22,14 +22,14 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hidraw_report_descriptor {
- __u32 size;
- __u8 value[HID_MAX_DESCRIPTOR_SIZE];
+  __u32 size;
+  __u8 value[HID_MAX_DESCRIPTOR_SIZE];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hidraw_devinfo {
- __u32 bustype;
- __s16 vendor;
- __s16 product;
+  __u32 bustype;
+  __s16 vendor;
+  __s16 product;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define HIDIOCGRDESCSIZE _IOR('H', 0x01, int)
@@ -38,8 +38,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIDIOCGRAWNAME(len) _IOC(_IOC_READ, 'H', 0x04, len)
 #define HIDIOCGRAWPHYS(len) _IOC(_IOC_READ, 'H', 0x05, len)
-#define HIDIOCSFEATURE(len) _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x06, len)
-#define HIDIOCGFEATURE(len) _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x07, len)
+#define HIDIOCSFEATURE(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x06, len)
+#define HIDIOCGFEATURE(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x07, len)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIDRAW_FIRST_MINOR 0
 #define HIDRAW_MAX_DEVICES 64
diff --git a/libc/kernel/uapi/linux/hpet.h b/libc/kernel/uapi/linux/hpet.h
index 1925428..98bf725 100644
--- a/libc/kernel/uapi/linux/hpet.h
+++ b/libc/kernel/uapi/linux/hpet.h
@@ -21,10 +21,10 @@
 #include <linux/compiler.h>
 struct hpet_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long hi_ireqfreq;
- unsigned long hi_flags;
- unsigned short hi_hpet;
- unsigned short hi_timer;
+  unsigned long hi_ireqfreq;
+  unsigned long hi_flags;
+  unsigned short hi_hpet;
+  unsigned short hi_timer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define HPET_INFO_PERIODIC 0x0010
diff --git a/libc/kernel/uapi/linux/hsi/hsi_char.h b/libc/kernel/uapi/linux/hsi/hsi_char.h
index 9c97e29..bceabfc 100644
--- a/libc/kernel/uapi/linux/hsi/hsi_char.h
+++ b/libc/kernel/uapi/linux/hsi/hsi_char.h
@@ -19,10 +19,10 @@
 #ifndef __HSI_CHAR_H
 #define __HSI_CHAR_H
 #define HSI_CHAR_MAGIC 'k'
-#define HSC_IOW(num, dtype) _IOW(HSI_CHAR_MAGIC, num, dtype)
+#define HSC_IOW(num,dtype) _IOW(HSI_CHAR_MAGIC, num, dtype)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define HSC_IOR(num, dtype) _IOR(HSI_CHAR_MAGIC, num, dtype)
-#define HSC_IOWR(num, dtype) _IOWR(HSI_CHAR_MAGIC, num, dtype)
+#define HSC_IOR(num,dtype) _IOR(HSI_CHAR_MAGIC, num, dtype)
+#define HSC_IOWR(num,dtype) _IOWR(HSI_CHAR_MAGIC, num, dtype)
 #define HSC_IO(num) _IO(HSI_CHAR_MAGIC, num)
 #define HSC_RESET HSC_IO(16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -43,17 +43,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HSC_ARB_PRIO 1
 struct hsc_rx_config {
- uint32_t mode;
- uint32_t flow;
+  uint32_t mode;
+  uint32_t flow;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t channels;
+  uint32_t channels;
 };
 struct hsc_tx_config {
- uint32_t mode;
+  uint32_t mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t channels;
- uint32_t speed;
- uint32_t arb_mode;
+  uint32_t channels;
+  uint32_t speed;
+  uint32_t arb_mode;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/hsr_netlink.h b/libc/kernel/uapi/linux/hsr_netlink.h
index bf47d64..728ce36 100644
--- a/libc/kernel/uapi/linux/hsr_netlink.h
+++ b/libc/kernel/uapi/linux/hsr_netlink.h
@@ -19,35 +19,35 @@
 #ifndef __UAPI_HSR_NETLINK_H
 #define __UAPI_HSR_NETLINK_H
 enum {
- HSR_A_UNSPEC,
+  HSR_A_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HSR_A_NODE_ADDR,
- HSR_A_IFINDEX,
- HSR_A_IF1_AGE,
- HSR_A_IF2_AGE,
+  HSR_A_NODE_ADDR,
+  HSR_A_IFINDEX,
+  HSR_A_IF1_AGE,
+  HSR_A_IF2_AGE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HSR_A_NODE_ADDR_B,
- HSR_A_IF1_SEQ,
- HSR_A_IF2_SEQ,
- HSR_A_IF1_IFINDEX,
+  HSR_A_NODE_ADDR_B,
+  HSR_A_IF1_SEQ,
+  HSR_A_IF2_SEQ,
+  HSR_A_IF1_IFINDEX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HSR_A_IF2_IFINDEX,
- HSR_A_ADDR_B_IFINDEX,
- __HSR_A_MAX,
+  HSR_A_IF2_IFINDEX,
+  HSR_A_ADDR_B_IFINDEX,
+  __HSR_A_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HSR_A_MAX (__HSR_A_MAX - 1)
 enum {
- HSR_C_UNSPEC,
- HSR_C_RING_ERROR,
+  HSR_C_UNSPEC,
+  HSR_C_RING_ERROR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HSR_C_NODE_DOWN,
- HSR_C_GET_NODE_STATUS,
- HSR_C_SET_NODE_STATUS,
- HSR_C_GET_NODE_LIST,
+  HSR_C_NODE_DOWN,
+  HSR_C_GET_NODE_STATUS,
+  HSR_C_SET_NODE_STATUS,
+  HSR_C_GET_NODE_LIST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HSR_C_SET_NODE_LIST,
- __HSR_C_MAX,
+  HSR_C_SET_NODE_LIST,
+  __HSR_C_MAX,
 };
 #define HSR_C_MAX (__HSR_C_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/hw_breakpoint.h b/libc/kernel/uapi/linux/hw_breakpoint.h
index 2f61062..fecf449 100644
--- a/libc/kernel/uapi/linux/hw_breakpoint.h
+++ b/libc/kernel/uapi/linux/hw_breakpoint.h
@@ -19,27 +19,27 @@
 #ifndef _UAPI_LINUX_HW_BREAKPOINT_H
 #define _UAPI_LINUX_HW_BREAKPOINT_H
 enum {
- HW_BREAKPOINT_LEN_1 = 1,
+  HW_BREAKPOINT_LEN_1 = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HW_BREAKPOINT_LEN_2 = 2,
- HW_BREAKPOINT_LEN_4 = 4,
- HW_BREAKPOINT_LEN_8 = 8,
+  HW_BREAKPOINT_LEN_2 = 2,
+  HW_BREAKPOINT_LEN_4 = 4,
+  HW_BREAKPOINT_LEN_8 = 8,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- HW_BREAKPOINT_EMPTY = 0,
- HW_BREAKPOINT_R = 1,
- HW_BREAKPOINT_W = 2,
+  HW_BREAKPOINT_EMPTY = 0,
+  HW_BREAKPOINT_R = 1,
+  HW_BREAKPOINT_W = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HW_BREAKPOINT_RW = HW_BREAKPOINT_R | HW_BREAKPOINT_W,
- HW_BREAKPOINT_X = 4,
- HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
+  HW_BREAKPOINT_RW = HW_BREAKPOINT_R | HW_BREAKPOINT_W,
+  HW_BREAKPOINT_X = 4,
+  HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum bp_type_idx {
- TYPE_INST = 0,
- TYPE_DATA = 1,
- TYPE_MAX
+  TYPE_INST = 0,
+  TYPE_DATA = 1,
+  TYPE_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/hyperv.h b/libc/kernel/uapi/linux/hyperv.h
new file mode 100644
index 0000000..49b48ee
--- /dev/null
+++ b/libc/kernel/uapi/linux/hyperv.h
@@ -0,0 +1,234 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_HYPERV_H
+#define _UAPI_HYPERV_H
+#include <linux/uuid.h>
+#define UTIL_FW_MINOR 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UTIL_WS2K8_FW_MAJOR 1
+#define UTIL_WS2K8_FW_VERSION (UTIL_WS2K8_FW_MAJOR << 16 | UTIL_FW_MINOR)
+#define UTIL_FW_MAJOR 3
+#define UTIL_FW_VERSION (UTIL_FW_MAJOR << 16 | UTIL_FW_MINOR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VSS_OP_REGISTER 128
+enum hv_vss_op {
+  VSS_OP_CREATE = 0,
+  VSS_OP_DELETE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VSS_OP_HOT_BACKUP,
+  VSS_OP_GET_DM_INFO,
+  VSS_OP_BU_COMPLETE,
+  VSS_OP_FREEZE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VSS_OP_THAW,
+  VSS_OP_AUTO_RECOVER,
+  VSS_OP_COUNT
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct hv_vss_hdr {
+  __u8 operation;
+  __u8 reserved[7];
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VSS_HBU_NO_AUTO_RECOVERY 0x00000005
+struct hv_vss_check_feature {
+  __u32 flags;
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct hv_vss_check_dm_info {
+  __u32 flags;
+} __attribute__((packed));
+struct hv_vss_msg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
+    struct hv_vss_hdr vss_hdr;
+    int error;
+  };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
+    struct hv_vss_check_feature vss_cf;
+    struct hv_vss_check_dm_info dm_info;
+  };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
+#define FCOPY_VERSION_0 0
+#define FCOPY_CURRENT_VERSION FCOPY_VERSION_0
+#define W_MAX_PATH 260
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum hv_fcopy_op {
+  START_FILE_COPY = 0,
+  WRITE_TO_FILE,
+  COMPLETE_FCOPY,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CANCEL_FCOPY,
+};
+struct hv_fcopy_hdr {
+  __u32 operation;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uuid_le service_id0;
+  uuid_le service_id1;
+} __attribute__((packed));
+#define OVER_WRITE 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CREATE_PATH 0x2
+struct hv_start_fcopy {
+  struct hv_fcopy_hdr hdr;
+  __u16 file_name[W_MAX_PATH];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 path_name[W_MAX_PATH];
+  __u32 copy_flags;
+  __u64 file_size;
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DATA_FRAGMENT (6 * 1024)
+struct hv_do_fcopy {
+  struct hv_fcopy_hdr hdr;
+  __u32 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 offset;
+  __u32 size;
+  __u8 data[DATA_FRAGMENT];
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HV_KVP_EXCHANGE_MAX_VALUE_SIZE (2048)
+#define HV_KVP_EXCHANGE_MAX_KEY_SIZE (512)
+#define REG_SZ 1
+#define REG_U32 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define REG_U64 8
+#define KVP_OP_REGISTER 4
+#define KVP_OP_REGISTER1 100
+enum hv_kvp_exchg_op {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KVP_OP_GET = 0,
+  KVP_OP_SET,
+  KVP_OP_DELETE,
+  KVP_OP_ENUMERATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KVP_OP_GET_IP_INFO,
+  KVP_OP_SET_IP_INFO,
+  KVP_OP_COUNT
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum hv_kvp_exchg_pool {
+  KVP_POOL_EXTERNAL = 0,
+  KVP_POOL_GUEST,
+  KVP_POOL_AUTO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KVP_POOL_AUTO_EXTERNAL,
+  KVP_POOL_AUTO_INTERNAL,
+  KVP_POOL_COUNT
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HV_S_OK 0x00000000
+#define HV_E_FAIL 0x80004005
+#define HV_S_CONT 0x80070103
+#define HV_ERROR_NOT_SUPPORTED 0x80070032
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HV_ERROR_MACHINE_LOCKED 0x800704F7
+#define HV_ERROR_DEVICE_NOT_CONNECTED 0x8007048F
+#define HV_INVALIDARG 0x80070057
+#define HV_GUID_NOTFOUND 0x80041002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HV_ERROR_ALREADY_EXISTS 0x80070050
+#define ADDR_FAMILY_NONE 0x00
+#define ADDR_FAMILY_IPV4 0x01
+#define ADDR_FAMILY_IPV6 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAX_ADAPTER_ID_SIZE 128
+#define MAX_IP_ADDR_SIZE 1024
+#define MAX_GATEWAY_SIZE 512
+struct hv_kvp_ipaddr_value {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 adapter_id[MAX_ADAPTER_ID_SIZE];
+  __u8 addr_family;
+  __u8 dhcp_enabled;
+  __u16 ip_addr[MAX_IP_ADDR_SIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 sub_net[MAX_IP_ADDR_SIZE];
+  __u16 gate_way[MAX_GATEWAY_SIZE];
+  __u16 dns_addr[MAX_IP_ADDR_SIZE];
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct hv_kvp_hdr {
+  __u8 operation;
+  __u8 pool;
+  __u16 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
+struct hv_kvp_exchg_msg_value {
+  __u32 value_type;
+  __u32 key_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 value_size;
+  __u8 key[HV_KVP_EXCHANGE_MAX_KEY_SIZE];
+  union {
+    __u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u32 value_u32;
+    __u64 value_u64;
+  };
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct hv_kvp_msg_enumerate {
+  __u32 index;
+  struct hv_kvp_exchg_msg_value data;
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct hv_kvp_msg_get {
+  struct hv_kvp_exchg_msg_value data;
+};
+struct hv_kvp_msg_set {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct hv_kvp_exchg_msg_value data;
+};
+struct hv_kvp_msg_delete {
+  __u32 key_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 key[HV_KVP_EXCHANGE_MAX_KEY_SIZE];
+};
+struct hv_kvp_register {
+  __u8 version[HV_KVP_EXCHANGE_MAX_KEY_SIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct hv_kvp_msg {
+  union {
+    struct hv_kvp_hdr kvp_hdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    int error;
+  };
+  union {
+    struct hv_kvp_msg_get kvp_get;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct hv_kvp_msg_set kvp_set;
+    struct hv_kvp_msg_delete kvp_delete;
+    struct hv_kvp_msg_enumerate kvp_enum_data;
+    struct hv_kvp_ipaddr_value kvp_ip_val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct hv_kvp_register kvp_register;
+  } body;
+} __attribute__((packed));
+struct hv_kvp_ip_msg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 operation;
+  __u8 pool;
+  struct hv_kvp_ipaddr_value kvp_ip_val;
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/i2c-dev.h b/libc/kernel/uapi/linux/i2c-dev.h
index 92db53d..626f4ee 100644
--- a/libc/kernel/uapi/linux/i2c-dev.h
+++ b/libc/kernel/uapi/linux/i2c-dev.h
@@ -33,16 +33,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_SMBUS 0x0720
 struct i2c_smbus_ioctl_data {
- __u8 read_write;
- __u8 command;
+  __u8 read_write;
+  __u8 command;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 size;
- union i2c_smbus_data __user *data;
+  __u32 size;
+  union i2c_smbus_data __user * data;
 };
 struct i2c_rdwr_ioctl_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct i2c_msg __user *msgs;
- __u32 nmsgs;
+  struct i2c_msg __user * msgs;
+  __u32 nmsgs;
 };
 #define I2C_RDRW_IOCTL_MAX_MSGS 42
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/i2c.h b/libc/kernel/uapi/linux/i2c.h
index 187f92f..b9a7bf8 100644
--- a/libc/kernel/uapi/linux/i2c.h
+++ b/libc/kernel/uapi/linux/i2c.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct i2c_msg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 addr;
- __u16 flags;
+  __u16 addr;
+  __u16 flags;
 #define I2C_M_TEN 0x0010
 #define I2C_M_RD 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -33,8 +33,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_M_NO_RD_ACK 0x0800
 #define I2C_M_RECV_LEN 0x0400
- __u16 len;
- __u8 *buf;
+  __u16 len;
+  __u8 * buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define I2C_FUNC_I2C 0x00000001
@@ -59,20 +59,20 @@
 #define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000
 #define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000
 #define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000
-#define I2C_FUNC_SMBUS_BYTE (I2C_FUNC_SMBUS_READ_BYTE |   I2C_FUNC_SMBUS_WRITE_BYTE)
+#define I2C_FUNC_SMBUS_BYTE (I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I2C_FUNC_SMBUS_BYTE_DATA (I2C_FUNC_SMBUS_READ_BYTE_DATA |   I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
-#define I2C_FUNC_SMBUS_WORD_DATA (I2C_FUNC_SMBUS_READ_WORD_DATA |   I2C_FUNC_SMBUS_WRITE_WORD_DATA)
-#define I2C_FUNC_SMBUS_BLOCK_DATA (I2C_FUNC_SMBUS_READ_BLOCK_DATA |   I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
-#define I2C_FUNC_SMBUS_I2C_BLOCK (I2C_FUNC_SMBUS_READ_I2C_BLOCK |   I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
+#define I2C_FUNC_SMBUS_BYTE_DATA (I2C_FUNC_SMBUS_READ_BYTE_DATA | I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
+#define I2C_FUNC_SMBUS_WORD_DATA (I2C_FUNC_SMBUS_READ_WORD_DATA | I2C_FUNC_SMBUS_WRITE_WORD_DATA)
+#define I2C_FUNC_SMBUS_BLOCK_DATA (I2C_FUNC_SMBUS_READ_BLOCK_DATA | I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
+#define I2C_FUNC_SMBUS_I2C_BLOCK (I2C_FUNC_SMBUS_READ_I2C_BLOCK | I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I2C_FUNC_SMBUS_EMUL (I2C_FUNC_SMBUS_QUICK |   I2C_FUNC_SMBUS_BYTE |   I2C_FUNC_SMBUS_BYTE_DATA |   I2C_FUNC_SMBUS_WORD_DATA |   I2C_FUNC_SMBUS_PROC_CALL |   I2C_FUNC_SMBUS_WRITE_BLOCK_DATA |   I2C_FUNC_SMBUS_I2C_BLOCK |   I2C_FUNC_SMBUS_PEC)
+#define I2C_FUNC_SMBUS_EMUL (I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA | I2C_FUNC_SMBUS_PROC_CALL | I2C_FUNC_SMBUS_WRITE_BLOCK_DATA | I2C_FUNC_SMBUS_I2C_BLOCK | I2C_FUNC_SMBUS_PEC)
 #define I2C_SMBUS_BLOCK_MAX 32
 union i2c_smbus_data {
- __u8 byte;
+  __u8 byte;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 word;
- __u8 block[I2C_SMBUS_BLOCK_MAX + 2];
+  __u16 word;
+  __u8 block[I2C_SMBUS_BLOCK_MAX + 2];
 };
 #define I2C_SMBUS_READ 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/i2o-dev.h b/libc/kernel/uapi/linux/i2o-dev.h
index e024997..9328cad 100644
--- a/libc/kernel/uapi/linux/i2o-dev.h
+++ b/libc/kernel/uapi/linux/i2o-dev.h
@@ -23,97 +23,97 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #define I2O_MAGIC_NUMBER 'i'
-#define I2OGETIOPS _IOR(I2O_MAGIC_NUMBER,0,__u8[MAX_I2O_CONTROLLERS])
-#define I2OHRTGET _IOWR(I2O_MAGIC_NUMBER,1,struct i2o_cmd_hrtlct)
+#define I2OGETIOPS _IOR(I2O_MAGIC_NUMBER, 0, __u8[MAX_I2O_CONTROLLERS])
+#define I2OHRTGET _IOWR(I2O_MAGIC_NUMBER, 1, struct i2o_cmd_hrtlct)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I2OLCTGET _IOWR(I2O_MAGIC_NUMBER,2,struct i2o_cmd_hrtlct)
-#define I2OPARMSET _IOWR(I2O_MAGIC_NUMBER,3,struct i2o_cmd_psetget)
-#define I2OPARMGET _IOWR(I2O_MAGIC_NUMBER,4,struct i2o_cmd_psetget)
-#define I2OSWDL _IOWR(I2O_MAGIC_NUMBER,5,struct i2o_sw_xfer)
+#define I2OLCTGET _IOWR(I2O_MAGIC_NUMBER, 2, struct i2o_cmd_hrtlct)
+#define I2OPARMSET _IOWR(I2O_MAGIC_NUMBER, 3, struct i2o_cmd_psetget)
+#define I2OPARMGET _IOWR(I2O_MAGIC_NUMBER, 4, struct i2o_cmd_psetget)
+#define I2OSWDL _IOWR(I2O_MAGIC_NUMBER, 5, struct i2o_sw_xfer)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I2OSWUL _IOWR(I2O_MAGIC_NUMBER,6,struct i2o_sw_xfer)
-#define I2OSWDEL _IOWR(I2O_MAGIC_NUMBER,7,struct i2o_sw_xfer)
-#define I2OVALIDATE _IOR(I2O_MAGIC_NUMBER,8,__u32)
-#define I2OHTML _IOWR(I2O_MAGIC_NUMBER,9,struct i2o_html)
+#define I2OSWUL _IOWR(I2O_MAGIC_NUMBER, 6, struct i2o_sw_xfer)
+#define I2OSWDEL _IOWR(I2O_MAGIC_NUMBER, 7, struct i2o_sw_xfer)
+#define I2OVALIDATE _IOR(I2O_MAGIC_NUMBER, 8, __u32)
+#define I2OHTML _IOWR(I2O_MAGIC_NUMBER, 9, struct i2o_html)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I2OEVTREG _IOW(I2O_MAGIC_NUMBER,10,struct i2o_evt_id)
-#define I2OEVTGET _IOR(I2O_MAGIC_NUMBER,11,struct i2o_evt_info)
-#define I2OPASSTHRU _IOR(I2O_MAGIC_NUMBER,12,struct i2o_cmd_passthru)
-#define I2OPASSTHRU32 _IOR(I2O_MAGIC_NUMBER,12,struct i2o_cmd_passthru32)
+#define I2OEVTREG _IOW(I2O_MAGIC_NUMBER, 10, struct i2o_evt_id)
+#define I2OEVTGET _IOR(I2O_MAGIC_NUMBER, 11, struct i2o_evt_info)
+#define I2OPASSTHRU _IOR(I2O_MAGIC_NUMBER, 12, struct i2o_cmd_passthru)
+#define I2OPASSTHRU32 _IOR(I2O_MAGIC_NUMBER, 12, struct i2o_cmd_passthru32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2o_cmd_passthru32 {
- unsigned int iop;
- __u32 msg;
+  unsigned int iop;
+  __u32 msg;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2o_cmd_passthru {
- unsigned int iop;
- void __user *msg;
+  unsigned int iop;
+  void __user * msg;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2o_cmd_hrtlct {
- unsigned int iop;
- void __user *resbuf;
- unsigned int __user *reslen;
+  unsigned int iop;
+  void __user * resbuf;
+  unsigned int __user * reslen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct i2o_cmd_psetget {
- unsigned int iop;
- unsigned int tid;
+  unsigned int iop;
+  unsigned int tid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *opbuf;
- unsigned int oplen;
- void __user *resbuf;
- unsigned int __user *reslen;
+  void __user * opbuf;
+  unsigned int oplen;
+  void __user * resbuf;
+  unsigned int __user * reslen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct i2o_sw_xfer {
- unsigned int iop;
- unsigned char flags;
+  unsigned int iop;
+  unsigned char flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char sw_type;
- unsigned int sw_id;
- void __user *buf;
- unsigned int __user *swlen;
+  unsigned char sw_type;
+  unsigned int sw_id;
+  void __user * buf;
+  unsigned int __user * swlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int __user *maxfrag;
- unsigned int __user *curfrag;
+  unsigned int __user * maxfrag;
+  unsigned int __user * curfrag;
 };
 struct i2o_html {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int iop;
- unsigned int tid;
- unsigned int page;
- void __user *resbuf;
+  unsigned int iop;
+  unsigned int tid;
+  unsigned int page;
+  void __user * resbuf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int __user *reslen;
- void __user *qbuf;
- unsigned int qlen;
+  unsigned int __user * reslen;
+  void __user * qbuf;
+  unsigned int qlen;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2O_EVT_Q_LEN 32
 struct i2o_evt_id {
- unsigned int iop;
- unsigned int tid;
+  unsigned int iop;
+  unsigned int tid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int evt_mask;
+  unsigned int evt_mask;
 };
 #define I2O_EVT_DATA_SIZE 88
 struct i2o_evt_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct i2o_evt_id id;
- unsigned char evt_data[I2O_EVT_DATA_SIZE];
- unsigned int data_size;
+  struct i2o_evt_id id;
+  unsigned char evt_data[I2O_EVT_DATA_SIZE];
+  unsigned int data_size;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2o_evt_get {
- struct i2o_evt_info info;
- int pending;
- int lost;
+  struct i2o_evt_info info;
+  int pending;
+  int lost;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 typedef struct i2o_sg_io_hdr {
- unsigned int flags;
+  unsigned int flags;
 } i2o_sg_io_hdr_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2O_BUS_LOCAL 0
@@ -127,141 +127,141 @@
 #define I2O_BUS_UNKNOWN 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _i2o_pci_bus {
- __u8 PciFunctionNumber;
- __u8 PciDeviceNumber;
- __u8 PciBusNumber;
+  __u8 PciFunctionNumber;
+  __u8 PciDeviceNumber;
+  __u8 PciBusNumber;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved;
- __u16 PciVendorID;
- __u16 PciDeviceID;
+  __u8 reserved;
+  __u16 PciVendorID;
+  __u16 PciDeviceID;
 } i2o_pci_bus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _i2o_local_bus {
- __u16 LbBaseIOPort;
- __u16 reserved;
- __u32 LbBaseMemoryAddress;
+  __u16 LbBaseIOPort;
+  __u16 reserved;
+  __u32 LbBaseMemoryAddress;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } i2o_local_bus;
 typedef struct _i2o_isa_bus {
- __u16 IsaBaseIOPort;
- __u8 CSN;
+  __u16 IsaBaseIOPort;
+  __u8 CSN;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved;
- __u32 IsaBaseMemoryAddress;
+  __u8 reserved;
+  __u32 IsaBaseMemoryAddress;
 } i2o_isa_bus;
 typedef struct _i2o_eisa_bus_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 EisaBaseIOPort;
- __u8 reserved;
- __u8 EisaSlotNumber;
- __u32 EisaBaseMemoryAddress;
+  __u16 EisaBaseIOPort;
+  __u8 reserved;
+  __u8 EisaSlotNumber;
+  __u32 EisaBaseMemoryAddress;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } i2o_eisa_bus;
 typedef struct _i2o_mca_bus {
- __u16 McaBaseIOPort;
- __u8 reserved;
+  __u16 McaBaseIOPort;
+  __u8 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 McaSlotNumber;
- __u32 McaBaseMemoryAddress;
+  __u8 McaSlotNumber;
+  __u32 McaBaseMemoryAddress;
 } i2o_mca_bus;
 typedef struct _i2o_other_bus {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 BaseIOPort;
- __u16 reserved;
- __u32 BaseMemoryAddress;
+  __u16 BaseIOPort;
+  __u16 reserved;
+  __u32 BaseMemoryAddress;
 } i2o_other_bus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct _i2o_hrt_entry {
- __u32 adapter_id;
- __u32 parent_tid:12;
- __u32 state:4;
+  __u32 adapter_id;
+  __u32 parent_tid : 12;
+  __u32 state : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bus_num:8;
- __u32 bus_type:8;
- union {
- i2o_pci_bus pci_bus;
+  __u32 bus_num : 8;
+  __u32 bus_type : 8;
+  union {
+    i2o_pci_bus pci_bus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- i2o_local_bus local_bus;
- i2o_isa_bus isa_bus;
- i2o_eisa_bus eisa_bus;
- i2o_mca_bus mca_bus;
+    i2o_local_bus local_bus;
+    i2o_isa_bus isa_bus;
+    i2o_eisa_bus eisa_bus;
+    i2o_mca_bus mca_bus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- i2o_other_bus other_bus;
- } bus;
+    i2o_other_bus other_bus;
+  } bus;
 } i2o_hrt_entry;
 typedef struct _i2o_hrt {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 num_entries;
- __u8 entry_len;
- __u8 hrt_version;
- __u32 change_ind;
+  __u16 num_entries;
+  __u8 entry_len;
+  __u8 hrt_version;
+  __u32 change_ind;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- i2o_hrt_entry hrt_entry[1];
+  i2o_hrt_entry hrt_entry[1];
 } i2o_hrt;
 typedef struct _i2o_lct_entry {
- __u32 entry_size:16;
+  __u32 entry_size : 16;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tid:12;
- __u32 reserved:4;
- __u32 change_ind;
- __u32 device_flags;
+  __u32 tid : 12;
+  __u32 reserved : 4;
+  __u32 change_ind;
+  __u32 device_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 class_id:12;
- __u32 version:4;
- __u32 vendor_id:16;
- __u32 sub_class;
+  __u32 class_id : 12;
+  __u32 version : 4;
+  __u32 vendor_id : 16;
+  __u32 sub_class;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 user_tid:12;
- __u32 parent_tid:12;
- __u32 bios_info:8;
- __u8 identity_tag[8];
+  __u32 user_tid : 12;
+  __u32 parent_tid : 12;
+  __u32 bios_info : 8;
+  __u8 identity_tag[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 event_capabilities;
+  __u32 event_capabilities;
 } i2o_lct_entry;
 typedef struct _i2o_lct {
- __u32 table_size:16;
+  __u32 table_size : 16;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 boot_tid:12;
- __u32 lct_ver:4;
- __u32 iop_flags;
- __u32 change_ind;
+  __u32 boot_tid : 12;
+  __u32 lct_ver : 4;
+  __u32 iop_flags;
+  __u32 change_ind;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- i2o_lct_entry lct_entry[1];
+  i2o_lct_entry lct_entry[1];
 } i2o_lct;
 typedef struct _i2o_status_block {
- __u16 org_id;
+  __u16 org_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 reserved;
- __u16 iop_id:12;
- __u16 reserved1:4;
- __u16 host_unit_id;
+  __u16 reserved;
+  __u16 iop_id : 12;
+  __u16 reserved1 : 4;
+  __u16 host_unit_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 segment_number:12;
- __u16 i2o_version:4;
- __u8 iop_state;
- __u8 msg_type;
+  __u16 segment_number : 12;
+  __u16 i2o_version : 4;
+  __u8 iop_state;
+  __u8 msg_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 inbound_frame_size;
- __u8 init_code;
- __u8 reserved2;
- __u32 max_inbound_frames;
+  __u16 inbound_frame_size;
+  __u8 init_code;
+  __u8 reserved2;
+  __u32 max_inbound_frames;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cur_inbound_frames;
- __u32 max_outbound_frames;
- char product_id[24];
- __u32 expected_lct_size;
+  __u32 cur_inbound_frames;
+  __u32 max_outbound_frames;
+  char product_id[24];
+  __u32 expected_lct_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 iop_capabilities;
- __u32 desired_mem_size;
- __u32 current_mem_size;
- __u32 current_mem_base;
+  __u32 iop_capabilities;
+  __u32 desired_mem_size;
+  __u32 current_mem_size;
+  __u32 current_mem_base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 desired_io_size;
- __u32 current_io_size;
- __u32 current_io_base;
- __u32 reserved3:24;
+  __u32 desired_io_size;
+  __u32 current_io_size;
+  __u32 current_io_base;
+  __u32 reserved3 : 24;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cmd_status:8;
+  __u32 cmd_status : 8;
 } i2o_status_block;
 #define I2O_EVT_IND_STATE_CHANGE 0x80000000
 #define I2O_EVT_IND_GENERAL_WARNING 0x40000000
diff --git a/libc/kernel/uapi/linux/i8k.h b/libc/kernel/uapi/linux/i8k.h
index cc5c16e..afc7328 100644
--- a/libc/kernel/uapi/linux/i8k.h
+++ b/libc/kernel/uapi/linux/i8k.h
@@ -21,12 +21,12 @@
 #define I8K_PROC "/proc/i8k"
 #define I8K_PROC_FMT "1.0"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I8K_BIOS_VERSION _IOR ('i', 0x80, int)
-#define I8K_MACHINE_ID _IOR ('i', 0x81, int)
-#define I8K_POWER_STATUS _IOR ('i', 0x82, size_t)
-#define I8K_FN_STATUS _IOR ('i', 0x83, size_t)
+#define I8K_BIOS_VERSION _IOR('i', 0x80, int)
+#define I8K_MACHINE_ID _IOR('i', 0x81, int)
+#define I8K_POWER_STATUS _IOR('i', 0x82, size_t)
+#define I8K_FN_STATUS _IOR('i', 0x83, size_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define I8K_GET_TEMP _IOR ('i', 0x84, size_t)
+#define I8K_GET_TEMP _IOR('i', 0x84, size_t)
 #define I8K_GET_SPEED _IOWR('i', 0x85, size_t)
 #define I8K_GET_FAN _IOWR('i', 0x86, size_t)
 #define I8K_SET_FAN _IOWR('i', 0x87, size_t)
@@ -37,12 +37,13 @@
 #define I8K_FAN_LOW 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I8K_FAN_HIGH 2
-#define I8K_FAN_MAX I8K_FAN_HIGH
+#define I8K_FAN_TURBO 3
+#define I8K_FAN_MAX I8K_FAN_TURBO
 #define I8K_VOL_UP 1
-#define I8K_VOL_DOWN 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I8K_VOL_DOWN 2
 #define I8K_VOL_MUTE 4
 #define I8K_AC 1
 #define I8K_BATTERY 0
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/icmp.h b/libc/kernel/uapi/linux/icmp.h
index 1cf9d7b..3770356 100644
--- a/libc/kernel/uapi/linux/icmp.h
+++ b/libc/kernel/uapi/linux/icmp.h
@@ -67,28 +67,28 @@
 #define ICMP_EXC_FRAGTIME 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct icmphdr {
- __u8 type;
- __u8 code;
- __sum16 checksum;
+  __u8 type;
+  __u8 code;
+  __sum16 checksum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- __be16 id;
- __be16 sequence;
+  union {
+    struct {
+      __be16 id;
+      __be16 sequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } echo;
- __be32 gateway;
- struct {
- __be16 __linux_unused;
+    } echo;
+    __be32 gateway;
+    struct {
+      __be16 __linux_unused;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 mtu;
- } frag;
- } un;
+      __be16 mtu;
+    } frag;
+  } un;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_FILTER 1
 struct icmp_filter {
- __u32 data;
+  __u32 data;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/icmpv6.h b/libc/kernel/uapi/linux/icmpv6.h
index 542eca5..06c66fa 100644
--- a/libc/kernel/uapi/linux/icmpv6.h
+++ b/libc/kernel/uapi/linux/icmpv6.h
@@ -22,143 +22,124 @@
 #include <asm/byteorder.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct icmp6hdr {
- __u8 icmp6_type;
- __u8 icmp6_code;
- __sum16 icmp6_cksum;
+  __u8 icmp6_type;
+  __u8 icmp6_code;
+  __sum16 icmp6_cksum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __be32 un_data32[1];
- __be16 un_data16[2];
- __u8 un_data8[4];
+  union {
+    __be32 un_data32[1];
+    __be16 un_data16[2];
+    __u8 un_data8[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct icmpv6_echo {
- __be16 identifier;
- __be16 sequence;
- } u_echo;
+    struct icmpv6_echo {
+      __be16 identifier;
+      __be16 sequence;
+    } u_echo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct icmpv6_nd_advt {
+    struct icmpv6_nd_advt {
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u32 reserved:5,
- override:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- solicited:1,
- router:1,
- reserved2:24;
+      __u32 reserved : 5, override : 1, solicited : 1, router : 1, reserved2 : 24;
 #elif defined(__BIG_ENDIAN_BITFIELD)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 router:1,
- solicited:1,
- override:1,
- reserved:29;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+      __u32 router : 1, solicited : 1, override : 1, reserved : 29;
 #else
 #error "Please fix <asm/byteorder.h>"
 #endif
- } u_nd_advt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct icmpv6_nd_ra {
- __u8 hop_limit;
+    } u_nd_advt;
+    struct icmpv6_nd_ra {
+      __u8 hop_limit;
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u8 reserved:3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- router_pref:2,
- home_agent:1,
- other:1,
- managed:1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+      __u8 reserved : 3, router_pref : 2, home_agent : 1, other : 1, managed : 1;
 #elif defined(__BIG_ENDIAN_BITFIELD)
- __u8 managed:1,
- other:1,
- home_agent:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- router_pref:2,
- reserved:3;
+      __u8 managed : 1, other : 1, home_agent : 1, router_pref : 2, reserved : 3;
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error "Please fix <asm/byteorder.h>"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __be16 rt_lifetime;
- } u_nd_ra;
- } icmp6_dataun;
+      __be16 rt_lifetime;
+    } u_nd_ra;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } icmp6_dataun;
 #define icmp6_identifier icmp6_dataun.u_echo.identifier
 #define icmp6_sequence icmp6_dataun.u_echo.sequence
 #define icmp6_pointer icmp6_dataun.un_data32[0]
-#define icmp6_mtu icmp6_dataun.un_data32[0]
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define icmp6_mtu icmp6_dataun.un_data32[0]
 #define icmp6_unused icmp6_dataun.un_data32[0]
 #define icmp6_maxdelay icmp6_dataun.un_data16[0]
 #define icmp6_router icmp6_dataun.u_nd_advt.router
-#define icmp6_solicited icmp6_dataun.u_nd_advt.solicited
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define icmp6_solicited icmp6_dataun.u_nd_advt.solicited
 #define icmp6_override icmp6_dataun.u_nd_advt.override
 #define icmp6_ndiscreserved icmp6_dataun.u_nd_advt.reserved
 #define icmp6_hop_limit icmp6_dataun.u_nd_ra.hop_limit
-#define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed
 #define icmp6_addrconf_other icmp6_dataun.u_nd_ra.other
 #define icmp6_rt_lifetime icmp6_dataun.u_nd_ra.rt_lifetime
 #define icmp6_router_pref icmp6_dataun.u_nd_ra.router_pref
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define ICMPV6_ROUTER_PREF_LOW 0x3
 #define ICMPV6_ROUTER_PREF_MEDIUM 0x0
 #define ICMPV6_ROUTER_PREF_HIGH 0x1
-#define ICMPV6_ROUTER_PREF_INVALID 0x2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_ROUTER_PREF_INVALID 0x2
 #define ICMPV6_DEST_UNREACH 1
 #define ICMPV6_PKT_TOOBIG 2
 #define ICMPV6_TIME_EXCEED 3
-#define ICMPV6_PARAMPROB 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_PARAMPROB 4
 #define ICMPV6_INFOMSG_MASK 0x80
 #define ICMPV6_ECHO_REQUEST 128
 #define ICMPV6_ECHO_REPLY 129
-#define ICMPV6_MGM_QUERY 130
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_MGM_QUERY 130
 #define ICMPV6_MGM_REPORT 131
 #define ICMPV6_MGM_REDUCTION 132
 #define ICMPV6_NI_QUERY 139
-#define ICMPV6_NI_REPLY 140
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_NI_REPLY 140
 #define ICMPV6_MLD2_REPORT 143
 #define ICMPV6_DHAAD_REQUEST 144
 #define ICMPV6_DHAAD_REPLY 145
-#define ICMPV6_MOBILE_PREFIX_SOL 146
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_MOBILE_PREFIX_SOL 146
 #define ICMPV6_MOBILE_PREFIX_ADV 147
 #define ICMPV6_NOROUTE 0
 #define ICMPV6_ADM_PROHIBITED 1
-#define ICMPV6_NOT_NEIGHBOUR 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_NOT_NEIGHBOUR 2
 #define ICMPV6_ADDR_UNREACH 3
 #define ICMPV6_PORT_UNREACH 4
 #define ICMPV6_POLICY_FAIL 5
-#define ICMPV6_REJECT_ROUTE 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_REJECT_ROUTE 6
 #define ICMPV6_EXC_HOPLIMIT 0
 #define ICMPV6_EXC_FRAGTIME 1
 #define ICMPV6_HDR_FIELD 0
-#define ICMPV6_UNK_NEXTHDR 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_UNK_NEXTHDR 1
 #define ICMPV6_UNK_OPTION 2
 #define ICMPV6_FILTER 1
 #define ICMPV6_FILTER_BLOCK 1
-#define ICMPV6_FILTER_PASS 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ICMPV6_FILTER_PASS 2
 #define ICMPV6_FILTER_BLOCKOTHERS 3
 #define ICMPV6_FILTER_PASSONLY 4
 struct icmp6_filter {
- __u32 data[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 data[8];
 };
 #define MLD2_MODE_IS_INCLUDE 1
 #define MLD2_MODE_IS_EXCLUDE 2
-#define MLD2_CHANGE_TO_INCLUDE 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MLD2_CHANGE_TO_INCLUDE 3
 #define MLD2_CHANGE_TO_EXCLUDE 4
 #define MLD2_ALLOW_NEW_SOURCES 5
 #define MLD2_BLOCK_OLD_SOURCES 6
-#define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MLD2_ALL_MCR_INIT { { { 0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x16 } } }
 #endif
diff --git a/libc/kernel/uapi/linux/if.h b/libc/kernel/uapi/linux/if.h
index 4eca84d..f7b4e22 100644
--- a/libc/kernel/uapi/linux/if.h
+++ b/libc/kernel/uapi/linux/if.h
@@ -26,186 +26,184 @@
 #define IFALIASZ 256
 #include <linux/hdlc/ioctl.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_UP 0x1
-#define IFF_BROADCAST 0x2
-#define IFF_DEBUG 0x4
-#define IFF_LOOPBACK 0x8
+enum net_device_flags {
+  IFF_UP = 1 << 0,
+  IFF_BROADCAST = 1 << 1,
+  IFF_DEBUG = 1 << 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_POINTOPOINT 0x10
-#define IFF_NOTRAILERS 0x20
-#define IFF_RUNNING 0x40
-#define IFF_NOARP 0x80
+  IFF_LOOPBACK = 1 << 3,
+  IFF_POINTOPOINT = 1 << 4,
+  IFF_NOTRAILERS = 1 << 5,
+  IFF_RUNNING = 1 << 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_PROMISC 0x100
-#define IFF_ALLMULTI 0x200
-#define IFF_MASTER 0x400
-#define IFF_SLAVE 0x800
+  IFF_NOARP = 1 << 7,
+  IFF_PROMISC = 1 << 8,
+  IFF_ALLMULTI = 1 << 9,
+  IFF_MASTER = 1 << 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_MULTICAST 0x1000
-#define IFF_PORTSEL 0x2000
-#define IFF_AUTOMEDIA 0x4000
-#define IFF_DYNAMIC 0x8000
+  IFF_SLAVE = 1 << 11,
+  IFF_MULTICAST = 1 << 12,
+  IFF_PORTSEL = 1 << 13,
+  IFF_AUTOMEDIA = 1 << 14,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_LOWER_UP 0x10000
-#define IFF_DORMANT 0x20000
-#define IFF_ECHO 0x40000
-#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|  IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
+  IFF_DYNAMIC = 1 << 15,
+  IFF_LOWER_UP = 1 << 16,
+  IFF_DORMANT = 1 << 17,
+  IFF_ECHO = 1 << 18,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_802_1Q_VLAN 0x1
-#define IFF_EBRIDGE 0x2
-#define IFF_SLAVE_INACTIVE 0x4
-#define IFF_MASTER_8023AD 0x8
+};
+#define IFF_UP IFF_UP
+#define IFF_BROADCAST IFF_BROADCAST
+#define IFF_DEBUG IFF_DEBUG
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_MASTER_ALB 0x10
-#define IFF_BONDING 0x20
-#define IFF_SLAVE_NEEDARP 0x40
-#define IFF_ISATAP 0x80
+#define IFF_LOOPBACK IFF_LOOPBACK
+#define IFF_POINTOPOINT IFF_POINTOPOINT
+#define IFF_NOTRAILERS IFF_NOTRAILERS
+#define IFF_RUNNING IFF_RUNNING
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_MASTER_ARPMON 0x100
-#define IFF_WAN_HDLC 0x200
-#define IFF_XMIT_DST_RELEASE 0x400
-#define IFF_DONT_BRIDGE 0x800
+#define IFF_NOARP IFF_NOARP
+#define IFF_PROMISC IFF_PROMISC
+#define IFF_ALLMULTI IFF_ALLMULTI
+#define IFF_MASTER IFF_MASTER
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_DISABLE_NETPOLL 0x1000
-#define IFF_MACVLAN_PORT 0x2000
-#define IFF_BRIDGE_PORT 0x4000
-#define IFF_OVS_DATAPATH 0x8000
+#define IFF_SLAVE IFF_SLAVE
+#define IFF_MULTICAST IFF_MULTICAST
+#define IFF_PORTSEL IFF_PORTSEL
+#define IFF_AUTOMEDIA IFF_AUTOMEDIA
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_TX_SKB_SHARING 0x10000
-#define IFF_UNICAST_FLT 0x20000
-#define IFF_TEAM_PORT 0x40000
-#define IFF_SUPP_NOFCS 0x80000
+#define IFF_DYNAMIC IFF_DYNAMIC
+#define IFF_LOWER_UP IFF_LOWER_UP
+#define IFF_DORMANT IFF_DORMANT
+#define IFF_ECHO IFF_ECHO
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFF_LIVE_ADDR_CHANGE 0x100000
-#define IFF_MACVLAN 0x200000
+#define IFF_VOLATILE (IFF_LOOPBACK | IFF_POINTOPOINT | IFF_BROADCAST | IFF_ECHO | IFF_MASTER | IFF_SLAVE | IFF_RUNNING | IFF_LOWER_UP | IFF_DORMANT)
 #define IF_GET_IFACE 0x0001
 #define IF_GET_PROTO 0x0002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_V35 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_V24 0x1001
 #define IF_IFACE_X21 0x1002
 #define IF_IFACE_T1 0x1003
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_E1 0x1004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_SYNC_SERIAL 0x1005
 #define IF_IFACE_X21D 0x1006
 #define IF_PROTO_HDLC 0x2000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_PPP 0x2001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_CISCO 0x2002
 #define IF_PROTO_FR 0x2003
 #define IF_PROTO_FR_ADD_PVC 0x2004
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_FR_DEL_PVC 0x2005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_X25 0x2006
 #define IF_PROTO_HDLC_ETH 0x2007
 #define IF_PROTO_FR_ADD_ETH_PVC 0x2008
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_FR_DEL_ETH_PVC 0x2009
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_FR_PVC 0x200A
 #define IF_PROTO_FR_ETH_PVC 0x200B
 #define IF_PROTO_RAW 0x200C
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IF_OPER_UNKNOWN,
+  IF_OPER_NOTPRESENT,
+  IF_OPER_DOWN,
+  IF_OPER_LOWERLAYERDOWN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IF_OPER_TESTING,
+  IF_OPER_DORMANT,
+  IF_OPER_UP,
+};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IF_OPER_UNKNOWN,
- IF_OPER_NOTPRESENT,
- IF_OPER_DOWN,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IF_OPER_LOWERLAYERDOWN,
- IF_OPER_TESTING,
- IF_OPER_DORMANT,
- IF_OPER_UP,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IF_LINK_MODE_DEFAULT,
+  IF_LINK_MODE_DORMANT,
 };
-enum {
- IF_LINK_MODE_DEFAULT,
- IF_LINK_MODE_DORMANT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
 struct ifmap {
- unsigned long mem_start;
- unsigned long mem_end;
+  unsigned long mem_start;
+  unsigned long mem_end;
+  unsigned short base_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short base_addr;
- unsigned char irq;
- unsigned char dma;
- unsigned char port;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char irq;
+  unsigned char dma;
+  unsigned char port;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct if_settings {
- unsigned int type;
- unsigned int size;
+  unsigned int type;
+  unsigned int size;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- raw_hdlc_proto __user *raw_hdlc;
- cisco_proto __user *cisco;
- fr_proto __user *fr;
+    raw_hdlc_proto __user * raw_hdlc;
+    cisco_proto __user * cisco;
+    fr_proto __user * fr;
+    fr_proto_pvc __user * fr_pvc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fr_proto_pvc __user *fr_pvc;
- fr_proto_pvc_info __user *fr_pvc_info;
- sync_serial_settings __user *sync;
- te1_settings __user *te1;
+    fr_proto_pvc_info __user * fr_pvc_info;
+    sync_serial_settings __user * sync;
+    te1_settings __user * te1;
+  } ifs_ifsu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } ifs_ifsu;
 };
 struct ifreq {
 #define IFHWADDRLEN 6
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union
- {
- char ifrn_name[IFNAMSIZ];
- } ifr_ifrn;
+    char ifrn_name[IFNAMSIZ];
+  } ifr_ifrn;
+  union {
+    struct sockaddr ifru_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct sockaddr ifru_addr;
- struct sockaddr ifru_dstaddr;
- struct sockaddr ifru_broadaddr;
+    struct sockaddr ifru_dstaddr;
+    struct sockaddr ifru_broadaddr;
+    struct sockaddr ifru_netmask;
+    struct sockaddr ifru_hwaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr ifru_netmask;
- struct sockaddr ifru_hwaddr;
- short ifru_flags;
- int ifru_ivalue;
+    short ifru_flags;
+    int ifru_ivalue;
+    int ifru_mtu;
+    struct ifmap ifru_map;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ifru_mtu;
- struct ifmap ifru_map;
- char ifru_slave[IFNAMSIZ];
- char ifru_newname[IFNAMSIZ];
+    char ifru_slave[IFNAMSIZ];
+    char ifru_newname[IFNAMSIZ];
+    void __user * ifru_data;
+    struct if_settings ifru_settings;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user * ifru_data;
- struct if_settings ifru_settings;
- } ifr_ifru;
+  } ifr_ifru;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_name ifr_ifrn.ifrn_name
 #define ifr_hwaddr ifr_ifru.ifru_hwaddr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_addr ifr_ifru.ifru_addr
 #define ifr_dstaddr ifr_ifru.ifru_dstaddr
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_broadaddr ifr_ifru.ifru_broadaddr
 #define ifr_netmask ifr_ifru.ifru_netmask
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_flags ifr_ifru.ifru_flags
 #define ifr_metric ifr_ifru.ifru_ivalue
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_mtu ifr_ifru.ifru_mtu
 #define ifr_map ifr_ifru.ifru_map
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_slave ifr_ifru.ifru_slave
 #define ifr_data ifr_ifru.ifru_data
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_ifindex ifr_ifru.ifru_ivalue
 #define ifr_bandwidth ifr_ifru.ifru_ivalue
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_qlen ifr_ifru.ifru_ivalue
 #define ifr_newname ifr_ifru.ifru_newname
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_settings ifr_ifru.ifru_settings
 struct ifconf {
- int ifc_len;
- union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char __user *ifcu_buf;
- struct ifreq __user *ifcu_req;
- } ifc_ifcu;
+  int ifc_len;
+  union {
+    char __user * ifcu_buf;
+    struct ifreq __user * ifcu_req;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } ifc_ifcu;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifc_buf ifc_ifcu.ifcu_buf
 #define ifc_req ifc_ifcu.ifcu_req
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/if_addr.h b/libc/kernel/uapi/linux/if_addr.h
index e08a176..5d8d667 100644
--- a/libc/kernel/uapi/linux/if_addr.h
+++ b/libc/kernel/uapi/linux/if_addr.h
@@ -22,27 +22,27 @@
 #include <linux/netlink.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ifaddrmsg {
- __u8 ifa_family;
- __u8 ifa_prefixlen;
- __u8 ifa_flags;
+  __u8 ifa_family;
+  __u8 ifa_prefixlen;
+  __u8 ifa_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ifa_scope;
- __u32 ifa_index;
+  __u8 ifa_scope;
+  __u32 ifa_index;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFA_UNSPEC,
- IFA_ADDRESS,
- IFA_LOCAL,
- IFA_LABEL,
+  IFA_UNSPEC,
+  IFA_ADDRESS,
+  IFA_LOCAL,
+  IFA_LABEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFA_BROADCAST,
- IFA_ANYCAST,
- IFA_CACHEINFO,
- IFA_MULTICAST,
+  IFA_BROADCAST,
+  IFA_ANYCAST,
+  IFA_CACHEINFO,
+  IFA_MULTICAST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFA_FLAGS,
- __IFA_MAX,
+  IFA_FLAGS,
+  __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -61,13 +61,13 @@
 #define IFA_F_NOPREFIXROUTE 0x200
 struct ifa_cacheinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ifa_prefered;
- __u32 ifa_valid;
- __u32 cstamp;
- __u32 tstamp;
+  __u32 ifa_prefered;
+  __u32 ifa_valid;
+  __u32 cstamp;
+  __u32 tstamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
-#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
+#define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
+#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_addrlabel.h b/libc/kernel/uapi/linux/if_addrlabel.h
index 3840a12..266aade 100644
--- a/libc/kernel/uapi/linux/if_addrlabel.h
+++ b/libc/kernel/uapi/linux/if_addrlabel.h
@@ -21,19 +21,19 @@
 #include <linux/types.h>
 struct ifaddrlblmsg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ifal_family;
- __u8 __ifal_reserved;
- __u8 ifal_prefixlen;
- __u8 ifal_flags;
+  __u8 ifal_family;
+  __u8 __ifal_reserved;
+  __u8 ifal_prefixlen;
+  __u8 ifal_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ifal_index;
- __u32 ifal_seq;
+  __u32 ifal_index;
+  __u32 ifal_seq;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFAL_ADDRESS = 1,
- IFAL_LABEL = 2,
- __IFAL_MAX
+  IFAL_ADDRESS = 1,
+  IFAL_LABEL = 2,
+  __IFAL_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFAL_MAX (__IFAL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_alg.h b/libc/kernel/uapi/linux/if_alg.h
index 35f161c..eabd884 100644
--- a/libc/kernel/uapi/linux/if_alg.h
+++ b/libc/kernel/uapi/linux/if_alg.h
@@ -21,17 +21,17 @@
 #include <linux/types.h>
 struct sockaddr_alg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 salg_family;
- __u8 salg_type[14];
- __u32 salg_feat;
- __u32 salg_mask;
+  __u16 salg_family;
+  __u8 salg_type[14];
+  __u32 salg_feat;
+  __u32 salg_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 salg_name[64];
+  __u8 salg_name[64];
 };
 struct af_alg_iv {
- __u32 ivlen;
+  __u32 ivlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 iv[0];
+  __u8 iv[0];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/libc/kernel/uapi/linux/if_arcnet.h b/libc/kernel/uapi/linux/if_arcnet.h
index 27c15ea..d010c7e 100644
--- a/libc/kernel/uapi/linux/if_arcnet.h
+++ b/libc/kernel/uapi/linux/if_arcnet.h
@@ -42,55 +42,53 @@
 #define ARCNET_ALEN 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct arc_rfc1201 {
- __u8 proto;
- __u8 split_flag;
- __be16 sequence;
+  __u8 proto;
+  __u8 split_flag;
+  __be16 sequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 payload[0];
+  __u8 payload[0];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 proto;
- __u8 payload[0];
+  __u8 proto;
+  __u8 payload[0];
 };
 #define RFC1051_HDR_SIZE 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct arc_eth_encap {
- __u8 proto;
- struct ethhdr eth;
- __u8 payload[0];
+  __u8 proto;
+  struct ethhdr eth;
+  __u8 payload[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
- __u8 proto;
+  __u8 proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cookie[sizeof(int)];
- union {
- __u8 ack;
- __u8 raw[0];
+  __u8 cookie[sizeof(int)];
+  union {
+    __u8 ack;
+    __u8 raw[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } mes;
+  } mes;
 };
 struct arc_hardware {
- __u8 source,
+  __u8 source, dest, offset[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- dest,
- offset[2];
 };
 #define ARC_HDR_SIZE 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct archdr {
- struct arc_hardware hard;
- union {
- struct arc_rfc1201 rfc1201;
+  struct arc_hardware hard;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct arc_rfc1051 rfc1051;
- struct arc_eth_encap eth_encap;
- struct arc_cap cap;
- __u8 raw[0];
+  union {
+    struct arc_rfc1201 rfc1201;
+    struct arc_rfc1051 rfc1051;
+    struct arc_eth_encap eth_encap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } soft;
+    struct arc_cap cap;
+    __u8 raw[0];
+  } soft;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/if_arp.h b/libc/kernel/uapi/linux/if_arp.h
index 09ec01d..43f2e7d 100644
--- a/libc/kernel/uapi/linux/if_arp.h
+++ b/libc/kernel/uapi/linux/if_arp.h
@@ -111,19 +111,19 @@
 #define ARPOP_NAK 10
 struct arpreq {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr arp_pa;
- struct sockaddr arp_ha;
- int arp_flags;
- struct sockaddr arp_netmask;
+  struct sockaddr arp_pa;
+  struct sockaddr arp_ha;
+  int arp_flags;
+  struct sockaddr arp_netmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char arp_dev[16];
+  char arp_dev[16];
 };
 struct arpreq_old {
- struct sockaddr arp_pa;
+  struct sockaddr arp_pa;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr arp_ha;
- int arp_flags;
- struct sockaddr arp_netmask;
+  struct sockaddr arp_ha;
+  int arp_flags;
+  struct sockaddr arp_netmask;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATF_COM 0x02
@@ -134,12 +134,12 @@
 #define ATF_NETMASK 0x20
 #define ATF_DONTPUB 0x40
 struct arphdr {
- __be16 ar_hrd;
+  __be16 ar_hrd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 ar_pro;
- unsigned char ar_hln;
- unsigned char ar_pln;
- __be16 ar_op;
+  __be16 ar_pro;
+  unsigned char ar_hln;
+  unsigned char ar_pln;
+  __be16 ar_op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/if_bonding.h b/libc/kernel/uapi/linux/if_bonding.h
index c2fae42..2892015 100644
--- a/libc/kernel/uapi/linux/if_bonding.h
+++ b/libc/kernel/uapi/linux/if_bonding.h
@@ -59,27 +59,27 @@
 #define BOND_XMIT_POLICY_ENCAP23 3
 #define BOND_XMIT_POLICY_ENCAP34 4
 typedef struct ifbond {
- __s32 bond_mode;
+  __s32 bond_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 num_slaves;
- __s32 miimon;
+  __s32 num_slaves;
+  __s32 miimon;
 } ifbond;
 typedef struct ifslave {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 slave_id;
- char slave_name[IFNAMSIZ];
- __s8 link;
- __s8 state;
+  __s32 slave_id;
+  char slave_name[IFNAMSIZ];
+  __s8 link;
+  __s8 state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 link_failure_count;
+  __u32 link_failure_count;
 } ifslave;
 struct ad_info {
- __u16 aggregator_id;
+  __u16 aggregator_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 ports;
- __u16 actor_key;
- __u16 partner_key;
- __u8 partner_system[ETH_ALEN];
+  __u16 ports;
+  __u16 actor_key;
+  __u16 partner_key;
+  __u8 partner_system[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/if_bridge.h b/libc/kernel/uapi/linux/if_bridge.h
index 366912e..1394b6f 100644
--- a/libc/kernel/uapi/linux/if_bridge.h
+++ b/libc/kernel/uapi/linux/if_bridge.h
@@ -21,180 +21,181 @@
 #include <linux/types.h>
 #include <linux/if_ether.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/in6.h>
 #define SYSFS_BRIDGE_ATTR "bridge"
 #define SYSFS_BRIDGE_FDB "brforward"
 #define SYSFS_BRIDGE_PORT_SUBDIR "brif"
-#define SYSFS_BRIDGE_PORT_ATTR "brport"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYSFS_BRIDGE_PORT_ATTR "brport"
 #define SYSFS_BRIDGE_PORT_LINK "bridge"
 #define BRCTL_VERSION 1
 #define BRCTL_GET_VERSION 0
-#define BRCTL_GET_BRIDGES 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRCTL_GET_BRIDGES 1
 #define BRCTL_ADD_BRIDGE 2
 #define BRCTL_DEL_BRIDGE 3
 #define BRCTL_ADD_IF 4
-#define BRCTL_DEL_IF 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRCTL_DEL_IF 5
 #define BRCTL_GET_BRIDGE_INFO 6
 #define BRCTL_GET_PORT_LIST 7
 #define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
-#define BRCTL_SET_BRIDGE_HELLO_TIME 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRCTL_SET_BRIDGE_HELLO_TIME 9
 #define BRCTL_SET_BRIDGE_MAX_AGE 10
 #define BRCTL_SET_AGEING_TIME 11
 #define BRCTL_SET_GC_INTERVAL 12
-#define BRCTL_GET_PORT_INFO 13
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRCTL_GET_PORT_INFO 13
 #define BRCTL_SET_BRIDGE_STP_STATE 14
 #define BRCTL_SET_BRIDGE_PRIORITY 15
 #define BRCTL_SET_PORT_PRIORITY 16
-#define BRCTL_SET_PATH_COST 17
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRCTL_SET_PATH_COST 17
 #define BRCTL_GET_FDB_ENTRIES 18
 #define BR_STATE_DISABLED 0
 #define BR_STATE_LISTENING 1
-#define BR_STATE_LEARNING 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BR_STATE_LEARNING 2
 #define BR_STATE_FORWARDING 3
 #define BR_STATE_BLOCKING 4
 struct __bridge_info {
- __u64 designated_root;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 bridge_id;
- __u32 root_path_cost;
- __u32 max_age;
- __u32 hello_time;
+  __u64 designated_root;
+  __u64 bridge_id;
+  __u32 root_path_cost;
+  __u32 max_age;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 forward_delay;
- __u32 bridge_max_age;
- __u32 bridge_hello_time;
- __u32 bridge_forward_delay;
+  __u32 hello_time;
+  __u32 forward_delay;
+  __u32 bridge_max_age;
+  __u32 bridge_hello_time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 topology_change;
- __u8 topology_change_detected;
- __u8 root_port;
- __u8 stp_enabled;
+  __u32 bridge_forward_delay;
+  __u8 topology_change;
+  __u8 topology_change_detected;
+  __u8 root_port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ageing_time;
- __u32 gc_interval;
- __u32 hello_timer_value;
- __u32 tcn_timer_value;
+  __u8 stp_enabled;
+  __u32 ageing_time;
+  __u32 gc_interval;
+  __u32 hello_timer_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 topology_change_timer_value;
- __u32 gc_timer_value;
+  __u32 tcn_timer_value;
+  __u32 topology_change_timer_value;
+  __u32 gc_timer_value;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __port_info {
+  __u64 designated_root;
+  __u64 designated_bridge;
+  __u16 port_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 designated_root;
- __u64 designated_bridge;
- __u16 port_id;
- __u16 designated_port;
+  __u16 designated_port;
+  __u32 path_cost;
+  __u32 designated_cost;
+  __u8 state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 path_cost;
- __u32 designated_cost;
- __u8 state;
- __u8 top_change_ack;
+  __u8 top_change_ack;
+  __u8 config_pending;
+  __u8 unused0;
+  __u32 message_age_timer_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 config_pending;
- __u8 unused0;
- __u32 message_age_timer_value;
- __u32 forward_delay_timer_value;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 hold_timer_value;
+  __u32 forward_delay_timer_value;
+  __u32 hold_timer_value;
 };
 struct __fdb_entry {
- __u8 mac_addr[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 port_no;
- __u8 is_local;
- __u32 ageing_timer_value;
- __u8 port_hi;
+  __u8 mac_addr[ETH_ALEN];
+  __u8 port_no;
+  __u8 is_local;
+  __u32 ageing_timer_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad0;
- __u16 unused;
+  __u8 port_hi;
+  __u8 pad0;
+  __u16 unused;
 };
-#define BRIDGE_FLAGS_MASTER 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_FLAGS_MASTER 1
 #define BRIDGE_FLAGS_SELF 2
 #define BRIDGE_MODE_VEB 0
 #define BRIDGE_MODE_VEPA 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  IFLA_BRIDGE_FLAGS,
+  IFLA_BRIDGE_MODE,
+  IFLA_BRIDGE_VLAN_INFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BRIDGE_FLAGS,
- IFLA_BRIDGE_MODE,
- IFLA_BRIDGE_VLAN_INFO,
- __IFLA_BRIDGE_MAX,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
-#define BRIDGE_VLAN_INFO_MASTER (1<<0)
-#define BRIDGE_VLAN_INFO_PVID (1<<1)
+#define BRIDGE_VLAN_INFO_MASTER (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define BRIDGE_VLAN_INFO_UNTAGGED (1<<2)
+#define BRIDGE_VLAN_INFO_PVID (1 << 1)
+#define BRIDGE_VLAN_INFO_UNTAGGED (1 << 2)
 struct bridge_vlan_info {
- __u16 flags;
- __u16 vid;
+  __u16 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 vid;
 };
 enum {
- MDBA_UNSPEC,
- MDBA_MDB,
+  MDBA_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MDBA_ROUTER,
- __MDBA_MAX,
+  MDBA_MDB,
+  MDBA_ROUTER,
+  __MDBA_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MDBA_MAX (__MDBA_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- MDBA_MDB_UNSPEC,
- MDBA_MDB_ENTRY,
- __MDBA_MDB_MAX,
+  MDBA_MDB_UNSPEC,
+  MDBA_MDB_ENTRY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __MDBA_MDB_MAX,
 };
 #define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)
 enum {
- MDBA_MDB_ENTRY_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MDBA_MDB_ENTRY_INFO,
- __MDBA_MDB_ENTRY_MAX,
+  MDBA_MDB_ENTRY_UNSPEC,
+  MDBA_MDB_ENTRY_INFO,
+  __MDBA_MDB_ENTRY_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- MDBA_ROUTER_UNSPEC,
- MDBA_ROUTER_PORT,
- __MDBA_ROUTER_MAX,
+  MDBA_ROUTER_UNSPEC,
+  MDBA_ROUTER_PORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __MDBA_ROUTER_MAX,
 };
 #define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)
 struct br_port_msg {
- __u8 family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ifindex;
+  __u8 family;
+  __u32 ifindex;
 };
 struct br_mdb_entry {
- __u32 ifindex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 ifindex;
 #define MDB_TEMPORARY 0
 #define MDB_PERMANENT 1
- __u8 state;
- struct {
+  __u8 state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __be32 ip4;
- struct in6_addr ip6;
- } u;
+  struct {
+    union {
+      __be32 ip4;
+      struct in6_addr ip6;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 proto;
- } addr;
+    } u;
+    __be16 proto;
+  } addr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  MDBA_SET_ENTRY_UNSPEC,
+  MDBA_SET_ENTRY,
+  __MDBA_SET_ENTRY_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MDBA_SET_ENTRY_UNSPEC,
- MDBA_SET_ENTRY,
- __MDBA_SET_ENTRY_MAX,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/if_cablemodem.h b/libc/kernel/uapi/linux/if_cablemodem.h
index 716b93f..45039e5 100644
--- a/libc/kernel/uapi/linux/if_cablemodem.h
+++ b/libc/kernel/uapi/linux/if_cablemodem.h
@@ -18,12 +18,12 @@
  ****************************************************************************/
 #ifndef _LINUX_CABLEMODEM_H_
 #define _LINUX_CABLEMODEM_H_
-#define SIOCGCMSTATS (SIOCDEVPRIVATE+0)
-#define SIOCGCMFIRMWARE (SIOCDEVPRIVATE+1)
+#define SIOCGCMSTATS (SIOCDEVPRIVATE + 0)
+#define SIOCGCMFIRMWARE (SIOCDEVPRIVATE + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCGCMFREQUENCY (SIOCDEVPRIVATE+2)
-#define SIOCSCMFREQUENCY (SIOCDEVPRIVATE+3)
-#define SIOCGCMPIDS (SIOCDEVPRIVATE+4)
-#define SIOCSCMPIDS (SIOCDEVPRIVATE+5)
+#define SIOCGCMFREQUENCY (SIOCDEVPRIVATE + 2)
+#define SIOCSCMFREQUENCY (SIOCDEVPRIVATE + 3)
+#define SIOCGCMPIDS (SIOCDEVPRIVATE + 4)
+#define SIOCSCMPIDS (SIOCDEVPRIVATE + 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/if_eql.h b/libc/kernel/uapi/linux/if_eql.h
index 4112011..55c803f 100644
--- a/libc/kernel/uapi/linux/if_eql.h
+++ b/libc/kernel/uapi/linux/if_eql.h
@@ -32,19 +32,19 @@
 #define EQL_SETMASTRCFG (SIOCDEVPRIVATE + 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct master_config {
- char master_name[16];
- int max_slaves;
- int min_slaves;
+  char master_name[16];
+  int max_slaves;
+  int min_slaves;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } master_config_t;
 typedef struct slave_config {
- char slave_name[16];
- long priority;
+  char slave_name[16];
+  long priority;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } slave_config_t;
 typedef struct slaving_request {
- char slave_name[16];
- long priority;
+  char slave_name[16];
+  long priority;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } slaving_request_t;
 #endif
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index 610f70b..bc032cc 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -62,12 +62,12 @@
 #define ETH_P_SLOW 0x8809
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_WCCP 0x883E
-#define ETH_P_PPP_DISC 0x8863
-#define ETH_P_PPP_SES 0x8864
 #define ETH_P_MPLS_UC 0x8847
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_MPLS_MC 0x8848
 #define ETH_P_ATMMPOA 0x884c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETH_P_PPP_DISC 0x8863
+#define ETH_P_PPP_SES 0x8864
 #define ETH_P_LINK_CTL 0x886c
 #define ETH_P_ATMFATE 0x8884
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -86,48 +86,51 @@
 #define ETH_P_TDLS 0x890D
 #define ETH_P_FIP 0x8914
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETH_P_80221 0x8917
+#define ETH_P_LOOPBACK 0x9000
 #define ETH_P_QINQ1 0x9100
 #define ETH_P_QINQ2 0x9200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_802_3 0x0001
 #define ETH_P_AX25 0x0002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_ALL 0x0003
 #define ETH_P_802_2 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_SNAP 0x0005
 #define ETH_P_DDCMP 0x0006
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_WAN_PPP 0x0007
 #define ETH_P_PPP_MP 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_CANFD 0x000D
 #define ETH_P_PPPTALK 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_CONTROL 0x0016
 #define ETH_P_IRDA 0x0017
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_ECONET 0x0018
 #define ETH_P_HDLC 0x0019
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_ARCNET 0x001A
 #define ETH_P_DSA 0x001B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_TRAILER 0x001C
 #define ETH_P_PHONET 0x00F5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_IEEE802154 0x00F6
 #define ETH_P_CAIF 0x00F7
-struct ethhdr {
- unsigned char h_dest[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char h_source[ETH_ALEN];
- __be16 h_proto;
+#define ETH_P_XDSA 0x00F8
+struct ethhdr {
+  unsigned char h_dest[ETH_ALEN];
+  unsigned char h_source[ETH_ALEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be16 h_proto;
 } __attribute__((packed));
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_fc.h b/libc/kernel/uapi/linux/if_fc.h
index 527c15e..7584fa2 100644
--- a/libc/kernel/uapi/linux/if_fc.h
+++ b/libc/kernel/uapi/linux/if_fc.h
@@ -21,23 +21,23 @@
 #include <linux/types.h>
 #define FC_ALEN 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FC_HLEN (sizeof(struct fch_hdr)+sizeof(struct fcllc))
+#define FC_HLEN (sizeof(struct fch_hdr) + sizeof(struct fcllc))
 #define FC_ID_LEN 3
 #define EXTENDED_SAP 0xAA
 #define UI_CMD 0x03
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fch_hdr {
- __u8 daddr[FC_ALEN];
- __u8 saddr[FC_ALEN];
+  __u8 daddr[FC_ALEN];
+  __u8 saddr[FC_ALEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fcllc {
- __u8 dsap;
- __u8 ssap;
- __u8 llc;
+  __u8 dsap;
+  __u8 ssap;
+  __u8 llc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 protid[3];
- __be16 ethertype;
+  __u8 protid[3];
+  __be16 ethertype;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_fddi.h b/libc/kernel/uapi/linux/if_fddi.h
index 699ae44..e72ed7f 100644
--- a/libc/kernel/uapi/linux/if_fddi.h
+++ b/libc/kernel/uapi/linux/if_fddi.h
@@ -31,64 +31,63 @@
 #define FDDI_K_LLC_ZLEN 13
 #define FDDI_K_LLC_LEN 4491
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDDI_K_OUI_LEN 3
 #define FDDI_FC_K_VOID 0x00
 #define FDDI_FC_K_NON_RESTRICTED_TOKEN 0x80
 #define FDDI_FC_K_RESTRICTED_TOKEN 0xC0
-#define FDDI_FC_K_SMT_MIN 0x41
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDDI_FC_K_SMT_MIN 0x41
 #define FDDI_FC_K_SMT_MAX 0x4F
 #define FDDI_FC_K_MAC_MIN 0xC1
 #define FDDI_FC_K_MAC_MAX 0xCF
-#define FDDI_FC_K_ASYNC_LLC_MIN 0x50
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDDI_FC_K_ASYNC_LLC_MIN 0x50
 #define FDDI_FC_K_ASYNC_LLC_DEF 0x54
 #define FDDI_FC_K_ASYNC_LLC_MAX 0x5F
 #define FDDI_FC_K_SYNC_LLC_MIN 0xD0
-#define FDDI_FC_K_SYNC_LLC_MAX 0xD7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDDI_FC_K_SYNC_LLC_MAX 0xD7
 #define FDDI_FC_K_IMPLEMENTOR_MIN 0x60
 #define FDDI_FC_K_IMPLEMENTOR_MAX 0x6F
 #define FDDI_FC_K_RESERVED_MIN 0x70
-#define FDDI_FC_K_RESERVED_MAX 0x7F
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FDDI_FC_K_RESERVED_MAX 0x7F
 #define FDDI_EXTENDED_SAP 0xAA
 #define FDDI_UI_CMD 0x03
 struct fddi_8022_1_hdr {
- __u8 dsap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ssap;
- __u8 ctrl;
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ctrl;
 } __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fddi_8022_2_hdr {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ctrl_1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dsap;
- __u8 ssap;
- __u8 ctrl_1;
- __u8 ctrl_2;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 ctrl_2;
 } __attribute__((packed));
-#define FDDI_K_OUI_LEN 3
 struct fddi_snap_hdr {
- __u8 dsap;
+  __u8 dsap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ssap;
- __u8 ctrl;
- __u8 oui[FDDI_K_OUI_LEN];
- __be16 ethertype;
+  __u8 ssap;
+  __u8 ctrl;
+  __u8 oui[FDDI_K_OUI_LEN];
+  __be16 ethertype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct fddihdr {
- __u8 fc;
- __u8 daddr[FDDI_K_ALEN];
+  __u8 fc;
+  __u8 daddr[FDDI_K_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 saddr[FDDI_K_ALEN];
- union
- {
- struct fddi_8022_1_hdr llc_8022_1;
+  __u8 saddr[FDDI_K_ALEN];
+  union {
+    struct fddi_8022_1_hdr llc_8022_1;
+    struct fddi_8022_2_hdr llc_8022_2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fddi_8022_2_hdr llc_8022_2;
- struct fddi_snap_hdr llc_snap;
- } hdr;
+    struct fddi_snap_hdr llc_snap;
+  } hdr;
 } __attribute__((packed));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_frad.h b/libc/kernel/uapi/linux/if_frad.h
index 3faae59..8553c1c 100644
--- a/libc/kernel/uapi/linux/if_frad.h
+++ b/libc/kernel/uapi/linux/if_frad.h
@@ -19,78 +19,76 @@
 #ifndef _UAPI_FRAD_H_
 #define _UAPI_FRAD_H_
 #include <linux/if.h>
-struct dlci_add
+struct dlci_add {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- char devname[IFNAMSIZ];
- short dlci;
+  char devname[IFNAMSIZ];
+  short dlci;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLCI_GET_CONF (SIOCDEVPRIVATE + 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLCI_SET_CONF (SIOCDEVPRIVATE + 3)
 struct dlci_conf {
- short flags;
+  short flags;
+  short CIR_fwd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short CIR_fwd;
- short Bc_fwd;
- short Be_fwd;
- short CIR_bwd;
+  short Bc_fwd;
+  short Be_fwd;
+  short CIR_bwd;
+  short Bc_bwd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short Bc_bwd;
- short Be_bwd;
- short Tc_fwd;
- short Tc_bwd;
+  short Be_bwd;
+  short Tc_fwd;
+  short Tc_bwd;
+  short Tf_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short Tf_max;
- short Tb_max;
+  short Tb_max;
 };
 #define DLCI_GET_SLAVE (SIOCDEVPRIVATE + 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLCI_IGNORE_CIR_OUT 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLCI_ACCOUNT_CIR_IN 0x0002
 #define DLCI_BUFFER_IF 0x0008
 #define DLCI_VALID_FLAGS 0x000B
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_GET_CONF (SIOCDEVPRIVATE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_SET_CONF (SIOCDEVPRIVATE + 1)
 #define FRAD_LAST_IOCTL FRAD_SET_CONF
-struct frad_conf
+struct frad_conf {
+  short station;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- short station;
- short flags;
- short kbaud;
+  short flags;
+  short kbaud;
+  short clocking;
+  short mtu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short clocking;
- short mtu;
- short T391;
- short T392;
+  short T391;
+  short T392;
+  short N391;
+  short N392;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short N391;
- short N392;
- short N393;
- short CIR_fwd;
+  short N393;
+  short CIR_fwd;
+  short Bc_fwd;
+  short Be_fwd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short Bc_fwd;
- short Be_fwd;
- short CIR_bwd;
- short Bc_bwd;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short Be_bwd;
+  short CIR_bwd;
+  short Bc_bwd;
+  short Be_bwd;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_STATION_CPE 0x0000
 #define FRAD_STATION_NODE 0x0001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_TX_IGNORE_CIR 0x0001
 #define FRAD_RX_ACCOUNT_CIR 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_DROP_ABORTED 0x0004
 #define FRAD_BUFFERIF 0x0008
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_STATS 0x0010
 #define FRAD_MCI 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_AUTODLCI 0x8000
 #define FRAD_VALID_FLAGS 0x811F
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAD_CLOCK_INT 0x0001
 #define FRAD_CLOCK_EXT 0x0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/if_hippi.h b/libc/kernel/uapi/linux/if_hippi.h
index 7bd0b16..a5eafc6 100644
--- a/libc/kernel/uapi/linux/if_hippi.h
+++ b/libc/kernel/uapi/linux/if_hippi.h
@@ -31,78 +31,75 @@
 #define HIPPI_UI_CMD 0x03
 struct hipnet_statistics {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int rx_packets;
- int tx_packets;
- int rx_errors;
- int tx_errors;
+  int rx_packets;
+  int tx_packets;
+  int rx_errors;
+  int tx_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int rx_dropped;
- int tx_dropped;
- int rx_length_errors;
- int rx_over_errors;
+  int rx_dropped;
+  int tx_dropped;
+  int rx_length_errors;
+  int rx_over_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int rx_crc_errors;
- int rx_frame_errors;
- int rx_fifo_errors;
- int rx_missed_errors;
+  int rx_crc_errors;
+  int rx_frame_errors;
+  int rx_fifo_errors;
+  int rx_missed_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tx_aborted_errors;
- int tx_carrier_errors;
- int tx_fifo_errors;
- int tx_heartbeat_errors;
+  int tx_aborted_errors;
+  int tx_carrier_errors;
+  int tx_fifo_errors;
+  int tx_heartbeat_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tx_window_errors;
+  int tx_window_errors;
 };
 struct hippi_fp_hdr {
- __be32 fixed;
+  __be32 fixed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 d2_size;
+  __be32 d2_size;
 } __attribute__((packed));
 struct hippi_le_hdr {
 #ifdef __BIG_ENDIAN_BITFIELD
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fc:3;
- __u8 double_wide:1;
- __u8 message_type:4;
+  __u8 fc : 3;
+  __u8 double_wide : 1;
+  __u8 message_type : 4;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 message_type:4;
- __u8 double_wide:1;
- __u8 fc:3;
+  __u8 message_type : 4;
+  __u8 double_wide : 1;
+  __u8 fc : 3;
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dest_switch_addr[3];
+  __u8 dest_switch_addr[3];
 #ifdef __BIG_ENDIAN_BITFIELD
- __u8 dest_addr_type:4,
- src_addr_type:4;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 dest_addr_type : 4, src_addr_type : 4;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 src_addr_type:4,
- dest_addr_type:4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 src_addr_type : 4, dest_addr_type : 4;
 #endif
+  __u8 src_switch_addr[3];
+  __u16 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 src_switch_addr[3];
- __u16 reserved;
- __u8 daddr[HIPPI_ALEN];
- __u16 locally_administered;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 saddr[HIPPI_ALEN];
+  __u8 daddr[HIPPI_ALEN];
+  __u16 locally_administered;
+  __u8 saddr[HIPPI_ALEN];
 } __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIPPI_OUI_LEN 3
 struct hippi_snap_hdr {
+  __u8 dsap;
+  __u8 ssap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dsap;
- __u8 ssap;
- __u8 ctrl;
- __u8 oui[HIPPI_OUI_LEN];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 ethertype;
+  __u8 ctrl;
+  __u8 oui[HIPPI_OUI_LEN];
+  __be16 ethertype;
 } __attribute__((packed));
-struct hippi_hdr {
- struct hippi_fp_hdr fp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct hippi_le_hdr le;
- struct hippi_snap_hdr snap;
+struct hippi_hdr {
+  struct hippi_fp_hdr fp;
+  struct hippi_le_hdr le;
+  struct hippi_snap_hdr snap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index aa53f0e..ffcf3f0 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -22,487 +22,529 @@
 #include <linux/netlink.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rtnl_link_stats {
- __u32 rx_packets;
- __u32 tx_packets;
- __u32 rx_bytes;
+  __u32 rx_packets;
+  __u32 tx_packets;
+  __u32 rx_bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_bytes;
- __u32 rx_errors;
- __u32 tx_errors;
- __u32 rx_dropped;
+  __u32 tx_bytes;
+  __u32 rx_errors;
+  __u32 tx_errors;
+  __u32 rx_dropped;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_dropped;
- __u32 multicast;
- __u32 collisions;
- __u32 rx_length_errors;
+  __u32 tx_dropped;
+  __u32 multicast;
+  __u32 collisions;
+  __u32 rx_length_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_over_errors;
- __u32 rx_crc_errors;
- __u32 rx_frame_errors;
- __u32 rx_fifo_errors;
+  __u32 rx_over_errors;
+  __u32 rx_crc_errors;
+  __u32 rx_frame_errors;
+  __u32 rx_fifo_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rx_missed_errors;
- __u32 tx_aborted_errors;
- __u32 tx_carrier_errors;
- __u32 tx_fifo_errors;
+  __u32 rx_missed_errors;
+  __u32 tx_aborted_errors;
+  __u32 tx_carrier_errors;
+  __u32 tx_fifo_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tx_heartbeat_errors;
- __u32 tx_window_errors;
- __u32 rx_compressed;
- __u32 tx_compressed;
+  __u32 tx_heartbeat_errors;
+  __u32 tx_window_errors;
+  __u32 rx_compressed;
+  __u32 tx_compressed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct rtnl_link_stats64 {
- __u64 rx_packets;
- __u64 tx_packets;
+  __u64 rx_packets;
+  __u64 tx_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rx_bytes;
- __u64 tx_bytes;
- __u64 rx_errors;
- __u64 tx_errors;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rx_dropped;
- __u64 tx_dropped;
- __u64 multicast;
- __u64 collisions;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
+  __u64 collisions;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rx_length_errors;
- __u64 rx_over_errors;
- __u64 rx_crc_errors;
- __u64 rx_frame_errors;
+  __u64 rx_length_errors;
+  __u64 rx_over_errors;
+  __u64 rx_crc_errors;
+  __u64 rx_frame_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rx_fifo_errors;
- __u64 rx_missed_errors;
- __u64 tx_aborted_errors;
- __u64 tx_carrier_errors;
+  __u64 rx_fifo_errors;
+  __u64 rx_missed_errors;
+  __u64 tx_aborted_errors;
+  __u64 tx_carrier_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 tx_fifo_errors;
- __u64 tx_heartbeat_errors;
- __u64 tx_window_errors;
- __u64 rx_compressed;
+  __u64 tx_fifo_errors;
+  __u64 tx_heartbeat_errors;
+  __u64 tx_window_errors;
+  __u64 rx_compressed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 tx_compressed;
+  __u64 tx_compressed;
 };
 struct rtnl_link_ifmap {
- __u64 mem_start;
+  __u64 mem_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 mem_end;
- __u64 base_addr;
- __u16 irq;
- __u8 dma;
+  __u64 mem_end;
+  __u64 base_addr;
+  __u16 irq;
+  __u8 dma;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 port;
+  __u8 port;
 };
 enum {
- IFLA_UNSPEC,
+  IFLA_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_ADDRESS,
- IFLA_BROADCAST,
- IFLA_IFNAME,
- IFLA_MTU,
+  IFLA_ADDRESS,
+  IFLA_BROADCAST,
+  IFLA_IFNAME,
+  IFLA_MTU,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_LINK,
- IFLA_QDISC,
- IFLA_STATS,
- IFLA_COST,
+  IFLA_LINK,
+  IFLA_QDISC,
+  IFLA_STATS,
+  IFLA_COST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_COST IFLA_COST
- IFLA_PRIORITY,
+  IFLA_PRIORITY,
 #define IFLA_PRIORITY IFLA_PRIORITY
- IFLA_MASTER,
+  IFLA_MASTER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_MASTER IFLA_MASTER
- IFLA_WIRELESS,
+  IFLA_WIRELESS,
 #define IFLA_WIRELESS IFLA_WIRELESS
- IFLA_PROTINFO,
+  IFLA_PROTINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_PROTINFO IFLA_PROTINFO
- IFLA_TXQLEN,
+  IFLA_TXQLEN,
 #define IFLA_TXQLEN IFLA_TXQLEN
- IFLA_MAP,
+  IFLA_MAP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_MAP IFLA_MAP
- IFLA_WEIGHT,
+  IFLA_WEIGHT,
 #define IFLA_WEIGHT IFLA_WEIGHT
- IFLA_OPERSTATE,
+  IFLA_OPERSTATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_LINKMODE,
- IFLA_LINKINFO,
+  IFLA_LINKMODE,
+  IFLA_LINKINFO,
 #define IFLA_LINKINFO IFLA_LINKINFO
- IFLA_NET_NS_PID,
+  IFLA_NET_NS_PID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_IFALIAS,
- IFLA_NUM_VF,
- IFLA_VFINFO_LIST,
- IFLA_STATS64,
+  IFLA_IFALIAS,
+  IFLA_NUM_VF,
+  IFLA_VFINFO_LIST,
+  IFLA_STATS64,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VF_PORTS,
- IFLA_PORT_SELF,
- IFLA_AF_SPEC,
- IFLA_GROUP,
+  IFLA_VF_PORTS,
+  IFLA_PORT_SELF,
+  IFLA_AF_SPEC,
+  IFLA_GROUP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_NET_NS_FD,
- IFLA_EXT_MASK,
- IFLA_PROMISCUITY,
+  IFLA_NET_NS_FD,
+  IFLA_EXT_MASK,
+  IFLA_PROMISCUITY,
 #define IFLA_PROMISCUITY IFLA_PROMISCUITY
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_NUM_TX_QUEUES,
- IFLA_NUM_RX_QUEUES,
- IFLA_CARRIER,
- IFLA_PHYS_PORT_ID,
+  IFLA_NUM_TX_QUEUES,
+  IFLA_NUM_RX_QUEUES,
+  IFLA_CARRIER,
+  IFLA_PHYS_PORT_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_MAX
+  IFLA_CARRIER_CHANGES,
+  __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
-#define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
+#define IFLA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
+#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifinfomsg))
 enum {
- IFLA_INET_UNSPEC,
- IFLA_INET_CONF,
+  IFLA_INET_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_INET_MAX,
+  IFLA_INET_CONF,
+  __IFLA_INET_MAX,
 };
 #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  IFLA_INET6_UNSPEC,
+  IFLA_INET6_FLAGS,
+  IFLA_INET6_CONF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_INET6_UNSPEC,
- IFLA_INET6_FLAGS,
- IFLA_INET6_CONF,
- IFLA_INET6_STATS,
+  IFLA_INET6_STATS,
+  IFLA_INET6_MCAST,
+  IFLA_INET6_CACHEINFO,
+  IFLA_INET6_ICMP6STATS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_INET6_MCAST,
- IFLA_INET6_CACHEINFO,
- IFLA_INET6_ICMP6STATS,
- IFLA_INET6_TOKEN,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_INET6_MAX
+  IFLA_INET6_TOKEN,
+  IFLA_INET6_ADDR_GEN_MODE,
+  __IFLA_INET6_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
-enum {
+enum in6_addr_gen_mode {
+  IN6_ADDR_GEN_MODE_EUI64,
+  IN6_ADDR_GEN_MODE_NONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BRIDGE_MODE_UNSPEC,
- BRIDGE_MODE_HAIRPIN,
 };
 enum {
+  IFLA_BR_UNSPEC,
+  IFLA_BR_FORWARD_DELAY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BRPORT_UNSPEC,
- IFLA_BRPORT_STATE,
- IFLA_BRPORT_PRIORITY,
- IFLA_BRPORT_COST,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BRPORT_MODE,
- IFLA_BRPORT_GUARD,
- IFLA_BRPORT_PROTECT,
- IFLA_BRPORT_FAST_LEAVE,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BRPORT_LEARNING,
- IFLA_BRPORT_UNICAST_FLOOD,
- __IFLA_BRPORT_MAX
+  IFLA_BR_HELLO_TIME,
+  IFLA_BR_MAX_AGE,
+  __IFLA_BR_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
+enum {
+  BRIDGE_MODE_UNSPEC,
+  BRIDGE_MODE_HAIRPIN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  IFLA_BRPORT_UNSPEC,
+  IFLA_BRPORT_STATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_BRPORT_PRIORITY,
+  IFLA_BRPORT_COST,
+  IFLA_BRPORT_MODE,
+  IFLA_BRPORT_GUARD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_BRPORT_PROTECT,
+  IFLA_BRPORT_FAST_LEAVE,
+  IFLA_BRPORT_LEARNING,
+  IFLA_BRPORT_UNICAST_FLOOD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IFLA_BRPORT_MAX
+};
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
 struct ifla_cacheinfo {
- __u32 max_reasm_len;
- __u32 tstamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reachable_time;
- __u32 retrans_time;
+  __u32 max_reasm_len;
+  __u32 tstamp;
+  __u32 reachable_time;
+  __u32 retrans_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
+  IFLA_INFO_UNSPEC,
+  IFLA_INFO_KIND,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_INFO_UNSPEC,
- IFLA_INFO_KIND,
- IFLA_INFO_DATA,
- IFLA_INFO_XSTATS,
+  IFLA_INFO_DATA,
+  IFLA_INFO_XSTATS,
+  IFLA_INFO_SLAVE_KIND,
+  IFLA_INFO_SLAVE_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_INFO_SLAVE_KIND,
- IFLA_INFO_SLAVE_DATA,
- __IFLA_INFO_MAX,
+  __IFLA_INFO_MAX,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1)
 enum {
- IFLA_VLAN_UNSPEC,
- IFLA_VLAN_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VLAN_FLAGS,
- IFLA_VLAN_EGRESS_QOS,
- IFLA_VLAN_INGRESS_QOS,
- IFLA_VLAN_PROTOCOL,
+  IFLA_VLAN_UNSPEC,
+  IFLA_VLAN_ID,
+  IFLA_VLAN_FLAGS,
+  IFLA_VLAN_EGRESS_QOS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_VLAN_MAX,
+  IFLA_VLAN_INGRESS_QOS,
+  IFLA_VLAN_PROTOCOL,
+  __IFLA_VLAN_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
 struct ifla_vlan_flags {
+  __u32 flags;
+  __u32 mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 mask;
 };
 enum {
+  IFLA_VLAN_QOS_UNSPEC,
+  IFLA_VLAN_QOS_MAPPING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VLAN_QOS_UNSPEC,
- IFLA_VLAN_QOS_MAPPING,
- __IFLA_VLAN_QOS_MAX
+  __IFLA_VLAN_QOS_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1)
 struct ifla_vlan_qos_mapping {
- __u32 from;
- __u32 to;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 from;
+  __u32 to;
 };
 enum {
- IFLA_MACVLAN_UNSPEC,
- IFLA_MACVLAN_MODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_MACVLAN_FLAGS,
- __IFLA_MACVLAN_MAX,
+  IFLA_MACVLAN_UNSPEC,
+  IFLA_MACVLAN_MODE,
+  IFLA_MACVLAN_FLAGS,
+  IFLA_MACVLAN_MACADDR_MODE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_MACVLAN_MACADDR,
+  IFLA_MACVLAN_MACADDR_DATA,
+  IFLA_MACVLAN_MACADDR_COUNT,
+  __IFLA_MACVLAN_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum macvlan_mode {
- MACVLAN_MODE_PRIVATE = 1,
- MACVLAN_MODE_VEPA = 2,
- MACVLAN_MODE_BRIDGE = 4,
+  MACVLAN_MODE_PRIVATE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MACVLAN_MODE_PASSTHRU = 8,
+  MACVLAN_MODE_VEPA = 2,
+  MACVLAN_MODE_BRIDGE = 4,
+  MACVLAN_MODE_PASSTHRU = 8,
+  MACVLAN_MODE_SOURCE = 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum macvlan_macaddr_mode {
+  MACVLAN_MACADDR_ADD,
+  MACVLAN_MACADDR_DEL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MACVLAN_MACADDR_FLUSH,
+  MACVLAN_MACADDR_SET,
 };
 #define MACVLAN_FLAG_NOPROMISC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  IFLA_VXLAN_UNSPEC,
+  IFLA_VXLAN_ID,
+  IFLA_VXLAN_GROUP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VXLAN_UNSPEC,
- IFLA_VXLAN_ID,
- IFLA_VXLAN_GROUP,
- IFLA_VXLAN_LINK,
+  IFLA_VXLAN_LINK,
+  IFLA_VXLAN_LOCAL,
+  IFLA_VXLAN_TTL,
+  IFLA_VXLAN_TOS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VXLAN_LOCAL,
- IFLA_VXLAN_TTL,
- IFLA_VXLAN_TOS,
- IFLA_VXLAN_LEARNING,
+  IFLA_VXLAN_LEARNING,
+  IFLA_VXLAN_AGEING,
+  IFLA_VXLAN_LIMIT,
+  IFLA_VXLAN_PORT_RANGE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VXLAN_AGEING,
- IFLA_VXLAN_LIMIT,
- IFLA_VXLAN_PORT_RANGE,
- IFLA_VXLAN_PROXY,
+  IFLA_VXLAN_PROXY,
+  IFLA_VXLAN_RSC,
+  IFLA_VXLAN_L2MISS,
+  IFLA_VXLAN_L3MISS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VXLAN_RSC,
- IFLA_VXLAN_L2MISS,
- IFLA_VXLAN_L3MISS,
- IFLA_VXLAN_PORT,
+  IFLA_VXLAN_PORT,
+  IFLA_VXLAN_GROUP6,
+  IFLA_VXLAN_LOCAL6,
+  IFLA_VXLAN_UDP_CSUM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VXLAN_GROUP6,
- IFLA_VXLAN_LOCAL6,
- __IFLA_VXLAN_MAX
+  IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
+  IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
+  __IFLA_VXLAN_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
 struct ifla_vxlan_port_range {
- __be16 low;
- __be16 high;
+  __be16 low;
+  __be16 high;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- IFLA_BOND_UNSPEC,
- IFLA_BOND_MODE,
+  IFLA_BOND_UNSPEC,
+  IFLA_BOND_MODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_ACTIVE_SLAVE,
- IFLA_BOND_MIIMON,
- IFLA_BOND_UPDELAY,
- IFLA_BOND_DOWNDELAY,
+  IFLA_BOND_ACTIVE_SLAVE,
+  IFLA_BOND_MIIMON,
+  IFLA_BOND_UPDELAY,
+  IFLA_BOND_DOWNDELAY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_USE_CARRIER,
- IFLA_BOND_ARP_INTERVAL,
- IFLA_BOND_ARP_IP_TARGET,
- IFLA_BOND_ARP_VALIDATE,
+  IFLA_BOND_USE_CARRIER,
+  IFLA_BOND_ARP_INTERVAL,
+  IFLA_BOND_ARP_IP_TARGET,
+  IFLA_BOND_ARP_VALIDATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_ARP_ALL_TARGETS,
- IFLA_BOND_PRIMARY,
- IFLA_BOND_PRIMARY_RESELECT,
- IFLA_BOND_FAIL_OVER_MAC,
+  IFLA_BOND_ARP_ALL_TARGETS,
+  IFLA_BOND_PRIMARY,
+  IFLA_BOND_PRIMARY_RESELECT,
+  IFLA_BOND_FAIL_OVER_MAC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_XMIT_HASH_POLICY,
- IFLA_BOND_RESEND_IGMP,
- IFLA_BOND_NUM_PEER_NOTIF,
- IFLA_BOND_ALL_SLAVES_ACTIVE,
+  IFLA_BOND_XMIT_HASH_POLICY,
+  IFLA_BOND_RESEND_IGMP,
+  IFLA_BOND_NUM_PEER_NOTIF,
+  IFLA_BOND_ALL_SLAVES_ACTIVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_MIN_LINKS,
- IFLA_BOND_LP_INTERVAL,
- IFLA_BOND_PACKETS_PER_SLAVE,
- IFLA_BOND_AD_LACP_RATE,
+  IFLA_BOND_MIN_LINKS,
+  IFLA_BOND_LP_INTERVAL,
+  IFLA_BOND_PACKETS_PER_SLAVE,
+  IFLA_BOND_AD_LACP_RATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_AD_SELECT,
- IFLA_BOND_AD_INFO,
- __IFLA_BOND_MAX,
+  IFLA_BOND_AD_SELECT,
+  IFLA_BOND_AD_INFO,
+  __IFLA_BOND_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
 enum {
- IFLA_BOND_AD_INFO_UNSPEC,
- IFLA_BOND_AD_INFO_AGGREGATOR,
+  IFLA_BOND_AD_INFO_UNSPEC,
+  IFLA_BOND_AD_INFO_AGGREGATOR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_AD_INFO_NUM_PORTS,
- IFLA_BOND_AD_INFO_ACTOR_KEY,
- IFLA_BOND_AD_INFO_PARTNER_KEY,
- IFLA_BOND_AD_INFO_PARTNER_MAC,
+  IFLA_BOND_AD_INFO_NUM_PORTS,
+  IFLA_BOND_AD_INFO_ACTOR_KEY,
+  IFLA_BOND_AD_INFO_PARTNER_KEY,
+  IFLA_BOND_AD_INFO_PARTNER_MAC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_BOND_AD_INFO_MAX,
+  __IFLA_BOND_AD_INFO_MAX,
 };
 #define IFLA_BOND_AD_INFO_MAX (__IFLA_BOND_AD_INFO_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_SLAVE_UNSPEC,
- IFLA_BOND_SLAVE_STATE,
- IFLA_BOND_SLAVE_MII_STATUS,
- IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
+  IFLA_BOND_SLAVE_UNSPEC,
+  IFLA_BOND_SLAVE_STATE,
+  IFLA_BOND_SLAVE_MII_STATUS,
+  IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_BOND_SLAVE_PERM_HWADDR,
- IFLA_BOND_SLAVE_QUEUE_ID,
- IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
- __IFLA_BOND_SLAVE_MAX,
+  IFLA_BOND_SLAVE_PERM_HWADDR,
+  IFLA_BOND_SLAVE_QUEUE_ID,
+  IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
+  __IFLA_BOND_SLAVE_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
 enum {
- IFLA_VF_INFO_UNSPEC,
+  IFLA_VF_INFO_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VF_INFO,
- __IFLA_VF_INFO_MAX,
+  IFLA_VF_INFO,
+  __IFLA_VF_INFO_MAX,
 };
 #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IFLA_VF_UNSPEC,
- IFLA_VF_MAC,
- IFLA_VF_VLAN,
+  IFLA_VF_UNSPEC,
+  IFLA_VF_MAC,
+  IFLA_VF_VLAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VF_TX_RATE,
- IFLA_VF_SPOOFCHK,
- IFLA_VF_LINK_STATE,
- __IFLA_VF_MAX,
+  IFLA_VF_TX_RATE,
+  IFLA_VF_SPOOFCHK,
+  IFLA_VF_LINK_STATE,
+  IFLA_VF_RATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IFLA_VF_MAX,
 };
 #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
 struct ifla_vf_mac {
- __u32 vf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 mac[32];
+  __u32 vf;
+  __u8 mac[32];
 };
 struct ifla_vf_vlan {
- __u32 vf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vlan;
- __u32 qos;
+  __u32 vf;
+  __u32 vlan;
+  __u32 qos;
 };
-struct ifla_vf_tx_rate {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vf;
- __u32 rate;
+struct ifla_vf_tx_rate {
+  __u32 vf;
+  __u32 rate;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ifla_vf_rate {
+  __u32 vf;
+  __u32 min_tx_rate;
+  __u32 max_tx_rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ifla_vf_spoofchk {
+  __u32 vf;
+  __u32 setting;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vf;
- __u32 setting;
 };
 enum {
+  IFLA_VF_LINK_STATE_AUTO,
+  IFLA_VF_LINK_STATE_ENABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VF_LINK_STATE_AUTO,
- IFLA_VF_LINK_STATE_ENABLE,
- IFLA_VF_LINK_STATE_DISABLE,
- __IFLA_VF_LINK_STATE_MAX,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_VF_LINK_STATE_DISABLE,
+  __IFLA_VF_LINK_STATE_MAX,
 };
 struct ifla_vf_link_state {
- __u32 vf;
- __u32 link_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 vf;
+  __u32 link_state;
 };
 enum {
- IFLA_VF_PORT_UNSPEC,
- IFLA_VF_PORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_VF_PORT_MAX,
+  IFLA_VF_PORT_UNSPEC,
+  IFLA_VF_PORT,
+  __IFLA_VF_PORT_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
 enum {
+  IFLA_PORT_UNSPEC,
+  IFLA_PORT_VF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_PORT_UNSPEC,
- IFLA_PORT_VF,
- IFLA_PORT_PROFILE,
- IFLA_PORT_VSI_TYPE,
+  IFLA_PORT_PROFILE,
+  IFLA_PORT_VSI_TYPE,
+  IFLA_PORT_INSTANCE_UUID,
+  IFLA_PORT_HOST_UUID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_PORT_INSTANCE_UUID,
- IFLA_PORT_HOST_UUID,
- IFLA_PORT_REQUEST,
- IFLA_PORT_RESPONSE,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_PORT_MAX,
+  IFLA_PORT_REQUEST,
+  IFLA_PORT_RESPONSE,
+  __IFLA_PORT_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
 #define PORT_PROFILE_MAX 40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_UUID_MAX 16
-#define PORT_SELF_VF -1
-enum {
- PORT_REQUEST_PREASSOCIATE = 0,
+#define PORT_SELF_VF - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PORT_REQUEST_PREASSOCIATE_RR,
- PORT_REQUEST_ASSOCIATE,
- PORT_REQUEST_DISASSOCIATE,
+enum {
+  PORT_REQUEST_PREASSOCIATE = 0,
+  PORT_REQUEST_PREASSOCIATE_RR,
+  PORT_REQUEST_ASSOCIATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PORT_REQUEST_DISASSOCIATE,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- PORT_VDP_RESPONSE_SUCCESS = 0,
- PORT_VDP_RESPONSE_INVALID_FORMAT,
- PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
+  PORT_VDP_RESPONSE_SUCCESS = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PORT_VDP_RESPONSE_UNUSED_VTID,
- PORT_VDP_RESPONSE_VTID_VIOLATION,
- PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
- PORT_VDP_RESPONSE_OUT_OF_SYNC,
+  PORT_VDP_RESPONSE_INVALID_FORMAT,
+  PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
+  PORT_VDP_RESPONSE_UNUSED_VTID,
+  PORT_VDP_RESPONSE_VTID_VIOLATION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
- PORT_PROFILE_RESPONSE_INPROGRESS,
- PORT_PROFILE_RESPONSE_INVALID,
- PORT_PROFILE_RESPONSE_BADSTATE,
+  PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
+  PORT_VDP_RESPONSE_OUT_OF_SYNC,
+  PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
+  PORT_PROFILE_RESPONSE_INPROGRESS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
- PORT_PROFILE_RESPONSE_ERROR,
+  PORT_PROFILE_RESPONSE_INVALID,
+  PORT_PROFILE_RESPONSE_BADSTATE,
+  PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
+  PORT_PROFILE_RESPONSE_ERROR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ifla_port_vsi {
+  __u8 vsi_mgr_id;
+  __u8 vsi_type_id[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 vsi_mgr_id;
- __u8 vsi_type_id[3];
- __u8 vsi_type_version;
- __u8 pad[3];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 vsi_type_version;
+  __u8 pad[3];
 };
 enum {
- IFLA_IPOIB_UNSPEC,
- IFLA_IPOIB_PKEY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_IPOIB_MODE,
- IFLA_IPOIB_UMCAST,
- __IFLA_IPOIB_MAX
+  IFLA_IPOIB_UNSPEC,
+  IFLA_IPOIB_PKEY,
+  IFLA_IPOIB_MODE,
+  IFLA_IPOIB_UMCAST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IFLA_IPOIB_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPOIB_MODE_DATAGRAM = 0,
- IPOIB_MODE_CONNECTED = 1,
-};
+  IPOIB_MODE_DATAGRAM = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPOIB_MODE_CONNECTED = 1,
+};
 #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
 enum {
- IFLA_HSR_UNSPEC,
- IFLA_HSR_SLAVE1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_HSR_SLAVE2,
- IFLA_HSR_MULTICAST_SPEC,
- IFLA_HSR_SUPERVISION_ADDR,
- IFLA_HSR_SEQ_NR,
+  IFLA_HSR_UNSPEC,
+  IFLA_HSR_SLAVE1,
+  IFLA_HSR_SLAVE2,
+  IFLA_HSR_MULTICAST_SPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IFLA_HSR_MAX,
+  IFLA_HSR_SUPERVISION_ADDR,
+  IFLA_HSR_SEQ_NR,
+  __IFLA_HSR_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_packet.h b/libc/kernel/uapi/linux/if_packet.h
index 133c77b..6e9ae6a 100644
--- a/libc/kernel/uapi/linux/if_packet.h
+++ b/libc/kernel/uapi/linux/if_packet.h
@@ -21,20 +21,20 @@
 #include <linux/types.h>
 struct sockaddr_pkt {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short spkt_family;
- unsigned char spkt_device[14];
- __be16 spkt_protocol;
+  unsigned short spkt_family;
+  unsigned char spkt_device[14];
+  __be16 spkt_protocol;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_ll {
- unsigned short sll_family;
- __be16 sll_protocol;
- int sll_ifindex;
+  unsigned short sll_family;
+  __be16 sll_protocol;
+  int sll_ifindex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short sll_hatype;
- unsigned char sll_pkttype;
- unsigned char sll_halen;
- unsigned char sll_addr[8];
+  unsigned short sll_hatype;
+  unsigned char sll_pkttype;
+  unsigned char sll_halen;
+  unsigned char sll_addr[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define PACKET_HOST 0
@@ -83,31 +83,31 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PACKET_FANOUT_FLAG_DEFRAG 0x8000
 struct tpacket_stats {
- unsigned int tp_packets;
- unsigned int tp_drops;
+  unsigned int tp_packets;
+  unsigned int tp_drops;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tpacket_stats_v3 {
- unsigned int tp_packets;
- unsigned int tp_drops;
+  unsigned int tp_packets;
+  unsigned int tp_drops;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tp_freeze_q_cnt;
+  unsigned int tp_freeze_q_cnt;
 };
 union tpacket_stats_u {
- struct tpacket_stats stats1;
+  struct tpacket_stats stats1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tpacket_stats_v3 stats3;
+  struct tpacket_stats_v3 stats3;
 };
 struct tpacket_auxdata {
- __u32 tp_status;
+  __u32 tp_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tp_len;
- __u32 tp_snaplen;
- __u16 tp_mac;
- __u16 tp_net;
+  __u32 tp_len;
+  __u32 tp_snaplen;
+  __u16 tp_mac;
+  __u16 tp_net;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 tp_vlan_tci;
- __u16 tp_vlan_tpid;
+  __u16 tp_vlan_tci;
+  __u16 tp_vlan_tpid;
 };
 #define TP_STATUS_KERNEL 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -131,127 +131,127 @@
 #define TP_FT_REQ_FILL_RXHASH 0x1
 struct tpacket_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long tp_status;
- unsigned int tp_len;
- unsigned int tp_snaplen;
- unsigned short tp_mac;
+  unsigned long tp_status;
+  unsigned int tp_len;
+  unsigned int tp_snaplen;
+  unsigned short tp_mac;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short tp_net;
- unsigned int tp_sec;
- unsigned int tp_usec;
+  unsigned short tp_net;
+  unsigned int tp_sec;
+  unsigned int tp_usec;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TPACKET_ALIGNMENT 16
-#define TPACKET_ALIGN(x) (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
+#define TPACKET_ALIGN(x) (((x) + TPACKET_ALIGNMENT - 1) & ~(TPACKET_ALIGNMENT - 1))
 #define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
 struct tpacket2_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tp_status;
- __u32 tp_len;
- __u32 tp_snaplen;
- __u16 tp_mac;
+  __u32 tp_status;
+  __u32 tp_len;
+  __u32 tp_snaplen;
+  __u16 tp_mac;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 tp_net;
- __u32 tp_sec;
- __u32 tp_nsec;
- __u16 tp_vlan_tci;
+  __u16 tp_net;
+  __u32 tp_sec;
+  __u32 tp_nsec;
+  __u16 tp_vlan_tci;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 tp_vlan_tpid;
- __u8 tp_padding[4];
+  __u16 tp_vlan_tpid;
+  __u8 tp_padding[4];
 };
 struct tpacket_hdr_variant1 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tp_rxhash;
- __u32 tp_vlan_tci;
- __u16 tp_vlan_tpid;
- __u16 tp_padding;
+  __u32 tp_rxhash;
+  __u32 tp_vlan_tci;
+  __u16 tp_vlan_tpid;
+  __u16 tp_padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tpacket3_hdr {
- __u32 tp_next_offset;
- __u32 tp_sec;
+  __u32 tp_next_offset;
+  __u32 tp_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tp_nsec;
- __u32 tp_snaplen;
- __u32 tp_len;
- __u32 tp_status;
+  __u32 tp_nsec;
+  __u32 tp_snaplen;
+  __u32 tp_len;
+  __u32 tp_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 tp_mac;
- __u16 tp_net;
- union {
- struct tpacket_hdr_variant1 hv1;
+  __u16 tp_mac;
+  __u16 tp_net;
+  union {
+    struct tpacket_hdr_variant1 hv1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- __u8 tp_padding[8];
+  };
+  __u8 tp_padding[8];
 };
 struct tpacket_bd_ts {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int ts_sec;
- union {
- unsigned int ts_usec;
- unsigned int ts_nsec;
+  unsigned int ts_sec;
+  union {
+    unsigned int ts_usec;
+    unsigned int ts_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+  };
 };
 struct tpacket_hdr_v1 {
- __u32 block_status;
+  __u32 block_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_pkts;
- __u32 offset_to_first_pkt;
- __u32 blk_len;
- __aligned_u64 seq_num;
+  __u32 num_pkts;
+  __u32 offset_to_first_pkt;
+  __u32 blk_len;
+  __aligned_u64 seq_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tpacket_bd_ts ts_first_pkt, ts_last_pkt;
+  struct tpacket_bd_ts ts_first_pkt, ts_last_pkt;
 };
 union tpacket_bd_header_u {
- struct tpacket_hdr_v1 bh1;
+  struct tpacket_hdr_v1 bh1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tpacket_block_desc {
- __u32 version;
- __u32 offset_to_priv;
+  __u32 version;
+  __u32 offset_to_priv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union tpacket_bd_header_u hdr;
+  union tpacket_bd_header_u hdr;
 };
 #define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
 #define TPACKET3_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum tpacket_versions {
- TPACKET_V1,
- TPACKET_V2,
- TPACKET_V3
+  TPACKET_V1,
+  TPACKET_V2,
+  TPACKET_V3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tpacket_req {
- unsigned int tp_block_size;
- unsigned int tp_block_nr;
+  unsigned int tp_block_size;
+  unsigned int tp_block_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tp_frame_size;
- unsigned int tp_frame_nr;
+  unsigned int tp_frame_size;
+  unsigned int tp_frame_nr;
 };
 struct tpacket_req3 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tp_block_size;
- unsigned int tp_block_nr;
- unsigned int tp_frame_size;
- unsigned int tp_frame_nr;
+  unsigned int tp_block_size;
+  unsigned int tp_block_nr;
+  unsigned int tp_frame_size;
+  unsigned int tp_frame_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tp_retire_blk_tov;
- unsigned int tp_sizeof_priv;
- unsigned int tp_feature_req_word;
+  unsigned int tp_retire_blk_tov;
+  unsigned int tp_sizeof_priv;
+  unsigned int tp_feature_req_word;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union tpacket_req_u {
- struct tpacket_req req;
- struct tpacket_req3 req3;
+  struct tpacket_req req;
+  struct tpacket_req3 req3;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct packet_mreq {
- int mr_ifindex;
- unsigned short mr_type;
- unsigned short mr_alen;
+  int mr_ifindex;
+  unsigned short mr_type;
+  unsigned short mr_alen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char mr_address[8];
+  unsigned char mr_address[8];
 };
 #define PACKET_MR_MULTICAST 0
 #define PACKET_MR_PROMISC 1
diff --git a/libc/kernel/uapi/linux/if_plip.h b/libc/kernel/uapi/linux/if_plip.h
index 22a49e0..42621d5 100644
--- a/libc/kernel/uapi/linux/if_plip.h
+++ b/libc/kernel/uapi/linux/if_plip.h
@@ -22,9 +22,9 @@
 #define SIOCDEVPLIP SIOCDEVPRIVATE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct plipconf {
- unsigned short pcmd;
- unsigned long nibble;
- unsigned long trigger;
+  unsigned short pcmd;
+  unsigned long nibble;
+  unsigned long trigger;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define PLIP_GET_TIMEOUT 0x1
diff --git a/libc/kernel/uapi/linux/if_pppol2tp.h b/libc/kernel/uapi/linux/if_pppol2tp.h
index 661c56d..36b8ced 100644
--- a/libc/kernel/uapi/linux/if_pppol2tp.h
+++ b/libc/kernel/uapi/linux/if_pppol2tp.h
@@ -21,54 +21,54 @@
 #include <linux/types.h>
 struct pppol2tp_addr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_pid_t pid;
- int fd;
- struct sockaddr_in addr;
- __u16 s_tunnel, s_session;
+  __kernel_pid_t pid;
+  int fd;
+  struct sockaddr_in addr;
+  __u16 s_tunnel, s_session;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 d_tunnel, d_session;
+  __u16 d_tunnel, d_session;
 };
 struct pppol2tpin6_addr {
- __kernel_pid_t pid;
+  __kernel_pid_t pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int fd;
- __u16 s_tunnel, s_session;
- __u16 d_tunnel, d_session;
- struct sockaddr_in6 addr;
+  int fd;
+  __u16 s_tunnel, s_session;
+  __u16 d_tunnel, d_session;
+  struct sockaddr_in6 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct pppol2tpv3_addr {
- __kernel_pid_t pid;
- int fd;
+  __kernel_pid_t pid;
+  int fd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_in addr;
- __u32 s_tunnel, s_session;
- __u32 d_tunnel, d_session;
+  struct sockaddr_in addr;
+  __u32 s_tunnel, s_session;
+  __u32 d_tunnel, d_session;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pppol2tpv3in6_addr {
- __kernel_pid_t pid;
- int fd;
- __u32 s_tunnel, s_session;
+  __kernel_pid_t pid;
+  int fd;
+  __u32 s_tunnel, s_session;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 d_tunnel, d_session;
- struct sockaddr_in6 addr;
+  __u32 d_tunnel, d_session;
+  struct sockaddr_in6 addr;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PPPOL2TP_SO_DEBUG = 1,
- PPPOL2TP_SO_RECVSEQ = 2,
- PPPOL2TP_SO_SENDSEQ = 3,
- PPPOL2TP_SO_LNSMODE = 4,
+  PPPOL2TP_SO_DEBUG = 1,
+  PPPOL2TP_SO_RECVSEQ = 2,
+  PPPOL2TP_SO_SENDSEQ = 3,
+  PPPOL2TP_SO_LNSMODE = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PPPOL2TP_SO_REORDERTO = 5,
+  PPPOL2TP_SO_REORDERTO = 5,
 };
 enum {
- PPPOL2TP_MSG_DEBUG = (1 << 0),
+  PPPOL2TP_MSG_DEBUG = (1 << 0),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PPPOL2TP_MSG_CONTROL = (1 << 1),
- PPPOL2TP_MSG_SEQ = (1 << 2),
- PPPOL2TP_MSG_DATA = (1 << 3),
+  PPPOL2TP_MSG_CONTROL = (1 << 1),
+  PPPOL2TP_MSG_SEQ = (1 << 2),
+  PPPOL2TP_MSG_DATA = (1 << 3),
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/if_pppolac.h b/libc/kernel/uapi/linux/if_pppolac.h
index 84a1499..303a899 100644
--- a/libc/kernel/uapi/linux/if_pppolac.h
+++ b/libc/kernel/uapi/linux/if_pppolac.h
@@ -22,13 +22,13 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_pppolac {
- sa_family_t sa_family;
- unsigned int sa_protocol;
- int udp_socket;
+  sa_family_t sa_family;
+  unsigned int sa_protocol;
+  int udp_socket;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct __attribute__((packed)) {
- __u16 tunnel, session;
- } local, remote;
+  struct __attribute__((packed)) {
+    __u16 tunnel, session;
+  } local, remote;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/if_pppopns.h b/libc/kernel/uapi/linux/if_pppopns.h
index dd29a8b..bd96e94 100644
--- a/libc/kernel/uapi/linux/if_pppopns.h
+++ b/libc/kernel/uapi/linux/if_pppopns.h
@@ -22,12 +22,12 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_pppopns {
- sa_family_t sa_family;
- unsigned int sa_protocol;
- int tcp_socket;
+  sa_family_t sa_family;
+  unsigned int sa_protocol;
+  int tcp_socket;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 local;
- __u16 remote;
+  __u16 local;
+  __u16 remote;
 } __attribute__((packed));
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_pppox.h b/libc/kernel/uapi/linux/if_pppox.h
index 3bc2ddb..7b4dbd2 100644
--- a/libc/kernel/uapi/linux/if_pppox.h
+++ b/libc/kernel/uapi/linux/if_pppox.h
@@ -32,14 +32,14 @@
 typedef __be16 sid_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pppoe_addr {
- sid_t sid;
- unsigned char remote[ETH_ALEN];
- char dev[IFNAMSIZ];
+  sid_t sid;
+  unsigned char remote[ETH_ALEN];
+  char dev[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct pptp_addr {
- __u16 call_id;
- struct in_addr sin_addr;
+  __u16 call_id;
+  struct in_addr sin_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define PX_PROTO_OE 0
@@ -48,42 +48,42 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PX_MAX_PROTO 3
 struct sockaddr_pppox {
- __kernel_sa_family_t sa_family;
- unsigned int sa_protocol;
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct pppoe_addr pppoe;
- struct pptp_addr pptp;
- } sa_addr;
+  union {
+    struct pppoe_addr pppoe;
+    struct pptp_addr pptp;
+  } sa_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __packed;
 struct sockaddr_pppol2tp {
- __kernel_sa_family_t sa_family;
- unsigned int sa_protocol;
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct pppol2tp_addr pppol2tp;
+  struct pppol2tp_addr pppol2tp;
 } __packed;
 struct sockaddr_pppol2tpin6 {
- __kernel_sa_family_t sa_family;
+  __kernel_sa_family_t sa_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int sa_protocol;
- struct pppol2tpin6_addr pppol2tp;
+  unsigned int sa_protocol;
+  struct pppol2tpin6_addr pppol2tp;
 } __packed;
 struct sockaddr_pppol2tpv3 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_sa_family_t sa_family;
- unsigned int sa_protocol;
- struct pppol2tpv3_addr pppol2tp;
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
+  struct pppol2tpv3_addr pppol2tp;
 } __packed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_pppol2tpv3in6 {
- __kernel_sa_family_t sa_family;
- unsigned int sa_protocol;
- struct pppol2tpv3in6_addr pppol2tp;
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
+  struct pppol2tpv3in6_addr pppol2tp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __packed;
-#define PPPOEIOCSFWD _IOW(0xB1 ,0, size_t)
-#define PPPOEIOCDFWD _IO(0xB1 ,1)
+#define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
+#define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PADO_CODE 0x07
@@ -92,11 +92,11 @@
 #define PADT_CODE 0xa7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pppoe_tag {
- __be16 tag_type;
- __be16 tag_len;
- char tag_data[0];
+  __be16 tag_type;
+  __be16 tag_len;
+  char tag_data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
 #define PTT_AC_NAME __cpu_to_be16(0x0102)
@@ -112,21 +112,21 @@
 struct pppoe_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u8 type : 4;
- __u8 ver : 4;
+  __u8 type : 4;
+  __u8 ver : 4;
 #elif defined(__BIG_ENDIAN_BITFIELD)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ver : 4;
- __u8 type : 4;
+  __u8 ver : 4;
+  __u8 type : 4;
 #else
 #error "Please fix <asm/byteorder.h>"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __u8 code;
- __be16 sid;
- __be16 length;
+  __u8 code;
+  __be16 sid;
+  __be16 length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct pppoe_tag tag[0];
+  struct pppoe_tag tag[0];
 } __packed;
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/libc/kernel/uapi/linux/if_slip.h b/libc/kernel/uapi/linux/if_slip.h
index 7863f2c..8cd714e 100644
--- a/libc/kernel/uapi/linux/if_slip.h
+++ b/libc/kernel/uapi/linux/if_slip.h
@@ -26,10 +26,10 @@
 #define SL_OPT_ADAPTIVE 8
 #define SIOCSKEEPALIVE (SIOCDEVPRIVATE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCGKEEPALIVE (SIOCDEVPRIVATE+1)
-#define SIOCSOUTFILL (SIOCDEVPRIVATE+2)
-#define SIOCGOUTFILL (SIOCDEVPRIVATE+3)
-#define SIOCSLEASE (SIOCDEVPRIVATE+4)
+#define SIOCGKEEPALIVE (SIOCDEVPRIVATE + 1)
+#define SIOCSOUTFILL (SIOCDEVPRIVATE + 2)
+#define SIOCGOUTFILL (SIOCDEVPRIVATE + 3)
+#define SIOCSLEASE (SIOCDEVPRIVATE + 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCGLEASE (SIOCDEVPRIVATE+5)
+#define SIOCGLEASE (SIOCDEVPRIVATE + 5)
 #endif
diff --git a/libc/kernel/uapi/linux/if_team.h b/libc/kernel/uapi/linux/if_team.h
index e772d6d..0d73f1e 100644
--- a/libc/kernel/uapi/linux/if_team.h
+++ b/libc/kernel/uapi/linux/if_team.h
@@ -21,67 +21,67 @@
 #define TEAM_STRING_MAX_LEN 32
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_CMD_NOOP,
- TEAM_CMD_OPTIONS_SET,
- TEAM_CMD_OPTIONS_GET,
- TEAM_CMD_PORT_LIST_GET,
+  TEAM_CMD_NOOP,
+  TEAM_CMD_OPTIONS_SET,
+  TEAM_CMD_OPTIONS_GET,
+  TEAM_CMD_PORT_LIST_GET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TEAM_CMD_MAX,
- TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1),
+  __TEAM_CMD_MAX,
+  TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1),
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_ATTR_UNSPEC,
- TEAM_ATTR_TEAM_IFINDEX,
- TEAM_ATTR_LIST_OPTION,
- TEAM_ATTR_LIST_PORT,
+  TEAM_ATTR_UNSPEC,
+  TEAM_ATTR_TEAM_IFINDEX,
+  TEAM_ATTR_LIST_OPTION,
+  TEAM_ATTR_LIST_PORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TEAM_ATTR_MAX,
- TEAM_ATTR_MAX = __TEAM_ATTR_MAX - 1,
+  __TEAM_ATTR_MAX,
+  TEAM_ATTR_MAX = __TEAM_ATTR_MAX - 1,
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_ATTR_ITEM_OPTION_UNSPEC,
- TEAM_ATTR_ITEM_OPTION,
- __TEAM_ATTR_ITEM_OPTION_MAX,
- TEAM_ATTR_ITEM_OPTION_MAX = __TEAM_ATTR_ITEM_OPTION_MAX - 1,
+  TEAM_ATTR_ITEM_OPTION_UNSPEC,
+  TEAM_ATTR_ITEM_OPTION,
+  __TEAM_ATTR_ITEM_OPTION_MAX,
+  TEAM_ATTR_ITEM_OPTION_MAX = __TEAM_ATTR_ITEM_OPTION_MAX - 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TEAM_ATTR_OPTION_UNSPEC,
- TEAM_ATTR_OPTION_NAME,
+  TEAM_ATTR_OPTION_UNSPEC,
+  TEAM_ATTR_OPTION_NAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_ATTR_OPTION_CHANGED,
- TEAM_ATTR_OPTION_TYPE,
- TEAM_ATTR_OPTION_DATA,
- TEAM_ATTR_OPTION_REMOVED,
+  TEAM_ATTR_OPTION_CHANGED,
+  TEAM_ATTR_OPTION_TYPE,
+  TEAM_ATTR_OPTION_DATA,
+  TEAM_ATTR_OPTION_REMOVED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_ATTR_OPTION_PORT_IFINDEX,
- TEAM_ATTR_OPTION_ARRAY_INDEX,
- __TEAM_ATTR_OPTION_MAX,
- TEAM_ATTR_OPTION_MAX = __TEAM_ATTR_OPTION_MAX - 1,
+  TEAM_ATTR_OPTION_PORT_IFINDEX,
+  TEAM_ATTR_OPTION_ARRAY_INDEX,
+  __TEAM_ATTR_OPTION_MAX,
+  TEAM_ATTR_OPTION_MAX = __TEAM_ATTR_OPTION_MAX - 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TEAM_ATTR_ITEM_PORT_UNSPEC,
- TEAM_ATTR_ITEM_PORT,
+  TEAM_ATTR_ITEM_PORT_UNSPEC,
+  TEAM_ATTR_ITEM_PORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TEAM_ATTR_ITEM_PORT_MAX,
- TEAM_ATTR_ITEM_PORT_MAX = __TEAM_ATTR_ITEM_PORT_MAX - 1,
+  __TEAM_ATTR_ITEM_PORT_MAX,
+  TEAM_ATTR_ITEM_PORT_MAX = __TEAM_ATTR_ITEM_PORT_MAX - 1,
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_ATTR_PORT_UNSPEC,
- TEAM_ATTR_PORT_IFINDEX,
- TEAM_ATTR_PORT_CHANGED,
- TEAM_ATTR_PORT_LINKUP,
+  TEAM_ATTR_PORT_UNSPEC,
+  TEAM_ATTR_PORT_IFINDEX,
+  TEAM_ATTR_PORT_CHANGED,
+  TEAM_ATTR_PORT_LINKUP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_ATTR_PORT_SPEED,
- TEAM_ATTR_PORT_DUPLEX,
- TEAM_ATTR_PORT_REMOVED,
- __TEAM_ATTR_PORT_MAX,
+  TEAM_ATTR_PORT_SPEED,
+  TEAM_ATTR_PORT_DUPLEX,
+  TEAM_ATTR_PORT_REMOVED,
+  __TEAM_ATTR_PORT_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TEAM_ATTR_PORT_MAX = __TEAM_ATTR_PORT_MAX - 1,
+  TEAM_ATTR_PORT_MAX = __TEAM_ATTR_PORT_MAX - 1,
 };
 #define TEAM_GENL_NAME "team"
 #define TEAM_GENL_VERSION 0x1
diff --git a/libc/kernel/uapi/linux/if_tun.h b/libc/kernel/uapi/linux/if_tun.h
index f8f80b9..dd2dc2a 100644
--- a/libc/kernel/uapi/linux/if_tun.h
+++ b/libc/kernel/uapi/linux/if_tun.h
@@ -84,16 +84,16 @@
 #define TUN_F_UFO 0x10
 #define TUN_PKT_STRIP 0x0001
 struct tun_pi {
- __u16 flags;
+  __u16 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 proto;
+  __be16 proto;
 };
 #define TUN_FLT_ALLMULTI 0x0001
 struct tun_filter {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flags;
- __u16 count;
- __u8 addr[0][ETH_ALEN];
+  __u16 flags;
+  __u16 count;
+  __u8 addr[0][ETH_ALEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/if_tunnel.h b/libc/kernel/uapi/linux/if_tunnel.h
index 67ce5ce..fea3428 100644
--- a/libc/kernel/uapi/linux/if_tunnel.h
+++ b/libc/kernel/uapi/linux/if_tunnel.h
@@ -47,93 +47,112 @@
 #define GRE_VERSION __cpu_to_be16(0x0007)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_tunnel_parm {
- char name[IFNAMSIZ];
- int link;
- __be16 i_flags;
+  char name[IFNAMSIZ];
+  int link;
+  __be16 i_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 o_flags;
- __be32 i_key;
- __be32 o_key;
- struct iphdr iph;
+  __be16 o_flags;
+  __be32 i_key;
+  __be32 o_key;
+  struct iphdr iph;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- IFLA_IPTUN_UNSPEC,
- IFLA_IPTUN_LINK,
+  IFLA_IPTUN_UNSPEC,
+  IFLA_IPTUN_LINK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_IPTUN_LOCAL,
- IFLA_IPTUN_REMOTE,
- IFLA_IPTUN_TTL,
- IFLA_IPTUN_TOS,
+  IFLA_IPTUN_LOCAL,
+  IFLA_IPTUN_REMOTE,
+  IFLA_IPTUN_TTL,
+  IFLA_IPTUN_TOS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_IPTUN_ENCAP_LIMIT,
- IFLA_IPTUN_FLOWINFO,
- IFLA_IPTUN_FLAGS,
- IFLA_IPTUN_PROTO,
+  IFLA_IPTUN_ENCAP_LIMIT,
+  IFLA_IPTUN_FLOWINFO,
+  IFLA_IPTUN_FLAGS,
+  IFLA_IPTUN_PROTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_IPTUN_PMTUDISC,
- IFLA_IPTUN_6RD_PREFIX,
- IFLA_IPTUN_6RD_RELAY_PREFIX,
- IFLA_IPTUN_6RD_PREFIXLEN,
+  IFLA_IPTUN_PMTUDISC,
+  IFLA_IPTUN_6RD_PREFIX,
+  IFLA_IPTUN_6RD_RELAY_PREFIX,
+  IFLA_IPTUN_6RD_PREFIXLEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
- __IFLA_IPTUN_MAX,
+  IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
+  IFLA_IPTUN_ENCAP_TYPE,
+  IFLA_IPTUN_ENCAP_FLAGS,
+  IFLA_IPTUN_ENCAP_SPORT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_IPTUN_ENCAP_DPORT,
+  __IFLA_IPTUN_MAX,
 };
 #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum tunnel_encap_types {
+  TUNNEL_ENCAP_NONE,
+  TUNNEL_ENCAP_FOU,
+  TUNNEL_ENCAP_GUE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define TUNNEL_ENCAP_FLAG_CSUM (1 << 0)
+#define TUNNEL_ENCAP_FLAG_CSUM6 (1 << 1)
 #define SIT_ISATAP 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_tunnel_prl {
- __be32 addr;
- __u16 flags;
+  __be32 addr;
+  __u16 flags;
+  __u16 __reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 __reserved;
- __u32 datalen;
- __u32 __reserved2;
+  __u32 datalen;
+  __u32 __reserved2;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PRL_DEFAULT 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_tunnel_6rd {
- struct in6_addr prefix;
- __be32 relay_prefix;
+  struct in6_addr prefix;
+  __be32 relay_prefix;
+  __u16 prefixlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 prefixlen;
- __u16 relay_prefixlen;
+  __u16 relay_prefixlen;
 };
 enum {
+  IFLA_GRE_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_GRE_UNSPEC,
- IFLA_GRE_LINK,
- IFLA_GRE_IFLAGS,
- IFLA_GRE_OFLAGS,
+  IFLA_GRE_LINK,
+  IFLA_GRE_IFLAGS,
+  IFLA_GRE_OFLAGS,
+  IFLA_GRE_IKEY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_GRE_IKEY,
- IFLA_GRE_OKEY,
- IFLA_GRE_LOCAL,
- IFLA_GRE_REMOTE,
+  IFLA_GRE_OKEY,
+  IFLA_GRE_LOCAL,
+  IFLA_GRE_REMOTE,
+  IFLA_GRE_TTL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_GRE_TTL,
- IFLA_GRE_TOS,
- IFLA_GRE_PMTUDISC,
- IFLA_GRE_ENCAP_LIMIT,
+  IFLA_GRE_TOS,
+  IFLA_GRE_PMTUDISC,
+  IFLA_GRE_ENCAP_LIMIT,
+  IFLA_GRE_FLOWINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_GRE_FLOWINFO,
- IFLA_GRE_FLAGS,
- __IFLA_GRE_MAX,
+  IFLA_GRE_FLAGS,
+  IFLA_GRE_ENCAP_TYPE,
+  IFLA_GRE_ENCAP_FLAGS,
+  IFLA_GRE_ENCAP_SPORT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_GRE_ENCAP_DPORT,
+  __IFLA_GRE_MAX,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
-#define VTI_ISVTI 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VTI_ISVTI ((__force __be16) 0x0001)
 enum {
- IFLA_VTI_UNSPEC,
+  IFLA_VTI_UNSPEC,
+  IFLA_VTI_LINK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VTI_LINK,
- IFLA_VTI_IKEY,
- IFLA_VTI_OKEY,
- IFLA_VTI_LOCAL,
+  IFLA_VTI_IKEY,
+  IFLA_VTI_OKEY,
+  IFLA_VTI_LOCAL,
+  IFLA_VTI_REMOTE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IFLA_VTI_REMOTE,
- __IFLA_VTI_MAX,
+  __IFLA_VTI_MAX,
 };
 #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/if_vlan.h b/libc/kernel/uapi/linux/if_vlan.h
index 4cf3c15..85a3239 100644
--- a/libc/kernel/uapi/linux/if_vlan.h
+++ b/libc/kernel/uapi/linux/if_vlan.h
@@ -19,51 +19,51 @@
 #ifndef _UAPI_LINUX_IF_VLAN_H_
 #define _UAPI_LINUX_IF_VLAN_H_
 enum vlan_ioctl_cmds {
- ADD_VLAN_CMD,
+  ADD_VLAN_CMD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEL_VLAN_CMD,
- SET_VLAN_INGRESS_PRIORITY_CMD,
- SET_VLAN_EGRESS_PRIORITY_CMD,
- GET_VLAN_INGRESS_PRIORITY_CMD,
+  DEL_VLAN_CMD,
+  SET_VLAN_INGRESS_PRIORITY_CMD,
+  SET_VLAN_EGRESS_PRIORITY_CMD,
+  GET_VLAN_INGRESS_PRIORITY_CMD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GET_VLAN_EGRESS_PRIORITY_CMD,
- SET_VLAN_NAME_TYPE_CMD,
- SET_VLAN_FLAG_CMD,
- GET_VLAN_REALDEV_NAME_CMD,
+  GET_VLAN_EGRESS_PRIORITY_CMD,
+  SET_VLAN_NAME_TYPE_CMD,
+  SET_VLAN_FLAG_CMD,
+  GET_VLAN_REALDEV_NAME_CMD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GET_VLAN_VID_CMD
+  GET_VLAN_VID_CMD
 };
 enum vlan_flags {
- VLAN_FLAG_REORDER_HDR = 0x1,
+  VLAN_FLAG_REORDER_HDR = 0x1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VLAN_FLAG_GVRP = 0x2,
- VLAN_FLAG_LOOSE_BINDING = 0x4,
- VLAN_FLAG_MVRP = 0x8,
+  VLAN_FLAG_GVRP = 0x2,
+  VLAN_FLAG_LOOSE_BINDING = 0x4,
+  VLAN_FLAG_MVRP = 0x8,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum vlan_name_types {
- VLAN_NAME_TYPE_PLUS_VID,
- VLAN_NAME_TYPE_RAW_PLUS_VID,
- VLAN_NAME_TYPE_PLUS_VID_NO_PAD,
+  VLAN_NAME_TYPE_PLUS_VID,
+  VLAN_NAME_TYPE_RAW_PLUS_VID,
+  VLAN_NAME_TYPE_PLUS_VID_NO_PAD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD,
- VLAN_NAME_TYPE_HIGHEST
+  VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD,
+  VLAN_NAME_TYPE_HIGHEST
 };
 struct vlan_ioctl_args {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cmd;
- char device1[24];
- union {
- char device2[24];
+  int cmd;
+  char device1[24];
+  union {
+    char device2[24];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int VID;
- unsigned int skb_priority;
- unsigned int name_type;
- unsigned int bind_type;
+    int VID;
+    unsigned int skb_priority;
+    unsigned int name_type;
+    unsigned int bind_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flag;
- } u;
- short vlan_qos;
+    unsigned int flag;
+  } u;
+  short vlan_qos;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index dfa8ca2..c20e135 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -22,11 +22,11 @@
 #include <asm/byteorder.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct igmphdr {
- __u8 type;
- __u8 code;
- __sum16 csum;
+  __u8 type;
+  __u8 code;
+  __sum16 csum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 group;
+  __be32 group;
 };
 #define IGMPV3_MODE_IS_INCLUDE 1
 #define IGMPV3_MODE_IS_EXCLUDE 2
@@ -37,47 +37,42 @@
 #define IGMPV3_BLOCK_OLD_SOURCES 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct igmpv3_grec {
- __u8 grec_type;
- __u8 grec_auxwords;
- __be16 grec_nsrcs;
+  __u8 grec_type;
+  __u8 grec_auxwords;
+  __be16 grec_nsrcs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 grec_mca;
- __be32 grec_src[0];
+  __be32 grec_mca;
+  __be32 grec_src[0];
 };
 struct igmpv3_report {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u8 resv1;
- __be16 csum;
- __be16 resv2;
+  __u8 type;
+  __u8 resv1;
+  __be16 csum;
+  __be16 resv2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 ngrec;
- struct igmpv3_grec grec[0];
+  __be16 ngrec;
+  struct igmpv3_grec grec[0];
 };
 struct igmpv3_query {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u8 code;
- __be16 csum;
- __be32 group;
+  __u8 type;
+  __u8 code;
+  __be16 csum;
+  __be32 group;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u8 qrv:3,
- suppress:1,
- resv:4;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 qrv : 3, suppress : 1, resv : 4;
 #elif defined(__BIG_ENDIAN_BITFIELD)
- __u8 resv:4,
- suppress:1,
- qrv:3;
+  __u8 resv : 4, suppress : 1, qrv : 3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #error "Please fix <asm/byteorder.h>"
 #endif
- __u8 qqic;
+  __u8 qqic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 nsrcs;
- __be32 srcs[0];
+  __be16 nsrcs;
+  __be32 srcs[0];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index e90209b..6a6d16e 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -22,71 +22,71 @@
 #include <linux/socket.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPPROTO_IP = 0,
+  IPPROTO_IP = 0,
 #define IPPROTO_IP IPPROTO_IP
- IPPROTO_ICMP = 1,
+  IPPROTO_ICMP = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_ICMP IPPROTO_ICMP
- IPPROTO_IGMP = 2,
+  IPPROTO_IGMP = 2,
 #define IPPROTO_IGMP IPPROTO_IGMP
- IPPROTO_IPIP = 4,
+  IPPROTO_IPIP = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_IPIP IPPROTO_IPIP
- IPPROTO_TCP = 6,
+  IPPROTO_TCP = 6,
 #define IPPROTO_TCP IPPROTO_TCP
- IPPROTO_EGP = 8,
+  IPPROTO_EGP = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_EGP IPPROTO_EGP
- IPPROTO_PUP = 12,
+  IPPROTO_PUP = 12,
 #define IPPROTO_PUP IPPROTO_PUP
- IPPROTO_UDP = 17,
+  IPPROTO_UDP = 17,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_UDP IPPROTO_UDP
- IPPROTO_IDP = 22,
+  IPPROTO_IDP = 22,
 #define IPPROTO_IDP IPPROTO_IDP
- IPPROTO_TP = 29,
+  IPPROTO_TP = 29,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_TP IPPROTO_TP
- IPPROTO_DCCP = 33,
+  IPPROTO_DCCP = 33,
 #define IPPROTO_DCCP IPPROTO_DCCP
- IPPROTO_IPV6 = 41,
+  IPPROTO_IPV6 = 41,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_IPV6 IPPROTO_IPV6
- IPPROTO_RSVP = 46,
+  IPPROTO_RSVP = 46,
 #define IPPROTO_RSVP IPPROTO_RSVP
- IPPROTO_GRE = 47,
+  IPPROTO_GRE = 47,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_GRE IPPROTO_GRE
- IPPROTO_ESP = 50,
+  IPPROTO_ESP = 50,
 #define IPPROTO_ESP IPPROTO_ESP
- IPPROTO_AH = 51,
+  IPPROTO_AH = 51,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_AH IPPROTO_AH
- IPPROTO_MTP = 92,
+  IPPROTO_MTP = 92,
 #define IPPROTO_MTP IPPROTO_MTP
- IPPROTO_BEETPH = 94,
+  IPPROTO_BEETPH = 94,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_BEETPH IPPROTO_BEETPH
- IPPROTO_ENCAP = 98,
+  IPPROTO_ENCAP = 98,
 #define IPPROTO_ENCAP IPPROTO_ENCAP
- IPPROTO_PIM = 103,
+  IPPROTO_PIM = 103,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_PIM IPPROTO_PIM
- IPPROTO_COMP = 108,
+  IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
- IPPROTO_SCTP = 132,
+  IPPROTO_SCTP = 132,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_SCTP IPPROTO_SCTP
- IPPROTO_UDPLITE = 136,
+  IPPROTO_UDPLITE = 136,
 #define IPPROTO_UDPLITE IPPROTO_UDPLITE
- IPPROTO_RAW = 255,
+  IPPROTO_RAW = 255,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_RAW IPPROTO_RAW
- IPPROTO_MAX
+  IPPROTO_MAX
 };
 struct in_addr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 s_addr;
+  __be32 s_addr;
 };
 #define IP_TOS 1
 #define IP_TTL 2
@@ -124,99 +124,99 @@
 #define IP_PMTUDISC_DO 2
 #define IP_PMTUDISC_PROBE 3
 #define IP_PMTUDISC_INTERFACE 4
-#define IP_MULTICAST_IF 32
+#define IP_PMTUDISC_OMIT 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP_MULTICAST_IF 32
 #define IP_MULTICAST_TTL 33
 #define IP_MULTICAST_LOOP 34
 #define IP_ADD_MEMBERSHIP 35
-#define IP_DROP_MEMBERSHIP 36
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP_DROP_MEMBERSHIP 36
 #define IP_UNBLOCK_SOURCE 37
 #define IP_BLOCK_SOURCE 38
 #define IP_ADD_SOURCE_MEMBERSHIP 39
-#define IP_DROP_SOURCE_MEMBERSHIP 40
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP_DROP_SOURCE_MEMBERSHIP 40
 #define IP_MSFILTER 41
 #define MCAST_JOIN_GROUP 42
 #define MCAST_BLOCK_SOURCE 43
-#define MCAST_UNBLOCK_SOURCE 44
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MCAST_UNBLOCK_SOURCE 44
 #define MCAST_LEAVE_GROUP 45
 #define MCAST_JOIN_SOURCE_GROUP 46
 #define MCAST_LEAVE_SOURCE_GROUP 47
-#define MCAST_MSFILTER 48
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MCAST_MSFILTER 48
 #define IP_MULTICAST_ALL 49
 #define IP_UNICAST_IF 50
 #define MCAST_EXCLUDE 0
-#define MCAST_INCLUDE 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MCAST_INCLUDE 1
 #define IP_DEFAULT_MULTICAST_TTL 1
 #define IP_DEFAULT_MULTICAST_LOOP 1
 struct ip_mreq {
- struct in_addr imr_multiaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr imr_interface;
+  struct in_addr imr_multiaddr;
+  struct in_addr imr_interface;
 };
 struct ip_mreqn {
- struct in_addr imr_multiaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr imr_address;
- int imr_ifindex;
+  struct in_addr imr_multiaddr;
+  struct in_addr imr_address;
+  int imr_ifindex;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_mreq_source {
+  __be32 imr_multiaddr;
+  __be32 imr_interface;
+  __be32 imr_sourceaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 imr_multiaddr;
- __be32 imr_interface;
- __be32 imr_sourceaddr;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_msfilter {
- __be32 imsf_multiaddr;
- __be32 imsf_interface;
- __u32 imsf_fmode;
+  __be32 imsf_multiaddr;
+  __be32 imsf_interface;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 imsf_numsrc;
- __be32 imsf_slist[1];
+  __u32 imsf_fmode;
+  __u32 imsf_numsrc;
+  __be32 imsf_slist[1];
 };
-#define IP_MSFILTER_SIZE(numsrc)   (sizeof(struct ip_msfilter) - sizeof(__u32)   + (numsrc) * sizeof(__u32))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP_MSFILTER_SIZE(numsrc) (sizeof(struct ip_msfilter) - sizeof(__u32) + (numsrc) * sizeof(__u32))
 struct group_req {
- __u32 gr_interface;
- struct __kernel_sockaddr_storage gr_group;
+  __u32 gr_interface;
+  struct __kernel_sockaddr_storage gr_group;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct group_source_req {
- __u32 gsr_interface;
- struct __kernel_sockaddr_storage gsr_group;
- struct __kernel_sockaddr_storage gsr_source;
+  __u32 gsr_interface;
+  struct __kernel_sockaddr_storage gsr_group;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct __kernel_sockaddr_storage gsr_source;
 };
 struct group_filter {
- __u32 gf_interface;
- struct __kernel_sockaddr_storage gf_group;
+  __u32 gf_interface;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gf_fmode;
- __u32 gf_numsrc;
- struct __kernel_sockaddr_storage gf_slist[1];
+  struct __kernel_sockaddr_storage gf_group;
+  __u32 gf_fmode;
+  __u32 gf_numsrc;
+  struct __kernel_sockaddr_storage gf_slist[1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define GROUP_FILTER_SIZE(numsrc)   (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage)   + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
+#define GROUP_FILTER_SIZE(numsrc) (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage) + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
 struct in_pktinfo {
- int ipi_ifindex;
- struct in_addr ipi_spec_dst;
+  int ipi_ifindex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr ipi_addr;
+  struct in_addr ipi_spec_dst;
+  struct in_addr ipi_addr;
 };
 #define __SOCK_SIZE__ 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_in {
+  __kernel_sa_family_t sin_family;
+  __be16 sin_port;
+  struct in_addr sin_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_sa_family_t sin_family;
- __be16 sin_port;
- struct in_addr sin_addr;
- unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- sizeof(unsigned short int) - sizeof(struct in_addr)];
+  unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) - sizeof(unsigned short int) - sizeof(struct in_addr)];
 };
 #define sin_zero __pad
 #define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
diff --git a/libc/kernel/uapi/linux/in6.h b/libc/kernel/uapi/linux/in6.h
index 641a69b..e54bc33 100644
--- a/libc/kernel/uapi/linux/in6.h
+++ b/libc/kernel/uapi/linux/in6.h
@@ -23,15 +23,15 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if __UAPI_DEF_IN6_ADDR
 struct in6_addr {
- union {
- __u8 u6_addr8[16];
+  union {
+    __u8 u6_addr8[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if __UAPI_DEF_IN6_ADDR_ALT
- __be16 u6_addr16[8];
- __be32 u6_addr32[4];
+    __be16 u6_addr16[8];
+    __be32 u6_addr32[4];
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } in6_u;
+  } in6_u;
 #define s6_addr in6_u.u6_addr8
 #if __UAPI_DEF_IN6_ADDR_ALT
 #define s6_addr16 in6_u.u6_addr16
@@ -43,35 +43,35 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if __UAPI_DEF_SOCKADDR_IN6
 struct sockaddr_in6 {
- unsigned short int sin6_family;
- __be16 sin6_port;
+  unsigned short int sin6_family;
+  __be16 sin6_port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 sin6_flowinfo;
- struct in6_addr sin6_addr;
- __u32 sin6_scope_id;
+  __be32 sin6_flowinfo;
+  struct in6_addr sin6_addr;
+  __u32 sin6_scope_id;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #if __UAPI_DEF_IPV6_MREQ
 struct ipv6_mreq {
- struct in6_addr ipv6mr_multiaddr;
+  struct in6_addr ipv6mr_multiaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ipv6mr_ifindex;
+  int ipv6mr_ifindex;
 };
 #endif
 #define ipv6mr_acaddr ipv6mr_multiaddr
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct in6_flowlabel_req {
- struct in6_addr flr_dst;
- __be32 flr_label;
- __u8 flr_action;
+  struct in6_addr flr_dst;
+  __be32 flr_label;
+  __u8 flr_action;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flr_share;
- __u16 flr_flags;
- __u16 flr_expires;
- __u16 flr_linger;
+  __u8 flr_share;
+  __u16 flr_flags;
+  __u16 flr_expires;
+  __u16 flr_linger;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __flr_pad;
+  __u32 __flr_pad;
 };
 #define IPV6_FL_A_GET 0
 #define IPV6_FL_A_PUT 1
@@ -128,67 +128,72 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_TLV_JUMBO 194
 #define IPV6_TLV_HAO 201
+#if __UAPI_DEF_IPV6_OPTIONS
 #define IPV6_ADDRFORM 1
-#define IPV6_2292PKTINFO 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_2292PKTINFO 2
 #define IPV6_2292HOPOPTS 3
 #define IPV6_2292DSTOPTS 4
 #define IPV6_2292RTHDR 5
-#define IPV6_2292PKTOPTIONS 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_2292PKTOPTIONS 6
 #define IPV6_CHECKSUM 7
 #define IPV6_2292HOPLIMIT 8
 #define IPV6_NEXTHOP 9
-#define IPV6_AUTHHDR 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_AUTHHDR 10
 #define IPV6_FLOWINFO 11
 #define IPV6_UNICAST_HOPS 16
 #define IPV6_MULTICAST_IF 17
-#define IPV6_MULTICAST_HOPS 18
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_MULTICAST_HOPS 18
 #define IPV6_MULTICAST_LOOP 19
 #define IPV6_ADD_MEMBERSHIP 20
 #define IPV6_DROP_MEMBERSHIP 21
-#define IPV6_ROUTER_ALERT 22
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_ROUTER_ALERT 22
 #define IPV6_MTU_DISCOVER 23
 #define IPV6_MTU 24
 #define IPV6_RECVERR 25
-#define IPV6_V6ONLY 26
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_V6ONLY 26
 #define IPV6_JOIN_ANYCAST 27
 #define IPV6_LEAVE_ANYCAST 28
 #define IPV6_PMTUDISC_DONT 0
-#define IPV6_PMTUDISC_WANT 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_PMTUDISC_WANT 1
 #define IPV6_PMTUDISC_DO 2
 #define IPV6_PMTUDISC_PROBE 3
 #define IPV6_PMTUDISC_INTERFACE 4
-#define IPV6_FLOWLABEL_MGR 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_PMTUDISC_OMIT 5
+#define IPV6_FLOWLABEL_MGR 32
 #define IPV6_FLOWINFO_SEND 33
 #define IPV6_IPSEC_POLICY 34
-#define IPV6_XFRM_POLICY 35
-#define IPV6_RECVPKTINFO 49
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_XFRM_POLICY 35
+#endif
+#define IPV6_RECVPKTINFO 49
 #define IPV6_PKTINFO 50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RECVHOPLIMIT 51
 #define IPV6_HOPLIMIT 52
 #define IPV6_RECVHOPOPTS 53
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_HOPOPTS 54
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RTHDRDSTOPTS 55
 #define IPV6_RECVRTHDR 56
 #define IPV6_RTHDR 57
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RECVDSTOPTS 58
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_DSTOPTS 59
 #define IPV6_RECVPATHMTU 60
 #define IPV6_PATHMTU 61
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_DONTFRAG 62
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RECVTCLASS 66
 #define IPV6_TCLASS 67
+#define IPV6_AUTOFLOWLABEL 70
 #define IPV6_ADDR_PREFERENCES 72
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PREFER_SRC_TMP 0x0001
diff --git a/libc/kernel/uapi/linux/in_route.h b/libc/kernel/uapi/linux/in_route.h
index 50913a9..9389648 100644
--- a/libc/kernel/uapi/linux/in_route.h
+++ b/libc/kernel/uapi/linux/in_route.h
@@ -39,7 +39,7 @@
 #define RTCF_MULTICAST 0x20000000
 #define RTCF_REJECT 0x40000000
 #define RTCF_LOCAL 0x80000000
-#define RTCF_NAT (RTCF_DNAT|RTCF_SNAT)
+#define RTCF_NAT (RTCF_DNAT | RTCF_SNAT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RT_TOS(tos) ((tos)&IPTOS_TOS_MASK)
+#define RT_TOS(tos) ((tos) & IPTOS_TOS_MASK)
 #endif
diff --git a/libc/kernel/uapi/linux/inet_diag.h b/libc/kernel/uapi/linux/inet_diag.h
index b5504a9..447d928 100644
--- a/libc/kernel/uapi/linux/inet_diag.h
+++ b/libc/kernel/uapi/linux/inet_diag.h
@@ -24,115 +24,125 @@
 #define DCCPDIAG_GETSOCK 19
 #define INET_DIAG_GETSOCK_MAX 24
 struct inet_diag_sockid {
- __be16 idiag_sport;
+  __be16 idiag_sport;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 idiag_dport;
- __be32 idiag_src[4];
- __be32 idiag_dst[4];
- __u32 idiag_if;
+  __be16 idiag_dport;
+  __be32 idiag_src[4];
+  __be32 idiag_dst[4];
+  __u32 idiag_if;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 idiag_cookie[2];
+  __u32 idiag_cookie[2];
 #define INET_DIAG_NOCOOKIE (~0U)
 };
 struct inet_diag_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 idiag_family;
- __u8 idiag_src_len;
- __u8 idiag_dst_len;
- __u8 idiag_ext;
+  __u8 idiag_family;
+  __u8 idiag_src_len;
+  __u8 idiag_dst_len;
+  __u8 idiag_ext;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct inet_diag_sockid id;
- __u32 idiag_states;
- __u32 idiag_dbs;
+  struct inet_diag_sockid id;
+  __u32 idiag_states;
+  __u32 idiag_dbs;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct inet_diag_req_v2 {
- __u8 sdiag_family;
- __u8 sdiag_protocol;
- __u8 idiag_ext;
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u8 idiag_ext;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad;
- __u32 idiag_states;
- struct inet_diag_sockid id;
+  __u8 pad;
+  __u32 idiag_states;
+  struct inet_diag_sockid id;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- INET_DIAG_REQ_NONE,
- INET_DIAG_REQ_BYTECODE,
+  INET_DIAG_REQ_NONE,
+  INET_DIAG_REQ_BYTECODE,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INET_DIAG_REQ_MAX INET_DIAG_REQ_BYTECODE
 struct inet_diag_bc_op {
- unsigned char code;
- unsigned char yes;
+  unsigned char code;
+  unsigned char yes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short no;
+  unsigned short no;
 };
 enum {
- INET_DIAG_BC_NOP,
+  INET_DIAG_BC_NOP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INET_DIAG_BC_JMP,
- INET_DIAG_BC_S_GE,
- INET_DIAG_BC_S_LE,
- INET_DIAG_BC_D_GE,
+  INET_DIAG_BC_JMP,
+  INET_DIAG_BC_S_GE,
+  INET_DIAG_BC_S_LE,
+  INET_DIAG_BC_D_GE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INET_DIAG_BC_D_LE,
- INET_DIAG_BC_AUTO,
- INET_DIAG_BC_S_COND,
- INET_DIAG_BC_D_COND,
+  INET_DIAG_BC_D_LE,
+  INET_DIAG_BC_AUTO,
+  INET_DIAG_BC_S_COND,
+  INET_DIAG_BC_D_COND,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct inet_diag_hostcond {
- __u8 family;
- __u8 prefix_len;
+  __u8 family;
+  __u8 prefix_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int port;
- __be32 addr[0];
+  int port;
+  __be32 addr[0];
 };
 struct inet_diag_msg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 idiag_family;
- __u8 idiag_state;
- __u8 idiag_timer;
- __u8 idiag_retrans;
+  __u8 idiag_family;
+  __u8 idiag_state;
+  __u8 idiag_timer;
+  __u8 idiag_retrans;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct inet_diag_sockid id;
- __u32 idiag_expires;
- __u32 idiag_rqueue;
- __u32 idiag_wqueue;
+  struct inet_diag_sockid id;
+  __u32 idiag_expires;
+  __u32 idiag_rqueue;
+  __u32 idiag_wqueue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 idiag_uid;
- __u32 idiag_inode;
+  __u32 idiag_uid;
+  __u32 idiag_inode;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INET_DIAG_NONE,
- INET_DIAG_MEMINFO,
- INET_DIAG_INFO,
- INET_DIAG_VEGASINFO,
+  INET_DIAG_NONE,
+  INET_DIAG_MEMINFO,
+  INET_DIAG_INFO,
+  INET_DIAG_VEGASINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INET_DIAG_CONG,
- INET_DIAG_TOS,
- INET_DIAG_TCLASS,
- INET_DIAG_SKMEMINFO,
+  INET_DIAG_CONG,
+  INET_DIAG_TOS,
+  INET_DIAG_TCLASS,
+  INET_DIAG_SKMEMINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INET_DIAG_SHUTDOWN,
+  INET_DIAG_SHUTDOWN,
+  INET_DIAG_DCTCPINFO,
 };
-#define INET_DIAG_MAX INET_DIAG_SHUTDOWN
+#define INET_DIAG_MAX INET_DIAG_DCTCPINFO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct inet_diag_meminfo {
+  __u32 idiag_rmem;
+  __u32 idiag_wmem;
+  __u32 idiag_fmem;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 idiag_rmem;
- __u32 idiag_wmem;
- __u32 idiag_fmem;
- __u32 idiag_tmem;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 idiag_tmem;
 };
 struct tcpvegas_info {
- __u32 tcpv_enabled;
- __u32 tcpv_rttcnt;
+  __u32 tcpv_enabled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcpv_rtt;
- __u32 tcpv_minrtt;
+  __u32 tcpv_rttcnt;
+  __u32 tcpv_rtt;
+  __u32 tcpv_minrtt;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct tcp_dctcp_info {
+  __u16 dctcp_enabled;
+  __u16 dctcp_ce_state;
+  __u32 dctcp_alpha;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 dctcp_ab_ecn;
+  __u32 dctcp_ab_tot;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/inotify.h b/libc/kernel/uapi/linux/inotify.h
index f9b020a..8930be3 100644
--- a/libc/kernel/uapi/linux/inotify.h
+++ b/libc/kernel/uapi/linux/inotify.h
@@ -22,12 +22,12 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct inotify_event {
- __s32 wd;
- __u32 mask;
- __u32 cookie;
+  __s32 wd;
+  __u32 mask;
+  __u32 cookie;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 len;
- char name[0];
+  __u32 len;
+  char name[0];
 };
 #define IN_ACCESS 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -58,7 +58,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_ISDIR 0x40000000
 #define IN_ONESHOT 0x80000000
-#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE |   IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM |   IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF |   IN_MOVE_SELF)
+#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | IN_MOVE_SELF)
 #define IN_CLOEXEC O_CLOEXEC
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_NONBLOCK O_NONBLOCK
diff --git a/libc/kernel/uapi/linux/input.h b/libc/kernel/uapi/linux/input.h
index b9d5b2a..88a1f0e 100644
--- a/libc/kernel/uapi/linux/input.h
+++ b/libc/kernel/uapi/linux/input.h
@@ -24,40 +24,40 @@
 #include <sys/types.h>
 #include <linux/types.h>
 struct input_event {
- struct timeval time;
+  struct timeval time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 type;
- __u16 code;
- __s32 value;
+  __u16 type;
+  __u16 code;
+  __s32 value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_VERSION 0x010001
 struct input_id {
- __u16 bustype;
- __u16 vendor;
+  __u16 bustype;
+  __u16 vendor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 product;
- __u16 version;
+  __u16 product;
+  __u16 version;
 };
 struct input_absinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 value;
- __s32 minimum;
- __s32 maximum;
- __s32 fuzz;
+  __s32 value;
+  __s32 minimum;
+  __s32 maximum;
+  __s32 fuzz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 flat;
- __s32 resolution;
+  __s32 flat;
+  __s32 resolution;
 };
 struct input_keymap_entry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_KEYMAP_BY_INDEX (1 << 0)
- __u8 flags;
- __u8 len;
- __u16 index;
+  __u8 flags;
+  __u8 len;
+  __u16 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 keycode;
- __u8 scancode[32];
+  __u32 keycode;
+  __u8 scancode[32];
 };
 #define EVIOCGVERSION _IOR('E', 0x01, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -98,963 +98,972 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_PROP_SEMI_MT 0x03
 #define INPUT_PROP_TOPBUTTONPAD 0x04
+#define INPUT_PROP_POINTING_STICK 0x05
 #define INPUT_PROP_MAX 0x1f
-#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
 #define EV_SYN 0x00
 #define EV_KEY 0x01
 #define EV_REL 0x02
-#define EV_ABS 0x03
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EV_ABS 0x03
 #define EV_MSC 0x04
 #define EV_SW 0x05
 #define EV_LED 0x11
-#define EV_SND 0x12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EV_SND 0x12
 #define EV_REP 0x14
 #define EV_FF 0x15
 #define EV_PWR 0x16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_FF_STATUS 0x17
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_MAX 0x1f
-#define EV_CNT (EV_MAX+1)
+#define EV_CNT (EV_MAX + 1)
 #define SYN_REPORT 0
-#define SYN_CONFIG 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYN_CONFIG 1
 #define SYN_MT_REPORT 2
 #define SYN_DROPPED 3
 #define SYN_MAX 0xf
-#define SYN_CNT (SYN_MAX+1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYN_CNT (SYN_MAX + 1)
 #define KEY_RESERVED 0
 #define KEY_ESC 1
 #define KEY_1 2
-#define KEY_2 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_2 3
 #define KEY_3 4
 #define KEY_4 5
 #define KEY_5 6
-#define KEY_6 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_6 7
 #define KEY_7 8
 #define KEY_8 9
 #define KEY_9 10
-#define KEY_0 11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_0 11
 #define KEY_MINUS 12
 #define KEY_EQUAL 13
 #define KEY_BACKSPACE 14
-#define KEY_TAB 15
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_TAB 15
 #define KEY_Q 16
 #define KEY_W 17
 #define KEY_E 18
-#define KEY_R 19
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_R 19
 #define KEY_T 20
 #define KEY_Y 21
 #define KEY_U 22
-#define KEY_I 23
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_I 23
 #define KEY_O 24
 #define KEY_P 25
 #define KEY_LEFTBRACE 26
-#define KEY_RIGHTBRACE 27
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_RIGHTBRACE 27
 #define KEY_ENTER 28
 #define KEY_LEFTCTRL 29
 #define KEY_A 30
-#define KEY_S 31
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_S 31
 #define KEY_D 32
 #define KEY_F 33
 #define KEY_G 34
-#define KEY_H 35
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_H 35
 #define KEY_J 36
 #define KEY_K 37
 #define KEY_L 38
-#define KEY_SEMICOLON 39
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SEMICOLON 39
 #define KEY_APOSTROPHE 40
 #define KEY_GRAVE 41
 #define KEY_LEFTSHIFT 42
-#define KEY_BACKSLASH 43
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BACKSLASH 43
 #define KEY_Z 44
 #define KEY_X 45
 #define KEY_C 46
-#define KEY_V 47
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_V 47
 #define KEY_B 48
 #define KEY_N 49
 #define KEY_M 50
-#define KEY_COMMA 51
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_COMMA 51
 #define KEY_DOT 52
 #define KEY_SLASH 53
 #define KEY_RIGHTSHIFT 54
-#define KEY_KPASTERISK 55
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_KPASTERISK 55
 #define KEY_LEFTALT 56
 #define KEY_SPACE 57
 #define KEY_CAPSLOCK 58
-#define KEY_F1 59
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_F1 59
 #define KEY_F2 60
 #define KEY_F3 61
 #define KEY_F4 62
-#define KEY_F5 63
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_F5 63
 #define KEY_F6 64
 #define KEY_F7 65
 #define KEY_F8 66
-#define KEY_F9 67
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_F9 67
 #define KEY_F10 68
 #define KEY_NUMLOCK 69
 #define KEY_SCROLLLOCK 70
-#define KEY_KP7 71
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_KP7 71
 #define KEY_KP8 72
 #define KEY_KP9 73
 #define KEY_KPMINUS 74
-#define KEY_KP4 75
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_KP4 75
 #define KEY_KP5 76
 #define KEY_KP6 77
 #define KEY_KPPLUS 78
-#define KEY_KP1 79
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_KP1 79
 #define KEY_KP2 80
 #define KEY_KP3 81
 #define KEY_KP0 82
-#define KEY_KPDOT 83
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_KPDOT 83
 #define KEY_ZENKAKUHANKAKU 85
 #define KEY_102ND 86
 #define KEY_F11 87
-#define KEY_F12 88
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_F12 88
 #define KEY_RO 89
 #define KEY_KATAKANA 90
 #define KEY_HIRAGANA 91
-#define KEY_HENKAN 92
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_HENKAN 92
 #define KEY_KATAKANAHIRAGANA 93
 #define KEY_MUHENKAN 94
 #define KEY_KPJPCOMMA 95
-#define KEY_KPENTER 96
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_KPENTER 96
 #define KEY_RIGHTCTRL 97
 #define KEY_KPSLASH 98
 #define KEY_SYSRQ 99
-#define KEY_RIGHTALT 100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_RIGHTALT 100
 #define KEY_LINEFEED 101
 #define KEY_HOME 102
 #define KEY_UP 103
-#define KEY_PAGEUP 104
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_PAGEUP 104
 #define KEY_LEFT 105
 #define KEY_RIGHT 106
 #define KEY_END 107
-#define KEY_DOWN 108
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_DOWN 108
 #define KEY_PAGEDOWN 109
 #define KEY_INSERT 110
 #define KEY_DELETE 111
-#define KEY_MACRO 112
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_MACRO 112
 #define KEY_MUTE 113
 #define KEY_VOLUMEDOWN 114
 #define KEY_VOLUMEUP 115
-#define KEY_POWER 116
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_POWER 116
 #define KEY_KPEQUAL 117
 #define KEY_KPPLUSMINUS 118
 #define KEY_PAUSE 119
-#define KEY_SCALE 120
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SCALE 120
 #define KEY_KPCOMMA 121
 #define KEY_HANGEUL 122
 #define KEY_HANGUEL KEY_HANGEUL
-#define KEY_HANJA 123
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_HANJA 123
 #define KEY_YEN 124
 #define KEY_LEFTMETA 125
 #define KEY_RIGHTMETA 126
-#define KEY_COMPOSE 127
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_COMPOSE 127
 #define KEY_STOP 128
 #define KEY_AGAIN 129
 #define KEY_PROPS 130
-#define KEY_UNDO 131
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_UNDO 131
 #define KEY_FRONT 132
 #define KEY_COPY 133
 #define KEY_OPEN 134
-#define KEY_PASTE 135
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_PASTE 135
 #define KEY_FIND 136
 #define KEY_CUT 137
 #define KEY_HELP 138
-#define KEY_MENU 139
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_MENU 139
 #define KEY_CALC 140
 #define KEY_SETUP 141
 #define KEY_SLEEP 142
-#define KEY_WAKEUP 143
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_WAKEUP 143
 #define KEY_FILE 144
 #define KEY_SENDFILE 145
 #define KEY_DELETEFILE 146
-#define KEY_XFER 147
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_XFER 147
 #define KEY_PROG1 148
 #define KEY_PROG2 149
 #define KEY_WWW 150
-#define KEY_MSDOS 151
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_MSDOS 151
 #define KEY_COFFEE 152
 #define KEY_SCREENLOCK KEY_COFFEE
 #define KEY_DIRECTION 153
-#define KEY_CYCLEWINDOWS 154
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CYCLEWINDOWS 154
 #define KEY_MAIL 155
 #define KEY_BOOKMARKS 156
 #define KEY_COMPUTER 157
-#define KEY_BACK 158
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BACK 158
 #define KEY_FORWARD 159
 #define KEY_CLOSECD 160
 #define KEY_EJECTCD 161
-#define KEY_EJECTCLOSECD 162
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_EJECTCLOSECD 162
 #define KEY_NEXTSONG 163
 #define KEY_PLAYPAUSE 164
 #define KEY_PREVIOUSSONG 165
-#define KEY_STOPCD 166
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_STOPCD 166
 #define KEY_RECORD 167
 #define KEY_REWIND 168
 #define KEY_PHONE 169
-#define KEY_ISO 170
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_ISO 170
 #define KEY_CONFIG 171
 #define KEY_HOMEPAGE 172
 #define KEY_REFRESH 173
-#define KEY_EXIT 174
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_EXIT 174
 #define KEY_MOVE 175
 #define KEY_EDIT 176
 #define KEY_SCROLLUP 177
-#define KEY_SCROLLDOWN 178
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SCROLLDOWN 178
 #define KEY_KPLEFTPAREN 179
 #define KEY_KPRIGHTPAREN 180
 #define KEY_NEW 181
-#define KEY_REDO 182
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_REDO 182
 #define KEY_F13 183
 #define KEY_F14 184
 #define KEY_F15 185
-#define KEY_F16 186
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_F16 186
 #define KEY_F17 187
 #define KEY_F18 188
 #define KEY_F19 189
-#define KEY_F20 190
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_F20 190
 #define KEY_F21 191
 #define KEY_F22 192
 #define KEY_F23 193
-#define KEY_F24 194
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_F24 194
 #define KEY_PLAYCD 200
 #define KEY_PAUSECD 201
 #define KEY_PROG3 202
-#define KEY_PROG4 203
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_PROG4 203
 #define KEY_DASHBOARD 204
 #define KEY_SUSPEND 205
 #define KEY_CLOSE 206
-#define KEY_PLAY 207
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_PLAY 207
 #define KEY_FASTFORWARD 208
 #define KEY_BASSBOOST 209
 #define KEY_PRINT 210
-#define KEY_HP 211
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_HP 211
 #define KEY_CAMERA 212
 #define KEY_SOUND 213
 #define KEY_QUESTION 214
-#define KEY_EMAIL 215
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_EMAIL 215
 #define KEY_CHAT 216
 #define KEY_SEARCH 217
 #define KEY_CONNECT 218
-#define KEY_FINANCE 219
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FINANCE 219
 #define KEY_SPORT 220
 #define KEY_SHOP 221
 #define KEY_ALTERASE 222
-#define KEY_CANCEL 223
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CANCEL 223
 #define KEY_BRIGHTNESSDOWN 224
 #define KEY_BRIGHTNESSUP 225
 #define KEY_MEDIA 226
-#define KEY_SWITCHVIDEOMODE 227
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SWITCHVIDEOMODE 227
 #define KEY_KBDILLUMTOGGLE 228
 #define KEY_KBDILLUMDOWN 229
 #define KEY_KBDILLUMUP 230
-#define KEY_SEND 231
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SEND 231
 #define KEY_REPLY 232
 #define KEY_FORWARDMAIL 233
 #define KEY_SAVE 234
-#define KEY_DOCUMENTS 235
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_DOCUMENTS 235
 #define KEY_BATTERY 236
 #define KEY_BLUETOOTH 237
 #define KEY_WLAN 238
-#define KEY_UWB 239
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_UWB 239
 #define KEY_UNKNOWN 240
 #define KEY_VIDEO_NEXT 241
 #define KEY_VIDEO_PREV 242
-#define KEY_BRIGHTNESS_CYCLE 243
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BRIGHTNESS_CYCLE 243
 #define KEY_BRIGHTNESS_AUTO 244
 #define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO
 #define KEY_DISPLAY_OFF 245
-#define KEY_WWAN 246
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_WWAN 246
 #define KEY_WIMAX KEY_WWAN
 #define KEY_RFKILL 247
 #define KEY_MICMUTE 248
-#define BTN_MISC 0x100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_MISC 0x100
 #define BTN_0 0x100
 #define BTN_1 0x101
 #define BTN_2 0x102
-#define BTN_3 0x103
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_3 0x103
 #define BTN_4 0x104
 #define BTN_5 0x105
 #define BTN_6 0x106
-#define BTN_7 0x107
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_7 0x107
 #define BTN_8 0x108
 #define BTN_9 0x109
 #define BTN_MOUSE 0x110
-#define BTN_LEFT 0x110
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_LEFT 0x110
 #define BTN_RIGHT 0x111
 #define BTN_MIDDLE 0x112
 #define BTN_SIDE 0x113
-#define BTN_EXTRA 0x114
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_EXTRA 0x114
 #define BTN_FORWARD 0x115
 #define BTN_BACK 0x116
 #define BTN_TASK 0x117
-#define BTN_JOYSTICK 0x120
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_JOYSTICK 0x120
 #define BTN_TRIGGER 0x120
 #define BTN_THUMB 0x121
 #define BTN_THUMB2 0x122
-#define BTN_TOP 0x123
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_TOP 0x123
 #define BTN_TOP2 0x124
 #define BTN_PINKIE 0x125
 #define BTN_BASE 0x126
-#define BTN_BASE2 0x127
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_BASE2 0x127
 #define BTN_BASE3 0x128
 #define BTN_BASE4 0x129
 #define BTN_BASE5 0x12a
-#define BTN_BASE6 0x12b
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_BASE6 0x12b
 #define BTN_DEAD 0x12f
 #define BTN_GAMEPAD 0x130
 #define BTN_SOUTH 0x130
-#define BTN_A BTN_SOUTH
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_A BTN_SOUTH
 #define BTN_EAST 0x131
 #define BTN_B BTN_EAST
 #define BTN_C 0x132
-#define BTN_NORTH 0x133
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_NORTH 0x133
 #define BTN_X BTN_NORTH
 #define BTN_WEST 0x134
 #define BTN_Y BTN_WEST
-#define BTN_Z 0x135
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_Z 0x135
 #define BTN_TL 0x136
 #define BTN_TR 0x137
 #define BTN_TL2 0x138
-#define BTN_TR2 0x139
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_TR2 0x139
 #define BTN_SELECT 0x13a
 #define BTN_START 0x13b
 #define BTN_MODE 0x13c
-#define BTN_THUMBL 0x13d
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_THUMBL 0x13d
 #define BTN_THUMBR 0x13e
 #define BTN_DIGI 0x140
 #define BTN_TOOL_PEN 0x140
-#define BTN_TOOL_RUBBER 0x141
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_TOOL_RUBBER 0x141
 #define BTN_TOOL_BRUSH 0x142
 #define BTN_TOOL_PENCIL 0x143
 #define BTN_TOOL_AIRBRUSH 0x144
-#define BTN_TOOL_FINGER 0x145
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_TOOL_FINGER 0x145
 #define BTN_TOOL_MOUSE 0x146
 #define BTN_TOOL_LENS 0x147
 #define BTN_TOOL_QUINTTAP 0x148
-#define BTN_TOUCH 0x14a
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_TOUCH 0x14a
 #define BTN_STYLUS 0x14b
 #define BTN_STYLUS2 0x14c
 #define BTN_TOOL_DOUBLETAP 0x14d
-#define BTN_TOOL_TRIPLETAP 0x14e
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_TOOL_TRIPLETAP 0x14e
 #define BTN_TOOL_QUADTAP 0x14f
 #define BTN_WHEEL 0x150
 #define BTN_GEAR_DOWN 0x150
-#define BTN_GEAR_UP 0x151
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_GEAR_UP 0x151
 #define KEY_OK 0x160
 #define KEY_SELECT 0x161
 #define KEY_GOTO 0x162
-#define KEY_CLEAR 0x163
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CLEAR 0x163
 #define KEY_POWER2 0x164
 #define KEY_OPTION 0x165
 #define KEY_INFO 0x166
-#define KEY_TIME 0x167
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_TIME 0x167
 #define KEY_VENDOR 0x168
 #define KEY_ARCHIVE 0x169
 #define KEY_PROGRAM 0x16a
-#define KEY_CHANNEL 0x16b
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CHANNEL 0x16b
 #define KEY_FAVORITES 0x16c
 #define KEY_EPG 0x16d
 #define KEY_PVR 0x16e
-#define KEY_MHP 0x16f
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_MHP 0x16f
 #define KEY_LANGUAGE 0x170
 #define KEY_TITLE 0x171
 #define KEY_SUBTITLE 0x172
-#define KEY_ANGLE 0x173
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_ANGLE 0x173
 #define KEY_ZOOM 0x174
 #define KEY_MODE 0x175
 #define KEY_KEYBOARD 0x176
-#define KEY_SCREEN 0x177
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SCREEN 0x177
 #define KEY_PC 0x178
 #define KEY_TV 0x179
 #define KEY_TV2 0x17a
-#define KEY_VCR 0x17b
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_VCR 0x17b
 #define KEY_VCR2 0x17c
 #define KEY_SAT 0x17d
 #define KEY_SAT2 0x17e
-#define KEY_CD 0x17f
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CD 0x17f
 #define KEY_TAPE 0x180
 #define KEY_RADIO 0x181
 #define KEY_TUNER 0x182
-#define KEY_PLAYER 0x183
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_PLAYER 0x183
 #define KEY_TEXT 0x184
 #define KEY_DVD 0x185
 #define KEY_AUX 0x186
-#define KEY_MP3 0x187
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_MP3 0x187
 #define KEY_AUDIO 0x188
 #define KEY_VIDEO 0x189
 #define KEY_DIRECTORY 0x18a
-#define KEY_LIST 0x18b
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_LIST 0x18b
 #define KEY_MEMO 0x18c
 #define KEY_CALENDAR 0x18d
 #define KEY_RED 0x18e
-#define KEY_GREEN 0x18f
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_GREEN 0x18f
 #define KEY_YELLOW 0x190
 #define KEY_BLUE 0x191
 #define KEY_CHANNELUP 0x192
-#define KEY_CHANNELDOWN 0x193
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CHANNELDOWN 0x193
 #define KEY_FIRST 0x194
 #define KEY_LAST 0x195
 #define KEY_AB 0x196
-#define KEY_NEXT 0x197
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_NEXT 0x197
 #define KEY_RESTART 0x198
 #define KEY_SLOW 0x199
 #define KEY_SHUFFLE 0x19a
-#define KEY_BREAK 0x19b
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BREAK 0x19b
 #define KEY_PREVIOUS 0x19c
 #define KEY_DIGITS 0x19d
 #define KEY_TEEN 0x19e
-#define KEY_TWEN 0x19f
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_TWEN 0x19f
 #define KEY_VIDEOPHONE 0x1a0
 #define KEY_GAMES 0x1a1
 #define KEY_ZOOMIN 0x1a2
-#define KEY_ZOOMOUT 0x1a3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_ZOOMOUT 0x1a3
 #define KEY_ZOOMRESET 0x1a4
 #define KEY_WORDPROCESSOR 0x1a5
 #define KEY_EDITOR 0x1a6
-#define KEY_SPREADSHEET 0x1a7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SPREADSHEET 0x1a7
 #define KEY_GRAPHICSEDITOR 0x1a8
 #define KEY_PRESENTATION 0x1a9
 #define KEY_DATABASE 0x1aa
-#define KEY_NEWS 0x1ab
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_NEWS 0x1ab
 #define KEY_VOICEMAIL 0x1ac
 #define KEY_ADDRESSBOOK 0x1ad
 #define KEY_MESSENGER 0x1ae
-#define KEY_DISPLAYTOGGLE 0x1af
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_DISPLAYTOGGLE 0x1af
 #define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE
 #define KEY_SPELLCHECK 0x1b0
 #define KEY_LOGOFF 0x1b1
-#define KEY_DOLLAR 0x1b2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_DOLLAR 0x1b2
 #define KEY_EURO 0x1b3
 #define KEY_FRAMEBACK 0x1b4
 #define KEY_FRAMEFORWARD 0x1b5
-#define KEY_CONTEXT_MENU 0x1b6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CONTEXT_MENU 0x1b6
 #define KEY_MEDIA_REPEAT 0x1b7
 #define KEY_10CHANNELSUP 0x1b8
 #define KEY_10CHANNELSDOWN 0x1b9
-#define KEY_IMAGES 0x1ba
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_IMAGES 0x1ba
 #define KEY_DEL_EOL 0x1c0
 #define KEY_DEL_EOS 0x1c1
 #define KEY_INS_LINE 0x1c2
-#define KEY_DEL_LINE 0x1c3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_DEL_LINE 0x1c3
 #define KEY_FN 0x1d0
 #define KEY_FN_ESC 0x1d1
 #define KEY_FN_F1 0x1d2
-#define KEY_FN_F2 0x1d3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FN_F2 0x1d3
 #define KEY_FN_F3 0x1d4
 #define KEY_FN_F4 0x1d5
 #define KEY_FN_F5 0x1d6
-#define KEY_FN_F6 0x1d7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FN_F6 0x1d7
 #define KEY_FN_F7 0x1d8
 #define KEY_FN_F8 0x1d9
 #define KEY_FN_F9 0x1da
-#define KEY_FN_F10 0x1db
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FN_F10 0x1db
 #define KEY_FN_F11 0x1dc
 #define KEY_FN_F12 0x1dd
 #define KEY_FN_1 0x1de
-#define KEY_FN_2 0x1df
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FN_2 0x1df
 #define KEY_FN_D 0x1e0
 #define KEY_FN_E 0x1e1
 #define KEY_FN_F 0x1e2
-#define KEY_FN_S 0x1e3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FN_S 0x1e3
 #define KEY_FN_B 0x1e4
 #define KEY_BRL_DOT1 0x1f1
 #define KEY_BRL_DOT2 0x1f2
-#define KEY_BRL_DOT3 0x1f3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BRL_DOT3 0x1f3
 #define KEY_BRL_DOT4 0x1f4
 #define KEY_BRL_DOT5 0x1f5
 #define KEY_BRL_DOT6 0x1f6
-#define KEY_BRL_DOT7 0x1f7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BRL_DOT7 0x1f7
 #define KEY_BRL_DOT8 0x1f8
 #define KEY_BRL_DOT9 0x1f9
 #define KEY_BRL_DOT10 0x1fa
-#define KEY_NUMERIC_0 0x200
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_NUMERIC_0 0x200
 #define KEY_NUMERIC_1 0x201
 #define KEY_NUMERIC_2 0x202
 #define KEY_NUMERIC_3 0x203
-#define KEY_NUMERIC_4 0x204
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_NUMERIC_4 0x204
 #define KEY_NUMERIC_5 0x205
 #define KEY_NUMERIC_6 0x206
 #define KEY_NUMERIC_7 0x207
-#define KEY_NUMERIC_8 0x208
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_NUMERIC_8 0x208
 #define KEY_NUMERIC_9 0x209
 #define KEY_NUMERIC_STAR 0x20a
 #define KEY_NUMERIC_POUND 0x20b
-#define KEY_CAMERA_FOCUS 0x210
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CAMERA_FOCUS 0x210
 #define KEY_WPS_BUTTON 0x211
 #define KEY_TOUCHPAD_TOGGLE 0x212
 #define KEY_TOUCHPAD_ON 0x213
-#define KEY_TOUCHPAD_OFF 0x214
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_TOUCHPAD_OFF 0x214
 #define KEY_CAMERA_ZOOMIN 0x215
 #define KEY_CAMERA_ZOOMOUT 0x216
 #define KEY_CAMERA_UP 0x217
-#define KEY_CAMERA_DOWN 0x218
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CAMERA_DOWN 0x218
 #define KEY_CAMERA_LEFT 0x219
 #define KEY_CAMERA_RIGHT 0x21a
 #define KEY_ATTENDANT_ON 0x21b
-#define KEY_ATTENDANT_OFF 0x21c
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_ATTENDANT_OFF 0x21c
 #define KEY_ATTENDANT_TOGGLE 0x21d
 #define KEY_LIGHTS_TOGGLE 0x21e
 #define BTN_DPAD_UP 0x220
-#define BTN_DPAD_DOWN 0x221
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_DPAD_DOWN 0x221
 #define BTN_DPAD_LEFT 0x222
 #define BTN_DPAD_RIGHT 0x223
 #define KEY_ALS_TOGGLE 0x230
-#define KEY_BUTTONCONFIG 0x240
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BUTTONCONFIG 0x240
 #define KEY_TASKMANAGER 0x241
 #define KEY_JOURNAL 0x242
 #define KEY_CONTROLPANEL 0x243
-#define KEY_APPSELECT 0x244
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_APPSELECT 0x244
 #define KEY_SCREENSAVER 0x245
 #define KEY_VOICECOMMAND 0x246
 #define KEY_BRIGHTNESS_MIN 0x250
-#define KEY_BRIGHTNESS_MAX 0x251
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BRIGHTNESS_MAX 0x251
+#define KEY_KBDINPUTASSIST_PREV 0x260
+#define KEY_KBDINPUTASSIST_NEXT 0x261
+#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263
+#define KEY_KBDINPUTASSIST_ACCEPT 0x264
+#define KEY_KBDINPUTASSIST_CANCEL 0x265
 #define BTN_TRIGGER_HAPPY 0x2c0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY1 0x2c0
 #define BTN_TRIGGER_HAPPY2 0x2c1
 #define BTN_TRIGGER_HAPPY3 0x2c2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY4 0x2c3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY5 0x2c4
 #define BTN_TRIGGER_HAPPY6 0x2c5
 #define BTN_TRIGGER_HAPPY7 0x2c6
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY8 0x2c7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY9 0x2c8
 #define BTN_TRIGGER_HAPPY10 0x2c9
 #define BTN_TRIGGER_HAPPY11 0x2ca
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY12 0x2cb
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY13 0x2cc
 #define BTN_TRIGGER_HAPPY14 0x2cd
 #define BTN_TRIGGER_HAPPY15 0x2ce
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY16 0x2cf
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY17 0x2d0
 #define BTN_TRIGGER_HAPPY18 0x2d1
 #define BTN_TRIGGER_HAPPY19 0x2d2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY20 0x2d3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY21 0x2d4
 #define BTN_TRIGGER_HAPPY22 0x2d5
 #define BTN_TRIGGER_HAPPY23 0x2d6
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY24 0x2d7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY25 0x2d8
 #define BTN_TRIGGER_HAPPY26 0x2d9
 #define BTN_TRIGGER_HAPPY27 0x2da
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY28 0x2db
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY29 0x2dc
 #define BTN_TRIGGER_HAPPY30 0x2dd
 #define BTN_TRIGGER_HAPPY31 0x2de
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY32 0x2df
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY33 0x2e0
 #define BTN_TRIGGER_HAPPY34 0x2e1
 #define BTN_TRIGGER_HAPPY35 0x2e2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY36 0x2e3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY37 0x2e4
 #define BTN_TRIGGER_HAPPY38 0x2e5
 #define BTN_TRIGGER_HAPPY39 0x2e6
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY40 0x2e7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_MIN_INTERESTING KEY_MUTE
 #define KEY_MAX 0x2ff
-#define KEY_CNT (KEY_MAX+1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CNT (KEY_MAX + 1)
 #define REL_X 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_Y 0x01
 #define REL_Z 0x02
 #define REL_RX 0x03
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_RY 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_RZ 0x05
 #define REL_HWHEEL 0x06
 #define REL_DIAL 0x07
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_WHEEL 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_MISC 0x09
 #define REL_MAX 0x0f
-#define REL_CNT (REL_MAX+1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define REL_CNT (REL_MAX + 1)
 #define ABS_X 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_Y 0x01
 #define ABS_Z 0x02
 #define ABS_RX 0x03
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_RY 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_RZ 0x05
 #define ABS_THROTTLE 0x06
 #define ABS_RUDDER 0x07
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_WHEEL 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_GAS 0x09
 #define ABS_BRAKE 0x0a
 #define ABS_HAT0X 0x10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_HAT0Y 0x11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_HAT1X 0x12
 #define ABS_HAT1Y 0x13
 #define ABS_HAT2X 0x14
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_HAT2Y 0x15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_HAT3X 0x16
 #define ABS_HAT3Y 0x17
 #define ABS_PRESSURE 0x18
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_DISTANCE 0x19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_TILT_X 0x1a
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_VOLUME 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MISC 0x28
 #define ABS_MT_SLOT 0x2f
 #define ABS_MT_TOUCH_MAJOR 0x30
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MT_TOUCH_MINOR 0x31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MT_WIDTH_MAJOR 0x32
 #define ABS_MT_WIDTH_MINOR 0x33
 #define ABS_MT_ORIENTATION 0x34
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MT_POSITION_X 0x35
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MT_POSITION_Y 0x36
 #define ABS_MT_TOOL_TYPE 0x37
 #define ABS_MT_BLOB_ID 0x38
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MT_TRACKING_ID 0x39
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MT_PRESSURE 0x3a
 #define ABS_MT_DISTANCE 0x3b
 #define ABS_MT_TOOL_X 0x3c
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MT_TOOL_Y 0x3d
-#define ABS_MAX 0x3f
-#define ABS_CNT (ABS_MAX+1)
-#define SW_LID 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ABS_MAX 0x3f
+#define ABS_CNT (ABS_MAX + 1)
+#define SW_LID 0x00
 #define SW_TABLET_MODE 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_HEADPHONE_INSERT 0x02
 #define SW_RFKILL_ALL 0x03
 #define SW_RADIO SW_RFKILL_ALL
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_MICROPHONE_INSERT 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_DOCK 0x05
 #define SW_LINEOUT_INSERT 0x06
 #define SW_JACK_PHYSICAL_INSERT 0x07
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_VIDEOOUT_INSERT 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_CAMERA_LENS_COVER 0x09
 #define SW_KEYPAD_SLIDE 0x0a
 #define SW_FRONT_PROXIMITY 0x0b
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_ROTATE_LOCK 0x0c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_LINEIN_INSERT 0x0d
 #define SW_MUTE_DEVICE 0x0e
 #define SW_MAX 0x0f
+#define SW_CNT (SW_MAX + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SW_CNT (SW_MAX+1)
 #define MSC_SERIAL 0x00
 #define MSC_PULSELED 0x01
 #define MSC_GESTURE 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSC_RAW 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSC_SCAN 0x04
 #define MSC_TIMESTAMP 0x05
 #define MSC_MAX 0x07
+#define MSC_CNT (MSC_MAX + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSC_CNT (MSC_MAX+1)
 #define LED_NUML 0x00
 #define LED_CAPSL 0x01
 #define LED_SCROLLL 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_COMPOSE 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_KANA 0x04
 #define LED_SLEEP 0x05
 #define LED_SUSPEND 0x06
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_MUTE 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_MISC 0x08
 #define LED_MAIL 0x09
 #define LED_CHARGING 0x0a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_MAX 0x0f
-#define LED_CNT (LED_MAX+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LED_CNT (LED_MAX + 1)
 #define REP_DELAY 0x00
 #define REP_PERIOD 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REP_MAX 0x01
-#define REP_CNT (REP_MAX+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define REP_CNT (REP_MAX + 1)
 #define SND_CLICK 0x00
 #define SND_BELL 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SND_TONE 0x02
-#define SND_MAX 0x07
-#define SND_CNT (SND_MAX+1)
-#define ID_BUS 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SND_MAX 0x07
+#define SND_CNT (SND_MAX + 1)
+#define ID_BUS 0
 #define ID_VENDOR 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ID_PRODUCT 2
 #define ID_VERSION 3
 #define BUS_PCI 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_ISAPNP 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_USB 0x03
 #define BUS_HIL 0x04
 #define BUS_BLUETOOTH 0x05
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_VIRTUAL 0x06
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_ISA 0x10
 #define BUS_I8042 0x11
 #define BUS_XTKBD 0x12
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_RS232 0x13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_GAMEPORT 0x14
 #define BUS_PARPORT 0x15
 #define BUS_AMIGA 0x16
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_ADB 0x17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_I2C 0x18
 #define BUS_HOST 0x19
 #define BUS_GSC 0x1A
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_ATARI 0x1B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_SPI 0x1C
 #define MT_TOOL_FINGER 0
 #define MT_TOOL_PEN 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_TOOL_MAX 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_STATUS_STOPPED 0x00
 #define FF_STATUS_PLAYING 0x01
 #define FF_STATUS_MAX 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ff_replay {
- __u16 length;
- __u16 delay;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 length;
+  __u16 delay;
+};
 struct ff_trigger {
- __u16 button;
- __u16 interval;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 button;
+  __u16 interval;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ff_envelope {
- __u16 attack_length;
- __u16 attack_level;
- __u16 fade_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 fade_level;
+  __u16 attack_length;
+  __u16 attack_level;
+  __u16 fade_length;
+  __u16 fade_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ff_constant_effect {
- __s16 level;
+  __s16 level;
+  struct ff_envelope envelope;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ff_envelope envelope;
 };
 struct ff_ramp_effect {
- __s16 start_level;
+  __s16 start_level;
+  __s16 end_level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s16 end_level;
- struct ff_envelope envelope;
+  struct ff_envelope envelope;
 };
 struct ff_condition_effect {
+  __u16 right_saturation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 right_saturation;
- __u16 left_saturation;
- __s16 right_coeff;
- __s16 left_coeff;
+  __u16 left_saturation;
+  __s16 right_coeff;
+  __s16 left_coeff;
+  __u16 deadband;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 deadband;
- __s16 center;
+  __s16 center;
 };
 struct ff_periodic_effect {
+  __u16 waveform;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 waveform;
- __u16 period;
- __s16 magnitude;
- __s16 offset;
+  __u16 period;
+  __s16 magnitude;
+  __s16 offset;
+  __u16 phase;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 phase;
- struct ff_envelope envelope;
- __u32 custom_len;
- __s16 __user *custom_data;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct ff_envelope envelope;
+  __u32 custom_len;
+  __s16 __user * custom_data;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ff_rumble_effect {
- __u16 strong_magnitude;
- __u16 weak_magnitude;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 strong_magnitude;
+  __u16 weak_magnitude;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ff_effect {
- __u16 type;
- __s16 id;
+  __u16 type;
+  __s16 id;
+  __u16 direction;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 direction;
- struct ff_trigger trigger;
- struct ff_replay replay;
- union {
+  struct ff_trigger trigger;
+  struct ff_replay replay;
+  union {
+    struct ff_constant_effect constant;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ff_constant_effect constant;
- struct ff_ramp_effect ramp;
- struct ff_periodic_effect periodic;
- struct ff_condition_effect condition[2];
+    struct ff_ramp_effect ramp;
+    struct ff_periodic_effect periodic;
+    struct ff_condition_effect condition[2];
+    struct ff_rumble_effect rumble;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ff_rumble_effect rumble;
- } u;
+  } u;
 };
 #define FF_RUMBLE 0x50
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_PERIODIC 0x51
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_CONSTANT 0x52
 #define FF_SPRING 0x53
 #define FF_FRICTION 0x54
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_DAMPER 0x55
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_INERTIA 0x56
 #define FF_RAMP 0x57
 #define FF_EFFECT_MIN FF_RUMBLE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_EFFECT_MAX FF_RAMP
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_SQUARE 0x58
 #define FF_TRIANGLE 0x59
 #define FF_SINE 0x5a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_SAW_UP 0x5b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_SAW_DOWN 0x5c
 #define FF_CUSTOM 0x5d
 #define FF_WAVEFORM_MIN FF_SQUARE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_WAVEFORM_MAX FF_CUSTOM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_GAIN 0x60
 #define FF_AUTOCENTER 0x61
 #define FF_MAX 0x7f
+#define FF_CNT (FF_MAX + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FF_CNT (FF_MAX+1)
 #endif
diff --git a/libc/kernel/uapi/linux/ion.h b/libc/kernel/uapi/linux/ion.h
index 5af39d0..4193763 100644
--- a/libc/kernel/uapi/linux/ion.h
+++ b/libc/kernel/uapi/linux/ion.h
@@ -23,50 +23,50 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int ion_user_handle_t;
 enum ion_heap_type {
- ION_HEAP_TYPE_SYSTEM,
- ION_HEAP_TYPE_SYSTEM_CONTIG,
+  ION_HEAP_TYPE_SYSTEM,
+  ION_HEAP_TYPE_SYSTEM_CONTIG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ION_HEAP_TYPE_CARVEOUT,
- ION_HEAP_TYPE_CHUNK,
- ION_HEAP_TYPE_DMA,
- ION_HEAP_TYPE_CUSTOM,
+  ION_HEAP_TYPE_CARVEOUT,
+  ION_HEAP_TYPE_CHUNK,
+  ION_HEAP_TYPE_DMA,
+  ION_HEAP_TYPE_CUSTOM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ION_NUM_HEAPS = 16,
+  ION_NUM_HEAPS = 16,
 };
 #define ION_HEAP_SYSTEM_MASK (1 << ION_HEAP_TYPE_SYSTEM)
 #define ION_HEAP_SYSTEM_CONTIG_MASK (1 << ION_HEAP_TYPE_SYSTEM_CONTIG)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ION_HEAP_CARVEOUT_MASK (1 << ION_HEAP_TYPE_CARVEOUT)
 #define ION_HEAP_TYPE_DMA_MASK (1 << ION_HEAP_TYPE_DMA)
-#define ION_NUM_HEAP_IDS sizeof(unsigned int) * 8
+#define ION_NUM_HEAP_IDS (sizeof(unsigned int) * 8)
 #define ION_FLAG_CACHED 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ION_FLAG_CACHED_NEEDS_SYNC 2
 struct ion_allocation_data {
- size_t len;
- size_t align;
+  size_t len;
+  size_t align;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int heap_id_mask;
- unsigned int flags;
- ion_user_handle_t handle;
+  unsigned int heap_id_mask;
+  unsigned int flags;
+  ion_user_handle_t handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ion_fd_data {
- ion_user_handle_t handle;
- int fd;
+  ion_user_handle_t handle;
+  int fd;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ion_handle_data {
- ion_user_handle_t handle;
+  ion_user_handle_t handle;
 };
 struct ion_custom_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cmd;
- unsigned long arg;
+  unsigned int cmd;
+  unsigned long arg;
 };
 #define ION_IOC_MAGIC 'I'
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0,   struct ion_allocation_data)
+#define ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0, struct ion_allocation_data)
 #define ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, struct ion_handle_data)
 #define ION_IOC_MAP _IOWR(ION_IOC_MAGIC, 2, struct ion_fd_data)
 #define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data)
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/ion_test.h
new file mode 100644
index 0000000..2ff35a7
--- /dev/null
+++ b/libc/kernel/uapi/linux/ion_test.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ION_TEST_H
+#define _UAPI_LINUX_ION_TEST_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ion_test_rw_data {
+  __u64 ptr;
+  __u64 offset;
+  __u64 size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int write;
+  int __padding;
+};
+#define ION_IOC_MAGIC 'I'
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
+#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
+#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ioprio.h b/libc/kernel/uapi/linux/ioprio.h
index ccdb3b0..5886e77 100644
--- a/libc/kernel/uapi/linux/ioprio.h
+++ b/libc/kernel/uapi/linux/ioprio.h
@@ -24,22 +24,22 @@
 #define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1)
 #define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
 #define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK)
-#define IOPRIO_PRIO_VALUE(class, data) (((class) << IOPRIO_CLASS_SHIFT) | data)
+#define IOPRIO_PRIO_VALUE(class,data) (((class) << IOPRIO_CLASS_SHIFT) | data)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ioprio_valid(mask) (IOPRIO_PRIO_CLASS((mask)) != IOPRIO_CLASS_NONE)
 enum {
- IOPRIO_CLASS_NONE,
- IOPRIO_CLASS_RT,
+  IOPRIO_CLASS_NONE,
+  IOPRIO_CLASS_RT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IOPRIO_CLASS_BE,
- IOPRIO_CLASS_IDLE,
+  IOPRIO_CLASS_BE,
+  IOPRIO_CLASS_IDLE,
 };
 #define IOPRIO_BE_NR (8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IOPRIO_WHO_PROCESS = 1,
- IOPRIO_WHO_PGRP,
- IOPRIO_WHO_USER,
+  IOPRIO_WHO_PROCESS = 1,
+  IOPRIO_WHO_PGRP,
+  IOPRIO_WHO_USER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IOPRIO_NORM (4)
diff --git a/libc/kernel/uapi/linux/ip.h b/libc/kernel/uapi/linux/ip.h
index fc0bd78..8567d24 100644
--- a/libc/kernel/uapi/linux/ip.h
+++ b/libc/kernel/uapi/linux/ip.h
@@ -22,14 +22,14 @@
 #include <asm/byteorder.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPTOS_TOS_MASK 0x1E
-#define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK)
+#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK)
 #define IPTOS_LOWDELAY 0x10
 #define IPTOS_THROUGHPUT 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPTOS_RELIABILITY 0x04
 #define IPTOS_MINCOST 0x02
 #define IPTOS_PREC_MASK 0xE0
-#define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK)
+#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPTOS_PREC_NETCONTROL 0xe0
 #define IPTOS_PREC_INTERNETCONTROL 0xc0
@@ -44,27 +44,27 @@
 #define IPOPT_COPY 0x80
 #define IPOPT_CLASS_MASK 0x60
 #define IPOPT_NUMBER_MASK 0x1f
-#define IPOPT_COPIED(o) ((o)&IPOPT_COPY)
+#define IPOPT_COPIED(o) ((o) & IPOPT_COPY)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK)
-#define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK)
+#define IPOPT_CLASS(o) ((o) & IPOPT_CLASS_MASK)
+#define IPOPT_NUMBER(o) ((o) & IPOPT_NUMBER_MASK)
 #define IPOPT_CONTROL 0x00
 #define IPOPT_RESERVED1 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_MEASUREMENT 0x40
 #define IPOPT_RESERVED2 0x60
-#define IPOPT_END (0 |IPOPT_CONTROL)
-#define IPOPT_NOOP (1 |IPOPT_CONTROL)
+#define IPOPT_END (0 | IPOPT_CONTROL)
+#define IPOPT_NOOP (1 | IPOPT_CONTROL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IPOPT_SEC (2 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_LSRR (3 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_TIMESTAMP (4 |IPOPT_MEASUREMENT)
-#define IPOPT_CIPSO (6 |IPOPT_CONTROL|IPOPT_COPY)
+#define IPOPT_SEC (2 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_LSRR (3 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_TIMESTAMP (4 | IPOPT_MEASUREMENT)
+#define IPOPT_CIPSO (6 | IPOPT_CONTROL | IPOPT_COPY)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IPOPT_RR (7 |IPOPT_CONTROL)
-#define IPOPT_SID (8 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_SSRR (9 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_RA (20|IPOPT_CONTROL|IPOPT_COPY)
+#define IPOPT_RR (7 | IPOPT_CONTROL)
+#define IPOPT_SID (8 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_SSRR (9 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_RA (20 | IPOPT_CONTROL | IPOPT_COPY)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPVERSION 4
 #define MAXTTL 255
@@ -87,98 +87,94 @@
 struct iphdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u8 ihl:4,
- version:4;
-#elif defined (__BIG_ENDIAN_BITFIELD)
+  __u8 ihl : 4, version : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 version : 4, ihl : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 version:4,
- ihl:4;
 #else
 #error "Please fix <asm/byteorder.h>"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- __u8 tos;
- __be16 tot_len;
- __be16 id;
+  __u8 tos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 frag_off;
- __u8 ttl;
- __u8 protocol;
- __sum16 check;
+  __be16 tot_len;
+  __be16 id;
+  __be16 frag_off;
+  __u8 ttl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 saddr;
- __be32 daddr;
+  __u8 protocol;
+  __sum16 check;
+  __be32 saddr;
+  __be32 daddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ip_auth_hdr {
+  __u8 nexthdr;
+  __u8 hdrlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 nexthdr;
- __u8 hdrlen;
- __be16 reserved;
- __be32 spi;
+  __be16 reserved;
+  __be32 spi;
+  __be32 seq_no;
+  __u8 auth_data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 seq_no;
- __u8 auth_data[0];
 };
 struct ip_esp_hdr {
+  __be32 spi;
+  __be32 seq_no;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 spi;
- __be32 seq_no;
- __u8 enc_data[0];
+  __u8 enc_data[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_comp_hdr {
- __u8 nexthdr;
- __u8 flags;
- __be16 cpi;
+  __u8 nexthdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 flags;
+  __be16 cpi;
 };
 struct ip_beet_phdr {
- __u8 nexthdr;
- __u8 hdrlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 padlen;
- __u8 reserved;
+  __u8 nexthdr;
+  __u8 hdrlen;
+  __u8 padlen;
+  __u8 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-enum
+enum {
+  IPV4_DEVCONF_FORWARDING = 1,
+  IPV4_DEVCONF_MC_FORWARDING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- IPV4_DEVCONF_FORWARDING=1,
- IPV4_DEVCONF_MC_FORWARDING,
- IPV4_DEVCONF_PROXY_ARP,
+  IPV4_DEVCONF_PROXY_ARP,
+  IPV4_DEVCONF_ACCEPT_REDIRECTS,
+  IPV4_DEVCONF_SECURE_REDIRECTS,
+  IPV4_DEVCONF_SEND_REDIRECTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPV4_DEVCONF_ACCEPT_REDIRECTS,
- IPV4_DEVCONF_SECURE_REDIRECTS,
- IPV4_DEVCONF_SEND_REDIRECTS,
- IPV4_DEVCONF_SHARED_MEDIA,
+  IPV4_DEVCONF_SHARED_MEDIA,
+  IPV4_DEVCONF_RP_FILTER,
+  IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE,
+  IPV4_DEVCONF_BOOTP_RELAY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPV4_DEVCONF_RP_FILTER,
- IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE,
- IPV4_DEVCONF_BOOTP_RELAY,
- IPV4_DEVCONF_LOG_MARTIANS,
+  IPV4_DEVCONF_LOG_MARTIANS,
+  IPV4_DEVCONF_TAG,
+  IPV4_DEVCONF_ARPFILTER,
+  IPV4_DEVCONF_MEDIUM_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPV4_DEVCONF_TAG,
- IPV4_DEVCONF_ARPFILTER,
- IPV4_DEVCONF_MEDIUM_ID,
- IPV4_DEVCONF_NOXFRM,
+  IPV4_DEVCONF_NOXFRM,
+  IPV4_DEVCONF_NOPOLICY,
+  IPV4_DEVCONF_FORCE_IGMP_VERSION,
+  IPV4_DEVCONF_ARP_ANNOUNCE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPV4_DEVCONF_NOPOLICY,
- IPV4_DEVCONF_FORCE_IGMP_VERSION,
- IPV4_DEVCONF_ARP_ANNOUNCE,
- IPV4_DEVCONF_ARP_IGNORE,
+  IPV4_DEVCONF_ARP_IGNORE,
+  IPV4_DEVCONF_PROMOTE_SECONDARIES,
+  IPV4_DEVCONF_ARP_ACCEPT,
+  IPV4_DEVCONF_ARP_NOTIFY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPV4_DEVCONF_PROMOTE_SECONDARIES,
- IPV4_DEVCONF_ARP_ACCEPT,
- IPV4_DEVCONF_ARP_NOTIFY,
- IPV4_DEVCONF_ACCEPT_LOCAL,
+  IPV4_DEVCONF_ACCEPT_LOCAL,
+  IPV4_DEVCONF_SRC_VMARK,
+  IPV4_DEVCONF_PROXY_ARP_PVLAN,
+  IPV4_DEVCONF_ROUTE_LOCALNET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPV4_DEVCONF_SRC_VMARK,
- IPV4_DEVCONF_PROXY_ARP_PVLAN,
- IPV4_DEVCONF_ROUTE_LOCALNET,
- IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL,
- __IPV4_DEVCONF_MAX
+  IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL,
+  IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL,
+  __IPV4_DEVCONF_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/ip6_tunnel.h b/libc/kernel/uapi/linux/ip6_tunnel.h
index 96f1006..cfed0c8 100644
--- a/libc/kernel/uapi/linux/ip6_tunnel.h
+++ b/libc/kernel/uapi/linux/ip6_tunnel.h
@@ -31,35 +31,35 @@
 #define IP6_TNL_F_USE_ORIG_FWMARK 0x20
 struct ip6_tnl_parm {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[IFNAMSIZ];
- int link;
- __u8 proto;
- __u8 encap_limit;
+  char name[IFNAMSIZ];
+  int link;
+  __u8 proto;
+  __u8 encap_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 hop_limit;
- __be32 flowinfo;
- __u32 flags;
- struct in6_addr laddr;
+  __u8 hop_limit;
+  __be32 flowinfo;
+  __u32 flags;
+  struct in6_addr laddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in6_addr raddr;
+  struct in6_addr raddr;
 };
 struct ip6_tnl_parm2 {
- char name[IFNAMSIZ];
+  char name[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int link;
- __u8 proto;
- __u8 encap_limit;
- __u8 hop_limit;
+  int link;
+  __u8 proto;
+  __u8 encap_limit;
+  __u8 hop_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 flowinfo;
- __u32 flags;
- struct in6_addr laddr;
- struct in6_addr raddr;
+  __be32 flowinfo;
+  __u32 flags;
+  struct in6_addr laddr;
+  struct in6_addr raddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 i_flags;
- __be16 o_flags;
- __be32 i_key;
- __be32 o_key;
+  __be16 i_flags;
+  __be16 o_flags;
+  __be32 i_key;
+  __be32 o_key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/ip_vs.h b/libc/kernel/uapi/linux/ip_vs.h
index 3aa0f84..2274c4d 100644
--- a/libc/kernel/uapi/linux/ip_vs.h
+++ b/libc/kernel/uapi/linux/ip_vs.h
@@ -21,7 +21,7 @@
 #include <linux/types.h>
 #define IP_VS_VERSION_CODE 0x010201
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NVERSION(version)   (version >> 16) & 0xFF,   (version >> 8) & 0xFF,   version & 0xFF
+#define NVERSION(version) (version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF
 #define IP_VS_SVC_F_PERSISTENT 0x0001
 #define IP_VS_SVC_F_HASHED 0x0002
 #define IP_VS_SVC_F_ONEPACKET 0x0004
@@ -38,38 +38,38 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_VS_STATE_MASTER 0x0001
 #define IP_VS_STATE_BACKUP 0x0002
-#define IP_VS_BASE_CTL (64+1024+64)
+#define IP_VS_BASE_CTL (64 + 1024 + 64)
 #define IP_VS_SO_SET_NONE IP_VS_BASE_CTL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1)
-#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2)
-#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3)
-#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4)
+#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL + 1)
+#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL + 2)
+#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL + 3)
+#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL + 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5)
-#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6)
-#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7)
-#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8)
+#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL + 5)
+#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL + 6)
+#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL + 7)
+#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL + 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9)
-#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10)
-#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11)
-#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12)
+#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL + 9)
+#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL + 10)
+#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL + 11)
+#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL + 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13)
-#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14)
-#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15)
+#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL + 13)
+#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL + 14)
+#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL + 15)
 #define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL
-#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1)
-#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2)
-#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3)
+#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL + 1)
+#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL + 2)
+#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL + 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4)
-#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5)
-#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6)
-#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7)
+#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL + 4)
+#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL + 5)
+#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL + 6)
+#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL + 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON
 #define IP_VS_CONN_F_FWD_MASK 0x0007
@@ -92,240 +92,242 @@
 #define IP_VS_CONN_F_TEMPLATE 0x1000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_VS_CONN_F_ONE_PACKET 0x2000
-#define IP_VS_CONN_F_BACKUP_MASK (IP_VS_CONN_F_FWD_MASK |   IP_VS_CONN_F_NOOUTPUT |   IP_VS_CONN_F_INACTIVE |   IP_VS_CONN_F_SEQ_MASK |   IP_VS_CONN_F_NO_CPORT |   IP_VS_CONN_F_TEMPLATE   )
-#define IP_VS_CONN_F_BACKUP_UPD_MASK (IP_VS_CONN_F_INACTIVE |   IP_VS_CONN_F_SEQ_MASK)
+#define IP_VS_CONN_F_BACKUP_MASK (IP_VS_CONN_F_FWD_MASK | IP_VS_CONN_F_NOOUTPUT | IP_VS_CONN_F_INACTIVE | IP_VS_CONN_F_SEQ_MASK | IP_VS_CONN_F_NO_CPORT | IP_VS_CONN_F_TEMPLATE)
+#define IP_VS_CONN_F_BACKUP_UPD_MASK (IP_VS_CONN_F_INACTIVE | IP_VS_CONN_F_SEQ_MASK)
 #define IP_VS_CONN_F_NFCT (1 << 16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IP_VS_CONN_F_DEST_MASK (IP_VS_CONN_F_FWD_MASK |   IP_VS_CONN_F_ONE_PACKET |   IP_VS_CONN_F_NFCT |   0)
+#define IP_VS_CONN_F_DEST_MASK (IP_VS_CONN_F_FWD_MASK | IP_VS_CONN_F_ONE_PACKET | IP_VS_CONN_F_NFCT | 0)
 #define IP_VS_SCHEDNAME_MAXLEN 16
 #define IP_VS_PENAME_MAXLEN 16
 #define IP_VS_IFNAME_MAXLEN 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_VS_PEDATA_MAXLEN 255
 struct ip_vs_service_user {
- __u16 protocol;
- __be32 addr;
+  __u16 protocol;
+  __be32 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 port;
- __u32 fwmark;
- char sched_name[IP_VS_SCHEDNAME_MAXLEN];
- unsigned int flags;
+  __be16 port;
+  __u32 fwmark;
+  char sched_name[IP_VS_SCHEDNAME_MAXLEN];
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int timeout;
- __be32 netmask;
+  unsigned int timeout;
+  __be32 netmask;
 };
 struct ip_vs_dest_user {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 addr;
- __be16 port;
- unsigned int conn_flags;
- int weight;
+  __be32 addr;
+  __be16 port;
+  unsigned int conn_flags;
+  int weight;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 u_threshold;
- __u32 l_threshold;
+  __u32 u_threshold;
+  __u32 l_threshold;
 };
 struct ip_vs_stats_user {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 conns;
- __u32 inpkts;
- __u32 outpkts;
- __u64 inbytes;
+  __u32 conns;
+  __u32 inpkts;
+  __u32 outpkts;
+  __u64 inbytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 outbytes;
- __u32 cps;
- __u32 inpps;
- __u32 outpps;
+  __u64 outbytes;
+  __u32 cps;
+  __u32 inpps;
+  __u32 outpps;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 inbps;
- __u32 outbps;
+  __u32 inbps;
+  __u32 outbps;
 };
 struct ip_vs_getinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int version;
- unsigned int size;
- unsigned int num_services;
+  unsigned int version;
+  unsigned int size;
+  unsigned int num_services;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_vs_service_entry {
- __u16 protocol;
- __be32 addr;
- __be16 port;
+  __u16 protocol;
+  __be32 addr;
+  __be16 port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fwmark;
- char sched_name[IP_VS_SCHEDNAME_MAXLEN];
- unsigned int flags;
- unsigned int timeout;
+  __u32 fwmark;
+  char sched_name[IP_VS_SCHEDNAME_MAXLEN];
+  unsigned int flags;
+  unsigned int timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 netmask;
- unsigned int num_dests;
- struct ip_vs_stats_user stats;
+  __be32 netmask;
+  unsigned int num_dests;
+  struct ip_vs_stats_user stats;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_vs_dest_entry {
- __be32 addr;
- __be16 port;
- unsigned int conn_flags;
+  __be32 addr;
+  __be16 port;
+  unsigned int conn_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int weight;
- __u32 u_threshold;
- __u32 l_threshold;
- __u32 activeconns;
+  int weight;
+  __u32 u_threshold;
+  __u32 l_threshold;
+  __u32 activeconns;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 inactconns;
- __u32 persistconns;
- struct ip_vs_stats_user stats;
+  __u32 inactconns;
+  __u32 persistconns;
+  struct ip_vs_stats_user stats;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_vs_get_dests {
- __u16 protocol;
- __be32 addr;
- __be16 port;
+  __u16 protocol;
+  __be32 addr;
+  __be16 port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fwmark;
- unsigned int num_dests;
- struct ip_vs_dest_entry entrytable[0];
+  __u32 fwmark;
+  unsigned int num_dests;
+  struct ip_vs_dest_entry entrytable[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_vs_get_services {
- unsigned int num_services;
- struct ip_vs_service_entry entrytable[0];
+  unsigned int num_services;
+  struct ip_vs_service_entry entrytable[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_vs_timeout_user {
- int tcp_timeout;
- int tcp_fin_timeout;
- int udp_timeout;
+  int tcp_timeout;
+  int tcp_fin_timeout;
+  int udp_timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ip_vs_daemon_user {
- int state;
- char mcast_ifn[IP_VS_IFNAME_MAXLEN];
+  int state;
+  char mcast_ifn[IP_VS_IFNAME_MAXLEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int syncid;
+  int syncid;
 };
 #define IPVS_GENL_NAME "IPVS"
 #define IPVS_GENL_VERSION 0x1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_vs_flags {
- __u32 flags;
- __u32 mask;
+  __u32 flags;
+  __u32 mask;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPVS_CMD_UNSPEC = 0,
- IPVS_CMD_NEW_SERVICE,
- IPVS_CMD_SET_SERVICE,
+  IPVS_CMD_UNSPEC = 0,
+  IPVS_CMD_NEW_SERVICE,
+  IPVS_CMD_SET_SERVICE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_CMD_DEL_SERVICE,
- IPVS_CMD_GET_SERVICE,
- IPVS_CMD_NEW_DEST,
- IPVS_CMD_SET_DEST,
+  IPVS_CMD_DEL_SERVICE,
+  IPVS_CMD_GET_SERVICE,
+  IPVS_CMD_NEW_DEST,
+  IPVS_CMD_SET_DEST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_CMD_DEL_DEST,
- IPVS_CMD_GET_DEST,
- IPVS_CMD_NEW_DAEMON,
- IPVS_CMD_DEL_DAEMON,
+  IPVS_CMD_DEL_DEST,
+  IPVS_CMD_GET_DEST,
+  IPVS_CMD_NEW_DAEMON,
+  IPVS_CMD_DEL_DAEMON,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_CMD_GET_DAEMON,
- IPVS_CMD_SET_CONFIG,
- IPVS_CMD_GET_CONFIG,
- IPVS_CMD_SET_INFO,
+  IPVS_CMD_GET_DAEMON,
+  IPVS_CMD_SET_CONFIG,
+  IPVS_CMD_GET_CONFIG,
+  IPVS_CMD_SET_INFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_CMD_GET_INFO,
- IPVS_CMD_ZERO,
- IPVS_CMD_FLUSH,
- __IPVS_CMD_MAX,
+  IPVS_CMD_GET_INFO,
+  IPVS_CMD_ZERO,
+  IPVS_CMD_FLUSH,
+  __IPVS_CMD_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IPVS_CMD_MAX (__IPVS_CMD_MAX - 1)
 enum {
- IPVS_CMD_ATTR_UNSPEC = 0,
+  IPVS_CMD_ATTR_UNSPEC = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_CMD_ATTR_SERVICE,
- IPVS_CMD_ATTR_DEST,
- IPVS_CMD_ATTR_DAEMON,
- IPVS_CMD_ATTR_TIMEOUT_TCP,
+  IPVS_CMD_ATTR_SERVICE,
+  IPVS_CMD_ATTR_DEST,
+  IPVS_CMD_ATTR_DAEMON,
+  IPVS_CMD_ATTR_TIMEOUT_TCP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_CMD_ATTR_TIMEOUT_TCP_FIN,
- IPVS_CMD_ATTR_TIMEOUT_UDP,
- __IPVS_CMD_ATTR_MAX,
+  IPVS_CMD_ATTR_TIMEOUT_TCP_FIN,
+  IPVS_CMD_ATTR_TIMEOUT_UDP,
+  __IPVS_CMD_ATTR_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPVS_CMD_ATTR_MAX (__IPVS_CMD_ATTR_MAX - 1)
 enum {
- IPVS_SVC_ATTR_UNSPEC = 0,
- IPVS_SVC_ATTR_AF,
+  IPVS_SVC_ATTR_UNSPEC = 0,
+  IPVS_SVC_ATTR_AF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_SVC_ATTR_PROTOCOL,
- IPVS_SVC_ATTR_ADDR,
- IPVS_SVC_ATTR_PORT,
- IPVS_SVC_ATTR_FWMARK,
+  IPVS_SVC_ATTR_PROTOCOL,
+  IPVS_SVC_ATTR_ADDR,
+  IPVS_SVC_ATTR_PORT,
+  IPVS_SVC_ATTR_FWMARK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_SVC_ATTR_SCHED_NAME,
- IPVS_SVC_ATTR_FLAGS,
- IPVS_SVC_ATTR_TIMEOUT,
- IPVS_SVC_ATTR_NETMASK,
+  IPVS_SVC_ATTR_SCHED_NAME,
+  IPVS_SVC_ATTR_FLAGS,
+  IPVS_SVC_ATTR_TIMEOUT,
+  IPVS_SVC_ATTR_NETMASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_SVC_ATTR_STATS,
- IPVS_SVC_ATTR_PE_NAME,
- __IPVS_SVC_ATTR_MAX,
+  IPVS_SVC_ATTR_STATS,
+  IPVS_SVC_ATTR_PE_NAME,
+  __IPVS_SVC_ATTR_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPVS_SVC_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
 enum {
- IPVS_DEST_ATTR_UNSPEC = 0,
- IPVS_DEST_ATTR_ADDR,
+  IPVS_DEST_ATTR_UNSPEC = 0,
+  IPVS_DEST_ATTR_ADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_DEST_ATTR_PORT,
- IPVS_DEST_ATTR_FWD_METHOD,
- IPVS_DEST_ATTR_WEIGHT,
- IPVS_DEST_ATTR_U_THRESH,
+  IPVS_DEST_ATTR_PORT,
+  IPVS_DEST_ATTR_FWD_METHOD,
+  IPVS_DEST_ATTR_WEIGHT,
+  IPVS_DEST_ATTR_U_THRESH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_DEST_ATTR_L_THRESH,
- IPVS_DEST_ATTR_ACTIVE_CONNS,
- IPVS_DEST_ATTR_INACT_CONNS,
- IPVS_DEST_ATTR_PERSIST_CONNS,
+  IPVS_DEST_ATTR_L_THRESH,
+  IPVS_DEST_ATTR_ACTIVE_CONNS,
+  IPVS_DEST_ATTR_INACT_CONNS,
+  IPVS_DEST_ATTR_PERSIST_CONNS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_DEST_ATTR_STATS,
- __IPVS_DEST_ATTR_MAX,
+  IPVS_DEST_ATTR_STATS,
+  IPVS_DEST_ATTR_ADDR_FAMILY,
+  __IPVS_DEST_ATTR_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPVS_DEST_ATTR_MAX (__IPVS_DEST_ATTR_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPVS_DAEMON_ATTR_UNSPEC = 0,
- IPVS_DAEMON_ATTR_STATE,
- IPVS_DAEMON_ATTR_MCAST_IFN,
+  IPVS_DAEMON_ATTR_UNSPEC = 0,
+  IPVS_DAEMON_ATTR_STATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_DAEMON_ATTR_SYNC_ID,
- __IPVS_DAEMON_ATTR_MAX,
+  IPVS_DAEMON_ATTR_MCAST_IFN,
+  IPVS_DAEMON_ATTR_SYNC_ID,
+  __IPVS_DAEMON_ATTR_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPVS_DAEMON_ATTR_MAX (__IPVS_DAEMON_ATTR_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPVS_STATS_ATTR_UNSPEC = 0,
- IPVS_STATS_ATTR_CONNS,
- IPVS_STATS_ATTR_INPKTS,
+  IPVS_STATS_ATTR_UNSPEC = 0,
+  IPVS_STATS_ATTR_CONNS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_STATS_ATTR_OUTPKTS,
- IPVS_STATS_ATTR_INBYTES,
- IPVS_STATS_ATTR_OUTBYTES,
- IPVS_STATS_ATTR_CPS,
+  IPVS_STATS_ATTR_INPKTS,
+  IPVS_STATS_ATTR_OUTPKTS,
+  IPVS_STATS_ATTR_INBYTES,
+  IPVS_STATS_ATTR_OUTBYTES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_STATS_ATTR_INPPS,
- IPVS_STATS_ATTR_OUTPPS,
- IPVS_STATS_ATTR_INBPS,
- IPVS_STATS_ATTR_OUTBPS,
+  IPVS_STATS_ATTR_CPS,
+  IPVS_STATS_ATTR_INPPS,
+  IPVS_STATS_ATTR_OUTPPS,
+  IPVS_STATS_ATTR_INBPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IPVS_STATS_ATTR_MAX,
+  IPVS_STATS_ATTR_OUTBPS,
+  __IPVS_STATS_ATTR_MAX,
 };
 #define IPVS_STATS_ATTR_MAX (__IPVS_STATS_ATTR_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  IPVS_INFO_ATTR_UNSPEC = 0,
+  IPVS_INFO_ATTR_VERSION,
+  IPVS_INFO_ATTR_CONN_TAB_SIZE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPVS_INFO_ATTR_UNSPEC = 0,
- IPVS_INFO_ATTR_VERSION,
- IPVS_INFO_ATTR_CONN_TAB_SIZE,
- __IPVS_INFO_ATTR_MAX,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IPVS_INFO_ATTR_MAX,
 };
 #define IPVS_INFO_ATTR_MAX (__IPVS_INFO_ATTR_MAX - 1)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ipc.h b/libc/kernel/uapi/linux/ipc.h
index 337ea77..67345ce 100644
--- a/libc/kernel/uapi/linux/ipc.h
+++ b/libc/kernel/uapi/linux/ipc.h
@@ -21,54 +21,53 @@
 #include <linux/types.h>
 #define IPC_PRIVATE ((__kernel_key_t) 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct ipc_perm
-{
- __kernel_key_t key;
- __kernel_uid_t uid;
+struct ipc_perm {
+  __kernel_key_t key;
+  __kernel_uid_t uid;
+  __kernel_gid_t gid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_gid_t gid;
- __kernel_uid_t cuid;
- __kernel_gid_t cgid;
- __kernel_mode_t mode;
+  __kernel_uid_t cuid;
+  __kernel_gid_t cgid;
+  __kernel_mode_t mode;
+  unsigned short seq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short seq;
 };
 #include <asm/ipcbuf.h>
 #define IPC_CREAT 00001000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_EXCL 00002000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_NOWAIT 00004000
 #define IPC_DIPC 00010000
 #define IPC_OWN 00020000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_RMID 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_SET 1
 #define IPC_STAT 2
 #define IPC_INFO 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_OLD 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_64 0x0100
 struct ipc_kludge {
- struct msgbuf __user *msgp;
+  struct msgbuf __user * msgp;
+  long msgtyp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long msgtyp;
 };
 #define SEMOP 1
 #define SEMGET 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMCTL 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMTIMEDOP 4
 #define MSGSND 11
 #define MSGRCV 12
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSGGET 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSGCTL 14
 #define SHMAT 21
 #define SHMDT 22
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHMGET 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHMCTL 24
 #define DIPC 25
-#define IPCCALL(version,op) ((version)<<16 | (op))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPCCALL(version,op) ((version) << 16 | (op))
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ipmi.h b/libc/kernel/uapi/linux/ipmi.h
index 5edc118..dd1b0ad 100644
--- a/libc/kernel/uapi/linux/ipmi.h
+++ b/libc/kernel/uapi/linux/ipmi.h
@@ -23,58 +23,58 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_MAX_ADDR_SIZE 32
 struct ipmi_addr {
- int addr_type;
- short channel;
+  int addr_type;
+  short channel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char data[IPMI_MAX_ADDR_SIZE];
+  char data[IPMI_MAX_ADDR_SIZE];
 };
 #define IPMI_SYSTEM_INTERFACE_ADDR_TYPE 0x0c
 struct ipmi_system_interface_addr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int addr_type;
- short channel;
- unsigned char lun;
+  int addr_type;
+  short channel;
+  unsigned char lun;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_IPMB_ADDR_TYPE 0x01
 #define IPMI_IPMB_BROADCAST_ADDR_TYPE 0x41
 struct ipmi_ipmb_addr {
- int addr_type;
+  int addr_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short channel;
- unsigned char slave_addr;
- unsigned char lun;
+  short channel;
+  unsigned char slave_addr;
+  unsigned char lun;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_LAN_ADDR_TYPE 0x04
 struct ipmi_lan_addr {
- int addr_type;
- short channel;
+  int addr_type;
+  short channel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char privilege;
- unsigned char session_handle;
- unsigned char remote_SWID;
- unsigned char local_SWID;
+  unsigned char privilege;
+  unsigned char session_handle;
+  unsigned char remote_SWID;
+  unsigned char local_SWID;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char lun;
+  unsigned char lun;
 };
 #define IPMI_BMC_CHANNEL 0xf
 #define IPMI_NUM_CHANNELS 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_CHAN_ALL (~0)
 struct ipmi_msg {
- unsigned char netfn;
- unsigned char cmd;
+  unsigned char netfn;
+  unsigned char cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short data_len;
- unsigned char __user *data;
+  unsigned short data_len;
+  unsigned char __user * data;
 };
 struct kernel_ipmi_msg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char netfn;
- unsigned char cmd;
- unsigned short data_len;
- unsigned char *data;
+  unsigned char netfn;
+  unsigned char cmd;
+  unsigned short data_len;
+  unsigned char * data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IPMI_INVALID_CMD_COMPLETION_CODE 0xC1
@@ -93,72 +93,72 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_IOC_MAGIC 'i'
 struct ipmi_req {
- unsigned char __user *addr;
- unsigned int addr_len;
+  unsigned char __user * addr;
+  unsigned int addr_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long msgid;
- struct ipmi_msg msg;
+  long msgid;
+  struct ipmi_msg msg;
 };
-#define IPMICTL_SEND_COMMAND _IOR(IPMI_IOC_MAGIC, 13,   struct ipmi_req)
+#define IPMICTL_SEND_COMMAND _IOR(IPMI_IOC_MAGIC, 13, struct ipmi_req)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipmi_req_settime {
- struct ipmi_req req;
- int retries;
- unsigned int retry_time_ms;
+  struct ipmi_req req;
+  int retries;
+  unsigned int retry_time_ms;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define IPMICTL_SEND_COMMAND_SETTIME _IOR(IPMI_IOC_MAGIC, 21,   struct ipmi_req_settime)
+#define IPMICTL_SEND_COMMAND_SETTIME _IOR(IPMI_IOC_MAGIC, 21, struct ipmi_req_settime)
 struct ipmi_recv {
- int recv_type;
+  int recv_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char __user *addr;
- unsigned int addr_len;
- long msgid;
- struct ipmi_msg msg;
+  unsigned char __user * addr;
+  unsigned int addr_len;
+  long msgid;
+  struct ipmi_msg msg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define IPMICTL_RECEIVE_MSG _IOWR(IPMI_IOC_MAGIC, 12,   struct ipmi_recv)
-#define IPMICTL_RECEIVE_MSG_TRUNC _IOWR(IPMI_IOC_MAGIC, 11,   struct ipmi_recv)
+#define IPMICTL_RECEIVE_MSG _IOWR(IPMI_IOC_MAGIC, 12, struct ipmi_recv)
+#define IPMICTL_RECEIVE_MSG_TRUNC _IOWR(IPMI_IOC_MAGIC, 11, struct ipmi_recv)
 struct ipmi_cmdspec {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char netfn;
- unsigned char cmd;
+  unsigned char netfn;
+  unsigned char cmd;
 };
-#define IPMICTL_REGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 14,   struct ipmi_cmdspec)
+#define IPMICTL_REGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 14, struct ipmi_cmdspec)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IPMICTL_UNREGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 15,   struct ipmi_cmdspec)
+#define IPMICTL_UNREGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 15, struct ipmi_cmdspec)
 struct ipmi_cmdspec_chans {
- unsigned int netfn;
- unsigned int cmd;
+  unsigned int netfn;
+  unsigned int cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int chans;
+  unsigned int chans;
 };
-#define IPMICTL_REGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 28,   struct ipmi_cmdspec_chans)
-#define IPMICTL_UNREGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 29,   struct ipmi_cmdspec_chans)
+#define IPMICTL_REGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 28, struct ipmi_cmdspec_chans)
+#define IPMICTL_UNREGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 29, struct ipmi_cmdspec_chans)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMICTL_SET_GETS_EVENTS_CMD _IOR(IPMI_IOC_MAGIC, 16, int)
 struct ipmi_channel_lun_address_set {
- unsigned short channel;
- unsigned char value;
+  unsigned short channel;
+  unsigned char value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD   _IOR(IPMI_IOC_MAGIC, 24, struct ipmi_channel_lun_address_set)
-#define IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD   _IOR(IPMI_IOC_MAGIC, 25, struct ipmi_channel_lun_address_set)
-#define IPMICTL_SET_MY_CHANNEL_LUN_CMD   _IOR(IPMI_IOC_MAGIC, 26, struct ipmi_channel_lun_address_set)
+#define IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 24, struct ipmi_channel_lun_address_set)
+#define IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 25, struct ipmi_channel_lun_address_set)
+#define IPMICTL_SET_MY_CHANNEL_LUN_CMD _IOR(IPMI_IOC_MAGIC, 26, struct ipmi_channel_lun_address_set)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IPMICTL_GET_MY_CHANNEL_LUN_CMD   _IOR(IPMI_IOC_MAGIC, 27, struct ipmi_channel_lun_address_set)
+#define IPMICTL_GET_MY_CHANNEL_LUN_CMD _IOR(IPMI_IOC_MAGIC, 27, struct ipmi_channel_lun_address_set)
 #define IPMICTL_SET_MY_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 17, unsigned int)
 #define IPMICTL_GET_MY_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 18, unsigned int)
 #define IPMICTL_SET_MY_LUN_CMD _IOR(IPMI_IOC_MAGIC, 19, unsigned int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMICTL_GET_MY_LUN_CMD _IOR(IPMI_IOC_MAGIC, 20, unsigned int)
 struct ipmi_timing_parms {
- int retries;
- unsigned int retry_time_ms;
+  int retries;
+  unsigned int retry_time_ms;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define IPMICTL_SET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 22,   struct ipmi_timing_parms)
-#define IPMICTL_GET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 23,   struct ipmi_timing_parms)
+#define IPMICTL_SET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 22, struct ipmi_timing_parms)
+#define IPMICTL_GET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 23, struct ipmi_timing_parms)
 #define IPMICTL_GET_MAINTENANCE_MODE_CMD _IOR(IPMI_IOC_MAGIC, 30, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMICTL_SET_MAINTENANCE_MODE_CMD _IOW(IPMI_IOC_MAGIC, 31, int)
diff --git a/libc/kernel/uapi/linux/ipsec.h b/libc/kernel/uapi/linux/ipsec.h
index e9758eb..d207cf0 100644
--- a/libc/kernel/uapi/linux/ipsec.h
+++ b/libc/kernel/uapi/linux/ipsec.h
@@ -24,37 +24,37 @@
 #define IPSEC_ULPROTO_ANY 255
 #define IPSEC_PROTO_ANY 255
 enum {
- IPSEC_MODE_ANY = 0,
+  IPSEC_MODE_ANY = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSEC_MODE_TRANSPORT = 1,
- IPSEC_MODE_TUNNEL = 2,
- IPSEC_MODE_BEET = 3
+  IPSEC_MODE_TRANSPORT = 1,
+  IPSEC_MODE_TUNNEL = 2,
+  IPSEC_MODE_BEET = 3
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPSEC_DIR_ANY = 0,
- IPSEC_DIR_INBOUND = 1,
- IPSEC_DIR_OUTBOUND = 2,
+  IPSEC_DIR_ANY = 0,
+  IPSEC_DIR_INBOUND = 1,
+  IPSEC_DIR_OUTBOUND = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSEC_DIR_FWD = 3,
- IPSEC_DIR_MAX = 4,
- IPSEC_DIR_INVALID = 5
+  IPSEC_DIR_FWD = 3,
+  IPSEC_DIR_MAX = 4,
+  IPSEC_DIR_INVALID = 5
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPSEC_POLICY_DISCARD = 0,
- IPSEC_POLICY_NONE = 1,
- IPSEC_POLICY_IPSEC = 2,
+  IPSEC_POLICY_DISCARD = 0,
+  IPSEC_POLICY_NONE = 1,
+  IPSEC_POLICY_IPSEC = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSEC_POLICY_ENTRUST = 3,
- IPSEC_POLICY_BYPASS = 4
+  IPSEC_POLICY_ENTRUST = 3,
+  IPSEC_POLICY_BYPASS = 4
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSEC_LEVEL_DEFAULT = 0,
- IPSEC_LEVEL_USE = 1,
- IPSEC_LEVEL_REQUIRE = 2,
- IPSEC_LEVEL_UNIQUE = 3
+  IPSEC_LEVEL_DEFAULT = 0,
+  IPSEC_LEVEL_USE = 1,
+  IPSEC_LEVEL_REQUIRE = 2,
+  IPSEC_LEVEL_UNIQUE = 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IPSEC_MANUAL_REQID_MAX 0x3fff
diff --git a/libc/kernel/uapi/linux/ipv6.h b/libc/kernel/uapi/linux/ipv6.h
index bfe62cf..3425f5a 100644
--- a/libc/kernel/uapi/linux/ipv6.h
+++ b/libc/kernel/uapi/linux/ipv6.h
@@ -24,36 +24,36 @@
 #include <asm/byteorder.h>
 #define IPV6_MIN_MTU 1280
 struct in6_pktinfo {
- struct in6_addr ipi6_addr;
+  struct in6_addr ipi6_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ipi6_ifindex;
+  int ipi6_ifindex;
 };
 struct ip6_mtuinfo {
- struct sockaddr_in6 ip6m_addr;
+  struct sockaddr_in6 ip6m_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ip6m_mtu;
+  __u32 ip6m_mtu;
 };
 struct in6_ifreq {
- struct in6_addr ifr6_addr;
+  struct in6_addr ifr6_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ifr6_prefixlen;
- int ifr6_ifindex;
+  __u32 ifr6_prefixlen;
+  int ifr6_ifindex;
 };
 #define IPV6_SRCRT_STRICT 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_SRCRT_TYPE_0 0
 #define IPV6_SRCRT_TYPE_2 2
 struct ipv6_rt_hdr {
- __u8 nexthdr;
+  __u8 nexthdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 hdrlen;
- __u8 type;
- __u8 segments_left;
+  __u8 hdrlen;
+  __u8 type;
+  __u8 segments_left;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipv6_opt_hdr {
- __u8 nexthdr;
- __u8 hdrlen;
+  __u8 nexthdr;
+  __u8 hdrlen;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ipv6_destopt_hdr ipv6_opt_hdr
@@ -61,90 +61,89 @@
 #define IPV6_OPT_ROUTERALERT_MLD 0x0000
 struct rt0_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ipv6_rt_hdr rt_hdr;
- __u32 reserved;
- struct in6_addr addr[0];
+  struct ipv6_rt_hdr rt_hdr;
+  __u32 reserved;
+  struct in6_addr addr[0];
 #define rt0_type rt_hdr.type
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct rt2_hdr {
- struct ipv6_rt_hdr rt_hdr;
- __u32 reserved;
+  struct ipv6_rt_hdr rt_hdr;
+  __u32 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in6_addr addr;
+  struct in6_addr addr;
 #define rt2_type rt_hdr.type
 };
 struct ipv6_destopt_hao {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u8 length;
- struct in6_addr addr;
+  __u8 type;
+  __u8 length;
+  struct in6_addr addr;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipv6hdr {
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u8 priority:4,
- version:4;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 priority : 4, version : 4;
 #elif defined(__BIG_ENDIAN_BITFIELD)
- __u8 version:4,
- priority:4;
-#else
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 version : 4, priority : 4;
+#else
 #error "Please fix <asm/byteorder.h>"
 #endif
- __u8 flow_lbl[3];
- __be16 payload_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 nexthdr;
- __u8 hop_limit;
- struct in6_addr saddr;
- struct in6_addr daddr;
+  __u8 flow_lbl[3];
+  __be16 payload_len;
+  __u8 nexthdr;
+  __u8 hop_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct in6_addr saddr;
+  struct in6_addr daddr;
 };
 enum {
- DEVCONF_FORWARDING = 0,
- DEVCONF_HOPLIMIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_MTU6,
- DEVCONF_ACCEPT_RA,
- DEVCONF_ACCEPT_REDIRECTS,
- DEVCONF_AUTOCONF,
+  DEVCONF_FORWARDING = 0,
+  DEVCONF_HOPLIMIT,
+  DEVCONF_MTU6,
+  DEVCONF_ACCEPT_RA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_DAD_TRANSMITS,
- DEVCONF_RTR_SOLICITS,
- DEVCONF_RTR_SOLICIT_INTERVAL,
- DEVCONF_RTR_SOLICIT_DELAY,
+  DEVCONF_ACCEPT_REDIRECTS,
+  DEVCONF_AUTOCONF,
+  DEVCONF_DAD_TRANSMITS,
+  DEVCONF_RTR_SOLICITS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_USE_TEMPADDR,
- DEVCONF_TEMP_VALID_LFT,
- DEVCONF_TEMP_PREFERED_LFT,
- DEVCONF_REGEN_MAX_RETRY,
+  DEVCONF_RTR_SOLICIT_INTERVAL,
+  DEVCONF_RTR_SOLICIT_DELAY,
+  DEVCONF_USE_TEMPADDR,
+  DEVCONF_TEMP_VALID_LFT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_MAX_DESYNC_FACTOR,
- DEVCONF_MAX_ADDRESSES,
- DEVCONF_FORCE_MLD_VERSION,
- DEVCONF_ACCEPT_RA_DEFRTR,
+  DEVCONF_TEMP_PREFERED_LFT,
+  DEVCONF_REGEN_MAX_RETRY,
+  DEVCONF_MAX_DESYNC_FACTOR,
+  DEVCONF_MAX_ADDRESSES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_ACCEPT_RA_PINFO,
- DEVCONF_ACCEPT_RA_RTR_PREF,
- DEVCONF_RTR_PROBE_INTERVAL,
- DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
+  DEVCONF_FORCE_MLD_VERSION,
+  DEVCONF_ACCEPT_RA_DEFRTR,
+  DEVCONF_ACCEPT_RA_PINFO,
+  DEVCONF_ACCEPT_RA_RTR_PREF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_PROXY_NDP,
- DEVCONF_OPTIMISTIC_DAD,
- DEVCONF_ACCEPT_SOURCE_ROUTE,
- DEVCONF_MC_FORWARDING,
+  DEVCONF_RTR_PROBE_INTERVAL,
+  DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
+  DEVCONF_PROXY_NDP,
+  DEVCONF_OPTIMISTIC_DAD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_DISABLE_IPV6,
- DEVCONF_ACCEPT_DAD,
- DEVCONF_FORCE_TLLAO,
- DEVCONF_NDISC_NOTIFY,
+  DEVCONF_ACCEPT_SOURCE_ROUTE,
+  DEVCONF_MC_FORWARDING,
+  DEVCONF_DISABLE_IPV6,
+  DEVCONF_ACCEPT_DAD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
- DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
- DEVCONF_SUPPRESS_FRAG_NDISC,
- DEVCONF_MAX
+  DEVCONF_FORCE_TLLAO,
+  DEVCONF_NDISC_NOTIFY,
+  DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
+  DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DEVCONF_SUPPRESS_FRAG_NDISC,
+  DEVCONF_ACCEPT_RA_FROM_LOCAL,
+  DEVCONF_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/ipv6_route.h b/libc/kernel/uapi/linux/ipv6_route.h
index 040a3db..ff74986 100644
--- a/libc/kernel/uapi/linux/ipv6_route.h
+++ b/libc/kernel/uapi/linux/ipv6_route.h
@@ -38,18 +38,18 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_LOCAL 0x80000000
 struct in6_rtmsg {
- struct in6_addr rtmsg_dst;
- struct in6_addr rtmsg_src;
+  struct in6_addr rtmsg_dst;
+  struct in6_addr rtmsg_src;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in6_addr rtmsg_gateway;
- __u32 rtmsg_type;
- __u16 rtmsg_dst_len;
- __u16 rtmsg_src_len;
+  struct in6_addr rtmsg_gateway;
+  __u32 rtmsg_type;
+  __u16 rtmsg_dst_len;
+  __u16 rtmsg_src_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rtmsg_metric;
- unsigned long rtmsg_info;
- __u32 rtmsg_flags;
- int rtmsg_ifindex;
+  __u32 rtmsg_metric;
+  unsigned long rtmsg_info;
+  __u32 rtmsg_flags;
+  int rtmsg_ifindex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define RTMSG_NEWDEVICE 0x11
diff --git a/libc/kernel/uapi/linux/ipx.h b/libc/kernel/uapi/linux/ipx.h
index 61efb48..47086fe 100644
--- a/libc/kernel/uapi/linux/ipx.h
+++ b/libc/kernel/uapi/linux/ipx.h
@@ -26,13 +26,13 @@
 #define IPX_MTU 576
 struct sockaddr_ipx {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_sa_family_t sipx_family;
- __be16 sipx_port;
- __be32 sipx_network;
- unsigned char sipx_node[IPX_NODE_LEN];
+  __kernel_sa_family_t sipx_family;
+  __be16 sipx_port;
+  __be32 sipx_network;
+  unsigned char sipx_node[IPX_NODE_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sipx_type;
- unsigned char sipx_zero;
+  __u8 sipx_type;
+  unsigned char sipx_zero;
 };
 #define sipx_special sipx_port
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -41,15 +41,15 @@
 #define IPX_CRTITF 1
 struct ipx_route_definition {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ipx_network;
- __be32 ipx_router_network;
- unsigned char ipx_router_node[IPX_NODE_LEN];
+  __be32 ipx_network;
+  __be32 ipx_router_network;
+  unsigned char ipx_router_node[IPX_NODE_LEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipx_interface_definition {
- __be32 ipx_network;
- unsigned char ipx_device[16];
- unsigned char ipx_dlink_type;
+  __be32 ipx_network;
+  unsigned char ipx_device[16];
+  unsigned char ipx_dlink_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_FRAME_NONE 0
 #define IPX_FRAME_SNAP 1
@@ -58,27 +58,27 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_FRAME_8023 4
 #define IPX_FRAME_TR_8022 5
- unsigned char ipx_special;
+  unsigned char ipx_special;
 #define IPX_SPECIAL_NONE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_PRIMARY 1
 #define IPX_INTERNAL 2
- unsigned char ipx_node[IPX_NODE_LEN];
+  unsigned char ipx_node[IPX_NODE_LEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipx_config_data {
- unsigned char ipxcfg_auto_select_primary;
- unsigned char ipxcfg_auto_create_interfaces;
+  unsigned char ipxcfg_auto_select_primary;
+  unsigned char ipxcfg_auto_create_interfaces;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipx_route_def {
- __be32 ipx_network;
- __be32 ipx_router_network;
+  __be32 ipx_network;
+  __be32 ipx_router_network;
 #define IPX_ROUTE_NO_ROUTER 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char ipx_router_node[IPX_NODE_LEN];
- unsigned char ipx_device[16];
- unsigned short ipx_flags;
+  unsigned char ipx_router_node[IPX_NODE_LEN];
+  unsigned char ipx_device[16];
+  unsigned short ipx_flags;
 #define IPX_RT_SNAP 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_RT_8022 4
diff --git a/libc/kernel/uapi/linux/irda.h b/libc/kernel/uapi/linux/irda.h
index 718dbaf..dac6d1f 100644
--- a/libc/kernel/uapi/linux/irda.h
+++ b/libc/kernel/uapi/linux/irda.h
@@ -53,30 +53,30 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CS_UNICODE 0xff
 typedef enum {
- IRDA_TEKRAM_DONGLE = 0,
- IRDA_ESI_DONGLE = 1,
+  IRDA_TEKRAM_DONGLE = 0,
+  IRDA_ESI_DONGLE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IRDA_ACTISYS_DONGLE = 2,
- IRDA_ACTISYS_PLUS_DONGLE = 3,
- IRDA_GIRBIL_DONGLE = 4,
- IRDA_LITELINK_DONGLE = 5,
+  IRDA_ACTISYS_DONGLE = 2,
+  IRDA_ACTISYS_PLUS_DONGLE = 3,
+  IRDA_GIRBIL_DONGLE = 4,
+  IRDA_LITELINK_DONGLE = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IRDA_AIRPORT_DONGLE = 6,
- IRDA_OLD_BELKIN_DONGLE = 7,
- IRDA_EP7211_IR = 8,
- IRDA_MCP2120_DONGLE = 9,
+  IRDA_AIRPORT_DONGLE = 6,
+  IRDA_OLD_BELKIN_DONGLE = 7,
+  IRDA_EP7211_IR = 8,
+  IRDA_MCP2120_DONGLE = 9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IRDA_ACT200L_DONGLE = 10,
- IRDA_MA600_DONGLE = 11,
- IRDA_TOIM3232_DONGLE = 12,
- IRDA_EP7211_DONGLE = 13,
+  IRDA_ACT200L_DONGLE = 10,
+  IRDA_MA600_DONGLE = 11,
+  IRDA_TOIM3232_DONGLE = 12,
+  IRDA_EP7211_DONGLE = 13,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } IRDA_DONGLE;
 enum {
- IRDAPROTO_UNITDATA = 0,
- IRDAPROTO_ULTRA = 1,
+  IRDAPROTO_UNITDATA = 0,
+  IRDAPROTO_ULTRA = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IRDAPROTO_MAX
+  IRDAPROTO_MAX
 };
 #define SOL_IRLMP 266
 #define SOL_IRTTP 266
@@ -112,47 +112,47 @@
 #define LSAP_ANY 0xff
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_irda {
- __kernel_sa_family_t sir_family;
- __u8 sir_lsap_sel;
- __u32 sir_addr;
+  __kernel_sa_family_t sir_family;
+  __u8 sir_lsap_sel;
+  __u32 sir_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char sir_name[25];
+  char sir_name[25];
 };
 struct irda_device_info {
- __u32 saddr;
+  __u32 saddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 daddr;
- char info[22];
- __u8 charset;
- __u8 hints[2];
+  __u32 daddr;
+  char info[22];
+  __u8 charset;
+  __u8 hints[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct irda_device_list {
- __u32 len;
- struct irda_device_info dev[1];
+  __u32 len;
+  struct irda_device_info dev[1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct irda_ias_set {
- char irda_class_name[IAS_EXPORT_CLASSNAME];
- char irda_attrib_name[IAS_EXPORT_ATTRIBNAME];
+  char irda_class_name[IAS_EXPORT_CLASSNAME];
+  char irda_attrib_name[IAS_EXPORT_ATTRIBNAME];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int irda_attrib_type;
- union {
- unsigned int irda_attrib_int;
- struct {
+  unsigned int irda_attrib_type;
+  union {
+    unsigned int irda_attrib_int;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short len;
- __u8 octet_seq[IAS_MAX_OCTET_STRING];
- } irda_attrib_octet_seq;
- struct {
+      unsigned short len;
+      __u8 octet_seq[IAS_MAX_OCTET_STRING];
+    } irda_attrib_octet_seq;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 len;
- __u8 charset;
- __u8 string[IAS_MAX_STRING];
- } irda_attrib_string;
+      __u8 len;
+      __u8 charset;
+      __u8 string[IAS_MAX_STRING];
+    } irda_attrib_string;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } attribute;
- __u32 daddr;
+  } attribute;
+  __u32 daddr;
 };
 #define SIOCSDONGLE (SIOCDEVPRIVATE + 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -169,36 +169,36 @@
 #define SIOCGQOS (SIOCDEVPRIVATE + 9)
 #define IRNAMSIZ 16
 struct if_irda_qos {
- unsigned long baudrate;
+  unsigned long baudrate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short data_size;
- unsigned short window_size;
- unsigned short min_turn_time;
- unsigned short max_turn_time;
+  unsigned short data_size;
+  unsigned short window_size;
+  unsigned short min_turn_time;
+  unsigned short max_turn_time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char add_bofs;
- unsigned char link_disc;
+  unsigned char add_bofs;
+  unsigned char link_disc;
 };
 struct if_irda_line {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dtr;
- __u8 rts;
+  __u8 dtr;
+  __u8 rts;
 };
 struct if_irda_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- char ifrn_name[IRNAMSIZ];
- } ifr_ifrn;
- union {
+  union {
+    char ifrn_name[IRNAMSIZ];
+  } ifr_ifrn;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct if_irda_line ifru_line;
- struct if_irda_qos ifru_qos;
- unsigned short ifru_flags;
- unsigned int ifru_receiving;
+    struct if_irda_line ifru_line;
+    struct if_irda_qos ifru_qos;
+    unsigned short ifru_flags;
+    unsigned int ifru_receiving;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int ifru_mode;
- unsigned int ifru_dongle;
- } ifr_ifru;
+    unsigned int ifru_mode;
+    unsigned int ifru_dongle;
+  } ifr_ifru;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_baudrate ifr_ifru.ifru_qos.baudrate
@@ -212,19 +212,19 @@
 #define IRDA_NL_VERSION 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum irda_nl_commands {
- IRDA_NL_CMD_UNSPEC,
- IRDA_NL_CMD_SET_MODE,
- IRDA_NL_CMD_GET_MODE,
+  IRDA_NL_CMD_UNSPEC,
+  IRDA_NL_CMD_SET_MODE,
+  IRDA_NL_CMD_GET_MODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IRDA_NL_CMD_AFTER_LAST
+  __IRDA_NL_CMD_AFTER_LAST
 };
 #define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1)
 enum nl80211_attrs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IRDA_NL_ATTR_UNSPEC,
- IRDA_NL_ATTR_IFNAME,
- IRDA_NL_ATTR_MODE,
- __IRDA_NL_ATTR_AFTER_LAST
+  IRDA_NL_ATTR_UNSPEC,
+  IRDA_NL_ATTR_IFNAME,
+  IRDA_NL_ATTR_MODE,
+  __IRDA_NL_ATTR_AFTER_LAST
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1)
diff --git a/libc/kernel/uapi/linux/isdn.h b/libc/kernel/uapi/linux/isdn.h
index 129b2d4..4908f3a 100644
--- a/libc/kernel/uapi/linux/isdn.h
+++ b/libc/kernel/uapi/linux/isdn.h
@@ -23,42 +23,42 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ISDN_MAX_DRIVERS 32
 #define ISDN_MAX_CHANNELS 64
-#define IIOCNETAIF _IO('I',1)
-#define IIOCNETDIF _IO('I',2)
+#define IIOCNETAIF _IO('I', 1)
+#define IIOCNETDIF _IO('I', 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IIOCNETSCF _IO('I',3)
-#define IIOCNETGCF _IO('I',4)
-#define IIOCNETANM _IO('I',5)
-#define IIOCNETDNM _IO('I',6)
+#define IIOCNETSCF _IO('I', 3)
+#define IIOCNETGCF _IO('I', 4)
+#define IIOCNETANM _IO('I', 5)
+#define IIOCNETDNM _IO('I', 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IIOCNETGNM _IO('I',7)
-#define IIOCGETSET _IO('I',8)
-#define IIOCSETSET _IO('I',9)
-#define IIOCSETVER _IO('I',10)
+#define IIOCNETGNM _IO('I', 7)
+#define IIOCGETSET _IO('I', 8)
+#define IIOCSETSET _IO('I', 9)
+#define IIOCSETVER _IO('I', 10)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IIOCNETHUP _IO('I',11)
-#define IIOCSETGST _IO('I',12)
-#define IIOCSETBRJ _IO('I',13)
-#define IIOCSIGPRF _IO('I',14)
+#define IIOCNETHUP _IO('I', 11)
+#define IIOCSETGST _IO('I', 12)
+#define IIOCSETBRJ _IO('I', 13)
+#define IIOCSIGPRF _IO('I', 14)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IIOCGETPRF _IO('I',15)
-#define IIOCSETPRF _IO('I',16)
-#define IIOCGETMAP _IO('I',17)
-#define IIOCSETMAP _IO('I',18)
+#define IIOCGETPRF _IO('I', 15)
+#define IIOCSETPRF _IO('I', 16)
+#define IIOCGETMAP _IO('I', 17)
+#define IIOCSETMAP _IO('I', 18)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IIOCNETASL _IO('I',19)
-#define IIOCNETDIL _IO('I',20)
-#define IIOCGETCPS _IO('I',21)
-#define IIOCGETDVR _IO('I',22)
+#define IIOCNETASL _IO('I', 19)
+#define IIOCNETDIL _IO('I', 20)
+#define IIOCGETCPS _IO('I', 21)
+#define IIOCGETDVR _IO('I', 22)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IIOCNETLCR _IO('I',23)
-#define IIOCNETDWRSET _IO('I',24)
-#define IIOCNETALN _IO('I',32)
-#define IIOCNETDLN _IO('I',33)
+#define IIOCNETLCR _IO('I', 23)
+#define IIOCNETDWRSET _IO('I', 24)
+#define IIOCNETALN _IO('I', 32)
+#define IIOCNETDLN _IO('I', 33)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IIOCNETGPN _IO('I',34)
-#define IIOCDBGVAR _IO('I',127)
-#define IIOCDRVCTL _IO('I',128)
+#define IIOCNETGPN _IO('I', 34)
+#define IIOCDBGVAR _IO('I', 127)
+#define IIOCDRVCTL _IO('I', 128)
 #define SIOCGKEEPPERIOD (SIOCDEVPRIVATE + 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSKEEPPERIOD (SIOCDEVPRIVATE + 1)
@@ -98,48 +98,48 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INF_DV 0x01
 typedef struct {
- char drvid[25];
- unsigned long arg;
+  char drvid[25];
+  unsigned long arg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } isdn_ioctl_struct;
 typedef struct {
- char name[10];
- char phone[ISDN_MSNLEN];
+  char name[10];
+  char phone[ISDN_MSNLEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int outgoing;
+  int outgoing;
 } isdn_net_ioctl_phone;
 typedef struct {
- char name[10];
+  char name[10];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char master[10];
- char slave[10];
- char eaz[256];
- char drvid[25];
+  char master[10];
+  char slave[10];
+  char eaz[256];
+  char drvid[25];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int onhtime;
- int charge;
- int l2_proto;
- int l3_proto;
+  int onhtime;
+  int charge;
+  int l2_proto;
+  int l3_proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int p_encap;
- int exclusive;
- int dialmax;
- int slavedelay;
+  int p_encap;
+  int exclusive;
+  int dialmax;
+  int slavedelay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cbdelay;
- int chargehup;
- int ihup;
- int secure;
+  int cbdelay;
+  int chargehup;
+  int ihup;
+  int secure;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int callback;
- int cbhup;
- int pppbind;
- int chargeint;
+  int callback;
+  int cbhup;
+  int pppbind;
+  int chargeint;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int triggercps;
- int dialtimeout;
- int dialwait;
- int dialmode;
+  int triggercps;
+  int dialtimeout;
+  int dialwait;
+  int dialmode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } isdn_net_ioctl_cfg;
 #define ISDN_NET_DIALMODE_MASK 0xC0
@@ -147,5 +147,5 @@
 #define ISDN_NET_DM_MANUAL 0x40
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ISDN_NET_DM_AUTO 0x80
-#define ISDN_NET_DIALMODE(x) ((&(x))->flags & ISDN_NET_DIALMODE_MASK)
+#define ISDN_NET_DIALMODE(x) ((& (x))->flags & ISDN_NET_DIALMODE_MASK)
 #endif
diff --git a/libc/kernel/uapi/linux/isdn/capicmd.h b/libc/kernel/uapi/linux/isdn/capicmd.h
index ad60679..dd213b0 100644
--- a/libc/kernel/uapi/linux/isdn/capicmd.h
+++ b/libc/kernel/uapi/linux/isdn/capicmd.h
@@ -19,9 +19,9 @@
 #ifndef __CAPICMD_H__
 #define __CAPICMD_H__
 #define CAPI_MSG_BASELEN 8
-#define CAPI_DATA_B3_REQ_LEN (CAPI_MSG_BASELEN+4+4+2+2+2)
+#define CAPI_DATA_B3_REQ_LEN (CAPI_MSG_BASELEN + 4 + 4 + 2 + 2 + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_DATA_B3_RESP_LEN (CAPI_MSG_BASELEN+4+2)
+#define CAPI_DATA_B3_RESP_LEN (CAPI_MSG_BASELEN + 4 + 2)
 #define CAPI_ALERT 0x01
 #define CAPI_CONNECT 0x02
 #define CAPI_CONNECT_ACTIVE 0x03
@@ -46,70 +46,70 @@
 #define CAPI_IND 0x82
 #define CAPI_RESP 0x83
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPICMD(cmd,subcmd) (((cmd)<<8)|(subcmd))
-#define CAPI_DISCONNECT_REQ CAPICMD(CAPI_DISCONNECT,CAPI_REQ)
-#define CAPI_DISCONNECT_CONF CAPICMD(CAPI_DISCONNECT,CAPI_CONF)
-#define CAPI_DISCONNECT_IND CAPICMD(CAPI_DISCONNECT,CAPI_IND)
+#define CAPICMD(cmd,subcmd) (((cmd) << 8) | (subcmd))
+#define CAPI_DISCONNECT_REQ CAPICMD(CAPI_DISCONNECT, CAPI_REQ)
+#define CAPI_DISCONNECT_CONF CAPICMD(CAPI_DISCONNECT, CAPI_CONF)
+#define CAPI_DISCONNECT_IND CAPICMD(CAPI_DISCONNECT, CAPI_IND)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_DISCONNECT_RESP CAPICMD(CAPI_DISCONNECT,CAPI_RESP)
-#define CAPI_ALERT_REQ CAPICMD(CAPI_ALERT,CAPI_REQ)
-#define CAPI_ALERT_CONF CAPICMD(CAPI_ALERT,CAPI_CONF)
-#define CAPI_CONNECT_REQ CAPICMD(CAPI_CONNECT,CAPI_REQ)
+#define CAPI_DISCONNECT_RESP CAPICMD(CAPI_DISCONNECT, CAPI_RESP)
+#define CAPI_ALERT_REQ CAPICMD(CAPI_ALERT, CAPI_REQ)
+#define CAPI_ALERT_CONF CAPICMD(CAPI_ALERT, CAPI_CONF)
+#define CAPI_CONNECT_REQ CAPICMD(CAPI_CONNECT, CAPI_REQ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_CONNECT_CONF CAPICMD(CAPI_CONNECT,CAPI_CONF)
-#define CAPI_CONNECT_IND CAPICMD(CAPI_CONNECT,CAPI_IND)
-#define CAPI_CONNECT_RESP CAPICMD(CAPI_CONNECT,CAPI_RESP)
-#define CAPI_CONNECT_ACTIVE_REQ CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_REQ)
+#define CAPI_CONNECT_CONF CAPICMD(CAPI_CONNECT, CAPI_CONF)
+#define CAPI_CONNECT_IND CAPICMD(CAPI_CONNECT, CAPI_IND)
+#define CAPI_CONNECT_RESP CAPICMD(CAPI_CONNECT, CAPI_RESP)
+#define CAPI_CONNECT_ACTIVE_REQ CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_REQ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_CONNECT_ACTIVE_CONF CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_CONF)
-#define CAPI_CONNECT_ACTIVE_IND CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_IND)
-#define CAPI_CONNECT_ACTIVE_RESP CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_RESP)
-#define CAPI_SELECT_B_PROTOCOL_REQ CAPICMD(CAPI_SELECT_B_PROTOCOL,CAPI_REQ)
+#define CAPI_CONNECT_ACTIVE_CONF CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_CONF)
+#define CAPI_CONNECT_ACTIVE_IND CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_IND)
+#define CAPI_CONNECT_ACTIVE_RESP CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_RESP)
+#define CAPI_SELECT_B_PROTOCOL_REQ CAPICMD(CAPI_SELECT_B_PROTOCOL, CAPI_REQ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_SELECT_B_PROTOCOL_CONF CAPICMD(CAPI_SELECT_B_PROTOCOL,CAPI_CONF)
-#define CAPI_CONNECT_B3_ACTIVE_REQ CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_REQ)
-#define CAPI_CONNECT_B3_ACTIVE_CONF CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_CONF)
-#define CAPI_CONNECT_B3_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_IND)
+#define CAPI_SELECT_B_PROTOCOL_CONF CAPICMD(CAPI_SELECT_B_PROTOCOL, CAPI_CONF)
+#define CAPI_CONNECT_B3_ACTIVE_REQ CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_REQ)
+#define CAPI_CONNECT_B3_ACTIVE_CONF CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_CONF)
+#define CAPI_CONNECT_B3_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_IND)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_CONNECT_B3_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_RESP)
-#define CAPI_CONNECT_B3_REQ CAPICMD(CAPI_CONNECT_B3,CAPI_REQ)
-#define CAPI_CONNECT_B3_CONF CAPICMD(CAPI_CONNECT_B3,CAPI_CONF)
-#define CAPI_CONNECT_B3_IND CAPICMD(CAPI_CONNECT_B3,CAPI_IND)
+#define CAPI_CONNECT_B3_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_RESP)
+#define CAPI_CONNECT_B3_REQ CAPICMD(CAPI_CONNECT_B3, CAPI_REQ)
+#define CAPI_CONNECT_B3_CONF CAPICMD(CAPI_CONNECT_B3, CAPI_CONF)
+#define CAPI_CONNECT_B3_IND CAPICMD(CAPI_CONNECT_B3, CAPI_IND)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_CONNECT_B3_RESP CAPICMD(CAPI_CONNECT_B3,CAPI_RESP)
-#define CAPI_CONNECT_B3_T90_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE,CAPI_IND)
-#define CAPI_CONNECT_B3_T90_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE,CAPI_RESP)
-#define CAPI_DATA_B3_REQ CAPICMD(CAPI_DATA_B3,CAPI_REQ)
+#define CAPI_CONNECT_B3_RESP CAPICMD(CAPI_CONNECT_B3, CAPI_RESP)
+#define CAPI_CONNECT_B3_T90_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE, CAPI_IND)
+#define CAPI_CONNECT_B3_T90_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE, CAPI_RESP)
+#define CAPI_DATA_B3_REQ CAPICMD(CAPI_DATA_B3, CAPI_REQ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_DATA_B3_CONF CAPICMD(CAPI_DATA_B3,CAPI_CONF)
-#define CAPI_DATA_B3_IND CAPICMD(CAPI_DATA_B3,CAPI_IND)
-#define CAPI_DATA_B3_RESP CAPICMD(CAPI_DATA_B3,CAPI_RESP)
-#define CAPI_DISCONNECT_B3_REQ CAPICMD(CAPI_DISCONNECT_B3,CAPI_REQ)
+#define CAPI_DATA_B3_CONF CAPICMD(CAPI_DATA_B3, CAPI_CONF)
+#define CAPI_DATA_B3_IND CAPICMD(CAPI_DATA_B3, CAPI_IND)
+#define CAPI_DATA_B3_RESP CAPICMD(CAPI_DATA_B3, CAPI_RESP)
+#define CAPI_DISCONNECT_B3_REQ CAPICMD(CAPI_DISCONNECT_B3, CAPI_REQ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_DISCONNECT_B3_CONF CAPICMD(CAPI_DISCONNECT_B3,CAPI_CONF)
-#define CAPI_DISCONNECT_B3_IND CAPICMD(CAPI_DISCONNECT_B3,CAPI_IND)
-#define CAPI_DISCONNECT_B3_RESP CAPICMD(CAPI_DISCONNECT_B3,CAPI_RESP)
-#define CAPI_RESET_B3_REQ CAPICMD(CAPI_RESET_B3,CAPI_REQ)
+#define CAPI_DISCONNECT_B3_CONF CAPICMD(CAPI_DISCONNECT_B3, CAPI_CONF)
+#define CAPI_DISCONNECT_B3_IND CAPICMD(CAPI_DISCONNECT_B3, CAPI_IND)
+#define CAPI_DISCONNECT_B3_RESP CAPICMD(CAPI_DISCONNECT_B3, CAPI_RESP)
+#define CAPI_RESET_B3_REQ CAPICMD(CAPI_RESET_B3, CAPI_REQ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_RESET_B3_CONF CAPICMD(CAPI_RESET_B3,CAPI_CONF)
-#define CAPI_RESET_B3_IND CAPICMD(CAPI_RESET_B3,CAPI_IND)
-#define CAPI_RESET_B3_RESP CAPICMD(CAPI_RESET_B3,CAPI_RESP)
-#define CAPI_LISTEN_REQ CAPICMD(CAPI_LISTEN,CAPI_REQ)
+#define CAPI_RESET_B3_CONF CAPICMD(CAPI_RESET_B3, CAPI_CONF)
+#define CAPI_RESET_B3_IND CAPICMD(CAPI_RESET_B3, CAPI_IND)
+#define CAPI_RESET_B3_RESP CAPICMD(CAPI_RESET_B3, CAPI_RESP)
+#define CAPI_LISTEN_REQ CAPICMD(CAPI_LISTEN, CAPI_REQ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_LISTEN_CONF CAPICMD(CAPI_LISTEN,CAPI_CONF)
-#define CAPI_MANUFACTURER_REQ CAPICMD(CAPI_MANUFACTURER,CAPI_REQ)
-#define CAPI_MANUFACTURER_CONF CAPICMD(CAPI_MANUFACTURER,CAPI_CONF)
-#define CAPI_MANUFACTURER_IND CAPICMD(CAPI_MANUFACTURER,CAPI_IND)
+#define CAPI_LISTEN_CONF CAPICMD(CAPI_LISTEN, CAPI_CONF)
+#define CAPI_MANUFACTURER_REQ CAPICMD(CAPI_MANUFACTURER, CAPI_REQ)
+#define CAPI_MANUFACTURER_CONF CAPICMD(CAPI_MANUFACTURER, CAPI_CONF)
+#define CAPI_MANUFACTURER_IND CAPICMD(CAPI_MANUFACTURER, CAPI_IND)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_MANUFACTURER_RESP CAPICMD(CAPI_MANUFACTURER,CAPI_RESP)
-#define CAPI_FACILITY_REQ CAPICMD(CAPI_FACILITY,CAPI_REQ)
-#define CAPI_FACILITY_CONF CAPICMD(CAPI_FACILITY,CAPI_CONF)
-#define CAPI_FACILITY_IND CAPICMD(CAPI_FACILITY,CAPI_IND)
+#define CAPI_MANUFACTURER_RESP CAPICMD(CAPI_MANUFACTURER, CAPI_RESP)
+#define CAPI_FACILITY_REQ CAPICMD(CAPI_FACILITY, CAPI_REQ)
+#define CAPI_FACILITY_CONF CAPICMD(CAPI_FACILITY, CAPI_CONF)
+#define CAPI_FACILITY_IND CAPICMD(CAPI_FACILITY, CAPI_IND)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_FACILITY_RESP CAPICMD(CAPI_FACILITY,CAPI_RESP)
-#define CAPI_INFO_REQ CAPICMD(CAPI_INFO,CAPI_REQ)
-#define CAPI_INFO_CONF CAPICMD(CAPI_INFO,CAPI_CONF)
-#define CAPI_INFO_IND CAPICMD(CAPI_INFO,CAPI_IND)
+#define CAPI_FACILITY_RESP CAPICMD(CAPI_FACILITY, CAPI_RESP)
+#define CAPI_INFO_REQ CAPICMD(CAPI_INFO, CAPI_REQ)
+#define CAPI_INFO_CONF CAPICMD(CAPI_INFO, CAPI_CONF)
+#define CAPI_INFO_IND CAPICMD(CAPI_INFO, CAPI_IND)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define CAPI_INFO_RESP CAPICMD(CAPI_INFO,CAPI_RESP)
+#define CAPI_INFO_RESP CAPICMD(CAPI_INFO, CAPI_RESP)
 #endif
diff --git a/libc/kernel/uapi/linux/isdn_ppp.h b/libc/kernel/uapi/linux/isdn_ppp.h
index ce08f2f..712a076 100644
--- a/libc/kernel/uapi/linux/isdn_ppp.h
+++ b/libc/kernel/uapi/linux/isdn_ppp.h
@@ -23,51 +23,49 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CALLTYPE_CALLBACK 0x4
 #define IPPP_VERSION "2.2.0"
-struct pppcallinfo
-{
+struct pppcallinfo {
+  int calltype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int calltype;
- unsigned char local_num[64];
- unsigned char remote_num[64];
- int charge_units;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char local_num[64];
+  unsigned char remote_num[64];
+  int charge_units;
 };
-#define PPPIOCGCALLINFO _IOWR('t',128,struct pppcallinfo)
-#define PPPIOCBUNDLE _IOW('t',129,int)
-#define PPPIOCGMPFLAGS _IOR('t',130,int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PPPIOCSMPFLAGS _IOW('t',131,int)
-#define PPPIOCSMPMTU _IOW('t',132,int)
-#define PPPIOCSMPMRU _IOW('t',133,int)
-#define PPPIOCGCOMPRESSORS _IOR('t',134,unsigned long [8])
+#define PPPIOCGCALLINFO _IOWR('t', 128, struct pppcallinfo)
+#define PPPIOCBUNDLE _IOW('t', 129, int)
+#define PPPIOCGMPFLAGS _IOR('t', 130, int)
+#define PPPIOCSMPFLAGS _IOW('t', 131, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PPPIOCSCOMPRESSOR _IOW('t',135,int)
-#define PPPIOCGIFNAME _IOR('t',136, char [IFNAMSIZ] )
+#define PPPIOCSMPMTU _IOW('t', 132, int)
+#define PPPIOCSMPMRU _IOW('t', 133, int)
+#define PPPIOCGCOMPRESSORS _IOR('t', 134, unsigned long[8])
+#define PPPIOCSCOMPRESSOR _IOW('t', 135, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PPPIOCGIFNAME _IOR('t', 136, char[IFNAMSIZ])
 #define SC_MP_PROT 0x00000200
 #define SC_REJ_MP_PROT 0x00000400
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_OUT_SHORT_SEQ 0x00000800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_IN_SHORT_SEQ 0x00004000
 #define SC_DECOMP_ON 0x01
 #define SC_COMP_ON 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_DECOMP_DISCARD 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_COMP_DISCARD 0x08
 #define SC_LINK_DECOMP_ON 0x10
 #define SC_LINK_COMP_ON 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_LINK_DECOMP_DISCARD 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_LINK_COMP_DISCARD 0x80
 #define ISDN_PPP_COMP_MAX_OPTIONS 16
 #define IPPP_COMP_FLAG_XMIT 0x1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPP_COMP_FLAG_LINK 0x2
-struct isdn_ppp_comp_data {
- int num;
- unsigned char options[ISDN_PPP_COMP_MAX_OPTIONS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int optlen;
- int flags;
+struct isdn_ppp_comp_data {
+  int num;
+  unsigned char options[ISDN_PPP_COMP_MAX_OPTIONS];
+  int optlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int flags;
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/iso_fs.h b/libc/kernel/uapi/linux/iso_fs.h
index 0b7b742..dc7a17d 100644
--- a/libc/kernel/uapi/linux/iso_fs.h
+++ b/libc/kernel/uapi/linux/iso_fs.h
@@ -21,13 +21,13 @@
 #include <linux/types.h>
 #include <linux/magic.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ISODCL(from, to) (to - from + 1)
+#define ISODCL(from,to) (to - from + 1)
 struct iso_volume_descriptor {
- char type[ISODCL(1,1)];
- char id[ISODCL(2,6)];
+  char type[ISODCL(1, 1)];
+  char id[ISODCL(2, 6)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char version[ISODCL(7,7)];
- char data[ISODCL(8,2048)];
+  char version[ISODCL(7, 7)];
+  char data[ISODCL(8, 2048)];
 };
 #define ISO_VD_PRIMARY 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -36,148 +36,148 @@
 #define ISO_STANDARD_ID "CD001"
 struct iso_primary_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char type [ISODCL ( 1, 1)];
- char id [ISODCL ( 2, 6)];
- char version [ISODCL ( 7, 7)];
- char unused1 [ISODCL ( 8, 8)];
+  char type[ISODCL(1, 1)];
+  char id[ISODCL(2, 6)];
+  char version[ISODCL(7, 7)];
+  char unused1[ISODCL(8, 8)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char system_id [ISODCL ( 9, 40)];
- char volume_id [ISODCL ( 41, 72)];
- char unused2 [ISODCL ( 73, 80)];
- char volume_space_size [ISODCL ( 81, 88)];
+  char system_id[ISODCL(9, 40)];
+  char volume_id[ISODCL(41, 72)];
+  char unused2[ISODCL(73, 80)];
+  char volume_space_size[ISODCL(81, 88)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char unused3 [ISODCL ( 89, 120)];
- char volume_set_size [ISODCL (121, 124)];
- char volume_sequence_number [ISODCL (125, 128)];
- char logical_block_size [ISODCL (129, 132)];
+  char unused3[ISODCL(89, 120)];
+  char volume_set_size[ISODCL(121, 124)];
+  char volume_sequence_number[ISODCL(125, 128)];
+  char logical_block_size[ISODCL(129, 132)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char path_table_size [ISODCL (133, 140)];
- char type_l_path_table [ISODCL (141, 144)];
- char opt_type_l_path_table [ISODCL (145, 148)];
- char type_m_path_table [ISODCL (149, 152)];
+  char path_table_size[ISODCL(133, 140)];
+  char type_l_path_table[ISODCL(141, 144)];
+  char opt_type_l_path_table[ISODCL(145, 148)];
+  char type_m_path_table[ISODCL(149, 152)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char opt_type_m_path_table [ISODCL (153, 156)];
- char root_directory_record [ISODCL (157, 190)];
- char volume_set_id [ISODCL (191, 318)];
- char publisher_id [ISODCL (319, 446)];
+  char opt_type_m_path_table[ISODCL(153, 156)];
+  char root_directory_record[ISODCL(157, 190)];
+  char volume_set_id[ISODCL(191, 318)];
+  char publisher_id[ISODCL(319, 446)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char preparer_id [ISODCL (447, 574)];
- char application_id [ISODCL (575, 702)];
- char copyright_file_id [ISODCL (703, 739)];
- char abstract_file_id [ISODCL (740, 776)];
+  char preparer_id[ISODCL(447, 574)];
+  char application_id[ISODCL(575, 702)];
+  char copyright_file_id[ISODCL(703, 739)];
+  char abstract_file_id[ISODCL(740, 776)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char bibliographic_file_id [ISODCL (777, 813)];
- char creation_date [ISODCL (814, 830)];
- char modification_date [ISODCL (831, 847)];
- char expiration_date [ISODCL (848, 864)];
+  char bibliographic_file_id[ISODCL(777, 813)];
+  char creation_date[ISODCL(814, 830)];
+  char modification_date[ISODCL(831, 847)];
+  char expiration_date[ISODCL(848, 864)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char effective_date [ISODCL (865, 881)];
- char file_structure_version [ISODCL (882, 882)];
- char unused4 [ISODCL (883, 883)];
- char application_data [ISODCL (884, 1395)];
+  char effective_date[ISODCL(865, 881)];
+  char file_structure_version[ISODCL(882, 882)];
+  char unused4[ISODCL(883, 883)];
+  char application_data[ISODCL(884, 1395)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char unused5 [ISODCL (1396, 2048)];
+  char unused5[ISODCL(1396, 2048)];
 };
 struct iso_supplementary_descriptor {
- char type [ISODCL ( 1, 1)];
+  char type[ISODCL(1, 1)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char id [ISODCL ( 2, 6)];
- char version [ISODCL ( 7, 7)];
- char flags [ISODCL ( 8, 8)];
- char system_id [ISODCL ( 9, 40)];
+  char id[ISODCL(2, 6)];
+  char version[ISODCL(7, 7)];
+  char flags[ISODCL(8, 8)];
+  char system_id[ISODCL(9, 40)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char volume_id [ISODCL ( 41, 72)];
- char unused2 [ISODCL ( 73, 80)];
- char volume_space_size [ISODCL ( 81, 88)];
- char escape [ISODCL ( 89, 120)];
+  char volume_id[ISODCL(41, 72)];
+  char unused2[ISODCL(73, 80)];
+  char volume_space_size[ISODCL(81, 88)];
+  char escape[ISODCL(89, 120)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char volume_set_size [ISODCL (121, 124)];
- char volume_sequence_number [ISODCL (125, 128)];
- char logical_block_size [ISODCL (129, 132)];
- char path_table_size [ISODCL (133, 140)];
+  char volume_set_size[ISODCL(121, 124)];
+  char volume_sequence_number[ISODCL(125, 128)];
+  char logical_block_size[ISODCL(129, 132)];
+  char path_table_size[ISODCL(133, 140)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char type_l_path_table [ISODCL (141, 144)];
- char opt_type_l_path_table [ISODCL (145, 148)];
- char type_m_path_table [ISODCL (149, 152)];
- char opt_type_m_path_table [ISODCL (153, 156)];
+  char type_l_path_table[ISODCL(141, 144)];
+  char opt_type_l_path_table[ISODCL(145, 148)];
+  char type_m_path_table[ISODCL(149, 152)];
+  char opt_type_m_path_table[ISODCL(153, 156)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char root_directory_record [ISODCL (157, 190)];
- char volume_set_id [ISODCL (191, 318)];
- char publisher_id [ISODCL (319, 446)];
- char preparer_id [ISODCL (447, 574)];
+  char root_directory_record[ISODCL(157, 190)];
+  char volume_set_id[ISODCL(191, 318)];
+  char publisher_id[ISODCL(319, 446)];
+  char preparer_id[ISODCL(447, 574)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char application_id [ISODCL (575, 702)];
- char copyright_file_id [ISODCL (703, 739)];
- char abstract_file_id [ISODCL (740, 776)];
- char bibliographic_file_id [ISODCL (777, 813)];
+  char application_id[ISODCL(575, 702)];
+  char copyright_file_id[ISODCL(703, 739)];
+  char abstract_file_id[ISODCL(740, 776)];
+  char bibliographic_file_id[ISODCL(777, 813)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char creation_date [ISODCL (814, 830)];
- char modification_date [ISODCL (831, 847)];
- char expiration_date [ISODCL (848, 864)];
- char effective_date [ISODCL (865, 881)];
+  char creation_date[ISODCL(814, 830)];
+  char modification_date[ISODCL(831, 847)];
+  char expiration_date[ISODCL(848, 864)];
+  char effective_date[ISODCL(865, 881)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char file_structure_version [ISODCL (882, 882)];
- char unused4 [ISODCL (883, 883)];
- char application_data [ISODCL (884, 1395)];
- char unused5 [ISODCL (1396, 2048)];
+  char file_structure_version[ISODCL(882, 882)];
+  char unused4[ISODCL(883, 883)];
+  char application_data[ISODCL(884, 1395)];
+  char unused5[ISODCL(1396, 2048)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define HS_STANDARD_ID "CDROM"
 struct hs_volume_descriptor {
- char foo [ISODCL ( 1, 8)];
+  char foo[ISODCL(1, 8)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char type [ISODCL ( 9, 9)];
- char id [ISODCL ( 10, 14)];
- char version [ISODCL ( 15, 15)];
- char data[ISODCL(16,2048)];
+  char type[ISODCL(9, 9)];
+  char id[ISODCL(10, 14)];
+  char version[ISODCL(15, 15)];
+  char data[ISODCL(16, 2048)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct hs_primary_descriptor {
- char foo [ISODCL ( 1, 8)];
- char type [ISODCL ( 9, 9)];
+  char foo[ISODCL(1, 8)];
+  char type[ISODCL(9, 9)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char id [ISODCL ( 10, 14)];
- char version [ISODCL ( 15, 15)];
- char unused1 [ISODCL ( 16, 16)];
- char system_id [ISODCL ( 17, 48)];
+  char id[ISODCL(10, 14)];
+  char version[ISODCL(15, 15)];
+  char unused1[ISODCL(16, 16)];
+  char system_id[ISODCL(17, 48)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char volume_id [ISODCL ( 49, 80)];
- char unused2 [ISODCL ( 81, 88)];
- char volume_space_size [ISODCL ( 89, 96)];
- char unused3 [ISODCL ( 97, 128)];
+  char volume_id[ISODCL(49, 80)];
+  char unused2[ISODCL(81, 88)];
+  char volume_space_size[ISODCL(89, 96)];
+  char unused3[ISODCL(97, 128)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char volume_set_size [ISODCL (129, 132)];
- char volume_sequence_number [ISODCL (133, 136)];
- char logical_block_size [ISODCL (137, 140)];
- char path_table_size [ISODCL (141, 148)];
+  char volume_set_size[ISODCL(129, 132)];
+  char volume_sequence_number[ISODCL(133, 136)];
+  char logical_block_size[ISODCL(137, 140)];
+  char path_table_size[ISODCL(141, 148)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char type_l_path_table [ISODCL (149, 152)];
- char unused4 [ISODCL (153, 180)];
- char root_directory_record [ISODCL (181, 214)];
+  char type_l_path_table[ISODCL(149, 152)];
+  char unused4[ISODCL(153, 180)];
+  char root_directory_record[ISODCL(181, 214)];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct iso_path_table{
- unsigned char name_len[2];
- char extent[4];
- char parent[2];
+struct iso_path_table {
+  unsigned char name_len[2];
+  char extent[4];
+  char parent[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[0];
+  char name[0];
 } __attribute__((packed));
 struct iso_directory_record {
- char length [ISODCL (1, 1)];
+  char length[ISODCL(1, 1)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char ext_attr_length [ISODCL (2, 2)];
- char extent [ISODCL (3, 10)];
- char size [ISODCL (11, 18)];
- char date [ISODCL (19, 25)];
+  char ext_attr_length[ISODCL(2, 2)];
+  char extent[ISODCL(3, 10)];
+  char size[ISODCL(11, 18)];
+  char date[ISODCL(19, 25)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char flags [ISODCL (26, 26)];
- char file_unit_size [ISODCL (27, 27)];
- char interleave [ISODCL (28, 28)];
- char volume_sequence_number [ISODCL (29, 32)];
+  char flags[ISODCL(26, 26)];
+  char file_unit_size[ISODCL(27, 27)];
+  char interleave[ISODCL(28, 28)];
+  char volume_sequence_number[ISODCL(29, 32)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char name_len [ISODCL (33, 33)];
- char name [0];
+  unsigned char name_len[ISODCL(33, 33)];
+  char name[0];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ivtv.h b/libc/kernel/uapi/linux/ivtv.h
index d1e6201..350c6b7 100644
--- a/libc/kernel/uapi/linux/ivtv.h
+++ b/libc/kernel/uapi/linux/ivtv.h
@@ -23,20 +23,20 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/videodev2.h>
 struct ivtv_dma_frame {
- enum v4l2_buf_type type;
- __u32 pixelformat;
+  enum v4l2_buf_type type;
+  __u32 pixelformat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *y_source;
- void __user *uv_source;
- struct v4l2_rect src;
- struct v4l2_rect dst;
+  void __user * y_source;
+  void __user * uv_source;
+  struct v4l2_rect src;
+  struct v4l2_rect dst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 src_width;
- __u32 src_height;
+  __u32 src_width;
+  __u32 src_height;
 };
-#define IVTV_IOC_DMA_FRAME _IOW ('V', BASE_VIDIOC_PRIVATE+0, struct ivtv_dma_frame)
+#define IVTV_IOC_DMA_FRAME _IOW('V', BASE_VIDIOC_PRIVATE + 0, struct ivtv_dma_frame)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IVTV_IOC_PASSTHROUGH_MODE _IOW ('V', BASE_VIDIOC_PRIVATE+1, int)
+#define IVTV_IOC_PASSTHROUGH_MODE _IOW('V', BASE_VIDIOC_PRIVATE + 1, int)
 #define IVTV_SLICED_TYPE_TELETEXT_B V4L2_MPEG_VBI_IVTV_TELETEXT_B
 #define IVTV_SLICED_TYPE_CAPTION_525 V4L2_MPEG_VBI_IVTV_CAPTION_525
 #define IVTV_SLICED_TYPE_WSS_625 V4L2_MPEG_VBI_IVTV_WSS_625
diff --git a/libc/kernel/uapi/linux/ivtvfb.h b/libc/kernel/uapi/linux/ivtvfb.h
index 90a5881..749ae83 100644
--- a/libc/kernel/uapi/linux/ivtvfb.h
+++ b/libc/kernel/uapi/linux/ivtvfb.h
@@ -22,10 +22,10 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ivtvfb_dma_frame {
- void __user *source;
- unsigned long dest_offset;
- int count;
+  void __user * source;
+  unsigned long dest_offset;
+  int count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define IVTVFB_IOC_DMA_FRAME _IOW('V', BASE_VIDIOC_PRIVATE+0, struct ivtvfb_dma_frame)
+#define IVTVFB_IOC_DMA_FRAME _IOW('V', BASE_VIDIOC_PRIVATE + 0, struct ivtvfb_dma_frame)
 #endif
diff --git a/libc/kernel/uapi/linux/ixjuser.h b/libc/kernel/uapi/linux/ixjuser.h
index ca5dd38..cb2ea45 100644
--- a/libc/kernel/uapi/linux/ixjuser.h
+++ b/libc/kernel/uapi/linux/ixjuser.h
@@ -19,7 +19,7 @@
 #ifndef __LINUX_IXJUSER_H
 #define __LINUX_IXJUSER_H
 #include <linux/telephony.h>
-#define IXJCTL_DSP_RESET _IO ('q', 0xC0)
+#define IXJCTL_DSP_RESET _IO('q', 0xC0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IXJCTL_RING PHONE_RING
 #define IXJCTL_HOOKSTATE PHONE_HOOKSTATE
@@ -28,15 +28,15 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IXJCTL_RING_START PHONE_RING_START
 #define IXJCTL_RING_STOP PHONE_RING_STOP
-#define IXJCTL_CARDTYPE _IOR ('q', 0xC1, int)
-#define IXJCTL_SERIAL _IOR ('q', 0xC2, int)
+#define IXJCTL_CARDTYPE _IOR('q', 0xC1, int)
+#define IXJCTL_SERIAL _IOR('q', 0xC2, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_DSP_TYPE _IOR ('q', 0xC3, int)
-#define IXJCTL_DSP_VERSION _IOR ('q', 0xC4, int)
-#define IXJCTL_VERSION _IOR ('q', 0xDA, char *)
-#define IXJCTL_DSP_IDLE _IO ('q', 0xC5)
+#define IXJCTL_DSP_TYPE _IOR('q', 0xC3, int)
+#define IXJCTL_DSP_VERSION _IOR('q', 0xC4, int)
+#define IXJCTL_VERSION _IOR('q', 0xDA, char *)
+#define IXJCTL_DSP_IDLE _IO('q', 0xC5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_TESTRAM _IO ('q', 0xC6)
+#define IXJCTL_TESTRAM _IO('q', 0xC6)
 #define IXJCTL_REC_CODEC PHONE_REC_CODEC
 #define IXJCTL_REC_START PHONE_REC_START
 #define IXJCTL_REC_STOP PHONE_REC_STOP
@@ -47,231 +47,321 @@
 #define IXJCTL_REC_LEVEL PHONE_REC_LEVEL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- f300_640 = 4, f300_500, f1100, f350, f400, f480, f440, f620, f20_50,
- f133_200, f300, f300_420, f330, f300_425, f330_440, f340, f350_400,
- f350_440, f350_450, f360, f380_420, f392, f400_425, f400_440, f400_450,
+  f300_640 = 4,
+  f300_500,
+  f1100,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- f420, f425, f425_450, f425_475, f435, f440_450, f440_480, f445, f450,
- f452, f475, f480_620, f494, f500, f520, f523, f525, f540_660, f587,
- f590, f600, f660, f700, f740, f750, f750_1450, f770, f800, f816, f850,
- f857_1645, f900, f900_1300, f935_1215, f941_1477, f942, f950, f950_1400,
+  f350,
+  f400,
+  f480,
+  f440,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- f975, f1000, f1020, f1050, f1100_1750, f1140, f1200, f1209, f1330, f1336,
- lf1366, f1380, f1400, f1477, f1600, f1633_1638, f1800, f1860
+  f620,
+  f20_50,
+  f133_200,
+  f300,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f300_420,
+  f330,
+  f300_425,
+  f330_440,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f340,
+  f350_400,
+  f350_440,
+  f350_450,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f360,
+  f380_420,
+  f392,
+  f400_425,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f400_440,
+  f400_450,
+  f420,
+  f425,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f425_450,
+  f425_475,
+  f435,
+  f440_450,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f440_480,
+  f445,
+  f450,
+  f452,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f475,
+  f480_620,
+  f494,
+  f500,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f520,
+  f523,
+  f525,
+  f540_660,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f587,
+  f590,
+  f600,
+  f660,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f700,
+  f740,
+  f750,
+  f750_1450,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f770,
+  f800,
+  f816,
+  f850,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f857_1645,
+  f900,
+  f900_1300,
+  f935_1215,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f941_1477,
+  f942,
+  f950,
+  f950_1400,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f975,
+  f1000,
+  f1020,
+  f1050,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f1100_1750,
+  f1140,
+  f1200,
+  f1209,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f1330,
+  f1336,
+  lf1366,
+  f1380,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f1400,
+  f1477,
+  f1600,
+  f1633_1638,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  f1800,
+  f1860
 } IXJ_FILTER_FREQ;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int filter;
- IXJ_FILTER_FREQ freq;
- char enable;
+  unsigned int filter;
+  IXJ_FILTER_FREQ freq;
+  char enable;
 } IXJ_FILTER;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- char enable;
- char en_filter;
- unsigned int filter;
+  char enable;
+  char en_filter;
+  unsigned int filter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int on1;
- unsigned int off1;
- unsigned int on2;
- unsigned int off2;
+  unsigned int on1;
+  unsigned int off1;
+  unsigned int on2;
+  unsigned int off2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int on3;
- unsigned int off3;
+  unsigned int on3;
+  unsigned int off3;
 } IXJ_FILTER_CADENCE;
-#define IXJCTL_SET_FILTER _IOW ('q', 0xC7, IXJ_FILTER *)
+#define IXJCTL_SET_FILTER _IOW('q', 0xC7, IXJ_FILTER *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_SET_FILTER_RAW _IOW ('q', 0xDD, IXJ_FILTER_RAW *)
-#define IXJCTL_GET_FILTER_HIST _IOW ('q', 0xC8, int)
-#define IXJCTL_FILTER_CADENCE _IOW ('q', 0xD6, IXJ_FILTER_CADENCE *)
-#define IXJCTL_PLAY_CID _IO ('q', 0xD7)
+#define IXJCTL_SET_FILTER_RAW _IOW('q', 0xDD, IXJ_FILTER_RAW *)
+#define IXJCTL_GET_FILTER_HIST _IOW('q', 0xC8, int)
+#define IXJCTL_FILTER_CADENCE _IOW('q', 0xD6, IXJ_FILTER_CADENCE *)
+#define IXJCTL_PLAY_CID _IO('q', 0xD7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- hz20 = 0x7ffa,
- hz50 = 0x7fe5,
- hz133 = 0x7f4c,
+  hz20 = 0x7ffa,
+  hz50 = 0x7fe5,
+  hz133 = 0x7f4c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz200 = 0x7e6b,
- hz261 = 0x7d50,
- hz277 = 0x7cfa,
- hz293 = 0x7c9f,
+  hz200 = 0x7e6b,
+  hz261 = 0x7d50,
+  hz277 = 0x7cfa,
+  hz293 = 0x7c9f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz300 = 0x7c75,
- hz311 = 0x7c32,
- hz329 = 0x7bbf,
- hz330 = 0x7bb8,
+  hz300 = 0x7c75,
+  hz311 = 0x7c32,
+  hz329 = 0x7bbf,
+  hz330 = 0x7bb8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz340 = 0x7b75,
- hz349 = 0x7b37,
- hz350 = 0x7b30,
- hz360 = 0x7ae9,
+  hz340 = 0x7b75,
+  hz349 = 0x7b37,
+  hz350 = 0x7b30,
+  hz360 = 0x7ae9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz369 = 0x7aa8,
- hz380 = 0x7a56,
- hz392 = 0x79fa,
- hz400 = 0x79bb,
+  hz369 = 0x7aa8,
+  hz380 = 0x7a56,
+  hz392 = 0x79fa,
+  hz400 = 0x79bb,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz415 = 0x7941,
- hz420 = 0x7918,
- hz425 = 0x78ee,
- hz435 = 0x7899,
+  hz415 = 0x7941,
+  hz420 = 0x7918,
+  hz425 = 0x78ee,
+  hz435 = 0x7899,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz440 = 0x786d,
- hz445 = 0x7842,
- hz450 = 0x7815,
- hz452 = 0x7803,
+  hz440 = 0x786d,
+  hz445 = 0x7842,
+  hz450 = 0x7815,
+  hz452 = 0x7803,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz466 = 0x7784,
- hz475 = 0x7731,
- hz480 = 0x7701,
- hz493 = 0x7685,
+  hz466 = 0x7784,
+  hz475 = 0x7731,
+  hz480 = 0x7701,
+  hz493 = 0x7685,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz494 = 0x767b,
- hz500 = 0x7640,
- hz520 = 0x7578,
- hz523 = 0x7559,
+  hz494 = 0x767b,
+  hz500 = 0x7640,
+  hz520 = 0x7578,
+  hz523 = 0x7559,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz525 = 0x7544,
- hz540 = 0x74a7,
- hz554 = 0x7411,
- hz587 = 0x72a1,
+  hz525 = 0x7544,
+  hz540 = 0x74a7,
+  hz554 = 0x7411,
+  hz587 = 0x72a1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz590 = 0x727f,
- hz600 = 0x720b,
- hz620 = 0x711e,
- hz622 = 0x7106,
+  hz590 = 0x727f,
+  hz600 = 0x720b,
+  hz620 = 0x711e,
+  hz622 = 0x7106,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz659 = 0x6f3b,
- hz660 = 0x6f2e,
- hz698 = 0x6d3d,
- hz700 = 0x6d22,
+  hz659 = 0x6f3b,
+  hz660 = 0x6f2e,
+  hz698 = 0x6d3d,
+  hz700 = 0x6d22,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz739 = 0x6b09,
- hz740 = 0x6afa,
- hz750 = 0x6a6c,
- hz770 = 0x694b,
+  hz739 = 0x6b09,
+  hz740 = 0x6afa,
+  hz750 = 0x6a6c,
+  hz770 = 0x694b,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz783 = 0x688b,
- hz800 = 0x678d,
- hz816 = 0x6698,
- hz830 = 0x65bf,
+  hz783 = 0x688b,
+  hz800 = 0x678d,
+  hz816 = 0x6698,
+  hz830 = 0x65bf,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz850 = 0x6484,
- hz857 = 0x6414,
- hz880 = 0x629f,
- hz900 = 0x6154,
+  hz850 = 0x6484,
+  hz857 = 0x6414,
+  hz880 = 0x629f,
+  hz900 = 0x6154,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz932 = 0x5f35,
- hz935 = 0x5f01,
- hz941 = 0x5e9a,
- hz942 = 0x5e88,
+  hz932 = 0x5f35,
+  hz935 = 0x5f01,
+  hz941 = 0x5e9a,
+  hz942 = 0x5e88,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz950 = 0x5dfd,
- hz975 = 0x5c44,
- hz1000 = 0x5a81,
- hz1020 = 0x5912,
+  hz950 = 0x5dfd,
+  hz975 = 0x5c44,
+  hz1000 = 0x5a81,
+  hz1020 = 0x5912,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz1050 = 0x56e2,
- hz1100 = 0x5320,
- hz1140 = 0x5007,
- hz1200 = 0x4b3b,
+  hz1050 = 0x56e2,
+  hz1100 = 0x5320,
+  hz1140 = 0x5007,
+  hz1200 = 0x4b3b,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz1209 = 0x4a80,
- hz1215 = 0x4a02,
- hz1250 = 0x471c,
- hz1300 = 0x42e0,
+  hz1209 = 0x4a80,
+  hz1215 = 0x4a02,
+  hz1250 = 0x471c,
+  hz1300 = 0x42e0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz1330 = 0x4049,
- hz1336 = 0x3fc4,
- hz1366 = 0x3d22,
- hz1380 = 0x3be4,
+  hz1330 = 0x4049,
+  hz1336 = 0x3fc4,
+  hz1366 = 0x3d22,
+  hz1380 = 0x3be4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz1400 = 0x3a1b,
- hz1450 = 0x3596,
- hz1477 = 0x331c,
- hz1500 = 0x30fb,
+  hz1400 = 0x3a1b,
+  hz1450 = 0x3596,
+  hz1477 = 0x331c,
+  hz1500 = 0x30fb,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz1600 = 0x278d,
- hz1633 = 0x2462,
- hz1638 = 0x23e7,
- hz1645 = 0x233a,
+  hz1600 = 0x278d,
+  hz1633 = 0x2462,
+  hz1638 = 0x23e7,
+  hz1645 = 0x233a,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz1750 = 0x18f8,
- hz1800 = 0x1405,
- hz1860 = 0xe0b,
- hz2100 = 0xf5f6,
+  hz1750 = 0x18f8,
+  hz1800 = 0x1405,
+  hz1860 = 0xe0b,
+  hz2100 = 0xf5f6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- hz2130 = 0xf2f5,
- hz2450 = 0xd3b3,
- hz2750 = 0xb8e4
+  hz2130 = 0xf2f5,
+  hz2450 = 0xd3b3,
+  hz2750 = 0xb8e4
 } IXJ_FREQ;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- C1 = hz261,
- CS1 = hz277,
- D1 = hz293,
+  C1 = hz261,
+  CS1 = hz277,
+  D1 = hz293,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DS1 = hz311,
- E1 = hz329,
- F1 = hz349,
- FS1 = hz369,
+  DS1 = hz311,
+  E1 = hz329,
+  F1 = hz349,
+  FS1 = hz369,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- G1 = hz392,
- GS1 = hz415,
- A1 = hz440,
- AS1 = hz466,
+  G1 = hz392,
+  GS1 = hz415,
+  A1 = hz440,
+  AS1 = hz466,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- B1 = hz493,
- C2 = hz523,
- CS2 = hz554,
- D2 = hz587,
+  B1 = hz493,
+  C2 = hz523,
+  CS2 = hz554,
+  D2 = hz587,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DS2 = hz622,
- E2 = hz659,
- F2 = hz698,
- FS2 = hz739,
+  DS2 = hz622,
+  E2 = hz659,
+  F2 = hz698,
+  FS2 = hz739,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- G2 = hz783,
- GS2 = hz830,
- A2 = hz880,
- AS2 = hz932,
+  G2 = hz783,
+  GS2 = hz830,
+  A2 = hz880,
+  AS2 = hz932,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } IXJ_NOTE;
 typedef struct {
- int tone_index;
- int freq0;
+  int tone_index;
+  int freq0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int gain0;
- int freq1;
- int gain1;
+  int gain0;
+  int freq1;
+  int gain1;
 } IXJ_TONE;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_INIT_TONE _IOW ('q', 0xC9, IXJ_TONE *)
+#define IXJCTL_INIT_TONE _IOW('q', 0xC9, IXJ_TONE *)
 typedef struct {
- int index;
- int tone_on_time;
+  int index;
+  int tone_on_time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tone_off_time;
- int freq0;
- int gain0;
- int freq1;
+  int tone_off_time;
+  int freq0;
+  int gain0;
+  int freq1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int gain1;
+  int gain1;
 } IXJ_CADENCE_ELEMENT;
 typedef enum {
- PLAY_ONCE,
+  PLAY_ONCE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- REPEAT_LAST_ELEMENT,
- REPEAT_ALL
+  REPEAT_LAST_ELEMENT,
+  REPEAT_ALL
 } IXJ_CADENCE_TERM;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int elements_used;
- IXJ_CADENCE_TERM termination;
- IXJ_CADENCE_ELEMENT __user *ce;
+  int elements_used;
+  IXJ_CADENCE_TERM termination;
+  IXJ_CADENCE_ELEMENT __user * ce;
 } IXJ_CADENCE;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_TONE_CADENCE _IOW ('q', 0xCA, IXJ_CADENCE *)
+#define IXJCTL_TONE_CADENCE _IOW('q', 0xCA, IXJ_CADENCE *)
 #define IXJCTL_PLAY_CODEC PHONE_PLAY_CODEC
 #define IXJCTL_PLAY_START PHONE_PLAY_START
 #define IXJCTL_PLAY_STOP PHONE_PLAY_STOP
@@ -279,10 +369,10 @@
 #define IXJCTL_PLAY_DEPTH PHONE_PLAY_DEPTH
 #define IXJCTL_PLAY_VOLUME PHONE_PLAY_VOLUME
 #define IXJCTL_PLAY_LEVEL PHONE_PLAY_LEVEL
-#define IXJCTL_AEC_START _IOW ('q', 0xCB, int)
+#define IXJCTL_AEC_START _IOW('q', 0xCB, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_AEC_STOP _IO ('q', 0xCC)
-#define IXJCTL_AEC_GET_LEVEL _IO ('q', 0xCD)
+#define IXJCTL_AEC_STOP _IO('q', 0xCC)
+#define IXJCTL_AEC_GET_LEVEL _IO('q', 0xCD)
 #define AEC_OFF 0
 #define AEC_LOW 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -309,9 +399,9 @@
 #define IXJCTL_RINGBACK PHONE_RINGBACK
 #define IXJCTL_DIALTONE PHONE_DIALTONE
 #define IXJCTL_CPT_STOP PHONE_CPT_STOP
-#define IXJCTL_SET_LED _IOW ('q', 0xCE, int)
+#define IXJCTL_SET_LED _IOW('q', 0xCE, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_MIXER _IOW ('q', 0xCF, int)
+#define IXJCTL_MIXER _IOW('q', 0xCF, int)
 #define MIXER_MASTER_L 0x0000
 #define MIXER_MASTER_R 0x0100
 #define ATT00DB 0x00
@@ -417,7 +507,7 @@
 #define POTS_ATT_28DB 0x07
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POTS_MUTE 0x80
-#define IXJCTL_DAA_COEFF_SET _IOW ('q', 0xD0, int)
+#define IXJCTL_DAA_COEFF_SET _IOW('q', 0xD0, int)
 #define DAA_US 1
 #define DAA_UK 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -426,7 +516,7 @@
 #define DAA_AUSTRALIA 5
 #define DAA_JAPAN 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_PORT _IOW ('q', 0xD1, int)
+#define IXJCTL_PORT _IOW('q', 0xD1, int)
 #define PORT_QUERY 0
 #define PORT_POTS 1
 #define PORT_PSTN 2
@@ -441,7 +531,7 @@
 #define PSTN_OFF_HOOK 2
 #define PSTN_PULSE_DIAL 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_DAA_AGAIN _IOW ('q', 0xD2, int)
+#define IXJCTL_DAA_AGAIN _IOW('q', 0xD2, int)
 #define AGRR00DB 0x00
 #define AGRR3_5DB 0x10
 #define AGRR06DB 0x30
@@ -451,55 +541,63 @@
 #define AGX3_5DB 0x08
 #define AGX_2_5B 0x0C
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_PSTN_LINETEST _IO ('q', 0xD3)
-#define IXJCTL_CID _IOR ('q', 0xD4, PHONE_CID *)
-#define IXJCTL_VMWI _IOR ('q', 0xD8, int)
-#define IXJCTL_CIDCW _IOW ('q', 0xD9, PHONE_CID *)
+#define IXJCTL_PSTN_LINETEST _IO('q', 0xD3)
+#define IXJCTL_CID _IOR('q', 0xD4, PHONE_CID *)
+#define IXJCTL_VMWI _IOR('q', 0xD8, int)
+#define IXJCTL_CIDCW _IOW('q', 0xD9, PHONE_CID *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IXJCTL_WINK_DURATION PHONE_WINK_DURATION
-#define IXJCTL_POTS_PSTN _IOW ('q', 0xD5, int)
-#define IXJCTL_HZ _IOW ('q', 0xE0, int)
-#define IXJCTL_RATE _IOW ('q', 0xE1, int)
+#define IXJCTL_POTS_PSTN _IOW('q', 0xD5, int)
+#define IXJCTL_HZ _IOW('q', 0xE0, int)
+#define IXJCTL_RATE _IOW('q', 0xE1, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_FRAMES_READ _IOR ('q', 0xE2, unsigned long)
-#define IXJCTL_FRAMES_WRITTEN _IOR ('q', 0xE3, unsigned long)
-#define IXJCTL_READ_WAIT _IOR ('q', 0xE4, unsigned long)
-#define IXJCTL_WRITE_WAIT _IOR ('q', 0xE5, unsigned long)
+#define IXJCTL_FRAMES_READ _IOR('q', 0xE2, unsigned long)
+#define IXJCTL_FRAMES_WRITTEN _IOR('q', 0xE3, unsigned long)
+#define IXJCTL_READ_WAIT _IOR('q', 0xE4, unsigned long)
+#define IXJCTL_WRITE_WAIT _IOR('q', 0xE5, unsigned long)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_DRYBUFFER_READ _IOR ('q', 0xE6, unsigned long)
-#define IXJCTL_DRYBUFFER_CLEAR _IO ('q', 0xE7)
-#define IXJCTL_DTMF_PRESCALE _IOW ('q', 0xE8, int)
+#define IXJCTL_DRYBUFFER_READ _IOR('q', 0xE6, unsigned long)
+#define IXJCTL_DRYBUFFER_CLEAR _IO('q', 0xE7)
+#define IXJCTL_DTMF_PRESCALE _IOW('q', 0xE8, int)
 typedef enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SIG_DTMF_READY,
- SIG_HOOKSTATE,
- SIG_FLASH,
- SIG_PSTN_RING,
+  SIG_DTMF_READY,
+  SIG_HOOKSTATE,
+  SIG_FLASH,
+  SIG_PSTN_RING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SIG_CALLER_ID,
- SIG_PSTN_WINK,
- SIG_F0, SIG_F1, SIG_F2, SIG_F3,
- SIG_FC0, SIG_FC1, SIG_FC2, SIG_FC3,
+  SIG_CALLER_ID,
+  SIG_PSTN_WINK,
+  SIG_F0,
+  SIG_F1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SIG_READ_READY = 33,
- SIG_WRITE_READY = 34
+  SIG_F2,
+  SIG_F3,
+  SIG_FC0,
+  SIG_FC1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SIG_FC2,
+  SIG_FC3,
+  SIG_READ_READY = 33,
+  SIG_WRITE_READY = 34
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } IXJ_SIGEVENT;
 typedef struct {
+  unsigned int event;
+  int signal;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int event;
- int signal;
 } IXJ_SIGDEF;
-#define IXJCTL_SIGCTL _IOW ('q', 0xE9, IXJ_SIGDEF *)
+#define IXJCTL_SIGCTL _IOW('q', 0xE9, IXJ_SIGDEF *)
+#define IXJCTL_SC_RXG _IOW('q', 0xEA, int)
+#define IXJCTL_SC_TXG _IOW('q', 0xEB, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IXJCTL_SC_RXG _IOW ('q', 0xEA, int)
-#define IXJCTL_SC_TXG _IOW ('q', 0xEB, int)
-#define IXJCTL_INTERCOM_START _IOW ('q', 0xFD, int)
-#define IXJCTL_INTERCOM_STOP _IOW ('q', 0xFE, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IXJCTL_INTERCOM_START _IOW('q', 0xFD, int)
+#define IXJCTL_INTERCOM_STOP _IOW('q', 0xFE, int)
 typedef struct {
- unsigned int filter;
- char enable;
- unsigned int coeff[19];
+  unsigned int filter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char enable;
+  unsigned int coeff[19];
 } IXJ_FILTER_RAW;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/jffs2.h b/libc/kernel/uapi/linux/jffs2.h
index da3ce82..b7d4190 100644
--- a/libc/kernel/uapi/linux/jffs2.h
+++ b/libc/kernel/uapi/linux/jffs2.h
@@ -68,139 +68,132 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define JFFS2_INO_FLAG_USERCOMPR 2
 typedef struct {
- __u32 v32;
+  __u32 v32;
 } __attribute__((packed)) jint32_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- __u32 m;
+  __u32 m;
 } __attribute__((packed)) jmode_t;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 v16;
+  __u16 v16;
 } __attribute__((packed)) jint16_t;
-struct jffs2_unknown_node
-{
+struct jffs2_unknown_node {
+  jint16_t magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint16_t magic;
- jint16_t nodetype;
- jint32_t totlen;
- jint32_t hdr_crc;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
 };
-struct jffs2_raw_dirent
-{
- jint16_t magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint16_t nodetype;
- jint32_t totlen;
- jint32_t hdr_crc;
- jint32_t pino;
+struct jffs2_raw_dirent {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t version;
- jint32_t ino;
- jint32_t mctime;
- __u8 nsize;
+  jint32_t hdr_crc;
+  jint32_t pino;
+  jint32_t version;
+  jint32_t ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u8 unused[2];
- jint32_t node_crc;
- jint32_t name_crc;
+  jint32_t mctime;
+  __u8 nsize;
+  __u8 type;
+  __u8 unused[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 name[0];
+  jint32_t node_crc;
+  jint32_t name_crc;
+  __u8 name[0];
 };
-struct jffs2_raw_inode
-{
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint16_t magic;
- jint16_t nodetype;
- jint32_t totlen;
- jint32_t hdr_crc;
+struct jffs2_raw_inode {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t ino;
- jint32_t version;
- jmode_t mode;
- jint16_t uid;
+  jint32_t hdr_crc;
+  jint32_t ino;
+  jint32_t version;
+  jmode_t mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint16_t gid;
- jint32_t isize;
- jint32_t atime;
- jint32_t mtime;
+  jint16_t uid;
+  jint16_t gid;
+  jint32_t isize;
+  jint32_t atime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t ctime;
- jint32_t offset;
- jint32_t csize;
- jint32_t dsize;
+  jint32_t mtime;
+  jint32_t ctime;
+  jint32_t offset;
+  jint32_t csize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 compr;
- __u8 usercompr;
- jint16_t flags;
- jint32_t data_crc;
+  jint32_t dsize;
+  __u8 compr;
+  __u8 usercompr;
+  jint16_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t node_crc;
- __u8 data[0];
+  jint32_t data_crc;
+  jint32_t node_crc;
+  __u8 data[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct jffs2_raw_xattr {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint16_t magic;
- jint16_t nodetype;
- jint32_t totlen;
- jint32_t hdr_crc;
+  jint32_t hdr_crc;
+  jint32_t xid;
+  jint32_t version;
+  __u8 xprefix;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t xid;
- jint32_t version;
- __u8 xprefix;
- __u8 name_len;
+  __u8 name_len;
+  jint16_t value_len;
+  jint32_t data_crc;
+  jint32_t node_crc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint16_t value_len;
- jint32_t data_crc;
- jint32_t node_crc;
- __u8 data[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 data[0];
 } __attribute__((packed));
-struct jffs2_raw_xref
-{
- jint16_t magic;
+struct jffs2_raw_xref {
+  jint16_t magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint16_t nodetype;
- jint32_t totlen;
- jint32_t hdr_crc;
- jint32_t ino;
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
+  jint32_t ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t xid;
- jint32_t xseqno;
- jint32_t node_crc;
+  jint32_t xid;
+  jint32_t xseqno;
+  jint32_t node_crc;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct jffs2_raw_summary
-{
- jint16_t magic;
- jint16_t nodetype;
+struct jffs2_raw_summary {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t totlen;
- jint32_t hdr_crc;
- jint32_t sum_num;
- jint32_t cln_mkr;
+  jint32_t hdr_crc;
+  jint32_t sum_num;
+  jint32_t cln_mkr;
+  jint32_t padded;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t padded;
- jint32_t sum_crc;
- jint32_t node_crc;
- jint32_t sum[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  jint32_t sum_crc;
+  jint32_t node_crc;
+  jint32_t sum[0];
 };
-union jffs2_node_union
-{
- struct jffs2_raw_inode i;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct jffs2_raw_dirent d;
- struct jffs2_raw_xattr x;
- struct jffs2_raw_xref r;
- struct jffs2_raw_summary s;
+union jffs2_node_union {
+  struct jffs2_raw_inode i;
+  struct jffs2_raw_dirent d;
+  struct jffs2_raw_xattr x;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct jffs2_unknown_node u;
+  struct jffs2_raw_xref r;
+  struct jffs2_raw_summary s;
+  struct jffs2_unknown_node u;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union jffs2_device_node {
- jint16_t old_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- jint32_t new_id;
+  jint16_t old_id;
+  jint32_t new_id;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/joystick.h b/libc/kernel/uapi/linux/joystick.h
index a52d38b..9933e69 100644
--- a/libc/kernel/uapi/linux/joystick.h
+++ b/libc/kernel/uapi/linux/joystick.h
@@ -27,11 +27,11 @@
 #define JS_EVENT_INIT 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct js_event {
- __u32 time;
- __s16 value;
- __u8 type;
+  __u32 time;
+  __s16 value;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 number;
+  __u8 number;
 };
 #define JSIOCGVERSION _IOR('j', 0x01, __u32)
 #define JSIOCGAXES _IOR('j', 0x11, __u8)
@@ -49,10 +49,10 @@
 #define JS_CORR_NONE 0x00
 #define JS_CORR_BROKEN 0x01
 struct js_corr {
- __s32 coef[8];
+  __s32 coef[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s16 prec;
- __u16 type;
+  __s16 prec;
+  __u16 type;
 };
 #define JS_RETURN sizeof(struct JS_DATA_TYPE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -79,30 +79,30 @@
 #define JS_GET_ALL 7
 #define JS_SET_ALL 8
 struct JS_DATA_TYPE {
- __s32 buttons;
+  __s32 buttons;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 x;
- __s32 y;
+  __s32 x;
+  __s32 y;
 };
 struct JS_DATA_SAVE_TYPE_32 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 JS_TIMEOUT;
- __s32 BUSY;
- __s32 JS_EXPIRETIME;
- __s32 JS_TIMELIMIT;
+  __s32 JS_TIMEOUT;
+  __s32 BUSY;
+  __s32 JS_EXPIRETIME;
+  __s32 JS_TIMELIMIT;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct JS_DATA_TYPE JS_SAVE;
- struct JS_DATA_TYPE JS_CORR;
+  struct JS_DATA_TYPE JS_SAVE;
+  struct JS_DATA_TYPE JS_CORR;
 };
 struct JS_DATA_SAVE_TYPE_64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 JS_TIMEOUT;
- __s32 BUSY;
- __s64 JS_EXPIRETIME;
- __s64 JS_TIMELIMIT;
+  __s32 JS_TIMEOUT;
+  __s32 BUSY;
+  __s64 JS_EXPIRETIME;
+  __s64 JS_TIMELIMIT;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct JS_DATA_TYPE JS_SAVE;
- struct JS_DATA_TYPE JS_CORR;
+  struct JS_DATA_TYPE JS_SAVE;
+  struct JS_DATA_TYPE JS_CORR;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/kd.h b/libc/kernel/uapi/linux/kd.h
index c1fd11c..a000cd8 100644
--- a/libc/kernel/uapi/linux/kd.h
+++ b/libc/kernel/uapi/linux/kd.h
@@ -27,9 +27,9 @@
 #define PIO_FONTX 0x4B6C
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct consolefontdesc {
- unsigned short charcount;
- unsigned short charheight;
- char __user *chardata;
+  unsigned short charcount;
+  unsigned short charheight;
+  char __user * chardata;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define PIO_FONTRESET 0x4B6D
@@ -74,22 +74,22 @@
 #define PIO_UNISCRNMAP 0x4B6A
 #define GIO_UNIMAP 0x4B66
 struct unipair {
- unsigned short unicode;
+  unsigned short unicode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short fontpos;
+  unsigned short fontpos;
 };
 struct unimapdesc {
- unsigned short entry_ct;
+  unsigned short entry_ct;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct unipair __user *entries;
+  struct unipair __user * entries;
 };
 #define PIO_UNIMAP 0x4B67
 #define PIO_UNIMAPCLR 0x4B68
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct unimapinit {
- unsigned short advised_hashsize;
- unsigned short advised_hashstep;
- unsigned short advised_hashlevel;
+  unsigned short advised_hashsize;
+  unsigned short advised_hashstep;
+  unsigned short advised_hashlevel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define UNI_DIRECT_BASE 0xF000
@@ -116,9 +116,9 @@
 #define KDSKBLED 0x4B65
 struct kbentry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char kb_table;
- unsigned char kb_index;
- unsigned short kb_value;
+  unsigned char kb_table;
+  unsigned char kb_index;
+  unsigned short kb_value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_NORMTAB 0x00
@@ -129,37 +129,37 @@
 #define KDGKBENT 0x4B46
 #define KDSKBENT 0x4B47
 struct kbsentry {
- unsigned char kb_func;
+  unsigned char kb_func;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char kb_string[512];
+  unsigned char kb_string[512];
 };
 #define KDGKBSENT 0x4B48
 #define KDSKBSENT 0x4B49
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kbdiacr {
- unsigned char diacr, base, result;
+  unsigned char diacr, base, result;
 };
 struct kbdiacrs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int kb_cnt;
- struct kbdiacr kbdiacr[256];
+  unsigned int kb_cnt;
+  struct kbdiacr kbdiacr[256];
 };
 #define KDGKBDIACR 0x4B4A
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDSKBDIACR 0x4B4B
 struct kbdiacruc {
- unsigned int diacr, base, result;
+  unsigned int diacr, base, result;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kbdiacrsuc {
- unsigned int kb_cnt;
- struct kbdiacruc kbdiacruc[256];
+  unsigned int kb_cnt;
+  struct kbdiacruc kbdiacruc[256];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDGKBDIACRUC 0x4BFA
 #define KDSKBDIACRUC 0x4BFB
 struct kbkeycode {
- unsigned int scancode, keycode;
+  unsigned int scancode, keycode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define KDGETKEYCODE 0x4B4C
@@ -167,26 +167,26 @@
 #define KDSIGACCEPT 0x4B4E
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kbd_repeat {
- int delay;
- int period;
+  int delay;
+  int period;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDKBDREP 0x4B52
 #define KDFONTOP 0x4B72
 struct console_font_op {
- unsigned int op;
+  unsigned int op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
- unsigned int width, height;
- unsigned int charcount;
- unsigned char __user *data;
+  unsigned int flags;
+  unsigned int width, height;
+  unsigned int charcount;
+  unsigned char __user * data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct console_font {
- unsigned int width, height;
- unsigned int charcount;
+  unsigned int width, height;
+  unsigned int charcount;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char *data;
+  unsigned char * data;
 };
 #define KD_FONT_OP_SET 0
 #define KD_FONT_OP_GET 1
diff --git a/libc/kernel/uapi/linux/kdev_t.h b/libc/kernel/uapi/linux/kdev_t.h
index 7cb1d69..f4c0436 100644
--- a/libc/kernel/uapi/linux/kdev_t.h
+++ b/libc/kernel/uapi/linux/kdev_t.h
@@ -18,8 +18,8 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_KDEV_T_H
 #define _UAPI_LINUX_KDEV_T_H
-#define MAJOR(dev) ((dev)>>8)
+#define MAJOR(dev) ((dev) >> 8)
 #define MINOR(dev) ((dev) & 0xff)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MKDEV(ma,mi) ((ma)<<8 | (mi))
+#define MKDEV(ma,mi) ((ma) << 8 | (mi))
 #endif
diff --git a/libc/kernel/uapi/linux/kernel-page-flags.h b/libc/kernel/uapi/linux/kernel-page-flags.h
index c4d05cc..ce30be7 100644
--- a/libc/kernel/uapi/linux/kernel-page-flags.h
+++ b/libc/kernel/uapi/linux/kernel-page-flags.h
@@ -47,4 +47,5 @@
 #define KPF_KSM 21
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KPF_THP 22
+#define KPF_BALLOON 23
 #endif
diff --git a/libc/kernel/uapi/linux/kernel.h b/libc/kernel/uapi/linux/kernel.h
index c4c0ddc..eb9490f 100644
--- a/libc/kernel/uapi/linux/kernel.h
+++ b/libc/kernel/uapi/linux/kernel.h
@@ -19,7 +19,7 @@
 #ifndef _UAPI_LINUX_KERNEL_H
 #define _UAPI_LINUX_KERNEL_H
 #include <linux/sysinfo.h>
-#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
+#define __ALIGN_KERNEL(x,a) __ALIGN_KERNEL_MASK(x, (typeof(x)) (a) - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
+#define __ALIGN_KERNEL_MASK(x,mask) (((x) + (mask)) & ~(mask))
 #endif
diff --git a/libc/kernel/uapi/linux/kernelcapi.h b/libc/kernel/uapi/linux/kernelcapi.h
index f5e3974..a84fcf8 100644
--- a/libc/kernel/uapi/linux/kernelcapi.h
+++ b/libc/kernel/uapi/linux/kernelcapi.h
@@ -23,17 +23,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPI_MAXDATAWINDOW 8
 typedef struct kcapi_flagdef {
- int contr;
- int flag;
+  int contr;
+  int flag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } kcapi_flagdef;
 typedef struct kcapi_carddef {
- char driver[32];
- unsigned int port;
+  char driver[32];
+  unsigned int port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned irq;
- unsigned int membase;
- int cardnr;
+  unsigned irq;
+  unsigned int membase;
+  int cardnr;
 } kcapi_carddef;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KCAPI_CMD_TRACE 10
diff --git a/libc/kernel/uapi/linux/kexec.h b/libc/kernel/uapi/linux/kexec.h
index a17dc23..e16385e 100644
--- a/libc/kernel/uapi/linux/kexec.h
+++ b/libc/kernel/uapi/linux/kexec.h
@@ -23,28 +23,32 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEXEC_PRESERVE_CONTEXT 0x00000002
 #define KEXEC_ARCH_MASK 0xffff0000
-#define KEXEC_ARCH_DEFAULT ( 0 << 16)
-#define KEXEC_ARCH_386 ( 3 << 16)
+#define KEXEC_FILE_UNLOAD 0x00000001
+#define KEXEC_FILE_ON_CRASH 0x00000002
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KEXEC_ARCH_68K ( 4 << 16)
+#define KEXEC_FILE_NO_INITRAMFS 0x00000004
+#define KEXEC_ARCH_DEFAULT (0 << 16)
+#define KEXEC_ARCH_386 (3 << 16)
+#define KEXEC_ARCH_68K (4 << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEXEC_ARCH_X86_64 (62 << 16)
 #define KEXEC_ARCH_PPC (20 << 16)
 #define KEXEC_ARCH_PPC64 (21 << 16)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEXEC_ARCH_IA_64 (50 << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEXEC_ARCH_ARM (40 << 16)
 #define KEXEC_ARCH_S390 (22 << 16)
 #define KEXEC_ARCH_SH (42 << 16)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEXEC_ARCH_MIPS_LE (10 << 16)
-#define KEXEC_ARCH_MIPS ( 8 << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEXEC_ARCH_MIPS (8 << 16)
 #define KEXEC_SEGMENT_MAX 16
 struct kexec_segment {
+  const void * buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- const void *buf;
- size_t bufsz;
- const void *mem;
- size_t memsz;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  size_t bufsz;
+  const void * mem;
+  size_t memsz;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/keyboard.h b/libc/kernel/uapi/linux/keyboard.h
index 0358920..8de0fd7 100644
--- a/libc/kernel/uapi/linux/keyboard.h
+++ b/libc/kernel/uapi/linux/keyboard.h
@@ -57,464 +57,464 @@
 #define KT_DEAD2 13
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KT_BRL 14
-#define K(t,v) (((t)<<8)|(v))
+#define K(t,v) (((t) << 8) | (v))
 #define KTYP(x) ((x) >> 8)
 #define KVAL(x) ((x) & 0xff)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F1 K(KT_FN,0)
-#define K_F2 K(KT_FN,1)
-#define K_F3 K(KT_FN,2)
-#define K_F4 K(KT_FN,3)
+#define K_F1 K(KT_FN, 0)
+#define K_F2 K(KT_FN, 1)
+#define K_F3 K(KT_FN, 2)
+#define K_F4 K(KT_FN, 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F5 K(KT_FN,4)
-#define K_F6 K(KT_FN,5)
-#define K_F7 K(KT_FN,6)
-#define K_F8 K(KT_FN,7)
+#define K_F5 K(KT_FN, 4)
+#define K_F6 K(KT_FN, 5)
+#define K_F7 K(KT_FN, 6)
+#define K_F8 K(KT_FN, 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F9 K(KT_FN,8)
-#define K_F10 K(KT_FN,9)
-#define K_F11 K(KT_FN,10)
-#define K_F12 K(KT_FN,11)
+#define K_F9 K(KT_FN, 8)
+#define K_F10 K(KT_FN, 9)
+#define K_F11 K(KT_FN, 10)
+#define K_F12 K(KT_FN, 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F13 K(KT_FN,12)
-#define K_F14 K(KT_FN,13)
-#define K_F15 K(KT_FN,14)
-#define K_F16 K(KT_FN,15)
+#define K_F13 K(KT_FN, 12)
+#define K_F14 K(KT_FN, 13)
+#define K_F15 K(KT_FN, 14)
+#define K_F16 K(KT_FN, 15)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F17 K(KT_FN,16)
-#define K_F18 K(KT_FN,17)
-#define K_F19 K(KT_FN,18)
-#define K_F20 K(KT_FN,19)
+#define K_F17 K(KT_FN, 16)
+#define K_F18 K(KT_FN, 17)
+#define K_F19 K(KT_FN, 18)
+#define K_F20 K(KT_FN, 19)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_FIND K(KT_FN,20)
-#define K_INSERT K(KT_FN,21)
-#define K_REMOVE K(KT_FN,22)
-#define K_SELECT K(KT_FN,23)
+#define K_FIND K(KT_FN, 20)
+#define K_INSERT K(KT_FN, 21)
+#define K_REMOVE K(KT_FN, 22)
+#define K_SELECT K(KT_FN, 23)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_PGUP K(KT_FN,24)
-#define K_PGDN K(KT_FN,25)
-#define K_MACRO K(KT_FN,26)
-#define K_HELP K(KT_FN,27)
+#define K_PGUP K(KT_FN, 24)
+#define K_PGDN K(KT_FN, 25)
+#define K_MACRO K(KT_FN, 26)
+#define K_HELP K(KT_FN, 27)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_DO K(KT_FN,28)
-#define K_PAUSE K(KT_FN,29)
-#define K_F21 K(KT_FN,30)
-#define K_F22 K(KT_FN,31)
+#define K_DO K(KT_FN, 28)
+#define K_PAUSE K(KT_FN, 29)
+#define K_F21 K(KT_FN, 30)
+#define K_F22 K(KT_FN, 31)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F23 K(KT_FN,32)
-#define K_F24 K(KT_FN,33)
-#define K_F25 K(KT_FN,34)
-#define K_F26 K(KT_FN,35)
+#define K_F23 K(KT_FN, 32)
+#define K_F24 K(KT_FN, 33)
+#define K_F25 K(KT_FN, 34)
+#define K_F26 K(KT_FN, 35)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F27 K(KT_FN,36)
-#define K_F28 K(KT_FN,37)
-#define K_F29 K(KT_FN,38)
-#define K_F30 K(KT_FN,39)
+#define K_F27 K(KT_FN, 36)
+#define K_F28 K(KT_FN, 37)
+#define K_F29 K(KT_FN, 38)
+#define K_F30 K(KT_FN, 39)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F31 K(KT_FN,40)
-#define K_F32 K(KT_FN,41)
-#define K_F33 K(KT_FN,42)
-#define K_F34 K(KT_FN,43)
+#define K_F31 K(KT_FN, 40)
+#define K_F32 K(KT_FN, 41)
+#define K_F33 K(KT_FN, 42)
+#define K_F34 K(KT_FN, 43)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F35 K(KT_FN,44)
-#define K_F36 K(KT_FN,45)
-#define K_F37 K(KT_FN,46)
-#define K_F38 K(KT_FN,47)
+#define K_F35 K(KT_FN, 44)
+#define K_F36 K(KT_FN, 45)
+#define K_F37 K(KT_FN, 46)
+#define K_F38 K(KT_FN, 47)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F39 K(KT_FN,48)
-#define K_F40 K(KT_FN,49)
-#define K_F41 K(KT_FN,50)
-#define K_F42 K(KT_FN,51)
+#define K_F39 K(KT_FN, 48)
+#define K_F40 K(KT_FN, 49)
+#define K_F41 K(KT_FN, 50)
+#define K_F42 K(KT_FN, 51)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F43 K(KT_FN,52)
-#define K_F44 K(KT_FN,53)
-#define K_F45 K(KT_FN,54)
-#define K_F46 K(KT_FN,55)
+#define K_F43 K(KT_FN, 52)
+#define K_F44 K(KT_FN, 53)
+#define K_F45 K(KT_FN, 54)
+#define K_F46 K(KT_FN, 55)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F47 K(KT_FN,56)
-#define K_F48 K(KT_FN,57)
-#define K_F49 K(KT_FN,58)
-#define K_F50 K(KT_FN,59)
+#define K_F47 K(KT_FN, 56)
+#define K_F48 K(KT_FN, 57)
+#define K_F49 K(KT_FN, 58)
+#define K_F50 K(KT_FN, 59)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F51 K(KT_FN,60)
-#define K_F52 K(KT_FN,61)
-#define K_F53 K(KT_FN,62)
-#define K_F54 K(KT_FN,63)
+#define K_F51 K(KT_FN, 60)
+#define K_F52 K(KT_FN, 61)
+#define K_F53 K(KT_FN, 62)
+#define K_F54 K(KT_FN, 63)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F55 K(KT_FN,64)
-#define K_F56 K(KT_FN,65)
-#define K_F57 K(KT_FN,66)
-#define K_F58 K(KT_FN,67)
+#define K_F55 K(KT_FN, 64)
+#define K_F56 K(KT_FN, 65)
+#define K_F57 K(KT_FN, 66)
+#define K_F58 K(KT_FN, 67)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F59 K(KT_FN,68)
-#define K_F60 K(KT_FN,69)
-#define K_F61 K(KT_FN,70)
-#define K_F62 K(KT_FN,71)
+#define K_F59 K(KT_FN, 68)
+#define K_F60 K(KT_FN, 69)
+#define K_F61 K(KT_FN, 70)
+#define K_F62 K(KT_FN, 71)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F63 K(KT_FN,72)
-#define K_F64 K(KT_FN,73)
-#define K_F65 K(KT_FN,74)
-#define K_F66 K(KT_FN,75)
+#define K_F63 K(KT_FN, 72)
+#define K_F64 K(KT_FN, 73)
+#define K_F65 K(KT_FN, 74)
+#define K_F66 K(KT_FN, 75)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F67 K(KT_FN,76)
-#define K_F68 K(KT_FN,77)
-#define K_F69 K(KT_FN,78)
-#define K_F70 K(KT_FN,79)
+#define K_F67 K(KT_FN, 76)
+#define K_F68 K(KT_FN, 77)
+#define K_F69 K(KT_FN, 78)
+#define K_F70 K(KT_FN, 79)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F71 K(KT_FN,80)
-#define K_F72 K(KT_FN,81)
-#define K_F73 K(KT_FN,82)
-#define K_F74 K(KT_FN,83)
+#define K_F71 K(KT_FN, 80)
+#define K_F72 K(KT_FN, 81)
+#define K_F73 K(KT_FN, 82)
+#define K_F74 K(KT_FN, 83)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F75 K(KT_FN,84)
-#define K_F76 K(KT_FN,85)
-#define K_F77 K(KT_FN,86)
-#define K_F78 K(KT_FN,87)
+#define K_F75 K(KT_FN, 84)
+#define K_F76 K(KT_FN, 85)
+#define K_F77 K(KT_FN, 86)
+#define K_F78 K(KT_FN, 87)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F79 K(KT_FN,88)
-#define K_F80 K(KT_FN,89)
-#define K_F81 K(KT_FN,90)
-#define K_F82 K(KT_FN,91)
+#define K_F79 K(KT_FN, 88)
+#define K_F80 K(KT_FN, 89)
+#define K_F81 K(KT_FN, 90)
+#define K_F82 K(KT_FN, 91)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F83 K(KT_FN,92)
-#define K_F84 K(KT_FN,93)
-#define K_F85 K(KT_FN,94)
-#define K_F86 K(KT_FN,95)
+#define K_F83 K(KT_FN, 92)
+#define K_F84 K(KT_FN, 93)
+#define K_F85 K(KT_FN, 94)
+#define K_F86 K(KT_FN, 95)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F87 K(KT_FN,96)
-#define K_F88 K(KT_FN,97)
-#define K_F89 K(KT_FN,98)
-#define K_F90 K(KT_FN,99)
+#define K_F87 K(KT_FN, 96)
+#define K_F88 K(KT_FN, 97)
+#define K_F89 K(KT_FN, 98)
+#define K_F90 K(KT_FN, 99)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F91 K(KT_FN,100)
-#define K_F92 K(KT_FN,101)
-#define K_F93 K(KT_FN,102)
-#define K_F94 K(KT_FN,103)
+#define K_F91 K(KT_FN, 100)
+#define K_F92 K(KT_FN, 101)
+#define K_F93 K(KT_FN, 102)
+#define K_F94 K(KT_FN, 103)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F95 K(KT_FN,104)
-#define K_F96 K(KT_FN,105)
-#define K_F97 K(KT_FN,106)
-#define K_F98 K(KT_FN,107)
+#define K_F95 K(KT_FN, 104)
+#define K_F96 K(KT_FN, 105)
+#define K_F97 K(KT_FN, 106)
+#define K_F98 K(KT_FN, 107)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F99 K(KT_FN,108)
-#define K_F100 K(KT_FN,109)
-#define K_F101 K(KT_FN,110)
-#define K_F102 K(KT_FN,111)
+#define K_F99 K(KT_FN, 108)
+#define K_F100 K(KT_FN, 109)
+#define K_F101 K(KT_FN, 110)
+#define K_F102 K(KT_FN, 111)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F103 K(KT_FN,112)
-#define K_F104 K(KT_FN,113)
-#define K_F105 K(KT_FN,114)
-#define K_F106 K(KT_FN,115)
+#define K_F103 K(KT_FN, 112)
+#define K_F104 K(KT_FN, 113)
+#define K_F105 K(KT_FN, 114)
+#define K_F106 K(KT_FN, 115)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F107 K(KT_FN,116)
-#define K_F108 K(KT_FN,117)
-#define K_F109 K(KT_FN,118)
-#define K_F110 K(KT_FN,119)
+#define K_F107 K(KT_FN, 116)
+#define K_F108 K(KT_FN, 117)
+#define K_F109 K(KT_FN, 118)
+#define K_F110 K(KT_FN, 119)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F111 K(KT_FN,120)
-#define K_F112 K(KT_FN,121)
-#define K_F113 K(KT_FN,122)
-#define K_F114 K(KT_FN,123)
+#define K_F111 K(KT_FN, 120)
+#define K_F112 K(KT_FN, 121)
+#define K_F113 K(KT_FN, 122)
+#define K_F114 K(KT_FN, 123)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F115 K(KT_FN,124)
-#define K_F116 K(KT_FN,125)
-#define K_F117 K(KT_FN,126)
-#define K_F118 K(KT_FN,127)
+#define K_F115 K(KT_FN, 124)
+#define K_F116 K(KT_FN, 125)
+#define K_F117 K(KT_FN, 126)
+#define K_F118 K(KT_FN, 127)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F119 K(KT_FN,128)
-#define K_F120 K(KT_FN,129)
-#define K_F121 K(KT_FN,130)
-#define K_F122 K(KT_FN,131)
+#define K_F119 K(KT_FN, 128)
+#define K_F120 K(KT_FN, 129)
+#define K_F121 K(KT_FN, 130)
+#define K_F122 K(KT_FN, 131)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F123 K(KT_FN,132)
-#define K_F124 K(KT_FN,133)
-#define K_F125 K(KT_FN,134)
-#define K_F126 K(KT_FN,135)
+#define K_F123 K(KT_FN, 132)
+#define K_F124 K(KT_FN, 133)
+#define K_F125 K(KT_FN, 134)
+#define K_F126 K(KT_FN, 135)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F127 K(KT_FN,136)
-#define K_F128 K(KT_FN,137)
-#define K_F129 K(KT_FN,138)
-#define K_F130 K(KT_FN,139)
+#define K_F127 K(KT_FN, 136)
+#define K_F128 K(KT_FN, 137)
+#define K_F129 K(KT_FN, 138)
+#define K_F130 K(KT_FN, 139)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F131 K(KT_FN,140)
-#define K_F132 K(KT_FN,141)
-#define K_F133 K(KT_FN,142)
-#define K_F134 K(KT_FN,143)
+#define K_F131 K(KT_FN, 140)
+#define K_F132 K(KT_FN, 141)
+#define K_F133 K(KT_FN, 142)
+#define K_F134 K(KT_FN, 143)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F135 K(KT_FN,144)
-#define K_F136 K(KT_FN,145)
-#define K_F137 K(KT_FN,146)
-#define K_F138 K(KT_FN,147)
+#define K_F135 K(KT_FN, 144)
+#define K_F136 K(KT_FN, 145)
+#define K_F137 K(KT_FN, 146)
+#define K_F138 K(KT_FN, 147)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F139 K(KT_FN,148)
-#define K_F140 K(KT_FN,149)
-#define K_F141 K(KT_FN,150)
-#define K_F142 K(KT_FN,151)
+#define K_F139 K(KT_FN, 148)
+#define K_F140 K(KT_FN, 149)
+#define K_F141 K(KT_FN, 150)
+#define K_F142 K(KT_FN, 151)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F143 K(KT_FN,152)
-#define K_F144 K(KT_FN,153)
-#define K_F145 K(KT_FN,154)
-#define K_F146 K(KT_FN,155)
+#define K_F143 K(KT_FN, 152)
+#define K_F144 K(KT_FN, 153)
+#define K_F145 K(KT_FN, 154)
+#define K_F146 K(KT_FN, 155)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F147 K(KT_FN,156)
-#define K_F148 K(KT_FN,157)
-#define K_F149 K(KT_FN,158)
-#define K_F150 K(KT_FN,159)
+#define K_F147 K(KT_FN, 156)
+#define K_F148 K(KT_FN, 157)
+#define K_F149 K(KT_FN, 158)
+#define K_F150 K(KT_FN, 159)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F151 K(KT_FN,160)
-#define K_F152 K(KT_FN,161)
-#define K_F153 K(KT_FN,162)
-#define K_F154 K(KT_FN,163)
+#define K_F151 K(KT_FN, 160)
+#define K_F152 K(KT_FN, 161)
+#define K_F153 K(KT_FN, 162)
+#define K_F154 K(KT_FN, 163)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F155 K(KT_FN,164)
-#define K_F156 K(KT_FN,165)
-#define K_F157 K(KT_FN,166)
-#define K_F158 K(KT_FN,167)
+#define K_F155 K(KT_FN, 164)
+#define K_F156 K(KT_FN, 165)
+#define K_F157 K(KT_FN, 166)
+#define K_F158 K(KT_FN, 167)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F159 K(KT_FN,168)
-#define K_F160 K(KT_FN,169)
-#define K_F161 K(KT_FN,170)
-#define K_F162 K(KT_FN,171)
+#define K_F159 K(KT_FN, 168)
+#define K_F160 K(KT_FN, 169)
+#define K_F161 K(KT_FN, 170)
+#define K_F162 K(KT_FN, 171)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F163 K(KT_FN,172)
-#define K_F164 K(KT_FN,173)
-#define K_F165 K(KT_FN,174)
-#define K_F166 K(KT_FN,175)
+#define K_F163 K(KT_FN, 172)
+#define K_F164 K(KT_FN, 173)
+#define K_F165 K(KT_FN, 174)
+#define K_F166 K(KT_FN, 175)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F167 K(KT_FN,176)
-#define K_F168 K(KT_FN,177)
-#define K_F169 K(KT_FN,178)
-#define K_F170 K(KT_FN,179)
+#define K_F167 K(KT_FN, 176)
+#define K_F168 K(KT_FN, 177)
+#define K_F169 K(KT_FN, 178)
+#define K_F170 K(KT_FN, 179)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F171 K(KT_FN,180)
-#define K_F172 K(KT_FN,181)
-#define K_F173 K(KT_FN,182)
-#define K_F174 K(KT_FN,183)
+#define K_F171 K(KT_FN, 180)
+#define K_F172 K(KT_FN, 181)
+#define K_F173 K(KT_FN, 182)
+#define K_F174 K(KT_FN, 183)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F175 K(KT_FN,184)
-#define K_F176 K(KT_FN,185)
-#define K_F177 K(KT_FN,186)
-#define K_F178 K(KT_FN,187)
+#define K_F175 K(KT_FN, 184)
+#define K_F176 K(KT_FN, 185)
+#define K_F177 K(KT_FN, 186)
+#define K_F178 K(KT_FN, 187)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F179 K(KT_FN,188)
-#define K_F180 K(KT_FN,189)
-#define K_F181 K(KT_FN,190)
-#define K_F182 K(KT_FN,191)
+#define K_F179 K(KT_FN, 188)
+#define K_F180 K(KT_FN, 189)
+#define K_F181 K(KT_FN, 190)
+#define K_F182 K(KT_FN, 191)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F183 K(KT_FN,192)
-#define K_F184 K(KT_FN,193)
-#define K_F185 K(KT_FN,194)
-#define K_F186 K(KT_FN,195)
+#define K_F183 K(KT_FN, 192)
+#define K_F184 K(KT_FN, 193)
+#define K_F185 K(KT_FN, 194)
+#define K_F186 K(KT_FN, 195)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F187 K(KT_FN,196)
-#define K_F188 K(KT_FN,197)
-#define K_F189 K(KT_FN,198)
-#define K_F190 K(KT_FN,199)
+#define K_F187 K(KT_FN, 196)
+#define K_F188 K(KT_FN, 197)
+#define K_F189 K(KT_FN, 198)
+#define K_F190 K(KT_FN, 199)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F191 K(KT_FN,200)
-#define K_F192 K(KT_FN,201)
-#define K_F193 K(KT_FN,202)
-#define K_F194 K(KT_FN,203)
+#define K_F191 K(KT_FN, 200)
+#define K_F192 K(KT_FN, 201)
+#define K_F193 K(KT_FN, 202)
+#define K_F194 K(KT_FN, 203)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F195 K(KT_FN,204)
-#define K_F196 K(KT_FN,205)
-#define K_F197 K(KT_FN,206)
-#define K_F198 K(KT_FN,207)
+#define K_F195 K(KT_FN, 204)
+#define K_F196 K(KT_FN, 205)
+#define K_F197 K(KT_FN, 206)
+#define K_F198 K(KT_FN, 207)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F199 K(KT_FN,208)
-#define K_F200 K(KT_FN,209)
-#define K_F201 K(KT_FN,210)
-#define K_F202 K(KT_FN,211)
+#define K_F199 K(KT_FN, 208)
+#define K_F200 K(KT_FN, 209)
+#define K_F201 K(KT_FN, 210)
+#define K_F202 K(KT_FN, 211)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F203 K(KT_FN,212)
-#define K_F204 K(KT_FN,213)
-#define K_F205 K(KT_FN,214)
-#define K_F206 K(KT_FN,215)
+#define K_F203 K(KT_FN, 212)
+#define K_F204 K(KT_FN, 213)
+#define K_F205 K(KT_FN, 214)
+#define K_F206 K(KT_FN, 215)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F207 K(KT_FN,216)
-#define K_F208 K(KT_FN,217)
-#define K_F209 K(KT_FN,218)
-#define K_F210 K(KT_FN,219)
+#define K_F207 K(KT_FN, 216)
+#define K_F208 K(KT_FN, 217)
+#define K_F209 K(KT_FN, 218)
+#define K_F210 K(KT_FN, 219)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F211 K(KT_FN,220)
-#define K_F212 K(KT_FN,221)
-#define K_F213 K(KT_FN,222)
-#define K_F214 K(KT_FN,223)
+#define K_F211 K(KT_FN, 220)
+#define K_F212 K(KT_FN, 221)
+#define K_F213 K(KT_FN, 222)
+#define K_F214 K(KT_FN, 223)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F215 K(KT_FN,224)
-#define K_F216 K(KT_FN,225)
-#define K_F217 K(KT_FN,226)
-#define K_F218 K(KT_FN,227)
+#define K_F215 K(KT_FN, 224)
+#define K_F216 K(KT_FN, 225)
+#define K_F217 K(KT_FN, 226)
+#define K_F218 K(KT_FN, 227)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F219 K(KT_FN,228)
-#define K_F220 K(KT_FN,229)
-#define K_F221 K(KT_FN,230)
-#define K_F222 K(KT_FN,231)
+#define K_F219 K(KT_FN, 228)
+#define K_F220 K(KT_FN, 229)
+#define K_F221 K(KT_FN, 230)
+#define K_F222 K(KT_FN, 231)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F223 K(KT_FN,232)
-#define K_F224 K(KT_FN,233)
-#define K_F225 K(KT_FN,234)
-#define K_F226 K(KT_FN,235)
+#define K_F223 K(KT_FN, 232)
+#define K_F224 K(KT_FN, 233)
+#define K_F225 K(KT_FN, 234)
+#define K_F226 K(KT_FN, 235)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F227 K(KT_FN,236)
-#define K_F228 K(KT_FN,237)
-#define K_F229 K(KT_FN,238)
-#define K_F230 K(KT_FN,239)
+#define K_F227 K(KT_FN, 236)
+#define K_F228 K(KT_FN, 237)
+#define K_F229 K(KT_FN, 238)
+#define K_F230 K(KT_FN, 239)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F231 K(KT_FN,240)
-#define K_F232 K(KT_FN,241)
-#define K_F233 K(KT_FN,242)
-#define K_F234 K(KT_FN,243)
+#define K_F231 K(KT_FN, 240)
+#define K_F232 K(KT_FN, 241)
+#define K_F233 K(KT_FN, 242)
+#define K_F234 K(KT_FN, 243)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F235 K(KT_FN,244)
-#define K_F236 K(KT_FN,245)
-#define K_F237 K(KT_FN,246)
-#define K_F238 K(KT_FN,247)
+#define K_F235 K(KT_FN, 244)
+#define K_F236 K(KT_FN, 245)
+#define K_F237 K(KT_FN, 246)
+#define K_F238 K(KT_FN, 247)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F239 K(KT_FN,248)
-#define K_F240 K(KT_FN,249)
-#define K_F241 K(KT_FN,250)
-#define K_F242 K(KT_FN,251)
+#define K_F239 K(KT_FN, 248)
+#define K_F240 K(KT_FN, 249)
+#define K_F241 K(KT_FN, 250)
+#define K_F242 K(KT_FN, 251)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_F243 K(KT_FN,252)
-#define K_F244 K(KT_FN,253)
-#define K_F245 K(KT_FN,254)
-#define K_UNDO K(KT_FN,255)
+#define K_F243 K(KT_FN, 252)
+#define K_F244 K(KT_FN, 253)
+#define K_F245 K(KT_FN, 254)
+#define K_UNDO K(KT_FN, 255)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_HOLE K(KT_SPEC,0)
-#define K_ENTER K(KT_SPEC,1)
-#define K_SH_REGS K(KT_SPEC,2)
-#define K_SH_MEM K(KT_SPEC,3)
+#define K_HOLE K(KT_SPEC, 0)
+#define K_ENTER K(KT_SPEC, 1)
+#define K_SH_REGS K(KT_SPEC, 2)
+#define K_SH_MEM K(KT_SPEC, 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_SH_STAT K(KT_SPEC,4)
-#define K_BREAK K(KT_SPEC,5)
-#define K_CONS K(KT_SPEC,6)
-#define K_CAPS K(KT_SPEC,7)
+#define K_SH_STAT K(KT_SPEC, 4)
+#define K_BREAK K(KT_SPEC, 5)
+#define K_CONS K(KT_SPEC, 6)
+#define K_CAPS K(KT_SPEC, 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_NUM K(KT_SPEC,8)
-#define K_HOLD K(KT_SPEC,9)
-#define K_SCROLLFORW K(KT_SPEC,10)
-#define K_SCROLLBACK K(KT_SPEC,11)
+#define K_NUM K(KT_SPEC, 8)
+#define K_HOLD K(KT_SPEC, 9)
+#define K_SCROLLFORW K(KT_SPEC, 10)
+#define K_SCROLLBACK K(KT_SPEC, 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_BOOT K(KT_SPEC,12)
-#define K_CAPSON K(KT_SPEC,13)
-#define K_COMPOSE K(KT_SPEC,14)
-#define K_SAK K(KT_SPEC,15)
+#define K_BOOT K(KT_SPEC, 12)
+#define K_CAPSON K(KT_SPEC, 13)
+#define K_COMPOSE K(KT_SPEC, 14)
+#define K_SAK K(KT_SPEC, 15)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_DECRCONSOLE K(KT_SPEC,16)
-#define K_INCRCONSOLE K(KT_SPEC,17)
-#define K_SPAWNCONSOLE K(KT_SPEC,18)
-#define K_BARENUMLOCK K(KT_SPEC,19)
+#define K_DECRCONSOLE K(KT_SPEC, 16)
+#define K_INCRCONSOLE K(KT_SPEC, 17)
+#define K_SPAWNCONSOLE K(KT_SPEC, 18)
+#define K_BARENUMLOCK K(KT_SPEC, 19)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_ALLOCATED K(KT_SPEC,126)
-#define K_NOSUCHMAP K(KT_SPEC,127)
-#define K_P0 K(KT_PAD,0)
-#define K_P1 K(KT_PAD,1)
+#define K_ALLOCATED K(KT_SPEC, 126)
+#define K_NOSUCHMAP K(KT_SPEC, 127)
+#define K_P0 K(KT_PAD, 0)
+#define K_P1 K(KT_PAD, 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_P2 K(KT_PAD,2)
-#define K_P3 K(KT_PAD,3)
-#define K_P4 K(KT_PAD,4)
-#define K_P5 K(KT_PAD,5)
+#define K_P2 K(KT_PAD, 2)
+#define K_P3 K(KT_PAD, 3)
+#define K_P4 K(KT_PAD, 4)
+#define K_P5 K(KT_PAD, 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_P6 K(KT_PAD,6)
-#define K_P7 K(KT_PAD,7)
-#define K_P8 K(KT_PAD,8)
-#define K_P9 K(KT_PAD,9)
+#define K_P6 K(KT_PAD, 6)
+#define K_P7 K(KT_PAD, 7)
+#define K_P8 K(KT_PAD, 8)
+#define K_P9 K(KT_PAD, 9)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_PPLUS K(KT_PAD,10)
-#define K_PMINUS K(KT_PAD,11)
-#define K_PSTAR K(KT_PAD,12)
-#define K_PSLASH K(KT_PAD,13)
+#define K_PPLUS K(KT_PAD, 10)
+#define K_PMINUS K(KT_PAD, 11)
+#define K_PSTAR K(KT_PAD, 12)
+#define K_PSLASH K(KT_PAD, 13)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_PENTER K(KT_PAD,14)
-#define K_PCOMMA K(KT_PAD,15)
-#define K_PDOT K(KT_PAD,16)
-#define K_PPLUSMINUS K(KT_PAD,17)
+#define K_PENTER K(KT_PAD, 14)
+#define K_PCOMMA K(KT_PAD, 15)
+#define K_PDOT K(KT_PAD, 16)
+#define K_PPLUSMINUS K(KT_PAD, 17)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_PPARENL K(KT_PAD,18)
-#define K_PPARENR K(KT_PAD,19)
+#define K_PPARENL K(KT_PAD, 18)
+#define K_PPARENR K(KT_PAD, 19)
 #define NR_PAD 20
-#define K_DGRAVE K(KT_DEAD,0)
+#define K_DGRAVE K(KT_DEAD, 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_DACUTE K(KT_DEAD,1)
-#define K_DCIRCM K(KT_DEAD,2)
-#define K_DTILDE K(KT_DEAD,3)
-#define K_DDIERE K(KT_DEAD,4)
+#define K_DACUTE K(KT_DEAD, 1)
+#define K_DCIRCM K(KT_DEAD, 2)
+#define K_DTILDE K(KT_DEAD, 3)
+#define K_DDIERE K(KT_DEAD, 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_DCEDIL K(KT_DEAD,5)
+#define K_DCEDIL K(KT_DEAD, 5)
 #define NR_DEAD 6
-#define K_DOWN K(KT_CUR,0)
-#define K_LEFT K(KT_CUR,1)
+#define K_DOWN K(KT_CUR, 0)
+#define K_LEFT K(KT_CUR, 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_RIGHT K(KT_CUR,2)
-#define K_UP K(KT_CUR,3)
-#define K_SHIFT K(KT_SHIFT,KG_SHIFT)
-#define K_CTRL K(KT_SHIFT,KG_CTRL)
+#define K_RIGHT K(KT_CUR, 2)
+#define K_UP K(KT_CUR, 3)
+#define K_SHIFT K(KT_SHIFT, KG_SHIFT)
+#define K_CTRL K(KT_SHIFT, KG_CTRL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_ALT K(KT_SHIFT,KG_ALT)
-#define K_ALTGR K(KT_SHIFT,KG_ALTGR)
-#define K_SHIFTL K(KT_SHIFT,KG_SHIFTL)
-#define K_SHIFTR K(KT_SHIFT,KG_SHIFTR)
+#define K_ALT K(KT_SHIFT, KG_ALT)
+#define K_ALTGR K(KT_SHIFT, KG_ALTGR)
+#define K_SHIFTL K(KT_SHIFT, KG_SHIFTL)
+#define K_SHIFTR K(KT_SHIFT, KG_SHIFTR)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_CTRLL K(KT_SHIFT,KG_CTRLL)
-#define K_CTRLR K(KT_SHIFT,KG_CTRLR)
-#define K_CAPSSHIFT K(KT_SHIFT,KG_CAPSSHIFT)
-#define K_ASC0 K(KT_ASCII,0)
+#define K_CTRLL K(KT_SHIFT, KG_CTRLL)
+#define K_CTRLR K(KT_SHIFT, KG_CTRLR)
+#define K_CAPSSHIFT K(KT_SHIFT, KG_CAPSSHIFT)
+#define K_ASC0 K(KT_ASCII, 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_ASC1 K(KT_ASCII,1)
-#define K_ASC2 K(KT_ASCII,2)
-#define K_ASC3 K(KT_ASCII,3)
-#define K_ASC4 K(KT_ASCII,4)
+#define K_ASC1 K(KT_ASCII, 1)
+#define K_ASC2 K(KT_ASCII, 2)
+#define K_ASC3 K(KT_ASCII, 3)
+#define K_ASC4 K(KT_ASCII, 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_ASC5 K(KT_ASCII,5)
-#define K_ASC6 K(KT_ASCII,6)
-#define K_ASC7 K(KT_ASCII,7)
-#define K_ASC8 K(KT_ASCII,8)
+#define K_ASC5 K(KT_ASCII, 5)
+#define K_ASC6 K(KT_ASCII, 6)
+#define K_ASC7 K(KT_ASCII, 7)
+#define K_ASC8 K(KT_ASCII, 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_ASC9 K(KT_ASCII,9)
-#define K_HEX0 K(KT_ASCII,10)
-#define K_HEX1 K(KT_ASCII,11)
-#define K_HEX2 K(KT_ASCII,12)
+#define K_ASC9 K(KT_ASCII, 9)
+#define K_HEX0 K(KT_ASCII, 10)
+#define K_HEX1 K(KT_ASCII, 11)
+#define K_HEX2 K(KT_ASCII, 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_HEX3 K(KT_ASCII,13)
-#define K_HEX4 K(KT_ASCII,14)
-#define K_HEX5 K(KT_ASCII,15)
-#define K_HEX6 K(KT_ASCII,16)
+#define K_HEX3 K(KT_ASCII, 13)
+#define K_HEX4 K(KT_ASCII, 14)
+#define K_HEX5 K(KT_ASCII, 15)
+#define K_HEX6 K(KT_ASCII, 16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_HEX7 K(KT_ASCII,17)
-#define K_HEX8 K(KT_ASCII,18)
-#define K_HEX9 K(KT_ASCII,19)
-#define K_HEXa K(KT_ASCII,20)
+#define K_HEX7 K(KT_ASCII, 17)
+#define K_HEX8 K(KT_ASCII, 18)
+#define K_HEX9 K(KT_ASCII, 19)
+#define K_HEXa K(KT_ASCII, 20)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_HEXb K(KT_ASCII,21)
-#define K_HEXc K(KT_ASCII,22)
-#define K_HEXd K(KT_ASCII,23)
-#define K_HEXe K(KT_ASCII,24)
+#define K_HEXb K(KT_ASCII, 21)
+#define K_HEXc K(KT_ASCII, 22)
+#define K_HEXd K(KT_ASCII, 23)
+#define K_HEXe K(KT_ASCII, 24)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_HEXf K(KT_ASCII,25)
+#define K_HEXf K(KT_ASCII, 25)
 #define NR_ASCII 26
-#define K_SHIFTLOCK K(KT_LOCK,KG_SHIFT)
-#define K_CTRLLOCK K(KT_LOCK,KG_CTRL)
+#define K_SHIFTLOCK K(KT_LOCK, KG_SHIFT)
+#define K_CTRLLOCK K(KT_LOCK, KG_CTRL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_ALTLOCK K(KT_LOCK,KG_ALT)
-#define K_ALTGRLOCK K(KT_LOCK,KG_ALTGR)
-#define K_SHIFTLLOCK K(KT_LOCK,KG_SHIFTL)
-#define K_SHIFTRLOCK K(KT_LOCK,KG_SHIFTR)
+#define K_ALTLOCK K(KT_LOCK, KG_ALT)
+#define K_ALTGRLOCK K(KT_LOCK, KG_ALTGR)
+#define K_SHIFTLLOCK K(KT_LOCK, KG_SHIFTL)
+#define K_SHIFTRLOCK K(KT_LOCK, KG_SHIFTR)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_CTRLLLOCK K(KT_LOCK,KG_CTRLL)
-#define K_CTRLRLOCK K(KT_LOCK,KG_CTRLR)
-#define K_CAPSSHIFTLOCK K(KT_LOCK,KG_CAPSSHIFT)
-#define K_SHIFT_SLOCK K(KT_SLOCK,KG_SHIFT)
+#define K_CTRLLLOCK K(KT_LOCK, KG_CTRLL)
+#define K_CTRLRLOCK K(KT_LOCK, KG_CTRLR)
+#define K_CAPSSHIFTLOCK K(KT_LOCK, KG_CAPSSHIFT)
+#define K_SHIFT_SLOCK K(KT_SLOCK, KG_SHIFT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_CTRL_SLOCK K(KT_SLOCK,KG_CTRL)
-#define K_ALT_SLOCK K(KT_SLOCK,KG_ALT)
-#define K_ALTGR_SLOCK K(KT_SLOCK,KG_ALTGR)
-#define K_SHIFTL_SLOCK K(KT_SLOCK,KG_SHIFTL)
+#define K_CTRL_SLOCK K(KT_SLOCK, KG_CTRL)
+#define K_ALT_SLOCK K(KT_SLOCK, KG_ALT)
+#define K_ALTGR_SLOCK K(KT_SLOCK, KG_ALTGR)
+#define K_SHIFTL_SLOCK K(KT_SLOCK, KG_SHIFTL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define K_SHIFTR_SLOCK K(KT_SLOCK,KG_SHIFTR)
-#define K_CTRLL_SLOCK K(KT_SLOCK,KG_CTRLL)
-#define K_CTRLR_SLOCK K(KT_SLOCK,KG_CTRLR)
-#define K_CAPSSHIFT_SLOCK K(KT_SLOCK,KG_CAPSSHIFT)
+#define K_SHIFTR_SLOCK K(KT_SLOCK, KG_SHIFTR)
+#define K_CTRLL_SLOCK K(KT_SLOCK, KG_CTRLL)
+#define K_CTRLR_SLOCK K(KT_SLOCK, KG_CTRLR)
+#define K_CAPSSHIFT_SLOCK K(KT_SLOCK, KG_CAPSSHIFT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NR_LOCK 9
 #define K_BRL_BLANK K(KT_BRL, 0)
diff --git a/libc/kernel/uapi/linux/keychord.h b/libc/kernel/uapi/linux/keychord.h
index d13262b..5fd3912 100644
--- a/libc/kernel/uapi/linux/keychord.h
+++ b/libc/kernel/uapi/linux/keychord.h
@@ -22,10 +22,10 @@
 #define KEYCHORD_VERSION 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct input_keychord {
- __u16 version;
- __u16 id;
- __u16 count;
+  __u16 version;
+  __u16 id;
+  __u16 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 keycodes[];
+  __u16 keycodes[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/keyctl.h b/libc/kernel/uapi/linux/keyctl.h
index 941e0d5..152ca59 100644
--- a/libc/kernel/uapi/linux/keyctl.h
+++ b/libc/kernel/uapi/linux/keyctl.h
@@ -18,17 +18,17 @@
  ****************************************************************************/
 #ifndef _LINUX_KEYCTL_H
 #define _LINUX_KEYCTL_H
-#define KEY_SPEC_THREAD_KEYRING -1
-#define KEY_SPEC_PROCESS_KEYRING -2
+#define KEY_SPEC_THREAD_KEYRING - 1
+#define KEY_SPEC_PROCESS_KEYRING - 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KEY_SPEC_SESSION_KEYRING -3
-#define KEY_SPEC_USER_KEYRING -4
-#define KEY_SPEC_USER_SESSION_KEYRING -5
-#define KEY_SPEC_GROUP_KEYRING -6
+#define KEY_SPEC_SESSION_KEYRING - 3
+#define KEY_SPEC_USER_KEYRING - 4
+#define KEY_SPEC_USER_SESSION_KEYRING - 5
+#define KEY_SPEC_GROUP_KEYRING - 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KEY_SPEC_REQKEY_AUTH_KEY -7
-#define KEY_SPEC_REQUESTOR_KEYRING -8
-#define KEY_REQKEY_DEFL_NO_CHANGE -1
+#define KEY_SPEC_REQKEY_AUTH_KEY - 7
+#define KEY_SPEC_REQUESTOR_KEYRING - 8
+#define KEY_REQKEY_DEFL_NO_CHANGE - 1
 #define KEY_REQKEY_DEFL_DEFAULT 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_REQKEY_DEFL_THREAD_KEYRING 1
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index e64f9b5..870fa66 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -67,77 +67,77 @@
 #define KVM_TRC_PPC_INSTR (KVM_TRC_HANDLER + 0x19)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_user_trace_setup {
- __u32 buf_size;
- __u32 buf_nr;
+  __u32 buf_size;
+  __u32 buf_nr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __KVM_DEPRECATED_MAIN_W_0x06   _IOW(KVMIO, 0x06, struct kvm_user_trace_setup)
+#define __KVM_DEPRECATED_MAIN_W_0x06 _IOW(KVMIO, 0x06, struct kvm_user_trace_setup)
 #define __KVM_DEPRECATED_MAIN_0x07 _IO(KVMIO, 0x07)
 #define __KVM_DEPRECATED_MAIN_0x08 _IO(KVMIO, 0x08)
 #define __KVM_DEPRECATED_VM_R_0x70 _IOR(KVMIO, 0x70, struct kvm_assigned_irq)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_breakpoint {
- __u32 enabled;
- __u32 padding;
- __u64 address;
+  __u32 enabled;
+  __u32 padding;
+  __u64 address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_debug_guest {
- __u32 enabled;
- __u32 pad;
+  __u32 enabled;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct kvm_breakpoint breakpoints[4];
- __u32 singlestep;
+  struct kvm_breakpoint breakpoints[4];
+  __u32 singlestep;
 };
 #define __KVM_DEPRECATED_VCPU_W_0x87 _IOW(KVMIO, 0x87, struct kvm_debug_guest)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_memory_region {
- __u32 slot;
- __u32 flags;
- __u64 guest_phys_addr;
+  __u32 slot;
+  __u32 flags;
+  __u64 guest_phys_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 memory_size;
+  __u64 memory_size;
 };
 struct kvm_userspace_memory_region {
- __u32 slot;
+  __u32 slot;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u64 guest_phys_addr;
- __u64 memory_size;
- __u64 userspace_addr;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 userspace_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0)
 #define KVM_MEM_READONLY (1UL << 1)
 struct kvm_irq_level {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __u32 irq;
- __s32 status;
- };
+  union {
+    __u32 irq;
+    __s32 status;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 level;
+  __u32 level;
 };
 struct kvm_irqchip {
- __u32 chip_id;
+  __u32 chip_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
- union {
- char dummy[512];
+  __u32 pad;
+  union {
+    char dummy[512];
 #ifdef __KVM_HAVE_PIT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct kvm_pic_state pic;
+    struct kvm_pic_state pic;
 #endif
 #ifdef __KVM_HAVE_IOAPIC
- struct kvm_ioapic_state ioapic;
+    struct kvm_ioapic_state ioapic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
- } chip;
+  } chip;
 };
 struct kvm_pit_config {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 pad[15];
+  __u32 flags;
+  __u32 pad[15];
 };
 #define KVM_PIT_SPEAKER_DUMMY 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -171,844 +171,963 @@
 #define KVM_EXIT_S390_TSCH 22
 #define KVM_EXIT_EPR 23
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_EXIT_SYSTEM_EVENT 24
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_run {
+  __u8 request_interrupt_window;
+  __u8 padding1[7];
+  __u32 exit_reason;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 request_interrupt_window;
- __u8 padding1[7];
- __u32 exit_reason;
- __u8 ready_for_interrupt_injection;
+  __u8 ready_for_interrupt_injection;
+  __u8 if_flag;
+  __u8 padding2[2];
+  __u64 cr8;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 if_flag;
- __u8 padding2[2];
- __u64 cr8;
- __u64 apic_base;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 apic_base;
 #ifdef __KVM_S390
- __u64 psw_mask;
- __u64 psw_addr;
+  __u64 psw_mask;
+  __u64 psw_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+  union {
+    struct {
+      __u64 hardware_exit_reason;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- __u64 hardware_exit_reason;
- } hw;
+    } hw;
+    struct {
+      __u64 hardware_entry_failure_reason;
+    } fail_entry;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u64 hardware_entry_failure_reason;
- } fail_entry;
- struct {
+    struct {
+      __u32 exception;
+      __u32 error_code;
+    } ex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 exception;
- __u32 error_code;
- } ex;
- struct {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct {
 #define KVM_EXIT_IO_IN 0
 #define KVM_EXIT_IO_OUT 1
- __u8 direction;
- __u8 size;
+      __u8 direction;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 port;
- __u32 count;
- __u64 data_offset;
- } io;
+      __u8 size;
+      __u16 port;
+      __u32 count;
+      __u64 data_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- struct kvm_debug_exit_arch arch;
- } debug;
- struct {
+    } io;
+    struct {
+      struct kvm_debug_exit_arch arch;
+    } debug;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 phys_addr;
- __u8 data[8];
- __u32 len;
- __u8 is_write;
+    struct {
+      __u64 phys_addr;
+      __u8 data[8];
+      __u32 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } mmio;
- struct {
- __u64 nr;
- __u64 args[6];
+      __u8 is_write;
+    } mmio;
+    struct {
+      __u64 nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ret;
- __u32 longmode;
- __u32 pad;
- } hypercall;
+      __u64 args[6];
+      __u64 ret;
+      __u32 longmode;
+      __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u64 rip;
- __u32 is_write;
- __u32 pad;
+    } hypercall;
+    struct {
+      __u64 rip;
+      __u32 is_write;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } tpr_access;
- struct {
- __u8 icptcode;
- __u16 ipa;
+      __u32 pad;
+    } tpr_access;
+    struct {
+      __u8 icptcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ipb;
- } s390_sieic;
+      __u16 ipa;
+      __u32 ipb;
+    } s390_sieic;
 #define KVM_S390_RESET_POR 1
-#define KVM_S390_RESET_CLEAR 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_S390_RESET_CLEAR 2
 #define KVM_S390_RESET_SUBSYSTEM 4
 #define KVM_S390_RESET_CPU_INIT 8
 #define KVM_S390_RESET_IPL 16
- __u64 s390_reset_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u64 trans_exc_code;
- __u32 pgm_code;
- } s390_ucontrol;
+    __u64 s390_reset_flags;
+    struct {
+      __u64 trans_exc_code;
+      __u32 pgm_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u32 dcrn;
- __u32 data;
- __u8 is_write;
+    } s390_ucontrol;
+    struct {
+      __u32 dcrn;
+      __u32 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } dcr;
- struct {
- __u32 suberror;
- __u32 ndata;
+      __u8 is_write;
+    } dcr;
+    struct {
+      __u32 suberror;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data[16];
- } internal;
- struct {
- __u64 gprs[32];
+      __u32 ndata;
+      __u64 data[16];
+    } internal;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } osi;
- struct {
- __u64 nr;
- __u64 ret;
+      __u64 gprs[32];
+    } osi;
+    struct {
+      __u64 nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 args[9];
- } papr_hcall;
- struct {
- __u16 subchannel_id;
+      __u64 ret;
+      __u64 args[9];
+    } papr_hcall;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 subchannel_nr;
- __u32 io_int_parm;
- __u32 io_int_word;
- __u32 ipb;
+      __u16 subchannel_id;
+      __u16 subchannel_nr;
+      __u32 io_int_parm;
+      __u32 io_int_word;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dequeued;
- } s390_tsch;
- struct {
- __u32 epr;
+      __u32 ipb;
+      __u8 dequeued;
+    } s390_tsch;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } epr;
- char padding[256];
- };
- __u64 kvm_valid_regs;
+      __u32 epr;
+    } epr;
+    struct {
+#define KVM_SYSTEM_EVENT_SHUTDOWN 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 kvm_dirty_regs;
- union {
- struct kvm_sync_regs regs;
- char padding[1024];
+#define KVM_SYSTEM_EVENT_RESET 2
+      __u32 type;
+      __u64 flags;
+    } system_event;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } s;
+    char padding[256];
+  };
+  __u64 kvm_valid_regs;
+  __u64 kvm_dirty_regs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
+    struct kvm_sync_regs regs;
+    char padding[1024];
+  } s;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_coalesced_mmio_zone {
- __u64 addr;
+  __u64 addr;
+  __u32 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 size;
- __u32 pad;
+  __u32 pad;
 };
 struct kvm_coalesced_mmio {
+  __u64 phys_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 phys_addr;
- __u32 len;
- __u32 pad;
- __u8 data[8];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 len;
+  __u32 pad;
+  __u8 data[8];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_coalesced_mmio_ring {
- __u32 first, last;
- struct kvm_coalesced_mmio coalesced_mmio[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 first, last;
+  struct kvm_coalesced_mmio coalesced_mmio[0];
 };
-#define KVM_COALESCED_MMIO_MAX   ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) /   sizeof(struct kvm_coalesced_mmio))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
- __u64 linear_address;
+  __u64 linear_address;
+  __u64 physical_address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 physical_address;
- __u8 valid;
- __u8 writeable;
- __u8 usermode;
+  __u8 valid;
+  __u8 writeable;
+  __u8 usermode;
+  __u8 pad[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad[5];
 };
 struct kvm_interrupt {
- __u32 irq;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 irq;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_dirty_log {
- __u32 slot;
- __u32 padding1;
+  __u32 slot;
+  __u32 padding1;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- void __user *dirty_bitmap;
- __u64 padding2;
- };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    void __user * dirty_bitmap;
+    __u64 padding2;
+  };
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_signal_mask {
- __u32 len;
- __u8 sigset[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 len;
+  __u8 sigset[0];
 };
-struct kvm_tpr_access_ctl {
- __u32 enabled;
- __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[8];
+struct kvm_tpr_access_ctl {
+  __u32 enabled;
+  __u32 flags;
+  __u32 reserved[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct kvm_vapic_addr {
- __u64 vapic_addr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 vapic_addr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_MP_STATE_RUNNABLE 0
 #define KVM_MP_STATE_UNINITIALIZED 1
 #define KVM_MP_STATE_INIT_RECEIVED 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_MP_STATE_HALTED 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_MP_STATE_SIPI_RECEIVED 4
+#define KVM_MP_STATE_STOPPED 5
+#define KVM_MP_STATE_CHECK_STOP 6
+#define KVM_MP_STATE_OPERATING 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_MP_STATE_LOAD 8
 struct kvm_mp_state {
- __u32 mp_state;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 mp_state;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_s390_psw {
- __u64 mask;
- __u64 addr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 mask;
+  __u64 addr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_SIGP_STOP 0xfffe0000u
 #define KVM_S390_PROGRAM_INT 0xfffe0001u
 #define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_RESTART 0xfffe0003u
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_S390_INT_PFAULT_INIT 0xfffe0004u
+#define KVM_S390_INT_PFAULT_DONE 0xfffe0005u
 #define KVM_S390_MCHK 0xfffe1000u
+#define KVM_S390_INT_CLOCK_COMP 0xffff1004u
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_S390_INT_CPU_TIMER 0xffff1005u
 #define KVM_S390_INT_VIRTIO 0xffff2603u
 #define KVM_S390_INT_SERVICE 0xffff2401u
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_INT_EMERGENCY 0xffff1201u
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u
-#define KVM_S390_INT_IO(ai,cssid,ssid,schid)   (((schid)) |   ((ssid) << 16) |   ((cssid) << 18) |   ((ai) << 26))
+#define KVM_S390_INT_IO(ai,cssid,ssid,schid) (((schid)) | ((ssid) << 16) | ((cssid) << 18) | ((ai) << 26))
 #define KVM_S390_INT_IO_MIN 0x00000000u
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_INT_IO_MAX 0xfffdffffu
-struct kvm_s390_interrupt {
- __u32 type;
- __u32 parm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 parm64;
+struct kvm_s390_interrupt {
+  __u32 type;
+  __u32 parm;
+  __u64 parm64;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+struct kvm_s390_io_info {
+  __u16 subchannel_id;
+  __u16 subchannel_nr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 io_int_parm;
+  __u32 io_int_word;
+};
+struct kvm_s390_ext_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 ext_params;
+  __u32 pad;
+  __u64 ext_params2;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct kvm_s390_pgm_info {
+  __u64 trans_exc_code;
+  __u64 mon_code;
+  __u64 per_address;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 data_exc_code;
+  __u16 code;
+  __u16 mon_class_nr;
+  __u8 per_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 per_atmid;
+  __u8 exc_access_id;
+  __u8 per_access_id;
+  __u8 op_access_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 pad[3];
+};
+struct kvm_s390_prefix_info {
+  __u32 address;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct kvm_s390_extcall_info {
+  __u16 code;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct kvm_s390_emerg_info {
+  __u16 code;
+};
+struct kvm_s390_mchk_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 cr14;
+  __u64 mcic;
+  __u64 failing_storage_address;
+  __u32 ext_damage_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 pad;
+  __u8 fixed_logout[16];
+};
+struct kvm_s390_irq {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 type;
+  union {
+    struct kvm_s390_io_info io;
+    struct kvm_s390_ext_info ext;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct kvm_s390_pgm_info pgm;
+    struct kvm_s390_emerg_info emerg;
+    struct kvm_s390_extcall_info extcall;
+    struct kvm_s390_prefix_info prefix;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct kvm_s390_mchk_info mchk;
+    char reserved[64];
+  } u;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GUESTDBG_ENABLE 0x00000001
 #define KVM_GUESTDBG_SINGLESTEP 0x00000002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_guest_debug {
- __u32 control;
- __u32 pad;
- struct kvm_guest_debug_arch arch;
+  __u32 control;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 pad;
+  struct kvm_guest_debug_arch arch;
 };
 enum {
- kvm_ioeventfd_flag_nr_datamatch,
- kvm_ioeventfd_flag_nr_pio,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- kvm_ioeventfd_flag_nr_deassign,
- kvm_ioeventfd_flag_nr_virtio_ccw_notify,
- kvm_ioeventfd_flag_nr_max,
+  kvm_ioeventfd_flag_nr_datamatch,
+  kvm_ioeventfd_flag_nr_pio,
+  kvm_ioeventfd_flag_nr_deassign,
+  kvm_ioeventfd_flag_nr_virtio_ccw_notify,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  kvm_ioeventfd_flag_nr_fast_mmio,
+  kvm_ioeventfd_flag_nr_max,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio)
 #define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign)
-#define KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY   (1 << kvm_ioeventfd_flag_nr_virtio_ccw_notify)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY (1 << kvm_ioeventfd_flag_nr_virtio_ccw_notify)
 #define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_ioeventfd {
- __u64 datamatch;
- __u64 addr;
+  __u64 datamatch;
+  __u64 addr;
+  __u32 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 len;
- __s32 fd;
- __u32 flags;
- __u8 pad[36];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 fd;
+  __u32 flags;
+  __u8 pad[36];
 };
-struct kvm_enable_cap {
- __u32 cap;
- __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 args[4];
- __u8 pad[64];
+struct kvm_enable_cap {
+  __u32 cap;
+  __u32 flags;
+  __u64 args[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 pad[64];
 };
 struct kvm_ppc_pvinfo {
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 hcall[4];
- __u8 pad[108];
+  __u32 hcall[4];
+  __u8 pad[108];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_PPC_PAGE_SIZES_MAX_SZ 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_ppc_one_page_size {
- __u32 page_shift;
- __u32 pte_enc;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 page_shift;
+  __u32 pte_enc;
 };
-struct kvm_ppc_one_seg_page_size {
- __u32 page_shift;
- __u32 slb_enc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ];
+struct kvm_ppc_one_seg_page_size {
+  __u32 page_shift;
+  __u32 slb_enc;
+  struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define KVM_PPC_PAGE_SIZES_REAL 0x00000001
 #define KVM_PPC_1T_SEGMENTS 0x00000002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_ppc_smmu_info {
- __u64 flags;
- __u32 slb_size;
- __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
+  __u64 flags;
+  __u32 slb_size;
+  __u32 pad;
+  struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0)
+#define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1 << 0)
 #define KVMIO 0xAE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_VM_S390_UCONTROL 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_VM_PPC_HV 1
 #define KVM_VM_PPC_PR 2
 #define KVM_S390_SIE_PAGE_OFFSET 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_API_VERSION _IO(KVMIO, 0x00)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CREATE_VM _IO(KVMIO, 0x01)
 #define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 0x02, struct kvm_msr_list)
 #define KVM_S390_ENABLE_SIE _IO(KVMIO, 0x06)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CHECK_EXTENSION _IO(KVMIO, 0x03)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04)
 #define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x05, struct kvm_cpuid2)
 #define KVM_TRACE_ENABLE __KVM_DEPRECATED_MAIN_W_0x06
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08
 #define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct kvm_cpuid2)
 #define KVM_CAP_IRQCHIP 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_HLT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2
 #define KVM_CAP_USER_MEMORY 3
 #define KVM_CAP_SET_TSS_ADDR 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_VAPIC 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_EXT_CPUID 7
 #define KVM_CAP_CLOCKSOURCE 8
 #define KVM_CAP_NR_VCPUS 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_NR_MEMSLOTS 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_PIT 11
 #define KVM_CAP_NOP_IO_DELAY 12
 #define KVM_CAP_PV_MMU 13
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_MP_STATE 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_COALESCED_MMIO 15
 #define KVM_CAP_SYNC_MMU 16
 #define KVM_CAP_DEVICE_ASSIGNMENT 17
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_IOMMU 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __KVM_HAVE_MSI
 #define KVM_CAP_DEVICE_MSI 20
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21
-#ifdef __KVM_HAVE_USER_NMI
-#define KVM_CAP_USER_NMI 22
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_USER_NMI 22
 #ifdef __KVM_HAVE_GUEST_DEBUG
 #define KVM_CAP_SET_GUEST_DEBUG 23
 #endif
-#ifdef __KVM_HAVE_PIT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __KVM_HAVE_PIT
 #define KVM_CAP_REINJECT_CONTROL 24
 #endif
 #define KVM_CAP_IRQ_ROUTING 25
-#define KVM_CAP_IRQ_INJECT_STATUS 26
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_IRQ_INJECT_STATUS 26
 #define KVM_CAP_DEVICE_DEASSIGNMENT 27
 #ifdef __KVM_HAVE_MSIX
 #define KVM_CAP_DEVICE_MSIX 28
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
 #define KVM_CAP_ASSIGN_DEV_IRQ 29
 #define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
 #ifdef __KVM_HAVE_MCE
-#define KVM_CAP_MCE 31
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_MCE 31
 #endif
 #define KVM_CAP_IRQFD 32
 #ifdef __KVM_HAVE_PIT
-#define KVM_CAP_PIT2 33
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_PIT2 33
 #endif
 #define KVM_CAP_SET_BOOT_CPU_ID 34
 #ifdef __KVM_HAVE_PIT_STATE2
-#define KVM_CAP_PIT_STATE2 35
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_PIT_STATE2 35
 #endif
 #define KVM_CAP_IOEVENTFD 36
 #define KVM_CAP_SET_IDENTITY_MAP_ADDR 37
-#ifdef __KVM_HAVE_XEN_HVM
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __KVM_HAVE_XEN_HVM
 #define KVM_CAP_XEN_HVM 38
 #endif
 #define KVM_CAP_ADJUST_CLOCK 39
-#define KVM_CAP_INTERNAL_ERROR_DATA 40
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_INTERNAL_ERROR_DATA 40
 #ifdef __KVM_HAVE_VCPU_EVENTS
 #define KVM_CAP_VCPU_EVENTS 41
 #endif
-#define KVM_CAP_S390_PSW 42
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_S390_PSW 42
 #define KVM_CAP_PPC_SEGSTATE 43
 #define KVM_CAP_HYPERV 44
 #define KVM_CAP_HYPERV_VAPIC 45
-#define KVM_CAP_HYPERV_SPIN 46
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_HYPERV_SPIN 46
 #define KVM_CAP_PCI_SEGMENT 47
 #define KVM_CAP_PPC_PAIRED_SINGLES 48
 #define KVM_CAP_INTR_SHADOW 49
-#ifdef __KVM_HAVE_DEBUGREGS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __KVM_HAVE_DEBUGREGS
 #define KVM_CAP_DEBUGREGS 50
 #endif
 #define KVM_CAP_X86_ROBUST_SINGLESTEP 51
-#define KVM_CAP_PPC_OSI 52
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_PPC_OSI 52
 #define KVM_CAP_PPC_UNSET_IRQ 53
 #define KVM_CAP_ENABLE_CAP 54
 #ifdef __KVM_HAVE_XSAVE
-#define KVM_CAP_XSAVE 55
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_XSAVE 55
 #endif
 #ifdef __KVM_HAVE_XCRS
 #define KVM_CAP_XCRS 56
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
 #define KVM_CAP_PPC_GET_PVINFO 57
 #define KVM_CAP_PPC_IRQ_LEVEL 58
 #define KVM_CAP_ASYNC_PF 59
-#define KVM_CAP_TSC_CONTROL 60
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_TSC_CONTROL 60
 #define KVM_CAP_GET_TSC_KHZ 61
 #define KVM_CAP_PPC_BOOKE_SREGS 62
 #define KVM_CAP_SPAPR_TCE 63
-#define KVM_CAP_PPC_SMT 64
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_PPC_SMT 64
 #define KVM_CAP_PPC_RMA 65
 #define KVM_CAP_MAX_VCPUS 66
 #define KVM_CAP_PPC_HIOR 67
-#define KVM_CAP_PPC_PAPR 68
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_PPC_PAPR 68
 #define KVM_CAP_SW_TLB 69
 #define KVM_CAP_ONE_REG 70
 #define KVM_CAP_S390_GMAP 71
-#define KVM_CAP_TSC_DEADLINE_TIMER 72
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_TSC_DEADLINE_TIMER 72
 #define KVM_CAP_S390_UCONTROL 73
 #define KVM_CAP_SYNC_REGS 74
 #define KVM_CAP_PCI_2_3 75
-#define KVM_CAP_KVMCLOCK_CTRL 76
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_KVMCLOCK_CTRL 76
 #define KVM_CAP_SIGNAL_MSI 77
 #define KVM_CAP_PPC_GET_SMMU_INFO 78
 #define KVM_CAP_S390_COW 79
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_PPC_ALLOC_HTAB 80
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#ifdef __KVM_HAVE_READONLY_MEM
 #define KVM_CAP_READONLY_MEM 81
-#endif
 #define KVM_CAP_IRQFD_RESAMPLE 82
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_PPC_BOOKE_WATCHDOG 83
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_PPC_HTAB_FD 84
 #define KVM_CAP_S390_CSS_SUPPORT 85
 #define KVM_CAP_PPC_EPR 86
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_ARM_PSCI 87
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_ARM_SET_DEVICE_ADDR 88
 #define KVM_CAP_DEVICE_CTRL 89
 #define KVM_CAP_IRQ_MPIC 90
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_PPC_RTAS 91
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_IRQ_XICS 92
 #define KVM_CAP_ARM_EL1_32BIT 93
 #define KVM_CAP_SPAPR_MULTITCE 94
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_EXT_EMUL_CPUID 95
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_CAP_HYPERV_TIME 96
+#define KVM_CAP_IOAPIC_POLARITY_IGNORED 97
+#define KVM_CAP_ENABLE_CAP_VM 98
+#define KVM_CAP_S390_IRQCHIP 99
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_IOEVENTFD_NO_LENGTH 100
+#define KVM_CAP_VM_ATTRIBUTES 101
+#define KVM_CAP_ARM_PSCI_0_2 102
+#define KVM_CAP_PPC_FIXUP_HCALL 103
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_CAP_PPC_ENABLE_HCALL 104
+#define KVM_CAP_CHECK_EXTENSION_VM 105
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 irqchip;
- __u32 pin;
+  __u32 irqchip;
+  __u32 pin;
 };
 struct kvm_irq_routing_msi {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 address_lo;
- __u32 address_hi;
- __u32 data;
- __u32 pad;
+  __u32 address_lo;
+  __u32 address_hi;
+  __u32 data;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+struct kvm_irq_routing_s390_adapter {
+  __u64 ind_addr;
+  __u64 summary_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 ind_offset;
+  __u32 summary_offset;
+  __u32 adapter_id;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IRQ_ROUTING_IRQCHIP 1
 #define KVM_IRQ_ROUTING_MSI 2
+#define KVM_IRQ_ROUTING_S390_ADAPTER 3
 struct kvm_irq_routing_entry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gsi;
- __u32 type;
- __u32 flags;
- __u32 pad;
+  __u32 gsi;
+  __u32 type;
+  __u32 flags;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct kvm_irq_routing_irqchip irqchip;
- struct kvm_irq_routing_msi msi;
- __u32 pad[8];
+  union {
+    struct kvm_irq_routing_irqchip irqchip;
+    struct kvm_irq_routing_msi msi;
+    struct kvm_irq_routing_s390_adapter adapter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } u;
+    __u32 pad[8];
+  } u;
 };
 struct kvm_irq_routing {
- __u32 nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- struct kvm_irq_routing_entry entries[0];
+  __u32 nr;
+  __u32 flags;
+  struct kvm_irq_routing_entry entries[0];
 };
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
 #ifdef KVM_CAP_MCE
 struct kvm_x86_mce {
- __u64 status;
- __u64 addr;
+  __u64 status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 misc;
- __u64 mcg_status;
- __u8 bank;
- __u8 pad1[7];
+  __u64 addr;
+  __u64 misc;
+  __u64 mcg_status;
+  __u8 bank;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 pad2[3];
+  __u8 pad1[7];
+  __u64 pad2[3];
 };
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef KVM_CAP_XEN_HVM
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_xen_hvm_config {
- __u32 flags;
- __u32 msr;
- __u64 blob_addr_32;
+  __u32 flags;
+  __u32 msr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 blob_addr_64;
- __u8 blob_size_32;
- __u8 blob_size_64;
- __u8 pad2[30];
+  __u64 blob_addr_32;
+  __u64 blob_addr_64;
+  __u8 blob_size_32;
+  __u8 blob_size_64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 pad2[30];
 };
 #endif
 #define KVM_IRQFD_FLAG_DEASSIGN (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IRQFD_FLAG_RESAMPLE (1 << 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_irqfd {
- __u32 fd;
- __u32 gsi;
- __u32 flags;
+  __u32 fd;
+  __u32 gsi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 resamplefd;
- __u8 pad[16];
+  __u32 flags;
+  __u32 resamplefd;
+  __u8 pad[16];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_clock_data {
+  __u64 clock;
+  __u32 flags;
+  __u32 pad[9];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 clock;
- __u32 flags;
- __u32 pad[9];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_MMU_FSL_BOOKE_NOHV 0
 #define KVM_MMU_FSL_BOOKE_HV 1
 struct kvm_config_tlb {
- __u64 params;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 array;
- __u32 mmu_type;
- __u32 array_len;
+  __u64 params;
+  __u64 array;
+  __u32 mmu_type;
+  __u32 array_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_dirty_tlb {
- __u64 bitmap;
- __u32 num_dirty;
-};
+  __u64 bitmap;
+  __u32 num_dirty;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define KVM_REG_ARCH_MASK 0xff00000000000000ULL
 #define KVM_REG_GENERIC 0x0000000000000000ULL
 #define KVM_REG_PPC 0x1000000000000000ULL
-#define KVM_REG_X86 0x2000000000000000ULL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_X86 0x2000000000000000ULL
 #define KVM_REG_IA64 0x3000000000000000ULL
 #define KVM_REG_ARM 0x4000000000000000ULL
 #define KVM_REG_S390 0x5000000000000000ULL
-#define KVM_REG_ARM64 0x6000000000000000ULL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_ARM64 0x6000000000000000ULL
 #define KVM_REG_MIPS 0x7000000000000000ULL
 #define KVM_REG_SIZE_SHIFT 52
 #define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
-#define KVM_REG_SIZE_U8 0x0000000000000000ULL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_SIZE_U8 0x0000000000000000ULL
 #define KVM_REG_SIZE_U16 0x0010000000000000ULL
 #define KVM_REG_SIZE_U32 0x0020000000000000ULL
 #define KVM_REG_SIZE_U64 0x0030000000000000ULL
-#define KVM_REG_SIZE_U128 0x0040000000000000ULL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_REG_SIZE_U128 0x0040000000000000ULL
 #define KVM_REG_SIZE_U256 0x0050000000000000ULL
 #define KVM_REG_SIZE_U512 0x0060000000000000ULL
 #define KVM_REG_SIZE_U1024 0x0070000000000000ULL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_reg_list {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 n;
- __u64 reg[0];
+  __u64 n;
+  __u64 reg[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_one_reg {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 id;
- __u64 addr;
+  __u64 id;
+  __u64 addr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_msi {
+  __u32 address_lo;
+  __u32 address_hi;
+  __u32 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 address_lo;
- __u32 address_hi;
- __u32 data;
- __u32 flags;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad[16];
+  __u32 flags;
+  __u8 pad[16];
 };
 struct kvm_arm_device_addr {
- __u64 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 addr;
+  __u64 id;
+  __u64 addr;
 };
 #define KVM_CREATE_DEVICE_TEST 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_create_device {
+  __u32 type;
+  __u32 fd;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 fd;
- __u32 flags;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_device_attr {
- __u32 flags;
- __u32 group;
- __u64 attr;
+  __u32 flags;
+  __u32 group;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 addr;
+  __u64 attr;
+  __u64 addr;
 };
-#define KVM_DEV_TYPE_FSL_MPIC_20 1
-#define KVM_DEV_TYPE_FSL_MPIC_42 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KVM_DEV_TYPE_XICS 3
-#define KVM_DEV_TYPE_VFIO 4
 #define KVM_DEV_VFIO_GROUP 1
-#define KVM_DEV_VFIO_GROUP_ADD 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_DEV_VFIO_GROUP_ADD 1
 #define KVM_DEV_VFIO_GROUP_DEL 2
-#define KVM_DEV_TYPE_ARM_VGIC_V2 5
+enum kvm_device_type {
+  KVM_DEV_TYPE_FSL_MPIC_20 = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_DEV_TYPE_FSL_MPIC_20 KVM_DEV_TYPE_FSL_MPIC_20
+  KVM_DEV_TYPE_FSL_MPIC_42,
+#define KVM_DEV_TYPE_FSL_MPIC_42 KVM_DEV_TYPE_FSL_MPIC_42
+  KVM_DEV_TYPE_XICS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_DEV_TYPE_XICS KVM_DEV_TYPE_XICS
+  KVM_DEV_TYPE_VFIO,
+#define KVM_DEV_TYPE_VFIO KVM_DEV_TYPE_VFIO
+  KVM_DEV_TYPE_ARM_VGIC_V2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_DEV_TYPE_ARM_VGIC_V2 KVM_DEV_TYPE_ARM_VGIC_V2
+  KVM_DEV_TYPE_FLIC,
+#define KVM_DEV_TYPE_FLIC KVM_DEV_TYPE_FLIC
+  KVM_DEV_TYPE_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region)
 #define KVM_CREATE_VCPU _IO(KVMIO, 0x41)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_MEMORY_ALIAS _IOW(KVMIO, 0x43, struct kvm_memory_alias)
 #define KVM_SET_NR_MMU_PAGES _IO(KVMIO, 0x44)
 #define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45)
+#define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46, struct kvm_userspace_memory_region)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46,   struct kvm_userspace_memory_region)
 #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47)
 #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64)
 struct kvm_s390_ucas_mapping {
+  __u64 user_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 user_addr;
- __u64 vcpu_addr;
- __u64 length;
+  __u64 vcpu_addr;
+  __u64 length;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping)
 #define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long)
 #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_IRQCHIP _IOWR(KVMIO, 0x62, struct kvm_irqchip)
 #define KVM_SET_IRQCHIP _IOR(KVMIO, 0x63, struct kvm_irqchip)
 #define KVM_CREATE_PIT _IO(KVMIO, 0x64)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_PIT _IOWR(KVMIO, 0x65, struct kvm_pit_state)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_PIT _IOR(KVMIO, 0x66, struct kvm_pit_state)
 #define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level)
-#define KVM_REGISTER_COALESCED_MMIO   _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone)
+#define KVM_REGISTER_COALESCED_MMIO _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone)
+#define KVM_UNREGISTER_COALESCED_MMIO _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KVM_UNREGISTER_COALESCED_MMIO   _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone)
-#define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69,   struct kvm_assigned_pci_dev)
+#define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, struct kvm_assigned_pci_dev)
 #define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing)
 #define KVM_ASSIGN_IRQ __KVM_DEPRECATED_VM_R_0x70
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ASSIGN_DEV_IRQ _IOW(KVMIO, 0x70, struct kvm_assigned_irq)
-#define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71)
-#define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72,   struct kvm_assigned_pci_dev)
-#define KVM_ASSIGN_SET_MSIX_NR _IOW(KVMIO, 0x73,   struct kvm_assigned_msix_nr)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KVM_ASSIGN_SET_MSIX_ENTRY _IOW(KVMIO, 0x74,   struct kvm_assigned_msix_entry)
+#define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71)
+#define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, struct kvm_assigned_pci_dev)
+#define KVM_ASSIGN_SET_MSIX_NR _IOW(KVMIO, 0x73, struct kvm_assigned_msix_nr)
+#define KVM_ASSIGN_SET_MSIX_ENTRY _IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq)
 #define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd)
 #define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IOEVENTFD _IOW(KVMIO, 0x79, struct kvm_ioeventfd)
 #define KVM_XEN_HVM_CONFIG _IOW(KVMIO, 0x7a, struct kvm_xen_hvm_config)
 #define KVM_SET_CLOCK _IOW(KVMIO, 0x7b, struct kvm_clock_data)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_CLOCK _IOR(KVMIO, 0x7c, struct kvm_clock_data)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_PIT2 _IOR(KVMIO, 0x9f, struct kvm_pit_state2)
 #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2)
 #define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2)
-#define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3)
-#define KVM_ASSIGN_SET_INTX_MASK _IOW(KVMIO, 0xa4,   struct kvm_assigned_pci_dev)
-#define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3)
+#define KVM_ASSIGN_SET_INTX_MASK _IOW(KVMIO, 0xa4, struct kvm_assigned_pci_dev)
+#define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi)
 #define KVM_PPC_GET_SMMU_INFO _IOR(KVMIO, 0xa6, struct kvm_ppc_smmu_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_PPC_ALLOCATE_HTAB _IOWR(KVMIO, 0xa7, __u32)
 #define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce)
 #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr)
 #define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO, 0xac, struct kvm_rtas_token_args)
 #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_DEVICE_ATTR _IOW(KVMIO, 0xe1, struct kvm_device_attr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_DEVICE_ATTR _IOW(KVMIO, 0xe2, struct kvm_device_attr)
 #define KVM_HAS_DEVICE_ATTR _IOW(KVMIO, 0xe3, struct kvm_device_attr)
 #define KVM_RUN _IO(KVMIO, 0x80)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_REGS _IOR(KVMIO, 0x81, struct kvm_regs)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_REGS _IOW(KVMIO, 0x82, struct kvm_regs)
 #define KVM_GET_SREGS _IOR(KVMIO, 0x83, struct kvm_sregs)
 #define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt)
 #define KVM_DEBUG_GUEST __KVM_DEPRECATED_VCPU_W_0x87
 #define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid)
 #define KVM_SET_SIGNAL_MASK _IOW(KVMIO, 0x8b, struct kvm_signal_mask)
 #define KVM_GET_FPU _IOR(KVMIO, 0x8c, struct kvm_fpu)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_FPU _IOW(KVMIO, 0x8d, struct kvm_fpu)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_LAPIC _IOR(KVMIO, 0x8e, struct kvm_lapic_state)
 #define KVM_SET_LAPIC _IOW(KVMIO, 0x8f, struct kvm_lapic_state)
 #define KVM_SET_CPUID2 _IOW(KVMIO, 0x90, struct kvm_cpuid2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_CPUID2 _IOWR(KVMIO, 0x91, struct kvm_cpuid2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_TPR_ACCESS_REPORTING _IOWR(KVMIO, 0x92, struct kvm_tpr_access_ctl)
 #define KVM_SET_VAPIC_ADDR _IOW(KVMIO, 0x93, struct kvm_vapic_addr)
 #define KVM_S390_INTERRUPT _IOW(KVMIO, 0x94, struct kvm_s390_interrupt)
+#define KVM_S390_STORE_STATUS_NOADDR (- 1ul)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define KVM_S390_STORE_STATUS_NOADDR (-1ul)
-#define KVM_S390_STORE_STATUS_PREFIXED (-2ul)
+#define KVM_S390_STORE_STATUS_PREFIXED (- 2ul)
 #define KVM_S390_STORE_STATUS _IOW(KVMIO, 0x95, unsigned long)
 #define KVM_S390_SET_INITIAL_PSW _IOW(KVMIO, 0x96, struct kvm_s390_psw)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_S390_INITIAL_RESET _IO(KVMIO, 0x97)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_MP_STATE _IOR(KVMIO, 0x98, struct kvm_mp_state)
 #define KVM_SET_MP_STATE _IOW(KVMIO, 0x99, struct kvm_mp_state)
 #define KVM_NMI _IO(KVMIO, 0x9a)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_GUEST_DEBUG _IOW(KVMIO, 0x9b, struct kvm_guest_debug)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_X86_SETUP_MCE _IOW(KVMIO, 0x9c, __u64)
 #define KVM_X86_GET_MCE_CAP_SUPPORTED _IOR(KVMIO, 0x9d, __u64)
 #define KVM_X86_SET_MCE _IOW(KVMIO, 0x9e, struct kvm_x86_mce)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IA64_VCPU_GET_STACK _IOR(KVMIO, 0x9a, void *)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_IA64_VCPU_SET_STACK _IOW(KVMIO, 0x9b, void *)
 #define KVM_GET_VCPU_EVENTS _IOR(KVMIO, 0x9f, struct kvm_vcpu_events)
 #define KVM_SET_VCPU_EVENTS _IOW(KVMIO, 0xa0, struct kvm_vcpu_events)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_DEBUGREGS _IOR(KVMIO, 0xa1, struct kvm_debugregs)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_DEBUGREGS _IOW(KVMIO, 0xa2, struct kvm_debugregs)
 #define KVM_ENABLE_CAP _IOW(KVMIO, 0xa3, struct kvm_enable_cap)
 #define KVM_GET_XSAVE _IOR(KVMIO, 0xa4, struct kvm_xsave)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_XSAVE _IOW(KVMIO, 0xa5, struct kvm_xsave)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_XCRS _IOR(KVMIO, 0xa6, struct kvm_xcrs)
 #define KVM_SET_XCRS _IOW(KVMIO, 0xa7, struct kvm_xcrs)
 #define KVM_DIRTY_TLB _IOW(KVMIO, 0xaa, struct kvm_dirty_tlb)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_ONE_REG _IOW(KVMIO, 0xab, struct kvm_one_reg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_SET_ONE_REG _IOW(KVMIO, 0xac, struct kvm_one_reg)
 #define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad)
 #define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list)
 #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
 #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_assigned_pci_dev {
- __u32 assigned_dev_id;
- __u32 busnr;
+  __u32 assigned_dev_id;
+  __u32 busnr;
+  __u32 devfn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 devfn;
- __u32 flags;
- __u32 segnr;
- union {
+  __u32 flags;
+  __u32 segnr;
+  union {
+    __u32 reserved[11];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[11];
- };
+  };
 };
 #define KVM_DEV_IRQ_HOST_INTX (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_IRQ_HOST_MSI (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_IRQ_HOST_MSIX (1 << 2)
 #define KVM_DEV_IRQ_GUEST_INTX (1 << 8)
 #define KVM_DEV_IRQ_GUEST_MSI (1 << 9)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_IRQ_GUEST_MSIX (1 << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_DEV_IRQ_HOST_MASK 0x00ff
 #define KVM_DEV_IRQ_GUEST_MASK 0xff00
 struct kvm_assigned_irq {
+  __u32 assigned_dev_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 assigned_dev_id;
- __u32 host_irq;
- __u32 guest_irq;
- __u32 flags;
+  __u32 host_irq;
+  __u32 guest_irq;
+  __u32 flags;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __u32 reserved[12];
- };
+    __u32 reserved[12];
+  };
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kvm_assigned_msix_nr {
- __u32 assigned_dev_id;
- __u16 entry_nr;
- __u16 padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 assigned_dev_id;
+  __u16 entry_nr;
+  __u16 padding;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KVM_MAX_MSIX_PER_DEV 256
 struct kvm_assigned_msix_entry {
- __u32 assigned_dev_id;
+  __u32 assigned_dev_id;
+  __u32 gsi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gsi;
- __u16 entry;
- __u16 padding[3];
+  __u16 entry;
+  __u16 padding[3];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/kvm_para.h b/libc/kernel/uapi/linux/kvm_para.h
index d973996..be05b85 100644
--- a/libc/kernel/uapi/linux/kvm_para.h
+++ b/libc/kernel/uapi/linux/kvm_para.h
@@ -29,6 +29,10 @@
 #define KVM_HC_FEATURES 3
 #define KVM_HC_PPC_MAP_MAGIC_PAGE 4
 #define KVM_HC_KICK_CPU 5
-#include <asm/kvm_para.h>
+#define KVM_HC_MIPS_GET_CLOCK_FREQ 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KVM_HC_MIPS_EXIT_VM 7
+#define KVM_HC_MIPS_CONSOLE_OUTPUT 8
+#include <asm/kvm_para.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/l2tp.h b/libc/kernel/uapi/linux/l2tp.h
index 818cda4..4eaf7ad 100644
--- a/libc/kernel/uapi/linux/l2tp.h
+++ b/libc/kernel/uapi/linux/l2tp.h
@@ -26,134 +26,133 @@
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_sa_family_t l2tp_family;
- __be16 l2tp_unused;
- struct in_addr l2tp_addr;
- __u32 l2tp_conn_id;
+  __kernel_sa_family_t l2tp_family;
+  __be16 l2tp_unused;
+  struct in_addr l2tp_addr;
+  __u32 l2tp_conn_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char __pad[sizeof(struct sockaddr) -
- sizeof(__kernel_sa_family_t) -
- sizeof(__be16) - sizeof(struct in_addr) -
- sizeof(__u32)];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char __pad[sizeof(struct sockaddr) - sizeof(__kernel_sa_family_t) - sizeof(__be16) - sizeof(struct in_addr) - sizeof(__u32)];
 };
 struct sockaddr_l2tpip6 {
- __kernel_sa_family_t l2tp_family;
- __be16 l2tp_unused;
+  __kernel_sa_family_t l2tp_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 l2tp_flowinfo;
- struct in6_addr l2tp_addr;
- __u32 l2tp_scope_id;
- __u32 l2tp_conn_id;
+  __be16 l2tp_unused;
+  __be32 l2tp_flowinfo;
+  struct in6_addr l2tp_addr;
+  __u32 l2tp_scope_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 l2tp_conn_id;
 };
 enum {
- L2TP_CMD_NOOP,
- L2TP_CMD_TUNNEL_CREATE,
+  L2TP_CMD_NOOP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_CMD_TUNNEL_DELETE,
- L2TP_CMD_TUNNEL_MODIFY,
- L2TP_CMD_TUNNEL_GET,
- L2TP_CMD_SESSION_CREATE,
+  L2TP_CMD_TUNNEL_CREATE,
+  L2TP_CMD_TUNNEL_DELETE,
+  L2TP_CMD_TUNNEL_MODIFY,
+  L2TP_CMD_TUNNEL_GET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_CMD_SESSION_DELETE,
- L2TP_CMD_SESSION_MODIFY,
- L2TP_CMD_SESSION_GET,
- __L2TP_CMD_MAX,
+  L2TP_CMD_SESSION_CREATE,
+  L2TP_CMD_SESSION_DELETE,
+  L2TP_CMD_SESSION_MODIFY,
+  L2TP_CMD_SESSION_GET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __L2TP_CMD_MAX,
 };
 #define L2TP_CMD_MAX (__L2TP_CMD_MAX - 1)
 enum {
- L2TP_ATTR_NONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_PW_TYPE,
- L2TP_ATTR_ENCAP_TYPE,
- L2TP_ATTR_OFFSET,
- L2TP_ATTR_DATA_SEQ,
+  L2TP_ATTR_NONE,
+  L2TP_ATTR_PW_TYPE,
+  L2TP_ATTR_ENCAP_TYPE,
+  L2TP_ATTR_OFFSET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_L2SPEC_TYPE,
- L2TP_ATTR_L2SPEC_LEN,
- L2TP_ATTR_PROTO_VERSION,
- L2TP_ATTR_IFNAME,
+  L2TP_ATTR_DATA_SEQ,
+  L2TP_ATTR_L2SPEC_TYPE,
+  L2TP_ATTR_L2SPEC_LEN,
+  L2TP_ATTR_PROTO_VERSION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_CONN_ID,
- L2TP_ATTR_PEER_CONN_ID,
- L2TP_ATTR_SESSION_ID,
- L2TP_ATTR_PEER_SESSION_ID,
+  L2TP_ATTR_IFNAME,
+  L2TP_ATTR_CONN_ID,
+  L2TP_ATTR_PEER_CONN_ID,
+  L2TP_ATTR_SESSION_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_UDP_CSUM,
- L2TP_ATTR_VLAN_ID,
- L2TP_ATTR_COOKIE,
- L2TP_ATTR_PEER_COOKIE,
+  L2TP_ATTR_PEER_SESSION_ID,
+  L2TP_ATTR_UDP_CSUM,
+  L2TP_ATTR_VLAN_ID,
+  L2TP_ATTR_COOKIE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_DEBUG,
- L2TP_ATTR_RECV_SEQ,
- L2TP_ATTR_SEND_SEQ,
- L2TP_ATTR_LNS_MODE,
+  L2TP_ATTR_PEER_COOKIE,
+  L2TP_ATTR_DEBUG,
+  L2TP_ATTR_RECV_SEQ,
+  L2TP_ATTR_SEND_SEQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_USING_IPSEC,
- L2TP_ATTR_RECV_TIMEOUT,
- L2TP_ATTR_FD,
- L2TP_ATTR_IP_SADDR,
+  L2TP_ATTR_LNS_MODE,
+  L2TP_ATTR_USING_IPSEC,
+  L2TP_ATTR_RECV_TIMEOUT,
+  L2TP_ATTR_FD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_IP_DADDR,
- L2TP_ATTR_UDP_SPORT,
- L2TP_ATTR_UDP_DPORT,
- L2TP_ATTR_MTU,
+  L2TP_ATTR_IP_SADDR,
+  L2TP_ATTR_IP_DADDR,
+  L2TP_ATTR_UDP_SPORT,
+  L2TP_ATTR_UDP_DPORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_MRU,
- L2TP_ATTR_STATS,
- L2TP_ATTR_IP6_SADDR,
- L2TP_ATTR_IP6_DADDR,
+  L2TP_ATTR_MTU,
+  L2TP_ATTR_MRU,
+  L2TP_ATTR_STATS,
+  L2TP_ATTR_IP6_SADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __L2TP_ATTR_MAX,
+  L2TP_ATTR_IP6_DADDR,
+  L2TP_ATTR_UDP_ZERO_CSUM6_TX,
+  L2TP_ATTR_UDP_ZERO_CSUM6_RX,
+  __L2TP_ATTR_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define L2TP_ATTR_MAX (__L2TP_ATTR_MAX - 1)
 enum {
+  L2TP_ATTR_STATS_NONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_STATS_NONE,
- L2TP_ATTR_TX_PACKETS,
- L2TP_ATTR_TX_BYTES,
- L2TP_ATTR_TX_ERRORS,
+  L2TP_ATTR_TX_PACKETS,
+  L2TP_ATTR_TX_BYTES,
+  L2TP_ATTR_TX_ERRORS,
+  L2TP_ATTR_RX_PACKETS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_RX_PACKETS,
- L2TP_ATTR_RX_BYTES,
- L2TP_ATTR_RX_SEQ_DISCARDS,
- L2TP_ATTR_RX_OOS_PACKETS,
+  L2TP_ATTR_RX_BYTES,
+  L2TP_ATTR_RX_SEQ_DISCARDS,
+  L2TP_ATTR_RX_OOS_PACKETS,
+  L2TP_ATTR_RX_ERRORS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_ATTR_RX_ERRORS,
- __L2TP_ATTR_STATS_MAX,
+  __L2TP_ATTR_STATS_MAX,
 };
 #define L2TP_ATTR_STATS_MAX (__L2TP_ATTR_STATS_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum l2tp_pwtype {
- L2TP_PWTYPE_NONE = 0x0000,
- L2TP_PWTYPE_ETH_VLAN = 0x0004,
- L2TP_PWTYPE_ETH = 0x0005,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_PWTYPE_PPP = 0x0007,
- L2TP_PWTYPE_PPP_AC = 0x0008,
- L2TP_PWTYPE_IP = 0x000b,
- __L2TP_PWTYPE_MAX
+  L2TP_PWTYPE_NONE = 0x0000,
+  L2TP_PWTYPE_ETH_VLAN = 0x0004,
+  L2TP_PWTYPE_ETH = 0x0005,
+  L2TP_PWTYPE_PPP = 0x0007,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  L2TP_PWTYPE_PPP_AC = 0x0008,
+  L2TP_PWTYPE_IP = 0x000b,
+  __L2TP_PWTYPE_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum l2tp_l2spec_type {
- L2TP_L2SPECTYPE_NONE,
- L2TP_L2SPECTYPE_DEFAULT,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  L2TP_L2SPECTYPE_NONE,
+  L2TP_L2SPECTYPE_DEFAULT,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum l2tp_encap_type {
- L2TP_ENCAPTYPE_UDP,
- L2TP_ENCAPTYPE_IP,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  L2TP_ENCAPTYPE_UDP,
+  L2TP_ENCAPTYPE_IP,
 };
-enum l2tp_seqmode {
- L2TP_SEQ_NONE = 0,
- L2TP_SEQ_IP = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- L2TP_SEQ_ALL = 2,
+enum l2tp_seqmode {
+  L2TP_SEQ_NONE = 0,
+  L2TP_SEQ_IP = 1,
+  L2TP_SEQ_ALL = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define L2TP_GENL_NAME "l2tp"
 #define L2TP_GENL_VERSION 0x1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/libc-compat.h b/libc/kernel/uapi/linux/libc-compat.h
index 826b763..b66ebe2 100644
--- a/libc/kernel/uapi/linux/libc-compat.h
+++ b/libc/kernel/uapi/linux/libc-compat.h
@@ -32,22 +32,33 @@
 #define __UAPI_DEF_IPV6_MREQ 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UAPI_DEF_IPPROTO_V6 0
+#define __UAPI_DEF_IPV6_OPTIONS 0
 #else
 #define __UAPI_DEF_IN6_ADDR 1
-#define __UAPI_DEF_IN6_ADDR_ALT 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __UAPI_DEF_IN6_ADDR_ALT 1
 #define __UAPI_DEF_SOCKADDR_IN6 1
 #define __UAPI_DEF_IPV6_MREQ 1
 #define __UAPI_DEF_IPPROTO_V6 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __UAPI_DEF_IPV6_OPTIONS 1
 #endif
+#ifdef _SYS_XATTR_H
+#define __UAPI_DEF_XATTR 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
+#define __UAPI_DEF_XATTR 1
+#endif
+#else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UAPI_DEF_IN6_ADDR 1
 #define __UAPI_DEF_IN6_ADDR_ALT 1
 #define __UAPI_DEF_SOCKADDR_IN6 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UAPI_DEF_IPV6_MREQ 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UAPI_DEF_IPPROTO_V6 1
-#endif
+#define __UAPI_DEF_IPV6_OPTIONS 1
+#define __UAPI_DEF_XATTR 1
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/llc.h b/libc/kernel/uapi/linux/llc.h
index 0e7db00..7007b57 100644
--- a/libc/kernel/uapi/linux/llc.h
+++ b/libc/kernel/uapi/linux/llc.h
@@ -22,75 +22,73 @@
 #define __LLC_SOCK_SIZE__ 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_llc {
- __kernel_sa_family_t sllc_family;
- __kernel_sa_family_t sllc_arphrd;
- unsigned char sllc_test;
+  __kernel_sa_family_t sllc_family;
+  __kernel_sa_family_t sllc_arphrd;
+  unsigned char sllc_test;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char sllc_xid;
- unsigned char sllc_ua;
- unsigned char sllc_sap;
- unsigned char sllc_mac[IFHWADDRLEN];
+  unsigned char sllc_xid;
+  unsigned char sllc_ua;
+  unsigned char sllc_sap;
+  unsigned char sllc_mac[IFHWADDRLEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char __pad[__LLC_SOCK_SIZE__ -
- sizeof(__kernel_sa_family_t) * 2 -
- sizeof(unsigned char) * 4 - IFHWADDRLEN];
+  unsigned char __pad[__LLC_SOCK_SIZE__ - sizeof(__kernel_sa_family_t) * 2 - sizeof(unsigned char) * 4 - IFHWADDRLEN];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum llc_sockopts {
- LLC_OPT_UNKNOWN = 0,
- LLC_OPT_RETRY,
- LLC_OPT_SIZE,
+  LLC_OPT_UNKNOWN = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LLC_OPT_ACK_TMR_EXP,
- LLC_OPT_P_TMR_EXP,
- LLC_OPT_REJ_TMR_EXP,
- LLC_OPT_BUSY_TMR_EXP,
+  LLC_OPT_RETRY,
+  LLC_OPT_SIZE,
+  LLC_OPT_ACK_TMR_EXP,
+  LLC_OPT_P_TMR_EXP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LLC_OPT_TX_WIN,
- LLC_OPT_RX_WIN,
- LLC_OPT_PKTINFO,
- LLC_OPT_MAX
+  LLC_OPT_REJ_TMR_EXP,
+  LLC_OPT_BUSY_TMR_EXP,
+  LLC_OPT_TX_WIN,
+  LLC_OPT_RX_WIN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  LLC_OPT_PKTINFO,
+  LLC_OPT_MAX
 };
 #define LLC_OPT_MAX_RETRY 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_OPT_MAX_SIZE 4196
 #define LLC_OPT_MAX_WIN 127
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_OPT_MAX_ACK_TMR_EXP 60
 #define LLC_OPT_MAX_P_TMR_EXP 60
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_OPT_MAX_REJ_TMR_EXP 60
 #define LLC_OPT_MAX_BUSY_TMR_EXP 60
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_NULL 0x00
 #define LLC_SAP_LLC 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_SNA 0x04
 #define LLC_SAP_PNM 0x0E
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_IP 0x06
 #define LLC_SAP_BSPAN 0x42
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_MMS 0x4E
 #define LLC_SAP_8208 0x7E
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_3COM 0x80
 #define LLC_SAP_PRO 0x8E
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_SNAP 0xAA
 #define LLC_SAP_BANYAN 0xBC
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_IPX 0xE0
 #define LLC_SAP_NETBEUI 0xF0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_LANMGR 0xF4
 #define LLC_SAP_IMPL 0xF8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_DISC 0xFC
 #define LLC_SAP_OSI 0xFE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_LAR 0xDC
 #define LLC_SAP_RM 0xD4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LLC_SAP_GLOBAL 0xFF
 struct llc_pktinfo {
- int lpi_ifindex;
- unsigned char lpi_sap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char lpi_mac[IFHWADDRLEN];
+  int lpi_ifindex;
+  unsigned char lpi_sap;
+  unsigned char lpi_mac[IFHWADDRLEN];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/loop.h b/libc/kernel/uapi/linux/loop.h
index 14a4602..c0881f4 100644
--- a/libc/kernel/uapi/linux/loop.h
+++ b/libc/kernel/uapi/linux/loop.h
@@ -22,48 +22,48 @@
 #define LO_KEY_SIZE 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- LO_FLAGS_READ_ONLY = 1,
- LO_FLAGS_AUTOCLEAR = 4,
- LO_FLAGS_PARTSCAN = 8,
+  LO_FLAGS_READ_ONLY = 1,
+  LO_FLAGS_AUTOCLEAR = 4,
+  LO_FLAGS_PARTSCAN = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #include <asm/posix_types.h>
 #include <linux/types.h>
 struct loop_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int lo_number;
- __kernel_old_dev_t lo_device;
- unsigned long lo_inode;
- __kernel_old_dev_t lo_rdevice;
+  int lo_number;
+  __kernel_old_dev_t lo_device;
+  unsigned long lo_inode;
+  __kernel_old_dev_t lo_rdevice;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int lo_offset;
- int lo_encrypt_type;
- int lo_encrypt_key_size;
- int lo_flags;
+  int lo_offset;
+  int lo_encrypt_type;
+  int lo_encrypt_key_size;
+  int lo_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char lo_name[LO_NAME_SIZE];
- unsigned char lo_encrypt_key[LO_KEY_SIZE];
- unsigned long lo_init[2];
- char reserved[4];
+  char lo_name[LO_NAME_SIZE];
+  unsigned char lo_encrypt_key[LO_KEY_SIZE];
+  unsigned long lo_init[2];
+  char reserved[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct loop_info64 {
- __u64 lo_device;
- __u64 lo_inode;
+  __u64 lo_device;
+  __u64 lo_inode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 lo_rdevice;
- __u64 lo_offset;
- __u64 lo_sizelimit;
- __u32 lo_number;
+  __u64 lo_rdevice;
+  __u64 lo_offset;
+  __u64 lo_sizelimit;
+  __u32 lo_number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lo_encrypt_type;
- __u32 lo_encrypt_key_size;
- __u32 lo_flags;
- __u8 lo_file_name[LO_NAME_SIZE];
+  __u32 lo_encrypt_type;
+  __u32 lo_encrypt_key_size;
+  __u32 lo_flags;
+  __u8 lo_file_name[LO_NAME_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 lo_crypt_name[LO_NAME_SIZE];
- __u8 lo_encrypt_key[LO_KEY_SIZE];
- __u64 lo_init[2];
+  __u8 lo_crypt_name[LO_NAME_SIZE];
+  __u8 lo_encrypt_key[LO_KEY_SIZE];
+  __u64 lo_init[2];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LO_CRYPT_NONE 0
diff --git a/libc/kernel/uapi/linux/major.h b/libc/kernel/uapi/linux/major.h
index d07d065..b2a958b 100644
--- a/libc/kernel/uapi/linux/major.h
+++ b/libc/kernel/uapi/linux/major.h
@@ -169,7 +169,7 @@
 #define SCSI_DISK15_MAJOR 135
 #define UNIX98_PTY_MASTER_MAJOR 128
 #define UNIX98_PTY_MAJOR_COUNT 8
-#define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT)
+#define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR + UNIX98_PTY_MAJOR_COUNT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DRBD_MAJOR 147
 #define RTF_MAJOR 150
diff --git a/libc/kernel/uapi/linux/map_to_7segment.h b/libc/kernel/uapi/linux/map_to_7segment.h
index 93829ce..1556cc4 100644
--- a/libc/kernel/uapi/linux/map_to_7segment.h
+++ b/libc/kernel/uapi/linux/map_to_7segment.h
@@ -31,24 +31,24 @@
 #define BIT_SEG7_RESERVED 7
 struct seg7_conversion_map {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char table[128];
+  unsigned char table[128];
 };
-#define SEG7_CONVERSION_MAP(_name, _map)   struct seg7_conversion_map _name = { .table = { _map } }
+#define SEG7_CONVERSION_MAP(_name,_map) struct seg7_conversion_map _name = {.table = { _map } }
 #define MAP_TO_SEG7_SYSFS_FILE "map_seg7"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _SEG7(l,a,b,c,d,e,f,g)   ( a<<BIT_SEG7_A | b<<BIT_SEG7_B | c<<BIT_SEG7_C | d<<BIT_SEG7_D |   e<<BIT_SEG7_E | f<<BIT_SEG7_F | g<<BIT_SEG7_G )
-#define _MAP_0_32_ASCII_SEG7_NON_PRINTABLE   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,
-#define _MAP_33_47_ASCII_SEG7_SYMBOL   _SEG7('!',0,0,0,0,1,1,0), _SEG7('"',0,1,0,0,0,1,0), _SEG7('#',0,1,1,0,1,1,0),  _SEG7('$',1,0,1,1,0,1,1), _SEG7('%',0,0,1,0,0,1,0), _SEG7('&',1,0,1,1,1,1,1),  _SEG7('\'',0,0,0,0,0,1,0),_SEG7('(',1,0,0,1,1,1,0), _SEG7(')',1,1,1,1,0,0,0),  _SEG7('*',0,1,1,0,1,1,1), _SEG7('+',0,1,1,0,0,0,1), _SEG7(',',0,0,0,0,1,0,0),  _SEG7('-',0,0,0,0,0,0,1), _SEG7('.',0,0,0,0,1,0,0), _SEG7('/',0,1,0,0,1,0,1),
-#define _MAP_48_57_ASCII_SEG7_NUMERIC   _SEG7('0',1,1,1,1,1,1,0), _SEG7('1',0,1,1,0,0,0,0), _SEG7('2',1,1,0,1,1,0,1),  _SEG7('3',1,1,1,1,0,0,1), _SEG7('4',0,1,1,0,0,1,1), _SEG7('5',1,0,1,1,0,1,1),  _SEG7('6',1,0,1,1,1,1,1), _SEG7('7',1,1,1,0,0,0,0), _SEG7('8',1,1,1,1,1,1,1),  _SEG7('9',1,1,1,1,0,1,1),
+#define _SEG7(l,a,b,c,d,e,f,g) (a << BIT_SEG7_A | b << BIT_SEG7_B | c << BIT_SEG7_C | d << BIT_SEG7_D | e << BIT_SEG7_E | f << BIT_SEG7_F | g << BIT_SEG7_G)
+#define _MAP_0_32_ASCII_SEG7_NON_PRINTABLE 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,
+#define _MAP_33_47_ASCII_SEG7_SYMBOL _SEG7('!', 0, 0, 0, 0, 1, 1, 0), _SEG7('"', 0, 1, 0, 0, 0, 1, 0), _SEG7('#', 0, 1, 1, 0, 1, 1, 0), _SEG7('$', 1, 0, 1, 1, 0, 1, 1), _SEG7('%', 0, 0, 1, 0, 0, 1, 0), _SEG7('&', 1, 0, 1, 1, 1, 1, 1), _SEG7('\'', 0, 0, 0, 0, 0, 1, 0), _SEG7('(', 1, 0, 0, 1, 1, 1, 0), _SEG7(')', 1, 1, 1, 1, 0, 0, 0), _SEG7('*', 0, 1, 1, 0, 1, 1, 1), _SEG7('+', 0, 1, 1, 0, 0, 0, 1), _SEG7(',', 0, 0, 0, 0, 1, 0, 0), _SEG7('-', 0, 0, 0, 0, 0, 0, 1), _SEG7('.', 0, 0, 0, 0, 1, 0, 0), _SEG7('/', 0, 1, 0, 0, 1, 0, 1),
+#define _MAP_48_57_ASCII_SEG7_NUMERIC _SEG7('0', 1, 1, 1, 1, 1, 1, 0), _SEG7('1', 0, 1, 1, 0, 0, 0, 0), _SEG7('2', 1, 1, 0, 1, 1, 0, 1), _SEG7('3', 1, 1, 1, 1, 0, 0, 1), _SEG7('4', 0, 1, 1, 0, 0, 1, 1), _SEG7('5', 1, 0, 1, 1, 0, 1, 1), _SEG7('6', 1, 0, 1, 1, 1, 1, 1), _SEG7('7', 1, 1, 1, 0, 0, 0, 0), _SEG7('8', 1, 1, 1, 1, 1, 1, 1), _SEG7('9', 1, 1, 1, 1, 0, 1, 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _MAP_58_64_ASCII_SEG7_SYMBOL   _SEG7(':',0,0,0,1,0,0,1), _SEG7(';',0,0,0,1,0,0,1), _SEG7('<',1,0,0,0,0,1,1),  _SEG7('=',0,0,0,1,0,0,1), _SEG7('>',1,1,0,0,0,0,1), _SEG7('?',1,1,1,0,0,1,0),  _SEG7('@',1,1,0,1,1,1,1),
-#define _MAP_65_90_ASCII_SEG7_ALPHA_UPPR   _SEG7('A',1,1,1,0,1,1,1), _SEG7('B',1,1,1,1,1,1,1), _SEG7('C',1,0,0,1,1,1,0),  _SEG7('D',1,1,1,1,1,1,0), _SEG7('E',1,0,0,1,1,1,1), _SEG7('F',1,0,0,0,1,1,1),  _SEG7('G',1,1,1,1,0,1,1), _SEG7('H',0,1,1,0,1,1,1), _SEG7('I',0,1,1,0,0,0,0),  _SEG7('J',0,1,1,1,0,0,0), _SEG7('K',0,1,1,0,1,1,1), _SEG7('L',0,0,0,1,1,1,0),  _SEG7('M',1,1,1,0,1,1,0), _SEG7('N',1,1,1,0,1,1,0), _SEG7('O',1,1,1,1,1,1,0),  _SEG7('P',1,1,0,0,1,1,1), _SEG7('Q',1,1,1,1,1,1,0), _SEG7('R',1,1,1,0,1,1,1),  _SEG7('S',1,0,1,1,0,1,1), _SEG7('T',0,0,0,1,1,1,1), _SEG7('U',0,1,1,1,1,1,0),  _SEG7('V',0,1,1,1,1,1,0), _SEG7('W',0,1,1,1,1,1,1), _SEG7('X',0,1,1,0,1,1,1),  _SEG7('Y',0,1,1,0,0,1,1), _SEG7('Z',1,1,0,1,1,0,1),
-#define _MAP_91_96_ASCII_SEG7_SYMBOL   _SEG7('[',1,0,0,1,1,1,0), _SEG7('\\',0,0,1,0,0,1,1),_SEG7(']',1,1,1,1,0,0,0),  _SEG7('^',1,1,0,0,0,1,0), _SEG7('_',0,0,0,1,0,0,0), _SEG7('`',0,1,0,0,0,0,0),
-#define _MAP_97_122_ASCII_SEG7_ALPHA_LOWER   _SEG7('A',1,1,1,0,1,1,1), _SEG7('b',0,0,1,1,1,1,1), _SEG7('c',0,0,0,1,1,0,1),  _SEG7('d',0,1,1,1,1,0,1), _SEG7('E',1,0,0,1,1,1,1), _SEG7('F',1,0,0,0,1,1,1),  _SEG7('G',1,1,1,1,0,1,1), _SEG7('h',0,0,1,0,1,1,1), _SEG7('i',0,0,1,0,0,0,0),  _SEG7('j',0,0,1,1,0,0,0), _SEG7('k',0,0,1,0,1,1,1), _SEG7('L',0,0,0,1,1,1,0),  _SEG7('M',1,1,1,0,1,1,0), _SEG7('n',0,0,1,0,1,0,1), _SEG7('o',0,0,1,1,1,0,1),  _SEG7('P',1,1,0,0,1,1,1), _SEG7('q',1,1,1,0,0,1,1), _SEG7('r',0,0,0,0,1,0,1),  _SEG7('S',1,0,1,1,0,1,1), _SEG7('T',0,0,0,1,1,1,1), _SEG7('u',0,0,1,1,1,0,0),  _SEG7('v',0,0,1,1,1,0,0), _SEG7('W',0,1,1,1,1,1,1), _SEG7('X',0,1,1,0,1,1,1),  _SEG7('y',0,1,1,1,0,1,1), _SEG7('Z',1,1,0,1,1,0,1),
+#define _MAP_58_64_ASCII_SEG7_SYMBOL _SEG7(':', 0, 0, 0, 1, 0, 0, 1), _SEG7(';', 0, 0, 0, 1, 0, 0, 1), _SEG7('<', 1, 0, 0, 0, 0, 1, 1), _SEG7('=', 0, 0, 0, 1, 0, 0, 1), _SEG7('>', 1, 1, 0, 0, 0, 0, 1), _SEG7('?', 1, 1, 1, 0, 0, 1, 0), _SEG7('@', 1, 1, 0, 1, 1, 1, 1),
+#define _MAP_65_90_ASCII_SEG7_ALPHA_UPPR _SEG7('A', 1, 1, 1, 0, 1, 1, 1), _SEG7('B', 1, 1, 1, 1, 1, 1, 1), _SEG7('C', 1, 0, 0, 1, 1, 1, 0), _SEG7('D', 1, 1, 1, 1, 1, 1, 0), _SEG7('E', 1, 0, 0, 1, 1, 1, 1), _SEG7('F', 1, 0, 0, 0, 1, 1, 1), _SEG7('G', 1, 1, 1, 1, 0, 1, 1), _SEG7('H', 0, 1, 1, 0, 1, 1, 1), _SEG7('I', 0, 1, 1, 0, 0, 0, 0), _SEG7('J', 0, 1, 1, 1, 0, 0, 0), _SEG7('K', 0, 1, 1, 0, 1, 1, 1), _SEG7('L', 0, 0, 0, 1, 1, 1, 0), _SEG7('M', 1, 1, 1, 0, 1, 1, 0), _SEG7('N', 1, 1, 1, 0, 1, 1, 0), _SEG7('O', 1, 1, 1, 1, 1, 1, 0), _SEG7('P', 1, 1, 0, 0, 1, 1, 1), _SEG7('Q', 1, 1, 1, 1, 1, 1, 0), _SEG7('R', 1, 1, 1, 0, 1, 1, 1), _SEG7('S', 1, 0, 1, 1, 0, 1, 1), _SEG7('T', 0, 0, 0, 1, 1, 1, 1), _SEG7('U', 0, 1, 1, 1, 1, 1, 0), _SEG7('V', 0, 1, 1, 1, 1, 1, 0), _SEG7('W', 0, 1, 1, 1, 1, 1, 1), _SEG7('X', 0, 1, 1, 0, 1, 1, 1), _SEG7('Y', 0, 1, 1, 0, 0, 1, 1), _SEG7('Z', 1, 1, 0, 1, 1, 0, 1),
+#define _MAP_91_96_ASCII_SEG7_SYMBOL _SEG7('[', 1, 0, 0, 1, 1, 1, 0), _SEG7('\\', 0, 0, 1, 0, 0, 1, 1), _SEG7(']', 1, 1, 1, 1, 0, 0, 0), _SEG7('^', 1, 1, 0, 0, 0, 1, 0), _SEG7('_', 0, 0, 0, 1, 0, 0, 0), _SEG7('`', 0, 1, 0, 0, 0, 0, 0),
+#define _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _SEG7('A', 1, 1, 1, 0, 1, 1, 1), _SEG7('b', 0, 0, 1, 1, 1, 1, 1), _SEG7('c', 0, 0, 0, 1, 1, 0, 1), _SEG7('d', 0, 1, 1, 1, 1, 0, 1), _SEG7('E', 1, 0, 0, 1, 1, 1, 1), _SEG7('F', 1, 0, 0, 0, 1, 1, 1), _SEG7('G', 1, 1, 1, 1, 0, 1, 1), _SEG7('h', 0, 0, 1, 0, 1, 1, 1), _SEG7('i', 0, 0, 1, 0, 0, 0, 0), _SEG7('j', 0, 0, 1, 1, 0, 0, 0), _SEG7('k', 0, 0, 1, 0, 1, 1, 1), _SEG7('L', 0, 0, 0, 1, 1, 1, 0), _SEG7('M', 1, 1, 1, 0, 1, 1, 0), _SEG7('n', 0, 0, 1, 0, 1, 0, 1), _SEG7('o', 0, 0, 1, 1, 1, 0, 1), _SEG7('P', 1, 1, 0, 0, 1, 1, 1), _SEG7('q', 1, 1, 1, 0, 0, 1, 1), _SEG7('r', 0, 0, 0, 0, 1, 0, 1), _SEG7('S', 1, 0, 1, 1, 0, 1, 1), _SEG7('T', 0, 0, 0, 1, 1, 1, 1), _SEG7('u', 0, 0, 1, 1, 1, 0, 0), _SEG7('v', 0, 0, 1, 1, 1, 0, 0), _SEG7('W', 0, 1, 1, 1, 1, 1, 1), _SEG7('X', 0, 1, 1, 0, 1, 1, 1), _SEG7('y', 0, 1, 1, 1, 0, 1, 1), _SEG7('Z', 1, 1, 0, 1, 1, 0, 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _MAP_123_126_ASCII_SEG7_SYMBOL   _SEG7('{',1,0,0,1,1,1,0), _SEG7('|',0,0,0,0,1,1,0), _SEG7('}',1,1,1,1,0,0,0),  _SEG7('~',1,0,0,0,0,0,0),
-#define MAP_ASCII7SEG_ALPHANUM   _MAP_0_32_ASCII_SEG7_NON_PRINTABLE   _MAP_33_47_ASCII_SEG7_SYMBOL   _MAP_48_57_ASCII_SEG7_NUMERIC   _MAP_58_64_ASCII_SEG7_SYMBOL   _MAP_65_90_ASCII_SEG7_ALPHA_UPPR   _MAP_91_96_ASCII_SEG7_SYMBOL   _MAP_97_122_ASCII_SEG7_ALPHA_LOWER   _MAP_123_126_ASCII_SEG7_SYMBOL
-#define MAP_ASCII7SEG_ALPHANUM_LC   _MAP_0_32_ASCII_SEG7_NON_PRINTABLE   _MAP_33_47_ASCII_SEG7_SYMBOL   _MAP_48_57_ASCII_SEG7_NUMERIC   _MAP_58_64_ASCII_SEG7_SYMBOL   _MAP_97_122_ASCII_SEG7_ALPHA_LOWER   _MAP_91_96_ASCII_SEG7_SYMBOL   _MAP_97_122_ASCII_SEG7_ALPHA_LOWER   _MAP_123_126_ASCII_SEG7_SYMBOL
-#define SEG7_DEFAULT_MAP(_name)   SEG7_CONVERSION_MAP(_name,MAP_ASCII7SEG_ALPHANUM)
+#define _MAP_123_126_ASCII_SEG7_SYMBOL _SEG7('{', 1, 0, 0, 1, 1, 1, 0), _SEG7('|', 0, 0, 0, 0, 1, 1, 0), _SEG7('}', 1, 1, 1, 1, 0, 0, 0), _SEG7('~', 1, 0, 0, 0, 0, 0, 0),
+#define MAP_ASCII7SEG_ALPHANUM _MAP_0_32_ASCII_SEG7_NON_PRINTABLE _MAP_33_47_ASCII_SEG7_SYMBOL _MAP_48_57_ASCII_SEG7_NUMERIC _MAP_58_64_ASCII_SEG7_SYMBOL _MAP_65_90_ASCII_SEG7_ALPHA_UPPR _MAP_91_96_ASCII_SEG7_SYMBOL _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _MAP_123_126_ASCII_SEG7_SYMBOL
+#define MAP_ASCII7SEG_ALPHANUM_LC _MAP_0_32_ASCII_SEG7_NON_PRINTABLE _MAP_33_47_ASCII_SEG7_SYMBOL _MAP_48_57_ASCII_SEG7_NUMERIC _MAP_58_64_ASCII_SEG7_SYMBOL _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _MAP_91_96_ASCII_SEG7_SYMBOL _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _MAP_123_126_ASCII_SEG7_SYMBOL
+#define SEG7_DEFAULT_MAP(_name) SEG7_CONVERSION_MAP(_name, MAP_ASCII7SEG_ALPHANUM)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/matroxfb.h b/libc/kernel/uapi/linux/matroxfb.h
index ca833a5..b437086 100644
--- a/libc/kernel/uapi/linux/matroxfb.h
+++ b/libc/kernel/uapi/linux/matroxfb.h
@@ -24,33 +24,33 @@
 #include <linux/videodev2.h>
 #include <linux/fb.h>
 struct matroxioc_output_mode {
- __u32 output;
+  __u32 output;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MATROXFB_OUTPUT_PRIMARY 0x0000
 #define MATROXFB_OUTPUT_SECONDARY 0x0001
 #define MATROXFB_OUTPUT_DFP 0x0002
- __u32 mode;
+  __u32 mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MATROXFB_OUTPUT_MODE_PAL 0x0001
 #define MATROXFB_OUTPUT_MODE_NTSC 0x0002
 #define MATROXFB_OUTPUT_MODE_MONITOR 0x0080
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MATROXFB_SET_OUTPUT_MODE _IOW('n',0xFA,size_t)
-#define MATROXFB_GET_OUTPUT_MODE _IOWR('n',0xFA,size_t)
+#define MATROXFB_SET_OUTPUT_MODE _IOW('n', 0xFA, size_t)
+#define MATROXFB_GET_OUTPUT_MODE _IOWR('n', 0xFA, size_t)
 #define MATROXFB_OUTPUT_CONN_PRIMARY (1 << MATROXFB_OUTPUT_PRIMARY)
 #define MATROXFB_OUTPUT_CONN_SECONDARY (1 << MATROXFB_OUTPUT_SECONDARY)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MATROXFB_OUTPUT_CONN_DFP (1 << MATROXFB_OUTPUT_DFP)
-#define MATROXFB_SET_OUTPUT_CONNECTION _IOW('n',0xF8,size_t)
-#define MATROXFB_GET_OUTPUT_CONNECTION _IOR('n',0xF8,size_t)
-#define MATROXFB_GET_AVAILABLE_OUTPUTS _IOR('n',0xF9,size_t)
+#define MATROXFB_SET_OUTPUT_CONNECTION _IOW('n', 0xF8, size_t)
+#define MATROXFB_GET_OUTPUT_CONNECTION _IOR('n', 0xF8, size_t)
+#define MATROXFB_GET_AVAILABLE_OUTPUTS _IOR('n', 0xF9, size_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MATROXFB_GET_ALL_OUTPUTS _IOR('n',0xFB,size_t)
+#define MATROXFB_GET_ALL_OUTPUTS _IOR('n', 0xFB, size_t)
 enum matroxfb_ctrl_id {
- MATROXFB_CID_TESTOUT = V4L2_CID_PRIVATE_BASE,
- MATROXFB_CID_DEFLICKER,
+  MATROXFB_CID_TESTOUT = V4L2_CID_PRIVATE_BASE,
+  MATROXFB_CID_DEFLICKER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MATROXFB_CID_LAST
+  MATROXFB_CID_LAST
 };
 #endif
diff --git a/libc/kernel/uapi/linux/mdio.h b/libc/kernel/uapi/linux/mdio.h
index 319670e..7766d11 100644
--- a/libc/kernel/uapi/linux/mdio.h
+++ b/libc/kernel/uapi/linux/mdio.h
@@ -272,5 +272,5 @@
 #define MDIO_PHY_ID_PRTAD 0x03e0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MDIO_PHY_ID_DEVAD 0x001f
-#define MDIO_PHY_ID_C45_MASK   (MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD)
+#define MDIO_PHY_ID_C45_MASK (MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD)
 #endif
diff --git a/libc/kernel/uapi/linux/media.h b/libc/kernel/uapi/linux/media.h
index 4ba54aa..5ad1330 100644
--- a/libc/kernel/uapi/linux/media.h
+++ b/libc/kernel/uapi/linux/media.h
@@ -24,16 +24,16 @@
 #include <linux/version.h>
 #define MEDIA_API_VERSION KERNEL_VERSION(0, 1, 0)
 struct media_device_info {
- char driver[16];
+  char driver[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char model[32];
- char serial[40];
- char bus_info[32];
- __u32 media_version;
+  char model[32];
+  char serial[40];
+  char bus_info[32];
+  __u32 media_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 hw_revision;
- __u32 driver_version;
- __u32 reserved[31];
+  __u32 hw_revision;
+  __u32 driver_version;
+  __u32 reserved[31];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
@@ -56,49 +56,49 @@
 #define MEDIA_ENT_FL_DEFAULT (1 << 0)
 struct media_entity_desc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- char name[32];
- __u32 type;
- __u32 revision;
+  __u32 id;
+  char name[32];
+  __u32 type;
+  __u32 revision;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 group_id;
- __u16 pads;
- __u16 links;
+  __u32 flags;
+  __u32 group_id;
+  __u16 pads;
+  __u16 links;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[4];
- union {
- struct {
- __u32 major;
+  __u32 reserved[4];
+  union {
+    struct {
+      __u32 major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 minor;
- } v4l;
- struct {
- __u32 major;
+      __u32 minor;
+    } v4l;
+    struct {
+      __u32 major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 minor;
- } fb;
- struct {
- __u32 card;
+      __u32 minor;
+    } fb;
+    struct {
+      __u32 card;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 device;
- __u32 subdevice;
- } alsa;
- int dvb;
+      __u32 device;
+      __u32 subdevice;
+    } alsa;
+    int dvb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 raw[184];
- };
+    __u8 raw[184];
+  };
 };
 #define MEDIA_PAD_FL_SINK (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MEDIA_PAD_FL_SOURCE (1 << 1)
 #define MEDIA_PAD_FL_MUST_CONNECT (1 << 2)
 struct media_pad_desc {
- __u32 entity;
+  __u32 entity;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 index;
- __u32 flags;
- __u32 reserved[2];
+  __u16 index;
+  __u32 flags;
+  __u32 reserved[2];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MEDIA_LNK_FL_ENABLED (1 << 0)
@@ -106,18 +106,18 @@
 #define MEDIA_LNK_FL_DYNAMIC (1 << 2)
 struct media_link_desc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct media_pad_desc source;
- struct media_pad_desc sink;
- __u32 flags;
- __u32 reserved[2];
+  struct media_pad_desc source;
+  struct media_pad_desc sink;
+  __u32 flags;
+  __u32 reserved[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct media_links_enum {
- __u32 entity;
- struct media_pad_desc __user *pads;
+  __u32 entity;
+  struct media_pad_desc __user * pads;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct media_link_desc __user *links;
- __u32 reserved[4];
+  struct media_link_desc __user * links;
+  __u32 reserved[4];
 };
 #define MEDIA_IOC_DEVICE_INFO _IOWR('|', 0x00, struct media_device_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/mei.h b/libc/kernel/uapi/linux/mei.h
index 1a38e1c..ac8031f 100644
--- a/libc/kernel/uapi/linux/mei.h
+++ b/libc/kernel/uapi/linux/mei.h
@@ -19,20 +19,20 @@
 #ifndef _LINUX_MEI_H
 #define _LINUX_MEI_H
 #include <linux/uuid.h>
-#define IOCTL_MEI_CONNECT_CLIENT   _IOWR('H' , 0x01, struct mei_connect_client_data)
+#define IOCTL_MEI_CONNECT_CLIENT _IOWR('H', 0x01, struct mei_connect_client_data)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mei_client {
- __u32 max_msg_length;
- __u8 protocol_version;
- __u8 reserved[3];
+  __u32 max_msg_length;
+  __u8 protocol_version;
+  __u8 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct mei_connect_client_data {
- union {
- uuid_le in_client_uuid;
+  union {
+    uuid_le in_client_uuid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct mei_client out_client_properties;
- };
+    struct mei_client out_client_properties;
+  };
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/memfd.h b/libc/kernel/uapi/linux/memfd.h
new file mode 100644
index 0000000..2011dab
--- /dev/null
+++ b/libc/kernel/uapi/linux/memfd.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MEMFD_H
+#define _UAPI_LINUX_MEMFD_H
+#define MFD_CLOEXEC 0x0001U
+#define MFD_ALLOW_SEALING 0x0002U
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/mempolicy.h b/libc/kernel/uapi/linux/mempolicy.h
index 70a8a8f..a208f42 100644
--- a/libc/kernel/uapi/linux/mempolicy.h
+++ b/libc/kernel/uapi/linux/mempolicy.h
@@ -21,37 +21,37 @@
 #include <linux/errno.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MPOL_DEFAULT,
- MPOL_PREFERRED,
- MPOL_BIND,
- MPOL_INTERLEAVE,
+  MPOL_DEFAULT,
+  MPOL_PREFERRED,
+  MPOL_BIND,
+  MPOL_INTERLEAVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MPOL_LOCAL,
- MPOL_MAX,
+  MPOL_LOCAL,
+  MPOL_MAX,
 };
 enum mpol_rebind_step {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MPOL_REBIND_ONCE,
- MPOL_REBIND_STEP1,
- MPOL_REBIND_STEP2,
- MPOL_REBIND_NSTEP,
+  MPOL_REBIND_ONCE,
+  MPOL_REBIND_STEP1,
+  MPOL_REBIND_STEP2,
+  MPOL_REBIND_NSTEP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define MPOL_F_STATIC_NODES (1 << 15)
 #define MPOL_F_RELATIVE_NODES (1 << 14)
 #define MPOL_MODE_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MPOL_F_NODE (1<<0)
-#define MPOL_F_ADDR (1<<1)
-#define MPOL_F_MEMS_ALLOWED (1<<2)
-#define MPOL_MF_STRICT (1<<0)
+#define MPOL_F_NODE (1 << 0)
+#define MPOL_F_ADDR (1 << 1)
+#define MPOL_F_MEMS_ALLOWED (1 << 2)
+#define MPOL_MF_STRICT (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MPOL_MF_MOVE (1<<1)
-#define MPOL_MF_MOVE_ALL (1<<2)
-#define MPOL_MF_LAZY (1<<3)
-#define MPOL_MF_INTERNAL (1<<4)
+#define MPOL_MF_MOVE (1 << 1)
+#define MPOL_MF_MOVE_ALL (1 << 2)
+#define MPOL_MF_LAZY (1 << 3)
+#define MPOL_MF_INTERNAL (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MPOL_MF_VALID (MPOL_MF_STRICT |   MPOL_MF_MOVE |   MPOL_MF_MOVE_ALL)
+#define MPOL_MF_VALID (MPOL_MF_STRICT | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)
 #define MPOL_F_SHARED (1 << 0)
 #define MPOL_F_LOCAL (1 << 1)
 #define MPOL_F_REBINDING (1 << 2)
diff --git a/libc/kernel/uapi/linux/meye.h b/libc/kernel/uapi/linux/meye.h
index 733a86a..a23e9fa 100644
--- a/libc/kernel/uapi/linux/meye.h
+++ b/libc/kernel/uapi/linux/meye.h
@@ -19,22 +19,22 @@
 #ifndef _MEYE_H_
 #define _MEYE_H_
 struct meye_params {
- unsigned char subsample;
+  unsigned char subsample;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char quality;
- unsigned char sharpness;
- unsigned char agc;
- unsigned char picture;
+  unsigned char quality;
+  unsigned char sharpness;
+  unsigned char agc;
+  unsigned char picture;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char framerate;
+  unsigned char framerate;
 };
-#define MEYEIOC_G_PARAMS _IOR ('v', BASE_VIDIOC_PRIVATE+0, struct meye_params)
-#define MEYEIOC_S_PARAMS _IOW ('v', BASE_VIDIOC_PRIVATE+1, struct meye_params)
+#define MEYEIOC_G_PARAMS _IOR('v', BASE_VIDIOC_PRIVATE + 0, struct meye_params)
+#define MEYEIOC_S_PARAMS _IOW('v', BASE_VIDIOC_PRIVATE + 1, struct meye_params)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MEYEIOC_QBUF_CAPT _IOW ('v', BASE_VIDIOC_PRIVATE+2, int)
-#define MEYEIOC_SYNC _IOWR('v', BASE_VIDIOC_PRIVATE+3, int)
-#define MEYEIOC_STILLCAPT _IO ('v', BASE_VIDIOC_PRIVATE+4)
-#define MEYEIOC_STILLJCAPT _IOR ('v', BASE_VIDIOC_PRIVATE+5, int)
+#define MEYEIOC_QBUF_CAPT _IOW('v', BASE_VIDIOC_PRIVATE + 2, int)
+#define MEYEIOC_SYNC _IOWR('v', BASE_VIDIOC_PRIVATE + 3, int)
+#define MEYEIOC_STILLCAPT _IO('v', BASE_VIDIOC_PRIVATE + 4)
+#define MEYEIOC_STILLJCAPT _IOR('v', BASE_VIDIOC_PRIVATE + 5, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MEYE_AGC (V4L2_CID_USER_MEYE_BASE + 0)
 #define V4L2_CID_MEYE_PICTURE (V4L2_CID_USER_MEYE_BASE + 1)
diff --git a/libc/kernel/uapi/linux/mic_common.h b/libc/kernel/uapi/linux/mic_common.h
index 30d8308..5a1735c 100644
--- a/libc/kernel/uapi/linux/mic_common.h
+++ b/libc/kernel/uapi/linux/mic_common.h
@@ -19,51 +19,51 @@
 #ifndef __MIC_COMMON_H_
 #define __MIC_COMMON_H_
 #include <linux/virtio_ring.h>
-#define __mic_align(a, x) (((a) + (x) - 1) & ~((x) - 1))
+#define __mic_align(a,x) (((a) + (x) - 1) & ~((x) - 1))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mic_device_desc {
- __s8 type;
- __u8 num_vq;
- __u8 feature_len;
+  __s8 type;
+  __u8 num_vq;
+  __u8 feature_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 config_len;
- __u8 status;
- __le64 config[0];
-} __attribute__ ((aligned(8)));
+  __u8 config_len;
+  __u8 status;
+  __le64 config[0];
+} __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mic_device_ctrl {
- __le64 vdev;
- __u8 config_change;
- __u8 vdev_reset;
+  __le64 vdev;
+  __u8 config_change;
+  __u8 vdev_reset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 guest_ack;
- __u8 host_ack;
- __u8 used_address_updated;
- __s8 c2h_vdev_db;
+  __u8 guest_ack;
+  __u8 host_ack;
+  __u8 used_address_updated;
+  __s8 c2h_vdev_db;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s8 h2c_vdev_db;
-} __attribute__ ((aligned(8)));
+  __s8 h2c_vdev_db;
+} __attribute__((aligned(8)));
 struct mic_bootparam {
- __le32 magic;
+  __le32 magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s8 c2h_shutdown_db;
- __s8 h2c_shutdown_db;
- __s8 h2c_config_db;
- __u8 shutdown_status;
+  __s8 c2h_shutdown_db;
+  __s8 h2c_shutdown_db;
+  __s8 h2c_config_db;
+  __u8 shutdown_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 shutdown_card;
-} __attribute__ ((aligned(8)));
+  __u8 shutdown_card;
+} __attribute__((aligned(8)));
 struct mic_device_page {
- struct mic_bootparam bootparam;
+  struct mic_bootparam bootparam;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct mic_device_desc desc[0];
+  struct mic_device_desc desc[0];
 };
 struct mic_vqconfig {
- __le64 address;
+  __le64 address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 used_address;
- __le16 num;
-} __attribute__ ((aligned(8)));
+  __le64 used_address;
+  __le16 num;
+} __attribute__((aligned(8)));
 #define MIC_VIRTIO_RING_ALIGN 4096
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIC_MAX_VRINGS 4
@@ -72,16 +72,16 @@
 #define MIC_MAX_DESC_BLK_SIZE 256
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _mic_vring_info {
- __u16 avail_idx;
- __le32 magic;
+  __u16 avail_idx;
+  __le32 magic;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mic_vring {
- struct vring vr;
- struct _mic_vring_info *info;
- void *va;
+  struct vring vr;
+  struct _mic_vring_info * info;
+  void * va;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int len;
+  int len;
 };
 #define mic_aligned_desc_size(d) __mic_align(mic_desc_size(d), 8)
 #ifndef INTEL_MIC_CARD
@@ -91,24 +91,24 @@
 #define MIC_MAGIC 0xc0ffee00
 enum mic_states {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIC_OFFLINE = 0,
- MIC_ONLINE,
- MIC_SHUTTING_DOWN,
- MIC_RESET_FAILED,
+  MIC_OFFLINE = 0,
+  MIC_ONLINE,
+  MIC_SHUTTING_DOWN,
+  MIC_RESET_FAILED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIC_SUSPENDING,
- MIC_SUSPENDED,
- MIC_LAST
+  MIC_SUSPENDING,
+  MIC_SUSPENDED,
+  MIC_LAST
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mic_status {
- MIC_NOP = 0,
- MIC_CRASHED,
- MIC_HALTED,
+  MIC_NOP = 0,
+  MIC_CRASHED,
+  MIC_HALTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MIC_POWER_OFF,
- MIC_RESTART,
- MIC_STATUS_LAST
+  MIC_POWER_OFF,
+  MIC_RESTART,
+  MIC_STATUS_LAST
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/mic_ioctl.h b/libc/kernel/uapi/linux/mic_ioctl.h
index 9eb1ad2..83cbf64 100644
--- a/libc/kernel/uapi/linux/mic_ioctl.h
+++ b/libc/kernel/uapi/linux/mic_ioctl.h
@@ -21,12 +21,12 @@
 #include <linux/types.h>
 struct mic_copy_desc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iovec *iov;
- __u32 iovcnt;
- __u8 vr_idx;
- __u8 update_used;
+  struct iovec * iov;
+  __u32 iovcnt;
+  __u8 vr_idx;
+  __u8 update_used;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 out_len;
+  __u32 out_len;
 };
 #define MIC_VIRTIO_ADD_DEVICE _IOWR('s', 1, struct mic_device_desc *)
 #define MIC_VIRTIO_COPY_DESC _IOWR('s', 2, struct mic_copy_desc *)
diff --git a/libc/kernel/uapi/linux/mii.h b/libc/kernel/uapi/linux/mii.h
index d0f940e..7acc234 100644
--- a/libc/kernel/uapi/linux/mii.h
+++ b/libc/kernel/uapi/linux/mii.h
@@ -103,8 +103,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADVERTISE_LPACK 0x4000
 #define ADVERTISE_NPAGE 0x8000
-#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL |   ADVERTISE_CSMA)
-#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL |   ADVERTISE_100HALF | ADVERTISE_100FULL)
+#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | ADVERTISE_CSMA)
+#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | ADVERTISE_100HALF | ADVERTISE_100FULL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LPA_SLCT 0x001f
 #define LPA_10HALF 0x0020
@@ -162,10 +162,10 @@
 #define MII_MMD_CTRL_INCR_ON_WT 0xC000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mii_ioctl_data {
- __u16 phy_id;
- __u16 reg_num;
- __u16 val_in;
+  __u16 phy_id;
+  __u16 reg_num;
+  __u16 val_in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 val_out;
+  __u16 val_out;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/minix_fs.h b/libc/kernel/uapi/linux/minix_fs.h
index 7e674fe..c19d4f6 100644
--- a/libc/kernel/uapi/linux/minix_fs.h
+++ b/libc/kernel/uapi/linux/minix_fs.h
@@ -29,75 +29,75 @@
 #define MINIX_Z_MAP_SLOTS 64
 #define MINIX_VALID_FS 0x0001
 #define MINIX_ERROR_FS 0x0002
-#define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix_inode)))
+#define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE) / (sizeof(struct minix_inode)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct minix_inode {
- __u16 i_mode;
- __u16 i_uid;
- __u32 i_size;
+  __u16 i_mode;
+  __u16 i_uid;
+  __u32 i_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 i_time;
- __u8 i_gid;
- __u8 i_nlinks;
- __u16 i_zone[9];
+  __u32 i_time;
+  __u8 i_gid;
+  __u8 i_nlinks;
+  __u16 i_zone[9];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct minix2_inode {
- __u16 i_mode;
- __u16 i_nlinks;
+  __u16 i_mode;
+  __u16 i_nlinks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 i_uid;
- __u16 i_gid;
- __u32 i_size;
- __u32 i_atime;
+  __u16 i_uid;
+  __u16 i_gid;
+  __u32 i_size;
+  __u32 i_atime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 i_mtime;
- __u32 i_ctime;
- __u32 i_zone[10];
+  __u32 i_mtime;
+  __u32 i_ctime;
+  __u32 i_zone[10];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct minix_super_block {
- __u16 s_ninodes;
- __u16 s_nzones;
- __u16 s_imap_blocks;
+  __u16 s_ninodes;
+  __u16 s_nzones;
+  __u16 s_imap_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 s_zmap_blocks;
- __u16 s_firstdatazone;
- __u16 s_log_zone_size;
- __u32 s_max_size;
+  __u16 s_zmap_blocks;
+  __u16 s_firstdatazone;
+  __u16 s_log_zone_size;
+  __u32 s_max_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 s_magic;
- __u16 s_state;
- __u32 s_zones;
+  __u16 s_magic;
+  __u16 s_state;
+  __u32 s_zones;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct minix3_super_block {
- __u32 s_ninodes;
- __u16 s_pad0;
- __u16 s_imap_blocks;
+  __u32 s_ninodes;
+  __u16 s_pad0;
+  __u16 s_imap_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 s_zmap_blocks;
- __u16 s_firstdatazone;
- __u16 s_log_zone_size;
- __u16 s_pad1;
+  __u16 s_zmap_blocks;
+  __u16 s_firstdatazone;
+  __u16 s_log_zone_size;
+  __u16 s_pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 s_max_size;
- __u32 s_zones;
- __u16 s_magic;
- __u16 s_pad2;
+  __u32 s_max_size;
+  __u32 s_zones;
+  __u16 s_magic;
+  __u16 s_pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 s_blocksize;
- __u8 s_disk_version;
+  __u16 s_blocksize;
+  __u8 s_disk_version;
 };
 struct minix_dir_entry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 inode;
- char name[0];
+  __u16 inode;
+  char name[0];
 };
 struct minix3_dir_entry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 inode;
- char name[0];
+  __u32 inode;
+  char name[0];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/mmc/ioctl.h b/libc/kernel/uapi/linux/mmc/ioctl.h
index 1bd0204..761f1d7 100644
--- a/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -21,25 +21,25 @@
 #include <linux/types.h>
 struct mmc_ioc_cmd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int write_flag;
- int is_acmd;
- __u32 opcode;
- __u32 arg;
+  int write_flag;
+  int is_acmd;
+  __u32 opcode;
+  __u32 arg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 response[4];
- unsigned int flags;
- unsigned int blksz;
- unsigned int blocks;
+  __u32 response[4];
+  unsigned int flags;
+  unsigned int blksz;
+  unsigned int blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int postsleep_min_us;
- unsigned int postsleep_max_us;
- unsigned int data_timeout_ns;
- unsigned int cmd_timeout_ms;
+  unsigned int postsleep_min_us;
+  unsigned int postsleep_max_us;
+  unsigned int data_timeout_ns;
+  unsigned int cmd_timeout_ms;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __pad;
- __u64 data_ptr;
+  __u32 __pad;
+  __u64 data_ptr;
 };
-#define mmc_ioc_cmd_set_data(ic, ptr) ic.data_ptr = (__u64)(unsigned long) ptr
+#define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MAX_BYTES (512L * 256)
diff --git a/libc/kernel/uapi/linux/mpls.h b/libc/kernel/uapi/linux/mpls.h
new file mode 100644
index 0000000..64b4279
--- /dev/null
+++ b/libc/kernel/uapi/linux/mpls.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_MPLS_H
+#define _UAPI_MPLS_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct mpls_label {
+  __be32 entry;
+};
+#define MPLS_LS_LABEL_MASK 0xFFFFF000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MPLS_LS_LABEL_SHIFT 12
+#define MPLS_LS_TC_MASK 0x00000E00
+#define MPLS_LS_TC_SHIFT 9
+#define MPLS_LS_S_MASK 0x00000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MPLS_LS_S_SHIFT 8
+#define MPLS_LS_TTL_MASK 0x000000FF
+#define MPLS_LS_TTL_SHIFT 0
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/mqueue.h b/libc/kernel/uapi/linux/mqueue.h
index 4599cdc..45f3a18 100644
--- a/libc/kernel/uapi/linux/mqueue.h
+++ b/libc/kernel/uapi/linux/mqueue.h
@@ -22,12 +22,12 @@
 #define MQ_BYTES_MAX 819200
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mq_attr {
- __kernel_long_t mq_flags;
- __kernel_long_t mq_maxmsg;
- __kernel_long_t mq_msgsize;
+  __kernel_long_t mq_flags;
+  __kernel_long_t mq_maxmsg;
+  __kernel_long_t mq_msgsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t mq_curmsgs;
- __kernel_long_t __reserved[4];
+  __kernel_long_t mq_curmsgs;
+  __kernel_long_t __reserved[4];
 };
 #define NOTIFY_NONE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/mroute.h b/libc/kernel/uapi/linux/mroute.h
index 550770f..bae5d71 100644
--- a/libc/kernel/uapi/linux/mroute.h
+++ b/libc/kernel/uapi/linux/mroute.h
@@ -23,50 +23,50 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRT_BASE 200
 #define MRT_INIT (MRT_BASE)
-#define MRT_DONE (MRT_BASE+1)
-#define MRT_ADD_VIF (MRT_BASE+2)
+#define MRT_DONE (MRT_BASE + 1)
+#define MRT_ADD_VIF (MRT_BASE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MRT_DEL_VIF (MRT_BASE+3)
-#define MRT_ADD_MFC (MRT_BASE+4)
-#define MRT_DEL_MFC (MRT_BASE+5)
-#define MRT_VERSION (MRT_BASE+6)
+#define MRT_DEL_VIF (MRT_BASE + 3)
+#define MRT_ADD_MFC (MRT_BASE + 4)
+#define MRT_DEL_MFC (MRT_BASE + 5)
+#define MRT_VERSION (MRT_BASE + 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MRT_ASSERT (MRT_BASE+7)
-#define MRT_PIM (MRT_BASE+8)
-#define MRT_TABLE (MRT_BASE+9)
-#define MRT_ADD_MFC_PROXY (MRT_BASE+10)
+#define MRT_ASSERT (MRT_BASE + 7)
+#define MRT_PIM (MRT_BASE + 8)
+#define MRT_TABLE (MRT_BASE + 9)
+#define MRT_ADD_MFC_PROXY (MRT_BASE + 10)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MRT_DEL_MFC_PROXY (MRT_BASE+11)
-#define MRT_MAX (MRT_BASE+11)
+#define MRT_DEL_MFC_PROXY (MRT_BASE + 11)
+#define MRT_MAX (MRT_BASE + 11)
 #define SIOCGETVIFCNT SIOCPROTOPRIVATE
-#define SIOCGETSGCNT (SIOCPROTOPRIVATE+1)
+#define SIOCGETSGCNT (SIOCPROTOPRIVATE + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCGETRPF (SIOCPROTOPRIVATE+2)
+#define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
 #define MAXVIFS 32
 typedef unsigned long vifbitmap_t;
 typedef unsigned short vifi_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ALL_VIFS ((vifi_t)(-1))
-#define VIFM_SET(n,m) ((m)|=(1<<(n)))
-#define VIFM_CLR(n,m) ((m)&=~(1<<(n)))
-#define VIFM_ISSET(n,m) ((m)&(1<<(n)))
+#define ALL_VIFS ((vifi_t) (- 1))
+#define VIFM_SET(n,m) ((m) |= (1 << (n)))
+#define VIFM_CLR(n,m) ((m) &= ~(1 << (n)))
+#define VIFM_ISSET(n,m) ((m) & (1 << (n)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VIFM_CLRALL(m) ((m)=0)
-#define VIFM_COPY(mfrom,mto) ((mto)=(mfrom))
-#define VIFM_SAME(m1,m2) ((m1)==(m2))
+#define VIFM_CLRALL(m) ((m) = 0)
+#define VIFM_COPY(mfrom,mto) ((mto) = (mfrom))
+#define VIFM_SAME(m1,m2) ((m1) == (m2))
 struct vifctl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- vifi_t vifc_vifi;
- unsigned char vifc_flags;
- unsigned char vifc_threshold;
- unsigned int vifc_rate_limit;
+  vifi_t vifc_vifi;
+  unsigned char vifc_flags;
+  unsigned char vifc_threshold;
+  unsigned int vifc_rate_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct in_addr vifc_lcl_addr;
- int vifc_lcl_ifindex;
- };
+  union {
+    struct in_addr vifc_lcl_addr;
+    int vifc_lcl_ifindex;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr vifc_rmt_addr;
+  struct in_addr vifc_rmt_addr;
 };
 #define VIFF_TUNNEL 0x1
 #define VIFF_SRCRT 0x2
@@ -74,46 +74,46 @@
 #define VIFF_REGISTER 0x4
 #define VIFF_USE_IFINDEX 0x8
 struct mfcctl {
- struct in_addr mfcc_origin;
+  struct in_addr mfcc_origin;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr mfcc_mcastgrp;
- vifi_t mfcc_parent;
- unsigned char mfcc_ttls[MAXVIFS];
- unsigned int mfcc_pkt_cnt;
+  struct in_addr mfcc_mcastgrp;
+  vifi_t mfcc_parent;
+  unsigned char mfcc_ttls[MAXVIFS];
+  unsigned int mfcc_pkt_cnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int mfcc_byte_cnt;
- unsigned int mfcc_wrong_if;
- int mfcc_expire;
+  unsigned int mfcc_byte_cnt;
+  unsigned int mfcc_wrong_if;
+  int mfcc_expire;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sioc_sg_req {
- struct in_addr src;
- struct in_addr grp;
- unsigned long pktcnt;
+  struct in_addr src;
+  struct in_addr grp;
+  unsigned long pktcnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long bytecnt;
- unsigned long wrong_if;
+  unsigned long bytecnt;
+  unsigned long wrong_if;
 };
 struct sioc_vif_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- vifi_t vifi;
- unsigned long icount;
- unsigned long ocount;
- unsigned long ibytes;
+  vifi_t vifi;
+  unsigned long icount;
+  unsigned long ocount;
+  unsigned long ibytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long obytes;
+  unsigned long obytes;
 };
 struct igmpmsg {
- __u32 unused1,unused2;
+  __u32 unused1, unused2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char im_msgtype;
- unsigned char im_mbz;
- unsigned char im_vif;
- unsigned char unused3;
+  unsigned char im_msgtype;
+  unsigned char im_mbz;
+  unsigned char im_vif;
+  unsigned char unused3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr im_src,im_dst;
+  struct in_addr im_src, im_dst;
 };
-#define MFC_ASSERT_THRESH (3*HZ)
+#define MFC_ASSERT_THRESH (3 * HZ)
 #define IGMPMSG_NOCACHE 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IGMPMSG_WRONGVIF 2
diff --git a/libc/kernel/uapi/linux/mroute6.h b/libc/kernel/uapi/linux/mroute6.h
index c9f3164..8a3c363 100644
--- a/libc/kernel/uapi/linux/mroute6.h
+++ b/libc/kernel/uapi/linux/mroute6.h
@@ -23,30 +23,30 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRT6_BASE 200
 #define MRT6_INIT (MRT6_BASE)
-#define MRT6_DONE (MRT6_BASE+1)
-#define MRT6_ADD_MIF (MRT6_BASE+2)
+#define MRT6_DONE (MRT6_BASE + 1)
+#define MRT6_ADD_MIF (MRT6_BASE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MRT6_DEL_MIF (MRT6_BASE+3)
-#define MRT6_ADD_MFC (MRT6_BASE+4)
-#define MRT6_DEL_MFC (MRT6_BASE+5)
-#define MRT6_VERSION (MRT6_BASE+6)
+#define MRT6_DEL_MIF (MRT6_BASE + 3)
+#define MRT6_ADD_MFC (MRT6_BASE + 4)
+#define MRT6_DEL_MFC (MRT6_BASE + 5)
+#define MRT6_VERSION (MRT6_BASE + 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MRT6_ASSERT (MRT6_BASE+7)
-#define MRT6_PIM (MRT6_BASE+8)
-#define MRT6_TABLE (MRT6_BASE+9)
-#define MRT6_ADD_MFC_PROXY (MRT6_BASE+10)
+#define MRT6_ASSERT (MRT6_BASE + 7)
+#define MRT6_PIM (MRT6_BASE + 8)
+#define MRT6_TABLE (MRT6_BASE + 9)
+#define MRT6_ADD_MFC_PROXY (MRT6_BASE + 10)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MRT6_DEL_MFC_PROXY (MRT6_BASE+11)
-#define MRT6_MAX (MRT6_BASE+11)
+#define MRT6_DEL_MFC_PROXY (MRT6_BASE + 11)
+#define MRT6_MAX (MRT6_BASE + 11)
 #define SIOCGETMIFCNT_IN6 SIOCPROTOPRIVATE
-#define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE+1)
+#define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCGETRPF (SIOCPROTOPRIVATE+2)
+#define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
 #define MAXMIFS 32
 typedef unsigned long mifbitmap_t;
 typedef unsigned short mifi_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ALL_MIFS ((mifi_t)(-1))
+#define ALL_MIFS ((mifi_t) (- 1))
 #ifndef IF_SETSIZE
 #define IF_SETSIZE 256
 #endif
@@ -58,48 +58,48 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 typedef struct if_set {
- if_mask ifs_bits[DIV_ROUND_UP(IF_SETSIZE, NIFBITS)];
+  if_mask ifs_bits[DIV_ROUND_UP(IF_SETSIZE, NIFBITS)];
 } if_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IF_SET(n, p) ((p)->ifs_bits[(n)/NIFBITS] |= (1 << ((n) % NIFBITS)))
-#define IF_CLR(n, p) ((p)->ifs_bits[(n)/NIFBITS] &= ~(1 << ((n) % NIFBITS)))
-#define IF_ISSET(n, p) ((p)->ifs_bits[(n)/NIFBITS] & (1 << ((n) % NIFBITS)))
-#define IF_COPY(f, t) bcopy(f, t, sizeof(*(f)))
+#define IF_SET(n,p) ((p)->ifs_bits[(n) / NIFBITS] |= (1 << ((n) % NIFBITS)))
+#define IF_CLR(n,p) ((p)->ifs_bits[(n) / NIFBITS] &= ~(1 << ((n) % NIFBITS)))
+#define IF_ISSET(n,p) ((p)->ifs_bits[(n) / NIFBITS] & (1 << ((n) % NIFBITS)))
+#define IF_COPY(f,t) bcopy(f, t, sizeof(* (f)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IF_ZERO(p) bzero(p, sizeof(*(p)))
+#define IF_ZERO(p) bzero(p, sizeof(* (p)))
 struct mif6ctl {
- mifi_t mif6c_mifi;
- unsigned char mif6c_flags;
+  mifi_t mif6c_mifi;
+  unsigned char mif6c_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char vifc_threshold;
- __u16 mif6c_pifi;
- unsigned int vifc_rate_limit;
+  unsigned char vifc_threshold;
+  __u16 mif6c_pifi;
+  unsigned int vifc_rate_limit;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIFF_REGISTER 0x1
 struct mf6cctl {
- struct sockaddr_in6 mf6cc_origin;
- struct sockaddr_in6 mf6cc_mcastgrp;
+  struct sockaddr_in6 mf6cc_origin;
+  struct sockaddr_in6 mf6cc_mcastgrp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mifi_t mf6cc_parent;
- struct if_set mf6cc_ifset;
+  mifi_t mf6cc_parent;
+  struct if_set mf6cc_ifset;
 };
 struct sioc_sg_req6 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_in6 src;
- struct sockaddr_in6 grp;
- unsigned long pktcnt;
- unsigned long bytecnt;
+  struct sockaddr_in6 src;
+  struct sockaddr_in6 grp;
+  unsigned long pktcnt;
+  unsigned long bytecnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long wrong_if;
+  unsigned long wrong_if;
 };
 struct sioc_mif_req6 {
- mifi_t mifi;
+  mifi_t mifi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long icount;
- unsigned long ocount;
- unsigned long ibytes;
- unsigned long obytes;
+  unsigned long icount;
+  unsigned long ocount;
+  unsigned long ibytes;
+  unsigned long obytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct mrt6msg {
@@ -107,12 +107,12 @@
 #define MRT6MSG_WRONGMIF 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRT6MSG_WHOLEPKT 3
- __u8 im6_mbz;
- __u8 im6_msgtype;
- __u16 im6_mif;
+  __u8 im6_mbz;
+  __u8 im6_msgtype;
+  __u16 im6_mif;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 im6_pad;
- struct in6_addr im6_src, im6_dst;
+  __u32 im6_pad;
+  struct in6_addr im6_src, im6_dst;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/msdos_fs.h b/libc/kernel/uapi/linux/msdos_fs.h
index f1190ad..baa1850 100644
--- a/libc/kernel/uapi/linux/msdos_fs.h
+++ b/libc/kernel/uapi/linux/msdos_fs.h
@@ -57,21 +57,21 @@
 #define CASE_LOWER_EXT 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DELETED_FLAG 0xe5
-#define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG)
+#define IS_FREE(n) (! * (n) || * (n) == DELETED_FLAG)
 #define FAT_LFN_LEN 255
 #define MSDOS_NAME 11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSDOS_SLOTS 21
 #define MSDOS_DOT ".          "
 #define MSDOS_DOTDOT "..         "
-#define FAT_FIRST_ENT(s, x) ((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 :   MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x))
+#define FAT_FIRST_ENT(s,x) ((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 : MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAT_START_ENT 2
 #define MAX_FAT12 0xFF4
 #define MAX_FAT16 0xFFF4
 #define MAX_FAT32 0x0FFFFFF6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MAX_FAT(s) (MSDOS_SB(s)->fat_bits == 32 ? MAX_FAT32 :   MSDOS_SB(s)->fat_bits == 16 ? MAX_FAT16 : MAX_FAT12)
+#define MAX_FAT(s) (MSDOS_SB(s)->fat_bits == 32 ? MAX_FAT32 : MSDOS_SB(s)->fat_bits == 16 ? MAX_FAT16 : MAX_FAT12)
 #define BAD_FAT12 0xFF7
 #define BAD_FAT16 0xFFF7
 #define BAD_FAT32 0x0FFFFFF7
@@ -86,14 +86,14 @@
 #define FAT_FSINFO_SIG1 0x41615252
 #define FAT_FSINFO_SIG2 0x61417272
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IS_FSINFO(x) (le32_to_cpu((x)->signature1) == FAT_FSINFO_SIG1   && le32_to_cpu((x)->signature2) == FAT_FSINFO_SIG2)
+#define IS_FSINFO(x) (le32_to_cpu((x)->signature1) == FAT_FSINFO_SIG1 && le32_to_cpu((x)->signature2) == FAT_FSINFO_SIG2)
 #define FAT_STATE_DIRTY 0x01
 struct __fat_dirent {
- long d_ino;
+  long d_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_off_t d_off;
- unsigned short d_reclen;
- char d_name[256];
+  __kernel_off_t d_off;
+  unsigned short d_reclen;
+  char d_name[256];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct __fat_dirent[2])
@@ -103,92 +103,92 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAT_IOCTL_GET_VOLUME_ID _IOR('r', 0x13, __u32)
 struct fat_boot_sector {
- __u8 ignored[3];
- __u8 system_id[8];
+  __u8 ignored[3];
+  __u8 system_id[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sector_size[2];
- __u8 sec_per_clus;
- __le16 reserved;
- __u8 fats;
+  __u8 sector_size[2];
+  __u8 sec_per_clus;
+  __le16 reserved;
+  __u8 fats;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dir_entries[2];
- __u8 sectors[2];
- __u8 media;
- __le16 fat_length;
+  __u8 dir_entries[2];
+  __u8 sectors[2];
+  __u8 media;
+  __le16 fat_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 secs_track;
- __le16 heads;
- __le32 hidden;
- __le32 total_sect;
+  __le16 secs_track;
+  __le16 heads;
+  __le32 hidden;
+  __le32 total_sect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- __u8 drive_number;
- __u8 state;
+  union {
+    struct {
+      __u8 drive_number;
+      __u8 state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 signature;
- __u8 vol_id[4];
- __u8 vol_label[11];
- __u8 fs_type[8];
+      __u8 signature;
+      __u8 vol_id[4];
+      __u8 vol_label[11];
+      __u8 fs_type[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } fat16;
- struct {
- __le32 length;
- __le16 flags;
+    } fat16;
+    struct {
+      __le32 length;
+      __le16 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 version[2];
- __le32 root_cluster;
- __le16 info_sector;
- __le16 backup_boot;
+      __u8 version[2];
+      __le32 root_cluster;
+      __le16 info_sector;
+      __le16 backup_boot;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 reserved2[6];
- __u8 drive_number;
- __u8 state;
- __u8 signature;
+      __le16 reserved2[6];
+      __u8 drive_number;
+      __u8 state;
+      __u8 signature;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 vol_id[4];
- __u8 vol_label[11];
- __u8 fs_type[8];
- } fat32;
+      __u8 vol_id[4];
+      __u8 vol_label[11];
+      __u8 fs_type[8];
+    } fat32;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+  };
 };
 struct fat_boot_fsinfo {
- __le32 signature1;
+  __le32 signature1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 reserved1[120];
- __le32 signature2;
- __le32 free_clusters;
- __le32 next_cluster;
+  __le32 reserved1[120];
+  __le32 signature2;
+  __le32 free_clusters;
+  __le32 next_cluster;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 reserved2[4];
+  __le32 reserved2[4];
 };
 struct msdos_dir_entry {
- __u8 name[MSDOS_NAME];
+  __u8 name[MSDOS_NAME];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 attr;
- __u8 lcase;
- __u8 ctime_cs;
- __le16 ctime;
+  __u8 attr;
+  __u8 lcase;
+  __u8 ctime_cs;
+  __le16 ctime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 cdate;
- __le16 adate;
- __le16 starthi;
- __le16 time,date,start;
+  __le16 cdate;
+  __le16 adate;
+  __le16 starthi;
+  __le16 time, date, start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 size;
+  __le32 size;
 };
 struct msdos_dir_slot {
- __u8 id;
+  __u8 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 name0_4[10];
- __u8 attr;
- __u8 reserved;
- __u8 alias_checksum;
+  __u8 name0_4[10];
+  __u8 attr;
+  __u8 reserved;
+  __u8 alias_checksum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 name5_10[12];
- __le16 start;
- __u8 name11_12[4];
+  __u8 name5_10[12];
+  __le16 start;
+  __u8 name11_12[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/msg.h b/libc/kernel/uapi/linux/msg.h
index 8d7c606..ab94ef6 100644
--- a/libc/kernel/uapi/linux/msg.h
+++ b/libc/kernel/uapi/linux/msg.h
@@ -27,41 +27,41 @@
 #define MSG_COPY 040000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msqid_ds {
- struct ipc_perm msg_perm;
- struct msg *msg_first;
- struct msg *msg_last;
+  struct ipc_perm msg_perm;
+  struct msg * msg_first;
+  struct msg * msg_last;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t msg_stime;
- __kernel_time_t msg_rtime;
- __kernel_time_t msg_ctime;
- unsigned long msg_lcbytes;
+  __kernel_time_t msg_stime;
+  __kernel_time_t msg_rtime;
+  __kernel_time_t msg_ctime;
+  unsigned long msg_lcbytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long msg_lqbytes;
- unsigned short msg_cbytes;
- unsigned short msg_qnum;
- unsigned short msg_qbytes;
+  unsigned long msg_lqbytes;
+  unsigned short msg_cbytes;
+  unsigned short msg_qnum;
+  unsigned short msg_qbytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ipc_pid_t msg_lspid;
- __kernel_ipc_pid_t msg_lrpid;
+  __kernel_ipc_pid_t msg_lspid;
+  __kernel_ipc_pid_t msg_lrpid;
 };
 #include <asm/msgbuf.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msgbuf {
- __kernel_long_t mtype;
- char mtext[1];
+  __kernel_long_t mtype;
+  char mtext[1];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msginfo {
- int msgpool;
- int msgmap;
- int msgmax;
+  int msgpool;
+  int msgmap;
+  int msgmax;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int msgmnb;
- int msgmni;
- int msgssz;
- int msgtql;
+  int msgmnb;
+  int msgmni;
+  int msgssz;
+  int msgtql;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short msgseg;
+  unsigned short msgseg;
 };
 #define MSG_MEM_SCALE 32
 #define MSGMNI 16
diff --git a/libc/kernel/uapi/linux/mtio.h b/libc/kernel/uapi/linux/mtio.h
index b4bebf9..9e057d5 100644
--- a/libc/kernel/uapi/linux/mtio.h
+++ b/libc/kernel/uapi/linux/mtio.h
@@ -22,8 +22,8 @@
 #include <linux/ioctl.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtop {
- short mt_op;
- int mt_count;
+  short mt_op;
+  int mt_count;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTRESET 0
@@ -68,15 +68,15 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTWEOFI 35
 struct mtget {
- long mt_type;
- long mt_resid;
+  long mt_type;
+  long mt_resid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long mt_dsreg;
- long mt_gstat;
- long mt_erreg;
- __kernel_daddr_t mt_fileno;
+  long mt_dsreg;
+  long mt_gstat;
+  long mt_erreg;
+  __kernel_daddr_t mt_fileno;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_daddr_t mt_blkno;
+  __kernel_daddr_t mt_blkno;
 };
 #define MT_ISUNKNOWN 0x01
 #define MT_ISQIC02 0x02
@@ -106,7 +106,7 @@
 #define MT_ISFTAPE_FLAG 0x800000
 struct mtpos {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long mt_blkno;
+  long mt_blkno;
 };
 #define MTIOCTOP _IOW('m', 1, struct mtop)
 #define MTIOCGET _IOR('m', 2, struct mtget)
diff --git a/libc/kernel/uapi/linux/n_r3964.h b/libc/kernel/uapi/linux/n_r3964.h
index e1cff31..c922acf 100644
--- a/libc/kernel/uapi/linux/n_r3964.h
+++ b/libc/kernel/uapi/linux/n_r3964.h
@@ -32,18 +32,22 @@
 #define R3964_SIG_NONE 0x0000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R3964_USE_SIGIO 0x1000
-enum {R3964_MSG_ACK=1, R3964_MSG_DATA };
+enum {
+  R3964_MSG_ACK = 1,
+  R3964_MSG_DATA
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define R3964_MAX_MSG_COUNT 32
 #define R3964_OK 0
+#define R3964_TX_FAIL - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define R3964_TX_FAIL -1
-#define R3964_OVERFLOW -2
+#define R3964_OVERFLOW - 2
 struct r3964_client_message {
- int msg_id;
+  int msg_id;
+  int arg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int arg;
- int error_code;
+  int error_code;
 };
 #define R3964_MTU 256
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nbd.h b/libc/kernel/uapi/linux/nbd.h
index 53736e9..588fbd8 100644
--- a/libc/kernel/uapi/linux/nbd.h
+++ b/libc/kernel/uapi/linux/nbd.h
@@ -19,27 +19,27 @@
 #ifndef _UAPILINUX_NBD_H
 #define _UAPILINUX_NBD_H
 #include <linux/types.h>
-#define NBD_SET_SOCK _IO( 0xab, 0 )
+#define NBD_SET_SOCK _IO(0xab, 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NBD_SET_BLKSIZE _IO( 0xab, 1 )
-#define NBD_SET_SIZE _IO( 0xab, 2 )
-#define NBD_DO_IT _IO( 0xab, 3 )
-#define NBD_CLEAR_SOCK _IO( 0xab, 4 )
+#define NBD_SET_BLKSIZE _IO(0xab, 1)
+#define NBD_SET_SIZE _IO(0xab, 2)
+#define NBD_DO_IT _IO(0xab, 3)
+#define NBD_CLEAR_SOCK _IO(0xab, 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NBD_CLEAR_QUE _IO( 0xab, 5 )
-#define NBD_PRINT_DEBUG _IO( 0xab, 6 )
-#define NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 )
-#define NBD_DISCONNECT _IO( 0xab, 8 )
+#define NBD_CLEAR_QUE _IO(0xab, 5)
+#define NBD_PRINT_DEBUG _IO(0xab, 6)
+#define NBD_SET_SIZE_BLOCKS _IO(0xab, 7)
+#define NBD_DISCONNECT _IO(0xab, 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NBD_SET_TIMEOUT _IO( 0xab, 9 )
-#define NBD_SET_FLAGS _IO( 0xab, 10)
+#define NBD_SET_TIMEOUT _IO(0xab, 9)
+#define NBD_SET_FLAGS _IO(0xab, 10)
 enum {
- NBD_CMD_READ = 0,
+  NBD_CMD_READ = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NBD_CMD_WRITE = 1,
- NBD_CMD_DISC = 2,
- NBD_CMD_FLUSH = 3,
- NBD_CMD_TRIM = 4
+  NBD_CMD_WRITE = 1,
+  NBD_CMD_DISC = 2,
+  NBD_CMD_FLUSH = 3,
+  NBD_CMD_TRIM = 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NBD_FLAG_HAS_FLAGS (1 << 0)
@@ -52,18 +52,18 @@
 #define NBD_REPLY_MAGIC 0x67446698
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nbd_request {
- __be32 magic;
- __be32 type;
- char handle[8];
+  __be32 magic;
+  __be32 type;
+  char handle[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 from;
- __be32 len;
+  __be64 from;
+  __be32 len;
 } __attribute__((packed));
 struct nbd_reply {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 magic;
- __be32 error;
- char handle[8];
+  __be32 magic;
+  __be32 error;
+  char handle[8];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/ncp.h b/libc/kernel/uapi/linux/ncp.h
index e2cd7d4..b87cdba 100644
--- a/libc/kernel/uapi/linux/ncp.h
+++ b/libc/kernel/uapi/linux/ncp.h
@@ -27,14 +27,14 @@
 #define NCP_DEALLOC_SLOT_REQUEST (0x5555)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_request_header {
- __u16 type;
- __u8 sequence;
- __u8 conn_low;
+  __u16 type;
+  __u8 sequence;
+  __u8 conn_low;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 task;
- __u8 conn_high;
- __u8 function;
- __u8 data[0];
+  __u8 task;
+  __u8 conn_high;
+  __u8 function;
+  __u8 data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 #define NCP_REPLY (0x3333)
@@ -42,31 +42,31 @@
 #define NCP_POSITIVE_ACK (0x9999)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_reply_header {
- __u16 type;
- __u8 sequence;
- __u8 conn_low;
+  __u16 type;
+  __u8 sequence;
+  __u8 conn_low;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 task;
- __u8 conn_high;
- __u8 completion_code;
- __u8 connection_state;
+  __u8 task;
+  __u8 conn_high;
+  __u8 completion_code;
+  __u8 connection_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[0];
+  __u8 data[0];
 } __attribute__((packed));
 #define NCP_VOLNAME_LEN (16)
 #define NCP_NUMBER_OF_VOLUMES (256)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_volume_info {
- __u32 total_blocks;
- __u32 free_blocks;
- __u32 purgeable_blocks;
+  __u32 total_blocks;
+  __u32 free_blocks;
+  __u32 purgeable_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 not_yet_purgeable_blocks;
- __u32 total_dir_entries;
- __u32 available_dir_entries;
- __u8 sectors_per_block;
+  __u32 not_yet_purgeable_blocks;
+  __u32 total_dir_entries;
+  __u32 available_dir_entries;
+  __u8 sectors_per_block;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char volume_name[NCP_VOLNAME_LEN + 1];
+  char volume_name[NCP_VOLNAME_LEN + 1];
 };
 #define AR_READ (cpu_to_le16(1))
 #define AR_WRITE (cpu_to_le16(2))
@@ -133,43 +133,43 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 struct nw_nfs_info {
- __u32 mode;
- __u32 rdev;
+  __u32 mode;
+  __u32 rdev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct nw_info_struct {
- __u32 spaceAlloc;
- __le32 attributes;
+  __u32 spaceAlloc;
+  __le32 attributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flags;
- __le32 dataStreamSize;
- __le32 totalStreamSize;
- __u16 numberOfStreams;
+  __u16 flags;
+  __le32 dataStreamSize;
+  __le32 totalStreamSize;
+  __u16 numberOfStreams;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 creationTime;
- __le16 creationDate;
- __u32 creatorID;
- __le16 modifyTime;
+  __le16 creationTime;
+  __le16 creationDate;
+  __u32 creatorID;
+  __le16 modifyTime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 modifyDate;
- __u32 modifierID;
- __le16 lastAccessDate;
- __u16 archiveTime;
+  __le16 modifyDate;
+  __u32 modifierID;
+  __le16 lastAccessDate;
+  __u16 archiveTime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 archiveDate;
- __u32 archiverID;
- __u16 inheritedRightsMask;
- __le32 dirEntNum;
+  __u16 archiveDate;
+  __u32 archiverID;
+  __u16 inheritedRightsMask;
+  __le32 dirEntNum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 DosDirNum;
- __u32 volNumber;
- __u32 EADataSize;
- __u32 EAKeyCount;
+  __le32 DosDirNum;
+  __u32 volNumber;
+  __u32 EADataSize;
+  __u32 EAKeyCount;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 EAKeySize;
- __u32 NSCreator;
- __u8 nameLen;
- __u8 entryName[256];
+  __u32 EAKeySize;
+  __u32 NSCreator;
+  __u8 nameLen;
+  __u8 entryName[256];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 #define DM_ATTRIBUTES (cpu_to_le32(0x02))
@@ -189,30 +189,30 @@
 #define DM_INHERITED_RIGHTS_MASK (cpu_to_le32(0x1000))
 #define DM_MAXIMUM_SPACE (cpu_to_le32(0x2000))
 struct nw_modify_dos_info {
- __le32 attributes;
+  __le32 attributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 creationDate;
- __le16 creationTime;
- __u32 creatorID;
- __le16 modifyDate;
+  __le16 creationDate;
+  __le16 creationTime;
+  __u32 creatorID;
+  __le16 modifyDate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 modifyTime;
- __u32 modifierID;
- __u16 archiveDate;
- __u16 archiveTime;
+  __le16 modifyTime;
+  __u32 modifierID;
+  __u16 archiveDate;
+  __u16 archiveTime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 archiverID;
- __le16 lastAccessDate;
- __u16 inheritanceGrantMask;
- __u16 inheritanceRevokeMask;
+  __u32 archiverID;
+  __le16 lastAccessDate;
+  __u16 inheritanceGrantMask;
+  __u16 inheritanceRevokeMask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 maximumSpace;
+  __u32 maximumSpace;
 } __attribute__((packed));
 struct nw_search_sequence {
- __u8 volNumber;
+  __u8 volNumber;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dirBase;
- __u32 sequence;
+  __u32 dirBase;
+  __u32 sequence;
 } __attribute__((packed));
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ncp_fs.h b/libc/kernel/uapi/linux/ncp_fs.h
index 8792144..b4cea13 100644
--- a/libc/kernel/uapi/linux/ncp_fs.h
+++ b/libc/kernel/uapi/linux/ncp_fs.h
@@ -27,122 +27,114 @@
 #include <linux/ncp_no.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_ioctl_request {
- unsigned int function;
- unsigned int size;
- char __user *data;
+  unsigned int function;
+  unsigned int size;
+  char __user * data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ncp_fs_info {
- int version;
- struct sockaddr_ipx addr;
+  int version;
+  struct sockaddr_ipx addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_uid_t mounted_uid;
- int connection;
- int buffer_size;
- int volume_number;
+  __kernel_uid_t mounted_uid;
+  int connection;
+  int buffer_size;
+  int volume_number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 directory_id;
+  __le32 directory_id;
 };
 struct ncp_fs_info_v2 {
- int version;
+  int version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long mounted_uid;
- unsigned int connection;
- unsigned int buffer_size;
- unsigned int volume_number;
+  unsigned long mounted_uid;
+  unsigned int connection;
+  unsigned int buffer_size;
+  unsigned int volume_number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 directory_id;
- __u32 dummy1;
- __u32 dummy2;
- __u32 dummy3;
+  __le32 directory_id;
+  __u32 dummy1;
+  __u32 dummy2;
+  __u32 dummy3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-struct ncp_sign_init
-{
- char sign_root[8];
+struct ncp_sign_init {
+  char sign_root[8];
+  char sign_last[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char sign_last[16];
 };
-struct ncp_lock_ioctl
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ncp_lock_ioctl {
 #define NCP_LOCK_LOG 0
 #define NCP_LOCK_SH 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_LOCK_EX 2
 #define NCP_LOCK_CLEAR 256
+  int cmd;
+  int origin;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cmd;
- int origin;
- unsigned int offset;
- unsigned int length;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int offset;
+  unsigned int length;
 #define NCP_LOCK_DEFAULT_TIMEOUT 18
 #define NCP_LOCK_MAX_TIMEOUT 180
- int timeout;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct ncp_setroot_ioctl
-{
- int volNumber;
- int namespace;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 dirEntNum;
+  int timeout;
 };
-struct ncp_objectname_ioctl
-{
+struct ncp_setroot_ioctl {
+  int volNumber;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int namespace;
+  __le32 dirEntNum;
+};
+struct ncp_objectname_ioctl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_AUTH_NONE 0x00
 #define NCP_AUTH_BIND 0x31
 #define NCP_AUTH_NDS 0x32
- int auth_type;
+  int auth_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t object_name_len;
- void __user * object_name;
+  size_t object_name_len;
+  void __user * object_name;
 };
-struct ncp_privatedata_ioctl
+struct ncp_privatedata_ioctl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- size_t len;
- void __user * data;
+  size_t len;
+  void __user * data;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOCSNAME_LEN 20
-struct ncp_nls_ioctl
-{
- unsigned char codepage[NCP_IOCSNAME_LEN+1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char iocharset[NCP_IOCSNAME_LEN+1];
+struct ncp_nls_ioctl {
+  unsigned char codepage[NCP_IOCSNAME_LEN + 1];
+  unsigned char iocharset[NCP_IOCSNAME_LEN + 1];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_NCPREQUEST _IOR('n', 1, struct ncp_ioctl_request)
 #define NCP_IOC_GETMOUNTUID _IOW('n', 2, __kernel_old_uid_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_GETMOUNTUID2 _IOW('n', 2, unsigned long)
 #define NCP_IOC_CONN_LOGGED_IN _IO('n', 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_GET_FS_INFO_VERSION (1)
 #define NCP_IOC_GET_FS_INFO _IOWR('n', 4, struct ncp_fs_info)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_GET_FS_INFO_VERSION_V2 (2)
 #define NCP_IOC_GET_FS_INFO_V2 _IOWR('n', 4, struct ncp_fs_info_v2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_SIGN_INIT _IOR('n', 5, struct ncp_sign_init)
 #define NCP_IOC_SIGN_WANTED _IOR('n', 6, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_SET_SIGN_WANTED _IOW('n', 6, int)
 #define NCP_IOC_LOCKUNLOCK _IOR('n', 7, struct ncp_lock_ioctl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_GETROOT _IOW('n', 8, struct ncp_setroot_ioctl)
 #define NCP_IOC_SETROOT _IOR('n', 8, struct ncp_setroot_ioctl)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_GETOBJECTNAME _IOWR('n', 9, struct ncp_objectname_ioctl)
 #define NCP_IOC_SETOBJECTNAME _IOR('n', 9, struct ncp_objectname_ioctl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_GETPRIVATEDATA _IOWR('n', 10, struct ncp_privatedata_ioctl)
 #define NCP_IOC_SETPRIVATEDATA _IOR('n', 10, struct ncp_privatedata_ioctl)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_GETCHARSETS _IOWR('n', 11, struct ncp_nls_ioctl)
 #define NCP_IOC_SETCHARSETS _IOR('n', 11, struct ncp_nls_ioctl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_IOC_GETDENTRYTTL _IOW('n', 12, __u32)
 #define NCP_IOC_SETDENTRYTTL _IOR('n', 12, __u32)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_PACKET_SIZE 4070
 #define NCP_MAXPATHLEN 255
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_MAXNAMELEN 14
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ncp_mount.h b/libc/kernel/uapi/linux/ncp_mount.h
index ee3e84f..061fc9c 100644
--- a/libc/kernel/uapi/linux/ncp_mount.h
+++ b/libc/kernel/uapi/linux/ncp_mount.h
@@ -33,38 +33,38 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_MOUNT_NFS_EXTRAS 0x0080
 struct ncp_mount_data {
- int version;
- unsigned int ncp_fd;
+  int version;
+  unsigned int ncp_fd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_uid_t mounted_uid;
- __kernel_pid_t wdog_pid;
- unsigned char mounted_vol[NCP_VOLNAME_LEN + 1];
- unsigned int time_out;
+  __kernel_uid_t mounted_uid;
+  __kernel_pid_t wdog_pid;
+  unsigned char mounted_vol[NCP_VOLNAME_LEN + 1];
+  unsigned int time_out;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int retry_count;
- unsigned int flags;
- __kernel_uid_t uid;
- __kernel_gid_t gid;
+  unsigned int retry_count;
+  unsigned int flags;
+  __kernel_uid_t uid;
+  __kernel_gid_t gid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_mode_t file_mode;
- __kernel_mode_t dir_mode;
+  __kernel_mode_t file_mode;
+  __kernel_mode_t dir_mode;
 };
 #define NCP_MOUNT_VERSION_V4 (4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_mount_data_v4 {
- int version;
- unsigned long flags;
- unsigned long mounted_uid;
+  int version;
+  unsigned long flags;
+  unsigned long mounted_uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long wdog_pid;
- unsigned int ncp_fd;
- unsigned int time_out;
- unsigned int retry_count;
+  long wdog_pid;
+  unsigned int ncp_fd;
+  unsigned int time_out;
+  unsigned int retry_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long uid;
- unsigned long gid;
- unsigned long file_mode;
- unsigned long dir_mode;
+  unsigned long uid;
+  unsigned long gid;
+  unsigned long file_mode;
+  unsigned long dir_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NCP_MOUNT_VERSION_V5 (5)
diff --git a/libc/kernel/uapi/linux/ncp_no.h b/libc/kernel/uapi/linux/ncp_no.h
index 9669e88..1751413 100644
--- a/libc/kernel/uapi/linux/ncp_no.h
+++ b/libc/kernel/uapi/linux/ncp_no.h
@@ -27,12 +27,12 @@
 #define aARCH (__cpu_to_le32(0x20))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define aSHARED (__cpu_to_le32(0x80))
-#define aDONTSUBALLOCATE (__cpu_to_le32(1L<<11))
-#define aTRANSACTIONAL (__cpu_to_le32(1L<<12))
-#define aPURGE (__cpu_to_le32(1L<<16))
+#define aDONTSUBALLOCATE (__cpu_to_le32(1L << 11))
+#define aTRANSACTIONAL (__cpu_to_le32(1L << 12))
+#define aPURGE (__cpu_to_le32(1L << 16))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define aRENAMEINHIBIT (__cpu_to_le32(1L<<17))
-#define aDELETEINHIBIT (__cpu_to_le32(1L<<18))
-#define aDONTCOMPRESS (__cpu_to_le32(1L<<27))
+#define aRENAMEINHIBIT (__cpu_to_le32(1L << 17))
+#define aDELETEINHIBIT (__cpu_to_le32(1L << 18))
+#define aDONTCOMPRESS (__cpu_to_le32(1L << 27))
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index d84de0c..c73c7f4 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -22,133 +22,134 @@
 #include <linux/netlink.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ndmsg {
- __u8 ndm_family;
- __u8 ndm_pad1;
- __u16 ndm_pad2;
+  __u8 ndm_family;
+  __u8 ndm_pad1;
+  __u16 ndm_pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 ndm_ifindex;
- __u16 ndm_state;
- __u8 ndm_flags;
- __u8 ndm_type;
+  __s32 ndm_ifindex;
+  __u16 ndm_state;
+  __u8 ndm_flags;
+  __u8 ndm_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- NDA_UNSPEC,
- NDA_DST,
+  NDA_UNSPEC,
+  NDA_DST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDA_LLADDR,
- NDA_CACHEINFO,
- NDA_PROBES,
- NDA_VLAN,
+  NDA_LLADDR,
+  NDA_CACHEINFO,
+  NDA_PROBES,
+  NDA_VLAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDA_PORT,
- NDA_VNI,
- NDA_IFINDEX,
- __NDA_MAX
+  NDA_PORT,
+  NDA_VNI,
+  NDA_IFINDEX,
+  NDA_MASTER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
 #define NTF_USE 0x01
-#define NTF_PROXY 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NTF_PROXY 0x08
 #define NTF_ROUTER 0x80
 #define NTF_SELF 0x02
 #define NTF_MASTER 0x04
-#define NUD_INCOMPLETE 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NUD_INCOMPLETE 0x01
 #define NUD_REACHABLE 0x02
 #define NUD_STALE 0x04
 #define NUD_DELAY 0x08
-#define NUD_PROBE 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NUD_PROBE 0x10
 #define NUD_FAILED 0x20
 #define NUD_NOARP 0x40
 #define NUD_PERMANENT 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NUD_NONE 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nda_cacheinfo {
- __u32 ndm_confirmed;
- __u32 ndm_used;
- __u32 ndm_updated;
+  __u32 ndm_confirmed;
+  __u32 ndm_used;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ndm_refcnt;
+  __u32 ndm_updated;
+  __u32 ndm_refcnt;
 };
 struct ndt_stats {
- __u64 ndts_allocs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ndts_destroys;
- __u64 ndts_hash_grows;
- __u64 ndts_res_failed;
- __u64 ndts_lookups;
+  __u64 ndts_allocs;
+  __u64 ndts_destroys;
+  __u64 ndts_hash_grows;
+  __u64 ndts_res_failed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ndts_hits;
- __u64 ndts_rcv_probes_mcast;
- __u64 ndts_rcv_probes_ucast;
- __u64 ndts_periodic_gc_runs;
+  __u64 ndts_lookups;
+  __u64 ndts_hits;
+  __u64 ndts_rcv_probes_mcast;
+  __u64 ndts_rcv_probes_ucast;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ndts_forced_gc_runs;
+  __u64 ndts_periodic_gc_runs;
+  __u64 ndts_forced_gc_runs;
 };
 enum {
- NDTPA_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDTPA_IFINDEX,
- NDTPA_REFCNT,
- NDTPA_REACHABLE_TIME,
- NDTPA_BASE_REACHABLE_TIME,
+  NDTPA_UNSPEC,
+  NDTPA_IFINDEX,
+  NDTPA_REFCNT,
+  NDTPA_REACHABLE_TIME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDTPA_RETRANS_TIME,
- NDTPA_GC_STALETIME,
- NDTPA_DELAY_PROBE_TIME,
- NDTPA_QUEUE_LEN,
+  NDTPA_BASE_REACHABLE_TIME,
+  NDTPA_RETRANS_TIME,
+  NDTPA_GC_STALETIME,
+  NDTPA_DELAY_PROBE_TIME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDTPA_APP_PROBES,
- NDTPA_UCAST_PROBES,
- NDTPA_MCAST_PROBES,
- NDTPA_ANYCAST_DELAY,
+  NDTPA_QUEUE_LEN,
+  NDTPA_APP_PROBES,
+  NDTPA_UCAST_PROBES,
+  NDTPA_MCAST_PROBES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDTPA_PROXY_DELAY,
- NDTPA_PROXY_QLEN,
- NDTPA_LOCKTIME,
- NDTPA_QUEUE_LENBYTES,
+  NDTPA_ANYCAST_DELAY,
+  NDTPA_PROXY_DELAY,
+  NDTPA_PROXY_QLEN,
+  NDTPA_LOCKTIME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NDTPA_MAX
+  NDTPA_QUEUE_LENBYTES,
+  __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ndtmsg {
+  __u8 ndtm_family;
+  __u8 ndtm_pad1;
+  __u16 ndtm_pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ndtm_family;
- __u8 ndtm_pad1;
- __u16 ndtm_pad2;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ndt_config {
- __u16 ndtc_key_len;
- __u16 ndtc_entry_size;
- __u32 ndtc_entries;
+  __u16 ndtc_key_len;
+  __u16 ndtc_entry_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ndtc_last_flush;
- __u32 ndtc_last_rand;
- __u32 ndtc_hash_rnd;
- __u32 ndtc_hash_mask;
+  __u32 ndtc_entries;
+  __u32 ndtc_last_flush;
+  __u32 ndtc_last_rand;
+  __u32 ndtc_hash_rnd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ndtc_hash_chain_gc;
- __u32 ndtc_proxy_qlen;
+  __u32 ndtc_hash_mask;
+  __u32 ndtc_hash_chain_gc;
+  __u32 ndtc_proxy_qlen;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
+  NDTA_UNSPEC,
+  NDTA_NAME,
+  NDTA_THRESH1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDTA_UNSPEC,
- NDTA_NAME,
- NDTA_THRESH1,
- NDTA_THRESH2,
+  NDTA_THRESH2,
+  NDTA_THRESH3,
+  NDTA_CONFIG,
+  NDTA_PARMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDTA_THRESH3,
- NDTA_CONFIG,
- NDTA_PARMS,
- NDTA_STATS,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDTA_GC_INTERVAL,
- __NDTA_MAX
+  NDTA_STATS,
+  NDTA_GC_INTERVAL,
+  __NDTA_MAX
 };
-#define NDTA_MAX (__NDTA_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NDTA_MAX (__NDTA_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/net.h b/libc/kernel/uapi/linux/net.h
index 0dc1481..0efb68f 100644
--- a/libc/kernel/uapi/linux/net.h
+++ b/libc/kernel/uapi/linux/net.h
@@ -48,12 +48,12 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYS_SENDMMSG 20
 typedef enum {
- SS_FREE = 0,
- SS_UNCONNECTED,
+  SS_FREE = 0,
+  SS_UNCONNECTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SS_CONNECTING,
- SS_CONNECTED,
- SS_DISCONNECTING
+  SS_CONNECTING,
+  SS_CONNECTED,
+  SS_DISCONNECTING
 } socket_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __SO_ACCEPTCON (1 << 16)
diff --git a/libc/kernel/uapi/linux/net_dropmon.h b/libc/kernel/uapi/linux/net_dropmon.h
index af0b976..aef1813 100644
--- a/libc/kernel/uapi/linux/net_dropmon.h
+++ b/libc/kernel/uapi/linux/net_dropmon.h
@@ -22,47 +22,48 @@
 #include <linux/netlink.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct net_dm_drop_point {
- __u8 pc[8];
- __u32 count;
+  __u8 pc[8];
+  __u32 count;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define is_drop_point_hw(x) do {  int ____i, ____j;  for (____i = 0; ____i < 8; i ____i++)  ____j |= x[____i];  ____j; } while (0)
+#define is_drop_point_hw(x) do { int ____i, ____j; for(____i = 0; ____i < 8; i ____i ++) ____j |= x[____i]; ____j; \
+} while(0)
 #define NET_DM_CFG_VERSION 0
 #define NET_DM_CFG_ALERT_COUNT 1
 #define NET_DM_CFG_ALERT_DELAY 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NET_DM_CFG_MAX 3
 struct net_dm_config_entry {
- __u32 type;
- __u64 data __attribute__((aligned(8)));
+  __u32 type;
+  __u64 data __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct net_dm_config_msg {
- __u32 entries;
- struct net_dm_config_entry options[0];
+  __u32 entries;
+  struct net_dm_config_entry options[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct net_dm_alert_msg {
- __u32 entries;
- struct net_dm_drop_point points[0];
+  __u32 entries;
+  struct net_dm_drop_point points[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct net_dm_user_msg {
- union {
- struct net_dm_config_msg user;
+  union {
+    struct net_dm_config_msg user;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct net_dm_alert_msg alert;
- } u;
+    struct net_dm_alert_msg alert;
+  } u;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DM_CMD_UNSPEC = 0,
- NET_DM_CMD_ALERT,
- NET_DM_CMD_CONFIG,
- NET_DM_CMD_START,
+  NET_DM_CMD_UNSPEC = 0,
+  NET_DM_CMD_ALERT,
+  NET_DM_CMD_CONFIG,
+  NET_DM_CMD_START,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DM_CMD_STOP,
- _NET_DM_CMD_MAX,
+  NET_DM_CMD_STOP,
+  _NET_DM_CMD_MAX,
 };
 #define NET_DM_CMD_MAX (_NET_DM_CMD_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/net_tstamp.h b/libc/kernel/uapi/linux/net_tstamp.h
index 1e9ffd7..5dfd2ac 100644
--- a/libc/kernel/uapi/linux/net_tstamp.h
+++ b/libc/kernel/uapi/linux/net_tstamp.h
@@ -21,51 +21,54 @@
 #include <linux/socket.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SOF_TIMESTAMPING_TX_HARDWARE = (1<<0),
- SOF_TIMESTAMPING_TX_SOFTWARE = (1<<1),
- SOF_TIMESTAMPING_RX_HARDWARE = (1<<2),
- SOF_TIMESTAMPING_RX_SOFTWARE = (1<<3),
+  SOF_TIMESTAMPING_TX_HARDWARE = (1 << 0),
+  SOF_TIMESTAMPING_TX_SOFTWARE = (1 << 1),
+  SOF_TIMESTAMPING_RX_HARDWARE = (1 << 2),
+  SOF_TIMESTAMPING_RX_SOFTWARE = (1 << 3),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SOF_TIMESTAMPING_SOFTWARE = (1<<4),
- SOF_TIMESTAMPING_SYS_HARDWARE = (1<<5),
- SOF_TIMESTAMPING_RAW_HARDWARE = (1<<6),
- SOF_TIMESTAMPING_MASK =
+  SOF_TIMESTAMPING_SOFTWARE = (1 << 4),
+  SOF_TIMESTAMPING_SYS_HARDWARE = (1 << 5),
+  SOF_TIMESTAMPING_RAW_HARDWARE = (1 << 6),
+  SOF_TIMESTAMPING_OPT_ID = (1 << 7),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- (SOF_TIMESTAMPING_RAW_HARDWARE - 1) |
- SOF_TIMESTAMPING_RAW_HARDWARE
+  SOF_TIMESTAMPING_TX_SCHED = (1 << 8),
+  SOF_TIMESTAMPING_TX_ACK = (1 << 9),
+  SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_TX_ACK,
+  SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) | SOF_TIMESTAMPING_LAST
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct hwtstamp_config {
+  int flags;
+  int tx_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int flags;
- int tx_type;
- int rx_filter;
+  int rx_filter;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hwtstamp_tx_types {
- HWTSTAMP_TX_OFF,
- HWTSTAMP_TX_ON,
- HWTSTAMP_TX_ONESTEP_SYNC,
+  HWTSTAMP_TX_OFF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  HWTSTAMP_TX_ON,
+  HWTSTAMP_TX_ONESTEP_SYNC,
 };
 enum hwtstamp_rx_filters {
- HWTSTAMP_FILTER_NONE,
- HWTSTAMP_FILTER_ALL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HWTSTAMP_FILTER_SOME,
- HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
- HWTSTAMP_FILTER_PTP_V1_L4_SYNC,
- HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ,
+  HWTSTAMP_FILTER_NONE,
+  HWTSTAMP_FILTER_ALL,
+  HWTSTAMP_FILTER_SOME,
+  HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HWTSTAMP_FILTER_PTP_V2_L4_EVENT,
- HWTSTAMP_FILTER_PTP_V2_L4_SYNC,
- HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ,
- HWTSTAMP_FILTER_PTP_V2_L2_EVENT,
+  HWTSTAMP_FILTER_PTP_V1_L4_SYNC,
+  HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ,
+  HWTSTAMP_FILTER_PTP_V2_L4_EVENT,
+  HWTSTAMP_FILTER_PTP_V2_L4_SYNC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HWTSTAMP_FILTER_PTP_V2_L2_SYNC,
- HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ,
- HWTSTAMP_FILTER_PTP_V2_EVENT,
- HWTSTAMP_FILTER_PTP_V2_SYNC,
+  HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ,
+  HWTSTAMP_FILTER_PTP_V2_L2_EVENT,
+  HWTSTAMP_FILTER_PTP_V2_L2_SYNC,
+  HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,
+  HWTSTAMP_FILTER_PTP_V2_EVENT,
+  HWTSTAMP_FILTER_PTP_V2_SYNC,
+  HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netconf.h b/libc/kernel/uapi/linux/netconf.h
index 2bf09d1..a9bf216 100644
--- a/libc/kernel/uapi/linux/netconf.h
+++ b/libc/kernel/uapi/linux/netconf.h
@@ -22,22 +22,22 @@
 #include <linux/netlink.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct netconfmsg {
- __u8 ncm_family;
+  __u8 ncm_family;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NETCONFA_UNSPEC,
- NETCONFA_IFINDEX,
- NETCONFA_FORWARDING,
- NETCONFA_RP_FILTER,
+  NETCONFA_UNSPEC,
+  NETCONFA_IFINDEX,
+  NETCONFA_FORWARDING,
+  NETCONFA_RP_FILTER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NETCONFA_MC_FORWARDING,
- NETCONFA_PROXY_NEIGH,
- __NETCONFA_MAX
+  NETCONFA_MC_FORWARDING,
+  NETCONFA_PROXY_NEIGH,
+  __NETCONFA_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETCONFA_MAX (__NETCONFA_MAX - 1)
-#define NETCONFA_IFINDEX_ALL -1
-#define NETCONFA_IFINDEX_DEFAULT -2
+#define NETCONFA_IFINDEX_ALL - 1
+#define NETCONFA_IFINDEX_DEFAULT - 2
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netdevice.h b/libc/kernel/uapi/linux/netdevice.h
index f2472fc..5b30ab8 100644
--- a/libc/kernel/uapi/linux/netdevice.h
+++ b/libc/kernel/uapi/linux/netdevice.h
@@ -26,15 +26,26 @@
 #define MAX_ADDR_LEN 32
 #define INIT_NETDEV_GROUP 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NET_NAME_UNKNOWN 0
+#define NET_NAME_ENUM 1
+#define NET_NAME_PREDICTABLE 2
+#define NET_NAME_USER 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NET_NAME_RENAMED 4
 enum {
- IF_PORT_UNKNOWN = 0,
- IF_PORT_10BASE2,
- IF_PORT_10BASET,
+  IF_PORT_UNKNOWN = 0,
+  IF_PORT_10BASE2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IF_PORT_AUI,
- IF_PORT_100BASET,
- IF_PORT_100BASETX,
- IF_PORT_100BASEFX
+  IF_PORT_10BASET,
+  IF_PORT_AUI,
+  IF_PORT_100BASET,
+  IF_PORT_100BASETX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IF_PORT_100BASEFX
 };
+#define NET_ADDR_PERM 0
+#define NET_ADDR_RANDOM 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NET_ADDR_STOLEN 2
+#define NET_ADDR_SET 3
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter.h b/libc/kernel/uapi/linux/netfilter.h
index 7804321..b04daa4 100644
--- a/libc/kernel/uapi/linux/netfilter.h
+++ b/libc/kernel/uapi/linux/netfilter.h
@@ -37,40 +37,40 @@
 #define NF_VERDICT_QBITS 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_QUEUE_NR(x) ((((x) << 16) & NF_VERDICT_QMASK) | NF_QUEUE)
-#define NF_DROP_ERR(x) (((-x) << 16) | NF_DROP)
+#define NF_DROP_ERR(x) (((- x) << 16) | NF_DROP)
 #define NFC_UNKNOWN 0x4000
 #define NFC_ALTERED 0x8000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_VERDICT_BITS 16
 enum nf_inet_hooks {
- NF_INET_PRE_ROUTING,
- NF_INET_LOCAL_IN,
+  NF_INET_PRE_ROUTING,
+  NF_INET_LOCAL_IN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_INET_FORWARD,
- NF_INET_LOCAL_OUT,
- NF_INET_POST_ROUTING,
- NF_INET_NUMHOOKS
+  NF_INET_FORWARD,
+  NF_INET_LOCAL_OUT,
+  NF_INET_POST_ROUTING,
+  NF_INET_NUMHOOKS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- NFPROTO_UNSPEC = 0,
- NFPROTO_INET = 1,
+  NFPROTO_UNSPEC = 0,
+  NFPROTO_INET = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFPROTO_IPV4 = 2,
- NFPROTO_ARP = 3,
- NFPROTO_BRIDGE = 7,
- NFPROTO_IPV6 = 10,
+  NFPROTO_IPV4 = 2,
+  NFPROTO_ARP = 3,
+  NFPROTO_BRIDGE = 7,
+  NFPROTO_IPV6 = 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFPROTO_DECNET = 12,
- NFPROTO_NUMPROTO,
+  NFPROTO_DECNET = 12,
+  NFPROTO_NUMPROTO,
 };
 union nf_inet_addr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 all[4];
- __be32 ip;
- __be32 ip6[4];
- struct in_addr in;
+  __u32 all[4];
+  __be32 ip;
+  __be32 ip6[4];
+  struct in_addr in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in6_addr in6;
+  struct in6_addr in6;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
index d85c85b..8210a74 100644
--- a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
+++ b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
@@ -24,251 +24,276 @@
 #define IPSET_MAX_COMMENT_SIZE 255
 #define IPSET_MAXNAMELEN 32
 enum ipset_cmd {
- IPSET_CMD_NONE,
+  IPSET_CMD_NONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_CMD_PROTOCOL,
- IPSET_CMD_CREATE,
- IPSET_CMD_DESTROY,
- IPSET_CMD_FLUSH,
+  IPSET_CMD_PROTOCOL,
+  IPSET_CMD_CREATE,
+  IPSET_CMD_DESTROY,
+  IPSET_CMD_FLUSH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_CMD_RENAME,
- IPSET_CMD_SWAP,
- IPSET_CMD_LIST,
- IPSET_CMD_SAVE,
+  IPSET_CMD_RENAME,
+  IPSET_CMD_SWAP,
+  IPSET_CMD_LIST,
+  IPSET_CMD_SAVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_CMD_ADD,
- IPSET_CMD_DEL,
- IPSET_CMD_TEST,
- IPSET_CMD_HEADER,
+  IPSET_CMD_ADD,
+  IPSET_CMD_DEL,
+  IPSET_CMD_TEST,
+  IPSET_CMD_HEADER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_CMD_TYPE,
- IPSET_MSG_MAX,
- IPSET_CMD_RESTORE = IPSET_MSG_MAX,
- IPSET_CMD_HELP,
+  IPSET_CMD_TYPE,
+  IPSET_MSG_MAX,
+  IPSET_CMD_RESTORE = IPSET_MSG_MAX,
+  IPSET_CMD_HELP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_CMD_VERSION,
- IPSET_CMD_QUIT,
- IPSET_CMD_MAX,
- IPSET_CMD_COMMIT = IPSET_CMD_MAX,
+  IPSET_CMD_VERSION,
+  IPSET_CMD_QUIT,
+  IPSET_CMD_MAX,
+  IPSET_CMD_COMMIT = IPSET_CMD_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- IPSET_ATTR_UNSPEC,
- IPSET_ATTR_PROTOCOL,
+  IPSET_ATTR_UNSPEC,
+  IPSET_ATTR_PROTOCOL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_SETNAME,
- IPSET_ATTR_TYPENAME,
- IPSET_ATTR_SETNAME2 = IPSET_ATTR_TYPENAME,
- IPSET_ATTR_REVISION,
+  IPSET_ATTR_SETNAME,
+  IPSET_ATTR_TYPENAME,
+  IPSET_ATTR_SETNAME2 = IPSET_ATTR_TYPENAME,
+  IPSET_ATTR_REVISION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_FAMILY,
- IPSET_ATTR_FLAGS,
- IPSET_ATTR_DATA,
- IPSET_ATTR_ADT,
+  IPSET_ATTR_FAMILY,
+  IPSET_ATTR_FLAGS,
+  IPSET_ATTR_DATA,
+  IPSET_ATTR_ADT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_LINENO,
- IPSET_ATTR_PROTOCOL_MIN,
- IPSET_ATTR_REVISION_MIN = IPSET_ATTR_PROTOCOL_MIN,
- __IPSET_ATTR_CMD_MAX,
+  IPSET_ATTR_LINENO,
+  IPSET_ATTR_PROTOCOL_MIN,
+  IPSET_ATTR_REVISION_MIN = IPSET_ATTR_PROTOCOL_MIN,
+  __IPSET_ATTR_CMD_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IPSET_ATTR_CMD_MAX (__IPSET_ATTR_CMD_MAX - 1)
 enum {
- IPSET_ATTR_IP = IPSET_ATTR_UNSPEC + 1,
+  IPSET_ATTR_IP = IPSET_ATTR_UNSPEC + 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_IP_FROM = IPSET_ATTR_IP,
- IPSET_ATTR_IP_TO,
- IPSET_ATTR_CIDR,
- IPSET_ATTR_PORT,
+  IPSET_ATTR_IP_FROM = IPSET_ATTR_IP,
+  IPSET_ATTR_IP_TO,
+  IPSET_ATTR_CIDR,
+  IPSET_ATTR_PORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_PORT_FROM = IPSET_ATTR_PORT,
- IPSET_ATTR_PORT_TO,
- IPSET_ATTR_TIMEOUT,
- IPSET_ATTR_PROTO,
+  IPSET_ATTR_PORT_FROM = IPSET_ATTR_PORT,
+  IPSET_ATTR_PORT_TO,
+  IPSET_ATTR_TIMEOUT,
+  IPSET_ATTR_PROTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_CADT_FLAGS,
- IPSET_ATTR_CADT_LINENO = IPSET_ATTR_LINENO,
- IPSET_ATTR_CADT_MAX = 16,
- IPSET_ATTR_GC,
+  IPSET_ATTR_CADT_FLAGS,
+  IPSET_ATTR_CADT_LINENO = IPSET_ATTR_LINENO,
+  IPSET_ATTR_MARK,
+  IPSET_ATTR_MARKMASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_HASHSIZE,
- IPSET_ATTR_MAXELEM,
- IPSET_ATTR_NETMASK,
- IPSET_ATTR_PROBES,
+  IPSET_ATTR_CADT_MAX = 16,
+  IPSET_ATTR_GC,
+  IPSET_ATTR_HASHSIZE,
+  IPSET_ATTR_MAXELEM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_RESIZE,
- IPSET_ATTR_SIZE,
- IPSET_ATTR_ELEMENTS,
- IPSET_ATTR_REFERENCES,
+  IPSET_ATTR_NETMASK,
+  IPSET_ATTR_PROBES,
+  IPSET_ATTR_RESIZE,
+  IPSET_ATTR_SIZE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_MEMSIZE,
- __IPSET_ATTR_CREATE_MAX,
+  IPSET_ATTR_ELEMENTS,
+  IPSET_ATTR_REFERENCES,
+  IPSET_ATTR_MEMSIZE,
+  __IPSET_ATTR_CREATE_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IPSET_ATTR_CREATE_MAX (__IPSET_ATTR_CREATE_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPSET_ATTR_ETHER = IPSET_ATTR_CADT_MAX + 1,
- IPSET_ATTR_NAME,
- IPSET_ATTR_NAMEREF,
+  IPSET_ATTR_ETHER = IPSET_ATTR_CADT_MAX + 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_IP2,
- IPSET_ATTR_CIDR2,
- IPSET_ATTR_IP2_TO,
- IPSET_ATTR_IFACE,
+  IPSET_ATTR_NAME,
+  IPSET_ATTR_NAMEREF,
+  IPSET_ATTR_IP2,
+  IPSET_ATTR_CIDR2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_BYTES,
- IPSET_ATTR_PACKETS,
- IPSET_ATTR_COMMENT,
- __IPSET_ATTR_ADT_MAX,
+  IPSET_ATTR_IP2_TO,
+  IPSET_ATTR_IFACE,
+  IPSET_ATTR_BYTES,
+  IPSET_ATTR_PACKETS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPSET_ATTR_COMMENT,
+  IPSET_ATTR_SKBMARK,
+  IPSET_ATTR_SKBPRIO,
+  IPSET_ATTR_SKBQUEUE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IPSET_ATTR_ADT_MAX,
 };
 #define IPSET_ATTR_ADT_MAX (__IPSET_ATTR_ADT_MAX - 1)
 enum {
- IPSET_ATTR_IPADDR_IPV4 = IPSET_ATTR_UNSPEC + 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ATTR_IPADDR_IPV6,
- __IPSET_ATTR_IPADDR_MAX,
+  IPSET_ATTR_IPADDR_IPV4 = IPSET_ATTR_UNSPEC + 1,
+  IPSET_ATTR_IPADDR_IPV6,
+  __IPSET_ATTR_IPADDR_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPSET_ATTR_IPADDR_MAX (__IPSET_ATTR_IPADDR_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ipset_errno {
- IPSET_ERR_PRIVATE = 4096,
- IPSET_ERR_PROTOCOL,
- IPSET_ERR_FIND_TYPE,
+  IPSET_ERR_PRIVATE = 4096,
+  IPSET_ERR_PROTOCOL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_MAX_SETS,
- IPSET_ERR_BUSY,
- IPSET_ERR_EXIST_SETNAME2,
- IPSET_ERR_TYPE_MISMATCH,
+  IPSET_ERR_FIND_TYPE,
+  IPSET_ERR_MAX_SETS,
+  IPSET_ERR_BUSY,
+  IPSET_ERR_EXIST_SETNAME2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_EXIST,
- IPSET_ERR_INVALID_CIDR,
- IPSET_ERR_INVALID_NETMASK,
- IPSET_ERR_INVALID_FAMILY,
+  IPSET_ERR_TYPE_MISMATCH,
+  IPSET_ERR_EXIST,
+  IPSET_ERR_INVALID_CIDR,
+  IPSET_ERR_INVALID_NETMASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_TIMEOUT,
- IPSET_ERR_REFERENCED,
- IPSET_ERR_IPADDR_IPV4,
- IPSET_ERR_IPADDR_IPV6,
+  IPSET_ERR_INVALID_FAMILY,
+  IPSET_ERR_TIMEOUT,
+  IPSET_ERR_REFERENCED,
+  IPSET_ERR_IPADDR_IPV4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_COUNTER,
- IPSET_ERR_COMMENT,
- IPSET_ERR_TYPE_SPECIFIC = 4352,
+  IPSET_ERR_IPADDR_IPV6,
+  IPSET_ERR_COUNTER,
+  IPSET_ERR_COMMENT,
+  IPSET_ERR_INVALID_MARKMASK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPSET_ERR_SKBINFO,
+  IPSET_ERR_TYPE_SPECIFIC = 4352,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ipset_cmd_flags {
- IPSET_FLAG_BIT_EXIST = 0,
- IPSET_FLAG_EXIST = (1 << IPSET_FLAG_BIT_EXIST),
- IPSET_FLAG_BIT_LIST_SETNAME = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_FLAG_LIST_SETNAME = (1 << IPSET_FLAG_BIT_LIST_SETNAME),
- IPSET_FLAG_BIT_LIST_HEADER = 2,
- IPSET_FLAG_LIST_HEADER = (1 << IPSET_FLAG_BIT_LIST_HEADER),
- IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE = 3,
+  IPSET_FLAG_BIT_EXIST = 0,
+  IPSET_FLAG_EXIST = (1 << IPSET_FLAG_BIT_EXIST),
+  IPSET_FLAG_BIT_LIST_SETNAME = 1,
+  IPSET_FLAG_LIST_SETNAME = (1 << IPSET_FLAG_BIT_LIST_SETNAME),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_FLAG_SKIP_COUNTER_UPDATE =
- (1 << IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE),
- IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE = 4,
- IPSET_FLAG_SKIP_SUBCOUNTER_UPDATE =
+  IPSET_FLAG_BIT_LIST_HEADER = 2,
+  IPSET_FLAG_LIST_HEADER = (1 << IPSET_FLAG_BIT_LIST_HEADER),
+  IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE = 3,
+  IPSET_FLAG_SKIP_COUNTER_UPDATE = (1 << IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- (1 << IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE),
- IPSET_FLAG_BIT_MATCH_COUNTERS = 5,
- IPSET_FLAG_MATCH_COUNTERS = (1 << IPSET_FLAG_BIT_MATCH_COUNTERS),
- IPSET_FLAG_BIT_RETURN_NOMATCH = 7,
+  IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE = 4,
+  IPSET_FLAG_SKIP_SUBCOUNTER_UPDATE = (1 << IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE),
+  IPSET_FLAG_BIT_MATCH_COUNTERS = 5,
+  IPSET_FLAG_MATCH_COUNTERS = (1 << IPSET_FLAG_BIT_MATCH_COUNTERS),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_FLAG_RETURN_NOMATCH = (1 << IPSET_FLAG_BIT_RETURN_NOMATCH),
- IPSET_FLAG_CMD_MAX = 15,
+  IPSET_FLAG_BIT_RETURN_NOMATCH = 7,
+  IPSET_FLAG_RETURN_NOMATCH = (1 << IPSET_FLAG_BIT_RETURN_NOMATCH),
+  IPSET_FLAG_BIT_MAP_SKBMARK = 8,
+  IPSET_FLAG_MAP_SKBMARK = (1 << IPSET_FLAG_BIT_MAP_SKBMARK),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPSET_FLAG_BIT_MAP_SKBPRIO = 9,
+  IPSET_FLAG_MAP_SKBPRIO = (1 << IPSET_FLAG_BIT_MAP_SKBPRIO),
+  IPSET_FLAG_BIT_MAP_SKBQUEUE = 10,
+  IPSET_FLAG_MAP_SKBQUEUE = (1 << IPSET_FLAG_BIT_MAP_SKBQUEUE),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPSET_FLAG_CMD_MAX = 15,
 };
 enum ipset_cadt_flags {
+  IPSET_FLAG_BIT_BEFORE = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_FLAG_BIT_BEFORE = 0,
- IPSET_FLAG_BEFORE = (1 << IPSET_FLAG_BIT_BEFORE),
- IPSET_FLAG_BIT_PHYSDEV = 1,
- IPSET_FLAG_PHYSDEV = (1 << IPSET_FLAG_BIT_PHYSDEV),
+  IPSET_FLAG_BEFORE = (1 << IPSET_FLAG_BIT_BEFORE),
+  IPSET_FLAG_BIT_PHYSDEV = 1,
+  IPSET_FLAG_PHYSDEV = (1 << IPSET_FLAG_BIT_PHYSDEV),
+  IPSET_FLAG_BIT_NOMATCH = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_FLAG_BIT_NOMATCH = 2,
- IPSET_FLAG_NOMATCH = (1 << IPSET_FLAG_BIT_NOMATCH),
- IPSET_FLAG_BIT_WITH_COUNTERS = 3,
- IPSET_FLAG_WITH_COUNTERS = (1 << IPSET_FLAG_BIT_WITH_COUNTERS),
+  IPSET_FLAG_NOMATCH = (1 << IPSET_FLAG_BIT_NOMATCH),
+  IPSET_FLAG_BIT_WITH_COUNTERS = 3,
+  IPSET_FLAG_WITH_COUNTERS = (1 << IPSET_FLAG_BIT_WITH_COUNTERS),
+  IPSET_FLAG_BIT_WITH_COMMENT = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_FLAG_BIT_WITH_COMMENT = 4,
- IPSET_FLAG_WITH_COMMENT = (1 << IPSET_FLAG_BIT_WITH_COMMENT),
- IPSET_FLAG_CADT_MAX = 15,
+  IPSET_FLAG_WITH_COMMENT = (1 << IPSET_FLAG_BIT_WITH_COMMENT),
+  IPSET_FLAG_BIT_WITH_FORCEADD = 5,
+  IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
+  IPSET_FLAG_BIT_WITH_SKBINFO = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO),
+  IPSET_FLAG_CADT_MAX = 15,
+};
+enum ipset_create_flags {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IPSET_CREATE_FLAG_BIT_FORCEADD = 0,
+  IPSET_CREATE_FLAG_FORCEADD = (1 << IPSET_CREATE_FLAG_BIT_FORCEADD),
+  IPSET_CREATE_FLAG_BIT_MAX = 7,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ipset_adt {
- IPSET_ADD,
- IPSET_DEL,
- IPSET_TEST,
+  IPSET_ADD,
+  IPSET_DEL,
+  IPSET_TEST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ADT_MAX,
- IPSET_CREATE = IPSET_ADT_MAX,
- IPSET_CADT_MAX,
+  IPSET_ADT_MAX,
+  IPSET_CREATE = IPSET_ADT_MAX,
+  IPSET_CADT_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u16 ip_set_id_t;
 #define IPSET_INVALID_ID 65535
 enum ip_set_dim {
- IPSET_DIM_ZERO = 0,
+  IPSET_DIM_ZERO = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_DIM_ONE,
- IPSET_DIM_TWO,
- IPSET_DIM_THREE,
- IPSET_DIM_MAX = 6,
+  IPSET_DIM_ONE,
+  IPSET_DIM_TWO,
+  IPSET_DIM_THREE,
+  IPSET_DIM_MAX = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_BIT_RETURN_NOMATCH = 7,
+  IPSET_BIT_RETURN_NOMATCH = 7,
 };
 enum ip_set_kopt {
- IPSET_INV_MATCH = (1 << IPSET_DIM_ZERO),
+  IPSET_INV_MATCH = (1 << IPSET_DIM_ZERO),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_DIM_ONE_SRC = (1 << IPSET_DIM_ONE),
- IPSET_DIM_TWO_SRC = (1 << IPSET_DIM_TWO),
- IPSET_DIM_THREE_SRC = (1 << IPSET_DIM_THREE),
- IPSET_RETURN_NOMATCH = (1 << IPSET_BIT_RETURN_NOMATCH),
+  IPSET_DIM_ONE_SRC = (1 << IPSET_DIM_ONE),
+  IPSET_DIM_TWO_SRC = (1 << IPSET_DIM_TWO),
+  IPSET_DIM_THREE_SRC = (1 << IPSET_DIM_THREE),
+  IPSET_RETURN_NOMATCH = (1 << IPSET_BIT_RETURN_NOMATCH),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- IPSET_COUNTER_NONE = 0,
- IPSET_COUNTER_EQ,
+  IPSET_COUNTER_NONE = 0,
+  IPSET_COUNTER_EQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_COUNTER_NE,
- IPSET_COUNTER_LT,
- IPSET_COUNTER_GT,
+  IPSET_COUNTER_NE,
+  IPSET_COUNTER_LT,
+  IPSET_COUNTER_GT,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_set_counter_match {
- __u8 op;
- __u64 value;
+  __u8 op;
+  __u64 value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_IP_SET 83
 union ip_set_name_index {
- char name[IPSET_MAXNAMELEN];
- ip_set_id_t index;
+  char name[IPSET_MAXNAMELEN];
+  ip_set_id_t index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IP_SET_OP_GET_BYNAME 0x00000006
 struct ip_set_req_get_set {
- unsigned int op;
+  unsigned int op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int version;
- union ip_set_name_index set;
+  unsigned int version;
+  union ip_set_name_index set;
 };
 #define IP_SET_OP_GET_BYINDEX 0x00000007
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_SET_OP_GET_FNAME 0x00000008
 struct ip_set_req_get_set_family {
- unsigned int op;
- unsigned int version;
+  unsigned int op;
+  unsigned int version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int family;
- union ip_set_name_index set;
+  unsigned int family;
+  union ip_set_name_index set;
 };
 #define IP_SET_OP_VERSION 0x00000100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_set_req_version {
- unsigned int op;
- unsigned int version;
+  unsigned int op;
+  unsigned int version;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/ipset/ip_set_bitmap.h b/libc/kernel/uapi/linux/netfilter/ipset/ip_set_bitmap.h
index 03a392f..edcae4c 100644
--- a/libc/kernel/uapi/linux/netfilter/ipset/ip_set_bitmap.h
+++ b/libc/kernel/uapi/linux/netfilter/ipset/ip_set_bitmap.h
@@ -19,8 +19,8 @@
 #ifndef _UAPI__IP_SET_BITMAP_H
 #define _UAPI__IP_SET_BITMAP_H
 enum {
- IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,
+  IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_BITMAP_RANGE_SIZE,
+  IPSET_ERR_BITMAP_RANGE_SIZE,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/ipset/ip_set_hash.h b/libc/kernel/uapi/linux/netfilter/ipset/ip_set_hash.h
index 34a46f9..dd765fc 100644
--- a/libc/kernel/uapi/linux/netfilter/ipset/ip_set_hash.h
+++ b/libc/kernel/uapi/linux/netfilter/ipset/ip_set_hash.h
@@ -19,13 +19,13 @@
 #ifndef _UAPI__IP_SET_HASH_H
 #define _UAPI__IP_SET_HASH_H
 enum {
- IPSET_ERR_HASH_FULL = IPSET_ERR_TYPE_SPECIFIC,
+  IPSET_ERR_HASH_FULL = IPSET_ERR_TYPE_SPECIFIC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_HASH_ELEM,
- IPSET_ERR_INVALID_PROTO,
- IPSET_ERR_MISSING_PROTO,
- IPSET_ERR_HASH_RANGE_UNSUPPORTED,
+  IPSET_ERR_HASH_ELEM,
+  IPSET_ERR_INVALID_PROTO,
+  IPSET_ERR_MISSING_PROTO,
+  IPSET_ERR_HASH_RANGE_UNSUPPORTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_HASH_RANGE,
+  IPSET_ERR_HASH_RANGE,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/ipset/ip_set_list.h b/libc/kernel/uapi/linux/netfilter/ipset/ip_set_list.h
index 83a26d0..623574c 100644
--- a/libc/kernel/uapi/linux/netfilter/ipset/ip_set_list.h
+++ b/libc/kernel/uapi/linux/netfilter/ipset/ip_set_list.h
@@ -19,13 +19,13 @@
 #ifndef _UAPI__IP_SET_LIST_H
 #define _UAPI__IP_SET_LIST_H
 enum {
- IPSET_ERR_NAME = IPSET_ERR_TYPE_SPECIFIC,
+  IPSET_ERR_NAME = IPSET_ERR_TYPE_SPECIFIC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_LOOP,
- IPSET_ERR_BEFORE,
- IPSET_ERR_NAMEREF,
- IPSET_ERR_LIST_FULL,
+  IPSET_ERR_LOOP,
+  IPSET_ERR_BEFORE,
+  IPSET_ERR_NAMEREF,
+  IPSET_ERR_LIST_FULL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSET_ERR_REF_EXIST,
+  IPSET_ERR_REF_EXIST,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
index 05e2d1f..57cbb90 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
@@ -19,16 +19,16 @@
 #ifndef _UAPI_NF_CONNTRACK_COMMON_H
 #define _UAPI_NF_CONNTRACK_COMMON_H
 enum ip_conntrack_info {
- IP_CT_ESTABLISHED,
+  IP_CT_ESTABLISHED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IP_CT_RELATED,
- IP_CT_NEW,
- IP_CT_IS_REPLY,
- IP_CT_ESTABLISHED_REPLY = IP_CT_ESTABLISHED + IP_CT_IS_REPLY,
+  IP_CT_RELATED,
+  IP_CT_NEW,
+  IP_CT_IS_REPLY,
+  IP_CT_ESTABLISHED_REPLY = IP_CT_ESTABLISHED + IP_CT_IS_REPLY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IP_CT_RELATED_REPLY = IP_CT_RELATED + IP_CT_IS_REPLY,
- IP_CT_NEW_REPLY = IP_CT_NEW + IP_CT_IS_REPLY,
- IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1
+  IP_CT_RELATED_REPLY = IP_CT_RELATED + IP_CT_IS_REPLY,
+  IP_CT_NEW_REPLY = IP_CT_NEW + IP_CT_IS_REPLY,
+  IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_CT_STATE_INVALID_BIT (1 << 0)
@@ -36,65 +36,65 @@
 #define NF_CT_STATE_UNTRACKED_BIT (1 << (IP_CT_NUMBER + 1))
 enum ip_conntrack_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_EXPECTED_BIT = 0,
- IPS_EXPECTED = (1 << IPS_EXPECTED_BIT),
- IPS_SEEN_REPLY_BIT = 1,
- IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT),
+  IPS_EXPECTED_BIT = 0,
+  IPS_EXPECTED = (1 << IPS_EXPECTED_BIT),
+  IPS_SEEN_REPLY_BIT = 1,
+  IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_ASSURED_BIT = 2,
- IPS_ASSURED = (1 << IPS_ASSURED_BIT),
- IPS_CONFIRMED_BIT = 3,
- IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT),
+  IPS_ASSURED_BIT = 2,
+  IPS_ASSURED = (1 << IPS_ASSURED_BIT),
+  IPS_CONFIRMED_BIT = 3,
+  IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_SRC_NAT_BIT = 4,
- IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT),
- IPS_DST_NAT_BIT = 5,
- IPS_DST_NAT = (1 << IPS_DST_NAT_BIT),
+  IPS_SRC_NAT_BIT = 4,
+  IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT),
+  IPS_DST_NAT_BIT = 5,
+  IPS_DST_NAT = (1 << IPS_DST_NAT_BIT),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT),
- IPS_SEQ_ADJUST_BIT = 6,
- IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT),
- IPS_SRC_NAT_DONE_BIT = 7,
+  IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT),
+  IPS_SEQ_ADJUST_BIT = 6,
+  IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT),
+  IPS_SRC_NAT_DONE_BIT = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT),
- IPS_DST_NAT_DONE_BIT = 8,
- IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT),
- IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE),
+  IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT),
+  IPS_DST_NAT_DONE_BIT = 8,
+  IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT),
+  IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_DYING_BIT = 9,
- IPS_DYING = (1 << IPS_DYING_BIT),
- IPS_FIXED_TIMEOUT_BIT = 10,
- IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
+  IPS_DYING_BIT = 9,
+  IPS_DYING = (1 << IPS_DYING_BIT),
+  IPS_FIXED_TIMEOUT_BIT = 10,
+  IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_TEMPLATE_BIT = 11,
- IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT),
- IPS_UNTRACKED_BIT = 12,
- IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT),
+  IPS_TEMPLATE_BIT = 11,
+  IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT),
+  IPS_UNTRACKED_BIT = 12,
+  IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPS_HELPER_BIT = 13,
- IPS_HELPER = (1 << IPS_HELPER_BIT),
+  IPS_HELPER_BIT = 13,
+  IPS_HELPER = (1 << IPS_HELPER_BIT),
 };
 enum ip_conntrack_events {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCT_NEW,
- IPCT_RELATED,
- IPCT_DESTROY,
- IPCT_REPLY,
+  IPCT_NEW,
+  IPCT_RELATED,
+  IPCT_DESTROY,
+  IPCT_REPLY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCT_ASSURED,
- IPCT_PROTOINFO,
- IPCT_HELPER,
- IPCT_MARK,
+  IPCT_ASSURED,
+  IPCT_PROTOINFO,
+  IPCT_HELPER,
+  IPCT_MARK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCT_SEQADJ,
- IPCT_NATSEQADJ = IPCT_SEQADJ,
- IPCT_SECMARK,
- IPCT_LABEL,
+  IPCT_SEQADJ,
+  IPCT_NATSEQADJ = IPCT_SEQADJ,
+  IPCT_SECMARK,
+  IPCT_LABEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum ip_conntrack_expect_events {
- IPEXP_NEW,
- IPEXP_DESTROY,
+  IPEXP_NEW,
+  IPEXP_DESTROY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NF_CT_EXPECT_PERMANENT 0x1
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_ftp.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_ftp.h
index 1f0e3c0..23955d3 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_ftp.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_ftp.h
@@ -19,11 +19,11 @@
 #ifndef _UAPI_NF_CONNTRACK_FTP_H
 #define _UAPI_NF_CONNTRACK_FTP_H
 enum nf_ct_ftp_type {
- NF_CT_FTP_PORT,
+  NF_CT_FTP_PORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_CT_FTP_PASV,
- NF_CT_FTP_EPRT,
- NF_CT_FTP_EPSV,
+  NF_CT_FTP_PASV,
+  NF_CT_FTP_EPRT,
+  NF_CT_FTP_EPSV,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_sctp.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_sctp.h
index 37c4e69..f30c58e 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_sctp.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_sctp.h
@@ -21,21 +21,21 @@
 #include <linux/netfilter/nf_conntrack_tuple_common.h>
 enum sctp_conntrack {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_CONNTRACK_NONE,
- SCTP_CONNTRACK_CLOSED,
- SCTP_CONNTRACK_COOKIE_WAIT,
- SCTP_CONNTRACK_COOKIE_ECHOED,
+  SCTP_CONNTRACK_NONE,
+  SCTP_CONNTRACK_CLOSED,
+  SCTP_CONNTRACK_COOKIE_WAIT,
+  SCTP_CONNTRACK_COOKIE_ECHOED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_CONNTRACK_ESTABLISHED,
- SCTP_CONNTRACK_SHUTDOWN_SENT,
- SCTP_CONNTRACK_SHUTDOWN_RECD,
- SCTP_CONNTRACK_SHUTDOWN_ACK_SENT,
+  SCTP_CONNTRACK_ESTABLISHED,
+  SCTP_CONNTRACK_SHUTDOWN_SENT,
+  SCTP_CONNTRACK_SHUTDOWN_RECD,
+  SCTP_CONNTRACK_SHUTDOWN_ACK_SENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_CONNTRACK_MAX
+  SCTP_CONNTRACK_MAX
 };
 struct ip_ct_sctp {
- enum sctp_conntrack state;
+  enum sctp_conntrack state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 vtag[IP_CT_DIR_MAX];
+  __be32 vtag[IP_CT_DIR_MAX];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h
index 3d79eb3..1af00d1 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h
@@ -21,25 +21,25 @@
 #include <linux/types.h>
 enum tcp_conntrack {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_CONNTRACK_NONE,
- TCP_CONNTRACK_SYN_SENT,
- TCP_CONNTRACK_SYN_RECV,
- TCP_CONNTRACK_ESTABLISHED,
+  TCP_CONNTRACK_NONE,
+  TCP_CONNTRACK_SYN_SENT,
+  TCP_CONNTRACK_SYN_RECV,
+  TCP_CONNTRACK_ESTABLISHED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_CONNTRACK_FIN_WAIT,
- TCP_CONNTRACK_CLOSE_WAIT,
- TCP_CONNTRACK_LAST_ACK,
- TCP_CONNTRACK_TIME_WAIT,
+  TCP_CONNTRACK_FIN_WAIT,
+  TCP_CONNTRACK_CLOSE_WAIT,
+  TCP_CONNTRACK_LAST_ACK,
+  TCP_CONNTRACK_TIME_WAIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_CONNTRACK_CLOSE,
- TCP_CONNTRACK_LISTEN,
+  TCP_CONNTRACK_CLOSE,
+  TCP_CONNTRACK_LISTEN,
 #define TCP_CONNTRACK_SYN_SENT2 TCP_CONNTRACK_LISTEN
- TCP_CONNTRACK_MAX,
+  TCP_CONNTRACK_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_CONNTRACK_IGNORE,
- TCP_CONNTRACK_RETRANS,
- TCP_CONNTRACK_UNACK,
- TCP_CONNTRACK_TIMEOUT_MAX
+  TCP_CONNTRACK_IGNORE,
+  TCP_CONNTRACK_RETRANS,
+  TCP_CONNTRACK_UNACK,
+  TCP_CONNTRACK_TIMEOUT_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IP_CT_TCP_FLAG_WINDOW_SCALE 0x01
@@ -51,8 +51,8 @@
 #define IP_CT_TCP_FLAG_MAXACK_SET 0x20
 struct nf_ct_tcp_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- __u8 mask;
+  __u8 flags;
+  __u8 mask;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_tuple_common.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_tuple_common.h
index 9f6515e..8566e86 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_tuple_common.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_tuple_common.h
@@ -19,36 +19,36 @@
 #ifndef _NF_CONNTRACK_TUPLE_COMMON_H
 #define _NF_CONNTRACK_TUPLE_COMMON_H
 enum ip_conntrack_dir {
- IP_CT_DIR_ORIGINAL,
+  IP_CT_DIR_ORIGINAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IP_CT_DIR_REPLY,
- IP_CT_DIR_MAX
+  IP_CT_DIR_REPLY,
+  IP_CT_DIR_MAX
 };
 union nf_conntrack_man_proto {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 all;
- struct {
- __be16 port;
- } tcp;
+  __be16 all;
+  struct {
+    __be16 port;
+  } tcp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __be16 port;
- } udp;
- struct {
+  struct {
+    __be16 port;
+  } udp;
+  struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 id;
- } icmp;
- struct {
- __be16 port;
+    __be16 id;
+  } icmp;
+  struct {
+    __be16 port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } dccp;
- struct {
- __be16 port;
- } sctp;
+  } dccp;
+  struct {
+    __be16 port;
+  } sctp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __be16 key;
- } gre;
+  struct {
+    __be16 key;
+  } gre;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL)
diff --git a/libc/kernel/uapi/linux/netfilter/nf_nat.h b/libc/kernel/uapi/linux/netfilter/nf_nat.h
index b399888..6c11183 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_nat.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_nat.h
@@ -27,28 +27,29 @@
 #define NF_NAT_RANGE_PERSISTENT (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4)
-#define NF_NAT_RANGE_PROTO_RANDOM_ALL   (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
+#define NF_NAT_RANGE_PROTO_RANDOM_ALL (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
+#define NF_NAT_RANGE_MASK (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
 struct nf_nat_ipv4_range {
- unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 min_ip;
- __be32 max_ip;
- union nf_conntrack_man_proto min;
- union nf_conntrack_man_proto max;
+  unsigned int flags;
+  __be32 min_ip;
+  __be32 max_ip;
+  union nf_conntrack_man_proto min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union nf_conntrack_man_proto max;
 };
 struct nf_nat_ipv4_multi_range_compat {
- unsigned int rangesize;
- struct nf_nat_ipv4_range range[1];
+  unsigned int rangesize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct nf_nat_ipv4_range range[1];
 };
 struct nf_nat_range {
- unsigned int flags;
- union nf_inet_addr min_addr;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union nf_inet_addr max_addr;
- union nf_conntrack_man_proto min_proto;
- union nf_conntrack_man_proto max_proto;
+  union nf_inet_addr min_addr;
+  union nf_inet_addr max_addr;
+  union nf_conntrack_man_proto min_proto;
+  union nf_conntrack_man_proto max_proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 34632dd..58984af 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -19,399 +19,434 @@
 #ifndef _LINUX_NF_TABLES_H
 #define _LINUX_NF_TABLES_H
 #define NFT_CHAIN_MAXNAMELEN 32
+#define NFT_USERDATA_MAXLEN 256
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_registers {
+  NFT_REG_VERDICT,
+  NFT_REG_1,
+  NFT_REG_2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_REG_VERDICT,
- NFT_REG_1,
- NFT_REG_2,
- NFT_REG_3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_REG_4,
- __NFT_REG_MAX
+  NFT_REG_3,
+  NFT_REG_4,
+  __NFT_REG_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFT_REG_MAX (__NFT_REG_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_verdicts {
- NFT_CONTINUE = -1,
- NFT_BREAK = -2,
- NFT_JUMP = -3,
+  NFT_CONTINUE = - 1,
+  NFT_BREAK = - 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_GOTO = -4,
- NFT_RETURN = -5,
+  NFT_JUMP = - 3,
+  NFT_GOTO = - 4,
+  NFT_RETURN = - 5,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nf_tables_msg_types {
+  NFT_MSG_NEWTABLE,
+  NFT_MSG_GETTABLE,
+  NFT_MSG_DELTABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_MSG_NEWTABLE,
- NFT_MSG_GETTABLE,
- NFT_MSG_DELTABLE,
- NFT_MSG_NEWCHAIN,
+  NFT_MSG_NEWCHAIN,
+  NFT_MSG_GETCHAIN,
+  NFT_MSG_DELCHAIN,
+  NFT_MSG_NEWRULE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_MSG_GETCHAIN,
- NFT_MSG_DELCHAIN,
- NFT_MSG_NEWRULE,
- NFT_MSG_GETRULE,
+  NFT_MSG_GETRULE,
+  NFT_MSG_DELRULE,
+  NFT_MSG_NEWSET,
+  NFT_MSG_GETSET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_MSG_DELRULE,
- NFT_MSG_NEWSET,
- NFT_MSG_GETSET,
- NFT_MSG_DELSET,
+  NFT_MSG_DELSET,
+  NFT_MSG_NEWSETELEM,
+  NFT_MSG_GETSETELEM,
+  NFT_MSG_DELSETELEM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_MSG_NEWSETELEM,
- NFT_MSG_GETSETELEM,
- NFT_MSG_DELSETELEM,
- NFT_MSG_MAX,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_MSG_NEWGEN,
+  NFT_MSG_GETGEN,
+  NFT_MSG_MAX,
 };
-enum nft_list_attributes {
- NFTA_LIST_UNPEC,
- NFTA_LIST_ELEM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFTA_LIST_MAX
+enum nft_list_attributes {
+  NFTA_LIST_UNPEC,
+  NFTA_LIST_ELEM,
+  __NFTA_LIST_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFTA_LIST_MAX (__NFTA_LIST_MAX - 1)
 enum nft_hook_attributes {
+  NFTA_HOOK_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_HOOK_UNSPEC,
- NFTA_HOOK_HOOKNUM,
- NFTA_HOOK_PRIORITY,
- __NFTA_HOOK_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_HOOK_HOOKNUM,
+  NFTA_HOOK_PRIORITY,
+  __NFTA_HOOK_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_HOOK_MAX (__NFTA_HOOK_MAX - 1)
 enum nft_table_flags {
- NFT_TABLE_F_DORMANT = 0x1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_TABLE_F_DORMANT = 0x1,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_table_attributes {
- NFTA_TABLE_UNSPEC,
- NFTA_TABLE_NAME,
+  NFTA_TABLE_UNSPEC,
+  NFTA_TABLE_NAME,
+  NFTA_TABLE_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_TABLE_FLAGS,
- NFTA_TABLE_USE,
- __NFTA_TABLE_MAX
+  NFTA_TABLE_USE,
+  __NFTA_TABLE_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_TABLE_MAX (__NFTA_TABLE_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_chain_attributes {
- NFTA_CHAIN_UNSPEC,
- NFTA_CHAIN_TABLE,
+  NFTA_CHAIN_UNSPEC,
+  NFTA_CHAIN_TABLE,
+  NFTA_CHAIN_HANDLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_CHAIN_HANDLE,
- NFTA_CHAIN_NAME,
- NFTA_CHAIN_HOOK,
- NFTA_CHAIN_POLICY,
+  NFTA_CHAIN_NAME,
+  NFTA_CHAIN_HOOK,
+  NFTA_CHAIN_POLICY,
+  NFTA_CHAIN_USE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_CHAIN_USE,
- NFTA_CHAIN_TYPE,
- NFTA_CHAIN_COUNTERS,
- __NFTA_CHAIN_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_CHAIN_TYPE,
+  NFTA_CHAIN_COUNTERS,
+  __NFTA_CHAIN_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_CHAIN_MAX (__NFTA_CHAIN_MAX - 1)
 enum nft_rule_attributes {
- NFTA_RULE_UNSPEC,
+  NFTA_RULE_UNSPEC,
+  NFTA_RULE_TABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_RULE_TABLE,
- NFTA_RULE_CHAIN,
- NFTA_RULE_HANDLE,
- NFTA_RULE_EXPRESSIONS,
+  NFTA_RULE_CHAIN,
+  NFTA_RULE_HANDLE,
+  NFTA_RULE_EXPRESSIONS,
+  NFTA_RULE_COMPAT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_RULE_COMPAT,
- NFTA_RULE_POSITION,
- __NFTA_RULE_MAX
+  NFTA_RULE_POSITION,
+  NFTA_RULE_USERDATA,
+  __NFTA_RULE_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
 enum nft_rule_compat_flags {
- NFT_RULE_COMPAT_F_INV = (1 << 1),
- NFT_RULE_COMPAT_F_MASK = NFT_RULE_COMPAT_F_INV,
+  NFT_RULE_COMPAT_F_INV = (1 << 1),
+  NFT_RULE_COMPAT_F_MASK = NFT_RULE_COMPAT_F_INV,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nft_rule_compat_attributes {
- NFTA_RULE_COMPAT_UNSPEC,
- NFTA_RULE_COMPAT_PROTO,
+  NFTA_RULE_COMPAT_UNSPEC,
+  NFTA_RULE_COMPAT_PROTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_RULE_COMPAT_FLAGS,
- __NFTA_RULE_COMPAT_MAX
+  NFTA_RULE_COMPAT_FLAGS,
+  __NFTA_RULE_COMPAT_MAX
 };
 #define NFTA_RULE_COMPAT_MAX (__NFTA_RULE_COMPAT_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_set_flags {
- NFT_SET_ANONYMOUS = 0x1,
- NFT_SET_CONSTANT = 0x2,
- NFT_SET_INTERVAL = 0x4,
+  NFT_SET_ANONYMOUS = 0x1,
+  NFT_SET_CONSTANT = 0x2,
+  NFT_SET_INTERVAL = 0x4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_SET_MAP = 0x8,
+  NFT_SET_MAP = 0x8,
 };
+enum nft_set_policies {
+  NFT_SET_POL_PERFORMANCE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_SET_POL_MEMORY,
+};
+enum nft_set_desc_attributes {
+  NFTA_SET_DESC_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_SET_DESC_SIZE,
+  __NFTA_SET_DESC_MAX
+};
+#define NFTA_SET_DESC_MAX (__NFTA_SET_DESC_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_set_attributes {
- NFTA_SET_UNSPEC,
+  NFTA_SET_UNSPEC,
+  NFTA_SET_TABLE,
+  NFTA_SET_NAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_SET_TABLE,
- NFTA_SET_NAME,
- NFTA_SET_FLAGS,
- NFTA_SET_KEY_TYPE,
+  NFTA_SET_FLAGS,
+  NFTA_SET_KEY_TYPE,
+  NFTA_SET_KEY_LEN,
+  NFTA_SET_DATA_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_SET_KEY_LEN,
- NFTA_SET_DATA_TYPE,
- NFTA_SET_DATA_LEN,
- __NFTA_SET_MAX
+  NFTA_SET_DATA_LEN,
+  NFTA_SET_POLICY,
+  NFTA_SET_DESC,
+  NFTA_SET_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __NFTA_SET_MAX
 };
 #define NFTA_SET_MAX (__NFTA_SET_MAX - 1)
 enum nft_set_elem_flags {
- NFT_SET_ELEM_INTERVAL_END = 0x1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_SET_ELEM_INTERVAL_END = 0x1,
 };
 enum nft_set_elem_attributes {
- NFTA_SET_ELEM_UNSPEC,
- NFTA_SET_ELEM_KEY,
+  NFTA_SET_ELEM_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_SET_ELEM_DATA,
- NFTA_SET_ELEM_FLAGS,
- __NFTA_SET_ELEM_MAX
+  NFTA_SET_ELEM_KEY,
+  NFTA_SET_ELEM_DATA,
+  NFTA_SET_ELEM_FLAGS,
+  __NFTA_SET_ELEM_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1)
 enum nft_set_elem_list_attributes {
- NFTA_SET_ELEM_LIST_UNSPEC,
- NFTA_SET_ELEM_LIST_TABLE,
+  NFTA_SET_ELEM_LIST_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_SET_ELEM_LIST_SET,
- NFTA_SET_ELEM_LIST_ELEMENTS,
- __NFTA_SET_ELEM_LIST_MAX
+  NFTA_SET_ELEM_LIST_TABLE,
+  NFTA_SET_ELEM_LIST_SET,
+  NFTA_SET_ELEM_LIST_ELEMENTS,
+  NFTA_SET_ELEM_LIST_SET_ID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __NFTA_SET_ELEM_LIST_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_SET_ELEM_LIST_MAX (__NFTA_SET_ELEM_LIST_MAX - 1)
 enum nft_data_types {
- NFT_DATA_VALUE,
- NFT_DATA_VERDICT = 0xffffff00U,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_DATA_VALUE,
+  NFT_DATA_VERDICT = 0xffffff00U,
 };
 #define NFT_DATA_RESERVED_MASK 0xffffff00U
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_data_attributes {
- NFTA_DATA_UNSPEC,
+  NFTA_DATA_UNSPEC,
+  NFTA_DATA_VALUE,
+  NFTA_DATA_VERDICT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_DATA_VALUE,
- NFTA_DATA_VERDICT,
- __NFTA_DATA_MAX
+  __NFTA_DATA_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_DATA_MAX (__NFTA_DATA_MAX - 1)
 enum nft_verdict_attributes {
- NFTA_VERDICT_UNSPEC,
- NFTA_VERDICT_CODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_VERDICT_CHAIN,
- __NFTA_VERDICT_MAX
+  NFTA_VERDICT_UNSPEC,
+  NFTA_VERDICT_CODE,
+  NFTA_VERDICT_CHAIN,
+  __NFTA_VERDICT_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFTA_VERDICT_MAX (__NFTA_VERDICT_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_expr_attributes {
- NFTA_EXPR_UNSPEC,
- NFTA_EXPR_NAME,
- NFTA_EXPR_DATA,
+  NFTA_EXPR_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFTA_EXPR_MAX
+  NFTA_EXPR_NAME,
+  NFTA_EXPR_DATA,
+  __NFTA_EXPR_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_EXPR_MAX (__NFTA_EXPR_MAX - 1)
 enum nft_immediate_attributes {
+  NFTA_IMMEDIATE_UNSPEC,
+  NFTA_IMMEDIATE_DREG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_IMMEDIATE_UNSPEC,
- NFTA_IMMEDIATE_DREG,
- NFTA_IMMEDIATE_DATA,
- __NFTA_IMMEDIATE_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_IMMEDIATE_DATA,
+  __NFTA_IMMEDIATE_MAX
 };
 #define NFTA_IMMEDIATE_MAX (__NFTA_IMMEDIATE_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_bitwise_attributes {
- NFTA_BITWISE_UNSPEC,
+  NFTA_BITWISE_UNSPEC,
+  NFTA_BITWISE_SREG,
+  NFTA_BITWISE_DREG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_BITWISE_SREG,
- NFTA_BITWISE_DREG,
- NFTA_BITWISE_LEN,
- NFTA_BITWISE_MASK,
+  NFTA_BITWISE_LEN,
+  NFTA_BITWISE_MASK,
+  NFTA_BITWISE_XOR,
+  __NFTA_BITWISE_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_BITWISE_XOR,
- __NFTA_BITWISE_MAX
 };
 #define NFTA_BITWISE_MAX (__NFTA_BITWISE_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_byteorder_ops {
- NFT_BYTEORDER_NTOH,
- NFT_BYTEORDER_HTON,
+  NFT_BYTEORDER_NTOH,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_BYTEORDER_HTON,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_byteorder_attributes {
- NFTA_BYTEORDER_UNSPEC,
- NFTA_BYTEORDER_SREG,
- NFTA_BYTEORDER_DREG,
+  NFTA_BYTEORDER_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_BYTEORDER_OP,
- NFTA_BYTEORDER_LEN,
- NFTA_BYTEORDER_SIZE,
- __NFTA_BYTEORDER_MAX
+  NFTA_BYTEORDER_SREG,
+  NFTA_BYTEORDER_DREG,
+  NFTA_BYTEORDER_OP,
+  NFTA_BYTEORDER_LEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_BYTEORDER_SIZE,
+  __NFTA_BYTEORDER_MAX
 };
 #define NFTA_BYTEORDER_MAX (__NFTA_BYTEORDER_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_cmp_ops {
- NFT_CMP_EQ,
+  NFT_CMP_EQ,
+  NFT_CMP_NEQ,
+  NFT_CMP_LT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_CMP_NEQ,
- NFT_CMP_LT,
- NFT_CMP_LTE,
- NFT_CMP_GT,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_CMP_GTE,
+  NFT_CMP_LTE,
+  NFT_CMP_GT,
+  NFT_CMP_GTE,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_cmp_attributes {
- NFTA_CMP_UNSPEC,
+  NFTA_CMP_UNSPEC,
+  NFTA_CMP_SREG,
+  NFTA_CMP_OP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_CMP_SREG,
- NFTA_CMP_OP,
- NFTA_CMP_DATA,
- __NFTA_CMP_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_CMP_DATA,
+  __NFTA_CMP_MAX
 };
 #define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_lookup_attributes {
- NFTA_LOOKUP_UNSPEC,
+  NFTA_LOOKUP_UNSPEC,
+  NFTA_LOOKUP_SET,
+  NFTA_LOOKUP_SREG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_LOOKUP_SET,
- NFTA_LOOKUP_SREG,
- NFTA_LOOKUP_DREG,
- __NFTA_LOOKUP_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_LOOKUP_DREG,
+  NFTA_LOOKUP_SET_ID,
+  __NFTA_LOOKUP_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_LOOKUP_MAX (__NFTA_LOOKUP_MAX - 1)
 enum nft_payload_bases {
- NFT_PAYLOAD_LL_HEADER,
+  NFT_PAYLOAD_LL_HEADER,
+  NFT_PAYLOAD_NETWORK_HEADER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_PAYLOAD_NETWORK_HEADER,
- NFT_PAYLOAD_TRANSPORT_HEADER,
+  NFT_PAYLOAD_TRANSPORT_HEADER,
 };
 enum nft_payload_attributes {
+  NFTA_PAYLOAD_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_PAYLOAD_UNSPEC,
- NFTA_PAYLOAD_DREG,
- NFTA_PAYLOAD_BASE,
- NFTA_PAYLOAD_OFFSET,
+  NFTA_PAYLOAD_DREG,
+  NFTA_PAYLOAD_BASE,
+  NFTA_PAYLOAD_OFFSET,
+  NFTA_PAYLOAD_LEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_PAYLOAD_LEN,
- __NFTA_PAYLOAD_MAX
+  __NFTA_PAYLOAD_MAX
 };
 #define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_exthdr_attributes {
- NFTA_EXTHDR_UNSPEC,
- NFTA_EXTHDR_DREG,
- NFTA_EXTHDR_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_EXTHDR_OFFSET,
- NFTA_EXTHDR_LEN,
- __NFTA_EXTHDR_MAX
+  NFTA_EXTHDR_UNSPEC,
+  NFTA_EXTHDR_DREG,
+  NFTA_EXTHDR_TYPE,
+  NFTA_EXTHDR_OFFSET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_EXTHDR_LEN,
+  __NFTA_EXTHDR_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_EXTHDR_MAX (__NFTA_EXTHDR_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_meta_keys {
- NFT_META_LEN,
- NFT_META_PROTOCOL,
+  NFT_META_LEN,
+  NFT_META_PROTOCOL,
+  NFT_META_PRIORITY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_META_PRIORITY,
- NFT_META_MARK,
- NFT_META_IIF,
- NFT_META_OIF,
+  NFT_META_MARK,
+  NFT_META_IIF,
+  NFT_META_OIF,
+  NFT_META_IIFNAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_META_IIFNAME,
- NFT_META_OIFNAME,
- NFT_META_IIFTYPE,
- NFT_META_OIFTYPE,
+  NFT_META_OIFNAME,
+  NFT_META_IIFTYPE,
+  NFT_META_OIFTYPE,
+  NFT_META_SKUID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_META_SKUID,
- NFT_META_SKGID,
- NFT_META_NFTRACE,
- NFT_META_RTCLASSID,
+  NFT_META_SKGID,
+  NFT_META_NFTRACE,
+  NFT_META_RTCLASSID,
+  NFT_META_SECMARK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_META_SECMARK,
- NFT_META_NFPROTO,
- NFT_META_L4PROTO,
+  NFT_META_NFPROTO,
+  NFT_META_L4PROTO,
+  NFT_META_BRI_IIFNAME,
+  NFT_META_BRI_OIFNAME,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_META_PKTTYPE,
+  NFT_META_CPU,
+  NFT_META_IIFGROUP,
+  NFT_META_OIFGROUP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_meta_attributes {
- NFTA_META_UNSPEC,
- NFTA_META_DREG,
- NFTA_META_KEY,
+  NFTA_META_UNSPEC,
+  NFTA_META_DREG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_META_SREG,
- __NFTA_META_MAX
+  NFTA_META_KEY,
+  NFTA_META_SREG,
+  __NFTA_META_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_META_MAX (__NFTA_META_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_ct_keys {
- NFT_CT_STATE,
- NFT_CT_DIRECTION,
- NFT_CT_STATUS,
+  NFT_CT_STATE,
+  NFT_CT_DIRECTION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_CT_MARK,
- NFT_CT_SECMARK,
- NFT_CT_EXPIRATION,
- NFT_CT_HELPER,
+  NFT_CT_STATUS,
+  NFT_CT_MARK,
+  NFT_CT_SECMARK,
+  NFT_CT_EXPIRATION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_CT_L3PROTOCOL,
- NFT_CT_SRC,
- NFT_CT_DST,
- NFT_CT_PROTOCOL,
+  NFT_CT_HELPER,
+  NFT_CT_L3PROTOCOL,
+  NFT_CT_SRC,
+  NFT_CT_DST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_CT_PROTO_SRC,
- NFT_CT_PROTO_DST,
+  NFT_CT_PROTOCOL,
+  NFT_CT_PROTO_SRC,
+  NFT_CT_PROTO_DST,
+  NFT_CT_LABELS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nft_ct_attributes {
+  NFTA_CT_UNSPEC,
+  NFTA_CT_DREG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_CT_UNSPEC,
- NFTA_CT_DREG,
- NFTA_CT_KEY,
- NFTA_CT_DIRECTION,
+  NFTA_CT_KEY,
+  NFTA_CT_DIRECTION,
+  NFTA_CT_SREG,
+  __NFTA_CT_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_CT_SREG,
- __NFTA_CT_MAX
 };
 #define NFTA_CT_MAX (__NFTA_CT_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_limit_attributes {
- NFTA_LIMIT_UNSPEC,
- NFTA_LIMIT_RATE,
- NFTA_LIMIT_UNIT,
+  NFTA_LIMIT_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFTA_LIMIT_MAX
+  NFTA_LIMIT_RATE,
+  NFTA_LIMIT_UNIT,
+  __NFTA_LIMIT_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_LIMIT_MAX (__NFTA_LIMIT_MAX - 1)
 enum nft_counter_attributes {
+  NFTA_COUNTER_UNSPEC,
+  NFTA_COUNTER_BYTES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_COUNTER_UNSPEC,
- NFTA_COUNTER_BYTES,
- NFTA_COUNTER_PACKETS,
- __NFTA_COUNTER_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_COUNTER_PACKETS,
+  __NFTA_COUNTER_MAX
 };
 #define NFTA_COUNTER_MAX (__NFTA_COUNTER_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nft_log_attributes {
- NFTA_LOG_UNSPEC,
+  NFTA_LOG_UNSPEC,
+  NFTA_LOG_GROUP,
+  NFTA_LOG_PREFIX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_LOG_GROUP,
- NFTA_LOG_PREFIX,
- NFTA_LOG_SNAPLEN,
- NFTA_LOG_QTHRESHOLD,
+  NFTA_LOG_SNAPLEN,
+  NFTA_LOG_QTHRESHOLD,
+  NFTA_LOG_LEVEL,
+  NFTA_LOG_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFTA_LOG_MAX
+  __NFTA_LOG_MAX
 };
 #define NFTA_LOG_MAX (__NFTA_LOG_MAX - 1)
 enum nft_queue_attributes {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_QUEUE_UNSPEC,
- NFTA_QUEUE_NUM,
- NFTA_QUEUE_TOTAL,
- NFTA_QUEUE_FLAGS,
+  NFTA_QUEUE_UNSPEC,
+  NFTA_QUEUE_NUM,
+  NFTA_QUEUE_TOTAL,
+  NFTA_QUEUE_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFTA_QUEUE_MAX
+  __NFTA_QUEUE_MAX
 };
 #define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1)
 #define NFT_QUEUE_FLAG_BYPASS 0x01
@@ -419,36 +454,63 @@
 #define NFT_QUEUE_FLAG_CPU_FANOUT 0x02
 #define NFT_QUEUE_FLAG_MASK 0x03
 enum nft_reject_types {
- NFT_REJECT_ICMP_UNREACH,
+  NFT_REJECT_ICMP_UNREACH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFT_REJECT_TCP_RST,
+  NFT_REJECT_TCP_RST,
+  NFT_REJECT_ICMPX_UNREACH,
 };
+enum nft_reject_inet_code {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_REJECT_ICMPX_NO_ROUTE = 0,
+  NFT_REJECT_ICMPX_PORT_UNREACH,
+  NFT_REJECT_ICMPX_HOST_UNREACH,
+  NFT_REJECT_ICMPX_ADMIN_PROHIBITED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __NFT_REJECT_ICMPX_MAX
+};
+#define NFT_REJECT_ICMPX_MAX (__NFT_REJECT_ICMPX_MAX - 1)
 enum nft_reject_attributes {
- NFTA_REJECT_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_REJECT_TYPE,
- NFTA_REJECT_ICMP_CODE,
- __NFTA_REJECT_MAX
+  NFTA_REJECT_UNSPEC,
+  NFTA_REJECT_TYPE,
+  NFTA_REJECT_ICMP_CODE,
+  __NFTA_REJECT_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFTA_REJECT_MAX (__NFTA_REJECT_MAX - 1)
 enum nft_nat_types {
- NFT_NAT_SNAT,
- NFT_NAT_DNAT,
+  NFT_NAT_SNAT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFT_NAT_DNAT,
 };
 enum nft_nat_attributes {
- NFTA_NAT_UNSPEC,
- NFTA_NAT_TYPE,
+  NFTA_NAT_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_NAT_FAMILY,
- NFTA_NAT_REG_ADDR_MIN,
- NFTA_NAT_REG_ADDR_MAX,
- NFTA_NAT_REG_PROTO_MIN,
+  NFTA_NAT_TYPE,
+  NFTA_NAT_FAMILY,
+  NFTA_NAT_REG_ADDR_MIN,
+  NFTA_NAT_REG_ADDR_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_NAT_REG_PROTO_MAX,
- __NFTA_NAT_MAX
+  NFTA_NAT_REG_PROTO_MIN,
+  NFTA_NAT_REG_PROTO_MAX,
+  NFTA_NAT_FLAGS,
+  __NFTA_NAT_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1)
+enum nft_masq_attributes {
+  NFTA_MASQ_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFTA_MASQ_FLAGS,
+  __NFTA_MASQ_MAX
+};
+#define NFTA_MASQ_MAX (__NFTA_MASQ_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum nft_gen_attributes {
+  NFTA_GEN_UNSPEC,
+  NFTA_GEN_ID,
+  __NFTA_GEN_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define NFTA_GEN_MAX (__NFTA_GEN_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables_compat.h b/libc/kernel/uapi/linux/netfilter/nf_tables_compat.h
index 3367dae..ae1d336 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables_compat.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables_compat.h
@@ -19,39 +19,39 @@
 #ifndef _NFT_COMPAT_NFNETLINK_H_
 #define _NFT_COMPAT_NFNETLINK_H_
 enum nft_target_attributes {
- NFTA_TARGET_UNSPEC,
+  NFTA_TARGET_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_TARGET_NAME,
- NFTA_TARGET_REV,
- NFTA_TARGET_INFO,
- __NFTA_TARGET_MAX
+  NFTA_TARGET_NAME,
+  NFTA_TARGET_REV,
+  NFTA_TARGET_INFO,
+  __NFTA_TARGET_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFTA_TARGET_MAX (__NFTA_TARGET_MAX - 1)
 enum nft_match_attributes {
- NFTA_MATCH_UNSPEC,
+  NFTA_MATCH_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_MATCH_NAME,
- NFTA_MATCH_REV,
- NFTA_MATCH_INFO,
- __NFTA_MATCH_MAX
+  NFTA_MATCH_NAME,
+  NFTA_MATCH_REV,
+  NFTA_MATCH_INFO,
+  __NFTA_MATCH_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFTA_MATCH_MAX (__NFTA_MATCH_MAX - 1)
 #define NFT_COMPAT_NAME_MAX 32
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFNL_MSG_COMPAT_GET,
- NFNL_MSG_COMPAT_MAX
+  NFNL_MSG_COMPAT_GET,
+  NFNL_MSG_COMPAT_MAX
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFTA_COMPAT_UNSPEC = 0,
- NFTA_COMPAT_NAME,
- NFTA_COMPAT_REV,
- NFTA_COMPAT_TYPE,
+  NFTA_COMPAT_UNSPEC = 0,
+  NFTA_COMPAT_NAME,
+  NFTA_COMPAT_REV,
+  NFTA_COMPAT_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFTA_COMPAT_MAX,
+  __NFTA_COMPAT_MAX,
 };
 #define NFTA_COMPAT_MAX (__NFTA_COMPAT_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink.h b/libc/kernel/uapi/linux/netfilter/nfnetlink.h
index c04f62c..ea06f08 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink.h
@@ -22,57 +22,59 @@
 #include <linux/netfilter/nfnetlink_compat.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfnetlink_groups {
- NFNLGRP_NONE,
+  NFNLGRP_NONE,
 #define NFNLGRP_NONE NFNLGRP_NONE
- NFNLGRP_CONNTRACK_NEW,
+  NFNLGRP_CONNTRACK_NEW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNLGRP_CONNTRACK_NEW NFNLGRP_CONNTRACK_NEW
- NFNLGRP_CONNTRACK_UPDATE,
+  NFNLGRP_CONNTRACK_UPDATE,
 #define NFNLGRP_CONNTRACK_UPDATE NFNLGRP_CONNTRACK_UPDATE
- NFNLGRP_CONNTRACK_DESTROY,
+  NFNLGRP_CONNTRACK_DESTROY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNLGRP_CONNTRACK_DESTROY NFNLGRP_CONNTRACK_DESTROY
- NFNLGRP_CONNTRACK_EXP_NEW,
+  NFNLGRP_CONNTRACK_EXP_NEW,
 #define NFNLGRP_CONNTRACK_EXP_NEW NFNLGRP_CONNTRACK_EXP_NEW
- NFNLGRP_CONNTRACK_EXP_UPDATE,
+  NFNLGRP_CONNTRACK_EXP_UPDATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNLGRP_CONNTRACK_EXP_UPDATE NFNLGRP_CONNTRACK_EXP_UPDATE
- NFNLGRP_CONNTRACK_EXP_DESTROY,
+  NFNLGRP_CONNTRACK_EXP_DESTROY,
 #define NFNLGRP_CONNTRACK_EXP_DESTROY NFNLGRP_CONNTRACK_EXP_DESTROY
- NFNLGRP_NFTABLES,
+  NFNLGRP_NFTABLES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNLGRP_NFTABLES NFNLGRP_NFTABLES
- __NFNLGRP_MAX,
+  NFNLGRP_ACCT_QUOTA,
+#define NFNLGRP_ACCT_QUOTA NFNLGRP_ACCT_QUOTA
+  __NFNLGRP_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFNLGRP_MAX (__NFNLGRP_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfgenmsg {
- __u8 nfgen_family;
- __u8 version;
- __be16 res_id;
+  __u8 nfgen_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 version;
+  __be16 res_id;
 };
 #define NFNETLINK_V0 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_ID(x) ((x & 0xff00) >> 8)
 #define NFNL_MSG_TYPE(x) (x & 0x00ff)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_NONE 0
 #define NFNL_SUBSYS_CTNETLINK 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_CTNETLINK_EXP 2
 #define NFNL_SUBSYS_QUEUE 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_ULOG 4
 #define NFNL_SUBSYS_OSF 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_IPSET 6
 #define NFNL_SUBSYS_ACCT 7
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_CTNETLINK_TIMEOUT 8
 #define NFNL_SUBSYS_CTHELPER 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_NFTABLES 10
 #define NFNL_SUBSYS_NFT_COMPAT 11
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_COUNT 12
 #define NFNL_MSG_BATCH_BEGIN NLMSG_MIN_TYPE
-#define NFNL_MSG_BATCH_END NLMSG_MIN_TYPE+1
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NFNL_MSG_BATCH_END NLMSG_MIN_TYPE + 1
+#endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_acct.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_acct.h
index 01f13ef..2b71112 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_acct.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_acct.h
@@ -23,23 +23,43 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 enum nfnl_acct_msg_types {
- NFNL_MSG_ACCT_NEW,
- NFNL_MSG_ACCT_GET,
+  NFNL_MSG_ACCT_NEW,
+  NFNL_MSG_ACCT_GET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFNL_MSG_ACCT_GET_CTRZERO,
- NFNL_MSG_ACCT_DEL,
- NFNL_MSG_ACCT_MAX
+  NFNL_MSG_ACCT_GET_CTRZERO,
+  NFNL_MSG_ACCT_DEL,
+  NFNL_MSG_ACCT_OVERQUOTA,
+  NFNL_MSG_ACCT_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+enum nfnl_acct_flags {
+  NFACCT_F_QUOTA_PKTS = (1 << 0),
+  NFACCT_F_QUOTA_BYTES = (1 << 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFACCT_F_OVERQUOTA = (1 << 2),
+};
 enum nfnl_acct_type {
- NFACCT_UNSPEC,
- NFACCT_NAME,
- NFACCT_PKTS,
+  NFACCT_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFACCT_BYTES,
- NFACCT_USE,
- __NFACCT_MAX
+  NFACCT_NAME,
+  NFACCT_PKTS,
+  NFACCT_BYTES,
+  NFACCT_USE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFACCT_FLAGS,
+  NFACCT_QUOTA,
+  NFACCT_FILTER,
+  __NFACCT_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define NFACCT_MAX (__NFACCT_MAX - 1)
+enum nfnl_attr_filter_type {
+  NFACCT_FILTER_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NFACCT_FILTER_MASK,
+  NFACCT_FILTER_VALUE,
+  __NFACCT_FILTER_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NFACCT_MAX (__NFACCT_MAX - 1)
+#define NFACCT_FILTER_MAX (__NFACCT_FILTER_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_compat.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_compat.h
index 010b957..1761c49 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_compat.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_compat.h
@@ -28,8 +28,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_NETLINK_CONNTRACK_EXP_DESTROY 0x00000020
 struct nfattr {
- __u16 nfa_len;
- __u16 nfa_type;
+  __u16 nfa_len;
+  __u16 nfa_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFNL_NFA_NEST 0x8000
@@ -37,18 +37,21 @@
 #define NFA_ALIGNTO 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFA_ALIGN(len) (((len) + NFA_ALIGNTO - 1) & ~(NFA_ALIGNTO - 1))
-#define NFA_OK(nfa,len) ((len) > 0 && (nfa)->nfa_len >= sizeof(struct nfattr)   && (nfa)->nfa_len <= (len))
-#define NFA_NEXT(nfa,attrlen) ((attrlen) -= NFA_ALIGN((nfa)->nfa_len),   (struct nfattr *)(((char *)(nfa)) + NFA_ALIGN((nfa)->nfa_len)))
+#define NFA_OK(nfa,len) ((len) > 0 && (nfa)->nfa_len >= sizeof(struct nfattr) && (nfa)->nfa_len <= (len))
+#define NFA_NEXT(nfa,attrlen) ((attrlen) -= NFA_ALIGN((nfa)->nfa_len), (struct nfattr *) (((char *) (nfa)) + NFA_ALIGN((nfa)->nfa_len)))
 #define NFA_LENGTH(len) (NFA_ALIGN(sizeof(struct nfattr)) + (len))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFA_SPACE(len) NFA_ALIGN(NFA_LENGTH(len))
-#define NFA_DATA(nfa) ((void *)(((char *)(nfa)) + NFA_LENGTH(0)))
-#define NFA_PAYLOAD(nfa) ((int)((nfa)->nfa_len) - NFA_LENGTH(0))
-#define NFA_NEST(skb, type)  ({ struct nfattr *__start = (struct nfattr *)skb_tail_pointer(skb);   NFA_PUT(skb, (NFNL_NFA_NEST | type), 0, NULL);   __start; })
+#define NFA_DATA(nfa) ((void *) (((char *) (nfa)) + NFA_LENGTH(0)))
+#define NFA_PAYLOAD(nfa) ((int) ((nfa)->nfa_len) - NFA_LENGTH(0))
+#define NFA_NEST(skb,type) \
+({ struct nfattr * __start = (struct nfattr *) skb_tail_pointer(skb); NFA_PUT(skb, (NFNL_NFA_NEST | type), 0, NULL); __start; })
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NFA_NEST_END(skb, start)  ({ (start)->nfa_len = skb_tail_pointer(skb) - (unsigned char *)(start);   (skb)->len; })
-#define NFA_NEST_CANCEL(skb, start)  ({ if (start)   skb_trim(skb, (unsigned char *) (start) - (skb)->data);   -1; })
-#define NFM_NFA(n) ((struct nfattr *)(((char *)(n))   + NLMSG_ALIGN(sizeof(struct nfgenmsg))))
+#define NFA_NEST_END(skb,start) \
+({ (start)->nfa_len = skb_tail_pointer(skb) - (unsigned char *) (start); (skb)->len; })
+#define NFA_NEST_CANCEL(skb,start) \
+({ if(start) skb_trim(skb, (unsigned char *) (start) - (skb)->data); - 1; })
+#define NFM_NFA(n) ((struct nfattr *) (((char *) (n)) + NLMSG_ALIGN(sizeof(struct nfgenmsg))))
 #define NFM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct nfgenmsg))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
index 2b22c4f..88e404b 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
@@ -21,292 +21,292 @@
 #include <linux/netfilter/nfnetlink.h>
 enum cntl_msg_types {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCTNL_MSG_CT_NEW,
- IPCTNL_MSG_CT_GET,
- IPCTNL_MSG_CT_DELETE,
- IPCTNL_MSG_CT_GET_CTRZERO,
+  IPCTNL_MSG_CT_NEW,
+  IPCTNL_MSG_CT_GET,
+  IPCTNL_MSG_CT_DELETE,
+  IPCTNL_MSG_CT_GET_CTRZERO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCTNL_MSG_CT_GET_STATS_CPU,
- IPCTNL_MSG_CT_GET_STATS,
- IPCTNL_MSG_CT_GET_DYING,
- IPCTNL_MSG_CT_GET_UNCONFIRMED,
+  IPCTNL_MSG_CT_GET_STATS_CPU,
+  IPCTNL_MSG_CT_GET_STATS,
+  IPCTNL_MSG_CT_GET_DYING,
+  IPCTNL_MSG_CT_GET_UNCONFIRMED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCTNL_MSG_MAX
+  IPCTNL_MSG_MAX
 };
 enum ctnl_exp_msg_types {
- IPCTNL_MSG_EXP_NEW,
+  IPCTNL_MSG_EXP_NEW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCTNL_MSG_EXP_GET,
- IPCTNL_MSG_EXP_DELETE,
- IPCTNL_MSG_EXP_GET_STATS_CPU,
- IPCTNL_MSG_EXP_MAX
+  IPCTNL_MSG_EXP_GET,
+  IPCTNL_MSG_EXP_DELETE,
+  IPCTNL_MSG_EXP_GET_STATS_CPU,
+  IPCTNL_MSG_EXP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum ctattr_type {
- CTA_UNSPEC,
- CTA_TUPLE_ORIG,
+  CTA_UNSPEC,
+  CTA_TUPLE_ORIG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TUPLE_REPLY,
- CTA_STATUS,
- CTA_PROTOINFO,
- CTA_HELP,
+  CTA_TUPLE_REPLY,
+  CTA_STATUS,
+  CTA_PROTOINFO,
+  CTA_HELP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_NAT_SRC,
+  CTA_NAT_SRC,
 #define CTA_NAT CTA_NAT_SRC
- CTA_TIMEOUT,
- CTA_MARK,
+  CTA_TIMEOUT,
+  CTA_MARK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_COUNTERS_ORIG,
- CTA_COUNTERS_REPLY,
- CTA_USE,
- CTA_ID,
+  CTA_COUNTERS_ORIG,
+  CTA_COUNTERS_REPLY,
+  CTA_USE,
+  CTA_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_NAT_DST,
- CTA_TUPLE_MASTER,
- CTA_SEQ_ADJ_ORIG,
- CTA_NAT_SEQ_ADJ_ORIG = CTA_SEQ_ADJ_ORIG,
+  CTA_NAT_DST,
+  CTA_TUPLE_MASTER,
+  CTA_SEQ_ADJ_ORIG,
+  CTA_NAT_SEQ_ADJ_ORIG = CTA_SEQ_ADJ_ORIG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_SEQ_ADJ_REPLY,
- CTA_NAT_SEQ_ADJ_REPLY = CTA_SEQ_ADJ_REPLY,
- CTA_SECMARK,
- CTA_ZONE,
+  CTA_SEQ_ADJ_REPLY,
+  CTA_NAT_SEQ_ADJ_REPLY = CTA_SEQ_ADJ_REPLY,
+  CTA_SECMARK,
+  CTA_ZONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_SECCTX,
- CTA_TIMESTAMP,
- CTA_MARK_MASK,
- CTA_LABELS,
+  CTA_SECCTX,
+  CTA_TIMESTAMP,
+  CTA_MARK_MASK,
+  CTA_LABELS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_LABELS_MASK,
- __CTA_MAX
+  CTA_LABELS_MASK,
+  __CTA_MAX
 };
 #define CTA_MAX (__CTA_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ctattr_tuple {
- CTA_TUPLE_UNSPEC,
- CTA_TUPLE_IP,
- CTA_TUPLE_PROTO,
+  CTA_TUPLE_UNSPEC,
+  CTA_TUPLE_IP,
+  CTA_TUPLE_PROTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_TUPLE_MAX
+  __CTA_TUPLE_MAX
 };
 #define CTA_TUPLE_MAX (__CTA_TUPLE_MAX - 1)
 enum ctattr_ip {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_IP_UNSPEC,
- CTA_IP_V4_SRC,
- CTA_IP_V4_DST,
- CTA_IP_V6_SRC,
+  CTA_IP_UNSPEC,
+  CTA_IP_V4_SRC,
+  CTA_IP_V4_DST,
+  CTA_IP_V6_SRC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_IP_V6_DST,
- __CTA_IP_MAX
+  CTA_IP_V6_DST,
+  __CTA_IP_MAX
 };
 #define CTA_IP_MAX (__CTA_IP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ctattr_l4proto {
- CTA_PROTO_UNSPEC,
- CTA_PROTO_NUM,
- CTA_PROTO_SRC_PORT,
+  CTA_PROTO_UNSPEC,
+  CTA_PROTO_NUM,
+  CTA_PROTO_SRC_PORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_PROTO_DST_PORT,
- CTA_PROTO_ICMP_ID,
- CTA_PROTO_ICMP_TYPE,
- CTA_PROTO_ICMP_CODE,
+  CTA_PROTO_DST_PORT,
+  CTA_PROTO_ICMP_ID,
+  CTA_PROTO_ICMP_TYPE,
+  CTA_PROTO_ICMP_CODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_PROTO_ICMPV6_ID,
- CTA_PROTO_ICMPV6_TYPE,
- CTA_PROTO_ICMPV6_CODE,
- __CTA_PROTO_MAX
+  CTA_PROTO_ICMPV6_ID,
+  CTA_PROTO_ICMPV6_TYPE,
+  CTA_PROTO_ICMPV6_CODE,
+  __CTA_PROTO_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CTA_PROTO_MAX (__CTA_PROTO_MAX - 1)
 enum ctattr_protoinfo {
- CTA_PROTOINFO_UNSPEC,
+  CTA_PROTOINFO_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_PROTOINFO_TCP,
- CTA_PROTOINFO_DCCP,
- CTA_PROTOINFO_SCTP,
- __CTA_PROTOINFO_MAX
+  CTA_PROTOINFO_TCP,
+  CTA_PROTOINFO_DCCP,
+  CTA_PROTOINFO_SCTP,
+  __CTA_PROTOINFO_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1)
 enum ctattr_protoinfo_tcp {
- CTA_PROTOINFO_TCP_UNSPEC,
+  CTA_PROTOINFO_TCP_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_PROTOINFO_TCP_STATE,
- CTA_PROTOINFO_TCP_WSCALE_ORIGINAL,
- CTA_PROTOINFO_TCP_WSCALE_REPLY,
- CTA_PROTOINFO_TCP_FLAGS_ORIGINAL,
+  CTA_PROTOINFO_TCP_STATE,
+  CTA_PROTOINFO_TCP_WSCALE_ORIGINAL,
+  CTA_PROTOINFO_TCP_WSCALE_REPLY,
+  CTA_PROTOINFO_TCP_FLAGS_ORIGINAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_PROTOINFO_TCP_FLAGS_REPLY,
- __CTA_PROTOINFO_TCP_MAX
+  CTA_PROTOINFO_TCP_FLAGS_REPLY,
+  __CTA_PROTOINFO_TCP_MAX
 };
 #define CTA_PROTOINFO_TCP_MAX (__CTA_PROTOINFO_TCP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ctattr_protoinfo_dccp {
- CTA_PROTOINFO_DCCP_UNSPEC,
- CTA_PROTOINFO_DCCP_STATE,
- CTA_PROTOINFO_DCCP_ROLE,
+  CTA_PROTOINFO_DCCP_UNSPEC,
+  CTA_PROTOINFO_DCCP_STATE,
+  CTA_PROTOINFO_DCCP_ROLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ,
- __CTA_PROTOINFO_DCCP_MAX,
+  CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ,
+  __CTA_PROTOINFO_DCCP_MAX,
 };
 #define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ctattr_protoinfo_sctp {
- CTA_PROTOINFO_SCTP_UNSPEC,
- CTA_PROTOINFO_SCTP_STATE,
- CTA_PROTOINFO_SCTP_VTAG_ORIGINAL,
+  CTA_PROTOINFO_SCTP_UNSPEC,
+  CTA_PROTOINFO_SCTP_STATE,
+  CTA_PROTOINFO_SCTP_VTAG_ORIGINAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_PROTOINFO_SCTP_VTAG_REPLY,
- __CTA_PROTOINFO_SCTP_MAX
+  CTA_PROTOINFO_SCTP_VTAG_REPLY,
+  __CTA_PROTOINFO_SCTP_MAX
 };
 #define CTA_PROTOINFO_SCTP_MAX (__CTA_PROTOINFO_SCTP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ctattr_counters {
- CTA_COUNTERS_UNSPEC,
- CTA_COUNTERS_PACKETS,
- CTA_COUNTERS_BYTES,
+  CTA_COUNTERS_UNSPEC,
+  CTA_COUNTERS_PACKETS,
+  CTA_COUNTERS_BYTES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_COUNTERS32_PACKETS,
- CTA_COUNTERS32_BYTES,
- __CTA_COUNTERS_MAX
+  CTA_COUNTERS32_PACKETS,
+  CTA_COUNTERS32_BYTES,
+  __CTA_COUNTERS_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1)
 enum ctattr_tstamp {
- CTA_TIMESTAMP_UNSPEC,
- CTA_TIMESTAMP_START,
+  CTA_TIMESTAMP_UNSPEC,
+  CTA_TIMESTAMP_START,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMESTAMP_STOP,
- __CTA_TIMESTAMP_MAX
+  CTA_TIMESTAMP_STOP,
+  __CTA_TIMESTAMP_MAX
 };
 #define CTA_TIMESTAMP_MAX (__CTA_TIMESTAMP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ctattr_nat {
- CTA_NAT_UNSPEC,
- CTA_NAT_V4_MINIP,
+  CTA_NAT_UNSPEC,
+  CTA_NAT_V4_MINIP,
 #define CTA_NAT_MINIP CTA_NAT_V4_MINIP
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_NAT_V4_MAXIP,
+  CTA_NAT_V4_MAXIP,
 #define CTA_NAT_MAXIP CTA_NAT_V4_MAXIP
- CTA_NAT_PROTO,
- CTA_NAT_V6_MINIP,
+  CTA_NAT_PROTO,
+  CTA_NAT_V6_MINIP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_NAT_V6_MAXIP,
- __CTA_NAT_MAX
+  CTA_NAT_V6_MAXIP,
+  __CTA_NAT_MAX
 };
 #define CTA_NAT_MAX (__CTA_NAT_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ctattr_protonat {
- CTA_PROTONAT_UNSPEC,
- CTA_PROTONAT_PORT_MIN,
- CTA_PROTONAT_PORT_MAX,
+  CTA_PROTONAT_UNSPEC,
+  CTA_PROTONAT_PORT_MIN,
+  CTA_PROTONAT_PORT_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_PROTONAT_MAX
+  __CTA_PROTONAT_MAX
 };
 #define CTA_PROTONAT_MAX (__CTA_PROTONAT_MAX - 1)
 enum ctattr_seqadj {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_SEQADJ_UNSPEC,
- CTA_SEQADJ_CORRECTION_POS,
- CTA_SEQADJ_OFFSET_BEFORE,
- CTA_SEQADJ_OFFSET_AFTER,
+  CTA_SEQADJ_UNSPEC,
+  CTA_SEQADJ_CORRECTION_POS,
+  CTA_SEQADJ_OFFSET_BEFORE,
+  CTA_SEQADJ_OFFSET_AFTER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_SEQADJ_MAX
+  __CTA_SEQADJ_MAX
 };
 #define CTA_SEQADJ_MAX (__CTA_SEQADJ_MAX - 1)
 enum ctattr_natseq {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_NAT_SEQ_UNSPEC,
- CTA_NAT_SEQ_CORRECTION_POS,
- CTA_NAT_SEQ_OFFSET_BEFORE,
- CTA_NAT_SEQ_OFFSET_AFTER,
+  CTA_NAT_SEQ_UNSPEC,
+  CTA_NAT_SEQ_CORRECTION_POS,
+  CTA_NAT_SEQ_OFFSET_BEFORE,
+  CTA_NAT_SEQ_OFFSET_AFTER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_NAT_SEQ_MAX
+  __CTA_NAT_SEQ_MAX
 };
 #define CTA_NAT_SEQ_MAX (__CTA_NAT_SEQ_MAX - 1)
 enum ctattr_expect {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_EXPECT_UNSPEC,
- CTA_EXPECT_MASTER,
- CTA_EXPECT_TUPLE,
- CTA_EXPECT_MASK,
+  CTA_EXPECT_UNSPEC,
+  CTA_EXPECT_MASTER,
+  CTA_EXPECT_TUPLE,
+  CTA_EXPECT_MASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_EXPECT_TIMEOUT,
- CTA_EXPECT_ID,
- CTA_EXPECT_HELP_NAME,
- CTA_EXPECT_ZONE,
+  CTA_EXPECT_TIMEOUT,
+  CTA_EXPECT_ID,
+  CTA_EXPECT_HELP_NAME,
+  CTA_EXPECT_ZONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_EXPECT_FLAGS,
- CTA_EXPECT_CLASS,
- CTA_EXPECT_NAT,
- CTA_EXPECT_FN,
+  CTA_EXPECT_FLAGS,
+  CTA_EXPECT_CLASS,
+  CTA_EXPECT_NAT,
+  CTA_EXPECT_FN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_EXPECT_MAX
+  __CTA_EXPECT_MAX
 };
 #define CTA_EXPECT_MAX (__CTA_EXPECT_MAX - 1)
 enum ctattr_expect_nat {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_EXPECT_NAT_UNSPEC,
- CTA_EXPECT_NAT_DIR,
- CTA_EXPECT_NAT_TUPLE,
- __CTA_EXPECT_NAT_MAX
+  CTA_EXPECT_NAT_UNSPEC,
+  CTA_EXPECT_NAT_DIR,
+  CTA_EXPECT_NAT_TUPLE,
+  __CTA_EXPECT_NAT_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CTA_EXPECT_NAT_MAX (__CTA_EXPECT_NAT_MAX - 1)
 enum ctattr_help {
- CTA_HELP_UNSPEC,
+  CTA_HELP_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_HELP_NAME,
- CTA_HELP_INFO,
- __CTA_HELP_MAX
+  CTA_HELP_NAME,
+  CTA_HELP_INFO,
+  __CTA_HELP_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTA_HELP_MAX (__CTA_HELP_MAX - 1)
 enum ctattr_secctx {
- CTA_SECCTX_UNSPEC,
- CTA_SECCTX_NAME,
+  CTA_SECCTX_UNSPEC,
+  CTA_SECCTX_NAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_SECCTX_MAX
+  __CTA_SECCTX_MAX
 };
 #define CTA_SECCTX_MAX (__CTA_SECCTX_MAX - 1)
 enum ctattr_stats_cpu {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_STATS_UNSPEC,
- CTA_STATS_SEARCHED,
- CTA_STATS_FOUND,
- CTA_STATS_NEW,
+  CTA_STATS_UNSPEC,
+  CTA_STATS_SEARCHED,
+  CTA_STATS_FOUND,
+  CTA_STATS_NEW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_STATS_INVALID,
- CTA_STATS_IGNORE,
- CTA_STATS_DELETE,
- CTA_STATS_DELETE_LIST,
+  CTA_STATS_INVALID,
+  CTA_STATS_IGNORE,
+  CTA_STATS_DELETE,
+  CTA_STATS_DELETE_LIST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_STATS_INSERT,
- CTA_STATS_INSERT_FAILED,
- CTA_STATS_DROP,
- CTA_STATS_EARLY_DROP,
+  CTA_STATS_INSERT,
+  CTA_STATS_INSERT_FAILED,
+  CTA_STATS_DROP,
+  CTA_STATS_EARLY_DROP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_STATS_ERROR,
- CTA_STATS_SEARCH_RESTART,
- __CTA_STATS_MAX,
+  CTA_STATS_ERROR,
+  CTA_STATS_SEARCH_RESTART,
+  __CTA_STATS_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTA_STATS_MAX (__CTA_STATS_MAX - 1)
 enum ctattr_stats_global {
- CTA_STATS_GLOBAL_UNSPEC,
- CTA_STATS_GLOBAL_ENTRIES,
+  CTA_STATS_GLOBAL_UNSPEC,
+  CTA_STATS_GLOBAL_ENTRIES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_STATS_GLOBAL_MAX,
+  __CTA_STATS_GLOBAL_MAX,
 };
 #define CTA_STATS_GLOBAL_MAX (__CTA_STATS_GLOBAL_MAX - 1)
 enum ctattr_expect_stats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_STATS_EXP_UNSPEC,
- CTA_STATS_EXP_NEW,
- CTA_STATS_EXP_CREATE,
- CTA_STATS_EXP_DELETE,
+  CTA_STATS_EXP_UNSPEC,
+  CTA_STATS_EXP_NEW,
+  CTA_STATS_EXP_CREATE,
+  CTA_STATS_EXP_DELETE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_STATS_EXP_MAX,
+  __CTA_STATS_EXP_MAX,
 };
 #define CTA_STATS_EXP_MAX (__CTA_STATS_EXP_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_cthelper.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_cthelper.h
index f1a1e41..561e217 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_cthelper.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_cthelper.h
@@ -22,56 +22,56 @@
 #define NFCT_HELPER_STATUS_ENABLED 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfnl_acct_msg_types {
- NFNL_MSG_CTHELPER_NEW,
- NFNL_MSG_CTHELPER_GET,
- NFNL_MSG_CTHELPER_DEL,
+  NFNL_MSG_CTHELPER_NEW,
+  NFNL_MSG_CTHELPER_GET,
+  NFNL_MSG_CTHELPER_DEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFNL_MSG_CTHELPER_MAX
+  NFNL_MSG_CTHELPER_MAX
 };
 enum nfnl_cthelper_type {
- NFCTH_UNSPEC,
+  NFCTH_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFCTH_NAME,
- NFCTH_TUPLE,
- NFCTH_QUEUE_NUM,
- NFCTH_POLICY,
+  NFCTH_NAME,
+  NFCTH_TUPLE,
+  NFCTH_QUEUE_NUM,
+  NFCTH_POLICY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFCTH_PRIV_DATA_LEN,
- NFCTH_STATUS,
- __NFCTH_MAX
+  NFCTH_PRIV_DATA_LEN,
+  NFCTH_STATUS,
+  __NFCTH_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFCTH_MAX (__NFCTH_MAX - 1)
 enum nfnl_cthelper_policy_type {
- NFCTH_POLICY_SET_UNSPEC,
- NFCTH_POLICY_SET_NUM,
+  NFCTH_POLICY_SET_UNSPEC,
+  NFCTH_POLICY_SET_NUM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFCTH_POLICY_SET,
- NFCTH_POLICY_SET1 = NFCTH_POLICY_SET,
- NFCTH_POLICY_SET2,
- NFCTH_POLICY_SET3,
+  NFCTH_POLICY_SET,
+  NFCTH_POLICY_SET1 = NFCTH_POLICY_SET,
+  NFCTH_POLICY_SET2,
+  NFCTH_POLICY_SET3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFCTH_POLICY_SET4,
- __NFCTH_POLICY_SET_MAX
+  NFCTH_POLICY_SET4,
+  __NFCTH_POLICY_SET_MAX
 };
 #define NFCTH_POLICY_SET_MAX (__NFCTH_POLICY_SET_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfnl_cthelper_pol_type {
- NFCTH_POLICY_UNSPEC,
- NFCTH_POLICY_NAME,
- NFCTH_POLICY_EXPECT_MAX,
+  NFCTH_POLICY_UNSPEC,
+  NFCTH_POLICY_NAME,
+  NFCTH_POLICY_EXPECT_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFCTH_POLICY_EXPECT_TIMEOUT,
- __NFCTH_POLICY_MAX
+  NFCTH_POLICY_EXPECT_TIMEOUT,
+  __NFCTH_POLICY_MAX
 };
 #define NFCTH_POLICY_MAX (__NFCTH_POLICY_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfnl_cthelper_tuple_type {
- NFCTH_TUPLE_UNSPEC,
- NFCTH_TUPLE_L3PROTONUM,
- NFCTH_TUPLE_L4PROTONUM,
+  NFCTH_TUPLE_UNSPEC,
+  NFCTH_TUPLE_L3PROTONUM,
+  NFCTH_TUPLE_L4PROTONUM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFCTH_TUPLE_MAX,
+  __NFCTH_TUPLE_MAX,
 };
 #define NFCTH_TUPLE_MAX (__NFCTH_TUPLE_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_cttimeout.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_cttimeout.h
index 8925799..4c35ce0 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_cttimeout.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_cttimeout.h
@@ -21,123 +21,123 @@
 #include <linux/netfilter/nfnetlink.h>
 enum ctnl_timeout_msg_types {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCTNL_MSG_TIMEOUT_NEW,
- IPCTNL_MSG_TIMEOUT_GET,
- IPCTNL_MSG_TIMEOUT_DELETE,
- IPCTNL_MSG_TIMEOUT_DEFAULT_SET,
+  IPCTNL_MSG_TIMEOUT_NEW,
+  IPCTNL_MSG_TIMEOUT_GET,
+  IPCTNL_MSG_TIMEOUT_DELETE,
+  IPCTNL_MSG_TIMEOUT_DEFAULT_SET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPCTNL_MSG_TIMEOUT_DEFAULT_GET,
- IPCTNL_MSG_TIMEOUT_MAX
+  IPCTNL_MSG_TIMEOUT_DEFAULT_GET,
+  IPCTNL_MSG_TIMEOUT_MAX
 };
 enum ctattr_timeout {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_UNSPEC,
- CTA_TIMEOUT_NAME,
- CTA_TIMEOUT_L3PROTO,
- CTA_TIMEOUT_L4PROTO,
+  CTA_TIMEOUT_UNSPEC,
+  CTA_TIMEOUT_NAME,
+  CTA_TIMEOUT_L3PROTO,
+  CTA_TIMEOUT_L4PROTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_DATA,
- CTA_TIMEOUT_USE,
- __CTA_TIMEOUT_MAX
+  CTA_TIMEOUT_DATA,
+  CTA_TIMEOUT_USE,
+  __CTA_TIMEOUT_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTA_TIMEOUT_MAX (__CTA_TIMEOUT_MAX - 1)
 enum ctattr_timeout_generic {
- CTA_TIMEOUT_GENERIC_UNSPEC,
- CTA_TIMEOUT_GENERIC_TIMEOUT,
+  CTA_TIMEOUT_GENERIC_UNSPEC,
+  CTA_TIMEOUT_GENERIC_TIMEOUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_TIMEOUT_GENERIC_MAX
+  __CTA_TIMEOUT_GENERIC_MAX
 };
 #define CTA_TIMEOUT_GENERIC_MAX (__CTA_TIMEOUT_GENERIC_MAX - 1)
 enum ctattr_timeout_tcp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_TCP_UNSPEC,
- CTA_TIMEOUT_TCP_SYN_SENT,
- CTA_TIMEOUT_TCP_SYN_RECV,
- CTA_TIMEOUT_TCP_ESTABLISHED,
+  CTA_TIMEOUT_TCP_UNSPEC,
+  CTA_TIMEOUT_TCP_SYN_SENT,
+  CTA_TIMEOUT_TCP_SYN_RECV,
+  CTA_TIMEOUT_TCP_ESTABLISHED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_TCP_FIN_WAIT,
- CTA_TIMEOUT_TCP_CLOSE_WAIT,
- CTA_TIMEOUT_TCP_LAST_ACK,
- CTA_TIMEOUT_TCP_TIME_WAIT,
+  CTA_TIMEOUT_TCP_FIN_WAIT,
+  CTA_TIMEOUT_TCP_CLOSE_WAIT,
+  CTA_TIMEOUT_TCP_LAST_ACK,
+  CTA_TIMEOUT_TCP_TIME_WAIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_TCP_CLOSE,
- CTA_TIMEOUT_TCP_SYN_SENT2,
- CTA_TIMEOUT_TCP_RETRANS,
- CTA_TIMEOUT_TCP_UNACK,
+  CTA_TIMEOUT_TCP_CLOSE,
+  CTA_TIMEOUT_TCP_SYN_SENT2,
+  CTA_TIMEOUT_TCP_RETRANS,
+  CTA_TIMEOUT_TCP_UNACK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_TIMEOUT_TCP_MAX
+  __CTA_TIMEOUT_TCP_MAX
 };
 #define CTA_TIMEOUT_TCP_MAX (__CTA_TIMEOUT_TCP_MAX - 1)
 enum ctattr_timeout_udp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_UDP_UNSPEC,
- CTA_TIMEOUT_UDP_UNREPLIED,
- CTA_TIMEOUT_UDP_REPLIED,
- __CTA_TIMEOUT_UDP_MAX
+  CTA_TIMEOUT_UDP_UNSPEC,
+  CTA_TIMEOUT_UDP_UNREPLIED,
+  CTA_TIMEOUT_UDP_REPLIED,
+  __CTA_TIMEOUT_UDP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CTA_TIMEOUT_UDP_MAX (__CTA_TIMEOUT_UDP_MAX - 1)
 enum ctattr_timeout_udplite {
- CTA_TIMEOUT_UDPLITE_UNSPEC,
+  CTA_TIMEOUT_UDPLITE_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_UDPLITE_UNREPLIED,
- CTA_TIMEOUT_UDPLITE_REPLIED,
- __CTA_TIMEOUT_UDPLITE_MAX
+  CTA_TIMEOUT_UDPLITE_UNREPLIED,
+  CTA_TIMEOUT_UDPLITE_REPLIED,
+  __CTA_TIMEOUT_UDPLITE_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTA_TIMEOUT_UDPLITE_MAX (__CTA_TIMEOUT_UDPLITE_MAX - 1)
 enum ctattr_timeout_icmp {
- CTA_TIMEOUT_ICMP_UNSPEC,
- CTA_TIMEOUT_ICMP_TIMEOUT,
+  CTA_TIMEOUT_ICMP_UNSPEC,
+  CTA_TIMEOUT_ICMP_TIMEOUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_TIMEOUT_ICMP_MAX
+  __CTA_TIMEOUT_ICMP_MAX
 };
 #define CTA_TIMEOUT_ICMP_MAX (__CTA_TIMEOUT_ICMP_MAX - 1)
 enum ctattr_timeout_dccp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_DCCP_UNSPEC,
- CTA_TIMEOUT_DCCP_REQUEST,
- CTA_TIMEOUT_DCCP_RESPOND,
- CTA_TIMEOUT_DCCP_PARTOPEN,
+  CTA_TIMEOUT_DCCP_UNSPEC,
+  CTA_TIMEOUT_DCCP_REQUEST,
+  CTA_TIMEOUT_DCCP_RESPOND,
+  CTA_TIMEOUT_DCCP_PARTOPEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_DCCP_OPEN,
- CTA_TIMEOUT_DCCP_CLOSEREQ,
- CTA_TIMEOUT_DCCP_CLOSING,
- CTA_TIMEOUT_DCCP_TIMEWAIT,
+  CTA_TIMEOUT_DCCP_OPEN,
+  CTA_TIMEOUT_DCCP_CLOSEREQ,
+  CTA_TIMEOUT_DCCP_CLOSING,
+  CTA_TIMEOUT_DCCP_TIMEWAIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_TIMEOUT_DCCP_MAX
+  __CTA_TIMEOUT_DCCP_MAX
 };
 #define CTA_TIMEOUT_DCCP_MAX (__CTA_TIMEOUT_DCCP_MAX - 1)
 enum ctattr_timeout_sctp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_SCTP_UNSPEC,
- CTA_TIMEOUT_SCTP_CLOSED,
- CTA_TIMEOUT_SCTP_COOKIE_WAIT,
- CTA_TIMEOUT_SCTP_COOKIE_ECHOED,
+  CTA_TIMEOUT_SCTP_UNSPEC,
+  CTA_TIMEOUT_SCTP_CLOSED,
+  CTA_TIMEOUT_SCTP_COOKIE_WAIT,
+  CTA_TIMEOUT_SCTP_COOKIE_ECHOED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_SCTP_ESTABLISHED,
- CTA_TIMEOUT_SCTP_SHUTDOWN_SENT,
- CTA_TIMEOUT_SCTP_SHUTDOWN_RECD,
- CTA_TIMEOUT_SCTP_SHUTDOWN_ACK_SENT,
+  CTA_TIMEOUT_SCTP_ESTABLISHED,
+  CTA_TIMEOUT_SCTP_SHUTDOWN_SENT,
+  CTA_TIMEOUT_SCTP_SHUTDOWN_RECD,
+  CTA_TIMEOUT_SCTP_SHUTDOWN_ACK_SENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __CTA_TIMEOUT_SCTP_MAX
+  __CTA_TIMEOUT_SCTP_MAX
 };
 #define CTA_TIMEOUT_SCTP_MAX (__CTA_TIMEOUT_SCTP_MAX - 1)
 enum ctattr_timeout_icmpv6 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_ICMPV6_UNSPEC,
- CTA_TIMEOUT_ICMPV6_TIMEOUT,
- __CTA_TIMEOUT_ICMPV6_MAX
+  CTA_TIMEOUT_ICMPV6_UNSPEC,
+  CTA_TIMEOUT_ICMPV6_TIMEOUT,
+  __CTA_TIMEOUT_ICMPV6_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTA_TIMEOUT_ICMPV6_MAX (__CTA_TIMEOUT_ICMPV6_MAX - 1)
 enum ctattr_timeout_gre {
- CTA_TIMEOUT_GRE_UNSPEC,
- CTA_TIMEOUT_GRE_UNREPLIED,
+  CTA_TIMEOUT_GRE_UNSPEC,
+  CTA_TIMEOUT_GRE_UNREPLIED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTA_TIMEOUT_GRE_REPLIED,
- __CTA_TIMEOUT_GRE_MAX
+  CTA_TIMEOUT_GRE_REPLIED,
+  __CTA_TIMEOUT_GRE_MAX
 };
 #define CTA_TIMEOUT_GRE_MAX (__CTA_TIMEOUT_GRE_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_log.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_log.h
index 56d2036..c5345fd 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_log.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_log.h
@@ -22,88 +22,88 @@
 #include <linux/netfilter/nfnetlink.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfulnl_msg_types {
- NFULNL_MSG_PACKET,
- NFULNL_MSG_CONFIG,
- NFULNL_MSG_MAX
+  NFULNL_MSG_PACKET,
+  NFULNL_MSG_CONFIG,
+  NFULNL_MSG_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct nfulnl_msg_packet_hdr {
- __be16 hw_protocol;
- __u8 hook;
+  __be16 hw_protocol;
+  __u8 hook;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 _pad;
+  __u8 _pad;
 };
 struct nfulnl_msg_packet_hw {
- __be16 hw_addrlen;
+  __be16 hw_addrlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 _pad;
- __u8 hw_addr[8];
+  __u16 _pad;
+  __u8 hw_addr[8];
 };
 struct nfulnl_msg_packet_timestamp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __aligned_be64 sec;
- __aligned_be64 usec;
+  __aligned_be64 sec;
+  __aligned_be64 usec;
 };
 enum nfulnl_attr_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFULA_UNSPEC,
- NFULA_PACKET_HDR,
- NFULA_MARK,
- NFULA_TIMESTAMP,
+  NFULA_UNSPEC,
+  NFULA_PACKET_HDR,
+  NFULA_MARK,
+  NFULA_TIMESTAMP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFULA_IFINDEX_INDEV,
- NFULA_IFINDEX_OUTDEV,
- NFULA_IFINDEX_PHYSINDEV,
- NFULA_IFINDEX_PHYSOUTDEV,
+  NFULA_IFINDEX_INDEV,
+  NFULA_IFINDEX_OUTDEV,
+  NFULA_IFINDEX_PHYSINDEV,
+  NFULA_IFINDEX_PHYSOUTDEV,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFULA_HWADDR,
- NFULA_PAYLOAD,
- NFULA_PREFIX,
- NFULA_UID,
+  NFULA_HWADDR,
+  NFULA_PAYLOAD,
+  NFULA_PREFIX,
+  NFULA_UID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFULA_SEQ,
- NFULA_SEQ_GLOBAL,
- NFULA_GID,
- NFULA_HWTYPE,
+  NFULA_SEQ,
+  NFULA_SEQ_GLOBAL,
+  NFULA_GID,
+  NFULA_HWTYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFULA_HWHEADER,
- NFULA_HWLEN,
- __NFULA_MAX
+  NFULA_HWHEADER,
+  NFULA_HWLEN,
+  __NFULA_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFULA_MAX (__NFULA_MAX - 1)
 enum nfulnl_msg_config_cmds {
- NFULNL_CFG_CMD_NONE,
- NFULNL_CFG_CMD_BIND,
+  NFULNL_CFG_CMD_NONE,
+  NFULNL_CFG_CMD_BIND,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFULNL_CFG_CMD_UNBIND,
- NFULNL_CFG_CMD_PF_BIND,
- NFULNL_CFG_CMD_PF_UNBIND,
+  NFULNL_CFG_CMD_UNBIND,
+  NFULNL_CFG_CMD_PF_BIND,
+  NFULNL_CFG_CMD_PF_UNBIND,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfulnl_msg_config_cmd {
- __u8 command;
-} __attribute__ ((packed));
+  __u8 command;
+} __attribute__((packed));
 struct nfulnl_msg_config_mode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 copy_range;
- __u8 copy_mode;
- __u8 _pad;
-} __attribute__ ((packed));
+  __be32 copy_range;
+  __u8 copy_mode;
+  __u8 _pad;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfulnl_attr_config {
- NFULA_CFG_UNSPEC,
- NFULA_CFG_CMD,
- NFULA_CFG_MODE,
+  NFULA_CFG_UNSPEC,
+  NFULA_CFG_CMD,
+  NFULA_CFG_MODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFULA_CFG_NLBUFSIZ,
- NFULA_CFG_TIMEOUT,
- NFULA_CFG_QTHRESH,
- NFULA_CFG_FLAGS,
+  NFULA_CFG_NLBUFSIZ,
+  NFULA_CFG_TIMEOUT,
+  NFULA_CFG_QTHRESH,
+  NFULA_CFG_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFULA_CFG_MAX
+  __NFULA_CFG_MAX
 };
-#define NFULA_CFG_MAX (__NFULA_CFG_MAX -1)
+#define NFULA_CFG_MAX (__NFULA_CFG_MAX - 1)
 #define NFULNL_COPY_NONE 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFULNL_COPY_META 0x01
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index 816e344..694636b 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -22,102 +22,102 @@
 #include <linux/netfilter/nfnetlink.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfqnl_msg_types {
- NFQNL_MSG_PACKET,
- NFQNL_MSG_VERDICT,
- NFQNL_MSG_CONFIG,
+  NFQNL_MSG_PACKET,
+  NFQNL_MSG_VERDICT,
+  NFQNL_MSG_CONFIG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQNL_MSG_VERDICT_BATCH,
- NFQNL_MSG_MAX
+  NFQNL_MSG_VERDICT_BATCH,
+  NFQNL_MSG_MAX
 };
 struct nfqnl_msg_packet_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 packet_id;
- __be16 hw_protocol;
- __u8 hook;
-} __attribute__ ((packed));
+  __be32 packet_id;
+  __be16 hw_protocol;
+  __u8 hook;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfqnl_msg_packet_hw {
- __be16 hw_addrlen;
- __u16 _pad;
- __u8 hw_addr[8];
+  __be16 hw_addrlen;
+  __u16 _pad;
+  __u8 hw_addr[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct nfqnl_msg_packet_timestamp {
- __aligned_be64 sec;
- __aligned_be64 usec;
+  __aligned_be64 sec;
+  __aligned_be64 usec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nfqnl_attr_type {
- NFQA_UNSPEC,
- NFQA_PACKET_HDR,
+  NFQA_UNSPEC,
+  NFQA_PACKET_HDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQA_VERDICT_HDR,
- NFQA_MARK,
- NFQA_TIMESTAMP,
- NFQA_IFINDEX_INDEV,
+  NFQA_VERDICT_HDR,
+  NFQA_MARK,
+  NFQA_TIMESTAMP,
+  NFQA_IFINDEX_INDEV,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQA_IFINDEX_OUTDEV,
- NFQA_IFINDEX_PHYSINDEV,
- NFQA_IFINDEX_PHYSOUTDEV,
- NFQA_HWADDR,
+  NFQA_IFINDEX_OUTDEV,
+  NFQA_IFINDEX_PHYSINDEV,
+  NFQA_IFINDEX_PHYSOUTDEV,
+  NFQA_HWADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQA_PAYLOAD,
- NFQA_CT,
- NFQA_CT_INFO,
- NFQA_CAP_LEN,
+  NFQA_PAYLOAD,
+  NFQA_CT,
+  NFQA_CT_INFO,
+  NFQA_CAP_LEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQA_SKB_INFO,
- NFQA_EXP,
- NFQA_UID,
- NFQA_GID,
+  NFQA_SKB_INFO,
+  NFQA_EXP,
+  NFQA_UID,
+  NFQA_GID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFQA_MAX
+  __NFQA_MAX
 };
 #define NFQA_MAX (__NFQA_MAX - 1)
 struct nfqnl_msg_verdict_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 verdict;
- __be32 id;
+  __be32 verdict;
+  __be32 id;
 };
 enum nfqnl_msg_config_cmds {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQNL_CFG_CMD_NONE,
- NFQNL_CFG_CMD_BIND,
- NFQNL_CFG_CMD_UNBIND,
- NFQNL_CFG_CMD_PF_BIND,
+  NFQNL_CFG_CMD_NONE,
+  NFQNL_CFG_CMD_BIND,
+  NFQNL_CFG_CMD_UNBIND,
+  NFQNL_CFG_CMD_PF_BIND,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQNL_CFG_CMD_PF_UNBIND,
+  NFQNL_CFG_CMD_PF_UNBIND,
 };
 struct nfqnl_msg_config_cmd {
- __u8 command;
+  __u8 command;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 _pad;
- __be16 pf;
+  __u8 _pad;
+  __be16 pf;
 };
 enum nfqnl_config_mode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQNL_COPY_NONE,
- NFQNL_COPY_META,
- NFQNL_COPY_PACKET,
+  NFQNL_COPY_NONE,
+  NFQNL_COPY_META,
+  NFQNL_COPY_PACKET,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfqnl_msg_config_params {
- __be32 copy_range;
- __u8 copy_mode;
-} __attribute__ ((packed));
+  __be32 copy_range;
+  __u8 copy_mode;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfqnl_attr_config {
- NFQA_CFG_UNSPEC,
- NFQA_CFG_CMD,
- NFQA_CFG_PARAMS,
+  NFQA_CFG_UNSPEC,
+  NFQA_CFG_CMD,
+  NFQA_CFG_PARAMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFQA_CFG_QUEUE_MAXLEN,
- NFQA_CFG_MASK,
- NFQA_CFG_FLAGS,
- __NFQA_CFG_MAX
+  NFQA_CFG_QUEUE_MAXLEN,
+  NFQA_CFG_MASK,
+  NFQA_CFG_FLAGS,
+  __NFQA_CFG_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define NFQA_CFG_MAX (__NFQA_CFG_MAX-1)
+#define NFQA_CFG_MAX (__NFQA_CFG_MAX - 1)
 #define NFQA_CFG_F_FAIL_OPEN (1 << 0)
 #define NFQA_CFG_F_CONNTRACK (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/x_tables.h b/libc/kernel/uapi/linux/netfilter/x_tables.h
index 7355d01..aab32bb 100644
--- a/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -26,67 +26,69 @@
 #define XT_TABLE_MAXNAMELEN 32
 struct xt_entry_match {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- __u16 match_size;
- char name[XT_EXTENSION_MAXNAMELEN];
+  union {
+    struct {
+      __u16 match_size;
+      char name[XT_EXTENSION_MAXNAMELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 revision;
- } user;
- struct {
- __u16 match_size;
+      __u8 revision;
+    } user;
+    struct {
+      __u16 match_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_match *match;
- } kernel;
- __u16 match_size;
- } u;
+      struct xt_match * match;
+    } kernel;
+    __u16 match_size;
+  } u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char data[0];
+  unsigned char data[0];
 };
 struct xt_entry_target {
- union {
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u16 target_size;
- char name[XT_EXTENSION_MAXNAMELEN];
- __u8 revision;
+    struct {
+      __u16 target_size;
+      char name[XT_EXTENSION_MAXNAMELEN];
+      __u8 revision;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } user;
- struct {
- __u16 target_size;
- struct xt_target *target;
+    } user;
+    struct {
+      __u16 target_size;
+      struct xt_target * target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } kernel;
- __u16 target_size;
- } u;
- unsigned char data[0];
+    } kernel;
+    __u16 target_size;
+  } u;
+  unsigned char data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define XT_TARGET_INIT(__name, __size)  {   .target.u.user = {   .target_size = XT_ALIGN(__size),   .name = __name,   },  }
+#define XT_TARGET_INIT(__name,__size) \
+{.target.u.user = {.target_size = XT_ALIGN(__size),.name = __name, }, \
+}
 struct xt_standard_target {
- struct xt_entry_target target;
+  struct xt_entry_target target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int verdict;
+  int verdict;
 };
 struct xt_error_target {
- struct xt_entry_target target;
+  struct xt_entry_target target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char errorname[XT_FUNCTION_MAXNAMELEN];
+  char errorname[XT_FUNCTION_MAXNAMELEN];
 };
 struct xt_get_revision {
- char name[XT_EXTENSION_MAXNAMELEN];
+  char name[XT_EXTENSION_MAXNAMELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 revision;
+  __u8 revision;
 };
 #define XT_CONTINUE 0xFFFFFFFF
-#define XT_RETURN (-NF_REPEAT - 1)
+#define XT_RETURN (- NF_REPEAT - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _xt_align {
- __u8 u8;
- __u16 u16;
- __u32 u32;
+  __u8 u8;
+  __u16 u16;
+  __u32 u32;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 u64;
+  __u64 u64;
 };
 #define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align))
 #define XT_STANDARD_TARGET ""
@@ -96,20 +98,24 @@
 #define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0)
 struct xt_counters {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 pcnt, bcnt;
+  __u64 pcnt, bcnt;
 };
 struct xt_counters_info {
- char name[XT_TABLE_MAXNAMELEN];
+  char name[XT_TABLE_MAXNAMELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int num_counters;
- struct xt_counters counters[0];
+  unsigned int num_counters;
+  struct xt_counters counters[0];
 };
 #define XT_INV_PROTO 0x40
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define XT_MATCH_ITERATE(type, e, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct xt_entry_match *__m;     for (__i = sizeof(type);   __i < (e)->target_offset;   __i += __m->u.match_size) {   __m = (void *)e + __i;     __ret = fn(__m , ## args);   if (__ret != 0)   break;   }   __ret;  })
-#define XT_ENTRY_ITERATE_CONTINUE(type, entries, size, n, fn, args...)  ({   unsigned int __i, __n;   int __ret = 0;   type *__entry;     for (__i = 0, __n = 0; __i < (size);   __i += __entry->next_offset, __n++) {   __entry = (void *)(entries) + __i;   if (__n < n)   continue;     __ret = fn(__entry , ## args);   if (__ret != 0)   break;   }   __ret;  })
-#define XT_ENTRY_ITERATE(type, entries, size, fn, args...)   XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
-#define xt_entry_foreach(pos, ehead, esize)   for ((pos) = (typeof(pos))(ehead);   (pos) < (typeof(pos))((char *)(ehead) + (esize));   (pos) = (typeof(pos))((char *)(pos) + (pos)->next_offset))
+#define XT_MATCH_ITERATE(type,e,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct xt_entry_match * __m; for(__i = sizeof(type); __i < (e)->target_offset; __i += __m->u.match_size) { __m = (void *) e + __i; __ret = fn(__m, ##args); if(__ret != 0) break; } __ret; \
+})
+#define XT_ENTRY_ITERATE_CONTINUE(type,entries,size,n,fn,args...) \
+({ unsigned int __i, __n; int __ret = 0; type * __entry; for(__i = 0, __n = 0; __i < (size); __i += __entry->next_offset, __n ++) { __entry = (void *) (entries) + __i; if(__n < n) continue; __ret = fn(__entry, ##args); if(__ret != 0) break; } __ret; \
+})
+#define XT_ENTRY_ITERATE(type,entries,size,fn,args...) XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
+#define xt_entry_foreach(pos,ehead,esize) for((pos) = (typeof(pos)) (ehead); (pos) < (typeof(pos)) ((char *) (ehead) + (esize)); (pos) = (typeof(pos)) ((char *) (pos) + (pos)->next_offset))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define xt_ematch_foreach(pos, entry)   for ((pos) = (struct xt_entry_match *)entry->elems;   (pos) < (struct xt_entry_match *)((char *)(entry) +   (entry)->target_offset);   (pos) = (struct xt_entry_match *)((char *)(pos) +   (pos)->u.match_size))
+#define xt_ematch_foreach(pos,entry) for((pos) = (struct xt_entry_match *) entry->elems; (pos) < (struct xt_entry_match *) ((char *) (entry) + (entry)->target_offset); (pos) = (struct xt_entry_match *) ((char *) (pos) + (pos)->u.match_size))
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_AUDIT.h b/libc/kernel/uapi/linux/netfilter/xt_AUDIT.h
index b4d9511..bb1be2f 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_AUDIT.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_AUDIT.h
@@ -21,15 +21,15 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_AUDIT_TYPE_ACCEPT = 0,
- XT_AUDIT_TYPE_DROP,
- XT_AUDIT_TYPE_REJECT,
- __XT_AUDIT_TYPE_MAX,
+  XT_AUDIT_TYPE_ACCEPT = 0,
+  XT_AUDIT_TYPE_DROP,
+  XT_AUDIT_TYPE_REJECT,
+  __XT_AUDIT_TYPE_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define XT_AUDIT_TYPE_MAX (__XT_AUDIT_TYPE_MAX - 1)
 struct xt_audit_info {
- __u8 type;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_CHECKSUM.h b/libc/kernel/uapi/linux/netfilter/xt_CHECKSUM.h
index 3c70f1e..3ce7153 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_CHECKSUM.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_CHECKSUM.h
@@ -22,7 +22,7 @@
 #define XT_CHECKSUM_OP_FILL 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_CHECKSUM_info {
- __u8 operation;
+  __u8 operation;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_CLASSIFY.h b/libc/kernel/uapi/linux/netfilter/xt_CLASSIFY.h
index 44e262f..81454b5 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_CLASSIFY.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_CLASSIFY.h
@@ -21,6 +21,6 @@
 #include <linux/types.h>
 struct xt_classify_target_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 priority;
+  __u32 priority;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_CONNSECMARK.h b/libc/kernel/uapi/linux/netfilter/xt_CONNSECMARK.h
index 105f943..c99d01d 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_CONNSECMARK.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_CONNSECMARK.h
@@ -21,11 +21,11 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CONNSECMARK_SAVE = 1,
- CONNSECMARK_RESTORE,
+  CONNSECMARK_SAVE = 1,
+  CONNSECMARK_RESTORE,
 };
 struct xt_connsecmark_target_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 mode;
+  __u8 mode;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_CT.h b/libc/kernel/uapi/linux/netfilter/xt_CT.h
index fdfef5e..03d2093 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_CT.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_CT.h
@@ -21,30 +21,30 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CT_NOTRACK = 1 << 0,
- XT_CT_NOTRACK_ALIAS = 1 << 1,
- XT_CT_MASK = XT_CT_NOTRACK | XT_CT_NOTRACK_ALIAS,
+  XT_CT_NOTRACK = 1 << 0,
+  XT_CT_NOTRACK_ALIAS = 1 << 1,
+  XT_CT_MASK = XT_CT_NOTRACK | XT_CT_NOTRACK_ALIAS,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_ct_target_info {
- __u16 flags;
- __u16 zone;
- __u32 ct_events;
+  __u16 flags;
+  __u16 zone;
+  __u32 ct_events;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 exp_events;
- char helper[16];
- struct nf_conn *ct __attribute__((aligned(8)));
+  __u32 exp_events;
+  char helper[16];
+  struct nf_conn * ct __attribute__((aligned(8)));
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_ct_target_info_v1 {
- __u16 flags;
- __u16 zone;
- __u32 ct_events;
+  __u16 flags;
+  __u16 zone;
+  __u32 ct_events;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 exp_events;
- char helper[16];
- char timeout[32];
- struct nf_conn *ct __attribute__((aligned(8)));
+  __u32 exp_events;
+  char helper[16];
+  char timeout[32];
+  struct nf_conn * ct __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_DSCP.h b/libc/kernel/uapi/linux/netfilter/xt_DSCP.h
index c122707..80f2f65 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_DSCP.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_DSCP.h
@@ -22,12 +22,12 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_DSCP_info {
- __u8 dscp;
+  __u8 dscp;
 };
 struct xt_tos_target_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tos_value;
- __u8 tos_mask;
+  __u8 tos_value;
+  __u8 tos_mask;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_HMARK.h b/libc/kernel/uapi/linux/netfilter/xt_HMARK.h
index add0302..d3b2ab4 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_HMARK.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_HMARK.h
@@ -21,54 +21,54 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_HMARK_SADDR_MASK,
- XT_HMARK_DADDR_MASK,
- XT_HMARK_SPI,
- XT_HMARK_SPI_MASK,
+  XT_HMARK_SADDR_MASK,
+  XT_HMARK_DADDR_MASK,
+  XT_HMARK_SPI,
+  XT_HMARK_SPI_MASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_HMARK_SPORT,
- XT_HMARK_DPORT,
- XT_HMARK_SPORT_MASK,
- XT_HMARK_DPORT_MASK,
+  XT_HMARK_SPORT,
+  XT_HMARK_DPORT,
+  XT_HMARK_SPORT_MASK,
+  XT_HMARK_DPORT_MASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_HMARK_PROTO_MASK,
- XT_HMARK_RND,
- XT_HMARK_MODULUS,
- XT_HMARK_OFFSET,
+  XT_HMARK_PROTO_MASK,
+  XT_HMARK_RND,
+  XT_HMARK_MODULUS,
+  XT_HMARK_OFFSET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_HMARK_CT,
- XT_HMARK_METHOD_L3,
- XT_HMARK_METHOD_L3_4,
+  XT_HMARK_CT,
+  XT_HMARK_METHOD_L3,
+  XT_HMARK_METHOD_L3_4,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_HMARK_FLAG(flag) (1 << flag)
 union hmark_ports {
- struct {
- __u16 src;
+  struct {
+    __u16 src;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 dst;
- } p16;
- struct {
- __be16 src;
+    __u16 dst;
+  } p16;
+  struct {
+    __be16 src;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 dst;
- } b16;
- __u32 v32;
- __be32 b32;
+    __be16 dst;
+  } b16;
+  __u32 v32;
+  __be32 b32;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_hmark_info {
- union nf_inet_addr src_mask;
- union nf_inet_addr dst_mask;
+  union nf_inet_addr src_mask;
+  union nf_inet_addr dst_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union hmark_ports port_mask;
- union hmark_ports port_set;
- __u32 flags;
- __u16 proto_mask;
+  union hmark_ports port_mask;
+  union hmark_ports port_set;
+  __u32 flags;
+  __u16 proto_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 hashrnd;
- __u32 hmodulus;
- __u32 hoffset;
+  __u32 hashrnd;
+  __u32 hmodulus;
+  __u32 hoffset;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_IDLETIMER.h b/libc/kernel/uapi/linux/netfilter/xt_IDLETIMER.h
index 1a2c088..9df6c76 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_IDLETIMER.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_IDLETIMER.h
@@ -22,9 +22,9 @@
 #define MAX_IDLETIMER_LABEL_SIZE 28
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct idletimer_tg_info {
- __u32 timeout;
- char label[MAX_IDLETIMER_LABEL_SIZE];
- struct idletimer_tg *timer __attribute__((aligned(8)));
+  __u32 timeout;
+  char label[MAX_IDLETIMER_LABEL_SIZE];
+  struct idletimer_tg * timer __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_LED.h b/libc/kernel/uapi/linux/netfilter/xt_LED.h
index 600edf4..53b53eb 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_LED.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_LED.h
@@ -21,10 +21,10 @@
 #include <linux/types.h>
 struct xt_led_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char id[27];
- __u8 always_blink;
- __u32 delay;
- void *internal_data __attribute__((aligned(8)));
+  char id[27];
+  __u8 always_blink;
+  __u32 delay;
+  void * internal_data __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_LOG.h b/libc/kernel/uapi/linux/netfilter/xt_LOG.h
index 5610ead..47aae3e 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_LOG.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_LOG.h
@@ -28,9 +28,9 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_LOG_MASK 0x2f
 struct xt_log_info {
- unsigned char level;
- unsigned char logflags;
+  unsigned char level;
+  unsigned char logflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char prefix[30];
+  char prefix[30];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_NFLOG.h b/libc/kernel/uapi/linux/netfilter/xt_NFLOG.h
index a8d0cff..c781fce 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_NFLOG.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_NFLOG.h
@@ -24,13 +24,13 @@
 #define XT_NFLOG_DEFAULT_THRESHOLD 0
 #define XT_NFLOG_MASK 0x0
 struct xt_nflog_info {
- __u32 len;
+  __u32 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 group;
- __u16 threshold;
- __u16 flags;
- __u16 pad;
+  __u16 group;
+  __u16 threshold;
+  __u16 flags;
+  __u16 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char prefix[64];
+  char prefix[64];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_NFQUEUE.h b/libc/kernel/uapi/linux/netfilter/xt_NFQUEUE.h
index b9aeca1..ce48726 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_NFQUEUE.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_NFQUEUE.h
@@ -21,24 +21,24 @@
 #include <linux/types.h>
 struct xt_NFQ_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 queuenum;
+  __u16 queuenum;
 };
 struct xt_NFQ_info_v1 {
- __u16 queuenum;
+  __u16 queuenum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 queues_total;
+  __u16 queues_total;
 };
 struct xt_NFQ_info_v2 {
- __u16 queuenum;
+  __u16 queuenum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 queues_total;
- __u16 bypass;
+  __u16 queues_total;
+  __u16 bypass;
 };
 struct xt_NFQ_info_v3 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 queuenum;
- __u16 queues_total;
- __u16 flags;
+  __u16 queuenum;
+  __u16 queues_total;
+  __u16 flags;
 #define NFQ_FLAG_BYPASS 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFQ_FLAG_CPU_FANOUT 0x02
diff --git a/libc/kernel/uapi/linux/netfilter/xt_RATEEST.h b/libc/kernel/uapi/linux/netfilter/xt_RATEEST.h
index 1997efa..63dd2b6 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_RATEEST.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_RATEEST.h
@@ -21,10 +21,10 @@
 #include <linux/types.h>
 struct xt_rateest_target_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[IFNAMSIZ];
- __s8 interval;
- __u8 ewma_log;
- struct xt_rateest *est __attribute__((aligned(8)));
+  char name[IFNAMSIZ];
+  __s8 interval;
+  __u8 ewma_log;
+  struct xt_rateest * est __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_SECMARK.h b/libc/kernel/uapi/linux/netfilter/xt_SECMARK.h
index 9ee004d..06a4a05 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_SECMARK.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_SECMARK.h
@@ -23,9 +23,9 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SECMARK_SECCTX_MAX 256
 struct xt_secmark_target_info {
- __u8 mode;
- __u32 secid;
+  __u8 mode;
+  __u32 secid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char secctx[SECMARK_SECCTX_MAX];
+  char secctx[SECMARK_SECCTX_MAX];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_SYNPROXY.h b/libc/kernel/uapi/linux/netfilter/xt_SYNPROXY.h
index b3cd1ff..dbdb74a 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_SYNPROXY.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_SYNPROXY.h
@@ -26,9 +26,9 @@
 #define XT_SYNPROXY_OPT_ECN 0x10
 struct xt_synproxy_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 options;
- __u8 wscale;
- __u16 mss;
+  __u8 options;
+  __u8 wscale;
+  __u16 mss;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_TCPMSS.h b/libc/kernel/uapi/linux/netfilter/xt_TCPMSS.h
index 91c2737..3c25c43 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_TCPMSS.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_TCPMSS.h
@@ -21,7 +21,7 @@
 #include <linux/types.h>
 struct xt_tcpmss_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 mss;
+  __u16 mss;
 };
 #define XT_TCPMSS_CLAMP_PMTU 0xffff
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_TCPOPTSTRIP.h b/libc/kernel/uapi/linux/netfilter/xt_TCPOPTSTRIP.h
index 6a70d06..acf577f 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_TCPOPTSTRIP.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_TCPOPTSTRIP.h
@@ -19,11 +19,11 @@
 #ifndef _XT_TCPOPTSTRIP_H
 #define _XT_TCPOPTSTRIP_H
 #include <linux/types.h>
-#define tcpoptstrip_set_bit(bmap, idx)   (bmap[(idx) >> 5] |= 1U << (idx & 31))
+#define tcpoptstrip_set_bit(bmap,idx) (bmap[(idx) >> 5] |= 1U << (idx & 31))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define tcpoptstrip_test_bit(bmap, idx)   (((1U << (idx & 31)) & bmap[(idx) >> 5]) != 0)
+#define tcpoptstrip_test_bit(bmap,idx) (((1U << (idx & 31)) & bmap[(idx) >> 5]) != 0)
 struct xt_tcpoptstrip_target_info {
- __u32 strip_bmap[8];
+  __u32 strip_bmap[8];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_TEE.h b/libc/kernel/uapi/linux/netfilter/xt_TEE.h
index 000b786..ddf6a18 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_TEE.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_TEE.h
@@ -19,10 +19,10 @@
 #ifndef _XT_TEE_TARGET_H
 #define _XT_TEE_TARGET_H
 struct xt_tee_tginfo {
- union nf_inet_addr gw;
+  union nf_inet_addr gw;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char oif[16];
- struct xt_tee_priv *priv __attribute__((aligned(8)));
+  char oif[16];
+  struct xt_tee_priv * priv __attribute__((aligned(8)));
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_TPROXY.h b/libc/kernel/uapi/linux/netfilter/xt_TPROXY.h
index f4f6bf6..3807085 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_TPROXY.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_TPROXY.h
@@ -21,18 +21,18 @@
 #include <linux/types.h>
 struct xt_tproxy_target_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mark_mask;
- __u32 mark_value;
- __be32 laddr;
- __be16 lport;
+  __u32 mark_mask;
+  __u32 mark_value;
+  __be32 laddr;
+  __be16 lport;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_tproxy_target_info_v1 {
- __u32 mark_mask;
- __u32 mark_value;
+  __u32 mark_mask;
+  __u32 mark_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union nf_inet_addr laddr;
- __be16 lport;
+  union nf_inet_addr laddr;
+  __be16 lport;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_addrtype.h b/libc/kernel/uapi/linux/netfilter/xt_addrtype.h
index 9db43ad..2a7d01f 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_addrtype.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_addrtype.h
@@ -21,41 +21,41 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_ADDRTYPE_INVERT_SOURCE = 0x0001,
- XT_ADDRTYPE_INVERT_DEST = 0x0002,
- XT_ADDRTYPE_LIMIT_IFACE_IN = 0x0004,
- XT_ADDRTYPE_LIMIT_IFACE_OUT = 0x0008,
+  XT_ADDRTYPE_INVERT_SOURCE = 0x0001,
+  XT_ADDRTYPE_INVERT_DEST = 0x0002,
+  XT_ADDRTYPE_LIMIT_IFACE_IN = 0x0004,
+  XT_ADDRTYPE_LIMIT_IFACE_OUT = 0x0008,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- XT_ADDRTYPE_UNSPEC = 1 << 0,
- XT_ADDRTYPE_UNICAST = 1 << 1,
+  XT_ADDRTYPE_UNSPEC = 1 << 0,
+  XT_ADDRTYPE_UNICAST = 1 << 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_ADDRTYPE_LOCAL = 1 << 2,
- XT_ADDRTYPE_BROADCAST = 1 << 3,
- XT_ADDRTYPE_ANYCAST = 1 << 4,
- XT_ADDRTYPE_MULTICAST = 1 << 5,
+  XT_ADDRTYPE_LOCAL = 1 << 2,
+  XT_ADDRTYPE_BROADCAST = 1 << 3,
+  XT_ADDRTYPE_ANYCAST = 1 << 4,
+  XT_ADDRTYPE_MULTICAST = 1 << 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_ADDRTYPE_BLACKHOLE = 1 << 6,
- XT_ADDRTYPE_UNREACHABLE = 1 << 7,
- XT_ADDRTYPE_PROHIBIT = 1 << 8,
- XT_ADDRTYPE_THROW = 1 << 9,
+  XT_ADDRTYPE_BLACKHOLE = 1 << 6,
+  XT_ADDRTYPE_UNREACHABLE = 1 << 7,
+  XT_ADDRTYPE_PROHIBIT = 1 << 8,
+  XT_ADDRTYPE_THROW = 1 << 9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_ADDRTYPE_NAT = 1 << 10,
- XT_ADDRTYPE_XRESOLVE = 1 << 11,
+  XT_ADDRTYPE_NAT = 1 << 10,
+  XT_ADDRTYPE_XRESOLVE = 1 << 11,
 };
 struct xt_addrtype_info_v1 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 source;
- __u16 dest;
- __u32 flags;
+  __u16 source;
+  __u16 dest;
+  __u32 flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_addrtype_info {
- __u16 source;
- __u16 dest;
- __u32 invert_source;
+  __u16 source;
+  __u16 dest;
+  __u32 invert_source;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 invert_dest;
+  __u32 invert_dest;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_bpf.h b/libc/kernel/uapi/linux/netfilter/xt_bpf.h
index 23ae892..69ff304 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_bpf.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_bpf.h
@@ -22,10 +22,12 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_BPF_MAX_NUM_INSTR 64
+struct bpf_prog;
 struct xt_bpf_info {
- __u16 bpf_program_num_elem;
- struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR];
+  __u16 bpf_program_num_elem;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sk_filter *filter __attribute__((aligned(8)));
+  struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR];
+  struct bpf_prog * filter __attribute__((aligned(8)));
 };
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_cgroup.h b/libc/kernel/uapi/linux/netfilter/xt_cgroup.h
index 986951b..ce42e9e 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_cgroup.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_cgroup.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct xt_cgroup_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 invert;
+  __u32 id;
+  __u32 invert;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_cluster.h b/libc/kernel/uapi/linux/netfilter/xt_cluster.h
index 2796cc7..862a119 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_cluster.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_cluster.h
@@ -21,14 +21,14 @@
 #include <linux/types.h>
 enum xt_cluster_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CLUSTER_F_INV = (1 << 0)
+  XT_CLUSTER_F_INV = (1 << 0)
 };
 struct xt_cluster_match_info {
- __u32 total_nodes;
+  __u32 total_nodes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 node_mask;
- __u32 hash_seed;
- __u32 flags;
+  __u32 node_mask;
+  __u32 hash_seed;
+  __u32 flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_CLUSTER_NODES_MAX 32
diff --git a/libc/kernel/uapi/linux/netfilter/xt_comment.h b/libc/kernel/uapi/linux/netfilter/xt_comment.h
index c4e10c4..554544d 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_comment.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_comment.h
@@ -21,6 +21,6 @@
 #define XT_MAX_COMMENT_LEN 256
 struct xt_comment_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char comment[XT_MAX_COMMENT_LEN];
+  char comment[XT_MAX_COMMENT_LEN];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_connbytes.h b/libc/kernel/uapi/linux/netfilter/xt_connbytes.h
index 16d1610..479b1a6 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_connbytes.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_connbytes.h
@@ -21,25 +21,25 @@
 #include <linux/types.h>
 enum xt_connbytes_what {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CONNBYTES_PKTS,
- XT_CONNBYTES_BYTES,
- XT_CONNBYTES_AVGPKT,
+  XT_CONNBYTES_PKTS,
+  XT_CONNBYTES_BYTES,
+  XT_CONNBYTES_AVGPKT,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum xt_connbytes_direction {
- XT_CONNBYTES_DIR_ORIGINAL,
- XT_CONNBYTES_DIR_REPLY,
- XT_CONNBYTES_DIR_BOTH,
+  XT_CONNBYTES_DIR_ORIGINAL,
+  XT_CONNBYTES_DIR_REPLY,
+  XT_CONNBYTES_DIR_BOTH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_connbytes_info {
- struct {
- __aligned_u64 from;
+  struct {
+    __aligned_u64 from;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __aligned_u64 to;
- } count;
- __u8 what;
- __u8 direction;
+    __aligned_u64 to;
+  } count;
+  __u8 what;
+  __u8 direction;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_connlabel.h b/libc/kernel/uapi/linux/netfilter/xt_connlabel.h
index 4e5f3c9..10a0cbc 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_connlabel.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_connlabel.h
@@ -19,12 +19,12 @@
 #include <linux/types.h>
 #define XT_CONNLABEL_MAXBIT 127
 enum xt_connlabel_mtopts {
- XT_CONNLABEL_OP_INVERT = 1 << 0,
+  XT_CONNLABEL_OP_INVERT = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CONNLABEL_OP_SET = 1 << 1,
+  XT_CONNLABEL_OP_SET = 1 << 1,
 };
 struct xt_connlabel_mtinfo {
- __u16 bit;
+  __u16 bit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 options;
+  __u16 options;
 };
diff --git a/libc/kernel/uapi/linux/netfilter/xt_connlimit.h b/libc/kernel/uapi/linux/netfilter/xt_connlimit.h
index b233482..f006a50 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_connlimit.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_connlimit.h
@@ -23,23 +23,23 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_connlimit_data;
 enum {
- XT_CONNLIMIT_INVERT = 1 << 0,
- XT_CONNLIMIT_DADDR = 1 << 1,
+  XT_CONNLIMIT_INVERT = 1 << 0,
+  XT_CONNLIMIT_DADDR = 1 << 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_connlimit_info {
- union {
- union nf_inet_addr mask;
+  union {
+    union nf_inet_addr mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __be32 v4_mask;
- __be32 v6_mask[4];
- };
+    union {
+      __be32 v4_mask;
+      __be32 v6_mask[4];
+    };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- unsigned int limit;
- __u32 flags;
- struct xt_connlimit_data *data __attribute__((aligned(8)));
+  };
+  unsigned int limit;
+  __u32 flags;
+  struct xt_connlimit_data * data __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_connmark.h b/libc/kernel/uapi/linux/netfilter/xt_connmark.h
index 17117ad..3e5430f 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_connmark.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_connmark.h
@@ -21,19 +21,19 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CONNMARK_SET = 0,
- XT_CONNMARK_SAVE,
- XT_CONNMARK_RESTORE
+  XT_CONNMARK_SET = 0,
+  XT_CONNMARK_SAVE,
+  XT_CONNMARK_RESTORE
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_connmark_tginfo1 {
- __u32 ctmark, ctmask, nfmask;
- __u8 mode;
+  __u32 ctmark, ctmask, nfmask;
+  __u8 mode;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_connmark_mtinfo1 {
- __u32 mark, mask;
- __u8 invert;
+  __u32 mark, mask;
+  __u8 invert;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_conntrack.h b/libc/kernel/uapi/linux/netfilter/xt_conntrack.h
index 53a9fa0..a69cc2b 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_conntrack.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_conntrack.h
@@ -22,78 +22,78 @@
 #include <linux/netfilter.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/netfilter/nf_conntrack_tuple_common.h>
-#define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1))
+#define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo) % IP_CT_IS_REPLY + 1))
 #define XT_CONNTRACK_STATE_INVALID (1 << 0)
 #define XT_CONNTRACK_STATE_SNAT (1 << (IP_CT_NUMBER + 1))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_CONNTRACK_STATE_DNAT (1 << (IP_CT_NUMBER + 2))
 #define XT_CONNTRACK_STATE_UNTRACKED (1 << (IP_CT_NUMBER + 3))
 enum {
- XT_CONNTRACK_STATE = 1 << 0,
+  XT_CONNTRACK_STATE = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CONNTRACK_PROTO = 1 << 1,
- XT_CONNTRACK_ORIGSRC = 1 << 2,
- XT_CONNTRACK_ORIGDST = 1 << 3,
- XT_CONNTRACK_REPLSRC = 1 << 4,
+  XT_CONNTRACK_PROTO = 1 << 1,
+  XT_CONNTRACK_ORIGSRC = 1 << 2,
+  XT_CONNTRACK_ORIGDST = 1 << 3,
+  XT_CONNTRACK_REPLSRC = 1 << 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CONNTRACK_REPLDST = 1 << 5,
- XT_CONNTRACK_STATUS = 1 << 6,
- XT_CONNTRACK_EXPIRES = 1 << 7,
- XT_CONNTRACK_ORIGSRC_PORT = 1 << 8,
+  XT_CONNTRACK_REPLDST = 1 << 5,
+  XT_CONNTRACK_STATUS = 1 << 6,
+  XT_CONNTRACK_EXPIRES = 1 << 7,
+  XT_CONNTRACK_ORIGSRC_PORT = 1 << 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CONNTRACK_ORIGDST_PORT = 1 << 9,
- XT_CONNTRACK_REPLSRC_PORT = 1 << 10,
- XT_CONNTRACK_REPLDST_PORT = 1 << 11,
- XT_CONNTRACK_DIRECTION = 1 << 12,
+  XT_CONNTRACK_ORIGDST_PORT = 1 << 9,
+  XT_CONNTRACK_REPLSRC_PORT = 1 << 10,
+  XT_CONNTRACK_REPLDST_PORT = 1 << 11,
+  XT_CONNTRACK_DIRECTION = 1 << 12,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_CONNTRACK_STATE_ALIAS = 1 << 13,
+  XT_CONNTRACK_STATE_ALIAS = 1 << 13,
 };
 struct xt_conntrack_mtinfo1 {
- union nf_inet_addr origsrc_addr, origsrc_mask;
+  union nf_inet_addr origsrc_addr, origsrc_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union nf_inet_addr origdst_addr, origdst_mask;
- union nf_inet_addr replsrc_addr, replsrc_mask;
- union nf_inet_addr repldst_addr, repldst_mask;
- __u32 expires_min, expires_max;
+  union nf_inet_addr origdst_addr, origdst_mask;
+  union nf_inet_addr replsrc_addr, replsrc_mask;
+  union nf_inet_addr repldst_addr, repldst_mask;
+  __u32 expires_min, expires_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 l4proto;
- __be16 origsrc_port, origdst_port;
- __be16 replsrc_port, repldst_port;
- __u16 match_flags, invert_flags;
+  __u16 l4proto;
+  __be16 origsrc_port, origdst_port;
+  __be16 replsrc_port, repldst_port;
+  __u16 match_flags, invert_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 state_mask, status_mask;
+  __u8 state_mask, status_mask;
 };
 struct xt_conntrack_mtinfo2 {
- union nf_inet_addr origsrc_addr, origsrc_mask;
+  union nf_inet_addr origsrc_addr, origsrc_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union nf_inet_addr origdst_addr, origdst_mask;
- union nf_inet_addr replsrc_addr, replsrc_mask;
- union nf_inet_addr repldst_addr, repldst_mask;
- __u32 expires_min, expires_max;
+  union nf_inet_addr origdst_addr, origdst_mask;
+  union nf_inet_addr replsrc_addr, replsrc_mask;
+  union nf_inet_addr repldst_addr, repldst_mask;
+  __u32 expires_min, expires_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 l4proto;
- __be16 origsrc_port, origdst_port;
- __be16 replsrc_port, repldst_port;
- __u16 match_flags, invert_flags;
+  __u16 l4proto;
+  __be16 origsrc_port, origdst_port;
+  __be16 replsrc_port, repldst_port;
+  __u16 match_flags, invert_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 state_mask, status_mask;
+  __u16 state_mask, status_mask;
 };
 struct xt_conntrack_mtinfo3 {
- union nf_inet_addr origsrc_addr, origsrc_mask;
+  union nf_inet_addr origsrc_addr, origsrc_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union nf_inet_addr origdst_addr, origdst_mask;
- union nf_inet_addr replsrc_addr, replsrc_mask;
- union nf_inet_addr repldst_addr, repldst_mask;
- __u32 expires_min, expires_max;
+  union nf_inet_addr origdst_addr, origdst_mask;
+  union nf_inet_addr replsrc_addr, replsrc_mask;
+  union nf_inet_addr repldst_addr, repldst_mask;
+  __u32 expires_min, expires_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 l4proto;
- __u16 origsrc_port, origdst_port;
- __u16 replsrc_port, repldst_port;
- __u16 match_flags, invert_flags;
+  __u16 l4proto;
+  __u16 origsrc_port, origdst_port;
+  __u16 replsrc_port, repldst_port;
+  __u16 match_flags, invert_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 state_mask, status_mask;
- __u16 origsrc_port_high, origdst_port_high;
- __u16 replsrc_port_high, repldst_port_high;
+  __u16 state_mask, status_mask;
+  __u16 origsrc_port_high, origdst_port_high;
+  __u16 replsrc_port_high, repldst_port_high;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_cpu.h b/libc/kernel/uapi/linux/netfilter/xt_cpu.h
index b9211e6..0872286 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_cpu.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_cpu.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct xt_cpu_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cpu;
- __u32 invert;
+  __u32 cpu;
+  __u32 invert;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_dccp.h b/libc/kernel/uapi/linux/netfilter/xt_dccp.h
index 8095ef2..11b5022 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_dccp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_dccp.h
@@ -27,13 +27,13 @@
 #define XT_DCCP_VALID_FLAGS 0x0f
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_dccp_info {
- __u16 dpts[2];
- __u16 spts[2];
- __u16 flags;
+  __u16 dpts[2];
+  __u16 spts[2];
+  __u16 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 invflags;
- __u16 typemask;
- __u8 option;
+  __u16 invflags;
+  __u16 typemask;
+  __u8 option;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_devgroup.h b/libc/kernel/uapi/linux/netfilter/xt_devgroup.h
index d6b2ebc..591da26 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_devgroup.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_devgroup.h
@@ -21,19 +21,19 @@
 #include <linux/types.h>
 enum xt_devgroup_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_DEVGROUP_MATCH_SRC = 0x1,
- XT_DEVGROUP_INVERT_SRC = 0x2,
- XT_DEVGROUP_MATCH_DST = 0x4,
- XT_DEVGROUP_INVERT_DST = 0x8,
+  XT_DEVGROUP_MATCH_SRC = 0x1,
+  XT_DEVGROUP_INVERT_SRC = 0x2,
+  XT_DEVGROUP_MATCH_DST = 0x4,
+  XT_DEVGROUP_INVERT_DST = 0x8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_devgroup_info {
- __u32 flags;
- __u32 src_group;
+  __u32 flags;
+  __u32 src_group;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 src_mask;
- __u32 dst_group;
- __u32 dst_mask;
+  __u32 src_mask;
+  __u32 dst_group;
+  __u32 dst_mask;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_dscp.h b/libc/kernel/uapi/linux/netfilter/xt_dscp.h
index c3e6c1b..5c182a9 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_dscp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_dscp.h
@@ -24,15 +24,15 @@
 #define XT_DSCP_SHIFT 2
 #define XT_DSCP_MAX 0x3f
 struct xt_dscp_info {
- __u8 dscp;
+  __u8 dscp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invert;
+  __u8 invert;
 };
 struct xt_tos_match_info {
- __u8 tos_mask;
+  __u8 tos_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tos_value;
- __u8 invert;
+  __u8 tos_value;
+  __u8 invert;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_ecn.h b/libc/kernel/uapi/linux/netfilter/xt_ecn.h
index de04c65..4a82ec3 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_ecn.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_ecn.h
@@ -28,16 +28,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_ECN_OP_MATCH_MASK 0xce
 struct xt_ecn_info {
- __u8 operation;
- __u8 invert;
+  __u8 operation;
+  __u8 invert;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ip_ect;
- union {
- struct {
- __u8 ect;
+  __u8 ip_ect;
+  union {
+    struct {
+      __u8 ect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } tcp;
- } proto;
+    } tcp;
+  } proto;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_esp.h b/libc/kernel/uapi/linux/netfilter/xt_esp.h
index 8ca54e8..a5389f4 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_esp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_esp.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct xt_esp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spis[2];
- __u8 invflags;
+  __u32 spis[2];
+  __u8 invflags;
 };
 #define XT_ESP_INV_SPI 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h b/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h
index d7f6015..49e1c34 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h
@@ -24,55 +24,55 @@
 #define XT_HASHLIMIT_BYTE_SHIFT 4
 struct xt_hashlimit_htable;
 enum {
- XT_HASHLIMIT_HASH_DIP = 1 << 0,
+  XT_HASHLIMIT_HASH_DIP = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_HASHLIMIT_HASH_DPT = 1 << 1,
- XT_HASHLIMIT_HASH_SIP = 1 << 2,
- XT_HASHLIMIT_HASH_SPT = 1 << 3,
- XT_HASHLIMIT_INVERT = 1 << 4,
+  XT_HASHLIMIT_HASH_DPT = 1 << 1,
+  XT_HASHLIMIT_HASH_SIP = 1 << 2,
+  XT_HASHLIMIT_HASH_SPT = 1 << 3,
+  XT_HASHLIMIT_INVERT = 1 << 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_HASHLIMIT_BYTES = 1 << 5,
+  XT_HASHLIMIT_BYTES = 1 << 5,
 };
 struct hashlimit_cfg {
- __u32 mode;
+  __u32 mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 avg;
- __u32 burst;
- __u32 size;
- __u32 max;
+  __u32 avg;
+  __u32 burst;
+  __u32 size;
+  __u32 max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gc_interval;
- __u32 expire;
+  __u32 gc_interval;
+  __u32 expire;
 };
 struct xt_hashlimit_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name [IFNAMSIZ];
- struct hashlimit_cfg cfg;
- struct xt_hashlimit_htable *hinfo;
- union {
+  char name[IFNAMSIZ];
+  struct hashlimit_cfg cfg;
+  struct xt_hashlimit_htable * hinfo;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void *ptr;
- struct xt_hashlimit_info *master;
- } u;
+    void * ptr;
+    struct xt_hashlimit_info * master;
+  } u;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hashlimit_cfg1 {
- __u32 mode;
- __u32 avg;
- __u32 burst;
+  __u32 mode;
+  __u32 avg;
+  __u32 burst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 size;
- __u32 max;
- __u32 gc_interval;
- __u32 expire;
+  __u32 size;
+  __u32 max;
+  __u32 gc_interval;
+  __u32 expire;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 srcmask, dstmask;
+  __u8 srcmask, dstmask;
 };
 struct xt_hashlimit_mtinfo1 {
- char name[IFNAMSIZ];
+  char name[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct hashlimit_cfg1 cfg;
- struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
+  struct hashlimit_cfg1 cfg;
+  struct xt_hashlimit_htable * hinfo __attribute__((aligned(8)));
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_helper.h b/libc/kernel/uapi/linux/netfilter/xt_helper.h
index 785663e..73ae0a2 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_helper.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_helper.h
@@ -19,8 +19,8 @@
 #ifndef _XT_HELPER_H
 #define _XT_HELPER_H
 struct xt_helper_info {
- int invert;
+  int invert;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[30];
+  char name[30];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_ipcomp.h b/libc/kernel/uapi/linux/netfilter/xt_ipcomp.h
index 1bd1b56..6c5f7b1 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_ipcomp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_ipcomp.h
@@ -21,9 +21,9 @@
 #include <linux/types.h>
 struct xt_ipcomp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spis[2];
- __u8 invflags;
- __u8 hdrres;
+  __u32 spis[2];
+  __u8 invflags;
+  __u8 hdrres;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_IPCOMP_INV_SPI 0x01
diff --git a/libc/kernel/uapi/linux/netfilter/xt_iprange.h b/libc/kernel/uapi/linux/netfilter/xt_iprange.h
index 5dcf154..315bc59 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_iprange.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_iprange.h
@@ -22,17 +22,17 @@
 #include <linux/netfilter.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPRANGE_SRC = 1 << 0,
- IPRANGE_DST = 1 << 1,
- IPRANGE_SRC_INV = 1 << 4,
+  IPRANGE_SRC = 1 << 0,
+  IPRANGE_DST = 1 << 1,
+  IPRANGE_SRC_INV = 1 << 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPRANGE_DST_INV = 1 << 5,
+  IPRANGE_DST_INV = 1 << 5,
 };
 struct xt_iprange_mtinfo {
- union nf_inet_addr src_min, src_max;
+  union nf_inet_addr src_min, src_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union nf_inet_addr dst_min, dst_max;
- __u8 flags;
+  union nf_inet_addr dst_min, dst_max;
+  __u8 flags;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_ipvs.h b/libc/kernel/uapi/linux/netfilter/xt_ipvs.h
index 4a03df2..8a702e0 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_ipvs.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_ipvs.h
@@ -21,28 +21,28 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_IPVS_IPVS_PROPERTY = 1 << 0,
- XT_IPVS_PROTO = 1 << 1,
- XT_IPVS_VADDR = 1 << 2,
- XT_IPVS_VPORT = 1 << 3,
+  XT_IPVS_IPVS_PROPERTY = 1 << 0,
+  XT_IPVS_PROTO = 1 << 1,
+  XT_IPVS_VADDR = 1 << 2,
+  XT_IPVS_VPORT = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_IPVS_DIR = 1 << 4,
- XT_IPVS_METHOD = 1 << 5,
- XT_IPVS_VPORTCTL = 1 << 6,
- XT_IPVS_MASK = (1 << 7) - 1,
+  XT_IPVS_DIR = 1 << 4,
+  XT_IPVS_METHOD = 1 << 5,
+  XT_IPVS_VPORTCTL = 1 << 6,
+  XT_IPVS_MASK = (1 << 7) - 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_IPVS_ONCE_MASK = XT_IPVS_MASK & ~XT_IPVS_IPVS_PROPERTY
+  XT_IPVS_ONCE_MASK = XT_IPVS_MASK & ~XT_IPVS_IPVS_PROPERTY
 };
 struct xt_ipvs_mtinfo {
- union nf_inet_addr vaddr, vmask;
+  union nf_inet_addr vaddr, vmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 vport;
- __u8 l4proto;
- __u8 fwd_method;
- __be16 vportctl;
+  __be16 vport;
+  __u8 l4proto;
+  __u8 fwd_method;
+  __be16 vportctl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invert;
- __u8 bitmask;
+  __u8 invert;
+  __u8 bitmask;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_l2tp.h b/libc/kernel/uapi/linux/netfilter/xt_l2tp.h
index 9a7b82c..1ba14a4 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_l2tp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_l2tp.h
@@ -21,24 +21,24 @@
 #include <linux/types.h>
 enum xt_l2tp_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_L2TP_TYPE_CONTROL,
- XT_L2TP_TYPE_DATA,
+  XT_L2TP_TYPE_CONTROL,
+  XT_L2TP_TYPE_DATA,
 };
 struct xt_l2tp_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tid;
- __u32 sid;
- __u8 version;
- __u8 type;
+  __u32 tid;
+  __u32 sid;
+  __u8 version;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
+  __u8 flags;
 };
 enum {
- XT_L2TP_TID = (1 << 0),
+  XT_L2TP_TID = (1 << 0),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_L2TP_SID = (1 << 1),
- XT_L2TP_VERSION = (1 << 2),
- XT_L2TP_TYPE = (1 << 3),
+  XT_L2TP_SID = (1 << 1),
+  XT_L2TP_VERSION = (1 << 2),
+  XT_L2TP_TYPE = (1 << 3),
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_length.h b/libc/kernel/uapi/linux/netfilter/xt_length.h
index 0f1c7d9..7ab7dce 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_length.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_length.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct xt_length_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 min, max;
- __u8 invert;
+  __u16 min, max;
+  __u8 invert;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_limit.h b/libc/kernel/uapi/linux/netfilter/xt_limit.h
index e22997c..4937eaa 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_limit.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_limit.h
@@ -23,13 +23,13 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_limit_priv;
 struct xt_rateinfo {
- __u32 avg;
- __u32 burst;
+  __u32 avg;
+  __u32 burst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long prev;
- __u32 credit;
- __u32 credit_cap, cost;
- struct xt_limit_priv *master;
+  unsigned long prev;
+  __u32 credit;
+  __u32 credit_cap, cost;
+  struct xt_limit_priv * master;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_mac.h b/libc/kernel/uapi/linux/netfilter/xt_mac.h
index 12c584c..5796906 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_mac.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_mac.h
@@ -19,8 +19,8 @@
 #ifndef _XT_MAC_H
 #define _XT_MAC_H
 struct xt_mac_info {
- unsigned char srcaddr[ETH_ALEN];
+  unsigned char srcaddr[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int invert;
+  int invert;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_mark.h b/libc/kernel/uapi/linux/netfilter/xt_mark.h
index 1cd0ea0..9232b71 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_mark.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_mark.h
@@ -21,11 +21,11 @@
 #include <linux/types.h>
 struct xt_mark_tginfo2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mark, mask;
+  __u32 mark, mask;
 };
 struct xt_mark_mtinfo1 {
- __u32 mark, mask;
+  __u32 mark, mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invert;
+  __u8 invert;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_multiport.h b/libc/kernel/uapi/linux/netfilter/xt_multiport.h
index d4304f5..5677752 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_multiport.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_multiport.h
@@ -21,25 +21,25 @@
 #include <linux/types.h>
 enum xt_multiport_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_MULTIPORT_SOURCE,
- XT_MULTIPORT_DESTINATION,
- XT_MULTIPORT_EITHER
+  XT_MULTIPORT_SOURCE,
+  XT_MULTIPORT_DESTINATION,
+  XT_MULTIPORT_EITHER
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_MULTI_PORTS 15
 struct xt_multiport {
- __u8 flags;
- __u8 count;
+  __u8 flags;
+  __u8 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 ports[XT_MULTI_PORTS];
+  __u16 ports[XT_MULTI_PORTS];
 };
 struct xt_multiport_v1 {
- __u8 flags;
+  __u8 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 count;
- __u16 ports[XT_MULTI_PORTS];
- __u8 pflags[XT_MULTI_PORTS];
- __u8 invert;
+  __u8 count;
+  __u16 ports[XT_MULTI_PORTS];
+  __u8 pflags[XT_MULTI_PORTS];
+  __u8 invert;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_nfacct.h b/libc/kernel/uapi/linux/netfilter/xt_nfacct.h
index 37da038..8313e4c 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_nfacct.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_nfacct.h
@@ -22,8 +22,8 @@
 struct nf_acct;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_nfacct_match_info {
- char name[NFACCT_NAME_MAX];
- struct nf_acct *nfacct;
+  char name[NFACCT_NAME_MAX];
+  struct nf_acct * nfacct;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_osf.h b/libc/kernel/uapi/linux/netfilter/xt_osf.h
index ceee48d..9859797 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_osf.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_osf.h
@@ -21,10 +21,10 @@
 #include <linux/types.h>
 #define MAXGENRELEN 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define XT_OSF_GENRE (1<<0)
-#define XT_OSF_TTL (1<<1)
-#define XT_OSF_LOG (1<<2)
-#define XT_OSF_INVERT (1<<3)
+#define XT_OSF_GENRE (1 << 0)
+#define XT_OSF_TTL (1 << 1)
+#define XT_OSF_LOG (1 << 2)
+#define XT_OSF_INVERT (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_OSF_LOGLEVEL_ALL 0
 #define XT_OSF_LOGLEVEL_FIRST 1
@@ -34,80 +34,80 @@
 #define XT_OSF_TTL_LESS 1
 #define XT_OSF_TTL_NOCHECK 2
 struct xt_osf_info {
- char genre[MAXGENRELEN];
+  char genre[MAXGENRELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 len;
- __u32 flags;
- __u32 loglevel;
- __u32 ttl;
+  __u32 len;
+  __u32 flags;
+  __u32 loglevel;
+  __u32 ttl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_osf_wc {
- __u32 wc;
- __u32 val;
+  __u32 wc;
+  __u32 val;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_osf_opt {
- __u16 kind, length;
- struct xt_osf_wc wc;
+  __u16 kind, length;
+  struct xt_osf_wc wc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_osf_user_finger {
- struct xt_osf_wc wss;
- __u8 ttl, df;
+  struct xt_osf_wc wss;
+  __u8 ttl, df;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 ss, mss;
- __u16 opt_num;
- char genre[MAXGENRELEN];
- char version[MAXGENRELEN];
+  __u16 ss, mss;
+  __u16 opt_num;
+  char genre[MAXGENRELEN];
+  char version[MAXGENRELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char subtype[MAXGENRELEN];
- struct xt_osf_opt opt[MAX_IPOPTLEN];
+  char subtype[MAXGENRELEN];
+  struct xt_osf_opt opt[MAX_IPOPTLEN];
 };
 struct xt_osf_nlmsg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_osf_user_finger f;
- struct iphdr ip;
- struct tcphdr tcp;
+  struct xt_osf_user_finger f;
+  struct iphdr ip;
+  struct tcphdr tcp;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum iana_options {
- OSFOPT_EOL = 0,
- OSFOPT_NOP,
- OSFOPT_MSS,
+  OSFOPT_EOL = 0,
+  OSFOPT_NOP,
+  OSFOPT_MSS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSFOPT_WSO,
- OSFOPT_SACKP,
- OSFOPT_SACK,
- OSFOPT_ECHO,
+  OSFOPT_WSO,
+  OSFOPT_SACKP,
+  OSFOPT_SACK,
+  OSFOPT_ECHO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSFOPT_ECHOREPLY,
- OSFOPT_TS,
- OSFOPT_POCP,
- OSFOPT_POSP,
+  OSFOPT_ECHOREPLY,
+  OSFOPT_TS,
+  OSFOPT_POCP,
+  OSFOPT_POSP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSFOPT_EMPTY = 255,
+  OSFOPT_EMPTY = 255,
 };
 enum xt_osf_window_size_options {
- OSF_WSS_PLAIN = 0,
+  OSF_WSS_PLAIN = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSF_WSS_MSS,
- OSF_WSS_MTU,
- OSF_WSS_MODULO,
- OSF_WSS_MAX,
+  OSF_WSS_MSS,
+  OSF_WSS_MTU,
+  OSF_WSS_MODULO,
+  OSF_WSS_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum xt_osf_msg_types {
- OSF_MSG_ADD,
- OSF_MSG_REMOVE,
+  OSF_MSG_ADD,
+  OSF_MSG_REMOVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSF_MSG_MAX,
+  OSF_MSG_MAX,
 };
 enum xt_osf_attr_type {
- OSF_ATTR_UNSPEC,
+  OSF_ATTR_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OSF_ATTR_FINGER,
- OSF_ATTR_MAX,
+  OSF_ATTR_FINGER,
+  OSF_ATTR_MAX,
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_owner.h b/libc/kernel/uapi/linux/netfilter/xt_owner.h
index 872e078..28b0456 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_owner.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_owner.h
@@ -21,15 +21,15 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_OWNER_UID = 1 << 0,
- XT_OWNER_GID = 1 << 1,
- XT_OWNER_SOCKET = 1 << 2,
+  XT_OWNER_UID = 1 << 0,
+  XT_OWNER_GID = 1 << 1,
+  XT_OWNER_SOCKET = 1 << 2,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_owner_match_info {
- __u32 uid_min, uid_max;
- __u32 gid_min, gid_max;
- __u8 match, invert;
+  __u32 uid_min, uid_max;
+  __u32 gid_min, gid_max;
+  __u8 match, invert;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_physdev.h b/libc/kernel/uapi/linux/netfilter/xt_physdev.h
index 161ece2..ccfd67b 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_physdev.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_physdev.h
@@ -28,13 +28,13 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_PHYSDEV_OP_MASK (0x20 - 1)
 struct xt_physdev_info {
- char physindev[IFNAMSIZ];
- char in_mask[IFNAMSIZ];
+  char physindev[IFNAMSIZ];
+  char in_mask[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char physoutdev[IFNAMSIZ];
- char out_mask[IFNAMSIZ];
- __u8 invert;
- __u8 bitmask;
+  char physoutdev[IFNAMSIZ];
+  char out_mask[IFNAMSIZ];
+  __u8 invert;
+  __u8 bitmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_pkttype.h b/libc/kernel/uapi/linux/netfilter/xt_pkttype.h
index 5ef1256..b23899e 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_pkttype.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_pkttype.h
@@ -19,8 +19,8 @@
 #ifndef _XT_PKTTYPE_H
 #define _XT_PKTTYPE_H
 struct xt_pkttype_info {
- int pkttype;
+  int pkttype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int invert;
+  int invert;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_policy.h b/libc/kernel/uapi/linux/netfilter/xt_policy.h
index f605fae..5babfde 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_policy.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_policy.h
@@ -22,57 +22,50 @@
 #define XT_POLICY_MAX_ELEM 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum xt_policy_flags {
- XT_POLICY_MATCH_IN = 0x1,
- XT_POLICY_MATCH_OUT = 0x2,
- XT_POLICY_MATCH_NONE = 0x4,
+  XT_POLICY_MATCH_IN = 0x1,
+  XT_POLICY_MATCH_OUT = 0x2,
+  XT_POLICY_MATCH_NONE = 0x4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_POLICY_MATCH_STRICT = 0x8,
+  XT_POLICY_MATCH_STRICT = 0x8,
 };
 enum xt_policy_modes {
- XT_POLICY_MODE_TRANSPORT,
+  XT_POLICY_MODE_TRANSPORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_POLICY_MODE_TUNNEL
+  XT_POLICY_MODE_TUNNEL
 };
 struct xt_policy_spec {
- __u8 saddr:1,
+  __u8 saddr : 1, daddr : 1, proto : 1, mode : 1, spi : 1, reqid : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- daddr:1,
- proto:1,
- mode:1,
- spi:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- reqid:1;
 };
 union xt_policy_addr {
- struct in_addr a4;
+  struct in_addr a4;
+  struct in6_addr a6;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in6_addr a6;
 };
 struct xt_policy_elem {
- union {
+  union {
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- union xt_policy_addr saddr;
- union xt_policy_addr smask;
- union xt_policy_addr daddr;
+      union xt_policy_addr saddr;
+      union xt_policy_addr smask;
+      union xt_policy_addr daddr;
+      union xt_policy_addr dmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union xt_policy_addr dmask;
- };
- };
- __be32 spi;
+    };
+  };
+  __be32 spi;
+  __u32 reqid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reqid;
- __u8 proto;
- __u8 mode;
- struct xt_policy_spec match;
+  __u8 proto;
+  __u8 mode;
+  struct xt_policy_spec match;
+  struct xt_policy_spec invert;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_policy_spec invert;
 };
 struct xt_policy_info {
- struct xt_policy_elem pol[XT_POLICY_MAX_ELEM];
+  struct xt_policy_elem pol[XT_POLICY_MAX_ELEM];
+  __u16 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flags;
- __u16 len;
+  __u16 len;
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_quota.h b/libc/kernel/uapi/linux/netfilter/xt_quota.h
index b675393..f857ed9 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_quota.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_quota.h
@@ -21,16 +21,16 @@
 #include <linux/types.h>
 enum xt_quota_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_QUOTA_INVERT = 0x1,
+  XT_QUOTA_INVERT = 0x1,
 };
 #define XT_QUOTA_MASK 0x1
 struct xt_quota_priv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_quota_info {
- __u32 flags;
- __u32 pad;
- __aligned_u64 quota;
+  __u32 flags;
+  __u32 pad;
+  __aligned_u64 quota;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_quota_priv *master;
+  struct xt_quota_priv * master;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_rateest.h b/libc/kernel/uapi/linux/netfilter/xt_rateest.h
index 66b06aa..0db074d 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_rateest.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_rateest.h
@@ -21,35 +21,35 @@
 #include <linux/types.h>
 enum xt_rateest_match_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_RATEEST_MATCH_INVERT = 1<<0,
- XT_RATEEST_MATCH_ABS = 1<<1,
- XT_RATEEST_MATCH_REL = 1<<2,
- XT_RATEEST_MATCH_DELTA = 1<<3,
+  XT_RATEEST_MATCH_INVERT = 1 << 0,
+  XT_RATEEST_MATCH_ABS = 1 << 1,
+  XT_RATEEST_MATCH_REL = 1 << 2,
+  XT_RATEEST_MATCH_DELTA = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_RATEEST_MATCH_BPS = 1<<4,
- XT_RATEEST_MATCH_PPS = 1<<5,
+  XT_RATEEST_MATCH_BPS = 1 << 4,
+  XT_RATEEST_MATCH_PPS = 1 << 5,
 };
 enum xt_rateest_match_mode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_RATEEST_MATCH_NONE,
- XT_RATEEST_MATCH_EQ,
- XT_RATEEST_MATCH_LT,
- XT_RATEEST_MATCH_GT,
+  XT_RATEEST_MATCH_NONE,
+  XT_RATEEST_MATCH_EQ,
+  XT_RATEEST_MATCH_LT,
+  XT_RATEEST_MATCH_GT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_rateest_match_info {
- char name1[IFNAMSIZ];
- char name2[IFNAMSIZ];
+  char name1[IFNAMSIZ];
+  char name2[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flags;
- __u16 mode;
- __u32 bps1;
- __u32 pps1;
+  __u16 flags;
+  __u16 mode;
+  __u32 bps1;
+  __u32 pps1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bps2;
- __u32 pps2;
- struct xt_rateest *est1 __attribute__((aligned(8)));
- struct xt_rateest *est2 __attribute__((aligned(8)));
+  __u32 bps2;
+  __u32 pps2;
+  struct xt_rateest * est1 __attribute__((aligned(8)));
+  struct xt_rateest * est2 __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_realm.h b/libc/kernel/uapi/linux/netfilter/xt_realm.h
index 4677985..7a49189 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_realm.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_realm.h
@@ -21,9 +21,9 @@
 #include <linux/types.h>
 struct xt_realm_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 mask;
- __u8 invert;
+  __u32 id;
+  __u32 mask;
+  __u8 invert;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_recent.h b/libc/kernel/uapi/linux/netfilter/xt_recent.h
index 2ad685f..8294c5b 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_recent.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_recent.h
@@ -21,40 +21,40 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_RECENT_CHECK = 1 << 0,
- XT_RECENT_SET = 1 << 1,
- XT_RECENT_UPDATE = 1 << 2,
- XT_RECENT_REMOVE = 1 << 3,
+  XT_RECENT_CHECK = 1 << 0,
+  XT_RECENT_SET = 1 << 1,
+  XT_RECENT_UPDATE = 1 << 2,
+  XT_RECENT_REMOVE = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_RECENT_TTL = 1 << 4,
- XT_RECENT_REAP = 1 << 5,
- XT_RECENT_SOURCE = 0,
- XT_RECENT_DEST = 1,
+  XT_RECENT_TTL = 1 << 4,
+  XT_RECENT_REAP = 1 << 5,
+  XT_RECENT_SOURCE = 0,
+  XT_RECENT_DEST = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_RECENT_NAME_LEN = 200,
+  XT_RECENT_NAME_LEN = 200,
 };
-#define XT_RECENT_MODIFIERS (XT_RECENT_TTL|XT_RECENT_REAP)
-#define XT_RECENT_VALID_FLAGS (XT_RECENT_CHECK|XT_RECENT_SET|XT_RECENT_UPDATE|  XT_RECENT_REMOVE|XT_RECENT_TTL|XT_RECENT_REAP)
+#define XT_RECENT_MODIFIERS (XT_RECENT_TTL | XT_RECENT_REAP)
+#define XT_RECENT_VALID_FLAGS (XT_RECENT_CHECK | XT_RECENT_SET | XT_RECENT_UPDATE | XT_RECENT_REMOVE | XT_RECENT_TTL | XT_RECENT_REAP)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_recent_mtinfo {
- __u32 seconds;
- __u32 hit_count;
- __u8 check_set;
+  __u32 seconds;
+  __u32 hit_count;
+  __u8 check_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invert;
- char name[XT_RECENT_NAME_LEN];
- __u8 side;
+  __u8 invert;
+  char name[XT_RECENT_NAME_LEN];
+  __u8 side;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_recent_mtinfo_v1 {
- __u32 seconds;
- __u32 hit_count;
- __u8 check_set;
+  __u32 seconds;
+  __u32 hit_count;
+  __u8 check_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invert;
- char name[XT_RECENT_NAME_LEN];
- __u8 side;
- union nf_inet_addr mask;
+  __u8 invert;
+  char name[XT_RECENT_NAME_LEN];
+  __u8 side;
+  union nf_inet_addr mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_rpfilter.h b/libc/kernel/uapi/linux/netfilter/xt_rpfilter.h
index 29533d6..dbe6e6c 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_rpfilter.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_rpfilter.h
@@ -21,14 +21,14 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_RPFILTER_LOOSE = 1 << 0,
- XT_RPFILTER_VALID_MARK = 1 << 1,
- XT_RPFILTER_ACCEPT_LOCAL = 1 << 2,
- XT_RPFILTER_INVERT = 1 << 3,
+  XT_RPFILTER_LOOSE = 1 << 0,
+  XT_RPFILTER_VALID_MARK = 1 << 1,
+  XT_RPFILTER_ACCEPT_LOCAL = 1 << 2,
+  XT_RPFILTER_INVERT = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_rpfilter_info {
- __u8 flags;
+  __u8 flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_sctp.h b/libc/kernel/uapi/linux/netfilter/xt_sctp.h
index ed7246b..b6fbeda 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_sctp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_sctp.h
@@ -26,38 +26,40 @@
 #define XT_SCTP_VALID_FLAGS 0x07
 struct xt_sctp_flag_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 chunktype;
- __u8 flag;
- __u8 flag_mask;
+  __u8 chunktype;
+  __u8 flag;
+  __u8 flag_mask;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_NUM_SCTP_FLAGS 4
 struct xt_sctp_info {
- __u16 dpts[2];
- __u16 spts[2];
+  __u16 dpts[2];
+  __u16 spts[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 chunkmap[256 / sizeof (__u32)];
+  __u32 chunkmap[256 / sizeof(__u32)];
 #define SCTP_CHUNK_MATCH_ANY 0x01
 #define SCTP_CHUNK_MATCH_ALL 0x02
 #define SCTP_CHUNK_MATCH_ONLY 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 chunk_match_type;
- struct xt_sctp_flag_info flag_info[XT_NUM_SCTP_FLAGS];
- int flag_count;
- __u32 flags;
+  __u32 chunk_match_type;
+  struct xt_sctp_flag_info flag_info[XT_NUM_SCTP_FLAGS];
+  int flag_count;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 invflags;
+  __u32 invflags;
 };
 #define bytes(type) (sizeof(type) * 8)
-#define SCTP_CHUNKMAP_SET(chunkmap, type)   do {   (chunkmap)[type / bytes(__u32)] |=   1 << (type % bytes(__u32));   } while (0)
+#define SCTP_CHUNKMAP_SET(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] |= 1 << (type % bytes(__u32)); } while(0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SCTP_CHUNKMAP_CLEAR(chunkmap, type)   do {   (chunkmap)[type / bytes(__u32)] &=   ~(1 << (type % bytes(__u32)));   } while (0)
-#define SCTP_CHUNKMAP_IS_SET(chunkmap, type)  ({   ((chunkmap)[type / bytes (__u32)] &   (1 << (type % bytes (__u32)))) ? 1: 0;  })
-#define SCTP_CHUNKMAP_RESET(chunkmap)   memset((chunkmap), 0, sizeof(chunkmap))
-#define SCTP_CHUNKMAP_SET_ALL(chunkmap)   memset((chunkmap), ~0U, sizeof(chunkmap))
+#define SCTP_CHUNKMAP_CLEAR(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] &= ~(1 << (type % bytes(__u32))); } while(0)
+#define SCTP_CHUNKMAP_IS_SET(chunkmap,type) \
+({ ((chunkmap)[type / bytes(__u32)] & (1 << (type % bytes(__u32)))) ? 1 : 0; \
+})
+#define SCTP_CHUNKMAP_RESET(chunkmap) memset((chunkmap), 0, sizeof(chunkmap))
+#define SCTP_CHUNKMAP_SET_ALL(chunkmap) memset((chunkmap), ~0U, sizeof(chunkmap))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SCTP_CHUNKMAP_COPY(destmap, srcmap)   memcpy((destmap), (srcmap), sizeof(srcmap))
-#define SCTP_CHUNKMAP_IS_CLEAR(chunkmap)   __sctp_chunkmap_is_clear((chunkmap), ARRAY_SIZE(chunkmap))
-#define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap)   __sctp_chunkmap_is_all_set((chunkmap), ARRAY_SIZE(chunkmap))
+#define SCTP_CHUNKMAP_COPY(destmap,srcmap) memcpy((destmap), (srcmap), sizeof(srcmap))
+#define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) __sctp_chunkmap_is_clear((chunkmap), ARRAY_SIZE(chunkmap))
+#define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) __sctp_chunkmap_is_all_set((chunkmap), ARRAY_SIZE(chunkmap))
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_set.h b/libc/kernel/uapi/linux/netfilter/xt_set.h
index 3d27e57..5a2fe01 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_set.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_set.h
@@ -26,55 +26,64 @@
 #define IPSET_MATCH_INV 0x04
 struct xt_set_info_v0 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ip_set_id_t index;
- union {
- __u32 flags[IPSET_DIM_MAX + 1];
- struct {
+  ip_set_id_t index;
+  union {
+    __u32 flags[IPSET_DIM_MAX + 1];
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __flags[IPSET_DIM_MAX];
- __u8 dim;
- __u8 flags;
- } compat;
+      __u32 __flags[IPSET_DIM_MAX];
+      __u8 dim;
+      __u8 flags;
+    } compat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } u;
+  } u;
 };
 struct xt_set_info_match_v0 {
- struct xt_set_info_v0 match_set;
+  struct xt_set_info_v0 match_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_set_info_target_v0 {
- struct xt_set_info_v0 add_set;
- struct xt_set_info_v0 del_set;
+  struct xt_set_info_v0 add_set;
+  struct xt_set_info_v0 del_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_set_info {
- ip_set_id_t index;
- __u8 dim;
+  ip_set_id_t index;
+  __u8 dim;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
+  __u8 flags;
 };
 struct xt_set_info_match_v1 {
- struct xt_set_info match_set;
+  struct xt_set_info match_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_set_info_target_v1 {
- struct xt_set_info add_set;
- struct xt_set_info del_set;
+  struct xt_set_info add_set;
+  struct xt_set_info del_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_set_info_target_v2 {
- struct xt_set_info add_set;
- struct xt_set_info del_set;
+  struct xt_set_info add_set;
+  struct xt_set_info del_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 timeout;
+  __u32 flags;
+  __u32 timeout;
 };
 struct xt_set_info_match_v3 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_set_info match_set;
- struct ip_set_counter_match packets;
- struct ip_set_counter_match bytes;
- __u32 flags;
+  struct xt_set_info match_set;
+  struct ip_set_counter_match packets;
+  struct ip_set_counter_match bytes;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+struct xt_set_info_target_v3 {
+  struct xt_set_info add_set;
+  struct xt_set_info del_set;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct xt_set_info map_set;
+  __u32 flags;
+  __u32 timeout;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_socket.h b/libc/kernel/uapi/linux/netfilter/xt_socket.h
index 4170fe6..ff57d20 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_socket.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_socket.h
@@ -21,17 +21,17 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_SOCKET_TRANSPARENT = 1 << 0,
- XT_SOCKET_NOWILDCARD = 1 << 1,
+  XT_SOCKET_TRANSPARENT = 1 << 0,
+  XT_SOCKET_NOWILDCARD = 1 << 1,
 };
 struct xt_socket_mtinfo1 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
+  __u8 flags;
 };
 #define XT_SOCKET_FLAGS_V1 XT_SOCKET_TRANSPARENT
 struct xt_socket_mtinfo2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
+  __u8 flags;
 };
 #define XT_SOCKET_FLAGS_V2 (XT_SOCKET_TRANSPARENT | XT_SOCKET_NOWILDCARD)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_state.h b/libc/kernel/uapi/linux/netfilter/xt_state.h
index 6ff1889..5d2cd10 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_state.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_state.h
@@ -18,12 +18,12 @@
  ****************************************************************************/
 #ifndef _XT_STATE_H
 #define _XT_STATE_H
-#define XT_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1))
+#define XT_STATE_BIT(ctinfo) (1 << ((ctinfo) % IP_CT_IS_REPLY + 1))
 #define XT_STATE_INVALID (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_STATE_UNTRACKED (1 << (IP_CT_NUMBER + 1))
 struct xt_state_info {
- unsigned int statemask;
+  unsigned int statemask;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_statistic.h b/libc/kernel/uapi/linux/netfilter/xt_statistic.h
index 6215aae..19c4e7a 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_statistic.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_statistic.h
@@ -21,35 +21,35 @@
 #include <linux/types.h>
 enum xt_statistic_mode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_STATISTIC_MODE_RANDOM,
- XT_STATISTIC_MODE_NTH,
- __XT_STATISTIC_MODE_MAX
+  XT_STATISTIC_MODE_RANDOM,
+  XT_STATISTIC_MODE_NTH,
+  __XT_STATISTIC_MODE_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_STATISTIC_MODE_MAX (__XT_STATISTIC_MODE_MAX - 1)
 enum xt_statistic_flags {
- XT_STATISTIC_INVERT = 0x1,
+  XT_STATISTIC_INVERT = 0x1,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_STATISTIC_MASK 0x1
 struct xt_statistic_priv;
 struct xt_statistic_info {
- __u16 mode;
+  __u16 mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flags;
- union {
- struct {
- __u32 probability;
+  __u16 flags;
+  union {
+    struct {
+      __u32 probability;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } random;
- struct {
- __u32 every;
- __u32 packet;
+    } random;
+    struct {
+      __u32 every;
+      __u32 packet;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count;
- } nth;
- } u;
- struct xt_statistic_priv *master __attribute__((aligned(8)));
+      __u32 count;
+    } nth;
+  } u;
+  struct xt_statistic_priv * master __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_string.h b/libc/kernel/uapi/linux/netfilter/xt_string.h
index 197ccf4..cf45a69 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_string.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_string.h
@@ -23,28 +23,28 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_STRING_MAX_ALGO_NAME_SIZE 16
 enum {
- XT_STRING_FLAG_INVERT = 0x01,
- XT_STRING_FLAG_IGNORECASE = 0x02
+  XT_STRING_FLAG_INVERT = 0x01,
+  XT_STRING_FLAG_IGNORECASE = 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_string_info {
- __u16 from_offset;
- __u16 to_offset;
+  __u16 from_offset;
+  __u16 to_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char algo[XT_STRING_MAX_ALGO_NAME_SIZE];
- char pattern[XT_STRING_MAX_PATTERN_SIZE];
- __u8 patlen;
- union {
+  char algo[XT_STRING_MAX_ALGO_NAME_SIZE];
+  char pattern[XT_STRING_MAX_PATTERN_SIZE];
+  __u8 patlen;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u8 invert;
- } v0;
- struct {
+    struct {
+      __u8 invert;
+    } v0;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- } v1;
- } u;
- struct ts_config __attribute__((aligned(8))) *config;
+      __u8 flags;
+    } v1;
+  } u;
+  struct ts_config __attribute__((aligned(8))) * config;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_tcpmss.h b/libc/kernel/uapi/linux/netfilter/xt_tcpmss.h
index d1bb707..f8d0597 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_tcpmss.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_tcpmss.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct xt_tcpmss_match_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 mss_min, mss_max;
- __u8 invert;
+  __u16 mss_min, mss_max;
+  __u8 invert;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter/xt_tcpudp.h b/libc/kernel/uapi/linux/netfilter/xt_tcpudp.h
index 9386110..35f531a 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_tcpudp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_tcpudp.h
@@ -21,13 +21,13 @@
 #include <linux/types.h>
 struct xt_tcp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 spts[2];
- __u16 dpts[2];
- __u8 option;
- __u8 flg_mask;
+  __u16 spts[2];
+  __u16 dpts[2];
+  __u8 option;
+  __u8 flg_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flg_cmp;
- __u8 invflags;
+  __u8 flg_cmp;
+  __u8 invflags;
 };
 #define XT_TCP_INV_SRCPT 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -37,9 +37,9 @@
 #define XT_TCP_INV_MASK 0x0F
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_udp {
- __u16 spts[2];
- __u16 dpts[2];
- __u8 invflags;
+  __u16 spts[2];
+  __u16 dpts[2];
+  __u8 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define XT_UDP_INV_SRCPT 0x01
diff --git a/libc/kernel/uapi/linux/netfilter/xt_time.h b/libc/kernel/uapi/linux/netfilter/xt_time.h
index 238a2ca..4306b02 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_time.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_time.h
@@ -21,25 +21,25 @@
 #include <linux/types.h>
 struct xt_time_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 date_start;
- __u32 date_stop;
- __u32 daytime_start;
- __u32 daytime_stop;
+  __u32 date_start;
+  __u32 date_stop;
+  __u32 daytime_start;
+  __u32 daytime_stop;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 monthdays_match;
- __u8 weekdays_match;
- __u8 flags;
+  __u32 monthdays_match;
+  __u8 weekdays_match;
+  __u8 flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- XT_TIME_LOCAL_TZ = 1 << 0,
- XT_TIME_CONTIGUOUS = 1 << 1,
- XT_TIME_ALL_MONTHDAYS = 0xFFFFFFFE,
+  XT_TIME_LOCAL_TZ = 1 << 0,
+  XT_TIME_CONTIGUOUS = 1 << 1,
+  XT_TIME_ALL_MONTHDAYS = 0xFFFFFFFE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_TIME_ALL_WEEKDAYS = 0xFE,
- XT_TIME_MIN_DAYTIME = 0,
- XT_TIME_MAX_DAYTIME = 24 * 60 * 60 - 1,
+  XT_TIME_ALL_WEEKDAYS = 0xFE,
+  XT_TIME_MIN_DAYTIME = 0,
+  XT_TIME_MAX_DAYTIME = 24 * 60 * 60 - 1,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define XT_TIME_ALL_FLAGS (XT_TIME_LOCAL_TZ|XT_TIME_CONTIGUOUS)
+#define XT_TIME_ALL_FLAGS (XT_TIME_LOCAL_TZ | XT_TIME_CONTIGUOUS)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_u32.h b/libc/kernel/uapi/linux/netfilter/xt_u32.h
index 0268fc0..aeae1af 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_u32.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_u32.h
@@ -21,35 +21,35 @@
 #include <linux/types.h>
 enum xt_u32_ops {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XT_U32_AND,
- XT_U32_LEFTSH,
- XT_U32_RIGHTSH,
- XT_U32_AT,
+  XT_U32_AND,
+  XT_U32_LEFTSH,
+  XT_U32_RIGHTSH,
+  XT_U32_AT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_u32_location_element {
- __u32 number;
- __u8 nextop;
+  __u32 number;
+  __u8 nextop;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xt_u32_value_element {
- __u32 min;
- __u32 max;
+  __u32 min;
+  __u32 max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define XT_U32_MAXSIZE 10
 struct xt_u32_test {
- struct xt_u32_location_element location[XT_U32_MAXSIZE+1];
+  struct xt_u32_location_element location[XT_U32_MAXSIZE + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_u32_value_element value[XT_U32_MAXSIZE+1];
- __u8 nnums;
- __u8 nvalues;
+  struct xt_u32_value_element value[XT_U32_MAXSIZE + 1];
+  __u8 nnums;
+  __u8 nvalues;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_u32 {
- struct xt_u32_test tests[XT_U32_MAXSIZE+1];
- __u8 ntests;
- __u8 invert;
+  struct xt_u32_test tests[XT_U32_MAXSIZE + 1];
+  __u8 ntests;
+  __u8 invert;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 95e1e29..123683d 100644
--- a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -37,29 +37,29 @@
 #define ARPT_STANDARD_TARGET XT_STANDARD_TARGET
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_ERROR_TARGET XT_ERROR_TARGET
-#define ARPT_ENTRY_ITERATE(entries, size, fn, args...)   XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args)
+#define ARPT_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ##args)
 #define ARPT_DEV_ADDR_LEN_MAX 16
 struct arpt_devaddr_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char addr[ARPT_DEV_ADDR_LEN_MAX];
- char mask[ARPT_DEV_ADDR_LEN_MAX];
+  char addr[ARPT_DEV_ADDR_LEN_MAX];
+  char mask[ARPT_DEV_ADDR_LEN_MAX];
 };
 struct arpt_arp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr src, tgt;
- struct in_addr smsk, tmsk;
- __u8 arhln, arhln_mask;
- struct arpt_devaddr_info src_devaddr;
+  struct in_addr src, tgt;
+  struct in_addr smsk, tmsk;
+  __u8 arhln, arhln_mask;
+  struct arpt_devaddr_info src_devaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct arpt_devaddr_info tgt_devaddr;
- __be16 arpop, arpop_mask;
- __be16 arhrd, arhrd_mask;
- __be16 arpro, arpro_mask;
+  struct arpt_devaddr_info tgt_devaddr;
+  __be16 arpop, arpop_mask;
+  __be16 arhrd, arhrd_mask;
+  __be16 arpro, arpro_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
- unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
- __u8 flags;
- __u16 invflags;
+  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+  __u8 flags;
+  __u16 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ARPT_F_MASK 0x00
@@ -77,55 +77,54 @@
 #define ARPT_INV_ARPHLN 0x0200
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_INV_MASK 0x03FF
-struct arpt_entry
-{
- struct arpt_arp arp;
+struct arpt_entry {
+  struct arpt_arp arp;
+  __u16 target_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 target_offset;
- __u16 next_offset;
- unsigned int comefrom;
- struct xt_counters counters;
+  __u16 next_offset;
+  unsigned int comefrom;
+  struct xt_counters counters;
+  unsigned char elems[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char elems[0];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_SO_SET_ADD_COUNTERS (ARPT_BASE_CTL + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_SO_SET_MAX ARPT_SO_SET_ADD_COUNTERS
 #define ARPT_SO_GET_INFO (ARPT_BASE_CTL)
 #define ARPT_SO_GET_ENTRIES (ARPT_BASE_CTL + 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET)
 struct arpt_getinfo {
- char name[XT_TABLE_MAXNAMELEN];
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int valid_hooks;
- unsigned int hook_entry[NF_ARP_NUMHOOKS];
- unsigned int underflow[NF_ARP_NUMHOOKS];
- unsigned int num_entries;
+  unsigned int hook_entry[NF_ARP_NUMHOOKS];
+  unsigned int underflow[NF_ARP_NUMHOOKS];
+  unsigned int num_entries;
+  unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int size;
 };
 struct arpt_replace {
- char name[XT_TABLE_MAXNAMELEN];
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int valid_hooks;
- unsigned int num_entries;
- unsigned int size;
- unsigned int hook_entry[NF_ARP_NUMHOOKS];
+  unsigned int num_entries;
+  unsigned int size;
+  unsigned int hook_entry[NF_ARP_NUMHOOKS];
+  unsigned int underflow[NF_ARP_NUMHOOKS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int underflow[NF_ARP_NUMHOOKS];
- unsigned int num_counters;
- struct xt_counters __user *counters;
- struct arpt_entry entries[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int num_counters;
+  struct xt_counters __user * counters;
+  struct arpt_entry entries[0];
 };
-struct arpt_get_entries {
- char name[XT_TABLE_MAXNAMELEN];
- unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct arpt_entry entrytable[0];
+struct arpt_get_entries {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int size;
+  struct arpt_entry entrytable[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_arp/arpt_mangle.h b/libc/kernel/uapi/linux/netfilter_arp/arpt_mangle.h
index 5b1fd30..92eec2d 100644
--- a/libc/kernel/uapi/linux/netfilter_arp/arpt_mangle.h
+++ b/libc/kernel/uapi/linux/netfilter_arp/arpt_mangle.h
@@ -21,26 +21,25 @@
 #include <linux/netfilter_arp/arp_tables.h>
 #define ARPT_MANGLE_ADDR_LEN_MAX sizeof(struct in_addr)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct arpt_mangle
-{
- char src_devaddr[ARPT_DEV_ADDR_LEN_MAX];
- char tgt_devaddr[ARPT_DEV_ADDR_LEN_MAX];
+struct arpt_mangle {
+  char src_devaddr[ARPT_DEV_ADDR_LEN_MAX];
+  char tgt_devaddr[ARPT_DEV_ADDR_LEN_MAX];
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct in_addr src_ip;
- } u_s;
- union {
+    struct in_addr src_ip;
+  } u_s;
+  union {
+    struct in_addr tgt_ip;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr tgt_ip;
- } u_t;
- u_int8_t flags;
- int target;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } u_t;
+  __u8 flags;
+  int target;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_MANGLE_SDEV 0x01
 #define ARPT_MANGLE_TDEV 0x02
 #define ARPT_MANGLE_SIP 0x04
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_MANGLE_TIP 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_MANGLE_MASK 0x0f
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_802_3.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_802_3.h
index 09ae7e0..c65cc53 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_802_3.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_802_3.h
@@ -29,40 +29,40 @@
 #define IS_UI 0x03
 #define EBT_802_3_MASK (EBT_802_3_SAP | EBT_802_3_TYPE | EBT_802_3)
 struct hdr_ui {
- __u8 dsap;
+  __u8 dsap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ssap;
- __u8 ctrl;
- __u8 orig[3];
- __be16 type;
+  __u8 ssap;
+  __u8 ctrl;
+  __u8 orig[3];
+  __be16 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct hdr_ni {
- __u8 dsap;
- __u8 ssap;
+  __u8 dsap;
+  __u8 ssap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 ctrl;
- __u8 orig[3];
- __be16 type;
+  __be16 ctrl;
+  __u8 orig[3];
+  __be16 type;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ebt_802_3_hdr {
- __u8 daddr[ETH_ALEN];
- __u8 saddr[ETH_ALEN];
- __be16 len;
+  __u8 daddr[ETH_ALEN];
+  __u8 saddr[ETH_ALEN];
+  __be16 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct hdr_ui ui;
- struct hdr_ni ni;
- } llc;
+  union {
+    struct hdr_ui ui;
+    struct hdr_ni ni;
+  } llc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ebt_802_3_info {
- __u8 sap;
- __be16 type;
+  __u8 sap;
+  __be16 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bitmask;
- __u8 invflags;
+  __u8 bitmask;
+  __u8 invflags;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index aee09f7..6426c1b 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -23,28 +23,28 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_AMONG_SRC 0x02
 struct ebt_mac_wormhash_tuple {
- __u32 cmp[2];
- __be32 ip;
+  __u32 cmp[2];
+  __be32 ip;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ebt_mac_wormhash {
- int table[257];
- int poolsize;
+  int table[257];
+  int poolsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[0];
 };
-#define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash)   + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
+#define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int wh_dst_ofs;
- int wh_src_ofs;
- int bitmask;
+  int wh_dst_ofs;
+  int wh_src_ofs;
+  int bitmask;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_AMONG_DST_NEG 0x1
 #define EBT_AMONG_SRC_NEG 0x2
-#define ebt_among_wh_dst(x) ((x)->wh_dst_ofs ?   (struct ebt_mac_wormhash*)((char*)(x) + (x)->wh_dst_ofs) : NULL)
-#define ebt_among_wh_src(x) ((x)->wh_src_ofs ?   (struct ebt_mac_wormhash*)((char*)(x) + (x)->wh_src_ofs) : NULL)
+#define ebt_among_wh_dst(x) ((x)->wh_dst_ofs ? (struct ebt_mac_wormhash *) ((char *) (x) + (x)->wh_dst_ofs) : NULL)
+#define ebt_among_wh_src(x) ((x)->wh_src_ofs ? (struct ebt_mac_wormhash *) ((char *) (x) + (x)->wh_src_ofs) : NULL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_AMONG_MATCH "among"
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_arp.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_arp.h
index 791bd6e..fb676b6 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_arp.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_arp.h
@@ -29,27 +29,26 @@
 #define EBT_ARP_SRC_MAC 0x20
 #define EBT_ARP_DST_MAC 0x40
 #define EBT_ARP_GRAT 0x80
-#define EBT_ARP_MASK (EBT_ARP_OPCODE | EBT_ARP_HTYPE | EBT_ARP_PTYPE |   EBT_ARP_SRC_IP | EBT_ARP_DST_IP | EBT_ARP_SRC_MAC | EBT_ARP_DST_MAC |   EBT_ARP_GRAT)
+#define EBT_ARP_MASK (EBT_ARP_OPCODE | EBT_ARP_HTYPE | EBT_ARP_PTYPE | EBT_ARP_SRC_IP | EBT_ARP_DST_IP | EBT_ARP_SRC_MAC | EBT_ARP_DST_MAC | EBT_ARP_GRAT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_ARP_MATCH "arp"
-struct ebt_arp_info
-{
- __be16 htype;
+struct ebt_arp_info {
+  __be16 htype;
+  __be16 ptype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 ptype;
- __be16 opcode;
- __be32 saddr;
- __be32 smsk;
+  __be16 opcode;
+  __be32 saddr;
+  __be32 smsk;
+  __be32 daddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 daddr;
- __be32 dmsk;
- unsigned char smaddr[ETH_ALEN];
- unsigned char smmsk[ETH_ALEN];
+  __be32 dmsk;
+  unsigned char smaddr[ETH_ALEN];
+  unsigned char smmsk[ETH_ALEN];
+  unsigned char dmaddr[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char dmaddr[ETH_ALEN];
- unsigned char dmmsk[ETH_ALEN];
- __u8 bitmask;
- __u8 invflags;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char dmmsk[ETH_ALEN];
+  __u8 bitmask;
+  __u8 invflags;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_arpreply.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_arpreply.h
index e056d46..e0cd503 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_arpreply.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_arpreply.h
@@ -19,9 +19,9 @@
 #ifndef __LINUX_BRIDGE_EBT_ARPREPLY_H
 #define __LINUX_BRIDGE_EBT_ARPREPLY_H
 struct ebt_arpreply_info {
- unsigned char mac[ETH_ALEN];
+  unsigned char mac[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int target;
+  int target;
 };
 #define EBT_ARPREPLY_TARGET "arpreply"
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h
index ce9eaa7..ef45c68 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h
@@ -27,22 +27,22 @@
 #define EBT_IP_SPORT 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_IP_DPORT 0x20
-#define EBT_IP_MASK (EBT_IP_SOURCE | EBT_IP_DEST | EBT_IP_TOS | EBT_IP_PROTO |  EBT_IP_SPORT | EBT_IP_DPORT )
+#define EBT_IP_MASK (EBT_IP_SOURCE | EBT_IP_DEST | EBT_IP_TOS | EBT_IP_PROTO | EBT_IP_SPORT | EBT_IP_DPORT)
 #define EBT_IP_MATCH "ip"
 struct ebt_ip_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 saddr;
- __be32 daddr;
- __be32 smsk;
- __be32 dmsk;
+  __be32 saddr;
+  __be32 daddr;
+  __be32 smsk;
+  __be32 dmsk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tos;
- __u8 protocol;
- __u8 bitmask;
- __u8 invflags;
+  __u8 tos;
+  __u8 protocol;
+  __u8 bitmask;
+  __u8 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sport[2];
- __u16 dport[2];
+  __u16 sport[2];
+  __u16 dport[2];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip6.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip6.h
index 552b0d7..ac06046 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip6.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip6.h
@@ -28,29 +28,29 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_IP6_DPORT 0x20
 #define EBT_IP6_ICMP6 0x40
-#define EBT_IP6_MASK (EBT_IP6_SOURCE | EBT_IP6_DEST | EBT_IP6_TCLASS |  EBT_IP6_PROTO | EBT_IP6_SPORT | EBT_IP6_DPORT |   EBT_IP6_ICMP6)
+#define EBT_IP6_MASK (EBT_IP6_SOURCE | EBT_IP6_DEST | EBT_IP6_TCLASS | EBT_IP6_PROTO | EBT_IP6_SPORT | EBT_IP6_DPORT | EBT_IP6_ICMP6)
 #define EBT_IP6_MATCH "ip6"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ebt_ip6_info {
- struct in6_addr saddr;
- struct in6_addr daddr;
- struct in6_addr smsk;
+  struct in6_addr saddr;
+  struct in6_addr daddr;
+  struct in6_addr smsk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in6_addr dmsk;
- __u8 tclass;
- __u8 protocol;
- __u8 bitmask;
+  struct in6_addr dmsk;
+  __u8 tclass;
+  __u8 protocol;
+  __u8 bitmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invflags;
- union {
- __u16 sport[2];
- __u8 icmpv6_type[2];
+  __u8 invflags;
+  union {
+    __u16 sport[2];
+    __u8 icmpv6_type[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- union {
- __u16 dport[2];
- __u8 icmpv6_code[2];
+  };
+  union {
+    __u16 dport[2];
+    __u8 icmpv6_code[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+  };
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_limit.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_limit.h
index 303c2bb..3756470 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_limit.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_limit.h
@@ -23,12 +23,12 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_LIMIT_SCALE 10000
 struct ebt_limit_info {
- __u32 avg;
- __u32 burst;
+  __u32 avg;
+  __u32 burst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long prev;
- __u32 credit;
- __u32 credit_cap, cost;
+  unsigned long prev;
+  __u32 credit;
+  __u32 credit_cap, cost;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_log.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_log.h
index 72a105d..b276c5a 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_log.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_log.h
@@ -29,10 +29,10 @@
 #define EBT_LOG_PREFIX_SIZE 30
 #define EBT_LOG_WATCHER "log"
 struct ebt_log_info {
- __u8 loglevel;
+  __u8 loglevel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 prefix[EBT_LOG_PREFIX_SIZE];
- __u32 bitmask;
+  __u8 prefix[EBT_LOG_PREFIX_SIZE];
+  __u32 bitmask;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_m.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_m.h
index 5c32522..497b019 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_m.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_m.h
@@ -24,10 +24,10 @@
 #define EBT_MARK_OR 0x02
 #define EBT_MARK_MASK (EBT_MARK_AND | EBT_MARK_OR)
 struct ebt_mark_m_info {
- unsigned long mark, mask;
+  unsigned long mark, mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invert;
- __u8 bitmask;
+  __u8 invert;
+  __u8 bitmask;
 };
 #define EBT_MARK_MATCH "mark_m"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_t.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_t.h
index efc5786..dbfdfb3 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_t.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_mark_t.h
@@ -24,9 +24,9 @@
 #define MARK_AND_VALUE (0xffffffd0)
 #define MARK_XOR_VALUE (0xffffffc0)
 struct ebt_mark_t_info {
- unsigned long mark;
+  unsigned long mark;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int target;
+  int target;
 };
 #define EBT_MARK_TARGET "mark"
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_nat.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_nat.h
index 257cdb1..eb341c2 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_nat.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_nat.h
@@ -21,8 +21,8 @@
 #define NAT_ARP_BIT (0x00000010)
 struct ebt_nat_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char mac[ETH_ALEN];
- int target;
+  unsigned char mac[ETH_ALEN];
+  int target;
 };
 #define EBT_SNAT_TARGET "snat"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_nflog.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_nflog.h
index 9be688a..8a9e98e 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_nflog.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_nflog.h
@@ -27,13 +27,13 @@
 #define EBT_NFLOG_DEFAULT_THRESHOLD 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ebt_nflog_info {
- __u32 len;
- __u16 group;
- __u16 threshold;
+  __u32 len;
+  __u16 group;
+  __u16 threshold;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flags;
- __u16 pad;
- char prefix[EBT_NFLOG_PREFIX_SIZE];
+  __u16 flags;
+  __u16 pad;
+  char prefix[EBT_NFLOG_PREFIX_SIZE];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_pkttype.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_pkttype.h
index bbcfd0c..2e6535a 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_pkttype.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_pkttype.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct ebt_pkttype_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pkt_type;
- __u8 invert;
+  __u8 pkt_type;
+  __u8 invert;
 };
 #define EBT_PKTTYPE_MATCH "pkttype"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_redirect.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_redirect.h
index a86ba2c..a9a732c 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_redirect.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_redirect.h
@@ -19,7 +19,7 @@
 #ifndef __LINUX_BRIDGE_EBT_REDIRECT_H
 #define __LINUX_BRIDGE_EBT_REDIRECT_H
 struct ebt_redirect_info {
- int target;
+  int target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define EBT_REDIRECT_TARGET "redirect"
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_stp.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_stp.h
index 478bb49..4e42060 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_stp.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_stp.h
@@ -39,27 +39,27 @@
 #define EBT_STP_CONFIG_MASK 0x0ffe
 #define EBT_STP_MATCH "stp"
 struct ebt_stp_config_info {
- __u8 flags;
+  __u8 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 root_priol, root_priou;
- char root_addr[6], root_addrmsk[6];
- __u32 root_costl, root_costu;
- __u16 sender_priol, sender_priou;
+  __u16 root_priol, root_priou;
+  char root_addr[6], root_addrmsk[6];
+  __u32 root_costl, root_costu;
+  __u16 sender_priol, sender_priou;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char sender_addr[6], sender_addrmsk[6];
- __u16 portl, portu;
- __u16 msg_agel, msg_ageu;
- __u16 max_agel, max_ageu;
+  char sender_addr[6], sender_addrmsk[6];
+  __u16 portl, portu;
+  __u16 msg_agel, msg_ageu;
+  __u16 max_agel, max_ageu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 hello_timel, hello_timeu;
- __u16 forward_delayl, forward_delayu;
+  __u16 hello_timel, hello_timeu;
+  __u16 forward_delayl, forward_delayu;
 };
 struct ebt_stp_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- struct ebt_stp_config_info config;
- __u16 bitmask;
- __u16 invflags;
+  __u8 type;
+  struct ebt_stp_config_info config;
+  __u16 bitmask;
+  __u16 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ulog.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ulog.h
index 37ee72d..029d6b1 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ulog.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ulog.h
@@ -29,28 +29,27 @@
 #define EBT_ULOG_WATCHER "ulog"
 #define EBT_ULOG_VERSION 1
 struct ebt_ulog_info {
- __u32 nlgroup;
+  __u32 nlgroup;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cprange;
- unsigned int qthreshold;
- char prefix[EBT_ULOG_PREFIX_LEN];
+  unsigned int cprange;
+  unsigned int qthreshold;
+  char prefix[EBT_ULOG_PREFIX_LEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ebt_ulog_packet_msg {
- int version;
- char indev[IFNAMSIZ];
- char outdev[IFNAMSIZ];
+  int version;
+  char indev[IFNAMSIZ];
+  char outdev[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char physindev[IFNAMSIZ];
- char physoutdev[IFNAMSIZ];
- char prefix[EBT_ULOG_PREFIX_LEN];
- struct timeval stamp;
+  char physindev[IFNAMSIZ];
+  char physoutdev[IFNAMSIZ];
+  char prefix[EBT_ULOG_PREFIX_LEN];
+  struct timeval stamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long mark;
- unsigned int hook;
- size_t data_len;
- unsigned char data[0] __attribute__
+  unsigned long mark;
+  unsigned int hook;
+  size_t data_len;
+  unsigned char data[0] __attribute__((aligned(__alignof__(struct ebt_ulog_info))));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ((aligned (__alignof__(struct ebt_ulog_info))));
 } ebt_ulog_packet_msg_t;
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_vlan.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_vlan.h
index a50d833..9c6a436 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_vlan.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_vlan.h
@@ -27,12 +27,12 @@
 #define EBT_VLAN_MATCH "vlan"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ebt_vlan_info {
- __u16 id;
- __u8 prio;
- __be16 encap;
+  __u16 id;
+  __u8 prio;
+  __be16 encap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bitmask;
- __u8 invflags;
+  __u8 bitmask;
+  __u8 invflags;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h b/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h
index 27f765a..6b201a3 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h
@@ -26,10 +26,10 @@
 #define EBT_CHAIN_MAXNAMELEN EBT_TABLE_MAXNAMELEN
 #define EBT_FUNCTION_MAXNAMELEN EBT_TABLE_MAXNAMELEN
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define EBT_ACCEPT -1
-#define EBT_DROP -2
-#define EBT_CONTINUE -3
-#define EBT_RETURN -4
+#define EBT_ACCEPT - 1
+#define EBT_DROP - 2
+#define EBT_CONTINUE - 3
+#define EBT_RETURN - 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NUM_STANDARD_TARGETS 4
 #define EBT_VERDICT_BITS 0x0000000F
@@ -37,43 +37,43 @@
 struct xt_target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ebt_counter {
- uint64_t pcnt;
- uint64_t bcnt;
+  uint64_t pcnt;
+  uint64_t bcnt;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ebt_replace {
- char name[EBT_TABLE_MAXNAMELEN];
- unsigned int valid_hooks;
- unsigned int nentries;
+  char name[EBT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int nentries;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int entries_size;
- struct ebt_entries __user *hook_entry[NF_BR_NUMHOOKS];
- unsigned int num_counters;
- struct ebt_counter __user *counters;
+  unsigned int entries_size;
+  struct ebt_entries __user * hook_entry[NF_BR_NUMHOOKS];
+  unsigned int num_counters;
+  struct ebt_counter __user * counters;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char __user *entries;
+  char __user * entries;
 };
 struct ebt_replace_kernel {
- char name[EBT_TABLE_MAXNAMELEN];
+  char name[EBT_TABLE_MAXNAMELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int valid_hooks;
- unsigned int nentries;
- unsigned int entries_size;
- struct ebt_entries *hook_entry[NF_BR_NUMHOOKS];
+  unsigned int valid_hooks;
+  unsigned int nentries;
+  unsigned int entries_size;
+  struct ebt_entries * hook_entry[NF_BR_NUMHOOKS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int num_counters;
- struct ebt_counter *counters;
- char *entries;
+  unsigned int num_counters;
+  struct ebt_counter * counters;
+  char * entries;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ebt_entries {
- unsigned int distinguisher;
- char name[EBT_CHAIN_MAXNAMELEN];
- unsigned int counter_offset;
+  unsigned int distinguisher;
+  char name[EBT_CHAIN_MAXNAMELEN];
+  unsigned int counter_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int policy;
- unsigned int nentries;
- char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+  int policy;
+  unsigned int nentries;
+  char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_ENTRY_OR_ENTRIES 0x01
@@ -82,7 +82,7 @@
 #define EBT_SOURCEMAC 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_DESTMAC 0x10
-#define EBT_F_MASK (EBT_NOPROTO | EBT_802_3 | EBT_SOURCEMAC | EBT_DESTMAC   | EBT_ENTRY_OR_ENTRIES)
+#define EBT_F_MASK (EBT_NOPROTO | EBT_802_3 | EBT_SOURCEMAC | EBT_DESTMAC | EBT_ENTRY_OR_ENTRIES)
 #define EBT_IPROTO 0x01
 #define EBT_IIN 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -92,78 +92,84 @@
 #define EBT_ILOGICALIN 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_ILOGICALOUT 0x40
-#define EBT_INV_MASK (EBT_IPROTO | EBT_IIN | EBT_IOUT | EBT_ILOGICALIN   | EBT_ILOGICALOUT | EBT_ISOURCE | EBT_IDEST)
+#define EBT_INV_MASK (EBT_IPROTO | EBT_IIN | EBT_IOUT | EBT_ILOGICALIN | EBT_ILOGICALOUT | EBT_ISOURCE | EBT_IDEST)
 struct ebt_entry_match {
- union {
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[EBT_FUNCTION_MAXNAMELEN];
- struct xt_match *match;
- } u;
- unsigned int match_size;
+    char name[EBT_FUNCTION_MAXNAMELEN];
+    struct xt_match * match;
+  } u;
+  unsigned int match_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+  unsigned char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
 };
 struct ebt_entry_watcher {
- union {
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[EBT_FUNCTION_MAXNAMELEN];
- struct xt_target *watcher;
- } u;
- unsigned int watcher_size;
+    char name[EBT_FUNCTION_MAXNAMELEN];
+    struct xt_target * watcher;
+  } u;
+  unsigned int watcher_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+  unsigned char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
 };
 struct ebt_entry_target {
- union {
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[EBT_FUNCTION_MAXNAMELEN];
- struct xt_target *target;
- } u;
- unsigned int target_size;
+    char name[EBT_FUNCTION_MAXNAMELEN];
+    struct xt_target * target;
+  } u;
+  unsigned int target_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+  unsigned char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
 };
 #define EBT_STANDARD_TARGET "standard"
 struct ebt_standard_target {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ebt_entry_target target;
- int verdict;
+  struct ebt_entry_target target;
+  int verdict;
 };
 struct ebt_entry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int bitmask;
- unsigned int invflags;
- __be16 ethproto;
- char in[IFNAMSIZ];
+  unsigned int bitmask;
+  unsigned int invflags;
+  __be16 ethproto;
+  char in[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char logical_in[IFNAMSIZ];
- char out[IFNAMSIZ];
- char logical_out[IFNAMSIZ];
- unsigned char sourcemac[ETH_ALEN];
+  char logical_in[IFNAMSIZ];
+  char out[IFNAMSIZ];
+  char logical_out[IFNAMSIZ];
+  unsigned char sourcemac[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char sourcemsk[ETH_ALEN];
- unsigned char destmac[ETH_ALEN];
- unsigned char destmsk[ETH_ALEN];
- unsigned int watchers_offset;
+  unsigned char sourcemsk[ETH_ALEN];
+  unsigned char destmac[ETH_ALEN];
+  unsigned char destmsk[ETH_ALEN];
+  unsigned int watchers_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int target_offset;
- unsigned int next_offset;
- unsigned char elems[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+  unsigned int target_offset;
+  unsigned int next_offset;
+  unsigned char elems[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_BASE_CTL 128
 #define EBT_SO_SET_ENTRIES (EBT_BASE_CTL)
-#define EBT_SO_SET_COUNTERS (EBT_SO_SET_ENTRIES+1)
-#define EBT_SO_SET_MAX (EBT_SO_SET_COUNTERS+1)
+#define EBT_SO_SET_COUNTERS (EBT_SO_SET_ENTRIES + 1)
+#define EBT_SO_SET_MAX (EBT_SO_SET_COUNTERS + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBT_SO_GET_INFO (EBT_BASE_CTL)
-#define EBT_SO_GET_ENTRIES (EBT_SO_GET_INFO+1)
-#define EBT_SO_GET_INIT_INFO (EBT_SO_GET_ENTRIES+1)
-#define EBT_SO_GET_INIT_ENTRIES (EBT_SO_GET_INIT_INFO+1)
+#define EBT_SO_GET_ENTRIES (EBT_SO_GET_INFO + 1)
+#define EBT_SO_GET_INIT_INFO (EBT_SO_GET_ENTRIES + 1)
+#define EBT_SO_GET_INIT_ENTRIES (EBT_SO_GET_INIT_INFO + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define EBT_SO_GET_MAX (EBT_SO_GET_INIT_ENTRIES+1)
-#define EBT_MATCH_ITERATE(e, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ebt_entry_match *__match;     for (__i = sizeof(struct ebt_entry);   __i < (e)->watchers_offset;   __i += __match->match_size +   sizeof(struct ebt_entry_match)) {   __match = (void *)(e) + __i;     __ret = fn(__match , ## args);   if (__ret != 0)   break;   }   if (__ret == 0) {   if (__i != (e)->watchers_offset)   __ret = -EINVAL;   }   __ret;  })
-#define EBT_WATCHER_ITERATE(e, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ebt_entry_watcher *__watcher;     for (__i = e->watchers_offset;   __i < (e)->target_offset;   __i += __watcher->watcher_size +   sizeof(struct ebt_entry_watcher)) {   __watcher = (void *)(e) + __i;     __ret = fn(__watcher , ## args);   if (__ret != 0)   break;   }   if (__ret == 0) {   if (__i != (e)->target_offset)   __ret = -EINVAL;   }   __ret;  })
-#define EBT_ENTRY_ITERATE(entries, size, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ebt_entry *__entry;     for (__i = 0; __i < (size);) {   __entry = (void *)(entries) + __i;   __ret = fn(__entry , ## args);   if (__ret != 0)   break;   if (__entry->bitmask != 0)   __i += __entry->next_offset;   else   __i += sizeof(struct ebt_entries);   }   if (__ret == 0) {   if (__i != (size))   __ret = -EINVAL;   }   __ret;  })
+#define EBT_SO_GET_MAX (EBT_SO_GET_INIT_ENTRIES + 1)
+#define EBT_MATCH_ITERATE(e,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct ebt_entry_match * __match; for(__i = sizeof(struct ebt_entry); __i < (e)->watchers_offset; __i += __match->match_size + sizeof(struct ebt_entry_match)) { __match = (void *) (e) + __i; __ret = fn(__match, ##args); if(__ret != 0) break; } if(__ret == 0) { if(__i != (e)->watchers_offset) __ret = - EINVAL; } __ret; \
+})
+#define EBT_WATCHER_ITERATE(e,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct ebt_entry_watcher * __watcher; for(__i = e->watchers_offset; __i < (e)->target_offset; __i += __watcher->watcher_size + sizeof(struct ebt_entry_watcher)) { __watcher = (void *) (e) + __i; __ret = fn(__watcher, ##args); if(__ret != 0) break; } if(__ret == 0) { if(__i != (e)->target_offset) __ret = - EINVAL; } __ret; \
+})
+#define EBT_ENTRY_ITERATE(entries,size,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct ebt_entry * __entry; for(__i = 0; __i < (size);) { __entry = (void *) (entries) + __i; __ret = fn(__entry, ##args); if(__ret != 0) break; if(__entry->bitmask != 0) __i += __entry->next_offset; else __i += sizeof(struct ebt_entries); } if(__ret == 0) { if(__i != (size)) __ret = - EINVAL; } __ret; \
+})
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_decnet.h b/libc/kernel/uapi/linux/netfilter_decnet.h
index 9552dd5..d5f2fd7 100644
--- a/libc/kernel/uapi/linux/netfilter_decnet.h
+++ b/libc/kernel/uapi/linux/netfilter_decnet.h
@@ -37,34 +37,34 @@
 #define NF_DN_NUMHOOKS 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nf_dn_hook_priorities {
- NF_DN_PRI_FIRST = INT_MIN,
- NF_DN_PRI_CONNTRACK = -200,
- NF_DN_PRI_MANGLE = -150,
+  NF_DN_PRI_FIRST = INT_MIN,
+  NF_DN_PRI_CONNTRACK = - 200,
+  NF_DN_PRI_MANGLE = - 150,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_DN_PRI_NAT_DST = -100,
- NF_DN_PRI_FILTER = 0,
- NF_DN_PRI_NAT_SRC = 100,
- NF_DN_PRI_DNRTMSG = 200,
+  NF_DN_PRI_NAT_DST = - 100,
+  NF_DN_PRI_FILTER = 0,
+  NF_DN_PRI_NAT_SRC = 100,
+  NF_DN_PRI_DNRTMSG = 200,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_DN_PRI_LAST = INT_MAX,
+  NF_DN_PRI_LAST = INT_MAX,
 };
 struct nf_dn_rtmsg {
- int nfdn_ifindex;
+  int nfdn_ifindex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define NFDN_RTMSG(r) ((unsigned char *)(r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
+#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
 #define DNRMG_L1_GROUP 0x01
 #define DNRMG_L2_GROUP 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- DNRNG_NLGRP_NONE,
+  DNRNG_NLGRP_NONE,
 #define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
- DNRNG_NLGRP_L1,
+  DNRNG_NLGRP_L1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
- DNRNG_NLGRP_L2,
+  DNRNG_NLGRP_L2,
 #define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
- __DNRNG_NLGRP_MAX
+  __DNRNG_NLGRP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4.h b/libc/kernel/uapi/linux/netfilter_ipv4.h
index aa1d73d..282a54c 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4.h
@@ -44,24 +44,24 @@
 #define NF_IP_POST_ROUTING 4
 #define NF_IP_NUMHOOKS 5
 enum nf_ip_hook_priorities {
- NF_IP_PRI_FIRST = INT_MIN,
+  NF_IP_PRI_FIRST = INT_MIN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_IP_PRI_CONNTRACK_DEFRAG = -400,
- NF_IP_PRI_RAW = -300,
- NF_IP_PRI_SELINUX_FIRST = -225,
- NF_IP_PRI_CONNTRACK = -200,
+  NF_IP_PRI_CONNTRACK_DEFRAG = - 400,
+  NF_IP_PRI_RAW = - 300,
+  NF_IP_PRI_SELINUX_FIRST = - 225,
+  NF_IP_PRI_CONNTRACK = - 200,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_IP_PRI_MANGLE = -150,
- NF_IP_PRI_NAT_DST = -100,
- NF_IP_PRI_FILTER = 0,
- NF_IP_PRI_SECURITY = 50,
+  NF_IP_PRI_MANGLE = - 150,
+  NF_IP_PRI_NAT_DST = - 100,
+  NF_IP_PRI_FILTER = 0,
+  NF_IP_PRI_SECURITY = 50,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_IP_PRI_NAT_SRC = 100,
- NF_IP_PRI_SELINUX_LAST = 225,
- NF_IP_PRI_CONNTRACK_HELPER = 300,
- NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
+  NF_IP_PRI_NAT_SRC = 100,
+  NF_IP_PRI_SELINUX_LAST = 225,
+  NF_IP_PRI_CONNTRACK_HELPER = 300,
+  NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_IP_PRI_LAST = INT_MAX,
+  NF_IP_PRI_LAST = INT_MAX,
 };
 #define SO_ORIGINAL_DST 80
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 132b0ad..04896c6 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -57,18 +57,18 @@
 #define IPT_STANDARD_TARGET XT_STANDARD_TARGET
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_ERROR_TARGET XT_ERROR_TARGET
-#define IPT_MATCH_ITERATE(e, fn, args...)   XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args)
-#define IPT_ENTRY_ITERATE(entries, size, fn, args...)   XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args)
+#define IPT_MATCH_ITERATE(e,fn,args...) XT_MATCH_ITERATE(struct ipt_entry, e, fn, ##args)
+#define IPT_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ##args)
 struct ipt_ip {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in_addr src, dst;
- struct in_addr smsk, dmsk;
- char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
- unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+  struct in_addr src, dst;
+  struct in_addr smsk, dmsk;
+  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 proto;
- __u8 flags;
- __u8 invflags;
+  __u16 proto;
+  __u8 flags;
+  __u8 invflags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_F_FRAG 0x01
@@ -86,14 +86,14 @@
 #define IPT_INV_MASK 0x7F
 struct ipt_entry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ipt_ip ip;
- unsigned int nfcache;
- __u16 target_offset;
- __u16 next_offset;
+  struct ipt_ip ip;
+  unsigned int nfcache;
+  __u16 target_offset;
+  __u16 next_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int comefrom;
- struct xt_counters counters;
- unsigned char elems[0];
+  unsigned int comefrom;
+  struct xt_counters counters;
+  unsigned char elems[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_BASE_CTL 64
@@ -108,47 +108,44 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET
 struct ipt_icmp {
- __u8 type;
- __u8 code[2];
+  __u8 type;
+  __u8 code[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 invflags;
+  __u8 invflags;
 };
 #define IPT_ICMP_INV 0x01
 struct ipt_getinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[XT_TABLE_MAXNAMELEN];
- unsigned int valid_hooks;
- unsigned int hook_entry[NF_INET_NUMHOOKS];
- unsigned int underflow[NF_INET_NUMHOOKS];
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int num_entries;
- unsigned int size;
+  unsigned int num_entries;
+  unsigned int size;
 };
 struct ipt_replace {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[XT_TABLE_MAXNAMELEN];
- unsigned int valid_hooks;
- unsigned int num_entries;
- unsigned int size;
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int num_entries;
+  unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int hook_entry[NF_INET_NUMHOOKS];
- unsigned int underflow[NF_INET_NUMHOOKS];
- unsigned int num_counters;
- struct xt_counters __user *counters;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
+  unsigned int num_counters;
+  struct xt_counters __user * counters;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ipt_entry entries[0];
+  struct ipt_entry entries[0];
 };
 struct ipt_get_entries {
- char name[XT_TABLE_MAXNAMELEN];
+  char name[XT_TABLE_MAXNAMELEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int size;
- struct ipt_entry entrytable[0];
+  unsigned int size;
+  struct ipt_entry entrytable[0];
 };
-static __inline__ struct xt_entry_target *
+static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-ipt_get_target(struct ipt_entry *e)
-{
- return (void *)e + e->target_offset;
+  return(void *) e + e->target_offset;
 }
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h
index 9464545..61f72a8 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h
@@ -22,9 +22,9 @@
 #include <linux/if_ether.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum clusterip_hashmode {
- CLUSTERIP_HASHMODE_SIP = 0,
- CLUSTERIP_HASHMODE_SIP_SPT,
- CLUSTERIP_HASHMODE_SIP_SPT_DPT,
+  CLUSTERIP_HASHMODE_SIP = 0,
+  CLUSTERIP_HASHMODE_SIP_SPT,
+  CLUSTERIP_HASHMODE_SIP_SPT_DPT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CLUSTERIP_HASHMODE_MAX CLUSTERIP_HASHMODE_SIP_SPT_DPT
@@ -33,16 +33,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct clusterip_config;
 struct ipt_clusterip_tgt_info {
- __u32 flags;
- __u8 clustermac[ETH_ALEN];
+  __u32 flags;
+  __u8 clustermac[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 num_total_nodes;
- __u16 num_local_nodes;
- __u16 local_nodes[CLUSTERIP_MAX_NODES];
- __u32 hash_mode;
+  __u16 num_total_nodes;
+  __u16 num_local_nodes;
+  __u16 local_nodes[CLUSTERIP_MAX_NODES];
+  __u32 hash_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 hash_initval;
- struct clusterip_config *config;
+  __u32 hash_initval;
+  struct clusterip_config * config;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ECN.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ECN.h
index deff732..95dfd92 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ECN.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ECN.h
@@ -28,14 +28,14 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_ECN_OP_MASK 0xce
 struct ipt_ECN_info {
- __u8 operation;
- __u8 ip_ect;
+  __u8 operation;
+  __u8 ip_ect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- __u8 ece:1, cwr:1;
- } tcp;
+  union {
+    struct {
+      __u8 ece : 1, cwr : 1;
+    } tcp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } proto;
+  } proto;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_LOG.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_LOG.h
index 0e016bb..ed021ea 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_LOG.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_LOG.h
@@ -29,10 +29,10 @@
 #define IPT_LOG_MACDECODE 0x20
 #define IPT_LOG_MASK 0x2f
 struct ipt_log_info {
- unsigned char level;
+  unsigned char level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char logflags;
- char prefix[30];
+  unsigned char logflags;
+  char prefix[30];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_REJECT.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_REJECT.h
index d133b71..8e15647 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_REJECT.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_REJECT.h
@@ -19,21 +19,21 @@
 #ifndef _IPT_REJECT_H
 #define _IPT_REJECT_H
 enum ipt_reject_with {
- IPT_ICMP_NET_UNREACHABLE,
+  IPT_ICMP_NET_UNREACHABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPT_ICMP_HOST_UNREACHABLE,
- IPT_ICMP_PROT_UNREACHABLE,
- IPT_ICMP_PORT_UNREACHABLE,
- IPT_ICMP_ECHOREPLY,
+  IPT_ICMP_HOST_UNREACHABLE,
+  IPT_ICMP_PROT_UNREACHABLE,
+  IPT_ICMP_PORT_UNREACHABLE,
+  IPT_ICMP_ECHOREPLY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPT_ICMP_NET_PROHIBITED,
- IPT_ICMP_HOST_PROHIBITED,
- IPT_TCP_RESET,
- IPT_ICMP_ADMIN_PROHIBITED
+  IPT_ICMP_NET_PROHIBITED,
+  IPT_ICMP_HOST_PROHIBITED,
+  IPT_TCP_RESET,
+  IPT_ICMP_ADMIN_PROHIBITED
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ipt_reject_info {
- enum ipt_reject_with with;
+  enum ipt_reject_with with;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_TTL.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_TTL.h
index ca2768b..952c90b 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_TTL.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_TTL.h
@@ -21,15 +21,15 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPT_TTL_SET = 0,
- IPT_TTL_INC,
- IPT_TTL_DEC
+  IPT_TTL_SET = 0,
+  IPT_TTL_INC,
+  IPT_TTL_DEC
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_TTL_MAXMODE IPT_TTL_DEC
 struct ipt_TTL_info {
- __u8 mode;
- __u8 ttl;
+  __u8 mode;
+  __u8 ttl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ULOG.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ULOG.h
index 8e8f572..ee6a557 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ULOG.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ULOG.h
@@ -29,27 +29,27 @@
 #define ULOG_PREFIX_LEN 32
 #define ULOG_MAX_QLEN 50
 struct ipt_ulog_info {
- unsigned int nl_group;
+  unsigned int nl_group;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t copy_range;
- size_t qthreshold;
- char prefix[ULOG_PREFIX_LEN];
+  size_t copy_range;
+  size_t qthreshold;
+  char prefix[ULOG_PREFIX_LEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ulog_packet_msg {
- unsigned long mark;
- long timestamp_sec;
- long timestamp_usec;
+  unsigned long mark;
+  long timestamp_sec;
+  long timestamp_usec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int hook;
- char indev_name[IFNAMSIZ];
- char outdev_name[IFNAMSIZ];
- size_t data_len;
+  unsigned int hook;
+  char indev_name[IFNAMSIZ];
+  char outdev_name[IFNAMSIZ];
+  size_t data_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char prefix[ULOG_PREFIX_LEN];
- unsigned char mac_len;
- unsigned char mac[ULOG_MAC_LEN];
- unsigned char payload[0];
+  char prefix[ULOG_PREFIX_LEN];
+  unsigned char mac_len;
+  unsigned char mac[ULOG_MAC_LEN];
+  unsigned char payload[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ulog_packet_msg_t;
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ah.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ah.h
index 0485c6d..b8b8b37 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ah.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ah.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct ipt_ah {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spis[2];
- __u8 invflags;
+  __u32 spis[2];
+  __u8 invflags;
 };
 #define IPT_AH_INV_SPI 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ecn.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ecn.h
index 85bdd01..20e757e 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ecn.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ecn.h
@@ -22,12 +22,12 @@
 #define ipt_ecn_info xt_ecn_info
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IPT_ECN_IP_MASK = XT_ECN_IP_MASK,
- IPT_ECN_OP_MATCH_IP = XT_ECN_OP_MATCH_IP,
- IPT_ECN_OP_MATCH_ECE = XT_ECN_OP_MATCH_ECE,
+  IPT_ECN_IP_MASK = XT_ECN_IP_MASK,
+  IPT_ECN_OP_MATCH_IP = XT_ECN_OP_MATCH_IP,
+  IPT_ECN_OP_MATCH_ECE = XT_ECN_OP_MATCH_ECE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPT_ECN_OP_MATCH_CWR = XT_ECN_OP_MATCH_CWR,
- IPT_ECN_OP_MATCH_MASK = XT_ECN_OP_MATCH_MASK,
+  IPT_ECN_OP_MATCH_CWR = XT_ECN_OP_MATCH_CWR,
+  IPT_ECN_OP_MATCH_MASK = XT_ECN_OP_MATCH_MASK,
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ttl.h b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ttl.h
index c567d53..15195bc 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ttl.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ipt_ttl.h
@@ -21,15 +21,15 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPT_TTL_EQ = 0,
- IPT_TTL_NE,
- IPT_TTL_LT,
- IPT_TTL_GT,
+  IPT_TTL_EQ = 0,
+  IPT_TTL_NE,
+  IPT_TTL_LT,
+  IPT_TTL_GT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ipt_ttl_info {
- __u8 mode;
- __u8 ttl;
+  __u8 mode;
+  __u8 ttl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6.h b/libc/kernel/uapi/linux/netfilter_ipv6.h
index 351536f..2e23aa1 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6.h
@@ -44,22 +44,22 @@
 #define NF_IP6_POST_ROUTING 4
 #define NF_IP6_NUMHOOKS 5
 enum nf_ip6_hook_priorities {
- NF_IP6_PRI_FIRST = INT_MIN,
+  NF_IP6_PRI_FIRST = INT_MIN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
- NF_IP6_PRI_RAW = -300,
- NF_IP6_PRI_SELINUX_FIRST = -225,
- NF_IP6_PRI_CONNTRACK = -200,
+  NF_IP6_PRI_CONNTRACK_DEFRAG = - 400,
+  NF_IP6_PRI_RAW = - 300,
+  NF_IP6_PRI_SELINUX_FIRST = - 225,
+  NF_IP6_PRI_CONNTRACK = - 200,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_IP6_PRI_MANGLE = -150,
- NF_IP6_PRI_NAT_DST = -100,
- NF_IP6_PRI_FILTER = 0,
- NF_IP6_PRI_SECURITY = 50,
+  NF_IP6_PRI_MANGLE = - 150,
+  NF_IP6_PRI_NAT_DST = - 100,
+  NF_IP6_PRI_FILTER = 0,
+  NF_IP6_PRI_SECURITY = 50,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF_IP6_PRI_NAT_SRC = 100,
- NF_IP6_PRI_SELINUX_LAST = 225,
- NF_IP6_PRI_CONNTRACK_HELPER = 300,
- NF_IP6_PRI_LAST = INT_MAX,
+  NF_IP6_PRI_NAT_SRC = 100,
+  NF_IP6_PRI_SELINUX_LAST = 225,
+  NF_IP6_PRI_CONNTRACK_HELPER = 300,
+  NF_IP6_PRI_LAST = INT_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index 1ef6604..37884b0 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -57,19 +57,19 @@
 #define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_ERROR_TARGET XT_ERROR_TARGET
-#define IP6T_MATCH_ITERATE(e, fn, args...)   XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args)
-#define IP6T_ENTRY_ITERATE(entries, size, fn, args...)   XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args)
+#define IP6T_MATCH_ITERATE(e,fn,args...) XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ##args)
+#define IP6T_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ##args)
 struct ip6t_ip6 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct in6_addr src, dst;
- struct in6_addr smsk, dmsk;
- char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
- unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+  struct in6_addr src, dst;
+  struct in6_addr smsk, dmsk;
+  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 proto;
- __u8 tos;
- __u8 flags;
- __u8 invflags;
+  __u16 proto;
+  __u8 tos;
+  __u8 flags;
+  __u8 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IP6T_F_PROTO 0x01
@@ -88,30 +88,36 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_INV_MASK 0x7F
 struct ip6t_entry {
- struct ip6t_ip6 ipv6;
- unsigned int nfcache;
+  struct ip6t_ip6 ipv6;
+  unsigned int nfcache;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 target_offset;
- __u16 next_offset;
- unsigned int comefrom;
- struct xt_counters counters;
+  __u16 target_offset;
+  __u16 next_offset;
+  unsigned int comefrom;
+  struct xt_counters counters;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char elems[0];
+  unsigned char elems[0];
 };
 struct ip6t_standard {
- struct ip6t_entry entry;
+  struct ip6t_entry entry;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_standard_target target;
+  struct xt_standard_target target;
 };
 struct ip6t_error {
- struct ip6t_entry entry;
+  struct ip6t_entry entry;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xt_error_target target;
+  struct xt_error_target target;
 };
-#define IP6T_ENTRY_INIT(__size)  {   .target_offset = sizeof(struct ip6t_entry),   .next_offset = (__size),  }
-#define IP6T_STANDARD_INIT(__verdict)  {   .entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)),   .target = XT_TARGET_INIT(XT_STANDARD_TARGET,   sizeof(struct xt_standard_target)),   .target.verdict = -(__verdict) - 1,  }
+#define IP6T_ENTRY_INIT(__size) \
+{.target_offset = sizeof(struct ip6t_entry),.next_offset = (__size), \
+}
+#define IP6T_STANDARD_INIT(__verdict) \
+{.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)),.target = XT_TARGET_INIT(XT_STANDARD_TARGET, sizeof(struct xt_standard_target)),.target.verdict = - (__verdict) - 1, \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IP6T_ERROR_INIT  {   .entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)),   .target = XT_TARGET_INIT(XT_ERROR_TARGET,   sizeof(struct xt_error_target)),   .target.errorname = "ERROR",  }
+#define IP6T_ERROR_INIT \
+{.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)),.target = XT_TARGET_INIT(XT_ERROR_TARGET, sizeof(struct xt_error_target)),.target.errorname = "ERROR", \
+}
 #define IP6T_BASE_CTL 64
 #define IP6T_SO_SET_REPLACE (IP6T_BASE_CTL)
 #define IP6T_SO_SET_ADD_COUNTERS (IP6T_BASE_CTL + 1)
@@ -126,46 +132,44 @@
 #define IP6T_SO_ORIGINAL_DST 80
 struct ip6t_icmp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u8 code[2];
- __u8 invflags;
+  __u8 type;
+  __u8 code[2];
+  __u8 invflags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_ICMP_INV 0x01
 struct ip6t_getinfo {
- char name[XT_TABLE_MAXNAMELEN];
- unsigned int valid_hooks;
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int hook_entry[NF_INET_NUMHOOKS];
- unsigned int underflow[NF_INET_NUMHOOKS];
- unsigned int num_entries;
- unsigned int size;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
+  unsigned int num_entries;
+  unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ip6t_replace {
- char name[XT_TABLE_MAXNAMELEN];
- unsigned int valid_hooks;
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int num_entries;
- unsigned int size;
- unsigned int hook_entry[NF_INET_NUMHOOKS];
- unsigned int underflow[NF_INET_NUMHOOKS];
+  unsigned int num_entries;
+  unsigned int size;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int num_counters;
- struct xt_counters __user *counters;
- struct ip6t_entry entries[0];
+  unsigned int num_counters;
+  struct xt_counters __user * counters;
+  struct ip6t_entry entries[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_get_entries {
- char name[XT_TABLE_MAXNAMELEN];
- unsigned int size;
- struct ip6t_entry entrytable[0];
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int size;
+  struct ip6t_entry entrytable[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-static __inline__ struct xt_entry_target *
-ip6t_get_target(struct ip6t_entry *e)
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- return (void *)e + e->target_offset;
+static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
+  return(void *) e + e->target_offset;
 }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_HL.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_HL.h
index 0eded06..4c3fb11 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_HL.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_HL.h
@@ -21,15 +21,15 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IP6T_HL_SET = 0,
- IP6T_HL_INC,
- IP6T_HL_DEC
+  IP6T_HL_SET = 0,
+  IP6T_HL_INC,
+  IP6T_HL_DEC
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_HL_MAXMODE IP6T_HL_DEC
 struct ip6t_HL_info {
- __u8 mode;
- __u8 hop_limit;
+  __u8 mode;
+  __u8 hop_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_LOG.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_LOG.h
index 583274c..fa2e430 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_LOG.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_LOG.h
@@ -29,10 +29,10 @@
 #define IP6T_LOG_MACDECODE 0x20
 #define IP6T_LOG_MASK 0x2f
 struct ip6t_log_info {
- unsigned char level;
+  unsigned char level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char logflags;
- char prefix[30];
+  unsigned char logflags;
+  char prefix[30];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_NPT.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_NPT.h
index b922d1c..bb9d582 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_NPT.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_NPT.h
@@ -22,12 +22,12 @@
 #include <linux/netfilter.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_npt_tginfo {
- union nf_inet_addr src_pfx;
- union nf_inet_addr dst_pfx;
- __u8 src_pfx_len;
+  union nf_inet_addr src_pfx;
+  union nf_inet_addr dst_pfx;
+  __u8 src_pfx_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dst_pfx_len;
- __sum16 adjustment;
+  __u8 dst_pfx_len;
+  __sum16 adjustment;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_REJECT.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_REJECT.h
index c78400d..afe5cd5 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_REJECT.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_REJECT.h
@@ -21,18 +21,18 @@
 #include <linux/types.h>
 enum ip6t_reject_with {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IP6T_ICMP6_NO_ROUTE,
- IP6T_ICMP6_ADM_PROHIBITED,
- IP6T_ICMP6_NOT_NEIGHBOUR,
- IP6T_ICMP6_ADDR_UNREACH,
+  IP6T_ICMP6_NO_ROUTE,
+  IP6T_ICMP6_ADM_PROHIBITED,
+  IP6T_ICMP6_NOT_NEIGHBOUR,
+  IP6T_ICMP6_ADDR_UNREACH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IP6T_ICMP6_PORT_UNREACH,
- IP6T_ICMP6_ECHOREPLY,
- IP6T_TCP_RESET
+  IP6T_ICMP6_PORT_UNREACH,
+  IP6T_ICMP6_ECHOREPLY,
+  IP6T_TCP_RESET
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_reject_info {
- __u32 with;
+  __u32 with;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ah.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ah.h
index 234dde4..7582d02 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ah.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ah.h
@@ -21,10 +21,10 @@
 #include <linux/types.h>
 struct ip6t_ah {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spis[2];
- __u32 hdrlen;
- __u8 hdrres;
- __u8 invflags;
+  __u32 spis[2];
+  __u32 hdrlen;
+  __u8 hdrres;
+  __u8 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IP6T_AH_SPI 0x01
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_frag.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_frag.h
index b4145cb..ceb563c 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_frag.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_frag.h
@@ -21,10 +21,10 @@
 #include <linux/types.h>
 struct ip6t_frag {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ids[2];
- __u32 hdrlen;
- __u8 flags;
- __u8 invflags;
+  __u32 ids[2];
+  __u32 hdrlen;
+  __u8 flags;
+  __u8 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IP6T_FRAG_IDS 0x01
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_hl.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_hl.h
index 3cff615..8a27935 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_hl.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_hl.h
@@ -21,15 +21,15 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IP6T_HL_EQ = 0,
- IP6T_HL_NE,
- IP6T_HL_LT,
- IP6T_HL_GT,
+  IP6T_HL_EQ = 0,
+  IP6T_HL_NE,
+  IP6T_HL_LT,
+  IP6T_HL_GT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ip6t_hl_info {
- __u8 mode;
- __u8 hop_limit;
+  __u8 mode;
+  __u8 hop_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h
index 3db7cbf..ec1ba55 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h
@@ -21,9 +21,9 @@
 #include <linux/types.h>
 struct ip6t_ipv6header_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 matchflags;
- __u8 invflags;
- __u8 modeflag;
+  __u8 matchflags;
+  __u8 invflags;
+  __u8 modeflag;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MASK_HOPOPTS 128
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_mh.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_mh.h
index 10b2ec4..9ffc127 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_mh.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_mh.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct ip6t_mh {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 types[2];
- __u8 invflags;
+  __u8 types[2];
+  __u8 invflags;
 };
 #define IP6T_MH_INV_TYPE 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_opts.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_opts.h
index bd3c318..2d91813 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_opts.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_opts.h
@@ -22,12 +22,12 @@
 #define IP6T_OPTS_OPTSNR 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_opts {
- __u32 hdrlen;
- __u8 flags;
- __u8 invflags;
+  __u32 hdrlen;
+  __u8 flags;
+  __u8 invflags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 opts[IP6T_OPTS_OPTSNR];
- __u8 optsnr;
+  __u16 opts[IP6T_OPTS_OPTSNR];
+  __u8 optsnr;
 };
 #define IP6T_OPTS_LEN 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_rt.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_rt.h
index 86ca462..036b26a 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_rt.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_rt.h
@@ -22,14 +22,14 @@
 #define IP6T_RT_HOPS 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_rt {
- __u32 rt_type;
- __u32 segsleft[2];
- __u32 hdrlen;
+  __u32 rt_type;
+  __u32 segsleft[2];
+  __u32 hdrlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- __u8 invflags;
- struct in6_addr addrs[IP6T_RT_HOPS];
- __u8 addrnr;
+  __u8 flags;
+  __u8 invflags;
+  struct in6_addr addrs[IP6T_RT_HOPS];
+  __u8 addrnr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define IP6T_RT_TYP 0x01
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index b5567b0..bcaf020 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -52,19 +52,19 @@
 #define MAX_LINKS 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_nl {
- __kernel_sa_family_t nl_family;
- unsigned short nl_pad;
- __u32 nl_pid;
+  __kernel_sa_family_t nl_family;
+  unsigned short nl_pad;
+  __u32 nl_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 nl_groups;
+  __u32 nl_groups;
 };
 struct nlmsghdr {
- __u32 nlmsg_len;
+  __u32 nlmsg_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 nlmsg_type;
- __u16 nlmsg_flags;
- __u32 nlmsg_seq;
- __u32 nlmsg_pid;
+  __u16 nlmsg_type;
+  __u16 nlmsg_flags;
+  __u32 nlmsg_seq;
+  __u32 nlmsg_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NLM_F_REQUEST 1
@@ -77,22 +77,22 @@
 #define NLM_F_MATCH 0x200
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLM_F_ATOMIC 0x400
-#define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH)
+#define NLM_F_DUMP (NLM_F_ROOT | NLM_F_MATCH)
 #define NLM_F_REPLACE 0x100
 #define NLM_F_EXCL 0x200
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
 #define NLMSG_ALIGNTO 4U
-#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
+#define NLMSG_ALIGN(len) (((len) + NLMSG_ALIGNTO - 1) & ~(NLMSG_ALIGNTO - 1))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
 #define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
 #define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
-#define NLMSG_DATA(nlh) ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
+#define NLMSG_DATA(nlh) ((void *) (((char *) nlh) + NLMSG_LENGTH(0)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len),   (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
-#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len <= (len))
+#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), (struct nlmsghdr *) (((char *) (nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
+#define NLMSG_OK(nlh,len) ((len) >= (int) sizeof(struct nlmsghdr) && (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && (nlh)->nlmsg_len <= (len))
 #define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
 #define NLMSG_NOOP 0x1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -102,8 +102,8 @@
 #define NLMSG_MIN_TYPE 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nlmsgerr {
- int error;
- struct nlmsghdr msg;
+  int error;
+  struct nlmsghdr msg;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETLINK_ADD_MEMBERSHIP 1
@@ -116,33 +116,33 @@
 #define NETLINK_TX_RING 7
 struct nl_pktinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 group;
+  __u32 group;
 };
 struct nl_mmap_req {
- unsigned int nm_block_size;
+  unsigned int nm_block_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int nm_block_nr;
- unsigned int nm_frame_size;
- unsigned int nm_frame_nr;
+  unsigned int nm_block_nr;
+  unsigned int nm_frame_size;
+  unsigned int nm_frame_nr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nl_mmap_hdr {
- unsigned int nm_status;
- unsigned int nm_len;
- __u32 nm_group;
+  unsigned int nm_status;
+  unsigned int nm_len;
+  __u32 nm_group;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 nm_pid;
- __u32 nm_uid;
- __u32 nm_gid;
+  __u32 nm_pid;
+  __u32 nm_uid;
+  __u32 nm_gid;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl_mmap_status {
- NL_MMAP_STATUS_UNUSED,
- NL_MMAP_STATUS_RESERVED,
- NL_MMAP_STATUS_VALID,
+  NL_MMAP_STATUS_UNUSED,
+  NL_MMAP_STATUS_RESERVED,
+  NL_MMAP_STATUS_VALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL_MMAP_STATUS_COPY,
- NL_MMAP_STATUS_SKIP,
+  NL_MMAP_STATUS_COPY,
+  NL_MMAP_STATUS_SKIP,
 };
 #define NL_MMAP_MSG_ALIGNMENT NLMSG_ALIGNTO
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -151,13 +151,13 @@
 #define NET_MAJOR 36
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NETLINK_UNCONNECTED = 0,
- NETLINK_CONNECTED,
+  NETLINK_UNCONNECTED = 0,
+  NETLINK_CONNECTED,
 };
 struct nlattr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 nla_len;
- __u16 nla_type;
+  __u16 nla_len;
+  __u16 nla_type;
 };
 #define NLA_F_NESTED (1 << 15)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netlink_diag.h b/libc/kernel/uapi/linux/netlink_diag.h
index 06e5002..ebf6374 100644
--- a/libc/kernel/uapi/linux/netlink_diag.h
+++ b/libc/kernel/uapi/linux/netlink_diag.h
@@ -21,43 +21,43 @@
 #include <linux/types.h>
 struct netlink_diag_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sdiag_family;
- __u8 sdiag_protocol;
- __u16 pad;
- __u32 ndiag_ino;
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 ndiag_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ndiag_show;
- __u32 ndiag_cookie[2];
+  __u32 ndiag_show;
+  __u32 ndiag_cookie[2];
 };
 struct netlink_diag_msg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ndiag_family;
- __u8 ndiag_type;
- __u8 ndiag_protocol;
- __u8 ndiag_state;
+  __u8 ndiag_family;
+  __u8 ndiag_type;
+  __u8 ndiag_protocol;
+  __u8 ndiag_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ndiag_portid;
- __u32 ndiag_dst_portid;
- __u32 ndiag_dst_group;
- __u32 ndiag_ino;
+  __u32 ndiag_portid;
+  __u32 ndiag_dst_portid;
+  __u32 ndiag_dst_group;
+  __u32 ndiag_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ndiag_cookie[2];
+  __u32 ndiag_cookie[2];
 };
 struct netlink_diag_ring {
- __u32 ndr_block_size;
+  __u32 ndr_block_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ndr_block_nr;
- __u32 ndr_frame_size;
- __u32 ndr_frame_nr;
+  __u32 ndr_block_nr;
+  __u32 ndr_frame_size;
+  __u32 ndr_frame_nr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- NETLINK_DIAG_MEMINFO,
- NETLINK_DIAG_GROUPS,
- NETLINK_DIAG_RX_RING,
+  NETLINK_DIAG_MEMINFO,
+  NETLINK_DIAG_GROUPS,
+  NETLINK_DIAG_RX_RING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NETLINK_DIAG_TX_RING,
- __NETLINK_DIAG_MAX,
+  NETLINK_DIAG_TX_RING,
+  __NETLINK_DIAG_MAX,
 };
 #define NETLINK_DIAG_MAX (__NETLINK_DIAG_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/netrom.h b/libc/kernel/uapi/linux/netrom.h
index bb0fd59..4e411f2 100644
--- a/libc/kernel/uapi/linux/netrom.h
+++ b/libc/kernel/uapi/linux/netrom.h
@@ -27,22 +27,22 @@
 #define NETROM_T4 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETROM_IDLE 7
-#define SIOCNRDECOBS (SIOCPROTOPRIVATE+2)
+#define SIOCNRDECOBS (SIOCPROTOPRIVATE + 2)
 struct nr_route_struct {
 #define NETROM_NEIGH 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETROM_NODE 1
- int type;
- ax25_address callsign;
- char device[16];
+  int type;
+  ax25_address callsign;
+  char device[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int quality;
- char mnemonic[7];
- ax25_address neighbour;
- unsigned int obs_count;
+  unsigned int quality;
+  char mnemonic[7];
+  ax25_address neighbour;
+  unsigned int obs_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int ndigis;
- ax25_address digipeaters[AX25_MAX_DIGIS];
+  unsigned int ndigis;
+  ax25_address digipeaters[AX25_MAX_DIGIS];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nfc.h b/libc/kernel/uapi/linux/nfc.h
index 88979de..7a83ac7 100644
--- a/libc/kernel/uapi/linux/nfc.h
+++ b/libc/kernel/uapi/linux/nfc.h
@@ -26,109 +26,114 @@
 #define NFC_GENL_MCAST_EVENT_NAME "events"
 enum nfc_commands {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_CMD_UNSPEC,
- NFC_CMD_GET_DEVICE,
- NFC_CMD_DEV_UP,
- NFC_CMD_DEV_DOWN,
+  NFC_CMD_UNSPEC,
+  NFC_CMD_GET_DEVICE,
+  NFC_CMD_DEV_UP,
+  NFC_CMD_DEV_DOWN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_CMD_DEP_LINK_UP,
- NFC_CMD_DEP_LINK_DOWN,
- NFC_CMD_START_POLL,
- NFC_CMD_STOP_POLL,
+  NFC_CMD_DEP_LINK_UP,
+  NFC_CMD_DEP_LINK_DOWN,
+  NFC_CMD_START_POLL,
+  NFC_CMD_STOP_POLL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_CMD_GET_TARGET,
- NFC_EVENT_TARGETS_FOUND,
- NFC_EVENT_DEVICE_ADDED,
- NFC_EVENT_DEVICE_REMOVED,
+  NFC_CMD_GET_TARGET,
+  NFC_EVENT_TARGETS_FOUND,
+  NFC_EVENT_DEVICE_ADDED,
+  NFC_EVENT_DEVICE_REMOVED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_EVENT_TARGET_LOST,
- NFC_EVENT_TM_ACTIVATED,
- NFC_EVENT_TM_DEACTIVATED,
- NFC_CMD_LLC_GET_PARAMS,
+  NFC_EVENT_TARGET_LOST,
+  NFC_EVENT_TM_ACTIVATED,
+  NFC_EVENT_TM_DEACTIVATED,
+  NFC_CMD_LLC_GET_PARAMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_CMD_LLC_SET_PARAMS,
- NFC_CMD_ENABLE_SE,
- NFC_CMD_DISABLE_SE,
- NFC_CMD_LLC_SDREQ,
+  NFC_CMD_LLC_SET_PARAMS,
+  NFC_CMD_ENABLE_SE,
+  NFC_CMD_DISABLE_SE,
+  NFC_CMD_LLC_SDREQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_EVENT_LLC_SDRES,
- NFC_CMD_FW_DOWNLOAD,
- NFC_EVENT_SE_ADDED,
- NFC_EVENT_SE_REMOVED,
+  NFC_EVENT_LLC_SDRES,
+  NFC_CMD_FW_DOWNLOAD,
+  NFC_EVENT_SE_ADDED,
+  NFC_EVENT_SE_REMOVED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_EVENT_SE_CONNECTIVITY,
- NFC_EVENT_SE_TRANSACTION,
- NFC_CMD_GET_SE,
- NFC_CMD_SE_IO,
+  NFC_EVENT_SE_CONNECTIVITY,
+  NFC_EVENT_SE_TRANSACTION,
+  NFC_CMD_GET_SE,
+  NFC_CMD_SE_IO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NFC_CMD_AFTER_LAST
+  __NFC_CMD_AFTER_LAST
 };
 #define NFC_CMD_MAX (__NFC_CMD_AFTER_LAST - 1)
 enum nfc_attrs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_ATTR_UNSPEC,
- NFC_ATTR_DEVICE_INDEX,
- NFC_ATTR_DEVICE_NAME,
- NFC_ATTR_PROTOCOLS,
+  NFC_ATTR_UNSPEC,
+  NFC_ATTR_DEVICE_INDEX,
+  NFC_ATTR_DEVICE_NAME,
+  NFC_ATTR_PROTOCOLS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_ATTR_TARGET_INDEX,
- NFC_ATTR_TARGET_SENS_RES,
- NFC_ATTR_TARGET_SEL_RES,
- NFC_ATTR_TARGET_NFCID1,
+  NFC_ATTR_TARGET_INDEX,
+  NFC_ATTR_TARGET_SENS_RES,
+  NFC_ATTR_TARGET_SEL_RES,
+  NFC_ATTR_TARGET_NFCID1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_ATTR_TARGET_SENSB_RES,
- NFC_ATTR_TARGET_SENSF_RES,
- NFC_ATTR_COMM_MODE,
- NFC_ATTR_RF_MODE,
+  NFC_ATTR_TARGET_SENSB_RES,
+  NFC_ATTR_TARGET_SENSF_RES,
+  NFC_ATTR_COMM_MODE,
+  NFC_ATTR_RF_MODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_ATTR_DEVICE_POWERED,
- NFC_ATTR_IM_PROTOCOLS,
- NFC_ATTR_TM_PROTOCOLS,
- NFC_ATTR_LLC_PARAM_LTO,
+  NFC_ATTR_DEVICE_POWERED,
+  NFC_ATTR_IM_PROTOCOLS,
+  NFC_ATTR_TM_PROTOCOLS,
+  NFC_ATTR_LLC_PARAM_LTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_ATTR_LLC_PARAM_RW,
- NFC_ATTR_LLC_PARAM_MIUX,
- NFC_ATTR_SE,
- NFC_ATTR_LLC_SDP,
+  NFC_ATTR_LLC_PARAM_RW,
+  NFC_ATTR_LLC_PARAM_MIUX,
+  NFC_ATTR_SE,
+  NFC_ATTR_LLC_SDP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_ATTR_FIRMWARE_NAME,
- NFC_ATTR_SE_INDEX,
- NFC_ATTR_SE_TYPE,
- NFC_ATTR_SE_AID,
+  NFC_ATTR_FIRMWARE_NAME,
+  NFC_ATTR_SE_INDEX,
+  NFC_ATTR_SE_TYPE,
+  NFC_ATTR_SE_AID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS,
- NFC_ATTR_SE_APDU,
- __NFC_ATTR_AFTER_LAST
+  NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS,
+  NFC_ATTR_SE_APDU,
+  NFC_ATTR_TARGET_ISO15693_DSFID,
+  NFC_ATTR_TARGET_ISO15693_UID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __NFC_ATTR_AFTER_LAST
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_ATTR_MAX (__NFC_ATTR_AFTER_LAST - 1)
 enum nfc_sdp_attr {
- NFC_SDP_ATTR_UNSPEC,
- NFC_SDP_ATTR_URI,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFC_SDP_ATTR_SAP,
- __NFC_SDP_ATTR_AFTER_LAST
+  NFC_SDP_ATTR_UNSPEC,
+  NFC_SDP_ATTR_URI,
+  NFC_SDP_ATTR_SAP,
+  __NFC_SDP_ATTR_AFTER_LAST
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFC_SDP_ATTR_MAX (__NFC_SDP_ATTR_AFTER_LAST - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_DEVICE_NAME_MAXSIZE 8
 #define NFC_NFCID1_MAXSIZE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_NFCID2_MAXSIZE 8
 #define NFC_NFCID3_MAXSIZE 10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_SENSB_RES_MAXSIZE 12
 #define NFC_SENSF_RES_MAXSIZE 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_GB_MAXSIZE 48
 #define NFC_FIRMWARE_NAME_MAXSIZE 32
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NFC_ISO15693_UID_MAXSIZE 8
 #define NFC_PROTO_JEWEL 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_PROTO_MIFARE 2
 #define NFC_PROTO_FELICA 3
 #define NFC_PROTO_ISO14443 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_PROTO_NFC_DEP 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_PROTO_ISO14443_B 6
-#define NFC_PROTO_MAX 7
+#define NFC_PROTO_ISO15693 7
+#define NFC_PROTO_MAX 8
 #define NFC_COMM_ACTIVE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_COMM_PASSIVE 1
@@ -143,46 +148,54 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_PROTO_NFC_DEP_MASK (1 << NFC_PROTO_NFC_DEP)
 #define NFC_PROTO_ISO14443_B_MASK (1 << NFC_PROTO_ISO14443_B)
+#define NFC_PROTO_ISO15693_MASK (1 << NFC_PROTO_ISO15693)
 #define NFC_SE_UICC 0x1
-#define NFC_SE_EMBEDDED 0x2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NFC_SE_EMBEDDED 0x2
 #define NFC_SE_DISABLED 0x0
 #define NFC_SE_ENABLED 0x1
 struct sockaddr_nfc {
- sa_family_t sa_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dev_idx;
- __u32 target_idx;
- __u32 nfc_protocol;
+  sa_family_t sa_family;
+  __u32 dev_idx;
+  __u32 target_idx;
+  __u32 nfc_protocol;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_LLCP_MAX_SERVICE_NAME 63
 struct sockaddr_nfc_llcp {
- sa_family_t sa_family;
- __u32 dev_idx;
+  sa_family_t sa_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 target_idx;
- __u32 nfc_protocol;
- __u8 dsap;
- __u8 ssap;
+  __u32 dev_idx;
+  __u32 target_idx;
+  __u32 nfc_protocol;
+  __u8 dsap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char service_name[NFC_LLCP_MAX_SERVICE_NAME];  ;
- size_t service_name_len;
+  __u8 ssap;
+  char service_name[NFC_LLCP_MAX_SERVICE_NAME];
+;
+  size_t service_name_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFC_SOCKPROTO_RAW 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_SOCKPROTO_LLCP 1
 #define NFC_SOCKPROTO_MAX 2
-#define NFC_HEADER_SIZE 1
-#define NFC_LLCP_RAW_HEADER_SIZE 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NFC_LLCP_DIRECTION_RX 0x00
-#define NFC_LLCP_DIRECTION_TX 0x01
+#define NFC_HEADER_SIZE 1
+#define NFC_RAW_HEADER_SIZE 2
+#define NFC_DIRECTION_RX 0x00
+#define NFC_DIRECTION_TX 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RAW_PAYLOAD_LLCP 0
+#define RAW_PAYLOAD_NCI 1
+#define RAW_PAYLOAD_HCI 2
+#define RAW_PAYLOAD_DIGITAL 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RAW_PAYLOAD_PROPRIETARY 4
 #define NFC_LLCP_RW 0
 #define NFC_LLCP_MIUX 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_LLCP_REMOTE_MIU 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_LLCP_REMOTE_LTO 3
 #define NFC_LLCP_REMOTE_RW 4
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nfs.h b/libc/kernel/uapi/linux/nfs.h
index 9b63484..27083a2 100644
--- a/libc/kernel/uapi/linux/nfs.h
+++ b/libc/kernel/uapi/linux/nfs.h
@@ -28,7 +28,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_FHSIZE 32
 #define NFS_COOKIESIZE 4
-#define NFS_FIFO_DEV (-1)
+#define NFS_FIFO_DEV (- 1)
 #define NFSMODE_FMT 0170000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSMODE_DIR 0040000
@@ -44,111 +44,111 @@
 #define NFS_MNT_VERSION 1
 #define NFS_MNT3_VERSION 3
 #define NFS_PIPE_DIRNAME "nfs"
- enum nfs_stat {
+enum nfs_stat {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFS_OK = 0,
- NFSERR_PERM = 1,
- NFSERR_NOENT = 2,
- NFSERR_IO = 5,
+  NFS_OK = 0,
+  NFSERR_PERM = 1,
+  NFSERR_NOENT = 2,
+  NFSERR_IO = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_NXIO = 6,
- NFSERR_EAGAIN = 11,
- NFSERR_ACCES = 13,
- NFSERR_EXIST = 17,
+  NFSERR_NXIO = 6,
+  NFSERR_EAGAIN = 11,
+  NFSERR_ACCES = 13,
+  NFSERR_EXIST = 17,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_XDEV = 18,
- NFSERR_NODEV = 19,
- NFSERR_NOTDIR = 20,
- NFSERR_ISDIR = 21,
+  NFSERR_XDEV = 18,
+  NFSERR_NODEV = 19,
+  NFSERR_NOTDIR = 20,
+  NFSERR_ISDIR = 21,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_INVAL = 22,
- NFSERR_FBIG = 27,
- NFSERR_NOSPC = 28,
- NFSERR_ROFS = 30,
+  NFSERR_INVAL = 22,
+  NFSERR_FBIG = 27,
+  NFSERR_NOSPC = 28,
+  NFSERR_ROFS = 30,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_MLINK = 31,
- NFSERR_OPNOTSUPP = 45,
- NFSERR_NAMETOOLONG = 63,
- NFSERR_NOTEMPTY = 66,
+  NFSERR_MLINK = 31,
+  NFSERR_OPNOTSUPP = 45,
+  NFSERR_NAMETOOLONG = 63,
+  NFSERR_NOTEMPTY = 66,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_DQUOT = 69,
- NFSERR_STALE = 70,
- NFSERR_REMOTE = 71,
- NFSERR_WFLUSH = 99,
+  NFSERR_DQUOT = 69,
+  NFSERR_STALE = 70,
+  NFSERR_REMOTE = 71,
+  NFSERR_WFLUSH = 99,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_BADHANDLE = 10001,
- NFSERR_NOT_SYNC = 10002,
- NFSERR_BAD_COOKIE = 10003,
- NFSERR_NOTSUPP = 10004,
+  NFSERR_BADHANDLE = 10001,
+  NFSERR_NOT_SYNC = 10002,
+  NFSERR_BAD_COOKIE = 10003,
+  NFSERR_NOTSUPP = 10004,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_TOOSMALL = 10005,
- NFSERR_SERVERFAULT = 10006,
- NFSERR_BADTYPE = 10007,
- NFSERR_JUKEBOX = 10008,
+  NFSERR_TOOSMALL = 10005,
+  NFSERR_SERVERFAULT = 10006,
+  NFSERR_BADTYPE = 10007,
+  NFSERR_JUKEBOX = 10008,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_SAME = 10009,
- NFSERR_DENIED = 10010,
- NFSERR_EXPIRED = 10011,
- NFSERR_LOCKED = 10012,
+  NFSERR_SAME = 10009,
+  NFSERR_DENIED = 10010,
+  NFSERR_EXPIRED = 10011,
+  NFSERR_LOCKED = 10012,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_GRACE = 10013,
- NFSERR_FHEXPIRED = 10014,
- NFSERR_SHARE_DENIED = 10015,
- NFSERR_WRONGSEC = 10016,
+  NFSERR_GRACE = 10013,
+  NFSERR_FHEXPIRED = 10014,
+  NFSERR_SHARE_DENIED = 10015,
+  NFSERR_WRONGSEC = 10016,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_CLID_INUSE = 10017,
- NFSERR_RESOURCE = 10018,
- NFSERR_MOVED = 10019,
- NFSERR_NOFILEHANDLE = 10020,
+  NFSERR_CLID_INUSE = 10017,
+  NFSERR_RESOURCE = 10018,
+  NFSERR_MOVED = 10019,
+  NFSERR_NOFILEHANDLE = 10020,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_MINOR_VERS_MISMATCH = 10021,
- NFSERR_STALE_CLIENTID = 10022,
- NFSERR_STALE_STATEID = 10023,
- NFSERR_OLD_STATEID = 10024,
+  NFSERR_MINOR_VERS_MISMATCH = 10021,
+  NFSERR_STALE_CLIENTID = 10022,
+  NFSERR_STALE_STATEID = 10023,
+  NFSERR_OLD_STATEID = 10024,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_BAD_STATEID = 10025,
- NFSERR_BAD_SEQID = 10026,
- NFSERR_NOT_SAME = 10027,
- NFSERR_LOCK_RANGE = 10028,
+  NFSERR_BAD_STATEID = 10025,
+  NFSERR_BAD_SEQID = 10026,
+  NFSERR_NOT_SAME = 10027,
+  NFSERR_LOCK_RANGE = 10028,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_SYMLINK = 10029,
- NFSERR_RESTOREFH = 10030,
- NFSERR_LEASE_MOVED = 10031,
- NFSERR_ATTRNOTSUPP = 10032,
+  NFSERR_SYMLINK = 10029,
+  NFSERR_RESTOREFH = 10030,
+  NFSERR_LEASE_MOVED = 10031,
+  NFSERR_ATTRNOTSUPP = 10032,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_NO_GRACE = 10033,
- NFSERR_RECLAIM_BAD = 10034,
- NFSERR_RECLAIM_CONFLICT = 10035,
- NFSERR_BAD_XDR = 10036,
+  NFSERR_NO_GRACE = 10033,
+  NFSERR_RECLAIM_BAD = 10034,
+  NFSERR_RECLAIM_CONFLICT = 10035,
+  NFSERR_BAD_XDR = 10036,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_LOCKS_HELD = 10037,
- NFSERR_OPENMODE = 10038,
- NFSERR_BADOWNER = 10039,
- NFSERR_BADCHAR = 10040,
+  NFSERR_LOCKS_HELD = 10037,
+  NFSERR_OPENMODE = 10038,
+  NFSERR_BADOWNER = 10039,
+  NFSERR_BADCHAR = 10040,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_BADNAME = 10041,
- NFSERR_BAD_RANGE = 10042,
- NFSERR_LOCK_NOTSUPP = 10043,
- NFSERR_OP_ILLEGAL = 10044,
+  NFSERR_BADNAME = 10041,
+  NFSERR_BAD_RANGE = 10042,
+  NFSERR_LOCK_NOTSUPP = 10043,
+  NFSERR_OP_ILLEGAL = 10044,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSERR_DEADLOCK = 10045,
- NFSERR_FILE_OPEN = 10046,
- NFSERR_ADMIN_REVOKED = 10047,
- NFSERR_CB_PATH_DOWN = 10048,
+  NFSERR_DEADLOCK = 10045,
+  NFSERR_FILE_OPEN = 10046,
+  NFSERR_ADMIN_REVOKED = 10047,
+  NFSERR_CB_PATH_DOWN = 10048,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nfs_ftype {
- NFNON = 0,
- NFREG = 1,
+  NFNON = 0,
+  NFREG = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFDIR = 2,
- NFBLK = 3,
- NFCHR = 4,
- NFLNK = 5,
+  NFDIR = 2,
+  NFBLK = 3,
+  NFCHR = 4,
+  NFLNK = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFSOCK = 6,
- NFBAD = 7,
- NFFIFO = 8
+  NFSOCK = 6,
+  NFBAD = 7,
+  NFFIFO = 8
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/nfs2.h b/libc/kernel/uapi/linux/nfs2.h
index 31d731b..10aafe9 100644
--- a/libc/kernel/uapi/linux/nfs2.h
+++ b/libc/kernel/uapi/linux/nfs2.h
@@ -27,7 +27,7 @@
 #define NFS2_FHSIZE 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS2_COOKIESIZE 4
-#define NFS2_FIFO_DEV (-1)
+#define NFS2_FIFO_DEV (- 1)
 #define NFS2MODE_FMT 0170000
 #define NFS2MODE_DIR 0040000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -39,21 +39,21 @@
 #define NFS2MODE_SOCK 0140000
 #define NFS2MODE_FIFO 0010000
 enum nfs2_ftype {
- NF2NON = 0,
+  NF2NON = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF2REG = 1,
- NF2DIR = 2,
- NF2BLK = 3,
- NF2CHR = 4,
+  NF2REG = 1,
+  NF2DIR = 2,
+  NF2BLK = 3,
+  NF2CHR = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF2LNK = 5,
- NF2SOCK = 6,
- NF2BAD = 7,
- NF2FIFO = 8
+  NF2LNK = 5,
+  NF2SOCK = 6,
+  NF2BAD = 7,
+  NF2FIFO = 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct nfs2_fh {
- char data[NFS2_FHSIZE];
+  char data[NFS2_FHSIZE];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS2_VERSION 2
diff --git a/libc/kernel/uapi/linux/nfs3.h b/libc/kernel/uapi/linux/nfs3.h
index 2cdce4b..db6dc4b 100644
--- a/libc/kernel/uapi/linux/nfs3.h
+++ b/libc/kernel/uapi/linux/nfs3.h
@@ -31,7 +31,7 @@
 #define NFS3_COOKIEVERFSIZE 8
 #define NFS3_WRITEVERFSIZE 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NFS3_FIFO_DEV (-1)
+#define NFS3_FIFO_DEV (- 1)
 #define NFS3MODE_FMT 0170000
 #define NFS3MODE_DIR 0040000
 #define NFS3MODE_CHR 0020000
@@ -52,9 +52,9 @@
 #define NFS3_ACCESS_FULL 0x003f
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfs3_createmode {
- NFS3_CREATE_UNCHECKED = 0,
- NFS3_CREATE_GUARDED = 1,
- NFS3_CREATE_EXCLUSIVE = 2
+  NFS3_CREATE_UNCHECKED = 0,
+  NFS3_CREATE_GUARDED = 1,
+  NFS3_CREATE_EXCLUSIVE = 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFS3_FSF_LINK 0x0001
@@ -67,22 +67,22 @@
 #define NFS3_FSF_READONLY 0x0008
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfs3_ftype {
- NF3NON = 0,
- NF3REG = 1,
- NF3DIR = 2,
+  NF3NON = 0,
+  NF3REG = 1,
+  NF3DIR = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF3BLK = 3,
- NF3CHR = 4,
- NF3LNK = 5,
- NF3SOCK = 6,
+  NF3BLK = 3,
+  NF3CHR = 4,
+  NF3LNK = 5,
+  NF3SOCK = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NF3FIFO = 7,
- NF3BAD = 8
+  NF3FIFO = 7,
+  NF3BAD = 8
 };
 struct nfs3_fh {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short size;
- unsigned char data[NFS3_FHSIZE];
+  unsigned short size;
+  unsigned char data[NFS3_FHSIZE];
 };
 #define NFS3_VERSION 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nfs4.h b/libc/kernel/uapi/linux/nfs4.h
index 2944693..b0dd925 100644
--- a/libc/kernel/uapi/linux/nfs4.h
+++ b/libc/kernel/uapi/linux/nfs4.h
@@ -157,15 +157,15 @@
 #define NFS4_SECINFO_STYLE4_CURRENT_FH 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_SECINFO_STYLE4_PARENT 1
-#define NFS4_MAX_UINT64 (~(__u64)0)
+#define NFS4_MAX_UINT64 (~(__u64) 0)
 #define NFS4_MAX_OPS 8
 #define NFS4_MAX_BACK_CHANNEL_OPS 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfs4_acl_whotype {
- NFS4_ACL_WHO_NAMED = 0,
- NFS4_ACL_WHO_OWNER,
- NFS4_ACL_WHO_GROUP,
+  NFS4_ACL_WHO_NAMED = 0,
+  NFS4_ACL_WHO_OWNER,
+  NFS4_ACL_WHO_GROUP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NFS4_ACL_WHO_EVERYONE,
+  NFS4_ACL_WHO_EVERYONE,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/nfs4_mount.h b/libc/kernel/uapi/linux/nfs4_mount.h
index 8d84416..64aade8 100644
--- a/libc/kernel/uapi/linux/nfs4_mount.h
+++ b/libc/kernel/uapi/linux/nfs4_mount.h
@@ -21,33 +21,33 @@
 #define NFS4_MOUNT_VERSION 1
 struct nfs_string {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int len;
- const char __user * data;
+  unsigned int len;
+  const char __user * data;
 };
 struct nfs4_mount_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int version;
- int flags;
- int rsize;
- int wsize;
+  int version;
+  int flags;
+  int rsize;
+  int wsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int timeo;
- int retrans;
- int acregmin;
- int acregmax;
+  int timeo;
+  int retrans;
+  int acregmin;
+  int acregmax;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int acdirmin;
- int acdirmax;
- struct nfs_string client_addr;
- struct nfs_string mnt_path;
+  int acdirmin;
+  int acdirmax;
+  struct nfs_string client_addr;
+  struct nfs_string mnt_path;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct nfs_string hostname;
- unsigned int host_addrlen;
- struct sockaddr __user * host_addr;
- int proto;
+  struct nfs_string hostname;
+  unsigned int host_addrlen;
+  struct sockaddr __user * host_addr;
+  int proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int auth_flavourlen;
- int __user *auth_flavours;
+  int auth_flavourlen;
+  int __user * auth_flavours;
 };
 #define NFS4_MOUNT_SOFT 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nfs_fs.h b/libc/kernel/uapi/linux/nfs_fs.h
index f340fb1..b771cfb 100644
--- a/libc/kernel/uapi/linux/nfs_fs.h
+++ b/libc/kernel/uapi/linux/nfs_fs.h
@@ -24,9 +24,9 @@
 #define NFS_DEF_UDP_RETRANS (3)
 #define NFS_DEF_TCP_TIMEO (600)
 #define NFS_DEF_TCP_RETRANS (2)
-#define NFS_MAX_UDP_TIMEOUT (60*HZ)
+#define NFS_MAX_UDP_TIMEOUT (60 * HZ)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NFS_MAX_TCP_TIMEOUT (600*HZ)
+#define NFS_MAX_TCP_TIMEOUT (600 * HZ)
 #define NFS_DEF_ACREGMIN (3)
 #define NFS_DEF_ACREGMAX (60)
 #define NFS_DEF_ACDIRMIN (30)
diff --git a/libc/kernel/uapi/linux/nfs_idmap.h b/libc/kernel/uapi/linux/nfs_idmap.h
index 039bf40..5f5c0eb 100644
--- a/libc/kernel/uapi/linux/nfs_idmap.h
+++ b/libc/kernel/uapi/linux/nfs_idmap.h
@@ -32,12 +32,12 @@
 #define IDMAP_STATUS_SUCCESS 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct idmap_msg {
- __u8 im_type;
- __u8 im_conv;
- char im_name[IDMAP_NAMESZ];
+  __u8 im_type;
+  __u8 im_conv;
+  char im_name[IDMAP_NAMESZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 im_id;
- __u8 im_status;
+  __u32 im_id;
+  __u8 im_status;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nfs_mount.h b/libc/kernel/uapi/linux/nfs_mount.h
index dc96ed2..16ed460 100644
--- a/libc/kernel/uapi/linux/nfs_mount.h
+++ b/libc/kernel/uapi/linux/nfs_mount.h
@@ -27,29 +27,29 @@
 #define NFS_MAX_CONTEXT_LEN 256
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_mount_data {
- int version;
- int fd;
- struct nfs2_fh old_root;
+  int version;
+  int fd;
+  struct nfs2_fh old_root;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int flags;
- int rsize;
- int wsize;
- int timeo;
+  int flags;
+  int rsize;
+  int wsize;
+  int timeo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int retrans;
- int acregmin;
- int acregmax;
- int acdirmin;
+  int retrans;
+  int acregmin;
+  int acregmax;
+  int acdirmin;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int acdirmax;
- struct sockaddr_in addr;
- char hostname[NFS_MAXNAMLEN + 1];
- int namlen;
+  int acdirmax;
+  struct sockaddr_in addr;
+  char hostname[NFS_MAXNAMLEN + 1];
+  int namlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int bsize;
- struct nfs3_fh root;
- int pseudoflavor;
- char context[NFS_MAX_CONTEXT_LEN + 1];
+  unsigned int bsize;
+  struct nfs3_fh root;
+  int pseudoflavor;
+  char context[NFS_MAX_CONTEXT_LEN + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NFS_MOUNT_SOFT 0x0001
diff --git a/libc/kernel/uapi/linux/nfsd/cld.h b/libc/kernel/uapi/linux/nfsd/cld.h
index 16b3629..3593634 100644
--- a/libc/kernel/uapi/linux/nfsd/cld.h
+++ b/libc/kernel/uapi/linux/nfsd/cld.h
@@ -22,28 +22,28 @@
 #define NFS4_OPAQUE_LIMIT 1024
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cld_command {
- Cld_Create,
- Cld_Remove,
- Cld_Check,
+  Cld_Create,
+  Cld_Remove,
+  Cld_Check,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- Cld_GraceDone,
+  Cld_GraceDone,
 };
 struct cld_name {
- uint16_t cn_len;
+  uint16_t cn_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cn_id[NFS4_OPAQUE_LIMIT];
+  unsigned char cn_id[NFS4_OPAQUE_LIMIT];
 } __attribute__((packed));
 struct cld_msg {
- uint8_t cm_vers;
+  uint8_t cm_vers;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t cm_cmd;
- int16_t cm_status;
- uint32_t cm_xid;
- union {
+  uint8_t cm_cmd;
+  int16_t cm_status;
+  uint32_t cm_xid;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int64_t cm_gracetime;
- struct cld_name cm_name;
- } __attribute__((packed)) cm_u;
+    int64_t cm_gracetime;
+    struct cld_name cm_name;
+  } __attribute__((packed)) cm_u;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/nfsd/export.h b/libc/kernel/uapi/linux/nfsd/export.h
index 5f8ad88..4d7bfad 100644
--- a/libc/kernel/uapi/linux/nfsd/export.h
+++ b/libc/kernel/uapi/linux/nfsd/export.h
@@ -31,16 +31,18 @@
 #define NFSEXP_ASYNC 0x0010
 #define NFSEXP_GATHERED_WRITES 0x0020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NFSEXP_NOREADDIRPLUS 0x0040
 #define NFSEXP_NOHIDE 0x0200
 #define NFSEXP_NOSUBTREECHECK 0x0400
 #define NFSEXP_NOAUTHNLM 0x0800
-#define NFSEXP_MSNFS 0x1000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NFSEXP_MSNFS 0x1000
 #define NFSEXP_FSID 0x2000
 #define NFSEXP_CROSSMOUNT 0x4000
 #define NFSEXP_NOACL 0x8000
-#define NFSEXP_V4ROOT 0x10000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NFSEXP_ALLFLAGS 0x17E3F
-#define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH   | NFSEXP_ALLSQUASH   | NFSEXP_INSECURE_PORT)
+#define NFSEXP_V4ROOT 0x10000
+#define NFSEXP_ALLFLAGS 0x1FE7F
+#define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH | NFSEXP_ALLSQUASH | NFSEXP_INSECURE_PORT)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nfsd/nfsfh.h b/libc/kernel/uapi/linux/nfsd/nfsfh.h
index d089412..285936c 100644
--- a/libc/kernel/uapi/linux/nfsd/nfsfh.h
+++ b/libc/kernel/uapi/linux/nfsd/nfsfh.h
@@ -26,33 +26,33 @@
 #include <linux/nfs4.h>
 struct nfs_fhbase_old {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fb_dcookie;
- __u32 fb_ino;
- __u32 fb_dirino;
- __u32 fb_dev;
+  __u32 fb_dcookie;
+  __u32 fb_ino;
+  __u32 fb_dirino;
+  __u32 fb_dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fb_xdev;
- __u32 fb_xino;
- __u32 fb_generation;
+  __u32 fb_xdev;
+  __u32 fb_xino;
+  __u32 fb_generation;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_fhbase_new {
- __u8 fb_version;
- __u8 fb_auth_type;
- __u8 fb_fsid_type;
+  __u8 fb_version;
+  __u8 fb_auth_type;
+  __u8 fb_fsid_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fb_fileid_type;
- __u32 fb_auth[1];
+  __u8 fb_fileid_type;
+  __u32 fb_auth[1];
 };
 struct knfsd_fh {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int fh_size;
- union {
- struct nfs_fhbase_old fh_old;
- __u32 fh_pad[NFS4_FHSIZE/4];
+  unsigned int fh_size;
+  union {
+    struct nfs_fhbase_old fh_old;
+    __u32 fh_pad[NFS4_FHSIZE / 4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct nfs_fhbase_new fh_new;
- } fh_base;
+    struct nfs_fhbase_new fh_new;
+  } fh_base;
 };
 #define ofh_dcookie fh_base.fh_old.fb_dcookie
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -68,7 +68,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define fh_auth_type fh_base.fh_new.fb_auth_type
 #define fh_fileid_type fh_base.fh_new.fb_fileid_type
-#define fh_auth fh_base.fh_new.fb_auth
 #define fh_fsid fh_base.fh_new.fb_auth
+#define fh_auth fh_base.fh_new.fb_auth
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/nfsd/stats.h b/libc/kernel/uapi/linux/nfsd/stats.h
index 757b7d7..3c49bbc 100644
--- a/libc/kernel/uapi/linux/nfsd/stats.h
+++ b/libc/kernel/uapi/linux/nfsd/stats.h
@@ -19,6 +19,6 @@
 #ifndef _UAPILINUX_NFSD_STATS_H
 #define _UAPILINUX_NFSD_STATS_H
 #include <linux/nfs4.h>
-#define NFSD_USAGE_WRAP (HZ*1000000)
+#define NFSD_USAGE_WRAP (HZ * 1000000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 01c50cd..ae6d6d8 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -22,416 +22,436 @@
 #define NL80211_GENL_NAME "nl80211"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_commands {
- NL80211_CMD_UNSPEC,
- NL80211_CMD_GET_WIPHY,
- NL80211_CMD_SET_WIPHY,
+  NL80211_CMD_UNSPEC,
+  NL80211_CMD_GET_WIPHY,
+  NL80211_CMD_SET_WIPHY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_NEW_WIPHY,
- NL80211_CMD_DEL_WIPHY,
- NL80211_CMD_GET_INTERFACE,
- NL80211_CMD_SET_INTERFACE,
+  NL80211_CMD_NEW_WIPHY,
+  NL80211_CMD_DEL_WIPHY,
+  NL80211_CMD_GET_INTERFACE,
+  NL80211_CMD_SET_INTERFACE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_NEW_INTERFACE,
- NL80211_CMD_DEL_INTERFACE,
- NL80211_CMD_GET_KEY,
- NL80211_CMD_SET_KEY,
+  NL80211_CMD_NEW_INTERFACE,
+  NL80211_CMD_DEL_INTERFACE,
+  NL80211_CMD_GET_KEY,
+  NL80211_CMD_SET_KEY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_NEW_KEY,
- NL80211_CMD_DEL_KEY,
- NL80211_CMD_GET_BEACON,
- NL80211_CMD_SET_BEACON,
+  NL80211_CMD_NEW_KEY,
+  NL80211_CMD_DEL_KEY,
+  NL80211_CMD_GET_BEACON,
+  NL80211_CMD_SET_BEACON,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_START_AP,
- NL80211_CMD_NEW_BEACON = NL80211_CMD_START_AP,
- NL80211_CMD_STOP_AP,
- NL80211_CMD_DEL_BEACON = NL80211_CMD_STOP_AP,
+  NL80211_CMD_START_AP,
+  NL80211_CMD_NEW_BEACON = NL80211_CMD_START_AP,
+  NL80211_CMD_STOP_AP,
+  NL80211_CMD_DEL_BEACON = NL80211_CMD_STOP_AP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_GET_STATION,
- NL80211_CMD_SET_STATION,
- NL80211_CMD_NEW_STATION,
- NL80211_CMD_DEL_STATION,
+  NL80211_CMD_GET_STATION,
+  NL80211_CMD_SET_STATION,
+  NL80211_CMD_NEW_STATION,
+  NL80211_CMD_DEL_STATION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_GET_MPATH,
- NL80211_CMD_SET_MPATH,
- NL80211_CMD_NEW_MPATH,
- NL80211_CMD_DEL_MPATH,
+  NL80211_CMD_GET_MPATH,
+  NL80211_CMD_SET_MPATH,
+  NL80211_CMD_NEW_MPATH,
+  NL80211_CMD_DEL_MPATH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_SET_BSS,
- NL80211_CMD_SET_REG,
- NL80211_CMD_REQ_SET_REG,
- NL80211_CMD_GET_MESH_CONFIG,
+  NL80211_CMD_SET_BSS,
+  NL80211_CMD_SET_REG,
+  NL80211_CMD_REQ_SET_REG,
+  NL80211_CMD_GET_MESH_CONFIG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_SET_MESH_CONFIG,
- NL80211_CMD_SET_MGMT_EXTRA_IE  ,
- NL80211_CMD_GET_REG,
- NL80211_CMD_GET_SCAN,
+  NL80211_CMD_SET_MESH_CONFIG,
+  NL80211_CMD_SET_MGMT_EXTRA_IE,
+  NL80211_CMD_GET_REG,
+  NL80211_CMD_GET_SCAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_TRIGGER_SCAN,
- NL80211_CMD_NEW_SCAN_RESULTS,
- NL80211_CMD_SCAN_ABORTED,
- NL80211_CMD_REG_CHANGE,
+  NL80211_CMD_TRIGGER_SCAN,
+  NL80211_CMD_NEW_SCAN_RESULTS,
+  NL80211_CMD_SCAN_ABORTED,
+  NL80211_CMD_REG_CHANGE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_AUTHENTICATE,
- NL80211_CMD_ASSOCIATE,
- NL80211_CMD_DEAUTHENTICATE,
- NL80211_CMD_DISASSOCIATE,
+  NL80211_CMD_AUTHENTICATE,
+  NL80211_CMD_ASSOCIATE,
+  NL80211_CMD_DEAUTHENTICATE,
+  NL80211_CMD_DISASSOCIATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_MICHAEL_MIC_FAILURE,
- NL80211_CMD_REG_BEACON_HINT,
- NL80211_CMD_JOIN_IBSS,
- NL80211_CMD_LEAVE_IBSS,
+  NL80211_CMD_MICHAEL_MIC_FAILURE,
+  NL80211_CMD_REG_BEACON_HINT,
+  NL80211_CMD_JOIN_IBSS,
+  NL80211_CMD_LEAVE_IBSS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_TESTMODE,
- NL80211_CMD_CONNECT,
- NL80211_CMD_ROAM,
- NL80211_CMD_DISCONNECT,
+  NL80211_CMD_TESTMODE,
+  NL80211_CMD_CONNECT,
+  NL80211_CMD_ROAM,
+  NL80211_CMD_DISCONNECT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_SET_WIPHY_NETNS,
- NL80211_CMD_GET_SURVEY,
- NL80211_CMD_NEW_SURVEY_RESULTS,
- NL80211_CMD_SET_PMKSA,
+  NL80211_CMD_SET_WIPHY_NETNS,
+  NL80211_CMD_GET_SURVEY,
+  NL80211_CMD_NEW_SURVEY_RESULTS,
+  NL80211_CMD_SET_PMKSA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_DEL_PMKSA,
- NL80211_CMD_FLUSH_PMKSA,
- NL80211_CMD_REMAIN_ON_CHANNEL,
- NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
+  NL80211_CMD_DEL_PMKSA,
+  NL80211_CMD_FLUSH_PMKSA,
+  NL80211_CMD_REMAIN_ON_CHANNEL,
+  NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_SET_TX_BITRATE_MASK,
- NL80211_CMD_REGISTER_FRAME,
- NL80211_CMD_REGISTER_ACTION = NL80211_CMD_REGISTER_FRAME,
- NL80211_CMD_FRAME,
+  NL80211_CMD_SET_TX_BITRATE_MASK,
+  NL80211_CMD_REGISTER_FRAME,
+  NL80211_CMD_REGISTER_ACTION = NL80211_CMD_REGISTER_FRAME,
+  NL80211_CMD_FRAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_ACTION = NL80211_CMD_FRAME,
- NL80211_CMD_FRAME_TX_STATUS,
- NL80211_CMD_ACTION_TX_STATUS = NL80211_CMD_FRAME_TX_STATUS,
- NL80211_CMD_SET_POWER_SAVE,
+  NL80211_CMD_ACTION = NL80211_CMD_FRAME,
+  NL80211_CMD_FRAME_TX_STATUS,
+  NL80211_CMD_ACTION_TX_STATUS = NL80211_CMD_FRAME_TX_STATUS,
+  NL80211_CMD_SET_POWER_SAVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_GET_POWER_SAVE,
- NL80211_CMD_SET_CQM,
- NL80211_CMD_NOTIFY_CQM,
- NL80211_CMD_SET_CHANNEL,
+  NL80211_CMD_GET_POWER_SAVE,
+  NL80211_CMD_SET_CQM,
+  NL80211_CMD_NOTIFY_CQM,
+  NL80211_CMD_SET_CHANNEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_SET_WDS_PEER,
- NL80211_CMD_FRAME_WAIT_CANCEL,
- NL80211_CMD_JOIN_MESH,
- NL80211_CMD_LEAVE_MESH,
+  NL80211_CMD_SET_WDS_PEER,
+  NL80211_CMD_FRAME_WAIT_CANCEL,
+  NL80211_CMD_JOIN_MESH,
+  NL80211_CMD_LEAVE_MESH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_UNPROT_DEAUTHENTICATE,
- NL80211_CMD_UNPROT_DISASSOCIATE,
- NL80211_CMD_NEW_PEER_CANDIDATE,
- NL80211_CMD_GET_WOWLAN,
+  NL80211_CMD_UNPROT_DEAUTHENTICATE,
+  NL80211_CMD_UNPROT_DISASSOCIATE,
+  NL80211_CMD_NEW_PEER_CANDIDATE,
+  NL80211_CMD_GET_WOWLAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_SET_WOWLAN,
- NL80211_CMD_START_SCHED_SCAN,
- NL80211_CMD_STOP_SCHED_SCAN,
- NL80211_CMD_SCHED_SCAN_RESULTS,
+  NL80211_CMD_SET_WOWLAN,
+  NL80211_CMD_START_SCHED_SCAN,
+  NL80211_CMD_STOP_SCHED_SCAN,
+  NL80211_CMD_SCHED_SCAN_RESULTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_SCHED_SCAN_STOPPED,
- NL80211_CMD_SET_REKEY_OFFLOAD,
- NL80211_CMD_PMKSA_CANDIDATE,
- NL80211_CMD_TDLS_OPER,
+  NL80211_CMD_SCHED_SCAN_STOPPED,
+  NL80211_CMD_SET_REKEY_OFFLOAD,
+  NL80211_CMD_PMKSA_CANDIDATE,
+  NL80211_CMD_TDLS_OPER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_TDLS_MGMT,
- NL80211_CMD_UNEXPECTED_FRAME,
- NL80211_CMD_PROBE_CLIENT,
- NL80211_CMD_REGISTER_BEACONS,
+  NL80211_CMD_TDLS_MGMT,
+  NL80211_CMD_UNEXPECTED_FRAME,
+  NL80211_CMD_PROBE_CLIENT,
+  NL80211_CMD_REGISTER_BEACONS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_UNEXPECTED_4ADDR_FRAME,
- NL80211_CMD_SET_NOACK_MAP,
- NL80211_CMD_CH_SWITCH_NOTIFY,
- NL80211_CMD_START_P2P_DEVICE,
+  NL80211_CMD_UNEXPECTED_4ADDR_FRAME,
+  NL80211_CMD_SET_NOACK_MAP,
+  NL80211_CMD_CH_SWITCH_NOTIFY,
+  NL80211_CMD_START_P2P_DEVICE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_STOP_P2P_DEVICE,
- NL80211_CMD_CONN_FAILED,
- NL80211_CMD_SET_MCAST_RATE,
- NL80211_CMD_SET_MAC_ACL,
+  NL80211_CMD_STOP_P2P_DEVICE,
+  NL80211_CMD_CONN_FAILED,
+  NL80211_CMD_SET_MCAST_RATE,
+  NL80211_CMD_SET_MAC_ACL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_RADAR_DETECT,
- NL80211_CMD_GET_PROTOCOL_FEATURES,
- NL80211_CMD_UPDATE_FT_IES,
- NL80211_CMD_FT_EVENT,
+  NL80211_CMD_RADAR_DETECT,
+  NL80211_CMD_GET_PROTOCOL_FEATURES,
+  NL80211_CMD_UPDATE_FT_IES,
+  NL80211_CMD_FT_EVENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_CRIT_PROTOCOL_START,
- NL80211_CMD_CRIT_PROTOCOL_STOP,
- NL80211_CMD_GET_COALESCE,
- NL80211_CMD_SET_COALESCE,
+  NL80211_CMD_CRIT_PROTOCOL_START,
+  NL80211_CMD_CRIT_PROTOCOL_STOP,
+  NL80211_CMD_GET_COALESCE,
+  NL80211_CMD_SET_COALESCE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_CHANNEL_SWITCH,
- NL80211_CMD_VENDOR,
- NL80211_CMD_SET_QOS_MAP,
- __NL80211_CMD_AFTER_LAST,
+  NL80211_CMD_CHANNEL_SWITCH,
+  NL80211_CMD_VENDOR,
+  NL80211_CMD_SET_QOS_MAP,
+  NL80211_CMD_ADD_TX_TS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
+  NL80211_CMD_DEL_TX_TS,
+  __NL80211_CMD_AFTER_LAST,
+  NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS
 #define NL80211_CMD_SET_MGMT_EXTRA_IE NL80211_CMD_SET_MGMT_EXTRA_IE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_CMD_REG_CHANGE NL80211_CMD_REG_CHANGE
 #define NL80211_CMD_AUTHENTICATE NL80211_CMD_AUTHENTICATE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE
 #define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE
 #define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
 #define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG
 #define NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE NL80211_MESH_SETUP_IE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_attrs {
- NL80211_ATTR_UNSPEC,
+  NL80211_ATTR_UNSPEC,
+  NL80211_ATTR_WIPHY,
+  NL80211_ATTR_WIPHY_NAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WIPHY,
- NL80211_ATTR_WIPHY_NAME,
- NL80211_ATTR_IFINDEX,
- NL80211_ATTR_IFNAME,
+  NL80211_ATTR_IFINDEX,
+  NL80211_ATTR_IFNAME,
+  NL80211_ATTR_IFTYPE,
+  NL80211_ATTR_MAC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_IFTYPE,
- NL80211_ATTR_MAC,
- NL80211_ATTR_KEY_DATA,
- NL80211_ATTR_KEY_IDX,
+  NL80211_ATTR_KEY_DATA,
+  NL80211_ATTR_KEY_IDX,
+  NL80211_ATTR_KEY_CIPHER,
+  NL80211_ATTR_KEY_SEQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_KEY_CIPHER,
- NL80211_ATTR_KEY_SEQ,
- NL80211_ATTR_KEY_DEFAULT,
- NL80211_ATTR_BEACON_INTERVAL,
+  NL80211_ATTR_KEY_DEFAULT,
+  NL80211_ATTR_BEACON_INTERVAL,
+  NL80211_ATTR_DTIM_PERIOD,
+  NL80211_ATTR_BEACON_HEAD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_DTIM_PERIOD,
- NL80211_ATTR_BEACON_HEAD,
- NL80211_ATTR_BEACON_TAIL,
- NL80211_ATTR_STA_AID,
+  NL80211_ATTR_BEACON_TAIL,
+  NL80211_ATTR_STA_AID,
+  NL80211_ATTR_STA_FLAGS,
+  NL80211_ATTR_STA_LISTEN_INTERVAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_STA_FLAGS,
- NL80211_ATTR_STA_LISTEN_INTERVAL,
- NL80211_ATTR_STA_SUPPORTED_RATES,
- NL80211_ATTR_STA_VLAN,
+  NL80211_ATTR_STA_SUPPORTED_RATES,
+  NL80211_ATTR_STA_VLAN,
+  NL80211_ATTR_STA_INFO,
+  NL80211_ATTR_WIPHY_BANDS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_STA_INFO,
- NL80211_ATTR_WIPHY_BANDS,
- NL80211_ATTR_MNTR_FLAGS,
- NL80211_ATTR_MESH_ID,
+  NL80211_ATTR_MNTR_FLAGS,
+  NL80211_ATTR_MESH_ID,
+  NL80211_ATTR_STA_PLINK_ACTION,
+  NL80211_ATTR_MPATH_NEXT_HOP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_STA_PLINK_ACTION,
- NL80211_ATTR_MPATH_NEXT_HOP,
- NL80211_ATTR_MPATH_INFO,
- NL80211_ATTR_BSS_CTS_PROT,
+  NL80211_ATTR_MPATH_INFO,
+  NL80211_ATTR_BSS_CTS_PROT,
+  NL80211_ATTR_BSS_SHORT_PREAMBLE,
+  NL80211_ATTR_BSS_SHORT_SLOT_TIME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_BSS_SHORT_PREAMBLE,
- NL80211_ATTR_BSS_SHORT_SLOT_TIME,
- NL80211_ATTR_HT_CAPABILITY,
- NL80211_ATTR_SUPPORTED_IFTYPES,
+  NL80211_ATTR_HT_CAPABILITY,
+  NL80211_ATTR_SUPPORTED_IFTYPES,
+  NL80211_ATTR_REG_ALPHA2,
+  NL80211_ATTR_REG_RULES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_REG_ALPHA2,
- NL80211_ATTR_REG_RULES,
- NL80211_ATTR_MESH_CONFIG,
- NL80211_ATTR_BSS_BASIC_RATES,
+  NL80211_ATTR_MESH_CONFIG,
+  NL80211_ATTR_BSS_BASIC_RATES,
+  NL80211_ATTR_WIPHY_TXQ_PARAMS,
+  NL80211_ATTR_WIPHY_FREQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WIPHY_TXQ_PARAMS,
- NL80211_ATTR_WIPHY_FREQ,
- NL80211_ATTR_WIPHY_CHANNEL_TYPE,
- NL80211_ATTR_KEY_DEFAULT_MGMT,
+  NL80211_ATTR_WIPHY_CHANNEL_TYPE,
+  NL80211_ATTR_KEY_DEFAULT_MGMT,
+  NL80211_ATTR_MGMT_SUBTYPE,
+  NL80211_ATTR_IE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_MGMT_SUBTYPE,
- NL80211_ATTR_IE,
- NL80211_ATTR_MAX_NUM_SCAN_SSIDS,
- NL80211_ATTR_SCAN_FREQUENCIES,
+  NL80211_ATTR_MAX_NUM_SCAN_SSIDS,
+  NL80211_ATTR_SCAN_FREQUENCIES,
+  NL80211_ATTR_SCAN_SSIDS,
+  NL80211_ATTR_GENERATION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_SCAN_SSIDS,
- NL80211_ATTR_GENERATION,
- NL80211_ATTR_BSS,
- NL80211_ATTR_REG_INITIATOR,
+  NL80211_ATTR_BSS,
+  NL80211_ATTR_REG_INITIATOR,
+  NL80211_ATTR_REG_TYPE,
+  NL80211_ATTR_SUPPORTED_COMMANDS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_REG_TYPE,
- NL80211_ATTR_SUPPORTED_COMMANDS,
- NL80211_ATTR_FRAME,
- NL80211_ATTR_SSID,
+  NL80211_ATTR_FRAME,
+  NL80211_ATTR_SSID,
+  NL80211_ATTR_AUTH_TYPE,
+  NL80211_ATTR_REASON_CODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_AUTH_TYPE,
- NL80211_ATTR_REASON_CODE,
- NL80211_ATTR_KEY_TYPE,
- NL80211_ATTR_MAX_SCAN_IE_LEN,
+  NL80211_ATTR_KEY_TYPE,
+  NL80211_ATTR_MAX_SCAN_IE_LEN,
+  NL80211_ATTR_CIPHER_SUITES,
+  NL80211_ATTR_FREQ_BEFORE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_CIPHER_SUITES,
- NL80211_ATTR_FREQ_BEFORE,
- NL80211_ATTR_FREQ_AFTER,
- NL80211_ATTR_FREQ_FIXED,
+  NL80211_ATTR_FREQ_AFTER,
+  NL80211_ATTR_FREQ_FIXED,
+  NL80211_ATTR_WIPHY_RETRY_SHORT,
+  NL80211_ATTR_WIPHY_RETRY_LONG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WIPHY_RETRY_SHORT,
- NL80211_ATTR_WIPHY_RETRY_LONG,
- NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
- NL80211_ATTR_WIPHY_RTS_THRESHOLD,
+  NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
+  NL80211_ATTR_WIPHY_RTS_THRESHOLD,
+  NL80211_ATTR_TIMED_OUT,
+  NL80211_ATTR_USE_MFP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_TIMED_OUT,
- NL80211_ATTR_USE_MFP,
- NL80211_ATTR_STA_FLAGS2,
- NL80211_ATTR_CONTROL_PORT,
+  NL80211_ATTR_STA_FLAGS2,
+  NL80211_ATTR_CONTROL_PORT,
+  NL80211_ATTR_TESTDATA,
+  NL80211_ATTR_PRIVACY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_TESTDATA,
- NL80211_ATTR_PRIVACY,
- NL80211_ATTR_DISCONNECTED_BY_AP,
- NL80211_ATTR_STATUS_CODE,
+  NL80211_ATTR_DISCONNECTED_BY_AP,
+  NL80211_ATTR_STATUS_CODE,
+  NL80211_ATTR_CIPHER_SUITES_PAIRWISE,
+  NL80211_ATTR_CIPHER_SUITE_GROUP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_CIPHER_SUITES_PAIRWISE,
- NL80211_ATTR_CIPHER_SUITE_GROUP,
- NL80211_ATTR_WPA_VERSIONS,
- NL80211_ATTR_AKM_SUITES,
+  NL80211_ATTR_WPA_VERSIONS,
+  NL80211_ATTR_AKM_SUITES,
+  NL80211_ATTR_REQ_IE,
+  NL80211_ATTR_RESP_IE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_REQ_IE,
- NL80211_ATTR_RESP_IE,
- NL80211_ATTR_PREV_BSSID,
- NL80211_ATTR_KEY,
+  NL80211_ATTR_PREV_BSSID,
+  NL80211_ATTR_KEY,
+  NL80211_ATTR_KEYS,
+  NL80211_ATTR_PID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_KEYS,
- NL80211_ATTR_PID,
- NL80211_ATTR_4ADDR,
- NL80211_ATTR_SURVEY_INFO,
+  NL80211_ATTR_4ADDR,
+  NL80211_ATTR_SURVEY_INFO,
+  NL80211_ATTR_PMKID,
+  NL80211_ATTR_MAX_NUM_PMKIDS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_PMKID,
- NL80211_ATTR_MAX_NUM_PMKIDS,
- NL80211_ATTR_DURATION,
- NL80211_ATTR_COOKIE,
+  NL80211_ATTR_DURATION,
+  NL80211_ATTR_COOKIE,
+  NL80211_ATTR_WIPHY_COVERAGE_CLASS,
+  NL80211_ATTR_TX_RATES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WIPHY_COVERAGE_CLASS,
- NL80211_ATTR_TX_RATES,
- NL80211_ATTR_FRAME_MATCH,
- NL80211_ATTR_ACK,
+  NL80211_ATTR_FRAME_MATCH,
+  NL80211_ATTR_ACK,
+  NL80211_ATTR_PS_STATE,
+  NL80211_ATTR_CQM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_PS_STATE,
- NL80211_ATTR_CQM,
- NL80211_ATTR_LOCAL_STATE_CHANGE,
- NL80211_ATTR_AP_ISOLATE,
+  NL80211_ATTR_LOCAL_STATE_CHANGE,
+  NL80211_ATTR_AP_ISOLATE,
+  NL80211_ATTR_WIPHY_TX_POWER_SETTING,
+  NL80211_ATTR_WIPHY_TX_POWER_LEVEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WIPHY_TX_POWER_SETTING,
- NL80211_ATTR_WIPHY_TX_POWER_LEVEL,
- NL80211_ATTR_TX_FRAME_TYPES,
- NL80211_ATTR_RX_FRAME_TYPES,
+  NL80211_ATTR_TX_FRAME_TYPES,
+  NL80211_ATTR_RX_FRAME_TYPES,
+  NL80211_ATTR_FRAME_TYPE,
+  NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_FRAME_TYPE,
- NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
- NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
- NL80211_ATTR_SUPPORT_IBSS_RSN,
+  NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
+  NL80211_ATTR_SUPPORT_IBSS_RSN,
+  NL80211_ATTR_WIPHY_ANTENNA_TX,
+  NL80211_ATTR_WIPHY_ANTENNA_RX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WIPHY_ANTENNA_TX,
- NL80211_ATTR_WIPHY_ANTENNA_RX,
- NL80211_ATTR_MCAST_RATE,
- NL80211_ATTR_OFFCHANNEL_TX_OK,
+  NL80211_ATTR_MCAST_RATE,
+  NL80211_ATTR_OFFCHANNEL_TX_OK,
+  NL80211_ATTR_BSS_HT_OPMODE,
+  NL80211_ATTR_KEY_DEFAULT_TYPES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_BSS_HT_OPMODE,
- NL80211_ATTR_KEY_DEFAULT_TYPES,
- NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION,
- NL80211_ATTR_MESH_SETUP,
+  NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION,
+  NL80211_ATTR_MESH_SETUP,
+  NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
+  NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
- NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
- NL80211_ATTR_SUPPORT_MESH_AUTH,
- NL80211_ATTR_STA_PLINK_STATE,
+  NL80211_ATTR_SUPPORT_MESH_AUTH,
+  NL80211_ATTR_STA_PLINK_STATE,
+  NL80211_ATTR_WOWLAN_TRIGGERS,
+  NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WOWLAN_TRIGGERS,
- NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED,
- NL80211_ATTR_SCHED_SCAN_INTERVAL,
- NL80211_ATTR_INTERFACE_COMBINATIONS,
+  NL80211_ATTR_SCHED_SCAN_INTERVAL,
+  NL80211_ATTR_INTERFACE_COMBINATIONS,
+  NL80211_ATTR_SOFTWARE_IFTYPES,
+  NL80211_ATTR_REKEY_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_SOFTWARE_IFTYPES,
- NL80211_ATTR_REKEY_DATA,
- NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS,
- NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN,
+  NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS,
+  NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN,
+  NL80211_ATTR_SCAN_SUPP_RATES,
+  NL80211_ATTR_HIDDEN_SSID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_SCAN_SUPP_RATES,
- NL80211_ATTR_HIDDEN_SSID,
- NL80211_ATTR_IE_PROBE_RESP,
- NL80211_ATTR_IE_ASSOC_RESP,
+  NL80211_ATTR_IE_PROBE_RESP,
+  NL80211_ATTR_IE_ASSOC_RESP,
+  NL80211_ATTR_STA_WME,
+  NL80211_ATTR_SUPPORT_AP_UAPSD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_STA_WME,
- NL80211_ATTR_SUPPORT_AP_UAPSD,
- NL80211_ATTR_ROAM_SUPPORT,
- NL80211_ATTR_SCHED_SCAN_MATCH,
+  NL80211_ATTR_ROAM_SUPPORT,
+  NL80211_ATTR_SCHED_SCAN_MATCH,
+  NL80211_ATTR_MAX_MATCH_SETS,
+  NL80211_ATTR_PMKSA_CANDIDATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_MAX_MATCH_SETS,
- NL80211_ATTR_PMKSA_CANDIDATE,
- NL80211_ATTR_TX_NO_CCK_RATE,
- NL80211_ATTR_TDLS_ACTION,
+  NL80211_ATTR_TX_NO_CCK_RATE,
+  NL80211_ATTR_TDLS_ACTION,
+  NL80211_ATTR_TDLS_DIALOG_TOKEN,
+  NL80211_ATTR_TDLS_OPERATION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_TDLS_DIALOG_TOKEN,
- NL80211_ATTR_TDLS_OPERATION,
- NL80211_ATTR_TDLS_SUPPORT,
- NL80211_ATTR_TDLS_EXTERNAL_SETUP,
+  NL80211_ATTR_TDLS_SUPPORT,
+  NL80211_ATTR_TDLS_EXTERNAL_SETUP,
+  NL80211_ATTR_DEVICE_AP_SME,
+  NL80211_ATTR_DONT_WAIT_FOR_ACK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_DEVICE_AP_SME,
- NL80211_ATTR_DONT_WAIT_FOR_ACK,
- NL80211_ATTR_FEATURE_FLAGS,
- NL80211_ATTR_PROBE_RESP_OFFLOAD,
+  NL80211_ATTR_FEATURE_FLAGS,
+  NL80211_ATTR_PROBE_RESP_OFFLOAD,
+  NL80211_ATTR_PROBE_RESP,
+  NL80211_ATTR_DFS_REGION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_PROBE_RESP,
- NL80211_ATTR_DFS_REGION,
- NL80211_ATTR_DISABLE_HT,
- NL80211_ATTR_HT_CAPABILITY_MASK,
+  NL80211_ATTR_DISABLE_HT,
+  NL80211_ATTR_HT_CAPABILITY_MASK,
+  NL80211_ATTR_NOACK_MAP,
+  NL80211_ATTR_INACTIVITY_TIMEOUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_NOACK_MAP,
- NL80211_ATTR_INACTIVITY_TIMEOUT,
- NL80211_ATTR_RX_SIGNAL_DBM,
- NL80211_ATTR_BG_SCAN_PERIOD,
+  NL80211_ATTR_RX_SIGNAL_DBM,
+  NL80211_ATTR_BG_SCAN_PERIOD,
+  NL80211_ATTR_WDEV,
+  NL80211_ATTR_USER_REG_HINT_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_WDEV,
- NL80211_ATTR_USER_REG_HINT_TYPE,
- NL80211_ATTR_CONN_FAILED_REASON,
- NL80211_ATTR_SAE_DATA,
+  NL80211_ATTR_CONN_FAILED_REASON,
+  NL80211_ATTR_SAE_DATA,
+  NL80211_ATTR_VHT_CAPABILITY,
+  NL80211_ATTR_SCAN_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_VHT_CAPABILITY,
- NL80211_ATTR_SCAN_FLAGS,
- NL80211_ATTR_CHANNEL_WIDTH,
- NL80211_ATTR_CENTER_FREQ1,
+  NL80211_ATTR_CHANNEL_WIDTH,
+  NL80211_ATTR_CENTER_FREQ1,
+  NL80211_ATTR_CENTER_FREQ2,
+  NL80211_ATTR_P2P_CTWINDOW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_CENTER_FREQ2,
- NL80211_ATTR_P2P_CTWINDOW,
- NL80211_ATTR_P2P_OPPPS,
- NL80211_ATTR_LOCAL_MESH_POWER_MODE,
+  NL80211_ATTR_P2P_OPPPS,
+  NL80211_ATTR_LOCAL_MESH_POWER_MODE,
+  NL80211_ATTR_ACL_POLICY,
+  NL80211_ATTR_MAC_ADDRS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_ACL_POLICY,
- NL80211_ATTR_MAC_ADDRS,
- NL80211_ATTR_MAC_ACL_MAX,
- NL80211_ATTR_RADAR_EVENT,
+  NL80211_ATTR_MAC_ACL_MAX,
+  NL80211_ATTR_RADAR_EVENT,
+  NL80211_ATTR_EXT_CAPA,
+  NL80211_ATTR_EXT_CAPA_MASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_EXT_CAPA,
- NL80211_ATTR_EXT_CAPA_MASK,
- NL80211_ATTR_STA_CAPABILITY,
- NL80211_ATTR_STA_EXT_CAPABILITY,
+  NL80211_ATTR_STA_CAPABILITY,
+  NL80211_ATTR_STA_EXT_CAPABILITY,
+  NL80211_ATTR_PROTOCOL_FEATURES,
+  NL80211_ATTR_SPLIT_WIPHY_DUMP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_PROTOCOL_FEATURES,
- NL80211_ATTR_SPLIT_WIPHY_DUMP,
- NL80211_ATTR_DISABLE_VHT,
- NL80211_ATTR_VHT_CAPABILITY_MASK,
+  NL80211_ATTR_DISABLE_VHT,
+  NL80211_ATTR_VHT_CAPABILITY_MASK,
+  NL80211_ATTR_MDID,
+  NL80211_ATTR_IE_RIC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_MDID,
- NL80211_ATTR_IE_RIC,
- NL80211_ATTR_CRIT_PROT_ID,
- NL80211_ATTR_MAX_CRIT_PROT_DURATION,
+  NL80211_ATTR_CRIT_PROT_ID,
+  NL80211_ATTR_MAX_CRIT_PROT_DURATION,
+  NL80211_ATTR_PEER_AID,
+  NL80211_ATTR_COALESCE_RULE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_PEER_AID,
- NL80211_ATTR_COALESCE_RULE,
- NL80211_ATTR_CH_SWITCH_COUNT,
- NL80211_ATTR_CH_SWITCH_BLOCK_TX,
+  NL80211_ATTR_CH_SWITCH_COUNT,
+  NL80211_ATTR_CH_SWITCH_BLOCK_TX,
+  NL80211_ATTR_CSA_IES,
+  NL80211_ATTR_CSA_C_OFF_BEACON,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_CSA_IES,
- NL80211_ATTR_CSA_C_OFF_BEACON,
- NL80211_ATTR_CSA_C_OFF_PRESP,
- NL80211_ATTR_RXMGMT_FLAGS,
+  NL80211_ATTR_CSA_C_OFF_PRESP,
+  NL80211_ATTR_RXMGMT_FLAGS,
+  NL80211_ATTR_STA_SUPPORTED_CHANNELS,
+  NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_STA_SUPPORTED_CHANNELS,
- NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES,
- NL80211_ATTR_HANDLE_DFS,
- NL80211_ATTR_SUPPORT_5_MHZ,
+  NL80211_ATTR_HANDLE_DFS,
+  NL80211_ATTR_SUPPORT_5_MHZ,
+  NL80211_ATTR_SUPPORT_10_MHZ,
+  NL80211_ATTR_OPMODE_NOTIF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_SUPPORT_10_MHZ,
- NL80211_ATTR_OPMODE_NOTIF,
- NL80211_ATTR_VENDOR_ID,
- NL80211_ATTR_VENDOR_SUBCMD,
+  NL80211_ATTR_VENDOR_ID,
+  NL80211_ATTR_VENDOR_SUBCMD,
+  NL80211_ATTR_VENDOR_DATA,
+  NL80211_ATTR_VENDOR_EVENTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_VENDOR_DATA,
- NL80211_ATTR_VENDOR_EVENTS,
- NL80211_ATTR_QOS_MAP,
- __NL80211_ATTR_AFTER_LAST,
+  NL80211_ATTR_QOS_MAP,
+  NL80211_ATTR_MAC_HINT,
+  NL80211_ATTR_WIPHY_FREQ_HINT,
+  NL80211_ATTR_MAX_AP_ASSOC_STA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
+  NL80211_ATTR_TDLS_PEER_CAPABILITY,
+  NL80211_ATTR_IFACE_SOCKET_OWNER,
+  NL80211_ATTR_CSA_C_OFFSETS_TX,
+  NL80211_ATTR_MAX_CSA_COUNTERS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_ATTR_TDLS_INITIATOR,
+  NL80211_ATTR_USE_RRM,
+  NL80211_ATTR_WIPHY_DYN_ACK,
+  NL80211_ATTR_TSID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_ATTR_USER_PRIO,
+  NL80211_ATTR_ADMITTED_TIME,
+  NL80211_ATTR_SMPS_MODE,
+  __NL80211_ATTR_AFTER_LAST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
 };
 #define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION
 #define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG
@@ -476,383 +496,393 @@
 #define NL80211_MAX_NR_AKM_SUITES 2
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NL80211_SCAN_RSSI_THOLD_OFF -300
+#define NL80211_SCAN_RSSI_THOLD_OFF - 300
 #define NL80211_CQM_TXE_MAX_INTVL 1800
 enum nl80211_iftype {
- NL80211_IFTYPE_UNSPECIFIED,
+  NL80211_IFTYPE_UNSPECIFIED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_IFTYPE_ADHOC,
- NL80211_IFTYPE_STATION,
- NL80211_IFTYPE_AP,
- NL80211_IFTYPE_AP_VLAN,
+  NL80211_IFTYPE_ADHOC,
+  NL80211_IFTYPE_STATION,
+  NL80211_IFTYPE_AP,
+  NL80211_IFTYPE_AP_VLAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_IFTYPE_WDS,
- NL80211_IFTYPE_MONITOR,
- NL80211_IFTYPE_MESH_POINT,
- NL80211_IFTYPE_P2P_CLIENT,
+  NL80211_IFTYPE_WDS,
+  NL80211_IFTYPE_MONITOR,
+  NL80211_IFTYPE_MESH_POINT,
+  NL80211_IFTYPE_P2P_CLIENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_IFTYPE_P2P_GO,
- NL80211_IFTYPE_P2P_DEVICE,
- NUM_NL80211_IFTYPES,
- NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
+  NL80211_IFTYPE_P2P_GO,
+  NL80211_IFTYPE_P2P_DEVICE,
+  NUM_NL80211_IFTYPES,
+  NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_sta_flags {
- __NL80211_STA_FLAG_INVALID,
- NL80211_STA_FLAG_AUTHORIZED,
+  __NL80211_STA_FLAG_INVALID,
+  NL80211_STA_FLAG_AUTHORIZED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_FLAG_SHORT_PREAMBLE,
- NL80211_STA_FLAG_WME,
- NL80211_STA_FLAG_MFP,
- NL80211_STA_FLAG_AUTHENTICATED,
+  NL80211_STA_FLAG_SHORT_PREAMBLE,
+  NL80211_STA_FLAG_WME,
+  NL80211_STA_FLAG_MFP,
+  NL80211_STA_FLAG_AUTHENTICATED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_FLAG_TDLS_PEER,
- NL80211_STA_FLAG_ASSOCIATED,
- __NL80211_STA_FLAG_AFTER_LAST,
- NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1
+  NL80211_STA_FLAG_TDLS_PEER,
+  NL80211_STA_FLAG_ASSOCIATED,
+  __NL80211_STA_FLAG_AFTER_LAST,
+  NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NL80211_STA_FLAG_MAX_OLD_API NL80211_STA_FLAG_TDLS_PEER
 struct nl80211_sta_flag_update {
- __u32 mask;
+  __u32 mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 set;
+  __u32 set;
 } __attribute__((packed));
 enum nl80211_rate_info {
- __NL80211_RATE_INFO_INVALID,
+  __NL80211_RATE_INFO_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_RATE_INFO_BITRATE,
- NL80211_RATE_INFO_MCS,
- NL80211_RATE_INFO_40_MHZ_WIDTH,
- NL80211_RATE_INFO_SHORT_GI,
+  NL80211_RATE_INFO_BITRATE,
+  NL80211_RATE_INFO_MCS,
+  NL80211_RATE_INFO_40_MHZ_WIDTH,
+  NL80211_RATE_INFO_SHORT_GI,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_RATE_INFO_BITRATE32,
- NL80211_RATE_INFO_VHT_MCS,
- NL80211_RATE_INFO_VHT_NSS,
- NL80211_RATE_INFO_80_MHZ_WIDTH,
+  NL80211_RATE_INFO_BITRATE32,
+  NL80211_RATE_INFO_VHT_MCS,
+  NL80211_RATE_INFO_VHT_NSS,
+  NL80211_RATE_INFO_80_MHZ_WIDTH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_RATE_INFO_80P80_MHZ_WIDTH,
- NL80211_RATE_INFO_160_MHZ_WIDTH,
- __NL80211_RATE_INFO_AFTER_LAST,
- NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
+  NL80211_RATE_INFO_80P80_MHZ_WIDTH,
+  NL80211_RATE_INFO_160_MHZ_WIDTH,
+  __NL80211_RATE_INFO_AFTER_LAST,
+  NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_sta_bss_param {
- __NL80211_STA_BSS_PARAM_INVALID,
- NL80211_STA_BSS_PARAM_CTS_PROT,
+  __NL80211_STA_BSS_PARAM_INVALID,
+  NL80211_STA_BSS_PARAM_CTS_PROT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_BSS_PARAM_SHORT_PREAMBLE,
- NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME,
- NL80211_STA_BSS_PARAM_DTIM_PERIOD,
- NL80211_STA_BSS_PARAM_BEACON_INTERVAL,
+  NL80211_STA_BSS_PARAM_SHORT_PREAMBLE,
+  NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME,
+  NL80211_STA_BSS_PARAM_DTIM_PERIOD,
+  NL80211_STA_BSS_PARAM_BEACON_INTERVAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_STA_BSS_PARAM_AFTER_LAST,
- NL80211_STA_BSS_PARAM_MAX = __NL80211_STA_BSS_PARAM_AFTER_LAST - 1
+  __NL80211_STA_BSS_PARAM_AFTER_LAST,
+  NL80211_STA_BSS_PARAM_MAX = __NL80211_STA_BSS_PARAM_AFTER_LAST - 1
 };
 enum nl80211_sta_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_STA_INFO_INVALID,
- NL80211_STA_INFO_INACTIVE_TIME,
- NL80211_STA_INFO_RX_BYTES,
- NL80211_STA_INFO_TX_BYTES,
+  __NL80211_STA_INFO_INVALID,
+  NL80211_STA_INFO_INACTIVE_TIME,
+  NL80211_STA_INFO_RX_BYTES,
+  NL80211_STA_INFO_TX_BYTES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_INFO_LLID,
- NL80211_STA_INFO_PLID,
- NL80211_STA_INFO_PLINK_STATE,
- NL80211_STA_INFO_SIGNAL,
+  NL80211_STA_INFO_LLID,
+  NL80211_STA_INFO_PLID,
+  NL80211_STA_INFO_PLINK_STATE,
+  NL80211_STA_INFO_SIGNAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_INFO_TX_BITRATE,
- NL80211_STA_INFO_RX_PACKETS,
- NL80211_STA_INFO_TX_PACKETS,
- NL80211_STA_INFO_TX_RETRIES,
+  NL80211_STA_INFO_TX_BITRATE,
+  NL80211_STA_INFO_RX_PACKETS,
+  NL80211_STA_INFO_TX_PACKETS,
+  NL80211_STA_INFO_TX_RETRIES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_INFO_TX_FAILED,
- NL80211_STA_INFO_SIGNAL_AVG,
- NL80211_STA_INFO_RX_BITRATE,
- NL80211_STA_INFO_BSS_PARAM,
+  NL80211_STA_INFO_TX_FAILED,
+  NL80211_STA_INFO_SIGNAL_AVG,
+  NL80211_STA_INFO_RX_BITRATE,
+  NL80211_STA_INFO_BSS_PARAM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_INFO_CONNECTED_TIME,
- NL80211_STA_INFO_STA_FLAGS,
- NL80211_STA_INFO_BEACON_LOSS,
- NL80211_STA_INFO_T_OFFSET,
+  NL80211_STA_INFO_CONNECTED_TIME,
+  NL80211_STA_INFO_STA_FLAGS,
+  NL80211_STA_INFO_BEACON_LOSS,
+  NL80211_STA_INFO_T_OFFSET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_INFO_LOCAL_PM,
- NL80211_STA_INFO_PEER_PM,
- NL80211_STA_INFO_NONPEER_PM,
- NL80211_STA_INFO_RX_BYTES64,
+  NL80211_STA_INFO_LOCAL_PM,
+  NL80211_STA_INFO_PEER_PM,
+  NL80211_STA_INFO_NONPEER_PM,
+  NL80211_STA_INFO_RX_BYTES64,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_INFO_TX_BYTES64,
- NL80211_STA_INFO_CHAIN_SIGNAL,
- NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
- __NL80211_STA_INFO_AFTER_LAST,
+  NL80211_STA_INFO_TX_BYTES64,
+  NL80211_STA_INFO_CHAIN_SIGNAL,
+  NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
+  NL80211_STA_INFO_EXPECTED_THROUGHPUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
+  __NL80211_STA_INFO_AFTER_LAST,
+  NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
 };
 enum nl80211_mpath_flags {
- NL80211_MPATH_FLAG_ACTIVE = 1<<0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MPATH_FLAG_RESOLVING = 1<<1,
- NL80211_MPATH_FLAG_SN_VALID = 1<<2,
- NL80211_MPATH_FLAG_FIXED = 1<<3,
- NL80211_MPATH_FLAG_RESOLVED = 1<<4,
+  NL80211_MPATH_FLAG_ACTIVE = 1 << 0,
+  NL80211_MPATH_FLAG_RESOLVING = 1 << 1,
+  NL80211_MPATH_FLAG_SN_VALID = 1 << 2,
+  NL80211_MPATH_FLAG_FIXED = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_MPATH_FLAG_RESOLVED = 1 << 4,
 };
 enum nl80211_mpath_info {
- __NL80211_MPATH_INFO_INVALID,
- NL80211_MPATH_INFO_FRAME_QLEN,
+  __NL80211_MPATH_INFO_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MPATH_INFO_SN,
- NL80211_MPATH_INFO_METRIC,
- NL80211_MPATH_INFO_EXPTIME,
- NL80211_MPATH_INFO_FLAGS,
+  NL80211_MPATH_INFO_FRAME_QLEN,
+  NL80211_MPATH_INFO_SN,
+  NL80211_MPATH_INFO_METRIC,
+  NL80211_MPATH_INFO_EXPTIME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MPATH_INFO_DISCOVERY_TIMEOUT,
- NL80211_MPATH_INFO_DISCOVERY_RETRIES,
- __NL80211_MPATH_INFO_AFTER_LAST,
- NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
+  NL80211_MPATH_INFO_FLAGS,
+  NL80211_MPATH_INFO_DISCOVERY_TIMEOUT,
+  NL80211_MPATH_INFO_DISCOVERY_RETRIES,
+  __NL80211_MPATH_INFO_AFTER_LAST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
 };
 enum nl80211_band_attr {
- __NL80211_BAND_ATTR_INVALID,
- NL80211_BAND_ATTR_FREQS,
+  __NL80211_BAND_ATTR_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BAND_ATTR_RATES,
- NL80211_BAND_ATTR_HT_MCS_SET,
- NL80211_BAND_ATTR_HT_CAPA,
- NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
+  NL80211_BAND_ATTR_FREQS,
+  NL80211_BAND_ATTR_RATES,
+  NL80211_BAND_ATTR_HT_MCS_SET,
+  NL80211_BAND_ATTR_HT_CAPA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
- NL80211_BAND_ATTR_VHT_MCS_SET,
- NL80211_BAND_ATTR_VHT_CAPA,
- __NL80211_BAND_ATTR_AFTER_LAST,
+  NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
+  NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
+  NL80211_BAND_ATTR_VHT_MCS_SET,
+  NL80211_BAND_ATTR_VHT_CAPA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
+  __NL80211_BAND_ATTR_AFTER_LAST,
+  NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
 };
 #define NL80211_BAND_ATTR_HT_CAPA NL80211_BAND_ATTR_HT_CAPA
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_frequency_attr {
+  __NL80211_FREQUENCY_ATTR_INVALID,
+  NL80211_FREQUENCY_ATTR_FREQ,
+  NL80211_FREQUENCY_ATTR_DISABLED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_FREQUENCY_ATTR_INVALID,
- NL80211_FREQUENCY_ATTR_FREQ,
- NL80211_FREQUENCY_ATTR_DISABLED,
- NL80211_FREQUENCY_ATTR_NO_IR,
+  NL80211_FREQUENCY_ATTR_NO_IR,
+  __NL80211_FREQUENCY_ATTR_NO_IBSS,
+  NL80211_FREQUENCY_ATTR_RADAR,
+  NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_FREQUENCY_ATTR_NO_IBSS,
- NL80211_FREQUENCY_ATTR_RADAR,
- NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
- NL80211_FREQUENCY_ATTR_DFS_STATE,
+  NL80211_FREQUENCY_ATTR_DFS_STATE,
+  NL80211_FREQUENCY_ATTR_DFS_TIME,
+  NL80211_FREQUENCY_ATTR_NO_HT40_MINUS,
+  NL80211_FREQUENCY_ATTR_NO_HT40_PLUS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_FREQUENCY_ATTR_DFS_TIME,
- NL80211_FREQUENCY_ATTR_NO_HT40_MINUS,
- NL80211_FREQUENCY_ATTR_NO_HT40_PLUS,
- NL80211_FREQUENCY_ATTR_NO_80MHZ,
+  NL80211_FREQUENCY_ATTR_NO_80MHZ,
+  NL80211_FREQUENCY_ATTR_NO_160MHZ,
+  NL80211_FREQUENCY_ATTR_DFS_CAC_TIME,
+  NL80211_FREQUENCY_ATTR_INDOOR_ONLY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_FREQUENCY_ATTR_NO_160MHZ,
- __NL80211_FREQUENCY_ATTR_AFTER_LAST,
- NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
+  NL80211_FREQUENCY_ATTR_GO_CONCURRENT,
+  NL80211_FREQUENCY_ATTR_NO_20MHZ,
+  NL80211_FREQUENCY_ATTR_NO_10MHZ,
+  __NL80211_FREQUENCY_ATTR_AFTER_LAST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_FREQUENCY_ATTR_MAX_TX_POWER NL80211_FREQUENCY_ATTR_MAX_TX_POWER
 #define NL80211_FREQUENCY_ATTR_PASSIVE_SCAN NL80211_FREQUENCY_ATTR_NO_IR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_FREQUENCY_ATTR_NO_IBSS NL80211_FREQUENCY_ATTR_NO_IR
 #define NL80211_FREQUENCY_ATTR_NO_IR NL80211_FREQUENCY_ATTR_NO_IR
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_bitrate_attr {
- __NL80211_BITRATE_ATTR_INVALID,
- NL80211_BITRATE_ATTR_RATE,
- NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE,
+  __NL80211_BITRATE_ATTR_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_BITRATE_ATTR_AFTER_LAST,
- NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1
+  NL80211_BITRATE_ATTR_RATE,
+  NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE,
+  __NL80211_BITRATE_ATTR_AFTER_LAST,
+  NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_reg_initiator {
+  NL80211_REGDOM_SET_BY_CORE,
+  NL80211_REGDOM_SET_BY_USER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_REGDOM_SET_BY_CORE,
- NL80211_REGDOM_SET_BY_USER,
- NL80211_REGDOM_SET_BY_DRIVER,
- NL80211_REGDOM_SET_BY_COUNTRY_IE,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_REGDOM_SET_BY_DRIVER,
+  NL80211_REGDOM_SET_BY_COUNTRY_IE,
 };
 enum nl80211_reg_type {
- NL80211_REGDOM_TYPE_COUNTRY,
- NL80211_REGDOM_TYPE_WORLD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_REGDOM_TYPE_CUSTOM_WORLD,
- NL80211_REGDOM_TYPE_INTERSECTION,
+  NL80211_REGDOM_TYPE_COUNTRY,
+  NL80211_REGDOM_TYPE_WORLD,
+  NL80211_REGDOM_TYPE_CUSTOM_WORLD,
+  NL80211_REGDOM_TYPE_INTERSECTION,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_reg_rule_attr {
+  __NL80211_REG_RULE_ATTR_INVALID,
+  NL80211_ATTR_REG_RULE_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_REG_RULE_ATTR_INVALID,
- NL80211_ATTR_REG_RULE_FLAGS,
- NL80211_ATTR_FREQ_RANGE_START,
- NL80211_ATTR_FREQ_RANGE_END,
+  NL80211_ATTR_FREQ_RANGE_START,
+  NL80211_ATTR_FREQ_RANGE_END,
+  NL80211_ATTR_FREQ_RANGE_MAX_BW,
+  NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_FREQ_RANGE_MAX_BW,
- NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN,
- NL80211_ATTR_POWER_RULE_MAX_EIRP,
- __NL80211_REG_RULE_ATTR_AFTER_LAST,
+  NL80211_ATTR_POWER_RULE_MAX_EIRP,
+  NL80211_ATTR_DFS_CAC_TIME,
+  __NL80211_REG_RULE_ATTR_AFTER_LAST,
+  NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
 };
 enum nl80211_sched_scan_match_attr {
- __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
+  __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
+  NL80211_SCHED_SCAN_MATCH_ATTR_SSID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_SCHED_SCAN_MATCH_ATTR_SSID,
- NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
- __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
- NL80211_SCHED_SCAN_MATCH_ATTR_MAX =
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
+  NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
+  __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
+  NL80211_SCHED_SCAN_MATCH_ATTR_MAX = __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_ATTR_SCHED_SCAN_MATCH_SSID NL80211_SCHED_SCAN_MATCH_ATTR_SSID
 enum nl80211_reg_rule_flags {
+  NL80211_RRF_NO_OFDM = 1 << 0,
+  NL80211_RRF_NO_CCK = 1 << 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_RRF_NO_OFDM = 1<<0,
- NL80211_RRF_NO_CCK = 1<<1,
- NL80211_RRF_NO_INDOOR = 1<<2,
- NL80211_RRF_NO_OUTDOOR = 1<<3,
+  NL80211_RRF_NO_INDOOR = 1 << 2,
+  NL80211_RRF_NO_OUTDOOR = 1 << 3,
+  NL80211_RRF_DFS = 1 << 4,
+  NL80211_RRF_PTP_ONLY = 1 << 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_RRF_DFS = 1<<4,
- NL80211_RRF_PTP_ONLY = 1<<5,
- NL80211_RRF_PTMP_ONLY = 1<<6,
- NL80211_RRF_NO_IR = 1<<7,
+  NL80211_RRF_PTMP_ONLY = 1 << 6,
+  NL80211_RRF_NO_IR = 1 << 7,
+  __NL80211_RRF_NO_IBSS = 1 << 8,
+  NL80211_RRF_AUTO_BW = 1 << 11,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_RRF_NO_IBSS = 1<<8,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_RRF_NO_IR NL80211_RRF_NO_IR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL80211_RRF_NO_IR_ALL (NL80211_RRF_NO_IR | __NL80211_RRF_NO_IBSS)
 enum nl80211_dfs_regions {
- NL80211_DFS_UNSET = 0,
+  NL80211_DFS_UNSET = 0,
+  NL80211_DFS_FCC = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_DFS_FCC = 1,
- NL80211_DFS_ETSI = 2,
- NL80211_DFS_JP = 3,
+  NL80211_DFS_ETSI = 2,
+  NL80211_DFS_JP = 3,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_user_reg_hint_type {
- NL80211_USER_REG_HINT_USER = 0,
- NL80211_USER_REG_HINT_CELL_BASE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_USER_REG_HINT_USER = 0,
+  NL80211_USER_REG_HINT_CELL_BASE = 1,
+  NL80211_USER_REG_HINT_INDOOR = 2,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_survey_info {
- __NL80211_SURVEY_INFO_INVALID,
- NL80211_SURVEY_INFO_FREQUENCY,
- NL80211_SURVEY_INFO_NOISE,
+  __NL80211_SURVEY_INFO_INVALID,
+  NL80211_SURVEY_INFO_FREQUENCY,
+  NL80211_SURVEY_INFO_NOISE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_SURVEY_INFO_IN_USE,
- NL80211_SURVEY_INFO_CHANNEL_TIME,
- NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY,
- NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY,
+  NL80211_SURVEY_INFO_IN_USE,
+  NL80211_SURVEY_INFO_CHANNEL_TIME,
+  NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY,
+  NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_SURVEY_INFO_CHANNEL_TIME_RX,
- NL80211_SURVEY_INFO_CHANNEL_TIME_TX,
- __NL80211_SURVEY_INFO_AFTER_LAST,
- NL80211_SURVEY_INFO_MAX = __NL80211_SURVEY_INFO_AFTER_LAST - 1
+  NL80211_SURVEY_INFO_CHANNEL_TIME_RX,
+  NL80211_SURVEY_INFO_CHANNEL_TIME_TX,
+  __NL80211_SURVEY_INFO_AFTER_LAST,
+  NL80211_SURVEY_INFO_MAX = __NL80211_SURVEY_INFO_AFTER_LAST - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_mntr_flags {
- __NL80211_MNTR_FLAG_INVALID,
- NL80211_MNTR_FLAG_FCSFAIL,
+  __NL80211_MNTR_FLAG_INVALID,
+  NL80211_MNTR_FLAG_FCSFAIL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MNTR_FLAG_PLCPFAIL,
- NL80211_MNTR_FLAG_CONTROL,
- NL80211_MNTR_FLAG_OTHER_BSS,
- NL80211_MNTR_FLAG_COOK_FRAMES,
+  NL80211_MNTR_FLAG_PLCPFAIL,
+  NL80211_MNTR_FLAG_CONTROL,
+  NL80211_MNTR_FLAG_OTHER_BSS,
+  NL80211_MNTR_FLAG_COOK_FRAMES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MNTR_FLAG_ACTIVE,
- __NL80211_MNTR_FLAG_AFTER_LAST,
- NL80211_MNTR_FLAG_MAX = __NL80211_MNTR_FLAG_AFTER_LAST - 1
+  NL80211_MNTR_FLAG_ACTIVE,
+  __NL80211_MNTR_FLAG_AFTER_LAST,
+  NL80211_MNTR_FLAG_MAX = __NL80211_MNTR_FLAG_AFTER_LAST - 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_mesh_power_mode {
- NL80211_MESH_POWER_UNKNOWN,
- NL80211_MESH_POWER_ACTIVE,
- NL80211_MESH_POWER_LIGHT_SLEEP,
+  NL80211_MESH_POWER_UNKNOWN,
+  NL80211_MESH_POWER_ACTIVE,
+  NL80211_MESH_POWER_LIGHT_SLEEP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESH_POWER_DEEP_SLEEP,
- __NL80211_MESH_POWER_AFTER_LAST,
- NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1
+  NL80211_MESH_POWER_DEEP_SLEEP,
+  __NL80211_MESH_POWER_AFTER_LAST,
+  NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_meshconf_params {
- __NL80211_MESHCONF_INVALID,
- NL80211_MESHCONF_RETRY_TIMEOUT,
- NL80211_MESHCONF_CONFIRM_TIMEOUT,
+  __NL80211_MESHCONF_INVALID,
+  NL80211_MESHCONF_RETRY_TIMEOUT,
+  NL80211_MESHCONF_CONFIRM_TIMEOUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESHCONF_HOLDING_TIMEOUT,
- NL80211_MESHCONF_MAX_PEER_LINKS,
- NL80211_MESHCONF_MAX_RETRIES,
- NL80211_MESHCONF_TTL,
+  NL80211_MESHCONF_HOLDING_TIMEOUT,
+  NL80211_MESHCONF_MAX_PEER_LINKS,
+  NL80211_MESHCONF_MAX_RETRIES,
+  NL80211_MESHCONF_TTL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESHCONF_AUTO_OPEN_PLINKS,
- NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES,
- NL80211_MESHCONF_PATH_REFRESH_TIME,
- NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT,
+  NL80211_MESHCONF_AUTO_OPEN_PLINKS,
+  NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES,
+  NL80211_MESHCONF_PATH_REFRESH_TIME,
+  NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT,
- NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL,
- NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
- NL80211_MESHCONF_HWMP_ROOTMODE,
+  NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT,
+  NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL,
+  NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
+  NL80211_MESHCONF_HWMP_ROOTMODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESHCONF_ELEMENT_TTL,
- NL80211_MESHCONF_HWMP_RANN_INTERVAL,
- NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
- NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL,
+  NL80211_MESHCONF_ELEMENT_TTL,
+  NL80211_MESHCONF_HWMP_RANN_INTERVAL,
+  NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
+  NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESHCONF_FORWARDING,
- NL80211_MESHCONF_RSSI_THRESHOLD,
- NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR,
- NL80211_MESHCONF_HT_OPMODE,
+  NL80211_MESHCONF_FORWARDING,
+  NL80211_MESHCONF_RSSI_THRESHOLD,
+  NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR,
+  NL80211_MESHCONF_HT_OPMODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT,
- NL80211_MESHCONF_HWMP_ROOT_INTERVAL,
- NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
- NL80211_MESHCONF_POWER_MODE,
+  NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT,
+  NL80211_MESHCONF_HWMP_ROOT_INTERVAL,
+  NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
+  NL80211_MESHCONF_POWER_MODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESHCONF_AWAKE_WINDOW,
- NL80211_MESHCONF_PLINK_TIMEOUT,
- __NL80211_MESHCONF_ATTR_AFTER_LAST,
- NL80211_MESHCONF_ATTR_MAX = __NL80211_MESHCONF_ATTR_AFTER_LAST - 1
+  NL80211_MESHCONF_AWAKE_WINDOW,
+  NL80211_MESHCONF_PLINK_TIMEOUT,
+  __NL80211_MESHCONF_ATTR_AFTER_LAST,
+  NL80211_MESHCONF_ATTR_MAX = __NL80211_MESHCONF_ATTR_AFTER_LAST - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_mesh_setup_params {
- __NL80211_MESH_SETUP_INVALID,
- NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
+  __NL80211_MESH_SETUP_INVALID,
+  NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
- NL80211_MESH_SETUP_IE,
- NL80211_MESH_SETUP_USERSPACE_AUTH,
- NL80211_MESH_SETUP_USERSPACE_AMPE,
+  NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
+  NL80211_MESH_SETUP_IE,
+  NL80211_MESH_SETUP_USERSPACE_AUTH,
+  NL80211_MESH_SETUP_USERSPACE_AMPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC,
- NL80211_MESH_SETUP_USERSPACE_MPM,
- NL80211_MESH_SETUP_AUTH_PROTOCOL,
- __NL80211_MESH_SETUP_ATTR_AFTER_LAST,
+  NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC,
+  NL80211_MESH_SETUP_USERSPACE_MPM,
+  NL80211_MESH_SETUP_AUTH_PROTOCOL,
+  __NL80211_MESH_SETUP_ATTR_AFTER_LAST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MESH_SETUP_ATTR_MAX = __NL80211_MESH_SETUP_ATTR_AFTER_LAST - 1
+  NL80211_MESH_SETUP_ATTR_MAX = __NL80211_MESH_SETUP_ATTR_AFTER_LAST - 1
 };
 enum nl80211_txq_attr {
- __NL80211_TXQ_ATTR_INVALID,
+  __NL80211_TXQ_ATTR_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_TXQ_ATTR_AC,
- NL80211_TXQ_ATTR_TXOP,
- NL80211_TXQ_ATTR_CWMIN,
- NL80211_TXQ_ATTR_CWMAX,
+  NL80211_TXQ_ATTR_AC,
+  NL80211_TXQ_ATTR_TXOP,
+  NL80211_TXQ_ATTR_CWMIN,
+  NL80211_TXQ_ATTR_CWMAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_TXQ_ATTR_AIFS,
- __NL80211_TXQ_ATTR_AFTER_LAST,
- NL80211_TXQ_ATTR_MAX = __NL80211_TXQ_ATTR_AFTER_LAST - 1
+  NL80211_TXQ_ATTR_AIFS,
+  __NL80211_TXQ_ATTR_AFTER_LAST,
+  NL80211_TXQ_ATTR_MAX = __NL80211_TXQ_ATTR_AFTER_LAST - 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_ac {
- NL80211_AC_VO,
- NL80211_AC_VI,
- NL80211_AC_BE,
+  NL80211_AC_VO,
+  NL80211_AC_VI,
+  NL80211_AC_BE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_AC_BK,
- NL80211_NUM_ACS
+  NL80211_AC_BK,
+  NL80211_NUM_ACS
 };
 #define NL80211_TXQ_ATTR_QUEUE NL80211_TXQ_ATTR_AC
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -862,183 +892,193 @@
 #define NL80211_TXQ_Q_BK NL80211_AC_BK
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_channel_type {
- NL80211_CHAN_NO_HT,
- NL80211_CHAN_HT20,
- NL80211_CHAN_HT40MINUS,
+  NL80211_CHAN_NO_HT,
+  NL80211_CHAN_HT20,
+  NL80211_CHAN_HT40MINUS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CHAN_HT40PLUS
+  NL80211_CHAN_HT40PLUS
 };
 enum nl80211_chan_width {
- NL80211_CHAN_WIDTH_20_NOHT,
+  NL80211_CHAN_WIDTH_20_NOHT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CHAN_WIDTH_20,
- NL80211_CHAN_WIDTH_40,
- NL80211_CHAN_WIDTH_80,
- NL80211_CHAN_WIDTH_80P80,
+  NL80211_CHAN_WIDTH_20,
+  NL80211_CHAN_WIDTH_40,
+  NL80211_CHAN_WIDTH_80,
+  NL80211_CHAN_WIDTH_80P80,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CHAN_WIDTH_160,
- NL80211_CHAN_WIDTH_5,
- NL80211_CHAN_WIDTH_10,
+  NL80211_CHAN_WIDTH_160,
+  NL80211_CHAN_WIDTH_5,
+  NL80211_CHAN_WIDTH_10,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_bss_scan_width {
- NL80211_BSS_CHAN_WIDTH_20,
- NL80211_BSS_CHAN_WIDTH_10,
- NL80211_BSS_CHAN_WIDTH_5,
+  NL80211_BSS_CHAN_WIDTH_20,
+  NL80211_BSS_CHAN_WIDTH_10,
+  NL80211_BSS_CHAN_WIDTH_5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_bss {
- __NL80211_BSS_INVALID,
- NL80211_BSS_BSSID,
+  __NL80211_BSS_INVALID,
+  NL80211_BSS_BSSID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BSS_FREQUENCY,
- NL80211_BSS_TSF,
- NL80211_BSS_BEACON_INTERVAL,
- NL80211_BSS_CAPABILITY,
+  NL80211_BSS_FREQUENCY,
+  NL80211_BSS_TSF,
+  NL80211_BSS_BEACON_INTERVAL,
+  NL80211_BSS_CAPABILITY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BSS_INFORMATION_ELEMENTS,
- NL80211_BSS_SIGNAL_MBM,
- NL80211_BSS_SIGNAL_UNSPEC,
- NL80211_BSS_STATUS,
+  NL80211_BSS_INFORMATION_ELEMENTS,
+  NL80211_BSS_SIGNAL_MBM,
+  NL80211_BSS_SIGNAL_UNSPEC,
+  NL80211_BSS_STATUS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BSS_SEEN_MS_AGO,
- NL80211_BSS_BEACON_IES,
- NL80211_BSS_CHAN_WIDTH,
- __NL80211_BSS_AFTER_LAST,
+  NL80211_BSS_SEEN_MS_AGO,
+  NL80211_BSS_BEACON_IES,
+  NL80211_BSS_CHAN_WIDTH,
+  NL80211_BSS_BEACON_TSF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
+  NL80211_BSS_PRESP_DATA,
+  __NL80211_BSS_AFTER_LAST,
+  NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
-enum nl80211_bss_status {
- NL80211_BSS_STATUS_AUTHENTICATED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BSS_STATUS_ASSOCIATED,
- NL80211_BSS_STATUS_IBSS_JOINED,
+enum nl80211_bss_status {
+  NL80211_BSS_STATUS_AUTHENTICATED,
+  NL80211_BSS_STATUS_ASSOCIATED,
+  NL80211_BSS_STATUS_IBSS_JOINED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_auth_type {
+  NL80211_AUTHTYPE_OPEN_SYSTEM,
+  NL80211_AUTHTYPE_SHARED_KEY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_AUTHTYPE_OPEN_SYSTEM,
- NL80211_AUTHTYPE_SHARED_KEY,
- NL80211_AUTHTYPE_FT,
- NL80211_AUTHTYPE_NETWORK_EAP,
+  NL80211_AUTHTYPE_FT,
+  NL80211_AUTHTYPE_NETWORK_EAP,
+  NL80211_AUTHTYPE_SAE,
+  __NL80211_AUTHTYPE_NUM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_AUTHTYPE_SAE,
- __NL80211_AUTHTYPE_NUM,
- NL80211_AUTHTYPE_MAX = __NL80211_AUTHTYPE_NUM - 1,
- NL80211_AUTHTYPE_AUTOMATIC
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_AUTHTYPE_MAX = __NL80211_AUTHTYPE_NUM - 1,
+  NL80211_AUTHTYPE_AUTOMATIC
 };
 enum nl80211_key_type {
- NL80211_KEYTYPE_GROUP,
- NL80211_KEYTYPE_PAIRWISE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_KEYTYPE_PEERKEY,
- NUM_NL80211_KEYTYPES
+  NL80211_KEYTYPE_GROUP,
+  NL80211_KEYTYPE_PAIRWISE,
+  NL80211_KEYTYPE_PEERKEY,
+  NUM_NL80211_KEYTYPES
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_mfp {
+  NL80211_MFP_NO,
+  NL80211_MFP_REQUIRED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_MFP_NO,
- NL80211_MFP_REQUIRED,
 };
 enum nl80211_wpa_versions {
+  NL80211_WPA_VERSION_1 = 1 << 0,
+  NL80211_WPA_VERSION_2 = 1 << 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_WPA_VERSION_1 = 1 << 0,
- NL80211_WPA_VERSION_2 = 1 << 1,
 };
 enum nl80211_key_default_types {
+  __NL80211_KEY_DEFAULT_TYPE_INVALID,
+  NL80211_KEY_DEFAULT_TYPE_UNICAST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_KEY_DEFAULT_TYPE_INVALID,
- NL80211_KEY_DEFAULT_TYPE_UNICAST,
- NL80211_KEY_DEFAULT_TYPE_MULTICAST,
- NUM_NL80211_KEY_DEFAULT_TYPES
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_KEY_DEFAULT_TYPE_MULTICAST,
+  NUM_NL80211_KEY_DEFAULT_TYPES
 };
 enum nl80211_key_attributes {
- __NL80211_KEY_INVALID,
- NL80211_KEY_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_KEY_IDX,
- NL80211_KEY_CIPHER,
- NL80211_KEY_SEQ,
- NL80211_KEY_DEFAULT,
+  __NL80211_KEY_INVALID,
+  NL80211_KEY_DATA,
+  NL80211_KEY_IDX,
+  NL80211_KEY_CIPHER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_KEY_DEFAULT_MGMT,
- NL80211_KEY_TYPE,
- NL80211_KEY_DEFAULT_TYPES,
- __NL80211_KEY_AFTER_LAST,
+  NL80211_KEY_SEQ,
+  NL80211_KEY_DEFAULT,
+  NL80211_KEY_DEFAULT_MGMT,
+  NL80211_KEY_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1
+  NL80211_KEY_DEFAULT_TYPES,
+  __NL80211_KEY_AFTER_LAST,
+  NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_tx_rate_attributes {
- __NL80211_TXRATE_INVALID,
+  __NL80211_TXRATE_INVALID,
+  NL80211_TXRATE_LEGACY,
+  NL80211_TXRATE_HT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_TXRATE_LEGACY,
- NL80211_TXRATE_HT,
- NL80211_TXRATE_VHT,
- __NL80211_TXRATE_AFTER_LAST,
+  NL80211_TXRATE_VHT,
+  NL80211_TXRATE_GI,
+  __NL80211_TXRATE_AFTER_LAST,
+  NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1
 };
 #define NL80211_TXRATE_MCS NL80211_TXRATE_HT
 #define NL80211_VHT_NSS_MAX 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nl80211_txrate_vht {
- __u16 mcs[NL80211_VHT_NSS_MAX];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 mcs[NL80211_VHT_NSS_MAX];
+};
+enum nl80211_txrate_gi {
+  NL80211_TXRATE_DEFAULT_GI,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_TXRATE_FORCE_SGI,
+  NL80211_TXRATE_FORCE_LGI,
 };
 enum nl80211_band {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_BAND_2GHZ,
- NL80211_BAND_5GHZ,
- NL80211_BAND_60GHZ,
+  NL80211_BAND_2GHZ,
+  NL80211_BAND_5GHZ,
+  NL80211_BAND_60GHZ,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_ps_state {
- NL80211_PS_DISABLED,
- NL80211_PS_ENABLED,
+  NL80211_PS_DISABLED,
+  NL80211_PS_ENABLED,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_attr_cqm {
- __NL80211_ATTR_CQM_INVALID,
- NL80211_ATTR_CQM_RSSI_THOLD,
- NL80211_ATTR_CQM_RSSI_HYST,
+  __NL80211_ATTR_CQM_INVALID,
+  NL80211_ATTR_CQM_RSSI_THOLD,
+  NL80211_ATTR_CQM_RSSI_HYST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT,
- NL80211_ATTR_CQM_PKT_LOSS_EVENT,
- NL80211_ATTR_CQM_TXE_RATE,
- NL80211_ATTR_CQM_TXE_PKTS,
+  NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT,
+  NL80211_ATTR_CQM_PKT_LOSS_EVENT,
+  NL80211_ATTR_CQM_TXE_RATE,
+  NL80211_ATTR_CQM_TXE_PKTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_CQM_TXE_INTVL,
- __NL80211_ATTR_CQM_AFTER_LAST,
- NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
+  NL80211_ATTR_CQM_TXE_INTVL,
+  __NL80211_ATTR_CQM_AFTER_LAST,
+  NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_cqm_rssi_threshold_event {
- NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
- NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
- NL80211_CQM_RSSI_BEACON_LOSS_EVENT,
+  NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
+  NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
+  NL80211_CQM_RSSI_BEACON_LOSS_EVENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_tx_power_setting {
- NL80211_TX_POWER_AUTOMATIC,
- NL80211_TX_POWER_LIMITED,
+  NL80211_TX_POWER_AUTOMATIC,
+  NL80211_TX_POWER_LIMITED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_TX_POWER_FIXED,
+  NL80211_TX_POWER_FIXED,
 };
 enum nl80211_packet_pattern_attr {
- __NL80211_PKTPAT_INVALID,
+  __NL80211_PKTPAT_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_PKTPAT_MASK,
- NL80211_PKTPAT_PATTERN,
- NL80211_PKTPAT_OFFSET,
- NUM_NL80211_PKTPAT,
+  NL80211_PKTPAT_MASK,
+  NL80211_PKTPAT_PATTERN,
+  NL80211_PKTPAT_OFFSET,
+  NUM_NL80211_PKTPAT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1,
+  MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1,
 };
 struct nl80211_pattern_support {
- __u32 max_patterns;
+  __u32 max_patterns;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 min_pattern_len;
- __u32 max_pattern_len;
- __u32 max_pkt_offset;
+  __u32 min_pattern_len;
+  __u32 max_pattern_len;
+  __u32 max_pkt_offset;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NL80211_WOWLAN_PKTPAT_INVALID __NL80211_PKTPAT_INVALID
@@ -1051,259 +1091,285 @@
 #define nl80211_wowlan_pattern_support nl80211_pattern_support
 enum nl80211_wowlan_triggers {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_WOWLAN_TRIG_INVALID,
- NL80211_WOWLAN_TRIG_ANY,
- NL80211_WOWLAN_TRIG_DISCONNECT,
- NL80211_WOWLAN_TRIG_MAGIC_PKT,
+  __NL80211_WOWLAN_TRIG_INVALID,
+  NL80211_WOWLAN_TRIG_ANY,
+  NL80211_WOWLAN_TRIG_DISCONNECT,
+  NL80211_WOWLAN_TRIG_MAGIC_PKT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_WOWLAN_TRIG_PKT_PATTERN,
- NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED,
- NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE,
- NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST,
+  NL80211_WOWLAN_TRIG_PKT_PATTERN,
+  NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED,
+  NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE,
+  NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE,
- NL80211_WOWLAN_TRIG_RFKILL_RELEASE,
- NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211,
- NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN,
+  NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE,
+  NL80211_WOWLAN_TRIG_RFKILL_RELEASE,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023,
- NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN,
- NL80211_WOWLAN_TRIG_TCP_CONNECTION,
- NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN,
+  NL80211_WOWLAN_TRIG_TCP_CONNECTION,
+  NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST,
- NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS,
- NUM_NL80211_WOWLAN_TRIG,
- MAX_NL80211_WOWLAN_TRIG = NUM_NL80211_WOWLAN_TRIG - 1
+  NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST,
+  NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS,
+  NUM_NL80211_WOWLAN_TRIG,
+  MAX_NL80211_WOWLAN_TRIG = NUM_NL80211_WOWLAN_TRIG - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct nl80211_wowlan_tcp_data_seq {
- __u32 start, offset, len;
+  __u32 start, offset, len;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nl80211_wowlan_tcp_data_token {
- __u32 offset, len;
- __u8 token_stream[];
+  __u32 offset, len;
+  __u8 token_stream[];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nl80211_wowlan_tcp_data_token_feature {
- __u32 min_len, max_len, bufsize;
+  __u32 min_len, max_len, bufsize;
 };
 enum nl80211_wowlan_tcp_attrs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __NL80211_WOWLAN_TCP_INVALID,
- NL80211_WOWLAN_TCP_SRC_IPV4,
- NL80211_WOWLAN_TCP_DST_IPV4,
- NL80211_WOWLAN_TCP_DST_MAC,
+  __NL80211_WOWLAN_TCP_INVALID,
+  NL80211_WOWLAN_TCP_SRC_IPV4,
+  NL80211_WOWLAN_TCP_DST_IPV4,
+  NL80211_WOWLAN_TCP_DST_MAC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_WOWLAN_TCP_SRC_PORT,
- NL80211_WOWLAN_TCP_DST_PORT,
- NL80211_WOWLAN_TCP_DATA_PAYLOAD,
- NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ,
+  NL80211_WOWLAN_TCP_SRC_PORT,
+  NL80211_WOWLAN_TCP_DST_PORT,
+  NL80211_WOWLAN_TCP_DATA_PAYLOAD,
+  NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN,
- NL80211_WOWLAN_TCP_DATA_INTERVAL,
- NL80211_WOWLAN_TCP_WAKE_PAYLOAD,
- NL80211_WOWLAN_TCP_WAKE_MASK,
+  NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN,
+  NL80211_WOWLAN_TCP_DATA_INTERVAL,
+  NL80211_WOWLAN_TCP_WAKE_PAYLOAD,
+  NL80211_WOWLAN_TCP_WAKE_MASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUM_NL80211_WOWLAN_TCP,
- MAX_NL80211_WOWLAN_TCP = NUM_NL80211_WOWLAN_TCP - 1
+  NUM_NL80211_WOWLAN_TCP,
+  MAX_NL80211_WOWLAN_TCP = NUM_NL80211_WOWLAN_TCP - 1
 };
 struct nl80211_coalesce_rule_support {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_rules;
- struct nl80211_pattern_support pat;
- __u32 max_delay;
+  __u32 max_rules;
+  struct nl80211_pattern_support pat;
+  __u32 max_delay;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_attr_coalesce_rule {
- __NL80211_COALESCE_RULE_INVALID,
- NL80211_ATTR_COALESCE_RULE_DELAY,
- NL80211_ATTR_COALESCE_RULE_CONDITION,
+  __NL80211_COALESCE_RULE_INVALID,
+  NL80211_ATTR_COALESCE_RULE_DELAY,
+  NL80211_ATTR_COALESCE_RULE_CONDITION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ATTR_COALESCE_RULE_PKT_PATTERN,
- NUM_NL80211_ATTR_COALESCE_RULE,
- NL80211_ATTR_COALESCE_RULE_MAX = NUM_NL80211_ATTR_COALESCE_RULE - 1
+  NL80211_ATTR_COALESCE_RULE_PKT_PATTERN,
+  NUM_NL80211_ATTR_COALESCE_RULE,
+  NL80211_ATTR_COALESCE_RULE_MAX = NUM_NL80211_ATTR_COALESCE_RULE - 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_coalesce_condition {
- NL80211_COALESCE_CONDITION_MATCH,
- NL80211_COALESCE_CONDITION_NO_MATCH
+  NL80211_COALESCE_CONDITION_MATCH,
+  NL80211_COALESCE_CONDITION_NO_MATCH
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_iface_limit_attrs {
- NL80211_IFACE_LIMIT_UNSPEC,
- NL80211_IFACE_LIMIT_MAX,
- NL80211_IFACE_LIMIT_TYPES,
+  NL80211_IFACE_LIMIT_UNSPEC,
+  NL80211_IFACE_LIMIT_MAX,
+  NL80211_IFACE_LIMIT_TYPES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUM_NL80211_IFACE_LIMIT,
- MAX_NL80211_IFACE_LIMIT = NUM_NL80211_IFACE_LIMIT - 1
+  NUM_NL80211_IFACE_LIMIT,
+  MAX_NL80211_IFACE_LIMIT = NUM_NL80211_IFACE_LIMIT - 1
 };
 enum nl80211_if_combination_attrs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_IFACE_COMB_UNSPEC,
- NL80211_IFACE_COMB_LIMITS,
- NL80211_IFACE_COMB_MAXNUM,
- NL80211_IFACE_COMB_STA_AP_BI_MATCH,
+  NL80211_IFACE_COMB_UNSPEC,
+  NL80211_IFACE_COMB_LIMITS,
+  NL80211_IFACE_COMB_MAXNUM,
+  NL80211_IFACE_COMB_STA_AP_BI_MATCH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_IFACE_COMB_NUM_CHANNELS,
- NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS,
- NUM_NL80211_IFACE_COMB,
- MAX_NL80211_IFACE_COMB = NUM_NL80211_IFACE_COMB - 1
+  NL80211_IFACE_COMB_NUM_CHANNELS,
+  NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS,
+  NL80211_IFACE_COMB_RADAR_DETECT_REGIONS,
+  NUM_NL80211_IFACE_COMB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MAX_NL80211_IFACE_COMB = NUM_NL80211_IFACE_COMB - 1
 };
 enum nl80211_plink_state {
- NL80211_PLINK_LISTEN,
- NL80211_PLINK_OPN_SNT,
+  NL80211_PLINK_LISTEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_PLINK_OPN_RCVD,
- NL80211_PLINK_CNF_RCVD,
- NL80211_PLINK_ESTAB,
- NL80211_PLINK_HOLDING,
+  NL80211_PLINK_OPN_SNT,
+  NL80211_PLINK_OPN_RCVD,
+  NL80211_PLINK_CNF_RCVD,
+  NL80211_PLINK_ESTAB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_PLINK_BLOCKED,
- NUM_NL80211_PLINK_STATES,
- MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1
+  NL80211_PLINK_HOLDING,
+  NL80211_PLINK_BLOCKED,
+  NUM_NL80211_PLINK_STATES,
+  MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum plink_actions {
- NL80211_PLINK_ACTION_NO_ACTION,
- NL80211_PLINK_ACTION_OPEN,
- NL80211_PLINK_ACTION_BLOCK,
+  NL80211_PLINK_ACTION_NO_ACTION,
+  NL80211_PLINK_ACTION_OPEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUM_NL80211_PLINK_ACTIONS,
+  NL80211_PLINK_ACTION_BLOCK,
+  NUM_NL80211_PLINK_ACTIONS,
 };
 #define NL80211_KCK_LEN 16
-#define NL80211_KEK_LEN 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NL80211_KEK_LEN 16
 #define NL80211_REPLAY_CTR_LEN 8
 enum nl80211_rekey_data {
- __NL80211_REKEY_DATA_INVALID,
- NL80211_REKEY_DATA_KEK,
+  __NL80211_REKEY_DATA_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_REKEY_DATA_KCK,
- NL80211_REKEY_DATA_REPLAY_CTR,
- NUM_NL80211_REKEY_DATA,
- MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1
+  NL80211_REKEY_DATA_KEK,
+  NL80211_REKEY_DATA_KCK,
+  NL80211_REKEY_DATA_REPLAY_CTR,
+  NUM_NL80211_REKEY_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1
 };
 enum nl80211_hidden_ssid {
- NL80211_HIDDEN_SSID_NOT_IN_USE,
- NL80211_HIDDEN_SSID_ZERO_LEN,
+  NL80211_HIDDEN_SSID_NOT_IN_USE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_HIDDEN_SSID_ZERO_CONTENTS
+  NL80211_HIDDEN_SSID_ZERO_LEN,
+  NL80211_HIDDEN_SSID_ZERO_CONTENTS
 };
 enum nl80211_sta_wme_attr {
- __NL80211_STA_WME_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_STA_WME_UAPSD_QUEUES,
- NL80211_STA_WME_MAX_SP,
- __NL80211_STA_WME_AFTER_LAST,
- NL80211_STA_WME_MAX = __NL80211_STA_WME_AFTER_LAST - 1
+  __NL80211_STA_WME_INVALID,
+  NL80211_STA_WME_UAPSD_QUEUES,
+  NL80211_STA_WME_MAX_SP,
+  __NL80211_STA_WME_AFTER_LAST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_STA_WME_MAX = __NL80211_STA_WME_AFTER_LAST - 1
 };
 enum nl80211_pmksa_candidate_attr {
- __NL80211_PMKSA_CANDIDATE_INVALID,
- NL80211_PMKSA_CANDIDATE_INDEX,
+  __NL80211_PMKSA_CANDIDATE_INVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_PMKSA_CANDIDATE_BSSID,
- NL80211_PMKSA_CANDIDATE_PREAUTH,
- NUM_NL80211_PMKSA_CANDIDATE,
- MAX_NL80211_PMKSA_CANDIDATE = NUM_NL80211_PMKSA_CANDIDATE - 1
+  NL80211_PMKSA_CANDIDATE_INDEX,
+  NL80211_PMKSA_CANDIDATE_BSSID,
+  NL80211_PMKSA_CANDIDATE_PREAUTH,
+  NUM_NL80211_PMKSA_CANDIDATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MAX_NL80211_PMKSA_CANDIDATE = NUM_NL80211_PMKSA_CANDIDATE - 1
 };
 enum nl80211_tdls_operation {
- NL80211_TDLS_DISCOVERY_REQ,
- NL80211_TDLS_SETUP,
+  NL80211_TDLS_DISCOVERY_REQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_TDLS_TEARDOWN,
- NL80211_TDLS_ENABLE_LINK,
- NL80211_TDLS_DISABLE_LINK,
+  NL80211_TDLS_SETUP,
+  NL80211_TDLS_TEARDOWN,
+  NL80211_TDLS_ENABLE_LINK,
+  NL80211_TDLS_DISABLE_LINK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_feature_flags {
- NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
- NL80211_FEATURE_HT_IBSS = 1 << 1,
- NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2,
+  NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
+  NL80211_FEATURE_HT_IBSS = 1 << 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3,
- NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4,
- NL80211_FEATURE_SAE = 1 << 5,
- NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6,
+  NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2,
+  NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3,
+  NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4,
+  NL80211_FEATURE_SAE = 1 << 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_FEATURE_SCAN_FLUSH = 1 << 7,
- NL80211_FEATURE_AP_SCAN = 1 << 8,
- NL80211_FEATURE_VIF_TXPOWER = 1 << 9,
- NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10,
+  NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6,
+  NL80211_FEATURE_SCAN_FLUSH = 1 << 7,
+  NL80211_FEATURE_AP_SCAN = 1 << 8,
+  NL80211_FEATURE_VIF_TXPOWER = 1 << 9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11,
- NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12,
- NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14,
- NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15,
+  NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10,
+  NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11,
+  NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12,
+  NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_FEATURE_USERSPACE_MPM = 1 << 16,
- NL80211_FEATURE_ACTIVE_MONITOR = 1 << 17,
+  NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15,
+  NL80211_FEATURE_USERSPACE_MPM = 1 << 16,
+  NL80211_FEATURE_ACTIVE_MONITOR = 1 << 17,
+  NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE = 1 << 18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES = 1 << 19,
+  NL80211_FEATURE_WFA_TPC_IE_IN_PROBES = 1 << 20,
+  NL80211_FEATURE_QUIET = 1 << 21,
+  NL80211_FEATURE_TX_POWER_INSERTION = 1 << 22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_FEATURE_ACKTO_ESTIMATION = 1 << 23,
+  NL80211_FEATURE_STATIC_SMPS = 1 << 24,
+  NL80211_FEATURE_DYNAMIC_SMPS = 1 << 25,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_probe_resp_offload_support_attr {
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS = 1 << 0,
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 = 1 << 1,
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P = 1 << 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS = 1<<0,
- NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 = 1<<1,
- NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P = 1<<2,
- NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U = 1<<3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U = 1 << 3,
 };
 enum nl80211_connect_failed_reason {
- NL80211_CONN_FAIL_MAX_CLIENTS,
- NL80211_CONN_FAIL_BLOCKED_CLIENT,
+  NL80211_CONN_FAIL_MAX_CLIENTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_CONN_FAIL_BLOCKED_CLIENT,
 };
 enum nl80211_scan_flags {
- NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
- NL80211_SCAN_FLAG_FLUSH = 1<<1,
+  NL80211_SCAN_FLAG_LOW_PRIORITY = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_SCAN_FLAG_AP = 1<<2,
+  NL80211_SCAN_FLAG_FLUSH = 1 << 1,
+  NL80211_SCAN_FLAG_AP = 1 << 2,
 };
 enum nl80211_acl_policy {
- NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_ACL_POLICY_DENY_UNLESS_LISTED,
+  NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED,
+  NL80211_ACL_POLICY_DENY_UNLESS_LISTED,
+};
+enum nl80211_smps_mode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_SMPS_OFF,
+  NL80211_SMPS_STATIC,
+  NL80211_SMPS_DYNAMIC,
+  __NL80211_SMPS_AFTER_LAST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NL80211_SMPS_MAX = __NL80211_SMPS_AFTER_LAST - 1
 };
 enum nl80211_radar_event {
- NL80211_RADAR_DETECTED,
+  NL80211_RADAR_DETECTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_RADAR_CAC_FINISHED,
- NL80211_RADAR_CAC_ABORTED,
- NL80211_RADAR_NOP_FINISHED,
+  NL80211_RADAR_CAC_FINISHED,
+  NL80211_RADAR_CAC_ABORTED,
+  NL80211_RADAR_NOP_FINISHED,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_dfs_state {
- NL80211_DFS_USABLE,
- NL80211_DFS_UNAVAILABLE,
- NL80211_DFS_AVAILABLE,
+  NL80211_DFS_USABLE,
+  NL80211_DFS_UNAVAILABLE,
+  NL80211_DFS_AVAILABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nl80211_protocol_features {
- NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 1 << 0,
+  NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 1 << 0,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_crit_proto_id {
- NL80211_CRIT_PROTO_UNSPEC,
- NL80211_CRIT_PROTO_DHCP,
- NL80211_CRIT_PROTO_EAPOL,
+  NL80211_CRIT_PROTO_UNSPEC,
+  NL80211_CRIT_PROTO_DHCP,
+  NL80211_CRIT_PROTO_EAPOL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NL80211_CRIT_PROTO_APIPA,
- NUM_NL80211_CRIT_PROTO
+  NL80211_CRIT_PROTO_APIPA,
+  NUM_NL80211_CRIT_PROTO
 };
 #define NL80211_CRIT_PROTO_MAX_DURATION 5000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nl80211_rxmgmt_flags {
- NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0,
+  NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0,
 };
 #define NL80211_VENDOR_ID_IS_LINUX 0x80000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nl80211_vendor_cmd_info {
- __u32 vendor_id;
- __u32 subcmd;
+  __u32 vendor_id;
+  __u32 subcmd;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum nl80211_tdls_peer_capability {
+  NL80211_TDLS_PEER_HT = 1 << 0,
+  NL80211_TDLS_PEER_VHT = 1 << 1,
+  NL80211_TDLS_PEER_WMM = 1 << 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #endif
diff --git a/libc/kernel/uapi/linux/nubus.h b/libc/kernel/uapi/linux/nubus.h
index 46d6abc..daee65f 100644
--- a/libc/kernel/uapi/linux/nubus.h
+++ b/libc/kernel/uapi/linux/nubus.h
@@ -21,188 +21,185 @@
 #include <linux/types.h>
 enum nubus_category {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_CAT_BOARD = 0x0001,
- NUBUS_CAT_DISPLAY = 0x0003,
- NUBUS_CAT_NETWORK = 0x0004,
- NUBUS_CAT_COMMUNICATIONS = 0x0006,
+  NUBUS_CAT_BOARD = 0x0001,
+  NUBUS_CAT_DISPLAY = 0x0003,
+  NUBUS_CAT_NETWORK = 0x0004,
+  NUBUS_CAT_COMMUNICATIONS = 0x0006,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_CAT_FONT = 0x0009,
- NUBUS_CAT_CPU = 0x000A,
- NUBUS_CAT_DUODOCK = 0x0020
+  NUBUS_CAT_FONT = 0x0009,
+  NUBUS_CAT_CPU = 0x000A,
+  NUBUS_CAT_DUODOCK = 0x0020
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nubus_type_network {
- NUBUS_TYPE_ETHERNET = 0x0001,
- NUBUS_TYPE_RS232 = 0x0002
+  NUBUS_TYPE_ETHERNET = 0x0001,
+  NUBUS_TYPE_RS232 = 0x0002
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nubus_type_display {
- NUBUS_TYPE_VIDEO = 0x0001
+  NUBUS_TYPE_VIDEO = 0x0001
 };
 enum nubus_type_cpu {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_TYPE_68020 = 0x0003,
- NUBUS_TYPE_68030 = 0x0004,
- NUBUS_TYPE_68040 = 0x0005
+  NUBUS_TYPE_68020 = 0x0003,
+  NUBUS_TYPE_68030 = 0x0004,
+  NUBUS_TYPE_68040 = 0x0005
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nubus_drsw {
- NUBUS_DRSW_APPLE = 0x0001,
- NUBUS_DRSW_APPLE_HIRES = 0x0013,
- NUBUS_DRSW_3COM = 0x0000,
+  NUBUS_DRSW_APPLE = 0x0001,
+  NUBUS_DRSW_APPLE_HIRES = 0x0013,
+  NUBUS_DRSW_3COM = 0x0000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRSW_CABLETRON = 0x0001,
- NUBUS_DRSW_SONIC_LC = 0x0001,
- NUBUS_DRSW_KINETICS = 0x0103,
- NUBUS_DRSW_ASANTE = 0x0104,
+  NUBUS_DRSW_CABLETRON = 0x0001,
+  NUBUS_DRSW_SONIC_LC = 0x0001,
+  NUBUS_DRSW_KINETICS = 0x0103,
+  NUBUS_DRSW_ASANTE = 0x0104,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRSW_TECHWORKS = 0x0109,
- NUBUS_DRSW_DAYNA = 0x010b,
- NUBUS_DRSW_FARALLON = 0x010c,
- NUBUS_DRSW_APPLE_SN = 0x010f,
+  NUBUS_DRSW_TECHWORKS = 0x0109,
+  NUBUS_DRSW_DAYNA = 0x010b,
+  NUBUS_DRSW_FARALLON = 0x010c,
+  NUBUS_DRSW_APPLE_SN = 0x010f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRSW_DAYNA2 = 0x0115,
- NUBUS_DRSW_FOCUS = 0x011a,
- NUBUS_DRSW_ASANTE_CS = 0x011d,
- NUBUS_DRSW_DAYNA_LC = 0x011e,
+  NUBUS_DRSW_DAYNA2 = 0x0115,
+  NUBUS_DRSW_FOCUS = 0x011a,
+  NUBUS_DRSW_ASANTE_CS = 0x011d,
+  NUBUS_DRSW_DAYNA_LC = 0x011e,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRSW_NONE = 0x0000,
+  NUBUS_DRSW_NONE = 0x0000,
 };
 enum nubus_drhw {
- NUBUS_DRHW_APPLE_TFB = 0x0001,
+  NUBUS_DRHW_APPLE_TFB = 0x0001,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_APPLE_WVC = 0x0006,
- NUBUS_DRHW_SIGMA_CLRMAX = 0x0007,
- NUBUS_DRHW_APPLE_SE30 = 0x0009,
- NUBUS_DRHW_APPLE_HRVC = 0x0013,
+  NUBUS_DRHW_APPLE_WVC = 0x0006,
+  NUBUS_DRHW_SIGMA_CLRMAX = 0x0007,
+  NUBUS_DRHW_APPLE_SE30 = 0x0009,
+  NUBUS_DRHW_APPLE_HRVC = 0x0013,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_APPLE_PVC = 0x0017,
- NUBUS_DRHW_APPLE_RBV1 = 0x0018,
- NUBUS_DRHW_APPLE_MDC = 0x0019,
- NUBUS_DRHW_APPLE_SONORA = 0x0022,
+  NUBUS_DRHW_APPLE_PVC = 0x0017,
+  NUBUS_DRHW_APPLE_RBV1 = 0x0018,
+  NUBUS_DRHW_APPLE_MDC = 0x0019,
+  NUBUS_DRHW_APPLE_SONORA = 0x0022,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_APPLE_24AC = 0x002b,
- NUBUS_DRHW_APPLE_VALKYRIE = 0x002e,
- NUBUS_DRHW_APPLE_JET = 0x0029,
- NUBUS_DRHW_SMAC_GFX = 0x0105,
+  NUBUS_DRHW_APPLE_24AC = 0x002b,
+  NUBUS_DRHW_APPLE_VALKYRIE = 0x002e,
+  NUBUS_DRHW_APPLE_JET = 0x0029,
+  NUBUS_DRHW_SMAC_GFX = 0x0105,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_RASTER_CB264 = 0x013B,
- NUBUS_DRHW_MICRON_XCEED = 0x0146,
- NUBUS_DRHW_RDIUS_GSC = 0x0153,
- NUBUS_DRHW_SMAC_SPEC8 = 0x017B,
+  NUBUS_DRHW_RASTER_CB264 = 0x013B,
+  NUBUS_DRHW_MICRON_XCEED = 0x0146,
+  NUBUS_DRHW_RDIUS_GSC = 0x0153,
+  NUBUS_DRHW_SMAC_SPEC8 = 0x017B,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_SMAC_SPEC24 = 0x017C,
- NUBUS_DRHW_RASTER_CB364 = 0x026F,
- NUBUS_DRHW_RDIUS_DCGX = 0x027C,
- NUBUS_DRHW_RDIUS_PC8 = 0x0291,
+  NUBUS_DRHW_SMAC_SPEC24 = 0x017C,
+  NUBUS_DRHW_RASTER_CB364 = 0x026F,
+  NUBUS_DRHW_RDIUS_DCGX = 0x027C,
+  NUBUS_DRHW_RDIUS_PC8 = 0x0291,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_LAPIS_PCS8 = 0x0292,
- NUBUS_DRHW_RASTER_24XLI = 0x02A0,
- NUBUS_DRHW_RASTER_PBPGT = 0x02A5,
- NUBUS_DRHW_EMACH_FSX = 0x02AE,
+  NUBUS_DRHW_LAPIS_PCS8 = 0x0292,
+  NUBUS_DRHW_RASTER_24XLI = 0x02A0,
+  NUBUS_DRHW_RASTER_PBPGT = 0x02A5,
+  NUBUS_DRHW_EMACH_FSX = 0x02AE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_RASTER_24XLTV = 0x02B7,
- NUBUS_DRHW_SMAC_THUND24 = 0x02CB,
- NUBUS_DRHW_SMAC_THUNDLGHT = 0x03D9,
- NUBUS_DRHW_RDIUS_PC24XP = 0x0406,
+  NUBUS_DRHW_RASTER_24XLTV = 0x02B7,
+  NUBUS_DRHW_SMAC_THUND24 = 0x02CB,
+  NUBUS_DRHW_SMAC_THUNDLGHT = 0x03D9,
+  NUBUS_DRHW_RDIUS_PC24XP = 0x0406,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_RDIUS_PC24X = 0x040A,
- NUBUS_DRHW_RDIUS_PC8XJ = 0x040B,
- NUBUS_DRHW_INTERLAN = 0x0100,
- NUBUS_DRHW_SMC9194 = 0x0101,
+  NUBUS_DRHW_RDIUS_PC24X = 0x040A,
+  NUBUS_DRHW_RDIUS_PC8XJ = 0x040B,
+  NUBUS_DRHW_INTERLAN = 0x0100,
+  NUBUS_DRHW_SMC9194 = 0x0101,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_KINETICS = 0x0106,
- NUBUS_DRHW_CABLETRON = 0x0109,
- NUBUS_DRHW_ASANTE_LC = 0x010f,
- NUBUS_DRHW_SONIC = 0x0110,
+  NUBUS_DRHW_KINETICS = 0x0106,
+  NUBUS_DRHW_CABLETRON = 0x0109,
+  NUBUS_DRHW_ASANTE_LC = 0x010f,
+  NUBUS_DRHW_SONIC = 0x0110,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_TECHWORKS = 0x0112,
- NUBUS_DRHW_APPLE_SONIC_NB = 0x0118,
- NUBUS_DRHW_APPLE_SONIC_LC = 0x0119,
- NUBUS_DRHW_FOCUS = 0x011c,
+  NUBUS_DRHW_TECHWORKS = 0x0112,
+  NUBUS_DRHW_APPLE_SONIC_NB = 0x0118,
+  NUBUS_DRHW_APPLE_SONIC_LC = 0x0119,
+  NUBUS_DRHW_FOCUS = 0x011c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_DRHW_SONNET = 0x011d,
+  NUBUS_DRHW_SONNET = 0x011d,
 };
 enum nubus_res_id {
- NUBUS_RESID_TYPE = 0x0001,
+  NUBUS_RESID_TYPE = 0x0001,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_NAME = 0x0002,
- NUBUS_RESID_ICON = 0x0003,
- NUBUS_RESID_DRVRDIR = 0x0004,
- NUBUS_RESID_LOADREC = 0x0005,
+  NUBUS_RESID_NAME = 0x0002,
+  NUBUS_RESID_ICON = 0x0003,
+  NUBUS_RESID_DRVRDIR = 0x0004,
+  NUBUS_RESID_LOADREC = 0x0005,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_BOOTREC = 0x0006,
- NUBUS_RESID_FLAGS = 0x0007,
- NUBUS_RESID_HWDEVID = 0x0008,
- NUBUS_RESID_MINOR_BASEOS = 0x000a,
+  NUBUS_RESID_BOOTREC = 0x0006,
+  NUBUS_RESID_FLAGS = 0x0007,
+  NUBUS_RESID_HWDEVID = 0x0008,
+  NUBUS_RESID_MINOR_BASEOS = 0x000a,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_MINOR_LENGTH = 0x000b,
- NUBUS_RESID_MAJOR_BASEOS = 0x000c,
- NUBUS_RESID_MAJOR_LENGTH = 0x000d,
- NUBUS_RESID_CICN = 0x000f,
+  NUBUS_RESID_MINOR_LENGTH = 0x000b,
+  NUBUS_RESID_MAJOR_BASEOS = 0x000c,
+  NUBUS_RESID_MAJOR_LENGTH = 0x000d,
+  NUBUS_RESID_CICN = 0x000f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_ICL8 = 0x0010,
- NUBUS_RESID_ICL4 = 0x0011,
+  NUBUS_RESID_ICL8 = 0x0010,
+  NUBUS_RESID_ICL4 = 0x0011,
 };
 enum nubus_board_res_id {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_BOARDID = 0x0020,
- NUBUS_RESID_PRAMINITDATA = 0x0021,
- NUBUS_RESID_PRIMARYINIT = 0x0022,
- NUBUS_RESID_TIMEOUTCONST = 0x0023,
+  NUBUS_RESID_BOARDID = 0x0020,
+  NUBUS_RESID_PRAMINITDATA = 0x0021,
+  NUBUS_RESID_PRIMARYINIT = 0x0022,
+  NUBUS_RESID_TIMEOUTCONST = 0x0023,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_VENDORINFO = 0x0024,
- NUBUS_RESID_BOARDFLAGS = 0x0025,
- NUBUS_RESID_SECONDINIT = 0x0026,
- NUBUS_RESID_VIDNAMES = 0x0041,
+  NUBUS_RESID_VENDORINFO = 0x0024,
+  NUBUS_RESID_BOARDFLAGS = 0x0025,
+  NUBUS_RESID_SECONDINIT = 0x0026,
+  NUBUS_RESID_VIDNAMES = 0x0041,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_VIDMODES = 0x007e
+  NUBUS_RESID_VIDMODES = 0x007e
 };
 enum nubus_vendor_res_id {
- NUBUS_RESID_VEND_ID = 0x0001,
+  NUBUS_RESID_VEND_ID = 0x0001,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_VEND_SERIAL = 0x0002,
- NUBUS_RESID_VEND_REV = 0x0003,
- NUBUS_RESID_VEND_PART = 0x0004,
- NUBUS_RESID_VEND_DATE = 0x0005
+  NUBUS_RESID_VEND_SERIAL = 0x0002,
+  NUBUS_RESID_VEND_REV = 0x0003,
+  NUBUS_RESID_VEND_PART = 0x0004,
+  NUBUS_RESID_VEND_DATE = 0x0005
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum nubus_net_res_id {
- NUBUS_RESID_MAC_ADDRESS = 0x0080
+  NUBUS_RESID_MAC_ADDRESS = 0x0080
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nubus_cpu_res_id {
- NUBUS_RESID_MEMINFO = 0x0081,
- NUBUS_RESID_ROMINFO = 0x0082
+  NUBUS_RESID_MEMINFO = 0x0081,
+  NUBUS_RESID_ROMINFO = 0x0082
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nubus_display_res_id {
- NUBUS_RESID_GAMMADIR = 0x0040,
- NUBUS_RESID_FIRSTMODE = 0x0080,
- NUBUS_RESID_SECONDMODE = 0x0081,
+  NUBUS_RESID_GAMMADIR = 0x0040,
+  NUBUS_RESID_FIRSTMODE = 0x0080,
+  NUBUS_RESID_SECONDMODE = 0x0081,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUBUS_RESID_THIRDMODE = 0x0082,
- NUBUS_RESID_FOURTHMODE = 0x0083,
- NUBUS_RESID_FIFTHMODE = 0x0084,
- NUBUS_RESID_SIXTHMODE = 0x0085
+  NUBUS_RESID_THIRDMODE = 0x0082,
+  NUBUS_RESID_FOURTHMODE = 0x0083,
+  NUBUS_RESID_FIFTHMODE = 0x0084,
+  NUBUS_RESID_SIXTHMODE = 0x0085
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-struct nubus_dir
-{
- unsigned char *base;
+struct nubus_dir {
+  unsigned char * base;
+  unsigned char * ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char *ptr;
- int done;
- int mask;
+  int done;
+  int mask;
 };
+struct nubus_dirent {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct nubus_dirent
-{
- unsigned char *base;
- unsigned char type;
+  unsigned char * base;
+  unsigned char type;
+  __u32 data;
+  int mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 data;
- int mask;
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/nvme.h b/libc/kernel/uapi/linux/nvme.h
index eedea90..030f01c 100644
--- a/libc/kernel/uapi/linux/nvme.h
+++ b/libc/kernel/uapi/linux/nvme.h
@@ -21,534 +21,575 @@
 #include <linux/types.h>
 struct nvme_id_power_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 max_power;
- __u8 rsvd2;
- __u8 flags;
- __le32 entry_lat;
+  __le16 max_power;
+  __u8 rsvd2;
+  __u8 flags;
+  __le32 entry_lat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 exit_lat;
- __u8 read_tput;
- __u8 read_lat;
- __u8 write_tput;
+  __le32 exit_lat;
+  __u8 read_tput;
+  __u8 read_lat;
+  __u8 write_tput;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 write_lat;
- __u8 rsvd16[16];
+  __u8 write_lat;
+  __le16 idle_power;
+  __u8 idle_scale;
+  __u8 rsvd19;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __le16 active_power;
+  __u8 active_work_scale;
+  __u8 rsvd23[9];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_PS_FLAGS_MAX_POWER_SCALE = 1 << 0,
- NVME_PS_FLAGS_NON_OP_STATE = 1 << 1,
+  NVME_PS_FLAGS_MAX_POWER_SCALE = 1 << 0,
+  NVME_PS_FLAGS_NON_OP_STATE = 1 << 1,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nvme_id_ctrl {
+  __le16 vid;
+  __le16 ssvid;
+  char sn[20];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 vid;
- __le16 ssvid;
- char sn[20];
- char mn[40];
+  char mn[40];
+  char fr[8];
+  __u8 rab;
+  __u8 ieee[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char fr[8];
- __u8 rab;
- __u8 ieee[3];
- __u8 mic;
+  __u8 mic;
+  __u8 mdts;
+  __u16 cntlid;
+  __u32 ver;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 mdts;
- __u8 rsvd78[178];
- __le16 oacs;
- __u8 acl;
+  __u8 rsvd84[172];
+  __le16 oacs;
+  __u8 acl;
+  __u8 aerl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 aerl;
- __u8 frmw;
- __u8 lpa;
- __u8 elpe;
+  __u8 frmw;
+  __u8 lpa;
+  __u8 elpe;
+  __u8 npss;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 npss;
- __u8 rsvd264[248];
- __u8 sqes;
- __u8 cqes;
+  __u8 avscc;
+  __u8 apsta;
+  __le16 wctemp;
+  __le16 cctemp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rsvd514[2];
- __le32 nn;
- __le16 oncs;
- __le16 fuses;
+  __u8 rsvd270[242];
+  __u8 sqes;
+  __u8 cqes;
+  __u8 rsvd514[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fna;
- __u8 vwc;
- __le16 awun;
- __le16 awupf;
+  __le32 nn;
+  __le16 oncs;
+  __le16 fuses;
+  __u8 fna;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rsvd530[1518];
- struct nvme_id_power_state psd[32];
- __u8 vs[1024];
+  __u8 vwc;
+  __le16 awun;
+  __le16 awupf;
+  __u8 nvscc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 rsvd531;
+  __le16 acwu;
+  __u8 rsvd534[2];
+  __le32 sgls;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 rsvd540[1508];
+  struct nvme_id_power_state psd[32];
+  __u8 vs[1024];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- NVME_CTRL_ONCS_COMPARE = 1 << 0,
- NVME_CTRL_ONCS_WRITE_UNCORRECTABLE = 1 << 1,
- NVME_CTRL_ONCS_DSM = 1 << 2,
+  NVME_CTRL_ONCS_COMPARE = 1 << 0,
+  NVME_CTRL_ONCS_WRITE_UNCORRECTABLE = 1 << 1,
+  NVME_CTRL_ONCS_DSM = 1 << 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NVME_CTRL_VWC_PRESENT = 1 << 0,
 };
 struct nvme_lbaf {
- __le16 ms;
- __u8 ds;
+  __le16 ms;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rp;
+  __u8 ds;
+  __u8 rp;
 };
 struct nvme_id_ns {
- __le64 nsze;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 ncap;
- __le64 nuse;
- __u8 nsfeat;
- __u8 nlbaf;
+  __le64 nsze;
+  __le64 ncap;
+  __le64 nuse;
+  __u8 nsfeat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flbas;
- __u8 mc;
- __u8 dpc;
- __u8 dps;
+  __u8 nlbaf;
+  __u8 flbas;
+  __u8 mc;
+  __u8 dpc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rsvd30[98];
- struct nvme_lbaf lbaf[16];
- __u8 rsvd192[192];
- __u8 vs[3712];
+  __u8 dps;
+  __u8 nmic;
+  __u8 rescap;
+  __u8 fpi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 rsvd33;
+  __le16 nawun;
+  __le16 nawupf;
+  __le16 nacwu;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 rsvd40[80];
+  __u8 eui64[8];
+  struct nvme_lbaf lbaf[16];
+  __u8 rsvd192[192];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 vs[3712];
 };
 enum {
- NVME_NS_FEAT_THIN = 1 << 0,
- NVME_LBAF_RP_BEST = 0,
+  NVME_NS_FEAT_THIN = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_LBAF_RP_BETTER = 1,
- NVME_LBAF_RP_GOOD = 2,
- NVME_LBAF_RP_DEGRADED = 3,
+  NVME_LBAF_RP_BEST = 0,
+  NVME_LBAF_RP_BETTER = 1,
+  NVME_LBAF_RP_GOOD = 2,
+  NVME_LBAF_RP_DEGRADED = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nvme_smart_log {
- __u8 critical_warning;
- __u8 temperature[2];
- __u8 avail_spare;
+  __u8 critical_warning;
+  __u8 temperature[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 spare_thresh;
- __u8 percent_used;
- __u8 rsvd6[26];
- __u8 data_units_read[16];
+  __u8 avail_spare;
+  __u8 spare_thresh;
+  __u8 percent_used;
+  __u8 rsvd6[26];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data_units_written[16];
- __u8 host_reads[16];
- __u8 host_writes[16];
- __u8 ctrl_busy_time[16];
+  __u8 data_units_read[16];
+  __u8 data_units_written[16];
+  __u8 host_reads[16];
+  __u8 host_writes[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 power_cycles[16];
- __u8 power_on_hours[16];
- __u8 unsafe_shutdowns[16];
- __u8 media_errors[16];
+  __u8 ctrl_busy_time[16];
+  __u8 power_cycles[16];
+  __u8 power_on_hours[16];
+  __u8 unsafe_shutdowns[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 num_err_log_entries[16];
- __u8 rsvd192[320];
+  __u8 media_errors[16];
+  __u8 num_err_log_entries[16];
+  __le32 warning_temp_time;
+  __le32 critical_comp_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __le16 temp_sensor[8];
+  __u8 rsvd216[296];
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SMART_CRIT_SPARE = 1 << 0,
- NVME_SMART_CRIT_TEMPERATURE = 1 << 1,
- NVME_SMART_CRIT_RELIABILITY = 1 << 2,
- NVME_SMART_CRIT_MEDIA = 1 << 3,
+  NVME_SMART_CRIT_SPARE = 1 << 0,
+  NVME_SMART_CRIT_TEMPERATURE = 1 << 1,
+  NVME_SMART_CRIT_RELIABILITY = 1 << 2,
+  NVME_SMART_CRIT_MEDIA = 1 << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SMART_CRIT_VOLATILE_MEMORY = 1 << 4,
+  NVME_SMART_CRIT_VOLATILE_MEMORY = 1 << 4,
 };
 struct nvme_lba_range_type {
- __u8 type;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 attributes;
- __u8 rsvd2[14];
- __u64 slba;
- __u64 nlb;
+  __u8 attributes;
+  __u8 rsvd2[14];
+  __u64 slba;
+  __u64 nlb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 guid[16];
- __u8 rsvd48[16];
+  __u8 guid[16];
+  __u8 rsvd48[16];
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_LBART_TYPE_FS = 0x01,
- NVME_LBART_TYPE_RAID = 0x02,
- NVME_LBART_TYPE_CACHE = 0x03,
- NVME_LBART_TYPE_SWAP = 0x04,
+  NVME_LBART_TYPE_FS = 0x01,
+  NVME_LBART_TYPE_RAID = 0x02,
+  NVME_LBART_TYPE_CACHE = 0x03,
+  NVME_LBART_TYPE_SWAP = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_LBART_ATTRIB_TEMP = 1 << 0,
- NVME_LBART_ATTRIB_HIDE = 1 << 1,
+  NVME_LBART_ATTRIB_TEMP = 1 << 0,
+  NVME_LBART_ATTRIB_HIDE = 1 << 1,
 };
 enum nvme_opcode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- nvme_cmd_flush = 0x00,
- nvme_cmd_write = 0x01,
- nvme_cmd_read = 0x02,
- nvme_cmd_write_uncor = 0x04,
+  nvme_cmd_flush = 0x00,
+  nvme_cmd_write = 0x01,
+  nvme_cmd_read = 0x02,
+  nvme_cmd_write_uncor = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- nvme_cmd_compare = 0x05,
- nvme_cmd_dsm = 0x09,
+  nvme_cmd_compare = 0x05,
+  nvme_cmd_dsm = 0x09,
 };
 struct nvme_common_command {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 opcode;
- __u8 flags;
- __u16 command_id;
- __le32 nsid;
+  __u8 opcode;
+  __u8 flags;
+  __u16 command_id;
+  __le32 nsid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 cdw2[2];
- __le64 metadata;
- __le64 prp1;
- __le64 prp2;
+  __le32 cdw2[2];
+  __le64 metadata;
+  __le64 prp1;
+  __le64 prp2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 cdw10[6];
+  __le32 cdw10[6];
 };
 struct nvme_rw_command {
- __u8 opcode;
+  __u8 opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- __u16 command_id;
- __le32 nsid;
- __u64 rsvd2;
+  __u8 flags;
+  __u16 command_id;
+  __le32 nsid;
+  __u64 rsvd2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 metadata;
- __le64 prp1;
- __le64 prp2;
- __le64 slba;
+  __le64 metadata;
+  __le64 prp1;
+  __le64 prp2;
+  __le64 slba;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 length;
- __le16 control;
- __le32 dsmgmt;
- __le32 reftag;
+  __le16 length;
+  __le16 control;
+  __le32 dsmgmt;
+  __le32 reftag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 apptag;
- __le16 appmask;
+  __le16 apptag;
+  __le16 appmask;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_RW_LR = 1 << 15,
- NVME_RW_FUA = 1 << 14,
- NVME_RW_DSM_FREQ_UNSPEC = 0,
- NVME_RW_DSM_FREQ_TYPICAL = 1,
+  NVME_RW_LR = 1 << 15,
+  NVME_RW_FUA = 1 << 14,
+  NVME_RW_DSM_FREQ_UNSPEC = 0,
+  NVME_RW_DSM_FREQ_TYPICAL = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_RW_DSM_FREQ_RARE = 2,
- NVME_RW_DSM_FREQ_READS = 3,
- NVME_RW_DSM_FREQ_WRITES = 4,
- NVME_RW_DSM_FREQ_RW = 5,
+  NVME_RW_DSM_FREQ_RARE = 2,
+  NVME_RW_DSM_FREQ_READS = 3,
+  NVME_RW_DSM_FREQ_WRITES = 4,
+  NVME_RW_DSM_FREQ_RW = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_RW_DSM_FREQ_ONCE = 6,
- NVME_RW_DSM_FREQ_PREFETCH = 7,
- NVME_RW_DSM_FREQ_TEMP = 8,
- NVME_RW_DSM_LATENCY_NONE = 0 << 4,
+  NVME_RW_DSM_FREQ_ONCE = 6,
+  NVME_RW_DSM_FREQ_PREFETCH = 7,
+  NVME_RW_DSM_FREQ_TEMP = 8,
+  NVME_RW_DSM_LATENCY_NONE = 0 << 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_RW_DSM_LATENCY_IDLE = 1 << 4,
- NVME_RW_DSM_LATENCY_NORM = 2 << 4,
- NVME_RW_DSM_LATENCY_LOW = 3 << 4,
- NVME_RW_DSM_SEQ_REQ = 1 << 6,
+  NVME_RW_DSM_LATENCY_IDLE = 1 << 4,
+  NVME_RW_DSM_LATENCY_NORM = 2 << 4,
+  NVME_RW_DSM_LATENCY_LOW = 3 << 4,
+  NVME_RW_DSM_SEQ_REQ = 1 << 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_RW_DSM_COMPRESSED = 1 << 7,
+  NVME_RW_DSM_COMPRESSED = 1 << 7,
 };
 struct nvme_dsm_cmd {
- __u8 opcode;
+  __u8 opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- __u16 command_id;
- __le32 nsid;
- __u64 rsvd2[2];
+  __u8 flags;
+  __u16 command_id;
+  __le32 nsid;
+  __u64 rsvd2[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 prp1;
- __le64 prp2;
- __le32 nr;
- __le32 attributes;
+  __le64 prp1;
+  __le64 prp2;
+  __le32 nr;
+  __le32 attributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rsvd12[4];
+  __u32 rsvd12[4];
 };
 enum {
- NVME_DSMGMT_IDR = 1 << 0,
+  NVME_DSMGMT_IDR = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_DSMGMT_IDW = 1 << 1,
- NVME_DSMGMT_AD = 1 << 2,
+  NVME_DSMGMT_IDW = 1 << 1,
+  NVME_DSMGMT_AD = 1 << 2,
 };
 struct nvme_dsm_range {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 cattr;
- __le32 nlb;
- __le64 slba;
+  __le32 cattr;
+  __le32 nlb;
+  __le64 slba;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nvme_admin_opcode {
- nvme_admin_delete_sq = 0x00,
- nvme_admin_create_sq = 0x01,
- nvme_admin_get_log_page = 0x02,
+  nvme_admin_delete_sq = 0x00,
+  nvme_admin_create_sq = 0x01,
+  nvme_admin_get_log_page = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- nvme_admin_delete_cq = 0x04,
- nvme_admin_create_cq = 0x05,
- nvme_admin_identify = 0x06,
- nvme_admin_abort_cmd = 0x08,
+  nvme_admin_delete_cq = 0x04,
+  nvme_admin_create_cq = 0x05,
+  nvme_admin_identify = 0x06,
+  nvme_admin_abort_cmd = 0x08,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- nvme_admin_set_features = 0x09,
- nvme_admin_get_features = 0x0a,
- nvme_admin_async_event = 0x0c,
- nvme_admin_activate_fw = 0x10,
+  nvme_admin_set_features = 0x09,
+  nvme_admin_get_features = 0x0a,
+  nvme_admin_async_event = 0x0c,
+  nvme_admin_activate_fw = 0x10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- nvme_admin_download_fw = 0x11,
- nvme_admin_format_nvm = 0x80,
- nvme_admin_security_send = 0x81,
- nvme_admin_security_recv = 0x82,
+  nvme_admin_download_fw = 0x11,
+  nvme_admin_format_nvm = 0x80,
+  nvme_admin_security_send = 0x81,
+  nvme_admin_security_recv = 0x82,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- NVME_QUEUE_PHYS_CONTIG = (1 << 0),
- NVME_CQ_IRQ_ENABLED = (1 << 1),
+  NVME_QUEUE_PHYS_CONTIG = (1 << 0),
+  NVME_CQ_IRQ_ENABLED = (1 << 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SQ_PRIO_URGENT = (0 << 1),
- NVME_SQ_PRIO_HIGH = (1 << 1),
- NVME_SQ_PRIO_MEDIUM = (2 << 1),
- NVME_SQ_PRIO_LOW = (3 << 1),
+  NVME_SQ_PRIO_URGENT = (0 << 1),
+  NVME_SQ_PRIO_HIGH = (1 << 1),
+  NVME_SQ_PRIO_MEDIUM = (2 << 1),
+  NVME_SQ_PRIO_LOW = (3 << 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_FEAT_ARBITRATION = 0x01,
- NVME_FEAT_POWER_MGMT = 0x02,
- NVME_FEAT_LBA_RANGE = 0x03,
- NVME_FEAT_TEMP_THRESH = 0x04,
+  NVME_FEAT_ARBITRATION = 0x01,
+  NVME_FEAT_POWER_MGMT = 0x02,
+  NVME_FEAT_LBA_RANGE = 0x03,
+  NVME_FEAT_TEMP_THRESH = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_FEAT_ERR_RECOVERY = 0x05,
- NVME_FEAT_VOLATILE_WC = 0x06,
- NVME_FEAT_NUM_QUEUES = 0x07,
- NVME_FEAT_IRQ_COALESCE = 0x08,
+  NVME_FEAT_ERR_RECOVERY = 0x05,
+  NVME_FEAT_VOLATILE_WC = 0x06,
+  NVME_FEAT_NUM_QUEUES = 0x07,
+  NVME_FEAT_IRQ_COALESCE = 0x08,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_FEAT_IRQ_CONFIG = 0x09,
- NVME_FEAT_WRITE_ATOMIC = 0x0a,
- NVME_FEAT_ASYNC_EVENT = 0x0b,
- NVME_FEAT_SW_PROGRESS = 0x0c,
+  NVME_FEAT_IRQ_CONFIG = 0x09,
+  NVME_FEAT_WRITE_ATOMIC = 0x0a,
+  NVME_FEAT_ASYNC_EVENT = 0x0b,
+  NVME_FEAT_SW_PROGRESS = 0x0c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_FWACT_REPL = (0 << 3),
- NVME_FWACT_REPL_ACTV = (1 << 3),
- NVME_FWACT_ACTV = (2 << 3),
+  NVME_LOG_ERROR = 0x01,
+  NVME_LOG_SMART = 0x02,
+  NVME_LOG_FW_SLOT = 0x03,
+  NVME_LOG_RESERVATION = 0x80,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NVME_FWACT_REPL = (0 << 3),
+  NVME_FWACT_REPL_ACTV = (1 << 3),
+  NVME_FWACT_ACTV = (2 << 3),
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nvme_identify {
- __u8 opcode;
- __u8 flags;
- __u16 command_id;
+  __u8 opcode;
+  __u8 flags;
+  __u16 command_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 nsid;
- __u64 rsvd2[2];
- __le64 prp1;
- __le64 prp2;
+  __le32 nsid;
+  __u64 rsvd2[2];
+  __le64 prp1;
+  __le64 prp2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 cns;
- __u32 rsvd11[5];
+  __le32 cns;
+  __u32 rsvd11[5];
 };
 struct nvme_features {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 opcode;
- __u8 flags;
- __u16 command_id;
- __le32 nsid;
+  __u8 opcode;
+  __u8 flags;
+  __u16 command_id;
+  __le32 nsid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rsvd2[2];
- __le64 prp1;
- __le64 prp2;
- __le32 fid;
+  __u64 rsvd2[2];
+  __le64 prp1;
+  __le64 prp2;
+  __le32 fid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 dword11;
- __u32 rsvd12[4];
+  __le32 dword11;
+  __u32 rsvd12[4];
 };
 struct nvme_create_cq {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 opcode;
- __u8 flags;
- __u16 command_id;
- __u32 rsvd1[5];
+  __u8 opcode;
+  __u8 flags;
+  __u16 command_id;
+  __u32 rsvd1[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 prp1;
- __u64 rsvd8;
- __le16 cqid;
- __le16 qsize;
+  __le64 prp1;
+  __u64 rsvd8;
+  __le16 cqid;
+  __le16 qsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 cq_flags;
- __le16 irq_vector;
- __u32 rsvd12[4];
+  __le16 cq_flags;
+  __le16 irq_vector;
+  __u32 rsvd12[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nvme_create_sq {
- __u8 opcode;
- __u8 flags;
- __u16 command_id;
+  __u8 opcode;
+  __u8 flags;
+  __u16 command_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rsvd1[5];
- __le64 prp1;
- __u64 rsvd8;
- __le16 sqid;
+  __u32 rsvd1[5];
+  __le64 prp1;
+  __u64 rsvd8;
+  __le16 sqid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 qsize;
- __le16 sq_flags;
- __le16 cqid;
- __u32 rsvd12[4];
+  __le16 qsize;
+  __le16 sq_flags;
+  __le16 cqid;
+  __u32 rsvd12[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct nvme_delete_queue {
- __u8 opcode;
- __u8 flags;
+  __u8 opcode;
+  __u8 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 command_id;
- __u32 rsvd1[9];
- __le16 qid;
- __u16 rsvd10;
+  __u16 command_id;
+  __u32 rsvd1[9];
+  __le16 qid;
+  __u16 rsvd10;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rsvd11[5];
+  __u32 rsvd11[5];
 };
 struct nvme_abort_cmd {
- __u8 opcode;
+  __u8 opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- __u16 command_id;
- __u32 rsvd1[9];
- __le16 sqid;
+  __u8 flags;
+  __u16 command_id;
+  __u32 rsvd1[9];
+  __le16 sqid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 cid;
- __u32 rsvd11[5];
+  __u16 cid;
+  __u32 rsvd11[5];
 };
 struct nvme_download_firmware {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 opcode;
- __u8 flags;
- __u16 command_id;
- __u32 rsvd1[5];
+  __u8 opcode;
+  __u8 flags;
+  __u16 command_id;
+  __u32 rsvd1[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 prp1;
- __le64 prp2;
- __le32 numd;
- __le32 offset;
+  __le64 prp1;
+  __le64 prp2;
+  __le32 numd;
+  __le32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rsvd12[4];
+  __u32 rsvd12[4];
 };
 struct nvme_format_cmd {
- __u8 opcode;
+  __u8 opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flags;
- __u16 command_id;
- __le32 nsid;
- __u64 rsvd2[4];
+  __u8 flags;
+  __u16 command_id;
+  __le32 nsid;
+  __u64 rsvd2[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 cdw10;
- __u32 rsvd11[5];
+  __le32 cdw10;
+  __u32 rsvd11[5];
 };
 struct nvme_command {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct nvme_common_command common;
- struct nvme_rw_command rw;
- struct nvme_identify identify;
+  union {
+    struct nvme_common_command common;
+    struct nvme_rw_command rw;
+    struct nvme_identify identify;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct nvme_features features;
- struct nvme_create_cq create_cq;
- struct nvme_create_sq create_sq;
- struct nvme_delete_queue delete_queue;
+    struct nvme_features features;
+    struct nvme_create_cq create_cq;
+    struct nvme_create_sq create_sq;
+    struct nvme_delete_queue delete_queue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct nvme_download_firmware dlfw;
- struct nvme_format_cmd format;
- struct nvme_dsm_cmd dsm;
- struct nvme_abort_cmd abort;
+    struct nvme_download_firmware dlfw;
+    struct nvme_format_cmd format;
+    struct nvme_dsm_cmd dsm;
+    struct nvme_abort_cmd abort;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+  };
 };
 enum {
- NVME_SC_SUCCESS = 0x0,
+  NVME_SC_SUCCESS = 0x0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_INVALID_OPCODE = 0x1,
- NVME_SC_INVALID_FIELD = 0x2,
- NVME_SC_CMDID_CONFLICT = 0x3,
- NVME_SC_DATA_XFER_ERROR = 0x4,
+  NVME_SC_INVALID_OPCODE = 0x1,
+  NVME_SC_INVALID_FIELD = 0x2,
+  NVME_SC_CMDID_CONFLICT = 0x3,
+  NVME_SC_DATA_XFER_ERROR = 0x4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_POWER_LOSS = 0x5,
- NVME_SC_INTERNAL = 0x6,
- NVME_SC_ABORT_REQ = 0x7,
- NVME_SC_ABORT_QUEUE = 0x8,
+  NVME_SC_POWER_LOSS = 0x5,
+  NVME_SC_INTERNAL = 0x6,
+  NVME_SC_ABORT_REQ = 0x7,
+  NVME_SC_ABORT_QUEUE = 0x8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_FUSED_FAIL = 0x9,
- NVME_SC_FUSED_MISSING = 0xa,
- NVME_SC_INVALID_NS = 0xb,
- NVME_SC_CMD_SEQ_ERROR = 0xc,
+  NVME_SC_FUSED_FAIL = 0x9,
+  NVME_SC_FUSED_MISSING = 0xa,
+  NVME_SC_INVALID_NS = 0xb,
+  NVME_SC_CMD_SEQ_ERROR = 0xc,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_LBA_RANGE = 0x80,
- NVME_SC_CAP_EXCEEDED = 0x81,
- NVME_SC_NS_NOT_READY = 0x82,
- NVME_SC_CQ_INVALID = 0x100,
+  NVME_SC_LBA_RANGE = 0x80,
+  NVME_SC_CAP_EXCEEDED = 0x81,
+  NVME_SC_NS_NOT_READY = 0x82,
+  NVME_SC_CQ_INVALID = 0x100,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_QID_INVALID = 0x101,
- NVME_SC_QUEUE_SIZE = 0x102,
- NVME_SC_ABORT_LIMIT = 0x103,
- NVME_SC_ABORT_MISSING = 0x104,
+  NVME_SC_QID_INVALID = 0x101,
+  NVME_SC_QUEUE_SIZE = 0x102,
+  NVME_SC_ABORT_LIMIT = 0x103,
+  NVME_SC_ABORT_MISSING = 0x104,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_ASYNC_LIMIT = 0x105,
- NVME_SC_FIRMWARE_SLOT = 0x106,
- NVME_SC_FIRMWARE_IMAGE = 0x107,
- NVME_SC_INVALID_VECTOR = 0x108,
+  NVME_SC_ASYNC_LIMIT = 0x105,
+  NVME_SC_FIRMWARE_SLOT = 0x106,
+  NVME_SC_FIRMWARE_IMAGE = 0x107,
+  NVME_SC_INVALID_VECTOR = 0x108,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_INVALID_LOG_PAGE = 0x109,
- NVME_SC_INVALID_FORMAT = 0x10a,
- NVME_SC_BAD_ATTRIBUTES = 0x180,
- NVME_SC_WRITE_FAULT = 0x280,
+  NVME_SC_INVALID_LOG_PAGE = 0x109,
+  NVME_SC_INVALID_FORMAT = 0x10a,
+  NVME_SC_BAD_ATTRIBUTES = 0x180,
+  NVME_SC_WRITE_FAULT = 0x280,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_READ_ERROR = 0x281,
- NVME_SC_GUARD_CHECK = 0x282,
- NVME_SC_APPTAG_CHECK = 0x283,
- NVME_SC_REFTAG_CHECK = 0x284,
+  NVME_SC_READ_ERROR = 0x281,
+  NVME_SC_GUARD_CHECK = 0x282,
+  NVME_SC_APPTAG_CHECK = 0x283,
+  NVME_SC_REFTAG_CHECK = 0x284,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NVME_SC_COMPARE_FAILED = 0x285,
- NVME_SC_ACCESS_DENIED = 0x286,
+  NVME_SC_COMPARE_FAILED = 0x285,
+  NVME_SC_ACCESS_DENIED = 0x286,
+  NVME_SC_DNR = 0x4000,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nvme_completion {
+  __le32 result;
+  __u32 rsvd;
+  __le16 sq_head;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 result;
- __u32 rsvd;
- __le16 sq_head;
- __le16 sq_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 command_id;
- __le16 status;
+  __le16 sq_id;
+  __u16 command_id;
+  __le16 status;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nvme_user_io {
+  __u8 opcode;
+  __u8 flags;
+  __u16 control;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 opcode;
- __u8 flags;
- __u16 control;
- __u16 nblocks;
+  __u16 nblocks;
+  __u16 rsvd;
+  __u64 metadata;
+  __u64 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 rsvd;
- __u64 metadata;
- __u64 addr;
- __u64 slba;
+  __u64 slba;
+  __u32 dsmgmt;
+  __u32 reftag;
+  __u16 apptag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dsmgmt;
- __u32 reftag;
- __u16 apptag;
- __u16 appmask;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 appmask;
 };
 struct nvme_admin_cmd {
- __u8 opcode;
- __u8 flags;
+  __u8 opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 rsvd1;
- __u32 nsid;
- __u32 cdw2;
- __u32 cdw3;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 metadata;
- __u64 addr;
- __u32 metadata_len;
- __u32 data_len;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cdw10;
- __u32 cdw11;
- __u32 cdw12;
- __u32 cdw13;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cdw14;
- __u32 cdw15;
- __u32 timeout_ms;
- __u32 result;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 result;
 };
 #define NVME_IOCTL_ID _IO('N', 0x40)
 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
-#define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, struct nvme_user_io)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, struct nvme_user_io)
 #endif
diff --git a/libc/kernel/uapi/linux/nvram.h b/libc/kernel/uapi/linux/nvram.h
index 4c8fc50..e0c320a 100644
--- a/libc/kernel/uapi/linux/nvram.h
+++ b/libc/kernel/uapi/linux/nvram.h
@@ -23,6 +23,6 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NVRAM_SETCKS _IO('p', 0x41)
 #define NVRAM_FIRST_BYTE 14
-#define NVRAM_OFFSET(x) ((x)-NVRAM_FIRST_BYTE)
+#define NVRAM_OFFSET(x) ((x) - NVRAM_FIRST_BYTE)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/omap3isp.h b/libc/kernel/uapi/linux/omap3isp.h
index e103808..3cba4e4 100644
--- a/libc/kernel/uapi/linux/omap3isp.h
+++ b/libc/kernel/uapi/linux/omap3isp.h
@@ -21,14 +21,14 @@
 #include <linux/types.h>
 #include <linux/videodev2.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VIDIOC_OMAP3ISP_CCDC_CFG   _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct omap3isp_ccdc_update_config)
-#define VIDIOC_OMAP3ISP_PRV_CFG   _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct omap3isp_prev_update_config)
-#define VIDIOC_OMAP3ISP_AEWB_CFG   _IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct omap3isp_h3a_aewb_config)
-#define VIDIOC_OMAP3ISP_HIST_CFG   _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct omap3isp_hist_config)
+#define VIDIOC_OMAP3ISP_CCDC_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct omap3isp_ccdc_update_config)
+#define VIDIOC_OMAP3ISP_PRV_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct omap3isp_prev_update_config)
+#define VIDIOC_OMAP3ISP_AEWB_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct omap3isp_h3a_aewb_config)
+#define VIDIOC_OMAP3ISP_HIST_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct omap3isp_hist_config)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VIDIOC_OMAP3ISP_AF_CFG   _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct omap3isp_h3a_af_config)
-#define VIDIOC_OMAP3ISP_STAT_REQ   _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct omap3isp_stat_data)
-#define VIDIOC_OMAP3ISP_STAT_EN   _IOWR('V', BASE_VIDIOC_PRIVATE + 7, unsigned long)
+#define VIDIOC_OMAP3ISP_AF_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct omap3isp_h3a_af_config)
+#define VIDIOC_OMAP3ISP_STAT_REQ _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct omap3isp_stat_data)
+#define VIDIOC_OMAP3ISP_STAT_EN _IOWR('V', BASE_VIDIOC_PRIVATE + 7, unsigned long)
 #define V4L2_EVENT_OMAP3ISP_CLASS (V4L2_EVENT_PRIVATE_START | 0x100)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_EVENT_OMAP3ISP_AEWB (V4L2_EVENT_OMAP3ISP_CLASS | 0x1)
@@ -36,9 +36,9 @@
 #define V4L2_EVENT_OMAP3ISP_HIST (V4L2_EVENT_OMAP3ISP_CLASS | 0x3)
 struct omap3isp_stat_event_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 frame_number;
- __u16 config_counter;
- __u8 buf_err;
+  __u32 frame_number;
+  __u16 config_counter;
+  __u8 buf_err;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP3ISP_AEWB_MAX_SATURATION_LIM 1023
@@ -83,33 +83,33 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP3ISP_AF_MAX_BUF_SIZE 221184
 struct omap3isp_h3a_aewb_config {
- __u32 buf_size;
- __u16 config_counter;
+  __u32 buf_size;
+  __u16 config_counter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 saturation_limit;
- __u16 win_height;
- __u16 win_width;
- __u16 ver_win_count;
+  __u16 saturation_limit;
+  __u16 win_height;
+  __u16 win_width;
+  __u16 ver_win_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 hor_win_count;
- __u16 ver_win_start;
- __u16 hor_win_start;
- __u16 blk_ver_win_start;
+  __u16 hor_win_count;
+  __u16 ver_win_start;
+  __u16 hor_win_start;
+  __u16 blk_ver_win_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 blk_win_height;
- __u16 subsample_ver_inc;
- __u16 subsample_hor_inc;
- __u8 alaw_enable;
+  __u16 blk_win_height;
+  __u16 subsample_ver_inc;
+  __u16 subsample_hor_inc;
+  __u8 alaw_enable;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_stat_data {
- struct timeval ts;
- void __user *buf;
+  struct timeval ts;
+  void __user * buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 buf_size;
- __u16 frame_number;
- __u16 cur_frame;
- __u16 config_counter;
+  __u32 buf_size;
+  __u16 frame_number;
+  __u16 cur_frame;
+  __u16 config_counter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define OMAP3ISP_HIST_BINS_32 0
@@ -117,7 +117,7 @@
 #define OMAP3ISP_HIST_BINS_128 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP3ISP_HIST_BINS_256 3
-#define OMAP3ISP_HIST_MEM_SIZE_BINS(n) ((1 << ((n)+5))*4*4)
+#define OMAP3ISP_HIST_MEM_SIZE_BINS(n) ((1 << ((n) + 5)) * 4 * 4)
 #define OMAP3ISP_HIST_MEM_SIZE 1024
 #define OMAP3ISP_HIST_MIN_REGIONS 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -136,74 +136,74 @@
 #define OMAP3ISP_HIST_CFA_FOVEONX3 1
 struct omap3isp_hist_region {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 h_start;
- __u16 h_end;
- __u16 v_start;
- __u16 v_end;
+  __u16 h_start;
+  __u16 h_end;
+  __u16 v_start;
+  __u16 v_end;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_hist_config {
- __u32 buf_size;
- __u16 config_counter;
+  __u32 buf_size;
+  __u16 config_counter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 num_acc_frames;
- __u16 hist_bins;
- __u8 cfa;
- __u8 wg[OMAP3ISP_HIST_MAX_WG];
+  __u8 num_acc_frames;
+  __u16 hist_bins;
+  __u8 cfa;
+  __u8 wg[OMAP3ISP_HIST_MAX_WG];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 num_regions;
- struct omap3isp_hist_region region[OMAP3ISP_HIST_MAX_REGIONS];
+  __u8 num_regions;
+  struct omap3isp_hist_region region[OMAP3ISP_HIST_MAX_REGIONS];
 };
 #define OMAP3ISP_AF_NUM_COEF 11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum omap3isp_h3a_af_fvmode {
- OMAP3ISP_AF_MODE_SUMMED = 0,
- OMAP3ISP_AF_MODE_PEAK = 1
+  OMAP3ISP_AF_MODE_SUMMED = 0,
+  OMAP3ISP_AF_MODE_PEAK = 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum omap3isp_h3a_af_rgbpos {
- OMAP3ISP_AF_GR_GB_BAYER = 0,
- OMAP3ISP_AF_RG_GB_BAYER = 1,
- OMAP3ISP_AF_GR_BG_BAYER = 2,
+  OMAP3ISP_AF_GR_GB_BAYER = 0,
+  OMAP3ISP_AF_RG_GB_BAYER = 1,
+  OMAP3ISP_AF_GR_BG_BAYER = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAP3ISP_AF_RG_BG_BAYER = 3,
- OMAP3ISP_AF_GG_RB_CUSTOM = 4,
- OMAP3ISP_AF_RB_GG_CUSTOM = 5
+  OMAP3ISP_AF_RG_BG_BAYER = 3,
+  OMAP3ISP_AF_GG_RB_CUSTOM = 4,
+  OMAP3ISP_AF_RB_GG_CUSTOM = 5
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap3isp_h3a_af_hmf {
- __u8 enable;
- __u8 threshold;
+  __u8 enable;
+  __u8 threshold;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap3isp_h3a_af_iir {
- __u16 h_start;
- __u16 coeff_set0[OMAP3ISP_AF_NUM_COEF];
- __u16 coeff_set1[OMAP3ISP_AF_NUM_COEF];
+  __u16 h_start;
+  __u16 coeff_set0[OMAP3ISP_AF_NUM_COEF];
+  __u16 coeff_set1[OMAP3ISP_AF_NUM_COEF];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_h3a_af_paxel {
- __u16 h_start;
- __u16 v_start;
+  __u16 h_start;
+  __u16 v_start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 width;
- __u8 height;
- __u8 h_cnt;
- __u8 v_cnt;
+  __u8 width;
+  __u8 height;
+  __u8 h_cnt;
+  __u8 v_cnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 line_inc;
+  __u8 line_inc;
 };
 struct omap3isp_h3a_af_config {
- __u32 buf_size;
+  __u32 buf_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 config_counter;
- struct omap3isp_h3a_af_hmf hmf;
- struct omap3isp_h3a_af_iir iir;
- struct omap3isp_h3a_af_paxel paxel;
+  __u16 config_counter;
+  struct omap3isp_h3a_af_hmf hmf;
+  struct omap3isp_h3a_af_iir iir;
+  struct omap3isp_h3a_af_paxel paxel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum omap3isp_h3a_af_rgbpos rgb_pos;
- enum omap3isp_h3a_af_fvmode fvmode;
- __u8 alaw_enable;
+  enum omap3isp_h3a_af_rgbpos rgb_pos;
+  enum omap3isp_h3a_af_fvmode fvmode;
+  __u8 alaw_enable;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP3ISP_CCDC_ALAW (1 << 0)
@@ -218,68 +218,68 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP3ISP_RGB_MAX 3
 enum omap3isp_alaw_ipwidth {
- OMAP3ISP_ALAW_BIT12_3 = 0x3,
- OMAP3ISP_ALAW_BIT11_2 = 0x4,
+  OMAP3ISP_ALAW_BIT12_3 = 0x3,
+  OMAP3ISP_ALAW_BIT11_2 = 0x4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAP3ISP_ALAW_BIT10_1 = 0x5,
- OMAP3ISP_ALAW_BIT9_0 = 0x6
+  OMAP3ISP_ALAW_BIT10_1 = 0x5,
+  OMAP3ISP_ALAW_BIT9_0 = 0x6
 };
 struct omap3isp_ccdc_lsc_config {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 offset;
- __u8 gain_mode_n;
- __u8 gain_mode_m;
- __u8 gain_format;
+  __u16 offset;
+  __u8 gain_mode_n;
+  __u8 gain_mode_m;
+  __u8 gain_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 fmtsph;
- __u16 fmtlnh;
- __u16 fmtslv;
- __u16 fmtlnv;
+  __u16 fmtsph;
+  __u16 fmtlnh;
+  __u16 fmtslv;
+  __u16 fmtlnv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 initial_x;
- __u8 initial_y;
- __u32 size;
+  __u8 initial_x;
+  __u8 initial_y;
+  __u32 size;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap3isp_ccdc_bclamp {
- __u8 obgain;
- __u8 obstpixel;
- __u8 oblines;
+  __u8 obgain;
+  __u8 obstpixel;
+  __u8 oblines;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 oblen;
- __u16 dcsubval;
+  __u8 oblen;
+  __u16 dcsubval;
 };
 struct omap3isp_ccdc_fpc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 fpnum;
- __u32 fpcaddr;
+  __u16 fpnum;
+  __u32 fpcaddr;
 };
 struct omap3isp_ccdc_blcomp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 b_mg;
- __u8 gb_g;
- __u8 gr_cy;
- __u8 r_ye;
+  __u8 b_mg;
+  __u8 gb_g;
+  __u8 gr_cy;
+  __u8 r_ye;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_ccdc_culling {
- __u8 v_pattern;
- __u16 h_odd;
+  __u8 v_pattern;
+  __u16 h_odd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 h_even;
+  __u16 h_even;
 };
 struct omap3isp_ccdc_update_config {
- __u16 update;
+  __u16 update;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flag;
- enum omap3isp_alaw_ipwidth alawip;
- struct omap3isp_ccdc_bclamp __user *bclamp;
- struct omap3isp_ccdc_blcomp __user *blcomp;
+  __u16 flag;
+  enum omap3isp_alaw_ipwidth alawip;
+  struct omap3isp_ccdc_bclamp __user * bclamp;
+  struct omap3isp_ccdc_blcomp __user * blcomp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct omap3isp_ccdc_fpc __user *fpc;
- struct omap3isp_ccdc_lsc_config __user *lsc_cfg;
- struct omap3isp_ccdc_culling __user *cull;
- __u8 __user *lsc;
+  struct omap3isp_ccdc_fpc __user * fpc;
+  struct omap3isp_ccdc_lsc_config __user * lsc_cfg;
+  struct omap3isp_ccdc_culling __user * cull;
+  __u8 __user * lsc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define OMAP3ISP_PREV_LUMAENH (1 << 0)
@@ -311,106 +311,106 @@
 #define OMAP3ISP_PREV_DETECT_CORRECT_CHANNELS 4
 struct omap3isp_prev_hmed {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 odddist;
- __u8 evendist;
- __u8 thres;
+  __u8 odddist;
+  __u8 evendist;
+  __u8 thres;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum omap3isp_cfa_fmt {
- OMAP3ISP_CFAFMT_BAYER,
- OMAP3ISP_CFAFMT_SONYVGA,
- OMAP3ISP_CFAFMT_RGBFOVEON,
+  OMAP3ISP_CFAFMT_BAYER,
+  OMAP3ISP_CFAFMT_SONYVGA,
+  OMAP3ISP_CFAFMT_RGBFOVEON,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAP3ISP_CFAFMT_DNSPL,
- OMAP3ISP_CFAFMT_HONEYCOMB,
- OMAP3ISP_CFAFMT_RRGGBBFOVEON
+  OMAP3ISP_CFAFMT_DNSPL,
+  OMAP3ISP_CFAFMT_HONEYCOMB,
+  OMAP3ISP_CFAFMT_RRGGBBFOVEON
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap3isp_prev_cfa {
- enum omap3isp_cfa_fmt format;
- __u8 gradthrs_vert;
- __u8 gradthrs_horz;
+  enum omap3isp_cfa_fmt format;
+  __u8 gradthrs_vert;
+  __u8 gradthrs_horz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 table[4][OMAP3ISP_PREV_CFA_BLK_SIZE];
+  __u32 table[4][OMAP3ISP_PREV_CFA_BLK_SIZE];
 };
 struct omap3isp_prev_csup {
- __u8 gain;
+  __u8 gain;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 thres;
- __u8 hypf_en;
+  __u8 thres;
+  __u8 hypf_en;
 };
 struct omap3isp_prev_wbal {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 dgain;
- __u8 coef3;
- __u8 coef2;
- __u8 coef1;
+  __u16 dgain;
+  __u8 coef3;
+  __u8 coef2;
+  __u8 coef1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 coef0;
+  __u8 coef0;
 };
 struct omap3isp_prev_blkadj {
- __u8 red;
+  __u8 red;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 green;
- __u8 blue;
+  __u8 green;
+  __u8 blue;
 };
 struct omap3isp_prev_rgbtorgb {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX];
- __u16 offset[OMAP3ISP_RGB_MAX];
+  __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX];
+  __u16 offset[OMAP3ISP_RGB_MAX];
 };
 struct omap3isp_prev_csc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX];
- __s16 offset[OMAP3ISP_RGB_MAX];
+  __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX];
+  __s16 offset[OMAP3ISP_RGB_MAX];
 };
 struct omap3isp_prev_yclimit {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 minC;
- __u8 maxC;
- __u8 minY;
- __u8 maxY;
+  __u8 minC;
+  __u8 maxC;
+  __u8 minY;
+  __u8 maxY;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_prev_dcor {
- __u8 couplet_mode_en;
- __u32 detect_correct[OMAP3ISP_PREV_DETECT_CORRECT_CHANNELS];
+  __u8 couplet_mode_en;
+  __u32 detect_correct[OMAP3ISP_PREV_DETECT_CORRECT_CHANNELS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_prev_nf {
- __u8 spread;
- __u32 table[OMAP3ISP_PREV_NF_TBL_SIZE];
+  __u8 spread;
+  __u32 table[OMAP3ISP_PREV_NF_TBL_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_prev_gtables {
- __u32 red[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
- __u32 green[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
+  __u32 red[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
+  __u32 green[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 blue[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
+  __u32 blue[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
 };
 struct omap3isp_prev_luma {
- __u32 table[OMAP3ISP_PREV_YENH_TBL_SIZE];
+  __u32 table[OMAP3ISP_PREV_YENH_TBL_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omap3isp_prev_update_config {
- __u32 update;
- __u32 flag;
+  __u32 update;
+  __u32 flag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 shading_shift;
- struct omap3isp_prev_luma __user *luma;
- struct omap3isp_prev_hmed __user *hmed;
- struct omap3isp_prev_cfa __user *cfa;
+  __u32 shading_shift;
+  struct omap3isp_prev_luma __user * luma;
+  struct omap3isp_prev_hmed __user * hmed;
+  struct omap3isp_prev_cfa __user * cfa;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct omap3isp_prev_csup __user *csup;
- struct omap3isp_prev_wbal __user *wbal;
- struct omap3isp_prev_blkadj __user *blkadj;
- struct omap3isp_prev_rgbtorgb __user *rgb2rgb;
+  struct omap3isp_prev_csup __user * csup;
+  struct omap3isp_prev_wbal __user * wbal;
+  struct omap3isp_prev_blkadj __user * blkadj;
+  struct omap3isp_prev_rgbtorgb __user * rgb2rgb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct omap3isp_prev_csc __user *csc;
- struct omap3isp_prev_yclimit __user *yclimit;
- struct omap3isp_prev_dcor __user *dcor;
- struct omap3isp_prev_nf __user *nf;
+  struct omap3isp_prev_csc __user * csc;
+  struct omap3isp_prev_yclimit __user * yclimit;
+  struct omap3isp_prev_dcor __user * dcor;
+  struct omap3isp_prev_nf __user * nf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct omap3isp_prev_gtables __user *gamma;
+  struct omap3isp_prev_gtables __user * gamma;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/omapfb.h b/libc/kernel/uapi/linux/omapfb.h
index 07e8b9f..d8edaef 100644
--- a/libc/kernel/uapi/linux/omapfb.h
+++ b/libc/kernel/uapi/linux/omapfb.h
@@ -22,9 +22,9 @@
 #include <linux/ioctl.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
-#define OMAP_IOW(num, dtype) _IOW('O', num, dtype)
-#define OMAP_IOR(num, dtype) _IOR('O', num, dtype)
-#define OMAP_IOWR(num, dtype) _IOWR('O', num, dtype)
+#define OMAP_IOW(num,dtype) _IOW('O', num, dtype)
+#define OMAP_IOR(num,dtype) _IOR('O', num, dtype)
+#define OMAP_IOWR(num,dtype) _IOWR('O', num, dtype)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_IO(num) _IO('O', num)
 #define OMAPFB_MIRROR OMAP_IOW(31, int)
@@ -86,144 +86,144 @@
 #define OMAPFB_MEM_IDX_MASK 0x7f
 enum omapfb_color_format {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_COLOR_RGB565 = 0,
- OMAPFB_COLOR_YUV422,
- OMAPFB_COLOR_YUV420,
- OMAPFB_COLOR_CLUT_8BPP,
+  OMAPFB_COLOR_RGB565 = 0,
+  OMAPFB_COLOR_YUV422,
+  OMAPFB_COLOR_YUV420,
+  OMAPFB_COLOR_CLUT_8BPP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_COLOR_CLUT_4BPP,
- OMAPFB_COLOR_CLUT_2BPP,
- OMAPFB_COLOR_CLUT_1BPP,
- OMAPFB_COLOR_RGB444,
+  OMAPFB_COLOR_CLUT_4BPP,
+  OMAPFB_COLOR_CLUT_2BPP,
+  OMAPFB_COLOR_CLUT_1BPP,
+  OMAPFB_COLOR_RGB444,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_COLOR_YUY422,
- OMAPFB_COLOR_ARGB16,
- OMAPFB_COLOR_RGB24U,
- OMAPFB_COLOR_RGB24P,
+  OMAPFB_COLOR_YUY422,
+  OMAPFB_COLOR_ARGB16,
+  OMAPFB_COLOR_RGB24U,
+  OMAPFB_COLOR_RGB24P,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_COLOR_ARGB32,
- OMAPFB_COLOR_RGBA32,
- OMAPFB_COLOR_RGBX32,
+  OMAPFB_COLOR_ARGB32,
+  OMAPFB_COLOR_RGBA32,
+  OMAPFB_COLOR_RGBX32,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omapfb_update_window {
- __u32 x, y;
- __u32 width, height;
- __u32 format;
+  __u32 x, y;
+  __u32 width, height;
+  __u32 format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 out_x, out_y;
- __u32 out_width, out_height;
- __u32 reserved[8];
+  __u32 out_x, out_y;
+  __u32 out_width, out_height;
+  __u32 reserved[8];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omapfb_update_window_old {
- __u32 x, y;
- __u32 width, height;
- __u32 format;
+  __u32 x, y;
+  __u32 width, height;
+  __u32 format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum omapfb_plane {
- OMAPFB_PLANE_GFX = 0,
- OMAPFB_PLANE_VID1,
+  OMAPFB_PLANE_GFX = 0,
+  OMAPFB_PLANE_VID1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_PLANE_VID2,
+  OMAPFB_PLANE_VID2,
 };
 enum omapfb_channel_out {
- OMAPFB_CHANNEL_OUT_LCD = 0,
+  OMAPFB_CHANNEL_OUT_LCD = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_CHANNEL_OUT_DIGIT,
+  OMAPFB_CHANNEL_OUT_DIGIT,
 };
 struct omapfb_plane_info {
- __u32 pos_x;
+  __u32 pos_x;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pos_y;
- __u8 enabled;
- __u8 channel_out;
- __u8 mirror;
+  __u32 pos_y;
+  __u8 enabled;
+  __u8 channel_out;
+  __u8 mirror;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 mem_idx;
- __u32 out_width;
- __u32 out_height;
- __u32 reserved2[12];
+  __u8 mem_idx;
+  __u32 out_width;
+  __u32 out_height;
+  __u32 reserved2[12];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omapfb_mem_info {
- __u32 size;
- __u8 type;
+  __u32 size;
+  __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved[3];
+  __u8 reserved[3];
 };
 struct omapfb_caps {
- __u32 ctrl;
+  __u32 ctrl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 plane_color;
- __u32 wnd_color;
+  __u32 plane_color;
+  __u32 wnd_color;
 };
 enum omapfb_color_key_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_COLOR_KEY_DISABLED = 0,
- OMAPFB_COLOR_KEY_GFX_DST,
- OMAPFB_COLOR_KEY_VID_SRC,
+  OMAPFB_COLOR_KEY_DISABLED = 0,
+  OMAPFB_COLOR_KEY_GFX_DST,
+  OMAPFB_COLOR_KEY_VID_SRC,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omapfb_color_key {
- __u8 channel_out;
- __u32 background;
- __u32 trans_key;
+  __u8 channel_out;
+  __u32 background;
+  __u32 trans_key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 key_type;
+  __u8 key_type;
 };
 enum omapfb_update_mode {
- OMAPFB_UPDATE_DISABLED = 0,
+  OMAPFB_UPDATE_DISABLED = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OMAPFB_AUTO_UPDATE,
- OMAPFB_MANUAL_UPDATE
+  OMAPFB_AUTO_UPDATE,
+  OMAPFB_MANUAL_UPDATE
 };
 struct omapfb_memory_read {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 x;
- __u16 y;
- __u16 w;
- __u16 h;
+  __u16 x;
+  __u16 y;
+  __u16 w;
+  __u16 h;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t buffer_size;
- void __user *buffer;
+  size_t buffer_size;
+  void __user * buffer;
 };
 struct omapfb_ovl_colormode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 overlay_idx;
- __u8 mode_idx;
- __u32 bits_per_pixel;
- __u32 nonstd;
+  __u8 overlay_idx;
+  __u8 mode_idx;
+  __u32 bits_per_pixel;
+  __u32 nonstd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fb_bitfield red;
- struct fb_bitfield green;
- struct fb_bitfield blue;
- struct fb_bitfield transp;
+  struct fb_bitfield red;
+  struct fb_bitfield green;
+  struct fb_bitfield blue;
+  struct fb_bitfield transp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omapfb_vram_info {
- __u32 total;
- __u32 free;
+  __u32 total;
+  __u32 free;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 largest_free_block;
- __u32 reserved[5];
+  __u32 largest_free_block;
+  __u32 reserved[5];
 };
 struct omapfb_tearsync_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 enabled;
- __u8 reserved1[3];
- __u16 line;
- __u16 reserved2;
+  __u8 enabled;
+  __u8 reserved1[3];
+  __u16 line;
+  __u16 reserved2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct omapfb_display_info {
- __u16 xres;
- __u16 yres;
+  __u16 xres;
+  __u16 yres;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 width;
- __u32 height;
- __u32 reserved[5];
+  __u32 width;
+  __u32 height;
+  __u32 reserved[5];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/oom.h b/libc/kernel/uapi/linux/oom.h
index d37f36c..3db05ca 100644
--- a/libc/kernel/uapi/linux/oom.h
+++ b/libc/kernel/uapi/linux/oom.h
@@ -18,11 +18,11 @@
  ****************************************************************************/
 #ifndef _UAPI__INCLUDE_LINUX_OOM_H
 #define _UAPI__INCLUDE_LINUX_OOM_H
-#define OOM_SCORE_ADJ_MIN (-1000)
+#define OOM_SCORE_ADJ_MIN (- 1000)
 #define OOM_SCORE_ADJ_MAX 1000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define OOM_DISABLE (-17)
-#define OOM_ADJUST_MIN (-16)
+#define OOM_DISABLE (- 17)
+#define OOM_ADJUST_MIN (- 16)
 #define OOM_ADJUST_MAX 15
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index 9649b6b..663e37f 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -22,7 +22,7 @@
 #include <linux/if_ether.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_header {
- int dp_ifindex;
+  int dp_ifindex;
 };
 #define OVS_DATAPATH_FAMILY "ovs_datapath"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -31,308 +31,326 @@
 #define OVS_DP_VER_FEATURES 2
 enum ovs_datapath_cmd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_DP_CMD_UNSPEC,
- OVS_DP_CMD_NEW,
- OVS_DP_CMD_DEL,
- OVS_DP_CMD_GET,
+  OVS_DP_CMD_UNSPEC,
+  OVS_DP_CMD_NEW,
+  OVS_DP_CMD_DEL,
+  OVS_DP_CMD_GET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_DP_CMD_SET
+  OVS_DP_CMD_SET
 };
 enum ovs_datapath_attr {
- OVS_DP_ATTR_UNSPEC,
+  OVS_DP_ATTR_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_DP_ATTR_NAME,
- OVS_DP_ATTR_UPCALL_PID,
- OVS_DP_ATTR_STATS,
- OVS_DP_ATTR_MEGAFLOW_STATS,
+  OVS_DP_ATTR_NAME,
+  OVS_DP_ATTR_UPCALL_PID,
+  OVS_DP_ATTR_STATS,
+  OVS_DP_ATTR_MEGAFLOW_STATS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_DP_ATTR_USER_FEATURES,
- __OVS_DP_ATTR_MAX
+  OVS_DP_ATTR_USER_FEATURES,
+  __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_dp_stats {
- __u64 n_hit;
- __u64 n_missed;
- __u64 n_lost;
+  __u64 n_hit;
+  __u64 n_missed;
+  __u64 n_lost;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 n_flows;
+  __u64 n_flows;
 };
 struct ovs_dp_megaflow_stats {
- __u64 n_mask_hit;
+  __u64 n_mask_hit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 n_masks;
- __u32 pad0;
- __u64 pad1;
- __u64 pad2;
+  __u32 n_masks;
+  __u32 pad0;
+  __u64 pad1;
+  __u64 pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ovs_vport_stats {
- __u64 rx_packets;
- __u64 tx_packets;
+  __u64 rx_packets;
+  __u64 tx_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rx_bytes;
- __u64 tx_bytes;
- __u64 rx_errors;
- __u64 tx_errors;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rx_dropped;
- __u64 tx_dropped;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
 };
 #define OVS_DP_F_UNALIGNED (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define OVSP_LOCAL ((__u32)0)
+#define OVS_DP_F_VPORT_PIDS (1 << 1)
+#define OVSP_LOCAL ((__u32) 0)
 #define OVS_PACKET_FAMILY "ovs_packet"
 #define OVS_PACKET_VERSION 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ovs_packet_cmd {
+  OVS_PACKET_CMD_UNSPEC,
+  OVS_PACKET_CMD_MISS,
+  OVS_PACKET_CMD_ACTION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_PACKET_CMD_UNSPEC,
- OVS_PACKET_CMD_MISS,
- OVS_PACKET_CMD_ACTION,
- OVS_PACKET_CMD_EXECUTE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  OVS_PACKET_CMD_EXECUTE
 };
 enum ovs_packet_attr {
- OVS_PACKET_ATTR_UNSPEC,
- OVS_PACKET_ATTR_PACKET,
+  OVS_PACKET_ATTR_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_PACKET_ATTR_KEY,
- OVS_PACKET_ATTR_ACTIONS,
- OVS_PACKET_ATTR_USERDATA,
- __OVS_PACKET_ATTR_MAX
+  OVS_PACKET_ATTR_PACKET,
+  OVS_PACKET_ATTR_KEY,
+  OVS_PACKET_ATTR_ACTIONS,
+  OVS_PACKET_ATTR_USERDATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __OVS_PACKET_ATTR_MAX
 };
 #define OVS_PACKET_ATTR_MAX (__OVS_PACKET_ATTR_MAX - 1)
 #define OVS_VPORT_FAMILY "ovs_vport"
-#define OVS_VPORT_MCGROUP "ovs_vport"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OVS_VPORT_MCGROUP "ovs_vport"
 #define OVS_VPORT_VERSION 0x1
 enum ovs_vport_cmd {
- OVS_VPORT_CMD_UNSPEC,
- OVS_VPORT_CMD_NEW,
+  OVS_VPORT_CMD_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_VPORT_CMD_DEL,
- OVS_VPORT_CMD_GET,
- OVS_VPORT_CMD_SET
+  OVS_VPORT_CMD_NEW,
+  OVS_VPORT_CMD_DEL,
+  OVS_VPORT_CMD_GET,
+  OVS_VPORT_CMD_SET
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ovs_vport_type {
- OVS_VPORT_TYPE_UNSPEC,
- OVS_VPORT_TYPE_NETDEV,
- OVS_VPORT_TYPE_INTERNAL,
+  OVS_VPORT_TYPE_UNSPEC,
+  OVS_VPORT_TYPE_NETDEV,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_VPORT_TYPE_GRE,
- OVS_VPORT_TYPE_VXLAN,
- __OVS_VPORT_TYPE_MAX
+  OVS_VPORT_TYPE_INTERNAL,
+  OVS_VPORT_TYPE_GRE,
+  OVS_VPORT_TYPE_VXLAN,
+  OVS_VPORT_TYPE_GENEVE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __OVS_VPORT_TYPE_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OVS_VPORT_TYPE_MAX (__OVS_VPORT_TYPE_MAX - 1)
 enum ovs_vport_attr {
- OVS_VPORT_ATTR_UNSPEC,
- OVS_VPORT_ATTR_PORT_NO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_VPORT_ATTR_TYPE,
- OVS_VPORT_ATTR_NAME,
- OVS_VPORT_ATTR_OPTIONS,
- OVS_VPORT_ATTR_UPCALL_PID,
+  OVS_VPORT_ATTR_UNSPEC,
+  OVS_VPORT_ATTR_PORT_NO,
+  OVS_VPORT_ATTR_TYPE,
+  OVS_VPORT_ATTR_NAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_VPORT_ATTR_STATS,
- __OVS_VPORT_ATTR_MAX
+  OVS_VPORT_ATTR_OPTIONS,
+  OVS_VPORT_ATTR_UPCALL_PID,
+  OVS_VPORT_ATTR_STATS,
+  __OVS_VPORT_ATTR_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define OVS_VPORT_ATTR_MAX (__OVS_VPORT_ATTR_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- OVS_TUNNEL_ATTR_UNSPEC,
- OVS_TUNNEL_ATTR_DST_PORT,
- __OVS_TUNNEL_ATTR_MAX
+  OVS_TUNNEL_ATTR_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  OVS_TUNNEL_ATTR_DST_PORT,
+  __OVS_TUNNEL_ATTR_MAX
 };
 #define OVS_TUNNEL_ATTR_MAX (__OVS_TUNNEL_ATTR_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OVS_FLOW_FAMILY "ovs_flow"
 #define OVS_FLOW_MCGROUP "ovs_flow"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OVS_FLOW_VERSION 0x1
 enum ovs_flow_cmd {
- OVS_FLOW_CMD_UNSPEC,
- OVS_FLOW_CMD_NEW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_FLOW_CMD_DEL,
- OVS_FLOW_CMD_GET,
- OVS_FLOW_CMD_SET
+  OVS_FLOW_CMD_UNSPEC,
+  OVS_FLOW_CMD_NEW,
+  OVS_FLOW_CMD_DEL,
+  OVS_FLOW_CMD_GET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  OVS_FLOW_CMD_SET
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_flow_stats {
- __u64 n_packets;
- __u64 n_bytes;
+  __u64 n_packets;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 n_bytes;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ovs_key_attr {
- OVS_KEY_ATTR_UNSPEC,
- OVS_KEY_ATTR_ENCAP,
- OVS_KEY_ATTR_PRIORITY,
+  OVS_KEY_ATTR_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_KEY_ATTR_IN_PORT,
- OVS_KEY_ATTR_ETHERNET,
- OVS_KEY_ATTR_VLAN,
- OVS_KEY_ATTR_ETHERTYPE,
+  OVS_KEY_ATTR_ENCAP,
+  OVS_KEY_ATTR_PRIORITY,
+  OVS_KEY_ATTR_IN_PORT,
+  OVS_KEY_ATTR_ETHERNET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_KEY_ATTR_IPV4,
- OVS_KEY_ATTR_IPV6,
- OVS_KEY_ATTR_TCP,
- OVS_KEY_ATTR_UDP,
+  OVS_KEY_ATTR_VLAN,
+  OVS_KEY_ATTR_ETHERTYPE,
+  OVS_KEY_ATTR_IPV4,
+  OVS_KEY_ATTR_IPV6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_KEY_ATTR_ICMP,
- OVS_KEY_ATTR_ICMPV6,
- OVS_KEY_ATTR_ARP,
- OVS_KEY_ATTR_ND,
+  OVS_KEY_ATTR_TCP,
+  OVS_KEY_ATTR_UDP,
+  OVS_KEY_ATTR_ICMP,
+  OVS_KEY_ATTR_ICMPV6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_KEY_ATTR_SKB_MARK,
- OVS_KEY_ATTR_TUNNEL,
- OVS_KEY_ATTR_SCTP,
- OVS_KEY_ATTR_TCP_FLAGS,
+  OVS_KEY_ATTR_ARP,
+  OVS_KEY_ATTR_ND,
+  OVS_KEY_ATTR_SKB_MARK,
+  OVS_KEY_ATTR_TUNNEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __OVS_KEY_ATTR_MAX
+  OVS_KEY_ATTR_SCTP,
+  OVS_KEY_ATTR_TCP_FLAGS,
+  OVS_KEY_ATTR_DP_HASH,
+  OVS_KEY_ATTR_RECIRC_ID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
 enum ovs_tunnel_key_attr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_TUNNEL_KEY_ATTR_ID,
- OVS_TUNNEL_KEY_ATTR_IPV4_SRC,
- OVS_TUNNEL_KEY_ATTR_IPV4_DST,
- OVS_TUNNEL_KEY_ATTR_TOS,
+  OVS_TUNNEL_KEY_ATTR_ID,
+  OVS_TUNNEL_KEY_ATTR_IPV4_SRC,
+  OVS_TUNNEL_KEY_ATTR_IPV4_DST,
+  OVS_TUNNEL_KEY_ATTR_TOS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_TUNNEL_KEY_ATTR_TTL,
- OVS_TUNNEL_KEY_ATTR_DONT_FRAGMENT,
- OVS_TUNNEL_KEY_ATTR_CSUM,
- __OVS_TUNNEL_KEY_ATTR_MAX
+  OVS_TUNNEL_KEY_ATTR_TTL,
+  OVS_TUNNEL_KEY_ATTR_DONT_FRAGMENT,
+  OVS_TUNNEL_KEY_ATTR_CSUM,
+  OVS_TUNNEL_KEY_ATTR_OAM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  OVS_TUNNEL_KEY_ATTR_GENEVE_OPTS,
+  __OVS_TUNNEL_KEY_ATTR_MAX
 };
 #define OVS_TUNNEL_KEY_ATTR_MAX (__OVS_TUNNEL_KEY_ATTR_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ovs_frag_type {
- OVS_FRAG_TYPE_NONE,
+  OVS_FRAG_TYPE_NONE,
+  OVS_FRAG_TYPE_FIRST,
+  OVS_FRAG_TYPE_LATER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_FRAG_TYPE_FIRST,
- OVS_FRAG_TYPE_LATER,
- __OVS_FRAG_TYPE_MAX
+  __OVS_FRAG_TYPE_MAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OVS_FRAG_TYPE_MAX (__OVS_FRAG_TYPE_MAX - 1)
 struct ovs_key_ethernet {
- __u8 eth_src[ETH_ALEN];
- __u8 eth_dst[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 eth_src[ETH_ALEN];
+  __u8 eth_dst[ETH_ALEN];
 };
 struct ovs_key_ipv4 {
- __be32 ipv4_src;
- __be32 ipv4_dst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ipv4_proto;
- __u8 ipv4_tos;
- __u8 ipv4_ttl;
- __u8 ipv4_frag;
+  __be32 ipv4_src;
+  __be32 ipv4_dst;
+  __u8 ipv4_proto;
+  __u8 ipv4_tos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 ipv4_ttl;
+  __u8 ipv4_frag;
 };
 struct ovs_key_ipv6 {
- __be32 ipv6_src[4];
- __be32 ipv6_dst[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ipv6_label;
- __u8 ipv6_proto;
- __u8 ipv6_tclass;
- __u8 ipv6_hlimit;
+  __be32 ipv6_src[4];
+  __be32 ipv6_dst[4];
+  __be32 ipv6_label;
+  __u8 ipv6_proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ipv6_frag;
+  __u8 ipv6_tclass;
+  __u8 ipv6_hlimit;
+  __u8 ipv6_frag;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_key_tcp {
- __be16 tcp_src;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 tcp_dst;
+  __be16 tcp_src;
+  __be16 tcp_dst;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_key_udp {
- __be16 udp_src;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 udp_dst;
+  __be16 udp_src;
+  __be16 udp_dst;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_key_sctp {
- __be16 sctp_src;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 sctp_dst;
+  __be16 sctp_src;
+  __be16 sctp_dst;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_key_icmp {
- __u8 icmp_type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 icmp_code;
+  __u8 icmp_type;
+  __u8 icmp_code;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_key_icmpv6 {
- __u8 icmpv6_type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 icmpv6_code;
+  __u8 icmpv6_type;
+  __u8 icmpv6_code;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_key_arp {
- __be32 arp_sip;
+  __be32 arp_sip;
+  __be32 arp_tip;
+  __be16 arp_op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 arp_tip;
- __be16 arp_op;
- __u8 arp_sha[ETH_ALEN];
- __u8 arp_tha[ETH_ALEN];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 arp_sha[ETH_ALEN];
+  __u8 arp_tha[ETH_ALEN];
 };
 struct ovs_key_nd {
- __u32 nd_target[4];
- __u8 nd_sll[ETH_ALEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 nd_tll[ETH_ALEN];
+  __u32 nd_target[4];
+  __u8 nd_sll[ETH_ALEN];
+  __u8 nd_tll[ETH_ALEN];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ovs_flow_attr {
- OVS_FLOW_ATTR_UNSPEC,
+  OVS_FLOW_ATTR_UNSPEC,
+  OVS_FLOW_ATTR_KEY,
+  OVS_FLOW_ATTR_ACTIONS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_FLOW_ATTR_KEY,
- OVS_FLOW_ATTR_ACTIONS,
- OVS_FLOW_ATTR_STATS,
- OVS_FLOW_ATTR_TCP_FLAGS,
+  OVS_FLOW_ATTR_STATS,
+  OVS_FLOW_ATTR_TCP_FLAGS,
+  OVS_FLOW_ATTR_USED,
+  OVS_FLOW_ATTR_CLEAR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_FLOW_ATTR_USED,
- OVS_FLOW_ATTR_CLEAR,
- OVS_FLOW_ATTR_MASK,
- __OVS_FLOW_ATTR_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  OVS_FLOW_ATTR_MASK,
+  __OVS_FLOW_ATTR_MAX
 };
 #define OVS_FLOW_ATTR_MAX (__OVS_FLOW_ATTR_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ovs_sample_attr {
- OVS_SAMPLE_ATTR_UNSPEC,
+  OVS_SAMPLE_ATTR_UNSPEC,
+  OVS_SAMPLE_ATTR_PROBABILITY,
+  OVS_SAMPLE_ATTR_ACTIONS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_SAMPLE_ATTR_PROBABILITY,
- OVS_SAMPLE_ATTR_ACTIONS,
- __OVS_SAMPLE_ATTR_MAX,
+  __OVS_SAMPLE_ATTR_MAX,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OVS_SAMPLE_ATTR_MAX (__OVS_SAMPLE_ATTR_MAX - 1)
 enum ovs_userspace_attr {
- OVS_USERSPACE_ATTR_UNSPEC,
- OVS_USERSPACE_ATTR_PID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_USERSPACE_ATTR_USERDATA,
- __OVS_USERSPACE_ATTR_MAX
+  OVS_USERSPACE_ATTR_UNSPEC,
+  OVS_USERSPACE_ATTR_PID,
+  OVS_USERSPACE_ATTR_USERDATA,
+  __OVS_USERSPACE_ATTR_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define OVS_USERSPACE_ATTR_MAX (__OVS_USERSPACE_ATTR_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ovs_action_push_vlan {
- __be16 vlan_tpid;
- __be16 vlan_tci;
+  __be16 vlan_tpid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be16 vlan_tci;
 };
+enum ovs_hash_alg {
+  OVS_HASH_ALG_L4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct ovs_action_hash {
+  uint32_t hash_alg;
+  uint32_t hash_basis;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum ovs_action_attr {
- OVS_ACTION_ATTR_UNSPEC,
- OVS_ACTION_ATTR_OUTPUT,
- OVS_ACTION_ATTR_USERSPACE,
+  OVS_ACTION_ATTR_UNSPEC,
+  OVS_ACTION_ATTR_OUTPUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- OVS_ACTION_ATTR_SET,
- OVS_ACTION_ATTR_PUSH_VLAN,
- OVS_ACTION_ATTR_POP_VLAN,
- OVS_ACTION_ATTR_SAMPLE,
+  OVS_ACTION_ATTR_USERSPACE,
+  OVS_ACTION_ATTR_SET,
+  OVS_ACTION_ATTR_PUSH_VLAN,
+  OVS_ACTION_ATTR_POP_VLAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __OVS_ACTION_ATTR_MAX
+  OVS_ACTION_ATTR_SAMPLE,
+  OVS_ACTION_ATTR_RECIRC,
+  OVS_ACTION_ATTR_HASH,
+  __OVS_ACTION_ATTR_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define OVS_ACTION_ATTR_MAX (__OVS_ACTION_ATTR_MAX - 1)
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/packet_diag.h b/libc/kernel/uapi/linux/packet_diag.h
index 8a1b1da..5f5969b 100644
--- a/libc/kernel/uapi/linux/packet_diag.h
+++ b/libc/kernel/uapi/linux/packet_diag.h
@@ -21,13 +21,13 @@
 #include <linux/types.h>
 struct packet_diag_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sdiag_family;
- __u8 sdiag_protocol;
- __u16 pad;
- __u32 pdiag_ino;
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 pdiag_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pdiag_show;
- __u32 pdiag_cookie[2];
+  __u32 pdiag_show;
+  __u32 pdiag_cookie[2];
 };
 #define PACKET_SHOW_INFO 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -38,37 +38,37 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PACKET_SHOW_FILTER 0x00000020
 struct packet_diag_msg {
- __u8 pdiag_family;
- __u8 pdiag_type;
+  __u8 pdiag_family;
+  __u8 pdiag_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pdiag_num;
- __u32 pdiag_ino;
- __u32 pdiag_cookie[2];
+  __u16 pdiag_num;
+  __u32 pdiag_ino;
+  __u32 pdiag_cookie[2];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- PACKET_DIAG_INFO,
- PACKET_DIAG_MCLIST,
- PACKET_DIAG_RX_RING,
+  PACKET_DIAG_INFO,
+  PACKET_DIAG_MCLIST,
+  PACKET_DIAG_RX_RING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PACKET_DIAG_TX_RING,
- PACKET_DIAG_FANOUT,
- PACKET_DIAG_UID,
- PACKET_DIAG_MEMINFO,
+  PACKET_DIAG_TX_RING,
+  PACKET_DIAG_FANOUT,
+  PACKET_DIAG_UID,
+  PACKET_DIAG_MEMINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PACKET_DIAG_FILTER,
- __PACKET_DIAG_MAX,
+  PACKET_DIAG_FILTER,
+  __PACKET_DIAG_MAX,
 };
 #define PACKET_DIAG_MAX (__PACKET_DIAG_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct packet_diag_info {
- __u32 pdi_index;
- __u32 pdi_version;
- __u32 pdi_reserve;
+  __u32 pdi_index;
+  __u32 pdi_version;
+  __u32 pdi_reserve;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pdi_copy_thresh;
- __u32 pdi_tstamp;
- __u32 pdi_flags;
+  __u32 pdi_copy_thresh;
+  __u32 pdi_tstamp;
+  __u32 pdi_flags;
 #define PDI_RUNNING 0x1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PDI_AUXDATA 0x2
@@ -78,23 +78,23 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct packet_diag_mclist {
- __u32 pdmc_index;
- __u32 pdmc_count;
+  __u32 pdmc_index;
+  __u32 pdmc_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pdmc_type;
- __u16 pdmc_alen;
- __u8 pdmc_addr[MAX_ADDR_LEN];
+  __u16 pdmc_type;
+  __u16 pdmc_alen;
+  __u8 pdmc_addr[MAX_ADDR_LEN];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct packet_diag_ring {
- __u32 pdr_block_size;
- __u32 pdr_block_nr;
- __u32 pdr_frame_size;
+  __u32 pdr_block_size;
+  __u32 pdr_block_nr;
+  __u32 pdr_frame_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pdr_frame_nr;
- __u32 pdr_retire_tmo;
- __u32 pdr_sizeof_priv;
- __u32 pdr_features;
+  __u32 pdr_frame_nr;
+  __u32 pdr_retire_tmo;
+  __u32 pdr_sizeof_priv;
+  __u32 pdr_features;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/parport.h b/libc/kernel/uapi/linux/parport.h
index 367aafb..83a7d08 100644
--- a/libc/kernel/uapi/linux/parport.h
+++ b/libc/kernel/uapi/linux/parport.h
@@ -19,16 +19,16 @@
 #ifndef _UAPI_PARPORT_H_
 #define _UAPI_PARPORT_H_
 #define PARPORT_MAX 16
-#define PARPORT_IRQ_NONE -1
+#define PARPORT_IRQ_NONE - 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PARPORT_DMA_NONE -1
-#define PARPORT_IRQ_AUTO -2
-#define PARPORT_DMA_AUTO -2
-#define PARPORT_DMA_NOFIFO -3
+#define PARPORT_DMA_NONE - 1
+#define PARPORT_IRQ_AUTO - 2
+#define PARPORT_DMA_AUTO - 2
+#define PARPORT_DMA_NOFIFO - 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PARPORT_DISABLE -2
-#define PARPORT_IRQ_PROBEONLY -3
-#define PARPORT_IOHI_AUTO -1
+#define PARPORT_DISABLE - 2
+#define PARPORT_IRQ_PROBEONLY - 3
+#define PARPORT_IOHI_AUTO - 1
 #define PARPORT_CONTROL_STROBE 0x1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PARPORT_CONTROL_AUTOFD 0x2
@@ -42,52 +42,52 @@
 #define PARPORT_STATUS_BUSY 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- PARPORT_CLASS_LEGACY = 0,
- PARPORT_CLASS_PRINTER,
- PARPORT_CLASS_MODEM,
+  PARPORT_CLASS_LEGACY = 0,
+  PARPORT_CLASS_PRINTER,
+  PARPORT_CLASS_MODEM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARPORT_CLASS_NET,
- PARPORT_CLASS_HDC,
- PARPORT_CLASS_PCMCIA,
- PARPORT_CLASS_MEDIA,
+  PARPORT_CLASS_NET,
+  PARPORT_CLASS_HDC,
+  PARPORT_CLASS_PCMCIA,
+  PARPORT_CLASS_MEDIA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARPORT_CLASS_FDC,
- PARPORT_CLASS_PORTS,
- PARPORT_CLASS_SCANNER,
- PARPORT_CLASS_DIGCAM,
+  PARPORT_CLASS_FDC,
+  PARPORT_CLASS_PORTS,
+  PARPORT_CLASS_SCANNER,
+  PARPORT_CLASS_DIGCAM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARPORT_CLASS_OTHER,
- PARPORT_CLASS_UNSPEC,
- PARPORT_CLASS_SCSIADAPTER
+  PARPORT_CLASS_OTHER,
+  PARPORT_CLASS_UNSPEC,
+  PARPORT_CLASS_SCSIADAPTER
 } parport_device_class;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PARPORT_MODE_PCSPP (1<<0)
-#define PARPORT_MODE_TRISTATE (1<<1)
-#define PARPORT_MODE_EPP (1<<2)
-#define PARPORT_MODE_ECP (1<<3)
+#define PARPORT_MODE_PCSPP (1 << 0)
+#define PARPORT_MODE_TRISTATE (1 << 1)
+#define PARPORT_MODE_EPP (1 << 2)
+#define PARPORT_MODE_ECP (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PARPORT_MODE_COMPAT (1<<4)
-#define PARPORT_MODE_DMA (1<<5)
-#define PARPORT_MODE_SAFEININT (1<<6)
+#define PARPORT_MODE_COMPAT (1 << 4)
+#define PARPORT_MODE_DMA (1 << 5)
+#define PARPORT_MODE_SAFEININT (1 << 6)
 #define IEEE1284_MODE_NIBBLE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IEEE1284_MODE_BYTE (1<<0)
-#define IEEE1284_MODE_COMPAT (1<<8)
-#define IEEE1284_MODE_BECP (1<<9)
-#define IEEE1284_MODE_ECP (1<<4)
+#define IEEE1284_MODE_BYTE (1 << 0)
+#define IEEE1284_MODE_COMPAT (1 << 8)
+#define IEEE1284_MODE_BECP (1 << 9)
+#define IEEE1284_MODE_ECP (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IEEE1284_MODE_ECPRLE (IEEE1284_MODE_ECP | (1<<5))
-#define IEEE1284_MODE_ECPSWE (1<<10)
-#define IEEE1284_MODE_EPP (1<<6)
-#define IEEE1284_MODE_EPPSL (1<<11)
+#define IEEE1284_MODE_ECPRLE (IEEE1284_MODE_ECP | (1 << 5))
+#define IEEE1284_MODE_ECPSWE (1 << 10)
+#define IEEE1284_MODE_EPP (1 << 6)
+#define IEEE1284_MODE_EPPSL (1 << 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IEEE1284_MODE_EPPSWE (1<<12)
-#define IEEE1284_DEVICEID (1<<2)
-#define IEEE1284_EXT_LINK (1<<14)
-#define IEEE1284_ADDR (1<<13)
+#define IEEE1284_MODE_EPPSWE (1 << 12)
+#define IEEE1284_DEVICEID (1 << 2)
+#define IEEE1284_EXT_LINK (1 << 14)
+#define IEEE1284_ADDR (1 << 13)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IEEE1284_DATA 0
-#define PARPORT_EPP_FAST (1<<0)
-#define PARPORT_W91284PIC (1<<1)
+#define PARPORT_EPP_FAST (1 << 0)
+#define PARPORT_W91284PIC (1 << 1)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/patchkey.h b/libc/kernel/uapi/linux/patchkey.h
index d1da267..406d803 100644
--- a/libc/kernel/uapi/linux/patchkey.h
+++ b/libc/kernel/uapi/linux/patchkey.h
@@ -26,9 +26,9 @@
 #ifdef __BYTE_ORDER
 #if __BYTE_ORDER == __BIG_ENDIAN
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _PATCHKEY(id) (0xfd00|id)
-#elif __BYTE_ORDER == __LITTLE_ENDIAN
-#define _PATCHKEY(id) ((id<<8)|0x00fd)
+#define _PATCHKEY(id) (0xfd00 | id)
+#elif __BYTE_ORDER==__LITTLE_ENDIAN
+#define _PATCHKEY(id) ((id << 8) | 0x00fd)
 #else
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error "could not determine byte order"
diff --git a/libc/kernel/uapi/linux/pci.h b/libc/kernel/uapi/linux/pci.h
index 2035246..7569cca 100644
--- a/libc/kernel/uapi/linux/pci.h
+++ b/libc/kernel/uapi/linux/pci.h
@@ -19,7 +19,7 @@
 #ifndef _UAPILINUX_PCI_H
 #define _UAPILINUX_PCI_H
 #include <linux/pci_regs.h>
-#define PCI_DEVFN(slot, func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
+#define PCI_DEVFN(slot,func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f)
 #define PCI_FUNC(devfn) ((devfn) & 0x07)
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index d20f500..d191821 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -591,360 +591,361 @@
 #define PCI_EXP_RTCTL_CRSSVE 0x0010
 #define PCI_EXP_RTCAP 30
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXP_RTCAP_CRSVIS 0x0001
 #define PCI_EXP_RTSTA 32
 #define PCI_EXP_RTSTA_PME 0x00010000
 #define PCI_EXP_RTSTA_PENDING 0x00020000
-#define PCI_EXP_DEVCAP2 36
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXP_DEVCAP2 36
 #define PCI_EXP_DEVCAP2_ARI 0x00000020
 #define PCI_EXP_DEVCAP2_LTR 0x00000800
 #define PCI_EXP_DEVCAP2_OBFF_MASK 0x000c0000
-#define PCI_EXP_DEVCAP2_OBFF_MSG 0x00040000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXP_DEVCAP2_OBFF_MSG 0x00040000
 #define PCI_EXP_DEVCAP2_OBFF_WAKE 0x00080000
 #define PCI_EXP_DEVCTL2 40
 #define PCI_EXP_DEVCTL2_COMP_TIMEOUT 0x000f
-#define PCI_EXP_DEVCTL2_ARI 0x0020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXP_DEVCTL2_ARI 0x0020
 #define PCI_EXP_DEVCTL2_IDO_REQ_EN 0x0100
 #define PCI_EXP_DEVCTL2_IDO_CMP_EN 0x0200
 #define PCI_EXP_DEVCTL2_LTR_EN 0x0400
-#define PCI_EXP_DEVCTL2_OBFF_MSGA_EN 0x2000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXP_DEVCTL2_OBFF_MSGA_EN 0x2000
 #define PCI_EXP_DEVCTL2_OBFF_MSGB_EN 0x4000
 #define PCI_EXP_DEVCTL2_OBFF_WAKE_EN 0x6000
 #define PCI_EXP_DEVSTA2 42
-#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 44
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 44
 #define PCI_EXP_LNKCAP2 44
 #define PCI_EXP_LNKCAP2_SLS_2_5GB 0x00000002
 #define PCI_EXP_LNKCAP2_SLS_5_0GB 0x00000004
-#define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008
 #define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100
 #define PCI_EXP_LNKCTL2 48
 #define PCI_EXP_LNKSTA2 50
-#define PCI_EXP_SLTCAP2 52
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXP_SLTCAP2 52
 #define PCI_EXP_SLTCTL2 56
 #define PCI_EXP_SLTSTA2 58
 #define PCI_EXT_CAP_ID(header) (header & 0x0000ffff)
-#define PCI_EXT_CAP_VER(header) ((header >> 16) & 0xf)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_VER(header) ((header >> 16) & 0xf)
 #define PCI_EXT_CAP_NEXT(header) ((header >> 20) & 0xffc)
 #define PCI_EXT_CAP_ID_ERR 0x01
 #define PCI_EXT_CAP_ID_VC 0x02
-#define PCI_EXT_CAP_ID_DSN 0x03
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_ID_DSN 0x03
 #define PCI_EXT_CAP_ID_PWR 0x04
 #define PCI_EXT_CAP_ID_RCLD 0x05
 #define PCI_EXT_CAP_ID_RCILC 0x06
-#define PCI_EXT_CAP_ID_RCEC 0x07
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_ID_RCEC 0x07
 #define PCI_EXT_CAP_ID_MFVC 0x08
 #define PCI_EXT_CAP_ID_VC9 0x09
 #define PCI_EXT_CAP_ID_RCRB 0x0A
-#define PCI_EXT_CAP_ID_VNDR 0x0B
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_ID_VNDR 0x0B
 #define PCI_EXT_CAP_ID_CAC 0x0C
 #define PCI_EXT_CAP_ID_ACS 0x0D
 #define PCI_EXT_CAP_ID_ARI 0x0E
-#define PCI_EXT_CAP_ID_ATS 0x0F
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_ID_ATS 0x0F
 #define PCI_EXT_CAP_ID_SRIOV 0x10
 #define PCI_EXT_CAP_ID_MRIOV 0x11
 #define PCI_EXT_CAP_ID_MCAST 0x12
-#define PCI_EXT_CAP_ID_PRI 0x13
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_ID_PRI 0x13
 #define PCI_EXT_CAP_ID_AMD_XXX 0x14
 #define PCI_EXT_CAP_ID_REBAR 0x15
 #define PCI_EXT_CAP_ID_DPA 0x16
-#define PCI_EXT_CAP_ID_TPH 0x17
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_ID_TPH 0x17
 #define PCI_EXT_CAP_ID_LTR 0x18
 #define PCI_EXT_CAP_ID_SECPCI 0x19
 #define PCI_EXT_CAP_ID_PMUX 0x1A
-#define PCI_EXT_CAP_ID_PASID 0x1B
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_EXT_CAP_ID_PASID 0x1B
 #define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PASID
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
-#define PCI_ERR_UNCOR_STATUS 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PCI_ERR_UNC_TRAIN 0x00000001
+#define PCI_ERR_UNCOR_STATUS 4
+#define PCI_ERR_UNC_UND 0x00000001
 #define PCI_ERR_UNC_DLP 0x00000010
 #define PCI_ERR_UNC_SURPDN 0x00000020
-#define PCI_ERR_UNC_POISON_TLP 0x00001000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_UNC_POISON_TLP 0x00001000
 #define PCI_ERR_UNC_FCP 0x00002000
 #define PCI_ERR_UNC_COMP_TIME 0x00004000
 #define PCI_ERR_UNC_COMP_ABORT 0x00008000
-#define PCI_ERR_UNC_UNX_COMP 0x00010000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_UNC_UNX_COMP 0x00010000
 #define PCI_ERR_UNC_RX_OVER 0x00020000
 #define PCI_ERR_UNC_MALF_TLP 0x00040000
 #define PCI_ERR_UNC_ECRC 0x00080000
-#define PCI_ERR_UNC_UNSUP 0x00100000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_UNC_UNSUP 0x00100000
 #define PCI_ERR_UNC_ACSV 0x00200000
 #define PCI_ERR_UNC_INTN 0x00400000
 #define PCI_ERR_UNC_MCBTLP 0x00800000
-#define PCI_ERR_UNC_ATOMEG 0x01000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_UNC_ATOMEG 0x01000000
 #define PCI_ERR_UNC_TLPPRE 0x02000000
 #define PCI_ERR_UNCOR_MASK 8
 #define PCI_ERR_UNCOR_SEVER 12
-#define PCI_ERR_COR_STATUS 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_COR_STATUS 16
 #define PCI_ERR_COR_RCVR 0x00000001
 #define PCI_ERR_COR_BAD_TLP 0x00000040
 #define PCI_ERR_COR_BAD_DLLP 0x00000080
-#define PCI_ERR_COR_REP_ROLL 0x00000100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_COR_REP_ROLL 0x00000100
 #define PCI_ERR_COR_REP_TIMER 0x00001000
 #define PCI_ERR_COR_ADV_NFAT 0x00002000
 #define PCI_ERR_COR_INTERNAL 0x00004000
-#define PCI_ERR_COR_LOG_OVER 0x00008000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_COR_LOG_OVER 0x00008000
 #define PCI_ERR_COR_MASK 20
 #define PCI_ERR_CAP 24
 #define PCI_ERR_CAP_FEP(x) ((x) & 31)
-#define PCI_ERR_CAP_ECRC_GENC 0x00000020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_CAP_ECRC_GENC 0x00000020
 #define PCI_ERR_CAP_ECRC_GENE 0x00000040
 #define PCI_ERR_CAP_ECRC_CHKC 0x00000080
 #define PCI_ERR_CAP_ECRC_CHKE 0x00000100
-#define PCI_ERR_HEADER_LOG 28
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_HEADER_LOG 28
 #define PCI_ERR_ROOT_COMMAND 44
 #define PCI_ERR_ROOT_CMD_COR_EN 0x00000001
 #define PCI_ERR_ROOT_CMD_NONFATAL_EN 0x00000002
-#define PCI_ERR_ROOT_CMD_FATAL_EN 0x00000004
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_ROOT_CMD_FATAL_EN 0x00000004
 #define PCI_ERR_ROOT_STATUS 48
 #define PCI_ERR_ROOT_COR_RCV 0x00000001
 #define PCI_ERR_ROOT_MULTI_COR_RCV 0x00000002
-#define PCI_ERR_ROOT_UNCOR_RCV 0x00000004
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_ROOT_UNCOR_RCV 0x00000004
 #define PCI_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008
 #define PCI_ERR_ROOT_FIRST_FATAL 0x00000010
 #define PCI_ERR_ROOT_NONFATAL_RCV 0x00000020
-#define PCI_ERR_ROOT_FATAL_RCV 0x00000040
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ERR_ROOT_FATAL_RCV 0x00000040
 #define PCI_ERR_ROOT_ERR_SRC 52
 #define PCI_VC_PORT_CAP1 4
 #define PCI_VC_CAP1_EVCC 0x00000007
-#define PCI_VC_CAP1_LPEVCC 0x00000070
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VC_CAP1_LPEVCC 0x00000070
 #define PCI_VC_CAP1_ARB_SIZE 0x00000c00
 #define PCI_VC_PORT_CAP2 8
 #define PCI_VC_CAP2_32_PHASE 0x00000002
-#define PCI_VC_CAP2_64_PHASE 0x00000004
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VC_CAP2_64_PHASE 0x00000004
 #define PCI_VC_CAP2_128_PHASE 0x00000008
 #define PCI_VC_CAP2_ARB_OFF 0xff000000
 #define PCI_VC_PORT_CTRL 12
-#define PCI_VC_PORT_CTRL_LOAD_TABLE 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VC_PORT_CTRL_LOAD_TABLE 0x00000001
 #define PCI_VC_PORT_STATUS 14
 #define PCI_VC_PORT_STATUS_TABLE 0x00000001
 #define PCI_VC_RES_CAP 16
-#define PCI_VC_RES_CAP_32_PHASE 0x00000002
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VC_RES_CAP_32_PHASE 0x00000002
 #define PCI_VC_RES_CAP_64_PHASE 0x00000004
 #define PCI_VC_RES_CAP_128_PHASE 0x00000008
 #define PCI_VC_RES_CAP_128_PHASE_TB 0x00000010
-#define PCI_VC_RES_CAP_256_PHASE 0x00000020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VC_RES_CAP_256_PHASE 0x00000020
 #define PCI_VC_RES_CAP_ARB_OFF 0xff000000
 #define PCI_VC_RES_CTRL 20
 #define PCI_VC_RES_CTRL_LOAD_TABLE 0x00010000
-#define PCI_VC_RES_CTRL_ARB_SELECT 0x000e0000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VC_RES_CTRL_ARB_SELECT 0x000e0000
 #define PCI_VC_RES_CTRL_ID 0x07000000
 #define PCI_VC_RES_CTRL_ENABLE 0x80000000
 #define PCI_VC_RES_STATUS 26
-#define PCI_VC_RES_STATUS_TABLE 0x00000001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VC_RES_STATUS_TABLE 0x00000001
 #define PCI_VC_RES_STATUS_NEGO 0x00000002
 #define PCI_CAP_VC_BASE_SIZEOF 0x10
 #define PCI_CAP_VC_PER_VC_SIZEOF 0x0C
-#define PCI_PWR_DSR 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PWR_DSR 4
 #define PCI_PWR_DATA 8
 #define PCI_PWR_DATA_BASE(x) ((x) & 0xff)
 #define PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3)
-#define PCI_PWR_DATA_PM_SUB(x) (((x) >> 10) & 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PWR_DATA_PM_SUB(x) (((x) >> 10) & 7)
 #define PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3)
 #define PCI_PWR_DATA_TYPE(x) (((x) >> 15) & 7)
 #define PCI_PWR_DATA_RAIL(x) (((x) >> 18) & 7)
-#define PCI_PWR_CAP 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PWR_CAP 12
 #define PCI_PWR_CAP_BUDGET(x) ((x) & 1)
 #define PCI_EXT_CAP_PWR_SIZEOF 16
 #define PCI_VNDR_HEADER 4
-#define PCI_VNDR_HEADER_ID(x) ((x) & 0xffff)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_VNDR_HEADER_ID(x) ((x) & 0xffff)
 #define PCI_VNDR_HEADER_REV(x) (((x) >> 16) & 0xf)
 #define PCI_VNDR_HEADER_LEN(x) (((x) >> 20) & 0xfff)
 #define HT_3BIT_CAP_MASK 0xE0
-#define HT_CAPTYPE_SLAVE 0x00
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HT_CAPTYPE_SLAVE 0x00
 #define HT_CAPTYPE_HOST 0x20
 #define HT_5BIT_CAP_MASK 0xF8
 #define HT_CAPTYPE_IRQ 0x80
-#define HT_CAPTYPE_REMAPPING_40 0xA0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HT_CAPTYPE_REMAPPING_40 0xA0
 #define HT_CAPTYPE_REMAPPING_64 0xA2
 #define HT_CAPTYPE_UNITID_CLUMP 0x90
 #define HT_CAPTYPE_EXTCONF 0x98
-#define HT_CAPTYPE_MSI_MAPPING 0xA8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HT_CAPTYPE_MSI_MAPPING 0xA8
 #define HT_MSI_FLAGS 0x02
 #define HT_MSI_FLAGS_ENABLE 0x1
 #define HT_MSI_FLAGS_FIXED 0x2
-#define HT_MSI_FIXED_ADDR 0x00000000FEE00000ULL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HT_MSI_FIXED_ADDR 0x00000000FEE00000ULL
 #define HT_MSI_ADDR_LO 0x04
 #define HT_MSI_ADDR_LO_MASK 0xFFF00000
 #define HT_MSI_ADDR_HI 0x08
-#define HT_CAPTYPE_DIRECT_ROUTE 0xB0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HT_CAPTYPE_DIRECT_ROUTE 0xB0
 #define HT_CAPTYPE_VCSET 0xB8
 #define HT_CAPTYPE_ERROR_RETRY 0xC0
 #define HT_CAPTYPE_GEN3 0xD0
-#define HT_CAPTYPE_PM 0xE0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HT_CAPTYPE_PM 0xE0
 #define HT_CAP_SIZEOF_LONG 28
 #define HT_CAP_SIZEOF_SHORT 24
 #define PCI_ARI_CAP 0x04
-#define PCI_ARI_CAP_MFVC 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ARI_CAP_MFVC 0x0001
 #define PCI_ARI_CAP_ACS 0x0002
 #define PCI_ARI_CAP_NFN(x) (((x) >> 8) & 0xff)
 #define PCI_ARI_CTRL 0x06
-#define PCI_ARI_CTRL_MFVC 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ARI_CTRL_MFVC 0x0001
 #define PCI_ARI_CTRL_ACS 0x0002
 #define PCI_ARI_CTRL_FG(x) (((x) >> 4) & 7)
 #define PCI_EXT_CAP_ARI_SIZEOF 8
-#define PCI_ATS_CAP 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ATS_CAP 0x04
 #define PCI_ATS_CAP_QDEP(x) ((x) & 0x1f)
 #define PCI_ATS_MAX_QDEP 32
 #define PCI_ATS_CTRL 0x06
-#define PCI_ATS_CTRL_ENABLE 0x8000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ATS_CTRL_ENABLE 0x8000
 #define PCI_ATS_CTRL_STU(x) ((x) & 0x1f)
 #define PCI_ATS_MIN_STU 12
 #define PCI_EXT_CAP_ATS_SIZEOF 8
-#define PCI_PRI_CTRL 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PRI_CTRL 0x04
 #define PCI_PRI_CTRL_ENABLE 0x01
 #define PCI_PRI_CTRL_RESET 0x02
 #define PCI_PRI_STATUS 0x06
-#define PCI_PRI_STATUS_RF 0x001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PRI_STATUS_RF 0x001
 #define PCI_PRI_STATUS_UPRGI 0x002
 #define PCI_PRI_STATUS_STOPPED 0x100
 #define PCI_PRI_MAX_REQ 0x08
-#define PCI_PRI_ALLOC_REQ 0x0c
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PRI_ALLOC_REQ 0x0c
 #define PCI_EXT_CAP_PRI_SIZEOF 16
 #define PCI_PASID_CAP 0x04
 #define PCI_PASID_CAP_EXEC 0x02
-#define PCI_PASID_CAP_PRIV 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PASID_CAP_PRIV 0x04
 #define PCI_PASID_CTRL 0x06
 #define PCI_PASID_CTRL_ENABLE 0x01
 #define PCI_PASID_CTRL_EXEC 0x02
-#define PCI_PASID_CTRL_PRIV 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_PASID_CTRL_PRIV 0x04
 #define PCI_EXT_CAP_PASID_SIZEOF 8
 #define PCI_SRIOV_CAP 0x04
 #define PCI_SRIOV_CAP_VFM 0x01
-#define PCI_SRIOV_CAP_INTR(x) ((x) >> 21)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SRIOV_CAP_INTR(x) ((x) >> 21)
 #define PCI_SRIOV_CTRL 0x08
 #define PCI_SRIOV_CTRL_VFE 0x01
 #define PCI_SRIOV_CTRL_VFM 0x02
-#define PCI_SRIOV_CTRL_INTR 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SRIOV_CTRL_INTR 0x04
 #define PCI_SRIOV_CTRL_MSE 0x08
 #define PCI_SRIOV_CTRL_ARI 0x10
 #define PCI_SRIOV_STATUS 0x0a
-#define PCI_SRIOV_STATUS_VFM 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SRIOV_STATUS_VFM 0x01
 #define PCI_SRIOV_INITIAL_VF 0x0c
 #define PCI_SRIOV_TOTAL_VF 0x0e
 #define PCI_SRIOV_NUM_VF 0x10
-#define PCI_SRIOV_FUNC_LINK 0x12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SRIOV_FUNC_LINK 0x12
 #define PCI_SRIOV_VF_OFFSET 0x14
 #define PCI_SRIOV_VF_STRIDE 0x16
 #define PCI_SRIOV_VF_DID 0x1a
-#define PCI_SRIOV_SUP_PGSIZE 0x1c
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SRIOV_SUP_PGSIZE 0x1c
 #define PCI_SRIOV_SYS_PGSIZE 0x20
 #define PCI_SRIOV_BAR 0x24
 #define PCI_SRIOV_NUM_BARS 6
-#define PCI_SRIOV_VFM 0x3c
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SRIOV_VFM 0x3c
 #define PCI_SRIOV_VFM_BIR(x) ((x) & 7)
 #define PCI_SRIOV_VFM_OFFSET(x) ((x) & ~7)
 #define PCI_SRIOV_VFM_UA 0x0
-#define PCI_SRIOV_VFM_MI 0x1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SRIOV_VFM_MI 0x1
 #define PCI_SRIOV_VFM_MO 0x2
 #define PCI_SRIOV_VFM_AV 0x3
 #define PCI_EXT_CAP_SRIOV_SIZEOF 64
-#define PCI_LTR_MAX_SNOOP_LAT 0x4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_LTR_MAX_SNOOP_LAT 0x4
 #define PCI_LTR_MAX_NOSNOOP_LAT 0x6
 #define PCI_LTR_VALUE_MASK 0x000003ff
 #define PCI_LTR_SCALE_MASK 0x00001c00
-#define PCI_LTR_SCALE_SHIFT 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_LTR_SCALE_SHIFT 10
 #define PCI_EXT_CAP_LTR_SIZEOF 8
 #define PCI_ACS_CAP 0x04
 #define PCI_ACS_SV 0x01
-#define PCI_ACS_TB 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ACS_TB 0x02
 #define PCI_ACS_RR 0x04
 #define PCI_ACS_CR 0x08
 #define PCI_ACS_UF 0x10
-#define PCI_ACS_EC 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ACS_EC 0x20
 #define PCI_ACS_DT 0x40
 #define PCI_ACS_EGRESS_BITS 0x05
 #define PCI_ACS_CTRL 0x06
-#define PCI_ACS_EGRESS_CTL_V 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_ACS_EGRESS_CTL_V 0x08
 #define PCI_VSEC_HDR 4
 #define PCI_VSEC_HDR_LEN_SHIFT 20
 #define PCI_SATA_REGS 4
-#define PCI_SATA_REGS_MASK 0xF
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SATA_REGS_MASK 0xF
 #define PCI_SATA_REGS_INLINE 0xF
 #define PCI_SATA_SIZEOF_SHORT 8
 #define PCI_SATA_SIZEOF_LONG 16
-#define PCI_REBAR_CTRL 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_REBAR_CTRL 8
 #define PCI_REBAR_CTRL_NBAR_MASK (7 << 5)
 #define PCI_REBAR_CTRL_NBAR_SHIFT 5
 #define PCI_DPA_CAP 4
-#define PCI_DPA_CAP_SUBSTATE_MASK 0x1F
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_DPA_CAP_SUBSTATE_MASK 0x1F
 #define PCI_DPA_BASE_SIZEOF 16
 #define PCI_TPH_CAP 4
 #define PCI_TPH_CAP_LOC_MASK 0x600
-#define PCI_TPH_LOC_NONE 0x000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_TPH_LOC_NONE 0x000
 #define PCI_TPH_LOC_CAP 0x200
 #define PCI_TPH_LOC_MSIX 0x400
 #define PCI_TPH_CAP_ST_MASK 0x07FF0000
-#define PCI_TPH_CAP_ST_SHIFT 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_TPH_CAP_ST_SHIFT 16
 #define PCI_TPH_BASE_SIZEOF 12
 #endif
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index 5922cbe..ccefa74 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -23,396 +23,352 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/byteorder.h>
 enum perf_type_id {
- PERF_TYPE_HARDWARE = 0,
- PERF_TYPE_SOFTWARE = 1,
+  PERF_TYPE_HARDWARE = 0,
+  PERF_TYPE_SOFTWARE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_TYPE_TRACEPOINT = 2,
- PERF_TYPE_HW_CACHE = 3,
- PERF_TYPE_RAW = 4,
- PERF_TYPE_BREAKPOINT = 5,
+  PERF_TYPE_TRACEPOINT = 2,
+  PERF_TYPE_HW_CACHE = 3,
+  PERF_TYPE_RAW = 4,
+  PERF_TYPE_BREAKPOINT = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_TYPE_MAX,
+  PERF_TYPE_MAX,
 };
 enum perf_hw_id {
- PERF_COUNT_HW_CPU_CYCLES = 0,
+  PERF_COUNT_HW_CPU_CYCLES = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_HW_INSTRUCTIONS = 1,
- PERF_COUNT_HW_CACHE_REFERENCES = 2,
- PERF_COUNT_HW_CACHE_MISSES = 3,
- PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
+  PERF_COUNT_HW_INSTRUCTIONS = 1,
+  PERF_COUNT_HW_CACHE_REFERENCES = 2,
+  PERF_COUNT_HW_CACHE_MISSES = 3,
+  PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_HW_BRANCH_MISSES = 5,
- PERF_COUNT_HW_BUS_CYCLES = 6,
- PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
- PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
+  PERF_COUNT_HW_BRANCH_MISSES = 5,
+  PERF_COUNT_HW_BUS_CYCLES = 6,
+  PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
+  PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_HW_REF_CPU_CYCLES = 9,
- PERF_COUNT_HW_MAX,
+  PERF_COUNT_HW_REF_CPU_CYCLES = 9,
+  PERF_COUNT_HW_MAX,
 };
 enum perf_hw_cache_id {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_HW_CACHE_L1D = 0,
- PERF_COUNT_HW_CACHE_L1I = 1,
- PERF_COUNT_HW_CACHE_LL = 2,
- PERF_COUNT_HW_CACHE_DTLB = 3,
+  PERF_COUNT_HW_CACHE_L1D = 0,
+  PERF_COUNT_HW_CACHE_L1I = 1,
+  PERF_COUNT_HW_CACHE_LL = 2,
+  PERF_COUNT_HW_CACHE_DTLB = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_HW_CACHE_ITLB = 4,
- PERF_COUNT_HW_CACHE_BPU = 5,
- PERF_COUNT_HW_CACHE_NODE = 6,
- PERF_COUNT_HW_CACHE_MAX,
+  PERF_COUNT_HW_CACHE_ITLB = 4,
+  PERF_COUNT_HW_CACHE_BPU = 5,
+  PERF_COUNT_HW_CACHE_NODE = 6,
+  PERF_COUNT_HW_CACHE_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum perf_hw_cache_op_id {
- PERF_COUNT_HW_CACHE_OP_READ = 0,
- PERF_COUNT_HW_CACHE_OP_WRITE = 1,
+  PERF_COUNT_HW_CACHE_OP_READ = 0,
+  PERF_COUNT_HW_CACHE_OP_WRITE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
- PERF_COUNT_HW_CACHE_OP_MAX,
+  PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
+  PERF_COUNT_HW_CACHE_OP_MAX,
 };
 enum perf_hw_cache_op_result_id {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
- PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
- PERF_COUNT_HW_CACHE_RESULT_MAX,
+  PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
+  PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
+  PERF_COUNT_HW_CACHE_RESULT_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum perf_sw_ids {
- PERF_COUNT_SW_CPU_CLOCK = 0,
- PERF_COUNT_SW_TASK_CLOCK = 1,
- PERF_COUNT_SW_PAGE_FAULTS = 2,
+  PERF_COUNT_SW_CPU_CLOCK = 0,
+  PERF_COUNT_SW_TASK_CLOCK = 1,
+  PERF_COUNT_SW_PAGE_FAULTS = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
- PERF_COUNT_SW_CPU_MIGRATIONS = 4,
- PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
- PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
+  PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
+  PERF_COUNT_SW_CPU_MIGRATIONS = 4,
+  PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
+  PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
- PERF_COUNT_SW_EMULATION_FAULTS = 8,
- PERF_COUNT_SW_DUMMY = 9,
- PERF_COUNT_SW_MAX,
+  PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
+  PERF_COUNT_SW_EMULATION_FAULTS = 8,
+  PERF_COUNT_SW_DUMMY = 9,
+  PERF_COUNT_SW_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum perf_event_sample_format {
- PERF_SAMPLE_IP = 1U << 0,
- PERF_SAMPLE_TID = 1U << 1,
+  PERF_SAMPLE_IP = 1U << 0,
+  PERF_SAMPLE_TID = 1U << 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_TIME = 1U << 2,
- PERF_SAMPLE_ADDR = 1U << 3,
- PERF_SAMPLE_READ = 1U << 4,
- PERF_SAMPLE_CALLCHAIN = 1U << 5,
+  PERF_SAMPLE_TIME = 1U << 2,
+  PERF_SAMPLE_ADDR = 1U << 3,
+  PERF_SAMPLE_READ = 1U << 4,
+  PERF_SAMPLE_CALLCHAIN = 1U << 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_ID = 1U << 6,
- PERF_SAMPLE_CPU = 1U << 7,
- PERF_SAMPLE_PERIOD = 1U << 8,
- PERF_SAMPLE_STREAM_ID = 1U << 9,
+  PERF_SAMPLE_ID = 1U << 6,
+  PERF_SAMPLE_CPU = 1U << 7,
+  PERF_SAMPLE_PERIOD = 1U << 8,
+  PERF_SAMPLE_STREAM_ID = 1U << 9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_RAW = 1U << 10,
- PERF_SAMPLE_BRANCH_STACK = 1U << 11,
- PERF_SAMPLE_REGS_USER = 1U << 12,
- PERF_SAMPLE_STACK_USER = 1U << 13,
+  PERF_SAMPLE_RAW = 1U << 10,
+  PERF_SAMPLE_BRANCH_STACK = 1U << 11,
+  PERF_SAMPLE_REGS_USER = 1U << 12,
+  PERF_SAMPLE_STACK_USER = 1U << 13,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_WEIGHT = 1U << 14,
- PERF_SAMPLE_DATA_SRC = 1U << 15,
- PERF_SAMPLE_IDENTIFIER = 1U << 16,
- PERF_SAMPLE_TRANSACTION = 1U << 17,
+  PERF_SAMPLE_WEIGHT = 1U << 14,
+  PERF_SAMPLE_DATA_SRC = 1U << 15,
+  PERF_SAMPLE_IDENTIFIER = 1U << 16,
+  PERF_SAMPLE_TRANSACTION = 1U << 17,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_MAX = 1U << 18,
+  PERF_SAMPLE_MAX = 1U << 18,
 };
 enum perf_branch_sample_type {
- PERF_SAMPLE_BRANCH_USER = 1U << 0,
+  PERF_SAMPLE_BRANCH_USER = 1U << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_BRANCH_KERNEL = 1U << 1,
- PERF_SAMPLE_BRANCH_HV = 1U << 2,
- PERF_SAMPLE_BRANCH_ANY = 1U << 3,
- PERF_SAMPLE_BRANCH_ANY_CALL = 1U << 4,
+  PERF_SAMPLE_BRANCH_KERNEL = 1U << 1,
+  PERF_SAMPLE_BRANCH_HV = 1U << 2,
+  PERF_SAMPLE_BRANCH_ANY = 1U << 3,
+  PERF_SAMPLE_BRANCH_ANY_CALL = 1U << 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << 5,
- PERF_SAMPLE_BRANCH_IND_CALL = 1U << 6,
- PERF_SAMPLE_BRANCH_ABORT_TX = 1U << 7,
- PERF_SAMPLE_BRANCH_IN_TX = 1U << 8,
+  PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << 5,
+  PERF_SAMPLE_BRANCH_IND_CALL = 1U << 6,
+  PERF_SAMPLE_BRANCH_ABORT_TX = 1U << 7,
+  PERF_SAMPLE_BRANCH_IN_TX = 1U << 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_SAMPLE_BRANCH_NO_TX = 1U << 9,
- PERF_SAMPLE_BRANCH_MAX = 1U << 10,
+  PERF_SAMPLE_BRANCH_NO_TX = 1U << 9,
+  PERF_SAMPLE_BRANCH_COND = 1U << 10,
+  PERF_SAMPLE_BRANCH_MAX = 1U << 11,
 };
-#define PERF_SAMPLE_BRANCH_PLM_ALL   (PERF_SAMPLE_BRANCH_USER|  PERF_SAMPLE_BRANCH_KERNEL|  PERF_SAMPLE_BRANCH_HV)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
 enum perf_sample_regs_abi {
- PERF_SAMPLE_REGS_ABI_NONE = 0,
- PERF_SAMPLE_REGS_ABI_32 = 1,
- PERF_SAMPLE_REGS_ABI_64 = 2,
+  PERF_SAMPLE_REGS_ABI_NONE = 0,
+  PERF_SAMPLE_REGS_ABI_32 = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_SAMPLE_REGS_ABI_64 = 2,
 };
 enum {
- PERF_TXN_ELISION = (1 << 0),
- PERF_TXN_TRANSACTION = (1 << 1),
+  PERF_TXN_ELISION = (1 << 0),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_TXN_SYNC = (1 << 2),
- PERF_TXN_ASYNC = (1 << 3),
- PERF_TXN_RETRY = (1 << 4),
- PERF_TXN_CONFLICT = (1 << 5),
+  PERF_TXN_TRANSACTION = (1 << 1),
+  PERF_TXN_SYNC = (1 << 2),
+  PERF_TXN_ASYNC = (1 << 3),
+  PERF_TXN_RETRY = (1 << 4),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_TXN_CAPACITY_WRITE = (1 << 6),
- PERF_TXN_CAPACITY_READ = (1 << 7),
- PERF_TXN_MAX = (1 << 8),
- PERF_TXN_ABORT_MASK = (0xffffffffULL << 32),
+  PERF_TXN_CONFLICT = (1 << 5),
+  PERF_TXN_CAPACITY_WRITE = (1 << 6),
+  PERF_TXN_CAPACITY_READ = (1 << 7),
+  PERF_TXN_MAX = (1 << 8),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_TXN_ABORT_SHIFT = 32,
+  PERF_TXN_ABORT_MASK = (0xffffffffULL << 32),
+  PERF_TXN_ABORT_SHIFT = 32,
 };
 enum perf_event_read_format {
- PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
- PERF_FORMAT_ID = 1U << 2,
- PERF_FORMAT_GROUP = 1U << 3,
- PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0,
+  PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
+  PERF_FORMAT_ID = 1U << 2,
+  PERF_FORMAT_GROUP = 1U << 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PERF_FORMAT_MAX = 1U << 4,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
-#define PERF_ATTR_SIZE_VER2 80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_ATTR_SIZE_VER2 80
 #define PERF_ATTR_SIZE_VER3 96
 struct perf_event_attr {
- __u32 type;
- __u32 size;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 config;
- union {
- __u64 sample_period;
- __u64 sample_freq;
+  __u32 size;
+  __u64 config;
+  union {
+    __u64 sample_period;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- __u64 sample_type;
- __u64 read_format;
- __u64 disabled : 1,
+    __u64 sample_freq;
+  };
+  __u64 sample_type;
+  __u64 read_format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- inherit : 1,
- pinned : 1,
- exclusive : 1,
- exclude_user : 1,
+  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, __reserved_1 : 39;
+  union {
+    __u32 wakeup_events;
+    __u32 wakeup_watermark;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- exclude_kernel : 1,
- exclude_hv : 1,
- exclude_idle : 1,
- mmap : 1,
+  };
+  __u32 bp_type;
+  union {
+    __u64 bp_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- comm : 1,
- freq : 1,
- inherit_stat : 1,
- enable_on_exec : 1,
+    __u64 config1;
+  };
+  union {
+    __u64 bp_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- task : 1,
- watermark : 1,
- precise_ip : 2,
- mmap_data : 1,
+    __u64 config2;
+  };
+  __u64 branch_sample_type;
+  __u64 sample_regs_user;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- sample_id_all : 1,
- exclude_host : 1,
- exclude_guest : 1,
- exclude_callchain_kernel : 1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- exclude_callchain_user : 1,
- mmap2 : 1,
- __reserved_1 : 40;
- union {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 wakeup_events;
- __u32 wakeup_watermark;
- };
- __u32 bp_type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __u64 bp_addr;
- __u64 config1;
- };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __u64 bp_len;
- __u64 config2;
- };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 branch_sample_type;
- __u64 sample_regs_user;
- __u32 sample_stack_user;
- __u32 __reserved_2;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 sample_stack_user;
+  __u32 __reserved_2;
 };
-#define perf_flags(attr) (*(&(attr)->read_format + 1))
-#define PERF_EVENT_IOC_ENABLE _IO ('$', 0)
-#define PERF_EVENT_IOC_DISABLE _IO ('$', 1)
+#define perf_flags(attr) (* (& (attr)->read_format + 1))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PERF_EVENT_IOC_REFRESH _IO ('$', 2)
-#define PERF_EVENT_IOC_RESET _IO ('$', 3)
+#define PERF_EVENT_IOC_ENABLE _IO('$', 0)
+#define PERF_EVENT_IOC_DISABLE _IO('$', 1)
+#define PERF_EVENT_IOC_REFRESH _IO('$', 2)
+#define PERF_EVENT_IOC_RESET _IO('$', 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_EVENT_IOC_PERIOD _IOW('$', 4, __u64)
-#define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_EVENT_IOC_SET_OUTPUT _IO('$', 5)
 #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *)
 #define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *)
-enum perf_event_ioc_flags {
- PERF_IOC_FLAG_GROUP = 1U << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum perf_event_ioc_flags {
+  PERF_IOC_FLAG_GROUP = 1U << 0,
 };
 struct perf_event_mmap_page {
- __u32 version;
- __u32 compat_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lock;
- __u32 index;
- __s64 offset;
- __u64 time_enabled;
+  __u32 version;
+  __u32 compat_version;
+  __u32 lock;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 time_running;
- union {
- __u64 capabilities;
- struct {
+  __s64 offset;
+  __u64 time_enabled;
+  __u64 time_running;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 cap_bit0 : 1,
- cap_bit0_is_deprecated : 1,
- cap_user_rdpmc : 1,
- cap_user_time : 1,
+    __u64 capabilities;
+    struct {
+      __u64 cap_bit0 : 1, cap_bit0_is_deprecated : 1, cap_user_rdpmc : 1, cap_user_time : 1, cap_user_time_zero : 1, cap_____res : 59;
+    };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cap_user_time_zero : 1,
- cap_____res : 59;
- };
- };
+  };
+  __u16 pmc_width;
+  __u16 time_shift;
+  __u32 time_mult;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pmc_width;
- __u16 time_shift;
- __u32 time_mult;
- __u64 time_offset;
+  __u64 time_offset;
+  __u64 time_zero;
+  __u32 size;
+  __u8 __reserved[118 * 8 + 4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 time_zero;
- __u32 size;
- __u8 __reserved[118*8+4];
- __u64 data_head;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data_tail;
+  __u64 data_head;
+  __u64 data_tail;
 };
 #define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0)
-#define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0)
 #define PERF_RECORD_MISC_KERNEL (1 << 0)
 #define PERF_RECORD_MISC_USER (2 << 0)
 #define PERF_RECORD_MISC_HYPERVISOR (3 << 0)
-#define PERF_RECORD_MISC_GUEST_KERNEL (4 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_RECORD_MISC_GUEST_KERNEL (4 << 0)
 #define PERF_RECORD_MISC_GUEST_USER (5 << 0)
 #define PERF_RECORD_MISC_MMAP_DATA (1 << 13)
+#define PERF_RECORD_MISC_COMM_EXEC (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_RECORD_MISC_EXACT_IP (1 << 14)
 #define PERF_RECORD_MISC_EXT_RESERVED (1 << 15)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct perf_event_header {
- __u32 type;
- __u16 misc;
- __u16 size;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 misc;
+  __u16 size;
 };
 enum perf_event_type {
- PERF_RECORD_MMAP = 1,
- PERF_RECORD_LOST = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_RECORD_COMM = 3,
- PERF_RECORD_EXIT = 4,
- PERF_RECORD_THROTTLE = 5,
- PERF_RECORD_UNTHROTTLE = 6,
+  PERF_RECORD_MMAP = 1,
+  PERF_RECORD_LOST = 2,
+  PERF_RECORD_COMM = 3,
+  PERF_RECORD_EXIT = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_RECORD_FORK = 7,
- PERF_RECORD_READ = 8,
- PERF_RECORD_SAMPLE = 9,
- PERF_RECORD_MMAP2 = 10,
+  PERF_RECORD_THROTTLE = 5,
+  PERF_RECORD_UNTHROTTLE = 6,
+  PERF_RECORD_FORK = 7,
+  PERF_RECORD_READ = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_RECORD_MAX,
+  PERF_RECORD_SAMPLE = 9,
+  PERF_RECORD_MMAP2 = 10,
+  PERF_RECORD_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_MAX_STACK_DEPTH 127
 enum perf_callchain_context {
+  PERF_CONTEXT_HV = (__u64) - 32,
+  PERF_CONTEXT_KERNEL = (__u64) - 128,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_CONTEXT_HV = (__u64)-32,
- PERF_CONTEXT_KERNEL = (__u64)-128,
- PERF_CONTEXT_USER = (__u64)-512,
- PERF_CONTEXT_GUEST = (__u64)-2048,
+  PERF_CONTEXT_USER = (__u64) - 512,
+  PERF_CONTEXT_GUEST = (__u64) - 2048,
+  PERF_CONTEXT_GUEST_KERNEL = (__u64) - 2176,
+  PERF_CONTEXT_GUEST_USER = (__u64) - 2560,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PERF_CONTEXT_GUEST_KERNEL = (__u64)-2176,
- PERF_CONTEXT_GUEST_USER = (__u64)-2560,
- PERF_CONTEXT_MAX = (__u64)-4095,
+  PERF_CONTEXT_MAX = (__u64) - 4095,
 };
+#define PERF_FLAG_FD_NO_GROUP (1UL << 0)
+#define PERF_FLAG_FD_OUTPUT (1UL << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PERF_FLAG_FD_NO_GROUP (1U << 0)
-#define PERF_FLAG_FD_OUTPUT (1U << 1)
-#define PERF_FLAG_PID_CGROUP (1U << 2)
-#define PERF_FLAG_FD_CLOEXEC (1U << 3)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_FLAG_PID_CGROUP (1UL << 2)
+#define PERF_FLAG_FD_CLOEXEC (1UL << 3)
 union perf_mem_data_src {
- __u64 val;
- struct {
- __u64 mem_op:5,
+  __u64 val;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mem_lvl:14,
- mem_snoop:5,
- mem_lock:2,
- mem_dtlb:7,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mem_rsvd:31;
- };
+  struct {
+    __u64 mem_op : 5, mem_lvl : 14, mem_snoop : 5, mem_lock : 2, mem_dtlb : 7, mem_rsvd : 31;
+  };
 };
-#define PERF_MEM_OP_NA 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_OP_NA 0x01
 #define PERF_MEM_OP_LOAD 0x02
 #define PERF_MEM_OP_STORE 0x04
 #define PERF_MEM_OP_PFETCH 0x08
-#define PERF_MEM_OP_EXEC 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_OP_EXEC 0x10
 #define PERF_MEM_OP_SHIFT 0
 #define PERF_MEM_LVL_NA 0x01
 #define PERF_MEM_LVL_HIT 0x02
-#define PERF_MEM_LVL_MISS 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_LVL_MISS 0x04
 #define PERF_MEM_LVL_L1 0x08
 #define PERF_MEM_LVL_LFB 0x10
 #define PERF_MEM_LVL_L2 0x20
-#define PERF_MEM_LVL_L3 0x40
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_LVL_L3 0x40
 #define PERF_MEM_LVL_LOC_RAM 0x80
 #define PERF_MEM_LVL_REM_RAM1 0x100
 #define PERF_MEM_LVL_REM_RAM2 0x200
-#define PERF_MEM_LVL_REM_CCE1 0x400
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_LVL_REM_CCE1 0x400
 #define PERF_MEM_LVL_REM_CCE2 0x800
 #define PERF_MEM_LVL_IO 0x1000
 #define PERF_MEM_LVL_UNC 0x2000
-#define PERF_MEM_LVL_SHIFT 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_LVL_SHIFT 5
 #define PERF_MEM_SNOOP_NA 0x01
 #define PERF_MEM_SNOOP_NONE 0x02
 #define PERF_MEM_SNOOP_HIT 0x04
-#define PERF_MEM_SNOOP_MISS 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_SNOOP_MISS 0x08
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_LOCK_NA 0x01
-#define PERF_MEM_LOCK_LOCKED 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_LOCK_LOCKED 0x02
 #define PERF_MEM_LOCK_SHIFT 24
 #define PERF_MEM_TLB_NA 0x01
 #define PERF_MEM_TLB_HIT 0x02
-#define PERF_MEM_TLB_MISS 0x04
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PERF_MEM_TLB_MISS 0x04
 #define PERF_MEM_TLB_L1 0x08
 #define PERF_MEM_TLB_L2 0x10
 #define PERF_MEM_TLB_WK 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_MEM_TLB_OS 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_MEM_TLB_SHIFT 26
-#define PERF_MEM_S(a, s)   (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
+#define PERF_MEM_S(a,s) (((__u64) PERF_MEM_ ##a ##_ ##s) << PERF_MEM_ ##a ##_SHIFT)
 struct perf_branch_entry {
- __u64 from;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 to;
- __u64 mispred:1,
- predicted:1,
- in_tx:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- abort:1,
- reserved:60;
+  __u64 from;
+  __u64 to;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, reserved : 60;
 };
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/personality.h b/libc/kernel/uapi/linux/personality.h
index e95a514..fa631b5 100644
--- a/libc/kernel/uapi/linux/personality.h
+++ b/libc/kernel/uapi/linux/personality.h
@@ -19,53 +19,52 @@
 #ifndef _UAPI_LINUX_PERSONALITY_H
 #define _UAPI_LINUX_PERSONALITY_H
 enum {
- UNAME26 = 0x0020000,
+  UNAME26 = 0x0020000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ADDR_NO_RANDOMIZE = 0x0040000,
- FDPIC_FUNCPTRS = 0x0080000,
- MMAP_PAGE_ZERO = 0x0100000,
- ADDR_COMPAT_LAYOUT = 0x0200000,
+  ADDR_NO_RANDOMIZE = 0x0040000,
+  FDPIC_FUNCPTRS = 0x0080000,
+  MMAP_PAGE_ZERO = 0x0100000,
+  ADDR_COMPAT_LAYOUT = 0x0200000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- READ_IMPLIES_EXEC = 0x0400000,
- ADDR_LIMIT_32BIT = 0x0800000,
- SHORT_INODE = 0x1000000,
- WHOLE_SECONDS = 0x2000000,
+  READ_IMPLIES_EXEC = 0x0400000,
+  ADDR_LIMIT_32BIT = 0x0800000,
+  SHORT_INODE = 0x1000000,
+  WHOLE_SECONDS = 0x2000000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- STICKY_TIMEOUTS = 0x4000000,
- ADDR_LIMIT_3GB = 0x8000000,
+  STICKY_TIMEOUTS = 0x4000000,
+  ADDR_LIMIT_3GB = 0x8000000,
 };
-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC |   ADDR_NO_RANDOMIZE |   ADDR_COMPAT_LAYOUT |   MMAP_PAGE_ZERO)
+#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC | ADDR_NO_RANDOMIZE | ADDR_COMPAT_LAYOUT | MMAP_PAGE_ZERO)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- PER_LINUX = 0x0000,
- PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
- PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS,
+  PER_LINUX = 0x0000,
+  PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
+  PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
- PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
- PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS |
- WHOLE_SECONDS | SHORT_INODE,
+  PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
+  PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
+  PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE,
+  PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
- PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
- PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS,
- PER_BSD = 0x0006,
+  PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
+  PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS,
+  PER_BSD = 0x0006,
+  PER_SUNOS = 0x0006 | STICKY_TIMEOUTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PER_SUNOS = 0x0006 | STICKY_TIMEOUTS,
- PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
- PER_LINUX32 = 0x0008,
- PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB,
+  PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
+  PER_LINUX32 = 0x0008,
+  PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB,
+  PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,
- PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,
- PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,
- PER_RISCOS = 0x000c,
+  PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,
+  PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,
+  PER_RISCOS = 0x000c,
+  PER_SOLARIS = 0x000d | STICKY_TIMEOUTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PER_SOLARIS = 0x000d | STICKY_TIMEOUTS,
- PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
- PER_OSF4 = 0x000f,
- PER_HPUX = 0x0010,
+  PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
+  PER_OSF4 = 0x000f,
+  PER_HPUX = 0x0010,
+  PER_MASK = 0x00ff,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PER_MASK = 0x00ff,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/pfkeyv2.h b/libc/kernel/uapi/linux/pfkeyv2.h
index b87b698..f4df574 100644
--- a/libc/kernel/uapi/linux/pfkeyv2.h
+++ b/libc/kernel/uapi/linux/pfkeyv2.h
@@ -23,343 +23,356 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PFKEYV2_REVISION 199806L
 struct sadb_msg {
- __u8 sadb_msg_version;
- __u8 sadb_msg_type;
+  __u8 sadb_msg_version;
+  __u8 sadb_msg_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sadb_msg_errno;
- __u8 sadb_msg_satype;
- __u16 sadb_msg_len;
- __u16 sadb_msg_reserved;
+  __u8 sadb_msg_errno;
+  __u8 sadb_msg_satype;
+  __u16 sadb_msg_len;
+  __u16 sadb_msg_reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sadb_msg_seq;
- __u32 sadb_msg_pid;
+  __u32 sadb_msg_seq;
+  __u32 sadb_msg_pid;
 } __attribute__((packed));
 struct sadb_ext {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_ext_len;
- __u16 sadb_ext_type;
+  __u16 sadb_ext_len;
+  __u16 sadb_ext_type;
 } __attribute__((packed));
 struct sadb_sa {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_sa_len;
- __u16 sadb_sa_exttype;
- __be32 sadb_sa_spi;
- __u8 sadb_sa_replay;
+  __u16 sadb_sa_len;
+  __u16 sadb_sa_exttype;
+  __be32 sadb_sa_spi;
+  __u8 sadb_sa_replay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sadb_sa_state;
- __u8 sadb_sa_auth;
- __u8 sadb_sa_encrypt;
- __u32 sadb_sa_flags;
+  __u8 sadb_sa_state;
+  __u8 sadb_sa_auth;
+  __u8 sadb_sa_encrypt;
+  __u32 sadb_sa_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct sadb_lifetime {
- __u16 sadb_lifetime_len;
- __u16 sadb_lifetime_exttype;
+  __u16 sadb_lifetime_len;
+  __u16 sadb_lifetime_exttype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sadb_lifetime_allocations;
- __u64 sadb_lifetime_bytes;
- __u64 sadb_lifetime_addtime;
- __u64 sadb_lifetime_usetime;
+  __u32 sadb_lifetime_allocations;
+  __u64 sadb_lifetime_bytes;
+  __u64 sadb_lifetime_addtime;
+  __u64 sadb_lifetime_usetime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct sadb_address {
- __u16 sadb_address_len;
- __u16 sadb_address_exttype;
+  __u16 sadb_address_len;
+  __u16 sadb_address_exttype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sadb_address_proto;
- __u8 sadb_address_prefixlen;
- __u16 sadb_address_reserved;
+  __u8 sadb_address_proto;
+  __u8 sadb_address_prefixlen;
+  __u16 sadb_address_reserved;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_key {
- __u16 sadb_key_len;
- __u16 sadb_key_exttype;
- __u16 sadb_key_bits;
+  __u16 sadb_key_len;
+  __u16 sadb_key_exttype;
+  __u16 sadb_key_bits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_key_reserved;
+  __u16 sadb_key_reserved;
 } __attribute__((packed));
 struct sadb_ident {
- __u16 sadb_ident_len;
+  __u16 sadb_ident_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_ident_exttype;
- __u16 sadb_ident_type;
- __u16 sadb_ident_reserved;
- __u64 sadb_ident_id;
+  __u16 sadb_ident_exttype;
+  __u16 sadb_ident_type;
+  __u16 sadb_ident_reserved;
+  __u64 sadb_ident_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct sadb_sens {
- __u16 sadb_sens_len;
- __u16 sadb_sens_exttype;
+  __u16 sadb_sens_len;
+  __u16 sadb_sens_exttype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sadb_sens_dpd;
- __u8 sadb_sens_sens_level;
- __u8 sadb_sens_sens_len;
- __u8 sadb_sens_integ_level;
+  __u32 sadb_sens_dpd;
+  __u8 sadb_sens_sens_level;
+  __u8 sadb_sens_sens_len;
+  __u8 sadb_sens_integ_level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sadb_sens_integ_len;
- __u32 sadb_sens_reserved;
+  __u8 sadb_sens_integ_len;
+  __u32 sadb_sens_reserved;
 } __attribute__((packed));
 struct sadb_prop {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_prop_len;
- __u16 sadb_prop_exttype;
- __u8 sadb_prop_replay;
- __u8 sadb_prop_reserved[3];
+  __u16 sadb_prop_len;
+  __u16 sadb_prop_exttype;
+  __u8 sadb_prop_replay;
+  __u8 sadb_prop_reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct sadb_comb {
- __u8 sadb_comb_auth;
- __u8 sadb_comb_encrypt;
+  __u8 sadb_comb_auth;
+  __u8 sadb_comb_encrypt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_comb_flags;
- __u16 sadb_comb_auth_minbits;
- __u16 sadb_comb_auth_maxbits;
- __u16 sadb_comb_encrypt_minbits;
+  __u16 sadb_comb_flags;
+  __u16 sadb_comb_auth_minbits;
+  __u16 sadb_comb_auth_maxbits;
+  __u16 sadb_comb_encrypt_minbits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_comb_encrypt_maxbits;
- __u32 sadb_comb_reserved;
- __u32 sadb_comb_soft_allocations;
- __u32 sadb_comb_hard_allocations;
+  __u16 sadb_comb_encrypt_maxbits;
+  __u32 sadb_comb_reserved;
+  __u32 sadb_comb_soft_allocations;
+  __u32 sadb_comb_hard_allocations;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sadb_comb_soft_bytes;
- __u64 sadb_comb_hard_bytes;
- __u64 sadb_comb_soft_addtime;
- __u64 sadb_comb_hard_addtime;
+  __u64 sadb_comb_soft_bytes;
+  __u64 sadb_comb_hard_bytes;
+  __u64 sadb_comb_soft_addtime;
+  __u64 sadb_comb_hard_addtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sadb_comb_soft_usetime;
- __u64 sadb_comb_hard_usetime;
+  __u64 sadb_comb_soft_usetime;
+  __u64 sadb_comb_hard_usetime;
 } __attribute__((packed));
 struct sadb_supported {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_supported_len;
- __u16 sadb_supported_exttype;
- __u32 sadb_supported_reserved;
+  __u16 sadb_supported_len;
+  __u16 sadb_supported_exttype;
+  __u32 sadb_supported_reserved;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_alg {
- __u8 sadb_alg_id;
- __u8 sadb_alg_ivlen;
- __u16 sadb_alg_minbits;
+  __u8 sadb_alg_id;
+  __u8 sadb_alg_ivlen;
+  __u16 sadb_alg_minbits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_alg_maxbits;
- __u16 sadb_alg_reserved;
+  __u16 sadb_alg_maxbits;
+  __u16 sadb_alg_reserved;
 } __attribute__((packed));
 struct sadb_spirange {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_spirange_len;
- __u16 sadb_spirange_exttype;
- __u32 sadb_spirange_min;
- __u32 sadb_spirange_max;
+  __u16 sadb_spirange_len;
+  __u16 sadb_spirange_exttype;
+  __u32 sadb_spirange_min;
+  __u32 sadb_spirange_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sadb_spirange_reserved;
+  __u32 sadb_spirange_reserved;
 } __attribute__((packed));
 struct sadb_x_kmprivate {
- __u16 sadb_x_kmprivate_len;
+  __u16 sadb_x_kmprivate_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_x_kmprivate_exttype;
- __u32 sadb_x_kmprivate_reserved;
+  __u16 sadb_x_kmprivate_exttype;
+  __u32 sadb_x_kmprivate_reserved;
 } __attribute__((packed));
 struct sadb_x_sa2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_x_sa2_len;
- __u16 sadb_x_sa2_exttype;
- __u8 sadb_x_sa2_mode;
- __u8 sadb_x_sa2_reserved1;
+  __u16 sadb_x_sa2_len;
+  __u16 sadb_x_sa2_exttype;
+  __u8 sadb_x_sa2_mode;
+  __u8 sadb_x_sa2_reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_x_sa2_reserved2;
- __u32 sadb_x_sa2_sequence;
- __u32 sadb_x_sa2_reqid;
+  __u16 sadb_x_sa2_reserved2;
+  __u32 sadb_x_sa2_sequence;
+  __u32 sadb_x_sa2_reqid;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_x_policy {
- __u16 sadb_x_policy_len;
- __u16 sadb_x_policy_exttype;
- __u16 sadb_x_policy_type;
+  __u16 sadb_x_policy_len;
+  __u16 sadb_x_policy_exttype;
+  __u16 sadb_x_policy_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sadb_x_policy_dir;
- __u8 sadb_x_policy_reserved;
- __u32 sadb_x_policy_id;
- __u32 sadb_x_policy_priority;
+  __u8 sadb_x_policy_dir;
+  __u8 sadb_x_policy_reserved;
+  __u32 sadb_x_policy_id;
+  __u32 sadb_x_policy_priority;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct sadb_x_ipsecrequest {
- __u16 sadb_x_ipsecrequest_len;
- __u16 sadb_x_ipsecrequest_proto;
+  __u16 sadb_x_ipsecrequest_len;
+  __u16 sadb_x_ipsecrequest_proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sadb_x_ipsecrequest_mode;
- __u8 sadb_x_ipsecrequest_level;
- __u16 sadb_x_ipsecrequest_reserved1;
- __u32 sadb_x_ipsecrequest_reqid;
+  __u8 sadb_x_ipsecrequest_mode;
+  __u8 sadb_x_ipsecrequest_level;
+  __u16 sadb_x_ipsecrequest_reserved1;
+  __u32 sadb_x_ipsecrequest_reqid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sadb_x_ipsecrequest_reserved2;
+  __u32 sadb_x_ipsecrequest_reserved2;
 } __attribute__((packed));
 struct sadb_x_nat_t_type {
- __u16 sadb_x_nat_t_type_len;
+  __u16 sadb_x_nat_t_type_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_x_nat_t_type_exttype;
- __u8 sadb_x_nat_t_type_type;
- __u8 sadb_x_nat_t_type_reserved[3];
+  __u16 sadb_x_nat_t_type_exttype;
+  __u8 sadb_x_nat_t_type_type;
+  __u8 sadb_x_nat_t_type_reserved[3];
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_x_nat_t_port {
- __u16 sadb_x_nat_t_port_len;
- __u16 sadb_x_nat_t_port_exttype;
- __be16 sadb_x_nat_t_port_port;
+  __u16 sadb_x_nat_t_port_len;
+  __u16 sadb_x_nat_t_port_exttype;
+  __be16 sadb_x_nat_t_port_port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_x_nat_t_port_reserved;
+  __u16 sadb_x_nat_t_port_reserved;
 } __attribute__((packed));
 struct sadb_x_sec_ctx {
- __u16 sadb_x_sec_len;
+  __u16 sadb_x_sec_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sadb_x_sec_exttype;
- __u8 sadb_x_ctx_alg;
- __u8 sadb_x_ctx_doi;
- __u16 sadb_x_ctx_len;
+  __u16 sadb_x_sec_exttype;
+  __u8 sadb_x_ctx_alg;
+  __u8 sadb_x_ctx_doi;
+  __u16 sadb_x_ctx_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct sadb_x_kmaddress {
- __u16 sadb_x_kmaddress_len;
- __u16 sadb_x_kmaddress_exttype;
+  __u16 sadb_x_kmaddress_len;
+  __u16 sadb_x_kmaddress_exttype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sadb_x_kmaddress_reserved;
+  __u32 sadb_x_kmaddress_reserved;
+} __attribute__((packed));
+struct sadb_x_filter {
+  __u16 sadb_x_filter_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 sadb_x_filter_exttype;
+  __u32 sadb_x_filter_saddr[4];
+  __u32 sadb_x_filter_daddr[4];
+  __u16 sadb_x_filter_family;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 sadb_x_filter_splen;
+  __u8 sadb_x_filter_dplen;
 } __attribute__((packed));
 #define SADB_RESERVED 0
-#define SADB_GETSPI 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_GETSPI 1
 #define SADB_UPDATE 2
 #define SADB_ADD 3
 #define SADB_DELETE 4
-#define SADB_GET 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_GET 5
 #define SADB_ACQUIRE 6
 #define SADB_REGISTER 7
 #define SADB_EXPIRE 8
-#define SADB_FLUSH 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_FLUSH 9
 #define SADB_DUMP 10
 #define SADB_X_PROMISC 11
 #define SADB_X_PCHANGE 12
-#define SADB_X_SPDUPDATE 13
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_SPDUPDATE 13
 #define SADB_X_SPDADD 14
 #define SADB_X_SPDDELETE 15
 #define SADB_X_SPDGET 16
-#define SADB_X_SPDACQUIRE 17
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_SPDACQUIRE 17
 #define SADB_X_SPDDUMP 18
 #define SADB_X_SPDFLUSH 19
 #define SADB_X_SPDSETIDX 20
-#define SADB_X_SPDEXPIRE 21
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_SPDEXPIRE 21
 #define SADB_X_SPDDELETE2 22
 #define SADB_X_NAT_T_NEW_MAPPING 23
 #define SADB_X_MIGRATE 24
-#define SADB_MAX 24
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_MAX 24
 #define SADB_SAFLAGS_PFS 1
 #define SADB_SAFLAGS_NOPMTUDISC 0x20000000
 #define SADB_SAFLAGS_DECAP_DSCP 0x40000000
-#define SADB_SAFLAGS_NOECN 0x80000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_SAFLAGS_NOECN 0x80000000
 #define SADB_SASTATE_LARVAL 0
 #define SADB_SASTATE_MATURE 1
 #define SADB_SASTATE_DYING 2
-#define SADB_SASTATE_DEAD 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_SASTATE_DEAD 3
 #define SADB_SASTATE_MAX 3
 #define SADB_SATYPE_UNSPEC 0
 #define SADB_SATYPE_AH 2
-#define SADB_SATYPE_ESP 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_SATYPE_ESP 3
 #define SADB_SATYPE_RSVP 5
 #define SADB_SATYPE_OSPFV2 6
 #define SADB_SATYPE_RIPV2 7
-#define SADB_SATYPE_MIP 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_SATYPE_MIP 8
 #define SADB_X_SATYPE_IPCOMP 9
 #define SADB_SATYPE_MAX 9
 #define SADB_AALG_NONE 0
-#define SADB_AALG_MD5HMAC 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_AALG_MD5HMAC 2
 #define SADB_AALG_SHA1HMAC 3
 #define SADB_X_AALG_SHA2_256HMAC 5
 #define SADB_X_AALG_SHA2_384HMAC 6
-#define SADB_X_AALG_SHA2_512HMAC 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_AALG_SHA2_512HMAC 7
 #define SADB_X_AALG_RIPEMD160HMAC 8
 #define SADB_X_AALG_AES_XCBC_MAC 9
 #define SADB_X_AALG_NULL 251
-#define SADB_AALG_MAX 251
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_AALG_MAX 251
 #define SADB_EALG_NONE 0
 #define SADB_EALG_DESCBC 2
 #define SADB_EALG_3DESCBC 3
-#define SADB_X_EALG_CASTCBC 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_EALG_CASTCBC 6
 #define SADB_X_EALG_BLOWFISHCBC 7
 #define SADB_EALG_NULL 11
 #define SADB_X_EALG_AESCBC 12
-#define SADB_X_EALG_AESCTR 13
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_EALG_AESCTR 13
 #define SADB_X_EALG_AES_CCM_ICV8 14
 #define SADB_X_EALG_AES_CCM_ICV12 15
 #define SADB_X_EALG_AES_CCM_ICV16 16
-#define SADB_X_EALG_AES_GCM_ICV8 18
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_EALG_AES_GCM_ICV8 18
 #define SADB_X_EALG_AES_GCM_ICV12 19
 #define SADB_X_EALG_AES_GCM_ICV16 20
 #define SADB_X_EALG_CAMELLIACBC 22
-#define SADB_X_EALG_NULL_AES_GMAC 23
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_EALG_NULL_AES_GMAC 23
 #define SADB_EALG_MAX 253
 #define SADB_X_EALG_SERPENTCBC 252
 #define SADB_X_EALG_TWOFISHCBC 253
-#define SADB_X_CALG_NONE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_CALG_NONE 0
 #define SADB_X_CALG_OUI 1
 #define SADB_X_CALG_DEFLATE 2
 #define SADB_X_CALG_LZS 3
-#define SADB_X_CALG_LZJH 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_CALG_LZJH 4
 #define SADB_X_CALG_MAX 4
 #define SADB_EXT_RESERVED 0
 #define SADB_EXT_SA 1
-#define SADB_EXT_LIFETIME_CURRENT 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_EXT_LIFETIME_CURRENT 2
 #define SADB_EXT_LIFETIME_HARD 3
 #define SADB_EXT_LIFETIME_SOFT 4
 #define SADB_EXT_ADDRESS_SRC 5
-#define SADB_EXT_ADDRESS_DST 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_EXT_ADDRESS_DST 6
 #define SADB_EXT_ADDRESS_PROXY 7
 #define SADB_EXT_KEY_AUTH 8
 #define SADB_EXT_KEY_ENCRYPT 9
-#define SADB_EXT_IDENTITY_SRC 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_EXT_IDENTITY_SRC 10
 #define SADB_EXT_IDENTITY_DST 11
 #define SADB_EXT_SENSITIVITY 12
 #define SADB_EXT_PROPOSAL 13
-#define SADB_EXT_SUPPORTED_AUTH 14
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_EXT_SUPPORTED_AUTH 14
 #define SADB_EXT_SUPPORTED_ENCRYPT 15
 #define SADB_EXT_SPIRANGE 16
 #define SADB_X_EXT_KMPRIVATE 17
-#define SADB_X_EXT_POLICY 18
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_EXT_POLICY 18
 #define SADB_X_EXT_SA2 19
 #define SADB_X_EXT_NAT_T_TYPE 20
 #define SADB_X_EXT_NAT_T_SPORT 21
-#define SADB_X_EXT_NAT_T_DPORT 22
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_EXT_NAT_T_DPORT 22
 #define SADB_X_EXT_NAT_T_OA 23
 #define SADB_X_EXT_SEC_CTX 24
 #define SADB_X_EXT_KMADDRESS 25
-#define SADB_EXT_MAX 25
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SADB_X_EXT_FILTER 26
+#define SADB_EXT_MAX 26
 #define SADB_IDENTTYPE_RESERVED 0
 #define SADB_IDENTTYPE_PREFIX 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_IDENTTYPE_FQDN 2
 #define SADB_IDENTTYPE_USERFQDN 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_IDENTTYPE_MAX 3
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/pg.h b/libc/kernel/uapi/linux/pg.h
index 82686da..db88442 100644
--- a/libc/kernel/uapi/linux/pg.h
+++ b/libc/kernel/uapi/linux/pg.h
@@ -22,19 +22,19 @@
 #define PG_MAX_DATA 32768
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pg_write_hdr {
- char magic;
- char func;
- int dlen;
+  char magic;
+  char func;
+  int dlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int timeout;
- char packet[12];
+  int timeout;
+  char packet[12];
 };
 struct pg_read_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char magic;
- char scsi;
- int dlen;
- int duration;
+  char magic;
+  char scsi;
+  int dlen;
+  int duration;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char pad[12];
+  char pad[12];
 };
diff --git a/libc/kernel/uapi/linux/phantom.h b/libc/kernel/uapi/linux/phantom.h
index d436ec1..0da1411 100644
--- a/libc/kernel/uapi/linux/phantom.h
+++ b/libc/kernel/uapi/linux/phantom.h
@@ -21,14 +21,14 @@
 #include <linux/types.h>
 struct phm_reg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reg;
- __u32 value;
+  __u32 reg;
+  __u32 value;
 };
 struct phm_regs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count;
- __u32 mask;
- __u32 values[8];
+  __u32 count;
+  __u32 mask;
+  __u32 values[8];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PH_IOC_MAGIC 'p'
diff --git a/libc/kernel/uapi/linux/phonet.h b/libc/kernel/uapi/linux/phonet.h
index 40132bd..2b5e787 100644
--- a/libc/kernel/uapi/linux/phonet.h
+++ b/libc/kernel/uapi/linux/phonet.h
@@ -43,32 +43,32 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCPNDELRESOURCE (SIOCPROTOPRIVATE + 15)
 struct phonethdr {
- __u8 pn_rdev;
- __u8 pn_sdev;
+  __u8 pn_rdev;
+  __u8 pn_sdev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pn_res;
- __be16 pn_length;
- __u8 pn_robj;
- __u8 pn_sobj;
+  __u8 pn_res;
+  __be16 pn_length;
+  __u8 pn_robj;
+  __u8 pn_sobj;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct phonetmsg {
- __u8 pn_trans_id;
- __u8 pn_msg_id;
+  __u8 pn_trans_id;
+  __u8 pn_msg_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct {
- __u8 pn_submsg_id;
- __u8 pn_data[5];
+  union {
+    struct {
+      __u8 pn_submsg_id;
+      __u8 pn_data[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } base;
- struct {
- __u16 pn_e_res_id;
- __u8 pn_e_submsg_id;
+    } base;
+    struct {
+      __u16 pn_e_res_id;
+      __u8 pn_e_submsg_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pn_e_data[3];
- } ext;
- } pn_msg_u;
+      __u8 pn_e_data[3];
+    } ext;
+  } pn_msg_u;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PN_COMMON_MESSAGE 0xF0
@@ -89,12 +89,12 @@
 #define pn_e_orig_msg_id pn_e_data[0]
 #define pn_e_status pn_e_data[1]
 struct sockaddr_pn {
- __kernel_sa_family_t spn_family;
+  __kernel_sa_family_t spn_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 spn_obj;
- __u8 spn_dev;
- __u8 spn_resource;
- __u8 spn_zero[sizeof(struct sockaddr) - sizeof(__kernel_sa_family_t) - 3];
+  __u8 spn_obj;
+  __u8 spn_dev;
+  __u8 spn_resource;
+  __u8 spn_zero[sizeof(struct sockaddr) - sizeof(__kernel_sa_family_t) - 3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 #define PN_DEV_PC 0x10
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 92ea0df..8c87bae 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -23,28 +23,28 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _TC_MAKE32(x) ((x))
 #define _TC_MAKEMASK1(n) (_TC_MAKE32(1) << _TC_MAKE32(n))
-#define _TC_MAKEMASK(v,n) (_TC_MAKE32((_TC_MAKE32(1)<<(v))-1) << _TC_MAKE32(n))
+#define _TC_MAKEMASK(v,n) (_TC_MAKE32((_TC_MAKE32(1) << (v)) - 1) << _TC_MAKE32(n))
 #define _TC_MAKEVALUE(v,n) (_TC_MAKE32(v) << _TC_MAKE32(n))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _TC_GETVALUE(v,n,m) ((_TC_MAKE32(v) & _TC_MAKE32(m)) >> _TC_MAKE32(n))
 #define TC_MUNGED _TC_MAKEMASK1(0)
-#define SET_TC_MUNGED(v) ( TC_MUNGED | (v & ~TC_MUNGED))
-#define CLR_TC_MUNGED(v) ( v & ~TC_MUNGED)
+#define SET_TC_MUNGED(v) (TC_MUNGED | (v & ~TC_MUNGED))
+#define CLR_TC_MUNGED(v) (v & ~TC_MUNGED)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_OK2MUNGE _TC_MAKEMASK1(1)
-#define SET_TC_OK2MUNGE(v) ( TC_OK2MUNGE | (v & ~TC_OK2MUNGE))
-#define CLR_TC_OK2MUNGE(v) ( v & ~TC_OK2MUNGE)
+#define SET_TC_OK2MUNGE(v) (TC_OK2MUNGE | (v & ~TC_OK2MUNGE))
+#define CLR_TC_OK2MUNGE(v) (v & ~TC_OK2MUNGE)
 #define S_TC_VERD _TC_MAKE32(2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define M_TC_VERD _TC_MAKEMASK(4,S_TC_VERD)
-#define G_TC_VERD(x) _TC_GETVALUE(x,S_TC_VERD,M_TC_VERD)
-#define V_TC_VERD(x) _TC_MAKEVALUE(x,S_TC_VERD)
+#define M_TC_VERD _TC_MAKEMASK(4, S_TC_VERD)
+#define G_TC_VERD(x) _TC_GETVALUE(x, S_TC_VERD, M_TC_VERD)
+#define V_TC_VERD(x) _TC_MAKEVALUE(x, S_TC_VERD)
 #define SET_TC_VERD(v,n) ((V_TC_VERD(n)) | (v & ~M_TC_VERD))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_TC_FROM _TC_MAKE32(6)
-#define M_TC_FROM _TC_MAKEMASK(2,S_TC_FROM)
-#define G_TC_FROM(x) _TC_GETVALUE(x,S_TC_FROM,M_TC_FROM)
-#define V_TC_FROM(x) _TC_MAKEVALUE(x,S_TC_FROM)
+#define M_TC_FROM _TC_MAKEMASK(2, S_TC_FROM)
+#define G_TC_FROM(x) _TC_GETVALUE(x, S_TC_FROM, M_TC_FROM)
+#define V_TC_FROM(x) _TC_MAKEVALUE(x, S_TC_FROM)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_TC_FROM(v,n) ((V_TC_FROM(n)) | (v & ~M_TC_FROM))
 #define AT_STACK 0x0
@@ -52,33 +52,33 @@
 #define AT_EGRESS 0x2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_NCLS _TC_MAKEMASK1(8)
-#define SET_TC_NCLS(v) ( TC_NCLS | (v & ~TC_NCLS))
-#define CLR_TC_NCLS(v) ( v & ~TC_NCLS)
+#define SET_TC_NCLS(v) (TC_NCLS | (v & ~TC_NCLS))
+#define CLR_TC_NCLS(v) (v & ~TC_NCLS)
 #define S_TC_RTTL _TC_MAKE32(9)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define M_TC_RTTL _TC_MAKEMASK(3,S_TC_RTTL)
-#define G_TC_RTTL(x) _TC_GETVALUE(x,S_TC_RTTL,M_TC_RTTL)
-#define V_TC_RTTL(x) _TC_MAKEVALUE(x,S_TC_RTTL)
+#define M_TC_RTTL _TC_MAKEMASK(3, S_TC_RTTL)
+#define G_TC_RTTL(x) _TC_GETVALUE(x, S_TC_RTTL, M_TC_RTTL)
+#define V_TC_RTTL(x) _TC_MAKEVALUE(x, S_TC_RTTL)
 #define SET_TC_RTTL(v,n) ((V_TC_RTTL(n)) | (v & ~M_TC_RTTL))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_TC_AT _TC_MAKE32(12)
-#define M_TC_AT _TC_MAKEMASK(2,S_TC_AT)
-#define G_TC_AT(x) _TC_GETVALUE(x,S_TC_AT,M_TC_AT)
-#define V_TC_AT(x) _TC_MAKEVALUE(x,S_TC_AT)
+#define M_TC_AT _TC_MAKEMASK(2, S_TC_AT)
+#define G_TC_AT(x) _TC_GETVALUE(x, S_TC_AT, M_TC_AT)
+#define V_TC_AT(x) _TC_MAKEVALUE(x, S_TC_AT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_TC_AT(v,n) ((V_TC_AT(n)) | (v & ~M_TC_AT))
 enum {
- TCA_ACT_UNSPEC,
- TCA_ACT_KIND,
+  TCA_ACT_UNSPEC,
+  TCA_ACT_KIND,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_ACT_OPTIONS,
- TCA_ACT_INDEX,
- TCA_ACT_STATS,
- __TCA_ACT_MAX
+  TCA_ACT_OPTIONS,
+  TCA_ACT_INDEX,
+  TCA_ACT_STATS,
+  __TCA_ACT_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_ACT_MAX __TCA_ACT_MAX
-#define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
+#define TCA_OLD_COMPAT (TCA_ACT_MAX + 1)
 #define TCA_ACT_MAX_PRIO 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_BIND 1
@@ -91,7 +91,7 @@
 #define MAX_REC_LOOP 4
 #define MAX_RED_LOOP 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TC_ACT_UNSPEC (-1)
+#define TC_ACT_UNSPEC (- 1)
 #define TC_ACT_OK 0
 #define TC_ACT_RECLASSIFY 1
 #define TC_ACT_SHOT 2
@@ -103,120 +103,120 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_ACT_JUMP 0x10000000
 enum {
- TCA_ID_UNSPEC=0,
- TCA_ID_POLICE=1,
+  TCA_ID_UNSPEC = 0,
+  TCA_ID_POLICE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCA_ID_MAX=255
+  __TCA_ID_MAX = 255
 };
 #define TCA_ID_MAX __TCA_ID_MAX
 struct tc_police {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- int action;
+  __u32 index;
+  int action;
 #define TC_POLICE_UNSPEC TC_ACT_UNSPEC
 #define TC_POLICE_OK TC_ACT_OK
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_POLICE_RECLASSIFY TC_ACT_RECLASSIFY
 #define TC_POLICE_SHOT TC_ACT_SHOT
 #define TC_POLICE_PIPE TC_ACT_PIPE
- __u32 limit;
+  __u32 limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 burst;
- __u32 mtu;
- struct tc_ratespec rate;
- struct tc_ratespec peakrate;
+  __u32 burst;
+  __u32 mtu;
+  struct tc_ratespec rate;
+  struct tc_ratespec peakrate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int refcnt;
- int bindcnt;
- __u32 capab;
+  int refcnt;
+  int bindcnt;
+  __u32 capab;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcf_t {
- __u64 install;
- __u64 lastuse;
- __u64 expires;
+  __u64 install;
+  __u64 lastuse;
+  __u64 expires;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_cnt {
- int refcnt;
- int bindcnt;
+  int refcnt;
+  int bindcnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define tc_gen   __u32 index;   __u32 capab;   int action;   int refcnt;   int bindcnt
+#define tc_gen __u32 index; __u32 capab; int action; int refcnt; int bindcnt
 enum {
- TCA_POLICE_UNSPEC,
+  TCA_POLICE_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_POLICE_TBF,
- TCA_POLICE_RATE,
- TCA_POLICE_PEAKRATE,
- TCA_POLICE_AVRATE,
+  TCA_POLICE_TBF,
+  TCA_POLICE_RATE,
+  TCA_POLICE_PEAKRATE,
+  TCA_POLICE_AVRATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_POLICE_RESULT,
- __TCA_POLICE_MAX
+  TCA_POLICE_RESULT,
+  __TCA_POLICE_MAX
 #define TCA_POLICE_RESULT TCA_POLICE_RESULT
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1)
-#define TC_U32_HTID(h) ((h)&0xFFF00000)
-#define TC_U32_USERHTID(h) (TC_U32_HTID(h)>>20)
-#define TC_U32_HASH(h) (((h)>>12)&0xFF)
+#define TC_U32_HTID(h) ((h) & 0xFFF00000)
+#define TC_U32_USERHTID(h) (TC_U32_HTID(h) >> 20)
+#define TC_U32_HASH(h) (((h) >> 12) & 0xFF)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TC_U32_NODE(h) ((h)&0xFFF)
-#define TC_U32_KEY(h) ((h)&0xFFFFF)
+#define TC_U32_NODE(h) ((h) & 0xFFF)
+#define TC_U32_KEY(h) ((h) & 0xFFFFF)
 #define TC_U32_UNSPEC 0
 #define TC_U32_ROOT (0xFFF00000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_U32_UNSPEC,
- TCA_U32_CLASSID,
- TCA_U32_HASH,
+  TCA_U32_UNSPEC,
+  TCA_U32_CLASSID,
+  TCA_U32_HASH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_U32_LINK,
- TCA_U32_DIVISOR,
- TCA_U32_SEL,
- TCA_U32_POLICE,
+  TCA_U32_LINK,
+  TCA_U32_DIVISOR,
+  TCA_U32_SEL,
+  TCA_U32_POLICE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_U32_ACT,
- TCA_U32_INDEV,
- TCA_U32_PCNT,
- TCA_U32_MARK,
+  TCA_U32_ACT,
+  TCA_U32_INDEV,
+  TCA_U32_PCNT,
+  TCA_U32_MARK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCA_U32_MAX
+  __TCA_U32_MAX
 };
 #define TCA_U32_MAX (__TCA_U32_MAX - 1)
 struct tc_u32_key {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 mask;
- __be32 val;
- int off;
- int offmask;
+  __be32 mask;
+  __be32 val;
+  int off;
+  int offmask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_u32_sel {
- unsigned char flags;
- unsigned char offshift;
+  unsigned char flags;
+  unsigned char offshift;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char nkeys;
- __be16 offmask;
- __u16 off;
- short offoff;
+  unsigned char nkeys;
+  __be16 offmask;
+  __u16 off;
+  short offoff;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short hoff;
- __be32 hmask;
- struct tc_u32_key keys[0];
+  short hoff;
+  __be32 hmask;
+  struct tc_u32_key keys[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_u32_mark {
- __u32 val;
- __u32 mask;
- __u32 success;
+  __u32 val;
+  __u32 mask;
+  __u32 success;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_u32_pcnt {
- __u64 rcnt;
- __u64 rhit;
+  __u64 rcnt;
+  __u64 rhit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 kcnts[0];
+  __u64 kcnts[0];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -226,199 +226,199 @@
 #define TC_U32_MAXDEPTH 8
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_RSVP_UNSPEC,
- TCA_RSVP_CLASSID,
- TCA_RSVP_DST,
- TCA_RSVP_SRC,
+  TCA_RSVP_UNSPEC,
+  TCA_RSVP_CLASSID,
+  TCA_RSVP_DST,
+  TCA_RSVP_SRC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_RSVP_PINFO,
- TCA_RSVP_POLICE,
- TCA_RSVP_ACT,
- __TCA_RSVP_MAX
+  TCA_RSVP_PINFO,
+  TCA_RSVP_POLICE,
+  TCA_RSVP_ACT,
+  __TCA_RSVP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1 )
+#define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1)
 struct tc_rsvp_gpi {
- __u32 key;
+  __u32 key;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mask;
- int offset;
+  __u32 mask;
+  int offset;
 };
 struct tc_rsvp_pinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tc_rsvp_gpi dpi;
- struct tc_rsvp_gpi spi;
- __u8 protocol;
- __u8 tunnelid;
+  struct tc_rsvp_gpi dpi;
+  struct tc_rsvp_gpi spi;
+  __u8 protocol;
+  __u8 tunnelid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tunnelhdr;
- __u8 pad;
+  __u8 tunnelhdr;
+  __u8 pad;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_ROUTE4_UNSPEC,
- TCA_ROUTE4_CLASSID,
- TCA_ROUTE4_TO,
- TCA_ROUTE4_FROM,
+  TCA_ROUTE4_UNSPEC,
+  TCA_ROUTE4_CLASSID,
+  TCA_ROUTE4_TO,
+  TCA_ROUTE4_FROM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_ROUTE4_IIF,
- TCA_ROUTE4_POLICE,
- TCA_ROUTE4_ACT,
- __TCA_ROUTE4_MAX
+  TCA_ROUTE4_IIF,
+  TCA_ROUTE4_POLICE,
+  TCA_ROUTE4_ACT,
+  __TCA_ROUTE4_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_ROUTE4_MAX (__TCA_ROUTE4_MAX - 1)
 enum {
- TCA_FW_UNSPEC,
+  TCA_FW_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FW_CLASSID,
- TCA_FW_POLICE,
- TCA_FW_INDEV,
- TCA_FW_ACT,
+  TCA_FW_CLASSID,
+  TCA_FW_POLICE,
+  TCA_FW_INDEV,
+  TCA_FW_ACT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FW_MASK,
- __TCA_FW_MAX
+  TCA_FW_MASK,
+  __TCA_FW_MAX
 };
 #define TCA_FW_MAX (__TCA_FW_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_TCINDEX_UNSPEC,
- TCA_TCINDEX_HASH,
- TCA_TCINDEX_MASK,
+  TCA_TCINDEX_UNSPEC,
+  TCA_TCINDEX_HASH,
+  TCA_TCINDEX_MASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_TCINDEX_SHIFT,
- TCA_TCINDEX_FALL_THROUGH,
- TCA_TCINDEX_CLASSID,
- TCA_TCINDEX_POLICE,
+  TCA_TCINDEX_SHIFT,
+  TCA_TCINDEX_FALL_THROUGH,
+  TCA_TCINDEX_CLASSID,
+  TCA_TCINDEX_POLICE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_TCINDEX_ACT,
- __TCA_TCINDEX_MAX
+  TCA_TCINDEX_ACT,
+  __TCA_TCINDEX_MAX
 };
 #define TCA_TCINDEX_MAX (__TCA_TCINDEX_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- FLOW_KEY_SRC,
- FLOW_KEY_DST,
- FLOW_KEY_PROTO,
+  FLOW_KEY_SRC,
+  FLOW_KEY_DST,
+  FLOW_KEY_PROTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FLOW_KEY_PROTO_SRC,
- FLOW_KEY_PROTO_DST,
- FLOW_KEY_IIF,
- FLOW_KEY_PRIORITY,
+  FLOW_KEY_PROTO_SRC,
+  FLOW_KEY_PROTO_DST,
+  FLOW_KEY_IIF,
+  FLOW_KEY_PRIORITY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FLOW_KEY_MARK,
- FLOW_KEY_NFCT,
- FLOW_KEY_NFCT_SRC,
- FLOW_KEY_NFCT_DST,
+  FLOW_KEY_MARK,
+  FLOW_KEY_NFCT,
+  FLOW_KEY_NFCT_SRC,
+  FLOW_KEY_NFCT_DST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FLOW_KEY_NFCT_PROTO_SRC,
- FLOW_KEY_NFCT_PROTO_DST,
- FLOW_KEY_RTCLASSID,
- FLOW_KEY_SKUID,
+  FLOW_KEY_NFCT_PROTO_SRC,
+  FLOW_KEY_NFCT_PROTO_DST,
+  FLOW_KEY_RTCLASSID,
+  FLOW_KEY_SKUID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FLOW_KEY_SKGID,
- FLOW_KEY_VLAN_TAG,
- FLOW_KEY_RXHASH,
- __FLOW_KEY_MAX,
+  FLOW_KEY_SKGID,
+  FLOW_KEY_VLAN_TAG,
+  FLOW_KEY_RXHASH,
+  __FLOW_KEY_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FLOW_KEY_MAX (__FLOW_KEY_MAX - 1)
 enum {
- FLOW_MODE_MAP,
+  FLOW_MODE_MAP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FLOW_MODE_HASH,
+  FLOW_MODE_HASH,
 };
 enum {
- TCA_FLOW_UNSPEC,
+  TCA_FLOW_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FLOW_KEYS,
- TCA_FLOW_MODE,
- TCA_FLOW_BASECLASS,
- TCA_FLOW_RSHIFT,
+  TCA_FLOW_KEYS,
+  TCA_FLOW_MODE,
+  TCA_FLOW_BASECLASS,
+  TCA_FLOW_RSHIFT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FLOW_ADDEND,
- TCA_FLOW_MASK,
- TCA_FLOW_XOR,
- TCA_FLOW_DIVISOR,
+  TCA_FLOW_ADDEND,
+  TCA_FLOW_MASK,
+  TCA_FLOW_XOR,
+  TCA_FLOW_DIVISOR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FLOW_ACT,
- TCA_FLOW_POLICE,
- TCA_FLOW_EMATCHES,
- TCA_FLOW_PERTURB,
+  TCA_FLOW_ACT,
+  TCA_FLOW_POLICE,
+  TCA_FLOW_EMATCHES,
+  TCA_FLOW_PERTURB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCA_FLOW_MAX
+  __TCA_FLOW_MAX
 };
 #define TCA_FLOW_MAX (__TCA_FLOW_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_BASIC_UNSPEC,
- TCA_BASIC_CLASSID,
- TCA_BASIC_EMATCHES,
- TCA_BASIC_ACT,
+  TCA_BASIC_UNSPEC,
+  TCA_BASIC_CLASSID,
+  TCA_BASIC_EMATCHES,
+  TCA_BASIC_ACT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_BASIC_POLICE,
- __TCA_BASIC_MAX
+  TCA_BASIC_POLICE,
+  __TCA_BASIC_MAX
 };
 #define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_CGROUP_UNSPEC,
- TCA_CGROUP_ACT,
- TCA_CGROUP_POLICE,
+  TCA_CGROUP_UNSPEC,
+  TCA_CGROUP_ACT,
+  TCA_CGROUP_POLICE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_CGROUP_EMATCHES,
- __TCA_CGROUP_MAX,
+  TCA_CGROUP_EMATCHES,
+  __TCA_CGROUP_MAX,
 };
 #define TCA_CGROUP_MAX (__TCA_CGROUP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_BPF_UNSPEC,
- TCA_BPF_ACT,
- TCA_BPF_POLICE,
+  TCA_BPF_UNSPEC,
+  TCA_BPF_ACT,
+  TCA_BPF_POLICE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_BPF_CLASSID,
- TCA_BPF_OPS_LEN,
- TCA_BPF_OPS,
- __TCA_BPF_MAX,
+  TCA_BPF_CLASSID,
+  TCA_BPF_OPS_LEN,
+  TCA_BPF_OPS,
+  __TCA_BPF_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_BPF_MAX (__TCA_BPF_MAX - 1)
 struct tcf_ematch_tree_hdr {
- __u16 nmatches;
+  __u16 nmatches;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 progid;
+  __u16 progid;
 };
 enum {
- TCA_EMATCH_TREE_UNSPEC,
+  TCA_EMATCH_TREE_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_EMATCH_TREE_HDR,
- TCA_EMATCH_TREE_LIST,
- __TCA_EMATCH_TREE_MAX
+  TCA_EMATCH_TREE_HDR,
+  TCA_EMATCH_TREE_LIST,
+  __TCA_EMATCH_TREE_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_EMATCH_TREE_MAX (__TCA_EMATCH_TREE_MAX - 1)
 struct tcf_ematch_hdr {
- __u16 matchid;
- __u16 kind;
+  __u16 matchid;
+  __u16 kind;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 flags;
- __u16 pad;
+  __u16 flags;
+  __u16 pad;
 };
 #define TCF_EM_REL_END 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TCF_EM_REL_AND (1<<0)
-#define TCF_EM_REL_OR (1<<1)
-#define TCF_EM_INVERT (1<<2)
-#define TCF_EM_SIMPLE (1<<3)
+#define TCF_EM_REL_AND (1 << 0)
+#define TCF_EM_REL_OR (1 << 1)
+#define TCF_EM_INVERT (1 << 2)
+#define TCF_EM_SIMPLE (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_EM_REL_MASK 3
 #define TCF_EM_REL_VALID(v) (((v) & TCF_EM_REL_MASK) != TCF_EM_REL_MASK)
 enum {
- TCF_LAYER_LINK,
+  TCF_LAYER_LINK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_LAYER_NETWORK,
- TCF_LAYER_TRANSPORT,
- __TCF_LAYER_MAX
+  TCF_LAYER_NETWORK,
+  TCF_LAYER_TRANSPORT,
+  __TCF_LAYER_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_LAYER_MAX (__TCF_LAYER_MAX - 1)
@@ -436,13 +436,13 @@
 #define TCF_EM_MAX 8
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_EM_PROG_TC
+  TCF_EM_PROG_TC
 };
 enum {
- TCF_EM_OPND_EQ,
+  TCF_EM_OPND_EQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_EM_OPND_GT,
- TCF_EM_OPND_LT
+  TCF_EM_OPND_GT,
+  TCF_EM_OPND_LT
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index 5b64096..518f83f 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -29,87 +29,87 @@
 #define TC_PRIO_CONTROL 7
 #define TC_PRIO_MAX 15
 struct tc_stats {
- __u64 bytes;
+  __u64 bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 packets;
- __u32 drops;
- __u32 overlimits;
- __u32 bps;
+  __u32 packets;
+  __u32 drops;
+  __u32 overlimits;
+  __u32 bps;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pps;
- __u32 qlen;
- __u32 backlog;
+  __u32 pps;
+  __u32 qlen;
+  __u32 backlog;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_estimator {
- signed char interval;
- unsigned char ewma_log;
+  signed char interval;
+  unsigned char ewma_log;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_H_MAJ_MASK (0xFFFF0000U)
 #define TC_H_MIN_MASK (0x0000FFFFU)
-#define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
-#define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
+#define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
+#define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
+#define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
 #define TC_H_UNSPEC (0U)
 #define TC_H_ROOT (0xFFFFFFFFU)
 #define TC_H_INGRESS (0xFFFFFFF1U)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum tc_link_layer {
- TC_LINKLAYER_UNAWARE,
- TC_LINKLAYER_ETHERNET,
- TC_LINKLAYER_ATM,
+  TC_LINKLAYER_UNAWARE,
+  TC_LINKLAYER_ETHERNET,
+  TC_LINKLAYER_ATM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TC_LINKLAYER_MASK 0x0F
 struct tc_ratespec {
- unsigned char cell_log;
+  unsigned char cell_log;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 linklayer;
- unsigned short overhead;
- short cell_align;
- unsigned short mpu;
+  __u8 linklayer;
+  unsigned short overhead;
+  short cell_align;
+  unsigned short mpu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rate;
+  __u32 rate;
 };
 #define TC_RTAB_SIZE 1024
 struct tc_sizespec {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cell_log;
- unsigned char size_log;
- short cell_align;
- int overhead;
+  unsigned char cell_log;
+  unsigned char size_log;
+  short cell_align;
+  int overhead;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int linklayer;
- unsigned int mpu;
- unsigned int mtu;
- unsigned int tsize;
+  unsigned int linklayer;
+  unsigned int mpu;
+  unsigned int mtu;
+  unsigned int tsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCA_STAB_UNSPEC,
- TCA_STAB_BASE,
+  TCA_STAB_UNSPEC,
+  TCA_STAB_BASE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_STAB_DATA,
- __TCA_STAB_MAX
+  TCA_STAB_DATA,
+  __TCA_STAB_MAX
 };
 #define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_fifo_qopt {
- __u32 limit;
+  __u32 limit;
 };
 #define TCQ_PRIO_BANDS 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCQ_MIN_PRIO_BANDS 2
 struct tc_prio_qopt {
- int bands;
- __u8 priomap[TC_PRIO_MAX+1];
+  int bands;
+  __u8 priomap[TC_PRIO_MAX + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_multiq_qopt {
- __u16 bands;
- __u16 max_bands;
+  __u16 bands;
+  __u16 max_bands;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCQ_PLUG_BUFFER 0
@@ -118,93 +118,93 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCQ_PLUG_LIMIT 3
 struct tc_plug_qopt {
- int action;
- __u32 limit;
+  int action;
+  __u32 limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_tbf_qopt {
- struct tc_ratespec rate;
- struct tc_ratespec peakrate;
+  struct tc_ratespec rate;
+  struct tc_ratespec peakrate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 limit;
- __u32 buffer;
- __u32 mtu;
+  __u32 limit;
+  __u32 buffer;
+  __u32 mtu;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_TBF_UNSPEC,
- TCA_TBF_PARMS,
- TCA_TBF_RTAB,
+  TCA_TBF_UNSPEC,
+  TCA_TBF_PARMS,
+  TCA_TBF_RTAB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_TBF_PTAB,
- TCA_TBF_RATE64,
- TCA_TBF_PRATE64,
- TCA_TBF_BURST,
+  TCA_TBF_PTAB,
+  TCA_TBF_RATE64,
+  TCA_TBF_PRATE64,
+  TCA_TBF_BURST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_TBF_PBURST,
- __TCA_TBF_MAX,
+  TCA_TBF_PBURST,
+  __TCA_TBF_MAX,
 };
 #define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_sfq_qopt {
- unsigned quantum;
- int perturb_period;
- __u32 limit;
+  unsigned quantum;
+  int perturb_period;
+  __u32 limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned divisor;
- unsigned flows;
+  unsigned divisor;
+  unsigned flows;
 };
 struct tc_sfqred_stats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 prob_drop;
- __u32 forced_drop;
- __u32 prob_mark;
- __u32 forced_mark;
+  __u32 prob_drop;
+  __u32 forced_drop;
+  __u32 prob_mark;
+  __u32 forced_mark;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 prob_mark_head;
- __u32 forced_mark_head;
+  __u32 prob_mark_head;
+  __u32 forced_mark_head;
 };
 struct tc_sfq_qopt_v1 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tc_sfq_qopt v0;
- unsigned int depth;
- unsigned int headdrop;
- __u32 limit;
+  struct tc_sfq_qopt v0;
+  unsigned int depth;
+  unsigned int headdrop;
+  __u32 limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qth_min;
- __u32 qth_max;
- unsigned char Wlog;
- unsigned char Plog;
+  __u32 qth_min;
+  __u32 qth_max;
+  unsigned char Wlog;
+  unsigned char Plog;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char Scell_log;
- unsigned char flags;
- __u32 max_P;
- struct tc_sfqred_stats stats;
+  unsigned char Scell_log;
+  unsigned char flags;
+  __u32 max_P;
+  struct tc_sfqred_stats stats;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_sfq_xstats {
- __s32 allot;
+  __s32 allot;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_RED_UNSPEC,
- TCA_RED_PARMS,
- TCA_RED_STAB,
+  TCA_RED_UNSPEC,
+  TCA_RED_PARMS,
+  TCA_RED_STAB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_RED_MAX_P,
- __TCA_RED_MAX,
+  TCA_RED_MAX_P,
+  __TCA_RED_MAX,
 };
 #define TCA_RED_MAX (__TCA_RED_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_red_qopt {
- __u32 limit;
- __u32 qth_min;
- __u32 qth_max;
+  __u32 limit;
+  __u32 qth_min;
+  __u32 qth_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char Wlog;
- unsigned char Plog;
- unsigned char Scell_log;
- unsigned char flags;
+  unsigned char Wlog;
+  unsigned char Plog;
+  unsigned char Scell_log;
+  unsigned char flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_RED_ECN 1
 #define TC_RED_HARDDROP 2
@@ -212,84 +212,84 @@
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_red_xstats {
- __u32 early;
- __u32 pdrop;
- __u32 other;
+  __u32 early;
+  __u32 pdrop;
+  __u32 other;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 marked;
+  __u32 marked;
 };
 #define MAX_DPs 16
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_GRED_UNSPEC,
- TCA_GRED_PARMS,
- TCA_GRED_STAB,
- TCA_GRED_DPS,
+  TCA_GRED_UNSPEC,
+  TCA_GRED_PARMS,
+  TCA_GRED_STAB,
+  TCA_GRED_DPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_GRED_MAX_P,
- __TCA_GRED_MAX,
+  TCA_GRED_MAX_P,
+  __TCA_GRED_MAX,
 };
 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_gred_qopt {
- __u32 limit;
- __u32 qth_min;
- __u32 qth_max;
+  __u32 limit;
+  __u32 qth_min;
+  __u32 qth_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 DP;
- __u32 backlog;
- __u32 qave;
- __u32 forced;
+  __u32 DP;
+  __u32 backlog;
+  __u32 qave;
+  __u32 forced;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 early;
- __u32 other;
- __u32 pdrop;
- __u8 Wlog;
+  __u32 early;
+  __u32 other;
+  __u32 pdrop;
+  __u8 Wlog;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 Plog;
- __u8 Scell_log;
- __u8 prio;
- __u32 packets;
+  __u8 Plog;
+  __u8 Scell_log;
+  __u8 prio;
+  __u32 packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bytesin;
+  __u32 bytesin;
 };
 struct tc_gred_sopt {
- __u32 DPs;
+  __u32 DPs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 def_DP;
- __u8 grio;
- __u8 flags;
- __u16 pad1;
+  __u32 def_DP;
+  __u8 grio;
+  __u8 flags;
+  __u16 pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCA_CHOKE_UNSPEC,
- TCA_CHOKE_PARMS,
+  TCA_CHOKE_UNSPEC,
+  TCA_CHOKE_PARMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_CHOKE_STAB,
- TCA_CHOKE_MAX_P,
- __TCA_CHOKE_MAX,
+  TCA_CHOKE_STAB,
+  TCA_CHOKE_MAX_P,
+  __TCA_CHOKE_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
 struct tc_choke_qopt {
- __u32 limit;
- __u32 qth_min;
+  __u32 limit;
+  __u32 qth_min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qth_max;
- unsigned char Wlog;
- unsigned char Plog;
- unsigned char Scell_log;
+  __u32 qth_max;
+  unsigned char Wlog;
+  unsigned char Plog;
+  unsigned char Scell_log;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char flags;
+  unsigned char flags;
 };
 struct tc_choke_xstats {
- __u32 early;
+  __u32 early;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pdrop;
- __u32 other;
- __u32 marked;
- __u32 matched;
+  __u32 pdrop;
+  __u32 other;
+  __u32 marked;
+  __u32 matched;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TC_HTB_NUMPRIO 8
@@ -297,73 +297,73 @@
 #define TC_HTB_PROTOVER 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_htb_opt {
- struct tc_ratespec rate;
- struct tc_ratespec ceil;
- __u32 buffer;
+  struct tc_ratespec rate;
+  struct tc_ratespec ceil;
+  __u32 buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cbuffer;
- __u32 quantum;
- __u32 level;
- __u32 prio;
+  __u32 cbuffer;
+  __u32 quantum;
+  __u32 level;
+  __u32 prio;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_htb_glob {
- __u32 version;
- __u32 rate2quantum;
+  __u32 version;
+  __u32 rate2quantum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 defcls;
- __u32 debug;
- __u32 direct_pkts;
+  __u32 defcls;
+  __u32 debug;
+  __u32 direct_pkts;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_HTB_UNSPEC,
- TCA_HTB_PARMS,
- TCA_HTB_INIT,
+  TCA_HTB_UNSPEC,
+  TCA_HTB_PARMS,
+  TCA_HTB_INIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_HTB_CTAB,
- TCA_HTB_RTAB,
- TCA_HTB_DIRECT_QLEN,
- TCA_HTB_RATE64,
+  TCA_HTB_CTAB,
+  TCA_HTB_RTAB,
+  TCA_HTB_DIRECT_QLEN,
+  TCA_HTB_RATE64,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_HTB_CEIL64,
- __TCA_HTB_MAX,
+  TCA_HTB_CEIL64,
+  __TCA_HTB_MAX,
 };
 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_htb_xstats {
- __u32 lends;
- __u32 borrows;
- __u32 giants;
+  __u32 lends;
+  __u32 borrows;
+  __u32 giants;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tokens;
- __u32 ctokens;
+  __u32 tokens;
+  __u32 ctokens;
 };
 struct tc_hfsc_qopt {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 defcls;
+  __u16 defcls;
 };
 struct tc_service_curve {
- __u32 m1;
+  __u32 m1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 d;
- __u32 m2;
+  __u32 d;
+  __u32 m2;
 };
 struct tc_hfsc_stats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 work;
- __u64 rtwork;
- __u32 period;
- __u32 level;
+  __u64 work;
+  __u64 rtwork;
+  __u32 period;
+  __u32 level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCA_HFSC_UNSPEC,
- TCA_HFSC_RSC,
+  TCA_HFSC_UNSPEC,
+  TCA_HFSC_RSC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_HFSC_FSC,
- TCA_HFSC_USC,
- __TCA_HFSC_MAX,
+  TCA_HFSC_FSC,
+  TCA_HFSC_USC,
+  __TCA_HFSC_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
@@ -372,13 +372,13 @@
 #define TC_CBQ_DEF_EWMA 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_cbq_lssopt {
- unsigned char change;
- unsigned char flags;
+  unsigned char change;
+  unsigned char flags;
 #define TCF_CBQ_LSS_BOUNDED 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_CBQ_LSS_ISOLATED 2
- unsigned char ewma_log;
- unsigned char level;
+  unsigned char ewma_log;
+  unsigned char level;
 #define TCF_CBQ_LSS_FLAGS 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_CBQ_LSS_EWMA 2
@@ -387,24 +387,24 @@
 #define TCF_CBQ_LSS_OFFTIME 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_CBQ_LSS_AVPKT 0x20
- __u32 maxidle;
- __u32 minidle;
- __u32 offtime;
+  __u32 maxidle;
+  __u32 minidle;
+  __u32 offtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 avpkt;
+  __u32 avpkt;
 };
 struct tc_cbq_wrropt {
- unsigned char flags;
+  unsigned char flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char priority;
- unsigned char cpriority;
- unsigned char __reserved;
- __u32 allot;
+  unsigned char priority;
+  unsigned char cpriority;
+  unsigned char __reserved;
+  __u32 allot;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 weight;
+  __u32 weight;
 };
 struct tc_cbq_ovl {
- unsigned char strategy;
+  unsigned char strategy;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_CBQ_OVL_CLASSIC 0
 #define TC_CBQ_OVL_DELAY 1
@@ -412,377 +412,377 @@
 #define TC_CBQ_OVL_DROP 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_CBQ_OVL_RCLASSIC 4
- unsigned char priority2;
- __u16 pad;
- __u32 penalty;
+  unsigned char priority2;
+  __u16 pad;
+  __u32 penalty;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct tc_cbq_police {
- unsigned char police;
- unsigned char __res1;
+  unsigned char police;
+  unsigned char __res1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short __res2;
+  unsigned short __res2;
 };
 struct tc_cbq_fopt {
- __u32 split;
+  __u32 split;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 defmap;
- __u32 defchange;
+  __u32 defmap;
+  __u32 defchange;
 };
 struct tc_cbq_xstats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 borrows;
- __u32 overactions;
- __s32 avgidle;
- __s32 undertime;
+  __u32 borrows;
+  __u32 overactions;
+  __s32 avgidle;
+  __s32 undertime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCA_CBQ_UNSPEC,
- TCA_CBQ_LSSOPT,
+  TCA_CBQ_UNSPEC,
+  TCA_CBQ_LSSOPT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_CBQ_WRROPT,
- TCA_CBQ_FOPT,
- TCA_CBQ_OVL_STRATEGY,
- TCA_CBQ_RATE,
+  TCA_CBQ_WRROPT,
+  TCA_CBQ_FOPT,
+  TCA_CBQ_OVL_STRATEGY,
+  TCA_CBQ_RATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_CBQ_RTAB,
- TCA_CBQ_POLICE,
- __TCA_CBQ_MAX,
+  TCA_CBQ_RTAB,
+  TCA_CBQ_POLICE,
+  __TCA_CBQ_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
 enum {
- TCA_DSMARK_UNSPEC,
- TCA_DSMARK_INDICES,
+  TCA_DSMARK_UNSPEC,
+  TCA_DSMARK_INDICES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_DSMARK_DEFAULT_INDEX,
- TCA_DSMARK_SET_TC_INDEX,
- TCA_DSMARK_MASK,
- TCA_DSMARK_VALUE,
+  TCA_DSMARK_DEFAULT_INDEX,
+  TCA_DSMARK_SET_TC_INDEX,
+  TCA_DSMARK_MASK,
+  TCA_DSMARK_VALUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCA_DSMARK_MAX,
+  __TCA_DSMARK_MAX,
 };
 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_ATM_UNSPEC,
- TCA_ATM_FD,
- TCA_ATM_PTR,
- TCA_ATM_HDR,
+  TCA_ATM_UNSPEC,
+  TCA_ATM_FD,
+  TCA_ATM_PTR,
+  TCA_ATM_HDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_ATM_EXCESS,
- TCA_ATM_ADDR,
- TCA_ATM_STATE,
- __TCA_ATM_MAX,
+  TCA_ATM_EXCESS,
+  TCA_ATM_ADDR,
+  TCA_ATM_STATE,
+  __TCA_ATM_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
 enum {
- TCA_NETEM_UNSPEC,
+  TCA_NETEM_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_NETEM_CORR,
- TCA_NETEM_DELAY_DIST,
- TCA_NETEM_REORDER,
- TCA_NETEM_CORRUPT,
+  TCA_NETEM_CORR,
+  TCA_NETEM_DELAY_DIST,
+  TCA_NETEM_REORDER,
+  TCA_NETEM_CORRUPT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_NETEM_LOSS,
- TCA_NETEM_RATE,
- TCA_NETEM_ECN,
- TCA_NETEM_RATE64,
+  TCA_NETEM_LOSS,
+  TCA_NETEM_RATE,
+  TCA_NETEM_ECN,
+  TCA_NETEM_RATE64,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCA_NETEM_MAX,
+  __TCA_NETEM_MAX,
 };
 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
 struct tc_netem_qopt {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 latency;
- __u32 limit;
- __u32 loss;
- __u32 gap;
+  __u32 latency;
+  __u32 limit;
+  __u32 loss;
+  __u32 gap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 duplicate;
- __u32 jitter;
+  __u32 duplicate;
+  __u32 jitter;
 };
 struct tc_netem_corr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 delay_corr;
- __u32 loss_corr;
- __u32 dup_corr;
+  __u32 delay_corr;
+  __u32 loss_corr;
+  __u32 dup_corr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_netem_reorder {
- __u32 probability;
- __u32 correlation;
+  __u32 probability;
+  __u32 correlation;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_netem_corrupt {
- __u32 probability;
- __u32 correlation;
+  __u32 probability;
+  __u32 correlation;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_netem_rate {
- __u32 rate;
- __s32 packet_overhead;
- __u32 cell_size;
+  __u32 rate;
+  __s32 packet_overhead;
+  __u32 cell_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 cell_overhead;
+  __s32 cell_overhead;
 };
 enum {
- NETEM_LOSS_UNSPEC,
+  NETEM_LOSS_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NETEM_LOSS_GI,
- NETEM_LOSS_GE,
- __NETEM_LOSS_MAX
+  NETEM_LOSS_GI,
+  NETEM_LOSS_GE,
+  __NETEM_LOSS_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
 struct tc_netem_gimodel {
- __u32 p13;
- __u32 p31;
+  __u32 p13;
+  __u32 p31;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 p32;
- __u32 p14;
- __u32 p23;
+  __u32 p32;
+  __u32 p14;
+  __u32 p23;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_netem_gemodel {
- __u32 p;
- __u32 r;
- __u32 h;
+  __u32 p;
+  __u32 r;
+  __u32 h;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 k1;
+  __u32 k1;
 };
 #define NETEM_DIST_SCALE 8192
 #define NETEM_DIST_MAX 16384
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_DRR_UNSPEC,
- TCA_DRR_QUANTUM,
- __TCA_DRR_MAX
+  TCA_DRR_UNSPEC,
+  TCA_DRR_QUANTUM,
+  __TCA_DRR_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
 struct tc_drr_stats {
- __u32 deficit;
+  __u32 deficit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TC_QOPT_BITMASK 15
 #define TC_QOPT_MAX_QUEUE 16
 struct tc_mqprio_qopt {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 num_tc;
- __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
- __u8 hw;
- __u16 count[TC_QOPT_MAX_QUEUE];
+  __u8 num_tc;
+  __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
+  __u8 hw;
+  __u16 count[TC_QOPT_MAX_QUEUE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 offset[TC_QOPT_MAX_QUEUE];
+  __u16 offset[TC_QOPT_MAX_QUEUE];
 };
 enum {
- TCA_SFB_UNSPEC,
+  TCA_SFB_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_SFB_PARMS,
- __TCA_SFB_MAX,
+  TCA_SFB_PARMS,
+  __TCA_SFB_MAX,
 };
 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_sfb_qopt {
- __u32 rehash_interval;
- __u32 warmup_time;
- __u32 max;
+  __u32 rehash_interval;
+  __u32 warmup_time;
+  __u32 max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bin_size;
- __u32 increment;
- __u32 decrement;
- __u32 limit;
+  __u32 bin_size;
+  __u32 increment;
+  __u32 decrement;
+  __u32 limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 penalty_rate;
- __u32 penalty_burst;
+  __u32 penalty_rate;
+  __u32 penalty_burst;
 };
 struct tc_sfb_xstats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 earlydrop;
- __u32 penaltydrop;
- __u32 bucketdrop;
- __u32 queuedrop;
+  __u32 earlydrop;
+  __u32 penaltydrop;
+  __u32 bucketdrop;
+  __u32 queuedrop;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 childdrop;
- __u32 marked;
- __u32 maxqlen;
- __u32 maxprob;
+  __u32 childdrop;
+  __u32 marked;
+  __u32 maxqlen;
+  __u32 maxprob;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 avgprob;
+  __u32 avgprob;
 };
 #define SFB_MAX_PROB 0xFFFF
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_QFQ_UNSPEC,
- TCA_QFQ_WEIGHT,
- TCA_QFQ_LMAX,
- __TCA_QFQ_MAX
+  TCA_QFQ_UNSPEC,
+  TCA_QFQ_WEIGHT,
+  TCA_QFQ_LMAX,
+  __TCA_QFQ_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
 struct tc_qfq_stats {
- __u32 weight;
+  __u32 weight;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lmax;
+  __u32 lmax;
 };
 enum {
- TCA_CODEL_UNSPEC,
+  TCA_CODEL_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_CODEL_TARGET,
- TCA_CODEL_LIMIT,
- TCA_CODEL_INTERVAL,
- TCA_CODEL_ECN,
+  TCA_CODEL_TARGET,
+  TCA_CODEL_LIMIT,
+  TCA_CODEL_INTERVAL,
+  TCA_CODEL_ECN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCA_CODEL_MAX
+  __TCA_CODEL_MAX
 };
 #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
 struct tc_codel_xstats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 maxpacket;
- __u32 count;
- __u32 lastcount;
- __u32 ldelay;
+  __u32 maxpacket;
+  __u32 count;
+  __u32 lastcount;
+  __u32 ldelay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 drop_next;
- __u32 drop_overlimit;
- __u32 ecn_mark;
- __u32 dropping;
+  __s32 drop_next;
+  __u32 drop_overlimit;
+  __u32 ecn_mark;
+  __u32 dropping;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCA_FQ_CODEL_UNSPEC,
- TCA_FQ_CODEL_TARGET,
+  TCA_FQ_CODEL_UNSPEC,
+  TCA_FQ_CODEL_TARGET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FQ_CODEL_LIMIT,
- TCA_FQ_CODEL_INTERVAL,
- TCA_FQ_CODEL_ECN,
- TCA_FQ_CODEL_FLOWS,
+  TCA_FQ_CODEL_LIMIT,
+  TCA_FQ_CODEL_INTERVAL,
+  TCA_FQ_CODEL_ECN,
+  TCA_FQ_CODEL_FLOWS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FQ_CODEL_QUANTUM,
- __TCA_FQ_CODEL_MAX
+  TCA_FQ_CODEL_QUANTUM,
+  __TCA_FQ_CODEL_MAX
 };
 #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_FQ_CODEL_XSTATS_QDISC,
- TCA_FQ_CODEL_XSTATS_CLASS,
+  TCA_FQ_CODEL_XSTATS_QDISC,
+  TCA_FQ_CODEL_XSTATS_CLASS,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_fq_codel_qd_stats {
- __u32 maxpacket;
- __u32 drop_overlimit;
- __u32 ecn_mark;
+  __u32 maxpacket;
+  __u32 drop_overlimit;
+  __u32 ecn_mark;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 new_flow_count;
- __u32 new_flows_len;
- __u32 old_flows_len;
+  __u32 new_flow_count;
+  __u32 new_flows_len;
+  __u32 old_flows_len;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_fq_codel_cl_stats {
- __s32 deficit;
- __u32 ldelay;
- __u32 count;
+  __s32 deficit;
+  __u32 ldelay;
+  __u32 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lastcount;
- __u32 dropping;
- __s32 drop_next;
+  __u32 lastcount;
+  __u32 dropping;
+  __s32 drop_next;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_fq_codel_xstats {
- __u32 type;
- union {
- struct tc_fq_codel_qd_stats qdisc_stats;
+  __u32 type;
+  union {
+    struct tc_fq_codel_qd_stats qdisc_stats;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tc_fq_codel_cl_stats class_stats;
- };
+    struct tc_fq_codel_cl_stats class_stats;
+  };
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FQ_UNSPEC,
- TCA_FQ_PLIMIT,
- TCA_FQ_FLOW_PLIMIT,
- TCA_FQ_QUANTUM,
+  TCA_FQ_UNSPEC,
+  TCA_FQ_PLIMIT,
+  TCA_FQ_FLOW_PLIMIT,
+  TCA_FQ_QUANTUM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FQ_INITIAL_QUANTUM,
- TCA_FQ_RATE_ENABLE,
- TCA_FQ_FLOW_DEFAULT_RATE,
- TCA_FQ_FLOW_MAX_RATE,
+  TCA_FQ_INITIAL_QUANTUM,
+  TCA_FQ_RATE_ENABLE,
+  TCA_FQ_FLOW_DEFAULT_RATE,
+  TCA_FQ_FLOW_MAX_RATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FQ_BUCKETS_LOG,
- TCA_FQ_FLOW_REFILL_DELAY,
- __TCA_FQ_MAX
+  TCA_FQ_BUCKETS_LOG,
+  TCA_FQ_FLOW_REFILL_DELAY,
+  __TCA_FQ_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
 struct tc_fq_qd_stats {
- __u64 gc_flows;
- __u64 highprio_packets;
+  __u64 gc_flows;
+  __u64 highprio_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 tcp_retrans;
- __u64 throttled;
- __u64 flows_plimit;
- __u64 pkts_too_long;
+  __u64 tcp_retrans;
+  __u64 throttled;
+  __u64 flows_plimit;
+  __u64 pkts_too_long;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 allocation_errors;
- __s64 time_next_delayed_flow;
- __u32 flows;
- __u32 inactive_flows;
+  __u64 allocation_errors;
+  __s64 time_next_delayed_flow;
+  __u32 flows;
+  __u32 inactive_flows;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 throttled_flows;
- __u32 pad;
+  __u32 throttled_flows;
+  __u32 pad;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_HHF_UNSPEC,
- TCA_HHF_BACKLOG_LIMIT,
- TCA_HHF_QUANTUM,
- TCA_HHF_HH_FLOWS_LIMIT,
+  TCA_HHF_UNSPEC,
+  TCA_HHF_BACKLOG_LIMIT,
+  TCA_HHF_QUANTUM,
+  TCA_HHF_HH_FLOWS_LIMIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_HHF_RESET_TIMEOUT,
- TCA_HHF_ADMIT_BYTES,
- TCA_HHF_EVICT_TIMEOUT,
- TCA_HHF_NON_HH_WEIGHT,
+  TCA_HHF_RESET_TIMEOUT,
+  TCA_HHF_ADMIT_BYTES,
+  TCA_HHF_EVICT_TIMEOUT,
+  TCA_HHF_NON_HH_WEIGHT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCA_HHF_MAX
+  __TCA_HHF_MAX
 };
 #define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
 struct tc_hhf_xstats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 drop_overlimit;
- __u32 hh_overlimit;
- __u32 hh_tot_count;
- __u32 hh_cur_count;
+  __u32 drop_overlimit;
+  __u32 hh_overlimit;
+  __u32 hh_tot_count;
+  __u32 hh_cur_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCA_PIE_UNSPEC,
- TCA_PIE_TARGET,
+  TCA_PIE_UNSPEC,
+  TCA_PIE_TARGET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_PIE_LIMIT,
- TCA_PIE_TUPDATE,
- TCA_PIE_ALPHA,
- TCA_PIE_BETA,
+  TCA_PIE_LIMIT,
+  TCA_PIE_TUPDATE,
+  TCA_PIE_ALPHA,
+  TCA_PIE_BETA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_PIE_ECN,
- TCA_PIE_BYTEMODE,
- __TCA_PIE_MAX
+  TCA_PIE_ECN,
+  TCA_PIE_BYTEMODE,
+  __TCA_PIE_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
 struct tc_pie_xstats {
- __u32 prob;
- __u32 delay;
+  __u32 prob;
+  __u32 delay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 avg_dq_rate;
- __u32 packets_in;
- __u32 dropped;
- __u32 overlimit;
+  __u32 avg_dq_rate;
+  __u32 packets_in;
+  __u32 dropped;
+  __u32 overlimit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 maxq;
- __u32 ecn_mark;
+  __u32 maxq;
+  __u32 ecn_mark;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/pktcdvd.h b/libc/kernel/uapi/linux/pktcdvd.h
index c80e8eb..5d7a246 100644
--- a/libc/kernel/uapi/linux/pktcdvd.h
+++ b/libc/kernel/uapi/linux/pktcdvd.h
@@ -58,13 +58,13 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PKT_CTRL_CMD_STATUS 2
 struct pkt_ctrl_command {
- __u32 command;
- __u32 dev_index;
+  __u32 command;
+  __u32 dev_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dev;
- __u32 pkt_dev;
- __u32 num_devices;
- __u32 padding;
+  __u32 dev;
+  __u32 pkt_dev;
+  __u32 num_devices;
+  __u32 padding;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define PACKET_IOCTL_MAGIC ('X')
diff --git a/libc/kernel/uapi/linux/pmu.h b/libc/kernel/uapi/linux/pmu.h
index 372bd19..5a3d8c2 100644
--- a/libc/kernel/uapi/linux/pmu.h
+++ b/libc/kernel/uapi/linux/pmu.h
@@ -88,33 +88,33 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMU_I2C_STATUS_BUSY 0xfe
 enum {
- PMU_UNKNOWN,
- PMU_OHARE_BASED,
+  PMU_UNKNOWN,
+  PMU_OHARE_BASED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PMU_HEATHROW_BASED,
- PMU_PADDINGTON_BASED,
- PMU_KEYLARGO_BASED,
- PMU_68K_V1,
+  PMU_HEATHROW_BASED,
+  PMU_PADDINGTON_BASED,
+  PMU_KEYLARGO_BASED,
+  PMU_68K_V1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PMU_68K_V2,
+  PMU_68K_V2,
 };
 enum {
- PMU_PWR_GET_POWERUP_EVENTS = 0x00,
+  PMU_PWR_GET_POWERUP_EVENTS = 0x00,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PMU_PWR_SET_POWERUP_EVENTS = 0x01,
- PMU_PWR_CLR_POWERUP_EVENTS = 0x02,
- PMU_PWR_GET_WAKEUP_EVENTS = 0x03,
- PMU_PWR_SET_WAKEUP_EVENTS = 0x04,
+  PMU_PWR_SET_POWERUP_EVENTS = 0x01,
+  PMU_PWR_CLR_POWERUP_EVENTS = 0x02,
+  PMU_PWR_GET_WAKEUP_EVENTS = 0x03,
+  PMU_PWR_SET_WAKEUP_EVENTS = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PMU_PWR_CLR_WAKEUP_EVENTS = 0x05,
+  PMU_PWR_CLR_WAKEUP_EVENTS = 0x05,
 };
 enum {
- PMU_PWR_WAKEUP_KEY = 0x01,
+  PMU_PWR_WAKEUP_KEY = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PMU_PWR_WAKEUP_AC_INSERT = 0x02,
- PMU_PWR_WAKEUP_AC_CHANGE = 0x04,
- PMU_PWR_WAKEUP_LID_OPEN = 0x08,
- PMU_PWR_WAKEUP_RING = 0x10,
+  PMU_PWR_WAKEUP_AC_INSERT = 0x02,
+  PMU_PWR_WAKEUP_AC_CHANGE = 0x04,
+  PMU_PWR_WAKEUP_LID_OPEN = 0x08,
+  PMU_PWR_WAKEUP_RING = 0x10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #include <linux/ioctl.h>
diff --git a/libc/kernel/uapi/linux/posix_types.h b/libc/kernel/uapi/linux/posix_types.h
index c197519..b0e1c5f 100644
--- a/libc/kernel/uapi/linux/posix_types.h
+++ b/libc/kernel/uapi/linux/posix_types.h
@@ -23,10 +23,10 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __FD_SETSIZE 1024
 typedef struct {
- unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))];
+  unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))];
 } __kernel_fd_set;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef void (*__kernel_sighandler_t)(int);
+typedef void(* __kernel_sighandler_t) (int);
 typedef int __kernel_key_t;
 typedef int __kernel_mqd_t;
 #include <asm/posix_types.h>
diff --git a/libc/kernel/uapi/linux/ppdev.h b/libc/kernel/uapi/linux/ppdev.h
index 2fa785c..5d03f43 100644
--- a/libc/kernel/uapi/linux/ppdev.h
+++ b/libc/kernel/uapi/linux/ppdev.h
@@ -24,9 +24,9 @@
 #define PPRCONTROL _IOR(PP_IOCTL, 0x83, unsigned char)
 #define PPWCONTROL _IOW(PP_IOCTL, 0x84, unsigned char)
 struct ppdev_frob_struct {
- unsigned char mask;
+  unsigned char mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char val;
+  unsigned char val;
 };
 #define PPFCONTROL _IOW(PP_IOCTL, 0x8e, struct ppdev_frob_struct)
 #define PPRDATA _IOR(PP_IOCTL, 0x85, unsigned char)
@@ -57,8 +57,8 @@
 #define PPGETFLAGS _IOR(PP_IOCTL, 0x9a, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPSETFLAGS _IOW(PP_IOCTL, 0x9b, int)
-#define PP_FASTWRITE (1<<2)
-#define PP_FASTREAD (1<<3)
-#define PP_W91284PIC (1<<4)
+#define PP_FASTWRITE (1 << 2)
+#define PP_FASTREAD (1 << 3)
+#define PP_W91284PIC (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PP_FLAGMASK (PP_FASTWRITE | PP_FASTREAD | PP_W91284PIC)
diff --git a/libc/kernel/uapi/linux/ppp-comp.h b/libc/kernel/uapi/linux/ppp-comp.h
index 866b0ff..d953330 100644
--- a/libc/kernel/uapi/linux/ppp-comp.h
+++ b/libc/kernel/uapi/linux/ppp-comp.h
@@ -42,7 +42,7 @@
 #define BSD_VERSION(x) ((x) >> 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BSD_CURRENT_VERSION 1
-#define BSD_MAKE_OPT(v, n) (((v) << 5) | (n))
+#define BSD_MAKE_OPT(v,n) (((v) << 5) | (n))
 #define BSD_MIN_BITS 9
 #define BSD_MAX_BITS 15
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ppp-ioctl.h b/libc/kernel/uapi/linux/ppp-ioctl.h
index fa2423c..3917036 100644
--- a/libc/kernel/uapi/linux/ppp-ioctl.h
+++ b/libc/kernel/uapi/linux/ppp-ioctl.h
@@ -61,30 +61,30 @@
 #define SC_DC_ERROR 0x00400000
 struct npioctl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int protocol;
- enum NPmode mode;
+  int protocol;
+  enum NPmode mode;
 };
 struct ppp_option_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 __user *ptr;
- __u32 length;
- int transmit;
+  __u8 __user * ptr;
+  __u32 length;
+  int transmit;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pppol2tp_ioc_stats {
- __u16 tunnel_id;
- __u16 session_id;
- __u32 using_ipsec:1;
+  __u16 tunnel_id;
+  __u16 session_id;
+  __u32 using_ipsec : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __aligned_u64 tx_packets;
- __aligned_u64 tx_bytes;
- __aligned_u64 tx_errors;
- __aligned_u64 rx_packets;
+  __aligned_u64 tx_packets;
+  __aligned_u64 tx_bytes;
+  __aligned_u64 tx_errors;
+  __aligned_u64 rx_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __aligned_u64 rx_bytes;
- __aligned_u64 rx_seq_discards;
- __aligned_u64 rx_oos_packets;
- __aligned_u64 rx_errors;
+  __aligned_u64 rx_bytes;
+  __aligned_u64 rx_seq_discards;
+  __aligned_u64 rx_oos_packets;
+  __aligned_u64 rx_errors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define PPPIOCGFLAGS _IOR('t', 90, int)
diff --git a/libc/kernel/uapi/linux/ppp_defs.h b/libc/kernel/uapi/linux/ppp_defs.h
index 6654058..ff1afbb 100644
--- a/libc/kernel/uapi/linux/ppp_defs.h
+++ b/libc/kernel/uapi/linux/ppp_defs.h
@@ -23,10 +23,10 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_FCSLEN 2
 #define PPP_MRU 1500
-#define PPP_ADDRESS(p) (((__u8 *)(p))[0])
-#define PPP_CONTROL(p) (((__u8 *)(p))[1])
+#define PPP_ADDRESS(p) (((__u8 *) (p))[0])
+#define PPP_CONTROL(p) (((__u8 *) (p))[1])
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PPP_PROTOCOL(p) ((((__u8 *)(p))[2] << 8) + ((__u8 *)(p))[3])
+#define PPP_PROTOCOL(p) ((((__u8 *) (p))[2] << 8) + ((__u8 *) (p))[3])
 #define PPP_ALLSTATIONS 0xff
 #define PPP_UI 0x03
 #define PPP_FLAG 0x7e
@@ -67,68 +67,68 @@
 typedef __u32 ext_accm[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum NPmode {
- NPMODE_PASS,
- NPMODE_DROP,
- NPMODE_ERROR,
+  NPMODE_PASS,
+  NPMODE_DROP,
+  NPMODE_ERROR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NPMODE_QUEUE
+  NPMODE_QUEUE
 };
 struct pppstat {
- __u32 ppp_discards;
+  __u32 ppp_discards;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ppp_ibytes;
- __u32 ppp_ioctects;
- __u32 ppp_ipackets;
- __u32 ppp_ierrors;
+  __u32 ppp_ibytes;
+  __u32 ppp_ioctects;
+  __u32 ppp_ipackets;
+  __u32 ppp_ierrors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ppp_ilqrs;
- __u32 ppp_obytes;
- __u32 ppp_ooctects;
- __u32 ppp_opackets;
+  __u32 ppp_ilqrs;
+  __u32 ppp_obytes;
+  __u32 ppp_ooctects;
+  __u32 ppp_opackets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ppp_oerrors;
- __u32 ppp_olqrs;
+  __u32 ppp_oerrors;
+  __u32 ppp_olqrs;
 };
 struct vjstat {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vjs_packets;
- __u32 vjs_compressed;
- __u32 vjs_searches;
- __u32 vjs_misses;
+  __u32 vjs_packets;
+  __u32 vjs_compressed;
+  __u32 vjs_searches;
+  __u32 vjs_misses;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vjs_uncompressedin;
- __u32 vjs_compressedin;
- __u32 vjs_errorin;
- __u32 vjs_tossed;
+  __u32 vjs_uncompressedin;
+  __u32 vjs_compressedin;
+  __u32 vjs_errorin;
+  __u32 vjs_tossed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct compstat {
- __u32 unc_bytes;
- __u32 unc_packets;
+  __u32 unc_bytes;
+  __u32 unc_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 comp_bytes;
- __u32 comp_packets;
- __u32 inc_bytes;
- __u32 inc_packets;
+  __u32 comp_bytes;
+  __u32 comp_packets;
+  __u32 inc_bytes;
+  __u32 inc_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 in_count;
- __u32 bytes_out;
- double ratio;
+  __u32 in_count;
+  __u32 bytes_out;
+  double ratio;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ppp_stats {
- struct pppstat p;
- struct vjstat vj;
+  struct pppstat p;
+  struct vjstat vj;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ppp_comp_stats {
- struct compstat c;
- struct compstat d;
+  struct compstat c;
+  struct compstat d;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ppp_idle {
- __kernel_time_t xmit_idle;
- __kernel_time_t recv_idle;
+  __kernel_time_t xmit_idle;
+  __kernel_time_t recv_idle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/pps.h b/libc/kernel/uapi/linux/pps.h
index cb8a418..69898a3 100644
--- a/libc/kernel/uapi/linux/pps.h
+++ b/libc/kernel/uapi/linux/pps.h
@@ -27,27 +27,27 @@
 #define PPS_MAX_NAME_LEN 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pps_ktime {
- __s64 sec;
- __s32 nsec;
- __u32 flags;
+  __s64 sec;
+  __s32 nsec;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define PPS_TIME_INVALID (1<<0)
+#define PPS_TIME_INVALID (1 << 0)
 struct pps_kinfo {
- __u32 assert_sequence;
+  __u32 assert_sequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 clear_sequence;
- struct pps_ktime assert_tu;
- struct pps_ktime clear_tu;
- int current_mode;
+  __u32 clear_sequence;
+  struct pps_ktime assert_tu;
+  struct pps_ktime clear_tu;
+  int current_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct pps_kparams {
- int api_version;
- int mode;
+  int api_version;
+  int mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct pps_ktime assert_off_tu;
- struct pps_ktime clear_off_tu;
+  struct pps_ktime assert_off_tu;
+  struct pps_ktime clear_off_tu;
 };
 #define PPS_CAPTUREASSERT 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -68,15 +68,15 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPS_KC_HARDPPS_FLL 2
 struct pps_fdata {
- struct pps_kinfo info;
- struct pps_ktime timeout;
+  struct pps_kinfo info;
+  struct pps_ktime timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct pps_bind_args {
- int tsformat;
- int edge;
+  int tsformat;
+  int edge;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int consumer;
+  int consumer;
 };
 #include <linux/ioctl.h>
 #define PPS_GETPARAMS _IOR('p', 0xa1, struct pps_kparams *)
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index a127b5a..07898cc 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -18,103 +18,129 @@
  ****************************************************************************/
 #ifndef _LINUX_PRCTL_H
 #define _LINUX_PRCTL_H
+#include <linux/types.h>
 #define PR_SET_PDEATHSIG 1
-#define PR_GET_PDEATHSIG 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_GET_PDEATHSIG 2
 #define PR_GET_DUMPABLE 3
 #define PR_SET_DUMPABLE 4
 #define PR_GET_UNALIGN 5
-#define PR_SET_UNALIGN 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_UNALIGN 6
 #define PR_UNALIGN_NOPRINT 1
 #define PR_UNALIGN_SIGBUS 2
 #define PR_GET_KEEPCAPS 7
-#define PR_SET_KEEPCAPS 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_KEEPCAPS 8
 #define PR_GET_FPEMU 9
 #define PR_SET_FPEMU 10
 #define PR_FPEMU_NOPRINT 1
-#define PR_FPEMU_SIGFPE 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_FPEMU_SIGFPE 2
 #define PR_GET_FPEXC 11
 #define PR_SET_FPEXC 12
 #define PR_FP_EXC_SW_ENABLE 0x80
-#define PR_FP_EXC_DIV 0x010000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_FP_EXC_DIV 0x010000
 #define PR_FP_EXC_OVF 0x020000
 #define PR_FP_EXC_UND 0x040000
 #define PR_FP_EXC_RES 0x080000
-#define PR_FP_EXC_INV 0x100000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_FP_EXC_INV 0x100000
 #define PR_FP_EXC_DISABLED 0
 #define PR_FP_EXC_NONRECOV 1
 #define PR_FP_EXC_ASYNC 2
-#define PR_FP_EXC_PRECISE 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_FP_EXC_PRECISE 3
 #define PR_GET_TIMING 13
 #define PR_SET_TIMING 14
 #define PR_TIMING_STATISTICAL 0
-#define PR_TIMING_TIMESTAMP 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_TIMING_TIMESTAMP 1
 #define PR_SET_NAME 15
 #define PR_GET_NAME 16
 #define PR_GET_ENDIAN 19
-#define PR_SET_ENDIAN 20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_ENDIAN 20
 #define PR_ENDIAN_BIG 0
 #define PR_ENDIAN_LITTLE 1
 #define PR_ENDIAN_PPC_LITTLE 2
-#define PR_GET_SECCOMP 21
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_GET_SECCOMP 21
 #define PR_SET_SECCOMP 22
 #define PR_CAPBSET_READ 23
 #define PR_CAPBSET_DROP 24
-#define PR_GET_TSC 25
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_GET_TSC 25
 #define PR_SET_TSC 26
 #define PR_TSC_ENABLE 1
 #define PR_TSC_SIGSEGV 2
-#define PR_GET_SECUREBITS 27
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_GET_SECUREBITS 27
 #define PR_SET_SECUREBITS 28
 #define PR_SET_TIMERSLACK 29
 #define PR_GET_TIMERSLACK 30
-#define PR_TASK_PERF_EVENTS_DISABLE 31
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_TASK_PERF_EVENTS_DISABLE 31
 #define PR_TASK_PERF_EVENTS_ENABLE 32
 #define PR_MCE_KILL 33
 #define PR_MCE_KILL_CLEAR 0
-#define PR_MCE_KILL_SET 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_MCE_KILL_SET 1
 #define PR_MCE_KILL_LATE 0
 #define PR_MCE_KILL_EARLY 1
 #define PR_MCE_KILL_DEFAULT 2
-#define PR_MCE_KILL_GET 34
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_MCE_KILL_GET 34
 #define PR_SET_MM 35
 #define PR_SET_MM_START_CODE 1
 #define PR_SET_MM_END_CODE 2
-#define PR_SET_MM_START_DATA 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_MM_START_DATA 3
 #define PR_SET_MM_END_DATA 4
 #define PR_SET_MM_START_STACK 5
 #define PR_SET_MM_START_BRK 6
-#define PR_SET_MM_BRK 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_MM_BRK 7
 #define PR_SET_MM_ARG_START 8
 #define PR_SET_MM_ARG_END 9
 #define PR_SET_MM_ENV_START 10
-#define PR_SET_MM_ENV_END 11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_MM_ENV_END 11
 #define PR_SET_MM_AUXV 12
 #define PR_SET_MM_EXE_FILE 13
-#define PR_SET_PTRACER 0x59616d61
-#define PR_SET_PTRACER_ANY ((unsigned long)-1)
+#define PR_SET_MM_MAP 14
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_MM_MAP_SIZE 15
+struct prctl_mm_map {
+  __u64 start_code;
+  __u64 end_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 start_data;
+  __u64 end_data;
+  __u64 start_brk;
+  __u64 brk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 start_stack;
+  __u64 arg_start;
+  __u64 arg_end;
+  __u64 env_start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 env_end;
+  __u64 * auxv;
+  __u32 auxv_size;
+  __u32 exe_fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define PR_SET_PTRACER 0x59616d61
+#define PR_SET_PTRACER_ANY ((unsigned long) - 1)
 #define PR_SET_CHILD_SUBREAPER 36
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_GET_CHILD_SUBREAPER 37
 #define PR_SET_NO_NEW_PRIVS 38
 #define PR_GET_NO_NEW_PRIVS 39
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_GET_TID_ADDRESS 40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PR_SET_THP_DISABLE 41
+#define PR_GET_THP_DISABLE 42
 #endif
diff --git a/libc/kernel/uapi/linux/psci.h b/libc/kernel/uapi/linux/psci.h
new file mode 100644
index 0000000..b523abe
--- /dev/null
+++ b/libc/kernel/uapi/linux/psci.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PSCI_H
+#define _UAPI_LINUX_PSCI_H
+#define PSCI_0_2_FN_BASE 0x84000000
+#define PSCI_0_2_FN(n) (PSCI_0_2_FN_BASE + (n))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_64BIT 0x40000000
+#define PSCI_0_2_FN64_BASE (PSCI_0_2_FN_BASE + PSCI_0_2_64BIT)
+#define PSCI_0_2_FN64(n) (PSCI_0_2_FN64_BASE + (n))
+#define PSCI_0_2_FN_PSCI_VERSION PSCI_0_2_FN(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_FN_CPU_SUSPEND PSCI_0_2_FN(1)
+#define PSCI_0_2_FN_CPU_OFF PSCI_0_2_FN(2)
+#define PSCI_0_2_FN_CPU_ON PSCI_0_2_FN(3)
+#define PSCI_0_2_FN_AFFINITY_INFO PSCI_0_2_FN(4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_FN_MIGRATE PSCI_0_2_FN(5)
+#define PSCI_0_2_FN_MIGRATE_INFO_TYPE PSCI_0_2_FN(6)
+#define PSCI_0_2_FN_MIGRATE_INFO_UP_CPU PSCI_0_2_FN(7)
+#define PSCI_0_2_FN_SYSTEM_OFF PSCI_0_2_FN(8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_FN_SYSTEM_RESET PSCI_0_2_FN(9)
+#define PSCI_0_2_FN64_CPU_SUSPEND PSCI_0_2_FN64(1)
+#define PSCI_0_2_FN64_CPU_ON PSCI_0_2_FN64(3)
+#define PSCI_0_2_FN64_AFFINITY_INFO PSCI_0_2_FN64(4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
+#define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
+#define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
+#define PSCI_0_2_POWER_STATE_ID_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
+#define PSCI_0_2_POWER_STATE_TYPE_MASK (0x1 << PSCI_0_2_POWER_STATE_TYPE_SHIFT)
+#define PSCI_0_2_POWER_STATE_AFFL_SHIFT 24
+#define PSCI_0_2_POWER_STATE_AFFL_MASK (0x3 << PSCI_0_2_POWER_STATE_AFFL_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_AFFINITY_LEVEL_ON 0
+#define PSCI_0_2_AFFINITY_LEVEL_OFF 1
+#define PSCI_0_2_AFFINITY_LEVEL_ON_PENDING 2
+#define PSCI_0_2_TOS_UP_MIGRATE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_0_2_TOS_UP_NO_MIGRATE 1
+#define PSCI_0_2_TOS_MP 2
+#define PSCI_VERSION_MAJOR_SHIFT 16
+#define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
+#define PSCI_VERSION_MAJOR(ver) (((ver) & PSCI_VERSION_MAJOR_MASK) >> PSCI_VERSION_MAJOR_SHIFT)
+#define PSCI_VERSION_MINOR(ver) ((ver) & PSCI_VERSION_MINOR_MASK)
+#define PSCI_RET_SUCCESS 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_RET_NOT_SUPPORTED - 1
+#define PSCI_RET_INVALID_PARAMS - 2
+#define PSCI_RET_DENIED - 3
+#define PSCI_RET_ALREADY_ON - 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSCI_RET_ON_PENDING - 5
+#define PSCI_RET_INTERNAL_FAILURE - 6
+#define PSCI_RET_NOT_PRESENT - 7
+#define PSCI_RET_DISABLED - 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/ptp_clock.h b/libc/kernel/uapi/linux/ptp_clock.h
index 01b15d0..bb9d6d9 100644
--- a/libc/kernel/uapi/linux/ptp_clock.h
+++ b/libc/kernel/uapi/linux/ptp_clock.h
@@ -21,61 +21,81 @@
 #include <linux/ioctl.h>
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PTP_ENABLE_FEATURE (1<<0)
-#define PTP_RISING_EDGE (1<<1)
-#define PTP_FALLING_EDGE (1<<2)
+#define PTP_ENABLE_FEATURE (1 << 0)
+#define PTP_RISING_EDGE (1 << 1)
+#define PTP_FALLING_EDGE (1 << 2)
 struct ptp_clock_time {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s64 sec;
- __u32 nsec;
- __u32 reserved;
+  __s64 sec;
+  __u32 nsec;
+  __u32 reserved;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ptp_clock_caps {
- int max_adj;
- int n_alarm;
- int n_ext_ts;
+  int max_adj;
+  int n_alarm;
+  int n_ext_ts;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int n_per_out;
- int pps;
- int rsv[15];
+  int n_per_out;
+  int pps;
+  int n_pins;
+  int rsv[14];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ptp_extts_request {
- unsigned int index;
- unsigned int flags;
- unsigned int rsv[2];
+  unsigned int index;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int rsv[2];
 };
 struct ptp_perout_request {
- struct ptp_clock_time start;
- struct ptp_clock_time period;
+  struct ptp_clock_time start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int index;
- unsigned int flags;
- unsigned int rsv[4];
+  struct ptp_clock_time period;
+  unsigned int index;
+  unsigned int flags;
+  unsigned int rsv[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTP_MAX_SAMPLES 25
 struct ptp_sys_offset {
- unsigned int n_samples;
- unsigned int rsv[3];
+  unsigned int n_samples;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ptp_clock_time ts[2 * PTP_MAX_SAMPLES + 1];
+  unsigned int rsv[3];
+  struct ptp_clock_time ts[2 * PTP_MAX_SAMPLES + 1];
 };
+enum ptp_pin_function {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  PTP_PF_NONE,
+  PTP_PF_EXTTS,
+  PTP_PF_PEROUT,
+  PTP_PF_PHYSYNC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct ptp_pin_desc {
+  char name[64];
+  unsigned int index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int func;
+  unsigned int chan;
+  unsigned int rsv[5];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTP_CLK_MAGIC '='
 #define PTP_CLOCK_GETCAPS _IOR(PTP_CLK_MAGIC, 1, struct ptp_clock_caps)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTP_EXTTS_REQUEST _IOW(PTP_CLK_MAGIC, 2, struct ptp_extts_request)
 #define PTP_PEROUT_REQUEST _IOW(PTP_CLK_MAGIC, 3, struct ptp_perout_request)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTP_ENABLE_PPS _IOW(PTP_CLK_MAGIC, 4, int)
 #define PTP_SYS_OFFSET _IOW(PTP_CLK_MAGIC, 5, struct ptp_sys_offset)
+#define PTP_PIN_GETFUNC _IOWR(PTP_CLK_MAGIC, 6, struct ptp_pin_desc)
+#define PTP_PIN_SETFUNC _IOW(PTP_CLK_MAGIC, 7, struct ptp_pin_desc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ptp_extts_event {
- struct ptp_clock_time t;
- unsigned int index;
- unsigned int flags;
+  struct ptp_clock_time t;
+  unsigned int index;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int rsv[2];
+  unsigned int rsv[2];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/ptrace.h b/libc/kernel/uapi/linux/ptrace.h
index 6f71b6d..a3244e9 100644
--- a/libc/kernel/uapi/linux/ptrace.h
+++ b/libc/kernel/uapi/linux/ptrace.h
@@ -49,10 +49,10 @@
 #define PTRACE_LISTEN 0x4208
 #define PTRACE_PEEKSIGINFO 0x4209
 struct ptrace_peeksiginfo_args {
- __u64 off;
+  __u64 off;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __s32 nr;
+  __u32 flags;
+  __s32 nr;
 };
 #define PTRACE_GETSIGMASK 0x420a
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/qnx4_fs.h b/libc/kernel/uapi/linux/qnx4_fs.h
index ae5e3ee..b0e517d 100644
--- a/libc/kernel/uapi/linux/qnx4_fs.h
+++ b/libc/kernel/uapi/linux/qnx4_fs.h
@@ -48,54 +48,54 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QNX4_NAME_MAX 48
 struct qnx4_inode_entry {
- char di_fname[QNX4_SHORT_NAME_MAX];
- qnx4_off_t di_size;
+  char di_fname[QNX4_SHORT_NAME_MAX];
+  qnx4_off_t di_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- qnx4_xtnt_t di_first_xtnt;
- __le32 di_xblk;
- __le32 di_ftime;
- __le32 di_mtime;
+  qnx4_xtnt_t di_first_xtnt;
+  __le32 di_xblk;
+  __le32 di_ftime;
+  __le32 di_mtime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 di_atime;
- __le32 di_ctime;
- qnx4_nxtnt_t di_num_xtnts;
- qnx4_mode_t di_mode;
+  __le32 di_atime;
+  __le32 di_ctime;
+  qnx4_nxtnt_t di_num_xtnts;
+  qnx4_mode_t di_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- qnx4_muid_t di_uid;
- qnx4_mgid_t di_gid;
- qnx4_nlink_t di_nlink;
- __u8 di_zero[4];
+  qnx4_muid_t di_uid;
+  qnx4_mgid_t di_gid;
+  qnx4_nlink_t di_nlink;
+  __u8 di_zero[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- qnx4_ftype_t di_type;
- __u8 di_status;
+  qnx4_ftype_t di_type;
+  __u8 di_status;
 };
 struct qnx4_link_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char dl_fname[QNX4_NAME_MAX];
- __le32 dl_inode_blk;
- __u8 dl_inode_ndx;
- __u8 dl_spare[10];
+  char dl_fname[QNX4_NAME_MAX];
+  __le32 dl_inode_blk;
+  __u8 dl_inode_ndx;
+  __u8 dl_spare[10];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 dl_status;
+  __u8 dl_status;
 };
 struct qnx4_xblk {
- __le32 xblk_next_xblk;
+  __le32 xblk_next_xblk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 xblk_prev_xblk;
- __u8 xblk_num_xtnts;
- __u8 xblk_spare[3];
- __le32 xblk_num_blocks;
+  __le32 xblk_prev_xblk;
+  __u8 xblk_num_xtnts;
+  __u8 xblk_spare[3];
+  __le32 xblk_num_blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- qnx4_xtnt_t xblk_xtnts[QNX4_MAX_XTNTS_PER_XBLK];
- char xblk_signature[8];
- qnx4_xtnt_t xblk_first_xtnt;
+  qnx4_xtnt_t xblk_xtnts[QNX4_MAX_XTNTS_PER_XBLK];
+  char xblk_signature[8];
+  qnx4_xtnt_t xblk_first_xtnt;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct qnx4_super_block {
- struct qnx4_inode_entry RootDir;
- struct qnx4_inode_entry Inode;
- struct qnx4_inode_entry Boot;
+  struct qnx4_inode_entry RootDir;
+  struct qnx4_inode_entry Inode;
+  struct qnx4_inode_entry Boot;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct qnx4_inode_entry AltBoot;
+  struct qnx4_inode_entry AltBoot;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/qnxtypes.h b/libc/kernel/uapi/linux/qnxtypes.h
index 4121025..d6ba125 100644
--- a/libc/kernel/uapi/linux/qnxtypes.h
+++ b/libc/kernel/uapi/linux/qnxtypes.h
@@ -23,8 +23,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u8 qnx4_ftype_t;
 typedef struct {
- __le32 xtnt_blk;
- __le32 xtnt_size;
+  __le32 xtnt_blk;
+  __le32 xtnt_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } qnx4_xtnt_t;
 typedef __le16 qnx4_mode_t;
diff --git a/libc/kernel/uapi/linux/quota.h b/libc/kernel/uapi/linux/quota.h
index 9232d64..d5fc707 100644
--- a/libc/kernel/uapi/linux/quota.h
+++ b/libc/kernel/uapi/linux/quota.h
@@ -26,10 +26,11 @@
 #define USRQUOTA 0
 #define GRPQUOTA 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define INITQFNAMES {   "user",     "group",     "undefined",  };
+#define INITQFNAMES { "user", "group", "undefined", \
+};
 #define SUBCMDMASK 0x00ff
 #define SUBCMDSHIFT 8
-#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
+#define QCMD(cmd,type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Q_SYNC 0x800001
 #define Q_QUOTAON 0x800002
@@ -49,14 +50,14 @@
 #define QIF_DQBLKSIZE_BITS 10
 #define QIF_DQBLKSIZE (1 << QIF_DQBLKSIZE_BITS)
 enum {
- QIF_BLIMITS_B = 0,
+  QIF_BLIMITS_B = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- QIF_SPACE_B,
- QIF_ILIMITS_B,
- QIF_INODES_B,
- QIF_BTIME_B,
+  QIF_SPACE_B,
+  QIF_ILIMITS_B,
+  QIF_INODES_B,
+  QIF_BTIME_B,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- QIF_ITIME_B,
+  QIF_ITIME_B,
 };
 #define QIF_BLIMITS (1 << QIF_BLIMITS_B)
 #define QIF_SPACE (1 << QIF_SPACE_B)
@@ -72,17 +73,17 @@
 #define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct if_dqblk {
- __u64 dqb_bhardlimit;
- __u64 dqb_bsoftlimit;
- __u64 dqb_curspace;
+  __u64 dqb_bhardlimit;
+  __u64 dqb_bsoftlimit;
+  __u64 dqb_curspace;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 dqb_ihardlimit;
- __u64 dqb_isoftlimit;
- __u64 dqb_curinodes;
- __u64 dqb_btime;
+  __u64 dqb_ihardlimit;
+  __u64 dqb_isoftlimit;
+  __u64 dqb_curinodes;
+  __u64 dqb_btime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 dqb_itime;
- __u32 dqb_valid;
+  __u64 dqb_itime;
+  __u32 dqb_valid;
 };
 #define IIF_BGRACE 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -91,10 +92,10 @@
 #define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
 struct if_dqinfo {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 dqi_bgrace;
- __u64 dqi_igrace;
- __u32 dqi_flags;
- __u32 dqi_valid;
+  __u64 dqi_bgrace;
+  __u64 dqi_igrace;
+  __u32 dqi_flags;
+  __u32 dqi_valid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define QUOTA_NL_NOWARN 0
@@ -112,23 +113,23 @@
 #define QUOTA_NL_BSOFTBELOW 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- QUOTA_NL_C_UNSPEC,
- QUOTA_NL_C_WARNING,
- __QUOTA_NL_C_MAX,
+  QUOTA_NL_C_UNSPEC,
+  QUOTA_NL_C_WARNING,
+  __QUOTA_NL_C_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define QUOTA_NL_C_MAX (__QUOTA_NL_C_MAX - 1)
 enum {
- QUOTA_NL_A_UNSPEC,
+  QUOTA_NL_A_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- QUOTA_NL_A_QTYPE,
- QUOTA_NL_A_EXCESS_ID,
- QUOTA_NL_A_WARNING,
- QUOTA_NL_A_DEV_MAJOR,
+  QUOTA_NL_A_QTYPE,
+  QUOTA_NL_A_EXCESS_ID,
+  QUOTA_NL_A_WARNING,
+  QUOTA_NL_A_DEV_MAJOR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- QUOTA_NL_A_DEV_MINOR,
- QUOTA_NL_A_CAUSED_ID,
- __QUOTA_NL_A_MAX,
+  QUOTA_NL_A_DEV_MINOR,
+  QUOTA_NL_A_CAUSED_ID,
+  __QUOTA_NL_A_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QUOTA_NL_A_MAX (__QUOTA_NL_A_MAX - 1)
diff --git a/libc/kernel/uapi/linux/raid/md_p.h b/libc/kernel/uapi/linux/raid/md_p.h
index fc6e20e..bdf8e7c 100644
--- a/libc/kernel/uapi/linux/raid/md_p.h
+++ b/libc/kernel/uapi/linux/raid/md_p.h
@@ -41,7 +41,7 @@
 #define MD_SB_DESCRIPTOR_WORDS 32
 #define MD_SB_DISKS 27
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MD_SB_DISKS_WORDS (MD_SB_DISKS*MD_SB_DESCRIPTOR_WORDS)
+#define MD_SB_DISKS_WORDS (MD_SB_DISKS * MD_SB_DESCRIPTOR_WORDS)
 #define MD_SB_RESERVED_WORDS (1024 - MD_SB_GENERIC_WORDS - MD_SB_PERSONALITY_WORDS - MD_SB_DISKS_WORDS - MD_SB_DESCRIPTOR_WORDS)
 #define MD_SB_EQUAL_WORDS (MD_SB_GENERIC_WORDS + MD_SB_PERSONALITY_WORDS + MD_SB_DISKS_WORDS)
 #define MD_DISK_FAULTY 0
@@ -52,13 +52,13 @@
 #define MD_DISK_WRITEMOSTLY 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mdp_device_descriptor_s {
- __u32 number;
- __u32 major;
- __u32 minor;
+  __u32 number;
+  __u32 major;
+  __u32 minor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 raid_disk;
- __u32 state;
- __u32 reserved[MD_SB_DESCRIPTOR_WORDS - 5];
+  __u32 raid_disk;
+  __u32 state;
+  __u32 reserved[MD_SB_DESCRIPTOR_WORDS - 5];
 } mdp_disk_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_MAGIC 0xa92b4efc
@@ -67,122 +67,122 @@
 #define MD_SB_BITMAP_PRESENT 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mdp_superblock_s {
- __u32 md_magic;
- __u32 major_version;
- __u32 minor_version;
+  __u32 md_magic;
+  __u32 major_version;
+  __u32 minor_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 patch_version;
- __u32 gvalid_words;
- __u32 set_uuid0;
- __u32 ctime;
+  __u32 patch_version;
+  __u32 gvalid_words;
+  __u32 set_uuid0;
+  __u32 ctime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 level;
- __u32 size;
- __u32 nr_disks;
- __u32 raid_disks;
+  __u32 level;
+  __u32 size;
+  __u32 nr_disks;
+  __u32 raid_disks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 md_minor;
- __u32 not_persistent;
- __u32 set_uuid1;
- __u32 set_uuid2;
+  __u32 md_minor;
+  __u32 not_persistent;
+  __u32 set_uuid1;
+  __u32 set_uuid2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 set_uuid3;
- __u32 gstate_creserved[MD_SB_GENERIC_CONSTANT_WORDS - 16];
- __u32 utime;
- __u32 state;
+  __u32 set_uuid3;
+  __u32 gstate_creserved[MD_SB_GENERIC_CONSTANT_WORDS - 16];
+  __u32 utime;
+  __u32 state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 active_disks;
- __u32 working_disks;
- __u32 failed_disks;
- __u32 spare_disks;
+  __u32 active_disks;
+  __u32 working_disks;
+  __u32 failed_disks;
+  __u32 spare_disks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sb_csum;
+  __u32 sb_csum;
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
- __u32 events_hi;
- __u32 events_lo;
+  __u32 events_hi;
+  __u32 events_lo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cp_events_hi;
- __u32 cp_events_lo;
-#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
- __u32 events_lo;
+  __u32 cp_events_hi;
+  __u32 cp_events_lo;
+#elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
+  __u32 events_lo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 events_hi;
- __u32 cp_events_lo;
- __u32 cp_events_hi;
+  __u32 events_hi;
+  __u32 cp_events_lo;
+  __u32 cp_events_hi;
 #else
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error unspecified endianness
 #endif
- __u32 recovery_cp;
- __u64 reshape_position;
+  __u32 recovery_cp;
+  __u64 reshape_position;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 new_level;
- __u32 delta_disks;
- __u32 new_layout;
- __u32 new_chunk;
+  __u32 new_level;
+  __u32 delta_disks;
+  __u32 new_layout;
+  __u32 new_chunk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gstate_sreserved[MD_SB_GENERIC_STATE_WORDS - 18];
- __u32 layout;
- __u32 chunk_size;
- __u32 root_pv;
+  __u32 gstate_sreserved[MD_SB_GENERIC_STATE_WORDS - 18];
+  __u32 layout;
+  __u32 chunk_size;
+  __u32 root_pv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 root_block;
- __u32 pstate_reserved[MD_SB_PERSONALITY_WORDS - 4];
- mdp_disk_t disks[MD_SB_DISKS];
- __u32 reserved[MD_SB_RESERVED_WORDS];
+  __u32 root_block;
+  __u32 pstate_reserved[MD_SB_PERSONALITY_WORDS - 4];
+  mdp_disk_t disks[MD_SB_DISKS];
+  __u32 reserved[MD_SB_RESERVED_WORDS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- mdp_disk_t this_disk;
+  mdp_disk_t this_disk;
 } mdp_super_t;
-#define MD_SUPERBLOCK_1_TIME_SEC_MASK ((1ULL<<40) - 1)
+#define MD_SUPERBLOCK_1_TIME_SEC_MASK ((1ULL << 40) - 1)
 struct mdp_superblock_1 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 magic;
- __le32 major_version;
- __le32 feature_map;
- __le32 pad0;
+  __le32 magic;
+  __le32 major_version;
+  __le32 feature_map;
+  __le32 pad0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 set_uuid[16];
- char set_name[32];
- __le64 ctime;
- __le32 level;
+  __u8 set_uuid[16];
+  char set_name[32];
+  __le64 ctime;
+  __le32 level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 layout;
- __le64 size;
- __le32 chunksize;
- __le32 raid_disks;
+  __le32 layout;
+  __le64 size;
+  __le32 chunksize;
+  __le32 raid_disks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 bitmap_offset;
- __le32 new_level;
- __le64 reshape_position;
- __le32 delta_disks;
+  __le32 bitmap_offset;
+  __le32 new_level;
+  __le64 reshape_position;
+  __le32 delta_disks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 new_layout;
- __le32 new_chunk;
- __le32 new_offset;
- __le64 data_offset;
+  __le32 new_layout;
+  __le32 new_chunk;
+  __le32 new_offset;
+  __le64 data_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 data_size;
- __le64 super_offset;
- __le64 recovery_offset;
- __le32 dev_number;
+  __le64 data_size;
+  __le64 super_offset;
+  __le64 recovery_offset;
+  __le32 dev_number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 cnt_corrected_read;
- __u8 device_uuid[16];
- __u8 devflags;
+  __le32 cnt_corrected_read;
+  __u8 device_uuid[16];
+  __u8 devflags;
 #define WriteMostly1 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bblog_shift;
- __le16 bblog_size;
- __le32 bblog_offset;
- __le64 utime;
+  __u8 bblog_shift;
+  __le16 bblog_size;
+  __le32 bblog_offset;
+  __le64 utime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le64 events;
- __le64 resync_offset;
- __le32 sb_csum;
- __le32 max_dev;
+  __le64 events;
+  __le64 resync_offset;
+  __le32 sb_csum;
+  __le32 max_dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad3[64-32];
- __le16 dev_roles[0];
+  __u8 pad3[64 - 32];
+  __le16 dev_roles[0];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -194,6 +194,6 @@
 #define MD_FEATURE_RESHAPE_BACKWARDS 32
 #define MD_FEATURE_NEW_OFFSET 64
 #define MD_FEATURE_RECOVERY_BITMAP 128
-#define MD_FEATURE_ALL (MD_FEATURE_BITMAP_OFFSET   |MD_FEATURE_RECOVERY_OFFSET   |MD_FEATURE_RESHAPE_ACTIVE   |MD_FEATURE_BAD_BLOCKS   |MD_FEATURE_REPLACEMENT   |MD_FEATURE_RESHAPE_BACKWARDS   |MD_FEATURE_NEW_OFFSET   |MD_FEATURE_RECOVERY_BITMAP   )
+#define MD_FEATURE_ALL (MD_FEATURE_BITMAP_OFFSET | MD_FEATURE_RECOVERY_OFFSET | MD_FEATURE_RESHAPE_ACTIVE | MD_FEATURE_BAD_BLOCKS | MD_FEATURE_REPLACEMENT | MD_FEATURE_RESHAPE_BACKWARDS | MD_FEATURE_NEW_OFFSET | MD_FEATURE_RECOVERY_BITMAP)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/raid/md_u.h b/libc/kernel/uapi/linux/raid/md_u.h
index 9402c77..7a9fa61 100644
--- a/libc/kernel/uapi/linux/raid/md_u.h
+++ b/libc/kernel/uapi/linux/raid/md_u.h
@@ -22,98 +22,94 @@
 #define MD_MINOR_VERSION 90
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_PATCHLEVEL_VERSION 3
-#define RAID_VERSION _IOR (MD_MAJOR, 0x10, mdu_version_t)
-#define GET_ARRAY_INFO _IOR (MD_MAJOR, 0x11, mdu_array_info_t)
-#define GET_DISK_INFO _IOR (MD_MAJOR, 0x12, mdu_disk_info_t)
+#define RAID_VERSION _IOR(MD_MAJOR, 0x10, mdu_version_t)
+#define GET_ARRAY_INFO _IOR(MD_MAJOR, 0x11, mdu_array_info_t)
+#define GET_DISK_INFO _IOR(MD_MAJOR, 0x12, mdu_disk_info_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PRINT_RAID_DEBUG _IO (MD_MAJOR, 0x13)
-#define RAID_AUTORUN _IO (MD_MAJOR, 0x14)
-#define GET_BITMAP_FILE _IOR (MD_MAJOR, 0x15, mdu_bitmap_file_t)
-#define CLEAR_ARRAY _IO (MD_MAJOR, 0x20)
+#define RAID_AUTORUN _IO(MD_MAJOR, 0x14)
+#define GET_BITMAP_FILE _IOR(MD_MAJOR, 0x15, mdu_bitmap_file_t)
+#define CLEAR_ARRAY _IO(MD_MAJOR, 0x20)
+#define ADD_NEW_DISK _IOW(MD_MAJOR, 0x21, mdu_disk_info_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ADD_NEW_DISK _IOW (MD_MAJOR, 0x21, mdu_disk_info_t)
-#define HOT_REMOVE_DISK _IO (MD_MAJOR, 0x22)
-#define SET_ARRAY_INFO _IOW (MD_MAJOR, 0x23, mdu_array_info_t)
-#define SET_DISK_INFO _IO (MD_MAJOR, 0x24)
+#define HOT_REMOVE_DISK _IO(MD_MAJOR, 0x22)
+#define SET_ARRAY_INFO _IOW(MD_MAJOR, 0x23, mdu_array_info_t)
+#define SET_DISK_INFO _IO(MD_MAJOR, 0x24)
+#define WRITE_RAID_INFO _IO(MD_MAJOR, 0x25)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define WRITE_RAID_INFO _IO (MD_MAJOR, 0x25)
-#define UNPROTECT_ARRAY _IO (MD_MAJOR, 0x26)
-#define PROTECT_ARRAY _IO (MD_MAJOR, 0x27)
-#define HOT_ADD_DISK _IO (MD_MAJOR, 0x28)
+#define UNPROTECT_ARRAY _IO(MD_MAJOR, 0x26)
+#define PROTECT_ARRAY _IO(MD_MAJOR, 0x27)
+#define HOT_ADD_DISK _IO(MD_MAJOR, 0x28)
+#define SET_DISK_FAULTY _IO(MD_MAJOR, 0x29)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SET_DISK_FAULTY _IO (MD_MAJOR, 0x29)
-#define HOT_GENERATE_ERROR _IO (MD_MAJOR, 0x2a)
-#define SET_BITMAP_FILE _IOW (MD_MAJOR, 0x2b, int)
-#define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t)
+#define HOT_GENERATE_ERROR _IO(MD_MAJOR, 0x2a)
+#define SET_BITMAP_FILE _IOW(MD_MAJOR, 0x2b, int)
+#define RUN_ARRAY _IOW(MD_MAJOR, 0x30, mdu_param_t)
+#define STOP_ARRAY _IO(MD_MAJOR, 0x32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define STOP_ARRAY _IO (MD_MAJOR, 0x32)
-#define STOP_ARRAY_RO _IO (MD_MAJOR, 0x33)
-#define RESTART_ARRAY_RW _IO (MD_MAJOR, 0x34)
+#define STOP_ARRAY_RO _IO(MD_MAJOR, 0x33)
+#define RESTART_ARRAY_RW _IO(MD_MAJOR, 0x34)
 #define MdpMinorShift 6
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mdu_version_s {
- int major;
- int minor;
- int patchlevel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int major;
+  int minor;
+  int patchlevel;
 } mdu_version_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mdu_array_info_s {
- int major_version;
- int minor_version;
+  int major_version;
+  int minor_version;
+  int patch_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int patch_version;
- int ctime;
- int level;
- int size;
+  int ctime;
+  int level;
+  int size;
+  int nr_disks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int nr_disks;
- int raid_disks;
- int md_minor;
- int not_persistent;
+  int raid_disks;
+  int md_minor;
+  int not_persistent;
+  int utime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int utime;
- int state;
- int active_disks;
- int working_disks;
+  int state;
+  int active_disks;
+  int working_disks;
+  int failed_disks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int failed_disks;
- int spare_disks;
- int layout;
- int chunk_size;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int spare_disks;
+  int layout;
+  int chunk_size;
 } mdu_array_info_t;
-#define LEVEL_MULTIPATH (-4)
-#define LEVEL_LINEAR (-1)
-#define LEVEL_FAULTY (-5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define LEVEL_NONE (-1000000)
+#define LEVEL_MULTIPATH (- 4)
+#define LEVEL_LINEAR (- 1)
+#define LEVEL_FAULTY (- 5)
+#define LEVEL_NONE (- 1000000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mdu_disk_info_s {
- int number;
- int major;
+  int number;
+  int major;
+  int minor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int minor;
- int raid_disk;
- int state;
+  int raid_disk;
+  int state;
 } mdu_disk_info_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mdu_start_info_s {
- int major;
- int minor;
- int raid_disk;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int state;
+  int major;
+  int minor;
+  int raid_disk;
+  int state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdu_start_info_t;
-typedef struct mdu_bitmap_file_s
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char pathname[4096];
+typedef struct mdu_bitmap_file_s {
+  char pathname[4096];
 } mdu_bitmap_file_t;
-typedef struct mdu_param_s
-{
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int personality;
- int chunk_size;
- int max_fault;
+typedef struct mdu_param_s {
+  int personality;
+  int chunk_size;
+  int max_fault;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdu_param_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/random.h b/libc/kernel/uapi/linux/random.h
index 6215d08..22332d1 100644
--- a/libc/kernel/uapi/linux/random.h
+++ b/libc/kernel/uapi/linux/random.h
@@ -22,18 +22,20 @@
 #include <linux/ioctl.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/irqnr.h>
-#define RNDGETENTCNT _IOR( 'R', 0x00, int )
-#define RNDADDTOENTCNT _IOW( 'R', 0x01, int )
-#define RNDGETPOOL _IOR( 'R', 0x02, int [2] )
+#define RNDGETENTCNT _IOR('R', 0x00, int)
+#define RNDADDTOENTCNT _IOW('R', 0x01, int)
+#define RNDGETPOOL _IOR('R', 0x02, int[2])
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RNDADDENTROPY _IOW( 'R', 0x03, int [2] )
-#define RNDZAPENTCNT _IO( 'R', 0x04 )
-#define RNDCLEARPOOL _IO( 'R', 0x06 )
+#define RNDADDENTROPY _IOW('R', 0x03, int[2])
+#define RNDZAPENTCNT _IO('R', 0x04)
+#define RNDCLEARPOOL _IO('R', 0x06)
 struct rand_pool_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int entropy_count;
- int buf_size;
- __u32 buf[0];
+  int entropy_count;
+  int buf_size;
+  __u32 buf[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GRND_NONBLOCK 0x0001
+#define GRND_RANDOM 0x0002
 #endif
diff --git a/libc/kernel/uapi/linux/raw.h b/libc/kernel/uapi/linux/raw.h
index 52e2ba9..2320727 100644
--- a/libc/kernel/uapi/linux/raw.h
+++ b/libc/kernel/uapi/linux/raw.h
@@ -19,16 +19,15 @@
 #ifndef __LINUX_RAW_H
 #define __LINUX_RAW_H
 #include <linux/types.h>
-#define RAW_SETBIND _IO( 0xac, 0 )
+#define RAW_SETBIND _IO(0xac, 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RAW_GETBIND _IO( 0xac, 1 )
-struct raw_config_request
-{
- int raw_minor;
+#define RAW_GETBIND _IO(0xac, 1)
+struct raw_config_request {
+  int raw_minor;
+  __u64 block_major;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 block_major;
- __u64 block_minor;
+  __u64 block_minor;
 };
 #define MAX_RAW_MINORS CONFIG_MAX_RAW_DEVS
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/rds.h b/libc/kernel/uapi/linux/rds.h
index 98c5644..66cb905 100644
--- a/libc/kernel/uapi/linux/rds.h
+++ b/libc/kernel/uapi/linux/rds.h
@@ -56,8 +56,8 @@
 #define RDS_INFO_LAST 10010
 struct rds_info_counter {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t name[32];
- uint64_t value;
+  uint8_t name[32];
+  uint64_t value;
 } __attribute__((packed));
 #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -66,67 +66,67 @@
 #define TRANSNAMSIZ 16
 struct rds_info_connection {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t next_tx_seq;
- uint64_t next_rx_seq;
- __be32 laddr;
- __be32 faddr;
+  uint64_t next_tx_seq;
+  uint64_t next_rx_seq;
+  __be32 laddr;
+  __be32 faddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t transport[TRANSNAMSIZ];
- uint8_t flags;
+  uint8_t transport[TRANSNAMSIZ];
+  uint8_t flags;
 } __attribute__((packed));
 #define RDS_INFO_MESSAGE_FLAG_ACK 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
 struct rds_info_message {
- uint64_t seq;
- uint32_t len;
+  uint64_t seq;
+  uint32_t len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 laddr;
- __be32 faddr;
- __be16 lport;
- __be16 fport;
+  __be32 laddr;
+  __be32 faddr;
+  __be16 lport;
+  __be16 fport;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t flags;
+  uint8_t flags;
 } __attribute__((packed));
 struct rds_info_socket {
- uint32_t sndbuf;
+  uint32_t sndbuf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 bound_addr;
- __be32 connected_addr;
- __be16 bound_port;
- __be16 connected_port;
+  __be32 bound_addr;
+  __be32 connected_addr;
+  __be16 bound_port;
+  __be16 connected_port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t rcvbuf;
- uint64_t inum;
+  uint32_t rcvbuf;
+  uint64_t inum;
 } __attribute__((packed));
 struct rds_info_tcp_socket {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 local_addr;
- __be16 local_port;
- __be32 peer_addr;
- __be16 peer_port;
+  __be32 local_addr;
+  __be16 local_port;
+  __be32 peer_addr;
+  __be16 peer_port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t hdr_rem;
- uint64_t data_rem;
- uint32_t last_sent_nxt;
- uint32_t last_expected_una;
+  uint64_t hdr_rem;
+  uint64_t data_rem;
+  uint32_t last_sent_nxt;
+  uint32_t last_expected_una;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t last_seen_una;
+  uint32_t last_seen_una;
 } __attribute__((packed));
 #define RDS_IB_GID_LEN 16
 struct rds_info_rdma_connection {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 src_addr;
- __be32 dst_addr;
- uint8_t src_gid[RDS_IB_GID_LEN];
- uint8_t dst_gid[RDS_IB_GID_LEN];
+  __be32 src_addr;
+  __be32 dst_addr;
+  uint8_t src_gid[RDS_IB_GID_LEN];
+  uint8_t dst_gid[RDS_IB_GID_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t max_send_wr;
- uint32_t max_recv_wr;
- uint32_t max_send_sge;
- uint32_t rdma_mr_max;
+  uint32_t max_send_wr;
+  uint32_t max_recv_wr;
+  uint32_t max_send_sge;
+  uint32_t rdma_mr_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t rdma_mr_size;
+  uint32_t rdma_mr_size;
 };
 #define RDS_CONG_MONITOR_SIZE 64
 #define RDS_CONG_MONITOR_BIT(port) (((unsigned int) port) % RDS_CONG_MONITOR_SIZE)
@@ -134,75 +134,75 @@
 #define RDS_CONG_MONITOR_MASK(port) (1ULL << RDS_CONG_MONITOR_BIT(port))
 typedef uint64_t rds_rdma_cookie_t;
 struct rds_iovec {
- uint64_t addr;
+  uint64_t addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t bytes;
+  uint64_t bytes;
 };
 struct rds_get_mr_args {
- struct rds_iovec vec;
+  struct rds_iovec vec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t cookie_addr;
- uint64_t flags;
+  uint64_t cookie_addr;
+  uint64_t flags;
 };
 struct rds_get_mr_for_dest_args {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_storage dest_addr;
- struct rds_iovec vec;
- uint64_t cookie_addr;
- uint64_t flags;
+  struct sockaddr_storage dest_addr;
+  struct rds_iovec vec;
+  uint64_t cookie_addr;
+  uint64_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct rds_free_mr_args {
- rds_rdma_cookie_t cookie;
- uint64_t flags;
+  rds_rdma_cookie_t cookie;
+  uint64_t flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct rds_rdma_args {
- rds_rdma_cookie_t cookie;
- struct rds_iovec remote_vec;
+  rds_rdma_cookie_t cookie;
+  struct rds_iovec remote_vec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t local_vec_addr;
- uint64_t nr_local;
- uint64_t flags;
- uint64_t user_token;
+  uint64_t local_vec_addr;
+  uint64_t nr_local;
+  uint64_t flags;
+  uint64_t user_token;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct rds_atomic_args {
- rds_rdma_cookie_t cookie;
- uint64_t local_addr;
+  rds_rdma_cookie_t cookie;
+  uint64_t local_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t remote_addr;
- union {
- struct {
- uint64_t compare;
+  uint64_t remote_addr;
+  union {
+    struct {
+      uint64_t compare;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t swap;
- } cswp;
- struct {
- uint64_t add;
+      uint64_t swap;
+    } cswp;
+    struct {
+      uint64_t add;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } fadd;
- struct {
- uint64_t compare;
- uint64_t swap;
+    } fadd;
+    struct {
+      uint64_t compare;
+      uint64_t swap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t compare_mask;
- uint64_t swap_mask;
- } m_cswp;
- struct {
+      uint64_t compare_mask;
+      uint64_t swap_mask;
+    } m_cswp;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t add;
- uint64_t nocarry_mask;
- } m_fadd;
- };
+      uint64_t add;
+      uint64_t nocarry_mask;
+    } m_fadd;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t flags;
- uint64_t user_token;
+  uint64_t flags;
+  uint64_t user_token;
 };
 struct rds_rdma_notify {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t user_token;
- int32_t status;
+  uint64_t user_token;
+  int32_t status;
 };
 #define RDS_RDMA_SUCCESS 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/reiserfs_fs.h b/libc/kernel/uapi/linux/reiserfs_fs.h
index 5011b11..b0ec03b 100644
--- a/libc/kernel/uapi/linux/reiserfs_fs.h
+++ b/libc/kernel/uapi/linux/reiserfs_fs.h
@@ -21,7 +21,7 @@
 #include <linux/types.h>
 #include <linux/magic.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define REISERFS_IOC_UNPACK _IOW(0xCD,1,long)
+#define REISERFS_IOC_UNPACK _IOW(0xCD, 1, long)
 #define REISERFS_IOC_GETFLAGS FS_IOC_GETFLAGS
 #define REISERFS_IOC_SETFLAGS FS_IOC_SETFLAGS
 #define REISERFS_IOC_GETVERSION FS_IOC_GETVERSION
diff --git a/libc/kernel/uapi/linux/reiserfs_xattr.h b/libc/kernel/uapi/linux/reiserfs_xattr.h
index 9056de2..cc1bf9f 100644
--- a/libc/kernel/uapi/linux/reiserfs_xattr.h
+++ b/libc/kernel/uapi/linux/reiserfs_xattr.h
@@ -22,14 +22,14 @@
 #define REISERFS_XATTR_MAGIC 0x52465841
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct reiserfs_xattr_header {
- __le32 h_magic;
- __le32 h_hash;
+  __le32 h_magic;
+  __le32 h_hash;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct reiserfs_security_handle {
- const char *name;
- void *value;
- size_t length;
+  const char * name;
+  void * value;
+  size_t length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/resource.h b/libc/kernel/uapi/linux/resource.h
index 9d260c2..eaf9fc4 100644
--- a/libc/kernel/uapi/linux/resource.h
+++ b/libc/kernel/uapi/linux/resource.h
@@ -22,52 +22,52 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RUSAGE_SELF 0
-#define RUSAGE_CHILDREN (-1)
-#define RUSAGE_BOTH (-2)
+#define RUSAGE_CHILDREN (- 1)
+#define RUSAGE_BOTH (- 2)
 #define RUSAGE_THREAD 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rusage {
- struct timeval ru_utime;
- struct timeval ru_stime;
- __kernel_long_t ru_maxrss;
+  struct timeval ru_utime;
+  struct timeval ru_stime;
+  __kernel_long_t ru_maxrss;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t ru_ixrss;
- __kernel_long_t ru_idrss;
- __kernel_long_t ru_isrss;
- __kernel_long_t ru_minflt;
+  __kernel_long_t ru_ixrss;
+  __kernel_long_t ru_idrss;
+  __kernel_long_t ru_isrss;
+  __kernel_long_t ru_minflt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t ru_majflt;
- __kernel_long_t ru_nswap;
- __kernel_long_t ru_inblock;
- __kernel_long_t ru_oublock;
+  __kernel_long_t ru_majflt;
+  __kernel_long_t ru_nswap;
+  __kernel_long_t ru_inblock;
+  __kernel_long_t ru_oublock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t ru_msgsnd;
- __kernel_long_t ru_msgrcv;
- __kernel_long_t ru_nsignals;
- __kernel_long_t ru_nvcsw;
+  __kernel_long_t ru_msgsnd;
+  __kernel_long_t ru_msgrcv;
+  __kernel_long_t ru_nsignals;
+  __kernel_long_t ru_nvcsw;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t ru_nivcsw;
+  __kernel_long_t ru_nivcsw;
 };
 struct rlimit {
- __kernel_ulong_t rlim_cur;
+  __kernel_ulong_t rlim_cur;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t rlim_max;
+  __kernel_ulong_t rlim_max;
 };
 #define RLIM64_INFINITY (~0ULL)
 struct rlimit64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 rlim_cur;
- __u64 rlim_max;
+  __u64 rlim_cur;
+  __u64 rlim_max;
 };
-#define PRIO_MIN (-20)
+#define PRIO_MIN (- 20)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PRIO_MAX 20
 #define PRIO_PROCESS 0
 #define PRIO_PGRP 1
 #define PRIO_USER 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _STK_LIM (8*1024*1024)
-#define MLOCK_LIMIT ((PAGE_SIZE > 64*1024) ? PAGE_SIZE : 64*1024)
+#define _STK_LIM (8 * 1024 * 1024)
+#define MLOCK_LIMIT ((PAGE_SIZE > 64 * 1024) ? PAGE_SIZE : 64 * 1024)
 #include <asm/resource.h>
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/rfkill.h b/libc/kernel/uapi/linux/rfkill.h
index 914cc1d..573804c 100644
--- a/libc/kernel/uapi/linux/rfkill.h
+++ b/libc/kernel/uapi/linux/rfkill.h
@@ -24,34 +24,34 @@
 #define RFKILL_STATE_UNBLOCKED 1
 #define RFKILL_STATE_HARD_BLOCKED 2
 enum rfkill_type {
- RFKILL_TYPE_ALL = 0,
+  RFKILL_TYPE_ALL = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RFKILL_TYPE_WLAN,
- RFKILL_TYPE_BLUETOOTH,
- RFKILL_TYPE_UWB,
- RFKILL_TYPE_WIMAX,
+  RFKILL_TYPE_WLAN,
+  RFKILL_TYPE_BLUETOOTH,
+  RFKILL_TYPE_UWB,
+  RFKILL_TYPE_WIMAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RFKILL_TYPE_WWAN,
- RFKILL_TYPE_GPS,
- RFKILL_TYPE_FM,
- RFKILL_TYPE_NFC,
+  RFKILL_TYPE_WWAN,
+  RFKILL_TYPE_GPS,
+  RFKILL_TYPE_FM,
+  RFKILL_TYPE_NFC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NUM_RFKILL_TYPES,
+  NUM_RFKILL_TYPES,
 };
 enum rfkill_operation {
- RFKILL_OP_ADD = 0,
+  RFKILL_OP_ADD = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RFKILL_OP_DEL,
- RFKILL_OP_CHANGE,
- RFKILL_OP_CHANGE_ALL,
+  RFKILL_OP_DEL,
+  RFKILL_OP_CHANGE,
+  RFKILL_OP_CHANGE_ALL,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rfkill_event {
- __u32 idx;
- __u8 type;
- __u8 op;
+  __u32 idx;
+  __u8 type;
+  __u8 op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 soft, hard;
+  __u8 soft, hard;
 } __attribute__((packed));
 #define RFKILL_EVENT_SIZE_V1 8
 #define RFKILL_IOC_MAGIC 'R'
diff --git a/libc/kernel/uapi/linux/romfs_fs.h b/libc/kernel/uapi/linux/romfs_fs.h
index d4eff8f..2a0957f 100644
--- a/libc/kernel/uapi/linux/romfs_fs.h
+++ b/libc/kernel/uapi/linux/romfs_fs.h
@@ -23,32 +23,32 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ROMBSIZE BLOCK_SIZE
 #define ROMBSBITS BLOCK_SIZE_BITS
-#define ROMBMASK (ROMBSIZE-1)
+#define ROMBMASK (ROMBSIZE - 1)
 #define ROMFS_MAGIC 0x7275
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ROMFS_MAXFN 128
-#define __mkw(h,l) (((h)&0x00ff)<< 8|((l)&0x00ff))
-#define __mkl(h,l) (((h)&0xffff)<<16|((l)&0xffff))
-#define __mk4(a,b,c,d) cpu_to_be32(__mkl(__mkw(a,b),__mkw(c,d)))
+#define __mkw(h,l) (((h) & 0x00ff) << 8 | ((l) & 0x00ff))
+#define __mkl(h,l) (((h) & 0xffff) << 16 | ((l) & 0xffff))
+#define __mk4(a,b,c,d) cpu_to_be32(__mkl(__mkw(a, b), __mkw(c, d)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ROMSB_WORD0 __mk4('-','r','o','m')
-#define ROMSB_WORD1 __mk4('1','f','s','-')
+#define ROMSB_WORD0 __mk4('-', 'r', 'o', 'm')
+#define ROMSB_WORD1 __mk4('1', 'f', 's', '-')
 struct romfs_super_block {
- __be32 word0;
+  __be32 word0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 word1;
- __be32 size;
- __be32 checksum;
- char name[0];
+  __be32 word1;
+  __be32 size;
+  __be32 checksum;
+  char name[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct romfs_inode {
- __be32 next;
- __be32 spec;
+  __be32 next;
+  __be32 spec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 size;
- __be32 checksum;
- char name[0];
+  __be32 size;
+  __be32 checksum;
+  char name[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ROMFH_TYPE 7
@@ -64,7 +64,7 @@
 #define ROMFH_FIF 7
 #define ROMFH_EXEC 8
 #define ROMFH_SIZE 16
-#define ROMFH_PAD (ROMFH_SIZE-1)
+#define ROMFH_PAD (ROMFH_SIZE - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ROMFH_MASK (~ROMFH_PAD)
 #endif
diff --git a/libc/kernel/uapi/linux/rose.h b/libc/kernel/uapi/linux/rose.h
index 9f45092..ba91f49 100644
--- a/libc/kernel/uapi/linux/rose.h
+++ b/libc/kernel/uapi/linux/rose.h
@@ -32,16 +32,16 @@
 #define ROSE_QBITINCL 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ROSE_HOLDBACK 7
-#define SIOCRSGCAUSE (SIOCPROTOPRIVATE+0)
-#define SIOCRSSCAUSE (SIOCPROTOPRIVATE+1)
-#define SIOCRSL2CALL (SIOCPROTOPRIVATE+2)
+#define SIOCRSGCAUSE (SIOCPROTOPRIVATE + 0)
+#define SIOCRSSCAUSE (SIOCPROTOPRIVATE + 1)
+#define SIOCRSL2CALL (SIOCPROTOPRIVATE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCRSSL2CALL (SIOCPROTOPRIVATE+2)
-#define SIOCRSACCEPT (SIOCPROTOPRIVATE+3)
-#define SIOCRSCLRRT (SIOCPROTOPRIVATE+4)
-#define SIOCRSGL2CALL (SIOCPROTOPRIVATE+5)
+#define SIOCRSSL2CALL (SIOCPROTOPRIVATE + 2)
+#define SIOCRSACCEPT (SIOCPROTOPRIVATE + 3)
+#define SIOCRSCLRRT (SIOCPROTOPRIVATE + 4)
+#define SIOCRSGL2CALL (SIOCPROTOPRIVATE + 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SIOCRSGFACILITIES (SIOCPROTOPRIVATE+6)
+#define SIOCRSGFACILITIES (SIOCPROTOPRIVATE + 6)
 #define ROSE_DTE_ORIGINATED 0x00
 #define ROSE_NUMBER_BUSY 0x01
 #define ROSE_INVALID_FACILITY 0x03
@@ -56,51 +56,51 @@
 #define ROSE_SHIP_ABSENT 0x39
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char rose_addr[5];
+  char rose_addr[5];
 } rose_address;
 struct sockaddr_rose {
- __kernel_sa_family_t srose_family;
+  __kernel_sa_family_t srose_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- rose_address srose_addr;
- ax25_address srose_call;
- int srose_ndigis;
- ax25_address srose_digi;
+  rose_address srose_addr;
+  ax25_address srose_call;
+  int srose_ndigis;
+  ax25_address srose_digi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct full_sockaddr_rose {
- __kernel_sa_family_t srose_family;
- rose_address srose_addr;
+  __kernel_sa_family_t srose_family;
+  rose_address srose_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ax25_address srose_call;
- unsigned int srose_ndigis;
- ax25_address srose_digis[ROSE_MAX_DIGIS];
+  ax25_address srose_call;
+  unsigned int srose_ndigis;
+  ax25_address srose_digis[ROSE_MAX_DIGIS];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rose_route_struct {
- rose_address address;
- unsigned short mask;
- ax25_address neighbour;
+  rose_address address;
+  unsigned short mask;
+  ax25_address neighbour;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char device[16];
- unsigned char ndigis;
- ax25_address digipeaters[AX25_MAX_DIGIS];
+  char device[16];
+  unsigned char ndigis;
+  ax25_address digipeaters[AX25_MAX_DIGIS];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rose_cause_struct {
- unsigned char cause;
- unsigned char diagnostic;
+  unsigned char cause;
+  unsigned char diagnostic;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rose_facilities_struct {
- rose_address source_addr, dest_addr;
- ax25_address source_call, dest_call;
- unsigned char source_ndigis, dest_ndigis;
+  rose_address source_addr, dest_addr;
+  ax25_address source_call, dest_call;
+  unsigned char source_ndigis, dest_ndigis;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ax25_address source_digis[ROSE_MAX_DIGIS];
- ax25_address dest_digis[ROSE_MAX_DIGIS];
- unsigned int rand;
- rose_address fail_addr;
+  ax25_address source_digis[ROSE_MAX_DIGIS];
+  ax25_address dest_digis[ROSE_MAX_DIGIS];
+  unsigned int rand;
+  rose_address fail_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ax25_address fail_call;
+  ax25_address fail_call;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/route.h b/libc/kernel/uapi/linux/route.h
index 743f00c..b6a5809 100644
--- a/libc/kernel/uapi/linux/route.h
+++ b/libc/kernel/uapi/linux/route.h
@@ -22,23 +22,23 @@
 #include <linux/compiler.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rtentry {
- unsigned long rt_pad1;
- struct sockaddr rt_dst;
- struct sockaddr rt_gateway;
+  unsigned long rt_pad1;
+  struct sockaddr rt_dst;
+  struct sockaddr rt_gateway;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr rt_genmask;
- unsigned short rt_flags;
- short rt_pad2;
- unsigned long rt_pad3;
+  struct sockaddr rt_genmask;
+  unsigned short rt_flags;
+  short rt_pad2;
+  unsigned long rt_pad3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void *rt_pad4;
- short rt_metric;
- char __user *rt_dev;
- unsigned long rt_mtu;
+  void * rt_pad4;
+  short rt_metric;
+  char __user * rt_dev;
+  unsigned long rt_mtu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rt_mss rt_mtu
- unsigned long rt_window;
- unsigned short rt_irtt;
+  unsigned long rt_window;
+  unsigned short rt_irtt;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_UP 0x0001
diff --git a/libc/kernel/uapi/linux/rtc.h b/libc/kernel/uapi/linux/rtc.h
index acb49d6..f0e4350 100644
--- a/libc/kernel/uapi/linux/rtc.h
+++ b/libc/kernel/uapi/linux/rtc.h
@@ -19,35 +19,35 @@
 #ifndef _UAPI_LINUX_RTC_H_
 #define _UAPI_LINUX_RTC_H_
 struct rtc_time {
- int tm_sec;
+  int tm_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tm_min;
- int tm_hour;
- int tm_mday;
- int tm_mon;
+  int tm_min;
+  int tm_hour;
+  int tm_mday;
+  int tm_mon;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tm_year;
- int tm_wday;
- int tm_yday;
- int tm_isdst;
+  int tm_year;
+  int tm_wday;
+  int tm_yday;
+  int tm_isdst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct rtc_wkalrm {
- unsigned char enabled;
- unsigned char pending;
+  unsigned char enabled;
+  unsigned char pending;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct rtc_time time;
+  struct rtc_time time;
 };
 struct rtc_pll_info {
- int pll_ctrl;
+  int pll_ctrl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pll_value;
- int pll_max;
- int pll_min;
- int pll_posmult;
+  int pll_value;
+  int pll_max;
+  int pll_min;
+  int pll_posmult;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pll_negmult;
- long pll_clock;
+  int pll_negmult;
+  long pll_clock;
 };
 #define RTC_AIE_ON _IO('p', 0x01)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 3a03e88..f0779cf 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -29,122 +29,122 @@
 #define RTNL_FAMILY_IP6MR 129
 #define RTNL_FAMILY_MAX 129
 enum {
- RTM_BASE = 16,
+  RTM_BASE = 16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_BASE RTM_BASE
- RTM_NEWLINK = 16,
+  RTM_NEWLINK = 16,
 #define RTM_NEWLINK RTM_NEWLINK
- RTM_DELLINK,
+  RTM_DELLINK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELLINK RTM_DELLINK
- RTM_GETLINK,
+  RTM_GETLINK,
 #define RTM_GETLINK RTM_GETLINK
- RTM_SETLINK,
+  RTM_SETLINK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_SETLINK RTM_SETLINK
- RTM_NEWADDR = 20,
+  RTM_NEWADDR = 20,
 #define RTM_NEWADDR RTM_NEWADDR
- RTM_DELADDR,
+  RTM_DELADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELADDR RTM_DELADDR
- RTM_GETADDR,
+  RTM_GETADDR,
 #define RTM_GETADDR RTM_GETADDR
- RTM_NEWROUTE = 24,
+  RTM_NEWROUTE = 24,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWROUTE RTM_NEWROUTE
- RTM_DELROUTE,
+  RTM_DELROUTE,
 #define RTM_DELROUTE RTM_DELROUTE
- RTM_GETROUTE,
+  RTM_GETROUTE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETROUTE RTM_GETROUTE
- RTM_NEWNEIGH = 28,
+  RTM_NEWNEIGH = 28,
 #define RTM_NEWNEIGH RTM_NEWNEIGH
- RTM_DELNEIGH,
+  RTM_DELNEIGH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELNEIGH RTM_DELNEIGH
- RTM_GETNEIGH,
+  RTM_GETNEIGH,
 #define RTM_GETNEIGH RTM_GETNEIGH
- RTM_NEWRULE = 32,
+  RTM_NEWRULE = 32,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWRULE RTM_NEWRULE
- RTM_DELRULE,
+  RTM_DELRULE,
 #define RTM_DELRULE RTM_DELRULE
- RTM_GETRULE,
+  RTM_GETRULE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETRULE RTM_GETRULE
- RTM_NEWQDISC = 36,
+  RTM_NEWQDISC = 36,
 #define RTM_NEWQDISC RTM_NEWQDISC
- RTM_DELQDISC,
+  RTM_DELQDISC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELQDISC RTM_DELQDISC
- RTM_GETQDISC,
+  RTM_GETQDISC,
 #define RTM_GETQDISC RTM_GETQDISC
- RTM_NEWTCLASS = 40,
+  RTM_NEWTCLASS = 40,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWTCLASS RTM_NEWTCLASS
- RTM_DELTCLASS,
+  RTM_DELTCLASS,
 #define RTM_DELTCLASS RTM_DELTCLASS
- RTM_GETTCLASS,
+  RTM_GETTCLASS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETTCLASS RTM_GETTCLASS
- RTM_NEWTFILTER = 44,
+  RTM_NEWTFILTER = 44,
 #define RTM_NEWTFILTER RTM_NEWTFILTER
- RTM_DELTFILTER,
+  RTM_DELTFILTER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELTFILTER RTM_DELTFILTER
- RTM_GETTFILTER,
+  RTM_GETTFILTER,
 #define RTM_GETTFILTER RTM_GETTFILTER
- RTM_NEWACTION = 48,
+  RTM_NEWACTION = 48,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWACTION RTM_NEWACTION
- RTM_DELACTION,
+  RTM_DELACTION,
 #define RTM_DELACTION RTM_DELACTION
- RTM_GETACTION,
+  RTM_GETACTION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETACTION RTM_GETACTION
- RTM_NEWPREFIX = 52,
+  RTM_NEWPREFIX = 52,
 #define RTM_NEWPREFIX RTM_NEWPREFIX
- RTM_GETMULTICAST = 58,
+  RTM_GETMULTICAST = 58,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETMULTICAST RTM_GETMULTICAST
- RTM_GETANYCAST = 62,
+  RTM_GETANYCAST = 62,
 #define RTM_GETANYCAST RTM_GETANYCAST
- RTM_NEWNEIGHTBL = 64,
+  RTM_NEWNEIGHTBL = 64,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
- RTM_GETNEIGHTBL = 66,
+  RTM_GETNEIGHTBL = 66,
 #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
- RTM_SETNEIGHTBL,
+  RTM_SETNEIGHTBL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
- RTM_NEWNDUSEROPT = 68,
+  RTM_NEWNDUSEROPT = 68,
 #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
- RTM_NEWADDRLABEL = 72,
+  RTM_NEWADDRLABEL = 72,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
- RTM_DELADDRLABEL,
+  RTM_DELADDRLABEL,
 #define RTM_DELADDRLABEL RTM_DELADDRLABEL
- RTM_GETADDRLABEL,
+  RTM_GETADDRLABEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETADDRLABEL RTM_GETADDRLABEL
- RTM_GETDCB = 78,
+  RTM_GETDCB = 78,
 #define RTM_GETDCB RTM_GETDCB
- RTM_SETDCB,
+  RTM_SETDCB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_SETDCB RTM_SETDCB
- RTM_NEWNETCONF = 80,
+  RTM_NEWNETCONF = 80,
 #define RTM_NEWNETCONF RTM_NEWNETCONF
- RTM_GETNETCONF = 82,
+  RTM_GETNETCONF = 82,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETNETCONF RTM_GETNETCONF
- RTM_NEWMDB = 84,
+  RTM_NEWMDB = 84,
 #define RTM_NEWMDB RTM_NEWMDB
- RTM_DELMDB = 85,
+  RTM_DELMDB = 85,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELMDB RTM_DELMDB
- RTM_GETMDB = 86,
+  RTM_GETMDB = 86,
 #define RTM_GETMDB RTM_GETMDB
- __RTM_MAX,
+  __RTM_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -153,51 +153,51 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
 struct rtattr {
- unsigned short rta_len;
- unsigned short rta_type;
+  unsigned short rta_len;
+  unsigned short rta_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define RTA_ALIGNTO 4
-#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
-#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) &&   (rta)->rta_len >= sizeof(struct rtattr) &&   (rta)->rta_len <= (len))
+#define RTA_ALIGN(len) (((len) + RTA_ALIGNTO - 1) & ~(RTA_ALIGNTO - 1))
+#define RTA_OK(rta,len) ((len) >= (int) sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len),   (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
+#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr *) (((char *) (rta)) + RTA_ALIGN((rta)->rta_len)))
 #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
 #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
-#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
+#define RTA_DATA(rta) ((void *) (((char *) (rta)) + RTA_LENGTH(0)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
+#define RTA_PAYLOAD(rta) ((int) ((rta)->rta_len) - RTA_LENGTH(0))
 struct rtmsg {
- unsigned char rtm_family;
- unsigned char rtm_dst_len;
+  unsigned char rtm_family;
+  unsigned char rtm_dst_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char rtm_src_len;
- unsigned char rtm_tos;
- unsigned char rtm_table;
- unsigned char rtm_protocol;
+  unsigned char rtm_src_len;
+  unsigned char rtm_tos;
+  unsigned char rtm_table;
+  unsigned char rtm_protocol;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char rtm_scope;
- unsigned char rtm_type;
- unsigned rtm_flags;
+  unsigned char rtm_scope;
+  unsigned char rtm_type;
+  unsigned rtm_flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- RTN_UNSPEC,
- RTN_UNICAST,
- RTN_LOCAL,
+  RTN_UNSPEC,
+  RTN_UNICAST,
+  RTN_LOCAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTN_BROADCAST,
- RTN_ANYCAST,
- RTN_MULTICAST,
- RTN_BLACKHOLE,
+  RTN_BROADCAST,
+  RTN_ANYCAST,
+  RTN_MULTICAST,
+  RTN_BLACKHOLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTN_UNREACHABLE,
- RTN_PROHIBIT,
- RTN_THROW,
- RTN_NAT,
+  RTN_UNREACHABLE,
+  RTN_PROHIBIT,
+  RTN_THROW,
+  RTN_NAT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTN_XRESOLVE,
- __RTN_MAX
+  RTN_XRESOLVE,
+  __RTN_MAX
 };
 #define RTN_MAX (__RTN_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -221,12 +221,12 @@
 #define RTPROT_MROUTED 17
 enum rt_scope_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RT_SCOPE_UNIVERSE=0,
- RT_SCOPE_SITE=200,
- RT_SCOPE_LINK=253,
- RT_SCOPE_HOST=254,
+  RT_SCOPE_UNIVERSE = 0,
+  RT_SCOPE_SITE = 200,
+  RT_SCOPE_LINK = 253,
+  RT_SCOPE_HOST = 254,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RT_SCOPE_NOWHERE=255
+  RT_SCOPE_NOWHERE = 255
 };
 #define RTM_F_NOTIFY 0x100
 #define RTM_F_CLONED 0x200
@@ -234,51 +234,51 @@
 #define RTM_F_EQUALIZE 0x400
 #define RTM_F_PREFIX 0x800
 enum rt_class_t {
- RT_TABLE_UNSPEC=0,
+  RT_TABLE_UNSPEC = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RT_TABLE_COMPAT=252,
- RT_TABLE_DEFAULT=253,
- RT_TABLE_MAIN=254,
- RT_TABLE_LOCAL=255,
+  RT_TABLE_COMPAT = 252,
+  RT_TABLE_DEFAULT = 253,
+  RT_TABLE_MAIN = 254,
+  RT_TABLE_LOCAL = 255,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RT_TABLE_MAX=0xFFFFFFFF
+  RT_TABLE_MAX = 0xFFFFFFFF
 };
 enum rtattr_type_t {
- RTA_UNSPEC,
+  RTA_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTA_DST,
- RTA_SRC,
- RTA_IIF,
- RTA_OIF,
+  RTA_DST,
+  RTA_SRC,
+  RTA_IIF,
+  RTA_OIF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTA_GATEWAY,
- RTA_PRIORITY,
- RTA_PREFSRC,
- RTA_METRICS,
+  RTA_GATEWAY,
+  RTA_PRIORITY,
+  RTA_PREFSRC,
+  RTA_METRICS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTA_MULTIPATH,
- RTA_PROTOINFO,
- RTA_FLOW,
- RTA_CACHEINFO,
+  RTA_MULTIPATH,
+  RTA_PROTOINFO,
+  RTA_FLOW,
+  RTA_CACHEINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTA_SESSION,
- RTA_MP_ALGO,
- RTA_TABLE,
- RTA_MARK,
+  RTA_SESSION,
+  RTA_MP_ALGO,
+  RTA_TABLE,
+  RTA_MARK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTA_MFC_STATS,
- __RTA_MAX
+  RTA_MFC_STATS,
+  __RTA_MAX
 };
 #define RTA_MAX (__RTA_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
-#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
+#define RTM_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
+#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct rtmsg))
 struct rtnexthop {
- unsigned short rtnh_len;
+  unsigned short rtnh_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char rtnh_flags;
- unsigned char rtnh_hops;
- int rtnh_ifindex;
+  unsigned char rtnh_flags;
+  unsigned char rtnh_hops;
+  int rtnh_ifindex;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNH_F_DEAD 1
@@ -286,69 +286,69 @@
 #define RTNH_F_ONLINK 4
 #define RTNH_ALIGNTO 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
-#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) &&   ((int)(rtnh)->rtnh_len) <= (len))
-#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
+#define RTNH_ALIGN(len) (((len) + RTNH_ALIGNTO - 1) & ~(RTNH_ALIGNTO - 1))
+#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int) (rtnh)->rtnh_len) <= (len))
+#define RTNH_NEXT(rtnh) ((struct rtnexthop *) (((char *) (rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
 #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
-#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
+#define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rta_cacheinfo {
- __u32 rta_clntref;
+  __u32 rta_clntref;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rta_lastuse;
- __s32 rta_expires;
- __u32 rta_error;
- __u32 rta_used;
+  __u32 rta_lastuse;
+  __s32 rta_expires;
+  __u32 rta_error;
+  __u32 rta_used;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNETLINK_HAVE_PEERINFO 1
- __u32 rta_id;
- __u32 rta_ts;
- __u32 rta_tsage;
+  __u32 rta_id;
+  __u32 rta_ts;
+  __u32 rta_tsage;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- RTAX_UNSPEC,
+  RTAX_UNSPEC,
 #define RTAX_UNSPEC RTAX_UNSPEC
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_LOCK,
+  RTAX_LOCK,
 #define RTAX_LOCK RTAX_LOCK
- RTAX_MTU,
+  RTAX_MTU,
 #define RTAX_MTU RTAX_MTU
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_WINDOW,
+  RTAX_WINDOW,
 #define RTAX_WINDOW RTAX_WINDOW
- RTAX_RTT,
+  RTAX_RTT,
 #define RTAX_RTT RTAX_RTT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_RTTVAR,
+  RTAX_RTTVAR,
 #define RTAX_RTTVAR RTAX_RTTVAR
- RTAX_SSTHRESH,
+  RTAX_SSTHRESH,
 #define RTAX_SSTHRESH RTAX_SSTHRESH
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_CWND,
+  RTAX_CWND,
 #define RTAX_CWND RTAX_CWND
- RTAX_ADVMSS,
+  RTAX_ADVMSS,
 #define RTAX_ADVMSS RTAX_ADVMSS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_REORDERING,
+  RTAX_REORDERING,
 #define RTAX_REORDERING RTAX_REORDERING
- RTAX_HOPLIMIT,
+  RTAX_HOPLIMIT,
 #define RTAX_HOPLIMIT RTAX_HOPLIMIT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_INITCWND,
+  RTAX_INITCWND,
 #define RTAX_INITCWND RTAX_INITCWND
- RTAX_FEATURES,
+  RTAX_FEATURES,
 #define RTAX_FEATURES RTAX_FEATURES
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_RTO_MIN,
+  RTAX_RTO_MIN,
 #define RTAX_RTO_MIN RTAX_RTO_MIN
- RTAX_INITRWND,
+  RTAX_INITRWND,
 #define RTAX_INITRWND RTAX_INITRWND
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTAX_QUICKACK,
+  RTAX_QUICKACK,
 #define RTAX_QUICKACK RTAX_QUICKACK
- __RTAX_MAX
+  __RTAX_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTAX_MAX (__RTAX_MAX - 1)
@@ -358,224 +358,223 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTAX_FEATURE_ALLFRAG 0x00000008
 struct rta_session {
- __u8 proto;
- __u8 pad1;
+  __u8 proto;
+  __u8 pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pad2;
- union {
- struct {
- __u16 sport;
+  __u16 pad2;
+  union {
+    struct {
+      __u16 sport;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 dport;
- } ports;
- struct {
- __u8 type;
+      __u16 dport;
+    } ports;
+    struct {
+      __u8 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 code;
- __u16 ident;
- } icmpt;
- __u32 spi;
+      __u8 code;
+      __u16 ident;
+    } icmpt;
+    __u32 spi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } u;
+  } u;
 };
 struct rta_mfc_stats {
- __u64 mfcs_packets;
+  __u64 mfcs_packets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 mfcs_bytes;
- __u64 mfcs_wrong_if;
+  __u64 mfcs_bytes;
+  __u64 mfcs_wrong_if;
 };
 struct rtgenmsg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char rtgen_family;
+  unsigned char rtgen_family;
 };
 struct ifinfomsg {
- unsigned char ifi_family;
+  unsigned char ifi_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char __ifi_pad;
- unsigned short ifi_type;
- int ifi_index;
- unsigned ifi_flags;
+  unsigned char __ifi_pad;
+  unsigned short ifi_type;
+  int ifi_index;
+  unsigned ifi_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned ifi_change;
+  unsigned ifi_change;
 };
 struct prefixmsg {
- unsigned char prefix_family;
+  unsigned char prefix_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char prefix_pad1;
- unsigned short prefix_pad2;
- int prefix_ifindex;
- unsigned char prefix_type;
+  unsigned char prefix_pad1;
+  unsigned short prefix_pad2;
+  int prefix_ifindex;
+  unsigned char prefix_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char prefix_len;
- unsigned char prefix_flags;
- unsigned char prefix_pad3;
+  unsigned char prefix_len;
+  unsigned char prefix_flags;
+  unsigned char prefix_pad3;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum
-{
- PREFIX_UNSPEC,
- PREFIX_ADDRESS,
+enum {
+  PREFIX_UNSPEC,
+  PREFIX_ADDRESS,
+  PREFIX_CACHEINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PREFIX_CACHEINFO,
- __PREFIX_MAX
+  __PREFIX_MAX
 };
 #define PREFIX_MAX (__PREFIX_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct prefix_cacheinfo {
- __u32 preferred_time;
- __u32 valid_time;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 preferred_time;
+  __u32 valid_time;
+};
 struct tcmsg {
- unsigned char tcm_family;
- unsigned char tcm__pad1;
- unsigned short tcm__pad2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tcm_ifindex;
- __u32 tcm_handle;
- __u32 tcm_parent;
- __u32 tcm_info;
+  unsigned char tcm_family;
+  unsigned char tcm__pad1;
+  unsigned short tcm__pad2;
+  int tcm_ifindex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 tcm_handle;
+  __u32 tcm_parent;
+  __u32 tcm_info;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_UNSPEC,
- TCA_KIND,
+  TCA_UNSPEC,
+  TCA_KIND,
+  TCA_OPTIONS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_OPTIONS,
- TCA_STATS,
- TCA_XSTATS,
- TCA_RATE,
+  TCA_STATS,
+  TCA_XSTATS,
+  TCA_RATE,
+  TCA_FCNT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_FCNT,
- TCA_STATS2,
- TCA_STAB,
- __TCA_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCA_STATS2,
+  TCA_STAB,
+  __TCA_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_MAX (__TCA_MAX - 1)
-#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
-#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
+#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcmsg))
 struct nduseroptmsg {
- unsigned char nduseropt_family;
- unsigned char nduseropt_pad1;
- unsigned short nduseropt_opts_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int nduseropt_ifindex;
- __u8 nduseropt_icmp_type;
- __u8 nduseropt_icmp_code;
- unsigned short nduseropt_pad2;
+  unsigned char nduseropt_family;
+  unsigned char nduseropt_pad1;
+  unsigned short nduseropt_opts_len;
+  int nduseropt_ifindex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int nduseropt_pad3;
+  __u8 nduseropt_icmp_type;
+  __u8 nduseropt_icmp_code;
+  unsigned short nduseropt_pad2;
+  unsigned int nduseropt_pad3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- NDUSEROPT_UNSPEC,
+  NDUSEROPT_UNSPEC,
+  NDUSEROPT_SRCADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NDUSEROPT_SRCADDR,
- __NDUSEROPT_MAX
+  __NDUSEROPT_MAX
 };
 #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_LINK 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_NOTIFY 2
 #define RTMGRP_NEIGH 4
 #define RTMGRP_TC 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_IPV4_IFADDR 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_IPV4_MROUTE 0x20
 #define RTMGRP_IPV4_ROUTE 0x40
 #define RTMGRP_IPV4_RULE 0x80
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_IPV6_IFADDR 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_IPV6_MROUTE 0x200
 #define RTMGRP_IPV6_ROUTE 0x400
 #define RTMGRP_IPV6_IFINFO 0x800
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_DECnet_IFADDR 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_DECnet_ROUTE 0x4000
 #define RTMGRP_IPV6_PREFIX 0x20000
 enum rtnetlink_groups {
+  RTNLGRP_NONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_NONE,
 #define RTNLGRP_NONE RTNLGRP_NONE
- RTNLGRP_LINK,
+  RTNLGRP_LINK,
 #define RTNLGRP_LINK RTNLGRP_LINK
+  RTNLGRP_NOTIFY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_NOTIFY,
 #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
- RTNLGRP_NEIGH,
+  RTNLGRP_NEIGH,
 #define RTNLGRP_NEIGH RTNLGRP_NEIGH
+  RTNLGRP_TC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_TC,
 #define RTNLGRP_TC RTNLGRP_TC
- RTNLGRP_IPV4_IFADDR,
+  RTNLGRP_IPV4_IFADDR,
 #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
+  RTNLGRP_IPV4_MROUTE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_IPV4_MROUTE,
 #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
- RTNLGRP_IPV4_ROUTE,
+  RTNLGRP_IPV4_ROUTE,
 #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
+  RTNLGRP_IPV4_RULE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_IPV4_RULE,
 #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
- RTNLGRP_IPV6_IFADDR,
+  RTNLGRP_IPV6_IFADDR,
 #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
+  RTNLGRP_IPV6_MROUTE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_IPV6_MROUTE,
 #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
- RTNLGRP_IPV6_ROUTE,
+  RTNLGRP_IPV6_ROUTE,
 #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
+  RTNLGRP_IPV6_IFINFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_IPV6_IFINFO,
 #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
- RTNLGRP_DECnet_IFADDR,
+  RTNLGRP_DECnet_IFADDR,
 #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
+  RTNLGRP_NOP2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_NOP2,
- RTNLGRP_DECnet_ROUTE,
+  RTNLGRP_DECnet_ROUTE,
 #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
- RTNLGRP_DECnet_RULE,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RTNLGRP_DECnet_RULE,
 #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
- RTNLGRP_NOP4,
- RTNLGRP_IPV6_PREFIX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RTNLGRP_NOP4,
+  RTNLGRP_IPV6_PREFIX,
 #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
+  RTNLGRP_IPV6_RULE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_IPV6_RULE,
 #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
- RTNLGRP_ND_USEROPT,
+  RTNLGRP_ND_USEROPT,
 #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
+  RTNLGRP_PHONET_IFADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_PHONET_IFADDR,
 #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
- RTNLGRP_PHONET_ROUTE,
+  RTNLGRP_PHONET_ROUTE,
 #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
+  RTNLGRP_DCB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_DCB,
 #define RTNLGRP_DCB RTNLGRP_DCB
- RTNLGRP_IPV4_NETCONF,
+  RTNLGRP_IPV4_NETCONF,
 #define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
+  RTNLGRP_IPV6_NETCONF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RTNLGRP_IPV6_NETCONF,
 #define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
- RTNLGRP_MDB,
+  RTNLGRP_MDB,
 #define RTNLGRP_MDB RTNLGRP_MDB
+  __RTNLGRP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
 struct tcamsg {
+  unsigned char tca_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char tca_family;
- unsigned char tca__pad1;
- unsigned short tca__pad2;
+  unsigned char tca__pad1;
+  unsigned short tca__pad2;
 };
+#define TA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
-#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
+#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcamsg))
 #define TCA_ACT_TAB 1
 #define TCAA_MAX 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTEXT_FILTER_VF (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTEXT_FILTER_BRVLAN (1 << 1)
 #endif
diff --git a/libc/kernel/uapi/linux/scc.h b/libc/kernel/uapi/linux/scc.h
index 4a95ead..8a43059 100644
--- a/libc/kernel/uapi/linux/scc.h
+++ b/libc/kernel/uapi/linux/scc.h
@@ -27,143 +27,143 @@
 #define BAYCOM 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum SCC_ioctl_cmds {
- SIOCSCCRESERVED = SIOCDEVPRIVATE,
- SIOCSCCCFG,
- SIOCSCCINI,
+  SIOCSCCRESERVED = SIOCDEVPRIVATE,
+  SIOCSCCCFG,
+  SIOCSCCINI,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SIOCSCCCHANINI,
- SIOCSCCSMEM,
- SIOCSCCGKISS,
- SIOCSCCSKISS,
+  SIOCSCCCHANINI,
+  SIOCSCCSMEM,
+  SIOCSCCGKISS,
+  SIOCSCCSKISS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SIOCSCCGSTAT,
- SIOCSCCCAL
+  SIOCSCCGSTAT,
+  SIOCSCCCAL
 };
 enum L1_params {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARAM_DATA,
- PARAM_TXDELAY,
- PARAM_PERSIST,
- PARAM_SLOTTIME,
+  PARAM_DATA,
+  PARAM_TXDELAY,
+  PARAM_PERSIST,
+  PARAM_SLOTTIME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARAM_TXTAIL,
- PARAM_FULLDUP,
- PARAM_SOFTDCD,
- PARAM_MUTE,
+  PARAM_TXTAIL,
+  PARAM_FULLDUP,
+  PARAM_SOFTDCD,
+  PARAM_MUTE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARAM_DTR,
- PARAM_RTS,
- PARAM_SPEED,
- PARAM_ENDDELAY,
+  PARAM_DTR,
+  PARAM_RTS,
+  PARAM_SPEED,
+  PARAM_ENDDELAY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARAM_GROUP,
- PARAM_IDLE,
- PARAM_MIN,
- PARAM_MAXKEY,
+  PARAM_GROUP,
+  PARAM_IDLE,
+  PARAM_MIN,
+  PARAM_MAXKEY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARAM_WAIT,
- PARAM_MAXDEFER,
- PARAM_TX,
- PARAM_HWEVENT = 31,
+  PARAM_WAIT,
+  PARAM_MAXDEFER,
+  PARAM_TX,
+  PARAM_HWEVENT = 31,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- PARAM_RETURN = 255
+  PARAM_RETURN = 255
 };
 enum FULLDUP_modes {
- KISS_DUPLEX_HALF,
+  KISS_DUPLEX_HALF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KISS_DUPLEX_FULL,
- KISS_DUPLEX_LINK,
- KISS_DUPLEX_OPTIMA
+  KISS_DUPLEX_FULL,
+  KISS_DUPLEX_LINK,
+  KISS_DUPLEX_OPTIMA
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIMER_OFF 65535U
 #define NO_SUCH_PARAM 65534U
 enum HWEVENT_opts {
- HWEV_DCD_ON,
+  HWEV_DCD_ON,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- HWEV_DCD_OFF,
- HWEV_ALL_SENT
+  HWEV_DCD_OFF,
+  HWEV_ALL_SENT
 };
 #define RXGROUP 0100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TXGROUP 0200
 enum CLOCK_sources {
- CLK_DPLL,
- CLK_EXTERNAL,
+  CLK_DPLL,
+  CLK_EXTERNAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CLK_DIVIDER,
- CLK_BRG
+  CLK_DIVIDER,
+  CLK_BRG
 };
 enum TX_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TXS_IDLE,
- TXS_BUSY,
- TXS_ACTIVE,
- TXS_NEWFRAME,
+  TXS_IDLE,
+  TXS_BUSY,
+  TXS_ACTIVE,
+  TXS_NEWFRAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TXS_IDLE2,
- TXS_WAIT,
- TXS_TIMEOUT
+  TXS_IDLE2,
+  TXS_WAIT,
+  TXS_TIMEOUT
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long io_port;
 struct scc_stat {
- long rxints;
- long txints;
+  long rxints;
+  long txints;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long exints;
- long spints;
- long txframes;
- long rxframes;
+  long exints;
+  long spints;
+  long txframes;
+  long rxframes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long rxerrs;
- long txerrs;
- unsigned int nospace;
- unsigned int rx_over;
+  long rxerrs;
+  long txerrs;
+  unsigned int nospace;
+  unsigned int rx_over;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tx_under;
- unsigned int tx_state;
- int tx_queued;
- unsigned int maxqueue;
+  unsigned int tx_under;
+  unsigned int tx_state;
+  int tx_queued;
+  unsigned int maxqueue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int bufsize;
+  unsigned int bufsize;
 };
 struct scc_modem {
- long speed;
+  long speed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char clocksrc;
- char nrz;
+  char clocksrc;
+  char nrz;
 };
 struct scc_kiss_cmd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int command;
- unsigned param;
+  int command;
+  unsigned param;
 };
 struct scc_hw_config {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- io_port data_a;
- io_port ctrl_a;
- io_port data_b;
- io_port ctrl_b;
+  io_port data_a;
+  io_port ctrl_a;
+  io_port data_b;
+  io_port ctrl_b;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- io_port vector_latch;
- io_port special;
- int irq;
- long clock;
+  io_port vector_latch;
+  io_port special;
+  int irq;
+  long clock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char option;
- char brand;
- char escc;
+  char option;
+  char brand;
+  char escc;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct scc_mem_config {
- unsigned int dummy;
- unsigned int bufsize;
+  unsigned int dummy;
+  unsigned int bufsize;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct scc_calibrate {
- unsigned int time;
- unsigned char pattern;
+  unsigned int time;
+  unsigned char pattern;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/screen_info.h b/libc/kernel/uapi/linux/screen_info.h
index e03feef..cfe22fd 100644
--- a/libc/kernel/uapi/linux/screen_info.h
+++ b/libc/kernel/uapi/linux/screen_info.h
@@ -21,48 +21,48 @@
 #include <linux/types.h>
 struct screen_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 orig_x;
- __u8 orig_y;
- __u16 ext_mem_k;
- __u16 orig_video_page;
+  __u8 orig_x;
+  __u8 orig_y;
+  __u16 ext_mem_k;
+  __u16 orig_video_page;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 orig_video_mode;
- __u8 orig_video_cols;
- __u8 flags;
- __u8 unused2;
+  __u8 orig_video_mode;
+  __u8 orig_video_cols;
+  __u8 flags;
+  __u8 unused2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 orig_video_ega_bx;
- __u16 unused3;
- __u8 orig_video_lines;
- __u8 orig_video_isVGA;
+  __u16 orig_video_ega_bx;
+  __u16 unused3;
+  __u8 orig_video_lines;
+  __u8 orig_video_isVGA;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 orig_video_points;
- __u16 lfb_width;
- __u16 lfb_height;
- __u16 lfb_depth;
+  __u16 orig_video_points;
+  __u16 lfb_width;
+  __u16 lfb_height;
+  __u16 lfb_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lfb_base;
- __u32 lfb_size;
- __u16 cl_magic, cl_offset;
- __u16 lfb_linelength;
+  __u32 lfb_base;
+  __u32 lfb_size;
+  __u16 cl_magic, cl_offset;
+  __u16 lfb_linelength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 red_size;
- __u8 red_pos;
- __u8 green_size;
- __u8 green_pos;
+  __u8 red_size;
+  __u8 red_pos;
+  __u8 green_size;
+  __u8 green_pos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 blue_size;
- __u8 blue_pos;
- __u8 rsvd_size;
- __u8 rsvd_pos;
+  __u8 blue_size;
+  __u8 blue_pos;
+  __u8 rsvd_size;
+  __u8 rsvd_pos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 vesapm_seg;
- __u16 vesapm_off;
- __u16 pages;
- __u16 vesa_attributes;
+  __u16 vesapm_seg;
+  __u16 vesapm_off;
+  __u16 pages;
+  __u16 vesa_attributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 capabilities;
- __u8 _reserved[6];
+  __u32 capabilities;
+  __u8 _reserved[6];
 } __attribute__((packed));
 #define VIDEO_TYPE_MDA 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index fe7c376..29e4b9d 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -64,463 +64,511 @@
 #define SCTP_GET_ASSOC_ID_LIST 29
 #define SCTP_AUTO_ASCONF 30
 #define SCTP_PEER_ADDR_THLDS 31
-#define SCTP_SOCKOPT_BINDX_ADD 100
+#define SCTP_RECVRCVINFO 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SCTP_RECVNXTINFO 33
+#define SCTP_DEFAULT_SNDINFO 34
+#define SCTP_SOCKOPT_BINDX_ADD 100
 #define SCTP_SOCKOPT_BINDX_REM 101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_SOCKOPT_PEELOFF 102
 #define SCTP_SOCKOPT_CONNECTX_OLD 107
 #define SCTP_GET_PEER_ADDRS 108
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_GET_LOCAL_ADDRS 109
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_SOCKOPT_CONNECTX 110
 #define SCTP_SOCKOPT_CONNECTX3 111
 #define SCTP_GET_ASSOC_STATS 112
+enum sctp_msg_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSG_NOTIFICATION = 0x8000,
+#define MSG_NOTIFICATION MSG_NOTIFICATION
+};
 struct sctp_initmsg {
- __u16 sinit_num_ostreams;
- __u16 sinit_max_instreams;
- __u16 sinit_max_attempts;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sinit_max_init_timeo;
+  __u16 sinit_num_ostreams;
+  __u16 sinit_max_instreams;
+  __u16 sinit_max_attempts;
+  __u16 sinit_max_init_timeo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct sctp_sndrcvinfo {
- __u16 sinfo_stream;
+  __u16 sinfo_stream;
+  __u16 sinfo_ssn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sinfo_ssn;
- __u16 sinfo_flags;
- __u32 sinfo_ppid;
- __u32 sinfo_context;
+  __u16 sinfo_flags;
+  __u32 sinfo_ppid;
+  __u32 sinfo_context;
+  __u32 sinfo_timetolive;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sinfo_timetolive;
- __u32 sinfo_tsn;
- __u32 sinfo_cumtsn;
- sctp_assoc_t sinfo_assoc_id;
+  __u32 sinfo_tsn;
+  __u32 sinfo_cumtsn;
+  sctp_assoc_t sinfo_assoc_id;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sctp_sndinfo {
+  __u16 snd_sid;
+  __u16 snd_flags;
+  __u32 snd_ppid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 snd_context;
+  sctp_assoc_t snd_assoc_id;
+};
+struct sctp_rcvinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 rcv_sid;
+  __u16 rcv_ssn;
+  __u16 rcv_flags;
+  __u32 rcv_ppid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 rcv_tsn;
+  __u32 rcv_cumtsn;
+  __u32 rcv_context;
+  sctp_assoc_t rcv_assoc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-enum sctp_sinfo_flags {
- SCTP_UNORDERED = 1,
- SCTP_ADDR_OVER = 2,
+struct sctp_nxtinfo {
+  __u16 nxt_sid;
+  __u16 nxt_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_ABORT=4,
- SCTP_SACK_IMMEDIATELY = 8,
- SCTP_EOF=MSG_FIN,
+  __u32 nxt_ppid;
+  __u32 nxt_length;
+  sctp_assoc_t nxt_assoc_id;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum sctp_sinfo_flags {
+  SCTP_UNORDERED = (1 << 0),
+  SCTP_ADDR_OVER = (1 << 1),
+  SCTP_ABORT = (1 << 2),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_SACK_IMMEDIATELY = (1 << 3),
+  SCTP_NOTIFICATION = MSG_NOTIFICATION,
+  SCTP_EOF = MSG_FIN,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union {
- __u8 raw;
- struct sctp_initmsg init;
- struct sctp_sndrcvinfo sndrcv;
+  __u8 raw;
+  struct sctp_initmsg init;
+  struct sctp_sndrcvinfo sndrcv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } sctp_cmsg_data_t;
 typedef enum sctp_cmsg_type {
- SCTP_INIT,
+  SCTP_INIT,
 #define SCTP_INIT SCTP_INIT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_SNDRCV,
+  SCTP_SNDRCV,
 #define SCTP_SNDRCV SCTP_SNDRCV
+  SCTP_SNDINFO,
+#define SCTP_SNDINFO SCTP_SNDINFO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_RCVINFO,
+#define SCTP_RCVINFO SCTP_RCVINFO
+  SCTP_NXTINFO,
+#define SCTP_NXTINFO SCTP_NXTINFO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } sctp_cmsg_t;
 struct sctp_assoc_change {
+  __u16 sac_type;
+  __u16 sac_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sac_type;
- __u16 sac_flags;
- __u32 sac_length;
- __u16 sac_state;
+  __u32 sac_length;
+  __u16 sac_state;
+  __u16 sac_error;
+  __u16 sac_outbound_streams;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sac_error;
- __u16 sac_outbound_streams;
- __u16 sac_inbound_streams;
- sctp_assoc_t sac_assoc_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sac_info[0];
+  __u16 sac_inbound_streams;
+  sctp_assoc_t sac_assoc_id;
+  __u8 sac_info[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum sctp_sac_state {
- SCTP_COMM_UP,
+  SCTP_COMM_UP,
+  SCTP_COMM_LOST,
+  SCTP_RESTART,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_COMM_LOST,
- SCTP_RESTART,
- SCTP_SHUTDOWN_COMP,
- SCTP_CANT_STR_ASSOC,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_SHUTDOWN_COMP,
+  SCTP_CANT_STR_ASSOC,
 };
 struct sctp_paddr_change {
- __u16 spc_type;
- __u16 spc_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spc_length;
- struct sockaddr_storage spc_aaddr;
- int spc_state;
- int spc_error;
+  __u16 spc_type;
+  __u16 spc_flags;
+  __u32 spc_length;
+  struct sockaddr_storage spc_aaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- sctp_assoc_t spc_assoc_id;
+  int spc_state;
+  int spc_error;
+  sctp_assoc_t spc_assoc_id;
 } __attribute__((packed, aligned(4)));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum sctp_spc_state {
- SCTP_ADDR_AVAILABLE,
+  SCTP_ADDR_AVAILABLE,
+  SCTP_ADDR_UNREACHABLE,
+  SCTP_ADDR_REMOVED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_ADDR_UNREACHABLE,
- SCTP_ADDR_REMOVED,
- SCTP_ADDR_ADDED,
- SCTP_ADDR_MADE_PRIM,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_ADDR_CONFIRMED,
+  SCTP_ADDR_ADDED,
+  SCTP_ADDR_MADE_PRIM,
+  SCTP_ADDR_CONFIRMED,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_remote_error {
- __u16 sre_type;
+  __u16 sre_type;
+  __u16 sre_flags;
+  __u32 sre_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sre_flags;
- __u32 sre_length;
- __u16 sre_error;
- sctp_assoc_t sre_assoc_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sre_data[0];
+  __u16 sre_error;
+  sctp_assoc_t sre_assoc_id;
+  __u8 sre_data[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_send_failed {
- __u16 ssf_type;
+  __u16 ssf_type;
+  __u16 ssf_flags;
+  __u32 ssf_length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 ssf_flags;
- __u32 ssf_length;
- __u32 ssf_error;
- struct sctp_sndrcvinfo ssf_info;
+  __u32 ssf_error;
+  struct sctp_sndrcvinfo ssf_info;
+  sctp_assoc_t ssf_assoc_id;
+  __u8 ssf_data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- sctp_assoc_t ssf_assoc_id;
- __u8 ssf_data[0];
 };
 enum sctp_ssf_flags {
+  SCTP_DATA_UNSENT,
+  SCTP_DATA_SENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_DATA_UNSENT,
- SCTP_DATA_SENT,
 };
 struct sctp_shutdown_event {
+  __u16 sse_type;
+  __u16 sse_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sse_type;
- __u16 sse_flags;
- __u32 sse_length;
- sctp_assoc_t sse_assoc_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 sse_length;
+  sctp_assoc_t sse_assoc_id;
 };
 struct sctp_adaptation_event {
- __u16 sai_type;
- __u16 sai_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sai_length;
- __u32 sai_adaptation_ind;
- sctp_assoc_t sai_assoc_id;
+  __u16 sai_type;
+  __u16 sai_flags;
+  __u32 sai_length;
+  __u32 sai_adaptation_ind;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sctp_assoc_t sai_assoc_id;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_pdapi_event {
- __u16 pdapi_type;
- __u16 pdapi_flags;
- __u32 pdapi_length;
+  __u16 pdapi_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pdapi_indication;
- sctp_assoc_t pdapi_assoc_id;
-};
-enum { SCTP_PARTIAL_DELIVERY_ABORTED=0, };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct sctp_authkey_event {
- __u16 auth_type;
- __u16 auth_flags;
- __u32 auth_length;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 auth_keynumber;
- __u16 auth_altkeynumber;
- __u32 auth_indication;
- sctp_assoc_t auth_assoc_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum { SCTP_AUTH_NEWKEY = 0, };
-struct sctp_sender_dry_event {
- __u16 sender_dry_type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sender_dry_flags;
- __u32 sender_dry_length;
- sctp_assoc_t sender_dry_assoc_id;
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct sctp_event_subscribe {
- __u8 sctp_data_io_event;
- __u8 sctp_association_event;
- __u8 sctp_address_event;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sctp_send_failure_event;
- __u8 sctp_peer_error_event;
- __u8 sctp_shutdown_event;
- __u8 sctp_partial_delivery_event;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sctp_adaptation_layer_event;
- __u8 sctp_authentication_event;
- __u8 sctp_sender_dry_event;
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-union sctp_notification {
- struct {
- __u16 sn_type;
- __u16 sn_flags;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sn_length;
- } sn_header;
- struct sctp_assoc_change sn_assoc_change;
- struct sctp_paddr_change sn_paddr_change;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sctp_remote_error sn_remote_error;
- struct sctp_send_failed sn_send_failed;
- struct sctp_shutdown_event sn_shutdown_event;
- struct sctp_adaptation_event sn_adaptation_event;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sctp_pdapi_event sn_pdapi_event;
- struct sctp_authkey_event sn_authkey_event;
- struct sctp_sender_dry_event sn_sender_dry_event;
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum sctp_sn_type {
- SCTP_SN_TYPE_BASE = (1<<15),
- SCTP_ASSOC_CHANGE,
-#define SCTP_ASSOC_CHANGE SCTP_ASSOC_CHANGE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_PEER_ADDR_CHANGE,
-#define SCTP_PEER_ADDR_CHANGE SCTP_PEER_ADDR_CHANGE
- SCTP_SEND_FAILED,
-#define SCTP_SEND_FAILED SCTP_SEND_FAILED
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_REMOTE_ERROR,
-#define SCTP_REMOTE_ERROR SCTP_REMOTE_ERROR
- SCTP_SHUTDOWN_EVENT,
-#define SCTP_SHUTDOWN_EVENT SCTP_SHUTDOWN_EVENT
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_PARTIAL_DELIVERY_EVENT,
-#define SCTP_PARTIAL_DELIVERY_EVENT SCTP_PARTIAL_DELIVERY_EVENT
- SCTP_ADAPTATION_INDICATION,
-#define SCTP_ADAPTATION_INDICATION SCTP_ADAPTATION_INDICATION
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_AUTHENTICATION_EVENT,
-#define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT
- SCTP_SENDER_DRY_EVENT,
-#define SCTP_SENDER_DRY_EVENT SCTP_SENDER_DRY_EVENT
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-typedef enum sctp_sn_error {
- SCTP_FAILED_THRESHOLD,
- SCTP_RECEIVED_SACK,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_HEARTBEAT_SUCCESS,
- SCTP_RESPONSE_TO_USER_REQ,
- SCTP_INTERNAL_ERROR,
- SCTP_SHUTDOWN_GUARD_EXPIRES,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_PEER_FAULTY,
-} sctp_sn_error_t;
-struct sctp_rtoinfo {
- sctp_assoc_t srto_assoc_id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 srto_initial;
- __u32 srto_max;
- __u32 srto_min;
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct sctp_assocparams {
- sctp_assoc_t sasoc_assoc_id;
- __u16 sasoc_asocmaxrxt;
- __u16 sasoc_number_peer_destinations;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sasoc_peer_rwnd;
- __u32 sasoc_local_rwnd;
- __u32 sasoc_cookie_life;
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct sctp_setpeerprim {
- sctp_assoc_t sspp_assoc_id;
- struct sockaddr_storage sspp_addr;
-} __attribute__((packed, aligned(4)));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct sctp_prim {
- sctp_assoc_t ssp_assoc_id;
- struct sockaddr_storage ssp_addr;
-} __attribute__((packed, aligned(4)));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define sctp_setprim sctp_prim
-struct sctp_setadaptation {
- __u32 ssb_adaptation_ind;
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum sctp_spp_flags {
- SPP_HB_ENABLE = 1<<0,
- SPP_HB_DISABLE = 1<<1,
- SPP_HB = SPP_HB_ENABLE | SPP_HB_DISABLE,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SPP_HB_DEMAND = 1<<2,
- SPP_PMTUD_ENABLE = 1<<3,
- SPP_PMTUD_DISABLE = 1<<4,
- SPP_PMTUD = SPP_PMTUD_ENABLE | SPP_PMTUD_DISABLE,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SPP_SACKDELAY_ENABLE = 1<<5,
- SPP_SACKDELAY_DISABLE = 1<<6,
- SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE,
- SPP_HB_TIME_IS_ZERO = 1<<7,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-struct sctp_paddrparams {
- sctp_assoc_t spp_assoc_id;
- struct sockaddr_storage spp_address;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spp_hbinterval;
- __u16 spp_pathmaxrxt;
- __u32 spp_pathmtu;
- __u32 spp_sackdelay;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spp_flags;
-} __attribute__((packed, aligned(4)));
-struct sctp_authchunk {
- __u8 sauth_chunk;
+  __u16 pdapi_flags;
+  __u32 pdapi_length;
+  __u32 pdapi_indication;
+  sctp_assoc_t pdapi_assoc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- SCTP_AUTH_HMAC_ID_SHA1 = 1,
- SCTP_AUTH_HMAC_ID_SHA256 = 3,
+  SCTP_PARTIAL_DELIVERY_ABORTED = 0,
+};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sctp_authkey_event {
+  __u16 auth_type;
+  __u16 auth_flags;
+  __u32 auth_length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 auth_keynumber;
+  __u16 auth_altkeynumber;
+  __u32 auth_indication;
+  sctp_assoc_t auth_assoc_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  SCTP_AUTH_NEWKEY = 0,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sctp_sender_dry_event {
+  __u16 sender_dry_type;
+  __u16 sender_dry_flags;
+  __u32 sender_dry_length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sctp_assoc_t sender_dry_assoc_id;
+};
+struct sctp_event_subscribe {
+  __u8 sctp_data_io_event;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 sctp_association_event;
+  __u8 sctp_address_event;
+  __u8 sctp_send_failure_event;
+  __u8 sctp_peer_error_event;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 sctp_shutdown_event;
+  __u8 sctp_partial_delivery_event;
+  __u8 sctp_adaptation_layer_event;
+  __u8 sctp_authentication_event;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 sctp_sender_dry_event;
+};
+union sctp_notification {
+  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u16 sn_type;
+    __u16 sn_flags;
+    __u32 sn_length;
+  } sn_header;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct sctp_assoc_change sn_assoc_change;
+  struct sctp_paddr_change sn_paddr_change;
+  struct sctp_remote_error sn_remote_error;
+  struct sctp_send_failed sn_send_failed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct sctp_shutdown_event sn_shutdown_event;
+  struct sctp_adaptation_event sn_adaptation_event;
+  struct sctp_pdapi_event sn_pdapi_event;
+  struct sctp_authkey_event sn_authkey_event;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct sctp_sender_dry_event sn_sender_dry_event;
+};
+enum sctp_sn_type {
+  SCTP_SN_TYPE_BASE = (1 << 15),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_ASSOC_CHANGE,
+#define SCTP_ASSOC_CHANGE SCTP_ASSOC_CHANGE
+  SCTP_PEER_ADDR_CHANGE,
+#define SCTP_PEER_ADDR_CHANGE SCTP_PEER_ADDR_CHANGE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_SEND_FAILED,
+#define SCTP_SEND_FAILED SCTP_SEND_FAILED
+  SCTP_REMOTE_ERROR,
+#define SCTP_REMOTE_ERROR SCTP_REMOTE_ERROR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_SHUTDOWN_EVENT,
+#define SCTP_SHUTDOWN_EVENT SCTP_SHUTDOWN_EVENT
+  SCTP_PARTIAL_DELIVERY_EVENT,
+#define SCTP_PARTIAL_DELIVERY_EVENT SCTP_PARTIAL_DELIVERY_EVENT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_ADAPTATION_INDICATION,
+#define SCTP_ADAPTATION_INDICATION SCTP_ADAPTATION_INDICATION
+  SCTP_AUTHENTICATION_EVENT,
+#define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_SENDER_DRY_EVENT,
+#define SCTP_SENDER_DRY_EVENT SCTP_SENDER_DRY_EVENT
+};
+typedef enum sctp_sn_error {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_FAILED_THRESHOLD,
+  SCTP_RECEIVED_SACK,
+  SCTP_HEARTBEAT_SUCCESS,
+  SCTP_RESPONSE_TO_USER_REQ,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_INTERNAL_ERROR,
+  SCTP_SHUTDOWN_GUARD_EXPIRES,
+  SCTP_PEER_FAULTY,
+} sctp_sn_error_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sctp_rtoinfo {
+  sctp_assoc_t srto_assoc_id;
+  __u32 srto_initial;
+  __u32 srto_max;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 srto_min;
+};
+struct sctp_assocparams {
+  sctp_assoc_t sasoc_assoc_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 sasoc_asocmaxrxt;
+  __u16 sasoc_number_peer_destinations;
+  __u32 sasoc_peer_rwnd;
+  __u32 sasoc_local_rwnd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 sasoc_cookie_life;
+};
+struct sctp_setpeerprim {
+  sctp_assoc_t sspp_assoc_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct sockaddr_storage sspp_addr;
+} __attribute__((packed, aligned(4)));
+struct sctp_prim {
+  sctp_assoc_t ssp_assoc_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct sockaddr_storage ssp_addr;
+} __attribute__((packed, aligned(4)));
+#define sctp_setprim sctp_prim
+struct sctp_setadaptation {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 ssb_adaptation_ind;
+};
+enum sctp_spp_flags {
+  SPP_HB_ENABLE = 1 << 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SPP_HB_DISABLE = 1 << 1,
+  SPP_HB = SPP_HB_ENABLE | SPP_HB_DISABLE,
+  SPP_HB_DEMAND = 1 << 2,
+  SPP_PMTUD_ENABLE = 1 << 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SPP_PMTUD_DISABLE = 1 << 4,
+  SPP_PMTUD = SPP_PMTUD_ENABLE | SPP_PMTUD_DISABLE,
+  SPP_SACKDELAY_ENABLE = 1 << 5,
+  SPP_SACKDELAY_DISABLE = 1 << 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE,
+  SPP_HB_TIME_IS_ZERO = 1 << 7,
+};
+struct sctp_paddrparams {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sctp_assoc_t spp_assoc_id;
+  struct sockaddr_storage spp_address;
+  __u32 spp_hbinterval;
+  __u16 spp_pathmaxrxt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 spp_pathmtu;
+  __u32 spp_sackdelay;
+  __u32 spp_flags;
+} __attribute__((packed, aligned(4)));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sctp_authchunk {
+  __u8 sauth_chunk;
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_AUTH_HMAC_ID_SHA1 = 1,
+  SCTP_AUTH_HMAC_ID_SHA256 = 3,
 };
 struct sctp_hmacalgo {
- __u32 shmac_num_idents;
- __u16 shmac_idents[];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 shmac_num_idents;
+  __u16 shmac_idents[];
 };
 #define shmac_number_of_idents shmac_num_idents
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_authkey {
- sctp_assoc_t sca_assoc_id;
+  sctp_assoc_t sca_assoc_id;
+  __u16 sca_keynumber;
+  __u16 sca_keylength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sca_keynumber;
- __u16 sca_keylength;
- __u8 sca_key[];
+  __u8 sca_key[];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_authkeyid {
- sctp_assoc_t scact_assoc_id;
- __u16 scact_keynumber;
+  sctp_assoc_t scact_assoc_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 scact_keynumber;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_sack_info {
- sctp_assoc_t sack_assoc_id;
- uint32_t sack_delay;
- uint32_t sack_freq;
+  sctp_assoc_t sack_assoc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t sack_delay;
+  uint32_t sack_freq;
 };
 struct sctp_assoc_value {
- sctp_assoc_t assoc_id;
- uint32_t assoc_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sctp_assoc_t assoc_id;
+  uint32_t assoc_value;
 };
 struct sctp_paddrinfo {
- sctp_assoc_t spinfo_assoc_id;
- struct sockaddr_storage spinfo_address;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 spinfo_state;
- __u32 spinfo_cwnd;
- __u32 spinfo_srtt;
- __u32 spinfo_rto;
+  sctp_assoc_t spinfo_assoc_id;
+  struct sockaddr_storage spinfo_address;
+  __s32 spinfo_state;
+  __u32 spinfo_cwnd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 spinfo_mtu;
+  __u32 spinfo_srtt;
+  __u32 spinfo_rto;
+  __u32 spinfo_mtu;
 } __attribute__((packed, aligned(4)));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum sctp_spinfo_state {
- SCTP_INACTIVE,
+  SCTP_INACTIVE,
+  SCTP_PF,
+  SCTP_ACTIVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_PF,
- SCTP_ACTIVE,
- SCTP_UNCONFIRMED,
- SCTP_UNKNOWN = 0xffff
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_UNCONFIRMED,
+  SCTP_UNKNOWN = 0xffff
 };
 struct sctp_status {
- sctp_assoc_t sstat_assoc_id;
- __s32 sstat_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sstat_rwnd;
- __u16 sstat_unackdata;
- __u16 sstat_penddata;
- __u16 sstat_instrms;
+  sctp_assoc_t sstat_assoc_id;
+  __s32 sstat_state;
+  __u32 sstat_rwnd;
+  __u16 sstat_unackdata;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sstat_outstrms;
- __u32 sstat_fragmentation_point;
- struct sctp_paddrinfo sstat_primary;
+  __u16 sstat_penddata;
+  __u16 sstat_instrms;
+  __u16 sstat_outstrms;
+  __u32 sstat_fragmentation_point;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct sctp_paddrinfo sstat_primary;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_authchunks {
- sctp_assoc_t gauth_assoc_id;
- __u32 gauth_number_of_chunks;
- uint8_t gauth_chunks[];
+  sctp_assoc_t gauth_assoc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 gauth_number_of_chunks;
+  uint8_t gauth_chunks[];
 };
 #define guth_number_of_chunks gauth_number_of_chunks
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum sctp_sstat_state {
- SCTP_EMPTY = 0,
+  SCTP_EMPTY = 0,
+  SCTP_CLOSED = 1,
+  SCTP_COOKIE_WAIT = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_CLOSED = 1,
- SCTP_COOKIE_WAIT = 2,
- SCTP_COOKIE_ECHOED = 3,
- SCTP_ESTABLISHED = 4,
+  SCTP_COOKIE_ECHOED = 3,
+  SCTP_ESTABLISHED = 4,
+  SCTP_SHUTDOWN_PENDING = 5,
+  SCTP_SHUTDOWN_SENT = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SCTP_SHUTDOWN_PENDING = 5,
- SCTP_SHUTDOWN_SENT = 6,
- SCTP_SHUTDOWN_RECEIVED = 7,
- SCTP_SHUTDOWN_ACK_SENT = 8,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SCTP_SHUTDOWN_RECEIVED = 7,
+  SCTP_SHUTDOWN_ACK_SENT = 8,
 };
 struct sctp_assoc_ids {
- __u32 gaids_number_of_ids;
- sctp_assoc_t gaids_assoc_id[];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 gaids_number_of_ids;
+  sctp_assoc_t gaids_assoc_id[];
 };
 struct sctp_getaddrs_old {
- sctp_assoc_t assoc_id;
- int addr_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr *addrs;
+  sctp_assoc_t assoc_id;
+  int addr_num;
+  struct sockaddr * addrs;
 };
-struct sctp_getaddrs {
- sctp_assoc_t assoc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 addr_num;
- __u8 addrs[0];
+struct sctp_getaddrs {
+  sctp_assoc_t assoc_id;
+  __u32 addr_num;
+  __u8 addrs[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct sctp_assoc_stats {
+  sctp_assoc_t sas_assoc_id;
+  struct sockaddr_storage sas_obs_rto_ipaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- sctp_assoc_t sas_assoc_id;
- struct sockaddr_storage sas_obs_rto_ipaddr;
- __u64 sas_maxrto;
- __u64 sas_isacks;
+  __u64 sas_maxrto;
+  __u64 sas_isacks;
+  __u64 sas_osacks;
+  __u64 sas_opackets;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sas_osacks;
- __u64 sas_opackets;
- __u64 sas_ipackets;
- __u64 sas_rtxchunks;
+  __u64 sas_ipackets;
+  __u64 sas_rtxchunks;
+  __u64 sas_outofseqtsns;
+  __u64 sas_idupchunks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sas_outofseqtsns;
- __u64 sas_idupchunks;
- __u64 sas_gapcnt;
- __u64 sas_ouodchunks;
+  __u64 sas_gapcnt;
+  __u64 sas_ouodchunks;
+  __u64 sas_iuodchunks;
+  __u64 sas_oodchunks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sas_iuodchunks;
- __u64 sas_oodchunks;
- __u64 sas_iodchunks;
- __u64 sas_octrlchunks;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 sas_ictrlchunks;
+  __u64 sas_iodchunks;
+  __u64 sas_octrlchunks;
+  __u64 sas_ictrlchunks;
 };
-enum sctp_msg_flags {
- MSG_NOTIFICATION = 0x8000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MSG_NOTIFICATION MSG_NOTIFICATION
-};
 #define SCTP_BINDX_ADD_ADDR 0x01
 #define SCTP_BINDX_REM_ADDR 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- sctp_assoc_t associd;
- int sd;
+  sctp_assoc_t associd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int sd;
 } sctp_peeloff_arg_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sctp_paddrthlds {
- sctp_assoc_t spt_assoc_id;
- struct sockaddr_storage spt_address;
- __u16 spt_pathmaxrxt;
+  sctp_assoc_t spt_assoc_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 spt_pathpfthld;
+  struct sockaddr_storage spt_address;
+  __u16 spt_pathmaxrxt;
+  __u16 spt_pathpfthld;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/sdla.h b/libc/kernel/uapi/linux/sdla.h
index ae5d161..bd957b4 100644
--- a/libc/kernel/uapi/linux/sdla.h
+++ b/libc/kernel/uapi/linux/sdla.h
@@ -27,7 +27,7 @@
 #define SDLA_S508 5080
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SDLA_S509 5090
-#define SDLA_UNKNOWN -1
+#define SDLA_UNKNOWN - 1
 #define SDLA_S508_PORT_V35 0x00
 #define SDLA_S508_PORT_RS232 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -48,10 +48,10 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SDLA_READMEM (FRAD_LAST_IOCTL + 6)
 struct sdla_mem {
- int addr;
- int len;
+  int addr;
+  int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *data;
+  void __user * data;
 };
 #define SDLA_START (FRAD_LAST_IOCTL + 7)
 #define SDLA_STOP (FRAD_LAST_IOCTL + 8)
@@ -68,42 +68,42 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SDLA_MAX_DLCI 24
 struct sdla_conf {
- short station;
- short config;
+  short station;
+  short config;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short kbaud;
- short clocking;
- short max_frm;
- short T391;
+  short kbaud;
+  short clocking;
+  short max_frm;
+  short T391;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short T392;
- short N391;
- short N392;
- short N393;
+  short T392;
+  short N391;
+  short N392;
+  short N393;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short CIR_fwd;
- short Bc_fwd;
- short Be_fwd;
- short CIR_bwd;
+  short CIR_fwd;
+  short Bc_fwd;
+  short Be_fwd;
+  short CIR_bwd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short Bc_bwd;
- short Be_bwd;
+  short Bc_bwd;
+  short Be_bwd;
 };
 struct sdla_dlci_conf {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short config;
- short CIR_fwd;
- short Bc_fwd;
- short Be_fwd;
+  short config;
+  short CIR_fwd;
+  short Bc_fwd;
+  short Be_fwd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short CIR_bwd;
- short Bc_bwd;
- short Be_bwd;
- short Tc_fwd;
+  short CIR_bwd;
+  short Bc_bwd;
+  short Be_bwd;
+  short Tc_fwd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short Tc_bwd;
- short Tf_max;
- short Tb_max;
+  short Tc_bwd;
+  short Tf_max;
+  short Tb_max;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/seccomp.h b/libc/kernel/uapi/linux/seccomp.h
index 907895e..7c0a51a 100644
--- a/libc/kernel/uapi/linux/seccomp.h
+++ b/libc/kernel/uapi/linux/seccomp.h
@@ -24,21 +24,25 @@
 #define SECCOMP_MODE_DISABLED 0
 #define SECCOMP_MODE_STRICT 1
 #define SECCOMP_MODE_FILTER 2
-#define SECCOMP_RET_KILL 0x00000000U
+#define SECCOMP_SET_MODE_STRICT 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SECCOMP_SET_MODE_FILTER 1
+#define SECCOMP_FILTER_FLAG_TSYNC 1
+#define SECCOMP_RET_KILL 0x00000000U
 #define SECCOMP_RET_TRAP 0x00030000U
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SECCOMP_RET_ERRNO 0x00050000U
 #define SECCOMP_RET_TRACE 0x7ff00000U
 #define SECCOMP_RET_ALLOW 0x7fff0000U
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SECCOMP_RET_ACTION 0x7fff0000U
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SECCOMP_RET_DATA 0x0000ffffU
 struct seccomp_data {
- int nr;
+  int nr;
+  __u32 arch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 arch;
- __u64 instruction_pointer;
- __u64 args[6];
+  __u64 instruction_pointer;
+  __u64 args[6];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/securebits.h b/libc/kernel/uapi/linux/securebits.h
index a28abe8..a644d5a 100644
--- a/libc/kernel/uapi/linux/securebits.h
+++ b/libc/kernel/uapi/linux/securebits.h
@@ -29,13 +29,13 @@
 #define SECURE_NO_SETUID_FIXUP 2
 #define SECURE_NO_SETUID_FIXUP_LOCKED 3
 #define SECBIT_NO_SETUID_FIXUP (issecure_mask(SECURE_NO_SETUID_FIXUP))
-#define SECBIT_NO_SETUID_FIXUP_LOCKED   (issecure_mask(SECURE_NO_SETUID_FIXUP_LOCKED))
+#define SECBIT_NO_SETUID_FIXUP_LOCKED (issecure_mask(SECURE_NO_SETUID_FIXUP_LOCKED))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SECURE_KEEP_CAPS 4
 #define SECURE_KEEP_CAPS_LOCKED 5
 #define SECBIT_KEEP_CAPS (issecure_mask(SECURE_KEEP_CAPS))
 #define SECBIT_KEEP_CAPS_LOCKED (issecure_mask(SECURE_KEEP_CAPS_LOCKED))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SECURE_ALL_BITS (issecure_mask(SECURE_NOROOT) |   issecure_mask(SECURE_NO_SETUID_FIXUP) |   issecure_mask(SECURE_KEEP_CAPS))
+#define SECURE_ALL_BITS (issecure_mask(SECURE_NOROOT) | issecure_mask(SECURE_NO_SETUID_FIXUP) | issecure_mask(SECURE_KEEP_CAPS))
 #define SECURE_ALL_LOCKS (SECURE_ALL_BITS << 1)
 #endif
diff --git a/libc/kernel/uapi/linux/selinux_netlink.h b/libc/kernel/uapi/linux/selinux_netlink.h
index c5ddd2b..8e462c9 100644
--- a/libc/kernel/uapi/linux/selinux_netlink.h
+++ b/libc/kernel/uapi/linux/selinux_netlink.h
@@ -22,9 +22,9 @@
 #define SELNL_MSG_BASE 0x10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SELNL_MSG_SETENFORCE = SELNL_MSG_BASE,
- SELNL_MSG_POLICYLOAD,
- SELNL_MSG_MAX
+  SELNL_MSG_SETENFORCE = SELNL_MSG_BASE,
+  SELNL_MSG_POLICYLOAD,
+  SELNL_MSG_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SELNL_GRP_NONE 0x00000000
@@ -32,20 +32,20 @@
 #define SELNL_GRP_ALL 0xffffffff
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum selinux_nlgroups {
- SELNLGRP_NONE,
+  SELNLGRP_NONE,
 #define SELNLGRP_NONE SELNLGRP_NONE
- SELNLGRP_AVC,
+  SELNLGRP_AVC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SELNLGRP_AVC SELNLGRP_AVC
- __SELNLGRP_MAX
+  __SELNLGRP_MAX
 };
 #define SELNLGRP_MAX (__SELNLGRP_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct selnl_msg_setenforce {
- __s32 val;
+  __s32 val;
 };
 struct selnl_msg_policyload {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 seqno;
+  __u32 seqno;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/sem.h b/libc/kernel/uapi/linux/sem.h
index 88b2f19..04909d5 100644
--- a/libc/kernel/uapi/linux/sem.h
+++ b/libc/kernel/uapi/linux/sem.h
@@ -33,52 +33,52 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEM_INFO 19
 struct semid_ds {
- struct ipc_perm sem_perm;
- __kernel_time_t sem_otime;
+  struct ipc_perm sem_perm;
+  __kernel_time_t sem_otime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t sem_ctime;
- struct sem *sem_base;
- struct sem_queue *sem_pending;
- struct sem_queue **sem_pending_last;
+  __kernel_time_t sem_ctime;
+  struct sem * sem_base;
+  struct sem_queue * sem_pending;
+  struct sem_queue * * sem_pending_last;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sem_undo *undo;
- unsigned short sem_nsems;
+  struct sem_undo * undo;
+  unsigned short sem_nsems;
 };
 #include <asm/sembuf.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sembuf {
- unsigned short sem_num;
- short sem_op;
- short sem_flg;
+  unsigned short sem_num;
+  short sem_op;
+  short sem_flg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 union semun {
- int val;
- struct semid_ds __user *buf;
+  int val;
+  struct semid_ds __user * buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short __user *array;
- struct seminfo __user *__buf;
- void __user *__pad;
+  unsigned short __user * array;
+  struct seminfo __user * __buf;
+  void __user * __pad;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct seminfo {
- int semmap;
- int semmni;
- int semmns;
+  int semmap;
+  int semmni;
+  int semmns;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int semmnu;
- int semmsl;
- int semopm;
- int semume;
+  int semmnu;
+  int semmsl;
+  int semopm;
+  int semume;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int semusz;
- int semvmx;
- int semaem;
+  int semusz;
+  int semvmx;
+  int semaem;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMMNI 128
 #define SEMMSL 250
-#define SEMMNS (SEMMNI*SEMMSL)
+#define SEMMNS (SEMMNI * SEMMSL)
 #define SEMOPM 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMVMX 32767
diff --git a/libc/kernel/uapi/linux/serial.h b/libc/kernel/uapi/linux/serial.h
index e622682..300176b 100644
--- a/libc/kernel/uapi/linux/serial.h
+++ b/libc/kernel/uapi/linux/serial.h
@@ -22,28 +22,28 @@
 #include <linux/tty_flags.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct serial_struct {
- int type;
- int line;
- unsigned int port;
+  int type;
+  int line;
+  unsigned int port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int irq;
- int flags;
- int xmit_fifo_size;
- int custom_divisor;
+  int irq;
+  int flags;
+  int xmit_fifo_size;
+  int custom_divisor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int baud_base;
- unsigned short close_delay;
- char io_type;
- char reserved_char[1];
+  int baud_base;
+  unsigned short close_delay;
+  char io_type;
+  char reserved_char[1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int hub6;
- unsigned short closing_wait;
- unsigned short closing_wait2;
- unsigned char *iomem_base;
+  int hub6;
+  unsigned short closing_wait;
+  unsigned short closing_wait2;
+  unsigned char * iomem_base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short iomem_reg_shift;
- unsigned int port_high;
- unsigned long iomap_base;
+  unsigned short iomem_reg_shift;
+  unsigned int port_high;
+  unsigned long iomap_base;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASYNC_CLOSING_WAIT_INF 0
@@ -77,40 +77,40 @@
 #define UART_NATSEMI 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct serial_multiport_struct {
- int irq;
- int port1;
- unsigned char mask1, match1;
+  int irq;
+  int port1;
+  unsigned char mask1, match1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int port2;
- unsigned char mask2, match2;
- int port3;
- unsigned char mask3, match3;
+  int port2;
+  unsigned char mask2, match2;
+  int port3;
+  unsigned char mask3, match3;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int port4;
- unsigned char mask4, match4;
- int port_monitor;
- int reserved[32];
+  int port4;
+  unsigned char mask4, match4;
+  int port_monitor;
+  int reserved[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct serial_icounter_struct {
- int cts, dsr, rng, dcd;
- int rx, tx;
+  int cts, dsr, rng, dcd;
+  int rx, tx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int frame, overrun, parity, brk;
- int buf_overrun;
- int reserved[9];
+  int frame, overrun, parity, brk;
+  int buf_overrun;
+  int reserved[9];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct serial_rs485 {
- __u32 flags;
+  __u32 flags;
 #define SER_RS485_ENABLED (1 << 0)
 #define SER_RS485_RTS_ON_SEND (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
- __u32 delay_rts_before_send;
- __u32 delay_rts_after_send;
+  __u32 delay_rts_before_send;
+  __u32 delay_rts_after_send;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 padding[5];
+  __u32 padding[5];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index 59fc32a..e310f8d 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -143,4 +143,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_ASC 105
 #define PORT_TILEGX 106
+#define PORT_MEN_Z135 107
+#define PORT_SC16IS7XX 108
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PORT_MESON 109
 #endif
diff --git a/libc/kernel/uapi/linux/serial_reg.h b/libc/kernel/uapi/linux/serial_reg.h
index 1b0bada..f68c54b 100644
--- a/libc/kernel/uapi/linux/serial_reg.h
+++ b/libc/kernel/uapi/linux/serial_reg.h
@@ -31,7 +31,7 @@
 #define UART_IIR 2
 #define UART_IIR_NO_INT 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define UART_IIR_ID 0x06
+#define UART_IIR_ID 0x0e
 #define UART_IIR_MSI 0x00
 #define UART_IIR_THRI 0x02
 #define UART_IIR_RDI 0x04
@@ -76,239 +76,243 @@
 #define UART_FCR6_T_TRIGGER_30 0x30
 #define UART_FCR7_64BYTE 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_FCR_R_TRIG_SHIFT 6
+#define UART_FCR_R_TRIG_BITS(x) (((x) & UART_FCR_TRIGGER_MASK) >> UART_FCR_R_TRIG_SHIFT)
+#define UART_FCR_R_TRIG_MAX_STATE 4
 #define UART_LCR 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_DLAB 0x80
 #define UART_LCR_SBC 0x40
 #define UART_LCR_SPAR 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_EPAR 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_PARITY 0x08
 #define UART_LCR_STOP 0x04
 #define UART_LCR_WLEN5 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_WLEN6 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_WLEN7 0x02
 #define UART_LCR_WLEN8 0x03
 #define UART_LCR_CONF_MODE_A UART_LCR_DLAB
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_CONF_MODE_B 0xBF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR 4
 #define UART_MCR_CLKSEL 0x80
 #define UART_MCR_TCRTLR 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR_XONANY 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR_AFE 0x20
 #define UART_MCR_LOOP 0x10
 #define UART_MCR_OUT2 0x08
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR_OUT1 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR_RTS 0x02
 #define UART_MCR_DTR 0x01
 #define UART_LSR 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LSR_FIFOE 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LSR_TEMT 0x40
 #define UART_LSR_THRE 0x20
 #define UART_LSR_BI 0x10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LSR_FE 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LSR_BRK_ERROR_BITS 0x1E
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MSR_DSR 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MSR_CTS 0x10
 #define UART_MSR_DDCD 0x08
 #define UART_MSR_TERI 0x04
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MSR_DDSR 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MSR_DCTS 0x01
 #define UART_MSR_ANY_DELTA 0x0F
 #define UART_SCR 7
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_DLL 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_DLM 1
 #define UART_EFR 2
 #define UART_XR_EFR 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_EFR_CTS 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_EFR_RTS 0x40
 #define UART_EFR_SCD 0x20
 #define UART_EFR_ECB 0x10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_XON1 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_XON2 5
 #define UART_XOFF1 6
 #define UART_XOFF2 7
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TI752_TCR 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TI752_TLR 7
 #define UART_TRG 0
 #define UART_TRG_1 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TRG_4 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TRG_8 0x08
 #define UART_TRG_16 0x10
 #define UART_TRG_32 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TRG_64 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TRG_96 0x60
 #define UART_TRG_120 0x78
 #define UART_TRG_128 0x80
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_RTS_NODELAY 0x00
 #define UART_FCTR_RTS_4DELAY 0x01
 #define UART_FCTR_RTS_6DELAY 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_RTS_8DELAY 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_IRDA 0x04
 #define UART_FCTR_TX_INT 0x08
 #define UART_FCTR_TRGA 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_TRGB 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_TRGC 0x20
 #define UART_FCTR_TRGD 0x30
 #define UART_FCTR_SCR_SWAP 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_RX 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_TX 0x80
 #define UART_EMSR 7
 #define UART_EMSR_FIFO_COUNT 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_EMSR_ALT_COUNT 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IER_DMAE 0x80
 #define UART_IER_UUE 0x40
 #define UART_IER_NRZE 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IER_RTOIE 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IIR_TOD 0x08
 #define UART_FCR_PXAR1 0x00
 #define UART_FCR_PXAR8 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_PXAR16 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_PXAR32 0xc0
 #define UART_FCR_HSU_64_1B 0x00
 #define UART_FCR_HSU_64_16B 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_HSU_64_32B 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_HSU_64_56B 0xc0
 #define UART_FCR_HSU_16_1B 0x00
 #define UART_FCR_HSU_16_4B 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_HSU_16_8B 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_HSU_16_14B 0xc0
 #define UART_FCR_HSU_64B_FIFO 0x20
 #define UART_FCR_HSU_16B_FIFO 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_HALF_EMPT_TXI 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_FULL_EMPT_TXI 0x08
 #define UART_ASR 0x01
 #define UART_RFL 0x03
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TFL 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ICR 0x05
 #define UART_ACR 0x00
 #define UART_CPR 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TCR 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_CKS 0x03
 #define UART_TTL 0x04
 #define UART_RTL 0x05
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCL 0x06
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCH 0x07
 #define UART_ID1 0x08
 #define UART_ID2 0x09
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ID3 0x0A
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_REV 0x0B
 #define UART_CSR 0x0C
 #define UART_NMR 0x0D
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_CTR 0xFF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ACR_RXDIS 0x01
 #define UART_ACR_TXDIS 0x02
 #define UART_ACR_DSRFC 0x04
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ACR_TLENB 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ACR_ICRRD 0x40
 #define UART_ACR_ASREN 0x80
-#define UART_RSA_BASE (-8)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_RSA_BASE (- 8)
 #define UART_RSA_MSR ((UART_RSA_BASE) + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_MSR_SWAP (1 << 0)
 #define UART_RSA_MSR_FIFO (1 << 2)
 #define UART_RSA_MSR_FLOW (1 << 3)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_MSR_ITYP (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_IER ((UART_RSA_BASE) + 1)
 #define UART_RSA_IER_Rx_FIFO_H (1 << 0)
 #define UART_RSA_IER_Tx_FIFO_H (1 << 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_IER_Tx_FIFO_E (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_IER_Rx_TOUT (1 << 3)
 #define UART_RSA_IER_TIMER (1 << 4)
 #define UART_RSA_SRR ((UART_RSA_BASE) + 2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_SRR_Tx_FIFO_NEMP (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_SRR_Tx_FIFO_NHFL (1 << 1)
 #define UART_RSA_SRR_Tx_FIFO_NFUL (1 << 2)
 #define UART_RSA_SRR_Rx_FIFO_NEMP (1 << 3)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_SRR_Rx_FIFO_NHFL (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_SRR_Rx_FIFO_NFUL (1 << 5)
 #define UART_RSA_SRR_Rx_TOUT (1 << 6)
 #define UART_RSA_SRR_TIMER (1 << 7)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_FRR ((UART_RSA_BASE) + 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_TIVSR ((UART_RSA_BASE) + 3)
 #define UART_RSA_TCR ((UART_RSA_BASE) + 4)
 #define UART_RSA_TCR_SWITCH (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIAL_RSA_BAUD_BASE (921600)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8)
 #define UART_OMAP_MDR1 0x08
 #define UART_OMAP_MDR2 0x09
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_SCR 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_SSR 0x11
 #define UART_OMAP_EBLR 0x12
 #define UART_OMAP_OSC_12M_SEL 0x13
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_MVER 0x14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_SYSC 0x15
 #define UART_OMAP_SYSS 0x16
 #define UART_OMAP_WER 0x17
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_MDR1_16X_MODE 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_MDR1_SIR_MODE 0x01
 #define UART_OMAP_MDR1_16X_ABAUD_MODE 0x02
 #define UART_OMAP_MDR1_13X_MODE 0x03
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_MDR1_MIR_MODE 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_MDR1_FIR_MODE 0x05
 #define UART_OMAP_MDR1_CIR_MODE 0x06
 #define UART_OMAP_MDR1_DISABLE 0x07
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_EXAR_8XMODE 0x88
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_EXAR_SLEEP 0x8b
 #define UART_EXAR_DVID 0x8d
 #define UART_EXAR_FCTR 0x08
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_EXAR_IRDA 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_EXAR_485 0x10
 #define UART_FCTR_EXAR_TRGA 0x00
 #define UART_FCTR_EXAR_TRGB 0x60
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_EXAR_TRGC 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_EXAR_TRGD 0xc0
 #define UART_EXAR_TXTRG 0x0a
 #define UART_EXAR_RXTRG 0x0b
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/serio.h b/libc/kernel/uapi/linux/serio.h
index 7afb1a2..a8fcfd9 100644
--- a/libc/kernel/uapi/linux/serio.h
+++ b/libc/kernel/uapi/linux/serio.h
@@ -84,5 +84,6 @@
 #define SERIO_HAMPSHIRE 0x3b
 #define SERIO_PS2MULT 0x3c
 #define SERIO_TSC40 0x3d
-#endif
+#define SERIO_WACOM_IV 0x3e
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/shm.h b/libc/kernel/uapi/linux/shm.h
index 28e1670..bb7f907 100644
--- a/libc/kernel/uapi/linux/shm.h
+++ b/libc/kernel/uapi/linux/shm.h
@@ -22,27 +22,27 @@
 #include <linux/errno.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <unistd.h>
-#define SHMMAX 0x2000000
 #define SHMMIN 1
 #define SHMMNI 4096
+#define SHMMAX (ULONG_MAX - (1UL << 24))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SHMALL (SHMMAX/getpagesize()*(SHMMNI/16))
+#define SHMALL (ULONG_MAX - (1UL << 24))
 #define SHMSEG SHMMNI
 struct shmid_ds {
- struct ipc_perm shm_perm;
+  struct ipc_perm shm_perm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int shm_segsz;
- __kernel_time_t shm_atime;
- __kernel_time_t shm_dtime;
- __kernel_time_t shm_ctime;
+  int shm_segsz;
+  __kernel_time_t shm_atime;
+  __kernel_time_t shm_dtime;
+  __kernel_time_t shm_ctime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ipc_pid_t shm_cpid;
- __kernel_ipc_pid_t shm_lpid;
- unsigned short shm_nattch;
- unsigned short shm_unused;
+  __kernel_ipc_pid_t shm_cpid;
+  __kernel_ipc_pid_t shm_lpid;
+  unsigned short shm_nattch;
+  unsigned short shm_unused;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void *shm_unused2;
- void *shm_unused3;
+  void * shm_unused2;
+  void * shm_unused3;
 };
 #include <asm/shmbuf.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -59,22 +59,22 @@
 #define SHM_STAT 13
 #define SHM_INFO 14
 struct shminfo {
- int shmmax;
+  int shmmax;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int shmmin;
- int shmmni;
- int shmseg;
- int shmall;
+  int shmmin;
+  int shmmni;
+  int shmseg;
+  int shmall;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct shm_info {
- int used_ids;
- __kernel_ulong_t shm_tot;
+  int used_ids;
+  __kernel_ulong_t shm_tot;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t shm_rss;
- __kernel_ulong_t shm_swp;
- __kernel_ulong_t swap_attempts;
- __kernel_ulong_t swap_successes;
+  __kernel_ulong_t shm_rss;
+  __kernel_ulong_t shm_swp;
+  __kernel_ulong_t swap_attempts;
+  __kernel_ulong_t swap_successes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/signalfd.h b/libc/kernel/uapi/linux/signalfd.h
index 8975130..dccd65b 100644
--- a/libc/kernel/uapi/linux/signalfd.h
+++ b/libc/kernel/uapi/linux/signalfd.h
@@ -24,28 +24,28 @@
 #define SFD_CLOEXEC O_CLOEXEC
 #define SFD_NONBLOCK O_NONBLOCK
 struct signalfd_siginfo {
- __u32 ssi_signo;
+  __u32 ssi_signo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 ssi_errno;
- __s32 ssi_code;
- __u32 ssi_pid;
- __u32 ssi_uid;
+  __s32 ssi_errno;
+  __s32 ssi_code;
+  __u32 ssi_pid;
+  __u32 ssi_uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 ssi_fd;
- __u32 ssi_tid;
- __u32 ssi_band;
- __u32 ssi_overrun;
+  __s32 ssi_fd;
+  __u32 ssi_tid;
+  __u32 ssi_band;
+  __u32 ssi_overrun;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ssi_trapno;
- __s32 ssi_status;
- __s32 ssi_int;
- __u64 ssi_ptr;
+  __u32 ssi_trapno;
+  __s32 ssi_status;
+  __s32 ssi_int;
+  __u64 ssi_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ssi_utime;
- __u64 ssi_stime;
- __u64 ssi_addr;
- __u16 ssi_addr_lsb;
+  __u64 ssi_utime;
+  __u64 ssi_stime;
+  __u64 ssi_addr;
+  __u16 ssi_addr_lsb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 __pad[46];
+  __u8 __pad[46];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/smiapp.h b/libc/kernel/uapi/linux/smiapp.h
new file mode 100644
index 0000000..6b2a462
--- /dev/null
+++ b/libc/kernel/uapi/linux/smiapp.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SMIAPP_H_
+#define __UAPI_LINUX_SMIAPP_H_
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_DISABLED 0
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_SOLID_COLOUR 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_COLOUR_BARS 2
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_COLOUR_BARS_GREY 3
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_PN9 4
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index 9d5fb09..ab163cc 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -18,317 +18,316 @@
  ****************************************************************************/
 #ifndef _LINUX_SNMP_H
 #define _LINUX_SNMP_H
-enum
-{
+enum {
+  IPSTATS_MIB_NUM = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_NUM = 0,
- IPSTATS_MIB_INPKTS,
- IPSTATS_MIB_INOCTETS,
- IPSTATS_MIB_INDELIVERS,
+  IPSTATS_MIB_INPKTS,
+  IPSTATS_MIB_INOCTETS,
+  IPSTATS_MIB_INDELIVERS,
+  IPSTATS_MIB_OUTFORWDATAGRAMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_OUTFORWDATAGRAMS,
- IPSTATS_MIB_OUTPKTS,
- IPSTATS_MIB_OUTOCTETS,
- IPSTATS_MIB_INHDRERRORS,
+  IPSTATS_MIB_OUTPKTS,
+  IPSTATS_MIB_OUTOCTETS,
+  IPSTATS_MIB_INHDRERRORS,
+  IPSTATS_MIB_INTOOBIGERRORS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_INTOOBIGERRORS,
- IPSTATS_MIB_INNOROUTES,
- IPSTATS_MIB_INADDRERRORS,
- IPSTATS_MIB_INUNKNOWNPROTOS,
+  IPSTATS_MIB_INNOROUTES,
+  IPSTATS_MIB_INADDRERRORS,
+  IPSTATS_MIB_INUNKNOWNPROTOS,
+  IPSTATS_MIB_INTRUNCATEDPKTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_INTRUNCATEDPKTS,
- IPSTATS_MIB_INDISCARDS,
- IPSTATS_MIB_OUTDISCARDS,
- IPSTATS_MIB_OUTNOROUTES,
+  IPSTATS_MIB_INDISCARDS,
+  IPSTATS_MIB_OUTDISCARDS,
+  IPSTATS_MIB_OUTNOROUTES,
+  IPSTATS_MIB_REASMTIMEOUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_REASMTIMEOUT,
- IPSTATS_MIB_REASMREQDS,
- IPSTATS_MIB_REASMOKS,
- IPSTATS_MIB_REASMFAILS,
+  IPSTATS_MIB_REASMREQDS,
+  IPSTATS_MIB_REASMOKS,
+  IPSTATS_MIB_REASMFAILS,
+  IPSTATS_MIB_FRAGOKS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_FRAGOKS,
- IPSTATS_MIB_FRAGFAILS,
- IPSTATS_MIB_FRAGCREATES,
- IPSTATS_MIB_INMCASTPKTS,
+  IPSTATS_MIB_FRAGFAILS,
+  IPSTATS_MIB_FRAGCREATES,
+  IPSTATS_MIB_INMCASTPKTS,
+  IPSTATS_MIB_OUTMCASTPKTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_OUTMCASTPKTS,
- IPSTATS_MIB_INBCASTPKTS,
- IPSTATS_MIB_OUTBCASTPKTS,
- IPSTATS_MIB_INMCASTOCTETS,
+  IPSTATS_MIB_INBCASTPKTS,
+  IPSTATS_MIB_OUTBCASTPKTS,
+  IPSTATS_MIB_INMCASTOCTETS,
+  IPSTATS_MIB_OUTMCASTOCTETS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_OUTMCASTOCTETS,
- IPSTATS_MIB_INBCASTOCTETS,
- IPSTATS_MIB_OUTBCASTOCTETS,
- IPSTATS_MIB_CSUMERRORS,
+  IPSTATS_MIB_INBCASTOCTETS,
+  IPSTATS_MIB_OUTBCASTOCTETS,
+  IPSTATS_MIB_CSUMERRORS,
+  IPSTATS_MIB_NOECTPKTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IPSTATS_MIB_NOECTPKTS,
- IPSTATS_MIB_ECT1PKTS,
- IPSTATS_MIB_ECT0PKTS,
- IPSTATS_MIB_CEPKTS,
+  IPSTATS_MIB_ECT1PKTS,
+  IPSTATS_MIB_ECT0PKTS,
+  IPSTATS_MIB_CEPKTS,
+  __IPSTATS_MIB_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __IPSTATS_MIB_MAX
 };
-enum
-{
+enum {
+  ICMP_MIB_NUM = 0,
+  ICMP_MIB_INMSGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP_MIB_NUM = 0,
- ICMP_MIB_INMSGS,
- ICMP_MIB_INERRORS,
- ICMP_MIB_INDESTUNREACHS,
+  ICMP_MIB_INERRORS,
+  ICMP_MIB_INDESTUNREACHS,
+  ICMP_MIB_INTIMEEXCDS,
+  ICMP_MIB_INPARMPROBS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP_MIB_INTIMEEXCDS,
- ICMP_MIB_INPARMPROBS,
- ICMP_MIB_INSRCQUENCHS,
- ICMP_MIB_INREDIRECTS,
+  ICMP_MIB_INSRCQUENCHS,
+  ICMP_MIB_INREDIRECTS,
+  ICMP_MIB_INECHOS,
+  ICMP_MIB_INECHOREPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP_MIB_INECHOS,
- ICMP_MIB_INECHOREPS,
- ICMP_MIB_INTIMESTAMPS,
- ICMP_MIB_INTIMESTAMPREPS,
+  ICMP_MIB_INTIMESTAMPS,
+  ICMP_MIB_INTIMESTAMPREPS,
+  ICMP_MIB_INADDRMASKS,
+  ICMP_MIB_INADDRMASKREPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP_MIB_INADDRMASKS,
- ICMP_MIB_INADDRMASKREPS,
- ICMP_MIB_OUTMSGS,
- ICMP_MIB_OUTERRORS,
+  ICMP_MIB_OUTMSGS,
+  ICMP_MIB_OUTERRORS,
+  ICMP_MIB_OUTDESTUNREACHS,
+  ICMP_MIB_OUTTIMEEXCDS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP_MIB_OUTDESTUNREACHS,
- ICMP_MIB_OUTTIMEEXCDS,
- ICMP_MIB_OUTPARMPROBS,
- ICMP_MIB_OUTSRCQUENCHS,
+  ICMP_MIB_OUTPARMPROBS,
+  ICMP_MIB_OUTSRCQUENCHS,
+  ICMP_MIB_OUTREDIRECTS,
+  ICMP_MIB_OUTECHOS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP_MIB_OUTREDIRECTS,
- ICMP_MIB_OUTECHOS,
- ICMP_MIB_OUTECHOREPS,
- ICMP_MIB_OUTTIMESTAMPS,
+  ICMP_MIB_OUTECHOREPS,
+  ICMP_MIB_OUTTIMESTAMPS,
+  ICMP_MIB_OUTTIMESTAMPREPS,
+  ICMP_MIB_OUTADDRMASKS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP_MIB_OUTTIMESTAMPREPS,
- ICMP_MIB_OUTADDRMASKS,
- ICMP_MIB_OUTADDRMASKREPS,
- ICMP_MIB_CSUMERRORS,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __ICMP_MIB_MAX
+  ICMP_MIB_OUTADDRMASKREPS,
+  ICMP_MIB_CSUMERRORS,
+  __ICMP_MIB_MAX
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ICMPMSG_MIB_MAX 512
-enum
+enum {
+  ICMP6_MIB_NUM = 0,
+  ICMP6_MIB_INMSGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- ICMP6_MIB_NUM = 0,
- ICMP6_MIB_INMSGS,
- ICMP6_MIB_INERRORS,
+  ICMP6_MIB_INERRORS,
+  ICMP6_MIB_OUTMSGS,
+  ICMP6_MIB_OUTERRORS,
+  ICMP6_MIB_CSUMERRORS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ICMP6_MIB_OUTMSGS,
- ICMP6_MIB_OUTERRORS,
- ICMP6_MIB_CSUMERRORS,
- __ICMP6_MIB_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __ICMP6_MIB_MAX
 };
 #define __ICMP6MSG_MIB_MAX 512
-enum
-{
+enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_MIB_NUM = 0,
- TCP_MIB_RTOALGORITHM,
- TCP_MIB_RTOMIN,
- TCP_MIB_RTOMAX,
+  TCP_MIB_NUM = 0,
+  TCP_MIB_RTOALGORITHM,
+  TCP_MIB_RTOMIN,
+  TCP_MIB_RTOMAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_MIB_MAXCONN,
- TCP_MIB_ACTIVEOPENS,
- TCP_MIB_PASSIVEOPENS,
- TCP_MIB_ATTEMPTFAILS,
+  TCP_MIB_MAXCONN,
+  TCP_MIB_ACTIVEOPENS,
+  TCP_MIB_PASSIVEOPENS,
+  TCP_MIB_ATTEMPTFAILS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_MIB_ESTABRESETS,
- TCP_MIB_CURRESTAB,
- TCP_MIB_INSEGS,
- TCP_MIB_OUTSEGS,
+  TCP_MIB_ESTABRESETS,
+  TCP_MIB_CURRESTAB,
+  TCP_MIB_INSEGS,
+  TCP_MIB_OUTSEGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_MIB_RETRANSSEGS,
- TCP_MIB_INERRS,
- TCP_MIB_OUTRSTS,
- TCP_MIB_CSUMERRORS,
+  TCP_MIB_RETRANSSEGS,
+  TCP_MIB_INERRS,
+  TCP_MIB_OUTRSTS,
+  TCP_MIB_CSUMERRORS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCP_MIB_MAX
+  __TCP_MIB_MAX
 };
-enum
-{
+enum {
+  UDP_MIB_NUM = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- UDP_MIB_NUM = 0,
- UDP_MIB_INDATAGRAMS,
- UDP_MIB_NOPORTS,
- UDP_MIB_INERRORS,
+  UDP_MIB_INDATAGRAMS,
+  UDP_MIB_NOPORTS,
+  UDP_MIB_INERRORS,
+  UDP_MIB_OUTDATAGRAMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- UDP_MIB_OUTDATAGRAMS,
- UDP_MIB_RCVBUFERRORS,
- UDP_MIB_SNDBUFERRORS,
- UDP_MIB_CSUMERRORS,
+  UDP_MIB_RCVBUFERRORS,
+  UDP_MIB_SNDBUFERRORS,
+  UDP_MIB_CSUMERRORS,
+  __UDP_MIB_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __UDP_MIB_MAX
 };
-enum
-{
+enum {
+  LINUX_MIB_NUM = 0,
+  LINUX_MIB_SYNCOOKIESSENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_NUM = 0,
- LINUX_MIB_SYNCOOKIESSENT,
- LINUX_MIB_SYNCOOKIESRECV,
- LINUX_MIB_SYNCOOKIESFAILED,
+  LINUX_MIB_SYNCOOKIESRECV,
+  LINUX_MIB_SYNCOOKIESFAILED,
+  LINUX_MIB_EMBRYONICRSTS,
+  LINUX_MIB_PRUNECALLED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_EMBRYONICRSTS,
- LINUX_MIB_PRUNECALLED,
- LINUX_MIB_RCVPRUNED,
- LINUX_MIB_OFOPRUNED,
+  LINUX_MIB_RCVPRUNED,
+  LINUX_MIB_OFOPRUNED,
+  LINUX_MIB_OUTOFWINDOWICMPS,
+  LINUX_MIB_LOCKDROPPEDICMPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_OUTOFWINDOWICMPS,
- LINUX_MIB_LOCKDROPPEDICMPS,
- LINUX_MIB_ARPFILTER,
- LINUX_MIB_TIMEWAITED,
+  LINUX_MIB_ARPFILTER,
+  LINUX_MIB_TIMEWAITED,
+  LINUX_MIB_TIMEWAITRECYCLED,
+  LINUX_MIB_TIMEWAITKILLED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TIMEWAITRECYCLED,
- LINUX_MIB_TIMEWAITKILLED,
- LINUX_MIB_PAWSPASSIVEREJECTED,
- LINUX_MIB_PAWSACTIVEREJECTED,
+  LINUX_MIB_PAWSPASSIVEREJECTED,
+  LINUX_MIB_PAWSACTIVEREJECTED,
+  LINUX_MIB_PAWSESTABREJECTED,
+  LINUX_MIB_DELAYEDACKS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_PAWSESTABREJECTED,
- LINUX_MIB_DELAYEDACKS,
- LINUX_MIB_DELAYEDACKLOCKED,
- LINUX_MIB_DELAYEDACKLOST,
+  LINUX_MIB_DELAYEDACKLOCKED,
+  LINUX_MIB_DELAYEDACKLOST,
+  LINUX_MIB_LISTENOVERFLOWS,
+  LINUX_MIB_LISTENDROPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_LISTENOVERFLOWS,
- LINUX_MIB_LISTENDROPS,
- LINUX_MIB_TCPPREQUEUED,
- LINUX_MIB_TCPDIRECTCOPYFROMBACKLOG,
+  LINUX_MIB_TCPPREQUEUED,
+  LINUX_MIB_TCPDIRECTCOPYFROMBACKLOG,
+  LINUX_MIB_TCPDIRECTCOPYFROMPREQUEUE,
+  LINUX_MIB_TCPPREQUEUEDROPPED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPDIRECTCOPYFROMPREQUEUE,
- LINUX_MIB_TCPPREQUEUEDROPPED,
- LINUX_MIB_TCPHPHITS,
- LINUX_MIB_TCPHPHITSTOUSER,
+  LINUX_MIB_TCPHPHITS,
+  LINUX_MIB_TCPHPHITSTOUSER,
+  LINUX_MIB_TCPPUREACKS,
+  LINUX_MIB_TCPHPACKS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPPUREACKS,
- LINUX_MIB_TCPHPACKS,
- LINUX_MIB_TCPRENORECOVERY,
- LINUX_MIB_TCPSACKRECOVERY,
+  LINUX_MIB_TCPRENORECOVERY,
+  LINUX_MIB_TCPSACKRECOVERY,
+  LINUX_MIB_TCPSACKRENEGING,
+  LINUX_MIB_TCPFACKREORDER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPSACKRENEGING,
- LINUX_MIB_TCPFACKREORDER,
- LINUX_MIB_TCPSACKREORDER,
- LINUX_MIB_TCPRENOREORDER,
+  LINUX_MIB_TCPSACKREORDER,
+  LINUX_MIB_TCPRENOREORDER,
+  LINUX_MIB_TCPTSREORDER,
+  LINUX_MIB_TCPFULLUNDO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPTSREORDER,
- LINUX_MIB_TCPFULLUNDO,
- LINUX_MIB_TCPPARTIALUNDO,
- LINUX_MIB_TCPDSACKUNDO,
+  LINUX_MIB_TCPPARTIALUNDO,
+  LINUX_MIB_TCPDSACKUNDO,
+  LINUX_MIB_TCPLOSSUNDO,
+  LINUX_MIB_TCPLOSTRETRANSMIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPLOSSUNDO,
- LINUX_MIB_TCPLOSTRETRANSMIT,
- LINUX_MIB_TCPRENOFAILURES,
- LINUX_MIB_TCPSACKFAILURES,
+  LINUX_MIB_TCPRENOFAILURES,
+  LINUX_MIB_TCPSACKFAILURES,
+  LINUX_MIB_TCPLOSSFAILURES,
+  LINUX_MIB_TCPFASTRETRANS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPLOSSFAILURES,
- LINUX_MIB_TCPFASTRETRANS,
- LINUX_MIB_TCPFORWARDRETRANS,
- LINUX_MIB_TCPSLOWSTARTRETRANS,
+  LINUX_MIB_TCPFORWARDRETRANS,
+  LINUX_MIB_TCPSLOWSTARTRETRANS,
+  LINUX_MIB_TCPTIMEOUTS,
+  LINUX_MIB_TCPLOSSPROBES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPTIMEOUTS,
- LINUX_MIB_TCPLOSSPROBES,
- LINUX_MIB_TCPLOSSPROBERECOVERY,
- LINUX_MIB_TCPRENORECOVERYFAIL,
+  LINUX_MIB_TCPLOSSPROBERECOVERY,
+  LINUX_MIB_TCPRENORECOVERYFAIL,
+  LINUX_MIB_TCPSACKRECOVERYFAIL,
+  LINUX_MIB_TCPSCHEDULERFAILED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPSACKRECOVERYFAIL,
- LINUX_MIB_TCPSCHEDULERFAILED,
- LINUX_MIB_TCPRCVCOLLAPSED,
- LINUX_MIB_TCPDSACKOLDSENT,
+  LINUX_MIB_TCPRCVCOLLAPSED,
+  LINUX_MIB_TCPDSACKOLDSENT,
+  LINUX_MIB_TCPDSACKOFOSENT,
+  LINUX_MIB_TCPDSACKRECV,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPDSACKOFOSENT,
- LINUX_MIB_TCPDSACKRECV,
- LINUX_MIB_TCPDSACKOFORECV,
- LINUX_MIB_TCPABORTONDATA,
+  LINUX_MIB_TCPDSACKOFORECV,
+  LINUX_MIB_TCPABORTONDATA,
+  LINUX_MIB_TCPABORTONCLOSE,
+  LINUX_MIB_TCPABORTONMEMORY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPABORTONCLOSE,
- LINUX_MIB_TCPABORTONMEMORY,
- LINUX_MIB_TCPABORTONTIMEOUT,
- LINUX_MIB_TCPABORTONLINGER,
+  LINUX_MIB_TCPABORTONTIMEOUT,
+  LINUX_MIB_TCPABORTONLINGER,
+  LINUX_MIB_TCPABORTFAILED,
+  LINUX_MIB_TCPMEMORYPRESSURES,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPABORTFAILED,
- LINUX_MIB_TCPMEMORYPRESSURES,
- LINUX_MIB_TCPSACKDISCARD,
- LINUX_MIB_TCPDSACKIGNOREDOLD,
+  LINUX_MIB_TCPSACKDISCARD,
+  LINUX_MIB_TCPDSACKIGNOREDOLD,
+  LINUX_MIB_TCPDSACKIGNOREDNOUNDO,
+  LINUX_MIB_TCPSPURIOUSRTOS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPDSACKIGNOREDNOUNDO,
- LINUX_MIB_TCPSPURIOUSRTOS,
- LINUX_MIB_TCPMD5NOTFOUND,
- LINUX_MIB_TCPMD5UNEXPECTED,
+  LINUX_MIB_TCPMD5NOTFOUND,
+  LINUX_MIB_TCPMD5UNEXPECTED,
+  LINUX_MIB_SACKSHIFTED,
+  LINUX_MIB_SACKMERGED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_SACKSHIFTED,
- LINUX_MIB_SACKMERGED,
- LINUX_MIB_SACKSHIFTFALLBACK,
- LINUX_MIB_TCPBACKLOGDROP,
+  LINUX_MIB_SACKSHIFTFALLBACK,
+  LINUX_MIB_TCPBACKLOGDROP,
+  LINUX_MIB_TCPMINTTLDROP,
+  LINUX_MIB_TCPDEFERACCEPTDROP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPMINTTLDROP,
- LINUX_MIB_TCPDEFERACCEPTDROP,
- LINUX_MIB_IPRPFILTER,
- LINUX_MIB_TCPTIMEWAITOVERFLOW,
+  LINUX_MIB_IPRPFILTER,
+  LINUX_MIB_TCPTIMEWAITOVERFLOW,
+  LINUX_MIB_TCPREQQFULLDOCOOKIES,
+  LINUX_MIB_TCPREQQFULLDROP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPREQQFULLDOCOOKIES,
- LINUX_MIB_TCPREQQFULLDROP,
- LINUX_MIB_TCPRETRANSFAIL,
- LINUX_MIB_TCPRCVCOALESCE,
+  LINUX_MIB_TCPRETRANSFAIL,
+  LINUX_MIB_TCPRCVCOALESCE,
+  LINUX_MIB_TCPOFOQUEUE,
+  LINUX_MIB_TCPOFODROP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPOFOQUEUE,
- LINUX_MIB_TCPOFODROP,
- LINUX_MIB_TCPOFOMERGE,
- LINUX_MIB_TCPCHALLENGEACK,
+  LINUX_MIB_TCPOFOMERGE,
+  LINUX_MIB_TCPCHALLENGEACK,
+  LINUX_MIB_TCPSYNCHALLENGE,
+  LINUX_MIB_TCPFASTOPENACTIVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPSYNCHALLENGE,
- LINUX_MIB_TCPFASTOPENACTIVE,
- LINUX_MIB_TCPFASTOPENPASSIVE,
- LINUX_MIB_TCPFASTOPENPASSIVEFAIL,
+  LINUX_MIB_TCPFASTOPENACTIVEFAIL,
+  LINUX_MIB_TCPFASTOPENPASSIVE,
+  LINUX_MIB_TCPFASTOPENPASSIVEFAIL,
+  LINUX_MIB_TCPFASTOPENLISTENOVERFLOW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPFASTOPENLISTENOVERFLOW,
- LINUX_MIB_TCPFASTOPENCOOKIEREQD,
- LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES,
- LINUX_MIB_BUSYPOLLRXPACKETS,
+  LINUX_MIB_TCPFASTOPENCOOKIEREQD,
+  LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES,
+  LINUX_MIB_BUSYPOLLRXPACKETS,
+  LINUX_MIB_TCPAUTOCORKING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_TCPAUTOCORKING,
- __LINUX_MIB_MAX
+  LINUX_MIB_TCPFROMZEROWINDOWADV,
+  LINUX_MIB_TCPTOZEROWINDOWADV,
+  LINUX_MIB_TCPWANTZEROWINDOWADV,
+  LINUX_MIB_TCPSYNRETRANS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  LINUX_MIB_TCPORIGDATASENT,
+  __LINUX_MIB_MAX
 };
-enum
+enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- LINUX_MIB_XFRMNUM = 0,
- LINUX_MIB_XFRMINERROR,
- LINUX_MIB_XFRMINBUFFERERROR,
+  LINUX_MIB_XFRMNUM = 0,
+  LINUX_MIB_XFRMINERROR,
+  LINUX_MIB_XFRMINBUFFERERROR,
+  LINUX_MIB_XFRMINHDRERROR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_XFRMINHDRERROR,
- LINUX_MIB_XFRMINNOSTATES,
- LINUX_MIB_XFRMINSTATEPROTOERROR,
- LINUX_MIB_XFRMINSTATEMODEERROR,
+  LINUX_MIB_XFRMINNOSTATES,
+  LINUX_MIB_XFRMINSTATEPROTOERROR,
+  LINUX_MIB_XFRMINSTATEMODEERROR,
+  LINUX_MIB_XFRMINSTATESEQERROR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_XFRMINSTATESEQERROR,
- LINUX_MIB_XFRMINSTATEEXPIRED,
- LINUX_MIB_XFRMINSTATEMISMATCH,
- LINUX_MIB_XFRMINSTATEINVALID,
+  LINUX_MIB_XFRMINSTATEEXPIRED,
+  LINUX_MIB_XFRMINSTATEMISMATCH,
+  LINUX_MIB_XFRMINSTATEINVALID,
+  LINUX_MIB_XFRMINTMPLMISMATCH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_XFRMINTMPLMISMATCH,
- LINUX_MIB_XFRMINNOPOLS,
- LINUX_MIB_XFRMINPOLBLOCK,
- LINUX_MIB_XFRMINPOLERROR,
+  LINUX_MIB_XFRMINNOPOLS,
+  LINUX_MIB_XFRMINPOLBLOCK,
+  LINUX_MIB_XFRMINPOLERROR,
+  LINUX_MIB_XFRMOUTERROR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_XFRMOUTERROR,
- LINUX_MIB_XFRMOUTBUNDLEGENERROR,
- LINUX_MIB_XFRMOUTBUNDLECHECKERROR,
- LINUX_MIB_XFRMOUTNOSTATES,
+  LINUX_MIB_XFRMOUTBUNDLEGENERROR,
+  LINUX_MIB_XFRMOUTBUNDLECHECKERROR,
+  LINUX_MIB_XFRMOUTNOSTATES,
+  LINUX_MIB_XFRMOUTSTATEPROTOERROR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_XFRMOUTSTATEPROTOERROR,
- LINUX_MIB_XFRMOUTSTATEMODEERROR,
- LINUX_MIB_XFRMOUTSTATESEQERROR,
- LINUX_MIB_XFRMOUTSTATEEXPIRED,
+  LINUX_MIB_XFRMOUTSTATEMODEERROR,
+  LINUX_MIB_XFRMOUTSTATESEQERROR,
+  LINUX_MIB_XFRMOUTSTATEEXPIRED,
+  LINUX_MIB_XFRMOUTPOLBLOCK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_XFRMOUTPOLBLOCK,
- LINUX_MIB_XFRMOUTPOLDEAD,
- LINUX_MIB_XFRMOUTPOLERROR,
- LINUX_MIB_XFRMFWDHDRERROR,
+  LINUX_MIB_XFRMOUTPOLDEAD,
+  LINUX_MIB_XFRMOUTPOLERROR,
+  LINUX_MIB_XFRMFWDHDRERROR,
+  LINUX_MIB_XFRMOUTSTATEINVALID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- LINUX_MIB_XFRMOUTSTATEINVALID,
- LINUX_MIB_XFRMACQUIREERROR,
- __LINUX_MIB_XFRMMAX
+  LINUX_MIB_XFRMACQUIREERROR,
+  __LINUX_MIB_XFRMMAX
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/sock_diag.h b/libc/kernel/uapi/linux/sock_diag.h
index 0dc2902..052779e 100644
--- a/libc/kernel/uapi/linux/sock_diag.h
+++ b/libc/kernel/uapi/linux/sock_diag.h
@@ -22,22 +22,22 @@
 #define SOCK_DIAG_BY_FAMILY 20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sock_diag_req {
- __u8 sdiag_family;
- __u8 sdiag_protocol;
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SK_MEMINFO_RMEM_ALLOC,
- SK_MEMINFO_RCVBUF,
- SK_MEMINFO_WMEM_ALLOC,
+  SK_MEMINFO_RMEM_ALLOC,
+  SK_MEMINFO_RCVBUF,
+  SK_MEMINFO_WMEM_ALLOC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SK_MEMINFO_SNDBUF,
- SK_MEMINFO_FWD_ALLOC,
- SK_MEMINFO_WMEM_QUEUED,
- SK_MEMINFO_OPTMEM,
+  SK_MEMINFO_SNDBUF,
+  SK_MEMINFO_FWD_ALLOC,
+  SK_MEMINFO_WMEM_QUEUED,
+  SK_MEMINFO_OPTMEM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SK_MEMINFO_BACKLOG,
- SK_MEMINFO_VARS,
+  SK_MEMINFO_BACKLOG,
+  SK_MEMINFO_VARS,
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/socket.h b/libc/kernel/uapi/linux/socket.h
index 23aae72..292dd16 100644
--- a/libc/kernel/uapi/linux/socket.h
+++ b/libc/kernel/uapi/linux/socket.h
@@ -19,12 +19,12 @@
 #ifndef _UAPI_LINUX_SOCKET_H
 #define _UAPI_LINUX_SOCKET_H
 #define _K_SS_MAXSIZE 128
-#define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *))
+#define _K_SS_ALIGNSIZE (__alignof__(struct sockaddr *))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_sa_family_t;
 struct __kernel_sockaddr_storage {
- __kernel_sa_family_t ss_family;
- char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
+  __kernel_sa_family_t ss_family;
+  char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((aligned(_K_SS_ALIGNSIZE)));
+} __attribute__((aligned(_K_SS_ALIGNSIZE)));
 #endif
diff --git a/libc/kernel/uapi/linux/som.h b/libc/kernel/uapi/linux/som.h
index 1099dd4..cb76e70 100644
--- a/libc/kernel/uapi/linux/som.h
+++ b/libc/kernel/uapi/linux/som.h
@@ -22,46 +22,46 @@
 #define SOM_PAGESIZE 4096
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct som_hdr {
- short system_id;
- short a_magic;
- unsigned int version_id;
+  short system_id;
+  short a_magic;
+  unsigned int version_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec file_time;
- unsigned int entry_space;
- unsigned int entry_subspace;
- unsigned int entry_offset;
+  struct timespec file_time;
+  unsigned int entry_space;
+  unsigned int entry_subspace;
+  unsigned int entry_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int aux_header_location;
- unsigned int aux_header_size;
- unsigned int som_length;
- unsigned int presumed_dp;
+  unsigned int aux_header_location;
+  unsigned int aux_header_size;
+  unsigned int som_length;
+  unsigned int presumed_dp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int space_location;
- unsigned int space_total;
- unsigned int subspace_location;
- unsigned int subspace_total;
+  unsigned int space_location;
+  unsigned int space_total;
+  unsigned int subspace_location;
+  unsigned int subspace_total;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int loader_fixup_location;
- unsigned int loader_fixup_total;
- unsigned int space_strings_location;
- unsigned int space_strings_size;
+  unsigned int loader_fixup_location;
+  unsigned int loader_fixup_total;
+  unsigned int space_strings_location;
+  unsigned int space_strings_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int init_array_location;
- unsigned int init_array_total;
- unsigned int compiler_location;
- unsigned int compiler_total;
+  unsigned int init_array_location;
+  unsigned int init_array_total;
+  unsigned int compiler_location;
+  unsigned int compiler_total;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int symbol_location;
- unsigned int symbol_total;
- unsigned int fixup_request_location;
- unsigned int fixup_request_total;
+  unsigned int symbol_location;
+  unsigned int symbol_total;
+  unsigned int fixup_request_location;
+  unsigned int fixup_request_total;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int symbol_strings_location;
- unsigned int symbol_strings_size;
- unsigned int unloadable_sp_location;
- unsigned int unloadable_sp_size;
+  unsigned int symbol_strings_location;
+  unsigned int symbol_strings_size;
+  unsigned int unloadable_sp_location;
+  unsigned int unloadable_sp_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int checksum;
+  unsigned int checksum;
 };
 #define SOM_SID_PARISC_1_0 0x020b
 #define SOM_SID_PARISC_1_1 0x0210
@@ -81,90 +81,90 @@
 #define SOM_ID_NEW 87102412
 struct aux_id {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int mandatory :1;
- unsigned int copy :1;
- unsigned int append :1;
- unsigned int ignore :1;
+  unsigned int mandatory : 1;
+  unsigned int copy : 1;
+  unsigned int append : 1;
+  unsigned int ignore : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int reserved :12;
- unsigned int type :16;
- unsigned int length;
+  unsigned int reserved : 12;
+  unsigned int type : 16;
+  unsigned int length;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct som_exec_auxhdr {
- struct aux_id som_auxhdr;
- int exec_tsize;
- int exec_tmem;
+  struct aux_id som_auxhdr;
+  int exec_tsize;
+  int exec_tmem;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int exec_tfile;
- int exec_dsize;
- int exec_dmem;
- int exec_dfile;
+  int exec_tfile;
+  int exec_dsize;
+  int exec_dmem;
+  int exec_dfile;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int exec_bsize;
- int exec_entry;
- int exec_flags;
- int exec_bfill;
+  int exec_bsize;
+  int exec_entry;
+  int exec_flags;
+  int exec_bfill;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 union name_pt {
- char * n_name;
- unsigned int n_strx;
+  char * n_name;
+  unsigned int n_strx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct space_dictionary_record {
- union name_pt name;
- unsigned int is_loadable :1;
+  union name_pt name;
+  unsigned int is_loadable : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int is_defined :1;
- unsigned int is_private :1;
- unsigned int has_intermediate_code :1;
- unsigned int is_tspecific :1;
+  unsigned int is_defined : 1;
+  unsigned int is_private : 1;
+  unsigned int has_intermediate_code : 1;
+  unsigned int is_tspecific : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int reserved :11;
- unsigned int sort_key :8;
- unsigned int reserved2 :8;
- int space_number;
+  unsigned int reserved : 11;
+  unsigned int sort_key : 8;
+  unsigned int reserved2 : 8;
+  int space_number;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int subspace_index;
- unsigned int subspace_quantity;
- int loader_fix_index;
- unsigned int loader_fix_quantity;
+  int subspace_index;
+  unsigned int subspace_quantity;
+  int loader_fix_index;
+  unsigned int loader_fix_quantity;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int init_pointer_index;
- unsigned int init_pointer_quantity;
+  int init_pointer_index;
+  unsigned int init_pointer_quantity;
 };
 struct subspace_dictionary_record {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int space_index;
- unsigned int access_control_bits :7;
- unsigned int memory_resident :1;
- unsigned int dup_common :1;
+  int space_index;
+  unsigned int access_control_bits : 7;
+  unsigned int memory_resident : 1;
+  unsigned int dup_common : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int is_common :1;
- unsigned int quadrant :2;
- unsigned int initially_frozen :1;
- unsigned int is_first :1;
+  unsigned int is_common : 1;
+  unsigned int quadrant : 2;
+  unsigned int initially_frozen : 1;
+  unsigned int is_first : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int code_only :1;
- unsigned int sort_key :8;
- unsigned int replicate_init :1;
- unsigned int continuation :1;
+  unsigned int code_only : 1;
+  unsigned int sort_key : 8;
+  unsigned int replicate_init : 1;
+  unsigned int continuation : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int is_tspecific :1;
- unsigned int is_comdat :1;
- unsigned int reserved :4;
- int file_loc_init_value;
+  unsigned int is_tspecific : 1;
+  unsigned int is_comdat : 1;
+  unsigned int reserved : 4;
+  int file_loc_init_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int initialization_length;
- unsigned int subspace_start;
- unsigned int subspace_length;
- unsigned int reserved2 :5;
+  unsigned int initialization_length;
+  unsigned int subspace_start;
+  unsigned int subspace_length;
+  unsigned int reserved2 : 5;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int alignment :27;
- union name_pt name;
- int fixup_request_index;
- unsigned int fixup_request_quantity;
+  unsigned int alignment : 27;
+  union name_pt name;
+  int fixup_request_index;
+  unsigned int fixup_request_quantity;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/sonet.h b/libc/kernel/uapi/linux/sonet.h
index 3704e8c..1e34841 100644
--- a/libc/kernel/uapi/linux/sonet.h
+++ b/libc/kernel/uapi/linux/sonet.h
@@ -18,23 +18,23 @@
  ****************************************************************************/
 #ifndef _UAPILINUX_SONET_H
 #define _UAPILINUX_SONET_H
-#define __SONET_ITEMS   __HANDLE_ITEM(section_bip);     __HANDLE_ITEM(line_bip);     __HANDLE_ITEM(path_bip);     __HANDLE_ITEM(line_febe);     __HANDLE_ITEM(path_febe);     __HANDLE_ITEM(corr_hcs);     __HANDLE_ITEM(uncorr_hcs);     __HANDLE_ITEM(tx_cells);     __HANDLE_ITEM(rx_cells);
+#define __SONET_ITEMS __HANDLE_ITEM(section_bip); __HANDLE_ITEM(line_bip); __HANDLE_ITEM(path_bip); __HANDLE_ITEM(line_febe); __HANDLE_ITEM(path_febe); __HANDLE_ITEM(corr_hcs); __HANDLE_ITEM(uncorr_hcs); __HANDLE_ITEM(tx_cells); __HANDLE_ITEM(rx_cells);
 struct sonet_stats {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __HANDLE_ITEM(i) int i
- __SONET_ITEMS
+  __SONET_ITEMS
 #undef __HANDLE_ITEM
-} __attribute__ ((packed));
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SONET_GETSTAT _IOR('a',ATMIOC_PHYTYP,struct sonet_stats)
-#define SONET_GETSTATZ _IOR('a',ATMIOC_PHYTYP+1,struct sonet_stats)
-#define SONET_SETDIAG _IOWR('a',ATMIOC_PHYTYP+2,int)
-#define SONET_CLRDIAG _IOWR('a',ATMIOC_PHYTYP+3,int)
+#define SONET_GETSTAT _IOR('a', ATMIOC_PHYTYP, struct sonet_stats)
+#define SONET_GETSTATZ _IOR('a', ATMIOC_PHYTYP + 1, struct sonet_stats)
+#define SONET_SETDIAG _IOWR('a', ATMIOC_PHYTYP + 2, int)
+#define SONET_CLRDIAG _IOWR('a', ATMIOC_PHYTYP + 3, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SONET_GETDIAG _IOR('a',ATMIOC_PHYTYP+4,int)
-#define SONET_SETFRAMING _IOW('a',ATMIOC_PHYTYP+5,int)
-#define SONET_GETFRAMING _IOR('a',ATMIOC_PHYTYP+6,int)
-#define SONET_GETFRSENSE _IOR('a',ATMIOC_PHYTYP+7,   unsigned char[SONET_FRSENSE_SIZE])
+#define SONET_GETDIAG _IOR('a', ATMIOC_PHYTYP + 4, int)
+#define SONET_SETFRAMING _IOW('a', ATMIOC_PHYTYP + 5, int)
+#define SONET_GETFRAMING _IOR('a', ATMIOC_PHYTYP + 6, int)
+#define SONET_GETFRSENSE _IOR('a', ATMIOC_PHYTYP + 7, unsigned char[SONET_FRSENSE_SIZE])
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SONET_INS_SBIP 1
 #define SONET_INS_LBIP 2
diff --git a/libc/kernel/uapi/linux/soundcard.h b/libc/kernel/uapi/linux/soundcard.h
index 352f66d..11af763 100644
--- a/libc/kernel/uapi/linux/soundcard.h
+++ b/libc/kernel/uapi/linux/soundcard.h
@@ -82,13 +82,13 @@
 #define SIOC_OUT 0x20000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOC_IN 0x40000000
-#define SIOC_INOUT (SIOC_IN|SIOC_OUT)
-#define _SIO(x,y) ((int)(SIOC_VOID|(x<<8)|y))
-#define _SIOR(x,y,t) ((int)(SIOC_OUT|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
+#define SIOC_INOUT (SIOC_IN | SIOC_OUT)
+#define _SIO(x,y) ((int) (SIOC_VOID | (x << 8) | y))
+#define _SIOR(x,y,t) ((int) (SIOC_OUT | ((sizeof(t) & SIOCPARM_MASK) << 16) | (x << 8) | y))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define _SIOW(x,y,t) ((int)(SIOC_IN|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
-#define _SIOWR(x,y,t) ((int)(SIOC_INOUT|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
-#define _SIOC_SIZE(x) ((x>>16)&SIOCPARM_MASK)
+#define _SIOW(x,y,t) ((int) (SIOC_IN | ((sizeof(t) & SIOCPARM_MASK) << 16) | (x << 8) | y))
+#define _SIOWR(x,y,t) ((int) (SIOC_INOUT | ((sizeof(t) & SIOCPARM_MASK) << 16) | (x << 8) | y))
+#define _SIOC_SIZE(x) ((x >> 16) & SIOCPARM_MASK)
 #define _SIOC_DIR(x) (x & 0xf0000000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SIOC_NONE SIOC_VOID
@@ -97,642 +97,637 @@
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-#define SNDCTL_SEQ_RESET _SIO ('Q', 0)
-#define SNDCTL_SEQ_SYNC _SIO ('Q', 1)
+#define SNDCTL_SEQ_RESET _SIO('Q', 0)
+#define SNDCTL_SEQ_SYNC _SIO('Q', 1)
 #define SNDCTL_SYNTH_INFO _SIOWR('Q', 2, struct synth_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_SEQ_CTRLRATE _SIOWR('Q', 3, int)
-#define SNDCTL_SEQ_GETOUTCOUNT _SIOR ('Q', 4, int)
-#define SNDCTL_SEQ_GETINCOUNT _SIOR ('Q', 5, int)
-#define SNDCTL_SEQ_PERCMODE _SIOW ('Q', 6, int)
+#define SNDCTL_SEQ_GETOUTCOUNT _SIOR('Q', 4, int)
+#define SNDCTL_SEQ_GETINCOUNT _SIOR('Q', 5, int)
+#define SNDCTL_SEQ_PERCMODE _SIOW('Q', 6, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_FM_LOAD_INSTR _SIOW ('Q', 7, struct sbi_instrument)
-#define SNDCTL_SEQ_TESTMIDI _SIOW ('Q', 8, int)
-#define SNDCTL_SEQ_RESETSAMPLES _SIOW ('Q', 9, int)
-#define SNDCTL_SEQ_NRSYNTHS _SIOR ('Q',10, int)
+#define SNDCTL_FM_LOAD_INSTR _SIOW('Q', 7, struct sbi_instrument)
+#define SNDCTL_SEQ_TESTMIDI _SIOW('Q', 8, int)
+#define SNDCTL_SEQ_RESETSAMPLES _SIOW('Q', 9, int)
+#define SNDCTL_SEQ_NRSYNTHS _SIOR('Q', 10, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_SEQ_NRMIDIS _SIOR ('Q',11, int)
-#define SNDCTL_MIDI_INFO _SIOWR('Q',12, struct midi_info)
-#define SNDCTL_SEQ_THRESHOLD _SIOW ('Q',13, int)
-#define SNDCTL_SYNTH_MEMAVL _SIOWR('Q',14, int)
+#define SNDCTL_SEQ_NRMIDIS _SIOR('Q', 11, int)
+#define SNDCTL_MIDI_INFO _SIOWR('Q', 12, struct midi_info)
+#define SNDCTL_SEQ_THRESHOLD _SIOW('Q', 13, int)
+#define SNDCTL_SYNTH_MEMAVL _SIOWR('Q', 14, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_FM_4OP_ENABLE _SIOW ('Q',15, int)
-#define SNDCTL_SEQ_PANIC _SIO ('Q',17)
-#define SNDCTL_SEQ_OUTOFBAND _SIOW ('Q',18, struct seq_event_rec)
-#define SNDCTL_SEQ_GETTIME _SIOR ('Q',19, int)
+#define SNDCTL_FM_4OP_ENABLE _SIOW('Q', 15, int)
+#define SNDCTL_SEQ_PANIC _SIO('Q', 17)
+#define SNDCTL_SEQ_OUTOFBAND _SIOW('Q', 18, struct seq_event_rec)
+#define SNDCTL_SEQ_GETTIME _SIOR('Q', 19, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_SYNTH_ID _SIOWR('Q',20, struct synth_info)
-#define SNDCTL_SYNTH_CONTROL _SIOWR('Q',21, struct synth_control)
-#define SNDCTL_SYNTH_REMOVESAMPLE _SIOWR('Q',22, struct remove_sample)
-typedef struct synth_control
+#define SNDCTL_SYNTH_ID _SIOWR('Q', 20, struct synth_info)
+#define SNDCTL_SYNTH_CONTROL _SIOWR('Q', 21, struct synth_control)
+#define SNDCTL_SYNTH_REMOVESAMPLE _SIOWR('Q', 22, struct remove_sample)
+typedef struct synth_control {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- int devno;
- char data[4000];
-}synth_control;
+  int devno;
+  char data[4000];
+} synth_control;
+typedef struct remove_sample {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef struct remove_sample
-{
- int devno;
- int bankno;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int instrno;
+  int devno;
+  int bankno;
+  int instrno;
 } remove_sample;
-typedef struct seq_event_rec {
- unsigned char arr[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct seq_event_rec {
+  unsigned char arr[8];
 } seq_event_rec;
 #define SNDCTL_TMR_TIMEBASE _SIOWR('T', 1, int)
-#define SNDCTL_TMR_START _SIO ('T', 2)
-#define SNDCTL_TMR_STOP _SIO ('T', 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_TMR_CONTINUE _SIO ('T', 4)
+#define SNDCTL_TMR_START _SIO('T', 2)
+#define SNDCTL_TMR_STOP _SIO('T', 3)
+#define SNDCTL_TMR_CONTINUE _SIO('T', 4)
 #define SNDCTL_TMR_TEMPO _SIOWR('T', 5, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_TMR_SOURCE _SIOWR('T', 6, int)
 #define TMR_INTERNAL 0x00000001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_EXTERNAL 0x00000002
 #define TMR_MODE_MIDI 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_MODE_FSK 0x00000020
 #define TMR_MODE_CLS 0x00000040
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_MODE_SMPTE 0x00000080
-#define SNDCTL_TMR_METRONOME _SIOW ('T', 7, int)
-#define SNDCTL_TMR_SELECT _SIOW ('T', 8, int)
-#define _LINUX_PATCHKEY_H_INDIRECT
+#define SNDCTL_TMR_METRONOME _SIOW('T', 7, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDCTL_TMR_SELECT _SIOW('T', 8, int)
+#define _LINUX_PATCHKEY_H_INDIRECT
 #include <linux/patchkey.h>
 #undef _LINUX_PATCHKEY_H_INDIRECT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BYTE_ORDER
 #if __BYTE_ORDER == __BIG_ENDIAN
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_S16_NE AFMT_S16_BE
-#elif __BYTE_ORDER == __LITTLE_ENDIAN
+#elif __BYTE_ORDER==__LITTLE_ENDIAN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_S16_NE AFMT_S16_LE
 #else
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error "could not determine byte order"
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 struct patch_info {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short key;
+  unsigned short key;
 #define WAVE_PATCH _PATCHKEY(0x04)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GUS_PATCH WAVE_PATCH
 #define WAVEFRONT_PATCH _PATCHKEY(0x06)
+  short device_no;
+  short instr_no;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short device_no;
- short instr_no;
- unsigned int mode;
+  unsigned int mode;
 #define WAVE_16_BITS 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_UNSIGNED 0x02
 #define WAVE_LOOPING 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_BIDIR_LOOP 0x08
 #define WAVE_LOOP_BACK 0x10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_SUSTAIN_ON 0x20
 #define WAVE_ENVELOPES 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_FAST_RELEASE 0x80
 #define WAVE_VIBRATO 0x00010000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_TREMOLO 0x00020000
 #define WAVE_SCALE 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_FRACTIONS 0x00080000
 #define WAVE_ROM 0x40000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_MULAW 0x20000000
- int len;
- int loop_start, loop_end;
- unsigned int base_freq;
+  int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int base_note;
- unsigned int high_note;
- unsigned int low_note;
- int panning;
+  int loop_start, loop_end;
+  unsigned int base_freq;
+  unsigned int base_note;
+  unsigned int high_note;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int detuning;
- unsigned char env_rate[ 6 ];
- unsigned char env_offset[ 6 ];
- unsigned char tremolo_sweep;
+  unsigned int low_note;
+  int panning;
+  int detuning;
+  unsigned char env_rate[6];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char tremolo_rate;
- unsigned char tremolo_depth;
- unsigned char vibrato_sweep;
- unsigned char vibrato_rate;
+  unsigned char env_offset[6];
+  unsigned char tremolo_sweep;
+  unsigned char tremolo_rate;
+  unsigned char tremolo_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char vibrato_depth;
- int scale_frequency;
- unsigned int scale_factor;
- int volume;
+  unsigned char vibrato_sweep;
+  unsigned char vibrato_rate;
+  unsigned char vibrato_depth;
+  int scale_frequency;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int fractions;
- int reserved1;
- int spare[2];
- char data[1];
+  unsigned int scale_factor;
+  int volume;
+  int fractions;
+  int reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+  int spare[2];
+  char data[1];
+};
 struct sysex_info {
- short key;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  short key;
 #define SYSEX_PATCH _PATCHKEY(0x05)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAUI_PATCH _PATCHKEY(0x06)
- short device_no;
- int len;
- unsigned char data[1];
+  short device_no;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
+  int len;
+  unsigned char data[1];
+};
 #define SEQ_NOTEOFF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_FMNOTEOFF SEQ_NOTEOFF
 #define SEQ_NOTEON 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_FMNOTEON SEQ_NOTEON
 #define SEQ_WAIT TMR_WAIT_ABS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_PGMCHANGE 3
 #define SEQ_FMPGMCHANGE SEQ_PGMCHANGE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_SYNCTIMER TMR_START
 #define SEQ_MIDIPUTC 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_DRUMON 6
 #define SEQ_DRUMOFF 7
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_ECHO TMR_ECHO
 #define SEQ_AFTERTOUCH 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_CONTROLLER 10
 #define CTL_BANK_SELECT 0x00
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_MODWHEEL 0x01
 #define CTL_BREATH 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_FOOT 0x04
 #define CTL_PORTAMENTO_TIME 0x05
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_DATA_ENTRY 0x06
 #define CTL_MAIN_VOLUME 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_BALANCE 0x08
 #define CTL_PAN 0x0a
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_EXPRESSION 0x0b
 #define CTL_GENERAL_PURPOSE1 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_GENERAL_PURPOSE2 0x11
 #define CTL_GENERAL_PURPOSE3 0x12
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_GENERAL_PURPOSE4 0x13
 #define CTL_DAMPER_PEDAL 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_SUSTAIN 0x40
 #define CTL_HOLD 0x40
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_PORTAMENTO 0x41
 #define CTL_SOSTENUTO 0x42
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_SOFT_PEDAL 0x43
 #define CTL_HOLD2 0x45
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_GENERAL_PURPOSE5 0x50
 #define CTL_GENERAL_PURPOSE6 0x51
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_GENERAL_PURPOSE7 0x52
 #define CTL_GENERAL_PURPOSE8 0x53
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_EXT_EFF_DEPTH 0x5b
 #define CTL_TREMOLO_DEPTH 0x5c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_CHORUS_DEPTH 0x5d
 #define CTL_DETUNE_DEPTH 0x5e
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_CELESTE_DEPTH 0x5e
 #define CTL_PHASER_DEPTH 0x5f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_DATA_INCREMENT 0x60
 #define CTL_DATA_DECREMENT 0x61
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_NONREG_PARM_NUM_LSB 0x62
 #define CTL_NONREG_PARM_NUM_MSB 0x63
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_REGIST_PARM_NUM_LSB 0x64
 #define CTL_REGIST_PARM_NUM_MSB 0x65
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTRL_PITCH_BENDER 255
 #define CTRL_PITCH_BENDER_RANGE 254
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTRL_EXPRESSION 253
 #define CTRL_MAIN_VOLUME 252
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_BALANCE 11
 #define SEQ_VOLMODE 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOL_METHOD_ADAGIO 1
 #define VOL_METHOD_LINEAR 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_FULLSIZE 0xfd
 #define SEQ_PRIVATE 0xfe
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_EXTENDED 0xff
 typedef unsigned char sbi_instr_data[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sbi_instrument {
- unsigned short key;
+  unsigned short key;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FM_PATCH _PATCHKEY(0x01)
 #define OPL3_PATCH _PATCHKEY(0x03)
+  short device;
+  int channel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short device;
- int channel;
- sbi_instr_data operators;
- };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  sbi_instr_data operators;
+};
 struct synth_info {
- char name[30];
- int device;
- int synth_type;
+  char name[30];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int device;
+  int synth_type;
 #define SYNTH_TYPE_FM 0
 #define SYNTH_TYPE_SAMPLE 1
-#define SYNTH_TYPE_MIDI 2
- int synth_subtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYNTH_TYPE_MIDI 2
+  int synth_subtype;
 #define FM_TYPE_ADLIB 0x00
 #define FM_TYPE_OPL3 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIDI_TYPE_MPU401 0x401
 #define SAMPLE_TYPE_BASIC 0x10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAMPLE_TYPE_GUS SAMPLE_TYPE_BASIC
 #define SAMPLE_TYPE_WAVEFRONT 0x11
- int perc_mode;
- int nr_voices;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int nr_drums;
- int instr_bank_size;
- unsigned int capabilities;
+  int perc_mode;
+  int nr_voices;
+  int nr_drums;
+  int instr_bank_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int capabilities;
 #define SYNTH_CAP_PERCMODE 0x00000001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNTH_CAP_OPL3 0x00000002
 #define SYNTH_CAP_INPUT 0x00000004
- int dummies[19];
- };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int dummies[19];
+};
 struct sound_timer_info {
- char name[32];
- int caps;
- };
+  char name[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int caps;
+};
 #define MIDI_CAP_MPU401 1
 struct midi_info {
- char name[30];
- int device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int capabilities;
- int dev_type;
- int dummies[18];
- };
+  char name[30];
+  int device;
+  unsigned int capabilities;
+  int dev_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int dummies[18];
+};
 typedef struct {
- unsigned char cmd;
- char nr_args, nr_returns;
- unsigned char data[30];
+  unsigned char cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } mpu_command_rec;
+  char nr_args, nr_returns;
+  unsigned char data[30];
+} mpu_command_rec;
 #define SNDCTL_MIDI_PRETIME _SIOWR('m', 0, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_MIDI_MPUMODE _SIOWR('m', 1, int)
 #define SNDCTL_MIDI_MPUCMD _SIOWR('m', 2, mpu_command_rec)
+#define SNDCTL_DSP_RESET _SIO('P', 0)
+#define SNDCTL_DSP_SYNC _SIO('P', 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_DSP_RESET _SIO ('P', 0)
-#define SNDCTL_DSP_SYNC _SIO ('P', 1)
 #define SNDCTL_DSP_SPEED _SIOWR('P', 2, int)
 #define SNDCTL_DSP_STEREO _SIOWR('P', 3, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_GETBLKSIZE _SIOWR('P', 4, int)
 #define SNDCTL_DSP_SAMPLESIZE SNDCTL_DSP_SETFMT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_CHANNELS _SIOWR('P', 6, int)
 #define SOUND_PCM_WRITE_CHANNELS SNDCTL_DSP_CHANNELS
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_WRITE_FILTER _SIOWR('P', 7, int)
-#define SNDCTL_DSP_POST _SIO ('P', 8)
-#define SNDCTL_DSP_SUBDIVIDE _SIOWR('P', 9, int)
-#define SNDCTL_DSP_SETFRAGMENT _SIOWR('P',10, int)
+#define SNDCTL_DSP_POST _SIO('P', 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_DSP_GETFMTS _SIOR ('P',11, int)
-#define SNDCTL_DSP_SETFMT _SIOWR('P',5, int)
+#define SNDCTL_DSP_SUBDIVIDE _SIOWR('P', 9, int)
+#define SNDCTL_DSP_SETFRAGMENT _SIOWR('P', 10, int)
+#define SNDCTL_DSP_GETFMTS _SIOR('P', 11, int)
+#define SNDCTL_DSP_SETFMT _SIOWR('P', 5, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_QUERY 0x00000000
 #define AFMT_MU_LAW 0x00000001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_A_LAW 0x00000002
 #define AFMT_IMA_ADPCM 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_U8 0x00000008
 #define AFMT_S16_LE 0x00000010
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_S16_BE 0x00000020
 #define AFMT_S8 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_U16_LE 0x00000080
 #define AFMT_U16_BE 0x00000100
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_MPEG 0x00000200
 #define AFMT_AC3 0x00000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct audio_buf_info {
- int fragments;
+  int fragments;
+  int fragstotal;
+  int fragsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int fragstotal;
- int fragsize;
- int bytes;
- } audio_buf_info;
+  int bytes;
+} audio_buf_info;
+#define SNDCTL_DSP_GETOSPACE _SIOR('P', 12, audio_buf_info)
+#define SNDCTL_DSP_GETISPACE _SIOR('P', 13, audio_buf_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_DSP_GETOSPACE _SIOR ('P',12, audio_buf_info)
-#define SNDCTL_DSP_GETISPACE _SIOR ('P',13, audio_buf_info)
-#define SNDCTL_DSP_NONBLOCK _SIO ('P',14)
-#define SNDCTL_DSP_GETCAPS _SIOR ('P',15, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDCTL_DSP_NONBLOCK _SIO('P', 14)
+#define SNDCTL_DSP_GETCAPS _SIOR('P', 15, int)
 #define DSP_CAP_REVISION 0x000000ff
 #define DSP_CAP_DUPLEX 0x00000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CAP_REALTIME 0x00000200
 #define DSP_CAP_BATCH 0x00000400
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CAP_COPROC 0x00000800
 #define DSP_CAP_TRIGGER 0x00001000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CAP_MMAP 0x00002000
 #define DSP_CAP_MULTI 0x00004000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CAP_BIND 0x00008000
-#define SNDCTL_DSP_GETTRIGGER _SIOR ('P',16, int)
-#define SNDCTL_DSP_SETTRIGGER _SIOW ('P',16, int)
-#define PCM_ENABLE_INPUT 0x00000001
+#define SNDCTL_DSP_GETTRIGGER _SIOR('P', 16, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDCTL_DSP_SETTRIGGER _SIOW('P', 16, int)
+#define PCM_ENABLE_INPUT 0x00000001
 #define PCM_ENABLE_OUTPUT 0x00000002
 typedef struct count_info {
- int bytes;
- int blocks;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ptr;
- } count_info;
-#define SNDCTL_DSP_GETIPTR _SIOR ('P',17, count_info)
-#define SNDCTL_DSP_GETOPTR _SIOR ('P',18, count_info)
+  int bytes;
+  int blocks;
+  int ptr;
+} count_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDCTL_DSP_GETIPTR _SIOR('P', 17, count_info)
+#define SNDCTL_DSP_GETOPTR _SIOR('P', 18, count_info)
 typedef struct buffmem_desc {
- unsigned *buffer;
- int size;
- } buffmem_desc;
+  unsigned * buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_DSP_MAPINBUF _SIOR ('P', 19, buffmem_desc)
-#define SNDCTL_DSP_MAPOUTBUF _SIOR ('P', 20, buffmem_desc)
-#define SNDCTL_DSP_SETSYNCRO _SIO ('P', 21)
-#define SNDCTL_DSP_SETDUPLEX _SIO ('P', 22)
+  int size;
+} buffmem_desc;
+#define SNDCTL_DSP_MAPINBUF _SIOR('P', 19, buffmem_desc)
+#define SNDCTL_DSP_MAPOUTBUF _SIOR('P', 20, buffmem_desc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_DSP_GETODELAY _SIOR ('P', 23, int)
+#define SNDCTL_DSP_SETSYNCRO _SIO('P', 21)
+#define SNDCTL_DSP_SETDUPLEX _SIO('P', 22)
+#define SNDCTL_DSP_GETODELAY _SIOR('P', 23, int)
 #define SNDCTL_DSP_GETCHANNELMASK _SIOWR('P', 64, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_BIND_CHANNEL _SIOWR('P', 65, int)
 #define DSP_BIND_QUERY 0x00000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_FRONT 0x00000001
 #define DSP_BIND_SURR 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_CENTER_LFE 0x00000004
 #define DSP_BIND_HANDSET 0x00000008
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_MIC 0x00000010
 #define DSP_BIND_MODEM1 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_MODEM2 0x00000040
 #define DSP_BIND_I2S 0x00000080
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_SPDIF 0x00000100
-#define SNDCTL_DSP_SETSPDIF _SIOW ('P', 66, int)
-#define SNDCTL_DSP_GETSPDIF _SIOR ('P', 67, int)
-#define SPDIF_PRO 0x0001
+#define SNDCTL_DSP_SETSPDIF _SIOW('P', 66, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDCTL_DSP_GETSPDIF _SIOR('P', 67, int)
+#define SPDIF_PRO 0x0001
 #define SPDIF_N_AUD 0x0002
 #define SPDIF_COPY 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPDIF_PRE 0x0008
 #define SPDIF_CC 0x07f0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPDIF_L 0x0800
 #define SPDIF_DRS 0x4000
-#define SPDIF_V 0x8000
-#define SNDCTL_DSP_PROFILE _SIOW ('P', 23, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SPDIF_V 0x8000
+#define SNDCTL_DSP_PROFILE _SIOW('P', 23, int)
 #define APF_NORMAL 0
 #define APF_NETWORK 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APF_CPUINTENS 2
-#define SOUND_PCM_READ_RATE _SIOR ('P', 2, int)
+#define SOUND_PCM_READ_RATE _SIOR('P', 2, int)
+#define SOUND_PCM_READ_CHANNELS _SIOR('P', 6, int)
+#define SOUND_PCM_READ_BITS _SIOR('P', 5, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SOUND_PCM_READ_CHANNELS _SIOR ('P', 6, int)
-#define SOUND_PCM_READ_BITS _SIOR ('P', 5, int)
-#define SOUND_PCM_READ_FILTER _SIOR ('P', 7, int)
+#define SOUND_PCM_READ_FILTER _SIOR('P', 7, int)
 #define SOUND_PCM_WRITE_BITS SNDCTL_DSP_SETFMT
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_WRITE_RATE SNDCTL_DSP_SPEED
 #define SOUND_PCM_POST SNDCTL_DSP_POST
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_RESET SNDCTL_DSP_RESET
 #define SOUND_PCM_SYNC SNDCTL_DSP_SYNC
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_SUBDIVIDE SNDCTL_DSP_SUBDIVIDE
 #define SOUND_PCM_SETFRAGMENT SNDCTL_DSP_SETFRAGMENT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_GETFMTS SNDCTL_DSP_GETFMTS
 #define SOUND_PCM_SETFMT SNDCTL_DSP_SETFMT
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_GETOSPACE SNDCTL_DSP_GETOSPACE
 #define SOUND_PCM_GETISPACE SNDCTL_DSP_GETISPACE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_NONBLOCK SNDCTL_DSP_NONBLOCK
 #define SOUND_PCM_GETCAPS SNDCTL_DSP_GETCAPS
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_GETTRIGGER SNDCTL_DSP_GETTRIGGER
 #define SOUND_PCM_SETTRIGGER SNDCTL_DSP_SETTRIGGER
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_SETSYNCRO SNDCTL_DSP_SETSYNCRO
 #define SOUND_PCM_GETIPTR SNDCTL_DSP_GETIPTR
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_GETOPTR SNDCTL_DSP_GETOPTR
 #define SOUND_PCM_MAPINBUF SNDCTL_DSP_MAPINBUF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_MAPOUTBUF SNDCTL_DSP_MAPOUTBUF
 typedef struct copr_buffer {
+  int command;
+  int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int command;
- int flags;
 #define CPF_NONE 0x0000
 #define CPF_FIRST 0x0001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPF_LAST 0x0002
- int len;
- int offs;
- unsigned char data[4000];
+  int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } copr_buffer;
+  int offs;
+  unsigned char data[4000];
+} copr_buffer;
 typedef struct copr_debug_buf {
- int command;
- int parm1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int parm2;
- int flags;
- int len;
- } copr_debug_buf;
+  int command;
+  int parm1;
+  int parm2;
+  int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int len;
+} copr_debug_buf;
 typedef struct copr_msg {
- int len;
- unsigned char data[4000];
- } copr_msg;
+  int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_COPR_RESET _SIO ('C', 0)
+  unsigned char data[4000];
+} copr_msg;
+#define SNDCTL_COPR_RESET _SIO('C', 0)
 #define SNDCTL_COPR_LOAD _SIOWR('C', 1, copr_buffer)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_COPR_RDATA _SIOWR('C', 2, copr_debug_buf)
 #define SNDCTL_COPR_RCODE _SIOWR('C', 3, copr_debug_buf)
+#define SNDCTL_COPR_WDATA _SIOW('C', 4, copr_debug_buf)
+#define SNDCTL_COPR_WCODE _SIOW('C', 5, copr_debug_buf)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDCTL_COPR_WDATA _SIOW ('C', 4, copr_debug_buf)
-#define SNDCTL_COPR_WCODE _SIOW ('C', 5, copr_debug_buf)
 #define SNDCTL_COPR_RUN _SIOWR('C', 6, copr_debug_buf)
 #define SNDCTL_COPR_HALT _SIOWR('C', 7, copr_debug_buf)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_COPR_SENDMSG _SIOWR('C', 8, copr_msg)
-#define SNDCTL_COPR_RCVMSG _SIOR ('C', 9, copr_msg)
+#define SNDCTL_COPR_RCVMSG _SIOR('C', 9, copr_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_NRDEVICES 25
 #define SOUND_MIXER_VOLUME 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_BASS 1
 #define SOUND_MIXER_TREBLE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_SYNTH 3
 #define SOUND_MIXER_PCM 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_SPEAKER 5
 #define SOUND_MIXER_LINE 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_MIC 7
 #define SOUND_MIXER_CD 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_IMIX 9
 #define SOUND_MIXER_ALTPCM 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_RECLEV 11
 #define SOUND_MIXER_IGAIN 12
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_OGAIN 13
 #define SOUND_MIXER_LINE1 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_LINE2 15
 #define SOUND_MIXER_LINE3 16
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_DIGITAL1 17
 #define SOUND_MIXER_DIGITAL2 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_DIGITAL3 19
 #define SOUND_MIXER_PHONEIN 20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_PHONEOUT 21
 #define SOUND_MIXER_VIDEO 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_RADIO 23
 #define SOUND_MIXER_MONITOR 24
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_ONOFF_MIN 28
 #define SOUND_ONOFF_MAX 30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_NONE 31
 #define SOUND_MIXER_ENHANCE SOUND_MIXER_NONE
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_MUTE SOUND_MIXER_NONE
 #define SOUND_MIXER_LOUD SOUND_MIXER_NONE
-#define SOUND_DEVICE_LABELS {"Vol  ", "Bass ", "Trebl", "Synth", "Pcm  ", "Spkr ", "Line ",   "Mic  ", "CD   ", "Mix  ", "Pcm2 ", "Rec  ", "IGain", "OGain",   "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3",   "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor"}
-#define SOUND_DEVICE_NAMES {"vol", "bass", "treble", "synth", "pcm", "speaker", "line",   "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain",   "line1", "line2", "line3", "dig1", "dig2", "dig3",   "phin", "phout", "video", "radio", "monitor"}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SOUND_DEVICE_LABELS { "Vol  ", "Bass ", "Trebl", "Synth", "Pcm  ", "Spkr ", "Line ", "Mic  ", "CD   ", "Mix  ", "Pcm2 ", "Rec  ", "IGain", "OGain", "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3", "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor" }
+#define SOUND_DEVICE_NAMES { "vol", "bass", "treble", "synth", "pcm", "speaker", "line", "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", "line1", "line2", "line3", "dig1", "dig2", "dig3", "phin", "phout", "video", "radio", "monitor" }
 #define SOUND_MIXER_RECSRC 0xff
 #define SOUND_MIXER_DEVMASK 0xfe
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_RECMASK 0xfd
 #define SOUND_MIXER_CAPS 0xfc
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_CAP_EXCL_INPUT 0x00000001
 #define SOUND_MIXER_STEREODEVS 0xfb
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_OUTSRC 0xfa
 #define SOUND_MIXER_OUTMASK 0xf9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)
 #define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)
 #define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)
 #define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)
 #define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_CD (1 << SOUND_MIXER_CD)
 #define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)
 #define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_IGAIN (1 << SOUND_MIXER_IGAIN)
 #define SOUND_MASK_OGAIN (1 << SOUND_MIXER_OGAIN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_LINE1 (1 << SOUND_MIXER_LINE1)
 #define SOUND_MASK_LINE2 (1 << SOUND_MIXER_LINE2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_LINE3 (1 << SOUND_MIXER_LINE3)
 #define SOUND_MASK_DIGITAL1 (1 << SOUND_MIXER_DIGITAL1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_DIGITAL2 (1 << SOUND_MIXER_DIGITAL2)
 #define SOUND_MASK_DIGITAL3 (1 << SOUND_MIXER_DIGITAL3)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_PHONEIN (1 << SOUND_MIXER_PHONEIN)
 #define SOUND_MASK_PHONEOUT (1 << SOUND_MIXER_PHONEOUT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_RADIO (1 << SOUND_MIXER_RADIO)
 #define SOUND_MASK_VIDEO (1 << SOUND_MIXER_VIDEO)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_MONITOR (1 << SOUND_MIXER_MONITOR)
 #define SOUND_MASK_MUTE (1 << SOUND_MIXER_MUTE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_ENHANCE (1 << SOUND_MIXER_ENHANCE)
 #define SOUND_MASK_LOUD (1 << SOUND_MIXER_LOUD)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIXER_READ(dev) _SIOR('M', dev, int)
 #define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)
 #define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)
 #define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)
 #define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)
 #define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)
 #define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)
 #define SOUND_MIXER_READ_IGAIN MIXER_READ(SOUND_MIXER_IGAIN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_OGAIN MIXER_READ(SOUND_MIXER_OGAIN)
 #define SOUND_MIXER_READ_LINE1 MIXER_READ(SOUND_MIXER_LINE1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_LINE2 MIXER_READ(SOUND_MIXER_LINE2)
 #define SOUND_MIXER_READ_LINE3 MIXER_READ(SOUND_MIXER_LINE3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_MUTE MIXER_READ(SOUND_MIXER_MUTE)
 #define SOUND_MIXER_READ_ENHANCE MIXER_READ(SOUND_MIXER_ENHANCE)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_LOUD MIXER_READ(SOUND_MIXER_LOUD)
 #define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)
 #define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)
 #define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIXER_WRITE(dev) _SIOWR('M', dev, int)
 #define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)
 #define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)
 #define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)
 #define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)
 #define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)
 #define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)
 #define SOUND_MIXER_WRITE_IGAIN MIXER_WRITE(SOUND_MIXER_IGAIN)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_OGAIN MIXER_WRITE(SOUND_MIXER_OGAIN)
 #define SOUND_MIXER_WRITE_LINE1 MIXER_WRITE(SOUND_MIXER_LINE1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_LINE2 MIXER_WRITE(SOUND_MIXER_LINE2)
 #define SOUND_MIXER_WRITE_LINE3 MIXER_WRITE(SOUND_MIXER_LINE3)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_MUTE MIXER_WRITE(SOUND_MIXER_MUTE)
 #define SOUND_MIXER_WRITE_ENHANCE MIXER_WRITE(SOUND_MIXER_ENHANCE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_LOUD MIXER_WRITE(SOUND_MIXER_LOUD)
 #define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)
+typedef struct mixer_info {
+  char id[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef struct mixer_info
-{
- char id[16];
- char name[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int modify_counter;
- int fillers[10];
+  char name[32];
+  int modify_counter;
+  int fillers[10];
 } mixer_info;
-typedef struct _old_mixer_info
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- char id[16];
- char name[32];
+typedef struct _old_mixer_info {
+  char id[16];
+  char name[32];
 } _old_mixer_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SOUND_MIXER_INFO _SIOR ('M', 101, mixer_info)
-#define SOUND_OLD_MIXER_INFO _SIOR ('M', 101, _old_mixer_info)
+#define SOUND_MIXER_INFO _SIOR('M', 101, mixer_info)
+#define SOUND_OLD_MIXER_INFO _SIOR('M', 101, _old_mixer_info)
 typedef unsigned char mixer_record[128];
 #define SOUND_MIXER_ACCESS _SIOWR('M', 102, mixer_record)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -746,14 +741,14 @@
 #define SOUND_MIXER_PRIVATE5 _SIOWR('M', 115, int)
 typedef struct mixer_vol_table {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int num;
- char name[32];
- int levels[32];
+  int num;
+  char name[32];
+  int levels[32];
 } mixer_vol_table;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_GETLEVELS _SIOWR('M', 116, mixer_vol_table)
 #define SOUND_MIXER_SETLEVELS _SIOWR('M', 117, mixer_vol_table)
-#define OSS_GETVERSION _SIOR ('M', 118, int)
+#define OSS_GETVERSION _SIOR('M', 118, int)
 #define EV_SEQ_LOCAL 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_TIMING 0x81
@@ -787,14 +782,14 @@
 #define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_PM_DEFINES int __foo_bar___
-#define SEQ_LOAD_GMINSTR(dev, instr)
-#define SEQ_LOAD_GMDRUM(dev, drum)
+#define SEQ_LOAD_GMINSTR(dev,instr)
+#define SEQ_LOAD_GMDRUM(dev,drum)
 #define _SEQ_EXTERN extern
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SEQ_USE_EXTBUF()   _SEQ_EXTERN unsigned char _seqbuf[];   _SEQ_EXTERN int _seqbuflen; _SEQ_EXTERN int _seqbufptr
+#define SEQ_USE_EXTBUF() _SEQ_EXTERN unsigned char _seqbuf[]; _SEQ_EXTERN int _seqbuflen; _SEQ_EXTERN int _seqbufptr
 #ifndef USE_SIMPLE_MACROS
-#define SEQ_DEFINEBUF(len) unsigned char _seqbuf[len]; int _seqbuflen = len;int _seqbufptr = 0
-#define _SEQ_NEEDBUF(len) if ((_seqbufptr+(len)) > _seqbuflen) seqbuf_dump()
+#define SEQ_DEFINEBUF(len) unsigned char _seqbuf[len]; int _seqbuflen = len; int _seqbufptr = 0
+#define _SEQ_NEEDBUF(len) if((_seqbufptr + (len)) > _seqbuflen) seqbuf_dump()
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SEQ_ADVBUF(len) _seqbufptr += len
 #define SEQ_DUMPBUF seqbuf_dump
@@ -802,29 +797,29 @@
 #define _SEQ_NEEDBUF(len)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-#define SEQ_VOLUME_MODE(dev, mode) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = SEQ_EXTENDED;  _seqbuf[_seqbufptr+1] = SEQ_VOLMODE;  _seqbuf[_seqbufptr+2] = (dev);  _seqbuf[_seqbufptr+3] = (mode);  _seqbuf[_seqbufptr+4] = 0;  _seqbuf[_seqbufptr+5] = 0;  _seqbuf[_seqbufptr+6] = 0;  _seqbuf[_seqbufptr+7] = 0;  _SEQ_ADVBUF(8);}
-#define _CHN_VOICE(dev, event, chn, note, parm)   {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = EV_CHN_VOICE;  _seqbuf[_seqbufptr+1] = (dev);  _seqbuf[_seqbufptr+2] = (event);  _seqbuf[_seqbufptr+3] = (chn);  _seqbuf[_seqbufptr+4] = (note);  _seqbuf[_seqbufptr+5] = (parm);  _seqbuf[_seqbufptr+6] = (0);  _seqbuf[_seqbufptr+7] = 0;  _SEQ_ADVBUF(8);}
-#define SEQ_START_NOTE(dev, chn, note, vol)   _CHN_VOICE(dev, MIDI_NOTEON, chn, note, vol)
+#define SEQ_VOLUME_MODE(dev,mode) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = SEQ_EXTENDED; _seqbuf[_seqbufptr + 1] = SEQ_VOLMODE; _seqbuf[_seqbufptr + 2] = (dev); _seqbuf[_seqbufptr + 3] = (mode); _seqbuf[_seqbufptr + 4] = 0; _seqbuf[_seqbufptr + 5] = 0; _seqbuf[_seqbufptr + 6] = 0; _seqbuf[_seqbufptr + 7] = 0; _SEQ_ADVBUF(8); }
+#define _CHN_VOICE(dev,event,chn,note,parm) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = EV_CHN_VOICE; _seqbuf[_seqbufptr + 1] = (dev); _seqbuf[_seqbufptr + 2] = (event); _seqbuf[_seqbufptr + 3] = (chn); _seqbuf[_seqbufptr + 4] = (note); _seqbuf[_seqbufptr + 5] = (parm); _seqbuf[_seqbufptr + 6] = (0); _seqbuf[_seqbufptr + 7] = 0; _SEQ_ADVBUF(8); }
+#define SEQ_START_NOTE(dev,chn,note,vol) _CHN_VOICE(dev, MIDI_NOTEON, chn, note, vol)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SEQ_STOP_NOTE(dev, chn, note, vol)   _CHN_VOICE(dev, MIDI_NOTEOFF, chn, note, vol)
-#define SEQ_KEY_PRESSURE(dev, chn, note, pressure)   _CHN_VOICE(dev, MIDI_KEY_PRESSURE, chn, note, pressure)
-#define _CHN_COMMON(dev, event, chn, p1, p2, w14)   {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = EV_CHN_COMMON;  _seqbuf[_seqbufptr+1] = (dev);  _seqbuf[_seqbufptr+2] = (event);  _seqbuf[_seqbufptr+3] = (chn);  _seqbuf[_seqbufptr+4] = (p1);  _seqbuf[_seqbufptr+5] = (p2);  *(short *)&_seqbuf[_seqbufptr+6] = (w14);  _SEQ_ADVBUF(8);}
-#define SEQ_SYSEX(dev, buf, len)   {int ii, ll=(len);   unsigned char *bufp=buf;  if (ll>6)ll=6;  _SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = EV_SYSEX;  _seqbuf[_seqbufptr+1] = (dev);  for(ii=0;ii<ll;ii++)  _seqbuf[_seqbufptr+ii+2] = bufp[ii];  for(ii=ll;ii<6;ii++)  _seqbuf[_seqbufptr+ii+2] = 0xff;  _SEQ_ADVBUF(8);}
+#define SEQ_STOP_NOTE(dev,chn,note,vol) _CHN_VOICE(dev, MIDI_NOTEOFF, chn, note, vol)
+#define SEQ_KEY_PRESSURE(dev,chn,note,pressure) _CHN_VOICE(dev, MIDI_KEY_PRESSURE, chn, note, pressure)
+#define _CHN_COMMON(dev,event,chn,p1,p2,w14) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = EV_CHN_COMMON; _seqbuf[_seqbufptr + 1] = (dev); _seqbuf[_seqbufptr + 2] = (event); _seqbuf[_seqbufptr + 3] = (chn); _seqbuf[_seqbufptr + 4] = (p1); _seqbuf[_seqbufptr + 5] = (p2); * (short *) & _seqbuf[_seqbufptr + 6] = (w14); _SEQ_ADVBUF(8); }
+#define SEQ_SYSEX(dev,buf,len) { int ii, ll = (len); unsigned char * bufp = buf; if(ll > 6) ll = 6; _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = EV_SYSEX; _seqbuf[_seqbufptr + 1] = (dev); for(ii = 0; ii < ll; ii ++) _seqbuf[_seqbufptr + ii + 2] = bufp[ii]; for(ii = ll; ii < 6; ii ++) _seqbuf[_seqbufptr + ii + 2] = 0xff; _SEQ_ADVBUF(8); }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SEQ_CHN_PRESSURE(dev, chn, pressure)   _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
+#define SEQ_CHN_PRESSURE(dev,chn,pressure) _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
 #define SEQ_SET_PATCH SEQ_PGM_CHANGE
-#define SEQ_PGM_CHANGE(dev, chn, patch)   _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
-#define SEQ_CONTROL(dev, chn, controller, value)   _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
+#define SEQ_PGM_CHANGE(dev,chn,patch) _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
+#define SEQ_CONTROL(dev,chn,controller,value) _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SEQ_BENDER(dev, chn, value)   _CHN_COMMON(dev, MIDI_PITCH_BEND, chn, 0, 0, value)
-#define SEQ_V2_X_CONTROL(dev, voice, controller, value) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = SEQ_EXTENDED;  _seqbuf[_seqbufptr+1] = SEQ_CONTROLLER;  _seqbuf[_seqbufptr+2] = (dev);  _seqbuf[_seqbufptr+3] = (voice);  _seqbuf[_seqbufptr+4] = (controller);  _seqbuf[_seqbufptr+5] = ((value)&0xff);  _seqbuf[_seqbufptr+6] = ((value>>8)&0xff);  _seqbuf[_seqbufptr+7] = 0;  _SEQ_ADVBUF(8);}
-#define SEQ_PITCHBEND(dev, voice, value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER, value)
-#define SEQ_BENDER_RANGE(dev, voice, value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER_RANGE, value)
+#define SEQ_BENDER(dev,chn,value) _CHN_COMMON(dev, MIDI_PITCH_BEND, chn, 0, 0, value)
+#define SEQ_V2_X_CONTROL(dev,voice,controller,value) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = SEQ_EXTENDED; _seqbuf[_seqbufptr + 1] = SEQ_CONTROLLER; _seqbuf[_seqbufptr + 2] = (dev); _seqbuf[_seqbufptr + 3] = (voice); _seqbuf[_seqbufptr + 4] = (controller); _seqbuf[_seqbufptr + 5] = ((value) & 0xff); _seqbuf[_seqbufptr + 6] = ((value >> 8) & 0xff); _seqbuf[_seqbufptr + 7] = 0; _SEQ_ADVBUF(8); }
+#define SEQ_PITCHBEND(dev,voice,value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER, value)
+#define SEQ_BENDER_RANGE(dev,voice,value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER_RANGE, value)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SEQ_EXPRESSION(dev, voice, value) SEQ_CONTROL(dev, voice, CTL_EXPRESSION, value*128)
-#define SEQ_MAIN_VOLUME(dev, voice, value) SEQ_CONTROL(dev, voice, CTL_MAIN_VOLUME, (value*16383)/100)
-#define SEQ_PANNING(dev, voice, pos) SEQ_CONTROL(dev, voice, CTL_PAN, (pos+128) / 2)
-#define _TIMER_EVENT(ev, parm) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr+0] = EV_TIMING;   _seqbuf[_seqbufptr+1] = (ev);   _seqbuf[_seqbufptr+2] = 0;  _seqbuf[_seqbufptr+3] = 0;  *(unsigned int *)&_seqbuf[_seqbufptr+4] = (parm);   _SEQ_ADVBUF(8);}
+#define SEQ_EXPRESSION(dev,voice,value) SEQ_CONTROL(dev, voice, CTL_EXPRESSION, value * 128)
+#define SEQ_MAIN_VOLUME(dev,voice,value) SEQ_CONTROL(dev, voice, CTL_MAIN_VOLUME, (value * 16383) / 100)
+#define SEQ_PANNING(dev,voice,pos) SEQ_CONTROL(dev, voice, CTL_PAN, (pos + 128) / 2)
+#define _TIMER_EVENT(ev,parm) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr + 0] = EV_TIMING; _seqbuf[_seqbufptr + 1] = (ev); _seqbuf[_seqbufptr + 2] = 0; _seqbuf[_seqbufptr + 3] = 0; * (unsigned int *) & _seqbuf[_seqbufptr + 4] = (parm); _SEQ_ADVBUF(8); }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_START_TIMER() _TIMER_EVENT(TMR_START, 0)
 #define SEQ_STOP_TIMER() _TIMER_EVENT(TMR_STOP, 0)
@@ -837,10 +832,10 @@
 #define SEQ_SONGPOS(pos) _TIMER_EVENT(TMR_SPP, pos)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_TIME_SIGNATURE(sig) _TIMER_EVENT(TMR_TIMESIG, sig)
-#define _LOCAL_EVENT(ev, parm) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr+0] = EV_SEQ_LOCAL;   _seqbuf[_seqbufptr+1] = (ev);   _seqbuf[_seqbufptr+2] = 0;  _seqbuf[_seqbufptr+3] = 0;  *(unsigned int *)&_seqbuf[_seqbufptr+4] = (parm);   _SEQ_ADVBUF(8);}
+#define _LOCAL_EVENT(ev,parm) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr + 0] = EV_SEQ_LOCAL; _seqbuf[_seqbufptr + 1] = (ev); _seqbuf[_seqbufptr + 2] = 0; _seqbuf[_seqbufptr + 3] = 0; * (unsigned int *) & _seqbuf[_seqbufptr + 4] = (parm); _SEQ_ADVBUF(8); }
 #define SEQ_PLAYAUDIO(devmask) _LOCAL_EVENT(LOCL_STARTAUDIO, devmask)
-#define SEQ_MIDIOUT(device, byte) {_SEQ_NEEDBUF(4);  _seqbuf[_seqbufptr] = SEQ_MIDIPUTC;  _seqbuf[_seqbufptr+1] = (byte);  _seqbuf[_seqbufptr+2] = (device);  _seqbuf[_seqbufptr+3] = 0;  _SEQ_ADVBUF(4);}
+#define SEQ_MIDIOUT(device,byte) { _SEQ_NEEDBUF(4); _seqbuf[_seqbufptr] = SEQ_MIDIPUTC; _seqbuf[_seqbufptr + 1] = (byte); _seqbuf[_seqbufptr + 2] = (device); _seqbuf[_seqbufptr + 3] = 0; _SEQ_ADVBUF(4); }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SEQ_WRPATCH(patchx, len)   {if (_seqbufptr) SEQ_DUMPBUF();  if (write(seqfd, (char*)(patchx), len)==-1)   perror("Write patch: /dev/sequencer");}
-#define SEQ_WRPATCH2(patchx, len)   (SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len))
+#define SEQ_WRPATCH(patchx,len) { if(_seqbufptr) SEQ_DUMPBUF(); if(write(seqfd, (char *) (patchx), len) == - 1) perror("Write patch: /dev/sequencer"); }
+#define SEQ_WRPATCH2(patchx,len) (SEQ_DUMPBUF(), write(seqfd, (char *) (patchx), len))
 #endif
diff --git a/libc/kernel/uapi/linux/spi/spidev.h b/libc/kernel/uapi/linux/spi/spidev.h
index 241dc95..c10bf8e 100644
--- a/libc/kernel/uapi/linux/spi/spidev.h
+++ b/libc/kernel/uapi/linux/spi/spidev.h
@@ -22,11 +22,11 @@
 #define SPI_CPHA 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPI_CPOL 0x02
-#define SPI_MODE_0 (0|0)
-#define SPI_MODE_1 (0|SPI_CPHA)
-#define SPI_MODE_2 (SPI_CPOL|0)
+#define SPI_MODE_0 (0 | 0)
+#define SPI_MODE_1 (0 | SPI_CPHA)
+#define SPI_MODE_2 (SPI_CPOL | 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
+#define SPI_MODE_3 (SPI_CPOL | SPI_CPHA)
 #define SPI_CS_HIGH 0x04
 #define SPI_LSB_FIRST 0x08
 #define SPI_3WIRE 0x10
@@ -34,31 +34,41 @@
 #define SPI_LOOP 0x20
 #define SPI_NO_CS 0x40
 #define SPI_READY 0x80
+#define SPI_TX_DUAL 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SPI_TX_QUAD 0x200
+#define SPI_RX_DUAL 0x400
+#define SPI_RX_QUAD 0x800
 #define SPI_IOC_MAGIC 'k'
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct spi_ioc_transfer {
- __u64 tx_buf;
- __u64 rx_buf;
- __u32 len;
+  __u64 tx_buf;
+  __u64 rx_buf;
+  __u32 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 speed_hz;
- __u16 delay_usecs;
- __u8 bits_per_word;
- __u8 cs_change;
+  __u32 speed_hz;
+  __u16 delay_usecs;
+  __u8 bits_per_word;
+  __u8 cs_change;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
+  __u8 tx_nbits;
+  __u8 rx_nbits;
+  __u16 pad;
 };
-#define SPI_MSGSIZE(N)   ((((N)*(sizeof (struct spi_ioc_transfer))) < (1 << _IOC_SIZEBITS))   ? ((N)*(sizeof (struct spi_ioc_transfer))) : 0)
-#define SPI_IOC_MESSAGE(N) _IOW(SPI_IOC_MAGIC, 0, char[SPI_MSGSIZE(N)])
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SPI_MSGSIZE(N) ((((N) * (sizeof(struct spi_ioc_transfer))) < (1 << _IOC_SIZEBITS)) ? ((N) * (sizeof(struct spi_ioc_transfer))) : 0)
+#define SPI_IOC_MESSAGE(N) _IOW(SPI_IOC_MAGIC, 0, char[SPI_MSGSIZE(N)])
 #define SPI_IOC_RD_MODE _IOR(SPI_IOC_MAGIC, 1, __u8)
 #define SPI_IOC_WR_MODE _IOW(SPI_IOC_MAGIC, 1, __u8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPI_IOC_RD_LSB_FIRST _IOR(SPI_IOC_MAGIC, 2, __u8)
 #define SPI_IOC_WR_LSB_FIRST _IOW(SPI_IOC_MAGIC, 2, __u8)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPI_IOC_RD_BITS_PER_WORD _IOR(SPI_IOC_MAGIC, 3, __u8)
 #define SPI_IOC_WR_BITS_PER_WORD _IOW(SPI_IOC_MAGIC, 3, __u8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPI_IOC_RD_MAX_SPEED_HZ _IOR(SPI_IOC_MAGIC, 4, __u32)
 #define SPI_IOC_WR_MAX_SPEED_HZ _IOW(SPI_IOC_MAGIC, 4, __u32)
+#define SPI_IOC_RD_MODE32 _IOR(SPI_IOC_MAGIC, 5, __u32)
+#define SPI_IOC_WR_MODE32 _IOW(SPI_IOC_MAGIC, 5, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/sunrpc/debug.h b/libc/kernel/uapi/linux/sunrpc/debug.h
index 0c254c1..3f09f6d 100644
--- a/libc/kernel/uapi/linux/sunrpc/debug.h
+++ b/libc/kernel/uapi/linux/sunrpc/debug.h
@@ -36,15 +36,15 @@
 #define RPCDBG_ALL 0x7fff
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTL_RPCDEBUG = 1,
- CTL_NFSDEBUG,
- CTL_NFSDDEBUG,
- CTL_NLMDEBUG,
+  CTL_RPCDEBUG = 1,
+  CTL_NFSDEBUG,
+  CTL_NFSDDEBUG,
+  CTL_NLMDEBUG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTL_SLOTTABLE_UDP,
- CTL_SLOTTABLE_TCP,
- CTL_MIN_RESVPORT,
- CTL_MAX_RESVPORT,
+  CTL_SLOTTABLE_UDP,
+  CTL_SLOTTABLE_TCP,
+  CTL_MIN_RESVPORT,
+  CTL_MAX_RESVPORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/suspend_ioctls.h b/libc/kernel/uapi/linux/suspend_ioctls.h
index 40b17e4..6ef192f 100644
--- a/libc/kernel/uapi/linux/suspend_ioctls.h
+++ b/libc/kernel/uapi/linux/suspend_ioctls.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct resume_swap_area {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_loff_t offset;
- __u32 dev;
+  __kernel_loff_t offset;
+  __u32 dev;
 } __attribute__((packed));
 #define SNAPSHOT_IOC_MAGIC '3'
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -33,7 +33,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNAPSHOT_FREE_SWAP_PAGES _IO(SNAPSHOT_IOC_MAGIC, 9)
 #define SNAPSHOT_S2RAM _IO(SNAPSHOT_IOC_MAGIC, 11)
-#define SNAPSHOT_SET_SWAP_AREA _IOW(SNAPSHOT_IOC_MAGIC, 13,   struct resume_swap_area)
+#define SNAPSHOT_SET_SWAP_AREA _IOW(SNAPSHOT_IOC_MAGIC, 13, struct resume_swap_area)
 #define SNAPSHOT_GET_IMAGE_SIZE _IOR(SNAPSHOT_IOC_MAGIC, 14, __kernel_loff_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNAPSHOT_PLATFORM_SUPPORT _IO(SNAPSHOT_IOC_MAGIC, 15)
diff --git a/libc/kernel/uapi/linux/sw_sync.h b/libc/kernel/uapi/linux/sw_sync.h
index 8ab531c..ac50000 100644
--- a/libc/kernel/uapi/linux/sw_sync.h
+++ b/libc/kernel/uapi/linux/sw_sync.h
@@ -21,13 +21,13 @@
 #include <linux/types.h>
 struct sw_sync_create_fence_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 value;
- char name[32];
- __s32 fence;
+  __u32 value;
+  char name[32];
+  __s32 fence;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_SYNC_IOC_MAGIC 'W'
-#define SW_SYNC_IOC_CREATE_FENCE _IOWR(SW_SYNC_IOC_MAGIC, 0,  struct sw_sync_create_fence_data)
+#define SW_SYNC_IOC_CREATE_FENCE _IOWR(SW_SYNC_IOC_MAGIC, 0, struct sw_sync_create_fence_data)
 #define SW_SYNC_IOC_INC _IOW(SW_SYNC_IOC_MAGIC, 1, __u32)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/swab.h b/libc/kernel/uapi/linux/swab.h
index 8be85a8..d7d6fa6 100644
--- a/libc/kernel/uapi/linux/swab.h
+++ b/libc/kernel/uapi/linux/swab.h
@@ -22,14 +22,14 @@
 #include <linux/compiler.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/swab.h>
-#define ___constant_swab16(x) ((__u16)(   (((__u16)(x) & (__u16)0x00ffU) << 8) |   (((__u16)(x) & (__u16)0xff00U) >> 8)))
-#define ___constant_swab32(x) ((__u32)(   (((__u32)(x) & (__u32)0x000000ffUL) << 24) |   (((__u32)(x) & (__u32)0x0000ff00UL) << 8) |   (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) |   (((__u32)(x) & (__u32)0xff000000UL) >> 24)))
-#define ___constant_swab64(x) ((__u64)(   (((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) |   (((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) |   (((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) |   (((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) |   (((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) |   (((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) |   (((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) |   (((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56)))
+#define ___constant_swab16(x) ((__u16) ((((__u16) (x) & (__u16) 0x00ffU) << 8) | (((__u16) (x) & (__u16) 0xff00U) >> 8)))
+#define ___constant_swab32(x) ((__u32) ((((__u32) (x) & (__u32) 0x000000ffUL) << 24) | (((__u32) (x) & (__u32) 0x0000ff00UL) << 8) | (((__u32) (x) & (__u32) 0x00ff0000UL) >> 8) | (((__u32) (x) & (__u32) 0xff000000UL) >> 24)))
+#define ___constant_swab64(x) ((__u64) ((((__u64) (x) & (__u64) 0x00000000000000ffULL) << 56) | (((__u64) (x) & (__u64) 0x000000000000ff00ULL) << 40) | (((__u64) (x) & (__u64) 0x0000000000ff0000ULL) << 24) | (((__u64) (x) & (__u64) 0x00000000ff000000ULL) << 8) | (((__u64) (x) & (__u64) 0x000000ff00000000ULL) >> 8) | (((__u64) (x) & (__u64) 0x0000ff0000000000ULL) >> 24) | (((__u64) (x) & (__u64) 0x00ff000000000000ULL) >> 40) | (((__u64) (x) & (__u64) 0xff00000000000000ULL) >> 56)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ___constant_swahw32(x) ((__u32)(   (((__u32)(x) & (__u32)0x0000ffffUL) << 16) |   (((__u32)(x) & (__u32)0xffff0000UL) >> 16)))
-#define ___constant_swahb32(x) ((__u32)(   (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) |   (((__u32)(x) & (__u32)0xff00ff00UL) >> 8)))
+#define ___constant_swahw32(x) ((__u32) ((((__u32) (x) & (__u32) 0x0000ffffUL) << 16) | (((__u32) (x) & (__u32) 0xffff0000UL) >> 16)))
+#define ___constant_swahb32(x) ((__u32) ((((__u32) (x) & (__u32) 0x00ff00ffUL) << 8) | (((__u32) (x) & (__u32) 0xff00ff00UL) >> 8)))
 #ifdef __HAVE_BUILTIN_BSWAP16__
-#elif defined (__arch_swab16)
+#elif defined(__arch_swab16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #endif
@@ -39,7 +39,7 @@
 #else
 #endif
 #ifdef __HAVE_BUILTIN_BSWAP64__
-#elif defined (__arch_swab64)
+#elif defined(__arch_swab64)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined(__SWAB_64_THRU_32__)
 #else
@@ -52,12 +52,12 @@
 #else
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-#define __swab16(x)   (__builtin_constant_p((__u16)(x)) ?   ___constant_swab16(x) :   __fswab16(x))
-#define __swab32(x)   (__builtin_constant_p((__u32)(x)) ?   ___constant_swab32(x) :   __fswab32(x))
-#define __swab64(x)   (__builtin_constant_p((__u64)(x)) ?   ___constant_swab64(x) :   __fswab64(x))
+#define __swab16(x) (__builtin_constant_p((__u16) (x)) ? ___constant_swab16(x) : __fswab16(x))
+#define __swab32(x) (__builtin_constant_p((__u32) (x)) ? ___constant_swab32(x) : __fswab32(x))
+#define __swab64(x) (__builtin_constant_p((__u64) (x)) ? ___constant_swab64(x) : __fswab64(x))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define __swahw32(x)   (__builtin_constant_p((__u32)(x)) ?   ___constant_swahw32(x) :   __fswahw32(x))
-#define __swahb32(x)   (__builtin_constant_p((__u32)(x)) ?   ___constant_swahb32(x) :   __fswahb32(x))
+#define __swahw32(x) (__builtin_constant_p((__u32) (x)) ? ___constant_swahw32(x) : __fswahw32(x))
+#define __swahb32(x) (__builtin_constant_p((__u32) (x)) ? ___constant_swahb32(x) : __fswahb32(x))
 #ifdef __arch_swab16p
 #else
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/sync.h b/libc/kernel/uapi/linux/sync.h
index ef74faf..bbf6641 100644
--- a/libc/kernel/uapi/linux/sync.h
+++ b/libc/kernel/uapi/linux/sync.h
@@ -22,32 +22,32 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sync_merge_data {
- __s32 fd2;
- char name[32];
- __s32 fence;
+  __s32 fd2;
+  char name[32];
+  __s32 fence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct sync_pt_info {
- __u32 len;
- char obj_name[32];
+  __u32 len;
+  char obj_name[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char driver_name[32];
- __s32 status;
- __u64 timestamp_ns;
- __u8 driver_data[0];
+  char driver_name[32];
+  __s32 status;
+  __u64 timestamp_ns;
+  __u8 driver_data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct sync_fence_info_data {
- __u32 len;
- char name[32];
+  __u32 len;
+  char name[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 status;
- __u8 pt_info[0];
+  __s32 status;
+  __u8 pt_info[0];
 };
 #define SYNC_IOC_MAGIC '>'
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNC_IOC_WAIT _IOW(SYNC_IOC_MAGIC, 0, __s32)
 #define SYNC_IOC_MERGE _IOWR(SYNC_IOC_MAGIC, 1, struct sync_merge_data)
-#define SYNC_IOC_FENCE_INFO _IOWR(SYNC_IOC_MAGIC, 2,  struct sync_fence_info_data)
+#define SYNC_IOC_FENCE_INFO _IOWR(SYNC_IOC_MAGIC, 2, struct sync_fence_info_data)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/synclink.h b/libc/kernel/uapi/linux/synclink.h
index 7ff805d..ba5372f 100644
--- a/libc/kernel/uapi/linux/synclink.h
+++ b/libc/kernel/uapi/linux/synclink.h
@@ -162,140 +162,139 @@
 #define MGSL_INTERFACE_RL 0x40
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MGSL_INTERFACE_MSB_FIRST 0x80
-typedef struct _MGSL_PARAMS
-{
- unsigned long mode;
+typedef struct _MGSL_PARAMS {
+  unsigned long mode;
+  unsigned char loopback;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char loopback;
- unsigned short flags;
- unsigned char encoding;
- unsigned long clock_speed;
+  unsigned short flags;
+  unsigned char encoding;
+  unsigned long clock_speed;
+  unsigned char addr_filter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char addr_filter;
- unsigned short crc_type;
- unsigned char preamble_length;
- unsigned char preamble;
+  unsigned short crc_type;
+  unsigned char preamble_length;
+  unsigned char preamble;
+  unsigned long data_rate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long data_rate;
- unsigned char data_bits;
- unsigned char stop_bits;
- unsigned char parity;
+  unsigned char data_bits;
+  unsigned char stop_bits;
+  unsigned char parity;
+} MGSL_PARAMS, * PMGSL_PARAMS;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} MGSL_PARAMS, *PMGSL_PARAMS;
 #define MICROGATE_VENDOR_ID 0x13c0
 #define SYNCLINK_DEVICE_ID 0x0010
 #define MGSCC_DEVICE_ID 0x0020
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNCLINK_SCA_DEVICE_ID 0x0030
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNCLINK_GT_DEVICE_ID 0x0070
 #define SYNCLINK_GT4_DEVICE_ID 0x0080
 #define SYNCLINK_AC_DEVICE_ID 0x0090
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNCLINK_GT2_DEVICE_ID 0x00A0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MGSL_MAX_SERIAL_NUMBER 30
 #define DiagStatus_OK 0
 #define DiagStatus_AddressFailure 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DiagStatus_AddressConflict 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DiagStatus_IrqFailure 3
 #define DiagStatus_IrqConflict 4
 #define DiagStatus_DmaFailure 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DiagStatus_DmaConflict 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DiagStatus_PciAdapterNotFound 7
 #define DiagStatus_CantAssignPciResources 8
 #define DiagStatus_CantAssignPciMemAddr 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DiagStatus_CantAssignPciIoAddr 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DiagStatus_CantAssignPciIrq 11
 #define DiagStatus_MemoryError 12
 #define SerialSignal_DCD 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SerialSignal_TXD 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SerialSignal_RI 0x04
 #define SerialSignal_RXD 0x08
 #define SerialSignal_CTS 0x10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SerialSignal_RTS 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SerialSignal_DSR 0x40
 #define SerialSignal_DTR 0x80
 struct mgsl_icount {
+  __u32 cts, dsr, rng, dcd, tx, rx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cts, dsr, rng, dcd, tx, rx;
- __u32 frame, parity, overrun, brk;
- __u32 buf_overrun;
- __u32 txok;
+  __u32 frame, parity, overrun, brk;
+  __u32 buf_overrun;
+  __u32 txok;
+  __u32 txunder;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 txunder;
- __u32 txabort;
- __u32 txtimeout;
- __u32 rxshort;
+  __u32 txabort;
+  __u32 txtimeout;
+  __u32 rxshort;
+  __u32 rxlong;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rxlong;
- __u32 rxabort;
- __u32 rxover;
- __u32 rxcrc;
+  __u32 rxabort;
+  __u32 rxover;
+  __u32 rxcrc;
+  __u32 rxok;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rxok;
- __u32 exithunt;
- __u32 rxidle;
+  __u32 exithunt;
+  __u32 rxidle;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct gpio_desc {
- __u32 state;
- __u32 smask;
- __u32 dir;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dmask;
+  __u32 state;
+  __u32 smask;
+  __u32 dir;
+  __u32 dmask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define DEBUG_LEVEL_DATA 1
 #define DEBUG_LEVEL_ERROR 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DEBUG_LEVEL_INFO 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DEBUG_LEVEL_BH 4
 #define DEBUG_LEVEL_ISR 5
 #define MgslEvent_DsrActive 0x0001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MgslEvent_DsrInactive 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MgslEvent_Dsr 0x0003
 #define MgslEvent_CtsActive 0x0004
 #define MgslEvent_CtsInactive 0x0008
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MgslEvent_Cts 0x000c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MgslEvent_DcdActive 0x0010
 #define MgslEvent_DcdInactive 0x0020
 #define MgslEvent_Dcd 0x0030
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MgslEvent_RiActive 0x0040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MgslEvent_RiInactive 0x0080
 #define MgslEvent_Ri 0x00c0
 #define MgslEvent_ExitHuntMode 0x0100
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MgslEvent_IdleReceived 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MGSL_MAGIC_IOC 'm'
-#define MGSL_IOCSPARAMS _IOW(MGSL_MAGIC_IOC,0,struct _MGSL_PARAMS)
-#define MGSL_IOCGPARAMS _IOR(MGSL_MAGIC_IOC,1,struct _MGSL_PARAMS)
+#define MGSL_IOCSPARAMS _IOW(MGSL_MAGIC_IOC, 0, struct _MGSL_PARAMS)
+#define MGSL_IOCGPARAMS _IOR(MGSL_MAGIC_IOC, 1, struct _MGSL_PARAMS)
+#define MGSL_IOCSTXIDLE _IO(MGSL_MAGIC_IOC, 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGSL_IOCSTXIDLE _IO(MGSL_MAGIC_IOC,2)
-#define MGSL_IOCGTXIDLE _IO(MGSL_MAGIC_IOC,3)
-#define MGSL_IOCTXENABLE _IO(MGSL_MAGIC_IOC,4)
-#define MGSL_IOCRXENABLE _IO(MGSL_MAGIC_IOC,5)
+#define MGSL_IOCGTXIDLE _IO(MGSL_MAGIC_IOC, 3)
+#define MGSL_IOCTXENABLE _IO(MGSL_MAGIC_IOC, 4)
+#define MGSL_IOCRXENABLE _IO(MGSL_MAGIC_IOC, 5)
+#define MGSL_IOCTXABORT _IO(MGSL_MAGIC_IOC, 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGSL_IOCTXABORT _IO(MGSL_MAGIC_IOC,6)
-#define MGSL_IOCGSTATS _IO(MGSL_MAGIC_IOC,7)
-#define MGSL_IOCWAITEVENT _IOWR(MGSL_MAGIC_IOC,8,int)
-#define MGSL_IOCCLRMODCOUNT _IO(MGSL_MAGIC_IOC,15)
+#define MGSL_IOCGSTATS _IO(MGSL_MAGIC_IOC, 7)
+#define MGSL_IOCWAITEVENT _IOWR(MGSL_MAGIC_IOC, 8, int)
+#define MGSL_IOCCLRMODCOUNT _IO(MGSL_MAGIC_IOC, 15)
+#define MGSL_IOCLOOPTXDONE _IO(MGSL_MAGIC_IOC, 9)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGSL_IOCLOOPTXDONE _IO(MGSL_MAGIC_IOC,9)
-#define MGSL_IOCSIF _IO(MGSL_MAGIC_IOC,10)
-#define MGSL_IOCGIF _IO(MGSL_MAGIC_IOC,11)
-#define MGSL_IOCSGPIO _IOW(MGSL_MAGIC_IOC,16,struct gpio_desc)
+#define MGSL_IOCSIF _IO(MGSL_MAGIC_IOC, 10)
+#define MGSL_IOCGIF _IO(MGSL_MAGIC_IOC, 11)
+#define MGSL_IOCSGPIO _IOW(MGSL_MAGIC_IOC, 16, struct gpio_desc)
+#define MGSL_IOCGGPIO _IOR(MGSL_MAGIC_IOC, 17, struct gpio_desc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MGSL_IOCGGPIO _IOR(MGSL_MAGIC_IOC,17,struct gpio_desc)
-#define MGSL_IOCWAITGPIO _IOWR(MGSL_MAGIC_IOC,18,struct gpio_desc)
+#define MGSL_IOCWAITGPIO _IOWR(MGSL_MAGIC_IOC, 18, struct gpio_desc)
 #define MGSL_IOCSXSYNC _IO(MGSL_MAGIC_IOC, 19)
 #define MGSL_IOCGXSYNC _IO(MGSL_MAGIC_IOC, 20)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MGSL_IOCSXCTRL _IO(MGSL_MAGIC_IOC, 21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MGSL_IOCGXCTRL _IO(MGSL_MAGIC_IOC, 22)
 #endif
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index 88cb01c..2cac5f3 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -26,958 +26,935 @@
 #define CTL_MAXNAME 10
 struct __sysctl_args {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int __user *name;
- int nlen;
- void __user *oldval;
- size_t __user *oldlenp;
+  int __user * name;
+  int nlen;
+  void __user * oldval;
+  size_t __user * oldlenp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *newval;
- size_t newlen;
- unsigned long __linux_unused[4];
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum
-{
- CTL_KERN=1,
- CTL_VM=2,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTL_NET=3,
- CTL_PROC=4,
- CTL_FS=5,
- CTL_DEBUG=6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTL_DEV=7,
- CTL_BUS=8,
- CTL_ABI=9,
- CTL_CPU=10,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTL_ARLAN=254,
- CTL_S390DBF=5677,
- CTL_SUNRPC=7249,
- CTL_PM=9899,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTL_FRV=9898,
-};
-enum
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- CTL_BUS_ISA=1
-};
-enum
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INOTIFY_MAX_USER_INSTANCES=1,
- INOTIFY_MAX_USER_WATCHES=2,
- INOTIFY_MAX_QUEUED_EVENTS=3
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum
-{
- KERN_OSTYPE=1,
- KERN_OSRELEASE=2,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_OSREV=3,
- KERN_VERSION=4,
- KERN_SECUREMASK=5,
- KERN_PROF=6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_NODENAME=7,
- KERN_DOMAINNAME=8,
- KERN_PANIC=15,
- KERN_REALROOTDEV=16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_SPARC_REBOOT=21,
- KERN_CTLALTDEL=22,
- KERN_PRINTK=23,
- KERN_NAMETRANS=24,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_PPC_HTABRECLAIM=25,
- KERN_PPC_ZEROPAGED=26,
- KERN_PPC_POWERSAVE_NAP=27,
- KERN_MODPROBE=28,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_SG_BIG_BUFF=29,
- KERN_ACCT=30,
- KERN_PPC_L2CR=31,
- KERN_RTSIGNR=32,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_RTSIGMAX=33,
- KERN_SHMMAX=34,
- KERN_MSGMAX=35,
- KERN_MSGMNB=36,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_MSGPOOL=37,
- KERN_SYSRQ=38,
- KERN_MAX_THREADS=39,
- KERN_RANDOM=40,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_SHMALL=41,
- KERN_MSGMNI=42,
- KERN_SEM=43,
- KERN_SPARC_STOP_A=44,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_SHMMNI=45,
- KERN_OVERFLOWUID=46,
- KERN_OVERFLOWGID=47,
- KERN_SHMPATH=48,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_HOTPLUG=49,
- KERN_IEEE_EMULATION_WARNINGS=50,
- KERN_S390_USER_DEBUG_LOGGING=51,
- KERN_CORE_USES_PID=52,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_TAINTED=53,
- KERN_CADPID=54,
- KERN_PIDMAX=55,
- KERN_CORE_PATTERN=56,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_PANIC_ON_OOPS=57,
- KERN_HPPA_PWRSW=58,
- KERN_HPPA_UNALIGNED=59,
- KERN_PRINTK_RATELIMIT=60,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_PRINTK_RATELIMIT_BURST=61,
- KERN_PTY=62,
- KERN_NGROUPS_MAX=63,
- KERN_SPARC_SCONS_PWROFF=64,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_HZ_TIMER=65,
- KERN_UNKNOWN_NMI_PANIC=66,
- KERN_BOOTLOADER_TYPE=67,
- KERN_RANDOMIZE=68,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_SETUID_DUMPABLE=69,
- KERN_SPIN_RETRY=70,
- KERN_ACPI_VIDEO_FLAGS=71,
- KERN_IA64_UNALIGNED=72,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- KERN_COMPAT_LOG=73,
- KERN_MAX_LOCK_DEPTH=74,
- KERN_NMI_WATCHDOG=75,
- KERN_PANIC_ON_NMI=76,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum
-{
- VM_UNUSED1=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_UNUSED2=2,
- VM_UNUSED3=3,
- VM_UNUSED4=4,
- VM_OVERCOMMIT_MEMORY=5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_UNUSED5=6,
- VM_UNUSED7=7,
- VM_UNUSED8=8,
- VM_UNUSED9=9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_PAGE_CLUSTER=10,
- VM_DIRTY_BACKGROUND=11,
- VM_DIRTY_RATIO=12,
- VM_DIRTY_WB_CS=13,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_DIRTY_EXPIRE_CS=14,
- VM_NR_PDFLUSH_THREADS=15,
- VM_OVERCOMMIT_RATIO=16,
- VM_PAGEBUF=17,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_HUGETLB_PAGES=18,
- VM_SWAPPINESS=19,
- VM_LOWMEM_RESERVE_RATIO=20,
- VM_MIN_FREE_KBYTES=21,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_MAX_MAP_COUNT=22,
- VM_LAPTOP_MODE=23,
- VM_BLOCK_DUMP=24,
- VM_HUGETLB_GROUP=25,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_VFS_CACHE_PRESSURE=26,
- VM_LEGACY_VA_LAYOUT=27,
- VM_SWAP_TOKEN_TIMEOUT=28,
- VM_DROP_PAGECACHE=29,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_PERCPU_PAGELIST_FRACTION=30,
- VM_ZONE_RECLAIM_MODE=31,
- VM_MIN_UNMAPPED=32,
- VM_PANIC_ON_OOM=33,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VM_VDSO_ENABLED=34,
- VM_MIN_SLAB=35,
-};
-enum
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- NET_CORE=1,
- NET_ETHER=2,
- NET_802=3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_UNIX=4,
- NET_IPV4=5,
- NET_IPX=6,
- NET_ATALK=7,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NETROM=8,
- NET_AX25=9,
- NET_BRIDGE=10,
- NET_ROSE=11,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6=12,
- NET_X25=13,
- NET_TR=14,
- NET_DECNET=15,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_ECONET=16,
- NET_SCTP=17,
- NET_LLC=18,
- NET_NETFILTER=19,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DCCP=20,
- NET_IRDA=412,
-};
-enum
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- RANDOM_POOLSIZE=1,
- RANDOM_ENTROPY_COUNT=2,
- RANDOM_READ_THRESH=3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RANDOM_WRITE_THRESH=4,
- RANDOM_BOOT_ID=5,
- RANDOM_UUID=6
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum
-{
- PTY_MAX=1,
- PTY_NR=2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum
-{
- BUS_ISA_MEM_BASE=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- BUS_ISA_PORT_BASE=2,
- BUS_ISA_PORT_SHIFT=3
-};
-enum
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- NET_CORE_WMEM_MAX=1,
- NET_CORE_RMEM_MAX=2,
- NET_CORE_WMEM_DEFAULT=3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_CORE_RMEM_DEFAULT=4,
- NET_CORE_MAX_BACKLOG=6,
- NET_CORE_FASTROUTE=7,
- NET_CORE_MSG_COST=8,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_CORE_MSG_BURST=9,
- NET_CORE_OPTMEM_MAX=10,
- NET_CORE_HOT_LIST_LENGTH=11,
- NET_CORE_DIVERT_VERSION=12,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_CORE_NO_CONG_THRESH=13,
- NET_CORE_NO_CONG=14,
- NET_CORE_LO_CONG=15,
- NET_CORE_MOD_CONG=16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_CORE_DEV_WEIGHT=17,
- NET_CORE_SOMAXCONN=18,
- NET_CORE_BUDGET=19,
- NET_CORE_AEVENT_ETIME=20,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_CORE_AEVENT_RSEQTH=21,
- NET_CORE_WARNINGS=22,
-};
-enum
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- NET_UNIX_DESTROY_DELAY=1,
- NET_UNIX_DELETE_DELAY=2,
- NET_UNIX_MAX_DGRAM_QLEN=3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum
-{
- NET_NF_CONNTRACK_MAX=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2,
- NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3,
- NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4,
- NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6,
- NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7,
- NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8,
- NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_UDP_TIMEOUT=10,
- NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11,
- NET_NF_CONNTRACK_ICMP_TIMEOUT=12,
- NET_NF_CONNTRACK_GENERIC_TIMEOUT=13,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_BUCKETS=14,
- NET_NF_CONNTRACK_LOG_INVALID=15,
- NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16,
- NET_NF_CONNTRACK_TCP_LOOSE=17,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_TCP_BE_LIBERAL=18,
- NET_NF_CONNTRACK_TCP_MAX_RETRANS=19,
- NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20,
- NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22,
- NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23,
- NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24,
- NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26,
- NET_NF_CONNTRACK_COUNT=27,
- NET_NF_CONNTRACK_ICMPV6_TIMEOUT=28,
- NET_NF_CONNTRACK_FRAG6_TIMEOUT=29,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NF_CONNTRACK_FRAG6_LOW_THRESH=30,
- NET_NF_CONNTRACK_FRAG6_HIGH_THRESH=31,
- NET_NF_CONNTRACK_CHECKSUM=32,
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum
-{
- NET_IPV4_FORWARD=8,
- NET_IPV4_DYNADDR=9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_CONF=16,
- NET_IPV4_NEIGH=17,
- NET_IPV4_ROUTE=18,
- NET_IPV4_FIB_HASH=19,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NETFILTER=20,
- NET_IPV4_TCP_TIMESTAMPS=33,
- NET_IPV4_TCP_WINDOW_SCALING=34,
- NET_IPV4_TCP_SACK=35,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_TCP_RETRANS_COLLAPSE=36,
- NET_IPV4_DEFAULT_TTL=37,
- NET_IPV4_AUTOCONFIG=38,
- NET_IPV4_NO_PMTU_DISC=39,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_TCP_SYN_RETRIES=40,
- NET_IPV4_IPFRAG_HIGH_THRESH=41,
- NET_IPV4_IPFRAG_LOW_THRESH=42,
- NET_IPV4_IPFRAG_TIME=43,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_TCP_MAX_KA_PROBES=44,
- NET_IPV4_TCP_KEEPALIVE_TIME=45,
- NET_IPV4_TCP_KEEPALIVE_PROBES=46,
- NET_IPV4_TCP_RETRIES1=47,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_TCP_RETRIES2=48,
- NET_IPV4_TCP_FIN_TIMEOUT=49,
- NET_IPV4_IP_MASQ_DEBUG=50,
- NET_TCP_SYNCOOKIES=51,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_STDURG=52,
- NET_TCP_RFC1337=53,
- NET_TCP_SYN_TAILDROP=54,
- NET_TCP_MAX_SYN_BACKLOG=55,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_LOCAL_PORT_RANGE=56,
- NET_IPV4_ICMP_ECHO_IGNORE_ALL=57,
- NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58,
- NET_IPV4_ICMP_SOURCEQUENCH_RATE=59,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_ICMP_DESTUNREACH_RATE=60,
- NET_IPV4_ICMP_TIMEEXCEED_RATE=61,
- NET_IPV4_ICMP_PARAMPROB_RATE=62,
- NET_IPV4_ICMP_ECHOREPLY_RATE=63,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64,
- NET_IPV4_IGMP_MAX_MEMBERSHIPS=65,
- NET_TCP_TW_RECYCLE=66,
- NET_IPV4_ALWAYS_DEFRAG=67,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_TCP_KEEPALIVE_INTVL=68,
- NET_IPV4_INET_PEER_THRESHOLD=69,
- NET_IPV4_INET_PEER_MINTTL=70,
- NET_IPV4_INET_PEER_MAXTTL=71,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_INET_PEER_GC_MINTIME=72,
- NET_IPV4_INET_PEER_GC_MAXTIME=73,
- NET_TCP_ORPHAN_RETRIES=74,
- NET_TCP_ABORT_ON_OVERFLOW=75,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_SYNACK_RETRIES=76,
- NET_TCP_MAX_ORPHANS=77,
- NET_TCP_MAX_TW_BUCKETS=78,
- NET_TCP_FACK=79,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_REORDERING=80,
- NET_TCP_ECN=81,
- NET_TCP_DSACK=82,
- NET_TCP_MEM=83,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_WMEM=84,
- NET_TCP_RMEM=85,
- NET_TCP_APP_WIN=86,
- NET_TCP_ADV_WIN_SCALE=87,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NONLOCAL_BIND=88,
- NET_IPV4_ICMP_RATELIMIT=89,
- NET_IPV4_ICMP_RATEMASK=90,
- NET_TCP_TW_REUSE=91,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_FRTO=92,
- NET_TCP_LOW_LATENCY=93,
- NET_IPV4_IPFRAG_SECRET_INTERVAL=94,
- NET_IPV4_IGMP_MAX_MSF=96,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_NO_METRICS_SAVE=97,
- NET_TCP_DEFAULT_WIN_SCALE=105,
- NET_TCP_MODERATE_RCVBUF=106,
- NET_TCP_TSO_WIN_DIVISOR=107,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_BIC_BETA=108,
- NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109,
- NET_TCP_CONG_CONTROL=110,
- NET_TCP_ABC=111,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_IPFRAG_MAX_DIST=112,
- NET_TCP_MTU_PROBING=113,
- NET_TCP_BASE_MSS=114,
- NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=115,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_DMA_COPYBREAK=116,
- NET_TCP_SLOW_START_AFTER_IDLE=117,
- NET_CIPSOV4_CACHE_ENABLE=118,
- NET_CIPSOV4_CACHE_BUCKET_SIZE=119,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_CIPSOV4_RBM_OPTFMT=120,
- NET_CIPSOV4_RBM_STRICTVALID=121,
- NET_TCP_AVAIL_CONG_CONTROL=122,
- NET_TCP_ALLOWED_CONG_CONTROL=123,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TCP_MAX_SSTHRESH=124,
- NET_TCP_FRTO_RESPONSE=125,
-};
-enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_ROUTE_FLUSH=1,
- NET_IPV4_ROUTE_MIN_DELAY=2,
- NET_IPV4_ROUTE_MAX_DELAY=3,
- NET_IPV4_ROUTE_GC_THRESH=4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_ROUTE_MAX_SIZE=5,
- NET_IPV4_ROUTE_GC_MIN_INTERVAL=6,
- NET_IPV4_ROUTE_GC_TIMEOUT=7,
- NET_IPV4_ROUTE_GC_INTERVAL=8,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_ROUTE_REDIRECT_LOAD=9,
- NET_IPV4_ROUTE_REDIRECT_NUMBER=10,
- NET_IPV4_ROUTE_REDIRECT_SILENCE=11,
- NET_IPV4_ROUTE_ERROR_COST=12,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_ROUTE_ERROR_BURST=13,
- NET_IPV4_ROUTE_GC_ELASTICITY=14,
- NET_IPV4_ROUTE_MTU_EXPIRES=15,
- NET_IPV4_ROUTE_MIN_PMTU=16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_ROUTE_MIN_ADVMSS=17,
- NET_IPV4_ROUTE_SECRET_INTERVAL=18,
- NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=19,
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum
-{
- NET_PROTO_CONF_ALL=-2,
- NET_PROTO_CONF_DEFAULT=-3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum
-{
- NET_IPV4_CONF_FORWARDING=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_CONF_MC_FORWARDING=2,
- NET_IPV4_CONF_PROXY_ARP=3,
- NET_IPV4_CONF_ACCEPT_REDIRECTS=4,
- NET_IPV4_CONF_SECURE_REDIRECTS=5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_CONF_SEND_REDIRECTS=6,
- NET_IPV4_CONF_SHARED_MEDIA=7,
- NET_IPV4_CONF_RP_FILTER=8,
- NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_CONF_BOOTP_RELAY=10,
- NET_IPV4_CONF_LOG_MARTIANS=11,
- NET_IPV4_CONF_TAG=12,
- NET_IPV4_CONF_ARPFILTER=13,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_CONF_MEDIUM_ID=14,
- NET_IPV4_CONF_NOXFRM=15,
- NET_IPV4_CONF_NOPOLICY=16,
- NET_IPV4_CONF_FORCE_IGMP_VERSION=17,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_CONF_ARP_ANNOUNCE=18,
- NET_IPV4_CONF_ARP_IGNORE=19,
- NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
- NET_IPV4_CONF_ARP_ACCEPT=21,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_CONF_ARP_NOTIFY=22,
-};
-enum
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NF_CONNTRACK_MAX=1,
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2,
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3,
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5,
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6,
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7,
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9,
- NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=10,
- NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11,
- NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13,
- NET_IPV4_NF_CONNTRACK_BUCKETS=14,
- NET_IPV4_NF_CONNTRACK_LOG_INVALID=15,
- NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NF_CONNTRACK_TCP_LOOSE=17,
- NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=18,
- NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=19,
- NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21,
- NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22,
- NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23,
- NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25,
- NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26,
- NET_IPV4_NF_CONNTRACK_COUNT=27,
- NET_IPV4_NF_CONNTRACK_CHECKSUM=28,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum {
- NET_IPV6_CONF=16,
- NET_IPV6_NEIGH=17,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_ROUTE=18,
- NET_IPV6_ICMP=19,
- NET_IPV6_BINDV6ONLY=20,
- NET_IPV6_IP6FRAG_HIGH_THRESH=21,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_IP6FRAG_LOW_THRESH=22,
- NET_IPV6_IP6FRAG_TIME=23,
- NET_IPV6_IP6FRAG_SECRET_INTERVAL=24,
- NET_IPV6_MLD_MAX_MSF=25,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum {
- NET_IPV6_ROUTE_FLUSH=1,
- NET_IPV6_ROUTE_GC_THRESH=2,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_ROUTE_MAX_SIZE=3,
- NET_IPV6_ROUTE_GC_MIN_INTERVAL=4,
- NET_IPV6_ROUTE_GC_TIMEOUT=5,
- NET_IPV6_ROUTE_GC_INTERVAL=6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_ROUTE_GC_ELASTICITY=7,
- NET_IPV6_ROUTE_MTU_EXPIRES=8,
- NET_IPV6_ROUTE_MIN_ADVMSS=9,
- NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-enum {
- NET_IPV6_FORWARDING=1,
- NET_IPV6_HOP_LIMIT=2,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_MTU=3,
- NET_IPV6_ACCEPT_RA=4,
- NET_IPV6_ACCEPT_REDIRECTS=5,
- NET_IPV6_AUTOCONF=6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_DAD_TRANSMITS=7,
- NET_IPV6_RTR_SOLICITS=8,
- NET_IPV6_RTR_SOLICIT_INTERVAL=9,
- NET_IPV6_RTR_SOLICIT_DELAY=10,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_USE_TEMPADDR=11,
- NET_IPV6_TEMP_VALID_LFT=12,
- NET_IPV6_TEMP_PREFERED_LFT=13,
- NET_IPV6_REGEN_MAX_RETRY=14,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_MAX_DESYNC_FACTOR=15,
- NET_IPV6_MAX_ADDRESSES=16,
- NET_IPV6_FORCE_MLD_VERSION=17,
- NET_IPV6_ACCEPT_RA_DEFRTR=18,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_ACCEPT_RA_PINFO=19,
- NET_IPV6_ACCEPT_RA_RTR_PREF=20,
- NET_IPV6_RTR_PROBE_INTERVAL=21,
- NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=22,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPV6_PROXY_NDP=23,
- NET_IPV6_ACCEPT_SOURCE_ROUTE=25,
- __NET_IPV6_MAX
+  void __user * newval;
+  size_t newlen;
+  unsigned long __linux_unused[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- NET_IPV6_ICMP_RATELIMIT=1
-};
-enum {
+  CTL_KERN = 1,
+  CTL_VM = 2,
+  CTL_NET = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NEIGH_MCAST_SOLICIT=1,
- NET_NEIGH_UCAST_SOLICIT=2,
- NET_NEIGH_APP_SOLICIT=3,
- NET_NEIGH_RETRANS_TIME=4,
+  CTL_PROC = 4,
+  CTL_FS = 5,
+  CTL_DEBUG = 6,
+  CTL_DEV = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NEIGH_REACHABLE_TIME=5,
- NET_NEIGH_DELAY_PROBE_TIME=6,
- NET_NEIGH_GC_STALE_TIME=7,
- NET_NEIGH_UNRES_QLEN=8,
+  CTL_BUS = 8,
+  CTL_ABI = 9,
+  CTL_CPU = 10,
+  CTL_ARLAN = 254,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NEIGH_PROXY_QLEN=9,
- NET_NEIGH_ANYCAST_DELAY=10,
- NET_NEIGH_PROXY_DELAY=11,
- NET_NEIGH_LOCKTIME=12,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NEIGH_GC_INTERVAL=13,
- NET_NEIGH_GC_THRESH1=14,
- NET_NEIGH_GC_THRESH2=15,
- NET_NEIGH_GC_THRESH3=16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NEIGH_RETRANS_TIME_MS=17,
- NET_NEIGH_REACHABLE_TIME_MS=18,
-};
-enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DCCP_DEFAULT=1,
-};
-enum {
- NET_IPX_PPROP_BROADCASTING=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IPX_FORWARDING=2
-};
-enum {
- NET_LLC2=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_LLC_STATION=2,
-};
-enum {
- NET_LLC2_TIMEOUT=1,
+  CTL_S390DBF = 5677,
+  CTL_SUNRPC = 7249,
+  CTL_PM = 9899,
+  CTL_FRV = 9898,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- NET_LLC_STATION_ACK_TIMEOUT=1,
+  CTL_BUS_ISA = 1
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- NET_LLC2_ACK_TIMEOUT=1,
- NET_LLC2_P_TIMEOUT=2,
- NET_LLC2_REJ_TIMEOUT=3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_LLC2_BUSY_TIMEOUT=4,
-};
-enum {
- NET_ATALK_AARP_EXPIRY_TIME=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_ATALK_AARP_TICK_TIME=2,
- NET_ATALK_AARP_RETRANSMIT_LIMIT=3,
- NET_ATALK_AARP_RESOLVE_TIME=4
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum {
- NET_NETROM_DEFAULT_PATH_QUALITY=1,
- NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2,
- NET_NETROM_NETWORK_TTL_INITIALISER=3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NETROM_TRANSPORT_TIMEOUT=4,
- NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5,
- NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6,
- NET_NETROM_TRANSPORT_BUSY_DELAY=7,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8,
- NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9,
- NET_NETROM_ROUTING_CONTROL=10,
- NET_NETROM_LINK_FAILS_COUNT=11,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_NETROM_RESET=12
-};
-enum {
- NET_AX25_IP_DEFAULT_MODE=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_AX25_DEFAULT_MODE=2,
- NET_AX25_BACKOFF_TYPE=3,
- NET_AX25_CONNECT_MODE=4,
- NET_AX25_STANDARD_WINDOW=5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_AX25_EXTENDED_WINDOW=6,
- NET_AX25_T1_TIMEOUT=7,
- NET_AX25_T2_TIMEOUT=8,
- NET_AX25_T3_TIMEOUT=9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_AX25_IDLE_TIMEOUT=10,
- NET_AX25_N2=11,
- NET_AX25_PACLEN=12,
- NET_AX25_PROTOCOL=13,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_AX25_DAMA_SLAVE_TIMEOUT=14
-};
-enum {
- NET_ROSE_RESTART_REQUEST_TIMEOUT=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_ROSE_CALL_REQUEST_TIMEOUT=2,
- NET_ROSE_RESET_REQUEST_TIMEOUT=3,
- NET_ROSE_CLEAR_REQUEST_TIMEOUT=4,
- NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_ROSE_ROUTING_CONTROL=6,
- NET_ROSE_LINK_FAIL_TIMEOUT=7,
- NET_ROSE_MAX_VCS=8,
- NET_ROSE_WINDOW_SIZE=9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_ROSE_NO_ACTIVITY_TIMEOUT=10
-};
-enum {
- NET_X25_RESTART_REQUEST_TIMEOUT=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_X25_CALL_REQUEST_TIMEOUT=2,
- NET_X25_RESET_REQUEST_TIMEOUT=3,
- NET_X25_CLEAR_REQUEST_TIMEOUT=4,
- NET_X25_ACK_HOLD_BACK_TIMEOUT=5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_X25_FORWARD=6
-};
-enum
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_TR_RIF_TIMEOUT=1
-};
-enum {
- NET_DECNET_NODE_TYPE = 1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_NODE_ADDRESS = 2,
- NET_DECNET_NODE_NAME = 3,
- NET_DECNET_DEFAULT_DEVICE = 4,
- NET_DECNET_TIME_WAIT = 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_DN_COUNT = 6,
- NET_DECNET_DI_COUNT = 7,
- NET_DECNET_DR_COUNT = 8,
- NET_DECNET_DST_GC_INTERVAL = 9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_CONF = 10,
- NET_DECNET_NO_FC_MAX_CWND = 11,
- NET_DECNET_MEM = 12,
- NET_DECNET_RMEM = 13,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_WMEM = 14,
- NET_DECNET_DEBUG_LEVEL = 255
-};
-enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_CONF_LOOPBACK = -2,
- NET_DECNET_CONF_DDCMP = -3,
- NET_DECNET_CONF_PPP = -4,
- NET_DECNET_CONF_X25 = -5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_CONF_GRE = -6,
- NET_DECNET_CONF_ETHER = -7
-};
-enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_CONF_DEV_PRIORITY = 1,
- NET_DECNET_CONF_DEV_T1 = 2,
- NET_DECNET_CONF_DEV_T2 = 3,
- NET_DECNET_CONF_DEV_T3 = 4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_DECNET_CONF_DEV_FORWARDING = 5,
- NET_DECNET_CONF_DEV_BLKSIZE = 6,
- NET_DECNET_CONF_DEV_STATE = 7
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-enum {
- NET_SCTP_RTO_INITIAL = 1,
- NET_SCTP_RTO_MIN = 2,
- NET_SCTP_RTO_MAX = 3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_SCTP_RTO_ALPHA = 4,
- NET_SCTP_RTO_BETA = 5,
- NET_SCTP_VALID_COOKIE_LIFE = 6,
- NET_SCTP_ASSOCIATION_MAX_RETRANS = 7,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_SCTP_PATH_MAX_RETRANS = 8,
- NET_SCTP_MAX_INIT_RETRANSMITS = 9,
- NET_SCTP_HB_INTERVAL = 10,
- NET_SCTP_PRESERVE_ENABLE = 11,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_SCTP_MAX_BURST = 12,
- NET_SCTP_ADDIP_ENABLE = 13,
- NET_SCTP_PRSCTP_ENABLE = 14,
- NET_SCTP_SNDBUF_POLICY = 15,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_SCTP_SACK_TIMEOUT = 16,
- NET_SCTP_RCVBUF_POLICY = 17,
-};
-enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_BRIDGE_NF_CALL_ARPTABLES = 1,
- NET_BRIDGE_NF_CALL_IPTABLES = 2,
- NET_BRIDGE_NF_CALL_IP6TABLES = 3,
- NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5,
-};
-enum {
- NET_IRDA_DISCOVERY=1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IRDA_DEVNAME=2,
- NET_IRDA_DEBUG=3,
- NET_IRDA_FAST_POLL=4,
- NET_IRDA_DISCOVERY_SLOTS=5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IRDA_DISCOVERY_TIMEOUT=6,
- NET_IRDA_SLOT_TIMEOUT=7,
- NET_IRDA_MAX_BAUD_RATE=8,
- NET_IRDA_MIN_TX_TURN_TIME=9,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IRDA_MAX_TX_DATA_SIZE=10,
- NET_IRDA_MAX_TX_WINDOW=11,
- NET_IRDA_MAX_NOREPLY_TIME=12,
- NET_IRDA_WARN_NOREPLY_TIME=13,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- NET_IRDA_LAP_KEEPALIVE_TIME=14,
-};
-enum
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_NRINODE=1,
- FS_STATINODE=2,
- FS_MAXINODE=3,
- FS_NRDQUOT=4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_MAXDQUOT=5,
- FS_NRFILE=6,
- FS_MAXFILE=7,
- FS_DENTRY=8,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_NRSUPER=9,
- FS_MAXSUPER=10,
- FS_OVERFLOWUID=11,
- FS_OVERFLOWGID=12,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_LEASES=13,
- FS_DIR_NOTIFY=14,
- FS_LEASE_TIME=15,
- FS_DQSTATS=16,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_XFS=17,
- FS_AIO_NR=18,
- FS_AIO_MAX_NR=19,
- FS_INOTIFY=20,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_OCFS2=988,
-};
-enum {
- FS_DQ_LOOKUPS = 1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_DQ_DROPS = 2,
- FS_DQ_READS = 3,
- FS_DQ_WRITES = 4,
- FS_DQ_CACHE_HITS = 5,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FS_DQ_ALLOCATED = 6,
- FS_DQ_FREE = 7,
- FS_DQ_SYNCS = 8,
- FS_DQ_WARNINGS = 9,
+  INOTIFY_MAX_USER_INSTANCES = 1,
+  INOTIFY_MAX_USER_WATCHES = 2,
+  INOTIFY_MAX_QUEUED_EVENTS = 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- DEV_CDROM=1,
- DEV_HWMON=2,
+  KERN_OSTYPE = 1,
+  KERN_OSRELEASE = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_PARPORT=3,
- DEV_RAID=4,
- DEV_MAC_HID=5,
- DEV_SCSI=6,
+  KERN_OSREV = 3,
+  KERN_VERSION = 4,
+  KERN_SECUREMASK = 5,
+  KERN_PROF = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_IPMI=7,
-};
-enum {
- DEV_CDROM_INFO=1,
+  KERN_NODENAME = 7,
+  KERN_DOMAINNAME = 8,
+  KERN_PANIC = 15,
+  KERN_REALROOTDEV = 16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_CDROM_AUTOCLOSE=2,
- DEV_CDROM_AUTOEJECT=3,
- DEV_CDROM_DEBUG=4,
- DEV_CDROM_LOCK=5,
+  KERN_SPARC_REBOOT = 21,
+  KERN_CTLALTDEL = 22,
+  KERN_PRINTK = 23,
+  KERN_NAMETRANS = 24,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_CDROM_CHECK_MEDIA=6
-};
-enum {
- DEV_PARPORT_DEFAULT=-3
+  KERN_PPC_HTABRECLAIM = 25,
+  KERN_PPC_ZEROPAGED = 26,
+  KERN_PPC_POWERSAVE_NAP = 27,
+  KERN_MODPROBE = 28,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_SG_BIG_BUFF = 29,
+  KERN_ACCT = 30,
+  KERN_PPC_L2CR = 31,
+  KERN_RTSIGNR = 32,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_RTSIGMAX = 33,
+  KERN_SHMMAX = 34,
+  KERN_MSGMAX = 35,
+  KERN_MSGMNB = 36,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_MSGPOOL = 37,
+  KERN_SYSRQ = 38,
+  KERN_MAX_THREADS = 39,
+  KERN_RANDOM = 40,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_SHMALL = 41,
+  KERN_MSGMNI = 42,
+  KERN_SEM = 43,
+  KERN_SPARC_STOP_A = 44,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_SHMMNI = 45,
+  KERN_OVERFLOWUID = 46,
+  KERN_OVERFLOWGID = 47,
+  KERN_SHMPATH = 48,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_HOTPLUG = 49,
+  KERN_IEEE_EMULATION_WARNINGS = 50,
+  KERN_S390_USER_DEBUG_LOGGING = 51,
+  KERN_CORE_USES_PID = 52,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_TAINTED = 53,
+  KERN_CADPID = 54,
+  KERN_PIDMAX = 55,
+  KERN_CORE_PATTERN = 56,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_PANIC_ON_OOPS = 57,
+  KERN_HPPA_PWRSW = 58,
+  KERN_HPPA_UNALIGNED = 59,
+  KERN_PRINTK_RATELIMIT = 60,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_PRINTK_RATELIMIT_BURST = 61,
+  KERN_PTY = 62,
+  KERN_NGROUPS_MAX = 63,
+  KERN_SPARC_SCONS_PWROFF = 64,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_HZ_TIMER = 65,
+  KERN_UNKNOWN_NMI_PANIC = 66,
+  KERN_BOOTLOADER_TYPE = 67,
+  KERN_RANDOMIZE = 68,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_SETUID_DUMPABLE = 69,
+  KERN_SPIN_RETRY = 70,
+  KERN_ACPI_VIDEO_FLAGS = 71,
+  KERN_IA64_UNALIGNED = 72,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  KERN_COMPAT_LOG = 73,
+  KERN_MAX_LOCK_DEPTH = 74,
+  KERN_NMI_WATCHDOG = 75,
+  KERN_PANIC_ON_NMI = 76,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- DEV_RAID_SPEED_LIMIT_MIN=1,
- DEV_RAID_SPEED_LIMIT_MAX=2
+  VM_UNUSED1 = 1,
+  VM_UNUSED2 = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_UNUSED3 = 3,
+  VM_UNUSED4 = 4,
+  VM_OVERCOMMIT_MEMORY = 5,
+  VM_UNUSED5 = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_UNUSED7 = 7,
+  VM_UNUSED8 = 8,
+  VM_UNUSED9 = 9,
+  VM_PAGE_CLUSTER = 10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_DIRTY_BACKGROUND = 11,
+  VM_DIRTY_RATIO = 12,
+  VM_DIRTY_WB_CS = 13,
+  VM_DIRTY_EXPIRE_CS = 14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_NR_PDFLUSH_THREADS = 15,
+  VM_OVERCOMMIT_RATIO = 16,
+  VM_PAGEBUF = 17,
+  VM_HUGETLB_PAGES = 18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_SWAPPINESS = 19,
+  VM_LOWMEM_RESERVE_RATIO = 20,
+  VM_MIN_FREE_KBYTES = 21,
+  VM_MAX_MAP_COUNT = 22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_LAPTOP_MODE = 23,
+  VM_BLOCK_DUMP = 24,
+  VM_HUGETLB_GROUP = 25,
+  VM_VFS_CACHE_PRESSURE = 26,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_LEGACY_VA_LAYOUT = 27,
+  VM_SWAP_TOKEN_TIMEOUT = 28,
+  VM_DROP_PAGECACHE = 29,
+  VM_PERCPU_PAGELIST_FRACTION = 30,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_ZONE_RECLAIM_MODE = 31,
+  VM_MIN_UNMAPPED = 32,
+  VM_PANIC_ON_OOM = 33,
+  VM_VDSO_ENABLED = 34,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VM_MIN_SLAB = 35,
+};
+enum {
+  NET_CORE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_ETHER = 2,
+  NET_802 = 3,
+  NET_UNIX = 4,
+  NET_IPV4 = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPX = 6,
+  NET_ATALK = 7,
+  NET_NETROM = 8,
+  NET_AX25 = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_BRIDGE = 10,
+  NET_ROSE = 11,
+  NET_IPV6 = 12,
+  NET_X25 = 13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TR = 14,
+  NET_DECNET = 15,
+  NET_ECONET = 16,
+  NET_SCTP = 17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_LLC = 18,
+  NET_NETFILTER = 19,
+  NET_DCCP = 20,
+  NET_IRDA = 412,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- DEV_PARPORT_DEFAULT_TIMESLICE=1,
- DEV_PARPORT_DEFAULT_SPINTIME=2
+  RANDOM_POOLSIZE = 1,
+  RANDOM_ENTROPY_COUNT = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RANDOM_READ_THRESH = 3,
+  RANDOM_WRITE_THRESH = 4,
+  RANDOM_BOOT_ID = 5,
+  RANDOM_UUID = 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- DEV_PARPORT_SPINTIME=1,
- DEV_PARPORT_BASE_ADDR=2,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_PARPORT_IRQ=3,
- DEV_PARPORT_DMA=4,
- DEV_PARPORT_MODES=5,
- DEV_PARPORT_DEVICES=6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_PARPORT_AUTOPROBE=16
-};
-enum {
- DEV_PARPORT_DEVICES_ACTIVE=-3,
+  PTY_MAX = 1,
+  PTY_NR = 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- DEV_PARPORT_DEVICE_TIMESLICE=1,
+  BUS_ISA_MEM_BASE = 1,
+  BUS_ISA_PORT_BASE = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  BUS_ISA_PORT_SHIFT = 3
+};
+enum {
+  NET_CORE_WMEM_MAX = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_CORE_RMEM_MAX = 2,
+  NET_CORE_WMEM_DEFAULT = 3,
+  NET_CORE_RMEM_DEFAULT = 4,
+  NET_CORE_MAX_BACKLOG = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_CORE_FASTROUTE = 7,
+  NET_CORE_MSG_COST = 8,
+  NET_CORE_MSG_BURST = 9,
+  NET_CORE_OPTMEM_MAX = 10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_CORE_HOT_LIST_LENGTH = 11,
+  NET_CORE_DIVERT_VERSION = 12,
+  NET_CORE_NO_CONG_THRESH = 13,
+  NET_CORE_NO_CONG = 14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_CORE_LO_CONG = 15,
+  NET_CORE_MOD_CONG = 16,
+  NET_CORE_DEV_WEIGHT = 17,
+  NET_CORE_SOMAXCONN = 18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_CORE_BUDGET = 19,
+  NET_CORE_AEVENT_ETIME = 20,
+  NET_CORE_AEVENT_RSEQTH = 21,
+  NET_CORE_WARNINGS = 22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  NET_UNIX_DESTROY_DELAY = 1,
+  NET_UNIX_DELETE_DELAY = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_UNIX_MAX_DGRAM_QLEN = 3,
+};
+enum {
+  NET_NF_CONNTRACK_MAX = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT = 2,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV = 3,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED = 4,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT = 6,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK = 7,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT = 8,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_UDP_TIMEOUT = 10,
+  NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM = 11,
+  NET_NF_CONNTRACK_ICMP_TIMEOUT = 12,
+  NET_NF_CONNTRACK_GENERIC_TIMEOUT = 13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_BUCKETS = 14,
+  NET_NF_CONNTRACK_LOG_INVALID = 15,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS = 16,
+  NET_NF_CONNTRACK_TCP_LOOSE = 17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_TCP_BE_LIBERAL = 18,
+  NET_NF_CONNTRACK_TCP_MAX_RETRANS = 19,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED = 20,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT = 21,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED = 22,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED = 23,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT = 24,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD = 25,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT = 26,
+  NET_NF_CONNTRACK_COUNT = 27,
+  NET_NF_CONNTRACK_ICMPV6_TIMEOUT = 28,
+  NET_NF_CONNTRACK_FRAG6_TIMEOUT = 29,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NF_CONNTRACK_FRAG6_LOW_THRESH = 30,
+  NET_NF_CONNTRACK_FRAG6_HIGH_THRESH = 31,
+  NET_NF_CONNTRACK_CHECKSUM = 32,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1,
- DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2,
- DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3,
+  NET_IPV4_FORWARD = 8,
+  NET_IPV4_DYNADDR = 9,
+  NET_IPV4_CONF = 16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4,
- DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5,
- DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6
+  NET_IPV4_NEIGH = 17,
+  NET_IPV4_ROUTE = 18,
+  NET_IPV4_FIB_HASH = 19,
+  NET_IPV4_NETFILTER = 20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_TCP_TIMESTAMPS = 33,
+  NET_IPV4_TCP_WINDOW_SCALING = 34,
+  NET_IPV4_TCP_SACK = 35,
+  NET_IPV4_TCP_RETRANS_COLLAPSE = 36,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_DEFAULT_TTL = 37,
+  NET_IPV4_AUTOCONFIG = 38,
+  NET_IPV4_NO_PMTU_DISC = 39,
+  NET_IPV4_TCP_SYN_RETRIES = 40,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_IPFRAG_HIGH_THRESH = 41,
+  NET_IPV4_IPFRAG_LOW_THRESH = 42,
+  NET_IPV4_IPFRAG_TIME = 43,
+  NET_IPV4_TCP_MAX_KA_PROBES = 44,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_TCP_KEEPALIVE_TIME = 45,
+  NET_IPV4_TCP_KEEPALIVE_PROBES = 46,
+  NET_IPV4_TCP_RETRIES1 = 47,
+  NET_IPV4_TCP_RETRIES2 = 48,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_TCP_FIN_TIMEOUT = 49,
+  NET_IPV4_IP_MASQ_DEBUG = 50,
+  NET_TCP_SYNCOOKIES = 51,
+  NET_TCP_STDURG = 52,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_RFC1337 = 53,
+  NET_TCP_SYN_TAILDROP = 54,
+  NET_TCP_MAX_SYN_BACKLOG = 55,
+  NET_IPV4_LOCAL_PORT_RANGE = 56,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ICMP_ECHO_IGNORE_ALL = 57,
+  NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS = 58,
+  NET_IPV4_ICMP_SOURCEQUENCH_RATE = 59,
+  NET_IPV4_ICMP_DESTUNREACH_RATE = 60,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ICMP_TIMEEXCEED_RATE = 61,
+  NET_IPV4_ICMP_PARAMPROB_RATE = 62,
+  NET_IPV4_ICMP_ECHOREPLY_RATE = 63,
+  NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES = 64,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_IGMP_MAX_MEMBERSHIPS = 65,
+  NET_TCP_TW_RECYCLE = 66,
+  NET_IPV4_ALWAYS_DEFRAG = 67,
+  NET_IPV4_TCP_KEEPALIVE_INTVL = 68,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_INET_PEER_THRESHOLD = 69,
+  NET_IPV4_INET_PEER_MINTTL = 70,
+  NET_IPV4_INET_PEER_MAXTTL = 71,
+  NET_IPV4_INET_PEER_GC_MINTIME = 72,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_INET_PEER_GC_MAXTIME = 73,
+  NET_TCP_ORPHAN_RETRIES = 74,
+  NET_TCP_ABORT_ON_OVERFLOW = 75,
+  NET_TCP_SYNACK_RETRIES = 76,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_MAX_ORPHANS = 77,
+  NET_TCP_MAX_TW_BUCKETS = 78,
+  NET_TCP_FACK = 79,
+  NET_TCP_REORDERING = 80,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_ECN = 81,
+  NET_TCP_DSACK = 82,
+  NET_TCP_MEM = 83,
+  NET_TCP_WMEM = 84,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_RMEM = 85,
+  NET_TCP_APP_WIN = 86,
+  NET_TCP_ADV_WIN_SCALE = 87,
+  NET_IPV4_NONLOCAL_BIND = 88,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ICMP_RATELIMIT = 89,
+  NET_IPV4_ICMP_RATEMASK = 90,
+  NET_TCP_TW_REUSE = 91,
+  NET_TCP_FRTO = 92,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_LOW_LATENCY = 93,
+  NET_IPV4_IPFRAG_SECRET_INTERVAL = 94,
+  NET_IPV4_IGMP_MAX_MSF = 96,
+  NET_TCP_NO_METRICS_SAVE = 97,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_DEFAULT_WIN_SCALE = 105,
+  NET_TCP_MODERATE_RCVBUF = 106,
+  NET_TCP_TSO_WIN_DIVISOR = 107,
+  NET_TCP_BIC_BETA = 108,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR = 109,
+  NET_TCP_CONG_CONTROL = 110,
+  NET_TCP_ABC = 111,
+  NET_IPV4_IPFRAG_MAX_DIST = 112,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_MTU_PROBING = 113,
+  NET_TCP_BASE_MSS = 114,
+  NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS = 115,
+  NET_TCP_DMA_COPYBREAK = 116,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_SLOW_START_AFTER_IDLE = 117,
+  NET_CIPSOV4_CACHE_ENABLE = 118,
+  NET_CIPSOV4_CACHE_BUCKET_SIZE = 119,
+  NET_CIPSOV4_RBM_OPTFMT = 120,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_CIPSOV4_RBM_STRICTVALID = 121,
+  NET_TCP_AVAIL_CONG_CONTROL = 122,
+  NET_TCP_ALLOWED_CONG_CONTROL = 123,
+  NET_TCP_MAX_SSTHRESH = 124,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TCP_FRTO_RESPONSE = 125,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- DEV_SCSI_LOGGING_LEVEL=1,
+  NET_IPV4_ROUTE_FLUSH = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ROUTE_MIN_DELAY = 2,
+  NET_IPV4_ROUTE_MAX_DELAY = 3,
+  NET_IPV4_ROUTE_GC_THRESH = 4,
+  NET_IPV4_ROUTE_MAX_SIZE = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ROUTE_GC_MIN_INTERVAL = 6,
+  NET_IPV4_ROUTE_GC_TIMEOUT = 7,
+  NET_IPV4_ROUTE_GC_INTERVAL = 8,
+  NET_IPV4_ROUTE_REDIRECT_LOAD = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ROUTE_REDIRECT_NUMBER = 10,
+  NET_IPV4_ROUTE_REDIRECT_SILENCE = 11,
+  NET_IPV4_ROUTE_ERROR_COST = 12,
+  NET_IPV4_ROUTE_ERROR_BURST = 13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ROUTE_GC_ELASTICITY = 14,
+  NET_IPV4_ROUTE_MTU_EXPIRES = 15,
+  NET_IPV4_ROUTE_MIN_PMTU = 16,
+  NET_IPV4_ROUTE_MIN_ADVMSS = 17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_ROUTE_SECRET_INTERVAL = 18,
+  NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS = 19,
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- DEV_IPMI_POWEROFF_POWERCYCLE=1,
+  NET_PROTO_CONF_ALL = - 2,
+  NET_PROTO_CONF_DEFAULT = - 3
 };
-enum
-{
+enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ABI_DEFHANDLER_COFF=1,
- ABI_DEFHANDLER_ELF=2,
- ABI_DEFHANDLER_LCALL7=3,
- ABI_DEFHANDLER_LIBCSO=4,
+  NET_IPV4_CONF_FORWARDING = 1,
+  NET_IPV4_CONF_MC_FORWARDING = 2,
+  NET_IPV4_CONF_PROXY_ARP = 3,
+  NET_IPV4_CONF_ACCEPT_REDIRECTS = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ABI_TRACE=5,
- ABI_FAKE_UTSNAME=6,
+  NET_IPV4_CONF_SECURE_REDIRECTS = 5,
+  NET_IPV4_CONF_SEND_REDIRECTS = 6,
+  NET_IPV4_CONF_SHARED_MEDIA = 7,
+  NET_IPV4_CONF_RP_FILTER = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE = 9,
+  NET_IPV4_CONF_BOOTP_RELAY = 10,
+  NET_IPV4_CONF_LOG_MARTIANS = 11,
+  NET_IPV4_CONF_TAG = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_CONF_ARPFILTER = 13,
+  NET_IPV4_CONF_MEDIUM_ID = 14,
+  NET_IPV4_CONF_NOXFRM = 15,
+  NET_IPV4_CONF_NOPOLICY = 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_CONF_FORCE_IGMP_VERSION = 17,
+  NET_IPV4_CONF_ARP_ANNOUNCE = 18,
+  NET_IPV4_CONF_ARP_IGNORE = 19,
+  NET_IPV4_CONF_PROMOTE_SECONDARIES = 20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_CONF_ARP_ACCEPT = 21,
+  NET_IPV4_CONF_ARP_NOTIFY = 22,
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_NF_CONNTRACK_MAX = 1,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT = 2,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV = 3,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT = 5,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT = 6,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK = 7,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE = 9,
+  NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT = 10,
+  NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM = 11,
+  NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT = 13,
+  NET_IPV4_NF_CONNTRACK_BUCKETS = 14,
+  NET_IPV4_NF_CONNTRACK_LOG_INVALID = 15,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS = 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_NF_CONNTRACK_TCP_LOOSE = 17,
+  NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL = 18,
+  NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS = 19,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED = 20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT = 21,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED = 22,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED = 23,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT = 24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD = 25,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT = 26,
+  NET_IPV4_NF_CONNTRACK_COUNT = 27,
+  NET_IPV4_NF_CONNTRACK_CHECKSUM = 28,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  NET_IPV6_CONF = 16,
+  NET_IPV6_NEIGH = 17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_ROUTE = 18,
+  NET_IPV6_ICMP = 19,
+  NET_IPV6_BINDV6ONLY = 20,
+  NET_IPV6_IP6FRAG_HIGH_THRESH = 21,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_IP6FRAG_LOW_THRESH = 22,
+  NET_IPV6_IP6FRAG_TIME = 23,
+  NET_IPV6_IP6FRAG_SECRET_INTERVAL = 24,
+  NET_IPV6_MLD_MAX_MSF = 25,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  NET_IPV6_ROUTE_FLUSH = 1,
+  NET_IPV6_ROUTE_GC_THRESH = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_ROUTE_MAX_SIZE = 3,
+  NET_IPV6_ROUTE_GC_MIN_INTERVAL = 4,
+  NET_IPV6_ROUTE_GC_TIMEOUT = 5,
+  NET_IPV6_ROUTE_GC_INTERVAL = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_ROUTE_GC_ELASTICITY = 7,
+  NET_IPV6_ROUTE_MTU_EXPIRES = 8,
+  NET_IPV6_ROUTE_MIN_ADVMSS = 9,
+  NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS = 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  NET_IPV6_FORWARDING = 1,
+  NET_IPV6_HOP_LIMIT = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_MTU = 3,
+  NET_IPV6_ACCEPT_RA = 4,
+  NET_IPV6_ACCEPT_REDIRECTS = 5,
+  NET_IPV6_AUTOCONF = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_DAD_TRANSMITS = 7,
+  NET_IPV6_RTR_SOLICITS = 8,
+  NET_IPV6_RTR_SOLICIT_INTERVAL = 9,
+  NET_IPV6_RTR_SOLICIT_DELAY = 10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_USE_TEMPADDR = 11,
+  NET_IPV6_TEMP_VALID_LFT = 12,
+  NET_IPV6_TEMP_PREFERED_LFT = 13,
+  NET_IPV6_REGEN_MAX_RETRY = 14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_MAX_DESYNC_FACTOR = 15,
+  NET_IPV6_MAX_ADDRESSES = 16,
+  NET_IPV6_FORCE_MLD_VERSION = 17,
+  NET_IPV6_ACCEPT_RA_DEFRTR = 18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_ACCEPT_RA_PINFO = 19,
+  NET_IPV6_ACCEPT_RA_RTR_PREF = 20,
+  NET_IPV6_RTR_PROBE_INTERVAL = 21,
+  NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN = 22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPV6_PROXY_NDP = 23,
+  NET_IPV6_ACCEPT_SOURCE_ROUTE = 25,
+  NET_IPV6_ACCEPT_RA_FROM_LOCAL = 26,
+  __NET_IPV6_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  NET_IPV6_ICMP_RATELIMIT = 1
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  NET_NEIGH_MCAST_SOLICIT = 1,
+  NET_NEIGH_UCAST_SOLICIT = 2,
+  NET_NEIGH_APP_SOLICIT = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NEIGH_RETRANS_TIME = 4,
+  NET_NEIGH_REACHABLE_TIME = 5,
+  NET_NEIGH_DELAY_PROBE_TIME = 6,
+  NET_NEIGH_GC_STALE_TIME = 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NEIGH_UNRES_QLEN = 8,
+  NET_NEIGH_PROXY_QLEN = 9,
+  NET_NEIGH_ANYCAST_DELAY = 10,
+  NET_NEIGH_PROXY_DELAY = 11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NEIGH_LOCKTIME = 12,
+  NET_NEIGH_GC_INTERVAL = 13,
+  NET_NEIGH_GC_THRESH1 = 14,
+  NET_NEIGH_GC_THRESH2 = 15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NEIGH_GC_THRESH3 = 16,
+  NET_NEIGH_RETRANS_TIME_MS = 17,
+  NET_NEIGH_REACHABLE_TIME_MS = 18,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  NET_DCCP_DEFAULT = 1,
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IPX_PPROP_BROADCASTING = 1,
+  NET_IPX_FORWARDING = 2
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_LLC2 = 1,
+  NET_LLC_STATION = 2,
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_LLC2_TIMEOUT = 1,
+};
+enum {
+  NET_LLC_STATION_ACK_TIMEOUT = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  NET_LLC2_ACK_TIMEOUT = 1,
+  NET_LLC2_P_TIMEOUT = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_LLC2_REJ_TIMEOUT = 3,
+  NET_LLC2_BUSY_TIMEOUT = 4,
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_ATALK_AARP_EXPIRY_TIME = 1,
+  NET_ATALK_AARP_TICK_TIME = 2,
+  NET_ATALK_AARP_RETRANSMIT_LIMIT = 3,
+  NET_ATALK_AARP_RESOLVE_TIME = 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  NET_NETROM_DEFAULT_PATH_QUALITY = 1,
+  NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NETROM_NETWORK_TTL_INITIALISER = 3,
+  NET_NETROM_TRANSPORT_TIMEOUT = 4,
+  NET_NETROM_TRANSPORT_MAXIMUM_TRIES = 5,
+  NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NETROM_TRANSPORT_BUSY_DELAY = 7,
+  NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE = 8,
+  NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT = 9,
+  NET_NETROM_ROUTING_CONTROL = 10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_NETROM_LINK_FAILS_COUNT = 11,
+  NET_NETROM_RESET = 12
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_AX25_IP_DEFAULT_MODE = 1,
+  NET_AX25_DEFAULT_MODE = 2,
+  NET_AX25_BACKOFF_TYPE = 3,
+  NET_AX25_CONNECT_MODE = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_AX25_STANDARD_WINDOW = 5,
+  NET_AX25_EXTENDED_WINDOW = 6,
+  NET_AX25_T1_TIMEOUT = 7,
+  NET_AX25_T2_TIMEOUT = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_AX25_T3_TIMEOUT = 9,
+  NET_AX25_IDLE_TIMEOUT = 10,
+  NET_AX25_N2 = 11,
+  NET_AX25_PACLEN = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_AX25_PROTOCOL = 13,
+  NET_AX25_DAMA_SLAVE_TIMEOUT = 14
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_ROSE_RESTART_REQUEST_TIMEOUT = 1,
+  NET_ROSE_CALL_REQUEST_TIMEOUT = 2,
+  NET_ROSE_RESET_REQUEST_TIMEOUT = 3,
+  NET_ROSE_CLEAR_REQUEST_TIMEOUT = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_ROSE_ACK_HOLD_BACK_TIMEOUT = 5,
+  NET_ROSE_ROUTING_CONTROL = 6,
+  NET_ROSE_LINK_FAIL_TIMEOUT = 7,
+  NET_ROSE_MAX_VCS = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_ROSE_WINDOW_SIZE = 9,
+  NET_ROSE_NO_ACTIVITY_TIMEOUT = 10
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_X25_RESTART_REQUEST_TIMEOUT = 1,
+  NET_X25_CALL_REQUEST_TIMEOUT = 2,
+  NET_X25_RESET_REQUEST_TIMEOUT = 3,
+  NET_X25_CLEAR_REQUEST_TIMEOUT = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_X25_ACK_HOLD_BACK_TIMEOUT = 5,
+  NET_X25_FORWARD = 6
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_TR_RIF_TIMEOUT = 1
+};
+enum {
+  NET_DECNET_NODE_TYPE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_NODE_ADDRESS = 2,
+  NET_DECNET_NODE_NAME = 3,
+  NET_DECNET_DEFAULT_DEVICE = 4,
+  NET_DECNET_TIME_WAIT = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_DN_COUNT = 6,
+  NET_DECNET_DI_COUNT = 7,
+  NET_DECNET_DR_COUNT = 8,
+  NET_DECNET_DST_GC_INTERVAL = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_CONF = 10,
+  NET_DECNET_NO_FC_MAX_CWND = 11,
+  NET_DECNET_MEM = 12,
+  NET_DECNET_RMEM = 13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_WMEM = 14,
+  NET_DECNET_DEBUG_LEVEL = 255
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_CONF_LOOPBACK = - 2,
+  NET_DECNET_CONF_DDCMP = - 3,
+  NET_DECNET_CONF_PPP = - 4,
+  NET_DECNET_CONF_X25 = - 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_CONF_GRE = - 6,
+  NET_DECNET_CONF_ETHER = - 7
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_CONF_DEV_PRIORITY = 1,
+  NET_DECNET_CONF_DEV_T1 = 2,
+  NET_DECNET_CONF_DEV_T2 = 3,
+  NET_DECNET_CONF_DEV_T3 = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_DECNET_CONF_DEV_FORWARDING = 5,
+  NET_DECNET_CONF_DEV_BLKSIZE = 6,
+  NET_DECNET_CONF_DEV_STATE = 7
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  NET_SCTP_RTO_INITIAL = 1,
+  NET_SCTP_RTO_MIN = 2,
+  NET_SCTP_RTO_MAX = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_SCTP_RTO_ALPHA = 4,
+  NET_SCTP_RTO_BETA = 5,
+  NET_SCTP_VALID_COOKIE_LIFE = 6,
+  NET_SCTP_ASSOCIATION_MAX_RETRANS = 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_SCTP_PATH_MAX_RETRANS = 8,
+  NET_SCTP_MAX_INIT_RETRANSMITS = 9,
+  NET_SCTP_HB_INTERVAL = 10,
+  NET_SCTP_PRESERVE_ENABLE = 11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_SCTP_MAX_BURST = 12,
+  NET_SCTP_ADDIP_ENABLE = 13,
+  NET_SCTP_PRSCTP_ENABLE = 14,
+  NET_SCTP_SNDBUF_POLICY = 15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_SCTP_SACK_TIMEOUT = 16,
+  NET_SCTP_RCVBUF_POLICY = 17,
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_BRIDGE_NF_CALL_ARPTABLES = 1,
+  NET_BRIDGE_NF_CALL_IPTABLES = 2,
+  NET_BRIDGE_NF_CALL_IP6TABLES = 3,
+  NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5,
+};
+enum {
+  NET_IRDA_DISCOVERY = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IRDA_DEVNAME = 2,
+  NET_IRDA_DEBUG = 3,
+  NET_IRDA_FAST_POLL = 4,
+  NET_IRDA_DISCOVERY_SLOTS = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IRDA_DISCOVERY_TIMEOUT = 6,
+  NET_IRDA_SLOT_TIMEOUT = 7,
+  NET_IRDA_MAX_BAUD_RATE = 8,
+  NET_IRDA_MIN_TX_TURN_TIME = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IRDA_MAX_TX_DATA_SIZE = 10,
+  NET_IRDA_MAX_TX_WINDOW = 11,
+  NET_IRDA_MAX_NOREPLY_TIME = 12,
+  NET_IRDA_WARN_NOREPLY_TIME = 13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NET_IRDA_LAP_KEEPALIVE_TIME = 14,
+};
+enum {
+  FS_NRINODE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FS_STATINODE = 2,
+  FS_MAXINODE = 3,
+  FS_NRDQUOT = 4,
+  FS_MAXDQUOT = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FS_NRFILE = 6,
+  FS_MAXFILE = 7,
+  FS_DENTRY = 8,
+  FS_NRSUPER = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FS_MAXSUPER = 10,
+  FS_OVERFLOWUID = 11,
+  FS_OVERFLOWGID = 12,
+  FS_LEASES = 13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FS_DIR_NOTIFY = 14,
+  FS_LEASE_TIME = 15,
+  FS_DQSTATS = 16,
+  FS_XFS = 17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FS_AIO_NR = 18,
+  FS_AIO_MAX_NR = 19,
+  FS_INOTIFY = 20,
+  FS_OCFS2 = 988,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  FS_DQ_LOOKUPS = 1,
+  FS_DQ_DROPS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FS_DQ_READS = 3,
+  FS_DQ_WRITES = 4,
+  FS_DQ_CACHE_HITS = 5,
+  FS_DQ_ALLOCATED = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FS_DQ_FREE = 7,
+  FS_DQ_SYNCS = 8,
+  FS_DQ_WARNINGS = 9,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  DEV_CDROM = 1,
+  DEV_HWMON = 2,
+  DEV_PARPORT = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DEV_RAID = 4,
+  DEV_MAC_HID = 5,
+  DEV_SCSI = 6,
+  DEV_IPMI = 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  DEV_CDROM_INFO = 1,
+  DEV_CDROM_AUTOCLOSE = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DEV_CDROM_AUTOEJECT = 3,
+  DEV_CDROM_DEBUG = 4,
+  DEV_CDROM_LOCK = 5,
+  DEV_CDROM_CHECK_MEDIA = 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  DEV_PARPORT_DEFAULT = - 3
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  DEV_RAID_SPEED_LIMIT_MIN = 1,
+  DEV_RAID_SPEED_LIMIT_MAX = 2
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  DEV_PARPORT_DEFAULT_TIMESLICE = 1,
+  DEV_PARPORT_DEFAULT_SPINTIME = 2
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  DEV_PARPORT_SPINTIME = 1,
+  DEV_PARPORT_BASE_ADDR = 2,
+  DEV_PARPORT_IRQ = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DEV_PARPORT_DMA = 4,
+  DEV_PARPORT_MODES = 5,
+  DEV_PARPORT_DEVICES = 6,
+  DEV_PARPORT_AUTOPROBE = 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  DEV_PARPORT_DEVICES_ACTIVE = - 3,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  DEV_PARPORT_DEVICE_TIMESLICE = 1,
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES = 1,
+  DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES = 2,
+  DEV_MAC_HID_MOUSE_BUTTON_EMULATION = 3,
+  DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE = 5,
+  DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES = 6
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  DEV_SCSI_LOGGING_LEVEL = 1,
+};
+enum {
+  DEV_IPMI_POWEROFF_POWERCYCLE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  ABI_DEFHANDLER_COFF = 1,
+  ABI_DEFHANDLER_ELF = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ABI_DEFHANDLER_LCALL7 = 3,
+  ABI_DEFHANDLER_LIBCSO = 4,
+  ABI_TRACE = 5,
+  ABI_FAKE_UTSNAME = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/sysinfo.h b/libc/kernel/uapi/linux/sysinfo.h
index c72f411..75c6769 100644
--- a/libc/kernel/uapi/linux/sysinfo.h
+++ b/libc/kernel/uapi/linux/sysinfo.h
@@ -22,23 +22,23 @@
 #define SI_LOAD_SHIFT 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sysinfo {
- __kernel_long_t uptime;
- __kernel_ulong_t loads[3];
- __kernel_ulong_t totalram;
+  __kernel_long_t uptime;
+  __kernel_ulong_t loads[3];
+  __kernel_ulong_t totalram;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t freeram;
- __kernel_ulong_t sharedram;
- __kernel_ulong_t bufferram;
- __kernel_ulong_t totalswap;
+  __kernel_ulong_t freeram;
+  __kernel_ulong_t sharedram;
+  __kernel_ulong_t bufferram;
+  __kernel_ulong_t totalswap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t freeswap;
- __u16 procs;
- __u16 pad;
- __kernel_ulong_t totalhigh;
+  __kernel_ulong_t freeswap;
+  __u16 procs;
+  __u16 pad;
+  __kernel_ulong_t totalhigh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_ulong_t freehigh;
- __u32 mem_unit;
- char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)];
+  __kernel_ulong_t freehigh;
+  __u32 mem_unit;
+  char _f[20 - 2 * sizeof(__kernel_ulong_t) - sizeof(__u32)];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
new file mode 100644
index 0000000..7e0cf43
--- /dev/null
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __TARGET_CORE_USER_H
+#define __TARGET_CORE_USER_H
+#include <linux/types.h>
+#include <linux/uio.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCMU_VERSION "1.0"
+#define TCMU_MAILBOX_VERSION 1
+#define ALIGN_SIZE 64
+struct tcmu_mailbox {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 version;
+  __u16 flags;
+  __u32 cmdr_off;
+  __u32 cmdr_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 cmd_head;
+  __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
+} __packed;
+enum tcmu_opcode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCMU_OP_PAD = 0,
+  TCMU_OP_CMD,
+};
+struct tcmu_cmd_entry_hdr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 len_op;
+} __packed;
+#define TCMU_OP_MASK 0x7
+#define TCMU_SENSE_BUFFERSIZE 96
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct tcmu_cmd_entry {
+  struct tcmu_cmd_entry_hdr hdr;
+  uint16_t cmd_id;
+  uint16_t __pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
+    struct {
+      uint64_t cdb_off;
+      uint64_t iov_cnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+      struct iovec iov[0];
+    } req;
+    struct {
+      uint8_t scsi_status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+      uint8_t __pad1;
+      uint16_t __pad2;
+      uint32_t __pad3;
+      char sense_buffer[TCMU_SENSE_BUFFERSIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    } rsp;
+  };
+} __packed;
+#define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum tcmu_genl_cmd {
+  TCMU_CMD_UNSPEC,
+  TCMU_CMD_ADDED_DEVICE,
+  TCMU_CMD_REMOVED_DEVICE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __TCMU_CMD_MAX,
+};
+#define TCMU_CMD_MAX (__TCMU_CMD_MAX - 1)
+enum tcmu_genl_attr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCMU_ATTR_UNSPEC,
+  TCMU_ATTR_DEVICE,
+  TCMU_ATTR_MINOR,
+  __TCMU_ATTR_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1)
+#endif
diff --git a/libc/kernel/uapi/linux/taskstats.h b/libc/kernel/uapi/linux/taskstats.h
index fd7e9ed..298ebf0 100644
--- a/libc/kernel/uapi/linux/taskstats.h
+++ b/libc/kernel/uapi/linux/taskstats.h
@@ -23,93 +23,93 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TS_COMM_LEN 32
 struct taskstats {
- __u16 version;
- __u32 ac_exitcode;
+  __u16 version;
+  __u32 ac_exitcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ac_flag;
- __u8 ac_nice;
- __u64 cpu_count __attribute__((aligned(8)));
- __u64 cpu_delay_total;
+  __u8 ac_flag;
+  __u8 ac_nice;
+  __u64 cpu_count __attribute__((aligned(8)));
+  __u64 cpu_delay_total;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 blkio_count;
- __u64 blkio_delay_total;
- __u64 swapin_count;
- __u64 swapin_delay_total;
+  __u64 blkio_count;
+  __u64 blkio_delay_total;
+  __u64 swapin_count;
+  __u64 swapin_delay_total;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 cpu_run_real_total;
- __u64 cpu_run_virtual_total;
- char ac_comm[TS_COMM_LEN];
- __u8 ac_sched __attribute__((aligned(8)));
+  __u64 cpu_run_real_total;
+  __u64 cpu_run_virtual_total;
+  char ac_comm[TS_COMM_LEN];
+  __u8 ac_sched __attribute__((aligned(8)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ac_pad[3];
- __u32 ac_uid __attribute__((aligned(8)));
- __u32 ac_gid;
- __u32 ac_pid;
+  __u8 ac_pad[3];
+  __u32 ac_uid __attribute__((aligned(8)));
+  __u32 ac_gid;
+  __u32 ac_pid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ac_ppid;
- __u32 ac_btime;
- __u64 ac_etime __attribute__((aligned(8)));
- __u64 ac_utime;
+  __u32 ac_ppid;
+  __u32 ac_btime;
+  __u64 ac_etime __attribute__((aligned(8)));
+  __u64 ac_utime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 ac_stime;
- __u64 ac_minflt;
- __u64 ac_majflt;
- __u64 coremem;
+  __u64 ac_stime;
+  __u64 ac_minflt;
+  __u64 ac_majflt;
+  __u64 coremem;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 virtmem;
- __u64 hiwater_rss;
- __u64 hiwater_vm;
- __u64 read_char;
+  __u64 virtmem;
+  __u64 hiwater_rss;
+  __u64 hiwater_vm;
+  __u64 read_char;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 write_char;
- __u64 read_syscalls;
- __u64 write_syscalls;
+  __u64 write_char;
+  __u64 read_syscalls;
+  __u64 write_syscalls;
 #define TASKSTATS_HAS_IO_ACCOUNTING
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 read_bytes;
- __u64 write_bytes;
- __u64 cancelled_write_bytes;
- __u64 nvcsw;
+  __u64 read_bytes;
+  __u64 write_bytes;
+  __u64 cancelled_write_bytes;
+  __u64 nvcsw;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 nivcsw;
- __u64 ac_utimescaled;
- __u64 ac_stimescaled;
- __u64 cpu_scaled_run_real_total;
+  __u64 nivcsw;
+  __u64 ac_utimescaled;
+  __u64 ac_stimescaled;
+  __u64 cpu_scaled_run_real_total;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 freepages_count;
- __u64 freepages_delay_total;
+  __u64 freepages_count;
+  __u64 freepages_delay_total;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TASKSTATS_CMD_UNSPEC = 0,
- TASKSTATS_CMD_GET,
- TASKSTATS_CMD_NEW,
- __TASKSTATS_CMD_MAX,
+  TASKSTATS_CMD_UNSPEC = 0,
+  TASKSTATS_CMD_GET,
+  TASKSTATS_CMD_NEW,
+  __TASKSTATS_CMD_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TASKSTATS_CMD_MAX (__TASKSTATS_CMD_MAX - 1)
 enum {
- TASKSTATS_TYPE_UNSPEC = 0,
+  TASKSTATS_TYPE_UNSPEC = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TASKSTATS_TYPE_PID,
- TASKSTATS_TYPE_TGID,
- TASKSTATS_TYPE_STATS,
- TASKSTATS_TYPE_AGGR_PID,
+  TASKSTATS_TYPE_PID,
+  TASKSTATS_TYPE_TGID,
+  TASKSTATS_TYPE_STATS,
+  TASKSTATS_TYPE_AGGR_PID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TASKSTATS_TYPE_AGGR_TGID,
- TASKSTATS_TYPE_NULL,
- __TASKSTATS_TYPE_MAX,
+  TASKSTATS_TYPE_AGGR_TGID,
+  TASKSTATS_TYPE_NULL,
+  __TASKSTATS_TYPE_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKSTATS_TYPE_MAX (__TASKSTATS_TYPE_MAX - 1)
 enum {
- TASKSTATS_CMD_ATTR_UNSPEC = 0,
- TASKSTATS_CMD_ATTR_PID,
+  TASKSTATS_CMD_ATTR_UNSPEC = 0,
+  TASKSTATS_CMD_ATTR_PID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TASKSTATS_CMD_ATTR_TGID,
- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
- __TASKSTATS_CMD_ATTR_MAX,
+  TASKSTATS_CMD_ATTR_TGID,
+  TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
+  TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
+  __TASKSTATS_CMD_ATTR_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TASKSTATS_CMD_ATTR_MAX (__TASKSTATS_CMD_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tc_act/tc_csum.h b/libc/kernel/uapi/linux/tc_act/tc_csum.h
index 889eda8..83c00b6 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_csum.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_csum.h
@@ -23,27 +23,27 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_CSUM 16
 enum {
- TCA_CSUM_UNSPEC,
- TCA_CSUM_PARMS,
+  TCA_CSUM_UNSPEC,
+  TCA_CSUM_PARMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_CSUM_TM,
- __TCA_CSUM_MAX
+  TCA_CSUM_TM,
+  __TCA_CSUM_MAX
 };
 #define TCA_CSUM_MAX (__TCA_CSUM_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1,
- TCA_CSUM_UPDATE_FLAG_ICMP = 2,
- TCA_CSUM_UPDATE_FLAG_IGMP = 4,
+  TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1,
+  TCA_CSUM_UPDATE_FLAG_ICMP = 2,
+  TCA_CSUM_UPDATE_FLAG_IGMP = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_CSUM_UPDATE_FLAG_TCP = 8,
- TCA_CSUM_UPDATE_FLAG_UDP = 16,
- TCA_CSUM_UPDATE_FLAG_UDPLITE = 32
+  TCA_CSUM_UPDATE_FLAG_TCP = 8,
+  TCA_CSUM_UPDATE_FLAG_UDP = 16,
+  TCA_CSUM_UPDATE_FLAG_UDPLITE = 32
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_csum {
- tc_gen;
- __u32 update_flags;
+  tc_gen;
+  __u32 update_flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/tc_act/tc_defact.h b/libc/kernel/uapi/linux/tc_act/tc_defact.h
index 4454dfc..b96bcd5 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_defact.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_defact.h
@@ -21,15 +21,15 @@
 #include <linux/pkt_cls.h>
 struct tc_defact {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tc_gen;
+  tc_gen;
 };
 enum {
- TCA_DEF_UNSPEC,
+  TCA_DEF_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_DEF_TM,
- TCA_DEF_PARMS,
- TCA_DEF_DATA,
- __TCA_DEF_MAX
+  TCA_DEF_TM,
+  TCA_DEF_PARMS,
+  TCA_DEF_DATA,
+  __TCA_DEF_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_DEF_MAX (__TCA_DEF_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tc_act/tc_gact.h b/libc/kernel/uapi/linux/tc_act/tc_gact.h
index 90538e1..18152e2 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_gact.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_gact.h
@@ -23,7 +23,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_GACT 5
 struct tc_gact {
- tc_gen;
+  tc_gen;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_gact_p {
@@ -31,19 +31,19 @@
 #define PGACT_NETRAND 1
 #define PGACT_DETERM 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define MAX_RAND (PGACT_DETERM + 1 )
- __u16 ptype;
- __u16 pval;
- int paction;
+#define MAX_RAND (PGACT_DETERM + 1)
+  __u16 ptype;
+  __u16 pval;
+  int paction;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCA_GACT_UNSPEC,
- TCA_GACT_TM,
+  TCA_GACT_UNSPEC,
+  TCA_GACT_TM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_GACT_PARMS,
- TCA_GACT_PROB,
- __TCA_GACT_MAX
+  TCA_GACT_PARMS,
+  TCA_GACT_PROB,
+  __TCA_GACT_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_GACT_MAX (__TCA_GACT_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tc_act/tc_ipt.h b/libc/kernel/uapi/linux/tc_act/tc_ipt.h
index 00b88b8..10b8805 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_ipt.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_ipt.h
@@ -23,16 +23,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_XT 10
 enum {
- TCA_IPT_UNSPEC,
- TCA_IPT_TABLE,
+  TCA_IPT_UNSPEC,
+  TCA_IPT_TABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_IPT_HOOK,
- TCA_IPT_INDEX,
- TCA_IPT_CNT,
- TCA_IPT_TM,
+  TCA_IPT_HOOK,
+  TCA_IPT_INDEX,
+  TCA_IPT_CNT,
+  TCA_IPT_TM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_IPT_TARG,
- __TCA_IPT_MAX
+  TCA_IPT_TARG,
+  __TCA_IPT_MAX
 };
 #define TCA_IPT_MAX (__TCA_IPT_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/tc_act/tc_mirred.h b/libc/kernel/uapi/linux/tc_act/tc_mirred.h
index d982b32..983ce92 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_mirred.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_mirred.h
@@ -28,17 +28,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_INGRESS_MIRROR 4
 struct tc_mirred {
- tc_gen;
- int eaction;
+  tc_gen;
+  int eaction;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ifindex;
+  __u32 ifindex;
 };
 enum {
- TCA_MIRRED_UNSPEC,
+  TCA_MIRRED_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_MIRRED_TM,
- TCA_MIRRED_PARMS,
- __TCA_MIRRED_MAX
+  TCA_MIRRED_TM,
+  TCA_MIRRED_PARMS,
+  __TCA_MIRRED_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_MIRRED_MAX (__TCA_MIRRED_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tc_act/tc_nat.h b/libc/kernel/uapi/linux/tc_act/tc_nat.h
index f8dadf3..e812d59 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_nat.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_nat.h
@@ -23,22 +23,22 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_NAT 9
 enum {
- TCA_NAT_UNSPEC,
- TCA_NAT_PARMS,
+  TCA_NAT_UNSPEC,
+  TCA_NAT_PARMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_NAT_TM,
- __TCA_NAT_MAX
+  TCA_NAT_TM,
+  __TCA_NAT_MAX
 };
 #define TCA_NAT_MAX (__TCA_NAT_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_NAT_FLAG_EGRESS 1
 struct tc_nat {
- tc_gen;
- __be32 old_addr;
+  tc_gen;
+  __be32 old_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 new_addr;
- __be32 mask;
- __u32 flags;
+  __be32 new_addr;
+  __be32 mask;
+  __u32 flags;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/tc_act/tc_pedit.h b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
index bae5fe0..4a1721a 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_pedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
@@ -23,30 +23,30 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_PEDIT 7
 enum {
- TCA_PEDIT_UNSPEC,
- TCA_PEDIT_TM,
+  TCA_PEDIT_UNSPEC,
+  TCA_PEDIT_TM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_PEDIT_PARMS,
- __TCA_PEDIT_MAX
+  TCA_PEDIT_PARMS,
+  __TCA_PEDIT_MAX
 };
 #define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_pedit_key {
- __u32 mask;
- __u32 val;
- __u32 off;
+  __u32 mask;
+  __u32 val;
+  __u32 off;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 at;
- __u32 offmask;
- __u32 shift;
+  __u32 at;
+  __u32 offmask;
+  __u32 shift;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_pedit_sel {
- tc_gen;
- unsigned char nkeys;
- unsigned char flags;
+  tc_gen;
+  unsigned char nkeys;
+  unsigned char flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tc_pedit_key keys[0];
+  struct tc_pedit_key keys[0];
 };
 #define tc_pedit tc_pedit_sel
 #endif
diff --git a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 3ffac05..73fd3a9 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -26,18 +26,18 @@
 #define SKBEDIT_F_MARK 0x4
 struct tc_skbedit {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- tc_gen;
+  tc_gen;
 };
 enum {
- TCA_SKBEDIT_UNSPEC,
+  TCA_SKBEDIT_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_SKBEDIT_TM,
- TCA_SKBEDIT_PARMS,
- TCA_SKBEDIT_PRIORITY,
- TCA_SKBEDIT_QUEUE_MAPPING,
+  TCA_SKBEDIT_TM,
+  TCA_SKBEDIT_PARMS,
+  TCA_SKBEDIT_PRIORITY,
+  TCA_SKBEDIT_QUEUE_MAPPING,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_SKBEDIT_MARK,
- __TCA_SKBEDIT_MAX
+  TCA_SKBEDIT_MARK,
+  __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/tc_ematch/tc_em_cmp.h b/libc/kernel/uapi/linux/tc_ematch/tc_em_cmp.h
index 8032e0f..d545dae 100644
--- a/libc/kernel/uapi/linux/tc_ematch/tc_em_cmp.h
+++ b/libc/kernel/uapi/linux/tc_ematch/tc_em_cmp.h
@@ -22,21 +22,21 @@
 #include <linux/pkt_cls.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcf_em_cmp {
- __u32 val;
- __u32 mask;
- __u16 off;
+  __u32 val;
+  __u32 mask;
+  __u16 off;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 align:4;
- __u8 flags:4;
- __u8 layer:4;
- __u8 opnd:4;
+  __u8 align : 4;
+  __u8 flags : 4;
+  __u8 layer : 4;
+  __u8 opnd : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- TCF_EM_ALIGN_U8 = 1,
- TCF_EM_ALIGN_U16 = 2,
+  TCF_EM_ALIGN_U8 = 1,
+  TCF_EM_ALIGN_U16 = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_EM_ALIGN_U32 = 4
+  TCF_EM_ALIGN_U32 = 4
 };
 #define TCF_EM_CMP_TRANS 1
 #endif
diff --git a/libc/kernel/uapi/linux/tc_ematch/tc_em_meta.h b/libc/kernel/uapi/linux/tc_ematch/tc_em_meta.h
index e07e3b3..11a1d72 100644
--- a/libc/kernel/uapi/linux/tc_ematch/tc_em_meta.h
+++ b/libc/kernel/uapi/linux/tc_ematch/tc_em_meta.h
@@ -22,19 +22,19 @@
 #include <linux/pkt_cls.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCA_EM_META_UNSPEC,
- TCA_EM_META_HDR,
- TCA_EM_META_LVALUE,
+  TCA_EM_META_UNSPEC,
+  TCA_EM_META_HDR,
+  TCA_EM_META_LVALUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCA_EM_META_RVALUE,
- __TCA_EM_META_MAX
+  TCA_EM_META_RVALUE,
+  __TCA_EM_META_MAX
 };
 #define TCA_EM_META_MAX (__TCA_EM_META_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcf_meta_val {
- __u16 kind;
- __u8 shift;
- __u8 op;
+  __u16 kind;
+  __u8 shift;
+  __u8 op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCF_META_TYPE_MASK (0xf << 12)
@@ -43,81 +43,81 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_META_ID(kind) ((kind) & TCF_META_ID_MASK)
 enum {
- TCF_META_TYPE_VAR,
- TCF_META_TYPE_INT,
+  TCF_META_TYPE_VAR,
+  TCF_META_TYPE_INT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCF_META_TYPE_MAX
+  __TCF_META_TYPE_MAX
 };
 #define TCF_META_TYPE_MAX (__TCF_META_TYPE_MAX - 1)
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_VALUE,
- TCF_META_ID_RANDOM,
- TCF_META_ID_LOADAVG_0,
- TCF_META_ID_LOADAVG_1,
+  TCF_META_ID_VALUE,
+  TCF_META_ID_RANDOM,
+  TCF_META_ID_LOADAVG_0,
+  TCF_META_ID_LOADAVG_1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_LOADAVG_2,
- TCF_META_ID_DEV,
- TCF_META_ID_PRIORITY,
- TCF_META_ID_PROTOCOL,
+  TCF_META_ID_LOADAVG_2,
+  TCF_META_ID_DEV,
+  TCF_META_ID_PRIORITY,
+  TCF_META_ID_PROTOCOL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_PKTTYPE,
- TCF_META_ID_PKTLEN,
- TCF_META_ID_DATALEN,
- TCF_META_ID_MACLEN,
+  TCF_META_ID_PKTTYPE,
+  TCF_META_ID_PKTLEN,
+  TCF_META_ID_DATALEN,
+  TCF_META_ID_MACLEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_NFMARK,
- TCF_META_ID_TCINDEX,
- TCF_META_ID_RTCLASSID,
- TCF_META_ID_RTIIF,
+  TCF_META_ID_NFMARK,
+  TCF_META_ID_TCINDEX,
+  TCF_META_ID_RTCLASSID,
+  TCF_META_ID_RTIIF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_FAMILY,
- TCF_META_ID_SK_STATE,
- TCF_META_ID_SK_REUSE,
- TCF_META_ID_SK_BOUND_IF,
+  TCF_META_ID_SK_FAMILY,
+  TCF_META_ID_SK_STATE,
+  TCF_META_ID_SK_REUSE,
+  TCF_META_ID_SK_BOUND_IF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_REFCNT,
- TCF_META_ID_SK_SHUTDOWN,
- TCF_META_ID_SK_PROTO,
- TCF_META_ID_SK_TYPE,
+  TCF_META_ID_SK_REFCNT,
+  TCF_META_ID_SK_SHUTDOWN,
+  TCF_META_ID_SK_PROTO,
+  TCF_META_ID_SK_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_RCVBUF,
- TCF_META_ID_SK_RMEM_ALLOC,
- TCF_META_ID_SK_WMEM_ALLOC,
- TCF_META_ID_SK_OMEM_ALLOC,
+  TCF_META_ID_SK_RCVBUF,
+  TCF_META_ID_SK_RMEM_ALLOC,
+  TCF_META_ID_SK_WMEM_ALLOC,
+  TCF_META_ID_SK_OMEM_ALLOC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_WMEM_QUEUED,
- TCF_META_ID_SK_RCV_QLEN,
- TCF_META_ID_SK_SND_QLEN,
- TCF_META_ID_SK_ERR_QLEN,
+  TCF_META_ID_SK_WMEM_QUEUED,
+  TCF_META_ID_SK_RCV_QLEN,
+  TCF_META_ID_SK_SND_QLEN,
+  TCF_META_ID_SK_ERR_QLEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_FORWARD_ALLOCS,
- TCF_META_ID_SK_SNDBUF,
- TCF_META_ID_SK_ALLOCS,
- __TCF_META_ID_SK_ROUTE_CAPS,
+  TCF_META_ID_SK_FORWARD_ALLOCS,
+  TCF_META_ID_SK_SNDBUF,
+  TCF_META_ID_SK_ALLOCS,
+  __TCF_META_ID_SK_ROUTE_CAPS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_HASH,
- TCF_META_ID_SK_LINGERTIME,
- TCF_META_ID_SK_ACK_BACKLOG,
- TCF_META_ID_SK_MAX_ACK_BACKLOG,
+  TCF_META_ID_SK_HASH,
+  TCF_META_ID_SK_LINGERTIME,
+  TCF_META_ID_SK_ACK_BACKLOG,
+  TCF_META_ID_SK_MAX_ACK_BACKLOG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_PRIO,
- TCF_META_ID_SK_RCVLOWAT,
- TCF_META_ID_SK_RCVTIMEO,
- TCF_META_ID_SK_SNDTIMEO,
+  TCF_META_ID_SK_PRIO,
+  TCF_META_ID_SK_RCVLOWAT,
+  TCF_META_ID_SK_RCVTIMEO,
+  TCF_META_ID_SK_SNDTIMEO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCF_META_ID_SK_SENDMSG_OFF,
- TCF_META_ID_SK_WRITE_PENDING,
- TCF_META_ID_VLAN_TAG,
- TCF_META_ID_RXHASH,
+  TCF_META_ID_SK_SENDMSG_OFF,
+  TCF_META_ID_SK_WRITE_PENDING,
+  TCF_META_ID_VLAN_TAG,
+  TCF_META_ID_RXHASH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCF_META_ID_MAX
+  __TCF_META_ID_MAX
 };
 #define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1)
 struct tcf_meta_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tcf_meta_val left;
- struct tcf_meta_val right;
+  struct tcf_meta_val left;
+  struct tcf_meta_val right;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/tc_ematch/tc_em_nbyte.h b/libc/kernel/uapi/linux/tc_ematch/tc_em_nbyte.h
index ea37e67..cc26c1d 100644
--- a/libc/kernel/uapi/linux/tc_ematch/tc_em_nbyte.h
+++ b/libc/kernel/uapi/linux/tc_ematch/tc_em_nbyte.h
@@ -22,9 +22,9 @@
 #include <linux/pkt_cls.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcf_em_nbyte {
- __u16 off;
- __u16 len:12;
- __u8 layer:4;
+  __u16 off;
+  __u16 len : 12;
+  __u8 layer : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/tc_ematch/tc_em_text.h b/libc/kernel/uapi/linux/tc_ematch/tc_em_text.h
index 2005746..7f5a40e 100644
--- a/libc/kernel/uapi/linux/tc_ematch/tc_em_text.h
+++ b/libc/kernel/uapi/linux/tc_ematch/tc_em_text.h
@@ -23,14 +23,14 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_EM_TEXT_ALGOSIZ 16
 struct tcf_em_text {
- char algo[TC_EM_TEXT_ALGOSIZ];
- __u16 from_offset;
+  char algo[TC_EM_TEXT_ALGOSIZ];
+  __u16 from_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 to_offset;
- __u16 pattern_len;
- __u8 from_layer:4;
- __u8 to_layer:4;
+  __u16 to_offset;
+  __u16 pattern_len;
+  __u8 from_layer : 4;
+  __u8 to_layer : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pad;
+  __u8 pad;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index a7b5c5e..3347bc1 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -23,186 +23,166 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/socket.h>
 struct tcphdr {
- __be16 source;
- __be16 dest;
+  __be16 source;
+  __be16 dest;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 seq;
- __be32 ack_seq;
+  __be32 seq;
+  __be32 ack_seq;
 #ifdef __LITTLE_ENDIAN_BITFIELD
- __u16 res1:4,
+  __u16 res1 : 4, doff : 4, fin : 1, syn : 1, rst : 1, psh : 1, ack : 1, urg : 1, ece : 1, cwr : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- doff:4,
- fin:1,
- syn:1,
- rst:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- psh:1,
- ack:1,
- urg:1,
- ece:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cwr:1;
 #elif defined(__BIG_ENDIAN_BITFIELD)
- __u16 doff:4,
- res1:4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- cwr:1,
- ece:1,
- urg:1,
- ack:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- psh:1,
- rst:1,
- syn:1,
- fin:1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 doff : 4, res1 : 4, cwr : 1, ece : 1, urg : 1, ack : 1, psh : 1, rst : 1, syn : 1, fin : 1;
 #else
 #error "Adjust your <asm/byteorder.h> defines"
-#endif
- __be16 window;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __sum16 check;
- __be16 urg_ptr;
+#endif
+  __be16 window;
+  __sum16 check;
+  __be16 urg_ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 union tcp_word_hdr {
+  struct tcphdr hdr;
+  __be32 words[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tcphdr hdr;
- __be32 words[5];
 };
-#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define tcp_flag_word(tp) (((union tcp_word_hdr *) (tp))->words[3])
 enum {
- TCP_FLAG_CWR = __constant_cpu_to_be32(0x00800000),
- TCP_FLAG_ECE = __constant_cpu_to_be32(0x00400000),
- TCP_FLAG_URG = __constant_cpu_to_be32(0x00200000),
+  TCP_FLAG_CWR = __constant_cpu_to_be32(0x00800000),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_FLAG_ACK = __constant_cpu_to_be32(0x00100000),
- TCP_FLAG_PSH = __constant_cpu_to_be32(0x00080000),
- TCP_FLAG_RST = __constant_cpu_to_be32(0x00040000),
- TCP_FLAG_SYN = __constant_cpu_to_be32(0x00020000),
+  TCP_FLAG_ECE = __constant_cpu_to_be32(0x00400000),
+  TCP_FLAG_URG = __constant_cpu_to_be32(0x00200000),
+  TCP_FLAG_ACK = __constant_cpu_to_be32(0x00100000),
+  TCP_FLAG_PSH = __constant_cpu_to_be32(0x00080000),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_FLAG_FIN = __constant_cpu_to_be32(0x00010000),
- TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0F000000),
- TCP_DATA_OFFSET = __constant_cpu_to_be32(0xF0000000)
+  TCP_FLAG_RST = __constant_cpu_to_be32(0x00040000),
+  TCP_FLAG_SYN = __constant_cpu_to_be32(0x00020000),
+  TCP_FLAG_FIN = __constant_cpu_to_be32(0x00010000),
+  TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0F000000),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCP_DATA_OFFSET = __constant_cpu_to_be32(0xF0000000)
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_MSS_DEFAULT 536U
 #define TCP_MSS_DESIRED 1220U
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_NODELAY 1
 #define TCP_MAXSEG 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_CORK 3
 #define TCP_KEEPIDLE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_KEEPINTVL 5
 #define TCP_KEEPCNT 6
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_SYNCNT 7
 #define TCP_LINGER2 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_DEFER_ACCEPT 9
 #define TCP_WINDOW_CLAMP 10
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_INFO 11
 #define TCP_QUICKACK 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_CONGESTION 13
 #define TCP_MD5SIG 14
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_THIN_LINEAR_TIMEOUTS 16
 #define TCP_THIN_DUPACK 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_USER_TIMEOUT 18
 #define TCP_REPAIR 19
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_REPAIR_QUEUE 20
 #define TCP_QUEUE_SEQ 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_REPAIR_OPTIONS 22
 #define TCP_FASTOPEN 23
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_TIMESTAMP 24
 #define TCP_NOTSENT_LOWAT 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcp_repair_opt {
- __u32 opt_code;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 opt_val;
+  __u32 opt_code;
+  __u32 opt_val;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCP_NO_QUEUE,
+  TCP_NO_QUEUE,
+  TCP_RECV_QUEUE,
+  TCP_SEND_QUEUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_RECV_QUEUE,
- TCP_SEND_QUEUE,
- TCP_QUEUES_NR,
+  TCP_QUEUES_NR,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCPI_OPT_TIMESTAMPS 1
 #define TCPI_OPT_SACK 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCPI_OPT_WSCALE 4
 #define TCPI_OPT_ECN 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCPI_OPT_ECN_SEEN 16
 #define TCPI_OPT_SYN_DATA 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum tcp_ca_state {
- TCP_CA_Open = 0,
+  TCP_CA_Open = 0,
+#define TCPF_CA_Open (1 << TCP_CA_Open)
+  TCP_CA_Disorder = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TCPF_CA_Open (1<<TCP_CA_Open)
- TCP_CA_Disorder = 1,
-#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
- TCP_CA_CWR = 2,
+#define TCPF_CA_Disorder (1 << TCP_CA_Disorder)
+  TCP_CA_CWR = 2,
+#define TCPF_CA_CWR (1 << TCP_CA_CWR)
+  TCP_CA_Recovery = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TCPF_CA_CWR (1<<TCP_CA_CWR)
- TCP_CA_Recovery = 3,
-#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
- TCP_CA_Loss = 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TCPF_CA_Loss (1<<TCP_CA_Loss)
+#define TCPF_CA_Recovery (1 << TCP_CA_Recovery)
+  TCP_CA_Loss = 4
+#define TCPF_CA_Loss (1 << TCP_CA_Loss)
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcp_info {
- __u8 tcpi_state;
+  __u8 tcpi_state;
+  __u8 tcpi_ca_state;
+  __u8 tcpi_retransmits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tcpi_ca_state;
- __u8 tcpi_retransmits;
- __u8 tcpi_probes;
- __u8 tcpi_backoff;
+  __u8 tcpi_probes;
+  __u8 tcpi_backoff;
+  __u8 tcpi_options;
+  __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tcpi_options;
- __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
- __u32 tcpi_rto;
- __u32 tcpi_ato;
+  __u32 tcpi_rto;
+  __u32 tcpi_ato;
+  __u32 tcpi_snd_mss;
+  __u32 tcpi_rcv_mss;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcpi_snd_mss;
- __u32 tcpi_rcv_mss;
- __u32 tcpi_unacked;
- __u32 tcpi_sacked;
+  __u32 tcpi_unacked;
+  __u32 tcpi_sacked;
+  __u32 tcpi_lost;
+  __u32 tcpi_retrans;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcpi_lost;
- __u32 tcpi_retrans;
- __u32 tcpi_fackets;
- __u32 tcpi_last_data_sent;
+  __u32 tcpi_fackets;
+  __u32 tcpi_last_data_sent;
+  __u32 tcpi_last_ack_sent;
+  __u32 tcpi_last_data_recv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcpi_last_ack_sent;
- __u32 tcpi_last_data_recv;
- __u32 tcpi_last_ack_recv;
- __u32 tcpi_pmtu;
+  __u32 tcpi_last_ack_recv;
+  __u32 tcpi_pmtu;
+  __u32 tcpi_rcv_ssthresh;
+  __u32 tcpi_rtt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcpi_rcv_ssthresh;
- __u32 tcpi_rtt;
- __u32 tcpi_rttvar;
- __u32 tcpi_snd_ssthresh;
+  __u32 tcpi_rttvar;
+  __u32 tcpi_snd_ssthresh;
+  __u32 tcpi_snd_cwnd;
+  __u32 tcpi_advmss;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcpi_snd_cwnd;
- __u32 tcpi_advmss;
- __u32 tcpi_reordering;
- __u32 tcpi_rcv_rtt;
+  __u32 tcpi_reordering;
+  __u32 tcpi_rcv_rtt;
+  __u32 tcpi_rcv_space;
+  __u32 tcpi_total_retrans;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tcpi_rcv_space;
- __u32 tcpi_total_retrans;
+  __u64 tcpi_pacing_rate;
+  __u64 tcpi_max_pacing_rate;
 };
 #define TCP_MD5SIG_MAXKEYLEN 80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcp_md5sig {
- struct __kernel_sockaddr_storage tcpm_addr;
- __u16 __tcpm_pad1;
- __u16 tcpm_keylen;
+  struct __kernel_sockaddr_storage tcpm_addr;
+  __u16 __tcpm_pad1;
+  __u16 tcpm_keylen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __tcpm_pad2;
- __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+  __u32 __tcpm_pad2;
+  __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN];
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/tcp_metrics.h b/libc/kernel/uapi/linux/tcp_metrics.h
index 449ec95..4bc3e48 100644
--- a/libc/kernel/uapi/linux/tcp_metrics.h
+++ b/libc/kernel/uapi/linux/tcp_metrics.h
@@ -23,44 +23,47 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_METRICS_GENL_VERSION 0x1
 enum tcp_metric_index {
- TCP_METRIC_RTT,
- TCP_METRIC_RTTVAR,
+  TCP_METRIC_RTT,
+  TCP_METRIC_RTTVAR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_METRIC_SSTHRESH,
- TCP_METRIC_CWND,
- TCP_METRIC_REORDERING,
- __TCP_METRIC_MAX,
+  TCP_METRIC_SSTHRESH,
+  TCP_METRIC_CWND,
+  TCP_METRIC_REORDERING,
+  TCP_METRIC_RTT_US,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCP_METRIC_RTTVAR_US,
+  __TCP_METRIC_MAX,
 };
 #define TCP_METRIC_MAX (__TCP_METRIC_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- TCP_METRICS_ATTR_UNSPEC,
+  TCP_METRICS_ATTR_UNSPEC,
+  TCP_METRICS_ATTR_ADDR_IPV4,
+  TCP_METRICS_ATTR_ADDR_IPV6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_METRICS_ATTR_ADDR_IPV4,
- TCP_METRICS_ATTR_ADDR_IPV6,
- TCP_METRICS_ATTR_AGE,
- TCP_METRICS_ATTR_TW_TSVAL,
+  TCP_METRICS_ATTR_AGE,
+  TCP_METRICS_ATTR_TW_TSVAL,
+  TCP_METRICS_ATTR_TW_TS_STAMP,
+  TCP_METRICS_ATTR_VALS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_METRICS_ATTR_TW_TS_STAMP,
- TCP_METRICS_ATTR_VALS,
- TCP_METRICS_ATTR_FOPEN_MSS,
- TCP_METRICS_ATTR_FOPEN_SYN_DROPS,
+  TCP_METRICS_ATTR_FOPEN_MSS,
+  TCP_METRICS_ATTR_FOPEN_SYN_DROPS,
+  TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,
+  TCP_METRICS_ATTR_FOPEN_COOKIE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,
- TCP_METRICS_ATTR_FOPEN_COOKIE,
- TCP_METRICS_ATTR_SADDR_IPV4,
- TCP_METRICS_ATTR_SADDR_IPV6,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __TCP_METRICS_ATTR_MAX,
+  TCP_METRICS_ATTR_SADDR_IPV4,
+  TCP_METRICS_ATTR_SADDR_IPV6,
+  __TCP_METRICS_ATTR_MAX,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_METRICS_ATTR_MAX (__TCP_METRICS_ATTR_MAX - 1)
 enum {
+  TCP_METRICS_CMD_UNSPEC,
+  TCP_METRICS_CMD_GET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TCP_METRICS_CMD_UNSPEC,
- TCP_METRICS_CMD_GET,
- TCP_METRICS_CMD_DEL,
- __TCP_METRICS_CMD_MAX,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCP_METRICS_CMD_DEL,
+  __TCP_METRICS_CMD_MAX,
 };
 #define TCP_METRICS_CMD_MAX (__TCP_METRICS_CMD_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/telephony.h b/libc/kernel/uapi/linux/telephony.h
index f4c6d63..74a4922 100644
--- a/libc/kernel/uapi/linux/telephony.h
+++ b/libc/kernel/uapi/linux/telephony.h
@@ -34,157 +34,155 @@
 #define QTI_PHONEJACK_PCI 500
 #define QTI_PHONECARD 600
 typedef enum {
- vendor = 0,
+  vendor = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- device,
- port,
- codec,
- dsp
+  device,
+  port,
+  codec,
+  dsp
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } phone_cap;
 struct phone_capability {
- char desc[80];
- phone_cap captype;
+  char desc[80];
+  phone_cap captype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int cap;
- int handle;
+  int cap;
+  int handle;
 };
 typedef enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- pots = 0,
- pstn,
- handset,
- speaker
+  pots = 0,
+  pstn,
+  handset,
+  speaker
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } phone_ports;
-#define PHONE_CAPABILITIES _IO ('q', 0x80)
-#define PHONE_CAPABILITIES_LIST _IOR ('q', 0x81, struct phone_capability *)
-#define PHONE_CAPABILITIES_CHECK _IOW ('q', 0x82, struct phone_capability *)
+#define PHONE_CAPABILITIES _IO('q', 0x80)
+#define PHONE_CAPABILITIES_LIST _IOR('q', 0x81, struct phone_capability *)
+#define PHONE_CAPABILITIES_CHECK _IOW('q', 0x82, struct phone_capability *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- char month[3];
- char day[3];
- char hour[3];
+  char month[3];
+  char day[3];
+  char hour[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char min[3];
- int numlen;
- char number[11];
- int namelen;
+  char min[3];
+  int numlen;
+  char number[11];
+  int namelen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[80];
+  char name[80];
 } PHONE_CID;
-#define PHONE_RING _IO ('q', 0x83)
-#define PHONE_HOOKSTATE _IO ('q', 0x84)
+#define PHONE_RING _IO('q', 0x83)
+#define PHONE_HOOKSTATE _IO('q', 0x84)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_MAXRINGS _IOW ('q', 0x85, char)
-#define PHONE_RING_CADENCE _IOW ('q', 0x86, short)
-#define OLD_PHONE_RING_START _IO ('q', 0x87)
-#define PHONE_RING_START _IOW ('q', 0x87, PHONE_CID *)
+#define PHONE_MAXRINGS _IOW('q', 0x85, char)
+#define PHONE_RING_CADENCE _IOW('q', 0x86, short)
+#define OLD_PHONE_RING_START _IO('q', 0x87)
+#define PHONE_RING_START _IOW('q', 0x87, PHONE_CID *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_RING_STOP _IO ('q', 0x88)
+#define PHONE_RING_STOP _IO('q', 0x88)
 #define USA_RING_CADENCE 0xC0C0
-#define PHONE_REC_CODEC _IOW ('q', 0x89, int)
-#define PHONE_REC_START _IO ('q', 0x8A)
+#define PHONE_REC_CODEC _IOW('q', 0x89, int)
+#define PHONE_REC_START _IO('q', 0x8A)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_REC_STOP _IO ('q', 0x8B)
-#define PHONE_REC_DEPTH _IOW ('q', 0x8C, int)
-#define PHONE_FRAME _IOW ('q', 0x8D, int)
-#define PHONE_REC_VOLUME _IOW ('q', 0x8E, int)
+#define PHONE_REC_STOP _IO('q', 0x8B)
+#define PHONE_REC_DEPTH _IOW('q', 0x8C, int)
+#define PHONE_FRAME _IOW('q', 0x8D, int)
+#define PHONE_REC_VOLUME _IOW('q', 0x8E, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_REC_VOLUME_LINEAR _IOW ('q', 0xDB, int)
-#define PHONE_REC_LEVEL _IO ('q', 0x8F)
-#define PHONE_PLAY_CODEC _IOW ('q', 0x90, int)
-#define PHONE_PLAY_START _IO ('q', 0x91)
+#define PHONE_REC_VOLUME_LINEAR _IOW('q', 0xDB, int)
+#define PHONE_REC_LEVEL _IO('q', 0x8F)
+#define PHONE_PLAY_CODEC _IOW('q', 0x90, int)
+#define PHONE_PLAY_START _IO('q', 0x91)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_PLAY_STOP _IO ('q', 0x92)
-#define PHONE_PLAY_DEPTH _IOW ('q', 0x93, int)
-#define PHONE_PLAY_VOLUME _IOW ('q', 0x94, int)
-#define PHONE_PLAY_VOLUME_LINEAR _IOW ('q', 0xDC, int)
+#define PHONE_PLAY_STOP _IO('q', 0x92)
+#define PHONE_PLAY_DEPTH _IOW('q', 0x93, int)
+#define PHONE_PLAY_VOLUME _IOW('q', 0x94, int)
+#define PHONE_PLAY_VOLUME_LINEAR _IOW('q', 0xDC, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_PLAY_LEVEL _IO ('q', 0x95)
-#define PHONE_DTMF_READY _IOR ('q', 0x96, int)
-#define PHONE_GET_DTMF _IOR ('q', 0x97, int)
-#define PHONE_GET_DTMF_ASCII _IOR ('q', 0x98, int)
+#define PHONE_PLAY_LEVEL _IO('q', 0x95)
+#define PHONE_DTMF_READY _IOR('q', 0x96, int)
+#define PHONE_GET_DTMF _IOR('q', 0x97, int)
+#define PHONE_GET_DTMF_ASCII _IOR('q', 0x98, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_DTMF_OOB _IOW ('q', 0x99, int)
-#define PHONE_EXCEPTION _IOR ('q', 0x9A, int)
-#define PHONE_PLAY_TONE _IOW ('q', 0x9B, char)
-#define PHONE_SET_TONE_ON_TIME _IOW ('q', 0x9C, int)
+#define PHONE_DTMF_OOB _IOW('q', 0x99, int)
+#define PHONE_EXCEPTION _IOR('q', 0x9A, int)
+#define PHONE_PLAY_TONE _IOW('q', 0x9B, char)
+#define PHONE_SET_TONE_ON_TIME _IOW('q', 0x9C, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_SET_TONE_OFF_TIME _IOW ('q', 0x9D, int)
-#define PHONE_GET_TONE_ON_TIME _IO ('q', 0x9E)
-#define PHONE_GET_TONE_OFF_TIME _IO ('q', 0x9F)
-#define PHONE_GET_TONE_STATE _IO ('q', 0xA0)
+#define PHONE_SET_TONE_OFF_TIME _IOW('q', 0x9D, int)
+#define PHONE_GET_TONE_ON_TIME _IO('q', 0x9E)
+#define PHONE_GET_TONE_OFF_TIME _IO('q', 0x9F)
+#define PHONE_GET_TONE_STATE _IO('q', 0xA0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_BUSY _IO ('q', 0xA1)
-#define PHONE_RINGBACK _IO ('q', 0xA2)
-#define PHONE_DIALTONE _IO ('q', 0xA3)
-#define PHONE_CPT_STOP _IO ('q', 0xA4)
+#define PHONE_BUSY _IO('q', 0xA1)
+#define PHONE_RINGBACK _IO('q', 0xA2)
+#define PHONE_DIALTONE _IO('q', 0xA3)
+#define PHONE_CPT_STOP _IO('q', 0xA4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_PSTN_SET_STATE _IOW ('q', 0xA4, int)
-#define PHONE_PSTN_GET_STATE _IO ('q', 0xA5)
+#define PHONE_PSTN_SET_STATE _IOW('q', 0xA4, int)
+#define PHONE_PSTN_GET_STATE _IO('q', 0xA5)
 #define PSTN_ON_HOOK 0
 #define PSTN_RINGING 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSTN_OFF_HOOK 2
 #define PSTN_PULSE_DIAL 3
-#define PHONE_WINK_DURATION _IOW ('q', 0xA6, int)
-#define PHONE_WINK _IOW ('q', 0xAA, int)
+#define PHONE_WINK_DURATION _IOW('q', 0xA6, int)
+#define PHONE_WINK _IOW('q', 0xAA, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
- G723_63 = 1,
- G723_53 = 2,
- TS85 = 3,
+  G723_63 = 1,
+  G723_53 = 2,
+  TS85 = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- TS48 = 4,
- TS41 = 5,
- G728 = 6,
- G729 = 7,
+  TS48 = 4,
+  TS41 = 5,
+  G728 = 6,
+  G729 = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ULAW = 8,
- ALAW = 9,
- LINEAR16 = 10,
- LINEAR8 = 11,
+  ULAW = 8,
+  ALAW = 9,
+  LINEAR16 = 10,
+  LINEAR8 = 11,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WSS = 12,
- G729B = 13
+  WSS = 12,
+  G729B = 13
 } phone_codec;
-struct phone_codec_data
+struct phone_codec_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- phone_codec type;
- unsigned short buf_min, buf_opt, buf_max;
+  phone_codec type;
+  unsigned short buf_min, buf_opt, buf_max;
 };
+#define PHONE_QUERY_CODEC _IOWR('q', 0xA7, struct phone_codec_data *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define PHONE_QUERY_CODEC _IOWR ('q', 0xA7, struct phone_codec_data *)
-#define PHONE_PSTN_LINETEST _IO ('q', 0xA8)
-#define PHONE_VAD _IOW ('q', 0xA9, int)
-struct phone_except
+#define PHONE_PSTN_LINETEST _IO('q', 0xA8)
+#define PHONE_VAD _IOW('q', 0xA9, int)
+struct phone_except {
+  unsigned int dtmf_ready : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- unsigned int dtmf_ready:1;
- unsigned int hookstate:1;
- unsigned int pstn_ring:1;
+  unsigned int hookstate : 1;
+  unsigned int pstn_ring : 1;
+  unsigned int caller_id : 1;
+  unsigned int pstn_wink : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int caller_id:1;
- unsigned int pstn_wink:1;
- unsigned int f0:1;
- unsigned int f1:1;
+  unsigned int f0 : 1;
+  unsigned int f1 : 1;
+  unsigned int f2 : 1;
+  unsigned int f3 : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int f2:1;
- unsigned int f3:1;
- unsigned int flash:1;
- unsigned int fc0:1;
+  unsigned int flash : 1;
+  unsigned int fc0 : 1;
+  unsigned int fc1 : 1;
+  unsigned int fc2 : 1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int fc1:1;
- unsigned int fc2:1;
- unsigned int fc3:1;
- unsigned int reserved:18;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int fc3 : 1;
+  unsigned int reserved : 18;
 };
 union telephony_exception {
- struct phone_except bits;
- unsigned int bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct phone_except bits;
+  unsigned int bytes;
 };
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/termios.h b/libc/kernel/uapi/linux/termios.h
index 2ac0083..0e7a391 100644
--- a/libc/kernel/uapi/linux/termios.h
+++ b/libc/kernel/uapi/linux/termios.h
@@ -22,18 +22,17 @@
 #include <asm/termios.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFF 5
-struct termiox
-{
- __u16 x_hflag;
+struct termiox {
+  __u16 x_hflag;
+  __u16 x_cflag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 x_cflag;
- __u16 x_rflag[NFF];
- __u16 x_sflag;
+  __u16 x_rflag[NFF];
+  __u16 x_sflag;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTSXOFF 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTSXON 0x0002
 #define DTRXOFF 0x0004
 #define DSRXON 0x0008
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/time.h b/libc/kernel/uapi/linux/time.h
index 62fb7df..bf245fc 100644
--- a/libc/kernel/uapi/linux/time.h
+++ b/libc/kernel/uapi/linux/time.h
@@ -23,33 +23,33 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _STRUCT_TIMESPEC
 struct timespec {
- __kernel_time_t tv_sec;
- long tv_nsec;
+  __kernel_time_t tv_sec;
+  long tv_nsec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
 struct timeval {
- __kernel_time_t tv_sec;
+  __kernel_time_t tv_sec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_suseconds_t tv_usec;
+  __kernel_suseconds_t tv_usec;
 };
 struct timezone {
- int tz_minuteswest;
+  int tz_minuteswest;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tz_dsttime;
+  int tz_dsttime;
 };
 #define ITIMER_REAL 0
 #define ITIMER_VIRTUAL 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ITIMER_PROF 2
 struct itimerspec {
- struct timespec it_interval;
- struct timespec it_value;
+  struct timespec it_interval;
+  struct timespec it_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct itimerval {
- struct timeval it_interval;
- struct timeval it_value;
+  struct timeval it_interval;
+  struct timeval it_value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define CLOCK_REALTIME 0
diff --git a/libc/kernel/uapi/linux/times.h b/libc/kernel/uapi/linux/times.h
index c1da8ae..d0494d7 100644
--- a/libc/kernel/uapi/linux/times.h
+++ b/libc/kernel/uapi/linux/times.h
@@ -21,10 +21,10 @@
 #include <linux/types.h>
 struct tms {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_clock_t tms_utime;
- __kernel_clock_t tms_stime;
- __kernel_clock_t tms_cutime;
- __kernel_clock_t tms_cstime;
+  __kernel_clock_t tms_utime;
+  __kernel_clock_t tms_stime;
+  __kernel_clock_t tms_cutime;
+  __kernel_clock_t tms_cstime;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/timex.h b/libc/kernel/uapi/linux/timex.h
index a596698..008468e 100644
--- a/libc/kernel/uapi/linux/timex.h
+++ b/libc/kernel/uapi/linux/timex.h
@@ -22,34 +22,44 @@
 #define NTP_API 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct timex {
- unsigned int modes;
- __kernel_long_t offset;
- __kernel_long_t freq;
+  unsigned int modes;
+  __kernel_long_t offset;
+  __kernel_long_t freq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t maxerror;
- __kernel_long_t esterror;
- int status;
- __kernel_long_t constant;
+  __kernel_long_t maxerror;
+  __kernel_long_t esterror;
+  int status;
+  __kernel_long_t constant;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t precision;
- __kernel_long_t tolerance;
- struct timeval time;
- __kernel_long_t tick;
+  __kernel_long_t precision;
+  __kernel_long_t tolerance;
+  struct timeval time;
+  __kernel_long_t tick;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t ppsfreq;
- __kernel_long_t jitter;
- int shift;
- __kernel_long_t stabil;
+  __kernel_long_t ppsfreq;
+  __kernel_long_t jitter;
+  int shift;
+  __kernel_long_t stabil;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_long_t jitcnt;
- __kernel_long_t calcnt;
- __kernel_long_t errcnt;
- __kernel_long_t stbcnt;
+  __kernel_long_t jitcnt;
+  __kernel_long_t calcnt;
+  __kernel_long_t errcnt;
+  __kernel_long_t stbcnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tai;
- int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
- int :32; int :32; int :32;
+  int tai;
+  int : 32;
+  int : 32;
+  int : 32;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ADJ_OFFSET 0x0001
@@ -99,7 +109,7 @@
 #define STA_NANO 0x2000
 #define STA_MODE 0x4000
 #define STA_CLK 0x8000
-#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER |   STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
+#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIME_OK 0
 #define TIME_INS 1
diff --git a/libc/kernel/uapi/linux/tiocl.h b/libc/kernel/uapi/linux/tiocl.h
index f3818fc..753d611 100644
--- a/libc/kernel/uapi/linux/tiocl.h
+++ b/libc/kernel/uapi/linux/tiocl.h
@@ -29,12 +29,12 @@
 #define TIOCL_SELMOUSEREPORT 16
 #define TIOCL_SELBUTTONMASK 15
 struct tiocl_selection {
- unsigned short xs;
+  unsigned short xs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short ys;
- unsigned short xe;
- unsigned short ye;
- unsigned short sel_mode;
+  unsigned short ys;
+  unsigned short xe;
+  unsigned short ye;
+  unsigned short sel_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TIOCL_PASTESEL 3
diff --git a/libc/kernel/uapi/linux/tipc.h b/libc/kernel/uapi/linux/tipc.h
index 645c610..230ff1c 100644
--- a/libc/kernel/uapi/linux/tipc.h
+++ b/libc/kernel/uapi/linux/tipc.h
@@ -19,111 +19,126 @@
 #ifndef _LINUX_TIPC_H_
 #define _LINUX_TIPC_H_
 #include <linux/types.h>
+#include <linux/sockios.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tipc_portid {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ref;
- __u32 node;
+  __u32 ref;
+  __u32 node;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tipc_name {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 instance;
+  __u32 type;
+  __u32 instance;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tipc_name_seq {
+  __u32 type;
+  __u32 lower;
+  __u32 upper;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 lower;
- __u32 upper;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_CFG_SRV 0
 #define TIPC_TOP_SRV 1
+#define TIPC_LINK_STATE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_RESERVED_TYPES 64
 #define TIPC_ZONE_SCOPE 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_CLUSTER_SCOPE 2
 #define TIPC_NODE_SCOPE 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_MAX_USER_MSG_SIZE 66000U
 #define TIPC_LOW_IMPORTANCE 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_MEDIUM_IMPORTANCE 1
 #define TIPC_HIGH_IMPORTANCE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_CRITICAL_IMPORTANCE 3
 #define TIPC_OK 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_ERR_NO_NAME 1
 #define TIPC_ERR_NO_PORT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_ERR_NO_NODE 3
 #define TIPC_ERR_OVERLOAD 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_CONN_SHUTDOWN 5
 #define TIPC_SUB_PORTS 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_SUB_SERVICE 0x02
 #define TIPC_SUB_CANCEL 0x04
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_WAIT_FOREVER (~0)
 struct tipc_subscr {
- struct tipc_name_seq seq;
- __u32 timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 filter;
- char usr_handle[8];
+  struct tipc_name_seq seq;
+  __u32 timeout;
+  __u32 filter;
+  char usr_handle[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TIPC_PUBLISHED 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_WITHDRAWN 2
 #define TIPC_SUBSCR_TIMEOUT 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tipc_event {
- __u32 event;
+  __u32 event;
+  __u32 found_lower;
+  __u32 found_upper;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 found_lower;
- __u32 found_upper;
- struct tipc_portid port;
- struct tipc_subscr s;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct tipc_portid port;
+  struct tipc_subscr s;
 };
 #ifndef AF_TIPC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_TIPC 30
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef PF_TIPC
 #define PF_TIPC AF_TIPC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef SOL_TIPC
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOL_TIPC 271
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_ADDR_NAMESEQ 1
 #define TIPC_ADDR_MCAST 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_ADDR_NAME 2
 #define TIPC_ADDR_ID 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_tipc {
- unsigned short family;
+  unsigned short family;
+  unsigned char addrtype;
+  signed char scope;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char addrtype;
- signed char scope;
- union {
- struct tipc_portid id;
+  union {
+    struct tipc_portid id;
+    struct tipc_name_seq nameseq;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct tipc_name_seq nameseq;
- struct {
- struct tipc_name name;
- __u32 domain;
+      struct tipc_name name;
+      __u32 domain;
+    } name;
+  } addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } name;
- } addr;
 };
 #define TIPC_ERRINFO 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_RETDATA 2
 #define TIPC_DESTNAME 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_IMPORTANCE 127
 #define TIPC_SRC_DROPPABLE 128
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_DEST_DROPPABLE 129
 #define TIPC_CONN_TIMEOUT 130
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_NODE_RECVQ_DEPTH 131
 #define TIPC_SOCK_RECVQ_DEPTH 132
+#define TIPC_MAX_MEDIA_NAME 16
+#define TIPC_MAX_IF_NAME 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_MAX_BEARER_NAME 32
+#define TIPC_MAX_LINK_NAME 60
+#define SIOCGETLINKNAME SIOCPROTOPRIVATE
+struct tipc_sioc_ln_req {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 peer;
+  __u32 bearer_id;
+  char linkname[TIPC_MAX_LINK_NAME];
+};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/tipc_config.h b/libc/kernel/uapi/linux/tipc_config.h
index 6ecabda..7640d79 100644
--- a/libc/kernel/uapi/linux/tipc_config.h
+++ b/libc/kernel/uapi/linux/tipc_config.h
@@ -21,176 +21,173 @@
 #include <linux/types.h>
 #include <linux/string.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/tipc.h>
 #include <asm/byteorder.h>
 #include <arpa/inet.h>
 #define TIPC_CMD_NOOP 0x0000
-#define TIPC_CMD_GET_NODES 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_GET_NODES 0x0001
 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
 #define TIPC_CMD_GET_BEARER_NAMES 0x0003
 #define TIPC_CMD_GET_LINKS 0x0004
-#define TIPC_CMD_SHOW_NAME_TABLE 0x0005
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_SHOW_NAME_TABLE 0x0005
 #define TIPC_CMD_SHOW_PORTS 0x0006
 #define TIPC_CMD_SHOW_LINK_STATS 0x000B
 #define TIPC_CMD_SHOW_STATS 0x000F
-#define TIPC_CMD_GET_REMOTE_MNG 0x4003
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_GET_REMOTE_MNG 0x4003
 #define TIPC_CMD_GET_MAX_PORTS 0x4004
 #define TIPC_CMD_GET_MAX_PUBL 0x4005
 #define TIPC_CMD_GET_MAX_SUBSCR 0x4006
-#define TIPC_CMD_GET_MAX_ZONES 0x4007
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_GET_MAX_ZONES 0x4007
 #define TIPC_CMD_GET_MAX_CLUSTERS 0x4008
 #define TIPC_CMD_GET_MAX_NODES 0x4009
 #define TIPC_CMD_GET_MAX_SLAVES 0x400A
-#define TIPC_CMD_GET_NETID 0x400B
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_GET_NETID 0x400B
 #define TIPC_CMD_ENABLE_BEARER 0x4101
 #define TIPC_CMD_DISABLE_BEARER 0x4102
 #define TIPC_CMD_SET_LINK_TOL 0x4107
-#define TIPC_CMD_SET_LINK_PRI 0x4108
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_SET_LINK_PRI 0x4108
 #define TIPC_CMD_SET_LINK_WINDOW 0x4109
 #define TIPC_CMD_SET_LOG_SIZE 0x410A
 #define TIPC_CMD_DUMP_LOG 0x410B
-#define TIPC_CMD_RESET_LINK_STATS 0x410C
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_RESET_LINK_STATS 0x410C
 #define TIPC_CMD_SET_NODE_ADDR 0x8001
 #define TIPC_CMD_SET_REMOTE_MNG 0x8003
 #define TIPC_CMD_SET_MAX_PORTS 0x8004
-#define TIPC_CMD_SET_MAX_PUBL 0x8005
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_SET_MAX_PUBL 0x8005
 #define TIPC_CMD_SET_MAX_SUBSCR 0x8006
 #define TIPC_CMD_SET_MAX_ZONES 0x8007
 #define TIPC_CMD_SET_MAX_CLUSTERS 0x8008
-#define TIPC_CMD_SET_MAX_NODES 0x8009
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CMD_SET_MAX_NODES 0x8009
 #define TIPC_CMD_SET_MAX_SLAVES 0x800A
 #define TIPC_CMD_SET_NETID 0x800B
 #define TIPC_CMD_NOT_NET_ADMIN 0xC001
-#define TIPC_TLV_NONE 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_TLV_NONE 0
 #define TIPC_TLV_VOID 1
 #define TIPC_TLV_UNSIGNED 2
 #define TIPC_TLV_STRING 3
-#define TIPC_TLV_LARGE_STRING 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_TLV_LARGE_STRING 4
 #define TIPC_TLV_ULTRA_STRING 5
 #define TIPC_TLV_ERROR_STRING 16
 #define TIPC_TLV_NET_ADDR 17
-#define TIPC_TLV_MEDIA_NAME 18
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_TLV_MEDIA_NAME 18
 #define TIPC_TLV_BEARER_NAME 19
 #define TIPC_TLV_LINK_NAME 20
 #define TIPC_TLV_NODE_INFO 21
-#define TIPC_TLV_LINK_INFO 22
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_TLV_LINK_INFO 22
 #define TIPC_TLV_BEARER_CONFIG 23
 #define TIPC_TLV_LINK_CONFIG 24
 #define TIPC_TLV_NAME_TBL_QUERY 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_TLV_PORT_REF 26
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TIPC_MAX_MEDIA_NAME 16
-#define TIPC_MAX_IF_NAME 16
-#define TIPC_MAX_BEARER_NAME 32
-#define TIPC_MAX_LINK_NAME 60
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_MIN_LINK_PRI 0
 #define TIPC_DEF_LINK_PRI 10
 #define TIPC_MAX_LINK_PRI 31
-#define TIPC_MEDIA_LINK_PRI (TIPC_MAX_LINK_PRI + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_MEDIA_LINK_PRI (TIPC_MAX_LINK_PRI + 1)
 #define TIPC_MIN_LINK_TOL 50
 #define TIPC_DEF_LINK_TOL 1500
 #define TIPC_MAX_LINK_TOL 30000
-#if TIPC_MIN_LINK_TOL < 16
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if TIPC_MIN_LINK_TOL < 16
 #error "TIPC_MIN_LINK_TOL is too small (abort limit may be NaN)"
 #endif
 #define TIPC_MIN_LINK_WIN 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_DEF_LINK_WIN 50
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TIPC_MAX_LINK_WIN 150
+#define TIPC_MAX_LINK_WIN 8191
 struct tipc_node_info {
- __be32 addr;
- __be32 up;
+  __be32 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be32 up;
 };
 struct tipc_link_info {
- __be32 dest;
- __be32 up;
+  __be32 dest;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char str[TIPC_MAX_LINK_NAME];
+  __be32 up;
+  char str[TIPC_MAX_LINK_NAME];
 };
 struct tipc_bearer_config {
- __be32 priority;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 disc_domain;
- char name[TIPC_MAX_BEARER_NAME];
+  __be32 priority;
+  __be32 disc_domain;
+  char name[TIPC_MAX_BEARER_NAME];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tipc_link_config {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 value;
- char name[TIPC_MAX_LINK_NAME];
+  __be32 value;
+  char name[TIPC_MAX_LINK_NAME];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_NTQ_ALLTYPES 0x80000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tipc_name_table_query {
- __be32 depth;
- __be32 type;
- __be32 lowbound;
+  __be32 depth;
+  __be32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 upbound;
+  __be32 lowbound;
+  __be32 upbound;
 };
 #define TIPC_CFG_TLV_ERROR "\x80"
-#define TIPC_CFG_NOT_NET_ADMIN "\x81"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIPC_CFG_NOT_NET_ADMIN "\x81"
 #define TIPC_CFG_NOT_ZONE_MSTR "\x82"
 #define TIPC_CFG_NO_REMOTE "\x83"
 #define TIPC_CFG_NOT_SUPPORTED "\x84"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_CFG_INVALID_VALUE "\x85"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tlv_desc {
- __be16 tlv_len;
- __be16 tlv_type;
+  __be16 tlv_len;
+  __be16 tlv_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TLV_ALIGNTO 4
-#define TLV_ALIGN(datalen) (((datalen)+(TLV_ALIGNTO-1)) & ~(TLV_ALIGNTO-1))
+#define TLV_ALIGN(datalen) (((datalen) + (TLV_ALIGNTO - 1)) & ~(TLV_ALIGNTO - 1))
 #define TLV_LENGTH(datalen) (sizeof(struct tlv_desc) + (datalen))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TLV_SPACE(datalen) (TLV_ALIGN(TLV_LENGTH(datalen)))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define TLV_DATA(tlv) ((void *)((char *)(tlv) + TLV_LENGTH(0)))
+#define TLV_DATA(tlv) ((void *) ((char *) (tlv) + TLV_LENGTH(0)))
 struct tlv_list_desc {
- struct tlv_desc *tlv_ptr;
- __u32 tlv_space;
+  struct tlv_desc * tlv_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 tlv_space;
 };
 #define TIPC_GENL_NAME "TIPC"
 #define TIPC_GENL_VERSION 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIPC_GENL_CMD 0x1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tipc_genlmsghdr {
- __u32 dest;
- __u16 cmd;
- __u16 reserved;
+  __u32 dest;
+  __u16 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 reserved;
 };
 #define TIPC_GENL_HDRLEN NLMSG_ALIGN(sizeof(struct tipc_genlmsghdr))
 struct tipc_cfg_msg_hdr {
- __be32 tcm_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 tcm_type;
- __be16 tcm_flags;
- char tcm_reserved[8];
+  __be32 tcm_len;
+  __be16 tcm_type;
+  __be16 tcm_flags;
+  char tcm_reserved[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCM_F_REQUEST 0x1
 #define TCM_F_MORE 0x2
-#define TCM_ALIGN(datalen) (((datalen)+3) & ~3)
-#define TCM_LENGTH(datalen) (sizeof(struct tipc_cfg_msg_hdr) + datalen)
+#define TCM_ALIGN(datalen) (((datalen) + 3) & ~3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCM_LENGTH(datalen) (sizeof(struct tipc_cfg_msg_hdr) + datalen)
 #define TCM_SPACE(datalen) (TCM_ALIGN(TCM_LENGTH(datalen)))
-#define TCM_DATA(tcm_hdr) ((void *)((char *)(tcm_hdr) + TCM_LENGTH(0)))
+#define TCM_DATA(tcm_hdr) ((void *) ((char *) (tcm_hdr) + TCM_LENGTH(0)))
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/toshiba.h b/libc/kernel/uapi/linux/toshiba.h
index 09b20b5..04e8ee5 100644
--- a/libc/kernel/uapi/linux/toshiba.h
+++ b/libc/kernel/uapi/linux/toshiba.h
@@ -23,13 +23,13 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TOSH_SMM _IOWR('t', 0x90, int)
 typedef struct {
- unsigned int eax;
- unsigned int ebx __attribute__ ((packed));
+  unsigned int eax;
+  unsigned int ebx __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int ecx __attribute__ ((packed));
- unsigned int edx __attribute__ ((packed));
- unsigned int esi __attribute__ ((packed));
- unsigned int edi __attribute__ ((packed));
+  unsigned int ecx __attribute__((packed));
+  unsigned int edx __attribute__((packed));
+  unsigned int esi __attribute__((packed));
+  unsigned int edi __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } SMMRegisters;
 #endif
diff --git a/libc/kernel/uapi/linux/tty_flags.h b/libc/kernel/uapi/linux/tty_flags.h
index 23d1e5d..bcc5f60 100644
--- a/libc/kernel/uapi/linux/tty_flags.h
+++ b/libc/kernel/uapi/linux/tty_flags.h
@@ -74,11 +74,11 @@
 #define ASYNC_BUGGY_UART (1U << ASYNCB_BUGGY_UART)
 #define ASYNC_AUTOPROBE (1U << ASYNCB_AUTOPROBE)
 #define ASYNC_FLAGS ((1U << (ASYNCB_LAST_USER + 1)) - 1)
-#define ASYNC_USR_MASK (ASYNC_SPD_MASK|ASYNC_CALLOUT_NOHUP|   ASYNC_LOW_LATENCY)
+#define ASYNC_USR_MASK (ASYNC_SPD_MASK | ASYNC_CALLOUT_NOHUP | ASYNC_LOW_LATENCY)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ASYNC_SPD_CUST (ASYNC_SPD_HI|ASYNC_SPD_VHI)
-#define ASYNC_SPD_WARP (ASYNC_SPD_HI|ASYNC_SPD_SHI)
-#define ASYNC_SPD_MASK (ASYNC_SPD_HI|ASYNC_SPD_VHI|ASYNC_SPD_SHI)
+#define ASYNC_SPD_CUST (ASYNC_SPD_HI | ASYNC_SPD_VHI)
+#define ASYNC_SPD_WARP (ASYNC_SPD_HI | ASYNC_SPD_SHI)
+#define ASYNC_SPD_MASK (ASYNC_SPD_HI | ASYNC_SPD_VHI | ASYNC_SPD_SHI)
 #define ASYNC_INITIALIZED (1U << ASYNCB_INITIALIZED)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASYNC_NORMAL_ACTIVE (1U << ASYNCB_NORMAL_ACTIVE)
diff --git a/libc/kernel/uapi/linux/udp.h b/libc/kernel/uapi/linux/udp.h
index 41a0592..e1d546c 100644
--- a/libc/kernel/uapi/linux/udp.h
+++ b/libc/kernel/uapi/linux/udp.h
@@ -21,16 +21,19 @@
 #include <linux/types.h>
 struct udphdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 source;
- __be16 dest;
- __be16 len;
- __sum16 check;
+  __be16 source;
+  __be16 dest;
+  __be16 len;
+  __sum16 check;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define UDP_CORK 1
 #define UDP_ENCAP 100
-#define UDP_ENCAP_ESPINUDP_NON_IKE 1
+#define UDP_NO_CHECK6_TX 101
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UDP_NO_CHECK6_RX 102
+#define UDP_ENCAP_ESPINUDP_NON_IKE 1
 #define UDP_ENCAP_ESPINUDP 2
 #define UDP_ENCAP_L2TPINUDP 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/uhid.h b/libc/kernel/uapi/linux/uhid.h
index 37c3b17..e012a8d 100644
--- a/libc/kernel/uapi/linux/uhid.h
+++ b/libc/kernel/uapi/linux/uhid.h
@@ -21,88 +21,169 @@
 #include <linux/input.h>
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/hid.h>
 enum uhid_event_type {
- UHID_CREATE,
- UHID_DESTROY,
- UHID_START,
+  __UHID_LEGACY_CREATE,
+  UHID_DESTROY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- UHID_STOP,
- UHID_OPEN,
- UHID_CLOSE,
- UHID_OUTPUT,
+  UHID_START,
+  UHID_STOP,
+  UHID_OPEN,
+  UHID_CLOSE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- UHID_OUTPUT_EV,
- UHID_INPUT,
- UHID_FEATURE,
- UHID_FEATURE_ANSWER,
+  UHID_OUTPUT,
+  __UHID_LEGACY_OUTPUT_EV,
+  __UHID_LEGACY_INPUT,
+  UHID_GET_REPORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UHID_GET_REPORT_REPLY,
+  UHID_CREATE2,
+  UHID_INPUT2,
+  UHID_SET_REPORT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UHID_SET_REPORT_REPLY,
 };
-struct uhid_create_req {
- __u8 name[128];
- __u8 phys[64];
+struct uhid_create2_req {
+  __u8 name[128];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 uniq[64];
- __u8 __user *rd_data;
- __u16 rd_size;
- __u16 bus;
+  __u8 phys[64];
+  __u8 uniq[64];
+  __u16 rd_size;
+  __u16 bus;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 vendor;
- __u32 product;
- __u32 version;
- __u32 country;
+  __u32 vendor;
+  __u32 product;
+  __u32 version;
+  __u32 country;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 rd_data[HID_MAX_DESCRIPTOR_SIZE];
 } __attribute__((__packed__));
+enum uhid_dev_flag {
+  UHID_DEV_NUMBERED_FEATURE_REPORTS = (1ULL << 0),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UHID_DEV_NUMBERED_OUTPUT_REPORTS = (1ULL << 1),
+  UHID_DEV_NUMBERED_INPUT_REPORTS = (1ULL << 2),
+};
+struct uhid_start_req {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 dev_flags;
+};
 #define UHID_DATA_MAX 4096
 enum uhid_report_type {
- UHID_FEATURE_REPORT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- UHID_OUTPUT_REPORT,
- UHID_INPUT_REPORT,
+  UHID_FEATURE_REPORT,
+  UHID_OUTPUT_REPORT,
+  UHID_INPUT_REPORT,
 };
-struct uhid_input_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[UHID_DATA_MAX];
- __u16 size;
+struct uhid_input2_req {
+  __u16 size;
+  __u8 data[UHID_DATA_MAX];
 } __attribute__((__packed__));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uhid_output_req {
+  __u8 data[UHID_DATA_MAX];
+  __u16 size;
+  __u8 rtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[UHID_DATA_MAX];
- __u16 size;
- __u8 rtype;
+} __attribute__((__packed__));
+struct uhid_get_report_req {
+  __u32 id;
+  __u8 rnum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 rtype;
+} __attribute__((__packed__));
+struct uhid_get_report_reply_req {
+  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 err;
+  __u16 size;
+  __u8 data[UHID_DATA_MAX];
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct uhid_output_ev_req {
- __u16 type;
- __u16 code;
- __s32 value;
+struct uhid_set_report_req {
+  __u32 id;
+  __u8 rnum;
+  __u8 rtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 size;
+  __u8 data[UHID_DATA_MAX];
+} __attribute__((__packed__));
+struct uhid_set_report_reply_req {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 id;
+  __u16 err;
+} __attribute__((__packed__));
+enum uhid_legacy_event_type {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UHID_CREATE = __UHID_LEGACY_CREATE,
+  UHID_OUTPUT_EV = __UHID_LEGACY_OUTPUT_EV,
+  UHID_INPUT = __UHID_LEGACY_INPUT,
+  UHID_FEATURE = UHID_GET_REPORT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UHID_FEATURE_ANSWER = UHID_GET_REPORT_REPLY,
+};
+struct uhid_create_req {
+  __u8 name[128];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 phys[64];
+  __u8 uniq[64];
+  __u8 __user * rd_data;
+  __u16 rd_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 bus;
+  __u32 vendor;
+  __u32 product;
+  __u32 version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 country;
+} __attribute__((__packed__));
+struct uhid_input_req {
+  __u8 data[UHID_DATA_MAX];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 size;
+} __attribute__((__packed__));
+struct uhid_output_ev_req {
+  __u16 type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 code;
+  __s32 value;
 } __attribute__((__packed__));
 struct uhid_feature_req {
- __u32 id;
- __u8 rnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rtype;
+  __u32 id;
+  __u8 rnum;
+  __u8 rtype;
 } __attribute__((__packed__));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uhid_feature_answer_req {
- __u32 id;
+  __u32 id;
+  __u16 err;
+  __u16 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 err;
- __u16 size;
- __u8 data[UHID_DATA_MAX];
+  __u8 data[UHID_DATA_MAX];
 } __attribute__((__packed__));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uhid_event {
- __u32 type;
- union {
- struct uhid_create_req create;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct uhid_input_req input;
- struct uhid_output_req output;
- struct uhid_output_ev_req output_ev;
- struct uhid_feature_req feature;
+  union {
+    struct uhid_create_req create;
+    struct uhid_input_req input;
+    struct uhid_output_req output;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct uhid_feature_answer_req feature_answer;
- } u;
+    struct uhid_output_ev_req output_ev;
+    struct uhid_feature_req feature;
+    struct uhid_get_report_req get_report;
+    struct uhid_feature_answer_req feature_answer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct uhid_get_report_reply_req get_report_reply;
+    struct uhid_create2_req create2;
+    struct uhid_input2_req input2;
+    struct uhid_set_report_req set_report;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct uhid_set_report_reply_req set_report_reply;
+    struct uhid_start_req start;
+  } u;
 } __attribute__((__packed__));
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/uinput.h b/libc/kernel/uapi/linux/uinput.h
index 6ad0334..845affc 100644
--- a/libc/kernel/uapi/linux/uinput.h
+++ b/libc/kernel/uapi/linux/uinput.h
@@ -21,19 +21,19 @@
 #include <linux/types.h>
 #include <linux/input.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define UINPUT_VERSION 3
+#define UINPUT_VERSION 4
 struct uinput_ff_upload {
- __u32 request_id;
- __s32 retval;
+  __u32 request_id;
+  __s32 retval;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ff_effect effect;
- struct ff_effect old;
+  struct ff_effect effect;
+  struct ff_effect old;
 };
 struct uinput_ff_erase {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 request_id;
- __s32 retval;
- __u32 effect_id;
+  __u32 request_id;
+  __s32 retval;
+  __u32 effect_id;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UINPUT_IOCTL_BASE 'U'
@@ -49,7 +49,7 @@
 #define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int)
 #define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int)
 #define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)
-#define UI_SET_PHYS _IOW(UINPUT_IOCTL_BASE, 108, char*)
+#define UI_SET_PHYS _IOW(UINPUT_IOCTL_BASE, 108, char *)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_SET_SWBIT _IOW(UINPUT_IOCTL_BASE, 109, int)
 #define UI_SET_PROPBIT _IOW(UINPUT_IOCTL_BASE, 110, int)
@@ -58,21 +58,23 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_BEGIN_FF_ERASE _IOWR(UINPUT_IOCTL_BASE, 202, struct uinput_ff_erase)
 #define UI_END_FF_ERASE _IOW(UINPUT_IOCTL_BASE, 203, struct uinput_ff_erase)
+#define UI_GET_SYSNAME(len) _IOC(_IOC_READ, UINPUT_IOCTL_BASE, 300, len)
+#define UI_GET_VERSION _IOR(UINPUT_IOCTL_BASE, 301, unsigned int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_UINPUT 0x0101
 #define UI_FF_UPLOAD 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_FF_ERASE 2
 #define UINPUT_MAX_NAME_SIZE 80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uinput_user_dev {
- char name[UINPUT_MAX_NAME_SIZE];
+  char name[UINPUT_MAX_NAME_SIZE];
+  struct input_id id;
+  __u32 ff_effects_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct input_id id;
- __u32 ff_effects_max;
- __s32 absmax[ABS_CNT];
- __s32 absmin[ABS_CNT];
+  __s32 absmax[ABS_CNT];
+  __s32 absmin[ABS_CNT];
+  __s32 absfuzz[ABS_CNT];
+  __s32 absflat[ABS_CNT];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 absfuzz[ABS_CNT];
- __s32 absflat[ABS_CNT];
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/uio.h b/libc/kernel/uapi/linux/uio.h
index 44940c1..eeacb59 100644
--- a/libc/kernel/uapi/linux/uio.h
+++ b/libc/kernel/uapi/linux/uio.h
@@ -21,13 +21,11 @@
 #include <linux/compiler.h>
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct iovec
-{
- void __user *iov_base;
- __kernel_size_t iov_len;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct iovec {
+  void __user * iov_base;
+  __kernel_size_t iov_len;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UIO_FASTIOV 8
 #define UIO_MAXIOV 1024
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/ultrasound.h b/libc/kernel/uapi/linux/ultrasound.h
index 33c4b5b..d9582be 100644
--- a/libc/kernel/uapi/linux/ultrasound.h
+++ b/libc/kernel/uapi/linux/ultrasound.h
@@ -39,27 +39,27 @@
 #define _GUS_VOLUME_SCALE 0x0e
 #define _GUS_VOICEVOL2 0x0f
 #define _GUS_VOICE_POS 0x10
-#define _GUS_CMD(chn, voice, cmd, p1, p2)   {_SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = SEQ_PRIVATE;  _seqbuf[_seqbufptr+1] = (chn); _seqbuf[_seqbufptr+2] = cmd;  _seqbuf[_seqbufptr+3] = voice;  *(unsigned short*)&_seqbuf[_seqbufptr+4] = p1;  *(unsigned short*)&_seqbuf[_seqbufptr+6] = p2;  _SEQ_ADVBUF(8);}
+#define _GUS_CMD(chn,voice,cmd,p1,p2) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = SEQ_PRIVATE; _seqbuf[_seqbufptr + 1] = (chn); _seqbuf[_seqbufptr + 2] = cmd; _seqbuf[_seqbufptr + 3] = voice; * (unsigned short *) & _seqbuf[_seqbufptr + 4] = p1; * (unsigned short *) & _seqbuf[_seqbufptr + 6] = p2; _SEQ_ADVBUF(8); }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define GUS_NUMVOICES(chn, p1) _GUS_CMD(chn, 0, _GUS_NUMVOICES, (p1), 0)
-#define GUS_VOICESAMPLE(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_VOICESAMPLE, (p1), 0)
-#define GUS_VOICEON(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_VOICEON, (p1), 0)
-#define GUS_VOICEOFF(chn, voice) _GUS_CMD(chn, voice, _GUS_VOICEOFF, 0, 0)
+#define GUS_NUMVOICES(chn,p1) _GUS_CMD(chn, 0, _GUS_NUMVOICES, (p1), 0)
+#define GUS_VOICESAMPLE(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICESAMPLE, (p1), 0)
+#define GUS_VOICEON(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEON, (p1), 0)
+#define GUS_VOICEOFF(chn,voice) _GUS_CMD(chn, voice, _GUS_VOICEOFF, 0, 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define GUS_VOICEFADE(chn, voice) _GUS_CMD(chn, voice, _GUS_VOICEFADE, 0, 0)
-#define GUS_VOICEMODE(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_VOICEMODE, (p1), 0)
-#define GUS_VOICEBALA(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_VOICEBALA, (p1), 0)
-#define GUS_VOICEFREQ(chn, voice, p) _GUS_CMD(chn, voice, _GUS_VOICEFREQ,   (p) & 0xffff, ((p) >> 16) & 0xffff)
+#define GUS_VOICEFADE(chn,voice) _GUS_CMD(chn, voice, _GUS_VOICEFADE, 0, 0)
+#define GUS_VOICEMODE(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEMODE, (p1), 0)
+#define GUS_VOICEBALA(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEBALA, (p1), 0)
+#define GUS_VOICEFREQ(chn,voice,p) _GUS_CMD(chn, voice, _GUS_VOICEFREQ, (p) & 0xffff, ((p) >> 16) & 0xffff)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define GUS_VOICEVOL(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_VOICEVOL, (p1), 0)
-#define GUS_VOICEVOL2(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_VOICEVOL2, (p1), 0)
-#define GUS_RAMPRANGE(chn, voice, low, high) _GUS_CMD(chn, voice, _GUS_RAMPRANGE, (low), (high))
-#define GUS_RAMPRATE(chn, voice, p1, p2) _GUS_CMD(chn, voice, _GUS_RAMPRATE, (p1), (p2))
+#define GUS_VOICEVOL(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEVOL, (p1), 0)
+#define GUS_VOICEVOL2(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEVOL2, (p1), 0)
+#define GUS_RAMPRANGE(chn,voice,low,high) _GUS_CMD(chn, voice, _GUS_RAMPRANGE, (low), (high))
+#define GUS_RAMPRATE(chn,voice,p1,p2) _GUS_CMD(chn, voice, _GUS_RAMPRATE, (p1), (p2))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define GUS_RAMPMODE(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_RAMPMODE, (p1), 0)
-#define GUS_RAMPON(chn, voice, p1) _GUS_CMD(chn, voice, _GUS_RAMPON, (p1), 0)
-#define GUS_RAMPOFF(chn, voice) _GUS_CMD(chn, voice, _GUS_RAMPOFF, 0, 0)
-#define GUS_VOLUME_SCALE(chn, voice, p1, p2) _GUS_CMD(chn, voice, _GUS_VOLUME_SCALE, (p1), (p2))
+#define GUS_RAMPMODE(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_RAMPMODE, (p1), 0)
+#define GUS_RAMPON(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_RAMPON, (p1), 0)
+#define GUS_RAMPOFF(chn,voice) _GUS_CMD(chn, voice, _GUS_RAMPOFF, 0, 0)
+#define GUS_VOLUME_SCALE(chn,voice,p1,p2) _GUS_CMD(chn, voice, _GUS_VOLUME_SCALE, (p1), (p2))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define GUS_VOICE_POS(chn, voice, p) _GUS_CMD(chn, voice, _GUS_VOICE_POS,   (p) & 0xffff, ((p) >> 16) & 0xffff)
+#define GUS_VOICE_POS(chn,voice,p) _GUS_CMD(chn, voice, _GUS_VOICE_POS, (p) & 0xffff, ((p) >> 16) & 0xffff)
 #endif
diff --git a/libc/kernel/uapi/linux/un.h b/libc/kernel/uapi/linux/un.h
index 736b5bf..07f615e 100644
--- a/libc/kernel/uapi/linux/un.h
+++ b/libc/kernel/uapi/linux/un.h
@@ -22,8 +22,8 @@
 #define UNIX_PATH_MAX 108
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_un {
- __kernel_sa_family_t sun_family;
- char sun_path[UNIX_PATH_MAX];
+  __kernel_sa_family_t sun_family;
+  char sun_path[UNIX_PATH_MAX];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/unix_diag.h b/libc/kernel/uapi/linux/unix_diag.h
index 475583e..ff2138e 100644
--- a/libc/kernel/uapi/linux/unix_diag.h
+++ b/libc/kernel/uapi/linux/unix_diag.h
@@ -21,14 +21,14 @@
 #include <linux/types.h>
 struct unix_diag_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sdiag_family;
- __u8 sdiag_protocol;
- __u16 pad;
- __u32 udiag_states;
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 udiag_states;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 udiag_ino;
- __u32 udiag_show;
- __u32 udiag_cookie[2];
+  __u32 udiag_ino;
+  __u32 udiag_show;
+  __u32 udiag_cookie[2];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UDIAG_SHOW_NAME 0x00000001
@@ -39,37 +39,37 @@
 #define UDIAG_SHOW_RQLEN 0x00000010
 #define UDIAG_SHOW_MEMINFO 0x00000020
 struct unix_diag_msg {
- __u8 udiag_family;
+  __u8 udiag_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 udiag_type;
- __u8 udiag_state;
- __u8 pad;
- __u32 udiag_ino;
+  __u8 udiag_type;
+  __u8 udiag_state;
+  __u8 pad;
+  __u32 udiag_ino;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 udiag_cookie[2];
+  __u32 udiag_cookie[2];
 };
 enum {
- UNIX_DIAG_NAME,
+  UNIX_DIAG_NAME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- UNIX_DIAG_VFS,
- UNIX_DIAG_PEER,
- UNIX_DIAG_ICONS,
- UNIX_DIAG_RQLEN,
+  UNIX_DIAG_VFS,
+  UNIX_DIAG_PEER,
+  UNIX_DIAG_ICONS,
+  UNIX_DIAG_RQLEN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- UNIX_DIAG_MEMINFO,
- UNIX_DIAG_SHUTDOWN,
- __UNIX_DIAG_MAX,
+  UNIX_DIAG_MEMINFO,
+  UNIX_DIAG_SHUTDOWN,
+  __UNIX_DIAG_MAX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UNIX_DIAG_MAX (__UNIX_DIAG_MAX - 1)
 struct unix_diag_vfs {
- __u32 udiag_vfs_ino;
- __u32 udiag_vfs_dev;
+  __u32 udiag_vfs_ino;
+  __u32 udiag_vfs_dev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct unix_diag_rqlen {
- __u32 udiag_rqueue;
- __u32 udiag_wqueue;
+  __u32 udiag_rqueue;
+  __u32 udiag_wqueue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/usb/audio.h b/libc/kernel/uapi/linux/usb/audio.h
index 40df75d..459516c 100644
--- a/libc/kernel/uapi/linux/usb/audio.h
+++ b/libc/kernel/uapi/linux/usb/audio.h
@@ -123,33 +123,34 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_TERMINAL_VENDOR_SPEC 0x1FF
 struct uac1_ac_header_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubtype;
- __le16 bcdADC;
- __le16 wTotalLength;
- __u8 bInCollection;
+  __u8 bDescriptorSubtype;
+  __le16 bcdADC;
+  __le16 wTotalLength;
+  __u8 bInCollection;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 baInterfaceNr[];
-} __attribute__ ((packed));
+  __u8 baInterfaceNr[];
+} __attribute__((packed));
 #define UAC_DT_AC_HEADER_SIZE(n) (8 + (n))
-#define DECLARE_UAC_AC_HEADER_DESCRIPTOR(n)  struct uac1_ac_header_descriptor_##n {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubtype;   __le16 bcdADC;   __le16 wTotalLength;   __u8 bInCollection;   __u8 baInterfaceNr[n];  } __attribute__ ((packed))
+#define DECLARE_UAC_AC_HEADER_DESCRIPTOR(n) struct uac1_ac_header_descriptor_ ##n { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __le16 bcdADC; __le16 wTotalLength; __u8 bInCollection; __u8 baInterfaceNr[n]; \
+} __attribute__((packed))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uac_input_terminal_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bTerminalID;
- __le16 wTerminalType;
- __u8 bAssocTerminal;
- __u8 bNrChannels;
+  __u8 bTerminalID;
+  __le16 wTerminalType;
+  __u8 bAssocTerminal;
+  __u8 bNrChannels;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wChannelConfig;
- __u8 iChannelNames;
- __u8 iTerminal;
-} __attribute__ ((packed));
+  __le16 wChannelConfig;
+  __u8 iChannelNames;
+  __u8 iTerminal;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_DT_INPUT_TERMINAL_SIZE 12
 #define UAC_INPUT_TERMINAL_UNDEFINED 0x200
@@ -163,17 +164,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_TERMINAL_CS_COPY_PROTECT_CONTROL 0x01
 struct uac1_output_terminal_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubtype;
- __u8 bTerminalID;
- __le16 wTerminalType;
- __u8 bAssocTerminal;
+  __u8 bDescriptorSubtype;
+  __u8 bTerminalID;
+  __le16 wTerminalType;
+  __u8 bAssocTerminal;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bSourceID;
- __u8 iTerminal;
-} __attribute__ ((packed));
+  __u8 bSourceID;
+  __u8 iTerminal;
+} __attribute__((packed));
 #define UAC_DT_OUTPUT_TERMINAL_SIZE 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_OUTPUT_TERMINAL_UNDEFINED 0x300
@@ -187,59 +188,60 @@
 #define UAC_OUTPUT_TERMINAL_LOW_FREQ_EFFECTS_SPEAKER 0x307
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_DT_FEATURE_UNIT_SIZE(ch) (7 + ((ch) + 1) * 2)
-#define DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(ch)  struct uac_feature_unit_descriptor_##ch {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubtype;   __u8 bUnitID;   __u8 bSourceID;   __u8 bControlSize;   __le16 bmaControls[ch + 1];   __u8 iFeature;  } __attribute__ ((packed))
+#define DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(ch) struct uac_feature_unit_descriptor_ ##ch { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bUnitID; __u8 bSourceID; __u8 bControlSize; __le16 bmaControls[ch + 1]; __u8 iFeature; \
+} __attribute__((packed))
 struct uac_mixer_unit_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bUnitID;
- __u8 bNrInPins;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUnitID;
+  __u8 bNrInPins;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 baSourceID[];
-} __attribute__ ((packed));
+  __u8 baSourceID[];
+} __attribute__((packed));
 struct uac_selector_unit_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bUintID;
- __u8 bNrInPins;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUintID;
+  __u8 bNrInPins;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 baSourceID[];
-} __attribute__ ((packed));
+  __u8 baSourceID[];
+} __attribute__((packed));
 struct uac_feature_unit_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bUnitID;
- __u8 bSourceID;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUnitID;
+  __u8 bSourceID;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bControlSize;
- __u8 bmaControls[0];
+  __u8 bControlSize;
+  __u8 bmaControls[0];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bUnitID;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUnitID;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wProcessType;
- __u8 bNrInPins;
- __u8 baSourceID[];
-} __attribute__ ((packed));
+  __u16 wProcessType;
+  __u8 bNrInPins;
+  __u8 baSourceID[];
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uac1_as_header_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bTerminalLink;
- __u8 bDelay;
- __le16 wFormatTag;
-} __attribute__ ((packed));
+  __u8 bTerminalLink;
+  __u8 bDelay;
+  __le16 wFormatTag;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_DT_AS_HEADER_SIZE 7
 #define UAC_FORMAT_TYPE_I_UNDEFINED 0x0
@@ -251,77 +253,78 @@
 #define UAC_FORMAT_TYPE_I_MULAW 0x5
 struct uac_format_type_i_continuous_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bFormatType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bNrChannels;
- __u8 bSubframeSize;
- __u8 bBitResolution;
- __u8 bSamFreqType;
+  __u8 bNrChannels;
+  __u8 bSubframeSize;
+  __u8 bBitResolution;
+  __u8 bSamFreqType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tLowerSamFreq[3];
- __u8 tUpperSamFreq[3];
-} __attribute__ ((packed));
+  __u8 tLowerSamFreq[3];
+  __u8 tUpperSamFreq[3];
+} __attribute__((packed));
 #define UAC_FORMAT_TYPE_I_CONTINUOUS_DESC_SIZE 14
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uac_format_type_i_discrete_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bFormatType;
- __u8 bNrChannels;
- __u8 bSubframeSize;
- __u8 bBitResolution;
+  __u8 bFormatType;
+  __u8 bNrChannels;
+  __u8 bSubframeSize;
+  __u8 bBitResolution;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bSamFreqType;
- __u8 tSamFreq[][3];
-} __attribute__ ((packed));
-#define DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(n)  struct uac_format_type_i_discrete_descriptor_##n {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubtype;   __u8 bFormatType;   __u8 bNrChannels;   __u8 bSubframeSize;   __u8 bBitResolution;   __u8 bSamFreqType;   __u8 tSamFreq[n][3];  } __attribute__ ((packed))
+  __u8 bSamFreqType;
+  __u8 tSamFreq[][3];
+} __attribute__((packed));
+#define DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(n) struct uac_format_type_i_discrete_descriptor_ ##n { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bFormatType; __u8 bNrChannels; __u8 bSubframeSize; __u8 bBitResolution; __u8 bSamFreqType; __u8 tSamFreq[n][3]; \
+} __attribute__((packed))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(n) (8 + (n * 3))
 struct uac_format_type_i_ext_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubtype;
- __u8 bFormatType;
- __u8 bSubslotSize;
- __u8 bBitResolution;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
+  __u8 bSubslotSize;
+  __u8 bBitResolution;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bHeaderLength;
- __u8 bControlSize;
- __u8 bSideBandProtocol;
+  __u8 bHeaderLength;
+  __u8 bControlSize;
+  __u8 bSideBandProtocol;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC_FORMAT_TYPE_II_MPEG 0x1001
 #define UAC_FORMAT_TYPE_II_AC3 0x1002
 struct uac_format_type_ii_discrete_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bFormatType;
- __le16 wMaxBitRate;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
+  __le16 wMaxBitRate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wSamplesPerFrame;
- __u8 bSamFreqType;
- __u8 tSamFreq[][3];
+  __le16 wSamplesPerFrame;
+  __u8 bSamFreqType;
+  __u8 tSamFreq[][3];
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uac_format_type_ii_ext_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bFormatType;
- __u16 wMaxBitRate;
- __u16 wSamplesPerFrame;
- __u8 bHeaderLength;
+  __u8 bFormatType;
+  __u16 wMaxBitRate;
+  __u16 wSamplesPerFrame;
+  __u8 bHeaderLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bSideBandProtocol;
+  __u8 bSideBandProtocol;
 } __attribute__((packed));
 #define UAC_FORMAT_TYPE_III_IEC1937_AC3 0x2001
 #define UAC_FORMAT_TYPE_III_IEC1937_MPEG1_LAYER1 0x2002
@@ -341,13 +344,13 @@
 #define UAC_EXT_FORMAT_TYPE_III 0x83
 struct uac_iso_endpoint_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bmAttributes;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bmAttributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLockDelayUnits;
- __le16 wLockDelay;
+  __u8 bLockDelayUnits;
+  __le16 wLockDelay;
 } __attribute__((packed));
 #define UAC_ISO_ENDPOINT_DESC_SIZE 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -363,8 +366,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UAC1_STATUS_TYPE_MEM_CHANGED (1 << 6)
 struct uac1_status_word {
- __u8 bStatusType;
- __u8 bOriginator;
+  __u8 bStatusType;
+  __u8 bOriginator;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 #endif
diff --git a/libc/kernel/uapi/linux/usb/cdc-wdm.h b/libc/kernel/uapi/linux/usb/cdc-wdm.h
index e170f59..23855bd 100644
--- a/libc/kernel/uapi/linux/usb/cdc-wdm.h
+++ b/libc/kernel/uapi/linux/usb/cdc-wdm.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI__LINUX_USB_CDC_WDM_H
 #define _UAPI__LINUX_USB_CDC_WDM_H
+#include <linux/types.h>
 #define IOCTL_WDM_MAX_COMMAND _IOR('H', 0xA0, __u16)
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/usb/cdc.h b/libc/kernel/uapi/linux/usb/cdc.h
index 17278e1..81123cb 100644
--- a/libc/kernel/uapi/linux/usb/cdc.h
+++ b/libc/kernel/uapi/linux/usb/cdc.h
@@ -62,312 +62,323 @@
 #define USB_CDC_NCM_TYPE 0x1a
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CDC_MBIM_TYPE 0x1b
+#define USB_CDC_MBIM_EXTENDED_TYPE 0x1c
 struct usb_cdc_header_desc {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __le16 bcdCDC;
-} __attribute__ ((packed));
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdCDC;
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_cdc_call_mgmt_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u8 bmCapabilities;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 bmCapabilities;
 #define USB_CDC_CALL_MGMT_CAP_CALL_MGMT 0x01
 #define USB_CDC_CALL_MGMT_CAP_DATA_INTF 0x02
- __u8 bDataInterface;
-} __attribute__ ((packed));
+  __u8 bDataInterface;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 struct usb_cdc_acm_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmCapabilities;
-} __attribute__ ((packed));
+  __u8 bDescriptorSubType;
+  __u8 bmCapabilities;
+} __attribute__((packed));
 #define USB_CDC_COMM_FEATURE 0x01
-#define USB_CDC_CAP_LINE 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_CAP_LINE 0x02
 #define USB_CDC_CAP_BRK 0x04
 #define USB_CDC_CAP_NOTIFY 0x08
 struct usb_cdc_union_desc {
- __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u8 bMasterInterface0;
- __u8 bSlaveInterface0;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bMasterInterface0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+  __u8 bSlaveInterface0;
+} __attribute__((packed));
 struct usb_cdc_country_functional_desc {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __u8 iCountryCodeRelDate;
- __le16 wCountyCode0;
-} __attribute__ ((packed));
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 iCountryCodeRelDate;
+  __le16 wCountyCode0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 struct usb_cdc_network_terminal_desc {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bEntityId;
- __u8 iName;
- __u8 bChannelIndex;
- __u8 bPhysicalInterface;
+  __u8 bDescriptorSubType;
+  __u8 bEntityId;
+  __u8 iName;
+  __u8 bChannelIndex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+  __u8 bPhysicalInterface;
+} __attribute__((packed));
 struct usb_cdc_ether_desc {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __u8 iMACAddress;
- __le32 bmEthernetStatistics;
- __le16 wMaxSegmentSize;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 iMACAddress;
+  __le32 bmEthernetStatistics;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wNumberMCFilters;
- __u8 bNumberPowerFilters;
-} __attribute__ ((packed));
+  __le16 wMaxSegmentSize;
+  __le16 wNumberMCFilters;
+  __u8 bNumberPowerFilters;
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_cdc_dmm_desc {
+  __u8 bFunctionLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bFunctionLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u16 bcdVersion;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wMaxCommand;
-} __attribute__ ((packed));
+  __u16 bcdVersion;
+  __le16 wMaxCommand;
+} __attribute__((packed));
 struct usb_cdc_mdlm_desc {
- __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __le16 bcdVersion;
- __u8 bGUID[16];
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdVersion;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+  __u8 bGUID[16];
+} __attribute__((packed));
 struct usb_cdc_mdlm_detail_desc {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __u8 bGuidDescriptorType;
- __u8 bDetailData[0];
-} __attribute__ ((packed));
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bGuidDescriptorType;
+  __u8 bDetailData[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 struct usb_cdc_obex_desc {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 bcdVersion;
-} __attribute__ ((packed));
+  __u8 bDescriptorSubType;
+  __le16 bcdVersion;
+} __attribute__((packed));
 struct usb_cdc_ncm_desc {
- __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __le16 bcdNcmVersion;
- __u8 bmNetworkCapabilities;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdNcmVersion;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+  __u8 bmNetworkCapabilities;
+} __attribute__((packed));
 struct usb_cdc_mbim_desc {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __le16 bcdMBIMVersion;
- __le16 wMaxControlMessage;
- __u8 bNumberFilters;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdMBIMVersion;
+  __le16 wMaxControlMessage;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bMaxFilterSize;
- __le16 wMaxSegmentSize;
- __u8 bmNetworkCapabilities;
-} __attribute__ ((packed));
+  __u8 bNumberFilters;
+  __u8 bMaxFilterSize;
+  __le16 wMaxSegmentSize;
+  __u8 bmNetworkCapabilities;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
+struct usb_cdc_mbim_extended_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 bDescriptorSubType;
+  __le16 bcdMBIMExtendedVersion;
+  __u8 bMaxOutstandingCommandMessages;
+  __le16 wMTU;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 #define USB_CDC_SEND_ENCAPSULATED_COMMAND 0x00
 #define USB_CDC_GET_ENCAPSULATED_RESPONSE 0x01
 #define USB_CDC_REQ_SET_LINE_CODING 0x20
-#define USB_CDC_REQ_GET_LINE_CODING 0x21
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_REQ_GET_LINE_CODING 0x21
 #define USB_CDC_REQ_SET_CONTROL_LINE_STATE 0x22
 #define USB_CDC_REQ_SEND_BREAK 0x23
 #define USB_CDC_SET_ETHERNET_MULTICAST_FILTERS 0x40
-#define USB_CDC_SET_ETHERNET_PM_PATTERN_FILTER 0x41
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_SET_ETHERNET_PM_PATTERN_FILTER 0x41
 #define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER 0x42
 #define USB_CDC_SET_ETHERNET_PACKET_FILTER 0x43
 #define USB_CDC_GET_ETHERNET_STATISTIC 0x44
-#define USB_CDC_GET_NTB_PARAMETERS 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_GET_NTB_PARAMETERS 0x80
 #define USB_CDC_GET_NET_ADDRESS 0x81
 #define USB_CDC_SET_NET_ADDRESS 0x82
 #define USB_CDC_GET_NTB_FORMAT 0x83
-#define USB_CDC_SET_NTB_FORMAT 0x84
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_SET_NTB_FORMAT 0x84
 #define USB_CDC_GET_NTB_INPUT_SIZE 0x85
 #define USB_CDC_SET_NTB_INPUT_SIZE 0x86
 #define USB_CDC_GET_MAX_DATAGRAM_SIZE 0x87
-#define USB_CDC_SET_MAX_DATAGRAM_SIZE 0x88
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_SET_MAX_DATAGRAM_SIZE 0x88
 #define USB_CDC_GET_CRC_MODE 0x89
 #define USB_CDC_SET_CRC_MODE 0x8a
 struct usb_cdc_line_coding {
- __le32 dwDTERate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bCharFormat;
+  __le32 dwDTERate;
+  __u8 bCharFormat;
 #define USB_CDC_1_STOP_BITS 0
 #define USB_CDC_1_5_STOP_BITS 1
-#define USB_CDC_2_STOP_BITS 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bParityType;
+#define USB_CDC_2_STOP_BITS 2
+  __u8 bParityType;
 #define USB_CDC_NO_PARITY 0
 #define USB_CDC_ODD_PARITY 1
-#define USB_CDC_EVEN_PARITY 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_EVEN_PARITY 2
 #define USB_CDC_MARK_PARITY 3
 #define USB_CDC_SPACE_PARITY 4
- __u8 bDataBits;
-} __attribute__ ((packed));
+  __u8 bDataBits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
-#define USB_CDC_PACKET_TYPE_BROADCAST (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_PACKET_TYPE_BROADCAST (1 << 3)
 #define USB_CDC_PACKET_TYPE_MULTICAST (1 << 4)
 #define USB_CDC_NOTIFY_NETWORK_CONNECTION 0x00
 #define USB_CDC_NOTIFY_RESPONSE_AVAILABLE 0x01
-#define USB_CDC_NOTIFY_SERIAL_STATE 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_NOTIFY_SERIAL_STATE 0x20
 #define USB_CDC_NOTIFY_SPEED_CHANGE 0x2a
 struct usb_cdc_notification {
- __u8 bmRequestType;
- __u8 bNotificationType;
+  __u8 bmRequestType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wValue;
- __le16 wIndex;
- __le16 wLength;
-} __attribute__ ((packed));
+  __u8 bNotificationType;
+  __le16 wValue;
+  __le16 wIndex;
+  __le16 wLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 struct usb_cdc_speed_change {
- __le32 DLBitRRate;
- __le32 ULBitRate;
-} __attribute__ ((packed));
+  __le32 DLBitRRate;
+  __le32 ULBitRate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 struct usb_cdc_ncm_ntb_parameters {
- __le16 wLength;
- __le16 bmNtbFormatsSupported;
- __le32 dwNtbInMaxSize;
+  __le16 wLength;
+  __le16 bmNtbFormatsSupported;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wNdpInDivisor;
- __le16 wNdpInPayloadRemainder;
- __le16 wNdpInAlignment;
- __le16 wPadding1;
+  __le32 dwNtbInMaxSize;
+  __le16 wNdpInDivisor;
+  __le16 wNdpInPayloadRemainder;
+  __le16 wNdpInAlignment;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 dwNtbOutMaxSize;
- __le16 wNdpOutDivisor;
- __le16 wNdpOutPayloadRemainder;
- __le16 wNdpOutAlignment;
+  __le16 wPadding1;
+  __le32 dwNtbOutMaxSize;
+  __le16 wNdpOutDivisor;
+  __le16 wNdpOutPayloadRemainder;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wNtbOutMaxDatagrams;
-} __attribute__ ((packed));
+  __le16 wNdpOutAlignment;
+  __le16 wNtbOutMaxDatagrams;
+} __attribute__((packed));
 #define USB_CDC_NCM_NTH16_SIGN 0x484D434E
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CDC_NCM_NTH32_SIGN 0x686D636E
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_cdc_ncm_nth16 {
- __le32 dwSignature;
- __le16 wHeaderLength;
- __le16 wSequence;
+  __le32 dwSignature;
+  __le16 wHeaderLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wBlockLength;
- __le16 wNdpIndex;
-} __attribute__ ((packed));
+  __le16 wSequence;
+  __le16 wBlockLength;
+  __le16 wNdpIndex;
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_cdc_ncm_nth32 {
+  __le32 dwSignature;
+  __le16 wHeaderLength;
+  __le16 wSequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 dwSignature;
- __le16 wHeaderLength;
- __le16 wSequence;
- __le32 dwBlockLength;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 dwNdpIndex;
-} __attribute__ ((packed));
+  __le32 dwBlockLength;
+  __le32 dwNdpIndex;
+} __attribute__((packed));
 #define USB_CDC_NCM_NDP16_CRC_SIGN 0x314D434E
-#define USB_CDC_NCM_NDP16_NOCRC_SIGN 0x304D434E
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_NCM_NDP16_NOCRC_SIGN 0x304D434E
 #define USB_CDC_NCM_NDP32_CRC_SIGN 0x316D636E
 #define USB_CDC_NCM_NDP32_NOCRC_SIGN 0x306D636E
 #define USB_CDC_MBIM_NDP16_IPS_SIGN 0x00535049
-#define USB_CDC_MBIM_NDP32_IPS_SIGN 0x00737069
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_MBIM_NDP32_IPS_SIGN 0x00737069
 #define USB_CDC_MBIM_NDP16_DSS_SIGN 0x00535344
 #define USB_CDC_MBIM_NDP32_DSS_SIGN 0x00737364
 struct usb_cdc_ncm_dpe16 {
- __le16 wDatagramIndex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wDatagramLength;
+  __le16 wDatagramIndex;
+  __le16 wDatagramLength;
 } __attribute__((__packed__));
 struct usb_cdc_ncm_ndp16 {
- __le32 dwSignature;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wLength;
- __le16 wNextNdpIndex;
- struct usb_cdc_ncm_dpe16 dpe16[0];
-} __attribute__ ((packed));
+  __le32 dwSignature;
+  __le16 wLength;
+  __le16 wNextNdpIndex;
+  struct usb_cdc_ncm_dpe16 dpe16[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
- __le32 dwDatagramIndex;
- __le32 dwDatagramLength;
+  __le32 dwDatagramIndex;
+  __le32 dwDatagramLength;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((__packed__));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_cdc_ncm_ndp32 {
- __le32 dwSignature;
- __le16 wLength;
- __le16 wReserved6;
+  __le32 dwSignature;
+  __le16 wLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 dwNextNdpIndex;
- __le32 dwReserved12;
- struct usb_cdc_ncm_dpe32 dpe32[0];
-} __attribute__ ((packed));
+  __le16 wReserved6;
+  __le32 dwNextNdpIndex;
+  __le32 dwReserved12;
+  struct usb_cdc_ncm_dpe32 dpe32[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
 #define USB_CDC_NCM_DATAGRAM_FORMAT_CRC 0x30
-#define USB_CDC_NCM_DATAGRAM_FORMAT_NOCRC 0X31
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_NCM_DATAGRAM_FORMAT_NOCRC 0X31
 #define USB_CDC_NCM_PROTO_CODE_NO_ENCAP_COMMANDS 0x00
 #define USB_CDC_NCM_PROTO_CODE_EXTERN_PROTO 0xFE
 #define USB_CDC_NCM_NCAP_ETH_FILTER (1 << 0)
-#define USB_CDC_NCM_NCAP_NET_ADDRESS (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_NCM_NCAP_NET_ADDRESS (1 << 1)
 #define USB_CDC_NCM_NCAP_ENCAP_COMMAND (1 << 2)
 #define USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE (1 << 3)
 #define USB_CDC_NCM_NCAP_CRC_MODE (1 << 4)
-#define USB_CDC_NCM_NCAP_NTB_INPUT_SIZE (1 << 5)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_NCM_NCAP_NTB_INPUT_SIZE (1 << 5)
 #define USB_CDC_NCM_NTB16_SUPPORTED (1 << 0)
 #define USB_CDC_NCM_NTB32_SUPPORTED (1 << 1)
 #define USB_CDC_NCM_NDP_ALIGN_MIN_SIZE 0x04
-#define USB_CDC_NCM_NTB_MAX_LENGTH 0x1C
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_CDC_NCM_NTB_MAX_LENGTH 0x1C
 #define USB_CDC_NCM_NTB16_FORMAT 0x00
 #define USB_CDC_NCM_NTB32_FORMAT 0x01
 #define USB_CDC_NCM_NTB_MIN_IN_SIZE 2048
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CDC_NCM_NTB_MIN_OUT_SIZE 2048
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_cdc_ncm_ndp_input_size {
- __le32 dwNtbInMaxSize;
- __le16 wNtbInMaxDatagrams;
- __le16 wReserved;
+  __le32 dwNtbInMaxSize;
+  __le16 wNtbInMaxDatagrams;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+  __le16 wReserved;
+} __attribute__((packed));
 #define USB_CDC_NCM_CRC_NOT_APPENDED 0x00
 #define USB_CDC_NCM_CRC_APPENDED 0x01
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/libc/kernel/uapi/linux/usb/ch11.h b/libc/kernel/uapi/linux/usb/ch11.h
index cbe3d70..f8585df 100644
--- a/libc/kernel/uapi/linux/usb/ch11.h
+++ b/libc/kernel/uapi/linux/usb/ch11.h
@@ -71,9 +71,9 @@
 #define USB_PORT_FEAT_REMOTE_WAKE_OVER_CURRENT (1 << 10)
 struct usb_port_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wPortStatus;
- __le16 wPortChange;
-} __attribute__ ((packed));
+  __le16 wPortStatus;
+  __le16 wPortChange;
+} __attribute__((packed));
 #define USB_PORT_STAT_CONNECTION 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_PORT_STAT_ENABLE 0x0002
@@ -93,7 +93,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_SS_PORT_STAT_SPEED 0x1c00
 #define USB_PORT_STAT_SPEED_5GBPS 0x0000
-#define USB_SS_PORT_STAT_MASK (USB_PORT_STAT_CONNECTION |   USB_PORT_STAT_ENABLE |   USB_PORT_STAT_OVERCURRENT |   USB_PORT_STAT_RESET)
+#define USB_SS_PORT_STAT_MASK (USB_PORT_STAT_CONNECTION | USB_PORT_STAT_ENABLE | USB_PORT_STAT_OVERCURRENT | USB_PORT_STAT_RESET)
 #define USB_SS_PORT_LS_U0 0x0000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_SS_PORT_LS_U1 0x0020
@@ -136,9 +136,9 @@
 #define HUB_CHAR_PORTIND 0x0080
 struct usb_hub_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wHubStatus;
- __le16 wHubChange;
-} __attribute__ ((packed));
+  __le16 wHubStatus;
+  __le16 wHubChange;
+} __attribute__((packed));
 #define HUB_STATUS_LOCAL_POWER 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HUB_STATUS_OVERCURRENT 0x0002
@@ -157,28 +157,28 @@
 #define USB_HUB_PR_SS 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_hub_descriptor {
- __u8 bDescLength;
- __u8 bDescriptorType;
- __u8 bNbrPorts;
+  __u8 bDescLength;
+  __u8 bDescriptorType;
+  __u8 bNbrPorts;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wHubCharacteristics;
- __u8 bPwrOn2PwrGood;
- __u8 bHubContrCurrent;
- union {
+  __le16 wHubCharacteristics;
+  __u8 bPwrOn2PwrGood;
+  __u8 bHubContrCurrent;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];
- __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8];
- } __attribute__ ((packed)) hs;
+    struct {
+      __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];
+      __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8];
+    } __attribute__((packed)) hs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u8 bHubHdrDecLat;
- __le16 wHubDelay;
- __le16 DeviceRemovable;
+    struct {
+      __u8 bHubHdrDecLat;
+      __le16 wHubDelay;
+      __le16 DeviceRemovable;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } __attribute__ ((packed)) ss;
- } u;
-} __attribute__ ((packed));
+    } __attribute__((packed)) ss;
+  } u;
+} __attribute__((packed));
 #define HUB_LED_AUTO 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HUB_LED_AMBER 1
@@ -186,16 +186,20 @@
 #define HUB_LED_OFF 3
 enum hub_led_mode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INDICATOR_AUTO = 0,
- INDICATOR_CYCLE,
- INDICATOR_GREEN_BLINK, INDICATOR_GREEN_BLINK_OFF,
- INDICATOR_AMBER_BLINK, INDICATOR_AMBER_BLINK_OFF,
+  INDICATOR_AUTO = 0,
+  INDICATOR_CYCLE,
+  INDICATOR_GREEN_BLINK,
+  INDICATOR_GREEN_BLINK_OFF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- INDICATOR_ALT_BLINK, INDICATOR_ALT_BLINK_OFF
-} __attribute__ ((packed));
+  INDICATOR_AMBER_BLINK,
+  INDICATOR_AMBER_BLINK_OFF,
+  INDICATOR_ALT_BLINK,
+  INDICATOR_ALT_BLINK_OFF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 #define HUB_TTTT_8_BITS 0x00
 #define HUB_TTTT_16_BITS 0x20
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HUB_TTTT_24_BITS 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HUB_TTTT_32_BITS 0x60
 #endif
diff --git a/libc/kernel/uapi/linux/usb/ch9.h b/libc/kernel/uapi/linux/usb/ch9.h
index 3f5b99b..c2dd92d 100644
--- a/libc/kernel/uapi/linux/usb/ch9.h
+++ b/libc/kernel/uapi/linux/usb/ch9.h
@@ -106,13 +106,13 @@
 #define USB_DEV_STAT_LTM_ENABLED 4
 struct usb_ctrlrequest {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bRequestType;
- __u8 bRequest;
- __le16 wValue;
- __le16 wIndex;
+  __u8 bRequestType;
+  __u8 bRequest;
+  __le16 wValue;
+  __le16 wIndex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 wLength;
-} __attribute__ ((packed));
+  __le16 wLength;
+} __attribute__((packed));
 #define USB_DT_DEVICE 0x01
 #define USB_DT_CONFIG 0x02
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -148,30 +148,30 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_CS_ENDPOINT (USB_TYPE_CLASS | USB_DT_ENDPOINT)
 struct usb_descriptor_header {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 struct usb_device_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 bcdUSB;
- __u8 bDeviceClass;
- __u8 bDeviceSubClass;
- __u8 bDeviceProtocol;
+  __le16 bcdUSB;
+  __u8 bDeviceClass;
+  __u8 bDeviceSubClass;
+  __u8 bDeviceProtocol;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bMaxPacketSize0;
- __le16 idVendor;
- __le16 idProduct;
- __le16 bcdDevice;
+  __u8 bMaxPacketSize0;
+  __le16 idVendor;
+  __le16 idProduct;
+  __le16 bcdDevice;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 iManufacturer;
- __u8 iProduct;
- __u8 iSerialNumber;
- __u8 bNumConfigurations;
+  __u8 iManufacturer;
+  __u8 iProduct;
+  __u8 iSerialNumber;
+  __u8 bNumConfigurations;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 #define USB_DT_DEVICE_SIZE 18
 #define USB_CLASS_PER_INTERFACE 0
 #define USB_CLASS_AUDIO 1
@@ -197,17 +197,17 @@
 #define USB_SUBCLASS_VENDOR_SPEC 0xff
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_config_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __le16 wTotalLength;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wTotalLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bNumInterfaces;
- __u8 bConfigurationValue;
- __u8 iConfiguration;
- __u8 bmAttributes;
+  __u8 bNumInterfaces;
+  __u8 bConfigurationValue;
+  __u8 iConfiguration;
+  __u8 bmAttributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bMaxPower;
-} __attribute__ ((packed));
+  __u8 bMaxPower;
+} __attribute__((packed));
 #define USB_DT_CONFIG_SIZE 9
 #define USB_CONFIG_ATT_ONE (1 << 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -216,38 +216,38 @@
 #define USB_CONFIG_ATT_BATTERY (1 << 4)
 struct usb_string_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __le16 wData[1];
-} __attribute__ ((packed));
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wData[1];
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_interface_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bInterfaceNumber;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bInterfaceNumber;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bAlternateSetting;
- __u8 bNumEndpoints;
- __u8 bInterfaceClass;
- __u8 bInterfaceSubClass;
+  __u8 bAlternateSetting;
+  __u8 bNumEndpoints;
+  __u8 bInterfaceClass;
+  __u8 bInterfaceSubClass;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bInterfaceProtocol;
- __u8 iInterface;
-} __attribute__ ((packed));
+  __u8 bInterfaceProtocol;
+  __u8 iInterface;
+} __attribute__((packed));
 #define USB_DT_INTERFACE_SIZE 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_endpoint_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bEndpointAddress;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bEndpointAddress;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmAttributes;
- __le16 wMaxPacketSize;
- __u8 bInterval;
- __u8 bRefresh;
+  __u8 bmAttributes;
+  __le16 wMaxPacketSize;
+  __u8 bInterval;
+  __u8 bRefresh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bSynchAddress;
-} __attribute__ ((packed));
+  __u8 bSynchAddress;
+} __attribute__((packed));
 #define USB_DT_ENDPOINT_SIZE 7
 #define USB_DT_ENDPOINT_AUDIO_SIZE 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -277,118 +277,118 @@
 #define USB_ENDPOINT_USAGE_IMPLICIT_FB 0x20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_ss_ep_comp_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bMaxBurst;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bMaxBurst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmAttributes;
- __le16 wBytesPerInterval;
-} __attribute__ ((packed));
+  __u8 bmAttributes;
+  __le16 wBytesPerInterval;
+} __attribute__((packed));
 #define USB_DT_SS_EP_COMP_SIZE 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_SS_MULT(p) (1 + ((p) & 0x3))
 struct usb_qualifier_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 bcdUSB;
- __u8 bDeviceClass;
- __u8 bDeviceSubClass;
- __u8 bDeviceProtocol;
+  __le16 bcdUSB;
+  __u8 bDeviceClass;
+  __u8 bDeviceSubClass;
+  __u8 bDeviceProtocol;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bMaxPacketSize0;
- __u8 bNumConfigurations;
- __u8 bRESERVED;
-} __attribute__ ((packed));
+  __u8 bMaxPacketSize0;
+  __u8 bNumConfigurations;
+  __u8 bRESERVED;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_otg_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bmAttributes;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bmAttributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 #define USB_OTG_SRP (1 << 0)
 #define USB_OTG_HNP (1 << 1)
 struct usb_debug_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDebugInEndpoint;
- __u8 bDebugOutEndpoint;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDebugInEndpoint;
+  __u8 bDebugOutEndpoint;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct usb_interface_assoc_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bFirstInterface;
- __u8 bInterfaceCount;
- __u8 bFunctionClass;
- __u8 bFunctionSubClass;
+  __u8 bFirstInterface;
+  __u8 bInterfaceCount;
+  __u8 bFunctionClass;
+  __u8 bFunctionSubClass;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bFunctionProtocol;
- __u8 iFunction;
-} __attribute__ ((packed));
+  __u8 bFunctionProtocol;
+  __u8 iFunction;
+} __attribute__((packed));
 struct usb_security_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __le16 wTotalLength;
- __u8 bNumEncryptionTypes;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wTotalLength;
+  __u8 bNumEncryptionTypes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct usb_key_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tTKID[3];
- __u8 bReserved;
- __u8 bKeyData[0];
+  __u8 tTKID[3];
+  __u8 bReserved;
+  __u8 bKeyData[0];
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_encryption_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bEncryptionType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bEncryptionType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_ENC_TYPE_UNSECURE 0
 #define USB_ENC_TYPE_WIRED 1
 #define USB_ENC_TYPE_CCM_1 2
 #define USB_ENC_TYPE_RSA_1 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bEncryptionValue;
- __u8 bAuthKeyIndex;
+  __u8 bEncryptionValue;
+  __u8 bAuthKeyIndex;
 } __attribute__((packed));
 struct usb_bos_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __le16 wTotalLength;
- __u8 bNumDeviceCaps;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wTotalLength;
+  __u8 bNumDeviceCaps;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 #define USB_DT_BOS_SIZE 5
 struct usb_dev_cap_header {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDevCapabilityType;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
 } __attribute__((packed));
 #define USB_CAP_TYPE_WIRELESS_USB 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_wireless_cap_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDevCapabilityType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmAttributes;
+  __u8 bmAttributes;
 #define USB_WIRELESS_P2P_DRD (1 << 1)
 #define USB_WIRELESS_BEACON_MASK (3 << 2)
 #define USB_WIRELESS_BEACON_SELF (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_WIRELESS_BEACON_DIRECTED (2 << 2)
 #define USB_WIRELESS_BEACON_NONE (3 << 2)
- __le16 wPHYRates;
+  __le16 wPHYRates;
 #define USB_WIRELESS_PHY_53 (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_WIRELESS_PHY_80 (1 << 1)
@@ -399,20 +399,20 @@
 #define USB_WIRELESS_PHY_320 (1 << 5)
 #define USB_WIRELESS_PHY_400 (1 << 6)
 #define USB_WIRELESS_PHY_480 (1 << 7)
- __u8 bmTFITXPowerInfo;
+  __u8 bmTFITXPowerInfo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmFFITXPowerInfo;
- __le16 bmBandGroup;
- __u8 bReserved;
+  __u8 bmFFITXPowerInfo;
+  __le16 bmBandGroup;
+  __u8 bReserved;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CAP_TYPE_EXT 2
 struct usb_ext_cap_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDevCapabilityType;
- __le32 bmAttributes;
+  __u8 bDevCapabilityType;
+  __le32 bmAttributes;
 #define USB_LPM_SUPPORT (1 << 1)
 #define USB_BESL_SUPPORT (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -426,47 +426,47 @@
 #define USB_SS_CAP_TYPE 3
 struct usb_ss_cap_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDevCapabilityType;
- __u8 bmAttributes;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bmAttributes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_LTM_SUPPORT (1 << 1)
- __le16 wSpeedSupported;
+  __le16 wSpeedSupported;
 #define USB_LOW_SPEED_OPERATION (1)
 #define USB_FULL_SPEED_OPERATION (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_HIGH_SPEED_OPERATION (1 << 2)
 #define USB_5GBPS_OPERATION (1 << 3)
- __u8 bFunctionalitySupport;
- __u8 bU1devExitLat;
+  __u8 bFunctionalitySupport;
+  __u8 bU1devExitLat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 bU2DevExitLat;
+  __le16 bU2DevExitLat;
 } __attribute__((packed));
 #define USB_DT_USB_SS_CAP_SIZE 10
 #define CONTAINER_ID_TYPE 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_ss_container_id_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDevCapabilityType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bReserved;
- __u8 ContainerID[16];
+  __u8 bReserved;
+  __u8 ContainerID[16];
 } __attribute__((packed));
 #define USB_DT_USB_SS_CONTN_ID_SIZE 20
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_wireless_ep_comp_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bMaxBurst;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bMaxBurst;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bMaxSequence;
- __le16 wMaxStreamDelay;
- __le16 wOverTheAirPacketSize;
- __u8 bOverTheAirInterval;
+  __u8 bMaxSequence;
+  __le16 wMaxStreamDelay;
+  __le16 wOverTheAirPacketSize;
+  __u8 bOverTheAirInterval;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmCompAttributes;
+  __u8 bmCompAttributes;
 #define USB_ENDPOINT_SWITCH_MASK 0x03
 #define USB_ENDPOINT_SWITCH_NO 0
 #define USB_ENDPOINT_SWITCH_SWITCH 1
@@ -474,67 +474,68 @@
 #define USB_ENDPOINT_SWITCH_SCALE 2
 } __attribute__((packed));
 struct usb_handshake {
- __u8 bMessageNumber;
+  __u8 bMessageNumber;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bStatus;
- __u8 tTKID[3];
- __u8 bReserved;
- __u8 CDID[16];
+  __u8 bStatus;
+  __u8 tTKID[3];
+  __u8 bReserved;
+  __u8 CDID[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 nonce[16];
- __u8 MIC[8];
+  __u8 nonce[16];
+  __u8 MIC[8];
 } __attribute__((packed));
 struct usb_connection_context {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 CHID[16];
- __u8 CDID[16];
- __u8 CK[16];
+  __u8 CHID[16];
+  __u8 CDID[16];
+  __u8 CK[16];
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum usb_device_speed {
- USB_SPEED_UNKNOWN = 0,
- USB_SPEED_LOW, USB_SPEED_FULL,
- USB_SPEED_HIGH,
+  USB_SPEED_UNKNOWN = 0,
+  USB_SPEED_LOW,
+  USB_SPEED_FULL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- USB_SPEED_WIRELESS,
- USB_SPEED_SUPER,
+  USB_SPEED_HIGH,
+  USB_SPEED_WIRELESS,
+  USB_SPEED_SUPER,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum usb_device_state {
+  USB_STATE_NOTATTACHED = 0,
+  USB_STATE_ATTACHED,
+  USB_STATE_POWERED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- USB_STATE_NOTATTACHED = 0,
- USB_STATE_ATTACHED,
- USB_STATE_POWERED,
- USB_STATE_RECONNECTING,
+  USB_STATE_RECONNECTING,
+  USB_STATE_UNAUTHENTICATED,
+  USB_STATE_DEFAULT,
+  USB_STATE_ADDRESS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- USB_STATE_UNAUTHENTICATED,
- USB_STATE_DEFAULT,
- USB_STATE_ADDRESS,
- USB_STATE_CONFIGURED,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- USB_STATE_SUSPENDED
+  USB_STATE_CONFIGURED,
+  USB_STATE_SUSPENDED
 };
 enum usb3_link_state {
- USB3_LPM_U0 = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- USB3_LPM_U1,
- USB3_LPM_U2,
- USB3_LPM_U3
+  USB3_LPM_U0 = 0,
+  USB3_LPM_U1,
+  USB3_LPM_U2,
+  USB3_LPM_U3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB3_LPM_DISABLED 0x0
 #define USB3_LPM_U1_MAX_TIMEOUT 0x7F
 #define USB3_LPM_U2_MAX_TIMEOUT 0xFE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB3_LPM_DEVICE_INITIATED 0xFF
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_set_sel_req {
- __u8 u1_sel;
- __u8 u1_pel;
- __le16 u2_sel;
+  __u8 u1_sel;
+  __u8 u1_pel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 u2_pel;
-} __attribute__ ((packed));
+  __le16 u2_sel;
+  __le16 u2_pel;
+} __attribute__((packed));
 #define USB3_LPM_MAX_U1_SEL_PEL 0xFF
-#define USB3_LPM_MAX_U2_SEL_PEL 0xFFFF
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB3_LPM_MAX_U2_SEL_PEL 0xFFFF
 #define USB_SELF_POWER_VBUS_MAX_DRAW 100
 #endif
diff --git a/libc/kernel/uapi/linux/usb/f_mtp.h b/libc/kernel/uapi/linux/usb/f_mtp.h
index 3c18353..22ec771 100644
--- a/libc/kernel/uapi/linux/usb/f_mtp.h
+++ b/libc/kernel/uapi/linux/usb/f_mtp.h
@@ -22,17 +22,17 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtp_file_range {
- int fd;
- loff_t offset;
- int64_t length;
+  int fd;
+  loff_t offset;
+  int64_t length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint16_t command;
- uint32_t transaction_id;
+  uint16_t command;
+  uint32_t transaction_id;
 };
 struct mtp_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t length;
- void *data;
+  size_t length;
+  void * data;
 };
 #define MTP_SEND_FILE _IOW('M', 0, struct mtp_file_range)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/usb/functionfs.h b/libc/kernel/uapi/linux/usb/functionfs.h
index 3ea185a..f3f4da4 100644
--- a/libc/kernel/uapi/linux/usb/functionfs.h
+++ b/libc/kernel/uapi/linux/usb/functionfs.h
@@ -23,59 +23,108 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/usb/ch9.h>
 enum {
- FUNCTIONFS_DESCRIPTORS_MAGIC = 1,
- FUNCTIONFS_STRINGS_MAGIC = 2
+  FUNCTIONFS_DESCRIPTORS_MAGIC = 1,
+  FUNCTIONFS_STRINGS_MAGIC = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FUNCTIONFS_DESCRIPTORS_MAGIC_V2 = 3,
+};
+enum functionfs_flags {
+  FUNCTIONFS_HAS_FS_DESC = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FUNCTIONFS_HAS_HS_DESC = 2,
+  FUNCTIONFS_HAS_SS_DESC = 4,
+  FUNCTIONFS_HAS_MS_OS_DESC = 8,
+  FUNCTIONFS_VIRTUAL_ADDR = 16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct usb_endpoint_descriptor_no_audio {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bEndpointAddress;
- __u8 bmAttributes;
- __le16 wMaxPacketSize;
- __u8 bInterval;
+  __u8 bEndpointAddress;
+  __u8 bmAttributes;
+  __le16 wMaxPacketSize;
+  __u8 bInterval;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
+struct usb_functionfs_descs_head_v2 {
+  __le32 magic;
+  __le32 length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __le32 flags;
+} __attribute__((packed));
 struct usb_functionfs_descs_head {
- __le32 magic;
- __le32 length;
+  __le32 magic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 fs_count;
- __le32 hs_count;
+  __le32 length;
+  __le32 fs_count;
+  __le32 hs_count;
+} __attribute__((packed, deprecated));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct usb_os_desc_header {
+  __u8 interface;
+  __le32 dwLength;
+  __le16 bcdVersion;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __le16 wIndex;
+  union {
+    struct {
+      __u8 bCount;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+      __u8 Reserved;
+    };
+    __le16 wCount;
+  };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
+struct usb_ext_compat_desc {
+  __u8 bFirstInterfaceNumber;
+  __u8 Reserved1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 CompatibleID[8];
+  __u8 SubCompatibleID[8];
+  __u8 Reserved2[6];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct usb_ext_prop_desc {
+  __le32 dwSize;
+  __le32 dwPropertyDataType;
+  __le16 wPropertyNameLength;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct usb_functionfs_strings_head {
+  __le32 magic;
+  __le32 length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 magic;
- __le32 length;
- __le32 str_count;
- __le32 lang_count;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __le32 str_count;
+  __le32 lang_count;
 } __attribute__((packed));
 enum usb_functionfs_event_type {
- FUNCTIONFS_BIND,
- FUNCTIONFS_UNBIND,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUNCTIONFS_ENABLE,
- FUNCTIONFS_DISABLE,
- FUNCTIONFS_SETUP,
- FUNCTIONFS_SUSPEND,
+  FUNCTIONFS_BIND,
+  FUNCTIONFS_UNBIND,
+  FUNCTIONFS_ENABLE,
+  FUNCTIONFS_DISABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FUNCTIONFS_RESUME
+  FUNCTIONFS_SETUP,
+  FUNCTIONFS_SUSPEND,
+  FUNCTIONFS_RESUME
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_functionfs_event {
- union {
+  union {
+    struct usb_ctrlrequest setup;
+  } __attribute__((packed)) u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct usb_ctrlrequest setup;
- } __attribute__((packed)) u;
- __u8 type;
- __u8 _pad[3];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 type;
+  __u8 _pad[3];
 } __attribute__((packed));
 #define FUNCTIONFS_FIFO_STATUS _IO('g', 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUNCTIONFS_FIFO_FLUSH _IO('g', 2)
 #define FUNCTIONFS_CLEAR_HALT _IO('g', 3)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUNCTIONFS_INTERFACE_REVMAP _IO('g', 128)
 #define FUNCTIONFS_ENDPOINT_REVMAP _IO('g', 129)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FUNCTIONFS_ENDPOINT_DESC _IOR('g', 130, struct usb_endpoint_descriptor)
 #endif
diff --git a/libc/kernel/uapi/linux/usb/gadgetfs.h b/libc/kernel/uapi/linux/usb/gadgetfs.h
index 4b6ca00..39da18a 100644
--- a/libc/kernel/uapi/linux/usb/gadgetfs.h
+++ b/libc/kernel/uapi/linux/usb/gadgetfs.h
@@ -23,21 +23,21 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/usb/ch9.h>
 enum usb_gadgetfs_event_type {
- GADGETFS_NOP = 0,
- GADGETFS_CONNECT,
+  GADGETFS_NOP = 0,
+  GADGETFS_CONNECT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GADGETFS_DISCONNECT,
- GADGETFS_SETUP,
- GADGETFS_SUSPEND,
+  GADGETFS_DISCONNECT,
+  GADGETFS_SETUP,
+  GADGETFS_SUSPEND,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_gadgetfs_event {
- union {
- enum usb_device_speed speed;
- struct usb_ctrlrequest setup;
+  union {
+    enum usb_device_speed speed;
+    struct usb_ctrlrequest setup;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } u;
- enum usb_gadgetfs_event_type type;
+  } u;
+  enum usb_gadgetfs_event_type type;
 };
 #define GADGETFS_FIFO_STATUS _IO('g', 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/usb/midi.h b/libc/kernel/uapi/linux/usb/midi.h
index 99c36f7..031116b 100644
--- a/libc/kernel/uapi/linux/usb/midi.h
+++ b/libc/kernel/uapi/linux/usb/midi.h
@@ -29,55 +29,57 @@
 #define USB_MS_EMBEDDED 0x01
 #define USB_MS_EXTERNAL 0x02
 struct usb_ms_header_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __le16 bcdMSC;
- __le16 wTotalLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __le16 bcdMSC;
+  __le16 wTotalLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 #define USB_DT_MS_HEADER_SIZE 7
 struct usb_midi_in_jack_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bJackType;
- __u8 bJackID;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bJackType;
+  __u8 bJackID;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 iJack;
-} __attribute__ ((packed));
+  __u8 iJack;
+} __attribute__((packed));
 #define USB_DT_MIDI_IN_SIZE 6
 struct usb_midi_source_pin {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 baSourceID;
- __u8 baSourcePin;
-} __attribute__ ((packed));
+  __u8 baSourceID;
+  __u8 baSourcePin;
+} __attribute__((packed));
 struct usb_midi_out_jack_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bJackType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bJackType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bJackID;
- __u8 bNrInputPins;
- struct usb_midi_source_pin pins[];
-} __attribute__ ((packed));
+  __u8 bJackID;
+  __u8 bNrInputPins;
+  struct usb_midi_source_pin pins[];
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_MIDI_OUT_SIZE(p) (7 + 2 * (p))
-#define DECLARE_USB_MIDI_OUT_JACK_DESCRIPTOR(p)  struct usb_midi_out_jack_descriptor_##p {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubtype;   __u8 bJackType;   __u8 bJackID;   __u8 bNrInputPins;   struct usb_midi_source_pin pins[p];   __u8 iJack;  } __attribute__ ((packed))
+#define DECLARE_USB_MIDI_OUT_JACK_DESCRIPTOR(p) struct usb_midi_out_jack_descriptor_ ##p { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bJackType; __u8 bJackID; __u8 bNrInputPins; struct usb_midi_source_pin pins[p]; __u8 iJack; \
+} __attribute__((packed))
 struct usb_ms_endpoint_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubtype;
- __u8 bNumEmbMIDIJack;
- __u8 baAssocJackID[];
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bNumEmbMIDIJack;
+  __u8 baAssocJackID[];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 #define USB_DT_MS_ENDPOINT_SIZE(n) (4 + (n))
-#define DECLARE_USB_MS_ENDPOINT_DESCRIPTOR(n)  struct usb_ms_endpoint_descriptor_##n {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubtype;   __u8 bNumEmbMIDIJack;   __u8 baAssocJackID[n];  } __attribute__ ((packed))
+#define DECLARE_USB_MS_ENDPOINT_DESCRIPTOR(n) struct usb_ms_endpoint_descriptor_ ##n { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bNumEmbMIDIJack; __u8 baAssocJackID[n]; \
+} __attribute__((packed))
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/usb/video.h b/libc/kernel/uapi/linux/usb/video.h
index 7abaead..ab10ed8 100644
--- a/libc/kernel/uapi/linux/usb/video.h
+++ b/libc/kernel/uapi/linux/usb/video.h
@@ -169,285 +169,292 @@
 #define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
 #define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
 struct uvc_descriptor_header {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
 } __attribute__((packed));
 struct uvc_header_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u16 bcdUVC;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u16 bcdUVC;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wTotalLength;
- __u32 dwClockFrequency;
- __u8 bInCollection;
- __u8 baInterfaceNr[];
+  __u16 wTotalLength;
+  __u32 dwClockFrequency;
+  __u8 bInCollection;
+  __u8 baInterfaceNr[];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((__packed__));
-#define UVC_DT_HEADER_SIZE(n) (12+(n))
-#define UVC_HEADER_DESCRIPTOR(n)   uvc_header_descriptor_##n
-#define DECLARE_UVC_HEADER_DESCRIPTOR(n)  struct UVC_HEADER_DESCRIPTOR(n) {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubType;   __u16 bcdUVC;   __u16 wTotalLength;   __u32 dwClockFrequency;   __u8 bInCollection;   __u8 baInterfaceNr[n];  } __attribute__ ((packed))
+#define UVC_DT_HEADER_SIZE(n) (12 + (n))
+#define UVC_HEADER_DESCRIPTOR(n) uvc_header_descriptor_ ##n
+#define DECLARE_UVC_HEADER_DESCRIPTOR(n) struct UVC_HEADER_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u16 bcdUVC; __u16 wTotalLength; __u32 dwClockFrequency; __u8 bInCollection; __u8 baInterfaceNr[n]; \
+} __attribute__((packed))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uvc_input_terminal_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bTerminalID;
- __u16 wTerminalType;
- __u8 bAssocTerminal;
- __u8 iTerminal;
+  __u8 bTerminalID;
+  __u16 wTerminalType;
+  __u8 bAssocTerminal;
+  __u8 iTerminal;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((__packed__));
 #define UVC_DT_INPUT_TERMINAL_SIZE 8
 struct uvc_output_terminal_descriptor {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u8 bTerminalID;
- __u16 wTerminalType;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bTerminalID;
+  __u16 wTerminalType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bAssocTerminal;
- __u8 bSourceID;
- __u8 iTerminal;
+  __u8 bAssocTerminal;
+  __u8 bSourceID;
+  __u8 iTerminal;
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UVC_DT_OUTPUT_TERMINAL_SIZE 9
 struct uvc_camera_terminal_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __u8 bTerminalID;
- __u16 wTerminalType;
- __u8 bAssocTerminal;
+  __u8 bDescriptorSubType;
+  __u8 bTerminalID;
+  __u16 wTerminalType;
+  __u8 bAssocTerminal;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 iTerminal;
- __u16 wObjectiveFocalLengthMin;
- __u16 wObjectiveFocalLengthMax;
- __u16 wOcularFocalLength;
+  __u8 iTerminal;
+  __u16 wObjectiveFocalLengthMin;
+  __u16 wObjectiveFocalLengthMax;
+  __u16 wOcularFocalLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bControlSize;
- __u8 bmControls[3];
+  __u8 bControlSize;
+  __u8 bmControls[3];
 } __attribute__((__packed__));
-#define UVC_DT_CAMERA_TERMINAL_SIZE(n) (15+(n))
+#define UVC_DT_CAMERA_TERMINAL_SIZE(n) (15 + (n))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uvc_selector_unit_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bUnitID;
- __u8 bNrInPins;
- __u8 baSourceID[0];
- __u8 iSelector;
+  __u8 bUnitID;
+  __u8 bNrInPins;
+  __u8 baSourceID[0];
+  __u8 iSelector;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((__packed__));
-#define UVC_DT_SELECTOR_UNIT_SIZE(n) (6+(n))
-#define UVC_SELECTOR_UNIT_DESCRIPTOR(n)   uvc_selector_unit_descriptor_##n
-#define DECLARE_UVC_SELECTOR_UNIT_DESCRIPTOR(n)  struct UVC_SELECTOR_UNIT_DESCRIPTOR(n) {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubType;   __u8 bUnitID;   __u8 bNrInPins;   __u8 baSourceID[n];   __u8 iSelector;  } __attribute__ ((packed))
+#define UVC_DT_SELECTOR_UNIT_SIZE(n) (6 + (n))
+#define UVC_SELECTOR_UNIT_DESCRIPTOR(n) uvc_selector_unit_descriptor_ ##n
+#define DECLARE_UVC_SELECTOR_UNIT_DESCRIPTOR(n) struct UVC_SELECTOR_UNIT_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bUnitID; __u8 bNrInPins; __u8 baSourceID[n]; __u8 iSelector; \
+} __attribute__((packed))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uvc_processing_unit_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bUnitID;
- __u8 bSourceID;
- __u16 wMaxMultiplier;
- __u8 bControlSize;
+  __u8 bUnitID;
+  __u8 bSourceID;
+  __u16 wMaxMultiplier;
+  __u8 bControlSize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmControls[2];
- __u8 iProcessing;
+  __u8 bmControls[2];
+  __u8 iProcessing;
 } __attribute__((__packed__));
-#define UVC_DT_PROCESSING_UNIT_SIZE(n) (9+(n))
+#define UVC_DT_PROCESSING_UNIT_SIZE(n) (9 + (n))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uvc_extension_unit_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bUnitID;
- __u8 guidExtensionCode[16];
- __u8 bNumControls;
- __u8 bNrInPins;
+  __u8 bUnitID;
+  __u8 guidExtensionCode[16];
+  __u8 bNumControls;
+  __u8 bNrInPins;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 baSourceID[0];
- __u8 bControlSize;
- __u8 bmControls[0];
- __u8 iExtension;
+  __u8 baSourceID[0];
+  __u8 bControlSize;
+  __u8 bmControls[0];
+  __u8 iExtension;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((__packed__));
-#define UVC_DT_EXTENSION_UNIT_SIZE(p, n) (24+(p)+(n))
-#define UVC_EXTENSION_UNIT_DESCRIPTOR(p, n)   uvc_extension_unit_descriptor_##p_##n
-#define DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(p, n)  struct UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubType;   __u8 bUnitID;   __u8 guidExtensionCode[16];   __u8 bNumControls;   __u8 bNrInPins;   __u8 baSourceID[p];   __u8 bControlSize;   __u8 bmControls[n];   __u8 iExtension;  } __attribute__ ((packed))
+#define UVC_DT_EXTENSION_UNIT_SIZE(p,n) (24 + (p) + (n))
+#define UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) uvc_extension_unit_descriptor_ ##p_ ##n
+#define DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) struct UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bUnitID; __u8 guidExtensionCode[16]; __u8 bNumControls; __u8 bNrInPins; __u8 baSourceID[p]; __u8 bControlSize; __u8 bmControls[n]; __u8 iExtension; \
+} __attribute__((packed))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uvc_control_endpoint_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wMaxTransferSize;
+  __u16 wMaxTransferSize;
 } __attribute__((__packed__));
 #define UVC_DT_CONTROL_ENDPOINT_SIZE 5
 struct uvc_input_header_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u8 bNumFormats;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bNumFormats;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wTotalLength;
- __u8 bEndpointAddress;
- __u8 bmInfo;
- __u8 bTerminalLink;
+  __u16 wTotalLength;
+  __u8 bEndpointAddress;
+  __u8 bmInfo;
+  __u8 bTerminalLink;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bStillCaptureMethod;
- __u8 bTriggerSupport;
- __u8 bTriggerUsage;
- __u8 bControlSize;
+  __u8 bStillCaptureMethod;
+  __u8 bTriggerSupport;
+  __u8 bTriggerUsage;
+  __u8 bControlSize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bmaControls[];
+  __u8 bmaControls[];
 } __attribute__((__packed__));
-#define UVC_DT_INPUT_HEADER_SIZE(n, p) (13+(n*p))
-#define UVC_INPUT_HEADER_DESCRIPTOR(n, p)   uvc_input_header_descriptor_##n_##p
+#define UVC_DT_INPUT_HEADER_SIZE(n,p) (13 + (n * p))
+#define UVC_INPUT_HEADER_DESCRIPTOR(n,p) uvc_input_header_descriptor_ ##n_ ##p
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n, p)  struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubType;   __u8 bNumFormats;   __u16 wTotalLength;   __u8 bEndpointAddress;   __u8 bmInfo;   __u8 bTerminalLink;   __u8 bStillCaptureMethod;   __u8 bTriggerSupport;   __u8 bTriggerUsage;   __u8 bControlSize;   __u8 bmaControls[p][n];  } __attribute__ ((packed))
+#define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n,p) struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __u16 wTotalLength; __u8 bEndpointAddress; __u8 bmInfo; __u8 bTerminalLink; __u8 bStillCaptureMethod; __u8 bTriggerSupport; __u8 bTriggerUsage; __u8 bControlSize; __u8 bmaControls[p][n]; \
+} __attribute__((packed))
 struct uvc_output_header_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __u8 bNumFormats;
- __u16 wTotalLength;
- __u8 bEndpointAddress;
+  __u8 bDescriptorSubType;
+  __u8 bNumFormats;
+  __u16 wTotalLength;
+  __u8 bEndpointAddress;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bTerminalLink;
- __u8 bControlSize;
- __u8 bmaControls[];
+  __u8 bTerminalLink;
+  __u8 bControlSize;
+  __u8 bmaControls[];
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define UVC_DT_OUTPUT_HEADER_SIZE(n, p) (9+(n*p))
-#define UVC_OUTPUT_HEADER_DESCRIPTOR(n, p)   uvc_output_header_descriptor_##n_##p
-#define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n, p)  struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubType;   __u8 bNumFormats;   __u16 wTotalLength;   __u8 bEndpointAddress;   __u8 bTerminalLink;   __u8 bControlSize;   __u8 bmaControls[p][n];  } __attribute__ ((packed))
+#define UVC_DT_OUTPUT_HEADER_SIZE(n,p) (9 + (n * p))
+#define UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) uvc_output_header_descriptor_ ##n_ ##p
+#define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __u16 wTotalLength; __u8 bEndpointAddress; __u8 bTerminalLink; __u8 bControlSize; __u8 bmaControls[p][n]; \
+} __attribute__((packed))
 struct uvc_color_matching_descriptor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u8 bColorPrimaries;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bColorPrimaries;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bTransferCharacteristics;
- __u8 bMatrixCoefficients;
+  __u8 bTransferCharacteristics;
+  __u8 bMatrixCoefficients;
 } __attribute__((__packed__));
 #define UVC_DT_COLOR_MATCHING_SIZE 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uvc_streaming_control {
- __u16 bmHint;
- __u8 bFormatIndex;
- __u8 bFrameIndex;
+  __u16 bmHint;
+  __u8 bFormatIndex;
+  __u8 bFrameIndex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dwFrameInterval;
- __u16 wKeyFrameRate;
- __u16 wPFrameRate;
- __u16 wCompQuality;
+  __u32 dwFrameInterval;
+  __u16 wKeyFrameRate;
+  __u16 wPFrameRate;
+  __u16 wCompQuality;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wCompWindowSize;
- __u16 wDelay;
- __u32 dwMaxVideoFrameSize;
- __u32 dwMaxPayloadTransferSize;
+  __u16 wCompWindowSize;
+  __u16 wDelay;
+  __u32 dwMaxVideoFrameSize;
+  __u32 dwMaxPayloadTransferSize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dwClockFrequency;
- __u8 bmFramingInfo;
- __u8 bPreferedVersion;
- __u8 bMinVersion;
+  __u32 dwClockFrequency;
+  __u8 bmFramingInfo;
+  __u8 bPreferedVersion;
+  __u8 bMinVersion;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bMaxVersion;
+  __u8 bMaxVersion;
 } __attribute__((__packed__));
 struct uvc_format_uncompressed {
- __u8 bLength;
+  __u8 bLength;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u8 bFormatIndex;
- __u8 bNumFrameDescriptors;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bFormatIndex;
+  __u8 bNumFrameDescriptors;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 guidFormat[16];
- __u8 bBitsPerPixel;
- __u8 bDefaultFrameIndex;
- __u8 bAspectRatioX;
+  __u8 guidFormat[16];
+  __u8 bBitsPerPixel;
+  __u8 bDefaultFrameIndex;
+  __u8 bAspectRatioX;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bAspectRatioY;
- __u8 bmInterfaceFlags;
- __u8 bCopyProtect;
+  __u8 bAspectRatioY;
+  __u8 bmInterfaceFlags;
+  __u8 bCopyProtect;
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UVC_DT_FORMAT_UNCOMPRESSED_SIZE 27
 struct uvc_frame_uncompressed {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __u8 bFrameIndex;
- __u8 bmCapabilities;
- __u16 wWidth;
+  __u8 bDescriptorSubType;
+  __u8 bFrameIndex;
+  __u8 bmCapabilities;
+  __u16 wWidth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wHeight;
- __u32 dwMinBitRate;
- __u32 dwMaxBitRate;
- __u32 dwMaxVideoFrameBufferSize;
+  __u16 wHeight;
+  __u32 dwMinBitRate;
+  __u32 dwMaxBitRate;
+  __u32 dwMaxVideoFrameBufferSize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dwDefaultFrameInterval;
- __u8 bFrameIntervalType;
- __u32 dwFrameInterval[];
+  __u32 dwDefaultFrameInterval;
+  __u8 bFrameIntervalType;
+  __u32 dwFrameInterval[];
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26+4*(n))
-#define UVC_FRAME_UNCOMPRESSED(n)   uvc_frame_uncompressed_##n
-#define DECLARE_UVC_FRAME_UNCOMPRESSED(n)  struct UVC_FRAME_UNCOMPRESSED(n) {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubType;   __u8 bFrameIndex;   __u8 bmCapabilities;   __u16 wWidth;   __u16 wHeight;   __u32 dwMinBitRate;   __u32 dwMaxBitRate;   __u32 dwMaxVideoFrameBufferSize;   __u32 dwDefaultFrameInterval;   __u8 bFrameIntervalType;   __u32 dwFrameInterval[n];  } __attribute__ ((packed))
+#define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26 + 4 * (n))
+#define UVC_FRAME_UNCOMPRESSED(n) uvc_frame_uncompressed_ ##n
+#define DECLARE_UVC_FRAME_UNCOMPRESSED(n) struct UVC_FRAME_UNCOMPRESSED(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __u16 wWidth; __u16 wHeight; __u32 dwMinBitRate; __u32 dwMaxBitRate; __u32 dwMaxVideoFrameBufferSize; __u32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __u32 dwFrameInterval[n]; \
+} __attribute__((packed))
 struct uvc_format_mjpeg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
- __u8 bFormatIndex;
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bFormatIndex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bNumFrameDescriptors;
- __u8 bmFlags;
- __u8 bDefaultFrameIndex;
- __u8 bAspectRatioX;
+  __u8 bNumFrameDescriptors;
+  __u8 bmFlags;
+  __u8 bDefaultFrameIndex;
+  __u8 bAspectRatioX;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bAspectRatioY;
- __u8 bmInterfaceFlags;
- __u8 bCopyProtect;
+  __u8 bAspectRatioY;
+  __u8 bmInterfaceFlags;
+  __u8 bCopyProtect;
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UVC_DT_FORMAT_MJPEG_SIZE 11
 struct uvc_frame_mjpeg {
- __u8 bLength;
- __u8 bDescriptorType;
+  __u8 bLength;
+  __u8 bDescriptorType;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 bDescriptorSubType;
- __u8 bFrameIndex;
- __u8 bmCapabilities;
- __u16 wWidth;
+  __u8 bDescriptorSubType;
+  __u8 bFrameIndex;
+  __u8 bmCapabilities;
+  __u16 wWidth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wHeight;
- __u32 dwMinBitRate;
- __u32 dwMaxBitRate;
- __u32 dwMaxVideoFrameBufferSize;
+  __u16 wHeight;
+  __u32 dwMinBitRate;
+  __u32 dwMaxBitRate;
+  __u32 dwMaxVideoFrameBufferSize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dwDefaultFrameInterval;
- __u8 bFrameIntervalType;
- __u32 dwFrameInterval[];
+  __u32 dwDefaultFrameInterval;
+  __u8 bFrameIntervalType;
+  __u32 dwFrameInterval[];
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define UVC_DT_FRAME_MJPEG_SIZE(n) (26+4*(n))
-#define UVC_FRAME_MJPEG(n)   uvc_frame_mjpeg_##n
-#define DECLARE_UVC_FRAME_MJPEG(n)  struct UVC_FRAME_MJPEG(n) {   __u8 bLength;   __u8 bDescriptorType;   __u8 bDescriptorSubType;   __u8 bFrameIndex;   __u8 bmCapabilities;   __u16 wWidth;   __u16 wHeight;   __u32 dwMinBitRate;   __u32 dwMaxBitRate;   __u32 dwMaxVideoFrameBufferSize;   __u32 dwDefaultFrameInterval;   __u8 bFrameIntervalType;   __u32 dwFrameInterval[n];  } __attribute__ ((packed))
+#define UVC_DT_FRAME_MJPEG_SIZE(n) (26 + 4 * (n))
+#define UVC_FRAME_MJPEG(n) uvc_frame_mjpeg_ ##n
+#define DECLARE_UVC_FRAME_MJPEG(n) struct UVC_FRAME_MJPEG(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __u16 wWidth; __u16 wHeight; __u32 dwMinBitRate; __u32 dwMaxBitRate; __u32 dwMaxVideoFrameBufferSize; __u32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __u32 dwFrameInterval[n]; \
+} __attribute__((packed))
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/usbdevice_fs.h b/libc/kernel/uapi/linux/usbdevice_fs.h
index 0c1781d..0aa2062 100644
--- a/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -22,43 +22,43 @@
 #include <linux/magic.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usbdevfs_ctrltransfer {
- __u8 bRequestType;
- __u8 bRequest;
- __u16 wValue;
+  __u8 bRequestType;
+  __u8 bRequest;
+  __u16 wValue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 wIndex;
- __u16 wLength;
- __u32 timeout;
- void __user *data;
+  __u16 wIndex;
+  __u16 wLength;
+  __u32 timeout;
+  void __user * data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct usbdevfs_bulktransfer {
- unsigned int ep;
- unsigned int len;
+  unsigned int ep;
+  unsigned int len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int timeout;
- void __user *data;
+  unsigned int timeout;
+  void __user * data;
 };
 struct usbdevfs_setinterface {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int interface;
- unsigned int altsetting;
+  unsigned int interface;
+  unsigned int altsetting;
 };
 struct usbdevfs_disconnectsignal {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int signr;
- void __user *context;
+  unsigned int signr;
+  void __user * context;
 };
 #define USBDEVFS_MAXDRIVERNAME 255
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usbdevfs_getdriver {
- unsigned int interface;
- char driver[USBDEVFS_MAXDRIVERNAME + 1];
+  unsigned int interface;
+  char driver[USBDEVFS_MAXDRIVERNAME + 1];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usbdevfs_connectinfo {
- unsigned int devnum;
- unsigned char slow;
+  unsigned int devnum;
+  unsigned char slow;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_URB_SHORT_NOT_OK 0x01
@@ -74,54 +74,64 @@
 #define USBDEVFS_URB_TYPE_CONTROL 2
 #define USBDEVFS_URB_TYPE_BULK 3
 struct usbdevfs_iso_packet_desc {
- unsigned int length;
+  unsigned int length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int actual_length;
- unsigned int status;
+  unsigned int actual_length;
+  unsigned int status;
 };
 struct usbdevfs_urb {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char type;
- unsigned char endpoint;
- int status;
- unsigned int flags;
+  unsigned char type;
+  unsigned char endpoint;
+  int status;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *buffer;
- int buffer_length;
- int actual_length;
- int start_frame;
+  void __user * buffer;
+  int buffer_length;
+  int actual_length;
+  int start_frame;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int number_of_packets;
- int error_count;
- unsigned int signr;
- void __user *usercontext;
+  union {
+    int number_of_packets;
+    unsigned int stream_id;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  int error_count;
+  unsigned int signr;
+  void __user * usercontext;
+  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct usbdevfs_ioctl {
- int ifno;
+  int ifno;
+  int ioctl_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int ioctl_code;
- void __user *data;
+  void __user * data;
 };
 struct usbdevfs_hub_portinfo {
+  char nports;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char nports;
- char port [127];
+  char port[127];
 };
 #define USBDEVFS_CAP_ZERO_PACKET 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_CAP_BULK_CONTINUATION 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_CAP_NO_PACKET_SIZE_LIM 0x04
 #define USBDEVFS_CAP_BULK_SCATTER_GATHER 0x08
 #define USBDEVFS_DISCONNECT_CLAIM_IF_DRIVER 0x01
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_DISCONNECT_CLAIM_EXCEPT_DRIVER 0x02
-struct usbdevfs_disconnect_claim {
- unsigned int interface;
- unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char driver[USBDEVFS_MAXDRIVERNAME + 1];
+struct usbdevfs_disconnect_claim {
+  unsigned int interface;
+  unsigned int flags;
+  char driver[USBDEVFS_MAXDRIVERNAME + 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct usbdevfs_streams {
+  unsigned int num_streams;
+  unsigned int num_eps;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char eps[0];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
@@ -162,4 +172,7 @@
 #define USBDEVFS_GET_CAPABILITIES _IOR('U', 26, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_DISCONNECT_CLAIM _IOR('U', 27, struct usbdevfs_disconnect_claim)
+#define USBDEVFS_ALLOC_STREAMS _IOR('U', 28, struct usbdevfs_streams)
+#define USBDEVFS_FREE_STREAMS _IOR('U', 29, struct usbdevfs_streams)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/usbip.h b/libc/kernel/uapi/linux/usbip.h
new file mode 100644
index 0000000..edda8c8
--- /dev/null
+++ b/libc/kernel/uapi/linux/usbip.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_USBIP_H
+#define _UAPI_LINUX_USBIP_H
+enum usbip_device_status {
+  SDEV_ST_AVAILABLE = 0x01,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SDEV_ST_USED,
+  SDEV_ST_ERROR,
+  VDEV_ST_NULL,
+  VDEV_ST_NOTASSIGNED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VDEV_ST_USED,
+  VDEV_ST_ERROR
+};
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/utime.h b/libc/kernel/uapi/linux/utime.h
index 4cc0617..2e98a3d 100644
--- a/libc/kernel/uapi/linux/utime.h
+++ b/libc/kernel/uapi/linux/utime.h
@@ -21,8 +21,8 @@
 #include <linux/types.h>
 struct utimbuf {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_time_t actime;
- __kernel_time_t modtime;
+  __kernel_time_t actime;
+  __kernel_time_t modtime;
 };
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/utsname.h b/libc/kernel/uapi/linux/utsname.h
index ee5ee97..4447d18 100644
--- a/libc/kernel/uapi/linux/utsname.h
+++ b/libc/kernel/uapi/linux/utsname.h
@@ -21,31 +21,31 @@
 #define __OLD_UTS_LEN 8
 struct oldold_utsname {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char sysname[9];
- char nodename[9];
- char release[9];
- char version[9];
+  char sysname[9];
+  char nodename[9];
+  char release[9];
+  char version[9];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char machine[9];
+  char machine[9];
 };
 #define __NEW_UTS_LEN 64
 struct old_utsname {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char sysname[65];
- char nodename[65];
- char release[65];
- char version[65];
+  char sysname[65];
+  char nodename[65];
+  char release[65];
+  char version[65];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char machine[65];
+  char machine[65];
 };
 struct new_utsname {
- char sysname[__NEW_UTS_LEN + 1];
+  char sysname[__NEW_UTS_LEN + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char nodename[__NEW_UTS_LEN + 1];
- char release[__NEW_UTS_LEN + 1];
- char version[__NEW_UTS_LEN + 1];
- char machine[__NEW_UTS_LEN + 1];
+  char nodename[__NEW_UTS_LEN + 1];
+  char release[__NEW_UTS_LEN + 1];
+  char version[__NEW_UTS_LEN + 1];
+  char machine[__NEW_UTS_LEN + 1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char domainname[__NEW_UTS_LEN + 1];
+  char domainname[__NEW_UTS_LEN + 1];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/uuid.h b/libc/kernel/uapi/linux/uuid.h
index 5c29809..cc86fc3 100644
--- a/libc/kernel/uapi/linux/uuid.h
+++ b/libc/kernel/uapi/linux/uuid.h
@@ -22,15 +22,19 @@
 #include <linux/string.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
- __u8 b[16];
+  __u8 b[16];
 } uuid_le;
 typedef struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 b[16];
+  __u8 b[16];
 } uuid_be;
-#define UUID_LE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)  ((uuid_le)  {{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff,   (b) & 0xff, ((b) >> 8) & 0xff,   (c) & 0xff, ((c) >> 8) & 0xff,   (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
-#define UUID_BE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)  ((uuid_be)  {{ ((a) >> 24) & 0xff, ((a) >> 16) & 0xff, ((a) >> 8) & 0xff, (a) & 0xff,   ((b) >> 8) & 0xff, (b) & 0xff,   ((c) >> 8) & 0xff, (c) & 0xff,   (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
+#define UUID_LE(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \
+((uuid_le) \
+{ { (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, (b) & 0xff, ((b) >> 8) & 0xff, (c) & 0xff, ((c) >> 8) & 0xff, (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) } })
+#define UUID_BE(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \
+((uuid_be) \
+{ { ((a) >> 24) & 0xff, ((a) >> 16) & 0xff, ((a) >> 8) & 0xff, (a) & 0xff, ((b) >> 8) & 0xff, (b) & 0xff, ((c) >> 8) & 0xff, (c) & 0xff, (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) } })
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define NULL_UUID_LE   UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00)
-#define NULL_UUID_BE   UUID_BE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00)
+#define NULL_UUID_LE UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
+#define NULL_UUID_BE UUID_BE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
 #endif
diff --git a/libc/kernel/uapi/linux/uvcvideo.h b/libc/kernel/uapi/linux/uvcvideo.h
index 3eebe17..7246e32 100644
--- a/libc/kernel/uapi/linux/uvcvideo.h
+++ b/libc/kernel/uapi/linux/uvcvideo.h
@@ -38,36 +38,36 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UVC_CTRL_FLAG_RESTORE (1 << 6)
 #define UVC_CTRL_FLAG_AUTO_UPDATE (1 << 7)
-#define UVC_CTRL_FLAG_GET_RANGE   (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN |   UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES |   UVC_CTRL_FLAG_GET_DEF)
+#define UVC_CTRL_FLAG_GET_RANGE (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | UVC_CTRL_FLAG_GET_DEF)
 struct uvc_menu_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 value;
- __u8 name[32];
+  __u32 value;
+  __u8 name[32];
 };
 struct uvc_xu_control_mapping {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u8 name[32];
- __u8 entity[16];
- __u8 selector;
+  __u32 id;
+  __u8 name[32];
+  __u8 entity[16];
+  __u8 selector;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 size;
- __u8 offset;
- __u32 v4l2_type;
- __u32 data_type;
+  __u8 size;
+  __u8 offset;
+  __u32 v4l2_type;
+  __u32 data_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct uvc_menu_info __user *menu_info;
- __u32 menu_count;
- __u32 reserved[4];
+  struct uvc_menu_info __user * menu_info;
+  __u32 menu_count;
+  __u32 reserved[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uvc_xu_control_query {
- __u8 unit;
- __u8 selector;
- __u8 query;
+  __u8 unit;
+  __u8 selector;
+  __u8 query;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 size;
- __u8 __user *data;
+  __u16 size;
+  __u8 __user * data;
 };
 #define UVCIOC_CTRL_MAP _IOWR('u', 0x20, struct uvc_xu_control_mapping)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/v4l2-common.h b/libc/kernel/uapi/linux/v4l2-common.h
index 814d960..a379a7e 100644
--- a/libc/kernel/uapi/linux/v4l2-common.h
+++ b/libc/kernel/uapi/linux/v4l2-common.h
@@ -18,28 +18,38 @@
  ****************************************************************************/
 #ifndef __V4L2_COMMON__
 #define __V4L2_COMMON__
+#include <linux/types.h>
 #define V4L2_SEL_TGT_CROP 0x0000
-#define V4L2_SEL_TGT_CROP_DEFAULT 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_SEL_TGT_CROP_DEFAULT 0x0001
 #define V4L2_SEL_TGT_CROP_BOUNDS 0x0002
 #define V4L2_SEL_TGT_COMPOSE 0x0100
 #define V4L2_SEL_TGT_COMPOSE_DEFAULT 0x0101
-#define V4L2_SEL_TGT_COMPOSE_BOUNDS 0x0102
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_SEL_TGT_COMPOSE_BOUNDS 0x0102
 #define V4L2_SEL_TGT_COMPOSE_PADDED 0x0103
 #define V4L2_SEL_TGT_CROP_ACTIVE V4L2_SEL_TGT_CROP
 #define V4L2_SEL_TGT_COMPOSE_ACTIVE V4L2_SEL_TGT_COMPOSE
-#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL V4L2_SEL_TGT_CROP
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL V4L2_SEL_TGT_CROP
 #define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE
 #define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS V4L2_SEL_TGT_CROP_BOUNDS
 #define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS
-#define V4L2_SEL_FLAG_GE (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_SEL_FLAG_GE (1 << 0)
 #define V4L2_SEL_FLAG_LE (1 << 1)
 #define V4L2_SEL_FLAG_KEEP_CONFIG (1 << 2)
 #define V4L2_SUBDEV_SEL_FLAG_SIZE_GE V4L2_SEL_FLAG_GE
-#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE V4L2_SEL_FLAG_LE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE V4L2_SEL_FLAG_LE
 #define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG
+struct v4l2_edid {
+  __u32 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 start_block;
+  __u32 blocks;
+  __u32 reserved[5];
+  __u8 * edid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 2236ff7..024aa4d 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -31,900 +31,964 @@
 #define V4L2_CTRL_CLASS_DV 0x00a00000
 #define V4L2_CTRL_CLASS_FM_RX 0x00a10000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000
+#define V4L2_CTRL_CLASS_DETECT 0x00a30000
 #define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
 #define V4L2_CID_USER_BASE V4L2_CID_BASE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
-#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
+#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE + 0)
+#define V4L2_CID_CONTRAST (V4L2_CID_BASE + 1)
+#define V4L2_CID_SATURATION (V4L2_CID_BASE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
-#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
-#define V4L2_CID_HUE (V4L2_CID_BASE+3)
-#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
+#define V4L2_CID_HUE (V4L2_CID_BASE + 3)
+#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE + 5)
+#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE + 6)
+#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE + 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
-#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
-#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
-#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
+#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE + 8)
+#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE + 9)
+#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE + 10)
+#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE + 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
-#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)
-#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
-#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
+#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE + 12)
+#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE + 13)
+#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE + 14)
+#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE + 15)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
-#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
-#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
+#define V4L2_CID_GAMMA (V4L2_CID_BASE + 16)
 #define V4L2_CID_WHITENESS (V4L2_CID_GAMMA)
+#define V4L2_CID_EXPOSURE (V4L2_CID_BASE + 17)
+#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE + 18)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
-#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
-#define V4L2_CID_GAIN (V4L2_CID_BASE+19)
-#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
+#define V4L2_CID_GAIN (V4L2_CID_BASE + 19)
+#define V4L2_CID_HFLIP (V4L2_CID_BASE + 20)
+#define V4L2_CID_VFLIP (V4L2_CID_BASE + 21)
+#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE + 24)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
-#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
 enum v4l2_power_line_frequency {
- V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
+  V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
+  V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
+  V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
- V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
- V4L2_CID_POWER_LINE_FREQUENCY_AUTO = 3,
+  V4L2_CID_POWER_LINE_FREQUENCY_AUTO = 3,
 };
+#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE + 25)
+#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE + 26)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
-#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
-#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
-#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
+#define V4L2_CID_SHARPNESS (V4L2_CID_BASE + 27)
+#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE + 28)
+#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE + 29)
+#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE + 30)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
-#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
-#define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
+#define V4L2_CID_COLORFX (V4L2_CID_BASE + 31)
 enum v4l2_colorfx {
+  V4L2_COLORFX_NONE = 0,
+  V4L2_COLORFX_BW = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_COLORFX_NONE = 0,
- V4L2_COLORFX_BW = 1,
- V4L2_COLORFX_SEPIA = 2,
- V4L2_COLORFX_NEGATIVE = 3,
+  V4L2_COLORFX_SEPIA = 2,
+  V4L2_COLORFX_NEGATIVE = 3,
+  V4L2_COLORFX_EMBOSS = 4,
+  V4L2_COLORFX_SKETCH = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_COLORFX_EMBOSS = 4,
- V4L2_COLORFX_SKETCH = 5,
- V4L2_COLORFX_SKY_BLUE = 6,
- V4L2_COLORFX_GRASS_GREEN = 7,
+  V4L2_COLORFX_SKY_BLUE = 6,
+  V4L2_COLORFX_GRASS_GREEN = 7,
+  V4L2_COLORFX_SKIN_WHITEN = 8,
+  V4L2_COLORFX_VIVID = 9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_COLORFX_SKIN_WHITEN = 8,
- V4L2_COLORFX_VIVID = 9,
- V4L2_COLORFX_AQUA = 10,
- V4L2_COLORFX_ART_FREEZE = 11,
+  V4L2_COLORFX_AQUA = 10,
+  V4L2_COLORFX_ART_FREEZE = 11,
+  V4L2_COLORFX_SILHOUETTE = 12,
+  V4L2_COLORFX_SOLARIZATION = 13,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_COLORFX_SILHOUETTE = 12,
- V4L2_COLORFX_SOLARIZATION = 13,
- V4L2_COLORFX_ANTIQUE = 14,
- V4L2_COLORFX_SET_CBCR = 15,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_COLORFX_ANTIQUE = 14,
+  V4L2_COLORFX_SET_CBCR = 15,
 };
-#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
-#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
-#define V4L2_CID_ROTATE (V4L2_CID_BASE+34)
+#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE + 32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35)
-#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36)
-#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37)
-#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38)
+#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE + 33)
+#define V4L2_CID_ROTATE (V4L2_CID_BASE + 34)
+#define V4L2_CID_BG_COLOR (V4L2_CID_BASE + 35)
+#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE + 36)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (V4L2_CID_BASE+39)
-#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE+40)
-#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41)
-#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42)
+#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE + 37)
+#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE + 38)
+#define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (V4L2_CID_BASE + 39)
+#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE + 40)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43)
+#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE + 41)
+#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE + 42)
+#define V4L2_CID_LASTP1 (V4L2_CID_BASE + 43)
 #define V4L2_CID_USER_MEYE_BASE (V4L2_CID_USER_BASE + 0x1000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_USER_BTTV_BASE (V4L2_CID_USER_BASE + 0x1010)
 #define V4L2_CID_USER_S2255_BASE (V4L2_CID_USER_BASE + 0x1030)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_USER_SI476X_BASE (V4L2_CID_USER_BASE + 0x1040)
 #define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_USER_BASE + 0x1050)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_USER_SAA7134_BASE (V4L2_CID_USER_BASE + 0x1060)
 #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
-#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
+#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_stream_type {
- V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0,
+  V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0,
+  V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1,
+  V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1,
- V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2,
- V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3,
- V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5,
+  V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3,
+  V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4,
+  V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5,
 };
-#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
-#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
-#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
-#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
-#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
+#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE + 1)
+#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE + 2)
+#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE + 3)
+#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE + 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)
+#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE + 5)
+#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE + 6)
+#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE + 7)
 enum v4l2_mpeg_stream_vbi_fmt {
- V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,
- V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,
+  V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,
 };
-#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
+#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE + 100)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_audio_sampling_freq {
- V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
+  V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
+  V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
+  V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
- V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE + 101)
 enum v4l2_mpeg_audio_encoding {
- V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
- V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
- V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
+  V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
- V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
+  V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
+  V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
+  V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
+  V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE + 102)
 enum v4l2_mpeg_audio_l1_bitrate {
- V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
- V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
- V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
+  V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
- V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
- V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
- V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
+  V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
+  V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
+  V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
+  V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
- V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
- V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
- V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
+  V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
+  V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
+  V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
+  V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
- V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
- V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
+  V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
+  V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
+  V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
+  V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
+#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE + 103)
 enum v4l2_mpeg_audio_l2_bitrate {
- V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
- V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
- V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
- V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
- V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
+  V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
+  V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
+  V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
- V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
- V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
- V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
+  V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
+  V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
+  V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
+  V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
- V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
- V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
- V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
+  V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
+  V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
+  V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
+  V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
+  V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
+#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE + 104)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_audio_l3_bitrate {
- V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
+  V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
- V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
- V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
- V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
+  V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
+  V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
+  V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
+  V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
- V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
- V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
- V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
+  V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
+  V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
+  V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
+  V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
- V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
- V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
- V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
+  V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
+  V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
+  V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE + 105)
 enum v4l2_mpeg_audio_mode {
+  V4L2_MPEG_AUDIO_MODE_STEREO = 0,
+  V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_MODE_STEREO = 0,
- V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
- V4L2_MPEG_AUDIO_MODE_DUAL = 2,
- V4L2_MPEG_AUDIO_MODE_MONO = 3,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MPEG_AUDIO_MODE_DUAL = 2,
+  V4L2_MPEG_AUDIO_MODE_MONO = 3,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
+#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE + 106)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_audio_mode_extension {
- V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
- V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
- V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
+#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE + 107)
 enum v4l2_mpeg_audio_emphasis {
- V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
- V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
+  V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
+  V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
+  V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE + 108)
 enum v4l2_mpeg_audio_crc {
+  V4L2_MPEG_AUDIO_CRC_NONE = 0,
+  V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_CRC_NONE = 0,
- V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
 };
-#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
+#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE + 109)
+#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE + 110)
+#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE + 111)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)
-#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)
 enum v4l2_mpeg_audio_ac3_bitrate {
- V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
- V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
- V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
- V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
- V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
- V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
- V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
- V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
- V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
- V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
- V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
- V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
- V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
- V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
 };
-#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_MPEG_BASE+112)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_MPEG_BASE + 112)
 enum v4l2_mpeg_audio_dec_playback {
- V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
- V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
- V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT = 2,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT = 3,
- V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
- V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT = 2,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT = 3,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
 };
+#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE + 113)
+#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE + 200)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE+113)
-#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
 enum v4l2_mpeg_video_encoding {
- V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
+  V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
+  V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
+  V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
- V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE + 201)
 enum v4l2_mpeg_video_aspect {
- V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
- V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
- V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
+  V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
+  V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
+  V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
+  V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
-#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
-#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
-#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
+#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE + 202)
+#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE + 203)
+#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE + 204)
+#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE + 205)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE + 206)
 enum v4l2_mpeg_video_bitrate_mode {
+  V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
+  V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
- V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
+#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE + 207)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE + 208)
+#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE + 209)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
-#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
-#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)
-#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)
+#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE + 210)
+#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE + 211)
+#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE + 212)
+#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE + 213)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE+212)
-#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE+213)
-#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE+214)
-#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE+215)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE+216)
+#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE + 214)
+#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE + 215)
+#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE + 216)
 enum v4l2_mpeg_video_header_mode {
- V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
- V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
+  V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE+217)
-#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE+218)
-#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE+219)
+#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE + 217)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE+220)
-#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+221)
+#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE + 218)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE + 219)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE + 220)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE + 221)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_video_multi_slice_mode {
- V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
+  V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
+  V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
+  V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
- V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222)
+#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE + 222)
+#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE + 223)
+#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE + 224)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223)
-#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224)
-#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE+225)
-#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_MPEG_BASE+226)
+#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE + 225)
+#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_MPEG_BASE + 226)
+#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_MPEG_BASE + 227)
+#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_MPEG_BASE + 228)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)
-#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)
-#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+302)
-#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE+303)
+#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE + 300)
+#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE + 301)
+#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE + 302)
+#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE + 303)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE+304)
-#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE+350)
-#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE+351)
-#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE+352)
+#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE + 304)
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE + 350)
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE + 351)
+#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE + 352)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE+353)
-#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE+354)
-#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE+355)
-#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE+356)
+#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE + 353)
+#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE + 354)
+#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE + 355)
+#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE + 356)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE+357)
+#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE + 357)
 enum v4l2_mpeg_video_h264_entropy_mode {
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
+  V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
+  V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE+358)
-#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE+359)
+#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE + 358)
+#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE + 359)
 enum v4l2_mpeg_video_h264_level {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
- V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
- V4L2_MPEG_VIDEO_H264_LEVEL_1_1 = 2,
- V4L2_MPEG_VIDEO_H264_LEVEL_1_2 = 3,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_1 = 2,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_2 = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_LEVEL_1_3 = 4,
- V4L2_MPEG_VIDEO_H264_LEVEL_2_0 = 5,
- V4L2_MPEG_VIDEO_H264_LEVEL_2_1 = 6,
- V4L2_MPEG_VIDEO_H264_LEVEL_2_2 = 7,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_3 = 4,
+  V4L2_MPEG_VIDEO_H264_LEVEL_2_0 = 5,
+  V4L2_MPEG_VIDEO_H264_LEVEL_2_1 = 6,
+  V4L2_MPEG_VIDEO_H264_LEVEL_2_2 = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_LEVEL_3_0 = 8,
- V4L2_MPEG_VIDEO_H264_LEVEL_3_1 = 9,
- V4L2_MPEG_VIDEO_H264_LEVEL_3_2 = 10,
- V4L2_MPEG_VIDEO_H264_LEVEL_4_0 = 11,
+  V4L2_MPEG_VIDEO_H264_LEVEL_3_0 = 8,
+  V4L2_MPEG_VIDEO_H264_LEVEL_3_1 = 9,
+  V4L2_MPEG_VIDEO_H264_LEVEL_3_2 = 10,
+  V4L2_MPEG_VIDEO_H264_LEVEL_4_0 = 11,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_LEVEL_4_1 = 12,
- V4L2_MPEG_VIDEO_H264_LEVEL_4_2 = 13,
- V4L2_MPEG_VIDEO_H264_LEVEL_5_0 = 14,
- V4L2_MPEG_VIDEO_H264_LEVEL_5_1 = 15,
+  V4L2_MPEG_VIDEO_H264_LEVEL_4_1 = 12,
+  V4L2_MPEG_VIDEO_H264_LEVEL_4_2 = 13,
+  V4L2_MPEG_VIDEO_H264_LEVEL_5_0 = 14,
+  V4L2_MPEG_VIDEO_H264_LEVEL_5_1 = 15,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE+360)
-#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE+361)
-#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE+362)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE + 360)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE + 361)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE + 362)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_video_h264_loop_filter_mode {
- V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
- V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
- V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
+  V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
+  V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
+  V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE+363)
+#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE + 363)
 enum v4l2_mpeg_video_h264_profile {
- V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
+  V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
- V4L2_MPEG_VIDEO_H264_PROFILE_MAIN = 2,
- V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED = 3,
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH = 4,
+  V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
+  V4L2_MPEG_VIDEO_H264_PROFILE_MAIN = 2,
+  V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED = 3,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10 = 5,
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 = 6,
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE = 7,
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA = 8,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10 = 5,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 = 6,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE = 7,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA = 9,
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA = 10,
- V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA = 11,
- V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA = 9,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA = 10,
+  V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA = 11,
+  V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13,
- V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14,
- V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH = 15,
- V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
+  V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13,
+  V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14,
+  V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH = 15,
+  V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE+364)
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE+365)
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE+366)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE + 364)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE + 365)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE + 366)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE+367)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE + 367)
 enum v4l2_mpeg_video_h264_vui_sar_idc {
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11 = 2,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11 = 3,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11 = 4,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33 = 5,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11 = 2,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11 = 3,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11 = 4,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33 = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11 = 6,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11 = 7,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11 = 8,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33 = 9,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11 = 6,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11 = 7,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11 = 8,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33 = 9,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11 = 10,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11 = 11,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33 = 12,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99 = 13,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11 = 10,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11 = 11,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33 = 12,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99 = 13,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3 = 14,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2 = 15,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
- V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3 = 14,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2 = 15,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_MPEG_BASE+368)
-#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_MPEG_BASE+369)
-#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_MPEG_BASE+370)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_MPEG_BASE + 368)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_MPEG_BASE + 369)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_MPEG_BASE + 370)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
- V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,
- V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1,
- V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW = 2,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE = 3,
- V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,
- V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE = 3,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_MPEG_BASE+371)
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_MPEG_BASE+372)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_MPEG_BASE + 371)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_MPEG_BASE + 372)
 enum v4l2_mpeg_video_h264_fmo_map_type {
- V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1,
- V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER = 2,
- V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT = 3,
- V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN = 4,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER = 2,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT = 3,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,
- V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_MPEG_BASE+373)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_MPEG_BASE + 373)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_MPEG_BASE+374)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_MPEG_BASE + 374)
 enum v4l2_mpeg_video_h264_fmo_change_dir {
- V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,
- V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,
+  V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,
+  V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_MPEG_BASE+375)
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_MPEG_BASE+376)
-#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_MPEG_BASE+377)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_MPEG_BASE + 375)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_MPEG_BASE + 376)
+#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_MPEG_BASE + 377)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_MPEG_BASE+378)
-#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_MPEG_BASE+379)
-#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_MPEG_BASE+380)
+#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_MPEG_BASE + 378)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_MPEG_BASE + 379)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_MPEG_BASE + 380)
 enum v4l2_mpeg_video_h264_hierarchical_coding_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,
- V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,
+  V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,
+  V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE+381)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE + 381)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE + 382)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE + 400)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE + 401)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE + 402)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE+403)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE+404)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE+405)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE + 403)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE + 404)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE + 405)
 enum v4l2_mpeg_video_mpeg4_level {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_1 = 2,
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_2 = 3,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_1 = 2,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_2 = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_3 = 4,
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B = 5,
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
- V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_3 = 4,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B = 5,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE+406)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE + 406)
 enum v4l2_mpeg_video_mpeg4_profile {
- V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
- V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2,
- V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
- V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE+407)
-#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_MPEG_BASE+500)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE + 407)
+#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_MPEG_BASE + 500)
 enum v4l2_vp8_num_partitions {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,
- V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,
- V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,
- V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,
+  V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,
+  V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,
+  V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,
+  V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_MPEG_BASE+501)
-#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_MPEG_BASE+502)
+#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_MPEG_BASE + 501)
+#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_MPEG_BASE + 502)
 enum v4l2_vp8_num_ref_frames {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,
- V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,
- V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,
+  V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,
+  V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,
+  V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_MPEG_BASE+503)
-#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_MPEG_BASE+504)
-#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_MPEG_BASE+505)
-#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_MPEG_BASE+506)
+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_MPEG_BASE + 503)
+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_MPEG_BASE + 504)
+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_MPEG_BASE + 505)
+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_MPEG_BASE + 506)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_vp8_golden_frame_sel {
- V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,
- V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,
+  V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,
+  V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_MPEG_BASE+507)
-#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE+508)
-#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE+509)
-#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE+510)
+#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_MPEG_BASE + 507)
+#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE + 508)
+#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE + 509)
+#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE + 510)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE (V4L2_CID_MPEG_BASE+511)
+#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE (V4L2_CID_MPEG_BASE + 511)
 #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE + 0)
 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
- V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
+  V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
+  V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE + 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE + 2)
 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
- V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
- V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
- V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
- V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE + 3)
 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
- V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
- V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
+  V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
+  V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE + 4)
 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
- V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
+  V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
+  V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE + 5)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE + 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_cx2341x_video_median_filter_type {
- V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
- V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
- V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
- V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE + 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
-#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE + 8)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE + 9)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE + 10)
+#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE + 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
-#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE+0)
-#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE+1)
-#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE+2)
+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE + 0)
+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE + 1)
+#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_mfc51_video_frame_skip_mode {
- V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
- V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
- V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
+  V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
+  V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
+  V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_MPEG_MFC51_BASE+3)
+#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_MPEG_MFC51_BASE + 3)
 enum v4l2_mpeg_mfc51_video_force_frame_type {
- V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
+  V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
- V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
+  V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
+  V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
 };
-#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE+4)
+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE + 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE+5)
-#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE+6)
-#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE+7)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE+50)
+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE + 5)
+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE + 6)
+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE + 7)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE + 50)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE+51)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE+52)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE+53)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE+54)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE + 51)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE + 52)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE + 53)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE + 54)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
 #define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
-#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
+#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE + 1)
 enum v4l2_exposure_auto_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_EXPOSURE_AUTO = 0,
- V4L2_EXPOSURE_MANUAL = 1,
- V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
- V4L2_EXPOSURE_APERTURE_PRIORITY = 3
+  V4L2_EXPOSURE_AUTO = 0,
+  V4L2_EXPOSURE_MANUAL = 1,
+  V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
+  V4L2_EXPOSURE_APERTURE_PRIORITY = 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
-#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
-#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
+#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 2)
+#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE + 3)
+#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
-#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
-#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
-#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
+#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 5)
+#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE + 6)
+#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE + 7)
+#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
-#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
-#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
-#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
+#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 9)
+#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 10)
+#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 11)
+#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE + 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
-#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
-#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
-#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
+#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 13)
+#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 14)
+#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE + 15)
+#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE + 16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17)
-#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18)
-#define V4L2_CID_AUTO_EXPOSURE_BIAS (V4L2_CID_CAMERA_CLASS_BASE+19)
-#define V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (V4L2_CID_CAMERA_CLASS_BASE+20)
+#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 17)
+#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 18)
+#define V4L2_CID_AUTO_EXPOSURE_BIAS (V4L2_CID_CAMERA_CLASS_BASE + 19)
+#define V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (V4L2_CID_CAMERA_CLASS_BASE + 20)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_auto_n_preset_white_balance {
- V4L2_WHITE_BALANCE_MANUAL = 0,
- V4L2_WHITE_BALANCE_AUTO = 1,
- V4L2_WHITE_BALANCE_INCANDESCENT = 2,
+  V4L2_WHITE_BALANCE_MANUAL = 0,
+  V4L2_WHITE_BALANCE_AUTO = 1,
+  V4L2_WHITE_BALANCE_INCANDESCENT = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_WHITE_BALANCE_FLUORESCENT = 3,
- V4L2_WHITE_BALANCE_FLUORESCENT_H = 4,
- V4L2_WHITE_BALANCE_HORIZON = 5,
- V4L2_WHITE_BALANCE_DAYLIGHT = 6,
+  V4L2_WHITE_BALANCE_FLUORESCENT = 3,
+  V4L2_WHITE_BALANCE_FLUORESCENT_H = 4,
+  V4L2_WHITE_BALANCE_HORIZON = 5,
+  V4L2_WHITE_BALANCE_DAYLIGHT = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_WHITE_BALANCE_FLASH = 7,
- V4L2_WHITE_BALANCE_CLOUDY = 8,
- V4L2_WHITE_BALANCE_SHADE = 9,
+  V4L2_WHITE_BALANCE_FLASH = 7,
+  V4L2_WHITE_BALANCE_CLOUDY = 8,
+  V4L2_WHITE_BALANCE_SHADE = 9,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21)
-#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE+22)
-#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE+23)
-#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE+24)
+#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE + 21)
+#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE + 22)
+#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE + 23)
+#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE + 24)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_iso_sensitivity_auto_type {
- V4L2_ISO_SENSITIVITY_MANUAL = 0,
- V4L2_ISO_SENSITIVITY_AUTO = 1,
+  V4L2_ISO_SENSITIVITY_MANUAL = 0,
+  V4L2_ISO_SENSITIVITY_AUTO = 1,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_EXPOSURE_METERING (V4L2_CID_CAMERA_CLASS_BASE+25)
+#define V4L2_CID_EXPOSURE_METERING (V4L2_CID_CAMERA_CLASS_BASE + 25)
 enum v4l2_exposure_metering {
- V4L2_EXPOSURE_METERING_AVERAGE = 0,
- V4L2_EXPOSURE_METERING_CENTER_WEIGHTED = 1,
+  V4L2_EXPOSURE_METERING_AVERAGE = 0,
+  V4L2_EXPOSURE_METERING_CENTER_WEIGHTED = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_EXPOSURE_METERING_SPOT = 2,
- V4L2_EXPOSURE_METERING_MATRIX = 3,
+  V4L2_EXPOSURE_METERING_SPOT = 2,
+  V4L2_EXPOSURE_METERING_MATRIX = 3,
 };
-#define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE+26)
+#define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE + 26)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_scene_mode {
- V4L2_SCENE_MODE_NONE = 0,
- V4L2_SCENE_MODE_BACKLIGHT = 1,
- V4L2_SCENE_MODE_BEACH_SNOW = 2,
+  V4L2_SCENE_MODE_NONE = 0,
+  V4L2_SCENE_MODE_BACKLIGHT = 1,
+  V4L2_SCENE_MODE_BEACH_SNOW = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_SCENE_MODE_CANDLE_LIGHT = 3,
- V4L2_SCENE_MODE_DAWN_DUSK = 4,
- V4L2_SCENE_MODE_FALL_COLORS = 5,
- V4L2_SCENE_MODE_FIREWORKS = 6,
+  V4L2_SCENE_MODE_CANDLE_LIGHT = 3,
+  V4L2_SCENE_MODE_DAWN_DUSK = 4,
+  V4L2_SCENE_MODE_FALL_COLORS = 5,
+  V4L2_SCENE_MODE_FIREWORKS = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_SCENE_MODE_LANDSCAPE = 7,
- V4L2_SCENE_MODE_NIGHT = 8,
- V4L2_SCENE_MODE_PARTY_INDOOR = 9,
- V4L2_SCENE_MODE_PORTRAIT = 10,
+  V4L2_SCENE_MODE_LANDSCAPE = 7,
+  V4L2_SCENE_MODE_NIGHT = 8,
+  V4L2_SCENE_MODE_PARTY_INDOOR = 9,
+  V4L2_SCENE_MODE_PORTRAIT = 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_SCENE_MODE_SPORTS = 11,
- V4L2_SCENE_MODE_SUNSET = 12,
- V4L2_SCENE_MODE_TEXT = 13,
+  V4L2_SCENE_MODE_SPORTS = 11,
+  V4L2_SCENE_MODE_SUNSET = 12,
+  V4L2_SCENE_MODE_TEXT = 13,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_3A_LOCK (V4L2_CID_CAMERA_CLASS_BASE+27)
+#define V4L2_CID_3A_LOCK (V4L2_CID_CAMERA_CLASS_BASE + 27)
 #define V4L2_LOCK_EXPOSURE (1 << 0)
 #define V4L2_LOCK_WHITE_BALANCE (1 << 1)
 #define V4L2_LOCK_FOCUS (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_CID_AUTO_FOCUS_START (V4L2_CID_CAMERA_CLASS_BASE+28)
-#define V4L2_CID_AUTO_FOCUS_STOP (V4L2_CID_CAMERA_CLASS_BASE+29)
-#define V4L2_CID_AUTO_FOCUS_STATUS (V4L2_CID_CAMERA_CLASS_BASE+30)
+#define V4L2_CID_AUTO_FOCUS_START (V4L2_CID_CAMERA_CLASS_BASE + 28)
+#define V4L2_CID_AUTO_FOCUS_STOP (V4L2_CID_CAMERA_CLASS_BASE + 29)
+#define V4L2_CID_AUTO_FOCUS_STATUS (V4L2_CID_CAMERA_CLASS_BASE + 30)
 #define V4L2_AUTO_FOCUS_STATUS_IDLE (0 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_AUTO_FOCUS_STATUS_BUSY (1 << 0)
 #define V4L2_AUTO_FOCUS_STATUS_REACHED (1 << 1)
 #define V4L2_AUTO_FOCUS_STATUS_FAILED (1 << 2)
-#define V4L2_CID_AUTO_FOCUS_RANGE (V4L2_CID_CAMERA_CLASS_BASE+31)
+#define V4L2_CID_AUTO_FOCUS_RANGE (V4L2_CID_CAMERA_CLASS_BASE + 31)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_auto_focus_range {
- V4L2_AUTO_FOCUS_RANGE_AUTO = 0,
- V4L2_AUTO_FOCUS_RANGE_NORMAL = 1,
- V4L2_AUTO_FOCUS_RANGE_MACRO = 2,
+  V4L2_AUTO_FOCUS_RANGE_AUTO = 0,
+  V4L2_AUTO_FOCUS_RANGE_NORMAL = 1,
+  V4L2_AUTO_FOCUS_RANGE_MACRO = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_AUTO_FOCUS_RANGE_INFINITY = 3,
+  V4L2_AUTO_FOCUS_RANGE_INFINITY = 3,
 };
+#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 32)
+#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 33)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
 #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
 #define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
 #define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
+#define V4L2_CID_RDS_TX_MONO_STEREO (V4L2_CID_FM_TX_CLASS_BASE + 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_RDS_TX_ARTIFICIAL_HEAD (V4L2_CID_FM_TX_CLASS_BASE + 8)
+#define V4L2_CID_RDS_TX_COMPRESSED (V4L2_CID_FM_TX_CLASS_BASE + 9)
+#define V4L2_CID_RDS_TX_DYNAMIC_PTY (V4L2_CID_FM_TX_CLASS_BASE + 10)
+#define V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_TX_CLASS_BASE + 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_RDS_TX_TRAFFIC_PROGRAM (V4L2_CID_FM_TX_CLASS_BASE + 12)
+#define V4L2_CID_RDS_TX_MUSIC_SPEECH (V4L2_CID_FM_TX_CLASS_BASE + 13)
+#define V4L2_CID_RDS_TX_ALT_FREQS_ENABLE (V4L2_CID_FM_TX_CLASS_BASE + 14)
+#define V4L2_CID_RDS_TX_ALT_FREQS (V4L2_CID_FM_TX_CLASS_BASE + 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
 #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
 #define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
 #define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
 #define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
 #define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
 #define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
-enum v4l2_preemphasis {
- V4L2_PREEMPHASIS_DISABLED = 0,
- V4L2_PREEMPHASIS_50_uS = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_PREEMPHASIS_75_uS = 2,
+enum v4l2_preemphasis {
+  V4L2_PREEMPHASIS_DISABLED = 0,
+  V4L2_PREEMPHASIS_50_uS = 1,
+  V4L2_PREEMPHASIS_75_uS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
 #define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FLASH_CLASS_BASE (V4L2_CTRL_CLASS_FLASH | 0x900)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FLASH_CLASS (V4L2_CTRL_CLASS_FLASH | 1)
 #define V4L2_CID_FLASH_LED_MODE (V4L2_CID_FLASH_CLASS_BASE + 1)
 enum v4l2_flash_led_mode {
+  V4L2_FLASH_LED_MODE_NONE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_FLASH_LED_MODE_NONE,
- V4L2_FLASH_LED_MODE_FLASH,
- V4L2_FLASH_LED_MODE_TORCH,
+  V4L2_FLASH_LED_MODE_FLASH,
+  V4L2_FLASH_LED_MODE_TORCH,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FLASH_STROBE_SOURCE (V4L2_CID_FLASH_CLASS_BASE + 2)
-enum v4l2_flash_strobe_source {
- V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
- V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum v4l2_flash_strobe_source {
+  V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
+  V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FLASH_STROBE (V4L2_CID_FLASH_CLASS_BASE + 3)
 #define V4L2_CID_FLASH_STROBE_STOP (V4L2_CID_FLASH_CLASS_BASE + 4)
 #define V4L2_CID_FLASH_STROBE_STATUS (V4L2_CID_FLASH_CLASS_BASE + 5)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FLASH_TIMEOUT (V4L2_CID_FLASH_CLASS_BASE + 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FLASH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 7)
 #define V4L2_CID_FLASH_TORCH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 8)
 #define V4L2_CID_FLASH_INDICATOR_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 9)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FLASH_FAULT (V4L2_CID_FLASH_CLASS_BASE + 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FLASH_FAULT_OVER_VOLTAGE (1 << 0)
 #define V4L2_FLASH_FAULT_TIMEOUT (1 << 1)
 #define V4L2_FLASH_FAULT_OVER_TEMPERATURE (1 << 2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FLASH_FAULT_SHORT_CIRCUIT (1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FLASH_FAULT_OVER_CURRENT (1 << 4)
 #define V4L2_FLASH_FAULT_INDICATOR (1 << 5)
-#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
+#define V4L2_FLASH_FAULT_UNDER_VOLTAGE (1 << 6)
+#define V4L2_FLASH_FAULT_INPUT_VOLTAGE (1 << 7)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE (1 << 8)
+#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
 #define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)
 #define V4L2_CID_JPEG_CLASS_BASE (V4L2_CTRL_CLASS_JPEG | 0x900)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_JPEG_CLASS (V4L2_CTRL_CLASS_JPEG | 1)
 #define V4L2_CID_JPEG_CHROMA_SUBSAMPLING (V4L2_CID_JPEG_CLASS_BASE + 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_jpeg_chroma_subsampling {
- V4L2_JPEG_CHROMA_SUBSAMPLING_444 = 0,
- V4L2_JPEG_CHROMA_SUBSAMPLING_422 = 1,
- V4L2_JPEG_CHROMA_SUBSAMPLING_420 = 2,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_444 = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_JPEG_CHROMA_SUBSAMPLING_411 = 3,
- V4L2_JPEG_CHROMA_SUBSAMPLING_410 = 4,
- V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY = 5,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_422 = 1,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_420 = 2,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_411 = 3,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_410 = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY = 5,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_JPEG_RESTART_INTERVAL (V4L2_CID_JPEG_CLASS_BASE + 2)
 #define V4L2_CID_JPEG_COMPRESSION_QUALITY (V4L2_CID_JPEG_CLASS_BASE + 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_JPEG_ACTIVE_MARKER (V4L2_CID_JPEG_CLASS_BASE + 4)
 #define V4L2_JPEG_ACTIVE_MARKER_APP0 (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_JPEG_ACTIVE_MARKER_APP1 (1 << 1)
 #define V4L2_JPEG_ACTIVE_MARKER_COM (1 << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
 #define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
 #define V4L2_CID_IMAGE_SOURCE_CLASS (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_VBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1)
 #define V4L2_CID_HBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_ANALOGUE_GAIN (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3)
+#define V4L2_CID_TEST_PATTERN_RED (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
+#define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
+#define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
 #define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_IMAGE_PROC_CLASS (V4L2_CTRL_CLASS_IMAGE_PROC | 1)
 #define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
 #define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
 #define V4L2_CID_DV_CLASS (V4L2_CTRL_CLASS_DV | 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
 #define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
 #define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_dv_tx_mode {
- V4L2_DV_TX_MODE_DVI_D = 0,
- V4L2_DV_TX_MODE_HDMI = 1,
-};
+  V4L2_DV_TX_MODE_DVI_D = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_DV_TX_MODE_HDMI = 1,
+};
 #define V4L2_CID_DV_TX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 5)
 enum v4l2_dv_rgb_range {
- V4L2_DV_RGB_RANGE_AUTO = 0,
- V4L2_DV_RGB_RANGE_LIMITED = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_DV_RGB_RANGE_FULL = 2,
+  V4L2_DV_RGB_RANGE_AUTO = 0,
+  V4L2_DV_RGB_RANGE_LIMITED = 1,
+  V4L2_DV_RGB_RANGE_FULL = 2,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
 #define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FM_RX_CLASS_BASE (V4L2_CTRL_CLASS_FM_RX | 0x900)
 #define V4L2_CID_FM_RX_CLASS (V4L2_CTRL_CLASS_FM_RX | 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_TUNE_DEEMPHASIS (V4L2_CID_FM_RX_CLASS_BASE + 1)
 enum v4l2_deemphasis {
+  V4L2_DEEMPHASIS_DISABLED = V4L2_PREEMPHASIS_DISABLED,
+  V4L2_DEEMPHASIS_50_uS = V4L2_PREEMPHASIS_50_uS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_DEEMPHASIS_DISABLED = V4L2_PREEMPHASIS_DISABLED,
- V4L2_DEEMPHASIS_50_uS = V4L2_PREEMPHASIS_50_uS,
- V4L2_DEEMPHASIS_75_uS = V4L2_PREEMPHASIS_75_uS,
+  V4L2_DEEMPHASIS_75_uS = V4L2_PREEMPHASIS_75_uS,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_RDS_RECEPTION (V4L2_CID_FM_RX_CLASS_BASE + 2)
+#define V4L2_CID_RDS_RX_PTY (V4L2_CID_FM_RX_CLASS_BASE + 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_RDS_RX_PS_NAME (V4L2_CID_FM_RX_CLASS_BASE + 4)
+#define V4L2_CID_RDS_RX_RADIO_TEXT (V4L2_CID_FM_RX_CLASS_BASE + 5)
+#define V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_RX_CLASS_BASE + 6)
+#define V4L2_CID_RDS_RX_TRAFFIC_PROGRAM (V4L2_CID_FM_RX_CLASS_BASE + 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_RDS_RX_MUSIC_SPEECH (V4L2_CID_FM_RX_CLASS_BASE + 8)
+#define V4L2_CID_RF_TUNER_CLASS_BASE (V4L2_CTRL_CLASS_RF_TUNER | 0x900)
+#define V4L2_CID_RF_TUNER_CLASS (V4L2_CTRL_CLASS_RF_TUNER | 1)
+#define V4L2_CID_RF_TUNER_BANDWIDTH_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_RF_TUNER_BANDWIDTH (V4L2_CID_RF_TUNER_CLASS_BASE + 12)
+#define V4L2_CID_RF_TUNER_LNA_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 41)
+#define V4L2_CID_RF_TUNER_LNA_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 42)
+#define V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 51)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_RF_TUNER_MIXER_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 52)
+#define V4L2_CID_RF_TUNER_IF_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 61)
+#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 62)
+#define V4L2_CID_RF_TUNER_PLL_LOCK (V4L2_CID_RF_TUNER_CLASS_BASE + 91)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CID_DETECT_CLASS_BASE (V4L2_CTRL_CLASS_DETECT | 0x900)
+#define V4L2_CID_DETECT_CLASS (V4L2_CTRL_CLASS_DETECT | 1)
+#define V4L2_CID_DETECT_MD_MODE (V4L2_CID_DETECT_CLASS_BASE + 1)
+enum v4l2_detect_md_mode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_DETECT_MD_MODE_DISABLED = 0,
+  V4L2_DETECT_MD_MODE_GLOBAL = 1,
+  V4L2_DETECT_MD_MODE_THRESHOLD_GRID = 2,
+  V4L2_DETECT_MD_MODE_REGION_GRID = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD (V4L2_CID_DETECT_CLASS_BASE + 2)
+#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
+#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-dv-timings.h b/libc/kernel/uapi/linux/v4l2-dv-timings.h
index bb1374a..a4f91ec 100644
--- a/libc/kernel/uapi/linux/v4l2-dv-timings.h
+++ b/libc/kernel/uapi/linux/v4l2-dv-timings.h
@@ -19,138 +19,265 @@
 #ifndef _V4L2_DV_TIMINGS_H
 #define _V4L2_DV_TIMINGS_H
 #if __GNUC__ < 4 || __GNUC__ == 4 && __GNUC_MINOR__ < 6
-#define V4L2_INIT_BT_TIMINGS(_width, args...)   { .bt = { _width , ## args } }
+#define V4L2_INIT_BT_TIMINGS(_width,args...) {.bt = { _width, ##args } }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
-#define V4L2_INIT_BT_TIMINGS(_width, args...)   .bt = { _width , ## args }
+#define V4L2_INIT_BT_TIMINGS(_width,args...) . bt = { _width, ##args }
 #endif
-#define V4L2_DV_BT_CEA_640X480P59_94 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(640, 480, 0, 0,   25175000, 16, 96, 48, 10, 2, 33, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, 0)  }
+#define V4L2_DV_BT_CEA_640X480P59_94 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 25175000, 16, 96, 48, 10, 2, 33, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_CEA_720X480I59_94 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(720, 480, 1, 0,   13500000, 19, 62, 57, 4, 3, 15, 4, 3, 16,   V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE)  }
-#define V4L2_DV_BT_CEA_720X480P59_94 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(720, 480, 0, 0,   27000000, 16, 62, 60, 9, 6, 30, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, 0)  }
-#define V4L2_DV_BT_CEA_720X576I50 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(720, 576, 1, 0,   13500000, 12, 63, 69, 2, 3, 19, 2, 3, 20,   V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE)  }
-#define V4L2_DV_BT_CEA_720X576P50 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(720, 576, 0, 0,   27000000, 12, 64, 68, 5, 5, 39, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, 0)  }
+#define V4L2_DV_BT_CEA_720X480I59_94 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 480, 1, 0, 13500000, 19, 62, 57, 4, 3, 15, 4, 3, 16, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE) \
+}
+#define V4L2_DV_BT_CEA_720X480P59_94 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 480, 0, 0, 27000000, 16, 62, 60, 9, 6, 30, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+#define V4L2_DV_BT_CEA_720X576I50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 576, 1, 0, 13500000, 12, 63, 69, 2, 3, 19, 2, 3, 20, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE) \
+}
+#define V4L2_DV_BT_CEA_720X576P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 576, 0, 0, 27000000, 12, 64, 68, 5, 5, 39, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_CEA_1280X720P24 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 720, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   59400000, 1760, 40, 220, 5, 5, 20, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861,   V4L2_DV_FL_CAN_REDUCE_FPS)  }
-#define V4L2_DV_BT_CEA_1280X720P25 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 720, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 2420, 40, 220, 5, 5, 20, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, 0)  }
-#define V4L2_DV_BT_CEA_1280X720P30 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 720, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 1760, 40, 220, 5, 5, 20, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS)  }
-#define V4L2_DV_BT_CEA_1280X720P50 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 720, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 440, 40, 220, 5, 5, 20, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, 0)  }
+#define V4L2_DV_BT_CEA_1280X720P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 59400000, 1760, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_1280X720P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 2420, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+#define V4L2_DV_BT_CEA_1280X720P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 1760, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_1280X720P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 440, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_CEA_1280X720P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 720, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 110, 40, 220, 5, 5, 20, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS)  }
-#define V4L2_DV_BT_CEA_1920X1080P24 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1080, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 638, 44, 148, 4, 5, 36, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS)  }
-#define V4L2_DV_BT_CEA_1920X1080P25 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1080, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 528, 44, 148, 4, 5, 36, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, 0)  }
-#define V4L2_DV_BT_CEA_1920X1080P30 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1080, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 88, 44, 148, 4, 5, 36, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS)  }
+#define V4L2_DV_BT_CEA_1280X720P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 110, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 638, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 528, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 88, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_CEA_1920X1080I50 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1080, 1,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 528, 44, 148, 2, 5, 15, 2, 5, 16,   V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE)  }
-#define V4L2_DV_BT_CEA_1920X1080P50 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1080, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   148500000, 528, 44, 148, 4, 5, 36, 0, 0, 0,   V4L2_DV_BT_STD_CEA861, 0)  }
-#define V4L2_DV_BT_CEA_1920X1080I60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1080, 1,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   74250000, 88, 44, 148, 2, 5, 15, 2, 5, 16,   V4L2_DV_BT_STD_CEA861,   V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_HALF_LINE)  }
-#define V4L2_DV_BT_CEA_1920X1080P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1080, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   148500000, 88, 44, 148, 4, 5, 36, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861,   V4L2_DV_FL_CAN_REDUCE_FPS)  }
+#define V4L2_DV_BT_CEA_1920X1080I50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 1, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 528, 44, 148, 2, 5, 15, 2, 5, 16, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 148500000, 528, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+#define V4L2_DV_BT_CEA_1920X1080I60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 1, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 88, 44, 148, 2, 5, 15, 2, 5, 16, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_HALF_LINE) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 148500000, 88, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_640X350P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(640, 350, 0, V4L2_DV_HSYNC_POS_POL,   31500000, 32, 64, 96, 32, 3, 60, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_640X400P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(640, 400, 0, V4L2_DV_VSYNC_POS_POL,   31500000, 32, 64, 96, 1, 3, 41, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_720X400P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(720, 400, 0, V4L2_DV_VSYNC_POS_POL,   35500000, 36, 72, 108, 1, 3, 42, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_CEA_3840X2160P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, 297000000, 1276, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, 297000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, 297000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, 594000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_DV_BT_CEA_3840X2160P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, 594000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 297000000, 1020, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 297000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 297000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_DV_BT_CEA_4096X2160P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 594000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, 0) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 594000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
+}
+#define V4L2_DV_BT_DMT_640X350P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 350, 0, V4L2_DV_HSYNC_POS_POL, 31500000, 32, 64, 96, 32, 3, 60, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_640X400P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 400, 0, V4L2_DV_VSYNC_POS_POL, 31500000, 32, 64, 96, 1, 3, 41, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_DV_BT_DMT_720X400P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 400, 0, V4L2_DV_VSYNC_POS_POL, 35500000, 36, 72, 108, 1, 3, 42, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 #define V4L2_DV_BT_DMT_640X480P60 V4L2_DV_BT_CEA_640X480P59_94
+#define V4L2_DV_BT_DMT_640X480P72 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 31500000, 24, 40, 128, 9, 3, 28, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_640X480P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 31500000, 16, 64, 120, 1, 3, 16, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_640X480P72 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(640, 480, 0, 0,   31500000, 24, 40, 128, 9, 3, 28, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_640X480P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(640, 480, 0, 0,   31500000, 16, 64, 120, 1, 3, 16, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_640X480P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(640, 480, 0, 0,   36000000, 56, 56, 80, 1, 3, 25, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_800X600P56 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(800, 600, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   36000000, 24, 72, 128, 1, 2, 22, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_DMT_640X480P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 36000000, 56, 56, 80, 1, 3, 25, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P56 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 36000000, 24, 72, 128, 1, 2, 22, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 40000000, 40, 128, 88, 1, 4, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P72 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 50000000, 56, 120, 64, 37, 6, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_800X600P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(800, 600, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   40000000, 40, 128, 88, 1, 4, 23, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_800X600P72 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(800, 600, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   50000000, 56, 120, 64, 37, 6, 23, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_800X600P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(800, 600, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   49500000, 16, 80, 160, 1, 3, 21, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_800X600P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(800, 600, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   56250000, 32, 64, 152, 1, 3, 27, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_DMT_800X600P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 49500000, 16, 80, 160, 1, 3, 21, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 56250000, 32, 64, 152, 1, 3, 27, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL, 73250000, 48, 32, 80, 3, 4, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_848X480P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(848, 480, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 33750000, 16, 112, 112, 6, 8, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_800X600P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL,   73250000, 48, 32, 80, 3, 4, 29, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_848X480P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(848, 480, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   33750000, 16, 112, 112, 6, 8, 23, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1024X768I43 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1024, 768, 1,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   44900000, 8, 176, 56, 0, 4, 20, 0, 4, 21,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1024X768P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1024, 768, 0, 0,   65000000, 24, 136, 160, 3, 6, 29, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_DMT_1024X768I43 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 1, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 44900000, 8, 176, 56, 0, 4, 20, 0, 4, 21, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, 0, 65000000, 24, 136, 160, 3, 6, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P70 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, 0, 75000000, 24, 136, 144, 3, 6, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 78750000, 16, 96, 176, 1, 3, 28, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1024X768P70 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1024, 768, 0, 0,   75000000, 24, 136, 144, 3, 6, 29, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1024X768P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1024, 768, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   78750000, 16, 96, 176, 1, 3, 28, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1024X768P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1024, 768, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   94500000, 48, 96, 208, 1, 3, 36, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1024X768P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1024, 768, 0, V4L2_DV_HSYNC_POS_POL,   115500000, 48, 32, 80, 3, 4, 38, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1152X864P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1152, 864, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   108000000, 64, 128, 256, 1, 3, 32, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_DMT_1024X768P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 94500000, 48, 96, 208, 1, 3, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, V4L2_DV_HSYNC_POS_POL, 115500000, 48, 32, 80, 3, 4, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1152X864P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1152, 864, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 64, 128, 256, 1, 3, 32, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 #define V4L2_DV_BT_DMT_1280X720P60 V4L2_DV_BT_CEA_1280X720P60
-#define V4L2_DV_BT_DMT_1280X768P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_HSYNC_POS_POL,   68250000, 48, 32, 80, 3, 7, 12, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1280X768P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL,   79500000, 64, 128, 192, 3, 7, 20, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1280X768P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL,   102250000, 80, 128, 208, 3, 7, 27, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1280X768P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL,   117500000, 80, 136, 216, 3, 7, 31, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1280X768P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_HSYNC_POS_POL,   140250000, 48, 32, 80, 3, 7, 35, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1280X800P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_HSYNC_POS_POL,   71000000, 48, 32, 80, 3, 6, 14, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1280X768P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_HSYNC_POS_POL, 68250000, 48, 32, 80, 3, 7, 12, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL, 79500000, 64, 128, 192, 3, 7, 20, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X768P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL, 102250000, 80, 128, 208, 3, 7, 27, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X768P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL, 117500000, 80, 136, 216, 3, 7, 31, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1280X800P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL,   83500000, 72, 128, 200, 3, 6, 22, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1280X800P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL,   106500000, 80, 128, 208, 3, 6, 29, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1280X800P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL,   122500000, 80, 136, 216, 3, 6, 34, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1280X800P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_HSYNC_POS_POL,   146250000, 48, 32, 80, 3, 6, 38, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1280X768P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_HSYNC_POS_POL, 140250000, 48, 32, 80, 3, 7, 35, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X800P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_HSYNC_POS_POL, 71000000, 48, 32, 80, 3, 6, 14, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X800P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL, 83500000, 72, 128, 200, 3, 6, 22, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X800P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL, 106500000, 80, 128, 208, 3, 6, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1280X960P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 960, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   108000000, 96, 112, 312, 1, 3, 36, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1280X960P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 960, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   148500000, 64, 160, 224, 1, 3, 47, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1280X960P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 960, 0, V4L2_DV_HSYNC_POS_POL,   175500000, 48, 32, 80, 3, 4, 50, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1280X1024P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 1024, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   108000000, 48, 112, 248, 1, 3, 38, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_DMT_1280X800P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL, 122500000, 80, 136, 216, 3, 6, 34, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X800P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_HSYNC_POS_POL, 146250000, 48, 32, 80, 3, 6, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X960P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 960, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 96, 112, 312, 1, 3, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X960P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 960, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 148500000, 64, 160, 224, 1, 3, 47, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1280X1024P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 1024, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   135000000, 16, 144, 248, 1, 3, 38, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1280X1024P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 1024, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   157500000, 64, 160, 224, 1, 3, 44, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1280X1024P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL,   187250000, 48, 32, 80, 3, 7, 50, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1360X768P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1360, 768, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   85500000, 64, 112, 256, 3, 6, 18, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_DMT_1280X960P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 960, 0, V4L2_DV_HSYNC_POS_POL, 175500000, 48, 32, 80, 3, 4, 50, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X1024P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 48, 112, 248, 1, 3, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X1024P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 135000000, 16, 144, 248, 1, 3, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X1024P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 157500000, 64, 160, 224, 1, 3, 44, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1360X768P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1360, 768, 0, V4L2_DV_HSYNC_POS_POL,   148250000, 48, 32, 80, 3, 5, 37, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1366X768P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1366, 768, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   85500000, 70, 143, 213, 3, 3, 24, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1366X768P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1366, 768, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   72000000, 14, 56, 64, 1, 3, 28, 0, 0, 0,   V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1400X1050P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_HSYNC_POS_POL,   101000000, 48, 32, 80, 3, 4, 23, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1280X1024P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL, 187250000, 48, 32, 80, 3, 7, 50, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1360X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1360, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 85500000, 64, 112, 256, 3, 6, 18, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1360X768P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1360, 768, 0, V4L2_DV_HSYNC_POS_POL, 148250000, 48, 32, 80, 3, 5, 37, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1366X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1366, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 85500000, 70, 143, 213, 3, 3, 24, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1400X1050P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL,   121750000, 88, 144, 232, 3, 4, 32, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1400X1050P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL,   156000000, 104, 144, 248, 3, 4, 42, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1400X1050P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL,   179500000, 104, 152, 256, 3, 4, 48, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1400X1050P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_HSYNC_POS_POL,   208000000, 48, 32, 80, 3, 4, 55, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1366X768P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1366, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 72000000, 14, 56, 64, 1, 3, 28, 0, 0, 0, V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_HSYNC_POS_POL, 101000000, 48, 32, 80, 3, 4, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL, 121750000, 88, 144, 232, 3, 4, 32, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL, 156000000, 104, 144, 248, 3, 4, 42, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1440X900P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_HSYNC_POS_POL,   88750000, 48, 32, 80, 3, 6, 17, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1440X900P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL,   106500000, 80, 152, 232, 3, 6, 25, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1440X900P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL,   136750000, 96, 152, 248, 3, 6, 33, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1440X900P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL,   157000000, 104, 152, 256, 3, 6, 39, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
+#define V4L2_DV_BT_DMT_1400X1050P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL, 179500000, 104, 152, 256, 3, 4, 48, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_HSYNC_POS_POL, 208000000, 48, 32, 80, 3, 4, 55, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1440X900P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_HSYNC_POS_POL, 88750000, 48, 32, 80, 3, 6, 17, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1440X900P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL, 106500000, 80, 152, 232, 3, 6, 25, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1440X900P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_HSYNC_POS_POL,   182750000, 48, 32, 80, 3, 6, 44, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1600X900P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1600, 900, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   108000000, 24, 80, 96, 1, 3, 96, 0, 0, 0,   V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1600X1200P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1600, 1200, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   162000000, 64, 192, 304, 1, 3, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1600X1200P65 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1600, 1200, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   175500000, 64, 192, 304, 1, 3, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
+#define V4L2_DV_BT_DMT_1440X900P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL, 136750000, 96, 152, 248, 3, 6, 33, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1440X900P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL, 157000000, 104, 152, 256, 3, 6, 39, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1440X900P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_HSYNC_POS_POL, 182750000, 48, 32, 80, 3, 6, 44, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1600X900P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 900, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 24, 80, 96, 1, 3, 96, 0, 0, 0, V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1600X1200P70 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1600, 1200, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   189000000, 64, 192, 304, 1, 3, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1600X1200P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1600, 1200, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   202500000, 64, 192, 304, 1, 3, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1600X1200P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1600, 1200, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   229500000, 64, 192, 304, 1, 3, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1600X1200P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL,   268250000, 48, 32, 80, 3, 4, 64, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1600X1200P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 162000000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P65 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 175500000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P70 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 189000000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 202500000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1680X1050P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_HSYNC_POS_POL,   119000000, 48, 32, 80, 3, 6, 21, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1680X1050P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL,   146250000, 104, 176, 280, 3, 6, 30, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1680X1050P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL,   187000000, 120, 176, 296, 3, 6, 40, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1680X1050P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL,   214750000, 128, 176, 304, 3, 6, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
+#define V4L2_DV_BT_DMT_1600X1200P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 229500000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL, 268250000, 48, 32, 80, 3, 4, 64, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_HSYNC_POS_POL, 119000000, 48, 32, 80, 3, 6, 21, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL, 146250000, 104, 176, 280, 3, 6, 30, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1680X1050P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_HSYNC_POS_POL,   245500000, 48, 32, 80, 3, 6, 53, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1792X1344P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_VSYNC_POS_POL,   204750000, 128, 200, 328, 1, 3, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1792X1344P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_VSYNC_POS_POL,   261000000, 96, 216, 352, 1, 3, 69, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1792X1344P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_HSYNC_POS_POL,   333250000, 48, 32, 80, 3, 4, 72, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1680X1050P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL, 187000000, 120, 176, 296, 3, 6, 40, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL, 214750000, 128, 176, 304, 3, 6, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_HSYNC_POS_POL, 245500000, 48, 32, 80, 3, 6, 53, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1792X1344P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_VSYNC_POS_POL, 204750000, 128, 200, 328, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1856X1392P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_VSYNC_POS_POL,   218250000, 96, 224, 352, 1, 3, 43, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1856X1392P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_VSYNC_POS_POL,   288000000, 128, 224, 352, 1, 3, 104, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1856X1392P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_HSYNC_POS_POL,   356500000, 48, 32, 80, 3, 4, 75, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1792X1344P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_VSYNC_POS_POL, 261000000, 96, 216, 352, 1, 3, 69, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1792X1344P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_HSYNC_POS_POL, 333250000, 48, 32, 80, 3, 4, 72, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1856X1392P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_VSYNC_POS_POL, 218250000, 96, 224, 352, 1, 3, 43, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1856X1392P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_VSYNC_POS_POL, 288000000, 128, 224, 352, 1, 3, 104, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_DV_BT_DMT_1856X1392P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_HSYNC_POS_POL, 356500000, 48, 32, 80, 3, 4, 75, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
 #define V4L2_DV_BT_DMT_1920X1080P60 V4L2_DV_BT_CEA_1920X1080P60
+#define V4L2_DV_BT_DMT_1920X1200P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_HSYNC_POS_POL, 154000000, 48, 32, 80, 3, 6, 26, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1920X1200P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL, 193250000, 136, 200, 336, 3, 6, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1920X1200P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_HSYNC_POS_POL,   154000000, 48, 32, 80, 3, 6, 26, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1920X1200P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL,   193250000, 136, 200, 336, 3, 6, 36, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1920X1200P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL,   245250000, 136, 208, 344, 3, 6, 46, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_1920X1200P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL,   281250000, 144, 208, 352, 3, 6, 53, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
+#define V4L2_DV_BT_DMT_1920X1200P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL, 245250000, 136, 208, 344, 3, 6, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1200P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL, 281250000, 144, 208, 352, 3, 6, 53, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1200P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_HSYNC_POS_POL, 317000000, 48, 32, 80, 3, 6, 62, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1920X1440P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_VSYNC_POS_POL, 234000000, 128, 208, 344, 1, 3, 56, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_1920X1200P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_HSYNC_POS_POL,   317000000, 48, 32, 80, 3, 6, 62, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_1920X1440P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_VSYNC_POS_POL,   234000000, 128, 208, 344, 1, 3, 56, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1920X1440P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_VSYNC_POS_POL,   297000000, 144, 224, 352, 1, 3, 56, 0, 0, 0,   V4L2_DV_BT_STD_DMT, 0)  }
-#define V4L2_DV_BT_DMT_1920X1440P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_HSYNC_POS_POL,   380500000, 48, 32, 80, 3, 4, 78, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_1920X1440P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_VSYNC_POS_POL, 297000000, 144, 224, 352, 1, 3, 56, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1440P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_HSYNC_POS_POL, 380500000, 48, 32, 80, 3, 4, 78, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_2048X1152P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2048, 1152, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 162000000, 26, 80, 96, 1, 3, 44, 0, 0, 0, V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_HSYNC_POS_POL, 268500000, 48, 32, 80, 3, 6, 37, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_2048X1152P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(2048, 1152, 0,   V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL,   162000000, 26, 80, 96, 1, 3, 44, 0, 0, 0,   V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_2560X1600P60_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_HSYNC_POS_POL,   268500000, 48, 32, 80, 3, 6, 37, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
-#define V4L2_DV_BT_DMT_2560X1600P60 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL,   348500000, 192, 280, 472, 3, 6, 49, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_2560X1600P75 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL,   443250000, 208, 280, 488, 3, 6, 63, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
+#define V4L2_DV_BT_DMT_2560X1600P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL, 348500000, 192, 280, 472, 3, 6, 49, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL, 443250000, 208, 280, 488, 3, 6, 63, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL, 505250000, 208, 280, 488, 3, 6, 73, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_HSYNC_POS_POL, 552750000, 48, 32, 80, 3, 6, 85, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_DMT_2560X1600P85 {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL,   505250000, 208, 280, 488, 3, 6, 73, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0)  }
-#define V4L2_DV_BT_DMT_2560X1600P120_RB {   .type = V4L2_DV_BT_656_1120,   V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_HSYNC_POS_POL,   552750000, 48, 32, 80, 3, 6, 85, 0, 0, 0,   V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT,   V4L2_DV_FL_REDUCED_BLANKING)  }
+#define V4L2_DV_BT_DMT_4096X2160P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 556744000, 8, 32, 40, 48, 8, 6, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_4096X2160P59_94_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 556188000, 8, 32, 40, 48, 8, 6, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-mediabus.h b/libc/kernel/uapi/linux/v4l2-mediabus.h
index 84aa5d3..2c2b0e7 100644
--- a/libc/kernel/uapi/linux/v4l2-mediabus.h
+++ b/libc/kernel/uapi/linux/v4l2-mediabus.h
@@ -22,95 +22,110 @@
 #include <linux/videodev2.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mbus_pixelcode {
- V4L2_MBUS_FMT_FIXED = 0x0001,
- V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
- V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
+  V4L2_MBUS_FMT_FIXED = 0x0001,
+  V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
+  V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
- V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE = 0x1004,
- V4L2_MBUS_FMT_BGR565_2X8_BE = 0x1005,
- V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006,
+  V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
+  V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE = 0x1004,
+  V4L2_MBUS_FMT_BGR565_2X8_BE = 0x1005,
+  V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
- V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
- V4L2_MBUS_FMT_RGB666_1X18 = 0x1009,
- V4L2_MBUS_FMT_RGB888_1X24 = 0x100a,
+  V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
+  V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
+  V4L2_MBUS_FMT_RGB666_1X18 = 0x1009,
+  V4L2_MBUS_FMT_RGB888_1X24 = 0x100a,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b,
- V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
- V4L2_MBUS_FMT_ARGB8888_1X32 = 0x100d,
- V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
+  V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b,
+  V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
+  V4L2_MBUS_FMT_ARGB8888_1X32 = 0x100d,
+  V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
- V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
- V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003,
- V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004,
+  V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
+  V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
+  V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003,
+  V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_YVYU8_1_5X8 = 0x2005,
- V4L2_MBUS_FMT_UYVY8_2X8 = 0x2006,
- V4L2_MBUS_FMT_VYUY8_2X8 = 0x2007,
- V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008,
+  V4L2_MBUS_FMT_YVYU8_1_5X8 = 0x2005,
+  V4L2_MBUS_FMT_UYVY8_2X8 = 0x2006,
+  V4L2_MBUS_FMT_VYUY8_2X8 = 0x2007,
+  V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009,
- V4L2_MBUS_FMT_Y10_1X10 = 0x200a,
- V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,
- V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c,
+  V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009,
+  V4L2_MBUS_FMT_Y10_1X10 = 0x200a,
+  V4L2_MBUS_FMT_UYVY10_2X10 = 0x2018,
+  V4L2_MBUS_FMT_VYUY10_2X10 = 0x2019,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_Y12_1X12 = 0x2013,
- V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f,
- V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,
- V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
+  V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,
+  V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c,
+  V4L2_MBUS_FMT_Y12_1X12 = 0x2013,
+  V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
- V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
- V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
- V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
+  V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,
+  V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
+  V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
+  V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
- V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017,
- V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001,
- V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013,
+  V4L2_MBUS_FMT_UYVY10_1X20 = 0x201a,
+  V4L2_MBUS_FMT_VYUY10_1X20 = 0x201b,
+  V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
+  V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002,
- V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014,
- V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8 = 0x3015,
- V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8 = 0x3016,
+  V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
+  V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017,
+  V4L2_MBUS_FMT_UYVY12_2X12 = 0x201c,
+  V4L2_MBUS_FMT_VYUY12_2X12 = 0x201d,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8 = 0x3017,
- V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8 = 0x3018,
- V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b,
- V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c,
+  V4L2_MBUS_FMT_YUYV12_2X12 = 0x201e,
+  V4L2_MBUS_FMT_YVYU12_2X12 = 0x201f,
+  V4L2_MBUS_FMT_UYVY12_1X24 = 0x2020,
+  V4L2_MBUS_FMT_VYUY12_1X24 = 0x2021,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009,
- V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8 = 0x300d,
- V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE = 0x3003,
- V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE = 0x3004,
+  V4L2_MBUS_FMT_YUYV12_1X24 = 0x2022,
+  V4L2_MBUS_FMT_YVYU12_1X24 = 0x2023,
+  V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001,
+  V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE = 0x3005,
- V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE = 0x3006,
- V4L2_MBUS_FMT_SBGGR10_1X10 = 0x3007,
- V4L2_MBUS_FMT_SGBRG10_1X10 = 0x300e,
+  V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002,
+  V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014,
+  V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8 = 0x3015,
+  V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8 = 0x3016,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_SGRBG10_1X10 = 0x300a,
- V4L2_MBUS_FMT_SRGGB10_1X10 = 0x300f,
- V4L2_MBUS_FMT_SBGGR12_1X12 = 0x3008,
- V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010,
+  V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8 = 0x3017,
+  V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8 = 0x3018,
+  V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b,
+  V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011,
- V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012,
- V4L2_MBUS_FMT_JPEG_1X8 = 0x4001,
- V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 = 0x5001,
+  V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009,
+  V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8 = 0x300d,
+  V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE = 0x3003,
+  V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE = 0x3004,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MBUS_FMT_AHSV8888_1X32 = 0x6001,
+  V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE = 0x3005,
+  V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE = 0x3006,
+  V4L2_MBUS_FMT_SBGGR10_1X10 = 0x3007,
+  V4L2_MBUS_FMT_SGBRG10_1X10 = 0x300e,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MBUS_FMT_SGRBG10_1X10 = 0x300a,
+  V4L2_MBUS_FMT_SRGGB10_1X10 = 0x300f,
+  V4L2_MBUS_FMT_SBGGR12_1X12 = 0x3008,
+  V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011,
+  V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012,
+  V4L2_MBUS_FMT_JPEG_1X8 = 0x4001,
+  V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 = 0x5001,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_MBUS_FMT_AHSV8888_1X32 = 0x6001,
 };
 struct v4l2_mbus_framefmt {
- __u32 width;
+  __u32 width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 height;
- __u32 code;
- __u32 field;
- __u32 colorspace;
+  __u32 height;
+  __u32 code;
+  __u32 field;
+  __u32 colorspace;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[7];
+  __u32 reserved[7];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-subdev.h b/libc/kernel/uapi/linux/v4l2-subdev.h
index ad9cb8b..653f846 100644
--- a/libc/kernel/uapi/linux/v4l2-subdev.h
+++ b/libc/kernel/uapi/linux/v4l2-subdev.h
@@ -24,96 +24,95 @@
 #include <linux/v4l2-common.h>
 #include <linux/v4l2-mediabus.h>
 enum v4l2_subdev_format_whence {
- V4L2_SUBDEV_FORMAT_TRY = 0,
+  V4L2_SUBDEV_FORMAT_TRY = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_SUBDEV_FORMAT_ACTIVE = 1,
+  V4L2_SUBDEV_FORMAT_ACTIVE = 1,
 };
 struct v4l2_subdev_format {
- __u32 which;
+  __u32 which;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pad;
- struct v4l2_mbus_framefmt format;
- __u32 reserved[8];
+  __u32 pad;
+  struct v4l2_mbus_framefmt format;
+  __u32 reserved[8];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_subdev_crop {
- __u32 which;
- __u32 pad;
- struct v4l2_rect rect;
+  __u32 which;
+  __u32 pad;
+  struct v4l2_rect rect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[8];
+  __u32 reserved[8];
 };
 struct v4l2_subdev_mbus_code_enum {
- __u32 pad;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 code;
- __u32 reserved[9];
+  __u32 index;
+  __u32 code;
+  __u32 reserved[9];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_subdev_frame_size_enum {
- __u32 index;
- __u32 pad;
- __u32 code;
+  __u32 index;
+  __u32 pad;
+  __u32 code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 min_width;
- __u32 max_width;
- __u32 min_height;
- __u32 max_height;
+  __u32 min_width;
+  __u32 max_width;
+  __u32 min_height;
+  __u32 max_height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[9];
+  __u32 reserved[9];
 };
 struct v4l2_subdev_frame_interval {
- __u32 pad;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_fract interval;
- __u32 reserved[9];
+  struct v4l2_fract interval;
+  __u32 reserved[9];
 };
 struct v4l2_subdev_frame_interval_enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 pad;
- __u32 code;
- __u32 width;
+  __u32 index;
+  __u32 pad;
+  __u32 code;
+  __u32 width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 height;
- struct v4l2_fract interval;
- __u32 reserved[9];
+  __u32 height;
+  struct v4l2_fract interval;
+  __u32 reserved[9];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_subdev_selection {
- __u32 which;
- __u32 pad;
- __u32 target;
+  __u32 which;
+  __u32 pad;
+  __u32 target;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- struct v4l2_rect r;
- __u32 reserved[8];
+  __u32 flags;
+  struct v4l2_rect r;
+  __u32 reserved[8];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct v4l2_subdev_edid {
- __u32 pad;
- __u32 start_block;
- __u32 blocks;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[5];
- __u8 __user *edid;
-};
+#define v4l2_subdev_edid v4l2_edid
 #define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format)
-#define VIDIOC_SUBDEV_G_FRAME_INTERVAL   _IOWR('V', 21, struct v4l2_subdev_frame_interval)
-#define VIDIOC_SUBDEV_S_FRAME_INTERVAL   _IOWR('V', 22, struct v4l2_subdev_frame_interval)
-#define VIDIOC_SUBDEV_ENUM_MBUS_CODE   _IOWR('V', 2, struct v4l2_subdev_mbus_code_enum)
+#define VIDIOC_SUBDEV_G_FRAME_INTERVAL _IOWR('V', 21, struct v4l2_subdev_frame_interval)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VIDIOC_SUBDEV_ENUM_FRAME_SIZE   _IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
-#define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL   _IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
+#define VIDIOC_SUBDEV_S_FRAME_INTERVAL _IOWR('V', 22, struct v4l2_subdev_frame_interval)
+#define VIDIOC_SUBDEV_ENUM_MBUS_CODE _IOWR('V', 2, struct v4l2_subdev_mbus_code_enum)
+#define VIDIOC_SUBDEV_ENUM_FRAME_SIZE _IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
+#define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL _IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_SUBDEV_G_CROP _IOWR('V', 59, struct v4l2_subdev_crop)
 #define VIDIOC_SUBDEV_S_CROP _IOWR('V', 60, struct v4l2_subdev_crop)
+#define VIDIOC_SUBDEV_G_SELECTION _IOWR('V', 61, struct v4l2_subdev_selection)
+#define VIDIOC_SUBDEV_S_SELECTION _IOWR('V', 62, struct v4l2_subdev_selection)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VIDIOC_SUBDEV_G_SELECTION   _IOWR('V', 61, struct v4l2_subdev_selection)
-#define VIDIOC_SUBDEV_S_SELECTION   _IOWR('V', 62, struct v4l2_subdev_selection)
-#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_subdev_edid)
-#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_subdev_edid)
+#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_edid)
+#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_edid)
+#define VIDIOC_SUBDEV_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
+#define VIDIOC_SUBDEV_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_SUBDEV_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
+#define VIDIOC_SUBDEV_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings)
+#define VIDIOC_SUBDEV_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 71e5373..a6c6a2f 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 200192
+#define LINUX_VERSION_CODE 201226
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/veth.h b/libc/kernel/uapi/linux/veth.h
index 000f56b..e08ec23 100644
--- a/libc/kernel/uapi/linux/veth.h
+++ b/libc/kernel/uapi/linux/veth.h
@@ -19,10 +19,10 @@
 #ifndef __NET_VETH_H_
 #define __NET_VETH_H_
 enum {
- VETH_INFO_UNSPEC,
+  VETH_INFO_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VETH_INFO_PEER,
- __VETH_INFO_MAX
+  VETH_INFO_PEER,
+  __VETH_INFO_MAX
 #define VETH_INFO_MAX (__VETH_INFO_MAX - 1)
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 88cb067..32db70e 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -24,6 +24,11 @@
 #define VFIO_API_VERSION 0
 #define VFIO_TYPE1_IOMMU 1
 #define VFIO_SPAPR_TCE_IOMMU 2
+#define VFIO_TYPE1v2_IOMMU 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VFIO_DMA_CC_IOMMU 4
+#define VFIO_EEH 5
+#define VFIO_TYPE1_NESTING_IOMMU 6
 #define VFIO_TYPE (';')
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFIO_BASE 100
@@ -32,8 +37,8 @@
 #define VFIO_SET_IOMMU _IO(VFIO_TYPE, VFIO_BASE + 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vfio_group_status {
- __u32 argsz;
- __u32 flags;
+  __u32 argsz;
+  __u32 flags;
 #define VFIO_GROUP_FLAGS_VIABLE (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFIO_GROUP_FLAGS_CONTAINER_SET (1 << 1)
@@ -44,49 +49,49 @@
 #define VFIO_GROUP_UNSET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 5)
 #define VFIO_GROUP_GET_DEVICE_FD _IO(VFIO_TYPE, VFIO_BASE + 6)
 struct vfio_device_info {
- __u32 argsz;
+  __u32 argsz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
+  __u32 flags;
 #define VFIO_DEVICE_FLAGS_RESET (1 << 0)
 #define VFIO_DEVICE_FLAGS_PCI (1 << 1)
- __u32 num_regions;
+  __u32 num_regions;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_irqs;
+  __u32 num_irqs;
 };
 #define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7)
 struct vfio_region_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 argsz;
- __u32 flags;
+  __u32 argsz;
+  __u32 flags;
 #define VFIO_REGION_INFO_FLAG_READ (1 << 0)
 #define VFIO_REGION_INFO_FLAG_WRITE (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFIO_REGION_INFO_FLAG_MMAP (1 << 2)
- __u32 index;
- __u32 resv;
- __u64 size;
+  __u32 index;
+  __u32 resv;
+  __u64 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 offset;
+  __u64 offset;
 };
 #define VFIO_DEVICE_GET_REGION_INFO _IO(VFIO_TYPE, VFIO_BASE + 8)
 struct vfio_irq_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 argsz;
- __u32 flags;
+  __u32 argsz;
+  __u32 flags;
 #define VFIO_IRQ_INFO_EVENTFD (1 << 0)
 #define VFIO_IRQ_INFO_MASKABLE (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFIO_IRQ_INFO_AUTOMASKED (1 << 2)
 #define VFIO_IRQ_INFO_NORESIZE (1 << 3)
- __u32 index;
- __u32 count;
+  __u32 index;
+  __u32 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9)
 struct vfio_irq_set {
- __u32 argsz;
+  __u32 argsz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
+  __u32 flags;
 #define VFIO_IRQ_SET_DATA_NONE (1 << 0)
 #define VFIO_IRQ_SET_DATA_BOOL (1 << 1)
 #define VFIO_IRQ_SET_DATA_EVENTFD (1 << 2)
@@ -94,106 +99,131 @@
 #define VFIO_IRQ_SET_ACTION_MASK (1 << 3)
 #define VFIO_IRQ_SET_ACTION_UNMASK (1 << 4)
 #define VFIO_IRQ_SET_ACTION_TRIGGER (1 << 5)
- __u32 index;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 start;
- __u32 count;
- __u8 data[];
+  __u32 start;
+  __u32 count;
+  __u8 data[];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFIO_DEVICE_SET_IRQS _IO(VFIO_TYPE, VFIO_BASE + 10)
-#define VFIO_IRQ_SET_DATA_TYPE_MASK (VFIO_IRQ_SET_DATA_NONE |   VFIO_IRQ_SET_DATA_BOOL |   VFIO_IRQ_SET_DATA_EVENTFD)
-#define VFIO_IRQ_SET_ACTION_TYPE_MASK (VFIO_IRQ_SET_ACTION_MASK |   VFIO_IRQ_SET_ACTION_UNMASK |   VFIO_IRQ_SET_ACTION_TRIGGER)
+#define VFIO_IRQ_SET_DATA_TYPE_MASK (VFIO_IRQ_SET_DATA_NONE | VFIO_IRQ_SET_DATA_BOOL | VFIO_IRQ_SET_DATA_EVENTFD)
+#define VFIO_IRQ_SET_ACTION_TYPE_MASK (VFIO_IRQ_SET_ACTION_MASK | VFIO_IRQ_SET_ACTION_UNMASK | VFIO_IRQ_SET_ACTION_TRIGGER)
 #define VFIO_DEVICE_RESET _IO(VFIO_TYPE, VFIO_BASE + 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- VFIO_PCI_BAR0_REGION_INDEX,
- VFIO_PCI_BAR1_REGION_INDEX,
- VFIO_PCI_BAR2_REGION_INDEX,
+  VFIO_PCI_BAR0_REGION_INDEX,
+  VFIO_PCI_BAR1_REGION_INDEX,
+  VFIO_PCI_BAR2_REGION_INDEX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VFIO_PCI_BAR3_REGION_INDEX,
- VFIO_PCI_BAR4_REGION_INDEX,
- VFIO_PCI_BAR5_REGION_INDEX,
- VFIO_PCI_ROM_REGION_INDEX,
+  VFIO_PCI_BAR3_REGION_INDEX,
+  VFIO_PCI_BAR4_REGION_INDEX,
+  VFIO_PCI_BAR5_REGION_INDEX,
+  VFIO_PCI_ROM_REGION_INDEX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VFIO_PCI_CONFIG_REGION_INDEX,
- VFIO_PCI_VGA_REGION_INDEX,
- VFIO_PCI_NUM_REGIONS
+  VFIO_PCI_CONFIG_REGION_INDEX,
+  VFIO_PCI_VGA_REGION_INDEX,
+  VFIO_PCI_NUM_REGIONS
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- VFIO_PCI_INTX_IRQ_INDEX,
- VFIO_PCI_MSI_IRQ_INDEX,
- VFIO_PCI_MSIX_IRQ_INDEX,
+  VFIO_PCI_INTX_IRQ_INDEX,
+  VFIO_PCI_MSI_IRQ_INDEX,
+  VFIO_PCI_MSIX_IRQ_INDEX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- VFIO_PCI_ERR_IRQ_INDEX,
- VFIO_PCI_NUM_IRQS
+  VFIO_PCI_ERR_IRQ_INDEX,
+  VFIO_PCI_NUM_IRQS
 };
 struct vfio_pci_dependent_device {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 group_id;
- __u16 segment;
- __u8 bus;
- __u8 devfn;
+  __u32 group_id;
+  __u16 segment;
+  __u8 bus;
+  __u8 devfn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct vfio_pci_hot_reset_info {
- __u32 argsz;
- __u32 flags;
+  __u32 argsz;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count;
- struct vfio_pci_dependent_device devices[];
+  __u32 count;
+  struct vfio_pci_dependent_device devices[];
 };
 #define VFIO_DEVICE_GET_PCI_HOT_RESET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vfio_pci_hot_reset {
- __u32 argsz;
- __u32 flags;
- __u32 count;
+  __u32 argsz;
+  __u32 flags;
+  __u32 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 group_fds[];
+  __s32 group_fds[];
 };
 #define VFIO_DEVICE_PCI_HOT_RESET _IO(VFIO_TYPE, VFIO_BASE + 13)
 struct vfio_iommu_type1_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 argsz;
- __u32 flags;
+  __u32 argsz;
+  __u32 flags;
 #define VFIO_IOMMU_INFO_PGSIZES (1 << 0)
- __u64 iova_pgsizes;
+  __u64 iova_pgsizes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
 struct vfio_iommu_type1_dma_map {
- __u32 argsz;
+  __u32 argsz;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
+  __u32 flags;
 #define VFIO_DMA_MAP_FLAG_READ (1 << 0)
 #define VFIO_DMA_MAP_FLAG_WRITE (1 << 1)
- __u64 vaddr;
+  __u64 vaddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 iova;
- __u64 size;
+  __u64 iova;
+  __u64 size;
 };
 #define VFIO_IOMMU_MAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 13)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vfio_iommu_type1_dma_unmap {
- __u32 argsz;
- __u32 flags;
- __u64 iova;
+  __u32 argsz;
+  __u32 flags;
+  __u64 iova;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 size;
+  __u64 size;
 };
 #define VFIO_IOMMU_UNMAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 14)
 #define VFIO_IOMMU_ENABLE _IO(VFIO_TYPE, VFIO_BASE + 15)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFIO_IOMMU_DISABLE _IO(VFIO_TYPE, VFIO_BASE + 16)
 struct vfio_iommu_spapr_tce_info {
- __u32 argsz;
- __u32 flags;
+  __u32 argsz;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 dma32_window_start;
- __u32 dma32_window_size;
+  __u32 dma32_window_start;
+  __u32 dma32_window_size;
 };
 #define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct vfio_eeh_pe_op {
+  __u32 argsz;
+  __u32 flags;
+  __u32 op;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define VFIO_EEH_PE_DISABLE 0
+#define VFIO_EEH_PE_ENABLE 1
+#define VFIO_EEH_PE_UNFREEZE_IO 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VFIO_EEH_PE_UNFREEZE_DMA 3
+#define VFIO_EEH_PE_GET_STATE 4
+#define VFIO_EEH_PE_STATE_NORMAL 0
+#define VFIO_EEH_PE_STATE_RESET 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VFIO_EEH_PE_STATE_STOPPED 2
+#define VFIO_EEH_PE_STATE_STOPPED_DMA 4
+#define VFIO_EEH_PE_STATE_UNAVAIL 5
+#define VFIO_EEH_PE_RESET_DEACTIVATE 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VFIO_EEH_PE_RESET_HOT 6
+#define VFIO_EEH_PE_RESET_FUNDAMENTAL 7
+#define VFIO_EEH_PE_CONFIGURE 8
+#define VFIO_EEH_PE_OP _IO(VFIO_TYPE, VFIO_BASE + 21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index c49c071..0a66e7a 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -26,39 +26,39 @@
 #include <linux/virtio_ring.h>
 struct vhost_vring_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int index;
- unsigned int num;
+  unsigned int index;
+  unsigned int num;
 };
 struct vhost_vring_file {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int index;
- int fd;
+  unsigned int index;
+  int fd;
 };
 struct vhost_vring_addr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int index;
- unsigned int flags;
+  unsigned int index;
+  unsigned int flags;
 #define VHOST_VRING_F_LOG 0
- __u64 desc_user_addr;
+  __u64 desc_user_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 used_user_addr;
- __u64 avail_user_addr;
- __u64 log_guest_addr;
+  __u64 used_user_addr;
+  __u64 avail_user_addr;
+  __u64 log_guest_addr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vhost_memory_region {
- __u64 guest_phys_addr;
- __u64 memory_size;
- __u64 userspace_addr;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 userspace_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 flags_padding;
+  __u64 flags_padding;
 };
 #define VHOST_PAGE_SIZE 0x1000
 struct vhost_memory {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 nregions;
- __u32 padding;
- struct vhost_memory_region regions[0];
+  __u32 nregions;
+  __u32 padding;
+  struct vhost_memory_region regions[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VHOST_VIRTIO 0xAF
@@ -86,10 +86,10 @@
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int abi_version;
- char vhost_wwpn[224];
- unsigned short vhost_tpgt;
- unsigned short reserved;
+  int abi_version;
+  char vhost_wwpn[224];
+  unsigned short vhost_tpgt;
+  unsigned short reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define VHOST_SCSI_SET_ENDPOINT _IOW(VHOST_VIRTIO, 0x40, struct vhost_scsi_target)
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index b1c6042..df3ebc3 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -28,1391 +28,1508 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_MAX_FRAME 32
 #define VIDEO_MAX_PLANES 8
-#define v4l2_fourcc(a, b, c, d)  ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
+#define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
+#define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1 << 31))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_field {
+  V4L2_FIELD_ANY = 0,
+  V4L2_FIELD_NONE = 1,
+  V4L2_FIELD_TOP = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_FIELD_ANY = 0,
- V4L2_FIELD_NONE = 1,
- V4L2_FIELD_TOP = 2,
- V4L2_FIELD_BOTTOM = 3,
+  V4L2_FIELD_BOTTOM = 3,
+  V4L2_FIELD_INTERLACED = 4,
+  V4L2_FIELD_SEQ_TB = 5,
+  V4L2_FIELD_SEQ_BT = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_FIELD_INTERLACED = 4,
- V4L2_FIELD_SEQ_TB = 5,
- V4L2_FIELD_SEQ_BT = 6,
- V4L2_FIELD_ALTERNATE = 7,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_FIELD_INTERLACED_TB = 8,
- V4L2_FIELD_INTERLACED_BT = 9,
+  V4L2_FIELD_ALTERNATE = 7,
+  V4L2_FIELD_INTERLACED_TB = 8,
+  V4L2_FIELD_INTERLACED_BT = 9,
 };
-#define V4L2_FIELD_HAS_TOP(field)   ((field) == V4L2_FIELD_TOP ||  (field) == V4L2_FIELD_INTERLACED ||  (field) == V4L2_FIELD_INTERLACED_TB ||  (field) == V4L2_FIELD_INTERLACED_BT ||  (field) == V4L2_FIELD_SEQ_TB ||  (field) == V4L2_FIELD_SEQ_BT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_FIELD_HAS_BOTTOM(field)   ((field) == V4L2_FIELD_BOTTOM ||  (field) == V4L2_FIELD_INTERLACED ||  (field) == V4L2_FIELD_INTERLACED_TB ||  (field) == V4L2_FIELD_INTERLACED_BT ||  (field) == V4L2_FIELD_SEQ_TB ||  (field) == V4L2_FIELD_SEQ_BT)
-#define V4L2_FIELD_HAS_BOTH(field)   ((field) == V4L2_FIELD_INTERLACED ||  (field) == V4L2_FIELD_INTERLACED_TB ||  (field) == V4L2_FIELD_INTERLACED_BT ||  (field) == V4L2_FIELD_SEQ_TB ||  (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_TOP(field) ((field) == V4L2_FIELD_TOP || (field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTTOM(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTH(field) ((field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_T_OR_B(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_TOP || (field) == V4L2_FIELD_ALTERNATE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_buf_type {
- V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
+  V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
+  V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
+  V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
- V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
- V4L2_BUF_TYPE_VBI_CAPTURE = 4,
- V4L2_BUF_TYPE_VBI_OUTPUT = 5,
+  V4L2_BUF_TYPE_VBI_CAPTURE = 4,
+  V4L2_BUF_TYPE_VBI_OUTPUT = 5,
+  V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
+  V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
- V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
- V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
- V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
+  V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
+  V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
+  V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
+  V4L2_BUF_TYPE_SDR_CAPTURE = 11,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
- V4L2_BUF_TYPE_PRIVATE = 0x80,
+  V4L2_BUF_TYPE_PRIVATE = 0x80,
 };
-#define V4L2_TYPE_IS_MULTIPLANAR(type)   ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE   || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
+#define V4L2_TYPE_IS_MULTIPLANAR(type) ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
+#define V4L2_TYPE_IS_OUTPUT(type) ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY || (type) == V4L2_BUF_TYPE_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_TYPE_IS_OUTPUT(type)   ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT   || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE   || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY   || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY   || (type) == V4L2_BUF_TYPE_VBI_OUTPUT   || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
 enum v4l2_tuner_type {
- V4L2_TUNER_RADIO = 1,
- V4L2_TUNER_ANALOG_TV = 2,
+  V4L2_TUNER_RADIO = 1,
+  V4L2_TUNER_ANALOG_TV = 2,
+  V4L2_TUNER_DIGITAL_TV = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_TUNER_DIGITAL_TV = 3,
+  V4L2_TUNER_ADC = 4,
+  V4L2_TUNER_RF = 5,
 };
 enum v4l2_memory {
- V4L2_MEMORY_MMAP = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_MEMORY_USERPTR = 2,
- V4L2_MEMORY_OVERLAY = 3,
- V4L2_MEMORY_DMABUF = 4,
+  V4L2_MEMORY_MMAP = 1,
+  V4L2_MEMORY_USERPTR = 2,
+  V4L2_MEMORY_OVERLAY = 3,
+  V4L2_MEMORY_DMABUF = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_colorspace {
- V4L2_COLORSPACE_SMPTE170M = 1,
- V4L2_COLORSPACE_SMPTE240M = 2,
- V4L2_COLORSPACE_REC709 = 3,
+  V4L2_COLORSPACE_SMPTE170M = 1,
+  V4L2_COLORSPACE_SMPTE240M = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_COLORSPACE_BT878 = 4,
- V4L2_COLORSPACE_470_SYSTEM_M = 5,
- V4L2_COLORSPACE_470_SYSTEM_BG = 6,
- V4L2_COLORSPACE_JPEG = 7,
+  V4L2_COLORSPACE_REC709 = 3,
+  V4L2_COLORSPACE_BT878 = 4,
+  V4L2_COLORSPACE_470_SYSTEM_M = 5,
+  V4L2_COLORSPACE_470_SYSTEM_BG = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_COLORSPACE_SRGB = 8,
+  V4L2_COLORSPACE_JPEG = 7,
+  V4L2_COLORSPACE_SRGB = 8,
 };
 enum v4l2_priority {
- V4L2_PRIORITY_UNSET = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_PRIORITY_BACKGROUND = 1,
- V4L2_PRIORITY_INTERACTIVE = 2,
- V4L2_PRIORITY_RECORD = 3,
- V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
+  V4L2_PRIORITY_UNSET = 0,
+  V4L2_PRIORITY_BACKGROUND = 1,
+  V4L2_PRIORITY_INTERACTIVE = 2,
+  V4L2_PRIORITY_RECORD = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
 };
 struct v4l2_rect {
- __s32 left;
- __s32 top;
+  __s32 left;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 width;
- __u32 height;
+  __s32 top;
+  __u32 width;
+  __u32 height;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_fract {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 numerator;
- __u32 denominator;
+  __u32 numerator;
+  __u32 denominator;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_capability {
+  __u8 driver[16];
+  __u8 card[32];
+  __u8 bus_info[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 driver[16];
- __u8 card[32];
- __u8 bus_info[32];
- __u32 version;
+  __u32 version;
+  __u32 capabilities;
+  __u32 device_caps;
+  __u32 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 capabilities;
- __u32 device_caps;
- __u32 reserved[3];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CAP_VIDEO_CAPTURE 0x00000001
 #define V4L2_CAP_VIDEO_OUTPUT 0x00000002
 #define V4L2_CAP_VIDEO_OVERLAY 0x00000004
-#define V4L2_CAP_VBI_CAPTURE 0x00000010
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CAP_VBI_CAPTURE 0x00000010
 #define V4L2_CAP_VBI_OUTPUT 0x00000020
 #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040
 #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080
-#define V4L2_CAP_RDS_CAPTURE 0x00000100
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CAP_RDS_CAPTURE 0x00000100
 #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200
 #define V4L2_CAP_HW_FREQ_SEEK 0x00000400
 #define V4L2_CAP_RDS_OUTPUT 0x00000800
-#define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
 #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000
 #define V4L2_CAP_VIDEO_M2M_MPLANE 0x00004000
 #define V4L2_CAP_VIDEO_M2M 0x00008000
-#define V4L2_CAP_TUNER 0x00010000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CAP_TUNER 0x00010000
 #define V4L2_CAP_AUDIO 0x00020000
 #define V4L2_CAP_RADIO 0x00040000
 #define V4L2_CAP_MODULATOR 0x00080000
-#define V4L2_CAP_READWRITE 0x01000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CAP_SDR_CAPTURE 0x00100000
+#define V4L2_CAP_EXT_PIX_FORMAT 0x00200000
+#define V4L2_CAP_READWRITE 0x01000000
 #define V4L2_CAP_ASYNCIO 0x02000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_DEVICE_CAPS 0x80000000
 struct v4l2_pix_format {
+  __u32 width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 width;
- __u32 height;
- __u32 pixelformat;
- __u32 field;
+  __u32 height;
+  __u32 pixelformat;
+  __u32 field;
+  __u32 bytesperline;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bytesperline;
- __u32 sizeimage;
- __u32 colorspace;
- __u32 priv;
+  __u32 sizeimage;
+  __u32 colorspace;
+  __u32 priv;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')
 #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4')
+#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2')
 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
+#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5')
+#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5')
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')
 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
+#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5')
+#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
 #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')
 #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')
+#define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4')
+#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4')
 #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4')
+#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4')
 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')
 #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ')
 #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ')
 #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')
 #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')
 #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')
 #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
 #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
 #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2')
 #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
 #define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0')
 #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0')
 #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2')
 #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2')
 #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
 #define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
 #define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
 #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
 #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')
 #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')
 #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')
 #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1')
 #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3')
 #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2')
 #define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D')
 #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L')
 #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
 #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1')
 #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')
 #define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')
 #define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1')
 #define V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0')
 #define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
 #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G')
 #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8')
 #define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0')
 #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V')
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I')
 #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L')
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1')
 #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I')
+#define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8')
+#define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6')
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8')
+#define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4')
+#define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2')
+#define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
 struct v4l2_fmtdesc {
- __u32 index;
- __u32 type;
- __u32 flags;
+  __u32 index;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 description[32];
- __u32 pixelformat;
- __u32 reserved[4];
+  __u32 flags;
+  __u8 description[32];
+  __u32 pixelformat;
+  __u32 reserved[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
 #define V4L2_FMT_FLAG_EMULATED 0x0002
 enum v4l2_frmsizetypes {
- V4L2_FRMSIZE_TYPE_DISCRETE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
- V4L2_FRMSIZE_TYPE_STEPWISE = 3,
+  V4L2_FRMSIZE_TYPE_DISCRETE = 1,
+  V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
+  V4L2_FRMSIZE_TYPE_STEPWISE = 3,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_frmsize_discrete {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 width;
- __u32 height;
+  __u32 width;
+  __u32 height;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_frmsize_stepwise {
+  __u32 min_width;
+  __u32 max_width;
+  __u32 step_width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 min_width;
- __u32 max_width;
- __u32 step_width;
- __u32 min_height;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_height;
- __u32 step_height;
+  __u32 min_height;
+  __u32 max_height;
+  __u32 step_height;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_frmsizeenum {
+  __u32 index;
+  __u32 pixel_format;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 pixel_format;
- __u32 type;
- union {
+  union {
+    struct v4l2_frmsize_discrete discrete;
+    struct v4l2_frmsize_stepwise stepwise;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_frmsize_discrete discrete;
- struct v4l2_frmsize_stepwise stepwise;
- };
- __u32 reserved[2];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved[2];
 };
 enum v4l2_frmivaltypes {
- V4L2_FRMIVAL_TYPE_DISCRETE = 1,
- V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
+  V4L2_FRMIVAL_TYPE_DISCRETE = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_FRMIVAL_TYPE_STEPWISE = 3,
+  V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
+  V4L2_FRMIVAL_TYPE_STEPWISE = 3,
 };
 struct v4l2_frmival_stepwise {
- struct v4l2_fract min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_fract max;
- struct v4l2_fract step;
+  struct v4l2_fract min;
+  struct v4l2_fract max;
+  struct v4l2_fract step;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_frmivalenum {
+  __u32 index;
+  __u32 pixel_format;
+  __u32 width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 pixel_format;
- __u32 width;
- __u32 height;
+  __u32 height;
+  __u32 type;
+  union {
+    struct v4l2_fract discrete;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- union {
- struct v4l2_fract discrete;
- struct v4l2_frmival_stepwise stepwise;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- __u32 reserved[2];
+    struct v4l2_frmival_stepwise stepwise;
+  };
+  __u32 reserved[2];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_timecode {
+  __u32 type;
+  __u32 flags;
+  __u8 frames;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 flags;
- __u8 frames;
- __u8 seconds;
+  __u8 seconds;
+  __u8 minutes;
+  __u8 hours;
+  __u8 userbits[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 minutes;
- __u8 hours;
- __u8 userbits[4];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TC_TYPE_24FPS 1
 #define V4L2_TC_TYPE_25FPS 2
 #define V4L2_TC_TYPE_30FPS 3
-#define V4L2_TC_TYPE_50FPS 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_TC_TYPE_50FPS 4
 #define V4L2_TC_TYPE_60FPS 5
 #define V4L2_TC_FLAG_DROPFRAME 0x0001
 #define V4L2_TC_FLAG_COLORFRAME 0x0002
-#define V4L2_TC_USERBITS_field 0x000C
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_TC_USERBITS_field 0x000C
 #define V4L2_TC_USERBITS_USERDEFINED 0x0000
 #define V4L2_TC_USERBITS_8BITCHARS 0x0008
 struct v4l2_jpegcompression {
- int quality;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int APPn;
- int APP_len;
- char APP_data[60];
- int COM_len;
+  int quality;
+  int APPn;
+  int APP_len;
+  char APP_data[60];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char COM_data[60];
- __u32 jpeg_markers;
-#define V4L2_JPEG_MARKER_DHT (1<<3)
-#define V4L2_JPEG_MARKER_DQT (1<<4)
+  int COM_len;
+  char COM_data[60];
+  __u32 jpeg_markers;
+#define V4L2_JPEG_MARKER_DHT (1 << 3)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_JPEG_MARKER_DRI (1<<5)
-#define V4L2_JPEG_MARKER_COM (1<<6)
-#define V4L2_JPEG_MARKER_APP (1<<7)
+#define V4L2_JPEG_MARKER_DQT (1 << 4)
+#define V4L2_JPEG_MARKER_DRI (1 << 5)
+#define V4L2_JPEG_MARKER_COM (1 << 6)
+#define V4L2_JPEG_MARKER_APP (1 << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_requestbuffers {
- __u32 count;
- __u32 type;
- __u32 memory;
+  __u32 count;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[2];
+  __u32 memory;
+  __u32 reserved[2];
 };
 struct v4l2_plane {
- __u32 bytesused;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 length;
- union {
- __u32 mem_offset;
- unsigned long userptr;
+  __u32 bytesused;
+  __u32 length;
+  union {
+    __u32 mem_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 fd;
- } m;
- __u32 data_offset;
- __u32 reserved[11];
+    unsigned long userptr;
+    __s32 fd;
+  } m;
+  __u32 data_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved[11];
 };
 struct v4l2_buffer {
- __u32 index;
- __u32 type;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bytesused;
- __u32 flags;
- __u32 field;
- struct timeval timestamp;
+  __u32 type;
+  __u32 bytesused;
+  __u32 flags;
+  __u32 field;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_timecode timecode;
- __u32 sequence;
- __u32 memory;
- union {
+  struct timeval timestamp;
+  struct v4l2_timecode timecode;
+  __u32 sequence;
+  __u32 memory;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 offset;
- unsigned long userptr;
- struct v4l2_plane *planes;
- __s32 fd;
+  union {
+    __u32 offset;
+    unsigned long userptr;
+    struct v4l2_plane * planes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } m;
- __u32 length;
- __u32 reserved2;
- __u32 reserved;
+    __s32 fd;
+  } m;
+  __u32 length;
+  __u32 reserved2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved;
 };
-#define V4L2_BUF_FLAG_MAPPED 0x0001
-#define V4L2_BUF_FLAG_QUEUED 0x0002
-#define V4L2_BUF_FLAG_DONE 0x0004
+#define V4L2_BUF_FLAG_MAPPED 0x00000001
+#define V4L2_BUF_FLAG_QUEUED 0x00000002
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_BUF_FLAG_KEYFRAME 0x0008
-#define V4L2_BUF_FLAG_PFRAME 0x0010
-#define V4L2_BUF_FLAG_BFRAME 0x0020
-#define V4L2_BUF_FLAG_ERROR 0x0040
+#define V4L2_BUF_FLAG_DONE 0x00000004
+#define V4L2_BUF_FLAG_KEYFRAME 0x00000008
+#define V4L2_BUF_FLAG_PFRAME 0x00000010
+#define V4L2_BUF_FLAG_BFRAME 0x00000020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_BUF_FLAG_TIMECODE 0x0100
-#define V4L2_BUF_FLAG_PREPARED 0x0400
-#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800
-#define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000
+#define V4L2_BUF_FLAG_ERROR 0x00000040
+#define V4L2_BUF_FLAG_TIMECODE 0x00000100
+#define V4L2_BUF_FLAG_PREPARED 0x00000400
+#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0xe000
-#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x0000
-#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x2000
-#define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x4000
+#define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000
+#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000
+#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000
+#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000
+#define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000
+#define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000
+#define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_exportbuffer {
- __u32 type;
- __u32 index;
- __u32 plane;
+  __u32 type;
+  __u32 index;
+  __u32 plane;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __s32 fd;
- __u32 reserved[11];
+  __u32 flags;
+  __s32 fd;
+  __u32 reserved[11];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_framebuffer {
- __u32 capability;
- __u32 flags;
- void *base;
+  __u32 capability;
+  __u32 flags;
+  void * base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_pix_format fmt;
+  struct {
+    __u32 width;
+    __u32 height;
+    __u32 pixelformat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u32 field;
+    __u32 bytesperline;
+    __u32 sizeimage;
+    __u32 colorspace;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u32 priv;
+  } fmt;
 };
 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
-#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
 #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
 #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
 #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
-#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
 #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
 #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
 #define V4L2_FBUF_FLAG_PRIMARY 0x0001
-#define V4L2_FBUF_FLAG_OVERLAY 0x0002
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_FBUF_FLAG_OVERLAY 0x0002
 #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
 #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
 #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
-#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
 #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
 struct v4l2_clip {
- struct v4l2_rect c;
- struct v4l2_clip __user *next;
+  struct v4l2_rect c;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct v4l2_clip __user * next;
 };
 struct v4l2_window {
- struct v4l2_rect w;
- __u32 field;
+  struct v4l2_rect w;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 chromakey;
- struct v4l2_clip __user *clips;
- __u32 clipcount;
- void __user *bitmap;
+  __u32 field;
+  __u32 chromakey;
+  struct v4l2_clip __user * clips;
+  __u32 clipcount;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 global_alpha;
+  void __user * bitmap;
+  __u8 global_alpha;
 };
 struct v4l2_captureparm {
- __u32 capability;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 capturemode;
- struct v4l2_fract timeperframe;
- __u32 extendedmode;
- __u32 readbuffers;
+  __u32 capability;
+  __u32 capturemode;
+  struct v4l2_fract timeperframe;
+  __u32 extendedmode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[4];
+  __u32 readbuffers;
+  __u32 reserved[4];
 };
 #define V4L2_MODE_HIGHQUALITY 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CAP_TIMEPERFRAME 0x1000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_outputparm {
- __u32 capability;
- __u32 outputmode;
- struct v4l2_fract timeperframe;
+  __u32 capability;
+  __u32 outputmode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 extendedmode;
- __u32 writebuffers;
- __u32 reserved[4];
+  struct v4l2_fract timeperframe;
+  __u32 extendedmode;
+  __u32 writebuffers;
+  __u32 reserved[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_cropcap {
- __u32 type;
- struct v4l2_rect bounds;
- struct v4l2_rect defrect;
+  __u32 type;
+  struct v4l2_rect bounds;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_fract pixelaspect;
+  struct v4l2_rect defrect;
+  struct v4l2_fract pixelaspect;
 };
 struct v4l2_crop {
- __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_rect c;
+  __u32 type;
+  struct v4l2_rect c;
 };
 struct v4l2_selection {
- __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 target;
- __u32 flags;
- struct v4l2_rect r;
- __u32 reserved[9];
+  __u32 type;
+  __u32 target;
+  __u32 flags;
+  struct v4l2_rect r;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved[9];
 };
 typedef __u64 v4l2_std_id;
-#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
-#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
+#define V4L2_STD_PAL_B ((v4l2_std_id) 0x00000001)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
-#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
-#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
-#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
+#define V4L2_STD_PAL_B1 ((v4l2_std_id) 0x00000002)
+#define V4L2_STD_PAL_G ((v4l2_std_id) 0x00000004)
+#define V4L2_STD_PAL_H ((v4l2_std_id) 0x00000008)
+#define V4L2_STD_PAL_I ((v4l2_std_id) 0x00000010)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
-#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
-#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
-#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
+#define V4L2_STD_PAL_D ((v4l2_std_id) 0x00000020)
+#define V4L2_STD_PAL_D1 ((v4l2_std_id) 0x00000040)
+#define V4L2_STD_PAL_K ((v4l2_std_id) 0x00000080)
+#define V4L2_STD_PAL_M ((v4l2_std_id) 0x00000100)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
-#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
-#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
-#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
+#define V4L2_STD_PAL_N ((v4l2_std_id) 0x00000200)
+#define V4L2_STD_PAL_Nc ((v4l2_std_id) 0x00000400)
+#define V4L2_STD_PAL_60 ((v4l2_std_id) 0x00000800)
+#define V4L2_STD_NTSC_M ((v4l2_std_id) 0x00001000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
-#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
-#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
-#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
+#define V4L2_STD_NTSC_M_JP ((v4l2_std_id) 0x00002000)
+#define V4L2_STD_NTSC_443 ((v4l2_std_id) 0x00004000)
+#define V4L2_STD_NTSC_M_KR ((v4l2_std_id) 0x00008000)
+#define V4L2_STD_SECAM_B ((v4l2_std_id) 0x00010000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
-#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
-#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
-#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
+#define V4L2_STD_SECAM_D ((v4l2_std_id) 0x00020000)
+#define V4L2_STD_SECAM_G ((v4l2_std_id) 0x00040000)
+#define V4L2_STD_SECAM_H ((v4l2_std_id) 0x00080000)
+#define V4L2_STD_SECAM_K ((v4l2_std_id) 0x00100000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
-#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
-#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
-#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
+#define V4L2_STD_SECAM_K1 ((v4l2_std_id) 0x00200000)
+#define V4L2_STD_SECAM_L ((v4l2_std_id) 0x00400000)
+#define V4L2_STD_SECAM_LC ((v4l2_std_id) 0x00800000)
+#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id) 0x01000000)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_M_KR)
-#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |  V4L2_STD_SECAM_K |  V4L2_STD_SECAM_K1)
-#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |  V4L2_STD_SECAM_G |  V4L2_STD_SECAM_H |  V4L2_STD_SECAM_DK |  V4L2_STD_SECAM_L |  V4L2_STD_SECAM_LC)
-#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |  V4L2_STD_PAL_B1 |  V4L2_STD_PAL_G)
+#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id) 0x02000000)
+#define V4L2_STD_NTSC (V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_M_KR)
+#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D | V4L2_STD_SECAM_K | V4L2_STD_SECAM_K1)
+#define V4L2_STD_SECAM (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G | V4L2_STD_SECAM_H | V4L2_STD_SECAM_DK | V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |  V4L2_STD_PAL_D1 |  V4L2_STD_PAL_K)
-#define V4L2_STD_PAL (V4L2_STD_PAL_BG |  V4L2_STD_PAL_DK |  V4L2_STD_PAL_H |  V4L2_STD_PAL_I)
-#define V4L2_STD_B (V4L2_STD_PAL_B |  V4L2_STD_PAL_B1 |  V4L2_STD_SECAM_B)
-#define V4L2_STD_G (V4L2_STD_PAL_G |  V4L2_STD_SECAM_G)
+#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B | V4L2_STD_PAL_B1 | V4L2_STD_PAL_G)
+#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D | V4L2_STD_PAL_D1 | V4L2_STD_PAL_K)
+#define V4L2_STD_PAL (V4L2_STD_PAL_BG | V4L2_STD_PAL_DK | V4L2_STD_PAL_H | V4L2_STD_PAL_I)
+#define V4L2_STD_B (V4L2_STD_PAL_B | V4L2_STD_PAL_B1 | V4L2_STD_SECAM_B)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_H (V4L2_STD_PAL_H |  V4L2_STD_SECAM_H)
-#define V4L2_STD_L (V4L2_STD_SECAM_L |  V4L2_STD_SECAM_LC)
-#define V4L2_STD_GH (V4L2_STD_G |  V4L2_STD_H)
-#define V4L2_STD_DK (V4L2_STD_PAL_DK |  V4L2_STD_SECAM_DK)
+#define V4L2_STD_G (V4L2_STD_PAL_G | V4L2_STD_SECAM_G)
+#define V4L2_STD_H (V4L2_STD_PAL_H | V4L2_STD_SECAM_H)
+#define V4L2_STD_L (V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)
+#define V4L2_STD_GH (V4L2_STD_G | V4L2_STD_H)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_BG (V4L2_STD_B |  V4L2_STD_G)
-#define V4L2_STD_MN (V4L2_STD_PAL_M |  V4L2_STD_PAL_N |  V4L2_STD_PAL_Nc |  V4L2_STD_NTSC)
-#define V4L2_STD_MTS (V4L2_STD_NTSC_M |  V4L2_STD_PAL_M |  V4L2_STD_PAL_N |  V4L2_STD_PAL_Nc)
-#define V4L2_STD_525_60 (V4L2_STD_PAL_M |  V4L2_STD_PAL_60 |  V4L2_STD_NTSC |  V4L2_STD_NTSC_443)
+#define V4L2_STD_DK (V4L2_STD_PAL_DK | V4L2_STD_SECAM_DK)
+#define V4L2_STD_BG (V4L2_STD_B | V4L2_STD_G)
+#define V4L2_STD_MN (V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_NTSC)
+#define V4L2_STD_MTS (V4L2_STD_NTSC_M | V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_STD_625_50 (V4L2_STD_PAL |  V4L2_STD_PAL_N |  V4L2_STD_PAL_Nc |  V4L2_STD_SECAM)
-#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |  V4L2_STD_ATSC_16_VSB)
+#define V4L2_STD_525_60 (V4L2_STD_PAL_M | V4L2_STD_PAL_60 | V4L2_STD_NTSC | V4L2_STD_NTSC_443)
+#define V4L2_STD_625_50 (V4L2_STD_PAL | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_SECAM)
+#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB | V4L2_STD_ATSC_16_VSB)
 #define V4L2_STD_UNKNOWN 0
-#define V4L2_STD_ALL (V4L2_STD_525_60 |  V4L2_STD_625_50)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_STD_ALL (V4L2_STD_525_60 | V4L2_STD_625_50)
 struct v4l2_standard {
- __u32 index;
- v4l2_std_id id;
- __u8 name[24];
+  __u32 index;
+  v4l2_std_id id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_fract frameperiod;
- __u32 framelines;
- __u32 reserved[4];
+  __u8 name[24];
+  struct v4l2_fract frameperiod;
+  __u32 framelines;
+  __u32 reserved[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_bt_timings {
- __u32 width;
- __u32 height;
- __u32 interlaced;
+  __u32 width;
+  __u32 height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 polarities;
- __u64 pixelclock;
- __u32 hfrontporch;
- __u32 hsync;
+  __u32 interlaced;
+  __u32 polarities;
+  __u64 pixelclock;
+  __u32 hfrontporch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 hbackporch;
- __u32 vfrontporch;
- __u32 vsync;
- __u32 vbackporch;
+  __u32 hsync;
+  __u32 hbackporch;
+  __u32 vfrontporch;
+  __u32 vsync;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 il_vfrontporch;
- __u32 il_vsync;
- __u32 il_vbackporch;
- __u32 standards;
+  __u32 vbackporch;
+  __u32 il_vfrontporch;
+  __u32 il_vsync;
+  __u32 il_vbackporch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 reserved[14];
-} __attribute__ ((packed));
+  __u32 standards;
+  __u32 flags;
+  __u32 reserved[14];
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DV_PROGRESSIVE 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DV_INTERLACED 1
 #define V4L2_DV_VSYNC_POS_POL 0x00000001
 #define V4L2_DV_HSYNC_POS_POL 0x00000002
-#define V4L2_DV_BT_STD_CEA861 (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_DV_BT_STD_CEA861 (1 << 0)
 #define V4L2_DV_BT_STD_DMT (1 << 1)
 #define V4L2_DV_BT_STD_CVT (1 << 2)
 #define V4L2_DV_BT_STD_GTF (1 << 3)
-#define V4L2_DV_FL_REDUCED_BLANKING (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_DV_FL_REDUCED_BLANKING (1 << 0)
 #define V4L2_DV_FL_CAN_REDUCE_FPS (1 << 1)
 #define V4L2_DV_FL_REDUCED_FPS (1 << 2)
 #define V4L2_DV_FL_HALF_LINE (1 << 3)
-#define V4L2_DV_BT_BLANKING_WIDTH(bt)   (bt->hfrontporch + bt->hsync + bt->hbackporch)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define V4L2_DV_BT_FRAME_WIDTH(bt)   (bt->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt)   (bt->vfrontporch + bt->vsync + bt->vbackporch +   bt->il_vfrontporch + bt->il_vsync + bt->il_vbackporch)
-#define V4L2_DV_BT_FRAME_HEIGHT(bt)   (bt->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
+#define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
+#define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_dv_timings {
+  __u32 type;
+  union {
+    struct v4l2_bt_timings bt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- union {
- struct v4l2_bt_timings bt;
- __u32 reserved[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
-} __attribute__ ((packed));
+    __u32 reserved[32];
+  };
+} __attribute__((packed));
 #define V4L2_DV_BT_656_1120 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_enum_dv_timings {
+  __u32 index;
+  __u32 pad;
+  __u32 reserved[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 reserved[3];
- struct v4l2_dv_timings timings;
+  struct v4l2_dv_timings timings;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_bt_timings_cap {
- __u32 min_width;
- __u32 max_width;
- __u32 min_height;
+  __u32 min_width;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_height;
- __u64 min_pixelclock;
- __u64 max_pixelclock;
- __u32 standards;
+  __u32 max_width;
+  __u32 min_height;
+  __u32 max_height;
+  __u64 min_pixelclock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 capabilities;
- __u32 reserved[16];
-} __attribute__ ((packed));
+  __u64 max_pixelclock;
+  __u32 standards;
+  __u32 capabilities;
+  __u32 reserved[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 #define V4L2_DV_BT_CAP_INTERLACED (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DV_BT_CAP_PROGRESSIVE (1 << 1)
 #define V4L2_DV_BT_CAP_REDUCED_BLANKING (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DV_BT_CAP_CUSTOM (1 << 3)
 struct v4l2_dv_timings_cap {
+  __u32 type;
+  __u32 pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 reserved[3];
- union {
- struct v4l2_bt_timings_cap bt;
+  __u32 reserved[2];
+  union {
+    struct v4l2_bt_timings_cap bt;
+    __u32 raw_data[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 raw_data[32];
- };
+  };
 };
 struct v4l2_input {
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u8 name[32];
- __u32 type;
- __u32 audioset;
+  __u8 name[32];
+  __u32 type;
+  __u32 audioset;
+  __u32 tuner;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 tuner;
- v4l2_std_id std;
- __u32 status;
- __u32 capabilities;
+  v4l2_std_id std;
+  __u32 status;
+  __u32 capabilities;
+  __u32 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[3];
 };
 #define V4L2_INPUT_TYPE_TUNER 1
 #define V4L2_INPUT_TYPE_CAMERA 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_POWER 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_SIGNAL 0x00000002
 #define V4L2_IN_ST_NO_COLOR 0x00000004
 #define V4L2_IN_ST_HFLIP 0x00000010
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_VFLIP 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_H_LOCK 0x00000100
 #define V4L2_IN_ST_COLOR_KILL 0x00000200
 #define V4L2_IN_ST_NO_SYNC 0x00010000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_EQU 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_CARRIER 0x00040000
 #define V4L2_IN_ST_MACROVISION 0x01000000
 #define V4L2_IN_ST_NO_ACCESS 0x02000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_VTR 0x04000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_CAP_DV_TIMINGS 0x00000002
 #define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS
 #define V4L2_IN_CAP_STD 0x00000004
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_output {
- __u32 index;
- __u8 name[32];
- __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 audioset;
- __u32 modulator;
- v4l2_std_id std;
- __u32 capabilities;
+  __u32 index;
+  __u8 name[32];
+  __u32 type;
+  __u32 audioset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[3];
+  __u32 modulator;
+  v4l2_std_id std;
+  __u32 capabilities;
+  __u32 reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_OUTPUT_TYPE_MODULATOR 1
 #define V4L2_OUTPUT_TYPE_ANALOG 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_OUT_CAP_DV_TIMINGS 0x00000002
 #define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS
 #define V4L2_OUT_CAP_STD 0x00000004
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_control {
- __u32 id;
- __s32 value;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 id;
+  __s32 value;
+};
 struct v4l2_ext_control {
- __u32 id;
- __u32 size;
- __u32 reserved2[1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __s32 value;
- __s64 value64;
- char *string;
+  __u32 id;
+  __u32 size;
+  __u32 reserved2[1];
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
-} __attribute__ ((packed));
+    __s32 value;
+    __s64 value64;
+    char __user * string;
+    __u8 __user * p_u8;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    __u16 __user * p_u16;
+    __u32 __user * p_u32;
+    void __user * ptr;
+  };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
 struct v4l2_ext_controls {
- __u32 ctrl_class;
+  __u32 ctrl_class;
+  __u32 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 count;
- __u32 error_idx;
- __u32 reserved[2];
- struct v4l2_ext_control *controls;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 error_idx;
+  __u32 reserved[2];
+  struct v4l2_ext_control * controls;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_ID_MASK (0x0fffffff)
 #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
+#define V4L2_CTRL_MAX_DIMS (4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_ctrl_type {
- V4L2_CTRL_TYPE_INTEGER = 1,
- V4L2_CTRL_TYPE_BOOLEAN = 2,
- V4L2_CTRL_TYPE_MENU = 3,
+  V4L2_CTRL_TYPE_INTEGER = 1,
+  V4L2_CTRL_TYPE_BOOLEAN = 2,
+  V4L2_CTRL_TYPE_MENU = 3,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_CTRL_TYPE_BUTTON = 4,
- V4L2_CTRL_TYPE_INTEGER64 = 5,
- V4L2_CTRL_TYPE_CTRL_CLASS = 6,
- V4L2_CTRL_TYPE_STRING = 7,
+  V4L2_CTRL_TYPE_BUTTON = 4,
+  V4L2_CTRL_TYPE_INTEGER64 = 5,
+  V4L2_CTRL_TYPE_CTRL_CLASS = 6,
+  V4L2_CTRL_TYPE_STRING = 7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- V4L2_CTRL_TYPE_BITMASK = 8,
- V4L2_CTRL_TYPE_INTEGER_MENU = 9,
+  V4L2_CTRL_TYPE_BITMASK = 8,
+  V4L2_CTRL_TYPE_INTEGER_MENU = 9,
+  V4L2_CTRL_COMPOUND_TYPES = 0x0100,
+  V4L2_CTRL_TYPE_U8 = 0x0100,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  V4L2_CTRL_TYPE_U16 = 0x0101,
+  V4L2_CTRL_TYPE_U32 = 0x0102,
 };
 struct v4l2_queryctrl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 type;
- __u8 name[32];
- __s32 minimum;
+  __u32 id;
+  __u32 type;
+  __u8 name[32];
+  __s32 minimum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 maximum;
- __s32 step;
- __s32 default_value;
- __u32 flags;
+  __s32 maximum;
+  __s32 step;
+  __s32 default_value;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[2];
+  __u32 reserved[2];
+};
+struct v4l2_query_ext_ctrl {
+  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 type;
+  char name[32];
+  __s64 minimum;
+  __s64 maximum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 step;
+  __s64 default_value;
+  __u32 flags;
+  __u32 elem_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 elems;
+  __u32 nr_of_dims;
+  __u32 dims[V4L2_CTRL_MAX_DIMS];
+  __u32 reserved[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct v4l2_querymenu {
- __u32 id;
+  __u32 id;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- union {
- __u8 name[32];
- __s64 value;
+  union {
+    __u8 name[32];
+    __s64 value;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- __u32 reserved;
-} __attribute__ ((packed));
+  __u32 reserved;
+} __attribute__((packed));
 #define V4L2_CTRL_FLAG_DISABLED 0x0001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_FLAG_GRABBED 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_FLAG_READ_ONLY 0x0004
 #define V4L2_CTRL_FLAG_UPDATE 0x0008
 #define V4L2_CTRL_FLAG_INACTIVE 0x0010
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_FLAG_SLIDER 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
 #define V4L2_CTRL_FLAG_VOLATILE 0x0080
+#define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
 #define V4L2_CID_PRIVATE_BASE 0x08000000
 struct v4l2_tuner {
- __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 name[32];
- __u32 type;
- __u32 capability;
- __u32 rangelow;
+  __u32 index;
+  __u8 name[32];
+  __u32 type;
+  __u32 capability;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rangehigh;
- __u32 rxsubchans;
- __u32 audmode;
- __s32 signal;
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 rxsubchans;
+  __u32 audmode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 afc;
- __u32 reserved[4];
+  __s32 signal;
+  __s32 afc;
+  __u32 reserved[4];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_modulator {
+  __u32 index;
+  __u8 name[32];
+  __u32 capability;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u8 name[32];
- __u32 capability;
- __u32 rangelow;
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 txsubchans;
+  __u32 reserved[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rangehigh;
- __u32 txsubchans;
- __u32 reserved[4];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_CAP_LOW 0x0001
 #define V4L2_TUNER_CAP_NORM 0x0002
 #define V4L2_TUNER_CAP_HWSEEK_BOUNDED 0x0004
-#define V4L2_TUNER_CAP_HWSEEK_WRAP 0x0008
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_TUNER_CAP_HWSEEK_WRAP 0x0008
 #define V4L2_TUNER_CAP_STEREO 0x0010
 #define V4L2_TUNER_CAP_LANG2 0x0020
 #define V4L2_TUNER_CAP_SAP 0x0020
-#define V4L2_TUNER_CAP_LANG1 0x0040
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_TUNER_CAP_LANG1 0x0040
 #define V4L2_TUNER_CAP_RDS 0x0080
 #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100
 #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200
-#define V4L2_TUNER_CAP_FREQ_BANDS 0x0400
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_TUNER_CAP_FREQ_BANDS 0x0400
 #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800
+#define V4L2_TUNER_CAP_1HZ 0x1000
 #define V4L2_TUNER_SUB_MONO 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_SUB_STEREO 0x0002
 #define V4L2_TUNER_SUB_LANG2 0x0004
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_SUB_SAP 0x0004
 #define V4L2_TUNER_SUB_LANG1 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_SUB_RDS 0x0010
 #define V4L2_TUNER_MODE_MONO 0x0000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_MODE_STEREO 0x0001
 #define V4L2_TUNER_MODE_LANG2 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_MODE_SAP 0x0002
 #define V4L2_TUNER_MODE_LANG1 0x0003
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
 struct v4l2_frequency {
- __u32 tuner;
- __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 frequency;
- __u32 reserved[8];
+  __u32 tuner;
+  __u32 type;
+  __u32 frequency;
+  __u32 reserved[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_BAND_MODULATION_VSB (1 << 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_BAND_MODULATION_FM (1 << 2)
 #define V4L2_BAND_MODULATION_AM (1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_frequency_band {
- __u32 tuner;
+  __u32 tuner;
+  __u32 type;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 index;
- __u32 capability;
- __u32 rangelow;
+  __u32 capability;
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 modulation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rangehigh;
- __u32 modulation;
- __u32 reserved[9];
+  __u32 reserved[9];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_hw_freq_seek {
- __u32 tuner;
- __u32 type;
- __u32 seek_upward;
+  __u32 tuner;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 wrap_around;
- __u32 spacing;
- __u32 rangelow;
- __u32 rangehigh;
+  __u32 type;
+  __u32 seek_upward;
+  __u32 wrap_around;
+  __u32 spacing;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[5];
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 reserved[5];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_rds_data {
- __u8 lsb;
+  __u8 lsb;
+  __u8 msb;
+  __u8 block;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 msb;
- __u8 block;
-} __attribute__ ((packed));
+} __attribute__((packed));
 #define V4L2_RDS_BLOCK_MSK 0x7
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_RDS_BLOCK_A 0
 #define V4L2_RDS_BLOCK_B 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_RDS_BLOCK_C 2
 #define V4L2_RDS_BLOCK_D 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_RDS_BLOCK_C_ALT 4
 #define V4L2_RDS_BLOCK_INVALID 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_RDS_BLOCK_CORRECTED 0x40
 #define V4L2_RDS_BLOCK_ERROR 0x80
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_audio {
- __u32 index;
- __u8 name[32];
- __u32 capability;
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mode;
- __u32 reserved[2];
+  __u8 name[32];
+  __u32 capability;
+  __u32 mode;
+  __u32 reserved[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_AUDCAP_STEREO 0x00001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_AUDCAP_AVL 0x00002
 #define V4L2_AUDMODE_AVL 0x00001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_audioout {
- __u32 index;
+  __u32 index;
+  __u8 name[32];
+  __u32 capability;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 name[32];
- __u32 capability;
- __u32 mode;
- __u32 reserved[2];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 mode;
+  __u32 reserved[2];
 };
 #define V4L2_ENC_IDX_FRAME_I (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_IDX_FRAME_P (1)
 #define V4L2_ENC_IDX_FRAME_B (2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_IDX_FRAME_MASK (0xf)
 struct v4l2_enc_idx_entry {
- __u64 offset;
- __u64 pts;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 length;
- __u32 flags;
- __u32 reserved[2];
+  __u64 offset;
+  __u64 pts;
+  __u32 length;
+  __u32 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved[2];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_IDX_ENTRIES (64)
 struct v4l2_enc_idx {
- __u32 entries;
- __u32 entries_cap;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[4];
- struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
+  __u32 entries;
+  __u32 entries_cap;
+  __u32 reserved[4];
+  struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_ENC_CMD_START (0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_CMD_STOP (1)
 #define V4L2_ENC_CMD_PAUSE (2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_CMD_RESUME (3)
 #define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_encoder_cmd {
- __u32 cmd;
- __u32 flags;
- union {
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u32 data[8];
- } raw;
- };
+  __u32 flags;
+  union {
+    struct {
+      __u32 data[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    } raw;
+  };
 };
 #define V4L2_DEC_CMD_START (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DEC_CMD_STOP (1)
 #define V4L2_DEC_CMD_PAUSE (2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DEC_CMD_RESUME (3)
 #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0)
 #define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DEC_CMD_STOP_IMMEDIATELY (1 << 1)
 #define V4L2_DEC_START_FMT_NONE (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_DEC_START_FMT_GOP (1)
 struct v4l2_decoder_cmd {
+  __u32 cmd;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cmd;
- __u32 flags;
- union {
- struct {
+  union {
+    struct {
+      __u64 pts;
+    } stop;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 pts;
- } stop;
- struct {
- __s32 speed;
+    struct {
+      __s32 speed;
+      __u32 format;
+    } start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 format;
- } start;
- struct {
- __u32 data[16];
+    struct {
+      __u32 data[16];
+    } raw;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } raw;
- };
 };
 struct v4l2_vbi_format {
+  __u32 sampling_rate;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sampling_rate;
- __u32 offset;
- __u32 samples_per_line;
- __u32 sample_format;
+  __u32 samples_per_line;
+  __u32 sample_format;
+  __s32 start[2];
+  __u32 count[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 start[2];
- __u32 count[2];
- __u32 flags;
- __u32 reserved[2];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 flags;
+  __u32 reserved[2];
 };
 #define V4L2_VBI_UNSYNC (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_VBI_INTERLACED (1 << 1)
+#define V4L2_VBI_ITU_525_F1_START (1)
+#define V4L2_VBI_ITU_525_F2_START (264)
+#define V4L2_VBI_ITU_625_F1_START (1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_VBI_ITU_625_F2_START (314)
 struct v4l2_sliced_vbi_format {
+  __u16 service_set;
+  __u16 service_lines[2][24];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 service_set;
- __u16 service_lines[2][24];
- __u32 io_size;
- __u32 reserved[2];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 io_size;
+  __u32 reserved[2];
 };
 #define V4L2_SLICED_TELETEXT_B (0x0001)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_SLICED_VPS (0x0400)
 #define V4L2_SLICED_CAPTION_525 (0x1000)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_SLICED_WSS_625 (0x4000)
 #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
 struct v4l2_sliced_vbi_cap {
+  __u16 service_set;
+  __u16 service_lines[2][24];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 service_set;
- __u16 service_lines[2][24];
- __u32 type;
- __u32 reserved[3];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 type;
+  __u32 reserved[3];
 };
 struct v4l2_sliced_vbi_data {
- __u32 id;
- __u32 field;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 line;
- __u32 reserved;
- __u8 data[48];
+  __u32 id;
+  __u32 field;
+  __u32 line;
+  __u32 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 data[48];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1)
 #define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_MPEG_VBI_IVTV_WSS_625 (5)
 #define V4L2_MPEG_VBI_IVTV_VPS (7)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_mpeg_vbi_itv0_line {
- __u8 id;
- __u8 data[42];
-} __attribute__ ((packed));
+  __u8 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 data[42];
+} __attribute__((packed));
 struct v4l2_mpeg_vbi_itv0 {
- __le32 linemask[2];
- struct v4l2_mpeg_vbi_itv0_line line[35];
-} __attribute__ ((packed));
+  __le32 linemask[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct v4l2_mpeg_vbi_itv0_line line[35];
+} __attribute__((packed));
 struct v4l2_mpeg_vbi_ITV0 {
- struct v4l2_mpeg_vbi_itv0_line line[36];
-} __attribute__ ((packed));
-#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
+  struct v4l2_mpeg_vbi_itv0_line line[36];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} __attribute__((packed));
+#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
 #define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0"
 struct v4l2_mpeg_vbi_fmt_ivtv {
- __u8 magic[4];
- union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_mpeg_vbi_itv0 itv0;
- struct v4l2_mpeg_vbi_ITV0 ITV0;
- };
-} __attribute__ ((packed));
+  __u8 magic[4];
+  union {
+    struct v4l2_mpeg_vbi_itv0 itv0;
+    struct v4l2_mpeg_vbi_ITV0 ITV0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  };
+} __attribute__((packed));
 struct v4l2_plane_pix_format {
- __u32 sizeimage;
- __u16 bytesperline;
- __u16 reserved[7];
+  __u32 sizeimage;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+  __u16 bytesperline;
+  __u16 reserved[7];
+} __attribute__((packed));
 struct v4l2_pix_format_mplane {
- __u32 width;
- __u32 height;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pixelformat;
- __u32 field;
- __u32 colorspace;
- struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
+  __u32 width;
+  __u32 height;
+  __u32 pixelformat;
+  __u32 field;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 num_planes;
- __u8 reserved[11];
-} __attribute__ ((packed));
+  __u32 colorspace;
+  struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
+  __u8 num_planes;
+  __u8 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved[10];
+} __attribute__((packed));
+struct v4l2_sdr_format {
+  __u32 pixelformat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 buffersize;
+  __u8 reserved[24];
+} __attribute__((packed));
 struct v4l2_format {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- union {
- struct v4l2_pix_format pix;
- struct v4l2_pix_format_mplane pix_mp;
+  __u32 type;
+  union {
+    struct v4l2_pix_format pix;
+    struct v4l2_pix_format_mplane pix_mp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct v4l2_window win;
- struct v4l2_vbi_format vbi;
- struct v4l2_sliced_vbi_format sliced;
- __u8 raw_data[200];
+    struct v4l2_window win;
+    struct v4l2_vbi_format vbi;
+    struct v4l2_sliced_vbi_format sliced;
+    struct v4l2_sdr_format sdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } fmt;
+    __u8 raw_data[200];
+  } fmt;
 };
 struct v4l2_streamparm {
- __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct v4l2_captureparm capture;
- struct v4l2_outputparm output;
- __u8 raw_data[200];
+  __u32 type;
+  union {
+    struct v4l2_captureparm capture;
+    struct v4l2_outputparm output;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } parm;
+    __u8 raw_data[200];
+  } parm;
 };
 #define V4L2_EVENT_ALL 0
-#define V4L2_EVENT_VSYNC 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_EVENT_VSYNC 1
 #define V4L2_EVENT_EOS 2
 #define V4L2_EVENT_CTRL 3
 #define V4L2_EVENT_FRAME_SYNC 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V4L2_EVENT_SOURCE_CHANGE 5
+#define V4L2_EVENT_MOTION_DET 6
 #define V4L2_EVENT_PRIVATE_START 0x08000000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_event_vsync {
- __u8 field;
-} __attribute__ ((packed));
-#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 field;
+} __attribute__((packed));
+#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
 struct v4l2_event_ctrl {
- __u32 changes;
+  __u32 changes;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- union {
- __s32 value;
- __s64 value64;
+  union {
+    __s32 value;
+    __s64 value64;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- __u32 flags;
- __s32 minimum;
- __s32 maximum;
+  __u32 flags;
+  __s32 minimum;
+  __s32 maximum;
+  __s32 step;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 step;
- __s32 default_value;
+  __s32 default_value;
 };
 struct v4l2_event_frame_sync {
+  __u32 frame_sequence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 frame_sequence;
+};
+#define V4L2_EVENT_SRC_CH_RESOLUTION (1 << 0)
+struct v4l2_event_src_change {
+  __u32 changes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ (1 << 0)
+struct v4l2_event_motion_det {
+  __u32 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 frame_sequence;
+  __u32 region_mask;
 };
 struct v4l2_event {
- __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct v4l2_event_vsync vsync;
- struct v4l2_event_ctrl ctrl;
- struct v4l2_event_frame_sync frame_sync;
+  __u32 type;
+  union {
+    struct v4l2_event_vsync vsync;
+    struct v4l2_event_ctrl ctrl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data[64];
- } u;
- __u32 pending;
- __u32 sequence;
+    struct v4l2_event_frame_sync frame_sync;
+    struct v4l2_event_src_change src_change;
+    struct v4l2_event_motion_det motion_det;
+    __u8 data[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec timestamp;
- __u32 id;
- __u32 reserved[8];
+  } u;
+  __u32 pending;
+  __u32 sequence;
+  struct timespec timestamp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 id;
+  __u32 reserved[8];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1)
 struct v4l2_event_subscription {
- __u32 type;
+  __u32 type;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 flags;
- __u32 reserved[5];
+  __u32 flags;
+  __u32 reserved[5];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CHIP_MATCH_BRIDGE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CHIP_MATCH_SUBDEV 4
 #define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
 #define V4L2_CHIP_MATCH_I2C_DRIVER 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CHIP_MATCH_I2C_ADDR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CHIP_MATCH_AC97 3
 struct v4l2_dbg_match {
- __u32 type;
+  __u32 type;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __u32 addr;
- char name[32];
- };
+    __u32 addr;
+    char name[32];
+  };
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
 struct v4l2_dbg_register {
- struct v4l2_dbg_match match;
- __u32 size;
+  struct v4l2_dbg_match match;
+  __u32 size;
+  __u64 reg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 reg;
- __u64 val;
-} __attribute__ ((packed));
+  __u64 val;
+} __attribute__((packed));
 #define V4L2_CHIP_FL_READABLE (1 << 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CHIP_FL_WRITABLE (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_dbg_chip_info {
- struct v4l2_dbg_match match;
- char name[32];
+  struct v4l2_dbg_match match;
+  char name[32];
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u32 reserved[32];
-} __attribute__ ((packed));
+  __u32 reserved[32];
+} __attribute__((packed));
 struct v4l2_create_buffers {
+  __u32 index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 index;
- __u32 count;
- __u32 memory;
- struct v4l2_format format;
+  __u32 count;
+  __u32 memory;
+  struct v4l2_format format;
+  __u32 reserved[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[8];
 };
 #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
 #define VIDIOC_RESERVED _IO('V', 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
 #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
 #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
 #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
 #define VIDIOC_OVERLAY _IOW('V', 14, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer)
 #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
 #define VIDIOC_STREAMON _IOW('V', 18, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_STREAMOFF _IOW('V', 19, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
 #define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
 #define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
 #define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
 #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
 #define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
 #define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
 #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
 #define VIDIOC_G_INPUT _IOR('V', 38, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_INPUT _IOWR('V', 39, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_G_EDID _IOWR('V', 40, struct v4l2_edid)
+#define VIDIOC_S_EDID _IOWR('V', 41, struct v4l2_edid)
 #define VIDIOC_G_OUTPUT _IOR('V', 46, int)
 #define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
-#define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
 #define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
 #define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
 #define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
-#define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
 #define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
 #define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
 #define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
-#define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
 #define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
 #define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
 #define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
-#define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
 #define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
 #define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
 #define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
-#define VIDIOC_G_PRIORITY _IOR('V', 67, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_G_PRIORITY _IOR('V', 67, __u32)
 #define VIDIOC_S_PRIORITY _IOW('V', 68, __u32)
 #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
 #define VIDIOC_LOG_STATUS _IO('V', 70)
-#define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
 #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls)
 #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls)
 #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum)
-#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
 #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx)
 #define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd)
 #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd)
-#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
 #define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
 #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
 #define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
-#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
 #define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
 #define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription)
 #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
-#define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers)
 #define VIDIOC_PREPARE_BUF _IOWR('V', 93, struct v4l2_buffer)
 #define VIDIOC_G_SELECTION _IOWR('V', 94, struct v4l2_selection)
 #define VIDIOC_S_SELECTION _IOWR('V', 95, struct v4l2_selection)
-#define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd)
 #define VIDIOC_TRY_DECODER_CMD _IOWR('V', 97, struct v4l2_decoder_cmd)
 #define VIDIOC_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
 #define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings)
-#define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
 #define VIDIOC_ENUM_FREQ_BANDS _IOWR('V', 101, struct v4l2_frequency_band)
 #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info)
+#define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BASE_VIDIOC_PRIVATE 192
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/virtio_9p.h b/libc/kernel/uapi/linux/virtio_9p.h
index 2adf0df..72bc64b 100644
--- a/libc/kernel/uapi/linux/virtio_9p.h
+++ b/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,8 +24,8 @@
 #include <linux/virtio_config.h>
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
- __u16 tag_len;
+  __u16 tag_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tag[0];
+  __u8 tag[0];
 } __attribute__((packed));
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_balloon.h b/libc/kernel/uapi/linux/virtio_balloon.h
index d79db6f..027b65f 100644
--- a/libc/kernel/uapi/linux/virtio_balloon.h
+++ b/libc/kernel/uapi/linux/virtio_balloon.h
@@ -24,25 +24,23 @@
 #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0
 #define VIRTIO_BALLOON_F_STATS_VQ 1
 #define VIRTIO_BALLOON_PFN_SHIFT 12
-struct virtio_balloon_config
+struct virtio_balloon_config {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __le32 num_pages;
- __le32 actual;
+  __le32 num_pages;
+  __le32 actual;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BALLOON_S_SWAP_IN 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BALLOON_S_SWAP_OUT 1
 #define VIRTIO_BALLOON_S_MAJFLT 2
 #define VIRTIO_BALLOON_S_MINFLT 3
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BALLOON_S_MEMFREE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BALLOON_S_MEMTOT 5
 #define VIRTIO_BALLOON_S_NR 6
 struct virtio_balloon_stat {
+  __u16 tag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 tag;
- __u64 val;
+  __u64 val;
 } __attribute__((packed));
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/virtio_blk.h b/libc/kernel/uapi/linux/virtio_blk.h
index 78ec5e0..b6a22d0 100644
--- a/libc/kernel/uapi/linux/virtio_blk.h
+++ b/libc/kernel/uapi/linux/virtio_blk.h
@@ -34,52 +34,56 @@
 #define VIRTIO_BLK_F_WCE 9
 #define VIRTIO_BLK_F_TOPOLOGY 10
 #define VIRTIO_BLK_F_CONFIG_WCE 11
-#define VIRTIO_BLK_F_FLUSH VIRTIO_BLK_F_WCE
+#define VIRTIO_BLK_F_MQ 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIRTIO_BLK_F_FLUSH VIRTIO_BLK_F_WCE
 #define VIRTIO_BLK_ID_BYTES 20
 struct virtio_blk_config {
- __u64 capacity;
- __u32 size_max;
+  __u64 capacity;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 seg_max;
- struct virtio_blk_geometry {
- __u16 cylinders;
- __u8 heads;
+  __u32 size_max;
+  __u32 seg_max;
+  struct virtio_blk_geometry {
+    __u16 cylinders;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sectors;
- } geometry;
- __u32 blk_size;
- __u8 physical_block_exp;
+    __u8 heads;
+    __u8 sectors;
+  } geometry;
+  __u32 blk_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 alignment_offset;
- __u16 min_io_size;
- __u32 opt_io_size;
- __u8 wce;
+  __u8 physical_block_exp;
+  __u8 alignment_offset;
+  __u16 min_io_size;
+  __u32 opt_io_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 wce;
+  __u8 unused;
+  __u16 num_queues;
 } __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
 #define VIRTIO_BLK_T_SCSI_CMD 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BLK_T_FLUSH 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 struct virtio_blk_outhdr {
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u32 ioprio;
- __u64 sector;
+  __u32 ioprio;
+  __u64 sector;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct virtio_scsi_inhdr {
- __u32 errors;
- __u32 data_len;
- __u32 sense_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 residual;
+  __u32 errors;
+  __u32 data_len;
+  __u32 sense_len;
+  __u32 residual;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define VIRTIO_BLK_S_OK 0
 #define VIRTIO_BLK_S_IOERR 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_BLK_S_UNSUPP 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_console.h b/libc/kernel/uapi/linux/virtio_console.h
index 81d515c..9ccf770 100644
--- a/libc/kernel/uapi/linux/virtio_console.h
+++ b/libc/kernel/uapi/linux/virtio_console.h
@@ -26,19 +26,19 @@
 #define VIRTIO_CONSOLE_F_MULTIPORT 1
 #define VIRTIO_CONSOLE_F_EMERG_WRITE 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VIRTIO_CONSOLE_BAD_ID (~(__u32)0)
+#define VIRTIO_CONSOLE_BAD_ID (~(__u32) 0)
 struct virtio_console_config {
- __u16 cols;
- __u16 rows;
+  __u16 cols;
+  __u16 rows;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_nr_ports;
- __u32 emerg_wr;
+  __u32 max_nr_ports;
+  __u32 emerg_wr;
 } __attribute__((packed));
 struct virtio_console_control {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u16 event;
- __u16 value;
+  __u32 id;
+  __u16 event;
+  __u16 value;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_CONSOLE_DEVICE_READY 0
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index aaf1b29..fef8070 100644
--- a/libc/kernel/uapi/linux/virtio_net.h
+++ b/libc/kernel/uapi/linux/virtio_net.h
@@ -53,38 +53,38 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_NET_S_ANNOUNCE 2
 struct virtio_net_config {
- __u8 mac[ETH_ALEN];
- __u16 status;
+  __u8 mac[ETH_ALEN];
+  __u16 status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 max_virtqueue_pairs;
+  __u16 max_virtqueue_pairs;
 } __attribute__((packed));
 struct virtio_net_hdr {
 #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_NET_HDR_F_DATA_VALID 2
- __u8 flags;
+  __u8 flags;
 #define VIRTIO_NET_HDR_GSO_NONE 0
 #define VIRTIO_NET_HDR_GSO_TCPV4 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIRTIO_NET_HDR_GSO_UDP 3
 #define VIRTIO_NET_HDR_GSO_TCPV6 4
 #define VIRTIO_NET_HDR_GSO_ECN 0x80
- __u8 gso_type;
+  __u8 gso_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 hdr_len;
- __u16 gso_size;
- __u16 csum_start;
- __u16 csum_offset;
+  __u16 hdr_len;
+  __u16 gso_size;
+  __u16 csum_start;
+  __u16 csum_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct virtio_net_hdr_mrg_rxbuf {
- struct virtio_net_hdr hdr;
- __u16 num_buffers;
+  struct virtio_net_hdr hdr;
+  __u16 num_buffers;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct virtio_net_ctrl_hdr {
- __u8 class;
- __u8 cmd;
+  __u8 class;
+  __u8 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 typedef __u8 virtio_net_ctrl_ack;
@@ -101,8 +101,8 @@
 #define VIRTIO_NET_CTRL_RX_NOBCAST 5
 struct virtio_net_ctrl_mac {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 entries;
- __u8 macs[][ETH_ALEN];
+  __u32 entries;
+  __u8 macs[][ETH_ALEN];
 } __attribute__((packed));
 #define VIRTIO_NET_CTRL_MAC 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -116,7 +116,7 @@
 #define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0
 struct virtio_net_ctrl_mq {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 virtqueue_pairs;
+  __u16 virtqueue_pairs;
 };
 #define VIRTIO_NET_CTRL_MQ 4
 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0
diff --git a/libc/kernel/uapi/linux/virtio_ring.h b/libc/kernel/uapi/linux/virtio_ring.h
index 05740e7..a171874 100644
--- a/libc/kernel/uapi/linux/virtio_ring.h
+++ b/libc/kernel/uapi/linux/virtio_ring.h
@@ -29,38 +29,38 @@
 #define VIRTIO_RING_F_INDIRECT_DESC 28
 #define VIRTIO_RING_F_EVENT_IDX 29
 struct vring_desc {
- __u64 addr;
+  __u64 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 len;
- __u16 flags;
- __u16 next;
+  __u32 len;
+  __u16 flags;
+  __u16 next;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vring_avail {
- __u16 flags;
- __u16 idx;
- __u16 ring[];
+  __u16 flags;
+  __u16 idx;
+  __u16 ring[];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct vring_used_elem {
- __u32 id;
- __u32 len;
+  __u32 id;
+  __u32 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct vring_used {
- __u16 flags;
- __u16 idx;
+  __u16 flags;
+  __u16 idx;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct vring_used_elem ring[];
+  struct vring_used_elem ring[];
 };
 struct vring {
- unsigned int num;
+  unsigned int num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct vring_desc *desc;
- struct vring_avail *avail;
- struct vring_used *used;
+  struct vring_desc * desc;
+  struct vring_avail * avail;
+  struct vring_used * used;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define vring_used_event(vr) ((vr)->avail->ring[(vr)->num])
-#define vring_avail_event(vr) (*(__u16 *)&(vr)->used->ring[(vr)->num])
+#define vring_avail_event(vr) (* (__u16 *) & (vr)->used->ring[(vr)->num])
 #endif
diff --git a/libc/kernel/uapi/linux/vm_sockets.h b/libc/kernel/uapi/linux/vm_sockets.h
index 20e7b8c..c5c6fd4 100644
--- a/libc/kernel/uapi/linux/vm_sockets.h
+++ b/libc/kernel/uapi/linux/vm_sockets.h
@@ -28,29 +28,26 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_VM_SOCKETS_CONNECT_TIMEOUT 6
 #define SO_VM_SOCKETS_NONBLOCK_TXRX 7
-#define VMADDR_CID_ANY -1U
-#define VMADDR_PORT_ANY -1U
+#define VMADDR_CID_ANY - 1U
+#define VMADDR_PORT_ANY - 1U
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMADDR_CID_HYPERVISOR 0
 #define VMADDR_CID_RESERVED 1
 #define VMADDR_CID_HOST 2
-#define VM_SOCKETS_INVALID_VERSION -1U
+#define VM_SOCKETS_INVALID_VERSION - 1U
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM_SOCKETS_VERSION_EPOCH(_v) (((_v) & 0xFF000000) >> 24)
 #define VM_SOCKETS_VERSION_MAJOR(_v) (((_v) & 0x00FF0000) >> 16)
 #define VM_SOCKETS_VERSION_MINOR(_v) (((_v) & 0x0000FFFF))
 struct sockaddr_vm {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_sa_family_t svm_family;
- unsigned short svm_reserved1;
- unsigned int svm_port;
- unsigned int svm_cid;
+  __kernel_sa_family_t svm_family;
+  unsigned short svm_reserved1;
+  unsigned int svm_port;
+  unsigned int svm_cid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char svm_zero[sizeof(struct sockaddr) -
- sizeof(sa_family_t) -
- sizeof(unsigned short) -
- sizeof(unsigned int) - sizeof(unsigned int)];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char svm_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - sizeof(unsigned short) - sizeof(unsigned int) - sizeof(unsigned int)];
 };
 #define IOCTL_VM_SOCKETS_GET_LOCAL_CID _IO(7, 0xb9)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/vsp1.h b/libc/kernel/uapi/linux/vsp1.h
index b7522e7..28f7fcd 100644
--- a/libc/kernel/uapi/linux/vsp1.h
+++ b/libc/kernel/uapi/linux/vsp1.h
@@ -21,9 +21,9 @@
 #include <linux/types.h>
 #include <linux/videodev2.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define VIDIOC_VSP1_LUT_CONFIG   _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct vsp1_lut_config)
+#define VIDIOC_VSP1_LUT_CONFIG _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct vsp1_lut_config)
 struct vsp1_lut_config {
- u32 lut[256];
+  u32 lut[256];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/vt.h b/libc/kernel/uapi/linux/vt.h
index 664f37f..c9a8245 100644
--- a/libc/kernel/uapi/linux/vt.h
+++ b/libc/kernel/uapi/linux/vt.h
@@ -24,12 +24,12 @@
 #define MAX_NR_USER_CONSOLES 63
 #define VT_OPENQRY 0x5600
 struct vt_mode {
- char mode;
+  char mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char waitv;
- short relsig;
- short acqsig;
- short frsig;
+  char waitv;
+  short relsig;
+  short acqsig;
+  short frsig;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define VT_GETMODE 0x5601
@@ -39,10 +39,10 @@
 #define VT_PROCESS 0x01
 #define VT_ACKACQ 0x02
 struct vt_stat {
- unsigned short v_active;
+  unsigned short v_active;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short v_signal;
- unsigned short v_state;
+  unsigned short v_signal;
+  unsigned short v_state;
 };
 #define VT_GETSTATE 0x5603
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -53,21 +53,21 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT_DISALLOCATE 0x5608
 struct vt_sizes {
- unsigned short v_rows;
- unsigned short v_cols;
+  unsigned short v_rows;
+  unsigned short v_cols;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short v_scrollsize;
+  unsigned short v_scrollsize;
 };
 #define VT_RESIZE 0x5609
 struct vt_consize {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short v_rows;
- unsigned short v_cols;
- unsigned short v_vlin;
- unsigned short v_clin;
+  unsigned short v_rows;
+  unsigned short v_cols;
+  unsigned short v_vlin;
+  unsigned short v_clin;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short v_vcol;
- unsigned short v_ccol;
+  unsigned short v_vcol;
+  unsigned short v_ccol;
 };
 #define VT_RESIZEX 0x560A
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -76,25 +76,25 @@
 #define VT_GETHIFONTMASK 0x560D
 struct vt_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int event;
+  unsigned int event;
 #define VT_EVENT_SWITCH 0x0001
 #define VT_EVENT_BLANK 0x0002
 #define VT_EVENT_UNBLANK 0x0004
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT_EVENT_RESIZE 0x0008
 #define VT_MAX_EVENT 0x000F
- unsigned int oldev;
- unsigned int newev;
+  unsigned int oldev;
+  unsigned int newev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int pad[4];
+  unsigned int pad[4];
 };
 #define VT_WAITEVENT 0x560E
 struct vt_setactivate {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int console;
- struct vt_mode mode;
+  unsigned int console;
+  struct vt_mode mode;
 };
 #define VT_SETACTIVATE 0x560F
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define vt_get_kmsg_redirect() vt_kmsg_redirect(-1)
+#define vt_get_kmsg_redirect() vt_kmsg_redirect(- 1)
 #endif
diff --git a/libc/kernel/uapi/linux/wanrouter.h b/libc/kernel/uapi/linux/wanrouter.h
index d879600..d4f4821 100644
--- a/libc/kernel/uapi/linux/wanrouter.h
+++ b/libc/kernel/uapi/linux/wanrouter.h
@@ -18,13 +18,12 @@
  ****************************************************************************/
 #ifndef _UAPI_ROUTER_H
 #define _UAPI_ROUTER_H
-enum wan_states
-{
+enum wan_states {
+  WAN_UNCONFIGURED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WAN_UNCONFIGURED,
- WAN_DISCONNECTED,
- WAN_CONNECTING,
- WAN_CONNECTED
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  WAN_DISCONNECTED,
+  WAN_CONNECTING,
+  WAN_CONNECTED
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/watchdog.h b/libc/kernel/uapi/linux/watchdog.h
index 05a9bc8..b8a9c32 100644
--- a/libc/kernel/uapi/linux/watchdog.h
+++ b/libc/kernel/uapi/linux/watchdog.h
@@ -23,10 +23,10 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WATCHDOG_IOCTL_BASE 'W'
 struct watchdog_info {
- __u32 options;
- __u32 firmware_version;
+  __u32 options;
+  __u32 firmware_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 identity[32];
+  __u8 identity[32];
 };
 #define WDIOC_GETSUPPORT _IOR(WATCHDOG_IOCTL_BASE, 0, struct watchdog_info)
 #define WDIOC_GETSTATUS _IOR(WATCHDOG_IOCTL_BASE, 1, int)
@@ -42,8 +42,8 @@
 #define WDIOC_GETPRETIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 9, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WDIOC_GETTIMELEFT _IOR(WATCHDOG_IOCTL_BASE, 10, int)
-#define WDIOF_UNKNOWN -1
-#define WDIOS_UNKNOWN -1
+#define WDIOF_UNKNOWN - 1
+#define WDIOS_UNKNOWN - 1
 #define WDIOF_OVERHEAT 0x0001
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WDIOF_FANFAULT 0x0002
diff --git a/libc/kernel/uapi/linux/wil6210_uapi.h b/libc/kernel/uapi/linux/wil6210_uapi.h
new file mode 100644
index 0000000..52aed0f
--- /dev/null
+++ b/libc/kernel/uapi/linux/wil6210_uapi.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __WIL6210_UAPI_H__
+#define __WIL6210_UAPI_H__
+#define __user
+#include <linux/sockios.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIL_IOCTL_MEMIO (SIOCDEVPRIVATE + 2)
+#define WIL_IOCTL_MEMIO_BLOCK (SIOCDEVPRIVATE + 3)
+enum wil_memio_op {
+  wil_mmio_read = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  wil_mmio_write = 1,
+  wil_mmio_op_mask = 0xff,
+  wil_mmio_addr_linker = 0 << 8,
+  wil_mmio_addr_ahb = 1 << 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  wil_mmio_addr_bar = 2 << 8,
+  wil_mmio_addr_mask = 0xff00,
+};
+struct wil_memio {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t op;
+  uint32_t addr;
+  uint32_t val;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct wil_memio_block {
+  uint32_t op;
+  uint32_t addr;
+  uint32_t size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  void __user * block;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/wimax.h b/libc/kernel/uapi/linux/wimax.h
index 151ab0d..8afb5c1 100644
--- a/libc/kernel/uapi/linux/wimax.h
+++ b/libc/kernel/uapi/linux/wimax.h
@@ -21,65 +21,65 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WIMAX_GNL_VERSION = 01,
- WIMAX_GNL_ATTR_INVALID = 0x00,
- WIMAX_GNL_ATTR_MAX = 10,
+  WIMAX_GNL_VERSION = 01,
+  WIMAX_GNL_ATTR_INVALID = 0x00,
+  WIMAX_GNL_ATTR_MAX = 10,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- WIMAX_GNL_OP_MSG_FROM_USER,
- WIMAX_GNL_OP_MSG_TO_USER,
- WIMAX_GNL_OP_RFKILL,
+  WIMAX_GNL_OP_MSG_FROM_USER,
+  WIMAX_GNL_OP_MSG_TO_USER,
+  WIMAX_GNL_OP_RFKILL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WIMAX_GNL_OP_RESET,
- WIMAX_GNL_RE_STATE_CHANGE,
- WIMAX_GNL_OP_STATE_GET,
+  WIMAX_GNL_OP_RESET,
+  WIMAX_GNL_RE_STATE_CHANGE,
+  WIMAX_GNL_OP_STATE_GET,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- WIMAX_GNL_MSG_IFIDX = 1,
- WIMAX_GNL_MSG_PIPE_NAME,
- WIMAX_GNL_MSG_DATA,
+  WIMAX_GNL_MSG_IFIDX = 1,
+  WIMAX_GNL_MSG_PIPE_NAME,
+  WIMAX_GNL_MSG_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum wimax_rf_state {
- WIMAX_RF_OFF = 0,
- WIMAX_RF_ON = 1,
+  WIMAX_RF_OFF = 0,
+  WIMAX_RF_ON = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WIMAX_RF_QUERY = 2,
+  WIMAX_RF_QUERY = 2,
 };
 enum {
- WIMAX_GNL_RFKILL_IFIDX = 1,
+  WIMAX_GNL_RFKILL_IFIDX = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WIMAX_GNL_RFKILL_STATE,
+  WIMAX_GNL_RFKILL_STATE,
 };
 enum {
- WIMAX_GNL_RESET_IFIDX = 1,
+  WIMAX_GNL_RESET_IFIDX = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- WIMAX_GNL_STGET_IFIDX = 1,
+  WIMAX_GNL_STGET_IFIDX = 1,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- WIMAX_GNL_STCH_IFIDX = 1,
- WIMAX_GNL_STCH_STATE_OLD,
- WIMAX_GNL_STCH_STATE_NEW,
+  WIMAX_GNL_STCH_IFIDX = 1,
+  WIMAX_GNL_STCH_STATE_OLD,
+  WIMAX_GNL_STCH_STATE_NEW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
- enum wimax_st {
- __WIMAX_ST_NULL = 0,
- WIMAX_ST_DOWN,
+enum wimax_st {
+  __WIMAX_ST_NULL = 0,
+  WIMAX_ST_DOWN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __WIMAX_ST_QUIESCING,
- WIMAX_ST_UNINITIALIZED,
- WIMAX_ST_RADIO_OFF,
- WIMAX_ST_READY,
+  __WIMAX_ST_QUIESCING,
+  WIMAX_ST_UNINITIALIZED,
+  WIMAX_ST_RADIO_OFF,
+  WIMAX_ST_READY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- WIMAX_ST_SCANNING,
- WIMAX_ST_CONNECTING,
- WIMAX_ST_CONNECTED,
- __WIMAX_ST_INVALID
+  WIMAX_ST_SCANNING,
+  WIMAX_ST_CONNECTING,
+  WIMAX_ST_CONNECTED,
+  __WIMAX_ST_INVALID
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/linux/wimax/i2400m.h b/libc/kernel/uapi/linux/wimax/i2400m.h
index 30585a8..e24729c 100644
--- a/libc/kernel/uapi/linux/wimax/i2400m.h
+++ b/libc/kernel/uapi/linux/wimax/i2400m.h
@@ -22,360 +22,360 @@
 #include <linux/if_ether.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2400m_bcf_hdr {
- __le32 module_type;
- __le32 header_len;
- __le32 header_version;
+  __le32 module_type;
+  __le32 header_len;
+  __le32 header_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 module_id;
- __le32 module_vendor;
- __le32 date;
- __le32 size;
+  __le32 module_id;
+  __le32 module_vendor;
+  __le32 date;
+  __le32 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 key_size;
- __le32 modulus_size;
- __le32 exponent_size;
- __u8 reserved[88];
+  __le32 key_size;
+  __le32 modulus_size;
+  __le32 exponent_size;
+  __u8 reserved[88];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-} __attribute__ ((packed));
+} __attribute__((packed));
 enum i2400m_brh_opcode {
- I2400M_BRH_READ = 1,
- I2400M_BRH_WRITE = 2,
+  I2400M_BRH_READ = 1,
+  I2400M_BRH_WRITE = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_BRH_JUMP = 3,
- I2400M_BRH_SIGNED_JUMP = 8,
- I2400M_BRH_HASH_PAYLOAD_ONLY = 9,
+  I2400M_BRH_JUMP = 3,
+  I2400M_BRH_SIGNED_JUMP = 8,
+  I2400M_BRH_HASH_PAYLOAD_ONLY = 9,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum i2400m_brh {
- I2400M_BRH_SIGNATURE = 0xcbbc0000,
- I2400M_BRH_SIGNATURE_MASK = 0xffff0000,
- I2400M_BRH_SIGNATURE_SHIFT = 16,
+  I2400M_BRH_SIGNATURE = 0xcbbc0000,
+  I2400M_BRH_SIGNATURE_MASK = 0xffff0000,
+  I2400M_BRH_SIGNATURE_SHIFT = 16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_BRH_OPCODE_MASK = 0x0000000f,
- I2400M_BRH_RESPONSE_MASK = 0x000000f0,
- I2400M_BRH_RESPONSE_SHIFT = 4,
- I2400M_BRH_DIRECT_ACCESS = 0x00000400,
+  I2400M_BRH_OPCODE_MASK = 0x0000000f,
+  I2400M_BRH_RESPONSE_MASK = 0x000000f0,
+  I2400M_BRH_RESPONSE_SHIFT = 4,
+  I2400M_BRH_DIRECT_ACCESS = 0x00000400,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_BRH_RESPONSE_REQUIRED = 0x00000200,
- I2400M_BRH_USE_CHECKSUM = 0x00000100,
+  I2400M_BRH_RESPONSE_REQUIRED = 0x00000200,
+  I2400M_BRH_USE_CHECKSUM = 0x00000100,
 };
 struct i2400m_bootrom_header {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 command;
- __le32 target_addr;
- __le32 data_size;
- __le32 block_checksum;
+  __le32 command;
+  __le32 target_addr;
+  __le32 data_size;
+  __le32 block_checksum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char payload[0];
-} __attribute__ ((packed));
+  char payload[0];
+} __attribute__((packed));
 enum i2400m_pt {
- I2400M_PT_DATA = 0,
+  I2400M_PT_DATA = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_PT_CTRL,
- I2400M_PT_TRACE,
- I2400M_PT_RESET_WARM,
- I2400M_PT_RESET_COLD,
+  I2400M_PT_CTRL,
+  I2400M_PT_TRACE,
+  I2400M_PT_RESET_WARM,
+  I2400M_PT_RESET_COLD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_PT_EDATA,
- I2400M_PT_ILLEGAL
+  I2400M_PT_EDATA,
+  I2400M_PT_ILLEGAL
 };
 struct i2400m_pl_data_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 reserved;
+  __le32 reserved;
 } __attribute__((packed));
 struct i2400m_pl_edata_hdr {
- __le32 reorder;
+  __le32 reorder;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cs;
- __u8 reserved[11];
+  __u8 cs;
+  __u8 reserved[11];
 } __attribute__((packed));
 enum i2400m_cs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_CS_IPV4_0 = 0,
- I2400M_CS_IPV4 = 2,
+  I2400M_CS_IPV4_0 = 0,
+  I2400M_CS_IPV4 = 2,
 };
 enum i2400m_ro {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_RO_NEEDED = 0x01,
- I2400M_RO_TYPE = 0x03,
- I2400M_RO_TYPE_SHIFT = 1,
- I2400M_RO_CIN = 0x0f,
+  I2400M_RO_NEEDED = 0x01,
+  I2400M_RO_TYPE = 0x03,
+  I2400M_RO_TYPE_SHIFT = 1,
+  I2400M_RO_CIN = 0x0f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_RO_CIN_SHIFT = 4,
- I2400M_RO_FBN = 0x07ff,
- I2400M_RO_FBN_SHIFT = 8,
- I2400M_RO_SN = 0x07ff,
+  I2400M_RO_CIN_SHIFT = 4,
+  I2400M_RO_FBN = 0x07ff,
+  I2400M_RO_FBN_SHIFT = 8,
+  I2400M_RO_SN = 0x07ff,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_RO_SN_SHIFT = 21,
+  I2400M_RO_SN_SHIFT = 21,
 };
 enum i2400m_ro_type {
- I2400M_RO_TYPE_RESET = 0,
+  I2400M_RO_TYPE_RESET = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_RO_TYPE_PACKET,
- I2400M_RO_TYPE_WS,
- I2400M_RO_TYPE_PACKET_WS,
+  I2400M_RO_TYPE_PACKET,
+  I2400M_RO_TYPE_WS,
+  I2400M_RO_TYPE_PACKET_WS,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- I2400M_PL_ALIGN = 16,
- I2400M_PL_SIZE_MAX = 0x3EFF,
- I2400M_MAX_PLS_IN_MSG = 60,
+  I2400M_PL_ALIGN = 16,
+  I2400M_PL_SIZE_MAX = 0x3EFF,
+  I2400M_MAX_PLS_IN_MSG = 60,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_H2D_PREVIEW_BARKER = 0xcafe900d,
- I2400M_COLD_RESET_BARKER = 0xc01dc01d,
- I2400M_WARM_RESET_BARKER = 0x50f750f7,
- I2400M_NBOOT_BARKER = 0xdeadbeef,
+  I2400M_H2D_PREVIEW_BARKER = 0xcafe900d,
+  I2400M_COLD_RESET_BARKER = 0xc01dc01d,
+  I2400M_WARM_RESET_BARKER = 0x50f750f7,
+  I2400M_NBOOT_BARKER = 0xdeadbeef,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_SBOOT_BARKER = 0x0ff1c1a1,
- I2400M_SBOOT_BARKER_6050 = 0x80000001,
- I2400M_ACK_BARKER = 0xfeedbabe,
- I2400M_D2H_MSG_BARKER = 0xbeefbabe,
+  I2400M_SBOOT_BARKER = 0x0ff1c1a1,
+  I2400M_SBOOT_BARKER_6050 = 0x80000001,
+  I2400M_ACK_BARKER = 0xfeedbabe,
+  I2400M_D2H_MSG_BARKER = 0xbeefbabe,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct i2400m_pld {
- __le32 val;
-} __attribute__ ((packed));
+  __le32 val;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2400M_PLD_SIZE_MASK 0x00003fff
 #define I2400M_PLD_TYPE_SHIFT 16
 #define I2400M_PLD_TYPE_MASK 0x000f0000
 struct i2400m_msg_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __le32 barker;
- __u32 size;
- };
+  union {
+    __le32 barker;
+    __u32 size;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __le32 sequence;
- __u32 offset;
- };
+  union {
+    __le32 sequence;
+    __u32 offset;
+  };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 num_pls;
- __le16 rsv1;
- __le16 padding;
- __le16 rsv2;
+  __le16 num_pls;
+  __le16 rsv1;
+  __le16 padding;
+  __le16 rsv2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct i2400m_pld pld[0];
-} __attribute__ ((packed));
+  struct i2400m_pld pld[0];
+} __attribute__((packed));
 enum {
- I2400M_L3L4_VERSION = 0x0100,
+  I2400M_L3L4_VERSION = 0x0100,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum i2400m_mt {
- I2400M_MT_RESERVED = 0x0000,
- I2400M_MT_INVALID = 0xffff,
+  I2400M_MT_RESERVED = 0x0000,
+  I2400M_MT_INVALID = 0xffff,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_REPORT_MASK = 0x8000,
- I2400M_MT_GET_SCAN_RESULT = 0x4202,
- I2400M_MT_SET_SCAN_PARAM = 0x4402,
- I2400M_MT_CMD_RF_CONTROL = 0x4602,
+  I2400M_MT_REPORT_MASK = 0x8000,
+  I2400M_MT_GET_SCAN_RESULT = 0x4202,
+  I2400M_MT_SET_SCAN_PARAM = 0x4402,
+  I2400M_MT_CMD_RF_CONTROL = 0x4602,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_CMD_SCAN = 0x4603,
- I2400M_MT_CMD_CONNECT = 0x4604,
- I2400M_MT_CMD_DISCONNECT = 0x4605,
- I2400M_MT_CMD_EXIT_IDLE = 0x4606,
+  I2400M_MT_CMD_SCAN = 0x4603,
+  I2400M_MT_CMD_CONNECT = 0x4604,
+  I2400M_MT_CMD_DISCONNECT = 0x4605,
+  I2400M_MT_CMD_EXIT_IDLE = 0x4606,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_GET_LM_VERSION = 0x5201,
- I2400M_MT_GET_DEVICE_INFO = 0x5202,
- I2400M_MT_GET_LINK_STATUS = 0x5203,
- I2400M_MT_GET_STATISTICS = 0x5204,
+  I2400M_MT_GET_LM_VERSION = 0x5201,
+  I2400M_MT_GET_DEVICE_INFO = 0x5202,
+  I2400M_MT_GET_LINK_STATUS = 0x5203,
+  I2400M_MT_GET_STATISTICS = 0x5204,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_GET_STATE = 0x5205,
- I2400M_MT_GET_MEDIA_STATUS = 0x5206,
- I2400M_MT_SET_INIT_CONFIG = 0x5404,
- I2400M_MT_CMD_INIT = 0x5601,
+  I2400M_MT_GET_STATE = 0x5205,
+  I2400M_MT_GET_MEDIA_STATUS = 0x5206,
+  I2400M_MT_SET_INIT_CONFIG = 0x5404,
+  I2400M_MT_CMD_INIT = 0x5601,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_CMD_TERMINATE = 0x5602,
- I2400M_MT_CMD_MODE_OF_OP = 0x5603,
- I2400M_MT_CMD_RESET_DEVICE = 0x5604,
- I2400M_MT_CMD_MONITOR_CONTROL = 0x5605,
+  I2400M_MT_CMD_TERMINATE = 0x5602,
+  I2400M_MT_CMD_MODE_OF_OP = 0x5603,
+  I2400M_MT_CMD_RESET_DEVICE = 0x5604,
+  I2400M_MT_CMD_MONITOR_CONTROL = 0x5605,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_CMD_ENTER_POWERSAVE = 0x5606,
- I2400M_MT_GET_TLS_OPERATION_RESULT = 0x6201,
- I2400M_MT_SET_EAP_SUCCESS = 0x6402,
- I2400M_MT_SET_EAP_FAIL = 0x6403,
+  I2400M_MT_CMD_ENTER_POWERSAVE = 0x5606,
+  I2400M_MT_GET_TLS_OPERATION_RESULT = 0x6201,
+  I2400M_MT_SET_EAP_SUCCESS = 0x6402,
+  I2400M_MT_SET_EAP_FAIL = 0x6403,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_SET_EAP_KEY = 0x6404,
- I2400M_MT_CMD_SEND_EAP_RESPONSE = 0x6602,
- I2400M_MT_REPORT_SCAN_RESULT = 0xc002,
- I2400M_MT_REPORT_STATE = 0xd002,
+  I2400M_MT_SET_EAP_KEY = 0x6404,
+  I2400M_MT_CMD_SEND_EAP_RESPONSE = 0x6602,
+  I2400M_MT_REPORT_SCAN_RESULT = 0xc002,
+  I2400M_MT_REPORT_STATE = 0xd002,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_REPORT_POWERSAVE_READY = 0xd005,
- I2400M_MT_REPORT_EAP_REQUEST = 0xe002,
- I2400M_MT_REPORT_EAP_RESTART = 0xe003,
- I2400M_MT_REPORT_ALT_ACCEPT = 0xe004,
+  I2400M_MT_REPORT_POWERSAVE_READY = 0xd005,
+  I2400M_MT_REPORT_EAP_REQUEST = 0xe002,
+  I2400M_MT_REPORT_EAP_RESTART = 0xe003,
+  I2400M_MT_REPORT_ALT_ACCEPT = 0xe004,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MT_REPORT_KEY_REQUEST = 0xe005,
+  I2400M_MT_REPORT_KEY_REQUEST = 0xe005,
 };
 enum i2400m_ms {
- I2400M_MS_DONE_OK = 0,
+  I2400M_MS_DONE_OK = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MS_DONE_IN_PROGRESS = 1,
- I2400M_MS_INVALID_OP = 2,
- I2400M_MS_BAD_STATE = 3,
- I2400M_MS_ILLEGAL_VALUE = 4,
+  I2400M_MS_DONE_IN_PROGRESS = 1,
+  I2400M_MS_INVALID_OP = 2,
+  I2400M_MS_BAD_STATE = 3,
+  I2400M_MS_ILLEGAL_VALUE = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MS_MISSING_PARAMS = 5,
- I2400M_MS_VERSION_ERROR = 6,
- I2400M_MS_ACCESSIBILITY_ERROR = 7,
- I2400M_MS_BUSY = 8,
+  I2400M_MS_MISSING_PARAMS = 5,
+  I2400M_MS_VERSION_ERROR = 6,
+  I2400M_MS_ACCESSIBILITY_ERROR = 7,
+  I2400M_MS_BUSY = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MS_CORRUPTED_TLV = 9,
- I2400M_MS_UNINITIALIZED = 10,
- I2400M_MS_UNKNOWN_ERROR = 11,
- I2400M_MS_PRODUCTION_ERROR = 12,
+  I2400M_MS_CORRUPTED_TLV = 9,
+  I2400M_MS_UNINITIALIZED = 10,
+  I2400M_MS_UNKNOWN_ERROR = 11,
+  I2400M_MS_PRODUCTION_ERROR = 12,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MS_NO_RF = 13,
- I2400M_MS_NOT_READY_FOR_POWERSAVE = 14,
- I2400M_MS_THERMAL_CRITICAL = 15,
- I2400M_MS_MAX
+  I2400M_MS_NO_RF = 13,
+  I2400M_MS_NOT_READY_FOR_POWERSAVE = 14,
+  I2400M_MS_THERMAL_CRITICAL = 15,
+  I2400M_MS_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum i2400m_tlv {
- I2400M_TLV_L4_MESSAGE_VERSIONS = 129,
- I2400M_TLV_SYSTEM_STATE = 141,
+  I2400M_TLV_L4_MESSAGE_VERSIONS = 129,
+  I2400M_TLV_SYSTEM_STATE = 141,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_TLV_MEDIA_STATUS = 161,
- I2400M_TLV_RF_OPERATION = 162,
- I2400M_TLV_RF_STATUS = 163,
- I2400M_TLV_DEVICE_RESET_TYPE = 132,
+  I2400M_TLV_MEDIA_STATUS = 161,
+  I2400M_TLV_RF_OPERATION = 162,
+  I2400M_TLV_RF_STATUS = 163,
+  I2400M_TLV_DEVICE_RESET_TYPE = 132,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601,
- I2400M_TLV_CONFIG_IDLE_TIMEOUT = 611,
- I2400M_TLV_CONFIG_D2H_DATA_FORMAT = 614,
- I2400M_TLV_CONFIG_DL_HOST_REORDER = 615,
+  I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601,
+  I2400M_TLV_CONFIG_IDLE_TIMEOUT = 611,
+  I2400M_TLV_CONFIG_D2H_DATA_FORMAT = 614,
+  I2400M_TLV_CONFIG_DL_HOST_REORDER = 615,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct i2400m_tlv_hdr {
- __le16 type;
- __le16 length;
+  __le16 type;
+  __le16 length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pl[0];
+  __u8 pl[0];
 } __attribute__((packed));
 struct i2400m_l3l4_hdr {
- __le16 type;
+  __le16 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 length;
- __le16 version;
- __le16 resv1;
- __le16 status;
+  __le16 length;
+  __le16 version;
+  __le16 resv1;
+  __le16 status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 resv2;
- struct i2400m_tlv_hdr pl[0];
+  __le16 resv2;
+  struct i2400m_tlv_hdr pl[0];
 } __attribute__((packed));
 enum i2400m_system_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_SS_UNINITIALIZED = 1,
- I2400M_SS_INIT,
- I2400M_SS_READY,
- I2400M_SS_SCAN,
+  I2400M_SS_UNINITIALIZED = 1,
+  I2400M_SS_INIT,
+  I2400M_SS_READY,
+  I2400M_SS_SCAN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_SS_STANDBY,
- I2400M_SS_CONNECTING,
- I2400M_SS_WIMAX_CONNECTED,
- I2400M_SS_DATA_PATH_CONNECTED,
+  I2400M_SS_STANDBY,
+  I2400M_SS_CONNECTING,
+  I2400M_SS_WIMAX_CONNECTED,
+  I2400M_SS_DATA_PATH_CONNECTED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_SS_IDLE,
- I2400M_SS_DISCONNECTING,
- I2400M_SS_OUT_OF_ZONE,
- I2400M_SS_SLEEPACTIVE,
+  I2400M_SS_IDLE,
+  I2400M_SS_DISCONNECTING,
+  I2400M_SS_OUT_OF_ZONE,
+  I2400M_SS_SLEEPACTIVE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_SS_PRODUCTION,
- I2400M_SS_CONFIG,
- I2400M_SS_RF_OFF,
- I2400M_SS_RF_SHUTDOWN,
+  I2400M_SS_PRODUCTION,
+  I2400M_SS_CONFIG,
+  I2400M_SS_RF_OFF,
+  I2400M_SS_RF_SHUTDOWN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_SS_DEVICE_DISCONNECT,
- I2400M_SS_MAX,
+  I2400M_SS_DEVICE_DISCONNECT,
+  I2400M_SS_MAX,
 };
 struct i2400m_tlv_system_state {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct i2400m_tlv_hdr hdr;
- __le32 state;
+  struct i2400m_tlv_hdr hdr;
+  __le32 state;
 } __attribute__((packed));
 struct i2400m_tlv_l4_message_versions {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct i2400m_tlv_hdr hdr;
- __le16 major;
- __le16 minor;
- __le16 branch;
+  struct i2400m_tlv_hdr hdr;
+  __le16 major;
+  __le16 minor;
+  __le16 branch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le16 reserved;
+  __le16 reserved;
 } __attribute__((packed));
 struct i2400m_tlv_detailed_device_info {
- struct i2400m_tlv_hdr hdr;
+  struct i2400m_tlv_hdr hdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved1[400];
- __u8 mac_address[ETH_ALEN];
- __u8 reserved2[2];
+  __u8 reserved1[400];
+  __u8 mac_address[ETH_ALEN];
+  __u8 reserved2[2];
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum i2400m_rf_switch_status {
- I2400M_RF_SWITCH_ON = 1,
- I2400M_RF_SWITCH_OFF = 2,
+  I2400M_RF_SWITCH_ON = 1,
+  I2400M_RF_SWITCH_OFF = 2,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2400m_tlv_rf_switches_status {
- struct i2400m_tlv_hdr hdr;
- __u8 sw_rf_switch;
- __u8 hw_rf_switch;
+  struct i2400m_tlv_hdr hdr;
+  __u8 sw_rf_switch;
+  __u8 hw_rf_switch;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved[2];
+  __u8 reserved[2];
 } __attribute__((packed));
 enum {
- i2400m_rf_operation_on = 1,
+  i2400m_rf_operation_on = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- i2400m_rf_operation_off = 2
+  i2400m_rf_operation_off = 2
 };
 struct i2400m_tlv_rf_operation {
- struct i2400m_tlv_hdr hdr;
+  struct i2400m_tlv_hdr hdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 status;
+  __le32 status;
 } __attribute__((packed));
 enum i2400m_tlv_reset_type {
- I2400M_RESET_TYPE_COLD = 1,
+  I2400M_RESET_TYPE_COLD = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_RESET_TYPE_WARM
+  I2400M_RESET_TYPE_WARM
 };
 struct i2400m_tlv_device_reset_type {
- struct i2400m_tlv_hdr hdr;
+  struct i2400m_tlv_hdr hdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 reset_type;
+  __le32 reset_type;
 } __attribute__((packed));
 struct i2400m_tlv_config_idle_parameters {
- struct i2400m_tlv_hdr hdr;
+  struct i2400m_tlv_hdr hdr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __le32 idle_timeout;
- __le32 idle_paging_interval;
+  __le32 idle_timeout;
+  __le32 idle_paging_interval;
 } __attribute__((packed));
 enum i2400m_media_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- I2400M_MEDIA_STATUS_LINK_UP = 1,
- I2400M_MEDIA_STATUS_LINK_DOWN,
- I2400M_MEDIA_STATUS_LINK_RENEW,
+  I2400M_MEDIA_STATUS_LINK_UP = 1,
+  I2400M_MEDIA_STATUS_LINK_DOWN,
+  I2400M_MEDIA_STATUS_LINK_RENEW,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2400m_tlv_media_status {
- struct i2400m_tlv_hdr hdr;
- __le32 media_status;
+  struct i2400m_tlv_hdr hdr;
+  __le32 media_status;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2400m_tlv_config_idle_timeout {
- struct i2400m_tlv_hdr hdr;
- __le32 timeout;
+  struct i2400m_tlv_hdr hdr;
+  __le32 timeout;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i2400m_tlv_config_d2h_data_format {
- struct i2400m_tlv_hdr hdr;
- __u8 format;
- __u8 reserved[3];
+  struct i2400m_tlv_hdr hdr;
+  __u8 format;
+  __u8 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 struct i2400m_tlv_config_dl_host_reorder {
- struct i2400m_tlv_hdr hdr;
- __u8 reorder;
+  struct i2400m_tlv_hdr hdr;
+  __u8 reorder;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved[3];
+  __u8 reserved[3];
 } __attribute__((packed));
 #endif
diff --git a/libc/kernel/uapi/linux/wireless.h b/libc/kernel/uapi/linux/wireless.h
index dcb9f1f..d018050 100644
--- a/libc/kernel/uapi/linux/wireless.h
+++ b/libc/kernel/uapi/linux/wireless.h
@@ -93,8 +93,8 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCIWLAST SIOCIWLASTPRIV
 #define IW_IOCTL_IDX(cmd) ((cmd) - SIOCIWFIRST)
-#define IW_HANDLER(id, func)   [IW_IOCTL_IDX(id)] = func
-#define IW_IS_SET(cmd) (!((cmd) & 0x1))
+#define IW_HANDLER(id,func) [IW_IOCTL_IDX(id)] = func
+#define IW_IS_SET(cmd) (! ((cmd) & 0x1))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_IS_GET(cmd) ((cmd) & 0x1)
 #define IWEVTXDROP 0x8C00
@@ -307,253 +307,228 @@
 #define IW_ENC_CAPA_CIPHER_CCMP 0x00000008
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_ENC_CAPA_4WAY_HANDSHAKE 0x00000010
-#define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ?   (cmd - SIOCIWFIRSTPRIV + 0x60) :   (cmd - SIOCIWFIRST))
+#define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ? (cmd - SIOCIWFIRSTPRIV + 0x60) : (cmd - SIOCIWFIRST))
 #define IW_EVENT_CAPA_INDEX(cmd) (IW_EVENT_CAPA_BASE(cmd) >> 5)
 #define IW_EVENT_CAPA_MASK(cmd) (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IW_EVENT_CAPA_K_0 (IW_EVENT_CAPA_MASK(0x8B04) |   IW_EVENT_CAPA_MASK(0x8B06) |   IW_EVENT_CAPA_MASK(0x8B1A))
+#define IW_EVENT_CAPA_K_0 (IW_EVENT_CAPA_MASK(0x8B04) | IW_EVENT_CAPA_MASK(0x8B06) | IW_EVENT_CAPA_MASK(0x8B1A))
 #define IW_EVENT_CAPA_K_1 (IW_EVENT_CAPA_MASK(0x8B2A))
-#define IW_EVENT_CAPA_SET(event_capa, cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd))
-#define IW_EVENT_CAPA_SET_KERNEL(event_capa) {event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; }
+#define IW_EVENT_CAPA_SET(event_capa,cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd))
+#define IW_EVENT_CAPA_SET_KERNEL(event_capa) { event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct iw_param
-{
- __s32 value;
- __u8 fixed;
+struct iw_param {
+  __s32 value;
+  __u8 fixed;
+  __u8 disabled;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 disabled;
- __u16 flags;
+  __u16 flags;
 };
-struct iw_point
+struct iw_point {
+  void __user * pointer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- void __user *pointer;
- __u16 length;
- __u16 flags;
+  __u16 length;
+  __u16 flags;
+};
+struct iw_freq {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 m;
+  __s16 e;
+  __u8 i;
+  __u8 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-struct iw_freq
-{
- __s32 m;
+struct iw_quality {
+  __u8 qual;
+  __u8 level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s16 e;
- __u8 i;
- __u8 flags;
+  __u8 noise;
+  __u8 updated;
+};
+struct iw_discarded {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 nwid;
+  __u32 code;
+  __u32 fragment;
+  __u32 retries;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 misc;
+};
+struct iw_missed {
+  __u32 beacon;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct iw_thrspy {
+  struct sockaddr addr;
+  struct iw_quality qual;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct iw_quality low;
+  struct iw_quality high;
+};
+struct iw_scan_req {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 scan_type;
+  __u8 essid_len;
+  __u8 num_channels;
+  __u8 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct sockaddr bssid;
+  __u8 essid[IW_ESSID_MAX_SIZE];
+  __u32 min_channel_time;
+  __u32 max_channel_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct iw_freq channel_list[IW_MAX_FREQUENCIES];
+};
+struct iw_encode_ext {
+  __u32 ext_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE];
+  __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE];
+  struct sockaddr addr;
+  __u16 alg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 key_len;
+  __u8 key[0];
+};
+struct iw_mlme {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 cmd;
+  __u16 reason_code;
+  struct sockaddr addr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct iw_quality
-{
- __u8 qual;
- __u8 level;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 noise;
- __u8 updated;
-};
-struct iw_discarded
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u32 nwid;
- __u32 code;
- __u32 fragment;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 retries;
- __u32 misc;
-};
-struct iw_missed
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u32 beacon;
-};
-struct iw_thrspy
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- struct sockaddr addr;
- struct iw_quality qual;
- struct iw_quality low;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_quality high;
-};
-struct iw_scan_req
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 scan_type;
- __u8 essid_len;
- __u8 num_channels;
- __u8 flags;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr bssid;
- __u8 essid[IW_ESSID_MAX_SIZE];
- __u32 min_channel_time;
- __u32 max_channel_time;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_freq channel_list[IW_MAX_FREQUENCIES];
-};
-struct iw_encode_ext
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ext_flags;
- __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE];
- __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE];
- struct sockaddr addr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 alg;
- __u16 key_len;
- __u8 key[0];
-};
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct iw_mlme
-{
- __u16 cmd;
- __u16 reason_code;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr addr;
-};
 #define IW_PMKSA_ADD 1
 #define IW_PMKSA_REMOVE 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_PMKSA_FLUSH 3
 #define IW_PMKID_LEN 16
-struct iw_pmksa
-{
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cmd;
- struct sockaddr bssid;
- __u8 pmkid[IW_PMKID_LEN];
+struct iw_pmksa {
+  __u32 cmd;
+  struct sockaddr bssid;
+  __u8 pmkid[IW_PMKID_LEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+struct iw_michaelmicfailure {
+  __u32 flags;
+  struct sockaddr src_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct iw_michaelmicfailure
-{
- __u32 flags;
- struct sockaddr src_addr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE];
+  __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE];
 };
 #define IW_PMKID_CAND_PREAUTH 0x00000001
-struct iw_pmkid_cand
+struct iw_pmkid_cand {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u32 flags;
- __u32 index;
- struct sockaddr bssid;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
-struct iw_statistics
-{
- __u16 status;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_quality qual;
- struct iw_discarded discard;
- struct iw_missed miss;
+  __u32 flags;
+  __u32 index;
+  struct sockaddr bssid;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-union iwreq_data
-{
- char name[IFNAMSIZ];
- struct iw_point essid;
+struct iw_statistics {
+  __u16 status;
+  struct iw_quality qual;
+  struct iw_discarded discard;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_param nwid;
- struct iw_freq freq;
- struct iw_param sens;
- struct iw_param bitrate;
+  struct iw_missed miss;
+};
+union iwreq_data {
+  char name[IFNAMSIZ];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_param txpower;
- struct iw_param rts;
- struct iw_param frag;
- __u32 mode;
+  struct iw_point essid;
+  struct iw_param nwid;
+  struct iw_freq freq;
+  struct iw_param sens;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_param retry;
- struct iw_point encoding;
- struct iw_param power;
- struct iw_quality qual;
+  struct iw_param bitrate;
+  struct iw_param txpower;
+  struct iw_param rts;
+  struct iw_param frag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr ap_addr;
- struct sockaddr addr;
- struct iw_param param;
- struct iw_point data;
+  __u32 mode;
+  struct iw_param retry;
+  struct iw_point encoding;
+  struct iw_param power;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct iw_quality qual;
+  struct sockaddr ap_addr;
+  struct sockaddr addr;
+  struct iw_param param;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct iw_point data;
+};
+struct iwreq {
+  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    char ifrn_name[IFNAMSIZ];
+  } ifr_ifrn;
+  union iwreq_data u;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct iw_range {
+  __u32 throughput;
+  __u32 min_nwid;
+  __u32 max_nwid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 old_num_channels;
+  __u8 old_num_frequency;
+  __u8 scan_capa;
+  __u32 event_capa[6];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 sensitivity;
+  struct iw_quality max_qual;
+  struct iw_quality avg_qual;
+  __u8 num_bitrates;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 bitrate[IW_MAX_BITRATES];
+  __s32 min_rts;
+  __s32 max_rts;
+  __s32 min_frag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 max_frag;
+  __s32 min_pmp;
+  __s32 max_pmp;
+  __s32 min_pmt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 max_pmt;
+  __u16 pmp_flags;
+  __u16 pmt_flags;
+  __u16 pm_capa;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 encoding_size[IW_MAX_ENCODING_SIZES];
+  __u8 num_encoding_sizes;
+  __u8 max_encoding_tokens;
+  __u8 encoding_login_index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 txpower_capa;
+  __u8 num_txpower;
+  __s32 txpower[IW_MAX_TXPOWER];
+  __u8 we_version_compiled;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 we_version_source;
+  __u16 retry_capa;
+  __u16 retry_flags;
+  __u16 r_time_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 min_retry;
+  __s32 max_retry;
+  __s32 min_r_time;
+  __s32 max_r_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 num_channels;
+  __u8 num_frequency;
+  struct iw_freq freq[IW_MAX_FREQUENCIES];
+  __u32 enc_capa;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-struct iwreq
-{
- union
+struct iw_priv_args {
+  __u32 cmd;
+  __u16 set_args;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- {
- char ifrn_name[IFNAMSIZ];
- } ifr_ifrn;
- union iwreq_data u;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 get_args;
+  char name[IFNAMSIZ];
 };
-struct iw_range
-{
- __u32 throughput;
+struct iw_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 min_nwid;
- __u32 max_nwid;
- __u16 old_num_channels;
- __u8 old_num_frequency;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 scan_capa;
- __u32 event_capa[6];
- __s32 sensitivity;
- struct iw_quality max_qual;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_quality avg_qual;
- __u8 num_bitrates;
- __s32 bitrate[IW_MAX_BITRATES];
- __s32 min_rts;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 max_rts;
- __s32 min_frag;
- __s32 max_frag;
- __s32 min_pmp;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 max_pmp;
- __s32 min_pmt;
- __s32 max_pmt;
- __u16 pmp_flags;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pmt_flags;
- __u16 pm_capa;
- __u16 encoding_size[IW_MAX_ENCODING_SIZES];
- __u8 num_encoding_sizes;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 max_encoding_tokens;
- __u8 encoding_login_index;
- __u16 txpower_capa;
- __u8 num_txpower;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 txpower[IW_MAX_TXPOWER];
- __u8 we_version_compiled;
- __u8 we_version_source;
- __u16 retry_capa;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 retry_flags;
- __u16 r_time_flags;
- __s32 min_retry;
- __s32 max_retry;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 min_r_time;
- __s32 max_r_time;
- __u16 num_channels;
- __u8 num_frequency;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct iw_freq freq[IW_MAX_FREQUENCIES];
- __u32 enc_capa;
-};
-struct iw_priv_args
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-{
- __u32 cmd;
- __u16 set_args;
- __u16 get_args;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[IFNAMSIZ];
-};
-struct iw_event
-{
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 len;
- __u16 cmd;
- union iwreq_data u;
+  __u16 len;
+  __u16 cmd;
+  union iwreq_data u;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_EV_LCP_LEN (sizeof(struct iw_event) - sizeof(union iwreq_data))
@@ -564,9 +539,9 @@
 #define IW_EV_PARAM_LEN (IW_EV_LCP_LEN + sizeof(struct iw_param))
 #define IW_EV_ADDR_LEN (IW_EV_LCP_LEN + sizeof(struct sockaddr))
 #define IW_EV_QUAL_LEN (IW_EV_LCP_LEN + sizeof(struct iw_quality))
-#define IW_EV_POINT_OFF (((char *) &(((struct iw_point *) NULL)->length)) -   (char *) NULL)
+#define IW_EV_POINT_OFF (((char *) & (((struct iw_point *) NULL)->length)) - (char *) NULL)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point) -   IW_EV_POINT_OFF)
+#define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point) - IW_EV_POINT_OFF)
 #define IW_EV_LCP_PK_LEN (4)
 #define IW_EV_CHAR_PK_LEN (IW_EV_LCP_PK_LEN + IFNAMSIZ)
 #define IW_EV_UINT_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(__u32))
diff --git a/libc/kernel/uapi/linux/x25.h b/libc/kernel/uapi/linux/x25.h
index e98d123..714c22a 100644
--- a/libc/kernel/uapi/linux/x25.h
+++ b/libc/kernel/uapi/linux/x25.h
@@ -51,18 +51,18 @@
 #define X25_PS4096 12
 struct x25_address {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char x25_addr[16];
+  char x25_addr[16];
 };
 struct sockaddr_x25 {
- __kernel_sa_family_t sx25_family;
+  __kernel_sa_family_t sx25_family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct x25_address sx25_addr;
+  struct x25_address sx25_addr;
 };
 struct x25_subscrip_struct {
- char device[200-sizeof(unsigned long)];
+  char device[200 - sizeof(unsigned long)];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long global_facil_mask;
- unsigned int extended;
+  unsigned long global_facil_mask;
+  unsigned int extended;
 };
 #define X25_MASK_REVERSE 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -73,44 +73,44 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X25_MASK_CALLED_AE 0x20
 struct x25_route_struct {
- struct x25_address address;
- unsigned int sigdigits;
+  struct x25_address address;
+  unsigned int sigdigits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char device[200];
+  char device[200];
 };
 struct x25_facilities {
- unsigned int winsize_in, winsize_out;
+  unsigned int winsize_in, winsize_out;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int pacsize_in, pacsize_out;
- unsigned int throughput;
- unsigned int reverse;
+  unsigned int pacsize_in, pacsize_out;
+  unsigned int throughput;
+  unsigned int reverse;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct x25_dte_facilities {
- __u16 delay_cumul;
- __u16 delay_target;
- __u16 delay_max;
+  __u16 delay_cumul;
+  __u16 delay_target;
+  __u16 delay_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 min_throughput;
- __u8 expedited;
- __u8 calling_len;
- __u8 called_len;
+  __u8 min_throughput;
+  __u8 expedited;
+  __u8 calling_len;
+  __u8 called_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 calling_ae[20];
- __u8 called_ae[20];
+  __u8 calling_ae[20];
+  __u8 called_ae[20];
 };
 struct x25_calluserdata {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cudlength;
- unsigned char cuddata[128];
+  unsigned int cudlength;
+  unsigned char cuddata[128];
 };
 struct x25_causediag {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cause;
- unsigned char diagnostic;
+  unsigned char cause;
+  unsigned char diagnostic;
 };
 struct x25_subaddr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int cudmatchlength;
+  unsigned int cudmatchlength;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/xattr.h b/libc/kernel/uapi/linux/xattr.h
index ecadc6a..a3bba74 100644
--- a/libc/kernel/uapi/linux/xattr.h
+++ b/libc/kernel/uapi/linux/xattr.h
@@ -16,10 +16,15 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#include <linux/libc-compat.h>
 #ifndef _UAPI_LINUX_XATTR_H
 #define _UAPI_LINUX_XATTR_H
+#if __UAPI_DEF_XATTR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __USE_KERNEL_XATTR_DEFS
 #define XATTR_CREATE 0x1
 #define XATTR_REPLACE 0x2
+#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XATTR_OS2_PREFIX "os2."
 #define XATTR_OS2_PREFIX_LEN (sizeof(XATTR_OS2_PREFIX) - 1)
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index 4b09ee8..3ab173a 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -21,23 +21,23 @@
 #include <linux/types.h>
 typedef union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 a4;
- __be32 a6[4];
+  __be32 a4;
+  __be32 a6[4];
 } xfrm_address_t;
 struct xfrm_id {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- xfrm_address_t daddr;
- __be32 spi;
- __u8 proto;
+  xfrm_address_t daddr;
+  __be32 spi;
+  __u8 proto;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_sec_ctx {
- __u8 ctx_doi;
- __u8 ctx_alg;
- __u16 ctx_len;
+  __u8 ctx_doi;
+  __u8 ctx_alg;
+  __u16 ctx_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ctx_sid;
- char ctx_str[0];
+  __u32 ctx_sid;
+  char ctx_str[0];
 };
 #define XFRM_SC_DOI_RESERVED 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -46,112 +46,112 @@
 #define XFRM_SC_ALG_SELINUX 1
 struct xfrm_selector {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- xfrm_address_t daddr;
- xfrm_address_t saddr;
- __be16 dport;
- __be16 dport_mask;
+  xfrm_address_t daddr;
+  xfrm_address_t saddr;
+  __be16 dport;
+  __be16 dport_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 sport;
- __be16 sport_mask;
- __u16 family;
- __u8 prefixlen_d;
+  __be16 sport;
+  __be16 sport_mask;
+  __u16 family;
+  __u8 prefixlen_d;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 prefixlen_s;
- __u8 proto;
- int ifindex;
- __kernel_uid32_t user;
+  __u8 prefixlen_s;
+  __u8 proto;
+  int ifindex;
+  __kernel_uid32_t user;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define XFRM_INF (~(__u64)0)
+#define XFRM_INF (~(__u64) 0)
 struct xfrm_lifetime_cfg {
- __u64 soft_byte_limit;
+  __u64 soft_byte_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 hard_byte_limit;
- __u64 soft_packet_limit;
- __u64 hard_packet_limit;
- __u64 soft_add_expires_seconds;
+  __u64 hard_byte_limit;
+  __u64 soft_packet_limit;
+  __u64 hard_packet_limit;
+  __u64 soft_add_expires_seconds;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 hard_add_expires_seconds;
- __u64 soft_use_expires_seconds;
- __u64 hard_use_expires_seconds;
+  __u64 hard_add_expires_seconds;
+  __u64 soft_use_expires_seconds;
+  __u64 hard_use_expires_seconds;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_lifetime_cur {
- __u64 bytes;
- __u64 packets;
- __u64 add_time;
+  __u64 bytes;
+  __u64 packets;
+  __u64 add_time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 use_time;
+  __u64 use_time;
 };
 struct xfrm_replay_state {
- __u32 oseq;
+  __u32 oseq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 seq;
- __u32 bitmap;
+  __u32 seq;
+  __u32 bitmap;
 };
 #define XFRMA_REPLAY_ESN_MAX 4096
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_replay_state_esn {
- unsigned int bmp_len;
- __u32 oseq;
- __u32 seq;
+  unsigned int bmp_len;
+  __u32 oseq;
+  __u32 seq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 oseq_hi;
- __u32 seq_hi;
- __u32 replay_window;
- __u32 bmp[0];
+  __u32 oseq_hi;
+  __u32 seq_hi;
+  __u32 replay_window;
+  __u32 bmp[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrm_algo {
- char alg_name[64];
- unsigned int alg_key_len;
+  char alg_name[64];
+  unsigned int alg_key_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char alg_key[0];
+  char alg_key[0];
 };
 struct xfrm_algo_auth {
- char alg_name[64];
+  char alg_name[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int alg_key_len;
- unsigned int alg_trunc_len;
- char alg_key[0];
+  unsigned int alg_key_len;
+  unsigned int alg_trunc_len;
+  char alg_key[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_algo_aead {
- char alg_name[64];
- unsigned int alg_key_len;
- unsigned int alg_icv_len;
+  char alg_name[64];
+  unsigned int alg_key_len;
+  unsigned int alg_icv_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char alg_key[0];
+  char alg_key[0];
 };
 struct xfrm_stats {
- __u32 replay_window;
+  __u32 replay_window;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 replay;
- __u32 integrity_failed;
+  __u32 replay;
+  __u32 integrity_failed;
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_POLICY_TYPE_MAIN = 0,
- XFRM_POLICY_TYPE_SUB = 1,
- XFRM_POLICY_TYPE_MAX = 2,
- XFRM_POLICY_TYPE_ANY = 255
+  XFRM_POLICY_TYPE_MAIN = 0,
+  XFRM_POLICY_TYPE_SUB = 1,
+  XFRM_POLICY_TYPE_MAX = 2,
+  XFRM_POLICY_TYPE_ANY = 255
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- XFRM_POLICY_IN = 0,
- XFRM_POLICY_OUT = 1,
+  XFRM_POLICY_IN = 0,
+  XFRM_POLICY_OUT = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_POLICY_FWD = 2,
- XFRM_POLICY_MASK = 3,
- XFRM_POLICY_MAX = 3
+  XFRM_POLICY_FWD = 2,
+  XFRM_POLICY_MASK = 3,
+  XFRM_POLICY_MAX = 3
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- XFRM_SHARE_ANY,
- XFRM_SHARE_SESSION,
- XFRM_SHARE_USER,
+  XFRM_SHARE_ANY,
+  XFRM_SHARE_SESSION,
+  XFRM_SHARE_USER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_SHARE_UNIQUE
+  XFRM_SHARE_UNIQUE
 };
 #define XFRM_MODE_TRANSPORT 0
 #define XFRM_MODE_TUNNEL 1
@@ -162,217 +162,227 @@
 #define XFRM_MODE_MAX 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- XFRM_MSG_BASE = 0x10,
- XFRM_MSG_NEWSA = 0x10,
+  XFRM_MSG_BASE = 0x10,
+  XFRM_MSG_NEWSA = 0x10,
 #define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_DELSA,
+  XFRM_MSG_DELSA,
 #define XFRM_MSG_DELSA XFRM_MSG_DELSA
- XFRM_MSG_GETSA,
+  XFRM_MSG_GETSA,
 #define XFRM_MSG_GETSA XFRM_MSG_GETSA
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_NEWPOLICY,
+  XFRM_MSG_NEWPOLICY,
 #define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
- XFRM_MSG_DELPOLICY,
+  XFRM_MSG_DELPOLICY,
 #define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_GETPOLICY,
+  XFRM_MSG_GETPOLICY,
 #define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
- XFRM_MSG_ALLOCSPI,
+  XFRM_MSG_ALLOCSPI,
 #define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_ACQUIRE,
+  XFRM_MSG_ACQUIRE,
 #define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
- XFRM_MSG_EXPIRE,
+  XFRM_MSG_EXPIRE,
 #define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_UPDPOLICY,
+  XFRM_MSG_UPDPOLICY,
 #define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
- XFRM_MSG_UPDSA,
+  XFRM_MSG_UPDSA,
 #define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_POLEXPIRE,
+  XFRM_MSG_POLEXPIRE,
 #define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
- XFRM_MSG_FLUSHSA,
+  XFRM_MSG_FLUSHSA,
 #define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_FLUSHPOLICY,
+  XFRM_MSG_FLUSHPOLICY,
 #define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
- XFRM_MSG_NEWAE,
+  XFRM_MSG_NEWAE,
 #define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_GETAE,
+  XFRM_MSG_GETAE,
 #define XFRM_MSG_GETAE XFRM_MSG_GETAE
- XFRM_MSG_REPORT,
+  XFRM_MSG_REPORT,
 #define XFRM_MSG_REPORT XFRM_MSG_REPORT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_MIGRATE,
+  XFRM_MSG_MIGRATE,
 #define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
- XFRM_MSG_NEWSADINFO,
+  XFRM_MSG_NEWSADINFO,
 #define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_GETSADINFO,
+  XFRM_MSG_GETSADINFO,
 #define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
- XFRM_MSG_NEWSPDINFO,
+  XFRM_MSG_NEWSPDINFO,
 #define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_MSG_GETSPDINFO,
+  XFRM_MSG_GETSPDINFO,
 #define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
- XFRM_MSG_MAPPING,
+  XFRM_MSG_MAPPING,
 #define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __XFRM_MSG_MAX
+  __XFRM_MSG_MAX
 };
 #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
 #define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_user_sec_ctx {
- __u16 len;
- __u16 exttype;
- __u8 ctx_alg;
+  __u16 len;
+  __u16 exttype;
+  __u8 ctx_alg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ctx_doi;
- __u16 ctx_len;
+  __u8 ctx_doi;
+  __u16 ctx_len;
 };
 struct xfrm_user_tmpl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xfrm_id id;
- __u16 family;
- xfrm_address_t saddr;
- __u32 reqid;
+  struct xfrm_id id;
+  __u16 family;
+  xfrm_address_t saddr;
+  __u32 reqid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 mode;
- __u8 share;
- __u8 optional;
- __u32 aalgos;
+  __u8 mode;
+  __u8 share;
+  __u8 optional;
+  __u32 aalgos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ealgos;
- __u32 calgos;
+  __u32 ealgos;
+  __u32 calgos;
 };
 struct xfrm_encap_tmpl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 encap_type;
- __be16 encap_sport;
- __be16 encap_dport;
- xfrm_address_t encap_oa;
+  __u16 encap_type;
+  __be16 encap_sport;
+  __be16 encap_dport;
+  xfrm_address_t encap_oa;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum xfrm_ae_ftype_t {
- XFRM_AE_UNSPEC,
- XFRM_AE_RTHR=1,
+  XFRM_AE_UNSPEC,
+  XFRM_AE_RTHR = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_AE_RVAL=2,
- XFRM_AE_LVAL=4,
- XFRM_AE_ETHR=8,
- XFRM_AE_CR=16,
+  XFRM_AE_RVAL = 2,
+  XFRM_AE_LVAL = 4,
+  XFRM_AE_ETHR = 8,
+  XFRM_AE_CR = 16,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRM_AE_CE=32,
- XFRM_AE_CU=64,
- __XFRM_AE_MAX
+  XFRM_AE_CE = 32,
+  XFRM_AE_CU = 64,
+  __XFRM_AE_MAX
 #define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrm_userpolicy_type {
- __u8 type;
- __u16 reserved1;
+  __u8 type;
+  __u16 reserved1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved2;
+  __u8 reserved2;
 };
 enum xfrm_attr_type_t {
- XFRMA_UNSPEC,
+  XFRMA_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_ALG_AUTH,
- XFRMA_ALG_CRYPT,
- XFRMA_ALG_COMP,
- XFRMA_ENCAP,
+  XFRMA_ALG_AUTH,
+  XFRMA_ALG_CRYPT,
+  XFRMA_ALG_COMP,
+  XFRMA_ENCAP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_TMPL,
- XFRMA_SA,
- XFRMA_POLICY,
- XFRMA_SEC_CTX,
+  XFRMA_TMPL,
+  XFRMA_SA,
+  XFRMA_POLICY,
+  XFRMA_SEC_CTX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_LTIME_VAL,
- XFRMA_REPLAY_VAL,
- XFRMA_REPLAY_THRESH,
- XFRMA_ETIMER_THRESH,
+  XFRMA_LTIME_VAL,
+  XFRMA_REPLAY_VAL,
+  XFRMA_REPLAY_THRESH,
+  XFRMA_ETIMER_THRESH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_SRCADDR,
- XFRMA_COADDR,
- XFRMA_LASTUSED,
- XFRMA_POLICY_TYPE,
+  XFRMA_SRCADDR,
+  XFRMA_COADDR,
+  XFRMA_LASTUSED,
+  XFRMA_POLICY_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_MIGRATE,
- XFRMA_ALG_AEAD,
- XFRMA_KMADDRESS,
- XFRMA_ALG_AUTH_TRUNC,
+  XFRMA_MIGRATE,
+  XFRMA_ALG_AEAD,
+  XFRMA_KMADDRESS,
+  XFRMA_ALG_AUTH_TRUNC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_MARK,
- XFRMA_TFCPAD,
- XFRMA_REPLAY_ESN_VAL,
- XFRMA_SA_EXTRA_FLAGS,
+  XFRMA_MARK,
+  XFRMA_TFCPAD,
+  XFRMA_REPLAY_ESN_VAL,
+  XFRMA_SA_EXTRA_FLAGS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __XFRMA_MAX
+  XFRMA_PROTO,
+  XFRMA_ADDRESS_FILTER,
+  __XFRMA_MAX
 #define XFRMA_MAX (__XFRMA_MAX - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrm_mark {
+  __u32 v;
+  __u32 m;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 v;
- __u32 m;
 };
 enum xfrm_sadattr_type_t {
+  XFRMA_SAD_UNSPEC,
+  XFRMA_SAD_CNT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_SAD_UNSPEC,
- XFRMA_SAD_CNT,
- XFRMA_SAD_HINFO,
- __XFRMA_SAD_MAX
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  XFRMA_SAD_HINFO,
+  __XFRMA_SAD_MAX
 #define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrmu_sadhinfo {
- __u32 sadhcnt;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sadhmcnt;
+  __u32 sadhcnt;
+  __u32 sadhmcnt;
 };
-enum xfrm_spdattr_type_t {
- XFRMA_SPD_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMA_SPD_INFO,
- XFRMA_SPD_HINFO,
- __XFRMA_SPD_MAX
+enum xfrm_spdattr_type_t {
+  XFRMA_SPD_UNSPEC,
+  XFRMA_SPD_INFO,
+  XFRMA_SPD_HINFO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  XFRMA_SPD_IPV4_HTHRESH,
+  XFRMA_SPD_IPV6_HTHRESH,
+  __XFRMA_SPD_MAX
 #define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrmu_spdinfo {
- __u32 incnt;
- __u32 outcnt;
+  __u32 incnt;
+  __u32 outcnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fwdcnt;
- __u32 inscnt;
- __u32 outscnt;
- __u32 fwdscnt;
+  __u32 fwdcnt;
+  __u32 inscnt;
+  __u32 outscnt;
+  __u32 fwdscnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrmu_spdhinfo {
- __u32 spdhcnt;
- __u32 spdhmcnt;
+  __u32 spdhcnt;
+  __u32 spdhmcnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct xfrmu_spdhthresh {
+  __u8 lbits;
+  __u8 rbits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrm_usersa_info {
- struct xfrm_selector sel;
- struct xfrm_id id;
+  struct xfrm_selector sel;
+  struct xfrm_id id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- xfrm_address_t saddr;
- struct xfrm_lifetime_cfg lft;
- struct xfrm_lifetime_cur curlft;
- struct xfrm_stats stats;
+  xfrm_address_t saddr;
+  struct xfrm_lifetime_cfg lft;
+  struct xfrm_lifetime_cur curlft;
+  struct xfrm_stats stats;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 seq;
- __u32 reqid;
- __u16 family;
- __u8 mode;
+  __u32 seq;
+  __u32 reqid;
+  __u16 family;
+  __u8 mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 replay_window;
- __u8 flags;
+  __u8 replay_window;
+  __u8 flags;
 #define XFRM_STATE_NOECN 1
 #define XFRM_STATE_DECAP_DSCP 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -387,147 +397,155 @@
 #define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_usersa_id {
- xfrm_address_t daddr;
- __be32 spi;
- __u16 family;
+  xfrm_address_t daddr;
+  __be32 spi;
+  __u16 family;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 proto;
+  __u8 proto;
 };
 struct xfrm_aevent_id {
- struct xfrm_usersa_id sa_id;
+  struct xfrm_usersa_id sa_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- xfrm_address_t saddr;
- __u32 flags;
- __u32 reqid;
+  xfrm_address_t saddr;
+  __u32 flags;
+  __u32 reqid;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_userspi_info {
- struct xfrm_usersa_info info;
- __u32 min;
- __u32 max;
+  struct xfrm_usersa_info info;
+  __u32 min;
+  __u32 max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrm_userpolicy_info {
- struct xfrm_selector sel;
- struct xfrm_lifetime_cfg lft;
+  struct xfrm_selector sel;
+  struct xfrm_lifetime_cfg lft;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xfrm_lifetime_cur curlft;
- __u32 priority;
- __u32 index;
- __u8 dir;
+  struct xfrm_lifetime_cur curlft;
+  __u32 priority;
+  __u32 index;
+  __u8 dir;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 action;
+  __u8 action;
 #define XFRM_POLICY_ALLOW 0
 #define XFRM_POLICY_BLOCK 1
- __u8 flags;
+  __u8 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XFRM_POLICY_LOCALOK 1
 #define XFRM_POLICY_ICMP 2
- __u8 share;
+  __u8 share;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_userpolicy_id {
- struct xfrm_selector sel;
- __u32 index;
- __u8 dir;
+  struct xfrm_selector sel;
+  __u32 index;
+  __u8 dir;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct xfrm_user_acquire {
- struct xfrm_id id;
- xfrm_address_t saddr;
+  struct xfrm_id id;
+  xfrm_address_t saddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xfrm_selector sel;
- struct xfrm_userpolicy_info policy;
- __u32 aalgos;
- __u32 ealgos;
+  struct xfrm_selector sel;
+  struct xfrm_userpolicy_info policy;
+  __u32 aalgos;
+  __u32 ealgos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 calgos;
- __u32 seq;
+  __u32 calgos;
+  __u32 seq;
 };
 struct xfrm_user_expire {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xfrm_usersa_info state;
- __u8 hard;
+  struct xfrm_usersa_info state;
+  __u8 hard;
 };
 struct xfrm_user_polexpire {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xfrm_userpolicy_info pol;
- __u8 hard;
+  struct xfrm_userpolicy_info pol;
+  __u8 hard;
 };
 struct xfrm_usersa_flush {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 proto;
+  __u8 proto;
 };
 struct xfrm_user_report {
- __u8 proto;
+  __u8 proto;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct xfrm_selector sel;
+  struct xfrm_selector sel;
 };
 struct xfrm_user_kmaddress {
- xfrm_address_t local;
+  xfrm_address_t local;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- xfrm_address_t remote;
- __u32 reserved;
- __u16 family;
+  xfrm_address_t remote;
+  __u32 reserved;
+  __u16 family;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_user_migrate {
- xfrm_address_t old_daddr;
- xfrm_address_t old_saddr;
- xfrm_address_t new_daddr;
+  xfrm_address_t old_daddr;
+  xfrm_address_t old_saddr;
+  xfrm_address_t new_daddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- xfrm_address_t new_saddr;
- __u8 proto;
- __u8 mode;
- __u16 reserved;
+  xfrm_address_t new_saddr;
+  __u8 proto;
+  __u8 mode;
+  __u16 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reqid;
- __u16 old_family;
- __u16 new_family;
+  __u32 reqid;
+  __u16 old_family;
+  __u16 new_family;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xfrm_user_mapping {
- struct xfrm_usersa_id id;
- __u32 reqid;
- xfrm_address_t old_saddr;
+  struct xfrm_usersa_id id;
+  __u32 reqid;
+  xfrm_address_t old_saddr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- xfrm_address_t new_saddr;
- __be16 old_sport;
- __be16 new_sport;
+  xfrm_address_t new_saddr;
+  __be16 old_sport;
+  __be16 new_sport;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct xfrm_address_filter {
+  xfrm_address_t saddr;
+  xfrm_address_t daddr;
+  __u16 family;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 splen;
+  __u8 dplen;
+};
 #define XFRMGRP_ACQUIRE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XFRMGRP_EXPIRE 2
 #define XFRMGRP_SA 4
 #define XFRMGRP_POLICY 8
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XFRMGRP_REPORT 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum xfrm_nlgroups {
- XFRMNLGRP_NONE,
+  XFRMNLGRP_NONE,
 #define XFRMNLGRP_NONE XFRMNLGRP_NONE
+  XFRMNLGRP_ACQUIRE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMNLGRP_ACQUIRE,
 #define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
- XFRMNLGRP_EXPIRE,
+  XFRMNLGRP_EXPIRE,
 #define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
+  XFRMNLGRP_SA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMNLGRP_SA,
 #define XFRMNLGRP_SA XFRMNLGRP_SA
- XFRMNLGRP_POLICY,
+  XFRMNLGRP_POLICY,
 #define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
+  XFRMNLGRP_AEVENTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMNLGRP_AEVENTS,
 #define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
- XFRMNLGRP_REPORT,
+  XFRMNLGRP_REPORT,
 #define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
+  XFRMNLGRP_MIGRATE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- XFRMNLGRP_MIGRATE,
 #define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
- XFRMNLGRP_MAPPING,
+  XFRMNLGRP_MAPPING,
 #define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
+  __XFRMNLGRP_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __XFRMNLGRP_MAX
 };
 #define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/zorro.h b/libc/kernel/uapi/linux/zorro.h
index 219ef70..181cd8f 100644
--- a/libc/kernel/uapi/linux/zorro.h
+++ b/libc/kernel/uapi/linux/zorro.h
@@ -23,7 +23,7 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD(id) (((id) >> 8) & 0xff)
 #define ZORRO_EPC(id) ((id) & 0xff)
-#define ZORRO_ID(manuf, prod, epc)   ((ZORRO_MANUF_##manuf << 16) | ((prod) << 8) | (epc))
+#define ZORRO_ID(manuf,prod,epc) ((ZORRO_MANUF_ ##manuf << 16) | ((prod) << 8) | (epc))
 typedef __u32 zorro_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/zorro_ids.h>
@@ -31,39 +31,39 @@
 #define GVP_SCSICLKMASK (0x01)
 enum GVP_flags {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GVP_IO = 0x01,
- GVP_ACCEL = 0x02,
- GVP_SCSI = 0x04,
- GVP_24BITDMA = 0x08,
+  GVP_IO = 0x01,
+  GVP_ACCEL = 0x02,
+  GVP_SCSI = 0x04,
+  GVP_24BITDMA = 0x08,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- GVP_25BITDMA = 0x10,
- GVP_NOBANK = 0x20,
- GVP_14MHZ = 0x40,
+  GVP_25BITDMA = 0x10,
+  GVP_NOBANK = 0x20,
+  GVP_14MHZ = 0x40,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct Node {
- __be32 ln_Succ;
- __be32 ln_Pred;
- __u8 ln_Type;
+  __be32 ln_Succ;
+  __be32 ln_Pred;
+  __u8 ln_Type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s8 ln_Pri;
- __be32 ln_Name;
+  __s8 ln_Pri;
+  __be32 ln_Name;
 } __packed;
 struct ExpansionRom {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 er_Type;
- __u8 er_Product;
- __u8 er_Flags;
- __u8 er_Reserved03;
+  __u8 er_Type;
+  __u8 er_Product;
+  __u8 er_Flags;
+  __u8 er_Reserved03;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 er_Manufacturer;
- __be32 er_SerialNumber;
- __be16 er_InitDiagVec;
- __u8 er_Reserved0c;
+  __be16 er_Manufacturer;
+  __be32 er_SerialNumber;
+  __be16 er_InitDiagVec;
+  __u8 er_Reserved0c;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 er_Reserved0d;
- __u8 er_Reserved0e;
- __u8 er_Reserved0f;
+  __u8 er_Reserved0d;
+  __u8 er_Reserved0e;
+  __u8 er_Reserved0f;
 } __packed;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ERT_TYPEMASK 0xc0
@@ -71,22 +71,22 @@
 #define ERT_ZORROIII 0x80
 #define ERTB_MEMLIST 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ERTF_MEMLIST (1<<5)
+#define ERTF_MEMLIST (1 << 5)
 struct ConfigDev {
- struct Node cd_Node;
- __u8 cd_Flags;
+  struct Node cd_Node;
+  __u8 cd_Flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cd_Pad;
- struct ExpansionRom cd_Rom;
- __be32 cd_BoardAddr;
- __be32 cd_BoardSize;
+  __u8 cd_Pad;
+  struct ExpansionRom cd_Rom;
+  __be32 cd_BoardAddr;
+  __be32 cd_BoardSize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 cd_SlotAddr;
- __be16 cd_SlotSize;
- __be32 cd_Driver;
- __be32 cd_NextCD;
+  __be16 cd_SlotAddr;
+  __be16 cd_SlotSize;
+  __be32 cd_Driver;
+  __be32 cd_NextCD;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 cd_Unused[4];
+  __be32 cd_Unused[4];
 } __packed;
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/libc/kernel/uapi/misc/cxl.h b/libc/kernel/uapi/misc/cxl.h
new file mode 100644
index 0000000..150a0d9
--- /dev/null
+++ b/libc/kernel/uapi/misc/cxl.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_MISC_CXL_H
+#define _UAPI_MISC_CXL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct cxl_ioctl_start_work {
+  __u64 flags;
+  __u64 work_element_descriptor;
+  __u64 amr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s16 num_interrupts;
+  __s16 reserved1;
+  __s32 reserved2;
+  __u64 reserved3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 reserved4;
+  __u64 reserved5;
+  __u64 reserved6;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CXL_START_WORK_AMR 0x0000000000000001ULL
+#define CXL_START_WORK_NUM_IRQS 0x0000000000000002ULL
+#define CXL_START_WORK_ALL (CXL_START_WORK_AMR | CXL_START_WORK_NUM_IRQS)
+#define CXL_MAGIC 0xCA
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work)
+#define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32)
+#define CXL_READ_MIN_SIZE 0x1000
+enum cxl_event_type {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CXL_EVENT_RESERVED = 0,
+  CXL_EVENT_AFU_INTERRUPT = 1,
+  CXL_EVENT_DATA_STORAGE = 2,
+  CXL_EVENT_AFU_ERROR = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct cxl_event_header {
+  __u16 type;
+  __u16 size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 process_element;
+  __u16 reserved1;
+};
+struct cxl_event_afu_interrupt {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 flags;
+  __u16 irq;
+  __u32 reserved1;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct cxl_event_data_storage {
+  __u16 flags;
+  __u16 reserved1;
+  __u32 reserved2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 addr;
+  __u64 dsisr;
+  __u64 reserved3;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct cxl_event_afu_error {
+  __u16 flags;
+  __u16 reserved1;
+  __u32 reserved2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 error;
+};
+struct cxl_event {
+  struct cxl_event_header header;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
+    struct cxl_event_afu_interrupt irq;
+    struct cxl_event_data_storage fault;
+    struct cxl_event_afu_error afu_error;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  };
+};
+#endif
diff --git a/libc/kernel/uapi/mtd/inftl-user.h b/libc/kernel/uapi/mtd/inftl-user.h
index 926de01..85ef0b5 100644
--- a/libc/kernel/uapi/mtd/inftl-user.h
+++ b/libc/kernel/uapi/mtd/inftl-user.h
@@ -24,72 +24,72 @@
 #define PERCENTUSED 98
 #define SECTORSIZE 512
 struct inftl_bci {
- __u8 ECCsig[6];
+  __u8 ECCsig[6];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 Status;
- __u8 Status1;
+  __u8 Status;
+  __u8 Status1;
 } __attribute__((packed));
 struct inftl_unithead1 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 virtualUnitNo;
- __u16 prevUnitNo;
- __u8 ANAC;
- __u8 NACs;
+  __u16 virtualUnitNo;
+  __u16 prevUnitNo;
+  __u8 ANAC;
+  __u8 NACs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 parityPerField;
- __u8 discarded;
+  __u8 parityPerField;
+  __u8 discarded;
 } __attribute__((packed));
 struct inftl_unithead2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 parityPerField;
- __u8 ANAC;
- __u16 prevUnitNo;
- __u16 virtualUnitNo;
+  __u8 parityPerField;
+  __u8 ANAC;
+  __u16 prevUnitNo;
+  __u16 virtualUnitNo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 NACs;
- __u8 discarded;
+  __u8 NACs;
+  __u8 discarded;
 } __attribute__((packed));
 struct inftl_unittail {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 Reserved[4];
- __u16 EraseMark;
- __u16 EraseMark1;
+  __u8 Reserved[4];
+  __u16 EraseMark;
+  __u16 EraseMark1;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union inftl_uci {
- struct inftl_unithead1 a;
- struct inftl_unithead2 b;
- struct inftl_unittail c;
+  struct inftl_unithead1 a;
+  struct inftl_unithead2 b;
+  struct inftl_unittail c;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct inftl_oob {
- struct inftl_bci b;
- union inftl_uci u;
+  struct inftl_bci b;
+  union inftl_uci u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct INFTLPartition {
- __u32 virtualUnits;
- __u32 firstUnit;
+  __u32 virtualUnits;
+  __u32 firstUnit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lastUnit;
- __u32 flags;
- __u32 spareUnits;
- __u32 Reserved0;
+  __u32 lastUnit;
+  __u32 flags;
+  __u32 spareUnits;
+  __u32 Reserved0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 Reserved1;
+  __u32 Reserved1;
 } __attribute__((packed));
 struct INFTLMediaHeader {
- char bootRecordID[8];
+  char bootRecordID[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 NoOfBootImageBlocks;
- __u32 NoOfBinaryPartitions;
- __u32 NoOfBDTLPartitions;
- __u32 BlockMultiplierBits;
+  __u32 NoOfBootImageBlocks;
+  __u32 NoOfBinaryPartitions;
+  __u32 NoOfBDTLPartitions;
+  __u32 BlockMultiplierBits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 FormatFlags;
- __u32 OsakVersion;
- __u32 PercentUsed;
- struct INFTLPartition Partitions[4];
+  __u32 FormatFlags;
+  __u32 OsakVersion;
+  __u32 PercentUsed;
+  struct INFTLPartition Partitions[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
 #define INFTL_BINARY 0x20000000
diff --git a/libc/kernel/uapi/mtd/mtd-abi.h b/libc/kernel/uapi/mtd/mtd-abi.h
index 0bb7c61..4fe1973 100644
--- a/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/libc/kernel/uapi/mtd/mtd-abi.h
@@ -21,44 +21,44 @@
 #include <linux/types.h>
 struct erase_info_user {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 start;
- __u32 length;
+  __u32 start;
+  __u32 length;
 };
 struct erase_info_user64 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 start;
- __u64 length;
+  __u64 start;
+  __u64 length;
 };
 struct mtd_oob_buf {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 start;
- __u32 length;
- unsigned char __user *ptr;
+  __u32 start;
+  __u32 length;
+  unsigned char __user * ptr;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_oob_buf64 {
- __u64 start;
- __u32 pad;
- __u32 length;
+  __u64 start;
+  __u32 pad;
+  __u32 length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 usr_ptr;
+  __u64 usr_ptr;
 };
 enum {
- MTD_OPS_PLACE_OOB = 0,
+  MTD_OPS_PLACE_OOB = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MTD_OPS_AUTO_OOB = 1,
- MTD_OPS_RAW = 2,
+  MTD_OPS_AUTO_OOB = 1,
+  MTD_OPS_RAW = 2,
 };
 struct mtd_write_req {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 start;
- __u64 len;
- __u64 ooblen;
- __u64 usr_data;
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 usr_oob;
- __u8 mode;
- __u8 padding[7];
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_ABSENT 0
@@ -81,105 +81,106 @@
 #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
 #define MTD_CAP_NANDFLASH (MTD_WRITEABLE)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MTD_CAP_NVRAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
 #define MTD_NANDECC_OFF 0
 #define MTD_NANDECC_PLACE 1
 #define MTD_NANDECC_AUTOPLACE 2
-#define MTD_NANDECC_PLACEONLY 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MTD_NANDECC_PLACEONLY 3
 #define MTD_NANDECC_AUTOPL_USR 4
 #define MTD_OTP_OFF 0
 #define MTD_OTP_FACTORY 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_OTP_USER 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_info_user {
- __u8 type;
- __u32 flags;
- __u32 size;
+  __u8 type;
+  __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 erasesize;
- __u32 writesize;
- __u32 oobsize;
- __u64 padding;
+  __u32 size;
+  __u32 erasesize;
+  __u32 writesize;
+  __u32 oobsize;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 padding;
 };
 struct region_info_user {
- __u32 offset;
- __u32 erasesize;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 numblocks;
- __u32 regionindex;
+  __u32 erasesize;
+  __u32 numblocks;
+  __u32 regionindex;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct otp_info {
+  __u32 start;
+  __u32 length;
+  __u32 locked;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 start;
- __u32 length;
- __u32 locked;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MEMGETINFO _IOR('M', 1, struct mtd_info_user)
 #define MEMERASE _IOW('M', 2, struct erase_info_user)
 #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf)
-#define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf)
 #define MEMLOCK _IOW('M', 5, struct erase_info_user)
 #define MEMUNLOCK _IOW('M', 6, struct erase_info_user)
 #define MEMGETREGIONCOUNT _IOR('M', 7, int)
-#define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user)
 #define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo)
 #define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t)
 #define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t)
-#define OTPSELECT _IOR('M', 13, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OTPSELECT _IOR('M', 13, int)
 #define OTPGETREGIONCOUNT _IOW('M', 14, int)
 #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info)
 #define OTPLOCK _IOR('M', 16, struct otp_info)
-#define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user)
 #define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats)
 #define MTDFILEMODE _IO('M', 19)
 #define MEMERASE64 _IOW('M', 20, struct erase_info_user64)
-#define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64)
 #define MEMREADOOB64 _IOWR('M', 22, struct mtd_oob_buf64)
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nand_oobinfo {
+  __u32 useecc;
+  __u32 eccbytes;
+  __u32 oobfree[8][2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 useecc;
- __u32 eccbytes;
- __u32 oobfree[8][2];
- __u32 eccpos[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 eccpos[32];
 };
 struct nand_oobfree {
- __u32 offset;
- __u32 length;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 length;
 };
 #define MTD_MAX_OOBFREE_ENTRIES 8
 #define MTD_MAX_ECCPOS_ENTRIES 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nand_ecclayout_user {
+  __u32 eccbytes;
+  __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES];
+  __u32 oobavail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 eccbytes;
- __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES];
- __u32 oobavail;
- struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
 };
 struct mtd_ecc_stats {
- __u32 corrected;
- __u32 failed;
+  __u32 corrected;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 badblocks;
- __u32 bbtblocks;
+  __u32 failed;
+  __u32 badblocks;
+  __u32 bbtblocks;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mtd_file_modes {
+  MTD_FILE_MODE_NORMAL = MTD_OTP_OFF,
+  MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
+  MTD_FILE_MODE_OTP_USER = MTD_OTP_USER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MTD_FILE_MODE_NORMAL = MTD_OTP_OFF,
- MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
- MTD_FILE_MODE_OTP_USER = MTD_OTP_USER,
- MTD_FILE_MODE_RAW,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MTD_FILE_MODE_RAW,
 };
 #endif
diff --git a/libc/kernel/uapi/mtd/nftl-user.h b/libc/kernel/uapi/mtd/nftl-user.h
index dc7b896..98a7e8a 100644
--- a/libc/kernel/uapi/mtd/nftl-user.h
+++ b/libc/kernel/uapi/mtd/nftl-user.h
@@ -21,49 +21,49 @@
 #include <linux/types.h>
 struct nftl_bci {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char ECCSig[6];
- __u8 Status;
- __u8 Status1;
-}__attribute__((packed));
+  unsigned char ECCSig[6];
+  __u8 Status;
+  __u8 Status1;
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nftl_uci0 {
- __u16 VirtUnitNum;
- __u16 ReplUnitNum;
- __u16 SpareVirtUnitNum;
+  __u16 VirtUnitNum;
+  __u16 ReplUnitNum;
+  __u16 SpareVirtUnitNum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 SpareReplUnitNum;
+  __u16 SpareReplUnitNum;
 } __attribute__((packed));
 struct nftl_uci1 {
- __u32 WearInfo;
+  __u32 WearInfo;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 EraseMark;
- __u16 EraseMark1;
+  __u16 EraseMark;
+  __u16 EraseMark1;
 } __attribute__((packed));
 struct nftl_uci2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 FoldMark;
- __u16 FoldMark1;
- __u32 unused;
+  __u16 FoldMark;
+  __u16 FoldMark1;
+  __u32 unused;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union nftl_uci {
- struct nftl_uci0 a;
- struct nftl_uci1 b;
- struct nftl_uci2 c;
+  struct nftl_uci0 a;
+  struct nftl_uci1 b;
+  struct nftl_uci2 c;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct nftl_oob {
- struct nftl_bci b;
- union nftl_uci u;
+  struct nftl_bci b;
+  union nftl_uci u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct NFTLMediaHeader {
- char DataOrgID[6];
- __u16 NumEraseUnits;
+  char DataOrgID[6];
+  __u16 NumEraseUnits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 FirstPhysicalEUN;
- __u32 FormattedSize;
- unsigned char UnitSizeFactor;
+  __u16 FirstPhysicalEUN;
+  __u32 FormattedSize;
+  unsigned char UnitSizeFactor;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_ERASE_ZONES (8192 - 512)
diff --git a/libc/kernel/uapi/mtd/ubi-user.h b/libc/kernel/uapi/mtd/ubi-user.h
index fa6be32..e055172 100644
--- a/libc/kernel/uapi/mtd/ubi-user.h
+++ b/libc/kernel/uapi/mtd/ubi-user.h
@@ -19,9 +19,9 @@
 #ifndef __UBI_USER_H__
 #define __UBI_USER_H__
 #include <linux/types.h>
-#define UBI_VOL_NUM_AUTO (-1)
+#define UBI_VOL_NUM_AUTO (- 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define UBI_DEV_NUM_AUTO (-1)
+#define UBI_DEV_NUM_AUTO (- 1)
 #define UBI_MAX_VOLUME_NAME 127
 #define UBI_IOC_MAGIC 'o'
 #define UBI_IOCMKVOL _IOW(UBI_IOC_MAGIC, 0, struct ubi_mkvol_req)
@@ -42,75 +42,82 @@
 #define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, __s32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, __s32)
-#define UBI_IOCSETVOLPROP _IOW(UBI_VOL_IOC_MAGIC, 6,   struct ubi_set_vol_prop_req)
+#define UBI_IOCSETVOLPROP _IOW(UBI_VOL_IOC_MAGIC, 6, struct ubi_set_vol_prop_req)
+#define UBI_IOCVOLCRBLK _IOW(UBI_VOL_IOC_MAGIC, 7, struct ubi_blkcreate_req)
+#define UBI_IOCVOLRMBLK _IO(UBI_VOL_IOC_MAGIC, 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_UBI_MTD_NAME_LEN 127
 #define UBI_MAX_RNVOL 32
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- UBI_DYNAMIC_VOLUME = 3,
- UBI_STATIC_VOLUME = 4,
+  UBI_DYNAMIC_VOLUME = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UBI_STATIC_VOLUME = 4,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- UBI_VOL_PROP_DIRECT_WRITE = 1,
+  UBI_VOL_PROP_DIRECT_WRITE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ubi_attach_req {
+  __s32 ubi_num;
+  __s32 mtd_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 ubi_num;
- __s32 mtd_num;
- __s32 vid_hdr_offset;
- __s16 max_beb_per1024;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s8 padding[10];
+  __s32 vid_hdr_offset;
+  __s16 max_beb_per1024;
+  __s8 padding[10];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ubi_mkvol_req {
- __s32 vol_id;
+  __s32 vol_id;
+  __s32 alignment;
+  __s64 bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 alignment;
- __s64 bytes;
- __s8 vol_type;
- __s8 padding1;
+  __s8 vol_type;
+  __s8 padding1;
+  __s16 name_len;
+  __s8 padding2[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s16 name_len;
- __s8 padding2[4];
- char name[UBI_MAX_VOLUME_NAME + 1];
+  char name[UBI_MAX_VOLUME_NAME + 1];
 } __packed;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ubi_rsvol_req {
- __s64 bytes;
- __s32 vol_id;
-} __packed;
+  __s64 bytes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s32 vol_id;
+} __packed;
 struct ubi_rnvol_req {
- __s32 count;
- __s8 padding1[12];
- struct {
+  __s32 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 vol_id;
- __s16 name_len;
- __s8 padding2[2];
- char name[UBI_MAX_VOLUME_NAME + 1];
+  __s8 padding1[12];
+  struct {
+    __s32 vol_id;
+    __s16 name_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } ents[UBI_MAX_RNVOL];
+    __s8 padding2[2];
+    char name[UBI_MAX_VOLUME_NAME + 1];
+  } ents[UBI_MAX_RNVOL];
 } __packed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ubi_leb_change_req {
- __s32 lnum;
+  __s32 lnum;
+  __s32 bytes;
+  __s8 dtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 bytes;
- __s8 dtype;
- __s8 padding[7];
+  __s8 padding[7];
 } __packed;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ubi_map_req {
- __s32 lnum;
- __s8 dtype;
- __s8 padding[3];
+  __s32 lnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __s8 dtype;
+  __s8 padding[3];
 } __packed;
 struct ubi_set_vol_prop_req {
- __u8 property;
- __u8 padding[7];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 value;
+  __u8 property;
+  __u8 padding[7];
+  __u64 value;
+} __packed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ubi_blkcreate_req {
+  __s8 padding[128];
 } __packed;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/rdma/ib_user_cm.h b/libc/kernel/uapi/rdma/ib_user_cm.h
index 0a9ff26..c475ffc 100644
--- a/libc/kernel/uapi/rdma/ib_user_cm.h
+++ b/libc/kernel/uapi/rdma/ib_user_cm.h
@@ -23,277 +23,277 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IB_USER_CM_ABI_VERSION 5
 enum {
- IB_USER_CM_CMD_CREATE_ID,
- IB_USER_CM_CMD_DESTROY_ID,
+  IB_USER_CM_CMD_CREATE_ID,
+  IB_USER_CM_CMD_DESTROY_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_CM_CMD_ATTR_ID,
- IB_USER_CM_CMD_LISTEN,
- IB_USER_CM_CMD_NOTIFY,
- IB_USER_CM_CMD_SEND_REQ,
+  IB_USER_CM_CMD_ATTR_ID,
+  IB_USER_CM_CMD_LISTEN,
+  IB_USER_CM_CMD_NOTIFY,
+  IB_USER_CM_CMD_SEND_REQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_CM_CMD_SEND_REP,
- IB_USER_CM_CMD_SEND_RTU,
- IB_USER_CM_CMD_SEND_DREQ,
- IB_USER_CM_CMD_SEND_DREP,
+  IB_USER_CM_CMD_SEND_REP,
+  IB_USER_CM_CMD_SEND_RTU,
+  IB_USER_CM_CMD_SEND_DREQ,
+  IB_USER_CM_CMD_SEND_DREP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_CM_CMD_SEND_REJ,
- IB_USER_CM_CMD_SEND_MRA,
- IB_USER_CM_CMD_SEND_LAP,
- IB_USER_CM_CMD_SEND_APR,
+  IB_USER_CM_CMD_SEND_REJ,
+  IB_USER_CM_CMD_SEND_MRA,
+  IB_USER_CM_CMD_SEND_LAP,
+  IB_USER_CM_CMD_SEND_APR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_CM_CMD_SEND_SIDR_REQ,
- IB_USER_CM_CMD_SEND_SIDR_REP,
- IB_USER_CM_CMD_EVENT,
- IB_USER_CM_CMD_INIT_QP_ATTR,
+  IB_USER_CM_CMD_SEND_SIDR_REQ,
+  IB_USER_CM_CMD_SEND_SIDR_REP,
+  IB_USER_CM_CMD_EVENT,
+  IB_USER_CM_CMD_INIT_QP_ATTR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_ucm_cmd_hdr {
- __u32 cmd;
- __u16 in;
+  __u32 cmd;
+  __u16 in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 out;
+  __u16 out;
 };
 struct ib_ucm_create_id {
- __u64 uid;
+  __u64 uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
+  __u64 response;
 };
 struct ib_ucm_create_id_resp {
- __u32 id;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_ucm_destroy_id {
- __u64 response;
- __u32 id;
+  __u64 response;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
+  __u32 reserved;
 };
 struct ib_ucm_destroy_id_resp {
- __u32 events_reported;
+  __u32 events_reported;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_ucm_attr_id {
- __u64 response;
- __u32 id;
+  __u64 response;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
+  __u32 reserved;
 };
 struct ib_ucm_attr_id_resp {
- __be64 service_id;
+  __be64 service_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 service_mask;
- __be32 local_id;
- __be32 remote_id;
+  __be64 service_mask;
+  __be32 local_id;
+  __be32 remote_id;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_ucm_init_qp_attr {
- __u64 response;
- __u32 id;
- __u32 qp_state;
+  __u64 response;
+  __u32 id;
+  __u32 qp_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_ucm_listen {
- __be64 service_id;
- __be64 service_mask;
+  __be64 service_id;
+  __be64 service_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 reserved;
+  __u32 id;
+  __u32 reserved;
 };
 struct ib_ucm_notify {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 event;
+  __u32 id;
+  __u32 event;
 };
 struct ib_ucm_private_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 data;
- __u32 id;
- __u8 len;
- __u8 reserved[3];
+  __u64 data;
+  __u32 id;
+  __u8 len;
+  __u8 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_ucm_req {
- __u32 id;
- __u32 qpn;
+  __u32 id;
+  __u32 qpn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_type;
- __u32 psn;
- __be64 sid;
- __u64 data;
+  __u32 qp_type;
+  __u32 psn;
+  __be64 sid;
+  __u64 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 primary_path;
- __u64 alternate_path;
- __u8 len;
- __u8 peer_to_peer;
+  __u64 primary_path;
+  __u64 alternate_path;
+  __u8 len;
+  __u8 peer_to_peer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 responder_resources;
- __u8 initiator_depth;
- __u8 remote_cm_response_timeout;
- __u8 flow_control;
+  __u8 responder_resources;
+  __u8 initiator_depth;
+  __u8 remote_cm_response_timeout;
+  __u8 flow_control;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 local_cm_response_timeout;
- __u8 retry_count;
- __u8 rnr_retry_count;
- __u8 max_cm_retries;
+  __u8 local_cm_response_timeout;
+  __u8 retry_count;
+  __u8 rnr_retry_count;
+  __u8 max_cm_retries;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 srq;
- __u8 reserved[5];
+  __u8 srq;
+  __u8 reserved[5];
 };
 struct ib_ucm_rep {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 uid;
- __u64 data;
- __u32 id;
- __u32 qpn;
+  __u64 uid;
+  __u64 data;
+  __u32 id;
+  __u32 qpn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 psn;
- __u8 len;
- __u8 responder_resources;
- __u8 initiator_depth;
+  __u32 psn;
+  __u8 len;
+  __u8 responder_resources;
+  __u8 initiator_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 target_ack_delay;
- __u8 failover_accepted;
- __u8 flow_control;
- __u8 rnr_retry_count;
+  __u8 target_ack_delay;
+  __u8 failover_accepted;
+  __u8 flow_control;
+  __u8 rnr_retry_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 srq;
- __u8 reserved[4];
+  __u8 srq;
+  __u8 reserved[4];
 };
 struct ib_ucm_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 status;
- __u64 info;
- __u64 data;
+  __u32 id;
+  __u32 status;
+  __u64 info;
+  __u64 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 info_len;
- __u8 data_len;
- __u8 reserved[6];
+  __u8 info_len;
+  __u8 data_len;
+  __u8 reserved[6];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_ucm_mra {
- __u64 data;
- __u32 id;
- __u8 len;
+  __u64 data;
+  __u32 id;
+  __u8 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 timeout;
- __u8 reserved[2];
+  __u8 timeout;
+  __u8 reserved[2];
 };
 struct ib_ucm_lap {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 path;
- __u64 data;
- __u32 id;
- __u8 len;
+  __u64 path;
+  __u64 data;
+  __u32 id;
+  __u8 len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved[3];
+  __u8 reserved[3];
 };
 struct ib_ucm_sidr_req {
- __u32 id;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 timeout;
- __be64 sid;
- __u64 data;
- __u64 path;
+  __u32 timeout;
+  __be64 sid;
+  __u64 data;
+  __u64 path;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 reserved_pkey;
- __u8 len;
- __u8 max_cm_retries;
- __u8 reserved[4];
+  __u16 reserved_pkey;
+  __u8 len;
+  __u8 max_cm_retries;
+  __u8 reserved[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_ucm_sidr_rep {
- __u32 id;
- __u32 qpn;
+  __u32 id;
+  __u32 qpn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qkey;
- __u32 status;
- __u64 info;
- __u64 data;
+  __u32 qkey;
+  __u32 status;
+  __u64 info;
+  __u64 data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 info_len;
- __u8 data_len;
- __u8 reserved[6];
+  __u8 info_len;
+  __u8 data_len;
+  __u8 reserved[6];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_ucm_event_get {
- __u64 response;
- __u64 data;
- __u64 info;
+  __u64 response;
+  __u64 data;
+  __u64 info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 data_len;
- __u8 info_len;
- __u8 reserved[6];
+  __u8 data_len;
+  __u8 info_len;
+  __u8 reserved[6];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_ucm_req_event_resp {
- struct ib_user_path_rec primary_path;
- struct ib_user_path_rec alternate_path;
- __be64 remote_ca_guid;
+  struct ib_user_path_rec primary_path;
+  struct ib_user_path_rec alternate_path;
+  __be64 remote_ca_guid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 remote_qkey;
- __u32 remote_qpn;
- __u32 qp_type;
- __u32 starting_psn;
+  __u32 remote_qkey;
+  __u32 remote_qpn;
+  __u32 qp_type;
+  __u32 starting_psn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 responder_resources;
- __u8 initiator_depth;
- __u8 local_cm_response_timeout;
- __u8 flow_control;
+  __u8 responder_resources;
+  __u8 initiator_depth;
+  __u8 local_cm_response_timeout;
+  __u8 flow_control;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 remote_cm_response_timeout;
- __u8 retry_count;
- __u8 rnr_retry_count;
- __u8 srq;
+  __u8 remote_cm_response_timeout;
+  __u8 retry_count;
+  __u8 rnr_retry_count;
+  __u8 srq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 port;
- __u8 reserved[7];
+  __u8 port;
+  __u8 reserved[7];
 };
 struct ib_ucm_rep_event_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 remote_ca_guid;
- __u32 remote_qkey;
- __u32 remote_qpn;
- __u32 starting_psn;
+  __be64 remote_ca_guid;
+  __u32 remote_qkey;
+  __u32 remote_qpn;
+  __u32 starting_psn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 responder_resources;
- __u8 initiator_depth;
- __u8 target_ack_delay;
- __u8 failover_accepted;
+  __u8 responder_resources;
+  __u8 initiator_depth;
+  __u8 target_ack_delay;
+  __u8 failover_accepted;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flow_control;
- __u8 rnr_retry_count;
- __u8 srq;
- __u8 reserved[5];
+  __u8 flow_control;
+  __u8 rnr_retry_count;
+  __u8 srq;
+  __u8 reserved[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_ucm_rej_event_resp {
- __u32 reason;
+  __u32 reason;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_ucm_mra_event_resp {
- __u8 timeout;
- __u8 reserved[3];
+  __u8 timeout;
+  __u8 reserved[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_ucm_lap_event_resp {
- struct ib_user_path_rec path;
+  struct ib_user_path_rec path;
 };
 struct ib_ucm_apr_event_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 status;
+  __u32 status;
 };
 struct ib_ucm_sidr_req_event_resp {
- __u16 pkey;
+  __u16 pkey;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 port;
- __u8 reserved;
+  __u8 port;
+  __u8 reserved;
 };
 struct ib_ucm_sidr_rep_event_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 status;
- __u32 qkey;
- __u32 qpn;
+  __u32 status;
+  __u32 qkey;
+  __u32 qpn;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IB_UCM_PRES_DATA 0x01
@@ -302,25 +302,25 @@
 #define IB_UCM_PRES_ALTERNATE 0x08
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_ucm_event_resp {
- __u64 uid;
- __u32 id;
- __u32 event;
+  __u64 uid;
+  __u32 id;
+  __u32 event;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 present;
- __u32 reserved;
- union {
- struct ib_ucm_req_event_resp req_resp;
+  __u32 present;
+  __u32 reserved;
+  union {
+    struct ib_ucm_req_event_resp req_resp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ib_ucm_rep_event_resp rep_resp;
- struct ib_ucm_rej_event_resp rej_resp;
- struct ib_ucm_mra_event_resp mra_resp;
- struct ib_ucm_lap_event_resp lap_resp;
+    struct ib_ucm_rep_event_resp rep_resp;
+    struct ib_ucm_rej_event_resp rej_resp;
+    struct ib_ucm_mra_event_resp mra_resp;
+    struct ib_ucm_lap_event_resp lap_resp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ib_ucm_apr_event_resp apr_resp;
- struct ib_ucm_sidr_req_event_resp sidr_req_resp;
- struct ib_ucm_sidr_rep_event_resp sidr_rep_resp;
- __u32 send_status;
+    struct ib_ucm_apr_event_resp apr_resp;
+    struct ib_ucm_sidr_req_event_resp sidr_req_resp;
+    struct ib_ucm_sidr_rep_event_resp sidr_rep_resp;
+    __u32 send_status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } u;
+  } u;
 };
 #endif
diff --git a/libc/kernel/uapi/rdma/ib_user_mad.h b/libc/kernel/uapi/rdma/ib_user_mad.h
index de5a3f9..3117888 100644
--- a/libc/kernel/uapi/rdma/ib_user_mad.h
+++ b/libc/kernel/uapi/rdma/ib_user_mad.h
@@ -23,74 +23,96 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IB_USER_MAD_ABI_VERSION 5
 struct ib_user_mad_hdr_old {
- __u32 id;
- __u32 status;
+  __u32 id;
+  __u32 status;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 timeout_ms;
- __u32 retries;
- __u32 length;
- __be32 qpn;
+  __u32 timeout_ms;
+  __u32 retries;
+  __u32 length;
+  __be32 qpn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 qkey;
- __be16 lid;
- __u8 sl;
- __u8 path_bits;
+  __be32 qkey;
+  __be16 lid;
+  __u8 sl;
+  __u8 path_bits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 grh_present;
- __u8 gid_index;
- __u8 hop_limit;
- __u8 traffic_class;
+  __u8 grh_present;
+  __u8 gid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 gid[16];
- __be32 flow_label;
+  __u8 gid[16];
+  __be32 flow_label;
 };
 struct ib_user_mad_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 status;
- __u32 timeout_ms;
- __u32 retries;
+  __u32 id;
+  __u32 status;
+  __u32 timeout_ms;
+  __u32 retries;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 length;
- __be32 qpn;
- __be32 qkey;
- __be16 lid;
+  __u32 length;
+  __be32 qpn;
+  __be32 qkey;
+  __be16 lid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sl;
- __u8 path_bits;
- __u8 grh_present;
- __u8 gid_index;
+  __u8 sl;
+  __u8 path_bits;
+  __u8 grh_present;
+  __u8 gid_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 hop_limit;
- __u8 traffic_class;
- __u8 gid[16];
- __be32 flow_label;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 gid[16];
+  __be32 flow_label;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pkey_index;
- __u8 reserved[6];
+  __u16 pkey_index;
+  __u8 reserved[6];
 };
 struct ib_user_mad {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ib_user_mad_hdr hdr;
- __u64 data[0];
+  struct ib_user_mad_hdr hdr;
+  __u64 data[0];
 };
 typedef unsigned long __attribute__((aligned(4))) packed_ulong;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof (long)))
+#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof(long)))
 struct ib_user_mad_reg_req {
- __u32 id;
- packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK];
+  __u32 id;
+  packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 qpn;
- __u8 mgmt_class;
- __u8 mgmt_class_version;
- __u8 oui[3];
+  __u8 qpn;
+  __u8 mgmt_class;
+  __u8 mgmt_class_version;
+  __u8 oui[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rmpp_version;
+  __u8 rmpp_version;
+};
+enum {
+  IB_USER_MAD_USER_RMPP = (1 << 0),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define IB_USER_MAD_REG_FLAGS_CAP (IB_USER_MAD_USER_RMPP)
+struct ib_user_mad_reg_req2 {
+  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 qpn;
+  __u8 mgmt_class;
+  __u8 mgmt_class_version;
+  __u16 res;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 flags;
+  __u64 method_mask[2];
+  __u32 oui;
+  __u8 rmpp_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved[3];
 };
 #define IB_IOCTL_MAGIC 0x1b
-#define IB_USER_MAD_REGISTER_AGENT _IOWR(IB_IOCTL_MAGIC, 1,   struct ib_user_mad_reg_req)
+#define IB_USER_MAD_REGISTER_AGENT _IOWR(IB_IOCTL_MAGIC, 1, struct ib_user_mad_reg_req)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IB_USER_MAD_UNREGISTER_AGENT _IOW(IB_IOCTL_MAGIC, 2, __u32)
 #define IB_USER_MAD_ENABLE_PKEY _IO(IB_IOCTL_MAGIC, 3)
+#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(IB_IOCTL_MAGIC, 4, struct ib_user_mad_reg_req2)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/rdma/ib_user_sa.h b/libc/kernel/uapi/rdma/ib_user_sa.h
index de5df89..36f4a80 100644
--- a/libc/kernel/uapi/rdma/ib_user_sa.h
+++ b/libc/kernel/uapi/rdma/ib_user_sa.h
@@ -21,46 +21,46 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_PATH_GMP = 1,
- IB_PATH_PRIMARY = (1<<1),
- IB_PATH_ALTERNATE = (1<<2),
- IB_PATH_OUTBOUND = (1<<3),
+  IB_PATH_GMP = 1,
+  IB_PATH_PRIMARY = (1 << 1),
+  IB_PATH_ALTERNATE = (1 << 2),
+  IB_PATH_OUTBOUND = (1 << 3),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_PATH_INBOUND = (1<<4),
- IB_PATH_INBOUND_REVERSE = (1<<5),
- IB_PATH_BIDIRECTIONAL = IB_PATH_OUTBOUND | IB_PATH_INBOUND_REVERSE
+  IB_PATH_INBOUND = (1 << 4),
+  IB_PATH_INBOUND_REVERSE = (1 << 5),
+  IB_PATH_BIDIRECTIONAL = IB_PATH_OUTBOUND | IB_PATH_INBOUND_REVERSE
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_path_rec_data {
- __u32 flags;
- __u32 reserved;
- __u32 path_rec[16];
+  __u32 flags;
+  __u32 reserved;
+  __u32 path_rec[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_user_path_rec {
- __u8 dgid[16];
- __u8 sgid[16];
+  __u8 dgid[16];
+  __u8 sgid[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 dlid;
- __be16 slid;
- __u32 raw_traffic;
- __be32 flow_label;
+  __be16 dlid;
+  __be16 slid;
+  __u32 raw_traffic;
+  __be32 flow_label;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reversible;
- __u32 mtu;
- __be16 pkey;
- __u8 hop_limit;
+  __u32 reversible;
+  __u32 mtu;
+  __be16 pkey;
+  __u8 hop_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 traffic_class;
- __u8 numb_path;
- __u8 sl;
- __u8 mtu_selector;
+  __u8 traffic_class;
+  __u8 numb_path;
+  __u8 sl;
+  __u8 mtu_selector;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rate_selector;
- __u8 rate;
- __u8 packet_life_time_selector;
- __u8 packet_life_time;
+  __u8 rate_selector;
+  __u8 rate;
+  __u8 packet_life_time_selector;
+  __u8 packet_life_time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 preference;
+  __u8 preference;
 };
 #endif
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index dd931d8..9c23ac2 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -23,72 +23,72 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IB_USER_VERBS_CMD_THRESHOLD 50
 enum {
- IB_USER_VERBS_CMD_GET_CONTEXT,
- IB_USER_VERBS_CMD_QUERY_DEVICE,
+  IB_USER_VERBS_CMD_GET_CONTEXT,
+  IB_USER_VERBS_CMD_QUERY_DEVICE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_QUERY_PORT,
- IB_USER_VERBS_CMD_ALLOC_PD,
- IB_USER_VERBS_CMD_DEALLOC_PD,
- IB_USER_VERBS_CMD_CREATE_AH,
+  IB_USER_VERBS_CMD_QUERY_PORT,
+  IB_USER_VERBS_CMD_ALLOC_PD,
+  IB_USER_VERBS_CMD_DEALLOC_PD,
+  IB_USER_VERBS_CMD_CREATE_AH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_MODIFY_AH,
- IB_USER_VERBS_CMD_QUERY_AH,
- IB_USER_VERBS_CMD_DESTROY_AH,
- IB_USER_VERBS_CMD_REG_MR,
+  IB_USER_VERBS_CMD_MODIFY_AH,
+  IB_USER_VERBS_CMD_QUERY_AH,
+  IB_USER_VERBS_CMD_DESTROY_AH,
+  IB_USER_VERBS_CMD_REG_MR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_REG_SMR,
- IB_USER_VERBS_CMD_REREG_MR,
- IB_USER_VERBS_CMD_QUERY_MR,
- IB_USER_VERBS_CMD_DEREG_MR,
+  IB_USER_VERBS_CMD_REG_SMR,
+  IB_USER_VERBS_CMD_REREG_MR,
+  IB_USER_VERBS_CMD_QUERY_MR,
+  IB_USER_VERBS_CMD_DEREG_MR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_ALLOC_MW,
- IB_USER_VERBS_CMD_BIND_MW,
- IB_USER_VERBS_CMD_DEALLOC_MW,
- IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
+  IB_USER_VERBS_CMD_ALLOC_MW,
+  IB_USER_VERBS_CMD_BIND_MW,
+  IB_USER_VERBS_CMD_DEALLOC_MW,
+  IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_CREATE_CQ,
- IB_USER_VERBS_CMD_RESIZE_CQ,
- IB_USER_VERBS_CMD_DESTROY_CQ,
- IB_USER_VERBS_CMD_POLL_CQ,
+  IB_USER_VERBS_CMD_CREATE_CQ,
+  IB_USER_VERBS_CMD_RESIZE_CQ,
+  IB_USER_VERBS_CMD_DESTROY_CQ,
+  IB_USER_VERBS_CMD_POLL_CQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_PEEK_CQ,
- IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
- IB_USER_VERBS_CMD_CREATE_QP,
- IB_USER_VERBS_CMD_QUERY_QP,
+  IB_USER_VERBS_CMD_PEEK_CQ,
+  IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
+  IB_USER_VERBS_CMD_CREATE_QP,
+  IB_USER_VERBS_CMD_QUERY_QP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_MODIFY_QP,
- IB_USER_VERBS_CMD_DESTROY_QP,
- IB_USER_VERBS_CMD_POST_SEND,
- IB_USER_VERBS_CMD_POST_RECV,
+  IB_USER_VERBS_CMD_MODIFY_QP,
+  IB_USER_VERBS_CMD_DESTROY_QP,
+  IB_USER_VERBS_CMD_POST_SEND,
+  IB_USER_VERBS_CMD_POST_RECV,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_ATTACH_MCAST,
- IB_USER_VERBS_CMD_DETACH_MCAST,
- IB_USER_VERBS_CMD_CREATE_SRQ,
- IB_USER_VERBS_CMD_MODIFY_SRQ,
+  IB_USER_VERBS_CMD_ATTACH_MCAST,
+  IB_USER_VERBS_CMD_DETACH_MCAST,
+  IB_USER_VERBS_CMD_CREATE_SRQ,
+  IB_USER_VERBS_CMD_MODIFY_SRQ,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_QUERY_SRQ,
- IB_USER_VERBS_CMD_DESTROY_SRQ,
- IB_USER_VERBS_CMD_POST_SRQ_RECV,
- IB_USER_VERBS_CMD_OPEN_XRCD,
+  IB_USER_VERBS_CMD_QUERY_SRQ,
+  IB_USER_VERBS_CMD_DESTROY_SRQ,
+  IB_USER_VERBS_CMD_POST_SRQ_RECV,
+  IB_USER_VERBS_CMD_OPEN_XRCD,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- IB_USER_VERBS_CMD_CLOSE_XRCD,
- IB_USER_VERBS_CMD_CREATE_XSRQ,
- IB_USER_VERBS_CMD_OPEN_QP,
+  IB_USER_VERBS_CMD_CLOSE_XRCD,
+  IB_USER_VERBS_CMD_CREATE_XSRQ,
+  IB_USER_VERBS_CMD_OPEN_QP,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
- IB_USER_VERBS_EX_CMD_DESTROY_FLOW
+  IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
+  IB_USER_VERBS_EX_CMD_DESTROY_FLOW
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_async_event_desc {
- __u64 element;
- __u32 event_type;
- __u32 reserved;
+  __u64 element;
+  __u32 event_type;
+  __u32 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_comp_event_desc {
- __u64 cq_handle;
+  __u64 cq_handle;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IB_USER_VERBS_CMD_COMMAND_MASK 0xff
@@ -97,795 +97,813 @@
 #define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_cmd_hdr {
- __u32 command;
- __u16 in_words;
- __u16 out_words;
+  __u32 command;
+  __u16 in_words;
+  __u16 out_words;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_ex_cmd_hdr {
- __u64 response;
- __u16 provider_in_words;
+  __u64 response;
+  __u16 provider_in_words;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 provider_out_words;
- __u32 cmd_hdr_reserved;
+  __u16 provider_out_words;
+  __u32 cmd_hdr_reserved;
 };
 struct ib_uverbs_get_context {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u64 driver_data[0];
+  __u64 response;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_get_context_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 async_fd;
- __u32 num_comp_vectors;
+  __u32 async_fd;
+  __u32 num_comp_vectors;
 };
 struct ib_uverbs_query_device {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u64 driver_data[0];
+  __u64 response;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_query_device_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 fw_ver;
- __be64 node_guid;
- __be64 sys_image_guid;
- __u64 max_mr_size;
+  __u64 fw_ver;
+  __be64 node_guid;
+  __be64 sys_image_guid;
+  __u64 max_mr_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 page_size_cap;
- __u32 vendor_id;
- __u32 vendor_part_id;
- __u32 hw_ver;
+  __u64 page_size_cap;
+  __u32 vendor_id;
+  __u32 vendor_part_id;
+  __u32 hw_ver;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_qp;
- __u32 max_qp_wr;
- __u32 device_cap_flags;
- __u32 max_sge;
+  __u32 max_qp;
+  __u32 max_qp_wr;
+  __u32 device_cap_flags;
+  __u32 max_sge;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_sge_rd;
- __u32 max_cq;
- __u32 max_cqe;
- __u32 max_mr;
+  __u32 max_sge_rd;
+  __u32 max_cq;
+  __u32 max_cqe;
+  __u32 max_mr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_pd;
- __u32 max_qp_rd_atom;
- __u32 max_ee_rd_atom;
- __u32 max_res_rd_atom;
+  __u32 max_pd;
+  __u32 max_qp_rd_atom;
+  __u32 max_ee_rd_atom;
+  __u32 max_res_rd_atom;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_qp_init_rd_atom;
- __u32 max_ee_init_rd_atom;
- __u32 atomic_cap;
- __u32 max_ee;
+  __u32 max_qp_init_rd_atom;
+  __u32 max_ee_init_rd_atom;
+  __u32 atomic_cap;
+  __u32 max_ee;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_rdd;
- __u32 max_mw;
- __u32 max_raw_ipv6_qp;
- __u32 max_raw_ethy_qp;
+  __u32 max_rdd;
+  __u32 max_mw;
+  __u32 max_raw_ipv6_qp;
+  __u32 max_raw_ethy_qp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_mcast_grp;
- __u32 max_mcast_qp_attach;
- __u32 max_total_mcast_qp_attach;
- __u32 max_ah;
+  __u32 max_mcast_grp;
+  __u32 max_mcast_qp_attach;
+  __u32 max_total_mcast_qp_attach;
+  __u32 max_ah;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_fmr;
- __u32 max_map_per_fmr;
- __u32 max_srq;
- __u32 max_srq_wr;
+  __u32 max_fmr;
+  __u32 max_map_per_fmr;
+  __u32 max_srq;
+  __u32 max_srq_wr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_srq_sge;
- __u16 max_pkeys;
- __u8 local_ca_ack_delay;
- __u8 phys_port_cnt;
+  __u32 max_srq_sge;
+  __u16 max_pkeys;
+  __u8 local_ca_ack_delay;
+  __u8 phys_port_cnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved[4];
+  __u8 reserved[4];
 };
 struct ib_uverbs_query_port {
- __u64 response;
+  __u64 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 port_num;
- __u8 reserved[7];
- __u64 driver_data[0];
+  __u8 port_num;
+  __u8 reserved[7];
+  __u64 driver_data[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_query_port_resp {
- __u32 port_cap_flags;
- __u32 max_msg_sz;
- __u32 bad_pkey_cntr;
+  __u32 port_cap_flags;
+  __u32 max_msg_sz;
+  __u32 bad_pkey_cntr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qkey_viol_cntr;
- __u32 gid_tbl_len;
- __u16 pkey_tbl_len;
- __u16 lid;
+  __u32 qkey_viol_cntr;
+  __u32 gid_tbl_len;
+  __u16 pkey_tbl_len;
+  __u16 lid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 sm_lid;
- __u8 state;
- __u8 max_mtu;
- __u8 active_mtu;
+  __u16 sm_lid;
+  __u8 state;
+  __u8 max_mtu;
+  __u8 active_mtu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 lmc;
- __u8 max_vl_num;
- __u8 sm_sl;
- __u8 subnet_timeout;
+  __u8 lmc;
+  __u8 max_vl_num;
+  __u8 sm_sl;
+  __u8 subnet_timeout;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 init_type_reply;
- __u8 active_width;
- __u8 active_speed;
- __u8 phys_state;
+  __u8 init_type_reply;
+  __u8 active_width;
+  __u8 active_speed;
+  __u8 phys_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 link_layer;
- __u8 reserved[2];
+  __u8 link_layer;
+  __u8 reserved[2];
 };
 struct ib_uverbs_alloc_pd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u64 driver_data[0];
+  __u64 response;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_alloc_pd_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pd_handle;
+  __u32 pd_handle;
 };
 struct ib_uverbs_dealloc_pd {
- __u32 pd_handle;
+  __u32 pd_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_open_xrcd {
- __u64 response;
- __u32 fd;
+  __u64 response;
+  __u32 fd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 oflags;
- __u64 driver_data[0];
+  __u32 oflags;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_open_xrcd_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 xrcd_handle;
+  __u32 xrcd_handle;
 };
 struct ib_uverbs_close_xrcd {
- __u32 xrcd_handle;
+  __u32 xrcd_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_reg_mr {
- __u64 response;
- __u64 start;
+  __u64 response;
+  __u64 start;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 length;
- __u64 hca_va;
- __u32 pd_handle;
- __u32 access_flags;
+  __u64 length;
+  __u64 hca_va;
+  __u32 pd_handle;
+  __u32 access_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 driver_data[0];
+  __u64 driver_data[0];
 };
 struct ib_uverbs_reg_mr_resp {
- __u32 mr_handle;
+  __u32 mr_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 lkey;
- __u32 rkey;
+  __u32 lkey;
+  __u32 rkey;
+};
+struct ib_uverbs_rereg_mr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 response;
+  __u32 mr_handle;
+  __u32 flags;
+  __u64 start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 length;
+  __u64 hca_va;
+  __u32 pd_handle;
+  __u32 access_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct ib_uverbs_rereg_mr_resp {
+  __u32 lkey;
+  __u32 rkey;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_dereg_mr {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 mr_handle;
+  __u32 mr_handle;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_alloc_mw {
- __u64 response;
+  __u64 response;
+  __u32 pd_handle;
+  __u8 mw_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pd_handle;
- __u8 mw_type;
- __u8 reserved[3];
+  __u8 reserved[3];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_alloc_mw_resp {
- __u32 mw_handle;
- __u32 rkey;
-};
+  __u32 mw_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 rkey;
+};
 struct ib_uverbs_dealloc_mw {
- __u32 mw_handle;
+  __u32 mw_handle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_create_comp_channel {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
+  __u64 response;
 };
-struct ib_uverbs_create_comp_channel_resp {
- __u32 fd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ib_uverbs_create_comp_channel_resp {
+  __u32 fd;
 };
 struct ib_uverbs_create_cq {
- __u64 response;
- __u64 user_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cqe;
- __u32 comp_vector;
- __s32 comp_channel;
- __u32 reserved;
+  __u64 response;
+  __u64 user_handle;
+  __u32 cqe;
+  __u32 comp_vector;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 driver_data[0];
+  __s32 comp_channel;
+  __u32 reserved;
+  __u64 driver_data[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_create_cq_resp {
- __u32 cq_handle;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cqe;
+  __u32 cq_handle;
+  __u32 cqe;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_resize_cq {
- __u64 response;
+  __u64 response;
+  __u32 cq_handle;
+  __u32 cqe;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cq_handle;
- __u32 cqe;
- __u64 driver_data[0];
+  __u64 driver_data[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_resize_cq_resp {
- __u32 cqe;
- __u32 reserved;
- __u64 driver_data[0];
+  __u32 cqe;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_poll_cq {
- __u64 response;
- __u32 cq_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ne;
+  __u64 response;
+  __u32 cq_handle;
+  __u32 ne;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_wc {
- __u64 wr_id;
+  __u64 wr_id;
+  __u32 status;
+  __u32 opcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 status;
- __u32 opcode;
- __u32 vendor_err;
- __u32 byte_len;
+  __u32 vendor_err;
+  __u32 byte_len;
+  union {
+    __u32 imm_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- __u32 imm_data;
- __u32 invalidate_rkey;
- } ex;
+    __u32 invalidate_rkey;
+  } ex;
+  __u32 qp_num;
+  __u32 src_qp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_num;
- __u32 src_qp;
- __u32 wc_flags;
- __u16 pkey_index;
+  __u32 wc_flags;
+  __u16 pkey_index;
+  __u16 slid;
+  __u8 sl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 slid;
- __u8 sl;
- __u8 dlid_path_bits;
- __u8 port_num;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved;
+  __u8 dlid_path_bits;
+  __u8 port_num;
+  __u8 reserved;
 };
-struct ib_uverbs_poll_cq_resp {
- __u32 count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
- struct ib_uverbs_wc wc[0];
+struct ib_uverbs_poll_cq_resp {
+  __u32 count;
+  __u32 reserved;
+  struct ib_uverbs_wc wc[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_req_notify_cq {
+  __u32 cq_handle;
+  __u32 solicited_only;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 cq_handle;
- __u32 solicited_only;
 };
 struct ib_uverbs_destroy_cq {
+  __u64 response;
+  __u32 cq_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u32 cq_handle;
- __u32 reserved;
+  __u32 reserved;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_destroy_cq_resp {
- __u32 comp_events_reported;
- __u32 async_events_reported;
-};
+  __u32 comp_events_reported;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 async_events_reported;
+};
 struct ib_uverbs_global_route {
- __u8 dgid[16];
- __u32 flow_label;
- __u8 sgid_index;
+  __u8 dgid[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 hop_limit;
- __u8 traffic_class;
- __u8 reserved;
+  __u32 flow_label;
+  __u8 sgid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_ah_attr {
- struct ib_uverbs_global_route grh;
- __u16 dlid;
- __u8 sl;
+  struct ib_uverbs_global_route grh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 src_path_bits;
- __u8 static_rate;
- __u8 is_global;
- __u8 port_num;
+  __u16 dlid;
+  __u8 sl;
+  __u8 src_path_bits;
+  __u8 static_rate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved;
+  __u8 is_global;
+  __u8 port_num;
+  __u8 reserved;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_qp_attr {
- __u32 qp_attr_mask;
+  __u32 qp_attr_mask;
+  __u32 qp_state;
+  __u32 cur_qp_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_state;
- __u32 cur_qp_state;
- __u32 path_mtu;
- __u32 path_mig_state;
+  __u32 path_mtu;
+  __u32 path_mig_state;
+  __u32 qkey;
+  __u32 rq_psn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qkey;
- __u32 rq_psn;
- __u32 sq_psn;
- __u32 dest_qp_num;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  struct ib_uverbs_ah_attr ah_attr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_access_flags;
- struct ib_uverbs_ah_attr ah_attr;
- struct ib_uverbs_ah_attr alt_ah_attr;
- __u32 max_send_wr;
+  struct ib_uverbs_ah_attr alt_ah_attr;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_recv_wr;
- __u32 max_send_sge;
- __u32 max_recv_sge;
- __u32 max_inline_data;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 pkey_index;
- __u16 alt_pkey_index;
- __u8 en_sqd_async_notify;
- __u8 sq_draining;
+  __u8 en_sqd_async_notify;
+  __u8 sq_draining;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 max_rd_atomic;
- __u8 max_dest_rd_atomic;
- __u8 min_rnr_timer;
- __u8 port_num;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 timeout;
- __u8 retry_cnt;
- __u8 rnr_retry;
- __u8 alt_port_num;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 reserved[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 alt_timeout;
- __u8 reserved[5];
 };
 struct ib_uverbs_create_qp {
+  __u64 response;
+  __u64 user_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u64 user_handle;
- __u32 pd_handle;
- __u32 send_cq_handle;
+  __u32 pd_handle;
+  __u32 send_cq_handle;
+  __u32 recv_cq_handle;
+  __u32 srq_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 recv_cq_handle;
- __u32 srq_handle;
- __u32 max_send_wr;
- __u32 max_recv_wr;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_send_sge;
- __u32 max_recv_sge;
- __u32 max_inline_data;
- __u8 sq_sig_all;
+  __u32 max_inline_data;
+  __u8 sq_sig_all;
+  __u8 qp_type;
+  __u8 is_srq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 qp_type;
- __u8 is_srq;
- __u8 reserved;
- __u64 driver_data[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_open_qp {
- __u64 response;
- __u64 user_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pd_handle;
- __u32 qpn;
- __u8 qp_type;
- __u8 reserved[7];
+  __u64 response;
+  __u64 user_handle;
+  __u32 pd_handle;
+  __u32 qpn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 driver_data[0];
+  __u8 qp_type;
+  __u8 reserved[7];
+  __u64 driver_data[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_create_qp_resp {
- __u32 qp_handle;
+  __u32 qp_handle;
+  __u32 qpn;
+  __u32 max_send_wr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qpn;
- __u32 max_send_wr;
- __u32 max_recv_wr;
- __u32 max_send_sge;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_recv_sge;
- __u32 max_inline_data;
- __u32 reserved;
+  __u32 reserved;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_qp_dest {
- __u8 dgid[16];
- __u32 flow_label;
- __u16 dlid;
+  __u8 dgid[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 reserved;
- __u8 sgid_index;
- __u8 hop_limit;
- __u8 traffic_class;
+  __u32 flow_label;
+  __u16 dlid;
+  __u16 reserved;
+  __u8 sgid_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sl;
- __u8 src_path_bits;
- __u8 static_rate;
- __u8 is_global;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 sl;
+  __u8 src_path_bits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 port_num;
+  __u8 static_rate;
+  __u8 is_global;
+  __u8 port_num;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_query_qp {
- __u64 response;
+  __u64 response;
+  __u32 qp_handle;
+  __u32 attr_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_handle;
- __u32 attr_mask;
- __u64 driver_data[0];
+  __u64 driver_data[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_query_qp_resp {
- struct ib_uverbs_qp_dest dest;
- struct ib_uverbs_qp_dest alt_dest;
- __u32 max_send_wr;
+  struct ib_uverbs_qp_dest dest;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_recv_wr;
- __u32 max_send_sge;
- __u32 max_recv_sge;
- __u32 max_inline_data;
+  struct ib_uverbs_qp_dest alt_dest;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qkey;
- __u32 rq_psn;
- __u32 sq_psn;
- __u32 dest_qp_num;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u32 qkey;
+  __u32 rq_psn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_access_flags;
- __u16 pkey_index;
- __u16 alt_pkey_index;
- __u8 qp_state;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  __u16 pkey_index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 cur_qp_state;
- __u8 path_mtu;
- __u8 path_mig_state;
- __u8 sq_draining;
+  __u16 alt_pkey_index;
+  __u8 qp_state;
+  __u8 cur_qp_state;
+  __u8 path_mtu;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 max_rd_atomic;
- __u8 max_dest_rd_atomic;
- __u8 min_rnr_timer;
- __u8 port_num;
+  __u8 path_mig_state;
+  __u8 sq_draining;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 timeout;
- __u8 retry_cnt;
- __u8 rnr_retry;
- __u8 alt_port_num;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 alt_timeout;
- __u8 sq_sig_all;
- __u8 reserved[5];
- __u64 driver_data[0];
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 sq_sig_all;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved[5];
+  __u64 driver_data[0];
 };
 struct ib_uverbs_modify_qp {
- struct ib_uverbs_qp_dest dest;
- struct ib_uverbs_qp_dest alt_dest;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_handle;
- __u32 attr_mask;
- __u32 qkey;
- __u32 rq_psn;
+  struct ib_uverbs_qp_dest dest;
+  struct ib_uverbs_qp_dest alt_dest;
+  __u32 qp_handle;
+  __u32 attr_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sq_psn;
- __u32 dest_qp_num;
- __u32 qp_access_flags;
- __u16 pkey_index;
+  __u32 qkey;
+  __u32 rq_psn;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 alt_pkey_index;
- __u8 qp_state;
- __u8 cur_qp_state;
- __u8 path_mtu;
+  __u32 qp_access_flags;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
+  __u8 qp_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 path_mig_state;
- __u8 en_sqd_async_notify;
- __u8 max_rd_atomic;
- __u8 max_dest_rd_atomic;
+  __u8 cur_qp_state;
+  __u8 path_mtu;
+  __u8 path_mig_state;
+  __u8 en_sqd_async_notify;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 min_rnr_timer;
- __u8 port_num;
- __u8 timeout;
- __u8 retry_cnt;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
+  __u8 min_rnr_timer;
+  __u8 port_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rnr_retry;
- __u8 alt_port_num;
- __u8 alt_timeout;
- __u8 reserved[2];
+  __u8 timeout;
+  __u8 retry_cnt;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 driver_data[0];
+  __u8 alt_timeout;
+  __u8 reserved[2];
+  __u64 driver_data[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_modify_qp_resp {
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_destroy_qp {
- __u64 response;
- __u32 qp_handle;
- __u32 reserved;
+  __u64 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 qp_handle;
+  __u32 reserved;
 };
 struct ib_uverbs_destroy_qp_resp {
- __u32 events_reported;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 events_reported;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_sge {
- __u64 addr;
- __u32 length;
- __u32 lkey;
+  __u64 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 length;
+  __u32 lkey;
 };
 struct ib_uverbs_send_wr {
- __u64 wr_id;
- __u32 num_sge;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 opcode;
- __u32 send_flags;
- union {
- __u32 imm_data;
+  __u64 wr_id;
+  __u32 num_sge;
+  __u32 opcode;
+  __u32 send_flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 invalidate_rkey;
- } ex;
- union {
- struct {
+  union {
+    __u32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 remote_addr;
- __u32 rkey;
- __u32 reserved;
- } rdma;
+  union {
+    struct {
+      __u64 remote_addr;
+      __u32 rkey;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __u64 remote_addr;
- __u64 compare_add;
- __u64 swap;
+      __u32 reserved;
+    } rdma;
+    struct {
+      __u64 remote_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rkey;
- __u32 reserved;
- } atomic;
- struct {
+      __u64 compare_add;
+      __u64 swap;
+      __u32 rkey;
+      __u32 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ah;
- __u32 remote_qpn;
- __u32 remote_qkey;
- __u32 reserved;
+    } atomic;
+    struct {
+      __u32 ah;
+      __u32 remote_qpn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } ud;
- } wr;
+      __u32 remote_qkey;
+      __u32 reserved;
+    } ud;
+  } wr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_post_send {
+  __u64 response;
+  __u32 qp_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u32 qp_handle;
- __u32 wr_count;
- __u32 sge_count;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_send_wr send_wr[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 wqe_size;
- struct ib_uverbs_send_wr send_wr[0];
 };
 struct ib_uverbs_post_send_resp {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bad_wr;
+  __u32 bad_wr;
 };
-struct ib_uverbs_recv_wr {
- __u64 wr_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_sge;
- __u32 reserved;
+struct ib_uverbs_recv_wr {
+  __u64 wr_id;
+  __u32 num_sge;
+  __u32 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_post_recv {
+  __u64 response;
+  __u32 qp_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u32 qp_handle;
- __u32 wr_count;
- __u32 sge_count;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_recv_wr recv_wr[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 wqe_size;
- struct ib_uverbs_recv_wr recv_wr[0];
 };
 struct ib_uverbs_post_recv_resp {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bad_wr;
+  __u32 bad_wr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_post_srq_recv {
- __u64 response;
+  __u64 response;
+  __u32 srq_handle;
+  __u32 wr_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 srq_handle;
- __u32 wr_count;
- __u32 sge_count;
- __u32 wqe_size;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ib_uverbs_recv_wr recv[0];
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_recv_wr recv[0];
 };
-struct ib_uverbs_post_srq_recv_resp {
- __u32 bad_wr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ib_uverbs_post_srq_recv_resp {
+  __u32 bad_wr;
 };
 struct ib_uverbs_create_ah {
- __u64 response;
- __u64 user_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pd_handle;
- __u32 reserved;
- struct ib_uverbs_ah_attr attr;
+  __u64 response;
+  __u64 user_handle;
+  __u32 pd_handle;
+  __u32 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct ib_uverbs_ah_attr attr;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_create_ah_resp {
- __u32 ah_handle;
+  __u32 ah_handle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_destroy_ah {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ah_handle;
+  __u32 ah_handle;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_attach_mcast {
- __u8 gid[16];
+  __u8 gid[16];
+  __u32 qp_handle;
+  __u16 mlid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_handle;
- __u16 mlid;
- __u16 reserved;
- __u64 driver_data[0];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 reserved;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_detach_mcast {
- __u8 gid[16];
- __u32 qp_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 mlid;
- __u16 reserved;
- __u64 driver_data[0];
+  __u8 gid[16];
+  __u32 qp_handle;
+  __u16 mlid;
+  __u16 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u64 driver_data[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_flow_spec_hdr {
- __u32 type;
- __u16 size;
- __u16 reserved;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 flow_spec_data[0];
+  __u16 size;
+  __u16 reserved;
+  __u64 flow_spec_data[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_flow_eth_filter {
- __u8 dst_mac[6];
+  __u8 dst_mac[6];
+  __u8 src_mac[6];
+  __be16 ether_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 src_mac[6];
- __be16 ether_type;
- __be16 vlan_tag;
+  __be16 vlan_tag;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_flow_spec_eth {
- union {
- struct ib_uverbs_flow_spec_hdr hdr;
- struct {
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u16 size;
- __u16 reserved;
- };
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- struct ib_uverbs_flow_eth_filter val;
- struct ib_uverbs_flow_eth_filter mask;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_eth_filter val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct ib_uverbs_flow_eth_filter mask;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_flow_ipv4_filter {
- __be32 src_ip;
- __be32 dst_ip;
-};
+  __be32 src_ip;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be32 dst_ip;
+};
 struct ib_uverbs_flow_spec_ipv4 {
- union {
- struct ib_uverbs_flow_spec_hdr hdr;
- struct {
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u16 size;
- __u16 reserved;
- };
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- struct ib_uverbs_flow_ipv4_filter val;
- struct ib_uverbs_flow_ipv4_filter mask;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_ipv4_filter val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct ib_uverbs_flow_ipv4_filter mask;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_flow_tcp_udp_filter {
- __be16 dst_port;
- __be16 src_port;
-};
+  __be16 dst_port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be16 src_port;
+};
 struct ib_uverbs_flow_spec_tcp_udp {
- union {
- struct ib_uverbs_flow_spec_hdr hdr;
- struct {
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 type;
- __u16 size;
- __u16 reserved;
- };
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- };
- struct ib_uverbs_flow_tcp_udp_filter val;
- struct ib_uverbs_flow_tcp_udp_filter mask;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_tcp_udp_filter val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct ib_uverbs_flow_tcp_udp_filter mask;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_flow_attr {
- __u32 type;
- __u16 size;
- __u16 priority;
+  __u32 type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 num_of_specs;
- __u8 reserved[2];
- __u8 port;
- __u32 flags;
+  __u16 size;
+  __u16 priority;
+  __u8 num_of_specs;
+  __u8 reserved[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  __u8 port;
+  __u32 flags;
+  struct ib_uverbs_flow_spec_hdr flow_specs[0];
 };
-struct ib_uverbs_create_flow {
- __u32 comp_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_handle;
- struct ib_uverbs_flow_attr flow_attr;
+struct ib_uverbs_create_flow {
+  __u32 comp_mask;
+  __u32 qp_handle;
+  struct ib_uverbs_flow_attr flow_attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_create_flow_resp {
+  __u32 comp_mask;
+  __u32 flow_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 comp_mask;
- __u32 flow_handle;
 };
 struct ib_uverbs_destroy_flow {
+  __u32 comp_mask;
+  __u32 flow_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 comp_mask;
- __u32 flow_handle;
 };
 struct ib_uverbs_create_srq {
+  __u64 response;
+  __u64 user_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u64 user_handle;
- __u32 pd_handle;
- __u32 max_wr;
+  __u32 pd_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srq_limit;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_sge;
- __u32 srq_limit;
- __u64 driver_data[0];
+  __u64 driver_data[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_create_xsrq {
- __u64 response;
- __u64 user_handle;
- __u32 srq_type;
+  __u64 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pd_handle;
- __u32 max_wr;
- __u32 max_sge;
- __u32 srq_limit;
+  __u64 user_handle;
+  __u32 srq_type;
+  __u32 pd_handle;
+  __u32 max_wr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
- __u32 xrcd_handle;
- __u32 cq_handle;
- __u64 driver_data[0];
+  __u32 max_sge;
+  __u32 srq_limit;
+  __u32 reserved;
+  __u32 xrcd_handle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 cq_handle;
+  __u64 driver_data[0];
 };
 struct ib_uverbs_create_srq_resp {
- __u32 srq_handle;
- __u32 max_wr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_sge;
- __u32 srqn;
+  __u32 srq_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srqn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_modify_srq {
+  __u32 srq_handle;
+  __u32 attr_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 srq_handle;
- __u32 attr_mask;
- __u32 max_wr;
- __u32 srq_limit;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 driver_data[0];
+  __u32 max_wr;
+  __u32 srq_limit;
+  __u64 driver_data[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_query_srq {
- __u64 response;
+  __u64 response;
+  __u32 srq_handle;
+  __u32 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 srq_handle;
- __u32 reserved;
- __u64 driver_data[0];
+  __u64 driver_data[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ib_uverbs_query_srq_resp {
- __u32 max_wr;
- __u32 max_sge;
- __u32 srq_limit;
+  __u32 max_wr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
+  __u32 max_sge;
+  __u32 srq_limit;
+  __u32 reserved;
 };
-struct ib_uverbs_destroy_srq {
- __u64 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 srq_handle;
- __u32 reserved;
+struct ib_uverbs_destroy_srq {
+  __u64 response;
+  __u32 srq_handle;
+  __u32 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ib_uverbs_destroy_srq_resp {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 events_reported;
+  __u32 events_reported;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/rdma/rdma_netlink.h b/libc/kernel/uapi/rdma/rdma_netlink.h
index 195b7f1..e49bfff 100644
--- a/libc/kernel/uapi/rdma/rdma_netlink.h
+++ b/libc/kernel/uapi/rdma/rdma_netlink.h
@@ -21,34 +21,135 @@
 #include <linux/types.h>
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_NL_RDMA_CM = 1
+  RDMA_NL_RDMA_CM = 1,
+  RDMA_NL_NES,
+  RDMA_NL_C4IW,
+  RDMA_NL_NUM_CLIENTS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum {
+  RDMA_NL_GROUP_CM = 1,
+  RDMA_NL_GROUP_IWPM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RDMA_NL_NUM_GROUPS
 };
 #define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10)
 #define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
+#define RDMA_NL_GET_TYPE(client,op) ((client << 10) + op)
 enum {
- RDMA_NL_RDMA_CM_ID_STATS = 0,
- RDMA_NL_RDMA_CM_NUM_OPS
+  RDMA_NL_RDMA_CM_ID_STATS = 0,
+  RDMA_NL_RDMA_CM_NUM_OPS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1,
- RDMA_NL_RDMA_CM_ATTR_DST_ADDR,
+  RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1,
+  RDMA_NL_RDMA_CM_ATTR_DST_ADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_NL_RDMA_CM_NUM_ATTR,
+  RDMA_NL_RDMA_CM_NUM_ATTR,
 };
+enum {
+  RDMA_NL_IWPM_REG_PID = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RDMA_NL_IWPM_ADD_MAPPING,
+  RDMA_NL_IWPM_QUERY_MAPPING,
+  RDMA_NL_IWPM_REMOVE_MAPPING,
+  RDMA_NL_IWPM_HANDLE_ERR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RDMA_NL_IWPM_MAPINFO,
+  RDMA_NL_IWPM_MAPINFO_NUM,
+  RDMA_NL_IWPM_NUM_OPS
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_cm_id_stats {
- __u32 qp_num;
+  __u32 qp_num;
+  __u32 bound_dev_if;
+  __u32 port_space;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 bound_dev_if;
- __u32 port_space;
- __s32 pid;
- __u8 cm_state;
+  __s32 pid;
+  __u8 cm_state;
+  __u8 node_type;
+  __u8 port_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 node_type;
- __u8 port_num;
- __u8 qp_type;
+  __u8 qp_type;
+};
+enum {
+  IWPM_NLA_REG_PID_UNSPEC = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_REG_PID_SEQ,
+  IWPM_NLA_REG_IF_NAME,
+  IWPM_NLA_REG_IBDEV_NAME,
+  IWPM_NLA_REG_ULIB_NAME,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_REG_PID_MAX
+};
+enum {
+  IWPM_NLA_RREG_PID_UNSPEC = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_RREG_PID_SEQ,
+  IWPM_NLA_RREG_IBDEV_NAME,
+  IWPM_NLA_RREG_ULIB_NAME,
+  IWPM_NLA_RREG_ULIB_VER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_RREG_PID_ERR,
+  IWPM_NLA_RREG_PID_MAX
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
+  IWPM_NLA_MANAGE_MAPPING_SEQ,
+  IWPM_NLA_MANAGE_ADDR,
+  IWPM_NLA_MANAGE_MAPPED_LOC_ADDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_RMANAGE_MAPPING_ERR,
+  IWPM_NLA_RMANAGE_MAPPING_MAX
+};
+#define IWPM_NLA_MANAGE_MAPPING_MAX 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IWPM_NLA_QUERY_MAPPING_MAX 4
+#define IWPM_NLA_MAPINFO_SEND_MAX 3
+enum {
+  IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_QUERY_MAPPING_SEQ,
+  IWPM_NLA_QUERY_LOCAL_ADDR,
+  IWPM_NLA_QUERY_REMOTE_ADDR,
+  IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
+  IWPM_NLA_RQUERY_MAPPING_ERR,
+  IWPM_NLA_RQUERY_MAPPING_MAX
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  IWPM_NLA_MAPINFO_REQ_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_ULIB_NAME,
+  IWPM_NLA_MAPINFO_ULIB_VER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_MAPINFO_REQ_MAX
+};
+enum {
+  IWPM_NLA_MAPINFO_UNSPEC = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_MAPINFO_LOCAL_ADDR,
+  IWPM_NLA_MAPINFO_MAPPED_ADDR,
+  IWPM_NLA_MAPINFO_MAX
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+  IWPM_NLA_MAPINFO_NUM_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_SEQ,
+  IWPM_NLA_MAPINFO_SEND_NUM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_MAPINFO_ACK_NUM,
+  IWPM_NLA_MAPINFO_NUM_MAX
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IWPM_NLA_ERR_UNSPEC = 0,
+  IWPM_NLA_ERR_SEQ,
+  IWPM_NLA_ERR_CODE,
+  IWPM_NLA_ERR_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #endif
diff --git a/libc/kernel/uapi/rdma/rdma_user_cm.h b/libc/kernel/uapi/rdma/rdma_user_cm.h
index 74e5a05..f244926 100644
--- a/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -19,283 +19,285 @@
 #ifndef RDMA_USER_CM_H
 #define RDMA_USER_CM_H
 #include <linux/types.h>
-#include <linux/in6.h>
+#include <linux/socket.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/in6.h>
 #include <rdma/ib_user_verbs.h>
 #include <rdma/ib_user_sa.h>
 #define RDMA_USER_CM_ABI_VERSION 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RDMA_MAX_PRIVATE_DATA 256
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- RDMA_USER_CM_CMD_CREATE_ID,
- RDMA_USER_CM_CMD_DESTROY_ID,
- RDMA_USER_CM_CMD_BIND_IP,
+  RDMA_USER_CM_CMD_CREATE_ID,
+  RDMA_USER_CM_CMD_DESTROY_ID,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_USER_CM_CMD_RESOLVE_IP,
- RDMA_USER_CM_CMD_RESOLVE_ROUTE,
- RDMA_USER_CM_CMD_QUERY_ROUTE,
- RDMA_USER_CM_CMD_CONNECT,
+  RDMA_USER_CM_CMD_BIND_IP,
+  RDMA_USER_CM_CMD_RESOLVE_IP,
+  RDMA_USER_CM_CMD_RESOLVE_ROUTE,
+  RDMA_USER_CM_CMD_QUERY_ROUTE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_USER_CM_CMD_LISTEN,
- RDMA_USER_CM_CMD_ACCEPT,
- RDMA_USER_CM_CMD_REJECT,
- RDMA_USER_CM_CMD_DISCONNECT,
+  RDMA_USER_CM_CMD_CONNECT,
+  RDMA_USER_CM_CMD_LISTEN,
+  RDMA_USER_CM_CMD_ACCEPT,
+  RDMA_USER_CM_CMD_REJECT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_USER_CM_CMD_INIT_QP_ATTR,
- RDMA_USER_CM_CMD_GET_EVENT,
- RDMA_USER_CM_CMD_GET_OPTION,
- RDMA_USER_CM_CMD_SET_OPTION,
+  RDMA_USER_CM_CMD_DISCONNECT,
+  RDMA_USER_CM_CMD_INIT_QP_ATTR,
+  RDMA_USER_CM_CMD_GET_EVENT,
+  RDMA_USER_CM_CMD_GET_OPTION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_USER_CM_CMD_NOTIFY,
- RDMA_USER_CM_CMD_JOIN_IP_MCAST,
- RDMA_USER_CM_CMD_LEAVE_MCAST,
- RDMA_USER_CM_CMD_MIGRATE_ID,
+  RDMA_USER_CM_CMD_SET_OPTION,
+  RDMA_USER_CM_CMD_NOTIFY,
+  RDMA_USER_CM_CMD_JOIN_IP_MCAST,
+  RDMA_USER_CM_CMD_LEAVE_MCAST,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_USER_CM_CMD_QUERY,
- RDMA_USER_CM_CMD_BIND,
- RDMA_USER_CM_CMD_RESOLVE_ADDR,
- RDMA_USER_CM_CMD_JOIN_MCAST
+  RDMA_USER_CM_CMD_MIGRATE_ID,
+  RDMA_USER_CM_CMD_QUERY,
+  RDMA_USER_CM_CMD_BIND,
+  RDMA_USER_CM_CMD_RESOLVE_ADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RDMA_USER_CM_CMD_JOIN_MCAST
 };
 struct rdma_ucm_cmd_hdr {
- __u32 cmd;
- __u16 in;
+  __u32 cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 out;
+  __u16 in;
+  __u16 out;
 };
 struct rdma_ucm_create_id {
- __u64 uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u16 ps;
- __u8 qp_type;
- __u8 reserved[5];
+  __u64 uid;
+  __u64 response;
+  __u16 ps;
+  __u8 qp_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved[5];
 };
 struct rdma_ucm_create_id_resp {
- __u32 id;
+  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_destroy_id {
- __u64 response;
- __u32 id;
- __u32 reserved;
+  __u64 response;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved;
 };
 struct rdma_ucm_destroy_id_resp {
- __u32 events_reported;
+  __u32 events_reported;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_bind_ip {
- __u64 response;
- struct sockaddr_in6 addr;
- __u32 id;
+  __u64 response;
+  struct sockaddr_in6 addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 id;
 };
 struct rdma_ucm_bind {
- __u32 id;
- __u16 addr_size;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 reserved;
- struct sockaddr_storage addr;
+  __u16 addr_size;
+  __u16 reserved;
+  struct sockaddr_storage addr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_resolve_ip {
+  struct sockaddr_in6 src_addr;
+  struct sockaddr_in6 dst_addr;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_in6 src_addr;
- struct sockaddr_in6 dst_addr;
- __u32 id;
- __u32 timeout_ms;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 timeout_ms;
 };
 struct rdma_ucm_resolve_addr {
- __u32 id;
- __u32 timeout_ms;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 src_size;
- __u16 dst_size;
- __u32 reserved;
- struct sockaddr_storage src_addr;
+  __u32 timeout_ms;
+  __u16 src_size;
+  __u16 dst_size;
+  __u32 reserved;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_storage dst_addr;
+  struct sockaddr_storage src_addr;
+  struct sockaddr_storage dst_addr;
 };
 struct rdma_ucm_resolve_route {
- __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 timeout_ms;
+  __u32 id;
+  __u32 timeout_ms;
 };
 enum {
- RDMA_USER_CM_QUERY_ADDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_USER_CM_QUERY_PATH,
- RDMA_USER_CM_QUERY_GID
+  RDMA_USER_CM_QUERY_ADDR,
+  RDMA_USER_CM_QUERY_PATH,
+  RDMA_USER_CM_QUERY_GID
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_query {
+  __u64 response;
+  __u32 id;
+  __u32 option;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 response;
- __u32 id;
- __u32 option;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_query_route_resp {
- __u64 node_guid;
- struct ib_user_path_rec ib_route[2];
- struct sockaddr_in6 src_addr;
+  __u64 node_guid;
+  struct ib_user_path_rec ib_route[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_in6 dst_addr;
- __u32 num_paths;
- __u8 port_num;
- __u8 reserved[3];
+  struct sockaddr_in6 src_addr;
+  struct sockaddr_in6 dst_addr;
+  __u32 num_paths;
+  __u8 port_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved[3];
 };
 struct rdma_ucm_query_addr_resp {
- __u64 node_guid;
- __u8 port_num;
+  __u64 node_guid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved;
- __u16 pkey;
- __u16 src_size;
- __u16 dst_size;
+  __u8 port_num;
+  __u8 reserved;
+  __u16 pkey;
+  __u16 src_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct sockaddr_storage src_addr;
- struct sockaddr_storage dst_addr;
+  __u16 dst_size;
+  struct sockaddr_storage src_addr;
+  struct sockaddr_storage dst_addr;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_query_path_resp {
+  __u32 num_paths;
+  __u32 reserved;
+  struct ib_path_rec_data path_data[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_paths;
- __u32 reserved;
- struct ib_path_rec_data path_data[0];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_conn_param {
- __u32 qp_num;
- __u32 qkey;
- __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u32 qp_num;
+  __u32 qkey;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 private_data_len;
- __u8 srq;
- __u8 responder_resources;
- __u8 initiator_depth;
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u8 private_data_len;
+  __u8 srq;
+  __u8 responder_resources;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 flow_control;
- __u8 retry_count;
- __u8 rnr_retry_count;
- __u8 valid;
+  __u8 initiator_depth;
+  __u8 flow_control;
+  __u8 retry_count;
+  __u8 rnr_retry_count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 valid;
 };
 struct rdma_ucm_ud_param {
- __u32 qp_num;
- __u32 qkey;
+  __u32 qp_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct ib_uverbs_ah_attr ah_attr;
- __u8 private_data[RDMA_MAX_PRIVATE_DATA];
- __u8 private_data_len;
- __u8 reserved[7];
+  __u32 qkey;
+  struct ib_uverbs_ah_attr ah_attr;
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u8 private_data_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 reserved[7];
 };
 struct rdma_ucm_connect {
- struct rdma_ucm_conn_param conn_param;
- __u32 id;
+  struct rdma_ucm_conn_param conn_param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved;
+  __u32 id;
+  __u32 reserved;
 };
 struct rdma_ucm_listen {
- __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 backlog;
+  __u32 id;
+  __u32 backlog;
 };
 struct rdma_ucm_accept {
- __u64 uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct rdma_ucm_conn_param conn_param;
- __u32 id;
- __u32 reserved;
+  __u64 uid;
+  struct rdma_ucm_conn_param conn_param;
+  __u32 id;
+  __u32 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_reject {
- __u32 id;
- __u8 private_data_len;
- __u8 reserved[3];
+  __u32 id;
+  __u8 private_data_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u8 reserved[3];
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
 };
 struct rdma_ucm_disconnect {
- __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 id;
 };
 struct rdma_ucm_init_qp_attr {
- __u64 response;
- __u32 id;
+  __u64 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 qp_state;
+  __u32 id;
+  __u32 qp_state;
 };
 struct rdma_ucm_notify {
- __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 event;
+  __u32 id;
+  __u32 event;
 };
 struct rdma_ucm_join_ip_mcast {
- __u64 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 uid;
- struct sockaddr_in6 addr;
- __u32 id;
+  __u64 response;
+  __u64 uid;
+  struct sockaddr_in6 addr;
+  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_join_mcast {
- __u64 response;
- __u64 uid;
- __u32 id;
+  __u64 response;
+  __u64 uid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 addr_size;
- __u16 reserved;
- struct sockaddr_storage addr;
+  __u32 id;
+  __u16 addr_size;
+  __u16 reserved;
+  struct sockaddr_storage addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_get_event {
- __u64 response;
+  __u64 response;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_event_resp {
+  __u64 uid;
+  __u32 id;
+  __u32 event;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 uid;
- __u32 id;
- __u32 event;
- __u32 status;
+  __u32 status;
+  union {
+    struct rdma_ucm_conn_param conn;
+    struct rdma_ucm_ud_param ud;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct rdma_ucm_conn_param conn;
- struct rdma_ucm_ud_param ud;
- } param;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } param;
 };
 enum {
- RDMA_OPTION_ID = 0,
- RDMA_OPTION_IB = 1
+  RDMA_OPTION_ID = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  RDMA_OPTION_IB = 1
 };
 enum {
- RDMA_OPTION_ID_TOS = 0,
- RDMA_OPTION_ID_REUSEADDR = 1,
+  RDMA_OPTION_ID_TOS = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RDMA_OPTION_ID_AFONLY = 2,
- RDMA_OPTION_IB_PATH = 1
+  RDMA_OPTION_ID_REUSEADDR = 1,
+  RDMA_OPTION_ID_AFONLY = 2,
+  RDMA_OPTION_IB_PATH = 1
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rdma_ucm_set_option {
+  __u64 optval;
+  __u32 id;
+  __u32 level;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 optval;
- __u32 id;
- __u32 level;
- __u32 optname;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 optlen;
+  __u32 optname;
+  __u32 optlen;
 };
 struct rdma_ucm_migrate_id {
- __u64 response;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 id;
- __u32 fd;
+  __u64 response;
+  __u32 id;
+  __u32 fd;
 };
-struct rdma_ucm_migrate_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 events_reported;
+struct rdma_ucm_migrate_resp {
+  __u32 events_reported;
 };
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/scsi/fc/fc_els.h b/libc/kernel/uapi/scsi/fc/fc_els.h
index 4e2a920..c1f9e94 100644
--- a/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -21,152 +21,153 @@
 #include <linux/types.h>
 enum fc_els_cmd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_LS_RJT = 0x01,
- ELS_LS_ACC = 0x02,
- ELS_PLOGI = 0x03,
- ELS_FLOGI = 0x04,
+  ELS_LS_RJT = 0x01,
+  ELS_LS_ACC = 0x02,
+  ELS_PLOGI = 0x03,
+  ELS_FLOGI = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_LOGO = 0x05,
- ELS_ABTX = 0x06,
- ELS_RCS = 0x07,
- ELS_RES = 0x08,
+  ELS_LOGO = 0x05,
+  ELS_ABTX = 0x06,
+  ELS_RCS = 0x07,
+  ELS_RES = 0x08,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RSS = 0x09,
- ELS_RSI = 0x0a,
- ELS_ESTS = 0x0b,
- ELS_ESTC = 0x0c,
+  ELS_RSS = 0x09,
+  ELS_RSI = 0x0a,
+  ELS_ESTS = 0x0b,
+  ELS_ESTC = 0x0c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_ADVC = 0x0d,
- ELS_RTV = 0x0e,
- ELS_RLS = 0x0f,
- ELS_ECHO = 0x10,
+  ELS_ADVC = 0x0d,
+  ELS_RTV = 0x0e,
+  ELS_RLS = 0x0f,
+  ELS_ECHO = 0x10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_TEST = 0x11,
- ELS_RRQ = 0x12,
- ELS_REC = 0x13,
- ELS_SRR = 0x14,
+  ELS_TEST = 0x11,
+  ELS_RRQ = 0x12,
+  ELS_REC = 0x13,
+  ELS_SRR = 0x14,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_PRLI = 0x20,
- ELS_PRLO = 0x21,
- ELS_SCN = 0x22,
- ELS_TPLS = 0x23,
+  ELS_PRLI = 0x20,
+  ELS_PRLO = 0x21,
+  ELS_SCN = 0x22,
+  ELS_TPLS = 0x23,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_TPRLO = 0x24,
- ELS_LCLM = 0x25,
- ELS_GAID = 0x30,
- ELS_FACT = 0x31,
+  ELS_TPRLO = 0x24,
+  ELS_LCLM = 0x25,
+  ELS_GAID = 0x30,
+  ELS_FACT = 0x31,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_FDACDT = 0x32,
- ELS_NACT = 0x33,
- ELS_NDACT = 0x34,
- ELS_QOSR = 0x40,
+  ELS_FDACDT = 0x32,
+  ELS_NACT = 0x33,
+  ELS_NDACT = 0x34,
+  ELS_QOSR = 0x40,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RVCS = 0x41,
- ELS_PDISC = 0x50,
- ELS_FDISC = 0x51,
- ELS_ADISC = 0x52,
+  ELS_RVCS = 0x41,
+  ELS_PDISC = 0x50,
+  ELS_FDISC = 0x51,
+  ELS_ADISC = 0x52,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNC = 0x53,
- ELS_FARP_REQ = 0x54,
- ELS_FARP_REPL = 0x55,
- ELS_RPS = 0x56,
+  ELS_RNC = 0x53,
+  ELS_FARP_REQ = 0x54,
+  ELS_FARP_REPL = 0x55,
+  ELS_RPS = 0x56,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RPL = 0x57,
- ELS_RPBC = 0x58,
- ELS_FAN = 0x60,
- ELS_RSCN = 0x61,
+  ELS_RPL = 0x57,
+  ELS_RPBC = 0x58,
+  ELS_FAN = 0x60,
+  ELS_RSCN = 0x61,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_SCR = 0x62,
- ELS_RNFT = 0x63,
- ELS_CSR = 0x68,
- ELS_CSU = 0x69,
+  ELS_SCR = 0x62,
+  ELS_RNFT = 0x63,
+  ELS_CSR = 0x68,
+  ELS_CSU = 0x69,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_LINIT = 0x70,
- ELS_LSTS = 0x72,
- ELS_RNID = 0x78,
- ELS_RLIR = 0x79,
+  ELS_LINIT = 0x70,
+  ELS_LSTS = 0x72,
+  ELS_RNID = 0x78,
+  ELS_RLIR = 0x79,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_LIRR = 0x7a,
- ELS_SRL = 0x7b,
- ELS_SBRP = 0x7c,
- ELS_RPSC = 0x7d,
+  ELS_LIRR = 0x7a,
+  ELS_SRL = 0x7b,
+  ELS_SBRP = 0x7c,
+  ELS_RPSC = 0x7d,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_QSA = 0x7e,
- ELS_EVFP = 0x7f,
- ELS_LKA = 0x80,
- ELS_AUTH_ELS = 0x90,
+  ELS_QSA = 0x7e,
+  ELS_EVFP = 0x7f,
+  ELS_LKA = 0x80,
+  ELS_AUTH_ELS = 0x90,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define FC_ELS_CMDS_INIT {   [ELS_LS_RJT] = "LS_RJT",   [ELS_LS_ACC] = "LS_ACC",   [ELS_PLOGI] = "PLOGI",   [ELS_FLOGI] = "FLOGI",   [ELS_LOGO] = "LOGO",   [ELS_ABTX] = "ABTX",   [ELS_RCS] = "RCS",   [ELS_RES] = "RES",   [ELS_RSS] = "RSS",   [ELS_RSI] = "RSI",   [ELS_ESTS] = "ESTS",   [ELS_ESTC] = "ESTC",   [ELS_ADVC] = "ADVC",   [ELS_RTV] = "RTV",   [ELS_RLS] = "RLS",   [ELS_ECHO] = "ECHO",   [ELS_TEST] = "TEST",   [ELS_RRQ] = "RRQ",   [ELS_REC] = "REC",   [ELS_SRR] = "SRR",   [ELS_PRLI] = "PRLI",   [ELS_PRLO] = "PRLO",   [ELS_SCN] = "SCN",   [ELS_TPLS] = "TPLS",   [ELS_TPRLO] = "TPRLO",   [ELS_LCLM] = "LCLM",   [ELS_GAID] = "GAID",   [ELS_FACT] = "FACT",   [ELS_FDACDT] = "FDACDT",   [ELS_NACT] = "NACT",   [ELS_NDACT] = "NDACT",   [ELS_QOSR] = "QOSR",   [ELS_RVCS] = "RVCS",   [ELS_PDISC] = "PDISC",   [ELS_FDISC] = "FDISC",   [ELS_ADISC] = "ADISC",   [ELS_RNC] = "RNC",   [ELS_FARP_REQ] = "FARP_REQ",   [ELS_FARP_REPL] = "FARP_REPL",   [ELS_RPS] = "RPS",   [ELS_RPL] = "RPL",   [ELS_RPBC] = "RPBC",   [ELS_FAN] = "FAN",   [ELS_RSCN] = "RSCN",   [ELS_SCR] = "SCR",   [ELS_RNFT] = "RNFT",   [ELS_CSR] = "CSR",   [ELS_CSU] = "CSU",   [ELS_LINIT] = "LINIT",   [ELS_LSTS] = "LSTS",   [ELS_RNID] = "RNID",   [ELS_RLIR] = "RLIR",   [ELS_LIRR] = "LIRR",   [ELS_SRL] = "SRL",   [ELS_SBRP] = "SBRP",   [ELS_RPSC] = "RPSC",   [ELS_QSA] = "QSA",   [ELS_EVFP] = "EVFP",   [ELS_LKA] = "LKA",   [ELS_AUTH_ELS] = "AUTH_ELS",  }
+#define FC_ELS_CMDS_INIT {[ELS_LS_RJT] = "LS_RJT",[ELS_LS_ACC] = "LS_ACC",[ELS_PLOGI] = "PLOGI",[ELS_FLOGI] = "FLOGI",[ELS_LOGO] = "LOGO",[ELS_ABTX] = "ABTX",[ELS_RCS] = "RCS",[ELS_RES] = "RES",[ELS_RSS] = "RSS",[ELS_RSI] = "RSI",[ELS_ESTS] = "ESTS",[ELS_ESTC] = "ESTC",[ELS_ADVC] = "ADVC",[ELS_RTV] = "RTV",[ELS_RLS] = "RLS",[ELS_ECHO] = "ECHO",[ELS_TEST] = "TEST",[ELS_RRQ] = "RRQ",[ELS_REC] = "REC",[ELS_SRR] = "SRR",[ELS_PRLI] = "PRLI",[ELS_PRLO] = "PRLO",[ELS_SCN] = "SCN",[ELS_TPLS] = "TPLS",[ELS_TPRLO] = "TPRLO",[ELS_LCLM] = "LCLM",[ELS_GAID] = "GAID",[ELS_FACT] = "FACT",[ELS_FDACDT] = "FDACDT",[ELS_NACT] = "NACT",[ELS_NDACT] = "NDACT",[ELS_QOSR] = "QOSR",[ELS_RVCS] = "RVCS",[ELS_PDISC] = "PDISC",[ELS_FDISC] = "FDISC",[ELS_ADISC] = "ADISC",[ELS_RNC] = "RNC",[ELS_FARP_REQ] = "FARP_REQ",[ELS_FARP_REPL] = "FARP_REPL",[ELS_RPS] = "RPS",[ELS_RPL] = "RPL",[ELS_RPBC] = "RPBC",[ELS_FAN] = "FAN",[ELS_RSCN] = "RSCN",[ELS_SCR] = "SCR",[ELS_RNFT] = "RNFT",[ELS_CSR] = "CSR",[ELS_CSU] = "CSU",[ELS_LINIT] = "LINIT",[ELS_LSTS] = "LSTS",[ELS_RNID] = "RNID",[ELS_RLIR] = "RLIR",[ELS_LIRR] = "LIRR",[ELS_SRL] = "SRL",[ELS_SBRP] = "SBRP",[ELS_RPSC] = "RPSC",[ELS_QSA] = "QSA",[ELS_EVFP] = "EVFP",[ELS_LKA] = "LKA",[ELS_AUTH_ELS] = "AUTH_ELS", \
+}
 struct fc_els_ls_acc {
- __u8 la_cmd;
+  __u8 la_cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 la_resv[3];
+  __u8 la_resv[3];
 };
 struct fc_els_ls_rjt {
- __u8 er_cmd;
+  __u8 er_cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 er_resv[4];
- __u8 er_reason;
- __u8 er_explan;
- __u8 er_vendor;
+  __u8 er_resv[4];
+  __u8 er_reason;
+  __u8 er_explan;
+  __u8 er_vendor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_rjt_reason {
- ELS_RJT_NONE = 0,
- ELS_RJT_INVAL = 0x01,
+  ELS_RJT_NONE = 0,
+  ELS_RJT_INVAL = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RJT_LOGIC = 0x03,
- ELS_RJT_BUSY = 0x05,
- ELS_RJT_PROT = 0x07,
- ELS_RJT_UNAB = 0x09,
+  ELS_RJT_LOGIC = 0x03,
+  ELS_RJT_BUSY = 0x05,
+  ELS_RJT_PROT = 0x07,
+  ELS_RJT_UNAB = 0x09,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RJT_UNSUP = 0x0b,
- ELS_RJT_INPROG = 0x0e,
- ELS_RJT_FIP = 0x20,
- ELS_RJT_VENDOR = 0xff,
+  ELS_RJT_UNSUP = 0x0b,
+  ELS_RJT_INPROG = 0x0e,
+  ELS_RJT_FIP = 0x20,
+  ELS_RJT_VENDOR = 0xff,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_rjt_explan {
- ELS_EXPL_NONE = 0x00,
- ELS_EXPL_SPP_OPT_ERR = 0x01,
+  ELS_EXPL_NONE = 0x00,
+  ELS_EXPL_SPP_OPT_ERR = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_EXPL_SPP_ICTL_ERR = 0x03,
- ELS_EXPL_AH = 0x11,
- ELS_EXPL_AH_REQ = 0x13,
- ELS_EXPL_SID = 0x15,
+  ELS_EXPL_SPP_ICTL_ERR = 0x03,
+  ELS_EXPL_AH = 0x11,
+  ELS_EXPL_AH_REQ = 0x13,
+  ELS_EXPL_SID = 0x15,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_EXPL_OXID_RXID = 0x17,
- ELS_EXPL_INPROG = 0x19,
- ELS_EXPL_PLOGI_REQD = 0x1e,
- ELS_EXPL_INSUF_RES = 0x29,
+  ELS_EXPL_OXID_RXID = 0x17,
+  ELS_EXPL_INPROG = 0x19,
+  ELS_EXPL_PLOGI_REQD = 0x1e,
+  ELS_EXPL_INSUF_RES = 0x29,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_EXPL_UNAB_DATA = 0x2a,
- ELS_EXPL_UNSUPR = 0x2c,
- ELS_EXPL_INV_LEN = 0x2d,
- ELS_EXPL_NOT_NEIGHBOR = 0x62,
+  ELS_EXPL_UNAB_DATA = 0x2a,
+  ELS_EXPL_UNSUPR = 0x2c,
+  ELS_EXPL_INV_LEN = 0x2d,
+  ELS_EXPL_NOT_NEIGHBOR = 0x62,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_csp {
- __u8 sp_hi_ver;
- __u8 sp_lo_ver;
+  __u8 sp_hi_ver;
+  __u8 sp_lo_ver;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 sp_bb_cred;
- __be16 sp_features;
- __be16 sp_bb_data;
- union {
+  __be16 sp_bb_cred;
+  __be16 sp_features;
+  __be16 sp_bb_data;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __be16 _sp_tot_seq;
- __be16 _sp_rel_off;
- } sp_plogi;
+    struct {
+      __be16 _sp_tot_seq;
+      __be16 _sp_rel_off;
+    } sp_plogi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- __be32 _sp_r_a_tov;
- } sp_flogi_acc;
- } sp_u;
+    struct {
+      __be32 _sp_r_a_tov;
+    } sp_flogi_acc;
+  } sp_u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 sp_e_d_tov;
+  __be32 sp_e_d_tov;
 };
 #define sp_tot_seq sp_u.sp_plogi._sp_tot_seq
 #define sp_rel_off sp_u.sp_plogi._sp_rel_off
@@ -201,17 +202,17 @@
 #define FC_SP_FT_PAYL 0x0001
 struct fc_els_cssp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 cp_class;
- __be16 cp_init;
- __be16 cp_recip;
- __be16 cp_rdfs;
+  __be16 cp_class;
+  __be16 cp_init;
+  __be16 cp_recip;
+  __be16 cp_rdfs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 cp_con_seq;
- __be16 cp_ee_cred;
- __u8 cp_resv1;
- __u8 cp_open_seq;
+  __be16 cp_con_seq;
+  __be16 cp_ee_cred;
+  __u8 cp_resv1;
+  __u8 cp_open_seq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 _cp_resv2[2];
+  __u8 _cp_resv2[2];
 };
 #define FC_CPC_VALID 0x8000
 #define FC_CPC_IMIX 0x4000
@@ -223,26 +224,26 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_CPR_CSYN 0x0008
 struct fc_els_flogi {
- __u8 fl_cmd;
- __u8 _fl_resvd[3];
+  __u8 fl_cmd;
+  __u8 _fl_resvd[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fc_els_csp fl_csp;
- __be64 fl_wwpn;
- __be64 fl_wwnn;
- struct fc_els_cssp fl_cssp[4];
+  struct fc_els_csp fl_csp;
+  __be64 fl_wwpn;
+  __be64 fl_wwnn;
+  struct fc_els_cssp fl_cssp[4];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fl_vend[16];
+  __u8 fl_vend[16];
 } __attribute__((__packed__));
 struct fc_els_spp {
- __u8 spp_type;
+  __u8 spp_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 spp_type_ext;
- __u8 spp_flags;
- __u8 _spp_resvd;
- __be32 spp_orig_pa;
+  __u8 spp_type_ext;
+  __u8 spp_flags;
+  __u8 _spp_resvd;
+  __be32 spp_orig_pa;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 spp_resp_pa;
- __be32 spp_params;
+  __be32 spp_resp_pa;
+  __be32 spp_params;
 };
 #define FC_SPP_OPA_VAL 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -251,125 +252,125 @@
 #define FC_SPP_RESP_MASK 0x0f
 enum fc_els_spp_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_SPP_RESP_ACK = 1,
- FC_SPP_RESP_RES = 2,
- FC_SPP_RESP_INIT = 3,
- FC_SPP_RESP_NO_PA = 4,
+  FC_SPP_RESP_ACK = 1,
+  FC_SPP_RESP_RES = 2,
+  FC_SPP_RESP_INIT = 3,
+  FC_SPP_RESP_NO_PA = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_SPP_RESP_CONF = 5,
- FC_SPP_RESP_COND = 6,
- FC_SPP_RESP_MULT = 7,
- FC_SPP_RESP_INVL = 8,
+  FC_SPP_RESP_CONF = 5,
+  FC_SPP_RESP_COND = 6,
+  FC_SPP_RESP_MULT = 7,
+  FC_SPP_RESP_INVL = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rrq {
- __u8 rrq_cmd;
- __u8 rrq_zero[3];
+  __u8 rrq_cmd;
+  __u8 rrq_zero[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rrq_resvd;
- __u8 rrq_s_id[3];
- __be16 rrq_ox_id;
- __be16 rrq_rx_id;
+  __u8 rrq_resvd;
+  __u8 rrq_s_id[3];
+  __be16 rrq_ox_id;
+  __be16 rrq_rx_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rec {
- __u8 rec_cmd;
- __u8 rec_zero[3];
+  __u8 rec_cmd;
+  __u8 rec_zero[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rec_resvd;
- __u8 rec_s_id[3];
- __be16 rec_ox_id;
- __be16 rec_rx_id;
+  __u8 rec_resvd;
+  __u8 rec_s_id[3];
+  __be16 rec_ox_id;
+  __be16 rec_rx_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rec_acc {
- __u8 reca_cmd;
- __u8 reca_zero[3];
+  __u8 reca_cmd;
+  __u8 reca_zero[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 reca_ox_id;
- __be16 reca_rx_id;
- __u8 reca_resvd1;
- __u8 reca_ofid[3];
+  __be16 reca_ox_id;
+  __be16 reca_rx_id;
+  __u8 reca_resvd1;
+  __u8 reca_ofid[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reca_resvd2;
- __u8 reca_rfid[3];
- __be32 reca_fc4value;
- __be32 reca_e_stat;
+  __u8 reca_resvd2;
+  __u8 reca_rfid[3];
+  __be32 reca_fc4value;
+  __be32 reca_e_stat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_prli {
- __u8 prli_cmd;
- __u8 prli_spp_len;
+  __u8 prli_cmd;
+  __u8 prli_spp_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 prli_len;
+  __be16 prli_len;
 };
 struct fc_els_prlo {
- __u8 prlo_cmd;
+  __u8 prlo_cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 prlo_obs;
- __be16 prlo_len;
+  __u8 prlo_obs;
+  __be16 prlo_len;
 };
 struct fc_els_adisc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 adisc_cmd;
- __u8 adisc_resv[3];
- __u8 adisc_resv1;
- __u8 adisc_hard_addr[3];
+  __u8 adisc_cmd;
+  __u8 adisc_resv[3];
+  __u8 adisc_resv1;
+  __u8 adisc_hard_addr[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 adisc_wwpn;
- __be64 adisc_wwnn;
- __u8 adisc_resv2;
- __u8 adisc_port_id[3];
+  __be64 adisc_wwpn;
+  __be64 adisc_wwnn;
+  __u8 adisc_resv2;
+  __u8 adisc_port_id[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((__packed__));
 struct fc_els_logo {
- __u8 fl_cmd;
- __u8 fl_zero[3];
+  __u8 fl_cmd;
+  __u8 fl_zero[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fl_resvd;
- __u8 fl_n_port_id[3];
- __be64 fl_n_port_wwn;
+  __u8 fl_resvd;
+  __u8 fl_n_port_id[3];
+  __be64 fl_n_port_wwn;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_els_rtv {
- __u8 rtv_cmd;
- __u8 rtv_zero[3];
+  __u8 rtv_cmd;
+  __u8 rtv_zero[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_els_rtv_acc {
- __u8 rtv_cmd;
- __u8 rtv_zero[3];
- __be32 rtv_r_a_tov;
+  __u8 rtv_cmd;
+  __u8 rtv_zero[3];
+  __be32 rtv_r_a_tov;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 rtv_e_d_tov;
- __be32 rtv_toq;
+  __be32 rtv_e_d_tov;
+  __be32 rtv_toq;
 };
 #define FC_ELS_RTV_EDRES (1 << 26)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_ELS_RTV_RTTOV (1 << 19)
 struct fc_els_scr {
- __u8 scr_cmd;
- __u8 scr_resv[6];
+  __u8 scr_cmd;
+  __u8 scr_resv[6];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 scr_reg_func;
+  __u8 scr_reg_func;
 };
 enum fc_els_scr_func {
- ELS_SCRF_FAB = 1,
+  ELS_SCRF_FAB = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_SCRF_NPORT = 2,
- ELS_SCRF_FULL = 3,
- ELS_SCRF_CLEAR = 255,
+  ELS_SCRF_NPORT = 2,
+  ELS_SCRF_FULL = 3,
+  ELS_SCRF_CLEAR = 255,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_els_rscn {
- __u8 rscn_cmd;
- __u8 rscn_page_len;
- __be16 rscn_plen;
+  __u8 rscn_cmd;
+  __u8 rscn_page_len;
+  __be16 rscn_plen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rscn_page {
- __u8 rscn_page_flags;
- __u8 rscn_fid[3];
+  __u8 rscn_page_flags;
+  __u8 rscn_fid[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ELS_RSCN_EV_QUAL_BIT 2
@@ -378,298 +379,298 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELS_RSCN_ADDR_FMT_MASK 0x3
 enum fc_els_rscn_ev_qual {
- ELS_EV_QUAL_NONE = 0,
- ELS_EV_QUAL_NS_OBJ = 1,
+  ELS_EV_QUAL_NONE = 0,
+  ELS_EV_QUAL_NS_OBJ = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_EV_QUAL_PORT_ATTR = 2,
- ELS_EV_QUAL_SERV_OBJ = 3,
- ELS_EV_QUAL_SW_CONFIG = 4,
- ELS_EV_QUAL_REM_OBJ = 5,
+  ELS_EV_QUAL_PORT_ATTR = 2,
+  ELS_EV_QUAL_SERV_OBJ = 3,
+  ELS_EV_QUAL_SW_CONFIG = 4,
+  ELS_EV_QUAL_REM_OBJ = 5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_rscn_addr_fmt {
- ELS_ADDR_FMT_PORT = 0,
- ELS_ADDR_FMT_AREA = 1,
+  ELS_ADDR_FMT_PORT = 0,
+  ELS_ADDR_FMT_AREA = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_ADDR_FMT_DOM = 2,
- ELS_ADDR_FMT_FAB = 3,
+  ELS_ADDR_FMT_DOM = 2,
+  ELS_ADDR_FMT_FAB = 3,
 };
 struct fc_els_rnid {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rnid_cmd;
- __u8 rnid_resv[3];
- __u8 rnid_fmt;
- __u8 rnid_resv2[3];
+  __u8 rnid_cmd;
+  __u8 rnid_resv[3];
+  __u8 rnid_fmt;
+  __u8 rnid_resv2[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_rnid_fmt {
- ELS_RNIDF_NONE = 0,
- ELS_RNIDF_GEN = 0xdf,
+  ELS_RNIDF_NONE = 0,
+  ELS_RNIDF_GEN = 0xdf,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rnid_resp {
- __u8 rnid_cmd;
- __u8 rnid_resv[3];
+  __u8 rnid_cmd;
+  __u8 rnid_resv[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rnid_fmt;
- __u8 rnid_cid_len;
- __u8 rnid_resv2;
- __u8 rnid_sid_len;
+  __u8 rnid_fmt;
+  __u8 rnid_cid_len;
+  __u8 rnid_resv2;
+  __u8 rnid_sid_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rnid_cid {
- __be64 rnid_wwpn;
- __be64 rnid_wwnn;
+  __be64 rnid_wwpn;
+  __be64 rnid_wwnn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rnid_gen {
- __u8 rnid_vend_id[16];
- __be32 rnid_atype;
+  __u8 rnid_vend_id[16];
+  __be32 rnid_atype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 rnid_phys_port;
- __be32 rnid_att_nodes;
- __u8 rnid_node_mgmt;
- __u8 rnid_ip_ver;
+  __be32 rnid_phys_port;
+  __be32 rnid_att_nodes;
+  __u8 rnid_node_mgmt;
+  __u8 rnid_ip_ver;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 rnid_prot_port;
- __be32 rnid_ip_addr[4];
- __u8 rnid_resvd[2];
- __be16 rnid_vend_spec;
+  __be16 rnid_prot_port;
+  __be32 rnid_ip_addr[4];
+  __u8 rnid_resvd[2];
+  __be16 rnid_vend_spec;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_rnid_atype {
- ELS_RNIDA_UNK = 0x01,
- ELS_RNIDA_OTHER = 0x02,
+  ELS_RNIDA_UNK = 0x01,
+  ELS_RNIDA_OTHER = 0x02,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDA_HUB = 0x03,
- ELS_RNIDA_SWITCH = 0x04,
- ELS_RNIDA_GATEWAY = 0x05,
- ELS_RNIDA_CONV = 0x06,
+  ELS_RNIDA_HUB = 0x03,
+  ELS_RNIDA_SWITCH = 0x04,
+  ELS_RNIDA_GATEWAY = 0x05,
+  ELS_RNIDA_CONV = 0x06,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDA_HBA = 0x07,
- ELS_RNIDA_PROXY = 0x08,
- ELS_RNIDA_STORAGE = 0x09,
- ELS_RNIDA_HOST = 0x0a,
+  ELS_RNIDA_HBA = 0x07,
+  ELS_RNIDA_PROXY = 0x08,
+  ELS_RNIDA_STORAGE = 0x09,
+  ELS_RNIDA_HOST = 0x0a,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDA_SUBSYS = 0x0b,
- ELS_RNIDA_ACCESS = 0x0e,
- ELS_RNIDA_NAS = 0x11,
- ELS_RNIDA_BRIDGE = 0x12,
+  ELS_RNIDA_SUBSYS = 0x0b,
+  ELS_RNIDA_ACCESS = 0x0e,
+  ELS_RNIDA_NAS = 0x11,
+  ELS_RNIDA_BRIDGE = 0x12,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDA_VIRT = 0x13,
- ELS_RNIDA_MF = 0xff,
- ELS_RNIDA_MF_HUB = 1UL << 31,
- ELS_RNIDA_MF_SW = 1UL << 30,
+  ELS_RNIDA_VIRT = 0x13,
+  ELS_RNIDA_MF = 0xff,
+  ELS_RNIDA_MF_HUB = 1UL << 31,
+  ELS_RNIDA_MF_SW = 1UL << 30,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDA_MF_GW = 1UL << 29,
- ELS_RNIDA_MF_ST = 1UL << 28,
- ELS_RNIDA_MF_HOST = 1UL << 27,
- ELS_RNIDA_MF_SUB = 1UL << 26,
+  ELS_RNIDA_MF_GW = 1UL << 29,
+  ELS_RNIDA_MF_ST = 1UL << 28,
+  ELS_RNIDA_MF_HOST = 1UL << 27,
+  ELS_RNIDA_MF_SUB = 1UL << 26,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDA_MF_ACC = 1UL << 25,
- ELS_RNIDA_MF_WDM = 1UL << 24,
- ELS_RNIDA_MF_NAS = 1UL << 23,
- ELS_RNIDA_MF_BR = 1UL << 22,
+  ELS_RNIDA_MF_ACC = 1UL << 25,
+  ELS_RNIDA_MF_WDM = 1UL << 24,
+  ELS_RNIDA_MF_NAS = 1UL << 23,
+  ELS_RNIDA_MF_BR = 1UL << 22,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDA_MF_VIRT = 1UL << 21,
+  ELS_RNIDA_MF_VIRT = 1UL << 21,
 };
 enum fc_els_rnid_mgmt {
- ELS_RNIDM_SNMP = 0,
+  ELS_RNIDM_SNMP = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDM_TELNET = 1,
- ELS_RNIDM_HTTP = 2,
- ELS_RNIDM_HTTPS = 3,
- ELS_RNIDM_XML = 4,
+  ELS_RNIDM_TELNET = 1,
+  ELS_RNIDM_HTTP = 2,
+  ELS_RNIDM_HTTPS = 3,
+  ELS_RNIDM_XML = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_rnid_ipver {
- ELS_RNIDIP_NONE = 0,
- ELS_RNIDIP_V4 = 1,
+  ELS_RNIDIP_NONE = 0,
+  ELS_RNIDIP_V4 = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_RNIDIP_V6 = 2,
+  ELS_RNIDIP_V6 = 2,
 };
 struct fc_els_rpl {
- __u8 rpl_cmd;
+  __u8 rpl_cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rpl_resv[5];
- __be16 rpl_max_size;
- __u8 rpl_resv1;
- __u8 rpl_index[3];
+  __u8 rpl_resv[5];
+  __be16 rpl_max_size;
+  __u8 rpl_resv1;
+  __u8 rpl_index[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_pnb {
- __be32 pnb_phys_pn;
- __u8 pnb_resv;
+  __be32 pnb_phys_pn;
+  __u8 pnb_resv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 pnb_port_id[3];
- __be64 pnb_wwpn;
+  __u8 pnb_port_id[3];
+  __be64 pnb_wwpn;
 };
 struct fc_els_rpl_resp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rpl_cmd;
- __u8 rpl_resv1;
- __be16 rpl_plen;
- __u8 rpl_resv2;
+  __u8 rpl_cmd;
+  __u8 rpl_resv1;
+  __be16 rpl_plen;
+  __u8 rpl_resv2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rpl_llen[3];
- __u8 rpl_resv3;
- __u8 rpl_index[3];
- struct fc_els_pnb rpl_pnb[1];
+  __u8 rpl_llen[3];
+  __u8 rpl_resv3;
+  __u8 rpl_index[3];
+  struct fc_els_pnb rpl_pnb[1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_lesb {
- __be32 lesb_link_fail;
- __be32 lesb_sync_loss;
+  __be32 lesb_link_fail;
+  __be32 lesb_sync_loss;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 lesb_sig_loss;
- __be32 lesb_prim_err;
- __be32 lesb_inv_word;
- __be32 lesb_inv_crc;
+  __be32 lesb_sig_loss;
+  __be32 lesb_prim_err;
+  __be32 lesb_inv_word;
+  __be32 lesb_inv_crc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rps {
- __u8 rps_cmd;
- __u8 rps_resv[2];
+  __u8 rps_cmd;
+  __u8 rps_resv[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rps_flag;
- __be64 rps_port_spec;
+  __u8 rps_flag;
+  __be64 rps_port_spec;
 };
 enum fc_els_rps_flag {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_ELS_RPS_DID = 0x00,
- FC_ELS_RPS_PPN = 0x01,
- FC_ELS_RPS_WWPN = 0x02,
+  FC_ELS_RPS_DID = 0x00,
+  FC_ELS_RPS_PPN = 0x01,
+  FC_ELS_RPS_WWPN = 0x02,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_els_rps_resp {
- __u8 rps_cmd;
- __u8 rps_resv[2];
- __u8 rps_flag;
+  __u8 rps_cmd;
+  __u8 rps_resv[2];
+  __u8 rps_flag;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rps_resv2[2];
- __be16 rps_status;
- struct fc_els_lesb rps_lesb;
+  __u8 rps_resv2[2];
+  __be16 rps_status;
+  struct fc_els_lesb rps_lesb;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum fc_els_rps_resp_flag {
- FC_ELS_RPS_LPEV = 0x01,
+  FC_ELS_RPS_LPEV = 0x01,
 };
 enum fc_els_rps_resp_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_ELS_RPS_PTP = 1 << 5,
- FC_ELS_RPS_LOOP = 1 << 4,
- FC_ELS_RPS_FAB = 1 << 3,
- FC_ELS_RPS_NO_SIG = 1 << 2,
+  FC_ELS_RPS_PTP = 1 << 5,
+  FC_ELS_RPS_LOOP = 1 << 4,
+  FC_ELS_RPS_FAB = 1 << 3,
+  FC_ELS_RPS_NO_SIG = 1 << 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_ELS_RPS_NO_SYNC = 1 << 1,
- FC_ELS_RPS_RESET = 1 << 0,
+  FC_ELS_RPS_NO_SYNC = 1 << 1,
+  FC_ELS_RPS_RESET = 1 << 0,
 };
 struct fc_els_lirr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 lirr_cmd;
- __u8 lirr_resv[3];
- __u8 lirr_func;
- __u8 lirr_fmt;
+  __u8 lirr_cmd;
+  __u8 lirr_resv[3];
+  __u8 lirr_func;
+  __u8 lirr_fmt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 lirr_resv2[2];
+  __u8 lirr_resv2[2];
 };
 enum fc_els_lirr_func {
- ELS_LIRR_SET_COND = 0x01,
+  ELS_LIRR_SET_COND = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_LIRR_SET_UNCOND = 0x02,
- ELS_LIRR_CLEAR = 0xff
+  ELS_LIRR_SET_UNCOND = 0x02,
+  ELS_LIRR_CLEAR = 0xff
 };
 struct fc_els_srl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 srl_cmd;
- __u8 srl_resv[3];
- __u8 srl_flag;
- __u8 srl_flag_param[3];
+  __u8 srl_cmd;
+  __u8 srl_resv[3];
+  __u8 srl_flag;
+  __u8 srl_flag_param[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_srl_flag {
- FC_ELS_SRL_ALL = 0x00,
- FC_ELS_SRL_ONE = 0x01,
+  FC_ELS_SRL_ALL = 0x00,
+  FC_ELS_SRL_ONE = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_ELS_SRL_EN_PER = 0x02,
- FC_ELS_SRL_DIS_PER = 0x03,
+  FC_ELS_SRL_EN_PER = 0x02,
+  FC_ELS_SRL_DIS_PER = 0x03,
 };
 struct fc_els_rls {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rls_cmd;
- __u8 rls_resv[4];
- __u8 rls_port_id[3];
+  __u8 rls_cmd;
+  __u8 rls_resv[4];
+  __u8 rls_port_id[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_els_rls_resp {
- __u8 rls_cmd;
- __u8 rls_resv[3];
- struct fc_els_lesb rls_lesb;
+  __u8 rls_cmd;
+  __u8 rls_resv[3];
+  struct fc_els_lesb rls_lesb;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_rlir {
- __u8 rlir_cmd;
- __u8 rlir_resv[3];
+  __u8 rlir_cmd;
+  __u8 rlir_resv[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rlir_fmt;
- __u8 rlir_clr_len;
- __u8 rlir_cld_len;
- __u8 rlir_slr_len;
+  __u8 rlir_fmt;
+  __u8 rlir_clr_len;
+  __u8 rlir_cld_len;
+  __u8 rlir_slr_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_els_clir {
- __be64 clir_wwpn;
- __be64 clir_wwnn;
+  __be64 clir_wwpn;
+  __be64 clir_wwnn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 clir_port_type;
- __u8 clir_port_id[3];
- __be64 clir_conn_wwpn;
- __be64 clir_conn_wwnn;
+  __u8 clir_port_type;
+  __u8 clir_port_id[3];
+  __be64 clir_conn_wwpn;
+  __be64 clir_conn_wwnn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 clir_fab_name;
- __be32 clir_phys_port;
- __be32 clir_trans_id;
- __u8 clir_resv[3];
+  __be64 clir_fab_name;
+  __be32 clir_phys_port;
+  __be32 clir_trans_id;
+  __u8 clir_resv[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 clir_ts_fmt;
- __be64 clir_timestamp;
+  __u8 clir_ts_fmt;
+  __be64 clir_timestamp;
 };
 enum fc_els_clir_ts_fmt {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_CLIR_TS_UNKNOWN = 0,
- ELS_CLIR_TS_SEC_FRAC = 1,
- ELS_CLIR_TS_CSU = 2,
+  ELS_CLIR_TS_UNKNOWN = 0,
+  ELS_CLIR_TS_SEC_FRAC = 1,
+  ELS_CLIR_TS_CSU = 2,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_els_clid {
- __u8 clid_iq;
- __u8 clid_ic;
- __be16 clid_epai;
+  __u8 clid_iq;
+  __u8 clid_ic;
+  __be16 clid_epai;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_els_clid_iq {
- ELS_CLID_SWITCH = 0x20,
- ELS_CLID_E_PORT = 0x10,
+  ELS_CLID_SWITCH = 0x20,
+  ELS_CLID_E_PORT = 0x10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_CLID_SEV_MASK = 0x0c,
- ELS_CLID_SEV_INFO = 0x00,
- ELS_CLID_SEV_INOP = 0x08,
- ELS_CLID_SEV_DEG = 0x04,
+  ELS_CLID_SEV_MASK = 0x0c,
+  ELS_CLID_SEV_INFO = 0x00,
+  ELS_CLID_SEV_INOP = 0x08,
+  ELS_CLID_SEV_DEG = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_CLID_LASER = 0x02,
- ELS_CLID_FRU = 0x01,
+  ELS_CLID_LASER = 0x02,
+  ELS_CLID_FRU = 0x01,
 };
 enum fc_els_clid_ic {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_CLID_IC_IMPL = 1,
- ELS_CLID_IC_BER = 2,
- ELS_CLID_IC_LOS = 3,
- ELS_CLID_IC_NOS = 4,
+  ELS_CLID_IC_IMPL = 1,
+  ELS_CLID_IC_BER = 2,
+  ELS_CLID_IC_LOS = 3,
+  ELS_CLID_IC_NOS = 4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ELS_CLID_IC_PST = 5,
- ELS_CLID_IC_INVAL = 6,
- ELS_CLID_IC_LOOP_TO = 7,
- ELS_CLID_IC_LIP = 8,
+  ELS_CLID_IC_PST = 5,
+  ELS_CLID_IC_INVAL = 6,
+  ELS_CLID_IC_LOOP_TO = 7,
+  ELS_CLID_IC_LIP = 8,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/scsi/fc/fc_fs.h b/libc/kernel/uapi/scsi/fc/fc_fs.h
index 62b7f4a..bdc617e 100644
--- a/libc/kernel/uapi/scsi/fc/fc_fs.h
+++ b/libc/kernel/uapi/scsi/fc/fc_fs.h
@@ -21,20 +21,20 @@
 #include <linux/types.h>
 struct fc_frame_header {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fh_r_ctl;
- __u8 fh_d_id[3];
- __u8 fh_cs_ctl;
- __u8 fh_s_id[3];
+  __u8 fh_r_ctl;
+  __u8 fh_d_id[3];
+  __u8 fh_cs_ctl;
+  __u8 fh_s_id[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fh_type;
- __u8 fh_f_ctl[3];
- __u8 fh_seq_id;
- __u8 fh_df_ctl;
+  __u8 fh_type;
+  __u8 fh_f_ctl[3];
+  __u8 fh_seq_id;
+  __u8 fh_df_ctl;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 fh_seq_cnt;
- __be16 fh_ox_id;
- __be16 fh_rx_id;
- __be32 fh_parm_offset;
+  __be16 fh_seq_cnt;
+  __be16 fh_ox_id;
+  __be16 fh_rx_id;
+  __be32 fh_parm_offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FC_FRAME_HEADER_LEN 24
@@ -44,65 +44,66 @@
 #define FC_MAX_FRAME (FC_MAX_PAYLOAD + FC_FRAME_HEADER_LEN)
 #define FC_MIN_MAX_FRAME (FC_MIN_MAX_PAYLOAD + FC_FRAME_HEADER_LEN)
 enum fc_rctl {
- FC_RCTL_DD_UNCAT = 0x00,
+  FC_RCTL_DD_UNCAT = 0x00,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RCTL_DD_SOL_DATA = 0x01,
- FC_RCTL_DD_UNSOL_CTL = 0x02,
- FC_RCTL_DD_SOL_CTL = 0x03,
- FC_RCTL_DD_UNSOL_DATA = 0x04,
+  FC_RCTL_DD_SOL_DATA = 0x01,
+  FC_RCTL_DD_UNSOL_CTL = 0x02,
+  FC_RCTL_DD_SOL_CTL = 0x03,
+  FC_RCTL_DD_UNSOL_DATA = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RCTL_DD_DATA_DESC = 0x05,
- FC_RCTL_DD_UNSOL_CMD = 0x06,
- FC_RCTL_DD_CMD_STATUS = 0x07,
+  FC_RCTL_DD_DATA_DESC = 0x05,
+  FC_RCTL_DD_UNSOL_CMD = 0x06,
+  FC_RCTL_DD_CMD_STATUS = 0x07,
 #define FC_RCTL_ILS_REQ FC_RCTL_DD_UNSOL_CTL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_RCTL_ILS_REP FC_RCTL_DD_SOL_CTL
- FC_RCTL_ELS_REQ = 0x22,
- FC_RCTL_ELS_REP = 0x23,
- FC_RCTL_ELS4_REQ = 0x32,
+  FC_RCTL_ELS_REQ = 0x22,
+  FC_RCTL_ELS_REP = 0x23,
+  FC_RCTL_ELS4_REQ = 0x32,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RCTL_ELS4_REP = 0x33,
- FC_RCTL_VFTH = 0x50,
- FC_RCTL_IFRH = 0x51,
- FC_RCTL_ENCH = 0x52,
+  FC_RCTL_ELS4_REP = 0x33,
+  FC_RCTL_VFTH = 0x50,
+  FC_RCTL_IFRH = 0x51,
+  FC_RCTL_ENCH = 0x52,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RCTL_BA_NOP = 0x80,
- FC_RCTL_BA_ABTS = 0x81,
- FC_RCTL_BA_RMC = 0x82,
- FC_RCTL_BA_ACC = 0x84,
+  FC_RCTL_BA_NOP = 0x80,
+  FC_RCTL_BA_ABTS = 0x81,
+  FC_RCTL_BA_RMC = 0x82,
+  FC_RCTL_BA_ACC = 0x84,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RCTL_BA_RJT = 0x85,
- FC_RCTL_BA_PRMT = 0x86,
- FC_RCTL_ACK_1 = 0xc0,
- FC_RCTL_ACK_0 = 0xc1,
+  FC_RCTL_BA_RJT = 0x85,
+  FC_RCTL_BA_PRMT = 0x86,
+  FC_RCTL_ACK_1 = 0xc0,
+  FC_RCTL_ACK_0 = 0xc1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RCTL_P_RJT = 0xc2,
- FC_RCTL_F_RJT = 0xc3,
- FC_RCTL_P_BSY = 0xc4,
- FC_RCTL_F_BSY = 0xc5,
+  FC_RCTL_P_RJT = 0xc2,
+  FC_RCTL_F_RJT = 0xc3,
+  FC_RCTL_P_BSY = 0xc4,
+  FC_RCTL_F_BSY = 0xc5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RCTL_F_BSYL = 0xc6,
- FC_RCTL_LCR = 0xc7,
- FC_RCTL_END = 0xc9,
+  FC_RCTL_F_BSYL = 0xc6,
+  FC_RCTL_LCR = 0xc7,
+  FC_RCTL_END = 0xc9,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define FC_RCTL_NAMES_INIT {   [FC_RCTL_DD_UNCAT] = "uncat",   [FC_RCTL_DD_SOL_DATA] = "sol data",   [FC_RCTL_DD_UNSOL_CTL] = "unsol ctl",   [FC_RCTL_DD_SOL_CTL] = "sol ctl/reply",   [FC_RCTL_DD_UNSOL_DATA] = "unsol data",   [FC_RCTL_DD_DATA_DESC] = "data desc",   [FC_RCTL_DD_UNSOL_CMD] = "unsol cmd",   [FC_RCTL_DD_CMD_STATUS] = "cmd status",   [FC_RCTL_ELS_REQ] = "ELS req",   [FC_RCTL_ELS_REP] = "ELS rep",   [FC_RCTL_ELS4_REQ] = "FC-4 ELS req",   [FC_RCTL_ELS4_REP] = "FC-4 ELS rep",   [FC_RCTL_BA_NOP] = "BLS NOP",   [FC_RCTL_BA_ABTS] = "BLS abort",   [FC_RCTL_BA_RMC] = "BLS remove connection",   [FC_RCTL_BA_ACC] = "BLS accept",   [FC_RCTL_BA_RJT] = "BLS reject",   [FC_RCTL_BA_PRMT] = "BLS dedicated connection preempted",   [FC_RCTL_ACK_1] = "LC ACK_1",   [FC_RCTL_ACK_0] = "LC ACK_0",   [FC_RCTL_P_RJT] = "LC port reject",   [FC_RCTL_F_RJT] = "LC fabric reject",   [FC_RCTL_P_BSY] = "LC port busy",   [FC_RCTL_F_BSY] = "LC fabric busy to data frame",   [FC_RCTL_F_BSYL] = "LC fabric busy to link control frame",  [FC_RCTL_LCR] = "LC link credit reset",   [FC_RCTL_END] = "LC end",  }
+#define FC_RCTL_NAMES_INIT {[FC_RCTL_DD_UNCAT] = "uncat",[FC_RCTL_DD_SOL_DATA] = "sol data",[FC_RCTL_DD_UNSOL_CTL] = "unsol ctl",[FC_RCTL_DD_SOL_CTL] = "sol ctl/reply",[FC_RCTL_DD_UNSOL_DATA] = "unsol data",[FC_RCTL_DD_DATA_DESC] = "data desc",[FC_RCTL_DD_UNSOL_CMD] = "unsol cmd",[FC_RCTL_DD_CMD_STATUS] = "cmd status",[FC_RCTL_ELS_REQ] = "ELS req",[FC_RCTL_ELS_REP] = "ELS rep",[FC_RCTL_ELS4_REQ] = "FC-4 ELS req",[FC_RCTL_ELS4_REP] = "FC-4 ELS rep",[FC_RCTL_BA_NOP] = "BLS NOP",[FC_RCTL_BA_ABTS] = "BLS abort",[FC_RCTL_BA_RMC] = "BLS remove connection",[FC_RCTL_BA_ACC] = "BLS accept",[FC_RCTL_BA_RJT] = "BLS reject",[FC_RCTL_BA_PRMT] = "BLS dedicated connection preempted",[FC_RCTL_ACK_1] = "LC ACK_1",[FC_RCTL_ACK_0] = "LC ACK_0",[FC_RCTL_P_RJT] = "LC port reject",[FC_RCTL_F_RJT] = "LC fabric reject",[FC_RCTL_P_BSY] = "LC port busy",[FC_RCTL_F_BSY] = "LC fabric busy to data frame",[FC_RCTL_F_BSYL] = "LC fabric busy to link control frame",[FC_RCTL_LCR] = "LC link credit reset",[FC_RCTL_END] = "LC end", \
+}
 enum fc_well_known_fid {
- FC_FID_NONE = 0x000000,
- FC_FID_BCAST = 0xffffff,
+  FC_FID_NONE = 0x000000,
+  FC_FID_BCAST = 0xffffff,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FID_FLOGI = 0xfffffe,
- FC_FID_FCTRL = 0xfffffd,
- FC_FID_DIR_SERV = 0xfffffc,
- FC_FID_TIME_SERV = 0xfffffb,
+  FC_FID_FLOGI = 0xfffffe,
+  FC_FID_FCTRL = 0xfffffd,
+  FC_FID_DIR_SERV = 0xfffffc,
+  FC_FID_TIME_SERV = 0xfffffb,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FID_MGMT_SERV = 0xfffffa,
- FC_FID_QOS = 0xfffff9,
- FC_FID_ALIASES = 0xfffff8,
- FC_FID_SEC_KEY = 0xfffff7,
+  FC_FID_MGMT_SERV = 0xfffffa,
+  FC_FID_QOS = 0xfffff9,
+  FC_FID_ALIASES = 0xfffff8,
+  FC_FID_SEC_KEY = 0xfffff7,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FID_CLOCK = 0xfffff6,
- FC_FID_MCAST_SERV = 0xfffff5,
+  FC_FID_CLOCK = 0xfffff6,
+  FC_FID_MCAST_SERV = 0xfffff5,
 };
 #define FC_FID_WELL_KNOWN_MAX 0xffffff
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -113,16 +114,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_FID_LINK 2
 enum fc_fh_type {
- FC_TYPE_BLS = 0x00,
- FC_TYPE_ELS = 0x01,
+  FC_TYPE_BLS = 0x00,
+  FC_TYPE_ELS = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_TYPE_IP = 0x05,
- FC_TYPE_FCP = 0x08,
- FC_TYPE_CT = 0x20,
- FC_TYPE_ILS = 0x22,
+  FC_TYPE_IP = 0x05,
+  FC_TYPE_FCP = 0x08,
+  FC_TYPE_CT = 0x20,
+  FC_TYPE_ILS = 0x22,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define FC_TYPE_NAMES_INIT {   [FC_TYPE_BLS] = "BLS",   [FC_TYPE_ELS] = "ELS",   [FC_TYPE_IP] = "IP",   [FC_TYPE_FCP] = "FCP",   [FC_TYPE_CT] = "CT",   [FC_TYPE_ILS] = "ILS",  }
+#define FC_TYPE_NAMES_INIT {[FC_TYPE_BLS] = "BLS",[FC_TYPE_ELS] = "ELS",[FC_TYPE_IP] = "IP",[FC_TYPE_FCP] = "FCP",[FC_TYPE_CT] = "CT",[FC_TYPE_ILS] = "ILS", \
+}
 #define FC_XID_UNKNOWN 0xffff
 #define FC_XID_MIN 0x0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -156,97 +158,97 @@
 #define FC_FC_FILL(i) ((i) & 3)
 struct fc_ba_acc {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ba_seq_id_val;
+  __u8 ba_seq_id_val;
 #define FC_BA_SEQ_ID_VAL 0x80
- __u8 ba_seq_id;
- __u8 ba_resvd[2];
+  __u8 ba_seq_id;
+  __u8 ba_resvd[2];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be16 ba_ox_id;
- __be16 ba_rx_id;
- __be16 ba_low_seq_cnt;
- __be16 ba_high_seq_cnt;
+  __be16 ba_ox_id;
+  __be16 ba_rx_id;
+  __be16 ba_low_seq_cnt;
+  __be16 ba_high_seq_cnt;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_ba_rjt {
- __u8 br_resvd;
- __u8 br_reason;
+  __u8 br_resvd;
+  __u8 br_reason;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 br_explan;
- __u8 br_vendor;
+  __u8 br_explan;
+  __u8 br_vendor;
 };
 enum fc_ba_rjt_reason {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_BA_RJT_NONE = 0,
- FC_BA_RJT_INVL_CMD = 0x01,
- FC_BA_RJT_LOG_ERR = 0x03,
- FC_BA_RJT_LOG_BUSY = 0x05,
+  FC_BA_RJT_NONE = 0,
+  FC_BA_RJT_INVL_CMD = 0x01,
+  FC_BA_RJT_LOG_ERR = 0x03,
+  FC_BA_RJT_LOG_BUSY = 0x05,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_BA_RJT_PROTO_ERR = 0x07,
- FC_BA_RJT_UNABLE = 0x09,
- FC_BA_RJT_VENDOR = 0xff,
+  FC_BA_RJT_PROTO_ERR = 0x07,
+  FC_BA_RJT_UNABLE = 0x09,
+  FC_BA_RJT_VENDOR = 0xff,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum fc_ba_rjt_explan {
- FC_BA_RJT_EXP_NONE = 0x00,
- FC_BA_RJT_INV_XID = 0x03,
- FC_BA_RJT_ABT = 0x05,
+  FC_BA_RJT_EXP_NONE = 0x00,
+  FC_BA_RJT_INV_XID = 0x03,
+  FC_BA_RJT_ABT = 0x05,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_pf_rjt {
- __u8 rj_action;
- __u8 rj_reason;
+  __u8 rj_action;
+  __u8 rj_reason;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 rj_resvd;
- __u8 rj_vendor;
+  __u8 rj_resvd;
+  __u8 rj_vendor;
 };
 enum fc_pf_rjt_reason {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_NONE = 0,
- FC_RJT_INVL_DID = 0x01,
- FC_RJT_INVL_SID = 0x02,
- FC_RJT_P_UNAV_T = 0x03,
+  FC_RJT_NONE = 0,
+  FC_RJT_INVL_DID = 0x01,
+  FC_RJT_INVL_SID = 0x02,
+  FC_RJT_P_UNAV_T = 0x03,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_P_UNAV = 0x04,
- FC_RJT_CLS_UNSUP = 0x05,
- FC_RJT_DEL_USAGE = 0x06,
- FC_RJT_TYPE_UNSUP = 0x07,
+  FC_RJT_P_UNAV = 0x04,
+  FC_RJT_CLS_UNSUP = 0x05,
+  FC_RJT_DEL_USAGE = 0x06,
+  FC_RJT_TYPE_UNSUP = 0x07,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_LINK_CTL = 0x08,
- FC_RJT_R_CTL = 0x09,
- FC_RJT_F_CTL = 0x0a,
- FC_RJT_OX_ID = 0x0b,
+  FC_RJT_LINK_CTL = 0x08,
+  FC_RJT_R_CTL = 0x09,
+  FC_RJT_F_CTL = 0x0a,
+  FC_RJT_OX_ID = 0x0b,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_RX_ID = 0x0c,
- FC_RJT_SEQ_ID = 0x0d,
- FC_RJT_DF_CTL = 0x0e,
- FC_RJT_SEQ_CNT = 0x0f,
+  FC_RJT_RX_ID = 0x0c,
+  FC_RJT_SEQ_ID = 0x0d,
+  FC_RJT_DF_CTL = 0x0e,
+  FC_RJT_SEQ_CNT = 0x0f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_PARAM = 0x10,
- FC_RJT_EXCH_ERR = 0x11,
- FC_RJT_PROTO = 0x12,
- FC_RJT_LEN = 0x13,
+  FC_RJT_PARAM = 0x10,
+  FC_RJT_EXCH_ERR = 0x11,
+  FC_RJT_PROTO = 0x12,
+  FC_RJT_LEN = 0x13,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_UNEXP_ACK = 0x14,
- FC_RJT_FAB_CLASS = 0x15,
- FC_RJT_LOGI_REQ = 0x16,
- FC_RJT_SEQ_XS = 0x17,
+  FC_RJT_UNEXP_ACK = 0x14,
+  FC_RJT_FAB_CLASS = 0x15,
+  FC_RJT_LOGI_REQ = 0x16,
+  FC_RJT_SEQ_XS = 0x17,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_EXCH_EST = 0x18,
- FC_RJT_FAB_UNAV = 0x1a,
- FC_RJT_VC_ID = 0x1b,
- FC_RJT_CS_CTL = 0x1c,
+  FC_RJT_EXCH_EST = 0x18,
+  FC_RJT_FAB_UNAV = 0x1a,
+  FC_RJT_VC_ID = 0x1b,
+  FC_RJT_CS_CTL = 0x1c,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_INSUF_RES = 0x1d,
- FC_RJT_INVL_CLS = 0x1f,
- FC_RJT_PREEMT_RJT = 0x20,
- FC_RJT_PREEMT_DIS = 0x21,
+  FC_RJT_INSUF_RES = 0x1d,
+  FC_RJT_INVL_CLS = 0x1f,
+  FC_RJT_PREEMT_RJT = 0x20,
+  FC_RJT_PREEMT_DIS = 0x21,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_MCAST_ERR = 0x22,
- FC_RJT_MCAST_ET = 0x23,
- FC_RJT_PRLI_REQ = 0x24,
- FC_RJT_INVL_ATT = 0x25,
+  FC_RJT_MCAST_ERR = 0x22,
+  FC_RJT_MCAST_ET = 0x23,
+  FC_RJT_PRLI_REQ = 0x24,
+  FC_RJT_INVL_ATT = 0x25,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_RJT_VENDOR = 0xff,
+  FC_RJT_VENDOR = 0xff,
 };
 #define FC_DEF_E_D_TOV 2000UL
 #define FC_DEF_R_A_TOV 10000UL
diff --git a/libc/kernel/uapi/scsi/fc/fc_gs.h b/libc/kernel/uapi/scsi/fc/fc_gs.h
index b41fc56..05b6c52 100644
--- a/libc/kernel/uapi/scsi/fc/fc_gs.h
+++ b/libc/kernel/uapi/scsi/fc/fc_gs.h
@@ -21,60 +21,60 @@
 #include <linux/types.h>
 struct fc_ct_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ct_rev;
- __u8 ct_in_id[3];
- __u8 ct_fs_type;
- __u8 ct_fs_subtype;
+  __u8 ct_rev;
+  __u8 ct_in_id[3];
+  __u8 ct_fs_type;
+  __u8 ct_fs_subtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 ct_options;
- __u8 _ct_resvd1;
- __be16 ct_cmd;
- __be16 ct_mr_size;
+  __u8 ct_options;
+  __u8 _ct_resvd1;
+  __be16 ct_cmd;
+  __be16 ct_mr_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 _ct_resvd2;
- __u8 ct_reason;
- __u8 ct_explan;
- __u8 ct_vendor;
+  __u8 _ct_resvd2;
+  __u8 ct_reason;
+  __u8 ct_explan;
+  __u8 ct_vendor;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FC_CT_HDR_LEN 16
 enum fc_ct_rev {
- FC_CT_REV = 1
+  FC_CT_REV = 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_ct_fs_type {
- FC_FST_ALIAS = 0xf8,
- FC_FST_MGMT = 0xfa,
+  FC_FST_ALIAS = 0xf8,
+  FC_FST_MGMT = 0xfa,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FST_TIME = 0xfb,
- FC_FST_DIR = 0xfc,
+  FC_FST_TIME = 0xfb,
+  FC_FST_DIR = 0xfc,
 };
 enum fc_ct_cmd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FS_RJT = 0x8001,
- FC_FS_ACC = 0x8002,
+  FC_FS_RJT = 0x8001,
+  FC_FS_ACC = 0x8002,
 };
 enum fc_ct_reason {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FS_RJT_CMD = 0x01,
- FC_FS_RJT_VER = 0x02,
- FC_FS_RJT_LOG = 0x03,
- FC_FS_RJT_IUSIZ = 0x04,
+  FC_FS_RJT_CMD = 0x01,
+  FC_FS_RJT_VER = 0x02,
+  FC_FS_RJT_LOG = 0x03,
+  FC_FS_RJT_IUSIZ = 0x04,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FS_RJT_BSY = 0x05,
- FC_FS_RJT_PROTO = 0x07,
- FC_FS_RJT_UNABL = 0x09,
- FC_FS_RJT_UNSUP = 0x0b,
+  FC_FS_RJT_BSY = 0x05,
+  FC_FS_RJT_PROTO = 0x07,
+  FC_FS_RJT_UNABL = 0x09,
+  FC_FS_RJT_UNSUP = 0x0b,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum fc_ct_explan {
- FC_FS_EXP_NONE = 0x00,
- FC_FS_EXP_PID = 0x01,
+  FC_FS_EXP_NONE = 0x00,
+  FC_FS_EXP_PID = 0x01,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_FS_EXP_PNAM = 0x02,
- FC_FS_EXP_NNAM = 0x03,
- FC_FS_EXP_COS = 0x04,
- FC_FS_EXP_FTNR = 0x07,
+  FC_FS_EXP_PNAM = 0x02,
+  FC_FS_EXP_NNAM = 0x03,
+  FC_FS_EXP_COS = 0x04,
+  FC_FS_EXP_FTNR = 0x07,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/scsi/fc/fc_ns.h b/libc/kernel/uapi/scsi/fc/fc_ns.h
index 627cd46..cd028f3 100644
--- a/libc/kernel/uapi/scsi/fc/fc_ns.h
+++ b/libc/kernel/uapi/scsi/fc/fc_ns.h
@@ -22,48 +22,48 @@
 #define FC_NS_SUBTYPE 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum fc_ns_req {
- FC_NS_GA_NXT = 0x0100,
- FC_NS_GI_A = 0x0101,
- FC_NS_GPN_ID = 0x0112,
+  FC_NS_GA_NXT = 0x0100,
+  FC_NS_GI_A = 0x0101,
+  FC_NS_GPN_ID = 0x0112,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_NS_GNN_ID = 0x0113,
- FC_NS_GSPN_ID = 0x0118,
- FC_NS_GID_PN = 0x0121,
- FC_NS_GID_NN = 0x0131,
+  FC_NS_GNN_ID = 0x0113,
+  FC_NS_GSPN_ID = 0x0118,
+  FC_NS_GID_PN = 0x0121,
+  FC_NS_GID_NN = 0x0131,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_NS_GID_FT = 0x0171,
- FC_NS_GPN_FT = 0x0172,
- FC_NS_GID_PT = 0x01a1,
- FC_NS_RPN_ID = 0x0212,
+  FC_NS_GID_FT = 0x0171,
+  FC_NS_GPN_FT = 0x0172,
+  FC_NS_GID_PT = 0x01a1,
+  FC_NS_RPN_ID = 0x0212,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_NS_RNN_ID = 0x0213,
- FC_NS_RFT_ID = 0x0217,
- FC_NS_RSPN_ID = 0x0218,
- FC_NS_RFF_ID = 0x021f,
+  FC_NS_RNN_ID = 0x0213,
+  FC_NS_RFT_ID = 0x0217,
+  FC_NS_RSPN_ID = 0x0218,
+  FC_NS_RFF_ID = 0x021f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_NS_RSNN_NN = 0x0239,
+  FC_NS_RSNN_NN = 0x0239,
 };
 enum fc_ns_pt {
- FC_NS_UNID_PORT = 0x00,
+  FC_NS_UNID_PORT = 0x00,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_NS_N_PORT = 0x01,
- FC_NS_NL_PORT = 0x02,
- FC_NS_FNL_PORT = 0x03,
- FC_NS_NX_PORT = 0x7f,
+  FC_NS_N_PORT = 0x01,
+  FC_NS_NL_PORT = 0x02,
+  FC_NS_FNL_PORT = 0x03,
+  FC_NS_NX_PORT = 0x7f,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- FC_NS_F_PORT = 0x81,
- FC_NS_FL_PORT = 0x82,
- FC_NS_E_PORT = 0x84,
- FC_NS_B_PORT = 0x85,
+  FC_NS_F_PORT = 0x81,
+  FC_NS_FL_PORT = 0x82,
+  FC_NS_E_PORT = 0x84,
+  FC_NS_B_PORT = 0x85,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_ns_pt_obj {
- __u8 pt_type;
+  __u8 pt_type;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_ns_fid {
- __u8 fp_flags;
- __u8 fp_fid[3];
+  __u8 fp_flags;
+  __u8 fp_fid[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_NS_FID_LAST 0x80
@@ -71,76 +71,76 @@
 #define FC_NS_BPW 32
 struct fc_ns_fts {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 ff_type_map[FC_NS_TYPES / FC_NS_BPW];
+  __be32 ff_type_map[FC_NS_TYPES / FC_NS_BPW];
 };
 struct fc_ns_ff {
- __be32 fd_feat[FC_NS_TYPES * 4 / FC_NS_BPW];
+  __be32 fd_feat[FC_NS_TYPES * 4 / FC_NS_BPW];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_ns_gid_pt {
- __u8 fn_pt_type;
- __u8 fn_domain_id_scope;
+  __u8 fn_pt_type;
+  __u8 fn_domain_id_scope;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fn_area_id_scope;
- __u8 fn_resvd;
+  __u8 fn_area_id_scope;
+  __u8 fn_resvd;
 };
 struct fc_ns_gid_ft {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fn_resvd;
- __u8 fn_domain_id_scope;
- __u8 fn_area_id_scope;
- __u8 fn_fc4_type;
+  __u8 fn_resvd;
+  __u8 fn_domain_id_scope;
+  __u8 fn_area_id_scope;
+  __u8 fn_fc4_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_gpn_ft_resp {
- __u8 fp_flags;
- __u8 fp_fid[3];
+  __u8 fp_flags;
+  __u8 fp_fid[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 fp_resvd;
- __be64 fp_wwpn;
+  __be32 fp_resvd;
+  __be64 fp_wwpn;
 };
 struct fc_ns_gid_pn {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 fn_wwpn;
+  __be64 fn_wwpn;
 };
 struct fc_gid_pn_resp {
- __u8 fp_resvd;
+  __u8 fp_resvd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fp_fid[3];
+  __u8 fp_fid[3];
 };
 struct fc_gspn_resp {
- __u8 fp_name_len;
+  __u8 fp_name_len;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char fp_name[];
+  char fp_name[];
 };
 struct fc_ns_rft_id {
- struct fc_ns_fid fr_fid;
+  struct fc_ns_fid fr_fid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fc_ns_fts fr_fts;
+  struct fc_ns_fts fr_fts;
 };
 struct fc_ns_rn_id {
- struct fc_ns_fid fr_fid;
+  struct fc_ns_fid fr_fid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be64 fr_wwn;
+  __be64 fr_wwn;
 } __attribute__((__packed__));
 struct fc_ns_rsnn {
- __be64 fr_wwn;
+  __be64 fr_wwn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fr_name_len;
- char fr_name[];
+  __u8 fr_name_len;
+  char fr_name[];
 } __attribute__((__packed__));
 struct fc_ns_rspn {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fc_ns_fid fr_fid;
- __u8 fr_name_len;
- char fr_name[];
+  struct fc_ns_fid fr_fid;
+  __u8 fr_name_len;
+  char fr_name[];
 } __attribute__((__packed__));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_ns_rff_id {
- struct fc_ns_fid fr_fid;
- __u8 fr_resvd[2];
- __u8 fr_feat;
+  struct fc_ns_fid fr_fid;
+  __u8 fr_resvd[2];
+  __u8 fr_feat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 fr_type;
+  __u8 fr_type;
 } __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index acd9874..8e98fe6 100644
--- a/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -33,18 +33,18 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_BSG_RPT_CT (FC_BSG_RPT_MASK | 0x00000002)
 struct fc_bsg_host_add_rport {
- uint8_t reserved;
- uint8_t port_id[3];
+  uint8_t reserved;
+  uint8_t port_id[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_bsg_host_del_rport {
- uint8_t reserved;
- uint8_t port_id[3];
+  uint8_t reserved;
+  uint8_t port_id[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_bsg_host_els {
- uint8_t command_code;
- uint8_t port_id[3];
+  uint8_t command_code;
+  uint8_t port_id[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define FC_CTELS_STATUS_OK 0x00000000
@@ -56,66 +56,66 @@
 #define FC_CTELS_STATUS_F_BSY 0x00000006
 struct fc_bsg_ctels_reply {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t status;
- struct {
- uint8_t action;
- uint8_t reason_code;
+  uint32_t status;
+  struct {
+    uint8_t action;
+    uint8_t reason_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t reason_explanation;
- uint8_t vendor_unique;
- } rjt_data;
+    uint8_t reason_explanation;
+    uint8_t vendor_unique;
+  } rjt_data;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct fc_bsg_host_ct {
- uint8_t reserved;
- uint8_t port_id[3];
- uint32_t preamble_word0;
+  uint8_t reserved;
+  uint8_t port_id[3];
+  uint32_t preamble_word0;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t preamble_word1;
- uint32_t preamble_word2;
+  uint32_t preamble_word1;
+  uint32_t preamble_word2;
 };
 struct fc_bsg_host_vendor {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t vendor_id;
- uint32_t vendor_cmd[0];
+  uint64_t vendor_id;
+  uint32_t vendor_cmd[0];
 };
 struct fc_bsg_host_vendor_reply {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t vendor_rsp[0];
+  uint32_t vendor_rsp[0];
 };
 struct fc_bsg_rport_els {
- uint8_t els_code;
+  uint8_t els_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct fc_bsg_rport_ct {
- uint32_t preamble_word0;
- uint32_t preamble_word1;
+  uint32_t preamble_word0;
+  uint32_t preamble_word1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t preamble_word2;
+  uint32_t preamble_word2;
 };
 struct fc_bsg_request {
- uint32_t msgcode;
+  uint32_t msgcode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct fc_bsg_host_add_rport h_addrport;
- struct fc_bsg_host_del_rport h_delrport;
- struct fc_bsg_host_els h_els;
+  union {
+    struct fc_bsg_host_add_rport h_addrport;
+    struct fc_bsg_host_del_rport h_delrport;
+    struct fc_bsg_host_els h_els;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct fc_bsg_host_ct h_ct;
- struct fc_bsg_host_vendor h_vendor;
- struct fc_bsg_rport_els r_els;
- struct fc_bsg_rport_ct r_ct;
+    struct fc_bsg_host_ct h_ct;
+    struct fc_bsg_host_vendor h_vendor;
+    struct fc_bsg_rport_els r_els;
+    struct fc_bsg_rport_ct r_ct;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } rqst_data;
+  } rqst_data;
 } __attribute__((packed));
 struct fc_bsg_reply {
- uint32_t result;
+  uint32_t result;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t reply_payload_rcv_len;
- union {
- struct fc_bsg_host_vendor_reply vendor_reply;
- struct fc_bsg_ctels_reply ctels_reply;
+  uint32_t reply_payload_rcv_len;
+  union {
+    struct fc_bsg_host_vendor_reply vendor_reply;
+    struct fc_bsg_ctels_reply ctels_reply;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } reply_data;
+  } reply_data;
 };
 #endif
diff --git a/libc/kernel/uapi/scsi/scsi_netlink.h b/libc/kernel/uapi/scsi/scsi_netlink.h
index b04f464..dbc3c99 100644
--- a/libc/kernel/uapi/scsi/scsi_netlink.h
+++ b/libc/kernel/uapi/scsi/scsi_netlink.h
@@ -22,16 +22,16 @@
 #include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCSI_TRANSPORT_MSG NLMSG_MIN_TYPE + 1
-#define SCSI_NL_GRP_FC_EVENTS (1<<2)
+#define SCSI_NL_GRP_FC_EVENTS (1 << 2)
 #define SCSI_NL_GRP_CNT 3
 struct scsi_nl_hdr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t version;
- uint8_t transport;
- uint16_t magic;
- uint16_t msgtype;
+  uint8_t version;
+  uint8_t transport;
+  uint16_t magic;
+  uint16_t msgtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint16_t msglen;
+  uint16_t msglen;
 } __attribute__((aligned(sizeof(uint64_t))));
 #define SCSI_NL_VERSION 1
 #define SCSI_NL_MAGIC 0xA1B2
@@ -43,17 +43,17 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCSI_NL_MSGALIGN(len) (((len) + 7) & ~7)
 struct scsi_nl_host_vendor_msg {
- struct scsi_nl_hdr snlh;
- uint64_t vendor_id;
+  struct scsi_nl_hdr snlh;
+  uint64_t vendor_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint16_t host_no;
- uint16_t vmsg_datalen;
+  uint16_t host_no;
+  uint16_t vmsg_datalen;
 } __attribute__((aligned(sizeof(uint64_t))));
 #define SCSI_NL_VID_TYPE_SHIFT 56
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SCSI_NL_VID_TYPE_MASK ((__u64)0xFF << SCSI_NL_VID_TYPE_SHIFT)
-#define SCSI_NL_VID_TYPE_PCI ((__u64)0x01 << SCSI_NL_VID_TYPE_SHIFT)
-#define SCSI_NL_VID_ID_MASK (~ SCSI_NL_VID_TYPE_MASK)
-#define INIT_SCSI_NL_HDR(hdr, t, mtype, mlen)   {   (hdr)->version = SCSI_NL_VERSION;   (hdr)->transport = t;   (hdr)->magic = SCSI_NL_MAGIC;   (hdr)->msgtype = mtype;   (hdr)->msglen = mlen;   }
+#define SCSI_NL_VID_TYPE_MASK ((__u64) 0xFF << SCSI_NL_VID_TYPE_SHIFT)
+#define SCSI_NL_VID_TYPE_PCI ((__u64) 0x01 << SCSI_NL_VID_TYPE_SHIFT)
+#define SCSI_NL_VID_ID_MASK (~SCSI_NL_VID_TYPE_MASK)
+#define INIT_SCSI_NL_HDR(hdr,t,mtype,mlen) { (hdr)->version = SCSI_NL_VERSION; (hdr)->transport = t; (hdr)->magic = SCSI_NL_MAGIC; (hdr)->msgtype = mtype; (hdr)->msglen = mlen; }
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index c475199..dd4e837 100644
--- a/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -23,16 +23,16 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_NL_MSGALIGN(len) (((len) + 7) & ~7)
 struct fc_nl_event {
- struct scsi_nl_hdr snlh;
- uint64_t seconds;
+  struct scsi_nl_hdr snlh;
+  uint64_t seconds;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t vendor_id;
- uint16_t host_no;
- uint16_t event_datalen;
- uint32_t event_num;
+  uint64_t vendor_id;
+  uint16_t host_no;
+  uint16_t event_datalen;
+  uint32_t event_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t event_code;
- uint32_t event_data;
+  uint32_t event_code;
+  uint32_t event_data;
 } __attribute__((aligned(sizeof(uint64_t))));
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/sound/asequencer.h b/libc/kernel/uapi/sound/asequencer.h
index d5a4cf6..fb58991 100644
--- a/libc/kernel/uapi/sound/asequencer.h
+++ b/libc/kernel/uapi/sound/asequencer.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI__SOUND_ASEQUENCER_H
 #define _UAPI__SOUND_ASEQUENCER_H
-#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 1)
+#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
 #define SNDRV_SEQ_EVENT_SYSTEM 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_EVENT_RESULT 1
@@ -97,13 +97,13 @@
 typedef unsigned char snd_seq_event_type_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_addr {
- unsigned char client;
- unsigned char port;
+  unsigned char client;
+  unsigned char port;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_connect {
- struct snd_seq_addr sender;
- struct snd_seq_addr dest;
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_ADDRESS_UNKNOWN 253
@@ -111,144 +111,144 @@
 #define SNDRV_SEQ_ADDRESS_BROADCAST 255
 #define SNDRV_SEQ_QUEUE_DIRECT 253
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_TIME_STAMP_TICK (0<<0)
-#define SNDRV_SEQ_TIME_STAMP_REAL (1<<0)
-#define SNDRV_SEQ_TIME_STAMP_MASK (1<<0)
-#define SNDRV_SEQ_TIME_MODE_ABS (0<<1)
+#define SNDRV_SEQ_TIME_STAMP_TICK (0 << 0)
+#define SNDRV_SEQ_TIME_STAMP_REAL (1 << 0)
+#define SNDRV_SEQ_TIME_STAMP_MASK (1 << 0)
+#define SNDRV_SEQ_TIME_MODE_ABS (0 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_TIME_MODE_REL (1<<1)
-#define SNDRV_SEQ_TIME_MODE_MASK (1<<1)
-#define SNDRV_SEQ_EVENT_LENGTH_FIXED (0<<2)
-#define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1<<2)
+#define SNDRV_SEQ_TIME_MODE_REL (1 << 1)
+#define SNDRV_SEQ_TIME_MODE_MASK (1 << 1)
+#define SNDRV_SEQ_EVENT_LENGTH_FIXED (0 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2<<2)
-#define SNDRV_SEQ_EVENT_LENGTH_MASK (3<<2)
-#define SNDRV_SEQ_PRIORITY_NORMAL (0<<4)
-#define SNDRV_SEQ_PRIORITY_HIGH (1<<4)
+#define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_MASK (3 << 2)
+#define SNDRV_SEQ_PRIORITY_NORMAL (0 << 4)
+#define SNDRV_SEQ_PRIORITY_HIGH (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PRIORITY_MASK (1<<4)
+#define SNDRV_SEQ_PRIORITY_MASK (1 << 4)
 struct snd_seq_ev_note {
- unsigned char channel;
- unsigned char note;
+  unsigned char channel;
+  unsigned char note;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char velocity;
- unsigned char off_velocity;
- unsigned int duration;
+  unsigned char velocity;
+  unsigned char off_velocity;
+  unsigned int duration;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_ev_ctrl {
- unsigned char channel;
- unsigned char unused1, unused2, unused3;
- unsigned int param;
+  unsigned char channel;
+  unsigned char unused1, unused2, unused3;
+  unsigned int param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- signed int value;
+  signed int value;
 };
 struct snd_seq_ev_raw8 {
- unsigned char d[12];
+  unsigned char d[12];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_ev_raw32 {
- unsigned int d[3];
+  unsigned int d[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_ev_ext {
- unsigned int len;
- void *ptr;
+  unsigned int len;
+  void * ptr;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_result {
- int event;
- int result;
+  int event;
+  int result;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_real_time {
- unsigned int tv_sec;
- unsigned int tv_nsec;
+  unsigned int tv_sec;
+  unsigned int tv_nsec;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned int snd_seq_tick_time_t;
 union snd_seq_timestamp {
- snd_seq_tick_time_t tick;
- struct snd_seq_real_time time;
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_queue_skew {
- unsigned int value;
- unsigned int base;
+  unsigned int value;
+  unsigned int base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_ev_queue_control {
- unsigned char queue;
- unsigned char pad[3];
+  unsigned char queue;
+  unsigned char pad[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- signed int value;
- union snd_seq_timestamp time;
- unsigned int position;
+  union {
+    signed int value;
+    union snd_seq_timestamp time;
+    unsigned int position;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_queue_skew skew;
- unsigned int d32[2];
- unsigned char d8[8];
- } param;
+    struct snd_seq_queue_skew skew;
+    unsigned int d32[2];
+    unsigned char d8[8];
+  } param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_ev_quote {
- struct snd_seq_addr origin;
- unsigned short value;
+  struct snd_seq_addr origin;
+  unsigned short value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_event *event;
+  struct snd_seq_event * event;
 } __attribute__((packed));
 struct snd_seq_event {
- snd_seq_event_type_t type;
+  snd_seq_event_type_t type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char flags;
- char tag;
- unsigned char queue;
- union snd_seq_timestamp time;
+  unsigned char flags;
+  char tag;
+  unsigned char queue;
+  union snd_seq_timestamp time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_addr source;
- struct snd_seq_addr dest;
- union {
- struct snd_seq_ev_note note;
+  struct snd_seq_addr source;
+  struct snd_seq_addr dest;
+  union {
+    struct snd_seq_ev_note note;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_ev_ctrl control;
- struct snd_seq_ev_raw8 raw8;
- struct snd_seq_ev_raw32 raw32;
- struct snd_seq_ev_ext ext;
+    struct snd_seq_ev_ctrl control;
+    struct snd_seq_ev_raw8 raw8;
+    struct snd_seq_ev_raw32 raw32;
+    struct snd_seq_ev_ext ext;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_ev_queue_control queue;
- union snd_seq_timestamp time;
- struct snd_seq_addr addr;
- struct snd_seq_connect connect;
+    struct snd_seq_ev_queue_control queue;
+    union snd_seq_timestamp time;
+    struct snd_seq_addr addr;
+    struct snd_seq_connect connect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_result result;
- struct snd_seq_ev_quote quote;
- } data;
+    struct snd_seq_result result;
+    struct snd_seq_ev_quote quote;
+  } data;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_event_bounce {
- int err;
- struct snd_seq_event event;
+  int err;
+  struct snd_seq_event event;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_system_info {
- int queues;
- int clients;
- int ports;
+  int queues;
+  int clients;
+  int ports;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int channels;
- int cur_clients;
- int cur_queues;
- char reserved[24];
+  int channels;
+  int cur_clients;
+  int cur_queues;
+  char reserved[24];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_running_info {
- unsigned char client;
- unsigned char big_endian;
+  unsigned char client;
+  unsigned char big_endian;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cpu_mode;
- unsigned char pad;
- unsigned char reserved[12];
+  unsigned char cpu_mode;
+  unsigned char pad;
+  unsigned char reserved[12];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_CLIENT_SYSTEM 0
@@ -259,146 +259,146 @@
 #define NO_CLIENT ((__force snd_seq_client_type_t) 0)
 #define USER_CLIENT ((__force snd_seq_client_type_t) 1)
 #define KERNEL_CLIENT ((__force snd_seq_client_type_t) 2)
-#define SNDRV_SEQ_FILTER_BROADCAST (1<<0)
+#define SNDRV_SEQ_FILTER_BROADCAST (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_FILTER_MULTICAST (1<<1)
-#define SNDRV_SEQ_FILTER_BOUNCE (1<<2)
-#define SNDRV_SEQ_FILTER_USE_EVENT (1<<31)
+#define SNDRV_SEQ_FILTER_MULTICAST (1 << 1)
+#define SNDRV_SEQ_FILTER_BOUNCE (1 << 2)
+#define SNDRV_SEQ_FILTER_USE_EVENT (1 << 31)
 struct snd_seq_client_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int client;
- snd_seq_client_type_t type;
- char name[64];
- unsigned int filter;
+  int client;
+  snd_seq_client_type_t type;
+  char name[64];
+  unsigned int filter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char multicast_filter[8];
- unsigned char event_filter[32];
- int num_ports;
- int event_lost;
+  unsigned char multicast_filter[8];
+  unsigned char event_filter[32];
+  int num_ports;
+  int event_lost;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char reserved[64];
+  char reserved[64];
 };
 struct snd_seq_client_pool {
- int client;
+  int client;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int output_pool;
- int input_pool;
- int output_room;
- int output_free;
+  int output_pool;
+  int input_pool;
+  int output_room;
+  int output_free;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int input_free;
- char reserved[64];
+  int input_free;
+  char reserved[64];
 };
-#define SNDRV_SEQ_REMOVE_INPUT (1<<0)
+#define SNDRV_SEQ_REMOVE_INPUT (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_REMOVE_OUTPUT (1<<1)
-#define SNDRV_SEQ_REMOVE_DEST (1<<2)
-#define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1<<3)
-#define SNDRV_SEQ_REMOVE_TIME_BEFORE (1<<4)
+#define SNDRV_SEQ_REMOVE_OUTPUT (1 << 1)
+#define SNDRV_SEQ_REMOVE_DEST (1 << 2)
+#define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1 << 3)
+#define SNDRV_SEQ_REMOVE_TIME_BEFORE (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_REMOVE_TIME_AFTER (1<<5)
-#define SNDRV_SEQ_REMOVE_TIME_TICK (1<<6)
-#define SNDRV_SEQ_REMOVE_EVENT_TYPE (1<<7)
-#define SNDRV_SEQ_REMOVE_IGNORE_OFF (1<<8)
+#define SNDRV_SEQ_REMOVE_TIME_AFTER (1 << 5)
+#define SNDRV_SEQ_REMOVE_TIME_TICK (1 << 6)
+#define SNDRV_SEQ_REMOVE_EVENT_TYPE (1 << 7)
+#define SNDRV_SEQ_REMOVE_IGNORE_OFF (1 << 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_REMOVE_TAG_MATCH (1<<9)
+#define SNDRV_SEQ_REMOVE_TAG_MATCH (1 << 9)
 struct snd_seq_remove_events {
- unsigned int remove_mode;
- union snd_seq_timestamp time;
+  unsigned int remove_mode;
+  union snd_seq_timestamp time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char queue;
- struct snd_seq_addr dest;
- unsigned char channel;
- int type;
+  unsigned char queue;
+  struct snd_seq_addr dest;
+  unsigned char channel;
+  int type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char tag;
- int reserved[10];
+  char tag;
+  int reserved[10];
 };
 #define SNDRV_SEQ_PORT_SYSTEM_TIMER 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE 1
-#define SNDRV_SEQ_PORT_CAP_READ (1<<0)
-#define SNDRV_SEQ_PORT_CAP_WRITE (1<<1)
-#define SNDRV_SEQ_PORT_CAP_SYNC_READ (1<<2)
+#define SNDRV_SEQ_PORT_CAP_READ (1 << 0)
+#define SNDRV_SEQ_PORT_CAP_WRITE (1 << 1)
+#define SNDRV_SEQ_PORT_CAP_SYNC_READ (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1<<3)
-#define SNDRV_SEQ_PORT_CAP_DUPLEX (1<<4)
-#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1<<5)
-#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1<<6)
+#define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1 << 3)
+#define SNDRV_SEQ_PORT_CAP_DUPLEX (1 << 4)
+#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1 << 5)
+#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1 << 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1<<7)
-#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1<<0)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1<<1)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1<<2)
+#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1 << 7)
+#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1 << 0)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1 << 1)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1<<3)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1<<4)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1<<5)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1<<6)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1 << 3)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1 << 4)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1 << 5)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1 << 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_TYPE_SYNTH (1<<10)
-#define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1<<11)
-#define SNDRV_SEQ_PORT_TYPE_SAMPLE (1<<12)
-#define SNDRV_SEQ_PORT_TYPE_HARDWARE (1<<16)
+#define SNDRV_SEQ_PORT_TYPE_SYNTH (1 << 10)
+#define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1 << 11)
+#define SNDRV_SEQ_PORT_TYPE_SAMPLE (1 << 12)
+#define SNDRV_SEQ_PORT_TYPE_HARDWARE (1 << 16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1<<17)
-#define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1<<18)
-#define SNDRV_SEQ_PORT_TYPE_PORT (1<<19)
-#define SNDRV_SEQ_PORT_TYPE_APPLICATION (1<<20)
+#define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1 << 17)
+#define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1 << 18)
+#define SNDRV_SEQ_PORT_TYPE_PORT (1 << 19)
+#define SNDRV_SEQ_PORT_TYPE_APPLICATION (1 << 20)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1<<0)
-#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1<<1)
-#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1<<2)
+#define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1 << 0)
+#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1 << 2)
 struct snd_seq_port_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_addr addr;
- char name[64];
- unsigned int capability;
- unsigned int type;
+  struct snd_seq_addr addr;
+  char name[64];
+  unsigned int capability;
+  unsigned int type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int midi_channels;
- int midi_voices;
- int synth_voices;
- int read_use;
+  int midi_channels;
+  int midi_voices;
+  int synth_voices;
+  int read_use;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int write_use;
- void *kernel;
- unsigned int flags;
- unsigned char time_queue;
+  int write_use;
+  void * kernel;
+  unsigned int flags;
+  unsigned char time_queue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char reserved[59];
+  char reserved[59];
 };
-#define SNDRV_SEQ_QUEUE_FLG_SYNC (1<<0)
+#define SNDRV_SEQ_QUEUE_FLG_SYNC (1 << 0)
 struct snd_seq_queue_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int queue;
- int owner;
- unsigned locked:1;
- char name[64];
+  int queue;
+  int owner;
+  unsigned locked : 1;
+  char name[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
- char reserved[60];
+  unsigned int flags;
+  char reserved[60];
 };
 struct snd_seq_queue_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int queue;
- int events;
- snd_seq_tick_time_t tick;
- struct snd_seq_real_time time;
+  int queue;
+  int events;
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int running;
- int flags;
- char reserved[64];
+  int running;
+  int flags;
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_queue_tempo {
- int queue;
- unsigned int tempo;
- int ppq;
+  int queue;
+  unsigned int tempo;
+  int ppq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int skew_value;
- unsigned int skew_base;
- char reserved[24];
+  unsigned int skew_value;
+  unsigned int skew_base;
+  char reserved[24];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_TIMER_ALSA 0
@@ -406,92 +406,92 @@
 #define SNDRV_SEQ_TIMER_MIDI_TICK 2
 struct snd_seq_queue_timer {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int queue;
- int type;
- union {
- struct {
+  int queue;
+  int type;
+  union {
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_timer_id id;
- unsigned int resolution;
- } alsa;
- } u;
+      struct snd_timer_id id;
+      unsigned int resolution;
+    } alsa;
+  } u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char reserved[64];
+  char reserved[64];
 };
 struct snd_seq_queue_client {
- int queue;
+  int queue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int client;
- int used;
- char reserved[64];
+  int client;
+  int used;
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1<<0)
-#define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1<<1)
-#define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1<<2)
+#define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1 << 0)
+#define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1 << 2)
 struct snd_seq_port_subscribe {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_addr sender;
- struct snd_seq_addr dest;
- unsigned int voices;
- unsigned int flags;
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
+  unsigned int voices;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char queue;
- unsigned char pad[3];
- char reserved[64];
+  unsigned char queue;
+  unsigned char pad[3];
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_QUERY_SUBS_READ 0
 #define SNDRV_SEQ_QUERY_SUBS_WRITE 1
 struct snd_seq_query_subs {
- struct snd_seq_addr root;
+  struct snd_seq_addr root;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int type;
- int index;
- int num_subs;
- struct snd_seq_addr addr;
+  int type;
+  int index;
+  int num_subs;
+  struct snd_seq_addr addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char queue;
- unsigned int flags;
- char reserved[64];
+  unsigned char queue;
+  unsigned int flags;
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_IOCTL_PVERSION _IOR ('S', 0x00, int)
-#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR ('S', 0x01, int)
+#define SNDRV_SEQ_IOCTL_PVERSION _IOR('S', 0x00, int)
+#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR('S', 0x01, int)
 #define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info)
 #define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info)
-#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW('S', 0x11, struct snd_seq_client_info)
 #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info)
-#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW('S', 0x21, struct snd_seq_port_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_PORT_INFO _IOWR('S', 0x22, struct snd_seq_port_info)
-#define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW ('S', 0x23, struct snd_seq_port_info)
-#define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW ('S', 0x30, struct snd_seq_port_subscribe)
-#define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW ('S', 0x31, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW('S', 0x23, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW('S', 0x30, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW('S', 0x31, struct snd_seq_port_subscribe)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_CREATE_QUEUE _IOWR('S', 0x32, struct snd_seq_queue_info)
-#define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW ('S', 0x33, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW('S', 0x33, struct snd_seq_queue_info)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_INFO _IOWR('S', 0x34, struct snd_seq_queue_info)
 #define SNDRV_SEQ_IOCTL_SET_QUEUE_INFO _IOWR('S', 0x35, struct snd_seq_queue_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE _IOWR('S', 0x36, struct snd_seq_queue_info)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW ('S', 0x42, struct snd_seq_queue_tempo)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW('S', 0x42, struct snd_seq_queue_tempo)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER _IOWR('S', 0x43, struct snd_seq_queue_owner)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW ('S', 0x44, struct snd_seq_queue_owner)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW('S', 0x44, struct snd_seq_queue_owner)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW ('S', 0x46, struct snd_seq_queue_timer)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW('S', 0x46, struct snd_seq_queue_timer)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW ('S', 0x4a, struct snd_seq_queue_client)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW('S', 0x4a, struct snd_seq_queue_client)
 #define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool)
-#define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW ('S', 0x4c, struct snd_seq_client_pool)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW('S', 0x4c, struct snd_seq_client_pool)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW ('S', 0x4e, struct snd_seq_remove_events)
+#define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW('S', 0x4e, struct snd_seq_remove_events)
 #define SNDRV_SEQ_IOCTL_QUERY_SUBS _IOWR('S', 0x4f, struct snd_seq_query_subs)
 #define SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION _IOWR('S', 0x50, struct snd_seq_port_subscribe)
 #define SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT _IOWR('S', 0x51, struct snd_seq_client_info)
diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h
index 9d187aa..1419fe8 100644
--- a/libc/kernel/uapi/sound/asound.h
+++ b/libc/kernel/uapi/sound/asound.h
@@ -19,973 +19,977 @@
 #ifndef _UAPI__SOUND_ASOUND_H
 #define _UAPI__SOUND_ASOUND_H
 #include <linux/types.h>
-#define SNDRV_PROTOCOL_VERSION(major, minor, subminor) (((major)<<16)|((minor)<<8)|(subminor))
+#define SNDRV_PROTOCOL_VERSION(major,minor,subminor) (((major) << 16) | ((minor) << 8) | (subminor))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_PROTOCOL_MAJOR(version) (((version)>>16)&0xffff)
-#define SNDRV_PROTOCOL_MINOR(version) (((version)>>8)&0xff)
-#define SNDRV_PROTOCOL_MICRO(version) ((version)&0xff)
-#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion, uversion)   (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) ||   (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) &&   SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))
+#define SNDRV_PROTOCOL_MAJOR(version) (((version) >> 16) & 0xffff)
+#define SNDRV_PROTOCOL_MINOR(version) (((version) >> 8) & 0xff)
+#define SNDRV_PROTOCOL_MICRO(version) ((version) & 0xff)
+#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion,uversion) (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_aes_iec958 {
- unsigned char status[24];
- unsigned char subcode[147];
- unsigned char pad;
+  unsigned char status[24];
+  unsigned char subcode[147];
+  unsigned char pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char dig_subframe[4];
+  unsigned char dig_subframe[4];
 };
 struct snd_cea_861_aud_if {
- unsigned char db1_ct_cc;
+  unsigned char db1_ct_cc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char db2_sf_ss;
- unsigned char db3;
- unsigned char db4_ca;
- unsigned char db5_dminh_lsv;
+  unsigned char db2_sf_ss;
+  unsigned char db3;
+  unsigned char db4_ca;
+  unsigned char db5_dminh_lsv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_HWDEP_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
 enum {
- SNDRV_HWDEP_IFACE_OPL2 = 0,
+  SNDRV_HWDEP_IFACE_OPL2 = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_OPL3,
- SNDRV_HWDEP_IFACE_OPL4,
- SNDRV_HWDEP_IFACE_SB16CSP,
- SNDRV_HWDEP_IFACE_EMU10K1,
+  SNDRV_HWDEP_IFACE_OPL3,
+  SNDRV_HWDEP_IFACE_OPL4,
+  SNDRV_HWDEP_IFACE_SB16CSP,
+  SNDRV_HWDEP_IFACE_EMU10K1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_YSS225,
- SNDRV_HWDEP_IFACE_ICS2115,
- SNDRV_HWDEP_IFACE_SSCAPE,
- SNDRV_HWDEP_IFACE_VX,
+  SNDRV_HWDEP_IFACE_YSS225,
+  SNDRV_HWDEP_IFACE_ICS2115,
+  SNDRV_HWDEP_IFACE_SSCAPE,
+  SNDRV_HWDEP_IFACE_VX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_MIXART,
- SNDRV_HWDEP_IFACE_USX2Y,
- SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,
- SNDRV_HWDEP_IFACE_BLUETOOTH,
+  SNDRV_HWDEP_IFACE_MIXART,
+  SNDRV_HWDEP_IFACE_USX2Y,
+  SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,
+  SNDRV_HWDEP_IFACE_BLUETOOTH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_USX2Y_PCM,
- SNDRV_HWDEP_IFACE_PCXHR,
- SNDRV_HWDEP_IFACE_SB_RC,
- SNDRV_HWDEP_IFACE_HDA,
+  SNDRV_HWDEP_IFACE_USX2Y_PCM,
+  SNDRV_HWDEP_IFACE_PCXHR,
+  SNDRV_HWDEP_IFACE_SB_RC,
+  SNDRV_HWDEP_IFACE_HDA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_USB_STREAM,
- SNDRV_HWDEP_IFACE_FW_DICE,
- SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_DICE
+  SNDRV_HWDEP_IFACE_USB_STREAM,
+  SNDRV_HWDEP_IFACE_FW_DICE,
+  SNDRV_HWDEP_IFACE_FW_FIREWORKS,
+  SNDRV_HWDEP_IFACE_FW_BEBOB,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_BEBOB
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_hwdep_info {
- unsigned int device;
- int card;
- unsigned char id[64];
+  unsigned int device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char name[80];
- int iface;
- unsigned char reserved[64];
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  int iface;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char reserved[64];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_hwdep_dsp_status {
- unsigned int version;
- unsigned char id[32];
- unsigned int num_dsps;
+  unsigned int version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int dsp_loaded;
- unsigned int chip_ready;
- unsigned char reserved[16];
+  unsigned char id[32];
+  unsigned int num_dsps;
+  unsigned int dsp_loaded;
+  unsigned int chip_ready;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char reserved[16];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_hwdep_dsp_image {
- unsigned int index;
- unsigned char name[64];
- unsigned char __user *image;
+  unsigned int index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t length;
- unsigned long driver_data;
+  unsigned char name[64];
+  unsigned char __user * image;
+  size_t length;
+  unsigned long driver_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define SNDRV_HWDEP_IOCTL_PVERSION _IOR ('H', 0x00, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_HWDEP_IOCTL_INFO _IOR ('H', 0x01, struct snd_hwdep_info)
+#define SNDRV_HWDEP_IOCTL_PVERSION _IOR('H', 0x00, int)
+#define SNDRV_HWDEP_IOCTL_INFO _IOR('H', 0x01, struct snd_hwdep_info)
 #define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status)
-#define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image)
-#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 11)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image)
+#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 12)
 typedef unsigned long snd_pcm_uframes_t;
 typedef signed long snd_pcm_sframes_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_PCM_CLASS_GENERIC = 0,
+  SNDRV_PCM_CLASS_GENERIC = 0,
+  SNDRV_PCM_CLASS_MULTI,
+  SNDRV_PCM_CLASS_MODEM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_CLASS_MULTI,
- SNDRV_PCM_CLASS_MODEM,
- SNDRV_PCM_CLASS_DIGITIZER,
- SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_PCM_CLASS_DIGITIZER,
+  SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,
 };
 enum {
- SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,
- SNDRV_PCM_SUBCLASS_MULTI_MIX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,
+  SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,
+  SNDRV_PCM_SUBCLASS_MULTI_MIX,
+  SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,
 };
-enum {
- SNDRV_PCM_STREAM_PLAYBACK = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_STREAM_CAPTURE,
- SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,
+enum {
+  SNDRV_PCM_STREAM_PLAYBACK = 0,
+  SNDRV_PCM_STREAM_CAPTURE,
+  SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 typedef int __bitwise snd_pcm_access_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_ACCESS_MMAP_INTERLEAVED ((__force snd_pcm_access_t) 0)
 #define SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED ((__force snd_pcm_access_t) 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_ACCESS_MMAP_COMPLEX ((__force snd_pcm_access_t) 2)
 #define SNDRV_PCM_ACCESS_RW_INTERLEAVED ((__force snd_pcm_access_t) 3)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_ACCESS_RW_NONINTERLEAVED ((__force snd_pcm_access_t) 4)
 #define SNDRV_PCM_ACCESS_LAST SNDRV_PCM_ACCESS_RW_NONINTERLEAVED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __bitwise snd_pcm_format_t;
 #define SNDRV_PCM_FORMAT_S8 ((__force snd_pcm_format_t) 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_U8 ((__force snd_pcm_format_t) 1)
 #define SNDRV_PCM_FORMAT_S16_LE ((__force snd_pcm_format_t) 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_S16_BE ((__force snd_pcm_format_t) 3)
 #define SNDRV_PCM_FORMAT_U16_LE ((__force snd_pcm_format_t) 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_U16_BE ((__force snd_pcm_format_t) 5)
 #define SNDRV_PCM_FORMAT_S24_LE ((__force snd_pcm_format_t) 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_S24_BE ((__force snd_pcm_format_t) 7)
 #define SNDRV_PCM_FORMAT_U24_LE ((__force snd_pcm_format_t) 8)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_U24_BE ((__force snd_pcm_format_t) 9)
 #define SNDRV_PCM_FORMAT_S32_LE ((__force snd_pcm_format_t) 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_S32_BE ((__force snd_pcm_format_t) 11)
 #define SNDRV_PCM_FORMAT_U32_LE ((__force snd_pcm_format_t) 12)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_U32_BE ((__force snd_pcm_format_t) 13)
 #define SNDRV_PCM_FORMAT_FLOAT_LE ((__force snd_pcm_format_t) 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_FLOAT_BE ((__force snd_pcm_format_t) 15)
 #define SNDRV_PCM_FORMAT_FLOAT64_LE ((__force snd_pcm_format_t) 16)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_FLOAT64_BE ((__force snd_pcm_format_t) 17)
 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE ((__force snd_pcm_format_t) 18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE ((__force snd_pcm_format_t) 19)
 #define SNDRV_PCM_FORMAT_MU_LAW ((__force snd_pcm_format_t) 20)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_A_LAW ((__force snd_pcm_format_t) 21)
 #define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23)
 #define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31)
 #define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33)
 #define SNDRV_PCM_FORMAT_U24_3LE ((__force snd_pcm_format_t) 34)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_U24_3BE ((__force snd_pcm_format_t) 35)
 #define SNDRV_PCM_FORMAT_S20_3LE ((__force snd_pcm_format_t) 36)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_S20_3BE ((__force snd_pcm_format_t) 37)
 #define SNDRV_PCM_FORMAT_U20_3LE ((__force snd_pcm_format_t) 38)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_U20_3BE ((__force snd_pcm_format_t) 39)
 #define SNDRV_PCM_FORMAT_S18_3LE ((__force snd_pcm_format_t) 40)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_S18_3BE ((__force snd_pcm_format_t) 41)
 #define SNDRV_PCM_FORMAT_U18_3LE ((__force snd_pcm_format_t) 42)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_U18_3BE ((__force snd_pcm_format_t) 43)
 #define SNDRV_PCM_FORMAT_G723_24 ((__force snd_pcm_format_t) 44)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45)
 #define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47)
 #define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48)
-#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49)
-#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U16_LE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49)
+#define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) 50)
+#define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) 51)
+#define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) 52)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE
 #ifdef SNDRV_LITTLE_ENDIAN
 #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE
 #define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_LE
-#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE
 #define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_LE
 #define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_LE
 #define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_LE
-#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE
 #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE
 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE
 #endif
-#ifdef SNDRV_BIG_ENDIAN
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef SNDRV_BIG_ENDIAN
 #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE
 #define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_BE
 #define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_BE
-#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_BE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_BE
 #define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_BE
 #define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_BE
 #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE
-#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE
 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE
 #endif
 typedef int __bitwise snd_pcm_subformat_t;
-#define SNDRV_PCM_SUBFORMAT_STD ((__force snd_pcm_subformat_t) 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_SUBFORMAT_STD ((__force snd_pcm_subformat_t) 0)
 #define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_STD
 #define SNDRV_PCM_INFO_MMAP 0x00000001
 #define SNDRV_PCM_INFO_MMAP_VALID 0x00000002
-#define SNDRV_PCM_INFO_DOUBLE 0x00000004
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_INFO_DOUBLE 0x00000004
 #define SNDRV_PCM_INFO_BATCH 0x00000010
 #define SNDRV_PCM_INFO_INTERLEAVED 0x00000100
 #define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200
-#define SNDRV_PCM_INFO_COMPLEX 0x00000400
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_INFO_COMPLEX 0x00000400
 #define SNDRV_PCM_INFO_BLOCK_TRANSFER 0x00010000
 #define SNDRV_PCM_INFO_OVERRANGE 0x00020000
 #define SNDRV_PCM_INFO_RESUME 0x00040000
-#define SNDRV_PCM_INFO_PAUSE 0x00080000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_INFO_PAUSE 0x00080000
 #define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000
 #define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000
 #define SNDRV_PCM_INFO_SYNC_START 0x00400000
-#define SNDRV_PCM_INFO_NO_PERIOD_WAKEUP 0x00800000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_INFO_NO_PERIOD_WAKEUP 0x00800000
 #define SNDRV_PCM_INFO_HAS_WALL_CLOCK 0x01000000
 #define SNDRV_PCM_INFO_FIFO_IN_FRAMES 0x80000000
 typedef int __bitwise snd_pcm_state_t;
-#define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0)
 #define SNDRV_PCM_STATE_SETUP ((__force snd_pcm_state_t) 1)
 #define SNDRV_PCM_STATE_PREPARED ((__force snd_pcm_state_t) 2)
 #define SNDRV_PCM_STATE_RUNNING ((__force snd_pcm_state_t) 3)
-#define SNDRV_PCM_STATE_XRUN ((__force snd_pcm_state_t) 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_STATE_XRUN ((__force snd_pcm_state_t) 4)
 #define SNDRV_PCM_STATE_DRAINING ((__force snd_pcm_state_t) 5)
 #define SNDRV_PCM_STATE_PAUSED ((__force snd_pcm_state_t) 6)
 #define SNDRV_PCM_STATE_SUSPENDED ((__force snd_pcm_state_t) 7)
-#define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8)
 #define SNDRV_PCM_STATE_LAST SNDRV_PCM_STATE_DISCONNECTED
 enum {
- SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
- SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,
+  SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,
+  SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,
 };
 union snd_pcm_sync_id {
- unsigned char id[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short id16[8];
- unsigned int id32[4];
+  unsigned char id[16];
+  unsigned short id16[8];
+  unsigned int id32[4];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_pcm_info {
+  unsigned int device;
+  unsigned int subdevice;
+  int stream;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int device;
- unsigned int subdevice;
- int stream;
- int card;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned char subname[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char id[64];
- unsigned char name[80];
- unsigned char subname[32];
- int dev_class;
+  int dev_class;
+  int dev_subclass;
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int dev_subclass;
- unsigned int subdevices_count;
- unsigned int subdevices_avail;
- union snd_pcm_sync_id sync;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[64];
+  union snd_pcm_sync_id sync;
+  unsigned char reserved[64];
 };
 typedef int snd_pcm_hw_param_t;
-#define SNDRV_PCM_HW_PARAM_ACCESS 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_HW_PARAM_ACCESS 0
 #define SNDRV_PCM_HW_PARAM_FORMAT 1
 #define SNDRV_PCM_HW_PARAM_SUBFORMAT 2
 #define SNDRV_PCM_HW_PARAM_FIRST_MASK SNDRV_PCM_HW_PARAM_ACCESS
-#define SNDRV_PCM_HW_PARAM_LAST_MASK SNDRV_PCM_HW_PARAM_SUBFORMAT
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_HW_PARAM_LAST_MASK SNDRV_PCM_HW_PARAM_SUBFORMAT
 #define SNDRV_PCM_HW_PARAM_SAMPLE_BITS 8
 #define SNDRV_PCM_HW_PARAM_FRAME_BITS 9
 #define SNDRV_PCM_HW_PARAM_CHANNELS 10
-#define SNDRV_PCM_HW_PARAM_RATE 11
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_HW_PARAM_RATE 11
 #define SNDRV_PCM_HW_PARAM_PERIOD_TIME 12
 #define SNDRV_PCM_HW_PARAM_PERIOD_SIZE 13
 #define SNDRV_PCM_HW_PARAM_PERIOD_BYTES 14
-#define SNDRV_PCM_HW_PARAM_PERIODS 15
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_HW_PARAM_PERIODS 15
 #define SNDRV_PCM_HW_PARAM_BUFFER_TIME 16
 #define SNDRV_PCM_HW_PARAM_BUFFER_SIZE 17
 #define SNDRV_PCM_HW_PARAM_BUFFER_BYTES 18
-#define SNDRV_PCM_HW_PARAM_TICK_TIME 19
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_HW_PARAM_TICK_TIME 19
 #define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL SNDRV_PCM_HW_PARAM_SAMPLE_BITS
 #define SNDRV_PCM_HW_PARAM_LAST_INTERVAL SNDRV_PCM_HW_PARAM_TICK_TIME
-#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0)
-#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1)
+#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2)
+#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1 << 1)
+#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1 << 2)
 struct snd_interval {
- unsigned int min, max;
- unsigned int openmin:1,
+  unsigned int min, max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- openmax:1,
- integer:1,
- empty:1;
+  unsigned int openmin : 1, openmax : 1, integer : 1, empty : 1;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_MASK_MAX 256
 struct snd_mask {
- __u32 bits[(SNDRV_MASK_MAX+31)/32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 bits[(SNDRV_MASK_MAX + 31) / 32];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_pcm_hw_params {
- unsigned int flags;
- struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
- SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_mask mres[5];
- struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL -
- SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
- struct snd_interval ires[9];
+  struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK - SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
+  struct snd_mask mres[5];
+  struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
+  struct snd_interval ires[9];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int rmask;
- unsigned int cmask;
- unsigned int info;
- unsigned int msbits;
+  unsigned int rmask;
+  unsigned int cmask;
+  unsigned int info;
+  unsigned int msbits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int rate_num;
- unsigned int rate_den;
- snd_pcm_uframes_t fifo_size;
- unsigned char reserved[64];
+  unsigned int rate_num;
+  unsigned int rate_den;
+  snd_pcm_uframes_t fifo_size;
+  unsigned char reserved[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum {
- SNDRV_PCM_TSTAMP_NONE = 0,
- SNDRV_PCM_TSTAMP_ENABLE,
+  SNDRV_PCM_TSTAMP_NONE = 0,
+  SNDRV_PCM_TSTAMP_ENABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,
+  SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,
 };
 struct snd_pcm_sw_params {
- int tstamp_mode;
+  int tstamp_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int period_step;
- unsigned int sleep_min;
- snd_pcm_uframes_t avail_min;
- snd_pcm_uframes_t xfer_align;
+  unsigned int period_step;
+  unsigned int sleep_min;
+  snd_pcm_uframes_t avail_min;
+  snd_pcm_uframes_t xfer_align;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t start_threshold;
- snd_pcm_uframes_t stop_threshold;
- snd_pcm_uframes_t silence_threshold;
- snd_pcm_uframes_t silence_size;
+  snd_pcm_uframes_t start_threshold;
+  snd_pcm_uframes_t stop_threshold;
+  snd_pcm_uframes_t silence_threshold;
+  snd_pcm_uframes_t silence_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t boundary;
- unsigned char reserved[64];
+  snd_pcm_uframes_t boundary;
+  unsigned int proto;
+  unsigned int tstamp_type;
+  unsigned char reserved[56];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_pcm_channel_info {
+  unsigned int channel;
+  __kernel_off_t offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int channel;
- __kernel_off_t offset;
- unsigned int first;
- unsigned int step;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int first;
+  unsigned int step;
 };
 struct snd_pcm_status {
- snd_pcm_state_t state;
- struct timespec trigger_tstamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec tstamp;
- snd_pcm_uframes_t appl_ptr;
- snd_pcm_uframes_t hw_ptr;
- snd_pcm_sframes_t delay;
+  snd_pcm_state_t state;
+  struct timespec trigger_tstamp;
+  struct timespec tstamp;
+  snd_pcm_uframes_t appl_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t avail;
- snd_pcm_uframes_t avail_max;
- snd_pcm_uframes_t overrange;
- snd_pcm_state_t suspended_state;
+  snd_pcm_uframes_t hw_ptr;
+  snd_pcm_sframes_t delay;
+  snd_pcm_uframes_t avail;
+  snd_pcm_uframes_t avail_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved_alignment;
- struct timespec audio_tstamp;
- unsigned char reserved[56-sizeof(struct timespec)];
+  snd_pcm_uframes_t overrange;
+  snd_pcm_state_t suspended_state;
+  __u32 reserved_alignment;
+  struct timespec audio_tstamp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char reserved[56 - sizeof(struct timespec)];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_pcm_mmap_status {
- snd_pcm_state_t state;
- int pad1;
- snd_pcm_uframes_t hw_ptr;
+  snd_pcm_state_t state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec tstamp;
- snd_pcm_state_t suspended_state;
- struct timespec audio_tstamp;
+  int pad1;
+  snd_pcm_uframes_t hw_ptr;
+  struct timespec tstamp;
+  snd_pcm_state_t suspended_state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct timespec audio_tstamp;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_pcm_mmap_control {
- snd_pcm_uframes_t appl_ptr;
- snd_pcm_uframes_t avail_min;
-};
+  snd_pcm_uframes_t appl_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_PCM_SYNC_PTR_HWSYNC (1<<0)
-#define SNDRV_PCM_SYNC_PTR_APPL (1<<1)
-#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1<<2)
+  snd_pcm_uframes_t avail_min;
+};
+#define SNDRV_PCM_SYNC_PTR_HWSYNC (1 << 0)
+#define SNDRV_PCM_SYNC_PTR_APPL (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1 << 2)
 struct snd_pcm_sync_ptr {
+  unsigned int flags;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
- union {
- struct snd_pcm_mmap_status status;
- unsigned char reserved[64];
+    struct snd_pcm_mmap_status status;
+    unsigned char reserved[64];
+  } s;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } s;
- union {
- struct snd_pcm_mmap_control control;
- unsigned char reserved[64];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } c;
+    struct snd_pcm_mmap_control control;
+    unsigned char reserved[64];
+  } c;
 };
-struct snd_xferi {
- snd_pcm_sframes_t result;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *buf;
- snd_pcm_uframes_t frames;
+struct snd_xferi {
+  snd_pcm_sframes_t result;
+  void __user * buf;
+  snd_pcm_uframes_t frames;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_xfern {
+  snd_pcm_sframes_t result;
+  void __user * __user * bufs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_sframes_t result;
- void __user * __user *bufs;
- snd_pcm_uframes_t frames;
+  snd_pcm_uframes_t frames;
+};
+enum {
+  SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
+  SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
- SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
- SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
+  SNDRV_CHMAP_UNKNOWN = 0,
+  SNDRV_CHMAP_NA,
+  SNDRV_CHMAP_MONO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_FL,
+  SNDRV_CHMAP_FR,
+  SNDRV_CHMAP_RL,
+  SNDRV_CHMAP_RR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_FC,
+  SNDRV_CHMAP_LFE,
+  SNDRV_CHMAP_SL,
+  SNDRV_CHMAP_SR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_RC,
+  SNDRV_CHMAP_FLC,
+  SNDRV_CHMAP_FRC,
+  SNDRV_CHMAP_RLC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_RRC,
+  SNDRV_CHMAP_FLW,
+  SNDRV_CHMAP_FRW,
+  SNDRV_CHMAP_FLH,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_FCH,
+  SNDRV_CHMAP_FRH,
+  SNDRV_CHMAP_TC,
+  SNDRV_CHMAP_TFL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_TFR,
+  SNDRV_CHMAP_TFC,
+  SNDRV_CHMAP_TRL,
+  SNDRV_CHMAP_TRR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_TRC,
+  SNDRV_CHMAP_TFLC,
+  SNDRV_CHMAP_TFRC,
+  SNDRV_CHMAP_TSL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_TSR,
+  SNDRV_CHMAP_LLFE,
+  SNDRV_CHMAP_RLFE,
+  SNDRV_CHMAP_BC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_BLC,
+  SNDRV_CHMAP_BRC,
+  SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC,
 };
-enum {
- SNDRV_CHMAP_UNKNOWN = 0,
- SNDRV_CHMAP_NA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_MONO,
- SNDRV_CHMAP_FL,
- SNDRV_CHMAP_FR,
- SNDRV_CHMAP_RL,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_RR,
- SNDRV_CHMAP_FC,
- SNDRV_CHMAP_LFE,
- SNDRV_CHMAP_SL,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_SR,
- SNDRV_CHMAP_RC,
- SNDRV_CHMAP_FLC,
- SNDRV_CHMAP_FRC,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_RLC,
- SNDRV_CHMAP_RRC,
- SNDRV_CHMAP_FLW,
- SNDRV_CHMAP_FRW,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_FLH,
- SNDRV_CHMAP_FCH,
- SNDRV_CHMAP_FRH,
- SNDRV_CHMAP_TC,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_TFL,
- SNDRV_CHMAP_TFR,
- SNDRV_CHMAP_TFC,
- SNDRV_CHMAP_TRL,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_TRR,
- SNDRV_CHMAP_TRC,
- SNDRV_CHMAP_TFLC,
- SNDRV_CHMAP_TFRC,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_TSL,
- SNDRV_CHMAP_TSR,
- SNDRV_CHMAP_LLFE,
- SNDRV_CHMAP_RLFE,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_BC,
- SNDRV_CHMAP_BLC,
- SNDRV_CHMAP_BRC,
- SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
 #define SNDRV_CHMAP_POSITION_MASK 0xffff
 #define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16)
 #define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_PVERSION _IOR('A', 0x00, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_INFO _IOR('A', 0x01, struct snd_pcm_info)
 #define SNDRV_PCM_IOCTL_TSTAMP _IOW('A', 0x02, int)
 #define SNDRV_PCM_IOCTL_TTSTAMP _IOW('A', 0x03, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_HW_REFINE _IOWR('A', 0x10, struct snd_pcm_hw_params)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_HW_PARAMS _IOWR('A', 0x11, struct snd_pcm_hw_params)
 #define SNDRV_PCM_IOCTL_HW_FREE _IO('A', 0x12)
 #define SNDRV_PCM_IOCTL_SW_PARAMS _IOWR('A', 0x13, struct snd_pcm_sw_params)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_STATUS _IOR('A', 0x20, struct snd_pcm_status)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_DELAY _IOR('A', 0x21, snd_pcm_sframes_t)
 #define SNDRV_PCM_IOCTL_HWSYNC _IO('A', 0x22)
 #define SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct snd_pcm_sync_ptr)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_CHANNEL_INFO _IOR('A', 0x32, struct snd_pcm_channel_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_PREPARE _IO('A', 0x40)
 #define SNDRV_PCM_IOCTL_RESET _IO('A', 0x41)
 #define SNDRV_PCM_IOCTL_START _IO('A', 0x42)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_DROP _IO('A', 0x43)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_DRAIN _IO('A', 0x44)
 #define SNDRV_PCM_IOCTL_PAUSE _IOW('A', 0x45, int)
 #define SNDRV_PCM_IOCTL_REWIND _IOW('A', 0x46, snd_pcm_uframes_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_RESUME _IO('A', 0x47)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_XRUN _IO('A', 0x48)
 #define SNDRV_PCM_IOCTL_FORWARD _IOW('A', 0x49, snd_pcm_uframes_t)
 #define SNDRV_PCM_IOCTL_WRITEI_FRAMES _IOW('A', 0x50, struct snd_xferi)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_READI_FRAMES _IOR('A', 0x51, struct snd_xferi)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_WRITEN_FRAMES _IOW('A', 0x52, struct snd_xfern)
 #define SNDRV_PCM_IOCTL_READN_FRAMES _IOR('A', 0x53, struct snd_xfern)
 #define SNDRV_PCM_IOCTL_LINK _IOW('A', 0x60, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_UNLINK _IO('A', 0x61)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 0)
 enum {
- SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+  SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+  SNDRV_RAWMIDI_STREAM_INPUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_RAWMIDI_STREAM_INPUT,
- SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,
+  SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,
 };
 #define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_INFO_INPUT 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004
 struct snd_rawmidi_info {
- unsigned int device;
+  unsigned int device;
+  unsigned int subdevice;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int subdevice;
- int stream;
- int card;
- unsigned int flags;
+  int stream;
+  int card;
+  unsigned int flags;
+  unsigned char id[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char id[64];
- unsigned char name[80];
- unsigned char subname[32];
- unsigned int subdevices_count;
+  unsigned char name[80];
+  unsigned char subname[32];
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int subdevices_avail;
- unsigned char reserved[64];
+  unsigned char reserved[64];
 };
 struct snd_rawmidi_params {
+  int stream;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int stream;
- size_t buffer_size;
- size_t avail_min;
- unsigned int no_active_sensing: 1;
+  size_t buffer_size;
+  size_t avail_min;
+  unsigned int no_active_sensing : 1;
+  unsigned char reserved[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[16];
 };
 struct snd_rawmidi_status {
- int stream;
+  int stream;
+  struct timespec tstamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec tstamp;
- size_t avail;
- size_t xruns;
- unsigned char reserved[16];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  size_t avail;
+  size_t xruns;
+  unsigned char reserved[16];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)
 #define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)
 #define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
 #define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)
 #define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_TIMER_CLASS_NONE = -1,
- SNDRV_TIMER_CLASS_SLAVE = 0,
- SNDRV_TIMER_CLASS_GLOBAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_CLASS_CARD,
- SNDRV_TIMER_CLASS_PCM,
- SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,
+  SNDRV_TIMER_CLASS_NONE = - 1,
+  SNDRV_TIMER_CLASS_SLAVE = 0,
+  SNDRV_TIMER_CLASS_GLOBAL,
+  SNDRV_TIMER_CLASS_CARD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_TIMER_CLASS_PCM,
+  SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_TIMER_SCLASS_NONE = 0,
- SNDRV_TIMER_SCLASS_APPLICATION,
- SNDRV_TIMER_SCLASS_SEQUENCER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
- SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_NONE = 0,
+  SNDRV_TIMER_SCLASS_APPLICATION,
+  SNDRV_TIMER_SCLASS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
 };
 #define SNDRV_TIMER_GLOBAL_SYSTEM 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_GLOBAL_RTC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_GLOBAL_HPET 2
 #define SNDRV_TIMER_GLOBAL_HRTIMER 3
-#define SNDRV_TIMER_FLG_SLAVE (1<<0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_TIMER_FLG_SLAVE (1 << 0)
 struct snd_timer_id {
- int dev_class;
- int dev_sclass;
- int card;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int device;
- int subdevice;
+  int dev_class;
+  int dev_sclass;
+  int card;
+  int device;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int subdevice;
 };
 struct snd_timer_ginfo {
+  struct snd_timer_id tid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_timer_id tid;
- unsigned int flags;
- int card;
- unsigned char id[64];
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char name[80];
- unsigned long reserved0;
- unsigned long resolution;
- unsigned long resolution_min;
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned long resolution_min;
+  unsigned long resolution_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long resolution_max;
- unsigned int clients;
- unsigned char reserved[32];
+  unsigned int clients;
+  unsigned char reserved[32];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_gparams {
- struct snd_timer_id tid;
- unsigned long period_num;
- unsigned long period_den;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[32];
+  struct snd_timer_id tid;
+  unsigned long period_num;
+  unsigned long period_den;
+  unsigned char reserved[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_timer_gstatus {
- struct snd_timer_id tid;
+  struct snd_timer_id tid;
+  unsigned long resolution;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long resolution;
- unsigned long resolution_num;
- unsigned long resolution_den;
- unsigned char reserved[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned long resolution_num;
+  unsigned long resolution_den;
+  unsigned char reserved[32];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_select {
- struct snd_timer_id id;
- unsigned char reserved[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct snd_timer_id id;
+  unsigned char reserved[32];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_info {
- unsigned int flags;
- int card;
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char id[64];
- unsigned char name[80];
- unsigned long reserved0;
- unsigned long resolution;
+  unsigned char name[80];
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned char reserved[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[64];
 };
-#define SNDRV_TIMER_PSFLG_AUTO (1<<0)
-#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1<<1)
+#define SNDRV_TIMER_PSFLG_AUTO (1 << 0)
+#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1 << 1)
+#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1<<2)
 struct snd_timer_params {
- unsigned int flags;
- unsigned int ticks;
+  unsigned int flags;
+  unsigned int ticks;
+  unsigned int queue_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int queue_size;
- unsigned int reserved0;
- unsigned int filter;
- unsigned char reserved[60];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int reserved0;
+  unsigned int filter;
+  unsigned char reserved[60];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_status {
- struct timespec tstamp;
- unsigned int resolution;
+  struct timespec tstamp;
+  unsigned int resolution;
+  unsigned int lost;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int lost;
- unsigned int overrun;
- unsigned int queue;
- unsigned char reserved[64];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int overrun;
+  unsigned int queue;
+  unsigned char reserved[64];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int)
 #define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id)
 #define SNDRV_TIMER_IOCTL_TREAD _IOW('T', 0x02, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_GINFO _IOWR('T', 0x03, struct snd_timer_ginfo)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_GPARAMS _IOW('T', 0x04, struct snd_timer_gparams)
 #define SNDRV_TIMER_IOCTL_GSTATUS _IOWR('T', 0x05, struct snd_timer_gstatus)
 #define SNDRV_TIMER_IOCTL_SELECT _IOW('T', 0x10, struct snd_timer_select)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_INFO _IOR('T', 0x11, struct snd_timer_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_PARAMS _IOW('T', 0x12, struct snd_timer_params)
 #define SNDRV_TIMER_IOCTL_STATUS _IOR('T', 0x14, struct snd_timer_status)
 #define SNDRV_TIMER_IOCTL_START _IO('T', 0xa0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_STOP _IO('T', 0xa1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2)
 #define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3)
 struct snd_timer_read {
+  unsigned int resolution;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int resolution;
- unsigned int ticks;
+  unsigned int ticks;
 };
 enum {
+  SNDRV_TIMER_EVENT_RESOLUTION = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_RESOLUTION = 0,
- SNDRV_TIMER_EVENT_TICK,
- SNDRV_TIMER_EVENT_START,
- SNDRV_TIMER_EVENT_STOP,
+  SNDRV_TIMER_EVENT_TICK,
+  SNDRV_TIMER_EVENT_START,
+  SNDRV_TIMER_EVENT_STOP,
+  SNDRV_TIMER_EVENT_CONTINUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_CONTINUE,
- SNDRV_TIMER_EVENT_PAUSE,
- SNDRV_TIMER_EVENT_EARLY,
- SNDRV_TIMER_EVENT_SUSPEND,
+  SNDRV_TIMER_EVENT_PAUSE,
+  SNDRV_TIMER_EVENT_EARLY,
+  SNDRV_TIMER_EVENT_SUSPEND,
+  SNDRV_TIMER_EVENT_RESUME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_RESUME,
- SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
- SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
- SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,
+  SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
+  SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
+  SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,
+  SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,
- SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,
- SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
+  SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,
+  SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_tread {
- int event;
- struct timespec tstamp;
- unsigned int val;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int event;
+  struct timespec tstamp;
+  unsigned int val;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7)
 struct snd_ctl_card_info {
- int card;
+  int card;
+  int pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pad;
- unsigned char id[16];
- unsigned char driver[16];
- unsigned char name[32];
+  unsigned char id[16];
+  unsigned char driver[16];
+  unsigned char name[32];
+  unsigned char longname[80];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char longname[80];
- unsigned char reserved_[16];
- unsigned char mixername[80];
- unsigned char components[128];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char reserved_[16];
+  unsigned char mixername[80];
+  unsigned char components[128];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __bitwise snd_ctl_elem_type_t;
 #define SNDRV_CTL_ELEM_TYPE_NONE ((__force snd_ctl_elem_type_t) 0)
 #define SNDRV_CTL_ELEM_TYPE_BOOLEAN ((__force snd_ctl_elem_type_t) 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_INTEGER ((__force snd_ctl_elem_type_t) 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_ENUMERATED ((__force snd_ctl_elem_type_t) 3)
 #define SNDRV_CTL_ELEM_TYPE_BYTES ((__force snd_ctl_elem_type_t) 4)
 #define SNDRV_CTL_ELEM_TYPE_IEC958 ((__force snd_ctl_elem_type_t) 5)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_INTEGER64 ((__force snd_ctl_elem_type_t) 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_LAST SNDRV_CTL_ELEM_TYPE_INTEGER64
 typedef int __bitwise snd_ctl_elem_iface_t;
 #define SNDRV_CTL_ELEM_IFACE_CARD ((__force snd_ctl_elem_iface_t) 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_HWDEP ((__force snd_ctl_elem_iface_t) 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_MIXER ((__force snd_ctl_elem_iface_t) 2)
 #define SNDRV_CTL_ELEM_IFACE_PCM ((__force snd_ctl_elem_iface_t) 3)
 #define SNDRV_CTL_ELEM_IFACE_RAWMIDI ((__force snd_ctl_elem_iface_t) 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_TIMER ((__force snd_ctl_elem_iface_t) 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_SEQUENCER ((__force snd_ctl_elem_iface_t) 6)
 #define SNDRV_CTL_ELEM_IFACE_LAST SNDRV_CTL_ELEM_IFACE_SEQUENCER
-#define SNDRV_CTL_ELEM_ACCESS_READ (1<<0)
+#define SNDRV_CTL_ELEM_ACCESS_READ (1 << 0)
+#define SNDRV_CTL_ELEM_ACCESS_WRITE (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_WRITE (1<<1)
-#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE)
-#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1<<2)
-#define SNDRV_CTL_ELEM_ACCESS_TIMESTAMP (1<<3)
+#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1 << 2)
+#define SNDRV_CTL_ELEM_ACCESS_TIMESTAMP (1 << 3)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1<<4)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1<<5)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ|SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1<<6)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1 << 5)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ | SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1 << 6)
+#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1 << 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8)
-#define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9)
-#define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1<<28)
+#define SNDRV_CTL_ELEM_ACCESS_LOCK (1 << 9)
+#define SNDRV_CTL_ELEM_ACCESS_OWNER (1 << 10)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1 << 28)
+#define SNDRV_CTL_ELEM_ACCESS_USER (1 << 29)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_USER (1<<29)
 #define SNDRV_CTL_POWER_D0 0x0000
 #define SNDRV_CTL_POWER_D1 0x0100
 #define SNDRV_CTL_POWER_D2 0x0200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_POWER_D3 0x0300
-#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3|0x0000)
-#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3|0x0001)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3 | 0x0000)
+#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3 | 0x0001)
 #define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_id {
- unsigned int numid;
- snd_ctl_elem_iface_t iface;
- unsigned int device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int subdevice;
- unsigned char name[44];
- unsigned int index;
+  unsigned int numid;
+  snd_ctl_elem_iface_t iface;
+  unsigned int device;
+  unsigned int subdevice;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char name[44];
+  unsigned int index;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_list {
- unsigned int offset;
- unsigned int space;
- unsigned int used;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int count;
- struct snd_ctl_elem_id __user *pids;
- unsigned char reserved[50];
+  unsigned int offset;
+  unsigned int space;
+  unsigned int used;
+  unsigned int count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct snd_ctl_elem_id __user * pids;
+  unsigned char reserved[50];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_info {
- struct snd_ctl_elem_id id;
- snd_ctl_elem_type_t type;
- unsigned int access;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int count;
- __kernel_pid_t owner;
- union {
- struct {
+  struct snd_ctl_elem_id id;
+  snd_ctl_elem_type_t type;
+  unsigned int access;
+  unsigned int count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long min;
- long max;
- long step;
- } integer;
+  __kernel_pid_t owner;
+  union {
+    struct {
+      long min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- long long min;
- long long max;
- long long step;
+      long max;
+      long step;
+    } integer;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } integer64;
- struct {
- unsigned int items;
- unsigned int item;
+      long long min;
+      long long max;
+      long long step;
+    } integer64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[64];
- __u64 names_ptr;
- unsigned int names_length;
- } enumerated;
+    struct {
+      unsigned int items;
+      unsigned int item;
+      char name[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[128];
- } value;
- union {
- unsigned short d[4];
+      __u64 names_ptr;
+      unsigned int names_length;
+    } enumerated;
+    unsigned char reserved[128];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short *d_ptr;
- } dimen;
- unsigned char reserved[64-4*sizeof(unsigned short)];
+  } value;
+  union {
+    unsigned short d[4];
+    unsigned short * d_ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } dimen;
+  unsigned char reserved[64 - 4 * sizeof(unsigned short)];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_value {
- struct snd_ctl_elem_id id;
- unsigned int indirect: 1;
- union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- long value[128];
- long *value_ptr;
- } integer;
+  struct snd_ctl_elem_id id;
+  unsigned int indirect : 1;
+  union {
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- long long value[64];
- long long *value_ptr;
- } integer64;
+      long value[128];
+      long * value_ptr;
+    } integer;
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- unsigned int item[128];
- unsigned int *item_ptr;
- } enumerated;
+      long long value[64];
+      long long * value_ptr;
+    } integer64;
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- unsigned char data[512];
- unsigned char *data_ptr;
- } bytes;
+      unsigned int item[128];
+      unsigned int * item_ptr;
+    } enumerated;
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_aes_iec958 iec958;
- } value;
- struct timespec tstamp;
- unsigned char reserved[128-sizeof(struct timespec)];
+      unsigned char data[512];
+      unsigned char * data_ptr;
+    } bytes;
+    struct snd_aes_iec958 iec958;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } value;
+  struct timespec tstamp;
+  unsigned char reserved[128 - sizeof(struct timespec)];
 };
-struct snd_ctl_tlv {
- unsigned int numid;
- unsigned int length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tlv[0];
+struct snd_ctl_tlv {
+  unsigned int numid;
+  unsigned int length;
+  unsigned int tlv[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_LIST _IOWR('U', 0x10, struct snd_ctl_elem_list)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_INFO _IOWR('U', 0x11, struct snd_ctl_elem_info)
 #define SNDRV_CTL_IOCTL_ELEM_READ _IOWR('U', 0x12, struct snd_ctl_elem_value)
 #define SNDRV_CTL_IOCTL_ELEM_WRITE _IOWR('U', 0x13, struct snd_ctl_elem_value)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_LOCK _IOW('U', 0x14, struct snd_ctl_elem_id)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_UNLOCK _IOW('U', 0x15, struct snd_ctl_elem_id)
 #define SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS _IOWR('U', 0x16, int)
 #define SNDRV_CTL_IOCTL_ELEM_ADD _IOWR('U', 0x17, struct snd_ctl_elem_info)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_REPLACE _IOWR('U', 0x18, struct snd_ctl_elem_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_REMOVE _IOWR('U', 0x19, struct snd_ctl_elem_id)
 #define SNDRV_CTL_IOCTL_TLV_READ _IOWR('U', 0x1a, struct snd_ctl_tlv)
 #define SNDRV_CTL_IOCTL_TLV_WRITE _IOWR('U', 0x1b, struct snd_ctl_tlv)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_TLV_COMMAND _IOWR('U', 0x1c, struct snd_ctl_tlv)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE _IOWR('U', 0x20, int)
 #define SNDRV_CTL_IOCTL_HWDEP_INFO _IOR('U', 0x21, struct snd_hwdep_info)
 #define SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE _IOR('U', 0x30, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_PCM_INFO _IOWR('U', 0x31, struct snd_pcm_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE _IOW('U', 0x32, int)
 #define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)
 #define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)
 #define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)
 enum sndrv_ctl_event_type {
+  SNDRV_CTL_EVENT_ELEM = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CTL_EVENT_ELEM = 0,
- SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,
+  SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,
 };
-#define SNDRV_CTL_EVENT_MASK_VALUE (1<<0)
+#define SNDRV_CTL_EVENT_MASK_VALUE (1 << 0)
+#define SNDRV_CTL_EVENT_MASK_INFO (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_EVENT_MASK_INFO (1<<1)
-#define SNDRV_CTL_EVENT_MASK_ADD (1<<2)
-#define SNDRV_CTL_EVENT_MASK_TLV (1<<3)
+#define SNDRV_CTL_EVENT_MASK_ADD (1 << 2)
+#define SNDRV_CTL_EVENT_MASK_TLV (1 << 3)
 #define SNDRV_CTL_EVENT_MASK_REMOVE (~0U)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_event {
- int type;
- union {
- struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int mask;
- struct snd_ctl_elem_id id;
- } elem;
- unsigned char data8[60];
+  int type;
+  union {
+    struct {
+      unsigned int mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } data;
+      struct snd_ctl_elem_id id;
+    } elem;
+    unsigned char data8[60];
+  } data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_CTL_NAME_NONE ""
 #define SNDRV_CTL_NAME_PLAYBACK "Playback "
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_CAPTURE "Capture "
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_NONE ""
 #define SNDRV_CTL_NAME_IEC958_SWITCH "Switch"
 #define SNDRV_CTL_NAME_IEC958_VOLUME "Volume"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_DEFAULT "Default"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_MASK "Mask"
 #define SNDRV_CTL_NAME_IEC958_CON_MASK "Con Mask"
 #define SNDRV_CTL_NAME_IEC958_PRO_MASK "Pro Mask"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_PCM_STREAM "PCM Stream"
-#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_##direction SNDRV_CTL_NAME_IEC958_##what
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_ ##direction SNDRV_CTL_NAME_IEC958_ ##what
 #endif
diff --git a/libc/kernel/uapi/sound/asound_fm.h b/libc/kernel/uapi/sound/asound_fm.h
index 51a03f1..0819efe 100644
--- a/libc/kernel/uapi/sound/asound_fm.h
+++ b/libc/kernel/uapi/sound/asound_fm.h
@@ -22,58 +22,58 @@
 #define SNDRV_DM_FM_MODE_OPL3 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_dm_fm_info {
- unsigned char fm_mode;
- unsigned char rhythm;
+  unsigned char fm_mode;
+  unsigned char rhythm;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_dm_fm_voice {
- unsigned char op;
- unsigned char voice;
- unsigned char am;
+  unsigned char op;
+  unsigned char voice;
+  unsigned char am;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char vibrato;
- unsigned char do_sustain;
- unsigned char kbd_scale;
- unsigned char harmonic;
+  unsigned char vibrato;
+  unsigned char do_sustain;
+  unsigned char kbd_scale;
+  unsigned char harmonic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char scale_level;
- unsigned char volume;
- unsigned char attack;
- unsigned char decay;
+  unsigned char scale_level;
+  unsigned char volume;
+  unsigned char attack;
+  unsigned char decay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char sustain;
- unsigned char release;
- unsigned char feedback;
- unsigned char connection;
+  unsigned char sustain;
+  unsigned char release;
+  unsigned char feedback;
+  unsigned char connection;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char left;
- unsigned char right;
- unsigned char waveform;
+  unsigned char left;
+  unsigned char right;
+  unsigned char waveform;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_dm_fm_note {
- unsigned char voice;
- unsigned char octave;
- unsigned int fnum;
+  unsigned char voice;
+  unsigned char octave;
+  unsigned int fnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char key_on;
+  unsigned char key_on;
 };
 struct snd_dm_fm_params {
- unsigned char am_depth;
+  unsigned char am_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char vib_depth;
- unsigned char kbd_split;
- unsigned char rhythm;
- unsigned char bass;
+  unsigned char vib_depth;
+  unsigned char kbd_split;
+  unsigned char rhythm;
+  unsigned char bass;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char snare;
- unsigned char tomtom;
- unsigned char cymbal;
- unsigned char hihat;
+  unsigned char snare;
+  unsigned char tomtom;
+  unsigned char cymbal;
+  unsigned char hihat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, struct snd_dm_fm_info)
-#define SNDRV_DM_FM_IOCTL_RESET _IO ('H', 0x21)
+#define SNDRV_DM_FM_IOCTL_RESET _IO('H', 0x21)
 #define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, struct snd_dm_fm_note)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, struct snd_dm_fm_voice)
@@ -81,7 +81,7 @@
 #define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
 #define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO ('H', 0x40)
+#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO('H', 0x40)
 #define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
 #define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
 #define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE 0x22
@@ -94,13 +94,13 @@
 #define FM_KEY_2OP "2OP\032"
 #define FM_KEY_4OP "4OP\032"
 struct sbi_patch {
- unsigned char prog;
+  unsigned char prog;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char bank;
- char key[4];
- char name[25];
- char extension[7];
+  unsigned char bank;
+  char key[4];
+  char name[25];
+  char extension[7];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char data[32];
+  unsigned char data[32];
 };
 #endif
diff --git a/libc/kernel/uapi/sound/compress_offload.h b/libc/kernel/uapi/sound/compress_offload.h
index 5b06741..8928cbf 100644
--- a/libc/kernel/uapi/sound/compress_offload.h
+++ b/libc/kernel/uapi/sound/compress_offload.h
@@ -24,72 +24,72 @@
 #include <sound/compress_params.h>
 #define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 2)
 struct snd_compressed_buffer {
- __u32 fragment_size;
+  __u32 fragment_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fragments;
-};
+  __u32 fragments;
+} __attribute__((packed, aligned(4)));
 struct snd_compr_params {
- struct snd_compressed_buffer buffer;
+  struct snd_compressed_buffer buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_codec codec;
- __u8 no_wake_mode;
-};
+  struct snd_codec codec;
+  __u8 no_wake_mode;
+} __attribute__((packed, aligned(4)));
 struct snd_compr_tstamp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 byte_offset;
- __u32 copied_total;
- __u32 pcm_frames;
- __u32 pcm_io_frames;
+  __u32 byte_offset;
+  __u32 copied_total;
+  __u32 pcm_frames;
+  __u32 pcm_io_frames;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sampling_rate;
-};
+  __u32 sampling_rate;
+} __attribute__((packed, aligned(4)));
 struct snd_compr_avail {
- __u64 avail;
+  __u64 avail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_compr_tstamp tstamp;
-};
+  struct snd_compr_tstamp tstamp;
+} __attribute__((packed, aligned(4)));
 enum snd_compr_direction {
- SND_COMPRESS_PLAYBACK = 0,
+  SND_COMPRESS_PLAYBACK = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SND_COMPRESS_CAPTURE
+  SND_COMPRESS_CAPTURE
 };
 struct snd_compr_caps {
- __u32 num_codecs;
+  __u32 num_codecs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 direction;
- __u32 min_fragment_size;
- __u32 max_fragment_size;
- __u32 min_fragments;
+  __u32 direction;
+  __u32 min_fragment_size;
+  __u32 max_fragment_size;
+  __u32 min_fragments;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_fragments;
- __u32 codecs[MAX_NUM_CODECS];
- __u32 reserved[11];
-};
+  __u32 max_fragments;
+  __u32 codecs[MAX_NUM_CODECS];
+  __u32 reserved[11];
+} __attribute__((packed, aligned(4)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_compr_codec_caps {
- __u32 codec;
- __u32 num_descriptors;
- struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
+  __u32 codec;
+  __u32 num_descriptors;
+  struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
+} __attribute__((packed, aligned(4)));
 enum {
- SNDRV_COMPRESS_ENCODER_PADDING = 1,
- SNDRV_COMPRESS_ENCODER_DELAY = 2,
+  SNDRV_COMPRESS_ENCODER_PADDING = 1,
+  SNDRV_COMPRESS_ENCODER_DELAY = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_compr_metadata {
- __u32 key;
- __u32 value[8];
+  __u32 key;
+  __u32 value[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
+} __attribute__((packed, aligned(4)));
 #define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int)
 #define SNDRV_COMPRESS_GET_CAPS _IOWR('C', 0x10, struct snd_compr_caps)
-#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11,  struct snd_compr_codec_caps)
+#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11, struct snd_compr_codec_caps)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params)
 #define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec)
-#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14,  struct snd_compr_metadata)
-#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15,  struct snd_compr_metadata)
+#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14, struct snd_compr_metadata)
+#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15, struct snd_compr_metadata)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp)
 #define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail)
diff --git a/libc/kernel/uapi/sound/compress_params.h b/libc/kernel/uapi/sound/compress_params.h
index 8aa0bfe..b1703dc 100644
--- a/libc/kernel/uapi/sound/compress_params.h
+++ b/libc/kernel/uapi/sound/compress_params.h
@@ -171,75 +171,75 @@
 #define SND_RATECONTROLMODE_VARIABLEBITRATE ((__u32) 0x00000002)
 struct snd_enc_wma {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 super_block_align;
+  __u32 super_block_align;
 };
 struct snd_enc_vorbis {
- __s32 quality;
+  __s32 quality;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 managed;
- __u32 max_bit_rate;
- __u32 min_bit_rate;
- __u32 downmix;
+  __u32 managed;
+  __u32 max_bit_rate;
+  __u32 min_bit_rate;
+  __u32 downmix;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
+} __attribute__((packed, aligned(4)));
 struct snd_enc_real {
- __u32 quant_bits;
- __u32 start_region;
+  __u32 quant_bits;
+  __u32 start_region;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_regions;
-};
+  __u32 num_regions;
+} __attribute__((packed, aligned(4)));
 struct snd_enc_flac {
- __u32 num;
+  __u32 num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gain;
-};
+  __u32 gain;
+} __attribute__((packed, aligned(4)));
 struct snd_enc_generic {
- __u32 bw;
+  __u32 bw;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 reserved[15];
-};
+  __s32 reserved[15];
+} __attribute__((packed, aligned(4)));
 union snd_codec_options {
- struct snd_enc_wma wma;
+  struct snd_enc_wma wma;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_enc_vorbis vorbis;
- struct snd_enc_real real;
- struct snd_enc_flac flac;
- struct snd_enc_generic generic;
+  struct snd_enc_vorbis vorbis;
+  struct snd_enc_real real;
+  struct snd_enc_flac flac;
+  struct snd_enc_generic generic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
+} __attribute__((packed, aligned(4)));
 struct snd_codec_desc {
- __u32 max_ch;
- __u32 sample_rates[MAX_NUM_SAMPLE_RATES];
+  __u32 max_ch;
+  __u32 sample_rates[MAX_NUM_SAMPLE_RATES];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_sample_rates;
- __u32 bit_rate[MAX_NUM_BITRATES];
- __u32 num_bitrates;
- __u32 rate_control;
+  __u32 num_sample_rates;
+  __u32 bit_rate[MAX_NUM_BITRATES];
+  __u32 num_bitrates;
+  __u32 rate_control;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 profiles;
- __u32 modes;
- __u32 formats;
- __u32 min_buffer;
+  __u32 profiles;
+  __u32 modes;
+  __u32 formats;
+  __u32 min_buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[15];
-};
+  __u32 reserved[15];
+} __attribute__((packed, aligned(4)));
 struct snd_codec {
- __u32 id;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ch_in;
- __u32 ch_out;
- __u32 sample_rate;
- __u32 bit_rate;
+  __u32 ch_in;
+  __u32 ch_out;
+  __u32 sample_rate;
+  __u32 bit_rate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rate_control;
- __u32 profile;
- __u32 level;
- __u32 ch_mode;
+  __u32 rate_control;
+  __u32 profile;
+  __u32 level;
+  __u32 ch_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 format;
- __u32 align;
- union snd_codec_options options;
- __u32 reserved[3];
+  __u32 format;
+  __u32 align;
+  union snd_codec_options options;
+  __u32 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-};
+} __attribute__((packed, aligned(4)));
 #endif
diff --git a/libc/kernel/uapi/sound/emu10k1.h b/libc/kernel/uapi/sound/emu10k1.h
index cbfc9f9..9701227 100644
--- a/libc/kernel/uapi/sound/emu10k1.h
+++ b/libc/kernel/uapi/sound/emu10k1.h
@@ -269,14 +269,14 @@
 #define TANKMEMADDRREG_WRITE 0x00200000
 #define TANKMEMADDRREG_READ 0x00100000
 struct snd_emu10k1_fx8010_info {
- unsigned int internal_tram_size;
+  unsigned int internal_tram_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int external_tram_size;
- char fxbus_names[16][32];
- char extin_names[16][32];
- char extout_names[32][32];
+  unsigned int external_tram_size;
+  char fxbus_names[16][32];
+  char extin_names[16][32];
+  char extout_names[32][32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int gpr_controls;
+  unsigned int gpr_controls;
 };
 #define EMU10K1_GPR_TRANSLATION_NONE 0
 #define EMU10K1_GPR_TRANSLATION_TABLE100 1
@@ -286,97 +286,97 @@
 #define EMU10K1_GPR_TRANSLATION_ONOFF 4
 struct snd_emu10k1_fx8010_control_gpr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_ctl_elem_id id;
- unsigned int vcount;
- unsigned int count;
- unsigned short gpr[32];
+  struct snd_ctl_elem_id id;
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int value[32];
- unsigned int min;
- unsigned int max;
- unsigned int translation;
+  unsigned int value[32];
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- const unsigned int *tlv;
+  const unsigned int * tlv;
 };
 struct snd_emu10k1_fx8010_control_old_gpr {
- struct snd_ctl_elem_id id;
+  struct snd_ctl_elem_id id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int vcount;
- unsigned int count;
- unsigned short gpr[32];
- unsigned int value[32];
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
+  unsigned int value[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int min;
- unsigned int max;
- unsigned int translation;
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_emu10k1_fx8010_code {
- char name[128];
- DECLARE_BITMAP(gpr_valid, 0x200);
- __u32 __user *gpr_map;
+  char name[128];
+  DECLARE_BITMAP(gpr_valid, 0x200);
+  __u32 __user * gpr_map;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int gpr_add_control_count;
- struct snd_emu10k1_fx8010_control_gpr __user *gpr_add_controls;
- unsigned int gpr_del_control_count;
- struct snd_ctl_elem_id __user *gpr_del_controls;
+  unsigned int gpr_add_control_count;
+  struct snd_emu10k1_fx8010_control_gpr __user * gpr_add_controls;
+  unsigned int gpr_del_control_count;
+  struct snd_ctl_elem_id __user * gpr_del_controls;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int gpr_list_control_count;
- unsigned int gpr_list_control_total;
- struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls;
- DECLARE_BITMAP(tram_valid, 0x100);
+  unsigned int gpr_list_control_count;
+  unsigned int gpr_list_control_total;
+  struct snd_emu10k1_fx8010_control_gpr __user * gpr_list_controls;
+  DECLARE_BITMAP(tram_valid, 0x100);
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __user *tram_data_map;
- __u32 __user *tram_addr_map;
- DECLARE_BITMAP(code_valid, 1024);
- __u32 __user *code;
+  __u32 __user * tram_data_map;
+  __u32 __user * tram_addr_map;
+  DECLARE_BITMAP(code_valid, 1024);
+  __u32 __user * code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_emu10k1_fx8010_tram {
- unsigned int address;
- unsigned int size;
+  unsigned int address;
+  unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int *samples;
+  unsigned int * samples;
 };
 struct snd_emu10k1_fx8010_pcm_rec {
- unsigned int substream;
+  unsigned int substream;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int res1;
- unsigned int channels;
- unsigned int tram_start;
- unsigned int buffer_size;
+  unsigned int res1;
+  unsigned int channels;
+  unsigned int tram_start;
+  unsigned int buffer_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short gpr_size;
- unsigned short gpr_ptr;
- unsigned short gpr_count;
- unsigned short gpr_tmpcount;
+  unsigned short gpr_size;
+  unsigned short gpr_ptr;
+  unsigned short gpr_count;
+  unsigned short gpr_tmpcount;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short gpr_trigger;
- unsigned short gpr_running;
- unsigned char pad;
- unsigned char etram[32];
+  unsigned short gpr_trigger;
+  unsigned short gpr_running;
+  unsigned char pad;
+  unsigned char etram[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int res2;
+  unsigned int res2;
 };
 #define SNDRV_EMU10K1_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
-#define SNDRV_EMU10K1_IOCTL_INFO _IOR ('H', 0x10, struct snd_emu10k1_fx8010_info)
+#define SNDRV_EMU10K1_IOCTL_INFO _IOR('H', 0x10, struct snd_emu10k1_fx8010_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW ('H', 0x11, struct snd_emu10k1_fx8010_code)
+#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW('H', 0x11, struct snd_emu10k1_fx8010_code)
 #define SNDRV_EMU10K1_IOCTL_CODE_PEEK _IOWR('H', 0x12, struct snd_emu10k1_fx8010_code)
-#define SNDRV_EMU10K1_IOCTL_TRAM_SETUP _IOW ('H', 0x20, int)
-#define SNDRV_EMU10K1_IOCTL_TRAM_POKE _IOW ('H', 0x21, struct snd_emu10k1_fx8010_tram)
+#define SNDRV_EMU10K1_IOCTL_TRAM_SETUP _IOW('H', 0x20, int)
+#define SNDRV_EMU10K1_IOCTL_TRAM_POKE _IOW('H', 0x21, struct snd_emu10k1_fx8010_tram)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_EMU10K1_IOCTL_TRAM_PEEK _IOWR('H', 0x22, struct snd_emu10k1_fx8010_tram)
-#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW ('H', 0x30, struct snd_emu10k1_fx8010_pcm_rec)
+#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW('H', 0x30, struct snd_emu10k1_fx8010_pcm_rec)
 #define SNDRV_EMU10K1_IOCTL_PCM_PEEK _IOWR('H', 0x31, struct snd_emu10k1_fx8010_pcm_rec)
-#define SNDRV_EMU10K1_IOCTL_PVERSION _IOR ('H', 0x40, int)
+#define SNDRV_EMU10K1_IOCTL_PVERSION _IOR('H', 0x40, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_EMU10K1_IOCTL_STOP _IO ('H', 0x80)
-#define SNDRV_EMU10K1_IOCTL_CONTINUE _IO ('H', 0x81)
-#define SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER _IO ('H', 0x82)
-#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW ('H', 0x83, int)
+#define SNDRV_EMU10K1_IOCTL_STOP _IO('H', 0x80)
+#define SNDRV_EMU10K1_IOCTL_CONTINUE _IO('H', 0x81)
+#define SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER _IO('H', 0x82)
+#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW('H', 0x83, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR ('H', 0x84, int)
+#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR('H', 0x84, int)
 typedef struct snd_emu10k1_fx8010_info emu10k1_fx8010_info_t;
 typedef struct snd_emu10k1_fx8010_control_gpr emu10k1_fx8010_control_gpr_t;
 typedef struct snd_emu10k1_fx8010_code emu10k1_fx8010_code_t;
diff --git a/libc/kernel/uapi/sound/firewire.h b/libc/kernel/uapi/sound/firewire.h
index 5d0fd14..7965fc4 100644
--- a/libc/kernel/uapi/sound/firewire.h
+++ b/libc/kernel/uapi/sound/firewire.h
@@ -19,40 +19,63 @@
 #ifndef _UAPI_SOUND_FIREWIRE_H_INCLUDED
 #define _UAPI_SOUND_FIREWIRE_H_INCLUDED
 #include <linux/ioctl.h>
+#include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_FIREWIRE_EVENT_LOCK_STATUS 0x000010cc
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_FIREWIRE_EVENT_DICE_NOTIFICATION 0xd1ce004e
+#define SNDRV_FIREWIRE_EVENT_EFW_RESPONSE 0x4e617475
 struct snd_firewire_event_common {
- unsigned int type;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int type;
+};
 struct snd_firewire_event_lock_status {
- unsigned int type;
- unsigned int status;
+  unsigned int type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int status;
+};
+struct snd_firewire_event_dice_notification {
+  unsigned int type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int notification;
+};
+#define SND_EFW_TRANSACTION_USER_SEQNUM_MAX ((__u32) ((__u16) ~0) - 1)
+struct snd_efw_transaction {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be32 length;
+  __be32 version;
+  __be32 seqnum;
+  __be32 category;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __be32 command;
+  __be32 status;
+  __be32 params[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct snd_firewire_event_dice_notification {
- unsigned int type;
- unsigned int notification;
+struct snd_firewire_event_efw_response {
+  unsigned int type;
+  __be32 response[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union snd_firewire_event {
- struct snd_firewire_event_common common;
- struct snd_firewire_event_lock_status lock_status;
- struct snd_firewire_event_dice_notification dice_notification;
+  struct snd_firewire_event_common common;
+  struct snd_firewire_event_lock_status lock_status;
+  struct snd_firewire_event_dice_notification dice_notification;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct snd_firewire_event_efw_response efw_response;
 };
 #define SNDRV_FIREWIRE_IOCTL_GET_INFO _IOR('H', 0xf8, struct snd_firewire_get_info)
 #define SNDRV_FIREWIRE_IOCTL_LOCK _IO('H', 0xf9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_FIREWIRE_IOCTL_UNLOCK _IO('H', 0xfa)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_FIREWIRE_TYPE_DICE 1
-struct snd_firewire_get_info {
- unsigned int type;
- unsigned int card;
+#define SNDRV_FIREWIRE_TYPE_FIREWORKS 2
+#define SNDRV_FIREWIRE_TYPE_BEBOB 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char guid[8];
- char device_name[16];
+struct snd_firewire_get_info {
+  unsigned int type;
+  unsigned int card;
+  unsigned char guid[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char device_name[16];
 };
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/sound/hdsp.h b/libc/kernel/uapi/sound/hdsp.h
index 81855b7..d2155e4 100644
--- a/libc/kernel/uapi/sound/hdsp.h
+++ b/libc/kernel/uapi/sound/hdsp.h
@@ -22,78 +22,78 @@
 #define HDSP_MATRIX_MIXER_SIZE 2048
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum HDSP_IO_Type {
- Digiface,
- Multiface,
- H9652,
+  Digiface,
+  Multiface,
+  H9652,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- H9632,
- RPM,
- Undefined,
+  H9632,
+  RPM,
+  Undefined,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdsp_peak_rms {
- __u32 input_peaks[26];
- __u32 playback_peaks[26];
- __u32 output_peaks[28];
+  __u32 input_peaks[26];
+  __u32 playback_peaks[26];
+  __u32 output_peaks[28];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 input_rms[26];
- __u64 playback_rms[26];
- __u64 output_rms[26];
+  __u64 input_rms[26];
+  __u64 playback_rms[26];
+  __u64 output_rms[26];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, struct hdsp_peak_rms)
 struct hdsp_config_info {
- unsigned char pref_sync_ref;
- unsigned char wordclock_sync_check;
+  unsigned char pref_sync_ref;
+  unsigned char wordclock_sync_check;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char spdif_sync_check;
- unsigned char adatsync_sync_check;
- unsigned char adat_sync_check[3];
- unsigned char spdif_in;
+  unsigned char spdif_sync_check;
+  unsigned char adatsync_sync_check;
+  unsigned char adat_sync_check[3];
+  unsigned char spdif_in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char spdif_out;
- unsigned char spdif_professional;
- unsigned char spdif_emphasis;
- unsigned char spdif_nonaudio;
+  unsigned char spdif_out;
+  unsigned char spdif_professional;
+  unsigned char spdif_emphasis;
+  unsigned char spdif_nonaudio;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int spdif_sample_rate;
- unsigned int system_sample_rate;
- unsigned int autosync_sample_rate;
- unsigned char system_clock_mode;
+  unsigned int spdif_sample_rate;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
+  unsigned char system_clock_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char clock_source;
- unsigned char autosync_ref;
- unsigned char line_out;
- unsigned char passthru;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
+  unsigned char passthru;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char da_gain;
- unsigned char ad_gain;
- unsigned char phone_gain;
- unsigned char xlr_breakout_cable;
+  unsigned char da_gain;
+  unsigned char ad_gain;
+  unsigned char phone_gain;
+  unsigned char xlr_breakout_cable;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char analog_extension_board;
+  unsigned char analog_extension_board;
 };
 #define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, struct hdsp_config_info)
 struct hdsp_firmware {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *firmware_data;
+  void __user * firmware_data;
 };
 #define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, struct hdsp_firmware)
 struct hdsp_version {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum HDSP_IO_Type io_type;
- unsigned short firmware_rev;
+  enum HDSP_IO_Type io_type;
+  unsigned short firmware_rev;
 };
 #define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, struct hdsp_version)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdsp_mixer {
- unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
+  unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
 };
 #define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdsp_mixer)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdsp_9632_aeb {
- int aebi;
- int aebo;
+  int aebi;
+  int aebo;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, struct hdsp_9632_aeb)
diff --git a/libc/kernel/uapi/sound/hdspm.h b/libc/kernel/uapi/sound/hdspm.h
index 8b3688f..16d03ba 100644
--- a/libc/kernel/uapi/sound/hdspm.h
+++ b/libc/kernel/uapi/sound/hdspm.h
@@ -21,157 +21,157 @@
 #define HDSPM_MAX_CHANNELS 64
 enum hdspm_io_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MADI,
- MADIface,
- AIO,
- AES32,
+  MADI,
+  MADIface,
+  AIO,
+  AES32,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RayDAT
+  RayDAT
 };
 enum hdspm_speed {
- ss,
+  ss,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ds,
- qs
+  ds,
+  qs
 };
 struct hdspm_peak_rms {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t input_peaks[64];
- uint32_t playback_peaks[64];
- uint32_t output_peaks[64];
- uint64_t input_rms[64];
+  uint32_t input_peaks[64];
+  uint32_t playback_peaks[64];
+  uint32_t output_peaks[64];
+  uint64_t input_rms[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t playback_rms[64];
- uint64_t output_rms[64];
- uint8_t speed;
- int status2;
+  uint64_t playback_rms[64];
+  uint64_t output_rms[64];
+  uint8_t speed;
+  int status2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS   _IOR('H', 0x42, struct hdspm_peak_rms)
+#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS _IOR('H', 0x42, struct hdspm_peak_rms)
 struct hdspm_config {
- unsigned char pref_sync_ref;
+  unsigned char pref_sync_ref;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char wordclock_sync_check;
- unsigned char madi_sync_check;
- unsigned int system_sample_rate;
- unsigned int autosync_sample_rate;
+  unsigned char wordclock_sync_check;
+  unsigned char madi_sync_check;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char system_clock_mode;
- unsigned char clock_source;
- unsigned char autosync_ref;
- unsigned char line_out;
+  unsigned char system_clock_mode;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int passthru;
- unsigned int analog_out;
+  unsigned int passthru;
+  unsigned int analog_out;
 };
-#define SNDRV_HDSPM_IOCTL_GET_CONFIG   _IOR('H', 0x41, struct hdspm_config)
+#define SNDRV_HDSPM_IOCTL_GET_CONFIG _IOR('H', 0x41, struct hdspm_config)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hdspm_ltc_format {
- format_invalid,
- fps_24,
- fps_25,
+  format_invalid,
+  fps_24,
+  fps_25,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fps_2997,
- fps_30
+  fps_2997,
+  fps_30
 };
 enum hdspm_ltc_frame {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- frame_invalid,
- drop_frame,
- full_frame
+  frame_invalid,
+  drop_frame,
+  full_frame
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hdspm_ltc_input_format {
- ntsc,
- pal,
- no_video
+  ntsc,
+  pal,
+  no_video
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct hdspm_ltc {
- unsigned int ltc;
- enum hdspm_ltc_format format;
+  unsigned int ltc;
+  enum hdspm_ltc_format format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum hdspm_ltc_frame frame;
- enum hdspm_ltc_input_format input_format;
+  enum hdspm_ltc_frame frame;
+  enum hdspm_ltc_input_format input_format;
 };
 #define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_ltc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hdspm_sync {
- hdspm_sync_no_lock = 0,
- hdspm_sync_lock = 1,
- hdspm_sync_sync = 2
+  hdspm_sync_no_lock = 0,
+  hdspm_sync_lock = 1,
+  hdspm_sync_sync = 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_madi_input {
- hdspm_input_optical = 0,
- hdspm_input_coax = 1
+  hdspm_input_optical = 0,
+  hdspm_input_coax = 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_madi_channel_format {
- hdspm_format_ch_64 = 0,
- hdspm_format_ch_56 = 1
+  hdspm_format_ch_64 = 0,
+  hdspm_format_ch_56 = 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_madi_frame_format {
- hdspm_frame_48 = 0,
- hdspm_frame_96 = 1
+  hdspm_frame_48 = 0,
+  hdspm_frame_96 = 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_syncsource {
- syncsource_wc = 0,
- syncsource_madi = 1,
+  syncsource_wc = 0,
+  syncsource_madi = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- syncsource_tco = 2,
- syncsource_sync = 3,
- syncsource_none = 4
+  syncsource_tco = 2,
+  syncsource_sync = 3,
+  syncsource_none = 4
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdspm_status {
- uint8_t card_type;
- enum hdspm_syncsource autosync_source;
- uint64_t card_clock;
+  uint8_t card_type;
+  enum hdspm_syncsource autosync_source;
+  uint64_t card_clock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t master_period;
- union {
- struct {
- uint8_t sync_wc;
+  uint32_t master_period;
+  union {
+    struct {
+      uint8_t sync_wc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t sync_madi;
- uint8_t sync_tco;
- uint8_t sync_in;
- uint8_t madi_input;
+      uint8_t sync_madi;
+      uint8_t sync_tco;
+      uint8_t sync_in;
+      uint8_t madi_input;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t channel_format;
- uint8_t frame_format;
- } madi;
- } card_specific;
+      uint8_t channel_format;
+      uint8_t frame_format;
+    } madi;
+  } card_specific;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define SNDRV_HDSPM_IOCTL_GET_STATUS   _IOR('H', 0x47, struct hdspm_status)
+#define SNDRV_HDSPM_IOCTL_GET_STATUS _IOR('H', 0x47, struct hdspm_status)
 #define HDSPM_ADDON_TCO 1
 struct hdspm_version {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t card_type;
- char cardname[20];
- unsigned int serial;
- unsigned short firmware_rev;
+  uint8_t card_type;
+  char cardname[20];
+  unsigned int serial;
+  unsigned short firmware_rev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int addons;
+  int addons;
 };
 #define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version)
 #define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdspm_channelfader {
- unsigned int in[HDSPM_MIXER_CHANNELS];
- unsigned int pb[HDSPM_MIXER_CHANNELS];
+  unsigned int in[HDSPM_MIXER_CHANNELS];
+  unsigned int pb[HDSPM_MIXER_CHANNELS];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdspm_mixer {
- struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
+  struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
 };
 struct hdspm_mixer_ioctl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct hdspm_mixer *mixer;
+  struct hdspm_mixer * mixer;
 };
 #define SNDRV_HDSPM_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdspm_mixer_ioctl)
 typedef struct hdspm_peak_rms hdspm_peak_rms_t;
diff --git a/libc/kernel/uapi/sound/sb16_csp.h b/libc/kernel/uapi/sound/sb16_csp.h
index 29c1a01..a02e6bc 100644
--- a/libc/kernel/uapi/sound/sb16_csp.h
+++ b/libc/kernel/uapi/sound/sb16_csp.h
@@ -48,38 +48,38 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE 0x3000
 struct snd_sb_csp_mc_header {
- char codec_name[16];
- unsigned short func_req;
+  char codec_name[16];
+  unsigned short func_req;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_sb_csp_microcode {
- struct snd_sb_csp_mc_header info;
- unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE];
+  struct snd_sb_csp_mc_header info;
+  unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_sb_csp_start {
- int sample_width;
- int channels;
+  int sample_width;
+  int channels;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_sb_csp_info {
- char codec_name[16];
- unsigned short func_nr;
+  char codec_name[16];
+  unsigned short func_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int acc_format;
- unsigned short acc_channels;
- unsigned short acc_width;
- unsigned short acc_rates;
+  unsigned int acc_format;
+  unsigned short acc_channels;
+  unsigned short acc_width;
+  unsigned short acc_rates;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short csp_mode;
- unsigned short run_channels;
- unsigned short run_width;
- unsigned short version;
+  unsigned short csp_mode;
+  unsigned short run_channels;
+  unsigned short run_width;
+  unsigned short version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short state;
+  unsigned short state;
 };
 #define SNDRV_SB_CSP_IOCTL_INFO _IOR('H', 0x10, struct snd_sb_csp_info)
-#define SNDRV_SB_CSP_IOCTL_LOAD_CODE   _IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode))
+#define SNDRV_SB_CSP_IOCTL_LOAD_CODE _IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SB_CSP_IOCTL_UNLOAD_CODE _IO('H', 0x12)
 #define SNDRV_SB_CSP_IOCTL_START _IOW('H', 0x13, struct snd_sb_csp_start)
diff --git a/libc/kernel/uapi/sound/sfnt_info.h b/libc/kernel/uapi/sound/sfnt_info.h
index abe6a55..e4d31c8 100644
--- a/libc/kernel/uapi/sound/sfnt_info.h
+++ b/libc/kernel/uapi/sound/sfnt_info.h
@@ -21,20 +21,20 @@
 #include <sound/asound.h>
 #ifdef SNDRV_BIG_ENDIAN
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_OSS_PATCHKEY(id) (0xfd00|id)
+#define SNDRV_OSS_PATCHKEY(id) (0xfd00 | id)
 #else
-#define SNDRV_OSS_PATCHKEY(id) ((id<<8)|0xfd)
+#define SNDRV_OSS_PATCHKEY(id) ((id << 8) | 0xfd)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct soundfont_patch_info {
- unsigned short key;
+  unsigned short key;
 #define SNDRV_OSS_SOUNDFONT_PATCH SNDRV_OSS_PATCHKEY(0x07)
- short device_no;
+  short device_no;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short sf_id;
- short optarg;
- int len;
- short type;
+  unsigned short sf_id;
+  short optarg;
+  int len;
+  short type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_LOAD_INFO 0
 #define SNDRV_SFNT_LOAD_DATA 1
@@ -46,59 +46,59 @@
 #define SNDRV_SFNT_PROBE_DATA 8
 #define SNDRV_SFNT_REMOVE_INFO 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short reserved;
+  short reserved;
 };
 #define SNDRV_SFNT_PATCH_NAME_LEN 32
 struct soundfont_open_parm {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short type;
+  unsigned short type;
 #define SNDRV_SFNT_PAT_TYPE_MISC 0
 #define SNDRV_SFNT_PAT_TYPE_GUS 6
 #define SNDRV_SFNT_PAT_TYPE_MAP 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_PAT_LOCKED 0x100
 #define SNDRV_SFNT_PAT_SHARED 0x200
- short reserved;
- char name[SNDRV_SFNT_PATCH_NAME_LEN];
+  short reserved;
+  char name[SNDRV_SFNT_PATCH_NAME_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct soundfont_voice_parm {
- unsigned short moddelay;
- unsigned short modatkhld;
+  unsigned short moddelay;
+  unsigned short modatkhld;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short moddcysus;
- unsigned short modrelease;
- short modkeyhold, modkeydecay;
- unsigned short voldelay;
+  unsigned short moddcysus;
+  unsigned short modrelease;
+  short modkeyhold, modkeydecay;
+  unsigned short voldelay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short volatkhld;
- unsigned short voldcysus;
- unsigned short volrelease;
- short volkeyhold, volkeydecay;
+  unsigned short volatkhld;
+  unsigned short voldcysus;
+  unsigned short volrelease;
+  short volkeyhold, volkeydecay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short lfo1delay;
- unsigned short lfo2delay;
- unsigned short pefe;
- unsigned short fmmod;
+  unsigned short lfo1delay;
+  unsigned short lfo2delay;
+  unsigned short pefe;
+  unsigned short fmmod;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short tremfrq;
- unsigned short fm2frq2;
- unsigned char cutoff;
- unsigned char filterQ;
+  unsigned short tremfrq;
+  unsigned short fm2frq2;
+  unsigned char cutoff;
+  unsigned char filterQ;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char chorus;
- unsigned char reverb;
- unsigned short reserved[4];
+  unsigned char chorus;
+  unsigned char reverb;
+  unsigned short reserved[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct soundfont_voice_info {
- unsigned short sf_id;
- unsigned short sample;
- int start, end;
+  unsigned short sf_id;
+  unsigned short sample;
+  int start, end;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int loopstart, loopend;
- short rate_offset;
- unsigned short mode;
+  int loopstart, loopend;
+  short rate_offset;
+  unsigned short mode;
 #define SNDRV_SFNT_MODE_ROMSOUND 0x8000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_MODE_STEREO 1
@@ -106,43 +106,43 @@
 #define SNDRV_SFNT_MODE_NORELEASE 4
 #define SNDRV_SFNT_MODE_INIT_PARM 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short root;
- short tune;
- unsigned char low, high;
- unsigned char vellow, velhigh;
+  short root;
+  short tune;
+  unsigned char low, high;
+  unsigned char vellow, velhigh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- signed char fixkey, fixvel;
- signed char pan, fixpan;
- short exclusiveClass;
- unsigned char amplitude;
+  signed char fixkey, fixvel;
+  signed char pan, fixpan;
+  short exclusiveClass;
+  unsigned char amplitude;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char attenuation;
- short scaleTuning;
- struct soundfont_voice_parm parm;
- unsigned short sample_mode;
+  unsigned char attenuation;
+  short scaleTuning;
+  struct soundfont_voice_parm parm;
+  unsigned short sample_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct soundfont_voice_rec_hdr {
- unsigned char bank;
- unsigned char instr;
+  unsigned char bank;
+  unsigned char instr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char nvoices;
- char write_mode;
+  char nvoices;
+  char write_mode;
 #define SNDRV_SFNT_WR_APPEND 0
 #define SNDRV_SFNT_WR_EXCLUSIVE 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_WR_REPLACE 2
 };
 struct soundfont_sample_info {
- unsigned short sf_id;
+  unsigned short sf_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short sample;
- int start, end;
- int loopstart, loopend;
- int size;
+  unsigned short sample;
+  int start, end;
+  int loopstart, loopend;
+  int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short dummy;
- unsigned short mode_flags;
+  short dummy;
+  unsigned short mode_flags;
 #define SNDRV_SFNT_SAMPLE_8BITS 1
 #define SNDRV_SFNT_SAMPLE_UNSIGNED 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -153,22 +153,22 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_SAMPLE_STEREO_RIGHT 64
 #define SNDRV_SFNT_SAMPLE_REVERSE_LOOP 128
- unsigned int truesize;
+  unsigned int truesize;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct soundfont_voice_map {
- int map_bank, map_instr, map_key;
- int src_bank, src_instr, src_key;
+  int map_bank, map_instr, map_key;
+  int src_bank, src_instr, src_key;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_EMUX_HWDEP_NAME "Emux WaveTable"
 #define SNDRV_EMUX_VERSION ((1 << 16) | (0 << 8) | 0)
 struct snd_emux_misc_mode {
- int port;
+  int port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int mode;
- int value;
- int value2;
+  int mode;
+  int value;
+  int value2;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_EMUX_IOCTL_VERSION _IOR('H', 0x80, unsigned int)
diff --git a/libc/kernel/uapi/video/adf.h b/libc/kernel/uapi/video/adf.h
index fe23e01..77203a58 100644
--- a/libc/kernel/uapi/video/adf.h
+++ b/libc/kernel/uapi/video/adf.h
@@ -27,137 +27,137 @@
 #define ADF_MAX_CUSTOM_DATA_SIZE 4096
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum adf_interface_type {
- ADF_INTF_DSI = 0,
- ADF_INTF_eDP = 1,
- ADF_INTF_DPI = 2,
+  ADF_INTF_DSI = 0,
+  ADF_INTF_eDP = 1,
+  ADF_INTF_DPI = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ADF_INTF_VGA = 3,
- ADF_INTF_DVI = 4,
- ADF_INTF_HDMI = 5,
- ADF_INTF_MEMORY = 6,
+  ADF_INTF_VGA = 3,
+  ADF_INTF_DVI = 4,
+  ADF_INTF_HDMI = 5,
+  ADF_INTF_MEMORY = 6,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ADF_INTF_TYPE_DEVICE_CUSTOM = 128,
- ADF_INTF_TYPE_MAX = (~(__u32)0),
+  ADF_INTF_TYPE_DEVICE_CUSTOM = 128,
+  ADF_INTF_TYPE_MAX = (~(__u32) 0),
 };
 #define ADF_INTF_FLAG_PRIMARY (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADF_INTF_FLAG_EXTERNAL (1 << 1)
 enum adf_event_type {
- ADF_EVENT_VSYNC = 0,
- ADF_EVENT_HOTPLUG = 1,
+  ADF_EVENT_VSYNC = 0,
+  ADF_EVENT_HOTPLUG = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ADF_EVENT_DEVICE_CUSTOM = 128,
- ADF_EVENT_TYPE_MAX = 255,
+  ADF_EVENT_DEVICE_CUSTOM = 128,
+  ADF_EVENT_TYPE_MAX = 255,
 };
 struct adf_set_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u8 enabled;
+  __u8 type;
+  __u8 enabled;
 };
 struct adf_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 type;
- __u32 length;
+  __u8 type;
+  __u32 length;
 };
 struct adf_vsync_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct adf_event base;
- __aligned_u64 timestamp;
+  struct adf_event base;
+  __aligned_u64 timestamp;
 };
 struct adf_hotplug_event {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct adf_event base;
- __u8 connected;
+  struct adf_event base;
+  __u8 connected;
 };
 #define ADF_MAX_PLANES 4
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct adf_buffer_config {
- __u32 overlay_engine;
- __u32 w;
- __u32 h;
+  __u32 overlay_engine;
+  __u32 w;
+  __u32 h;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 format;
- __s32 fd[ADF_MAX_PLANES];
- __u32 offset[ADF_MAX_PLANES];
- __u32 pitch[ADF_MAX_PLANES];
+  __u32 format;
+  __s32 fd[ADF_MAX_PLANES];
+  __u32 offset[ADF_MAX_PLANES];
+  __u32 pitch[ADF_MAX_PLANES];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 n_planes;
- __s32 acquire_fence;
+  __u8 n_planes;
+  __s32 acquire_fence;
 };
 #define ADF_MAX_BUFFERS (4096 / sizeof(struct adf_buffer_config))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct adf_post_config {
- size_t n_interfaces;
- __u32 __user *interfaces;
- size_t n_bufs;
+  size_t n_interfaces;
+  __u32 __user * interfaces;
+  size_t n_bufs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct adf_buffer_config __user *bufs;
- size_t custom_data_size;
- void __user *custom_data;
- __s32 complete_fence;
+  struct adf_buffer_config __user * bufs;
+  size_t custom_data_size;
+  void __user * custom_data;
+  __s32 complete_fence;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define ADF_MAX_INTERFACES (4096 / sizeof(__u32))
 struct adf_simple_buffer_alloc {
- __u16 w;
+  __u16 w;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 h;
- __u32 format;
- __s32 fd;
- __u32 offset;
+  __u16 h;
+  __u32 format;
+  __s32 fd;
+  __u32 offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 pitch;
+  __u32 pitch;
 };
 struct adf_simple_post_config {
- struct adf_buffer_config buf;
+  struct adf_buffer_config buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 complete_fence;
+  __s32 complete_fence;
 };
 struct adf_attachment_config {
- __u32 overlay_engine;
+  __u32 overlay_engine;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 interface;
+  __u32 interface;
 };
 struct adf_device_data {
- char name[ADF_NAME_LEN];
+  char name[ADF_NAME_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t n_attachments;
- struct adf_attachment_config __user *attachments;
- size_t n_allowed_attachments;
- struct adf_attachment_config __user *allowed_attachments;
+  size_t n_attachments;
+  struct adf_attachment_config __user * attachments;
+  size_t n_allowed_attachments;
+  struct adf_attachment_config __user * allowed_attachments;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t custom_data_size;
- void __user *custom_data;
+  size_t custom_data_size;
+  void __user * custom_data;
 };
 #define ADF_MAX_ATTACHMENTS (4096 / sizeof(struct adf_attachment_config))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct adf_interface_data {
- char name[ADF_NAME_LEN];
- __u32 type;
- __u32 id;
+  char name[ADF_NAME_LEN];
+  __u32 type;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 flags;
- __u8 dpms_state;
- __u8 hotplug_detect;
- __u16 width_mm;
+  __u32 flags;
+  __u8 dpms_state;
+  __u8 hotplug_detect;
+  __u16 width_mm;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 height_mm;
- struct drm_mode_modeinfo current_mode;
- size_t n_available_modes;
- struct drm_mode_modeinfo __user *available_modes;
+  __u16 height_mm;
+  struct drm_mode_modeinfo current_mode;
+  size_t n_available_modes;
+  struct drm_mode_modeinfo __user * available_modes;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t custom_data_size;
- void __user *custom_data;
+  size_t custom_data_size;
+  void __user * custom_data;
 };
 #define ADF_MAX_MODES (4096 / sizeof(struct drm_mode_modeinfo))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct adf_overlay_engine_data {
- char name[ADF_NAME_LEN];
- size_t n_supported_formats;
- __u32 __user *supported_formats;
+  char name[ADF_NAME_LEN];
+  size_t n_supported_formats;
+  __u32 __user * supported_formats;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t custom_data_size;
- void __user *custom_data;
+  size_t custom_data_size;
+  void __user * custom_data;
 };
 #define ADF_MAX_SUPPORTED_FORMATS (4096 / sizeof(__u32))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -167,14 +167,14 @@
 #define ADF_BLANK _IOW(ADF_IOCTL_TYPE, 1, __u8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADF_POST_CONFIG _IOW(ADF_IOCTL_TYPE, 2, struct adf_post_config)
-#define ADF_SET_MODE _IOW(ADF_IOCTL_TYPE, 3,   struct drm_mode_modeinfo)
+#define ADF_SET_MODE _IOW(ADF_IOCTL_TYPE, 3, struct drm_mode_modeinfo)
 #define ADF_GET_DEVICE_DATA _IOR(ADF_IOCTL_TYPE, 4, struct adf_device_data)
-#define ADF_GET_INTERFACE_DATA _IOR(ADF_IOCTL_TYPE, 5,   struct adf_interface_data)
+#define ADF_GET_INTERFACE_DATA _IOR(ADF_IOCTL_TYPE, 5, struct adf_interface_data)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ADF_GET_OVERLAY_ENGINE_DATA   _IOR(ADF_IOCTL_TYPE, 6,   struct adf_overlay_engine_data)
-#define ADF_SIMPLE_POST_CONFIG _IOW(ADF_IOCTL_TYPE, 7,   struct adf_simple_post_config)
-#define ADF_SIMPLE_BUFFER_ALLOC _IOW(ADF_IOCTL_TYPE, 8,   struct adf_simple_buffer_alloc)
-#define ADF_ATTACH _IOW(ADF_IOCTL_TYPE, 9,   struct adf_attachment_config)
+#define ADF_GET_OVERLAY_ENGINE_DATA _IOR(ADF_IOCTL_TYPE, 6, struct adf_overlay_engine_data)
+#define ADF_SIMPLE_POST_CONFIG _IOW(ADF_IOCTL_TYPE, 7, struct adf_simple_post_config)
+#define ADF_SIMPLE_BUFFER_ALLOC _IOW(ADF_IOCTL_TYPE, 8, struct adf_simple_buffer_alloc)
+#define ADF_ATTACH _IOW(ADF_IOCTL_TYPE, 9, struct adf_attachment_config)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define ADF_DETACH _IOW(ADF_IOCTL_TYPE, 10,   struct adf_attachment_config)
+#define ADF_DETACH _IOW(ADF_IOCTL_TYPE, 10, struct adf_attachment_config)
 #endif
diff --git a/libc/kernel/uapi/video/edid.h b/libc/kernel/uapi/video/edid.h
index 6855c5e..2ab2b62 100644
--- a/libc/kernel/uapi/video/edid.h
+++ b/libc/kernel/uapi/video/edid.h
@@ -19,7 +19,7 @@
 #ifndef _UAPI__linux_video_edid_h__
 #define _UAPI__linux_video_edid_h__
 struct edid_info {
- unsigned char dummy[128];
+  unsigned char dummy[128];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/uapi/video/sisfb.h b/libc/kernel/uapi/video/sisfb.h
index a464530..29cdae0 100644
--- a/libc/kernel/uapi/video/sisfb.h
+++ b/libc/kernel/uapi/video/sisfb.h
@@ -52,7 +52,7 @@
 #define CRT2_ENABLE (CRT2_LCD | CRT2_TV | CRT2_VGA)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TV_STANDARD (TV_NTSC | TV_PAL | TV_PALM | TV_PALN | TV_NTSCJ)
-#define TV_INTERFACE (TV_AVIDEO|TV_SVIDEO|TV_SCART|TV_HIVISION|TV_YPBPR|TV_CHSCART|TV_CHYPBPR525I)
+#define TV_INTERFACE (TV_AVIDEO | TV_SVIDEO | TV_SCART | TV_HIVISION | TV_YPBPR | TV_CHSCART | TV_CHYPBPR525I)
 #define TV_YPBPR525I TV_NTSC
 #define TV_YPBPR525P TV_PAL
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -69,52 +69,52 @@
 #define VB_DISPMODE_DUAL VB_DUALVIEW_MODE
 #define VB_DISPLAY_MODE (SINGLE_MODE | MIRROR_MODE | DUALVIEW_MODE)
 struct sisfb_info {
- __u32 sisfb_id;
+  __u32 sisfb_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef SISFB_ID
 #define SISFB_ID 0x53495346
 #endif
- __u32 chip_id;
+  __u32 chip_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 memory;
- __u32 heapstart;
- __u8 fbvidmode;
- __u8 sisfb_version;
+  __u32 memory;
+  __u32 heapstart;
+  __u8 fbvidmode;
+  __u8 sisfb_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sisfb_revision;
- __u8 sisfb_patchlevel;
- __u8 sisfb_caps;
- __u32 sisfb_tqlen;
+  __u8 sisfb_revision;
+  __u8 sisfb_patchlevel;
+  __u8 sisfb_caps;
+  __u32 sisfb_tqlen;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sisfb_pcibus;
- __u32 sisfb_pcislot;
- __u32 sisfb_pcifunc;
- __u8 sisfb_lcdpdc;
+  __u32 sisfb_pcibus;
+  __u32 sisfb_pcislot;
+  __u32 sisfb_pcifunc;
+  __u8 sisfb_lcdpdc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sisfb_lcda;
- __u32 sisfb_vbflags;
- __u32 sisfb_currentvbflags;
- __u32 sisfb_scalelcd;
+  __u8 sisfb_lcda;
+  __u32 sisfb_vbflags;
+  __u32 sisfb_currentvbflags;
+  __u32 sisfb_scalelcd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sisfb_specialtiming;
- __u8 sisfb_haveemi;
- __u8 sisfb_emi30,sisfb_emi31,sisfb_emi32,sisfb_emi33;
- __u8 sisfb_haveemilcd;
+  __u32 sisfb_specialtiming;
+  __u8 sisfb_haveemi;
+  __u8 sisfb_emi30, sisfb_emi31, sisfb_emi32, sisfb_emi33;
+  __u8 sisfb_haveemilcd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sisfb_lcdpdca;
- __u16 sisfb_tvxpos, sisfb_tvypos;
- __u32 sisfb_heapsize;
- __u32 sisfb_videooffset;
+  __u8 sisfb_lcdpdca;
+  __u16 sisfb_tvxpos, sisfb_tvypos;
+  __u32 sisfb_heapsize;
+  __u32 sisfb_videooffset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sisfb_curfstn;
- __u32 sisfb_curdstn;
- __u16 sisfb_pci_vendor;
- __u32 sisfb_vbflags2;
+  __u32 sisfb_curfstn;
+  __u32 sisfb_curdstn;
+  __u16 sisfb_pci_vendor;
+  __u32 sisfb_vbflags2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 sisfb_can_post;
- __u8 sisfb_card_posted;
- __u8 sisfb_was_boot_device;
- __u8 reserved[183];
+  __u8 sisfb_can_post;
+  __u8 sisfb_card_posted;
+  __u8 sisfb_was_boot_device;
+  __u8 reserved[183];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SISFB_CMD_GETVBFLAGS 0x55AA0001
@@ -129,31 +129,31 @@
 #define SISFB_CMD_ERR_UNKNOWN 0x8000ffff
 #define SISFB_CMD_ERR_OTHER 0x80010000
 struct sisfb_cmd {
- __u32 sisfb_cmd;
+  __u32 sisfb_cmd;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sisfb_arg[16];
- __u32 sisfb_result[4];
+  __u32 sisfb_arg[16];
+  __u32 sisfb_result[4];
 };
-#define SISFB_GET_INFO_SIZE _IOR(0xF3,0x00,__u32)
+#define SISFB_GET_INFO_SIZE _IOR(0xF3, 0x00, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SISFB_GET_INFO _IOR(0xF3,0x01,struct sisfb_info)
-#define SISFB_GET_VBRSTATUS _IOR(0xF3,0x02,__u32)
-#define SISFB_GET_AUTOMAXIMIZE _IOR(0xF3,0x03,__u32)
-#define SISFB_SET_AUTOMAXIMIZE _IOW(0xF3,0x03,__u32)
+#define SISFB_GET_INFO _IOR(0xF3, 0x01, struct sisfb_info)
+#define SISFB_GET_VBRSTATUS _IOR(0xF3, 0x02, __u32)
+#define SISFB_GET_AUTOMAXIMIZE _IOR(0xF3, 0x03, __u32)
+#define SISFB_SET_AUTOMAXIMIZE _IOW(0xF3, 0x03, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SISFB_GET_TVPOSOFFSET _IOR(0xF3,0x04,__u32)
-#define SISFB_SET_TVPOSOFFSET _IOW(0xF3,0x04,__u32)
-#define SISFB_COMMAND _IOWR(0xF3,0x05,struct sisfb_cmd)
-#define SISFB_SET_LOCK _IOW(0xF3,0x06,__u32)
+#define SISFB_GET_TVPOSOFFSET _IOR(0xF3, 0x04, __u32)
+#define SISFB_SET_TVPOSOFFSET _IOW(0xF3, 0x04, __u32)
+#define SISFB_COMMAND _IOWR(0xF3, 0x05, struct sisfb_cmd)
+#define SISFB_SET_LOCK _IOW(0xF3, 0x06, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SISFB_GET_INFO_OLD _IOR('n',0xF8,__u32)
-#define SISFB_GET_VBRSTATUS_OLD _IOR('n',0xF9,__u32)
-#define SISFB_GET_AUTOMAXIMIZE_OLD _IOR('n',0xFA,__u32)
-#define SISFB_SET_AUTOMAXIMIZE_OLD _IOW('n',0xFA,__u32)
+#define SISFB_GET_INFO_OLD _IOR('n', 0xF8, __u32)
+#define SISFB_GET_VBRSTATUS_OLD _IOR('n', 0xF9, __u32)
+#define SISFB_GET_AUTOMAXIMIZE_OLD _IOR('n', 0xFA, __u32)
+#define SISFB_SET_AUTOMAXIMIZE_OLD _IOW('n', 0xFA, __u32)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sis_memreq {
- __u32 offset;
- __u32 size;
+  __u32 offset;
+  __u32 size;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/video/uvesafb.h b/libc/kernel/uapi/video/uvesafb.h
index ac33064..2240785 100644
--- a/libc/kernel/uapi/video/uvesafb.h
+++ b/libc/kernel/uapi/video/uvesafb.h
@@ -21,25 +21,25 @@
 #include <linux/types.h>
 struct v86_regs {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ebx;
- __u32 ecx;
- __u32 edx;
- __u32 esi;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 esi;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 edi;
- __u32 ebp;
- __u32 eax;
- __u32 eip;
+  __u32 edi;
+  __u32 ebp;
+  __u32 eax;
+  __u32 eip;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 eflags;
- __u32 esp;
- __u16 cs;
- __u16 ss;
+  __u32 eflags;
+  __u32 esp;
+  __u16 cs;
+  __u16 ss;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 es;
- __u16 ds;
- __u16 fs;
- __u16 gs;
+  __u16 es;
+  __u16 ds;
+  __u16 fs;
+  __u16 gs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TF_VBEIB 0x01
@@ -49,31 +49,31 @@
 #define TF_BUF_RET 0x08
 #define TF_EXIT 0x10
 struct uvesafb_task {
- __u8 flags;
+  __u8 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int buf_len;
- struct v86_regs regs;
+  int buf_len;
+  struct v86_regs regs;
 };
 #define VBE_CAP_CAN_SWITCH_DAC 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VBE_CAP_VGACOMPAT 0x02
 struct vbe_ib {
- char vbe_signature[4];
- __u16 vbe_version;
+  char vbe_signature[4];
+  __u16 vbe_version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 oem_string_ptr;
- __u32 capabilities;
- __u32 mode_list_ptr;
- __u16 total_memory;
+  __u32 oem_string_ptr;
+  __u32 capabilities;
+  __u32 mode_list_ptr;
+  __u16 total_memory;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u16 oem_software_rev;
- __u32 oem_vendor_name_ptr;
- __u32 oem_product_name_ptr;
- __u32 oem_product_rev_ptr;
+  __u16 oem_software_rev;
+  __u32 oem_vendor_name_ptr;
+  __u32 oem_product_name_ptr;
+  __u32 oem_product_rev_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u8 reserved[222];
- char oem_data[256];
- char misc_data[512];
-} __attribute__ ((packed));
+  __u8 reserved[222];
+  char oem_data[256];
+  char misc_data[512];
+} __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/xen/evtchn.h b/libc/kernel/uapi/xen/evtchn.h
index d235f6a..2dd23be 100644
--- a/libc/kernel/uapi/xen/evtchn.h
+++ b/libc/kernel/uapi/xen/evtchn.h
@@ -18,31 +18,31 @@
  ****************************************************************************/
 #ifndef __LINUX_PUBLIC_EVTCHN_H__
 #define __LINUX_PUBLIC_EVTCHN_H__
-#define IOCTL_EVTCHN_BIND_VIRQ   _IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq))
+#define IOCTL_EVTCHN_BIND_VIRQ _IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq))
 struct ioctl_evtchn_bind_virq {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int virq;
+  unsigned int virq;
 };
-#define IOCTL_EVTCHN_BIND_INTERDOMAIN   _IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain))
+#define IOCTL_EVTCHN_BIND_INTERDOMAIN _IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain))
 struct ioctl_evtchn_bind_interdomain {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int remote_domain, remote_port;
+  unsigned int remote_domain, remote_port;
 };
-#define IOCTL_EVTCHN_BIND_UNBOUND_PORT   _IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port))
+#define IOCTL_EVTCHN_BIND_UNBOUND_PORT _IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port))
 struct ioctl_evtchn_bind_unbound_port {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int remote_domain;
+  unsigned int remote_domain;
 };
-#define IOCTL_EVTCHN_UNBIND   _IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind))
+#define IOCTL_EVTCHN_UNBIND _IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind))
 struct ioctl_evtchn_unbind {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int port;
+  unsigned int port;
 };
-#define IOCTL_EVTCHN_NOTIFY   _IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify))
+#define IOCTL_EVTCHN_NOTIFY _IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify))
 struct ioctl_evtchn_notify {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int port;
+  unsigned int port;
 };
-#define IOCTL_EVTCHN_RESET   _IOC(_IOC_NONE, 'E', 5, 0)
+#define IOCTL_EVTCHN_RESET _IOC(_IOC_NONE, 'E', 5, 0)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/xen/gntalloc.h b/libc/kernel/uapi/xen/gntalloc.h
index 2076843..1710f4a 100644
--- a/libc/kernel/uapi/xen/gntalloc.h
+++ b/libc/kernel/uapi/xen/gntalloc.h
@@ -18,30 +18,30 @@
  ****************************************************************************/
 #ifndef __LINUX_PUBLIC_GNTALLOC_H__
 #define __LINUX_PUBLIC_GNTALLOC_H__
-#define IOCTL_GNTALLOC_ALLOC_GREF  _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
+#define IOCTL_GNTALLOC_ALLOC_GREF _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
 struct ioctl_gntalloc_alloc_gref {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint16_t domid;
- uint16_t flags;
- uint32_t count;
- uint64_t index;
+  uint16_t domid;
+  uint16_t flags;
+  uint32_t count;
+  uint64_t index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t gref_ids[1];
+  uint32_t gref_ids[1];
 };
 #define GNTALLOC_FLAG_WRITABLE 1
-#define IOCTL_GNTALLOC_DEALLOC_GREF  _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
+#define IOCTL_GNTALLOC_DEALLOC_GREF _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ioctl_gntalloc_dealloc_gref {
- uint64_t index;
- uint32_t count;
+  uint64_t index;
+  uint32_t count;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IOCTL_GNTALLOC_SET_UNMAP_NOTIFY  _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntalloc_unmap_notify))
+#define IOCTL_GNTALLOC_SET_UNMAP_NOTIFY _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntalloc_unmap_notify))
 struct ioctl_gntalloc_unmap_notify {
- uint64_t index;
- uint32_t action;
+  uint64_t index;
+  uint32_t action;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t event_channel_port;
+  uint32_t event_channel_port;
 };
 #define UNMAP_NOTIFY_CLEAR_BYTE 0x1
 #define UNMAP_NOTIFY_SEND_EVENT 0x2
diff --git a/libc/kernel/uapi/xen/gntdev.h b/libc/kernel/uapi/xen/gntdev.h
index 28a2a3a..c00e5ab 100644
--- a/libc/kernel/uapi/xen/gntdev.h
+++ b/libc/kernel/uapi/xen/gntdev.h
@@ -19,46 +19,46 @@
 #ifndef __LINUX_PUBLIC_GNTDEV_H__
 #define __LINUX_PUBLIC_GNTDEV_H__
 struct ioctl_gntdev_grant_ref {
- uint32_t domid;
+  uint32_t domid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t ref;
+  uint32_t ref;
 };
-#define IOCTL_GNTDEV_MAP_GRANT_REF  _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
+#define IOCTL_GNTDEV_MAP_GRANT_REF _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
 struct ioctl_gntdev_map_grant_ref {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t count;
- uint32_t pad;
- uint64_t index;
- struct ioctl_gntdev_grant_ref refs[1];
+  uint32_t count;
+  uint32_t pad;
+  uint64_t index;
+  struct ioctl_gntdev_grant_ref refs[1];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define IOCTL_GNTDEV_UNMAP_GRANT_REF  _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
+#define IOCTL_GNTDEV_UNMAP_GRANT_REF _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
 struct ioctl_gntdev_unmap_grant_ref {
- uint64_t index;
+  uint64_t index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t count;
- uint32_t pad;
+  uint32_t count;
+  uint32_t pad;
 };
-#define IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR  _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
+#define IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ioctl_gntdev_get_offset_for_vaddr {
- uint64_t vaddr;
- uint64_t offset;
- uint32_t count;
+  uint64_t vaddr;
+  uint64_t offset;
+  uint32_t count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t pad;
+  uint32_t pad;
 };
-#define IOCTL_GNTDEV_SET_MAX_GRANTS  _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
+#define IOCTL_GNTDEV_SET_MAX_GRANTS _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
 struct ioctl_gntdev_set_max_grants {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t count;
+  uint32_t count;
 };
-#define IOCTL_GNTDEV_SET_UNMAP_NOTIFY  _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntdev_unmap_notify))
+#define IOCTL_GNTDEV_SET_UNMAP_NOTIFY _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntdev_unmap_notify))
 struct ioctl_gntdev_unmap_notify {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t index;
- uint32_t action;
- uint32_t event_channel_port;
+  uint64_t index;
+  uint32_t action;
+  uint32_t event_channel_port;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UNMAP_NOTIFY_CLEAR_BYTE 0x1
diff --git a/libc/kernel/uapi/xen/privcmd.h b/libc/kernel/uapi/xen/privcmd.h
index ee20544..10c0c47 100644
--- a/libc/kernel/uapi/xen/privcmd.h
+++ b/libc/kernel/uapi/xen/privcmd.h
@@ -23,44 +23,44 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <xen/interface/xen.h>
 struct privcmd_hypercall {
- __u64 op;
- __u64 arg[5];
+  __u64 op;
+  __u64 arg[5];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct privcmd_mmap_entry {
- __u64 va;
- __u64 mfn;
+  __u64 va;
+  __u64 mfn;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 npages;
+  __u64 npages;
 };
 struct privcmd_mmap {
- int num;
+  int num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- domid_t dom;
- struct privcmd_mmap_entry __user *entry;
+  domid_t dom;
+  struct privcmd_mmap_entry __user * entry;
 };
 struct privcmd_mmapbatch {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int num;
- domid_t dom;
- __u64 addr;
- xen_pfn_t __user *arr;
+  int num;
+  domid_t dom;
+  __u64 addr;
+  xen_pfn_t __user * arr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define PRIVCMD_MMAPBATCH_MFN_ERROR 0xf0000000U
 #define PRIVCMD_MMAPBATCH_PAGED_ERROR 0x80000000U
 struct privcmd_mmapbatch_v2 {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int num;
- domid_t dom;
- __u64 addr;
- const xen_pfn_t __user *arr;
+  unsigned int num;
+  domid_t dom;
+  __u64 addr;
+  const xen_pfn_t __user * arr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int __user *err;
+  int __user * err;
 };
-#define IOCTL_PRIVCMD_HYPERCALL   _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
-#define IOCTL_PRIVCMD_MMAP   _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
+#define IOCTL_PRIVCMD_HYPERCALL _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
+#define IOCTL_PRIVCMD_MMAP _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define IOCTL_PRIVCMD_MMAPBATCH   _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
-#define IOCTL_PRIVCMD_MMAPBATCH_V2   _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
+#define IOCTL_PRIVCMD_MMAPBATCH _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
+#define IOCTL_PRIVCMD_MMAPBATCH_V2 _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
 #endif
diff --git a/libc/private/ThreadLocalBuffer.h b/libc/private/ThreadLocalBuffer.h
index e5bd28c..5e43665 100644
--- a/libc/private/ThreadLocalBuffer.h
+++ b/libc/private/ThreadLocalBuffer.h
@@ -32,30 +32,30 @@
 #include <malloc.h>
 #include <pthread.h>
 
-// libstdc++ currently contains __cxa_guard_acquire and __cxa_guard_release,
-// so we make do with macros instead of a C++ class.
-// TODO: move __cxa_guard_acquire and __cxa_guard_release into libc.
+// TODO: use __thread instead?
 
-// We used to use pthread_once to initialize the keys, but life is more predictable
-// if we allocate them all up front when the C library starts up, via __constructor__.
-
-#define GLOBAL_INIT_THREAD_LOCAL_BUFFER(name) \
-  static pthread_key_t __bionic_tls_ ## name ## _key; \
-  static void __bionic_tls_ ## name ## _key_destroy(void* buffer) { \
-    free(buffer); \
-  } \
-  __attribute__((constructor)) static void __bionic_tls_ ## name ## _key_init() { \
-    pthread_key_create(&__bionic_tls_ ## name ## _key, __bionic_tls_ ## name ## _key_destroy); \
+template <typename T, size_t Size = sizeof(T)>
+class ThreadLocalBuffer {
+ public:
+  ThreadLocalBuffer() {
+    // We used to use pthread_once to initialize the keys, but life is more predictable
+    // if we allocate them all up front when the C library starts up, via __constructor__.
+    pthread_key_create(&key_, free);
   }
 
-// Leaves "name_tls_buffer" and "name_tls_buffer_size" defined and initialized.
-#define LOCAL_INIT_THREAD_LOCAL_BUFFER(type, name, byte_count) \
-  type name ## _tls_buffer = \
-      reinterpret_cast<type>(pthread_getspecific(__bionic_tls_ ## name ## _key)); \
-  if (name ## _tls_buffer == NULL) { \
-    name ## _tls_buffer = reinterpret_cast<type>(calloc(1, byte_count)); \
-    pthread_setspecific(__bionic_tls_ ## name ## _key, name ## _tls_buffer); \
-  } \
-  const size_t name ## _tls_buffer_size __attribute__((unused)) = byte_count
+  T* get() {
+    T* result = reinterpret_cast<T*>(pthread_getspecific(key_));
+    if (result == nullptr) {
+      result = reinterpret_cast<T*>(calloc(1, Size));
+      pthread_setspecific(key_, result);
+    }
+    return result;
+  }
+
+  size_t size() { return Size; }
+
+ private:
+  pthread_key_t key_;
+};
 
 #endif // _BIONIC_THREAD_LOCAL_BUFFER_H_included
diff --git a/libc/private/bionic_asm.h b/libc/private/bionic_asm.h
index 7c2686f..5fca222c 100644
--- a/libc/private/bionic_asm.h
+++ b/libc/private/bionic_asm.h
@@ -41,7 +41,7 @@
 #define ENTRY(f) \
     .text; \
     .globl f; \
-    _ALIGN_TEXT; \
+    .align __bionic_asm_align; \
     .type f, __bionic_asm_function_type; \
     f: \
     __bionic_asm_custom_entry(f); \
@@ -57,4 +57,8 @@
     ENTRY(f); \
     .hidden f \
 
+#define ALIAS_SYMBOL(alias, original) \
+    .globl alias; \
+    .equ alias, original
+
 #endif /* _PRIVATE_BIONIC_ASM_H_ */
diff --git a/libc/private/bionic_atomic_arm.h b/libc/private/bionic_atomic_arm.h
deleted file mode 100644
index 2156e6a..0000000
--- a/libc/private/bionic_atomic_arm.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_ARM_H
-#define BIONIC_ATOMIC_ARM_H
-
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-#if defined(ANDROID_SMP) && ANDROID_SMP == 1
-  __asm__ __volatile__ ( "dmb ish" : : : "memory" );
-#else
-  /* A simple compiler barrier. */
-  __asm__ __volatile__ ( "" : : : "memory" );
-#endif
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  do {
-    __asm__ __volatile__ (
-          "ldrex %0, [%3]\n"
-          "mov %1, #0\n"
-          "teq %0, %4\n"
-#ifdef __thumb2__
-          "it eq\n"
-#endif
-          "strexeq %1, %5, [%3]"
-          : "=&r" (prev), "=&r" (status), "+m"(*ptr)
-          : "r" (ptr), "Ir" (old_value), "r" (new_value)
-          : "cc");
-  } while (__builtin_expect(status != 0, 0));
-  return prev != old_value;
-}
-
-/* Swap, without any explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  do {
-    __asm__ __volatile__ (
-          "ldrex %0, [%3]\n"
-          "strex %1, %4, [%3]"
-          : "=&r" (prev), "=&r" (status), "+m" (*ptr)
-          : "r" (ptr), "r" (new_value)
-          : "cc");
-  } while (__builtin_expect(status != 0, 0));
-  return prev;
-}
-
-/* Atomic decrement, without explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int32_t prev, tmp, status;
-  do {
-    __asm__ __volatile__ (
-          "ldrex %0, [%4]\n"
-          "sub %1, %0, #1\n"
-          "strex %2, %1, [%4]"
-          : "=&r" (prev), "=&r" (tmp), "=&r" (status), "+m"(*ptr)
-          : "r" (ptr)
-          : "cc");
-  } while (__builtin_expect(status != 0, 0));
-  return prev;
-}
-
-#endif /* SYS_ATOMICS_ARM_H */
diff --git a/libc/private/bionic_atomic_arm64.h b/libc/private/bionic_atomic_arm64.h
deleted file mode 100644
index c3a34e1..0000000
--- a/libc/private/bionic_atomic_arm64.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-#ifndef BIONIC_ATOMIC_AARCH64_H
-#define BIONIC_ATOMIC_AARCH64_H
-
-/* For ARMv8, we can use the 'dmb' instruction directly */
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-  __asm__ __volatile__ ( "dmb ish" : : : "memory" );
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  int32_t tmp, oldval;
-  __asm__ __volatile__ (
-      "// atomic_cmpxchg\n"
-      "1:  ldxr %w1, [%3]\n"
-      "    cmp %w1, %w4\n"
-      "    b.ne 2f\n"
-      "    stxr %w0, %w5, [%3]\n"
-      "    cbnz  %w0, 1b\n"
-      "2:"
-      : "=&r" (tmp), "=&r" (oldval), "+o"(*ptr)
-      : "r" (ptr), "Ir" (old_value), "r" (new_value)
-      : "cc", "memory");
-  return oldval != old_value;
-}
-
-/* Swap, without any explicit barriers.  */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ (
-      "// atomic_swap\n"
-      "1:  ldxr %w0, [%3]\n"
-      "    stxr %w1, %w4, [%3]\n"
-      "    cbnz %w1, 1b\n"
-      : "=&r" (prev), "=&r" (status), "+o" (*ptr)
-      : "r" (ptr), "r" (new_value)
-      : "cc", "memory");
-  return prev;
-}
-
-/* Atomic decrement, without explicit barriers.  */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int32_t prev, tmp, status;
-  __asm__ __volatile__ (
-      "1:  ldxr %w0, [%4]\n"
-      "    sub %w1, %w0, #1\n"
-      "    stxr %w2, %w1, [%4]\n"
-      "    cbnz %w2, 1b"
-      : "=&r" (prev), "=&r" (tmp), "=&r" (status), "+m"(*ptr)
-      : "r" (ptr)
-      : "cc", "memory");
-  return prev;
-}
-
-#endif /* BIONIC_ATOMICS_AARCH64_H */
diff --git a/libc/private/bionic_atomic_gcc_builtin.h b/libc/private/bionic_atomic_gcc_builtin.h
deleted file mode 100644
index 70eb861..0000000
--- a/libc/private/bionic_atomic_gcc_builtin.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_GCC_BUILTIN_H
-#define BIONIC_ATOMIC_GCC_BUILTIN_H
-
-/*
- * This header file is used by default if we don't have optimized atomic
- * routines for a given platform. See bionic_atomic_arm.h and
- * bionic_atomic_x86.h for examples.
- *
- * Note that the GCC builtins include barriers that aren't present in
- * the architecture-specific assembler versions.
- */
-
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-  __sync_synchronize();
-}
-
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  /* We must return 0 on success. */
-  return __sync_val_compare_and_swap(ptr, old_value, new_value) != old_value;
-}
-
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t old_value;
-  do {
-    old_value = *ptr;
-  } while (__sync_val_compare_and_swap(ptr, old_value, new_value) != old_value);
-  return old_value;
-}
-
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  /* We must return the old value. */
-  return __sync_fetch_and_add(ptr, -1);
-}
-
-#endif /* BIONIC_ATOMIC_GCC_BUILTIN_H */
diff --git a/libc/private/bionic_atomic_inline.h b/libc/private/bionic_atomic_inline.h
deleted file mode 100644
index b834a27..0000000
--- a/libc/private/bionic_atomic_inline.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-
-#ifndef BIONIC_ATOMIC_INLINE_H
-#define BIONIC_ATOMIC_INLINE_H
-
-/*
- * Inline declarations and macros for some special-purpose atomic
- * operations.  These are intended for rare circumstances where a
- * memory barrier needs to be issued inline rather than as a function
- * call.
- *
- * Macros defined in this header:
- *
- * void ANDROID_MEMBAR_FULL()
- *   Full memory barrier.  Provides a compiler reordering barrier, and
- *   on SMP systems emits an appropriate instruction.
- */
-
-#if !defined(ANDROID_SMP)
-# error "Must define ANDROID_SMP before including atomic-inline.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Define __ATOMIC_INLINE__ to control the inlining of all atomics
- * functions declared here. For a slight performance boost, we want
- * all of them to be always_inline
- */
-#define  __ATOMIC_INLINE__  static __inline__ __attribute__((always_inline))
-
-#if defined(__arm__)
-#  include "bionic_atomic_arm.h"
-#elif defined(__aarch64__)
-#  include "bionic_atomic_arm64.h"
-#elif defined(__i386__)
-#  include "bionic_atomic_x86.h"
-#elif defined(__mips__)
-#  include "bionic_atomic_mips.h"
-#else
-#  include "bionic_atomic_gcc_builtin.h"
-#endif
-
-#define ANDROID_MEMBAR_FULL  __bionic_memory_barrier
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // BIONIC_ATOMIC_INLINE_H
diff --git a/libc/private/bionic_atomic_mips.h b/libc/private/bionic_atomic_mips.h
deleted file mode 100644
index 5e08116..0000000
--- a/libc/private/bionic_atomic_mips.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_MIPS_H
-#define BIONIC_ATOMIC_MIPS_H
-
-/* Define a full memory barrier, this is only needed if we build the
- * platform for a multi-core device.
- */
-
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-#if defined(ANDROID_SMP) && ANDROID_SMP == 1
-  __asm__ __volatile__ ( "sync" : : : "memory" );
-#else
-  /* A simple compiler barrier. */
-  __asm__ __volatile__ ( "" : : : "memory" );
-#endif
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ ("1: move %[status], %[new_value]  \n"
-                        "   ll %[prev], 0(%[ptr])         \n"
-                        "   bne %[old_value], %[prev], 2f \n"
-                        "   sc   %[status], 0(%[ptr])     \n"
-                        "   beqz %[status], 1b            \n"
-                        "2:                               \n"
-                        : [prev]"=&r"(prev), [status]"=&r"(status), "+m"(*ptr)
-                        : [new_value]"r"(new_value), [old_value]"r"(old_value), [ptr]"r"(ptr)
-                        : "memory");
-  return prev != old_value;
-}
-
-/* Swap, without any explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ ("1:  move %[status], %[new_value] \n"
-                        "    ll %[prev], 0(%[ptr])        \n"
-                        "    sc %[status], 0(%[ptr])      \n"
-                        "    beqz %[status], 1b           \n"
-                        : [prev]"=&r"(prev), [status]"=&r"(status), "+m"(*ptr)
-                        : [ptr]"r"(ptr), [new_value]"r"(new_value)
-                        : "memory");
-  return prev;
-}
-
-/* Atomic decrement, without explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ ("1:  ll %[prev], 0(%[ptr])        \n"
-                        "    addiu %[status], %[prev], -1 \n"
-                        "    sc   %[status], 0(%[ptr])    \n"
-                        "    beqz %[status], 1b           \n"
-                        : [prev]"=&r" (prev), [status]"=&r"(status), "+m" (*ptr)
-                        : [ptr]"r"(ptr)
-                        : "memory");
-  return prev;
-}
-
-#endif /* BIONIC_ATOMIC_MIPS_H */
diff --git a/libc/private/bionic_atomic_x86.h b/libc/private/bionic_atomic_x86.h
deleted file mode 100644
index 89639c8..0000000
--- a/libc/private/bionic_atomic_x86.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_X86_H
-#define BIONIC_ATOMIC_X86_H
-
-/* Define a full memory barrier, this is only needed if we build the
- * platform for a multi-core device.
- */
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-#if defined(ANDROID_SMP) && ANDROID_SMP == 1
-  __asm__ __volatile__ ( "mfence" : : : "memory" );
-#else
-  /* A simple compiler barrier. */
-  __asm__ __volatile__ ( "" : : : "memory" );
-#endif
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-    int32_t prev;
-    __asm__ __volatile__ ("lock; cmpxchgl %1, %2"
-                          : "=a" (prev)
-                          : "q" (new_value), "m" (*ptr), "0" (old_value)
-                          : "memory");
-    return prev != old_value;
-}
-
-/* Swap, without any explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t *ptr) {
-  __asm__ __volatile__ ("xchgl %1, %0"
-                        : "=r" (new_value)
-                        : "m" (*ptr), "0" (new_value)
-                        : "memory");
-  return new_value;
-}
-
-/* Atomic decrement, without explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int increment = -1;
-  __asm__ __volatile__ ("lock; xaddl %0, %1"
-                        : "+r" (increment), "+m" (*ptr)
-                        : : "memory");
-  /* increment now holds the old value of *ptr */
-  return increment;
-}
-
-#endif /* BIONIC_ATOMIC_X86_H */
diff --git a/libc/private/bionic_constants.h b/libc/private/bionic_constants.h
new file mode 100644
index 0000000..9ae1c8d
--- /dev/null
+++ b/libc/private/bionic_constants.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#ifndef _BIONIC_CONSTANTS_H_
+#define _BIONIC_CONSTANTS_H_
+
+#define NS_PER_S 1000000000
+
+#endif // _BIONIC_CONSTANTS_H_
diff --git a/libc/private/bionic_futex.h b/libc/private/bionic_futex.h
index bd2bd36..401577a 100644
--- a/libc/private/bionic_futex.h
+++ b/libc/private/bionic_futex.h
@@ -34,6 +34,7 @@
 #include <stddef.h>
 #include <sys/cdefs.h>
 #include <sys/syscall.h>
+#include <unistd.h>
 
 __BEGIN_DECLS
 
diff --git a/libc/private/bionic_lock.h b/libc/private/bionic_lock.h
new file mode 100644
index 0000000..6a0fd06
--- /dev/null
+++ b/libc/private/bionic_lock.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 _BIONIC_LOCK_H
+#define _BIONIC_LOCK_H
+
+#include <stdatomic.h>
+#include "private/bionic_futex.h"
+
+class Lock {
+ private:
+  enum LockState {
+    Unlocked = 0,
+    LockedWithoutWaiter,
+    LockedWithWaiter,
+  };
+  _Atomic(LockState) state;
+  bool process_shared;
+
+ public:
+  Lock(bool process_shared = false) {
+    init(process_shared);
+  }
+
+  void init(bool process_shared) {
+    atomic_init(&state, Unlocked);
+    this->process_shared = process_shared;
+  }
+
+  void lock() {
+    LockState old_state = Unlocked;
+    if (__predict_true(atomic_compare_exchange_strong_explicit(&state, &old_state,
+                         LockedWithoutWaiter, memory_order_acquire, memory_order_relaxed))) {
+      return;
+    }
+    while (atomic_exchange_explicit(&state, LockedWithWaiter, memory_order_acquire) != Unlocked) {
+      // TODO: As the critical section is brief, it is a better choice to spin a few times befor sleeping.
+      __futex_wait_ex(&state, process_shared, LockedWithWaiter, NULL);
+    }
+    return;
+  }
+
+  void unlock() {
+    if (atomic_exchange_explicit(&state, Unlocked, memory_order_release) == LockedWithWaiter) {
+      __futex_wake_ex(&state, process_shared, 1);
+    }
+  }
+};
+
+#endif  // _BIONIC_LOCK_H
diff --git a/libc/private/bionic_macros.h b/libc/private/bionic_macros.h
index 491b3ac..4f3cf89 100644
--- a/libc/private/bionic_macros.h
+++ b/libc/private/bionic_macros.h
@@ -17,11 +17,16 @@
 #ifndef _BIONIC_MACROS_H_
 #define _BIONIC_MACROS_H_
 
+// Frameworks OpenGL code currently leaks this header and allows
+// collisions with other declarations, e.g., from libnativehelper.
+// TODO: Remove once cleaned up. b/18334516
+#if !defined(DISALLOW_COPY_AND_ASSIGN)
 // DISALLOW_COPY_AND_ASSIGN disallows the copy and operator= functions.
 // It goes in the private: declarations in a class.
 #define DISALLOW_COPY_AND_ASSIGN(TypeName) \
   TypeName(const TypeName&) = delete;      \
   void operator=(const TypeName&) = delete
+#endif  // !defined(DISALLOW_COPY_AND_ASSIGN)
 
 // A macro to disallow all the implicit constructors, namely the
 // default constructor, copy constructor and operator= functions.
diff --git a/libc/private/bionic_pthread.h b/libc/private/bionic_pthread.h
deleted file mode 100644
index 07bcbd4..0000000
--- a/libc/private/bionic_pthread.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must 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 THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (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 _BIONIC_PTHREAD_H
-#define _BIONIC_PTHREAD_H
-
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-
-/* Internal, not an NDK API */
-extern pid_t __pthread_gettid(pthread_t thid);
-
-__END_DECLS
-
-#endif /* _BIONIC_PTHREAD_H */
diff --git a/libc/private/bionic_systrace.h b/libc/private/bionic_systrace.h
new file mode 100644
index 0000000..0b4560f
--- /dev/null
+++ b/libc/private/bionic_systrace.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#ifndef BIONIC_SYSTRACE_H
+#define BIONIC_SYSTRACE_H
+
+#include "bionic_macros.h"
+
+// Tracing class for bionic. To begin a trace at a specified point:
+//   ScopedTrace("Trace message");
+// The trace will end when the contructor goes out of scope.
+
+class __LIBC_HIDDEN__ ScopedTrace {
+ public:
+  explicit ScopedTrace(const char* message);
+  ~ScopedTrace();
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ScopedTrace);
+};
+
+#endif
diff --git a/libc/private/bionic_time_conversions.h b/libc/private/bionic_time_conversions.h
index 51f543f..cf0046a 100644
--- a/libc/private/bionic_time_conversions.h
+++ b/libc/private/bionic_time_conversions.h
@@ -39,6 +39,8 @@
 
 __LIBC_HIDDEN__ void timeval_from_timespec(timeval& tv, const timespec& ts);
 
+__LIBC_HIDDEN__ bool timespec_from_absolute_timespec(timespec& ts, const timespec& abs_ts, clockid_t clock);
+
 __END_DECLS
 
 #endif
diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h
index 56a61be..30dc0eb 100644
--- a/libc/private/bionic_tls.h
+++ b/libc/private/bionic_tls.h
@@ -67,30 +67,48 @@
   TLS_SLOT_STACK_GUARD = 5, // GCC requires this specific slot for x86.
   TLS_SLOT_DLERROR,
 
-  TLS_SLOT_FIRST_USER_SLOT // Must come last!
+  BIONIC_TLS_SLOTS // Must come last!
 };
 
 /*
- * There are two kinds of slot used internally by bionic --- there are the well-known slots
- * enumerated above, and then there are those that are allocated during startup by calls to
- * pthread_key_create; grep for GLOBAL_INIT_THREAD_LOCAL_BUFFER to find those. We need to manually
- * maintain that second number, but pthread_test will fail if we forget.
+ * Bionic uses some pthread keys internally. All pthread keys used internally
+ * should be created in constructors, except for keys that may be used in or
+ * before constructors.
+ *
+ * We need to manually maintain the count of pthread keys used internally, but
+ * pthread_test should fail if we forget.
+ *
+ * These are the pthread keys currently used internally by libc:
+ *
+ *  basename               libc (ThreadLocalBuffer)
+ *  dirname                libc (ThreadLocalBuffer)
+ *  uselocale              libc (can be used in constructors)
+ *  getmntent_mntent       libc (ThreadLocalBuffer)
+ *  getmntent_strings      libc (ThreadLocalBuffer)
+ *  ptsname                libc (ThreadLocalBuffer)
+ *  ttyname                libc (ThreadLocalBuffer)
+ *  strerror               libc (ThreadLocalBuffer)
+ *  strsignal              libc (ThreadLocalBuffer)
+ *  passwd                 libc (ThreadLocalBuffer)
+ *  group                  libc (ThreadLocalBuffer)
+ *  _res_key               libc (constructor in BSD code)
  */
-#define GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT 5
+
+#define LIBC_PTHREAD_KEY_RESERVED_COUNT 12
 
 #if defined(USE_JEMALLOC)
-/* jemalloc uses 5 keys for itself. */
-#define BIONIC_TLS_RESERVED_SLOTS (GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT + 5)
+/* Internally, jemalloc uses a single key for per thread data. */
+#define JEMALLOC_PTHREAD_KEY_RESERVED_COUNT 1
+#define BIONIC_PTHREAD_KEY_RESERVED_COUNT (LIBC_PTHREAD_KEY_RESERVED_COUNT + JEMALLOC_PTHREAD_KEY_RESERVED_COUNT)
 #else
-#define BIONIC_TLS_RESERVED_SLOTS GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT
+#define BIONIC_PTHREAD_KEY_RESERVED_COUNT LIBC_PTHREAD_KEY_RESERVED_COUNT
 #endif
 
 /*
- * Maximum number of elements in the TLS array.
- * This includes space for pthread keys and our own internal slots.
- * We need to round up to maintain stack alignment.
+ * Maximum number of pthread keys allocated.
+ * This includes pthread keys used internally and externally.
  */
-#define BIONIC_TLS_SLOTS BIONIC_ALIGN(PTHREAD_KEYS_MAX + TLS_SLOT_FIRST_USER_SLOT + BIONIC_TLS_RESERVED_SLOTS, 4)
+#define BIONIC_PTHREAD_KEY_COUNT (BIONIC_PTHREAD_KEY_RESERVED_COUNT + PTHREAD_KEYS_MAX)
 
 __END_DECLS
 
diff --git a/libc/private/kernel_sigset_t.h b/libc/private/kernel_sigset_t.h
index b2d6386..9415fcf 100644
--- a/libc/private/kernel_sigset_t.h
+++ b/libc/private/kernel_sigset_t.h
@@ -17,6 +17,8 @@
 #ifndef LIBC_PRIVATE_KERNEL_SIGSET_T_H_
 #define LIBC_PRIVATE_KERNEL_SIGSET_T_H_
 
+#include <signal.h>
+
 // Our sigset_t is wrong for ARM and x86. It's 32-bit but the kernel expects 64 bits.
 // This means we can't support real-time signals correctly until we can change the ABI.
 // In the meantime, we can use this union to pass an appropriately-sized block of memory
diff --git a/libc/stdio/fileext.h b/libc/stdio/fileext.h
index c074b4b..6cacc0f 100644
--- a/libc/stdio/fileext.h
+++ b/libc/stdio/fileext.h
@@ -33,6 +33,7 @@
 #define _FILEEXT_H_
 
 #include <pthread.h>
+#include <stdbool.h>
 
 __BEGIN_DECLS
 
@@ -40,14 +41,18 @@
  * file extension
  */
 struct __sfileext {
-	struct	__sbuf _ub; /* ungetc buffer */
+	struct	__sbuf _ub;		/* ungetc buffer */
 	struct wchar_io_data _wcio;	/* wide char io status */
-	pthread_mutex_t _lock; /* file lock */
+	pthread_mutex_t _lock;		/* file lock */
+	bool _stdio_handles_locking;	/* __fsetlocking support */
 };
 
-#define _FILEEXT_INITIALIZER  {{NULL,0},{0},PTHREAD_RECURSIVE_MUTEX_INITIALIZER}
-
+#if defined(__cplusplus)
+#define _EXT(fp) reinterpret_cast<__sfileext*>((fp)->_ext._base)
+#else
 #define _EXT(fp) ((struct __sfileext *)((fp)->_ext._base))
+#endif
+
 #define _UB(fp) _EXT(fp)->_ub
 #define _FLOCK(fp)  _EXT(fp)->_lock
 
@@ -56,7 +61,12 @@
 	_UB(fp)._base = NULL; \
 	_UB(fp)._size = 0; \
 	WCIO_INIT(fp); \
-        _FLOCK(fp).value = __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE; \
+	pthread_mutexattr_t attr; \
+	pthread_mutexattr_init(&attr); \
+	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \
+	pthread_mutex_init(&_FLOCK(fp), &attr); \
+	pthread_mutexattr_destroy(&attr); \
+	_EXT(fp)->_stdio_handles_locking = true; \
 } while (0)
 
 #define _FILEEXT_SETUP(f, fext) \
diff --git a/libc/stdio/findfp.c b/libc/stdio/findfp.c
index cfbb66b..5e51198 100644
--- a/libc/stdio/findfp.c
+++ b/libc/stdio/findfp.c
@@ -44,17 +44,13 @@
 #define ALIGNBYTES (sizeof(uintptr_t) - 1)
 #define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) &~ ALIGNBYTES)
 
-#undef stdin
-#undef stdout
-#undef stderr
-
 int	__sdidinit;
 
 #define	NDYNAMIC 10		/* add ten more whenever necessary */
 
 #define	std(flags, file) \
-	{0,0,0,flags,file,{0},0,__sF+file,__sclose,__sread,__sseek,__swrite, \
-	    {(unsigned char *)(__sFext+file), 0},NULL,0,{0},{0},{0},0,0}
+	{0,0,0,flags,file,{0,0},0,__sF+file,__sclose,__sread,__sseek,__swrite, \
+	    {(unsigned char *)(__sFext+file), 0},NULL,0,{0},{0},{0,0},0,0}
 
 				/* the usual - (stdin + stdout + stderr) */
 static FILE usual[FOPEN_MAX - 3];
diff --git a/libc/stdio/fread.c b/libc/stdio/fread.c
index e052128..f3f0127 100644
--- a/libc/stdio/fread.c
+++ b/libc/stdio/fread.c
@@ -35,6 +35,7 @@
 #include <string.h>
 #include <stdint.h>
 #include <errno.h>
+#include <sys/param.h>
 #include "local.h"
 
 #define MUL_NO_OVERFLOW	(1UL << (sizeof(size_t) * 4))
@@ -42,13 +43,8 @@
 size_t
 fread(void *buf, size_t size, size_t count, FILE *fp)
 {
-	size_t resid;
-	char *p;
-	int r;
-	size_t total;
-
 	/*
-	 * Extension:  Catch integer overflow
+	 * Extension:  Catch integer overflow.
 	 */
 	if ((size >= MUL_NO_OVERFLOW || count >= MUL_NO_OVERFLOW) &&
 	    size > 0 && SIZE_MAX / size < count) {
@@ -57,48 +53,87 @@
 		return (0);
 	}
 
+	const size_t desired_total = count * size;
+	size_t total = desired_total;
+
 	/*
 	 * ANSI and SUSv2 require a return value of 0 if size or count are 0.
 	 */
-	if ((resid = count * size) == 0)
+	if (total == 0) {
 		return (0);
+	}
+
 	FLOCKFILE(fp);
 	_SET_ORIENTATION(fp, -1);
+
+	// TODO: how can this ever happen?!
 	if (fp->_r < 0)
 		fp->_r = 0;
-	total = resid;
-	p = buf;
 
-	// BEGIN android-added
-	// Avoid pathological behavior on unbuffered files. OpenBSD
-	// will loop reading one byte then memcpying one byte!
-	if ((fp->_flags & __SNBF) != 0) {
-		// We know if we're unbuffered that our buffer is empty, so
-		// we can just read directly.
-		while (resid > 0 && (r = (*fp->_read)(fp->_cookie, p, resid)) > 0) {
-			p += r;
-			resid -= r;
-		}
-		FUNLOCKFILE(fp);
-		return ((total - resid) / size);
+	/*
+	 * Ensure _bf._size is valid.
+	 */
+	if (fp->_bf._base == NULL) {
+		__smakebuf(fp);
 	}
-	// END android-added
 
-	while (resid > (size_t)(r = fp->_r)) {
-		(void)memcpy((void *)p, (void *)fp->_p, (size_t)r);
-		fp->_p += r;
-		/* fp->_r = 0 ... done in __srefill */
-		p += r;
-		resid -= r;
+	char* dst = buf;
+
+	while (total > 0) {
+		/*
+		 * Copy data out of the buffer.
+		 */
+		size_t buffered_bytes = MIN((size_t) fp->_r, total);
+		memcpy(dst, fp->_p, buffered_bytes);
+		fp->_p += buffered_bytes;
+		fp->_r -= buffered_bytes;
+		dst += buffered_bytes;
+		total -= buffered_bytes;
+
+		/*
+		 * Are we done?
+		 */
+		if (total == 0) {
+			goto out;
+		}
+
+		/*
+		 * Do we have so much more to read that we should
+		 * avoid copying it through the buffer?
+		 */
+		if (total > (size_t) fp->_bf._size) {
+			/*
+			 * Make sure that fseek doesn't think it can
+			 * reuse the buffer since we are going to read
+			 * directly from the file descriptor.
+			 */
+			fp->_flags |= __SMOD;
+			break;
+		}
+
+		/*
+		 * Less than a buffer to go, so refill the buffer and
+		 * go around the loop again.
+		 */
 		if (__srefill(fp)) {
-			/* no more input: return partial result */
-			FUNLOCKFILE(fp);
-			return ((total - resid) / size);
+			goto out;
 		}
 	}
-	(void)memcpy((void *)p, (void *)fp->_p, resid);
-	fp->_r -= resid;
-	fp->_p += resid;
+
+	/*
+	 * Read directly into the caller's buffer.
+	 */
+	while (total > 0) {
+		ssize_t bytes_read = (*fp->_read)(fp->_cookie, dst, total);
+		if (bytes_read <= 0) {
+			fp->_flags |= (bytes_read == 0) ? __SEOF : __SERR;
+			break;
+		}
+		dst += bytes_read;
+		total -= bytes_read;
+	}
+
+out:
 	FUNLOCKFILE(fp);
-	return (count);
+	return ((desired_total - total) / size);
 }
diff --git a/libc/stdio/local.h b/libc/stdio/local.h
index 46b11f1..ce04141 100644
--- a/libc/stdio/local.h
+++ b/libc/stdio/local.h
@@ -111,8 +111,8 @@
 	(fp)->_lb._base = NULL; \
 }
 
-#define FLOCKFILE(fp)   flockfile(fp)
-#define FUNLOCKFILE(fp) funlockfile(fp)
+#define FLOCKFILE(fp)   if (_EXT(fp)->_stdio_handles_locking) flockfile(fp)
+#define FUNLOCKFILE(fp) if (_EXT(fp)->_stdio_handles_locking) funlockfile(fp)
 
 #define FLOATING_POINT
 #define PRINTF_WIDE_CHAR
@@ -124,6 +124,7 @@
 #define __sferror(p)   (((p)->_flags & __SERR) != 0)
 #define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
 #define __sfileno(p)   ((p)->_file)
+#if !defined(__cplusplus)
 #define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
 static __inline int __sputc(int _c, FILE* _p) {
   if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) {
@@ -132,6 +133,7 @@
     return (__swbuf(_c, _p));
   }
 }
+#endif
 
 /* OpenBSD declares these in fvwrite.h but we want to ensure they're hidden. */
 struct __suio;
diff --git a/libc/stdio/stdio.c b/libc/stdio/stdio.c
new file mode 100644
index 0000000..13b9887
--- /dev/null
+++ b/libc/stdio/stdio.c
@@ -0,0 +1,90 @@
+/*	$OpenBSD: stdio.c,v 1.9 2005/08/08 08:05:36 espie Exp $ */
+/*-
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+#include "local.h"
+
+/*
+ * Small standard I/O/seek/close functions.
+ * These maintain the `known seek offset' for seek optimisation.
+ */
+int
+__sread(void *cookie, char *buf, int n)
+{
+	FILE *fp = cookie;
+	int ret;
+	
+	ret = TEMP_FAILURE_RETRY(read(fp->_file, buf, n));
+	/* if the read succeeded, update the current offset */
+	if (ret >= 0)
+		fp->_offset += ret;
+	else
+		fp->_flags &= ~__SOFF;	/* paranoia */
+	return (ret);
+}
+
+int
+__swrite(void *cookie, const char *buf, int n)
+{
+	FILE *fp = cookie;
+
+	if (fp->_flags & __SAPP)
+		(void) TEMP_FAILURE_RETRY(lseek(fp->_file, (off_t)0, SEEK_END));
+	fp->_flags &= ~__SOFF;	/* in case FAPPEND mode is set */
+	return TEMP_FAILURE_RETRY(write(fp->_file, buf, n));
+}
+
+fpos_t
+__sseek(void *cookie, fpos_t offset, int whence)
+{
+	FILE *fp = cookie;
+	off_t ret;
+	
+	ret = TEMP_FAILURE_RETRY(lseek(fp->_file, (off_t)offset, whence));
+	if (ret == (off_t)-1)
+		fp->_flags &= ~__SOFF;
+	else {
+		fp->_flags |= __SOFF;
+		fp->_offset = ret;
+	}
+	return (ret);
+}
+
+int
+__sclose(void *cookie)
+{
+	return TEMP_FAILURE_RETRY(close(((FILE *)cookie)->_file));
+}
diff --git a/libc/stdio/stdio_ext.cpp b/libc/stdio/stdio_ext.cpp
new file mode 100644
index 0000000..fea44f6
--- /dev/null
+++ b/libc/stdio/stdio_ext.cpp
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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_ext.h>
+#include <stdlib.h>
+
+#include "local.h"
+#include "private/libc_logging.h"
+
+size_t __fbufsize(FILE* fp) {
+  return fp->_bf._size;
+}
+
+/* For a _SRW stream, we don't know whether we last read or wrote.
+int __freading(FILE* fp) {
+  return (fp->_flags & _SRD) != 0 || ...;
+}
+*/
+
+/* For a _SRW stream, we don't know whether we last read or wrote.
+int __fwriting(FILE*) {
+  return (fp->_flags & _SWR) != 0 || ...;
+}
+*/
+
+int __freadable(FILE* fp) {
+  return (fp->_flags & (__SRD|__SRW)) != 0;
+}
+
+int __fwritable(FILE* fp) {
+  return (fp->_flags & (__SWR|__SRW)) != 0;
+}
+
+int __flbf(FILE* fp) {
+  return (fp->_flags & __SLBF) != 0;
+}
+
+void __fpurge(FILE* fp) {
+  fpurge(fp);
+}
+
+size_t __fpending(FILE* fp) {
+  return fp->_p - fp->_bf._base;
+}
+
+void _flushlbf() {
+  // If we flush all streams, we know we've flushed all the line-buffered streams.
+  fflush(NULL);
+}
+
+int __fsetlocking(FILE* fp, int type) {
+  int old_state = _EXT(fp)->_stdio_handles_locking ? FSETLOCKING_INTERNAL : FSETLOCKING_BYCALLER;
+  if (type == FSETLOCKING_QUERY) {
+    return old_state;
+  }
+
+  if (type != FSETLOCKING_INTERNAL && type != FSETLOCKING_BYCALLER) {
+    // The API doesn't let us report an error, so blow up.
+    __libc_fatal("Bad type (%d) passed to __fsetlocking", type);
+  }
+
+  _EXT(fp)->_stdio_handles_locking = (type == FSETLOCKING_INTERNAL);
+  return old_state;
+}
+
+void clearerr_unlocked(FILE* fp) {
+  return __sclearerr(fp);
+}
+
+int feof_unlocked(FILE* fp) {
+  return __sfeof(fp);
+}
+
+int ferror_unlocked(FILE* fp) {
+  return __sferror(fp);
+}
diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c
new file mode 100644
index 0000000..df2b1b5
--- /dev/null
+++ b/libc/stdlib/atexit.c
@@ -0,0 +1,212 @@
+/*	$OpenBSD: atexit.c,v 1.20 2014/07/11 09:51:37 kettenis Exp $ */
+/*
+ * Copyright (c) 2002 Daniel Hartmeier
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    - Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    - Redistributions in binary form must 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 THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (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/types.h>
+#include <sys/mman.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "atexit.h"
+#include "private/thread_private.h"
+
+struct atexit *__atexit;
+static int restartloop;
+
+/* BEGIN android-changed: __unregister_atfork is used by __cxa_finalize */
+extern void __unregister_atfork(void* dso);
+/* END android-changed */
+
+/*
+ * Function pointers are stored in a linked list of pages. The list
+ * is initially empty, and pages are allocated on demand. The first
+ * function pointer in the first allocated page (the last one in
+ * the linked list) is reserved for the cleanup function.
+ *
+ * Outside the following functions, all pages are mprotect()'ed
+ * to prevent unintentional/malicious corruption.
+ */
+
+/*
+ * Register a function to be performed at exit or when a shared object
+ * with the given dso handle is unloaded dynamically.  Also used as
+ * the backend for atexit().  For more info on this API, see:
+ *
+ *	http://www.codesourcery.com/cxx-abi/abi.html#dso-dtor
+ */
+int
+__cxa_atexit(void (*func)(void *), void *arg, void *dso)
+{
+	struct atexit *p = __atexit;
+	struct atexit_fn *fnp;
+	size_t pgsize = getpagesize();
+	int ret = -1;
+
+	if (pgsize < sizeof(*p))
+		return (-1);
+	_ATEXIT_LOCK();
+	p = __atexit;
+	if (p != NULL) {
+		if (p->ind + 1 >= p->max)
+			p = NULL;
+		else if (mprotect(p, pgsize, PROT_READ | PROT_WRITE))
+			goto unlock;
+	}
+	if (p == NULL) {
+		p = mmap(NULL, pgsize, PROT_READ | PROT_WRITE,
+		    MAP_ANON | MAP_PRIVATE, -1, 0);
+		if (p == MAP_FAILED)
+			goto unlock;
+		if (__atexit == NULL) {
+			memset(&p->fns[0], 0, sizeof(p->fns[0]));
+			p->ind = 1;
+		} else
+			p->ind = 0;
+		p->max = (pgsize - ((char *)&p->fns[0] - (char *)p)) /
+		    sizeof(p->fns[0]);
+		p->next = __atexit;
+		__atexit = p;
+	}
+	fnp = &p->fns[p->ind++];
+	fnp->fn_ptr = func;
+	fnp->fn_arg = arg;
+	fnp->fn_dso = dso;
+	if (mprotect(p, pgsize, PROT_READ))
+		goto unlock;
+	restartloop = 1;
+	ret = 0;
+unlock:
+	_ATEXIT_UNLOCK();
+	return (ret);
+}
+
+/*
+ * Call all handlers registered with __cxa_atexit() for the shared
+ * object owning 'dso'.
+ * Note: if 'dso' is NULL, then all remaining handlers are called.
+ */
+void
+__cxa_finalize(void *dso)
+{
+	struct atexit *p, *q;
+	struct atexit_fn fn;
+	int n, pgsize = getpagesize();
+	static int call_depth;
+
+	_ATEXIT_LOCK();
+	call_depth++;
+
+restart:
+	restartloop = 0;
+	for (p = __atexit; p != NULL; p = p->next) {
+		for (n = p->ind; --n >= 0;) {
+			if (p->fns[n].fn_ptr == NULL)
+				continue;	/* already called */
+			if (dso != NULL && dso != p->fns[n].fn_dso)
+				continue;	/* wrong DSO */
+
+			/*
+			 * Mark handler as having been already called to avoid
+			 * dupes and loops, then call the appropriate function.
+			 */
+			fn = p->fns[n];
+			if (mprotect(p, pgsize, PROT_READ | PROT_WRITE) == 0) {
+				p->fns[n].fn_ptr = NULL;
+				mprotect(p, pgsize, PROT_READ);
+			}
+			_ATEXIT_UNLOCK();
+			(*fn.fn_ptr)(fn.fn_arg);
+			_ATEXIT_LOCK();
+			if (restartloop)
+				goto restart;
+		}
+	}
+
+	call_depth--;
+
+	/*
+	 * If called via exit(), unmap the pages since we have now run
+	 * all the handlers.  We defer this until calldepth == 0 so that
+	 * we don't unmap things prematurely if called recursively.
+	 */
+	if (dso == NULL && call_depth == 0) {
+		for (p = __atexit; p != NULL; ) {
+			q = p;
+			p = p->next;
+			munmap(q, pgsize);
+		}
+		__atexit = NULL;
+	}
+	_ATEXIT_UNLOCK();
+
+  /* BEGIN android-changed: call __unregister_atfork if dso is not null */
+  if (dso != NULL) {
+    __unregister_atfork(dso);
+  }
+  /* END android-changed */
+}
+
+/*
+ * Register the cleanup function
+ */
+void
+__atexit_register_cleanup(void (*func)(void))
+{
+	struct atexit *p;
+	size_t pgsize = getpagesize();
+
+	if (pgsize < sizeof(*p))
+		return;
+	_ATEXIT_LOCK();
+	p = __atexit;
+	while (p != NULL && p->next != NULL)
+		p = p->next;
+	if (p == NULL) {
+		p = mmap(NULL, pgsize, PROT_READ | PROT_WRITE,
+		    MAP_ANON | MAP_PRIVATE, -1, 0);
+		if (p == MAP_FAILED)
+			goto unlock;
+		p->ind = 1;
+		p->max = (pgsize - ((char *)&p->fns[0] - (char *)p)) /
+		    sizeof(p->fns[0]);
+		p->next = NULL;
+		__atexit = p;
+	} else {
+		if (mprotect(p, pgsize, PROT_READ | PROT_WRITE))
+			goto unlock;
+	}
+	p->fns[0].fn_ptr = (void (*)(void *))func;
+	p->fns[0].fn_arg = NULL;
+	p->fns[0].fn_dso = NULL;
+	mprotect(p, pgsize, PROT_READ);
+	restartloop = 1;
+unlock:
+	_ATEXIT_UNLOCK();
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/atexit.h b/libc/stdlib/atexit.h
similarity index 100%
rename from libc/upstream-openbsd/lib/libc/stdlib/atexit.h
rename to libc/stdlib/atexit.h
diff --git a/libc/stdlib/exit.c b/libc/stdlib/exit.c
new file mode 100644
index 0000000..10ce674
--- /dev/null
+++ b/libc/stdlib/exit.c
@@ -0,0 +1,66 @@
+/*	$OpenBSD: exit.c,v 1.12 2007/09/03 14:40:16 millert Exp $ */
+/*-
+ * Copyright (c) 1990 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. 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.
+ */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+/*
+ * This variable is zero until a process has created a thread.
+ * It is used to avoid calling locking functions in libc when they
+ * are not required. By default, libc is intended to be(come)
+ * thread-safe, but without a (significant) penalty to non-threaded
+ * processes.
+ */
+int     __isthreaded    = 0;
+
+/* BEGIN android-added: using __cxa_finalize and __cxa_thread_finalize */
+extern void __cxa_finalize(void* dso_handle);
+extern void __cxa_thread_finalize();
+/* END android-added */
+
+/*
+ * Exit, flushing stdio buffers if necessary.
+ */
+void
+exit(int status)
+{
+  /* BEGIN android-added: call thread_local d-tors */
+  __cxa_thread_finalize();
+  /* END android-added */
+
+	/*
+	 * Call functions registered by atexit() or _cxa_atexit()
+	 * (including the stdio cleanup routine) and then _exit().
+	 */
+	__cxa_finalize(NULL);
+	_exit(status);
+}
diff --git a/libc/tools/bionic_utils.py b/libc/tools/bionic_utils.py
deleted file mode 100644
index c38efb5..0000000
--- a/libc/tools/bionic_utils.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# common python utility routines for the Bionic tool scripts
-
-import sys, os, commands, string
-
-all_arches = [ "arm", "arm64", "mips", "mips64", "x86", "x86_64" ]
-
-# basic debugging trace support
-# call D_setlevel to set the verbosity level
-# and D(), D2(), D3(), D4() to add traces
-#
-verbose = 0
-
-def D(msg):
-    global verbose
-    if verbose > 0:
-        print msg
-
-def D2(msg):
-    global verbose
-    if verbose >= 2:
-        print msg
-
-def D3(msg):
-    global verbose
-    if verbose >= 3:
-        print msg
-
-def D4(msg):
-    global verbose
-    if verbose >= 4:
-        print msg
-
-def D_setlevel(level):
-    global verbose
-    verbose = level
-
-
-# parser for the SYSCALLS.TXT file
-#
-class SysCallsTxtParser:
-    def __init__(self):
-        self.syscalls = []
-        self.lineno   = 0
-
-    def E(self, msg):
-        print "%d: %s" % (self.lineno, msg)
-
-    def parse_line(self, line):
-        """ parse a syscall spec line.
-
-        line processing, format is
-           return type    func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
-        """
-        pos_lparen = line.find('(')
-        E          = self.E
-        if pos_lparen < 0:
-            E("missing left parenthesis in '%s'" % line)
-            return
-
-        pos_rparen = line.rfind(')')
-        if pos_rparen < 0 or pos_rparen <= pos_lparen:
-            E("missing or misplaced right parenthesis in '%s'" % line)
-            return
-
-        return_type = line[:pos_lparen].strip().split()
-        if len(return_type) < 2:
-            E("missing return type in '%s'" % line)
-            return
-
-        syscall_func = return_type[-1]
-        return_type  = string.join(return_type[:-1],' ')
-        socketcall_id = -1
-
-        pos_colon = syscall_func.find(':')
-        if pos_colon < 0:
-            syscall_name = syscall_func
-        else:
-            if pos_colon == 0 or pos_colon+1 >= len(syscall_func):
-                E("misplaced colon in '%s'" % line)
-                return
-
-            # now find if there is a socketcall_id for a dispatch-type syscall
-            # after the optional 2nd colon
-            pos_colon2 = syscall_func.find(':', pos_colon + 1)
-            if pos_colon2 < 0:
-                syscall_name = syscall_func[pos_colon+1:]
-                syscall_func = syscall_func[:pos_colon]
-            else:
-                if pos_colon2+1 >= len(syscall_func):
-                    E("misplaced colon2 in '%s'" % line)
-                    return
-                syscall_name = syscall_func[(pos_colon+1):pos_colon2]
-                socketcall_id = int(syscall_func[pos_colon2+1:])
-                syscall_func = syscall_func[:pos_colon]
-
-        alias_delim = syscall_func.find('|')
-        if alias_delim > 0:
-            alias_list = syscall_func[alias_delim+1:].strip()
-            syscall_func = syscall_func[:alias_delim]
-            alias_delim = syscall_name.find('|')
-            if alias_delim > 0:
-                syscall_name = syscall_name[:alias_delim]
-            syscall_aliases = string.split(alias_list, ',')
-        else:
-            syscall_aliases = []
-
-        if pos_rparen > pos_lparen+1:
-            syscall_params = line[pos_lparen+1:pos_rparen].split(',')
-            params         = string.join(syscall_params,',')
-        else:
-            syscall_params = []
-            params         = "void"
-
-        t = {
-              "name"    : syscall_name,
-              "func"    : syscall_func,
-              "aliases" : syscall_aliases,
-              "params"  : syscall_params,
-              "decl"    : "%-15s  %s (%s);" % (return_type, syscall_func, params),
-              "socketcall_id" : socketcall_id
-        }
-
-        # Parse the architecture list.
-        arch_list = line[pos_rparen+1:].strip()
-        if arch_list == "all":
-            for arch in all_arches:
-                t[arch] = True
-        else:
-            for arch in string.split(arch_list, ','):
-                if arch in all_arches:
-                    t[arch] = True
-                else:
-                    E("invalid syscall architecture '%s' in '%s'" % (arch, line))
-                    return
-
-        self.syscalls.append(t)
-
-        global verbose
-        if verbose >= 2:
-            print t
-
-
-    def parse_file(self, file_path):
-        D2("parse_file: %s" % file_path)
-        fp = open(file_path)
-        for line in fp.xreadlines():
-            self.lineno += 1
-            line = line.strip()
-            if not line: continue
-            if line[0] == '#': continue
-            self.parse_line(line)
-
-        fp.close()
-
-
-class StringOutput:
-    def __init__(self):
-        self.line = ""
-
-    def write(self,msg):
-        self.line += msg
-        D2("write '%s'" % msg)
-
-    def get(self):
-        return self.line
diff --git a/libc/tools/check-symbols-glibc.py b/libc/tools/check-symbols-glibc.py
index 58a10e0..2c352b2 100755
--- a/libc/tools/check-symbols-glibc.py
+++ b/libc/tools/check-symbols-glibc.py
@@ -1,66 +1,73 @@
-#!/usr/bin/python
-
+#!/usr/bin/env python2
+#
+# 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.
+#
+# pylint: disable=bad-indentation,bad-continuation
 import glob
 import os
 import re
-import string
-import subprocess
 import sys
 
+import symbols
+
+only_unwanted = False
+if len(sys.argv) > 1:
+  if sys.argv[1] in ('-u', '--unwanted'):
+    only_unwanted = True
+
 toolchain = os.environ['ANDROID_TOOLCHAIN']
 arch = re.sub(r'.*/linux-x86/([^/]+)/.*', r'\1', toolchain)
-
-def GetSymbolsFromSo(so_file):
-  # Example readelf output:
-  #   264: 0001623c     4 FUNC    GLOBAL DEFAULT    8 cabsf
-  #   266: 00016244     4 FUNC    GLOBAL DEFAULT    8 dremf
-  #   267: 00019018     4 OBJECT  GLOBAL DEFAULT   11 __fe_dfl_env
-  #   268: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_dcmplt
-
-  r = re.compile(r' +\d+: [0-9a-f]+ +\d+ (I?FUNC|OBJECT) +\S+ +\S+ +\d+ (\S+)')
-
-  symbols = set()
-
-  for line in subprocess.check_output(['readelf', '--dyn-syms', '-W', so_file]).split('\n'):
-    if ' HIDDEN ' in line or ' UND ' in line:
-      continue
-    m = r.match(line)
-    if m:
-      symbol = m.group(2)
-      symbol = re.sub('@.*', '', symbol)
-      symbols.add(symbol)
-
-  return symbols
-
-def GetSymbolsFromAndroidSo(*files):
-  symbols = set()
-  for f in files:
-    symbols = symbols | GetSymbolsFromSo('%s/system/lib64/%s' % (os.environ['ANDROID_PRODUCT_OUT'], f))
-  return symbols
-
-def GetSymbolsFromSystemSo(*files):
-  symbols = set()
-  for f in files:
-    f = glob.glob('/lib/x86_64-linux-gnu/%s' % f)[-1]
-    symbols = symbols | GetSymbolsFromSo(f)
-  return symbols
+if arch == 'aarch64':
+  arch = 'arm64'
 
 def MangleGlibcNameToBionic(name):
   if name in glibc_to_bionic_names:
     return glibc_to_bionic_names[name]
   return name
 
+def GetNdkIgnored(arch):  # pylint: disable=redefined-outer-name
+  ignored_symbols = set()
+  files = glob.glob('%s/ndk/build/tools/unwanted-symbols/%s/*' %
+                    (os.getenv('ANDROID_BUILD_TOP'), arch))
+  for f in files:
+    ignored_symbols |= set(open(f, 'r').read().splitlines())
+  return ignored_symbols
+
 glibc_to_bionic_names = {
   '__res_init': 'res_init',
   '__res_mkquery': 'res_mkquery',
   '__res_query': 'res_query',
   '__res_search': 'res_search',
+  '__xpg_basename': '__gnu_basename',
 }
 
-glibc = GetSymbolsFromSystemSo('libc.so.*', 'librt.so.*', 'libpthread.so.*', 'libresolv.so.*', 'libm.so.*')
-bionic = GetSymbolsFromAndroidSo('libc.so', 'libm.so')
+glibc = symbols.GetFromSystemSo([
+    'libc.so.*',
+    'librt.so.*',
+    'libpthread.so.*',
+    'libresolv.so.*',
+    'libm.so.*',
+    'libutil.so.*',
+])
 
-glibc = map(MangleGlibcNameToBionic, glibc)
+bionic = symbols.GetFromAndroidSo(['libc.so', 'libm.so'])
+this_dir = os.path.dirname(os.path.realpath(__file__))
+posix = symbols.GetFromTxt(os.path.join(this_dir, 'posix-2013.txt'))
+ndk_ignored = GetNdkIgnored(arch)
+
+glibc = set(map(MangleGlibcNameToBionic, glibc))
 
 # bionic includes various BSD symbols to ease porting other BSD-licensed code.
 bsd_stuff = set([
@@ -100,6 +107,16 @@
   '__errno',
   '__fe_dfl_env',
   '__get_h_errno',
+  '__fpclassifyd',
+  '__isfinite',
+  '__isfinitef',
+  '__isfinitel',
+  '__isnormal',
+  '__isnormalf',
+  '__isnormall',
+  '__sF',
+  '__pthread_cleanup_pop',
+  '__pthread_cleanup_push',
 ])
 # bionic exposes various Linux features that glibc doesn't.
 linux_stuff = set([
@@ -133,21 +150,53 @@
   'mknodat',
   'stat',
   'stat64',
+  'optreset',
+  'sigsetjmp',
+])
+# These exist in glibc, but under slightly different names (generally one extra
+# or one fewer _). TODO: check against glibc names.
+libresolv_stuff = set([
+  '__res_send_setqhook',
+  '__res_send_setrhook',
+  '_resolv_flush_cache_for_net',
+  '_resolv_set_nameservers_for_net',
+  'dn_expand',
+  'nsdispatch',
+])
+# Implementation details we know we export (and can't get away from).
+known = set([
+  '_ctype_',
+  '__libc_init',
 ])
 
-print 'glibc:'
-for symbol in sorted(glibc):
-  print symbol
+if not only_unwanted:
+  #print 'glibc:'
+  #for symbol in sorted(glibc):
+  #  print symbol
+  #print
 
-print
-print 'bionic:'
-for symbol in sorted(bionic):
-  print symbol
+  #print 'bionic:'
+  #for symbol in sorted(bionic):
+  #  print symbol
+  #print
 
-print
-print 'in bionic but not glibc:'
-allowed_stuff = (bsd_stuff | FORTIFY_stuff | linux_stuff | macro_stuff | std_stuff | weird_stuff)
+  print 'in glibc (but not posix) but not bionic:'
+  for symbol in sorted((glibc - posix).difference(bionic)):
+    print symbol
+  print
+
+  print 'in posix (and implemented in glibc) but not bionic:'
+  for symbol in sorted((posix.intersection(glibc)).difference(bionic)):
+    print symbol
+  print
+
+  print 'in bionic but not glibc:'
+
+allowed_stuff = (bsd_stuff | FORTIFY_stuff | linux_stuff | macro_stuff |
+                 std_stuff | weird_stuff | libresolv_stuff | known)
 for symbol in sorted((bionic - allowed_stuff).difference(glibc)):
+  if symbol in ndk_ignored:
+    symbol += '*'
   print symbol
 
 sys.exit(0)
diff --git a/libc/tools/generate-NOTICE.py b/libc/tools/generate-NOTICE.py
index 8cd75a3..79b4ea9 100755
--- a/libc/tools/generate-NOTICE.py
+++ b/libc/tools/generate-NOTICE.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 # Run with directory arguments from any directory, with no special setup required.
 # Or:
-# for i in libc libdl libm linker libstdc++ libthread_db ; do ./libc/tools/generate-NOTICE.py $i > $i/NOTICE ; done
+# for i in libc libdl libm linker libstdc++ ; do ./libc/tools/generate-NOTICE.py $i > $i/NOTICE ; done
 
 import ftplib
 import hashlib
@@ -121,7 +121,6 @@
             try:
                 content = open(path, 'r').read().decode('utf-8')
             except:
-                # TODO: update hash.h, md5.c, and md5.h; upstream is probably UTF-8 already.
                 sys.stderr.write('warning: bad UTF-8 in %s\n' % path)
                 content = open(path, 'r').read().decode('iso-8859-1')
 
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index e8ec636..4d0afe2 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -4,21 +4,29 @@
 # the header files listing all available system calls, and the
 # makefiles used to build all the stubs.
 
+import atexit
 import commands
 import filecmp
 import glob
+import logging
 import os.path
 import re
 import shutil
 import stat
+import string
 import sys
+import tempfile
 
-from bionic_utils import *
 
-bionic_libc_root = os.environ["ANDROID_BUILD_TOP"] + "/bionic/libc/"
+all_arches = [ "arm", "arm64", "mips", "mips64", "x86", "x86_64" ]
+
 
 # temp directory where we store all intermediate files
-bionic_temp = "/tmp/bionic_gensyscalls/"
+bionic_temp = tempfile.mkdtemp(prefix="bionic_gensyscalls");
+# Make sure the directory is deleted when the script exits.
+atexit.register(shutil.rmtree, bionic_temp)
+
+bionic_libc_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libc")
 
 warning = "Generated by gensyscalls.py. Do not edit."
 
@@ -34,9 +42,10 @@
 
 
 def create_file(relpath):
-    dir = os.path.dirname(bionic_temp + relpath)
+    full_path = os.path.join(bionic_temp, relpath)
+    dir = os.path.dirname(full_path)
     make_dir(dir)
-    return open(bionic_temp + relpath, "w")
+    return open(full_path, "w")
 
 
 syscall_stub_header = "/* " + warning + " */\n" + \
@@ -47,12 +56,6 @@
 """
 
 
-function_alias = """
-    .globl %(alias)s
-    .equ %(alias)s, %(func)s
-"""
-
-
 #
 # ARM assembler templates for each syscall stub
 #
@@ -265,7 +268,7 @@
 # This lets us support regular system calls like __NR_write and also weird
 # ones like __ARM_NR_cacheflush, where the NR doesn't come at the start.
 def make__NR_name(name):
-    if name.startswith("__"):
+    if name.startswith("__ARM_NR_"):
         return name
     else:
         return "__NR_%s" % (name)
@@ -275,10 +278,11 @@
     # Add any aliases for this syscall.
     aliases = syscall["aliases"]
     for alias in aliases:
-        stub += function_alias % { "func" : syscall["func"], "alias" : alias }
+        stub += "\nALIAS_SYMBOL(%s, %s)\n" % (alias, syscall["func"])
 
-    # Use hidden visibility for any functions beginning with underscores.
-    if pointer_length == 64 and syscall["func"].startswith("__"):
+    # Use hidden visibility on LP64 for any functions beginning with underscores.
+    # Force hidden visibility for any functions which begin with 3 underscores
+    if (pointer_length == 64 and syscall["func"].startswith("__")) or syscall["func"].startswith("___"):
         stub += '.hidden ' + syscall["func"] + '\n'
 
     return stub
@@ -380,6 +384,120 @@
     return result
 
 
+class SysCallsTxtParser:
+    def __init__(self):
+        self.syscalls = []
+        self.lineno   = 0
+
+    def E(self, msg):
+        print "%d: %s" % (self.lineno, msg)
+
+    def parse_line(self, line):
+        """ parse a syscall spec line.
+
+        line processing, format is
+           return type    func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
+        """
+        pos_lparen = line.find('(')
+        E          = self.E
+        if pos_lparen < 0:
+            E("missing left parenthesis in '%s'" % line)
+            return
+
+        pos_rparen = line.rfind(')')
+        if pos_rparen < 0 or pos_rparen <= pos_lparen:
+            E("missing or misplaced right parenthesis in '%s'" % line)
+            return
+
+        return_type = line[:pos_lparen].strip().split()
+        if len(return_type) < 2:
+            E("missing return type in '%s'" % line)
+            return
+
+        syscall_func = return_type[-1]
+        return_type  = string.join(return_type[:-1],' ')
+        socketcall_id = -1
+
+        pos_colon = syscall_func.find(':')
+        if pos_colon < 0:
+            syscall_name = syscall_func
+        else:
+            if pos_colon == 0 or pos_colon+1 >= len(syscall_func):
+                E("misplaced colon in '%s'" % line)
+                return
+
+            # now find if there is a socketcall_id for a dispatch-type syscall
+            # after the optional 2nd colon
+            pos_colon2 = syscall_func.find(':', pos_colon + 1)
+            if pos_colon2 < 0:
+                syscall_name = syscall_func[pos_colon+1:]
+                syscall_func = syscall_func[:pos_colon]
+            else:
+                if pos_colon2+1 >= len(syscall_func):
+                    E("misplaced colon2 in '%s'" % line)
+                    return
+                syscall_name = syscall_func[(pos_colon+1):pos_colon2]
+                socketcall_id = int(syscall_func[pos_colon2+1:])
+                syscall_func = syscall_func[:pos_colon]
+
+        alias_delim = syscall_func.find('|')
+        if alias_delim > 0:
+            alias_list = syscall_func[alias_delim+1:].strip()
+            syscall_func = syscall_func[:alias_delim]
+            alias_delim = syscall_name.find('|')
+            if alias_delim > 0:
+                syscall_name = syscall_name[:alias_delim]
+            syscall_aliases = string.split(alias_list, ',')
+        else:
+            syscall_aliases = []
+
+        if pos_rparen > pos_lparen+1:
+            syscall_params = line[pos_lparen+1:pos_rparen].split(',')
+            params         = string.join(syscall_params,',')
+        else:
+            syscall_params = []
+            params         = "void"
+
+        t = {
+              "name"    : syscall_name,
+              "func"    : syscall_func,
+              "aliases" : syscall_aliases,
+              "params"  : syscall_params,
+              "decl"    : "%-15s  %s (%s);" % (return_type, syscall_func, params),
+              "socketcall_id" : socketcall_id
+        }
+
+        # Parse the architecture list.
+        arch_list = line[pos_rparen+1:].strip()
+        if arch_list == "all":
+            for arch in all_arches:
+                t[arch] = True
+        else:
+            for arch in string.split(arch_list, ','):
+                if arch in all_arches:
+                    t[arch] = True
+                else:
+                    E("invalid syscall architecture '%s' in '%s'" % (arch, line))
+                    return
+
+        self.syscalls.append(t)
+
+        logging.debug(t)
+
+
+    def parse_file(self, file_path):
+        logging.debug("parse_file: %s" % file_path)
+        fp = open(file_path)
+        for line in fp.xreadlines():
+            self.lineno += 1
+            line = line.strip()
+            if not line: continue
+            if line[0] == '#': continue
+            self.parse_line(line)
+
+        fp.close()
+
+
 class State:
     def __init__(self):
         self.old_stubs = []
@@ -437,22 +555,22 @@
     def gen_glibc_syscalls_h(self):
         # TODO: generate a separate file for each architecture, like glibc's bits/syscall.h.
         glibc_syscalls_h_path = "include/sys/glibc-syscalls.h"
-        D("generating " + glibc_syscalls_h_path)
+        logging.info("generating " + glibc_syscalls_h_path)
         glibc_fp = create_file(glibc_syscalls_h_path)
         glibc_fp.write("/* %s */\n" % warning)
         glibc_fp.write("#ifndef _BIONIC_GLIBC_SYSCALLS_H_\n")
         glibc_fp.write("#define _BIONIC_GLIBC_SYSCALLS_H_\n")
 
         glibc_fp.write("#if defined(__aarch64__)\n")
-        self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-generic/unistd.h")
+        self.scan_linux_unistd_h(glibc_fp, os.path.join(bionic_libc_root, "kernel/uapi/asm-generic/unistd.h"))
         glibc_fp.write("#elif defined(__arm__)\n")
-        self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-arm/asm/unistd.h")
+        self.scan_linux_unistd_h(glibc_fp, os.path.join(bionic_libc_root, "kernel/uapi/asm-arm/asm/unistd.h"))
         glibc_fp.write("#elif defined(__mips__)\n")
-        self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-mips/asm/unistd.h")
+        self.scan_linux_unistd_h(glibc_fp, os.path.join(bionic_libc_root, "kernel/uapi/asm-mips/asm/unistd.h"))
         glibc_fp.write("#elif defined(__i386__)\n")
-        self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-x86/asm/unistd_32.h")
+        self.scan_linux_unistd_h(glibc_fp, os.path.join(bionic_libc_root, "kernel/uapi/asm-x86/asm/unistd_32.h"))
         glibc_fp.write("#elif defined(__x86_64__)\n")
-        self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-x86/asm/unistd_64.h")
+        self.scan_linux_unistd_h(glibc_fp, os.path.join(bionic_libc_root, "kernel/uapi/asm-x86/asm/unistd_64.h"))
         glibc_fp.write("#endif\n")
 
         glibc_fp.write("#endif /* _BIONIC_GLIBC_SYSCALLS_H_ */\n")
@@ -466,7 +584,7 @@
             for arch in all_arches:
                 if syscall.has_key("asm-%s" % arch):
                     filename = "arch-%s/syscalls/%s.S" % (arch, syscall["func"])
-                    D2(">>> generating " + filename)
+                    logging.info(">>> generating " + filename)
                     fp = create_file(filename)
                     fp.write(syscall["asm-%s" % arch])
                     fp.close()
@@ -474,48 +592,49 @@
 
 
     def regenerate(self):
-        D("scanning for existing architecture-specific stub files...")
-
-        bionic_libc_root_len = len(bionic_libc_root)
+        logging.info("scanning for existing architecture-specific stub files...")
 
         for arch in all_arches:
-            arch_path = bionic_libc_root + "arch-" + arch
-            D("scanning " + arch_path)
-            files = glob.glob(arch_path + "/syscalls/*.S")
-            for f in files:
-                self.old_stubs.append(f[bionic_libc_root_len:])
+            arch_dir = "arch-" + arch
+            logging.info("scanning " + os.path.join(bionic_libc_root, arch_dir))
+            rel_path = os.path.join(arch_dir, "syscalls")
+            for file in os.listdir(os.path.join(bionic_libc_root, rel_path)):
+                if file.endswith(".S"):
+                  self.old_stubs.append(os.path.join(rel_path, file))
 
-        D("found %d stub files" % len(self.old_stubs))
+        logging.info("found %d stub files" % len(self.old_stubs))
 
         if not os.path.exists(bionic_temp):
-            D("creating %s..." % bionic_temp)
+            logging.info("creating %s..." % bionic_temp)
             make_dir(bionic_temp)
 
-        D("re-generating stubs and support files...")
+        logging.info("re-generating stubs and support files...")
 
         self.gen_glibc_syscalls_h()
         self.gen_syscall_stubs()
 
-        D("comparing files...")
+        logging.info("comparing files...")
         adds    = []
         edits   = []
 
         for stub in self.new_stubs + self.other_files:
-            if not os.path.exists(bionic_libc_root + stub):
+            tmp_file = os.path.join(bionic_temp, stub)
+            libc_file = os.path.join(bionic_libc_root, stub)
+            if not os.path.exists(libc_file):
                 # new file, git add it
-                D("new file:     " + stub)
-                adds.append(bionic_libc_root + stub)
-                shutil.copyfile(bionic_temp + stub, bionic_libc_root + stub)
+                logging.info("new file:     " + stub)
+                adds.append(libc_file)
+                shutil.copyfile(tmp_file, libc_file)
 
-            elif not filecmp.cmp(bionic_temp + stub, bionic_libc_root + stub):
-                D("changed file: " + stub)
+            elif not filecmp.cmp(tmp_file, libc_file):
+                logging.info("changed file: " + stub)
                 edits.append(stub)
 
         deletes = []
         for stub in self.old_stubs:
             if not stub in self.new_stubs:
-                D("deleted file: " + stub)
-                deletes.append(bionic_libc_root + stub)
+                logging.info("deleted file: " + stub)
+                deletes.append(os.path.join(bionic_libc_root, stub))
 
         if not DRY_RUN:
             if adds:
@@ -524,18 +643,19 @@
                 commands.getoutput("git rm " + " ".join(deletes))
             if edits:
                 for file in edits:
-                    shutil.copyfile(bionic_temp + file, bionic_libc_root + file)
-                commands.getoutput("git add " + " ".join((bionic_libc_root + file) for file in edits))
+                    shutil.copyfile(os.path.join(bionic_temp, file),
+                                    os.path.join(bionic_libc_root, file))
+                commands.getoutput("git add " + " ".join((os.path.join(bionic_libc_root, file)) for file in edits))
 
-            commands.getoutput("git add %s%s" % (bionic_libc_root,"SYSCALLS.TXT"))
+            commands.getoutput("git add %s" % (os.path.join(bionic_libc_root, "SYSCALLS.TXT")))
 
         if (not adds) and (not deletes) and (not edits):
-            D("no changes detected!")
+            logging.info("no changes detected!")
         else:
-            D("ready to go!!")
+            logging.info("ready to go!!")
 
-D_setlevel(1)
+logging.basicConfig(level=logging.INFO)
 
 state = State()
-state.process_file(bionic_libc_root+"SYSCALLS.TXT")
+state.process_file(os.path.join(bionic_libc_root, "SYSCALLS.TXT"))
 state.regenerate()
diff --git a/libc/tools/ndk_missing_symbols.py b/libc/tools/ndk_missing_symbols.py
new file mode 100755
index 0000000..a9f92b1
--- /dev/null
+++ b/libc/tools/ndk_missing_symbols.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python2
+#
+# 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.
+#
+import os
+import subprocess
+import tempfile
+
+import symbols
+
+
+def adb_pull(src, dst):
+    with open(os.devnull, 'w') as devnull:
+        subprocess.check_call(['adb', 'pull', src, dst],
+                              stdout=devnull, stderr=devnull)
+
+
+def main():
+    tmp_dir = tempfile.mkdtemp()
+    adb_pull('/system/lib/libc.so', tmp_dir)
+    adb_pull('/system/lib/libm.so', tmp_dir)
+
+    current = symbols.GetFromAndroidSo(['libc.so', 'libm.so'])
+    device = (symbols.GetFromElf(os.path.join(tmp_dir, 'libc.so')) |
+              symbols.GetFromElf(os.path.join(tmp_dir, 'libm.so')))
+    compat_lib = symbols.GetFromAndroidStaticLib(['libc_ndk.a'])
+
+    missing_symbols = current - device
+    compat_not_covered = missing_symbols - compat_lib
+
+    for symbol in sorted(compat_not_covered):
+        print symbol
+
+
+if __name__ == '__main__':
+    main()
diff --git a/libc/tools/posix-2013.txt b/libc/tools/posix-2013.txt
new file mode 100644
index 0000000..6972c81
--- /dev/null
+++ b/libc/tools/posix-2013.txt
@@ -0,0 +1,1191 @@
+FD_CLR
+FD_ISSET
+FD_SET
+FD_ZERO
+_Exit
+_exit
+_longjmp
+_setjmp
+_tolower
+_toupper
+a64l
+abort
+abs
+accept
+access
+acosf
+acoshf
+acosh
+acoshl
+acos
+acosl
+aio_cancel
+aio_error
+aio_fsync
+aio_read
+aio_return
+aio_suspend
+aio_write
+alarm
+alphasort
+asctime
+asctime_r
+asinf
+asinhf
+asinh
+asinhl
+asin
+asinl
+assert
+atan2f
+atan2
+atan2l
+atanf
+atanhf
+atanh
+atanhl
+atan
+atanl
+atexit
+atof
+atoi
+atol
+atoll
+basename
+bind
+bsearch
+btowc
+cabsf
+cabs
+cabsl
+cacosf
+cacoshf
+cacosh
+cacoshl
+cacos
+cacosl
+calloc
+cargf
+carg
+cargl
+casinf
+casinhf
+casinh
+casinhl
+casin
+casinl
+catanf
+catanhf
+catanh
+catanhl
+catan
+catanl
+catclose
+catgets
+catopen
+cbrtf
+cbrt
+cbrtl
+ccosf
+ccoshf
+ccosh
+ccoshl
+ccos
+ccosl
+ceilf
+ceil
+ceill
+cexpf
+cexp
+cexpl
+cfgetispeed
+cfgetospeed
+cfsetispeed
+cfsetospeed
+chdir
+chmod
+chown
+cimagf
+cimag
+cimagl
+clearerr
+clock_getcpuclockid
+clock_getres
+clock_gettime
+clock
+clock_nanosleep
+clock_settime
+clogf
+clog
+clogl
+closedir
+close
+closelog
+confstr
+conjf
+conj
+conjl
+connect
+copysignf
+copysign
+copysignl
+cosf
+coshf
+cosh
+coshl
+cos
+cosl
+cpowf
+cpow
+cpowl
+cprojf
+cproj
+cprojl
+crealf
+creal
+creall
+creat
+crypt
+csinf
+csinhf
+csinh
+csinhl
+csin
+csinl
+csqrtf
+csqrt
+csqrtl
+ctanf
+ctanhf
+ctanh
+ctanhl
+ctan
+ctanl
+ctermid
+ctime
+ctime_r
+daylight
+dbm_clearerr
+dbm_close
+dbm_delete
+dbm_error
+dbm_fetch
+dbm_firstkey
+dbm_nextkey
+dbm_open
+dbm_store
+difftime
+dirfd
+dirname
+div
+dlclose
+dlerror
+dlopen
+dlsym
+dprintf
+drand48
+dup2
+dup
+duplocale
+encrypt
+endgrent
+endhostent
+endnetent
+endprotoent
+endpwent
+endservent
+endutxent
+environ
+erand48
+erfcf
+erfc
+erfcl
+erff
+erf
+erfl
+errno
+execle
+execl
+execlp
+execve
+execv
+execvp
+exit
+exp2f
+exp2
+exp2l
+expf
+exp
+expl
+expm1f
+expm1
+expm1l
+fabsf
+fabs
+fabsl
+faccessat
+fattach
+fchdir
+fchmodat
+fchmod
+fchownat
+fchown
+fclose
+fcntl
+fdatasync
+fdetach
+fdimf
+fdim
+fdiml
+fdopendir
+fdopen
+feclearexcept
+fegetenv
+fegetexceptflag
+fegetround
+feholdexcept
+feof
+feraiseexcept
+ferror
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+fexecve
+fflush
+ffs
+fgetc
+fgetpos
+fgets
+fgetwc
+fgetws
+fileno
+flockfile
+floorf
+floor
+floorl
+fmaf
+fma
+fmal
+fmaxf
+fmax
+fmaxl
+fmemopen
+fminf
+fmin
+fminl
+fmodf
+fmod
+fmodl
+fmtmsg
+fnmatch
+fopen
+fork
+fpathconf
+fpclassify
+fprintf
+fputc
+fputs
+fputwc
+fputws
+fread
+freeaddrinfo
+free
+freelocale
+freopen
+frexpf
+frexp
+frexpl
+fscanf
+fseek
+fseeko
+fsetpos
+fstatat
+fstat
+fstatvfs
+fsync
+ftell
+ftello
+ftok
+ftruncate
+ftrylockfile
+ftw
+funlockfile
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+getaddrinfo
+getchar
+getchar_unlocked
+getc
+getc_unlocked
+getcwd
+getdate_err
+getdate
+getdelim
+getegid
+getenv
+geteuid
+getgid
+getgrent
+getgrgid
+getgrgid_r
+getgrnam
+getgrnam_r
+getgroups
+gethostent
+gethostid
+gethostname
+getitimer
+getline
+getlogin
+getlogin_r
+getmsg
+getnameinfo
+getnetbyaddr
+getnetbyname
+getnetent
+getopt
+getpeername
+getpgid
+getpgrp
+getpid
+getpmsg
+getppid
+getpriority
+getprotobyname
+getprotobynumber
+getprotoent
+getpwent
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getrlimit
+getrusage
+getservbyname
+getservbyport
+getservent
+gets
+getsid
+getsockname
+getsockopt
+getsubopt
+gettimeofday
+getuid
+getutxent
+getutxid
+getutxline
+getwchar
+getwc
+globfree
+glob
+gmtime
+gmtime_r
+grantpt
+hcreate
+hdestroy
+hsearch
+htonl
+htons
+hypotf
+hypot
+hypotl
+iconv_close
+iconv
+iconv_open
+if_freenameindex
+if_indextoname
+if_nameindex
+if_nametoindex
+ilogbf
+ilogb
+ilogbl
+imaxabs
+imaxdiv
+inet_addr
+inet_ntoa
+inet_ntop
+inet_pton
+initstate
+insque
+ioctl
+isalnum
+isalnum_l
+isalpha
+isalpha_l
+isascii
+isastream
+isatty
+isblank
+isblank_l
+iscntrl
+iscntrl_l
+isdigit
+isdigit_l
+isfinite
+isgraph
+isgraph_l
+isgreaterequal
+isgreater
+isinf
+islessequal
+islessgreater
+isless
+islower
+islower_l
+isnan
+isnormal
+isprint
+isprint_l
+ispunct
+ispunct_l
+isspace
+isspace_l
+isunordered
+isupper
+isupper_l
+iswalnum
+iswalnum_l
+iswalpha
+iswalpha_l
+iswblank
+iswblank_l
+iswcntrl
+iswcntrl_l
+iswctype
+iswctype_l
+iswdigit
+iswdigit_l
+iswgraph
+iswgraph_l
+iswlower
+iswlower_l
+iswprint
+iswprint_l
+iswpunct
+iswpunct_l
+iswspace
+iswspace_l
+iswupper
+iswupper_l
+iswxdigit
+iswxdigit_l
+isxdigit
+isxdigit_l
+j0
+j1
+jn
+jrand48
+kill
+killpg
+l64a
+labs
+lchown
+lcong48
+ldexpf
+ldexp
+ldexpl
+ldiv
+lfind
+lgammaf
+lgamma
+lgammal
+linkat
+link
+lio_listio
+listen
+llabs
+lldiv
+llrintf
+llrint
+llrintl
+llroundf
+llround
+llroundl
+localeconv
+localtime
+localtime_r
+lockf
+log10f
+log10
+log10l
+log1pf
+log1p
+log1pl
+log2f
+log2
+log2l
+logbf
+logb
+logbl
+logf
+log
+logl
+longjmp
+lrand48
+lrintf
+lrint
+lrintl
+lroundf
+lround
+lroundl
+lsearch
+lseek
+lstat
+malloc
+mblen
+mbrlen
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memccpy
+memchr
+memcmp
+memcpy
+memmove
+memset
+mkdirat
+mkdir
+mkdtemp
+mkfifoat
+mkfifo
+mknodat
+mknod
+mkstemp
+mktime
+mlockall
+mlock
+mmap
+modff
+modf
+modfl
+mprotect
+mq_close
+mq_getattr
+mq_notify
+mq_open
+mq_receive
+mq_send
+mq_setattr
+mq_timedreceive
+mq_timedsend
+mq_unlink
+mrand48
+msgctl
+msgget
+msgrcv
+msgsnd
+msync
+munlockall
+munlock
+munmap
+nanf
+nan
+nanl
+nanosleep
+nearbyintf
+nearbyint
+nearbyintl
+newlocale
+nextafterf
+nextafter
+nextafterl
+nexttowardf
+nexttoward
+nexttowardl
+nftw
+nice
+nl_langinfo
+nl_langinfo_l
+nrand48
+ntohl
+ntohs
+openat
+opendir
+open
+openlog
+open_memstream
+open_wmemstream
+optarg
+opterr
+optind
+optopt
+pathconf
+pause
+pclose
+perror
+pipe
+poll
+popen
+posix_fadvise
+posix_fallocate
+posix_madvise
+posix_memalign
+posix_mem_offset
+posix_openpt
+posix_spawnattr_destroy
+posix_spawnattr_getflags
+posix_spawnattr_getpgroup
+posix_spawnattr_getschedparam
+posix_spawnattr_getschedpolicy
+posix_spawnattr_getsigdefault
+posix_spawnattr_getsigmask
+posix_spawnattr_init
+posix_spawnattr_setflags
+posix_spawnattr_setpgroup
+posix_spawnattr_setschedparam
+posix_spawnattr_setschedpolicy
+posix_spawnattr_setsigdefault
+posix_spawnattr_setsigmask
+posix_spawn_file_actions_addclose
+posix_spawn_file_actions_adddup2
+posix_spawn_file_actions_addopen
+posix_spawn_file_actions_destroy
+posix_spawn_file_actions_init
+posix_spawn
+posix_spawnp
+posix_trace_attr_destroy
+posix_trace_attr_getclockres
+posix_trace_attr_getcreatetime
+posix_trace_attr_getgenversion
+posix_trace_attr_getinherited
+posix_trace_attr_getlogfullpolicy
+posix_trace_attr_getlogsize
+posix_trace_attr_getmaxdatasize
+posix_trace_attr_getmaxsystemeventsize
+posix_trace_attr_getmaxusereventsize
+posix_trace_attr_getname
+posix_trace_attr_getstreamfullpolicy
+posix_trace_attr_getstreamsize
+posix_trace_attr_init
+posix_trace_attr_setinherited
+posix_trace_attr_setlogfullpolicy
+posix_trace_attr_setlogsize
+posix_trace_attr_setmaxdatasize
+posix_trace_attr_setname
+posix_trace_attr_setstreamfullpolicy
+posix_trace_attr_setstreamsize
+posix_trace_clear
+posix_trace_close
+posix_trace_create
+posix_trace_create_withlog
+posix_trace_event
+posix_trace_eventid_equal
+posix_trace_eventid_get_name
+posix_trace_eventid_open
+posix_trace_eventset_add
+posix_trace_eventset_del
+posix_trace_eventset_empty
+posix_trace_eventset_fill
+posix_trace_eventset_ismember
+posix_trace_eventtypelist_getnext_id
+posix_trace_eventtypelist_rewind
+posix_trace_flush
+posix_trace_get_attr
+posix_trace_get_filter
+posix_trace_getnext_event
+posix_trace_get_status
+posix_trace_open
+posix_trace_rewind
+posix_trace_set_filter
+posix_trace_shutdown
+posix_trace_start
+posix_trace_stop
+posix_trace_timedgetnext_event
+posix_trace_trid_eventid_open
+posix_trace_trygetnext_event
+posix_typed_mem_get_info
+posix_typed_mem_open
+powf
+pow
+powl
+pread
+printf
+pselect
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getinheritsched
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setinheritsched
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstacksize
+pthread_barrierattr_destroy
+pthread_barrierattr_getpshared
+pthread_barrierattr_init
+pthread_barrierattr_setpshared
+pthread_barrier_destroy
+pthread_barrier_init
+pthread_barrier_wait
+pthread_cancel
+pthread_cleanup_pop
+pthread_cleanup_push
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_wait
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getconcurrency
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutexattr_destroy
+pthread_mutexattr_getprioceiling
+pthread_mutexattr_getprotocol
+pthread_mutexattr_getpshared
+pthread_mutexattr_getrobust
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setprioceiling
+pthread_mutexattr_setprotocol
+pthread_mutexattr_setpshared
+pthread_mutexattr_setrobust
+pthread_mutexattr_settype
+pthread_mutex_consistent
+pthread_mutex_destroy
+pthread_mutex_getprioceiling
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_setprioceiling
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_once
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_self
+pthread_setcancelstate
+pthread_setcanceltype
+pthread_setconcurrency
+pthread_setschedparam
+pthread_setschedprio
+pthread_setspecific
+pthread_sigmask
+pthread_spin_destroy
+pthread_spin_init
+pthread_spin_lock
+pthread_spin_trylock
+pthread_spin_unlock
+pthread_testcancel
+ptsname
+putchar
+putchar_unlocked
+putc
+putc_unlocked
+putenv
+putmsg
+putpmsg
+puts
+pututxline
+putwchar
+putwc
+pwrite
+qsort
+raise
+rand
+random
+rand_r
+readdir
+readdir_r
+read
+readlinkat
+readlink
+readv
+realloc
+realpath
+recvfrom
+recv
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remainderf
+remainder
+remainderl
+remove
+remque
+remquof
+remquo
+remquol
+renameat
+rename
+rewinddir
+rewind
+rintf
+rint
+rintl
+rmdir
+roundf
+round
+roundl
+scalblnf
+scalbln
+scalblnl
+scalbnf
+scalbn
+scalbnl
+scandir
+scanf
+sched_getparam
+sched_get_priority_max
+sched_get_priority_min
+sched_getscheduler
+sched_rr_get_interval
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+seekdir
+select
+sem_close
+semctl
+sem_destroy
+semget
+sem_getvalue
+sem_init
+sem_open
+semop
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendmsg
+sendto
+setbuf
+setegid
+setenv
+seteuid
+setgid
+setgrent
+sethostent
+setitimer
+setjmp
+setkey
+setlocale
+setlogmask
+setnetent
+setpgid
+setpgrp
+setpriority
+setprotoent
+setpwent
+setregid
+setreuid
+setrlimit
+setservent
+setsid
+setsockopt
+setstate
+setuid
+setutxent
+setvbuf
+shmat
+shmctl
+shmdt
+shmget
+shm_open
+shm_unlink
+shutdown
+sigaction
+sigaddset
+sigaltstack
+sigdelset
+sigemptyset
+sigfillset
+sighold
+sigignore
+siginterrupt
+sigismember
+siglongjmp
+signal
+signbit
+signgam
+sigpause
+sigpending
+sigprocmask
+sigqueue
+sigrelse
+sigset
+sigsetjmp
+sigsuspend
+sigtimedwait
+sigwait
+sigwaitinfo
+sinf
+sinhf
+sinh
+sinhl
+sin
+sinl
+sleep
+snprintf
+sockatmark
+socket
+socketpair
+sprintf
+sqrtf
+sqrt
+sqrtl
+srand48
+srand
+srandom
+sscanf
+stat
+statvfs
+stderr
+stdin
+stdout
+stpcpy
+stpncpy
+strcasecmp
+strcasecmp_l
+strcat
+strchr
+strcmp
+strcoll
+strcoll_l
+strcpy
+strcspn
+strdup
+strerror
+strerror_l
+strerror_r
+strfmon
+strfmon_l
+strftime
+strftime_l
+strlen
+strncasecmp
+strncasecmp_l
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strpbrk
+strptime
+strrchr
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtold
+strtol
+strtoll
+strtoul
+strtoull
+strtoumax
+strxfrm
+strxfrm_l
+swab
+swprintf
+swscanf
+symlinkat
+symlink
+sync
+sysconf
+syslog
+system
+tanf
+tanhf
+tanh
+tanhl
+tan
+tanl
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+telldir
+tempnam
+tfind
+tgammaf
+tgamma
+tgammal
+time
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+times
+timezone
+tmpfile
+tmpnam
+toascii
+tolower
+tolower_l
+toupper
+toupper_l
+towctrans
+towctrans_l
+towlower
+towlower_l
+towupper
+towupper_l
+truncate
+truncf
+trunc
+truncl
+tsearch
+ttyname
+ttyname_r
+twalk
+tzname
+tzset
+ulimit
+umask
+uname
+ungetc
+ungetwc
+unlinkat
+unlink
+unlockpt
+unsetenv
+uselocale
+utime
+utimensat
+utimes
+va_arg
+va_copy
+va_end
+va_start
+vdprintf
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vwprintf
+vwscanf
+wait
+waitid
+waitpid
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscasecmp_l
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscoll_l
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslen
+wcsncasecmp
+wcsncasecmp_l
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstold
+wcstol
+wcstoll
+wcstombs
+wcstoul
+wcstoull
+wcstoumax
+wcswidth
+wcsxfrm
+wcsxfrm_l
+wctob
+wctomb
+wctrans
+wctrans_l
+wctype
+wctype_l
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wordexp
+wordfree
+wprintf
+write
+writev
+wscanf
+y0
+y1
+yn
diff --git a/libc/tools/symbols.py b/libc/tools/symbols.py
new file mode 100644
index 0000000..3f40aad
--- /dev/null
+++ b/libc/tools/symbols.py
@@ -0,0 +1,90 @@
+#
+# 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.
+#
+import glob
+import os
+import re
+import subprocess
+
+
+def GetFromTxt(txt_file):
+    symbols = set()
+    f = open(txt_file, 'r')
+    for line in f.read().splitlines():
+        symbols.add(line)
+    f.close()
+    return symbols
+
+
+def GetFromElf(elf_file, sym_type='--dyn-syms'):
+    # pylint: disable=line-too-long
+    # Example readelf output:
+    #     264: 0001623c         4 FUNC        GLOBAL DEFAULT        8 cabsf
+    #     266: 00016244         4 FUNC        GLOBAL DEFAULT        8 dremf
+    #     267: 00019018         4 OBJECT    GLOBAL DEFAULT     11 __fe_dfl_env
+    #     268: 00000000         0 FUNC        GLOBAL DEFAULT    UND __aeabi_dcmplt
+
+    r = re.compile(
+        r' +\d+: [0-9a-f]+ +\d+ (I?FUNC|OBJECT) +\S+ +\S+ +\d+ (\S+)')
+
+    symbols = set()
+
+    output = subprocess.check_output(['readelf', sym_type, '-W', elf_file])
+    for line in output.split('\n'):
+        if ' HIDDEN ' in line or ' UND ' in line:
+            continue
+        m = r.match(line)
+        if m:
+            symbol = m.group(2)
+            symbol = re.sub('@.*', '', symbol)
+            symbols.add(symbol)
+
+    return symbols
+
+
+def GetFromAndroidStaticLib(files):
+    out_dir = os.environ['ANDROID_PRODUCT_OUT']
+    lib_dir = os.path.join(out_dir, 'obj')
+
+    results = set()
+    for f in files:
+        static_lib_dir = os.path.join(
+            lib_dir,
+            'STATIC_LIBRARIES',
+            '{}_intermediates'.format(os.path.splitext(f)[0]))
+        results |= GetFromElf(
+            os.path.join(static_lib_dir, f),
+            sym_type='--syms')
+    return results
+
+
+def GetFromAndroidSo(files):
+    out_dir = os.environ['ANDROID_PRODUCT_OUT']
+    lib_dir = os.path.join(out_dir, 'system/lib64')
+    if not os.path.isdir(lib_dir):
+        lib_dir = os.path.join(out_dir, 'system/lib')
+
+    results = set()
+    for f in files:
+        results |= GetFromElf(os.path.join(lib_dir, f))
+    return results
+
+
+def GetFromSystemSo(files):
+    lib_dir = '/lib/x86_64-linux-gnu'
+    results = set()
+    for f in files:
+        results |= GetFromElf(glob.glob(os.path.join(lib_dir, f))[-1])
+    return results
diff --git a/libc/tools/zoneinfo/update-tzdata.py b/libc/tools/zoneinfo/update-tzdata.py
index 4847356..68a5ff5 100755
--- a/libc/tools/zoneinfo/update-tzdata.py
+++ b/libc/tools/zoneinfo/update-tzdata.py
@@ -33,9 +33,12 @@
 CheckDirExists(bionic_libc_tools_zoneinfo_dir, 'bionic/libc/tools/zoneinfo')
 print 'Found bionic in %s ...' % bionic_dir
 
-# Find the icu4c directory.
-icu_dir = os.path.realpath('%s/../external/icu/icu4c/source' % bionic_dir)
-CheckDirExists(icu_dir, 'external/icu/icu4c/source')
+# Find the icu directory.
+icu_dir = os.path.realpath('%s/../external/icu' % bionic_dir)
+icu4c_dir = os.path.realpath('%s/icu4c/source' % icu_dir)
+icu4j_dir = os.path.realpath('%s/icu4j' % icu_dir)
+CheckDirExists(icu4c_dir, 'external/icu/icu4c/source')
+CheckDirExists(icu4j_dir, 'external/icu/icu4j')
 print 'Found icu in %s ...' % icu_dir
 
 
@@ -116,14 +119,14 @@
 
   # Build the ICU tools.
   print 'Configuring ICU tools...'
-  subprocess.check_call(['%s/runConfigureICU' % icu_dir, 'Linux'])
+  subprocess.check_call(['%s/runConfigureICU' % icu4c_dir, 'Linux'])
 
   # Run the ICU tools.
   os.chdir('tools/tzcode')
 
   # The tz2icu tool only picks up icuregions and icuzones in they are in the CWD
   for icu_data_file in [ 'icuregions', 'icuzones']:
-    icu_data_file_source = '%s/tools/tzcode/%s' % (icu_dir, icu_data_file)
+    icu_data_file_source = '%s/tools/tzcode/%s' % (icu4c_dir, icu_data_file)
     icu_data_file_symlink = './%s' % icu_data_file
     os.symlink(icu_data_file_source, icu_data_file_symlink)
 
@@ -134,16 +137,16 @@
   subprocess.check_call(['make'])
 
   # Copy the source file to its ultimate destination.
-  icu_txt_data_dir = '%s/data/misc' % icu_dir
+  icu_txt_data_dir = '%s/data/misc' % icu4c_dir
   print 'Copying zoneinfo64.txt to %s ...' % icu_txt_data_dir
   shutil.copy('zoneinfo64.txt', icu_txt_data_dir)
 
   # Regenerate the .dat file.
   os.chdir(icu_working_dir)
-  subprocess.check_call(['make', '-j32'])
+  subprocess.check_call(['make', 'INCLUDE_UNI_CORE_DATA=1', '-j32'])
 
   # Copy the .dat file to its ultimate destination.
-  icu_dat_data_dir = '%s/stubdata' % icu_dir
+  icu_dat_data_dir = '%s/stubdata' % icu4c_dir
   datfiles = glob.glob('data/out/tmp/icudt??l.dat')
   if len(datfiles) != 1:
     print 'ERROR: Unexpectedly found %d .dat files (%s). Halting.' % (len(datfiles), datfiles)
@@ -152,6 +155,20 @@
   print 'Copying %s to %s ...' % (datfile, icu_dat_data_dir)
   shutil.copy(datfile, icu_dat_data_dir)
 
+  # Generate the ICU4J .jar files
+  os.chdir('%s/data' % icu_working_dir)
+  subprocess.check_call(['make', 'icu4j-data'])
+
+  # Copy the ICU4J .jar files to their ultimate destination.
+  icu_jar_data_dir = '%s/main/shared/data' % icu4j_dir
+  jarfiles = glob.glob('out/icu4j/*.jar')
+  if len(jarfiles) != 2:
+    print 'ERROR: Unexpectedly found %d .jar files (%s). Halting.' % (len(jarfiles), jarfiles)
+    sys.exit(1)
+  for jarfile in jarfiles:
+    print 'Copying %s to %s ...' % (jarfile, icu_jar_data_dir)
+    shutil.copy(jarfile, icu_jar_data_dir)
+
   # Switch back to the original working cwd.
   os.chdir(original_working_dir)
 
diff --git a/libc/tzcode/asctime.c b/libc/tzcode/asctime.c
index 152b0db..fea24e4 100644
--- a/libc/tzcode/asctime.c
+++ b/libc/tzcode/asctime.c
@@ -103,7 +103,7 @@
 	/*
 	** We avoid using snprintf since it's not available on all systems.
 	*/
-	(void) sprintf(result,
+	(void) snprintf(result, sizeof(result), /* Android change: use snprintf. */
 		((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B),
 		wn, mn,
 		timeptr->tm_mday, timeptr->tm_hour,
diff --git a/libc/tzcode/localtime.c b/libc/tzcode/localtime.c
index 28d13f4..bf09c5e 100644
--- a/libc/tzcode/localtime.c
+++ b/libc/tzcode/localtime.c
@@ -1257,6 +1257,7 @@
         lclptr->ttis[0].tt_gmtoff = 0;
         lclptr->ttis[0].tt_abbrind = 0;
         (void) strcpy(lclptr->chars, gmt);
+        lclptr->defaulttype = 0;
     } else if (tzload(name, lclptr, TRUE) != 0)
         if (name[0] == ':' || tzparse(name, lclptr, FALSE) != 0)
             (void) gmtload(lclptr);
@@ -2252,11 +2253,14 @@
 }
 
 static int __bionic_open_tzdata(const char* olson_id, int* data_size) {
-  int fd = __bionic_open_tzdata_path("ANDROID_ROOT", "/usr/share/zoneinfo/tzdata", olson_id, data_size);
-  if (fd == -2) {
-    // The first thing that 'recovery' does is try to format the current time. It doesn't have
-    // any tzdata available, so we must not abort here --- doing so breaks the recovery image!
-    fprintf(stderr, "%s: couldn't find any tzdata when looking for %s!\n", __FUNCTION__, olson_id);
+  int fd = __bionic_open_tzdata_path("ANDROID_DATA", "/misc/zoneinfo/current/tzdata", olson_id, data_size);
+  if (fd < 0) {
+    fd = __bionic_open_tzdata_path("ANDROID_ROOT", "/usr/share/zoneinfo/tzdata", olson_id, data_size);
+    if (fd == -2) {
+      // The first thing that 'recovery' does is try to format the current time. It doesn't have
+      // any tzdata available, so we must not abort here --- doing so breaks the recovery image!
+      fprintf(stderr, "%s: couldn't find any tzdata when looking for %s!\n", __FUNCTION__, olson_id);
+    }
   }
   return fd;
 }
diff --git a/libc/upstream-freebsd/android/include/freebsd-compat.h b/libc/upstream-freebsd/android/include/freebsd-compat.h
index d5f1425..7acdf7c 100644
--- a/libc/upstream-freebsd/android/include/freebsd-compat.h
+++ b/libc/upstream-freebsd/android/include/freebsd-compat.h
@@ -17,7 +17,7 @@
 #ifndef _BIONIC_FREEBSD_COMPAT_H_included
 #define _BIONIC_FREEBSD_COMPAT_H_included
 
-#define __USE_BSD
+#define _BSD_SOURCE
 #define REPLACE_GETOPT
 
 /*
@@ -38,17 +38,6 @@
 #define __usleep usleep
 
 /* Redirect internal C library calls to the public function. */
-#define _close close
-#define _fcntl fcntl
-#define _fstat fstat
 #define _nanosleep nanosleep
-#define _open open
-
-/* This one is only needed as long as we have a mix of OpenBSD and FreeBSD stdio. */
-#define _sseek __sseek
-
-/* This is in BSD's <stdlib.h>. */
-#include <stdint.h>
-extern uint32_t arc4random_uniform(uint32_t upper_bound);
 
 #endif
diff --git a/libc/upstream-freebsd/android/include/libc_private.h b/libc/upstream-freebsd/android/include/libc_private.h
deleted file mode 100644
index c6a6433..0000000
--- a/libc/upstream-freebsd/android/include/libc_private.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#ifndef _BIONIC_FREEBSD_LIBC_PRIVATE_H_included
-#define _BIONIC_FREEBSD_LIBC_PRIVATE_H_included
-
-#define STDIO_THREAD_LOCK()   /* TODO: until we have the FreeBSD findfp.c, this is useless. */
-#define STDIO_THREAD_UNLOCK() /* TODO: until we have the FreeBSD findfp.c, this is useless. */
-
-#define ORIENT(fp, o) /* Only needed for wide-character stream support. */
-
-#endif
diff --git a/libc/upstream-freebsd/lib/libc/stdio/fclose.c b/libc/upstream-freebsd/lib/libc/stdio/fclose.c
deleted file mode 100644
index 5ed8b2c..0000000
--- a/libc/upstream-freebsd/lib/libc/stdio/fclose.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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. 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)fclose.c	8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "namespace.h"
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "un-namespace.h"
-#include <spinlock.h>
-#include "libc_private.h"
-#include "local.h"
-
-int
-fclose(FILE *fp)
-{
-	int r;
-
-	if (fp->_flags == 0) {	/* not open! */
-		errno = EBADF;
-		return (EOF);
-	}
-	FLOCKFILE(fp);
-	r = fp->_flags & __SWR ? __sflush(fp) : 0;
-	if (fp->_close != NULL && (*fp->_close)(fp->_cookie) < 0)
-		r = EOF;
-	if (fp->_flags & __SMBF)
-		free((char *)fp->_bf._base);
-	if (HASUB(fp))
-		FREEUB(fp);
-	if (HASLB(fp))
-		FREELB(fp);
-	fp->_file = -1;
-	fp->_r = fp->_w = 0;	/* Mess up if reaccessed. */
-
-	/*
-	 * Lock the spinlock used to protect __sglue list walk in
-	 * __sfp().  The __sfp() uses fp->_flags == 0 test as an
-	 * indication of the unused FILE.
-	 *
-	 * Taking the lock prevents possible compiler or processor
-	 * reordering of the writes performed before the final _flags
-	 * cleanup, making sure that we are done with the FILE before
-	 * it is considered available.
-	 */
-	STDIO_THREAD_LOCK();
-	fp->_flags = 0;		/* Release this FILE for reuse. */
-	STDIO_THREAD_UNLOCK();
-	FUNLOCKFILE(fp);
-	return (r);
-}
diff --git a/libc/upstream-freebsd/lib/libc/stdio/flags.c b/libc/upstream-freebsd/lib/libc/stdio/flags.c
deleted file mode 100644
index 1878c2f..0000000
--- a/libc/upstream-freebsd/lib/libc/stdio/flags.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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. 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)flags.c	8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/file.h>
-#include <stdio.h>
-#include <errno.h>
-
-#include "local.h"
-
-/*
- * Return the (stdio) flags for a given mode.  Store the flags
- * to be passed to an _open() syscall through *optr.
- * Return 0 on error.
- */
-int
-__sflags(const char *mode, int *optr)
-{
-	int ret, m, o;
-
-	switch (*mode++) {
-
-	case 'r':	/* open for reading */
-		ret = __SRD;
-		m = O_RDONLY;
-		o = 0;
-		break;
-
-	case 'w':	/* open for writing */
-		ret = __SWR;
-		m = O_WRONLY;
-		o = O_CREAT | O_TRUNC;
-		break;
-
-	case 'a':	/* open for appending */
-		ret = __SWR;
-		m = O_WRONLY;
-		o = O_CREAT | O_APPEND;
-		break;
-
-	default:	/* illegal mode */
-		errno = EINVAL;
-		return (0);
-	}
-
-	/* 'b' (binary) is ignored */
-	if (*mode == 'b')
-		mode++;
-
-	/* [rwa][b]\+ means read and write */
-	if (*mode == '+') {
-		mode++;
-		ret = __SRW;
-		m = O_RDWR;
-	}
-
-	/* 'b' (binary) can appear here, too -- and is ignored again */
-	if (*mode == 'b')
-		mode++;
-
-	/* 'x' means exclusive (fail if the file exists) */
-	if (*mode == 'x') {
-		mode++;
-		if (m == O_RDONLY) {
-			errno = EINVAL;
-			return (0);
-		}
-		o |= O_EXCL;
-	}
-
-	/* set close-on-exec */
-	if (*mode == 'e')
-		o |= O_CLOEXEC;
-
-	*optr = m | o;
-	return (ret);
-}
diff --git a/libc/upstream-freebsd/lib/libc/stdio/fopen.c b/libc/upstream-freebsd/lib/libc/stdio/fopen.c
deleted file mode 100644
index b08e336..0000000
--- a/libc/upstream-freebsd/lib/libc/stdio/fopen.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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. 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)fopen.c	8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "namespace.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-#include <limits.h>
-#include "un-namespace.h"
-
-#include "local.h"
-
-FILE *
-fopen(const char * __restrict file, const char * __restrict mode)
-{
-	FILE *fp;
-	int f;
-	int flags, oflags;
-
-	if ((flags = __sflags(mode, &oflags)) == 0)
-		return (NULL);
-	if ((fp = __sfp()) == NULL)
-		return (NULL);
-	if ((f = _open(file, oflags, DEFFILEMODE)) < 0) {
-		fp->_flags = 0;			/* release */
-		return (NULL);
-	}
-	/*
-	 * File descriptors are a full int, but _file is only a short.
-	 * If we get a valid file descriptor that is greater than
-	 * SHRT_MAX, then the fd will get sign-extended into an
-	 * invalid file descriptor.  Handle this case by failing the
-	 * open.
-	 */
-	if (f > SHRT_MAX) {
-		fp->_flags = 0;			/* release */
-		_close(f);
-		errno = EMFILE;
-		return (NULL);
-	}
-	fp->_file = f;
-	fp->_flags = flags;
-	fp->_cookie = fp;
-	fp->_read = __sread;
-	fp->_write = __swrite;
-	fp->_seek = __sseek;
-	fp->_close = __sclose;
-	/*
-	 * When opening in append mode, even though we use O_APPEND,
-	 * we need to seek to the end so that ftell() gets the right
-	 * answer.  If the user then alters the seek pointer, or
-	 * the file extends, this will fail, but there is not much
-	 * we can do about this.  (We could set __SAPP and check in
-	 * fseek and ftell.)
-	 */
-	if (oflags & O_APPEND)
-		(void)_sseek(fp, (fpos_t)0, SEEK_END);
-	return (fp);
-}
diff --git a/libc/upstream-freebsd/lib/libc/stdlib/getopt_long.c b/libc/upstream-freebsd/lib/libc/stdlib/getopt_long.c
index 9f7f6d5..9534a2a 100644
--- a/libc/upstream-freebsd/lib/libc/stdlib/getopt_long.c
+++ b/libc/upstream-freebsd/lib/libc/stdlib/getopt_long.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: getopt_long.c,v 1.22 2006/10/04 21:29:04 jmc Exp $	*/
+/*	$OpenBSD: getopt_long.c,v 1.26 2013/06/08 22:47:56 millert Exp $	*/
 /*	$NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $	*/
 
 /*
@@ -248,7 +248,7 @@
 		if (short_too && current_argv_len == 1)
 			continue;
 
-		if (match == -1)        /* first partial match */
+		if (match == -1)	/* first partial match */
 			match = i;
 		else if ((flags & FLAG_LONGONLY) ||
 			 long_options[i].has_arg !=
@@ -359,37 +359,31 @@
 {
 	char *oli;				/* option letter list index */
 	int optchar, short_too;
-	int posixly_correct;	/* no static, can be changed on the fly */
+	static int posixly_correct = -1;
 
 	if (options == NULL)
 		return (-1);
 
 	/*
-	 * Disable GNU extensions if POSIXLY_CORRECT is set or options
-	 * string begins with a '+'.
-	 */
-	posixly_correct = (getenv("POSIXLY_CORRECT") != NULL);
-#ifdef GNU_COMPATIBLE
-	if (*options == '-')
-		flags |= FLAG_ALLARGS;
-	else if (posixly_correct || *options == '+')
-		flags &= ~FLAG_PERMUTE;
-#else
-	if (posixly_correct || *options == '+')
-		flags &= ~FLAG_PERMUTE;
-	else if (*options == '-')
-		flags |= FLAG_ALLARGS;
-#endif
-	if (*options == '+' || *options == '-')
-		options++;
-
-	/*
 	 * XXX Some GNU programs (like cvs) set optind to 0 instead of
 	 * XXX using optreset.  Work around this braindamage.
 	 */
 	if (optind == 0)
 		optind = optreset = 1;
 
+	/*
+	 * Disable GNU extensions if POSIXLY_CORRECT is set or options
+	 * string begins with a '+'.
+	 */
+	if (posixly_correct == -1 || optreset)
+		posixly_correct = (getenv("POSIXLY_CORRECT") != NULL);
+	if (*options == '-')
+		flags |= FLAG_ALLARGS;
+	else if (posixly_correct || *options == '+')
+		flags &= ~FLAG_PERMUTE;
+	if (*options == '+' || *options == '-')
+		options++;
+
 	optarg = NULL;
 	if (optreset)
 		nonopt_start = nonopt_end = -1;
diff --git a/libc/upstream-freebsd/lib/libc/stdlib/realpath.c b/libc/upstream-freebsd/lib/libc/stdlib/realpath.c
index 8fd5457..c4bd953 100644
--- a/libc/upstream-freebsd/lib/libc/stdlib/realpath.c
+++ b/libc/upstream-freebsd/lib/libc/stdlib/realpath.c
@@ -132,26 +132,7 @@
 			resolved[resolved_len] = '\0';
 		}
 		if (next_token[0] == '\0') {
-			/*
-			 * Handle consequential slashes.  The path
-			 * before slash shall point to a directory.
-			 *
-			 * Only the trailing slashes are not covered
-			 * by other checks in the loop, but we verify
-			 * the prefix for any (rare) "//" or "/\0"
-			 * occurence to not implement lookahead.
-			 */
-			if (lstat(resolved, &sb) != 0) {
-				if (m)
-					free(resolved);
-				return (NULL);
-			}
-			if (!S_ISDIR(sb.st_mode)) {
-				if (m)
-					free(resolved);
-				errno = ENOTDIR;
-				return (NULL);
-			}
+			/* Handle consequential slashes. */
 			continue;
 		}
 		else if (strcmp(next_token, ".") == 0)
@@ -236,6 +217,11 @@
 				}
 			}
 			left_len = strlcpy(left, symlink, sizeof(left));
+		} else if (!S_ISDIR(sb.st_mode) && p != NULL) {
+			if (m)
+				free(resolved);
+			errno = ENOTDIR;
+			return (NULL);
 		}
 	}
 
diff --git a/libc/upstream-freebsd/lib/libc/string/wmemcpy.c b/libc/upstream-freebsd/lib/libc/string/wmemcpy.c
deleted file mode 100644
index c10770c..0000000
--- a/libc/upstream-freebsd/lib/libc/string/wmemcpy.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * Copyright (c)1999 Citrus Project,
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	citrus Id: wmemcpy.c,v 1.2 2000/12/20 14:08:31 itojun Exp
- */
-
-#include <sys/cdefs.h>
-#if 0
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: wmemcpy.c,v 1.1 2000/12/23 23:14:37 itojun Exp $");
-#endif /* LIBC_SCCS and not lint */
-#endif
-__FBSDID("$FreeBSD$");
-
-#include <string.h>
-#include <wchar.h>
-
-wchar_t *
-wmemcpy(wchar_t * __restrict d, const wchar_t * __restrict s, size_t n)
-{
-	return (wchar_t *)memcpy(d, s, n * sizeof(wchar_t));
-}
diff --git a/libc/upstream-netbsd/android/include/fd_setsize.h b/libc/upstream-netbsd/android/include/fd_setsize.h
index e69de29..41bfcb7 100644
--- a/libc/upstream-netbsd/android/include/fd_setsize.h
+++ b/libc/upstream-netbsd/android/include/fd_setsize.h
@@ -0,0 +1 @@
+#include <sys/select.h>
diff --git a/libc/upstream-netbsd/android/include/namespace.h b/libc/upstream-netbsd/android/include/namespace.h
index 5df543c..630ea9b 100644
--- a/libc/upstream-netbsd/android/include/namespace.h
+++ b/libc/upstream-netbsd/android/include/namespace.h
@@ -17,11 +17,6 @@
 #ifndef _BIONIC_NETBSD_NAMESPACE_H_included
 #define _BIONIC_NETBSD_NAMESPACE_H_included
 
-// NetBSD uses __weak_alias on a lot of functions. We don't want that.
-#if defined(__weak_alias)
-#undef __weak_alias
-#endif
-
 __LIBC_HIDDEN__ int __res_enable_mt(void);
 __LIBC_HIDDEN__ int __res_disable_mt(void);
 
diff --git a/libc/upstream-netbsd/android/include/netbsd-compat.h b/libc/upstream-netbsd/android/include/netbsd-compat.h
index 84be931..04bc728 100644
--- a/libc/upstream-netbsd/android/include/netbsd-compat.h
+++ b/libc/upstream-netbsd/android/include/netbsd-compat.h
@@ -17,6 +17,9 @@
 #ifndef _BIONIC_NETBSD_COMPAT_H_included
 #define _BIONIC_NETBSD_COMPAT_H_included
 
+#define _BSD_SOURCE
+#define _GNU_SOURCE
+
 // NetBSD uses _DIAGASSERT to null-check arguments and the like.
 #include <assert.h>
 #define _DIAGASSERT(e) ((e) ? (void) 0 : __assert2(__FILE__, __LINE__, __func__, #e))
@@ -24,9 +27,6 @@
 // TODO: update our <sys/cdefs.h> to support this properly.
 #define __type_fit(t, a) (0 == 0)
 
-#define _GNU_SOURCE
-#define __USE_BSD
-
 // TODO: we don't yet have thread-safe environment variables.
 #define __readlockenv() 0
 #define __unlockenv() 0
diff --git a/libc/upstream-netbsd/lib/libc/stdlib/insque.c b/libc/upstream-netbsd/lib/libc/stdlib/insque.c
deleted file mode 100644
index 09020ae..0000000
--- a/libc/upstream-netbsd/lib/libc/stdlib/insque.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Copyright (c) 1993 John Brezak
- *  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. The name of the author may be used to endorse or promote products
- *     derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (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/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: insque.c,v 1.3 2012/06/25 22:32:45 abs Exp $");
-#endif /* LIBC_SCCS and not lint */
-
-#include <assert.h>
-#include <search.h>
-
-struct qelem {
-        struct qelem *q_forw;
-        struct qelem *q_back;
-};
-
-void
-insque(void *entry, void *pred)
-{
-	struct qelem *e = (struct qelem *) entry;
-	struct qelem *p = (struct qelem *) pred;
-
-	_DIAGASSERT(e != 0);
-
-	e->q_back = p;
-	if (p) {
-		e->q_forw = p->q_forw;
-		if (p->q_forw)
-			p->q_forw->q_back = e;
-		p->q_forw = e;
-	} else
-		e->q_forw = 0;
-}
diff --git a/libc/upstream-netbsd/lib/libc/stdlib/lcong48.c b/libc/upstream-netbsd/lib/libc/stdlib/lcong48.c
new file mode 100644
index 0000000..42ce979
--- /dev/null
+++ b/libc/upstream-netbsd/lib/libc/stdlib/lcong48.c
@@ -0,0 +1,43 @@
+/*	$NetBSD: lcong48.c,v 1.8 2005/06/12 05:21:28 lukem Exp $	*/
+
+/*
+ * Copyright (c) 1993 Martin Birgmeier
+ * All rights reserved.
+ *
+ * You may redistribute unmodified or modified versions of this source
+ * code provided that the above copyright notice and this and the
+ * following conditions are retained.
+ *
+ * This software is provided ``as is'', and comes with no warranties
+ * of any kind. I shall in no event be liable for anything that happens
+ * to anyone/anything when using this software.
+ */
+
+#include <sys/cdefs.h>
+#if defined(LIBC_SCCS) && !defined(lint)
+__RCSID("$NetBSD: lcong48.c,v 1.8 2005/06/12 05:21:28 lukem Exp $");
+#endif /* LIBC_SCCS and not lint */
+
+#include "namespace.h"
+
+#include <assert.h>
+
+#include "rand48.h"
+
+#ifdef __weak_alias
+__weak_alias(lcong48,_lcong48)
+#endif
+
+void
+lcong48(unsigned short p[7])
+{
+	_DIAGASSERT(p != NULL);
+
+	__rand48_seed[0] = p[0];
+	__rand48_seed[1] = p[1];
+	__rand48_seed[2] = p[2];
+	__rand48_mult[0] = p[3];
+	__rand48_mult[1] = p[4];
+	__rand48_mult[2] = p[5];
+	__rand48_add = p[6];
+}
diff --git a/libc/upstream-netbsd/lib/libc/stdlib/remque.c b/libc/upstream-netbsd/lib/libc/stdlib/remque.c
deleted file mode 100644
index 6060ad8..0000000
--- a/libc/upstream-netbsd/lib/libc/stdlib/remque.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Copyright (c) 1993 John Brezak
- *  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. The name of the author may be used to endorse or promote products
- *     derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (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/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: remque.c,v 1.3 2012/06/25 22:32:45 abs Exp $");
-#endif /* LIBC_SCCS and not lint */
-
-#include <assert.h>
-#include <search.h>
-
-struct qelem {
-        struct qelem *q_forw;
-        struct qelem *q_back;
-};
-
-void
-remque(void *element)
-{
-	struct qelem *e = (struct qelem *) element;
-
-	_DIAGASSERT(e != 0);
-
-	if (e->q_forw)
-		e->q_forw->q_back = e->q_back;
-	if (e->q_back)
-		e->q_back->q_forw = e->q_forw;
-}
diff --git a/libc/upstream-netbsd/lib/libc/unistd/killpg.c b/libc/upstream-netbsd/lib/libc/unistd/killpg.c
deleted file mode 100644
index ceac3f4..0000000
--- a/libc/upstream-netbsd/lib/libc/unistd/killpg.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*	$NetBSD: killpg.c,v 1.8 2003/08/07 16:42:39 agc Exp $	*/
-
-/*
- * 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. 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.
- */
-
-#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
-#if 0
-static char sccsid[] = "@(#)killpg.c	8.1 (Berkeley) 6/2/93";
-#else
-__RCSID("$NetBSD: killpg.c,v 1.8 2003/08/07 16:42:39 agc Exp $");
-#endif
-#endif /* LIBC_SCCS and not lint */
-
-#include <sys/types.h>
-#include <signal.h>
-#include <errno.h>
-
-/*
- * Backwards-compatible killpg().
- */
-int
-killpg(pid_t pgid, int sig)
-{
-	if (pgid == 1) {
-		errno = ESRCH;
-		return (-1);
-	}
-	return (kill(-pgid, sig));
-}
diff --git a/libc/upstream-openbsd/android/include/openbsd-compat.h b/libc/upstream-openbsd/android/include/openbsd-compat.h
index 34ad2c5..8f55a26 100644
--- a/libc/upstream-openbsd/android/include/openbsd-compat.h
+++ b/libc/upstream-openbsd/android/include/openbsd-compat.h
@@ -17,10 +17,26 @@
 #ifndef _BIONIC_OPENBSD_COMPAT_H_included
 #define _BIONIC_OPENBSD_COMPAT_H_included
 
+#define _BSD_SOURCE
+
 #include <sys/cdefs.h>
 #include <stddef.h> // For size_t.
 
-#define __USE_BSD
+/* Redirect internal C library calls to the public function. */
+#define _err err
+#define _errx errx
+#define _verr verr
+#define _verrx verrx
+#define _vwarn vwarn
+#define _vwarnx vwarnx
+#define _warn warn
+#define _warnx warnx
+
+/* Ignore all __weak_alias in OpenBSD. */
+#define __weak_alias(alias,sym)
+
+/* Ignore all __warn_references in OpenBSD. */
+#define __warn_references(sym,msg)
 
 /* OpenBSD's <ctype.h> uses these names, which conflicted with stlport.
  * Additionally, we changed the numeric/digit type from N to D for libcxx.
@@ -39,9 +55,21 @@
 
 #define explicit_bzero(p, s) memset(p, 0, s)
 
+/* OpenBSD has these in <sys/param.h>, but "ALIGN" isn't something we want to reserve. */
+#define ALIGNBYTES (sizeof(uintptr_t) - 1)
+#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) &~ ALIGNBYTES)
+
+/* OpenBSD has this in paths.h. But this directory doesn't normally exist.
+ * Even when it does exist, only the 'shell' user has permissions.
+ */
+#define _PATH_TMP "/data/local/tmp/"
+
 /* We have OpenBSD's getentropy_linux.c, but we don't mention getentropy in any header. */
 __LIBC_HIDDEN__ extern int getentropy(void*, size_t);
 
+/* OpenBSD has this as API, but we just use it internally. */
+__LIBC_HIDDEN__ void* reallocarray(void*, size_t, size_t);
+
 /* LP32 NDK ctype.h contained references to these. */
 __LIBC64_HIDDEN__ extern const short* _tolower_tab_;
 __LIBC64_HIDDEN__ extern const short* _toupper_tab_;
diff --git a/libc/upstream-openbsd/lib/libc/compat-43/killpg.c b/libc/upstream-openbsd/lib/libc/compat-43/killpg.c
new file mode 100644
index 0000000..75b1ad9
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/compat-43/killpg.c
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 1989 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. 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.
+ */
+
+#include <sys/types.h>
+#include <signal.h>
+#include <errno.h>
+
+/*
+ * Backwards-compatible killpg().
+ */
+int
+killpg(pid_t pgid, int sig)
+{
+	if (pgid == 1) {
+		errno = ESRCH;
+		return (-1);
+	}
+	return (kill(-pgid, sig));
+}
diff --git a/libc/upstream-openbsd/lib/libc/gdtoa/ldtoa.c b/libc/upstream-openbsd/lib/libc/gdtoa/ldtoa.c
index 793d71c..16f6f9c 100644
--- a/libc/upstream-openbsd/lib/libc/gdtoa/ldtoa.c
+++ b/libc/upstream-openbsd/lib/libc/gdtoa/ldtoa.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: ldtoa.c,v 1.1 2008/09/07 20:36:08 martynas Exp $	*/
+/*	$OpenBSD: ldtoa.c,v 1.2 2014/08/10 02:15:18 guenther Exp $	*/
 /*-
  * Copyright (c) 2003 David Schultz <das@FreeBSD.ORG>
  * All rights reserved.
@@ -30,7 +30,7 @@
 #include <machine/ieee.h>
 #endif /* !__vax__ */
 #include <float.h>
-#include <inttypes.h>
+#include <stdint.h>
 #include <limits.h>
 #include <math.h>
 #include <stdlib.h>
diff --git a/libc/upstream-openbsd/lib/libc/gen/daemon.c b/libc/upstream-openbsd/lib/libc/gen/daemon.c
new file mode 100644
index 0000000..79f4264
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/daemon.c
@@ -0,0 +1,64 @@
+/*	$OpenBSD: daemon.c,v 1.7 2010/07/27 22:29:09 marco Exp $ */
+/*-
+ * Copyright (c) 1990, 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. 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.
+ */
+
+#include <fcntl.h>
+#include <paths.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+int
+daemon(int nochdir, int noclose)
+{
+	int fd;
+
+	switch (fork()) {
+	case -1:
+		return (-1);
+	case 0:
+		break;
+	default:
+		_exit(0);
+	}
+
+	if (setsid() == -1)
+		return (-1);
+
+	if (!nochdir)
+		(void)chdir("/");
+
+	if (!noclose && (fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
+		(void)dup2(fd, STDIN_FILENO);
+		(void)dup2(fd, STDOUT_FILENO);
+		(void)dup2(fd, STDERR_FILENO);
+		if (fd > 2)
+			(void)close(fd);
+	}
+	return (0);
+}
diff --git a/libc/upstream-openbsd/lib/libc/gen/err.c b/libc/upstream-openbsd/lib/libc/gen/err.c
new file mode 100644
index 0000000..e7ec29d
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/err.c
@@ -0,0 +1,47 @@
+/*	$OpenBSD: err.c,v 1.11 2012/12/05 23:19:59 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE2 */
+__dead void
+_err(int eval, const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	_verr(eval, fmt, ap);
+	va_end(ap);
+}
+
+/* PRINTFLIKE2 */
+__weak_alias(err, _err);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/errx.c b/libc/upstream-openbsd/lib/libc/gen/errx.c
new file mode 100644
index 0000000..d213435
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/errx.c
@@ -0,0 +1,47 @@
+/*	$OpenBSD: errx.c,v 1.10 2012/12/05 23:19:59 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE2 */
+__dead void
+_errx(int eval, const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	_verrx(eval, fmt, ap);
+	va_end(ap);
+}
+
+/* PRINTFLIKE2 */
+__weak_alias(errx, _errx);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/verr.c b/libc/upstream-openbsd/lib/libc/gen/verr.c
new file mode 100644
index 0000000..dcd8edc
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/verr.c
@@ -0,0 +1,56 @@
+/*	$OpenBSD: verr.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+extern char *__progname;		/* Program name, from crt0. */
+
+__dead void
+_verr(int eval, const char *fmt, va_list ap)
+{
+	int sverrno;
+
+	sverrno = errno;
+	(void)fprintf(stderr, "%s: ", __progname);
+	if (fmt != NULL) {
+		(void)vfprintf(stderr, fmt, ap);
+		(void)fprintf(stderr, ": ");
+	}
+	(void)fprintf(stderr, "%s\n", strerror(sverrno));
+	exit(eval);
+}
+
+__weak_alias(verr, _verr);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/verrx.c b/libc/upstream-openbsd/lib/libc/gen/verrx.c
new file mode 100644
index 0000000..60da062
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/verrx.c
@@ -0,0 +1,49 @@
+/*	$OpenBSD: verrx.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+extern char *__progname;		/* Program name, from crt0. */
+
+__dead void
+_verrx(int eval, const char *fmt, va_list ap)
+{
+	(void)fprintf(stderr, "%s: ", __progname);
+	if (fmt != NULL)
+		(void)vfprintf(stderr, fmt, ap);
+	(void)fprintf(stderr, "\n");
+	exit(eval);
+}
+
+__weak_alias(verrx, _verrx);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/vwarn.c b/libc/upstream-openbsd/lib/libc/gen/vwarn.c
new file mode 100644
index 0000000..26b60f3
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/vwarn.c
@@ -0,0 +1,54 @@
+/*	$OpenBSD: vwarn.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+extern char *__progname;		/* Program name, from crt0. */
+
+void
+_vwarn(const char *fmt, va_list ap)
+{
+	int sverrno;
+
+	sverrno = errno;
+	(void)fprintf(stderr, "%s: ", __progname);
+	if (fmt != NULL) {
+		(void)vfprintf(stderr, fmt, ap);
+		(void)fprintf(stderr, ": ");
+	}
+	(void)fprintf(stderr, "%s\n", strerror(sverrno));
+}
+
+__weak_alias(vwarn, _vwarn);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/vwarnx.c b/libc/upstream-openbsd/lib/libc/gen/vwarnx.c
new file mode 100644
index 0000000..e6b1957
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/vwarnx.c
@@ -0,0 +1,47 @@
+/*	$OpenBSD: vwarnx.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+extern char *__progname;		/* Program name, from crt0. */
+
+void
+_vwarnx(const char *fmt, va_list ap)
+{
+	(void)fprintf(stderr, "%s: ", __progname);
+	if (fmt != NULL)
+		(void)vfprintf(stderr, fmt, ap);
+	(void)fprintf(stderr, "\n");
+}
+
+__weak_alias(vwarnx, _vwarnx);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/warn.c b/libc/upstream-openbsd/lib/libc/gen/warn.c
new file mode 100644
index 0000000..c1b47a6
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/warn.c
@@ -0,0 +1,47 @@
+/*	$OpenBSD: warn.c,v 1.10 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE1 */
+void
+_warn(const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	_vwarn(fmt, ap);
+	va_end(ap);
+}
+
+/* PRINTFLIKE1 */
+__weak_alias(warn, _warn);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/warnx.c b/libc/upstream-openbsd/lib/libc/gen/warnx.c
new file mode 100644
index 0000000..af2ab66
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/warnx.c
@@ -0,0 +1,47 @@
+/*	$OpenBSD: warnx.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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. 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.
+ */
+
+#include <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE1 */
+void
+_warnx(const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	_vwarnx(fmt, ap);
+	va_end(ap);
+}
+
+/* PRINTFLIKE1 */
+__weak_alias(warnx, _warnx);
+
diff --git a/libc/upstream-openbsd/lib/libc/net/htonl.c b/libc/upstream-openbsd/lib/libc/net/htonl.c
index 5ab4189..6ee6e7e 100644
--- a/libc/upstream-openbsd/lib/libc/net/htonl.c
+++ b/libc/upstream-openbsd/lib/libc/net/htonl.c
@@ -1,11 +1,11 @@
-/*	$OpenBSD: htonl.c,v 1.6 2005/08/06 20:30:03 espie Exp $ */
+/*	$OpenBSD: htonl.c,v 1.7 2014/07/21 01:51:10 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
 #include <sys/types.h>
-#include <machine/endian.h>
+#include <endian.h>
 
 #undef htonl
 
diff --git a/libc/upstream-openbsd/lib/libc/net/htons.c b/libc/upstream-openbsd/lib/libc/net/htons.c
index c8b73fd..f48d91e 100644
--- a/libc/upstream-openbsd/lib/libc/net/htons.c
+++ b/libc/upstream-openbsd/lib/libc/net/htons.c
@@ -1,11 +1,11 @@
-/*	$OpenBSD: htons.c,v 1.8 2005/08/06 20:30:03 espie Exp $ */
+/*	$OpenBSD: htons.c,v 1.9 2014/07/21 01:51:10 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
 #include <sys/types.h>
-#include <machine/endian.h>
+#include <endian.h>
 
 #undef htons
 
diff --git a/libc/upstream-openbsd/lib/libc/net/ntohl.c b/libc/upstream-openbsd/lib/libc/net/ntohl.c
index 36414b7..0d05bac 100644
--- a/libc/upstream-openbsd/lib/libc/net/ntohl.c
+++ b/libc/upstream-openbsd/lib/libc/net/ntohl.c
@@ -1,11 +1,11 @@
-/*	$OpenBSD: ntohl.c,v 1.6 2005/08/06 20:30:03 espie Exp $ */
+/*	$OpenBSD: ntohl.c,v 1.7 2014/07/21 01:51:10 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
 #include <sys/types.h>
-#include <machine/endian.h>
+#include <endian.h>
 
 #undef ntohl
 
diff --git a/libc/upstream-openbsd/lib/libc/net/ntohs.c b/libc/upstream-openbsd/lib/libc/net/ntohs.c
index 8f345e8..b5ea361 100644
--- a/libc/upstream-openbsd/lib/libc/net/ntohs.c
+++ b/libc/upstream-openbsd/lib/libc/net/ntohs.c
@@ -1,11 +1,11 @@
-/*	$OpenBSD: ntohs.c,v 1.8 2005/08/06 20:30:03 espie Exp $ */
+/*	$OpenBSD: ntohs.c,v 1.9 2014/07/21 01:51:10 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
 #include <sys/types.h>
-#include <machine/endian.h>
+#include <endian.h>
 
 #undef ntohs
 
diff --git a/libc/upstream-openbsd/lib/libc/net/res_random.c b/libc/upstream-openbsd/lib/libc/net/res_random.c
new file mode 100644
index 0000000..f28692f
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/net/res_random.c
@@ -0,0 +1,275 @@
+/* $OpenBSD: res_random.c,v 1.21 2014/07/20 04:22:34 guenther Exp $ */
+
+/*
+ * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
+ * Copyright 2008 Damien Miller <djm@openbsd.org>
+ * All rights reserved.
+ *
+ * Theo de Raadt <deraadt@openbsd.org> came up with the idea of using
+ * such a mathematical system to generate more random (yet non-repeating)
+ * ids to solve the resolver/named problem.  But Niels designed the
+ * actual system based on the constraints.
+ *
+ * Later modified by Damien Miller to wrap the LCG output in a 15-bit
+ * permutation generator based on a Luby-Rackoff block cipher. This
+ * ensures the output is non-repeating and preserves the MSB twiddle
+ * trick, but makes it more resistant to LCG prediction.
+ *
+ * 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 AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* 
+ * seed = random 15bit
+ * n = prime, g0 = generator to n,
+ * j = random so that gcd(j,n-1) == 1
+ * g = g0^j mod n will be a generator again.
+ *
+ * X[0] = random seed.
+ * X[n] = a*X[n-1]+b mod m is a Linear Congruential Generator
+ * with a = 7^(even random) mod m, 
+ *      b = random with gcd(b,m) == 1
+ *      m = 31104 and a maximal period of m-1.
+ *
+ * The transaction id is determined by:
+ * id[n] = seed xor (g^X[n] mod n)
+ *
+ * Effectivly the id is restricted to the lower 15 bits, thus
+ * yielding two different cycles by toggling the msb on and off.
+ * This avoids reuse issues caused by reseeding.
+ *
+ * The output of this generator is then randomly permuted though a
+ * custom 15 bit Luby-Rackoff block cipher.
+ */
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <sys/time.h>
+#include <resolv.h>
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "thread_private.h"
+
+#define RU_OUT  	180	/* Time after wich will be reseeded */
+#define RU_MAX		30000	/* Uniq cycle, avoid blackjack prediction */
+#define RU_GEN		2	/* Starting generator */
+#define RU_N		32749	/* RU_N-1 = 2*2*3*2729 */
+#define RU_AGEN		7	/* determine ru_a as RU_AGEN^(2*rand) */
+#define RU_M		31104	/* RU_M = 2^7*3^5 - don't change */
+#define RU_ROUNDS	11	/* Number of rounds for permute (odd) */
+
+struct prf_ctx {
+	/* PRF lookup table for odd rounds (7 bits input to 8 bits output) */
+	u_char prf7[(RU_ROUNDS / 2) * (1 << 7)];
+
+	/* PRF lookup table for even rounds (8 bits input to 7 bits output) */
+	u_char prf8[((RU_ROUNDS + 1) / 2) * (1 << 8)];
+};
+
+#define PFAC_N 3
+static const u_int16_t pfacts[PFAC_N] = {
+	2, 
+	3,
+	2729
+};
+
+static u_int16_t ru_x;
+static u_int16_t ru_seed, ru_seed2;
+static u_int16_t ru_a, ru_b;
+static u_int16_t ru_g;
+static u_int16_t ru_counter = 0;
+static u_int16_t ru_msb = 0;
+static struct prf_ctx *ru_prf = NULL;
+static time_t ru_reseed;
+
+static u_int16_t pmod(u_int16_t, u_int16_t, u_int16_t);
+static void res_initid(void);
+
+/*
+ * Do a fast modular exponation, returned value will be in the range
+ * of 0 - (mod-1)
+ */
+static u_int16_t
+pmod(u_int16_t gen, u_int16_t exp, u_int16_t mod)
+{
+	u_int16_t s, t, u;
+
+	s = 1;
+	t = gen;
+	u = exp;
+
+	while (u) {
+		if (u & 1)
+			s = (s * t) % mod;
+		u >>= 1;
+		t = (t * t) % mod;
+	}
+	return (s);
+}
+
+/*
+ * 15-bit permutation based on Luby-Rackoff block cipher
+ */
+static u_int
+permute15(u_int in)
+{
+	int i;
+	u_int left, right, tmp;
+
+	if (ru_prf == NULL)
+		return in;
+
+	left = (in >> 8) & 0x7f;
+	right = in & 0xff;
+
+	/*
+	 * Each round swaps the width of left and right. Even rounds have
+	 * a 7-bit left, odd rounds have an 8-bit left.	Since this uses an
+	 * odd number of rounds, left is always 8 bits wide at the end.
+	 */
+	for (i = 0; i < RU_ROUNDS; i++) {
+		if ((i & 1) == 0)
+			tmp = ru_prf->prf8[(i << (8 - 1)) | right] & 0x7f;
+		else
+			tmp = ru_prf->prf7[((i - 1) << (7 - 1)) | right];
+		tmp ^= left;
+		left = right;
+		right = tmp;
+	}
+
+	return (right << 8) | left;
+}
+
+/* 
+ * Initializes the seed and chooses a suitable generator. Also toggles 
+ * the msb flag. The msb flag is used to generate two distinct
+ * cycles of random numbers and thus avoiding reuse of ids.
+ *
+ * This function is called from res_randomid() when needed, an 
+ * application does not have to worry about it.
+ */
+static void 
+res_initid(void)
+{
+	u_int16_t j, i;
+	u_int32_t tmp;
+	int noprime = 1;
+	struct timespec ts;
+
+	ru_x = arc4random_uniform(RU_M);
+
+	/* 15 bits of random seed */
+	tmp = arc4random();
+	ru_seed = (tmp >> 16) & 0x7FFF;
+	ru_seed2 = tmp & 0x7FFF;
+
+	/* Determine the LCG we use */
+	tmp = arc4random();
+	ru_b = (tmp & 0xfffe) | 1;
+	ru_a = pmod(RU_AGEN, (tmp >> 16) & 0xfffe, RU_M);
+	while (ru_b % 3 == 0)
+		ru_b += 2;
+	
+	j = arc4random_uniform(RU_N);
+
+	/* 
+	 * Do a fast gcd(j,RU_N-1), so we can find a j with
+	 * gcd(j, RU_N-1) == 1, giving a new generator for
+	 * RU_GEN^j mod RU_N
+	 */
+
+	while (noprime) {
+		for (i = 0; i < PFAC_N; i++)
+			if (j % pfacts[i] == 0)
+				break;
+
+		if (i >= PFAC_N)
+			noprime = 0;
+		else 
+			j = (j + 1) % RU_N;
+	}
+
+	ru_g = pmod(RU_GEN, j, RU_N);
+	ru_counter = 0;
+
+	/* Initialise PRF for Luby-Rackoff permutation */
+	if (ru_prf == NULL)
+		ru_prf = malloc(sizeof(*ru_prf));
+	if (ru_prf != NULL)
+		arc4random_buf(ru_prf, sizeof(*ru_prf));
+
+	clock_gettime(CLOCK_MONOTONIC, &ts);
+	ru_reseed = ts.tv_sec + RU_OUT;
+	ru_msb = ru_msb == 0x8000 ? 0 : 0x8000; 
+}
+
+u_int
+res_randomid(void)
+{
+	struct timespec ts;
+	u_int r;
+	_THREAD_PRIVATE_MUTEX(random);
+
+	clock_gettime(CLOCK_MONOTONIC, &ts);
+
+	_THREAD_PRIVATE_MUTEX_LOCK(random);
+
+	if (ru_counter >= RU_MAX || ts.tv_sec > ru_reseed)
+		res_initid();
+
+	/* Linear Congruential Generator */
+	ru_x = (ru_a * ru_x + ru_b) % RU_M;
+	ru_counter++;
+
+	r = permute15(ru_seed ^ pmod(ru_g, ru_seed2 + ru_x, RU_N)) | ru_msb;
+
+	_THREAD_PRIVATE_MUTEX_UNLOCK(random);
+
+	return (r);
+}
+
+#if 0
+int
+main(int argc, char **argv)
+{
+	int i, n;
+	u_int16_t wert;
+
+	res_initid();
+
+	printf("Generator: %u\n", ru_g);
+	printf("Seed: %u\n", ru_seed);
+	printf("Reseed at %ld\n", ru_reseed);
+	printf("Ru_X: %u\n", ru_x);
+	printf("Ru_A: %u\n", ru_a);
+	printf("Ru_B: %u\n", ru_b);
+
+	n = argc > 1 ? atoi(argv[1]) : 60001;
+	for (i=0;i<n;i++) {
+		wert = res_randomid();
+		printf("%u\n", wert);
+	}
+	return 0;
+}
+#endif
+
diff --git a/libc/upstream-openbsd/lib/libc/stdio/fclose.c b/libc/upstream-openbsd/lib/libc/stdio/fclose.c
new file mode 100644
index 0000000..c72af54
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/fclose.c
@@ -0,0 +1,63 @@
+/*	$OpenBSD: fclose.c,v 1.9 2009/11/09 00:18:27 kurt Exp $ */
+/*-
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "local.h"
+
+int
+fclose(FILE *fp)
+{
+	int r;
+
+	if (fp->_flags == 0) {	/* not open! */
+		errno = EBADF;
+		return (EOF);
+	}
+	FLOCKFILE(fp);
+	WCIO_FREE(fp);
+	r = fp->_flags & __SWR ? __sflush(fp) : 0;
+	if (fp->_close != NULL && (*fp->_close)(fp->_cookie) < 0)
+		r = EOF;
+	if (fp->_flags & __SMBF)
+		free((char *)fp->_bf._base);
+	if (HASUB(fp))
+		FREEUB(fp);
+	if (HASLB(fp))
+		FREELB(fp);
+	fp->_r = fp->_w = 0;	/* Mess up if reaccessed. */
+	fp->_flags = 0;		/* Release this FILE for reuse. */
+	FUNLOCKFILE(fp);
+	return (r);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/fdopen.c b/libc/upstream-openbsd/lib/libc/stdio/fdopen.c
index 3e47f2c..1c0c813 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/fdopen.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/fdopen.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: fdopen.c,v 1.6 2008/04/21 12:28:35 otto Exp $ */
+/*	$OpenBSD: fdopen.c,v 1.7 2014/08/31 02:21:18 guenther Exp $ */
 /*-
  * Copyright (c) 1990, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -66,6 +66,7 @@
 	if ((fp = __sfp()) == NULL)
 		return (NULL);
 	fp->_flags = flags;
+
 	/*
 	 * If opened for appending, but underlying descriptor does not have
 	 * O_APPEND bit set, assert __SAPP so that __swrite() will lseek to
@@ -73,6 +74,13 @@
 	 */
 	if ((oflags & O_APPEND) && !(fdflags & O_APPEND))
 		fp->_flags |= __SAPP;
+
+	/*
+	 * If close-on-exec was requested, then turn it on if not already
+	 */
+	if ((oflags & O_CLOEXEC) && !((tmp = fcntl(fd, F_GETFD)) & FD_CLOEXEC))
+		fcntl(fd, F_SETFD, tmp | FD_CLOEXEC);
+
 	fp->_file = fd;
 	fp->_cookie = fp;
 	fp->_read = __sread;
diff --git a/libc/upstream-openbsd/lib/libc/stdio/fgetln.c b/libc/upstream-openbsd/lib/libc/stdio/fgetln.c
index d0c0809..1109cf2 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/fgetln.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/fgetln.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: fgetln.c,v 1.12 2013/11/12 07:04:06 deraadt Exp $ */
+/*	$OpenBSD: fgetln.c,v 1.13 2015/01/05 21:58:52 millert Exp $ */
 /*-
  * Copyright (c) 1990, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -38,19 +38,12 @@
 
 /*
  * Expand the line buffer.  Return -1 on error.
-#ifdef notdef
- * The `new size' does not account for a terminating '\0',
- * so we add 1 here.
-#endif
  */
 static int
 __slbexpand(FILE *fp, size_t newsize)
 {
 	void *p;
 
-#ifdef notdef
-	++newsize;
-#endif
 	if (fp->_lb._size >= newsize)
 		return (0);
 	if ((p = realloc(fp->_lb._base, newsize)) == NULL)
@@ -141,14 +134,11 @@
 	}
 	*lenp = len;
 	ret = (char *)fp->_lb._base;
-#ifdef notdef
-	ret[len] = '\0';
-#endif
 	FUNLOCKFILE(fp);
 	return (ret);
 
 error:
-	*lenp = 0;		/* ??? */
 	FUNLOCKFILE(fp);
-	return (NULL);		/* ??? */
+	*lenp = 0;
+	return (NULL);
 }
diff --git a/libc/upstream-openbsd/lib/libc/stdio/flags.c b/libc/upstream-openbsd/lib/libc/stdio/flags.c
new file mode 100644
index 0000000..d6df6da
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/flags.c
@@ -0,0 +1,105 @@
+/*	$OpenBSD: flags.c,v 1.8 2014/08/31 02:21:18 guenther Exp $ */
+/*-
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ */
+
+#include <sys/types.h>
+#include <sys/file.h>
+#include <stdio.h>
+#include <errno.h>
+#include "local.h"
+
+/*
+ * Return the (stdio) flags for a given mode.  Store the flags
+ * to be passed to an open() syscall through *optr.
+ * Return 0 on error.
+ */
+int
+__sflags(const char *mode, int *optr)
+{
+	int ret, m, o;
+
+	switch (*mode++) {
+
+	case 'r':	/* open for reading */
+		ret = __SRD;
+		m = O_RDONLY;
+		o = 0;
+		break;
+
+	case 'w':	/* open for writing */
+		ret = __SWR;
+		m = O_WRONLY;
+		o = O_CREAT | O_TRUNC;
+		break;
+
+	case 'a':	/* open for appending */
+		ret = __SWR;
+		m = O_WRONLY;
+		o = O_CREAT | O_APPEND;
+		break;
+
+	default:	/* illegal mode */
+		errno = EINVAL;
+		return (0);
+	}
+
+	while (*mode != '\0') 
+		switch (*mode++) {
+		case 'b':
+			break;
+		case '+':
+			ret = __SRW;
+			m = O_RDWR;
+			break;
+		case 'e':
+			o |= O_CLOEXEC;
+			break;
+		case 'x':
+			if (o & O_CREAT)
+				o |= O_EXCL;
+			break;
+		default:
+			/*
+			 * Lots of software passes other extension mode
+			 * letters, like Window's 't'
+			 */
+#if 0
+			errno = EINVAL;
+			return (0);
+#else
+			break;
+#endif
+		}
+
+	*optr = m | o;
+	return (ret);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/fmemopen.c b/libc/upstream-openbsd/lib/libc/stdio/fmemopen.c
new file mode 100644
index 0000000..8cda047
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/fmemopen.c
@@ -0,0 +1,183 @@
+/*	$OpenBSD: fmemopen.c,v 1.2 2013/03/27 15:06:25 mpi Exp $	*/
+
+/*
+ * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+ * Copyright (c) 2009 Ted Unangst
+ *
+ * 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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "local.h"
+
+struct state {
+	char		*string;	/* actual stream */
+	size_t		 pos;		/* current position */
+	size_t		 size;		/* allocated size */
+	size_t		 len;		/* length of the data */
+	int		 update;	/* open for update */
+};
+
+static int
+fmemopen_read(void *v, char *b, int l)
+{
+	struct state	*st = v;
+	int		 i;
+
+	for (i = 0; i < l && i + st->pos < st->len; i++)
+		b[i] = st->string[st->pos + i];
+	st->pos += i;
+
+	return (i);
+}
+
+static int
+fmemopen_write(void *v, const char *b, int l)
+{
+	struct state	*st = v;
+	int		i;
+
+	for (i = 0; i < l && i + st->pos < st->size; i++)
+		st->string[st->pos + i] = b[i];
+	st->pos += i;
+
+	if (st->pos >= st->len) {
+		st->len = st->pos;
+
+		if (st->len < st->size)
+			st->string[st->len] = '\0';
+		else if (!st->update)
+			st->string[st->size - 1] = '\0';
+	}
+
+	return (i);
+}
+
+static fpos_t
+fmemopen_seek(void *v, fpos_t off, int whence)
+{
+	struct state	*st = v;
+	ssize_t		 base = 0;
+
+	switch (whence) {
+	case SEEK_SET:
+		break;
+	case SEEK_CUR:
+		base = st->pos;
+		break;
+	case SEEK_END:
+		base = st->len;
+		break;
+	}
+
+	if (off > st->size - base || off < -base) {
+		errno = EOVERFLOW;
+		return (-1);
+	}
+
+	st->pos = base + off;
+
+	return (st->pos);
+}
+
+static int
+fmemopen_close(void *v)
+{
+	free(v);
+
+	return (0);
+}
+
+static int
+fmemopen_close_free(void *v)
+{
+	struct state	*st = v;
+
+	free(st->string);
+	free(st);
+
+	return (0);
+}
+
+FILE *
+fmemopen(void *buf, size_t size, const char *mode)
+{
+	struct state	*st;
+	FILE		*fp;
+	int		 flags, oflags;
+
+	if (size == 0) {
+		errno = EINVAL;
+		return (NULL);
+	}
+
+	if ((flags = __sflags(mode, &oflags)) == 0) {
+		errno = EINVAL;
+		return (NULL);
+	}
+
+	if (buf == NULL && ((oflags & O_RDWR) == 0)) {
+		errno = EINVAL;
+		return (NULL);
+	}
+
+	if ((st = malloc(sizeof(*st))) == NULL)
+		return (NULL);
+
+	if ((fp = __sfp()) == NULL) {
+		free(st);
+		return (NULL);
+	}
+
+	st->pos = 0;
+	st->len = (oflags & O_WRONLY) ? 0 : size;
+	st->size = size;
+	st->update = oflags & O_RDWR;
+
+	if (buf == NULL) {
+		if ((st->string = malloc(size)) == NULL) {
+			free(st);
+			fp->_flags = 0;
+			return (NULL);
+		}
+		*st->string = '\0';
+	} else {
+		st->string = (char *)buf;
+
+		if (oflags & O_TRUNC)
+			*st->string = '\0';
+
+		if (oflags & O_APPEND) {
+			char	*p;
+
+			if ((p = memchr(st->string, '\0', size)) != NULL)
+				st->pos = st->len = (p - st->string);
+			else
+				st->pos = st->len = size;
+		}
+	}
+
+	fp->_flags = (short)flags;
+	fp->_file = -1;
+	fp->_cookie = (void *)st;
+	fp->_read = (flags & __SWR) ? NULL : fmemopen_read;
+	fp->_write = (flags & __SRD) ? NULL : fmemopen_write;
+	fp->_seek = fmemopen_seek;
+	fp->_close = (buf == NULL) ? fmemopen_close_free : fmemopen_close;
+
+	return (fp);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/fopen.c b/libc/upstream-openbsd/lib/libc/stdio/fopen.c
new file mode 100644
index 0000000..1465052
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/fopen.c
@@ -0,0 +1,86 @@
+/*	$OpenBSD: fopen.c,v 1.7 2008/05/03 18:46:41 chl Exp $ */
+/*-
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include "local.h"
+
+FILE *
+fopen(const char *file, const char *mode)
+{
+	FILE *fp;
+	int f;
+	int flags, oflags;
+
+	if ((flags = __sflags(mode, &oflags)) == 0)
+		return (NULL);
+	if ((fp = __sfp()) == NULL)
+		return (NULL);
+	if ((f = open(file, oflags, DEFFILEMODE)) < 0) {
+		fp->_flags = 0;			/* release */
+		return (NULL);
+	}
+
+	/* _file is only a short */
+	if (f > SHRT_MAX) {
+		fp->_flags = 0;			/* release */
+		close(f);
+		errno = EMFILE;
+		return (NULL);
+	}
+
+	fp->_file = f;
+	fp->_flags = flags;
+	fp->_cookie = fp;
+	fp->_read = __sread;
+	fp->_write = __swrite;
+	fp->_seek = __sseek;
+	fp->_close = __sclose;
+
+	/*
+	 * When opening in append mode, even though we use O_APPEND,
+	 * we need to seek to the end so that ftell() gets the right
+	 * answer.  If the user then alters the seek pointer, or
+	 * the file extends, this will fail, but there is not much
+	 * we can do about this.  (We could set __SAPP and check in
+	 * fseek and ftell.)
+	 */
+	if (oflags & O_APPEND)
+		(void) __sseek((void *)fp, (fpos_t)0, SEEK_END);
+	return (fp);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/freopen.c b/libc/upstream-openbsd/lib/libc/stdio/freopen.c
index 3158fb1..82717b1 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/freopen.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/freopen.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: freopen.c,v 1.13 2009/11/09 00:18:27 kurt Exp $ */
+/*	$OpenBSD: freopen.c,v 1.14 2014/08/31 02:21:18 guenther Exp $ */
 /*-
  * Copyright (c) 1990, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -134,7 +134,7 @@
 	 * assume stderr is always fd STDERR_FILENO, even if being freopen'd.
 	 */
 	if (wantfd >= 0 && f != wantfd) {
-		if (dup2(f, wantfd) >= 0) {
+		if (dup3(f, wantfd, oflags & O_CLOEXEC) >= 0) {
 			(void) close(f);
 			f = wantfd;
 		}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/getdelim.c b/libc/upstream-openbsd/lib/libc/stdio/getdelim.c
index dcde0c3..5e583cb 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/getdelim.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/getdelim.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: getdelim.c,v 1.1 2012/03/21 23:44:35 fgsch Exp $	*/
+/*	$OpenBSD: getdelim.c,v 1.2 2014/10/16 17:31:51 millert Exp $	*/
 /* $NetBSD: getdelim.c,v 1.13 2011/07/22 23:12:30 joerg Exp $ */
 
 /*
@@ -78,13 +78,12 @@
 		else
 			len = (p - fp->_p) + 1;
 
-		newlen = off + len;
 		/* Ensure we can handle it */
-		if (newlen < off || newlen > SSIZE_MAX) {
+		if (off > SSIZE_MAX || len + 1 > SSIZE_MAX - off) {
 			errno = EOVERFLOW;
 			goto error;
 		}
-		newlen++; /* reserve space for the NULL terminator */
+		newlen = off + len + 1; /* reserve space for NUL terminator */
 		if (newlen > *buflen) {
 			if (newlen < MINBUF)
 				newlen = MINBUF;
diff --git a/libc/upstream-openbsd/lib/libc/stdio/makebuf.c b/libc/upstream-openbsd/lib/libc/stdio/makebuf.c
index d47e27c..56e5f21 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/makebuf.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/makebuf.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: makebuf.c,v 1.8 2005/12/28 18:50:22 millert Exp $ */
+/*	$OpenBSD: makebuf.c,v 1.9 2015/01/13 07:18:21 guenther Exp $ */
 /*-
  * Copyright (c) 1990, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -65,7 +65,6 @@
 		fp->_bf._size = 1;
 		return;
 	}
-	__atexit_register_cleanup(_cleanup);
 	flags |= __SMBF;
 	fp->_bf._base = fp->_p = p;
 	fp->_bf._size = size;
diff --git a/libc/upstream-openbsd/lib/libc/stdio/mktemp.c b/libc/upstream-openbsd/lib/libc/stdio/mktemp.c
index cb154c4..956608c 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/mktemp.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/mktemp.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: mktemp.c,v 1.33 2014/05/06 22:55:27 millert Exp $ */
+/*	$OpenBSD: mktemp.c,v 1.35 2014/10/31 15:54:14 millert Exp $ */
 /*
  * Copyright (c) 1996-1998, 2008 Theo de Raadt
  * Copyright (c) 1997, 2008-2009 Todd C. Miller
@@ -35,15 +35,17 @@
 #define NUM_CHARS	(sizeof(TEMPCHARS) - 1)
 #define MIN_X		6
 
+#define MKOTEMP_FLAGS	(O_APPEND | O_CLOEXEC | O_DSYNC | O_RSYNC | O_SYNC)
+
 #ifndef nitems
 #define nitems(_a)	(sizeof((_a)) / sizeof((_a)[0]))
 #endif
 
 static int
-mktemp_internal(char *path, int slen, int mode)
+mktemp_internal(char *path, int slen, int mode, int flags)
 {
 	char *start, *cp, *ep;
-	const char *tempchars = TEMPCHARS;
+	const char tempchars[] = TEMPCHARS;
 	unsigned int tries;
 	struct stat sb;
 	size_t len;
@@ -63,6 +65,12 @@
 		return(-1);
 	}
 
+	if (flags & ~MKOTEMP_FLAGS) {
+		errno = EINVAL;
+		return(-1);
+	}
+	flags |= O_CREAT | O_EXCL | O_RDWR;
+
 	tries = INT_MAX;
 	do {
 		cp = start;
@@ -85,7 +93,7 @@
 				return(errno == ENOENT ? 0 : -1);
 			break;
 		case MKTEMP_FILE:
-			fd = open(path, O_CREAT|O_EXCL|O_RDWR, S_IRUSR|S_IWUSR);
+			fd = open(path, flags, S_IRUSR|S_IWUSR);
 			if (fd != -1 || errno != EEXIST)
 				return(fd);
 			break;
@@ -107,7 +115,7 @@
 char *
 _mktemp(char *path)
 {
-	if (mktemp_internal(path, 0, MKTEMP_NAME) == -1)
+	if (mktemp_internal(path, 0, MKTEMP_NAME, 0) == -1)
 		return(NULL);
 	return(path);
 }
@@ -122,15 +130,27 @@
 }
 
 int
+mkostemps(char *path, int slen, int flags)
+{
+	return(mktemp_internal(path, slen, MKTEMP_FILE, flags));
+}
+
+int
 mkstemp(char *path)
 {
-	return(mktemp_internal(path, 0, MKTEMP_FILE));
+	return(mktemp_internal(path, 0, MKTEMP_FILE, 0));
+}
+
+int
+mkostemp(char *path, int flags)
+{
+	return(mktemp_internal(path, 0, MKTEMP_FILE, flags));
 }
 
 int
 mkstemps(char *path, int slen)
 {
-	return(mktemp_internal(path, slen, MKTEMP_FILE));
+	return(mktemp_internal(path, slen, MKTEMP_FILE, 0));
 }
 
 char *
@@ -138,6 +158,6 @@
 {
 	int error;
 
-	error = mktemp_internal(path, 0, MKTEMP_DIR);
+	error = mktemp_internal(path, 0, MKTEMP_DIR, 0);
 	return(error ? NULL : path);
 }
diff --git a/libc/upstream-openbsd/lib/libc/stdio/open_memstream.c b/libc/upstream-openbsd/lib/libc/stdio/open_memstream.c
new file mode 100644
index 0000000..4610535
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/open_memstream.c
@@ -0,0 +1,158 @@
+/*	$OpenBSD: open_memstream.c,v 1.3 2013/04/03 03:11:53 guenther Exp $	*/
+
+/*
+ * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+ *
+ * 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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+ */
+
+#include <sys/param.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "local.h"
+
+struct state {
+	char		 *string;	/* actual stream */
+	char		**pbuf;		/* point to the stream */
+	size_t		 *psize;	/* point to min(pos, len) */
+	size_t		  pos;		/* current position */
+	size_t		  size;		/* number of allocated char */
+	size_t		  len;		/* length of the data */
+};
+
+static int
+memstream_write(void *v, const char *b, int l)
+{
+	struct state	*st = v;
+	char		*p;
+	size_t		 i, end;
+
+	end = (st->pos + l);
+
+	if (end >= st->size) {
+		/* 1.6 is (very) close to the golden ratio. */
+		size_t	sz = st->size * 8 / 5;
+
+		if (sz < end + 1)
+			sz = end + 1;
+		p = realloc(st->string, sz);
+		if (!p)
+			return (-1);
+		bzero(p + st->size, sz - st->size);
+		*st->pbuf = st->string = p;
+		st->size = sz;
+	}
+
+	for (i = 0; i < l; i++)
+		st->string[st->pos + i] = b[i];
+	st->pos += l;
+
+	if (st->pos > st->len) {
+		st->len = st->pos;
+		st->string[st->len] = '\0';
+	}
+
+	*st->psize = st->pos;
+
+	return (i);
+}
+
+static fpos_t
+memstream_seek(void *v, fpos_t off, int whence)
+{
+	struct state	*st = v;
+	ssize_t		 base = 0;
+
+	switch (whence) {
+	case SEEK_SET:
+		break;
+	case SEEK_CUR:
+		base = st->pos;
+		break;
+	case SEEK_END:
+		base = st->len;
+		break;
+	}
+
+	if (off > SIZE_MAX - base || off < -base) {
+		errno = EOVERFLOW;
+		return (-1);
+	}
+
+	st->pos = base + off;
+	*st->psize = MIN(st->pos, st->len);
+
+	return (st->pos);
+}
+
+static int
+memstream_close(void *v)
+{
+	struct state	*st = v;
+
+	free(st);
+
+	return (0);
+}
+
+FILE *
+open_memstream(char **pbuf, size_t *psize)
+{
+	struct state	*st;
+	FILE		*fp;
+
+	if (pbuf == NULL || psize == NULL) {
+		errno = EINVAL;
+		return (NULL);
+	}
+
+	if ((st = malloc(sizeof(*st))) == NULL)
+		return (NULL);
+
+	if ((fp = __sfp()) == NULL) {
+		free(st);
+		return (NULL);
+	}
+
+	st->size = BUFSIZ;
+	if ((st->string = calloc(1, st->size)) == NULL) {
+		free(st);
+		fp->_flags = 0;
+		return (NULL);
+	}
+
+	*st->string = '\0';
+	st->pos = 0;
+	st->len = 0;
+	st->pbuf = pbuf;
+	st->psize = psize;
+
+	*pbuf = st->string;
+	*psize = st->len;
+
+	fp->_flags = __SWR;
+	fp->_file = -1;
+	fp->_cookie = st;
+	fp->_read = NULL;
+	fp->_write = memstream_write;
+	fp->_seek = memstream_seek;
+	fp->_close = memstream_close;
+	_SET_ORIENTATION(fp, -1);
+
+	return (fp);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/open_wmemstream.c b/libc/upstream-openbsd/lib/libc/stdio/open_wmemstream.c
new file mode 100644
index 0000000..391a944
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/open_wmemstream.c
@@ -0,0 +1,169 @@
+/*	$OpenBSD: open_wmemstream.c,v 1.4 2014/10/08 05:28:19 deraadt Exp $	*/
+
+/*
+ * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+ *
+ * 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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+ */
+
+#include <sys/param.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include "local.h"
+
+struct state {
+	wchar_t		 *string;	/* actual stream */
+	wchar_t		**pbuf;		/* point to the stream */
+	size_t		 *psize;	/* point to min(pos, len) */
+	size_t		  pos;		/* current position */
+	size_t		  size;		/* number of allocated wchar_t */
+	size_t		  len;		/* length of the data */
+	mbstate_t	  mbs;		/* conversion state of the stream */
+};
+
+static int
+wmemstream_write(void *v, const char *b, int l)
+{
+	struct state	*st = v;
+	wchar_t		*p;
+	size_t		 nmc, len, end;
+
+	end = (st->pos + l);
+
+	if (end >= st->size) {
+		/* 1.6 is (very) close to the golden ratio. */
+		size_t	sz = st->size * 8 / 5;
+
+		if (sz < end + 1)
+			sz = end + 1;
+		p = reallocarray(st->string, sz, sizeof(wchar_t));
+		if (!p)
+			return (-1);
+		bzero(p + st->size, (sz - st->size) * sizeof(wchar_t));
+		*st->pbuf = st->string = p;
+		st->size = sz;
+	}
+
+	nmc = (st->size - st->pos) * sizeof(wchar_t);
+	len = mbsnrtowcs(st->string + st->pos, &b, nmc, l, &st->mbs);
+	if (len == (size_t)-1)
+		return (-1);
+	st->pos += len;
+
+	if (st->pos > st->len) {
+		st->len = st->pos;
+		st->string[st->len] = L'\0';
+	}
+
+	*st->psize = st->pos;
+
+	return (len);
+}
+
+static fpos_t
+wmemstream_seek(void *v, fpos_t off, int whence)
+{
+	struct state	*st = v;
+	ssize_t		 base = 0;
+
+	switch (whence) {
+	case SEEK_SET:
+		break;
+	case SEEK_CUR:
+		base = st->pos;
+		break;
+	case SEEK_END:
+		base = st->len;
+		break;
+	}
+
+	if (off > (SIZE_MAX / sizeof(wchar_t)) - base || off < -base) {
+		errno = EOVERFLOW;
+		return (-1);
+	}
+
+	/*
+	 * XXX Clearing mbs here invalidates shift state for state-
+	 * dependent encodings, but they are not (yet) supported.
+	 */
+	bzero(&st->mbs, sizeof(st->mbs));
+
+	st->pos = base + off;
+	*st->psize = MIN(st->pos, st->len);
+
+	return (st->pos);
+}
+
+static int
+wmemstream_close(void *v)
+{
+	struct state	*st = v;
+
+	free(st);
+
+	return (0);
+}
+
+FILE *
+open_wmemstream(wchar_t **pbuf, size_t *psize)
+{
+	struct state	*st;
+	FILE		*fp;
+
+	if (pbuf == NULL || psize == NULL) {
+		errno = EINVAL;
+		return (NULL);
+	}
+
+	if ((st = malloc(sizeof(*st))) == NULL)
+		return (NULL);
+
+	if ((fp = __sfp()) == NULL) {
+		free(st);
+		return (NULL);
+	}
+
+	st->size = BUFSIZ * sizeof(wchar_t);
+	if ((st->string = calloc(1, st->size)) == NULL) {
+		free(st);
+		fp->_flags = 0;
+		return (NULL);
+	}
+
+	*st->string = L'\0';
+	st->pos = 0;
+	st->len = 0;
+	st->pbuf = pbuf;
+	st->psize = psize;
+	bzero(&st->mbs, sizeof(st->mbs));
+
+	*pbuf = st->string;
+	*psize = st->len;
+
+	fp->_flags = __SWR;
+	fp->_file = -1;
+	fp->_cookie = st;
+	fp->_read = NULL;
+	fp->_write = wmemstream_write;
+	fp->_seek = wmemstream_seek;
+	fp->_close = wmemstream_close;
+	_SET_ORIENTATION(fp, 1);
+
+	return (fp);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c b/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c
index 6c49f7a..9b2ab57 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: setvbuf.c,v 1.11 2009/11/09 00:18:27 kurt Exp $ */
+/*	$OpenBSD: setvbuf.c,v 1.12 2015/01/13 07:18:21 guenther Exp $ */
 /*-
  * Copyright (c) 1990, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -115,6 +115,13 @@
 	}
 
 	/*
+	 * We're committed to buffering from here, so make sure we've
+	 * registered to flush buffers on exit.
+	 */
+	if (!__sdidinit)
+		__sinit();
+
+	/*
 	 * Kill any seek optimization if the buffer is not the
 	 * right size.
 	 *
@@ -124,8 +131,7 @@
 		flags |= __SNPT;
 
 	/*
-	 * Fix up the FILE fields, and set __cleanup for output flush on
-	 * exit (since we are buffered in some way).
+	 * Fix up the FILE fields.
 	 */
 	if (mode == _IOLBF)
 		flags |= __SLBF;
@@ -148,7 +154,6 @@
 		fp->_w = 0;
 	}
 	FUNLOCKFILE(fp);
-	__atexit_register_cleanup(_cleanup);
 
 	return (ret);
 }
diff --git a/libc/upstream-openbsd/lib/libc/stdio/stdio.c b/libc/upstream-openbsd/lib/libc/stdio/stdio.c
deleted file mode 100644
index a4a27b5..0000000
--- a/libc/upstream-openbsd/lib/libc/stdio/stdio.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*	$OpenBSD: stdio.c,v 1.9 2005/08/08 08:05:36 espie Exp $ */
-/*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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. 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.
- */
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdio.h>
-#include "local.h"
-
-/*
- * Small standard I/O/seek/close functions.
- * These maintain the `known seek offset' for seek optimisation.
- */
-int
-__sread(void *cookie, char *buf, int n)
-{
-	FILE *fp = cookie;
-	int ret;
-	
-	ret = read(fp->_file, buf, n);
-	/* if the read succeeded, update the current offset */
-	if (ret >= 0)
-		fp->_offset += ret;
-	else
-		fp->_flags &= ~__SOFF;	/* paranoia */
-	return (ret);
-}
-
-int
-__swrite(void *cookie, const char *buf, int n)
-{
-	FILE *fp = cookie;
-
-	if (fp->_flags & __SAPP)
-		(void) lseek(fp->_file, (off_t)0, SEEK_END);
-	fp->_flags &= ~__SOFF;	/* in case FAPPEND mode is set */
-	return (write(fp->_file, buf, n));
-}
-
-fpos_t
-__sseek(void *cookie, fpos_t offset, int whence)
-{
-	FILE *fp = cookie;
-	off_t ret;
-	
-	ret = lseek(fp->_file, (off_t)offset, whence);
-	if (ret == (off_t)-1)
-		fp->_flags &= ~__SOFF;
-	else {
-		fp->_flags |= __SOFF;
-		fp->_offset = ret;
-	}
-	return (ret);
-}
-
-int
-__sclose(void *cookie)
-{
-	return (close(((FILE *)cookie)->_file));
-}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/ungetc.c b/libc/upstream-openbsd/lib/libc/stdio/ungetc.c
index 675733a..ec98f26 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/ungetc.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/ungetc.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: ungetc.c,v 1.12 2009/11/09 00:18:27 kurt Exp $ */
+/*	$OpenBSD: ungetc.c,v 1.13 2014/10/11 04:05:10 deraadt Exp $ */
 /*-
  * Copyright (c) 1990, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -64,14 +64,14 @@
 		return (0);
 	}
 	i = _UB(fp)._size;
-	p = realloc(_UB(fp)._base, i << 1);
+	p = reallocarray(_UB(fp)._base, i, 2);
 	if (p == NULL)
 		return (EOF);
 	/* no overlap (hence can use memcpy) because we doubled the size */
 	(void)memcpy((void *)(p + i), (void *)p, (size_t)i);
 	fp->_p = p + i;
 	_UB(fp)._base = p;
-	_UB(fp)._size = i << 1;
+	_UB(fp)._size = i * 2;
 	return (0);
 }
 
diff --git a/libc/upstream-openbsd/lib/libc/stdio/vfprintf.c b/libc/upstream-openbsd/lib/libc/stdio/vfprintf.c
index 7f8ff31..5f4fb7f 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/vfprintf.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/vfprintf.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: vfprintf.c,v 1.66 2014/05/03 12:36:45 deraadt Exp $	*/
+/*	$OpenBSD: vfprintf.c,v 1.67 2014/12/21 00:23:30 daniel Exp $	*/
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -753,10 +753,9 @@
 			if (signflag)
 				sign = '-';
 			if (expt == INT_MAX) {	/* inf or nan */
-				if (*cp == 'N') {
+				if (*cp == 'N')
 					cp = (ch >= 'a') ? "nan" : "NAN";
-					sign = '\0';
-				} else
+				else
 					cp = (ch >= 'a') ? "inf" : "INF";
  				size = 3;
 				flags &= ~ZEROPAD;
diff --git a/libc/upstream-openbsd/lib/libc/stdio/vfwprintf.c b/libc/upstream-openbsd/lib/libc/stdio/vfwprintf.c
index ef0ca43..a6f4123 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/vfwprintf.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/vfwprintf.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: vfwprintf.c,v 1.11 2014/06/04 07:45:25 stsp Exp $ */
+/*	$OpenBSD: vfwprintf.c,v 1.12 2014/12/21 00:23:30 daniel Exp $ */
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -731,10 +731,9 @@
 			if (signflag)
 				sign = '-';
 			if (expt == INT_MAX) {	/* inf or nan */
-				if (*cp == 'N') {
+				if (*cp == 'N')
 					cp = (ch >= 'a') ? L"nan" : L"NAN";
-					sign = '\0';
-				} else
+				else
 					cp = (ch >= 'a') ? L"inf" : L"INF";
  				size = 3;
 				flags &= ~ZEROPAD;
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/atexit.c b/libc/upstream-openbsd/lib/libc/stdlib/atexit.c
deleted file mode 100644
index 6532b38..0000000
--- a/libc/upstream-openbsd/lib/libc/stdlib/atexit.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*	$OpenBSD: atexit.c,v 1.20 2014/07/11 09:51:37 kettenis Exp $ */
-/*
- * Copyright (c) 2002 Daniel Hartmeier
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *    - Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *    - Redistributions in binary form must 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 THE
- * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (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/types.h>
-#include <sys/mman.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include "atexit.h"
-#include "thread_private.h"
-
-struct atexit *__atexit;
-static int restartloop;
-
-/*
- * Function pointers are stored in a linked list of pages. The list
- * is initially empty, and pages are allocated on demand. The first
- * function pointer in the first allocated page (the last one in
- * the linked list) is reserved for the cleanup function.
- *
- * Outside the following functions, all pages are mprotect()'ed
- * to prevent unintentional/malicious corruption.
- */
-
-/*
- * Register a function to be performed at exit or when a shared object
- * with the given dso handle is unloaded dynamically.  Also used as
- * the backend for atexit().  For more info on this API, see:
- *
- *	http://www.codesourcery.com/cxx-abi/abi.html#dso-dtor
- */
-int
-__cxa_atexit(void (*func)(void *), void *arg, void *dso)
-{
-	struct atexit *p = __atexit;
-	struct atexit_fn *fnp;
-	int pgsize = getpagesize();
-	int ret = -1;
-
-	if (pgsize < sizeof(*p))
-		return (-1);
-	_ATEXIT_LOCK();
-	p = __atexit;
-	if (p != NULL) {
-		if (p->ind + 1 >= p->max)
-			p = NULL;
-		else if (mprotect(p, pgsize, PROT_READ | PROT_WRITE))
-			goto unlock;
-	}
-	if (p == NULL) {
-		p = mmap(NULL, pgsize, PROT_READ | PROT_WRITE,
-		    MAP_ANON | MAP_PRIVATE, -1, 0);
-		if (p == MAP_FAILED)
-			goto unlock;
-		if (__atexit == NULL) {
-			memset(&p->fns[0], 0, sizeof(p->fns[0]));
-			p->ind = 1;
-		} else
-			p->ind = 0;
-		p->max = (pgsize - ((char *)&p->fns[0] - (char *)p)) /
-		    sizeof(p->fns[0]);
-		p->next = __atexit;
-		__atexit = p;
-	}
-	fnp = &p->fns[p->ind++];
-	fnp->fn_ptr = func;
-	fnp->fn_arg = arg;
-	fnp->fn_dso = dso;
-	if (mprotect(p, pgsize, PROT_READ))
-		goto unlock;
-	restartloop = 1;
-	ret = 0;
-unlock:
-	_ATEXIT_UNLOCK();
-	return (ret);
-}
-
-/*
- * Call all handlers registered with __cxa_atexit() for the shared
- * object owning 'dso'.
- * Note: if 'dso' is NULL, then all remaining handlers are called.
- */
-void
-__cxa_finalize(void *dso)
-{
-	struct atexit *p, *q;
-	struct atexit_fn fn;
-	int n, pgsize = getpagesize();
-	static int call_depth;
-
-	_ATEXIT_LOCK();
-	call_depth++;
-
-restart:
-	restartloop = 0;
-	for (p = __atexit; p != NULL; p = p->next) {
-		for (n = p->ind; --n >= 0;) {
-			if (p->fns[n].fn_ptr == NULL)
-				continue;	/* already called */
-			if (dso != NULL && dso != p->fns[n].fn_dso)
-				continue;	/* wrong DSO */
-
-			/*
-			 * Mark handler as having been already called to avoid
-			 * dupes and loops, then call the appropriate function.
-			 */
-			fn = p->fns[n];
-			if (mprotect(p, pgsize, PROT_READ | PROT_WRITE) == 0) {
-				p->fns[n].fn_ptr = NULL;
-				mprotect(p, pgsize, PROT_READ);
-			}
-			_ATEXIT_UNLOCK();
-			(*fn.fn_ptr)(fn.fn_arg);
-			_ATEXIT_LOCK();
-			if (restartloop)
-				goto restart;
-		}
-	}
-
-	call_depth--;
-
-	/*
-	 * If called via exit(), unmap the pages since we have now run
-	 * all the handlers.  We defer this until calldepth == 0 so that
-	 * we don't unmap things prematurely if called recursively.
-	 */
-	if (dso == NULL && call_depth == 0) {
-		for (p = __atexit; p != NULL; ) {
-			q = p;
-			p = p->next;
-			munmap(q, pgsize);
-		}
-		__atexit = NULL;
-	}
-	_ATEXIT_UNLOCK();
-}
-
-/*
- * Register the cleanup function
- */
-void
-__atexit_register_cleanup(void (*func)(void))
-{
-	struct atexit *p;
-	int pgsize = getpagesize();
-
-	if (pgsize < sizeof(*p))
-		return;
-	_ATEXIT_LOCK();
-	p = __atexit;
-	while (p != NULL && p->next != NULL)
-		p = p->next;
-	if (p == NULL) {
-		p = mmap(NULL, pgsize, PROT_READ | PROT_WRITE,
-		    MAP_ANON | MAP_PRIVATE, -1, 0);
-		if (p == MAP_FAILED)
-			goto unlock;
-		p->ind = 1;
-		p->max = (pgsize - ((char *)&p->fns[0] - (char *)p)) /
-		    sizeof(p->fns[0]);
-		p->next = NULL;
-		__atexit = p;
-	} else {
-		if (mprotect(p, pgsize, PROT_READ | PROT_WRITE))
-			goto unlock;
-	}
-	p->fns[0].fn_ptr = (void (*)(void *))func;
-	p->fns[0].fn_arg = NULL;
-	p->fns[0].fn_dso = NULL;
-	mprotect(p, pgsize, PROT_READ);
-	restartloop = 1;
-unlock:
-	_ATEXIT_UNLOCK();
-}
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/exit.c b/libc/upstream-openbsd/lib/libc/stdlib/exit.c
deleted file mode 100644
index 83fe3d2..0000000
--- a/libc/upstream-openbsd/lib/libc/stdlib/exit.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*	$OpenBSD: exit.c,v 1.12 2007/09/03 14:40:16 millert Exp $ */
-/*-
- * Copyright (c) 1990 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. 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.
- */
-
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include "atexit.h"
-#include "thread_private.h"
-
-/*
- * This variable is zero until a process has created a thread.
- * It is used to avoid calling locking functions in libc when they
- * are not required. By default, libc is intended to be(come)
- * thread-safe, but without a (significant) penalty to non-threaded
- * processes.
- */
-int     __isthreaded    = 0;
-
-/*
- * Exit, flushing stdio buffers if necessary.
- */
-void
-exit(int status)
-{
-	/*
-	 * Call functions registered by atexit() or _cxa_atexit()
-	 * (including the stdio cleanup routine) and then _exit().
-	 */
-	__cxa_finalize(NULL);
-	_exit(status);
-}
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/insque.c b/libc/upstream-openbsd/lib/libc/stdlib/insque.c
new file mode 100644
index 0000000..590ff83
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdlib/insque.c
@@ -0,0 +1,54 @@
+/*	$OpenBSD: insque.c,v 1.3 2014/08/15 04:14:36 guenther Exp $	*/
+
+/*
+ *  Copyright (c) 1993 John Brezak
+ *  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. The name of the author may be used to endorse or promote products
+ *     derived from this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (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 <search.h>
+
+struct qelem {
+        struct qelem *q_forw;
+        struct qelem *q_back;
+};
+
+void
+insque(void *entry, void *pred)
+{
+	struct qelem *e = entry;
+	struct qelem *p = pred;
+
+	if (p == NULL)
+		e->q_forw = e->q_back = NULL;
+	else {
+		e->q_forw = p->q_forw;
+		e->q_back = p;
+		if (p->q_forw != NULL)
+			p->q_forw->q_back = e;
+		p->q_forw = e;
+	}
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/reallocarray.c b/libc/upstream-openbsd/lib/libc/stdlib/reallocarray.c
new file mode 100644
index 0000000..7accd99
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdlib/reallocarray.c
@@ -0,0 +1,38 @@
+/*	$OpenBSD: reallocarray.c,v 1.1 2014/05/08 21:43:49 deraadt Exp $	*/
+/*
+ * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
+ *
+ * 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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <errno.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+/*
+ * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
+ * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
+ */
+#define MUL_NO_OVERFLOW	(1UL << (sizeof(size_t) * 4))
+
+void *
+reallocarray(void *optr, size_t nmemb, size_t size)
+{
+	if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
+	    nmemb > 0 && SIZE_MAX / nmemb < size) {
+		errno = ENOMEM;
+		return NULL;
+	}
+	return realloc(optr, size * nmemb);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/remque.c b/libc/upstream-openbsd/lib/libc/stdlib/remque.c
new file mode 100644
index 0000000..71b74b2
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdlib/remque.c
@@ -0,0 +1,48 @@
+/*	$OpenBSD: remque.c,v 1.3 2014/08/15 04:14:36 guenther Exp $	*/
+
+/*
+ *  Copyright (c) 1993 John Brezak
+ *  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. The name of the author may be used to endorse or promote products
+ *     derived from this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (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 <search.h>
+
+struct qelem {
+        struct qelem *q_forw;
+        struct qelem *q_back;
+};
+
+void
+remque(void *element)
+{
+	struct qelem *e = element;
+
+	if (e->q_forw != NULL)
+		e->q_forw->q_back = e->q_back;
+	if (e->q_back != NULL)
+		e->q_back->q_forw = e->q_forw;
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/strtoimax.c b/libc/upstream-openbsd/lib/libc/stdlib/strtoimax.c
index 2c77f41..2fc04e4 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/strtoimax.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/strtoimax.c
@@ -1,6 +1,5 @@
-/*	$OpenBSD: strtoimax.c,v 1.1 2006/01/13 17:58:09 millert Exp $	*/
-
-/*-
+/*	$OpenBSD: strtoimax.c,v 1.2 2014/09/13 20:10:12 schwarze Exp $	*/
+/*
  * Copyright (c) 1992 The Regents of the University of California.
  * All rights reserved.
  *
@@ -48,6 +47,17 @@
 	int neg, any, cutlim;
 
 	/*
+	 * Ensure that base is between 2 and 36 inclusive, or the special
+	 * value of 0.
+	 */
+	if (base < 0 || base == 1 || base > 36) {
+		if (endptr != 0)
+			*endptr = (char *)nptr;
+		errno = EINVAL;
+		return 0;
+	}
+
+	/*
 	 * Skip white space and pick up leading +/- sign if any.
 	 * If base is 0, allow 0x for hex and 0 for octal, else
 	 * assume decimal; if base is already 16, allow 0x.
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/strtol.c b/libc/upstream-openbsd/lib/libc/stdlib/strtol.c
index dc2cf88..86cec35 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/strtol.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/strtol.c
@@ -1,5 +1,5 @@
-/*	$OpenBSD: strtol.c,v 1.9 2013/04/17 17:40:35 tedu Exp $ */
-/*-
+/*	$OpenBSD: strtol.c,v 1.10 2014/09/13 20:10:12 schwarze Exp $ */
+/*
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
  *
@@ -33,7 +33,6 @@
 #include <limits.h>
 #include <stdlib.h>
 
-
 /*
  * Convert a string to a long integer.
  *
@@ -52,7 +51,7 @@
 	 * Ensure that base is between 2 and 36 inclusive, or the special
 	 * value of 0.
 	 */
-	if (base != 0 && (base < 2 || base > 36)) {
+	if (base < 0 || base == 1 || base > 36) {
 		if (endptr != 0)
 			*endptr = (char *)nptr;
 		errno = EINVAL;
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/strtoll.c b/libc/upstream-openbsd/lib/libc/stdlib/strtoll.c
index 4bcc556..cf82c8e 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/strtoll.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/strtoll.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: strtoll.c,v 1.7 2013/03/28 18:09:38 martynas Exp $ */
-/*-
+/*	$OpenBSD: strtoll.c,v 1.8 2014/09/13 20:10:12 schwarze Exp $ */
+/*
  * Copyright (c) 1992 The Regents of the University of California.
  * All rights reserved.
  *
@@ -50,6 +50,17 @@
 	int neg, any, cutlim;
 
 	/*
+	 * Ensure that base is between 2 and 36 inclusive, or the special
+	 * value of 0.
+	 */
+	if (base < 0 || base == 1 || base > 36) {
+		if (endptr != 0)
+			*endptr = (char *)nptr;
+		errno = EINVAL;
+		return 0;
+	}
+
+	/*
 	 * Skip white space and pick up leading +/- sign if any.
 	 * If base is 0, allow 0x for hex and 0 for octal, else
 	 * assume decimal; if base is already 16, allow 0x.
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/strtoul.c b/libc/upstream-openbsd/lib/libc/stdlib/strtoul.c
index a236365..2aa41b7 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/strtoul.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/strtoul.c
@@ -1,6 +1,6 @@
-/*	$OpenBSD: strtoul.c,v 1.8 2013/04/17 17:40:35 tedu Exp $ */
+/*	$OpenBSD: strtoul.c,v 1.9 2014/09/13 20:10:12 schwarze Exp $ */
 /*
- * Copyright (c) 1990 Regents of the University of California.
+ * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -50,6 +50,13 @@
 	/*
 	 * See strtol for comments as to the logic used.
 	 */
+	if (base < 0 || base == 1 || base > 36) {
+		if (endptr != 0)
+			*endptr = (char *)nptr;
+		errno = EINVAL;
+		return 0;
+	}
+
 	s = nptr;
 	do {
 		c = (unsigned char) *s++;
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/strtoull.c b/libc/upstream-openbsd/lib/libc/stdlib/strtoull.c
index 28f613a..8464176 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/strtoull.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/strtoull.c
@@ -1,5 +1,5 @@
-/*	$OpenBSD: strtoull.c,v 1.6 2013/03/28 18:09:38 martynas Exp $ */
-/*-
+/*	$OpenBSD: strtoull.c,v 1.7 2014/09/13 20:10:12 schwarze Exp $ */
+/*
  * Copyright (c) 1992 The Regents of the University of California.
  * All rights reserved.
  *
@@ -50,8 +50,15 @@
 	int neg, any, cutlim;
 
 	/*
-	 * See strtoq for comments as to the logic used.
+	 * See strtoll for comments as to the logic used.
 	 */
+	if (base < 0 || base == 1 || base > 36) {
+		if (endptr != 0)
+			*endptr = (char *)nptr;
+		errno = EINVAL;
+		return 0;
+	}
+
 	s = nptr;
 	do {
 		c = (unsigned char) *s++;
@@ -59,7 +66,7 @@
 	if (c == '-') {
 		neg = 1;
 		c = *s++;
-	} else { 
+	} else {
 		neg = 0;
 		if (c == '+')
 			c = *s++;
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/strtoumax.c b/libc/upstream-openbsd/lib/libc/stdlib/strtoumax.c
index ce6e2c0..c73f7e5 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/strtoumax.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/strtoumax.c
@@ -1,6 +1,5 @@
-/*	$OpenBSD: strtoumax.c,v 1.1 2006/01/13 17:58:09 millert Exp $	*/
-
-/*-
+/*	$OpenBSD: strtoumax.c,v 1.2 2014/09/13 20:10:12 schwarze Exp $	*/
+/*
  * Copyright (c) 1992 The Regents of the University of California.
  * All rights reserved.
  *
@@ -48,8 +47,15 @@
 	int neg, any, cutlim;
 
 	/*
-	 * See strtoq for comments as to the logic used.
+	 * See strtoimax for comments as to the logic used.
 	 */
+	if (base < 0 || base == 1 || base > 36) {
+		if (endptr != 0)
+			*endptr = (char *)nptr;
+		errno = EINVAL;
+		return 0;
+	}
+
 	s = nptr;
 	do {
 		c = (unsigned char) *s++;
@@ -57,7 +63,7 @@
 	if (c == '-') {
 		neg = 1;
 		c = *s++;
-	} else { 
+	} else {
 		neg = 0;
 		if (c == '+')
 			c = *s++;
diff --git a/libc/upstream-openbsd/lib/libc/string/bcopy.c b/libc/upstream-openbsd/lib/libc/string/bcopy.c
deleted file mode 100644
index 4308c64..0000000
--- a/libc/upstream-openbsd/lib/libc/string/bcopy.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*	$OpenBSD: bcopy.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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. 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.
- */
-
-#include <string.h>
-
-/*
- * sizeof(word) MUST BE A POWER OF TWO
- * SO THAT wmask BELOW IS ALL ONES
- */
-typedef	long word;		/* "word" used for optimal copy speed */
-
-#define	wsize	sizeof(word)
-#define	wmask	(wsize - 1)
-
-/*
- * Copy a block of memory, handling overlap.
- * This is the routine that actually implements
- * (the portable versions of) bcopy, memcpy, and memmove.
- */
-#ifdef MEMCOPY
-void *
-memcpy(void *dst0, const void *src0, size_t length)
-#else
-#ifdef MEMMOVE
-void *
-memmove(void *dst0, const void *src0, size_t length)
-#else
-void
-bcopy(const void *src0, void *dst0, size_t length)
-#endif
-#endif
-{
-	char *dst = dst0;
-	const char *src = src0;
-	size_t t;
-
-	if (length == 0 || dst == src)		/* nothing to do */
-		goto done;
-
-	/*
-	 * Macros: loop-t-times; and loop-t-times, t>0
-	 */
-#define	TLOOP(s) if (t) TLOOP1(s)
-#define	TLOOP1(s) do { s; } while (--t)
-
-	if ((unsigned long)dst < (unsigned long)src) {
-		/*
-		 * Copy forward.
-		 */
-		t = (long)src;	/* only need low bits */
-		if ((t | (long)dst) & wmask) {
-			/*
-			 * Try to align operands.  This cannot be done
-			 * unless the low bits match.
-			 */
-			if ((t ^ (long)dst) & wmask || length < wsize)
-				t = length;
-			else
-				t = wsize - (t & wmask);
-			length -= t;
-			TLOOP1(*dst++ = *src++);
-		}
-		/*
-		 * Copy whole words, then mop up any trailing bytes.
-		 */
-		t = length / wsize;
-		TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);
-		t = length & wmask;
-		TLOOP(*dst++ = *src++);
-	} else {
-		/*
-		 * Copy backwards.  Otherwise essentially the same.
-		 * Alignment works as before, except that it takes
-		 * (t&wmask) bytes to align, not wsize-(t&wmask).
-		 */
-		src += length;
-		dst += length;
-		t = (long)src;
-		if ((t | (long)dst) & wmask) {
-			if ((t ^ (long)dst) & wmask || length <= wsize)
-				t = length;
-			else
-				t &= wmask;
-			length -= t;
-			TLOOP1(*--dst = *--src);
-		}
-		t = length / wsize;
-		TLOOP(src -= wsize; dst -= wsize; *(word *)dst = *(word *)src);
-		t = length & wmask;
-		TLOOP(*--dst = *--src);
-	}
-done:
-#if defined(MEMCOPY) || defined(MEMMOVE)
-	return (dst0);
-#else
-	return;
-#endif
-}
diff --git a/libc/upstream-openbsd/lib/libc/string/memchr.c b/libc/upstream-openbsd/lib/libc/string/memchr.c
new file mode 100644
index 0000000..4573e3c
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/string/memchr.c
@@ -0,0 +1,48 @@
+/*	$OpenBSD: memchr.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ */
+
+#include <string.h>
+
+void *
+memchr(const void *s, int c, size_t n)
+{
+	if (n != 0) {
+		const unsigned char *p = s;
+
+		do {
+			if (*p++ == (unsigned char)c)
+				return ((void *)(p - 1));
+		} while (--n != 0);
+	}
+	return (NULL);
+}
diff --git a/libc/upstream-openbsd/lib/libc/string/memmove.c b/libc/upstream-openbsd/lib/libc/string/memmove.c
new file mode 100644
index 0000000..1baad53
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/string/memmove.c
@@ -0,0 +1,112 @@
+/*	$OpenBSD: memmove.c,v 1.1 2014/11/30 19:43:56 deraadt Exp $ */
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ */
+
+#include <string.h>
+
+/*
+ * sizeof(word) MUST BE A POWER OF TWO
+ * SO THAT wmask BELOW IS ALL ONES
+ */
+typedef	long word;		/* "word" used for optimal copy speed */
+
+#define	wsize	sizeof(word)
+#define	wmask	(wsize - 1)
+
+/*
+ * Copy a block of memory, handling overlap.
+ */
+void *
+memmove(void *dst0, const void *src0, size_t length)
+{
+	char *dst = dst0;
+	const char *src = src0;
+	size_t t;
+
+	if (length == 0 || dst == src)		/* nothing to do */
+		goto done;
+
+	/*
+	 * Macros: loop-t-times; and loop-t-times, t>0
+	 */
+#define	TLOOP(s) if (t) TLOOP1(s)
+#define	TLOOP1(s) do { s; } while (--t)
+
+	if ((unsigned long)dst < (unsigned long)src) {
+		/*
+		 * Copy forward.
+		 */
+		t = (long)src;	/* only need low bits */
+		if ((t | (long)dst) & wmask) {
+			/*
+			 * Try to align operands.  This cannot be done
+			 * unless the low bits match.
+			 */
+			if ((t ^ (long)dst) & wmask || length < wsize)
+				t = length;
+			else
+				t = wsize - (t & wmask);
+			length -= t;
+			TLOOP1(*dst++ = *src++);
+		}
+		/*
+		 * Copy whole words, then mop up any trailing bytes.
+		 */
+		t = length / wsize;
+		TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);
+		t = length & wmask;
+		TLOOP(*dst++ = *src++);
+	} else {
+		/*
+		 * Copy backwards.  Otherwise essentially the same.
+		 * Alignment works as before, except that it takes
+		 * (t&wmask) bytes to align, not wsize-(t&wmask).
+		 */
+		src += length;
+		dst += length;
+		t = (long)src;
+		if ((t | (long)dst) & wmask) {
+			if ((t ^ (long)dst) & wmask || length <= wsize)
+				t = length;
+			else
+				t &= wmask;
+			length -= t;
+			TLOOP1(*--dst = *--src);
+		}
+		t = length / wsize;
+		TLOOP(src -= wsize; dst -= wsize; *(word *)dst = *(word *)src);
+		t = length & wmask;
+		TLOOP(*--dst = *--src);
+	}
+done:
+	return (dst0);
+}
diff --git a/libc/upstream-openbsd/lib/libc/string/memrchr.c b/libc/upstream-openbsd/lib/libc/string/memrchr.c
new file mode 100644
index 0000000..bd27ebc
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/string/memrchr.c
@@ -0,0 +1,38 @@
+/*	$OpenBSD: memrchr.c,v 1.2 2007/11/27 16:22:12 martynas Exp $	*/
+
+/*
+ * Copyright (c) 2007 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * 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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, 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 THIS SOFTWARE.
+ */
+
+#include <string.h>
+
+/*
+ * Reverse memchr()
+ * Find the last occurrence of 'c' in the buffer 's' of size 'n'.
+ */
+void *
+memrchr(const void *s, int c, size_t n)
+{
+	const unsigned char *cp;
+
+	if (n != 0) {
+		cp = (unsigned char *)s + n;
+		do {
+			if (*(--cp) == (unsigned char)c)
+				return((void *)cp);
+		} while (--n != 0);
+	}
+	return(NULL);
+}
diff --git a/libc/upstream-openbsd/lib/libc/string/wmemcpy.c b/libc/upstream-openbsd/lib/libc/string/wmemcpy.c
new file mode 100644
index 0000000..9bbd836
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/string/wmemcpy.c
@@ -0,0 +1,40 @@
+/*	$OpenBSD: wmemcpy.c,v 1.3 2005/08/08 08:05:37 espie Exp $	*/
+/*	$NetBSD: wmemcpy.c,v 1.2 2001/01/03 14:29:37 lukem Exp $	*/
+
+/*-
+ * Copyright (c)1999 Citrus Project,
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	citrus Id: wmemcpy.c,v 1.2 2000/12/20 14:08:31 itojun Exp
+ */
+
+#include <string.h>
+#include <wchar.h>
+
+wchar_t *
+wmemcpy(wchar_t *d, const wchar_t *s, size_t n)
+{
+
+	return (wchar_t *)memcpy(d, s, n * sizeof(wchar_t));
+}
diff --git a/libc/version_script.txt b/libc/version_script.txt
new file mode 100644
index 0000000..349a2fc
--- /dev/null
+++ b/libc/version_script.txt
@@ -0,0 +1,17 @@
+LIBC {
+  global:
+    /* Work-around for http://b/20065774. */
+    __clear_cache;
+    _Unwind_Backtrace;
+    _Unwind_GetIP;
+  local:
+    _ZSt7nothrow;
+    _ZdaPv;
+    _ZdaPvRKSt9nothrow_t;
+    _ZdlPv;
+    _ZdlPvRKSt9nothrow_t;
+    _Znaj;
+    _ZnajRKSt9nothrow_t;
+    _Znwj;
+    _ZnwjRKSt9nothrow_t;
+};
diff --git a/libc/zoneinfo/tzdata b/libc/zoneinfo/tzdata
index b9a6621..2c734fa 100644
--- a/libc/zoneinfo/tzdata
+++ b/libc/zoneinfo/tzdata
Binary files differ
diff --git a/libdl/Android.mk b/libdl/Android.mk
index cb1cb7d..2a0724a 100644
--- a/libdl/Android.mk
+++ b/libdl/Android.mk
@@ -23,6 +23,7 @@
 
 LOCAL_SRC_FILES:= libdl.c
 LOCAL_CFLAGS := -Wall -Wextra -Wunused -Werror
+LOCAL_CXX_STL := none
 
 LOCAL_MODULE := libdl
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@@ -35,4 +36,18 @@
 LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
+LOCAL_ADDRESS_SANITIZER := false
 include $(BUILD_SHARED_LIBRARY)
+
+# A dummy libdl.a. Need for static executables using the LLVM unwinder. Most
+# functions default to failure, others use a sensible default (dl_iterate_phdr()
+# returns 0, as would happen if the user iterated over every phdr).
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= libdl.c
+LOCAL_CFLAGS := -Wall -Wextra -Wunused -Werror
+LOCAL_CXX_STL := none
+
+LOCAL_MODULE := libdl
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDRESS_SANITIZER := false
+include $(BUILD_STATIC_LIBRARY)
diff --git a/libm/Android.mk b/libm/Android.mk
index 994caa0..6472a15 100644
--- a/libm/Android.mk
+++ b/libm/Android.mk
@@ -1,34 +1,34 @@
 ifneq ($(TARGET_USE_PRIVATE_LIBM),true)
 LOCAL_PATH:= $(call my-dir)
 
-# TODO: this comes from from upstream's libc, not libm, but it's an
-# implementation detail that should have hidden visibility, so it needs
-# to be in whatever library the math code is in.
-libm_common_src_files := \
-    digittoint.c  \
+bionic_coverage := false
 
-# TODO: this is not in the BSDs.
-libm_common_src_files += \
-    significandl.c \
-    sincos.c \
+ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
+# Clang has wrong long double sizes for x86.
+libm_clang := false
+endif
 
-libm_common_src_files += \
+# -----------------------------------------------------------------------------
+# libm.a
+# -----------------------------------------------------------------------------
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libm
+
+LOCAL_SRC_FILES := \
     upstream-freebsd/lib/msun/bsdsrc/b_exp.c \
     upstream-freebsd/lib/msun/bsdsrc/b_log.c \
     upstream-freebsd/lib/msun/bsdsrc/b_tgamma.c \
-    upstream-freebsd/lib/msun/src/e_acos.c \
+    upstream-freebsd/lib/msun/src/catrig.c \
+    upstream-freebsd/lib/msun/src/catrigf.c \
     upstream-freebsd/lib/msun/src/e_acosf.c \
     upstream-freebsd/lib/msun/src/e_acosh.c \
     upstream-freebsd/lib/msun/src/e_acoshf.c \
-    upstream-freebsd/lib/msun/src/e_asin.c \
     upstream-freebsd/lib/msun/src/e_asinf.c \
-    upstream-freebsd/lib/msun/src/e_atan2.c \
     upstream-freebsd/lib/msun/src/e_atan2f.c \
     upstream-freebsd/lib/msun/src/e_atanh.c \
     upstream-freebsd/lib/msun/src/e_atanhf.c \
-    upstream-freebsd/lib/msun/src/e_cosh.c \
     upstream-freebsd/lib/msun/src/e_coshf.c \
-    upstream-freebsd/lib/msun/src/e_exp.c \
     upstream-freebsd/lib/msun/src/e_expf.c \
     upstream-freebsd/lib/msun/src/e_fmod.c \
     upstream-freebsd/lib/msun/src/e_fmodf.c \
@@ -36,7 +36,6 @@
     upstream-freebsd/lib/msun/src/e_gammaf.c \
     upstream-freebsd/lib/msun/src/e_gammaf_r.c \
     upstream-freebsd/lib/msun/src/e_gamma_r.c \
-    upstream-freebsd/lib/msun/src/e_hypot.c \
     upstream-freebsd/lib/msun/src/e_hypotf.c \
     upstream-freebsd/lib/msun/src/e_j0.c \
     upstream-freebsd/lib/msun/src/e_j0f.c \
@@ -48,13 +47,10 @@
     upstream-freebsd/lib/msun/src/e_lgammaf.c \
     upstream-freebsd/lib/msun/src/e_lgammaf_r.c \
     upstream-freebsd/lib/msun/src/e_lgamma_r.c \
-    upstream-freebsd/lib/msun/src/e_log10.c \
     upstream-freebsd/lib/msun/src/e_log10f.c \
     upstream-freebsd/lib/msun/src/e_log2.c \
     upstream-freebsd/lib/msun/src/e_log2f.c \
-    upstream-freebsd/lib/msun/src/e_log.c \
     upstream-freebsd/lib/msun/src/e_logf.c \
-    upstream-freebsd/lib/msun/src/e_pow.c \
     upstream-freebsd/lib/msun/src/e_powf.c \
     upstream-freebsd/lib/msun/src/e_remainder.c \
     upstream-freebsd/lib/msun/src/e_remainderf.c \
@@ -62,10 +58,7 @@
     upstream-freebsd/lib/msun/src/e_rem_pio2f.c \
     upstream-freebsd/lib/msun/src/e_scalb.c \
     upstream-freebsd/lib/msun/src/e_scalbf.c \
-    upstream-freebsd/lib/msun/src/e_sinh.c \
     upstream-freebsd/lib/msun/src/e_sinhf.c \
-    upstream-freebsd/lib/msun/src/e_sqrt.c \
-    upstream-freebsd/lib/msun/src/e_sqrtf.c \
     upstream-freebsd/lib/msun/src/imprecise.c \
     upstream-freebsd/lib/msun/src/k_cos.c \
     upstream-freebsd/lib/msun/src/k_cosf.c \
@@ -78,51 +71,47 @@
     upstream-freebsd/lib/msun/src/k_tanf.c \
     upstream-freebsd/lib/msun/src/s_asinh.c \
     upstream-freebsd/lib/msun/src/s_asinhf.c \
-    upstream-freebsd/lib/msun/src/s_atan.c \
     upstream-freebsd/lib/msun/src/s_atanf.c \
     upstream-freebsd/lib/msun/src/s_carg.c \
     upstream-freebsd/lib/msun/src/s_cargf.c \
-    upstream-freebsd/lib/msun/src/s_cbrt.c \
+    upstream-freebsd/lib/msun/src/s_cargl.c \
     upstream-freebsd/lib/msun/src/s_cbrtf.c \
     upstream-freebsd/lib/msun/src/s_ccosh.c \
     upstream-freebsd/lib/msun/src/s_ccoshf.c \
-    upstream-freebsd/lib/msun/src/s_ceil.c \
-    upstream-freebsd/lib/msun/src/s_ceilf.c \
     upstream-freebsd/lib/msun/src/s_cexp.c \
     upstream-freebsd/lib/msun/src/s_cexpf.c \
     upstream-freebsd/lib/msun/src/s_cimag.c \
     upstream-freebsd/lib/msun/src/s_cimagf.c \
+    upstream-freebsd/lib/msun/src/s_cimagl.c \
     upstream-freebsd/lib/msun/src/s_conj.c \
     upstream-freebsd/lib/msun/src/s_conjf.c \
+    upstream-freebsd/lib/msun/src/s_conjl.c \
     upstream-freebsd/lib/msun/src/s_copysign.c \
     upstream-freebsd/lib/msun/src/s_copysignf.c \
-    upstream-freebsd/lib/msun/src/s_cos.c \
     upstream-freebsd/lib/msun/src/s_cosf.c \
     upstream-freebsd/lib/msun/src/s_cproj.c \
     upstream-freebsd/lib/msun/src/s_cprojf.c \
+    upstream-freebsd/lib/msun/src/s_cprojl.c \
     upstream-freebsd/lib/msun/src/s_creal.c \
     upstream-freebsd/lib/msun/src/s_crealf.c \
+    upstream-freebsd/lib/msun/src/s_creall.c \
     upstream-freebsd/lib/msun/src/s_csinh.c \
     upstream-freebsd/lib/msun/src/s_csinhf.c \
     upstream-freebsd/lib/msun/src/s_csqrt.c \
     upstream-freebsd/lib/msun/src/s_csqrtf.c \
+    upstream-freebsd/lib/msun/src/s_csqrtl.c \
     upstream-freebsd/lib/msun/src/s_ctanh.c \
     upstream-freebsd/lib/msun/src/s_ctanhf.c \
     upstream-freebsd/lib/msun/src/s_erf.c \
     upstream-freebsd/lib/msun/src/s_erff.c \
     upstream-freebsd/lib/msun/src/s_exp2.c \
     upstream-freebsd/lib/msun/src/s_exp2f.c \
-    upstream-freebsd/lib/msun/src/s_expm1.c \
     upstream-freebsd/lib/msun/src/s_expm1f.c \
     upstream-freebsd/lib/msun/src/s_fabs.c \
     upstream-freebsd/lib/msun/src/s_fabsf.c \
     upstream-freebsd/lib/msun/src/s_fdim.c \
     upstream-freebsd/lib/msun/src/s_finite.c \
     upstream-freebsd/lib/msun/src/s_finitef.c \
-    upstream-freebsd/lib/msun/src/s_floor.c \
-    upstream-freebsd/lib/msun/src/s_floorf.c \
-    upstream-freebsd/lib/msun/src/s_fma.c \
-    upstream-freebsd/lib/msun/src/s_fmaf.c \
     upstream-freebsd/lib/msun/src/s_fmax.c \
     upstream-freebsd/lib/msun/src/s_fmaxf.c \
     upstream-freebsd/lib/msun/src/s_fmin.c \
@@ -131,16 +120,11 @@
     upstream-freebsd/lib/msun/src/s_frexpf.c \
     upstream-freebsd/lib/msun/src/s_ilogb.c \
     upstream-freebsd/lib/msun/src/s_ilogbf.c \
-    upstream-freebsd/lib/msun/src/s_llrint.c \
-    upstream-freebsd/lib/msun/src/s_llrintf.c \
     upstream-freebsd/lib/msun/src/s_llround.c \
     upstream-freebsd/lib/msun/src/s_llroundf.c \
-    upstream-freebsd/lib/msun/src/s_log1p.c \
     upstream-freebsd/lib/msun/src/s_log1pf.c \
     upstream-freebsd/lib/msun/src/s_logb.c \
     upstream-freebsd/lib/msun/src/s_logbf.c \
-    upstream-freebsd/lib/msun/src/s_lrint.c \
-    upstream-freebsd/lib/msun/src/s_lrintf.c \
     upstream-freebsd/lib/msun/src/s_lround.c \
     upstream-freebsd/lib/msun/src/s_lroundf.c \
     upstream-freebsd/lib/msun/src/s_modf.c \
@@ -151,8 +135,6 @@
     upstream-freebsd/lib/msun/src/s_nextafterf.c \
     upstream-freebsd/lib/msun/src/s_remquo.c \
     upstream-freebsd/lib/msun/src/s_remquof.c \
-    upstream-freebsd/lib/msun/src/s_rint.c \
-    upstream-freebsd/lib/msun/src/s_rintf.c \
     upstream-freebsd/lib/msun/src/s_round.c \
     upstream-freebsd/lib/msun/src/s_roundf.c \
     upstream-freebsd/lib/msun/src/s_scalbln.c \
@@ -161,25 +143,20 @@
     upstream-freebsd/lib/msun/src/s_signgam.c \
     upstream-freebsd/lib/msun/src/s_significand.c \
     upstream-freebsd/lib/msun/src/s_significandf.c \
-    upstream-freebsd/lib/msun/src/s_sin.c \
     upstream-freebsd/lib/msun/src/s_sinf.c \
-    upstream-freebsd/lib/msun/src/s_tan.c \
     upstream-freebsd/lib/msun/src/s_tanf.c \
-    upstream-freebsd/lib/msun/src/s_tanh.c \
     upstream-freebsd/lib/msun/src/s_tanhf.c \
     upstream-freebsd/lib/msun/src/s_tgammaf.c \
-    upstream-freebsd/lib/msun/src/s_trunc.c \
-    upstream-freebsd/lib/msun/src/s_truncf.c \
     upstream-freebsd/lib/msun/src/w_cabs.c \
     upstream-freebsd/lib/msun/src/w_cabsf.c \
+    upstream-freebsd/lib/msun/src/w_cabsl.c \
     upstream-freebsd/lib/msun/src/w_drem.c \
     upstream-freebsd/lib/msun/src/w_dremf.c \
 
-libm_common_src_files += \
+LOCAL_SRC_FILES_32 += \
     fake_long_double.c \
-    signbit.c \
 
-libm_ld_src_files = \
+LOCAL_SRC_FILES_64 := \
     upstream-freebsd/lib/msun/src/e_acosl.c \
     upstream-freebsd/lib/msun/src/e_acoshl.c \
     upstream-freebsd/lib/msun/src/e_asinl.c \
@@ -187,6 +164,7 @@
     upstream-freebsd/lib/msun/src/e_atanhl.c \
     upstream-freebsd/lib/msun/src/e_fmodl.c \
     upstream-freebsd/lib/msun/src/e_hypotl.c \
+    upstream-freebsd/lib/msun/src/e_lgammal.c \
     upstream-freebsd/lib/msun/src/e_remainderl.c \
     upstream-freebsd/lib/msun/src/e_sqrtl.c \
     upstream-freebsd/lib/msun/src/s_asinhl.c \
@@ -194,6 +172,7 @@
     upstream-freebsd/lib/msun/src/s_cbrtl.c \
     upstream-freebsd/lib/msun/src/s_ceill.c \
     upstream-freebsd/lib/msun/src/s_copysignl.c \
+    upstream-freebsd/lib/msun/src/e_coshl.c \
     upstream-freebsd/lib/msun/src/s_cosl.c \
     upstream-freebsd/lib/msun/src/s_fabsl.c \
     upstream-freebsd/lib/msun/src/s_floorl.c \
@@ -215,25 +194,294 @@
     upstream-freebsd/lib/msun/src/s_rintl.c \
     upstream-freebsd/lib/msun/src/s_roundl.c \
     upstream-freebsd/lib/msun/src/s_scalbnl.c \
+    upstream-freebsd/lib/msun/src/e_sinhl.c \
     upstream-freebsd/lib/msun/src/s_sinl.c \
+    upstream-freebsd/lib/msun/src/s_tanhl.c \
     upstream-freebsd/lib/msun/src/s_tanl.c \
     upstream-freebsd/lib/msun/src/s_truncl.c \
 
-libm_ld_src_files += \
+LOCAL_SRC_FILES_64 += \
     upstream-freebsd/lib/msun/ld128/invtrig.c \
+    upstream-freebsd/lib/msun/ld128/e_lgammal_r.c \
     upstream-freebsd/lib/msun/ld128/k_cosl.c \
     upstream-freebsd/lib/msun/ld128/k_sinl.c \
     upstream-freebsd/lib/msun/ld128/k_tanl.c \
+    upstream-freebsd/lib/msun/ld128/s_erfl.c \
     upstream-freebsd/lib/msun/ld128/s_exp2l.c \
     upstream-freebsd/lib/msun/ld128/s_expl.c \
     upstream-freebsd/lib/msun/ld128/s_logl.c \
     upstream-freebsd/lib/msun/ld128/s_nanl.c \
 
-# TODO: re-enable i387/e_sqrtf.S for x86, and maybe others.
+# TODO: this comes from from upstream's libc, not libm, but it's an
+# implementation detail that should have hidden visibility, so it needs
+# to be in whatever library the math code is in.
+LOCAL_SRC_FILES += \
+    digittoint.c  \
 
-libm_common_cflags := \
+# Functionality not in the BSDs.
+LOCAL_SRC_FILES += \
+    significandl.c \
+    sincos.c \
+
+# Modified versions of BSD code.
+LOCAL_SRC_FILES += \
+    signbit.c \
+
+# Arch specific optimizations.
+
+# -----------------------------------------------------------------------------
+# arm
+# -----------------------------------------------------------------------------
+LOCAL_SRC_FILES_arm += \
+    arm/fenv.c \
+    upstream-freebsd/lib/msun/src/e_acos.c \
+    upstream-freebsd/lib/msun/src/e_asin.c \
+    upstream-freebsd/lib/msun/src/e_atan2.c \
+    upstream-freebsd/lib/msun/src/e_cosh.c \
+    upstream-freebsd/lib/msun/src/e_exp.c \
+    upstream-freebsd/lib/msun/src/e_hypot.c \
+    upstream-freebsd/lib/msun/src/e_log.c \
+    upstream-freebsd/lib/msun/src/e_log10.c \
+    upstream-freebsd/lib/msun/src/e_pow.c \
+    upstream-freebsd/lib/msun/src/e_sinh.c \
+    upstream-freebsd/lib/msun/src/s_atan.c \
+    upstream-freebsd/lib/msun/src/s_cbrt.c \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_cos.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_expm1.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_log1p.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    upstream-freebsd/lib/msun/src/s_sin.c \
+    upstream-freebsd/lib/msun/src/s_tan.c \
+    upstream-freebsd/lib/msun/src/s_tanh.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
+
+# s_floor.S requires neon instructions.
+ifdef TARGET_2ND_ARCH
+arch_variant := $(TARGET_2ND_ARCH_VARIANT)
+else
+arch_variant := $(TARGET_ARCH_VARIANT)
+endif
+
+# Use the C version on armv7-a since it doesn't support neon instructions.
+ifeq ($(arch_variant),armv7-a)
+LOCAL_SRC_FILES_arm += \
+    upstream-freebsd/lib/msun/src/e_sqrt.c \
+    upstream-freebsd/lib/msun/src/e_sqrtf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+
+else
+LOCAL_SRC_FILES_arm += \
+    arm/e_sqrt.S \
+    arm/e_sqrtf.S \
+    arm/s_floor.S \
+
+endif
+
+# -----------------------------------------------------------------------------
+# arm64
+# -----------------------------------------------------------------------------
+LOCAL_SRC_FILES_arm64 += \
+    arm64/ceil.S \
+    arm64/fenv.c \
+    arm64/fma.S \
+    arm64/floor.S \
+    arm64/lrint.S \
+    arm64/rint.S \
+    arm64/sqrt.S \
+    arm64/trunc.S \
+    upstream-freebsd/lib/msun/src/e_acos.c \
+    upstream-freebsd/lib/msun/src/e_asin.c \
+    upstream-freebsd/lib/msun/src/e_atan2.c \
+    upstream-freebsd/lib/msun/src/e_cosh.c \
+    upstream-freebsd/lib/msun/src/e_exp.c \
+    upstream-freebsd/lib/msun/src/e_hypot.c \
+    upstream-freebsd/lib/msun/src/e_log.c \
+    upstream-freebsd/lib/msun/src/e_log10.c \
+    upstream-freebsd/lib/msun/src/e_pow.c \
+    upstream-freebsd/lib/msun/src/e_sinh.c \
+    upstream-freebsd/lib/msun/src/s_atan.c \
+    upstream-freebsd/lib/msun/src/s_cbrt.c \
+    upstream-freebsd/lib/msun/src/s_cos.c \
+    upstream-freebsd/lib/msun/src/s_expm1.c \
+    upstream-freebsd/lib/msun/src/s_log1p.c \
+    upstream-freebsd/lib/msun/src/s_sin.c \
+    upstream-freebsd/lib/msun/src/s_tan.c \
+    upstream-freebsd/lib/msun/src/s_tanh.c \
+
+# -----------------------------------------------------------------------------
+# mips
+# -----------------------------------------------------------------------------
+libm_mips_arch_files := \
+    mips/fenv.c \
+    upstream-freebsd/lib/msun/src/e_acos.c \
+    upstream-freebsd/lib/msun/src/e_asin.c \
+    upstream-freebsd/lib/msun/src/e_atan2.c \
+    upstream-freebsd/lib/msun/src/e_cosh.c \
+    upstream-freebsd/lib/msun/src/e_exp.c \
+    upstream-freebsd/lib/msun/src/e_hypot.c \
+    upstream-freebsd/lib/msun/src/e_log.c \
+    upstream-freebsd/lib/msun/src/e_log10.c \
+    upstream-freebsd/lib/msun/src/e_pow.c \
+    upstream-freebsd/lib/msun/src/e_sinh.c \
+    upstream-freebsd/lib/msun/src/e_sqrt.c \
+    upstream-freebsd/lib/msun/src/e_sqrtf.c \
+    upstream-freebsd/lib/msun/src/s_atan.c \
+    upstream-freebsd/lib/msun/src/s_cbrt.c \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_cos.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_expm1.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_log1p.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    upstream-freebsd/lib/msun/src/s_sin.c \
+    upstream-freebsd/lib/msun/src/s_tan.c \
+    upstream-freebsd/lib/msun/src/s_tanh.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
+
+LOCAL_SRC_FILES_mips += $(libm_mips_arch_files)
+LOCAL_SRC_FILES_mips64 += $(libm_mips_arch_files)
+
+# -----------------------------------------------------------------------------
+# x86
+# -----------------------------------------------------------------------------
+LOCAL_SRC_FILES_x86 += \
+    i387/fenv.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    x86/sqrt.S \
+    x86/sqrtf.S \
+    x86/e_acos.S \
+    x86/e_asin.S \
+    x86/e_atan2.S \
+    x86/e_cosh.S \
+    x86/e_exp.S \
+    x86/e_hypot.S \
+    x86/e_log10.S \
+    x86/e_log.S \
+    x86/e_pow.S \
+    x86/e_sinh.S \
+    x86/libm_reduce_pi04l.S \
+    x86/libm_sincos_huge.S \
+    x86/libm_tancot_huge.S \
+    x86/s_atan.S \
+    x86/s_cbrt.S \
+    x86/s_cos.S \
+    x86/s_expm1.S \
+    x86/s_log1p.S \
+    x86/s_sin.S \
+    x86/s_tanh.S \
+    x86/s_tan.S \
+
+ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
+LOCAL_SRC_FILES_x86 += \
+    x86/ceil.S \
+    x86/ceilf.S \
+    x86/floor.S \
+    x86/floorf.S \
+    x86/trunc.S \
+    x86/truncf.S \
+
+else
+LOCAL_SRC_FILES_x86 += \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
+
+endif
+
+# -----------------------------------------------------------------------------
+# x86_64
+# -----------------------------------------------------------------------------
+LOCAL_SRC_FILES_x86_64 += \
+    amd64/fenv.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    x86_64/sqrt.S \
+    x86_64/sqrtf.S \
+    x86_64/e_acos.S \
+    x86_64/e_asin.S \
+    x86_64/e_atan2.S \
+    x86_64/e_cosh.S \
+    x86_64/e_exp.S \
+    x86_64/e_hypot.S \
+    x86_64/e_log10.S \
+    x86_64/e_log.S \
+    x86_64/e_pow.S \
+    x86_64/e_sinh.S \
+    x86_64/s_atan.S \
+    x86_64/s_cbrt.S \
+    x86_64/s_cos.S \
+    x86_64/s_expm1.S \
+    x86_64/s_log1p.S \
+    x86_64/s_sin.S \
+    x86_64/s_tanh.S \
+    x86_64/s_tan.S \
+
+ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
+LOCAL_SRC_FILES_x86_64 += \
+    x86_64/ceil.S \
+    x86_64/ceilf.S \
+    x86_64/floor.S \
+    x86_64/floorf.S \
+    x86_64/trunc.S \
+    x86_64/truncf.S \
+
+else
+LOCAL_SRC_FILES_x86_64 += \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
+
+endif
+
+LOCAL_C_INCLUDES_x86 += $(LOCAL_PATH)/i387
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/upstream-freebsd/lib/msun/src/
+LOCAL_C_INCLUDES_64 += $(LOCAL_PATH)/upstream-freebsd/lib/msun/ld128/
+
+LOCAL_CLANG := $(libm_clang)
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS := \
     -DFLT_EVAL_METHOD=0 \
-    -std=c99 \
     -include $(LOCAL_PATH)/freebsd-compat.h \
     -Wno-missing-braces \
     -Wno-parentheses \
@@ -242,61 +490,46 @@
     -Wno-unknown-pragmas \
     -fvisibility=hidden \
 
+LOCAL_ASFLAGS := \
+    -Ibionic/libc \
+
 # Workaround the GCC "(long)fn -> lfn" optimization bug which will result in
 # self recursions for lrint, lrintf, and lrintl.
 # BUG: 14225968
-libm_common_cflags += -fno-builtin-rint -fno-builtin-rintf -fno-builtin-rintl
+LOCAL_CFLAGS += \
+    -fno-builtin-rint \
+    -fno-builtin-rintf \
+    -fno-builtin-rintl \
 
-libm_common_includes := $(LOCAL_PATH)/upstream-freebsd/lib/msun/src/
+LOCAL_CONLY_FLAGS := \
+    -std=c99 \
 
-libm_ld_includes := $(LOCAL_PATH)/upstream-freebsd/lib/msun/ld128/
-
-#
-# libm.a for target.
-#
-include $(CLEAR_VARS)
-LOCAL_MODULE:= libm
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-LOCAL_ARM_MODE := arm
-LOCAL_CFLAGS := $(libm_common_cflags)
-LOCAL_C_INCLUDES += $(libm_common_includes)
-LOCAL_SRC_FILES := $(libm_common_src_files)
-LOCAL_SYSTEM_SHARED_LIBRARIES := libc
-
-# arch-specific settings
-LOCAL_C_INCLUDES_arm := $(LOCAL_PATH)/arm
-LOCAL_SRC_FILES_arm := arm/fenv.c
-
-LOCAL_C_INCLUDES_arm64 := $(libm_ld_includes)
-LOCAL_SRC_FILES_arm64 := arm64/fenv.c $(libm_ld_src_files)
-
-LOCAL_C_INCLUDES_x86 := $(LOCAL_PATH)/i387
-LOCAL_SRC_FILES_x86 := i387/fenv.c
-
-LOCAL_C_INCLUDES_x86_64 := $(libm_ld_includes)
-LOCAL_SRC_FILES_x86_64 := amd64/fenv.c $(libm_ld_src_files)
-
-LOCAL_SRC_FILES_mips := mips/fenv.c
-
-LOCAL_C_INCLUDES_mips64 := $(libm_ld_includes)
-LOCAL_SRC_FILES_mips64 := mips/fenv.c $(libm_ld_src_files)
-
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+LOCAL_ADDRESS_SANITIZER := false
 include $(BUILD_STATIC_LIBRARY)
 
-#
-# libm.so for target.
-#
+# -----------------------------------------------------------------------------
+# libm.so
+# -----------------------------------------------------------------------------
 include $(CLEAR_VARS)
-LOCAL_MODULE:= libm
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+# TODO: This is to work around b/19059885. Remove after root cause is fixed
+LOCAL_LDFLAGS_arm := -Wl,--hash-style=sysv
+
+LOCAL_MODULE := libm
+LOCAL_CLANG := $(libm_clang)
 LOCAL_SYSTEM_SHARED_LIBRARIES := libc
 LOCAL_WHOLE_STATIC_LIBRARIES := libm
 
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+LOCAL_ADDRESS_SANITIZER := false
+
+LOCAL_CXX_STL := none
+
 # We'd really like to do this for all architectures, but since this wasn't done
 # before, these symbols must continue to be exported on LP32 for binary
 # compatibility.
-LOCAL_LDFLAGS_arm64 := -Wl,--exclude-libs,libgcc.a
-LOCAL_LDFLAGS_mips64 := -Wl,--exclude-libs,libgcc.a
-LOCAL_LDFLAGS_x86_64 := -Wl,--exclude-libs,libgcc.a
+LOCAL_LDFLAGS_64 := -Wl,--exclude-libs,libgcc.a
+
 include $(BUILD_SHARED_LIBRARY)
 endif
diff --git a/libm/NOTICE b/libm/NOTICE
index 5be60db..70f2f46 100644
--- a/libm/NOTICE
+++ b/libm/NOTICE
@@ -549,32 +549,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2004-2011 David Schultz <das@FreeBSD.ORG>
-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.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (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 (c) 2005 Bruce D. Evans and Steven G. Kargl
 All rights reserved.
 
@@ -976,6 +950,32 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 2012 Stephen Montgomery-Smith <stephen@FreeBSD.ORG>
+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.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (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 (c) 2013 David Chisnall
 All rights reserved.
 
diff --git a/libm/arm/e_sqrt.S b/libm/arm/e_sqrt.S
new file mode 100644
index 0000000..17312f5
--- /dev/null
+++ b/libm/arm/e_sqrt.S
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2013-2014, NVIDIA Corporation.  All rights reserved.
+ * Johnny Qiu <joqiu@nvidia.com>
+ * Shu Zhang <chazhang@nvidia.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (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 <float.h>
+#include <private/bionic_asm.h>
+
+ENTRY(sqrt)
+    vmov.f64    d0, r0, r1
+    vsqrt.f64   d0, d0
+    vmov.f64    r0, r1, d0
+    bx          lr
+END(sqrt)
+
+ALIAS_SYMBOL(sqrtl, sqrt);
diff --git a/libm/arm/e_sqrtf.S b/libm/arm/e_sqrtf.S
new file mode 100644
index 0000000..ddefb22
--- /dev/null
+++ b/libm/arm/e_sqrtf.S
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2013-2014, NVIDIA Corporation.  All rights reserved.
+ * Johhnny Qiu <joqiu@nvidia.com>
+ * Shu Zhang <chazhang@nvidia.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (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 <private/bionic_asm.h>
+
+ENTRY(sqrtf)
+    vmov.f32    s0, r0
+    vsqrt.f32   s0, s0
+    vmov.f32    r0, s0
+    bx          lr
+END(sqrtf)
diff --git a/libm/arm/s_floor.S b/libm/arm/s_floor.S
new file mode 100644
index 0000000..3af8f76
--- /dev/null
+++ b/libm/arm/s_floor.S
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2013-2014, NVIDIA Corporation.  All rights reserved.
+ * Johnny Qiu <joqiu@nvidia.com>
+ * Shu Zhang <chazhang@nvidia.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (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 <float.h>
+#include <private/bionic_asm.h>
+
+ENTRY(floor)    /* x in r0, r1 */
+
+        and             r3, r1, #0x80000000     /* sign(x) */
+        bic             r1, r1, #0x80000000     /* x = abs(x) */
+
+        /* extract exp of x */
+        lsr             r2, r1, #20
+        sub             r2, r2, #0x3fc
+        subs            r2, r2, #0x3            /* r2 <- exp */
+
+        /* |x| < 1.0? */
+        blt             .Lx_lt_one
+
+        /* x < 0? */
+        cmp             r3, #0
+        bne             .Lclr_frac_neg
+
+        /* |x| <= 2^20? */
+        cmp             r2, #20
+        ble             .Lclr_frac_r1
+
+        /* |x| < 2^52? */
+        cmp             r2, #52
+        blt             .Lclr_frac_r0
+
+        /* return x */
+        bx              lr
+
+.Lclr_frac_r1:
+        rsb             r2, r2, #20
+        lsr             r1, r1, r2
+        lsl             r1, r1, r2
+        mov             r0, #0
+        bx              lr
+
+.Lclr_frac_r0:
+        rsb             r2, r2, #52
+        lsr             r0, r0, r2
+        lsl             r0, r0, r2
+        bx              lr
+
+.Lclr_frac_neg:
+        /* |x| <= 2^20? */
+        cmp             r2, #20
+        ble             .Lclr_frac_r1_neg
+
+        /* |x| < 2^52? */
+        cmp             r2, #52
+        blt             .Lclr_frac_r0_neg
+
+        /* return x */
+        orr             r1, r1, #0x80000000
+        bx              lr
+
+.Lclr_frac_r1_neg:
+        rsb             r2, r2, #20
+        mov             r3, #1
+        lsl             r3, r3, r2
+        sub             r3, r3, #1
+        and             r3, r1, r3
+        orr             r3, r3, r0
+        lsr             r1, r1, r2
+        lsl             r1, r1, r2
+        mov             r0, #0
+        b               .Lreturn_x_neg
+
+.Lclr_frac_r0_neg:
+        rsb             r2, r2, #52
+        mov             r3, #1
+        lsl             r3, r3, r2
+        sub             r3, r3, #1
+        and             r3, r0, r3
+        lsr             r0, r0, r2
+        lsl             r0, r0, r2
+        b               .Lreturn_x_neg
+
+.Lx_lt_one:
+        /* x == +-0? */
+        cmp             r0, #0
+        cmpeq           r1, #0
+        orreq           r1, r1, r3
+        bxeq            lr
+
+        /* (x > 0) ? 0 : -1 */
+        mov             r1, #0x00100000
+        mov             r0, #0
+        cmp             r3, #0
+        movne           r1, #0xc0000000
+        sub             r1, r1, #0x00100000
+        bx              lr
+
+.Lreturn_x_neg:
+        cmp             r3, #0
+        orr             r1, r1, #0x80000000
+        bxeq            lr
+
+        vmov            d16, r0, r1
+        vmov.f64        d18, #1.0
+        vsub.f64        d16, d16, d18
+        vmov            r0, r1, d16
+        bx              lr
+
+END(floor)
+
+ALIAS_SYMBOL(floorl, floor);
diff --git a/libm/arm64/ceil.S b/libm/arm64/ceil.S
new file mode 100644
index 0000000..006c988
--- /dev/null
+++ b/libm/arm64/ceil.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(ceil)
+  frintP d0, d0
+  ret
+END(ceil)
+
+ENTRY(ceilf)
+  frintP s0, s0
+  ret
+END(ceilf)
diff --git a/libm/arm64/floor.S b/libm/arm64/floor.S
new file mode 100644
index 0000000..2d792e5
--- /dev/null
+++ b/libm/arm64/floor.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(floor)
+  frintM d0, d0
+  ret
+END(floor)
+
+ENTRY(floorf)
+  frintM s0, s0
+  ret
+END(floorf)
diff --git a/libm/arm64/fma.S b/libm/arm64/fma.S
new file mode 100644
index 0000000..e64e807
--- /dev/null
+++ b/libm/arm64/fma.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(fma)
+  fmadd d0, d0, d1, d2
+  ret
+END(fma)
+
+ENTRY(fmaf)
+  fmadd s0, s0, s1, s2
+  ret
+END(fmaf)
diff --git a/libm/arm64/lrint.S b/libm/arm64/lrint.S
new file mode 100644
index 0000000..d642759
--- /dev/null
+++ b/libm/arm64/lrint.S
@@ -0,0 +1,34 @@
+/*
+ * Copyright 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(lrint)
+  frintX d0, d0
+  fcvtzs x0, d0
+  ret
+END(lrint)
+
+ENTRY(lrintf)
+  frintX s0, s0
+  fcvtzs x0, s0
+  ret
+END(lrintf)
+
+// sizeof(long) and sizeof(long long) are the same for aarch64
+ALIAS_SYMBOL(llrint, lrint);
+
+ALIAS_SYMBOL(llrintf, lrintf);
diff --git a/libm/arm64/rint.S b/libm/arm64/rint.S
new file mode 100644
index 0000000..0820c22
--- /dev/null
+++ b/libm/arm64/rint.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(rint)
+  frintX d0, d0
+  ret
+END(rint)
+
+ENTRY(rintf)
+  frintX s0, s0
+  ret
+END(rintf)
diff --git a/libm/arm64/sqrt.S b/libm/arm64/sqrt.S
new file mode 100644
index 0000000..fe0020b
--- /dev/null
+++ b/libm/arm64/sqrt.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sqrt)
+  fsqrt d0, d0
+  ret
+END(sqrt)
+
+ENTRY(sqrtf)
+  fsqrt s0, s0
+  ret
+END(sqrtf)
diff --git a/libm/arm64/trunc.S b/libm/arm64/trunc.S
new file mode 100644
index 0000000..329c08d
--- /dev/null
+++ b/libm/arm64/trunc.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(trunc)
+  frintZ d0, d0
+  ret
+END(trunc)
+
+ENTRY(truncf)
+  frintZ s0, s0
+  ret
+END(truncf)
diff --git a/libm/freebsd-compat.h b/libm/freebsd-compat.h
index 1481cc2..a4dd6c2 100644
--- a/libm/freebsd-compat.h
+++ b/libm/freebsd-compat.h
@@ -26,6 +26,8 @@
 #define __strong_reference(sym,aliassym) \
     extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
 
+#define __warn_references(sym,msg) /* ignored */
+
 /* digittoint is in BSD's <ctype.h>. */
 int digittoint(char ch);
 
diff --git a/libc/arch-x86_64/include/machine/fpu.h b/libm/include/amd64/machine/fpu.h
similarity index 100%
rename from libc/arch-x86_64/include/machine/fpu.h
rename to libm/include/amd64/machine/fpu.h
diff --git a/libm/include/complex.h b/libm/include/complex.h
index 0702541..ff6b166 100644
--- a/libm/include/complex.h
+++ b/libm/include/complex.h
@@ -46,14 +46,39 @@
 #define	complex		_Complex
 #define	I		_Complex_I
 
+#if __ISO_C_VISIBLE >= 2011
+#ifdef __clang__
+#define	CMPLX(x, y)	((double complex){ x, y })
+#define	CMPLXF(x, y)	((float complex){ x, y })
+#define	CMPLXL(x, y)	((long double complex){ x, y })
+#elif __GNUC_PREREQ__(4, 7)
+#define	CMPLX(x, y)	__builtin_complex((double)(x), (double)(y))
+#define	CMPLXF(x, y)	__builtin_complex((float)(x), (float)(y))
+#define	CMPLXL(x, y)	__builtin_complex((long double)(x), (long double)(y))
+#endif
+#endif /* __ISO_C_VISIBLE >= 2011 */
+
 __BEGIN_DECLS
+#pragma GCC visibility push(default)
 
 double		cabs(double complex);
 float		cabsf(float complex);
 long double	cabsl(long double complex);
+double complex	cacos(double complex);
+float complex	cacosf(float complex);
+double complex	cacosh(double complex);
+float complex	cacoshf(float complex);
 double		carg(double complex);
 float		cargf(float complex);
 long double	cargl(long double complex);
+double complex	casin(double complex);
+float complex	casinf(float complex);
+double complex	casinh(double complex);
+float complex	casinhf(float complex);
+double complex	catan(double complex);
+float complex	catanf(float complex);
+double complex	catanh(double complex);
+float complex	catanhf(float complex);
 double complex	ccos(double complex);
 float complex	ccosf(float complex);
 double complex	ccosh(double complex);
@@ -87,6 +112,7 @@
 double complex	ctanh(double complex);
 float complex	ctanhf(float complex);
 
+#pragma GCC visibility pop
 __END_DECLS
 
 #endif /* _COMPLEX_H */
diff --git a/libm/include/math.h b/libm/include/math.h
index 3eca140..1542374 100644
--- a/libm/include/math.h
+++ b/libm/include/math.h
@@ -459,14 +459,17 @@
 long double	tanl(long double);
 long double	tgammal(long double);
 long double	truncl(long double);
-
 #endif /* __ISO_C_VISIBLE >= 1999 */
 
-#if defined(_GNU_SOURCE)
+#if __BSD_VISIBLE
+long double	lgammal_r(long double, int *);
+#endif
+
+#if defined(__USE_GNU)
 void sincos(double, double*, double*);
 void sincosf(float, float*, float*);
 void sincosl(long double, long double*, long double*);
-#endif /* _GNU_SOURCE */
+#endif /* __USE_GNU */
 
 #pragma GCC visibility pop
 __END_DECLS
diff --git a/libm/sincos.c b/libm/sincos.c
index ad75549..a5608cf 100644
--- a/libm/sincos.c
+++ b/libm/sincos.c
@@ -22,8 +22,8 @@
  * LIABILITY, OR TORT (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 _GNU_SOURCE 1
 #include <math.h>
 
diff --git a/libm/upstream-freebsd/lib/msun/ld128/e_lgammal_r.c b/libm/upstream-freebsd/lib/msun/ld128/e_lgammal_r.c
new file mode 100644
index 0000000..53d3af1
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/ld128/e_lgammal_r.c
@@ -0,0 +1,330 @@
+/* @(#)e_lgamma_r.c 1.3 95/01/18 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * See e_lgamma_r.c for complete comments.
+ *
+ * Converted to long double by Steven G. Kargl.
+ */
+
+#include "fpmath.h"
+#include "math.h"
+#include "math_private.h"
+
+static const volatile double vzero = 0;
+
+static const double
+zero=  0,
+half=  0.5,
+one =  1;
+
+static const long double
+pi  =  3.14159265358979323846264338327950288e+00L;
+/*
+ * Domain y in [0x1p-119, 0.28], range ~[-1.4065e-36, 1.4065e-36]:
+ * |(lgamma(2 - y) + y / 2) / y - a(y)| < 2**-119.1
+ */
+static const long double
+a0  =  7.72156649015328606065120900824024296e-02L,
+a1  =  3.22467033424113218236207583323018498e-01L,
+a2  =  6.73523010531980951332460538330282217e-02L,
+a3  =  2.05808084277845478790009252803463129e-02L,
+a4  =  7.38555102867398526627292839296001626e-03L,
+a5  =  2.89051033074152328576829509522483468e-03L,
+a6  =  1.19275391170326097618357349881842913e-03L,
+a7  =  5.09669524743042462515256340206203019e-04L,
+a8  =  2.23154758453578096143609255559576017e-04L,
+a9  =  9.94575127818397632126978731542755129e-05L,
+a10 =  4.49262367375420471287545895027098145e-05L,
+a11 =  2.05072127845117995426519671481628849e-05L,
+a12 =  9.43948816959096748454087141447939513e-06L,
+a13 =  4.37486780697359330303852050718287419e-06L,
+a14 =  2.03920783892362558276037363847651809e-06L,
+a15 =  9.55191070057967287877923073200324649e-07L,
+a16 =  4.48993286185740853170657139487620560e-07L,
+a17 =  2.13107543597620911675316728179563522e-07L,
+a18 =  9.70745379855304499867546549551023473e-08L,
+a19 =  5.61889970390290257926487734695402075e-08L,
+a20 =  6.42739653024130071866684358960960951e-09L,
+a21 =  3.34491062143649291746195612991870119e-08L,
+a22 = -1.57068547394315223934653011440641472e-08L,
+a23 =  1.30812825422415841213733487745200632e-08L;
+/*
+ * Domain x in [tc-0.24, tc+0.28], range ~[-6.3201e-37, 6.3201e-37]:
+ * |(lgamma(x) - tf) - t(x - tc)| < 2**-120.3.
+ */
+static const long double
+tc  =  1.46163214496836234126265954232572133e+00L,
+tf  = -1.21486290535849608095514557177691584e-01L,
+tt  =  1.57061739945077675484237837992951704e-36L,
+t0  = -1.99238329499314692728655623767019240e-36L,
+t1  = -6.08453430711711404116887457663281416e-35L,
+t2  =  4.83836122723810585213722380854828904e-01L,
+t3  = -1.47587722994530702030955093950668275e-01L,
+t4  =  6.46249402389127526561003464202671923e-02L,
+t5  = -3.27885410884813055008502586863748063e-02L,
+t6  =  1.79706751152103942928638276067164935e-02L,
+t7  = -1.03142230366363872751602029672767978e-02L,
+t8  =  6.10053602051788840313573150785080958e-03L,
+t9  = -3.68456960831637325470641021892968954e-03L,
+t10 =  2.25976482322181046611440855340968560e-03L,
+t11 = -1.40225144590445082933490395950664961e-03L,
+t12 =  8.78232634717681264035014878172485575e-04L,
+t13 = -5.54194952796682301220684760591403899e-04L,
+t14 =  3.51912956837848209220421213975000298e-04L,
+t15 = -2.24653443695947456542669289367055542e-04L,
+t16 =  1.44070395420840737695611929680511823e-04L,
+t17 = -9.27609865550394140067059487518862512e-05L,
+t18 =  5.99347334438437081412945428365433073e-05L,
+t19 = -3.88458388854572825603964274134801009e-05L,
+t20 =  2.52476631610328129217896436186551043e-05L,
+t21 = -1.64508584981658692556994212457518536e-05L,
+t22 =  1.07434583475987007495523340296173839e-05L,
+t23 = -7.03070407519397260929482550448878399e-06L,
+t24 =  4.60968590693753579648385629003100469e-06L,
+t25 = -3.02765473778832036018438676945512661e-06L,
+t26 =  1.99238771545503819972741288511303401e-06L,
+t27 = -1.31281299822614084861868817951788579e-06L,
+t28 =  8.60844432267399655055574642052370223e-07L,
+t29 = -5.64535486432397413273248363550536374e-07L,
+t30 =  3.99357783676275660934903139592727737e-07L,
+t31 = -2.95849029193433121795495215869311610e-07L,
+t32 =  1.37790144435073124976696250804940384e-07L;
+/*
+ * Domain y in [-0.1, 0.232], range ~[-1.4046e-37, 1.4181e-37]:
+ * |(lgamma(1 + y) + 0.5 * y) / y - u(y) / v(y)| < 2**-122.8
+ */
+static const long double
+u0  = -7.72156649015328606065120900824024311e-02L,
+u1  =  4.24082772271938167430983113242482656e-01L,
+u2  =  2.96194003481457101058321977413332171e+00L,
+u3  =  6.49503267711258043997790983071543710e+00L,
+u4  =  7.40090051288150177152835698948644483e+00L,
+u5  =  4.94698036296756044610805900340723464e+00L,
+u6  =  2.00194224610796294762469550684947768e+00L,
+u7  =  4.82073087750608895996915051568834949e-01L,
+u8  =  6.46694052280506568192333848437585427e-02L,
+u9  =  4.17685526755100259316625348933108810e-03L,
+u10 =  9.06361003550314327144119307810053410e-05L,
+v1  =  5.15937098592887275994320496999951947e+00L,
+v2  =  1.14068418766251486777604403304717558e+01L,
+v3  =  1.41164839437524744055723871839748489e+01L,
+v4  =  1.07170702656179582805791063277960532e+01L,
+v5  =  5.14448694179047879915042998453632434e+00L,
+v6  =  1.55210088094585540637493826431170289e+00L,
+v7  =  2.82975732849424562719893657416365673e-01L,
+v8  =  2.86424622754753198010525786005443539e-02L,
+v9  =  1.35364253570403771005922441442688978e-03L,
+v10 =  1.91514173702398375346658943749580666e-05L,
+v11 = -3.25364686890242327944584691466034268e-08L;
+/*
+ * Domain x in (2, 3], range ~[-1.3341e-36, 1.3536e-36]:
+ * |(lgamma(y+2) - 0.5 * y) / y - s(y)/r(y)| < 2**-120.1
+ * with y = x - 2.
+ */
+static const long double
+s0  = -7.72156649015328606065120900824024297e-02L,
+s1  =  1.23221687850916448903914170805852253e-01L,
+s2  =  5.43673188699937239808255378293820020e-01L,
+s3  =  6.31998137119005233383666791176301800e-01L,
+s4  =  3.75885340179479850993811501596213763e-01L,
+s5  =  1.31572908743275052623410195011261575e-01L,
+s6  =  2.82528453299138685507186287149699749e-02L,
+s7  =  3.70262021550340817867688714880797019e-03L,
+s8  =  2.83374000312371199625774129290973648e-04L,
+s9  =  1.15091830239148290758883505582343691e-05L,
+s10 =  2.04203474281493971326506384646692446e-07L,
+s11 =  9.79544198078992058548607407635645763e-10L,
+r1  =  2.58037466655605285937112832039537492e+00L,
+r2  =  2.86289413392776399262513849911531180e+00L,
+r3  =  1.78691044735267497452847829579514367e+00L,
+r4  =  6.89400381446725342846854215600008055e-01L,
+r5  =  1.70135865462567955867134197595365343e-01L,
+r6  =  2.68794816183964420375498986152766763e-02L,
+r7  =  2.64617234244861832870088893332006679e-03L,
+r8  =  1.52881761239180800640068128681725702e-04L,
+r9  =  4.63264813762296029824851351257638558e-06L,
+r10 =  5.89461519146957343083848967333671142e-08L,
+r11 =  1.79027678176582527798327441636552968e-10L;
+/*
+ * Domain z in [8, 0x1p70], range ~[-9.8214e-35, 9.8214e-35]:
+ * |lgamma(x) - (x - 0.5) * (log(x) - 1) - w(1/x)| < 2**-113.0
+ */
+static const long double
+w0  =  4.18938533204672741780329736405617738e-01L,
+w1  =  8.33333333333333333333333333332852026e-02L,
+w2  = -2.77777777777777777777777727810123528e-03L,
+w3  =  7.93650793650793650791708939493907380e-04L,
+w4  = -5.95238095238095234390450004444370959e-04L,
+w5  =  8.41750841750837633887817658848845695e-04L,
+w6  = -1.91752691752396849943172337347259743e-03L,
+w7  =  6.41025640880333069429106541459015557e-03L,
+w8  = -2.95506530801732133437990433080327074e-02L,
+w9  =  1.79644237328444101596766586979576927e-01L,
+w10 = -1.39240539108367641920172649259736394e+00L,
+w11 =  1.33987701479007233325288857758641761e+01L,
+w12 = -1.56363596431084279780966590116006255e+02L,
+w13 =  2.14830978044410267201172332952040777e+03L,
+w14 = -3.28636067474227378352761516589092334e+04L,
+w15 =  5.06201257747865138432663574251462485e+05L,
+w16 = -6.79720123352023636706247599728048344e+06L,
+w17 =  6.57556601705472106989497289465949255e+07L,
+w18 = -3.26229058141181783534257632389415580e+08L;
+
+static long double
+sin_pil(long double x)
+{
+	volatile long double vz;
+	long double y,z;
+	uint64_t lx, n;
+	uint16_t hx;
+
+	y = -x;
+
+	vz = y+0x1.p112;
+	z = vz-0x1.p112;
+	if (z == y)
+	    return zero;
+
+	vz = y+0x1.p110;
+	EXTRACT_LDBL128_WORDS(hx,lx,n,vz);
+	z = vz-0x1.p110;
+	if (z > y) {
+	    z -= 0.25;
+	    n--;
+	}
+	n &= 7;
+	y = y - z + n * 0.25;
+
+	switch (n) {
+	    case 0:   y =  __kernel_sinl(pi*y,zero,0); break;
+	    case 1:
+	    case 2:   y =  __kernel_cosl(pi*(0.5-y),zero); break;
+	    case 3:
+	    case 4:   y =  __kernel_sinl(pi*(one-y),zero,0); break;
+	    case 5:
+	    case 6:   y = -__kernel_cosl(pi*(y-1.5),zero); break;
+	    default:  y =  __kernel_sinl(pi*(y-2.0),zero,0); break;
+	    }
+	return -y;
+}
+
+long double
+lgammal_r(long double x, int *signgamp)
+{
+	long double nadj,p,p1,p2,p3,q,r,t,w,y,z;
+	uint64_t llx,lx;
+	int i;
+	uint16_t hx,ix;
+
+	EXTRACT_LDBL128_WORDS(hx,lx,llx,x);
+
+    /* purge +-Inf and NaNs */
+	*signgamp = 1;
+	ix = hx&0x7fff;
+	if(ix==0x7fff) return x*x;
+
+   /* purge +-0 and tiny arguments */
+	*signgamp = 1-2*(hx>>15);
+	if(ix<0x3fff-116) {		/* |x|<2**-(p+3), return -log(|x|) */
+	    if((ix|lx|llx)==0)
+		return one/vzero;
+	    return -logl(fabsl(x));
+	}
+
+    /* purge negative integers and start evaluation for other x < 0 */
+	if(hx&0x8000) {
+	    *signgamp = 1;
+	    if(ix>=0x3fff+112) 		/* |x|>=2**(p-1), must be -integer */
+		return one/vzero;
+	    t = sin_pil(x);
+	    if(t==zero) return one/vzero;
+	    nadj = logl(pi/fabsl(t*x));
+	    if(t<zero) *signgamp = -1;
+	    x = -x;
+	}
+
+    /* purge 1 and 2 */
+	if((ix==0x3fff || ix==0x4000) && (lx|llx)==0) r = 0;
+    /* for x < 2.0 */
+	else if(ix<0x4000) {
+	    if(x<=8.9999961853027344e-01) {
+		r = -logl(x);
+		if(x>=7.3159980773925781e-01) {y = 1-x; i= 0;}
+		else if(x>=2.3163998126983643e-01) {y= x-(tc-1); i=1;}
+	  	else {y = x; i=2;}
+	    } else {
+		r = 0;
+	        if(x>=1.7316312789916992e+00) {y=2-x;i=0;}
+	        else if(x>=1.2316322326660156e+00) {y=x-tc;i=1;}
+		else {y=x-1;i=2;}
+	    }
+	    switch(i) {
+	      case 0:
+		z = y*y;
+		p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*(a10+z*(a12+z*(a14+z*(a16+
+		    z*(a18+z*(a20+z*a22))))))))));
+		p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*(a11+z*(a13+z*(a15+
+		    z*(a17+z*(a19+z*(a21+z*a23)))))))))));
+		p  = y*p1+p2;
+		r  += p-y/2; break;
+	      case 1:
+		p = t0+y*t1+tt+y*y*(t2+y*(t3+y*(t4+y*(t5+y*(t6+y*(t7+y*(t8+
+		    y*(t9+y*(t10+y*(t11+y*(t12+y*(t13+y*(t14+y*(t15+y*(t16+
+		    y*(t17+y*(t18+y*(t19+y*(t20+y*(t21+y*(t22+y*(t23+
+		    y*(t24+y*(t25+y*(t26+y*(t27+y*(t28+y*(t29+y*(t30+
+		    y*(t31+y*t32))))))))))))))))))))))))))))));
+		r += tf + p; break;
+	      case 2:
+		p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*(u5+y*(u6+y*(u7+
+		    y*(u8+y*(u9+y*u10))))))))));
+		p2 = one+y*(v1+y*(v2+y*(v3+y*(v4+y*(v5+y*(v6+y*(v7+
+		    y*(v8+y*(v9+y*(v10+y*v11))))))))));
+		r += p1/p2-y/2;
+	    }
+	}
+    /* x < 8.0 */
+	else if(ix<0x4002) {
+	    i = x;
+	    y = x-i;
+	    p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*(s6+y*(s7+y*(s8+
+		y*(s9+y*(s10+y*s11)))))))))));
+	    q = one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*(r6+y*(r7+y*(r8+
+		y*(r9+y*(r10+y*r11))))))))));
+	    r = y/2+p/q;
+	    z = 1;	/* lgamma(1+s) = log(s) + lgamma(s) */
+	    switch(i) {
+	    case 7: z *= (y+6);		/* FALLTHRU */
+	    case 6: z *= (y+5);		/* FALLTHRU */
+	    case 5: z *= (y+4);		/* FALLTHRU */
+	    case 4: z *= (y+3);		/* FALLTHRU */
+	    case 3: z *= (y+2);		/* FALLTHRU */
+		    r += logl(z); break;
+	    }
+    /* 8.0 <= x < 2**(p+3) */
+	} else if (ix<0x3fff+116) {
+	    t = logl(x);
+	    z = one/x;
+	    y = z*z;
+	    w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*(w6+y*(w7+y*(w8+
+		y*(w9+y*(w10+y*(w11+y*(w12+y*(w13+y*(w14+y*(w15+y*(w16+
+		y*(w17+y*w18)))))))))))))))));
+	    r = (x-half)*(t-one)+w;
+    /* 2**(p+3) <= x <= inf */
+	} else 
+	    r =  x*(logl(x)-1);
+	if(hx&0x8000) r = nadj - r;
+	return r;
+}
diff --git a/libm/upstream-freebsd/lib/msun/ld128/e_rem_pio2l.h b/libm/upstream-freebsd/lib/msun/ld128/e_rem_pio2l.h
index 078d0c3..5d78c4d 100644
--- a/libm/upstream-freebsd/lib/msun/ld128/e_rem_pio2l.h
+++ b/libm/upstream-freebsd/lib/msun/ld128/e_rem_pio2l.h
@@ -6,7 +6,7 @@
  *
  * Developed at SunSoft, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice 
  * is preserved.
  * ====================================================
  *
@@ -17,8 +17,8 @@
 __FBSDID("$FreeBSD$");
 
 /* ld128 version of __ieee754_rem_pio2l(x,y)
- *
- * return the remainder of x rem pi/2 in y[0]+y[1]
+ * 
+ * return the remainder of x rem pi/2 in y[0]+y[1] 
  * use __kernel_rem_pio2()
  */
 
@@ -88,24 +88,24 @@
 		union IEEEl2bits u2;
 	        int ex1;
 	        j  = ex;
-	        y[0] = r-w;
+	        y[0] = r-w; 
 		u2.e = y[0];
 		ex1 = u2.xbits.expsign & 0x7fff;
 	        i = j-ex1;
 	        if(i>51) {  /* 2nd iteration needed, good to 248 */
 		    t  = r;
-		    w  = fn*pio2_2;
+		    w  = fn*pio2_2;	
 		    r  = t-w;
-		    w  = fn*pio2_2t-((t-r)-w);
+		    w  = fn*pio2_2t-((t-r)-w);	
 		    y[0] = r-w;
 		    u2.e = y[0];
 		    ex1 = u2.xbits.expsign & 0x7fff;
 		    i = j-ex1;
 		    if(i>119) {	/* 3rd iteration need, 316 bits acc */
 		    	t  = r;	/* will cover all possible cases */
-		    	w  = fn*pio2_3;
+		    	w  = fn*pio2_3;	
 		    	r  = t-w;
-		    	w  = fn*pio2_3t-((t-r)-w);
+		    	w  = fn*pio2_3t-((t-r)-w);	
 		    	y[0] = r-w;
 		    }
 		}
@@ -113,7 +113,7 @@
 	    y[1] = (r-y[0])-w;
 	    return n;
 	}
-    /*
+    /* 
      * all other (large) arguments
      */
 	if(ex==0x7fff) {		/* x is inf or NaN */
diff --git a/libm/upstream-freebsd/lib/msun/ld128/invtrig.c b/libm/upstream-freebsd/lib/msun/ld128/invtrig.c
index df67d16..4ceca8a 100644
--- a/libm/upstream-freebsd/lib/msun/ld128/invtrig.c
+++ b/libm/upstream-freebsd/lib/msun/ld128/invtrig.c
@@ -58,8 +58,8 @@
  */
 const long double atanhi[] = {
 	 4.63647609000806116214256231461214397e-01L,
-	 7.85398163397448309615660845819875699e-01L,
-	 9.82793723247329067985710611014666038e-01L,
+	 7.85398163397448309615660845819875699e-01L,       
+	 9.82793723247329067985710611014666038e-01L,       
 	 1.57079632679489661923132169163975140e+00L,
 };
 
diff --git a/libm/upstream-freebsd/lib/msun/ld128/k_cosl.c b/libm/upstream-freebsd/lib/msun/ld128/k_cosl.c
index 5f4aa37..fe57773 100644
--- a/libm/upstream-freebsd/lib/msun/ld128/k_cosl.c
+++ b/libm/upstream-freebsd/lib/msun/ld128/k_cosl.c
@@ -6,7 +6,7 @@
  *
  * Developed at SunSoft, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice 
  * is preserved.
  * ====================================================
  */
diff --git a/libm/upstream-freebsd/lib/msun/ld128/k_expl.h b/libm/upstream-freebsd/lib/msun/ld128/k_expl.h
new file mode 100644
index 0000000..a5668fd
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/ld128/k_expl.h
@@ -0,0 +1,328 @@
+/* from: FreeBSD: head/lib/msun/ld128/s_expl.c 251345 2013-06-03 20:09:22Z kargl */
+
+/*-
+ * Copyright (c) 2009-2013 Steven G. Kargl
+ * 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 unmodified, 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 AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Optimized by Bruce D. Evans.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * ld128 version of k_expl.h.  See ../ld80/s_expl.c for most comments.
+ *
+ * See ../src/e_exp.c and ../src/k_exp.h for precision-independent comments
+ * about the secondary kernels.
+ */
+
+#define	INTERVALS	128
+#define	LOG2_INTERVALS	7
+#define	BIAS	(LDBL_MAX_EXP - 1)
+
+static const double
+/*
+ * ln2/INTERVALS = L1+L2 (hi+lo decomposition for multiplication).  L1 must
+ * have at least 22 (= log2(|LDBL_MIN_EXP-extras|) + log2(INTERVALS)) lowest
+ * bits zero so that multiplication of it by n is exact.
+ */
+INV_L = 1.8466496523378731e+2,		/*  0x171547652b82fe.0p-45 */
+L2 = -1.0253670638894731e-29;		/* -0x1.9ff0342542fc3p-97 */
+static const long double
+/* 0x1.62e42fefa39ef35793c768000000p-8 */
+L1 =  5.41521234812457272982212595914567508e-3L;
+
+/*
+ * XXX values in hex in comments have been lost (or were never present)
+ * from here.
+ */
+static const long double
+/*
+ * Domain [-0.002708, 0.002708], range ~[-2.4021e-38, 2.4234e-38]:
+ * |exp(x) - p(x)| < 2**-124.9
+ * (0.002708 is ln2/(2*INTERVALS) rounded up a little).
+ *
+ * XXX the coeffs aren't very carefully rounded, and I get 3.6 more bits.
+ */
+A2  =  0.5,
+A3  =  1.66666666666666666666666666651085500e-1L,
+A4  =  4.16666666666666666666666666425885320e-2L,
+A5  =  8.33333333333333333334522877160175842e-3L,
+A6  =  1.38888888888888888889971139751596836e-3L;
+
+static const double
+A7  =  1.9841269841269470e-4,		/*  0x1.a01a01a019f91p-13 */
+A8  =  2.4801587301585286e-5,		/*  0x1.71de3ec75a967p-19 */
+A9  =  2.7557324277411235e-6,		/*  0x1.71de3ec75a967p-19 */
+A10 =  2.7557333722375069e-7;		/*  0x1.27e505ab56259p-22 */
+
+static const struct {
+	/*
+	 * hi must be rounded to at most 106 bits so that multiplication
+	 * by r1 in expm1l() is exact, but it is rounded to 88 bits due to
+	 * historical accidents.
+	 *
+	 * XXX it is wasteful to use long double for both hi and lo.  ld128
+	 * exp2l() uses only float for lo (in a very differently organized
+	 * table; ld80 exp2l() is different again.  It uses 2 doubles in a
+	 * table organized like this one.  1 double and 1 float would
+	 * suffice).  There are different packing/locality/alignment/caching
+	 * problems with these methods.
+	 *
+	 * XXX C's bad %a format makes the bits unreadable.  They happen
+	 * to all line up for the hi values 1 before the point and 88
+	 * in 22 nybbles, but for the low values the nybbles are shifted
+	 * randomly.
+	 */
+	long double	hi;
+	long double	lo;
+} tbl[INTERVALS] = {
+	0x1p0L, 0x0p0L,
+	0x1.0163da9fb33356d84a66aep0L, 0x3.36dcdfa4003ec04c360be2404078p-92L,
+	0x1.02c9a3e778060ee6f7cacap0L, 0x4.f7a29bde93d70a2cabc5cb89ba10p-92L,
+	0x1.04315e86e7f84bd738f9a2p0L, 0xd.a47e6ed040bb4bfc05af6455e9b8p-96L,
+	0x1.059b0d31585743ae7c548ep0L, 0xb.68ca417fe53e3495f7df4baf84a0p-92L,
+	0x1.0706b29ddf6ddc6dc403a8p0L, 0x1.d87b27ed07cb8b092ac75e311753p-88L,
+	0x1.0874518759bc808c35f25cp0L, 0x1.9427fa2b041b2d6829d8993a0d01p-88L,
+	0x1.09e3ecac6f3834521e060cp0L, 0x5.84d6b74ba2e023da730e7fccb758p-92L,
+	0x1.0b5586cf9890f6298b92b6p0L, 0x1.1842a98364291408b3ceb0a2a2bbp-88L,
+	0x1.0cc922b7247f7407b705b8p0L, 0x9.3dc5e8aac564e6fe2ef1d431fd98p-92L,
+	0x1.0e3ec32d3d1a2020742e4ep0L, 0x1.8af6a552ac4b358b1129e9f966a4p-88L,
+	0x1.0fb66affed31af232091dcp0L, 0x1.8a1426514e0b627bda694a400a27p-88L,
+	0x1.11301d0125b50a4ebbf1aep0L, 0xd.9318ceac5cc47ab166ee57427178p-92L,
+	0x1.12abdc06c31cbfb92bad32p0L, 0x4.d68e2f7270bdf7cedf94eb1cb818p-92L,
+	0x1.1429aaea92ddfb34101942p0L, 0x1.b2586d01844b389bea7aedd221d4p-88L,
+	0x1.15a98c8a58e512480d573cp0L, 0x1.d5613bf92a2b618ee31b376c2689p-88L,
+	0x1.172b83c7d517adcdf7c8c4p0L, 0x1.0eb14a792035509ff7d758693f24p-88L,
+	0x1.18af9388c8de9bbbf70b9ap0L, 0x3.c2505c97c0102e5f1211941d2840p-92L,
+	0x1.1a35beb6fcb753cb698f68p0L, 0x1.2d1c835a6c30724d5cfae31b84e5p-88L,
+	0x1.1bbe084045cd39ab1e72b4p0L, 0x4.27e35f9acb57e473915519a1b448p-92L,
+	0x1.1d4873168b9aa7805b8028p0L, 0x9.90f07a98b42206e46166cf051d70p-92L,
+	0x1.1ed5022fcd91cb8819ff60p0L, 0x1.121d1e504d36c47474c9b7de6067p-88L,
+	0x1.2063b88628cd63b8eeb028p0L, 0x1.50929d0fc487d21c2b84004264dep-88L,
+	0x1.21f49917ddc962552fd292p0L, 0x9.4bdb4b61ea62477caa1dce823ba0p-92L,
+	0x1.2387a6e75623866c1fadb0p0L, 0x1.c15cb593b0328566902df69e4de2p-88L,
+	0x1.251ce4fb2a63f3582ab7dep0L, 0x9.e94811a9c8afdcf796934bc652d0p-92L,
+	0x1.26b4565e27cdd257a67328p0L, 0x1.d3b249dce4e9186ddd5ff44e6b08p-92L,
+	0x1.284dfe1f5638096cf15cf0p0L, 0x3.ca0967fdaa2e52d7c8106f2e262cp-92L,
+	0x1.29e9df51fdee12c25d15f4p0L, 0x1.a24aa3bca890ac08d203fed80a07p-88L,
+	0x1.2b87fd0dad98ffddea4652p0L, 0x1.8fcab88442fdc3cb6de4519165edp-88L,
+	0x1.2d285a6e4030b40091d536p0L, 0xd.075384589c1cd1b3e4018a6b1348p-92L,
+	0x1.2ecafa93e2f5611ca0f45cp0L, 0x1.523833af611bdcda253c554cf278p-88L,
+	0x1.306fe0a31b7152de8d5a46p0L, 0x3.05c85edecbc27343629f502f1af2p-92L,
+	0x1.32170fc4cd8313539cf1c2p0L, 0x1.008f86dde3220ae17a005b6412bep-88L,
+	0x1.33c08b26416ff4c9c8610cp0L, 0x1.96696bf95d1593039539d94d662bp-88L,
+	0x1.356c55f929ff0c94623476p0L, 0x3.73af38d6d8d6f9506c9bbc93cbc0p-92L,
+	0x1.371a7373aa9caa7145502ep0L, 0x1.4547987e3e12516bf9c699be432fp-88L,
+	0x1.38cae6d05d86585a9cb0d8p0L, 0x1.bed0c853bd30a02790931eb2e8f0p-88L,
+	0x1.3a7db34e59ff6ea1bc9298p0L, 0x1.e0a1d336163fe2f852ceeb134067p-88L,
+	0x1.3c32dc313a8e484001f228p0L, 0xb.58f3775e06ab66353001fae9fca0p-92L,
+	0x1.3dea64c12342235b41223ep0L, 0x1.3d773fba2cb82b8244267c54443fp-92L,
+	0x1.3fa4504ac801ba0bf701aap0L, 0x4.1832fb8c1c8dbdff2c49909e6c60p-92L,
+	0x1.4160a21f72e29f84325b8ep0L, 0x1.3db61fb352f0540e6ba05634413ep-88L,
+	0x1.431f5d950a896dc7044394p0L, 0x1.0ccec81e24b0caff7581ef4127f7p-92L,
+	0x1.44e086061892d03136f408p0L, 0x1.df019fbd4f3b48709b78591d5cb5p-88L,
+	0x1.46a41ed1d005772512f458p0L, 0x1.229d97df404ff21f39c1b594d3a8p-88L,
+	0x1.486a2b5c13cd013c1a3b68p0L, 0x1.062f03c3dd75ce8757f780e6ec99p-88L,
+	0x1.4a32af0d7d3de672d8bcf4p0L, 0x6.f9586461db1d878b1d148bd3ccb8p-92L,
+	0x1.4bfdad5362a271d4397afep0L, 0xc.42e20e0363ba2e159c579f82e4b0p-92L,
+	0x1.4dcb299fddd0d63b36ef1ap0L, 0x9.e0cc484b25a5566d0bd5f58ad238p-92L,
+	0x1.4f9b2769d2ca6ad33d8b68p0L, 0x1.aa073ee55e028497a329a7333dbap-88L,
+	0x1.516daa2cf6641c112f52c8p0L, 0x4.d822190e718226177d7608d20038p-92L,
+	0x1.5342b569d4f81df0a83c48p0L, 0x1.d86a63f4e672a3e429805b049465p-88L,
+	0x1.551a4ca5d920ec52ec6202p0L, 0x4.34ca672645dc6c124d6619a87574p-92L,
+	0x1.56f4736b527da66ecb0046p0L, 0x1.64eb3c00f2f5ab3d801d7cc7272dp-88L,
+	0x1.58d12d497c7fd252bc2b72p0L, 0x1.43bcf2ec936a970d9cc266f0072fp-88L,
+	0x1.5ab07dd48542958c930150p0L, 0x1.91eb345d88d7c81280e069fbdb63p-88L,
+	0x1.5c9268a5946b701c4b1b80p0L, 0x1.6986a203d84e6a4a92f179e71889p-88L,
+	0x1.5e76f15ad21486e9be4c20p0L, 0x3.99766a06548a05829e853bdb2b52p-92L,
+	0x1.605e1b976dc08b076f592ap0L, 0x4.86e3b34ead1b4769df867b9c89ccp-92L,
+	0x1.6247eb03a5584b1f0fa06ep0L, 0x1.d2da42bb1ceaf9f732275b8aef30p-88L,
+	0x1.6434634ccc31fc76f8714cp0L, 0x4.ed9a4e41000307103a18cf7a6e08p-92L,
+	0x1.66238825522249127d9e28p0L, 0x1.b8f314a337f4dc0a3adf1787ff74p-88L,
+	0x1.68155d44ca973081c57226p0L, 0x1.b9f32706bfe4e627d809a85dcc66p-88L,
+	0x1.6a09e667f3bcc908b2fb12p0L, 0x1.66ea957d3e3adec17512775099dap-88L,
+	0x1.6c012750bdabeed76a9980p0L, 0xf.4f33fdeb8b0ecd831106f57b3d00p-96L,
+	0x1.6dfb23c651a2ef220e2cbep0L, 0x1.bbaa834b3f11577ceefbe6c1c411p-92L,
+	0x1.6ff7df9519483cf87e1b4ep0L, 0x1.3e213bff9b702d5aa477c12523cep-88L,
+	0x1.71f75e8ec5f73dd2370f2ep0L, 0xf.0acd6cb434b562d9e8a20adda648p-92L,
+	0x1.73f9a48a58173bd5c9a4e6p0L, 0x8.ab1182ae217f3a7681759553e840p-92L,
+	0x1.75feb564267c8bf6e9aa32p0L, 0x1.a48b27071805e61a17b954a2dad8p-88L,
+	0x1.780694fde5d3f619ae0280p0L, 0x8.58b2bb2bdcf86cd08e35fb04c0f0p-92L,
+	0x1.7a11473eb0186d7d51023ep0L, 0x1.6cda1f5ef42b66977960531e821bp-88L,
+	0x1.7c1ed0130c1327c4933444p0L, 0x1.937562b2dc933d44fc828efd4c9cp-88L,
+	0x1.7e2f336cf4e62105d02ba0p0L, 0x1.5797e170a1427f8fcdf5f3906108p-88L,
+	0x1.80427543e1a11b60de6764p0L, 0x9.a354ea706b8e4d8b718a672bf7c8p-92L,
+	0x1.82589994cce128acf88afap0L, 0xb.34a010f6ad65cbbac0f532d39be0p-92L,
+	0x1.8471a4623c7acce52f6b96p0L, 0x1.c64095370f51f48817914dd78665p-88L,
+	0x1.868d99b4492ec80e41d90ap0L, 0xc.251707484d73f136fb5779656b70p-92L,
+	0x1.88ac7d98a669966530bcdep0L, 0x1.2d4e9d61283ef385de170ab20f96p-88L,
+	0x1.8ace5422aa0db5ba7c55a0p0L, 0x1.92c9bb3e6ed61f2733304a346d8fp-88L,
+	0x1.8cf3216b5448bef2aa1cd0p0L, 0x1.61c55d84a9848f8c453b3ca8c946p-88L,
+	0x1.8f1ae991577362b982745cp0L, 0x7.2ed804efc9b4ae1458ae946099d4p-92L,
+	0x1.9145b0b91ffc588a61b468p0L, 0x1.f6b70e01c2a90229a4c4309ea719p-88L,
+	0x1.93737b0cdc5e4f4501c3f2p0L, 0x5.40a22d2fc4af581b63e8326efe9cp-92L,
+	0x1.95a44cbc8520ee9b483694p0L, 0x1.a0fc6f7c7d61b2b3a22a0eab2cadp-88L,
+	0x1.97d829fde4e4f8b9e920f8p0L, 0x1.1e8bd7edb9d7144b6f6818084cc7p-88L,
+	0x1.9a0f170ca07b9ba3109b8cp0L, 0x4.6737beb19e1eada6825d3c557428p-92L,
+	0x1.9c49182a3f0901c7c46b06p0L, 0x1.1f2be58ddade50c217186c90b457p-88L,
+	0x1.9e86319e323231824ca78ep0L, 0x6.4c6e010f92c082bbadfaf605cfd4p-92L,
+	0x1.a0c667b5de564b29ada8b8p0L, 0xc.ab349aa0422a8da7d4512edac548p-92L,
+	0x1.a309bec4a2d3358c171f76p0L, 0x1.0daad547fa22c26d168ea762d854p-88L,
+	0x1.a5503b23e255c8b424491cp0L, 0xa.f87bc8050a405381703ef7caff50p-92L,
+	0x1.a799e1330b3586f2dfb2b0p0L, 0x1.58f1a98796ce8908ae852236ca94p-88L,
+	0x1.a9e6b5579fdbf43eb243bcp0L, 0x1.ff4c4c58b571cf465caf07b4b9f5p-88L,
+	0x1.ac36bbfd3f379c0db966a2p0L, 0x1.1265fc73e480712d20f8597a8e7bp-88L,
+	0x1.ae89f995ad3ad5e8734d16p0L, 0x1.73205a7fbc3ae675ea440b162d6cp-88L,
+	0x1.b0e07298db66590842acdep0L, 0x1.c6f6ca0e5dcae2aafffa7a0554cbp-88L,
+	0x1.b33a2b84f15faf6bfd0e7ap0L, 0x1.d947c2575781dbb49b1237c87b6ep-88L,
+	0x1.b59728de559398e3881110p0L, 0x1.64873c7171fefc410416be0a6525p-88L,
+	0x1.b7f76f2fb5e46eaa7b081ap0L, 0xb.53c5354c8903c356e4b625aacc28p-92L,
+	0x1.ba5b030a10649840cb3c6ap0L, 0xf.5b47f297203757e1cc6eadc8bad0p-92L,
+	0x1.bcc1e904bc1d2247ba0f44p0L, 0x1.b3d08cd0b20287092bd59be4ad98p-88L,
+	0x1.bf2c25bd71e088408d7024p0L, 0x1.18e3449fa073b356766dfb568ff4p-88L,
+	0x1.c199bdd85529c2220cb12ap0L, 0x9.1ba6679444964a36661240043970p-96L,
+	0x1.c40ab5fffd07a6d14df820p0L, 0xf.1828a5366fd387a7bdd54cdf7300p-92L,
+	0x1.c67f12e57d14b4a2137fd2p0L, 0xf.2b301dd9e6b151a6d1f9d5d5f520p-96L,
+	0x1.c8f6d9406e7b511acbc488p0L, 0x5.c442ddb55820171f319d9e5076a8p-96L,
+	0x1.cb720dcef90691503cbd1ep0L, 0x9.49db761d9559ac0cb6dd3ed599e0p-92L,
+	0x1.cdf0b555dc3f9c44f8958ep0L, 0x1.ac51be515f8c58bdfb6f5740a3a4p-88L,
+	0x1.d072d4a07897b8d0f22f20p0L, 0x1.a158e18fbbfc625f09f4cca40874p-88L,
+	0x1.d2f87080d89f18ade12398p0L, 0x9.ea2025b4c56553f5cdee4c924728p-92L,
+	0x1.d5818dcfba48725da05aeap0L, 0x1.66e0dca9f589f559c0876ff23830p-88L,
+	0x1.d80e316c98397bb84f9d04p0L, 0x8.805f84bec614de269900ddf98d28p-92L,
+	0x1.da9e603db3285708c01a5ap0L, 0x1.6d4c97f6246f0ec614ec95c99392p-88L,
+	0x1.dd321f301b4604b695de3cp0L, 0x6.30a393215299e30d4fb73503c348p-96L,
+	0x1.dfc97337b9b5eb968cac38p0L, 0x1.ed291b7225a944efd5bb5524b927p-88L,
+	0x1.e264614f5a128a12761fa0p0L, 0x1.7ada6467e77f73bf65e04c95e29dp-88L,
+	0x1.e502ee78b3ff6273d13014p0L, 0x1.3991e8f49659e1693be17ae1d2f9p-88L,
+	0x1.e7a51fbc74c834b548b282p0L, 0x1.23786758a84f4956354634a416cep-88L,
+	0x1.ea4afa2a490d9858f73a18p0L, 0xf.5db301f86dea20610ceee13eb7b8p-92L,
+	0x1.ecf482d8e67f08db0312fap0L, 0x1.949cef462010bb4bc4ce72a900dfp-88L,
+	0x1.efa1bee615a27771fd21a8p0L, 0x1.2dac1f6dd5d229ff68e46f27e3dfp-88L,
+	0x1.f252b376bba974e8696fc2p0L, 0x1.6390d4c6ad5476b5162f40e1d9a9p-88L,
+	0x1.f50765b6e4540674f84b76p0L, 0x2.862baff99000dfc4352ba29b8908p-92L,
+	0x1.f7bfdad9cbe138913b4bfep0L, 0x7.2bd95c5ce7280fa4d2344a3f5618p-92L,
+	0x1.fa7c1819e90d82e90a7e74p0L, 0xb.263c1dc060c36f7650b4c0f233a8p-92L,
+	0x1.fd3c22b8f71f10975ba4b2p0L, 0x1.2bcf3a5e12d269d8ad7c1a4a8875p-88L
+};
+
+/*
+ * Kernel for expl(x).  x must be finite and not tiny or huge.
+ * "tiny" is anything that would make us underflow (|A6*x^6| < ~LDBL_MIN).
+ * "huge" is anything that would make fn*L1 inexact (|x| > ~2**17*ln2).
+ */
+static inline void
+__k_expl(long double x, long double *hip, long double *lop, int *kp)
+{
+	long double q, r, r1, t;
+	double dr, fn, r2;
+	int n, n2;
+
+	/* Reduce x to (k*ln2 + endpoint[n2] + r1 + r2). */
+	/* Use a specialized rint() to get fn.  Assume round-to-nearest. */
+	/* XXX assume no extra precision for the additions, as for trig fns. */
+	/* XXX this set of comments is now quadruplicated. */
+	/* XXX but see ../src/e_exp.c for a fix using double_t. */
+	fn = (double)x * INV_L + 0x1.8p52 - 0x1.8p52;
+#if defined(HAVE_EFFICIENT_IRINT)
+	n = irint(fn);
+#else
+	n = (int)fn;
+#endif
+	n2 = (unsigned)n % INTERVALS;
+	/* Depend on the sign bit being propagated: */
+	*kp = n >> LOG2_INTERVALS;
+	r1 = x - fn * L1;
+	r2 = fn * -L2;
+	r = r1 + r2;
+
+	/* Evaluate expl(endpoint[n2] + r1 + r2) = tbl[n2] * expl(r1 + r2). */
+	dr = r;
+	q = r2 + r * r * (A2 + r * (A3 + r * (A4 + r * (A5 + r * (A6 +
+	    dr * (A7 + dr * (A8 + dr * (A9 + dr * A10))))))));
+	t = tbl[n2].lo + tbl[n2].hi;
+	*hip = tbl[n2].hi;
+	*lop = tbl[n2].lo + t * (q + r1);
+}
+
+/*
+ * XXX: the rest of the functions are identical for ld80 and ld128.
+ * However, we should use scalbnl() for ld128, since long double
+ * multiplication is very slow on the only supported ld128 arch (sparc64).
+ */
+
+static inline void
+k_hexpl(long double x, long double *hip, long double *lop)
+{
+	float twopkm1;
+	int k;
+
+	__k_expl(x, hip, lop, &k);
+	SET_FLOAT_WORD(twopkm1, 0x3f800000 + ((k - 1) << 23));
+	*hip *= twopkm1;
+	*lop *= twopkm1;
+}
+
+static inline long double
+hexpl(long double x)
+{
+	long double hi, lo, twopkm2;
+	int k;
+
+	twopkm2 = 1;
+	__k_expl(x, &hi, &lo, &k);
+	SET_LDBL_EXPSIGN(twopkm2, BIAS + k - 2);
+	return (lo + hi) * 2 * twopkm2;
+}
+
+#ifdef _COMPLEX_H
+/*
+ * See ../src/k_exp.c for details.
+ */
+static inline long double complex
+__ldexp_cexpl(long double complex z, int expt)
+{
+	long double exp_x, hi, lo;
+	long double x, y, scale1, scale2;
+	int half_expt, k;
+
+	x = creall(z);
+	y = cimagl(z);
+	__k_expl(x, &hi, &lo, &k);
+
+	exp_x = (lo + hi) * 0x1p16382;
+	expt += k - 16382;
+
+	scale1 = 1;
+	half_expt = expt / 2;
+	SET_LDBL_EXPSIGN(scale1, BIAS + half_expt);
+	scale2 = 1;
+	SET_LDBL_EXPSIGN(scale1, BIAS + expt - half_expt);
+
+	return (cpackl(cos(y) * exp_x * scale1 * scale2,
+	    sinl(y) * exp_x * scale1 * scale2));
+}
+#endif /* _COMPLEX_H */
diff --git a/libm/upstream-freebsd/lib/msun/ld128/k_sinl.c b/libm/upstream-freebsd/lib/msun/ld128/k_sinl.c
index bd415c0..09472d6 100644
--- a/libm/upstream-freebsd/lib/msun/ld128/k_sinl.c
+++ b/libm/upstream-freebsd/lib/msun/ld128/k_sinl.c
@@ -6,7 +6,7 @@
  *
  * Developed at SunSoft, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice 
  * is preserved.
  * ====================================================
  */
diff --git a/libm/upstream-freebsd/lib/msun/ld128/s_erfl.c b/libm/upstream-freebsd/lib/msun/ld128/s_erfl.c
new file mode 100644
index 0000000..e29c969
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/ld128/s_erfl.c
@@ -0,0 +1,329 @@
+/* @(#)s_erf.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * See s_erf.c for complete comments.
+ *
+ * Converted to long double by Steven G. Kargl.
+ */
+#include <float.h>
+
+#include "fpmath.h"
+#include "math.h"
+#include "math_private.h"
+
+/* XXX Prevent compilers from erroneously constant folding these: */
+static const volatile long double tiny = 0x1p-10000L;
+
+static const double
+half= 0.5,
+one = 1,
+two = 2;
+/*
+ * In the domain [0, 2**-40], only the first term in the power series
+ * expansion of erf(x) is used.  The magnitude of the first neglected
+ * terms is less than 2**-120.
+ */
+static const long double
+efx  =  1.28379167095512573896158903121545167e-01L,	/* 0xecbff6a7, 0x481dd788, 0xb64d21a8, 0xeb06fc3f */
+efx8 =  1.02703333676410059116927122497236133e+00L,	/* 0xecbff6a7, 0x481dd788, 0xb64d21a8, 0xeb06ff3f */
+/*
+ * Domain [0, 0.84375], range ~[-1.919e-38, 1.919e-38]:
+ * |(erf(x) - x)/x - pp(x)/qq(x)| < 2**-125.29
+ */
+pp0  =  1.28379167095512573896158903121545167e-01L,	/* 0x3ffc06eb, 0xa8214db6, 0x88d71d48, 0xa7f6bfec */
+pp1  = -3.14931554396568573802046931159683404e-01L,	/* 0xbffd427d, 0x6ada7263, 0x547eb096, 0x95f37463 */
+pp2  = -5.27514920282183487103576956956725309e-02L,	/* 0xbffab023, 0xe5a271e3, 0xb0e79b01, 0x2f7ac962 */
+pp3  = -1.13202828509005281355609495523452713e-02L,	/* 0xbff872f1, 0x6a5023a1, 0xe08b3884, 0x326af20f */
+pp4  = -9.18626155872522453865998391206048506e-04L,	/* 0xbff4e19f, 0xea5fb024, 0x43247a37, 0xe430b06c */
+pp5  = -7.87518862406176274922506447157284230e-05L,	/* 0xbff14a4f, 0x31a85fe0, 0x7fff2204, 0x09c49b37 */
+pp6  = -3.42357944472240436548115331090560881e-06L,	/* 0xbfeccb81, 0x4b43c336, 0xcd2eb6c2, 0x903f2d87 */
+pp7  = -1.37317432573890412634717890726745428e-07L,	/* 0xbfe826e3, 0x0e915eb6, 0x42aee414, 0xf7e36805 */
+pp8  = -2.71115170113861755855049008732113726e-09L,	/* 0xbfe2749e, 0x2b94fd00, 0xecb4d166, 0x0efb91f8 */
+pp9  = -3.37925756196555959454018189718117864e-11L,	/* 0xbfdc293e, 0x1d9060cb, 0xd043204a, 0x314cd7f0 */
+qq1  =  4.76672625471551170489978555182449450e-01L,	/* 0x3ffde81c, 0xde6531f0, 0x76803bee, 0x526e29e9 */
+qq2  =  1.06713144672281502058807525850732240e-01L,	/* 0x3ffbb518, 0xd7a6bb74, 0xcd9bdd33, 0x7601eee5 */
+qq3  =  1.47747613127513761102189201923147490e-02L,	/* 0x3ff8e423, 0xae527e18, 0xf12cb447, 0x723b4749 */
+qq4  =  1.39939377672028671891148770908874816e-03L,	/* 0x3ff56ed7, 0xba055d84, 0xc21b45c4, 0x388d1812 */
+qq5  =  9.44302939359455241271983309378738276e-05L,	/* 0x3ff18c11, 0xc18c99a4, 0x86d0fe09, 0x46387b4c */
+qq6  =  4.56199342312522842161301671745365650e-06L,	/* 0x3fed3226, 0x73421d05, 0x08875300, 0x32fa1432 */
+qq7  =  1.53019260483764773845294600092361197e-07L,	/* 0x3fe8489b, 0x3a63f627, 0x2b9ad2ce, 0x26516e57 */
+qq8  =  3.25542691121324805094777901250005508e-09L,	/* 0x3fe2bf6c, 0x26d93a29, 0x9142be7c, 0x9f1dd043 */
+qq9  =  3.37405581964478060434410167262684979e-11L;	/* 0x3fdc28c8, 0xfb8fa1be, 0x10e57eec, 0xaa19e49f */
+
+static const long double
+erx  =  8.42700792949714894142232424201210961e-01L,	/* 0x3ffeaf76, 0x7a741088, 0xb0000000, 0x00000000 */
+/*
+ * Domain [0.84375, 1.25], range ~[-2.521e-36, 2.523e-36]:
+ * |(erf(x) - erx) - pa(x)/qa(x)| < 2**-120.15
+ */
+pa0  = -2.48010117891186017024438233323795897e-17L,	/* 0xbfc7c97f, 0x77812279, 0x6c877f22, 0xef4bfb2e */
+pa1  =  4.15107497420594680894327969504526489e-01L,	/* 0x3ffda911, 0xf096fbc2, 0x55662005, 0x2337fa64 */
+pa2  = -3.94180628087084846724448515851892609e-02L,	/* 0xbffa42e9, 0xab54528c, 0xad529da1, 0x6efc2af3 */
+pa3  =  4.48897599625192107295954790681677462e-02L,	/* 0x3ffa6fbc, 0xa65edba1, 0x0e4cbcea, 0x73ef9a31 */
+pa4  =  8.02069252143016600110972019232995528e-02L,	/* 0x3ffb4887, 0x0e8b548e, 0x3230b417, 0x11b553b3 */
+pa5  = -1.02729816533435279443621120242391295e-02L,	/* 0xbff850a0, 0x041de3ee, 0xd5bca6c9, 0x4ef5f9f2 */
+pa6  =  5.70777694530755634864821094419982095e-03L,	/* 0x3ff77610, 0x9b501e10, 0x4c978382, 0x742df68f */
+pa7  =  1.22635150233075521018231779267077071e-03L,	/* 0x3ff5417b, 0x0e623682, 0x60327da0, 0x96b9219e */
+pa8  =  5.36100234820204569428412542856666503e-04L,	/* 0x3ff41912, 0x27ceb4c1, 0x1d3298ec, 0x84ced627 */
+pa9  = -1.97753571846365167177187858667583165e-04L,	/* 0xbff29eb8, 0x23f5bcf3, 0x15c83c46, 0xe4fda98b */
+pa10 =  6.19333039900846970674794789568415105e-05L,	/* 0x3ff103c4, 0x60f88e46, 0xc0c9fb02, 0x13cc7fc1 */
+pa11 = -5.40531400436645861492290270311751349e-06L,	/* 0xbfed6abe, 0x9665f8a8, 0xdd0ad3ba, 0xe5dc0ee3 */
+qa1  =  9.05041313265490487793231810291907851e-01L,	/* 0x3ffecf61, 0x93340222, 0xe9930620, 0xc4e61168 */
+qa2  =  6.79848064708886864767240880834868092e-01L,	/* 0x3ffe5c15, 0x0ba858dc, 0xf7900ae9, 0xfea1e09a */
+qa3  =  4.04720609926471677581066689316516445e-01L,	/* 0x3ffd9e6f, 0x145e9b00, 0x6d8c1749, 0xd2928623 */
+qa4  =  1.69183273898369996364661075664302225e-01L,	/* 0x3ffc5a7c, 0xc2a363c1, 0xd6c19097, 0xef9b4063 */
+qa5  =  7.44476185988067992342479750486764248e-02L,	/* 0x3ffb30ef, 0xfc7259ef, 0x1bcbb089, 0x686dd62d */
+qa6  =  2.02981172725892407200420389604788573e-02L,	/* 0x3ff94c90, 0x7976cb0e, 0x21e1d36b, 0x0f09ca2b */
+qa7  =  6.94281866271607668268269403102277234e-03L,	/* 0x3ff7c701, 0x2b193250, 0xc5d46ecc, 0x374843d8 */
+qa8  =  1.12952275469171559611651594706820034e-03L,	/* 0x3ff52818, 0xfd2a7c06, 0xd13e38fd, 0xda4b34f5 */
+qa9  =  3.13736683241992737197226578597710179e-04L,	/* 0x3ff348fa, 0x0cb48d18, 0x051f849b, 0x135ccf74 */
+qa10 =  1.17037675204033225470121134087771410e-05L,	/* 0x3fee88b6, 0x98f47704, 0xa5d8f8f2, 0xc6422e11 */
+qa11 =  4.61312518293853991439362806880973592e-06L,	/* 0x3fed3594, 0xe31db94f, 0x3592b693, 0xed4386b4 */
+qa12 = -1.02158572037456893687737553657431771e-06L;	/* 0xbfeb123a, 0xd60d9b1e, 0x1f6fdeb9, 0x7dc8410a */
+/*
+ * Domain [1.25,2.85715], range ~[-2.922e-37,2.922e-37]:
+ * |log(x*erfc(x)) + x**2 + 0.5625 - ra(x)/sa(x)| < 2**-121.36
+ */
+static const long double
+ra0  = -9.86494292470069009555706994426014461e-03L,	/* 0xbff84341, 0x239e8709, 0xe941b06a, 0xcb4b6ec5 */
+ra1  = -1.13580436992565640457579040117568870e+00L,	/* 0xbfff22c4, 0x133f7c0d, 0x72d5e231, 0x2eb1ee3f */
+ra2  = -4.89744330295291950661185707066921755e+01L,	/* 0xc00487cb, 0xa38b4fc2, 0xc136695b, 0xc1df8047 */
+ra3  = -1.10766149300215937173768072715352140e+03L,	/* 0xc00914ea, 0x55e6beb3, 0xabc50e07, 0xb6e5664d */
+ra4  = -1.49991031232170934967642795601952100e+04L,	/* 0xc00cd4b8, 0xd33243e6, 0xffbf6545, 0x3c57ef6e */
+ra5  = -1.29805749738318462882524181556996692e+05L,	/* 0xc00ffb0d, 0xbfeed9b6, 0x5b2a3ff4, 0xe245bd3c */
+ra6  = -7.42828497044940065828871976644647850e+05L,	/* 0xc0126ab5, 0x8fe7caca, 0x473352d9, 0xcd4e0c90 */
+ra7  = -2.85637299581890734287995171242421106e+06L,	/* 0xc0145cad, 0xa7f76fe7, 0x3e358051, 0x1799f927 */
+ra8  = -7.40674797129824999383748865571026084e+06L,	/* 0xc015c412, 0x6fe29c02, 0x298ad158, 0x7d24e45c */
+ra9  = -1.28653420911930973914078724204151759e+07L,	/* 0xc016889e, 0x7c2eb0dc, 0x95d5863b, 0x0aa34dc3 */
+ra10 = -1.47198163599330179552932489109452638e+07L,	/* 0xc016c136, 0x90b84923, 0xf9bcb497, 0x19bbd0f5 */
+ra11 = -1.07812992258382800318665248311522624e+07L,	/* 0xc0164904, 0xe673a113, 0x35d7f079, 0xe13701f3 */
+ra12 = -4.83545565681708642630419905537756076e+06L,	/* 0xc0152721, 0xfea094a8, 0x869eb39d, 0x413d6f13 */
+ra13 = -1.23956521201673964822976917356685286e+06L,	/* 0xc0132ea0, 0xd3646baa, 0x2fe62b0d, 0xbae5ce85 */
+ra14 = -1.62289333553652417591275333240371812e+05L,	/* 0xc0103cf8, 0xaab1e2d6, 0x4c25e014, 0x248d76ab */
+ra15 = -8.82890392601176969729168894389833110e+03L,	/* 0xc00c13e7, 0x3b3d8f94, 0x6fbda6f6, 0xe7049a82 */
+ra16 = -1.22591866337261720023681535568334619e+02L,	/* 0xc005ea5e, 0x12358891, 0xcfa712c5, 0x77f050d4 */
+sa1  =  6.44508918884710829371852723353794047e+01L,	/* 0x400501cd, 0xb69a6c0f, 0x5716de14, 0x47161af6 */
+sa2  =  1.76118475473171481523704824327358534e+03L,	/* 0x4009b84b, 0xd305829f, 0xc4c771b0, 0xbf1f7f9b */
+sa3  =  2.69448346969488374857087646131950188e+04L,	/* 0x400da503, 0x56bacc05, 0x4fdba68d, 0x2cca27e6 */
+sa4  =  2.56826633369941456778326497384543763e+05L,	/* 0x4010f59d, 0x51124428, 0x69c41de6, 0xbd0d5753 */
+sa5  =  1.60647413092257206847700054645905859e+06L,	/* 0x40138834, 0xa2184244, 0x557a1bed, 0x68c9d556 */
+sa6  =  6.76963075165099718574753447122393797e+06L,	/* 0x40159d2f, 0x7b01b0cc, 0x8bac9e95, 0x5d35d56e */
+sa7  =  1.94295690905361884290986932493647741e+07L,	/* 0x40172878, 0xc1172d61, 0x3068501e, 0x2f3c71da */
+sa8  =  3.79774781017759149060839255547073541e+07L,	/* 0x401821be, 0xc30d06fe, 0x410563d7, 0x032111fd */
+sa9  =  5.00659831846029484248302236457727397e+07L,	/* 0x40187df9, 0x1f97a111, 0xc51d6ac2, 0x4b389793 */
+sa10 =  4.36486287620506484276130525941972541e+07L,	/* 0x40184d03, 0x3a618ae0, 0x2a723357, 0xfa45c60a */
+sa11 =  2.43779678791333894255510508253951934e+07L,	/* 0x401773fa, 0x6fe10ee2, 0xc467850d, 0xc6b7ff30 */
+sa12 =  8.30732360384443202039372372212966542e+06L,	/* 0x4015fb09, 0xee6a5631, 0xdd98de7e, 0x8b00461a */
+sa13 =  1.60160846942050515734192397495105693e+06L,	/* 0x40138704, 0x8782bf13, 0x5b8fb315, 0xa898abe5 */
+sa14 =  1.54255505242533291014555153757001825e+05L,	/* 0x40102d47, 0xc0abc98e, 0x843c9490, 0xb4352440 */
+sa15 =  5.87949220002375547561467275493888824e+03L,	/* 0x400b6f77, 0xe00d21d1, 0xec4d41e8, 0x2f8e1673 */
+sa16 =  4.97272976346793193860385983372237710e+01L;	/* 0x40048dd1, 0x816c1b3f, 0x24f540a6, 0x4cfe03cc */
+/*
+ * Domain [2.85715,9], range ~[-7.886e-37,7.918e-37]:
+ * |log(x*erfc(x)) + x**2 + 0.5625 - rb(x)/sb(x)| < 2**-120
+ */
+static const long double
+rb0  = -9.86494292470008707171371994479162369e-3L, /* 0xbff84341, 0x239e86f4, 0x2f57e561, 0xf4469360 */
+rb1  = -1.57047326624110727986326503729442830L,    /* 0xbfff920a, 0x8935bf73, 0x8803b894, 0x4656482d */
+rb2  = -1.03228196364885474342132255440317065e2L,  /* 0xc0059ce9, 0xac4ed0ff, 0x2cff0ff7, 0x5e70d1ab */
+rb3  = -3.74000570653418227179358710865224376e3L,  /* 0xc00ad380, 0x2ebf7835, 0xf6b07ed2, 0x861242f7 */
+rb4  = -8.35435477739098044190860390632813956e4L,  /* 0xc00f4657, 0x8c3ae934, 0x3647d7b3, 0x80e76fb7 */
+rb5  = -1.21398672055223642118716640216747152e6L,  /* 0xc0132862, 0x2b8761c8, 0x27d18c0f, 0x137c9463 */
+rb6  = -1.17669175877248796101665344873273970e7L,  /* 0xc0166719, 0x0b2cea46, 0x81f14174, 0x11602ea5 */
+rb7  = -7.66108006086998253606773064264599615e7L,  /* 0xc019243f, 0x3c26f4f0, 0x1cc05241, 0x3b953728 */
+rb8  = -3.32547117558141845968704725353130804e8L,  /* 0xc01b3d24, 0x42d8ee26, 0x24ef6f3b, 0x604a8c65 */
+rb9  = -9.41561252426350696802167711221739746e8L,  /* 0xc01cc0f8, 0xad23692a, 0x8ddb2310, 0xe9937145 */
+rb10 = -1.67157110805390944549427329626281063e9L,  /* 0xc01d8e88, 0x9a903734, 0x09a55fa3, 0xd205c903 */
+rb11 = -1.74339631004410841337645931421427373e9L,  /* 0xc01d9fa8, 0x77582d2a, 0xc183b8ab, 0x7e00cb05 */
+rb12 = -9.57655233596934915727573141357471703e8L,  /* 0xc01cc8a5, 0x460cc685, 0xd0271fa0, 0x6a70e3da */
+rb13 = -2.26320062731339353035254704082495066e8L,  /* 0xc01aafab, 0xd7d76721, 0xc9720e11, 0x6a8bd489 */
+rb14 = -1.42777302996263256686002973851837039e7L,  /* 0xc016b3b8, 0xc499689f, 0x2b88d965, 0xc32414f9 */
+sb1  =  1.08512869705594540211033733976348506e2L,  /* 0x4005b20d, 0x2db7528d, 0x00d20dcb, 0x858f6191 */
+sb2  =  5.02757713761390460534494530537572834e3L,  /* 0x400b3a39, 0x3bf4a690, 0x3025d28d, 0xfd40a891 */
+sb3  =  1.31019107205412870059331647078328430e5L,  /* 0x400fffcb, 0x1b71d05e, 0x3b28361d, 0x2a3c3690 */
+sb4  =  2.13021555152296846166736757455018030e6L,  /* 0x40140409, 0x3c6984df, 0xc4491d7c, 0xb04aa08d */
+sb5  =  2.26649105281820861953868568619768286e7L,  /* 0x401759d6, 0xce8736f0, 0xf28ad037, 0x2a901e0c */
+sb6  =  1.61071939490875921812318684143076081e8L,  /* 0x401a3338, 0x686fb541, 0x6bd27d06, 0x4f95c9ac */
+sb7  =  7.66895673844301852676056750497991966e8L,  /* 0x401c6daf, 0x31cec121, 0x54699126, 0x4bd9bf9e */
+sb8  =  2.41884450436101936436023058196042526e9L,  /* 0x401e2059, 0x46b0b8d7, 0x87b64cbf, 0x78bc296d */
+sb9  =  4.92403055884071695093305291535107666e9L,  /* 0x401f257e, 0xbe5ed739, 0x39e17346, 0xcadd2e55 */
+sb10 =  6.18627786365587486459633615573786416e9L,  /* 0x401f70bb, 0x1be7a7e7, 0x6a45b5ae, 0x607c70f0 */
+sb11 =  4.45898013426501378097430226324743199e9L,  /* 0x401f09c6, 0xa32643d7, 0xf1724620, 0x9ea46c32 */
+sb12 =  1.63006115763329848117160344854224975e9L,  /* 0x401d84a3, 0x0996887f, 0x65a4f43b, 0x978c1d74 */
+sb13 =  2.39216717012421697446304015847567721e8L,  /* 0x401ac845, 0x09a065c2, 0x30095da7, 0x9d72d6ae */
+sb14 =  7.84837329009278694937250358810225609e6L;  /* 0x4015df06, 0xd5290e15, 0x63031fac, 0x4d9c894c */
+/*
+ * Domain [9,108], range ~[-5.324e-38,5.340e-38]:
+ * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-124
+ */
+static const long double
+rc0  = -9.86494292470008707171367567652935673e-3L, /* 0xbff84341, 0x239e86f4, 0x2f57e55b, 0x1aa10fd3 */
+rc1  = -1.26229447747315096406518846411562266L,    /* 0xbfff4325, 0xbb1aab28, 0xda395cd9, 0xfb861c15 */
+rc2  = -6.13742634438922591780742637728666162e1L,  /* 0xc004eafe, 0x7dd51cd8, 0x3c7c5928, 0x751e50cf */
+rc3  = -1.50455835478908280402912854338421517e3L,  /* 0xc0097823, 0xbc15b9ab, 0x3d60745c, 0x523e80a5 */
+rc4  = -2.04415631865861549920184039902945685e4L,  /* 0xc00d3f66, 0x40b3fc04, 0x5388f2ec, 0xb009e1f0 */
+rc5  = -1.57625662981714582753490610560037638e5L,  /* 0xc01033dc, 0xd4dc95b6, 0xfd4da93b, 0xf355b4a9 */
+rc6  = -6.73473451616752528402917538033283794e5L,  /* 0xc01248d8, 0x2e73a4f9, 0xcded49c5, 0xfa3bfeb7 */
+rc7  = -1.47433165421387483167186683764364857e6L,  /* 0xc01367f1, 0xba77a8f7, 0xcfdd0dbb, 0x25d554b3 */
+rc8  = -1.38811981807868828563794929997744139e6L,  /* 0xc01352e5, 0x7d16d9ad, 0xbbdcbf38, 0x38fbc5ea */
+rc9  = -3.59659700530831825640766479698155060e5L,  /* 0xc0115f3a, 0xecd57f45, 0x21f8ad6c, 0x910a5958 */
+sc1  =  7.72730753022908298637508998072635696e1L,  /* 0x40053517, 0xa10d52bc, 0xdabb55b6, 0xbd0328cd */
+sc2  =  2.36825757341694050500333261769082182e3L,  /* 0x400a2808, 0x3e0a9b42, 0x82977842, 0x9c5de29e */
+sc3  =  3.72210540173034735352888847134073099e4L,  /* 0x400e22ca, 0x1ba827ef, 0xac8390d7, 0x1fc39a41 */
+sc4  =  3.24136032646418336712461033591393412e5L,  /* 0x40113c8a, 0x0216e100, 0xc59d1e44, 0xf0e68d9d */
+sc5  =  1.57836135851134393802505823370009175e6L,  /* 0x40138157, 0x95bc7664, 0x17575961, 0xdbe58eeb */
+sc6  =  4.12881981392063738026679089714182355e6L,  /* 0x4014f801, 0x9e82e8d2, 0xb8b3a70e, 0xfd84185d */
+sc7  =  5.24438427289213488410596395361544142e6L,  /* 0x40154017, 0x81177109, 0x2aa6c3b0, 0x1f106625 */
+sc8  =  2.59909544563616121735963429710382149e6L,  /* 0x40143d45, 0xbb90a9b1, 0x12bf9390, 0xa827a700 */
+sc9  =  2.80930665169282501639651995082335693e5L;  /* 0x40111258, 0xaa92222e, 0xa97e3216, 0xa237fa6c */
+
+long double
+erfl(long double x)
+{
+	long double ax,R,S,P,Q,s,y,z,r;
+	uint64_t lx, llx;
+	int32_t i;
+	uint16_t hx;
+
+	EXTRACT_LDBL128_WORDS(hx, lx, llx, x);
+
+	if((hx & 0x7fff) == 0x7fff) {	/* erfl(nan)=nan */
+		i = (hx>>15)<<1;
+		return (1-i)+one/x;	/* erfl(+-inf)=+-1 */
+	}
+
+	ax = fabsl(x);
+	if(ax < 0.84375) {
+	    if(ax < 0x1p-40L) {
+	        if(ax < 0x1p-16373L)	
+		    return (8*x+efx8*x)/8;	/* avoid spurious underflow */
+		return x + efx*x;
+	    }
+	    z = x*x;
+	    r = pp0+z*(pp1+z*(pp2+z*(pp3+z*(pp4+z*(pp5+z*(pp6+z*(pp7+
+		z*(pp8+z*pp9))))))));
+	    s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*(qq5+z*(qq6+z*(qq7+
+		z*(qq8+z*qq9))))))));
+	    y = r/s;
+	    return x + x*y;
+	}
+	if(ax < 1.25) {
+	    s = ax-one;
+	    P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*(pa6+s*(pa7+
+		s*(pa8+s*(pa9+s*(pa10+s*pa11))))))))));
+	    Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*(qa6+s*(qa7+
+		s*(qa8+s*(qa9+s*(qa10+s*(qa11+s*qa12)))))))))));
+	    if(x>=0) return (erx + P/Q); else return (-erx - P/Q);
+	}
+	if (ax >= 9) {			/* inf>|x|>= 9 */
+	    if(x>=0) return (one-tiny); else return (tiny-one);
+	}
+	s = one/(ax*ax);
+	if(ax < 2.85715) {	/* |x| < 2.85715 */
+	    R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*(ra7+
+		s*(ra8+s*(ra9+s*(ra10+s*(ra11+s*(ra12+s*(ra13+s*(ra14+
+		s*(ra15+s*ra16)))))))))))))));
+	    S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+
+		s*(sa8+s*(sa9+s*(sa10+s*(sa11+s*(sa12+s*(sa13+s*(sa14+
+		s*(sa15+s*sa16)))))))))))))));
+	} else {	/* |x| >= 2.85715 */
+	    R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*(rb6+s*(rb7+
+		s*(rb8+s*(rb9+s*(rb10+s*(rb11+s*(rb12+s*(rb13+
+		s*rb14)))))))))))));
+	    S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*(sb7+
+		s*(sb8+s*(sb9+s*(sb10+s*(sb11+s*(sb12+s*(sb13+
+		s*sb14)))))))))))));
+	}
+	z = (float)ax;
+	r = expl(-z*z-0.5625)*expl((z-ax)*(z+ax)+R/S);
+	if(x>=0) return (one-r/ax); else return (r/ax-one);
+}
+
+long double
+erfcl(long double x)
+{
+	long double ax,R,S,P,Q,s,y,z,r;
+	uint64_t lx, llx;
+	uint16_t hx;
+
+	EXTRACT_LDBL128_WORDS(hx, lx, llx, x);
+
+	if((hx & 0x7fff) == 0x7fff) {	/* erfcl(nan)=nan */
+					/* erfcl(+-inf)=0,2 */
+	    return ((hx>>15)<<1)+one/x;
+	}
+
+	ax = fabsl(x);
+	if(ax < 0.84375L) {
+	    if(ax < 0x1p-34L)
+		return one-x;
+	    z = x*x;
+	    r = pp0+z*(pp1+z*(pp2+z*(pp3+z*(pp4+z*(pp5+z*(pp6+z*(pp7+
+		z*(pp8+z*pp9))))))));
+	    s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*(qq5+z*(qq6+z*(qq7+
+		z*(qq8+z*qq9))))))));
+	    y = r/s;
+	    if(ax < 0.25L) {  	/* x<1/4 */
+		return one-(x+x*y);
+	    } else {
+		r = x*y;
+		r += (x-half);
+	       return half - r;
+	    }
+	}
+	if(ax < 1.25L) {
+	    s = ax-one;
+	    P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*(pa6+s*(pa7+
+		    s*(pa8+s*(pa9+s*(pa10+s*pa11))))))))));
+	    Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*(qa6+s*(qa7+
+		    s*(qa8+s*(qa9+s*(qa10+s*(qa11+s*qa12)))))))))));
+	    if(x>=0) {
+	        z  = one-erx; return z - P/Q;
+	    } else {
+		z = erx+P/Q; return one+z;
+	    }
+	}
+
+	if(ax < 108) {			/* |x| < 108 */
+ 	    s = one/(ax*ax);
+	    if(ax < 2.85715) {		/* |x| < 2.85715 */
+	        R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*(ra7+
+		    s*(ra8+s*(ra9+s*(ra10+s*(ra11+s*(ra12+s*(ra13+s*(ra14+
+		    s*(ra15+s*ra16)))))))))))))));
+	        S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+
+		    s*(sa8+s*(sa9+s*(sa10+s*(sa11+s*(sa12+s*(sa13+s*(sa14+
+		    s*(sa15+s*sa16)))))))))))))));
+	    } else if(ax < 9) {
+		R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*(rb6+s*(rb7+
+		    s*(rb8+s*(rb9+s*(rb10+s*(rb11+s*(rb12+s*(rb13+
+		    s*rb14)))))))))))));
+		S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*(sb7+
+		    s*(sb8+s*(sb9+s*(sb10+s*(sb11+s*(sb12+s*(sb13+
+		    s*sb14)))))))))))));
+	    } else {
+		if(x < -9) return two-tiny;	/* x < -9 */
+		R=rc0+s*(rc1+s*(rc2+s*(rc3+s*(rc4+s*(rc5+s*(rc6+s*(rc7+
+		    s*(rc8+s*rc9))))))));
+		S=one+s*(sc1+s*(sc2+s*(sc3+s*(sc4+s*(sc5+s*(sc6+s*(sc7+
+		    s*(sc8+s*sc9))))))));
+	    }
+	    z = (float)ax;
+	    r = expl(-z*z-0.5625)*expl((z-ax)*(z+ax)+R/S);
+	    if(x>0) return r/ax; else return two-r/ax;
+	} else {
+	    if(x>0) return tiny*tiny; else return two-tiny;
+	}
+}
diff --git a/libm/upstream-freebsd/lib/msun/ld128/s_exp2l.c b/libm/upstream-freebsd/lib/msun/ld128/s_exp2l.c
index 5ed514c..5afa37e 100644
--- a/libm/upstream-freebsd/lib/msun/ld128/s_exp2l.c
+++ b/libm/upstream-freebsd/lib/msun/ld128/s_exp2l.c
@@ -369,7 +369,7 @@
 			    || u.xbits.manl != 0
 			    || (hx & 0x8000) == 0)
 				return (x + x);	/* x is NaN or +Inf */
-			else
+			else 
 				return (0.0);	/* x is -Inf */
 		}
 		if (x >= 16384)
diff --git a/libm/upstream-freebsd/lib/msun/ld128/s_expl.c b/libm/upstream-freebsd/lib/msun/ld128/s_expl.c
index 176c932..a6a9676 100644
--- a/libm/upstream-freebsd/lib/msun/ld128/s_expl.c
+++ b/libm/upstream-freebsd/lib/msun/ld128/s_expl.c
@@ -38,16 +38,15 @@
 #include "fpmath.h"
 #include "math.h"
 #include "math_private.h"
+#include "k_expl.h"
 
-#define	INTERVALS	128
-#define	LOG2_INTERVALS	7
-#define	BIAS	(LDBL_MAX_EXP - 1)
+/* XXX Prevent compilers from erroneously constant folding these: */
+static const volatile long double
+huge = 0x1p10000L,
+tiny = 0x1p-10000L;
 
 static const long double
-huge = 0x1p10000L,
 twom10000 = 0x1p-10000L;
-/* XXX Prevent gcc from erroneously constant folding this: */
-static volatile const long double tiny = 0x1p-10000L;
 
 static const long double
 /* log(2**16384 - 0.5) rounded towards zero: */
@@ -56,184 +55,16 @@
 /* log(2**(-16381-64-1)) rounded towards zero: */
 u_threshold = -11433.462743336297878837243843452621503L;
 
-static const double
-/*
- * ln2/INTERVALS = L1+L2 (hi+lo decomposition for multiplication).  L1 must
- * have at least 22 (= log2(|LDBL_MIN_EXP-extras|) + log2(INTERVALS)) lowest
- * bits zero so that multiplication of it by n is exact.
- */
-INV_L = 1.8466496523378731e+2,		/*  0x171547652b82fe.0p-45 */
-L2 = -1.0253670638894731e-29;		/* -0x1.9ff0342542fc3p-97 */
-static const long double
-/* 0x1.62e42fefa39ef35793c768000000p-8 */
-L1 =  5.41521234812457272982212595914567508e-3L;
-
-static const long double
-/*
- * Domain [-0.002708, 0.002708], range ~[-2.4021e-38, 2.4234e-38]:
- * |exp(x) - p(x)| < 2**-124.9
- * (0.002708 is ln2/(2*INTERVALS) rounded up a little).
- */
-A2  =  0.5,
-A3  =  1.66666666666666666666666666651085500e-1L,
-A4  =  4.16666666666666666666666666425885320e-2L,
-A5  =  8.33333333333333333334522877160175842e-3L,
-A6  =  1.38888888888888888889971139751596836e-3L;
-
-static const double
-A7  =  1.9841269841269471e-4,
-A8  =  2.4801587301585284e-5,
-A9  =  2.7557324277411234e-6,
-A10 =  2.7557333722375072e-7;
-
-static const struct {
-	/*
-	 * hi must be rounded to at most 106 bits so that multiplication
-	 * by r1 in expm1l() is exact, but it is rounded to 88 bits due to
-	 * historical accidents.
-	 */
-	long double	hi;
-	long double	lo;
-} tbl[INTERVALS] = {
-	0x1p0L, 0x0p0L,
-	0x1.0163da9fb33356d84a66aep0L, 0x3.36dcdfa4003ec04c360be2404078p-92L,
-	0x1.02c9a3e778060ee6f7cacap0L, 0x4.f7a29bde93d70a2cabc5cb89ba10p-92L,
-	0x1.04315e86e7f84bd738f9a2p0L, 0xd.a47e6ed040bb4bfc05af6455e9b8p-96L,
-	0x1.059b0d31585743ae7c548ep0L, 0xb.68ca417fe53e3495f7df4baf84a0p-92L,
-	0x1.0706b29ddf6ddc6dc403a8p0L, 0x1.d87b27ed07cb8b092ac75e311753p-88L,
-	0x1.0874518759bc808c35f25cp0L, 0x1.9427fa2b041b2d6829d8993a0d01p-88L,
-	0x1.09e3ecac6f3834521e060cp0L, 0x5.84d6b74ba2e023da730e7fccb758p-92L,
-	0x1.0b5586cf9890f6298b92b6p0L, 0x1.1842a98364291408b3ceb0a2a2bbp-88L,
-	0x1.0cc922b7247f7407b705b8p0L, 0x9.3dc5e8aac564e6fe2ef1d431fd98p-92L,
-	0x1.0e3ec32d3d1a2020742e4ep0L, 0x1.8af6a552ac4b358b1129e9f966a4p-88L,
-	0x1.0fb66affed31af232091dcp0L, 0x1.8a1426514e0b627bda694a400a27p-88L,
-	0x1.11301d0125b50a4ebbf1aep0L, 0xd.9318ceac5cc47ab166ee57427178p-92L,
-	0x1.12abdc06c31cbfb92bad32p0L, 0x4.d68e2f7270bdf7cedf94eb1cb818p-92L,
-	0x1.1429aaea92ddfb34101942p0L, 0x1.b2586d01844b389bea7aedd221d4p-88L,
-	0x1.15a98c8a58e512480d573cp0L, 0x1.d5613bf92a2b618ee31b376c2689p-88L,
-	0x1.172b83c7d517adcdf7c8c4p0L, 0x1.0eb14a792035509ff7d758693f24p-88L,
-	0x1.18af9388c8de9bbbf70b9ap0L, 0x3.c2505c97c0102e5f1211941d2840p-92L,
-	0x1.1a35beb6fcb753cb698f68p0L, 0x1.2d1c835a6c30724d5cfae31b84e5p-88L,
-	0x1.1bbe084045cd39ab1e72b4p0L, 0x4.27e35f9acb57e473915519a1b448p-92L,
-	0x1.1d4873168b9aa7805b8028p0L, 0x9.90f07a98b42206e46166cf051d70p-92L,
-	0x1.1ed5022fcd91cb8819ff60p0L, 0x1.121d1e504d36c47474c9b7de6067p-88L,
-	0x1.2063b88628cd63b8eeb028p0L, 0x1.50929d0fc487d21c2b84004264dep-88L,
-	0x1.21f49917ddc962552fd292p0L, 0x9.4bdb4b61ea62477caa1dce823ba0p-92L,
-	0x1.2387a6e75623866c1fadb0p0L, 0x1.c15cb593b0328566902df69e4de2p-88L,
-	0x1.251ce4fb2a63f3582ab7dep0L, 0x9.e94811a9c8afdcf796934bc652d0p-92L,
-	0x1.26b4565e27cdd257a67328p0L, 0x1.d3b249dce4e9186ddd5ff44e6b08p-92L,
-	0x1.284dfe1f5638096cf15cf0p0L, 0x3.ca0967fdaa2e52d7c8106f2e262cp-92L,
-	0x1.29e9df51fdee12c25d15f4p0L, 0x1.a24aa3bca890ac08d203fed80a07p-88L,
-	0x1.2b87fd0dad98ffddea4652p0L, 0x1.8fcab88442fdc3cb6de4519165edp-88L,
-	0x1.2d285a6e4030b40091d536p0L, 0xd.075384589c1cd1b3e4018a6b1348p-92L,
-	0x1.2ecafa93e2f5611ca0f45cp0L, 0x1.523833af611bdcda253c554cf278p-88L,
-	0x1.306fe0a31b7152de8d5a46p0L, 0x3.05c85edecbc27343629f502f1af2p-92L,
-	0x1.32170fc4cd8313539cf1c2p0L, 0x1.008f86dde3220ae17a005b6412bep-88L,
-	0x1.33c08b26416ff4c9c8610cp0L, 0x1.96696bf95d1593039539d94d662bp-88L,
-	0x1.356c55f929ff0c94623476p0L, 0x3.73af38d6d8d6f9506c9bbc93cbc0p-92L,
-	0x1.371a7373aa9caa7145502ep0L, 0x1.4547987e3e12516bf9c699be432fp-88L,
-	0x1.38cae6d05d86585a9cb0d8p0L, 0x1.bed0c853bd30a02790931eb2e8f0p-88L,
-	0x1.3a7db34e59ff6ea1bc9298p0L, 0x1.e0a1d336163fe2f852ceeb134067p-88L,
-	0x1.3c32dc313a8e484001f228p0L, 0xb.58f3775e06ab66353001fae9fca0p-92L,
-	0x1.3dea64c12342235b41223ep0L, 0x1.3d773fba2cb82b8244267c54443fp-92L,
-	0x1.3fa4504ac801ba0bf701aap0L, 0x4.1832fb8c1c8dbdff2c49909e6c60p-92L,
-	0x1.4160a21f72e29f84325b8ep0L, 0x1.3db61fb352f0540e6ba05634413ep-88L,
-	0x1.431f5d950a896dc7044394p0L, 0x1.0ccec81e24b0caff7581ef4127f7p-92L,
-	0x1.44e086061892d03136f408p0L, 0x1.df019fbd4f3b48709b78591d5cb5p-88L,
-	0x1.46a41ed1d005772512f458p0L, 0x1.229d97df404ff21f39c1b594d3a8p-88L,
-	0x1.486a2b5c13cd013c1a3b68p0L, 0x1.062f03c3dd75ce8757f780e6ec99p-88L,
-	0x1.4a32af0d7d3de672d8bcf4p0L, 0x6.f9586461db1d878b1d148bd3ccb8p-92L,
-	0x1.4bfdad5362a271d4397afep0L, 0xc.42e20e0363ba2e159c579f82e4b0p-92L,
-	0x1.4dcb299fddd0d63b36ef1ap0L, 0x9.e0cc484b25a5566d0bd5f58ad238p-92L,
-	0x1.4f9b2769d2ca6ad33d8b68p0L, 0x1.aa073ee55e028497a329a7333dbap-88L,
-	0x1.516daa2cf6641c112f52c8p0L, 0x4.d822190e718226177d7608d20038p-92L,
-	0x1.5342b569d4f81df0a83c48p0L, 0x1.d86a63f4e672a3e429805b049465p-88L,
-	0x1.551a4ca5d920ec52ec6202p0L, 0x4.34ca672645dc6c124d6619a87574p-92L,
-	0x1.56f4736b527da66ecb0046p0L, 0x1.64eb3c00f2f5ab3d801d7cc7272dp-88L,
-	0x1.58d12d497c7fd252bc2b72p0L, 0x1.43bcf2ec936a970d9cc266f0072fp-88L,
-	0x1.5ab07dd48542958c930150p0L, 0x1.91eb345d88d7c81280e069fbdb63p-88L,
-	0x1.5c9268a5946b701c4b1b80p0L, 0x1.6986a203d84e6a4a92f179e71889p-88L,
-	0x1.5e76f15ad21486e9be4c20p0L, 0x3.99766a06548a05829e853bdb2b52p-92L,
-	0x1.605e1b976dc08b076f592ap0L, 0x4.86e3b34ead1b4769df867b9c89ccp-92L,
-	0x1.6247eb03a5584b1f0fa06ep0L, 0x1.d2da42bb1ceaf9f732275b8aef30p-88L,
-	0x1.6434634ccc31fc76f8714cp0L, 0x4.ed9a4e41000307103a18cf7a6e08p-92L,
-	0x1.66238825522249127d9e28p0L, 0x1.b8f314a337f4dc0a3adf1787ff74p-88L,
-	0x1.68155d44ca973081c57226p0L, 0x1.b9f32706bfe4e627d809a85dcc66p-88L,
-	0x1.6a09e667f3bcc908b2fb12p0L, 0x1.66ea957d3e3adec17512775099dap-88L,
-	0x1.6c012750bdabeed76a9980p0L, 0xf.4f33fdeb8b0ecd831106f57b3d00p-96L,
-	0x1.6dfb23c651a2ef220e2cbep0L, 0x1.bbaa834b3f11577ceefbe6c1c411p-92L,
-	0x1.6ff7df9519483cf87e1b4ep0L, 0x1.3e213bff9b702d5aa477c12523cep-88L,
-	0x1.71f75e8ec5f73dd2370f2ep0L, 0xf.0acd6cb434b562d9e8a20adda648p-92L,
-	0x1.73f9a48a58173bd5c9a4e6p0L, 0x8.ab1182ae217f3a7681759553e840p-92L,
-	0x1.75feb564267c8bf6e9aa32p0L, 0x1.a48b27071805e61a17b954a2dad8p-88L,
-	0x1.780694fde5d3f619ae0280p0L, 0x8.58b2bb2bdcf86cd08e35fb04c0f0p-92L,
-	0x1.7a11473eb0186d7d51023ep0L, 0x1.6cda1f5ef42b66977960531e821bp-88L,
-	0x1.7c1ed0130c1327c4933444p0L, 0x1.937562b2dc933d44fc828efd4c9cp-88L,
-	0x1.7e2f336cf4e62105d02ba0p0L, 0x1.5797e170a1427f8fcdf5f3906108p-88L,
-	0x1.80427543e1a11b60de6764p0L, 0x9.a354ea706b8e4d8b718a672bf7c8p-92L,
-	0x1.82589994cce128acf88afap0L, 0xb.34a010f6ad65cbbac0f532d39be0p-92L,
-	0x1.8471a4623c7acce52f6b96p0L, 0x1.c64095370f51f48817914dd78665p-88L,
-	0x1.868d99b4492ec80e41d90ap0L, 0xc.251707484d73f136fb5779656b70p-92L,
-	0x1.88ac7d98a669966530bcdep0L, 0x1.2d4e9d61283ef385de170ab20f96p-88L,
-	0x1.8ace5422aa0db5ba7c55a0p0L, 0x1.92c9bb3e6ed61f2733304a346d8fp-88L,
-	0x1.8cf3216b5448bef2aa1cd0p0L, 0x1.61c55d84a9848f8c453b3ca8c946p-88L,
-	0x1.8f1ae991577362b982745cp0L, 0x7.2ed804efc9b4ae1458ae946099d4p-92L,
-	0x1.9145b0b91ffc588a61b468p0L, 0x1.f6b70e01c2a90229a4c4309ea719p-88L,
-	0x1.93737b0cdc5e4f4501c3f2p0L, 0x5.40a22d2fc4af581b63e8326efe9cp-92L,
-	0x1.95a44cbc8520ee9b483694p0L, 0x1.a0fc6f7c7d61b2b3a22a0eab2cadp-88L,
-	0x1.97d829fde4e4f8b9e920f8p0L, 0x1.1e8bd7edb9d7144b6f6818084cc7p-88L,
-	0x1.9a0f170ca07b9ba3109b8cp0L, 0x4.6737beb19e1eada6825d3c557428p-92L,
-	0x1.9c49182a3f0901c7c46b06p0L, 0x1.1f2be58ddade50c217186c90b457p-88L,
-	0x1.9e86319e323231824ca78ep0L, 0x6.4c6e010f92c082bbadfaf605cfd4p-92L,
-	0x1.a0c667b5de564b29ada8b8p0L, 0xc.ab349aa0422a8da7d4512edac548p-92L,
-	0x1.a309bec4a2d3358c171f76p0L, 0x1.0daad547fa22c26d168ea762d854p-88L,
-	0x1.a5503b23e255c8b424491cp0L, 0xa.f87bc8050a405381703ef7caff50p-92L,
-	0x1.a799e1330b3586f2dfb2b0p0L, 0x1.58f1a98796ce8908ae852236ca94p-88L,
-	0x1.a9e6b5579fdbf43eb243bcp0L, 0x1.ff4c4c58b571cf465caf07b4b9f5p-88L,
-	0x1.ac36bbfd3f379c0db966a2p0L, 0x1.1265fc73e480712d20f8597a8e7bp-88L,
-	0x1.ae89f995ad3ad5e8734d16p0L, 0x1.73205a7fbc3ae675ea440b162d6cp-88L,
-	0x1.b0e07298db66590842acdep0L, 0x1.c6f6ca0e5dcae2aafffa7a0554cbp-88L,
-	0x1.b33a2b84f15faf6bfd0e7ap0L, 0x1.d947c2575781dbb49b1237c87b6ep-88L,
-	0x1.b59728de559398e3881110p0L, 0x1.64873c7171fefc410416be0a6525p-88L,
-	0x1.b7f76f2fb5e46eaa7b081ap0L, 0xb.53c5354c8903c356e4b625aacc28p-92L,
-	0x1.ba5b030a10649840cb3c6ap0L, 0xf.5b47f297203757e1cc6eadc8bad0p-92L,
-	0x1.bcc1e904bc1d2247ba0f44p0L, 0x1.b3d08cd0b20287092bd59be4ad98p-88L,
-	0x1.bf2c25bd71e088408d7024p0L, 0x1.18e3449fa073b356766dfb568ff4p-88L,
-	0x1.c199bdd85529c2220cb12ap0L, 0x9.1ba6679444964a36661240043970p-96L,
-	0x1.c40ab5fffd07a6d14df820p0L, 0xf.1828a5366fd387a7bdd54cdf7300p-92L,
-	0x1.c67f12e57d14b4a2137fd2p0L, 0xf.2b301dd9e6b151a6d1f9d5d5f520p-96L,
-	0x1.c8f6d9406e7b511acbc488p0L, 0x5.c442ddb55820171f319d9e5076a8p-96L,
-	0x1.cb720dcef90691503cbd1ep0L, 0x9.49db761d9559ac0cb6dd3ed599e0p-92L,
-	0x1.cdf0b555dc3f9c44f8958ep0L, 0x1.ac51be515f8c58bdfb6f5740a3a4p-88L,
-	0x1.d072d4a07897b8d0f22f20p0L, 0x1.a158e18fbbfc625f09f4cca40874p-88L,
-	0x1.d2f87080d89f18ade12398p0L, 0x9.ea2025b4c56553f5cdee4c924728p-92L,
-	0x1.d5818dcfba48725da05aeap0L, 0x1.66e0dca9f589f559c0876ff23830p-88L,
-	0x1.d80e316c98397bb84f9d04p0L, 0x8.805f84bec614de269900ddf98d28p-92L,
-	0x1.da9e603db3285708c01a5ap0L, 0x1.6d4c97f6246f0ec614ec95c99392p-88L,
-	0x1.dd321f301b4604b695de3cp0L, 0x6.30a393215299e30d4fb73503c348p-96L,
-	0x1.dfc97337b9b5eb968cac38p0L, 0x1.ed291b7225a944efd5bb5524b927p-88L,
-	0x1.e264614f5a128a12761fa0p0L, 0x1.7ada6467e77f73bf65e04c95e29dp-88L,
-	0x1.e502ee78b3ff6273d13014p0L, 0x1.3991e8f49659e1693be17ae1d2f9p-88L,
-	0x1.e7a51fbc74c834b548b282p0L, 0x1.23786758a84f4956354634a416cep-88L,
-	0x1.ea4afa2a490d9858f73a18p0L, 0xf.5db301f86dea20610ceee13eb7b8p-92L,
-	0x1.ecf482d8e67f08db0312fap0L, 0x1.949cef462010bb4bc4ce72a900dfp-88L,
-	0x1.efa1bee615a27771fd21a8p0L, 0x1.2dac1f6dd5d229ff68e46f27e3dfp-88L,
-	0x1.f252b376bba974e8696fc2p0L, 0x1.6390d4c6ad5476b5162f40e1d9a9p-88L,
-	0x1.f50765b6e4540674f84b76p0L, 0x2.862baff99000dfc4352ba29b8908p-92L,
-	0x1.f7bfdad9cbe138913b4bfep0L, 0x7.2bd95c5ce7280fa4d2344a3f5618p-92L,
-	0x1.fa7c1819e90d82e90a7e74p0L, 0xb.263c1dc060c36f7650b4c0f233a8p-92L,
-	0x1.fd3c22b8f71f10975ba4b2p0L, 0x1.2bcf3a5e12d269d8ad7c1a4a8875p-88L
-};
-
 long double
 expl(long double x)
 {
-	union IEEEl2bits u, v;
-	long double q, r, r1, t, twopk, twopkp10000;
-	double dr, fn, r2;
-	int k, n, n2;
+	union IEEEl2bits u;
+	long double hi, lo, t, twopk;
+	int k;
 	uint16_t hx, ix;
 
+	DOPRINT_START(&x);
+
 	/* Filter out exceptional cases. */
 	u.e = x;
 	hx = u.xbits.expsign;
@@ -241,60 +72,33 @@
 	if (ix >= BIAS + 13) {		/* |x| >= 8192 or x is NaN */
 		if (ix == BIAS + LDBL_MAX_EXP) {
 			if (hx & 0x8000)  /* x is -Inf or -NaN */
-				return (-1 / x);
-			return (x + x);	/* x is +Inf or +NaN */
+				RETURNP(-1 / x);
+			RETURNP(x + x);	/* x is +Inf or +NaN */
 		}
 		if (x > o_threshold)
-			return (huge * huge);
+			RETURNP(huge * huge);
 		if (x < u_threshold)
-			return (tiny * tiny);
+			RETURNP(tiny * tiny);
 	} else if (ix < BIAS - 114) {	/* |x| < 0x1p-114 */
-		return (1 + x);		/* 1 with inexact iff x != 0 */
+		RETURN2P(1, x);		/* 1 with inexact iff x != 0 */
 	}
 
 	ENTERI();
 
-	/* Reduce x to (k*ln2 + endpoint[n2] + r1 + r2). */
-	/* Use a specialized rint() to get fn.  Assume round-to-nearest. */
-	/* XXX assume no extra precision for the additions, as for trig fns. */
-	/* XXX this set of comments is now quadruplicated. */
-	fn = (double)x * INV_L + 0x1.8p52 - 0x1.8p52;
-#if defined(HAVE_EFFICIENT_IRINT)
-	n = irint(fn);
-#else
-	n = (int)fn;
-#endif
-	n2 = (unsigned)n % INTERVALS;
-	k = n >> LOG2_INTERVALS;
-	r1 = x - fn * L1;
-	r2 = fn * -L2;
-	r = r1 + r2;
-
-	/* Prepare scale factors. */
-	/* XXX sparc64 multiplication is so slow that scalbnl() is faster. */
-	v.e = 1;
-	if (k >= LDBL_MIN_EXP) {
-		v.xbits.expsign = BIAS + k;
-		twopk = v.e;
-	} else {
-		v.xbits.expsign = BIAS + k + 10000;
-		twopkp10000 = v.e;
-	}
-
-	/* Evaluate expl(endpoint[n2] + r1 + r2) = tbl[n2] * expl(r1 + r2). */
-	dr = r;
-	q = r2 + r * r * (A2 + r * (A3 + r * (A4 + r * (A5 + r * (A6 +
-	    dr * (A7 + dr * (A8 + dr * (A9 + dr * A10))))))));
-	t = tbl[n2].lo + tbl[n2].hi;
-	t = tbl[n2].lo + t * (q + r1) + tbl[n2].hi;
+	twopk = 1;
+	__k_expl(x, &hi, &lo, &k);
+	t = SUM2P(hi, lo);
 
 	/* Scale by 2**k. */
+	/* XXX sparc64 multiplication is so slow that scalbnl() is faster. */
 	if (k >= LDBL_MIN_EXP) {
 		if (k == LDBL_MAX_EXP)
 			RETURNI(t * 2 * 0x1p16383L);
+		SET_LDBL_EXPSIGN(twopk, BIAS + k);
 		RETURNI(t * twopk);
 	} else {
-		RETURNI(t * twopkp10000 * twom10000);
+		SET_LDBL_EXPSIGN(twopk, BIAS + k + 10000);
+		RETURNI(t * twopk * twom10000);
 	}
 }
 
@@ -312,6 +116,12 @@
  * Setting T3 to 0 would require the |x| < 0x1p-113 condition to appear
  * in both subintervals, so set T3 = 2**-5, which places the condition
  * into the [T1, T3] interval.
+ *
+ * XXX we now do this more to (partially) balance the number of terms
+ * in the C and D polys than to avoid checking the condition in both
+ * intervals.
+ *
+ * XXX these micro-optimizations are excessive.
  */
 static const double
 T1 = -0.1659,				/* ~-30.625/128 * log(2) */
@@ -321,6 +131,12 @@
 /*
  * Domain [-0.1659, 0.03125], range ~[2.9134e-44, 1.8404e-37]:
  * |(exp(x)-1-x-x**2/2)/x - p(x)| < 2**-122.03
+ *
+ * XXX none of the long double C or D coeffs except C10 is correctly printed.
+ * If you re-print their values in %.35Le format, the result is always
+ * different.  For example, the last 2 digits in C3 should be 59, not 67.
+ * 67 is apparently from rounding an extra-precision value to 36 decimal
+ * places.
  */
 static const long double
 C3  =  1.66666666666666666666666666666666667e-1L,
@@ -335,6 +151,13 @@
 C12 =  2.08767569878679576457272282566520649e-9L,
 C13 =  1.60590438367252471783548748824255707e-10L;
 
+/*
+ * XXX this has 1 more coeff than needed.
+ * XXX can start the double coeffs but not the double mults at C10.
+ * With my coeffs (C10-C17 double; s = best_s):
+ * Domain [-0.1659, 0.03125], range ~[-1.1976e-37, 1.1976e-37]:
+ * |(exp(x)-1-x-x**2/2)/x - p(x)| ~< 2**-122.65
+ */
 static const double
 C14 =  1.1470745580491932e-11,		/*  0x1.93974a81dae30p-37 */
 C15 =  7.6471620181090468e-13,		/*  0x1.ae7f3820adab1p-41 */
@@ -359,6 +182,13 @@
 D12 =  2.08767569819738524488686318024854942e-9L,
 D13 =  1.60590442297008495301927448122499313e-10L;
 
+/*
+ * XXX this has 1 more coeff than needed.
+ * XXX can start the double coeffs but not the double mults at D11.
+ * With my coeffs (D11-D16 double):
+ * Domain [0.03125, 0.1659], range ~[-1.1980e-37, 1.1980e-37]:
+ * |(exp(x)-1-x-x**2/2)/x - p(x)| ~< 2**-122.65
+ */
 static const double
 D14 =  1.1470726176204336e-11,		/*  0x1.93971dc395d9ep-37 */
 D15 =  7.6478532249581686e-13,		/*  0x1.ae892e3D16fcep-41 */
@@ -375,6 +205,8 @@
 	int k, n, n2;
 	uint16_t hx, ix;
 
+	DOPRINT_START(&x);
+
 	/* Filter out exceptional cases. */
 	u.e = x;
 	hx = u.xbits.expsign;
@@ -382,11 +214,11 @@
 	if (ix >= BIAS + 7) {		/* |x| >= 128 or x is NaN */
 		if (ix == BIAS + LDBL_MAX_EXP) {
 			if (hx & 0x8000)  /* x is -Inf or -NaN */
-				return (-1 / x - 1);
-			return (x + x);	/* x is +Inf or +NaN */
+				RETURNP(-1 / x - 1);
+			RETURNP(x + x);	/* x is +Inf or +NaN */
 		}
 		if (x > o_threshold)
-			return (huge * huge);
+			RETURNP(huge * huge);
 		/*
 		 * expm1l() never underflows, but it must avoid
 		 * unrepresentable large negative exponents.  We used a
@@ -395,7 +227,7 @@
 		 * in the same way as large ones here.
 		 */
 		if (hx & 0x8000)	/* x <= -128 */
-			return (tiny - 1);	/* good for x < -114ln2 - eps */
+			RETURN2P(tiny, -1);	/* good for x < -114ln2 - eps */
 	}
 
 	ENTERI();
@@ -407,7 +239,7 @@
 		if (x < T3) {
 			if (ix < BIAS - 113) {	/* |x| < 0x1p-113 */
 				/* x (rounded) with inexact if x != 0: */
-				RETURNI(x == 0 ? x :
+				RETURNPI(x == 0 ? x :
 				    (0x1p200 * x + fabsl(x)) * 0x1p-200);
 			}
 			q = x * x2 * C3 + x2 * x2 * (C4 + x * (C5 + x * (C6 +
@@ -428,9 +260,9 @@
 		hx2_hi = x_hi * x_hi / 2;
 		hx2_lo = x_lo * (x + x_hi) / 2;
 		if (ix >= BIAS - 7)
-			RETURNI(hx2_lo + x_lo + q + (hx2_hi + x_hi));
+			RETURN2PI(hx2_hi + x_hi, hx2_lo + x_lo + q);
 		else
-			RETURNI(hx2_lo + q + hx2_hi + x);
+			RETURN2PI(x, hx2_lo + q + hx2_hi);
 	}
 
 	/* Reduce x to (k*ln2 + endpoint[n2] + r1 + r2). */
@@ -463,21 +295,21 @@
 	t = tbl[n2].lo + tbl[n2].hi;
 
 	if (k == 0) {
-		t = tbl[n2].lo * (r1 + 1) + t * q + tbl[n2].hi * r1 +
-		    (tbl[n2].hi - 1);
+		t = SUM2P(tbl[n2].hi - 1, tbl[n2].lo * (r1 + 1) + t * q +
+		    tbl[n2].hi * r1);
 		RETURNI(t);
 	}
 	if (k == -1) {
-		t = tbl[n2].lo * (r1 + 1) + t * q + tbl[n2].hi * r1 + 
-		    (tbl[n2].hi - 2);
+		t = SUM2P(tbl[n2].hi - 2, tbl[n2].lo * (r1 + 1) + t * q +
+		    tbl[n2].hi * r1);
 		RETURNI(t / 2);
 	}
 	if (k < -7) {
-		t = tbl[n2].lo + t * (q + r1) + tbl[n2].hi;
+		t = SUM2P(tbl[n2].hi, tbl[n2].lo + t * (q + r1));
 		RETURNI(t * twopk - 1);
 	}
 	if (k > 2 * LDBL_MANT_DIG - 1) {
-		t = tbl[n2].lo + t * (q + r1) + tbl[n2].hi;
+		t = SUM2P(tbl[n2].hi, tbl[n2].lo + t * (q + r1));
 		if (k == LDBL_MAX_EXP)
 			RETURNI(t * 2 * 0x1p16383L - 1);
 		RETURNI(t * twopk - 1);
@@ -487,8 +319,8 @@
 	twomk = v.e;
 
 	if (k > LDBL_MANT_DIG - 1)
-		t = tbl[n2].lo - twomk + t * (q + r1) + tbl[n2].hi;
+		t = SUM2P(tbl[n2].hi, tbl[n2].lo - twomk + t * (q + r1));
 	else
-		t = tbl[n2].lo + t * (q + r1) + (tbl[n2].hi - twomk);
+		t = SUM2P(tbl[n2].hi - twomk, tbl[n2].lo + t * (q + r1));
 	RETURNI(t * twopk);
 }
diff --git a/libm/upstream-freebsd/lib/msun/src/catrig.c b/libm/upstream-freebsd/lib/msun/src/catrig.c
new file mode 100644
index 0000000..200977c
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/src/catrig.c
@@ -0,0 +1,639 @@
+/*-
+ * Copyright (c) 2012 Stephen Montgomery-Smith <stephen@FreeBSD.ORG>
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (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/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <complex.h>
+#include <float.h>
+
+#include "math.h"
+#include "math_private.h"
+
+#undef isinf
+#define isinf(x)	(fabs(x) == INFINITY)
+#undef isnan
+#define isnan(x)	((x) != (x))
+#define	raise_inexact()	do { volatile float junk = 1 + tiny; } while(0)
+#undef signbit
+#define signbit(x)	(__builtin_signbit(x))
+
+/* We need that DBL_EPSILON^2/128 is larger than FOUR_SQRT_MIN. */
+static const double
+A_crossover =		10, /* Hull et al suggest 1.5, but 10 works better */
+B_crossover =		0.6417,			/* suggested by Hull et al */
+FOUR_SQRT_MIN =		0x1p-509,		/* >= 4 * sqrt(DBL_MIN) */
+QUARTER_SQRT_MAX =	0x1p509,		/* <= sqrt(DBL_MAX) / 4 */
+m_e =			2.7182818284590452e0,	/*  0x15bf0a8b145769.0p-51 */
+m_ln2 =			6.9314718055994531e-1,	/*  0x162e42fefa39ef.0p-53 */
+pio2_hi =		1.5707963267948966e0,	/*  0x1921fb54442d18.0p-52 */
+RECIP_EPSILON =		1 / DBL_EPSILON,
+SQRT_3_EPSILON =	2.5809568279517849e-8,	/*  0x1bb67ae8584caa.0p-78 */
+SQRT_6_EPSILON =	3.6500241499888571e-8,	/*  0x13988e1409212e.0p-77 */
+SQRT_MIN =		0x1p-511;		/* >= sqrt(DBL_MIN) */
+
+static const volatile double
+pio2_lo =		6.1232339957367659e-17;	/*  0x11a62633145c07.0p-106 */
+static const volatile float
+tiny =			0x1p-100; 
+
+static double complex clog_for_large_values(double complex z);
+
+/*
+ * Testing indicates that all these functions are accurate up to 4 ULP.
+ * The functions casin(h) and cacos(h) are about 2.5 times slower than asinh.
+ * The functions catan(h) are a little under 2 times slower than atanh.
+ *
+ * The code for casinh, casin, cacos, and cacosh comes first.  The code is
+ * rather complicated, and the four functions are highly interdependent.
+ *
+ * The code for catanh and catan comes at the end.  It is much simpler than
+ * the other functions, and the code for these can be disconnected from the
+ * rest of the code.
+ */
+
+/*
+ *			================================
+ *			| casinh, casin, cacos, cacosh |
+ *			================================
+ */
+
+/*
+ * The algorithm is very close to that in "Implementing the complex arcsine
+ * and arccosine functions using exception handling" by T. E. Hull, Thomas F.
+ * Fairgrieve, and Ping Tak Peter Tang, published in ACM Transactions on
+ * Mathematical Software, Volume 23 Issue 3, 1997, Pages 299-335,
+ * http://dl.acm.org/citation.cfm?id=275324.
+ *
+ * Throughout we use the convention z = x + I*y.
+ *
+ * casinh(z) = sign(x)*log(A+sqrt(A*A-1)) + I*asin(B)
+ * where
+ * A = (|z+I| + |z-I|) / 2
+ * B = (|z+I| - |z-I|) / 2 = y/A
+ *
+ * These formulas become numerically unstable:
+ *   (a) for Re(casinh(z)) when z is close to the line segment [-I, I] (that
+ *       is, Re(casinh(z)) is close to 0);
+ *   (b) for Im(casinh(z)) when z is close to either of the intervals
+ *       [I, I*infinity) or (-I*infinity, -I] (that is, |Im(casinh(z))| is
+ *       close to PI/2).
+ *
+ * These numerical problems are overcome by defining
+ * f(a, b) = (hypot(a, b) - b) / 2 = a*a / (hypot(a, b) + b) / 2
+ * Then if A < A_crossover, we use
+ *   log(A + sqrt(A*A-1)) = log1p((A-1) + sqrt((A-1)*(A+1)))
+ *   A-1 = f(x, 1+y) + f(x, 1-y)
+ * and if B > B_crossover, we use
+ *   asin(B) = atan2(y, sqrt(A*A - y*y)) = atan2(y, sqrt((A+y)*(A-y)))
+ *   A-y = f(x, y+1) + f(x, y-1)
+ * where without loss of generality we have assumed that x and y are
+ * non-negative.
+ *
+ * Much of the difficulty comes because the intermediate computations may
+ * produce overflows or underflows.  This is dealt with in the paper by Hull
+ * et al by using exception handling.  We do this by detecting when
+ * computations risk underflow or overflow.  The hardest part is handling the
+ * underflows when computing f(a, b).
+ *
+ * Note that the function f(a, b) does not appear explicitly in the paper by
+ * Hull et al, but the idea may be found on pages 308 and 309.  Introducing the
+ * function f(a, b) allows us to concentrate many of the clever tricks in this
+ * paper into one function.
+ */
+
+/*
+ * Function f(a, b, hypot_a_b) = (hypot(a, b) - b) / 2.
+ * Pass hypot(a, b) as the third argument.
+ */
+static inline double
+f(double a, double b, double hypot_a_b)
+{
+	if (b < 0)
+		return ((hypot_a_b - b) / 2);
+	if (b == 0)
+		return (a / 2);
+	return (a * a / (hypot_a_b + b) / 2);
+}
+
+/*
+ * All the hard work is contained in this function.
+ * x and y are assumed positive or zero, and less than RECIP_EPSILON.
+ * Upon return:
+ * rx = Re(casinh(z)) = -Im(cacos(y + I*x)).
+ * B_is_usable is set to 1 if the value of B is usable.
+ * If B_is_usable is set to 0, sqrt_A2my2 = sqrt(A*A - y*y), and new_y = y.
+ * If returning sqrt_A2my2 has potential to result in an underflow, it is
+ * rescaled, and new_y is similarly rescaled.
+ */
+static inline void
+do_hard_work(double x, double y, double *rx, int *B_is_usable, double *B,
+    double *sqrt_A2my2, double *new_y)
+{
+	double R, S, A; /* A, B, R, and S are as in Hull et al. */
+	double Am1, Amy; /* A-1, A-y. */
+
+	R = hypot(x, y + 1);		/* |z+I| */
+	S = hypot(x, y - 1);		/* |z-I| */
+
+	/* A = (|z+I| + |z-I|) / 2 */
+	A = (R + S) / 2;
+	/*
+	 * Mathematically A >= 1.  There is a small chance that this will not
+	 * be so because of rounding errors.  So we will make certain it is
+	 * so.
+	 */
+	if (A < 1)
+		A = 1;
+
+	if (A < A_crossover) {
+		/*
+		 * Am1 = fp + fm, where fp = f(x, 1+y), and fm = f(x, 1-y).
+		 * rx = log1p(Am1 + sqrt(Am1*(A+1)))
+		 */
+		if (y == 1 && x < DBL_EPSILON * DBL_EPSILON / 128) {
+			/*
+			 * fp is of order x^2, and fm = x/2.
+			 * A = 1 (inexactly).
+			 */
+			*rx = sqrt(x);
+		} else if (x >= DBL_EPSILON * fabs(y - 1)) {
+			/*
+			 * Underflow will not occur because
+			 * x >= DBL_EPSILON^2/128 >= FOUR_SQRT_MIN
+			 */
+			Am1 = f(x, 1 + y, R) + f(x, 1 - y, S);
+			*rx = log1p(Am1 + sqrt(Am1 * (A + 1)));
+		} else if (y < 1) {
+			/*
+			 * fp = x*x/(1+y)/4, fm = x*x/(1-y)/4, and
+			 * A = 1 (inexactly).
+			 */
+			*rx = x / sqrt((1 - y) * (1 + y));
+		} else {		/* if (y > 1) */
+			/*
+			 * A-1 = y-1 (inexactly).
+			 */
+			*rx = log1p((y - 1) + sqrt((y - 1) * (y + 1)));
+		}
+	} else {
+		*rx = log(A + sqrt(A * A - 1));
+	}
+
+	*new_y = y;
+
+	if (y < FOUR_SQRT_MIN) {
+		/*
+		 * Avoid a possible underflow caused by y/A.  For casinh this
+		 * would be legitimate, but will be picked up by invoking atan2
+		 * later on.  For cacos this would not be legitimate.
+		 */
+		*B_is_usable = 0;
+		*sqrt_A2my2 = A * (2 / DBL_EPSILON);
+		*new_y = y * (2 / DBL_EPSILON);
+		return;
+	}
+
+	/* B = (|z+I| - |z-I|) / 2 = y/A */
+	*B = y / A;
+	*B_is_usable = 1;
+
+	if (*B > B_crossover) {
+		*B_is_usable = 0;
+		/*
+		 * Amy = fp + fm, where fp = f(x, y+1), and fm = f(x, y-1).
+		 * sqrt_A2my2 = sqrt(Amy*(A+y))
+		 */
+		if (y == 1 && x < DBL_EPSILON / 128) {
+			/*
+			 * fp is of order x^2, and fm = x/2.
+			 * A = 1 (inexactly).
+			 */
+			*sqrt_A2my2 = sqrt(x) * sqrt((A + y) / 2);
+		} else if (x >= DBL_EPSILON * fabs(y - 1)) {
+			/*
+			 * Underflow will not occur because
+			 * x >= DBL_EPSILON/128 >= FOUR_SQRT_MIN
+			 * and
+			 * x >= DBL_EPSILON^2 >= FOUR_SQRT_MIN
+			 */
+			Amy = f(x, y + 1, R) + f(x, y - 1, S);
+			*sqrt_A2my2 = sqrt(Amy * (A + y));
+		} else if (y > 1) {
+			/*
+			 * fp = x*x/(y+1)/4, fm = x*x/(y-1)/4, and
+			 * A = y (inexactly).
+			 *
+			 * y < RECIP_EPSILON.  So the following
+			 * scaling should avoid any underflow problems.
+			 */
+			*sqrt_A2my2 = x * (4 / DBL_EPSILON / DBL_EPSILON) * y /
+			    sqrt((y + 1) * (y - 1));
+			*new_y = y * (4 / DBL_EPSILON / DBL_EPSILON);
+		} else {		/* if (y < 1) */
+			/*
+			 * fm = 1-y >= DBL_EPSILON, fp is of order x^2, and
+			 * A = 1 (inexactly).
+			 */
+			*sqrt_A2my2 = sqrt((1 - y) * (1 + y));
+		}
+	}
+}
+
+/*
+ * casinh(z) = z + O(z^3)   as z -> 0
+ *
+ * casinh(z) = sign(x)*clog(sign(x)*z) + O(1/z^2)   as z -> infinity
+ * The above formula works for the imaginary part as well, because
+ * Im(casinh(z)) = sign(x)*atan2(sign(x)*y, fabs(x)) + O(y/z^3)
+ *    as z -> infinity, uniformly in y
+ */
+double complex
+casinh(double complex z)
+{
+	double x, y, ax, ay, rx, ry, B, sqrt_A2my2, new_y;
+	int B_is_usable;
+	double complex w;
+
+	x = creal(z);
+	y = cimag(z);
+	ax = fabs(x);
+	ay = fabs(y);
+
+	if (isnan(x) || isnan(y)) {
+		/* casinh(+-Inf + I*NaN) = +-Inf + I*NaN */
+		if (isinf(x))
+			return (cpack(x, y + y));
+		/* casinh(NaN + I*+-Inf) = opt(+-)Inf + I*NaN */
+		if (isinf(y))
+			return (cpack(y, x + x));
+		/* casinh(NaN + I*0) = NaN + I*0 */
+		if (y == 0)
+			return (cpack(x + x, y));
+		/*
+		 * All other cases involving NaN return NaN + I*NaN.
+		 * C99 leaves it optional whether to raise invalid if one of
+		 * the arguments is not NaN, so we opt not to raise it.
+		 */
+		return (cpack(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
+	}
+
+	if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
+		/* clog...() will raise inexact unless x or y is infinite. */
+		if (signbit(x) == 0)
+			w = clog_for_large_values(z) + m_ln2;
+		else
+			w = clog_for_large_values(-z) + m_ln2;
+		return (cpack(copysign(creal(w), x), copysign(cimag(w), y)));
+	}
+
+	/* Avoid spuriously raising inexact for z = 0. */
+	if (x == 0 && y == 0)
+		return (z);
+
+	/* All remaining cases are inexact. */
+	raise_inexact();
+
+	if (ax < SQRT_6_EPSILON / 4 && ay < SQRT_6_EPSILON / 4)
+		return (z);
+
+	do_hard_work(ax, ay, &rx, &B_is_usable, &B, &sqrt_A2my2, &new_y);
+	if (B_is_usable)
+		ry = asin(B);
+	else
+		ry = atan2(new_y, sqrt_A2my2);
+	return (cpack(copysign(rx, x), copysign(ry, y)));
+}
+
+/*
+ * casin(z) = reverse(casinh(reverse(z)))
+ * where reverse(x + I*y) = y + I*x = I*conj(z).
+ */
+double complex
+casin(double complex z)
+{
+	double complex w = casinh(cpack(cimag(z), creal(z)));
+
+	return (cpack(cimag(w), creal(w)));
+}
+
+/*
+ * cacos(z) = PI/2 - casin(z)
+ * but do the computation carefully so cacos(z) is accurate when z is
+ * close to 1.
+ *
+ * cacos(z) = PI/2 - z + O(z^3)   as z -> 0
+ *
+ * cacos(z) = -sign(y)*I*clog(z) + O(1/z^2)   as z -> infinity
+ * The above formula works for the real part as well, because
+ * Re(cacos(z)) = atan2(fabs(y), x) + O(y/z^3)
+ *    as z -> infinity, uniformly in y
+ */
+double complex
+cacos(double complex z)
+{
+	double x, y, ax, ay, rx, ry, B, sqrt_A2mx2, new_x;
+	int sx, sy;
+	int B_is_usable;
+	double complex w;
+
+	x = creal(z);
+	y = cimag(z);
+	sx = signbit(x);
+	sy = signbit(y);
+	ax = fabs(x);
+	ay = fabs(y);
+
+	if (isnan(x) || isnan(y)) {
+		/* cacos(+-Inf + I*NaN) = NaN + I*opt(-)Inf */
+		if (isinf(x))
+			return (cpack(y + y, -INFINITY));
+		/* cacos(NaN + I*+-Inf) = NaN + I*-+Inf */
+		if (isinf(y))
+			return (cpack(x + x, -y));
+		/* cacos(0 + I*NaN) = PI/2 + I*NaN with inexact */
+		if (x == 0)
+			return (cpack(pio2_hi + pio2_lo, y + y));
+		/*
+		 * All other cases involving NaN return NaN + I*NaN.
+		 * C99 leaves it optional whether to raise invalid if one of
+		 * the arguments is not NaN, so we opt not to raise it.
+		 */
+		return (cpack(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
+	}
+
+	if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
+		/* clog...() will raise inexact unless x or y is infinite. */
+		w = clog_for_large_values(z);
+		rx = fabs(cimag(w));
+		ry = creal(w) + m_ln2;
+		if (sy == 0)
+			ry = -ry;
+		return (cpack(rx, ry));
+	}
+
+	/* Avoid spuriously raising inexact for z = 1. */
+	if (x == 1 && y == 0)
+		return (cpack(0, -y));
+
+	/* All remaining cases are inexact. */
+	raise_inexact();
+
+	if (ax < SQRT_6_EPSILON / 4 && ay < SQRT_6_EPSILON / 4)
+		return (cpack(pio2_hi - (x - pio2_lo), -y));
+
+	do_hard_work(ay, ax, &ry, &B_is_usable, &B, &sqrt_A2mx2, &new_x);
+	if (B_is_usable) {
+		if (sx == 0)
+			rx = acos(B);
+		else
+			rx = acos(-B);
+	} else {
+		if (sx == 0)
+			rx = atan2(sqrt_A2mx2, new_x);
+		else
+			rx = atan2(sqrt_A2mx2, -new_x);
+	}
+	if (sy == 0)
+		ry = -ry;
+	return (cpack(rx, ry));
+}
+
+/*
+ * cacosh(z) = I*cacos(z) or -I*cacos(z)
+ * where the sign is chosen so Re(cacosh(z)) >= 0.
+ */
+double complex
+cacosh(double complex z)
+{
+	double complex w;
+	double rx, ry;
+
+	w = cacos(z);
+	rx = creal(w);
+	ry = cimag(w);
+	/* cacosh(NaN + I*NaN) = NaN + I*NaN */
+	if (isnan(rx) && isnan(ry))
+		return (cpack(ry, rx));
+	/* cacosh(NaN + I*+-Inf) = +Inf + I*NaN */
+	/* cacosh(+-Inf + I*NaN) = +Inf + I*NaN */
+	if (isnan(rx))
+		return (cpack(fabs(ry), rx));
+	/* cacosh(0 + I*NaN) = NaN + I*NaN */
+	if (isnan(ry))
+		return (cpack(ry, ry));
+	return (cpack(fabs(ry), copysign(rx, cimag(z))));
+}
+
+/*
+ * Optimized version of clog() for |z| finite and larger than ~RECIP_EPSILON.
+ */
+static double complex
+clog_for_large_values(double complex z)
+{
+	double x, y;
+	double ax, ay, t;
+
+	x = creal(z);
+	y = cimag(z);
+	ax = fabs(x);
+	ay = fabs(y);
+	if (ax < ay) {
+		t = ax;
+		ax = ay;
+		ay = t;
+	}
+
+	/*
+	 * Avoid overflow in hypot() when x and y are both very large.
+	 * Divide x and y by E, and then add 1 to the logarithm.  This depends
+	 * on E being larger than sqrt(2).
+	 * Dividing by E causes an insignificant loss of accuracy; however
+	 * this method is still poor since it is uneccessarily slow.
+	 */
+	if (ax > DBL_MAX / 2)
+		return (cpack(log(hypot(x / m_e, y / m_e)) + 1, atan2(y, x)));
+
+	/*
+	 * Avoid overflow when x or y is large.  Avoid underflow when x or
+	 * y is small.
+	 */
+	if (ax > QUARTER_SQRT_MAX || ay < SQRT_MIN)
+		return (cpack(log(hypot(x, y)), atan2(y, x)));
+
+	return (cpack(log(ax * ax + ay * ay) / 2, atan2(y, x)));
+}
+
+/*
+ *				=================
+ *				| catanh, catan |
+ *				=================
+ */
+
+/*
+ * sum_squares(x,y) = x*x + y*y (or just x*x if y*y would underflow).
+ * Assumes x*x and y*y will not overflow.
+ * Assumes x and y are finite.
+ * Assumes y is non-negative.
+ * Assumes fabs(x) >= DBL_EPSILON.
+ */
+static inline double
+sum_squares(double x, double y)
+{
+
+	/* Avoid underflow when y is small. */
+	if (y < SQRT_MIN)
+		return (x * x);
+
+	return (x * x + y * y);
+}
+
+/*
+ * real_part_reciprocal(x, y) = Re(1/(x+I*y)) = x/(x*x + y*y).
+ * Assumes x and y are not NaN, and one of x and y is larger than
+ * RECIP_EPSILON.  We avoid unwarranted underflow.  It is important to not use
+ * the code creal(1/z), because the imaginary part may produce an unwanted
+ * underflow.
+ * This is only called in a context where inexact is always raised before
+ * the call, so no effort is made to avoid or force inexact.
+ */
+static inline double
+real_part_reciprocal(double x, double y)
+{
+	double scale;
+	uint32_t hx, hy;
+	int32_t ix, iy;
+
+	/*
+	 * This code is inspired by the C99 document n1124.pdf, Section G.5.1,
+	 * example 2.
+	 */
+	GET_HIGH_WORD(hx, x);
+	ix = hx & 0x7ff00000;
+	GET_HIGH_WORD(hy, y);
+	iy = hy & 0x7ff00000;
+#define	BIAS	(DBL_MAX_EXP - 1)
+/* XXX more guard digits are useful iff there is extra precision. */
+#define	CUTOFF	(DBL_MANT_DIG / 2 + 1)	/* just half or 1 guard digit */
+	if (ix - iy >= CUTOFF << 20 || isinf(x))
+		return (1 / x);		/* +-Inf -> +-0 is special */
+	if (iy - ix >= CUTOFF << 20)
+		return (x / y / y);	/* should avoid double div, but hard */
+	if (ix <= (BIAS + DBL_MAX_EXP / 2 - CUTOFF) << 20)
+		return (x / (x * x + y * y));
+	scale = 1;
+	SET_HIGH_WORD(scale, 0x7ff00000 - ix);	/* 2**(1-ilogb(x)) */
+	x *= scale;
+	y *= scale;
+	return (x / (x * x + y * y) * scale);
+}
+
+/*
+ * catanh(z) = log((1+z)/(1-z)) / 2
+ *           = log1p(4*x / |z-1|^2) / 4
+ *             + I * atan2(2*y, (1-x)*(1+x)-y*y) / 2
+ *
+ * catanh(z) = z + O(z^3)   as z -> 0
+ *
+ * catanh(z) = 1/z + sign(y)*I*PI/2 + O(1/z^3)   as z -> infinity
+ * The above formula works for the real part as well, because
+ * Re(catanh(z)) = x/|z|^2 + O(x/z^4)
+ *    as z -> infinity, uniformly in x
+ */
+double complex
+catanh(double complex z)
+{
+	double x, y, ax, ay, rx, ry;
+
+	x = creal(z);
+	y = cimag(z);
+	ax = fabs(x);
+	ay = fabs(y);
+
+	/* This helps handle many cases. */
+	if (y == 0 && ax <= 1)
+		return (cpack(atanh(x), y));
+
+	/* To ensure the same accuracy as atan(), and to filter out z = 0. */
+	if (x == 0)
+		return (cpack(x, atan(y)));
+
+	if (isnan(x) || isnan(y)) {
+		/* catanh(+-Inf + I*NaN) = +-0 + I*NaN */
+		if (isinf(x))
+			return (cpack(copysign(0, x), y + y));
+		/* catanh(NaN + I*+-Inf) = sign(NaN)0 + I*+-PI/2 */
+		if (isinf(y))
+			return (cpack(copysign(0, x),
+			    copysign(pio2_hi + pio2_lo, y)));
+		/*
+		 * All other cases involving NaN return NaN + I*NaN.
+		 * C99 leaves it optional whether to raise invalid if one of
+		 * the arguments is not NaN, so we opt not to raise it.
+		 */
+		return (cpack(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
+	}
+
+	if (ax > RECIP_EPSILON || ay > RECIP_EPSILON)
+		return (cpack(real_part_reciprocal(x, y),
+		    copysign(pio2_hi + pio2_lo, y)));
+
+	if (ax < SQRT_3_EPSILON / 2 && ay < SQRT_3_EPSILON / 2) {
+		/*
+		 * z = 0 was filtered out above.  All other cases must raise
+		 * inexact, but this is the only only that needs to do it
+		 * explicitly.
+		 */
+		raise_inexact();
+		return (z);
+	}
+
+	if (ax == 1 && ay < DBL_EPSILON)
+		rx = (m_ln2 - log(ay)) / 2;
+	else
+		rx = log1p(4 * ax / sum_squares(ax - 1, ay)) / 4;
+
+	if (ax == 1)
+		ry = atan2(2, -ay) / 2;
+	else if (ay < DBL_EPSILON)
+		ry = atan2(2 * ay, (1 - ax) * (1 + ax)) / 2;
+	else
+		ry = atan2(2 * ay, (1 - ax) * (1 + ax) - ay * ay) / 2;
+
+	return (cpack(copysign(rx, x), copysign(ry, y)));
+}
+
+/*
+ * catan(z) = reverse(catanh(reverse(z)))
+ * where reverse(x + I*y) = y + I*x = I*conj(z).
+ */
+double complex
+catan(double complex z)
+{
+	double complex w = catanh(cpack(cimag(z), creal(z)));
+
+	return (cpack(cimag(w), creal(w)));
+}
diff --git a/libm/upstream-freebsd/lib/msun/src/catrigf.c b/libm/upstream-freebsd/lib/msun/src/catrigf.c
new file mode 100644
index 0000000..08ebef7
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/src/catrigf.c
@@ -0,0 +1,393 @@
+/*-
+ * Copyright (c) 2012 Stephen Montgomery-Smith <stephen@FreeBSD.ORG>
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (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 algorithm is very close to that in "Implementing the complex arcsine
+ * and arccosine functions using exception handling" by T. E. Hull, Thomas F.
+ * Fairgrieve, and Ping Tak Peter Tang, published in ACM Transactions on
+ * Mathematical Software, Volume 23 Issue 3, 1997, Pages 299-335,
+ * http://dl.acm.org/citation.cfm?id=275324.
+ *
+ * See catrig.c for complete comments.
+ *
+ * XXX comments were removed automatically, and even short ones on the right
+ * of statements were removed (all of them), contrary to normal style.  Only
+ * a few comments on the right of declarations remain.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <complex.h>
+#include <float.h>
+
+#include "math.h"
+#include "math_private.h"
+
+#undef isinf
+#define isinf(x)	(fabsf(x) == INFINITY)
+#undef isnan
+#define isnan(x)	((x) != (x))
+#define	raise_inexact()	do { volatile float junk = 1 + tiny; } while(0)
+#undef signbit
+#define signbit(x)	(__builtin_signbitf(x))
+
+static const float
+A_crossover =		10,
+B_crossover =		0.6417,
+FOUR_SQRT_MIN =		0x1p-61,
+QUARTER_SQRT_MAX =	0x1p61,
+m_e =			2.7182818285e0,		/*  0xadf854.0p-22 */
+m_ln2 =			6.9314718056e-1,	/*  0xb17218.0p-24 */
+pio2_hi =		1.5707962513e0,		/*  0xc90fda.0p-23 */
+RECIP_EPSILON =		1 / FLT_EPSILON,
+SQRT_3_EPSILON =	5.9801995673e-4,	/*  0x9cc471.0p-34 */
+SQRT_6_EPSILON =	8.4572793338e-4,	/*  0xddb3d7.0p-34 */
+SQRT_MIN =		0x1p-63;
+
+static const volatile float
+pio2_lo =		7.5497899549e-8,	/*  0xa22169.0p-47 */
+tiny =			0x1p-100;
+
+static float complex clog_for_large_values(float complex z);
+
+static inline float
+f(float a, float b, float hypot_a_b)
+{
+	if (b < 0)
+		return ((hypot_a_b - b) / 2);
+	if (b == 0)
+		return (a / 2);
+	return (a * a / (hypot_a_b + b) / 2);
+}
+
+static inline void
+do_hard_work(float x, float y, float *rx, int *B_is_usable, float *B,
+    float *sqrt_A2my2, float *new_y)
+{
+	float R, S, A;
+	float Am1, Amy;
+
+	R = hypotf(x, y + 1);
+	S = hypotf(x, y - 1);
+
+	A = (R + S) / 2;
+	if (A < 1)
+		A = 1;
+
+	if (A < A_crossover) {
+		if (y == 1 && x < FLT_EPSILON * FLT_EPSILON / 128) {
+			*rx = sqrtf(x);
+		} else if (x >= FLT_EPSILON * fabsf(y - 1)) {
+			Am1 = f(x, 1 + y, R) + f(x, 1 - y, S);
+			*rx = log1pf(Am1 + sqrtf(Am1 * (A + 1)));
+		} else if (y < 1) {
+			*rx = x / sqrtf((1 - y) * (1 + y));
+		} else {
+			*rx = log1pf((y - 1) + sqrtf((y - 1) * (y + 1)));
+		}
+	} else {
+		*rx = logf(A + sqrtf(A * A - 1));
+	}
+
+	*new_y = y;
+
+	if (y < FOUR_SQRT_MIN) {
+		*B_is_usable = 0;
+		*sqrt_A2my2 = A * (2 / FLT_EPSILON);
+		*new_y = y * (2 / FLT_EPSILON);
+		return;
+	}
+
+	*B = y / A;
+	*B_is_usable = 1;
+
+	if (*B > B_crossover) {
+		*B_is_usable = 0;
+		if (y == 1 && x < FLT_EPSILON / 128) {
+			*sqrt_A2my2 = sqrtf(x) * sqrtf((A + y) / 2);
+		} else if (x >= FLT_EPSILON * fabsf(y - 1)) {
+			Amy = f(x, y + 1, R) + f(x, y - 1, S);
+			*sqrt_A2my2 = sqrtf(Amy * (A + y));
+		} else if (y > 1) {
+			*sqrt_A2my2 = x * (4 / FLT_EPSILON / FLT_EPSILON) * y /
+			    sqrtf((y + 1) * (y - 1));
+			*new_y = y * (4 / FLT_EPSILON / FLT_EPSILON);
+		} else {
+			*sqrt_A2my2 = sqrtf((1 - y) * (1 + y));
+		}
+	}
+}
+
+float complex
+casinhf(float complex z)
+{
+	float x, y, ax, ay, rx, ry, B, sqrt_A2my2, new_y;
+	int B_is_usable;
+	float complex w;
+
+	x = crealf(z);
+	y = cimagf(z);
+	ax = fabsf(x);
+	ay = fabsf(y);
+
+	if (isnan(x) || isnan(y)) {
+		if (isinf(x))
+			return (cpackf(x, y + y));
+		if (isinf(y))
+			return (cpackf(y, x + x));
+		if (y == 0)
+			return (cpackf(x + x, y));
+		return (cpackf(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
+	}
+
+	if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
+		if (signbit(x) == 0)
+			w = clog_for_large_values(z) + m_ln2;
+		else
+			w = clog_for_large_values(-z) + m_ln2;
+		return (cpackf(copysignf(crealf(w), x),
+		    copysignf(cimagf(w), y)));
+	}
+
+	if (x == 0 && y == 0)
+		return (z);
+
+	raise_inexact();
+
+	if (ax < SQRT_6_EPSILON / 4 && ay < SQRT_6_EPSILON / 4)
+		return (z);
+
+	do_hard_work(ax, ay, &rx, &B_is_usable, &B, &sqrt_A2my2, &new_y);
+	if (B_is_usable)
+		ry = asinf(B);
+	else
+		ry = atan2f(new_y, sqrt_A2my2);
+	return (cpackf(copysignf(rx, x), copysignf(ry, y)));
+}
+
+float complex
+casinf(float complex z)
+{
+	float complex w = casinhf(cpackf(cimagf(z), crealf(z)));
+
+	return (cpackf(cimagf(w), crealf(w)));
+}
+
+float complex
+cacosf(float complex z)
+{
+	float x, y, ax, ay, rx, ry, B, sqrt_A2mx2, new_x;
+	int sx, sy;
+	int B_is_usable;
+	float complex w;
+
+	x = crealf(z);
+	y = cimagf(z);
+	sx = signbit(x);
+	sy = signbit(y);
+	ax = fabsf(x);
+	ay = fabsf(y);
+
+	if (isnan(x) || isnan(y)) {
+		if (isinf(x))
+			return (cpackf(y + y, -INFINITY));
+		if (isinf(y))
+			return (cpackf(x + x, -y));
+		if (x == 0)
+			return (cpackf(pio2_hi + pio2_lo, y + y));
+		return (cpackf(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
+	}
+
+	if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
+		w = clog_for_large_values(z);
+		rx = fabsf(cimagf(w));
+		ry = crealf(w) + m_ln2;
+		if (sy == 0)
+			ry = -ry;
+		return (cpackf(rx, ry));
+	}
+
+	if (x == 1 && y == 0)
+		return (cpackf(0, -y));
+
+	raise_inexact();
+
+	if (ax < SQRT_6_EPSILON / 4 && ay < SQRT_6_EPSILON / 4)
+		return (cpackf(pio2_hi - (x - pio2_lo), -y));
+
+	do_hard_work(ay, ax, &ry, &B_is_usable, &B, &sqrt_A2mx2, &new_x);
+	if (B_is_usable) {
+		if (sx == 0)
+			rx = acosf(B);
+		else
+			rx = acosf(-B);
+	} else {
+		if (sx == 0)
+			rx = atan2f(sqrt_A2mx2, new_x);
+		else
+			rx = atan2f(sqrt_A2mx2, -new_x);
+	}
+	if (sy == 0)
+		ry = -ry;
+	return (cpackf(rx, ry));
+}
+
+float complex
+cacoshf(float complex z)
+{
+	float complex w;
+	float rx, ry;
+
+	w = cacosf(z);
+	rx = crealf(w);
+	ry = cimagf(w);
+	if (isnan(rx) && isnan(ry))
+		return (cpackf(ry, rx));
+	if (isnan(rx))
+		return (cpackf(fabsf(ry), rx));
+	if (isnan(ry))
+		return (cpackf(ry, ry));
+	return (cpackf(fabsf(ry), copysignf(rx, cimagf(z))));
+}
+
+static float complex
+clog_for_large_values(float complex z)
+{
+	float x, y;
+	float ax, ay, t;
+
+	x = crealf(z);
+	y = cimagf(z);
+	ax = fabsf(x);
+	ay = fabsf(y);
+	if (ax < ay) {
+		t = ax;
+		ax = ay;
+		ay = t;
+	}
+
+	if (ax > FLT_MAX / 2)
+		return (cpackf(logf(hypotf(x / m_e, y / m_e)) + 1,
+		    atan2f(y, x)));
+
+	if (ax > QUARTER_SQRT_MAX || ay < SQRT_MIN)
+		return (cpackf(logf(hypotf(x, y)), atan2f(y, x)));
+
+	return (cpackf(logf(ax * ax + ay * ay) / 2, atan2f(y, x)));
+}
+
+static inline float
+sum_squares(float x, float y)
+{
+
+	if (y < SQRT_MIN)
+		return (x * x);
+
+	return (x * x + y * y);
+}
+
+static inline float
+real_part_reciprocal(float x, float y)
+{
+	float scale;
+	uint32_t hx, hy;
+	int32_t ix, iy;
+
+	GET_FLOAT_WORD(hx, x);
+	ix = hx & 0x7f800000;
+	GET_FLOAT_WORD(hy, y);
+	iy = hy & 0x7f800000;
+#define	BIAS	(FLT_MAX_EXP - 1)
+#define	CUTOFF	(FLT_MANT_DIG / 2 + 1)
+	if (ix - iy >= CUTOFF << 23 || isinf(x))
+		return (1 / x);
+	if (iy - ix >= CUTOFF << 23)
+		return (x / y / y);
+	if (ix <= (BIAS + FLT_MAX_EXP / 2 - CUTOFF) << 23)
+		return (x / (x * x + y * y));
+	SET_FLOAT_WORD(scale, 0x7f800000 - ix);
+	x *= scale;
+	y *= scale;
+	return (x / (x * x + y * y) * scale);
+}
+
+float complex
+catanhf(float complex z)
+{
+	float x, y, ax, ay, rx, ry;
+
+	x = crealf(z);
+	y = cimagf(z);
+	ax = fabsf(x);
+	ay = fabsf(y);
+
+	if (y == 0 && ax <= 1)
+		return (cpackf(atanhf(x), y));
+
+	if (x == 0)
+		return (cpackf(x, atanf(y)));
+
+	if (isnan(x) || isnan(y)) {
+		if (isinf(x))
+			return (cpackf(copysignf(0, x), y + y));
+		if (isinf(y))
+			return (cpackf(copysignf(0, x),
+			    copysignf(pio2_hi + pio2_lo, y)));
+		return (cpackf(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
+	}
+
+	if (ax > RECIP_EPSILON || ay > RECIP_EPSILON)
+		return (cpackf(real_part_reciprocal(x, y),
+		    copysignf(pio2_hi + pio2_lo, y)));
+
+	if (ax < SQRT_3_EPSILON / 2 && ay < SQRT_3_EPSILON / 2) {
+		raise_inexact();
+		return (z);
+	}
+
+	if (ax == 1 && ay < FLT_EPSILON)
+		rx = (m_ln2 - logf(ay)) / 2;
+	else
+		rx = log1pf(4 * ax / sum_squares(ax - 1, ay)) / 4;
+
+	if (ax == 1)
+		ry = atan2f(2, -ay) / 2;
+	else if (ay < FLT_EPSILON)
+		ry = atan2f(2 * ay, (1 - ax) * (1 + ax)) / 2;
+	else
+		ry = atan2f(2 * ay, (1 - ax) * (1 + ax) - ay * ay) / 2;
+
+	return (cpackf(copysignf(rx, x), copysignf(ry, y)));
+}
+
+float complex
+catanf(float complex z)
+{
+	float complex w = catanhf(cpackf(cimagf(z), crealf(z)));
+
+	return (cpackf(cimagf(w), crealf(w)));
+}
diff --git a/libm/upstream-freebsd/lib/msun/src/e_acoshl.c b/libm/upstream-freebsd/lib/msun/src/e_acoshl.c
index 59faeb0..b9f3aed 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_acoshl.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_acoshl.c
@@ -7,7 +7,7 @@
  *
  * Developed at SunSoft, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice 
  * is preserved.
  * ====================================================
  *
@@ -75,7 +75,7 @@
 	} else if (hx >= BIAS + EXP_LARGE) { /* x >= LARGE */
 	    if (hx >= 0x7fff) {		/* x is inf, NaN or misnormal */
 	        RETURNI(x+x);
-	    } else
+	    } else 
 		RETURNI(logl(x)+ln2);	/* acosh(huge)=log(2x), or misnormal */
 	} else if (hx == 0x3fff && x == 1) {
 	    RETURNI(0.0);		/* acosh(1) = 0 */
diff --git a/libm/upstream-freebsd/lib/msun/src/e_atanhl.c b/libm/upstream-freebsd/lib/msun/src/e_atanhl.c
index a888426..11d56ea 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_atanhl.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_atanhl.c
@@ -7,7 +7,7 @@
  *
  * Developed at SunSoft, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice 
  * is preserved.
  * ====================================================
  *
@@ -68,7 +68,7 @@
 	if (ix < 0x3ffe) {		/* |x| < 0.5, or misnormal */
 	    t = x+x;
 	    t = 0.5*log1pl(t+t*x/(one-x));
-	} else
+	} else 
 	    t = 0.5*log1pl((x+x)/(one-x));
 	RETURNI((hx & 0x8000) == 0 ? t : -t);
 }
diff --git a/libm/upstream-freebsd/lib/msun/src/e_cosh.c b/libm/upstream-freebsd/lib/msun/src/e_cosh.c
index a363695..246b5fb 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_cosh.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_cosh.c
@@ -35,6 +35,8 @@
  *	only cosh(0)=1 is exact for finite x.
  */
 
+#include <float.h>
+
 #include "math.h"
 #include "math_private.h"
 
@@ -77,3 +79,7 @@
     /* |x| > overflowthresold, cosh(x) overflow */
 	return huge*huge;
 }
+
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(cosh, coshl);
+#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/e_coshl.c b/libm/upstream-freebsd/lib/msun/src/e_coshl.c
new file mode 100644
index 0000000..0a21277
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/src/e_coshl.c
@@ -0,0 +1,130 @@
+/* from: FreeBSD: head/lib/msun/src/e_coshl.c XXX */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * See e_cosh.c for complete comments.
+ *
+ * Converted to long double by Bruce D. Evans.
+ */
+
+#include <float.h>
+#ifdef __i386__
+#include <ieeefp.h>
+#endif
+
+#include "fpmath.h"
+#include "math.h"
+#include "math_private.h"
+#include "k_expl.h"
+
+#if LDBL_MAX_EXP != 0x4000
+/* We also require the usual expsign encoding. */
+#error "Unsupported long double format"
+#endif
+
+#define	BIAS	(LDBL_MAX_EXP - 1)
+
+static const volatile long double huge = 0x1p10000L, tiny = 0x1p-10000L;
+#if LDBL_MANT_DIG == 64
+/*
+ * Domain [-1, 1], range ~[-1.8211e-21, 1.8211e-21]:
+ * |cosh(x) - c(x)| < 2**-68.8
+ */
+static const union IEEEl2bits
+C4u = LD80C(0xaaaaaaaaaaaaac78, -5,  4.16666666666666682297e-2L);
+#define	C4	C4u.e
+static const double
+C2  =  0.5,
+C6  =  1.3888888888888616e-3,		/*  0x16c16c16c16b99.0p-62 */
+C8  =  2.4801587301767953e-5,		/*  0x1a01a01a027061.0p-68 */
+C10 =  2.7557319163300398e-7,		/*  0x127e4fb6c9b55f.0p-74 */
+C12 =  2.0876768371393075e-9,		/*  0x11eed99406a3f4.0p-81 */
+C14 =  1.1469537039374480e-11,		/*  0x1938c67cd18c48.0p-89 */
+C16 =  4.8473490896852041e-14;		/*  0x1b49c429701e45.0p-97 */
+#elif LDBL_MANT_DIG == 113
+/*
+ * Domain [-1, 1], range ~[-2.3194e-37, 2.3194e-37]:
+ * |cosh(x) - c(x)| < 2**-121.69
+ */
+static const long double
+C4  =  4.16666666666666666666666666666666225e-2L,	/*  0x1555555555555555555555555554e.0p-117L */
+C6  =  1.38888888888888888888888888889434831e-3L,	/*  0x16c16c16c16c16c16c16c16c1dd7a.0p-122L */
+C8  =  2.48015873015873015873015871870962089e-5L,	/*  0x1a01a01a01a01a01a01a017af2756.0p-128L */
+C10 =  2.75573192239858906525574318600800201e-7L,	/*  0x127e4fb7789f5c72ef01c8a040640.0p-134L */
+C12 =  2.08767569878680989791444691755468269e-9L,	/*  0x11eed8eff8d897b543d0679607399.0p-141L */
+C14=  1.14707455977297247387801189650495351e-11L,	/*  0x193974a8c07c9d24ae169a7fa9b54.0p-149L */
+C16 =  4.77947733238737883626416876486279985e-14L;	/*  0x1ae7f3e733b814d4e1b90f5727fe4.0p-157L */
+static const double
+C2  =  0.5,
+C18 =  1.5619206968597871e-16,		/*  0x16827863b9900b.0p-105 */
+C20 =  4.1103176218528049e-19,		/*  0x1e542ba3d3c269.0p-114 */
+C22 =  8.8967926401641701e-22,		/*  0x10ce399542a014.0p-122 */
+C24 =  1.6116681626523904e-24,		/*  0x1f2c981d1f0cb7.0p-132 */
+C26 =  2.5022374732804632e-27;		/*  0x18c7ecf8b2c4a0.0p-141 */
+#else
+#error "Unsupported long double format"
+#endif /* LDBL_MANT_DIG == 64 */
+
+/* log(2**16385 - 0.5) rounded up: */
+static const float
+o_threshold =  1.13572168e4;		/*  0xb174de.0p-10 */
+
+long double
+coshl(long double x)
+{
+	long double hi,lo,x2,x4;
+	double dx2;
+	uint16_t ix;
+
+	GET_LDBL_EXPSIGN(ix,x);
+	ix &= 0x7fff;
+
+    /* x is INF or NaN */
+	if(ix>=0x7fff) return x*x;
+
+	ENTERI();
+
+    /* |x| < 1, return 1 or c(x) */
+	if(ix<0x3fff) {
+	    if (ix<BIAS-(LDBL_MANT_DIG+1)/2) 	/* |x| < TINY */
+		RETURNI(1+tiny);	/* cosh(tiny) = 1(+) with inexact */
+	    x2 = x*x;
+#if LDBL_MANT_DIG == 64
+	    x4 = x2*x2;
+	    RETURNI(((C16*x2 + C14)*x4 + (C12*x2 + C10))*(x4*x4*x2) +
+		((C8*x2 + C6)*x2 + C4)*x4 + C2*x2 + 1);
+#elif LDBL_MANT_DIG == 113
+	    dx2 = x2;
+	    RETURNI((((((((((((C26*dx2 + C24)*dx2 + C22)*dx2 +
+		C20)*x2 + C18)*x2 +
+		C16)*x2 + C14)*x2 + C12)*x2 + C10)*x2 + C8)*x2 + C6)*x2 +
+		C4)*(x2*x2) + C2*x2 + 1);
+#endif
+	}
+
+    /* |x| in [1, 64), return accurate exp(|x|)/2+1/exp(|x|)/2 */
+	if (ix < 0x4005) {
+	    k_hexpl(fabsl(x), &hi, &lo);
+	    RETURNI(lo + 0.25/(hi + lo) + hi);
+	}
+
+    /* |x| in [64, o_threshold], return correctly-overflowing exp(|x|)/2 */
+	if (fabsl(x) <= o_threshold)
+	    RETURNI(hexpl(fabsl(x)));
+
+    /* |x| > o_threshold, cosh(x) overflow */
+	RETURNI(huge*huge);
+}
diff --git a/libm/upstream-freebsd/lib/msun/src/e_lgamma.c b/libm/upstream-freebsd/lib/msun/src/e_lgamma.c
index 4674d9b..43f5175 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_lgamma.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_lgamma.c
@@ -21,6 +21,8 @@
  * Method: call __ieee754_lgamma_r
  */
 
+#include <float.h>
+
 #include "math.h"
 #include "math_private.h"
 
@@ -31,3 +33,7 @@
 {
 	return __ieee754_lgamma_r(x,&signgam);
 }
+
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(lgamma, lgammal);
+#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/e_lgamma_r.c b/libm/upstream-freebsd/lib/msun/src/e_lgamma_r.c
index 1cff592..be70767 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_lgamma_r.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_lgamma_r.c
@@ -1,4 +1,3 @@
-
 /* @(#)e_lgamma_r.c 1.3 95/01/18 */
 /*
  * ====================================================
@@ -6,22 +5,21 @@
  *
  * Developed at SunSoft, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice 
+ * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
- *
  */
 
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
 /* __ieee754_lgamma_r(x, signgamp)
- * Reentrant version of the logarithm of the Gamma function 
- * with user provide pointer for the sign of Gamma(x). 
+ * Reentrant version of the logarithm of the Gamma function
+ * with user provide pointer for the sign of Gamma(x).
  *
  * Method:
  *   1. Argument Reduction for 0 < x <= 8
- * 	Since gamma(1+s)=s*gamma(s), for x in [0,8], we may 
+ * 	Since gamma(1+s)=s*gamma(s), for x in [0,8], we may
  * 	reduce x to a number in [1.5,2.5] by
  * 		lgamma(1+s) = log(s) + lgamma(s)
  *	for example,
@@ -59,20 +57,20 @@
  *	by
  *	  			    3       5             11
  *		w = w0 + w1*z + w2*z  + w3*z  + ... + w6*z
- *	where 
+ *	where
  *		|w - f(z)| < 2**-58.74
- *		
+ *
  *   4. For negative x, since (G is gamma function)
  *		-x*G(-x)*G(x) = pi/sin(pi*x),
  * 	we have
  * 		G(x) = pi/(sin(pi*x)*(-x)*G(-x))
  *	since G(-x) is positive, sign(G(x)) = sign(sin(pi*x)) for x<0
- *	Hence, for x<0, signgam = sign(sin(pi*x)) and 
+ *	Hence, for x<0, signgam = sign(sin(pi*x)) and
  *		lgamma(x) = log(|Gamma(x)|)
  *			  = log(pi/(|x*sin(pi*x)|)) - lgamma(-x);
- *	Note: one should avoid compute pi*(-x) directly in the 
+ *	Note: one should avoid compute pi*(-x) directly in the
  *	      computation of sin(pi*(-x)).
- *		
+ *
  *   5. Special Cases
  *		lgamma(2+s) ~ s*(1-Euler) for tiny s
  *		lgamma(1) = lgamma(2) = 0
@@ -80,14 +78,17 @@
  *		lgamma(0) = lgamma(neg.integer) = inf and raise divide-by-zero
  *		lgamma(inf) = inf
  *		lgamma(-inf) = inf (bug for bug compatible with C99!?)
- *	
  */
 
+#include <float.h>
+
 #include "math.h"
 #include "math_private.h"
 
+static const volatile double vzero = 0;
+
 static const double
-two52=  4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+zero=  0.00000000000000000000e+00,
 half=  5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
 one =  1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
 pi  =  3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */
@@ -154,44 +155,40 @@
 w5  =  8.36339918996282139126e-04, /* 0x3F4B67BA, 0x4CDAD5D1 */
 w6  = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */
 
-static const double zero=  0.00000000000000000000e+00;
-
-	static double sin_pi(double x)
+/*
+ * Compute sin(pi*x) without actually doing the pi*x multiplication.
+ * sin_pi(x) is only called for x < 0 and |x| < 2**(p-1) where p is
+ * the precision of x.
+ */
+static double
+sin_pi(double x)
 {
+	volatile double vz;
 	double y,z;
-	int n,ix;
+	int n;
 
-	GET_HIGH_WORD(ix,x);
-	ix &= 0x7fffffff;
+	y = -x;
 
-	if(ix<0x3fd00000) return __kernel_sin(pi*x,zero,0);
-	y = -x;		/* x is assume negative */
+	vz = y+0x1p52;			/* depend on 0 <= y < 0x1p52 */
+	z = vz-0x1p52;			/* rint(y) for the above range */
+	if (z == y)
+	    return zero;
 
-    /*
-     * argument reduction, make sure inexact flag not raised if input
-     * is an integer
-     */
-	z = floor(y);
-	if(z!=y) {				/* inexact anyway */
-	    y  *= 0.5;
-	    y   = 2.0*(y - floor(y));		/* y = |x| mod 2.0 */
-	    n   = (int) (y*4.0);
-	} else {
-            if(ix>=0x43400000) {
-                y = zero; n = 0;                 /* y must be even */
-            } else {
-                if(ix<0x43300000) z = y+two52;	/* exact */
-		GET_LOW_WORD(n,z);
-		n &= 1;
-                y  = n;
-                n<<= 2;
-            }
-        }
+	vz = y+0x1p50;
+	GET_LOW_WORD(n,vz);		/* bits for rounded y (units 0.25) */
+	z = vz-0x1p50;			/* y rounded to a multiple of 0.25 */
+	if (z > y) {
+	    z -= 0.25;			/* adjust to round down */
+	    n--;
+	}
+	n &= 7;				/* octant of y mod 2 */
+	y = y - z + n * 0.25;		/* y mod 2 */
+
 	switch (n) {
 	    case 0:   y =  __kernel_sin(pi*y,zero,0); break;
-	    case 1:   
+	    case 1:
 	    case 2:   y =  __kernel_cos(pi*(0.5-y),zero); break;
-	    case 3:  
+	    case 3:
 	    case 4:   y =  __kernel_sin(pi*(one-y),zero,0); break;
 	    case 5:
 	    case 6:   y = -__kernel_cos(pi*(y-1.5),zero); break;
@@ -204,34 +201,38 @@
 double
 __ieee754_lgamma_r(double x, int *signgamp)
 {
-	double t,y,z,nadj,p,p1,p2,p3,q,r,w;
+	double nadj,p,p1,p2,p3,q,r,t,w,y,z;
 	int32_t hx;
-	int i,lx,ix;
+	int i,ix,lx;
 
 	EXTRACT_WORDS(hx,lx,x);
 
-    /* purge off +-inf, NaN, +-0, tiny and negative arguments */
+    /* purge +-Inf and NaNs */
 	*signgamp = 1;
 	ix = hx&0x7fffffff;
 	if(ix>=0x7ff00000) return x*x;
-	if((ix|lx)==0) return one/zero;
-	if(ix<0x3b900000) {	/* |x|<2**-70, return -log(|x|) */
-	    if(hx<0) {
-	        *signgamp = -1;
-	        return -__ieee754_log(-x);
-	    } else return -__ieee754_log(x);
+
+    /* purge +-0 and tiny arguments */
+	*signgamp = 1-2*((uint32_t)hx>>31);
+	if(ix<0x3c700000) {	/* |x|<2**-56, return -log(|x|) */
+	    if((ix|lx)==0)
+	        return one/vzero;
+	    return -__ieee754_log(fabs(x));
 	}
+
+    /* purge negative integers and start evaluation for other x < 0 */
 	if(hx<0) {
+	    *signgamp = 1;
 	    if(ix>=0x43300000) 	/* |x|>=2**52, must be -integer */
-		return one/zero;
+		return one/vzero;
 	    t = sin_pi(x);
-	    if(t==zero) return one/zero; /* -integer */
+	    if(t==zero) return one/vzero; /* -integer */
 	    nadj = __ieee754_log(pi/fabs(t*x));
 	    if(t<zero) *signgamp = -1;
 	    x = -x;
 	}
 
-    /* purge off 1 and 2 */
+    /* purge 1 and 2 */
 	if((((ix-0x3ff00000)|lx)==0)||(((ix-0x40000000)|lx)==0)) r = 0;
     /* for x < 2.0 */
 	else if(ix<0x40000000) {
@@ -252,7 +253,7 @@
 		p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10))));
 		p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11)))));
 		p  = y*p1+p2;
-		r  += (p-0.5*y); break;
+		r  += p-y/2; break;
 	      case 1:
 		z = y*y;
 		w = z*y;
@@ -260,38 +261,43 @@
 		p2 = t1+w*(t4+w*(t7+w*(t10+w*t13)));
 		p3 = t2+w*(t5+w*(t8+w*(t11+w*t14)));
 		p  = z*p1-(tt-w*(p2+y*p3));
-		r += (tf + p); break;
-	      case 2:	
+		r += tf + p; break;
+	      case 2:
 		p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5)))));
 		p2 = one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5))));
-		r += (-0.5*y + p1/p2);
+		r += p1/p2-y/2;
 	    }
 	}
-	else if(ix<0x40200000) { 			/* x < 8.0 */
-	    i = (int)x;
-	    y = x-(double)i;
+    /* x < 8.0 */
+	else if(ix<0x40200000) {
+	    i = x;
+	    y = x-i;
 	    p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6))))));
 	    q = one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))));
-	    r = half*y+p/q;
+	    r = y/2+p/q;
 	    z = one;	/* lgamma(1+s) = log(s) + lgamma(s) */
 	    switch(i) {
-	    case 7: z *= (y+6.0);	/* FALLTHRU */
-	    case 6: z *= (y+5.0);	/* FALLTHRU */
-	    case 5: z *= (y+4.0);	/* FALLTHRU */
-	    case 4: z *= (y+3.0);	/* FALLTHRU */
-	    case 3: z *= (y+2.0);	/* FALLTHRU */
+	    case 7: z *= (y+6);		/* FALLTHRU */
+	    case 6: z *= (y+5);		/* FALLTHRU */
+	    case 5: z *= (y+4);		/* FALLTHRU */
+	    case 4: z *= (y+3);		/* FALLTHRU */
+	    case 3: z *= (y+2);		/* FALLTHRU */
 		    r += __ieee754_log(z); break;
 	    }
-    /* 8.0 <= x < 2**58 */
-	} else if (ix < 0x43900000) {
+    /* 8.0 <= x < 2**56 */
+	} else if (ix < 0x43700000) {
 	    t = __ieee754_log(x);
 	    z = one/x;
 	    y = z*z;
 	    w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6)))));
 	    r = (x-half)*(t-one)+w;
-	} else 
-    /* 2**58 <= x <= inf */
+	} else
+    /* 2**56 <= x <= inf */
 	    r =  x*(__ieee754_log(x)-one);
 	if(hx<0) r = nadj - r;
 	return r;
 }
+
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(lgamma_r, lgammal_r);
+#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/e_lgammaf_r.c b/libm/upstream-freebsd/lib/msun/src/e_lgammaf_r.c
index e2d90ef..9084e18 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_lgammaf_r.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_lgammaf_r.c
@@ -1,5 +1,6 @@
 /* e_lgammaf_r.c -- float version of e_lgamma_r.c.
  * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ * Conversion to float fixed By Steven G. Kargl.
  */
 
 /*
@@ -19,107 +20,91 @@
 #include "math.h"
 #include "math_private.h"
 
+static const volatile float vzero = 0;
+
 static const float
-two23=  8.3886080000e+06, /* 0x4b000000 */
-half=  5.0000000000e-01, /* 0x3f000000 */
-one =  1.0000000000e+00, /* 0x3f800000 */
+zero=  0,
+half=  0.5,
+one =  1,
 pi  =  3.1415927410e+00, /* 0x40490fdb */
-a0  =  7.7215664089e-02, /* 0x3d9e233f */
-a1  =  3.2246702909e-01, /* 0x3ea51a66 */
-a2  =  6.7352302372e-02, /* 0x3d89f001 */
-a3  =  2.0580807701e-02, /* 0x3ca89915 */
-a4  =  7.3855509982e-03, /* 0x3bf2027e */
-a5  =  2.8905137442e-03, /* 0x3b3d6ec6 */
-a6  =  1.1927076848e-03, /* 0x3a9c54a1 */
-a7  =  5.1006977446e-04, /* 0x3a05b634 */
-a8  =  2.2086278477e-04, /* 0x39679767 */
-a9  =  1.0801156895e-04, /* 0x38e28445 */
-a10 =  2.5214456400e-05, /* 0x37d383a2 */
-a11 =  4.4864096708e-05, /* 0x383c2c75 */
-tc  =  1.4616321325e+00, /* 0x3fbb16c3 */
-tf  = -1.2148628384e-01, /* 0xbdf8cdcd */
-/* tt = -(tail of tf) */
-tt  =  6.6971006518e-09, /* 0x31e61c52 */
-t0  =  4.8383611441e-01, /* 0x3ef7b95e */
-t1  = -1.4758771658e-01, /* 0xbe17213c */
-t2  =  6.4624942839e-02, /* 0x3d845a15 */
-t3  = -3.2788541168e-02, /* 0xbd064d47 */
-t4  =  1.7970675603e-02, /* 0x3c93373d */
-t5  = -1.0314224288e-02, /* 0xbc28fcfe */
-t6  =  6.1005386524e-03, /* 0x3bc7e707 */
-t7  = -3.6845202558e-03, /* 0xbb7177fe */
-t8  =  2.2596477065e-03, /* 0x3b141699 */
-t9  = -1.4034647029e-03, /* 0xbab7f476 */
-t10 =  8.8108185446e-04, /* 0x3a66f867 */
-t11 = -5.3859531181e-04, /* 0xba0d3085 */
-t12 =  3.1563205994e-04, /* 0x39a57b6b */
-t13 = -3.1275415677e-04, /* 0xb9a3f927 */
-t14 =  3.3552918467e-04, /* 0x39afe9f7 */
-u0  = -7.7215664089e-02, /* 0xbd9e233f */
-u1  =  6.3282704353e-01, /* 0x3f2200f4 */
-u2  =  1.4549225569e+00, /* 0x3fba3ae7 */
-u3  =  9.7771751881e-01, /* 0x3f7a4bb2 */
-u4  =  2.2896373272e-01, /* 0x3e6a7578 */
-u5  =  1.3381091878e-02, /* 0x3c5b3c5e */
-v1  =  2.4559779167e+00, /* 0x401d2ebe */
-v2  =  2.1284897327e+00, /* 0x4008392d */
-v3  =  7.6928514242e-01, /* 0x3f44efdf */
-v4  =  1.0422264785e-01, /* 0x3dd572af */
-v5  =  3.2170924824e-03, /* 0x3b52d5db */
-s0  = -7.7215664089e-02, /* 0xbd9e233f */
-s1  =  2.1498242021e-01, /* 0x3e5c245a */
-s2  =  3.2577878237e-01, /* 0x3ea6cc7a */
-s3  =  1.4635047317e-01, /* 0x3e15dce6 */
-s4  =  2.6642270386e-02, /* 0x3cda40e4 */
-s5  =  1.8402845599e-03, /* 0x3af135b4 */
-s6  =  3.1947532989e-05, /* 0x3805ff67 */
-r1  =  1.3920053244e+00, /* 0x3fb22d3b */
-r2  =  7.2193557024e-01, /* 0x3f38d0c5 */
-r3  =  1.7193385959e-01, /* 0x3e300f6e */
-r4  =  1.8645919859e-02, /* 0x3c98bf54 */
-r5  =  7.7794247773e-04, /* 0x3a4beed6 */
-r6  =  7.3266842264e-06, /* 0x36f5d7bd */
-w0  =  4.1893854737e-01, /* 0x3ed67f1d */
-w1  =  8.3333335817e-02, /* 0x3daaaaab */
-w2  = -2.7777778450e-03, /* 0xbb360b61 */
-w3  =  7.9365057172e-04, /* 0x3a500cfd */
-w4  = -5.9518753551e-04, /* 0xba1c065c */
-w5  =  8.3633989561e-04, /* 0x3a5b3dd2 */
-w6  = -1.6309292987e-03; /* 0xbad5c4e8 */
+/*
+ * Domain y in [0x1p-27, 0.27], range ~[-3.4599e-10, 3.4590e-10]:
+ * |(lgamma(2 - y) + 0.5 * y) / y - a(y)| < 2**-31.4
+ */
+a0  =  7.72156641e-02, /* 0x3d9e233f */
+a1  =  3.22467119e-01, /* 0x3ea51a69 */
+a2  =  6.73484802e-02, /* 0x3d89ee00 */
+a3  =  2.06395667e-02, /* 0x3ca9144f */
+a4  =  6.98275631e-03, /* 0x3be4cf9b */
+a5  =  4.11768444e-03, /* 0x3b86eda4 */
+/*
+ * Domain x in [tc-0.24, tc+0.28], range ~[-5.6577e-10, 5.5677e-10]:
+ * |(lgamma(x) - tf) - t(x - tc)| < 2**-30.8.
+ */
+tc  =  1.46163213e+00, /* 0x3fbb16c3 */
+tf  = -1.21486291e-01, /* 0xbdf8cdce */
+t0  = -2.94064460e-11, /* 0xae0154b7 */
+t1  = -2.35939837e-08, /* 0xb2caabb8 */
+t2  =  4.83836412e-01, /* 0x3ef7b968 */
+t3  = -1.47586212e-01, /* 0xbe1720d7 */
+t4  =  6.46013096e-02, /* 0x3d844db1 */
+t5  = -3.28450352e-02, /* 0xbd068884 */
+t6  =  1.86483748e-02, /* 0x3c98c47a */
+t7  = -9.89206228e-03, /* 0xbc221251 */
+/*
+ * Domain y in [-0.1, 0.232], range ~[-8.4931e-10, 8.7794e-10]:
+ * |(lgamma(1 + y) + 0.5 * y) / y - u(y) / v(y)| < 2**-31.2
+ */
+u0  = -7.72156641e-02, /* 0xbd9e233f */
+u1  =  7.36789703e-01, /* 0x3f3c9e40 */
+u2  =  4.95649040e-01, /* 0x3efdc5b6 */
+v1  =  1.10958421e+00, /* 0x3f8e06db */
+v2  =  2.10598111e-01, /* 0x3e57a708 */
+v3  = -1.02995494e-02, /* 0xbc28bf71 */
+/*
+ * Domain x in (2, 3], range ~[-5.5189e-11, 5.2317e-11]:
+ * |(lgamma(y+2) - 0.5 * y) / y - s(y)/r(y)| < 2**-35.0
+ * with y = x - 2.
+ */
+s0 = -7.72156641e-02, /* 0xbd9e233f */
+s1 =  2.69987404e-01, /* 0x3e8a3bca */
+s2 =  1.42851010e-01, /* 0x3e124789 */
+s3 =  1.19389519e-02, /* 0x3c439b98 */
+r1 =  6.79650068e-01, /* 0x3f2dfd8c */
+r2 =  1.16058730e-01, /* 0x3dedb033 */
+r3 =  3.75673687e-03, /* 0x3b763396 */
+/*
+ * Domain z in [8, 0x1p24], range ~[-1.2640e-09, 1.2640e-09]:
+ * |lgamma(x) - (x - 0.5) * (log(x) - 1) - w(1/x)| < 2**-29.6.
+ */
+w0 =  4.18938547e-01, /* 0x3ed67f1d */
+w1 =  8.33332464e-02, /* 0x3daaaa9f */
+w2 = -2.76129087e-03; /* 0xbb34f6c6 */
 
-static const float zero=  0.0000000000e+00;
-
-	static float sin_pif(float x)
+static float
+sin_pif(float x)
 {
+	volatile float vz;
 	float y,z;
-	int n,ix;
+	int n;
 
-	GET_FLOAT_WORD(ix,x);
-	ix &= 0x7fffffff;
+	y = -x;
 
-	if(ix<0x3e800000) return __kernel_sindf(pi*x);
-	y = -x;		/* x is assume negative */
+	vz = y+0x1p23F;			/* depend on 0 <= y < 0x1p23 */
+	z = vz-0x1p23F;			/* rintf(y) for the above range */
+	if (z == y)
+	    return zero;
 
-    /*
-     * argument reduction, make sure inexact flag not raised if input
-     * is an integer
-     */
-	z = floorf(y);
-	if(z!=y) {				/* inexact anyway */
-	    y  *= (float)0.5;
-	    y   = (float)2.0*(y - floorf(y));	/* y = |x| mod 2.0 */
-	    n   = (int) (y*(float)4.0);
-	} else {
-            if(ix>=0x4b800000) {
-                y = zero; n = 0;                 /* y must be even */
-            } else {
-                if(ix<0x4b000000) z = y+two23;	/* exact */
-		GET_FLOAT_WORD(n,z);
-		n &= 1;
-                y  = n;
-                n<<= 2;
-            }
-        }
+	vz = y+0x1p21F;
+	GET_FLOAT_WORD(n,vz);		/* bits for rounded y (units 0.25) */
+	z = vz-0x1p21F;			/* y rounded to a multiple of 0.25 */
+	if (z > y) {
+	    z -= 0.25F;			/* adjust to round down */
+	    n--;
+	}
+	n &= 7;				/* octant of y mod 2 */
+	y = y - z + n * 0.25F;		/* y mod 2 */
+
 	switch (n) {
 	    case 0:   y =  __kernel_sindf(pi*y); break;
 	    case 1:
@@ -137,34 +122,38 @@
 float
 __ieee754_lgammaf_r(float x, int *signgamp)
 {
-	float t,y,z,nadj,p,p1,p2,p3,q,r,w;
+	float nadj,p,p1,p2,p3,q,r,t,w,y,z;
 	int32_t hx;
 	int i,ix;
 
 	GET_FLOAT_WORD(hx,x);
 
-    /* purge off +-inf, NaN, +-0, tiny and negative arguments */
+    /* purge +-Inf and NaNs */
 	*signgamp = 1;
 	ix = hx&0x7fffffff;
 	if(ix>=0x7f800000) return x*x;
-	if(ix==0) return one/zero;
-	if(ix<0x35000000) {	/* |x|<2**-21, return -log(|x|) */
-	    if(hx<0) {
-	        *signgamp = -1;
-	        return -__ieee754_logf(-x);
-	    } else return -__ieee754_logf(x);
+
+    /* purge +-0 and tiny arguments */
+	*signgamp = 1-2*((uint32_t)hx>>31);
+	if(ix<0x32000000) {		/* |x|<2**-27, return -log(|x|) */
+	    if(ix==0)
+	        return one/vzero;
+	    return -__ieee754_logf(fabsf(x));
 	}
+
+    /* purge negative integers and start evaluation for other x < 0 */
 	if(hx<0) {
-	    if(ix>=0x4b000000) 	/* |x|>=2**23, must be -integer */
-		return one/zero;
+	    *signgamp = 1;
+	    if(ix>=0x4b000000) 		/* |x|>=2**23, must be -integer */
+		return one/vzero;
 	    t = sin_pif(x);
-	    if(t==zero) return one/zero; /* -integer */
+	    if(t==zero) return one/vzero; /* -integer */
 	    nadj = __ieee754_logf(pi/fabsf(t*x));
 	    if(t<zero) *signgamp = -1;
 	    x = -x;
 	}
 
-    /* purge off 1 and 2 */
+    /* purge 1 and 2 */
 	if (ix==0x3f800000||ix==0x40000000) r = 0;
     /* for x < 2.0 */
 	else if(ix<0x40000000) {
@@ -175,55 +164,51 @@
 	  	else {y = x; i=2;}
 	    } else {
 	  	r = zero;
-	        if(ix>=0x3fdda618) {y=(float)2.0-x;i=0;} /* [1.7316,2] */
+	        if(ix>=0x3fdda618) {y=2-x;i=0;} /* [1.7316,2] */
 	        else if(ix>=0x3F9da620) {y=x-tc;i=1;} /* [1.23,1.73] */
 		else {y=x-one;i=2;}
 	    }
 	    switch(i) {
 	      case 0:
 		z = y*y;
-		p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10))));
-		p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11)))));
+		p1 = a0+z*(a2+z*a4);
+		p2 = z*(a1+z*(a3+z*a5));
 		p  = y*p1+p2;
-		r  += (p-(float)0.5*y); break;
+		r  += p-y/2; break;
 	      case 1:
-		z = y*y;
-		w = z*y;
-		p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12)));	/* parallel comp */
-		p2 = t1+w*(t4+w*(t7+w*(t10+w*t13)));
-		p3 = t2+w*(t5+w*(t8+w*(t11+w*t14)));
-		p  = z*p1-(tt-w*(p2+y*p3));
-		r += (tf + p); break;
+		p = t0+y*t1+y*y*(t2+y*(t3+y*(t4+y*(t5+y*(t6+y*t7)))));
+		r += tf + p; break;
 	      case 2:
-		p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5)))));
-		p2 = one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5))));
-		r += (-(float)0.5*y + p1/p2);
+		p1 = y*(u0+y*(u1+y*u2));
+		p2 = one+y*(v1+y*(v2+y*v3));
+		r += p1/p2-y/2;
 	    }
 	}
-	else if(ix<0x41000000) { 			/* x < 8.0 */
-	    i = (int)x;
-	    y = x-(float)i;
-	    p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6))))));
-	    q = one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))));
-	    r = half*y+p/q;
+    /* x < 8.0 */
+	else if(ix<0x41000000) {
+	    i = x;
+	    y = x-i;
+	    p = y*(s0+y*(s1+y*(s2+y*s3)));
+	    q = one+y*(r1+y*(r2+y*r3));
+	    r = y/2+p/q;
 	    z = one;	/* lgamma(1+s) = log(s) + lgamma(s) */
 	    switch(i) {
-	    case 7: z *= (y+(float)6.0);	/* FALLTHRU */
-	    case 6: z *= (y+(float)5.0);	/* FALLTHRU */
-	    case 5: z *= (y+(float)4.0);	/* FALLTHRU */
-	    case 4: z *= (y+(float)3.0);	/* FALLTHRU */
-	    case 3: z *= (y+(float)2.0);	/* FALLTHRU */
+	    case 7: z *= (y+6);		/* FALLTHRU */
+	    case 6: z *= (y+5);		/* FALLTHRU */
+	    case 5: z *= (y+4);		/* FALLTHRU */
+	    case 4: z *= (y+3);		/* FALLTHRU */
+	    case 3: z *= (y+2);		/* FALLTHRU */
 		    r += __ieee754_logf(z); break;
 	    }
-    /* 8.0 <= x < 2**58 */
-	} else if (ix < 0x5c800000) {
+    /* 8.0 <= x < 2**27 */
+	} else if (ix < 0x4d000000) {
 	    t = __ieee754_logf(x);
 	    z = one/x;
 	    y = z*z;
-	    w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6)))));
+	    w = w0+z*(w1+y*w2);
 	    r = (x-half)*(t-one)+w;
 	} else
-    /* 2**58 <= x <= inf */
+    /* 2**27 <= x <= inf */
 	    r =  x*(__ieee754_logf(x)-one);
 	if(hx<0) r = nadj - r;
 	return r;
diff --git a/libm/upstream-freebsd/lib/msun/src/e_lgammal.c b/libm/upstream-freebsd/lib/msun/src/e_lgammal.c
new file mode 100644
index 0000000..ebc2fc7
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/src/e_lgammal.c
@@ -0,0 +1,25 @@
+/* @(#)e_lgamma.c 1.3 95/01/18 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "math.h"
+#include "math_private.h"
+
+extern int signgam;
+
+long double
+lgammal(long double x)
+{
+	return lgammal_r(x,&signgam);
+}
diff --git a/libm/upstream-freebsd/lib/msun/src/e_pow.c b/libm/upstream-freebsd/lib/msun/src/e_pow.c
index 7607a4a..d54af9d 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_pow.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_pow.c
@@ -19,20 +19,20 @@
  *	1. Compute and return log2(x) in two pieces:
  *		log2(x) = w1 + w2,
  *	   where w1 has 53-24 = 29 bit trailing zeros.
- *	2. Perform y*log2(x) = n+y' by simulating muti-precision 
+ *	2. Perform y*log2(x) = n+y' by simulating multi-precision 
  *	   arithmetic, where |y'|<=0.5.
  *	3. Return x**y = 2**n*exp(y'*log2)
  *
  * Special cases:
  *	1.  (anything) ** 0  is 1
  *	2.  (anything) ** 1  is itself
- *	3.  (anything) ** NAN is NAN
+ *	3.  (anything) ** NAN is NAN except 1 ** NAN = 1
  *	4.  NAN ** (anything except 0) is NAN
  *	5.  +-(|x| > 1) **  +INF is +INF
  *	6.  +-(|x| > 1) **  -INF is +0
  *	7.  +-(|x| < 1) **  +INF is +0
  *	8.  +-(|x| < 1) **  -INF is +INF
- *	9.  +-1         ** +-INF is NAN
+ *	9.  +-1         ** +-INF is 1
  *	10. +0 ** (+anything except 0, NAN)               is +0
  *	11. -0 ** (+anything except 0, NAN, odd integer)  is +0
  *	12. +0 ** (-anything except 0, NAN)               is +INF
@@ -141,7 +141,7 @@
 	if(ly==0) { 	
 	    if (iy==0x7ff00000) {	/* y is +-inf */
 	        if(((ix-0x3ff00000)|lx)==0)
-		    return  one;	/* (-1)**+-inf is NaN */
+		    return  one;	/* (-1)**+-inf is 1 */
 	        else if (ix >= 0x3ff00000)/* (|x|>1)**+-inf = inf,0 */
 		    return (hy>=0)? y: zero;
 	        else			/* (|x|<1)**-,+inf = inf,0 */
diff --git a/libm/upstream-freebsd/lib/msun/src/e_sinh.c b/libm/upstream-freebsd/lib/msun/src/e_sinh.c
index 17442d0..6c01f4a 100644
--- a/libm/upstream-freebsd/lib/msun/src/e_sinh.c
+++ b/libm/upstream-freebsd/lib/msun/src/e_sinh.c
@@ -32,6 +32,8 @@
  *	only sinh(0)=0 is exact for finite x.
  */
 
+#include <float.h>
+
 #include "math.h"
 #include "math_private.h"
 
@@ -71,3 +73,7 @@
     /* |x| > overflowthresold, sinh(x) overflow */
 	return x*shuge;
 }
+
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(sinh, sinhl);
+#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/e_sinhl.c b/libm/upstream-freebsd/lib/msun/src/e_sinhl.c
new file mode 100644
index 0000000..ce7e333
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/src/e_sinhl.c
@@ -0,0 +1,131 @@
+/* from: FreeBSD: head/lib/msun/src/e_sinhl.c XXX */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * See e_sinh.c for complete comments.
+ *
+ * Converted to long double by Bruce D. Evans.
+ */
+
+#include <float.h>
+#ifdef __i386__
+#include <ieeefp.h>
+#endif
+
+#include "fpmath.h"
+#include "math.h"
+#include "math_private.h"
+#include "k_expl.h"
+
+#if LDBL_MAX_EXP != 0x4000
+/* We also require the usual expsign encoding. */
+#error "Unsupported long double format"
+#endif
+
+#define	BIAS	(LDBL_MAX_EXP - 1)
+
+static const long double shuge = 0x1p16383L;
+#if LDBL_MANT_DIG == 64
+/*
+ * Domain [-1, 1], range ~[-6.6749e-22, 6.6749e-22]:
+ * |sinh(x)/x - s(x)| < 2**-70.3
+ */
+static const union IEEEl2bits
+S3u = LD80C(0xaaaaaaaaaaaaaaaa, -3,  1.66666666666666666658e-1L);
+#define	S3	S3u.e
+static const double
+S5  =  8.3333333333333332e-3,		/*  0x11111111111111.0p-59 */
+S7  =  1.9841269841270074e-4,		/*  0x1a01a01a01a070.0p-65 */
+S9  =  2.7557319223873889e-6,		/*  0x171de3a5565fe6.0p-71 */
+S11 =  2.5052108406704084e-8,		/*  0x1ae6456857530f.0p-78 */
+S13 =  1.6059042748655297e-10,		/*  0x161245fa910697.0p-85 */
+S15 =  7.6470006914396920e-13,		/*  0x1ae7ce4eff2792.0p-93 */
+S17 =  2.8346142308424267e-15;		/*  0x19882ce789ffc6.0p-101 */
+#elif LDBL_MANT_DIG == 113
+/*
+ * Domain [-1, 1], range ~[-2.9673e-36, 2.9673e-36]:
+ * |sinh(x)/x - s(x)| < 2**-118.0
+ */
+static const long double
+S3  =  1.66666666666666666666666666666666033e-1L,	/*  0x1555555555555555555555555553b.0p-115L */
+S5  =  8.33333333333333333333333333337643193e-3L,	/*  0x111111111111111111111111180f5.0p-119L */
+S7  =  1.98412698412698412698412697391263199e-4L,	/*  0x1a01a01a01a01a01a01a0176aad11.0p-125L */
+S9  =  2.75573192239858906525574406205464218e-6L,	/*  0x171de3a556c7338faac243aaa9592.0p-131L */
+S11 =  2.50521083854417187749675637460977997e-8L,	/*  0x1ae64567f544e38fe59b3380d7413.0p-138L */
+S13 =  1.60590438368216146368737762431552702e-10L,	/*  0x16124613a86d098059c7620850fc2.0p-145L */
+S15 =  7.64716373181980539786802470969096440e-13L,	/*  0x1ae7f3e733b814193af09ce723043.0p-153L */
+S17 =  2.81145725434775409870584280722701574e-15L;	/*  0x1952c77030c36898c3fd0b6dfc562.0p-161L */
+static const double
+S19=  8.2206352435411005e-18,		/*  0x12f49b4662b86d.0p-109 */
+S21=  1.9572943931418891e-20,		/*  0x171b8f2fab9628.0p-118 */
+S23 =  3.8679983530666939e-23,		/*  0x17617002b73afc.0p-127 */
+S25 =  6.5067867911512749e-26;		/*  0x1423352626048a.0p-136 */
+#else
+#error "Unsupported long double format"
+#endif /* LDBL_MANT_DIG == 64 */
+
+/* log(2**16385 - 0.5) rounded up: */
+static const float
+o_threshold =  1.13572168e4;		/*  0xb174de.0p-10 */
+
+long double
+sinhl(long double x)
+{
+	long double hi,lo,x2,x4;
+	double dx2,s;
+	int16_t ix,jx;
+
+	GET_LDBL_EXPSIGN(jx,x);
+	ix = jx&0x7fff;
+
+    /* x is INF or NaN */
+	if(ix>=0x7fff) return x+x;
+
+	ENTERI();
+
+	s = 1;
+	if (jx<0) s = -1;
+
+    /* |x| < 64, return x, s(x), or accurate s*(exp(|x|)/2-1/exp(|x|)/2) */
+	if (ix<0x4005) {		/* |x|<64 */
+	    if (ix<BIAS-(LDBL_MANT_DIG+1)/2) 	/* |x|<TINY */
+		if(shuge+x>1) RETURNI(x);  /* sinh(tiny) = tiny with inexact */
+	    if (ix<0x3fff) {		/* |x|<1 */
+		x2 = x*x;
+#if LDBL_MANT_DIG == 64
+		x4 = x2*x2;
+		RETURNI(((S17*x2 + S15)*x4 + (S13*x2 + S11))*(x2*x*x4*x4) +
+		    ((S9*x2 + S7)*x2 + S5)*(x2*x*x2) + S3*(x2*x) + x);
+#elif LDBL_MANT_DIG == 113
+		dx2 = x2;
+		RETURNI(((((((((((S25*dx2 + S23)*dx2 +
+		    S21)*x2 + S19)*x2 +
+		    S17)*x2 + S15)*x2 + S13)*x2 + S11)*x2 + S9)*x2 + S7)*x2 +
+		    S5)* (x2*x*x2) +
+		    S3*(x2*x) + x);
+#endif
+	    }
+	    k_hexpl(fabsl(x), &hi, &lo);
+	    RETURNI(s*(lo - 0.25/(hi + lo) + hi));
+	}
+
+    /* |x| in [64, o_threshold], return correctly-overflowing s*exp(|x|)/2 */
+	if (fabsl(x) <= o_threshold)
+	    RETURNI(s*hexpl(fabsl(x)));
+
+    /* |x| > o_threshold, sinh(x) overflow */
+	return x*shuge;
+}
diff --git a/libm/upstream-freebsd/lib/msun/src/fenv-softfloat.h b/libm/upstream-freebsd/lib/msun/src/fenv-softfloat.h
deleted file mode 100644
index 02d2a2c..0000000
--- a/libm/upstream-freebsd/lib/msun/src/fenv-softfloat.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*-
- * Copyright (c) 2004-2011 David Schultz <das@FreeBSD.ORG>
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef	_FENV_H_
-#error "This file is meant to be included only by <fenv.h>."
-#endif
-
-/*
- * This file implements the functionality of <fenv.h> on platforms that
- * lack an FPU and use softfloat in libc for floating point.  To use it,
- * you must write an <fenv.h> that provides the following:
- *
- *   - a typedef for fenv_t, which may be an integer or struct type
- *   - a typedef for fexcept_t (XXX This file assumes fexcept_t is a
- *     simple integer type containing the exception mask.)
- *   - definitions of FE_* constants for the five exceptions and four
- *     rounding modes in IEEE 754, as described in fenv(3)
- *   - a definition, and the corresponding external symbol, for FE_DFL_ENV
- *   - a macro __set_env(env, flags, mask, rnd), which sets the given fenv_t
- *     from the exception flags, mask, and rounding mode
- *   - macros __env_flags(env), __env_mask(env), and __env_round(env), which
- *     extract fields from an fenv_t
- *   - a definition of __fenv_static
- *
- * If the architecture supports an optional FPU, it's recommended that you
- * define fenv_t and fexcept_t to match the hardware ABI.  Otherwise, it
- * doesn't matter how you define them.
- */
-
-extern int __softfloat_float_exception_flags;
-extern int __softfloat_float_exception_mask;
-extern int __softfloat_float_rounding_mode;
-void __softfloat_float_raise(int);
-
-__fenv_static inline int
-feclearexcept(int __excepts)
-{
-
-	__softfloat_float_exception_flags &= ~__excepts;
-	return (0);
-}
-
-__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
-{
-
-	*__flagp = __softfloat_float_exception_flags & __excepts;
-	return (0);
-}
-
-__fenv_static inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
-{
-
-	__softfloat_float_exception_flags &= ~__excepts;
-	__softfloat_float_exception_flags |= *__flagp & __excepts;
-	return (0);
-}
-
-__fenv_static inline int
-feraiseexcept(int __excepts)
-{
-
-	__softfloat_float_raise(__excepts);
-	return (0);
-}
-
-__fenv_static inline int
-fetestexcept(int __excepts)
-{
-
-	return (__softfloat_float_exception_flags & __excepts);
-}
-
-__fenv_static inline int
-fegetround(void)
-{
-
-	return (__softfloat_float_rounding_mode);
-}
-
-__fenv_static inline int
-fesetround(int __round)
-{
-
-	__softfloat_float_rounding_mode = __round;
-	return (0);
-}
-
-__fenv_static inline int
-fegetenv(fenv_t *__envp)
-{
-
-	__set_env(*__envp, __softfloat_float_exception_flags,
-	    __softfloat_float_exception_mask, __softfloat_float_rounding_mode);
-	return (0);
-}
-
-__fenv_static inline int
-feholdexcept(fenv_t *__envp)
-{
-	fenv_t __env;
-
-	fegetenv(__envp);
-	__softfloat_float_exception_flags = 0;
-	__softfloat_float_exception_mask = 0;
-	return (0);
-}
-
-__fenv_static inline int
-fesetenv(const fenv_t *__envp)
-{
-
-	__softfloat_float_exception_flags = __env_flags(*__envp);
-	__softfloat_float_exception_mask = __env_mask(*__envp);
-	__softfloat_float_rounding_mode = __env_round(*__envp);
-	return (0);
-}
-
-__fenv_static inline int
-feupdateenv(const fenv_t *__envp)
-{
-	int __oflags = __softfloat_float_exception_flags;
-
-	fesetenv(__envp);
-	feraiseexcept(__oflags);
-	return (0);
-}
-
-#if __BSD_VISIBLE
-
-/* We currently provide no external definitions of the functions below. */
-
-static inline int
-feenableexcept(int __mask)
-{
-	int __omask = __softfloat_float_exception_mask;
-
-	__softfloat_float_exception_mask |= __mask;
-	return (__omask);
-}
-
-static inline int
-fedisableexcept(int __mask)
-{
-	int __omask = __softfloat_float_exception_mask;
-
-	__softfloat_float_exception_mask &= ~__mask;
-	return (__omask);
-}
-
-static inline int
-fegetexcept(void)
-{
-
-	return (__softfloat_float_exception_mask);
-}
-
-#endif /* __BSD_VISIBLE */
diff --git a/libm/upstream-freebsd/lib/msun/src/imprecise.c b/libm/upstream-freebsd/lib/msun/src/imprecise.c
index a7503bf..08cd239 100644
--- a/libm/upstream-freebsd/lib/msun/src/imprecise.c
+++ b/libm/upstream-freebsd/lib/msun/src/imprecise.c
@@ -60,10 +60,4 @@
 	long double imprecise_ ## f ## l(long double v) { return f(v); }\
 	DECLARE_WEAK(f ## l)
 
-DECLARE_IMPRECISE(cosh);
-DECLARE_IMPRECISE(erfc);
-DECLARE_IMPRECISE(erf);
-DECLARE_IMPRECISE(lgamma);
-DECLARE_IMPRECISE(sinh);
-DECLARE_IMPRECISE(tanh);
 DECLARE_IMPRECISE(tgamma);
diff --git a/libm/upstream-freebsd/lib/msun/src/s_erf.c b/libm/upstream-freebsd/lib/msun/src/s_erf.c
index 0886e5e..e1d63bc 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_erf.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_erf.c
@@ -111,18 +111,25 @@
 #include "math.h"
 #include "math_private.h"
 
+/* XXX Prevent compilers from erroneously constant folding: */
+static const volatile double tiny= 1e-300;
+
 static const double
-tiny	    = 1e-300,
-half=  5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
-one =  1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
-two =  2.00000000000000000000e+00, /* 0x40000000, 0x00000000 */
-	/* c = (float)0.84506291151 */
+half= 0.5,
+one = 1,
+two = 2,
+/* c = (float)0.84506291151 */
 erx =  8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */
 /*
- * Coefficients for approximation to  erf on [0,0.84375]
+ * In the domain [0, 2**-28], only the first term in the power series
+ * expansion of erf(x) is used.  The magnitude of the first neglected
+ * terms is less than 2**-84.
  */
 efx =  1.28379167095512586316e-01, /* 0x3FC06EBA, 0x8214DB69 */
 efx8=  1.02703333676410069053e+00, /* 0x3FF06EBA, 0x8214DB69 */
+/*
+ * Coefficients for approximation to erf on [0,0.84375]
+ */
 pp0  =  1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */
 pp1  = -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */
 pp2  = -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */
@@ -134,7 +141,7 @@
 qq4  =  1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */
 qq5  = -3.96022827877536812320e-06, /* 0xBED09C43, 0x42A26120 */
 /*
- * Coefficients for approximation to  erf  in [0.84375,1.25]
+ * Coefficients for approximation to erf in [0.84375,1.25]
  */
 pa0  = -2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */
 pa1  =  4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */
@@ -150,7 +157,7 @@
 qa5  =  1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */
 qa6  =  1.19844998467991074170e-02, /* 0x3F888B54, 0x5735151D */
 /*
- * Coefficients for approximation to  erfc in [1.25,1/0.35]
+ * Coefficients for approximation to erfc in [1.25,1/0.35]
  */
 ra0  = -9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */
 ra1  = -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */
@@ -169,7 +176,7 @@
 sa7  =  6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */
 sa8  = -6.04244152148580987438e-02, /* 0xBFAEEFF2, 0xEE749A62 */
 /*
- * Coefficients for approximation to  erfc in [1/.35,28]
+ * Coefficients for approximation to erfc in [1/.35,28]
  */
 rb0  = -9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */
 rb1  = -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */
@@ -201,7 +208,7 @@
 	if(ix < 0x3feb0000) {		/* |x|<0.84375 */
 	    if(ix < 0x3e300000) { 	/* |x|<2**-28 */
 	        if (ix < 0x00800000)
-		    return 0.125*(8.0*x+efx8*x);  /*avoid underflow */
+		    return (8*x+efx8*x)/8;	/* avoid spurious underflow */
 		return x + efx*x;
 	    }
 	    z = x*x;
@@ -222,15 +229,12 @@
 	x = fabs(x);
  	s = one/(x*x);
 	if(ix< 0x4006DB6E) {	/* |x| < 1/0.35 */
-	    R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
-				ra5+s*(ra6+s*ra7))))));
-	    S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
-				sa5+s*(sa6+s*(sa7+s*sa8)))))));
+	    R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*ra7))))));
+	    S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+
+		s*sa8)))))));
 	} else {	/* |x| >= 1/0.35 */
-	    R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
-				rb5+s*rb6)))));
-	    S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
-				sb5+s*(sb6+s*sb7))))));
+	    R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*rb6)))));
+	    S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*sb7))))));
 	}
 	z  = x;
 	SET_LOW_WORD(z,0);
@@ -238,6 +242,10 @@
 	if(hx>=0) return one-r/x; else return  r/x-one;
 }
 
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(erf, erfl);
+#endif
+
 double
 erfc(double x)
 {
@@ -279,23 +287,23 @@
 	    x = fabs(x);
  	    s = one/(x*x);
 	    if(ix< 0x4006DB6D) {	/* |x| < 1/.35 ~ 2.857143*/
-	        R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
-				ra5+s*(ra6+s*ra7))))));
-	        S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
-				sa5+s*(sa6+s*(sa7+s*sa8)))))));
+		R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*ra7))))));
+		S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+
+		    s*sa8)))))));
 	    } else {			/* |x| >= 1/.35 ~ 2.857143 */
 		if(hx<0&&ix>=0x40180000) return two-tiny;/* x < -6 */
-	        R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
-				rb5+s*rb6)))));
-	        S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
-				sb5+s*(sb6+s*sb7))))));
+		R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*rb6)))));
+		S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*sb7))))));
 	    }
 	    z  = x;
 	    SET_LOW_WORD(z,0);
-	    r  =  __ieee754_exp(-z*z-0.5625)*
-			__ieee754_exp((z-x)*(z+x)+R/S);
+	    r  =  __ieee754_exp(-z*z-0.5625)*__ieee754_exp((z-x)*(z+x)+R/S);
 	    if(hx>0) return r/x; else return two-r/x;
 	} else {
 	    if(hx>0) return tiny*tiny; else return two-tiny;
 	}
 }
+
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(erfc, erfcl);
+#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/s_erff.c b/libm/upstream-freebsd/lib/msun/src/s_erff.c
index a3579f1..d6cfbd2 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_erff.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_erff.c
@@ -19,64 +19,63 @@
 #include "math.h"
 #include "math_private.h"
 
+/* XXX Prevent compilers from erroneously constant folding: */
+static const volatile float tiny = 1e-30;
+
 static const float
-tiny	    = 1e-30,
-half=  5.0000000000e-01, /* 0x3F000000 */
-one =  1.0000000000e+00, /* 0x3F800000 */
-two =  2.0000000000e+00, /* 0x40000000 */
+half= 0.5,
+one = 1,
+two = 2,
+erx = 8.42697144e-01,			/* 0x3f57bb00 */
 /*
- * Coefficients for approximation to  erf on [0,0.84375]
+ * In the domain [0, 2**-14], only the first term in the power series
+ * expansion of erf(x) is used.  The magnitude of the first neglected
+ * terms is less than 2**-42.
  */
-efx =  1.2837916613e-01, /* 0x3e0375d4 */
-efx8=  1.0270333290e+00, /* 0x3f8375d4 */
+efx = 1.28379166e-01, /* 0x3e0375d4 */
+efx8= 1.02703333e+00, /* 0x3f8375d4 */
 /*
- *  Domain [0, 0.84375], range ~[-5.4446e-10,5.5197e-10]:
- *  |(erf(x) - x)/x - p(x)/q(x)| < 2**-31.
+ * Domain [0, 0.84375], range ~[-5.4419e-10, 5.5179e-10]:
+ * |(erf(x) - x)/x - pp(x)/qq(x)| < 2**-31
  */
-pp0  =  1.28379166e-01F, /*  0x1.06eba8p-3 */
-pp1  = -3.36030394e-01F, /* -0x1.58185ap-2 */
-pp2  = -1.86260219e-03F, /* -0x1.e8451ep-10 */
-qq1  =  3.12324286e-01F, /*  0x1.3fd1f0p-2 */
-qq2  =  2.16070302e-02F, /*  0x1.620274p-6 */
-qq3  = -1.98859419e-03F, /* -0x1.04a626p-9 */
+pp0  =  1.28379166e-01, /* 0x3e0375d4 */
+pp1  = -3.36030394e-01, /* 0xbeac0c2d */
+pp2  = -1.86261395e-03, /* 0xbaf422f4 */
+qq1  =  3.12324315e-01, /* 0x3e9fe8f9 */
+qq2  =  2.16070414e-02, /* 0x3cb10140 */
+qq3  = -1.98859372e-03, /* 0xbb025311 */
 /*
- * Domain [0.84375, 1.25], range ~[-1.953e-11,1.940e-11]:
- * |(erf(x) - erx) - p(x)/q(x)| < 2**-36.
+ * Domain [0.84375, 1.25], range ~[-1.023e-9, 1.023e-9]:
+ * |(erf(x) - erx) - pa(x)/qa(x)| < 2**-31
  */
-erx  =  8.42697144e-01F, /*  0x1.af7600p-1.  erf(1) rounded to 16 bits. */
-pa0  =  3.64939137e-06F, /*  0x1.e9d022p-19 */
-pa1  =  4.15109694e-01F, /*  0x1.a91284p-2 */
-pa2  = -1.65179938e-01F, /* -0x1.5249dcp-3 */
-pa3  =  1.10914491e-01F, /*  0x1.c64e46p-4 */
-qa1  =  6.02074385e-01F, /*  0x1.344318p-1 */
-qa2  =  5.35934687e-01F, /*  0x1.126608p-1 */
-qa3  =  1.68576106e-01F, /*  0x1.593e6ep-3 */
-qa4  =  5.62181212e-02F, /*  0x1.cc89f2p-5 */
+pa0  =  3.65041046e-06, /* 0x3674f993 */
+pa1  =  4.15109307e-01, /* 0x3ed48935 */
+pa2  = -2.09395722e-01, /* 0xbe566bd5 */
+pa3  =  8.67677554e-02, /* 0x3db1b34b */
+qa1  =  4.95560974e-01, /* 0x3efdba2b */
+qa2  =  3.71248513e-01, /* 0x3ebe1449 */
+qa3  =  3.92478965e-02, /* 0x3d20c267 */
 /*
- * Domain [1.25,1/0.35], range ~[-7.043e-10,7.457e-10]:
- * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-30
+ * Domain [1.25,1/0.35], range ~[-4.821e-9, 4.927e-9]:
+ * |log(x*erfc(x)) + x**2 + 0.5625 - ra(x)/sa(x)| < 2**-28
  */
-ra0  = -9.87132732e-03F, /* -0x1.4376b2p-7 */
-ra1  = -5.53605914e-01F, /* -0x1.1b723cp-1 */
-ra2  = -2.17589188e+00F, /* -0x1.1683a0p+1 */
-ra3  = -1.43268085e+00F, /* -0x1.6ec42cp+0 */
-sa1  =  5.45995426e+00F, /*  0x1.5d6fe4p+2 */
-sa2  =  6.69798088e+00F, /*  0x1.acabb8p+2 */
-sa3  =  1.43113089e+00F, /*  0x1.6e5e98p+0 */
-sa4  = -5.77397496e-02F, /* -0x1.d90108p-5 */
+ra0  = -9.88156721e-03, /* 0xbc21e64c */
+ra1  = -5.43658376e-01, /* 0xbf0b2d32 */
+ra2  = -1.66828310e+00, /* 0xbfd58a4d */
+ra3  = -6.91554189e-01, /* 0xbf3109b2 */
+sa1  =  4.48581553e+00, /* 0x408f8bcd */
+sa2  =  4.10799170e+00, /* 0x408374ab */
+sa3  =  5.53855181e-01, /* 0x3f0dc974 */
 /*
- * Domain [1/0.35, 11], range ~[-2.264e-13,2.336e-13]:
- * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-42
+ * Domain [2.85715, 11], range ~[-1.484e-9, 1.505e-9]:
+ * |log(x*erfc(x)) + x**2 + 0.5625 - rb(x)/sb(x)| < 2**-30
  */
-rb0  = -9.86494310e-03F, /* -0x1.434124p-7 */
-rb1  = -6.25171244e-01F, /* -0x1.401672p-1 */
-rb2  = -6.16498327e+00F, /* -0x1.8a8f16p+2 */
-rb3  = -1.66696873e+01F, /* -0x1.0ab70ap+4 */
-rb4  = -9.53764343e+00F, /* -0x1.313460p+3 */
-sb1  =  1.26884899e+01F, /*  0x1.96081cp+3 */
-sb2  =  4.51839523e+01F, /*  0x1.6978bcp+5 */
-sb3  =  4.72810211e+01F, /*  0x1.7a3f88p+5 */
-sb4  =  8.93033314e+00F; /*  0x1.1dc54ap+3 */
+rb0  = -9.86496918e-03, /* 0xbc21a0ae */
+rb1  = -5.48049808e-01, /* 0xbf0c4cfe */
+rb2  = -1.84115684e+00, /* 0xbfebab07 */
+sb1  =  4.87132740e+00, /* 0x409be1ea */
+sb2  =  3.04982710e+00, /* 0x4043305e */
+sb3  = -7.61900663e-01; /* 0xbf430bec */
 
 float
 erff(float x)
@@ -85,9 +84,9 @@
 	float R,S,P,Q,s,y,z,r;
 	GET_FLOAT_WORD(hx,x);
 	ix = hx&0x7fffffff;
-	if(ix>=0x7f800000) {		/* erf(nan)=nan */
+	if(ix>=0x7f800000) {		/* erff(nan)=nan */
 	    i = ((u_int32_t)hx>>31)<<1;
-	    return (float)(1-i)+one/x;	/* erf(+-inf)=+-1 */
+	    return (float)(1-i)+one/x;	/* erff(+-inf)=+-1 */
 	}
 
 	if(ix < 0x3f580000) {		/* |x|<0.84375 */
@@ -105,7 +104,7 @@
 	if(ix < 0x3fa00000) {		/* 0.84375 <= |x| < 1.25 */
 	    s = fabsf(x)-one;
 	    P = pa0+s*(pa1+s*(pa2+s*pa3));
-	    Q = one+s*(qa1+s*(qa2+s*(qa3+s*qa4)));
+	    Q = one+s*(qa1+s*(qa2+s*qa3));
 	    if(hx>=0) return erx + P/Q; else return -erx - P/Q;
 	}
 	if (ix >= 0x40800000) {		/* inf>|x|>=4 */
@@ -113,12 +112,12 @@
 	}
 	x = fabsf(x);
  	s = one/(x*x);
-	if(ix< 0x4036DB6E) {	/* |x| < 1/0.35 */
+	if(ix< 0x4036db8c) {	/* |x| < 2.85715 ~ 1/0.35 */
 	    R=ra0+s*(ra1+s*(ra2+s*ra3));
-	    S=one+s*(sa1+s*(sa2+s*(sa3+s*sa4)));
-	} else {	/* |x| >= 1/0.35 */
-	    R=rb0+s*(rb1+s*(rb2+s*(rb3+s*rb4)));
-	    S=one+s*(sb1+s*(sb2+s*(sb3+s*sb4)));
+	    S=one+s*(sa1+s*(sa2+s*sa3));
+	} else {	/* |x| >= 2.85715 ~ 1/0.35 */
+	    R=rb0+s*(rb1+s*rb2);
+	    S=one+s*(sb1+s*(sb2+s*sb3));
 	}
 	SET_FLOAT_WORD(z,hx&0xffffe000);
 	r  = expf(-z*z-0.5625F)*expf((z-x)*(z+x)+R/S);
@@ -132,8 +131,8 @@
 	float R,S,P,Q,s,y,z,r;
 	GET_FLOAT_WORD(hx,x);
 	ix = hx&0x7fffffff;
-	if(ix>=0x7f800000) {			/* erfc(nan)=nan */
-						/* erfc(+-inf)=0,2 */
+	if(ix>=0x7f800000) {			/* erfcf(nan)=nan */
+						/* erfcf(+-inf)=0,2 */
 	    return (float)(((u_int32_t)hx>>31)<<1)+one/x;
 	}
 
@@ -155,7 +154,7 @@
 	if(ix < 0x3fa00000) {		/* 0.84375 <= |x| < 1.25 */
 	    s = fabsf(x)-one;
 	    P = pa0+s*(pa1+s*(pa2+s*pa3));
-	    Q = one+s*(qa1+s*(qa2+s*(qa3+s*qa4)));
+	    Q = one+s*(qa1+s*(qa2+s*qa3));
 	    if(hx>=0) {
 	        z  = one-erx; return z - P/Q;
 	    } else {
@@ -165,13 +164,13 @@
 	if (ix < 0x41300000) {		/* |x|<11 */
 	    x = fabsf(x);
  	    s = one/(x*x);
-	    if(ix< 0x4036DB6D) {	/* |x| < 1/.35 ~ 2.857143*/
-	        R=ra0+s*(ra1+s*(ra2+s*ra3));
-	        S=one+s*(sa1+s*(sa2+s*(sa3+s*sa4)));
-	    } else {			/* |x| >= 1/.35 ~ 2.857143 */
+	    if(ix< 0x4036db8c) {	/* |x| < 2.85715 ~ 1/.35 */
+		R=ra0+s*(ra1+s*(ra2+s*ra3));
+		S=one+s*(sa1+s*(sa2+s*sa3));
+	    } else {			/* |x| >= 2.85715 ~ 1/.35 */
 		if(hx<0&&ix>=0x40a00000) return two-tiny;/* x < -5 */
-	        R=rb0+s*(rb1+s*(rb2+s*(rb3+s*rb4)));
-		S=one+s*(sb1+s*(sb2+s*(sb3+s*sb4)));
+		R=rb0+s*(rb1+s*rb2);
+		S=one+s*(sb1+s*(sb2+s*sb3));
 	    }
 	    SET_FLOAT_WORD(z,hx&0xffffe000);
 	    r  = expf(-z*z-0.5625F)*expf((z-x)*(z+x)+R/S);
diff --git a/libm/upstream-freebsd/lib/msun/src/s_remquol.c b/libm/upstream-freebsd/lib/msun/src/s_remquol.c
index 8899293..712651c 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_remquol.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_remquol.c
@@ -5,7 +5,7 @@
  *
  * Developed at SunSoft, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice 
  * is preserved.
  * ====================================================
  */
diff --git a/libm/upstream-freebsd/lib/msun/src/s_rintl.c b/libm/upstream-freebsd/lib/msun/src/s_rintl.c
index e55b40e..b43df89 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_rintl.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_rintl.c
@@ -29,7 +29,6 @@
 
 #include <float.h>
 #include <math.h>
-#include <stdint.h>
 
 #include "fpmath.h"
 
diff --git a/libm/upstream-freebsd/lib/msun/src/s_round.c b/libm/upstream-freebsd/lib/msun/src/s_round.c
index 65de31b..fab3019 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_round.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_round.c
@@ -27,25 +27,34 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-#include <math.h>
+#include <float.h>
+
+#include "math.h"
+#include "math_private.h"
 
 double
 round(double x)
 {
 	double t;
+	uint32_t hx;
 
-	if (!isfinite(x))
-		return (x);
+	GET_HIGH_WORD(hx, x);
+	if ((hx & 0x7fffffff) == 0x7ff00000)
+		return (x + x);
 
-	if (x >= 0.0) {
+	if (!(hx & 0x80000000)) {
 		t = floor(x);
 		if (t - x <= -0.5)
-			t += 1.0;
+			t += 1;
 		return (t);
 	} else {
 		t = floor(-x);
 		if (t + x <= -0.5)
-			t += 1.0;
+			t += 1;
 		return (-t);
 	}
 }
+
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(round, roundl);
+#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/s_roundf.c b/libm/upstream-freebsd/lib/msun/src/s_roundf.c
index 952e8e7..e7e2eb9 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_roundf.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_roundf.c
@@ -27,25 +27,28 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-#include <math.h>
+#include "math.h"
+#include "math_private.h"
 
 float
 roundf(float x)
 {
 	float t;
+	uint32_t hx;
 
-	if (!isfinite(x))
-		return (x);
+	GET_FLOAT_WORD(hx, x);
+	if ((hx & 0x7fffffff) == 0x7f800000)
+		return (x + x);
 
-	if (x >= 0.0) {
+	if (!(hx & 0x80000000)) {
 		t = floorf(x);
-		if (t - x <= -0.5)
-			t += 1.0;
+		if (t - x <= -0.5F)
+			t += 1;
 		return (t);
 	} else {
 		t = floorf(-x);
-		if (t + x <= -0.5)
-			t += 1.0;
+		if (t + x <= -0.5F)
+			t += 1;
 		return (-t);
 	}
 }
diff --git a/libm/upstream-freebsd/lib/msun/src/s_roundl.c b/libm/upstream-freebsd/lib/msun/src/s_roundl.c
index a70b617..2d15e13 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_roundl.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_roundl.c
@@ -27,25 +27,36 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-#include <math.h>
+#include <float.h>
+#ifdef __i386__
+#include <ieeefp.h>
+#endif
+
+#include "fpmath.h"
+#include "math.h"
+#include "math_private.h"
 
 long double
 roundl(long double x)
 {
 	long double t;
+	uint16_t hx;
 
-	if (!isfinite(x))
-		return (x);
+	GET_LDBL_EXPSIGN(hx, x);
+	if ((hx & 0x7fff) == 0x7fff)
+		return (x + x);
 
-	if (x >= 0.0) {
+	ENTERI();
+
+	if (!(hx & 0x8000)) {
 		t = floorl(x);
-		if (t - x <= -0.5)
-			t += 1.0;
-		return (t);
+		if (t - x <= -0.5L)
+			t += 1;
+		RETURNI(t);
 	} else {
 		t = floorl(-x);
-		if (t + x <= -0.5)
-			t += 1.0;
-		return (-t);
+		if (t + x <= -0.5L)
+			t += 1;
+		RETURNI(-t);
 	}
 }
diff --git a/libm/upstream-freebsd/lib/msun/src/s_tanh.c b/libm/upstream-freebsd/lib/msun/src/s_tanh.c
index 96e3565..6d26c69 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_tanh.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_tanh.c
@@ -37,10 +37,13 @@
  *	only tanh(0)=0 is exact for finite argument.
  */
 
+#include <float.h>
+
 #include "math.h"
 #include "math_private.h"
 
-static const double one = 1.0, two = 2.0, tiny = 1.0e-300, huge = 1.0e300;
+static const volatile double tiny = 1.0e-300;
+static const double one = 1.0, two = 2.0, huge = 1.0e300;
 
 double
 tanh(double x)
@@ -75,3 +78,7 @@
 	}
 	return (jx>=0)? z: -z;
 }
+
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(tanh, tanhl);
+#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/s_tanhf.c b/libm/upstream-freebsd/lib/msun/src/s_tanhf.c
index 04f09c6..f537be4 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_tanhf.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_tanhf.c
@@ -19,7 +19,9 @@
 #include "math.h"
 #include "math_private.h"
 
-static const float one=1.0, two=2.0, tiny = 1.0e-30, huge = 1.0e30;
+static const volatile float tiny = 1.0e-30;
+static const float one=1.0, two=2.0, huge = 1.0e30;
+
 float
 tanhf(float x)
 {
diff --git a/libm/upstream-freebsd/lib/msun/src/s_tanhl.c b/libm/upstream-freebsd/lib/msun/src/s_tanhl.c
new file mode 100644
index 0000000..886158b
--- /dev/null
+++ b/libm/upstream-freebsd/lib/msun/src/s_tanhl.c
@@ -0,0 +1,172 @@
+/* from: FreeBSD: head/lib/msun/src/s_tanhl.c XXX */
+
+/* @(#)s_tanh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * See s_tanh.c for complete comments.
+ *
+ * Converted to long double by Bruce D. Evans.
+ */
+
+#include <float.h>
+#ifdef __i386__
+#include <ieeefp.h>
+#endif
+
+#include "math.h"
+#include "math_private.h"
+#include "fpmath.h"
+#include "k_expl.h"
+
+#if LDBL_MAX_EXP != 0x4000
+/* We also require the usual expsign encoding. */
+#error "Unsupported long double format"
+#endif
+
+#define	BIAS	(LDBL_MAX_EXP - 1)
+
+static const volatile double tiny = 1.0e-300;
+static const double one = 1.0;
+#if LDBL_MANT_DIG == 64
+/*
+ * Domain [-0.25, 0.25], range ~[-1.6304e-22, 1.6304e-22]:
+ * |tanh(x)/x - t(x)| < 2**-72.3
+ */
+static const union IEEEl2bits
+T3u = LD80C(0xaaaaaaaaaaaaaa9f, -2, -3.33333333333333333017e-1L);
+#define	T3	T3u.e
+static const double
+T5  =  1.3333333333333314e-1,		/*  0x1111111111110a.0p-55 */
+T7  = -5.3968253968210485e-2,		/* -0x1ba1ba1ba1a1a1.0p-57 */
+T9  =  2.1869488531393817e-2,		/*  0x1664f488172022.0p-58 */
+T11 = -8.8632352345964591e-3,		/* -0x1226e34bc138d5.0p-59 */
+T13 =  3.5921169709993771e-3,		/*  0x1d6d371d3e400f.0p-61 */
+T15 = -1.4555786415756001e-3,		/* -0x17d923aa63814d.0p-62 */
+T17 =  5.8645267876296793e-4,		/*  0x13378589b85aa7.0p-63 */
+T19 = -2.1121033571392224e-4;		/* -0x1baf0af80c4090.0p-65 */
+#elif LDBL_MANT_DIG == 113
+/*
+ * Domain [-0.25, 0.25], range ~[-2.4211e-37, 2.4211e-37]:
+ * |tanh(x)/x - t(x)| < 2**121.6
+ */
+static const long double
+T3 = -3.33333333333333333333333333333332980e-1L,	/* -0x1555555555555555555555555554e.0p-114L */
+T5  =  1.33333333333333333333333333332707260e-1L,	/*  0x1111111111111111111111110ab7b.0p-115L */
+T7  = -5.39682539682539682539682535723482314e-2L,	/* -0x1ba1ba1ba1ba1ba1ba1ba17b5fc98.0p-117L */
+T9  =  2.18694885361552028218693591149061717e-2L,	/*  0x1664f4882c10f9f32d6b1a12a25e5.0p-118L */
+T11 = -8.86323552990219656883762347736381851e-3L,	/* -0x1226e355e6c23c8f5a5a0f386cb4d.0p-119L */
+T13 =  3.59212803657248101358314398220822722e-3L,	/*  0x1d6d3d0e157ddfb403ad3637442c6.0p-121L */
+T15 = -1.45583438705131796512568010348874662e-3L;	/* -0x17da36452b75e150c44cc34253b34.0p-122L */
+static const double
+T17 =  5.9002744094556621e-4,		/*  0x1355824803668e.0p-63 */
+T19 = -2.3912911424260516e-4,		/* -0x1f57d7734c8dde.0p-65 */
+T21 =  9.6915379535512898e-5,		/*  0x1967e18ad6a6ca.0p-66 */
+T23 = -3.9278322983156353e-5,		/* -0x1497d8e6b75729.0p-67 */
+T25 =  1.5918887220143869e-5,		/*  0x10b1319998cafa.0p-68 */
+T27 = -6.4514295231630956e-6,		/* -0x1b0f2b71b218eb.0p-70 */
+T29 =  2.6120754043964365e-6,		/*  0x15e963a3cf3a39.0p-71 */
+T31 = -1.0407567231003314e-6,		/* -0x1176041e656869.0p-72 */
+T33 =  3.4744117554063574e-7;		/*  0x1750fe732cab9c.0p-74 */
+#endif /* LDBL_MANT_DIG == 64 */
+
+static inline long double
+divl(long double a, long double b, long double c, long double d,
+    long double e, long double f)
+{
+	long double inv, r;
+	float fr, fw;
+
+	_2sumF(a, c);
+	b = b + c;
+	_2sumF(d, f);
+	e = e + f;
+
+	inv = 1 / (d + e);
+
+	r = (a + b) * inv;
+	fr = r;
+	r = fr;
+
+	fw = d + e;
+	e = d - fw + e;
+	d = fw;
+
+	r = r + (a - d * r + b - e * r) * inv;
+
+	return r;
+}
+
+long double
+tanhl(long double x)
+{
+	long double hi,lo,s,x2,x4,z;
+	double dx2;
+	int16_t jx,ix;
+
+	GET_LDBL_EXPSIGN(jx,x);
+	ix = jx&0x7fff;
+
+    /* x is INF or NaN */
+	if(ix>=0x7fff) {
+	    if (jx>=0) return one/x+one;    /* tanh(+-inf)=+-1 */
+	    else       return one/x-one;    /* tanh(NaN) = NaN */
+	}
+
+	ENTERI();
+
+    /* |x| < 40 */
+	if (ix < 0x4004 || fabsl(x) < 40) {	/* |x|<40 */
+	    if (__predict_false(ix<BIAS-(LDBL_MANT_DIG+1)/2)) {	/* |x|<TINY */
+		/* tanh(+-0) = +0; tanh(tiny) = tiny(-+) with inexact: */
+		return (x == 0 ? x : (0x1p200 * x - x) * 0x1p-200);
+	    }
+	    if (ix<0x3ffd) {		/* |x|<0.25 */
+		x2 = x*x;
+#if LDBL_MANT_DIG == 64
+		x4 = x2*x2;
+		RETURNI(((T19*x2 + T17)*x4 + (T15*x2 + T13))*(x2*x*x2*x4*x4) +
+		    ((T11*x2 + T9)*x4 + (T7*x2 + T5))*(x2*x*x2) +
+		    T3*(x2*x) + x);
+#elif LDBL_MANT_DIG == 113
+		dx2 = x2;
+#if 0
+		RETURNI(((((((((((((((T33*dx2 + T31)*dx2 + T29)*dx2 + T27)*dx2 +
+		    T25)*x2 + T23)*x2 + T21)*x2 + T19)*x2 + T17)*x2 +
+		    T15)*x2 + T13)*x2 + T11)*x2 + T9)*x2 + T7)*x2 + T5)*
+		    (x2*x*x2) +
+		    T3*(x2*x) + x);
+#else
+		long double q = ((((((((((((((T33*dx2 + T31)*dx2 + T29)*dx2 + T27)*dx2 +
+		    T25)*x2 + T23)*x2 + T21)*x2 + T19)*x2 + T17)*x2 +
+		    T15)*x2 + T13)*x2 + T11)*x2 + T9)*x2 + T7)*x2 + T5)*
+		    (x2*x*x2);
+		RETURNI(q + T3*(x2*x) + x);
+#endif
+#endif
+	    }
+	    k_hexpl(2*fabsl(x), &hi, &lo);
+	    if (ix<0x4001 && fabsl(x) < 1.5)	/* |x|<1.5 */
+		z = divl(hi, lo, -0.5, hi, lo, 0.5);
+	    else
+		z = one - one/(lo+0.5+hi);
+    /* |x| >= 40, return +-1 */
+	} else {
+	    z = one - tiny;		/* raise inexact flag */
+	}
+	s = 1;
+	if (jx<0) s = -1;
+	RETURNI(s*z);
+}
diff --git a/libm/x86/ceil.S b/libm/x86/ceil.S
new file mode 100644
index 0000000..6302037
--- /dev/null
+++ b/libm/x86/ceil.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(ceil)
+	mov    %esp,%eax
+	and    $0xfffffff8,%eax
+	movsd  0x4(%esp),%xmm0
+	roundsd $0x2,%xmm0,%xmm0
+	movlpd %xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(ceil)
+
+ALIAS_SYMBOL(ceill, ceil);
diff --git a/libm/x86/ceilf.S b/libm/x86/ceilf.S
new file mode 100644
index 0000000..51eb440
--- /dev/null
+++ b/libm/x86/ceilf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(ceilf)
+	movss  0x4(%esp),%xmm0
+	roundss $0x2,%xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(ceilf)
diff --git a/libm/x86/e_acos.S b/libm/x86/e_acos.S
new file mode 100644
index 0000000..fa61853
--- /dev/null
+++ b/libm/x86/e_acos.S
@@ -0,0 +1,1929 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute acos(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//       asin(r) evaluated as a polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: acos(s)=pi/2-asin(s)
+//              evaluate asin(s) as 13-degree polynomial
+//
+//  |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
+//  asin(q) is evaluated as 13-degree polynomial
+//      q^2=(1-|s|)/2 is obtained in advance
+//         2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//
+// Special cases:
+//  acos(NaN) = quiet NaN, and raise invalid exception
+//  acos(INF) = QNaN and raise invalid exception
+//  acos(x) = QNaN and raise invalid exception, for |x|>1.0
+//  acos(1) = +0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function	
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret       
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  acos
+ENTRY(acos)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 48(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     6048(%ebx), %xmm4
+        movsd     6080(%ebx), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     6064(%ebx), %xmm2
+        movapd    %xmm0, %xmm1
+        movsd     %xmm0, 8(%esp)
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movapd    %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movapd    %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        movsd     3840(%ebx,%edx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        movapd    (%ebx,%edx,4), %xmm4
+        movapd    %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movapd    %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm7
+        movsd     5976(%ebx), %xmm0
+        movsd     5960(%ebx), %xmm5
+        subsd     %xmm3, %xmm1
+        psrlq     $63, %xmm2
+        movapd    %xmm1, %xmm3
+        psllq     $63, %xmm2
+        mulsd     %xmm1, %xmm1
+        pshufd    $68, %xmm2, %xmm2
+        movsd     5968(%ebx), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm3, %xmm5
+        subpd     5888(%ebx), %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm0
+        subsd     %xmm4, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        subl      $955, %eax
+        cmpl      $65, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        psrlq     $38, %xmm7
+        psllq     $38, %xmm7
+        pmovmskb  %xmm0, %eax
+        andnpd    %xmm0, %xmm4
+        subsd     %xmm7, %xmm1
+        movapd    %xmm7, %xmm6
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        orpd      %xmm4, %xmm5
+        subsd     %xmm7, %xmm3
+        mulsd     %xmm1, %xmm0
+        movapd    %xmm3, %xmm4
+        subsd     %xmm0, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andl      $128, %eax
+        shrl      $7, %eax
+        negl      %eax
+        movapd    %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        movd      %eax, %xmm3
+        pshufd    $0, %xmm3, %xmm3
+        subl      $65216, %edx
+        addl      %edx, %edx
+        mulsd     3840(%ebx,%edx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        andpd     5904(%ebx), %xmm3
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     5960(%ebx), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     5976(%ebx), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     5968(%ebx), %xmm2
+        addpd     (%ebx,%edx,8), %xmm3
+        movapd    %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        movapd    %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        addsd     %xmm3, %xmm4
+        subsd     %xmm4, %xmm3
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        addsd     %xmm4, %xmm0
+        xorpd     %xmm6, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        unpcklpd  %xmm0, %xmm0
+        movapd    5984(%ebx), %xmm6
+        unpcklpd  %xmm0, %xmm1
+        movapd    6000(%ebx), %xmm2
+        movapd    6016(%ebx), %xmm4
+        mulpd     %xmm0, %xmm0
+        movapd    5888(%ebx), %xmm5
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm0
+        movapd    %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        addpd     %xmm2, %xmm6
+        mulpd     %xmm0, %xmm4
+        mulsd     %xmm3, %xmm1
+        addpd     %xmm4, %xmm6
+        pshufd    $238, %xmm5, %xmm0
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        subsd     %xmm7, %xmm0
+        pshufd    $238, %xmm1, %xmm2
+        subsd     %xmm1, %xmm5
+        subsd     %xmm0, %xmm6
+        subsd     %xmm2, %xmm5
+        subsd     %xmm6, %xmm7
+        subsd     %xmm7, %xmm5
+        addsd     %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        subl      $15356, %eax
+        cmpl      $4, %eax
+        jae       .L_2TAG_PACKET_4.0.2
+        xorpd     %xmm6, %xmm6
+        andpd     6048(%ebx), %xmm7
+        movsd     6096(%ebx), %xmm4
+        movapd    5984(%ebx), %xmm1
+        mulsd     %xmm4, %xmm7
+        movapd    6000(%ebx), %xmm2
+        subsd     %xmm7, %xmm4
+        movapd    6016(%ebx), %xmm3
+        pshufd    $68, %xmm4, %xmm7
+        sqrtsd    %xmm4, %xmm4
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm7, %xmm5
+        pextrw    $3, %xmm0, %eax
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm1, %xmm2
+        movsd     5936(%ebx), %xmm1
+        mulpd     %xmm7, %xmm3
+        cmpsd     $1, %xmm6, %xmm0
+        mulsd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm2
+        pshufd    $68, %xmm0, %xmm0
+        mulsd     %xmm7, %xmm2
+        andpd     5904(%ebx), %xmm0
+        mulpd     %xmm5, %xmm2
+        andpd     %xmm4, %xmm1
+        pshufd    $68, %xmm4, %xmm3
+        subsd     %xmm1, %xmm4
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm4, %xmm3
+        subsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm4
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm4, %xmm5
+        divsd     %xmm3, %xmm5
+        addpd     %xmm3, %xmm3
+        mulpd     %xmm3, %xmm2
+        pshufd    $238, %xmm2, %xmm4
+        addsd     %xmm0, %xmm2
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm0, %xmm0
+        addsd     %xmm4, %xmm2
+        addsd     %xmm5, %xmm2
+        addsd     %xmm3, %xmm2
+        addsd     %xmm2, %xmm0
+        xorpd     %xmm6, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        addl      $261884, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_5.0.2
+        movd      %xmm7, %ecx
+        psrlq     $32, %xmm7
+        movd      %xmm7, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_6.0.2
+        movq      8(%esp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_6.0.2:
+        pextrw    $1, %xmm7, %edx
+        shrl      $15, %edx
+        negl      %edx
+        movd      %edx, %xmm7
+        pshufd    $0, %xmm7, %xmm7
+        movsd     5920(%ebx), %xmm2
+        movsd     5928(%ebx), %xmm0
+        andpd     %xmm7, %xmm2
+        andpd     %xmm7, %xmm0
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_5.0.2:
+        movsd     5888(%ebx), %xmm2
+        movsd     5896(%ebx), %xmm0
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm6, %xmm6
+        addsd     %xmm6, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_1.0.2:
+        movl      48(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(acos)
+# -- End  acos
+
+# Start file scope ASM
+ALIAS_SYMBOL(acosl, acos);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	3217380693
+	.long	858993459
+	.long	3216192307
+	.long	3067833783
+	.long	3215383405
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.long	0
+	.long	4294950912
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,6112
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_asin.S b/libm/x86/e_asin.S
new file mode 100644
index 0000000..5d7f331
--- /dev/null
+++ b/libm/x86/e_asin.S
@@ -0,0 +1,2003 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute asin(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//       asin(r) evaluated as polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: evaluate as 13-degree polynomial
+//
+//  |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
+//         use 17-degree polynomial, get error term
+//         Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
+//                 ( Q(1+eps)=sqrt(1-s^2) )
+//
+// Special cases:
+//  asin(NaN) = quiet NaN, and raise invalid exception
+//  asin(INF) = QNaN and raise invalid exception
+//  asin(x) = QNaN and raise invalid exception, for |x|>1.0
+//  asin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  asin
+ENTRY(asin)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        stmxcsr   16(%esp)
+        movl      16(%esp), %edx
+        andl      $-24577, %edx
+        cmpl      %edx, 16(%esp)
+        jne       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     5984(%ebx), %xmm4
+        movsd     6016(%ebx), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     6000(%ebx), %xmm2
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movapd    %xmm0, %xmm1
+        movsd     %xmm0, 8(%esp)
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movapd    %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movapd    %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        movsd     3936(%ebx,%edx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        movapd    96(%ebx,%edx,4), %xmm4
+        movapd    %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movapd    %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm0
+        movsd     80(%ebx), %xmm7
+        movsd     64(%ebx), %xmm5
+        subsd     %xmm3, %xmm1
+        andpd     6064(%ebx), %xmm2
+        movapd    %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        movsd     72(%ebx), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm7
+        mulsd     %xmm3, %xmm5
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm6
+        mulsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm6
+        orpd      %xmm2, %xmm4
+        addsd     %xmm6, %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_3.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_3.0.2:
+        addsd     %xmm4, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_2.0.2:
+        subl      $955, %eax
+        cmpl      $67, %eax
+        jae       .L_2TAG_PACKET_5.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     5984(%ebx), %xmm0
+        andpd     6048(%ebx), %xmm7
+        movapd    %xmm0, %xmm1
+        movsd     6016(%ebx), %xmm4
+        movapd    %xmm7, %xmm6
+        subsd     %xmm7, %xmm1
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        subsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm0
+        movapd    %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        subl      $65216, %edx
+        addl      %edx, %edx
+        mulsd     3936(%ebx,%edx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        movapd    6080(%ebx), %xmm3
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     64(%ebx), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     80(%ebx), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     72(%ebx), %xmm2
+        subpd     96(%ebx,%edx,8), %xmm3
+        movapd    %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        andl      $524288, %eax
+        shrl      $4, %eax
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        pinsrw    $3, %eax, %xmm6
+        addsd     %xmm5, %xmm0
+        movapd    %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm3
+        subsd     %xmm3, %xmm5
+        subsd     %xmm5, %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_6.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm4
+        subsd     %xmm4, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_7.0.2
+        unpcklpd  %xmm7, %xmm7
+        movapd    (%ebx), %xmm1
+        movapd    %xmm7, %xmm6
+        movapd    16(%ebx), %xmm2
+        movapd    32(%ebx), %xmm4
+        mulpd     %xmm7, %xmm7
+        mulpd     %xmm7, %xmm6
+        mulpd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        movapd    %xmm6, %xmm3
+        mulsd     %xmm6, %xmm6
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm6
+        addpd     %xmm4, %xmm1
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        addsd     %xmm2, %xmm1
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_8.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_8.0.2:
+        addsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        subl      $15358, %eax
+        cmpl      $2, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     6032(%ebx), %xmm7
+        pshufd    $68, %xmm3, %xmm5
+        andpd     6032(%ebx), %xmm3
+        movapd    %xmm7, %xmm1
+        movsd     6016(%ebx), %xmm4
+        movapd    %xmm7, %xmm6
+        subsd     %xmm7, %xmm0
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm1
+        subsd     %xmm7, %xmm4
+        movapd    %xmm3, %xmm6
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm0, %xmm0
+        subsd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm6
+        addsd     %xmm5, %xmm5
+        subsd     %xmm3, %xmm4
+        movapd    (%ebx), %xmm2
+        pshufd    $238, %xmm5, %xmm3
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm5
+        pshufd    $238, %xmm3, %xmm7
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm6, %xmm5
+        addsd     %xmm5, %xmm4
+        pshufd    $238, %xmm7, %xmm6
+        divsd     %xmm3, %xmm4
+        movapd    48(%ebx), %xmm1
+        movapd    16(%ebx), %xmm5
+        movapd    32(%ebx), %xmm0
+        mulpd     %xmm7, %xmm7
+        movapd    %xmm6, %xmm3
+        mulpd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm6
+        shrl      $4, %eax
+        andl      $32768, %eax
+        mulsd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm2, %xmm5
+        movapd    %xmm6, %xmm2
+        mulsd     %xmm6, %xmm6
+        mulpd     %xmm0, %xmm7
+        movapd    6080(%ebx), %xmm0
+        mulsd     %xmm6, %xmm2
+        addpd     %xmm5, %xmm7
+        pshufd    $238, %xmm1, %xmm5
+        mulsd     %xmm2, %xmm6
+        mulpd     %xmm2, %xmm7
+        addsd     %xmm5, %xmm1
+        xorpd     %xmm5, %xmm5
+        pshufd    $238, %xmm7, %xmm2
+        mulsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm2, %xmm7
+        movapd    %xmm3, %xmm2
+        pinsrw    $3, %eax, %xmm5
+        subsd     %xmm6, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm7
+        subsd     %xmm6, %xmm2
+        subsd     %xmm7, %xmm0
+        subsd     %xmm2, %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_10.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        xorpd     %xmm5, %xmm0
+        xorpd     %xmm5, %xmm3
+        subsd     %xmm3, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_9.0.2:
+        addl      $261886, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_11.0.2
+        movd      %xmm0, %ecx
+        psrlq     $32, %xmm0
+        movd      %xmm0, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_12.0.2
+        movq      8(%esp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_11.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_13.0.2
+.L_2TAG_PACKET_12.0.2:
+        movsd     5984(%ebx), %xmm1
+        movsd     6080(%ebx), %xmm2
+        movsd     6088(%ebx), %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_14.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_14.0.2:
+        andnpd    %xmm7, %xmm1
+        orpd      %xmm1, %xmm0
+        orpd      %xmm1, %xmm2
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_0.0.2:
+        movl      16(%esp), %edx
+        andl      $-24577, %edx
+        movl      %edx, 24(%esp)
+        ldmxcsr   24(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     8(%esp), %xmm0
+        xorpd     %xmm6, %xmm6
+        movapd    %xmm0, %xmm7
+        pextrw    $3, %xmm0, %edx
+        andl      $32752, %edx
+        subl      $16, %edx
+        cmpl      $32736, %edx
+        jb        .L_2TAG_PACKET_15.0.2
+        addsd     %xmm0, %xmm6
+        orpd      %xmm6, %xmm0
+        mulsd     %xmm0, %xmm7
+.L_2TAG_PACKET_15.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_13.0.2:
+        movl      16(%esp), %edx
+        andl      $-24577, %edx
+        cmpl      16(%esp), %edx
+        je        .L_2TAG_PACKET_4.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %edx
+        andl      $24576, %edx
+        orl       %edx, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_4.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(asin)
+# -- End  asin
+
+# Start file scope ASM
+ALIAS_SYMBOL(asinl, asin);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.long	1431655765
+	.long	1069897045
+	.long	858993459
+	.long	1068708659
+	.long	3067833783
+	.long	1067899757
+	.long	0
+	.long	0
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.long	0
+	.long	4294950912
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	2147483584
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.type	static_const_table,@object
+	.size	static_const_table,6096
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_atan2.S b/libm/x86/e_atan2.S
new file mode 100644
index 0000000..1efdf65
--- /dev/null
+++ b/libm/x86/e_atan2.S
@@ -0,0 +1,1221 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//
+//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
+//   as follows.
+//                   /  sign(Y) atan(|Y/X|)                if X > 0
+//       atan2(Y,X) =
+//                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
+//
+//   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
+//   where PI and sgn can be determined by the four possible combinations of
+//   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
+//   for atan(|Y/X|).
+//
+//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
+//   if X > 0, and sign(Y)*pi otherwise.
+//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
+//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
+//   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
+//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
+//   calculated using the polynomial in 4 above.
+//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
+//   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
+//   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
+//
+//      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
+//                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
+//
+//   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
+//   163 possible values. These values are calculated beforehand and stored
+//   in a table. The polynomial is the one used in 4.
+//
+// Special cases:
+//  atan2(+-0, +0) = +-0
+//  atan2(+-0, -0) = +-pi
+//  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
+//  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
+//  atan2(+-y, +INF) = +-0, for finite y > 0
+//  atan2(+-y, -INF) = +-pi, for finite y > 0
+//  atan2(+-INF, x) = +-pi/2, for finite x
+//  atan2(+-INF, +INF) = +-pi/4
+//  atan2(+-INF, -INF) = +-3*pi/4
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  atan2
+ENTRY(atan2)
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     136(%esp), %xmm1
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        movq      %xmm0, 8(%esp)
+        andl      $32752, %eax
+        movq      %xmm1, 16(%esp)
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        unpcklpd  %xmm1, %xmm0
+        xorpd     %xmm5, %xmm5
+        xorpd     %xmm3, %xmm3
+        movl      $2048, %eax
+        pinsrw    $3, %eax, %xmm5
+        paddw     %xmm1, %xmm5
+        psrlq     $29, %xmm5
+        rcpss     %xmm5, %xmm3
+        xorpd     %xmm4, %xmm4
+        movl      $14336, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        psllq     $29, %xmm3
+        paddw     %xmm4, %xmm3
+        mulsd     %xmm0, %xmm3
+        xorpd     %xmm2, %xmm2
+        xorpd     %xmm6, %xmm6
+        xorpd     %xmm7, %xmm7
+        movl      $32768, %eax
+        pinsrw    $2, %eax, %xmm6
+        movl      $32767, %ecx
+        pinsrw    $3, %ecx, %xmm7
+        paddd     %xmm6, %xmm3
+        andpd     %xmm7, %xmm3
+        movapd    %xmm3, %xmm5
+        pextrw    $3, %xmm3, %eax
+        movl      $16448, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        minsd     %xmm2, %xmm3
+        movmskpd  %xmm0, %edx
+        psllq     $1, %xmm0
+        psrlq     $1, %xmm0
+        cmpsd     $2, %xmm2, %xmm5
+        psllq     $1, %xmm1
+        psrlq     $1, %xmm1
+        movapd    %xmm1, %xmm6
+        movapd    %xmm1, %xmm7
+        movapd    %xmm0, %xmm2
+        movl      $0, %ecx
+        pinsrw    $0, %ecx, %xmm6
+        subsd     %xmm6, %xmm7
+        movapd    %xmm0, %xmm4
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        mulsd     %xmm3, %xmm7
+        andpd     %xmm5, %xmm0
+        subsd     %xmm6, %xmm0
+        andpd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm4
+        subsd     %xmm7, %xmm0
+        andl      $32752, %eax
+        subl      $16286, %eax
+        cmpl      $1121, %eax
+        ja        .L_2TAG_PACKET_3.0.2
+        divsd     %xmm4, %xmm0
+        pextrw    $3, %xmm3, %ecx
+        movsd     2944(%ebx), %xmm2
+        movsd     2960(%ebx), %xmm3
+        pextrw    $0, %xmm5, %eax
+        addl      %edx, %edx
+        movapd    2688(%ebx,%edx,8), %xmm6
+        movapd    2752(%ebx,%edx,8), %xmm1
+        subl      $16286, %ecx
+        notl      %eax
+        andl      $1, %eax
+        addl      %eax, %ecx
+        addl      %ecx, %ecx
+        movapd    (%ebx,%ecx,8), %xmm5
+        xorpd     %xmm1, %xmm5
+        addpd     %xmm6, %xmm5
+        movapd    %xmm5, %xmm6
+        unpckhpd  %xmm5, %xmm5
+        xorpd     %xmm0, %xmm1
+        movapd    %xmm1, %xmm4
+        mulsd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm3
+        addsd     %xmm6, %xmm1
+        subsd     %xmm1, %xmm6
+        addsd     %xmm4, %xmm6
+        addsd     2952(%ebx), %xmm2
+        mulsd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm2
+        addsd     2968(%ebx), %xmm3
+        mulsd     %xmm3, %xmm2
+        addsd     %xmm6, %xmm2
+        addsd     %xmm2, %xmm1
+        movsd     %xmm1, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_3.0.2:
+        addl      $942, %eax
+        cmpl      $942, %eax
+        ja        .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm4, %xmm4
+        movl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        divsd     %xmm1, %xmm4
+        addl      %edx, %edx
+        movapd    2752(%ebx,%edx,8), %xmm6
+        unpcklpd  %xmm3, %xmm3
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm2
+        xorpd     %xmm6, %xmm3
+        movapd    2816(%ebx,%edx,8), %xmm7
+        movsd     2944(%ebx), %xmm1
+        movsd     2960(%ebx), %xmm5
+        andpd     2880(%ebx,%edx,8), %xmm3
+        mulsd     %xmm4, %xmm2
+        mulsd     %xmm4, %xmm0
+        movapd    %xmm2, %xmm6
+        mulsd     %xmm2, %xmm2
+        mulsd     %xmm2, %xmm1
+        addsd     %xmm2, %xmm5
+        mulsd     %xmm2, %xmm6
+        addsd     2952(%ebx), %xmm1
+        mulsd     %xmm2, %xmm5
+        addsd     %xmm0, %xmm7
+        addpd     %xmm3, %xmm7
+        mulsd     %xmm6, %xmm1
+        addsd     2968(%ebx), %xmm5
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm5
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm5
+        movsd     %xmm5, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        movsd     16(%esp), %xmm1
+        movsd     8(%esp), %xmm0
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      %eax, %ecx
+        jg        .L_2TAG_PACKET_6.0.2
+        pextrw    $3, %xmm1, %ecx
+        cmpl      $32767, %ecx
+        jg        .L_2TAG_PACKET_7.0.2
+        divsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        andpd     2672(%ebx), %xmm0
+        movsd     2640(%ebx), %xmm2
+        xorpd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_6.0.2:
+        andpd     2672(%ebx), %xmm0
+        movsd     2624(%ebx), %xmm2
+        xorpd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_0.0.2:
+.L_2TAG_PACKET_1.0.2:
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_8.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_9.0.2
+        movsd     2992(%ebx), %xmm3
+        movl      $1024, %edx
+        movsd     2976(%ebx), %xmm4
+        xorpd     %xmm6, %xmm6
+        movsd     3008(%ebx), %xmm7
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_11.0.2:
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_12.0.2
+.L_2TAG_PACKET_13.0.2:
+        addl      %ecx, %edx
+        subl      %eax, %edx
+        cmpl      $2048, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        addl      $15344, %edx
+        pinsrw    $3, %edx, %xmm6
+        andpd     %xmm4, %xmm0
+        andpd     %xmm4, %xmm1
+        orpd      %xmm6, %xmm0
+        orpd      %xmm7, %xmm1
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_10.0.2:
+        subl      $880, %edx
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_14.0.2
+        jmp       .L_2TAG_PACKET_11.0.2
+.L_2TAG_PACKET_12.0.2:
+        addl      $880, %edx
+        mulsd     %xmm3, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_15.0.2
+        jmp       .L_2TAG_PACKET_13.0.2
+.L_2TAG_PACKET_8.0.2:
+        movd      %xmm0, %edx
+        movapd    %xmm0, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $1048575, %ecx
+        orl       %edx, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_16.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $32752, %eax
+        jae       .L_2TAG_PACKET_17.0.2
+        movapd    2624(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+.L_2TAG_PACKET_18.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_16.0.2:
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_17.0.2:
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_19.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_20.0.2
+        movapd    2656(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_19.0.2:
+        movapd    %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_20.0.2:
+        movapd    2656(%ebx), %xmm5
+        movapd    2624(%ebx), %xmm6
+        addpd     %xmm6, %xmm5
+        pshufd    $238, %xmm5, %xmm6
+        addpd     %xmm6, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_9.0.2:
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_19.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_21.0.2
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_21.0.2:
+        movapd    2640(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_14.0.2:
+        pextrw    $3, %xmm1, %edx
+        andl      $32768, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_22.0.2
+        movapd    2640(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        comisd    %xmm0, %xmm1
+        orpd      %xmm5, %xmm0
+        jne       .L_2TAG_PACKET_23.0.2
+.L_2TAG_PACKET_24.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_23.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_22.0.2:
+        comisd    %xmm0, %xmm1
+        jne       .L_2TAG_PACKET_23.0.2
+        je        .L_2TAG_PACKET_24.0.2
+.L_2TAG_PACKET_15.0.2:
+        movapd    2624(%ebx), %xmm5
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_4.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(atan2)
+# -- End  atan2
+
+# Start file scope ASM
+ALIAS_SYMBOL(atan2l, atan2);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	3390881280
+	.long	1067318733
+	.long	1411116779
+	.long	1018950063
+	.long	2985987840
+	.long	1067384211
+	.long	2088903695
+	.long	1018086027
+	.long	3148445184
+	.long	1067449685
+	.long	2044163806
+	.long	1017271335
+	.long	3667629184
+	.long	1067515494
+	.long	2353092775
+	.long	1019967309
+	.long	1546568832
+	.long	1067580954
+	.long	611991315
+	.long	1017602584
+	.long	3815996800
+	.long	1067646404
+	.long	466038598
+	.long	1019686426
+	.long	4050241920
+	.long	1067711845
+	.long	3265026328
+	.long	1019626952
+	.long	120454912
+	.long	1067777277
+	.long	1542207696
+	.long	1020155608
+	.long	2784639744
+	.long	1067842697
+	.long	3883834623
+	.long	1018602870
+	.long	1328010624
+	.long	1067908107
+	.long	1791097456
+	.long	1019053126
+	.long	2217794048
+	.long	1067973505
+	.long	551619938
+	.long	1018494194
+	.long	3333520000
+	.long	1068038891
+	.long	2390331823
+	.long	1019033022
+	.long	2557052032
+	.long	1068104265
+	.long	2423976108
+	.long	1019728674
+	.long	2067649536
+	.long	1068169626
+	.long	3757397745
+	.long	1018672362
+	.long	4047094784
+	.long	1068234973
+	.long	481613184
+	.long	1019275104
+	.long	2089853184
+	.long	1068300307
+	.long	1733914374
+	.long	1020124677
+	.long	2678003840
+	.long	1068365626
+	.long	1373600282
+	.long	1013935474
+	.long	3706496128
+	.long	1068430930
+	.long	1000610902
+	.long	1019673285
+	.long	3073179008
+	.long	1068496219
+	.long	1497143008
+	.long	1019900342
+	.long	2803716736
+	.long	1068562846
+	.long	1476677416
+	.long	1019444094
+	.long	3204984128
+	.long	1068628077
+	.long	1192335905
+	.long	1018748628
+	.long	831146624
+	.long	1068693273
+	.long	2733586224
+	.long	1018823295
+	.long	243029376
+	.long	1068758431
+	.long	950106081
+	.long	1019046675
+	.long	1735561920
+	.long	1068823549
+	.long	3546440856
+	.long	1020104712
+	.long	1339217792
+	.long	1068888626
+	.long	3028812387
+	.long	1019818321
+	.long	3706342144
+	.long	1068953659
+	.long	3814564029
+	.long	1017763871
+	.long	637726976
+	.long	1069018648
+	.long	3584007699
+	.long	1017976868
+	.long	1148779264
+	.long	1069083589
+	.long	2282532133
+	.long	1019483954
+	.long	1406131392
+	.long	1069148481
+	.long	1547359113
+	.long	1019786342
+	.long	1908875904
+	.long	1069213322
+	.long	1315508410
+	.long	1020009473
+	.long	3194947520
+	.long	1069278110
+	.long	3845393201
+	.long	1015803761
+	.long	1547487744
+	.long	1069342844
+	.long	3863107865
+	.long	1019810104
+	.long	1881061952
+	.long	1069407521
+	.long	4288343548
+	.long	1019687581
+	.long	563086336
+	.long	1069472140
+	.long	2582230241
+	.long	1020099350
+	.long	2594975552
+	.long	1069536698
+	.long	2306443764
+	.long	1019667244
+	.long	3438545024
+	.long	1069606573
+	.long	957455549
+	.long	1015587735
+	.long	4211357472
+	.long	1069670906
+	.long	2611778754
+	.long	1017877214
+	.long	3002835424
+	.long	1069735101
+	.long	235580458
+	.long	1020211685
+	.long	3905315424
+	.long	1069799150
+	.long	3630647617
+	.long	1018736849
+	.long	2849656576
+	.long	1069863047
+	.long	2412165062
+	.long	1019693004
+	.long	507429472
+	.long	1069926785
+	.long	1397750723
+	.long	1018412717
+	.long	2307470272
+	.long	1069990356
+	.long	1796470904
+	.long	1019796181
+	.long	1271814912
+	.long	1070053755
+	.long	189761565
+	.long	1016149115
+	.long	3800538144
+	.long	1070116974
+	.long	2524871582
+	.long	1018263353
+	.long	3916203552
+	.long	1070180008
+	.long	127848658
+	.long	1017672664
+	.long	457192032
+	.long	1070242851
+	.long	4020400938
+	.long	1019823010
+	.long	1385324704
+	.long	1070305495
+	.long	564511179
+	.long	1016079094
+	.long	2322869856
+	.long	1070367935
+	.long	2347103319
+	.long	1018927760
+	.long	3743438624
+	.long	1070430165
+	.long	877973862
+	.long	1019638162
+	.long	2392255552
+	.long	1070492180
+	.long	2432782267
+	.long	1018872629
+	.long	4180443328
+	.long	1070553973
+	.long	3102990015
+	.long	1020093101
+	.long	2547540832
+	.long	1070636485
+	.long	3877738253
+	.long	1017300424
+	.long	2735468912
+	.long	1070697461
+	.long	2446470256
+	.long	1019235378
+	.long	542633792
+	.long	1070757943
+	.long	583606328
+	.long	1018624131
+	.long	923265984
+	.long	1070817911
+	.long	1793926708
+	.long	1019714161
+	.long	918728448
+	.long	1070877348
+	.long	3726463586
+	.long	1019433296
+	.long	2572275008
+	.long	1070936237
+	.long	1845354238
+	.long	1019459238
+	.long	50974688
+	.long	1070994564
+	.long	983808064
+	.long	1016685418
+	.long	1105518320
+	.long	1071052313
+	.long	2357496692
+	.long	1015139882
+	.long	1264825328
+	.long	1071109472
+	.long	2244129354
+	.long	1019046344
+	.long	961157920
+	.long	1071166029
+	.long	3124185339
+	.long	1018541776
+	.long	1162701584
+	.long	1071221973
+	.long	1279780948
+	.long	1019268918
+	.long	3284935664
+	.long	1071277294
+	.long	2670033472
+	.long	1019833744
+	.long	497441888
+	.long	1071331985
+	.long	1032737410
+	.long	1019795212
+	.long	3377383904
+	.long	1071386036
+	.long	2356897182
+	.long	1020205553
+	.long	1126962000
+	.long	1071439443
+	.long	3723724586
+	.long	1015212418
+	.long	90291008
+	.long	1071492199
+	.long	4178672431
+	.long	1020186971
+	.long	190059536
+	.long	1071595741
+	.long	1763589807
+	.long	1019162163
+	.long	2497392840
+	.long	1071670654
+	.long	3036997041
+	.long	1020204325
+	.long	2616971944
+	.long	1071719773
+	.long	300151069
+	.long	1017041957
+	.long	2883518128
+	.long	1071767563
+	.long	2203981414
+	.long	1019190108
+	.long	1496354352
+	.long	1071814030
+	.long	332287966
+	.long	1016846435
+	.long	483276728
+	.long	1071859184
+	.long	653845024
+	.long	1018830914
+	.long	3097401072
+	.long	1071903039
+	.long	1514746408
+	.long	1019278972
+	.long	2737217248
+	.long	1071945615
+	.long	1358845067
+	.long	1017268275
+	.long	2072577560
+	.long	1071986933
+	.long	3041024735
+	.long	1019929672
+	.long	2266405656
+	.long	1072027017
+	.long	1271261130
+	.long	1012925070
+	.long	958652544
+	.long	1072065894
+	.long	2158017058
+	.long	1019955372
+	.long	3312993840
+	.long	1072103591
+	.long	765809169
+	.long	1019114443
+	.long	3177001304
+	.long	1072140139
+	.long	144180084
+	.long	1019822186
+	.long	3071642184
+	.long	1072175568
+	.long	4004602424
+	.long	1019420740
+	.long	4283953648
+	.long	1072209909
+	.long	1511950430
+	.long	1020176966
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.long	4073202944
+	.long	1072306725
+	.long	4068194804
+	.long	1019714860
+	.long	946117760
+	.long	1072366415
+	.long	694980733
+	.long	1020150135
+	.long	3980632032
+	.long	1072422512
+	.long	1313251280
+	.long	1019948709
+	.long	1468297112
+	.long	1072475260
+	.long	330111143
+	.long	1019809198
+	.long	3478063816
+	.long	1072524887
+	.long	2930067044
+	.long	1017784081
+	.long	1153979856
+	.long	1072571613
+	.long	2225786102
+	.long	1017634481
+	.long	2089828808
+	.long	1072615641
+	.long	474621367
+	.long	1017043414
+	.long	3531732632
+	.long	1072657163
+	.long	2276396220
+	.long	1018757240
+	.long	775214612
+	.long	1072694803
+	.long	3209744818
+	.long	1019963015
+	.long	662307284
+	.long	1072713319
+	.long	1381696763
+	.long	1019763781
+	.long	1192776652
+	.long	1072730830
+	.long	3017932994
+	.long	1015179769
+	.long	744202396
+	.long	1072747407
+	.long	2073854034
+	.long	1019512292
+	.long	8337908
+	.long	1072763115
+	.long	16004448
+	.long	1019599514
+	.long	3589868768
+	.long	1072778013
+	.long	1374369804
+	.long	1018019237
+	.long	121647320
+	.long	1072792159
+	.long	128481634
+	.long	1018115438
+	.long	2464923204
+	.long	1072805601
+	.long	1787331214
+	.long	1016798022
+	.long	4093304372
+	.long	1072830562
+	.long	3306868969
+	.long	1019384078
+	.long	1436891684
+	.long	1072853231
+	.long	676347266
+	.long	1017302183
+	.long	1104571840
+	.long	1072873890
+	.long	2870400285
+	.long	1019938149
+	.long	2037009832
+	.long	1072892781
+	.long	2956702105
+	.long	1016472908
+	.long	3139037960
+	.long	1072910111
+	.long	916057147
+	.long	1018364335
+	.long	1826698064
+	.long	1072926058
+	.long	2171961098
+	.long	1019669816
+	.long	1353941060
+	.long	1072940774
+	.long	1722928782
+	.long	1019926215
+	.long	1803191644
+	.long	1072954391
+	.long	1547878639
+	.long	1020259262
+	.long	1092591296
+	.long	1072967024
+	.long	3070107923
+	.long	1018320401
+	.long	2205372832
+	.long	1072978772
+	.long	787328196
+	.long	1014621351
+	.long	1291577100
+	.long	1072989723
+	.long	2964757301
+	.long	1020242528
+	.long	4234512804
+	.long	1072999952
+	.long	3136030038
+	.long	1017522144
+	.long	3248069132
+	.long	1073009528
+	.long	1506192355
+	.long	1018050472
+	.long	3932628500
+	.long	1073018509
+	.long	1045823554
+	.long	1019946655
+	.long	4195697848
+	.long	1073026948
+	.long	233443322
+	.long	1018917447
+	.long	2501811452
+	.long	1073034892
+	.long	901427976
+	.long	1017333852
+	.long	866379428
+	.long	1073049455
+	.long	2437443742
+	.long	1019678792
+	.long	1376865888
+	.long	1073062480
+	.long	3365790232
+	.long	1014547152
+	.long	3290094268
+	.long	1073074195
+	.long	3898947415
+	.long	1018683566
+	.long	354764884
+	.long	1073084787
+	.long	3854322404
+	.long	1019662058
+	.long	3332975496
+	.long	1073094406
+	.long	3171701655
+	.long	1017830922
+	.long	1141460088
+	.long	1073103181
+	.long	3946082701
+	.long	1020032019
+	.long	745761284
+	.long	1073111216
+	.long	1347210591
+	.long	1019106121
+	.long	1673304508
+	.long	1073118600
+	.long	1760606642
+	.long	1017324577
+	.long	983388240
+	.long	1073125409
+	.long	3740651204
+	.long	1019514104
+	.long	3895509100
+	.long	1073131706
+	.long	2409629983
+	.long	1020069322
+	.long	2128523668
+	.long	1073137548
+	.long	3045605368
+	.long	1018579174
+	.long	2075485692
+	.long	1073142981
+	.long	3720571789
+	.long	1017557436
+	.long	121855976
+	.long	1073148047
+	.long	2391744767
+	.long	1020160645
+	.long	4181733780
+	.long	1073152780
+	.long	995028816
+	.long	1019681295
+	.long	2887813280
+	.long	1073157214
+	.long	218733247
+	.long	1020003509
+	.long	2862180896
+	.long	1073161375
+	.long	2043806490
+	.long	1018602288
+	.long	3909375184
+	.long	1073168973
+	.long	1559903412
+	.long	1020103444
+	.long	3533966292
+	.long	1073175738
+	.long	734884149
+	.long	1018462962
+	.long	3815044608
+	.long	1073181799
+	.long	3630523428
+	.long	1017250093
+	.long	739639376
+	.long	1073187261
+	.long	4167476661
+	.long	1020008277
+	.long	1068309648
+	.long	1073192207
+	.long	2110061437
+	.long	1019295858
+	.long	2350566352
+	.long	1073196707
+	.long	582596516
+	.long	1018568821
+	.long	2529520024
+	.long	1073200819
+	.long	745552787
+	.long	1019053165
+	.long	1841667508
+	.long	1073204591
+	.long	3982568700
+	.long	1016503327
+	.long	2242261080
+	.long	1073208063
+	.long	3433582258
+	.long	1016196763
+	.long	715134328
+	.long	1073211270
+	.long	355901358
+	.long	1020087916
+	.long	2700735876
+	.long	1073214240
+	.long	3640957736
+	.long	1019780205
+	.long	141607580
+	.long	1073217000
+	.long	2488245051
+	.long	1020262395
+	.long	287934404
+	.long	1073219570
+	.long	2392691085
+	.long	1019883292
+	.long	2363373988
+	.long	1073221969
+	.long	4194561737
+	.long	1019237447
+	.long	3829340424
+	.long	1073224214
+	.long	429455526
+	.long	1019490975
+	.long	1988805928
+	.long	1073226320
+	.long	3029848706
+	.long	1018104889
+	.long	1647572320
+	.long	1073230161
+	.long	10289938
+	.long	1017394880
+	.long	3988000624
+	.long	1073233576
+	.long	1957559169
+	.long	1019434816
+	.long	4263843944
+	.long	1073236633
+	.long	204710264
+	.long	1019908761
+	.long	663197724
+	.long	1073239386
+	.long	1921757578
+	.long	1019778948
+	.long	3560800700
+	.long	1073241876
+	.long	3994348896
+	.long	1019230192
+	.long	2441785656
+	.long	1073244141
+	.long	871468611
+	.long	1014800505
+	.long	3277400272
+	.long	1073246209
+	.long	4092218139
+	.long	1020040842
+	.long	3951990120
+	.long	1073248105
+	.long	4276546478
+	.long	1019763677
+	.long	2737338540
+	.long	1073249850
+	.long	252776012
+	.long	1018794951
+	.long	1511361316
+	.long	1073251461
+	.long	3119653999
+	.long	1018514803
+	.long	3969162516
+	.long	1073252952
+	.long	1037069016
+	.long	1016792900
+	.long	413985240
+	.long	1073254338
+	.long	4110171432
+	.long	1020001345
+	.long	3681283576
+	.long	1073255627
+	.long	1463092818
+	.long	1020260354
+	.long	3146455488
+	.long	1073256831
+	.long	1031209123
+	.long	1016554799
+	.long	95214512
+	.long	1073257958
+	.long	1373808632
+	.long	1019493031
+	.long	4250240828
+	.long	1073259013
+	.long	3891047882
+	.long	1020108730
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	3221823995
+	.long	856972295
+	.long	3164710438
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.long	4294967295
+	.long	2148532223
+	.long	0
+	.long	0
+	.long	0
+	.long	1130364928
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,3024
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_cosh.S b/libm/x86/e_cosh.S
new file mode 100644
index 0000000..ecea8f4
--- /dev/null
+++ b/libm/x86/e_cosh.S
@@ -0,0 +1,1349 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  cosh(x)=(exp(x)+exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [1/8,3*2^8)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
+//
+//  For |x| in [1/8, 3*2^7), cosh(x) is formed as
+//   RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
+//
+//  For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
+//  (error bound for polynomial expansion is below 0.501 ulp)
+//
+// Special cases:
+//  cosh(NaN) = quiet NaN, and raise invalid exception
+//  cosh(INF) = that INF
+//  cosh(0)=1
+//  for finite argument, only cosh(0)=1 is exact
+//  For IEEE double
+//  cosh(x) overflows
+//  for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  cosh
+ENTRY(cosh)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     4240(%ebx), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     4192(%ebx), %xmm1
+        movsd     4200(%ebx), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     4096(%ebx), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        andl      $32767, %ecx
+        subl      $16320, %ecx
+        cmpl      $200, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movapd    %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    4112(%ebx), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    4128(%ebx), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    4144(%ebx), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $184, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        mulpd     (%ebx,%edx,8), %xmm0
+        mulpd     2048(%ebx,%edx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    4160(%ebx), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     4176(%ebx), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movapd    %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        addpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $16320, %ecx
+        cmpl      $16320, %ecx
+        ja        .L_2TAG_PACKET_3.0.2
+        cmpl      $15952, %ecx
+        jae       .L_2TAG_PACKET_4.0.2
+        addsd     %xmm2, %xmm6
+        movsd     4248(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     (%ebx,%edx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     4160(%ebx), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     4176(%ebx), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        movl      $64, %edx
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_4.0.2:
+        movapd    4208(%ebx), %xmm1
+        mulpd     %xmm5, %xmm5
+        movapd    4224(%ebx), %xmm2
+        xorpd     %xmm3, %xmm3
+        movapd    %xmm5, %xmm0
+        mulpd     %xmm5, %xmm1
+        movsd     4248(%ebx), %xmm6
+        mulpd     %xmm5, %xmm5
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm3
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm5, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm0
+        addsd     %xmm6, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $64, %edx
+.L_2TAG_PACKET_5.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_6.0.2:
+        mulsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_7.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(cosh)
+# -- End  cosh
+
+# Start file scope ASM
+ALIAS_SYMBOL(coshl, cosh);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	3212193346
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.long	3078135644
+	.long	1049787983
+	.long	381774870
+	.long	1062650220
+	.long	436314137
+	.long	1056571808
+	.long	1431655765
+	.long	1067799893
+	.long	4160749568
+	.long	2147483647
+	.long	0
+	.long	1072693248
+	.type	static_const_table,@object
+	.size	static_const_table,4256
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_exp.S b/libm/x86/e_exp.S
new file mode 100644
index 0000000..eab619d
--- /dev/null
+++ b/libm/x86/e_exp.S
@@ -0,0 +1,576 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//        x    x/log(2)     n
+//       e  = 2          = 2 * T[j] * (1 + P(y))
+//  where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//  To avoid problems with arithmetic overflow and underflow,
+//            n                        n1  n2
+//  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//  where BIAS is a value of exponent bias.
+//
+// Special cases:
+//  exp(NaN) = NaN
+//  exp(+INF) = +INF
+//  exp(-INF) = 0
+//  exp(x) = 1 for subnormals
+//  for finite argument, only exp(0)=1 is exact
+//  For IEEE double
+//    if x >  709.782712893383973096 then exp(x) overflow
+//    if x < -745.133219101941108420 then exp(x) underflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  exp
+ENTRY(exp)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        unpcklpd  %xmm0, %xmm0
+        movapd    64(%ebx), %xmm1
+        movapd    48(%ebx), %xmm6
+        movapd    80(%ebx), %xmm2
+        movapd    96(%ebx), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $15504, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    128(%ebx), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    144(%ebx), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        movdqa    16(%ebx), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    32(%ebx), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        subpd     %xmm3, %xmm0
+        movapd    160(%ebx,%ecx), %xmm2
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm6
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm6, %xmm6
+        mulpd     %xmm6, %xmm0
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm6, %xmm0
+        mulpd     112(%ebx), %xmm6
+        addsd     %xmm2, %xmm1
+        unpckhpd  %xmm2, %xmm2
+        mulpd     %xmm5, %xmm0
+        addsd     %xmm0, %xmm1
+        orpd      %xmm7, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        addsd     %xmm6, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        mulsd     %xmm2, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_1.0.2:
+        fstcw     24(%esp)
+        movzwl    24(%esp), %edx
+        orl       $768, %edx
+        movw      %dx, 28(%esp)
+        fldcw     28(%esp)
+        movl      %eax, %edx
+        sarl      $1, %eax
+        subl      %eax, %edx
+        movdqa    (%ebx), %xmm6
+        pandn     %xmm2, %xmm6
+        addl      $1023, %eax
+        movd      %eax, %xmm3
+        psllq     $52, %xmm3
+        orpd      %xmm3, %xmm6
+        addl      $1023, %edx
+        movd      %edx, %xmm4
+        psllq     $52, %xmm4
+        movsd     %xmm0, 8(%esp)
+        fldl      8(%esp)
+        movsd     %xmm6, 16(%esp)
+        fldl      16(%esp)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        movsd     %xmm4, 8(%esp)
+        fldl      8(%esp)
+        fmulp     %st, %st(1)
+        fstpl     8(%esp)
+        movsd     8(%esp), %xmm0
+        fldcw     24(%esp)
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_4.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+        cmpl      $-2147483648, %ecx
+        jb        .L_2TAG_PACKET_3.0.2
+        cmpl      $-1064950997, %ecx
+        jb        .L_2TAG_PACKET_2.0.2
+        ja        .L_2TAG_PACKET_4.0.2
+        movl      128(%esp), %edx
+        cmpl      $-17155601, %edx
+        jb        .L_2TAG_PACKET_2.0.2
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_3.0.2:
+        movl      $14, %edx
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_4.0.2:
+        movl      $15, %edx
+.L_2TAG_PACKET_5.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     128(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_7.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_8.0.2
+        movl      132(%esp), %eax
+        cmpl      $-2147483648, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        movsd     1208(%ebx), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $14, %edx
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_9.0.2:
+        movsd     1216(%ebx), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $15, %edx
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_8.0.2:
+        movl      128(%esp), %edx
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_10.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_10.0.2
+        movl      132(%esp), %eax
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_11.0.2
+        movsd     1192(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     1200(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_10.0.2:
+        movsd     128(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        movl      132(%esp), %eax
+        andl      $2147483647, %eax
+        cmpl      $1083179008, %eax
+        jae       .L_2TAG_PACKET_7.0.2
+        movsd     128(%esp), %xmm0
+        addsd     1184(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 48(%esp)
+        fldl      48(%esp)
+.L_2TAG_PACKET_6.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(exp)
+# -- End  exp
+
+# Start file scope ASM
+ALIAS_SYMBOL(expl, exp);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	4293918720
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	4294967294
+	.long	1071644671
+	.long	4294967294
+	.long	1071644671
+	.long	3811088480
+	.long	1062650204
+	.long	1432067621
+	.long	1067799893
+	.long	3230715663
+	.long	1065423125
+	.long	1431604129
+	.long	1069897045
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	235107661
+	.long	1018002367
+	.long	1048019040
+	.long	11418
+	.long	896005651
+	.long	1015861842
+	.long	3541402996
+	.long	22960
+	.long	1642514529
+	.long	1012987726
+	.long	410360776
+	.long	34629
+	.long	1568897900
+	.long	1016568486
+	.long	1828292879
+	.long	46424
+	.long	1882168529
+	.long	1010744893
+	.long	852742562
+	.long	58348
+	.long	509852888
+	.long	1017336174
+	.long	3490863952
+	.long	70401
+	.long	653277307
+	.long	1017431380
+	.long	2930322911
+	.long	82586
+	.long	1649557430
+	.long	1017729363
+	.long	1014845818
+	.long	94904
+	.long	1058231231
+	.long	1015777676
+	.long	3949972341
+	.long	107355
+	.long	1044000607
+	.long	1016786167
+	.long	828946858
+	.long	119943
+	.long	1151779725
+	.long	1015705409
+	.long	2288159958
+	.long	132667
+	.long	3819481236
+	.long	1016499965
+	.long	1853186616
+	.long	145530
+	.long	2552227826
+	.long	1015039787
+	.long	1709341917
+	.long	158533
+	.long	1829350193
+	.long	1015216097
+	.long	4112506593
+	.long	171677
+	.long	1913391795
+	.long	1015756674
+	.long	2799960843
+	.long	184965
+	.long	1303423926
+	.long	1015238005
+	.long	171030293
+	.long	198398
+	.long	1574172746
+	.long	1016061241
+	.long	2992903935
+	.long	211976
+	.long	3424156969
+	.long	1017196428
+	.long	926591434
+	.long	225703
+	.long	1938513547
+	.long	1017631273
+	.long	887463926
+	.long	239579
+	.long	2804567149
+	.long	1015390024
+	.long	1276261410
+	.long	253606
+	.long	631083525
+	.long	1017690182
+	.long	569847337
+	.long	267786
+	.long	1623370770
+	.long	1011049453
+	.long	1617004845
+	.long	282120
+	.long	3667985273
+	.long	1013894369
+	.long	3049340112
+	.long	296610
+	.long	3145379760
+	.long	1014403278
+	.long	3577096743
+	.long	311258
+	.long	2603100681
+	.long	1017152460
+	.long	1990012070
+	.long	326066
+	.long	3249202951
+	.long	1017448880
+	.long	1453150081
+	.long	341035
+	.long	419288974
+	.long	1016280325
+	.long	917841882
+	.long	356167
+	.long	3793507337
+	.long	1016095713
+	.long	3712504873
+	.long	371463
+	.long	728023093
+	.long	1016345318
+	.long	363667784
+	.long	386927
+	.long	2582678538
+	.long	1017123460
+	.long	2956612996
+	.long	402558
+	.long	7592966
+	.long	1016721543
+	.long	2186617380
+	.long	418360
+	.long	228611441
+	.long	1016696141
+	.long	1719614412
+	.long	434334
+	.long	2261665670
+	.long	1017457593
+	.long	1013258798
+	.long	450482
+	.long	544148907
+	.long	1017323666
+	.long	3907805043
+	.long	466805
+	.long	2383914918
+	.long	1017143586
+	.long	1447192520
+	.long	483307
+	.long	1176412038
+	.long	1017267372
+	.long	1944781190
+	.long	499988
+	.long	2882956373
+	.long	1013312481
+	.long	919555682
+	.long	516851
+	.long	3154077648
+	.long	1016528543
+	.long	2571947538
+	.long	533897
+	.long	348651999
+	.long	1016405780
+	.long	2604962540
+	.long	551129
+	.long	3253791412
+	.long	1015920431
+	.long	1110089947
+	.long	568549
+	.long	1509121860
+	.long	1014756995
+	.long	2568320822
+	.long	586158
+	.long	2617649212
+	.long	1017340090
+	.long	2966275556
+	.long	603959
+	.long	553214634
+	.long	1016457425
+	.long	2682146383
+	.long	621954
+	.long	730975783
+	.long	1014083580
+	.long	2191782032
+	.long	640145
+	.long	1486499517
+	.long	1016818996
+	.long	2069751140
+	.long	658534
+	.long	2595788928
+	.long	1016407932
+	.long	2990417244
+	.long	677123
+	.long	1853053619
+	.long	1015310724
+	.long	1434058175
+	.long	695915
+	.long	2462790535
+	.long	1015814775
+	.long	2572866477
+	.long	714911
+	.long	3693944214
+	.long	1017259110
+	.long	3092190714
+	.long	734114
+	.long	2979333550
+	.long	1017188654
+	.long	4076559942
+	.long	753526
+	.long	174054861
+	.long	1014300631
+	.long	2420883922
+	.long	773150
+	.long	816778419
+	.long	1014197934
+	.long	3716502172
+	.long	792987
+	.long	3507050924
+	.long	1015341199
+	.long	777507147
+	.long	813041
+	.long	1821514088
+	.long	1013410604
+	.long	3706687593
+	.long	833312
+	.long	920623539
+	.long	1016295433
+	.long	1242007931
+	.long	853805
+	.long	2789017511
+	.long	1014276997
+	.long	3707479175
+	.long	874520
+	.long	3586233004
+	.long	1015962192
+	.long	64696965
+	.long	895462
+	.long	474650514
+	.long	1016642419
+	.long	863738718
+	.long	916631
+	.long	1614448851
+	.long	1014281732
+	.long	3884662774
+	.long	938030
+	.long	2450082086
+	.long	1016164135
+	.long	2728693977
+	.long	959663
+	.long	1101668360
+	.long	1015989180
+	.long	3999357479
+	.long	981531
+	.long	835814894
+	.long	1015702697
+	.long	1533953344
+	.long	1003638
+	.long	1301400989
+	.long	1014466875
+	.long	2174652632
+	.long	1025985
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	2146435071
+	.long	0
+	.long	1048576
+	.type	static_const_table,@object
+	.size	static_const_table,1224
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_hypot.S b/libm/x86/e_hypot.S
new file mode 100644
index 0000000..6a143e5
--- /dev/null
+++ b/libm/x86/e_hypot.S
@@ -0,0 +1,220 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// X87 version:
+// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
+//
+// SSE version:
+// Swap x, y if |x|<|y|
+// For x=2^k*x, get y=y*2^(-k)
+// Get S ~ sqrt(x^2+y^2)  (leading 1 + leading 25 mantissa bits)
+//
+// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
+//                               + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
+//
+// Result is 2^k*(S + Se),  where Se = S*e
+//        S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
+//
+// Return 2^k*(S+Se)
+//
+// For |y/x|<2^(-64), return x
+//
+// For cases where maximum biased exponent is either greater than 7fdh or
+// below 32, take a special path to check for special cases (0, NaN, Inf),
+// possible overflow, and more accurate computation for denormal results
+//
+// Special cases:
+//  hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
+//  hypot(x,+-0) is equivalent to fabs(x)
+//  hypot(x,y) = y if (x==NaN or x==INF) and y==INF
+//  hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
+//  hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  hypot
+ENTRY(hypot)
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $152, %esp
+        movl      %ebx, 96(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movapd    (%ebx), %xmm3
+        movsd     160(%esp), %xmm0
+        movsd     168(%esp), %xmm1
+        andpd     %xmm3, %xmm0
+        andpd     %xmm3, %xmm1
+        pextrw    $3, %xmm0, %eax
+        pextrw    $3, %xmm1, %edx
+        cmpl      $24528, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        cmpl      $24528, %edx
+        ja        .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        fldl      160(%esp)
+        fldl      168(%esp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        cmpl      $32752, %eax
+        movl      %eax, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        subl      %edx, %ecx
+        cmpl      $32752, %edx
+        jae       .L_2TAG_PACKET_3.0.2
+        addl      $928, %ecx
+        addl      %edx, %eax
+        cmpl      $1856, %ecx
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $49056, %eax
+        jb        .L_2TAG_PACKET_1.0.2
+        fldl      160(%esp)
+        fldl      168(%esp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+.L_2TAG_PACKET_5.0.2:
+        fstl      (%esp)
+        fstpt     16(%esp)
+        xorl      %eax, %eax
+        movw      24(%esp), %ax
+        cmpl      $17407, %eax
+        jae       .L_2TAG_PACKET_6.0.2
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_4.0.2:
+        movsd     %xmm0, 32(%esp)
+        movsd     %xmm1, 40(%esp)
+        fldl      32(%esp)
+        faddl     40(%esp)
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_6.0.2:
+        movl      $46, %edx
+.L_2TAG_PACKET_8.0.2:
+        movsd     160(%esp), %xmm0
+        movsd     168(%esp), %xmm1
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        shufpd    $0, %xmm1, %xmm0
+        movdqa    %xmm0, %xmm2
+        movdqa    16(%ebx), %xmm3
+        movsd     %xmm0, 32(%esp)
+        movsd     %xmm1, 40(%esp)
+        cmppd     $3, %xmm0, %xmm2
+        cmppd     $0, %xmm0, %xmm3
+        movmskpd  %xmm2, %edx
+        movmskpd  %xmm3, %eax
+        testl     %edx, %edx
+        je        .L_2TAG_PACKET_9.0.2
+        fldl      32(%esp)
+        fmull     40(%esp)
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_10.0.2
+        testl     $2, %eax
+        jne       .L_2TAG_PACKET_11.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_9.0.2:
+        fldl      32(%esp)
+        faddl     40(%esp)
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_10.0.2:
+        fstpl     40(%esp)
+        fldl      32(%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_11.0.2:
+        fstpl     32(%esp)
+        fldl      40(%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_2.0.2:
+.L_2TAG_PACKET_7.0.2:
+        movl      96(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(hypot)
+# -- End  hypot
+
+# Start file scope ASM
+ALIAS_SYMBOL(hypotl, hypot);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4294967295
+	.long	2147483647
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	2146435072
+	.type	static_const_table,@object
+	.size	static_const_table,32
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_log.S b/libm/x86/e_log.S
new file mode 100644
index 0000000..a6181ca
--- /dev/null
+++ b/libm/x86/e_log.S
@@ -0,0 +1,780 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log(NaN) = quiet NaN, and raise invalid exception
+//  log(+INF) = that INF
+//  log(0) = -INF with divide-by-zero exception raised
+//  log(1) = +0
+//  log(x) = NaN with invalid exception raised if x < -0, including -INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  log
+ENTRY(log)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm3
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        movl      $32768, %ecx
+        movd      %ecx, %xmm4
+        movsd     2128(%ebx), %xmm5
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        movl      $16352, %ecx
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        paddd     %xmm4, %xmm0
+        orpd      %xmm3, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        mulpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulsd     %xmm0, %xmm1
+        movsd     2064(%ebx), %xmm6
+        movapd    2080(%ebx), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%ebx,%edx), %xmm0
+        movapd    2096(%ebx), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    2112(%ebx), %xmm2
+        mulsd     %xmm7, %xmm6
+        pshufd    $68, %xmm1, %xmm5
+        mulsd     2072(%ebx), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        mulpd     %xmm5, %xmm5
+        pshufd    $228, %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        pshufd    $238, %xmm0, %xmm2
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        ja        .L_2TAG_PACKET_5.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $3, %edx
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_9.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_8.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $2, %edx
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_4.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movapd    %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        movl      $18416, %ecx
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(log)
+# -- End  log
+
+# Start file scope ASM
+ALIAS_SYMBOL(logl, log);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	4294959104
+	.type	static_const_table,@object
+	.size	static_const_table,2144
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_log10.S b/libm/x86/e_log10.S
new file mode 100644
index 0000000..09b2952
--- /dev/null
+++ b/libm/x86/e_log10.S
@@ -0,0 +1,795 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*LH*2^7+0.5))/2^7
+//    LH is a short approximation for log10(e)
+//
+//    Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
+//
+//    Result:  k*log10(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log10(0) = -INF with divide-by-zero exception raised                                           
+//  log10(1) = +0
+//  log10(x) = NaN with invalid exception raised if x < -0, including -INF
+//  log10(+INF) = +INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  log10
+ENTRY(log10)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movl      $1054736384, %ecx
+        movd      %ecx, %xmm7
+        xorpd     %xmm3, %xmm3
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm3
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        movl      $32768, %edx
+        movd      %edx, %xmm4
+        movapd    2128(%ebx), %xmm5
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $16352, %ecx
+        psllq     $5, %xmm0
+        movsd     2144(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        orpd      %xmm3, %xmm1
+        andpd     %xmm1, %xmm5
+        paddd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm6, %xmm0
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        mulsd     %xmm0, %xmm1
+        movsd     2064(%ebx), %xmm6
+        movapd    2080(%ebx), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    -1504(%ebx,%edx), %xmm0
+        movapd    2096(%ebx), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    2112(%ebx), %xmm2
+        mulsd     %xmm7, %xmm6
+        pshufd    $68, %xmm1, %xmm5
+        mulsd     2072(%ebx), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        movsd     2152(%ebx), %xmm6
+        mulpd     %xmm5, %xmm5
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        pshufd    $228, %xmm0, %xmm2
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm2
+        mulsd     %xmm1, %xmm6
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm0, %xmm2
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm6, %xmm1
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        ja        .L_2TAG_PACKET_5.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $9, %edx
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_9.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_8.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $8, %edx
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_4.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psllq     $5, %xmm0
+        movsd     2144(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(log10)
+# -- End  log10
+
+# Start file scope ASM
+ALIAS_SYMBOL(log10l, log10);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	1352628224
+	.long	1070810131
+	.long	521319256
+	.long	1025503025
+	.long	2150839296
+	.long	1070801944
+	.long	3329350096
+	.long	3170190015
+	.long	1360613376
+	.long	1070793794
+	.long	2024059075
+	.long	1024991594
+	.long	1875350528
+	.long	1070785680
+	.long	2163882141
+	.long	3163564137
+	.long	2312126464
+	.long	1070777602
+	.long	1975711076
+	.long	1023674196
+	.long	1306336256
+	.long	1070769560
+	.long	3524899523
+	.long	3170508164
+	.long	1806334976
+	.long	1070761553
+	.long	4254777025
+	.long	1025238739
+	.long	2483193856
+	.long	1070753581
+	.long	3800671317
+	.long	3172916830
+	.long	2025350144
+	.long	1070745644
+	.long	1731514745
+	.long	1025501083
+	.long	3433285632
+	.long	1070737741
+	.long	2551857336
+	.long	3169662186
+	.long	1134317568
+	.long	1070729873
+	.long	3426297655
+	.long	3172637891
+	.long	2457152512
+	.long	1070722038
+	.long	63549415
+	.long	1025415416
+	.long	1861803008
+	.long	1070714237
+	.long	1910171636
+	.long	1023977580
+	.long	2414140416
+	.long	1070706469
+	.long	4002514337
+	.long	3170841618
+	.long	2900726784
+	.long	1070698734
+	.long	3268064083
+	.long	1022459609
+	.long	2123517952
+	.long	1070691032
+	.long	1767031218
+	.long	1022448156
+	.long	3194569728
+	.long	1070683362
+	.long	3402332618
+	.long	3171671160
+	.long	650882048
+	.long	1070675725
+	.long	4146023905
+	.long	3171023038
+	.long	1928988672
+	.long	1070668119
+	.long	1438617867
+	.long	1016360491
+	.long	1594908672
+	.long	1070660545
+	.long	971389377
+	.long	1024763979
+	.long	2818746368
+	.long	1070653002
+	.long	3555925341
+	.long	3172434821
+	.long	194584576
+	.long	1070645491
+	.long	943919215
+	.long	3172950063
+	.long	1215096832
+	.long	1070638010
+	.long	2283358588
+	.long	1022335098
+	.long	501519360
+	.long	1070630560
+	.long	480904295
+	.long	1024437959
+	.long	1278266368
+	.long	1070623140
+	.long	2755806066
+	.long	3172342012
+	.long	2487812096
+	.long	1070615750
+	.long	2489653202
+	.long	3172481099
+	.long	3085451264
+	.long	1070608390
+	.long	3759184951
+	.long	3172574892
+	.long	2039090176
+	.long	1070601060
+	.long	1361176676
+	.long	3172355319
+	.long	953057280
+	.long	1070591423
+	.long	1176587546
+	.long	3166422018
+	.long	3370524672
+	.long	1070576879
+	.long	3669570051
+	.long	1025376630
+	.long	749742080
+	.long	1070562394
+	.long	707700964
+	.long	3170814058
+	.long	4008353792
+	.long	1070547965
+	.long	3247327652
+	.long	1022431400
+	.long	2612455424
+	.long	1070533594
+	.long	2453457344
+	.long	3172322969
+	.long	3230920704
+	.long	1070519279
+	.long	1296781801
+	.long	1025115335
+	.long	3965253632
+	.long	1070505020
+	.long	373075289
+	.long	1017938528
+	.long	2593157120
+	.long	1070476669
+	.long	1068054086
+	.long	1021616576
+	.long	925962240
+	.long	1070448537
+	.long	850121213
+	.long	1023928989
+	.long	1732556800
+	.long	1070420620
+	.long	1305206740
+	.long	3172665570
+	.long	3815630848
+	.long	1070392915
+	.long	192642943
+	.long	3172699907
+	.long	2001758208
+	.long	1070365420
+	.long	2820786683
+	.long	1024704867
+	.long	16746496
+	.long	1070338131
+	.long	1399573110
+	.long	3171372773
+	.long	1886492672
+	.long	1070311044
+	.long	3621428075
+	.long	3172974358
+	.long	3338196992
+	.long	1070284157
+	.long	3793882035
+	.long	1025124701
+	.long	381769728
+	.long	1070257468
+	.long	3877933342
+	.long	3170195490
+	.long	2186491904
+	.long	1070230972
+	.long	1838687089
+	.long	1017927292
+	.long	1008330752
+	.long	1070204668
+	.long	2228321664
+	.long	1025352196
+	.long	2247065600
+	.long	1070178552
+	.long	1413900906
+	.long	3170902532
+	.long	2964070400
+	.long	1070152622
+	.long	3590454629
+	.long	1025016844
+	.long	465154048
+	.long	1070126876
+	.long	2079688550
+	.long	3172268183
+	.long	883615744
+	.long	1070101310
+	.long	989244452
+	.long	3171900485
+	.long	1993768960
+	.long	1070075922
+	.long	1124327841
+	.long	3172964992
+	.long	1794471936
+	.long	1070050710
+	.long	1140575046
+	.long	1022673726
+	.long	2797932544
+	.long	1070025671
+	.long	1894836933
+	.long	3172544059
+	.long	3433797632
+	.long	1070000803
+	.long	3221831166
+	.long	3171921685
+	.long	2338371584
+	.long	1069976104
+	.long	3732461053
+	.long	3164513518
+	.long	2644013056
+	.long	1069951571
+	.long	2519460462
+	.long	3172548740
+	.long	3383814144
+	.long	1069927202
+	.long	2290997657
+	.long	1025499649
+	.long	3781380096
+	.long	1069902995
+	.long	380479405
+	.long	1025184136
+	.long	3245785088
+	.long	1069878948
+	.long	1096398261
+	.long	3169885192
+	.long	1366712320
+	.long	1069855059
+	.long	2218343715
+	.long	3170281628
+	.long	2204717056
+	.long	1069831325
+	.long	2668334011
+	.long	1025264524
+	.long	1401772032
+	.long	1069807745
+	.long	4103993159
+	.long	1022925721
+	.long	3356721152
+	.long	1069784316
+	.long	3573790772
+	.long	3172186527
+	.long	4041148416
+	.long	1069761037
+	.long	4027691910
+	.long	3171276990
+	.long	3880151040
+	.long	1069737906
+	.long	4087118786
+	.long	3172710734
+	.long	3453364224
+	.long	1069714921
+	.long	99014299
+	.long	3172003077
+	.long	3491092480
+	.long	1069692080
+	.long	3801836701
+	.long	3172989287
+	.long	575580160
+	.long	1069669382
+	.long	1920406012
+	.long	3170874125
+	.long	22282240
+	.long	1069646824
+	.long	964193370
+	.long	1019363159
+	.long	2991429632
+	.long	1069624404
+	.long	3372589890
+	.long	1023425053
+	.long	2189645824
+	.long	1069602122
+	.long	2610503872
+	.long	1023652442
+	.long	3341467648
+	.long	1069579975
+	.long	1190292004
+	.long	1022425665
+	.long	3711293440
+	.long	1069557962
+	.long	1104795356
+	.long	1023625829
+	.long	1380401152
+	.long	1069524644
+	.long	1156998217
+	.long	1025100499
+	.long	765710336
+	.long	1069481144
+	.long	1736649113
+	.long	1024999439
+	.long	849412096
+	.long	1069437902
+	.long	2618178330
+	.long	3170853629
+	.long	1433104384
+	.long	1069394915
+	.long	43477267
+	.long	3170378811
+	.long	2548596736
+	.long	1069352180
+	.long	3967367063
+	.long	1025246584
+	.long	157577216
+	.long	1069309695
+	.long	100402533
+	.long	3172825502
+	.long	3326238720
+	.long	1069267455
+	.long	1176892909
+	.long	1025464099
+	.long	4155494400
+	.long	1069225459
+	.long	3713707617
+	.long	3172630046
+	.long	3545804800
+	.long	1069183704
+	.long	857007315
+	.long	1024965777
+	.long	2602520576
+	.long	1069142187
+	.long	2588758347
+	.long	1022463131
+	.long	2631196672
+	.long	1069100905
+	.long	2118424235
+	.long	1022490989
+	.long	838135808
+	.long	1069059856
+	.long	4117002727
+	.long	1024874520
+	.long	3210903552
+	.long	1069019036
+	.long	650070125
+	.long	3172012966
+	.long	3039211520
+	.long	1068978444
+	.long	438055812
+	.long	1017743757
+	.long	2385633280
+	.long	1068938077
+	.long	3011990369
+	.long	3171312044
+	.long	3491618816
+	.long	1068897932
+	.long	712813818
+	.long	3172720400
+	.long	183644160
+	.long	1068858008
+	.long	4287006742
+	.long	1022379728
+	.long	3639214080
+	.long	1068818300
+	.long	353762279
+	.long	3172980009
+	.long	3728416768
+	.long	1068778808
+	.long	1851367730
+	.long	1025486574
+	.long	3370094592
+	.long	1068739529
+	.long	4046594913
+	.long	3172567047
+	.long	1348407296
+	.long	1068700461
+	.long	143189675
+	.long	1025397632
+	.long	899403776
+	.long	1068661601
+	.long	3753687842
+	.long	3170772772
+	.long	1117708288
+	.long	1068622947
+	.long	1857340812
+	.long	3170782678
+	.long	1248276480
+	.long	1068584497
+	.long	1289858203
+	.long	1025222289
+	.long	683237376
+	.long	1068546249
+	.long	2356679608
+	.long	3171629170
+	.long	3253764096
+	.long	1068508200
+	.long	3267136556
+	.long	1018554987
+	.long	94478336
+	.long	1068441756
+	.long	1927868814
+	.long	3169378180
+	.long	3233144832
+	.long	1068366445
+	.long	2682188854
+	.long	1023964004
+	.long	2940297216
+	.long	1068291522
+	.long	275301289
+	.long	1023944679
+	.long	3677708288
+	.long	1068216982
+	.long	302658771
+	.long	1024465567
+	.long	1576968192
+	.long	1068142822
+	.long	3672035940
+	.long	3172254610
+	.long	1614069760
+	.long	1068069037
+	.long	480052905
+	.long	3172692062
+	.long	424435712
+	.long	1067995624
+	.long	2207869657
+	.long	3170965436
+	.long	3477782528
+	.long	1067922578
+	.long	2980661858
+	.long	3164990018
+	.long	3598401536
+	.long	1067849897
+	.long	1974393034
+	.long	3171357083
+	.long	2435235840
+	.long	1067777577
+	.long	1385289011
+	.long	1024615823
+	.long	1867333632
+	.long	1067705614
+	.long	3442236633
+	.long	1025334384
+	.long	3999301632
+	.long	1067634004
+	.long	3506472073
+	.long	1025132546
+	.long	2566971392
+	.long	1067562745
+	.long	1425757592
+	.long	3172358463
+	.long	112943104
+	.long	1067491833
+	.long	1693407156
+	.long	3172426603
+	.long	3079929856
+	.long	1067392159
+	.long	3999942455
+	.long	1018549369
+	.long	2443837440
+	.long	1067251701
+	.long	974534460
+	.long	1023963412
+	.long	359366656
+	.long	1067111917
+	.long	2204915018
+	.long	1013514416
+	.long	3564519424
+	.long	1066972799
+	.long	3977441659
+	.long	3170879860
+	.long	2011086848
+	.long	1066834343
+	.long	590145514
+	.long	1025390011
+	.long	3216982016
+	.long	1066696541
+	.long	3629120110
+	.long	1024330313
+	.long	2194128896
+	.long	1066559388
+	.long	2367098512
+	.long	3172260338
+	.long	2916220928
+	.long	1066422877
+	.long	2262431886
+	.long	1021229446
+	.long	2263941120
+	.long	1066172214
+	.long	3118507287
+	.long	1021484970
+	.long	3076292608
+	.long	1065901726
+	.long	1411737803
+	.long	3172957147
+	.long	1186136064
+	.long	1065632488
+	.long	3109349337
+	.long	1025397383
+	.long	3085303808
+	.long	1065364487
+	.long	584715031
+	.long	3172596519
+	.long	1821048832
+	.long	1064842211
+	.long	2182246895
+	.long	3172536214
+	.long	697368576
+	.long	1064311094
+	.long	3157561765
+	.long	3172716357
+	.long	894042112
+	.long	1063260131
+	.long	3237958154
+	.long	3172587292
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1352628224
+	.long	1066615827
+	.long	521319256
+	.long	1021308721
+	.long	3248877870
+	.long	1077250164
+	.long	1691676429
+	.long	3221787401
+	.long	945132465
+	.long	3223701783
+	.long	3700831335
+	.long	1073506818
+	.long	2141010593
+	.long	1075227551
+	.long	3698831637
+	.long	3220339442
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	1071366144
+	.long	3207479560
+	.long	1062894188
+	.type	static_const_table,@object
+	.size	static_const_table,2160
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_pow.S b/libm/x86/e_pow.S
new file mode 100644
index 0000000..43e30d8
--- /dev/null
+++ b/libm/x86/e_pow.S
@@ -0,0 +1,4277 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    log2(x) calculation:
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*LH*2^9+0.5))/2^9
+//    LH is a short approximation for log2(e)
+//
+//    Reduced argument, scaled by LH:
+//                r=B*mx-LH (computed accurately in high and low parts)
+//
+//    log2(x) result:  k - log2(B) + p(r)
+//             p(r) is a degree 8 polynomial
+//             -log2(B) read from data table (high, low parts)
+//             log2(x) is formed from high and low parts
+//    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
+//    based om the same table design is performed.
+//
+//   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
+//   to filter out all potential OF/UF cases.
+//   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
+//   polynomial
+//
+// Special cases:
+//  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd 
+//  integer < 0.
+//  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and 
+//  not an odd integer.
+//  pow(-0,y) = -0 for y an odd integer > 0.
+//  pow(-0,y) = +0 for y > 0 and not an odd integer.
+//  pow(-1,-INF) = 1.
+//  pow(+1,y) = 1 for any y, even a NaN.
+//  pow(x,-0) = 1 for any x, even a NaN.
+//  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
+//  finite non-integer y.
+//  pow(x,-INF) = +INF for |x|<1.
+//  pow(x,-INF) = +0 for |x|>1.
+//  pow(x,+INF) = +0 for |x|<1.
+//  pow(x,+INF) = +INF for |x|>1.
+//  pow(-INF,y) = -0 for y an odd integer < 0.
+//  pow(-INF,y) = +0 for y < 0 and not an odd integer.
+//  pow(-INF,y) = -INF for y an odd integer > 0.
+//  pow(-INF,y) = +INF for y > 0 and not an odd integer.
+//  pow(+INF,y) = +0 for y <0.
+//  pow(+INF,y) = +INF for y >0.
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  pow
+ENTRY(pow)
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        movsd     136(%esp), %xmm1
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movl      $1069088768, %ecx
+        movd      %ecx, %xmm7
+        movsd     %xmm1, 16(%esp)
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movsd     %xmm0, 8(%esp)
+        movapd    %xmm0, %xmm3
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        movapd    8240(%ebx), %xmm6
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        movsd     8256(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        psrlq     $12, %xmm3
+        movl      %esi, 24(%esp)
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        movl      $0, %esi
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        movl      $-1, %edx
+        subl      $4, %ecx
+        shll      %cl, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        subl      $16351, %eax
+        cmpl      $1, %eax
+        jbe       .L_2TAG_PACKET_2.0.2
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+.L_2TAG_PACKET_3.0.2:
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        subl      $1, %eax
+        sarl      $4, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+.L_2TAG_PACKET_4.0.2:
+        mulsd     %xmm0, %xmm3
+        movapd    8272(%ebx), %xmm1
+        subsd     %xmm2, %xmm5
+        movapd    8288(%ebx), %xmm4
+        movl      %eax, %ecx
+        sarl      $31, %eax
+        addl      %eax, %ecx
+        xorl      %ecx, %eax
+        addl      $1, %eax
+        bsr       %eax, %eax
+        unpcklpd  %xmm3, %xmm5
+        movapd    8304(%ebx), %xmm6
+        addsd     %xmm5, %xmm3
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3616(%ebx,%edx), %xmm5
+        movapd    8320(%ebx), %xmm0
+        pshufd    $68, %xmm3, %xmm2
+        mulsd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm1
+        mulpd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm5
+        mulsd     %xmm3, %xmm2
+        addpd     %xmm1, %xmm6
+        mulsd     %xmm3, %xmm3
+        addpd     %xmm4, %xmm0
+        movsd     16(%esp), %xmm1
+        movzwl    22(%esp), %ecx
+        pshufd    $238, %xmm5, %xmm7
+        movsd     8368(%ebx), %xmm4
+        mulpd     %xmm2, %xmm6
+        pshufd    $68, %xmm3, %xmm3
+        mulpd     %xmm2, %xmm0
+        shll      $4, %eax
+        subl      $15872, %eax
+        andl      $32752, %ecx
+        addl      %ecx, %eax
+        mulpd     %xmm6, %xmm3
+        cmpl      $624, %eax
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        movapd    %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm5, %xmm1
+        movapd    %xmm6, %xmm7
+        addsd     %xmm4, %xmm6
+        addpd     %xmm0, %xmm3
+        movd      %xmm6, %edx
+        subsd     %xmm7, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        subsd     %xmm6, %xmm4
+        addsd     %xmm3, %xmm0
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    8384(%ebx,%edx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        movapd    12480(%ebx), %xmm7
+        movapd    12496(%ebx), %xmm3
+        shll      $12, %ecx
+        xorl      %esi, %ecx
+        andl      $-1048576, %ecx
+        movd      %ecx, %xmm6
+        addsd     %xmm4, %xmm2
+        movsd     12512(%ebx), %xmm1
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulpd     %xmm0, %xmm0
+        movl      24(%esp), %esi
+        mulpd     %xmm4, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_7.0.2:
+        movsd     128(%esp), %xmm0
+        movsd     136(%esp), %xmm1
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $16, %eax
+        movl      $32752, %edx
+        andl      %eax, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_8.0.2
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_10.0.2:
+        movl      16(%esp), %ecx
+        xorl      %edx, %edx
+        testl     %ecx, %ecx
+        movl      $1, %ecx
+        cmovne    %ecx, %edx
+        orl       20(%esp), %edx
+        cmpl      $1072693248, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        movsd     8(%esp), %xmm0
+        movsd     8(%esp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_11.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psllq     $5, %xmm0
+        movsd     8256(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    8240(%ebx), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $0, %esi
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_12.0.2:
+        movl      16(%esp), %ecx
+        xorl      %edx, %edx
+        testl     %ecx, %ecx
+        movl      $1, %ecx
+        cmovne    %ecx, %edx
+        orl       20(%esp), %edx
+        cmpl      $1072693248, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        movsd     8(%esp), %xmm0
+        movsd     8(%esp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_11.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psllq     $5, %xmm0
+        movsd     8256(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    8240(%ebx), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $-2147483648, %esi
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_13.0.2
+        cmpl      $736, %eax
+        jae       .L_2TAG_PACKET_14.0.2
+.L_2TAG_PACKET_15.0.2:
+        addsd     %xmm7, %xmm0
+        movsd     12544(%ebx), %xmm2
+        addpd     %xmm0, %xmm3
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm3, %xmm0
+        movapd    %xmm5, %xmm3
+        addsd     %xmm0, %xmm5
+        movapd    %xmm2, %xmm4
+        subsd     %xmm5, %xmm3
+        movapd    %xmm5, %xmm7
+        andpd     %xmm2, %xmm5
+        movapd    %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm7
+        addsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm0, %xmm2
+        movapd    %xmm6, %xmm7
+        mulsd     %xmm5, %xmm1
+        addsd     %xmm4, %xmm6
+        movd      %xmm6, %eax
+        subsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm2
+        movapd    12480(%ebx), %xmm7
+        movapd    12496(%ebx), %xmm3
+        subsd     %xmm6, %xmm4
+        pextrw    $3, %xmm6, %edx
+        movl      %eax, %ecx
+        andl      $255, %eax
+        addl      %eax, %eax
+        movapd    8384(%ebx,%eax,8), %xmm5
+        addsd     %xmm4, %xmm2
+        sarl      $8, %ecx
+        movl      %ecx, %eax
+        sarl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        xorl      %esi, %ecx
+        movd      %ecx, %xmm6
+        movsd     12512(%ebx), %xmm1
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_14.0.2
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm4, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        shll      $4, %eax
+        xorpd     %xmm4, %xmm4
+        addl      $16368, %eax
+        pinsrw    $3, %eax, %xmm4
+        addsd     %xmm1, %xmm0
+        movl      24(%esp), %esi
+        addsd     %xmm3, %xmm0
+        movapd    %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_16.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_18.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_8.0.2:
+        movsd     16(%esp), %xmm1
+        movsd     8(%esp), %xmm0
+        movapd    %xmm0, %xmm2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_19.0.2
+        addsd     %xmm0, %xmm0
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_20.0.2
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_20.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $29, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_22.0.2:
+        movsd     16(%esp), %xmm0
+        addpd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_19.0.2:
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_23.0.2
+        pextrw    $3, %xmm2, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_24.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_22.0.2
+.L_2TAG_PACKET_24.0.2:
+        pextrw    $3, %xmm0, %eax
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_25.0.2
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_26.0.2
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_27.0.2:
+        movsd     16(%esp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_28.0.2
+        testl     $2, %eax
+        jne       .L_2TAG_PACKET_29.0.2
+        jmp       .L_2TAG_PACKET_28.0.2
+.L_2TAG_PACKET_25.0.2:
+        shrl      $20, %ecx
+        andl      $2047, %ecx
+        cmpl      $1075, %ecx
+        ja        .L_2TAG_PACKET_28.0.2
+        je        .L_2TAG_PACKET_30.0.2
+        cmpl      $1074, %ecx
+        ja        .L_2TAG_PACKET_27.0.2
+        cmpl      $1023, %ecx
+        jb        .L_2TAG_PACKET_28.0.2
+        movsd     16(%esp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movapd    %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_28.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_28.0.2
+.L_2TAG_PACKET_29.0.2:
+        movsd     16(%esp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        je        .L_2TAG_PACKET_18.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_28.0.2:
+        movsd     16(%esp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_26.0.2
+.L_2TAG_PACKET_31.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_30.0.2:
+        movsd     16(%esp), %xmm1
+        movd      %xmm1, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_28.0.2
+        jmp       .L_2TAG_PACKET_29.0.2
+.L_2TAG_PACKET_32.0.2:
+        movd      %xmm1, %eax
+        psrlq     $20, %xmm1
+        movd      %xmm1, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_33.0.2
+        movsd     16(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_33.0.2:
+        movsd     8(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        cmpl      $49136, %eax
+        jne       .L_2TAG_PACKET_34.0.2
+        movd      %xmm0, %ecx
+        psrlq     $20, %xmm0
+        movd      %xmm0, %edx
+        orl       %edx, %ecx
+        jne       .L_2TAG_PACKET_34.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_34.0.2:
+        movsd     16(%esp), %xmm1
+        andl      $32752, %eax
+        subl      $16368, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        xorl      %edx, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+        movl      $32752, %ecx
+        pinsrw    $3, %ecx, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_35.0.2:
+        movd      %xmm1, %eax
+        cmpl      $17184, %edx
+        ja        .L_2TAG_PACKET_36.0.2
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_37.0.2
+        testl     $2, %eax
+        je        .L_2TAG_PACKET_38.0.2
+        jmp       .L_2TAG_PACKET_39.0.2
+.L_2TAG_PACKET_36.0.2:
+        testl     $1, %eax
+        je        .L_2TAG_PACKET_38.0.2
+        jmp       .L_2TAG_PACKET_39.0.2
+.L_2TAG_PACKET_9.0.2:
+        movsd     8(%esp), %xmm2
+        movd      %xmm2, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_11.0.2
+        movsd     16(%esp), %xmm1
+        pextrw    $3, %xmm1, %edx
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        addl      %ecx, %ecx
+        orl       %eax, %ecx
+        je        .L_2TAG_PACKET_40.0.2
+        andl      $32752, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_32.0.2
+        cmpl      $17200, %edx
+        ja        .L_2TAG_PACKET_38.0.2
+        cmpl      $17184, %edx
+        jae       .L_2TAG_PACKET_35.0.2
+        cmpl      $16368, %edx
+        jb        .L_2TAG_PACKET_37.0.2
+        movl      $17208, %eax
+        xorpd     %xmm2, %xmm2
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm2, %xmm4
+        addsd     %xmm1, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32767, %eax
+        jne       .L_2TAG_PACKET_37.0.2
+        movd      %xmm2, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_38.0.2
+.L_2TAG_PACKET_39.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movsd     8256(%ebx), %xmm2
+        movsd     8(%esp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_12.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $-2147483648, %esi
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_37.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        xorpd     %xmm0, %xmm0
+        mulsd     %xmm1, %xmm0
+        movl      $28, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_38.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movsd     8256(%ebx), %xmm2
+        movsd     8(%esp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_10.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $0, %esi
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_23.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_26.0.2:
+        xorpd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_13.0.2:
+        addl      $384, %eax
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_41.0.2
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm0
+        shrl      $31, %esi
+        addpd     %xmm0, %xmm3
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm0, %xmm3
+        movsd     12528(%ebx,%esi,8), %xmm4
+        mulsd     %xmm3, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        shll      $15, %esi
+        orl       %esi, %eax
+        pinsrw    $3, %eax, %xmm0
+        addsd     %xmm1, %xmm5
+        movl      24(%esp), %esi
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_41.0.2:
+        movl      24(%esp), %esi
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_40.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_42.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $26, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     16(%esp), %xmm1
+        movapd    %xmm1, %xmm2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_43.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_22.0.2
+.L_2TAG_PACKET_43.0.2:
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_42.0.2
+        shrl      $21, %edx
+        cmpl      $1075, %edx
+        ja        .L_2TAG_PACKET_44.0.2
+        je        .L_2TAG_PACKET_45.0.2
+        cmpl      $1023, %edx
+        jb        .L_2TAG_PACKET_44.0.2
+        movsd     16(%esp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movapd    %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_44.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_44.0.2
+.L_2TAG_PACKET_46.0.2:
+        movsd     8(%esp), %xmm0
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_47.0.2
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_45.0.2:
+        movsd     16(%esp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_46.0.2
+.L_2TAG_PACKET_44.0.2:
+        testl     $-2147483648, %ecx
+        je        .L_2TAG_PACKET_26.0.2
+        xorpd     %xmm0, %xmm0
+.L_2TAG_PACKET_47.0.2:
+        movl      $16368, %eax
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %eax, %xmm1
+        divsd     %xmm0, %xmm1
+        movapd    %xmm1, %xmm0
+        movl      $27, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_14.0.2:
+        movsd     8(%esp), %xmm2
+        movsd     16(%esp), %xmm6
+        pextrw    $3, %xmm2, %eax
+        pextrw    $3, %xmm6, %edx
+        movl      $32752, %ecx
+        andl      %edx, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_48.0.2
+        andl      $32752, %eax
+        subl      $16368, %eax
+        xorl      %eax, %edx
+        testl     $32768, %edx
+        jne       .L_2TAG_PACKET_49.0.2
+.L_2TAG_PACKET_50.0.2:
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        shrl      $16, %esi
+        orl       %esi, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      24(%esp), %esi
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_17.0.2:
+        movl      $24, %edx
+.L_2TAG_PACKET_21.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_49.0.2:
+        movl      $16, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        testl     $-2147483648, %esi
+        je        .L_2TAG_PACKET_51.0.2
+        movsd     12560(%ebx), %xmm2
+        xorpd     %xmm2, %xmm0
+.L_2TAG_PACKET_51.0.2:
+        movl      24(%esp), %esi
+        movl      $25, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_16.0.2:
+        pextrw    $3, %xmm5, %ecx
+        pextrw    $3, %xmm4, %edx
+        movl      $-1, %eax
+        andl      $32752, %ecx
+        subl      $16368, %ecx
+        andl      $32752, %edx
+        addl      %ecx, %edx
+        movl      $-31, %ecx
+        sarl      $4, %edx
+        subl      %edx, %ecx
+        jle       .L_2TAG_PACKET_52.0.2
+        cmpl      $20, %ecx
+        ja        .L_2TAG_PACKET_53.0.2
+        shll      %cl, %eax
+.L_2TAG_PACKET_52.0.2:
+        movd      %eax, %xmm0
+        psllq     $32, %xmm0
+        andpd     %xmm5, %xmm0
+        subsd     %xmm0, %xmm5
+        addsd     %xmm1, %xmm5
+        mulsd     %xmm4, %xmm0
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+.L_2TAG_PACKET_53.0.2:
+        movl      $25, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_2.0.2:
+        movzwl    22(%esp), %ecx
+        movl      $-2147483648, %edx
+        movd      %edx, %xmm1
+        xorpd     %xmm7, %xmm7
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        paddq     %xmm3, %xmm1
+        andpd     %xmm1, %xmm5
+        andl      $32752, %ecx
+        cmpl      $16560, %ecx
+        jb        .L_2TAG_PACKET_3.0.2
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        addl      $16351, %eax
+        shrl      $4, %eax
+        subl      $1022, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        movsd     (%ebx), %xmm4
+        mulsd     %xmm0, %xmm3
+        movsd     (%ebx), %xmm6
+        subsd     %xmm2, %xmm5
+        movsd     8(%ebx), %xmm1
+        pshufd    $68, %xmm3, %xmm2
+        unpcklpd  %xmm3, %xmm5
+        addsd     %xmm5, %xmm3
+        movsd     8(%ebx), %xmm0
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3616(%ebx,%edx), %xmm7
+        mulsd     %xmm5, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        movapd    %xmm5, %xmm2
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm0, %xmm5
+        movapd    %xmm7, %xmm0
+        addsd     %xmm3, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm6
+        subsd     %xmm7, %xmm0
+        movapd    %xmm7, %xmm2
+        addsd     %xmm4, %xmm7
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm4
+        pshufd    $238, %xmm5, %xmm2
+        movapd    %xmm7, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm0, %xmm4
+        movapd    8272(%ebx), %xmm0
+        subsd     %xmm7, %xmm5
+        addsd     %xmm4, %xmm6
+        movapd    %xmm7, %xmm4
+        addsd     %xmm2, %xmm5
+        addsd     %xmm1, %xmm7
+        movapd    8336(%ebx), %xmm2
+        subsd     %xmm7, %xmm4
+        addsd     %xmm5, %xmm6
+        addsd     %xmm1, %xmm4
+        pshufd    $238, %xmm7, %xmm5
+        movapd    %xmm7, %xmm1
+        addsd     %xmm5, %xmm7
+        subsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        movapd    8352(%ebx), %xmm5
+        pshufd    $68, %xmm3, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm1, %xmm6
+        movapd    8304(%ebx), %xmm1
+        mulpd     %xmm3, %xmm0
+        mulpd     %xmm3, %xmm2
+        pshufd    $68, %xmm3, %xmm4
+        mulpd     %xmm3, %xmm3
+        addpd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm5
+        mulsd     %xmm3, %xmm4
+        movsd     16(%ebx), %xmm2
+        mulpd     %xmm3, %xmm3
+        movsd     16(%esp), %xmm1
+        movzwl    22(%esp), %ecx
+        mulpd     %xmm4, %xmm0
+        pextrw    $3, %xmm7, %eax
+        mulpd     %xmm4, %xmm5
+        mulpd     %xmm3, %xmm0
+        movsd     8376(%ebx), %xmm4
+        andpd     %xmm7, %xmm2
+        addsd     %xmm6, %xmm5
+        subsd     %xmm2, %xmm7
+        addpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      $16368, %eax
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_48.0.2
+        addl      %eax, %ecx
+        cmpl      $16576, %ecx
+        jae       .L_2TAG_PACKET_54.0.2
+        pshufd    $238, %xmm5, %xmm0
+        andpd     %xmm1, %xmm4
+        movapd    %xmm1, %xmm3
+        addsd     %xmm0, %xmm5
+        subsd     %xmm4, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm1
+        movapd    %xmm6, %xmm5
+        mulsd     %xmm7, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        movapd    12480(%ebx), %xmm7
+        movd      %xmm6, %edx
+        subsd     %xmm5, %xmm6
+        movapd    12496(%ebx), %xmm3
+        movsd     12512(%ebx), %xmm2
+        subsd     %xmm6, %xmm4
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    8384(%ebx,%edx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        pextrw    $3, %xmm6, %edx
+        shrl      $8, %ecx
+        movl      %ecx, %eax
+        shrl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        movd      %ecx, %xmm6
+        pshufd    $68, %xmm4, %xmm0
+        pshufd    $68, %xmm4, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm1, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm4, %xmm2
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_14.0.2
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm2
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm2
+        pshufd    $238, %xmm0, %xmm3
+        addl      $1023, %eax
+        shll      $20, %eax
+        orl       %esi, %eax
+        movd      %eax, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm2, %xmm0
+        psllq     $32, %xmm4
+        addsd     %xmm3, %xmm0
+        movapd    %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        movl      24(%esp), %esi
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_16.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_55.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_48.0.2:
+        movl      24(%esp), %esi
+.L_2TAG_PACKET_56.0.2:
+        movsd     8(%esp), %xmm0
+        movsd     16(%esp), %xmm1
+        addsd     %xmm1, %xmm1
+        xorpd     %xmm2, %xmm2
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm2
+        addsd     %xmm0, %xmm2
+        pextrw    $3, %xmm2, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_18.0.2
+        movd      %xmm1, %edx
+        movapd    %xmm1, %xmm3
+        psrlq     $20, %xmm3
+        movd      %xmm3, %ecx
+        orl       %edx, %ecx
+        je        .L_2TAG_PACKET_57.0.2
+        addsd     %xmm1, %xmm1
+        movapd    %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_57.0.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        subl      $16368, %eax
+        xorl      %edx, %eax
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_54.0.2:
+        pextrw    $3, %xmm1, %eax
+        pextrw    $3, %xmm2, %ecx
+        xorl      %ecx, %eax
+        testl     $32768, %eax
+        je        .L_2TAG_PACKET_50.0.2
+        jmp       .L_2TAG_PACKET_49.0.2
+.L_2TAG_PACKET_6.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(pow)
+# -- End  pow
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	3218479616
+	.long	0
+	.long	3210587105
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	536870912
+	.long	1072689162
+	.long	2523013013
+	.long	1046157398
+	.long	3758096384
+	.long	1072685081
+	.long	3851513758
+	.long	3190968952
+	.long	0
+	.long	1072681007
+	.long	2241466466
+	.long	1046044599
+	.long	3221225472
+	.long	1072676937
+	.long	2990928271
+	.long	3193084984
+	.long	3758096384
+	.long	1072672873
+	.long	2905112743
+	.long	3192918576
+	.long	1610612736
+	.long	1072668815
+	.long	3370591264
+	.long	1046051793
+	.long	2147483648
+	.long	1072664762
+	.long	3272361216
+	.long	3193793653
+	.long	3758096384
+	.long	1072660714
+	.long	46546755
+	.long	1043206936
+	.long	3221225472
+	.long	1072656672
+	.long	3017067724
+	.long	3192177962
+	.long	0
+	.long	1072652636
+	.long	3688436631
+	.long	3192814956
+	.long	2684354560
+	.long	1072648604
+	.long	1707461992
+	.long	3193056712
+	.long	2684354560
+	.long	1072644578
+	.long	1188114540
+	.long	3193603086
+	.long	3758096384
+	.long	1072640557
+	.long	3533180564
+	.long	1045459375
+	.long	2684354560
+	.long	1072636542
+	.long	2000337630
+	.long	3193475557
+	.long	2684354560
+	.long	1072632532
+	.long	3698062443
+	.long	3193752766
+	.long	3758096384
+	.long	1072628527
+	.long	3161606138
+	.long	3190532995
+	.long	2147483648
+	.long	1072624528
+	.long	3165265478
+	.long	3193158459
+	.long	1610612736
+	.long	1072620534
+	.long	1600940077
+	.long	3193226777
+	.long	2147483648
+	.long	1072616545
+	.long	1363272552
+	.long	3192614278
+	.long	3758096384
+	.long	1072612561
+	.long	3966209910
+	.long	3191249654
+	.long	2147483648
+	.long	1072608583
+	.long	1093672789
+	.long	3190637330
+	.long	1610612736
+	.long	1072604610
+	.long	1735239357
+	.long	3192753616
+	.long	1610612736
+	.long	1072600642
+	.long	1470665156
+	.long	1045559697
+	.long	2684354560
+	.long	1072596679
+	.long	3840624926
+	.long	1045928953
+	.long	536870912
+	.long	1072592722
+	.long	4259072556
+	.long	3191035622
+	.long	3221225472
+	.long	1072588769
+	.long	3613088753
+	.long	3192165681
+	.long	2147483648
+	.long	1072584822
+	.long	3175234446
+	.long	1039486948
+	.long	1610612736
+	.long	1072580880
+	.long	856576441
+	.long	1045702812
+	.long	2147483648
+	.long	1072576943
+	.long	2253498719
+	.long	3193285334
+	.long	2684354560
+	.long	1072573011
+	.long	1587070728
+	.long	3190801577
+	.long	3758096384
+	.long	1072569084
+	.long	159986317
+	.long	1042519436
+	.long	1073741824
+	.long	1072565163
+	.long	3999541949
+	.long	3192020440
+	.long	2684354560
+	.long	1072561246
+	.long	3281310262
+	.long	1045586786
+	.long	536870912
+	.long	1072557335
+	.long	3775179406
+	.long	1045226055
+	.long	3221225472
+	.long	1072553428
+	.long	643472356
+	.long	3193681786
+	.long	1073741824
+	.long	1072549527
+	.long	248169775
+	.long	1045068977
+	.long	3758096384
+	.long	1072545630
+	.long	307016632
+	.long	1042640932
+	.long	2147483648
+	.long	1072541739
+	.long	3872718526
+	.long	3189781486
+	.long	536870912
+	.long	1072537853
+	.long	969711630
+	.long	3191724732
+	.long	3221225472
+	.long	1072533971
+	.long	4018820394
+	.long	3193189264
+	.long	1073741824
+	.long	1072530095
+	.long	3102233092
+	.long	1045510224
+	.long	3758096384
+	.long	1072526223
+	.long	1029307912
+	.long	3193812776
+	.long	1073741824
+	.long	1072522357
+	.long	984083153
+	.long	1045987403
+	.long	3221225472
+	.long	1072518495
+	.long	4171455401
+	.long	3193084080
+	.long	0
+	.long	1072514639
+	.long	2592660757
+	.long	1046121691
+	.long	1073741824
+	.long	1072510787
+	.long	2964365712
+	.long	1046054453
+	.long	2147483648
+	.long	1072506940
+	.long	3792777877
+	.long	3193704729
+	.long	2147483648
+	.long	1072503098
+	.long	2948536104
+	.long	3192467100
+	.long	1610612736
+	.long	1072499261
+	.long	3836005619
+	.long	1041873166
+	.long	536870912
+	.long	1072495429
+	.long	3124543160
+	.long	1044409168
+	.long	3221225472
+	.long	1072491601
+	.long	286227933
+	.long	1041065990
+	.long	1073741824
+	.long	1072487779
+	.long	2111296776
+	.long	3193604419
+	.long	2147483648
+	.long	1072483961
+	.long	2606822001
+	.long	3192940394
+	.long	2147483648
+	.long	1072480148
+	.long	194696800
+	.long	1046026063
+	.long	1610612736
+	.long	1072476340
+	.long	8535452
+	.long	1046200178
+	.long	536870912
+	.long	1072472537
+	.long	950463625
+	.long	3192731897
+	.long	2147483648
+	.long	1072468738
+	.long	973831566
+	.long	1045683197
+	.long	3221225472
+	.long	1072464944
+	.long	3330435892
+	.long	3190277577
+	.long	3221225472
+	.long	1072461155
+	.long	208692097
+	.long	3193517651
+	.long	1610612736
+	.long	1072457371
+	.long	2113097415
+	.long	1044781749
+	.long	3758096384
+	.long	1072453591
+	.long	1088808936
+	.long	3193716142
+	.long	0
+	.long	1072449817
+	.long	1443002127
+	.long	3193250205
+	.long	3221225472
+	.long	1072446046
+	.long	3967357419
+	.long	1046109477
+	.long	1610612736
+	.long	1072442281
+	.long	3013517861
+	.long	3193159691
+	.long	2147483648
+	.long	1072438520
+	.long	2524586286
+	.long	1046121951
+	.long	1610612736
+	.long	1072434764
+	.long	1476892861
+	.long	1046434731
+	.long	0
+	.long	1072431013
+	.long	3089640950
+	.long	3192305780
+	.long	536870912
+	.long	1072427266
+	.long	3812255529
+	.long	1045730879
+	.long	0
+	.long	1072423524
+	.long	995354762
+	.long	3191528673
+	.long	1610612736
+	.long	1072419786
+	.long	3260567684
+	.long	1046273695
+	.long	2147483648
+	.long	1072416053
+	.long	2738210286
+	.long	3191471516
+	.long	536870912
+	.long	1072412325
+	.long	1931849805
+	.long	1044560405
+	.long	1610612736
+	.long	1072408601
+	.long	358896655
+	.long	1044029237
+	.long	1073741824
+	.long	1072404882
+	.long	2214589842
+	.long	3193202126
+	.long	2684354560
+	.long	1072401167
+	.long	3118097363
+	.long	3192592906
+	.long	2147483648
+	.long	1072397457
+	.long	1835998884
+	.long	1045788247
+	.long	0
+	.long	1072393752
+	.long	1585488319
+	.long	1045289910
+	.long	0
+	.long	1072390051
+	.long	480160949
+	.long	1046030455
+	.long	2684354560
+	.long	1072386354
+	.long	1832959667
+	.long	3193013644
+	.long	2684354560
+	.long	1072382662
+	.long	3611346555
+	.long	1044544210
+	.long	1073741824
+	.long	1072378975
+	.long	2749418734
+	.long	3193712580
+	.long	1073741824
+	.long	1072375292
+	.long	2390043472
+	.long	3191710658
+	.long	3221225472
+	.long	1072371613
+	.long	2828199902
+	.long	1042265217
+	.long	3221225472
+	.long	1072367939
+	.long	569209321
+	.long	3191230982
+	.long	536870912
+	.long	1072364270
+	.long	236159139
+	.long	1046240123
+	.long	536870912
+	.long	1072360605
+	.long	1010656270
+	.long	3193813968
+	.long	1610612736
+	.long	1072356944
+	.long	2409080597
+	.long	1044025029
+	.long	536870912
+	.long	1072353288
+	.long	598419513
+	.long	1043327370
+	.long	1073741824
+	.long	1072349636
+	.long	4105950479
+	.long	1045747958
+	.long	3758096384
+	.long	1072345988
+	.long	343243853
+	.long	3192420172
+	.long	3221225472
+	.long	1072342345
+	.long	2088439530
+	.long	1046172091
+	.long	536870912
+	.long	1072338707
+	.long	4117721107
+	.long	1043882496
+	.long	3758096384
+	.long	1072335072
+	.long	3192032958
+	.long	3192998645
+	.long	3758096384
+	.long	1072331442
+	.long	2366522518
+	.long	1045401957
+	.long	1610612736
+	.long	1072327817
+	.long	3685533141
+	.long	3193701947
+	.long	536870912
+	.long	1072324196
+	.long	1058658672
+	.long	3193572492
+	.long	536870912
+	.long	1072320579
+	.long	166346347
+	.long	1045456348
+	.long	2147483648
+	.long	1072316966
+	.long	2027889772
+	.long	1046349302
+	.long	1073741824
+	.long	1072313358
+	.long	1079497888
+	.long	1044585259
+	.long	1073741824
+	.long	1072309754
+	.long	2189851573
+	.long	1045132990
+	.long	2684354560
+	.long	1072306154
+	.long	2486629386
+	.long	3193613625
+	.long	536870912
+	.long	1072302559
+	.long	1263686579
+	.long	1044789259
+	.long	0
+	.long	1072298968
+	.long	2412061798
+	.long	3191369627
+	.long	536870912
+	.long	1072295381
+	.long	584315716
+	.long	3193144135
+	.long	1610612736
+	.long	1072291798
+	.long	449000738
+	.long	1046330451
+	.long	0
+	.long	1072288220
+	.long	3938320157
+	.long	1044446220
+	.long	3758096384
+	.long	1072284645
+	.long	2949844595
+	.long	3193462371
+	.long	3758096384
+	.long	1072281075
+	.long	2771329642
+	.long	3192121593
+	.long	536870912
+	.long	1072277510
+	.long	3971508621
+	.long	3193002806
+	.long	2147483648
+	.long	1072273948
+	.long	4071942301
+	.long	1044952619
+	.long	536870912
+	.long	1072270391
+	.long	2090502395
+	.long	1044660556
+	.long	0
+	.long	1072266838
+	.long	3657520961
+	.long	3193770938
+	.long	3758096384
+	.long	1072263288
+	.long	1608175110
+	.long	1045543239
+	.long	0
+	.long	1072259744
+	.long	2506924180
+	.long	1045530501
+	.long	1073741824
+	.long	1072256203
+	.long	18238493
+	.long	1046305623
+	.long	3221225472
+	.long	1072252666
+	.long	3862640487
+	.long	3192882407
+	.long	1073741824
+	.long	1072249134
+	.long	3850158761
+	.long	1043656099
+	.long	3758096384
+	.long	1072245605
+	.long	2356524356
+	.long	1045915296
+	.long	3221225472
+	.long	1072242081
+	.long	936497287
+	.long	3193842353
+	.long	2147483648
+	.long	1072238561
+	.long	2840845344
+	.long	1046454771
+	.long	2147483648
+	.long	1072235045
+	.long	3688100713
+	.long	1044895451
+	.long	2684354560
+	.long	1072231533
+	.long	479979913
+	.long	3193842442
+	.long	2684354560
+	.long	1072228025
+	.long	1016321898
+	.long	1046251032
+	.long	3758096384
+	.long	1072224521
+	.long	562232474
+	.long	3191974558
+	.long	536870912
+	.long	1072221022
+	.long	3870512029
+	.long	3193113881
+	.long	1610612736
+	.long	1072217526
+	.long	1239780547
+	.long	3191583604
+	.long	2684354560
+	.long	1072214034
+	.long	2815421327
+	.long	1045873682
+	.long	0
+	.long	1072210547
+	.long	2371009561
+	.long	1041508792
+	.long	1610612736
+	.long	1072207063
+	.long	1304636524
+	.long	3192414284
+	.long	3221225472
+	.long	1072203583
+	.long	210144854
+	.long	3193327333
+	.long	0
+	.long	1072200108
+	.long	1454303272
+	.long	1046360024
+	.long	1610612736
+	.long	1072196636
+	.long	2095757548
+	.long	1044984677
+	.long	3221225472
+	.long	1072193168
+	.long	2027215580
+	.long	3192880933
+	.long	0
+	.long	1072189705
+	.long	214794880
+	.long	1043457954
+	.long	1073741824
+	.long	1072186245
+	.long	884624917
+	.long	1043497079
+	.long	2147483648
+	.long	1072182789
+	.long	2792396634
+	.long	3193171685
+	.long	2684354560
+	.long	1072179337
+	.long	4128995250
+	.long	3192103434
+	.long	2684354560
+	.long	1072175889
+	.long	333866043
+	.long	1046372325
+	.long	3221225472
+	.long	1072172445
+	.long	2194445544
+	.long	3193958905
+	.long	2684354560
+	.long	1072169005
+	.long	2316082269
+	.long	3192041703
+	.long	1610612736
+	.long	1072165569
+	.long	581005057
+	.long	1046322848
+	.long	536870912
+	.long	1072162137
+	.long	3280786513
+	.long	1045457251
+	.long	3221225472
+	.long	1072158708
+	.long	2567093361
+	.long	1044710359
+	.long	1073741824
+	.long	1072155284
+	.long	3740443584
+	.long	1044224237
+	.long	2684354560
+	.long	1072151863
+	.long	3981028272
+	.long	1042596351
+	.long	3758096384
+	.long	1072148446
+	.long	3820011120
+	.long	3191915623
+	.long	0
+	.long	1072145034
+	.long	2946439484
+	.long	3193831276
+	.long	3758096384
+	.long	1072141624
+	.long	3075274422
+	.long	3190132432
+	.long	2684354560
+	.long	1072138219
+	.long	496052167
+	.long	1043619760
+	.long	1073741824
+	.long	1072134818
+	.long	271106589
+	.long	3192265149
+	.long	2684354560
+	.long	1072131420
+	.long	2091955684
+	.long	1044443554
+	.long	3758096384
+	.long	1072128026
+	.long	723240109
+	.long	3191007419
+	.long	3758096384
+	.long	1072124636
+	.long	1748629070
+	.long	1044510075
+	.long	3221225472
+	.long	1072121250
+	.long	3289522046
+	.long	3193095178
+	.long	1610612736
+	.long	1072117868
+	.long	3599052146
+	.long	3193720427
+	.long	3221225472
+	.long	1072114489
+	.long	2446758135
+	.long	3193436303
+	.long	3758096384
+	.long	1072111114
+	.long	1652171097
+	.long	3192137173
+	.long	3221225472
+	.long	1072107743
+	.long	1353007155
+	.long	1044523902
+	.long	1610612736
+	.long	1072104376
+	.long	990601105
+	.long	1046296663
+	.long	3758096384
+	.long	1072101012
+	.long	2228627618
+	.long	3193041040
+	.long	0
+	.long	1072097653
+	.long	812484756
+	.long	3191950723
+	.long	3758096384
+	.long	1072094296
+	.long	817833130
+	.long	3192279242
+	.long	2147483648
+	.long	1072090944
+	.long	3563228521
+	.long	3193810951
+	.long	3221225472
+	.long	1072087595
+	.long	2729108859
+	.long	3190936185
+	.long	3221225472
+	.long	1072084250
+	.long	2249121662
+	.long	3190639690
+	.long	2147483648
+	.long	1072080909
+	.long	4082471745
+	.long	3193929368
+	.long	3758096384
+	.long	1072077571
+	.long	2827323806
+	.long	3193708561
+	.long	3758096384
+	.long	1072074237
+	.long	735866167
+	.long	1042434690
+	.long	2684354560
+	.long	1072070907
+	.long	3240808889
+	.long	3191918422
+	.long	0
+	.long	1072067581
+	.long	466482777
+	.long	3186962221
+	.long	0
+	.long	1072064258
+	.long	1576076296
+	.long	1045849056
+	.long	3221225472
+	.long	1072060938
+	.long	2751923560
+	.long	3191910703
+	.long	0
+	.long	1072057623
+	.long	1908755527
+	.long	1046437515
+	.long	0
+	.long	1072054311
+	.long	3175841411
+	.long	1044572886
+	.long	2684354560
+	.long	1072051002
+	.long	1633258450
+	.long	3192670420
+	.long	3221225472
+	.long	1072047697
+	.long	1867746657
+	.long	1045726209
+	.long	2684354560
+	.long	1072044396
+	.long	338968864
+	.long	3193084662
+	.long	0
+	.long	1072041099
+	.long	1501742471
+	.long	3191742031
+	.long	0
+	.long	1072037805
+	.long	4266775786
+	.long	3192686970
+	.long	2147483648
+	.long	1072034514
+	.long	4249283553
+	.long	1045769728
+	.long	2684354560
+	.long	1072031227
+	.long	2758366873
+	.long	1046402161
+	.long	1610612736
+	.long	1072027944
+	.long	2161186990
+	.long	1044736865
+	.long	2684354560
+	.long	1072024664
+	.long	810300171
+	.long	1045748777
+	.long	2147483648
+	.long	1072021388
+	.long	183688927
+	.long	3191515581
+	.long	3758096384
+	.long	1072018115
+	.long	368874072
+	.long	3192363575
+	.long	3221225472
+	.long	1072014846
+	.long	2459092970
+	.long	1041794640
+	.long	536870912
+	.long	1072011581
+	.long	867488640
+	.long	1046310291
+	.long	536870912
+	.long	1072008319
+	.long	50140871
+	.long	1043327329
+	.long	2684354560
+	.long	1072005060
+	.long	1241902518
+	.long	3192739252
+	.long	2684354560
+	.long	1072001805
+	.long	1027881659
+	.long	3193858388
+	.long	0
+	.long	1071998554
+	.long	38457322
+	.long	1045489179
+	.long	0
+	.long	1071995306
+	.long	3432963337
+	.long	3190969347
+	.long	1610612736
+	.long	1071992061
+	.long	534931792
+	.long	1046302734
+	.long	1610612736
+	.long	1071988820
+	.long	1817895268
+	.long	3192551860
+	.long	3221225472
+	.long	1071985582
+	.long	357237383
+	.long	3191870833
+	.long	2684354560
+	.long	1071982348
+	.long	108262401
+	.long	3193365867
+	.long	3758096384
+	.long	1071979117
+	.long	1964729244
+	.long	1042502249
+	.long	2684354560
+	.long	1071975890
+	.long	2088446957
+	.long	1038010503
+	.long	3221225472
+	.long	1071972666
+	.long	2947239447
+	.long	1046377845
+	.long	1610612736
+	.long	1071969446
+	.long	774932072
+	.long	1046064854
+	.long	2147483648
+	.long	1071966229
+	.long	4080937590
+	.long	3193041284
+	.long	3758096384
+	.long	1071963015
+	.long	2208251454
+	.long	1045945089
+	.long	3221225472
+	.long	1071959805
+	.long	2850924475
+	.long	1045650959
+	.long	0
+	.long	1071956599
+	.long	714040997
+	.long	1046275153
+	.long	3221225472
+	.long	1071953395
+	.long	85533782
+	.long	3192816920
+	.long	3221225472
+	.long	1071950195
+	.long	1252511005
+	.long	1044805706
+	.long	1073741824
+	.long	1071946999
+	.long	2384659038
+	.long	3193391602
+	.long	0
+	.long	1071943806
+	.long	416481813
+	.long	1043730233
+	.long	536870912
+	.long	1071940616
+	.long	1675424499
+	.long	1046348030
+	.long	3221225472
+	.long	1071937429
+	.long	1175989513
+	.long	3193009113
+	.long	2684354560
+	.long	1071934246
+	.long	2400084650
+	.long	3192451713
+	.long	3758096384
+	.long	1071931066
+	.long	1467335692
+	.long	3193350868
+	.long	1610612736
+	.long	1071927890
+	.long	266493801
+	.long	1044954481
+	.long	1073741824
+	.long	1071924717
+	.long	3919093445
+	.long	1046023575
+	.long	2147483648
+	.long	1071921547
+	.long	3017408483
+	.long	1044880828
+	.long	536870912
+	.long	1071918381
+	.long	948849966
+	.long	3193892224
+	.long	3758096384
+	.long	1071915217
+	.long	1870232600
+	.long	1045777228
+	.long	536870912
+	.long	1071912058
+	.long	822381492
+	.long	3193639186
+	.long	2147483648
+	.long	1071908901
+	.long	788243705
+	.long	1044966343
+	.long	1073741824
+	.long	1071905748
+	.long	1344278809
+	.long	1044428545
+	.long	1073741824
+	.long	1071902598
+	.long	172864300
+	.long	1045765608
+	.long	2684354560
+	.long	1071899451
+	.long	211555467
+	.long	3192963574
+	.long	536870912
+	.long	1071896308
+	.long	3373438023
+	.long	1045643168
+	.long	0
+	.long	1071893168
+	.long	2867180960
+	.long	3189945998
+	.long	536870912
+	.long	1071890031
+	.long	36724362
+	.long	3193240584
+	.long	1610612736
+	.long	1071886897
+	.long	2140176984
+	.long	1045945349
+	.long	0
+	.long	1071883767
+	.long	436842360
+	.long	1040712587
+	.long	3758096384
+	.long	1071880639
+	.long	1225147329
+	.long	3193814594
+	.long	3758096384
+	.long	1071877515
+	.long	1586157348
+	.long	3191614322
+	.long	536870912
+	.long	1071874395
+	.long	3329332918
+	.long	1041699791
+	.long	2684354560
+	.long	1071871277
+	.long	1635968041
+	.long	3191783756
+	.long	1073741824
+	.long	1071868163
+	.long	2876158382
+	.long	1046097093
+	.long	1073741824
+	.long	1071865052
+	.long	4267556964
+	.long	3193723000
+	.long	1073741824
+	.long	1071861944
+	.long	195475940
+	.long	1045520795
+	.long	2147483648
+	.long	1071858839
+	.long	2239193514
+	.long	1046478675
+	.long	0
+	.long	1071855738
+	.long	4168275596
+	.long	1044926285
+	.long	2684354560
+	.long	1071852639
+	.long	142514114
+	.long	1045595182
+	.long	2147483648
+	.long	1071849544
+	.long	1943457984
+	.long	3192930015
+	.long	2147483648
+	.long	1071846452
+	.long	202659489
+	.long	3193926317
+	.long	2684354560
+	.long	1071843363
+	.long	2208408789
+	.long	3193857484
+	.long	3758096384
+	.long	1071840277
+	.long	2237297552
+	.long	3192939576
+	.long	1073741824
+	.long	1071837195
+	.long	2726920839
+	.long	1044193954
+	.long	3758096384
+	.long	1071834115
+	.long	2337732207
+	.long	3193611773
+	.long	2147483648
+	.long	1071831039
+	.long	1390088602
+	.long	1044000317
+	.long	1610612736
+	.long	1071827966
+	.long	3806188736
+	.long	3193463913
+	.long	1073741824
+	.long	1071824896
+	.long	1795276560
+	.long	1043671965
+	.long	1073741824
+	.long	1071821829
+	.long	2960792799
+	.long	1046240474
+	.long	2147483648
+	.long	1071818765
+	.long	3350591592
+	.long	3193333939
+	.long	3221225472
+	.long	1071815704
+	.long	408870754
+	.long	3193322854
+	.long	0
+	.long	1071812647
+	.long	4146717132
+	.long	1046063520
+	.long	2147483648
+	.long	1071809592
+	.long	1681114919
+	.long	3192114313
+	.long	0
+	.long	1071806541
+	.long	1098393137
+	.long	3190846732
+	.long	2684354560
+	.long	1071803492
+	.long	2437484983
+	.long	3193448718
+	.long	1073741824
+	.long	1071800447
+	.long	1036809185
+	.long	3192023501
+	.long	0
+	.long	1071797405
+	.long	659668848
+	.long	3193596312
+	.long	3221225472
+	.long	1071794365
+	.long	1112062459
+	.long	3192773376
+	.long	2147483648
+	.long	1071791329
+	.long	4082956335
+	.long	1045830513
+	.long	1610612736
+	.long	1071788296
+	.long	2387089965
+	.long	1045532601
+	.long	1610612736
+	.long	1071785266
+	.long	1522101980
+	.long	3193941957
+	.long	1073741824
+	.long	1071782239
+	.long	2157197585
+	.long	3188193305
+	.long	1073741824
+	.long	1071779215
+	.long	946810220
+	.long	3193223819
+	.long	1073741824
+	.long	1071776194
+	.long	4069942444
+	.long	3193878549
+	.long	536870912
+	.long	1071773176
+	.long	1693463440
+	.long	1046360588
+	.long	536870912
+	.long	1071770161
+	.long	1954543254
+	.long	1046409381
+	.long	1073741824
+	.long	1071767149
+	.long	1050471249
+	.long	3193933095
+	.long	536870912
+	.long	1071764140
+	.long	1256240478
+	.long	1046456865
+	.long	536870912
+	.long	1071761134
+	.long	676764254
+	.long	1046055503
+	.long	536870912
+	.long	1071758131
+	.long	1421032967
+	.long	1044779786
+	.long	536870912
+	.long	1071755131
+	.long	38735992
+	.long	3192766355
+	.long	0
+	.long	1071752134
+	.long	2960669690
+	.long	1044484680
+	.long	3758096384
+	.long	1071749139
+	.long	788707382
+	.long	1045299895
+	.long	3221225472
+	.long	1071746148
+	.long	685689300
+	.long	1040778831
+	.long	2147483648
+	.long	1071743160
+	.long	1170994182
+	.long	1046159174
+	.long	1073741824
+	.long	1071740175
+	.long	64591436
+	.long	1046153849
+	.long	0
+	.long	1071737193
+	.long	2338031659
+	.long	3189997702
+	.long	2684354560
+	.long	1071734213
+	.long	1941624568
+	.long	3186752676
+	.long	536870912
+	.long	1071731237
+	.long	1401255580
+	.long	1046383990
+	.long	2684354560
+	.long	1071728263
+	.long	376888427
+	.long	1045896456
+	.long	536870912
+	.long	1071725293
+	.long	2831424639
+	.long	3193539109
+	.long	1610612736
+	.long	1071722325
+	.long	3303123696
+	.long	1044599415
+	.long	2684354560
+	.long	1071719360
+	.long	1077295329
+	.long	3189877372
+	.long	3221225472
+	.long	1071716398
+	.long	1434061099
+	.long	3184529771
+	.long	3221225472
+	.long	1071713439
+	.long	2104991590
+	.long	1045062074
+	.long	3221225472
+	.long	1071710483
+	.long	722060869
+	.long	3193788526
+	.long	536870912
+	.long	1071704580
+	.long	3928796486
+	.long	1046129020
+	.long	536870912
+	.long	1071698688
+	.long	588844628
+	.long	1045492135
+	.long	2684354560
+	.long	1071692807
+	.long	326739366
+	.long	3193004445
+	.long	1610612736
+	.long	1071686938
+	.long	2456436042
+	.long	1046278169
+	.long	2684354560
+	.long	1071681080
+	.long	2831303512
+	.long	1043670046
+	.long	536870912
+	.long	1071675234
+	.long	607223418
+	.long	1045507322
+	.long	0
+	.long	1071669399
+	.long	4254921332
+	.long	3193290483
+	.long	0
+	.long	1071663575
+	.long	914994333
+	.long	3191263853
+	.long	1073741824
+	.long	1071657762
+	.long	4147050180
+	.long	3193228552
+	.long	2684354560
+	.long	1071651960
+	.long	594554157
+	.long	3193503935
+	.long	0
+	.long	1071646170
+	.long	1062846796
+	.long	1045944331
+	.long	1073741824
+	.long	1071636109
+	.long	2909238893
+	.long	3193436884
+	.long	1073741824
+	.long	1071624572
+	.long	1682918119
+	.long	1042211899
+	.long	1073741824
+	.long	1071613057
+	.long	2419209426
+	.long	1045437062
+	.long	1073741824
+	.long	1071601564
+	.long	2951341321
+	.long	3190193214
+	.long	0
+	.long	1071590093
+	.long	3084900875
+	.long	3192394907
+	.long	1073741824
+	.long	1071578643
+	.long	999567454
+	.long	1046433447
+	.long	2147483648
+	.long	1071567215
+	.long	1570101857
+	.long	3193291160
+	.long	0
+	.long	1071555809
+	.long	1080647881
+	.long	3185154585
+	.long	0
+	.long	1071544424
+	.long	3526309177
+	.long	1044843640
+	.long	2147483648
+	.long	1071533060
+	.long	2213463349
+	.long	3191738930
+	.long	1073741824
+	.long	1071521718
+	.long	1039925195
+	.long	3192618353
+	.long	1073741824
+	.long	1071510397
+	.long	2115757280
+	.long	3193671567
+	.long	1073741824
+	.long	1071499097
+	.long	1188751495
+	.long	3191145560
+	.long	2147483648
+	.long	1071487818
+	.long	3983461449
+	.long	3193897029
+	.long	2147483648
+	.long	1071476560
+	.long	782141500
+	.long	1042879962
+	.long	2147483648
+	.long	1071465323
+	.long	4038904626
+	.long	1045063881
+	.long	2147483648
+	.long	1071454107
+	.long	2613036921
+	.long	3193217642
+	.long	0
+	.long	1071442912
+	.long	2095723435
+	.long	1044629175
+	.long	1073741824
+	.long	1071431737
+	.long	3879795974
+	.long	1045767874
+	.long	1073741824
+	.long	1071420583
+	.long	2662198042
+	.long	3191434637
+	.long	3221225472
+	.long	1071409449
+	.long	4037605722
+	.long	3193703090
+	.long	2147483648
+	.long	1071398336
+	.long	1860331835
+	.long	1040814822
+	.long	3221225472
+	.long	1071387243
+	.long	1522972033
+	.long	3190305974
+	.long	1073741824
+	.long	1071376171
+	.long	2361534207
+	.long	1043699366
+	.long	0
+	.long	1071365119
+	.long	4180309179
+	.long	1044142099
+	.long	0
+	.long	1071354087
+	.long	1201038528
+	.long	3192968772
+	.long	0
+	.long	1071343075
+	.long	1342478171
+	.long	3193251215
+	.long	0
+	.long	1071332083
+	.long	3836883348
+	.long	3193472007
+	.long	3221225472
+	.long	1071321110
+	.long	3864874250
+	.long	1045593126
+	.long	2147483648
+	.long	1071310158
+	.long	2169494998
+	.long	1046045346
+	.long	1073741824
+	.long	1071299226
+	.long	3785165075
+	.long	3193319246
+	.long	2147483648
+	.long	1071288313
+	.long	1137692678
+	.long	3192716779
+	.long	1073741824
+	.long	1071277420
+	.long	1752107598
+	.long	1046366120
+	.long	3221225472
+	.long	1071266546
+	.long	1912656912
+	.long	1046352281
+	.long	3221225472
+	.long	1071255692
+	.long	2882676334
+	.long	1046406353
+	.long	1073741824
+	.long	1071244858
+	.long	963612460
+	.long	1045282811
+	.long	0
+	.long	1071234043
+	.long	3811255773
+	.long	1046231636
+	.long	1073741824
+	.long	1071223247
+	.long	1126055989
+	.long	3192224037
+	.long	2147483648
+	.long	1071212470
+	.long	2079145427
+	.long	1044432413
+	.long	0
+	.long	1071201713
+	.long	3611595621
+	.long	1043358745
+	.long	2147483648
+	.long	1071190974
+	.long	390522769
+	.long	1045888252
+	.long	1073741824
+	.long	1071180255
+	.long	4087939723
+	.long	3192930745
+	.long	3221225472
+	.long	1071169554
+	.long	1451494480
+	.long	3190219274
+	.long	1073741824
+	.long	1071158873
+	.long	427176194
+	.long	3193042022
+	.long	2147483648
+	.long	1071148210
+	.long	1882381948
+	.long	3192727946
+	.long	2147483648
+	.long	1071137566
+	.long	3736313771
+	.long	3192087019
+	.long	1073741824
+	.long	1071126941
+	.long	1560398816
+	.long	3193185715
+	.long	2147483648
+	.long	1071116334
+	.long	1021942441
+	.long	1041526696
+	.long	2147483648
+	.long	1071105746
+	.long	3517080249
+	.long	3193576041
+	.long	3221225472
+	.long	1071095176
+	.long	2248589878
+	.long	1044527624
+	.long	2147483648
+	.long	1071084625
+	.long	2412896695
+	.long	1046112867
+	.long	3221225472
+	.long	1071074092
+	.long	3834725738
+	.long	1044562378
+	.long	1073741824
+	.long	1071063578
+	.long	1150920407
+	.long	1043768986
+	.long	0
+	.long	1071053082
+	.long	1379393428
+	.long	3188690690
+	.long	0
+	.long	1071042604
+	.long	3058183278
+	.long	3193617655
+	.long	0
+	.long	1071032144
+	.long	421133665
+	.long	3193417186
+	.long	0
+	.long	1071021702
+	.long	2860161357
+	.long	3191816125
+	.long	0
+	.long	1071011278
+	.long	1742405964
+	.long	1043580240
+	.long	0
+	.long	1071000872
+	.long	2821215927
+	.long	3188984273
+	.long	3221225472
+	.long	1070990483
+	.long	510275597
+	.long	1045813401
+	.long	2147483648
+	.long	1070980113
+	.long	304266588
+	.long	3191193536
+	.long	3221225472
+	.long	1070969760
+	.long	1854784211
+	.long	1046302073
+	.long	0
+	.long	1070959426
+	.long	3773082854
+	.long	3193008899
+	.long	2147483648
+	.long	1070949108
+	.long	3003572392
+	.long	1046404879
+	.long	3221225472
+	.long	1070938808
+	.long	1702149204
+	.long	1046407257
+	.long	2147483648
+	.long	1070928526
+	.long	3935314439
+	.long	1046438280
+	.long	3221225472
+	.long	1070918261
+	.long	2677087609
+	.long	1045501749
+	.long	2147483648
+	.long	1070908014
+	.long	4190598039
+	.long	3193640515
+	.long	1073741824
+	.long	1070897784
+	.long	368874072
+	.long	1044879927
+	.long	2147483648
+	.long	1070887571
+	.long	3584052697
+	.long	3192024662
+	.long	3221225472
+	.long	1070877375
+	.long	3762307829
+	.long	1045886918
+	.long	1073741824
+	.long	1070867197
+	.long	495710920
+	.long	1046317072
+	.long	0
+	.long	1070857036
+	.long	2292768238
+	.long	3190887508
+	.long	3221225472
+	.long	1070846891
+	.long	1044078151
+	.long	3193772914
+	.long	1073741824
+	.long	1070836764
+	.long	3266010457
+	.long	1043443755
+	.long	3221225472
+	.long	1070826653
+	.long	3571665822
+	.long	1045547823
+	.long	1073741824
+	.long	1070816560
+	.long	393348347
+	.long	3190525143
+	.long	2147483648
+	.long	1070806483
+	.long	4241722498
+	.long	3192084193
+	.long	2147483648
+	.long	1070796423
+	.long	1693797068
+	.long	3192807972
+	.long	0
+	.long	1070786380
+	.long	2860086745
+	.long	1046331646
+	.long	2147483648
+	.long	1070776353
+	.long	1366141759
+	.long	3192979363
+	.long	1073741824
+	.long	1070766343
+	.long	737899283
+	.long	1045853346
+	.long	3221225472
+	.long	1070756349
+	.long	88734873
+	.long	1043881257
+	.long	3221225472
+	.long	1070746372
+	.long	1438003315
+	.long	3192917101
+	.long	0
+	.long	1070736412
+	.long	1066505530
+	.long	1043896695
+	.long	3221225472
+	.long	1070726467
+	.long	2706653041
+	.long	3191113643
+	.long	3221225472
+	.long	1070716539
+	.long	1321764476
+	.long	1039573724
+	.long	0
+	.long	1070706628
+	.long	1126753211
+	.long	1044502976
+	.long	2147483648
+	.long	1070696732
+	.long	773642884
+	.long	1044110727
+	.long	1073741824
+	.long	1070686853
+	.long	1263743406
+	.long	3193115278
+	.long	0
+	.long	1070676990
+	.long	3115237732
+	.long	3193089176
+	.long	3221225472
+	.long	1070667142
+	.long	3642626838
+	.long	3191146032
+	.long	2147483648
+	.long	1070657311
+	.long	2091696428
+	.long	1044337177
+	.long	1073741824
+	.long	1070647496
+	.long	3168958391
+	.long	1044197568
+	.long	0
+	.long	1070637697
+	.long	711148669
+	.long	3193181047
+	.long	2147483648
+	.long	1070627913
+	.long	4207182773
+	.long	3193402092
+	.long	3221225472
+	.long	1070618145
+	.long	918070640
+	.long	3192902845
+	.long	3221225472
+	.long	1070608393
+	.long	3135571447
+	.long	3192193928
+	.long	2147483648
+	.long	1070598657
+	.long	1043705517
+	.long	3193188604
+	.long	2147483648
+	.long	1070581777
+	.long	1886680492
+	.long	1043890286
+	.long	2147483648
+	.long	1070562367
+	.long	3373799420
+	.long	3191917802
+	.long	2147483648
+	.long	1070542988
+	.long	2919618025
+	.long	3192461752
+	.long	2147483648
+	.long	1070523640
+	.long	2926365158
+	.long	3193113492
+	.long	0
+	.long	1070504323
+	.long	519978638
+	.long	1045918846
+	.long	0
+	.long	1070485037
+	.long	3665353151
+	.long	3193546248
+	.long	0
+	.long	1070465781
+	.long	2327718958
+	.long	1045050797
+	.long	0
+	.long	1070446556
+	.long	345326861
+	.long	3188224716
+	.long	2147483648
+	.long	1070427361
+	.long	2263747488
+	.long	3192871328
+	.long	0
+	.long	1070408197
+	.long	3894192264
+	.long	1045693123
+	.long	0
+	.long	1070389063
+	.long	994321593
+	.long	1046347203
+	.long	2147483648
+	.long	1070369959
+	.long	3540366700
+	.long	1042296230
+	.long	0
+	.long	1070350886
+	.long	966420752
+	.long	3192400412
+	.long	2147483648
+	.long	1070331842
+	.long	1954511160
+	.long	3193467762
+	.long	2147483648
+	.long	1070312828
+	.long	1875003040
+	.long	1045485629
+	.long	0
+	.long	1070293845
+	.long	4003372005
+	.long	3193714109
+	.long	2147483648
+	.long	1070274890
+	.long	2216083644
+	.long	1045720399
+	.long	0
+	.long	1070255966
+	.long	1240985743
+	.long	1045879414
+	.long	0
+	.long	1070237071
+	.long	1573064162
+	.long	1046427916
+	.long	0
+	.long	1070218206
+	.long	2500166582
+	.long	3193848169
+	.long	2147483648
+	.long	1070199369
+	.long	862131539
+	.long	1045606065
+	.long	0
+	.long	1070180563
+	.long	3733427622
+	.long	3193545988
+	.long	0
+	.long	1070161785
+	.long	124515358
+	.long	1045504766
+	.long	2147483648
+	.long	1070143036
+	.long	689228007
+	.long	1044238436
+	.long	0
+	.long	1070124317
+	.long	976284835
+	.long	3189879978
+	.long	2147483648
+	.long	1070105626
+	.long	2997446224
+	.long	3193394244
+	.long	2147483648
+	.long	1070086964
+	.long	594985163
+	.long	3190453447
+	.long	2147483648
+	.long	1070068331
+	.long	3634411091
+	.long	3193012662
+	.long	0
+	.long	1070049727
+	.long	841316482
+	.long	3192551604
+	.long	0
+	.long	1070031151
+	.long	518949849
+	.long	3189505693
+	.long	2147483648
+	.long	1070012603
+	.long	207633604
+	.long	1043791305
+	.long	2147483648
+	.long	1069994084
+	.long	925415631
+	.long	3189658670
+	.long	2147483648
+	.long	1069975593
+	.long	3348775015
+	.long	1046231055
+	.long	0
+	.long	1069957131
+	.long	4137593961
+	.long	1045760644
+	.long	2147483648
+	.long	1069938696
+	.long	3081207972
+	.long	1046319652
+	.long	2147483648
+	.long	1069920290
+	.long	2912811806
+	.long	3193250863
+	.long	0
+	.long	1069901912
+	.long	1704663230
+	.long	3192651171
+	.long	2147483648
+	.long	1069883561
+	.long	1726887473
+	.long	3193427817
+	.long	2147483648
+	.long	1069865238
+	.long	516302873
+	.long	1042556919
+	.long	2147483648
+	.long	1069846943
+	.long	3737277289
+	.long	3192083505
+	.long	0
+	.long	1069828676
+	.long	2829909067
+	.long	3191628520
+	.long	0
+	.long	1069810436
+	.long	3474800299
+	.long	3187384991
+	.long	2147483648
+	.long	1069792223
+	.long	2041291754
+	.long	3186735048
+	.long	2147483648
+	.long	1069774038
+	.long	3100739290
+	.long	3192991951
+	.long	2147483648
+	.long	1069755880
+	.long	2641686866
+	.long	1042449846
+	.long	0
+	.long	1069737750
+	.long	1353612457
+	.long	3192928544
+	.long	2147483648
+	.long	1069719646
+	.long	1823398190
+	.long	3193125156
+	.long	0
+	.long	1069701570
+	.long	2629108558
+	.long	3192983089
+	.long	2147483648
+	.long	1069683520
+	.long	314889080
+	.long	3193178947
+	.long	2147483648
+	.long	1069665497
+	.long	3426846470
+	.long	1046055034
+	.long	0
+	.long	1069647502
+	.long	2451521798
+	.long	3193081447
+	.long	2147483648
+	.long	1069629532
+	.long	963200030
+	.long	1046315089
+	.long	0
+	.long	1069611590
+	.long	3644976987
+	.long	1046450297
+	.long	2147483648
+	.long	1069593674
+	.long	1514045874
+	.long	3193337489
+	.long	0
+	.long	1069575785
+	.long	2640752615
+	.long	3192734715
+	.long	0
+	.long	1069557922
+	.long	177381730
+	.long	3193107348
+	.long	0
+	.long	1069532650
+	.long	546871269
+	.long	1045601847
+	.long	0
+	.long	1069497029
+	.long	2220408187
+	.long	1045964849
+	.long	0
+	.long	1069461461
+	.long	3101209784
+	.long	3192417098
+	.long	0
+	.long	1069425944
+	.long	3768825782
+	.long	1046196178
+	.long	0
+	.long	1069390480
+	.long	737308942
+	.long	1043872555
+	.long	0
+	.long	1069355068
+	.long	1944808119
+	.long	3193362317
+	.long	0
+	.long	1069319707
+	.long	852406261
+	.long	3191004250
+	.long	0
+	.long	1069284398
+	.long	3202370743
+	.long	3192549796
+	.long	0
+	.long	1069249140
+	.long	900633975
+	.long	1043862575
+	.long	0
+	.long	1069213934
+	.long	3417168564
+	.long	3193213168
+	.long	0
+	.long	1069178778
+	.long	2513309972
+	.long	1046051953
+	.long	0
+	.long	1069143674
+	.long	1836846968
+	.long	1044036653
+	.long	0
+	.long	1069108621
+	.long	675391362
+	.long	3193334972
+	.long	0
+	.long	1069073618
+	.long	1859398086
+	.long	3191668729
+	.long	0
+	.long	1069038666
+	.long	3835994043
+	.long	3193252196
+	.long	0
+	.long	1069003764
+	.long	563337246
+	.long	3192060530
+	.long	0
+	.long	1068968912
+	.long	3715154210
+	.long	1045592716
+	.long	0
+	.long	1068934111
+	.long	51415636
+	.long	3192193939
+	.long	0
+	.long	1068899359
+	.long	822049108
+	.long	1045846080
+	.long	0
+	.long	1068864658
+	.long	3739043340
+	.long	3193184949
+	.long	0
+	.long	1068830006
+	.long	2500828997
+	.long	3193115638
+	.long	0
+	.long	1068795403
+	.long	1479335089
+	.long	1045458233
+	.long	0
+	.long	1068760850
+	.long	1914098598
+	.long	1045079833
+	.long	0
+	.long	1068726346
+	.long	1470374909
+	.long	1046125471
+	.long	0
+	.long	1068691892
+	.long	2048101185
+	.long	3192960024
+	.long	0
+	.long	1068657486
+	.long	801101802
+	.long	1042523454
+	.long	0
+	.long	1068623129
+	.long	412171467
+	.long	1044799425
+	.long	0
+	.long	1068588821
+	.long	2124566049
+	.long	1040459843
+	.long	0
+	.long	1068554561
+	.long	2087558263
+	.long	1046083102
+	.long	0
+	.long	1068520350
+	.long	290389316
+	.long	1045220023
+	.long	0
+	.long	1068473430
+	.long	393737815
+	.long	1045770085
+	.long	0
+	.long	1068405202
+	.long	3273111658
+	.long	3193594336
+	.long	0
+	.long	1068337068
+	.long	3076935419
+	.long	3191993934
+	.long	0
+	.long	1068269030
+	.long	1564279721
+	.long	1040713632
+	.long	0
+	.long	1068201088
+	.long	1950103787
+	.long	3191285473
+	.long	0
+	.long	1068133240
+	.long	111301617
+	.long	1046140470
+	.long	0
+	.long	1068065488
+	.long	2740933659
+	.long	1046091898
+	.long	0
+	.long	1067997832
+	.long	1267131462
+	.long	3192947024
+	.long	0
+	.long	1067930268
+	.long	629787343
+	.long	1045599114
+	.long	0
+	.long	1067862800
+	.long	2943029746
+	.long	3191100621
+	.long	0
+	.long	1067795426
+	.long	2538631151
+	.long	3193953989
+	.long	0
+	.long	1067728144
+	.long	3881795033
+	.long	3191377363
+	.long	0
+	.long	1067660956
+	.long	2752747058
+	.long	3186250103
+	.long	0
+	.long	1067593862
+	.long	892170014
+	.long	3193330390
+	.long	0
+	.long	1067526860
+	.long	2000985783
+	.long	3192968647
+	.long	0
+	.long	1067459950
+	.long	1954077304
+	.long	1044399908
+	.long	0
+	.long	1067335900
+	.long	4120702847
+	.long	3193150730
+	.long	0
+	.long	1067202448
+	.long	353489980
+	.long	1045676744
+	.long	0
+	.long	1067069184
+	.long	2609643324
+	.long	3192108001
+	.long	0
+	.long	1066936100
+	.long	2904433317
+	.long	1044836541
+	.long	0
+	.long	1066803200
+	.long	319656790
+	.long	1044863904
+	.long	0
+	.long	1066670484
+	.long	2407987331
+	.long	3192995083
+	.long	0
+	.long	1066537948
+	.long	2437746120
+	.long	3193127733
+	.long	0
+	.long	1066405592
+	.long	762570215
+	.long	3189946997
+	.long	0
+	.long	1066145040
+	.long	3317159694
+	.long	1046060125
+	.long	0
+	.long	1065881056
+	.long	2317845886
+	.long	3191679176
+	.long	0
+	.long	1065617424
+	.long	3665195816
+	.long	1045633853
+	.long	0
+	.long	1065354160
+	.long	2008730355
+	.long	3193898211
+	.long	0
+	.long	1064829264
+	.long	3746236192
+	.long	1046121471
+	.long	0
+	.long	1064303680
+	.long	885296753
+	.long	3191852441
+	.long	0
+	.long	1063253696
+	.long	449976495
+	.long	3192682663
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	1073160192
+	.long	370913857
+	.long	3210587105
+	.long	1841914130
+	.long	3213059448
+	.long	3995341938
+	.long	3214607105
+	.long	2677381210
+	.long	3216320731
+	.long	3011779882
+	.long	3218479542
+	.long	1367832035
+	.long	1066403058
+	.long	2894285243
+	.long	1067936923
+	.long	1215221452
+	.long	1069835102
+	.long	370913857
+	.long	3210587105
+	.long	2677381210
+	.long	3216320731
+	.long	4172642429
+	.long	1056068382
+	.long	1215221451
+	.long	1069835102
+	.long	1092638156
+	.long	3184925618
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	4294967295
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	997195776
+	.long	4200250559
+	.long	1072696090
+	.long	2808127345
+	.long	3162830514
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	339411585
+	.long	1072701800
+	.long	264588982
+	.long	3162685233
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	772914124
+	.long	1072707540
+	.long	4004372762
+	.long	1013278737
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	1928746161
+	.long	1072713311
+	.long	983617676
+	.long	1015333753
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	238821257
+	.long	1072719114
+	.long	1469694871
+	.long	3163933563
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	728934454
+	.long	1072724948
+	.long	1413842688
+	.long	1015227188
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	4133881824
+	.long	1072730813
+	.long	2148155345
+	.long	3163979875
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	2602514713
+	.long	1072736711
+	.long	2268929336
+	.long	1015402860
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	1172597893
+	.long	1072742641
+	.long	114433263
+	.long	1016396169
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	590962156
+	.long	1072748603
+	.long	3829346666
+	.long	3164324173
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	1608493509
+	.long	1072754597
+	.long	3159622171
+	.long	3163856313
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	685187902
+	.long	1072760624
+	.long	378731989
+	.long	1015891691
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	2875075254
+	.long	1072766683
+	.long	4144233330
+	.long	3164382292
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	351405227
+	.long	1072772776
+	.long	3125337328
+	.long	3160871055
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	2471440686
+	.long	1072778901
+	.long	968836267
+	.long	3163263464
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1416741826
+	.long	1072785060
+	.long	2196380210
+	.long	1012462139
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	2257959872
+	.long	1072791252
+	.long	3802946148
+	.long	1014013503
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	1480023343
+	.long	1072797478
+	.long	2247196168
+	.long	1016376029
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	4162030108
+	.long	1072803737
+	.long	2763428480
+	.long	1016577925
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	2502433899
+	.long	1072810031
+	.long	2148595913
+	.long	1016072567
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	1588871207
+	.long	1072816359
+	.long	143439582
+	.long	3164011992
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2218315341
+	.long	1072822721
+	.long	2694295388
+	.long	3164337444
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	897099801
+	.long	1072829118
+	.long	754756297
+	.long	1016289581
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	2725843665
+	.long	1072835549
+	.long	1433917087
+	.long	1015887099
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	4219606026
+	.long	1072842015
+	.long	2434574742
+	.long	1015730124
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1897844341
+	.long	1072848517
+	.long	1254300460
+	.long	1016324514
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	874372905
+	.long	1072855054
+	.long	100263788
+	.long	1016989308
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	1972484976
+	.long	1072861626
+	.long	675290301
+	.long	3162688626
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	1724976915
+	.long	1072868234
+	.long	420909223
+	.long	3164165955
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	964107055
+	.long	1072874878
+	.long	2800439588
+	.long	3163881797
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	526652809
+	.long	1072881558
+	.long	4223459736
+	.long	1016927951
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	1253935211
+	.long	1072888274
+	.long	1395382931
+	.long	3160751189
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	3991843581
+	.long	1072895026
+	.long	4092853457
+	.long	1015634339
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	1000925746
+	.long	1072901816
+	.long	1018491672
+	.long	3164358120
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1726216749
+	.long	1072908642
+	.long	2466808228
+	.long	3162724981
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	2732492859
+	.long	1072915505
+	.long	2691479646
+	.long	3163304260
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	589198666
+	.long	1072922406
+	.long	2664346172
+	.long	3164206538
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	460407023
+	.long	1072929344
+	.long	4237175092
+	.long	3164187045
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3219942644
+	.long	1072936319
+	.long	3798990616
+	.long	1016417382
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1156440435
+	.long	1072943333
+	.long	2351451249
+	.long	1015015632
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	3743175029
+	.long	1072950384
+	.long	2072812490
+	.long	3163223651
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	3278348324
+	.long	1072957474
+	.long	3069497416
+	.long	1015799288
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	654919306
+	.long	1072964603
+	.long	3232961757
+	.long	3164096045
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1065662932
+	.long	1072971770
+	.long	2533670915
+	.long	1015578814
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	1118294578
+	.long	1072978976
+	.long	2197495694
+	.long	3160957977
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	1720398391
+	.long	1072986221
+	.long	3980678963
+	.long	3164348656
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	3784486610
+	.long	1072993505
+	.long	1581883040
+	.long	3162747529
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3933059031
+	.long	1073000829
+	.long	2133366768
+	.long	3162580408
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	3088564500
+	.long	1073008193
+	.long	1762311517
+	.long	1016094249
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	2178460671
+	.long	1073015597
+	.long	777878098
+	.long	3163891069
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2135241198
+	.long	1073023041
+	.long	1236747871
+	.long	1014637723
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	3896463087
+	.long	1073030525
+	.long	1139797873
+	.long	3162282381
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	4109806887
+	.long	1073038050
+	.long	422403966
+	.long	1015517805
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	3723038930
+	.long	1073045616
+	.long	378465264
+	.long	3163618158
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3689071823
+	.long	1073053223
+	.long	2321004996
+	.long	3163601292
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	671025100
+	.long	1073060872
+	.long	3832014351
+	.long	3164070606
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	4222122499
+	.long	1073068561
+	.long	1277378074
+	.long	3164305313
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	2425981843
+	.long	1073076293
+	.long	2830390851
+	.long	3164395175
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	551349105
+	.long	1073084067
+	.long	3821916050
+	.long	3163155165
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	3872257780
+	.long	1073091882
+	.long	1253592103
+	.long	1017006910
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	488188413
+	.long	1073099741
+	.long	3199821029
+	.long	1016612624
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	4273770423
+	.long	1073107641
+	.long	3383180809
+	.long	3164267477
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3339203574
+	.long	1073115585
+	.long	1483497780
+	.long	3163457330
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	2979960120
+	.long	1073123572
+	.long	2599109725
+	.long	1015547069
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	4201977662
+	.long	1073131602
+	.long	748330254
+	.long	1014642933
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	3721688645
+	.long	1073139676
+	.long	3069276937
+	.long	1016887977
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	2555984613
+	.long	1073147794
+	.long	2652555442
+	.long	3163601268
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	1727278727
+	.long	1073155956
+	.long	3562710623
+	.long	1012520516
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	2263535754
+	.long	1073164162
+	.long	752233586
+	.long	3163687584
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	903334909
+	.long	1073172413
+	.long	1636462108
+	.long	1016088573
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	2980802057
+	.long	1073180708
+	.long	378619896
+	.long	1016821879
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	950803702
+	.long	1073189049
+	.long	1655364926
+	.long	1016285608
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	158781403
+	.long	1073197435
+	.long	2221464712
+	.long	3164335029
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	1660913392
+	.long	1073205866
+	.long	4218599604
+	.long	1016184283
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	2224145553
+	.long	1073214343
+	.long	3482522030
+	.long	3162537745
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2916157145
+	.long	1073222866
+	.long	219487565
+	.long	1016357943
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	515457527
+	.long	1073231436
+	.long	836709333
+	.long	1016699802
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	396319521
+	.long	1073240052
+	.long	4172420816
+	.long	3160123208
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3643909174
+	.long	1073248714
+	.long	3537586109
+	.long	1015403223
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	2759350287
+	.long	1073257424
+	.long	1148526634
+	.long	1016943509
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	3134592888
+	.long	1073266181
+	.long	4232266862
+	.long	1017039710
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	1577608921
+	.long	1073274986
+	.long	1875489510
+	.long	3164016970
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	3492293770
+	.long	1073283838
+	.long	2248032210
+	.long	1016435402
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	1403662306
+	.long	1073292739
+	.long	2788809599
+	.long	3162719583
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	727685349
+	.long	1073301688
+	.long	2038246809
+	.long	3163407318
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2591453363
+	.long	1073310685
+	.long	2132396182
+	.long	3160122774
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	3833209506
+	.long	1073319731
+	.long	2722920684
+	.long	1014803418
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	1297350157
+	.long	1073328827
+	.long	1308022040
+	.long	3164461134
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	424392917
+	.long	1073337972
+	.long	2749202995
+	.long	3163887294
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2366108318
+	.long	1073347166
+	.long	2867985102
+	.long	3162810830
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3985553595
+	.long	1073356410
+	.long	4002146062
+	.long	1016882712
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2152073944
+	.long	1073365705
+	.long	1486860576
+	.long	3164252032
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	2331271250
+	.long	1073375050
+	.long	812057446
+	.long	1013256022
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1405169241
+	.long	1073384446
+	.long	2998539689
+	.long	3163879527
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	557149882
+	.long	1073393893
+	.long	3672720709
+	.long	1015585841
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	977020788
+	.long	1073403391
+	.long	3065100517
+	.long	1016590139
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	3861050111
+	.long	1073412940
+	.long	254893773
+	.long	3163861756
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	1822067026
+	.long	1073422542
+	.long	1241994956
+	.long	1016388866
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	364333489
+	.long	1073432196
+	.long	3923737744
+	.long	3162469949
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	703710506
+	.long	1073441902
+	.long	1384660846
+	.long	1016244467
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	4062661092
+	.long	1073451660
+	.long	1422616006
+	.long	3164303894
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	3080351519
+	.long	1073461472
+	.long	3379126789
+	.long	3158266577
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	3287523847
+	.long	1073471337
+	.long	1625971539
+	.long	3158058531
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	1631695677
+	.long	1073481256
+	.long	2717633076
+	.long	3163392602
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	3657065772
+	.long	1073491228
+	.long	399025623
+	.long	3164005654
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	2029714210
+	.long	1073501255
+	.long	613660079
+	.long	1016147719
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2307442995
+	.long	1073511336
+	.long	3190117721
+	.long	3163453115
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	1464976603
+	.long	1073521472
+	.long	3507292405
+	.long	3163026110
+	.long	3706687593
+	.long	1073526560
+	.long	3521726939
+	.long	1014301643
+	.long	778901109
+	.long	1073531663
+	.long	2248183954
+	.long	3162317327
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1532734324
+	.long	1073541909
+	.long	3094216535
+	.long	3164211433
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	721996136
+	.long	1073552211
+	.long	563754734
+	.long	1016419894
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3939148246
+	.long	1073562568
+	.long	3210352148
+	.long	1016322899
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	3898795731
+	.long	1073572982
+	.long	1249994144
+	.long	1012918394
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	1912561781
+	.long	1073583453
+	.long	3147495102
+	.long	1016726829
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	3594158869
+	.long	1073593980
+	.long	2456521700
+	.long	3164305137
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	1679558232
+	.long	1073604565
+	.long	2390342287
+	.long	3164382546
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	1796832535
+	.long	1073615207
+	.long	3176955716
+	.long	3161634089
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	991358482
+	.long	1073625907
+	.long	838715019
+	.long	3164206244
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	610758006
+	.long	1073636665
+	.long	1965209397
+	.long	3162914808
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2009970496
+	.long	1073647481
+	.long	2159039665
+	.long	3163621524
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	2256325230
+	.long	1073658356
+	.long	580117746
+	.long	1016365871
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	2719515920
+	.long	1073669290
+	.long	2760332941
+	.long	1016186509
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	481706282
+	.long	1073680284
+	.long	1696079173
+	.long	3163759104
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1222472308
+	.long	1073691337
+	.long	1054357470
+	.long	3162069594
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2038973688
+	.long	1073702450
+	.long	892941374
+	.long	1017095035
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	35929225
+	.long	1073713624
+	.long	2809788041
+	.long	3160485544
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	915592468
+	.long	1073724858
+	.long	352947894
+	.long	3162072947
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	1797923801
+	.long	1073736153
+	.long	1950547427
+	.long	1014277635
+	.long	3884607281
+	.long	1062590591
+	.long	3607404736
+	.long	1068264200
+	.long	1874480759
+	.long	1065595563
+	.long	4286760335
+	.long	1070514109
+	.long	4277811695
+	.long	1072049730
+	.long	0
+	.long	0
+	.long	4277811695
+	.long	1072049730
+	.long	4277811695
+	.long	3219533378
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,12576
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_sinh.S b/libm/x86/e_sinh.S
new file mode 100644
index 0000000..d6b04b5
--- /dev/null
+++ b/libm/x86/e_sinh.S
@@ -0,0 +1,1407 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  sinh(x)=(exp(x)-exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [23/64,3*2^7)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
+//
+//  For |x| in [1/8, 3*2^7), sinh(x) is formed as
+//      RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
+//
+//  For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
+//  To reduce rounding errors, the p3*x^3 term is computed as
+//     (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
+//  where x=xh+xl, (xh are the leading 17 bits of x), and
+//     (p3*xh^3)_high=RN(x+p3*xh^3)-x
+//  (error bound for polynomial expansion is below 0.51 ulp)
+//
+// Special cases:
+//  sinh(NaN) = quiet NaN, and raise invalid exception
+//  sinh(+/-INF) = +/-INF
+//  sinh(x) = x for subnormals
+//  for finite argument, only sinh(0)=0 is exact
+//  For IEEE double
+//    sinh(x) overflows  for x > 
+//    710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  sinh
+ENTRY(sinh)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     4272(%ebx), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     4192(%ebx), %xmm1
+        movsd     4200(%ebx), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     4096(%ebx), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16343, %ecx
+        cmpl      $177, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        shll      $3, %edx
+        orl       %edx, %eax
+        movapd    %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    4112(%ebx), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    4128(%ebx), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    4144(%ebx), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $161, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        mulpd     (%ebx,%edx,8), %xmm0
+        mulpd     2048(%ebx,%edx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    4160(%ebx), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     4176(%ebx), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movapd    %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        subpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        subsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     (%ebx,%edx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     4160(%ebx), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     4176(%ebx), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        movl      $127, %edx
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $16343, %ecx
+        cmpl      $16343, %ecx
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $15856, %ecx
+        jb        .L_2TAG_PACKET_5.0.2
+        movapd    4208(%ebx), %xmm1
+        pshufd    $68, %xmm0, %xmm6
+        mulpd     %xmm5, %xmm5
+        movapd    4224(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm7
+        movapd    4240(%ebx), %xmm3
+        pshufd    $68, %xmm0, %xmm4
+        andpd     4256(%ebx), %xmm6
+        mulpd     %xmm5, %xmm1
+        mulsd     %xmm5, %xmm2
+        subpd     %xmm6, %xmm4
+        mulpd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm1
+        pshufd    $68, %xmm6, %xmm3
+        mulpd     %xmm5, %xmm5
+        mulsd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm0, %xmm7
+        mulsd     %xmm6, %xmm6
+        addsd     %xmm7, %xmm7
+        mulsd     %xmm4, %xmm4
+        mulpd     %xmm5, %xmm1
+        addsd     %xmm0, %xmm7
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm7
+        pshufd    $238, %xmm1, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm2, %xmm3
+        pshufd    $238, %xmm2, %xmm2
+        addsd     %xmm4, %xmm7
+        movapd    %xmm0, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm5, %xmm7
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm2, %xmm7
+        subsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm1
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_5.0.2:
+        cmpl      $16, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        movapd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $15344, %edx
+        pinsrw    $3, %edx, %xmm3
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm3, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_4.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        orl       %edx, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movl      $127, %edx
+.L_2TAG_PACKET_3.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm1
+        andnpd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_8.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(sinh)
+# -- End  sinh
+
+# Start file scope ASM
+ALIAS_SYMBOL(sinhl, sinh);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	1064709698
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.long	329805064
+	.long	1038488134
+	.long	2773927730
+	.long	1053236707
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1744127201
+	.long	1046144581
+	.long	436314137
+	.long	1059717536
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.long	4160749568
+	.long	2147483647
+	.type	static_const_table,@object
+	.size	static_const_table,4280
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/floor.S b/libm/x86/floor.S
new file mode 100644
index 0000000..b859736
--- /dev/null
+++ b/libm/x86/floor.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(floor)
+	mov    %esp,%eax
+	and    $0xfffffff8,%eax
+	movsd  0x4(%esp),%xmm0
+	roundsd $0x1,%xmm0,%xmm0
+	movlpd %xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(floor)
+
+ALIAS_SYMBOL(floorl, floor);
diff --git a/libm/x86/floorf.S b/libm/x86/floorf.S
new file mode 100644
index 0000000..79b9073
--- /dev/null
+++ b/libm/x86/floorf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(floorf)
+	movss  0x4(%esp),%xmm0
+	roundss $0x1,%xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(floorf)
diff --git a/libm/x86/libm_reduce_pi04l.S b/libm/x86/libm_reduce_pi04l.S
new file mode 100644
index 0000000..af6a7d0
--- /dev/null
+++ b/libm/x86/libm_reduce_pi04l.S
@@ -0,0 +1,3718 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+# -- Begin  __libm_reduce_pi04l
+	.text
+       .align    16,0x90
+	.hidden __libm_reduce_pi04l
+	.globl __libm_reduce_pi04l
+__libm_reduce_pi04l:
+# parameter 1: 8 + %ebp
+# parameter 2: 20 + %ebp
+# parameter 3: 24 + %ebp
+..B1.1:
+        pushl     %ebp
+        movl      %esp, %ebp
+        andl      $-16, %esp
+        pushl     %esi
+        pushl     %edi
+        pushl     %ebx
+        subl      $20, %esp
+        movzwl    16(%ebp), %ebx
+        andl      $32767, %ebx
+        movl      20(%ebp), %eax
+        cmpl      $16413, %ebx
+        movl      24(%ebp), %esi
+        call      ..L2
+..L2:
+        popl      %edi
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
+        movl      %eax, 4(%esp)
+        jge       ..B1.8
+..B1.2:
+        fldt      8(%ebp)
+        fldl      __4onpi_d@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fstpt     8(%esp)
+        movzwl    16(%esp), %ecx
+        negl      %ecx
+        addl      $30, %ecx
+        movl      12(%esp), %eax
+        shrl      %cl, %eax
+        cmpl      $0, 4(%esp)
+        jne       ..B1.4
+..B1.3:
+        lea       1(%eax), %ecx
+        andl      $-2, %ecx
+        jmp       ..B1.5
+..B1.4:
+        movl      %eax, %ecx
+        addl      4(%esp), %eax
+        movl      %eax, %edx
+        andl      $1, %edx
+        addl      %edx, %ecx
+..B1.5:
+        fldl      _TWO_32H@GOTOFF(%edi)
+        cmpl      $16400, %ebx
+        movl      %ecx, (%esp)
+        fildl     (%esp)
+        jge       ..B1.7
+..B1.6:
+        fldl      _pi04_3d@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fsubrp    %st, %st(3)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fld       %st(2)
+        fadd      %st(1), %st
+        fsubp     %st, %st(1)
+        fld       %st(0)
+        fxch      %st(1)
+        fsubr     %st, %st(3)
+        fldl      8+_pi04_3d@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsub      %st(2), %st
+        fsubp     %st, %st(1)
+        faddp     %st, %st(3)
+        fldl      16+_pi04_3d@GOTOFF(%edi)
+        fmulp     %st, %st(2)
+        fld       %st(1)
+        fsubr     %st(1), %st
+        fsubr     %st, %st(1)
+        fxch      %st(2)
+        fsubrp    %st, %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        jmp       ..B1.15
+..B1.7:
+        fldl      _pi04_5d@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fsubrp    %st, %st(3)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fld       %st(2)
+        fadd      %st(1), %st
+        fsubp     %st, %st(1)
+        fld       %st(0)
+        fxch      %st(1)
+        fsubr     %st, %st(3)
+        fldl      8+_pi04_5d@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsub      %st(2), %st
+        fsubp     %st, %st(1)
+        faddp     %st, %st(3)
+        fldl      16+_pi04_5d@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fld       %st(0)
+        fsubr     %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsubrp    %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fldl      24+_pi04_5d@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fld       %st(0)
+        fsubr     %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsubrp    %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fldl      32+_pi04_5d@GOTOFF(%edi)
+        fmulp     %st, %st(2)
+        fld       %st(1)
+        fsubr     %st(1), %st
+        fsubr     %st, %st(1)
+        fxch      %st(2)
+        fsubrp    %st, %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        jmp       ..B1.15
+..B1.8:
+        fldt      8(%ebp)
+        addl      $-16417, %ebx
+        fmull     _SCALE@GOTOFF(%edi)
+        movl      $-2078209981, %eax
+        imull     %ebx
+        addl      %ebx, %edx
+        movl      %ebx, %ecx
+        sarl      $4, %edx
+        sarl      $31, %ecx
+        subl      %ecx, %edx
+        movl      %edx, %eax
+        shll      $5, %eax
+        fstpt     8(%ebp)
+        fldt      8(%ebp)
+        subl      %edx, %eax
+        movl      $0, 8(%ebp)
+        subl      %eax, %ebx
+        fldt      8(%ebp)
+        cmpl      $17, %ebx
+        fsubr     %st, %st(1)
+        jl        ..B1.10
+..B1.9:
+        lea       (,%edx,8), %eax
+        lea       (%eax,%edx,4), %ecx
+        incl      %edx
+        fldt      __4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st(2), %st
+        fldt      12+__4onpi_31l@GOTOFF(%edi,%ecx)
+        fmul      %st(2), %st
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fld       %st(1)
+        fadd      %st(1), %st
+        fstpt     8(%esp)
+        andl      $-16777216, 8(%esp)
+        fldt      8(%esp)
+        fsubrp    %st, %st(1)
+        jmp       ..B1.11
+..B1.10:
+        fldl      _zeros@GOTOFF(%edi)
+        fld       %st(0)
+..B1.11:
+        fld       %st(0)
+        lea       (,%edx,8), %eax
+        fld       %st(3)
+        lea       (%eax,%edx,4), %edx
+        fldt      __4onpi_31l@GOTOFF(%edx,%edi)
+        fmul      %st(6), %st
+        movl      %edx, (%esp)
+        fadd      %st, %st(2)
+        fxch      %st(2)
+        fsubr     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fldt      12+__4onpi_31l@GOTOFF(%edx,%edi)
+        fmul      %st, %st(2)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fld       %st(0)
+        fxch      %st(1)
+        fsub      %st, %st(3)
+        fxch      %st(3)
+        fchs      
+        faddp     %st, %st(4)
+        fxch      %st(3)
+        faddp     %st, %st(4)
+        fxch      %st(2)
+        fadd      %st(3), %st
+        fxch      %st(2)
+        fmul      %st(5), %st
+        fadd      %st, %st(2)
+        fld       %st(4)
+        fldt      24+__4onpi_31l@GOTOFF(%edx,%edi)
+        fmul      %st, %st(1)
+        fxch      %st(1)
+        fadd      %st, %st(4)
+        fxch      %st(4)
+        fstpt     8(%esp)
+        movzwl    16(%esp), %ebx
+        andl      $32767, %ebx
+        cmpl      $16415, %ebx
+        jge       ..B1.13
+..B1.12:
+        negl      %ebx
+        addl      $30, %ebx
+        movl      %ebx, %ecx
+        movl      12(%esp), %eax
+        shrl      %cl, %eax
+        shll      %cl, %eax
+        movl      %eax, 12(%esp)
+        movl      $0, 8(%esp)
+        shrl      %cl, %eax
+        jmp       ..B1.14
+..B1.13:
+        negl      %ebx
+        addl      $30, %ebx
+        movl      %ebx, %ecx
+        movl      8(%esp), %edx
+        shrl      %cl, %edx
+        shll      %cl, %edx
+        negl      %ecx
+        movl      12(%esp), %eax
+        shll      %cl, %eax
+        movl      %ebx, %ecx
+        movl      %edx, 8(%esp)
+        shrl      %cl, %edx
+        orl       %edx, %eax
+..B1.14:
+        fldt      8(%esp)
+        addl      4(%esp), %eax
+        fsubrp    %st, %st(3)
+        fmul      %st(6), %st
+        fld       %st(4)
+        movl      %eax, %edx
+        andl      $1, %edx
+        fadd      %st(3), %st
+        movl      (%esp), %ecx
+        fsubr     %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(5)
+        fld       %st(1)
+        fxch      %st(3)
+        faddl     zero_none@GOTOFF(%edi,%edx,8)
+        fadd      %st, %st(3)
+        fsub      %st(3), %st
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(4)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(3)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fld       %st(2)
+        fldt      36+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(1)
+        fld       %st(1)
+        fadd      %st(3), %st
+        fsubr     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fld       %st(2)
+        fldt      48+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(1)
+        fld       %st(1)
+        fadd      %st(3), %st
+        fsubr     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fld       %st(3)
+        fxch      %st(2)
+        fmul      %st(5), %st
+        fldt      60+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(1)
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fld       %st(3)
+        fxch      %st(2)
+        fmul      %st(5), %st
+        fldt      72+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(1)
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fxch      %st(1)
+        fmulp     %st, %st(4)
+        fldt      84+__4onpi_31l@GOTOFF(%edi,%ecx)
+        fmulp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fldl      _TWO_32H@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fadd      %st, %st(1)
+        fsubrp    %st, %st(1)
+        fsubr     %st, %st(2)
+        fxch      %st(3)
+        faddp     %st, %st(2)
+        faddp     %st, %st(1)
+        fldl      _pi04_2d@GOTOFF(%edi)
+        fld       %st(0)
+        fmul      %st(2), %st
+        fxch      %st(2)
+        fadd      %st(3), %st
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        fmull     8+_pi04_2d@GOTOFF(%edi)
+        faddp     %st, %st(1)
+..B1.15:
+        fldl      _TWO_12H@GOTOFF(%edi)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fmul      %st, %st(1)
+        fstpt     8(%esp)
+        fldt      8(%esp)
+        fadd      %st(1), %st
+        fsubp     %st, %st(1)
+        fstl      (%esi)
+        fsubrp    %st, %st(2)
+        faddp     %st, %st(1)
+        fstpl     8(%esi)
+        addl      $20, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+        .align    16,0x90
+	.type	__libm_reduce_pi04l,@function
+	.size	__libm_reduce_pi04l,.-__libm_reduce_pi04l
+	.data
+# -- End  __libm_reduce_pi04l
+	.section .rodata, "a"
+	.align 8
+	.align 8
+zero_none:
+	.long	0x00000000,0x00000000
+	.long	0x00000000,0xbff00000
+	.type	zero_none,@object
+	.size	zero_none,16
+	.align 4
+__4onpi_d:
+	.long	1841940611
+	.long	1072979760
+	.type	__4onpi_d,@object
+	.size	__4onpi_d,8
+	.align 4
+_TWO_32H:
+	.long	0
+	.long	1106771968
+	.type	_TWO_32H,@object
+	.size	_TWO_32H,8
+	.align 4
+_pi04_3d:
+	.long	1413754112
+	.long	1072243195
+	.long	2563527040
+	.long	1021855384
+	.long	3417685868
+	.long	3118450936
+	.type	_pi04_3d,@object
+	.size	_pi04_3d,24
+	.align 4
+_pi04_5d:
+	.long	1413480448
+	.long	1072243195
+	.long	442499072
+	.long	1036039265
+	.long	771751936
+	.long	999496074
+	.long	622854144
+	.long	963347354
+	.long	1396597664
+	.long	922906692
+	.type	_pi04_5d,@object
+	.size	_pi04_5d,40
+	.align 4
+_SCALE:
+	.long	0
+	.long	845152256
+	.type	_SCALE,@object
+	.size	_SCALE,8
+	.align 4
+_zeros:
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	_zeros,@object
+	.size	_zeros,16
+	.align 4
+_pi04_2d:
+	.long	1413480448
+	.long	1072243195
+	.long	442655537
+	.long	1036039265
+	.type	_pi04_2d,@object
+	.size	_pi04_2d,16
+	.align 4
+_TWO_12H:
+	.long	0
+	.long	1085800448
+	.type	_TWO_12H,@object
+	.size	_TWO_12H,8
+	.align 2
+__4onpi_31l:
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	33646
+	.word	41721
+	.word	16600
+	.word	0
+	.word	0
+	.word	0
+	.word	10832
+	.word	40072
+	.word	16567
+	.word	0
+	.word	0
+	.word	0
+	.word	44008
+	.word	65043
+	.word	16537
+	.word	0
+	.word	0
+	.word	0
+	.word	28384
+	.word	64154
+	.word	16505
+	.word	0
+	.word	0
+	.word	0
+	.word	38272
+	.word	56162
+	.word	16472
+	.word	0
+	.word	0
+	.word	0
+	.word	7298
+	.word	51682
+	.word	16445
+	.word	0
+	.word	0
+	.word	0
+	.word	45504
+	.word	65320
+	.word	16409
+	.word	0
+	.word	0
+	.word	0
+	.word	61204
+	.word	44922
+	.word	16382
+	.word	0
+	.word	0
+	.word	0
+	.word	18652
+	.word	50030
+	.word	16351
+	.word	0
+	.word	0
+	.word	0
+	.word	14144
+	.word	59657
+	.word	16318
+	.word	0
+	.word	0
+	.word	0
+	.word	37450
+	.word	47105
+	.word	16290
+	.word	0
+	.word	0
+	.word	0
+	.word	14898
+	.word	56641
+	.word	16259
+	.word	0
+	.word	0
+	.word	0
+	.word	34680
+	.word	34623
+	.word	16226
+	.word	0
+	.word	0
+	.word	0
+	.word	4760
+	.word	45515
+	.word	16196
+	.word	0
+	.word	0
+	.word	0
+	.word	41480
+	.word	40187
+	.word	16166
+	.word	0
+	.word	0
+	.word	0
+	.word	47852
+	.word	55252
+	.word	16134
+	.word	0
+	.word	0
+	.word	0
+	.word	54072
+	.word	35081
+	.word	16103
+	.word	0
+	.word	0
+	.word	0
+	.word	26808
+	.word	57421
+	.word	16071
+	.word	0
+	.word	0
+	.word	0
+	.word	20068
+	.word	57232
+	.word	16042
+	.word	0
+	.word	0
+	.word	0
+	.word	49576
+	.word	60188
+	.word	16009
+	.word	0
+	.word	0
+	.word	0
+	.word	10016
+	.word	52861
+	.word	15978
+	.word	0
+	.word	0
+	.word	0
+	.word	30648
+	.word	35825
+	.word	15947
+	.word	0
+	.word	0
+	.word	0
+	.word	60542
+	.word	58528
+	.word	15918
+	.word	0
+	.word	0
+	.word	0
+	.word	65468
+	.word	61743
+	.word	15887
+	.word	0
+	.word	0
+	.word	0
+	.word	64960
+	.word	45825
+	.word	15851
+	.word	0
+	.word	0
+	.word	0
+	.word	50604
+	.word	38792
+	.word	15825
+	.word	0
+	.word	0
+	.word	0
+	.word	18394
+	.word	33435
+	.word	15794
+	.word	0
+	.word	0
+	.word	0
+	.word	55780
+	.word	42703
+	.word	15763
+	.word	0
+	.word	0
+	.word	0
+	.word	14056
+	.word	63841
+	.word	15731
+	.word	0
+	.word	0
+	.word	0
+	.word	63080
+	.word	62563
+	.word	15700
+	.word	0
+	.word	0
+	.word	0
+	.word	20840
+	.word	62207
+	.word	15669
+	.word	0
+	.word	0
+	.word	0
+	.word	30094
+	.word	59983
+	.word	15639
+	.word	0
+	.word	0
+	.word	0
+	.word	61818
+	.word	60389
+	.word	15608
+	.word	0
+	.word	0
+	.word	0
+	.word	40186
+	.word	40579
+	.word	15577
+	.word	0
+	.word	0
+	.word	0
+	.word	42170
+	.word	58004
+	.word	15546
+	.word	0
+	.word	0
+	.word	0
+	.word	55276
+	.word	39678
+	.word	15514
+	.word	0
+	.word	0
+	.word	0
+	.word	44672
+	.word	36806
+	.word	15481
+	.word	0
+	.word	0
+	.word	0
+	.word	13060
+	.word	34144
+	.word	15452
+	.word	0
+	.word	0
+	.word	0
+	.word	28016
+	.word	57231
+	.word	15419
+	.word	0
+	.word	0
+	.word	0
+	.word	16112
+	.word	44995
+	.word	15390
+	.word	0
+	.word	0
+	.word	0
+	.word	53464
+	.word	33387
+	.word	15358
+	.word	0
+	.word	0
+	.word	0
+	.word	7296
+	.word	60751
+	.word	15325
+	.word	0
+	.word	0
+	.word	0
+	.word	29452
+	.word	45231
+	.word	15297
+	.word	0
+	.word	0
+	.word	0
+	.word	26208
+	.word	49689
+	.word	15266
+	.word	0
+	.word	0
+	.word	0
+	.word	37900
+	.word	44002
+	.word	15235
+	.word	0
+	.word	0
+	.word	0
+	.word	57340
+	.word	33800
+	.word	15204
+	.word	0
+	.word	0
+	.word	0
+	.word	27544
+	.word	50178
+	.word	15173
+	.word	0
+	.word	0
+	.word	0
+	.word	6168
+	.word	40132
+	.word	15142
+	.word	0
+	.word	0
+	.word	0
+	.word	21392
+	.word	43702
+	.word	15109
+	.word	0
+	.word	0
+	.word	0
+	.word	45168
+	.word	54372
+	.word	15081
+	.word	0
+	.word	0
+	.word	0
+	.word	8986
+	.word	40688
+	.word	15050
+	.word	0
+	.word	0
+	.word	0
+	.word	1648
+	.word	53745
+	.word	15018
+	.word	0
+	.word	0
+	.word	0
+	.word	30520
+	.word	55795
+	.word	14986
+	.word	0
+	.word	0
+	.word	0
+	.word	43060
+	.word	32914
+	.word	14956
+	.word	0
+	.word	0
+	.word	0
+	.word	46172
+	.word	52771
+	.word	14925
+	.word	0
+	.word	0
+	.word	0
+	.word	14056
+	.word	45285
+	.word	14893
+	.word	0
+	.word	0
+	.word	0
+	.word	53590
+	.word	44868
+	.word	14864
+	.word	0
+	.word	0
+	.word	0
+	.word	40786
+	.word	35970
+	.word	14833
+	.word	0
+	.word	0
+	.word	0
+	.word	33436
+	.word	65411
+	.word	14801
+	.word	0
+	.word	0
+	.word	0
+	.word	32006
+	.word	61382
+	.word	14771
+	.word	0
+	.word	0
+	.word	0
+	.word	37856
+	.word	45239
+	.word	14738
+	.word	0
+	.word	0
+	.word	0
+	.word	60894
+	.word	49555
+	.word	14709
+	.word	0
+	.word	0
+	.word	0
+	.word	48064
+	.word	53065
+	.word	14674
+	.word	0
+	.word	0
+	.word	0
+	.word	48624
+	.word	54844
+	.word	14647
+	.word	0
+	.word	0
+	.word	0
+	.word	7988
+	.word	40762
+	.word	14616
+	.word	0
+	.word	0
+	.word	0
+	.word	16270
+	.word	58745
+	.word	14585
+	.word	0
+	.word	0
+	.word	0
+	.word	37064
+	.word	50168
+	.word	14553
+	.word	0
+	.word	0
+	.word	0
+	.word	18624
+	.word	63736
+	.word	14519
+	.word	0
+	.word	0
+	.word	0
+	.word	60758
+	.word	44966
+	.word	14492
+	.word	0
+	.word	0
+	.word	0
+	.word	33304
+	.word	47465
+	.word	14461
+	.word	0
+	.word	0
+	.word	0
+	.word	6226
+	.word	60503
+	.word	14430
+	.word	0
+	.word	0
+	.word	0
+	.word	26380
+	.word	54900
+	.word	14398
+	.word	0
+	.word	0
+	.word	0
+	.word	44352
+	.word	49860
+	.word	14368
+	.word	0
+	.word	0
+	.word	0
+	.word	11904
+	.word	42646
+	.word	14337
+	.word	0
+	.word	0
+	.word	0
+	.word	55296
+	.word	50279
+	.word	14300
+	.word	0
+	.word	0
+	.word	0
+	.word	15474
+	.word	50606
+	.word	14275
+	.word	0
+	.word	0
+	.word	0
+	.word	45062
+	.word	44137
+	.word	14244
+	.word	0
+	.word	0
+	.word	0
+	.word	13472
+	.word	36063
+	.word	14210
+	.word	0
+	.word	0
+	.word	0
+	.word	40658
+	.word	53854
+	.word	14182
+	.word	0
+	.word	0
+	.word	0
+	.word	28652
+	.word	43690
+	.word	14151
+	.word	0
+	.word	0
+	.word	0
+	.word	24640
+	.word	64348
+	.word	14118
+	.word	0
+	.word	0
+	.word	0
+	.word	30284
+	.word	41980
+	.word	14088
+	.word	0
+	.word	0
+	.word	0
+	.word	45652
+	.word	38222
+	.word	14057
+	.word	0
+	.word	0
+	.word	0
+	.word	15900
+	.word	62940
+	.word	14026
+	.word	0
+	.word	0
+	.word	0
+	.word	31494
+	.word	50741
+	.word	13996
+	.word	0
+	.word	0
+	.word	0
+	.word	43194
+	.word	55096
+	.word	13965
+	.word	0
+	.word	0
+	.word	0
+	.word	1740
+	.word	45646
+	.word	13933
+	.word	0
+	.word	0
+	.word	0
+	.word	28936
+	.word	44150
+	.word	13903
+	.word	0
+	.word	0
+	.word	0
+	.word	8996
+	.word	42955
+	.word	13872
+	.word	0
+	.word	0
+	.word	0
+	.word	44096
+	.word	61205
+	.word	13839
+	.word	0
+	.word	0
+	.word	0
+	.word	44614
+	.word	54550
+	.word	13810
+	.word	0
+	.word	0
+	.word	0
+	.word	24926
+	.word	57347
+	.word	13779
+	.word	0
+	.word	0
+	.word	0
+	.word	3312
+	.word	61415
+	.word	13745
+	.word	0
+	.word	0
+	.word	0
+	.word	64336
+	.word	63884
+	.word	13717
+	.word	0
+	.word	0
+	.word	0
+	.word	2748
+	.word	62259
+	.word	13685
+	.word	0
+	.word	0
+	.word	0
+	.word	56672
+	.word	51775
+	.word	13653
+	.word	0
+	.word	0
+	.word	0
+	.word	32438
+	.word	55423
+	.word	13624
+	.word	0
+	.word	0
+	.word	0
+	.word	17652
+	.word	45713
+	.word	13593
+	.word	0
+	.word	0
+	.word	0
+	.word	65408
+	.word	51586
+	.word	13558
+	.word	0
+	.word	0
+	.word	0
+	.word	40416
+	.word	55736
+	.word	13531
+	.word	0
+	.word	0
+	.word	0
+	.word	52546
+	.word	37734
+	.word	13500
+	.word	0
+	.word	0
+	.word	0
+	.word	48880
+	.word	64238
+	.word	13469
+	.word	0
+	.word	0
+	.word	0
+	.word	56004
+	.word	46833
+	.word	13437
+	.word	0
+	.word	0
+	.word	0
+	.word	61760
+	.word	38110
+	.word	13405
+	.word	0
+	.word	0
+	.word	0
+	.word	41496
+	.word	35659
+	.word	13374
+	.word	0
+	.word	0
+	.word	0
+	.word	25472
+	.word	41269
+	.word	13342
+	.word	0
+	.word	0
+	.word	0
+	.word	45444
+	.word	36018
+	.word	13314
+	.word	0
+	.word	0
+	.word	0
+	.word	6510
+	.word	56417
+	.word	13283
+	.word	0
+	.word	0
+	.word	0
+	.word	3072
+	.word	56837
+	.word	13252
+	.word	0
+	.word	0
+	.word	0
+	.word	61338
+	.word	48440
+	.word	13221
+	.word	0
+	.word	0
+	.word	0
+	.word	49568
+	.word	57088
+	.word	13189
+	.word	0
+	.word	0
+	.word	0
+	.word	4240
+	.word	39283
+	.word	13157
+	.word	0
+	.word	0
+	.word	0
+	.word	18562
+	.word	33537
+	.word	13128
+	.word	0
+	.word	0
+	.word	0
+	.word	31422
+	.word	44487
+	.word	13097
+	.word	0
+	.word	0
+	.word	0
+	.word	31930
+	.word	60459
+	.word	13066
+	.word	0
+	.word	0
+	.word	0
+	.word	42272
+	.word	36641
+	.word	13033
+	.word	0
+	.word	0
+	.word	0
+	.word	28940
+	.word	36150
+	.word	13004
+	.word	0
+	.word	0
+	.word	0
+	.word	21010
+	.word	50925
+	.word	12973
+	.word	0
+	.word	0
+	.word	0
+	.word	29448
+	.word	64886
+	.word	12941
+	.word	0
+	.word	0
+	.word	0
+	.word	20500
+	.word	54600
+	.word	12911
+	.word	0
+	.word	0
+	.word	0
+	.word	54258
+	.word	46233
+	.word	12880
+	.word	0
+	.word	0
+	.word	0
+	.word	32628
+	.word	42502
+	.word	12848
+	.word	0
+	.word	0
+	.word	0
+	.word	61608
+	.word	55072
+	.word	12818
+	.word	0
+	.word	0
+	.word	0
+	.word	6236
+	.word	57871
+	.word	12786
+	.word	0
+	.word	0
+	.word	0
+	.word	42408
+	.word	34616
+	.word	12756
+	.word	0
+	.word	0
+	.word	0
+	.word	56692
+	.word	51963
+	.word	12724
+	.word	0
+	.word	0
+	.word	0
+	.word	39094
+	.word	48526
+	.word	12694
+	.word	0
+	.word	0
+	.word	0
+	.word	59870
+	.word	38783
+	.word	12663
+	.word	0
+	.word	0
+	.word	0
+	.word	26560
+	.word	33165
+	.word	12632
+	.word	0
+	.word	0
+	.word	0
+	.word	58666
+	.word	37666
+	.word	12601
+	.word	0
+	.word	0
+	.word	0
+	.word	58728
+	.word	39788
+	.word	12569
+	.word	0
+	.word	0
+	.word	0
+	.word	9048
+	.word	43530
+	.word	12538
+	.word	0
+	.word	0
+	.word	0
+	.word	58496
+	.word	57659
+	.word	12505
+	.word	0
+	.word	0
+	.word	0
+	.word	12324
+	.word	37025
+	.word	12477
+	.word	0
+	.word	0
+	.word	0
+	.word	38432
+	.word	55856
+	.word	12445
+	.word	0
+	.word	0
+	.word	0
+	.word	35210
+	.word	45960
+	.word	12415
+	.word	0
+	.word	0
+	.word	0
+	.word	45644
+	.word	51345
+	.word	12384
+	.word	0
+	.word	0
+	.word	0
+	.word	32854
+	.word	63883
+	.word	12353
+	.word	0
+	.word	0
+	.word	0
+	.word	29348
+	.word	41450
+	.word	12321
+	.word	0
+	.word	0
+	.word	0
+	.word	27384
+	.word	38024
+	.word	12289
+	.word	0
+	.word	0
+	.word	0
+	.word	57356
+	.word	57291
+	.word	12260
+	.word	0
+	.word	0
+	.word	0
+	.word	61164
+	.word	51521
+	.word	12228
+	.word	0
+	.word	0
+	.word	0
+	.word	21472
+	.word	59151
+	.word	12196
+	.word	0
+	.word	0
+	.word	0
+	.word	36704
+	.word	39943
+	.word	12165
+	.word	0
+	.word	0
+	.word	0
+	.word	45864
+	.word	50151
+	.word	12136
+	.word	0
+	.word	0
+	.word	0
+	.word	37892
+	.word	63687
+	.word	12104
+	.word	0
+	.word	0
+	.word	0
+	.word	14560
+	.word	51615
+	.word	12073
+	.word	0
+	.word	0
+	.word	0
+	.word	38776
+	.word	55684
+	.word	12041
+	.word	0
+	.word	0
+	.word	0
+	.word	59136
+	.word	53570
+	.word	12010
+	.word	0
+	.word	0
+	.word	0
+	.word	55556
+	.word	37955
+	.word	11981
+	.word	0
+	.word	0
+	.word	0
+	.word	54458
+	.word	44670
+	.word	11950
+	.word	0
+	.word	0
+	.word	0
+	.word	36446
+	.word	34084
+	.word	11919
+	.word	0
+	.word	0
+	.word	0
+	.word	46416
+	.word	51693
+	.word	11886
+	.word	0
+	.word	0
+	.word	0
+	.word	21432
+	.word	34376
+	.word	11857
+	.word	0
+	.word	0
+	.word	0
+	.word	56036
+	.word	34809
+	.word	11826
+	.word	0
+	.word	0
+	.word	0
+	.word	10562
+	.word	55654
+	.word	11795
+	.word	0
+	.word	0
+	.word	0
+	.word	20264
+	.word	53052
+	.word	11763
+	.word	0
+	.word	0
+	.word	0
+	.word	64064
+	.word	50415
+	.word	11729
+	.word	0
+	.word	0
+	.word	0
+	.word	17444
+	.word	48295
+	.word	11701
+	.word	0
+	.word	0
+	.word	0
+	.word	11874
+	.word	52677
+	.word	11671
+	.word	0
+	.word	0
+	.word	0
+	.word	60808
+	.word	39275
+	.word	11640
+	.word	0
+	.word	0
+	.word	0
+	.word	31792
+	.word	55677
+	.word	11606
+	.word	0
+	.word	0
+	.word	0
+	.word	60710
+	.word	49006
+	.word	11578
+	.word	0
+	.word	0
+	.word	0
+	.word	10520
+	.word	37403
+	.word	11546
+	.word	0
+	.word	0
+	.word	0
+	.word	20004
+	.word	59470
+	.word	11515
+	.word	0
+	.word	0
+	.word	0
+	.word	28096
+	.word	37612
+	.word	11485
+	.word	0
+	.word	0
+	.word	0
+	.word	20268
+	.word	44280
+	.word	11453
+	.word	0
+	.word	0
+	.word	0
+	.word	50740
+	.word	61588
+	.word	11422
+	.word	0
+	.word	0
+	.word	0
+	.word	56432
+	.word	58835
+	.word	11390
+	.word	0
+	.word	0
+	.word	0
+	.word	8576
+	.word	42496
+	.word	11355
+	.word	0
+	.word	0
+	.word	0
+	.word	33920
+	.word	54912
+	.word	11324
+	.word	0
+	.word	0
+	.word	0
+	.word	35620
+	.word	54843
+	.word	11298
+	.word	0
+	.word	0
+	.word	0
+	.word	736
+	.word	43591
+	.word	11264
+	.word	0
+	.word	0
+	.word	0
+	.word	39632
+	.word	61060
+	.word	11235
+	.word	0
+	.word	0
+	.word	0
+	.word	63452
+	.word	63129
+	.word	11206
+	.word	0
+	.word	0
+	.word	0
+	.word	56798
+	.word	58512
+	.word	11175
+	.word	0
+	.word	0
+	.word	0
+	.word	13472
+	.word	46333
+	.word	11141
+	.word	0
+	.word	0
+	.word	0
+	.word	37300
+	.word	36598
+	.word	11112
+	.word	0
+	.word	0
+	.word	0
+	.word	41952
+	.word	41639
+	.word	11079
+	.word	0
+	.word	0
+	.word	0
+	.word	52452
+	.word	33459
+	.word	11050
+	.word	0
+	.word	0
+	.word	0
+	.word	58558
+	.word	33287
+	.word	11020
+	.word	0
+	.word	0
+	.word	0
+	.word	7570
+	.word	43843
+	.word	10989
+	.word	0
+	.word	0
+	.word	0
+	.word	59416
+	.word	63990
+	.word	10957
+	.word	0
+	.word	0
+	.word	0
+	.word	65298
+	.word	47744
+	.word	10927
+	.word	0
+	.word	0
+	.word	0
+	.word	21076
+	.word	34089
+	.word	10896
+	.word	0
+	.word	0
+	.word	0
+	.word	7048
+	.word	57394
+	.word	10865
+	.word	0
+	.word	0
+	.word	0
+	.word	12872
+	.word	55405
+	.word	10832
+	.word	0
+	.word	0
+	.word	0
+	.word	12608
+	.word	51669
+	.word	10798
+	.word	0
+	.word	0
+	.word	0
+	.word	5350
+	.word	48455
+	.word	10772
+	.word	0
+	.word	0
+	.word	0
+	.word	23568
+	.word	58692
+	.word	10740
+	.word	0
+	.word	0
+	.word	0
+	.word	40784
+	.word	37046
+	.word	10708
+	.word	0
+	.word	0
+	.word	0
+	.word	38992
+	.word	43861
+	.word	10678
+	.word	0
+	.word	0
+	.word	0
+	.word	10064
+	.word	40199
+	.word	10648
+	.word	0
+	.word	0
+	.word	0
+	.word	26368
+	.word	35771
+	.word	10611
+	.word	0
+	.word	0
+	.word	0
+	.word	23994
+	.word	60721
+	.word	10586
+	.word	0
+	.word	0
+	.word	0
+	.word	25052
+	.word	34302
+	.word	10554
+	.word	0
+	.word	0
+	.word	0
+	.word	39842
+	.word	54964
+	.word	10524
+	.word	0
+	.word	0
+	.word	0
+	.word	11568
+	.word	58277
+	.word	10491
+	.word	0
+	.word	0
+	.word	0
+	.word	26160
+	.word	46438
+	.word	10461
+	.word	0
+	.word	0
+	.word	0
+	.word	23252
+	.word	43049
+	.word	10431
+	.word	0
+	.word	0
+	.word	0
+	.word	35288
+	.word	58000
+	.word	10400
+	.word	0
+	.word	0
+	.word	0
+	.word	14614
+	.word	50216
+	.word	10369
+	.word	0
+	.word	0
+	.word	0
+	.word	1168
+	.word	48804
+	.word	10336
+	.word	0
+	.word	0
+	.word	0
+	.word	60934
+	.word	33006
+	.word	10307
+	.word	0
+	.word	0
+	.word	0
+	.word	64512
+	.word	62247
+	.word	10272
+	.word	0
+	.word	0
+	.word	0
+	.word	59968
+	.word	43121
+	.word	10240
+	.word	0
+	.word	0
+	.word	0
+	.word	25560
+	.word	39974
+	.word	10212
+	.word	0
+	.word	0
+	.word	0
+	.word	1978
+	.word	49353
+	.word	10183
+	.word	0
+	.word	0
+	.word	0
+	.word	16290
+	.word	38807
+	.word	10152
+	.word	0
+	.word	0
+	.word	0
+	.word	8646
+	.word	65226
+	.word	10121
+	.word	0
+	.word	0
+	.word	0
+	.word	56896
+	.word	34317
+	.word	10088
+	.word	0
+	.word	0
+	.word	0
+	.word	40136
+	.word	39118
+	.word	10057
+	.word	0
+	.word	0
+	.word	0
+	.word	14200
+	.word	41756
+	.word	10026
+	.word	0
+	.word	0
+	.word	0
+	.word	59256
+	.word	63202
+	.word	9995
+	.word	0
+	.word	0
+	.word	0
+	.word	22968
+	.word	63553
+	.word	9965
+	.word	0
+	.word	0
+	.word	0
+	.word	736
+	.word	44292
+	.word	9933
+	.word	0
+	.word	0
+	.word	0
+	.word	23186
+	.word	37760
+	.word	9904
+	.word	0
+	.word	0
+	.word	0
+	.word	51008
+	.word	34950
+	.word	9869
+	.word	0
+	.word	0
+	.word	0
+	.word	1664
+	.word	64248
+	.word	9836
+	.word	0
+	.word	0
+	.word	0
+	.word	64352
+	.word	35199
+	.word	9811
+	.word	0
+	.word	0
+	.word	0
+	.word	34656
+	.word	63747
+	.word	9780
+	.word	0
+	.word	0
+	.word	0
+	.word	44330
+	.word	49864
+	.word	9749
+	.word	0
+	.word	0
+	.word	0
+	.word	11654
+	.word	35567
+	.word	9718
+	.word	0
+	.word	0
+	.word	0
+	.word	7924
+	.word	58919
+	.word	9686
+	.word	0
+	.word	0
+	.word	0
+	.word	2532
+	.word	32800
+	.word	9655
+	.word	0
+	.word	0
+	.word	0
+	.word	30024
+	.word	53799
+	.word	9624
+	.word	0
+	.word	0
+	.word	0
+	.word	30172
+	.word	64347
+	.word	9593
+	.word	0
+	.word	0
+	.word	0
+	.word	60036
+	.word	51382
+	.word	9562
+	.word	0
+	.word	0
+	.word	0
+	.word	58576
+	.word	33093
+	.word	9531
+	.word	0
+	.word	0
+	.word	0
+	.word	13888
+	.word	38760
+	.word	9500
+	.word	0
+	.word	0
+	.word	0
+	.word	9322
+	.word	52460
+	.word	9470
+	.word	0
+	.word	0
+	.word	0
+	.word	20944
+	.word	41077
+	.word	9437
+	.word	0
+	.word	0
+	.word	0
+	.word	17976
+	.word	41861
+	.word	9407
+	.word	0
+	.word	0
+	.word	0
+	.word	55176
+	.word	55158
+	.word	9377
+	.word	0
+	.word	0
+	.word	0
+	.word	4976
+	.word	35223
+	.word	9346
+	.word	0
+	.word	0
+	.word	0
+	.word	7816
+	.word	39783
+	.word	9314
+	.word	0
+	.word	0
+	.word	0
+	.word	27656
+	.word	55669
+	.word	9284
+	.word	0
+	.word	0
+	.word	0
+	.word	64944
+	.word	53184
+	.word	9250
+	.word	0
+	.word	0
+	.word	0
+	.word	12544
+	.word	49190
+	.word	9222
+	.word	0
+	.word	0
+	.word	0
+	.word	50612
+	.word	44644
+	.word	9190
+	.word	0
+	.word	0
+	.word	0
+	.word	8832
+	.word	63111
+	.word	9155
+	.word	0
+	.word	0
+	.word	0
+	.word	11744
+	.word	36870
+	.word	9129
+	.word	0
+	.word	0
+	.word	0
+	.word	9404
+	.word	63025
+	.word	9098
+	.word	0
+	.word	0
+	.word	0
+	.word	47316
+	.word	43381
+	.word	9067
+	.word	0
+	.word	0
+	.word	0
+	.word	55716
+	.word	47433
+	.word	9035
+	.word	0
+	.word	0
+	.word	0
+	.word	46414
+	.word	48441
+	.word	9005
+	.word	0
+	.word	0
+	.word	0
+	.word	19116
+	.word	39506
+	.word	8974
+	.word	0
+	.word	0
+	.word	0
+	.word	48060
+	.word	53381
+	.word	8943
+	.word	0
+	.word	0
+	.word	0
+	.word	57112
+	.word	50739
+	.word	8911
+	.word	0
+	.word	0
+	.word	0
+	.word	5840
+	.word	60581
+	.word	8879
+	.word	0
+	.word	0
+	.word	0
+	.word	62112
+	.word	57199
+	.word	8846
+	.word	0
+	.word	0
+	.word	0
+	.word	35908
+	.word	59499
+	.word	8818
+	.word	0
+	.word	0
+	.word	0
+	.word	13760
+	.word	48116
+	.word	8787
+	.word	0
+	.word	0
+	.word	0
+	.word	3136
+	.word	56059
+	.word	8752
+	.word	0
+	.word	0
+	.word	0
+	.word	37596
+	.word	39221
+	.word	8726
+	.word	0
+	.word	0
+	.word	0
+	.word	3232
+	.word	48550
+	.word	8691
+	.word	0
+	.word	0
+	.word	0
+	.word	22872
+	.word	42749
+	.word	8662
+	.word	0
+	.word	0
+	.word	0
+	.word	41948
+	.word	40319
+	.word	8633
+	.word	0
+	.word	0
+	.word	0
+	.word	31196
+	.word	64693
+	.word	8601
+	.word	0
+	.word	0
+	.word	0
+	.word	62052
+	.word	52923
+	.word	8571
+	.word	0
+	.word	0
+	.word	0
+	.word	2750
+	.word	33544
+	.word	8540
+	.word	0
+	.word	0
+	.word	0
+	.word	12462
+	.word	46179
+	.word	8509
+	.word	0
+	.word	0
+	.word	0
+	.word	25128
+	.word	45120
+	.word	8476
+	.word	0
+	.word	0
+	.word	0
+	.word	51634
+	.word	62523
+	.word	8447
+	.word	0
+	.word	0
+	.word	0
+	.word	15758
+	.word	42163
+	.word	8416
+	.word	0
+	.word	0
+	.word	0
+	.word	34022
+	.word	36267
+	.word	8385
+	.word	0
+	.word	0
+	.word	0
+	.word	41252
+	.word	39796
+	.word	8353
+	.word	0
+	.word	0
+	.word	0
+	.word	49782
+	.word	54423
+	.word	8323
+	.word	0
+	.word	0
+	.word	0
+	.word	25428
+	.word	42086
+	.word	8291
+	.word	0
+	.word	0
+	.word	0
+	.word	34388
+	.word	44810
+	.word	8260
+	.word	0
+	.word	0
+	.word	0
+	.word	7456
+	.word	64092
+	.word	8228
+	.word	0
+	.word	0
+	.word	0
+	.word	48336
+	.word	62448
+	.word	8196
+	.word	0
+	.word	0
+	.word	0
+	.word	60912
+	.word	61622
+	.word	8167
+	.word	0
+	.word	0
+	.word	0
+	.word	17852
+	.word	37250
+	.word	8137
+	.word	0
+	.word	0
+	.word	0
+	.word	57940
+	.word	56453
+	.word	8106
+	.word	0
+	.word	0
+	.word	0
+	.word	47256
+	.word	59825
+	.word	8074
+	.word	0
+	.word	0
+	.word	0
+	.word	3774
+	.word	59120
+	.word	8044
+	.word	0
+	.word	0
+	.word	0
+	.word	43448
+	.word	62852
+	.word	8012
+	.word	0
+	.word	0
+	.word	0
+	.word	4840
+	.word	57195
+	.word	7982
+	.word	0
+	.word	0
+	.word	0
+	.word	40862
+	.word	52565
+	.word	7951
+	.word	0
+	.word	0
+	.word	0
+	.word	1440
+	.word	60474
+	.word	7919
+	.word	0
+	.word	0
+	.word	0
+	.word	55520
+	.word	38648
+	.word	7889
+	.word	0
+	.word	0
+	.word	0
+	.word	15316
+	.word	52422
+	.word	7857
+	.word	0
+	.word	0
+	.word	0
+	.word	18704
+	.word	47227
+	.word	7827
+	.word	0
+	.word	0
+	.word	0
+	.word	48892
+	.word	54283
+	.word	7795
+	.word	0
+	.word	0
+	.word	0
+	.word	12670
+	.word	41990
+	.word	7765
+	.word	0
+	.word	0
+	.word	0
+	.word	27570
+	.word	49842
+	.word	7734
+	.word	0
+	.word	0
+	.word	0
+	.word	47230
+	.word	47992
+	.word	7703
+	.word	0
+	.word	0
+	.word	0
+	.word	41020
+	.word	56253
+	.word	7671
+	.word	0
+	.word	0
+	.word	0
+	.word	23404
+	.word	58312
+	.word	7641
+	.word	0
+	.word	0
+	.word	0
+	.word	35176
+	.word	51854
+	.word	7610
+	.word	0
+	.word	0
+	.word	0
+	.word	49188
+	.word	59051
+	.word	7578
+	.word	0
+	.word	0
+	.word	0
+	.word	16656
+	.word	54507
+	.word	7546
+	.word	0
+	.word	0
+	.word	0
+	.word	41320
+	.word	48565
+	.word	7517
+	.word	0
+	.word	0
+	.word	0
+	.word	302
+	.word	42490
+	.word	7486
+	.word	0
+	.word	0
+	.word	0
+	.word	26680
+	.word	39967
+	.word	7454
+	.word	0
+	.word	0
+	.word	0
+	.word	41304
+	.word	43638
+	.word	7424
+	.word	0
+	.word	0
+	.word	0
+	.word	2314
+	.word	48533
+	.word	7393
+	.word	0
+	.word	0
+	.word	0
+	.word	63294
+	.word	35693
+	.word	7362
+	.word	0
+	.word	0
+	.word	0
+	.word	24538
+	.word	48319
+	.word	7331
+	.word	0
+	.word	0
+	.word	0
+	.word	56296
+	.word	47263
+	.word	7300
+	.word	0
+	.word	0
+	.word	0
+	.word	28236
+	.word	38599
+	.word	7268
+	.word	0
+	.word	0
+	.word	0
+	.word	6594
+	.word	62116
+	.word	7238
+	.word	0
+	.word	0
+	.word	0
+	.word	47104
+	.word	63573
+	.word	7198
+	.word	0
+	.word	0
+	.word	0
+	.word	34812
+	.word	34303
+	.word	7176
+	.word	0
+	.word	0
+	.word	0
+	.word	5144
+	.word	33695
+	.word	7145
+	.word	0
+	.word	0
+	.word	0
+	.word	24966
+	.word	55768
+	.word	7114
+	.word	0
+	.word	0
+	.word	0
+	.word	62720
+	.word	43946
+	.word	7078
+	.word	0
+	.word	0
+	.word	0
+	.word	31542
+	.word	56062
+	.word	7052
+	.word	0
+	.word	0
+	.word	0
+	.word	62356
+	.word	59096
+	.word	7020
+	.word	0
+	.word	0
+	.word	0
+	.word	28412
+	.word	40533
+	.word	6990
+	.word	0
+	.word	0
+	.word	0
+	.word	24080
+	.word	50467
+	.word	6958
+	.word	0
+	.word	0
+	.word	0
+	.word	33296
+	.word	46841
+	.word	6925
+	.word	0
+	.word	0
+	.word	0
+	.word	39600
+	.word	38627
+	.word	6897
+	.word	0
+	.word	0
+	.word	0
+	.word	14436
+	.word	37607
+	.word	6865
+	.word	0
+	.word	0
+	.word	0
+	.word	39032
+	.word	56421
+	.word	6833
+	.word	0
+	.word	0
+	.word	0
+	.word	64032
+	.word	54987
+	.word	6804
+	.word	0
+	.word	0
+	.word	0
+	.word	27648
+	.word	42212
+	.word	6768
+	.word	0
+	.word	0
+	.word	0
+	.word	43840
+	.word	46107
+	.word	6739
+	.word	0
+	.word	0
+	.word	0
+	.word	17316
+	.word	36574
+	.word	6711
+	.word	0
+	.word	0
+	.word	0
+	.word	8928
+	.word	37652
+	.word	6677
+	.word	0
+	.word	0
+	.word	0
+	.word	24944
+	.word	47433
+	.word	6648
+	.word	0
+	.word	0
+	.word	0
+	.word	27392
+	.word	57430
+	.word	6616
+	.word	0
+	.word	0
+	.word	0
+	.word	39848
+	.word	43340
+	.word	6585
+	.word	0
+	.word	0
+	.word	0
+	.word	64160
+	.word	43542
+	.word	6555
+	.word	0
+	.word	0
+	.word	0
+	.word	35226
+	.word	63015
+	.word	6525
+	.word	0
+	.word	0
+	.word	0
+	.word	40736
+	.word	64368
+	.word	6493
+	.word	0
+	.word	0
+	.word	0
+	.word	42168
+	.word	49526
+	.word	6462
+	.word	0
+	.word	0
+	.word	0
+	.word	45596
+	.word	34243
+	.word	6432
+	.word	0
+	.word	0
+	.word	0
+	.word	20690
+	.word	39705
+	.word	6401
+	.word	0
+	.word	0
+	.word	0
+	.word	54448
+	.word	46856
+	.word	6368
+	.word	0
+	.word	0
+	.word	0
+	.word	64392
+	.word	62736
+	.word	6337
+	.word	0
+	.word	0
+	.word	0
+	.word	12780
+	.word	56461
+	.word	6307
+	.word	0
+	.word	0
+	.word	0
+	.word	15360
+	.word	49145
+	.word	6277
+	.word	0
+	.word	0
+	.word	0
+	.word	20512
+	.word	49931
+	.word	6242
+	.word	0
+	.word	0
+	.word	0
+	.word	54512
+	.word	55820
+	.word	6212
+	.word	0
+	.word	0
+	.word	0
+	.word	8402
+	.word	39333
+	.word	6184
+	.word	0
+	.word	0
+	.word	0
+	.word	34094
+	.word	53593
+	.word	6153
+	.word	0
+	.word	0
+	.word	0
+	.word	31960
+	.word	38817
+	.word	6121
+	.word	0
+	.word	0
+	.word	0
+	.word	16954
+	.word	39291
+	.word	6091
+	.word	0
+	.word	0
+	.word	0
+	.word	49600
+	.word	48765
+	.word	6056
+	.word	0
+	.word	0
+	.word	0
+	.word	59580
+	.word	56541
+	.word	6029
+	.word	0
+	.word	0
+	.word	0
+	.word	35624
+	.word	44550
+	.word	5998
+	.word	0
+	.word	0
+	.word	0
+	.word	4142
+	.word	47316
+	.word	5967
+	.word	0
+	.word	0
+	.word	0
+	.word	43520
+	.word	43612
+	.word	5935
+	.word	0
+	.word	0
+	.word	0
+	.word	20976
+	.word	40896
+	.word	5902
+	.word	0
+	.word	0
+	.word	0
+	.word	63576
+	.word	57729
+	.word	5874
+	.word	0
+	.word	0
+	.word	0
+	.word	37288
+	.word	33122
+	.word	5843
+	.word	0
+	.word	0
+	.word	0
+	.word	24384
+	.word	52079
+	.word	5809
+	.word	0
+	.word	0
+	.word	0
+	.word	47952
+	.word	58719
+	.word	5779
+	.word	0
+	.word	0
+	.word	0
+	.word	44242
+	.word	55445
+	.word	5750
+	.word	0
+	.word	0
+	.word	0
+	.word	61232
+	.word	38847
+	.word	5716
+	.word	0
+	.word	0
+	.word	0
+	.word	63232
+	.word	46039
+	.word	5683
+	.word	0
+	.word	0
+	.word	0
+	.word	13396
+	.word	42933
+	.word	5657
+	.word	0
+	.word	0
+	.word	0
+	.word	27392
+	.word	43305
+	.word	5622
+	.word	0
+	.word	0
+	.word	0
+	.word	40708
+	.word	35319
+	.word	5595
+	.word	0
+	.word	0
+	.word	0
+	.word	44408
+	.word	55685
+	.word	5564
+	.word	0
+	.word	0
+	.word	0
+	.word	42090
+	.word	44607
+	.word	5533
+	.word	0
+	.word	0
+	.word	0
+	.word	25504
+	.word	53466
+	.word	5500
+	.word	0
+	.word	0
+	.word	0
+	.word	24208
+	.word	33149
+	.word	5470
+	.word	0
+	.word	0
+	.word	0
+	.word	5268
+	.word	45375
+	.word	5440
+	.word	0
+	.word	0
+	.word	0
+	.word	144
+	.word	40000
+	.word	5409
+	.word	0
+	.word	0
+	.word	0
+	.word	56688
+	.word	52358
+	.word	5376
+	.word	0
+	.word	0
+	.word	0
+	.word	25848
+	.word	56175
+	.word	5345
+	.word	0
+	.word	0
+	.word	0
+	.word	57900
+	.word	44055
+	.word	5315
+	.word	0
+	.word	0
+	.word	0
+	.word	24800
+	.word	43437
+	.word	5283
+	.word	0
+	.word	0
+	.word	0
+	.word	17984
+	.word	54872
+	.word	5249
+	.word	0
+	.word	0
+	.word	0
+	.word	25744
+	.word	41345
+	.word	5223
+	.word	0
+	.word	0
+	.word	0
+	.word	7668
+	.word	43682
+	.word	5191
+	.word	0
+	.word	0
+	.word	0
+	.word	47434
+	.word	36705
+	.word	5161
+	.word	0
+	.word	0
+	.word	0
+	.word	20888
+	.word	40323
+	.word	5129
+	.word	0
+	.word	0
+	.word	0
+	.word	3962
+	.word	43032
+	.word	5099
+	.word	0
+	.word	0
+	.word	0
+	.word	50270
+	.word	49260
+	.word	5068
+	.word	0
+	.word	0
+	.word	0
+	.word	20160
+	.word	64041
+	.word	5032
+	.word	0
+	.word	0
+	.word	0
+	.word	25624
+	.word	36013
+	.word	5004
+	.word	0
+	.word	0
+	.word	0
+	.word	48328
+	.word	59345
+	.word	4975
+	.word	0
+	.word	0
+	.word	0
+	.word	51508
+	.word	63920
+	.word	4943
+	.word	0
+	.word	0
+	.word	0
+	.word	27872
+	.word	39135
+	.word	4913
+	.word	0
+	.word	0
+	.word	0
+	.word	13590
+	.word	58857
+	.word	4882
+	.word	0
+	.word	0
+	.word	0
+	.word	50880
+	.word	61323
+	.word	4847
+	.word	0
+	.word	0
+	.word	0
+	.word	44802
+	.word	37181
+	.word	4820
+	.word	0
+	.word	0
+	.word	0
+	.word	53808
+	.word	57813
+	.word	4789
+	.word	0
+	.word	0
+	.word	0
+	.word	64424
+	.word	49714
+	.word	4757
+	.word	0
+	.word	0
+	.word	0
+	.word	31652
+	.word	44011
+	.word	4727
+	.word	0
+	.word	0
+	.word	0
+	.word	28252
+	.word	50834
+	.word	4696
+	.word	0
+	.word	0
+	.word	0
+	.word	30370
+	.word	38742
+	.word	4665
+	.word	0
+	.word	0
+	.word	0
+	.word	57728
+	.word	58403
+	.word	4628
+	.word	0
+	.word	0
+	.word	0
+	.word	35900
+	.word	37112
+	.word	4603
+	.word	0
+	.word	0
+	.word	0
+	.word	40764
+	.word	40914
+	.word	4572
+	.word	0
+	.word	0
+	.word	0
+	.word	21472
+	.word	46910
+	.word	4541
+	.word	0
+	.word	0
+	.word	0
+	.word	17854
+	.word	35030
+	.word	4510
+	.word	0
+	.word	0
+	.word	0
+	.word	4378
+	.word	35776
+	.word	4479
+	.word	0
+	.word	0
+	.word	0
+	.word	57962
+	.word	55295
+	.word	4448
+	.word	0
+	.word	0
+	.word	0
+	.word	64352
+	.word	56717
+	.word	4415
+	.word	0
+	.word	0
+	.word	0
+	.word	37744
+	.word	49416
+	.word	4384
+	.word	0
+	.word	0
+	.word	0
+	.word	38484
+	.word	35759
+	.word	4355
+	.word	0
+	.word	0
+	.word	0
+	.word	55020
+	.word	54969
+	.word	4324
+	.word	0
+	.word	0
+	.word	0
+	.word	9188
+	.word	55223
+	.word	4292
+	.word	0
+	.word	0
+	.word	0
+	.word	6822
+	.word	43079
+	.word	4262
+	.word	0
+	.word	0
+	.word	0
+	.word	48870
+	.word	40943
+	.word	4231
+	.word	0
+	.word	0
+	.word	0
+	.word	9936
+	.word	42731
+	.word	4198
+	.word	0
+	.word	0
+	.word	0
+	.word	23430
+	.word	43136
+	.word	4169
+	.word	0
+	.word	0
+	.word	0
+	.word	4700
+	.word	55665
+	.word	4137
+	.word	0
+	.word	0
+	.word	0
+	.word	8056
+	.word	40216
+	.word	4106
+	.word	0
+	.word	0
+	.word	0
+	.word	3716
+	.word	45403
+	.word	4075
+	.word	0
+	.word	0
+	.word	0
+	.word	53440
+	.word	49488
+	.word	4044
+	.word	0
+	.word	0
+	.word	0
+	.word	41776
+	.word	50188
+	.word	4013
+	.word	0
+	.word	0
+	.word	0
+	.word	20994
+	.word	64556
+	.word	3983
+	.word	0
+	.word	0
+	.word	0
+	.word	16252
+	.word	60661
+	.word	3951
+	.word	0
+	.word	0
+	.word	0
+	.word	61252
+	.word	65021
+	.word	3920
+	.word	0
+	.word	0
+	.word	0
+	.word	16236
+	.word	43803
+	.word	3889
+	.word	0
+	.word	0
+	.word	0
+	.word	63064
+	.word	35308
+	.word	3857
+	.word	0
+	.word	0
+	.word	0
+	.word	49096
+	.word	39848
+	.word	3828
+	.word	0
+	.word	0
+	.word	0
+	.word	15680
+	.word	48673
+	.word	3797
+	.word	0
+	.word	0
+	.word	0
+	.word	48068
+	.word	50957
+	.word	3766
+	.word	0
+	.word	0
+	.word	0
+	.word	20824
+	.word	56086
+	.word	3734
+	.word	0
+	.word	0
+	.word	0
+	.word	46504
+	.word	43224
+	.word	3704
+	.word	0
+	.word	0
+	.word	0
+	.word	52428
+	.word	46094
+	.word	3672
+	.word	0
+	.word	0
+	.word	0
+	.word	17548
+	.word	52066
+	.word	3642
+	.word	0
+	.word	0
+	.word	0
+	.word	61738
+	.word	35565
+	.word	3611
+	.word	0
+	.word	0
+	.word	0
+	.word	31184
+	.word	50588
+	.word	3579
+	.word	0
+	.word	0
+	.word	0
+	.word	1716
+	.word	52681
+	.word	3549
+	.word	0
+	.word	0
+	.word	0
+	.word	44656
+	.word	43385
+	.word	3518
+	.word	0
+	.word	0
+	.word	0
+	.word	12668
+	.word	43259
+	.word	3486
+	.word	0
+	.word	0
+	.word	0
+	.word	24544
+	.word	35408
+	.word	3453
+	.word	0
+	.word	0
+	.word	0
+	.word	28854
+	.word	65018
+	.word	3425
+	.word	0
+	.word	0
+	.word	0
+	.word	5696
+	.word	40391
+	.word	3393
+	.word	0
+	.word	0
+	.word	0
+	.word	39580
+	.word	56400
+	.word	3363
+	.word	0
+	.word	0
+	.word	0
+	.word	20428
+	.word	39579
+	.word	3332
+	.word	0
+	.word	0
+	.word	0
+	.word	32328
+	.word	36727
+	.word	3301
+	.word	0
+	.word	0
+	.word	0
+	.word	34020
+	.word	54457
+	.word	3270
+	.word	0
+	.word	0
+	.word	0
+	.word	34016
+	.word	48400
+	.word	3238
+	.word	0
+	.word	0
+	.word	0
+	.word	6922
+	.word	51417
+	.word	3208
+	.word	0
+	.word	0
+	.word	0
+	.word	27208
+	.word	64641
+	.word	3176
+	.word	0
+	.word	0
+	.word	0
+	.word	1802
+	.word	48886
+	.word	3146
+	.word	0
+	.word	0
+	.word	0
+	.word	35440
+	.word	61590
+	.word	3115
+	.word	0
+	.word	0
+	.word	0
+	.word	60610
+	.word	51604
+	.word	3084
+	.word	0
+	.word	0
+	.word	0
+	.word	5440
+	.word	38199
+	.word	3050
+	.word	0
+	.word	0
+	.word	0
+	.word	6914
+	.word	43867
+	.word	3022
+	.word	0
+	.word	0
+	.word	0
+	.word	24000
+	.word	45256
+	.word	2989
+	.word	0
+	.word	0
+	.word	0
+	.word	51496
+	.word	57396
+	.word	2959
+	.word	0
+	.word	0
+	.word	0
+	.word	11538
+	.word	46256
+	.word	2929
+	.word	0
+	.word	0
+	.word	0
+	.word	36802
+	.word	48020
+	.word	2898
+	.word	0
+	.word	0
+	.word	0
+	.word	57910
+	.word	57903
+	.word	2867
+	.word	0
+	.word	0
+	.word	0
+	.word	47484
+	.word	48798
+	.word	2835
+	.word	0
+	.word	0
+	.word	0
+	.word	57766
+	.word	57709
+	.word	2805
+	.word	0
+	.word	0
+	.word	0
+	.word	54064
+	.word	47856
+	.word	2774
+	.word	0
+	.word	0
+	.word	0
+	.word	49340
+	.word	48080
+	.word	2743
+	.word	0
+	.word	0
+	.word	0
+	.word	36454
+	.word	56731
+	.word	2712
+	.word	0
+	.word	0
+	.word	0
+	.word	51548
+	.word	63385
+	.word	2681
+	.word	0
+	.word	0
+	.word	0
+	.word	56000
+	.word	48716
+	.word	2645
+	.word	0
+	.word	0
+	.word	0
+	.word	44992
+	.word	50040
+	.word	2615
+	.word	0
+	.word	0
+	.word	0
+	.word	43136
+	.word	58177
+	.word	2585
+	.word	0
+	.word	0
+	.word	0
+	.word	49730
+	.word	33270
+	.word	2557
+	.word	0
+	.word	0
+	.word	0
+	.word	29808
+	.word	51063
+	.word	2526
+	.word	0
+	.word	0
+	.word	0
+	.word	25276
+	.word	46724
+	.word	2494
+	.word	0
+	.word	0
+	.word	0
+	.word	17324
+	.word	35928
+	.word	2463
+	.word	0
+	.word	0
+	.word	0
+	.word	52284
+	.word	63916
+	.word	2433
+	.word	0
+	.word	0
+	.word	0
+	.word	5414
+	.word	46704
+	.word	2402
+	.word	0
+	.word	0
+	.word	0
+	.word	51710
+	.word	57168
+	.word	2371
+	.word	0
+	.word	0
+	.word	0
+	.word	27366
+	.word	49253
+	.word	2340
+	.word	0
+	.word	0
+	.word	0
+	.word	45332
+	.word	53033
+	.word	2309
+	.word	0
+	.word	0
+	.word	0
+	.word	54152
+	.word	37418
+	.word	2276
+	.word	0
+	.word	0
+	.word	0
+	.word	53076
+	.word	47398
+	.word	2247
+	.word	0
+	.word	0
+	.word	0
+	.word	14374
+	.word	59477
+	.word	2216
+	.word	0
+	.word	0
+	.word	0
+	.word	59336
+	.word	33435
+	.word	2184
+	.word	0
+	.word	0
+	.word	0
+	.word	21612
+	.word	43267
+	.word	2154
+	.word	0
+	.word	0
+	.word	0
+	.word	34664
+	.word	39372
+	.word	2121
+	.word	0
+	.word	0
+	.word	0
+	.word	172
+	.word	62761
+	.word	2091
+	.word	0
+	.word	0
+	.word	0
+	.word	9816
+	.word	40715
+	.word	2060
+	.word	0
+	.word	0
+	.word	0
+	.word	65116
+	.word	40481
+	.word	2030
+	.word	0
+	.word	0
+	.word	0
+	.word	28066
+	.word	39184
+	.word	1999
+	.word	0
+	.word	0
+	.word	0
+	.word	37408
+	.word	63923
+	.word	1968
+	.word	0
+	.word	0
+	.word	0
+	.word	15760
+	.word	42305
+	.word	1937
+	.word	0
+	.word	0
+	.word	0
+	.word	28236
+	.word	59340
+	.word	1905
+	.word	0
+	.word	0
+	.word	0
+	.word	43258
+	.word	59402
+	.word	1875
+	.word	0
+	.word	0
+	.word	0
+	.word	19988
+	.word	50087
+	.word	1844
+	.word	0
+	.word	0
+	.word	0
+	.word	63456
+	.word	47833
+	.word	1810
+	.word	0
+	.word	0
+	.word	0
+	.word	65184
+	.word	61426
+	.word	1781
+	.word	0
+	.word	0
+	.word	0
+	.word	52982
+	.word	48456
+	.word	1751
+	.word	0
+	.word	0
+	.word	0
+	.word	30020
+	.word	62809
+	.word	1719
+	.word	0
+	.word	0
+	.word	0
+	.word	9096
+	.word	63061
+	.word	1688
+	.word	0
+	.word	0
+	.word	0
+	.word	59648
+	.word	44374
+	.word	1654
+	.word	0
+	.word	0
+	.word	0
+	.word	11456
+	.word	33847
+	.word	1625
+	.word	0
+	.word	0
+	.word	0
+	.word	12392
+	.word	50500
+	.word	1595
+	.word	0
+	.word	0
+	.word	0
+	.word	56432
+	.word	59196
+	.word	1563
+	.word	0
+	.word	0
+	.word	0
+	.word	61008
+	.word	40265
+	.word	1532
+	.word	0
+	.word	0
+	.word	0
+	.word	37842
+	.word	33270
+	.word	1503
+	.word	0
+	.word	0
+	.word	0
+	.word	37916
+	.word	44543
+	.word	1471
+	.word	0
+	.word	0
+	.word	0
+	.word	11490
+	.word	36421
+	.word	1441
+	.word	0
+	.word	0
+	.word	0
+	.word	19040
+	.word	38397
+	.word	1409
+	.word	0
+	.word	0
+	.word	0
+	.word	31224
+	.word	47162
+	.word	1379
+	.word	0
+	.word	0
+	.word	0
+	.word	52056
+	.word	41461
+	.word	1347
+	.word	0
+	.word	0
+	.word	0
+	.word	10810
+	.word	56374
+	.word	1317
+	.word	0
+	.word	0
+	.word	0
+	.word	5358
+	.word	35086
+	.word	1286
+	.word	0
+	.word	0
+	.word	0
+	.word	36640
+	.word	50226
+	.word	1251
+	.word	0
+	.word	0
+	.word	0
+	.word	33856
+	.word	45597
+	.word	1222
+	.word	0
+	.word	0
+	.word	0
+	.word	21552
+	.word	63128
+	.word	1191
+	.word	0
+	.word	0
+	.word	0
+	.word	1198
+	.word	35616
+	.word	1162
+	.word	0
+	.word	0
+	.word	0
+	.word	1232
+	.word	59506
+	.word	1131
+	.word	0
+	.word	0
+	.word	0
+	.word	51086
+	.word	34963
+	.word	1100
+	.word	0
+	.word	0
+	.word	0
+	.word	3960
+	.word	39061
+	.word	1067
+	.word	0
+	.word	0
+	.word	0
+	.word	4564
+	.word	57134
+	.word	1037
+	.word	0
+	.word	0
+	.word	0
+	.word	59468
+	.word	35285
+	.word	1007
+	.word	0
+	.word	0
+	.word	0
+	.word	63422
+	.word	35431
+	.word	976
+	.word	0
+	.word	0
+	.word	0
+	.word	38352
+	.word	51462
+	.word	945
+	.word	0
+	.word	0
+	.word	0
+	.word	25806
+	.word	55660
+	.word	914
+	.word	0
+	.word	0
+	.word	0
+	.word	38842
+	.word	41327
+	.word	883
+	.word	0
+	.word	0
+	.word	0
+	.word	17980
+	.word	50458
+	.word	852
+	.word	0
+	.word	0
+	.word	0
+	.word	61194
+	.word	59710
+	.word	821
+	.word	0
+	.word	0
+	.word	0
+	.word	21098
+	.word	42086
+	.word	790
+	.word	0
+	.word	0
+	.word	0
+	.word	16704
+	.word	43341
+	.word	757
+	.word	0
+	.word	0
+	.word	0
+	.word	46316
+	.word	52840
+	.word	728
+	.word	0
+	.word	0
+	.word	0
+	.word	20386
+	.word	33936
+	.word	697
+	.word	0
+	.word	0
+	.word	0
+	.word	20064
+	.word	51864
+	.word	664
+	.word	0
+	.word	0
+	.word	0
+	.word	2268
+	.word	57500
+	.word	634
+	.word	0
+	.word	0
+	.word	0
+	.word	11152
+	.word	51171
+	.word	604
+	.word	0
+	.word	0
+	.word	0
+	.word	23164
+	.word	63727
+	.word	572
+	.word	0
+	.word	0
+	.word	0
+	.word	20514
+	.word	40280
+	.word	542
+	.word	0
+	.word	0
+	.word	0
+	.word	21818
+	.word	57922
+	.word	511
+	.word	0
+	.word	0
+	.word	0
+	.word	32366
+	.word	46413
+	.word	480
+	.word	0
+	.word	0
+	.word	0
+	.word	53972
+	.word	43148
+	.word	449
+	.word	0
+	.word	0
+	.word	0
+	.word	30134
+	.word	65133
+	.word	418
+	.word	0
+	.word	0
+	.word	0
+	.word	15282
+	.word	61516
+	.word	387
+	.word	0
+	.word	0
+	.word	0
+	.word	49872
+	.word	49222
+	.word	355
+	.word	0
+	.word	0
+	.word	0
+	.word	9484
+	.word	63958
+	.word	325
+	.word	0
+	.word	0
+	.word	0
+	.word	47028
+	.word	35341
+	.word	294
+	.word	0
+	.word	0
+	.word	0
+	.word	6770
+	.word	58613
+	.word	263
+	.word	0
+	.word	0
+	.word	0
+	.word	33372
+	.word	43448
+	.word	232
+	.word	0
+	.word	0
+	.word	0
+	.word	27792
+	.word	51629
+	.word	198
+	.word	0
+	.word	0
+	.word	0
+	.word	19712
+	.word	53691
+	.word	170
+	.word	0
+	.word	0
+	.word	0
+	.word	42144
+	.word	60929
+	.word	135
+	.word	0
+	.word	0
+	.word	0
+	.word	35240
+	.word	48799
+	.word	107
+	.word	0
+	.word	0
+	.word	0
+	.word	910
+	.word	51212
+	.word	77
+	.word	0
+	.word	0
+	.word	0
+	.word	65062
+	.word	33668
+	.word	46
+	.word	0
+	.word	0
+	.word	0
+	.word	52624
+	.word	51799
+	.word	14
+	.word	0
+	.type	__4onpi_31l,@object
+	.size	__4onpi_31l,6444
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/libm_sincos_huge.S b/libm/x86/libm_sincos_huge.S
new file mode 100644
index 0000000..b43d193
--- /dev/null
+++ b/libm/x86/libm_sincos_huge.S
@@ -0,0 +1,668 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+# -- Begin  __libm_sincos_huge
+	.text
+       .align    16,0x90
+	.hidden __libm_sincos_huge
+	.globl __libm_sincos_huge
+__libm_sincos_huge:
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+# parameter 3: 20 + %ebp
+..B1.1:
+        pushl     %ebp
+        movl      %esp, %ebp
+        andl      $-64, %esp
+        pushl     %esi
+        pushl     %edi
+        pushl     %ebx
+        subl      $52, %esp
+        movl      16(%ebp), %eax
+        movl      20(%ebp), %edx
+        movl      %eax, 32(%esp)
+        movl      %edx, 36(%esp)
+..B1.2:
+        fnstcw    30(%esp)
+..B1.3:
+        call      ..L2
+..L2:
+        popl      %edi
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
+        movsd     8(%ebp), %xmm1
+        movl      12(%ebp), %esi
+        movl      %esi, %eax
+        andl      $2147483647, %eax
+        andps     .L_2il0floatpacket.0@GOTOFF(%edi), %xmm1
+        shrl      $31, %esi
+        movl      %eax, 40(%esp)
+        cmpl      $1104150528, %eax
+        movsd     %xmm1, 8(%ebp)
+        jae       ..B1.11
+..B1.4:
+        movsd     _Pi4Inv@GOTOFF(%edi), %xmm0
+        mulsd     %xmm1, %xmm0
+        movzwl    30(%esp), %edx
+        movl      %edx, %eax
+        andl      $768, %eax
+        movsd     %xmm0, (%esp)
+        cmpl      $768, %eax
+        je        ..B1.42
+..B1.5:
+        orl       $-64768, %edx
+        movw      %dx, 28(%esp)
+..B1.6:
+        fldcw     28(%esp)
+..B1.7:
+        movsd     8(%ebp), %xmm1
+        movl      $1, %ebx
+..B1.8:
+        movl      %ebx, 12(%esp)
+        movl      4(%esp), %ebx
+        movl      %ebx, %eax
+        movl      %esi, 8(%esp)
+        movl      %ebx, %esi
+        shrl      $20, %esi
+        andl      $1048575, %eax
+        movl      %esi, %ecx
+        orl       $1048576, %eax
+        negl      %ecx
+        movl      %eax, %edx
+        addl      $19, %ecx
+        addl      $13, %esi
+        movl      %ecx, 24(%esp)
+        shrl      %cl, %edx
+        movl      %esi, %ecx
+        shll      %cl, %eax
+        movl      24(%esp), %ecx
+        movl      (%esp), %esi
+        shrl      %cl, %esi
+        orl       %esi, %eax
+        cmpl      $1094713344, %ebx
+        movsd     %xmm1, 16(%esp)
+        fldl      16(%esp)
+        cmovb     %edx, %eax
+        movl      8(%esp), %esi
+        lea       1(%eax), %edx
+        movl      %edx, %ebx
+        andl      $-2, %ebx
+        movl      %ebx, 16(%esp)
+        fildl     16(%esp)
+        movl      12(%esp), %ebx
+        cmpl      $1094713344, 40(%esp)
+        jae       ..B1.10
+..B1.9:
+        fldl      _Pi4x3@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x3@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x3@GOTOFF(%edi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.10:
+        fldl      _Pi4x4@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x4@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x4@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      24+_Pi4x4@GOTOFF(%edi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.11:
+        movzwl    30(%esp), %edx
+        movl      %edx, %eax
+        andl      $768, %eax
+        cmpl      $768, %eax
+        je        ..B1.43
+..B1.12:
+        orl       $-64768, %edx
+        movw      %dx, 28(%esp)
+..B1.13:
+        fldcw     28(%esp)
+..B1.14:
+        movsd     8(%ebp), %xmm1
+        movl      $1, %ebx
+..B1.15:
+        movsd     %xmm1, 16(%esp)
+        fldl      16(%esp)
+        addl      $-32, %esp
+        lea       32(%esp), %eax
+        fstpt     (%esp)
+        movl      $0, 12(%esp)
+        movl      %eax, 16(%esp)
+        call      __libm_reduce_pi04l
+..B1.46:
+        addl      $32, %esp
+..B1.16:
+        fldl      (%esp)
+        lea       1(%eax), %edx
+        fldl      8(%esp)
+        faddp     %st, %st(1)
+..B1.17:
+        movl      %edx, %ecx
+        addl      $3, %eax
+        shrl      $2, %ecx
+        andl      $1, %ecx
+        shrl      $2, %eax
+        xorl      %ecx, %esi
+        movl      36(%esp), %ecx
+        andl      $1, %eax
+        andl      $3, %ecx
+        cmpl      $3, %ecx
+        jne       ..B1.25
+..B1.18:
+        fldt      84+_SP@GOTOFF(%edi)
+        fld       %st(1)
+        fmul      %st(2), %st
+        testb     $2, %dl
+        fmul      %st, %st(1)
+        fldt      72+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      60+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      48+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      36+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      24+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      12+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      _SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      84+_CP@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fldt      72+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      60+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      48+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      36+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      24+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      12+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      _CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%esi,8)
+        fldl      _ones@GOTOFF(%edi,%eax,8)
+        je        ..B1.22
+..B1.19:
+        fmulp     %st, %st(4)
+        testl     %ebx, %ebx
+        fxch      %st(2)
+        fmul      %st(3), %st
+        movl      32(%esp), %eax
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        fstpl     (%eax)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     8(%eax)
+        je        ..B1.21
+..B1.20:
+        fldcw     30(%esp)
+..B1.21:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.22:
+        fxch      %st(1)
+        fmulp     %st, %st(4)
+        testl     %ebx, %ebx
+        fxch      %st(2)
+        fmul      %st(3), %st
+        movl      32(%esp), %eax
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        fstpl     8(%eax)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     (%eax)
+        je        ..B1.24
+..B1.23:
+        fldcw     30(%esp)
+..B1.24:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.25:
+        testb     $2, 36(%esp)
+        je        ..B1.33
+..B1.26:
+        fld       %st(0)
+        testb     $2, %dl
+        fmul      %st(1), %st
+        fld       %st(0)
+        fmul      %st(1), %st
+        je        ..B1.30
+..B1.27:
+        fstp      %st(2)
+        fldt      84+_CP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(2), %st
+        fldt      72+_CP@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fldt      60+_CP@GOTOFF(%edi)
+        movl      32(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      48+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      36+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      24+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      12+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        fldt      _CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%esi,8)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     8(%eax)
+        je        ..B1.29
+..B1.28:
+        fldcw     30(%esp)
+..B1.29:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.30:
+        fldt      84+_SP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(1), %st
+        fldt      72+_SP@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fldt      60+_SP@GOTOFF(%edi)
+        movl      32(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      12+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      _SP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%esi,8)
+        fmulp     %st, %st(2)
+        fmul      %st(1), %st
+        faddp     %st, %st(1)
+        fstpl     8(%eax)
+        je        ..B1.32
+..B1.31:
+        fldcw     30(%esp)
+..B1.32:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.33:
+        testb     $1, 36(%esp)
+        je        ..B1.41
+..B1.34:
+        fld       %st(0)
+        testb     $2, %dl
+        fmul      %st(1), %st
+        fld       %st(0)
+        fmul      %st(1), %st
+        je        ..B1.38
+..B1.35:
+        fldt      84+_SP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(1), %st
+        fldt      72+_SP@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fldt      60+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      12+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      _SP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%eax,8)
+        fmulp     %st, %st(2)
+        fmul      %st(1), %st
+        movl      32(%esp), %eax
+        faddp     %st, %st(1)
+        fstpl     (%eax)
+        je        ..B1.37
+..B1.36:
+        fldcw     30(%esp)
+..B1.37:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.38:
+        fstp      %st(2)
+        fldt      84+_CP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(2), %st
+        fldt      72+_CP@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fldt      60+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      48+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      36+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      24+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      12+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        fldt      _CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%eax,8)
+        fmul      %st, %st(1)
+        movl      32(%esp), %eax
+        faddp     %st, %st(1)
+        fstpl     (%eax)
+        je        ..B1.40
+..B1.39:
+        fldcw     30(%esp)
+..B1.40:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.41:
+        fstp      %st(0)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.42:
+        xorl      %ebx, %ebx
+        jmp       ..B1.8
+..B1.43:
+        xorl      %ebx, %ebx
+        jmp       ..B1.15
+        .align    16,0x90
+	.type	__libm_sincos_huge,@function
+	.size	__libm_sincos_huge,.-__libm_sincos_huge
+	.data
+# -- End  __libm_sincos_huge
+	.section .rodata, "a"
+	.align 16
+	.align 16
+.L_2il0floatpacket.0:
+	.long	0xffffffff,0x7fffffff,0x00000000,0x00000000
+	.type	.L_2il0floatpacket.0,@object
+	.size	.L_2il0floatpacket.0,16
+	.align 16
+_Pi4Inv:
+	.long	1841940611
+	.long	1072979760
+	.type	_Pi4Inv,@object
+	.size	_Pi4Inv,8
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x3:
+	.long	1413754880
+	.long	3219726843
+	.long	993632256
+	.long	1027030475
+	.long	3773204808
+	.long	3129236486
+	.type	_Pi4x3,@object
+	.size	_Pi4x3,24
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x4:
+	.long	1413480448
+	.long	3219726843
+	.long	442499072
+	.long	3183522913
+	.long	771751936
+	.long	3146979722
+	.long	622873025
+	.long	3110831002
+	.type	_Pi4x4,@object
+	.size	_Pi4x4,32
+	.align 16
+_SP:
+	.word	43691
+	.word	43690
+	.word	43690
+	.word	43690
+	.word	49148
+	.word	0
+	.word	34951
+	.word	34952
+	.word	34952
+	.word	34952
+	.word	16376
+	.word	0
+	.word	50471
+	.word	3328
+	.word	208
+	.word	53261
+	.word	49138
+	.word	0
+	.word	17910
+	.word	46614
+	.word	7466
+	.word	47343
+	.word	16364
+	.word	0
+	.word	33371
+	.word	14743
+	.word	11071
+	.word	55090
+	.word	49125
+	.word	0
+	.word	48947
+	.word	35764
+	.word	12250
+	.word	45202
+	.word	16350
+	.word	0
+	.word	17574
+	.word	60698
+	.word	10735
+	.word	55102
+	.word	49110
+	.word	0
+	.word	34320
+	.word	12415
+	.word	25249
+	.word	51489
+	.word	16334
+	.word	0
+	.type	_SP,@object
+	.size	_SP,96
+	.align 16
+_CP:
+	.word	0
+	.word	0
+	.word	0
+	.word	32768
+	.word	49150
+	.word	0
+	.word	43685
+	.word	43690
+	.word	43690
+	.word	43690
+	.word	16378
+	.word	0
+	.word	39983
+	.word	2912
+	.word	24758
+	.word	46603
+	.word	49141
+	.word	0
+	.word	61476
+	.word	3244
+	.word	208
+	.word	53261
+	.word	16367
+	.word	0
+	.word	1022
+	.word	16229
+	.word	32187
+	.word	37874
+	.word	49129
+	.word	0
+	.word	55373
+	.word	44526
+	.word	50840
+	.word	36726
+	.word	16354
+	.word	0
+	.word	55994
+	.word	65145
+	.word	59958
+	.word	51657
+	.word	49114
+	.word	0
+	.word	15046
+	.word	2976
+	.word	1998
+	.word	54661
+	.word	16338
+	.word	0
+	.type	_CP,@object
+	.size	_CP,96
+	.align 16
+_ones:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	3220176896
+	.type	_ones,@object
+	.size	_ones,16
+	.data
+	.hidden __libm_reduce_pi04l
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/libm_tancot_huge.S b/libm/x86/libm_tancot_huge.S
new file mode 100644
index 0000000..80f16d5
--- /dev/null
+++ b/libm/x86/libm_tancot_huge.S
@@ -0,0 +1,750 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+# -- Begin  __libm_tancot_huge
+	.text
+       .align    16,0x90
+	.hidden __libm_tancot_huge
+	.globl __libm_tancot_huge
+__libm_tancot_huge:
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+# parameter 3: 20 + %ebp
+..B1.1:
+        pushl     %ebp
+        movl      %esp, %ebp
+        andl      $-64, %esp
+        pushl     %esi
+        pushl     %edi
+        pushl     %ebx
+        subl      $52, %esp
+        movl      16(%ebp), %eax
+        movl      20(%ebp), %ebx
+        movl      %eax, 40(%esp)
+..B1.2:
+        fnstcw    38(%esp)
+..B1.3:
+        movl      12(%ebp), %edx
+        movl      %edx, %eax
+        andl      $2147483647, %eax
+        shrl      $31, %edx
+        movl      %edx, 44(%esp)
+        cmpl      $1104150528, %eax
+        call      ..L2
+..L2:
+        popl      %esi
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%esi), %esi
+        jae       ..B1.11
+..B1.4:
+        movsd     8(%ebp), %xmm1
+        movzwl    38(%esp), %ecx
+        movl      %ecx, %edx
+        andl      $768, %edx
+        andps     .L_2il0floatpacket.0@GOTOFF(%esi), %xmm1
+        cmpl      $768, %edx
+        movsd     _Pi4Inv@GOTOFF(%esi), %xmm0
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm1, 8(%ebp)
+        movsd     %xmm0, (%esp)
+        je        ..B1.39
+..B1.5:
+        orl       $-64768, %ecx
+        movw      %cx, 36(%esp)
+..B1.6:
+        fldcw     36(%esp)
+..B1.7:
+        movsd     8(%ebp), %xmm1
+        movl      $1, %edi
+..B1.8:
+        movl      %esi, 12(%esp)
+        movl      4(%esp), %esi
+        movl      %esi, %edx
+        movl      %edi, 24(%esp)
+        movl      %esi, %edi
+        shrl      $20, %edi
+        andl      $1048575, %edx
+        movl      %edi, %ecx
+        orl       $1048576, %edx
+        negl      %ecx
+        addl      $13, %edi
+        movl      %ebx, 8(%esp)
+        addl      $19, %ecx
+        movl      %edx, %ebx
+        movl      %ecx, 28(%esp)
+        shrl      %cl, %ebx
+        movl      %edi, %ecx
+        shll      %cl, %edx
+        movl      28(%esp), %ecx
+        movl      (%esp), %edi
+        shrl      %cl, %edi
+        orl       %edi, %edx
+        cmpl      $1094713344, %esi
+        movsd     %xmm1, 16(%esp)
+        fldl      16(%esp)
+        cmovb     %ebx, %edx
+        movl      24(%esp), %edi
+        movl      12(%esp), %esi
+        lea       1(%edx), %ebx
+        andl      $-2, %ebx
+        movl      %ebx, 16(%esp)
+        cmpl      $1094713344, %eax
+        fildl     16(%esp)
+        movl      8(%esp), %ebx
+        jae       ..B1.10
+..B1.9:
+        fldl      _Pi4x3@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x3@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x3@GOTOFF(%esi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.10:
+        fldl      _Pi4x4@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x4@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x4@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      24+_Pi4x4@GOTOFF(%esi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.11:
+        movzwl    38(%esp), %edx
+        movl      %edx, %eax
+        andl      $768, %eax
+        cmpl      $768, %eax
+        je        ..B1.40
+..B1.12:
+        orl       $-64768, %edx
+        movw      %dx, 36(%esp)
+..B1.13:
+        fldcw     36(%esp)
+..B1.14:
+        movl      $1, %edi
+..B1.15:
+        movsd     8(%ebp), %xmm0
+        addl      $-32, %esp
+        andps     .L_2il0floatpacket.0@GOTOFF(%esi), %xmm0
+        lea       32(%esp), %eax
+        movsd     %xmm0, 16(%eax)
+        fldl      16(%eax)
+        fstpt     (%esp)
+        movl      $0, 12(%esp)
+        movl      %eax, 16(%esp)
+        call      __libm_reduce_pi04l
+..B1.43:
+        movl      %eax, %edx
+        addl      $32, %esp
+..B1.16:
+        fldl      (%esp)
+        fldl      8(%esp)
+        faddp     %st, %st(1)
+..B1.17:
+        movl      %ebx, %eax
+        andl      $3, %eax
+        cmpl      $3, %eax
+        jne       ..B1.24
+..B1.18:
+        fldl      _ones@GOTOFF(%esi)
+        incl      %edx
+        fdiv      %st(1), %st
+        testb     $2, %dl
+        fstpt     24(%esp)
+        fld       %st(0)
+        fmul      %st(1), %st
+        fld       %st(0)
+        fmul      %st(1), %st
+        fldt      36+_TP@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      24+_TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      12+_TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      36+_TQ@GOTOFF(%esi)
+        fmul      %st(3), %st
+        fldt      24+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fldt      12+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fldt      _TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fldt      _TP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fldt      132+_GP@GOTOFF(%esi)
+        fmul      %st(3), %st
+        fldt      120+_GP@GOTOFF(%esi)
+        fmul      %st(4), %st
+        fldt      108+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      96+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      84+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      72+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      60+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      48+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      36+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      24+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(4)
+        fldt      12+_GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(4), %st
+        fmul      %st(5), %st
+        fldt      _GP@GOTOFF(%esi)
+        faddp     %st, %st(4)
+        fxch      %st(3)
+        fmul      %st(5), %st
+        faddp     %st, %st(3)
+        je        ..B1.20
+..B1.19:
+        fldt      24(%esp)
+        fxch      %st(1)
+        fdivrp    %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        movl      44(%esp), %eax
+        xorl      $1, %eax
+        fxch      %st(2)
+        fmul      %st(3), %st
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(2)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fstpl     16(%esp)
+        fmul      %st(1), %st
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        movsd     16(%esp), %xmm0
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm1
+        jmp       ..B1.21
+..B1.20:
+        fdivrp    %st, %st(1)
+        fmulp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        movl      44(%esp), %eax
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(1)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        fmul      %st(1), %st
+        fldt      24(%esp)
+        fmulp     %st, %st(2)
+        movsd     16(%esp), %xmm0
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm1
+..B1.21:
+        testl     %edi, %edi
+        je        ..B1.23
+..B1.22:
+        fldcw     38(%esp)
+..B1.23:
+        movl      40(%esp), %eax
+        movsd     %xmm0, (%eax)
+        movsd     %xmm1, 8(%eax)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.24:
+        testb     $2, %bl
+        je        ..B1.31
+..B1.25:
+        incl      %edx
+        fld       %st(0)
+        fmul      %st(1), %st
+        testb     $2, %dl
+        je        ..B1.27
+..B1.26:
+        fldl      _ones@GOTOFF(%esi)
+        fdiv      %st(2), %st
+        fld       %st(1)
+        fmul      %st(2), %st
+        fldt      132+_GP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      120+_GP@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      108+_GP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        xorl      $1, %eax
+        fldt      96+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      84+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      72+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      60+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      12+_GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(3)
+        fldt      _GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fxch      %st(2)
+        fmulp     %st, %st(3)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(2)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+        jmp       ..B1.28
+..B1.27:
+        fldt      36+_TP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      24+_TP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      36+_TQ@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      24+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      12+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      _TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fldt      12+_TP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      _TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fdivp     %st, %st(1)
+        fmulp     %st, %st(1)
+        fmul      %st(1), %st
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+..B1.28:
+        testl     %edi, %edi
+        je        ..B1.30
+..B1.29:
+        fldcw     38(%esp)
+..B1.30:
+        movl      40(%esp), %eax
+        movsd     %xmm0, (%eax)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.31:
+        testb     $1, %bl
+        je        ..B1.38
+..B1.32:
+        incl      %edx
+        fld       %st(0)
+        fmul      %st(1), %st
+        testb     $2, %dl
+        je        ..B1.34
+..B1.33:
+        fldt      36+_TP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      24+_TP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        xorl      $1, %eax
+        fldt      36+_TQ@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      24+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      12+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      _TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fldt      12+_TP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      _TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fdivp     %st, %st(1)
+        fmulp     %st, %st(1)
+        fmul      %st(1), %st
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+        jmp       ..B1.35
+..B1.34:
+        fldl      _ones@GOTOFF(%esi)
+        fdiv      %st(2), %st
+        fld       %st(1)
+        fmul      %st(2), %st
+        fldt      132+_GP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      120+_GP@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      108+_GP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      96+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      84+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      72+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      60+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      12+_GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(3)
+        fldt      _GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fxch      %st(2)
+        fmulp     %st, %st(3)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(2)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+..B1.35:
+        testl     %edi, %edi
+        je        ..B1.37
+..B1.36:
+        fldcw     38(%esp)
+..B1.37:
+        movl      40(%esp), %eax
+        movsd     %xmm0, 8(%eax)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.38:
+        fstp      %st(0)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.39:
+        xorl      %edi, %edi
+        jmp       ..B1.8
+..B1.40:
+        xorl      %edi, %edi
+        jmp       ..B1.15
+        .align    16,0x90
+	.type	__libm_tancot_huge,@function
+	.size	__libm_tancot_huge,.-__libm_tancot_huge
+	.data
+# -- End  __libm_tancot_huge
+	.section .rodata, "a"
+	.align 16
+	.align 16
+.L_2il0floatpacket.0:
+	.long	0xffffffff,0x7fffffff,0x00000000,0x00000000
+	.type	.L_2il0floatpacket.0,@object
+	.size	.L_2il0floatpacket.0,16
+	.align 16
+_Pi4Inv:
+	.long	1841940611
+	.long	1072979760
+	.type	_Pi4Inv,@object
+	.size	_Pi4Inv,8
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x3:
+	.long	1413754880
+	.long	3219726843
+	.long	993632256
+	.long	1027030475
+	.long	3773204808
+	.long	3129236486
+	.type	_Pi4x3,@object
+	.size	_Pi4x3,24
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x4:
+	.long	1413480448
+	.long	3219726843
+	.long	442499072
+	.long	3183522913
+	.long	771751936
+	.long	3146979722
+	.long	622873025
+	.long	3110831002
+	.type	_Pi4x4,@object
+	.size	_Pi4x4,32
+	.align 16
+_ones:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	3220176896
+	.type	_ones,@object
+	.size	_ones,16
+	.align 16
+_TP:
+	.word	19670
+	.word	44908
+	.word	50960
+	.word	50786
+	.word	49149
+	.word	0
+	.word	19206
+	.word	45228
+	.word	54194
+	.word	52268
+	.word	16377
+	.word	0
+	.word	227
+	.word	51280
+	.word	43560
+	.word	38195
+	.word	49139
+	.word	0
+	.word	12272
+	.word	18029
+	.word	6715
+	.word	45670
+	.word	16357
+	.word	0
+	.type	_TP,@object
+	.size	_TP,48
+	.align 16
+_TQ:
+	.word	14748
+	.word	33681
+	.word	5452
+	.word	38090
+	.word	49151
+	.word	0
+	.word	46755
+	.word	50026
+	.word	17634
+	.word	35372
+	.word	16382
+	.word	0
+	.word	46863
+	.word	53352
+	.word	42702
+	.word	59869
+	.word	49145
+	.word	0
+	.word	33295
+	.word	20942
+	.word	32118
+	.word	39935
+	.word	16371
+	.word	0
+	.type	_TQ,@object
+	.size	_TQ,48
+	.align 16
+_GP:
+	.word	43691
+	.word	43690
+	.word	43690
+	.word	43690
+	.word	49149
+	.word	0
+	.word	46639
+	.word	2912
+	.word	24758
+	.word	46603
+	.word	49145
+	.word	0
+	.word	57255
+	.word	2218
+	.word	21984
+	.word	35507
+	.word	49142
+	.word	0
+	.word	34208
+	.word	43033
+	.word	48281
+	.word	56811
+	.word	49138
+	.word	0
+	.word	28773
+	.word	27191
+	.word	31071
+	.word	45908
+	.word	49135
+	.word	0
+	.word	43257
+	.word	33777
+	.word	11976
+	.word	37184
+	.word	49132
+	.word	0
+	.word	62410
+	.word	35990
+	.word	36363
+	.word	60269
+	.word	49128
+	.word	0
+	.word	13659
+	.word	55568
+	.word	26569
+	.word	48851
+	.word	49125
+	.word	0
+	.word	10347
+	.word	46238
+	.word	47188
+	.word	39576
+	.word	49122
+	.word	0
+	.word	2161
+	.word	6703
+	.word	25719
+	.word	64708
+	.word	49118
+	.word	0
+	.word	42329
+	.word	7593
+	.word	44754
+	.word	47734
+	.word	49115
+	.word	0
+	.word	163
+	.word	32746
+	.word	39875
+	.word	61957
+	.word	49112
+	.word	0
+	.type	_GP,@object
+	.size	_GP,144
+	.data
+	.hidden __libm_reduce_pi04l
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_atan.S b/libm/x86/s_atan.S
new file mode 100644
index 0000000..c4413f1
--- /dev/null
+++ b/libm/x86/s_atan.S
@@ -0,0 +1,934 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// This implementation uses the main path for |x| in [2^{-5},2^65).
+// For |x| in [2^{-64},2^{-5}), a secondary path is used.
+// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
+// We use the following definition of B and X` so that the formula
+// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
+//
+// X = (-1)^s * 2^k * 1. x1 x2 ... x52
+//
+// Define X`  = 0 if k >= 5; and X`  = |X| otherwise
+// Define One = 0 if k >= 5; and One = 1 otherwise
+// Define B  = 0 if k <= -6; B =  2^k * 1.x1 x2 x3 x4 1  if -5 <= k <= 4
+// Define B  =  2^5 * 1.0 0 ... 0   if  k >= 5
+//
+// Tau is 0 if k <= -6;
+// Tau is atan( B )  if -5 <= k <= 4
+// Tau is pi/2 if k >= 5
+//
+// Special cases:
+//  atan(NaN) = quiet NaN
+//  atan(+/-INF) = +/-Pi/2
+//  atan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  atan
+ENTRY(atan)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 48(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     2640(%ebx), %xmm3
+        movsd     2624(%ebx), %xmm5
+        movsd     2656(%ebx), %xmm4
+        movsd     %xmm0, 8(%esp)
+        pextrw    $3, %xmm0, %edx
+        andpd     %xmm0, %xmm3
+        pshufd    $68, %xmm0, %xmm1
+        orpd      %xmm4, %xmm3
+        movl      %edx, %eax
+        andl      $32767, %edx
+        subl      $16288, %edx
+        cmpl      $159, %edx
+        ja        .L_2TAG_PACKET_0.0.2
+        mulsd     %xmm3, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        divsd     %xmm1, %xmm0
+        addl      $1, %edx
+        movsd     2672(%ebx), %xmm2
+        movsd     2688(%ebx), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        movsd     (%ebx,%edx,8), %xmm6
+        movsd     8(%ebx,%edx,8), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movsd     2680(%ebx), %xmm7
+        pshufd    $68, %xmm0, %xmm1
+        mulsd     %xmm0, %xmm0
+        pshufd    $68, %xmm1, %xmm3
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm4
+        subsd     %xmm1, %xmm6
+        mulsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm0
+        addsd     2696(%ebx), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm6, %xmm0
+        addsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $944, %edx
+        cmpl      $1103, %edx
+        ja        .L_2TAG_PACKET_2.0.2
+        movsd     2672(%ebx), %xmm4
+        movsd     2688(%ebx), %xmm7
+        movsd     8(%esp), %xmm0
+        mulsd     %xmm1, %xmm1
+        movsd     2680(%ebx), %xmm2
+        movsd     2696(%ebx), %xmm5
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm1, %xmm7
+        movapd    %xmm1, %xmm6
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm2
+        mulsd     %xmm6, %xmm7
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        addl      $15344, %edx
+        cmpl      $16368, %edx
+        ja        .L_2TAG_PACKET_3.0.2
+        movsd     8(%esp), %xmm0
+        movsd     8(%esp), %xmm1
+        cmpl      $16, %edx
+        jae       .L_2TAG_PACKET_4.0.2
+        mulsd     %xmm0, %xmm1
+.L_2TAG_PACKET_4.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $17392, %edx
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $49136, %ecx
+        pinsrw    $3, %ecx, %xmm1
+        divsd     %xmm0, %xmm1
+        movsd     2672(%ebx), %xmm2
+        movsd     2688(%ebx), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        movsd     2592(%ebx), %xmm6
+        movsd     2600(%ebx), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movsd     2680(%ebx), %xmm7
+        pshufd    $68, %xmm1, %xmm0
+        mulsd     %xmm1, %xmm1
+        pshufd    $68, %xmm0, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm1
+        addsd     2696(%ebx), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_5.0.2:
+        movsd     8(%esp), %xmm4
+        movsd     2608(%ebx), %xmm0
+        movsd     2592(%ebx), %xmm2
+        movsd     2600(%ebx), %xmm3
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        andl      $2147483647, %edx
+        cmpl      $2146435072, %edx
+        jae       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_7.0.2:
+        andnpd    %xmm4, %xmm0
+        orpd      %xmm0, %xmm2
+        orpd      %xmm3, %xmm0
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_6.0.2:
+        subl      $2146435072, %edx
+        orl       %edx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_7.0.2
+        movapd    %xmm4, %xmm0
+        addsd     %xmm0, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_1.0.2:
+        movl      48(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(atan)
+# -- End  atan
+
+# Start file scope ASM
+ALIAS_SYMBOL(atanl, atan);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3819695742
+	.long	1067482761
+	.long	2398680355
+	.long	3155462074
+	.long	2998791009
+	.long	1067548225
+	.long	3868465248
+	.long	3157182472
+	.long	3339424991
+	.long	1067613680
+	.long	3296670360
+	.long	1010752543
+	.long	2710002256
+	.long	1067679126
+	.long	3403896007
+	.long	1010910768
+	.long	3275701428
+	.long	1067744562
+	.long	119959933
+	.long	1011482843
+	.long	2908636881
+	.long	1067809988
+	.long	2464489612
+	.long	1011545526
+	.long	3777889398
+	.long	1067875403
+	.long	3262682165
+	.long	1009703919
+	.long	3759667419
+	.long	1067940807
+	.long	1838130851
+	.long	3157373556
+	.long	732369940
+	.long	1068006200
+	.long	1203428313
+	.long	1010055371
+	.long	1166616461
+	.long	1068071580
+	.long	2901274051
+	.long	3158549977
+	.long	2945472892
+	.long	1068136947
+	.long	3726120658
+	.long	1009762715
+	.long	3954480976
+	.long	1068202301
+	.long	1289173457
+	.long	1009429861
+	.long	2081752829
+	.long	1068267642
+	.long	1836909874
+	.long	1006212095
+	.long	3807999788
+	.long	1068332968
+	.long	2172459940
+	.long	3156162078
+	.long	2731789884
+	.long	1068398280
+	.long	3450718392
+	.long	3159216547
+	.long	1044477961
+	.long	1068463577
+	.long	2230553229
+	.long	1011424339
+	.long	1486930287
+	.long	1068530218
+	.long	2861547474
+	.long	1012041376
+	.long	2293016881
+	.long	1068595466
+	.long	136843272
+	.long	1012684797
+	.long	201518157
+	.long	1068660680
+	.long	63231984
+	.long	1012427198
+	.long	4054234584
+	.long	1068725856
+	.long	3927006960
+	.long	1011878955
+	.long	1246477213
+	.long	1068790995
+	.long	1494265652
+	.long	3155219350
+	.long	678186699
+	.long	1068856093
+	.long	1264361424
+	.long	3159256693
+	.long	2690594995
+	.long	1068921148
+	.long	3906996379
+	.long	1009288267
+	.long	3362611517
+	.long	1068986159
+	.long	1650970041
+	.long	3158331771
+	.long	3102162111
+	.long	1069051124
+	.long	365917035
+	.long	3160264153
+	.long	2352611067
+	.long	1069116041
+	.long	4008970190
+	.long	3159478182
+	.long	1594134794
+	.long	1069180908
+	.long	466690178
+	.long	1012526501
+	.long	1345079306
+	.long	1069245723
+	.long	2268273568
+	.long	3160164092
+	.long	2163300970
+	.long	1069310484
+	.long	2750834800
+	.long	3158113482
+	.long	352522716
+	.long	1069375190
+	.long	1750411372
+	.long	1011790845
+	.long	848541647
+	.long	1069439838
+	.long	2164207573
+	.long	1011698350
+	.long	40647312
+	.long	1069504427
+	.long	2949165434
+	.long	3159107267
+	.long	2216766270
+	.long	1069574357
+	.long	2197920765
+	.long	3161055954
+	.long	1090914384
+	.long	1069638757
+	.long	2330454674
+	.long	1013365998
+	.long	387601244
+	.long	1069703022
+	.long	3185681168
+	.long	1013434071
+	.long	3991640484
+	.long	1069767144
+	.long	1313211590
+	.long	3161087959
+	.long	3322489502
+	.long	1069831118
+	.long	3013977995
+	.long	1013053011
+	.long	3121698570
+	.long	1069894936
+	.long	4069015667
+	.long	1013023362
+	.long	4289964660
+	.long	1069958591
+	.long	1736191156
+	.long	3158266731
+	.long	3903312386
+	.long	1070022077
+	.long	1833592413
+	.long	3159731471
+	.long	3818449864
+	.long	1070085387
+	.long	851036429
+	.long	3159730451
+	.long	2097480306
+	.long	1070148515
+	.long	3506390884
+	.long	3160462302
+	.long	1611694502
+	.long	1070211454
+	.long	2785735540
+	.long	3160465144
+	.long	1464694796
+	.long	1070274198
+	.long	4229277299
+	.long	3159907000
+	.long	1299612775
+	.long	1070336741
+	.long	4116653788
+	.long	3160427739
+	.long	1310544789
+	.long	1070399077
+	.long	1064430331
+	.long	1013218202
+	.long	2253168030
+	.long	1070461200
+	.long	1405044609
+	.long	3157623179
+	.long	1159567373
+	.long	1070523105
+	.long	2353445521
+	.long	3159992176
+	.long	1359373750
+	.long	1070605818
+	.long	1748171336
+	.long	3161879263
+	.long	908341706
+	.long	1070667034
+	.long	3372710815
+	.long	3161775245
+	.long	1743027350
+	.long	1070727765
+	.long	687089934
+	.long	3160507171
+	.long	2055355646
+	.long	1070787992
+	.long	2392855242
+	.long	1013682469
+	.long	690426164
+	.long	1070847697
+	.long	1103926666
+	.long	1014052810
+	.long	1483247847
+	.long	1070906862
+	.long	2082645847
+	.long	3161345479
+	.long	392040270
+	.long	1070965472
+	.long	2407720023
+	.long	1014053754
+	.long	2673846014
+	.long	1071023511
+	.long	1293605532
+	.long	3158464385
+	.long	1384215810
+	.long	1071080967
+	.long	2446095872
+	.long	3159216407
+	.long	3101660631
+	.long	1071137826
+	.long	698040758
+	.long	1014855328
+	.long	2094057058
+	.long	1071194078
+	.long	2282048339
+	.long	1014040385
+	.long	1712750594
+	.long	1071249712
+	.long	1204372378
+	.long	3162276464
+	.long	1411515787
+	.long	1071304719
+	.long	949080808
+	.long	1015006403
+	.long	931538085
+	.long	1071359091
+	.long	3027127039
+	.long	1014307233
+	.long	179139065
+	.long	1071412821
+	.long	4285547492
+	.long	3161934731
+	.long	3387721259
+	.long	1071465902
+	.long	373225773
+	.long	1013486625
+	.long	2132236852
+	.long	1071544299
+	.long	3250533429
+	.long	1014031677
+	.long	1942070284
+	.long	1071645596
+	.long	1237964179
+	.long	3163239113
+	.long	1532707802
+	.long	1071695380
+	.long	330645583
+	.long	1012495610
+	.long	2294184979
+	.long	1071743834
+	.long	3959472897
+	.long	1015833116
+	.long	3805060714
+	.long	1071790961
+	.long	2671256142
+	.long	1013727772
+	.long	2215037898
+	.long	1071836770
+	.long	2683359117
+	.long	1015831902
+	.long	483661594
+	.long	1071881273
+	.long	836288326
+	.long	3162648643
+	.long	1534679894
+	.long	1071924486
+	.long	373258696
+	.long	3162470096
+	.long	1538714628
+	.long	1071966430
+	.long	3199433068
+	.long	1015325501
+	.long	527642555
+	.long	1072007128
+	.long	3636832592
+	.long	3161843145
+	.long	291339150
+	.long	1072046605
+	.long	890169537
+	.long	3160586117
+	.long	2450210201
+	.long	1072084888
+	.long	1636353294
+	.long	3163193400
+	.long	2411367951
+	.long	1072122007
+	.long	374899873
+	.long	1011331750
+	.long	681549971
+	.long	1072157992
+	.long	506411689
+	.long	1015373954
+	.long	1466745541
+	.long	1072192873
+	.long	2143860931
+	.long	1013364334
+	.long	2845622366
+	.long	1072226682
+	.long	2869178209
+	.long	3162423682
+	.long	2838871438
+	.long	1072275456
+	.long	3742223599
+	.long	1014338577
+	.long	4200275274
+	.long	1072337034
+	.long	1566539915
+	.long	3161839550
+	.long	3034733530
+	.long	1072394897
+	.long	652621408
+	.long	3162261964
+	.long	3207412993
+	.long	1072449290
+	.long	3206124665
+	.long	1014408733
+	.long	624461478
+	.long	1072500450
+	.long	932437485
+	.long	1015204343
+	.long	767665908
+	.long	1072548600
+	.long	1037911952
+	.long	3163527627
+	.long	1110773639
+	.long	1072593952
+	.long	2371517912
+	.long	3160465741
+	.long	1940828530
+	.long	1072636704
+	.long	2731408428
+	.long	3162895795
+	.long	1911329388
+	.long	1072677041
+	.long	1773089615
+	.long	3159569267
+	.long	1764715788
+	.long	1072704191
+	.long	691346949
+	.long	3164069946
+	.long	3332979233
+	.long	1072722195
+	.long	3550733983
+	.long	1014770628
+	.long	1321870254
+	.long	1072739231
+	.long	1415315820
+	.long	1016224052
+	.long	3657429030
+	.long	1072755365
+	.long	3910539033
+	.long	1015966402
+	.long	4197624557
+	.long	1072770661
+	.long	2333399254
+	.long	3164546480
+	.long	1512059493
+	.long	1072785177
+	.long	2701510318
+	.long	1016178092
+	.long	453379037
+	.long	1072798965
+	.long	4046344253
+	.long	3162814364
+	.long	1942345162
+	.long	1072818388
+	.long	621134147
+	.long	1016335195
+	.long	4210176273
+	.long	1072842164
+	.long	2701013387
+	.long	3164326619
+	.long	4185644010
+	.long	1072863795
+	.long	4163699341
+	.long	1016203112
+	.long	679688788
+	.long	1072883543
+	.long	4147276762
+	.long	1014066750
+	.long	29432865
+	.long	1072901630
+	.long	970415797
+	.long	1016902063
+	.long	4070721092
+	.long	1072918247
+	.long	2539004411
+	.long	3163736096
+	.long	2252468843
+	.long	1072933561
+	.long	3424082887
+	.long	3163407177
+	.long	2929724825
+	.long	1072947712
+	.long	3661482235
+	.long	3163846989
+	.long	1377513368
+	.long	1072960824
+	.long	3987926680
+	.long	1013647908
+	.long	1031632908
+	.long	1072973003
+	.long	3672217151
+	.long	1016614619
+	.long	2516508130
+	.long	1072984342
+	.long	545855020
+	.long	3162728930
+	.long	3792452178
+	.long	1072994923
+	.long	3420119467
+	.long	1016471430
+	.long	3147791459
+	.long	1073004818
+	.long	1342204979
+	.long	1013937254
+	.long	999189752
+	.long	1073014090
+	.long	1006335472
+	.long	3162850919
+	.long	711011011
+	.long	1073022794
+	.long	4633488
+	.long	3162966895
+	.long	15640363
+	.long	1073030980
+	.long	1686389560
+	.long	3164376226
+	.long	1218463589
+	.long	1073042382
+	.long	1526837110
+	.long	3163533985
+	.long	2538470555
+	.long	1073056144
+	.long	2273304406
+	.long	3163784996
+	.long	1229720947
+	.long	1073068489
+	.long	2971628206
+	.long	3162356540
+	.long	3115427016
+	.long	1073079621
+	.long	4215132957
+	.long	3164282762
+	.long	4030612557
+	.long	1073089709
+	.long	1913251691
+	.long	3163671292
+	.long	2728521257
+	.long	1073098892
+	.long	2861089500
+	.long	1015454459
+	.long	1118696283
+	.long	1073107285
+	.long	1628948053
+	.long	1016179658
+	.long	2682711255
+	.long	1073114984
+	.long	2906306266
+	.long	1014142643
+	.long	2073898081
+	.long	1073122072
+	.long	1322740454
+	.long	3164497217
+	.long	1403700297
+	.long	1073128618
+	.long	416137895
+	.long	3162781466
+	.long	2502685617
+	.long	1073134681
+	.long	3242008732
+	.long	1014593495
+	.long	1531926851
+	.long	1073140313
+	.long	1362708094
+	.long	1016517604
+	.long	3572814411
+	.long	1073145557
+	.long	3709790527
+	.long	1012646874
+	.long	1695536111
+	.long	1073150453
+	.long	3980346340
+	.long	1016705136
+	.long	2363057203
+	.long	1073155033
+	.long	2551194792
+	.long	1012569695
+	.long	2873365682
+	.long	1073159327
+	.long	3181154748
+	.long	1017041450
+	.long	1053384691
+	.long	1073165288
+	.long	3074536879
+	.long	1016965660
+	.long	3270542712
+	.long	1073172451
+	.long	2535319415
+	.long	3163051778
+	.long	1353631484
+	.long	1073178850
+	.long	1173833755
+	.long	1015534537
+	.long	3511218460
+	.long	1073184599
+	.long	1243608109
+	.long	3161592122
+	.long	4121259284
+	.long	1073189793
+	.long	398584912
+	.long	3163829923
+	.long	1193862106
+	.long	1073194509
+	.long	1873745539
+	.long	3163802819
+	.long	3861949790
+	.long	1073198808
+	.long	3841261147
+	.long	1015587248
+	.long	1486904578
+	.long	1073202745
+	.long	1634726776
+	.long	3163847886
+	.long	2879153715
+	.long	1073206362
+	.long	200456242
+	.long	3164138657
+	.long	385353253
+	.long	1073209698
+	.long	1186355517
+	.long	1014887155
+	.long	1125865839
+	.long	1073212783
+	.long	203561262
+	.long	3161244927
+	.long	1221361475
+	.long	1073215645
+	.long	3382476563
+	.long	1014936138
+	.long	2077323573
+	.long	1073218307
+	.long	1005121005
+	.long	3164430752
+	.long	215611373
+	.long	1073220790
+	.long	353198764
+	.long	3164485137
+	.long	2347419265
+	.long	1073223110
+	.long	1103143360
+	.long	1016542137
+	.long	1379112765
+	.long	1073225284
+	.long	381583533
+	.long	3162870833
+	.long	3891198463
+	.long	1073228298
+	.long	1771275754
+	.long	1014654681
+	.long	3395914051
+	.long	1073231917
+	.long	2350900914
+	.long	3164013978
+	.long	2799919478
+	.long	1073235146
+	.long	2893950164
+	.long	3163260901
+	.long	1138673476
+	.long	1073238045
+	.long	2622204785
+	.long	3164174388
+	.long	3408855940
+	.long	1073240661
+	.long	2800881650
+	.long	1016008624
+	.long	2044858738
+	.long	1073243035
+	.long	604544785
+	.long	1017022901
+	.long	2578795176
+	.long	1073245198
+	.long	2557332925
+	.long	1016135165
+	.long	4196285314
+	.long	1073247177
+	.long	2032365307
+	.long	1016194735
+	.long	224877747
+	.long	1073248996
+	.long	497926916
+	.long	1016947111
+	.long	3271386490
+	.long	1073250671
+	.long	2689994846
+	.long	1016631513
+	.long	813635989
+	.long	1073252221
+	.long	747035277
+	.long	3164530136
+	.long	369829519
+	.long	1073253658
+	.long	2182033858
+	.long	3163190340
+	.long	1187679052
+	.long	1073254994
+	.long	673954443
+	.long	1016149821
+	.long	4232586098
+	.long	1073256239
+	.long	497775200
+	.long	3162179015
+	.long	426690558
+	.long	1073257404
+	.long	3063343247
+	.long	1016865578
+	.long	1624065902
+	.long	1073258494
+	.long	1354224996
+	.long	3163503778
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	4294901760
+	.long	0
+	.long	0
+	.long	0
+	.long	32768
+	.long	0
+	.long	0
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.type	static_const_table,@object
+	.size	static_const_table,2704
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_cbrt.S b/libm/x86/s_cbrt.S
new file mode 100644
index 0000000..0c98c99
--- /dev/null
+++ b/libm/x86/s_cbrt.S
@@ -0,0 +1,738 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//   Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
+//   Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
+//   where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
+//   cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
+//   (T stores the high 53 bits, D stores the low order bits)
+//   Result=2^k*T+(2^k*T*r)*P+2^k*D
+//   where P=p1+p2*r+..+p8*r^7
+//
+// Special cases:
+//  cbrt(NaN) = quiet NaN, and raise invalid exception
+//  cbrt(INF) = that INF
+//  cbrt(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  cbrt
+ENTRY(cbrt)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %esi, 52(%esp)
+        call      static_func
+        movl      %eax, %esi
+        movsd     128(%esp), %xmm0
+        movapd    %xmm0, %xmm7
+        movsd     %xmm0, 8(%esp)
+        movl      $524032, %edx
+        movsd     64(%esi), %xmm5
+        movsd     80(%esi), %xmm3
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        movsd     96(%esi), %xmm1
+        movsd     112(%esi), %xmm2
+        movl      %ebx, 16(%esp)
+        andl      $248, %ecx
+        movsd     128(%ecx,%esi), %xmm4
+        movl      %eax, %ebx
+        andl      %eax, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_0.0.2
+        cmpl      $524032, %edx
+        je        .L_2TAG_PACKET_1.0.2
+        shrl      $8, %edx
+        shrl      $8, %ebx
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    (%esi), %xmm5
+        movl      $5462, %eax
+        movapd    16(%esi), %xmm6
+        mull      %edx
+        movl      %ebx, %edx
+        andl      $2047, %ebx
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        shll      $8, %ebx
+        addl      $682, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addl      %ebx, %ecx
+        psllq     $52, %xmm7
+.L_2TAG_PACKET_2.0.2:
+        movapd    32(%esi), %xmm2
+        movapd    48(%esi), %xmm0
+        subsd     %xmm3, %xmm1
+        movq      %xmm7, %xmm3
+        mulsd     384(%ecx,%esi), %xmm7
+        mulsd     %xmm4, %xmm1
+        mulsd     1152(%ecx,%esi), %xmm3
+        movapd    %xmm1, %xmm4
+        unpcklpd  %xmm1, %xmm1
+        mulpd     %xmm1, %xmm5
+        mulpd     %xmm1, %xmm6
+        mulpd     %xmm1, %xmm1
+        addpd     %xmm5, %xmm2
+        addpd     %xmm6, %xmm0
+        mulpd     %xmm1, %xmm2
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm7, %xmm4
+        addpd     %xmm2, %xmm0
+        movl      16(%esp), %ebx
+        mulsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm7, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_0.0.2:
+        mulsd     1984(%esi), %xmm0
+        movq      %xmm0, %xmm7
+        movl      $524032, %edx
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        andl      $248, %ecx
+        movsd     128(%ecx,%esi), %xmm4
+        movl      %eax, %ebx
+        andl      %eax, %edx
+        shrl      $8, %edx
+        shrl      $8, %ebx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_4.0.2
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    (%esi), %xmm5
+        movl      $5462, %eax
+        movapd    16(%esi), %xmm6
+        mull      %edx
+        movl      %ebx, %edx
+        andl      $2047, %ebx
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        shll      $8, %ebx
+        addl      $661, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addl      %ebx, %ecx
+        psllq     $52, %xmm7
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_4.0.2:
+        cmpl      $0, %ebx
+        jne       .L_2TAG_PACKET_5.0.2
+        movl      16(%esp), %ebx
+        fldl      1952(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_5.0.2:
+        movl      16(%esp), %ebx
+        fldl      1968(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_1.0.2:
+        movl      16(%esp), %ebx
+        movl      132(%esp), %eax
+        movl      128(%esp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %ecx
+        cmpl      $2146435072, %ecx
+        ja        .L_2TAG_PACKET_6.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_6.0.2
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_7.0.2
+        fldl      1920(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_7.0.2:
+        fldl      1936(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_6.0.2:
+        movsd     8(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_3.0.2:
+        movl      52(%esp), %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(cbrt)
+# -- End  cbrt
+
+# Start file scope ASM
+ALIAS_SYMBOL(cbrtl, cbrt);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	1553778919
+	.long	3213899486
+	.long	3534952507
+	.long	3215266280
+	.long	1646371399
+	.long	3214412045
+	.long	477218588
+	.long	3216798151
+	.long	3582521621
+	.long	1066628362
+	.long	1007461464
+	.long	1068473053
+	.long	889629714
+	.long	1067378449
+	.long	1431655765
+	.long	1070945621
+	.long	4294967295
+	.long	1048575
+	.long	0
+	.long	0
+	.long	0
+	.long	3220193280
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	1032192
+	.long	0
+	.long	0
+	.long	528611360
+	.long	3220144632
+	.long	2884679527
+	.long	3220082993
+	.long	1991868891
+	.long	3220024928
+	.long	2298714891
+	.long	3219970134
+	.long	58835168
+	.long	3219918343
+	.long	3035110223
+	.long	3219869313
+	.long	1617585086
+	.long	3219822831
+	.long	2500867033
+	.long	3219778702
+	.long	4241943008
+	.long	3219736752
+	.long	258732970
+	.long	3219696825
+	.long	404232216
+	.long	3219658776
+	.long	2172167368
+	.long	3219622476
+	.long	1544257904
+	.long	3219587808
+	.long	377579543
+	.long	3219554664
+	.long	1616385542
+	.long	3219522945
+	.long	813783277
+	.long	3219492562
+	.long	3940743189
+	.long	3219463431
+	.long	2689777499
+	.long	3219435478
+	.long	1700977147
+	.long	3219408632
+	.long	3169102082
+	.long	3219382828
+	.long	327235604
+	.long	3219358008
+	.long	1244336319
+	.long	3219334115
+	.long	1300311200
+	.long	3219311099
+	.long	3095471925
+	.long	3219288912
+	.long	2166487928
+	.long	3219267511
+	.long	2913108253
+	.long	3219246854
+	.long	293672978
+	.long	3219226904
+	.long	288737297
+	.long	3219207624
+	.long	1810275472
+	.long	3219188981
+	.long	174592167
+	.long	3219170945
+	.long	3539053052
+	.long	3219153485
+	.long	2164392968
+	.long	3219136576
+	.long	572345495
+	.long	1072698681
+	.long	1998204467
+	.long	1072709382
+	.long	3861501553
+	.long	1072719872
+	.long	2268192434
+	.long	1072730162
+	.long	2981979308
+	.long	1072740260
+	.long	270859143
+	.long	1072750176
+	.long	2958651392
+	.long	1072759916
+	.long	313113243
+	.long	1072769490
+	.long	919449400
+	.long	1072778903
+	.long	2809328903
+	.long	1072788162
+	.long	2222981587
+	.long	1072797274
+	.long	2352530781
+	.long	1072806244
+	.long	594152517
+	.long	1072815078
+	.long	1555767199
+	.long	1072823780
+	.long	4282421314
+	.long	1072832355
+	.long	2355578597
+	.long	1072840809
+	.long	1162590619
+	.long	1072849145
+	.long	797864051
+	.long	1072857367
+	.long	431273680
+	.long	1072865479
+	.long	2669831148
+	.long	1072873484
+	.long	733477752
+	.long	1072881387
+	.long	4280220604
+	.long	1072889189
+	.long	801961634
+	.long	1072896896
+	.long	2915370760
+	.long	1072904508
+	.long	1159613482
+	.long	1072912030
+	.long	2689944798
+	.long	1072919463
+	.long	1248687822
+	.long	1072926811
+	.long	2967951030
+	.long	1072934075
+	.long	630170432
+	.long	1072941259
+	.long	3760898254
+	.long	1072948363
+	.long	0
+	.long	1072955392
+	.long	2370273294
+	.long	1072962345
+	.long	1261754802
+	.long	1072972640
+	.long	546334065
+	.long	1072986123
+	.long	1054893830
+	.long	1072999340
+	.long	1571187597
+	.long	1073012304
+	.long	1107975175
+	.long	1073025027
+	.long	3606909377
+	.long	1073037519
+	.long	1113616747
+	.long	1073049792
+	.long	4154744632
+	.long	1073061853
+	.long	3358931423
+	.long	1073073713
+	.long	4060702372
+	.long	1073085379
+	.long	747576176
+	.long	1073096860
+	.long	3023138255
+	.long	1073108161
+	.long	1419988548
+	.long	1073119291
+	.long	1914185305
+	.long	1073130255
+	.long	294389948
+	.long	1073141060
+	.long	3761802570
+	.long	1073151710
+	.long	978281566
+	.long	1073162213
+	.long	823148820
+	.long	1073172572
+	.long	2420954441
+	.long	1073182792
+	.long	3815449908
+	.long	1073192878
+	.long	2046058587
+	.long	1073202835
+	.long	1807524753
+	.long	1073212666
+	.long	2628681401
+	.long	1073222375
+	.long	3225667357
+	.long	1073231966
+	.long	1555307421
+	.long	1073241443
+	.long	3454043099
+	.long	1073250808
+	.long	1208137896
+	.long	1073260066
+	.long	3659916772
+	.long	1073269218
+	.long	1886261264
+	.long	1073278269
+	.long	3593647839
+	.long	1073287220
+	.long	3086012205
+	.long	1073296075
+	.long	2769796922
+	.long	1073304836
+	.long	888716057
+	.long	1073317807
+	.long	2201465623
+	.long	1073334794
+	.long	164369365
+	.long	1073351447
+	.long	3462666733
+	.long	1073367780
+	.long	2773905457
+	.long	1073383810
+	.long	1342879088
+	.long	1073399550
+	.long	2543933975
+	.long	1073415012
+	.long	1684477781
+	.long	1073430209
+	.long	3532178543
+	.long	1073445151
+	.long	1147747300
+	.long	1073459850
+	.long	1928031793
+	.long	1073474314
+	.long	2079717015
+	.long	1073488553
+	.long	4016765315
+	.long	1073502575
+	.long	3670431139
+	.long	1073516389
+	.long	3549227225
+	.long	1073530002
+	.long	11637607
+	.long	1073543422
+	.long	588220169
+	.long	1073556654
+	.long	2635407503
+	.long	1073569705
+	.long	2042029317
+	.long	1073582582
+	.long	1925128962
+	.long	1073595290
+	.long	4136375664
+	.long	1073607834
+	.long	759964600
+	.long	1073620221
+	.long	4257606771
+	.long	1073632453
+	.long	297278907
+	.long	1073644538
+	.long	3655053093
+	.long	1073656477
+	.long	2442253172
+	.long	1073668277
+	.long	1111876799
+	.long	1073679941
+	.long	3330973139
+	.long	1073691472
+	.long	3438879452
+	.long	1073702875
+	.long	3671565478
+	.long	1073714153
+	.long	1317849547
+	.long	1073725310
+	.long	1642364115
+	.long	1073736348
+	.long	4050900474
+	.long	1014427190
+	.long	1157977860
+	.long	1016444461
+	.long	1374568199
+	.long	1017271387
+	.long	2809163288
+	.long	1016882676
+	.long	3742377377
+	.long	1013168191
+	.long	3101606597
+	.long	1017541672
+	.long	65224358
+	.long	1017217597
+	.long	2691591250
+	.long	1017266643
+	.long	4020758549
+	.long	1017689313
+	.long	1316310992
+	.long	1018030788
+	.long	1031537856
+	.long	1014090882
+	.long	3261395239
+	.long	1016413641
+	.long	886424999
+	.long	1016313335
+	.long	3114776834
+	.long	1014195875
+	.long	1681120620
+	.long	1017825416
+	.long	1329600273
+	.long	1016625740
+	.long	465474623
+	.long	1017097119
+	.long	4251633980
+	.long	1017169077
+	.long	1986990133
+	.long	1017710645
+	.long	752958613
+	.long	1017159641
+	.long	2216216792
+	.long	1018020163
+	.long	4282860129
+	.long	1015924861
+	.long	1557627859
+	.long	1016039538
+	.long	3889219754
+	.long	1018086237
+	.long	3684996408
+	.long	1017353275
+	.long	723532103
+	.long	1017717141
+	.long	2951149676
+	.long	1012528470
+	.long	831890937
+	.long	1017830553
+	.long	1031212645
+	.long	1017387331
+	.long	2741737450
+	.long	1017604974
+	.long	2863311531
+	.long	1003776682
+	.long	4276736099
+	.long	1013153088
+	.long	4111778382
+	.long	1015673686
+	.long	1728065769
+	.long	1016413986
+	.long	2708718031
+	.long	1018078833
+	.long	1069335005
+	.long	1015291224
+	.long	700037144
+	.long	1016482032
+	.long	2904566452
+	.long	1017226861
+	.long	4074156649
+	.long	1017622651
+	.long	25019565
+	.long	1015245366
+	.long	3601952608
+	.long	1015771755
+	.long	3267129373
+	.long	1017904664
+	.long	503203103
+	.long	1014921629
+	.long	2122011730
+	.long	1018027866
+	.long	3927295461
+	.long	1014189456
+	.long	2790625147
+	.long	1016024251
+	.long	1330460186
+	.long	1016940346
+	.long	4033568463
+	.long	1015538390
+	.long	3695818227
+	.long	1017509621
+	.long	257573361
+	.long	1017208868
+	.long	3227697852
+	.long	1017337964
+	.long	234118548
+	.long	1017169577
+	.long	4009025803
+	.long	1017278524
+	.long	1948343394
+	.long	1017749310
+	.long	678398162
+	.long	1018144239
+	.long	3083864863
+	.long	1016669086
+	.long	2415453452
+	.long	1017890370
+	.long	175467344
+	.long	1017330033
+	.long	3197359580
+	.long	1010339928
+	.long	2071276951
+	.long	1015941358
+	.long	268372543
+	.long	1016737773
+	.long	938132959
+	.long	1017389108
+	.long	1816750559
+	.long	1017337448
+	.long	4119203749
+	.long	1017152174
+	.long	2578653878
+	.long	1013108497
+	.long	2470331096
+	.long	1014678606
+	.long	123855735
+	.long	1016553320
+	.long	1265650889
+	.long	1014782687
+	.long	3414398172
+	.long	1017182638
+	.long	1040773369
+	.long	1016158401
+	.long	3483628886
+	.long	1016886550
+	.long	4140499405
+	.long	1016191425
+	.long	3893477850
+	.long	1016964495
+	.long	3935319771
+	.long	1009634717
+	.long	2978982660
+	.long	1015027112
+	.long	2452709923
+	.long	1017990229
+	.long	3190365712
+	.long	1015835149
+	.long	4237588139
+	.long	1015832925
+	.long	2610678389
+	.long	1017962711
+	.long	2127316774
+	.long	1017405770
+	.long	824267502
+	.long	1017959463
+	.long	2165924042
+	.long	1017912225
+	.long	2774007076
+	.long	1013257418
+	.long	4123916326
+	.long	1017582284
+	.long	1976417958
+	.long	1016959909
+	.long	4092806412
+	.long	1017711279
+	.long	119251817
+	.long	1015363631
+	.long	3475418768
+	.long	1017675415
+	.long	1972580503
+	.long	1015470684
+	.long	815541017
+	.long	1017517969
+	.long	2429917451
+	.long	1017397776
+	.long	4062888482
+	.long	1016749897
+	.long	68284153
+	.long	1017925678
+	.long	2207779246
+	.long	1016320298
+	.long	1183466520
+	.long	1017408657
+	.long	143326427
+	.long	1017060403
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	1138753536
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,2000
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_cos.S b/libm/x86/s_cos.S
new file mode 100644
index 0000000..fd5ef5d
--- /dev/null
+++ b/libm/x86/s_cos.S
@@ -0,0 +1,892 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     Inputs with |X| < 2^-252 are treated specially as
+//     1 - |x|.
+//
+// Special cases:
+//  cos(NaN) = quiet NaN, and raise invalid exception
+//  cos(INF) = NaN and raise invalid exception
+//  cos(0) = 1
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  cos
+ENTRY(cos)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 56(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $12336, %eax
+        cmpl      $4293, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        movsd     2160(%ebx), %xmm1
+        mulsd     %xmm0, %xmm1
+        movapd    2240(%ebx), %xmm5
+        movsd     2224(%ebx), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        movsd     2128(%ebx), %xmm3
+        movapd    2112(%ebx), %xmm2
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sdl %edx, %xmm1
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        addl      $1865232, %edx
+        movapd    %xmm0, %xmm4
+        andl      $63, %edx
+        movapd    2096(%ebx), %xmm5
+        lea       (%ebx), %eax
+        shll      $5, %edx
+        addl      %edx, %eax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     2144(%ebx), %xmm1
+        subsd     %xmm3, %xmm4
+        movsd     8(%eax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movapd    %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        movapd    2064(%ebx), %xmm6
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%eax), %xmm2
+        subsd     %xmm3, %xmm1
+        movsd     24(%eax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     2080(%ebx), %xmm5
+        mulsd     (%eax), %xmm4
+        addpd     2048(%ebx), %xmm6
+        mulpd     %xmm0, %xmm5
+        movapd    %xmm3, %xmm0
+        addsd     8(%eax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movapd    %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movsd     8(%eax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%eax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm4
+        movsd     %xmm4, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        jg        .L_2TAG_PACKET_2.0.2
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        pinsrw    $3, %eax, %xmm0
+        movsd     2192(%ebx), %xmm1
+        subsd     %xmm0, %xmm1
+        movsd     %xmm1, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movl      132(%esp), %eax
+        andl      $2146435072, %eax
+        cmpl      $2146435072, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        subl      $32, %esp
+        movsd     %xmm0, (%esp)
+        lea       40(%esp), %eax
+        movl      %eax, 8(%esp)
+        movl      $1, %eax
+        movl      %eax, 12(%esp)
+        call      __libm_sincos_huge
+        addl      $32, %esp
+        fldl      8(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        fldl      128(%esp)
+        fmull     2208(%ebx)
+.L_2TAG_PACKET_1.0.2:
+        movl      56(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(cos)
+# -- End  cos
+
+# Start file scope ASM
+ALIAS_SYMBOL(cosl, cos);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.long	1413480448
+	.long	1069097467
+	.long	0
+	.long	0
+	.long	771977331
+	.long	996350346
+	.long	0
+	.long	0
+	.long	1841940611
+	.long	1076125488
+	.long	0
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	static_const_table,@object
+	.size	static_const_table,2256
+	.data
+	.hidden __libm_sincos_huge
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_expm1.S b/libm/x86/s_expm1.S
new file mode 100644
index 0000000..1f9e87b
--- /dev/null
+++ b/libm/x86/s_expm1.S
@@ -0,0 +1,702 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//
+//  Four sub-domains:
+//    1. |x| < 1/(2*K)
+//      expm1(x) ~ P(x)
+//    2. 1/(2*K) <= |x| <= 56*log(2)
+//       x       x/log(2)    n
+//      e - 1 = 2         = 2 * T[j] * (1 + P(y)) - 1
+//    3. 56*log(2) < x < MAX_LOG
+//       x       x   x/log(2)    n
+//      e - 1 ~ e = 2         = 2 * T[j] * (1 + P(y))
+//    4. x < -56*log(2)
+//       x            x
+//      e - 1 = -1 + e ~ -1
+//    where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//    In case 3, to avoid problems with arithmetic overflow and underflow,
+//              n                        n1  n2
+//    value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//    and BIAS is a value of exponent bias.
+//
+// Special cases:
+//  expm1(NaN) is NaN
+//  expm1(+INF) is +INF
+//  expm1(-INF) is -1
+//  expm1(x) is x for subnormals
+//  for finite argument, only expm1(0)=0 is exact.
+//  For IEEE double
+//    if x > 709.782712893383973096 then expm1(x) overflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  expm1
+ENTRY(expm1)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        unpcklpd  %xmm0, %xmm0
+        movapd    64(%ebx), %xmm1
+        movapd    48(%ebx), %xmm6
+        movapd    80(%ebx), %xmm2
+        movapd    96(%ebx), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $16304, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    112(%ebx), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    128(%ebx), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        subpd     %xmm3, %xmm0
+        movapd    160(%ebx,%ecx), %xmm2
+        movsd     144(%ebx), %xmm3
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm3
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm0, %xmm0
+        movapd    %xmm2, %xmm4
+        unpckhpd  %xmm2, %xmm2
+        movdqa    16(%ebx), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    32(%ebx), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        mulsd     %xmm0, %xmm3
+        mulpd     %xmm5, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        addsd     %xmm3, %xmm0
+        xorpd     %xmm3, %xmm3
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm3
+        orpd      %xmm7, %xmm2
+        mulsd     %xmm4, %xmm7
+        movapd    %xmm3, %xmm6
+        addsd     %xmm1, %xmm3
+        pextrw    $3, %xmm2, %edx
+        pshufd    $238, %xmm0, %xmm5
+        psrlq     $38, %xmm3
+        psllq     $38, %xmm3
+        movapd    %xmm2, %xmm4
+        subsd     %xmm3, %xmm6
+        addsd     %xmm5, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm2, %xmm3
+        xorpd     %xmm5, %xmm5
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm5
+        addsd     %xmm1, %xmm0
+        movl      $17184, %ecx
+        subl      %edx, %ecx
+        subl      $16256, %edx
+        orl       %edx, %ecx
+        jl        .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm3
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+.L_2TAG_PACKET_3.0.2:
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_2.0.2:
+        cmpl      $0, %edx
+        jl        .L_2TAG_PACKET_5.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm7
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_5.0.2:
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        subsd     %xmm5, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_1.0.2:
+        movl      132(%esp), %ecx
+        addsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_6.0.2
+        fstcw     24(%esp)
+        movzwl    24(%esp), %edx
+        orl       $768, %edx
+        movw      %dx, 28(%esp)
+        fldcw     28(%esp)
+        movl      %eax, %edx
+        sarl      $1, %eax
+        subl      %eax, %edx
+        movdqa    (%ebx), %xmm6
+        pandn     %xmm2, %xmm6
+        addl      $1023, %eax
+        movd      %eax, %xmm3
+        psllq     $52, %xmm3
+        orpd      %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        movsd     %xmm0, 8(%esp)
+        fldl      8(%esp)
+        movsd     %xmm6, 16(%esp)
+        fldl      16(%esp)
+        movsd     %xmm4, 16(%esp)
+        fldl      16(%esp)
+        addl      $1023, %edx
+        movd      %edx, %xmm4
+        psllq     $52, %xmm4
+        faddp     %st, %st(1)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        movsd     %xmm4, 8(%esp)
+        fldl      8(%esp)
+        fmulp     %st, %st(1)
+        fstpl     8(%esp)
+        movsd     8(%esp), %xmm0
+        fldcw     24(%esp)
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_7.0.2
+        jmp       .L_2TAG_PACKET_4.0.2
+        cmpl      $-2147483648, %ecx
+        jb        .L_2TAG_PACKET_7.0.2
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        movl      $41, %edx
+.L_2TAG_PACKET_8.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     128(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_10.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_11.0.2
+        movsd     1272(%ebx), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $41, %edx
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_11.0.2:
+        movl      132(%esp), %eax
+        movl      128(%esp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %eax
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_12.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_12.0.2
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_13.0.2
+        movsd     1256(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_13.0.2:
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_12.0.2:
+        movsd     128(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_14.0.2:
+        addl      $16304, %eax
+        cmpl      $15504, %eax
+        jb        .L_2TAG_PACKET_15.0.2
+        movapd    1184(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    1200(%ebx), %xmm3
+        movapd    1216(%ebx), %xmm4
+        movsd     1232(%ebx), %xmm5
+        mulsd     %xmm1, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm2
+        xorpd     %xmm7, %xmm7
+        movl      $16368, %edx
+        pinsrw    $3, %edx, %xmm7
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm1, %xmm5
+        pshufd    $228, %xmm1, %xmm3
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm4, %xmm2
+        movapd    %xmm7, %xmm4
+        addsd     %xmm6, %xmm7
+        mulpd     %xmm3, %xmm1
+        psrlq     $27, %xmm7
+        psllq     $27, %xmm7
+        movsd     1288(%ebx), %xmm3
+        subsd     %xmm7, %xmm4
+        mulpd     %xmm1, %xmm2
+        addsd     %xmm4, %xmm6
+        pshufd    $238, %xmm2, %xmm1
+        addsd     %xmm2, %xmm6
+        andpd     %xmm0, %xmm3
+        movapd    %xmm0, %xmm4
+        addsd     %xmm6, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        mulsd     %xmm7, %xmm3
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_15.0.2:
+        cmpl      $16, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        movapd    %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        movl      $16, %edx
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm1
+        movl      $42, %edx
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_0.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_14.0.2
+        movl      132(%esp), %eax
+        cmpl      $1083179008, %eax
+        jge       .L_2TAG_PACKET_10.0.2
+        cmpl      $-1048576, %eax
+        jae       .L_2TAG_PACKET_11.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_4.0.2:
+        movsd     %xmm0, 48(%esp)
+        fldl      48(%esp)
+.L_2TAG_PACKET_9.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(expm1)
+# -- End  expm1
+
+# Start file scope ASM
+ALIAS_SYMBOL(expm1l, expm1);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	4293918720
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	1963358694
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1431655765
+	.long	1067799893
+	.long	0
+	.long	1071644672
+	.long	381774871
+	.long	1062650220
+	.long	381774871
+	.long	1062650220
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1000070955
+	.long	1042145304
+	.long	1040187392
+	.long	11418
+	.long	988267849
+	.long	1039500660
+	.long	3539992576
+	.long	22960
+	.long	36755401
+	.long	1042114290
+	.long	402653184
+	.long	34629
+	.long	3634769483
+	.long	1042178627
+	.long	1820327936
+	.long	46424
+	.long	2155991225
+	.long	1041560680
+	.long	847249408
+	.long	58348
+	.long	2766913307
+	.long	1039293264
+	.long	3489660928
+	.long	70401
+	.long	3651174602
+	.long	1040488175
+	.long	2927624192
+	.long	82586
+	.long	3073892131
+	.long	1042240606
+	.long	1006632960
+	.long	94904
+	.long	1328391742
+	.long	1042019037
+	.long	3942645760
+	.long	107355
+	.long	2650893825
+	.long	1041903210
+	.long	822083584
+	.long	119943
+	.long	2397289153
+	.long	1041802037
+	.long	2281701376
+	.long	132667
+	.long	430997175
+	.long	1042110606
+	.long	1845493760
+	.long	145530
+	.long	1230936525
+	.long	1041801015
+	.long	1702887424
+	.long	158533
+	.long	740675935
+	.long	1040178913
+	.long	4110417920
+	.long	171677
+	.long	3489810261
+	.long	1041825986
+	.long	2793406464
+	.long	184965
+	.long	2532600530
+	.long	1040767882
+	.long	167772160
+	.long	198398
+	.long	3542557060
+	.long	1041827263
+	.long	2986344448
+	.long	211976
+	.long	1401563777
+	.long	1041061093
+	.long	922746880
+	.long	225703
+	.long	3129406026
+	.long	1041852413
+	.long	880803840
+	.long	239579
+	.long	900993572
+	.long	1039283234
+	.long	1275068416
+	.long	253606
+	.long	2115029358
+	.long	1042140042
+	.long	562036736
+	.long	267786
+	.long	1086643152
+	.long	1041785419
+	.long	1610612736
+	.long	282120
+	.long	82864366
+	.long	1041256244
+	.long	3045064704
+	.long	296610
+	.long	2392968152
+	.long	1040913683
+	.long	3573547008
+	.long	311258
+	.long	2905856183
+	.long	1040002214
+	.long	1988100096
+	.long	326066
+	.long	3742008261
+	.long	1040011137
+	.long	1451229184
+	.long	341035
+	.long	863393794
+	.long	1040880621
+	.long	914358272
+	.long	356167
+	.long	1446136837
+	.long	1041372426
+	.long	3707764736
+	.long	371463
+	.long	927855201
+	.long	1040617636
+	.long	360710144
+	.long	386927
+	.long	1492679939
+	.long	1041050306
+	.long	2952790016
+	.long	402558
+	.long	608827001
+	.long	1041582217
+	.long	2181038080
+	.long	418360
+	.long	606260204
+	.long	1042271987
+	.long	1711276032
+	.long	434334
+	.long	3163044019
+	.long	1041843851
+	.long	1006632960
+	.long	450482
+	.long	4148747325
+	.long	1041962972
+	.long	3900702720
+	.long	466805
+	.long	802924201
+	.long	1041275378
+	.long	1442840576
+	.long	483307
+	.long	3052749833
+	.long	1041940577
+	.long	1937768448
+	.long	499988
+	.long	2216116399
+	.long	1041486744
+	.long	914358272
+	.long	516851
+	.long	2729697836
+	.long	1041445764
+	.long	2566914048
+	.long	533897
+	.long	540608356
+	.long	1041310907
+	.long	2600468480
+	.long	551129
+	.long	2916344493
+	.long	1040535661
+	.long	1107296256
+	.long	568549
+	.long	731391814
+	.long	1039497014
+	.long	2566914048
+	.long	586158
+	.long	1024722704
+	.long	1041461625
+	.long	2961178624
+	.long	603959
+	.long	3806831748
+	.long	1041732499
+	.long	2675965952
+	.long	621954
+	.long	238953304
+	.long	1040316488
+	.long	2189426688
+	.long	640145
+	.long	749123235
+	.long	1041725785
+	.long	2063597568
+	.long	658534
+	.long	1168187977
+	.long	1041175214
+	.long	2986344448
+	.long	677123
+	.long	3506096399
+	.long	1042186095
+	.long	1426063360
+	.long	695915
+	.long	1470221620
+	.long	1041675499
+	.long	2566914048
+	.long	714911
+	.long	3182425146
+	.long	1041483134
+	.long	3087007744
+	.long	734114
+	.long	3131698208
+	.long	1042208657
+	.long	4068474880
+	.long	753526
+	.long	2300504125
+	.long	1041428596
+	.long	2415919104
+	.long	773150
+	.long	2290297931
+	.long	1037388400
+	.long	3716153344
+	.long	792987
+	.long	3532148223
+	.long	1041626194
+	.long	771751936
+	.long	813041
+	.long	1161884404
+	.long	1042015258
+	.long	3699376128
+	.long	833312
+	.long	876383176
+	.long	1037968878
+	.long	1241513984
+	.long	853805
+	.long	3379986796
+	.long	1042213153
+	.long	3699376128
+	.long	874520
+	.long	1545797737
+	.long	1041681569
+	.long	58720256
+	.long	895462
+	.long	2925146801
+	.long	1042212567
+	.long	855638016
+	.long	916631
+	.long	1316627971
+	.long	1038516204
+	.long	3883925504
+	.long	938030
+	.long	3267869137
+	.long	1040337004
+	.long	2726297600
+	.long	959663
+	.long	3720868999
+	.long	1041782409
+	.long	3992977408
+	.long	981531
+	.long	433316142
+	.long	1041994064
+	.long	1526726656
+	.long	1003638
+	.long	781232103
+	.long	1040093400
+	.long	2172649472
+	.long	1025985
+	.long	2773927732
+	.long	1053236707
+	.long	381774871
+	.long	1062650220
+	.long	379653899
+	.long	1056571845
+	.long	286331153
+	.long	1065423121
+	.long	436314138
+	.long	1059717536
+	.long	1431655765
+	.long	1067799893
+	.long	1431655765
+	.long	1069897045
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	2146435071
+	.long	0
+	.long	1048576
+	.long	4227858432
+	.long	4294967295
+	.type	static_const_table,@object
+	.size	static_const_table,1296
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_log1p.S b/libm/x86/s_log1p.S
new file mode 100644
index 0000000..7a6d845
--- /dev/null
+++ b/libm/x86/s_log1p.S
@@ -0,0 +1,827 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//   log1p(NaN) = quiet NaN, and raise invalid exception
+//   log1p(+INF) = that INF
+//   log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
+//   log1p(-1) = -INF, and raises divide-by-zero exception
+//   log1p(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  log1p
+ENTRY(log1p)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $32768, %ecx
+        movd      %ecx, %xmm4
+        movsd     2128(%ebx), %xmm5
+        pshufd    $68, %xmm0, %xmm7
+        movapd    %xmm2, %xmm6
+        pextrw    $3, %xmm0, %ecx
+        addsd     %xmm2, %xmm0
+        movapd    %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        subsd     %xmm0, %xmm6
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        psrlq     $34, %xmm0
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        addsd     %xmm6, %xmm7
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        andl      $32752, %ecx
+        cmpl      $16256, %ecx
+        jb        .L_2TAG_PACKET_1.0.2
+        andl      $32752, %eax
+        movl      $32720, %ecx
+        subl      %eax, %ecx
+        pinsrw    $3, %ecx, %xmm3
+.L_2TAG_PACKET_2.0.2:
+        mulsd     %xmm3, %xmm7
+        paddd     %xmm4, %xmm0
+        xorpd     %xmm4, %xmm4
+        movl      $14336, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        orpd      %xmm2, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        paddd     %xmm4, %xmm0
+        mulsd     %xmm0, %xmm5
+        movl      $16352, %ecx
+        subl      %ecx, %eax
+        cvtsi2sdl %eax, %xmm4
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm0, %xmm1
+        movsd     2064(%ebx), %xmm6
+        movapd    2080(%ebx), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%ebx,%edx), %xmm0
+        movapd    2096(%ebx), %xmm2
+        addsd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm5
+        addsd     %xmm7, %xmm1
+        subsd     %xmm1, %xmm5
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm4, %xmm6
+        mulsd     2072(%ebx), %xmm4
+        mulsd     %xmm1, %xmm3
+        pshufd    $68, %xmm1, %xmm5
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm2
+        mulpd     %xmm5, %xmm5
+        pshufd    $228, %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     2112(%ebx), %xmm2
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm7
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm6, %xmm4
+        subsd     %xmm7, %xmm1
+        addpd     %xmm3, %xmm2
+        addsd     %xmm4, %xmm1
+        mulpd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_0.0.2:
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_4.0.2
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_6.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_7.0.2:
+        ja        .L_2TAG_PACKET_6.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_6.0.2
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_4.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_7.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_8.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $141, %edx
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_9.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $140, %edx
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     112(%esp), %xmm0
+        cmpl      $15504, %ecx
+        jb        .L_2TAG_PACKET_11.0.2
+        movapd    2144(%ebx), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        movapd    2160(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm4
+        movapd    2176(%ebx), %xmm3
+        mulpd     %xmm0, %xmm1
+        xorpd     %xmm6, %xmm6
+        mulpd     %xmm4, %xmm4
+        addpd     %xmm2, %xmm1
+        pshufd    $68, %xmm4, %xmm5
+        mulpd     %xmm0, %xmm4
+        movl      $49120, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm1
+        mulsd     %xmm4, %xmm4
+        addpd     %xmm3, %xmm1
+        mulsd     %xmm6, %xmm5
+        mulpd     %xmm4, %xmm1
+        pshufd    $238, %xmm1, %xmm7
+        addsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_11.0.2:
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_12.0.2
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_12.0.2:
+        movapd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_3.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(log1p)
+# -- End  log1p
+
+# Start file scope ASM
+ALIAS_SYMBOL(log1pl, log1p);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	3217031168
+	.long	2576980378
+	.long	1070176665
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1431655765
+	.long	3217380693
+	.long	1431655765
+	.long	1070945621
+	.type	static_const_table,@object
+	.size	static_const_table,2192
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_sin.S b/libm/x86/s_sin.S
new file mode 100644
index 0000000..1e6cbd4
--- /dev/null
+++ b/libm/x86/s_sin.S
@@ -0,0 +1,907 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     If |x| < SNN (SNN meaning the smallest normal number), we
+//     simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
+//     do 2^-55 * (2^55 * x - x).
+//
+// Special cases:
+//  sin(NaN) = quiet NaN, and raise invalid exception
+//  sin(INF) = NaN and raise invalid exception
+//  sin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  sin
+ENTRY(sin)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 56(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $12336, %eax
+        cmpl      $4293, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        movsd     2160(%ebx), %xmm1
+        mulsd     %xmm0, %xmm1
+        movsd     2272(%ebx), %xmm5
+        movapd    2256(%ebx), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        movsd     2128(%ebx), %xmm3
+        movapd    2112(%ebx), %xmm2
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sdl %edx, %xmm1
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        addl      $1865216, %edx
+        movapd    %xmm0, %xmm4
+        andl      $63, %edx
+        movapd    2096(%ebx), %xmm5
+        lea       (%ebx), %eax
+        shll      $5, %edx
+        addl      %edx, %eax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     2144(%ebx), %xmm1
+        subsd     %xmm3, %xmm4
+        movsd     8(%eax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movapd    %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        movapd    2064(%ebx), %xmm6
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%eax), %xmm2
+        subsd     %xmm3, %xmm1
+        movsd     24(%eax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     2080(%ebx), %xmm5
+        mulsd     (%eax), %xmm4
+        addpd     2048(%ebx), %xmm6
+        mulpd     %xmm0, %xmm5
+        movapd    %xmm3, %xmm0
+        addsd     8(%eax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movapd    %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movsd     8(%eax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%eax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm4
+        movsd     %xmm4, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        jg        .L_2TAG_PACKET_2.0.2
+        shrl      $4, %eax
+        cmpl      $268434685, %eax
+        jne       .L_2TAG_PACKET_3.0.2
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        movsd     2192(%ebx), %xmm3
+        mulsd     %xmm0, %xmm3
+        subsd     %xmm0, %xmm3
+        mulsd     2208(%ebx), %xmm3
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movl      132(%esp), %eax
+        andl      $2146435072, %eax
+        cmpl      $2146435072, %eax
+        je        .L_2TAG_PACKET_4.0.2
+        subl      $32, %esp
+        movsd     %xmm0, (%esp)
+        lea       40(%esp), %eax
+        movl      %eax, 8(%esp)
+        movl      $2, %eax
+        movl      %eax, 12(%esp)
+        call      __libm_sincos_huge
+        addl      $32, %esp
+        fldl      16(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        fldl      128(%esp)
+        fmull     2240(%ebx)
+.L_2TAG_PACKET_1.0.2:
+        movl      56(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(sin)
+# -- End  sin
+
+# Start file scope ASM
+ALIAS_SYMBOL(sinl, sin);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.long	1413480448
+	.long	1069097467
+	.long	0
+	.long	0
+	.long	771977331
+	.long	996350346
+	.long	0
+	.long	0
+	.long	1841940611
+	.long	1076125488
+	.long	0
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	0
+	.long	0
+	.long	1130364928
+	.long	0
+	.long	0
+	.long	0
+	.long	1015021568
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	1072693247
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	static_const_table,@object
+	.size	static_const_table,2288
+	.data
+	.hidden __libm_sincos_huge
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_tan.S b/libm/x86/s_tan.S
new file mode 100644
index 0000000..3ee2107
--- /dev/null
+++ b/libm/x86/s_tan.S
@@ -0,0 +1,1766 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Polynomials coefficients and other constants.
+//
+// Note that in this algorithm, there is a different polynomial for
+// each breakpoint, so there are 32 sets of polynomial coefficients
+// as well as 32 instances of the other constants.
+//
+// The polynomial coefficients and constants are offset from the start
+// of the main block as follows:
+//
+//   0:  c8 | c0
+//  16:  c9 | c1
+//  32: c10 | c2
+//  48: c11 | c3
+//  64: c12 | c4
+//  80: c13 | c5
+//  96: c14 | c6
+// 112: c15 | c7
+// 128: T_hi
+// 136: T_lo
+// 144: Sigma
+// 152: T_hl
+// 160: Tau
+// 168: Mask
+// 176: (end of block)
+//
+// The total table size is therefore 5632 bytes.
+//
+// Note that c0 and c1 are always zero. We could try storing
+// other constants here, and just loading the low part of the
+// SIMD register in these cases, after ensuring the high part
+// is zero.
+//
+// The higher terms of the polynomial are computed in the *low*
+// part of the SIMD register. This is so we can overlap the
+// multiplication by r^8 and the unpacking of the other part.
+//
+// The constants are:
+// T_hi + T_lo = accurate constant term in power series
+// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
+// Tau = multiplier for the reciprocal, always -1 or 0
+//
+// The basic reconstruction formula using these constants is:
+//
+// High = tau * recip_hi + t_hi
+// Med = (sgn * r + t_hl * r)_hi
+// Low = (sgn * r + t_hl * r)_lo +
+//       tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
+//
+// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
+//
+// (c0 = c1 = 0, but using them keeps SIMD regularity)
+//
+// We then do a compensated sum High + Med, add the low parts together
+// and then do the final sum.
+//
+// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
+// modulo pi/2
+//
+// Special cases:
+//  tan(NaN) = quiet NaN, and raise invalid exception
+//  tan(INF) = NaN and raise invalid exception
+//  tan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  tan
+ENTRY(tan)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 56(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $14368, %eax
+        cmpl      $2216, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        movapd    5840(%ebx), %xmm5
+        movapd    5856(%ebx), %xmm6
+        unpcklpd  %xmm0, %xmm0
+        movapd    5712(%ebx), %xmm4
+        andpd     %xmm0, %xmm4
+        movapd    5632(%ebx), %xmm1
+        mulpd     %xmm0, %xmm1
+        orpd      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm7
+        unpckhpd  %xmm7, %xmm7
+        cvttsd2si %xmm7, %edx
+        cvttpd2dq %xmm1, %xmm1
+        cvtdq2pd  %xmm1, %xmm1
+        mulpd     %xmm6, %xmm1
+        movapd    5664(%ebx), %xmm3
+        movsd     5728(%ebx), %xmm5
+        addl      $469248, %edx
+        movapd    5680(%ebx), %xmm4
+        mulpd     %xmm1, %xmm3
+        andl      $31, %edx
+        mulsd     %xmm1, %xmm5
+        movl      %edx, %ecx
+        mulpd     %xmm1, %xmm4
+        shll      $1, %ecx
+        subpd     %xmm3, %xmm0
+        mulpd     5696(%ebx), %xmm1
+        addl      %ecx, %edx
+        shll      $2, %ecx
+        addl      %ecx, %edx
+        addsd     %xmm0, %xmm5
+        movapd    %xmm0, %xmm2
+        subpd     %xmm4, %xmm0
+        movsd     5744(%ebx), %xmm6
+        shll      $4, %edx
+        lea       (%ebx), %eax
+        andpd     5776(%ebx), %xmm5
+        movapd    %xmm0, %xmm3
+        addl      %edx, %eax
+        subpd     %xmm0, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        divsd     %xmm5, %xmm6
+        subpd     %xmm4, %xmm2
+        movapd    16(%eax), %xmm7
+        subsd     %xmm5, %xmm3
+        mulpd     %xmm0, %xmm7
+        subpd     %xmm1, %xmm2
+        movapd    48(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        movapd    96(%eax), %xmm4
+        mulpd     %xmm0, %xmm4
+        addsd     %xmm3, %xmm2
+        movapd    %xmm0, %xmm3
+        mulpd     %xmm0, %xmm0
+        addpd     (%eax), %xmm7
+        addpd     32(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     80(%eax), %xmm4
+        addpd     %xmm1, %xmm7
+        movapd    112(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        addpd     %xmm1, %xmm4
+        movapd    64(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm1, %xmm7
+        movapd    %xmm3, %xmm1
+        mulpd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm0
+        mulpd     144(%eax), %xmm1
+        mulpd     %xmm3, %xmm4
+        movapd    %xmm1, %xmm3
+        addpd     %xmm4, %xmm7
+        movapd    %xmm1, %xmm4
+        mulsd     %xmm7, %xmm0
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm0
+        unpckhpd  %xmm1, %xmm1
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        movapd    %xmm2, %xmm4
+        movsd     144(%eax), %xmm7
+        unpckhpd  %xmm2, %xmm2
+        addsd     152(%eax), %xmm7
+        mulsd     %xmm2, %xmm7
+        addsd     136(%eax), %xmm7
+        addsd     %xmm1, %xmm7
+        addsd     %xmm7, %xmm0
+        movsd     5744(%ebx), %xmm7
+        mulsd     %xmm6, %xmm4
+        movsd     168(%eax), %xmm2
+        andpd     %xmm6, %xmm2
+        mulsd     %xmm2, %xmm5
+        mulsd     160(%eax), %xmm6
+        subsd     %xmm5, %xmm7
+        subsd     128(%eax), %xmm2
+        subsd     %xmm4, %xmm7
+        mulsd     %xmm6, %xmm7
+        movapd    %xmm3, %xmm4
+        subsd     %xmm2, %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm0
+        subsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        jg        .L_2TAG_PACKET_2.0.2
+        shrl      $4, %eax
+        cmpl      $268434558, %eax
+        jne       .L_2TAG_PACKET_3.0.2
+        movapd    %xmm0, %xmm3
+        mulsd     5808(%ebx), %xmm3
+.L_2TAG_PACKET_3.0.2:
+        movsd     5792(%ebx), %xmm3
+        mulsd     %xmm0, %xmm3
+        addsd     %xmm0, %xmm3
+        mulsd     5808(%ebx), %xmm3
+        movsd     %xmm3, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movq      5712(%ebx), %xmm7
+        andpd     %xmm0, %xmm7
+        xorpd     %xmm0, %xmm7
+        ucomisd   5760(%ebx), %xmm7
+        je        .L_2TAG_PACKET_4.0.2
+        subl      $32, %esp
+        movsd     %xmm0, (%esp)
+        lea       40(%esp), %eax
+        movl      %eax, 8(%esp)
+        movl      $2, %eax
+        movl      %eax, 12(%esp)
+        call      __libm_tancot_huge
+        addl      $32, %esp
+        fldl      8(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        movq      %xmm0, (%esp)
+        fldl      (%esp)
+        fsubl     (%esp)
+.L_2TAG_PACKET_1.0.2:
+        movl      56(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(tan)
+# -- End  tan
+
+# Start file scope ASM
+ALIAS_SYMBOL(tanl, tan);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1066820852
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1441186365
+	.long	1065494243
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	236289504
+	.long	1064135997
+	.long	286331153
+	.long	1069617425
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1160476131
+	.long	1062722102
+	.long	463583772
+	.long	1068212666
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	1066745731
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	1065725283
+	.long	3693284251
+	.long	1069118808
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	1064664197
+	.long	3055842593
+	.long	1068578846
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	1063576465
+	.long	1046897440
+	.long	1067705865
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	1069102779
+	.long	1317599141
+	.long	1012432133
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	1068119047
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	1067254767
+	.long	3593250296
+	.long	1070233561
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	1066371299
+	.long	24583402
+	.long	1069723988
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	1065415756
+	.long	558065897
+	.long	1068949418
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	1070167541
+	.long	1497360404
+	.long	1009710547
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	1069256389
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	1068579152
+	.long	3631919291
+	.long	1070936926
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	1067799281
+	.long	1509038701
+	.long	1070601643
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	1067075736
+	.long	3233018412
+	.long	1069913186
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	1070819848
+	.long	500078909
+	.long	3161288781
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	1070398550
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	1069876531
+	.long	2616040238
+	.long	1071582937
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	1069440113
+	.long	2251697184
+	.long	1071253687
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	1068885191
+	.long	2476932470
+	.long	1070842002
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	1071284857
+	.long	3062633575
+	.long	1014008623
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	1071640847
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	1071346340
+	.long	1037049034
+	.long	1072037305
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	1071090851
+	.long	3205232916
+	.long	1071968658
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	1070871082
+	.long	1496754229
+	.long	1071807201
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	1071717047
+	.long	3451266538
+	.long	3163444811
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	1072881308
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	1072928558
+	.long	3912524733
+	.long	1072622983
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	1072976922
+	.long	946523347
+	.long	1072772766
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	1073026959
+	.long	3718905905
+	.long	1072832823
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	1071997368
+	.long	547126769
+	.long	1015523525
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	1074290212
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	1074739170
+	.long	1264738763
+	.long	1073084804
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	1075052171
+	.long	4270740730
+	.long	1073574708
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	1075420255
+	.long	1769828046
+	.long	1073938542
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	1072317184
+	.long	294527206
+	.long	3162140088
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1704352102
+	.long	1075943001
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	1076659010
+	.long	0
+	.long	1073741824
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	1077353622
+	.long	2863311531
+	.long	1074440874
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	1078115278
+	.long	95443718
+	.long	1075163227
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1330165971
+	.long	3207850745
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	3205151475
+	.long	602185705
+	.long	3215678092
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	3202470837
+	.long	3690544014
+	.long	3213150171
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	3199711161
+	.long	3759536023
+	.long	3210559989
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	3217967566
+	.long	2356426521
+	.long	1025423456
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	3207303968
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	3204528612
+	.long	2754706541
+	.long	3215359511
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	3201651479
+	.long	4097292716
+	.long	3212856302
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	3198830754
+	.long	170296152
+	.long	3210060867
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	3217669096
+	.long	1998842465
+	.long	3174703977
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	3206749304
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	3203817873
+	.long	2223654598
+	.long	3215071936
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	3200900378
+	.long	1066252975
+	.long	3212391267
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	3198004753
+	.long	1046243251
+	.long	3209678971
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	3217377742
+	.long	3205862232
+	.long	3174660915
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	3206166872
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	3203204426
+	.long	1485063559
+	.long	3214682643
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	3200223545
+	.long	2866066872
+	.long	3211982662
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	3197170774
+	.long	1948234989
+	.long	3209098147
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	3217092115
+	.long	1034046433
+	.long	3174271903
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	3205589761
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	3202507988
+	.long	3144465176
+	.long	3214191500
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	3199400272
+	.long	584032116
+	.long	3211469261
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	3196274812
+	.long	3844233498
+	.long	3208626322
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	3216590719
+	.long	3267547836
+	.long	3172163321
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	3204793485
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	3201674917
+	.long	628750575
+	.long	3213566872
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	3198516435
+	.long	1466315631
+	.long	3210837162
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	3195331491
+	.long	3695969289
+	.long	3207854418
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	3216034914
+	.long	23826559
+	.long	3172048060
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	3203672535
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	3200523326
+	.long	2507068734
+	.long	3212502004
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	3197333001
+	.long	1349489537
+	.long	3209765608
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	3194116746
+	.long	3852528092
+	.long	3206760861
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	3214984212
+	.long	3447575948
+	.long	1024675855
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	737611454
+	.long	1056336527
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3594790527
+	.long	1052911621
+	.long	381774871
+	.long	1066844524
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3303051618
+	.long	1049456050
+	.long	3154187623
+	.long	1063343722
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	528061788
+	.long	1045944910
+	.long	2469719819
+	.long	1059831159
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	1056188887
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	1053039678
+	.long	2507068734
+	.long	1065018356
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	1049849353
+	.long	1349489537
+	.long	1062281960
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	1046633098
+	.long	3852528092
+	.long	1059277213
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	1067500564
+	.long	3447575948
+	.long	3172159503
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	1057309837
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	1054191269
+	.long	628750575
+	.long	1066083224
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	1051032787
+	.long	1466315631
+	.long	1063353514
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	1047847843
+	.long	3695969289
+	.long	1060370770
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	1068551266
+	.long	23826559
+	.long	1024564412
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	1058106113
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	1055024340
+	.long	3144465176
+	.long	1066707852
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	1051916624
+	.long	584032116
+	.long	1063985613
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	1048791164
+	.long	3844233498
+	.long	1061142674
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	1069107071
+	.long	3267547836
+	.long	1024679673
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	1058683224
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	1055720778
+	.long	1485063559
+	.long	1067198995
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	1052739897
+	.long	2866066872
+	.long	1064499014
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	1049687126
+	.long	1948234989
+	.long	1061614499
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	1069608467
+	.long	1034046433
+	.long	1026788255
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	1059265656
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	1056334225
+	.long	2223654598
+	.long	1067588288
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	1053416730
+	.long	1066252975
+	.long	1064907619
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	1050521105
+	.long	1046243251
+	.long	1062195323
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	1069894094
+	.long	3205862232
+	.long	1027177267
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	1059820320
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	1057044964
+	.long	2754706541
+	.long	1067875863
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	1054167831
+	.long	4097292716
+	.long	1065372654
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	1051347106
+	.long	170296152
+	.long	1062577219
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	1070185448
+	.long	1998842465
+	.long	1027220329
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1330165971
+	.long	1060367097
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	1057667827
+	.long	602185705
+	.long	1068194444
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	1054987189
+	.long	3690544014
+	.long	1065666523
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	1052227513
+	.long	3759536023
+	.long	1063076341
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	1070483918
+	.long	2356426521
+	.long	3172907104
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1704352102
+	.long	3223426649
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	3224142658
+	.long	0
+	.long	3221225472
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	3224837270
+	.long	2863311531
+	.long	3221924522
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	3225598926
+	.long	95443718
+	.long	3222646875
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	3221773860
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	3222222818
+	.long	1264738763
+	.long	3220568452
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	3222535819
+	.long	4270740730
+	.long	3221058356
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	3222903903
+	.long	1769828046
+	.long	3221422190
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	3219800832
+	.long	294527206
+	.long	1014656440
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	3220364956
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	3220412206
+	.long	3912524733
+	.long	3220106631
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	3220460570
+	.long	946523347
+	.long	3220256414
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	3220510607
+	.long	3718905905
+	.long	3220316471
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	3219481016
+	.long	547126769
+	.long	3163007173
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	3219124495
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	3218829988
+	.long	1037049034
+	.long	3219520953
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	3218574499
+	.long	3205232916
+	.long	3219452306
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	3218354730
+	.long	1496754229
+	.long	3219290849
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	3219200695
+	.long	3451266538
+	.long	1015961163
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	3217882198
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	3217360179
+	.long	2616040238
+	.long	3219066585
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	3216923761
+	.long	2251697184
+	.long	3218737335
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	3216368839
+	.long	2476932470
+	.long	3218325650
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	3218768505
+	.long	3062633575
+	.long	3161492271
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	3216740037
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	3216062800
+	.long	3631919291
+	.long	3218420574
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	3215282929
+	.long	1509038701
+	.long	3218085291
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	3214559384
+	.long	3233018412
+	.long	3217396834
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	3218303496
+	.long	500078909
+	.long	1013805133
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	3215602695
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	3214738415
+	.long	3593250296
+	.long	3217717209
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	3213854947
+	.long	24583402
+	.long	3217207636
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	3212899404
+	.long	558065897
+	.long	3216433066
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	3217651189
+	.long	1497360404
+	.long	3157194195
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	3214229379
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	3213208931
+	.long	3693284251
+	.long	3216602456
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	3212147845
+	.long	3055842593
+	.long	3216062494
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	3211060113
+	.long	1046897440
+	.long	3215189513
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	3216586427
+	.long	1317599141
+	.long	3159915781
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1841940611
+	.long	1071931184
+	.long	1841940611
+	.long	1076125488
+	.long	0
+	.long	1131937792
+	.long	0
+	.long	1127743488
+	.long	1413758976
+	.long	1069097467
+	.long	1413742592
+	.long	1069097467
+	.long	1734819840
+	.long	3174229945
+	.long	1280049152
+	.long	1028033571
+	.long	923219018
+	.long	984130272
+	.long	57701189
+	.long	988383790
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	1734816687
+	.long	1026746297
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	4294705152
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	0
+	.long	1130364928
+	.long	0
+	.long	0
+	.long	0
+	.long	1015021568
+	.long	0
+	.long	0
+	.long	0
+	.long	1017118720
+	.long	0
+	.long	0
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1076887552
+	.long	0
+	.long	1072693248
+	.type	static_const_table,@object
+	.size	static_const_table,5872
+	.data
+	.hidden __libm_tancot_huge
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_tanh.S b/libm/x86/s_tanh.S
new file mode 100644
index 0000000..737bcbb
--- /dev/null
+++ b/libm/x86/s_tanh.S
@@ -0,0 +1,1361 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
+//
+// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+// log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//         L2EH+L2EL (upper 26, lower 53 bits)
+//
+// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
+//                             f=0.b1 b2 ... b8, k integer
+// 2^{-f} is approximated as Tn[f]+Dn[f]
+// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
+//
+//  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
+//                      for |x| in [23/64,3*2^7)
+// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
+//
+// For |x| in [2^{-4},2^5):
+//         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
+//      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
+//  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
+//  1+T0+D0+p*(T0+D0)=KH+KL, where
+//       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
+//       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
+//  eps ~ (R*KH-1)+R*KL
+//  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
+//  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
+//  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
+//    The result is formed as
+//    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
+//                                                  set at the end
+//
+// For |x| in [2^{-64},2^{-4}):
+//  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
+//
+// For |x|<2^{-64}:  x is returned
+//
+// For |x|>=2^32: return +/-1
+//
+// Special cases:
+//  tanh(NaN) = quiet NaN, and raise invalid exception
+//  tanh(INF) = that INF
+//  tanh(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  tanh
+ENTRY(tanh)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     4256(%ebx), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     4112(%ebx), %xmm1
+        movsd     4120(%ebx), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     4096(%ebx), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16304, %ecx
+        cmpl      $144, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movapd    %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        movsd     4264(%ebx), %xmm4
+        subsd     %xmm6, %xmm3
+        xorpd     %xmm0, %xmm0
+        addsd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm7
+        movapd    4128(%ebx), %xmm6
+        addsd     %xmm7, %xmm2
+        movl      $255, %ecx
+        andl      %eax, %ecx
+        addl      %ecx, %ecx
+        movapd    (%ebx,%ecx,8), %xmm5
+        shrl      $4, %eax
+        andl      $65520, %eax
+        subl      $16368, %eax
+        negl      %eax
+        pinsrw    $3, %eax, %xmm0
+        movapd    4144(%ebx), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     %xmm5, %xmm0
+        movsd     4160(%ebx), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        movapd    %xmm4, %xmm5
+        addsd     %xmm0, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm7
+        mulpd     %xmm2, %xmm2
+        addpd     %xmm6, %xmm1
+        mulsd     %xmm2, %xmm2
+        movsd     4264(%ebx), %xmm3
+        mulpd     %xmm2, %xmm1
+        pshufd    $78, %xmm1, %xmm6
+        addsd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm6
+        addsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm1
+        andpd     4224(%ebx), %xmm4
+        divsd     %xmm1, %xmm5
+        subsd     %xmm4, %xmm3
+        pshufd    $238, %xmm0, %xmm1
+        addsd     %xmm0, %xmm3
+        movapd    %xmm4, %xmm2
+        addsd     %xmm1, %xmm3
+        mulsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm7
+        addsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm4
+        movsd     4240(%ebx), %xmm1
+        mulsd     %xmm0, %xmm6
+        andpd     4224(%ebx), %xmm4
+        addsd     %xmm6, %xmm3
+        movapd    %xmm4, %xmm6
+        subsd     %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        movsd     4264(%ebx), %xmm7
+        andpd     %xmm1, %xmm5
+        addsd     %xmm2, %xmm3
+        mulsd     %xmm5, %xmm4
+        xorpd     %xmm2, %xmm2
+        mulsd     %xmm5, %xmm3
+        subsd     4272(%ebx), %xmm6
+        subsd     %xmm7, %xmm4
+        xorl      $32768, %edx
+        pinsrw    $3, %edx, %xmm2
+        addsd     %xmm3, %xmm4
+        mulsd     %xmm5, %xmm6
+        movapd    %xmm3, %xmm1
+        mulsd     %xmm4, %xmm3
+        movapd    %xmm6, %xmm0
+        mulsd     %xmm4, %xmm6
+        subsd     %xmm3, %xmm1
+        subsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $960, %ecx
+        cmpl      $1104, %ecx
+        jae       .L_2TAG_PACKET_2.0.2
+        movapd    4176(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    4192(%ebx), %xmm3
+        mulpd     %xmm1, %xmm1
+        movapd    4208(%ebx), %xmm4
+        mulpd     %xmm1, %xmm2
+        pshufd    $68, %xmm1, %xmm5
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm5, %xmm5
+        mulpd     %xmm1, %xmm2
+        mulsd     %xmm5, %xmm5
+        addpd     %xmm4, %xmm2
+        mulpd     %xmm5, %xmm2
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        addl      $15344, %ecx
+        cmpl      $16448, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_4.0.2
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %eax
+        pinsrw    $3, %eax, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm2
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        movapd    %xmm0, %xmm2
+        mulsd     %xmm2, %xmm2
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm2, %xmm2
+        movl      $15344, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        movapd    %xmm2, %xmm3
+        mulsd     %xmm2, %xmm2
+        addsd     %xmm3, %xmm2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm0, %xmm0
+        orl       $16368, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_5.0.2:
+        movapd    %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_6.0.2
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_7.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(tanh)
+# -- End  tanh
+
+# Start file scope ASM
+ALIAS_SYMBOL(tanhl, tanh);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	1797923801
+	.long	1072687577
+	.long	1950547427
+	.long	1013229059
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	915592468
+	.long	1072676282
+	.long	352947894
+	.long	3161024371
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	35929225
+	.long	1072665048
+	.long	2809788041
+	.long	3159436968
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	2038973688
+	.long	1072653874
+	.long	892941374
+	.long	1016046459
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	1222472308
+	.long	1072642761
+	.long	1054357470
+	.long	3161021018
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	481706282
+	.long	1072631708
+	.long	1696079173
+	.long	3162710528
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	2719515920
+	.long	1072620714
+	.long	2760332941
+	.long	1015137933
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2256325230
+	.long	1072609780
+	.long	580117746
+	.long	1015317295
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	2009970496
+	.long	1072598905
+	.long	2159039665
+	.long	3162572948
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	610758006
+	.long	1072588089
+	.long	1965209397
+	.long	3161866232
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	991358482
+	.long	1072577331
+	.long	838715019
+	.long	3163157668
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	1796832535
+	.long	1072566631
+	.long	3176955716
+	.long	3160585513
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	1679558232
+	.long	1072555989
+	.long	2390342287
+	.long	3163333970
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	3594158869
+	.long	1072545404
+	.long	2456521700
+	.long	3163256561
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	1912561781
+	.long	1072534877
+	.long	3147495102
+	.long	1015678253
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3898795731
+	.long	1072524406
+	.long	1249994144
+	.long	1011869818
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	3939148246
+	.long	1072513992
+	.long	3210352148
+	.long	1015274323
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	721996136
+	.long	1072503635
+	.long	563754734
+	.long	1015371318
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1532734324
+	.long	1072493333
+	.long	3094216535
+	.long	3163162857
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	778901109
+	.long	1072483087
+	.long	2248183955
+	.long	3161268751
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	1464976603
+	.long	1072472896
+	.long	3507292405
+	.long	3161977534
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	2307442995
+	.long	1072462760
+	.long	3190117721
+	.long	3162404539
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	2029714210
+	.long	1072452679
+	.long	613660079
+	.long	1015099143
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3657065772
+	.long	1072442652
+	.long	399025623
+	.long	3162957078
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1631695677
+	.long	1072432680
+	.long	2717633076
+	.long	3162344026
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	3287523847
+	.long	1072422761
+	.long	1625971539
+	.long	3157009955
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	3080351519
+	.long	1072412896
+	.long	3379126788
+	.long	3157218001
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4062661092
+	.long	1072403084
+	.long	1422616006
+	.long	3163255318
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	703710506
+	.long	1072393326
+	.long	1384660846
+	.long	1015195891
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	364333489
+	.long	1072383620
+	.long	3923737744
+	.long	3161421373
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	1822067026
+	.long	1072373966
+	.long	1241994956
+	.long	1015340290
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	3861050111
+	.long	1072364364
+	.long	254893773
+	.long	3162813180
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	977020788
+	.long	1072354815
+	.long	3065100517
+	.long	1015541563
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	557149882
+	.long	1072345317
+	.long	3672720709
+	.long	1014537265
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	1405169241
+	.long	1072335870
+	.long	2998539689
+	.long	3162830951
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2331271250
+	.long	1072326474
+	.long	812057446
+	.long	1012207446
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	2152073944
+	.long	1072317129
+	.long	1486860576
+	.long	3163203456
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	3985553595
+	.long	1072307834
+	.long	4002146062
+	.long	1015834136
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	2366108318
+	.long	1072298590
+	.long	2867985102
+	.long	3161762254
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	424392917
+	.long	1072289396
+	.long	2749202995
+	.long	3162838718
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1297350157
+	.long	1072280251
+	.long	1308022040
+	.long	3163412558
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	3833209506
+	.long	1072271155
+	.long	2722920684
+	.long	1013754842
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	2591453363
+	.long	1072262109
+	.long	2132396182
+	.long	3159074198
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	727685349
+	.long	1072253112
+	.long	2038246809
+	.long	3162358742
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	1403662306
+	.long	1072244163
+	.long	2788809599
+	.long	3161671007
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	3492293770
+	.long	1072235262
+	.long	2248032210
+	.long	1015386826
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	1577608921
+	.long	1072226410
+	.long	1875489510
+	.long	3162968394
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	3134592888
+	.long	1072217605
+	.long	4232266862
+	.long	1015991134
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	2759350287
+	.long	1072208848
+	.long	1148526634
+	.long	1015894933
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	3643909174
+	.long	1072200138
+	.long	3537586109
+	.long	1014354647
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	396319521
+	.long	1072191476
+	.long	4172420816
+	.long	3159074632
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	515457527
+	.long	1072182860
+	.long	836709333
+	.long	1015651226
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	2916157145
+	.long	1072174290
+	.long	219487565
+	.long	1015309367
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	2224145553
+	.long	1072165767
+	.long	3482522030
+	.long	3161489169
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	1660913392
+	.long	1072157290
+	.long	4218599604
+	.long	1015135707
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	158781403
+	.long	1072148859
+	.long	2221464712
+	.long	3163286453
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	950803702
+	.long	1072140473
+	.long	1655364926
+	.long	1015237032
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	2980802057
+	.long	1072132132
+	.long	378619896
+	.long	1015773303
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	903334909
+	.long	1072123837
+	.long	1636462108
+	.long	1015039997
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	2263535754
+	.long	1072115586
+	.long	752233586
+	.long	3162639008
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	1727278727
+	.long	1072107380
+	.long	3562710623
+	.long	1011471940
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	2555984613
+	.long	1072099218
+	.long	2652555442
+	.long	3162552692
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	3721688645
+	.long	1072091100
+	.long	3069276937
+	.long	1015839401
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	4201977662
+	.long	1072083026
+	.long	748330254
+	.long	1013594357
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	2979960120
+	.long	1072074996
+	.long	2599109725
+	.long	1014498493
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	3339203574
+	.long	1072067009
+	.long	1483497780
+	.long	3162408754
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	4273770423
+	.long	1072059065
+	.long	3383180809
+	.long	3163218901
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	488188413
+	.long	1072051165
+	.long	3199821029
+	.long	1015564048
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3872257780
+	.long	1072043306
+	.long	1253592103
+	.long	1015958334
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	551349105
+	.long	1072035491
+	.long	3821916050
+	.long	3162106589
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2425981843
+	.long	1072027717
+	.long	2830390851
+	.long	3163346599
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	4222122499
+	.long	1072019985
+	.long	1277378074
+	.long	3163256737
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	671025100
+	.long	1072012296
+	.long	3832014351
+	.long	3163022030
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	3689071823
+	.long	1072004647
+	.long	2321004996
+	.long	3162552716
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3723038930
+	.long	1071997040
+	.long	378465264
+	.long	3162569582
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	4109806887
+	.long	1071989474
+	.long	422403966
+	.long	1014469229
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	3896463087
+	.long	1071981949
+	.long	1139797873
+	.long	3161233805
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	2135241198
+	.long	1071974465
+	.long	1236747871
+	.long	1013589147
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2178460671
+	.long	1071967021
+	.long	777878098
+	.long	3162842493
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3088564500
+	.long	1071959617
+	.long	1762311517
+	.long	1015045673
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	3933059031
+	.long	1071952253
+	.long	2133366768
+	.long	3161531832
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3784486610
+	.long	1071944929
+	.long	1581883040
+	.long	3161698953
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	1720398391
+	.long	1071937645
+	.long	3980678963
+	.long	3163300080
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1118294578
+	.long	1071930400
+	.long	2197495694
+	.long	3159909401
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	1065662932
+	.long	1071923194
+	.long	2533670915
+	.long	1014530238
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	654919306
+	.long	1071916027
+	.long	3232961757
+	.long	3163047469
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	3278348324
+	.long	1071908898
+	.long	3069497416
+	.long	1014750712
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	3743175029
+	.long	1071901808
+	.long	2072812490
+	.long	3162175075
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	1156440435
+	.long	1071894757
+	.long	2351451249
+	.long	1013967056
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	3219942644
+	.long	1071887743
+	.long	3798990616
+	.long	1015368806
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	460407023
+	.long	1071880768
+	.long	4237175092
+	.long	3163138469
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	589198666
+	.long	1071873830
+	.long	2664346172
+	.long	3163157962
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	2732492859
+	.long	1071866929
+	.long	2691479646
+	.long	3162255684
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	1726216749
+	.long	1071860066
+	.long	2466808228
+	.long	3161676405
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	1000925746
+	.long	1071853240
+	.long	1018491672
+	.long	3163309544
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	3991843581
+	.long	1071846450
+	.long	4092853457
+	.long	1014585763
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	1253935211
+	.long	1071839698
+	.long	1395382931
+	.long	3159702613
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	526652809
+	.long	1071832982
+	.long	4223459736
+	.long	1015879375
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	964107055
+	.long	1071826302
+	.long	2800439588
+	.long	3162833221
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	1724976915
+	.long	1071819658
+	.long	420909223
+	.long	3163117379
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	1972484976
+	.long	1071813050
+	.long	675290301
+	.long	3161640050
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	874372905
+	.long	1071806478
+	.long	100263788
+	.long	1015940732
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1897844341
+	.long	1071799941
+	.long	1254300460
+	.long	1015275938
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	4219606026
+	.long	1071793439
+	.long	2434574742
+	.long	1014681548
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2725843665
+	.long	1071786973
+	.long	1433917087
+	.long	1014838523
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	897099801
+	.long	1071780542
+	.long	754756297
+	.long	1015241005
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	2218315341
+	.long	1071774145
+	.long	2694295388
+	.long	3163288868
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	1588871207
+	.long	1071767783
+	.long	143439582
+	.long	3162963416
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2502433899
+	.long	1071761455
+	.long	2148595913
+	.long	1015023991
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	4162030108
+	.long	1071755161
+	.long	2763428480
+	.long	1015529349
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	1480023343
+	.long	1071748902
+	.long	2247196168
+	.long	1015327453
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	2257959872
+	.long	1071742676
+	.long	3802946148
+	.long	1012964927
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	1416741826
+	.long	1071736484
+	.long	2196380210
+	.long	1011413563
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2471440686
+	.long	1071730325
+	.long	968836267
+	.long	3162214888
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	351405227
+	.long	1071724200
+	.long	3125337328
+	.long	3159822479
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	2875075254
+	.long	1071718107
+	.long	4144233330
+	.long	3163333716
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	685187902
+	.long	1071712048
+	.long	378731989
+	.long	1014843115
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	1608493509
+	.long	1071706021
+	.long	3159622171
+	.long	3162807737
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	590962156
+	.long	1071700027
+	.long	3829346666
+	.long	3163275597
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1172597893
+	.long	1071694065
+	.long	114433263
+	.long	1015347593
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	2602514713
+	.long	1071688135
+	.long	2268929336
+	.long	1014354284
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	4133881824
+	.long	1071682237
+	.long	2148155345
+	.long	3162931299
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	728934454
+	.long	1071676372
+	.long	1413842688
+	.long	1014178612
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	238821257
+	.long	1071670538
+	.long	1469694871
+	.long	3162884987
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	1928746161
+	.long	1071664735
+	.long	983617676
+	.long	1014285177
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	772914124
+	.long	1071658964
+	.long	4004372762
+	.long	1012230161
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	339411585
+	.long	1071653224
+	.long	264588982
+	.long	3161636657
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	4200250559
+	.long	1071647514
+	.long	2808127345
+	.long	3161781938
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.long	1610612736
+	.long	1082594631
+	.long	4166901572
+	.long	1055174155
+	.long	3884607281
+	.long	3168131199
+	.long	3607404735
+	.long	3190582024
+	.long	1874480759
+	.long	1032041131
+	.long	4286760334
+	.long	1053736893
+	.long	4277811695
+	.long	3211144770
+	.long	0
+	.long	0
+	.long	236289503
+	.long	1064135997
+	.long	463583772
+	.long	3215696314
+	.long	1441186365
+	.long	3212977891
+	.long	286331153
+	.long	1069617425
+	.long	2284589306
+	.long	1066820852
+	.long	1431655765
+	.long	3218429269
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.long	4294705152
+	.long	4294967295
+	.long	4294705152
+	.long	4294967295
+	.long	4160749568
+	.long	2147483647
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	1073741824
+	.type	static_const_table,@object
+	.size	static_const_table,4280
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/sqrt.S b/libm/x86/sqrt.S
new file mode 100644
index 0000000..c9d434d
--- /dev/null
+++ b/libm/x86/sqrt.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(sqrt)
+	mov		%esp,%eax
+	and		$0xfffffff8,%eax
+	movsd	0x4(%esp),%xmm0
+	sqrtsd	%xmm0,%xmm0
+	movlpd	%xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(sqrt)
+
+ALIAS_SYMBOL(sqrtl, sqrt);
diff --git a/libm/x86/sqrtf.S b/libm/x86/sqrtf.S
new file mode 100644
index 0000000..78c183b
--- /dev/null
+++ b/libm/x86/sqrtf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(sqrtf)
+	movss  0x4(%esp),%xmm0
+	sqrtss %xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(sqrtf)
diff --git a/libm/x86/trunc.S b/libm/x86/trunc.S
new file mode 100644
index 0000000..da9d5fb
--- /dev/null
+++ b/libm/x86/trunc.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(trunc)
+	mov    %esp,%eax
+	and    $0xfffffff8,%eax
+	movsd  0x4(%esp),%xmm0
+	roundsd $0x3,%xmm0,%xmm0
+	movlpd %xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(trunc)
+
+ALIAS_SYMBOL(truncl, trunc);
diff --git a/libm/x86/truncf.S b/libm/x86/truncf.S
new file mode 100644
index 0000000..d3e3f4a
--- /dev/null
+++ b/libm/x86/truncf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(truncf)
+	movss  0x4(%esp),%xmm0
+	roundss $0x3,%xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(truncf)
diff --git a/libm/x86_64/ceil.S b/libm/x86_64/ceil.S
new file mode 100644
index 0000000..d4492c4
--- /dev/null
+++ b/libm/x86_64/ceil.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(ceil)
+roundsd $0x2,%xmm0,%xmm0
+retq
+END(ceil)
diff --git a/libm/x86_64/ceilf.S b/libm/x86_64/ceilf.S
new file mode 100644
index 0000000..0e1ca95
--- /dev/null
+++ b/libm/x86_64/ceilf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(ceilf)
+roundss $0x2,%xmm0,%xmm0
+retq
+END(ceilf)
diff --git a/libm/x86_64/e_acos.S b/libm/x86_64/e_acos.S
new file mode 100644
index 0000000..d83c66b
--- /dev/null
+++ b/libm/x86_64/e_acos.S
@@ -0,0 +1,1957 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute acos(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//       asin(r) evaluated as a polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: acos(s)=pi/2-asin(s)
+//              evaluate asin(s) as 13-degree polynomial
+//
+//  |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
+//  asin(q) is evaluated as 13-degree polynomial
+//      q^2=(1-|s|)/2 is obtained in advance
+//         2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//
+// Special cases:
+//  acos(NaN) = quiet NaN, and raise invalid exception
+//  acos(INF) = QNaN and raise invalid exception
+//  acos(x) = QNaN and raise invalid exception, for |x|>1.0
+//  acos(1) = +0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  acos
+ENTRY(acos)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_acos.1:
+        subq      $24, %rsp
+..___tag_value_acos.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movsd     ABSVALMASK(%rip), %xmm4
+        movsd     ONEMASK(%rip), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     TMASK(%rip), %xmm2
+        movq      %xmm0, %xmm1
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movq      %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movq      %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        lea       T_table(%rip), %r8
+        movsd     (%r8,%rdx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        lea       Tbl_addr(%rip), %r8
+        movapd    (%r8,%rdx,4), %xmm4
+        movq      %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movq      %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm7
+        movsd     24+cv(%rip), %xmm0
+        movsd     8+cv(%rip), %xmm5
+        subsd     %xmm3, %xmm1
+        psrlq     $63, %xmm2
+        movq      %xmm1, %xmm3
+        psllq     $63, %xmm2
+        mulsd     %xmm1, %xmm1
+        pshufd    $68, %xmm2, %xmm2
+        movsd     16+cv(%rip), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm3, %xmm5
+        subpd     PI_BY_2(%rip), %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm0
+        subsd     %xmm4, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        subl      $955, %eax
+        cmpl      $65, %eax
+        jae       .L_2TAG_PACKET_1.0.2
+        psrlq     $38, %xmm7
+        psllq     $38, %xmm7
+        pmovmskb  %xmm0, %eax
+        andnpd    %xmm0, %xmm4
+        subsd     %xmm7, %xmm1
+        movq      %xmm7, %xmm6
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        orpd      %xmm4, %xmm5
+        subsd     %xmm7, %xmm3
+        mulsd     %xmm1, %xmm0
+        movq      %xmm3, %xmm4
+        subsd     %xmm0, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andl      $128, %eax
+        shrl      $7, %eax
+        negl      %eax
+        movq      %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        movd      %eax, %xmm3
+        pshufd    $0, %xmm3, %xmm3
+        subl      $65216, %edx
+        addl      %edx, %edx
+        lea       T_table(%rip), %r8
+        mulsd     (%r8,%rdx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        andpd     NEG_PI(%rip), %xmm3
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     8+cv(%rip), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     24+cv(%rip), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     16+cv(%rip), %xmm2
+        lea       Tbl_addr(%rip), %r8
+        addpd     (%r8,%rdx,8), %xmm3
+        movq      %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        movq      %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        addsd     %xmm3, %xmm4
+        subsd     %xmm4, %xmm3
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        addsd     %xmm4, %xmm0
+        xorpd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        unpcklpd  %xmm0, %xmm0
+        movapd    cv2(%rip), %xmm6
+        unpcklpd  %xmm0, %xmm1
+        movapd    16+cv2(%rip), %xmm2
+        movapd    32+cv2(%rip), %xmm4
+        mulpd     %xmm0, %xmm0
+        movapd    PI_BY_2(%rip), %xmm5
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm0
+        movq      %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        addpd     %xmm2, %xmm6
+        mulpd     %xmm0, %xmm4
+        mulsd     %xmm3, %xmm1
+        addpd     %xmm4, %xmm6
+        pshufd    $238, %xmm5, %xmm0
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        subsd     %xmm7, %xmm0
+        pshufd    $238, %xmm1, %xmm2
+        subsd     %xmm1, %xmm5
+        subsd     %xmm0, %xmm6
+        subsd     %xmm2, %xmm5
+        subsd     %xmm6, %xmm7
+        subsd     %xmm7, %xmm5
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        subl      $15356, %eax
+        cmpl      $4, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        xorpd     %xmm6, %xmm6
+        andpd     ABSVALMASK(%rip), %xmm7
+        movsd     ONE_BY_2(%rip), %xmm4
+        movapd    cv2(%rip), %xmm1
+        mulsd     %xmm4, %xmm7
+        movapd    16+cv2(%rip), %xmm2
+        subsd     %xmm7, %xmm4
+        movapd    32+cv2(%rip), %xmm3
+        pshufd    $68, %xmm4, %xmm7
+        sqrtsd    %xmm4, %xmm4
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm7, %xmm5
+        pextrw    $3, %xmm0, %eax
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm1, %xmm2
+        movsd     HALFMASK(%rip), %xmm1
+        mulpd     %xmm7, %xmm3
+        cmpsd     $1, %xmm6, %xmm0
+        mulsd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm2
+        pshufd    $68, %xmm0, %xmm0
+        mulsd     %xmm7, %xmm2
+        andpd     NEG_PI(%rip), %xmm0
+        mulpd     %xmm5, %xmm2
+        andpd     %xmm4, %xmm1
+        pshufd    $68, %xmm4, %xmm3
+        subsd     %xmm1, %xmm4
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm4, %xmm3
+        subsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm4
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm4, %xmm5
+        divsd     %xmm3, %xmm5
+        addpd     %xmm3, %xmm3
+        mulpd     %xmm3, %xmm2
+        pshufd    $238, %xmm2, %xmm4
+        addsd     %xmm0, %xmm2
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm0, %xmm0
+        addsd     %xmm4, %xmm2
+        addsd     %xmm5, %xmm2
+        addsd     %xmm3, %xmm2
+        addsd     %xmm2, %xmm0
+        xorpd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        addl      $261884, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_4.0.2
+        movd      %xmm7, %ecx
+        psrlq     $32, %xmm7
+        movd      %xmm7, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_5.0.2
+        movsd     (%rsp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_6.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_5.0.2:
+        pextrw    $1, %xmm7, %edx
+        shrl      $15, %edx
+        negl      %edx
+        movd      %edx, %xmm7
+        pshufd    $0, %xmm7, %xmm7
+        movsd     PI(%rip), %xmm2
+        movsd     8+PI(%rip), %xmm0
+        andpd     %xmm7, %xmm2
+        andpd     %xmm7, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        movsd     PI_BY_2(%rip), %xmm2
+        movsd     8+PI_BY_2(%rip), %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm6, %xmm6
+        addsd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_7.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_8.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_acos.4:
+        ret       
+..___tag_value_acos.5:
+END(acos)
+# -- End  acos
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ABSVALMASK:
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.type	ABSVALMASK,@object
+	.size	ABSVALMASK,16
+	.align 16
+T_table:
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.type	T_table,@object
+	.size	T_table,2048
+	.align 16
+Tbl_addr:
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,3840
+	.space 768, 0x00 	# pad
+	.align 16
+cv:
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	3217380693
+	.long	858993459
+	.long	3216192307
+	.long	3067833783
+	.long	3215383405
+	.type	cv,@object
+	.size	cv,32
+	.align 16
+PI_BY_2:
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.type	PI_BY_2,@object
+	.size	PI_BY_2,16
+	.align 16
+NEG_PI:
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.type	NEG_PI,@object
+	.size	NEG_PI,16
+	.align 16
+cv2:
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.type	cv2,@object
+	.size	cv2,64
+	.align 16
+HALFMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.type	HALFMASK,@object
+	.size	HALFMASK,16
+	.align 16
+PI:
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.type	PI,@object
+	.size	PI,16
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+TMASK:
+	.long	0
+	.long	4294950912
+	.type	TMASK,@object
+	.size	TMASK,8
+	.align 4
+ONE_BY_2:
+	.long	0
+	.long	1071644672
+	.type	ONE_BY_2,@object
+	.size	ONE_BY_2,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_acos.1-.
+	.4byte ..___tag_value_acos.5-..___tag_value_acos.1
+	.2byte 0x0400
+	.4byte ..___tag_value_acos.3-..___tag_value_acos.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_acos.4-..___tag_value_acos.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_asin.S b/libm/x86_64/e_asin.S
new file mode 100644
index 0000000..9f41c7c
--- /dev/null
+++ b/libm/x86_64/e_asin.S
@@ -0,0 +1,2036 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute asin(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//       asin(r) evaluated as polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: evaluate as 13-degree polynomial
+//
+//  |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
+//         use 17-degree polynomial, get error term
+//         Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
+//                 ( Q(1+eps)=sqrt(1-s^2) )
+//
+// Special cases:
+//  asin(NaN) = quiet NaN, and raise invalid exception
+//  asin(INF) = QNaN and raise invalid exception
+//  asin(x) = QNaN and raise invalid exception, for |x|>1.0
+//  asin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  asin
+ENTRY(asin)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_asin.1:
+        subq      $24, %rsp
+..___tag_value_asin.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        stmxcsr   16(%rsp)
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        jne       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     ABSVALMASK(%rip), %xmm4
+        movsd     ONEMASK(%rip), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     TMASK(%rip), %xmm2
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movq      %xmm0, %xmm1
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movq      %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movq      %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        lea       T_table(%rip), %r8
+        movsd     (%r8,%rdx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        lea       Tbl_addr(%rip), %r8
+        movapd    (%r8,%rdx,4), %xmm4
+        movq      %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movq      %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm0
+        movsd     16+cv(%rip), %xmm7
+        movsd     cv(%rip), %xmm5
+        subsd     %xmm3, %xmm1
+        andpd     SIGNMASK(%rip), %xmm2
+        movq      %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        movsd     8+cv(%rip), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm7
+        mulsd     %xmm3, %xmm5
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm6
+        mulsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm6
+        orpd      %xmm2, %xmm4
+        addsd     %xmm6, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_3.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_3.0.2:
+        addsd     %xmm4, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        subl      $955, %eax
+        cmpl      $67, %eax
+        jae       .L_2TAG_PACKET_4.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     ABSVALMASK(%rip), %xmm0
+        andpd     HALFMASK2(%rip), %xmm7
+        movq      %xmm0, %xmm1
+        movsd     ONEMASK(%rip), %xmm4
+        movq      %xmm7, %xmm6
+        subsd     %xmm7, %xmm1
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        subsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm0
+        movq      %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        subl      $65216, %edx
+        addl      %edx, %edx
+        lea       T_table(%rip), %r8
+        mulsd     (%r8,%rdx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        movapd    PI_BY_2(%rip), %xmm3
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     cv(%rip), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     16+cv(%rip), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     8+cv(%rip), %xmm2
+        lea       Tbl_addr(%rip), %r8
+        subpd     (%r8,%rdx,8), %xmm3
+        movq      %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        andl      $524288, %eax
+        shrl      $4, %eax
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        pinsrw    $3, %eax, %xmm6
+        addsd     %xmm5, %xmm0
+        movq      %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm3
+        subsd     %xmm3, %xmm5
+        subsd     %xmm5, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_5.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm4
+        subsd     %xmm4, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_6.0.2
+        unpcklpd  %xmm7, %xmm7
+        movapd    cv2(%rip), %xmm1
+        movapd    %xmm7, %xmm6
+        movapd    16+cv2(%rip), %xmm2
+        movapd    32+cv2(%rip), %xmm4
+        mulpd     %xmm7, %xmm7
+        mulpd     %xmm7, %xmm6
+        mulpd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        movq      %xmm6, %xmm3
+        mulsd     %xmm6, %xmm6
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm6
+        addpd     %xmm4, %xmm1
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        addsd     %xmm2, %xmm1
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_7.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_7.0.2:
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        subl      $15358, %eax
+        cmpl      $2, %eax
+        jae       .L_2TAG_PACKET_8.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     HALFMASK(%rip), %xmm7
+        pshufd    $68, %xmm3, %xmm5
+        andpd     HALFMASK(%rip), %xmm3
+        movq      %xmm7, %xmm1
+        movsd     ONEMASK(%rip), %xmm4
+        movq      %xmm7, %xmm6
+        subsd     %xmm7, %xmm0
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm1
+        subsd     %xmm7, %xmm4
+        movq      %xmm3, %xmm6
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm0, %xmm0
+        subsd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm6
+        addsd     %xmm5, %xmm5
+        subsd     %xmm3, %xmm4
+        movapd    cv2(%rip), %xmm2
+        pshufd    $238, %xmm5, %xmm3
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm5
+        pshufd    $238, %xmm3, %xmm7
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm6, %xmm5
+        addsd     %xmm5, %xmm4
+        pshufd    $238, %xmm7, %xmm6
+        divsd     %xmm3, %xmm4
+        movapd    48+cv2(%rip), %xmm1
+        movapd    16+cv2(%rip), %xmm5
+        movapd    32+cv2(%rip), %xmm0
+        mulpd     %xmm7, %xmm7
+        movq      %xmm6, %xmm3
+        mulpd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm6
+        shrl      $4, %eax
+        andl      $32768, %eax
+        mulsd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm2, %xmm5
+        movapd    %xmm6, %xmm2
+        mulsd     %xmm6, %xmm6
+        mulpd     %xmm0, %xmm7
+        movapd    PI_BY_2(%rip), %xmm0
+        mulsd     %xmm6, %xmm2
+        addpd     %xmm5, %xmm7
+        pshufd    $238, %xmm1, %xmm5
+        mulsd     %xmm2, %xmm6
+        mulpd     %xmm2, %xmm7
+        addsd     %xmm5, %xmm1
+        xorpd     %xmm5, %xmm5
+        pshufd    $238, %xmm7, %xmm2
+        mulsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm2, %xmm7
+        movq      %xmm3, %xmm2
+        pinsrw    $3, %eax, %xmm5
+        subsd     %xmm6, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm7
+        subsd     %xmm6, %xmm2
+        subsd     %xmm7, %xmm0
+        subsd     %xmm2, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_9.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_9.0.2:
+        xorpd     %xmm5, %xmm0
+        xorpd     %xmm5, %xmm3
+        subsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_8.0.2:
+        addl      $261886, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_10.0.2
+        movd      %xmm0, %ecx
+        psrlq     $32, %xmm0
+        movd      %xmm0, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_11.0.2
+        movsd     (%rsp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_10.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_12.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     ABSVALMASK(%rip), %xmm1
+        movsd     PI_BY_2(%rip), %xmm2
+        movsd     8+PI_BY_2(%rip), %xmm0
+        addsd     %xmm2, %xmm0
+        andnpd    %xmm7, %xmm1
+        orpd      %xmm1, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_13.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_13.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_10.0.2:
+        movsd     (%rsp), %xmm0
+        xorpd     %xmm6, %xmm6
+        movq      %xmm0, %xmm7
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_14.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_14.0.2:
+        pextrw    $3, %xmm0, %edx
+        andl      $32752, %edx
+        subl      $16, %edx
+        cmpl      $32736, %edx
+        jb        .L_2TAG_PACKET_15.0.2
+        addsd     %xmm0, %xmm6
+        orpd      %xmm6, %xmm0
+        mulsd     %xmm0, %xmm7
+.L_2TAG_PACKET_15.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movl      %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_12.0.2:
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_16.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_16.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_17.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_asin.4:
+        ret       
+..___tag_value_asin.5:
+END(asin)
+# -- End  asin
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ABSVALMASK:
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.type	ABSVALMASK,@object
+	.size	ABSVALMASK,16
+	.align 16
+T_table:
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.type	T_table,@object
+	.size	T_table,2048
+	.align 16
+Tbl_addr:
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,3840
+	.space 768, 0x00 	# pad
+	.align 16
+SIGNMASK:
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.type	SIGNMASK,@object
+	.size	SIGNMASK,16
+	.align 16
+HALFMASK2:
+	.long	0
+	.long	2147483584
+	.long	0
+	.long	0
+	.type	HALFMASK2,@object
+	.size	HALFMASK2,16
+	.align 16
+PI_BY_2:
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.type	PI_BY_2,@object
+	.size	PI_BY_2,16
+	.align 16
+cv2:
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.type	cv2,@object
+	.size	cv2,64
+	.align 16
+HALFMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.type	HALFMASK,@object
+	.size	HALFMASK,16
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+TMASK:
+	.long	0
+	.long	4294950912
+	.type	TMASK,@object
+	.size	TMASK,8
+	.align 4
+cv:
+	.long	1431655765
+	.long	1069897045
+	.long	858993459
+	.long	1068708659
+	.long	3067833783
+	.long	1067899757
+	.type	cv,@object
+	.size	cv,24
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_asin.1-.
+	.4byte ..___tag_value_asin.5-..___tag_value_asin.1
+	.2byte 0x0400
+	.4byte ..___tag_value_asin.3-..___tag_value_asin.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_asin.4-..___tag_value_asin.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_atan2.S b/libm/x86_64/e_atan2.S
new file mode 100644
index 0000000..f9baea9
--- /dev/null
+++ b/libm/x86_64/e_atan2.S
@@ -0,0 +1,1242 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//
+//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
+//   as follows.
+//                   /  sign(Y) atan(|Y/X|)                if X > 0
+//       atan2(Y,X) =
+//                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
+//
+//   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
+//   where PI and sgn can be determined by the four possible combinations of
+//   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
+//   for atan(|Y/X|).
+//
+//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
+//   if X > 0, and sign(Y)*pi otherwise.
+//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
+//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
+//   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
+//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
+//   calculated using the polynomial in 4 above.
+//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
+//   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
+//   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
+//
+//      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
+//                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
+//
+//   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
+//   163 possible values. These values are calculated beforehand and stored
+//   in a table. The polynomial is the one used in 4.
+//
+// Special cases:
+//  atan2(+-0, +0) = +-0
+//  atan2(+-0, -0) = +-pi
+//  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
+//  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
+//  atan2(+-y, +INF) = +-0, for finite y > 0
+//  atan2(+-y, -INF) = +-pi, for finite y > 0
+//  atan2(+-INF, x) = +-pi/2, for finite x
+//  atan2(+-INF, +INF) = +-pi/4
+//  atan2(+-INF, -INF) = +-3*pi/4
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  atan2
+ENTRY(atan2)
+# parameter 1: %xmm0
+# parameter 2: %xmm1
+..B1.1:
+..___tag_value_atan2.1:
+        subq      $24, %rsp
+..___tag_value_atan2.3:
+        movsd     %xmm0, (%rsp)
+        movsd     %xmm1, 8(%rsp)
+..B1.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        unpcklpd  %xmm1, %xmm0
+        xorpd     %xmm5, %xmm5
+        xorpd     %xmm3, %xmm3
+        movl      $2048, %eax
+        pinsrw    $3, %eax, %xmm5
+        paddw     %xmm1, %xmm5
+        psrlq     $29, %xmm5
+        rcpss     %xmm5, %xmm3
+        xorpd     %xmm4, %xmm4
+        movl      $14336, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        psllq     $29, %xmm3
+        paddw     %xmm4, %xmm3
+        mulsd     %xmm0, %xmm3
+        xorpd     %xmm2, %xmm2
+        xorpd     %xmm6, %xmm6
+        xorpd     %xmm7, %xmm7
+        movl      $32768, %eax
+        pinsrw    $2, %eax, %xmm6
+        movl      $32767, %ecx
+        pinsrw    $3, %ecx, %xmm7
+        paddd     %xmm6, %xmm3
+        andpd     %xmm7, %xmm3
+        movq      %xmm3, %xmm5
+        pextrw    $3, %xmm3, %eax
+        movl      $16448, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        minsd     %xmm2, %xmm3
+        movmskpd  %xmm0, %edx
+        psllq     $1, %xmm0
+        psrlq     $1, %xmm0
+        cmpsd     $2, %xmm2, %xmm5
+        psllq     $1, %xmm1
+        psrlq     $1, %xmm1
+        movq      %xmm1, %xmm6
+        movq      %xmm1, %xmm7
+        movq      %xmm0, %xmm2
+        movl      $0, %ecx
+        pinsrw    $0, %ecx, %xmm6
+        subsd     %xmm6, %xmm7
+        movq      %xmm0, %xmm4
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        mulsd     %xmm3, %xmm7
+        andpd     %xmm5, %xmm0
+        subsd     %xmm6, %xmm0
+        andpd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm4
+        subsd     %xmm7, %xmm0
+        andl      $32752, %eax
+        subl      $16286, %eax
+        cmpl      $1121, %eax
+        ja        .L_2TAG_PACKET_3.0.2
+        divsd     %xmm4, %xmm0
+        pextrw    $3, %xmm3, %ecx
+        movsd     a2(%rip), %xmm2
+        movsd     b2(%rip), %xmm3
+        pextrw    $0, %xmm5, %eax
+        addl      %edx, %edx
+        lea       P_TBL(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm6
+        lea       SGN_TBL(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm1
+        subl      $16286, %ecx
+        notl      %eax
+        andl      $1, %eax
+        addl      %eax, %ecx
+        addl      %ecx, %ecx
+        lea       ATAN_TBL(%rip), %r8
+        movapd    (%r8,%rcx,8), %xmm5
+        xorpd     %xmm1, %xmm5
+        addpd     %xmm6, %xmm5
+        movq      %xmm5, %xmm6
+        unpckhpd  %xmm5, %xmm5
+        xorpd     %xmm0, %xmm1
+        movq      %xmm1, %xmm4
+        mulsd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm3
+        addsd     %xmm6, %xmm1
+        subsd     %xmm1, %xmm6
+        addsd     %xmm4, %xmm6
+        addsd     8+a2(%rip), %xmm2
+        mulsd     %xmm0, %xmm3
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm2, %xmm0
+        addsd     8+b2(%rip), %xmm3
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm0
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        addl      $942, %eax
+        cmpl      $942, %eax
+        ja        .L_2TAG_PACKET_4.0.2
+        xorpd     %xmm4, %xmm4
+        movl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        divsd     %xmm1, %xmm4
+        addl      %edx, %edx
+        lea       SGN_TBL(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm6
+        unpcklpd  %xmm3, %xmm3
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm2
+        xorpd     %xmm6, %xmm3
+        lea       P_TBL2(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm7
+        movsd     a2(%rip), %xmm1
+        movsd     b2(%rip), %xmm5
+        lea       SELECT_B(%rip), %r8
+        andpd     (%r8,%rdx,8), %xmm3
+        mulsd     %xmm4, %xmm2
+        mulsd     %xmm4, %xmm0
+        movq      %xmm2, %xmm6
+        mulsd     %xmm2, %xmm2
+        mulsd     %xmm2, %xmm1
+        addsd     %xmm2, %xmm5
+        mulsd     %xmm2, %xmm6
+        addsd     8+a2(%rip), %xmm1
+        mulsd     %xmm2, %xmm5
+        addsd     %xmm0, %xmm7
+        addpd     %xmm3, %xmm7
+        mulsd     %xmm6, %xmm1
+        addsd     8+b2(%rip), %xmm5
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm5
+        pshufd    $238, %xmm7, %xmm0
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        movsd     8(%rsp), %xmm1
+        movsd     (%rsp), %xmm0
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      %eax, %ecx
+        jg        .L_2TAG_PACKET_5.0.2
+        pextrw    $3, %xmm1, %ecx
+        cmpl      $32767, %ecx
+        jg        .L_2TAG_PACKET_6.0.2
+        divsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        andpd     SGNMASK(%rip), %xmm0
+        movsd     pi_table(%rip), %xmm2
+        xorpd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        andpd     SGNMASK(%rip), %xmm0
+        movsd     pi2_table(%rip), %xmm2
+        xorpd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+.L_2TAG_PACKET_1.0.2:
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_7.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_8.0.2
+        movsd     POW55(%rip), %xmm3
+        movl      $1024, %edx
+        movsd     INVEXPMASK(%rip), %xmm4
+        xorpd     %xmm6, %xmm6
+        movsd     EXPMASK(%rip), %xmm7
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_10.0.2:
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_11.0.2
+.L_2TAG_PACKET_12.0.2:
+        addl      %ecx, %edx
+        subl      %eax, %edx
+        cmpl      $2048, %edx
+        ja        .L_2TAG_PACKET_4.0.2
+        addl      $15344, %edx
+        pinsrw    $3, %edx, %xmm6
+        andpd     %xmm4, %xmm0
+        andpd     %xmm4, %xmm1
+        orpd      %xmm6, %xmm0
+        orpd      %xmm7, %xmm1
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_9.0.2:
+        subl      $880, %edx
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_13.0.2
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_11.0.2:
+        addl      $880, %edx
+        mulsd     %xmm3, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_14.0.2
+        jmp       .L_2TAG_PACKET_12.0.2
+.L_2TAG_PACKET_7.0.2:
+        movd      %xmm0, %edx
+        movq      %xmm0, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $1048575, %ecx
+        orl       %edx, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_15.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $32752, %eax
+        jae       .L_2TAG_PACKET_16.0.2
+        movapd    pi2_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_15.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_16.0.2:
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_17.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_18.0.2
+        movapd    pi4_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_17.0.2:
+        movq      %xmm1, %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_18.0.2:
+        movapd    pi4_table(%rip), %xmm5
+        movapd    pi2_table(%rip), %xmm6
+        addpd     %xmm6, %xmm5
+        pshufd    $238, %xmm5, %xmm6
+        addpd     %xmm6, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_8.0.2:
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_17.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_19.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_19.0.2:
+        movapd    pi_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_13.0.2:
+        pextrw    $3, %xmm1, %edx
+        andl      $32768, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_20.0.2
+        movapd    pi_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        comisd    %xmm0, %xmm1
+        orpd      %xmm5, %xmm0
+        je        .L_2TAG_PACKET_21.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_20.0.2:
+        comisd    %xmm0, %xmm1
+        je        .L_2TAG_PACKET_21.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_14.0.2:
+        movapd    pi2_table(%rip), %xmm5
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_21.0.2:
+        movq      %xmm0, 16(%rsp)
+..B1.3:
+        movq      16(%rsp), %xmm0
+.L_2TAG_PACKET_22.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_atan2.4:
+        ret       
+..___tag_value_atan2.5:
+END(atan2)
+# -- End  atan2
+	.section .rodata, "a"
+	.align 16
+	.align 16
+a2:
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.type	a2,@object
+	.size	a2,16
+	.align 16
+b2:
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.type	b2,@object
+	.size	b2,16
+	.align 16
+P_TBL:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	3221823995
+	.long	856972295
+	.long	3164710438
+	.type	P_TBL,@object
+	.size	P_TBL,64
+	.align 16
+SGN_TBL:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.type	SGN_TBL,@object
+	.size	SGN_TBL,64
+	.align 16
+ATAN_TBL:
+	.long	3390881280
+	.long	1067318733
+	.long	1411116779
+	.long	1018950063
+	.long	2985987840
+	.long	1067384211
+	.long	2088903695
+	.long	1018086027
+	.long	3148445184
+	.long	1067449685
+	.long	2044163806
+	.long	1017271335
+	.long	3667629184
+	.long	1067515494
+	.long	2353092775
+	.long	1019967309
+	.long	1546568832
+	.long	1067580954
+	.long	611991315
+	.long	1017602584
+	.long	3815996800
+	.long	1067646404
+	.long	466038598
+	.long	1019686426
+	.long	4050241920
+	.long	1067711845
+	.long	3265026328
+	.long	1019626952
+	.long	120454912
+	.long	1067777277
+	.long	1542207696
+	.long	1020155608
+	.long	2784639744
+	.long	1067842697
+	.long	3883834623
+	.long	1018602870
+	.long	1328010624
+	.long	1067908107
+	.long	1791097456
+	.long	1019053126
+	.long	2217794048
+	.long	1067973505
+	.long	551619938
+	.long	1018494194
+	.long	3333520000
+	.long	1068038891
+	.long	2390331823
+	.long	1019033022
+	.long	2557052032
+	.long	1068104265
+	.long	2423976108
+	.long	1019728674
+	.long	2067649536
+	.long	1068169626
+	.long	3757397745
+	.long	1018672362
+	.long	4047094784
+	.long	1068234973
+	.long	481613184
+	.long	1019275104
+	.long	2089853184
+	.long	1068300307
+	.long	1733914374
+	.long	1020124677
+	.long	2678003840
+	.long	1068365626
+	.long	1373600282
+	.long	1013935474
+	.long	3706496128
+	.long	1068430930
+	.long	1000610902
+	.long	1019673285
+	.long	3073179008
+	.long	1068496219
+	.long	1497143008
+	.long	1019900342
+	.long	2803716736
+	.long	1068562846
+	.long	1476677416
+	.long	1019444094
+	.long	3204984128
+	.long	1068628077
+	.long	1192335905
+	.long	1018748628
+	.long	831146624
+	.long	1068693273
+	.long	2733586224
+	.long	1018823295
+	.long	243029376
+	.long	1068758431
+	.long	950106081
+	.long	1019046675
+	.long	1735561920
+	.long	1068823549
+	.long	3546440856
+	.long	1020104712
+	.long	1339217792
+	.long	1068888626
+	.long	3028812387
+	.long	1019818321
+	.long	3706342144
+	.long	1068953659
+	.long	3814564029
+	.long	1017763871
+	.long	637726976
+	.long	1069018648
+	.long	3584007699
+	.long	1017976868
+	.long	1148779264
+	.long	1069083589
+	.long	2282532133
+	.long	1019483954
+	.long	1406131392
+	.long	1069148481
+	.long	1547359113
+	.long	1019786342
+	.long	1908875904
+	.long	1069213322
+	.long	1315508410
+	.long	1020009473
+	.long	3194947520
+	.long	1069278110
+	.long	3845393201
+	.long	1015803761
+	.long	1547487744
+	.long	1069342844
+	.long	3863107865
+	.long	1019810104
+	.long	1881061952
+	.long	1069407521
+	.long	4288343548
+	.long	1019687581
+	.long	563086336
+	.long	1069472140
+	.long	2582230241
+	.long	1020099350
+	.long	2594975552
+	.long	1069536698
+	.long	2306443764
+	.long	1019667244
+	.long	3438545024
+	.long	1069606573
+	.long	957455549
+	.long	1015587735
+	.long	4211357472
+	.long	1069670906
+	.long	2611778754
+	.long	1017877214
+	.long	3002835424
+	.long	1069735101
+	.long	235580458
+	.long	1020211685
+	.long	3905315424
+	.long	1069799150
+	.long	3630647617
+	.long	1018736849
+	.long	2849656576
+	.long	1069863047
+	.long	2412165062
+	.long	1019693004
+	.long	507429472
+	.long	1069926785
+	.long	1397750723
+	.long	1018412717
+	.long	2307470272
+	.long	1069990356
+	.long	1796470904
+	.long	1019796181
+	.long	1271814912
+	.long	1070053755
+	.long	189761565
+	.long	1016149115
+	.long	3800538144
+	.long	1070116974
+	.long	2524871582
+	.long	1018263353
+	.long	3916203552
+	.long	1070180008
+	.long	127848658
+	.long	1017672664
+	.long	457192032
+	.long	1070242851
+	.long	4020400938
+	.long	1019823010
+	.long	1385324704
+	.long	1070305495
+	.long	564511179
+	.long	1016079094
+	.long	2322869856
+	.long	1070367935
+	.long	2347103319
+	.long	1018927760
+	.long	3743438624
+	.long	1070430165
+	.long	877973862
+	.long	1019638162
+	.long	2392255552
+	.long	1070492180
+	.long	2432782267
+	.long	1018872629
+	.long	4180443328
+	.long	1070553973
+	.long	3102990015
+	.long	1020093101
+	.long	2547540832
+	.long	1070636485
+	.long	3877738253
+	.long	1017300424
+	.long	2735468912
+	.long	1070697461
+	.long	2446470256
+	.long	1019235378
+	.long	542633792
+	.long	1070757943
+	.long	583606328
+	.long	1018624131
+	.long	923265984
+	.long	1070817911
+	.long	1793926708
+	.long	1019714161
+	.long	918728448
+	.long	1070877348
+	.long	3726463586
+	.long	1019433296
+	.long	2572275008
+	.long	1070936237
+	.long	1845354238
+	.long	1019459238
+	.long	50974688
+	.long	1070994564
+	.long	983808064
+	.long	1016685418
+	.long	1105518320
+	.long	1071052313
+	.long	2357496692
+	.long	1015139882
+	.long	1264825328
+	.long	1071109472
+	.long	2244129354
+	.long	1019046344
+	.long	961157920
+	.long	1071166029
+	.long	3124185339
+	.long	1018541776
+	.long	1162701584
+	.long	1071221973
+	.long	1279780948
+	.long	1019268918
+	.long	3284935664
+	.long	1071277294
+	.long	2670033472
+	.long	1019833744
+	.long	497441888
+	.long	1071331985
+	.long	1032737410
+	.long	1019795212
+	.long	3377383904
+	.long	1071386036
+	.long	2356897182
+	.long	1020205553
+	.long	1126962000
+	.long	1071439443
+	.long	3723724586
+	.long	1015212418
+	.long	90291008
+	.long	1071492199
+	.long	4178672431
+	.long	1020186971
+	.long	190059536
+	.long	1071595741
+	.long	1763589807
+	.long	1019162163
+	.long	2497392840
+	.long	1071670654
+	.long	3036997041
+	.long	1020204325
+	.long	2616971944
+	.long	1071719773
+	.long	300151069
+	.long	1017041957
+	.long	2883518128
+	.long	1071767563
+	.long	2203981414
+	.long	1019190108
+	.long	1496354352
+	.long	1071814030
+	.long	332287966
+	.long	1016846435
+	.long	483276728
+	.long	1071859184
+	.long	653845024
+	.long	1018830914
+	.long	3097401072
+	.long	1071903039
+	.long	1514746408
+	.long	1019278972
+	.long	2737217248
+	.long	1071945615
+	.long	1358845067
+	.long	1017268275
+	.long	2072577560
+	.long	1071986933
+	.long	3041024735
+	.long	1019929672
+	.long	2266405656
+	.long	1072027017
+	.long	1271261130
+	.long	1012925070
+	.long	958652544
+	.long	1072065894
+	.long	2158017058
+	.long	1019955372
+	.long	3312993840
+	.long	1072103591
+	.long	765809169
+	.long	1019114443
+	.long	3177001304
+	.long	1072140139
+	.long	144180084
+	.long	1019822186
+	.long	3071642184
+	.long	1072175568
+	.long	4004602424
+	.long	1019420740
+	.long	4283953648
+	.long	1072209909
+	.long	1511950430
+	.long	1020176966
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.long	4073202944
+	.long	1072306725
+	.long	4068194804
+	.long	1019714860
+	.long	946117760
+	.long	1072366415
+	.long	694980733
+	.long	1020150135
+	.long	3980632032
+	.long	1072422512
+	.long	1313251280
+	.long	1019948709
+	.long	1468297112
+	.long	1072475260
+	.long	330111143
+	.long	1019809198
+	.long	3478063816
+	.long	1072524887
+	.long	2930067044
+	.long	1017784081
+	.long	1153979856
+	.long	1072571613
+	.long	2225786102
+	.long	1017634481
+	.long	2089828808
+	.long	1072615641
+	.long	474621367
+	.long	1017043414
+	.long	3531732632
+	.long	1072657163
+	.long	2276396220
+	.long	1018757240
+	.long	775214612
+	.long	1072694803
+	.long	3209744818
+	.long	1019963015
+	.long	662307284
+	.long	1072713319
+	.long	1381696763
+	.long	1019763781
+	.long	1192776652
+	.long	1072730830
+	.long	3017932994
+	.long	1015179769
+	.long	744202396
+	.long	1072747407
+	.long	2073854034
+	.long	1019512292
+	.long	8337908
+	.long	1072763115
+	.long	16004448
+	.long	1019599514
+	.long	3589868768
+	.long	1072778013
+	.long	1374369804
+	.long	1018019237
+	.long	121647320
+	.long	1072792159
+	.long	128481634
+	.long	1018115438
+	.long	2464923204
+	.long	1072805601
+	.long	1787331214
+	.long	1016798022
+	.long	4093304372
+	.long	1072830562
+	.long	3306868969
+	.long	1019384078
+	.long	1436891684
+	.long	1072853231
+	.long	676347266
+	.long	1017302183
+	.long	1104571840
+	.long	1072873890
+	.long	2870400285
+	.long	1019938149
+	.long	2037009832
+	.long	1072892781
+	.long	2956702105
+	.long	1016472908
+	.long	3139037960
+	.long	1072910111
+	.long	916057147
+	.long	1018364335
+	.long	1826698064
+	.long	1072926058
+	.long	2171961098
+	.long	1019669816
+	.long	1353941060
+	.long	1072940774
+	.long	1722928782
+	.long	1019926215
+	.long	1803191644
+	.long	1072954391
+	.long	1547878639
+	.long	1020259262
+	.long	1092591296
+	.long	1072967024
+	.long	3070107923
+	.long	1018320401
+	.long	2205372832
+	.long	1072978772
+	.long	787328196
+	.long	1014621351
+	.long	1291577100
+	.long	1072989723
+	.long	2964757301
+	.long	1020242528
+	.long	4234512804
+	.long	1072999952
+	.long	3136030038
+	.long	1017522144
+	.long	3248069132
+	.long	1073009528
+	.long	1506192355
+	.long	1018050472
+	.long	3932628500
+	.long	1073018509
+	.long	1045823554
+	.long	1019946655
+	.long	4195697848
+	.long	1073026948
+	.long	233443322
+	.long	1018917447
+	.long	2501811452
+	.long	1073034892
+	.long	901427976
+	.long	1017333852
+	.long	866379428
+	.long	1073049455
+	.long	2437443742
+	.long	1019678792
+	.long	1376865888
+	.long	1073062480
+	.long	3365790232
+	.long	1014547152
+	.long	3290094268
+	.long	1073074195
+	.long	3898947415
+	.long	1018683566
+	.long	354764884
+	.long	1073084787
+	.long	3854322404
+	.long	1019662058
+	.long	3332975496
+	.long	1073094406
+	.long	3171701655
+	.long	1017830922
+	.long	1141460088
+	.long	1073103181
+	.long	3946082701
+	.long	1020032019
+	.long	745761284
+	.long	1073111216
+	.long	1347210591
+	.long	1019106121
+	.long	1673304508
+	.long	1073118600
+	.long	1760606642
+	.long	1017324577
+	.long	983388240
+	.long	1073125409
+	.long	3740651204
+	.long	1019514104
+	.long	3895509100
+	.long	1073131706
+	.long	2409629983
+	.long	1020069322
+	.long	2128523668
+	.long	1073137548
+	.long	3045605368
+	.long	1018579174
+	.long	2075485692
+	.long	1073142981
+	.long	3720571789
+	.long	1017557436
+	.long	121855976
+	.long	1073148047
+	.long	2391744767
+	.long	1020160645
+	.long	4181733780
+	.long	1073152780
+	.long	995028816
+	.long	1019681295
+	.long	2887813280
+	.long	1073157214
+	.long	218733247
+	.long	1020003509
+	.long	2862180896
+	.long	1073161375
+	.long	2043806490
+	.long	1018602288
+	.long	3909375184
+	.long	1073168973
+	.long	1559903412
+	.long	1020103444
+	.long	3533966292
+	.long	1073175738
+	.long	734884149
+	.long	1018462962
+	.long	3815044608
+	.long	1073181799
+	.long	3630523428
+	.long	1017250093
+	.long	739639376
+	.long	1073187261
+	.long	4167476661
+	.long	1020008277
+	.long	1068309648
+	.long	1073192207
+	.long	2110061437
+	.long	1019295858
+	.long	2350566352
+	.long	1073196707
+	.long	582596516
+	.long	1018568821
+	.long	2529520024
+	.long	1073200819
+	.long	745552787
+	.long	1019053165
+	.long	1841667508
+	.long	1073204591
+	.long	3982568700
+	.long	1016503327
+	.long	2242261080
+	.long	1073208063
+	.long	3433582258
+	.long	1016196763
+	.long	715134328
+	.long	1073211270
+	.long	355901358
+	.long	1020087916
+	.long	2700735876
+	.long	1073214240
+	.long	3640957736
+	.long	1019780205
+	.long	141607580
+	.long	1073217000
+	.long	2488245051
+	.long	1020262395
+	.long	287934404
+	.long	1073219570
+	.long	2392691085
+	.long	1019883292
+	.long	2363373988
+	.long	1073221969
+	.long	4194561737
+	.long	1019237447
+	.long	3829340424
+	.long	1073224214
+	.long	429455526
+	.long	1019490975
+	.long	1988805928
+	.long	1073226320
+	.long	3029848706
+	.long	1018104889
+	.long	1647572320
+	.long	1073230161
+	.long	10289938
+	.long	1017394880
+	.long	3988000624
+	.long	1073233576
+	.long	1957559169
+	.long	1019434816
+	.long	4263843944
+	.long	1073236633
+	.long	204710264
+	.long	1019908761
+	.long	663197724
+	.long	1073239386
+	.long	1921757578
+	.long	1019778948
+	.long	3560800700
+	.long	1073241876
+	.long	3994348896
+	.long	1019230192
+	.long	2441785656
+	.long	1073244141
+	.long	871468611
+	.long	1014800505
+	.long	3277400272
+	.long	1073246209
+	.long	4092218139
+	.long	1020040842
+	.long	3951990120
+	.long	1073248105
+	.long	4276546478
+	.long	1019763677
+	.long	2737338540
+	.long	1073249850
+	.long	252776012
+	.long	1018794951
+	.long	1511361316
+	.long	1073251461
+	.long	3119653999
+	.long	1018514803
+	.long	3969162516
+	.long	1073252952
+	.long	1037069016
+	.long	1016792900
+	.long	413985240
+	.long	1073254338
+	.long	4110171432
+	.long	1020001345
+	.long	3681283576
+	.long	1073255627
+	.long	1463092818
+	.long	1020260354
+	.long	3146455488
+	.long	1073256831
+	.long	1031209123
+	.long	1016554799
+	.long	95214512
+	.long	1073257958
+	.long	1373808632
+	.long	1019493031
+	.long	4250240828
+	.long	1073259013
+	.long	3891047882
+	.long	1020108730
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	ATAN_TBL,@object
+	.size	ATAN_TBL,2624
+	.align 16
+P_TBL2:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.type	P_TBL2,@object
+	.size	P_TBL2,64
+	.align 16
+SELECT_B:
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.type	SELECT_B,@object
+	.size	SELECT_B,64
+	.align 16
+SGNMASK:
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.type	SGNMASK,@object
+	.size	SGNMASK,16
+	.align 16
+pi_table:
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.type	pi_table,@object
+	.size	pi_table,16
+	.align 16
+pi2_table:
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	pi2_table,@object
+	.size	pi2_table,16
+	.align 16
+pi4_table:
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.type	pi4_table,@object
+	.size	pi4_table,16
+	.align 4
+POW55:
+	.long	0
+	.long	1130364928
+	.type	POW55,@object
+	.size	POW55,8
+	.align 4
+INVEXPMASK:
+	.long	4294967295
+	.long	2148532223
+	.type	INVEXPMASK,@object
+	.size	INVEXPMASK,8
+	.align 4
+EXPMASK:
+	.long	0
+	.long	1072693248
+	.type	EXPMASK,@object
+	.size	EXPMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_atan2.1-.
+	.4byte ..___tag_value_atan2.5-..___tag_value_atan2.1
+	.2byte 0x0400
+	.4byte ..___tag_value_atan2.3-..___tag_value_atan2.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_atan2.4-..___tag_value_atan2.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_cosh.S b/libm/x86_64/e_cosh.S
new file mode 100644
index 0000000..8cdbca6
--- /dev/null
+++ b/libm/x86_64/e_cosh.S
@@ -0,0 +1,1372 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  cosh(x)=(exp(x)+exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [1/8,3*2^8)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
+//
+//  For |x| in [1/8, 3*2^7), cosh(x) is formed as
+//   RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
+//
+//  For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
+//  (error bound for polynomial expansion is below 0.501 ulp)
+//
+// Special cases:
+//  cosh(NaN) = quiet NaN, and raise invalid exception
+//  cosh(INF) = that INF
+//  cosh(0)=1
+//  for finite argument, only cosh(0)=1 is exact
+//  For IEEE double
+//  cosh(x) overflows
+//  for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+
+# -- Begin  cosh
+ENTRY(cosh)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_cosh.1:
+        pushq     %rsi
+..___tag_value_cosh.3:
+..B1.2:
+        movsd     HALFMASK(%rip), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     L2E(%rip), %xmm1
+        movsd     8+L2E(%rip), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     Shifter(%rip), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        andl      $32767, %ecx
+        subl      $16320, %ecx
+        cmpl      $200, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movq      %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    cv(%rip), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    16+cv(%rip), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    32+cv(%rip), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $184, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        lea       T2_neg_f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    48+cv(%rip), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     64+cv(%rip), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movq      %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        addpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        addl      $16320, %ecx
+        cmpl      $16320, %ecx
+        ja        .L_2TAG_PACKET_2.0.2
+        cmpl      $15952, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        addsd     %xmm2, %xmm6
+        movq      ONEMASK(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     48+cv(%rip), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     64+cv(%rip), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_4.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        movapd    pv(%rip), %xmm1
+        mulpd     %xmm5, %xmm5
+        movapd    16+pv(%rip), %xmm2
+        xorpd     %xmm3, %xmm3
+        movq      %xmm5, %xmm0
+        mulpd     %xmm5, %xmm1
+        movsd     ONEMASK(%rip), %xmm6
+        mulpd     %xmm5, %xmm5
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm3
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm5, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm0
+        addsd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        mulsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        movq      %xmm0, (%rsp)
+..B1.3:
+        movq      (%rsp), %xmm0
+.L_2TAG_PACKET_6.0.2:
+..B1.5:
+        popq      %rcx
+..___tag_value_cosh.4:
+        ret       
+..___tag_value_cosh.5:
+END(cosh)
+# -- End  cosh
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L2E:
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.type	L2E,@object
+	.size	L2E,16
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+cv:
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	3212193346
+	.type	cv,@object
+	.size	cv,80
+	.align 16
+T2f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.type	T2f,@object
+	.size	T2f,2048
+	.align 16
+T2_neg_f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.type	T2_neg_f,@object
+	.size	T2_neg_f,2048
+	.align 16
+pv:
+	.long	3078135644
+	.long	1049787983
+	.long	381774870
+	.long	1062650220
+	.long	436314137
+	.long	1056571808
+	.long	1431655765
+	.long	1067799893
+	.type	pv,@object
+	.size	pv,32
+	.align 4
+HALFMASK:
+	.long	4160749568
+	.long	2147483647
+	.type	HALFMASK,@object
+	.size	HALFMASK,8
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_cosh.1-.
+	.4byte ..___tag_value_cosh.5-..___tag_value_cosh.1
+	.2byte 0x0400
+	.4byte ..___tag_value_cosh.3-..___tag_value_cosh.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_cosh.4-..___tag_value_cosh.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_exp.S b/libm/x86_64/e_exp.S
new file mode 100644
index 0000000..6882dfc
--- /dev/null
+++ b/libm/x86_64/e_exp.S
@@ -0,0 +1,636 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//        x    x/log(2)     n
+//       e  = 2          = 2 * T[j] * (1 + P(y))
+//  where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//  To avoid problems with arithmetic overflow and underflow,
+//            n                        n1  n2
+//  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//  where BIAS is a value of exponent bias.
+//
+// Special cases:
+//  exp(NaN) = NaN
+//  exp(+INF) = +INF
+//  exp(-INF) = 0
+//  exp(x) = 1 for subnormals
+//  for finite argument, only exp(0)=1 is exact
+//  For IEEE double
+//    if x >  709.782712893383973096 then exp(x) overflow
+//    if x < -745.133219101941108420 then exp(x) underflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  exp
+ENTRY(exp)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_exp.1:
+        subq      $24, %rsp
+..___tag_value_exp.3:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        unpcklpd  %xmm0, %xmm0
+        movapd    cv(%rip), %xmm1
+        movapd    Shifter(%rip), %xmm6
+        movapd    16+cv(%rip), %xmm2
+        movapd    32+cv(%rip), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $15504, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    64+cv(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    80+cv(%rip), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        movdqa    mmask(%rip), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    bias(%rip), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        subpd     %xmm3, %xmm0
+        lea       Tbl_addr(%rip), %r8
+        movapd    (%rcx,%r8), %xmm2
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm6
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm6, %xmm6
+        mulpd     %xmm6, %xmm0
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm6, %xmm0
+        mulpd     48+cv(%rip), %xmm6
+        addsd     %xmm2, %xmm1
+        unpckhpd  %xmm2, %xmm2
+        mulpd     %xmm5, %xmm0
+        addsd     %xmm0, %xmm1
+        orpd      %xmm7, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        addsd     %xmm6, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        mulsd     %xmm2, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        xorpd     %xmm3, %xmm3
+        movapd    ALLONES(%rip), %xmm4
+        movl      $-1022, %edx
+        subl      %eax, %edx
+        movd      %edx, %xmm5
+        psllq     %xmm5, %xmm4
+        movl      %eax, %ecx
+        sarl      $1, %eax
+        pinsrw    $3, %eax, %xmm3
+        movapd    ebias(%rip), %xmm6
+        psllq     $4, %xmm3
+        psubd     %xmm3, %xmm2
+        mulsd     %xmm2, %xmm0
+        cmpl      $52, %edx
+        jg        .L_2TAG_PACKET_2.0.2
+        andpd     %xmm2, %xmm4
+        paddd     %xmm6, %xmm3
+        subsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        cmpl      $1023, %ecx
+        jge       .L_2TAG_PACKET_3.0.2
+        pextrw    $3, %xmm0, %ecx
+        andl      $32768, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_4.0.2
+        movapd    %xmm0, %xmm6
+        addsd     %xmm4, %xmm0
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_5.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        movq      %xmm6, %xmm0
+        pxor      %xmm4, %xmm6
+        psrad     $31, %xmm6
+        pshufd    $85, %xmm6, %xmm6
+        psllq     $1, %xmm0
+        psrlq     $1, %xmm0
+        pxor      %xmm6, %xmm0
+        psrlq     $63, %xmm6
+        paddq     %xmm6, %xmm0
+        paddq     %xmm4, %xmm0
+        movl      $15, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_4.0.2:
+        addsd     %xmm4, %xmm0
+        mulsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        addsd     %xmm4, %xmm0
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jnb       .L_2TAG_PACKET_7.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        paddd     %xmm6, %xmm3
+        addpd     %xmm2, %xmm0
+        mulsd     %xmm3, %xmm0
+        movl      $15, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_8.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        movl      12(%rsp), %eax
+        cmpl      $-2147483648, %eax
+        jae       .L_2TAG_PACKET_10.0.2
+        movsd     XMAX(%rip), %xmm0
+        mulsd     %xmm0, %xmm0
+.L_2TAG_PACKET_7.0.2:
+        movl      $14, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_10.0.2:
+        movsd     XMIN(%rip), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $15, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_9.0.2:
+        movl      8(%rsp), %edx
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_11.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_11.0.2
+        movl      12(%rsp), %eax
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_12.0.2
+        movsd     INF(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_12.0.2:
+        movsd     ZERO(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_11.0.2:
+        movsd     8(%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movl      12(%rsp), %eax
+        andl      $2147483647, %eax
+        cmpl      $1083179008, %eax
+        jae       .L_2TAG_PACKET_8.0.2
+        movsd     8(%rsp), %xmm0
+        addsd     ONE_val(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        movq      %xmm0, 16(%rsp)
+..B1.3:
+        movq      16(%rsp), %xmm0
+.L_2TAG_PACKET_13.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_exp.4:
+        ret       
+..___tag_value_exp.5:
+END(exp)
+# -- End  exp
+	.section .rodata, "a"
+	.align 16
+	.align 16
+cv:
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	4294967294
+	.long	1071644671
+	.long	4294967294
+	.long	1071644671
+	.long	3811088480
+	.long	1062650204
+	.long	1432067621
+	.long	1067799893
+	.long	3230715663
+	.long	1065423125
+	.long	1431604129
+	.long	1069897045
+	.type	cv,@object
+	.size	cv,96
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+mmask:
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.type	mmask,@object
+	.size	mmask,16
+	.align 16
+bias:
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.type	bias,@object
+	.size	bias,16
+	.align 16
+Tbl_addr:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	235107661
+	.long	1018002367
+	.long	1048019040
+	.long	11418
+	.long	896005651
+	.long	1015861842
+	.long	3541402996
+	.long	22960
+	.long	1642514529
+	.long	1012987726
+	.long	410360776
+	.long	34629
+	.long	1568897900
+	.long	1016568486
+	.long	1828292879
+	.long	46424
+	.long	1882168529
+	.long	1010744893
+	.long	852742562
+	.long	58348
+	.long	509852888
+	.long	1017336174
+	.long	3490863952
+	.long	70401
+	.long	653277307
+	.long	1017431380
+	.long	2930322911
+	.long	82586
+	.long	1649557430
+	.long	1017729363
+	.long	1014845818
+	.long	94904
+	.long	1058231231
+	.long	1015777676
+	.long	3949972341
+	.long	107355
+	.long	1044000607
+	.long	1016786167
+	.long	828946858
+	.long	119943
+	.long	1151779725
+	.long	1015705409
+	.long	2288159958
+	.long	132667
+	.long	3819481236
+	.long	1016499965
+	.long	1853186616
+	.long	145530
+	.long	2552227826
+	.long	1015039787
+	.long	1709341917
+	.long	158533
+	.long	1829350193
+	.long	1015216097
+	.long	4112506593
+	.long	171677
+	.long	1913391795
+	.long	1015756674
+	.long	2799960843
+	.long	184965
+	.long	1303423926
+	.long	1015238005
+	.long	171030293
+	.long	198398
+	.long	1574172746
+	.long	1016061241
+	.long	2992903935
+	.long	211976
+	.long	3424156969
+	.long	1017196428
+	.long	926591434
+	.long	225703
+	.long	1938513547
+	.long	1017631273
+	.long	887463926
+	.long	239579
+	.long	2804567149
+	.long	1015390024
+	.long	1276261410
+	.long	253606
+	.long	631083525
+	.long	1017690182
+	.long	569847337
+	.long	267786
+	.long	1623370770
+	.long	1011049453
+	.long	1617004845
+	.long	282120
+	.long	3667985273
+	.long	1013894369
+	.long	3049340112
+	.long	296610
+	.long	3145379760
+	.long	1014403278
+	.long	3577096743
+	.long	311258
+	.long	2603100681
+	.long	1017152460
+	.long	1990012070
+	.long	326066
+	.long	3249202951
+	.long	1017448880
+	.long	1453150081
+	.long	341035
+	.long	419288974
+	.long	1016280325
+	.long	917841882
+	.long	356167
+	.long	3793507337
+	.long	1016095713
+	.long	3712504873
+	.long	371463
+	.long	728023093
+	.long	1016345318
+	.long	363667784
+	.long	386927
+	.long	2582678538
+	.long	1017123460
+	.long	2956612996
+	.long	402558
+	.long	7592966
+	.long	1016721543
+	.long	2186617380
+	.long	418360
+	.long	228611441
+	.long	1016696141
+	.long	1719614412
+	.long	434334
+	.long	2261665670
+	.long	1017457593
+	.long	1013258798
+	.long	450482
+	.long	544148907
+	.long	1017323666
+	.long	3907805043
+	.long	466805
+	.long	2383914918
+	.long	1017143586
+	.long	1447192520
+	.long	483307
+	.long	1176412038
+	.long	1017267372
+	.long	1944781190
+	.long	499988
+	.long	2882956373
+	.long	1013312481
+	.long	919555682
+	.long	516851
+	.long	3154077648
+	.long	1016528543
+	.long	2571947538
+	.long	533897
+	.long	348651999
+	.long	1016405780
+	.long	2604962540
+	.long	551129
+	.long	3253791412
+	.long	1015920431
+	.long	1110089947
+	.long	568549
+	.long	1509121860
+	.long	1014756995
+	.long	2568320822
+	.long	586158
+	.long	2617649212
+	.long	1017340090
+	.long	2966275556
+	.long	603959
+	.long	553214634
+	.long	1016457425
+	.long	2682146383
+	.long	621954
+	.long	730975783
+	.long	1014083580
+	.long	2191782032
+	.long	640145
+	.long	1486499517
+	.long	1016818996
+	.long	2069751140
+	.long	658534
+	.long	2595788928
+	.long	1016407932
+	.long	2990417244
+	.long	677123
+	.long	1853053619
+	.long	1015310724
+	.long	1434058175
+	.long	695915
+	.long	2462790535
+	.long	1015814775
+	.long	2572866477
+	.long	714911
+	.long	3693944214
+	.long	1017259110
+	.long	3092190714
+	.long	734114
+	.long	2979333550
+	.long	1017188654
+	.long	4076559942
+	.long	753526
+	.long	174054861
+	.long	1014300631
+	.long	2420883922
+	.long	773150
+	.long	816778419
+	.long	1014197934
+	.long	3716502172
+	.long	792987
+	.long	3507050924
+	.long	1015341199
+	.long	777507147
+	.long	813041
+	.long	1821514088
+	.long	1013410604
+	.long	3706687593
+	.long	833312
+	.long	920623539
+	.long	1016295433
+	.long	1242007931
+	.long	853805
+	.long	2789017511
+	.long	1014276997
+	.long	3707479175
+	.long	874520
+	.long	3586233004
+	.long	1015962192
+	.long	64696965
+	.long	895462
+	.long	474650514
+	.long	1016642419
+	.long	863738718
+	.long	916631
+	.long	1614448851
+	.long	1014281732
+	.long	3884662774
+	.long	938030
+	.long	2450082086
+	.long	1016164135
+	.long	2728693977
+	.long	959663
+	.long	1101668360
+	.long	1015989180
+	.long	3999357479
+	.long	981531
+	.long	835814894
+	.long	1015702697
+	.long	1533953344
+	.long	1003638
+	.long	1301400989
+	.long	1014466875
+	.long	2174652632
+	.long	1025985
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,1024
+	.align 16
+ALLONES:
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.type	ALLONES,@object
+	.size	ALLONES,16
+	.align 16
+ebias:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	1072693248
+	.type	ebias,@object
+	.size	ebias,16
+	.align 4
+XMAX:
+	.long	4294967295
+	.long	2146435071
+	.type	XMAX,@object
+	.size	XMAX,8
+	.align 4
+XMIN:
+	.long	0
+	.long	1048576
+	.type	XMIN,@object
+	.size	XMIN,8
+	.align 4
+INF:
+	.long	0
+	.long	2146435072
+	.type	INF,@object
+	.size	INF,8
+	.align 4
+ZERO:
+	.long	0
+	.long	0
+	.type	ZERO,@object
+	.size	ZERO,8
+	.align 4
+ONE_val:
+	.long	0
+	.long	1072693248
+	.type	ONE_val,@object
+	.size	ONE_val,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_exp.1-.
+	.4byte ..___tag_value_exp.5-..___tag_value_exp.1
+	.2byte 0x0400
+	.4byte ..___tag_value_exp.3-..___tag_value_exp.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_exp.4-..___tag_value_exp.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_hypot.S b/libm/x86_64/e_hypot.S
new file mode 100644
index 0000000..089b2b4
--- /dev/null
+++ b/libm/x86_64/e_hypot.S
@@ -0,0 +1,210 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// X87 version:
+// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
+//
+// SSE version:
+// Swap x, y if |x|<|y|
+// For x=2^k*x, get y=y*2^(-k)
+// Get S ~ sqrt(x^2+y^2)  (leading 1 + leading 25 mantissa bits)
+//
+// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
+//                               + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
+//
+// Result is 2^k*(S + Se),  where Se = S*e
+//        S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
+//
+// Return 2^k*(S+Se)
+//
+// For |y/x|<2^(-64), return x
+//
+// For cases where maximum biased exponent is either greater than 7fdh or
+// below 32, take a special path to check for special cases (0, NaN, Inf),
+// possible overflow, and more accurate computation for denormal results
+//
+// Special cases:
+//  hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
+//  hypot(x,+-0) is equivalent to fabs(x)
+//  hypot(x,y) = y if (x==NaN or x==INF) and y==INF
+//  hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
+//  hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  hypot
+ENTRY(hypot)
+# parameter 1: %xmm0
+# parameter 2: %xmm1
+..B1.1:
+..___tag_value_hypot.1:
+..___tag_value_hypot.3:
+..B1.2:
+        subq      $64, %rsp
+        movapd    static_const_table(%rip), %xmm3
+        movsd     %xmm0, 48(%rsp)
+        movsd     %xmm1, 56(%rsp)
+        andpd     %xmm3, %xmm0
+        andpd     %xmm3, %xmm1
+        pextrw    $3, %xmm0, %eax
+        pextrw    $3, %xmm1, %edx
+        cmpl      $24528, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        cmpl      $24528, %edx
+        ja        .L_2TAG_PACKET_0.0.1
+.L_2TAG_PACKET_1.0.1:
+        fldl      48(%rsp)
+        fldl      56(%rsp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_0.0.1:
+        cmpl      $32752, %eax
+        movl      %eax, %ecx
+        jae       .L_2TAG_PACKET_3.0.1
+        subl      %edx, %ecx
+        cmpl      $32752, %edx
+        jae       .L_2TAG_PACKET_3.0.1
+        addl      $928, %ecx
+        addl      %edx, %eax
+        cmpl      $1856, %ecx
+        ja        .L_2TAG_PACKET_4.0.1
+        cmpl      $49056, %eax
+        jb        .L_2TAG_PACKET_1.0.1
+        fldl      48(%rsp)
+        fldl      56(%rsp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+.L_2TAG_PACKET_5.0.1:
+        fstl      (%rsp)
+        fstpt     16(%rsp)
+        xorl      %eax, %eax
+        movw      24(%rsp), %ax
+        cmpl      $17407, %eax
+        jae       .L_2TAG_PACKET_6.0.1
+        fldl      (%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_4.0.1:
+        movsd     %xmm0, 32(%rsp)
+        movsd     %xmm1, 40(%rsp)
+        fldl      32(%rsp)
+        faddl     40(%rsp)
+        jmp       .L_2TAG_PACKET_5.0.1
+.L_2TAG_PACKET_6.0.1:
+        fldl      (%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_3.0.1:
+        shufpd    $0, %xmm1, %xmm0
+        movdqa    %xmm0, %xmm2
+        movdqa    16+static_const_table(%rip), %xmm3
+        movsd     %xmm0, 32(%rsp)
+        movsd     %xmm1, 40(%rsp)
+        cmppd     $3, %xmm0, %xmm2
+        cmppd     $0, %xmm0, %xmm3
+        movmskpd  %xmm2, %edx
+        movmskpd  %xmm3, %rax
+        testl     %edx, %edx
+        je        .L_2TAG_PACKET_8.0.1
+        fldl      32(%rsp)
+        fmull     40(%rsp)
+        testq     $1, %rax
+        jne       .L_2TAG_PACKET_9.0.1
+        testq     $2, %rax
+        jne       .L_2TAG_PACKET_10.0.1
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_8.0.1:
+        fldl      32(%rsp)
+        faddl     40(%rsp)
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_9.0.1:
+        fstpl     40(%rsp)
+        fldl      32(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_10.0.1:
+        fstpl     32(%rsp)
+        fldl      40(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_2.0.1:
+.L_2TAG_PACKET_7.0.1:
+        fstpl     16(%rsp)
+        movq      16(%rsp), %xmm0
+        addq      $64, %rsp
+        ret       
+..B1.3:
+..___tag_value_hypot.4:
+END(hypot)
+# -- End  hypot
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4294967295
+	.long	2147483647
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	2146435072
+	.type	static_const_table,@object
+	.size	static_const_table,32
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x00000014
+	.4byte 0x0000001c
+	.4byte ..___tag_value_hypot.1-.
+	.4byte ..___tag_value_hypot.4-..___tag_value_hypot.1
+	.2byte 0x0400
+	.4byte ..___tag_value_hypot.3-..___tag_value_hypot.1
+	.2byte 0x100e
+# End
diff --git a/libm/x86_64/e_log.S b/libm/x86_64/e_log.S
new file mode 100644
index 0000000..40cb5e2
--- /dev/null
+++ b/libm/x86_64/e_log.S
@@ -0,0 +1,779 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log(NaN) = quiet NaN, and raise invalid exception
+//  log(+INF) = that INF
+//  log(0) = -INF with divide-by-zero exception raised
+//  log(1) = +0
+//  log(x) = NaN with invalid exception raised if x < -0, including -INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  log
+ENTRY(log)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_log.1:
+        subq      $24, %rsp
+..___tag_value_log.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movq      $0x3ff0000000000000, %rax
+        movd      %rax, %xmm2
+        movq      $0x77f0000000000000, %rdx
+        movd      %rdx, %xmm3
+        movl      $32768, %ecx
+        movd      %rcx, %xmm4
+        movq      $0xffffe00000000000, %r8
+        movd      %r8, %xmm5
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $16352, %ecx
+        psrlq     $27, %xmm0
+        lea       L_tbl(%rip), %r11
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        paddd     %xmm4, %xmm0
+        orpd      %xmm3, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        mulpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulsd     %xmm0, %xmm1
+        movq      log2(%rip), %xmm6
+        movapd    coeff(%rip), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%r11,%rdx), %xmm0
+        movapd    16+coeff(%rip), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    32+coeff(%rip), %xmm2
+        mulsd     %xmm7, %xmm6
+        movddup   %xmm1, %xmm5
+        mulsd     8+log2(%rip), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        mulpd     %xmm5, %xmm5
+        movddup   %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        pshufd    $238, %xmm0, %xmm2
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movq      (%rsp), %xmm0
+        movq      (%rsp), %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_4.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_4.0.2
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_3.0.2:
+        xorpd     %xmm1, %xmm1
+        addsd     %xmm0, %xmm1
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psrlq     $27, %xmm0
+        movl      $18416, %ecx
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movl      $3, 16(%rsp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $2, 16(%rsp)
+.L_2TAG_PACKET_8.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_9.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_log.4:
+        ret       
+..___tag_value_log.5:
+END(log)
+# -- End  log
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L_tbl:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	L_tbl,@object
+	.size	L_tbl,2064
+	.align 16
+log2:
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.type	log2,@object
+	.size	log2,16
+	.align 16
+coeff:
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.type	coeff,@object
+	.size	coeff,48
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_log.1-.
+	.4byte ..___tag_value_log.5-..___tag_value_log.1
+	.2byte 0x0400
+	.4byte ..___tag_value_log.3-..___tag_value_log.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_log.4-..___tag_value_log.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_log10.S b/libm/x86_64/e_log10.S
new file mode 100644
index 0000000..4f43a36
--- /dev/null
+++ b/libm/x86_64/e_log10.S
@@ -0,0 +1,807 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*LH*2^7+0.5))/2^7
+//    LH is a short approximation for log10(e)
+//
+//    Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
+//
+//    Result:  k*log10(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log10(0) = -INF with divide-by-zero exception raised                                           
+//  log10(1) = +0
+//  log10(x) = NaN with invalid exception raised if x < -0, including -INF
+//  log10(+INF) = +INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  log10
+ENTRY(log10)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_log10.1:
+        subq      $24, %rsp
+..___tag_value_log10.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movl      $1054736384, %ecx
+        movd      %ecx, %xmm7
+        xorpd     %xmm3, %xmm3
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm3
+        movq      %xmm0, %xmm1
+        movl      $32768, %edx
+        movd      %edx, %xmm4
+        movapd    HIGHSIGMASK(%rip), %xmm5
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $16352, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG10_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        orpd      %xmm3, %xmm1
+        lea       L_tbl(%rip), %r11
+        andpd     %xmm1, %xmm5
+        paddd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm6, %xmm0
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        mulsd     %xmm0, %xmm1
+        movq      log2(%rip), %xmm6
+        movapd    coeff(%rip), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    -1504(%r11,%rdx), %xmm0
+        movapd    16+coeff(%rip), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    32+coeff(%rip), %xmm2
+        mulsd     %xmm7, %xmm6
+        pshufd    $68, %xmm1, %xmm5
+        mulsd     8+log2(%rip), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        movq      8+LOG10_E(%rip), %xmm6
+        mulpd     %xmm5, %xmm5
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        pshufd    $228, %xmm0, %xmm2
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm2
+        mulsd     %xmm1, %xmm6
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm0, %xmm2
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm6, %xmm1
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movq      (%rsp), %xmm0
+        movq      (%rsp), %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_4.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_4.0.2
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_3.0.2:
+        xorpd     %xmm1, %xmm1
+        addsd     %xmm0, %xmm1
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG10_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movl      $9, 16(%rsp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $8, 16(%rsp)
+.L_2TAG_PACKET_8.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_9.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_log10.4:
+        ret       
+..___tag_value_log10.5:
+END(log10)
+# -- End  log10
+	.section .rodata, "a"
+	.align 16
+	.align 16
+HIGHSIGMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294959104
+	.type	HIGHSIGMASK,@object
+	.size	HIGHSIGMASK,16
+	.align 16
+LOG10_E:
+	.long	0
+	.long	1071366144
+	.long	3207479560
+	.long	1062894188
+	.type	LOG10_E,@object
+	.size	LOG10_E,16
+	.align 16
+L_tbl:
+	.long	1352628224
+	.long	1070810131
+	.long	521319256
+	.long	1025503025
+	.long	2150839296
+	.long	1070801944
+	.long	3329350096
+	.long	3170190015
+	.long	1360613376
+	.long	1070793794
+	.long	2024059075
+	.long	1024991594
+	.long	1875350528
+	.long	1070785680
+	.long	2163882141
+	.long	3163564137
+	.long	2312126464
+	.long	1070777602
+	.long	1975711076
+	.long	1023674196
+	.long	1306336256
+	.long	1070769560
+	.long	3524899523
+	.long	3170508164
+	.long	1806334976
+	.long	1070761553
+	.long	4254777025
+	.long	1025238739
+	.long	2483193856
+	.long	1070753581
+	.long	3800671317
+	.long	3172916830
+	.long	2025350144
+	.long	1070745644
+	.long	1731514745
+	.long	1025501083
+	.long	3433285632
+	.long	1070737741
+	.long	2551857336
+	.long	3169662186
+	.long	1134317568
+	.long	1070729873
+	.long	3426297655
+	.long	3172637891
+	.long	2457152512
+	.long	1070722038
+	.long	63549415
+	.long	1025415416
+	.long	1861803008
+	.long	1070714237
+	.long	1910171636
+	.long	1023977580
+	.long	2414140416
+	.long	1070706469
+	.long	4002514337
+	.long	3170841618
+	.long	2900726784
+	.long	1070698734
+	.long	3268064083
+	.long	1022459609
+	.long	2123517952
+	.long	1070691032
+	.long	1767031218
+	.long	1022448156
+	.long	3194569728
+	.long	1070683362
+	.long	3402332618
+	.long	3171671160
+	.long	650882048
+	.long	1070675725
+	.long	4146023905
+	.long	3171023038
+	.long	1928988672
+	.long	1070668119
+	.long	1438617867
+	.long	1016360491
+	.long	1594908672
+	.long	1070660545
+	.long	971389377
+	.long	1024763979
+	.long	2818746368
+	.long	1070653002
+	.long	3555925341
+	.long	3172434821
+	.long	194584576
+	.long	1070645491
+	.long	943919215
+	.long	3172950063
+	.long	1215096832
+	.long	1070638010
+	.long	2283358588
+	.long	1022335098
+	.long	501519360
+	.long	1070630560
+	.long	480904295
+	.long	1024437959
+	.long	1278266368
+	.long	1070623140
+	.long	2755806066
+	.long	3172342012
+	.long	2487812096
+	.long	1070615750
+	.long	2489653202
+	.long	3172481099
+	.long	3085451264
+	.long	1070608390
+	.long	3759184951
+	.long	3172574892
+	.long	2039090176
+	.long	1070601060
+	.long	1361176676
+	.long	3172355319
+	.long	953057280
+	.long	1070591423
+	.long	1176587546
+	.long	3166422018
+	.long	3370524672
+	.long	1070576879
+	.long	3669570051
+	.long	1025376630
+	.long	749742080
+	.long	1070562394
+	.long	707700964
+	.long	3170814058
+	.long	4008353792
+	.long	1070547965
+	.long	3247327652
+	.long	1022431400
+	.long	2612455424
+	.long	1070533594
+	.long	2453457344
+	.long	3172322969
+	.long	3230920704
+	.long	1070519279
+	.long	1296781801
+	.long	1025115335
+	.long	3965253632
+	.long	1070505020
+	.long	373075289
+	.long	1017938528
+	.long	2593157120
+	.long	1070476669
+	.long	1068054086
+	.long	1021616576
+	.long	925962240
+	.long	1070448537
+	.long	850121213
+	.long	1023928989
+	.long	1732556800
+	.long	1070420620
+	.long	1305206740
+	.long	3172665570
+	.long	3815630848
+	.long	1070392915
+	.long	192642943
+	.long	3172699907
+	.long	2001758208
+	.long	1070365420
+	.long	2820786683
+	.long	1024704867
+	.long	16746496
+	.long	1070338131
+	.long	1399573110
+	.long	3171372773
+	.long	1886492672
+	.long	1070311044
+	.long	3621428075
+	.long	3172974358
+	.long	3338196992
+	.long	1070284157
+	.long	3793882035
+	.long	1025124701
+	.long	381769728
+	.long	1070257468
+	.long	3877933342
+	.long	3170195490
+	.long	2186491904
+	.long	1070230972
+	.long	1838687089
+	.long	1017927292
+	.long	1008330752
+	.long	1070204668
+	.long	2228321664
+	.long	1025352196
+	.long	2247065600
+	.long	1070178552
+	.long	1413900906
+	.long	3170902532
+	.long	2964070400
+	.long	1070152622
+	.long	3590454629
+	.long	1025016844
+	.long	465154048
+	.long	1070126876
+	.long	2079688550
+	.long	3172268183
+	.long	883615744
+	.long	1070101310
+	.long	989244452
+	.long	3171900485
+	.long	1993768960
+	.long	1070075922
+	.long	1124327841
+	.long	3172964992
+	.long	1794471936
+	.long	1070050710
+	.long	1140575046
+	.long	1022673726
+	.long	2797932544
+	.long	1070025671
+	.long	1894836933
+	.long	3172544059
+	.long	3433797632
+	.long	1070000803
+	.long	3221831166
+	.long	3171921685
+	.long	2338371584
+	.long	1069976104
+	.long	3732461053
+	.long	3164513518
+	.long	2644013056
+	.long	1069951571
+	.long	2519460462
+	.long	3172548740
+	.long	3383814144
+	.long	1069927202
+	.long	2290997657
+	.long	1025499649
+	.long	3781380096
+	.long	1069902995
+	.long	380479405
+	.long	1025184136
+	.long	3245785088
+	.long	1069878948
+	.long	1096398261
+	.long	3169885192
+	.long	1366712320
+	.long	1069855059
+	.long	2218343715
+	.long	3170281628
+	.long	2204717056
+	.long	1069831325
+	.long	2668334011
+	.long	1025264524
+	.long	1401772032
+	.long	1069807745
+	.long	4103993159
+	.long	1022925721
+	.long	3356721152
+	.long	1069784316
+	.long	3573790772
+	.long	3172186527
+	.long	4041148416
+	.long	1069761037
+	.long	4027691910
+	.long	3171276990
+	.long	3880151040
+	.long	1069737906
+	.long	4087118786
+	.long	3172710734
+	.long	3453364224
+	.long	1069714921
+	.long	99014299
+	.long	3172003077
+	.long	3491092480
+	.long	1069692080
+	.long	3801836701
+	.long	3172989287
+	.long	575580160
+	.long	1069669382
+	.long	1920406012
+	.long	3170874125
+	.long	22282240
+	.long	1069646824
+	.long	964193370
+	.long	1019363159
+	.long	2991429632
+	.long	1069624404
+	.long	3372589890
+	.long	1023425053
+	.long	2189645824
+	.long	1069602122
+	.long	2610503872
+	.long	1023652442
+	.long	3341467648
+	.long	1069579975
+	.long	1190292004
+	.long	1022425665
+	.long	3711293440
+	.long	1069557962
+	.long	1104795356
+	.long	1023625829
+	.long	1380401152
+	.long	1069524644
+	.long	1156998217
+	.long	1025100499
+	.long	765710336
+	.long	1069481144
+	.long	1736649113
+	.long	1024999439
+	.long	849412096
+	.long	1069437902
+	.long	2618178330
+	.long	3170853629
+	.long	1433104384
+	.long	1069394915
+	.long	43477267
+	.long	3170378811
+	.long	2548596736
+	.long	1069352180
+	.long	3967367063
+	.long	1025246584
+	.long	157577216
+	.long	1069309695
+	.long	100402533
+	.long	3172825502
+	.long	3326238720
+	.long	1069267455
+	.long	1176892909
+	.long	1025464099
+	.long	4155494400
+	.long	1069225459
+	.long	3713707617
+	.long	3172630046
+	.long	3545804800
+	.long	1069183704
+	.long	857007315
+	.long	1024965777
+	.long	2602520576
+	.long	1069142187
+	.long	2588758347
+	.long	1022463131
+	.long	2631196672
+	.long	1069100905
+	.long	2118424235
+	.long	1022490989
+	.long	838135808
+	.long	1069059856
+	.long	4117002727
+	.long	1024874520
+	.long	3210903552
+	.long	1069019036
+	.long	650070125
+	.long	3172012966
+	.long	3039211520
+	.long	1068978444
+	.long	438055812
+	.long	1017743757
+	.long	2385633280
+	.long	1068938077
+	.long	3011990369
+	.long	3171312044
+	.long	3491618816
+	.long	1068897932
+	.long	712813818
+	.long	3172720400
+	.long	183644160
+	.long	1068858008
+	.long	4287006742
+	.long	1022379728
+	.long	3639214080
+	.long	1068818300
+	.long	353762279
+	.long	3172980009
+	.long	3728416768
+	.long	1068778808
+	.long	1851367730
+	.long	1025486574
+	.long	3370094592
+	.long	1068739529
+	.long	4046594913
+	.long	3172567047
+	.long	1348407296
+	.long	1068700461
+	.long	143189675
+	.long	1025397632
+	.long	899403776
+	.long	1068661601
+	.long	3753687842
+	.long	3170772772
+	.long	1117708288
+	.long	1068622947
+	.long	1857340812
+	.long	3170782678
+	.long	1248276480
+	.long	1068584497
+	.long	1289858203
+	.long	1025222289
+	.long	683237376
+	.long	1068546249
+	.long	2356679608
+	.long	3171629170
+	.long	3253764096
+	.long	1068508200
+	.long	3267136556
+	.long	1018554987
+	.long	94478336
+	.long	1068441756
+	.long	1927868814
+	.long	3169378180
+	.long	3233144832
+	.long	1068366445
+	.long	2682188854
+	.long	1023964004
+	.long	2940297216
+	.long	1068291522
+	.long	275301289
+	.long	1023944679
+	.long	3677708288
+	.long	1068216982
+	.long	302658771
+	.long	1024465567
+	.long	1576968192
+	.long	1068142822
+	.long	3672035940
+	.long	3172254610
+	.long	1614069760
+	.long	1068069037
+	.long	480052905
+	.long	3172692062
+	.long	424435712
+	.long	1067995624
+	.long	2207869657
+	.long	3170965436
+	.long	3477782528
+	.long	1067922578
+	.long	2980661858
+	.long	3164990018
+	.long	3598401536
+	.long	1067849897
+	.long	1974393034
+	.long	3171357083
+	.long	2435235840
+	.long	1067777577
+	.long	1385289011
+	.long	1024615823
+	.long	1867333632
+	.long	1067705614
+	.long	3442236633
+	.long	1025334384
+	.long	3999301632
+	.long	1067634004
+	.long	3506472073
+	.long	1025132546
+	.long	2566971392
+	.long	1067562745
+	.long	1425757592
+	.long	3172358463
+	.long	112943104
+	.long	1067491833
+	.long	1693407156
+	.long	3172426603
+	.long	3079929856
+	.long	1067392159
+	.long	3999942455
+	.long	1018549369
+	.long	2443837440
+	.long	1067251701
+	.long	974534460
+	.long	1023963412
+	.long	359366656
+	.long	1067111917
+	.long	2204915018
+	.long	1013514416
+	.long	3564519424
+	.long	1066972799
+	.long	3977441659
+	.long	3170879860
+	.long	2011086848
+	.long	1066834343
+	.long	590145514
+	.long	1025390011
+	.long	3216982016
+	.long	1066696541
+	.long	3629120110
+	.long	1024330313
+	.long	2194128896
+	.long	1066559388
+	.long	2367098512
+	.long	3172260338
+	.long	2916220928
+	.long	1066422877
+	.long	2262431886
+	.long	1021229446
+	.long	2263941120
+	.long	1066172214
+	.long	3118507287
+	.long	1021484970
+	.long	3076292608
+	.long	1065901726
+	.long	1411737803
+	.long	3172957147
+	.long	1186136064
+	.long	1065632488
+	.long	3109349337
+	.long	1025397383
+	.long	3085303808
+	.long	1065364487
+	.long	584715031
+	.long	3172596519
+	.long	1821048832
+	.long	1064842211
+	.long	2182246895
+	.long	3172536214
+	.long	697368576
+	.long	1064311094
+	.long	3157561765
+	.long	3172716357
+	.long	894042112
+	.long	1063260131
+	.long	3237958154
+	.long	3172587292
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.type	L_tbl,@object
+	.size	L_tbl,2064
+	.align 16
+log2:
+	.long	1352628224
+	.long	1066615827
+	.long	521319256
+	.long	1021308721
+	.type	log2,@object
+	.size	log2,16
+	.align 16
+coeff:
+	.long	3248877870
+	.long	1077250164
+	.long	1691676429
+	.long	3221787401
+	.long	945132465
+	.long	3223701783
+	.long	3700831335
+	.long	1073506818
+	.long	2141010593
+	.long	1075227551
+	.long	3698831637
+	.long	3220339442
+	.type	coeff,@object
+	.size	coeff,48
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_log10.1-.
+	.4byte ..___tag_value_log10.5-..___tag_value_log10.1
+	.2byte 0x0400
+	.4byte ..___tag_value_log10.3-..___tag_value_log10.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_log10.4-..___tag_value_log10.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_pow.S b/libm/x86_64/e_pow.S
new file mode 100644
index 0000000..9ec3828
--- /dev/null
+++ b/libm/x86_64/e_pow.S
@@ -0,0 +1,4282 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    log2(x) calculation:
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*LH*2^9+0.5))/2^9
+//    LH is a short approximation for log2(e)
+//
+//    Reduced argument, scaled by LH:
+//                r=B*mx-LH (computed accurately in high and low parts)
+//
+//    log2(x) result:  k - log2(B) + p(r)
+//             p(r) is a degree 8 polynomial
+//             -log2(B) read from data table (high, low parts)
+//             log2(x) is formed from high and low parts
+//    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
+//    based om the same table design is performed.
+//
+//   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
+//   to filter out all potential OF/UF cases.
+//   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
+//   polynomial
+//
+// Special cases:
+//  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd 
+//  integer < 0.
+//  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and 
+//  not an odd integer.
+//  pow(-0,y) = -0 for y an odd integer > 0.
+//  pow(-0,y) = +0 for y > 0 and not an odd integer.
+//  pow(-1,-INF) = 1.
+//  pow(+1,y) = 1 for any y, even a NaN.
+//  pow(x,-0) = 1 for any x, even a NaN.
+//  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
+//  finite non-integer y.
+//  pow(x,-INF) = +INF for |x|<1.
+//  pow(x,-INF) = +0 for |x|>1.
+//  pow(x,+INF) = +0 for |x|<1.
+//  pow(x,+INF) = +INF for |x|>1.
+//  pow(-INF,y) = -0 for y an odd integer < 0.
+//  pow(-INF,y) = +0 for y < 0 and not an odd integer.
+//  pow(-INF,y) = -INF for y an odd integer > 0.
+//  pow(-INF,y) = +INF for y > 0 and not an odd integer.
+//  pow(+INF,y) = +0 for y <0.
+//  pow(+INF,y) = +INF for y >0.
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  pow
+ENTRY(pow)
+# parameter 1: %xmm0
+# parameter 2: %xmm1
+..B1.1:
+..___tag_value_pow.1:
+        subq      $40, %rsp
+..___tag_value_pow.3:
+        movsd     %xmm0, 8(%rsp)
+        movsd     %xmm1, 16(%rsp)
+..B1.2:
+        pextrw    $3, %xmm0, %eax
+        xorpd     %xmm2, %xmm2
+        movq      $0x3ff0000000000000, %r9
+        movd      %r9, %xmm2
+        movl      $1069088768, %r8d
+        movd      %r8, %xmm7
+        xorpd     %xmm1, %xmm1
+        movq      $0x77f0000000000000, %r10
+        movd      %r10, %xmm1
+        movq      %xmm0, %xmm3
+        movl      $32752, %edx
+        andl      %eax, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        orpd      %xmm2, %xmm0
+        movapd    HIGHSIGMASK(%rip), %xmm6
+        psrlq     $27, %xmm0
+        movq      LOG2_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movl      $8192, %r11d
+        movd      %r11, %xmm4
+        psrlq     $12, %xmm3
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        movq      $0, %r8
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        movl      $-1, %edx
+        subl      $4, %ecx
+        shll      %cl, %edx
+        shlq      $32, %rdx
+        movd      %rdx, %xmm5
+        orpd      %xmm1, %xmm3
+        subl      $16351, %eax
+        cmpl      $1, %eax
+        jbe       .L_2TAG_PACKET_2.0.2
+        paddd     %xmm4, %xmm0
+        andpd     %xmm3, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+.L_2TAG_PACKET_3.0.2:
+        subsd     %xmm5, %xmm3
+        andpd     %xmm6, %xmm0
+        subl      $1, %eax
+        sarl      $4, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+.L_2TAG_PACKET_4.0.2:
+        mulsd     %xmm0, %xmm3
+        movapd    coeff(%rip), %xmm1
+        lea       L_tbl(%rip), %r11
+        subsd     %xmm2, %xmm5
+        movapd    16+coeff(%rip), %xmm4
+        movl      %eax, %ecx
+        sarl      $31, %eax
+        addl      %eax, %ecx
+        xorl      %ecx, %eax
+        addl      $1, %eax
+        bsr       %eax, %eax
+        unpcklpd  %xmm3, %xmm5
+        movapd    32+coeff(%rip), %xmm6
+        addsd     %xmm5, %xmm3
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3648(%r11,%rdx), %xmm5
+        movapd    48+coeff(%rip), %xmm0
+        pshufd    $68, %xmm3, %xmm2
+        mulsd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm1
+        mulpd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm5
+        mulsd     %xmm3, %xmm2
+        addpd     %xmm1, %xmm6
+        mulsd     %xmm3, %xmm3
+        addpd     %xmm4, %xmm0
+        movq      16(%rsp), %xmm1
+        movw      22(%rsp), %cx
+        pshufd    $238, %xmm5, %xmm7
+        movq      HIGHMASK_Y(%rip), %xmm4
+        mulpd     %xmm2, %xmm6
+        pshufd    $68, %xmm3, %xmm3
+        mulpd     %xmm2, %xmm0
+        shll      $4, %eax
+        subl      $15872, %eax
+        andl      $32752, %ecx
+        addl      %ecx, %eax
+        mulpd     %xmm6, %xmm3
+        cmpl      $624, %eax
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        movq      %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm5, %xmm1
+        movq      %xmm6, %xmm7
+        addsd     %xmm4, %xmm6
+        lea       T_exp(%rip), %r11
+        addpd     %xmm0, %xmm3
+        movd      %xmm6, %edx
+        subsd     %xmm7, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        subsd     %xmm6, %xmm4
+        addsd     %xmm3, %xmm0
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    (%r11,%rdx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        movapd    e_coeff(%rip), %xmm7
+        movapd    16+e_coeff(%rip), %xmm3
+        shll      $12, %ecx
+        xorl      %r8d, %ecx
+        andl      $-1048576, %ecx
+        movd      %rcx, %xmm6
+        addsd     %xmm4, %xmm2
+        movq      $0x3fe62e42fefa39ef, %r9
+        movd      %r9, %xmm1
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulsd     %xmm2, %xmm1
+        pshufd    $17, %xmm6, %xmm6
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm4, %xmm7
+        paddd     %xmm6, %xmm5
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulsd     %xmm0, %xmm0
+        addpd     %xmm7, %xmm3
+        addsd     %xmm6, %xmm1
+        mulpd     %xmm3, %xmm0
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        addl      $16, %eax
+        movl      $32752, %edx
+        andl      %eax, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_6.0.2
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_8.0.2:
+        movq      8(%rsp), %xmm0
+        movq      8(%rsp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_9.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG2_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    HIGHSIGMASK(%rip), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $0, %r8d
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_10.0.2:
+        movq      8(%rsp), %xmm0
+        movq      8(%rsp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_9.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG2_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    HIGHSIGMASK(%rip), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $-2147483648, %r8d
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_11.0.2
+        cmpl      $736, %eax
+        jae       .L_2TAG_PACKET_12.0.2
+        addsd     %xmm7, %xmm0
+        movq      HALFMASK(%rip), %xmm2
+        addpd     %xmm0, %xmm3
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm3, %xmm0
+        movq      %xmm5, %xmm3
+        addsd     %xmm0, %xmm5
+        movq      %xmm2, %xmm4
+        subsd     %xmm5, %xmm3
+        movq      %xmm5, %xmm7
+        andpd     %xmm2, %xmm5
+        movq      %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm7
+        addsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm0, %xmm2
+        movq      %xmm6, %xmm7
+        mulsd     %xmm5, %xmm1
+        addsd     %xmm4, %xmm6
+        movd      %xmm6, %eax
+        subsd     %xmm7, %xmm6
+        lea       T_exp(%rip), %r11
+        addsd     %xmm1, %xmm2
+        movapd    e_coeff(%rip), %xmm7
+        movapd    16+e_coeff(%rip), %xmm3
+        subsd     %xmm6, %xmm4
+        pextrw    $3, %xmm6, %edx
+        movl      %eax, %ecx
+        andl      $255, %eax
+        addl      %eax, %eax
+        movapd    (%r11,%rax,8), %xmm5
+        addsd     %xmm4, %xmm2
+        sarl      $8, %ecx
+        movl      %ecx, %eax
+        sarl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        xorl      %r8d, %ecx
+        movd      %ecx, %xmm6
+        movq      32+e_coeff(%rip), %xmm1
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_12.0.2
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm4, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        shll      $4, %eax
+        xorpd     %xmm4, %xmm4
+        addl      $16368, %eax
+        pinsrw    $3, %eax, %xmm4
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        movq      %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_13.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_14.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        movq      16(%rsp), %xmm1
+        movq      8(%rsp), %xmm0
+        movq      %xmm0, %xmm2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_15.0.2
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_16.0.2
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_16.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $29, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_18.0.2:
+        movq      16(%rsp), %xmm0
+        addpd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_15.0.2:
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_19.0.2
+        pextrw    $3, %xmm2, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_20.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_20.0.2:
+        pextrw    $3, %xmm0, %eax
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_21.0.2
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_22.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_23.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_24.0.2
+        testl     $2, %eax
+        jne       .L_2TAG_PACKET_25.0.2
+        jmp       .L_2TAG_PACKET_24.0.2
+.L_2TAG_PACKET_21.0.2:
+        shrl      $20, %ecx
+        andl      $2047, %ecx
+        cmpl      $1075, %ecx
+        ja        .L_2TAG_PACKET_24.0.2
+        je        .L_2TAG_PACKET_26.0.2
+        cmpl      $1074, %ecx
+        ja        .L_2TAG_PACKET_23.0.2
+        cmpl      $1023, %ecx
+        jb        .L_2TAG_PACKET_24.0.2
+        movq      16(%rsp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movq      %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_24.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_24.0.2
+.L_2TAG_PACKET_25.0.2:
+        movq      16(%rsp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_27.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_27.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_24.0.2:
+        movq      16(%rsp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_22.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_26.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_24.0.2
+        jmp       .L_2TAG_PACKET_25.0.2
+.L_2TAG_PACKET_28.0.2:
+        movd      %xmm1, %eax
+        psrlq     $20, %xmm1
+        movd      %xmm1, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_29.0.2
+        movq      16(%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_29.0.2:
+        movq      8(%rsp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        cmpl      $49136, %eax
+        jne       .L_2TAG_PACKET_30.0.2
+        movd      %xmm0, %ecx
+        psrlq     $20, %xmm0
+        movd      %xmm0, %edx
+        orl       %edx, %ecx
+        jne       .L_2TAG_PACKET_30.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_30.0.2:
+        movq      16(%rsp), %xmm1
+        andl      $32752, %eax
+        subl      $16368, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        xorl      %edx, %eax
+        andl      $32768, %eax
+        je        .L_2TAG_PACKET_31.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_31.0.2:
+        movl      $32752, %ecx
+        pinsrw    $3, %ecx, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_32.0.2:
+        movd      %xmm1, %eax
+        cmpl      $17184, %edx
+        ja        .L_2TAG_PACKET_33.0.2
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_34.0.2
+        testl     $2, %eax
+        je        .L_2TAG_PACKET_35.0.2
+        jmp       .L_2TAG_PACKET_36.0.2
+.L_2TAG_PACKET_33.0.2:
+        testl     $1, %eax
+        je        .L_2TAG_PACKET_35.0.2
+        jmp       .L_2TAG_PACKET_36.0.2
+.L_2TAG_PACKET_7.0.2:
+        movq      8(%rsp), %xmm2
+        movd      %xmm2, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_9.0.2
+        movq      16(%rsp), %xmm1
+        pextrw    $3, %xmm1, %edx
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        addl      %ecx, %ecx
+        orl       %eax, %ecx
+        je        .L_2TAG_PACKET_37.0.2
+        andl      $32752, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_28.0.2
+        cmpl      $17200, %edx
+        ja        .L_2TAG_PACKET_35.0.2
+        cmpl      $17184, %edx
+        jae       .L_2TAG_PACKET_32.0.2
+        cmpl      $16368, %edx
+        jb        .L_2TAG_PACKET_34.0.2
+        movl      $17208, %eax
+        xorpd     %xmm2, %xmm2
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm2, %xmm4
+        addsd     %xmm1, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32767, %eax
+        jne       .L_2TAG_PACKET_34.0.2
+        movd      %xmm2, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_35.0.2
+.L_2TAG_PACKET_36.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movq      LOG2_E(%rip), %xmm2
+        movq      8(%rsp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_10.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $-2147483648, %r8d
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_34.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        xorpd     %xmm0, %xmm0
+        mulsd     %xmm1, %xmm0
+        movl      $28, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_35.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movq      LOG2_E(%rip), %xmm2
+        movq      8(%rsp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_8.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $0, %r8d
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_19.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_22.0.2:
+        xorpd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_11.0.2:
+        addl      $384, %eax
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_38.0.2
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm0
+        shrl      $31, %r8d
+        addpd     %xmm0, %xmm3
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm0, %xmm3
+        lea       log2(%rip), %r11
+        movq      (%r11,%r8,8), %xmm4
+        mulsd     %xmm3, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        shll      $15, %r8d
+        orl       %r8d, %eax
+        pinsrw    $3, %eax, %xmm0
+        addsd     %xmm1, %xmm5
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_38.0.2:
+.L_2TAG_PACKET_37.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_39.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $26, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_9.0.2:
+        movq      16(%rsp), %xmm1
+        movq      %xmm1, %xmm2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_40.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_40.0.2:
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_39.0.2
+        shrl      $21, %edx
+        cmpl      $1075, %edx
+        ja        .L_2TAG_PACKET_41.0.2
+        je        .L_2TAG_PACKET_42.0.2
+        cmpl      $1023, %edx
+        jb        .L_2TAG_PACKET_41.0.2
+        movq      16(%rsp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movq      %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_41.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_41.0.2
+.L_2TAG_PACKET_43.0.2:
+        movq      8(%rsp), %xmm0
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_44.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_42.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_43.0.2
+.L_2TAG_PACKET_41.0.2:
+        testl     $-2147483648, %ecx
+        je        .L_2TAG_PACKET_22.0.2
+        xorpd     %xmm0, %xmm0
+.L_2TAG_PACKET_44.0.2:
+        movl      $16368, %eax
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %eax, %xmm1
+        divsd     %xmm0, %xmm1
+        movq      %xmm1, %xmm0
+        movl      $27, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_12.0.2:
+        movq      8(%rsp), %xmm2
+        movq      16(%rsp), %xmm6
+        pextrw    $3, %xmm2, %eax
+        pextrw    $3, %xmm6, %edx
+        movl      $32752, %ecx
+        andl      %edx, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_45.0.2
+        andl      $32752, %eax
+        subl      $16368, %eax
+        xorl      %eax, %edx
+        testl     $32768, %edx
+        jne       .L_2TAG_PACKET_46.0.2
+.L_2TAG_PACKET_47.0.2:
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        shrl      $16, %r8d
+        orl       %r8d, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_14.0.2:
+        movl      $24, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_46.0.2:
+        movl      $16, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        testl     $-2147483648, %r8d
+        je        .L_2TAG_PACKET_48.0.2
+        movq      $0x8000000000000000, %r9
+        movd      %r9, %xmm2
+        xorpd     %xmm2, %xmm0
+.L_2TAG_PACKET_48.0.2:
+        movl      $25, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_13.0.2:
+        pextrw    $3, %xmm5, %ecx
+        pextrw    $3, %xmm4, %edx
+        movl      $-1, %eax
+        andl      $32752, %ecx
+        subl      $16368, %ecx
+        andl      $32752, %edx
+        addl      %ecx, %edx
+        movl      $-31, %ecx
+        sarl      $4, %edx
+        subl      %edx, %ecx
+        jle       .L_2TAG_PACKET_49.0.2
+        cmpl      $20, %ecx
+        ja        .L_2TAG_PACKET_50.0.2
+        shll      %cl, %eax
+.L_2TAG_PACKET_49.0.2:
+        movd      %eax, %xmm0
+        psllq     $32, %xmm0
+        andpd     %xmm5, %xmm0
+        subsd     %xmm0, %xmm5
+        addsd     %xmm1, %xmm5
+        mulsd     %xmm4, %xmm0
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+.L_2TAG_PACKET_50.0.2:
+        jmp       .L_2TAG_PACKET_48.0.2
+.L_2TAG_PACKET_2.0.2:
+        movw      22(%rsp), %cx
+        movl      $-2147483648, %edx
+        movd      %rdx, %xmm1
+        xorpd     %xmm7, %xmm7
+        paddd     %xmm4, %xmm0
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        paddq     %xmm3, %xmm1
+        andpd     %xmm1, %xmm5
+        andw      $32752, %cx
+        cmpw      $16560, %cx
+        jb        .L_2TAG_PACKET_3.0.2
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        addl      $16351, %eax
+        shrl      $4, %eax
+        subl      $1022, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        lea       L_tbl(%rip), %r11
+        movq      coeff_h(%rip), %xmm4
+        mulsd     %xmm0, %xmm3
+        movq      coeff_h(%rip), %xmm6
+        subsd     %xmm2, %xmm5
+        movq      8+coeff_h(%rip), %xmm1
+        pshufd    $68, %xmm3, %xmm2
+        unpcklpd  %xmm3, %xmm5
+        addsd     %xmm5, %xmm3
+        movq      8+coeff_h(%rip), %xmm0
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3648(%r11,%rdx), %xmm7
+        mulsd     %xmm5, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        movq      %xmm5, %xmm2
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm0, %xmm5
+        movq      %xmm7, %xmm0
+        addsd     %xmm3, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm6
+        subsd     %xmm7, %xmm0
+        movq      %xmm7, %xmm2
+        addsd     %xmm4, %xmm7
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm4
+        pshufd    $238, %xmm5, %xmm2
+        movq      %xmm7, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm0, %xmm4
+        movapd    coeff(%rip), %xmm0
+        subsd     %xmm7, %xmm5
+        addsd     %xmm4, %xmm6
+        movq      %xmm7, %xmm4
+        addsd     %xmm2, %xmm5
+        addsd     %xmm1, %xmm7
+        movapd    64+coeff(%rip), %xmm2
+        subsd     %xmm7, %xmm4
+        addsd     %xmm5, %xmm6
+        addsd     %xmm1, %xmm4
+        pshufd    $238, %xmm7, %xmm5
+        movapd    %xmm7, %xmm1
+        addsd     %xmm5, %xmm7
+        subsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        movapd    80+coeff(%rip), %xmm5
+        pshufd    $68, %xmm3, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm1, %xmm6
+        movapd    32+coeff(%rip), %xmm1
+        mulpd     %xmm3, %xmm0
+        mulpd     %xmm3, %xmm2
+        pshufd    $68, %xmm3, %xmm4
+        mulpd     %xmm3, %xmm3
+        addpd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm5
+        mulsd     %xmm3, %xmm4
+        movq      HIGHMASK_LOG_X(%rip), %xmm2
+        mulpd     %xmm3, %xmm3
+        movq      16(%rsp), %xmm1
+        movw      22(%rsp), %cx
+        mulpd     %xmm4, %xmm0
+        pextrw    $3, %xmm7, %eax
+        mulpd     %xmm4, %xmm5
+        mulpd     %xmm3, %xmm0
+        movq      8+HIGHMASK_Y(%rip), %xmm4
+        andpd     %xmm7, %xmm2
+        addsd     %xmm6, %xmm5
+        subsd     %xmm2, %xmm7
+        addpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      $16368, %eax
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_45.0.2
+        addl      %eax, %ecx
+        cmpl      $16576, %ecx
+        jae       .L_2TAG_PACKET_51.0.2
+        pshufd    $238, %xmm5, %xmm0
+        andpd     %xmm1, %xmm4
+        movq      %xmm1, %xmm3
+        addsd     %xmm0, %xmm5
+        subsd     %xmm4, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm1
+        movq      %xmm6, %xmm5
+        mulsd     %xmm7, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        movapd    e_coeff(%rip), %xmm7
+        movd      %xmm6, %edx
+        subsd     %xmm5, %xmm6
+        lea       T_exp(%rip), %r11
+        movapd    16+e_coeff(%rip), %xmm3
+        movq      32+e_coeff(%rip), %xmm2
+        subsd     %xmm6, %xmm4
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    (%r11,%rdx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        pextrw    $3, %xmm6, %edx
+        shrl      $8, %ecx
+        movl      %ecx, %eax
+        shrl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        movd      %ecx, %xmm6
+        pshufd    $68, %xmm4, %xmm0
+        pshufd    $68, %xmm4, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm1, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm4, %xmm2
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_12.0.2
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm2
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm2
+        pshufd    $238, %xmm0, %xmm3
+        addl      $1023, %eax
+        shll      $20, %eax
+        orl       %r8d, %eax
+        movd      %eax, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm2, %xmm0
+        psllq     $32, %xmm4
+        addsd     %xmm3, %xmm0
+        movq      %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_13.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_14.0.2
+.L_2TAG_PACKET_52.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_45.0.2:
+        movq      8(%rsp), %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm2
+        addsd     %xmm0, %xmm2
+        pextrw    $3, %xmm2, %eax
+        cmpl      $0, %eax
+        jne       .L_2TAG_PACKET_53.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_53.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %edx
+        movq      %xmm1, %xmm3
+        psrlq     $20, %xmm3
+        movd      %xmm3, %ecx
+        orl       %edx, %ecx
+        je        .L_2TAG_PACKET_54.0.2
+        addsd     %xmm1, %xmm1
+        movq      %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_51.0.2:
+        pextrw    $3, %xmm1, %eax
+        pextrw    $3, %xmm2, %ecx
+        xorl      %ecx, %eax
+        testl     $32768, %eax
+        je        .L_2TAG_PACKET_47.0.2
+        jmp       .L_2TAG_PACKET_46.0.2
+.L_2TAG_PACKET_54.0.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        subl      $16368, %eax
+        xorl      %edx, %eax
+        testl     $32768, %eax
+        je        .L_2TAG_PACKET_55.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_55.0.2:
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_17.0.2:
+        movq      %xmm0, 24(%rsp)
+..B1.3:
+        movq      24(%rsp), %xmm0
+.L_2TAG_PACKET_56.0.2:
+..B1.5:
+        addq      $40, %rsp
+..___tag_value_pow.4:
+        ret       
+..___tag_value_pow.5:
+END(pow)
+# -- End  pow
+	.section .rodata, "a"
+	.align 16
+	.align 16
+HIGHSIGMASK:
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	4294965248
+	.type	HIGHSIGMASK,@object
+	.size	HIGHSIGMASK,16
+	.align 16
+LOG2_E:
+	.long	0
+	.long	1073160192
+	.long	370913857
+	.long	3210587105
+	.type	LOG2_E,@object
+	.size	LOG2_E,16
+	.align 16
+coeff:
+	.long	1841914130
+	.long	3213059448
+	.long	3995341938
+	.long	3214607105
+	.long	2677381210
+	.long	3216320731
+	.long	3011779882
+	.long	3218479542
+	.long	1367832035
+	.long	1066403058
+	.long	2894285243
+	.long	1067936923
+	.long	1215221452
+	.long	1069835102
+	.long	370913857
+	.long	3210587105
+	.long	2677381210
+	.long	3216320731
+	.long	4172642429
+	.long	1056068382
+	.long	1215221451
+	.long	1069835102
+	.long	1092638156
+	.long	3184925618
+	.type	coeff,@object
+	.size	coeff,96
+	.align 16
+L_tbl:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	536870912
+	.long	1072689162
+	.long	2523013013
+	.long	1046157398
+	.long	3758096384
+	.long	1072685081
+	.long	3851513758
+	.long	3190968952
+	.long	0
+	.long	1072681007
+	.long	2241466466
+	.long	1046044599
+	.long	3221225472
+	.long	1072676937
+	.long	2990928271
+	.long	3193084984
+	.long	3758096384
+	.long	1072672873
+	.long	2905112743
+	.long	3192918576
+	.long	1610612736
+	.long	1072668815
+	.long	3370591264
+	.long	1046051793
+	.long	2147483648
+	.long	1072664762
+	.long	3272361216
+	.long	3193793653
+	.long	3758096384
+	.long	1072660714
+	.long	46546755
+	.long	1043206936
+	.long	3221225472
+	.long	1072656672
+	.long	3017067724
+	.long	3192177962
+	.long	0
+	.long	1072652636
+	.long	3688436631
+	.long	3192814956
+	.long	2684354560
+	.long	1072648604
+	.long	1707461992
+	.long	3193056712
+	.long	2684354560
+	.long	1072644578
+	.long	1188114540
+	.long	3193603086
+	.long	3758096384
+	.long	1072640557
+	.long	3533180564
+	.long	1045459375
+	.long	2684354560
+	.long	1072636542
+	.long	2000337630
+	.long	3193475557
+	.long	2684354560
+	.long	1072632532
+	.long	3698062443
+	.long	3193752766
+	.long	3758096384
+	.long	1072628527
+	.long	3161606138
+	.long	3190532995
+	.long	2147483648
+	.long	1072624528
+	.long	3165265478
+	.long	3193158459
+	.long	1610612736
+	.long	1072620534
+	.long	1600940077
+	.long	3193226777
+	.long	2147483648
+	.long	1072616545
+	.long	1363272552
+	.long	3192614278
+	.long	3758096384
+	.long	1072612561
+	.long	3966209910
+	.long	3191249654
+	.long	2147483648
+	.long	1072608583
+	.long	1093672789
+	.long	3190637330
+	.long	1610612736
+	.long	1072604610
+	.long	1735239357
+	.long	3192753616
+	.long	1610612736
+	.long	1072600642
+	.long	1470665156
+	.long	1045559697
+	.long	2684354560
+	.long	1072596679
+	.long	3840624926
+	.long	1045928953
+	.long	536870912
+	.long	1072592722
+	.long	4259072556
+	.long	3191035622
+	.long	3221225472
+	.long	1072588769
+	.long	3613088753
+	.long	3192165681
+	.long	2147483648
+	.long	1072584822
+	.long	3175234446
+	.long	1039486948
+	.long	1610612736
+	.long	1072580880
+	.long	856576441
+	.long	1045702812
+	.long	2147483648
+	.long	1072576943
+	.long	2253498719
+	.long	3193285334
+	.long	2684354560
+	.long	1072573011
+	.long	1587070728
+	.long	3190801577
+	.long	3758096384
+	.long	1072569084
+	.long	159986317
+	.long	1042519436
+	.long	1073741824
+	.long	1072565163
+	.long	3999541949
+	.long	3192020440
+	.long	2684354560
+	.long	1072561246
+	.long	3281310262
+	.long	1045586786
+	.long	536870912
+	.long	1072557335
+	.long	3775179406
+	.long	1045226055
+	.long	3221225472
+	.long	1072553428
+	.long	643472356
+	.long	3193681786
+	.long	1073741824
+	.long	1072549527
+	.long	248169775
+	.long	1045068977
+	.long	3758096384
+	.long	1072545630
+	.long	307016632
+	.long	1042640932
+	.long	2147483648
+	.long	1072541739
+	.long	3872718526
+	.long	3189781486
+	.long	536870912
+	.long	1072537853
+	.long	969711630
+	.long	3191724732
+	.long	3221225472
+	.long	1072533971
+	.long	4018820394
+	.long	3193189264
+	.long	1073741824
+	.long	1072530095
+	.long	3102233092
+	.long	1045510224
+	.long	3758096384
+	.long	1072526223
+	.long	1029307912
+	.long	3193812776
+	.long	1073741824
+	.long	1072522357
+	.long	984083153
+	.long	1045987403
+	.long	3221225472
+	.long	1072518495
+	.long	4171455401
+	.long	3193084080
+	.long	0
+	.long	1072514639
+	.long	2592660757
+	.long	1046121691
+	.long	1073741824
+	.long	1072510787
+	.long	2964365712
+	.long	1046054453
+	.long	2147483648
+	.long	1072506940
+	.long	3792777877
+	.long	3193704729
+	.long	2147483648
+	.long	1072503098
+	.long	2948536104
+	.long	3192467100
+	.long	1610612736
+	.long	1072499261
+	.long	3836005619
+	.long	1041873166
+	.long	536870912
+	.long	1072495429
+	.long	3124543160
+	.long	1044409168
+	.long	3221225472
+	.long	1072491601
+	.long	286227933
+	.long	1041065990
+	.long	1073741824
+	.long	1072487779
+	.long	2111296776
+	.long	3193604419
+	.long	2147483648
+	.long	1072483961
+	.long	2606822001
+	.long	3192940394
+	.long	2147483648
+	.long	1072480148
+	.long	194696800
+	.long	1046026063
+	.long	1610612736
+	.long	1072476340
+	.long	8535452
+	.long	1046200178
+	.long	536870912
+	.long	1072472537
+	.long	950463625
+	.long	3192731897
+	.long	2147483648
+	.long	1072468738
+	.long	973831566
+	.long	1045683197
+	.long	3221225472
+	.long	1072464944
+	.long	3330435892
+	.long	3190277577
+	.long	3221225472
+	.long	1072461155
+	.long	208692097
+	.long	3193517651
+	.long	1610612736
+	.long	1072457371
+	.long	2113097415
+	.long	1044781749
+	.long	3758096384
+	.long	1072453591
+	.long	1088808936
+	.long	3193716142
+	.long	0
+	.long	1072449817
+	.long	1443002127
+	.long	3193250205
+	.long	3221225472
+	.long	1072446046
+	.long	3967357419
+	.long	1046109477
+	.long	1610612736
+	.long	1072442281
+	.long	3013517861
+	.long	3193159691
+	.long	2147483648
+	.long	1072438520
+	.long	2524586286
+	.long	1046121951
+	.long	1610612736
+	.long	1072434764
+	.long	1476892861
+	.long	1046434731
+	.long	0
+	.long	1072431013
+	.long	3089640950
+	.long	3192305780
+	.long	536870912
+	.long	1072427266
+	.long	3812255529
+	.long	1045730879
+	.long	0
+	.long	1072423524
+	.long	995354762
+	.long	3191528673
+	.long	1610612736
+	.long	1072419786
+	.long	3260567684
+	.long	1046273695
+	.long	2147483648
+	.long	1072416053
+	.long	2738210286
+	.long	3191471516
+	.long	536870912
+	.long	1072412325
+	.long	1931849805
+	.long	1044560405
+	.long	1610612736
+	.long	1072408601
+	.long	358896655
+	.long	1044029237
+	.long	1073741824
+	.long	1072404882
+	.long	2214589842
+	.long	3193202126
+	.long	2684354560
+	.long	1072401167
+	.long	3118097363
+	.long	3192592906
+	.long	2147483648
+	.long	1072397457
+	.long	1835998884
+	.long	1045788247
+	.long	0
+	.long	1072393752
+	.long	1585488319
+	.long	1045289910
+	.long	0
+	.long	1072390051
+	.long	480160949
+	.long	1046030455
+	.long	2684354560
+	.long	1072386354
+	.long	1832959667
+	.long	3193013644
+	.long	2684354560
+	.long	1072382662
+	.long	3611346555
+	.long	1044544210
+	.long	1073741824
+	.long	1072378975
+	.long	2749418734
+	.long	3193712580
+	.long	1073741824
+	.long	1072375292
+	.long	2390043472
+	.long	3191710658
+	.long	3221225472
+	.long	1072371613
+	.long	2828199902
+	.long	1042265217
+	.long	3221225472
+	.long	1072367939
+	.long	569209321
+	.long	3191230982
+	.long	536870912
+	.long	1072364270
+	.long	236159139
+	.long	1046240123
+	.long	536870912
+	.long	1072360605
+	.long	1010656270
+	.long	3193813968
+	.long	1610612736
+	.long	1072356944
+	.long	2409080597
+	.long	1044025029
+	.long	536870912
+	.long	1072353288
+	.long	598419513
+	.long	1043327370
+	.long	1073741824
+	.long	1072349636
+	.long	4105950479
+	.long	1045747958
+	.long	3758096384
+	.long	1072345988
+	.long	343243853
+	.long	3192420172
+	.long	3221225472
+	.long	1072342345
+	.long	2088439530
+	.long	1046172091
+	.long	536870912
+	.long	1072338707
+	.long	4117721107
+	.long	1043882496
+	.long	3758096384
+	.long	1072335072
+	.long	3192032958
+	.long	3192998645
+	.long	3758096384
+	.long	1072331442
+	.long	2366522518
+	.long	1045401957
+	.long	1610612736
+	.long	1072327817
+	.long	3685533141
+	.long	3193701947
+	.long	536870912
+	.long	1072324196
+	.long	1058658672
+	.long	3193572492
+	.long	536870912
+	.long	1072320579
+	.long	166346347
+	.long	1045456348
+	.long	2147483648
+	.long	1072316966
+	.long	2027889772
+	.long	1046349302
+	.long	1073741824
+	.long	1072313358
+	.long	1079497888
+	.long	1044585259
+	.long	1073741824
+	.long	1072309754
+	.long	2189851573
+	.long	1045132990
+	.long	2684354560
+	.long	1072306154
+	.long	2486629386
+	.long	3193613625
+	.long	536870912
+	.long	1072302559
+	.long	1263686579
+	.long	1044789259
+	.long	0
+	.long	1072298968
+	.long	2412061798
+	.long	3191369627
+	.long	536870912
+	.long	1072295381
+	.long	584315716
+	.long	3193144135
+	.long	1610612736
+	.long	1072291798
+	.long	449000738
+	.long	1046330451
+	.long	0
+	.long	1072288220
+	.long	3938320157
+	.long	1044446220
+	.long	3758096384
+	.long	1072284645
+	.long	2949844595
+	.long	3193462371
+	.long	3758096384
+	.long	1072281075
+	.long	2771329642
+	.long	3192121593
+	.long	536870912
+	.long	1072277510
+	.long	3971508621
+	.long	3193002806
+	.long	2147483648
+	.long	1072273948
+	.long	4071942301
+	.long	1044952619
+	.long	536870912
+	.long	1072270391
+	.long	2090502395
+	.long	1044660556
+	.long	0
+	.long	1072266838
+	.long	3657520961
+	.long	3193770938
+	.long	3758096384
+	.long	1072263288
+	.long	1608175110
+	.long	1045543239
+	.long	0
+	.long	1072259744
+	.long	2506924180
+	.long	1045530501
+	.long	1073741824
+	.long	1072256203
+	.long	18238493
+	.long	1046305623
+	.long	3221225472
+	.long	1072252666
+	.long	3862640487
+	.long	3192882407
+	.long	1073741824
+	.long	1072249134
+	.long	3850158761
+	.long	1043656099
+	.long	3758096384
+	.long	1072245605
+	.long	2356524356
+	.long	1045915296
+	.long	3221225472
+	.long	1072242081
+	.long	936497287
+	.long	3193842353
+	.long	2147483648
+	.long	1072238561
+	.long	2840845344
+	.long	1046454771
+	.long	2147483648
+	.long	1072235045
+	.long	3688100713
+	.long	1044895451
+	.long	2684354560
+	.long	1072231533
+	.long	479979913
+	.long	3193842442
+	.long	2684354560
+	.long	1072228025
+	.long	1016321898
+	.long	1046251032
+	.long	3758096384
+	.long	1072224521
+	.long	562232474
+	.long	3191974558
+	.long	536870912
+	.long	1072221022
+	.long	3870512029
+	.long	3193113881
+	.long	1610612736
+	.long	1072217526
+	.long	1239780547
+	.long	3191583604
+	.long	2684354560
+	.long	1072214034
+	.long	2815421327
+	.long	1045873682
+	.long	0
+	.long	1072210547
+	.long	2371009561
+	.long	1041508792
+	.long	1610612736
+	.long	1072207063
+	.long	1304636524
+	.long	3192414284
+	.long	3221225472
+	.long	1072203583
+	.long	210144854
+	.long	3193327333
+	.long	0
+	.long	1072200108
+	.long	1454303272
+	.long	1046360024
+	.long	1610612736
+	.long	1072196636
+	.long	2095757548
+	.long	1044984677
+	.long	3221225472
+	.long	1072193168
+	.long	2027215580
+	.long	3192880933
+	.long	0
+	.long	1072189705
+	.long	214794880
+	.long	1043457954
+	.long	1073741824
+	.long	1072186245
+	.long	884624917
+	.long	1043497079
+	.long	2147483648
+	.long	1072182789
+	.long	2792396634
+	.long	3193171685
+	.long	2684354560
+	.long	1072179337
+	.long	4128995250
+	.long	3192103434
+	.long	2684354560
+	.long	1072175889
+	.long	333866043
+	.long	1046372325
+	.long	3221225472
+	.long	1072172445
+	.long	2194445544
+	.long	3193958905
+	.long	2684354560
+	.long	1072169005
+	.long	2316082269
+	.long	3192041703
+	.long	1610612736
+	.long	1072165569
+	.long	581005057
+	.long	1046322848
+	.long	536870912
+	.long	1072162137
+	.long	3280786513
+	.long	1045457251
+	.long	3221225472
+	.long	1072158708
+	.long	2567093361
+	.long	1044710359
+	.long	1073741824
+	.long	1072155284
+	.long	3740443584
+	.long	1044224237
+	.long	2684354560
+	.long	1072151863
+	.long	3981028272
+	.long	1042596351
+	.long	3758096384
+	.long	1072148446
+	.long	3820011120
+	.long	3191915623
+	.long	0
+	.long	1072145034
+	.long	2946439484
+	.long	3193831276
+	.long	3758096384
+	.long	1072141624
+	.long	3075274422
+	.long	3190132432
+	.long	2684354560
+	.long	1072138219
+	.long	496052167
+	.long	1043619760
+	.long	1073741824
+	.long	1072134818
+	.long	271106589
+	.long	3192265149
+	.long	2684354560
+	.long	1072131420
+	.long	2091955684
+	.long	1044443554
+	.long	3758096384
+	.long	1072128026
+	.long	723240109
+	.long	3191007419
+	.long	3758096384
+	.long	1072124636
+	.long	1748629070
+	.long	1044510075
+	.long	3221225472
+	.long	1072121250
+	.long	3289522046
+	.long	3193095178
+	.long	1610612736
+	.long	1072117868
+	.long	3599052146
+	.long	3193720427
+	.long	3221225472
+	.long	1072114489
+	.long	2446758135
+	.long	3193436303
+	.long	3758096384
+	.long	1072111114
+	.long	1652171097
+	.long	3192137173
+	.long	3221225472
+	.long	1072107743
+	.long	1353007155
+	.long	1044523902
+	.long	1610612736
+	.long	1072104376
+	.long	990601105
+	.long	1046296663
+	.long	3758096384
+	.long	1072101012
+	.long	2228627618
+	.long	3193041040
+	.long	0
+	.long	1072097653
+	.long	812484756
+	.long	3191950723
+	.long	3758096384
+	.long	1072094296
+	.long	817833130
+	.long	3192279242
+	.long	2147483648
+	.long	1072090944
+	.long	3563228521
+	.long	3193810951
+	.long	3221225472
+	.long	1072087595
+	.long	2729108859
+	.long	3190936185
+	.long	3221225472
+	.long	1072084250
+	.long	2249121662
+	.long	3190639690
+	.long	2147483648
+	.long	1072080909
+	.long	4082471745
+	.long	3193929368
+	.long	3758096384
+	.long	1072077571
+	.long	2827323806
+	.long	3193708561
+	.long	3758096384
+	.long	1072074237
+	.long	735866167
+	.long	1042434690
+	.long	2684354560
+	.long	1072070907
+	.long	3240808889
+	.long	3191918422
+	.long	0
+	.long	1072067581
+	.long	466482777
+	.long	3186962221
+	.long	0
+	.long	1072064258
+	.long	1576076296
+	.long	1045849056
+	.long	3221225472
+	.long	1072060938
+	.long	2751923560
+	.long	3191910703
+	.long	0
+	.long	1072057623
+	.long	1908755527
+	.long	1046437515
+	.long	0
+	.long	1072054311
+	.long	3175841411
+	.long	1044572886
+	.long	2684354560
+	.long	1072051002
+	.long	1633258450
+	.long	3192670420
+	.long	3221225472
+	.long	1072047697
+	.long	1867746657
+	.long	1045726209
+	.long	2684354560
+	.long	1072044396
+	.long	338968864
+	.long	3193084662
+	.long	0
+	.long	1072041099
+	.long	1501742471
+	.long	3191742031
+	.long	0
+	.long	1072037805
+	.long	4266775786
+	.long	3192686970
+	.long	2147483648
+	.long	1072034514
+	.long	4249283553
+	.long	1045769728
+	.long	2684354560
+	.long	1072031227
+	.long	2758366873
+	.long	1046402161
+	.long	1610612736
+	.long	1072027944
+	.long	2161186990
+	.long	1044736865
+	.long	2684354560
+	.long	1072024664
+	.long	810300171
+	.long	1045748777
+	.long	2147483648
+	.long	1072021388
+	.long	183688927
+	.long	3191515581
+	.long	3758096384
+	.long	1072018115
+	.long	368874072
+	.long	3192363575
+	.long	3221225472
+	.long	1072014846
+	.long	2459092970
+	.long	1041794640
+	.long	536870912
+	.long	1072011581
+	.long	867488640
+	.long	1046310291
+	.long	536870912
+	.long	1072008319
+	.long	50140871
+	.long	1043327329
+	.long	2684354560
+	.long	1072005060
+	.long	1241902518
+	.long	3192739252
+	.long	2684354560
+	.long	1072001805
+	.long	1027881659
+	.long	3193858388
+	.long	0
+	.long	1071998554
+	.long	38457322
+	.long	1045489179
+	.long	0
+	.long	1071995306
+	.long	3432963337
+	.long	3190969347
+	.long	1610612736
+	.long	1071992061
+	.long	534931792
+	.long	1046302734
+	.long	1610612736
+	.long	1071988820
+	.long	1817895268
+	.long	3192551860
+	.long	3221225472
+	.long	1071985582
+	.long	357237383
+	.long	3191870833
+	.long	2684354560
+	.long	1071982348
+	.long	108262401
+	.long	3193365867
+	.long	3758096384
+	.long	1071979117
+	.long	1964729244
+	.long	1042502249
+	.long	2684354560
+	.long	1071975890
+	.long	2088446957
+	.long	1038010503
+	.long	3221225472
+	.long	1071972666
+	.long	2947239447
+	.long	1046377845
+	.long	1610612736
+	.long	1071969446
+	.long	774932072
+	.long	1046064854
+	.long	2147483648
+	.long	1071966229
+	.long	4080937590
+	.long	3193041284
+	.long	3758096384
+	.long	1071963015
+	.long	2208251454
+	.long	1045945089
+	.long	3221225472
+	.long	1071959805
+	.long	2850924475
+	.long	1045650959
+	.long	0
+	.long	1071956599
+	.long	714040997
+	.long	1046275153
+	.long	3221225472
+	.long	1071953395
+	.long	85533782
+	.long	3192816920
+	.long	3221225472
+	.long	1071950195
+	.long	1252511005
+	.long	1044805706
+	.long	1073741824
+	.long	1071946999
+	.long	2384659038
+	.long	3193391602
+	.long	0
+	.long	1071943806
+	.long	416481813
+	.long	1043730233
+	.long	536870912
+	.long	1071940616
+	.long	1675424499
+	.long	1046348030
+	.long	3221225472
+	.long	1071937429
+	.long	1175989513
+	.long	3193009113
+	.long	2684354560
+	.long	1071934246
+	.long	2400084650
+	.long	3192451713
+	.long	3758096384
+	.long	1071931066
+	.long	1467335692
+	.long	3193350868
+	.long	1610612736
+	.long	1071927890
+	.long	266493801
+	.long	1044954481
+	.long	1073741824
+	.long	1071924717
+	.long	3919093445
+	.long	1046023575
+	.long	2147483648
+	.long	1071921547
+	.long	3017408483
+	.long	1044880828
+	.long	536870912
+	.long	1071918381
+	.long	948849966
+	.long	3193892224
+	.long	3758096384
+	.long	1071915217
+	.long	1870232600
+	.long	1045777228
+	.long	536870912
+	.long	1071912058
+	.long	822381492
+	.long	3193639186
+	.long	2147483648
+	.long	1071908901
+	.long	788243705
+	.long	1044966343
+	.long	1073741824
+	.long	1071905748
+	.long	1344278809
+	.long	1044428545
+	.long	1073741824
+	.long	1071902598
+	.long	172864300
+	.long	1045765608
+	.long	2684354560
+	.long	1071899451
+	.long	211555467
+	.long	3192963574
+	.long	536870912
+	.long	1071896308
+	.long	3373438023
+	.long	1045643168
+	.long	0
+	.long	1071893168
+	.long	2867180960
+	.long	3189945998
+	.long	536870912
+	.long	1071890031
+	.long	36724362
+	.long	3193240584
+	.long	1610612736
+	.long	1071886897
+	.long	2140176984
+	.long	1045945349
+	.long	0
+	.long	1071883767
+	.long	436842360
+	.long	1040712587
+	.long	3758096384
+	.long	1071880639
+	.long	1225147329
+	.long	3193814594
+	.long	3758096384
+	.long	1071877515
+	.long	1586157348
+	.long	3191614322
+	.long	536870912
+	.long	1071874395
+	.long	3329332918
+	.long	1041699791
+	.long	2684354560
+	.long	1071871277
+	.long	1635968041
+	.long	3191783756
+	.long	1073741824
+	.long	1071868163
+	.long	2876158382
+	.long	1046097093
+	.long	1073741824
+	.long	1071865052
+	.long	4267556964
+	.long	3193723000
+	.long	1073741824
+	.long	1071861944
+	.long	195475940
+	.long	1045520795
+	.long	2147483648
+	.long	1071858839
+	.long	2239193514
+	.long	1046478675
+	.long	0
+	.long	1071855738
+	.long	4168275596
+	.long	1044926285
+	.long	2684354560
+	.long	1071852639
+	.long	142514114
+	.long	1045595182
+	.long	2147483648
+	.long	1071849544
+	.long	1943457984
+	.long	3192930015
+	.long	2147483648
+	.long	1071846452
+	.long	202659489
+	.long	3193926317
+	.long	2684354560
+	.long	1071843363
+	.long	2208408789
+	.long	3193857484
+	.long	3758096384
+	.long	1071840277
+	.long	2237297552
+	.long	3192939576
+	.long	1073741824
+	.long	1071837195
+	.long	2726920839
+	.long	1044193954
+	.long	3758096384
+	.long	1071834115
+	.long	2337732207
+	.long	3193611773
+	.long	2147483648
+	.long	1071831039
+	.long	1390088602
+	.long	1044000317
+	.long	1610612736
+	.long	1071827966
+	.long	3806188736
+	.long	3193463913
+	.long	1073741824
+	.long	1071824896
+	.long	1795276560
+	.long	1043671965
+	.long	1073741824
+	.long	1071821829
+	.long	2960792799
+	.long	1046240474
+	.long	2147483648
+	.long	1071818765
+	.long	3350591592
+	.long	3193333939
+	.long	3221225472
+	.long	1071815704
+	.long	408870754
+	.long	3193322854
+	.long	0
+	.long	1071812647
+	.long	4146717132
+	.long	1046063520
+	.long	2147483648
+	.long	1071809592
+	.long	1681114919
+	.long	3192114313
+	.long	0
+	.long	1071806541
+	.long	1098393137
+	.long	3190846732
+	.long	2684354560
+	.long	1071803492
+	.long	2437484983
+	.long	3193448718
+	.long	1073741824
+	.long	1071800447
+	.long	1036809185
+	.long	3192023501
+	.long	0
+	.long	1071797405
+	.long	659668848
+	.long	3193596312
+	.long	3221225472
+	.long	1071794365
+	.long	1112062459
+	.long	3192773376
+	.long	2147483648
+	.long	1071791329
+	.long	4082956335
+	.long	1045830513
+	.long	1610612736
+	.long	1071788296
+	.long	2387089965
+	.long	1045532601
+	.long	1610612736
+	.long	1071785266
+	.long	1522101980
+	.long	3193941957
+	.long	1073741824
+	.long	1071782239
+	.long	2157197585
+	.long	3188193305
+	.long	1073741824
+	.long	1071779215
+	.long	946810220
+	.long	3193223819
+	.long	1073741824
+	.long	1071776194
+	.long	4069942444
+	.long	3193878549
+	.long	536870912
+	.long	1071773176
+	.long	1693463440
+	.long	1046360588
+	.long	536870912
+	.long	1071770161
+	.long	1954543254
+	.long	1046409381
+	.long	1073741824
+	.long	1071767149
+	.long	1050471249
+	.long	3193933095
+	.long	536870912
+	.long	1071764140
+	.long	1256240478
+	.long	1046456865
+	.long	536870912
+	.long	1071761134
+	.long	676764254
+	.long	1046055503
+	.long	536870912
+	.long	1071758131
+	.long	1421032967
+	.long	1044779786
+	.long	536870912
+	.long	1071755131
+	.long	38735992
+	.long	3192766355
+	.long	0
+	.long	1071752134
+	.long	2960669690
+	.long	1044484680
+	.long	3758096384
+	.long	1071749139
+	.long	788707382
+	.long	1045299895
+	.long	3221225472
+	.long	1071746148
+	.long	685689300
+	.long	1040778831
+	.long	2147483648
+	.long	1071743160
+	.long	1170994182
+	.long	1046159174
+	.long	1073741824
+	.long	1071740175
+	.long	64591436
+	.long	1046153849
+	.long	0
+	.long	1071737193
+	.long	2338031659
+	.long	3189997702
+	.long	2684354560
+	.long	1071734213
+	.long	1941624568
+	.long	3186752676
+	.long	536870912
+	.long	1071731237
+	.long	1401255580
+	.long	1046383990
+	.long	2684354560
+	.long	1071728263
+	.long	376888427
+	.long	1045896456
+	.long	536870912
+	.long	1071725293
+	.long	2831424639
+	.long	3193539109
+	.long	1610612736
+	.long	1071722325
+	.long	3303123696
+	.long	1044599415
+	.long	2684354560
+	.long	1071719360
+	.long	1077295329
+	.long	3189877372
+	.long	3221225472
+	.long	1071716398
+	.long	1434061099
+	.long	3184529771
+	.long	3221225472
+	.long	1071713439
+	.long	2104991590
+	.long	1045062074
+	.long	3221225472
+	.long	1071710483
+	.long	722060869
+	.long	3193788526
+	.long	536870912
+	.long	1071704580
+	.long	3928796486
+	.long	1046129020
+	.long	536870912
+	.long	1071698688
+	.long	588844628
+	.long	1045492135
+	.long	2684354560
+	.long	1071692807
+	.long	326739366
+	.long	3193004445
+	.long	1610612736
+	.long	1071686938
+	.long	2456436042
+	.long	1046278169
+	.long	2684354560
+	.long	1071681080
+	.long	2831303512
+	.long	1043670046
+	.long	536870912
+	.long	1071675234
+	.long	607223418
+	.long	1045507322
+	.long	0
+	.long	1071669399
+	.long	4254921332
+	.long	3193290483
+	.long	0
+	.long	1071663575
+	.long	914994333
+	.long	3191263853
+	.long	1073741824
+	.long	1071657762
+	.long	4147050180
+	.long	3193228552
+	.long	2684354560
+	.long	1071651960
+	.long	594554157
+	.long	3193503935
+	.long	0
+	.long	1071646170
+	.long	1062846796
+	.long	1045944331
+	.long	1073741824
+	.long	1071636109
+	.long	2909238893
+	.long	3193436884
+	.long	1073741824
+	.long	1071624572
+	.long	1682918119
+	.long	1042211899
+	.long	1073741824
+	.long	1071613057
+	.long	2419209426
+	.long	1045437062
+	.long	1073741824
+	.long	1071601564
+	.long	2951341321
+	.long	3190193214
+	.long	0
+	.long	1071590093
+	.long	3084900875
+	.long	3192394907
+	.long	1073741824
+	.long	1071578643
+	.long	999567454
+	.long	1046433447
+	.long	2147483648
+	.long	1071567215
+	.long	1570101857
+	.long	3193291160
+	.long	0
+	.long	1071555809
+	.long	1080647881
+	.long	3185154585
+	.long	0
+	.long	1071544424
+	.long	3526309177
+	.long	1044843640
+	.long	2147483648
+	.long	1071533060
+	.long	2213463349
+	.long	3191738930
+	.long	1073741824
+	.long	1071521718
+	.long	1039925195
+	.long	3192618353
+	.long	1073741824
+	.long	1071510397
+	.long	2115757280
+	.long	3193671567
+	.long	1073741824
+	.long	1071499097
+	.long	1188751495
+	.long	3191145560
+	.long	2147483648
+	.long	1071487818
+	.long	3983461449
+	.long	3193897029
+	.long	2147483648
+	.long	1071476560
+	.long	782141500
+	.long	1042879962
+	.long	2147483648
+	.long	1071465323
+	.long	4038904626
+	.long	1045063881
+	.long	2147483648
+	.long	1071454107
+	.long	2613036921
+	.long	3193217642
+	.long	0
+	.long	1071442912
+	.long	2095723435
+	.long	1044629175
+	.long	1073741824
+	.long	1071431737
+	.long	3879795974
+	.long	1045767874
+	.long	1073741824
+	.long	1071420583
+	.long	2662198042
+	.long	3191434637
+	.long	3221225472
+	.long	1071409449
+	.long	4037605722
+	.long	3193703090
+	.long	2147483648
+	.long	1071398336
+	.long	1860331835
+	.long	1040814822
+	.long	3221225472
+	.long	1071387243
+	.long	1522972033
+	.long	3190305974
+	.long	1073741824
+	.long	1071376171
+	.long	2361534207
+	.long	1043699366
+	.long	0
+	.long	1071365119
+	.long	4180309179
+	.long	1044142099
+	.long	0
+	.long	1071354087
+	.long	1201038528
+	.long	3192968772
+	.long	0
+	.long	1071343075
+	.long	1342478171
+	.long	3193251215
+	.long	0
+	.long	1071332083
+	.long	3836883348
+	.long	3193472007
+	.long	3221225472
+	.long	1071321110
+	.long	3864874250
+	.long	1045593126
+	.long	2147483648
+	.long	1071310158
+	.long	2169494998
+	.long	1046045346
+	.long	1073741824
+	.long	1071299226
+	.long	3785165075
+	.long	3193319246
+	.long	2147483648
+	.long	1071288313
+	.long	1137692678
+	.long	3192716779
+	.long	1073741824
+	.long	1071277420
+	.long	1752107598
+	.long	1046366120
+	.long	3221225472
+	.long	1071266546
+	.long	1912656912
+	.long	1046352281
+	.long	3221225472
+	.long	1071255692
+	.long	2882676334
+	.long	1046406353
+	.long	1073741824
+	.long	1071244858
+	.long	963612460
+	.long	1045282811
+	.long	0
+	.long	1071234043
+	.long	3811255773
+	.long	1046231636
+	.long	1073741824
+	.long	1071223247
+	.long	1126055989
+	.long	3192224037
+	.long	2147483648
+	.long	1071212470
+	.long	2079145427
+	.long	1044432413
+	.long	0
+	.long	1071201713
+	.long	3611595621
+	.long	1043358745
+	.long	2147483648
+	.long	1071190974
+	.long	390522769
+	.long	1045888252
+	.long	1073741824
+	.long	1071180255
+	.long	4087939723
+	.long	3192930745
+	.long	3221225472
+	.long	1071169554
+	.long	1451494480
+	.long	3190219274
+	.long	1073741824
+	.long	1071158873
+	.long	427176194
+	.long	3193042022
+	.long	2147483648
+	.long	1071148210
+	.long	1882381948
+	.long	3192727946
+	.long	2147483648
+	.long	1071137566
+	.long	3736313771
+	.long	3192087019
+	.long	1073741824
+	.long	1071126941
+	.long	1560398816
+	.long	3193185715
+	.long	2147483648
+	.long	1071116334
+	.long	1021942441
+	.long	1041526696
+	.long	2147483648
+	.long	1071105746
+	.long	3517080249
+	.long	3193576041
+	.long	3221225472
+	.long	1071095176
+	.long	2248589878
+	.long	1044527624
+	.long	2147483648
+	.long	1071084625
+	.long	2412896695
+	.long	1046112867
+	.long	3221225472
+	.long	1071074092
+	.long	3834725738
+	.long	1044562378
+	.long	1073741824
+	.long	1071063578
+	.long	1150920407
+	.long	1043768986
+	.long	0
+	.long	1071053082
+	.long	1379393428
+	.long	3188690690
+	.long	0
+	.long	1071042604
+	.long	3058183278
+	.long	3193617655
+	.long	0
+	.long	1071032144
+	.long	421133665
+	.long	3193417186
+	.long	0
+	.long	1071021702
+	.long	2860161357
+	.long	3191816125
+	.long	0
+	.long	1071011278
+	.long	1742405964
+	.long	1043580240
+	.long	0
+	.long	1071000872
+	.long	2821215927
+	.long	3188984273
+	.long	3221225472
+	.long	1070990483
+	.long	510275597
+	.long	1045813401
+	.long	2147483648
+	.long	1070980113
+	.long	304266588
+	.long	3191193536
+	.long	3221225472
+	.long	1070969760
+	.long	1854784211
+	.long	1046302073
+	.long	0
+	.long	1070959426
+	.long	3773082854
+	.long	3193008899
+	.long	2147483648
+	.long	1070949108
+	.long	3003572392
+	.long	1046404879
+	.long	3221225472
+	.long	1070938808
+	.long	1702149204
+	.long	1046407257
+	.long	2147483648
+	.long	1070928526
+	.long	3935314439
+	.long	1046438280
+	.long	3221225472
+	.long	1070918261
+	.long	2677087609
+	.long	1045501749
+	.long	2147483648
+	.long	1070908014
+	.long	4190598039
+	.long	3193640515
+	.long	1073741824
+	.long	1070897784
+	.long	368874072
+	.long	1044879927
+	.long	2147483648
+	.long	1070887571
+	.long	3584052697
+	.long	3192024662
+	.long	3221225472
+	.long	1070877375
+	.long	3762307829
+	.long	1045886918
+	.long	1073741824
+	.long	1070867197
+	.long	495710920
+	.long	1046317072
+	.long	0
+	.long	1070857036
+	.long	2292768238
+	.long	3190887508
+	.long	3221225472
+	.long	1070846891
+	.long	1044078151
+	.long	3193772914
+	.long	1073741824
+	.long	1070836764
+	.long	3266010457
+	.long	1043443755
+	.long	3221225472
+	.long	1070826653
+	.long	3571665822
+	.long	1045547823
+	.long	1073741824
+	.long	1070816560
+	.long	393348347
+	.long	3190525143
+	.long	2147483648
+	.long	1070806483
+	.long	4241722498
+	.long	3192084193
+	.long	2147483648
+	.long	1070796423
+	.long	1693797068
+	.long	3192807972
+	.long	0
+	.long	1070786380
+	.long	2860086745
+	.long	1046331646
+	.long	2147483648
+	.long	1070776353
+	.long	1366141759
+	.long	3192979363
+	.long	1073741824
+	.long	1070766343
+	.long	737899283
+	.long	1045853346
+	.long	3221225472
+	.long	1070756349
+	.long	88734873
+	.long	1043881257
+	.long	3221225472
+	.long	1070746372
+	.long	1438003315
+	.long	3192917101
+	.long	0
+	.long	1070736412
+	.long	1066505530
+	.long	1043896695
+	.long	3221225472
+	.long	1070726467
+	.long	2706653041
+	.long	3191113643
+	.long	3221225472
+	.long	1070716539
+	.long	1321764476
+	.long	1039573724
+	.long	0
+	.long	1070706628
+	.long	1126753211
+	.long	1044502976
+	.long	2147483648
+	.long	1070696732
+	.long	773642884
+	.long	1044110727
+	.long	1073741824
+	.long	1070686853
+	.long	1263743406
+	.long	3193115278
+	.long	0
+	.long	1070676990
+	.long	3115237732
+	.long	3193089176
+	.long	3221225472
+	.long	1070667142
+	.long	3642626838
+	.long	3191146032
+	.long	2147483648
+	.long	1070657311
+	.long	2091696428
+	.long	1044337177
+	.long	1073741824
+	.long	1070647496
+	.long	3168958391
+	.long	1044197568
+	.long	0
+	.long	1070637697
+	.long	711148669
+	.long	3193181047
+	.long	2147483648
+	.long	1070627913
+	.long	4207182773
+	.long	3193402092
+	.long	3221225472
+	.long	1070618145
+	.long	918070640
+	.long	3192902845
+	.long	3221225472
+	.long	1070608393
+	.long	3135571447
+	.long	3192193928
+	.long	2147483648
+	.long	1070598657
+	.long	1043705517
+	.long	3193188604
+	.long	2147483648
+	.long	1070581777
+	.long	1886680492
+	.long	1043890286
+	.long	2147483648
+	.long	1070562367
+	.long	3373799420
+	.long	3191917802
+	.long	2147483648
+	.long	1070542988
+	.long	2919618025
+	.long	3192461752
+	.long	2147483648
+	.long	1070523640
+	.long	2926365158
+	.long	3193113492
+	.long	0
+	.long	1070504323
+	.long	519978638
+	.long	1045918846
+	.long	0
+	.long	1070485037
+	.long	3665353151
+	.long	3193546248
+	.long	0
+	.long	1070465781
+	.long	2327718958
+	.long	1045050797
+	.long	0
+	.long	1070446556
+	.long	345326861
+	.long	3188224716
+	.long	2147483648
+	.long	1070427361
+	.long	2263747488
+	.long	3192871328
+	.long	0
+	.long	1070408197
+	.long	3894192264
+	.long	1045693123
+	.long	0
+	.long	1070389063
+	.long	994321593
+	.long	1046347203
+	.long	2147483648
+	.long	1070369959
+	.long	3540366700
+	.long	1042296230
+	.long	0
+	.long	1070350886
+	.long	966420752
+	.long	3192400412
+	.long	2147483648
+	.long	1070331842
+	.long	1954511160
+	.long	3193467762
+	.long	2147483648
+	.long	1070312828
+	.long	1875003040
+	.long	1045485629
+	.long	0
+	.long	1070293845
+	.long	4003372005
+	.long	3193714109
+	.long	2147483648
+	.long	1070274890
+	.long	2216083644
+	.long	1045720399
+	.long	0
+	.long	1070255966
+	.long	1240985743
+	.long	1045879414
+	.long	0
+	.long	1070237071
+	.long	1573064162
+	.long	1046427916
+	.long	0
+	.long	1070218206
+	.long	2500166582
+	.long	3193848169
+	.long	2147483648
+	.long	1070199369
+	.long	862131539
+	.long	1045606065
+	.long	0
+	.long	1070180563
+	.long	3733427622
+	.long	3193545988
+	.long	0
+	.long	1070161785
+	.long	124515358
+	.long	1045504766
+	.long	2147483648
+	.long	1070143036
+	.long	689228007
+	.long	1044238436
+	.long	0
+	.long	1070124317
+	.long	976284835
+	.long	3189879978
+	.long	2147483648
+	.long	1070105626
+	.long	2997446224
+	.long	3193394244
+	.long	2147483648
+	.long	1070086964
+	.long	594985163
+	.long	3190453447
+	.long	2147483648
+	.long	1070068331
+	.long	3634411091
+	.long	3193012662
+	.long	0
+	.long	1070049727
+	.long	841316482
+	.long	3192551604
+	.long	0
+	.long	1070031151
+	.long	518949849
+	.long	3189505693
+	.long	2147483648
+	.long	1070012603
+	.long	207633604
+	.long	1043791305
+	.long	2147483648
+	.long	1069994084
+	.long	925415631
+	.long	3189658670
+	.long	2147483648
+	.long	1069975593
+	.long	3348775015
+	.long	1046231055
+	.long	0
+	.long	1069957131
+	.long	4137593961
+	.long	1045760644
+	.long	2147483648
+	.long	1069938696
+	.long	3081207972
+	.long	1046319652
+	.long	2147483648
+	.long	1069920290
+	.long	2912811806
+	.long	3193250863
+	.long	0
+	.long	1069901912
+	.long	1704663230
+	.long	3192651171
+	.long	2147483648
+	.long	1069883561
+	.long	1726887473
+	.long	3193427817
+	.long	2147483648
+	.long	1069865238
+	.long	516302873
+	.long	1042556919
+	.long	2147483648
+	.long	1069846943
+	.long	3737277289
+	.long	3192083505
+	.long	0
+	.long	1069828676
+	.long	2829909067
+	.long	3191628520
+	.long	0
+	.long	1069810436
+	.long	3474800299
+	.long	3187384991
+	.long	2147483648
+	.long	1069792223
+	.long	2041291754
+	.long	3186735048
+	.long	2147483648
+	.long	1069774038
+	.long	3100739290
+	.long	3192991951
+	.long	2147483648
+	.long	1069755880
+	.long	2641686866
+	.long	1042449846
+	.long	0
+	.long	1069737750
+	.long	1353612457
+	.long	3192928544
+	.long	2147483648
+	.long	1069719646
+	.long	1823398190
+	.long	3193125156
+	.long	0
+	.long	1069701570
+	.long	2629108558
+	.long	3192983089
+	.long	2147483648
+	.long	1069683520
+	.long	314889080
+	.long	3193178947
+	.long	2147483648
+	.long	1069665497
+	.long	3426846470
+	.long	1046055034
+	.long	0
+	.long	1069647502
+	.long	2451521798
+	.long	3193081447
+	.long	2147483648
+	.long	1069629532
+	.long	963200030
+	.long	1046315089
+	.long	0
+	.long	1069611590
+	.long	3644976987
+	.long	1046450297
+	.long	2147483648
+	.long	1069593674
+	.long	1514045874
+	.long	3193337489
+	.long	0
+	.long	1069575785
+	.long	2640752615
+	.long	3192734715
+	.long	0
+	.long	1069557922
+	.long	177381730
+	.long	3193107348
+	.long	0
+	.long	1069532650
+	.long	546871269
+	.long	1045601847
+	.long	0
+	.long	1069497029
+	.long	2220408187
+	.long	1045964849
+	.long	0
+	.long	1069461461
+	.long	3101209784
+	.long	3192417098
+	.long	0
+	.long	1069425944
+	.long	3768825782
+	.long	1046196178
+	.long	0
+	.long	1069390480
+	.long	737308942
+	.long	1043872555
+	.long	0
+	.long	1069355068
+	.long	1944808119
+	.long	3193362317
+	.long	0
+	.long	1069319707
+	.long	852406261
+	.long	3191004250
+	.long	0
+	.long	1069284398
+	.long	3202370743
+	.long	3192549796
+	.long	0
+	.long	1069249140
+	.long	900633975
+	.long	1043862575
+	.long	0
+	.long	1069213934
+	.long	3417168564
+	.long	3193213168
+	.long	0
+	.long	1069178778
+	.long	2513309972
+	.long	1046051953
+	.long	0
+	.long	1069143674
+	.long	1836846968
+	.long	1044036653
+	.long	0
+	.long	1069108621
+	.long	675391362
+	.long	3193334972
+	.long	0
+	.long	1069073618
+	.long	1859398086
+	.long	3191668729
+	.long	0
+	.long	1069038666
+	.long	3835994043
+	.long	3193252196
+	.long	0
+	.long	1069003764
+	.long	563337246
+	.long	3192060530
+	.long	0
+	.long	1068968912
+	.long	3715154210
+	.long	1045592716
+	.long	0
+	.long	1068934111
+	.long	51415636
+	.long	3192193939
+	.long	0
+	.long	1068899359
+	.long	822049108
+	.long	1045846080
+	.long	0
+	.long	1068864658
+	.long	3739043340
+	.long	3193184949
+	.long	0
+	.long	1068830006
+	.long	2500828997
+	.long	3193115638
+	.long	0
+	.long	1068795403
+	.long	1479335089
+	.long	1045458233
+	.long	0
+	.long	1068760850
+	.long	1914098598
+	.long	1045079833
+	.long	0
+	.long	1068726346
+	.long	1470374909
+	.long	1046125471
+	.long	0
+	.long	1068691892
+	.long	2048101185
+	.long	3192960024
+	.long	0
+	.long	1068657486
+	.long	801101802
+	.long	1042523454
+	.long	0
+	.long	1068623129
+	.long	412171467
+	.long	1044799425
+	.long	0
+	.long	1068588821
+	.long	2124566049
+	.long	1040459843
+	.long	0
+	.long	1068554561
+	.long	2087558263
+	.long	1046083102
+	.long	0
+	.long	1068520350
+	.long	290389316
+	.long	1045220023
+	.long	0
+	.long	1068473430
+	.long	393737815
+	.long	1045770085
+	.long	0
+	.long	1068405202
+	.long	3273111658
+	.long	3193594336
+	.long	0
+	.long	1068337068
+	.long	3076935419
+	.long	3191993934
+	.long	0
+	.long	1068269030
+	.long	1564279721
+	.long	1040713632
+	.long	0
+	.long	1068201088
+	.long	1950103787
+	.long	3191285473
+	.long	0
+	.long	1068133240
+	.long	111301617
+	.long	1046140470
+	.long	0
+	.long	1068065488
+	.long	2740933659
+	.long	1046091898
+	.long	0
+	.long	1067997832
+	.long	1267131462
+	.long	3192947024
+	.long	0
+	.long	1067930268
+	.long	629787343
+	.long	1045599114
+	.long	0
+	.long	1067862800
+	.long	2943029746
+	.long	3191100621
+	.long	0
+	.long	1067795426
+	.long	2538631151
+	.long	3193953989
+	.long	0
+	.long	1067728144
+	.long	3881795033
+	.long	3191377363
+	.long	0
+	.long	1067660956
+	.long	2752747058
+	.long	3186250103
+	.long	0
+	.long	1067593862
+	.long	892170014
+	.long	3193330390
+	.long	0
+	.long	1067526860
+	.long	2000985783
+	.long	3192968647
+	.long	0
+	.long	1067459950
+	.long	1954077304
+	.long	1044399908
+	.long	0
+	.long	1067335900
+	.long	4120702847
+	.long	3193150730
+	.long	0
+	.long	1067202448
+	.long	353489980
+	.long	1045676744
+	.long	0
+	.long	1067069184
+	.long	2609643324
+	.long	3192108001
+	.long	0
+	.long	1066936100
+	.long	2904433317
+	.long	1044836541
+	.long	0
+	.long	1066803200
+	.long	319656790
+	.long	1044863904
+	.long	0
+	.long	1066670484
+	.long	2407987331
+	.long	3192995083
+	.long	0
+	.long	1066537948
+	.long	2437746120
+	.long	3193127733
+	.long	0
+	.long	1066405592
+	.long	762570215
+	.long	3189946997
+	.long	0
+	.long	1066145040
+	.long	3317159694
+	.long	1046060125
+	.long	0
+	.long	1065881056
+	.long	2317845886
+	.long	3191679176
+	.long	0
+	.long	1065617424
+	.long	3665195816
+	.long	1045633853
+	.long	0
+	.long	1065354160
+	.long	2008730355
+	.long	3193898211
+	.long	0
+	.long	1064829264
+	.long	3746236192
+	.long	1046121471
+	.long	0
+	.long	1064303680
+	.long	885296753
+	.long	3191852441
+	.long	0
+	.long	1063253696
+	.long	449976495
+	.long	3192682663
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	L_tbl,@object
+	.size	L_tbl,8208
+	.space 496, 0x00 	# pad
+	.align 16
+HIGHMASK_Y:
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	4294967295
+	.type	HIGHMASK_Y,@object
+	.size	HIGHMASK_Y,16
+	.align 16
+T_exp:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	997195776
+	.long	4200250559
+	.long	1072696090
+	.long	2808127345
+	.long	3162830514
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	339411585
+	.long	1072701800
+	.long	264588982
+	.long	3162685233
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	772914124
+	.long	1072707540
+	.long	4004372762
+	.long	1013278737
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	1928746161
+	.long	1072713311
+	.long	983617676
+	.long	1015333753
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	238821257
+	.long	1072719114
+	.long	1469694871
+	.long	3163933563
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	728934454
+	.long	1072724948
+	.long	1413842688
+	.long	1015227188
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	4133881824
+	.long	1072730813
+	.long	2148155345
+	.long	3163979875
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	2602514713
+	.long	1072736711
+	.long	2268929336
+	.long	1015402860
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	1172597893
+	.long	1072742641
+	.long	114433263
+	.long	1016396169
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	590962156
+	.long	1072748603
+	.long	3829346666
+	.long	3164324173
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	1608493509
+	.long	1072754597
+	.long	3159622171
+	.long	3163856313
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	685187902
+	.long	1072760624
+	.long	378731989
+	.long	1015891691
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	2875075254
+	.long	1072766683
+	.long	4144233330
+	.long	3164382292
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	351405227
+	.long	1072772776
+	.long	3125337328
+	.long	3160871055
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	2471440686
+	.long	1072778901
+	.long	968836267
+	.long	3163263464
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1416741826
+	.long	1072785060
+	.long	2196380210
+	.long	1012462139
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	2257959872
+	.long	1072791252
+	.long	3802946148
+	.long	1014013503
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	1480023343
+	.long	1072797478
+	.long	2247196168
+	.long	1016376029
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	4162030108
+	.long	1072803737
+	.long	2763428480
+	.long	1016577925
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	2502433899
+	.long	1072810031
+	.long	2148595913
+	.long	1016072567
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	1588871207
+	.long	1072816359
+	.long	143439582
+	.long	3164011992
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2218315341
+	.long	1072822721
+	.long	2694295388
+	.long	3164337444
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	897099801
+	.long	1072829118
+	.long	754756297
+	.long	1016289581
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	2725843665
+	.long	1072835549
+	.long	1433917087
+	.long	1015887099
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	4219606026
+	.long	1072842015
+	.long	2434574742
+	.long	1015730124
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1897844341
+	.long	1072848517
+	.long	1254300460
+	.long	1016324514
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	874372905
+	.long	1072855054
+	.long	100263788
+	.long	1016989308
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	1972484976
+	.long	1072861626
+	.long	675290301
+	.long	3162688626
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	1724976915
+	.long	1072868234
+	.long	420909223
+	.long	3164165955
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	964107055
+	.long	1072874878
+	.long	2800439588
+	.long	3163881797
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	526652809
+	.long	1072881558
+	.long	4223459736
+	.long	1016927951
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	1253935211
+	.long	1072888274
+	.long	1395382931
+	.long	3160751189
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	3991843581
+	.long	1072895026
+	.long	4092853457
+	.long	1015634339
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	1000925746
+	.long	1072901816
+	.long	1018491672
+	.long	3164358120
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1726216749
+	.long	1072908642
+	.long	2466808228
+	.long	3162724981
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	2732492859
+	.long	1072915505
+	.long	2691479646
+	.long	3163304260
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	589198666
+	.long	1072922406
+	.long	2664346172
+	.long	3164206538
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	460407023
+	.long	1072929344
+	.long	4237175092
+	.long	3164187045
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3219942644
+	.long	1072936319
+	.long	3798990616
+	.long	1016417382
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1156440435
+	.long	1072943333
+	.long	2351451249
+	.long	1015015632
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	3743175029
+	.long	1072950384
+	.long	2072812490
+	.long	3163223651
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	3278348324
+	.long	1072957474
+	.long	3069497416
+	.long	1015799288
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	654919306
+	.long	1072964603
+	.long	3232961757
+	.long	3164096045
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1065662932
+	.long	1072971770
+	.long	2533670915
+	.long	1015578814
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	1118294578
+	.long	1072978976
+	.long	2197495694
+	.long	3160957977
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	1720398391
+	.long	1072986221
+	.long	3980678963
+	.long	3164348656
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	3784486610
+	.long	1072993505
+	.long	1581883040
+	.long	3162747529
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3933059031
+	.long	1073000829
+	.long	2133366768
+	.long	3162580408
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	3088564500
+	.long	1073008193
+	.long	1762311517
+	.long	1016094249
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	2178460671
+	.long	1073015597
+	.long	777878098
+	.long	3163891069
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2135241198
+	.long	1073023041
+	.long	1236747871
+	.long	1014637723
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	3896463087
+	.long	1073030525
+	.long	1139797873
+	.long	3162282381
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	4109806887
+	.long	1073038050
+	.long	422403966
+	.long	1015517805
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	3723038930
+	.long	1073045616
+	.long	378465264
+	.long	3163618158
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3689071823
+	.long	1073053223
+	.long	2321004996
+	.long	3163601292
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	671025100
+	.long	1073060872
+	.long	3832014351
+	.long	3164070606
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	4222122499
+	.long	1073068561
+	.long	1277378074
+	.long	3164305313
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	2425981843
+	.long	1073076293
+	.long	2830390851
+	.long	3164395175
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	551349105
+	.long	1073084067
+	.long	3821916050
+	.long	3163155165
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	3872257780
+	.long	1073091882
+	.long	1253592103
+	.long	1017006910
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	488188413
+	.long	1073099741
+	.long	3199821029
+	.long	1016612624
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	4273770423
+	.long	1073107641
+	.long	3383180809
+	.long	3164267477
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3339203574
+	.long	1073115585
+	.long	1483497780
+	.long	3163457330
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	2979960120
+	.long	1073123572
+	.long	2599109725
+	.long	1015547069
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	4201977662
+	.long	1073131602
+	.long	748330254
+	.long	1014642933
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	3721688645
+	.long	1073139676
+	.long	3069276937
+	.long	1016887977
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	2555984613
+	.long	1073147794
+	.long	2652555442
+	.long	3163601268
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	1727278727
+	.long	1073155956
+	.long	3562710623
+	.long	1012520516
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	2263535754
+	.long	1073164162
+	.long	752233586
+	.long	3163687584
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	903334909
+	.long	1073172413
+	.long	1636462108
+	.long	1016088573
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	2980802057
+	.long	1073180708
+	.long	378619896
+	.long	1016821879
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	950803702
+	.long	1073189049
+	.long	1655364926
+	.long	1016285608
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	158781403
+	.long	1073197435
+	.long	2221464712
+	.long	3164335029
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	1660913392
+	.long	1073205866
+	.long	4218599604
+	.long	1016184283
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	2224145553
+	.long	1073214343
+	.long	3482522030
+	.long	3162537745
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2916157145
+	.long	1073222866
+	.long	219487565
+	.long	1016357943
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	515457527
+	.long	1073231436
+	.long	836709333
+	.long	1016699802
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	396319521
+	.long	1073240052
+	.long	4172420816
+	.long	3160123208
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3643909174
+	.long	1073248714
+	.long	3537586109
+	.long	1015403223
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	2759350287
+	.long	1073257424
+	.long	1148526634
+	.long	1016943509
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	3134592888
+	.long	1073266181
+	.long	4232266862
+	.long	1017039710
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	1577608921
+	.long	1073274986
+	.long	1875489510
+	.long	3164016970
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	3492293770
+	.long	1073283838
+	.long	2248032210
+	.long	1016435402
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	1403662306
+	.long	1073292739
+	.long	2788809599
+	.long	3162719583
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	727685349
+	.long	1073301688
+	.long	2038246809
+	.long	3163407318
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2591453363
+	.long	1073310685
+	.long	2132396182
+	.long	3160122774
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	3833209506
+	.long	1073319731
+	.long	2722920684
+	.long	1014803418
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	1297350157
+	.long	1073328827
+	.long	1308022040
+	.long	3164461134
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	424392917
+	.long	1073337972
+	.long	2749202995
+	.long	3163887294
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2366108318
+	.long	1073347166
+	.long	2867985102
+	.long	3162810830
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3985553595
+	.long	1073356410
+	.long	4002146062
+	.long	1016882712
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2152073944
+	.long	1073365705
+	.long	1486860576
+	.long	3164252032
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	2331271250
+	.long	1073375050
+	.long	812057446
+	.long	1013256022
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1405169241
+	.long	1073384446
+	.long	2998539689
+	.long	3163879527
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	557149882
+	.long	1073393893
+	.long	3672720709
+	.long	1015585841
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	977020788
+	.long	1073403391
+	.long	3065100517
+	.long	1016590139
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	3861050111
+	.long	1073412940
+	.long	254893773
+	.long	3163861756
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	1822067026
+	.long	1073422542
+	.long	1241994956
+	.long	1016388866
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	364333489
+	.long	1073432196
+	.long	3923737744
+	.long	3162469949
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	703710506
+	.long	1073441902
+	.long	1384660846
+	.long	1016244467
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	4062661092
+	.long	1073451660
+	.long	1422616006
+	.long	3164303894
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	3080351519
+	.long	1073461472
+	.long	3379126789
+	.long	3158266577
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	3287523847
+	.long	1073471337
+	.long	1625971539
+	.long	3158058531
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	1631695677
+	.long	1073481256
+	.long	2717633076
+	.long	3163392602
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	3657065772
+	.long	1073491228
+	.long	399025623
+	.long	3164005654
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	2029714210
+	.long	1073501255
+	.long	613660079
+	.long	1016147719
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2307442995
+	.long	1073511336
+	.long	3190117721
+	.long	3163453115
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	1464976603
+	.long	1073521472
+	.long	3507292405
+	.long	3163026110
+	.long	3706687593
+	.long	1073526560
+	.long	3521726939
+	.long	1014301643
+	.long	778901109
+	.long	1073531663
+	.long	2248183954
+	.long	3162317327
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1532734324
+	.long	1073541909
+	.long	3094216535
+	.long	3164211433
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	721996136
+	.long	1073552211
+	.long	563754734
+	.long	1016419894
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3939148246
+	.long	1073562568
+	.long	3210352148
+	.long	1016322899
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	3898795731
+	.long	1073572982
+	.long	1249994144
+	.long	1012918394
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	1912561781
+	.long	1073583453
+	.long	3147495102
+	.long	1016726829
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	3594158869
+	.long	1073593980
+	.long	2456521700
+	.long	3164305137
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	1679558232
+	.long	1073604565
+	.long	2390342287
+	.long	3164382546
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	1796832535
+	.long	1073615207
+	.long	3176955716
+	.long	3161634089
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	991358482
+	.long	1073625907
+	.long	838715019
+	.long	3164206244
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	610758006
+	.long	1073636665
+	.long	1965209397
+	.long	3162914808
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2009970496
+	.long	1073647481
+	.long	2159039665
+	.long	3163621524
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	2256325230
+	.long	1073658356
+	.long	580117746
+	.long	1016365871
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	2719515920
+	.long	1073669290
+	.long	2760332941
+	.long	1016186509
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	481706282
+	.long	1073680284
+	.long	1696079173
+	.long	3163759104
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1222472308
+	.long	1073691337
+	.long	1054357470
+	.long	3162069594
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2038973688
+	.long	1073702450
+	.long	892941374
+	.long	1017095035
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	35929225
+	.long	1073713624
+	.long	2809788041
+	.long	3160485544
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	915592468
+	.long	1073724858
+	.long	352947894
+	.long	3162072947
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	1797923801
+	.long	1073736153
+	.long	1950547427
+	.long	1014277635
+	.type	T_exp,@object
+	.size	T_exp,4096
+	.space 512, 0x00 	# pad
+	.align 16
+e_coeff:
+	.long	3884607281
+	.long	1062590591
+	.long	3607404736
+	.long	1068264200
+	.long	1874480759
+	.long	1065595563
+	.long	4286760335
+	.long	1070514109
+	.long	4277811695
+	.long	1072049730
+	.long	0
+	.long	0
+	.type	e_coeff,@object
+	.size	e_coeff,48
+	.align 16
+coeff_h:
+	.long	0
+	.long	3218479616
+	.long	0
+	.long	3210587105
+	.type	coeff_h,@object
+	.size	coeff_h,16
+	.align 16
+HIGHMASK_LOG_X:
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294965248
+	.type	HIGHMASK_LOG_X,@object
+	.size	HIGHMASK_LOG_X,16
+	.align 8
+HALFMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.type	HALFMASK,@object
+	.size	HALFMASK,16
+	.align 8
+log2:
+	.long	4277811695
+	.long	1072049730
+	.long	4277811695
+	.long	3219533378
+	.type	log2,@object
+	.size	log2,16
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_pow.1-.
+	.4byte ..___tag_value_pow.5-..___tag_value_pow.1
+	.2byte 0x0400
+	.4byte ..___tag_value_pow.3-..___tag_value_pow.1
+	.2byte 0x300e
+	.byte 0x04
+	.4byte ..___tag_value_pow.4-..___tag_value_pow.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_sinh.S b/libm/x86_64/e_sinh.S
new file mode 100644
index 0000000..4d8db63
--- /dev/null
+++ b/libm/x86_64/e_sinh.S
@@ -0,0 +1,1430 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  sinh(x)=(exp(x)-exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [23/64,3*2^7)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
+//
+//  For |x| in [1/8, 3*2^7), sinh(x) is formed as
+//      RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
+//
+//  For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
+//  To reduce rounding errors, the p3*x^3 term is computed as
+//     (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
+//  where x=xh+xl, (xh are the leading 17 bits of x), and
+//     (p3*xh^3)_high=RN(x+p3*xh^3)-x
+//  (error bound for polynomial expansion is below 0.51 ulp)
+//
+// Special cases:
+//  sinh(NaN) = quiet NaN, and raise invalid exception
+//  sinh(+/-INF) = +/-INF
+//  sinh(x) = x for subnormals
+//  for finite argument, only sinh(0)=0 is exact
+//  For IEEE double
+//    sinh(x) overflows  for x > 
+//    710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  sinh
+ENTRY(sinh)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_sinh.1:
+        pushq     %rsi
+..___tag_value_sinh.3:
+..B1.2:
+        movsd     HALFMASK(%rip), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     L2E(%rip), %xmm1
+        movsd     8+L2E(%rip), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     Shifter(%rip), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16343, %ecx
+        cmpl      $177, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        shll      $3, %edx
+        orl       %edx, %eax
+        movq      %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    cv(%rip), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    16+cv(%rip), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    32+cv(%rip), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $161, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        lea       T2_neg_f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    48+cv(%rip), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     64+cv(%rip), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movq      %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        subpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        subsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     48+cv(%rip), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     64+cv(%rip), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        movl      $127, %edx
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_2.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        addl      $16343, %ecx
+        cmpl      $16343, %ecx
+        ja        .L_2TAG_PACKET_3.0.2
+        cmpl      $15856, %ecx
+        jb        .L_2TAG_PACKET_4.0.2
+        movapd    pv(%rip), %xmm1
+        pshufd    $68, %xmm0, %xmm6
+        mulpd     %xmm5, %xmm5
+        movapd    16+pv(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm7
+        movapd    32+pv(%rip), %xmm3
+        pshufd    $68, %xmm0, %xmm4
+        andpd     MASK3(%rip), %xmm6
+        mulpd     %xmm5, %xmm1
+        mulsd     %xmm5, %xmm2
+        subpd     %xmm6, %xmm4
+        mulpd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm1
+        pshufd    $68, %xmm6, %xmm3
+        mulpd     %xmm5, %xmm5
+        mulsd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm0, %xmm7
+        mulsd     %xmm6, %xmm6
+        addsd     %xmm7, %xmm7
+        mulsd     %xmm4, %xmm4
+        mulpd     %xmm5, %xmm1
+        addsd     %xmm0, %xmm7
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm7
+        pshufd    $238, %xmm1, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm2, %xmm3
+        pshufd    $238, %xmm2, %xmm2
+        addsd     %xmm4, %xmm7
+        movq      %xmm0, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm5, %xmm7
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm2, %xmm7
+        subsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm1
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        cmpl      $16, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        movq      %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $15344, %edx
+        pinsrw    $3, %edx, %xmm3
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        orl       %edx, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm1
+        andnpd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        movq      %xmm0, (%rsp)
+..B1.3:
+        movq      (%rsp), %xmm0
+.L_2TAG_PACKET_7.0.2:
+..B1.5:
+        popq      %rcx
+..___tag_value_sinh.4:
+        ret       
+..___tag_value_sinh.5:
+END(sinh)
+# -- End  sinh
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L2E:
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.type	L2E,@object
+	.size	L2E,16
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+cv:
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	1064709698
+	.type	cv,@object
+	.size	cv,80
+	.align 16
+T2f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.type	T2f,@object
+	.size	T2f,2048
+	.align 16
+T2_neg_f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.type	T2_neg_f,@object
+	.size	T2_neg_f,2048
+	.align 16
+pv:
+	.long	329805064
+	.long	1038488134
+	.long	2773927730
+	.long	1053236707
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1744127201
+	.long	1046144581
+	.long	436314137
+	.long	1059717536
+	.type	pv,@object
+	.size	pv,48
+	.align 16
+MASK3:
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.type	MASK3,@object
+	.size	MASK3,16
+	.align 8
+HALFMASK:
+	.long	4160749568
+	.long	2147483647
+	.type	HALFMASK,@object
+	.size	HALFMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_sinh.1-.
+	.4byte ..___tag_value_sinh.5-..___tag_value_sinh.1
+	.2byte 0x0400
+	.4byte ..___tag_value_sinh.3-..___tag_value_sinh.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_sinh.4-..___tag_value_sinh.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/floor.S b/libm/x86_64/floor.S
new file mode 100644
index 0000000..dc80e88
--- /dev/null
+++ b/libm/x86_64/floor.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(floor)
+roundsd $0x1,%xmm0,%xmm0
+retq
+END(floor)
diff --git a/libm/x86_64/floorf.S b/libm/x86_64/floorf.S
new file mode 100644
index 0000000..832f9c5
--- /dev/null
+++ b/libm/x86_64/floorf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(floorf)
+roundss $0x1,%xmm0,%xmm0
+retq
+END(floorf)
diff --git a/libm/x86_64/s_atan.S b/libm/x86_64/s_atan.S
new file mode 100644
index 0000000..2453e10
--- /dev/null
+++ b/libm/x86_64/s_atan.S
@@ -0,0 +1,927 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// This implementation uses the main path for |x| in [2^{-5},2^65).
+// For |x| in [2^{-64},2^{-5}), a secondary path is used.
+// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
+// We use the following definition of B and X` so that the formula
+// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
+//
+// X = (-1)^s * 2^k * 1. x1 x2 ... x52
+//
+// Define X`  = 0 if k >= 5; and X`  = |X| otherwise
+// Define One = 0 if k >= 5; and One = 1 otherwise
+// Define B  = 0 if k <= -6; B =  2^k * 1.x1 x2 x3 x4 1  if -5 <= k <= 4
+// Define B  =  2^5 * 1.0 0 ... 0   if  k >= 5
+//
+// Tau is 0 if k <= -6;
+// Tau is atan( B )  if -5 <= k <= 4
+// Tau is pi/2 if k >= 5
+//
+// Special cases:
+//  atan(NaN) = quiet NaN
+//  atan(+/-INF) = +/-Pi/2
+//  atan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  atan
+ENTRY(atan)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_atan.1:
+        pushq     %rsi
+..___tag_value_atan.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movq      $0xffff000000000000, %r8
+        movd      %r8, %xmm3
+        movq      ONEMASK(%rip), %xmm5
+        movq      $0x800000000000, %r9
+        movd      %r9, %xmm4
+        pextrw    $3, %xmm0, %edx
+        andpd     %xmm0, %xmm3
+        pshufd    $68, %xmm0, %xmm1
+        orpd      %xmm4, %xmm3
+        movl      %edx, %eax
+        andl      $32767, %edx
+        subl      $16288, %edx
+        cmpl      $159, %edx
+        ja        .L_2TAG_PACKET_0.0.1
+        mulsd     %xmm3, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        divsd     %xmm1, %xmm0
+        addl      $1, %edx
+        movq      a2(%rip), %xmm2
+        movq      b2(%rip), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        lea       atan_tbl(%rip), %r8
+        movq      (%r8,%rdx,8), %xmm6
+        movq      8(%r8,%rdx,8), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movq      8+a2(%rip), %xmm7
+        movddup   %xmm0, %xmm1
+        mulsd     %xmm0, %xmm0
+        movddup   %xmm1, %xmm3
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm4
+        subsd     %xmm1, %xmm6
+        mulsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm0
+        addsd     8+b2(%rip), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm6, %xmm0
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_0.0.1:
+        addl      $944, %edx
+        cmpl      $1103, %edx
+        ja        .L_2TAG_PACKET_2.0.1
+        movq      a2(%rip), %xmm4
+        movq      b2(%rip), %xmm7
+        movq      (%rsp), %xmm0
+        mulsd     %xmm1, %xmm1
+        movq      8+a2(%rip), %xmm2
+        movq      8+b2(%rip), %xmm5
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm1, %xmm7
+        movq      %xmm1, %xmm6
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm2
+        mulsd     %xmm6, %xmm7
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_2.0.1:
+        addl      $15344, %edx
+        cmpl      $16368, %edx
+        ja        .L_2TAG_PACKET_3.0.1
+        movq      (%rsp), %xmm0
+        movq      (%rsp), %xmm1
+        cmpl      $16, %edx
+        jae       .L_2TAG_PACKET_1.0.1
+        mulsd     %xmm0, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_3.0.1:
+        cmpl      $17392, %edx
+        jae       .L_2TAG_PACKET_4.0.1
+        movq      $0xbff0000000000000, %r8
+        movd      %r8, %xmm1
+        divsd     %xmm0, %xmm1
+        movq      a2(%rip), %xmm2
+        movq      b2(%rip), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        movq      pi_table(%rip), %xmm6
+        movq      8+pi_table(%rip), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movq      8+a2(%rip), %xmm7
+        movddup   %xmm1, %xmm0
+        mulsd     %xmm1, %xmm1
+        movddup   %xmm0, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm1
+        addsd     8+b2(%rip), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_4.0.1:
+        movq      (%rsp), %xmm4
+        movq      SGNMASK(%rip), %xmm0
+        movq      pi_table(%rip), %xmm2
+        movq      8+pi_table(%rip), %xmm3
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        andl      $2147483647, %edx
+        cmpl      $2146435072, %edx
+        jae       .L_2TAG_PACKET_5.0.1
+.L_2TAG_PACKET_6.0.1:
+        andnpd    %xmm4, %xmm0
+        orpd      %xmm0, %xmm2
+        orpd      %xmm3, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_5.0.1:
+        subl      $2146435072, %edx
+        orl       %edx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_6.0.1
+        movq      %xmm4, %xmm0
+        addsd     %xmm0, %xmm0
+.L_2TAG_PACKET_1.0.1:
+..B1.3:
+        popq      %rcx
+..___tag_value_atan.4:
+        ret       
+..___tag_value_atan.5:
+END(atan)
+# -- End  atan
+	.section .rodata, "a"
+	.align 4
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+a2:
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.type	a2,@object
+	.size	a2,16
+	.align 4
+b2:
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.type	b2,@object
+	.size	b2,16
+	.align 4
+atan_tbl:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3819695742
+	.long	1067482761
+	.long	2398680355
+	.long	3155462074
+	.long	2998791009
+	.long	1067548225
+	.long	3868465248
+	.long	3157182472
+	.long	3339424991
+	.long	1067613680
+	.long	3296670360
+	.long	1010752543
+	.long	2710002256
+	.long	1067679126
+	.long	3403896007
+	.long	1010910768
+	.long	3275701428
+	.long	1067744562
+	.long	119959933
+	.long	1011482843
+	.long	2908636881
+	.long	1067809988
+	.long	2464489612
+	.long	1011545526
+	.long	3777889398
+	.long	1067875403
+	.long	3262682165
+	.long	1009703919
+	.long	3759667419
+	.long	1067940807
+	.long	1838130851
+	.long	3157373556
+	.long	732369940
+	.long	1068006200
+	.long	1203428313
+	.long	1010055371
+	.long	1166616461
+	.long	1068071580
+	.long	2901274051
+	.long	3158549977
+	.long	2945472892
+	.long	1068136947
+	.long	3726120658
+	.long	1009762715
+	.long	3954480976
+	.long	1068202301
+	.long	1289173457
+	.long	1009429861
+	.long	2081752829
+	.long	1068267642
+	.long	1836909874
+	.long	1006212095
+	.long	3807999788
+	.long	1068332968
+	.long	2172459940
+	.long	3156162078
+	.long	2731789884
+	.long	1068398280
+	.long	3450718392
+	.long	3159216547
+	.long	1044477961
+	.long	1068463577
+	.long	2230553229
+	.long	1011424339
+	.long	1486930287
+	.long	1068530218
+	.long	2861547474
+	.long	1012041376
+	.long	2293016881
+	.long	1068595466
+	.long	136843272
+	.long	1012684797
+	.long	201518157
+	.long	1068660680
+	.long	63231984
+	.long	1012427198
+	.long	4054234584
+	.long	1068725856
+	.long	3927006960
+	.long	1011878955
+	.long	1246477213
+	.long	1068790995
+	.long	1494265652
+	.long	3155219350
+	.long	678186699
+	.long	1068856093
+	.long	1264361424
+	.long	3159256693
+	.long	2690594995
+	.long	1068921148
+	.long	3906996379
+	.long	1009288267
+	.long	3362611517
+	.long	1068986159
+	.long	1650970041
+	.long	3158331771
+	.long	3102162111
+	.long	1069051124
+	.long	365917035
+	.long	3160264153
+	.long	2352611067
+	.long	1069116041
+	.long	4008970190
+	.long	3159478182
+	.long	1594134794
+	.long	1069180908
+	.long	466690178
+	.long	1012526501
+	.long	1345079306
+	.long	1069245723
+	.long	2268273568
+	.long	3160164092
+	.long	2163300970
+	.long	1069310484
+	.long	2750834800
+	.long	3158113482
+	.long	352522716
+	.long	1069375190
+	.long	1750411372
+	.long	1011790845
+	.long	848541647
+	.long	1069439838
+	.long	2164207573
+	.long	1011698350
+	.long	40647312
+	.long	1069504427
+	.long	2949165434
+	.long	3159107267
+	.long	2216766270
+	.long	1069574357
+	.long	2197920765
+	.long	3161055954
+	.long	1090914384
+	.long	1069638757
+	.long	2330454674
+	.long	1013365998
+	.long	387601244
+	.long	1069703022
+	.long	3185681168
+	.long	1013434071
+	.long	3991640484
+	.long	1069767144
+	.long	1313211590
+	.long	3161087959
+	.long	3322489502
+	.long	1069831118
+	.long	3013977995
+	.long	1013053011
+	.long	3121698570
+	.long	1069894936
+	.long	4069015667
+	.long	1013023362
+	.long	4289964660
+	.long	1069958591
+	.long	1736191156
+	.long	3158266731
+	.long	3903312386
+	.long	1070022077
+	.long	1833592413
+	.long	3159731471
+	.long	3818449864
+	.long	1070085387
+	.long	851036429
+	.long	3159730451
+	.long	2097480306
+	.long	1070148515
+	.long	3506390884
+	.long	3160462302
+	.long	1611694502
+	.long	1070211454
+	.long	2785735540
+	.long	3160465144
+	.long	1464694796
+	.long	1070274198
+	.long	4229277299
+	.long	3159907000
+	.long	1299612775
+	.long	1070336741
+	.long	4116653788
+	.long	3160427739
+	.long	1310544789
+	.long	1070399077
+	.long	1064430331
+	.long	1013218202
+	.long	2253168030
+	.long	1070461200
+	.long	1405044609
+	.long	3157623179
+	.long	1159567373
+	.long	1070523105
+	.long	2353445521
+	.long	3159992176
+	.long	1359373750
+	.long	1070605818
+	.long	1748171336
+	.long	3161879263
+	.long	908341706
+	.long	1070667034
+	.long	3372710815
+	.long	3161775245
+	.long	1743027350
+	.long	1070727765
+	.long	687089934
+	.long	3160507171
+	.long	2055355646
+	.long	1070787992
+	.long	2392855242
+	.long	1013682469
+	.long	690426164
+	.long	1070847697
+	.long	1103926666
+	.long	1014052810
+	.long	1483247847
+	.long	1070906862
+	.long	2082645847
+	.long	3161345479
+	.long	392040270
+	.long	1070965472
+	.long	2407720023
+	.long	1014053754
+	.long	2673846014
+	.long	1071023511
+	.long	1293605532
+	.long	3158464385
+	.long	1384215810
+	.long	1071080967
+	.long	2446095872
+	.long	3159216407
+	.long	3101660631
+	.long	1071137826
+	.long	698040758
+	.long	1014855328
+	.long	2094057058
+	.long	1071194078
+	.long	2282048339
+	.long	1014040385
+	.long	1712750594
+	.long	1071249712
+	.long	1204372378
+	.long	3162276464
+	.long	1411515787
+	.long	1071304719
+	.long	949080808
+	.long	1015006403
+	.long	931538085
+	.long	1071359091
+	.long	3027127039
+	.long	1014307233
+	.long	179139065
+	.long	1071412821
+	.long	4285547492
+	.long	3161934731
+	.long	3387721259
+	.long	1071465902
+	.long	373225773
+	.long	1013486625
+	.long	2132236852
+	.long	1071544299
+	.long	3250533429
+	.long	1014031677
+	.long	1942070284
+	.long	1071645596
+	.long	1237964179
+	.long	3163239113
+	.long	1532707802
+	.long	1071695380
+	.long	330645583
+	.long	1012495610
+	.long	2294184979
+	.long	1071743834
+	.long	3959472897
+	.long	1015833116
+	.long	3805060714
+	.long	1071790961
+	.long	2671256142
+	.long	1013727772
+	.long	2215037898
+	.long	1071836770
+	.long	2683359117
+	.long	1015831902
+	.long	483661594
+	.long	1071881273
+	.long	836288326
+	.long	3162648643
+	.long	1534679894
+	.long	1071924486
+	.long	373258696
+	.long	3162470096
+	.long	1538714628
+	.long	1071966430
+	.long	3199433068
+	.long	1015325501
+	.long	527642555
+	.long	1072007128
+	.long	3636832592
+	.long	3161843145
+	.long	291339150
+	.long	1072046605
+	.long	890169537
+	.long	3160586117
+	.long	2450210201
+	.long	1072084888
+	.long	1636353294
+	.long	3163193400
+	.long	2411367951
+	.long	1072122007
+	.long	374899873
+	.long	1011331750
+	.long	681549971
+	.long	1072157992
+	.long	506411689
+	.long	1015373954
+	.long	1466745541
+	.long	1072192873
+	.long	2143860931
+	.long	1013364334
+	.long	2845622366
+	.long	1072226682
+	.long	2869178209
+	.long	3162423682
+	.long	2838871438
+	.long	1072275456
+	.long	3742223599
+	.long	1014338577
+	.long	4200275274
+	.long	1072337034
+	.long	1566539915
+	.long	3161839550
+	.long	3034733530
+	.long	1072394897
+	.long	652621408
+	.long	3162261964
+	.long	3207412993
+	.long	1072449290
+	.long	3206124665
+	.long	1014408733
+	.long	624461478
+	.long	1072500450
+	.long	932437485
+	.long	1015204343
+	.long	767665908
+	.long	1072548600
+	.long	1037911952
+	.long	3163527627
+	.long	1110773639
+	.long	1072593952
+	.long	2371517912
+	.long	3160465741
+	.long	1940828530
+	.long	1072636704
+	.long	2731408428
+	.long	3162895795
+	.long	1911329388
+	.long	1072677041
+	.long	1773089615
+	.long	3159569267
+	.long	1764715788
+	.long	1072704191
+	.long	691346949
+	.long	3164069946
+	.long	3332979233
+	.long	1072722195
+	.long	3550733983
+	.long	1014770628
+	.long	1321870254
+	.long	1072739231
+	.long	1415315820
+	.long	1016224052
+	.long	3657429030
+	.long	1072755365
+	.long	3910539033
+	.long	1015966402
+	.long	4197624557
+	.long	1072770661
+	.long	2333399254
+	.long	3164546480
+	.long	1512059493
+	.long	1072785177
+	.long	2701510318
+	.long	1016178092
+	.long	453379037
+	.long	1072798965
+	.long	4046344253
+	.long	3162814364
+	.long	1942345162
+	.long	1072818388
+	.long	621134147
+	.long	1016335195
+	.long	4210176273
+	.long	1072842164
+	.long	2701013387
+	.long	3164326619
+	.long	4185644010
+	.long	1072863795
+	.long	4163699341
+	.long	1016203112
+	.long	679688788
+	.long	1072883543
+	.long	4147276762
+	.long	1014066750
+	.long	29432865
+	.long	1072901630
+	.long	970415797
+	.long	1016902063
+	.long	4070721092
+	.long	1072918247
+	.long	2539004411
+	.long	3163736096
+	.long	2252468843
+	.long	1072933561
+	.long	3424082887
+	.long	3163407177
+	.long	2929724825
+	.long	1072947712
+	.long	3661482235
+	.long	3163846989
+	.long	1377513368
+	.long	1072960824
+	.long	3987926680
+	.long	1013647908
+	.long	1031632908
+	.long	1072973003
+	.long	3672217151
+	.long	1016614619
+	.long	2516508130
+	.long	1072984342
+	.long	545855020
+	.long	3162728930
+	.long	3792452178
+	.long	1072994923
+	.long	3420119467
+	.long	1016471430
+	.long	3147791459
+	.long	1073004818
+	.long	1342204979
+	.long	1013937254
+	.long	999189752
+	.long	1073014090
+	.long	1006335472
+	.long	3162850919
+	.long	711011011
+	.long	1073022794
+	.long	4633488
+	.long	3162966895
+	.long	15640363
+	.long	1073030980
+	.long	1686389560
+	.long	3164376226
+	.long	1218463589
+	.long	1073042382
+	.long	1526837110
+	.long	3163533985
+	.long	2538470555
+	.long	1073056144
+	.long	2273304406
+	.long	3163784996
+	.long	1229720947
+	.long	1073068489
+	.long	2971628206
+	.long	3162356540
+	.long	3115427016
+	.long	1073079621
+	.long	4215132957
+	.long	3164282762
+	.long	4030612557
+	.long	1073089709
+	.long	1913251691
+	.long	3163671292
+	.long	2728521257
+	.long	1073098892
+	.long	2861089500
+	.long	1015454459
+	.long	1118696283
+	.long	1073107285
+	.long	1628948053
+	.long	1016179658
+	.long	2682711255
+	.long	1073114984
+	.long	2906306266
+	.long	1014142643
+	.long	2073898081
+	.long	1073122072
+	.long	1322740454
+	.long	3164497217
+	.long	1403700297
+	.long	1073128618
+	.long	416137895
+	.long	3162781466
+	.long	2502685617
+	.long	1073134681
+	.long	3242008732
+	.long	1014593495
+	.long	1531926851
+	.long	1073140313
+	.long	1362708094
+	.long	1016517604
+	.long	3572814411
+	.long	1073145557
+	.long	3709790527
+	.long	1012646874
+	.long	1695536111
+	.long	1073150453
+	.long	3980346340
+	.long	1016705136
+	.long	2363057203
+	.long	1073155033
+	.long	2551194792
+	.long	1012569695
+	.long	2873365682
+	.long	1073159327
+	.long	3181154748
+	.long	1017041450
+	.long	1053384691
+	.long	1073165288
+	.long	3074536879
+	.long	1016965660
+	.long	3270542712
+	.long	1073172451
+	.long	2535319415
+	.long	3163051778
+	.long	1353631484
+	.long	1073178850
+	.long	1173833755
+	.long	1015534537
+	.long	3511218460
+	.long	1073184599
+	.long	1243608109
+	.long	3161592122
+	.long	4121259284
+	.long	1073189793
+	.long	398584912
+	.long	3163829923
+	.long	1193862106
+	.long	1073194509
+	.long	1873745539
+	.long	3163802819
+	.long	3861949790
+	.long	1073198808
+	.long	3841261147
+	.long	1015587248
+	.long	1486904578
+	.long	1073202745
+	.long	1634726776
+	.long	3163847886
+	.long	2879153715
+	.long	1073206362
+	.long	200456242
+	.long	3164138657
+	.long	385353253
+	.long	1073209698
+	.long	1186355517
+	.long	1014887155
+	.long	1125865839
+	.long	1073212783
+	.long	203561262
+	.long	3161244927
+	.long	1221361475
+	.long	1073215645
+	.long	3382476563
+	.long	1014936138
+	.long	2077323573
+	.long	1073218307
+	.long	1005121005
+	.long	3164430752
+	.long	215611373
+	.long	1073220790
+	.long	353198764
+	.long	3164485137
+	.long	2347419265
+	.long	1073223110
+	.long	1103143360
+	.long	1016542137
+	.long	1379112765
+	.long	1073225284
+	.long	381583533
+	.long	3162870833
+	.long	3891198463
+	.long	1073228298
+	.long	1771275754
+	.long	1014654681
+	.long	3395914051
+	.long	1073231917
+	.long	2350900914
+	.long	3164013978
+	.long	2799919478
+	.long	1073235146
+	.long	2893950164
+	.long	3163260901
+	.long	1138673476
+	.long	1073238045
+	.long	2622204785
+	.long	3164174388
+	.long	3408855940
+	.long	1073240661
+	.long	2800881650
+	.long	1016008624
+	.long	2044858738
+	.long	1073243035
+	.long	604544785
+	.long	1017022901
+	.long	2578795176
+	.long	1073245198
+	.long	2557332925
+	.long	1016135165
+	.long	4196285314
+	.long	1073247177
+	.long	2032365307
+	.long	1016194735
+	.long	224877747
+	.long	1073248996
+	.long	497926916
+	.long	1016947111
+	.long	3271386490
+	.long	1073250671
+	.long	2689994846
+	.long	1016631513
+	.long	813635989
+	.long	1073252221
+	.long	747035277
+	.long	3164530136
+	.long	369829519
+	.long	1073253658
+	.long	2182033858
+	.long	3163190340
+	.long	1187679052
+	.long	1073254994
+	.long	673954443
+	.long	1016149821
+	.long	4232586098
+	.long	1073256239
+	.long	497775200
+	.long	3162179015
+	.long	426690558
+	.long	1073257404
+	.long	3063343247
+	.long	1016865578
+	.long	1624065902
+	.long	1073258494
+	.long	1354224996
+	.long	3163503778
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	atan_tbl,@object
+	.size	atan_tbl,2592
+	.align 4
+pi_table:
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	pi_table,@object
+	.size	pi_table,16
+	.align 4
+SGNMASK:
+	.long	4294967295
+	.long	2147483647
+	.type	SGNMASK,@object
+	.size	SGNMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_atan.1-.
+	.4byte ..___tag_value_atan.5-..___tag_value_atan.1
+	.2byte 0x0400
+	.4byte ..___tag_value_atan.3-..___tag_value_atan.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_atan.4-..___tag_value_atan.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_cbrt.S b/libm/x86_64/s_cbrt.S
new file mode 100644
index 0000000..4aa4373
--- /dev/null
+++ b/libm/x86_64/s_cbrt.S
@@ -0,0 +1,754 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//   Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
+//   Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
+//   where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
+//   cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
+//   (T stores the high 53 bits, D stores the low order bits)
+//   Result=2^k*T+(2^k*T*r)*P+2^k*D
+//   where P=p1+p2*r+..+p8*r^7
+//
+// Special cases:
+//  cbrt(NaN) = quiet NaN, and raise invalid exception
+//  cbrt(INF) = that INF
+//  cbrt(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  cbrt
+ENTRY(cbrt)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_cbrt.1:
+        subq      $24, %rsp
+..___tag_value_cbrt.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movq      %xmm0, %xmm7
+        movl      $524032, %edx
+        movsd     EXP_MSK3(%rip), %xmm5
+        movsd     EXP_MSK2(%rip), %xmm3
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        movsd     EXP_MASK(%rip), %xmm1
+        movsd     SIG_MASK(%rip), %xmm2
+        andl      $248, %ecx
+        lea       rcp_table(%rip), %r8
+        movsd     (%rcx,%r8), %xmm4
+        movq      %rax, %r9
+        andl      %eax, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_0.0.1
+        cmpl      $524032, %edx
+        je        .L_2TAG_PACKET_1.0.1
+        shrl      $8, %edx
+        shrq      $8, %r9
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    coeff_table(%rip), %xmm5
+        movl      $5462, %eax
+        movapd    16+coeff_table(%rip), %xmm6
+        mull      %edx
+        movq      %r9, %rdx
+        andq      $2047, %r9
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subq      %rax, %r9
+        subq      %rax, %r9
+        subq      %rax, %r9
+        shlq      $8, %r9
+        addl      $682, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addq      %r9, %rcx
+        psllq     $52, %xmm7
+.L_2TAG_PACKET_2.0.1:
+        movapd    32+coeff_table(%rip), %xmm2
+        movapd    48+coeff_table(%rip), %xmm0
+        subsd     %xmm3, %xmm1
+        movq      %xmm7, %xmm3
+        lea       cbrt_table(%rip), %r8
+        mulsd     (%rcx,%r8), %xmm7
+        mulsd     %xmm4, %xmm1
+        lea       D_table(%rip), %r8
+        mulsd     (%rcx,%r8), %xmm3
+        movapd    %xmm1, %xmm4
+        unpcklpd  %xmm1, %xmm1
+        mulpd     %xmm1, %xmm5
+        mulpd     %xmm1, %xmm6
+        mulpd     %xmm1, %xmm1
+        addpd     %xmm5, %xmm2
+        addpd     %xmm6, %xmm0
+        mulpd     %xmm1, %xmm2
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm7, %xmm4
+        addpd     %xmm2, %xmm0
+        mulsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm7, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        mulsd     SCALE63(%rip), %xmm0
+        movq      %xmm0, %xmm7
+        movl      $524032, %edx
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        andl      $248, %ecx
+        lea       rcp_table(%rip), %r8
+        movsd     (%rcx,%r8), %xmm4
+        movq      %rax, %r9
+        andl      %eax, %edx
+        shrl      $8, %edx
+        shrq      $8, %r9
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_3.0.1
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    coeff_table(%rip), %xmm5
+        movl      $5462, %eax
+        movapd    16+coeff_table(%rip), %xmm6
+        mull      %edx
+        movq      %r9, %rdx
+        andq      $2047, %r9
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subq      %rax, %r9
+        subq      %rax, %r9
+        subq      %rax, %r9
+        shlq      $8, %r9
+        addl      $661, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addq      %r9, %rcx
+        psllq     $52, %xmm7
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_3.0.1:
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_4.0.1
+        xorpd     %xmm0, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_4.0.1:
+        movsd     ZERON(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        movl      4(%rsp), %eax
+        movl      (%rsp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %ecx
+        cmpl      $2146435072, %ecx
+        ja        .L_2TAG_PACKET_5.0.1
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_5.0.1
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_6.0.1
+        movsd     INF(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_6.0.1:
+        movsd     NEG_INF(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_5.0.1:
+        movsd     (%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        movq      %xmm0, 8(%rsp)
+.L_2TAG_PACKET_7.0.1:
+..B1.4:
+        addq      $24, %rsp
+..___tag_value_cbrt.4:
+        ret       
+..___tag_value_cbrt.5:
+END(cbrt)
+# -- End  cbrt
+	.section .rodata, "a"
+	.align 16
+	.align 16
+coeff_table:
+	.long	1553778919
+	.long	3213899486
+	.long	3534952507
+	.long	3215266280
+	.long	1646371399
+	.long	3214412045
+	.long	477218588
+	.long	3216798151
+	.long	3582521621
+	.long	1066628362
+	.long	1007461464
+	.long	1068473053
+	.long	889629714
+	.long	1067378449
+	.long	1431655765
+	.long	1070945621
+	.type	coeff_table,@object
+	.size	coeff_table,64
+	.align 4
+EXP_MSK3:
+	.long	4294967295
+	.long	1048575
+	.type	EXP_MSK3,@object
+	.size	EXP_MSK3,8
+	.align 4
+EXP_MSK2:
+	.long	0
+	.long	3220193280
+	.type	EXP_MSK2,@object
+	.size	EXP_MSK2,8
+	.align 4
+EXP_MASK:
+	.long	0
+	.long	3220176896
+	.type	EXP_MASK,@object
+	.size	EXP_MASK,8
+	.align 4
+SIG_MASK:
+	.long	0
+	.long	1032192
+	.type	SIG_MASK,@object
+	.size	SIG_MASK,8
+	.align 4
+rcp_table:
+	.long	528611360
+	.long	3220144632
+	.long	2884679527
+	.long	3220082993
+	.long	1991868891
+	.long	3220024928
+	.long	2298714891
+	.long	3219970134
+	.long	58835168
+	.long	3219918343
+	.long	3035110223
+	.long	3219869313
+	.long	1617585086
+	.long	3219822831
+	.long	2500867033
+	.long	3219778702
+	.long	4241943008
+	.long	3219736752
+	.long	258732970
+	.long	3219696825
+	.long	404232216
+	.long	3219658776
+	.long	2172167368
+	.long	3219622476
+	.long	1544257904
+	.long	3219587808
+	.long	377579543
+	.long	3219554664
+	.long	1616385542
+	.long	3219522945
+	.long	813783277
+	.long	3219492562
+	.long	3940743189
+	.long	3219463431
+	.long	2689777499
+	.long	3219435478
+	.long	1700977147
+	.long	3219408632
+	.long	3169102082
+	.long	3219382828
+	.long	327235604
+	.long	3219358008
+	.long	1244336319
+	.long	3219334115
+	.long	1300311200
+	.long	3219311099
+	.long	3095471925
+	.long	3219288912
+	.long	2166487928
+	.long	3219267511
+	.long	2913108253
+	.long	3219246854
+	.long	293672978
+	.long	3219226904
+	.long	288737297
+	.long	3219207624
+	.long	1810275472
+	.long	3219188981
+	.long	174592167
+	.long	3219170945
+	.long	3539053052
+	.long	3219153485
+	.long	2164392968
+	.long	3219136576
+	.type	rcp_table,@object
+	.size	rcp_table,256
+	.align 4
+cbrt_table:
+	.long	572345495
+	.long	1072698681
+	.long	1998204467
+	.long	1072709382
+	.long	3861501553
+	.long	1072719872
+	.long	2268192434
+	.long	1072730162
+	.long	2981979308
+	.long	1072740260
+	.long	270859143
+	.long	1072750176
+	.long	2958651392
+	.long	1072759916
+	.long	313113243
+	.long	1072769490
+	.long	919449400
+	.long	1072778903
+	.long	2809328903
+	.long	1072788162
+	.long	2222981587
+	.long	1072797274
+	.long	2352530781
+	.long	1072806244
+	.long	594152517
+	.long	1072815078
+	.long	1555767199
+	.long	1072823780
+	.long	4282421314
+	.long	1072832355
+	.long	2355578597
+	.long	1072840809
+	.long	1162590619
+	.long	1072849145
+	.long	797864051
+	.long	1072857367
+	.long	431273680
+	.long	1072865479
+	.long	2669831148
+	.long	1072873484
+	.long	733477752
+	.long	1072881387
+	.long	4280220604
+	.long	1072889189
+	.long	801961634
+	.long	1072896896
+	.long	2915370760
+	.long	1072904508
+	.long	1159613482
+	.long	1072912030
+	.long	2689944798
+	.long	1072919463
+	.long	1248687822
+	.long	1072926811
+	.long	2967951030
+	.long	1072934075
+	.long	630170432
+	.long	1072941259
+	.long	3760898254
+	.long	1072948363
+	.long	0
+	.long	1072955392
+	.long	2370273294
+	.long	1072962345
+	.long	1261754802
+	.long	1072972640
+	.long	546334065
+	.long	1072986123
+	.long	1054893830
+	.long	1072999340
+	.long	1571187597
+	.long	1073012304
+	.long	1107975175
+	.long	1073025027
+	.long	3606909377
+	.long	1073037519
+	.long	1113616747
+	.long	1073049792
+	.long	4154744632
+	.long	1073061853
+	.long	3358931423
+	.long	1073073713
+	.long	4060702372
+	.long	1073085379
+	.long	747576176
+	.long	1073096860
+	.long	3023138255
+	.long	1073108161
+	.long	1419988548
+	.long	1073119291
+	.long	1914185305
+	.long	1073130255
+	.long	294389948
+	.long	1073141060
+	.long	3761802570
+	.long	1073151710
+	.long	978281566
+	.long	1073162213
+	.long	823148820
+	.long	1073172572
+	.long	2420954441
+	.long	1073182792
+	.long	3815449908
+	.long	1073192878
+	.long	2046058587
+	.long	1073202835
+	.long	1807524753
+	.long	1073212666
+	.long	2628681401
+	.long	1073222375
+	.long	3225667357
+	.long	1073231966
+	.long	1555307421
+	.long	1073241443
+	.long	3454043099
+	.long	1073250808
+	.long	1208137896
+	.long	1073260066
+	.long	3659916772
+	.long	1073269218
+	.long	1886261264
+	.long	1073278269
+	.long	3593647839
+	.long	1073287220
+	.long	3086012205
+	.long	1073296075
+	.long	2769796922
+	.long	1073304836
+	.long	888716057
+	.long	1073317807
+	.long	2201465623
+	.long	1073334794
+	.long	164369365
+	.long	1073351447
+	.long	3462666733
+	.long	1073367780
+	.long	2773905457
+	.long	1073383810
+	.long	1342879088
+	.long	1073399550
+	.long	2543933975
+	.long	1073415012
+	.long	1684477781
+	.long	1073430209
+	.long	3532178543
+	.long	1073445151
+	.long	1147747300
+	.long	1073459850
+	.long	1928031793
+	.long	1073474314
+	.long	2079717015
+	.long	1073488553
+	.long	4016765315
+	.long	1073502575
+	.long	3670431139
+	.long	1073516389
+	.long	3549227225
+	.long	1073530002
+	.long	11637607
+	.long	1073543422
+	.long	588220169
+	.long	1073556654
+	.long	2635407503
+	.long	1073569705
+	.long	2042029317
+	.long	1073582582
+	.long	1925128962
+	.long	1073595290
+	.long	4136375664
+	.long	1073607834
+	.long	759964600
+	.long	1073620221
+	.long	4257606771
+	.long	1073632453
+	.long	297278907
+	.long	1073644538
+	.long	3655053093
+	.long	1073656477
+	.long	2442253172
+	.long	1073668277
+	.long	1111876799
+	.long	1073679941
+	.long	3330973139
+	.long	1073691472
+	.long	3438879452
+	.long	1073702875
+	.long	3671565478
+	.long	1073714153
+	.long	1317849547
+	.long	1073725310
+	.long	1642364115
+	.long	1073736348
+	.type	cbrt_table,@object
+	.size	cbrt_table,768
+	.align 4
+D_table:
+	.long	4050900474
+	.long	1014427190
+	.long	1157977860
+	.long	1016444461
+	.long	1374568199
+	.long	1017271387
+	.long	2809163288
+	.long	1016882676
+	.long	3742377377
+	.long	1013168191
+	.long	3101606597
+	.long	1017541672
+	.long	65224358
+	.long	1017217597
+	.long	2691591250
+	.long	1017266643
+	.long	4020758549
+	.long	1017689313
+	.long	1316310992
+	.long	1018030788
+	.long	1031537856
+	.long	1014090882
+	.long	3261395239
+	.long	1016413641
+	.long	886424999
+	.long	1016313335
+	.long	3114776834
+	.long	1014195875
+	.long	1681120620
+	.long	1017825416
+	.long	1329600273
+	.long	1016625740
+	.long	465474623
+	.long	1017097119
+	.long	4251633980
+	.long	1017169077
+	.long	1986990133
+	.long	1017710645
+	.long	752958613
+	.long	1017159641
+	.long	2216216792
+	.long	1018020163
+	.long	4282860129
+	.long	1015924861
+	.long	1557627859
+	.long	1016039538
+	.long	3889219754
+	.long	1018086237
+	.long	3684996408
+	.long	1017353275
+	.long	723532103
+	.long	1017717141
+	.long	2951149676
+	.long	1012528470
+	.long	831890937
+	.long	1017830553
+	.long	1031212645
+	.long	1017387331
+	.long	2741737450
+	.long	1017604974
+	.long	2863311531
+	.long	1003776682
+	.long	4276736099
+	.long	1013153088
+	.long	4111778382
+	.long	1015673686
+	.long	1728065769
+	.long	1016413986
+	.long	2708718031
+	.long	1018078833
+	.long	1069335005
+	.long	1015291224
+	.long	700037144
+	.long	1016482032
+	.long	2904566452
+	.long	1017226861
+	.long	4074156649
+	.long	1017622651
+	.long	25019565
+	.long	1015245366
+	.long	3601952608
+	.long	1015771755
+	.long	3267129373
+	.long	1017904664
+	.long	503203103
+	.long	1014921629
+	.long	2122011730
+	.long	1018027866
+	.long	3927295461
+	.long	1014189456
+	.long	2790625147
+	.long	1016024251
+	.long	1330460186
+	.long	1016940346
+	.long	4033568463
+	.long	1015538390
+	.long	3695818227
+	.long	1017509621
+	.long	257573361
+	.long	1017208868
+	.long	3227697852
+	.long	1017337964
+	.long	234118548
+	.long	1017169577
+	.long	4009025803
+	.long	1017278524
+	.long	1948343394
+	.long	1017749310
+	.long	678398162
+	.long	1018144239
+	.long	3083864863
+	.long	1016669086
+	.long	2415453452
+	.long	1017890370
+	.long	175467344
+	.long	1017330033
+	.long	3197359580
+	.long	1010339928
+	.long	2071276951
+	.long	1015941358
+	.long	268372543
+	.long	1016737773
+	.long	938132959
+	.long	1017389108
+	.long	1816750559
+	.long	1017337448
+	.long	4119203749
+	.long	1017152174
+	.long	2578653878
+	.long	1013108497
+	.long	2470331096
+	.long	1014678606
+	.long	123855735
+	.long	1016553320
+	.long	1265650889
+	.long	1014782687
+	.long	3414398172
+	.long	1017182638
+	.long	1040773369
+	.long	1016158401
+	.long	3483628886
+	.long	1016886550
+	.long	4140499405
+	.long	1016191425
+	.long	3893477850
+	.long	1016964495
+	.long	3935319771
+	.long	1009634717
+	.long	2978982660
+	.long	1015027112
+	.long	2452709923
+	.long	1017990229
+	.long	3190365712
+	.long	1015835149
+	.long	4237588139
+	.long	1015832925
+	.long	2610678389
+	.long	1017962711
+	.long	2127316774
+	.long	1017405770
+	.long	824267502
+	.long	1017959463
+	.long	2165924042
+	.long	1017912225
+	.long	2774007076
+	.long	1013257418
+	.long	4123916326
+	.long	1017582284
+	.long	1976417958
+	.long	1016959909
+	.long	4092806412
+	.long	1017711279
+	.long	119251817
+	.long	1015363631
+	.long	3475418768
+	.long	1017675415
+	.long	1972580503
+	.long	1015470684
+	.long	815541017
+	.long	1017517969
+	.long	2429917451
+	.long	1017397776
+	.long	4062888482
+	.long	1016749897
+	.long	68284153
+	.long	1017925678
+	.long	2207779246
+	.long	1016320298
+	.long	1183466520
+	.long	1017408657
+	.long	143326427
+	.long	1017060403
+	.type	D_table,@object
+	.size	D_table,768
+	.align 4
+SCALE63:
+	.long	0
+	.long	1138753536
+	.type	SCALE63,@object
+	.size	SCALE63,8
+	.align 4
+ZERON:
+	.long	0
+	.long	2147483648
+	.type	ZERON,@object
+	.size	ZERON,8
+	.align 4
+INF:
+	.long	0
+	.long	2146435072
+	.type	INF,@object
+	.size	INF,8
+	.align 4
+NEG_INF:
+	.long	0
+	.long	4293918720
+	.type	NEG_INF,@object
+	.size	NEG_INF,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_cbrt.1-.
+	.4byte ..___tag_value_cbrt.5-..___tag_value_cbrt.1
+	.2byte 0x0400
+	.4byte ..___tag_value_cbrt.3-..___tag_value_cbrt.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_cbrt.4-..___tag_value_cbrt.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_cos.S b/libm/x86_64/s_cos.S
new file mode 100644
index 0000000..ab5a0e1
--- /dev/null
+++ b/libm/x86_64/s_cos.S
@@ -0,0 +1,1275 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     Inputs with |X| < 2^-252 are treated specially as
+//     1 - |x|.
+//
+// Special cases:
+//  cos(NaN) = quiet NaN, and raise invalid exception
+//  cos(INF) = NaN and raise invalid exception
+//  cos(0) = 1
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  cos
+ENTRY(cos)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_cos.1:
+        pushq     %rbx
+..___tag_value_cos.3:
+        subq      $16, %rsp
+..___tag_value_cos.5:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        movl      12(%rsp), %eax
+        movq      PI32INV(%rip), %xmm1
+        andl      $2147418112, %eax
+        subl      $808452096, %eax
+        cmpl      $281346048, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        mulsd     %xmm0, %xmm1
+        movapd    ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sd  %edx, %xmm1
+        movapd    P_2(%rip), %xmm2
+        movq      P_1(%rip), %xmm3
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        addq      $1865232, %rdx
+        movq      %xmm0, %xmm4
+        andq      $63, %rdx
+        movapd    SC_4(%rip), %xmm5
+        lea       Ctable(%rip), %rax
+        shlq      $5, %rdx
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movq      %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        movapd    SC_2(%rip), %xmm6
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%rax), %xmm2
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm5, %xmm0
+        addsd     %xmm7, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm0
+        unpckhpd  %xmm6, %xmm6
+        addsd     %xmm6, %xmm0
+        addsd     %xmm4, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        jg        .L_2TAG_PACKET_1.0.1
+        pextrw    $3, %xmm0, %eax
+        andw      $32767, %ax
+        pinsrw    $3, %eax, %xmm0
+        movq      ONE(%rip), %xmm1
+        subsd     %xmm0, %xmm1
+        movq      %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_2.0.1
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        subl      $16224, %ecx
+        shrl      $7, %ecx
+        andl      $65532, %ecx
+        lea       PI_INV_TABLE(%rip), %r11
+        addq      %r11, %rcx
+        movd      %xmm0, %rax
+        movl      20(%rcx), %r10d
+        movl      24(%rcx), %r8d
+        movl      %eax, %edx
+        shrq      $21, %rax
+        orl       $-2147483648, %eax
+        shrl      $11, %eax
+        movl      %r10d, %r9d
+        imulq     %rdx, %r10
+        imulq     %rax, %r9
+        imulq     %rax, %r8
+        movl      16(%rcx), %esi
+        movl      12(%rcx), %edi
+        movl      %r10d, %r11d
+        shrq      $32, %r10
+        addq      %r10, %r9
+        addq      %r8, %r11
+        movl      %r11d, %r8d
+        shrq      $32, %r11
+        addq      %r11, %r9
+        movl      %esi, %r10d
+        imulq     %rdx, %rsi
+        imulq     %rax, %r10
+        movl      %edi, %r11d
+        imulq     %rdx, %rdi
+        movl      %esi, %ebx
+        shrq      $32, %rsi
+        addq      %rbx, %r9
+        movl      %r9d, %ebx
+        shrq      $32, %r9
+        addq      %rsi, %r10
+        addq      %r9, %r10
+        shlq      $32, %rbx
+        orq       %rbx, %r8
+        imulq     %rax, %r11
+        movl      8(%rcx), %r9d
+        movl      4(%rcx), %esi
+        movl      %edi, %ebx
+        shrq      $32, %rdi
+        addq      %rbx, %r10
+        movl      %r10d, %ebx
+        shrq      $32, %r10
+        addq      %rdi, %r11
+        addq      %r10, %r11
+        movq      %r9, %rdi
+        imulq     %rdx, %r9
+        imulq     %rax, %rdi
+        movl      %r9d, %r10d
+        shrq      $32, %r9
+        addq      %r10, %r11
+        movl      %r11d, %r10d
+        shrq      $32, %r11
+        addq      %r9, %rdi
+        addq      %r11, %rdi
+        movq      %rsi, %r9
+        imulq     %rdx, %rsi
+        imulq     %rax, %r9
+        shlq      $32, %r10
+        orq       %rbx, %r10
+        movl      (%rcx), %eax
+        movl      %esi, %r11d
+        shrq      $32, %rsi
+        addq      %r11, %rdi
+        movl      %edi, %r11d
+        shrq      $32, %rdi
+        addq      %rsi, %r9
+        addq      %rdi, %r9
+        imulq     %rax, %rdx
+        pextrw    $3, %xmm0, %ebx
+        lea       PI_INV_TABLE(%rip), %rdi
+        subq      %rdi, %rcx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      $19, %ecx
+        movl      $32768, %esi
+        andl      %ebx, %esi
+        shrl      $4, %ebx
+        andl      $2047, %ebx
+        subl      $1023, %ebx
+        subl      %ebx, %ecx
+        addq      %rdx, %r9
+        movl      %ecx, %edx
+        addl      $32, %edx
+        cmpl      $1, %ecx
+        jl        .L_2TAG_PACKET_3.0.1
+        negl      %ecx
+        addl      $29, %ecx
+        shll      %cl, %r9d
+        movl      %r9d, %edi
+        andl      $536870911, %r9d
+        testl     $268435456, %r9d
+        jne       .L_2TAG_PACKET_4.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+.L_2TAG_PACKET_5.0.1:
+.L_2TAG_PACKET_6.0.1:
+        cmpq      $0, %r9
+        je        .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_8.0.1:
+        bsr       %r9, %r11
+        movl      $29, %ecx
+        subl      %r11d, %ecx
+        jle       .L_2TAG_PACKET_9.0.1
+        shlq      %cl, %r9
+        movq      %r10, %rax
+        shlq      %cl, %r10
+        addl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shrq      %cl, %rax
+        shrq      %cl, %r8
+        orq       %rax, %r9
+        orq       %r8, %r10
+.L_2TAG_PACKET_10.0.1:
+        cvtsi2sdq %r9, %xmm0
+        shrq      $1, %r10
+        cvtsi2sdq %r10, %xmm3
+        xorpd     %xmm4, %xmm4
+        shll      $4, %edx
+        negl      %edx
+        addl      $16368, %edx
+        orl       %esi, %edx
+        xorl      %ebx, %edx
+        pinsrw    $3, %edx, %xmm4
+        movq      PI_4(%rip), %xmm2
+        movq      8+PI_4(%rip), %xmm6
+        xorpd     %xmm5, %xmm5
+        subl      $1008, %edx
+        pinsrw    $3, %edx, %xmm5
+        mulsd     %xmm4, %xmm0
+        shll      $16, %esi
+        sarl      $31, %esi
+        mulsd     %xmm5, %xmm3
+        movq      %xmm0, %xmm1
+        mulsd     %xmm2, %xmm0
+        shrl      $29, %edi
+        addsd     %xmm3, %xmm1
+        mulsd     %xmm2, %xmm3
+        addl      %esi, %edi
+        xorl      %esi, %edi
+        mulsd     %xmm1, %xmm6
+        movl      %edi, %eax
+        addsd     %xmm3, %xmm6
+        movq      %xmm0, %xmm2
+        addsd     %xmm6, %xmm0
+        subsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm6
+.L_2TAG_PACKET_11.0.1:
+        movq      PI32INV(%rip), %xmm1
+        mulsd     %xmm0, %xmm1
+        movq      ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %rdx
+        cvtsi2sdq %rdx, %xmm1
+        movq      P_1(%rip), %xmm3
+        movapd    P_2(%rip), %xmm2
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        shll      $3, %eax
+        addl      $1865232, %edx
+        movq      %xmm0, %xmm4
+        addl      %eax, %edx
+        andl      $63, %edx
+        movapd    SC_4(%rip), %xmm5
+        lea       Ctable(%rip), %rax
+        shll      $5, %edx
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movq      %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%rax), %xmm2
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        subsd     %xmm6, %xmm1
+        movapd    SC_2(%rip), %xmm6
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        movq      %xmm4, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_7.0.1:
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        movq      $0, %r8
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_8.0.1
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_8.0.1
+        xorpd     %xmm0, %xmm0
+        xorpd     %xmm6, %xmm6
+        jmp       .L_2TAG_PACKET_11.0.1
+.L_2TAG_PACKET_9.0.1:
+        je        .L_2TAG_PACKET_10.0.1
+        negl      %ecx
+        shrq      %cl, %r10
+        movq      %r9, %rax
+        shrq      %cl, %r9
+        subl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shlq      %cl, %rax
+        orq       %rax, %r10
+        jmp       .L_2TAG_PACKET_10.0.1
+.L_2TAG_PACKET_3.0.1:
+        negl      %ecx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      %cl, %r9
+        movq      %r9, %rdi
+        testl     $-2147483648, %r9d
+        jne       .L_2TAG_PACKET_12.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shrq      $3, %rdi
+        jmp       .L_2TAG_PACKET_6.0.1
+.L_2TAG_PACKET_4.0.1:
+        shrl      %cl, %r9d
+        movl      $536870912, %ebx
+        shrl      %cl, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      $32, %rbx
+        addl      $536870912, %edi
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        jmp       .L_2TAG_PACKET_5.0.1
+.L_2TAG_PACKET_12.0.1:
+        shrl      %cl, %r9d
+        movq      $0x100000000, %rbx
+        shrq      %cl, %rbx
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        shrq      $3, %rdi
+        addl      $536870912, %edi
+        jmp       .L_2TAG_PACKET_6.0.1
+.L_2TAG_PACKET_2.0.1:
+        movsd     8(%rsp), %xmm0
+        mulsd     NEG_ZERO(%rip), %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_13.0.1:
+..B1.4:
+        addq      $16, %rsp
+..___tag_value_cos.6:
+        popq      %rbx
+..___tag_value_cos.8:
+        ret       
+..___tag_value_cos.9:
+END(cos)
+# -- End  cos
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ONEHALF:
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	ONEHALF,@object
+	.size	ONEHALF,16
+	.align 16
+P_2:
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.type	P_2,@object
+	.size	P_2,16
+	.align 16
+SC_4:
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.type	SC_4,@object
+	.size	SC_4,16
+	.align 16
+Ctable:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.type	Ctable,@object
+	.size	Ctable,2048
+	.align 16
+SC_2:
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.type	SC_2,@object
+	.size	SC_2,16
+	.align 16
+SC_3:
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.type	SC_3,@object
+	.size	SC_3,16
+	.align 16
+SC_1:
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.type	SC_1,@object
+	.size	SC_1,16
+	.align 16
+PI_INV_TABLE:
+	.long	0
+	.long	0
+	.long	2734261102
+	.long	1313084713
+	.long	4230436817
+	.long	4113882560
+	.long	3680671129
+	.long	1011060801
+	.long	4266746795
+	.long	3736847713
+	.long	3072618042
+	.long	1112396512
+	.long	105459434
+	.long	164729372
+	.long	4263373596
+	.long	2972297022
+	.long	3900847605
+	.long	784024708
+	.long	3919343654
+	.long	3026157121
+	.long	965858873
+	.long	2203269620
+	.long	2625920907
+	.long	3187222587
+	.long	536385535
+	.long	3724908559
+	.long	4012839307
+	.long	1510632735
+	.long	1832287951
+	.long	667617719
+	.long	1330003814
+	.long	2657085997
+	.long	1965537991
+	.long	3957715323
+	.long	1023883767
+	.long	2320667370
+	.long	1811636145
+	.long	529358088
+	.long	1443049542
+	.long	4235946923
+	.long	4040145953
+	.type	PI_INV_TABLE,@object
+	.size	PI_INV_TABLE,164
+	.space 12, 0x00 	# pad
+	.align 16
+PI_4:
+	.long	1073741824
+	.long	1072243195
+	.long	407279769
+	.long	1046758445
+	.type	PI_4,@object
+	.size	PI_4,16
+	.align 8
+PI32INV:
+	.long	1841940611
+	.long	1076125488
+	.type	PI32INV,@object
+	.size	PI32INV,8
+	.align 8
+SIGN_MASK:
+	.long	0
+	.long	2147483648
+	.type	SIGN_MASK,@object
+	.size	SIGN_MASK,8
+	.align 8
+P_1:
+	.long	1413480448
+	.long	1069097467
+	.type	P_1,@object
+	.size	P_1,8
+	.align 8
+P_3:
+	.long	771977331
+	.long	996350346
+	.type	P_3,@object
+	.size	P_3,8
+	.align 8
+ONE:
+	.long	0
+	.long	1072693248
+	.type	ONE,@object
+	.size	ONE,8
+	.align 8
+NEG_ZERO:
+	.long	0
+	.long	2147483648
+	.type	NEG_ZERO,@object
+	.size	NEG_ZERO,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000002c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_cos.1-.
+	.4byte ..___tag_value_cos.9-..___tag_value_cos.1
+	.2byte 0x0400
+	.4byte ..___tag_value_cos.3-..___tag_value_cos.1
+	.4byte 0x0283100e
+	.byte 0x04
+	.4byte ..___tag_value_cos.5-..___tag_value_cos.3
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_cos.6-..___tag_value_cos.5
+	.4byte 0x04c3100e
+	.4byte ..___tag_value_cos.8-..___tag_value_cos.6
+	.2byte 0x080e
+# End
diff --git a/libm/x86_64/s_expm1.S b/libm/x86_64/s_expm1.S
new file mode 100644
index 0000000..9da1d9d
--- /dev/null
+++ b/libm/x86_64/s_expm1.S
@@ -0,0 +1,727 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//
+//  Four sub-domains:
+//    1. |x| < 1/(2*K)
+//      expm1(x) ~ P(x)
+//    2. 1/(2*K) <= |x| <= 56*log(2)
+//       x       x/log(2)    n
+//      e - 1 = 2         = 2 * T[j] * (1 + P(y)) - 1
+//    3. 56*log(2) < x < MAX_LOG
+//       x       x   x/log(2)    n
+//      e - 1 ~ e = 2         = 2 * T[j] * (1 + P(y))
+//    4. x < -56*log(2)
+//       x            x
+//      e - 1 = -1 + e ~ -1
+//    where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//    In case 3, to avoid problems with arithmetic overflow and underflow,
+//              n                        n1  n2
+//    value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//    and BIAS is a value of exponent bias.
+//
+// Special cases:
+//  expm1(NaN) is NaN
+//  expm1(+INF) is +INF
+//  expm1(-INF) is -1
+//  expm1(x) is x for subnormals
+//  for finite argument, only expm1(0)=0 is exact.
+//  For IEEE double
+//    if x > 709.782712893383973096 then expm1(x) overflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  expm1
+ENTRY(expm1)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_expm1.1:
+        subq      $56, %rsp
+..___tag_value_expm1.3:
+        movsd     %xmm0, 32(%rsp)
+..B1.2:
+        unpcklpd  %xmm0, %xmm0
+        movapd    cv(%rip), %xmm1
+        movapd    Shifter(%rip), %xmm6
+        movapd    16+cv(%rip), %xmm2
+        movapd    32+cv(%rip), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $16304, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    48+cv(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    64+cv(%rip), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        subpd     %xmm3, %xmm0
+        lea       Tbl_addr(%rip), %r11
+        movapd    (%rcx,%r11), %xmm2
+        movq      80+cv(%rip), %xmm3
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm3
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm0, %xmm0
+        movq      %xmm2, %xmm4
+        unpckhpd  %xmm2, %xmm2
+        movdqa    mmask(%rip), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    bias(%rip), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        mulsd     %xmm0, %xmm3
+        mulpd     %xmm5, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        addsd     %xmm3, %xmm0
+        xorpd     %xmm3, %xmm3
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm3
+        orpd      %xmm7, %xmm2
+        mulsd     %xmm4, %xmm7
+        movq      %xmm3, %xmm6
+        addsd     %xmm1, %xmm3
+        pextrw    $3, %xmm2, %edx
+        pshufd    $238, %xmm0, %xmm5
+        psrlq     $38, %xmm3
+        psllq     $38, %xmm3
+        movq      %xmm2, %xmm4
+        subsd     %xmm3, %xmm6
+        addsd     %xmm5, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm2, %xmm3
+        xorpd     %xmm5, %xmm5
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm5
+        addsd     %xmm1, %xmm0
+        movl      $17184, %ecx
+        subl      %edx, %ecx
+        subl      $16256, %edx
+        orl       %edx, %ecx
+        jl        .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm3
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+.L_2TAG_PACKET_3.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        cmpl      $0, %edx
+        jl        .L_2TAG_PACKET_4.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm7
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        subsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        movl      36(%rsp), %ecx
+        addsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_5.0.2
+        fstcw     (%rsp)
+        movw      (%rsp), %dx
+        orw       $768, %dx
+        movw      %dx, 4(%rsp)
+        fldcw     4(%rsp)
+        movl      %eax, %edx
+        sarl      $1, %eax
+        subl      %eax, %edx
+        movdqa    emask(%rip), %xmm6
+        pandn     %xmm2, %xmm6
+        addl      $1023, %eax
+        movd      %eax, %xmm3
+        psllq     $52, %xmm3
+        orpd      %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        movsd     %xmm0, 16(%rsp)
+        fldl      16(%rsp)
+        movsd     %xmm6, 24(%rsp)
+        fldl      24(%rsp)
+        movsd     %xmm4, 16(%rsp)
+        fldl      16(%rsp)
+        addl      $1023, %edx
+        movd      %edx, %xmm4
+        psllq     $52, %xmm4
+        faddp     %st, %st(1)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        movsd     %xmm4, 24(%rsp)
+        fldl      24(%rsp)
+        fmulp     %st, %st(1)
+        fstpl     16(%rsp)
+        movsd     16(%rsp), %xmm0
+        fldcw     (%rsp)
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        jmp       ..B1.5
+        cmpl      $-2147483648, %ecx
+        jb        .L_2TAG_PACKET_6.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        movl      $41, 8(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_8.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        movsd     XMAX(%rip), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $41, 8(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_9.0.2:
+        movl      36(%rsp), %eax
+        movl      32(%rsp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %eax
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_10.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_10.0.2
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_11.0.2
+        movq      INF(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_11.0.2:
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_10.0.2:
+        movsd     32(%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_12.0.2:
+        addl      $16304, %eax
+        cmpl      $15504, %eax
+        jb        .L_2TAG_PACKET_13.0.2
+        movapd    cvl(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    16+cvl(%rip), %xmm3
+        movapd    32+cvl(%rip), %xmm4
+        movq      48+cvl(%rip), %xmm5
+        mulsd     %xmm1, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm2
+        xorpd     %xmm7, %xmm7
+        movl      $16368, %edx
+        pinsrw    $3, %edx, %xmm7
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm1, %xmm5
+        pshufd    $228, %xmm1, %xmm3
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm4, %xmm2
+        movq      %xmm7, %xmm4
+        addsd     %xmm6, %xmm7
+        mulpd     %xmm3, %xmm1
+        psrlq     $27, %xmm7
+        psllq     $27, %xmm7
+        movq      HIGHMASK(%rip), %xmm3
+        subsd     %xmm7, %xmm4
+        mulpd     %xmm1, %xmm2
+        addsd     %xmm4, %xmm6
+        pshufd    $238, %xmm2, %xmm1
+        addsd     %xmm2, %xmm6
+        andpd     %xmm0, %xmm3
+        movq      %xmm0, %xmm4
+        addsd     %xmm6, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        mulsd     %xmm7, %xmm3
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_13.0.2:
+        cmpl      $16, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        movq      %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        movl      $16, %edx
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm1
+        movl      $42, 8(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_0.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_12.0.2
+        movl      36(%rsp), %eax
+        cmpl      $1083179008, %eax
+        jge       .L_2TAG_PACKET_8.0.2
+        cmpl      $-1048576, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_7.0.2:
+        movq      %xmm0, 40(%rsp)
+..B1.3:
+        movq      40(%rsp), %xmm0
+.L_2TAG_PACKET_14.0.2:
+..B1.5:
+        addq      $56, %rsp
+..___tag_value_expm1.4:
+        ret       
+..___tag_value_expm1.5:
+END(expm1)
+# -- End  expm1
+	.section .rodata, "a"
+	.align 16
+	.align 16
+cv:
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	1963358694
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1431655765
+	.long	1067799893
+	.long	0
+	.long	1071644672
+	.long	381774871
+	.long	1062650220
+	.long	381774871
+	.long	1062650220
+	.type	cv,@object
+	.size	cv,96
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+Tbl_addr:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1000070955
+	.long	1042145304
+	.long	1040187392
+	.long	11418
+	.long	988267849
+	.long	1039500660
+	.long	3539992576
+	.long	22960
+	.long	36755401
+	.long	1042114290
+	.long	402653184
+	.long	34629
+	.long	3634769483
+	.long	1042178627
+	.long	1820327936
+	.long	46424
+	.long	2155991225
+	.long	1041560680
+	.long	847249408
+	.long	58348
+	.long	2766913307
+	.long	1039293264
+	.long	3489660928
+	.long	70401
+	.long	3651174602
+	.long	1040488175
+	.long	2927624192
+	.long	82586
+	.long	3073892131
+	.long	1042240606
+	.long	1006632960
+	.long	94904
+	.long	1328391742
+	.long	1042019037
+	.long	3942645760
+	.long	107355
+	.long	2650893825
+	.long	1041903210
+	.long	822083584
+	.long	119943
+	.long	2397289153
+	.long	1041802037
+	.long	2281701376
+	.long	132667
+	.long	430997175
+	.long	1042110606
+	.long	1845493760
+	.long	145530
+	.long	1230936525
+	.long	1041801015
+	.long	1702887424
+	.long	158533
+	.long	740675935
+	.long	1040178913
+	.long	4110417920
+	.long	171677
+	.long	3489810261
+	.long	1041825986
+	.long	2793406464
+	.long	184965
+	.long	2532600530
+	.long	1040767882
+	.long	167772160
+	.long	198398
+	.long	3542557060
+	.long	1041827263
+	.long	2986344448
+	.long	211976
+	.long	1401563777
+	.long	1041061093
+	.long	922746880
+	.long	225703
+	.long	3129406026
+	.long	1041852413
+	.long	880803840
+	.long	239579
+	.long	900993572
+	.long	1039283234
+	.long	1275068416
+	.long	253606
+	.long	2115029358
+	.long	1042140042
+	.long	562036736
+	.long	267786
+	.long	1086643152
+	.long	1041785419
+	.long	1610612736
+	.long	282120
+	.long	82864366
+	.long	1041256244
+	.long	3045064704
+	.long	296610
+	.long	2392968152
+	.long	1040913683
+	.long	3573547008
+	.long	311258
+	.long	2905856183
+	.long	1040002214
+	.long	1988100096
+	.long	326066
+	.long	3742008261
+	.long	1040011137
+	.long	1451229184
+	.long	341035
+	.long	863393794
+	.long	1040880621
+	.long	914358272
+	.long	356167
+	.long	1446136837
+	.long	1041372426
+	.long	3707764736
+	.long	371463
+	.long	927855201
+	.long	1040617636
+	.long	360710144
+	.long	386927
+	.long	1492679939
+	.long	1041050306
+	.long	2952790016
+	.long	402558
+	.long	608827001
+	.long	1041582217
+	.long	2181038080
+	.long	418360
+	.long	606260204
+	.long	1042271987
+	.long	1711276032
+	.long	434334
+	.long	3163044019
+	.long	1041843851
+	.long	1006632960
+	.long	450482
+	.long	4148747325
+	.long	1041962972
+	.long	3900702720
+	.long	466805
+	.long	802924201
+	.long	1041275378
+	.long	1442840576
+	.long	483307
+	.long	3052749833
+	.long	1041940577
+	.long	1937768448
+	.long	499988
+	.long	2216116399
+	.long	1041486744
+	.long	914358272
+	.long	516851
+	.long	2729697836
+	.long	1041445764
+	.long	2566914048
+	.long	533897
+	.long	540608356
+	.long	1041310907
+	.long	2600468480
+	.long	551129
+	.long	2916344493
+	.long	1040535661
+	.long	1107296256
+	.long	568549
+	.long	731391814
+	.long	1039497014
+	.long	2566914048
+	.long	586158
+	.long	1024722704
+	.long	1041461625
+	.long	2961178624
+	.long	603959
+	.long	3806831748
+	.long	1041732499
+	.long	2675965952
+	.long	621954
+	.long	238953304
+	.long	1040316488
+	.long	2189426688
+	.long	640145
+	.long	749123235
+	.long	1041725785
+	.long	2063597568
+	.long	658534
+	.long	1168187977
+	.long	1041175214
+	.long	2986344448
+	.long	677123
+	.long	3506096399
+	.long	1042186095
+	.long	1426063360
+	.long	695915
+	.long	1470221620
+	.long	1041675499
+	.long	2566914048
+	.long	714911
+	.long	3182425146
+	.long	1041483134
+	.long	3087007744
+	.long	734114
+	.long	3131698208
+	.long	1042208657
+	.long	4068474880
+	.long	753526
+	.long	2300504125
+	.long	1041428596
+	.long	2415919104
+	.long	773150
+	.long	2290297931
+	.long	1037388400
+	.long	3716153344
+	.long	792987
+	.long	3532148223
+	.long	1041626194
+	.long	771751936
+	.long	813041
+	.long	1161884404
+	.long	1042015258
+	.long	3699376128
+	.long	833312
+	.long	876383176
+	.long	1037968878
+	.long	1241513984
+	.long	853805
+	.long	3379986796
+	.long	1042213153
+	.long	3699376128
+	.long	874520
+	.long	1545797737
+	.long	1041681569
+	.long	58720256
+	.long	895462
+	.long	2925146801
+	.long	1042212567
+	.long	855638016
+	.long	916631
+	.long	1316627971
+	.long	1038516204
+	.long	3883925504
+	.long	938030
+	.long	3267869137
+	.long	1040337004
+	.long	2726297600
+	.long	959663
+	.long	3720868999
+	.long	1041782409
+	.long	3992977408
+	.long	981531
+	.long	433316142
+	.long	1041994064
+	.long	1526726656
+	.long	1003638
+	.long	781232103
+	.long	1040093400
+	.long	2172649472
+	.long	1025985
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,1024
+	.align 16
+mmask:
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.type	mmask,@object
+	.size	mmask,16
+	.align 16
+bias:
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.type	bias,@object
+	.size	bias,16
+	.align 16
+emask:
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	4293918720
+	.type	emask,@object
+	.size	emask,16
+	.align 16
+cvl:
+	.long	2773927732
+	.long	1053236707
+	.long	381774871
+	.long	1062650220
+	.long	379653899
+	.long	1056571845
+	.long	286331153
+	.long	1065423121
+	.long	436314138
+	.long	1059717536
+	.long	1431655765
+	.long	1067799893
+	.long	1431655765
+	.long	1069897045
+	.long	0
+	.long	1071644672
+	.type	cvl,@object
+	.size	cvl,64
+	.align 8
+XMAX:
+	.long	4294967295
+	.long	2146435071
+	.type	XMAX,@object
+	.size	XMAX,8
+	.align 8
+INF:
+	.long	0
+	.long	2146435072
+	.type	INF,@object
+	.size	INF,8
+	.align 8
+HIGHMASK:
+	.long	4227858432
+	.long	4294967295
+	.type	HIGHMASK,@object
+	.size	HIGHMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_expm1.1-.
+	.4byte ..___tag_value_expm1.5-..___tag_value_expm1.1
+	.2byte 0x0400
+	.4byte ..___tag_value_expm1.3-..___tag_value_expm1.1
+	.2byte 0x400e
+	.byte 0x04
+	.4byte ..___tag_value_expm1.4-..___tag_value_expm1.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_log1p.S b/libm/x86_64/s_log1p.S
new file mode 100644
index 0000000..1ff2d39
--- /dev/null
+++ b/libm/x86_64/s_log1p.S
@@ -0,0 +1,829 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//   log1p(NaN) = quiet NaN, and raise invalid exception
+//   log1p(+INF) = that INF
+//   log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
+//   log1p(-1) = -INF, and raises divide-by-zero exception
+//   log1p(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  log1p
+ENTRY(log1p)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_log1p.1:
+        subq      $24, %rsp
+..___tag_value_log1p.3:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        movq      $0x3ff0000000000000, %rax
+        movd      %rax, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $32768, %ecx
+        movd      %rcx, %xmm4
+        movq      $0xffffe00000000000, %r8
+        movd      %r8, %xmm5
+        movddup   %xmm0, %xmm7
+        pshufd    $68, %xmm2, %xmm6
+        pextrw    $3, %xmm0, %ecx
+        addsd     %xmm2, %xmm0
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        subsd     %xmm0, %xmm6
+        orpd      %xmm2, %xmm0
+        psrlq     $27, %xmm0
+        lea       L_tbl(%rip), %r11
+        psrld     $2, %xmm0
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        addsd     %xmm6, %xmm7
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        andl      $32752, %ecx
+        cmpl      $16256, %ecx
+        jb        .L_2TAG_PACKET_1.0.2
+        andl      $32752, %eax
+        movl      $32720, %ecx
+        subl      %eax, %ecx
+        pinsrw    $3, %ecx, %xmm3
+.L_2TAG_PACKET_2.0.2:
+        mulsd     %xmm3, %xmm7
+        paddd     %xmm4, %xmm0
+        movq      $0x3800000000000000, %rcx
+        movd      %rcx, %xmm4
+        orpd      %xmm2, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        paddd     %xmm4, %xmm0
+        mulsd     %xmm0, %xmm5
+        movl      $16352, %ecx
+        subl      %ecx, %eax
+        cvtsi2sd  %eax, %xmm4
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm0, %xmm1
+        movq      log2(%rip), %xmm6
+        movapd    coeff(%rip), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%r11,%rdx), %xmm0
+        movapd    16+coeff(%rip), %xmm2
+        addsd     %xmm5, %xmm1
+        movq      %xmm1, %xmm5
+        addsd     %xmm7, %xmm1
+        subsd     %xmm1, %xmm5
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm4, %xmm6
+        mulsd     8+log2(%rip), %xmm4
+        mulsd     %xmm1, %xmm3
+        movddup   %xmm1, %xmm5
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm2
+        mulpd     %xmm5, %xmm5
+        movddup   %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     32+coeff(%rip), %xmm2
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm7
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm6, %xmm4
+        subsd     %xmm7, %xmm1
+        addpd     %xmm3, %xmm2
+        addsd     %xmm4, %xmm1
+        mulpd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movq      8(%rsp), %xmm0
+        movq      8(%rsp), %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        ja        .L_2TAG_PACKET_5.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $141, (%rsp)
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_4.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $140, (%rsp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_1.0.2:
+        movq      8(%rsp), %xmm0
+        cmpl      $15504, %ecx
+        jb        .L_2TAG_PACKET_9.0.2
+        movapd    coeff2(%rip), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        movapd    16+coeff2(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm4
+        movapd    32+coeff2(%rip), %xmm3
+        mulpd     %xmm0, %xmm1
+        xorpd     %xmm6, %xmm6
+        mulpd     %xmm4, %xmm4
+        addpd     %xmm2, %xmm1
+        pshufd    $68, %xmm4, %xmm5
+        mulpd     %xmm0, %xmm4
+        movl      $49120, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm1
+        mulsd     %xmm4, %xmm4
+        addpd     %xmm3, %xmm1
+        mulsd     %xmm6, %xmm5
+        mulpd     %xmm4, %xmm1
+        pshufd    $238, %xmm1, %xmm7
+        addsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_9.0.2:
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_10.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_10.0.2:
+        movq      %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       ..B1.5
+.L_2TAG_PACKET_8.0.2:
+        movq      %xmm0, 16(%rsp)
+..B1.3:
+        movq      16(%rsp), %xmm0
+.L_2TAG_PACKET_11.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_log1p.4:
+        ret       
+..___tag_value_log1p.5:
+END(log1p)
+# -- End  log1p
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L_tbl:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	L_tbl,@object
+	.size	L_tbl,2064
+	.align 16
+log2:
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.type	log2,@object
+	.size	log2,16
+	.align 16
+coeff:
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.type	coeff,@object
+	.size	coeff,48
+	.align 16
+coeff2:
+	.long	0
+	.long	3217031168
+	.long	2576980378
+	.long	1070176665
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1431655765
+	.long	3217380693
+	.long	1431655765
+	.long	1070945621
+	.type	coeff2,@object
+	.size	coeff2,48
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_log1p.1-.
+	.4byte ..___tag_value_log1p.5-..___tag_value_log1p.1
+	.2byte 0x0400
+	.4byte ..___tag_value_log1p.3-..___tag_value_log1p.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_log1p.4-..___tag_value_log1p.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_sin.S b/libm/x86_64/s_sin.S
new file mode 100644
index 0000000..2f93a34
--- /dev/null
+++ b/libm/x86_64/s_sin.S
@@ -0,0 +1,1300 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     If |x| < SNN (SNN meaning the smallest normal number), we
+//     simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
+//     do 2^-55 * (2^55 * x - x).
+//
+// Special cases:
+//  sin(NaN) = quiet NaN, and raise invalid exception
+//  sin(INF) = NaN and raise invalid exception
+//  sin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  sin
+ENTRY(sin)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_sin.1:
+        pushq     %rbx
+..___tag_value_sin.3:
+        subq      $16, %rsp
+..___tag_value_sin.5:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        movl      12(%rsp), %eax
+        movq      PI32INV(%rip), %xmm1
+        movq      SHIFTER(%rip), %xmm2
+        andl      $2147418112, %eax
+        subl      $808452096, %eax
+        cmpl      $281346048, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        mulsd     %xmm0, %xmm1
+        movapd    ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sd  %edx, %xmm1
+        movapd    P_2(%rip), %xmm6
+        movq      $0x3fb921fb54400000, %r8
+        movd      %r8, %xmm3
+        movapd    SC_4(%rip), %xmm5
+        pshufd    $68, %xmm0, %xmm4
+        mulsd     %xmm1, %xmm3
+        movddup   %xmm1, %xmm1
+        andl      $63, %edx
+        shll      $5, %edx
+        lea       Ctable(%rip), %rax
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm6
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        subsd     %xmm3, %xmm0
+        movddup   %xmm4, %xmm3
+        subsd     %xmm6, %xmm4
+        pshufd    $68, %xmm0, %xmm0
+        movapd    (%rax), %xmm2
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm6, %xmm0
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm6, %xmm3
+        movapd    SC_2(%rip), %xmm6
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        movq      %xmm4, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        jg        .L_2TAG_PACKET_1.0.1
+        shrl      $20, %eax
+        cmpw      $3325, %ax
+        jne       .L_2TAG_PACKET_2.0.1
+        mulsd     ALL_ONES(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_2.0.1:
+        movq      TWO_POW_55(%rip), %xmm3
+        mulsd     %xmm0, %xmm3
+        subsd     %xmm0, %xmm3
+        mulsd     TWO_POW_M55(%rip), %xmm3
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_3.0.1
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        subl      $16224, %ecx
+        shrl      $7, %ecx
+        andl      $65532, %ecx
+        lea       PI_INV_TABLE(%rip), %r11
+        addq      %r11, %rcx
+        movd      %xmm0, %rax
+        movl      20(%rcx), %r10d
+        movl      24(%rcx), %r8d
+        movl      %eax, %edx
+        shrq      $21, %rax
+        orl       $-2147483648, %eax
+        shrl      $11, %eax
+        movl      %r10d, %r9d
+        imulq     %rdx, %r10
+        imulq     %rax, %r9
+        imulq     %rax, %r8
+        movl      16(%rcx), %esi
+        movl      12(%rcx), %edi
+        movl      %r10d, %r11d
+        shrq      $32, %r10
+        addq      %r10, %r9
+        addq      %r8, %r11
+        movl      %r11d, %r8d
+        shrq      $32, %r11
+        addq      %r11, %r9
+        movl      %esi, %r10d
+        imulq     %rdx, %rsi
+        imulq     %rax, %r10
+        movl      %edi, %r11d
+        imulq     %rdx, %rdi
+        movl      %esi, %ebx
+        shrq      $32, %rsi
+        addq      %rbx, %r9
+        movl      %r9d, %ebx
+        shrq      $32, %r9
+        addq      %rsi, %r10
+        addq      %r9, %r10
+        shlq      $32, %rbx
+        orq       %rbx, %r8
+        imulq     %rax, %r11
+        movl      8(%rcx), %r9d
+        movl      4(%rcx), %esi
+        movl      %edi, %ebx
+        shrq      $32, %rdi
+        addq      %rbx, %r10
+        movl      %r10d, %ebx
+        shrq      $32, %r10
+        addq      %rdi, %r11
+        addq      %r10, %r11
+        movq      %r9, %rdi
+        imulq     %rdx, %r9
+        imulq     %rax, %rdi
+        movl      %r9d, %r10d
+        shrq      $32, %r9
+        addq      %r10, %r11
+        movl      %r11d, %r10d
+        shrq      $32, %r11
+        addq      %r9, %rdi
+        addq      %r11, %rdi
+        movq      %rsi, %r9
+        imulq     %rdx, %rsi
+        imulq     %rax, %r9
+        shlq      $32, %r10
+        orq       %rbx, %r10
+        movl      (%rcx), %eax
+        movl      %esi, %r11d
+        shrq      $32, %rsi
+        addq      %r11, %rdi
+        movl      %edi, %r11d
+        shrq      $32, %rdi
+        addq      %rsi, %r9
+        addq      %rdi, %r9
+        imulq     %rax, %rdx
+        pextrw    $3, %xmm0, %ebx
+        lea       PI_INV_TABLE(%rip), %rdi
+        subq      %rdi, %rcx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      $19, %ecx
+        movl      $32768, %esi
+        andl      %ebx, %esi
+        shrl      $4, %ebx
+        andl      $2047, %ebx
+        subl      $1023, %ebx
+        subl      %ebx, %ecx
+        addq      %rdx, %r9
+        movl      %ecx, %edx
+        addl      $32, %edx
+        cmpl      $1, %ecx
+        jl        .L_2TAG_PACKET_4.0.1
+        negl      %ecx
+        addl      $29, %ecx
+        shll      %cl, %r9d
+        movl      %r9d, %edi
+        andl      $536870911, %r9d
+        testl     $268435456, %r9d
+        jne       .L_2TAG_PACKET_5.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+.L_2TAG_PACKET_6.0.1:
+.L_2TAG_PACKET_7.0.1:
+        cmpq      $0, %r9
+        je        .L_2TAG_PACKET_8.0.1
+.L_2TAG_PACKET_9.0.1:
+        bsr       %r9, %r11
+        movl      $29, %ecx
+        subl      %r11d, %ecx
+        jle       .L_2TAG_PACKET_10.0.1
+        shlq      %cl, %r9
+        movq      %r10, %rax
+        shlq      %cl, %r10
+        addl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shrq      %cl, %rax
+        shrq      %cl, %r8
+        orq       %rax, %r9
+        orq       %r8, %r10
+.L_2TAG_PACKET_11.0.1:
+        cvtsi2sdq %r9, %xmm0
+        shrq      $1, %r10
+        cvtsi2sdq %r10, %xmm3
+        xorpd     %xmm4, %xmm4
+        shll      $4, %edx
+        negl      %edx
+        addl      $16368, %edx
+        orl       %esi, %edx
+        xorl      %ebx, %edx
+        pinsrw    $3, %edx, %xmm4
+        movq      PI_4(%rip), %xmm2
+        movq      8+PI_4(%rip), %xmm6
+        xorpd     %xmm5, %xmm5
+        subl      $1008, %edx
+        pinsrw    $3, %edx, %xmm5
+        mulsd     %xmm4, %xmm0
+        shll      $16, %esi
+        sarl      $31, %esi
+        mulsd     %xmm5, %xmm3
+        movq      %xmm0, %xmm1
+        mulsd     %xmm2, %xmm0
+        shrl      $29, %edi
+        addsd     %xmm3, %xmm1
+        mulsd     %xmm2, %xmm3
+        addl      %esi, %edi
+        xorl      %esi, %edi
+        mulsd     %xmm1, %xmm6
+        movl      %edi, %eax
+        addsd     %xmm3, %xmm6
+        movq      %xmm0, %xmm2
+        addsd     %xmm6, %xmm0
+        subsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm6
+.L_2TAG_PACKET_12.0.1:
+        movq      PI32INV(%rip), %xmm1
+        mulsd     %xmm0, %xmm1
+        movq      ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sd  %edx, %xmm1
+        movq      P_1(%rip), %xmm3
+        movapd    P_2(%rip), %xmm2
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        shll      $3, %eax
+        addl      $1865216, %edx
+        movq      %xmm0, %xmm4
+        addl      %eax, %edx
+        andl      $63, %edx
+        movapd    SC_4(%rip), %xmm5
+        lea       Ctable(%rip), %rax
+        shll      $5, %edx
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movq      %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%rax), %xmm2
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        subsd     %xmm6, %xmm1
+        movapd    SC_2(%rip), %xmm6
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        movq      %xmm4, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_8.0.1:
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        movq      $0, %r8
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_9.0.1
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_9.0.1
+        xorpd     %xmm0, %xmm0
+        xorpd     %xmm6, %xmm6
+        jmp       .L_2TAG_PACKET_12.0.1
+.L_2TAG_PACKET_10.0.1:
+        je        .L_2TAG_PACKET_11.0.1
+        negl      %ecx
+        shrq      %cl, %r10
+        movq      %r9, %rax
+        shrq      %cl, %r9
+        subl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shlq      %cl, %rax
+        orq       %rax, %r10
+        jmp       .L_2TAG_PACKET_11.0.1
+.L_2TAG_PACKET_4.0.1:
+        negl      %ecx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      %cl, %r9
+        movq      %r9, %rdi
+        testl     $-2147483648, %r9d
+        jne       .L_2TAG_PACKET_13.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shrq      $3, %rdi
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_5.0.1:
+        shrl      %cl, %r9d
+        movl      $536870912, %ebx
+        shrl      %cl, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      $32, %rbx
+        addl      $536870912, %edi
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        jmp       .L_2TAG_PACKET_6.0.1
+.L_2TAG_PACKET_13.0.1:
+        shrl      %cl, %r9d
+        movq      $0x100000000, %rbx
+        shrq      %cl, %rbx
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        shrq      $3, %rdi
+        addl      $536870912, %edi
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_3.0.1:
+        movq      8(%rsp), %xmm0
+        mulsd     NEG_ZERO(%rip), %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_14.0.1:
+..B1.4:
+        addq      $16, %rsp
+..___tag_value_sin.6:
+        popq      %rbx
+..___tag_value_sin.8:
+        ret       
+..___tag_value_sin.9:
+END(sin)
+# -- End  sin
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ONEHALF:
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	ONEHALF,@object
+	.size	ONEHALF,16
+	.align 16
+P_2:
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.type	P_2,@object
+	.size	P_2,16
+	.align 16
+SC_4:
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.type	SC_4,@object
+	.size	SC_4,16
+	.align 16
+Ctable:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.type	Ctable,@object
+	.size	Ctable,2048
+	.align 16
+SC_2:
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.type	SC_2,@object
+	.size	SC_2,16
+	.align 16
+SC_3:
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.type	SC_3,@object
+	.size	SC_3,16
+	.align 16
+SC_1:
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.type	SC_1,@object
+	.size	SC_1,16
+	.align 16
+PI_INV_TABLE:
+	.long	0
+	.long	0
+	.long	2734261102
+	.long	1313084713
+	.long	4230436817
+	.long	4113882560
+	.long	3680671129
+	.long	1011060801
+	.long	4266746795
+	.long	3736847713
+	.long	3072618042
+	.long	1112396512
+	.long	105459434
+	.long	164729372
+	.long	4263373596
+	.long	2972297022
+	.long	3900847605
+	.long	784024708
+	.long	3919343654
+	.long	3026157121
+	.long	965858873
+	.long	2203269620
+	.long	2625920907
+	.long	3187222587
+	.long	536385535
+	.long	3724908559
+	.long	4012839307
+	.long	1510632735
+	.long	1832287951
+	.long	667617719
+	.long	1330003814
+	.long	2657085997
+	.long	1965537991
+	.long	3957715323
+	.long	1023883767
+	.long	2320667370
+	.long	1811636145
+	.long	529358088
+	.long	1443049542
+	.long	4235946923
+	.long	4040145953
+	.type	PI_INV_TABLE,@object
+	.size	PI_INV_TABLE,164
+	.space 12, 0x00 	# pad
+	.align 16
+PI_4:
+	.long	1073741824
+	.long	1072243195
+	.long	407279769
+	.long	1046758445
+	.type	PI_4,@object
+	.size	PI_4,16
+	.align 8
+PI32INV:
+	.long	1841940611
+	.long	1076125488
+	.type	PI32INV,@object
+	.size	PI32INV,8
+	.align 8
+SHIFTER:
+	.long	0
+	.long	1127743488
+	.type	SHIFTER,@object
+	.size	SHIFTER,8
+	.align 8
+SIGN_MASK:
+	.long	0
+	.long	2147483648
+	.type	SIGN_MASK,@object
+	.size	SIGN_MASK,8
+	.align 8
+P_3:
+	.long	771977331
+	.long	996350346
+	.type	P_3,@object
+	.size	P_3,8
+	.align 8
+ALL_ONES:
+	.long	4294967295
+	.long	1072693247
+	.type	ALL_ONES,@object
+	.size	ALL_ONES,8
+	.align 8
+TWO_POW_55:
+	.long	0
+	.long	1130364928
+	.type	TWO_POW_55,@object
+	.size	TWO_POW_55,8
+	.align 8
+TWO_POW_M55:
+	.long	0
+	.long	1015021568
+	.type	TWO_POW_M55,@object
+	.size	TWO_POW_M55,8
+	.align 8
+P_1:
+	.long	1413480448
+	.long	1069097467
+	.type	P_1,@object
+	.size	P_1,8
+	.align 8
+NEG_ZERO:
+	.long	0
+	.long	2147483648
+	.type	NEG_ZERO,@object
+	.size	NEG_ZERO,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000002c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_sin.1-.
+	.4byte ..___tag_value_sin.9-..___tag_value_sin.1
+	.2byte 0x0400
+	.4byte ..___tag_value_sin.3-..___tag_value_sin.1
+	.4byte 0x0283100e
+	.byte 0x04
+	.4byte ..___tag_value_sin.5-..___tag_value_sin.3
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_sin.6-..___tag_value_sin.5
+	.4byte 0x04c3100e
+	.4byte ..___tag_value_sin.8-..___tag_value_sin.6
+	.2byte 0x080e
+# End
diff --git a/libm/x86_64/s_tan.S b/libm/x86_64/s_tan.S
new file mode 100644
index 0000000..74cb044
--- /dev/null
+++ b/libm/x86_64/s_tan.S
@@ -0,0 +1,2239 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Polynomials coefficients and other constants.
+//
+// Note that in this algorithm, there is a different polynomial for
+// each breakpoint, so there are 32 sets of polynomial coefficients
+// as well as 32 instances of the other constants.
+//
+// The polynomial coefficients and constants are offset from the start
+// of the main block as follows:
+//
+//   0:  c8 | c0
+//  16:  c9 | c1
+//  32: c10 | c2
+//  48: c11 | c3
+//  64: c12 | c4
+//  80: c13 | c5
+//  96: c14 | c6
+// 112: c15 | c7
+// 128: T_hi
+// 136: T_lo
+// 144: Sigma
+// 152: T_hl
+// 160: Tau
+// 168: Mask
+// 176: (end of block)
+//
+// The total table size is therefore 5632 bytes.
+//
+// Note that c0 and c1 are always zero. We could try storing
+// other constants here, and just loading the low part of the
+// SIMD register in these cases, after ensuring the high part
+// is zero.
+//
+// The higher terms of the polynomial are computed in the *low*
+// part of the SIMD register. This is so we can overlap the
+// multiplication by r^8 and the unpacking of the other part.
+//
+// The constants are:
+// T_hi + T_lo = accurate constant term in power series
+// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
+// Tau = multiplier for the reciprocal, always -1 or 0
+//
+// The basic reconstruction formula using these constants is:
+//
+// High = tau * recip_hi + t_hi
+// Med = (sgn * r + t_hl * r)_hi
+// Low = (sgn * r + t_hl * r)_lo +
+//       tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
+//
+// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
+//
+// (c0 = c1 = 0, but using them keeps SIMD regularity)
+//
+// We then do a compensated sum High + Med, add the low parts together
+// and then do the final sum.
+//
+// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
+// modulo pi/2
+//
+// Special cases:
+//  tan(NaN) = quiet NaN, and raise invalid exception
+//  tan(INF) = NaN and raise invalid exception
+//  tan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  tan
+ENTRY(tan)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_tan.1:
+        pushq     %rbx
+..___tag_value_tan.3:
+        subq      $16, %rsp
+..___tag_value_tan.5:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $16314, %eax
+        cmpl      $270, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        movapd    ONEHALF(%rip), %xmm5
+        movapd    MUL16(%rip), %xmm6
+        unpcklpd  %xmm0, %xmm0
+        movapd    sign_mask(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        movapd    PI32INV(%rip), %xmm1
+        mulpd     %xmm0, %xmm1
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm7
+        unpckhpd  %xmm7, %xmm7
+        cvttsd2si %xmm7, %edx
+        cvttpd2dq %xmm1, %xmm1
+        cvtdq2pd  %xmm1, %xmm1
+        mulpd     %xmm6, %xmm1
+        movapd    P_1(%rip), %xmm3
+        movq      QQ_2(%rip), %xmm5
+        addq      $469248, %rdx
+        movapd    P_2(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        andq      $31, %rdx
+        mulsd     %xmm1, %xmm5
+        movq      %rdx, %rcx
+        mulpd     %xmm1, %xmm4
+        shlq      $1, %rcx
+        subpd     %xmm3, %xmm0
+        mulpd     P_3(%rip), %xmm1
+        addq      %rcx, %rdx
+        shlq      $2, %rcx
+        addq      %rcx, %rdx
+        addsd     %xmm0, %xmm5
+        movapd    %xmm0, %xmm2
+        subpd     %xmm4, %xmm0
+        movq      ONE(%rip), %xmm6
+        shlq      $4, %rdx
+        lea       Ctable(%rip), %rax
+        andpd     MASK_35(%rip), %xmm5
+        movapd    %xmm0, %xmm3
+        addq      %rdx, %rax
+        subpd     %xmm0, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        divsd     %xmm5, %xmm6
+        subpd     %xmm4, %xmm2
+        movapd    16(%rax), %xmm7
+        subsd     %xmm5, %xmm3
+        mulpd     %xmm0, %xmm7
+        subpd     %xmm1, %xmm2
+        movapd    48(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        movapd    96(%rax), %xmm4
+        mulpd     %xmm0, %xmm4
+        addsd     %xmm3, %xmm2
+        movapd    %xmm0, %xmm3
+        mulpd     %xmm0, %xmm0
+        addpd     (%rax), %xmm7
+        addpd     32(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     80(%rax), %xmm4
+        addpd     %xmm1, %xmm7
+        movapd    112(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        addpd     %xmm1, %xmm4
+        movapd    64(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm1, %xmm7
+        movapd    %xmm3, %xmm1
+        mulpd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm0
+        mulpd     144(%rax), %xmm1
+        mulpd     %xmm3, %xmm4
+        movq      %xmm1, %xmm3
+        addpd     %xmm4, %xmm7
+        movq      %xmm1, %xmm4
+        mulsd     %xmm7, %xmm0
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm0
+        unpckhpd  %xmm1, %xmm1
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        movq      %xmm2, %xmm4
+        movq      144(%rax), %xmm7
+        unpckhpd  %xmm2, %xmm2
+        addsd     152(%rax), %xmm7
+        mulsd     %xmm2, %xmm7
+        addsd     136(%rax), %xmm7
+        addsd     %xmm1, %xmm7
+        addsd     %xmm7, %xmm0
+        movq      ONE(%rip), %xmm7
+        mulsd     %xmm6, %xmm4
+        movq      168(%rax), %xmm2
+        andpd     %xmm6, %xmm2
+        mulsd     %xmm2, %xmm5
+        mulsd     160(%rax), %xmm6
+        subsd     %xmm5, %xmm7
+        subsd     128(%rax), %xmm2
+        subsd     %xmm4, %xmm7
+        mulsd     %xmm6, %xmm7
+        movq      %xmm3, %xmm4
+        subsd     %xmm2, %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm0
+        subsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        jg        .L_2TAG_PACKET_1.0.1
+        pextrw    $3, %xmm0, %eax
+        movl      %eax, %edx
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_2.0.1
+        andl      $32767, %edx
+        cmpl      $15904, %edx
+        jb        .L_2TAG_PACKET_3.0.1
+        movq      %xmm0, %xmm2
+        movq      %xmm0, %xmm3
+        movq      Q_11(%rip), %xmm1
+        mulsd     %xmm0, %xmm2
+        mulsd     %xmm2, %xmm3
+        mulsd     %xmm2, %xmm1
+        addsd     Q_9(%rip), %xmm1
+        mulsd     %xmm2, %xmm1
+        addsd     Q_7(%rip), %xmm1
+        mulsd     %xmm2, %xmm1
+        addsd     Q_5(%rip), %xmm1
+        mulsd     %xmm2, %xmm1
+        addsd     Q_3(%rip), %xmm1
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_3.0.1:
+        movq      TWO_POW_55(%rip), %xmm3
+        mulsd     %xmm0, %xmm3
+        addsd     %xmm3, %xmm0
+        mulsd     TWO_POW_M55(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_2.0.1:
+        movq      %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_4.0.1
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        subl      $16224, %ecx
+        shrl      $7, %ecx
+        andl      $65532, %ecx
+        lea       PI_INV_TABLE(%rip), %r11
+        addq      %r11, %rcx
+        movd      %xmm0, %rax
+        movl      20(%rcx), %r10d
+        movl      24(%rcx), %r8d
+        movl      %eax, %edx
+        shrq      $21, %rax
+        orl       $-2147483648, %eax
+        shrl      $11, %eax
+        movl      %r10d, %r9d
+        imulq     %rdx, %r10
+        imulq     %rax, %r9
+        imulq     %rax, %r8
+        movl      16(%rcx), %esi
+        movl      12(%rcx), %edi
+        movl      %r10d, %r11d
+        shrq      $32, %r10
+        addq      %r10, %r9
+        addq      %r8, %r11
+        movl      %r11d, %r8d
+        shrq      $32, %r11
+        addq      %r11, %r9
+        movl      %esi, %r10d
+        imulq     %rdx, %rsi
+        imulq     %rax, %r10
+        movl      %edi, %r11d
+        imulq     %rdx, %rdi
+        movl      %esi, %ebx
+        shrq      $32, %rsi
+        addq      %rbx, %r9
+        movl      %r9d, %ebx
+        shrq      $32, %r9
+        addq      %rsi, %r10
+        addq      %r9, %r10
+        shlq      $32, %rbx
+        orq       %rbx, %r8
+        imulq     %rax, %r11
+        movl      8(%rcx), %r9d
+        movl      4(%rcx), %esi
+        movl      %edi, %ebx
+        shrq      $32, %rdi
+        addq      %rbx, %r10
+        movl      %r10d, %ebx
+        shrq      $32, %r10
+        addq      %rdi, %r11
+        addq      %r10, %r11
+        movq      %r9, %rdi
+        imulq     %rdx, %r9
+        imulq     %rax, %rdi
+        movl      %r9d, %r10d
+        shrq      $32, %r9
+        addq      %r10, %r11
+        movl      %r11d, %r10d
+        shrq      $32, %r11
+        addq      %r9, %rdi
+        addq      %r11, %rdi
+        movq      %rsi, %r9
+        imulq     %rdx, %rsi
+        imulq     %rax, %r9
+        shlq      $32, %r10
+        orq       %rbx, %r10
+        movl      (%rcx), %eax
+        movl      %esi, %r11d
+        shrq      $32, %rsi
+        addq      %r11, %rdi
+        movl      %edi, %r11d
+        shrq      $32, %rdi
+        addq      %rsi, %r9
+        addq      %rdi, %r9
+        imulq     %rax, %rdx
+        pextrw    $3, %xmm0, %ebx
+        lea       PI_INV_TABLE(%rip), %rdi
+        subq      %rdi, %rcx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      $19, %ecx
+        movl      $32768, %esi
+        andl      %ebx, %esi
+        shrl      $4, %ebx
+        andl      $2047, %ebx
+        subl      $1023, %ebx
+        subl      %ebx, %ecx
+        addq      %rdx, %r9
+        movl      %ecx, %edx
+        addl      $32, %edx
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_5.0.1
+        negl      %ecx
+        addl      $29, %ecx
+        shll      %cl, %r9d
+        movl      %r9d, %edi
+        andl      $1073741823, %r9d
+        testl     $536870912, %r9d
+        jne       .L_2TAG_PACKET_6.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+.L_2TAG_PACKET_7.0.1:
+.L_2TAG_PACKET_8.0.1:
+        cmpq      $0, %r9
+        je        .L_2TAG_PACKET_9.0.1
+.L_2TAG_PACKET_10.0.1:
+        bsr       %r9, %r11
+        movl      $29, %ecx
+        subl      %r11d, %ecx
+        jle       .L_2TAG_PACKET_11.0.1
+        shlq      %cl, %r9
+        movq      %r10, %rax
+        shlq      %cl, %r10
+        addl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shrq      %cl, %rax
+        shrq      %cl, %r8
+        orq       %rax, %r9
+        orq       %r8, %r10
+.L_2TAG_PACKET_12.0.1:
+        cvtsi2sdq %r9, %xmm0
+        shrq      $1, %r10
+        cvtsi2sdq %r10, %xmm3
+        xorpd     %xmm4, %xmm4
+        shll      $4, %edx
+        negl      %edx
+        addl      $16368, %edx
+        orl       %esi, %edx
+        xorl      %ebx, %edx
+        pinsrw    $3, %edx, %xmm4
+        movq      PI_4(%rip), %xmm2
+        movq      8+PI_4(%rip), %xmm7
+        xorpd     %xmm5, %xmm5
+        subl      $1008, %edx
+        pinsrw    $3, %edx, %xmm5
+        mulsd     %xmm4, %xmm0
+        shll      $16, %esi
+        sarl      $31, %esi
+        mulsd     %xmm5, %xmm3
+        movq      %xmm0, %xmm1
+        mulsd     %xmm2, %xmm0
+        shrl      $30, %edi
+        addsd     %xmm3, %xmm1
+        mulsd     %xmm2, %xmm3
+        addl      %esi, %edi
+        xorl      %esi, %edi
+        mulsd     %xmm1, %xmm7
+        movl      %edi, %eax
+        addsd     %xmm3, %xmm7
+        movq      %xmm0, %xmm2
+        addsd     %xmm7, %xmm0
+        subsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm7
+        movapd    PI32INV(%rip), %xmm1
+        movddup   %xmm0, %xmm0
+        movapd    sign_mask(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        mulpd     %xmm0, %xmm1
+        movddup   %xmm7, %xmm7
+        movapd    ONEHALF(%rip), %xmm5
+        movapd    MUL16(%rip), %xmm6
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm5
+        unpckhpd  %xmm5, %xmm5
+        cvttsd2si %xmm5, %edx
+        cvttpd2dq %xmm1, %xmm1
+        cvtdq2pd  %xmm1, %xmm1
+        mulpd     %xmm6, %xmm1
+        movapd    P_1(%rip), %xmm3
+        movq      QQ_2(%rip), %xmm5
+        shll      $4, %eax
+        addl      $469248, %edx
+        movapd    P_2(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        addl      %eax, %edx
+        andl      $31, %edx
+        mulsd     %xmm1, %xmm5
+        movl      %edx, %ecx
+        mulpd     %xmm1, %xmm4
+        shll      $1, %ecx
+        subpd     %xmm3, %xmm0
+        mulpd     P_3(%rip), %xmm1
+        addl      %ecx, %edx
+        shll      $2, %ecx
+        addl      %ecx, %edx
+        addsd     %xmm0, %xmm5
+        movapd    %xmm0, %xmm2
+        subpd     %xmm4, %xmm0
+        movq      ONE(%rip), %xmm6
+        shll      $4, %edx
+        lea       Ctable(%rip), %rax
+        andpd     MASK_35(%rip), %xmm5
+        movapd    %xmm0, %xmm3
+        addq      %rdx, %rax
+        subpd     %xmm0, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        divsd     %xmm5, %xmm6
+        subpd     %xmm4, %xmm2
+        subsd     %xmm5, %xmm3
+        subpd     %xmm1, %xmm2
+        movapd    48(%rax), %xmm1
+        addpd     %xmm7, %xmm2
+        movapd    16(%rax), %xmm7
+        mulpd     %xmm0, %xmm7
+        movapd    96(%rax), %xmm4
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm4
+        addsd     %xmm3, %xmm2
+        movapd    %xmm0, %xmm3
+        mulpd     %xmm0, %xmm0
+        addpd     (%rax), %xmm7
+        addpd     32(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     80(%rax), %xmm4
+        addpd     %xmm1, %xmm7
+        movapd    112(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        addpd     %xmm1, %xmm4
+        movapd    64(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm1, %xmm7
+        movapd    %xmm3, %xmm1
+        mulpd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm0
+        mulpd     144(%rax), %xmm1
+        mulpd     %xmm3, %xmm4
+        movq      %xmm1, %xmm3
+        addpd     %xmm4, %xmm7
+        movq      %xmm1, %xmm4
+        mulsd     %xmm7, %xmm0
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm0
+        unpckhpd  %xmm1, %xmm1
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        movq      %xmm2, %xmm4
+        movq      144(%rax), %xmm7
+        unpckhpd  %xmm2, %xmm2
+        addsd     152(%rax), %xmm7
+        mulsd     %xmm2, %xmm7
+        addsd     136(%rax), %xmm7
+        addsd     %xmm1, %xmm7
+        addsd     %xmm7, %xmm0
+        movq      ONE(%rip), %xmm7
+        mulsd     %xmm6, %xmm4
+        movq      168(%rax), %xmm2
+        andpd     %xmm6, %xmm2
+        mulsd     %xmm2, %xmm5
+        mulsd     160(%rax), %xmm6
+        subsd     %xmm5, %xmm7
+        subsd     128(%rax), %xmm2
+        subsd     %xmm4, %xmm7
+        mulsd     %xmm6, %xmm7
+        movq      %xmm3, %xmm4
+        subsd     %xmm2, %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm0
+        subsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_9.0.1:
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        movq      $0, %r8
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_10.0.1
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_10.0.1
+        jmp       .L_2TAG_PACKET_12.0.1
+.L_2TAG_PACKET_11.0.1:
+        je        .L_2TAG_PACKET_12.0.1
+        negl      %ecx
+        shrq      %cl, %r10
+        movq      %r9, %rax
+        shrq      %cl, %r9
+        subl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shlq      %cl, %rax
+        orq       %rax, %r10
+        jmp       .L_2TAG_PACKET_12.0.1
+.L_2TAG_PACKET_5.0.1:
+        notl      %ecx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      %cl, %r9
+        movq      %r9, %rdi
+        testl     $-2147483648, %r9d
+        jne       .L_2TAG_PACKET_13.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shrq      $2, %rdi
+        jmp       .L_2TAG_PACKET_8.0.1
+.L_2TAG_PACKET_6.0.1:
+        shrl      %cl, %r9d
+        movl      $1073741824, %ebx
+        shrl      %cl, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      $32, %rbx
+        addl      $1073741824, %edi
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_13.0.1:
+        shrl      %cl, %r9d
+        movq      $0x100000000, %rbx
+        shrq      %cl, %rbx
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        shrq      $2, %rdi
+        addl      $1073741824, %edi
+        jmp       .L_2TAG_PACKET_8.0.1
+.L_2TAG_PACKET_4.0.1:
+        movq      8(%rsp), %xmm0
+        mulsd     NEG_ZERO(%rip), %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_14.0.1:
+..B1.4:
+        addq      $16, %rsp
+..___tag_value_tan.6:
+        popq      %rbx
+..___tag_value_tan.8:
+        ret       
+..___tag_value_tan.9:
+END(tan)
+# -- End  tan
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ONEHALF:
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	ONEHALF,@object
+	.size	ONEHALF,16
+	.align 16
+MUL16:
+	.long	0
+	.long	1076887552
+	.long	0
+	.long	1072693248
+	.type	MUL16,@object
+	.size	MUL16,16
+	.align 16
+sign_mask:
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.type	sign_mask,@object
+	.size	sign_mask,16
+	.align 16
+PI32INV:
+	.long	1841940611
+	.long	1071931184
+	.long	1841940611
+	.long	1076125488
+	.type	PI32INV,@object
+	.size	PI32INV,16
+	.align 16
+P_1:
+	.long	1413758976
+	.long	1069097467
+	.long	1413742592
+	.long	1069097467
+	.type	P_1,@object
+	.size	P_1,16
+	.align 16
+P_2:
+	.long	1734819840
+	.long	3174229945
+	.long	1280049152
+	.long	1028033571
+	.type	P_2,@object
+	.size	P_2,16
+	.align 16
+P_3:
+	.long	923219018
+	.long	984130272
+	.long	57701189
+	.long	988383790
+	.type	P_3,@object
+	.size	P_3,16
+	.align 16
+Ctable:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1066820852
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1441186365
+	.long	1065494243
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	236289504
+	.long	1064135997
+	.long	286331153
+	.long	1069617425
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1160476131
+	.long	1062722102
+	.long	463583772
+	.long	1068212666
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	1066745731
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	1065725283
+	.long	3693284251
+	.long	1069118808
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	1064664197
+	.long	3055842593
+	.long	1068578846
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	1063576465
+	.long	1046897440
+	.long	1067705865
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	1069102779
+	.long	1317599141
+	.long	1012432133
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	1068119047
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	1067254767
+	.long	3593250296
+	.long	1070233561
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	1066371299
+	.long	24583402
+	.long	1069723988
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	1065415756
+	.long	558065897
+	.long	1068949418
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	1070167541
+	.long	1497360404
+	.long	1009710547
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	1069256389
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	1068579152
+	.long	3631919291
+	.long	1070936926
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	1067799281
+	.long	1509038701
+	.long	1070601643
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	1067075736
+	.long	3233018412
+	.long	1069913186
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	1070819848
+	.long	500078909
+	.long	3161288781
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	1070398550
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	1069876531
+	.long	2616040238
+	.long	1071582937
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	1069440113
+	.long	2251697184
+	.long	1071253687
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	1068885191
+	.long	2476932470
+	.long	1070842002
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	1071284857
+	.long	3062633575
+	.long	1014008623
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	1071640847
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	1071346340
+	.long	1037049034
+	.long	1072037305
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	1071090851
+	.long	3205232916
+	.long	1071968658
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	1070871082
+	.long	1496754229
+	.long	1071807201
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	1071717047
+	.long	3451266538
+	.long	3163444811
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	1072881308
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	1072928558
+	.long	3912524733
+	.long	1072622983
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	1072976922
+	.long	946523347
+	.long	1072772766
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	1073026959
+	.long	3718905905
+	.long	1072832823
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	1071997368
+	.long	547126769
+	.long	1015523525
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	1074290212
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	1074739170
+	.long	1264738763
+	.long	1073084804
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	1075052171
+	.long	4270740730
+	.long	1073574708
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	1075420255
+	.long	1769828046
+	.long	1073938542
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	1072317184
+	.long	294527206
+	.long	3162140088
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1704352102
+	.long	1075943001
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	1076659010
+	.long	0
+	.long	1073741824
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	1077353622
+	.long	2863311531
+	.long	1074440874
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	1078115278
+	.long	95443718
+	.long	1075163227
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1330165971
+	.long	3207850745
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	3205151475
+	.long	602185705
+	.long	3215678092
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	3202470837
+	.long	3690544014
+	.long	3213150171
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	3199711161
+	.long	3759536023
+	.long	3210559989
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	3217967566
+	.long	2356426521
+	.long	1025423456
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	3207303968
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	3204528612
+	.long	2754706541
+	.long	3215359511
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	3201651479
+	.long	4097292716
+	.long	3212856302
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	3198830754
+	.long	170296152
+	.long	3210060867
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	3217669096
+	.long	1998842465
+	.long	3174703977
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	3206749304
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	3203817873
+	.long	2223654598
+	.long	3215071936
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	3200900378
+	.long	1066252975
+	.long	3212391267
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	3198004753
+	.long	1046243251
+	.long	3209678971
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	3217377742
+	.long	3205862232
+	.long	3174660915
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	3206166872
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	3203204426
+	.long	1485063559
+	.long	3214682643
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	3200223545
+	.long	2866066872
+	.long	3211982662
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	3197170774
+	.long	1948234989
+	.long	3209098147
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	3217092115
+	.long	1034046433
+	.long	3174271903
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	3205589761
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	3202507988
+	.long	3144465176
+	.long	3214191500
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	3199400272
+	.long	584032116
+	.long	3211469261
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	3196274812
+	.long	3844233498
+	.long	3208626322
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	3216590719
+	.long	3267547836
+	.long	3172163321
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	3204793485
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	3201674917
+	.long	628750575
+	.long	3213566872
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	3198516435
+	.long	1466315631
+	.long	3210837162
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	3195331491
+	.long	3695969289
+	.long	3207854418
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	3216034914
+	.long	23826559
+	.long	3172048060
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	3203672535
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	3200523326
+	.long	2507068734
+	.long	3212502004
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	3197333001
+	.long	1349489537
+	.long	3209765608
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	3194116746
+	.long	3852528092
+	.long	3206760861
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	3214984212
+	.long	3447575948
+	.long	1024675855
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	737611454
+	.long	1056336527
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3594790527
+	.long	1052911621
+	.long	381774871
+	.long	1066844524
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3303051618
+	.long	1049456050
+	.long	3154187623
+	.long	1063343722
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	528061788
+	.long	1045944910
+	.long	2469719819
+	.long	1059831159
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	1056188887
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	1053039678
+	.long	2507068734
+	.long	1065018356
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	1049849353
+	.long	1349489537
+	.long	1062281960
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	1046633098
+	.long	3852528092
+	.long	1059277213
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	1067500564
+	.long	3447575948
+	.long	3172159503
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	1057309837
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	1054191269
+	.long	628750575
+	.long	1066083224
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	1051032787
+	.long	1466315631
+	.long	1063353514
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	1047847843
+	.long	3695969289
+	.long	1060370770
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	1068551266
+	.long	23826559
+	.long	1024564412
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	1058106113
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	1055024340
+	.long	3144465176
+	.long	1066707852
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	1051916624
+	.long	584032116
+	.long	1063985613
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	1048791164
+	.long	3844233498
+	.long	1061142674
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	1069107071
+	.long	3267547836
+	.long	1024679673
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	1058683224
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	1055720778
+	.long	1485063559
+	.long	1067198995
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	1052739897
+	.long	2866066872
+	.long	1064499014
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	1049687126
+	.long	1948234989
+	.long	1061614499
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	1069608467
+	.long	1034046433
+	.long	1026788255
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	1059265656
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	1056334225
+	.long	2223654598
+	.long	1067588288
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	1053416730
+	.long	1066252975
+	.long	1064907619
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	1050521105
+	.long	1046243251
+	.long	1062195323
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	1069894094
+	.long	3205862232
+	.long	1027177267
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	1059820320
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	1057044964
+	.long	2754706541
+	.long	1067875863
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	1054167831
+	.long	4097292716
+	.long	1065372654
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	1051347106
+	.long	170296152
+	.long	1062577219
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	1070185448
+	.long	1998842465
+	.long	1027220329
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1330165971
+	.long	1060367097
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	1057667827
+	.long	602185705
+	.long	1068194444
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	1054987189
+	.long	3690544014
+	.long	1065666523
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	1052227513
+	.long	3759536023
+	.long	1063076341
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	1070483918
+	.long	2356426521
+	.long	3172907104
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1704352102
+	.long	3223426649
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	3224142658
+	.long	0
+	.long	3221225472
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	3224837270
+	.long	2863311531
+	.long	3221924522
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	3225598926
+	.long	95443718
+	.long	3222646875
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	3221773860
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	3222222818
+	.long	1264738763
+	.long	3220568452
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	3222535819
+	.long	4270740730
+	.long	3221058356
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	3222903903
+	.long	1769828046
+	.long	3221422190
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	3219800832
+	.long	294527206
+	.long	1014656440
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	3220364956
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	3220412206
+	.long	3912524733
+	.long	3220106631
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	3220460570
+	.long	946523347
+	.long	3220256414
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	3220510607
+	.long	3718905905
+	.long	3220316471
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	3219481016
+	.long	547126769
+	.long	3163007173
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	3219124495
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	3218829988
+	.long	1037049034
+	.long	3219520953
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	3218574499
+	.long	3205232916
+	.long	3219452306
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	3218354730
+	.long	1496754229
+	.long	3219290849
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	3219200695
+	.long	3451266538
+	.long	1015961163
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	3217882198
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	3217360179
+	.long	2616040238
+	.long	3219066585
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	3216923761
+	.long	2251697184
+	.long	3218737335
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	3216368839
+	.long	2476932470
+	.long	3218325650
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	3218768505
+	.long	3062633575
+	.long	3161492271
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	3216740037
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	3216062800
+	.long	3631919291
+	.long	3218420574
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	3215282929
+	.long	1509038701
+	.long	3218085291
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	3214559384
+	.long	3233018412
+	.long	3217396834
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	3218303496
+	.long	500078909
+	.long	1013805133
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	3215602695
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	3214738415
+	.long	3593250296
+	.long	3217717209
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	3213854947
+	.long	24583402
+	.long	3217207636
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	3212899404
+	.long	558065897
+	.long	3216433066
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	3217651189
+	.long	1497360404
+	.long	3157194195
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	3214229379
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	3213208931
+	.long	3693284251
+	.long	3216602456
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	3212147845
+	.long	3055842593
+	.long	3216062494
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	3211060113
+	.long	1046897440
+	.long	3215189513
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	3216586427
+	.long	1317599141
+	.long	3159915781
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.type	Ctable,@object
+	.size	Ctable,5632
+	.align 16
+MASK_35:
+	.long	4294705152
+	.long	4294967295
+	.long	0
+	.long	0
+	.type	MASK_35,@object
+	.size	MASK_35,16
+	.align 16
+Q_11:
+	.long	3103673719
+	.long	1065509018
+	.type	Q_11,@object
+	.size	Q_11,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_9:
+	.long	3213130307
+	.long	1066820768
+	.type	Q_9,@object
+	.size	Q_9,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_7:
+	.long	1388628139
+	.long	1068212666
+	.type	Q_7,@object
+	.size	Q_7,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_5:
+	.long	285812550
+	.long	1069617425
+	.type	Q_5,@object
+	.size	Q_5,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_3:
+	.long	1431655954
+	.long	1070945621
+	.type	Q_3,@object
+	.size	Q_3,8
+	.space 8, 0x00 	# pad
+	.align 16
+PI_INV_TABLE:
+	.long	0
+	.long	0
+	.long	2734261102
+	.long	1313084713
+	.long	4230436817
+	.long	4113882560
+	.long	3680671129
+	.long	1011060801
+	.long	4266746795
+	.long	3736847713
+	.long	3072618042
+	.long	1112396512
+	.long	105459434
+	.long	164729372
+	.long	4263373596
+	.long	2972297022
+	.long	3900847605
+	.long	784024708
+	.long	3919343654
+	.long	3026157121
+	.long	965858873
+	.long	2203269620
+	.long	2625920907
+	.long	3187222587
+	.long	536385535
+	.long	3724908559
+	.long	4012839307
+	.long	1510632735
+	.long	1832287951
+	.long	667617719
+	.long	1330003814
+	.long	2657085997
+	.long	1965537991
+	.long	3957715323
+	.long	1023883767
+	.long	2320667370
+	.long	1811636145
+	.long	529358088
+	.long	1443049542
+	.long	4235946923
+	.long	4040145953
+	.type	PI_INV_TABLE,@object
+	.size	PI_INV_TABLE,164
+	.space 12, 0x00 	# pad
+	.align 16
+PI_4:
+	.long	0
+	.long	1072243195
+	.long	1175561766
+	.long	1048908043
+	.type	PI_4,@object
+	.size	PI_4,16
+	.align 8
+QQ_2:
+	.long	1734816687
+	.long	1026746297
+	.type	QQ_2,@object
+	.size	QQ_2,8
+	.align 8
+ONE:
+	.long	0
+	.long	1072693248
+	.type	ONE,@object
+	.size	ONE,8
+	.align 8
+TWO_POW_55:
+	.long	0
+	.long	1130364928
+	.type	TWO_POW_55,@object
+	.size	TWO_POW_55,8
+	.align 8
+TWO_POW_M55:
+	.long	0
+	.long	1015021568
+	.type	TWO_POW_M55,@object
+	.size	TWO_POW_M55,8
+	.align 4
+NEG_ZERO:
+	.long	0
+	.long	2147483648
+	.type	NEG_ZERO,@object
+	.size	NEG_ZERO,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000002c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_tan.1-.
+	.4byte ..___tag_value_tan.9-..___tag_value_tan.1
+	.2byte 0x0400
+	.4byte ..___tag_value_tan.3-..___tag_value_tan.1
+	.4byte 0x0283100e
+	.byte 0x04
+	.4byte ..___tag_value_tan.5-..___tag_value_tan.3
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_tan.6-..___tag_value_tan.5
+	.4byte 0x04c3100e
+	.4byte ..___tag_value_tan.8-..___tag_value_tan.6
+	.2byte 0x080e
+# End
diff --git a/libm/x86_64/s_tanh.S b/libm/x86_64/s_tanh.S
new file mode 100644
index 0000000..2c8f9bf
--- /dev/null
+++ b/libm/x86_64/s_tanh.S
@@ -0,0 +1,1392 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
+//
+// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+// log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//         L2EH+L2EL (upper 26, lower 53 bits)
+//
+// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
+//                             f=0.b1 b2 ... b8, k integer
+// 2^{-f} is approximated as Tn[f]+Dn[f]
+// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
+//
+//  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
+//                      for |x| in [23/64,3*2^7)
+// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
+//
+// For |x| in [2^{-4},2^5):
+//         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
+//      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
+//  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
+//  1+T0+D0+p*(T0+D0)=KH+KL, where
+//       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
+//       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
+//  eps ~ (R*KH-1)+R*KL
+//  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
+//  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
+//  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
+//    The result is formed as
+//    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
+//                                                  set at the end
+//
+// For |x| in [2^{-64},2^{-4}):
+//  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
+//
+// For |x|<2^{-64}:  x is returned
+//
+// For |x|>=2^32: return +/-1
+//
+// Special cases:
+//  tanh(NaN) = quiet NaN, and raise invalid exception
+//  tanh(INF) = that INF
+//  tanh(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  tanh
+ENTRY(tanh)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_tanh.1:
+        pushq     %rsi
+..___tag_value_tanh.3:
+..B1.2:
+        movsd     HALFMASK(%rip), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     L2E(%rip), %xmm1
+        movsd     8+L2E(%rip), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     Shifter(%rip), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16304, %ecx
+        cmpl      $144, %ecx
+        jae       .L_2TAG_PACKET_0.0.1
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movq      %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        movsd     ONEMASK(%rip), %xmm4
+        subsd     %xmm6, %xmm3
+        xorpd     %xmm0, %xmm0
+        addsd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm7
+        movapd    cv(%rip), %xmm6
+        addsd     %xmm7, %xmm2
+        movl      $255, %ecx
+        andl      %eax, %ecx
+        addl      %ecx, %ecx
+        lea       T2_neg_f(%rip), %r8
+        movapd    (%r8,%rcx,8), %xmm5
+        shrl      $4, %eax
+        andl      $65520, %eax
+        subl      $16368, %eax
+        negl      %eax
+        pinsrw    $3, %eax, %xmm0
+        movapd    16+cv(%rip), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     %xmm5, %xmm0
+        movsd     32+cv(%rip), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        movq      %xmm4, %xmm5
+        addsd     %xmm0, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm7
+        mulpd     %xmm2, %xmm2
+        addpd     %xmm6, %xmm1
+        mulsd     %xmm2, %xmm2
+        movsd     ONEMASK(%rip), %xmm3
+        mulpd     %xmm2, %xmm1
+        pshufd    $78, %xmm1, %xmm6
+        addsd     %xmm6, %xmm1
+        movq      %xmm1, %xmm6
+        addsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm1
+        andpd     MASK3(%rip), %xmm4
+        divsd     %xmm1, %xmm5
+        subsd     %xmm4, %xmm3
+        pshufd    $238, %xmm0, %xmm1
+        addsd     %xmm0, %xmm3
+        movq      %xmm4, %xmm2
+        addsd     %xmm1, %xmm3
+        mulsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm7
+        addsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm4
+        movsd     RMASK(%rip), %xmm1
+        mulsd     %xmm0, %xmm6
+        andpd     MASK3(%rip), %xmm4
+        addsd     %xmm6, %xmm3
+        movq      %xmm4, %xmm6
+        subsd     %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        movsd     ONEMASK(%rip), %xmm7
+        andpd     %xmm1, %xmm5
+        addsd     %xmm2, %xmm3
+        mulsd     %xmm5, %xmm4
+        xorpd     %xmm2, %xmm2
+        mulsd     %xmm5, %xmm3
+        subsd     TWOMASK(%rip), %xmm6
+        subsd     %xmm7, %xmm4
+        xorl      $32768, %edx
+        pinsrw    $3, %edx, %xmm2
+        addsd     %xmm3, %xmm4
+        mulsd     %xmm5, %xmm6
+        movq      %xmm3, %xmm1
+        mulsd     %xmm4, %xmm3
+        movq      %xmm6, %xmm0
+        mulsd     %xmm4, %xmm6
+        subsd     %xmm3, %xmm1
+        subsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        addl      $960, %ecx
+        cmpl      $1104, %ecx
+        jae       .L_2TAG_PACKET_1.0.1
+        movapd    pv(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    16+pv(%rip), %xmm3
+        mulpd     %xmm1, %xmm1
+        movapd    32+pv(%rip), %xmm4
+        mulpd     %xmm1, %xmm2
+        pshufd    $68, %xmm1, %xmm5
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm5, %xmm5
+        mulpd     %xmm1, %xmm2
+        mulsd     %xmm5, %xmm5
+        addpd     %xmm4, %xmm2
+        mulpd     %xmm5, %xmm2
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        addl      $15344, %ecx
+        cmpl      $16448, %ecx
+        jae       .L_2TAG_PACKET_2.0.1
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_3.0.1
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %eax
+        pinsrw    $3, %eax, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm2
+        jmp       ..B1.4
+.L_2TAG_PACKET_3.0.1:
+        movq      %xmm0, %xmm2
+        mulsd     %xmm2, %xmm2
+        jmp       ..B1.4
+.L_2TAG_PACKET_2.0.1:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_4.0.1
+        xorpd     %xmm2, %xmm2
+        movl      $15344, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        movq      %xmm2, %xmm3
+        mulsd     %xmm2, %xmm2
+        addsd     %xmm3, %xmm2
+.L_2TAG_PACKET_5.0.1:
+        xorpd     %xmm0, %xmm0
+        orl       $16368, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_4.0.1:
+        movq      %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_5.0.1
+        addsd     %xmm0, %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_6.0.1:
+..B1.4:
+        popq      %rcx
+..___tag_value_tanh.4:
+        ret       
+..___tag_value_tanh.5:
+END(tanh)
+# -- End  tanh
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L2E:
+	.long	1610612736
+	.long	1082594631
+	.long	4166901572
+	.long	1055174155
+	.type	L2E,@object
+	.size	L2E,16
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+cv:
+	.long	3884607281
+	.long	3168131199
+	.long	3607404735
+	.long	3190582024
+	.long	1874480759
+	.long	1032041131
+	.long	4286760334
+	.long	1053736893
+	.long	4277811695
+	.long	3211144770
+	.long	0
+	.long	0
+	.type	cv,@object
+	.size	cv,48
+	.align 16
+T2_neg_f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	1797923801
+	.long	1072687577
+	.long	1950547427
+	.long	1013229059
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	915592468
+	.long	1072676282
+	.long	352947894
+	.long	3161024371
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	35929225
+	.long	1072665048
+	.long	2809788041
+	.long	3159436968
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	2038973688
+	.long	1072653874
+	.long	892941374
+	.long	1016046459
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	1222472308
+	.long	1072642761
+	.long	1054357470
+	.long	3161021018
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	481706282
+	.long	1072631708
+	.long	1696079173
+	.long	3162710528
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	2719515920
+	.long	1072620714
+	.long	2760332941
+	.long	1015137933
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2256325230
+	.long	1072609780
+	.long	580117746
+	.long	1015317295
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	2009970496
+	.long	1072598905
+	.long	2159039665
+	.long	3162572948
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	610758006
+	.long	1072588089
+	.long	1965209397
+	.long	3161866232
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	991358482
+	.long	1072577331
+	.long	838715019
+	.long	3163157668
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	1796832535
+	.long	1072566631
+	.long	3176955716
+	.long	3160585513
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	1679558232
+	.long	1072555989
+	.long	2390342287
+	.long	3163333970
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	3594158869
+	.long	1072545404
+	.long	2456521700
+	.long	3163256561
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	1912561781
+	.long	1072534877
+	.long	3147495102
+	.long	1015678253
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3898795731
+	.long	1072524406
+	.long	1249994144
+	.long	1011869818
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	3939148246
+	.long	1072513992
+	.long	3210352148
+	.long	1015274323
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	721996136
+	.long	1072503635
+	.long	563754734
+	.long	1015371318
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1532734324
+	.long	1072493333
+	.long	3094216535
+	.long	3163162857
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	778901109
+	.long	1072483087
+	.long	2248183955
+	.long	3161268751
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	1464976603
+	.long	1072472896
+	.long	3507292405
+	.long	3161977534
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	2307442995
+	.long	1072462760
+	.long	3190117721
+	.long	3162404539
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	2029714210
+	.long	1072452679
+	.long	613660079
+	.long	1015099143
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3657065772
+	.long	1072442652
+	.long	399025623
+	.long	3162957078
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1631695677
+	.long	1072432680
+	.long	2717633076
+	.long	3162344026
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	3287523847
+	.long	1072422761
+	.long	1625971539
+	.long	3157009955
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	3080351519
+	.long	1072412896
+	.long	3379126788
+	.long	3157218001
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4062661092
+	.long	1072403084
+	.long	1422616006
+	.long	3163255318
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	703710506
+	.long	1072393326
+	.long	1384660846
+	.long	1015195891
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	364333489
+	.long	1072383620
+	.long	3923737744
+	.long	3161421373
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	1822067026
+	.long	1072373966
+	.long	1241994956
+	.long	1015340290
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	3861050111
+	.long	1072364364
+	.long	254893773
+	.long	3162813180
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	977020788
+	.long	1072354815
+	.long	3065100517
+	.long	1015541563
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	557149882
+	.long	1072345317
+	.long	3672720709
+	.long	1014537265
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	1405169241
+	.long	1072335870
+	.long	2998539689
+	.long	3162830951
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2331271250
+	.long	1072326474
+	.long	812057446
+	.long	1012207446
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	2152073944
+	.long	1072317129
+	.long	1486860576
+	.long	3163203456
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	3985553595
+	.long	1072307834
+	.long	4002146062
+	.long	1015834136
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	2366108318
+	.long	1072298590
+	.long	2867985102
+	.long	3161762254
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	424392917
+	.long	1072289396
+	.long	2749202995
+	.long	3162838718
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1297350157
+	.long	1072280251
+	.long	1308022040
+	.long	3163412558
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	3833209506
+	.long	1072271155
+	.long	2722920684
+	.long	1013754842
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	2591453363
+	.long	1072262109
+	.long	2132396182
+	.long	3159074198
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	727685349
+	.long	1072253112
+	.long	2038246809
+	.long	3162358742
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	1403662306
+	.long	1072244163
+	.long	2788809599
+	.long	3161671007
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	3492293770
+	.long	1072235262
+	.long	2248032210
+	.long	1015386826
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	1577608921
+	.long	1072226410
+	.long	1875489510
+	.long	3162968394
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	3134592888
+	.long	1072217605
+	.long	4232266862
+	.long	1015991134
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	2759350287
+	.long	1072208848
+	.long	1148526634
+	.long	1015894933
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	3643909174
+	.long	1072200138
+	.long	3537586109
+	.long	1014354647
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	396319521
+	.long	1072191476
+	.long	4172420816
+	.long	3159074632
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	515457527
+	.long	1072182860
+	.long	836709333
+	.long	1015651226
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	2916157145
+	.long	1072174290
+	.long	219487565
+	.long	1015309367
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	2224145553
+	.long	1072165767
+	.long	3482522030
+	.long	3161489169
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	1660913392
+	.long	1072157290
+	.long	4218599604
+	.long	1015135707
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	158781403
+	.long	1072148859
+	.long	2221464712
+	.long	3163286453
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	950803702
+	.long	1072140473
+	.long	1655364926
+	.long	1015237032
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	2980802057
+	.long	1072132132
+	.long	378619896
+	.long	1015773303
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	903334909
+	.long	1072123837
+	.long	1636462108
+	.long	1015039997
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	2263535754
+	.long	1072115586
+	.long	752233586
+	.long	3162639008
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	1727278727
+	.long	1072107380
+	.long	3562710623
+	.long	1011471940
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	2555984613
+	.long	1072099218
+	.long	2652555442
+	.long	3162552692
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	3721688645
+	.long	1072091100
+	.long	3069276937
+	.long	1015839401
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	4201977662
+	.long	1072083026
+	.long	748330254
+	.long	1013594357
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	2979960120
+	.long	1072074996
+	.long	2599109725
+	.long	1014498493
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	3339203574
+	.long	1072067009
+	.long	1483497780
+	.long	3162408754
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	4273770423
+	.long	1072059065
+	.long	3383180809
+	.long	3163218901
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	488188413
+	.long	1072051165
+	.long	3199821029
+	.long	1015564048
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3872257780
+	.long	1072043306
+	.long	1253592103
+	.long	1015958334
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	551349105
+	.long	1072035491
+	.long	3821916050
+	.long	3162106589
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2425981843
+	.long	1072027717
+	.long	2830390851
+	.long	3163346599
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	4222122499
+	.long	1072019985
+	.long	1277378074
+	.long	3163256737
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	671025100
+	.long	1072012296
+	.long	3832014351
+	.long	3163022030
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	3689071823
+	.long	1072004647
+	.long	2321004996
+	.long	3162552716
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3723038930
+	.long	1071997040
+	.long	378465264
+	.long	3162569582
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	4109806887
+	.long	1071989474
+	.long	422403966
+	.long	1014469229
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	3896463087
+	.long	1071981949
+	.long	1139797873
+	.long	3161233805
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	2135241198
+	.long	1071974465
+	.long	1236747871
+	.long	1013589147
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2178460671
+	.long	1071967021
+	.long	777878098
+	.long	3162842493
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3088564500
+	.long	1071959617
+	.long	1762311517
+	.long	1015045673
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	3933059031
+	.long	1071952253
+	.long	2133366768
+	.long	3161531832
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3784486610
+	.long	1071944929
+	.long	1581883040
+	.long	3161698953
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	1720398391
+	.long	1071937645
+	.long	3980678963
+	.long	3163300080
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1118294578
+	.long	1071930400
+	.long	2197495694
+	.long	3159909401
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	1065662932
+	.long	1071923194
+	.long	2533670915
+	.long	1014530238
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	654919306
+	.long	1071916027
+	.long	3232961757
+	.long	3163047469
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	3278348324
+	.long	1071908898
+	.long	3069497416
+	.long	1014750712
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	3743175029
+	.long	1071901808
+	.long	2072812490
+	.long	3162175075
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	1156440435
+	.long	1071894757
+	.long	2351451249
+	.long	1013967056
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	3219942644
+	.long	1071887743
+	.long	3798990616
+	.long	1015368806
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	460407023
+	.long	1071880768
+	.long	4237175092
+	.long	3163138469
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	589198666
+	.long	1071873830
+	.long	2664346172
+	.long	3163157962
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	2732492859
+	.long	1071866929
+	.long	2691479646
+	.long	3162255684
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	1726216749
+	.long	1071860066
+	.long	2466808228
+	.long	3161676405
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	1000925746
+	.long	1071853240
+	.long	1018491672
+	.long	3163309544
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	3991843581
+	.long	1071846450
+	.long	4092853457
+	.long	1014585763
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	1253935211
+	.long	1071839698
+	.long	1395382931
+	.long	3159702613
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	526652809
+	.long	1071832982
+	.long	4223459736
+	.long	1015879375
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	964107055
+	.long	1071826302
+	.long	2800439588
+	.long	3162833221
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	1724976915
+	.long	1071819658
+	.long	420909223
+	.long	3163117379
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	1972484976
+	.long	1071813050
+	.long	675290301
+	.long	3161640050
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	874372905
+	.long	1071806478
+	.long	100263788
+	.long	1015940732
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1897844341
+	.long	1071799941
+	.long	1254300460
+	.long	1015275938
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	4219606026
+	.long	1071793439
+	.long	2434574742
+	.long	1014681548
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2725843665
+	.long	1071786973
+	.long	1433917087
+	.long	1014838523
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	897099801
+	.long	1071780542
+	.long	754756297
+	.long	1015241005
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	2218315341
+	.long	1071774145
+	.long	2694295388
+	.long	3163288868
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	1588871207
+	.long	1071767783
+	.long	143439582
+	.long	3162963416
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2502433899
+	.long	1071761455
+	.long	2148595913
+	.long	1015023991
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	4162030108
+	.long	1071755161
+	.long	2763428480
+	.long	1015529349
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	1480023343
+	.long	1071748902
+	.long	2247196168
+	.long	1015327453
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	2257959872
+	.long	1071742676
+	.long	3802946148
+	.long	1012964927
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	1416741826
+	.long	1071736484
+	.long	2196380210
+	.long	1011413563
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2471440686
+	.long	1071730325
+	.long	968836267
+	.long	3162214888
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	351405227
+	.long	1071724200
+	.long	3125337328
+	.long	3159822479
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	2875075254
+	.long	1071718107
+	.long	4144233330
+	.long	3163333716
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	685187902
+	.long	1071712048
+	.long	378731989
+	.long	1014843115
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	1608493509
+	.long	1071706021
+	.long	3159622171
+	.long	3162807737
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	590962156
+	.long	1071700027
+	.long	3829346666
+	.long	3163275597
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1172597893
+	.long	1071694065
+	.long	114433263
+	.long	1015347593
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	2602514713
+	.long	1071688135
+	.long	2268929336
+	.long	1014354284
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	4133881824
+	.long	1071682237
+	.long	2148155345
+	.long	3162931299
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	728934454
+	.long	1071676372
+	.long	1413842688
+	.long	1014178612
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	238821257
+	.long	1071670538
+	.long	1469694871
+	.long	3162884987
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	1928746161
+	.long	1071664735
+	.long	983617676
+	.long	1014285177
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	772914124
+	.long	1071658964
+	.long	4004372762
+	.long	1012230161
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	339411585
+	.long	1071653224
+	.long	264588982
+	.long	3161636657
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	4200250559
+	.long	1071647514
+	.long	2808127345
+	.long	3161781938
+	.type	T2_neg_f,@object
+	.size	T2_neg_f,4096
+	.space 512, 0x00 	# pad
+	.align 16
+MASK3:
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.type	MASK3,@object
+	.size	MASK3,16
+	.align 16
+RMASK:
+	.long	4294705152
+	.long	4294967295
+	.long	4294705152
+	.long	4294967295
+	.type	RMASK,@object
+	.size	RMASK,16
+	.align 16
+pv:
+	.long	236289503
+	.long	1064135997
+	.long	463583772
+	.long	3215696314
+	.long	1441186365
+	.long	3212977891
+	.long	286331153
+	.long	1069617425
+	.long	2284589306
+	.long	1066820852
+	.long	1431655765
+	.long	3218429269
+	.type	pv,@object
+	.size	pv,48
+	.align 4
+HALFMASK:
+	.long	4160749568
+	.long	2147483647
+	.type	HALFMASK,@object
+	.size	HALFMASK,8
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+TWOMASK:
+	.long	0
+	.long	1073741824
+	.type	TWOMASK,@object
+	.size	TWOMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_tanh.1-.
+	.4byte ..___tag_value_tanh.5-..___tag_value_tanh.1
+	.2byte 0x0400
+	.4byte ..___tag_value_tanh.3-..___tag_value_tanh.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_tanh.4-..___tag_value_tanh.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/sqrt.S b/libm/x86_64/sqrt.S
new file mode 100644
index 0000000..ee97026
--- /dev/null
+++ b/libm/x86_64/sqrt.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(sqrt)
+sqrtsd %xmm0,%xmm0
+retq
+END(sqrt)
diff --git a/libm/x86_64/sqrtf.S b/libm/x86_64/sqrtf.S
new file mode 100644
index 0000000..910407f
--- /dev/null
+++ b/libm/x86_64/sqrtf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(sqrtf)
+sqrtss %xmm0,%xmm0
+retq
+END(sqrtf)
diff --git a/libm/x86_64/trunc.S b/libm/x86_64/trunc.S
new file mode 100644
index 0000000..fe18b40
--- /dev/null
+++ b/libm/x86_64/trunc.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(trunc)
+roundsd $0x3,%xmm0,%xmm0
+retq
+END(trunc)
diff --git a/libm/x86_64/truncf.S b/libm/x86_64/truncf.S
new file mode 100644
index 0000000..eeee1d7
--- /dev/null
+++ b/libm/x86_64/truncf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(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 <private/bionic_asm.h>
+
+ENTRY(truncf)
+roundss $0x3,%xmm0,%xmm0
+retq
+END(truncf)
diff --git a/libstdc++/include/cmath b/libstdc++/include/cmath
index be70343..a15b2ac 100644
--- a/libstdc++/include/cmath
+++ b/libstdc++/include/cmath
@@ -31,7 +31,7 @@
 #define BIONIC_LIBSTDCPP_INCLUDE_CMATH__
 
 /*
- * Standard C++ Library wrapper around the C time.h header file.
+ * Standard C++ Library wrapper around the C math.h header file.
  */
 
 #include <cstddef>
diff --git a/libstdc++/include/new b/libstdc++/include/new
index 0253e8b..c5a43de 100644
--- a/libstdc++/include/new
+++ b/libstdc++/include/new
@@ -13,19 +13,19 @@
 
 void* operator new(std::size_t);
 void* operator new[](std::size_t);
-void  operator delete(void*);
-void  operator delete[](void*);
+void  operator delete(void*) throw();
+void  operator delete[](void*) throw();
 void* operator new(std::size_t, const std::nothrow_t&);
 void* operator new[](std::size_t, const std::nothrow_t&);
-void  operator delete(void*, const std::nothrow_t&);
-void  operator delete[](void*, const std::nothrow_t&);
+void  operator delete(void*, const std::nothrow_t&) throw();
+void  operator delete[](void*, const std::nothrow_t&) throw();
 
 inline void* operator new(std::size_t, void* p) { return p; }
 inline void* operator new[](std::size_t, void* p) { return p; }
 
 // these next two are not really required, since exceptions are off
-inline void  operator delete(void*, void*) { }
-inline void  operator delete[](void*, void*) { }
+inline void  operator delete(void*, void*) throw() { }
+inline void  operator delete[](void*, void*) throw() { }
 
 }  // extern C++
 
diff --git a/linker/Android.mk b/linker/Android.mk
index 4298032..5bdc2f9 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -7,8 +7,10 @@
     dlfcn.cpp \
     linker.cpp \
     linker_allocator.cpp \
+    linker_block_allocator.cpp \
     linker_environ.cpp \
     linker_libc_support.c \
+    linker_memory.cpp \
     linker_phdr.cpp \
     rt.cpp \
 
@@ -16,9 +18,12 @@
 LOCAL_SRC_FILES_arm64   := arch/arm64/begin.S
 LOCAL_SRC_FILES_x86     := arch/x86/begin.c
 LOCAL_SRC_FILES_x86_64  := arch/x86_64/begin.S
-LOCAL_SRC_FILES_mips    := arch/mips/begin.S
-LOCAL_SRC_FILES_mips64  := arch/mips64/begin.S
+LOCAL_SRC_FILES_mips    := arch/mips/begin.S linker_mips.cpp
+LOCAL_SRC_FILES_mips64  := arch/mips64/begin.S linker_mips.cpp
 
+# -shared is used to overwrite the -Bstatic and -static
+# flags triggered by LOCAL_FORCE_STATIC_EXECUTABLE.
+# This dynamic linker is actually a shared object linked with static libraries.
 LOCAL_LDFLAGS := \
     -shared \
     -Wl,-Bsymbolic \
@@ -35,6 +40,11 @@
 
 LOCAL_CPPFLAGS += \
     -std=gnu++11 \
+    -Wold-style-cast \
+
+ifeq ($(TARGET_IS_64_BIT),true)
+LOCAL_CPPFLAGS += -DTARGET_IS_64_BIT
+endif
 
 # We need to access Bionic private headers in the linker.
 LOCAL_CFLAGS += -I$(LOCAL_PATH)/../libc/
@@ -45,13 +55,11 @@
 # TODO: split out the asflags.
 LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
 
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk $(LOCAL_PATH)/linker_executable.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 
-LOCAL_STATIC_LIBRARIES := libc_nomalloc
+LOCAL_STATIC_LIBRARIES := libc_nomalloc libziparchive libutils libz liblog
 
-LOCAL_FORCE_STATIC_EXECUTABLE := true # not necessary when not including BUILD_EXECUTABLE
-
-LOCAL_2ND_ARCH_VAR_PREFIX := $(linker_2nd_arch_var_prefix)
+LOCAL_FORCE_STATIC_EXECUTABLE := true
 
 LOCAL_MODULE := linker
 LOCAL_MODULE_STEM_32 := linker
@@ -62,17 +70,14 @@
 # meaningful name resolution.
 LOCAL_STRIP_MODULE := keep_symbols
 
-include $(LOCAL_PATH)/linker_executable.mk
-ifdef TARGET_2ND_ARCH
-LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
-OVERRIDE_BUILT_MODULE_PATH :=
-LOCAL_BUILT_MODULE :=
-LOCAL_INSTALLED_MODULE :=
-LOCAL_MODULE_STEM :=
-LOCAL_BUILT_MODULE_STEM :=
-LOCAL_INSTALLED_MODULE_STEM :=
-LOCAL_INTERMEDIATE_TARGETS :=
-include $(LOCAL_PATH)/linker_executable.mk
-endif
+# Insert an extra objcopy step to add prefix to symbols. This is needed to prevent gdb
+# looking up symbols in the linker by mistake.
+#
+# Note we are using "=" instead of ":=" to defer the evaluation,
+# because LOCAL_2ND_ARCH_VAR_PREFIX or linked_module isn't set properly yet at this point.
+LOCAL_POST_LINK_CMD = $(hide) $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJCOPY) \
+  --prefix-symbols=__dl_ $(linked_module)
+
+include $(BUILD_EXECUTABLE)
 
 include $(call first-makefiles-under,$(LOCAL_PATH))
diff --git a/linker/debugger.cpp b/linker/debugger.cpp
index ac466a5..357fbdc 100644
--- a/linker/debugger.cpp
+++ b/linker/debugger.cpp
@@ -30,9 +30,11 @@
 
 #include <errno.h>
 #include <inttypes.h>
+#include <pthread.h>
 #include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/mman.h>
 #include <sys/prctl.h>
 #include <sys/socket.h>
@@ -41,8 +43,10 @@
 
 extern "C" int tgkill(int tgid, int tid, int sig);
 
-#if __LP64__
-#define DEBUGGER_SOCKET_NAME "android:debuggerd64"
+// Crash actions have to be sent to the proper debuggerd.
+// On 64 bit systems, the 32 bit debuggerd is named differently.
+#if defined(TARGET_IS_64_BIT) && !defined(__LP64__)
+#define DEBUGGER_SOCKET_NAME "android:debuggerd32"
 #else
 #define DEBUGGER_SOCKET_NAME "android:debuggerd"
 #endif
@@ -57,15 +61,10 @@
 };
 
 /* message sent over the socket */
-struct debugger_msg_t {
-  // version 1 included:
-  debugger_action_t action;
+struct __attribute__((packed)) debugger_msg_t {
+  int32_t action;
   pid_t tid;
-
-  // version 2 added:
-  uintptr_t abort_msg_address;
-
-  // version 3 added:
+  uint64_t abort_msg_address;
   int32_t original_si_code;
 };
 
@@ -154,7 +153,7 @@
   }
 
   char thread_name[MAX_TASK_NAME_LEN + 1]; // one more for termination
-  if (prctl(PR_GET_NAME, (unsigned long)thread_name, 0, 0, 0) != 0) {
+  if (prctl(PR_GET_NAME, reinterpret_cast<unsigned long>(thread_name), 0, 0, 0) != 0) {
     strcpy(thread_name, "<name unknown>");
   } else {
     // short names are null terminated by prctl, but the man page
@@ -215,6 +214,23 @@
     return;
   }
 
+  // Mutex to prevent multiple crashing threads from trying to talk
+  // to debuggerd at the same time.
+  static pthread_mutex_t crash_mutex = PTHREAD_MUTEX_INITIALIZER;
+  int ret = pthread_mutex_trylock(&crash_mutex);
+  if (ret != 0) {
+    if (ret == EBUSY) {
+      __libc_format_log(ANDROID_LOG_INFO, "libc",
+          "Another thread contacted debuggerd first; not contacting debuggerd.");
+      // This will never complete since the lock is never released.
+      pthread_mutex_lock(&crash_mutex);
+    } else {
+      __libc_format_log(ANDROID_LOG_INFO, "libc",
+                        "pthread_mutex_trylock failed: %s", strerror(ret));
+    }
+    return;
+  }
+
   int s = socket_abstract_client(DEBUGGER_SOCKET_NAME, SOCK_STREAM | SOCK_CLOEXEC);
   if (s == -1) {
     __libc_format_log(ANDROID_LOG_FATAL, "libc", "Unable to open connection to debuggerd: %s",
@@ -231,7 +247,7 @@
   msg.tid = gettid();
   msg.abort_msg_address = reinterpret_cast<uintptr_t>(g_abort_message);
   msg.original_si_code = (info != nullptr) ? info->si_code : 0;
-  int ret = TEMP_FAILURE_RETRY(write(s, &msg, sizeof(msg)));
+  ret = TEMP_FAILURE_RETRY(write(s, &msg, sizeof(msg)));
   if (ret == sizeof(msg)) {
     char debuggerd_ack;
     ret = TEMP_FAILURE_RETRY(read(s, &debuggerd_ack, 1));
diff --git a/linker/dlfcn.cpp b/linker/dlfcn.cpp
index 3eb5bea..057c217 100644
--- a/linker/dlfcn.cpp
+++ b/linker/dlfcn.cpp
@@ -20,6 +20,7 @@
 #include <pthread.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <android/dlext.h>
 
 #include <bionic/pthread_internal.h>
@@ -29,7 +30,7 @@
 
 /* This file hijacks the symbols stubbed out in libdl.so. */
 
-static pthread_mutex_t g_dl_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
+static pthread_mutex_t g_dl_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
 
 static const char* __bionic_set_dlerror(char* new_value) {
   char** dlerror_slot = &reinterpret_cast<char**>(__get_tls())[TLS_SLOT_DLERROR];
@@ -99,17 +100,12 @@
   }
 
   soinfo* found = nullptr;
-  ElfW(Sym)* sym = nullptr;
-  if (handle == RTLD_DEFAULT) {
-    sym = dlsym_linear_lookup(symbol, &found, nullptr);
-  } else if (handle == RTLD_NEXT) {
-    void* caller_addr = __builtin_return_address(0);
-    soinfo* si = find_containing_library(caller_addr);
+  const ElfW(Sym)* sym = nullptr;
+  void* caller_addr = __builtin_return_address(0);
+  soinfo* caller = find_containing_library(caller_addr);
 
-    sym = nullptr;
-    if (si && si->next) {
-      sym = dlsym_linear_lookup(symbol, &found, si->next);
-    }
+  if (handle == RTLD_DEFAULT || handle == RTLD_NEXT) {
+    sym = dlsym_linear_lookup(symbol, &found, caller, handle);
   } else {
     sym = dlsym_handle_lookup(reinterpret_cast<soinfo*>(handle), &found, symbol);
   }
@@ -140,12 +136,12 @@
 
   memset(info, 0, sizeof(Dl_info));
 
-  info->dli_fname = si->name;
+  info->dli_fname = si->get_realpath();
   // Address at which the shared object is loaded.
   info->dli_fbase = reinterpret_cast<void*>(si->base);
 
   // Determine if any symbol in the library contains the specified address.
-  ElfW(Sym)* sym = dladdr_find_symbol(si, addr);
+  ElfW(Sym)* sym = si->find_symbol_by_address(addr);
   if (sym != nullptr) {
     info->dli_sname = si->get_string(sym->st_name);
     info->dli_saddr = reinterpret_cast<void*>(si->resolve_symbol_address(sym));
@@ -232,21 +228,28 @@
 static unsigned g_libdl_chains[] = { 0, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
 #endif
 
-static soinfo __libdl_info("libdl.so", nullptr, 0);
+static uint8_t __libdl_info_buf[sizeof(soinfo)] __attribute__((aligned(8)));
+static soinfo* __libdl_info = nullptr;
 
 // This is used by the dynamic linker. Every process gets these symbols for free.
 soinfo* get_libdl_info() {
-  if ((__libdl_info.flags & FLAG_LINKED) == 0) {
-    __libdl_info.flags |= FLAG_LINKED;
-    __libdl_info.strtab = ANDROID_LIBDL_STRTAB;
-    __libdl_info.symtab = g_libdl_symtab;
-    __libdl_info.nbucket = sizeof(g_libdl_buckets)/sizeof(unsigned);
-    __libdl_info.nchain = sizeof(g_libdl_chains)/sizeof(unsigned);
-    __libdl_info.bucket = g_libdl_buckets;
-    __libdl_info.chain = g_libdl_chains;
-    __libdl_info.ref_count = 1;
-    __libdl_info.strtab_size = sizeof(ANDROID_LIBDL_STRTAB);
+  if (__libdl_info == nullptr) {
+    __libdl_info = new (__libdl_info_buf) soinfo("libdl.so", nullptr, 0, RTLD_GLOBAL);
+    __libdl_info->flags_ |= FLAG_LINKED;
+    __libdl_info->strtab_ = ANDROID_LIBDL_STRTAB;
+    __libdl_info->symtab_ = g_libdl_symtab;
+    __libdl_info->nbucket_ = sizeof(g_libdl_buckets)/sizeof(unsigned);
+    __libdl_info->nchain_ = sizeof(g_libdl_chains)/sizeof(unsigned);
+    __libdl_info->bucket_ = g_libdl_buckets;
+    __libdl_info->chain_ = g_libdl_chains;
+    __libdl_info->ref_count_ = 1;
+    __libdl_info->strtab_size_ = sizeof(ANDROID_LIBDL_STRTAB);
+    __libdl_info->local_group_root_ = __libdl_info;
+    __libdl_info->soname_ = "libdl.so";
+#if defined(__arm__)
+    strlcpy(__libdl_info->old_name_, __libdl_info->soname_, sizeof(__libdl_info->old_name_));
+#endif
   }
 
-  return &__libdl_info;
+  return __libdl_info;
 }
diff --git a/linker/linked_list.h b/linker/linked_list.h
index 4e62e20..8003dbf 100644
--- a/linker/linked_list.h
+++ b/linker/linked_list.h
@@ -36,6 +36,12 @@
     clear();
   }
 
+  LinkedList(LinkedList&& that) {
+    this->head_ = that.head_;
+    this->tail_ = that.tail_;
+    that.head_ = that.tail_ = nullptr;
+  }
+
   void push_front(T* const element) {
     LinkedListEntry<T>* new_entry = Allocator::alloc();
     new_entry->next = head_;
@@ -75,6 +81,14 @@
     return element;
   }
 
+  T* front() const {
+    if (head_ == nullptr) {
+      return nullptr;
+    }
+
+    return head_->element;
+  }
+
   void clear() {
     while (head_ != nullptr) {
       LinkedListEntry<T>* p = head_;
@@ -86,7 +100,7 @@
   }
 
   template<typename F>
-  void for_each(F action) {
+  void for_each(F action) const {
     visit([&] (T* si) {
       action(si);
       return true;
@@ -94,7 +108,7 @@
   }
 
   template<typename F>
-  bool visit(F action) {
+  bool visit(F action) const {
     for (LinkedListEntry<T>* e = head_; e != nullptr; e = e->next) {
       if (!action(e->element)) {
         return false;
@@ -122,6 +136,17 @@
     }
   }
 
+  template<typename F>
+  T* find_if(F predicate) const {
+    for (LinkedListEntry<T>* e = head_; e != nullptr; e = e->next) {
+      if (predicate(e->element)) {
+        return e->element;
+      }
+    }
+
+    return nullptr;
+  }
+
   size_t copy_to_array(T* array[], size_t array_length) const {
     size_t sz = 0;
     for (LinkedListEntry<T>* e = head_; sz < array_length && e != nullptr; e = e->next) {
@@ -140,6 +165,12 @@
     return false;
   }
 
+  static LinkedList make_list(T* const element) {
+    LinkedList<T, Allocator> one_element_list;
+    one_element_list.push_back(element);
+    return one_element_list;
+  }
+
  private:
   LinkedListEntry<T>* head_;
   LinkedListEntry<T>* tail_;
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 54867dc..fe2c2f0 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 The Android Open Source Project
+ * Copyright (C) 2008 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -35,9 +35,13 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/mman.h>
+#include <sys/param.h>
+#include <sys/personality.h>
 #include <unistd.h>
 
 #include <new>
+#include <string>
+#include <vector>
 
 // Private C library headers.
 #include "private/bionic_tls.h"
@@ -48,43 +52,23 @@
 #include "private/UniquePtr.h"
 
 #include "linker.h"
+#include "linker_block_allocator.h"
 #include "linker_debug.h"
 #include "linker_environ.h"
+#include "linker_sleb128.h"
 #include "linker_phdr.h"
-#include "linker_allocator.h"
+#include "linker_relocs.h"
+#include "linker_reloc_iterators.h"
+#include "ziparchive/zip_archive.h"
 
-/* >>> IMPORTANT NOTE - READ ME BEFORE MODIFYING <<<
- *
- * Do NOT use malloc() and friends or pthread_*() code here.
- * Don't use printf() either; it's caused mysterious memory
- * corruption in the past.
- * The linker runs before we bring up libc and it's easiest
- * to make sure it does not depend on any complex libc features
- *
- * open issues / todo:
- *
- * - cleaner error reporting
- * - after linking, set as much stuff as possible to READONLY
- *   and NOEXEC
- */
-
-#if defined(__LP64__)
-#define SEARCH_NAME(x) x
-#else
-// Nvidia drivers are relying on the bug:
-// http://code.google.com/p/android/issues/detail?id=6670
-// so we continue to use base-name lookup for lp32
-static const char* get_base_name(const char* name) {
-  const char* bname = strrchr(name, '/');
-  return bname ? bname + 1 : name;
-}
-#define SEARCH_NAME(x) get_base_name(x)
-#endif
+// Override macros to use C++ style casts
+#undef ELF_ST_TYPE
+#define ELF_ST_TYPE(x) (static_cast<uint32_t>(x) & 0xf)
 
 static ElfW(Addr) get_elf_exec_load_bias(const ElfW(Ehdr)* elf);
 
-static LinkerAllocator<soinfo> g_soinfo_allocator;
-static LinkerAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator;
+static LinkerTypeAllocator<soinfo> g_soinfo_allocator;
+static LinkerTypeAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator;
 
 static soinfo* solist;
 static soinfo* sonext;
@@ -101,32 +85,18 @@
   nullptr
 };
 
-#define LDPATH_BUFSIZE (LDPATH_MAX*64)
-#define LDPATH_MAX 8
+static const ElfW(Versym) kVersymNotNeeded = 0;
+static const ElfW(Versym) kVersymGlobal = 1;
 
-#define LDPRELOAD_BUFSIZE (LDPRELOAD_MAX*64)
-#define LDPRELOAD_MAX 8
+static std::vector<std::string> g_ld_library_paths;
+static std::vector<std::string> g_ld_preload_names;
 
-static char g_ld_library_paths_buffer[LDPATH_BUFSIZE];
-static const char* g_ld_library_paths[LDPATH_MAX + 1];
-
-static char g_ld_preloads_buffer[LDPRELOAD_BUFSIZE];
-static const char* g_ld_preload_names[LDPRELOAD_MAX + 1];
-
-static soinfo* g_ld_preloads[LDPRELOAD_MAX + 1];
+static std::vector<soinfo*> g_ld_preloads;
 
 __LIBC_HIDDEN__ int g_ld_debug_verbosity;
 
 __LIBC_HIDDEN__ abort_msg_t* g_abort_message = nullptr; // For debuggerd.
 
-enum RelocationKind {
-  kRelocAbsolute = 0,
-  kRelocRelative,
-  kRelocCopy,
-  kRelocSymbol,
-  kRelocMax
-};
-
 #if STATS
 struct linker_stats_t {
   int count[kRelocMax];
@@ -134,43 +104,17 @@
 
 static linker_stats_t linker_stats;
 
-static void count_relocation(RelocationKind kind) {
+void count_relocation(RelocationKind kind) {
   ++linker_stats.count[kind];
 }
 #else
-static void count_relocation(RelocationKind) {
+void count_relocation(RelocationKind) {
 }
 #endif
 
 #if COUNT_PAGES
-static unsigned bitmask[4096];
-#if defined(__LP64__)
-#define MARK(offset) \
-    do { \
-      if ((((offset) >> 12) >> 5) < 4096) \
-          bitmask[((offset) >> 12) >> 5] |= (1 << (((offset) >> 12) & 31)); \
-    } while (0)
-#else
-#define MARK(offset) \
-    do { \
-      bitmask[((offset) >> 12) >> 3] |= (1 << (((offset) >> 12) & 7)); \
-    } while (0)
+uint32_t bitmask[4096];
 #endif
-#else
-#define MARK(x) do {} while (0)
-#endif
-
-// You shouldn't try to call memory-allocating functions in the dynamic linker.
-// Guard against the most obvious ones.
-#define DISALLOW_ALLOCATION(return_type, name, ...) \
-    return_type name __VA_ARGS__ \
-    { \
-      __libc_fatal("ERROR: " #name " called from the dynamic linker!\n"); \
-    }
-DISALLOW_ALLOCATION(void*, malloc, (size_t u __unused));
-DISALLOW_ALLOCATION(void, free, (void* u __unused));
-DISALLOW_ALLOCATION(void*, realloc, (void* u1 __unused, size_t u2 __unused));
-DISALLOW_ALLOCATION(void*, calloc, (size_t u1 __unused, size_t u2 __unused));
 
 static char __linker_dl_err_buf[768];
 
@@ -184,17 +128,21 @@
 
 // This function is an empty stub where GDB locates a breakpoint to get notified
 // about linker activity.
-extern "C" void __attribute__((noinline)) __attribute__((visibility("default"))) rtld_db_dlactivity();
+extern "C"
+void __attribute__((noinline)) __attribute__((visibility("default"))) rtld_db_dlactivity();
 
 static pthread_mutex_t g__r_debug_mutex = PTHREAD_MUTEX_INITIALIZER;
-static r_debug _r_debug = {1, nullptr, reinterpret_cast<uintptr_t>(&rtld_db_dlactivity), r_debug::RT_CONSISTENT, 0};
+static r_debug _r_debug =
+    {1, nullptr, reinterpret_cast<uintptr_t>(&rtld_db_dlactivity), r_debug::RT_CONSISTENT, 0};
+
 static link_map* r_debug_tail = 0;
 
 static void insert_soinfo_into_debug_map(soinfo* info) {
   // Copy the necessary fields into the debug structure.
   link_map* map = &(info->link_map_head);
   map->l_addr = info->load_bias;
-  map->l_name = reinterpret_cast<char*>(info->name);
+  // link_map l_name field is not const.
+  map->l_name = const_cast<char*>(info->get_realpath());
   map->l_ld = info->dynamic;
 
   // Stick the new library at the end of the list.
@@ -229,7 +177,7 @@
 }
 
 static void notify_gdb_of_load(soinfo* info) {
-  if (info->flags & FLAG_EXE) {
+  if (info->is_main_executable()) {
     // GDB already knows about the main executable
     return;
   }
@@ -246,7 +194,7 @@
 }
 
 static void notify_gdb_of_unload(soinfo* info) {
-  if (info->flags & FLAG_EXE) {
+  if (info->is_main_executable()) {
     // GDB already knows about the main executable
     return;
   }
@@ -277,18 +225,14 @@
   g_soinfo_links_allocator.free(entry);
 }
 
-static void protect_data(int protection) {
-  g_soinfo_allocator.protect_all(protection);
-  g_soinfo_links_allocator.protect_all(protection);
-}
-
-static soinfo* soinfo_alloc(const char* name, struct stat* file_stat, off64_t file_offset) {
-  if (strlen(name) >= SOINFO_NAME_LEN) {
+static soinfo* soinfo_alloc(const char* name, struct stat* file_stat,
+                            off64_t file_offset, uint32_t rtld_flags) {
+  if (strlen(name) >= PATH_MAX) {
     DL_ERR("library name \"%s\" too long", name);
     return nullptr;
   }
 
-  soinfo* si = new (g_soinfo_allocator.alloc()) soinfo(name, file_stat, file_offset);
+  soinfo* si = new (g_soinfo_allocator.alloc()) soinfo(name, file_stat, file_offset, rtld_flags);
 
   sonext->next = si;
   sonext = si;
@@ -308,7 +252,7 @@
 
   soinfo *prev = nullptr, *trav;
 
-  TRACE("name %s: freeing soinfo @ %p", si->name, si);
+  TRACE("name %s: freeing soinfo @ %p", si->get_soname(), si);
 
   for (trav = solist; trav != nullptr; trav = trav->next) {
     if (trav == si) {
@@ -316,9 +260,10 @@
     }
     prev = trav;
   }
+
   if (trav == nullptr) {
     // si was not in solist
-    DL_ERR("name \"%s\" is not in solist!", si->name);
+    DL_ERR("name \"%s\"@%p is not in solist!", si->get_soname(), si);
     return;
   }
 
@@ -335,41 +280,48 @@
   g_soinfo_allocator.free(si);
 }
 
-
 static void parse_path(const char* path, const char* delimiters,
-                       const char** array, char* buf, size_t buf_size, size_t max_count) {
+                       std::vector<std::string>* paths) {
   if (path == nullptr) {
     return;
   }
 
-  size_t len = strlcpy(buf, path, buf_size);
+  paths->clear();
 
-  size_t i = 0;
-  char* buf_p = buf;
-  while (i < max_count && (array[i] = strsep(&buf_p, delimiters))) {
-    if (*array[i] != '\0') {
-      ++i;
+  for (const char *p = path; ; ++p) {
+    size_t len = strcspn(p, delimiters);
+    // skip empty tokens
+    if (len == 0) {
+      continue;
     }
-  }
 
-  // Forget the last path if we had to truncate; this occurs if the 2nd to
-  // last char isn't '\0' (i.e. wasn't originally a delimiter).
-  if (i > 0 && len >= buf_size && buf[buf_size - 2] != '\0') {
-    array[i - 1] = nullptr;
-  } else {
-    array[i] = nullptr;
+    paths->push_back(std::string(p, len));
+    p += len;
+
+    if (*p == '\0') {
+      break;
+    }
   }
 }
 
 static void parse_LD_LIBRARY_PATH(const char* path) {
-  parse_path(path, ":", g_ld_library_paths,
-             g_ld_library_paths_buffer, sizeof(g_ld_library_paths_buffer), LDPATH_MAX);
+  parse_path(path, ":", &g_ld_library_paths);
 }
 
 static void parse_LD_PRELOAD(const char* path) {
   // We have historically supported ':' as well as ' ' in LD_PRELOAD.
-  parse_path(path, " :", g_ld_preload_names,
-             g_ld_preloads_buffer, sizeof(g_ld_preloads_buffer), LDPRELOAD_MAX);
+  parse_path(path, " :", &g_ld_preload_names);
+}
+
+static bool realpath_fd(int fd, std::string* realpath) {
+  std::vector<char> buf(PATH_MAX), proc_self_fd(PATH_MAX);
+  snprintf(&proc_self_fd[0], proc_self_fd.size(), "/proc/self/fd/%d", fd);
+  if (readlink(&proc_self_fd[0], &buf[0], buf.size()) == -1) {
+    return false;
+  }
+
+  *realpath = std::string(&buf[0]);
+  return true;
 }
 
 #if defined(__arm__)
@@ -383,12 +335,12 @@
 //
 // This function is exposed via dlfcn.cpp and libdl.so.
 _Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc, int* pcount) {
-  unsigned addr = (unsigned)pc;
+  uintptr_t addr = reinterpret_cast<uintptr_t>(pc);
 
   for (soinfo* si = solist; si != 0; si = si->next) {
     if ((addr >= si->base) && (addr < (si->base + si->size))) {
         *pcount = si->ARM_exidx_count;
-        return (_Unwind_Ptr)si->ARM_exidx;
+        return reinterpret_cast<_Unwind_Ptr>(si->ARM_exidx);
     }
   }
   *pcount = 0;
@@ -415,73 +367,329 @@
   return rv;
 }
 
-static ElfW(Sym)* soinfo_elf_lookup(soinfo* si, unsigned hash, const char* name) {
-  ElfW(Sym)* symtab = si->symtab;
-
-  TRACE_TYPE(LOOKUP, "SEARCH %s in %s@%p %x %zd",
-             name, si->name, reinterpret_cast<void*>(si->base), hash, hash % si->nbucket);
-
-  for (unsigned n = si->bucket[hash % si->nbucket]; n != 0; n = si->chain[n]) {
-    ElfW(Sym)* s = symtab + n;
-    if (strcmp(si->get_string(s->st_name), name)) continue;
-
-    // only concern ourselves with global and weak symbol definitions
-    switch (ELF_ST_BIND(s->st_info)) {
-      case STB_GLOBAL:
-      case STB_WEAK:
-        if (s->st_shndx == SHN_UNDEF) {
-          continue;
-        }
-
-        TRACE_TYPE(LOOKUP, "FOUND %s in %s (%p) %zd",
-                 name, si->name, reinterpret_cast<void*>(s->st_value),
-                 static_cast<size_t>(s->st_size));
-        return s;
-      case STB_LOCAL:
-        continue;
-      default:
-        __libc_fatal("ERROR: Unexpected ST_BIND value: %d for '%s' in '%s'",
-            ELF_ST_BIND(s->st_info), name, si->name);
-    }
+const ElfW(Versym)* soinfo::get_versym(size_t n) const {
+  if (has_min_version(2) && versym_ != nullptr) {
+    return versym_ + n;
   }
 
-  TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p %x %zd",
-             name, si->name, reinterpret_cast<void*>(si->base), hash, hash % si->nbucket);
-
-
   return nullptr;
 }
 
-soinfo::soinfo(const char* name, const struct stat* file_stat, off64_t file_offset) {
+ElfW(Addr) soinfo::get_verneed_ptr() const {
+  if (has_min_version(2)) {
+    return verneed_ptr_;
+  }
+
+  return 0;
+}
+
+size_t soinfo::get_verneed_cnt() const {
+  if (has_min_version(2)) {
+    return verneed_cnt_;
+  }
+
+  return 0;
+}
+
+ElfW(Addr) soinfo::get_verdef_ptr() const {
+  if (has_min_version(2)) {
+    return verdef_ptr_;
+  }
+
+  return 0;
+}
+
+size_t soinfo::get_verdef_cnt() const {
+  if (has_min_version(2)) {
+    return verdef_cnt_;
+  }
+
+  return 0;
+}
+
+template<typename F>
+static bool for_each_verdef(const soinfo* si, F functor) {
+  if (!si->has_min_version(2)) {
+    return true;
+  }
+
+  uintptr_t verdef_ptr = si->get_verdef_ptr();
+  if (verdef_ptr == 0) {
+    return true;
+  }
+
+  size_t offset = 0;
+
+  size_t verdef_cnt = si->get_verdef_cnt();
+  for (size_t i = 0; i<verdef_cnt; ++i) {
+    const ElfW(Verdef)* verdef = reinterpret_cast<ElfW(Verdef)*>(verdef_ptr + offset);
+    size_t verdaux_offset = offset + verdef->vd_aux;
+    offset += verdef->vd_next;
+
+    if (verdef->vd_version != 1) {
+      DL_ERR("unsupported verdef[%zd] vd_version: %d (expected 1) library: %s",
+          i, verdef->vd_version, si->get_soname());
+      return false;
+    }
+
+    if ((verdef->vd_flags & VER_FLG_BASE) != 0) {
+      // "this is the version of the file itself.  It must not be used for
+      //  matching a symbol. It can be used to match references."
+      //
+      // http://www.akkadia.org/drepper/symbol-versioning
+      continue;
+    }
+
+    if (verdef->vd_cnt == 0) {
+      DL_ERR("invalid verdef[%zd] vd_cnt == 0 (version without a name)", i);
+      return false;
+    }
+
+    const ElfW(Verdaux)* verdaux = reinterpret_cast<ElfW(Verdaux)*>(verdef_ptr + verdaux_offset);
+
+    if (functor(i, verdef, verdaux) == true) {
+      break;
+    }
+  }
+
+  return true;
+}
+
+bool soinfo::find_verdef_version_index(const version_info* vi, ElfW(Versym)* versym) const {
+  if (vi == nullptr) {
+    *versym = kVersymNotNeeded;
+    return true;
+  }
+
+  *versym = kVersymGlobal;
+
+  return for_each_verdef(this,
+    [&](size_t, const ElfW(Verdef)* verdef, const ElfW(Verdaux)* verdaux) {
+      if (verdef->vd_hash == vi->elf_hash &&
+          strcmp(vi->name, get_string(verdaux->vda_name)) == 0) {
+        *versym = verdef->vd_ndx;
+        return true;
+      }
+
+      return false;
+    }
+  );
+}
+
+bool soinfo::find_symbol_by_name(SymbolName& symbol_name,
+                                 const version_info* vi,
+                                 const ElfW(Sym)** symbol) const {
+  uint32_t symbol_index;
+  bool success =
+      is_gnu_hash() ?
+      gnu_lookup(symbol_name, vi, &symbol_index) :
+      elf_lookup(symbol_name, vi, &symbol_index);
+
+  if (success) {
+    *symbol = symbol_index == 0 ? nullptr : symtab_ + symbol_index;
+  }
+
+  return success;
+}
+
+static bool is_symbol_global_and_defined(const soinfo* si, const ElfW(Sym)* s) {
+  if (ELF_ST_BIND(s->st_info) == STB_GLOBAL ||
+      ELF_ST_BIND(s->st_info) == STB_WEAK) {
+    return s->st_shndx != SHN_UNDEF;
+  } else if (ELF_ST_BIND(s->st_info) != STB_LOCAL) {
+    DL_WARN("unexpected ST_BIND value: %d for '%s' in '%s'",
+        ELF_ST_BIND(s->st_info), si->get_string(s->st_name), si->get_soname());
+  }
+
+  return false;
+}
+
+static const ElfW(Versym) kVersymHiddenBit = 0x8000;
+
+static inline bool is_versym_hidden(const ElfW(Versym)* versym) {
+  // the symbol is hidden if bit 15 of versym is set.
+  return versym != nullptr && (*versym & kVersymHiddenBit) != 0;
+}
+
+static inline bool check_symbol_version(const ElfW(Versym) verneed,
+                                        const ElfW(Versym)* verdef) {
+  return verneed == kVersymNotNeeded ||
+      verdef == nullptr ||
+      verneed == (*verdef & ~kVersymHiddenBit);
+}
+
+bool soinfo::gnu_lookup(SymbolName& symbol_name,
+                        const version_info* vi,
+                        uint32_t* symbol_index) const {
+  uint32_t hash = symbol_name.gnu_hash();
+  uint32_t h2 = hash >> gnu_shift2_;
+
+  uint32_t bloom_mask_bits = sizeof(ElfW(Addr))*8;
+  uint32_t word_num = (hash / bloom_mask_bits) & gnu_maskwords_;
+  ElfW(Addr) bloom_word = gnu_bloom_filter_[word_num];
+
+  *symbol_index = 0;
+
+  TRACE_TYPE(LOOKUP, "SEARCH %s in %s@%p (gnu)",
+      symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
+
+  // test against bloom filter
+  if ((1 & (bloom_word >> (hash % bloom_mask_bits)) & (bloom_word >> (h2 % bloom_mask_bits))) == 0) {
+    TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p",
+        symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
+
+    return true;
+  }
+
+  // bloom test says "probably yes"...
+  uint32_t n = gnu_bucket_[hash % gnu_nbucket_];
+
+  if (n == 0) {
+    TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p",
+        symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
+
+    return true;
+  }
+
+  // lookup versym for the version definition in this library
+  // note the difference between "version is not requested" (vi == nullptr)
+  // and "version not found". In the first case verneed is kVersymNotNeeded
+  // which implies that the default version can be accepted; the second case results in
+  // verneed = 1 (kVersymGlobal) and implies that we should ignore versioned symbols
+  // for this library and consider only *global* ones.
+  ElfW(Versym) verneed = 0;
+  if (!find_verdef_version_index(vi, &verneed)) {
+    return false;
+  }
+
+  do {
+    ElfW(Sym)* s = symtab_ + n;
+    const ElfW(Versym)* verdef = get_versym(n);
+    // skip hidden versions when verneed == kVersymNotNeeded (0)
+    if (verneed == kVersymNotNeeded && is_versym_hidden(verdef)) {
+        continue;
+    }
+    if (((gnu_chain_[n] ^ hash) >> 1) == 0 &&
+        check_symbol_version(verneed, verdef) &&
+        strcmp(get_string(s->st_name), symbol_name.get_name()) == 0 &&
+        is_symbol_global_and_defined(this, s)) {
+      TRACE_TYPE(LOOKUP, "FOUND %s in %s (%p) %zd",
+          symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(s->st_value),
+          static_cast<size_t>(s->st_size));
+      *symbol_index = n;
+      return true;
+    }
+  } while ((gnu_chain_[n++] & 1) == 0);
+
+  TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p",
+             symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
+
+  return true;
+}
+
+bool soinfo::elf_lookup(SymbolName& symbol_name,
+                        const version_info* vi,
+                        uint32_t* symbol_index) const {
+  uint32_t hash = symbol_name.elf_hash();
+
+  TRACE_TYPE(LOOKUP, "SEARCH %s in %s@%p h=%x(elf) %zd",
+             symbol_name.get_name(), get_soname(),
+             reinterpret_cast<void*>(base), hash, hash % nbucket_);
+
+  ElfW(Versym) verneed = 0;
+  if (!find_verdef_version_index(vi, &verneed)) {
+    return false;
+  }
+
+  for (uint32_t n = bucket_[hash % nbucket_]; n != 0; n = chain_[n]) {
+    ElfW(Sym)* s = symtab_ + n;
+    const ElfW(Versym)* verdef = get_versym(n);
+
+    // skip hidden versions when verneed == 0
+    if (verneed == kVersymNotNeeded && is_versym_hidden(verdef)) {
+        continue;
+    }
+
+    if (check_symbol_version(verneed, verdef) &&
+        strcmp(get_string(s->st_name), symbol_name.get_name()) == 0 &&
+        is_symbol_global_and_defined(this, s)) {
+      TRACE_TYPE(LOOKUP, "FOUND %s in %s (%p) %zd",
+                 symbol_name.get_name(), get_soname(),
+                 reinterpret_cast<void*>(s->st_value),
+                 static_cast<size_t>(s->st_size));
+      *symbol_index = n;
+      return true;
+    }
+  }
+
+  TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p %x %zd",
+             symbol_name.get_name(), get_soname(),
+             reinterpret_cast<void*>(base), hash, hash % nbucket_);
+
+  *symbol_index = 0;
+  return true;
+}
+
+soinfo::soinfo(const char* realpath, const struct stat* file_stat,
+               off64_t file_offset, int rtld_flags) {
   memset(this, 0, sizeof(*this));
 
-  strlcpy(this->name, name, sizeof(this->name));
-  flags = FLAG_NEW_SOINFO;
-  version = SOINFO_VERSION;
+  if (realpath != nullptr) {
+    realpath_ = realpath;
+  }
+
+  flags_ = FLAG_NEW_SOINFO;
+  version_ = SOINFO_VERSION;
 
   if (file_stat != nullptr) {
-    this->st_dev = file_stat->st_dev;
-    this->st_ino = file_stat->st_ino;
-    this->file_offset = file_offset;
+    this->st_dev_ = file_stat->st_dev;
+    this->st_ino_ = file_stat->st_ino;
+    this->file_offset_ = file_offset;
   }
+
+  this->rtld_flags_ = rtld_flags;
 }
 
-static unsigned elfhash(const char* _name) {
-  const unsigned char* name = reinterpret_cast<const unsigned char*>(_name);
-  unsigned h = 0, g;
 
-  while (*name) {
-    h = (h << 4) + *name++;
-    g = h & 0xf0000000;
-    h ^= g;
-    h ^= g >> 24;
+uint32_t SymbolName::elf_hash() {
+  if (!has_elf_hash_) {
+    const uint8_t* name = reinterpret_cast<const uint8_t*>(name_);
+    uint32_t h = 0, g;
+
+    while (*name) {
+      h = (h << 4) + *name++;
+      g = h & 0xf0000000;
+      h ^= g;
+      h ^= g >> 24;
+    }
+
+    elf_hash_ = h;
+    has_elf_hash_ = true;
   }
-  return h;
+
+  return elf_hash_;
 }
 
-static ElfW(Sym)* soinfo_do_lookup(soinfo* si, const char* name, soinfo** lsi) {
-  unsigned elf_hash = elfhash(name);
-  ElfW(Sym)* s = nullptr;
+uint32_t SymbolName::gnu_hash() {
+  if (!has_gnu_hash_) {
+    uint32_t h = 5381;
+    const uint8_t* name = reinterpret_cast<const uint8_t*>(name_);
+    while (*name != 0) {
+      h += (h << 5) + *name++; // h*33 + c = h + h * 32 + c = h + h << 5 + c
+    }
+
+    gnu_hash_ =  h;
+    has_gnu_hash_ = true;
+  }
+
+  return gnu_hash_;
+}
+
+bool soinfo_do_lookup(soinfo* si_from, const char* name, const version_info* vi,
+                      soinfo** si_found_in, const soinfo::soinfo_list_t& global_group,
+                      const soinfo::soinfo_list_t& local_group, const ElfW(Sym)** symbol) {
+  SymbolName symbol_name(name);
+  const ElfW(Sym)* s = nullptr;
 
   /* "This element's presence in a shared object library alters the dynamic linker's
    * symbol resolution algorithm for references within the library. Instead of starting
@@ -494,78 +702,110 @@
    * Note that this is unlikely since static linker avoids generating
    * relocations for -Bsymbolic linked dynamic executables.
    */
-  if (si->has_DT_SYMBOLIC) {
-    DEBUG("%s: looking up %s in local scope (DT_SYMBOLIC)", si->name, name);
-    s = soinfo_elf_lookup(si, elf_hash, name);
+  if (si_from->has_DT_SYMBOLIC) {
+    DEBUG("%s: looking up %s in local scope (DT_SYMBOLIC)", si_from->get_soname(), name);
+    if (!si_from->find_symbol_by_name(symbol_name, vi, &s)) {
+      return false;
+    }
+
     if (s != nullptr) {
-      *lsi = si;
+      *si_found_in = si_from;
     }
   }
 
-  if (s == nullptr && somain != nullptr) {
-    // 1. Look for it in the main executable unless we already did.
-    if (si != somain || !si->has_DT_SYMBOLIC) {
-      DEBUG("%s: looking up %s in executable %s",
-            si->name, name, somain->name);
-      s = soinfo_elf_lookup(somain, elf_hash, name);
-      if (s != nullptr) {
-        *lsi = somain;
-      }
-    }
-
-    // 2. Look for it in the ld_preloads
-    if (s == nullptr) {
-      for (int i = 0; g_ld_preloads[i] != NULL; i++) {
-        s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
-        if (s != nullptr) {
-          *lsi = g_ld_preloads[i];
-          break;
-        }
-      }
-    }
-  }
-
-  /* Look for symbols in the local scope (the object who is
-   * searching). This happens with C++ templates on x86 for some
-   * reason.
-   *
-   * Notes on weak symbols:
-   * The ELF specs are ambiguous about treatment of weak definitions in
-   * dynamic linking.  Some systems return the first definition found
-   * and some the first non-weak definition.   This is system dependent.
-   * Here we return the first definition found for simplicity.  */
-
-  if (s == nullptr && !si->has_DT_SYMBOLIC) {
-    DEBUG("%s: looking up %s in local scope", si->name, name);
-    s = soinfo_elf_lookup(si, elf_hash, name);
-    if (s != nullptr) {
-      *lsi = si;
-    }
-  }
-
+  // 1. Look for it in global_group
   if (s == nullptr) {
-    si->get_children().visit([&](soinfo* child) {
-      DEBUG("%s: looking up %s in %s", si->name, name, child->name);
-      s = soinfo_elf_lookup(child, elf_hash, name);
-      if (s != nullptr) {
-        *lsi = child;
+    bool error = false;
+    global_group.visit([&](soinfo* global_si) {
+      DEBUG("%s: looking up %s in %s (from global group)",
+          si_from->get_soname(), name, global_si->get_soname());
+      if (!global_si->find_symbol_by_name(symbol_name, vi, &s)) {
+        error = true;
         return false;
       }
+
+      if (s != nullptr) {
+        *si_found_in = global_si;
+        return false;
+      }
+
       return true;
     });
+
+    if (error) {
+      return false;
+    }
+  }
+
+  // 2. Look for it in the local group
+  if (s == nullptr) {
+    bool error = false;
+    local_group.visit([&](soinfo* local_si) {
+      if (local_si == si_from && si_from->has_DT_SYMBOLIC) {
+        // we already did this - skip
+        return true;
+      }
+
+      DEBUG("%s: looking up %s in %s (from local group)",
+          si_from->get_soname(), name, local_si->get_soname());
+      if (!local_si->find_symbol_by_name(symbol_name, vi, &s)) {
+        error = true;
+        return false;
+      }
+
+      if (s != nullptr) {
+        *si_found_in = local_si;
+        return false;
+      }
+
+      return true;
+    });
+
+    if (error) {
+      return false;
+    }
   }
 
   if (s != nullptr) {
     TRACE_TYPE(LOOKUP, "si %s sym %s s->st_value = %p, "
                "found in %s, base = %p, load bias = %p",
-               si->name, name, reinterpret_cast<void*>(s->st_value),
-               (*lsi)->name, reinterpret_cast<void*>((*lsi)->base),
-               reinterpret_cast<void*>((*lsi)->load_bias));
+               si_from->get_soname(), name, reinterpret_cast<void*>(s->st_value),
+               (*si_found_in)->get_soname(), reinterpret_cast<void*>((*si_found_in)->base),
+               reinterpret_cast<void*>((*si_found_in)->load_bias));
   }
 
-  return s;
+  *symbol = s;
+  return true;
 }
 
+class ProtectedDataGuard {
+ public:
+  ProtectedDataGuard() {
+    if (ref_count_++ == 0) {
+      protect_data(PROT_READ | PROT_WRITE);
+    }
+  }
+
+  ~ProtectedDataGuard() {
+    if (ref_count_ == 0) { // overflow
+      __libc_fatal("Too many nested calls to dlopen()");
+    }
+
+    if (--ref_count_ == 0) {
+      protect_data(PROT_READ);
+    }
+  }
+ private:
+  void protect_data(int protection) {
+    g_soinfo_allocator.protect_all(protection);
+    g_soinfo_links_allocator.protect_all(protection);
+  }
+
+  static size_t ref_count_;
+};
+
+size_t ProtectedDataGuard::ref_count_ = 0;
+
 // Each size has it's own allocator.
 template<size_t size>
 class SizeBasedAllocator {
@@ -641,33 +881,64 @@
 typedef linked_list_t<LoadTask> LoadTaskList;
 
 
-// This is used by dlsym(3).  It performs symbol lookup only within the
-// specified soinfo object and its dependencies in breadth first order.
-ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name) {
+// This function walks down the tree of soinfo dependencies
+// in breadth-first order and
+//   * calls action(soinfo* si) for each node, and
+//   * terminates walk if action returns false.
+//
+// walk_dependencies_tree returns false if walk was terminated
+// by the action and true otherwise.
+template<typename F>
+static bool walk_dependencies_tree(soinfo* root_soinfos[], size_t root_soinfos_size, F action) {
   SoinfoLinkedList visit_list;
   SoinfoLinkedList visited;
 
-  visit_list.push_back(si);
-  soinfo* current_soinfo;
-  while ((current_soinfo = visit_list.pop_front()) != nullptr) {
-    if (visited.contains(current_soinfo)) {
+  for (size_t i = 0; i < root_soinfos_size; ++i) {
+    visit_list.push_back(root_soinfos[i]);
+  }
+
+  soinfo* si;
+  while ((si = visit_list.pop_front()) != nullptr) {
+    if (visited.contains(si)) {
       continue;
     }
 
-    ElfW(Sym)* result = soinfo_elf_lookup(current_soinfo, elfhash(name), name);
-
-    if (result != nullptr) {
-      *found = current_soinfo;
-      return result;
+    if (!action(si)) {
+      return false;
     }
-    visited.push_back(current_soinfo);
 
-    current_soinfo->get_children().for_each([&](soinfo* child) {
+    visited.push_back(si);
+
+    si->get_children().for_each([&](soinfo* child) {
       visit_list.push_back(child);
     });
   }
 
-  return nullptr;
+  return true;
+}
+
+
+// This is used by dlsym(3).  It performs symbol lookup only within the
+// specified soinfo object and its dependencies in breadth first order.
+const ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name) {
+  const ElfW(Sym)* result = nullptr;
+  SymbolName symbol_name(name);
+
+  walk_dependencies_tree(&si, 1, [&](soinfo* current_soinfo) {
+    if (!current_soinfo->find_symbol_by_name(symbol_name, nullptr, &result)) {
+      result = nullptr;
+      return false;
+    }
+
+    if (result != nullptr) {
+      *found = current_soinfo;
+      return false;
+    }
+
+    return true;
+  });
+
+  return result;
 }
 
 /* This is used by dlsym(3) to performs a global symbol lookup. If the
@@ -675,22 +946,65 @@
    beginning of the global solist. Otherwise the search starts at the
    specified soinfo (for RTLD_NEXT).
  */
-ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start) {
-  unsigned elf_hash = elfhash(name);
+const ElfW(Sym)* dlsym_linear_lookup(const char* name,
+                                     soinfo** found,
+                                     soinfo* caller,
+                                     void* handle) {
+  SymbolName symbol_name(name);
 
-  if (start == nullptr) {
-    start = solist;
+  soinfo* start = solist;
+
+  if (handle == RTLD_NEXT) {
+    if (caller == nullptr || caller->next == nullptr) {
+      return nullptr;
+    } else {
+      start = caller->next;
+    }
   }
 
-  ElfW(Sym)* s = nullptr;
-  for (soinfo* si = start; (s == nullptr) && (si != nullptr); si = si->next) {
-    s = soinfo_elf_lookup(si, elf_hash, name);
+  const ElfW(Sym)* s = nullptr;
+  for (soinfo* si = start; si != nullptr; si = si->next) {
+    if ((si->get_rtld_flags() & RTLD_GLOBAL) == 0) {
+      continue;
+    }
+
+    if (!si->find_symbol_by_name(symbol_name, nullptr, &s)) {
+      return nullptr;
+    }
+
     if (s != nullptr) {
       *found = si;
       break;
     }
   }
 
+  // If not found - look into local_group unless
+  // caller is part of the global group in which
+  // case we already did it.
+  if (s == nullptr && caller != nullptr &&
+      (caller->get_rtld_flags() & RTLD_GLOBAL) == 0) {
+    soinfo* local_group_root = caller->get_local_group_root();
+
+    if (handle == RTLD_DEFAULT) {
+      start = local_group_root;
+    }
+
+    for (soinfo* si = start; si != nullptr; si = si->next) {
+      if (si->get_local_group_root() != local_group_root) {
+        break;
+      }
+
+      if (!si->find_symbol_by_name(symbol_name, nullptr, &s)) {
+        return nullptr;
+      }
+
+      if (s != nullptr) {
+        *found = si;
+        break;
+      }
+    }
+  }
+
   if (s != nullptr) {
     TRACE_TYPE(LOOKUP, "%s s->st_value = %p, found->base = %p",
                name, reinterpret_cast<void*>(s->st_value), reinterpret_cast<void*>((*found)->base));
@@ -709,16 +1023,45 @@
   return nullptr;
 }
 
-ElfW(Sym)* dladdr_find_symbol(soinfo* si, const void* addr) {
-  ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - si->base;
+ElfW(Sym)* soinfo::find_symbol_by_address(const void* addr) {
+  return is_gnu_hash() ? gnu_addr_lookup(addr) : elf_addr_lookup(addr);
+}
+
+static bool symbol_matches_soaddr(const ElfW(Sym)* sym, ElfW(Addr) soaddr) {
+  return sym->st_shndx != SHN_UNDEF &&
+      soaddr >= sym->st_value &&
+      soaddr < sym->st_value + sym->st_size;
+}
+
+ElfW(Sym)* soinfo::gnu_addr_lookup(const void* addr) {
+  ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - load_bias;
+
+  for (size_t i = 0; i < gnu_nbucket_; ++i) {
+    uint32_t n = gnu_bucket_[i];
+
+    if (n == 0) {
+      continue;
+    }
+
+    do {
+      ElfW(Sym)* sym = symtab_ + n;
+      if (symbol_matches_soaddr(sym, soaddr)) {
+        return sym;
+      }
+    } while ((gnu_chain_[n++] & 1) == 0);
+  }
+
+  return nullptr;
+}
+
+ElfW(Sym)* soinfo::elf_addr_lookup(const void* addr) {
+  ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - load_bias;
 
   // Search the library's symbol table for any defined symbol which
   // contains this address.
-  for (size_t i = 0; i < si->nchain; ++i) {
-    ElfW(Sym)* sym = &si->symtab[i];
-    if (sym->st_shndx != SHN_UNDEF &&
-        soaddr >= sym->st_value &&
-        soaddr < sym->st_value + sym->st_size) {
+  for (size_t i = 0; i < nchain_; ++i) {
+    ElfW(Sym)* sym = symtab_ + i;
+    if (symbol_matches_soaddr(sym, soaddr)) {
       return sym;
     }
   }
@@ -726,41 +1069,141 @@
   return nullptr;
 }
 
-static int open_library_on_path(const char* name, const char* const paths[]) {
+static int open_library_in_zipfile(const char* const path,
+                                   off64_t* file_offset) {
+  TRACE("Trying zip file open from path '%s'", path);
+
+  // Treat an '!' character inside a path as the separator between the name
+  // of the zip file on disk and the subdirectory to search within it.
+  // For example, if path is "foo.zip!bar/bas/x.so", then we search for
+  // "bar/bas/x.so" within "foo.zip".
+  const char* separator = strchr(path, '!');
+  if (separator == nullptr) {
+    return -1;
+  }
+
   char buf[512];
-  for (size_t i = 0; paths[i] != nullptr; ++i) {
-    int n = __libc_format_buffer(buf, sizeof(buf), "%s/%s", paths[i], name);
-    if (n < 0 || n >= static_cast<int>(sizeof(buf))) {
-      PRINT("Warning: ignoring very long library path: %s/%s", paths[i], name);
+  if (strlcpy(buf, path, sizeof(buf)) >= sizeof(buf)) {
+    PRINT("Warning: ignoring very long library path: %s", path);
+    return -1;
+  }
+
+  buf[separator - path] = '\0';
+
+  const char* zip_path = buf;
+  const char* file_path = &buf[separator - path + 1];
+  int fd = TEMP_FAILURE_RETRY(open(zip_path, O_RDONLY | O_CLOEXEC));
+  if (fd == -1) {
+    return -1;
+  }
+
+  ZipArchiveHandle handle;
+  if (OpenArchiveFd(fd, "", &handle, false) != 0) {
+    // invalid zip-file (?)
+    close(fd);
+    return -1;
+  }
+
+  auto archive_guard = make_scope_guard([&]() {
+    CloseArchive(handle);
+  });
+
+  ZipEntry entry;
+
+  if (FindEntry(handle, ZipEntryName(file_path), &entry) != 0) {
+    // Entry was not found.
+    close(fd);
+    return -1;
+  }
+
+  // Check if it is properly stored
+  if (entry.method != kCompressStored || (entry.offset % PAGE_SIZE) != 0) {
+    close(fd);
+    return -1;
+  }
+
+  *file_offset = entry.offset;
+  return fd;
+}
+
+static bool format_path(char* buf, size_t buf_size, const char* path, const char* name) {
+  int n = __libc_format_buffer(buf, buf_size, "%s/%s", path, name);
+  if (n < 0 || n >= static_cast<int>(buf_size)) {
+    PRINT("Warning: ignoring very long library path: %s/%s", path, name);
+    return false;
+  }
+
+  return true;
+}
+
+static int open_library_on_default_path(const char* name, off64_t* file_offset) {
+  for (size_t i = 0; kDefaultLdPaths[i] != nullptr; ++i) {
+    char buf[512];
+    if (!format_path(buf, sizeof(buf), kDefaultLdPaths[i], name)) {
       continue;
     }
+
     int fd = TEMP_FAILURE_RETRY(open(buf, O_RDONLY | O_CLOEXEC));
     if (fd != -1) {
+      *file_offset = 0;
+      return fd;
+    }
+  }
+
+  return -1;
+}
+
+static int open_library_on_ld_library_path(const char* name, off64_t* file_offset) {
+  for (const auto& path_str : g_ld_library_paths) {
+    char buf[512];
+    const char* const path = path_str.c_str();
+    if (!format_path(buf, sizeof(buf), path, name)) {
+      continue;
+    }
+
+    int fd = -1;
+    if (strchr(buf, '!') != nullptr) {
+      fd = open_library_in_zipfile(buf, file_offset);
+    }
+
+    if (fd == -1) {
+      fd = TEMP_FAILURE_RETRY(open(buf, O_RDONLY | O_CLOEXEC));
+      if (fd != -1) {
+        *file_offset = 0;
+      }
+    }
+
+    if (fd != -1) {
       return fd;
     }
   }
+
   return -1;
 }
 
-static int open_library(const char* name) {
+static int open_library(const char* name, off64_t* file_offset) {
   TRACE("[ opening %s ]", name);
 
   // If the name contains a slash, we should attempt to open it directly and not search the paths.
   if (strchr(name, '/') != nullptr) {
+    if (strchr(name, '!') != nullptr) {
+      int fd = open_library_in_zipfile(name, file_offset);
+      if (fd != -1) {
+        return fd;
+      }
+    }
+
     int fd = TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_CLOEXEC));
     if (fd != -1) {
-      return fd;
+      *file_offset = 0;
     }
-    // ...but nvidia binary blobs (at least) rely on this behavior, so fall through for now.
-#if defined(__LP64__)
-    return -1;
-#endif
+    return fd;
   }
 
   // Otherwise we try LD_LIBRARY_PATH first, and fall back to the built-in well known paths.
-  int fd = open_library_on_path(name, g_ld_library_paths);
+  int fd = open_library_on_ld_library_path(name, file_offset);
   if (fd == -1) {
-    fd = open_library_on_path(name, kDefaultLdPaths);
+    fd = open_library_on_default_path(name, file_offset);
   }
   return fd;
 }
@@ -774,7 +1217,9 @@
   }
 }
 
-static soinfo* load_library(LoadTaskList& load_tasks, const char* name, int dlflags, const android_dlextinfo* extinfo) {
+static soinfo* load_library(LoadTaskList& load_tasks,
+                            const char* name, int rtld_flags,
+                            const android_dlextinfo* extinfo) {
   int fd = -1;
   off64_t file_offset = 0;
   ScopedFd file_guard(-1);
@@ -786,7 +1231,7 @@
     }
   } else {
     // Open the file.
-    fd = open_library(name);
+    fd = open_library(name, &file_offset);
     if (fd == -1) {
       DL_ERR("library \"%s\" not found", name);
       return nullptr;
@@ -799,38 +1244,56 @@
     DL_ERR("file offset for the library \"%s\" is not page-aligned: %" PRId64, name, file_offset);
     return nullptr;
   }
+  if (file_offset < 0) {
+    DL_ERR("file offset for the library \"%s\" is negative: %" PRId64, name, file_offset);
+    return nullptr;
+  }
 
   struct stat file_stat;
   if (TEMP_FAILURE_RETRY(fstat(fd, &file_stat)) != 0) {
     DL_ERR("unable to stat file for the library \"%s\": %s", name, strerror(errno));
     return nullptr;
   }
+  if (file_offset >= file_stat.st_size) {
+    DL_ERR("file offset for the library \"%s\" >= file size: %" PRId64 " >= %" PRId64,
+        name, file_offset, file_stat.st_size);
+    return nullptr;
+  }
 
   // Check for symlink and other situations where
-  // file can have different names.
-  for (soinfo* si = solist; si != nullptr; si = si->next) {
-    if (si->get_st_dev() != 0 &&
-        si->get_st_ino() != 0 &&
-        si->get_st_dev() == file_stat.st_dev &&
-        si->get_st_ino() == file_stat.st_ino &&
-        si->get_file_offset() == file_offset) {
-      TRACE("library \"%s\" is already loaded under different name/path \"%s\" - will return existing soinfo", name, si->name);
-      return si;
+  // file can have different names, unless ANDROID_DLEXT_FORCE_LOAD is set
+  if (extinfo == nullptr || (extinfo->flags & ANDROID_DLEXT_FORCE_LOAD) == 0) {
+    for (soinfo* si = solist; si != nullptr; si = si->next) {
+      if (si->get_st_dev() != 0 &&
+          si->get_st_ino() != 0 &&
+          si->get_st_dev() == file_stat.st_dev &&
+          si->get_st_ino() == file_stat.st_ino &&
+          si->get_file_offset() == file_offset) {
+        TRACE("library \"%s\" is already loaded under different name/path \"%s\" - "
+            "will return existing soinfo", name, si->get_realpath());
+        return si;
+      }
     }
   }
 
-  if ((dlflags & RTLD_NOLOAD) != 0) {
+  if ((rtld_flags & RTLD_NOLOAD) != 0) {
     DL_ERR("library \"%s\" wasn't loaded and RTLD_NOLOAD prevented it", name);
     return nullptr;
   }
 
+  std::string realpath = name;
+  if (!realpath_fd(fd, &realpath)) {
+    PRINT("cannot resolve realpath for the library \"%s\": %s", name, strerror(errno));
+    realpath = name;
+  }
+
   // Read the ELF header and load the segments.
-  ElfReader elf_reader(name, fd, file_offset);
+  ElfReader elf_reader(realpath.c_str(), fd, file_offset);
   if (!elf_reader.Load(extinfo)) {
     return nullptr;
   }
 
-  soinfo* si = soinfo_alloc(SEARCH_NAME(name), &file_stat, file_offset);
+  soinfo* si = soinfo_alloc(realpath.c_str(), &file_stat, file_offset, rtld_flags);
   if (si == nullptr) {
     return nullptr;
   }
@@ -840,7 +1303,7 @@
   si->phnum = elf_reader.phdr_count();
   si->phdr = elf_reader.loaded_phdr();
 
-  if (!si->PrelinkImage()) {
+  if (!si->prelink_image()) {
     soinfo_free(si);
     return nullptr;
   }
@@ -852,25 +1315,30 @@
   return si;
 }
 
-static soinfo *find_loaded_library_by_name(const char* name) {
-  const char* search_name = SEARCH_NAME(name);
+static soinfo *find_loaded_library_by_soname(const char* name) {
+  // Ignore filename with path.
+  if (strchr(name, '/') != nullptr) {
+    return nullptr;
+  }
+
   for (soinfo* si = solist; si != nullptr; si = si->next) {
-    if (!strcmp(search_name, si->name)) {
+    const char* soname = si->get_soname();
+    if (soname != nullptr && (strcmp(name, soname) == 0)) {
       return si;
     }
   }
   return nullptr;
 }
 
-static soinfo* find_library_internal(LoadTaskList& load_tasks, const char* name, int dlflags, const android_dlextinfo* extinfo) {
-
-  soinfo* si = find_loaded_library_by_name(name);
+static soinfo* find_library_internal(LoadTaskList& load_tasks, const char* name,
+                                     int rtld_flags, const android_dlextinfo* extinfo) {
+  soinfo* si = find_loaded_library_by_soname(name);
 
   // Library might still be loaded, the accurate detection
   // of this fact is done by load_library.
   if (si == nullptr) {
-    TRACE("[ '%s' has not been found by name.  Trying harder...]", name);
-    si = load_library(load_tasks, name, dlflags, extinfo);
+    TRACE("[ '%s' has not been found by soname.  Trying harder...]", name);
+    si = load_library(load_tasks, name, rtld_flags, extinfo);
   }
 
   return si;
@@ -878,34 +1346,52 @@
 
 static void soinfo_unload(soinfo* si);
 
-static bool is_recursive(soinfo* si, soinfo* parent) {
-  if (parent == nullptr) {
-    return false;
+// TODO: this is slightly unusual way to construct
+// the global group for relocation. Not every RTLD_GLOBAL
+// library is included in this group for backwards-compatibility
+// reasons.
+//
+// This group consists of the main executable, LD_PRELOADs
+// and libraries with the DF_1_GLOBAL flag set.
+static soinfo::soinfo_list_t make_global_group() {
+  soinfo::soinfo_list_t global_group;
+  for (soinfo* si = somain; si != nullptr; si = si->next) {
+    if ((si->get_dt_flags_1() & DF_1_GLOBAL) != 0) {
+      global_group.push_back(si);
+    }
   }
 
-  if (si == parent) {
-    DL_ERR("recursive link to \"%s\"", si->name);
-    return true;
-  }
-
-  return !parent->get_parents().visit([&](soinfo* grandparent) {
-    return !is_recursive(si, grandparent);
-  });
+  return global_group;
 }
 
-static bool find_libraries(const char* const library_names[], size_t library_names_size, soinfo* soinfos[],
-    soinfo* ld_preloads[], size_t ld_preloads_size, int dlflags, const android_dlextinfo* extinfo) {
+static bool find_libraries(soinfo* start_with, const char* const library_names[],
+      size_t library_names_count, soinfo* soinfos[], std::vector<soinfo*>* ld_preloads,
+      size_t ld_preloads_count, int rtld_flags, const android_dlextinfo* extinfo) {
   // Step 0: prepare.
   LoadTaskList load_tasks;
-  for (size_t i = 0; i < library_names_size; ++i) {
+  for (size_t i = 0; i < library_names_count; ++i) {
     const char* name = library_names[i];
-    load_tasks.push_back(LoadTask::create(name, nullptr));
+    load_tasks.push_back(LoadTask::create(name, start_with));
   }
 
-  // Libraries added to this list in reverse order so that we can
-  // start linking from bottom-up - see step 2.
-  SoinfoLinkedList found_libs;
-  size_t soinfos_size = 0;
+  // Construct global_group.
+  soinfo::soinfo_list_t global_group = make_global_group();
+
+  // If soinfos array is null allocate one on stack.
+  // The array is needed in case of failure; for example
+  // when library_names[] = {libone.so, libtwo.so} and libone.so
+  // is loaded correctly but libtwo.so failed for some reason.
+  // In this case libone.so should be unloaded on return.
+  // See also implementation of failure_guard below.
+
+  if (soinfos == nullptr) {
+    size_t soinfos_size = sizeof(soinfo*)*library_names_count;
+    soinfos = reinterpret_cast<soinfo**>(alloca(soinfos_size));
+    memset(soinfos, 0, soinfos_size);
+  }
+
+  // list of libraries to link - see step 2.
+  size_t soinfos_count = 0;
 
   auto failure_guard = make_scope_guard([&]() {
     // Housekeeping
@@ -913,104 +1399,182 @@
       LoadTask::deleter(t);
     });
 
-    for (size_t i = 0; i<soinfos_size; ++i) {
+    for (size_t i = 0; i<soinfos_count; ++i) {
       soinfo_unload(soinfos[i]);
     }
   });
 
   // Step 1: load and pre-link all DT_NEEDED libraries in breadth first order.
-  for (LoadTask::unique_ptr task(load_tasks.pop_front()); task.get() != nullptr; task.reset(load_tasks.pop_front())) {
-    soinfo* si = find_library_internal(load_tasks, task->get_name(), dlflags, extinfo);
+  for (LoadTask::unique_ptr task(load_tasks.pop_front());
+      task.get() != nullptr; task.reset(load_tasks.pop_front())) {
+    soinfo* si = find_library_internal(load_tasks, task->get_name(), rtld_flags, extinfo);
     if (si == nullptr) {
       return false;
     }
 
     soinfo* needed_by = task->get_needed_by();
 
-    if (is_recursive(si, needed_by)) {
-      return false;
-    }
-
-    si->ref_count++;
     if (needed_by != nullptr) {
       needed_by->add_child(si);
     }
-    found_libs.push_front(si);
 
-    // When ld_preloads is not null first
-    // ld_preloads_size libs are in fact ld_preloads.
-    if (ld_preloads != nullptr && soinfos_size < ld_preloads_size) {
-      ld_preloads[soinfos_size] = si;
+    if (si->is_linked()) {
+      si->increment_ref_count();
     }
 
-    if (soinfos_size<library_names_size) {
-      soinfos[soinfos_size++] = si;
+    // When ld_preloads is not null, the first
+    // ld_preloads_count libs are in fact ld_preloads.
+    if (ld_preloads != nullptr && soinfos_count < ld_preloads_count) {
+      // Add LD_PRELOADed libraries to the global group for future runs.
+      // There is no need to explicitly add them to the global group
+      // for this run because they are going to appear in the local
+      // group in the correct order.
+      si->set_dt_flags_1(si->get_dt_flags_1() | DF_1_GLOBAL);
+      ld_preloads->push_back(si);
+    }
+
+    if (soinfos_count < library_names_count) {
+      soinfos[soinfos_count++] = si;
     }
   }
 
   // Step 2: link libraries.
-  soinfo* si;
-  while ((si = found_libs.pop_front()) != nullptr) {
-    if ((si->flags & FLAG_LINKED) == 0) {
-      if (!si->LinkImage(extinfo)) {
+  soinfo::soinfo_list_t local_group;
+  walk_dependencies_tree(
+      start_with == nullptr ? soinfos : &start_with,
+      start_with == nullptr ? soinfos_count : 1,
+      [&] (soinfo* si) {
+    local_group.push_back(si);
+    return true;
+  });
+
+  // We need to increment ref_count in case
+  // the root of the local group was not linked.
+  bool was_local_group_root_linked = local_group.front()->is_linked();
+
+  bool linked = local_group.visit([&](soinfo* si) {
+    if (!si->is_linked()) {
+      if (!si->link_image(global_group, local_group, extinfo)) {
         return false;
       }
-      si->flags |= FLAG_LINKED;
+      si->set_linked();
     }
+
+    return true;
+  });
+
+  if (linked) {
+    failure_guard.disable();
   }
 
-  // All is well - found_libs and load_tasks are empty at this point
-  // and all libs are successfully linked.
-  failure_guard.disable();
-  return true;
+  if (!was_local_group_root_linked) {
+    local_group.front()->increment_ref_count();
+  }
+
+  return linked;
 }
 
-static soinfo* find_library(const char* name, int dlflags, const android_dlextinfo* extinfo) {
-  if (name == nullptr) {
-    somain->ref_count++;
-    return somain;
-  }
-
+static soinfo* find_library(const char* name, int rtld_flags, const android_dlextinfo* extinfo) {
   soinfo* si;
 
-  if (!find_libraries(&name, 1, &si, nullptr, 0, dlflags, extinfo)) {
+  if (name == nullptr) {
+    si = somain;
+  } else if (!find_libraries(nullptr, &name, 1, &si, nullptr, 0, rtld_flags, extinfo)) {
     return nullptr;
   }
 
   return si;
 }
 
-static void soinfo_unload(soinfo* si) {
-  if (si->ref_count == 1) {
-    TRACE("unloading '%s'", si->name);
-    si->CallDestructors();
+static void soinfo_unload(soinfo* root) {
+  // Note that the library can be loaded but not linked;
+  // in which case there is no root but we still need
+  // to walk the tree and unload soinfos involved.
+  //
+  // This happens on unsuccessful dlopen, when one of
+  // the DT_NEEDED libraries could not be linked/found.
+  if (root->is_linked()) {
+    root = root->get_local_group_root();
+  }
 
-    if (si->has_min_version(0)) {
-      soinfo* child = nullptr;
-      while ((child = si->get_children().pop_front()) != nullptr) {
-        TRACE("%s needs to unload %s", si->name, child->name);
-        soinfo_unload(child);
+  if (!root->can_unload()) {
+    TRACE("not unloading '%s' - the binary is flagged with NODELETE", root->get_soname());
+    return;
+  }
+
+  size_t ref_count = root->is_linked() ? root->decrement_ref_count() : 0;
+
+  if (ref_count == 0) {
+    soinfo::soinfo_list_t local_unload_list;
+    soinfo::soinfo_list_t external_unload_list;
+    soinfo::soinfo_list_t depth_first_list;
+    depth_first_list.push_back(root);
+    soinfo* si = nullptr;
+
+    while ((si = depth_first_list.pop_front()) != nullptr) {
+      if (local_unload_list.contains(si)) {
+        continue;
       }
-    } else {
-      for_each_dt_needed(si, [&] (const char* library_name) {
-        TRACE("deprecated (old format of soinfo): %s needs to unload %s", si->name, library_name);
-        soinfo* needed = find_library(library_name, RTLD_NOLOAD, nullptr);
-        if (needed != nullptr) {
-          soinfo_unload(needed);
-        } else {
-          // Not found: for example if symlink was deleted between dlopen and dlclose
-          // Since we cannot really handle errors at this point - print and continue.
-          PRINT("warning: couldn't find %s needed by %s on unload.", library_name, si->name);
+
+      local_unload_list.push_back(si);
+
+      if (si->has_min_version(0)) {
+        soinfo* child = nullptr;
+        while ((child = si->get_children().pop_front()) != nullptr) {
+          TRACE("%s@%p needs to unload %s@%p", si->get_soname(), si, child->get_soname(), child);
+          if (local_unload_list.contains(child)) {
+            continue;
+          } else if (child->is_linked() && child->get_local_group_root() != root) {
+            external_unload_list.push_back(child);
+          } else {
+            depth_first_list.push_front(child);
+          }
         }
-      });
+      } else {
+#if !defined(__arm__)
+        __libc_fatal("soinfo for \"%s\"@%p has no version", si->get_soname(), si);
+#else
+        PRINT("warning: soinfo for \"%s\"@%p has no version", si->get_soname(), si);
+        for_each_dt_needed(si, [&] (const char* library_name) {
+          TRACE("deprecated (old format of soinfo): %s needs to unload %s",
+              si->get_soname(), library_name);
+
+          soinfo* needed = find_library(library_name, RTLD_NOLOAD, nullptr);
+          if (needed != nullptr) {
+            // Not found: for example if symlink was deleted between dlopen and dlclose
+            // Since we cannot really handle errors at this point - print and continue.
+            PRINT("warning: couldn't find %s needed by %s on unload.",
+                library_name, si->get_soname());
+            return;
+          } else if (local_unload_list.contains(needed)) {
+            // already visited
+            return;
+          } else if (needed->is_linked() && needed->get_local_group_root() != root) {
+            // external group
+            external_unload_list.push_back(needed);
+          } else {
+            // local group
+            depth_first_list.push_front(needed);
+          }
+        });
+#endif
+      }
     }
 
-    notify_gdb_of_unload(si);
-    si->ref_count = 0;
-    soinfo_free(si);
+    local_unload_list.for_each([](soinfo* si) {
+      si->call_destructors();
+    });
+
+    while ((si = local_unload_list.pop_front()) != nullptr) {
+      notify_gdb_of_unload(si);
+      soinfo_free(si);
+    }
+
+    while ((si = external_unload_list.pop_front()) != nullptr) {
+      soinfo_unload(si);
+    }
   } else {
-    si->ref_count--;
-    TRACE("not unloading '%s', decrementing ref_count to %zd", si->name, si->ref_count);
+    TRACE("not unloading '%s' group, decrementing ref_count to %zd", root->get_soname(), ref_count);
   }
 }
 
@@ -1024,8 +1588,8 @@
   // snprintf again.
   size_t required_len = strlen(kDefaultLdPaths[0]) + strlen(kDefaultLdPaths[1]) + 2;
   if (buffer_size < required_len) {
-    __libc_fatal("android_get_LD_LIBRARY_PATH failed, buffer too small: buffer len %zu, required len %zu",
-                 buffer_size, required_len);
+    __libc_fatal("android_get_LD_LIBRARY_PATH failed, buffer too small: "
+                 "buffer len %zu, required len %zu", buffer_size, required_len);
   }
   char* end = stpcpy(buffer, kDefaultLdPaths[0]);
   *end = ':';
@@ -1033,13 +1597,11 @@
 }
 
 void do_android_update_LD_LIBRARY_PATH(const char* ld_library_path) {
-  if (!get_AT_SECURE()) {
-    parse_LD_LIBRARY_PATH(ld_library_path);
-  }
+  parse_LD_LIBRARY_PATH(ld_library_path);
 }
 
 soinfo* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo) {
-  if ((flags & ~(RTLD_NOW|RTLD_LAZY|RTLD_LOCAL|RTLD_GLOBAL|RTLD_NOLOAD)) != 0) {
+  if ((flags & ~(RTLD_NOW|RTLD_LAZY|RTLD_LOCAL|RTLD_GLOBAL|RTLD_NODELETE|RTLD_NOLOAD)) != 0) {
     DL_ERR("invalid flags to dlopen: %x", flags);
     return nullptr;
   }
@@ -1050,60 +1612,201 @@
     }
     if ((extinfo->flags & ANDROID_DLEXT_USE_LIBRARY_FD) == 0 &&
         (extinfo->flags & ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET) != 0) {
-      DL_ERR("invalid extended flag combination (ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET without ANDROID_DLEXT_USE_LIBRARY_FD): 0x%" PRIx64, extinfo->flags);
+      DL_ERR("invalid extended flag combination (ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET without "
+          "ANDROID_DLEXT_USE_LIBRARY_FD): 0x%" PRIx64, extinfo->flags);
       return nullptr;
     }
   }
-  protect_data(PROT_READ | PROT_WRITE);
+
+  ProtectedDataGuard guard;
   soinfo* si = find_library(name, flags, extinfo);
   if (si != nullptr) {
-    si->CallConstructors();
+    si->call_constructors();
   }
-  protect_data(PROT_READ);
   return si;
 }
 
 void do_dlclose(soinfo* si) {
-  protect_data(PROT_READ | PROT_WRITE);
+  ProtectedDataGuard guard;
   soinfo_unload(si);
-  protect_data(PROT_READ);
 }
 
 static ElfW(Addr) call_ifunc_resolver(ElfW(Addr) resolver_addr) {
   typedef ElfW(Addr) (*ifunc_resolver_t)(void);
   ifunc_resolver_t ifunc_resolver = reinterpret_cast<ifunc_resolver_t>(resolver_addr);
   ElfW(Addr) ifunc_addr = ifunc_resolver();
-  TRACE_TYPE(RELO, "Called ifunc_resolver@%p. The result is %p", ifunc_resolver, reinterpret_cast<void*>(ifunc_addr));
+  TRACE_TYPE(RELO, "Called ifunc_resolver@%p. The result is %p",
+      ifunc_resolver, reinterpret_cast<void*>(ifunc_addr));
 
   return ifunc_addr;
 }
 
+const version_info* VersionTracker::get_version_info(ElfW(Versym) source_symver) const {
+  if (source_symver < 2 ||
+      source_symver >= version_infos.size() ||
+      version_infos[source_symver].name == nullptr) {
+    return nullptr;
+  }
+
+  return &version_infos[source_symver];
+}
+
+void VersionTracker::add_version_info(size_t source_index,
+                                      ElfW(Word) elf_hash,
+                                      const char* ver_name,
+                                      const soinfo* target_si) {
+  if (source_index >= version_infos.size()) {
+    version_infos.resize(source_index+1);
+  }
+
+  version_infos[source_index].elf_hash = elf_hash;
+  version_infos[source_index].name = ver_name;
+  version_infos[source_index].target_si = target_si;
+}
+
+bool VersionTracker::init_verneed(const soinfo* si_from) {
+  uintptr_t verneed_ptr = si_from->get_verneed_ptr();
+
+  if (verneed_ptr == 0) {
+    return true;
+  }
+
+  size_t verneed_cnt = si_from->get_verneed_cnt();
+
+  for (size_t i = 0, offset = 0; i<verneed_cnt; ++i) {
+    const ElfW(Verneed)* verneed = reinterpret_cast<ElfW(Verneed)*>(verneed_ptr + offset);
+    size_t vernaux_offset = offset + verneed->vn_aux;
+    offset += verneed->vn_next;
+
+    if (verneed->vn_version != 1) {
+      DL_ERR("unsupported verneed[%zd] vn_version: %d (expected 1)", i, verneed->vn_version);
+      return false;
+    }
+
+    const char* target_soname = si_from->get_string(verneed->vn_file);
+    // find it in dependencies
+    soinfo* target_si = si_from->get_children().find_if([&](const soinfo* si) {
+      return strcmp(si->get_soname(), target_soname) == 0;
+    });
+
+    if (target_si == nullptr) {
+      DL_ERR("cannot find \"%s\" from verneed[%zd] in DT_NEEDED list for \"%s\"",
+          target_soname, i, si_from->get_soname());
+      return false;
+    }
+
+    for (size_t j = 0; j<verneed->vn_cnt; ++j) {
+      const ElfW(Vernaux)* vernaux = reinterpret_cast<ElfW(Vernaux)*>(verneed_ptr + vernaux_offset);
+      vernaux_offset += vernaux->vna_next;
+
+      const ElfW(Word) elf_hash = vernaux->vna_hash;
+      const char* ver_name = si_from->get_string(vernaux->vna_name);
+      ElfW(Half) source_index = vernaux->vna_other;
+
+      add_version_info(source_index, elf_hash, ver_name, target_si);
+    }
+  }
+
+  return true;
+}
+
+bool VersionTracker::init_verdef(const soinfo* si_from) {
+  return for_each_verdef(si_from,
+    [&](size_t, const ElfW(Verdef)* verdef, const ElfW(Verdaux)* verdaux) {
+      add_version_info(verdef->vd_ndx, verdef->vd_hash,
+          si_from->get_string(verdaux->vda_name), si_from);
+      return false;
+    }
+  );
+}
+
+bool VersionTracker::init(const soinfo* si_from) {
+  if (!si_from->has_min_version(2)) {
+    return true;
+  }
+
+  return init_verneed(si_from) && init_verdef(si_from);
+}
+
+bool soinfo::lookup_version_info(const VersionTracker& version_tracker, ElfW(Word) sym,
+                                 const char* sym_name, const version_info** vi) {
+  const ElfW(Versym)* sym_ver_ptr = get_versym(sym);
+  ElfW(Versym) sym_ver = sym_ver_ptr == nullptr ? 0 : *sym_ver_ptr;
+
+  if (sym_ver != VER_NDX_LOCAL && sym_ver != VER_NDX_GLOBAL) {
+    *vi = version_tracker.get_version_info(sym_ver);
+
+    if (*vi == nullptr) {
+      DL_ERR("cannot find verneed/verdef for version index=%d "
+          "referenced by symbol \"%s\" at \"%s\"", sym_ver, sym_name, get_soname());
+      return false;
+    }
+  } else {
+    // there is no version info
+    *vi = nullptr;
+  }
+
+  return true;
+}
+
+#if !defined(__mips__)
 #if defined(USE_RELA)
-int soinfo::Relocate(ElfW(Rela)* rela, unsigned count) {
-  for (size_t idx = 0; idx < count; ++idx, ++rela) {
-    unsigned type = ELFW(R_TYPE)(rela->r_info);
-    unsigned sym = ELFW(R_SYM)(rela->r_info);
-    ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rela->r_offset + load_bias);
+static ElfW(Addr) get_addend(ElfW(Rela)* rela, ElfW(Addr) reloc_addr __unused) {
+  return rela->r_addend;
+}
+#else
+static ElfW(Addr) get_addend(ElfW(Rel)* rel, ElfW(Addr) reloc_addr) {
+  if (ELFW(R_TYPE)(rel->r_info) == R_GENERIC_RELATIVE ||
+      ELFW(R_TYPE)(rel->r_info) == R_GENERIC_IRELATIVE) {
+    return *reinterpret_cast<ElfW(Addr)*>(reloc_addr);
+  }
+  return 0;
+}
+#endif
+
+template<typename ElfRelIteratorT>
+bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& rel_iterator,
+                      const soinfo_list_t& global_group, const soinfo_list_t& local_group) {
+  for (size_t idx = 0; rel_iterator.has_next(); ++idx) {
+    const auto rel = rel_iterator.next();
+    if (rel == nullptr) {
+      return false;
+    }
+
+    ElfW(Word) type = ELFW(R_TYPE)(rel->r_info);
+    ElfW(Word) sym = ELFW(R_SYM)(rel->r_info);
+
+    ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rel->r_offset + load_bias);
     ElfW(Addr) sym_addr = 0;
     const char* sym_name = nullptr;
+    ElfW(Addr) addend = get_addend(rel, reloc);
 
-    DEBUG("Processing '%s' relocation at index %zd", name, idx);
-    if (type == 0) { // R_*_NONE
+    DEBUG("Processing '%s' relocation at index %zd", get_soname(), idx);
+    if (type == R_GENERIC_NONE) {
       continue;
     }
 
-    ElfW(Sym)* s = nullptr;
+    const ElfW(Sym)* s = nullptr;
     soinfo* lsi = nullptr;
 
     if (sym != 0) {
-      sym_name = get_string(symtab[sym].st_name);
-      s = soinfo_do_lookup(this, sym_name, &lsi);
+      sym_name = get_string(symtab_[sym].st_name);
+      const version_info* vi = nullptr;
+
+      if (!lookup_version_info(version_tracker, sym, sym_name, &vi)) {
+        return false;
+      }
+
+      if (!soinfo_do_lookup(this, sym_name, vi, &lsi, global_group, local_group, &s)) {
+        return false;
+      }
+
       if (s == nullptr) {
         // We only allow an undefined symbol if this is a weak reference...
-        s = &symtab[sym];
+        s = &symtab_[sym];
         if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
-          DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, name);
-          return -1;
+          DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, get_soname());
+          return false;
         }
 
         /* IHI0044C AAELF 4.5.1.1:
@@ -1119,36 +1822,40 @@
          */
 
         switch (type) {
+          case R_GENERIC_JUMP_SLOT:
+          case R_GENERIC_GLOB_DAT:
+          case R_GENERIC_RELATIVE:
+          case R_GENERIC_IRELATIVE:
 #if defined(__aarch64__)
-          case R_AARCH64_JUMP_SLOT:
-          case R_AARCH64_GLOB_DAT:
           case R_AARCH64_ABS64:
           case R_AARCH64_ABS32:
           case R_AARCH64_ABS16:
-          case R_AARCH64_RELATIVE:
-          case R_AARCH64_IRELATIVE:
+#elif defined(__x86_64__)
+          case R_X86_64_32:
+          case R_X86_64_64:
+#elif defined(__arm__)
+          case R_ARM_ABS32:
+#elif defined(__i386__)
+          case R_386_32:
+#endif
             /*
              * The sym_addr was initialized to be zero above, or the relocation
              * code below does not care about value of sym_addr.
              * No need to do anything.
              */
             break;
-#elif defined(__x86_64__)
-          case R_X86_64_JUMP_SLOT:
-          case R_X86_64_GLOB_DAT:
-          case R_X86_64_32:
-          case R_X86_64_64:
-          case R_X86_64_RELATIVE:
-          case R_X86_64_IRELATIVE:
-            // No need to do anything.
-            break;
+#if defined(__x86_64__)
           case R_X86_64_PC32:
             sym_addr = reloc;
             break;
+#elif defined(__i386__)
+          case R_386_PC32:
+            sym_addr = reloc;
+            break;
 #endif
           default:
-            DL_ERR("unknown weak reloc type %d @ %p (%zu)", type, rela, idx);
-            return -1;
+            DL_ERR("unknown weak reloc type %d @ %p (%zu)", type, rel, idx);
+            return false;
         }
       } else {
         // We got a definition.
@@ -1158,299 +1865,176 @@
     }
 
     switch (type) {
+      case R_GENERIC_JUMP_SLOT:
+        count_relocation(kRelocAbsolute);
+        MARK(rel->r_offset);
+        TRACE_TYPE(RELO, "RELO JMP_SLOT %16p <- %16p %s\n",
+                   reinterpret_cast<void*>(reloc),
+                   reinterpret_cast<void*>(sym_addr + addend), sym_name);
+
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = (sym_addr + addend);
+        break;
+      case R_GENERIC_GLOB_DAT:
+        count_relocation(kRelocAbsolute);
+        MARK(rel->r_offset);
+        TRACE_TYPE(RELO, "RELO GLOB_DAT %16p <- %16p %s\n",
+                   reinterpret_cast<void*>(reloc),
+                   reinterpret_cast<void*>(sym_addr + addend), sym_name);
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = (sym_addr + addend);
+        break;
+      case R_GENERIC_RELATIVE:
+        count_relocation(kRelocRelative);
+        MARK(rel->r_offset);
+        TRACE_TYPE(RELO, "RELO RELATIVE %16p <- %16p\n",
+                   reinterpret_cast<void*>(reloc),
+                   reinterpret_cast<void*>(load_bias + addend));
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = (load_bias + addend);
+        break;
+      case R_GENERIC_IRELATIVE:
+        count_relocation(kRelocRelative);
+        MARK(rel->r_offset);
+        TRACE_TYPE(RELO, "RELO IRELATIVE %16p <- %16p\n",
+                    reinterpret_cast<void*>(reloc),
+                    reinterpret_cast<void*>(load_bias + addend));
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = call_ifunc_resolver(load_bias + addend);
+        break;
+
 #if defined(__aarch64__)
-      case R_AARCH64_JUMP_SLOT:
-        count_relocation(kRelocAbsolute);
-        MARK(rela->r_offset);
-        TRACE_TYPE(RELO, "RELO JMP_SLOT %16llx <- %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = (sym_addr + rela->r_addend);
-        break;
-      case R_AARCH64_GLOB_DAT:
-        count_relocation(kRelocAbsolute);
-        MARK(rela->r_offset);
-        TRACE_TYPE(RELO, "RELO GLOB_DAT %16llx <- %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = (sym_addr + rela->r_addend);
-        break;
       case R_AARCH64_ABS64:
         count_relocation(kRelocAbsolute);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO ABS64 %16llx <- %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + rela->r_addend);
+                   reloc, (sym_addr + addend), sym_name);
+        *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend);
         break;
       case R_AARCH64_ABS32:
         count_relocation(kRelocAbsolute);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO ABS32 %16llx <- %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), sym_name);
-        if ((static_cast<ElfW(Addr)>(INT32_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + rela->r_addend))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + rela->r_addend)) <= static_cast<ElfW(Addr)>(UINT32_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + rela->r_addend);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + rela->r_addend)),
-                 static_cast<ElfW(Addr)>(INT32_MIN),
-                 static_cast<ElfW(Addr)>(UINT32_MAX));
-          return -1;
+                   reloc, (sym_addr + addend), sym_name);
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT32_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT32_MAX);
+          if ((min_value <= (reloc_value + (sym_addr + addend))) &&
+              ((reloc_value + (sym_addr + addend)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   (reloc_value + (sym_addr + addend)), min_value, max_value);
+            return false;
+          }
         }
         break;
       case R_AARCH64_ABS16:
         count_relocation(kRelocAbsolute);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO ABS16 %16llx <- %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), sym_name);
-        if ((static_cast<ElfW(Addr)>(INT16_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + rela->r_addend))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + rela->r_addend)) <= static_cast<ElfW(Addr)>(UINT16_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + rela->r_addend);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + rela->r_addend)),
-                 static_cast<ElfW(Addr)>(INT16_MIN),
-                 static_cast<ElfW(Addr)>(UINT16_MAX));
-          return -1;
+                   reloc, (sym_addr + addend), sym_name);
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT16_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT16_MAX);
+          if ((min_value <= (reloc_value + (sym_addr + addend))) &&
+              ((reloc_value + (sym_addr + addend)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   reloc_value + (sym_addr + addend), min_value, max_value);
+            return false;
+          }
         }
         break;
       case R_AARCH64_PREL64:
         count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO REL64 %16llx <- %16llx - %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), rela->r_offset, sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + rela->r_addend) - rela->r_offset;
+                   reloc, (sym_addr + addend), rel->r_offset, sym_name);
+        *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend) - rel->r_offset;
         break;
       case R_AARCH64_PREL32:
         count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO REL32 %16llx <- %16llx - %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), rela->r_offset, sym_name);
-        if ((static_cast<ElfW(Addr)>(INT32_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + rela->r_addend) - rela->r_offset))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + rela->r_addend) - rela->r_offset)) <= static_cast<ElfW(Addr)>(UINT32_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + rela->r_addend) - rela->r_offset);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + rela->r_addend) - rela->r_offset)),
-                 static_cast<ElfW(Addr)>(INT32_MIN),
-                 static_cast<ElfW(Addr)>(UINT32_MAX));
-          return -1;
+                   reloc, (sym_addr + addend), rel->r_offset, sym_name);
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT32_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT32_MAX);
+          if ((min_value <= (reloc_value + ((sym_addr + addend) - rel->r_offset))) &&
+              ((reloc_value + ((sym_addr + addend) - rel->r_offset)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + addend) - rel->r_offset);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   reloc_value + ((sym_addr + addend) - rel->r_offset), min_value, max_value);
+            return false;
+          }
         }
         break;
       case R_AARCH64_PREL16:
         count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO REL16 %16llx <- %16llx - %16llx %s\n",
-                   reloc, (sym_addr + rela->r_addend), rela->r_offset, sym_name);
-        if ((static_cast<ElfW(Addr)>(INT16_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + rela->r_addend) - rela->r_offset))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + rela->r_addend) - rela->r_offset)) <= static_cast<ElfW(Addr)>(UINT16_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + rela->r_addend) - rela->r_offset);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + rela->r_addend) - rela->r_offset)),
-                 static_cast<ElfW(Addr)>(INT16_MIN),
-                 static_cast<ElfW(Addr)>(UINT16_MAX));
-          return -1;
+                   reloc, (sym_addr + addend), rel->r_offset, sym_name);
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT16_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT16_MAX);
+          if ((min_value <= (reloc_value + ((sym_addr + addend) - rel->r_offset))) &&
+              ((reloc_value + ((sym_addr + addend) - rel->r_offset)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + addend) - rel->r_offset);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   reloc_value + ((sym_addr + addend) - rel->r_offset), min_value, max_value);
+            return false;
+          }
         }
         break;
 
-      case R_AARCH64_RELATIVE:
-        count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
-        if (sym) {
-          DL_ERR("odd RELATIVE form...");
-          return -1;
-        }
-        TRACE_TYPE(RELO, "RELO RELATIVE %16llx <- %16llx\n",
-                   reloc, (base + rela->r_addend));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = (base + rela->r_addend);
-        break;
-
-      case R_AARCH64_IRELATIVE:
-        count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
-        TRACE_TYPE(RELO, "RELO IRELATIVE %16llx <- %16llx\n", reloc, (base + rela->r_addend));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = call_ifunc_resolver(base + rela->r_addend);
-        break;
-
       case R_AARCH64_COPY:
         /*
          * ET_EXEC is not supported so this should not happen.
          *
-         * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044d/IHI0044D_aaelf.pdf
+         * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056b/IHI0056B_aaelf64.pdf
          *
-         * Section 4.7.1.10 "Dynamic relocations"
+         * Section 4.6.11 "Dynamic relocations"
          * R_AARCH64_COPY may only appear in executable objects where e_type is
          * set to ET_EXEC.
          */
-        DL_ERR("%s R_AARCH64_COPY relocations are not supported", name);
-        return -1;
+        DL_ERR("%s R_AARCH64_COPY relocations are not supported", get_soname());
+        return false;
       case R_AARCH64_TLS_TPREL64:
         TRACE_TYPE(RELO, "RELO TLS_TPREL64 *** %16llx <- %16llx - %16llx\n",
-                   reloc, (sym_addr + rela->r_addend), rela->r_offset);
+                   reloc, (sym_addr + addend), rel->r_offset);
         break;
       case R_AARCH64_TLS_DTPREL32:
         TRACE_TYPE(RELO, "RELO TLS_DTPREL32 *** %16llx <- %16llx - %16llx\n",
-                   reloc, (sym_addr + rela->r_addend), rela->r_offset);
+                   reloc, (sym_addr + addend), rel->r_offset);
         break;
 #elif defined(__x86_64__)
-      case R_X86_64_JUMP_SLOT:
-        count_relocation(kRelocAbsolute);
-        MARK(rela->r_offset);
-        TRACE_TYPE(RELO, "RELO JMP_SLOT %08zx <- %08zx %s", static_cast<size_t>(reloc),
-                   static_cast<size_t>(sym_addr + rela->r_addend), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + rela->r_addend;
-        break;
-      case R_X86_64_GLOB_DAT:
-        count_relocation(kRelocAbsolute);
-        MARK(rela->r_offset);
-        TRACE_TYPE(RELO, "RELO GLOB_DAT %08zx <- %08zx %s", static_cast<size_t>(reloc),
-                   static_cast<size_t>(sym_addr + rela->r_addend), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + rela->r_addend;
-        break;
-      case R_X86_64_RELATIVE:
-        count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
-        if (sym) {
-          DL_ERR("odd RELATIVE form...");
-          return -1;
-        }
-        TRACE_TYPE(RELO, "RELO RELATIVE %08zx <- +%08zx", static_cast<size_t>(reloc),
-                   static_cast<size_t>(base));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = base + rela->r_addend;
-        break;
-      case R_X86_64_IRELATIVE:
-        count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
-        TRACE_TYPE(RELO, "RELO IRELATIVE %16llx <- %16llx\n", reloc, (base + rela->r_addend));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = call_ifunc_resolver(base + rela->r_addend);
-        break;
       case R_X86_64_32:
         count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO R_X86_64_32 %08zx <- +%08zx %s", static_cast<size_t>(reloc),
                    static_cast<size_t>(sym_addr), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + rela->r_addend;
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + addend;
         break;
       case R_X86_64_64:
         count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO R_X86_64_64 %08zx <- +%08zx %s", static_cast<size_t>(reloc),
                    static_cast<size_t>(sym_addr), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + rela->r_addend;
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + addend;
         break;
       case R_X86_64_PC32:
         count_relocation(kRelocRelative);
-        MARK(rela->r_offset);
+        MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO R_X86_64_PC32 %08zx <- +%08zx (%08zx - %08zx) %s",
                    static_cast<size_t>(reloc), static_cast<size_t>(sym_addr - reloc),
                    static_cast<size_t>(sym_addr), static_cast<size_t>(reloc), sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + rela->r_addend - reloc;
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + addend - reloc;
         break;
-#endif
-
-      default:
-        DL_ERR("unknown reloc type %d @ %p (%zu)", type, rela, idx);
-        return -1;
-    }
-  }
-  return 0;
-}
-
-#else // REL, not RELA.
-int soinfo::Relocate(ElfW(Rel)* rel, unsigned count) {
-  for (size_t idx = 0; idx < count; ++idx, ++rel) {
-    unsigned type = ELFW(R_TYPE)(rel->r_info);
-    // TODO: don't use unsigned for 'sym'. Use uint32_t or ElfW(Addr) instead.
-    unsigned sym = ELFW(R_SYM)(rel->r_info);
-    ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rel->r_offset + load_bias);
-    ElfW(Addr) sym_addr = 0;
-    const char* sym_name = nullptr;
-
-    DEBUG("Processing '%s' relocation at index %zd", name, idx);
-    if (type == 0) { // R_*_NONE
-      continue;
-    }
-
-    ElfW(Sym)* s = nullptr;
-    soinfo* lsi = nullptr;
-
-    if (sym != 0) {
-      sym_name = get_string(symtab[sym].st_name);
-      s = soinfo_do_lookup(this, sym_name, &lsi);
-      if (s == nullptr) {
-        // We only allow an undefined symbol if this is a weak reference...
-        s = &symtab[sym];
-        if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
-          DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, name);
-          return -1;
-        }
-
-        /* IHI0044C AAELF 4.5.1.1:
-
-           Libraries are not searched to resolve weak references.
-           It is not an error for a weak reference to remain
-           unsatisfied.
-
-           During linking, the value of an undefined weak reference is:
-           - Zero if the relocation type is absolute
-           - The address of the place if the relocation is pc-relative
-           - The address of nominal base address if the relocation
-             type is base-relative.
-        */
-
-        switch (type) {
-#if defined(__arm__)
-          case R_ARM_JUMP_SLOT:
-          case R_ARM_GLOB_DAT:
-          case R_ARM_ABS32:
-          case R_ARM_RELATIVE:    /* Don't care. */
-            // sym_addr was initialized to be zero above or relocation
-            // code below does not care about value of sym_addr.
-            // No need to do anything.
-            break;
-#elif defined(__i386__)
-          case R_386_JMP_SLOT:
-          case R_386_GLOB_DAT:
-          case R_386_32:
-          case R_386_RELATIVE:    /* Don't care. */
-          case R_386_IRELATIVE:
-            // sym_addr was initialized to be zero above or relocation
-            // code below does not care about value of sym_addr.
-            // No need to do anything.
-            break;
-          case R_386_PC32:
-            sym_addr = reloc;
-            break;
-#endif
-
-#if defined(__arm__)
-          case R_ARM_COPY:
-            // Fall through. Can't really copy if weak symbol is not found at run-time.
-#endif
-          default:
-            DL_ERR("unknown weak reloc type %d @ %p (%zu)", type, rel, idx);
-            return -1;
-        }
-      } else {
-        // We got a definition.
-        sym_addr = lsi->resolve_symbol_address(s);
-      }
-      count_relocation(kRelocSymbol);
-    }
-
-    switch (type) {
-#if defined(__arm__)
-      case R_ARM_JUMP_SLOT:
-        count_relocation(kRelocAbsolute);
-        MARK(rel->r_offset);
-        TRACE_TYPE(RELO, "RELO JMP_SLOT %08x <- %08x %s", reloc, sym_addr, sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr;
-        break;
-      case R_ARM_GLOB_DAT:
-        count_relocation(kRelocAbsolute);
-        MARK(rel->r_offset);
-        TRACE_TYPE(RELO, "RELO GLOB_DAT %08x <- %08x %s", reloc, sym_addr, sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr;
-        break;
+#elif defined(__arm__)
       case R_ARM_ABS32:
         count_relocation(kRelocAbsolute);
         MARK(rel->r_offset);
@@ -1470,25 +2054,13 @@
          *
          * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044d/IHI0044D_aaelf.pdf
          *
-         * Section 4.7.1.10 "Dynamic relocations"
+         * Section 4.6.1.10 "Dynamic relocations"
          * R_ARM_COPY may only appear in executable objects where e_type is
          * set to ET_EXEC.
          */
-        DL_ERR("%s R_ARM_COPY relocations are not supported", name);
-        return -1;
+        DL_ERR("%s R_ARM_COPY relocations are not supported", get_soname());
+        return false;
 #elif defined(__i386__)
-      case R_386_JMP_SLOT:
-        count_relocation(kRelocAbsolute);
-        MARK(rel->r_offset);
-        TRACE_TYPE(RELO, "RELO JMP_SLOT %08x <- %08x %s", reloc, sym_addr, sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr;
-        break;
-      case R_386_GLOB_DAT:
-        count_relocation(kRelocAbsolute);
-        MARK(rel->r_offset);
-        TRACE_TYPE(RELO, "RELO GLOB_DAT %08x <- %08x %s", reloc, sym_addr, sym_name);
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr;
-        break;
       case R_386_32:
         count_relocation(kRelocRelative);
         MARK(rel->r_offset);
@@ -1502,124 +2074,23 @@
                    reloc, (sym_addr - reloc), sym_addr, reloc, sym_name);
         *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr - reloc);
         break;
-#elif defined(__mips__)
-      case R_MIPS_REL32:
-#if defined(__LP64__)
-        // MIPS Elf64_Rel entries contain compound relocations
-        // We only handle the R_MIPS_NONE|R_MIPS_64|R_MIPS_REL32 case
-        if (ELF64_R_TYPE2(rel->r_info) != R_MIPS_64 ||
-            ELF64_R_TYPE3(rel->r_info) != R_MIPS_NONE) {
-          DL_ERR("Unexpected compound relocation type:%d type2:%d type3:%d @ %p (%zu)",
-                 type, (unsigned)ELF64_R_TYPE2(rel->r_info),
-                 (unsigned)ELF64_R_TYPE3(rel->r_info), rel, idx);
-          return -1;
-        }
 #endif
-        count_relocation(kRelocAbsolute);
-        MARK(rel->r_offset);
-        TRACE_TYPE(RELO, "RELO REL32 %08zx <- %08zx %s", static_cast<size_t>(reloc),
-                   static_cast<size_t>(sym_addr), sym_name ? sym_name : "*SECTIONHDR*");
-        if (s) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += sym_addr;
-        } else {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += base;
-        }
-        break;
-#endif
-
-#if defined(__arm__)
-      case R_ARM_RELATIVE:
-#elif defined(__i386__)
-      case R_386_RELATIVE:
-#endif
-        count_relocation(kRelocRelative);
-        MARK(rel->r_offset);
-        if (sym) {
-          DL_ERR("odd RELATIVE form...");
-          return -1;
-        }
-        TRACE_TYPE(RELO, "RELO RELATIVE %p <- +%p",
-                   reinterpret_cast<void*>(reloc), reinterpret_cast<void*>(base));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) += base;
-        break;
-#if defined(__i386__)
-      case R_386_IRELATIVE:
-        count_relocation(kRelocRelative);
-        MARK(rel->r_offset);
-        TRACE_TYPE(RELO, "RELO IRELATIVE %p <- %p", reinterpret_cast<void*>(reloc), reinterpret_cast<void*>(base));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = call_ifunc_resolver(base + *reinterpret_cast<ElfW(Addr)*>(reloc));
-        break;
-#endif
-
       default:
         DL_ERR("unknown reloc type %d @ %p (%zu)", type, rel, idx);
-        return -1;
-    }
-  }
-  return 0;
-}
-#endif
-
-#if defined(__mips__)
-static bool mips_relocate_got(soinfo* si) {
-  ElfW(Addr)** got = si->plt_got;
-  if (got == nullptr) {
-    return true;
-  }
-  unsigned local_gotno = si->mips_local_gotno;
-  unsigned gotsym = si->mips_gotsym;
-  unsigned symtabno = si->mips_symtabno;
-  ElfW(Sym)* symtab = si->symtab;
-
-  // got[0] is the address of the lazy resolver function.
-  // got[1] may be used for a GNU extension.
-  // Set it to a recognizable address in case someone calls it (should be _rtld_bind_start).
-  // FIXME: maybe this should be in a separate routine?
-  if ((si->flags & FLAG_LINKER) == 0) {
-    size_t g = 0;
-    got[g++] = reinterpret_cast<ElfW(Addr)*>(0xdeadbeef);
-    if (reinterpret_cast<intptr_t>(got[g]) < 0) {
-      got[g++] = reinterpret_cast<ElfW(Addr)*>(0xdeadfeed);
-    }
-    // Relocate the local GOT entries.
-    for (; g < local_gotno; g++) {
-      got[g] = reinterpret_cast<ElfW(Addr)*>(reinterpret_cast<uintptr_t>(got[g]) + si->load_bias);
-    }
-  }
-
-  // Now for the global GOT entries...
-  ElfW(Sym)* sym = symtab + gotsym;
-  got = si->plt_got + local_gotno;
-  for (size_t g = gotsym; g < symtabno; g++, sym++, got++) {
-    // This is an undefined reference... try to locate it.
-    const char* sym_name = si->get_string(sym->st_name);
-    soinfo* lsi = nullptr;
-    ElfW(Sym)* s = soinfo_do_lookup(si, sym_name, &lsi);
-    if (s == nullptr) {
-      // We only allow an undefined symbol if this is a weak reference.
-      s = &symtab[g];
-      if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
-        DL_ERR("cannot locate \"%s\"...", sym_name);
         return false;
-      }
-      *got = 0;
-    } else {
-      // FIXME: is this sufficient?
-      // For reference see NetBSD link loader
-      // http://cvsweb.netbsd.org/bsdweb.cgi/src/libexec/ld.elf_so/arch/mips/mips_reloc.c?rev=1.53&content-type=text/x-cvsweb-markup
-      *got = reinterpret_cast<ElfW(Addr)*>(lsi->resolve_symbol_address(s));
     }
   }
   return true;
 }
-#endif
+#endif  // !defined(__mips__)
 
-void soinfo::CallArray(const char* array_name __unused, linker_function_t* functions, size_t count, bool reverse) {
+void soinfo::call_array(const char* array_name __unused, linker_function_t* functions,
+                        size_t count, bool reverse) {
   if (functions == nullptr) {
     return;
   }
 
-  TRACE("[ Calling %s (size %zd) @ %p for '%s' ]", array_name, count, functions, name);
+  TRACE("[ Calling %s (size %zd) @ %p for '%s' ]", array_name, count, functions, get_soname());
 
   int begin = reverse ? (count - 1) : 0;
   int end = reverse ? -1 : count;
@@ -1627,33 +2098,29 @@
 
   for (int i = begin; i != end; i += step) {
     TRACE("[ %s[%d] == %p ]", array_name, i, functions[i]);
-    CallFunction("function", functions[i]);
+    call_function("function", functions[i]);
   }
 
-  TRACE("[ Done calling %s for '%s' ]", array_name, name);
+  TRACE("[ Done calling %s for '%s' ]", array_name, get_soname());
 }
 
-void soinfo::CallFunction(const char* function_name __unused, linker_function_t function) {
+void soinfo::call_function(const char* function_name __unused, linker_function_t function) {
   if (function == nullptr || reinterpret_cast<uintptr_t>(function) == static_cast<uintptr_t>(-1)) {
     return;
   }
 
-  TRACE("[ Calling %s @ %p for '%s' ]", function_name, function, name);
+  TRACE("[ Calling %s @ %p for '%s' ]", function_name, function, get_soname());
   function();
-  TRACE("[ Done calling %s @ %p for '%s' ]", function_name, function, name);
-
-  // The function may have called dlopen(3) or dlclose(3), so we need to ensure our data structures
-  // are still writable. This happens with our debug malloc (see http://b/7941716).
-  protect_data(PROT_READ | PROT_WRITE);
+  TRACE("[ Done calling %s @ %p for '%s' ]", function_name, function, get_soname());
 }
 
-void soinfo::CallPreInitConstructors() {
+void soinfo::call_pre_init_constructors() {
   // DT_PREINIT_ARRAY functions are called before any other constructors for executables,
   // but ignored in a shared library.
-  CallArray("DT_PREINIT_ARRAY", preinit_array, preinit_array_count, false);
+  call_array("DT_PREINIT_ARRAY", preinit_array_, preinit_array_count_, false);
 }
 
-void soinfo::CallConstructors() {
+void soinfo::call_constructors() {
   if (constructors_called) {
     return;
   }
@@ -1670,34 +2137,34 @@
   //    out above, the libc constructor will be called again (recursively!).
   constructors_called = true;
 
-  if ((flags & FLAG_EXE) == 0 && preinit_array != nullptr) {
+  if (!is_main_executable() && preinit_array_ != nullptr) {
     // The GNU dynamic linker silently ignores these, but we warn the developer.
     PRINT("\"%s\": ignoring %zd-entry DT_PREINIT_ARRAY in shared library!",
-          name, preinit_array_count);
+          get_soname(), preinit_array_count_);
   }
 
   get_children().for_each([] (soinfo* si) {
-    si->CallConstructors();
+    si->call_constructors();
   });
 
-  TRACE("\"%s\": calling constructors", name);
+  TRACE("\"%s\": calling constructors", get_soname());
 
   // DT_INIT should be called before DT_INIT_ARRAY if both are present.
-  CallFunction("DT_INIT", init_func);
-  CallArray("DT_INIT_ARRAY", init_array, init_array_count, false);
+  call_function("DT_INIT", init_func_);
+  call_array("DT_INIT_ARRAY", init_array_, init_array_count_, false);
 }
 
-void soinfo::CallDestructors() {
+void soinfo::call_destructors() {
   if (!constructors_called) {
     return;
   }
-  TRACE("\"%s\": calling destructors", name);
+  TRACE("\"%s\": calling destructors", get_soname());
 
   // DT_FINI_ARRAY must be parsed in reverse order.
-  CallArray("DT_FINI_ARRAY", fini_array, fini_array_count, true);
+  call_array("DT_FINI_ARRAY", fini_array_, fini_array_count_, true);
 
   // DT_FINI should be called after DT_FINI_ARRAY if both are present.
-  CallFunction("DT_FINI", fini_func);
+  call_function("DT_FINI", fini_func_);
 
   // This is needed on second call to dlopen
   // after library has been unloaded with RTLD_NODELETE
@@ -1706,8 +2173,8 @@
 
 void soinfo::add_child(soinfo* child) {
   if (has_min_version(0)) {
-    child->parents.push_back(this);
-    this->children.push_back(child);
+    child->parents_.push_back(this);
+    this->children_.push_back(child);
   }
 }
 
@@ -1717,68 +2184,130 @@
   }
 
   // 1. Untie connected soinfos from 'this'.
-  children.for_each([&] (soinfo* child) {
-    child->parents.remove_if([&] (const soinfo* parent) {
+  children_.for_each([&] (soinfo* child) {
+    child->parents_.remove_if([&] (const soinfo* parent) {
       return parent == this;
     });
   });
 
-  parents.for_each([&] (soinfo* parent) {
-    parent->children.remove_if([&] (const soinfo* child) {
+  parents_.for_each([&] (soinfo* parent) {
+    parent->children_.remove_if([&] (const soinfo* child) {
       return child == this;
     });
   });
 
   // 2. Once everything untied - clear local lists.
-  parents.clear();
-  children.clear();
+  parents_.clear();
+  children_.clear();
 }
 
-dev_t soinfo::get_st_dev() {
+dev_t soinfo::get_st_dev() const {
   if (has_min_version(0)) {
-    return st_dev;
+    return st_dev_;
   }
 
   return 0;
 };
 
-ino_t soinfo::get_st_ino() {
+ino_t soinfo::get_st_ino() const {
   if (has_min_version(0)) {
-    return st_ino;
+    return st_ino_;
   }
 
   return 0;
 }
 
-off64_t soinfo::get_file_offset() {
+off64_t soinfo::get_file_offset() const {
   if (has_min_version(1)) {
-    return file_offset;
+    return file_offset_;
   }
 
   return 0;
 }
 
+uint32_t soinfo::get_rtld_flags() const {
+  if (has_min_version(1)) {
+    return rtld_flags_;
+  }
+
+  return 0;
+}
+
+uint32_t soinfo::get_dt_flags_1() const {
+  if (has_min_version(1)) {
+    return dt_flags_1_;
+  }
+
+  return 0;
+}
+
+void soinfo::set_dt_flags_1(uint32_t dt_flags_1) {
+  if (has_min_version(1)) {
+    if ((dt_flags_1 & DF_1_GLOBAL) != 0) {
+      rtld_flags_ |= RTLD_GLOBAL;
+    }
+
+    if ((dt_flags_1 & DF_1_NODELETE) != 0) {
+      rtld_flags_ |= RTLD_NODELETE;
+    }
+
+    dt_flags_1_ = dt_flags_1;
+  }
+}
+
+const char* soinfo::get_realpath() const {
+#if defined(__arm__)
+  if (has_min_version(2)) {
+    return realpath_.c_str();
+  } else {
+    return old_name_;
+  }
+#else
+  return realpath_.c_str();
+#endif
+}
+
+const char* soinfo::get_soname() const {
+#if defined(__arm__)
+  if (has_min_version(2)) {
+    return soname_;
+  } else {
+    return old_name_;
+  }
+#else
+  return soname_;
+#endif
+}
+
 // This is a return on get_children()/get_parents() if
 // 'this->flags' does not have FLAG_NEW_SOINFO set.
 static soinfo::soinfo_list_t g_empty_list;
 
 soinfo::soinfo_list_t& soinfo::get_children() {
   if (has_min_version(0)) {
-    return this->children;
+    return children_;
+  }
+
+  return g_empty_list;
+}
+
+const soinfo::soinfo_list_t& soinfo::get_children() const {
+  if (has_min_version(0)) {
+    return children_;
   }
 
   return g_empty_list;
 }
 
 soinfo::soinfo_list_t& soinfo::get_parents() {
-  if ((this->flags & FLAG_NEW_SOINFO) == 0) {
-    return g_empty_list;
+  if (has_min_version(0)) {
+    return parents_;
   }
 
-  return this->parents;
+  return g_empty_list;
 }
 
-ElfW(Addr) soinfo::resolve_symbol_address(ElfW(Sym)* s) {
+ElfW(Addr) soinfo::resolve_symbol_address(const ElfW(Sym)* s) const {
   if (ELF_ST_TYPE(s->st_info) == STT_GNU_IFUNC) {
     return call_ifunc_resolver(s->st_value + load_bias);
   }
@@ -1787,11 +2316,52 @@
 }
 
 const char* soinfo::get_string(ElfW(Word) index) const {
-  if (has_min_version(1) && (index >= strtab_size)) {
-    __libc_fatal("%s: strtab out of bounds error; STRSZ=%zd, name=%d", name, strtab_size, index);
+  if (has_min_version(1) && (index >= strtab_size_)) {
+    __libc_fatal("%s: strtab out of bounds error; STRSZ=%zd, name=%d",
+        get_soname(), strtab_size_, index);
   }
 
-  return strtab + index;
+  return strtab_ + index;
+}
+
+bool soinfo::is_gnu_hash() const {
+  return (flags_ & FLAG_GNU_HASH) != 0;
+}
+
+bool soinfo::can_unload() const {
+  return (get_rtld_flags() & (RTLD_NODELETE | RTLD_GLOBAL)) == 0;
+}
+
+bool soinfo::is_linked() const {
+  return (flags_ & FLAG_LINKED) != 0;
+}
+
+bool soinfo::is_main_executable() const {
+  return (flags_ & FLAG_EXE) != 0;
+}
+
+void soinfo::set_linked() {
+  flags_ |= FLAG_LINKED;
+}
+
+void soinfo::set_linker_flag() {
+  flags_ |= FLAG_LINKER;
+}
+
+void soinfo::set_main_executable() {
+  flags_ |= FLAG_EXE;
+}
+
+void soinfo::increment_ref_count() {
+  local_group_root_->ref_count_++;
+}
+
+size_t soinfo::decrement_ref_count() {
+  return --local_group_root_->ref_count_;
+}
+
+soinfo* soinfo::get_local_group_root() const {
+  return local_group_root_;
 }
 
 /* Force any of the closed stdin, stdout and stderr to be associated with
@@ -1855,21 +2425,21 @@
   return return_value;
 }
 
-bool soinfo::PrelinkImage() {
+bool soinfo::prelink_image() {
   /* Extract dynamic section */
   ElfW(Word) dynamic_flags = 0;
   phdr_table_get_dynamic_section(phdr, phnum, load_bias, &dynamic, &dynamic_flags);
 
   /* We can't log anything until the linker is relocated */
-  bool relocating_linker = (flags & FLAG_LINKER) != 0;
+  bool relocating_linker = (flags_ & FLAG_LINKER) != 0;
   if (!relocating_linker) {
-    INFO("[ linking %s ]", name);
-    DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast<void*>(base), flags);
+    INFO("[ linking %s ]", get_realpath());
+    DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast<void*>(base), flags_);
   }
 
   if (dynamic == nullptr) {
     if (!relocating_linker) {
-      DL_ERR("missing PT_DYNAMIC in \"%s\"", name);
+      DL_ERR("missing PT_DYNAMIC in \"%s\"", get_soname());
     }
     return false;
   } else {
@@ -1884,38 +2454,64 @@
 #endif
 
   // Extract useful information from dynamic section.
+  // Note that: "Except for the DT_NULL element at the end of the array,
+  // and the relative order of DT_NEEDED elements, entries may appear in any order."
+  //
+  // source: http://www.sco.com/developers/gabi/1998-04-29/ch5.dynamic.html
   uint32_t needed_count = 0;
   for (ElfW(Dyn)* d = dynamic; d->d_tag != DT_NULL; ++d) {
     DEBUG("d = %p, d[0](tag) = %p d[1](val) = %p",
           d, reinterpret_cast<void*>(d->d_tag), reinterpret_cast<void*>(d->d_un.d_val));
     switch (d->d_tag) {
       case DT_SONAME:
-        // TODO: glibc dynamic linker uses this name for
-        // initial library lookup; consider doing the same here.
+        // this is parsed after we have strtab initialized (see below).
         break;
 
       case DT_HASH:
-        nbucket = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[0];
-        nchain = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[1];
-        bucket = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr + 8);
-        chain = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr + 8 + nbucket * 4);
+        nbucket_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[0];
+        nchain_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[1];
+        bucket_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr + 8);
+        chain_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr + 8 + nbucket_ * 4);
+        break;
+
+      case DT_GNU_HASH:
+        gnu_nbucket_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[0];
+        // skip symndx
+        gnu_maskwords_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[2];
+        gnu_shift2_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[3];
+
+        gnu_bloom_filter_ = reinterpret_cast<ElfW(Addr)*>(load_bias + d->d_un.d_ptr + 16);
+        gnu_bucket_ = reinterpret_cast<uint32_t*>(gnu_bloom_filter_ + gnu_maskwords_);
+        // amend chain for symndx = header[1]
+        gnu_chain_ = gnu_bucket_ + gnu_nbucket_ -
+            reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[1];
+
+        if (!powerof2(gnu_maskwords_)) {
+          DL_ERR("invalid maskwords for gnu_hash = 0x%x, in \"%s\" expecting power to two",
+              gnu_maskwords_, get_realpath());
+          return false;
+        }
+        --gnu_maskwords_;
+
+        flags_ |= FLAG_GNU_HASH;
         break;
 
       case DT_STRTAB:
-        strtab = reinterpret_cast<const char*>(load_bias + d->d_un.d_ptr);
+        strtab_ = reinterpret_cast<const char*>(load_bias + d->d_un.d_ptr);
         break;
 
       case DT_STRSZ:
-        strtab_size = d->d_un.d_val;
+        strtab_size_ = d->d_un.d_val;
         break;
 
       case DT_SYMTAB:
-        symtab = reinterpret_cast<ElfW(Sym)*>(load_bias + d->d_un.d_ptr);
+        symtab_ = reinterpret_cast<ElfW(Sym)*>(load_bias + d->d_un.d_ptr);
         break;
 
       case DT_SYMENT:
         if (d->d_un.d_val != sizeof(ElfW(Sym))) {
-          DL_ERR("invalid DT_SYMENT: %zd", static_cast<size_t>(d->d_un.d_val));
+          DL_ERR("invalid DT_SYMENT: %zd in \"%s\"",
+              static_cast<size_t>(d->d_un.d_val), get_realpath());
           return false;
         }
         break;
@@ -1923,12 +2519,12 @@
       case DT_PLTREL:
 #if defined(USE_RELA)
         if (d->d_un.d_val != DT_RELA) {
-          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_RELA", name);
+          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_RELA", get_realpath());
           return false;
         }
 #else
         if (d->d_un.d_val != DT_REL) {
-          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_REL", name);
+          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_REL", get_realpath());
           return false;
         }
 #endif
@@ -1936,24 +2532,24 @@
 
       case DT_JMPREL:
 #if defined(USE_RELA)
-        plt_rela = reinterpret_cast<ElfW(Rela)*>(load_bias + d->d_un.d_ptr);
+        plt_rela_ = reinterpret_cast<ElfW(Rela)*>(load_bias + d->d_un.d_ptr);
 #else
-        plt_rel = reinterpret_cast<ElfW(Rel)*>(load_bias + d->d_un.d_ptr);
+        plt_rel_ = reinterpret_cast<ElfW(Rel)*>(load_bias + d->d_un.d_ptr);
 #endif
         break;
 
       case DT_PLTRELSZ:
 #if defined(USE_RELA)
-        plt_rela_count = d->d_un.d_val / sizeof(ElfW(Rela));
+        plt_rela_count_ = d->d_un.d_val / sizeof(ElfW(Rela));
 #else
-        plt_rel_count = d->d_un.d_val / sizeof(ElfW(Rel));
+        plt_rel_count_ = d->d_un.d_val / sizeof(ElfW(Rel));
 #endif
         break;
 
       case DT_PLTGOT:
 #if defined(__mips__)
         // Used by mips and mips64.
-        plt_got = reinterpret_cast<ElfW(Addr)**>(load_bias + d->d_un.d_ptr);
+        plt_got_ = reinterpret_cast<ElfW(Addr)**>(load_bias + d->d_un.d_ptr);
 #endif
         // Ignore for other platforms... (because RTLD_LAZY is not supported)
         break;
@@ -1969,17 +2565,33 @@
         if ((dynamic_flags & PF_W) != 0) {
           d->d_un.d_val = reinterpret_cast<uintptr_t>(&_r_debug);
         }
-        break;
 #endif
+        break;
 #if defined(USE_RELA)
       case DT_RELA:
-        rela = reinterpret_cast<ElfW(Rela)*>(load_bias + d->d_un.d_ptr);
+        rela_ = reinterpret_cast<ElfW(Rela)*>(load_bias + d->d_un.d_ptr);
         break;
 
       case DT_RELASZ:
-        rela_count = d->d_un.d_val / sizeof(ElfW(Rela));
+        rela_count_ = d->d_un.d_val / sizeof(ElfW(Rela));
         break;
 
+      case DT_ANDROID_RELA:
+        android_relocs_ = reinterpret_cast<uint8_t*>(load_bias + d->d_un.d_ptr);
+        break;
+
+      case DT_ANDROID_RELASZ:
+        android_relocs_size_ = d->d_un.d_val;
+        break;
+
+      case DT_ANDROID_REL:
+        DL_ERR("unsupported DT_ANDROID_REL in \"%s\"", get_realpath());
+        return false;
+
+      case DT_ANDROID_RELSZ:
+        DL_ERR("unsupported DT_ANDROID_RELSZ in \"%s\"", get_realpath());
+        return false;
+
       case DT_RELAENT:
         if (d->d_un.d_val != sizeof(ElfW(Rela))) {
           DL_ERR("invalid DT_RELAENT: %zd", static_cast<size_t>(d->d_un.d_val));
@@ -1992,19 +2604,20 @@
         break;
 
       case DT_REL:
-        DL_ERR("unsupported DT_REL in \"%s\"", name);
+        DL_ERR("unsupported DT_REL in \"%s\"", get_realpath());
         return false;
 
       case DT_RELSZ:
-        DL_ERR("unsupported DT_RELSZ in \"%s\"", name);
+        DL_ERR("unsupported DT_RELSZ in \"%s\"", get_realpath());
         return false;
+
 #else
       case DT_REL:
-        rel = reinterpret_cast<ElfW(Rel)*>(load_bias + d->d_un.d_ptr);
+        rel_ = reinterpret_cast<ElfW(Rel)*>(load_bias + d->d_un.d_ptr);
         break;
 
       case DT_RELSZ:
-        rel_count = d->d_un.d_val / sizeof(ElfW(Rel));
+        rel_count_ = d->d_un.d_val / sizeof(ElfW(Rel));
         break;
 
       case DT_RELENT:
@@ -2014,6 +2627,22 @@
         }
         break;
 
+      case DT_ANDROID_REL:
+        android_relocs_ = reinterpret_cast<uint8_t*>(load_bias + d->d_un.d_ptr);
+        break;
+
+      case DT_ANDROID_RELSZ:
+        android_relocs_size_ = d->d_un.d_val;
+        break;
+
+      case DT_ANDROID_RELA:
+        DL_ERR("unsupported DT_ANDROID_RELA in \"%s\"", get_realpath());
+        return false;
+
+      case DT_ANDROID_RELASZ:
+        DL_ERR("unsupported DT_ANDROID_RELASZ in \"%s\"", get_realpath());
+        return false;
+
       // "Indicates that all RELATIVE relocations have been concatenated together,
       // and specifies the RELATIVE relocation count."
       //
@@ -2021,50 +2650,56 @@
       // Not currently used by bionic linker - ignored.
       case DT_RELCOUNT:
         break;
+
       case DT_RELA:
-        DL_ERR("unsupported DT_RELA in \"%s\"", name);
+        DL_ERR("unsupported DT_RELA in \"%s\"", get_realpath());
         return false;
+
+      case DT_RELASZ:
+        DL_ERR("unsupported DT_RELASZ in \"%s\"", get_realpath());
+        return false;
+
 #endif
       case DT_INIT:
-        init_func = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s constructors (DT_INIT) found at %p", name, init_func);
+        init_func_ = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
+        DEBUG("%s constructors (DT_INIT) found at %p", get_realpath(), init_func_);
         break;
 
       case DT_FINI:
-        fini_func = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s destructors (DT_FINI) found at %p", name, fini_func);
+        fini_func_ = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
+        DEBUG("%s destructors (DT_FINI) found at %p", get_realpath(), fini_func_);
         break;
 
       case DT_INIT_ARRAY:
-        init_array = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s constructors (DT_INIT_ARRAY) found at %p", name, init_array);
+        init_array_ = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
+        DEBUG("%s constructors (DT_INIT_ARRAY) found at %p", get_realpath(), init_array_);
         break;
 
       case DT_INIT_ARRAYSZ:
-        init_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
+        init_array_count_ = static_cast<uint32_t>(d->d_un.d_val) / sizeof(ElfW(Addr));
         break;
 
       case DT_FINI_ARRAY:
-        fini_array = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s destructors (DT_FINI_ARRAY) found at %p", name, fini_array);
+        fini_array_ = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
+        DEBUG("%s destructors (DT_FINI_ARRAY) found at %p", get_realpath(), fini_array_);
         break;
 
       case DT_FINI_ARRAYSZ:
-        fini_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
+        fini_array_count_ = static_cast<uint32_t>(d->d_un.d_val) / sizeof(ElfW(Addr));
         break;
 
       case DT_PREINIT_ARRAY:
-        preinit_array = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s constructors (DT_PREINIT_ARRAY) found at %p", name, preinit_array);
+        preinit_array_ = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
+        DEBUG("%s constructors (DT_PREINIT_ARRAY) found at %p", get_realpath(), preinit_array_);
         break;
 
       case DT_PREINIT_ARRAYSZ:
-        preinit_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
+        preinit_array_count_ = static_cast<uint32_t>(d->d_un.d_val) / sizeof(ElfW(Addr));
         break;
 
       case DT_TEXTREL:
 #if defined(__LP64__)
-        DL_ERR("text relocations (DT_TEXTREL) found in 64-bit ELF file \"%s\"", name);
+        DL_ERR("text relocations (DT_TEXTREL) found in 64-bit ELF file \"%s\"", get_realpath());
         return false;
 #else
         has_text_relocations = true;
@@ -2082,7 +2717,7 @@
       case DT_FLAGS:
         if (d->d_un.d_val & DF_TEXTREL) {
 #if defined(__LP64__)
-          DL_ERR("text relocations (DF_TEXTREL) found in 64-bit ELF file \"%s\"", name);
+          DL_ERR("text relocations (DF_TEXTREL) found in 64-bit ELF file \"%s\"", get_realpath());
           return false;
 #else
           has_text_relocations = true;
@@ -2094,12 +2729,9 @@
         break;
 
       case DT_FLAGS_1:
-        if ((d->d_un.d_val & DF_1_GLOBAL) != 0) {
-          rtld_flags |= RTLD_GLOBAL;
-        }
-        // TODO: Implement other flags
+        set_dt_flags_1(d->d_un.d_val);
 
-        if ((d->d_un.d_val & ~(DF_1_NOW | DF_1_GLOBAL)) != 0) {
+        if ((d->d_un.d_val & ~SUPPORTED_DT_FLAGS_1) != 0) {
           DL_WARN("Unsupported flags DT_FLAGS_1=%p", reinterpret_cast<void*>(d->d_un.d_val));
         }
         break;
@@ -2111,6 +2743,14 @@
           *dp = &_r_debug;
         }
         break;
+      case DT_MIPS_RLD_MAP2:
+        // Set the DT_MIPS_RLD_MAP2 entry to the address of _r_debug for GDB.
+        {
+          r_debug** dp = reinterpret_cast<r_debug**>(
+              reinterpret_cast<ElfW(Addr)>(d) + d->d_un.d_val);
+          *dp = &_r_debug;
+        }
+        break;
 
       case DT_MIPS_RLD_VERSION:
       case DT_MIPS_FLAGS:
@@ -2119,117 +2759,186 @@
         break;
 
       case DT_MIPS_SYMTABNO:
-        mips_symtabno = d->d_un.d_val;
+        mips_symtabno_ = d->d_un.d_val;
         break;
 
       case DT_MIPS_LOCAL_GOTNO:
-        mips_local_gotno = d->d_un.d_val;
+        mips_local_gotno_ = d->d_un.d_val;
         break;
 
       case DT_MIPS_GOTSYM:
-        mips_gotsym = d->d_un.d_val;
+        mips_gotsym_ = d->d_un.d_val;
         break;
 #endif
       // Ignored: "Its use has been superseded by the DF_BIND_NOW flag"
       case DT_BIND_NOW:
         break;
 
-      // Ignore: bionic does not support symbol versioning...
       case DT_VERSYM:
+        versym_ = reinterpret_cast<ElfW(Versym)*>(load_bias + d->d_un.d_ptr);
+        break;
+
       case DT_VERDEF:
+        verdef_ptr_ = load_bias + d->d_un.d_ptr;
+        break;
       case DT_VERDEFNUM:
+        verdef_cnt_ = d->d_un.d_val;
+        break;
+
+      case DT_VERNEED:
+        verneed_ptr_ = load_bias + d->d_un.d_ptr;
+        break;
+
+      case DT_VERNEEDNUM:
+        verneed_cnt_ = d->d_un.d_val;
         break;
 
       default:
         if (!relocating_linker) {
-          DL_WARN("%s: unused DT entry: type %p arg %p", name,
+          DL_WARN("%s: unused DT entry: type %p arg %p", get_realpath(),
               reinterpret_cast<void*>(d->d_tag), reinterpret_cast<void*>(d->d_un.d_val));
         }
         break;
     }
   }
 
+  // second pass - parse entries relying on strtab
+  for (ElfW(Dyn)* d = dynamic; d->d_tag != DT_NULL; ++d) {
+    if (d->d_tag == DT_SONAME) {
+      soname_ = get_string(d->d_un.d_val);
+#if defined(__arm__)
+      strlcpy(old_name_, soname_, sizeof(old_name_));
+#endif
+      break;
+    }
+  }
+
   DEBUG("si->base = %p, si->strtab = %p, si->symtab = %p",
-        reinterpret_cast<void*>(base), strtab, symtab);
+        reinterpret_cast<void*>(base), strtab_, symtab_);
 
   // Sanity checks.
   if (relocating_linker && needed_count != 0) {
     DL_ERR("linker cannot have DT_NEEDED dependencies on other libraries");
     return false;
   }
-  if (nbucket == 0) {
-    DL_ERR("empty/missing DT_HASH in \"%s\" (built with --hash-style=gnu?)", name);
+  if (nbucket_ == 0 && gnu_nbucket_ == 0) {
+    DL_ERR("empty/missing DT_HASH/DT_GNU_HASH in \"%s\" "
+        "(new hash type from the future?)", get_soname());
     return false;
   }
-  if (strtab == 0) {
-    DL_ERR("empty/missing DT_STRTAB in \"%s\"", name);
+  if (strtab_ == 0) {
+    DL_ERR("empty/missing DT_STRTAB in \"%s\"", get_soname());
     return false;
   }
-  if (symtab == 0) {
-    DL_ERR("empty/missing DT_SYMTAB in \"%s\"", name);
+  if (symtab_ == 0) {
+    DL_ERR("empty/missing DT_SYMTAB in \"%s\"", get_soname());
     return false;
   }
   return true;
 }
 
-bool soinfo::LinkImage(const android_dlextinfo* extinfo) {
+bool soinfo::link_image(const soinfo_list_t& global_group, const soinfo_list_t& local_group,
+                        const android_dlextinfo* extinfo) {
+
+  local_group_root_ = local_group.front();
+  if (local_group_root_ == nullptr) {
+    local_group_root_ = this;
+  }
+
+  VersionTracker version_tracker;
+
+  if (!version_tracker.init(this)) {
+    return false;
+  }
 
 #if !defined(__LP64__)
   if (has_text_relocations) {
     // Make segments writable to allow text relocations to work properly. We will later call
     // phdr_table_protect_segments() after all of them are applied and all constructors are run.
     DL_WARN("%s has text relocations. This is wasting memory and prevents "
-            "security hardening. Please fix.", name);
+            "security hardening. Please fix.", get_soname());
     if (phdr_table_unprotect_segments(phdr, phnum, load_bias) < 0) {
       DL_ERR("can't unprotect loadable segments for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   }
 #endif
 
-#if defined(USE_RELA)
-  if (rela != nullptr) {
-    DEBUG("[ relocating %s ]", name);
-    if (Relocate(rela, rela_count)) {
+  if (android_relocs_ != nullptr) {
+    // check signature
+    if (android_relocs_size_ > 3 &&
+        android_relocs_[0] == 'A' &&
+        android_relocs_[1] == 'P' &&
+        android_relocs_[2] == 'S' &&
+        android_relocs_[3] == '2') {
+      DEBUG("[ android relocating %s ]", get_soname());
+
+      bool relocated = false;
+      const uint8_t* packed_relocs = android_relocs_ + 4;
+      const size_t packed_relocs_size = android_relocs_size_ - 4;
+
+      relocated = relocate(
+          version_tracker,
+          packed_reloc_iterator<sleb128_decoder>(
+            sleb128_decoder(packed_relocs, packed_relocs_size)),
+          global_group, local_group);
+
+      if (!relocated) {
+        return false;
+      }
+    } else {
+      DL_ERR("bad android relocation header.");
       return false;
     }
   }
-  if (plt_rela != nullptr) {
-    DEBUG("[ relocating %s plt ]", name);
-    if (Relocate(plt_rela, plt_rela_count)) {
+
+#if defined(USE_RELA)
+  if (rela_ != nullptr) {
+    DEBUG("[ relocating %s ]", get_soname());
+    if (!relocate(version_tracker,
+            plain_reloc_iterator(rela_, rela_count_), global_group, local_group)) {
+      return false;
+    }
+  }
+  if (plt_rela_ != nullptr) {
+    DEBUG("[ relocating %s plt ]", get_soname());
+    if (!relocate(version_tracker,
+            plain_reloc_iterator(plt_rela_, plt_rela_count_), global_group, local_group)) {
       return false;
     }
   }
 #else
-  if (rel != nullptr) {
-    DEBUG("[ relocating %s ]", name);
-    if (Relocate(rel, rel_count)) {
+  if (rel_ != nullptr) {
+    DEBUG("[ relocating %s ]", get_soname());
+    if (!relocate(version_tracker,
+            plain_reloc_iterator(rel_, rel_count_), global_group, local_group)) {
       return false;
     }
   }
-  if (plt_rel != nullptr) {
-    DEBUG("[ relocating %s plt ]", name);
-    if (Relocate(plt_rel, plt_rel_count)) {
+  if (plt_rel_ != nullptr) {
+    DEBUG("[ relocating %s plt ]", get_soname());
+    if (!relocate(version_tracker,
+            plain_reloc_iterator(plt_rel_, plt_rel_count_), global_group, local_group)) {
       return false;
     }
   }
 #endif
 
 #if defined(__mips__)
-  if (!mips_relocate_got(this)) {
+  if (!mips_relocate_got(version_tracker, global_group, local_group)) {
     return false;
   }
 #endif
 
-  DEBUG("[ finished linking %s ]", name);
+  DEBUG("[ finished linking %s ]", get_soname());
 
 #if !defined(__LP64__)
   if (has_text_relocations) {
     // All relocations are done, we can protect our segments back to read-only.
     if (phdr_table_protect_segments(phdr, phnum, load_bias) < 0) {
       DL_ERR("can't protect segments for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   }
@@ -2238,7 +2947,7 @@
   /* We can also turn on GNU RELRO protection */
   if (phdr_table_protect_gnu_relro(phdr, phnum, load_bias) < 0) {
     DL_ERR("can't enable GNU RELRO protection for \"%s\": %s",
-           name, strerror(errno));
+           get_soname(), strerror(errno));
     return false;
   }
 
@@ -2247,14 +2956,14 @@
     if (phdr_table_serialize_gnu_relro(phdr, phnum, load_bias,
                                        extinfo->relro_fd) < 0) {
       DL_ERR("failed serializing GNU RELRO section for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   } else if (extinfo && (extinfo->flags & ANDROID_DLEXT_USE_RELRO)) {
     if (phdr_table_map_gnu_relro(phdr, phnum, load_bias,
                                  extinfo->relro_fd) < 0) {
       DL_ERR("failed mapping GNU RELRO section for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   }
@@ -2275,7 +2984,7 @@
     return;
   }
 
-  soinfo* si = soinfo_alloc("[vdso]", nullptr, 0);
+  soinfo* si = soinfo_alloc("[vdso]", nullptr, 0, 0);
 
   si->phdr = reinterpret_cast<ElfW(Phdr)*>(reinterpret_cast<char*>(ehdr_vdso) + ehdr_vdso->e_phoff);
   si->phnum = ehdr_vdso->e_phnum;
@@ -2283,8 +2992,8 @@
   si->size = phdr_table_get_load_size(si->phdr, si->phnum);
   si->load_bias = get_elf_exec_load_bias(ehdr_vdso);
 
-  si->PrelinkImage();
-  si->LinkImage(nullptr);
+  si->prelink_image();
+  si->link_image(g_empty_list, soinfo::soinfo_list_t::make_list(si), nullptr);
 #endif
 }
 
@@ -2296,7 +3005,12 @@
 #else
 #define LINKER_PATH "/system/bin/linker"
 #endif
-static soinfo linker_soinfo_for_gdb(LINKER_PATH, nullptr, 0);
+
+// This is done to avoid calling c-tor prematurely
+// because soinfo c-tor needs memory allocator
+// which might be initialized after global variables.
+static uint8_t linker_soinfo_for_gdb_buf[sizeof(soinfo)] __attribute__((aligned(8)));
+static soinfo* linker_soinfo_for_gdb = nullptr;
 
 /* gdb expects the linker to be in the debug shared object list.
  * Without this, gdb has trouble locating the linker's ".text"
@@ -2306,7 +3020,9 @@
  * be on the soinfo list.
  */
 static void init_linker_info_for_gdb(ElfW(Addr) linker_base) {
-  linker_soinfo_for_gdb.base = linker_base;
+  linker_soinfo_for_gdb = new (linker_soinfo_for_gdb_buf) soinfo(LINKER_PATH, nullptr, 0, 0);
+
+  linker_soinfo_for_gdb->base = linker_base;
 
   /*
    * Set the dynamic field in the link map otherwise gdb will complain with
@@ -2317,10 +3033,12 @@
   ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(linker_base);
   ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr)*>(linker_base + elf_hdr->e_phoff);
   phdr_table_get_dynamic_section(phdr, elf_hdr->e_phnum, linker_base,
-                                 &linker_soinfo_for_gdb.dynamic, nullptr);
-  insert_soinfo_into_debug_map(&linker_soinfo_for_gdb);
+                                 &linker_soinfo_for_gdb->dynamic, nullptr);
+  insert_soinfo_into_debug_map(linker_soinfo_for_gdb);
 }
 
+extern "C" int __system_properties_init(void);
+
 /*
  * This code is called after the linker has linked itself and
  * fixed it's own GOT. It is safe to make references to externs
@@ -2335,6 +3053,9 @@
   // Initialize environment functions, and get to the ELF aux vectors table.
   linker_env_init(args);
 
+  // Initialize system properties
+  __system_properties_init(); // may use 'environ'
+
   // If this is a setuid/setgid program, close the security hole described in
   // ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:23.stdio.asc
   if (get_AT_SECURE()) {
@@ -2358,15 +3079,21 @@
     ldpreload_env = linker_env_get("LD_PRELOAD");
   }
 
+#if !defined(__LP64__)
+  if (personality(PER_LINUX32) == -1) {
+    __libc_fatal("error setting PER_LINUX32 personality: %s", strerror(errno));
+  }
+#endif
+
   INFO("[ android linker & debugger ]");
 
-  soinfo* si = soinfo_alloc(args.argv[0], nullptr, 0);
+  soinfo* si = soinfo_alloc(args.argv[0], nullptr, 0, RTLD_GLOBAL);
   if (si == nullptr) {
     exit(EXIT_FAILURE);
   }
 
   /* bootstrap the link map, the main exe always needs to be first */
-  si->flags |= FLAG_EXE;
+  si->set_main_executable();
   link_map* map = &(si->link_map_head);
 
   map->l_addr = 0;
@@ -2399,7 +3126,6 @@
     }
   }
   si->dynamic = nullptr;
-  si->ref_count = 1;
 
   ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(si->base);
   if (elf_hdr->e_type != ET_DYN) {
@@ -2413,18 +3139,23 @@
 
   somain = si;
 
-  if (!si->PrelinkImage()) {
+  if (!si->prelink_image()) {
     __libc_format_fd(2, "CANNOT LINK EXECUTABLE: %s\n", linker_get_error_buffer());
     exit(EXIT_FAILURE);
   }
 
+  // add somain to global group
+  si->set_dt_flags_1(si->get_dt_flags_1() | DF_1_GLOBAL);
+
   // Load ld_preloads and dependencies.
   StringLinkedList needed_library_name_list;
   size_t needed_libraries_count = 0;
   size_t ld_preloads_count = 0;
-  while (g_ld_preload_names[ld_preloads_count] != nullptr) {
-    needed_library_name_list.push_back(g_ld_preload_names[ld_preloads_count++]);
+
+  for (const auto& ld_preload_name : g_ld_preload_names) {
+    needed_library_name_list.push_back(ld_preload_name.c_str());
     ++needed_libraries_count;
+    ++ld_preloads_count;
   }
 
   for_each_dt_needed(si, [&](const char* name) {
@@ -2433,36 +3164,38 @@
   });
 
   const char* needed_library_names[needed_libraries_count];
-  soinfo* needed_library_si[needed_libraries_count];
 
   memset(needed_library_names, 0, sizeof(needed_library_names));
   needed_library_name_list.copy_to_array(needed_library_names, needed_libraries_count);
 
-  if (needed_libraries_count > 0 && !find_libraries(needed_library_names, needed_libraries_count, needed_library_si, g_ld_preloads, ld_preloads_count, 0, nullptr)) {
-    __libc_format_fd(2, "CANNOT LINK EXECUTABLE DEPENDENCIES: %s\n", linker_get_error_buffer());
-    exit(EXIT_FAILURE);
-  }
-
-  for (size_t i = 0; i<needed_libraries_count; ++i) {
-    si->add_child(needed_library_si[i]);
-  }
-
-  if (!si->LinkImage(nullptr)) {
+  if (needed_libraries_count > 0 &&
+      !find_libraries(si, needed_library_names, needed_libraries_count, nullptr,
+          &g_ld_preloads, ld_preloads_count, RTLD_GLOBAL, nullptr)) {
     __libc_format_fd(2, "CANNOT LINK EXECUTABLE: %s\n", linker_get_error_buffer());
     exit(EXIT_FAILURE);
+  } else if (needed_libraries_count == 0) {
+    if (!si->link_image(g_empty_list, soinfo::soinfo_list_t::make_list(si), nullptr)) {
+      __libc_format_fd(2, "CANNOT LINK EXECUTABLE: %s\n", linker_get_error_buffer());
+      exit(EXIT_FAILURE);
+    }
+    si->increment_ref_count();
   }
 
   add_vdso(args);
 
-  si->CallPreInitConstructors();
+  {
+    ProtectedDataGuard guard;
 
-  /* After the PrelinkImage, the si->load_bias is initialized.
-   * For so lib, the map->l_addr will be updated in notify_gdb_of_load.
-   * We need to update this value for so exe here. So Unwind_Backtrace
-   * for some arch like x86 could work correctly within so exe.
-   */
-  map->l_addr = si->load_bias;
-  si->CallConstructors();
+    si->call_pre_init_constructors();
+
+    /* After the prelink_image, the si->load_bias is initialized.
+     * For so lib, the map->l_addr will be updated in notify_gdb_of_load.
+     * We need to update this value for so exe here. So Unwind_Backtrace
+     * for some arch like x86 could work correctly within so exe.
+     */
+    map->l_addr = si->load_bias;
+    si->call_constructors();
+  }
 
 #if TIMING
   gettimeofday(&t1, nullptr);
@@ -2505,7 +3238,7 @@
   fflush(stdout);
 #endif
 
-  TRACE("[ Ready to execute '%s' @ %p ]", si->name, reinterpret_cast<void*>(si->entry));
+  TRACE("[ Ready to execute '%s' @ %p ]", si->get_soname(), reinterpret_cast<void*>(si->entry));
   return si->entry;
 }
 
@@ -2551,7 +3284,7 @@
   ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(linker_addr);
   ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr)*>(linker_addr + elf_hdr->e_phoff);
 
-  soinfo linker_so("[dynamic linker]", nullptr, 0);
+  soinfo linker_so(nullptr, nullptr, 0, 0);
 
   // If the linker is not acting as PT_INTERP entry_point is equal to
   // _start. Which means that the linker is running as an executable and
@@ -2569,9 +3302,15 @@
   linker_so.dynamic = nullptr;
   linker_so.phdr = phdr;
   linker_so.phnum = elf_hdr->e_phnum;
-  linker_so.flags |= FLAG_LINKER;
+  linker_so.set_linker_flag();
 
-  if (!(linker_so.PrelinkImage() && linker_so.LinkImage(nullptr))) {
+  // This might not be obvious... The reasons why we pass g_empty_list
+  // in place of local_group here are (1) we do not really need it, because
+  // linker is built with DT_SYMBOLIC and therefore relocates its symbols against
+  // itself without having to look into local_group and (2) allocators
+  // are not yet initialized, and therefore we cannot use linked_list.push_*
+  // functions at this point.
+  if (!(linker_so.prelink_image() && linker_so.link_image(g_empty_list, g_empty_list, nullptr))) {
     // It would be nice to print an error message, but if the linker
     // can't link itself, there's no guarantee that we'll be able to
     // call write() (because it involves a GOT reference). We may as
@@ -2586,7 +3325,7 @@
   __libc_init_tls(args);
 
   // Initialize the linker's own global variables
-  linker_so.CallConstructors();
+  linker_so.call_constructors();
 
   // Initialize static variables. Note that in order to
   // get correct libdl_info we need to call constructors
@@ -2599,7 +3338,7 @@
   args.abort_message_ptr = &g_abort_message;
   ElfW(Addr) start_address = __linker_init_post_relocation(args, linker_addr);
 
-  protect_data(PROT_READ);
+  INFO("[ jumping to _start ]");
 
   // Return the address that the calling assembly stub should jump to.
   return start_address;
diff --git a/linker/linker.h b/linker/linker.h
index fa38c7f..dc8c6e0 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -39,6 +39,9 @@
 #include "private/libc_logging.h"
 #include "linked_list.h"
 
+#include <string>
+#include <vector>
+
 #define DL_ERR(fmt, x...) \
     do { \
       __libc_format_buffer(linker_get_error_buffer(), linker_get_error_buffer_size(), fmt, ##x); \
@@ -87,11 +90,16 @@
 #define FLAG_LINKED     0x00000001
 #define FLAG_EXE        0x00000004 // The main executable
 #define FLAG_LINKER     0x00000010 // The linker itself
+#define FLAG_GNU_HASH   0x00000040 // uses gnu hash
 #define FLAG_NEW_SOINFO 0x40000000 // new soinfo format
 
-#define SOINFO_VERSION 0
+#define SUPPORTED_DT_FLAGS_1 (DF_1_NOW | DF_1_GLOBAL | DF_1_NODELETE)
 
+#define SOINFO_VERSION 2
+
+#if defined(__arm__)
 #define SOINFO_NAME_LEN 128
+#endif
 
 typedef void (*linker_function_t)();
 
@@ -103,91 +111,149 @@
 struct soinfo;
 
 class SoinfoListAllocator {
-public:
+ public:
   static LinkedListEntry<soinfo>* alloc();
   static void free(LinkedListEntry<soinfo>* entry);
-private:
+
+ private:
   // unconstructable
   DISALLOW_IMPLICIT_CONSTRUCTORS(SoinfoListAllocator);
 };
 
+class SymbolName {
+ public:
+  explicit SymbolName(const char* name)
+      : name_(name), has_elf_hash_(false), has_gnu_hash_(false),
+        elf_hash_(0), gnu_hash_(0) { }
+
+  const char* get_name() {
+    return name_;
+  }
+
+  uint32_t elf_hash();
+  uint32_t gnu_hash();
+
+ private:
+  const char* name_;
+  bool has_elf_hash_;
+  bool has_gnu_hash_;
+  uint32_t elf_hash_;
+  uint32_t gnu_hash_;
+
+  DISALLOW_IMPLICIT_CONSTRUCTORS(SymbolName);
+};
+
+struct version_info {
+  version_info() : elf_hash(0), name(nullptr), target_si(nullptr) {}
+
+  uint32_t elf_hash;
+  const char* name;
+  const soinfo* target_si;
+};
+
+// Class used construct version dependency graph.
+class VersionTracker {
+ public:
+  VersionTracker() = default;
+  bool init(const soinfo* si_from);
+
+  const version_info* get_version_info(ElfW(Versym) source_symver) const;
+ private:
+  bool init_verneed(const soinfo* si_from);
+  bool init_verdef(const soinfo* si_from);
+  void add_version_info(size_t source_index, ElfW(Word) elf_hash,
+      const char* ver_name, const soinfo* target_si);
+
+  std::vector<version_info> version_infos;
+
+  DISALLOW_COPY_AND_ASSIGN(VersionTracker);
+};
+
 struct soinfo {
  public:
   typedef LinkedList<soinfo, SoinfoListAllocator> soinfo_list_t;
+#if defined(__arm__)
+ private:
+  char old_name_[SOINFO_NAME_LEN];
+#endif
  public:
-  char name[SOINFO_NAME_LEN];
   const ElfW(Phdr)* phdr;
   size_t phnum;
   ElfW(Addr) entry;
   ElfW(Addr) base;
   size_t size;
 
-#ifndef __LP64__
+#if defined(__arm__)
   uint32_t unused1;  // DO NOT USE, maintained for compatibility.
 #endif
 
   ElfW(Dyn)* dynamic;
 
-#ifndef __LP64__
+#if defined(__arm__)
   uint32_t unused2; // DO NOT USE, maintained for compatibility
   uint32_t unused3; // DO NOT USE, maintained for compatibility
 #endif
 
   soinfo* next;
-  unsigned flags;
-
  private:
-  const char* strtab;
- public:
-  ElfW(Sym)* symtab;
+  uint32_t flags_;
 
-  size_t nbucket;
-  size_t nchain;
-  unsigned* bucket;
-  unsigned* chain;
+  const char* strtab_;
+  ElfW(Sym)* symtab_;
+
+  size_t nbucket_;
+  size_t nchain_;
+  uint32_t* bucket_;
+  uint32_t* chain_;
 
 #if defined(__mips__) || !defined(__LP64__)
   // This is only used by mips and mips64, but needs to be here for
   // all 32-bit architectures to preserve binary compatibility.
-  ElfW(Addr)** plt_got;
+  ElfW(Addr)** plt_got_;
 #endif
 
 #if defined(USE_RELA)
-  ElfW(Rela)* plt_rela;
-  size_t plt_rela_count;
+  ElfW(Rela)* plt_rela_;
+  size_t plt_rela_count_;
 
-  ElfW(Rela)* rela;
-  size_t rela_count;
+  ElfW(Rela)* rela_;
+  size_t rela_count_;
 #else
-  ElfW(Rel)* plt_rel;
-  size_t plt_rel_count;
+  ElfW(Rel)* plt_rel_;
+  size_t plt_rel_count_;
 
-  ElfW(Rel)* rel;
-  size_t rel_count;
+  ElfW(Rel)* rel_;
+  size_t rel_count_;
 #endif
 
-  linker_function_t* preinit_array;
-  size_t preinit_array_count;
+  linker_function_t* preinit_array_;
+  size_t preinit_array_count_;
 
-  linker_function_t* init_array;
-  size_t init_array_count;
-  linker_function_t* fini_array;
-  size_t fini_array_count;
+  linker_function_t* init_array_;
+  size_t init_array_count_;
+  linker_function_t* fini_array_;
+  size_t fini_array_count_;
 
-  linker_function_t init_func;
-  linker_function_t fini_func;
+  linker_function_t init_func_;
+  linker_function_t fini_func_;
 
 #if defined(__arm__)
+ public:
   // ARM EABI section used for stack unwinding.
-  unsigned* ARM_exidx;
+  uint32_t* ARM_exidx;
   size_t ARM_exidx_count;
+ private:
 #elif defined(__mips__)
-  unsigned mips_symtabno;
-  unsigned mips_local_gotno;
-  unsigned mips_gotsym;
-#endif
+  uint32_t mips_symtabno_;
+  uint32_t mips_local_gotno_;
+  uint32_t mips_gotsym_;
+  bool mips_relocate_got(const VersionTracker& version_tracker,
+                         const soinfo_list_t& global_group,
+                         const soinfo_list_t& local_group);
 
-  size_t ref_count;
+#endif
+  size_t ref_count_;
+ public:
   link_map link_map_head;
 
   bool constructors_called;
@@ -201,73 +267,160 @@
 #endif
   bool has_DT_SYMBOLIC;
 
-  soinfo(const char* name, const struct stat* file_stat, off64_t file_offset);
+ public:
+  soinfo(const char* name, const struct stat* file_stat, off64_t file_offset, int rtld_flags);
 
-  void CallConstructors();
-  void CallDestructors();
-  void CallPreInitConstructors();
-  bool PrelinkImage();
-  bool LinkImage(const android_dlextinfo* extinfo);
+  void call_constructors();
+  void call_destructors();
+  void call_pre_init_constructors();
+  bool prelink_image();
+  bool link_image(const soinfo_list_t& global_group, const soinfo_list_t& local_group,
+                  const android_dlextinfo* extinfo);
 
   void add_child(soinfo* child);
   void remove_all_links();
 
-  ino_t get_st_ino();
-  dev_t get_st_dev();
-  off64_t get_file_offset();
+  ino_t get_st_ino() const;
+  dev_t get_st_dev() const;
+  off64_t get_file_offset() const;
+
+  uint32_t get_rtld_flags() const;
+  uint32_t get_dt_flags_1() const;
+  void set_dt_flags_1(uint32_t dt_flags_1);
 
   soinfo_list_t& get_children();
+  const soinfo_list_t& get_children() const;
+
   soinfo_list_t& get_parents();
 
-  ElfW(Addr) resolve_symbol_address(ElfW(Sym)* s);
+  bool find_symbol_by_name(SymbolName& symbol_name,
+                           const version_info* vi,
+                           const ElfW(Sym)** symbol) const;
+
+  ElfW(Sym)* find_symbol_by_address(const void* addr);
+  ElfW(Addr) resolve_symbol_address(const ElfW(Sym)* s) const;
 
   const char* get_string(ElfW(Word) index) const;
+  bool can_unload() const;
+  bool is_gnu_hash() const;
 
-  bool inline has_min_version(uint32_t min_version) const {
-    return (flags & FLAG_NEW_SOINFO) != 0 && version >= min_version;
-  }
- private:
-  void CallArray(const char* array_name, linker_function_t* functions, size_t count, bool reverse);
-  void CallFunction(const char* function_name, linker_function_t function);
-#if defined(USE_RELA)
-  int Relocate(ElfW(Rela)* rela, unsigned count);
+  bool inline has_min_version(uint32_t min_version __unused) const {
+#if defined(__arm__)
+    return (flags_ & FLAG_NEW_SOINFO) != 0 && version_ >= min_version;
 #else
-  int Relocate(ElfW(Rel)* rel, unsigned count);
+    return true;
 #endif
+  }
+
+  bool is_linked() const;
+  bool is_main_executable() const;
+
+  void set_linked();
+  void set_linker_flag();
+  void set_main_executable();
+
+  void increment_ref_count();
+  size_t decrement_ref_count();
+
+  soinfo* get_local_group_root() const;
+
+  const char* get_soname() const;
+  const char* get_realpath() const;
+  const ElfW(Versym)* get_versym(size_t n) const;
+  ElfW(Addr) get_verneed_ptr() const;
+  size_t get_verneed_cnt() const;
+  ElfW(Addr) get_verdef_ptr() const;
+  size_t get_verdef_cnt() const;
+
+  bool find_verdef_version_index(const version_info* vi, ElfW(Versym)* versym) const;
+
+ private:
+  bool elf_lookup(SymbolName& symbol_name, const version_info* vi, uint32_t* symbol_index) const;
+  ElfW(Sym)* elf_addr_lookup(const void* addr);
+  bool gnu_lookup(SymbolName& symbol_name, const version_info* vi, uint32_t* symbol_index) const;
+  ElfW(Sym)* gnu_addr_lookup(const void* addr);
+
+  bool lookup_version_info(const VersionTracker& version_tracker, ElfW(Word) sym,
+                           const char* sym_name, const version_info** vi);
+
+  void call_array(const char* array_name, linker_function_t* functions, size_t count, bool reverse);
+  void call_function(const char* function_name, linker_function_t function);
+  template<typename ElfRelIteratorT>
+  bool relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& rel_iterator,
+                const soinfo_list_t& global_group, const soinfo_list_t& local_group);
 
  private:
   // This part of the structure is only available
   // when FLAG_NEW_SOINFO is set in this->flags.
-  uint32_t version;
+  uint32_t version_;
 
   // version >= 0
-  dev_t st_dev;
-  ino_t st_ino;
+  dev_t st_dev_;
+  ino_t st_ino_;
 
   // dependency graph
-  soinfo_list_t children;
-  soinfo_list_t parents;
+  soinfo_list_t children_;
+  soinfo_list_t parents_;
 
   // version >= 1
-  off64_t file_offset;
-  int rtld_flags;
-  size_t strtab_size;
+  off64_t file_offset_;
+  uint32_t rtld_flags_;
+  uint32_t dt_flags_1_;
+  size_t strtab_size_;
+
+  // version >= 2
+
+  size_t gnu_nbucket_;
+  uint32_t* gnu_bucket_;
+  uint32_t* gnu_chain_;
+  uint32_t gnu_maskwords_;
+  uint32_t gnu_shift2_;
+  ElfW(Addr)* gnu_bloom_filter_;
+
+  soinfo* local_group_root_;
+
+  uint8_t* android_relocs_;
+  size_t android_relocs_size_;
+
+  const char* soname_;
+  std::string realpath_;
+
+  const ElfW(Versym)* versym_;
+
+  ElfW(Addr) verdef_ptr_;
+  size_t verdef_cnt_;
+
+  ElfW(Addr) verneed_ptr_;
+  size_t verneed_cnt_;
 
   friend soinfo* get_libdl_info();
 };
 
-extern soinfo* get_libdl_info();
+bool soinfo_do_lookup(soinfo* si_from, const char* name, const version_info* vi,
+                      soinfo** si_found_in, const soinfo::soinfo_list_t& global_group,
+                      const soinfo::soinfo_list_t& local_group, const ElfW(Sym)** symbol);
+
+enum RelocationKind {
+  kRelocAbsolute = 0,
+  kRelocRelative,
+  kRelocCopy,
+  kRelocSymbol,
+  kRelocMax
+};
+
+void count_relocation(RelocationKind kind);
+
+soinfo* get_libdl_info();
 
 void do_android_get_LD_LIBRARY_PATH(char*, size_t);
 void do_android_update_LD_LIBRARY_PATH(const char* ld_library_path);
 soinfo* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo);
 void do_dlclose(soinfo* si);
 
-ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start);
+const ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* caller, void* handle);
 soinfo* find_containing_library(const void* addr);
 
-ElfW(Sym)* dladdr_find_symbol(soinfo* si, const void* addr);
-ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name);
+const ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name);
 
 void debuggerd_init();
 extern "C" abort_msg_t* g_abort_message;
diff --git a/linker/linker_allocator.cpp b/linker/linker_allocator.cpp
index 92220e8..1b16cf1 100644
--- a/linker/linker_allocator.cpp
+++ b/linker/linker_allocator.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * 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.
@@ -13,120 +13,334 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 #include "linker_allocator.h"
-#include <inttypes.h>
+#include "linker.h"
+
+#include <algorithm>
+#include <vector>
+
+#include <stdlib.h>
 #include <sys/mman.h>
 #include <unistd.h>
 
 #include "private/bionic_prctl.h"
 
-struct LinkerAllocatorPage {
-  LinkerAllocatorPage* next;
-  uint8_t bytes[PAGE_SIZE-sizeof(LinkerAllocatorPage*)];
-};
+//
+// LinkerMemeoryAllocator is general purpose allocator
+// designed to provide the same functionality as the malloc/free/realloc
+// libc functions.
+//
+// On alloc:
+// If size is >= 1k allocator proxies malloc call directly to mmap
+// If size < 1k allocator uses SmallObjectAllocator for the size
+// rounded up to the nearest power of two.
+//
+// On free:
+//
+// For a pointer allocated using proxy-to-mmap allocator unmaps
+// the memory.
+//
+// For a pointer allocated using SmallObjectAllocator it adds
+// the block to free_blocks_list_. If the number of free pages reaches 2,
+// SmallObjectAllocator munmaps one of the pages keeping the other one
+// in reserve.
 
-struct FreeBlockInfo {
-  void* next_block;
-  size_t num_free_blocks;
-};
+static const char kSignature[4] = {'L', 'M', 'A', 1};
 
-LinkerBlockAllocator::LinkerBlockAllocator(size_t block_size)
-  : block_size_(block_size < sizeof(FreeBlockInfo) ? sizeof(FreeBlockInfo) : block_size),
-    page_list_(nullptr),
-    free_block_list_(nullptr)
-{}
+static const size_t kSmallObjectMaxSize = 1 << kSmallObjectMaxSizeLog2;
 
-void* LinkerBlockAllocator::alloc() {
-  if (free_block_list_ == nullptr) {
-    create_new_page();
-  }
+// This type is used for large allocations (with size >1k)
+static const uint32_t kLargeObject = 111;
 
-  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(free_block_list_);
-  if (block_info->num_free_blocks > 1) {
-    FreeBlockInfo* next_block_info = reinterpret_cast<FreeBlockInfo*>(
-      reinterpret_cast<char*>(free_block_list_) + block_size_);
-    next_block_info->next_block = block_info->next_block;
-    next_block_info->num_free_blocks = block_info->num_free_blocks - 1;
-    free_block_list_ = next_block_info;
-  } else {
-    free_block_list_ = block_info->next_block;
-  }
-
-  memset(block_info, 0, block_size_);
-
-  return block_info;
+bool operator<(const small_object_page_record& one, const small_object_page_record& two) {
+  return one.page_addr < two.page_addr;
 }
 
-void LinkerBlockAllocator::free(void* block) {
-  if (block == nullptr) {
+static inline uint16_t log2(size_t number) {
+  uint16_t result = 0;
+  number--;
+
+  while (number != 0) {
+    result++;
+    number >>= 1;
+  }
+
+  return result;
+}
+
+LinkerSmallObjectAllocator::LinkerSmallObjectAllocator()
+    : type_(0), name_(nullptr), block_size_(0), free_pages_cnt_(0), free_blocks_list_(nullptr) {}
+
+void* LinkerSmallObjectAllocator::alloc() {
+  if (free_blocks_list_ == nullptr) {
+    alloc_page();
+  }
+
+  small_object_block_record* block_record = free_blocks_list_;
+  if (block_record->free_blocks_cnt > 1) {
+    small_object_block_record* next_free = reinterpret_cast<small_object_block_record*>(
+        reinterpret_cast<uint8_t*>(block_record) + block_size_);
+    next_free->next = block_record->next;
+    next_free->free_blocks_cnt = block_record->free_blocks_cnt - 1;
+    free_blocks_list_ = next_free;
+  } else {
+    free_blocks_list_ = block_record->next;
+  }
+
+  // bookkeeping...
+  auto page_record = find_page_record(block_record);
+
+  if (page_record->allocated_blocks_cnt == 0) {
+    free_pages_cnt_--;
+  }
+
+  page_record->free_blocks_cnt--;
+  page_record->allocated_blocks_cnt++;
+
+  memset(block_record, 0, block_size_);
+
+  return block_record;
+}
+
+void LinkerSmallObjectAllocator::free_page(linker_vector_t::iterator page_record) {
+  void* page_start = reinterpret_cast<void*>(page_record->page_addr);
+  void* page_end = reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(page_start) + PAGE_SIZE);
+
+  while (free_blocks_list_ != nullptr &&
+      free_blocks_list_ > page_start &&
+      free_blocks_list_ < page_end) {
+    free_blocks_list_ = free_blocks_list_->next;
+  }
+
+  small_object_block_record* current = free_blocks_list_;
+
+  while (current != nullptr) {
+    while (current->next > page_start && current->next < page_end) {
+      current->next = current->next->next;
+    }
+
+    current = current->next;
+  }
+
+  munmap(page_start, PAGE_SIZE);
+  page_records_.erase(page_record);
+  free_pages_cnt_--;
+}
+
+void LinkerSmallObjectAllocator::free(void* ptr) {
+  auto page_record = find_page_record(ptr);
+
+  ssize_t offset = reinterpret_cast<uintptr_t>(ptr) - sizeof(page_info);
+
+  if (offset % block_size_ != 0) {
+    __libc_fatal("invalid pointer: %p (block_size=%zd)", ptr, block_size_);
+  }
+
+  memset(ptr, 0, block_size_);
+  small_object_block_record* block_record = reinterpret_cast<small_object_block_record*>(ptr);
+
+  block_record->next = free_blocks_list_;
+  block_record->free_blocks_cnt = 1;
+
+  free_blocks_list_ = block_record;
+
+  page_record->free_blocks_cnt++;
+  page_record->allocated_blocks_cnt--;
+
+  if (page_record->allocated_blocks_cnt == 0) {
+    if (free_pages_cnt_++ > 1) {
+      // if we already have a free page - unmap this one.
+      free_page(page_record);
+    }
+  }
+}
+
+void LinkerSmallObjectAllocator::init(uint32_t type, size_t block_size, const char* name) {
+  type_ = type;
+  block_size_ = block_size;
+  name_ = name;
+}
+
+linker_vector_t::iterator LinkerSmallObjectAllocator::find_page_record(void* ptr) {
+  void* addr = reinterpret_cast<void*>(PAGE_START(reinterpret_cast<uintptr_t>(ptr)));
+  small_object_page_record boundary;
+  boundary.page_addr = addr;
+  linker_vector_t::iterator it = std::lower_bound(
+      page_records_.begin(), page_records_.end(), boundary);
+
+  if (it == page_records_.end() || it->page_addr != addr) {
+    // not found...
+    __libc_fatal("page record for %p was not found (block_size=%zd)", ptr, block_size_);
+  }
+
+  return it;
+}
+
+void LinkerSmallObjectAllocator::create_page_record(void* page_addr, size_t free_blocks_cnt) {
+  small_object_page_record record;
+  record.page_addr = page_addr;
+  record.free_blocks_cnt = free_blocks_cnt;
+  record.allocated_blocks_cnt = 0;
+
+  linker_vector_t::iterator it = std::lower_bound(
+      page_records_.begin(), page_records_.end(), record);
+  page_records_.insert(it, record);
+}
+
+void LinkerSmallObjectAllocator::alloc_page() {
+  void* map_ptr = mmap(nullptr, PAGE_SIZE,
+      PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
+  if (map_ptr == MAP_FAILED) {
+    __libc_fatal("mmap failed");
+  }
+
+  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map_ptr, PAGE_SIZE, name_);
+
+  memset(map_ptr, 0, PAGE_SIZE);
+
+  page_info* info = reinterpret_cast<page_info*>(map_ptr);
+  memcpy(info->signature, kSignature, sizeof(kSignature));
+  info->type = type_;
+  info->allocator_addr = this;
+
+  size_t free_blocks_cnt = (PAGE_SIZE - sizeof(page_info))/block_size_;
+
+  create_page_record(map_ptr, free_blocks_cnt);
+
+  small_object_block_record* first_block = reinterpret_cast<small_object_block_record*>(info + 1);
+
+  first_block->next = free_blocks_list_;
+  first_block->free_blocks_cnt = free_blocks_cnt;
+
+  free_blocks_list_ = first_block;
+}
+
+
+LinkerMemoryAllocator::LinkerMemoryAllocator() {
+  static const char* allocator_names[kSmallObjectAllocatorsCount] = {
+    "linker_alloc_16", // 2^4
+    "linker_alloc_32", // 2^5
+    "linker_alloc_64", // and so on...
+    "linker_alloc_128",
+    "linker_alloc_256",
+    "linker_alloc_512",
+    "linker_alloc_1024", // 2^10
+  };
+
+  for (size_t i = 0; i < kSmallObjectAllocatorsCount; ++i) {
+    uint32_t type = i + kSmallObjectMinSizeLog2;
+    allocators_[i].init(type, 1 << type, allocator_names[i]);
+  }
+}
+
+void* LinkerMemoryAllocator::alloc_mmap(size_t size) {
+  size_t allocated_size = PAGE_END(size + sizeof(page_info));
+  void* map_ptr = mmap(nullptr, allocated_size,
+      PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
+
+  if (map_ptr == MAP_FAILED) {
+    __libc_fatal("mmap failed");
+  }
+
+  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map_ptr, allocated_size, "linker_alloc_lob");
+
+  memset(map_ptr, 0, allocated_size);
+
+  page_info* info = reinterpret_cast<page_info*>(map_ptr);
+  memcpy(info->signature, kSignature, sizeof(kSignature));
+  info->type = kLargeObject;
+  info->allocated_size = allocated_size;
+
+  return info + 1;
+}
+
+void* LinkerMemoryAllocator::alloc(size_t size) {
+  // treat alloc(0) as alloc(1)
+  if (size == 0) {
+    size = 1;
+  }
+
+  if (size > kSmallObjectMaxSize) {
+    return alloc_mmap(size);
+  }
+
+  uint16_t log2_size = log2(size);
+
+  if (log2_size < kSmallObjectMinSizeLog2) {
+    log2_size = kSmallObjectMinSizeLog2;
+  }
+
+  return get_small_object_allocator(log2_size)->alloc();
+}
+
+page_info* LinkerMemoryAllocator::get_page_info(void* ptr) {
+  page_info* info = reinterpret_cast<page_info*>(PAGE_START(reinterpret_cast<size_t>(ptr)));
+  if (memcmp(info->signature, kSignature, sizeof(kSignature)) != 0) {
+    __libc_fatal("invalid pointer %p (page signature mismatch)", ptr);
+  }
+
+  return info;
+}
+
+void* LinkerMemoryAllocator::realloc(void* ptr, size_t size) {
+  if (ptr == nullptr) {
+    return alloc(size);
+  }
+
+  if (size == 0) {
+    free(ptr);
+    return nullptr;
+  }
+
+  page_info* info = get_page_info(ptr);
+
+  size_t old_size = 0;
+
+  if (info->type == kLargeObject) {
+    old_size = info->allocated_size - sizeof(page_info);
+  } else {
+    LinkerSmallObjectAllocator* allocator = get_small_object_allocator(info->type);
+    if (allocator != info->allocator_addr) {
+      __libc_fatal("invalid pointer %p (page signature mismatch)", ptr);
+    }
+
+    old_size = allocator->get_block_size();
+  }
+
+  if (old_size < size) {
+    void *result = alloc(size);
+    memcpy(result, ptr, old_size);
+    free(ptr);
+    return result;
+  }
+
+  return ptr;
+}
+
+void LinkerMemoryAllocator::free(void* ptr) {
+  if (ptr == nullptr) {
     return;
   }
 
-  LinkerAllocatorPage* page = find_page(block);
+  page_info* info = get_page_info(ptr);
 
-  if (page == nullptr) {
-    abort();
-  }
-
-  ssize_t offset = reinterpret_cast<uint8_t*>(block) - page->bytes;
-
-  if (offset % block_size_ != 0) {
-    abort();
-  }
-
-  memset(block, 0, block_size_);
-
-  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(block);
-
-  block_info->next_block = free_block_list_;
-  block_info->num_free_blocks = 1;
-
-  free_block_list_ = block_info;
-}
-
-void LinkerBlockAllocator::protect_all(int prot) {
-  for (LinkerAllocatorPage* page = page_list_; page != nullptr; page = page->next) {
-    if (mprotect(page, PAGE_SIZE, prot) == -1) {
-      abort();
-    }
-  }
-}
-
-void LinkerBlockAllocator::create_new_page() {
-  LinkerAllocatorPage* page = reinterpret_cast<LinkerAllocatorPage*>(mmap(nullptr, PAGE_SIZE,
-      PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0));
-  if (page == MAP_FAILED) {
-    abort(); // oom
-  }
-
-  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, page, PAGE_SIZE, "linker_alloc");
-
-  memset(page, 0, PAGE_SIZE);
-
-  FreeBlockInfo* first_block = reinterpret_cast<FreeBlockInfo*>(page->bytes);
-  first_block->next_block = free_block_list_;
-  first_block->num_free_blocks = (PAGE_SIZE - sizeof(LinkerAllocatorPage*))/block_size_;
-
-  free_block_list_ = first_block;
-
-  page->next = page_list_;
-  page_list_ = page;
-}
-
-LinkerAllocatorPage* LinkerBlockAllocator::find_page(void* block) {
-  if (block == nullptr) {
-    abort();
-  }
-
-  LinkerAllocatorPage* page = page_list_;
-  while (page != nullptr) {
-    const uint8_t* page_ptr = reinterpret_cast<const uint8_t*>(page);
-    if (block >= (page_ptr + sizeof(page->next)) && block < (page_ptr + PAGE_SIZE)) {
-      return page;
+  if (info->type == kLargeObject) {
+    munmap(info, info->allocated_size);
+  } else {
+    LinkerSmallObjectAllocator* allocator = get_small_object_allocator(info->type);
+    if (allocator != info->allocator_addr) {
+      __libc_fatal("invalid pointer %p (invalid allocator address for the page)", ptr);
     }
 
-    page = page->next;
+    allocator->free(ptr);
+  }
+}
+
+LinkerSmallObjectAllocator* LinkerMemoryAllocator::get_small_object_allocator(uint32_t type) {
+  if (type < kSmallObjectMinSizeLog2 || type > kSmallObjectMaxSizeLog2) {
+    __libc_fatal("invalid type: %u", type);
   }
 
-  abort();
+  return &allocators_[type - kSmallObjectMinSizeLog2];
 }
diff --git a/linker/linker_allocator.h b/linker/linker_allocator.h
index 5d3563f..2adad56 100644
--- a/linker/linker_allocator.h
+++ b/linker/linker_allocator.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * 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.
@@ -18,53 +18,126 @@
 #define __LINKER_ALLOCATOR_H
 
 #include <stdlib.h>
-#include <limits.h>
-#include "private/bionic_macros.h"
+#include <sys/cdefs.h>
+#include <sys/mman.h>
+#include <stddef.h>
+#include <unistd.h>
 
-struct LinkerAllocatorPage;
+#include <vector>
 
-/*
- * This class is a non-template version of the LinkerAllocator
- * It keeps code inside .cpp file by keeping the interface
- * template-free.
- *
- * Please use LinkerAllocator<type> where possible (everywhere).
- */
-class LinkerBlockAllocator {
+#include "private/bionic_prctl.h"
+#include "private/libc_logging.h"
+
+const uint32_t kSmallObjectMaxSizeLog2 = 10;
+const uint32_t kSmallObjectMinSizeLog2 = 4;
+const uint32_t kSmallObjectAllocatorsCount = kSmallObjectMaxSizeLog2 - kSmallObjectMinSizeLog2 + 1;
+
+class LinkerSmallObjectAllocator;
+
+// This structure is placed at the beginning of each addressable page
+// and has all information we need to find the corresponding memory allocator.
+struct page_info {
+  char signature[4];
+  uint32_t type;
+  union {
+    // we use allocated_size for large objects allocator
+    size_t allocated_size;
+    // and allocator_addr for small ones.
+    LinkerSmallObjectAllocator* allocator_addr;
+  };
+};
+
+struct small_object_page_record {
+  void* page_addr;
+  size_t free_blocks_cnt;
+  size_t allocated_blocks_cnt;
+};
+
+// for lower_bound...
+bool operator<(const small_object_page_record& one, const small_object_page_record& two);
+
+struct small_object_block_record {
+  small_object_block_record* next;
+  size_t free_blocks_cnt;
+};
+
+// This is implementation for std::vector allocator
+template <typename T>
+class linker_vector_allocator {
  public:
-  explicit LinkerBlockAllocator(size_t block_size);
+  typedef T value_type;
+  typedef T* pointer;
+  typedef const T* const_pointer;
+  typedef T& reference;
+  typedef const T& const_reference;
+  typedef size_t size_type;
+  typedef ptrdiff_t difference_type;
 
+  T* allocate(size_t n, const T* hint = nullptr) {
+    size_t size = n * sizeof(T);
+    void* ptr = mmap(const_cast<T*>(hint), size,
+        PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
+    if (ptr == MAP_FAILED) {
+      // Spec says we need to throw std::bad_alloc here but because our
+      // code does not support exception handling anyways - we are going to abort.
+      __libc_fatal("mmap failed");
+    }
+
+    prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ptr, size, "linker_alloc_vector");
+
+    return reinterpret_cast<T*>(ptr);
+  }
+
+  void deallocate(T* ptr, size_t n) {
+    munmap(ptr, n * sizeof(T));
+  }
+};
+
+typedef
+    std::vector<small_object_page_record, linker_vector_allocator<small_object_page_record>>
+    linker_vector_t;
+
+
+class LinkerSmallObjectAllocator {
+ public:
+  LinkerSmallObjectAllocator();
+  void init(uint32_t type, size_t block_size, const char* name);
   void* alloc();
-  void free(void* block);
-  void protect_all(int prot);
+  void free(void* ptr);
 
+  size_t get_block_size() const { return block_size_; }
  private:
-  void create_new_page();
-  LinkerAllocatorPage* find_page(void* block);
+  void alloc_page();
+  void free_page(linker_vector_t::iterator page_record);
+  linker_vector_t::iterator find_page_record(void* ptr);
+  void create_page_record(void* page_addr, size_t free_blocks_cnt);
 
+  uint32_t type_;
+  const char* name_;
   size_t block_size_;
-  LinkerAllocatorPage* page_list_;
-  void* free_block_list_;
 
-  DISALLOW_COPY_AND_ASSIGN(LinkerBlockAllocator);
+  size_t free_pages_cnt_;
+  small_object_block_record* free_blocks_list_;
+
+  // sorted vector of page records
+  linker_vector_t page_records_;
 };
 
-/*
- * We can't use malloc(3) in the dynamic linker.
- *
- * A simple allocator for the dynamic linker. An allocator allocates instances
- * of a single fixed-size type. Allocations are backed by page-sized private
- * anonymous mmaps.
- */
-template<typename T>
-class LinkerAllocator {
+class LinkerMemoryAllocator {
  public:
-  LinkerAllocator() : block_allocator_(sizeof(T)) {}
-  T* alloc() { return reinterpret_cast<T*>(block_allocator_.alloc()); }
-  void free(T* t) { block_allocator_.free(t); }
-  void protect_all(int prot) { block_allocator_.protect_all(prot); }
+  LinkerMemoryAllocator();
+  void* alloc(size_t size);
+
+  // Note that this implementation of realloc never shrinks allocation
+  void* realloc(void* ptr, size_t size);
+  void free(void* ptr);
  private:
-  LinkerBlockAllocator block_allocator_;
-  DISALLOW_COPY_AND_ASSIGN(LinkerAllocator);
+  void* alloc_mmap(size_t size);
+  page_info* get_page_info(void* ptr);
+  LinkerSmallObjectAllocator* get_small_object_allocator(uint32_t type);
+
+  LinkerSmallObjectAllocator allocators_[kSmallObjectAllocatorsCount];
 };
-#endif // __LINKER_ALLOCATOR_H
+
+
+#endif  /* __LINKER_ALLOCATOR_H */
diff --git a/linker/linker_block_allocator.cpp b/linker/linker_block_allocator.cpp
new file mode 100644
index 0000000..fc9a75b
--- /dev/null
+++ b/linker/linker_block_allocator.cpp
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include "linker_block_allocator.h"
+#include <inttypes.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+#include "private/bionic_prctl.h"
+
+struct LinkerBlockAllocatorPage {
+  LinkerBlockAllocatorPage* next;
+  uint8_t bytes[PAGE_SIZE-sizeof(LinkerBlockAllocatorPage*)];
+};
+
+struct FreeBlockInfo {
+  void* next_block;
+  size_t num_free_blocks;
+};
+
+LinkerBlockAllocator::LinkerBlockAllocator(size_t block_size)
+  : block_size_(block_size < sizeof(FreeBlockInfo) ? sizeof(FreeBlockInfo) : block_size),
+    page_list_(nullptr),
+    free_block_list_(nullptr)
+{}
+
+void* LinkerBlockAllocator::alloc() {
+  if (free_block_list_ == nullptr) {
+    create_new_page();
+  }
+
+  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(free_block_list_);
+  if (block_info->num_free_blocks > 1) {
+    FreeBlockInfo* next_block_info = reinterpret_cast<FreeBlockInfo*>(
+      reinterpret_cast<char*>(free_block_list_) + block_size_);
+    next_block_info->next_block = block_info->next_block;
+    next_block_info->num_free_blocks = block_info->num_free_blocks - 1;
+    free_block_list_ = next_block_info;
+  } else {
+    free_block_list_ = block_info->next_block;
+  }
+
+  memset(block_info, 0, block_size_);
+
+  return block_info;
+}
+
+void LinkerBlockAllocator::free(void* block) {
+  if (block == nullptr) {
+    return;
+  }
+
+  LinkerBlockAllocatorPage* page = find_page(block);
+
+  if (page == nullptr) {
+    abort();
+  }
+
+  ssize_t offset = reinterpret_cast<uint8_t*>(block) - page->bytes;
+
+  if (offset % block_size_ != 0) {
+    abort();
+  }
+
+  memset(block, 0, block_size_);
+
+  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(block);
+
+  block_info->next_block = free_block_list_;
+  block_info->num_free_blocks = 1;
+
+  free_block_list_ = block_info;
+}
+
+void LinkerBlockAllocator::protect_all(int prot) {
+  for (LinkerBlockAllocatorPage* page = page_list_; page != nullptr; page = page->next) {
+    if (mprotect(page, PAGE_SIZE, prot) == -1) {
+      abort();
+    }
+  }
+}
+
+void LinkerBlockAllocator::create_new_page() {
+  LinkerBlockAllocatorPage* page = reinterpret_cast<LinkerBlockAllocatorPage*>(
+      mmap(nullptr, PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0));
+
+  if (page == MAP_FAILED) {
+    abort(); // oom
+  }
+
+  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, page, PAGE_SIZE, "linker_alloc");
+
+  memset(page, 0, PAGE_SIZE);
+
+  FreeBlockInfo* first_block = reinterpret_cast<FreeBlockInfo*>(page->bytes);
+  first_block->next_block = free_block_list_;
+  first_block->num_free_blocks = (PAGE_SIZE - sizeof(LinkerBlockAllocatorPage*))/block_size_;
+
+  free_block_list_ = first_block;
+
+  page->next = page_list_;
+  page_list_ = page;
+}
+
+LinkerBlockAllocatorPage* LinkerBlockAllocator::find_page(void* block) {
+  if (block == nullptr) {
+    abort();
+  }
+
+  LinkerBlockAllocatorPage* page = page_list_;
+  while (page != nullptr) {
+    const uint8_t* page_ptr = reinterpret_cast<const uint8_t*>(page);
+    if (block >= (page_ptr + sizeof(page->next)) && block < (page_ptr + PAGE_SIZE)) {
+      return page;
+    }
+
+    page = page->next;
+  }
+
+  abort();
+}
diff --git a/linker/linker_block_allocator.h b/linker/linker_block_allocator.h
new file mode 100644
index 0000000..4b9b995
--- /dev/null
+++ b/linker/linker_block_allocator.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#ifndef __LINKER_BLOCK_ALLOCATOR_H
+#define __LINKER_BLOCK_ALLOCATOR_H
+
+#include <stdlib.h>
+#include <limits.h>
+#include "private/bionic_macros.h"
+
+struct LinkerBlockAllocatorPage;
+
+/*
+ * This class is a non-template version of the LinkerTypeAllocator
+ * It keeps code inside .cpp file by keeping the interface
+ * template-free.
+ *
+ * Please use LinkerTypeAllocator<type> where possible (everywhere).
+ */
+class LinkerBlockAllocator {
+ public:
+  explicit LinkerBlockAllocator(size_t block_size);
+
+  void* alloc();
+  void free(void* block);
+  void protect_all(int prot);
+
+ private:
+  void create_new_page();
+  LinkerBlockAllocatorPage* find_page(void* block);
+
+  size_t block_size_;
+  LinkerBlockAllocatorPage* page_list_;
+  void* free_block_list_;
+
+  DISALLOW_COPY_AND_ASSIGN(LinkerBlockAllocator);
+};
+
+/*
+ * A simple allocator for the dynamic linker. An allocator allocates instances
+ * of a single fixed-size type. Allocations are backed by page-sized private
+ * anonymous mmaps.
+ *
+ * The differences between this allocator and LinkerMemoryAllocator are:
+ * 1. This allocator manages space more efficiently. LinkerMemoryAllocator
+ *    operates in power-of-two sized blocks up to 1k, when this implementation
+ *    splits the page to aligned size of structure; For example for structures
+ *    with size 513 this allocator will use 516 (520 for lp64) bytes of data
+ *    where generalized implementation is going to use 1024 sized blocks.
+ *
+ * 2. This allocator does not munmap allocated memory, where LinkerMemoryAllocator does.
+ *
+ * 3. This allocator provides mprotect services to the user, where LinkerMemoryAllocator
+ *    always treats it's memory as READ|WRITE.
+ */
+template<typename T>
+class LinkerTypeAllocator {
+ public:
+  LinkerTypeAllocator() : block_allocator_(sizeof(T)) {}
+  T* alloc() { return reinterpret_cast<T*>(block_allocator_.alloc()); }
+  void free(T* t) { block_allocator_.free(t); }
+  void protect_all(int prot) { block_allocator_.protect_all(prot); }
+ private:
+  LinkerBlockAllocator block_allocator_;
+  DISALLOW_COPY_AND_ASSIGN(LinkerTypeAllocator);
+};
+
+#endif // __LINKER_BLOCK_ALLOCATOR_H
diff --git a/linker/linker_debug.h b/linker/linker_debug.h
index 0c7a784..5ded5ab 100644
--- a/linker/linker_debug.h
+++ b/linker/linker_debug.h
@@ -82,4 +82,23 @@
 
 #define TRACE_TYPE(t, x...)   do { if (DO_TRACE_##t) { TRACE(x); } } while (0)
 
+#if COUNT_PAGES
+extern uint32_t bitmask[];
+#if defined(__LP64__)
+#define MARK(offset) \
+    do { \
+      if ((((offset) >> 12) >> 5) < 4096) \
+          bitmask[((offset) >> 12) >> 5] |= (1 << (((offset) >> 12) & 31)); \
+    } while (0)
+#else
+#define MARK(offset) \
+    do { \
+      bitmask[((offset) >> 12) >> 3] |= (1 << (((offset) >> 12) & 7)); \
+    } while (0)
+#endif
+#else
+#define MARK(x) do {} while (0)
+
+#endif
+
 #endif /* _LINKER_DEBUG_H_ */
diff --git a/linker/linker_environ.cpp b/linker/linker_environ.cpp
index daee56f..3c466a2 100644
--- a/linker/linker_environ.cpp
+++ b/linker/linker_environ.cpp
@@ -31,11 +31,11 @@
 #include <linux/auxvec.h>
 #include <stddef.h>
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 
 #include "private/KernelArgumentBlock.h"
 
-static char** _envp;
 static bool _AT_SECURE_value = true;
 
 bool get_AT_SECURE() {
@@ -114,6 +114,7 @@
       "GCONV_PATH",
       "GETCONF_DIR",
       "HOSTALIASES",
+      "JE_MALLOC_CONF",
       "LD_AOUT_LIBRARY_PATH",
       "LD_AOUT_PRELOAD",
       "LD_AUDIT",
@@ -129,6 +130,7 @@
       "LOCALDOMAIN",
       "LOCPATH",
       "MALLOC_CHECK_",
+      "MALLOC_CONF",
       "MALLOC_TRACE",
       "NIS_PATH",
       "NLSPATH",
@@ -147,8 +149,8 @@
 }
 
 static void __sanitize_environment_variables() {
-  char** src  = _envp;
-  char** dst = _envp;
+  char** src  = environ;
+  char** dst = environ;
   for (; src[0] != nullptr; ++src) {
     if (!__is_valid_environment_variable(src[0])) {
       continue;
@@ -165,7 +167,7 @@
 
 void linker_env_init(KernelArgumentBlock& args) {
   // Store environment pointer - can't be null.
-  _envp = args.envp;
+  environ = args.envp;
 
   __init_AT_SECURE(args);
   __sanitize_environment_variables();
@@ -176,7 +178,7 @@
     return nullptr;
   }
 
-  for (char** p = _envp; p[0] != nullptr; ++p) {
+  for (char** p = environ; p[0] != nullptr; ++p) {
     const char* val = env_match(p[0], name);
     if (val != nullptr) {
       if (val[0] == '\0') {
diff --git a/linker/linker_executable.mk b/linker/linker_executable.mk
deleted file mode 100644
index a596a48..0000000
--- a/linker/linker_executable.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-
-#
-# Instead of including $(BUILD_EXECUTABLE), we execute the steps to create an executable by
-# hand, as we want to insert an extra objcopy step that is not supported by the build
-# system, and is probably specific the linker only, so there's no need to modify the build
-# system for the purpose.
-#
-
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX)
-
-# Clang calls /usr/bin/ld: unrecognized option '--icf=safe', http://b/17403674.
-LOCAL_CLANG := false
-include $(BUILD_SYSTEM)/dynamic_binary.mk
-
-# See build/core/executable_internal.mk
-$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LD_DIRS)
-$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS)
-$(linked_module): PRIVATE_TARGET_FDO_LIB := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_LIB)
-$(linked_module): PRIVATE_TARGET_LIBGCC := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBGCC)
-$(linked_module): PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_DYNAMIC_O)
-$(linked_module): PRIVATE_TARGET_CRTBEGIN_STATIC_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_STATIC_O)
-$(linked_module): PRIVATE_TARGET_CRTEND_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_O)
-$(linked_module): PRIVATE_TARGET_OBJCOPY := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJCOPY)
-$(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects) $(all_libraries) $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_O)
-	$(transform-o-to-static-executable)
-	@echo "target PrefixSymbols: $(PRIVATE_MODULE) ($@)"
-	$(hide) $(PRIVATE_TARGET_OBJCOPY) --prefix-symbols=__dl_ $@
diff --git a/linker/linker_libc_support.c b/linker/linker_libc_support.c
index 17db6d4..4c49384 100644
--- a/linker/linker_libc_support.c
+++ b/linker/linker_libc_support.c
@@ -15,3 +15,7 @@
  */
 
 #include "../libc/arch-common/bionic/__dso_handle.h"
+
+int atexit(void (*function)(void) __attribute__((__unused__))) {
+  return -1;
+}
diff --git a/linker/linker_memory.cpp b/linker/linker_memory.cpp
new file mode 100644
index 0000000..1892d02
--- /dev/null
+++ b/linker/linker_memory.cpp
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+#include "linker_allocator.h"
+
+#include <stdlib.h>
+
+static LinkerMemoryAllocator g_linker_allocator;
+
+void* malloc(size_t byte_count) {
+  return g_linker_allocator.alloc(byte_count);
+}
+
+void* calloc(size_t item_count, size_t item_size) {
+  return g_linker_allocator.alloc(item_count*item_size);
+}
+
+void* realloc(void* p, size_t byte_count) {
+  return g_linker_allocator.realloc(p, byte_count);
+}
+
+void free(void* ptr) {
+  g_linker_allocator.free(ptr);
+}
+
diff --git a/linker/linker_mips.cpp b/linker/linker_mips.cpp
new file mode 100644
index 0000000..7436180
--- /dev/null
+++ b/linker/linker_mips.cpp
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 "linker.h"
+#include "linker_debug.h"
+#include "linker_relocs.h"
+#include "linker_reloc_iterators.h"
+#include "linker_sleb128.h"
+
+template bool soinfo::relocate<plain_reloc_iterator>(const VersionTracker& version_tracker,
+                                                     plain_reloc_iterator&& rel_iterator,
+                                                     const soinfo_list_t& global_group,
+                                                     const soinfo_list_t& local_group);
+
+template bool soinfo::relocate<packed_reloc_iterator<sleb128_decoder>>(
+    const VersionTracker& version_tracker,
+    packed_reloc_iterator<sleb128_decoder>&& rel_iterator,
+    const soinfo_list_t& global_group,
+    const soinfo_list_t& local_group);
+
+template <typename ElfRelIteratorT>
+bool soinfo::relocate(const VersionTracker& version_tracker,
+                      ElfRelIteratorT&& rel_iterator,
+                      const soinfo_list_t& global_group,
+                      const soinfo_list_t& local_group) {
+  for (size_t idx = 0; rel_iterator.has_next(); ++idx) {
+    const auto rel = rel_iterator.next();
+
+    if (rel == nullptr) {
+      return false;
+    }
+
+    ElfW(Word) type = ELFW(R_TYPE)(rel->r_info);
+    ElfW(Word) sym = ELFW(R_SYM)(rel->r_info);
+
+    ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rel->r_offset + load_bias);
+    ElfW(Addr) sym_addr = 0;
+    const char* sym_name = nullptr;
+
+    DEBUG("Processing '%s' relocation at index %zd", get_soname(), idx);
+    if (type == R_GENERIC_NONE) {
+      continue;
+    }
+
+    const ElfW(Sym)* s = nullptr;
+    soinfo* lsi = nullptr;
+
+    if (sym != 0) {
+      sym_name = get_string(symtab_[sym].st_name);
+      const version_info* vi = nullptr;
+
+      if (!lookup_version_info(version_tracker, sym, sym_name, &vi)) {
+        return false;
+      }
+
+      if (!soinfo_do_lookup(this, sym_name, vi, &lsi, global_group, local_group, &s)) {
+        return false;
+      }
+
+      if (s == nullptr) {
+        // mips does not support relocation with weak-undefined symbols
+        DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, get_soname());
+        return false;
+      } else {
+        // We got a definition.
+        sym_addr = lsi->resolve_symbol_address(s);
+      }
+      count_relocation(kRelocSymbol);
+    }
+
+    switch (type) {
+      case R_MIPS_REL32:
+#if defined(__LP64__)
+        // MIPS Elf64_Rel entries contain compound relocations
+        // We only handle the R_MIPS_NONE|R_MIPS_64|R_MIPS_REL32 case
+        if (ELF64_R_TYPE2(rel->r_info) != R_MIPS_64 ||
+            ELF64_R_TYPE3(rel->r_info) != R_MIPS_NONE) {
+          DL_ERR("Unexpected compound relocation type:%d type2:%d type3:%d @ %p (%zu)",
+                 type, static_cast<unsigned>(ELF64_R_TYPE2(rel->r_info)),
+                 static_cast<unsigned>(ELF64_R_TYPE3(rel->r_info)), rel, idx);
+          return false;
+        }
+#endif
+        count_relocation(s == nullptr ? kRelocAbsolute : kRelocRelative);
+        MARK(rel->r_offset);
+        TRACE_TYPE(RELO, "RELO REL32 %08zx <- %08zx %s", static_cast<size_t>(reloc),
+                   static_cast<size_t>(sym_addr), sym_name ? sym_name : "*SECTIONHDR*");
+        if (s != nullptr) {
+          *reinterpret_cast<ElfW(Addr)*>(reloc) += sym_addr;
+        } else {
+          *reinterpret_cast<ElfW(Addr)*>(reloc) += load_bias;
+        }
+        break;
+      default:
+        DL_ERR("unknown reloc type %d @ %p (%zu)", type, rel, idx);
+        return false;
+    }
+  }
+  return true;
+}
+
+bool soinfo::mips_relocate_got(const VersionTracker& version_tracker,
+                               const soinfo_list_t& global_group,
+                               const soinfo_list_t& local_group) {
+  ElfW(Addr)** got = plt_got_;
+  if (got == nullptr) {
+    return true;
+  }
+
+  // got[0] is the address of the lazy resolver function.
+  // got[1] may be used for a GNU extension.
+  // Set it to a recognizable address in case someone calls it (should be _rtld_bind_start).
+  // FIXME: maybe this should be in a separate routine?
+  if ((flags_ & FLAG_LINKER) == 0) {
+    size_t g = 0;
+    got[g++] = reinterpret_cast<ElfW(Addr)*>(0xdeadbeef);
+    if (reinterpret_cast<intptr_t>(got[g]) < 0) {
+      got[g++] = reinterpret_cast<ElfW(Addr)*>(0xdeadfeed);
+    }
+    // Relocate the local GOT entries.
+    for (; g < mips_local_gotno_; g++) {
+      got[g] = reinterpret_cast<ElfW(Addr)*>(reinterpret_cast<uintptr_t>(got[g]) + load_bias);
+    }
+  }
+
+  // Now for the global GOT entries...
+  got = plt_got_ + mips_local_gotno_;
+  for (ElfW(Word) sym = mips_gotsym_; sym < mips_symtabno_; sym++, got++) {
+    // This is an undefined reference... try to locate it.
+    const ElfW(Sym)* local_sym = symtab_ + sym;
+    const char* sym_name = get_string(local_sym->st_name);
+    soinfo* lsi = nullptr;
+    const ElfW(Sym)* s = nullptr;
+
+    const version_info* vi = nullptr;
+
+    if (!lookup_version_info(version_tracker, sym, sym_name, &vi)) {
+      return false;
+    }
+
+    if (!soinfo_do_lookup(this, sym_name, vi, &lsi, global_group, local_group, &s)) {
+      return false;
+    }
+
+    if (s == nullptr) {
+      // We only allow an undefined symbol if this is a weak reference.
+      if (ELF_ST_BIND(local_sym->st_info) != STB_WEAK) {
+        DL_ERR("cannot locate \"%s\"...", sym_name);
+        return false;
+      }
+      *got = 0;
+    } else {
+      // FIXME: is this sufficient?
+      // For reference see NetBSD link loader
+      // http://cvsweb.netbsd.org/bsdweb.cgi/src/libexec/ld.elf_so/arch/mips/mips_reloc.c?rev=1.53&content-type=text/x-cvsweb-markup
+      *got = reinterpret_cast<ElfW(Addr)*>(lsi->resolve_symbol_address(s));
+    }
+  }
+  return true;
+}
+
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index 4b1c0ca..638c9d6 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -29,7 +29,7 @@
 #include "linker_phdr.h"
 
 #include <errno.h>
-#include <machine/exec.h>
+#include <string.h>
 #include <sys/mman.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -38,6 +38,20 @@
 #include "linker.h"
 #include "linker_debug.h"
 
+static int GetTargetElfMachine() {
+#if defined(__arm__)
+  return EM_ARM;
+#elif defined(__aarch64__)
+  return EM_AARCH64;
+#elif defined(__i386__)
+  return EM_386;
+#elif defined(__mips__)
+  return EM_MIPS;
+#elif defined(__x86_64__)
+  return EM_X86_64;
+#endif
+}
+
 /**
   TECHNICAL NOTE ON ELF LOADING.
 
@@ -200,7 +214,7 @@
     return false;
   }
 
-  if (header_.e_machine != ELF_TARG_MACH) {
+  if (header_.e_machine != GetTargetElfMachine()) {
     DL_ERR("\"%s\" has unexpected e_machine: %d", name_, header_.e_machine);
     return false;
   }
@@ -226,7 +240,8 @@
 
   phdr_size_ = page_max - page_min;
 
-  void* mmap_result = mmap64(nullptr, phdr_size_, PROT_READ, MAP_PRIVATE, fd_, file_offset_ + page_min);
+  void* mmap_result =
+      mmap64(nullptr, phdr_size_, PROT_READ, MAP_PRIVATE, fd_, file_offset_ + page_min);
   if (mmap_result == MAP_FAILED) {
     DL_ERR("\"%s\" phdr mmap failed: %s", name_, strerror(errno));
     return false;
@@ -318,7 +333,7 @@
       return false;
     }
     int mmap_flags = MAP_PRIVATE | MAP_ANONYMOUS;
-    start = mmap(addr, load_size_, PROT_NONE, mmap_flags, -1, 0);
+    start = mmap(nullptr, load_size_, PROT_NONE, mmap_flags, -1, 0);
     if (start == MAP_FAILED) {
       DL_ERR("couldn't reserve %zd bytes of address space for \"%s\"", load_size_, name_);
       return false;
@@ -414,9 +429,15 @@
     ElfW(Addr) seg_page_start = PAGE_START(phdr->p_vaddr) + load_bias;
     ElfW(Addr) seg_page_end   = PAGE_END(phdr->p_vaddr + phdr->p_memsz) + load_bias;
 
+    int prot = PFLAGS_TO_PROT(phdr->p_flags);
+    if ((extra_prot_flags & PROT_WRITE) != 0) {
+      // make sure we're never simultaneously writable / executable
+      prot &= ~PROT_EXEC;
+    }
+
     int ret = mprotect(reinterpret_cast<void*>(seg_page_start),
                        seg_page_end - seg_page_start,
-                       PFLAGS_TO_PROT(phdr->p_flags) | extra_prot_flags);
+                       prot | extra_prot_flags);
     if (ret < 0) {
       return -1;
     }
@@ -435,7 +456,8 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias) {
+int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table,
+                                size_t phdr_count, ElfW(Addr) load_bias) {
   return _phdr_table_set_load_prot(phdr_table, phdr_count, load_bias, 0);
 }
 
@@ -455,7 +477,8 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias) {
+int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table,
+                                  size_t phdr_count, ElfW(Addr) load_bias) {
   return _phdr_table_set_load_prot(phdr_table, phdr_count, load_bias, PROT_WRITE);
 }
 
@@ -517,7 +540,8 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias) {
+int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table,
+                                 size_t phdr_count, ElfW(Addr) load_bias) {
   return _phdr_table_set_gnu_relro_prot(phdr_table, phdr_count, load_bias, PROT_READ);
 }
 
@@ -533,7 +557,9 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
+int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table,
+                                   size_t phdr_count,
+                                   ElfW(Addr) load_bias,
                                    int fd) {
   const ElfW(Phdr)* phdr = phdr_table;
   const ElfW(Phdr)* phdr_limit = phdr + phdr_count;
@@ -578,7 +604,9 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
+int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table,
+                             size_t phdr_count,
+                             ElfW(Addr) load_bias,
                              int fd) {
   // Map the file at a temporary location so we can compare its contents.
   struct stat file_stat;
@@ -675,7 +703,7 @@
  */
 int phdr_table_get_arm_exidx(const ElfW(Phdr)* phdr_table, size_t phdr_count,
                              ElfW(Addr) load_bias,
-                             ElfW(Addr)** arm_exidx, unsigned* arm_exidx_count) {
+                             ElfW(Addr)** arm_exidx, size_t* arm_exidx_count) {
   const ElfW(Phdr)* phdr = phdr_table;
   const ElfW(Phdr)* phdr_limit = phdr + phdr_count;
 
@@ -685,7 +713,7 @@
     }
 
     *arm_exidx = reinterpret_cast<ElfW(Addr)*>(load_bias + phdr->p_vaddr);
-    *arm_exidx_count = (unsigned)(phdr->p_memsz / 8);
+    *arm_exidx_count = phdr->p_memsz / 8;
     return 0;
   }
   *arm_exidx = nullptr;
@@ -711,20 +739,21 @@
                                     ElfW(Addr) load_bias, ElfW(Dyn)** dynamic,
                                     ElfW(Word)* dynamic_flags) {
   *dynamic = nullptr;
-  for (const ElfW(Phdr)* phdr = phdr_table, *phdr_limit = phdr + phdr_count; phdr < phdr_limit; phdr++) {
-    if (phdr->p_type == PT_DYNAMIC) {
-      *dynamic = reinterpret_cast<ElfW(Dyn)*>(load_bias + phdr->p_vaddr);
+  for (size_t i = 0; i<phdr_count; ++i) {
+    const ElfW(Phdr)& phdr = phdr_table[i];
+    if (phdr.p_type == PT_DYNAMIC) {
+      *dynamic = reinterpret_cast<ElfW(Dyn)*>(load_bias + phdr.p_vaddr);
       if (dynamic_flags) {
-        *dynamic_flags = phdr->p_flags;
+        *dynamic_flags = phdr.p_flags;
       }
       return;
     }
   }
 }
 
-// Returns the address of the program header table as it appears in the loaded
-// segments in memory. This is in contrast with 'phdr_table_' which
-// is temporary and will be released before the library is relocated.
+// Sets loaded_phdr_ to the address of the program header table as it appears
+// in the loaded segments in memory. This is in contrast with phdr_table_,
+// which is temporary and will be released before the library is relocated.
 bool ElfReader::FindPhdr() {
   const ElfW(Phdr)* phdr_limit = phdr_table_ + phdr_num_;
 
@@ -744,7 +773,7 @@
         ElfW(Addr)  elf_addr = load_bias_ + phdr->p_vaddr;
         const ElfW(Ehdr)* ehdr = reinterpret_cast<const ElfW(Ehdr)*>(elf_addr);
         ElfW(Addr)  offset = ehdr->e_phoff;
-        return CheckPhdr((ElfW(Addr))ehdr + offset);
+        return CheckPhdr(reinterpret_cast<ElfW(Addr)>(ehdr) + offset);
       }
       break;
     }
diff --git a/linker/linker_phdr.h b/linker/linker_phdr.h
index 65d302c..50f2117 100644
--- a/linker/linker_phdr.h
+++ b/linker/linker_phdr.h
@@ -84,21 +84,24 @@
 size_t phdr_table_get_load_size(const ElfW(Phdr)* phdr_table, size_t phdr_count,
                                 ElfW(Addr)* min_vaddr = nullptr, ElfW(Addr)* max_vaddr = nullptr);
 
-int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias);
+int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table,
+                                size_t phdr_count, ElfW(Addr) load_bias);
 
-int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias);
+int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                                  ElfW(Addr) load_bias);
 
-int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias);
+int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                                 ElfW(Addr) load_bias);
 
-int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
-                                   int fd);
+int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                                   ElfW(Addr) load_bias, int fd);
 
-int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
-                             int fd);
+int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                             ElfW(Addr) load_bias, int fd);
 
 #if defined(__arm__)
 int phdr_table_get_arm_exidx(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
-                             ElfW(Addr)** arm_exidx, unsigned* arm_exidix_count);
+                             ElfW(Addr)** arm_exidx, size_t* arm_exidix_count);
 #endif
 
 void phdr_table_get_dynamic_section(const ElfW(Phdr)* phdr_table, size_t phdr_count,
diff --git a/linker/linker_reloc_iterators.h b/linker/linker_reloc_iterators.h
new file mode 100644
index 0000000..f28c0e0
--- /dev/null
+++ b/linker/linker_reloc_iterators.h
@@ -0,0 +1,165 @@
+/*
+ * 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.
+ */
+
+#ifndef __LINKER_RELOC_ITERATORS_H
+#define __LINKER_RELOC_ITERATORS_H
+
+#include "linker.h"
+
+#include <string.h>
+
+const size_t RELOCATION_GROUPED_BY_INFO_FLAG = 1;
+const size_t RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG = 2;
+const size_t RELOCATION_GROUPED_BY_ADDEND_FLAG = 4;
+const size_t RELOCATION_GROUP_HAS_ADDEND_FLAG = 8;
+
+class plain_reloc_iterator {
+#if defined(USE_RELA)
+  typedef ElfW(Rela) rel_t;
+#else
+  typedef ElfW(Rel) rel_t;
+#endif
+ public:
+  plain_reloc_iterator(rel_t* rel_array, size_t count)
+      : begin_(rel_array), end_(begin_ + count), current_(begin_) {}
+
+  bool has_next() {
+    return current_ < end_;
+  }
+
+  rel_t* next() {
+    return current_++;
+  }
+ private:
+  rel_t* const begin_;
+  rel_t* const end_;
+  rel_t* current_;
+
+  DISALLOW_COPY_AND_ASSIGN(plain_reloc_iterator);
+};
+
+template <typename decoder_t>
+class packed_reloc_iterator {
+#if defined(USE_RELA)
+  typedef ElfW(Rela) rel_t;
+#else
+  typedef ElfW(Rel) rel_t;
+#endif
+ public:
+  explicit packed_reloc_iterator(decoder_t&& decoder)
+      : decoder_(decoder) {
+    // initialize fields
+    memset(&reloc_, 0, sizeof(reloc_));
+    relocation_count_ = decoder_.pop_front();
+    reloc_.r_offset = decoder_.pop_front();
+    relocation_index_ = 0;
+    relocation_group_index_ = 0;
+    group_size_ = 0;
+  }
+
+  bool has_next() const {
+    return relocation_index_ < relocation_count_;
+  }
+
+  rel_t* next() {
+    if (relocation_group_index_ == group_size_) {
+      if (!read_group_fields()) {
+        // Iterator is inconsistent state; it should not be called again
+        // but in case it is let's make sure has_next() returns false.
+        relocation_index_ = relocation_count_ = 0;
+        return nullptr;
+      }
+    }
+
+    if (is_relocation_grouped_by_offset_delta()) {
+      reloc_.r_offset += group_r_offset_delta_;
+    } else {
+      reloc_.r_offset += decoder_.pop_front();
+    }
+
+    if (!is_relocation_grouped_by_info()) {
+      reloc_.r_info = decoder_.pop_front();
+    }
+
+#if defined(USE_RELA)
+    if (is_relocation_group_has_addend() &&
+        !is_relocation_grouped_by_addend()) {
+      reloc_.r_addend += decoder_.pop_front();
+    }
+#endif
+
+    relocation_index_++;
+    relocation_group_index_++;
+
+    return &reloc_;
+  }
+ private:
+  bool read_group_fields() {
+    group_size_ = decoder_.pop_front();
+    group_flags_ = decoder_.pop_front();
+
+    if (is_relocation_grouped_by_offset_delta()) {
+      group_r_offset_delta_ = decoder_.pop_front();
+    }
+
+    if (is_relocation_grouped_by_info()) {
+      reloc_.r_info = decoder_.pop_front();
+    }
+
+    if (is_relocation_group_has_addend() &&
+        is_relocation_grouped_by_addend()) {
+#if !defined(USE_RELA)
+      // This platform does not support rela, and yet we have it encoded in android_rel section.
+      DL_ERR("unexpected r_addend in android.rel section");
+      return false;
+#else
+      reloc_.r_addend += decoder_.pop_front();
+    } else if (!is_relocation_group_has_addend()) {
+      reloc_.r_addend = 0;
+#endif
+    }
+
+    relocation_group_index_ = 0;
+    return true;
+  }
+
+  bool is_relocation_grouped_by_info() {
+    return (group_flags_ & RELOCATION_GROUPED_BY_INFO_FLAG) != 0;
+  }
+
+  bool is_relocation_grouped_by_offset_delta() {
+    return (group_flags_ & RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG) != 0;
+  }
+
+  bool is_relocation_grouped_by_addend() {
+    return (group_flags_ & RELOCATION_GROUPED_BY_ADDEND_FLAG) != 0;
+  }
+
+  bool is_relocation_group_has_addend() {
+    return (group_flags_ & RELOCATION_GROUP_HAS_ADDEND_FLAG) != 0;
+  }
+
+  decoder_t decoder_;
+  size_t relocation_count_;
+  size_t group_size_;
+  size_t group_flags_;
+  size_t group_r_offset_delta_;
+  size_t relocation_index_;
+  size_t relocation_group_index_;
+  rel_t reloc_;
+};
+
+#endif  // __LINKER_RELOC_ITERATORS_H
diff --git a/linker/linker_relocs.h b/linker/linker_relocs.h
new file mode 100644
index 0000000..12c1497
--- /dev/null
+++ b/linker/linker_relocs.h
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+#ifndef __LINKER_RELOCS_H
+#define __LINKER_RELOCS_H
+
+#include <elf.h>
+
+#define R_GENERIC_NONE 0 // R_*_NONE is always 0
+
+#if defined (__aarch64__)
+
+#define R_GENERIC_JUMP_SLOT R_AARCH64_JUMP_SLOT
+#define R_GENERIC_GLOB_DAT  R_AARCH64_GLOB_DAT
+#define R_GENERIC_RELATIVE  R_AARCH64_RELATIVE
+#define R_GENERIC_IRELATIVE R_AARCH64_IRELATIVE
+
+#elif defined (__arm__)
+
+#define R_GENERIC_JUMP_SLOT R_ARM_JUMP_SLOT
+#define R_GENERIC_GLOB_DAT  R_ARM_GLOB_DAT
+#define R_GENERIC_RELATIVE  R_ARM_RELATIVE
+#define R_GENERIC_IRELATIVE R_ARM_IRELATIVE
+
+#elif defined (__i386__)
+
+#define R_GENERIC_JUMP_SLOT R_386_JMP_SLOT
+#define R_GENERIC_GLOB_DAT  R_386_GLOB_DAT
+#define R_GENERIC_RELATIVE  R_386_RELATIVE
+#define R_GENERIC_IRELATIVE R_386_IRELATIVE
+
+#elif defined (__x86_64__)
+
+#define R_GENERIC_JUMP_SLOT R_X86_64_JUMP_SLOT
+#define R_GENERIC_GLOB_DAT  R_X86_64_GLOB_DAT
+#define R_GENERIC_RELATIVE  R_X86_64_RELATIVE
+#define R_GENERIC_IRELATIVE R_X86_64_IRELATIVE
+
+#endif
+
+#endif // __LINKER_RELOCS_H
diff --git a/linker/linker_sleb128.h b/linker/linker_sleb128.h
new file mode 100644
index 0000000..a34916f
--- /dev/null
+++ b/linker/linker_sleb128.h
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+
+#ifndef _LINKER_SLEB128_H
+#define _LINKER_SLEB128_H
+
+#include <stdint.h>
+
+// Helper classes for decoding LEB128, used in packed relocation data.
+// http://en.wikipedia.org/wiki/LEB128
+
+class sleb128_decoder {
+ public:
+  sleb128_decoder(const uint8_t* buffer, size_t count)
+      : current_(buffer), end_(buffer+count) { }
+
+  size_t pop_front() {
+    size_t value = 0;
+    static const size_t size = CHAR_BIT * sizeof(value);
+
+    size_t shift = 0;
+    uint8_t byte;
+
+    do {
+      if (current_ >= end_) {
+        __libc_fatal("sleb128_decoder ran out of bounds");
+      }
+      byte = *current_++;
+      value |= (static_cast<size_t>(byte & 127) << shift);
+      shift += 7;
+    } while (byte & 128);
+
+    if (shift < size && (byte & 64)) {
+      value |= -(static_cast<size_t>(1) << shift);
+    }
+
+    return value;
+  }
+
+ private:
+  const uint8_t* current_;
+  const uint8_t* const end_;
+};
+
+#endif // __LINKER_SLEB128_H
diff --git a/linker/tests/Android.mk b/linker/tests/Android.mk
index fe64e77..35992c5 100644
--- a/linker/tests/Android.mk
+++ b/linker/tests/Android.mk
@@ -14,8 +14,6 @@
 # limitations under the License.
 #
 
-ifneq ($(BUILD_TINY_ANDROID),true)
-
 LOCAL_PATH:= $(call my-dir)
 
 include $(CLEAR_VARS)
@@ -30,9 +28,12 @@
 
 LOCAL_SRC_FILES := \
   linked_list_test.cpp \
-  linker_allocator_test.cpp \
+  linker_block_allocator_test.cpp \
+  ../linker_block_allocator.cpp \
+  linker_memory_allocator_test.cpp \
   ../linker_allocator.cpp
 
-include $(BUILD_NATIVE_TEST)
+# for __libc_fatal
+LOCAL_SRC_FILES += ../../libc/bionic/libc_logging.cpp
 
-endif # !BUILD_TINY_ANDROID
+include $(BUILD_NATIVE_TEST)
diff --git a/linker/tests/linker_allocator_test.cpp b/linker/tests/linker_allocator_test.cpp
deleted file mode 100644
index 9292a05..0000000
--- a/linker/tests/linker_allocator_test.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/mman.h>
-
-#include <gtest/gtest.h>
-
-#include "../linker_allocator.h"
-
-#include <unistd.h>
-
-namespace {
-
-struct test_struct_nominal {
-  void* pointer;
-  ssize_t value;
-};
-
-/*
- * this one has size below allocator cap which is 2*sizeof(void*)
- */
-struct test_struct_small {
-  char dummy_str[5];
-};
-
-/*
- * 1009 byte struct (1009 is prime)
- */
-struct test_struct_larger {
-  char dummy_str[1009];
-};
-
-static size_t kPageSize = sysconf(_SC_PAGE_SIZE);
-};
-
-TEST(linker_allocator, test_nominal) {
-  LinkerAllocator<test_struct_nominal> allocator;
-
-  test_struct_nominal* ptr1 = allocator.alloc();
-  ASSERT_TRUE(ptr1 != nullptr);
-  test_struct_nominal* ptr2 = allocator.alloc();
-  ASSERT_TRUE(ptr2 != nullptr);
-  // they should be next to each other.
-  ASSERT_EQ(ptr1+1, ptr2);
-
-  ptr1->value = 42;
-
-  allocator.free(ptr1);
-  allocator.free(ptr2);
-}
-
-TEST(linker_allocator, test_small) {
-  LinkerAllocator<test_struct_small> allocator;
-
-  char* ptr1 = reinterpret_cast<char*>(allocator.alloc());
-  char* ptr2 = reinterpret_cast<char*>(allocator.alloc());
-
-  ASSERT_TRUE(ptr1 != nullptr);
-  ASSERT_TRUE(ptr2 != nullptr);
-  ASSERT_EQ(ptr1+2*sizeof(void*), ptr2);
-}
-
-TEST(linker_allocator, test_larger) {
-  LinkerAllocator<test_struct_larger> allocator;
-
-  test_struct_larger* ptr1 = allocator.alloc();
-  test_struct_larger* ptr2 = allocator.alloc();
-
-  ASSERT_TRUE(ptr1 != nullptr);
-  ASSERT_TRUE(ptr2 != nullptr);
-
-  ASSERT_EQ(ptr1+1, ptr2);
-
-  // lets allocate until we reach next page.
-  size_t n = kPageSize/sizeof(test_struct_larger) + 1 - 2;
-
-  for (size_t i=0; i<n; ++i) {
-    ASSERT_TRUE(allocator.alloc() != nullptr);
-  }
-
-  test_struct_larger* ptr_to_free = allocator.alloc();
-  ASSERT_TRUE(ptr_to_free != nullptr);
-  allocator.free(ptr1);
-}
-
-static void protect_all() {
-  LinkerAllocator<test_struct_larger> allocator;
-
-  // number of allocs to reach the end of first page
-  size_t n = kPageSize/sizeof(test_struct_larger) - 1;
-  test_struct_larger* page1_ptr = allocator.alloc();
-
-  for (size_t i=0; i<n; ++i) {
-    allocator.alloc();
-  }
-
-  test_struct_larger* page2_ptr = allocator.alloc();
-  allocator.protect_all(PROT_READ);
-  allocator.protect_all(PROT_READ | PROT_WRITE);
-  // check access
-  page2_ptr->dummy_str[23] = 27;
-  page1_ptr->dummy_str[13] = 11;
-
-  allocator.protect_all(PROT_READ);
-  fprintf(stderr, "trying to access protected page");
-
-  // this should result in segmentation fault
-  page1_ptr->dummy_str[11] = 7;
-}
-
-TEST(linker_allocator, test_protect) {
-  testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(protect_all(), testing::KilledBySignal(SIGSEGV), "trying to access protected page");
-}
-
diff --git a/linker/tests/linker_block_allocator_test.cpp b/linker/tests/linker_block_allocator_test.cpp
new file mode 100644
index 0000000..3ef0f36
--- /dev/null
+++ b/linker/tests/linker_block_allocator_test.cpp
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#include <gtest/gtest.h>
+
+#include "../linker_block_allocator.h"
+
+#include <unistd.h>
+
+namespace {
+
+struct test_struct_nominal {
+  void* pointer;
+  ssize_t value;
+};
+
+/*
+ * this one has size below allocator cap which is 2*sizeof(void*)
+ */
+struct test_struct_small {
+  char dummy_str[5];
+};
+
+/*
+ * 1009 byte struct (1009 is prime)
+ */
+struct test_struct_larger {
+  char dummy_str[1009];
+};
+
+static size_t kPageSize = sysconf(_SC_PAGE_SIZE);
+};
+
+TEST(linker_allocator, test_nominal) {
+  LinkerTypeAllocator<test_struct_nominal> allocator;
+
+  test_struct_nominal* ptr1 = allocator.alloc();
+  ASSERT_TRUE(ptr1 != nullptr);
+  test_struct_nominal* ptr2 = allocator.alloc();
+  ASSERT_TRUE(ptr2 != nullptr);
+  // they should be next to each other.
+  ASSERT_EQ(ptr1+1, ptr2);
+
+  ptr1->value = 42;
+
+  allocator.free(ptr1);
+  allocator.free(ptr2);
+}
+
+TEST(linker_allocator, test_small) {
+  LinkerTypeAllocator<test_struct_small> allocator;
+
+  char* ptr1 = reinterpret_cast<char*>(allocator.alloc());
+  char* ptr2 = reinterpret_cast<char*>(allocator.alloc());
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+  ASSERT_EQ(ptr1+2*sizeof(void*), ptr2);
+}
+
+TEST(linker_allocator, test_larger) {
+  LinkerTypeAllocator<test_struct_larger> allocator;
+
+  test_struct_larger* ptr1 = allocator.alloc();
+  test_struct_larger* ptr2 = allocator.alloc();
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+
+  ASSERT_EQ(ptr1+1, ptr2);
+
+  // lets allocate until we reach next page.
+  size_t n = kPageSize/sizeof(test_struct_larger) + 1 - 2;
+
+  for (size_t i=0; i<n; ++i) {
+    ASSERT_TRUE(allocator.alloc() != nullptr);
+  }
+
+  test_struct_larger* ptr_to_free = allocator.alloc();
+  ASSERT_TRUE(ptr_to_free != nullptr);
+  allocator.free(ptr1);
+}
+
+static void protect_all() {
+  LinkerTypeAllocator<test_struct_larger> allocator;
+
+  // number of allocs to reach the end of first page
+  size_t n = kPageSize/sizeof(test_struct_larger) - 1;
+  test_struct_larger* page1_ptr = allocator.alloc();
+
+  for (size_t i=0; i<n; ++i) {
+    allocator.alloc();
+  }
+
+  test_struct_larger* page2_ptr = allocator.alloc();
+  allocator.protect_all(PROT_READ);
+  allocator.protect_all(PROT_READ | PROT_WRITE);
+  // check access
+  page2_ptr->dummy_str[23] = 27;
+  page1_ptr->dummy_str[13] = 11;
+
+  allocator.protect_all(PROT_READ);
+  fprintf(stderr, "trying to access protected page");
+
+  // this should result in segmentation fault
+  page1_ptr->dummy_str[11] = 7;
+}
+
+TEST(linker_allocator, test_protect) {
+  testing::FLAGS_gtest_death_test_style = "threadsafe";
+  ASSERT_EXIT(protect_all(), testing::KilledBySignal(SIGSEGV), "trying to access protected page");
+}
+
diff --git a/linker/tests/linker_memory_allocator_test.cpp b/linker/tests/linker_memory_allocator_test.cpp
new file mode 100644
index 0000000..f002a0d
--- /dev/null
+++ b/linker/tests/linker_memory_allocator_test.cpp
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#include <gtest/gtest.h>
+
+#include "../linker_allocator.h"
+
+#include <unistd.h>
+
+namespace {
+
+/*
+ * this one has size below allocator cap which is 2*sizeof(void*)
+ */
+struct test_struct_small {
+  char dummy_str[5];
+};
+
+struct test_struct_large {
+  char dummy_str[1009];
+};
+
+struct test_struct_huge {
+  char dummy_str[73939];
+};
+
+struct test_struct_512 {
+  char dummy_str[503];
+};
+
+};
+
+static size_t kPageSize = sysconf(_SC_PAGE_SIZE);
+
+TEST(linker_memory, test_alloc_0) {
+  LinkerMemoryAllocator allocator;
+  void* ptr = allocator.alloc(0);
+  ASSERT_TRUE(ptr != nullptr);
+  free(ptr);
+}
+
+TEST(linker_memory, test_free_nullptr) {
+  LinkerMemoryAllocator allocator;
+  allocator.free(nullptr);
+}
+
+TEST(linker_memory, test_realloc) {
+  LinkerMemoryAllocator allocator;
+  uint32_t* array = reinterpret_cast<uint32_t*>(allocator.alloc(512));
+  const size_t array_size = 512 / sizeof(uint32_t);
+
+  uint32_t model[1000];
+
+  model[0] = 1;
+  model[1] = 1;
+
+  for (size_t i = 2; i < 1000; ++i) {
+    model[i] = model[i - 1] + model[i - 2];
+  }
+
+  memcpy(array, model, array_size);
+
+  uint32_t* reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 1024));
+
+  ASSERT_TRUE(reallocated_ptr != nullptr);
+  ASSERT_TRUE(reallocated_ptr != array);
+
+  ASSERT_TRUE(memcmp(reallocated_ptr, model, array_size) == 0);
+
+  array = reallocated_ptr;
+
+  memcpy(array, model, 2*array_size);
+
+  reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 62));
+
+  ASSERT_TRUE(reallocated_ptr == array);
+
+  reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 4000));
+
+  ASSERT_TRUE(reallocated_ptr != nullptr);
+  ASSERT_TRUE(reallocated_ptr != array);
+
+  ASSERT_TRUE(memcmp(reallocated_ptr, model, array_size * 2) == 0);
+
+  array = reallocated_ptr;
+
+  memcpy(array, model, 4000);
+
+  reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 64000));
+
+  ASSERT_TRUE(reallocated_ptr != nullptr);
+  ASSERT_TRUE(reallocated_ptr != array);
+
+  ASSERT_TRUE(memcmp(reallocated_ptr, model, 4000) == 0);
+
+  ASSERT_EQ(nullptr, realloc(reallocated_ptr, 0));
+}
+
+TEST(linker_memory, test_small_smoke) {
+  LinkerMemoryAllocator allocator;
+
+  uint8_t zeros[16];
+  memset(zeros, 0, sizeof(zeros));
+
+  test_struct_small* ptr1 =
+      reinterpret_cast<test_struct_small*>(allocator.alloc(sizeof(test_struct_small)));
+  test_struct_small* ptr2 =
+      reinterpret_cast<test_struct_small*>(allocator.alloc(sizeof(test_struct_small)));
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+  ASSERT_EQ(reinterpret_cast<uintptr_t>(ptr1)+16, reinterpret_cast<uintptr_t>(ptr2));
+  ASSERT_TRUE(memcmp(ptr1, zeros, 16) == 0);
+
+  allocator.free(ptr1);
+  allocator.free(ptr2);
+}
+
+TEST(linker_memory, test_huge_smoke) {
+  LinkerMemoryAllocator allocator;
+
+  // this should trigger proxy-to-mmap
+  test_struct_huge* ptr1 =
+      reinterpret_cast<test_struct_huge*>(allocator.alloc(sizeof(test_struct_huge)));
+  test_struct_huge* ptr2 =
+      reinterpret_cast<test_struct_huge*>(allocator.alloc(sizeof(test_struct_huge)));
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+
+  ASSERT_TRUE(
+      reinterpret_cast<uintptr_t>(ptr1)/kPageSize != reinterpret_cast<uintptr_t>(ptr2)/kPageSize);
+  allocator.free(ptr2);
+  allocator.free(ptr1);
+}
+
+TEST(linker_memory, test_large) {
+  LinkerMemoryAllocator allocator;
+
+  test_struct_large* ptr1 =
+      reinterpret_cast<test_struct_large*>(allocator.alloc(sizeof(test_struct_large)));
+  test_struct_large* ptr2 =
+      reinterpret_cast<test_struct_large*>(allocator.alloc(1024));
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+
+  ASSERT_EQ(reinterpret_cast<uintptr_t>(ptr1) + 1024, reinterpret_cast<uintptr_t>(ptr2));
+
+  // let's allocate until we reach the next page.
+  size_t n = kPageSize / sizeof(test_struct_large) + 1 - 2;
+  test_struct_large* objects[n];
+
+  for (size_t i = 0; i < n; ++i) {
+    test_struct_large* obj_ptr =
+        reinterpret_cast<test_struct_large*>(allocator.alloc(sizeof(test_struct_large)));
+    ASSERT_TRUE(obj_ptr != nullptr);
+    objects[i] = obj_ptr;
+  }
+
+  test_struct_large* ptr_to_free =
+      reinterpret_cast<test_struct_large*>(allocator.alloc(sizeof(test_struct_large)));
+
+  ASSERT_TRUE(ptr_to_free != nullptr);
+
+  allocator.free(ptr1);
+
+  for (size_t i=0; i<n; ++i) {
+    allocator.free(objects[i]);
+  }
+
+  allocator.free(ptr2);
+  allocator.free(ptr_to_free);
+}
+
+
diff --git a/tests/Android.build.mk b/tests/Android.build.mk
index 63729da..5b2b417 100644
--- a/tests/Android.build.mk
+++ b/tests/Android.build.mk
@@ -36,8 +36,14 @@
 
 LOCAL_CLANG := $($(module)_clang_$(build_type))
 
+ifneq ($($(module)_allow_asan),true)
+LOCAL_ADDRESS_SANITIZER := false
+endif
+
 LOCAL_FORCE_STATIC_EXECUTABLE := $($(module)_force_static_executable)
 
+LOCAL_ALLOW_UNDEFINED_SYMBOLS := $($(module)_allow_undefined_symbols)
+
 ifneq ($($(module)_multilib),)
     LOCAL_MULTILIB := $($(module)_multilib)
 endif
@@ -86,9 +92,13 @@
     $($(module)_ldlibs) \
     $($(module)_ldlibs_$(build_type)) \
 
-ifeq ($(build_type),target)
-  include external/stlport/libstlport.mk
+ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true)
+LOCAL_CXX_STL := libc++_static
+else
+LOCAL_CXX_STL := libc++
+endif
 
+ifeq ($(build_type),target)
   include $(BUILD_$(build_target))
 endif
 
diff --git a/tests/Android.mk b/tests/Android.mk
index 8b0b0a0..cd65c10 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -14,8 +14,6 @@
 # limitations under the License.
 #
 
-ifneq ($(BUILD_TINY_ANDROID),true)
-
 LOCAL_PATH := $(call my-dir)
 
 # -----------------------------------------------------------------------------
@@ -54,8 +52,10 @@
 libBionicStandardTests_src_files := \
     arpa_inet_test.cpp \
     buffer_tests.cpp \
+    complex_test.cpp \
     ctype_test.cpp \
     dirent_test.cpp \
+    error_test.cpp \
     eventfd_test.cpp \
     fcntl_test.cpp \
     fenv_test.cpp \
@@ -67,40 +67,32 @@
     libgen_test.cpp \
     locale_test.cpp \
     malloc_test.cpp \
-    math_cos_test.cpp \
-    math_cosf_test.cpp \
-    math_exp_test.cpp \
-    math_expf_test.cpp \
-    math_log_test.cpp \
-    math_logf_test.cpp \
-    math_pow_test.cpp \
-    math_powf_test.cpp \
-    math_sin_test.cpp \
-    math_sinf_test.cpp \
-    math_sincos_test.cpp \
-    math_sincosf_test.cpp \
-    math_tan_test.cpp \
-    math_tanf_test.cpp \
     math_test.cpp \
     mntent_test.cpp \
     netdb_test.cpp \
     pthread_test.cpp \
+    pty_test.cpp \
     regex_test.cpp \
     sched_test.cpp \
     search_test.cpp \
+    semaphore_test.cpp \
+    setjmp_test.cpp \
     signal_test.cpp \
     stack_protector_test.cpp \
     stack_unwinding_test.cpp \
     stdatomic_test.cpp \
     stdint_test.cpp \
     stdio_test.cpp \
+    stdio_ext_test.cpp \
     stdlib_test.cpp \
     string_test.cpp \
+    string_posix_strerror_r_test.cpp \
     strings_test.cpp \
     stubs_test.cpp \
     sstream_test.cpp \
     sys_epoll_test.cpp \
     sys_mman_test.cpp \
+    sys_personality_test.cpp \
     sys_resource_test.cpp \
     sys_select_test.cpp \
     sys_sendfile_test.cpp \
@@ -108,6 +100,7 @@
     sys_stat_test.cpp \
     sys_statvfs_test.cpp \
     sys_syscall_test.cpp \
+    sys_sysinfo_test.cpp \
     sys_time_test.cpp \
     sys_types_test.cpp \
     sys_vfs_test.cpp \
@@ -116,6 +109,7 @@
     uchar_test.cpp \
     uniqueptr_test.cpp \
     unistd_test.cpp \
+    utmp_test.cpp \
     wchar_test.cpp \
 
 libBionicStandardTests_cflags := \
@@ -132,6 +126,10 @@
 
 libBionicStandardTests_c_includes := \
     bionic/libc \
+    external/tinyxml2 \
+
+libBionicStandardTests_static_libraries := \
+    libbase \
 
 libBionicStandardTests_ldlibs_host := \
     -lrt \
@@ -216,16 +214,60 @@
 include $(LOCAL_PATH)/Android.build.mk
 
 # -----------------------------------------------------------------------------
+# Library of bionic customized gtest main function, with simplified output format.
+# -----------------------------------------------------------------------------
+libBionicGtestMain_src_files := gtest_main.cpp
+
+libBionicGtestMain_cflags := $(test_cflags)
+
+libBionicGtestMain_cppflags := $(test_cppflags)
+
+module := libBionicGtestMain
+module_tag := optional
+build_type := target
+build_target := STATIC_TEST_LIBRARY
+include $(LOCAL_PATH)/Android.build.mk
+build_type := host
+include $(LOCAL_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# Library of bionic customized gtest main function, with normal gtest output format,
+# which is needed by bionic cts test.
+# -----------------------------------------------------------------------------
+libBionicCtsGtestMain_src_files := gtest_main.cpp
+
+libBionicCtsGtestMain_cflags := $(test_cflags)
+
+libBionicCtsGtestMain_cppflags := $(test_cppflags) -DUSING_GTEST_OUTPUT_FORMAT
+
+module := libBionicCtsGtestMain
+module_tag := optional
+build_type := target
+build_target := STATIC_TEST_LIBRARY
+include $(LOCAL_PATH)/Android.build.mk
+build_type := host
+include $(LOCAL_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
 # Tests for the device using bionic's .so. Run with:
 #   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32
 #   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64
 # -----------------------------------------------------------------------------
 bionic-unit-tests_whole_static_libraries := \
     libBionicTests \
+    libBionicGtestMain \
 
+bionic-unit-tests_static_libraries := \
+    libtinyxml2 \
+    liblog \
+    libbase \
+
+# TODO: Include __cxa_thread_atexit_test.cpp to glibc tests once it is upgraded (glibc 2.18+)
 bionic-unit-tests_src_files := \
     atexit_test.cpp \
+    dl_test.cpp \
     dlext_test.cpp \
+    __cxa_thread_atexit_test.cpp \
     dlfcn_test.cpp \
 
 bionic-unit-tests_cflags := $(test_cflags)
@@ -237,8 +279,7 @@
 bionic-unit-tests_cppflags := $(test_cppflags)
 
 bionic-unit-tests_ldflags := \
-    -Wl,--export-dynamic \
-    -Wl,-u,DlSymTestFunction \
+    -Wl,--export-dynamic
 
 bionic-unit-tests_c_includes := \
     bionic/libc \
@@ -247,6 +288,14 @@
 bionic-unit-tests_shared_libraries_target := \
     libdl \
     libpagemap \
+    libdl_preempt_test_1 \
+    libdl_preempt_test_2
+
+# TODO: clang support for thread_local on arm is done via __aeabi_read_tp()
+# which bionic does not support. Reenable this once this question is resolved.
+bionic-unit-tests_clang_target := false
+
+bionic-unit-tests_shared_libraries_target += libdl_test_df_1_global
 
 module := bionic-unit-tests
 module_tag := optional
@@ -261,15 +310,25 @@
 # -----------------------------------------------------------------------------
 bionic-unit-tests-static_whole_static_libraries := \
     libBionicTests \
+    libBionicGtestMain \
 
 bionic-unit-tests-static_static_libraries := \
-    libstlport_static \
     libm \
     libc \
-    libstdc++ \
+    libc++_static \
+    libdl \
+    libtinyxml2 \
+    liblog \
+    libbase \
 
 bionic-unit-tests-static_force_static_executable := true
 
+# libc and libc++ both define std::nothrow. libc's is a private symbol, but this
+# still causes issues when linking libc.a and libc++.a, since private isn't
+# effective until it has been linked. To fix this, just allow multiple symbol
+# definitions for the static tests.
+bionic-unit-tests-static_ldflags := -Wl,--allow-multiple-definition
+
 module := bionic-unit-tests-static
 module_tag := optional
 build_type := target
@@ -286,12 +345,26 @@
 bionic-unit-tests-glibc_src_files := \
     atexit_test.cpp \
     dlfcn_test.cpp \
+    dl_test.cpp \
+
+bionic-unit-tests-glibc_shared_libraries := \
+    libdl_preempt_test_1 \
+    libdl_preempt_test_2
+
+bionic-unit-tests-glibc_shared_libraries += libdl_test_df_1_global
 
 bionic-unit-tests-glibc_whole_static_libraries := \
     libBionicStandardTests \
+    libBionicGtestMain \
+    $(fortify_libs) \
+
+bionic-unit-tests-glibc_static_libraries := \
+    libbase \
+    liblog \
+    libcutils \
 
 bionic-unit-tests-glibc_ldlibs := \
-    -lrt -ldl \
+    -lrt -ldl -lutil \
 
 bionic-unit-tests-glibc_c_includes := \
     bionic/libc \
@@ -300,19 +373,60 @@
 bionic-unit-tests-glibc_cppflags := $(test_cppflags)
 bionic-unit-tests-glibc_ldflags := -Wl,--export-dynamic
 
+bionic-unit-tests-glibc_allow_asan := true
+
 module := bionic-unit-tests-glibc
 module_tag := optional
 build_type := host
 build_target := NATIVE_TEST
 include $(LOCAL_PATH)/Android.build.mk
 
-ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm mips x86))
-LINKER = linker64
-NATIVE_TEST_SUFFIX=64
-else
-LINKER = linker
-NATIVE_TEST_SUFFIX=32
-endif
+# -----------------------------------------------------------------------------
+# Compile time tests.
+# -----------------------------------------------------------------------------
+
+# Some of these are intentionally using = instead of := since we need access to
+# some variables not initialtized until we're in the build system.
+
+include $(CLEAR_VARS)
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(LOCAL_PATH)/Android.mk \
+    $(LOCAL_PATH)/file-check-cxx \
+    | $(HOST_OUT_EXECUTABLES)/FileCheck$(HOST_EXECUTABLE_SUFFIX) \
+
+LOCAL_CXX = $(LOCAL_PATH)/file-check-cxx \
+    $(HOST_OUT_EXECUTABLES)/FileCheck \
+    $($(LOCAL_2ND_ARCH_VAR_PREFIX)CXX_BARE) \
+    GCC \
+
+LOCAL_CLANG := false
+LOCAL_MODULE := bionic-compile-time-tests-g++
+LOCAL_CPPFLAGS := -Wall
+LOCAL_SRC_FILES := fortify_compilation_test.cpp
+include $(BUILD_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(LOCAL_PATH)/Android.mk \
+    $(LOCAL_PATH)/file-check-cxx \
+    | $(HOST_OUT_EXECUTABLES)/FileCheck$(HOST_EXECUTABLE_SUFFIX) \
+
+LOCAL_CXX := $(LOCAL_PATH)/file-check-cxx \
+    $(HOST_OUT_EXECUTABLES)/FileCheck \
+    $(LLVM_PREBUILTS_PATH)/clang++ \
+    CLANG \
+
+LOCAL_CLANG := true
+LOCAL_MODULE := bionic-compile-time-tests-clang++
+LOCAL_CPPFLAGS := -Wall
+# FileCheck will error if there aren't any CLANG: lines in the file, but there
+# don't appear to be any cases where clang _does_ emit warnings for sn?printf :(
+LOCAL_SRC_FILES :=
+include $(BUILD_STATIC_LIBRARY)
+
+# -----------------------------------------------------------------------------
+# Host glibc tests.
+# -----------------------------------------------------------------------------
 
 # gtest needs ANDROID_DATA/local/tmp for death test output.
 # Make sure to create ANDROID_DATA/local/tmp if doesn't exist.
@@ -322,48 +436,37 @@
 	mkdir -p $(TARGET_OUT_DATA)/local/tmp
 	ANDROID_DATA=$(TARGET_OUT_DATA) \
 	ANDROID_ROOT=$(TARGET_OUT) \
-		$(HOST_OUT_EXECUTABLES)/bionic-unit-tests-glibc$(NATIVE_TEST_SUFFIX) $(BIONIC_TEST_FLAGS)
+		$(HOST_OUT_EXECUTABLES)/bionic-unit-tests-glibc64 $(BIONIC_TEST_FLAGS)
 
 # -----------------------------------------------------------------------------
 # Run the unit tests built against x86 bionic on an x86 host.
 # -----------------------------------------------------------------------------
 
+include $(LOCAL_PATH)/../build/run-on-host.mk
+
 ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
-# gtest needs ANDROID_DATA/local/tmp for death test output.
-# Make sure to create ANDROID_DATA/local/tmp if doesn't exist.
-# bionic itself should always work relative to ANDROID_DATA or ANDROID_ROOT.
+
+TEST_TIMEOUT := 0
+
 # BIONIC_TEST_FLAGS is either empty or it comes from the user.
-bionic-unit-tests-run-on-host: bionic-unit-tests $(TARGET_OUT_EXECUTABLES)/$(LINKER) $(TARGET_OUT_EXECUTABLES)/sh
-	if [ ! -d /system -o ! -d /system/bin ]; then \
-	  echo "Attempting to create /system/bin"; \
-	  sudo mkdir -p -m 0777 /system/bin; \
-	fi
-	mkdir -p $(TARGET_OUT_DATA)/local/tmp
-	cp $(TARGET_OUT_EXECUTABLES)/$(LINKER) /system/bin
-	cp $(TARGET_OUT_EXECUTABLES)/sh /system/bin
+bionic-unit-tests-run-on-host32: bionic-unit-tests bionic-prepare-run-on-host
 	ANDROID_DATA=$(TARGET_OUT_DATA) \
+	ANDROID_DNS_MODE=local \
 	ANDROID_ROOT=$(TARGET_OUT) \
-	LD_LIBRARY_PATH=$(TARGET_OUT_SHARED_LIBRARIES) \
-		$(TARGET_OUT_DATA_NATIVE_TESTS)/bionic-unit-tests/bionic-unit-tests$(NATIVE_TEST_SUFFIX) $(BIONIC_TEST_FLAGS)
+		timeout $(TEST_TIMEOUT) \
+		$(TARGET_OUT_DATA)/nativetest/bionic-unit-tests/bionic-unit-tests32 $(BIONIC_TEST_FLAGS)
+
+ifeq ($(TARGET_IS_64_BIT),true)
+# add target to run lp64 tests
+bionic-unit-tests-run-on-host64: bionic-unit-tests bionic-prepare-run-on-host
+	ANDROID_DATA=$(TARGET_OUT_DATA) \
+	ANDROID_DNS_MODE=local \
+	ANDROID_ROOT=$(TARGET_OUT) \
+		timeout $(TEST_TIMEOUT) \
+		$(TARGET_OUT_DATA)/nativetest64/bionic-unit-tests/bionic-unit-tests64 $(BIONIC_TEST_FLAGS)
 endif
 
-ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86_64))
-# add target to run lp32 tests
-bionic-unit-tests-run-on-host32: bionic-unit-tests_32 $(TARGET_OUT_EXECUTABLES)/$(LINKER) $(TARGET_OUT_EXECUTABLES)/sh
-	if [ ! -d /system -o ! -d /system/bin ]; then \
-	  echo "Attempting to create /system/bin"; \
-	  sudo mkdir -p -m 0777 /system/bin; \
-	fi
-	mkdir -p $(TARGET_OUT_DATA)/local/tmp
-	cp $(TARGET_OUT_EXECUTABLES)/linker /system/bin
-	cp $(TARGET_OUT_EXECUTABLES)/sh /system/bin
-	ANDROID_DATA=$(TARGET_OUT_DATA) \
-	ANDROID_ROOT=$(TARGET_OUT) \
-	LD_LIBRARY_PATH=$(2ND_TARGET_OUT_SHARED_LIBRARIES) \
-		$(2ND_TARGET_OUT_DATA_NATIVE_TESTS)/bionic-unit-tests/bionic-unit-tests32 $(BIONIC_TEST_FLAGS)
-endif
-
+endif # x86 x86_64
 endif # linux-x86
 
 include $(call first-makefiles-under,$(LOCAL_PATH))
-endif # !BUILD_TINY_ANDROID
diff --git a/tests/BionicDeathTest.h b/tests/BionicDeathTest.h
new file mode 100644
index 0000000..31d2d6e
--- /dev/null
+++ b/tests/BionicDeathTest.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#ifndef BIONIC_TESTS_BIONIC_DEATH_TEST_H_
+#define BIONIC_TESTS_BIONIC_DEATH_TEST_H_
+
+#include <gtest/gtest.h>
+
+#include <sys/prctl.h>
+
+class BionicDeathTest : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    // Suppress debuggerd stack traces. Too slow.
+    old_dumpable_ = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0);
+    prctl(PR_SET_DUMPABLE, 0, 0, 0, 0);
+    ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  }
+
+  virtual void TearDown() {
+    prctl(PR_SET_DUMPABLE, old_dumpable_, 0, 0, 0, 0);
+  }
+
+ private:
+  int old_dumpable_;
+};
+
+#endif // BIONIC_TESTS_BIONIC_DEATH_TEST_H_
diff --git a/tests/ScopedSignalHandler.h b/tests/ScopedSignalHandler.h
index 3ec23b0..3fb60a1 100644
--- a/tests/ScopedSignalHandler.h
+++ b/tests/ScopedSignalHandler.h
@@ -18,17 +18,27 @@
 #define _BIONIC_TESTS_SCOPED_SIGNAL_HANDLER_H
 
 #include <signal.h>
+#include <string.h>
 
 class ScopedSignalHandler {
  public:
   ScopedSignalHandler(int signal_number, void (*handler)(int), int sa_flags = 0)
       : signal_number_(signal_number) {
-    sigemptyset(&action_.sa_mask);
+    memset(&action_, 0, sizeof(action_));
     action_.sa_flags = sa_flags;
     action_.sa_handler = handler;
     sigaction(signal_number_, &action_, &old_action_);
   }
 
+  ScopedSignalHandler(int signal_number, void (*action)(int, siginfo_t*, void*),
+                      int sa_flags = SA_SIGINFO)
+      : signal_number_(signal_number) {
+    memset(&action_, 0, sizeof(action_));
+    action_.sa_flags = sa_flags;
+    action_.sa_sigaction = action;
+    sigaction(signal_number_, &action_, &old_action_);
+  }
+
   ~ScopedSignalHandler() {
     sigaction(signal_number_, &old_action_, NULL);
   }
diff --git a/tests/TemporaryFile.h b/tests/TemporaryFile.h
index c4ee2d5..5c2fe4f 100644
--- a/tests/TemporaryFile.h
+++ b/tests/TemporaryFile.h
@@ -17,24 +17,26 @@
 #include <fcntl.h>
 #include <unistd.h>
 
-template<int (*mk_fn)(char*)>
+#include "private/bionic_macros.h"
+
+template <typename T = int (*)(char*)>
 class GenericTemporaryFile {
  public:
-  GenericTemporaryFile(const char* dirpath = NULL) {
-    if (dirpath != NULL) {
-      init(dirpath);
-    } else {
-      // Since we might be running on the host or the target, and if we're
-      // running on the host we might be running under bionic or glibc,
-      // let's just try both possible temporary directories and take the
-      // first one that works.
-      init("/data/local/tmp");
-      if (fd == -1) {
-        init("/tmp");
-      }
+  GenericTemporaryFile(T mk_fn = mkstemp) : mk_fn(mk_fn) {
+    // Since we might be running on the host or the target, and if we're
+    // running on the host we might be running under bionic or glibc,
+    // let's just try both possible temporary directories and take the
+    // first one that works.
+    init("/data/local/tmp");
+    if (fd == -1) {
+      init("/tmp");
     }
   }
 
+  GenericTemporaryFile(const char* dirpath, T mk_fn = mkstemp) : mk_fn(mk_fn) {
+    init(dirpath);
+  }
+
   ~GenericTemporaryFile() {
     close(fd);
     unlink(filename);
@@ -49,13 +51,17 @@
   char filename[1024];
 
  private:
+  T mk_fn;
+
   void init(const char* tmp_dir) {
     snprintf(filename, sizeof(filename), "%s/TemporaryFile-XXXXXX", tmp_dir);
     fd = mk_fn(filename);
   }
+
+  DISALLOW_COPY_AND_ASSIGN(GenericTemporaryFile);
 };
 
-typedef GenericTemporaryFile<mkstemp> TemporaryFile;
+typedef GenericTemporaryFile<> TemporaryFile;
 
 class TemporaryDir {
  public:
@@ -77,4 +83,5 @@
     return (mkdtemp(dirname) != NULL);
   }
 
+  DISALLOW_COPY_AND_ASSIGN(TemporaryDir);
 };
diff --git a/tests/__cxa_thread_atexit_test.cpp b/tests/__cxa_thread_atexit_test.cpp
new file mode 100644
index 0000000..e388f3b
--- /dev/null
+++ b/tests/__cxa_thread_atexit_test.cpp
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <stdint.h>
+
+#include <string>
+
+static std::string class_with_dtor_output;
+
+class ClassWithDtor {
+ public:
+  void set_message(const std::string& msg) {
+    message = msg;
+  }
+
+  ~ClassWithDtor() {
+    class_with_dtor_output += message;
+  }
+ private:
+  std::string message;
+};
+
+static thread_local ClassWithDtor class_with_dtor;
+
+static void* thread_nop(void* arg) {
+  class_with_dtor.set_message(*static_cast<std::string*>(arg));
+  return nullptr;
+}
+
+TEST(thread_local, smoke) {
+  std::string msg("dtor called.");
+  pthread_t t;
+  ASSERT_EQ(0, pthread_create(&t, nullptr, thread_nop, &msg));
+  ASSERT_EQ(0, pthread_join(t, nullptr));
+  ASSERT_EQ("dtor called.", class_with_dtor_output);
+}
+
+class ClassWithDtorForMainThread {
+ public:
+  void set_message(const std::string& msg) {
+    message = msg;
+  }
+
+  ~ClassWithDtorForMainThread() {
+    fprintf(stderr, "%s", message.c_str());
+  }
+ private:
+  std::string message;
+};
+
+static void thread_atexit_main() {
+  static thread_local ClassWithDtorForMainThread class_with_dtor_for_main_thread;
+  class_with_dtor_for_main_thread.set_message("d-tor for main thread called.");
+  exit(0);
+}
+
+TEST(thread_local, dtor_for_main_thread) {
+  ASSERT_EXIT(thread_atexit_main(), testing::ExitedWithCode(0), "d-tor for main thread called.");
+}
+
+extern "C" int __cxa_thread_atexit_impl(void (*fn)(void*), void* arg, void* dso_handle);
+
+static void thread_atexit_fn1(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "one, ";
+}
+
+static void thread_atexit_fn2(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "two, ";
+}
+
+static void thread_atexit_from_atexit(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "oops, ";
+}
+
+static void thread_atexit_fn3(void* arg) {
+  __cxa_thread_atexit_impl(thread_atexit_from_atexit, arg, nullptr);
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "three, ";
+}
+
+static void thread_atexit_fn4(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "four, ";
+}
+
+static void thread_atexit_fn5(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "five.";
+}
+
+static void* thread_main(void* arg) {
+  __cxa_thread_atexit_impl(thread_atexit_fn5, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn4, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn3, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn2, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn1, arg, nullptr);
+  return nullptr;
+}
+
+TEST(__cxa_thread_atexit_impl, smoke) {
+  std::string atexit_call_sequence;
+
+  pthread_t t;
+  ASSERT_EQ(0, pthread_create(&t, nullptr, thread_main, &atexit_call_sequence));
+  ASSERT_EQ(0, pthread_join(t, nullptr));
+  ASSERT_EQ("one, two, three, oops, four, five.", atexit_call_sequence);
+}
+
+
diff --git a/tests/atexit_test.cpp b/tests/atexit_test.cpp
index e01220e..e92889d 100644
--- a/tests/atexit_test.cpp
+++ b/tests/atexit_test.cpp
@@ -24,20 +24,33 @@
 
 #include <string>
 
-TEST(atexit, dlclose) {
+TEST(atexit, sofile) {
   std::string atexit_call_sequence;
   bool valid_this_in_static_dtor = false;
+  bool attr_dtor_called = false;
+
   void* handle = dlopen("libtest_atexit.so", RTLD_NOW);
-  ASSERT_TRUE(handle != NULL);
+  ASSERT_TRUE(handle != nullptr);
+
+  typedef int (*int_fn)(void);
+  int_fn get_cxx_ctor_called, get_attr_ctor_called;
+  get_cxx_ctor_called = reinterpret_cast<int_fn>(dlsym(handle, "get_cxx_ctor_called"));
+  get_attr_ctor_called = reinterpret_cast<int_fn>(dlsym(handle, "get_attr_ctor_called"));
+  ASSERT_TRUE(get_cxx_ctor_called != nullptr);
+  ASSERT_TRUE(get_attr_ctor_called != nullptr);
+
+  ASSERT_EQ(1, get_cxx_ctor_called());
+  ASSERT_EQ(1, get_attr_ctor_called());
 
   void* sym = dlsym(handle, "register_atexit");
-  ASSERT_TRUE(sym != NULL);
-  reinterpret_cast<void (*)(std::string*, bool*)>(sym)(&atexit_call_sequence, &valid_this_in_static_dtor);
+  ASSERT_TRUE(sym != nullptr);
+  reinterpret_cast<void (*)(std::string*, bool*, bool*)>(sym)(&atexit_call_sequence, &valid_this_in_static_dtor, &attr_dtor_called);
 
   ASSERT_EQ(0, dlclose(handle));
   // this test verifies atexit call from atexit handler. as well as the order of calls
   ASSERT_EQ("Humpty Dumpty sat on a wall", atexit_call_sequence);
   ASSERT_TRUE(valid_this_in_static_dtor);
+  ASSERT_TRUE(attr_dtor_called);
 }
 
 class TestMainStaticDtorClass {
@@ -57,7 +70,7 @@
   static const TestMainStaticDtorClass* expected_this;
 };
 
-const TestMainStaticDtorClass* TestMainStaticDtorClass::expected_this = NULL;
+const TestMainStaticDtorClass* TestMainStaticDtorClass::expected_this = nullptr;
 
 static void atexit_func5() {
   fprintf(stderr, "5");
diff --git a/tests/complex_test.cpp b/tests/complex_test.cpp
new file mode 100644
index 0000000..47964f6
--- /dev/null
+++ b/tests/complex_test.cpp
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+// libc++ actively gets in the way of including <complex.h> from C++, so we
+// have to declare the complex math functions ourselves.
+// (libc++ also seems to have really bad implementations of its own that ignore
+// the intricacies of floating point math.)
+// http://llvm.org/bugs/show_bug.cgi?id=21504
+
+#include <math.h> // For M_PI.
+
+extern "C" double cabs(double _Complex);
+TEST(complex, cabs) {
+  ASSERT_EQ(0.0, cabs(0));
+}
+
+extern "C" float cabsf(float _Complex);
+TEST(complex, cabsf) {
+  ASSERT_EQ(0.0, cabsf(0));
+}
+
+extern "C" long double cabsl(long double _Complex);
+TEST(complex, cabsl) {
+  ASSERT_EQ(0.0, cabsl(0));
+}
+
+extern "C" double _Complex cacos(double _Complex);
+TEST(complex, cacos) {
+  ASSERT_EQ(M_PI/2.0, cacos(0.0));
+}
+
+extern "C" float _Complex cacosf(float _Complex);
+TEST(complex, cacosf) {
+  ASSERT_EQ(static_cast<float>(M_PI)/2.0f, cacosf(0.0));
+}
+
+extern "C" double _Complex cacosh(double _Complex);
+TEST(complex, cacosh) {
+  ASSERT_EQ(0.0, cacosh(1.0));
+}
+
+extern "C" float _Complex cacoshf(float _Complex);
+TEST(complex, cacoshf) {
+  ASSERT_EQ(0.0, cacoshf(1.0));
+}
+
+extern "C" double carg(double _Complex);
+TEST(complex, carg) {
+  ASSERT_EQ(0.0, carg(0));
+}
+
+extern "C" float cargf(float _Complex);
+TEST(complex, cargf) {
+  ASSERT_EQ(0.0, cargf(0));
+}
+
+extern "C" long double cargl(long double _Complex);
+TEST(complex, cargl) {
+  ASSERT_EQ(0.0, cargl(0));
+}
+
+extern "C" double _Complex casin(double _Complex);
+TEST(complex, casin) {
+  ASSERT_EQ(0.0, casin(0));
+}
+
+extern "C" float _Complex casinf(float _Complex);
+TEST(complex, casinf) {
+  ASSERT_EQ(0.0, casinf(0));
+}
+
+extern "C" double _Complex casinh(double _Complex);
+TEST(complex, casinh) {
+  ASSERT_EQ(0.0, casinh(0));
+}
+
+extern "C" float _Complex casinhf(float _Complex);
+TEST(complex, casinhf) {
+  ASSERT_EQ(0.0, casinhf(0));
+}
+
+extern "C" double _Complex catan(double _Complex);
+TEST(complex, catan) {
+  ASSERT_EQ(0.0, catan(0));
+}
+
+extern "C" float _Complex catanf(float _Complex);
+TEST(complex, catanf) {
+  ASSERT_EQ(0.0, catanf(0));
+}
+
+extern "C" double _Complex catanh(double _Complex);
+TEST(complex, catanh) {
+  ASSERT_EQ(0.0, catanh(0));
+}
+
+extern "C" float _Complex catanhf(float _Complex);
+TEST(complex, catanhf) {
+  ASSERT_EQ(0.0, catanhf(0));
+}
+
+extern "C" double _Complex ccos(double _Complex);
+TEST(complex, ccos) {
+  ASSERT_EQ(1.0, ccos(0));
+}
+
+extern "C" float _Complex ccosf(float _Complex);
+TEST(complex, ccosf) {
+  ASSERT_EQ(1.0, ccosf(0));
+}
+
+extern "C" double _Complex ccosh(double _Complex);
+TEST(complex, ccosh) {
+  ASSERT_EQ(1.0, ccosh(0));
+}
+
+extern "C" float _Complex ccoshf(float _Complex);
+TEST(complex, ccoshf) {
+  ASSERT_EQ(1.0, ccoshf(0));
+}
+
+extern "C" double _Complex cexp(double _Complex);
+TEST(complex, cexp) {
+  ASSERT_EQ(1.0, cexp(0));
+}
+
+extern "C" float _Complex cexpf(float _Complex);
+TEST(complex, cexpf) {
+  ASSERT_EQ(1.0, cexpf(0));
+}
+
+extern "C" double cimag(double _Complex);
+TEST(complex, cimag) {
+  ASSERT_EQ(0.0, cimag(0));
+}
+
+extern "C" float cimagf(float _Complex);
+TEST(complex, cimagf) {
+  ASSERT_EQ(0.0f, cimagf(0));
+}
+
+extern "C" long double cimagl(long double _Complex);
+TEST(complex, cimagl) {
+  ASSERT_EQ(0.0, cimagl(0));
+}
+
+extern "C" double _Complex conj(double _Complex);
+TEST(complex, conj) {
+  ASSERT_EQ(0.0, conj(0));
+}
+
+extern "C" float _Complex conjf(float _Complex);
+TEST(complex, conjf) {
+  ASSERT_EQ(0.0f, conjf(0));
+}
+
+extern "C" long double _Complex conjl(long double _Complex);
+TEST(complex, conjl) {
+  ASSERT_EQ(0.0, conjl(0));
+}
+
+extern "C" double _Complex cproj(double _Complex);
+TEST(complex, cproj) {
+  ASSERT_EQ(0.0, cproj(0));
+}
+
+extern "C" float _Complex cprojf(float _Complex);
+TEST(complex, cprojf) {
+  ASSERT_EQ(0.0f, cprojf(0));
+}
+
+extern "C" long double _Complex cprojl(long double _Complex);
+TEST(complex, cprojl) {
+  ASSERT_EQ(0.0, cprojl(0));
+}
+
+extern "C" double creal(double _Complex);
+TEST(complex, creal) {
+  ASSERT_EQ(0.0, creal(0));
+}
+
+extern "C" float crealf(float _Complex);
+TEST(complex, crealf) {
+  ASSERT_EQ(0.0f, crealf(0));
+}
+
+extern "C" long double creall(long double _Complex);
+TEST(complex, creall) {
+  ASSERT_EQ(0.0, creall(0));
+}
+
+extern "C" double _Complex csin(double _Complex);
+TEST(complex, csin) {
+  ASSERT_EQ(0.0, csin(0));
+}
+
+extern "C" float _Complex csinf(float _Complex);
+TEST(complex, csinf) {
+  ASSERT_EQ(0.0, csinf(0));
+}
+
+extern "C" double _Complex csinh(double _Complex);
+TEST(complex, csinh) {
+  ASSERT_EQ(0.0, csinh(0));
+}
+
+extern "C" float _Complex csinhf(float _Complex);
+TEST(complex, csinhf) {
+  ASSERT_EQ(0.0, csinhf(0));
+}
+
+extern "C" double _Complex csqrt(double _Complex);
+TEST(complex, csqrt) {
+  ASSERT_EQ(0.0, csqrt(0));
+}
+
+extern "C" float _Complex csqrtf(float _Complex);
+TEST(complex, csqrtf) {
+  ASSERT_EQ(0.0f, csqrt(0));
+}
+
+extern "C" long double _Complex csqrtl(long double _Complex);
+TEST(complex, csqrtl) {
+  ASSERT_EQ(0.0, csqrtl(0));
+}
+
+extern "C" double _Complex ctan(double _Complex);
+TEST(complex, ctan) {
+  ASSERT_EQ(0.0, ctan(0));
+}
+
+extern "C" float _Complex ctanf(float _Complex);
+TEST(complex, ctanf) {
+  ASSERT_EQ(0.0, ctanf(0));
+}
+
+extern "C" double _Complex ctanh(double _Complex);
+TEST(complex, ctanh) {
+  ASSERT_EQ(0.0, ctanh(0));
+}
+
+extern "C" float _Complex ctanhf(float _Complex);
+TEST(complex, ctanhf) {
+  ASSERT_EQ(0.0, ctanhf(0));
+}
diff --git a/tests/dirent_test.cpp b/tests/dirent_test.cpp
index 6aadb37..214dd78 100644
--- a/tests/dirent_test.cpp
+++ b/tests/dirent_test.cpp
@@ -231,3 +231,50 @@
     ASSERT_EQ(pass1[i], pass2[i]);
   }
 }
+
+TEST(dirent, seekdir_telldir) {
+  DIR* d = opendir("/proc/self");
+  ASSERT_TRUE(d != NULL);
+  std::vector<long> offset_list;
+  std::vector<std::string> name_list;
+  dirent* e = NULL;
+
+  offset_list.push_back(telldir(d));
+  ASSERT_EQ(0L, offset_list.back());
+
+  while ((e = readdir(d)) != NULL) {
+    name_list.push_back(e->d_name);
+    offset_list.push_back(telldir(d));
+    // Make sure telldir() point to the next entry.
+    ASSERT_EQ(e->d_off, offset_list.back());
+  }
+
+  long end_offset = telldir(d);
+  // telldir() should not pass the end of the file.
+  ASSERT_EQ(offset_list.back(), end_offset);
+  offset_list.pop_back();
+
+  for (size_t i = 0; i < offset_list.size(); ++i) {
+    seekdir(d, offset_list[i]);
+    ASSERT_EQ(offset_list[i], telldir(d));
+    e = readdir(d);
+    ASSERT_TRUE(e != NULL);
+    ASSERT_STREQ(name_list[i].c_str(), e->d_name);
+  }
+  for (int i = static_cast<int>(offset_list.size()) - 1; i >= 0; --i) {
+    seekdir(d, offset_list[i]);
+    ASSERT_EQ(offset_list[i], telldir(d));
+    e = readdir(d);
+    ASSERT_TRUE(e != NULL);
+    ASSERT_STREQ(name_list[i].c_str(), e->d_name);
+  }
+
+  // Seek to the end, read NULL.
+  seekdir(d, end_offset);
+  ASSERT_EQ(end_offset, telldir(d));
+  errno = 0;
+  ASSERT_EQ(NULL, readdir(d));
+  ASSERT_EQ(0, errno);
+
+  ASSERT_EQ(0, closedir(d));
+}
diff --git a/tests/dl_test.cpp b/tests/dl_test.cpp
new file mode 100644
index 0000000..74c7b51
--- /dev/null
+++ b/tests/dl_test.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <dlfcn.h>
+#include <libgen.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdint.h>
+
+#include <string>
+
+extern "C" int main_global_default_serial() {
+  return 3370318;
+}
+
+extern "C" int main_global_protected_serial() {
+  return 2716057;
+}
+
+// The following functions are defined in DT_NEEDED
+// libdl_preempt_test.so library.
+
+// This one calls main_global_default_serial
+extern "C" int main_global_default_get_serial();
+
+// This one calls main_global_protected_serial
+extern "C" int main_global_protected_get_serial();
+
+// This one calls lib_global_default_serial
+extern "C" int lib_global_default_get_serial();
+
+// This one calls lib_global_protected_serial
+extern "C" int lib_global_protected_get_serial();
+
+// This test verifies that the global default function
+// main_global_default_serial() is preempted by
+// the function defined above.
+TEST(dl, main_preempts_global_default) {
+  ASSERT_EQ(3370318, main_global_default_get_serial());
+}
+
+// This one makes sure that the global protected
+// symbols do not get preempted
+TEST(dl, main_does_not_preempt_global_protected) {
+  ASSERT_EQ(3370318, main_global_protected_get_serial());
+}
+
+// check same things for lib
+TEST(dl, lib_preempts_global_default) {
+  ASSERT_EQ(3370318, lib_global_default_get_serial());
+}
+
+TEST(dl, lib_does_not_preempt_global_protected) {
+  ASSERT_EQ(3370318, lib_global_protected_get_serial());
+}
+
+// TODO: Add tests for LD_PRELOADs
diff --git a/tests/dlext_test.cpp b/tests/dlext_test.cpp
index 7f706c1..56a8f6f 100644
--- a/tests/dlext_test.cpp
+++ b/tests/dlext_test.cpp
@@ -17,8 +17,10 @@
 #include <gtest/gtest.h>
 
 #include <dlfcn.h>
+#include <elf.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <inttypes.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -29,6 +31,7 @@
 
 #include <pagemap/pagemap.h>
 
+#include "TemporaryFile.h"
 
 #define ASSERT_DL_NOTNULL(ptr) \
     ASSERT_TRUE(ptr != nullptr) << "dlerror: " << dlerror()
@@ -39,6 +42,9 @@
 #define ASSERT_NOERROR(i) \
     ASSERT_NE(-1, i) << "errno: " << strerror(errno)
 
+#define ASSERT_SUBSTR(needle, haystack) \
+    ASSERT_PRED_FORMAT2(::testing::IsSubstring, needle, haystack)
+
 
 typedef int (*fn)(void);
 #define LIBNAME "libdlext_test.so"
@@ -46,9 +52,9 @@
 #define LIBSIZE 1024*1024 // how much address space to reserve for it
 
 #if defined(__LP64__)
-#define LIBPATH_PREFIX "%s/nativetest64/libdlext_test_fd/"
+#define LIBPATH_PREFIX "/nativetest64/libdlext_test_fd/"
 #else
-#define LIBPATH_PREFIX "%s/nativetest/libdlext_test_fd/"
+#define LIBPATH_PREFIX "/nativetest/libdlext_test_fd/"
 #endif
 
 #define LIBPATH LIBPATH_PREFIX "libdlext_test_fd.so"
@@ -97,16 +103,13 @@
 }
 
 TEST_F(DlExtTest, ExtInfoUseFd) {
-  const char* android_data = getenv("ANDROID_DATA");
-  ASSERT_TRUE(android_data != nullptr);
-  char lib_path[PATH_MAX];
-  snprintf(lib_path, sizeof(lib_path), LIBPATH, android_data);
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBPATH;
 
   android_dlextinfo extinfo;
   extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD;
-  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path, O_RDONLY | O_CLOEXEC));
+  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path.c_str(), O_RDONLY | O_CLOEXEC));
   ASSERT_TRUE(extinfo.library_fd != -1);
-  handle_ = android_dlopen_ext(lib_path, RTLD_NOW, &extinfo);
+  handle_ = android_dlopen_ext(lib_path.c_str(), RTLD_NOW, &extinfo);
   ASSERT_DL_NOTNULL(handle_);
   fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
   ASSERT_DL_NOTNULL(f);
@@ -114,18 +117,14 @@
 }
 
 TEST_F(DlExtTest, ExtInfoUseFdWithOffset) {
-  const char* android_data = getenv("ANDROID_DATA");
-  ASSERT_TRUE(android_data != nullptr);
-
-  char lib_path[PATH_MAX];
-  snprintf(lib_path, sizeof(lib_path), LIBZIPPATH, android_data);
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH;
 
   android_dlextinfo extinfo;
   extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD | ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET;
-  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path, O_RDONLY | O_CLOEXEC));
+  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path.c_str(), O_RDONLY | O_CLOEXEC));
   extinfo.library_fd_offset = LIBZIP_OFFSET;
 
-  handle_ = android_dlopen_ext(lib_path, RTLD_NOW, &extinfo);
+  handle_ = android_dlopen_ext(lib_path.c_str(), RTLD_NOW, &extinfo);
   ASSERT_DL_NOTNULL(handle_);
 
   fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
@@ -134,27 +133,36 @@
 }
 
 TEST_F(DlExtTest, ExtInfoUseFdWithInvalidOffset) {
-  const char* android_data = getenv("ANDROID_DATA");
-  ASSERT_TRUE(android_data != nullptr);
-
-  char lib_path[PATH_MAX];
-  snprintf(lib_path, sizeof(lib_path), LIBZIPPATH, android_data);
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH;
+  // lib_path is relative when $ANDROID_DATA is relative
+  char lib_realpath_buf[PATH_MAX];
+  ASSERT_TRUE(realpath(lib_path.c_str(), lib_realpath_buf) == lib_realpath_buf);
+  const std::string lib_realpath = std::string(lib_realpath_buf);
 
   android_dlextinfo extinfo;
   extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD | ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET;
-  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path, O_RDONLY | O_CLOEXEC));
+  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path.c_str(), O_RDONLY | O_CLOEXEC));
   extinfo.library_fd_offset = 17;
 
   handle_ = android_dlopen_ext("libname_placeholder", RTLD_NOW, &extinfo);
   ASSERT_TRUE(handle_ == nullptr);
   ASSERT_STREQ("dlopen failed: file offset for the library \"libname_placeholder\" is not page-aligned: 17", dlerror());
 
-  extinfo.library_fd_offset = (5LL<<58) + PAGE_SIZE;
+  // Test an address above 2^44, for http://b/18178121 .
+  extinfo.library_fd_offset = (5LL<<48) + PAGE_SIZE;
   handle_ = android_dlopen_ext("libname_placeholder", RTLD_NOW, &extinfo);
-
   ASSERT_TRUE(handle_ == nullptr);
-  // TODO: Better error message when reading with offset > file_size
-  ASSERT_STREQ("dlopen failed: \"libname_placeholder\" has bad ELF magic", dlerror());
+  ASSERT_SUBSTR("dlopen failed: file offset for the library \"libname_placeholder\" >= file size", dlerror());
+
+  extinfo.library_fd_offset = 0LL - PAGE_SIZE;
+  handle_ = android_dlopen_ext("libname_placeholder", RTLD_NOW, &extinfo);
+  ASSERT_TRUE(handle_ == nullptr);
+  ASSERT_SUBSTR("dlopen failed: file offset for the library \"libname_placeholder\" is negative", dlerror());
+
+  extinfo.library_fd_offset = PAGE_SIZE;
+  handle_ = android_dlopen_ext("libname_ignored", RTLD_NOW, &extinfo);
+  ASSERT_TRUE(handle_ == nullptr);
+  ASSERT_EQ("dlopen failed: \"" + lib_realpath + "\" has bad ELF magic", dlerror());
 
   close(extinfo.library_fd);
 }
@@ -169,6 +177,80 @@
   ASSERT_STREQ("dlopen failed: invalid extended flag combination (ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET without ANDROID_DLEXT_USE_LIBRARY_FD): 0x20", dlerror());
 }
 
+TEST(dlext, android_dlopen_ext_force_load_smoke) {
+  // 1. Open actual file
+  void* handle = dlopen("libdlext_test.so", RTLD_NOW);
+  ASSERT_DL_NOTNULL(handle);
+  // 2. Open link with force_load flag set
+  android_dlextinfo extinfo;
+  extinfo.flags = ANDROID_DLEXT_FORCE_LOAD;
+  void* handle2 = android_dlopen_ext("libdlext_test_v2.so", RTLD_NOW, &extinfo);
+  ASSERT_DL_NOTNULL(handle2);
+  ASSERT_TRUE(handle != handle2);
+
+  dlclose(handle2);
+  dlclose(handle);
+}
+
+TEST(dlext, android_dlopen_ext_force_load_soname_exception) {
+  // Check if soname lookup still returns already loaded library
+  // when ANDROID_DLEXT_FORCE_LOAD flag is specified.
+  void* handle = dlopen("libdlext_test_v2.so", RTLD_NOW);
+  ASSERT_DL_NOTNULL(handle);
+
+  android_dlextinfo extinfo;
+  extinfo.flags = ANDROID_DLEXT_FORCE_LOAD;
+
+  // Note that 'libdlext_test.so' is dt_soname for libdlext_test_v2.so
+  void* handle2 = android_dlopen_ext("libdlext_test.so", RTLD_NOW, &extinfo);
+
+  ASSERT_DL_NOTNULL(handle2);
+  ASSERT_TRUE(handle == handle2);
+
+  dlclose(handle2);
+  dlclose(handle);
+}
+
+TEST(dlfcn, dlopen_from_zip_absolute_path) {
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH;
+
+  void* handle = dlopen((lib_path + "!libdir/libdlext_test_fd.so").c_str(), RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  int (*fn)(void);
+  fn = reinterpret_cast<int (*)(void)>(dlsym(handle, "getRandomNumber"));
+  ASSERT_TRUE(fn != nullptr);
+  EXPECT_EQ(4, fn());
+
+  dlclose(handle);
+}
+
+TEST(dlfcn, dlopen_from_zip_ld_library_path) {
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH + "!libdir";
+
+  typedef void (*fn_t)(const char*);
+  fn_t android_update_LD_LIBRARY_PATH =
+      reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "android_update_LD_LIBRARY_PATH"));
+
+  ASSERT_TRUE(android_update_LD_LIBRARY_PATH != nullptr) << dlerror();
+
+  void* handle = dlopen("libdlext_test_fd.so", RTLD_NOW);
+  ASSERT_TRUE(handle == nullptr);
+
+  android_update_LD_LIBRARY_PATH(lib_path.c_str());
+
+  handle = dlopen("libdlext_test_fd.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  int (*fn)(void);
+  fn = reinterpret_cast<int (*)(void)>(dlsym(handle, "getRandomNumber"));
+  ASSERT_TRUE(fn != nullptr);
+  EXPECT_EQ(4, fn());
+
+  dlclose(handle);
+}
+
+
 TEST_F(DlExtTest, Reserved) {
   void* start = mmap(nullptr, LIBSIZE, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS,
                      -1, 0);
@@ -181,7 +263,7 @@
   ASSERT_DL_NOTNULL(handle_);
   fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
   ASSERT_DL_NOTNULL(f);
-  EXPECT_GE(f, start);
+  EXPECT_GE(reinterpret_cast<void*>(f), start);
   EXPECT_LT(reinterpret_cast<void*>(f),
             reinterpret_cast<char*>(start) + LIBSIZE);
   EXPECT_EQ(4, f());
@@ -211,7 +293,7 @@
   ASSERT_DL_NOTNULL(handle_);
   fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
   ASSERT_DL_NOTNULL(f);
-  EXPECT_GE(f, start);
+  EXPECT_GE(reinterpret_cast<void*>(f), start);
   EXPECT_LT(reinterpret_cast<void*>(f),
             reinterpret_cast<char*>(start) + LIBSIZE);
   EXPECT_EQ(4, f());
@@ -229,8 +311,9 @@
   ASSERT_DL_NOTNULL(handle_);
   fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
   ASSERT_DL_NOTNULL(f);
-  EXPECT_TRUE(f < start || (reinterpret_cast<void*>(f) >=
-                            reinterpret_cast<char*>(start) + PAGE_SIZE));
+  EXPECT_TRUE(reinterpret_cast<void*>(f) < start ||
+              (reinterpret_cast<void*>(f) >=
+               reinterpret_cast<char*>(start) + PAGE_SIZE));
   EXPECT_EQ(4, f());
 }
 
@@ -245,21 +328,14 @@
     extinfo_.reserved_addr = start;
     extinfo_.reserved_size = LIBSIZE;
     extinfo_.relro_fd = -1;
-
-    const char* android_data = getenv("ANDROID_DATA");
-    ASSERT_TRUE(android_data != nullptr);
-    snprintf(relro_file_, sizeof(relro_file_), "%s/local/tmp/libdlext_test.relro", android_data);
   }
 
   virtual void TearDown() {
     DlExtTest::TearDown();
-    if (extinfo_.relro_fd != -1) {
-      ASSERT_NOERROR(close(extinfo_.relro_fd));
-    }
   }
 
-  void CreateRelroFile(const char* lib) {
-    int relro_fd = open(relro_file_, O_CREAT | O_RDWR | O_TRUNC, 0644);
+  void CreateRelroFile(const char* lib, const char* relro_file) {
+    int relro_fd = open(relro_file, O_RDWR | O_TRUNC);
     ASSERT_NOERROR(relro_fd);
 
     pid_t pid = fork();
@@ -284,7 +360,7 @@
     ASSERT_EQ(0, WEXITSTATUS(status));
 
     // reopen file for reading so it can be used
-    relro_fd = open(relro_file_, O_RDONLY);
+    relro_fd = open(relro_file, O_RDONLY);
     ASSERT_NOERROR(relro_fd);
     extinfo_.flags |= ANDROID_DLEXT_USE_RELRO;
     extinfo_.relro_fd = relro_fd;
@@ -301,33 +377,45 @@
   void SpawnChildrenAndMeasurePss(const char* lib, bool share_relro, size_t* pss_out);
 
   android_dlextinfo extinfo_;
-  char relro_file_[PATH_MAX];
 };
 
 TEST_F(DlExtRelroSharingTest, ChildWritesGoodData) {
-  ASSERT_NO_FATAL_FAILURE(CreateRelroFile(LIBNAME));
+  TemporaryFile tf; // Use tf to get an unique filename.
+  ASSERT_NOERROR(close(tf.fd));
+
+  ASSERT_NO_FATAL_FAILURE(CreateRelroFile(LIBNAME, tf.filename));
   ASSERT_NO_FATAL_FAILURE(TryUsingRelro(LIBNAME));
+
+  // Use destructor of tf to close and unlink the file.
+  tf.fd = extinfo_.relro_fd;
 }
 
 TEST_F(DlExtRelroSharingTest, ChildWritesNoRelro) {
-  ASSERT_NO_FATAL_FAILURE(CreateRelroFile(LIBNAME_NORELRO));
+  TemporaryFile tf; // // Use tf to get an unique filename.
+  ASSERT_NOERROR(close(tf.fd));
+
+  ASSERT_NO_FATAL_FAILURE(CreateRelroFile(LIBNAME_NORELRO, tf.filename));
   ASSERT_NO_FATAL_FAILURE(TryUsingRelro(LIBNAME_NORELRO));
+
+  // Use destructor of tf to close and unlink the file.
+  tf.fd = extinfo_.relro_fd;
 }
 
 TEST_F(DlExtRelroSharingTest, RelroFileEmpty) {
-  int relro_fd = open(relro_file_, O_CREAT | O_RDWR | O_TRUNC, 0644);
-  ASSERT_NOERROR(relro_fd);
-  ASSERT_NOERROR(close(relro_fd));
-
   ASSERT_NO_FATAL_FAILURE(TryUsingRelro(LIBNAME));
 }
 
 TEST_F(DlExtRelroSharingTest, VerifyMemorySaving) {
-  ASSERT_NO_FATAL_FAILURE(CreateRelroFile(LIBNAME));
-  int relro_fd = open(relro_file_, O_RDONLY);
-  ASSERT_NOERROR(relro_fd);
-  extinfo_.flags |= ANDROID_DLEXT_USE_RELRO;
-  extinfo_.relro_fd = relro_fd;
+  if (geteuid() != 0) {
+    GTEST_LOG_(INFO) << "This test must be run as root.\n";
+    return;
+  }
+
+  TemporaryFile tf; // Use tf to get an unique filename.
+  ASSERT_NOERROR(close(tf.fd));
+
+  ASSERT_NO_FATAL_FAILURE(CreateRelroFile(LIBNAME, tf.filename));
+
   int pipefd[2];
   ASSERT_NOERROR(pipe(pipefd));
 
@@ -339,6 +427,9 @@
   // it saves 40%+ for this test.
   size_t expected_size = without_sharing - (without_sharing/10);
   EXPECT_LT(with_sharing, expected_size);
+
+  // Use destructor of tf to close and unlink the file.
+  tf.fd = extinfo_.relro_fd;
 }
 
 void getPss(pid_t pid, size_t* pss_out) {
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index e24af13..6b1f109 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -26,9 +26,12 @@
 
 #include <string>
 
+#include "utils.h"
+
 #define ASSERT_SUBSTR(needle, haystack) \
     ASSERT_PRED_FORMAT2(::testing::IsSubstring, needle, haystack)
 
+
 static bool g_called = false;
 extern "C" void DlSymTestFunction() {
   g_called = true;
@@ -46,7 +49,7 @@
   ASSERT_EQ(17, g_ctor_function_called);
 }
 
-TEST(dlfcn, dlsym_in_self) {
+TEST(dlfcn, dlsym_in_executable) {
   dlerror(); // Clear any pending errors.
   void* self = dlopen(NULL, RTLD_NOW);
   ASSERT_TRUE(self != NULL);
@@ -64,6 +67,27 @@
   ASSERT_EQ(0, dlclose(self));
 }
 
+TEST(dlfcn, dlsym_from_sofile) {
+  void* handle = dlopen("libtest_dlsym_from_this.so", RTLD_LAZY | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  // check that we cant find '_test_dlsym_symbol' via dlsym(RTLD_DEFAULT)
+  void* symbol = dlsym(RTLD_DEFAULT, "test_dlsym_symbol");
+  ASSERT_TRUE(symbol == nullptr);
+  ASSERT_SUBSTR("undefined symbol: test_dlsym_symbol", dlerror());
+
+  typedef int* (*fn_t)();
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "lookup_dlsym_symbol_using_RTLD_DEFAULT"));
+
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+
+  int* ptr = fn();
+  ASSERT_TRUE(ptr != nullptr) << dlerror();
+  ASSERT_EQ(42, *ptr);
+
+  dlclose(handle);
+}
+
 TEST(dlfcn, dlsym_with_dependencies) {
   void* handle = dlopen("libtest_with_dependency.so", RTLD_NOW);
   ASSERT_TRUE(handle != NULL);
@@ -89,8 +113,34 @@
   ASSERT_EQ(0, dlclose(handle2));
 }
 
+TEST(dlfcn, dlopen_by_soname) {
+  static const char* soname = "libdlext_test_soname.so";
+  static const char* filename = "libdlext_test_different_soname.so";
+  // 1. Make sure there is no library with soname in default search path
+  void* handle = dlopen(soname, RTLD_NOW);
+  ASSERT_TRUE(handle == nullptr);
+
+  // 2. Load a library using filename
+  handle = dlopen(filename, RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  // 3. Find library by soname
+  void* handle_soname = dlopen(soname, RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle_soname != nullptr) << dlerror();
+  ASSERT_EQ(handle, handle_soname);
+
+  // 4. RTLD_NOLOAD should still work with filename
+  void* handle_filename = dlopen(filename, RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle_filename != nullptr) << dlerror();
+  ASSERT_EQ(handle, handle_filename);
+
+  dlclose(handle_filename);
+  dlclose(handle_soname);
+  dlclose(handle);
+}
+
 // ifuncs are only supported on intel and arm64 for now
-#if defined(__i386__) || defined(__x86_64__)
+#if defined (__aarch64__) || defined(__i386__) || defined(__x86_64__)
 TEST(dlfcn, ifunc) {
   typedef const char* (*fn_ptr)();
 
@@ -162,39 +212,39 @@
   ASSERT_EQ(1, fn());
 }
 
-TEST(dlfcn, dlopen_check_order) {
+TEST(dlfcn, dlopen_check_order_dlsym) {
   // Here is how the test library and its dt_needed
   // libraries are arranged
   //
-  //  libtest_check_order.so
+  //  libtest_check_order_children.so
   //  |
-  //  +-> libtest_check_order_1_left.so
+  //  +-> ..._1_left.so
   //  |   |
-  //  |   +-> libtest_check_order_a.so
+  //  |   +-> ..._a.so
   //  |   |
-  //  |   +-> libtest_check_order_b.so
+  //  |   +-> ...r_b.so
   //  |
-  //  +-> libtest_check_order_2_right.so
+  //  +-> ..._2_right.so
   //  |   |
-  //  |   +-> libtest_check_order_d.so
+  //  |   +-> ..._d.so
   //  |       |
-  //  |       +-> libtest_check_order_b.so
+  //  |       +-> ..._b.so
   //  |
-  //  +-> libtest_check_order_3_c.so
+  //  +-> ..._3_c.so
   //
   //  load order should be (1, 2, 3, a, b, d)
   //
   // get_answer() is defined in (2, 3, a, b, c)
   // get_answer2() is defined in (b, d)
-  void* sym = dlsym(RTLD_DEFAULT, "dlopen_test_get_answer");
+  void* sym = dlsym(RTLD_DEFAULT, "check_order_dlsym_get_answer");
   ASSERT_TRUE(sym == nullptr);
-  void* handle = dlopen("libtest_check_order.so", RTLD_NOW | RTLD_GLOBAL);
-  ASSERT_TRUE(handle != nullptr);
+  void* handle = dlopen("libtest_check_order_dlsym.so", RTLD_NOW | RTLD_GLOBAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
   typedef int (*fn_t) (void);
   fn_t fn, fn2;
-  fn = reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "dlopen_test_get_answer"));
+  fn = reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "check_order_dlsym_get_answer"));
   ASSERT_TRUE(fn != NULL) << dlerror();
-  fn2 = reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "dlopen_test_get_answer2"));
+  fn2 = reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "check_order_dlsym_get_answer2"));
   ASSERT_TRUE(fn2 != NULL) << dlerror();
 
   ASSERT_EQ(42, fn());
@@ -202,29 +252,387 @@
   dlclose(handle);
 }
 
+TEST(dlfcn, dlopen_check_order_reloc_siblings) {
+  // This is how this one works:
+  // we lookup and call get_answer which is defined in '_2.so'
+  // and in turn calls external get_answer_impl() defined in _1.so and in '_[a-f].so'
+  // the correct _impl() is implemented by '_a.so';
+  //
+  // Note that this is test for RTLD_LOCAL (TODO: test for GLOBAL?)
+  //
+  // Here is the picture:
+  //
+  // libtest_check_order_reloc_siblings.so
+  // |
+  // +-> ..._1.so <- empty
+  // |   |
+  // |   +-> ..._a.so <- exports correct answer_impl()
+  // |   |
+  // |   +-> ..._b.so <- every other letter exporting incorrect one.
+  // |
+  // +-> ..._2.so <- empty
+  // |   |
+  // |   +-> ..._c.so
+  // |   |
+  // |   +-> ..._d.so
+  // |
+  // +-> ..._3.so <- empty
+  //     |
+  //     +-> ..._e.so
+  //     |
+  //     +-> ..._f.so <- exports get_answer() that calls get_anser_impl();
+  //                     implements incorrect get_answer_impl()
+
+  void* handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+#ifdef __BIONIC__
+  // TODO: glibc returns nullptr on dlerror() here. Is it bug?
+  ASSERT_STREQ("dlopen failed: library \"libtest_check_order_reloc_siblings.so\" wasn't loaded and RTLD_NOLOAD prevented it", dlerror());
+#endif
+
+  handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  typedef int (*fn_t) (void);
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "check_order_reloc_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
+
+  ASSERT_EQ(0, dlclose(handle));
+}
+
+TEST(dlfcn, dlopen_check_order_reloc_siblings_with_preload) {
+  // This test uses the same library as dlopen_check_order_reloc_siblings.
+  // Unlike dlopen_check_order_reloc_siblings it preloads
+  // libtest_check_order_reloc_siblings_1.so (first dependency) prior to
+  // dlopen(libtest_check_order_reloc_siblings.so)
+
+  void* handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+  handle = dlopen("libtest_check_order_reloc_siblings_1.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+
+  void* handle_for_1 = dlopen("libtest_check_order_reloc_siblings_1.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle_for_1 != nullptr) << dlerror();
+
+  handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  ASSERT_EQ(0, dlclose(handle_for_1));
+
+  typedef int (*fn_t) (void);
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "check_order_reloc_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
+
+  ASSERT_EQ(0, dlclose(handle));
+}
+
+TEST(dlfcn, dlopen_check_order_reloc_grandchild) {
+  // This is how this one works:
+  // we lookup and call grandchild_get_answer which is defined in '_2.so'
+  // and in turn calls external get_answer_impl() defined in '_c_1.so and _c_2.so'
+  // the correct _impl() is implemented by '_c_1.so';
+  //
+  // Here is the picture of subtree:
+  //
+  // libtest_check_order_reloc_siblings.so
+  // |
+  // +-> ..._2.so <- grandchild_get_answer()
+  //     |
+  //     +-> ..._c.so <- empty
+  //     |   |
+  //     |   +-> _c_1.so <- exports correct answer_impl()
+  //     |   |
+  //     |   +-> _c_2.so <- exports incorrect answer_impl()
+  //     |
+  //     +-> ..._d.so <- empty
+
+  void* handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+#ifdef __BIONIC__
+  // TODO: glibc returns nullptr on dlerror() here. Is it bug?
+  ASSERT_STREQ("dlopen failed: library \"libtest_check_order_reloc_siblings.so\" wasn't loaded and RTLD_NOLOAD prevented it", dlerror());
+#endif
+
+  handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  typedef int (*fn_t) (void);
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "check_order_reloc_grandchild_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
+
+  ASSERT_EQ(0, dlclose(handle));
+}
+
+TEST(dlfcn, dlopen_check_order_reloc_nephew) {
+  // This is how this one works:
+  // we lookup and call nephew_get_answer which is defined in '_2.so'
+  // and in turn calls external get_answer_impl() defined in '_[a-f].so'
+  // the correct _impl() is implemented by '_a.so';
+  //
+  // Here is the picture:
+  //
+  // libtest_check_order_reloc_siblings.so
+  // |
+  // +-> ..._1.so <- empty
+  // |   |
+  // |   +-> ..._a.so <- exports correct answer_impl()
+  // |   |
+  // |   +-> ..._b.so <- every other letter exporting incorrect one.
+  // |
+  // +-> ..._2.so <- empty
+  // |   |
+  // |   +-> ..._c.so
+  // |   |
+  // |   +-> ..._d.so
+  // |
+  // +-> ..._3.so <- nephew_get_answer() that calls get_answer_impl();
+  //     |
+  //     +-> ..._e.so
+  //     |
+  //     +-> ..._f.so
+
+  void* handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+#ifdef __BIONIC__
+  // TODO: glibc returns nullptr on dlerror() here. Is it bug?
+  ASSERT_STREQ("dlopen failed: library \"libtest_check_order_reloc_siblings.so\" wasn't loaded and RTLD_NOLOAD prevented it", dlerror());
+#endif
+
+  handle = dlopen("libtest_check_order_reloc_siblings.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  typedef int (*fn_t) (void);
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "check_order_reloc_nephew_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
+
+  ASSERT_EQ(0, dlclose(handle));
+}
+
+TEST(dlfcn, check_unload_after_reloc) {
+  // This is how this one works:
+  // libtest_two_parents_parent1 <- answer_impl() used by libtest_two_parents_child
+  // |
+  // +-> libtest_two_parents_child
+  //
+  // libtest_two_parents_parent2 <- answer_impl() not used by libtest_two_parents_child
+  // |
+  // +-> libtest_two_parents_child
+  //
+  // Test dlopens parent1 which loads and relocates libtest_two_parents_child.so
+  // as a second step it dlopens parent2 and dlcloses parent1...
+
+  void* handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  void* handle2 = dlopen("libtest_two_parents_parent2.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle2 != nullptr) << dlerror();
+
+  typedef int (*fn_t) (void);
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle2, "check_order_reloc_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
+
+  ASSERT_EQ(0, dlclose(handle));
+
+  handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL | RTLD_NOLOAD);
+  ASSERT_TRUE(handle != nullptr);
+  ASSERT_EQ(0, dlclose(handle));
+
+  fn = reinterpret_cast<fn_t>(dlsym(handle2, "check_order_reloc_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
+
+  ASSERT_EQ(0, dlclose(handle2));
+
+  handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+}
+
+extern "C" int check_order_reloc_root_get_answer_impl() {
+  return 42;
+}
+
+TEST(dlfcn, dlopen_check_order_reloc_main_executable) {
+  // This is how this one works:
+  // we lookup and call get_answer3 which is defined in 'root.so'
+  // and in turn calls external root_get_answer_impl() defined in _2.so and
+  // above the correct _impl() is one in the executable.
+  //
+  // libtest_check_order_reloc_root.so
+  // |
+  // +-> ..._1.so <- empty
+  // |
+  // +-> ..._2.so <- gives incorrect answer for answer_main_impl()
+  //
+
+  void* handle = dlopen("libtest_check_order_reloc_root.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+#ifdef __BIONIC__
+  // TODO: glibc returns nullptr on dlerror() here. Is it bug?
+  ASSERT_STREQ("dlopen failed: library \"libtest_check_order_reloc_root.so\" wasn't loaded and RTLD_NOLOAD prevented it", dlerror());
+#endif
+
+  handle = dlopen("libtest_check_order_reloc_root.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  typedef int (*fn_t) (void);
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "check_order_reloc_root_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
+
+  ASSERT_EQ(0, dlclose(handle));
+}
+
+TEST(dlfcn, dlopen_check_rtld_local) {
+  void* sym = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
+  ASSERT_TRUE(sym == nullptr);
+
+  // implicit RTLD_LOCAL
+  void* handle = dlopen("libtest_simple.so", RTLD_NOW);
+  sym = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
+  ASSERT_TRUE(sym == nullptr);
+  ASSERT_SUBSTR("undefined symbol: dlopen_testlib_simple_func", dlerror());
+  sym = dlsym(handle, "dlopen_testlib_simple_func");
+  ASSERT_TRUE(sym != nullptr);
+  ASSERT_TRUE(reinterpret_cast<bool (*)(void)>(sym)());
+  dlclose(handle);
+
+  // explicit RTLD_LOCAL
+  handle = dlopen("libtest_simple.so", RTLD_NOW | RTLD_LOCAL);
+  sym = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
+  ASSERT_TRUE(sym == nullptr);
+  ASSERT_SUBSTR("undefined symbol: dlopen_testlib_simple_func", dlerror());
+  sym = dlsym(handle, "dlopen_testlib_simple_func");
+  ASSERT_TRUE(sym != nullptr);
+  ASSERT_TRUE(reinterpret_cast<bool (*)(void)>(sym)());
+  dlclose(handle);
+}
+
+TEST(dlfcn, dlopen_check_rtld_global) {
+  void* sym = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
+  ASSERT_TRUE(sym == nullptr);
+
+  void* handle = dlopen("libtest_simple.so", RTLD_NOW | RTLD_GLOBAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  sym = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
+  ASSERT_TRUE(sym != nullptr) << dlerror();
+  ASSERT_TRUE(reinterpret_cast<bool (*)(void)>(sym)());
+  dlclose(handle);
+
+  // RTLD_GLOBAL implies RTLD_NODELETE, let's check that
+  void* sym_after_dlclose = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
+  ASSERT_EQ(sym, sym_after_dlclose);
+}
+
 // libtest_with_dependency_loop.so -> libtest_with_dependency_loop_a.so ->
 // libtest_with_dependency_loop_b.so -> libtest_with_dependency_loop_c.so ->
 // libtest_with_dependency_loop_a.so
 TEST(dlfcn, dlopen_check_loop) {
   void* handle = dlopen("libtest_with_dependency_loop.so", RTLD_NOW);
-#if defined(__BIONIC__)
-  ASSERT_TRUE(handle == nullptr);
-  ASSERT_STREQ("dlopen failed: recursive link to \"libtest_with_dependency_loop_a.so\"", dlerror());
-  // This symbol should never be exposed
-  void* f = dlsym(RTLD_DEFAULT, "dlopen_test_invalid_function");
-  ASSERT_TRUE(f == nullptr);
-  ASSERT_SUBSTR("undefined symbol: dlopen_test_invalid_function", dlerror());
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  void* f = dlsym(handle, "dlopen_test_loopy_function");
+  ASSERT_TRUE(f != nullptr) << dlerror();
+  EXPECT_TRUE(reinterpret_cast<bool (*)(void)>(f)());
+  ASSERT_EQ(0, dlclose(handle));
 
-  // dlopen second time to make sure that the library wasn't loaded even though dlopen returned null.
-  // This may happen if during cleanup the root library or one of the depended libs were not removed
-  // from soinfo list.
+  // dlopen second time to make sure that the library was unloaded correctly
   handle = dlopen("libtest_with_dependency_loop.so", RTLD_NOW | RTLD_NOLOAD);
   ASSERT_TRUE(handle == nullptr);
+#ifdef __BIONIC__
+  // TODO: glibc returns nullptr on dlerror() here. Is it bug?
   ASSERT_STREQ("dlopen failed: library \"libtest_with_dependency_loop.so\" wasn't loaded and RTLD_NOLOAD prevented it", dlerror());
-#else // glibc allows recursive links
-  ASSERT_TRUE(handle != nullptr);
-  dlclose(handle);
 #endif
+
+  handle = dlopen("libtest_with_dependency_a.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
+}
+
+TEST(dlfcn, dlopen_nodelete) {
+  static bool is_unloaded = false;
+
+  void* handle = dlopen("libtest_nodelete_1.so", RTLD_NOW | RTLD_NODELETE);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  void (*set_unload_flag_ptr)(bool*);
+  set_unload_flag_ptr = reinterpret_cast<void (*)(bool*)>(dlsym(handle, "dlopen_nodelete_1_set_unload_flag_ptr"));
+  ASSERT_TRUE(set_unload_flag_ptr != nullptr) << dlerror();
+  set_unload_flag_ptr(&is_unloaded);
+
+  uint32_t* taxicab_number = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_1_taxicab_number"));
+  ASSERT_TRUE(taxicab_number != nullptr) << dlerror();
+  ASSERT_EQ(1729U, *taxicab_number);
+  *taxicab_number = 2;
+
+  dlclose(handle);
+  ASSERT_TRUE(!is_unloaded);
+
+  uint32_t* taxicab_number_after_dlclose = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_1_taxicab_number"));
+  ASSERT_EQ(taxicab_number_after_dlclose, taxicab_number);
+  ASSERT_EQ(2U, *taxicab_number_after_dlclose);
+
+
+  handle = dlopen("libtest_nodelete_1.so", RTLD_NOW);
+  uint32_t* taxicab_number2 = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_1_taxicab_number"));
+  ASSERT_EQ(taxicab_number2, taxicab_number);
+
+  ASSERT_EQ(2U, *taxicab_number2);
+
+  dlclose(handle);
+  ASSERT_TRUE(!is_unloaded);
+}
+
+TEST(dlfcn, dlopen_nodelete_on_second_dlopen) {
+  static bool is_unloaded = false;
+
+  void* handle = dlopen("libtest_nodelete_2.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  void (*set_unload_flag_ptr)(bool*);
+  set_unload_flag_ptr = reinterpret_cast<void (*)(bool*)>(dlsym(handle, "dlopen_nodelete_2_set_unload_flag_ptr"));
+  ASSERT_TRUE(set_unload_flag_ptr != nullptr) << dlerror();
+  set_unload_flag_ptr(&is_unloaded);
+
+  uint32_t* taxicab_number = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_2_taxicab_number"));
+  ASSERT_TRUE(taxicab_number != nullptr) << dlerror();
+
+  ASSERT_EQ(1729U, *taxicab_number);
+  *taxicab_number = 2;
+
+  // This RTLD_NODELETE should be ignored
+  void* handle1 = dlopen("libtest_nodelete_2.so", RTLD_NOW | RTLD_NODELETE);
+  ASSERT_TRUE(handle1 != nullptr) << dlerror();
+  ASSERT_EQ(handle, handle1);
+
+  dlclose(handle1);
+  dlclose(handle);
+
+  ASSERT_TRUE(is_unloaded);
+}
+
+TEST(dlfcn, dlopen_nodelete_dt_flags_1) {
+  static bool is_unloaded = false;
+
+  void* handle = dlopen("libtest_nodelete_dt_flags_1.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  void (*set_unload_flag_ptr)(bool*);
+  set_unload_flag_ptr = reinterpret_cast<void (*)(bool*)>(dlsym(handle, "dlopen_nodelete_dt_flags_1_set_unload_flag_ptr"));
+  ASSERT_TRUE(set_unload_flag_ptr != nullptr) << dlerror();
+  set_unload_flag_ptr(&is_unloaded);
+
+  dlclose(handle);
+  ASSERT_TRUE(!is_unloaded);
+}
+
+TEST(dlfcn, dlsym_df_1_global) {
+  void* handle = dlopen("libtest_dlsym_df_1_global.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  int (*get_answer)();
+  get_answer = reinterpret_cast<int (*)()>(dlsym(handle, "dl_df_1_global_get_answer"));
+  ASSERT_TRUE(get_answer != nullptr) << dlerror();
+  ASSERT_EQ(42, get_answer());
+  ASSERT_EQ(0, dlclose(handle));
 }
 
 TEST(dlfcn, dlopen_failure) {
@@ -290,7 +698,7 @@
   ASSERT_EQ(0, dlclose(self));
 }
 
-TEST(dlfcn, dladdr) {
+TEST(dlfcn, dladdr_executable) {
   dlerror(); // Clear any pending errors.
   void* self = dlopen(NULL, RTLD_NOW);
   ASSERT_TRUE(self != NULL);
@@ -311,13 +719,11 @@
   rc = readlink("/proc/self/exe", executable_path, sizeof(executable_path));
   ASSERT_NE(rc, -1);
   executable_path[rc] = '\0';
-  std::string executable_name(basename(executable_path));
 
   // The filename should be that of this executable.
-  // Note that we don't know whether or not we have the full path, so we want an "ends_with" test.
-  std::string dli_fname(info.dli_fname);
-  dli_fname = basename(&dli_fname[0]);
-  ASSERT_EQ(dli_fname, executable_name);
+  char dli_realpath[PATH_MAX];
+  ASSERT_TRUE(realpath(info.dli_fname, dli_realpath) != nullptr);
+  ASSERT_STREQ(executable_path, dli_realpath);
 
   // The symbol name should be the symbol we looked up.
   ASSERT_STREQ(info.dli_sname, "DlSymTestFunction");
@@ -325,22 +731,16 @@
   // The address should be the exact address of the symbol.
   ASSERT_EQ(info.dli_saddr, sym);
 
-  // Look in /proc/pid/maps to find out what address we were loaded at.
-  // TODO: factor /proc/pid/maps parsing out into a class and reuse all over bionic.
-  void* base_address = NULL;
-  char line[BUFSIZ];
-  FILE* fp = fopen("/proc/self/maps", "r");
-  ASSERT_TRUE(fp != NULL);
-  while (fgets(line, sizeof(line), fp) != NULL) {
-    uintptr_t start = strtoul(line, 0, 16);
-    line[strlen(line) - 1] = '\0'; // Chomp the '\n'.
-    char* path = strchr(line, '/');
-    if (path != NULL && strcmp(executable_path, path) == 0) {
-      base_address = reinterpret_cast<void*>(start);
+  std::vector<map_record> maps;
+  ASSERT_TRUE(Maps::parse_maps(&maps));
+
+  void* base_address = nullptr;
+  for (const map_record& rec : maps) {
+    if (executable_path == rec.pathname) {
+      base_address = reinterpret_cast<void*>(rec.addr_start);
       break;
     }
   }
-  fclose(fp);
 
   // The base address should be the address we were loaded at.
   ASSERT_EQ(info.dli_fbase, base_address);
@@ -348,6 +748,32 @@
   ASSERT_EQ(0, dlclose(self));
 }
 
+#if defined(__LP64__)
+#define BIONIC_PATH_TO_LIBC "/system/lib64/libc.so"
+#else
+#define BIONIC_PATH_TO_LIBC "/system/lib/libc.so"
+#endif
+
+TEST(dlfcn, dladdr_libc) {
+#if defined(__BIONIC__)
+  Dl_info info;
+  void* addr = reinterpret_cast<void*>(puts); // well-known libc function
+  ASSERT_TRUE(dladdr(addr, &info) != 0);
+
+  // /system/lib is symlink when this test is executed on host.
+  char libc_realpath[PATH_MAX];
+  ASSERT_TRUE(realpath(BIONIC_PATH_TO_LIBC, libc_realpath) == libc_realpath);
+
+  ASSERT_STREQ(libc_realpath, info.dli_fname);
+  // TODO: add check for dfi_fbase
+  ASSERT_STREQ("puts", info.dli_sname);
+  ASSERT_EQ(addr, info.dli_saddr);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing for glibc. Glibc returns path from ldconfig "
+      "for libc.so, which is symlink itself (not a realpath).\n";
+#endif
+}
+
 TEST(dlfcn, dladdr_invalid) {
   Dl_info info;
 
@@ -362,19 +788,52 @@
   ASSERT_TRUE(dlerror() == NULL); // dladdr(3) doesn't set dlerror(3).
 }
 
-// Our dynamic linker doesn't support GNU hash tables.
-#if defined(__BIONIC__)
 // GNU-style ELF hash tables are incompatible with the MIPS ABI.
 // MIPS requires .dynsym to be sorted to match the GOT but GNU-style requires sorting by hash code.
-#if !defined(__mips__)
 TEST(dlfcn, dlopen_library_with_only_gnu_hash) {
+#if !defined(__mips__)
   dlerror(); // Clear any pending errors.
-  void* handle = dlopen("no-elf-hash-table-library.so", RTLD_NOW);
-  ASSERT_TRUE(handle == NULL);
-  ASSERT_STREQ("dlopen failed: empty/missing DT_HASH in \"no-elf-hash-table-library.so\" (built with --hash-style=gnu?)", dlerror());
+  void* handle = dlopen("libgnu-hash-table-library.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  auto guard = make_scope_guard([&]() {
+    dlclose(handle);
+  });
+  void* sym = dlsym(handle, "getRandomNumber");
+  ASSERT_TRUE(sym != nullptr) << dlerror();
+  int (*fn)(void);
+  fn = reinterpret_cast<int (*)(void)>(sym);
+  EXPECT_EQ(4, fn());
+
+  Dl_info dlinfo;
+  ASSERT_TRUE(0 != dladdr(reinterpret_cast<void*>(fn), &dlinfo));
+
+  ASSERT_TRUE(fn == dlinfo.dli_saddr);
+  ASSERT_STREQ("getRandomNumber", dlinfo.dli_sname);
+  ASSERT_SUBSTR("libgnu-hash-table-library.so", dlinfo.dli_fname);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing for mips/mips64; mips toolchain does not support '--hash-style=gnu'\n";
+#endif
 }
-#endif
-#endif
+
+TEST(dlfcn, dlopen_library_with_only_sysv_hash) {
+  void* handle = dlopen("libsysv-hash-table-library.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  auto guard = make_scope_guard([&]() {
+    dlclose(handle);
+  });
+  void* sym = dlsym(handle, "getRandomNumber");
+  ASSERT_TRUE(sym != nullptr) << dlerror();
+  int (*fn)(void);
+  fn = reinterpret_cast<int (*)(void)>(sym);
+  EXPECT_EQ(4, fn());
+
+  Dl_info dlinfo;
+  ASSERT_TRUE(0 != dladdr(reinterpret_cast<void*>(fn), &dlinfo));
+
+  ASSERT_TRUE(fn == dlinfo.dli_saddr);
+  ASSERT_STREQ("getRandomNumber", dlinfo.dli_sname);
+  ASSERT_SUBSTR("libsysv-hash-table-library.so", dlinfo.dli_fname);
+}
 
 TEST(dlfcn, dlopen_bad_flags) {
   dlerror(); // Clear any pending errors.
@@ -419,7 +878,7 @@
 
 TEST(dlfcn, dlsym_weak_func) {
   dlerror();
-  void* handle = dlopen("libtest_dlsym_weak_func.so",RTLD_NOW);
+  void* handle = dlopen("libtest_dlsym_weak_func.so", RTLD_NOW);
   ASSERT_TRUE(handle != NULL);
 
   int (*weak_func)();
@@ -429,10 +888,96 @@
   dlclose(handle);
 }
 
+TEST(dlfcn, dlopen_undefined_weak_func) {
+  void* handle = dlopen("libtest_dlopen_weak_undefined_func.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  int (*weak_func)();
+  weak_func = reinterpret_cast<int (*)()>(dlsym(handle, "use_weak_undefined_func"));
+  ASSERT_TRUE(weak_func != nullptr) << dlerror();
+  EXPECT_EQ(6551, weak_func());
+  dlclose(handle);
+}
+
 TEST(dlfcn, dlopen_symlink) {
   void* handle1 = dlopen("libdlext_test.so", RTLD_NOW);
   void* handle2 = dlopen("libdlext_test_v2.so", RTLD_NOW);
   ASSERT_TRUE(handle1 != NULL);
   ASSERT_TRUE(handle2 != NULL);
   ASSERT_EQ(handle1, handle2);
+  dlclose(handle1);
+  dlclose(handle2);
+}
+
+// libtest_dlopen_from_ctor_main.so depends on
+// libtest_dlopen_from_ctor.so which has a constructor
+// that calls dlopen(libc...). This is to test the situation
+// described in b/7941716.
+TEST(dlfcn, dlopen_dlopen_from_ctor) {
+#if defined(__BIONIC__)
+  void* handle = dlopen("libtest_dlopen_from_ctor_main.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  dlclose(handle);
+#else
+  GTEST_LOG_(INFO) << "This test is disabled for glibc (glibc segfaults if you try to call dlopen from a constructor).\n";
+#endif
+}
+
+TEST(dlfcn, symbol_versioning_use_v1) {
+  void* handle = dlopen("libtest_versioned_uselibv1.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  typedef int (*fn_t)();
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "get_function_version"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(1, fn());
+  dlclose(handle);
+}
+
+TEST(dlfcn, symbol_versioning_use_v2) {
+  void* handle = dlopen("libtest_versioned_uselibv2.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  typedef int (*fn_t)();
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "get_function_version"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(2, fn());
+  dlclose(handle);
+}
+
+TEST(dlfcn, symbol_versioning_use_other_v2) {
+  void* handle = dlopen("libtest_versioned_uselibv2_other.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  typedef int (*fn_t)();
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "get_function_version"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(20, fn());
+  dlclose(handle);
+}
+
+TEST(dlfcn, symbol_versioning_use_other_v3) {
+  void* handle = dlopen("libtest_versioned_uselibv3_other.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  typedef int (*fn_t)();
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "get_function_version"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(3, fn());
+  dlclose(handle);
+}
+
+TEST(dlfcn, symbol_versioning_default_via_dlsym) {
+  void* handle = dlopen("libtest_versioned_lib.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  typedef int (*fn_t)();
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "versioned_function"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(3, fn()); // the default version is 3
+  dlclose(handle);
+}
+
+// This preempts the implementation from libtest_versioned_lib.so
+extern "C" int version_zero_function() {
+  return 0;
+}
+
+// This preempts the implementation from libtest_versioned_uselibv*.so
+extern "C" int version_zero_function2() {
+  return 0;
 }
diff --git a/tests/error_test.cpp b/tests/error_test.cpp
new file mode 100644
index 0000000..5fee16f
--- /dev/null
+++ b/tests/error_test.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must 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 THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (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 <gtest/gtest.h>
+
+#include <error.h>
+
+#include "BionicDeathTest.h"
+
+static size_t g_test_error_print_progname_invocation_count;
+
+static void test_error_print_progname() {
+  ++g_test_error_print_progname_invocation_count;
+}
+
+TEST(error, smoke) {
+  error_message_count = 0;
+  error(0, 0, "oops");
+  ASSERT_EQ(1U, error_message_count);
+  error(0, ENOENT, "couldn't open file '%s'", "blah");
+  ASSERT_EQ(2U, error_message_count);
+
+  error_print_progname = test_error_print_progname;
+  g_test_error_print_progname_invocation_count = 0;
+  error(0, 0, "oops");
+  ASSERT_EQ(1U, g_test_error_print_progname_invocation_count);
+
+  error_at_line(0, 0, "blah.c", 123, "hello %s", "world");
+
+  error_print_progname = NULL;
+}
+
+TEST(error_DeathTest, error_exit) {
+  ASSERT_EXIT(error(22, 0, "x%c", 'y'), ::testing::ExitedWithCode(22), "xy");
+}
+
+TEST(error_DeathTest, error_exit_with_errno) {
+  ASSERT_EXIT(error(22, EBADF, "x%c", 'y'), ::testing::ExitedWithCode(22), ": xy: Bad file descriptor");
+}
+
+TEST(error_DeathTest, error_at_line_exit) {
+  ASSERT_EXIT(error_at_line(22, 0, "a.c", 123, "x%c", 'y'), ::testing::ExitedWithCode(22), ":a.c:123: xy");
+}
+
+TEST(error_DeathTest, error_at_line_exit_with_errno) {
+  ASSERT_EXIT(error_at_line(22, EBADF, "a.c", 123, "x%c", 'y'), ::testing::ExitedWithCode(22), ":a.c:123: xy: Bad file descriptor");
+}
diff --git a/tests/file-check-cxx b/tests/file-check-cxx
new file mode 100755
index 0000000..8ece835
--- /dev/null
+++ b/tests/file-check-cxx
@@ -0,0 +1,13 @@
+#!/bin/bash
+FILECHECK=$1
+CXX=$2
+PREFIX=$3
+ARGS=${*:4}
+SOURCE=$(echo $ARGS | grep -oP '\S+\.cpp\b')
+OBJ=$(echo $ARGS | grep -oP '\S+\.o\b')
+$CXX $ARGS 2>&1 | $FILECHECK -check-prefix=$PREFIX $SOURCE
+if [ "$?" -eq 0 ]; then
+  touch $OBJ
+else
+  exit 1
+fi
diff --git a/tests/fortify_compilation_test.cpp b/tests/fortify_compilation_test.cpp
new file mode 100644
index 0000000..537b341
--- /dev/null
+++ b/tests/fortify_compilation_test.cpp
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#undef _FORTIFY_SOURCE
+#define _FORTIFY_SOURCE 2
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <poll.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <unistd.h>
+
+void test_sprintf() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___sprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  sprintf(buf, "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___sprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  sprintf(buf, "%s", "foobar");  // NOLINT(runtime/printf)
+}
+
+void test_snprintf() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, "%s", "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, " %s ", "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, "%d", 100000);  // NOLINT(runtime/printf)
+}
+
+void test_memcpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to void* __builtin___memcpy_chk(void*, const void*, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  memcpy(buf, "foobar", sizeof("foobar"));
+}
+
+void test_memmove() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to void* __builtin___memmove_chk(void*, const void*, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  memmove(buf, "foobar", sizeof("foobar"));
+}
+
+void test_memset() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to void* __builtin___memset_chk(void*, int, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  memset(buf, 0, 6);
+}
+
+void test_strcpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to {{(char\* __builtin___strcpy_chk\(char\*, const char\*, unsigned int\))|(void\* __builtin___memcpy_chk\(void\*, const void\*, (long )?unsigned int, (long )?unsigned int\))}} will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  strcpy(buf, "foobar");  // NOLINT(runtime/printf)
+}
+
+void test_stpcpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to char* __builtin___stpcpy_chk(char*, const char*, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  stpcpy(buf, "foobar");
+}
+
+void test_strncpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to char* __builtin___strncpy_chk(char*, const char*, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  strncpy(buf, "foobar", sizeof("foobar"));
+}
+
+void test_strcat() {
+  char buf[4] = "";
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to {{(char\* __builtin___strcat_chk\(char\*, const char\*, unsigned int\))|(void\* __builtin___memcpy_chk\(void\*, const void\*, (long )?unsigned int, (long )?unsigned int\))}} will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  strcat(buf, "foobar");  // NOLINT(runtime/printf)
+}
+
+void test_strncat() {
+  char buf[4] = "";
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to {{(char\* __builtin___strcat_chk\(char\*, const char\*, unsigned int\))|(void\* __builtin___memcpy_chk\(void\*, const void\*, (long )?unsigned int, (long )?unsigned int\))}} will always overflow destination buffer
+  // gcc output warning with __builtin___strcat_chk for __builtin___strncat_chk.
+  // clang should emit a warning, but doesn't
+  strncat(buf, "foobar", sizeof("foobar"));
+}
+
+void test_vsprintf(const char* fmt, ...) {
+  va_list va;
+  char buf[4];
+  va_start(va, fmt);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___vsprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, {{(__va_list)|(void\*)|(char\*)|(__va_list_tag\*)}}) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  vsprintf(buf, "foobar", va);
+  va_end(va);
+}
+
+void test_vsnprintf(const char* fmt, ...) {
+  va_list va;
+  char buf[4];
+  va_start(va, fmt);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___vsnprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, {{(__va_list)|(void\*)|(char\*)|(__va_list_tag\*)}}) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  vsnprintf(buf, 5, "foobar", va);  // NOLINT(runtime/printf)
+
+  va_end(va);
+}
+
+void test_fgets() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__fgets_too_small_error' declared with attribute error: fgets called with size less than zero
+  // clang should emit a warning, but doesn't
+  fgets(buf, -1, stdin);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__fgets_too_big_error' declared with attribute error: fgets called with size bigger than buffer
+  // clang should emit a warning, but doesn't
+  fgets(buf, 6, stdin);
+}
+
+void test_recvfrom() {
+  char buf[4];
+  sockaddr_in addr;
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__recvfrom_error' declared with attribute error: recvfrom called with size bigger than buffer
+  // clang should emit a warning, but doesn't
+  recvfrom(0, buf, 6, 0, reinterpret_cast<sockaddr*>(&addr), NULL);
+}
+
+void test_umask() {
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__umask_invalid_mode' declared with attribute error: umask called with invalid mode
+  // clang should emit a warning, but doesn't
+  umask(01777);
+}
+
+void test_read() {
+  char buf[4];
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__read_dest_size_error' declared with attribute error: read called with size bigger than destination
+  // clang should emit a warning, but doesn't
+  read(0, buf, 6);
+}
+
+void test_open() {
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__creat_missing_mode' declared with attribute error: called with O_CREAT, but missing mode
+  // clang should emit a warning, but doesn't
+  open("/dev/null", O_CREAT);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__creat_too_many_args' declared with attribute error: too many arguments
+  // clang should emit a warning, but doesn't
+  open("/dev/null", O_CREAT, 0, 0);
+}
+
+void test_poll() {
+  pollfd fds[1];
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__poll_too_small_error' declared with attribute error: poll: pollfd array smaller than fd count
+  // clang should emit a warning, but doesn't
+  poll(fds, 2, 0);
+}
+
+void test_ppoll() {
+  pollfd fds[1];
+  timespec timeout;
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__ppoll_too_small_error' declared with attribute error: ppoll: pollfd array smaller than fd count
+  // clang should emit a warning, but doesn't
+  ppoll(fds, 2, &timeout, NULL);
+}
diff --git a/tests/fortify_test.cpp b/tests/fortify_test.cpp
index 352cac6..4faccb4 100644
--- a/tests/fortify_test.cpp
+++ b/tests/fortify_test.cpp
@@ -15,38 +15,32 @@
  */
 
 #include <gtest/gtest.h>
-#include <signal.h>
-#include <string.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <malloc.h>
-#include <fcntl.h>
-#include <sys/prctl.h>
+#include "BionicDeathTest.h"
 
-// We have to say "DeathTest" here so gtest knows to run this test (which exits)
-// in its own process. Unfortunately, the C preprocessor doesn't give us an
-// easy way to concatenate strings, so we need to use the complicated method
-// below. *sigh*
+#include <fcntl.h>
+#include <malloc.h>
+#include <poll.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <time.h>
+
+#if __BIONIC__
+#define ASSERT_FORTIFY(expr) ASSERT_EXIT(expr, testing::KilledBySignal(SIGABRT), "FORTIFY")
+#else
+#define ASSERT_FORTIFY(expr) ASSERT_EXIT(expr, testing::KilledBySignal(SIGABRT), "")
+#endif
+
+// Fortify test code needs to run multiple times, so TEST_NAME macro is used to
+// distinguish different tests. TEST_NAME is defined in compilation command.
 #define DEATHTEST_PASTER(name) name##_DeathTest
 #define DEATHTEST_EVALUATOR(name) DEATHTEST_PASTER(name)
 #define DEATHTEST DEATHTEST_EVALUATOR(TEST_NAME)
 
-class DEATHTEST : public testing::Test {
- protected:
-  virtual void SetUp() {
-    old_dumpable_ = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0);
-    // Suppress debuggerd stack traces. Too slow.
-    prctl(PR_SET_DUMPABLE, 0, 0, 0, 0);
-  }
-
-  virtual void TearDown() {
-    prctl(PR_SET_DUMPABLE, old_dumpable_, 0, 0, 0, 0);
-  }
- private:
-  int old_dumpable_;
-};
+class DEATHTEST : public BionicDeathTest {};
 
 #if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE == 2
 struct foo {
@@ -60,11 +54,9 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, stpncpy_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   int copy_amt = atoi("11");
-  ASSERT_EXIT(stpncpy(myfoo.a, "01234567890", copy_amt),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(stpncpy(myfoo.a, "01234567890", copy_amt));
 }
 #endif
 
@@ -72,12 +64,10 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, stpncpy2_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   memset(&myfoo, 0, sizeof(myfoo));
   myfoo.one[0] = 'A'; // not null terminated string
-  ASSERT_EXIT(stpncpy(myfoo.b, myfoo.one, sizeof(myfoo.b)),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(stpncpy(myfoo.b, myfoo.one, sizeof(myfoo.b)));
 }
 #endif
 
@@ -85,11 +75,9 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strncpy_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   int copy_amt = atoi("11");
-  ASSERT_EXIT(strncpy(myfoo.a, "01234567890", copy_amt),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncpy(myfoo.a, "01234567890", copy_amt));
 }
 #endif
 
@@ -97,12 +85,10 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strncpy2_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   memset(&myfoo, 0, sizeof(myfoo));
   myfoo.one[0] = 'A'; // not null terminated string
-  ASSERT_EXIT(strncpy(myfoo.b, myfoo.one, sizeof(myfoo.b)),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncpy(myfoo.b, myfoo.one, sizeof(myfoo.b)));
 }
 #endif
 
@@ -110,12 +96,10 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, sprintf_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   char source_buf[15];
   memcpy(source_buf, "12345678901234", 15);
-  ASSERT_EXIT(sprintf(myfoo.a, "%s", source_buf),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(sprintf(myfoo.a, "%s", source_buf));
 }
 #endif
 
@@ -123,10 +107,8 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, sprintf2_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
-  ASSERT_EXIT(sprintf(myfoo.a, "0123456789"),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(sprintf(myfoo.a, "0123456789"));
 }
 #endif
 
@@ -145,13 +127,11 @@
 }
 
 TEST_F(DEATHTEST, vsprintf_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsprintf_helper2("%s", "0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsprintf_helper2("%s", "0123456789"));
 }
 
 TEST_F(DEATHTEST, vsprintf2_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsprintf_helper2("0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsprintf_helper2("0123456789"));
 }
 #endif
 
@@ -171,13 +151,11 @@
 }
 
 TEST_F(DEATHTEST, vsnprintf_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsnprintf_helper2("%s", "0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsnprintf_helper2("%s", "0123456789"));
 }
 
 TEST_F(DEATHTEST, vsnprintf2_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsnprintf_helper2("0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsnprintf_helper2("0123456789"));
 }
 #endif
 
@@ -187,11 +165,9 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, stpcpy_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   char* src = strdup("");
-  ASSERT_EXIT(stpcpy(myfoo.empty, src),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(stpcpy(myfoo.empty, src));
   free(src);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -205,11 +181,9 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strcpy_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   char* src = strdup("");
-  ASSERT_EXIT(strcpy(myfoo.empty, src),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcpy(myfoo.empty, src));
   free(src);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -223,11 +197,9 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strcpy2_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   char* src = strdup("1");
-  ASSERT_EXIT(strcpy(myfoo.empty, src),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcpy(myfoo.empty, src));
   free(src);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -241,11 +213,9 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strcpy3_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   char* src = strdup("12");
-  ASSERT_EXIT(strcpy(myfoo.one, src),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcpy(myfoo.one, src));
   free(src);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -258,12 +228,10 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strchr_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   memcpy(myfoo.a, "0123456789", sizeof(myfoo.a));
   myfoo.b[0] = '\0';
-  ASSERT_EXIT(printf("%s", strchr(myfoo.a, 'a')),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(printf("%s", strchr(myfoo.a, 'a')));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -275,12 +243,10 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strrchr_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   memcpy(myfoo.a, "0123456789", 10);
   memcpy(myfoo.b, "01234", 6);
-  ASSERT_EXIT(printf("%s", strrchr(myfoo.a, 'a')),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(printf("%s", strrchr(myfoo.a, 'a')));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -292,12 +258,10 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strlcpy_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   strcpy(myfoo.a, "01");
   size_t n = strlen(myfoo.a);
-  ASSERT_EXIT(strlcpy(myfoo.one, myfoo.a, n),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strlcpy(myfoo.one, myfoo.a, n));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -309,13 +273,11 @@
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strlcat_fortified2) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   strcpy(myfoo.a, "01");
   myfoo.one[0] = '\0';
   size_t n = strlen(myfoo.a);
-  ASSERT_EXIT(strlcat(myfoo.one, myfoo.a, n),
-              testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strlcat(myfoo.one, myfoo.a, n));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -326,11 +288,10 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strncat_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   size_t n = atoi("10"); // avoid compiler optimizations
   strncpy(myfoo.a, "012345678", n);
-  ASSERT_EXIT(strncat(myfoo.a, "9", n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncat(myfoo.a, "9", n));
 }
 #endif
 
@@ -338,58 +299,52 @@
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strncat2_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   myfoo.a[0] = '\0';
   size_t n = atoi("10"); // avoid compiler optimizations
-  ASSERT_EXIT(strncat(myfoo.a, "0123456789", n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncat(myfoo.a, "0123456789", n));
 }
 #endif
 
 TEST_F(DEATHTEST, strncat3_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   memcpy(myfoo.a, "0123456789", sizeof(myfoo.a)); // unterminated string
   myfoo.b[0] = '\0';
   size_t n = atoi("10"); // avoid compiler optimizations
-  ASSERT_EXIT(strncat(myfoo.b, myfoo.a, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncat(myfoo.b, myfoo.a, n));
 }
 
 #ifndef __clang__
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, strcat_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char src[11];
   strcpy(src, "0123456789");
   foo myfoo;
   myfoo.a[0] = '\0';
-  ASSERT_EXIT(strcat(myfoo.a, src), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcat(myfoo.a, src));
 }
 #endif
 
 TEST_F(DEATHTEST, strcat2_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   memcpy(myfoo.a, "0123456789", sizeof(myfoo.a)); // unterminated string
   myfoo.b[0] = '\0';
-  ASSERT_EXIT(strcat(myfoo.b, myfoo.a), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcat(myfoo.b, myfoo.a));
 }
 
 TEST_F(DEATHTEST, snprintf_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   strcpy(myfoo.a, "012345678");
   size_t n = strlen(myfoo.a) + 2;
-  ASSERT_EXIT(snprintf(myfoo.b, n, "a%s", myfoo.a), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(snprintf(myfoo.b, n, "a%s", myfoo.a));
 }
 
 TEST_F(DEATHTEST, bzero_fortified2) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   foo myfoo;
   memcpy(myfoo.b, "0123456789", sizeof(myfoo.b));
   size_t n = atoi("11");
-  ASSERT_EXIT(bzero(myfoo.b, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(bzero(myfoo.b, n));
 }
 
 #endif /* defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE=2 */
@@ -397,10 +352,9 @@
 // multibyte target where we over fill (should fail)
 TEST_F(DEATHTEST, strcpy_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   char *orig = strdup("0123456789");
-  ASSERT_EXIT(strcpy(buf, orig), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcpy(buf, orig));
   free(orig);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -410,10 +364,9 @@
 // zero sized target with "\0" source (should fail)
 TEST_F(DEATHTEST, strcpy2_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[0];
   char *orig = strdup("");
-  ASSERT_EXIT(strcpy(buf, orig), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcpy(buf, orig));
   free(orig);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -423,10 +376,9 @@
 // zero sized target with longer source (should fail)
 TEST_F(DEATHTEST, strcpy3_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[0];
   char *orig = strdup("1");
-  ASSERT_EXIT(strcpy(buf, orig), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcpy(buf, orig));
   free(orig);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -436,10 +388,9 @@
 // one byte target with longer source (should fail)
 TEST_F(DEATHTEST, strcpy4_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[1];
   char *orig = strdup("12");
-  ASSERT_EXIT(strcpy(buf, orig), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcpy(buf, orig));
   free(orig);
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
@@ -448,10 +399,9 @@
 
 TEST_F(DEATHTEST, strlen_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   memcpy(buf, "0123456789", sizeof(buf));
-  ASSERT_EXIT(printf("%zd", strlen(buf)), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(printf("%zd", strlen(buf)));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -459,10 +409,9 @@
 
 TEST_F(DEATHTEST, strchr_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   memcpy(buf, "0123456789", sizeof(buf));
-  ASSERT_EXIT(printf("%s", strchr(buf, 'a')), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(printf("%s", strchr(buf, 'a')));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -470,10 +419,9 @@
 
 TEST_F(DEATHTEST, strrchr_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   memcpy(buf, "0123456789", sizeof(buf));
-  ASSERT_EXIT(printf("%s", strrchr(buf, 'a')), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(printf("%s", strrchr(buf, 'a')));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -481,12 +429,11 @@
 
 TEST_F(DEATHTEST, strlcpy_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char bufa[15];
   char bufb[10];
   strcpy(bufa, "01234567890123");
   size_t n = strlen(bufa);
-  ASSERT_EXIT(strlcpy(bufb, bufa, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strlcpy(bufb, bufa, n));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
@@ -494,43 +441,39 @@
 
 TEST_F(DEATHTEST, strlcat_fortified) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char bufa[15];
   char bufb[10];
   bufb[0] = '\0';
   strcpy(bufa, "01234567890123");
   size_t n = strlen(bufa);
-  ASSERT_EXIT(strlcat(bufb, bufa, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strlcat(bufb, bufa, n));
 #else // __BIONIC__
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
 }
 
 TEST_F(DEATHTEST, sprintf_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   char source_buf[15];
   memcpy(source_buf, "12345678901234", 15);
-  ASSERT_EXIT(sprintf(buf, "%s", source_buf), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(sprintf(buf, "%s", source_buf));
 }
 
 #ifndef __clang__
 // This test is disabled in clang because clang doesn't properly detect
 // this buffer overflow. TODO: Fix clang.
 TEST_F(DEATHTEST, sprintf_malloc_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char* buf = (char *) malloc(10);
   char source_buf[11];
   memcpy(source_buf, "1234567890", 11);
-  ASSERT_EXIT(sprintf(buf, "%s", source_buf), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(sprintf(buf, "%s", source_buf));
   free(buf);
 }
 #endif
 
 TEST_F(DEATHTEST, sprintf2_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[5];
-  ASSERT_EXIT(sprintf(buf, "aaaaa"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(sprintf(buf, "aaaaa"));
 }
 
 static int vsprintf_helper(const char *fmt, ...) {
@@ -545,13 +488,11 @@
 }
 
 TEST_F(DEATHTEST, vsprintf_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsprintf_helper("%s", "0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsprintf_helper("%s", "0123456789"));
 }
 
 TEST_F(DEATHTEST, vsprintf2_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsprintf_helper("0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsprintf_helper("0123456789"));
 }
 
 static int vsnprintf_helper(const char *fmt, ...) {
@@ -567,157 +508,157 @@
 }
 
 TEST_F(DEATHTEST, vsnprintf_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsnprintf_helper("%s", "0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsnprintf_helper("%s", "0123456789"));
 }
 
 TEST_F(DEATHTEST, vsnprintf2_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  ASSERT_EXIT(vsnprintf_helper("0123456789"), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(vsnprintf_helper("0123456789"));
 }
 
 TEST_F(DEATHTEST, strncat_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   size_t n = atoi("10"); // avoid compiler optimizations
   strncpy(buf, "012345678", n);
-  ASSERT_EXIT(strncat(buf, "9", n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncat(buf, "9", n));
 }
 
 TEST_F(DEATHTEST, strncat2_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   buf[0] = '\0';
   size_t n = atoi("10"); // avoid compiler optimizations
-  ASSERT_EXIT(strncat(buf, "0123456789", n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncat(buf, "0123456789", n));
 }
 
 TEST_F(DEATHTEST, strcat_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char src[11];
   strcpy(src, "0123456789");
   char buf[10];
   buf[0] = '\0';
-  ASSERT_EXIT(strcat(buf, src), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strcat(buf, src));
 }
 
 TEST_F(DEATHTEST, memmove_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[20];
   strcpy(buf, "0123456789");
   size_t n = atoi("10");
-  ASSERT_EXIT(memmove(buf + 11, buf, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(memmove(buf + 11, buf, n));
 }
 
 TEST_F(DEATHTEST, memcpy_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char bufa[10];
   char bufb[10];
   strcpy(bufa, "012345678");
   size_t n = atoi("11");
-  ASSERT_EXIT(memcpy(bufb, bufa, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(memcpy(bufb, bufa, n));
 }
 
 TEST_F(DEATHTEST, stpncpy_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char bufa[15];
   char bufb[10];
   strcpy(bufa, "01234567890123");
   size_t n = strlen(bufa);
-  ASSERT_EXIT(stpncpy(bufb, bufa, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(stpncpy(bufb, bufa, n));
 }
 
 TEST_F(DEATHTEST, stpncpy2_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char dest[11];
   char src[10];
   memcpy(src, "0123456789", sizeof(src)); // src is not null terminated
-  ASSERT_EXIT(stpncpy(dest, src, sizeof(dest)), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(stpncpy(dest, src, sizeof(dest)));
 }
 
 TEST_F(DEATHTEST, strncpy_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char bufa[15];
   char bufb[10];
   strcpy(bufa, "01234567890123");
   size_t n = strlen(bufa);
-  ASSERT_EXIT(strncpy(bufb, bufa, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncpy(bufb, bufa, n));
 }
 
 
 TEST_F(DEATHTEST, strncpy2_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char dest[11];
   char src[10];
   memcpy(src, "0123456789", sizeof(src)); // src is not null terminated
-  ASSERT_EXIT(strncpy(dest, src, sizeof(dest)), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(strncpy(dest, src, sizeof(dest)));
 }
 
 TEST_F(DEATHTEST, snprintf_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char bufa[15];
   char bufb[10];
   strcpy(bufa, "0123456789");
   size_t n = strlen(bufa) + 1;
-  ASSERT_EXIT(snprintf(bufb, n, "%s", bufa), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(snprintf(bufb, n, "%s", bufa));
 }
 
 TEST_F(DEATHTEST, bzero_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[10];
   memcpy(buf, "0123456789", sizeof(buf));
   size_t n = atoi("11");
-  ASSERT_EXIT(bzero(buf, n), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(bzero(buf, n));
 }
 
 TEST_F(DEATHTEST, umask_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   mode_t mask = atoi("1023");  // 01777 in octal
-  ASSERT_EXIT(umask(mask), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(umask(mask));
 }
 
 TEST_F(DEATHTEST, recv_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   size_t data_len = atoi("11"); // suppress compiler optimizations
   char buf[10];
-  ASSERT_EXIT(recv(0, buf, data_len, 0), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(recv(0, buf, data_len, 0));
 }
 
 TEST_F(DEATHTEST, FD_ISSET_fortified) {
 #if defined(__BIONIC__) // glibc catches this at compile-time.
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   fd_set set;
   memset(&set, 0, sizeof(set));
-  ASSERT_EXIT(FD_ISSET(-1, &set), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(FD_ISSET(-1, &set));
 #endif
 }
 
 TEST_F(DEATHTEST, FD_ISSET_2_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   char buf[1];
   fd_set* set = (fd_set*) buf;
-  ASSERT_EXIT(FD_ISSET(0, set), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(FD_ISSET(0, set));
 }
 
-// gtest's ASSERT_EXIT needs a valid expression, but glibc has a do-while macro.
-static void FD_ZERO_function(fd_set* s) { FD_ZERO(s); }
-
-TEST_F(DEATHTEST, FD_ZERO_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
-  char buf[1];
-  fd_set* set = (fd_set*) buf;
-  ASSERT_EXIT(FD_ZERO_function(set), testing::KilledBySignal(SIGABRT), "");
-}
-
-TEST_F(DEATHTEST, read_fortified) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+TEST_F(DEATHTEST, pread_fortified) {
   char buf[1];
   size_t ct = atoi("2"); // prevent optimizations
   int fd = open("/dev/null", O_RDONLY);
-  ASSERT_EXIT(read(fd, buf, ct), testing::KilledBySignal(SIGABRT), "");
+  ASSERT_FORTIFY(pread(fd, buf, ct, 0));
   close(fd);
 }
 
+TEST_F(DEATHTEST, pread64_fortified) {
+  char buf[1];
+  size_t ct = atoi("2"); // prevent optimizations
+  int fd = open("/dev/null", O_RDONLY);
+  ASSERT_FORTIFY(pread64(fd, buf, ct, 0));
+  close(fd);
+}
+
+TEST_F(DEATHTEST, read_fortified) {
+  char buf[1];
+  size_t ct = atoi("2"); // prevent optimizations
+  int fd = open("/dev/null", O_RDONLY);
+  ASSERT_FORTIFY(read(fd, buf, ct));
+  close(fd);
+}
+
+TEST_F(DEATHTEST, readlink_fortified) {
+  char buf[1];
+  size_t ct = atoi("2"); // prevent optimizations
+  ASSERT_FORTIFY(readlink("/dev/null", buf, ct));
+}
+
+TEST_F(DEATHTEST, readlinkat_fortified) {
+  char buf[1];
+  size_t ct = atoi("2"); // prevent optimizations
+  ASSERT_FORTIFY(readlinkat(AT_FDCWD, "/dev/null", buf, ct));
+}
+
 extern "C" char* __strncat_chk(char*, const char*, size_t, size_t);
 extern "C" char* __strcat_chk(char*, const char*, size_t);
 
@@ -1022,3 +963,19 @@
   sprintf(BUF_AND_CONTENTS(buf));
   EXPECT_STREQ(CONTENTS, buf);
 }
+
+TEST_F(DEATHTEST, poll_fortified) {
+  nfds_t fd_count = atoi("2"); // suppress compiler optimizations
+  pollfd buf[1] = {{0, POLLIN, 0}};
+  // Set timeout to zero to prevent waiting in poll when fortify test fails.
+  ASSERT_FORTIFY(poll(buf, fd_count, 0));
+}
+
+TEST_F(DEATHTEST, ppoll_fortified) {
+  nfds_t fd_count = atoi("2"); // suppress compiler optimizations
+  pollfd buf[1] = {{0, POLLIN, 0}};
+  // Set timeout to zero to prevent waiting in ppoll when fortify test fails.
+  timespec timeout;
+  timeout.tv_sec = timeout.tv_nsec = 0;
+  ASSERT_FORTIFY(ppoll(buf, fd_count, &timeout, NULL));
+}
diff --git a/tests/ftw_test.cpp b/tests/ftw_test.cpp
index 6d3a308..b7e5bd5 100644
--- a/tests/ftw_test.cpp
+++ b/tests/ftw_test.cpp
@@ -14,27 +14,55 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
-#include "TemporaryFile.h"
-
 #include <ftw.h>
+
+#include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "TemporaryFile.h"
+
+#include <gtest/gtest.h>
+
+static void MakeTree(const char* root) {
+  char path[PATH_MAX];
+
+  snprintf(path, sizeof(path), "%s/dir", root);
+  ASSERT_EQ(0, mkdir(path, 0755)) << path;
+  snprintf(path, sizeof(path), "%s/dir/sub", root);
+  ASSERT_EQ(0, mkdir(path, 0555)) << path;
+  snprintf(path, sizeof(path), "%s/unreadable-dir", root);
+  ASSERT_EQ(0, mkdir(path, 0000)) << path;
+
+  snprintf(path, sizeof(path), "%s/dangler", root);
+  ASSERT_EQ(0, symlink("/does-not-exist", path));
+  snprintf(path, sizeof(path), "%s/symlink", root);
+  ASSERT_EQ(0, symlink("sub2", path));
+
+  int fd;
+  snprintf(path, sizeof(path), "%s/regular", root);
+  ASSERT_NE(-1, fd = open(path, O_CREAT|O_TRUNC, 0666));
+  ASSERT_EQ(0, close(fd));
+}
 
 void sanity_check_ftw(const char* fpath, const struct stat* sb, int tflag) {
   ASSERT_TRUE(fpath != NULL);
   ASSERT_TRUE(sb != NULL);
-  bool is_dir = S_ISDIR(sb->st_mode);
-  ASSERT_TRUE((is_dir && tflag == FTW_D) || (!is_dir && tflag == FTW_F));
+
+  if (S_ISDIR(sb->st_mode)) {
+    EXPECT_TRUE(tflag == FTW_D || tflag == FTW_DNR || tflag == FTW_DP) << fpath;
+  } else if (S_ISLNK(sb->st_mode)) {
+    EXPECT_EQ(FTW_SL, tflag) << fpath;
+  } else {
+    EXPECT_EQ(FTW_F, tflag) << fpath;
+  }
 }
 
-void sanity_check_nftw(
-    const char* fpath, const struct stat* sb, int tflag, struct FTW* ftwbuf) {
+void sanity_check_nftw(const char* fpath, const struct stat* sb, int tflag, struct FTW* ftwbuf) {
   sanity_check_ftw(fpath, sb, tflag);
-  // either the parent dir or the file
-  bool is_dir = S_ISDIR(sb->st_mode);
-  ASSERT_TRUE(
-    (is_dir && ftwbuf->level == 0) || (!is_dir && ftwbuf->level == 1));
+  ASSERT_EQ('/', fpath[ftwbuf->base - 1]) << fpath;
 }
 
 int check_ftw(const char* fpath, const struct stat* sb, int tflag) {
@@ -47,39 +75,36 @@
   return 0;
 }
 
-int check_nftw(
-  const char* fpath, const struct stat* sb, int tflag, struct FTW* ftwbuf) {
+int check_nftw(const char* fpath, const struct stat* sb, int tflag, struct FTW* ftwbuf) {
   sanity_check_nftw(fpath, sb, tflag, ftwbuf);
   return 0;
 }
 
-int check_nftw64(
-  const char* fpath, const struct stat64* sb, int tflag, struct FTW* ftwbuf) {
-  sanity_check_nftw(fpath, reinterpret_cast<const struct stat*>(sb),
-    tflag, ftwbuf);
+int check_nftw64(const char* fpath, const struct stat64* sb, int tflag, struct FTW* ftwbuf) {
+  sanity_check_nftw(fpath, reinterpret_cast<const struct stat*>(sb), tflag, ftwbuf);
   return 0;
 }
 
 TEST(ftw, ftw) {
-  TemporaryDir td;
-  TemporaryFile tf(td.dirname);
-  ftw(td.dirname, check_ftw, 1);
+  TemporaryDir root;
+  MakeTree(root.dirname);
+  ASSERT_EQ(0, ftw(root.dirname, check_ftw, 128));
 }
 
 TEST(ftw, ftw64) {
-  TemporaryDir td;
-  GenericTemporaryFile<mkstemp64> tf(td.dirname);
-  ftw64(td.dirname, check_ftw64, 1);
+  TemporaryDir root;
+  MakeTree(root.dirname);
+  ASSERT_EQ(0, ftw64(root.dirname, check_ftw64, 128));
 }
 
 TEST(ftw, nftw) {
-  TemporaryDir td;
-  TemporaryFile tf(td.dirname);
-  nftw(td.dirname, check_nftw, 1, 0);
+  TemporaryDir root;
+  MakeTree(root.dirname);
+  ASSERT_EQ(0, nftw(root.dirname, check_nftw, 128, 0));
 }
 
 TEST(ftw, nftw64) {
-  TemporaryDir td;
-  GenericTemporaryFile<mkstemp64> tf(td.dirname);
-  nftw64(td.dirname, check_nftw64, 1, 0);
+  TemporaryDir root;
+  MakeTree(root.dirname);
+  ASSERT_EQ(0, nftw64(root.dirname, check_nftw64, 128, 0));
 }
diff --git a/tests/getauxval_test.cpp b/tests/getauxval_test.cpp
index 51c9db8..6ce00f1 100644
--- a/tests/getauxval_test.cpp
+++ b/tests/getauxval_test.cpp
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
+#include <errno.h>
 #include <sys/cdefs.h>
-#include <features.h>
 #include <gtest/gtest.h>
 
 // getauxval() was only added as of glibc version 2.16.
@@ -54,7 +54,9 @@
 
 TEST(getauxval, unexpected_values) {
 #if defined(GETAUXVAL_CAN_COMPILE)
+  errno = 0;
   ASSERT_EQ((unsigned long int) 0, getauxval(0xdeadbeef));
+  ASSERT_EQ(ENOENT, errno);
 #else
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif
diff --git a/tests/gtest_main.cpp b/tests/gtest_main.cpp
new file mode 100644
index 0000000..692b7e8
--- /dev/null
+++ b/tests/gtest_main.cpp
@@ -0,0 +1,1123 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <string>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+#include "BionicDeathTest.h" // For selftest.
+
+namespace testing {
+namespace internal {
+
+// Reuse of testing::internal::ColoredPrintf in gtest.
+enum GTestColor {
+  COLOR_DEFAULT,
+  COLOR_RED,
+  COLOR_GREEN,
+  COLOR_YELLOW
+};
+
+void ColoredPrintf(GTestColor color, const char* fmt, ...);
+
+}  // namespace internal
+}  // namespace testing
+
+using testing::internal::GTestColor;
+using testing::internal::COLOR_DEFAULT;
+using testing::internal::COLOR_RED;
+using testing::internal::COLOR_GREEN;
+using testing::internal::COLOR_YELLOW;
+using testing::internal::ColoredPrintf;
+
+constexpr int DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS = 60000;
+constexpr int DEFAULT_GLOBAL_TEST_RUN_WARNLINE_MS = 2000;
+
+// The time each test can run before killed for the reason of timeout.
+// It takes effect only with --isolate option.
+static int global_test_run_deadline_ms = DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS;
+
+// The time each test can run before be warned for too much running time.
+// It takes effect only with --isolate option.
+static int global_test_run_warnline_ms = DEFAULT_GLOBAL_TEST_RUN_WARNLINE_MS;
+
+// Return deadline duration for a test, in ms.
+static int GetDeadlineInfo(const std::string& /*test_name*/) {
+  return global_test_run_deadline_ms;
+}
+
+// Return warnline duration for a test, in ms.
+static int GetWarnlineInfo(const std::string& /*test_name*/) {
+  return global_test_run_warnline_ms;
+}
+
+static void PrintHelpInfo() {
+  printf("Bionic Unit Test Options:\n"
+         "  -j [JOB_COUNT] or -j[JOB_COUNT]\n"
+         "      Run up to JOB_COUNT tests in parallel.\n"
+         "      Use isolation mode, Run each test in a separate process.\n"
+         "      If JOB_COUNT is not given, it is set to the count of available processors.\n"
+         "  --no-isolate\n"
+         "      Don't use isolation mode, run all tests in a single process.\n"
+         "  --deadline=[TIME_IN_MS]\n"
+         "      Run each test in no longer than [TIME_IN_MS] time.\n"
+         "      It takes effect only in isolation mode. Deafult deadline is 60000 ms.\n"
+         "  --warnline=[TIME_IN_MS]\n"
+         "      Test running longer than [TIME_IN_MS] will be warned.\n"
+         "      It takes effect only in isolation mode. Default warnline is 2000 ms.\n"
+         "  --gtest-filter=POSITIVE_PATTERNS[-NEGATIVE_PATTERNS]\n"
+         "      Used as a synonym for --gtest_filter option in gtest.\n"
+         "Default bionic unit test option is -j.\n"
+         "In isolation mode, you can send SIGQUIT to the parent process to show current\n"
+         "running tests, or send SIGINT to the parent process to stop testing and\n"
+         "clean up current running tests.\n"
+         "\n");
+}
+
+enum TestResult {
+  TEST_SUCCESS = 0,
+  TEST_FAILED,
+  TEST_TIMEOUT
+};
+
+class Test {
+ public:
+  Test() {} // For std::vector<Test>.
+  explicit Test(const char* name) : name_(name) {}
+
+  const std::string& GetName() const { return name_; }
+
+  void SetResult(TestResult result) { result_ = result; }
+
+  TestResult GetResult() const { return result_; }
+
+  void SetTestTime(int64_t elapsed_time_ns) { elapsed_time_ns_ = elapsed_time_ns; }
+
+  int64_t GetTestTime() const { return elapsed_time_ns_; }
+
+  void AppendTestOutput(const std::string& s) { output_ += s; }
+
+  const std::string& GetTestOutput() const { return output_; }
+
+ private:
+  const std::string name_;
+  TestResult result_;
+  int64_t elapsed_time_ns_;
+  std::string output_;
+};
+
+class TestCase {
+ public:
+  TestCase() {} // For std::vector<TestCase>.
+  explicit TestCase(const char* name) : name_(name) {}
+
+  const std::string& GetName() const { return name_; }
+
+  void AppendTest(const char* test_name) {
+    test_list_.push_back(Test(test_name));
+  }
+
+  size_t TestCount() const { return test_list_.size(); }
+
+  std::string GetTestName(size_t test_id) const {
+    VerifyTestId(test_id);
+    return name_ + "." + test_list_[test_id].GetName();
+  }
+
+  Test& GetTest(size_t test_id) {
+    VerifyTestId(test_id);
+    return test_list_[test_id];
+  }
+
+  const Test& GetTest(size_t test_id) const {
+    VerifyTestId(test_id);
+    return test_list_[test_id];
+  }
+
+  void SetTestResult(size_t test_id, TestResult result) {
+    VerifyTestId(test_id);
+    test_list_[test_id].SetResult(result);
+  }
+
+  TestResult GetTestResult(size_t test_id) const {
+    VerifyTestId(test_id);
+    return test_list_[test_id].GetResult();
+  }
+
+  void SetTestTime(size_t test_id, int64_t elapsed_time_ns) {
+    VerifyTestId(test_id);
+    test_list_[test_id].SetTestTime(elapsed_time_ns);
+  }
+
+  int64_t GetTestTime(size_t test_id) const {
+    VerifyTestId(test_id);
+    return test_list_[test_id].GetTestTime();
+  }
+
+ private:
+  void VerifyTestId(size_t test_id) const {
+    if(test_id >= test_list_.size()) {
+      fprintf(stderr, "test_id %zu out of range [0, %zu)\n", test_id, test_list_.size());
+      exit(1);
+    }
+  }
+
+ private:
+  const std::string name_;
+  std::vector<Test> test_list_;
+};
+
+class TestResultPrinter : public testing::EmptyTestEventListener {
+ public:
+  TestResultPrinter() : pinfo_(NULL) {}
+  virtual void OnTestStart(const testing::TestInfo& test_info) {
+    pinfo_ = &test_info; // Record test_info for use in OnTestPartResult.
+  }
+  virtual void OnTestPartResult(const testing::TestPartResult& result);
+
+ private:
+  const testing::TestInfo* pinfo_;
+};
+
+// Called after an assertion failure.
+void TestResultPrinter::OnTestPartResult(const testing::TestPartResult& result) {
+  // If the test part succeeded, we don't need to do anything.
+  if (result.type() == testing::TestPartResult::kSuccess)
+    return;
+
+  // Print failure message from the assertion (e.g. expected this and got that).
+  printf("%s:(%d) Failure in test %s.%s\n%s\n", result.file_name(), result.line_number(),
+         pinfo_->test_case_name(), pinfo_->name(), result.message());
+  fflush(stdout);
+}
+
+static int64_t NanoTime() {
+  struct timespec t;
+  t.tv_sec = t.tv_nsec = 0;
+  clock_gettime(CLOCK_MONOTONIC, &t);
+  return static_cast<int64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec;
+}
+
+static bool EnumerateTests(int argc, char** argv, std::vector<TestCase>& testcase_list) {
+  std::string command;
+  for (int i = 0; i < argc; ++i) {
+    command += argv[i];
+    command += " ";
+  }
+  command += "--gtest_list_tests";
+  FILE* fp = popen(command.c_str(), "r");
+  if (fp == NULL) {
+    perror("popen");
+    return false;
+  }
+
+  char buf[200];
+  while (fgets(buf, sizeof(buf), fp) != NULL) {
+    char* p = buf;
+
+    while (*p != '\0' && isspace(*p)) {
+      ++p;
+    }
+    if (*p == '\0') continue;
+    char* start = p;
+    while (*p != '\0' && !isspace(*p)) {
+      ++p;
+    }
+    char* end = p;
+    while (*p != '\0' && isspace(*p)) {
+      ++p;
+    }
+    if (*p != '\0') {
+      // This is not we want, gtest must meet with some error when parsing the arguments.
+      fprintf(stderr, "argument error, check with --help\n");
+      return false;
+    }
+    *end = '\0';
+    if (*(end - 1) == '.') {
+      *(end - 1) = '\0';
+      testcase_list.push_back(TestCase(start));
+    } else {
+      testcase_list.back().AppendTest(start);
+    }
+  }
+  int result = pclose(fp);
+  return (result != -1 && WEXITSTATUS(result) == 0);
+}
+
+// Part of the following *Print functions are copied from external/gtest/src/gtest.cc:
+// PrettyUnitTestResultPrinter. The reason for copy is that PrettyUnitTestResultPrinter
+// is defined and used in gtest.cc, which is hard to reuse.
+static void OnTestIterationStartPrint(const std::vector<TestCase>& testcase_list, size_t iteration,
+                                      int iteration_count) {
+  if (iteration_count != 1) {
+    printf("\nRepeating all tests (iteration %zu) . . .\n\n", iteration);
+  }
+  ColoredPrintf(COLOR_GREEN,  "[==========] ");
+
+  size_t testcase_count = testcase_list.size();
+  size_t test_count = 0;
+  for (const auto& testcase : testcase_list) {
+    test_count += testcase.TestCount();
+  }
+
+  printf("Running %zu %s from %zu %s.\n",
+         test_count, (test_count == 1) ? "test" : "tests",
+         testcase_count, (testcase_count == 1) ? "test case" : "test cases");
+  fflush(stdout);
+}
+
+// bionic cts test needs gtest output format.
+#if defined(USING_GTEST_OUTPUT_FORMAT)
+
+static void OnTestEndPrint(const TestCase& testcase, size_t test_id) {
+  ColoredPrintf(COLOR_GREEN, "[ RUN      ] ");
+  printf("%s\n", testcase.GetTestName(test_id).c_str());
+
+  const std::string& test_output = testcase.GetTest(test_id).GetTestOutput();
+  printf("%s", test_output.c_str());
+
+  TestResult result = testcase.GetTestResult(test_id);
+  if (result == TEST_SUCCESS) {
+    ColoredPrintf(COLOR_GREEN, "[       OK ] ");
+  } else {
+    ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+  }
+  printf("%s", testcase.GetTestName(test_id).c_str());
+  if (testing::GTEST_FLAG(print_time)) {
+    printf(" (%" PRId64 " ms)", testcase.GetTestTime(test_id) / 1000000);
+  }
+  printf("\n");
+  fflush(stdout);
+}
+
+#else  // !defined(USING_GTEST_OUTPUT_FORMAT)
+
+static void OnTestEndPrint(const TestCase& testcase, size_t test_id) {
+  TestResult result = testcase.GetTestResult(test_id);
+  if (result == TEST_SUCCESS) {
+    ColoredPrintf(COLOR_GREEN, "[    OK    ] ");
+  } else if (result == TEST_FAILED) {
+    ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+  } else if (result == TEST_TIMEOUT) {
+    ColoredPrintf(COLOR_RED, "[ TIMEOUT  ] ");
+  }
+
+  printf("%s", testcase.GetTestName(test_id).c_str());
+  if (testing::GTEST_FLAG(print_time)) {
+    printf(" (%" PRId64 " ms)", testcase.GetTestTime(test_id) / 1000000);
+  }
+  printf("\n");
+
+  const std::string& test_output = testcase.GetTest(test_id).GetTestOutput();
+  printf("%s", test_output.c_str());
+  fflush(stdout);
+}
+
+#endif  // !defined(USING_GTEST_OUTPUT_FORMAT)
+
+static void OnTestIterationEndPrint(const std::vector<TestCase>& testcase_list, size_t /*iteration*/,
+                                    int64_t elapsed_time_ns) {
+
+  std::vector<std::string> fail_test_name_list;
+  std::vector<std::pair<std::string, int64_t>> timeout_test_list;
+
+  // For tests run exceed warnline but not timeout.
+  std::vector<std::tuple<std::string, int64_t, int>> slow_test_list;
+  size_t testcase_count = testcase_list.size();
+  size_t test_count = 0;
+  size_t success_test_count = 0;
+
+  for (const auto& testcase : testcase_list) {
+    test_count += testcase.TestCount();
+    for (size_t i = 0; i < testcase.TestCount(); ++i) {
+      TestResult result = testcase.GetTestResult(i);
+      if (result == TEST_SUCCESS) {
+        ++success_test_count;
+      } else if (result == TEST_FAILED) {
+        fail_test_name_list.push_back(testcase.GetTestName(i));
+      } else if (result == TEST_TIMEOUT) {
+        timeout_test_list.push_back(std::make_pair(testcase.GetTestName(i),
+                                                   testcase.GetTestTime(i)));
+      }
+      if (result != TEST_TIMEOUT &&
+          testcase.GetTestTime(i) / 1000000 >= GetWarnlineInfo(testcase.GetTestName(i))) {
+        slow_test_list.push_back(std::make_tuple(testcase.GetTestName(i),
+                                                 testcase.GetTestTime(i),
+                                                 GetWarnlineInfo(testcase.GetTestName(i))));
+      }
+    }
+  }
+
+  ColoredPrintf(COLOR_GREEN,  "[==========] ");
+  printf("%zu %s from %zu %s ran.", test_count, (test_count == 1) ? "test" : "tests",
+                                    testcase_count, (testcase_count == 1) ? "test case" : "test cases");
+  if (testing::GTEST_FLAG(print_time)) {
+    printf(" (%" PRId64 " ms total)", elapsed_time_ns / 1000000);
+  }
+  printf("\n");
+  ColoredPrintf(COLOR_GREEN,  "[   PASS   ] ");
+  printf("%zu %s.\n", success_test_count, (success_test_count == 1) ? "test" : "tests");
+
+  // Print tests failed.
+  size_t fail_test_count = fail_test_name_list.size();
+  if (fail_test_count > 0) {
+    ColoredPrintf(COLOR_RED,  "[   FAIL   ] ");
+    printf("%zu %s, listed below:\n", fail_test_count, (fail_test_count == 1) ? "test" : "tests");
+    for (const auto& name : fail_test_name_list) {
+      ColoredPrintf(COLOR_RED, "[   FAIL   ] ");
+      printf("%s\n", name.c_str());
+    }
+  }
+
+  // Print tests run timeout.
+  size_t timeout_test_count = timeout_test_list.size();
+  if (timeout_test_count > 0) {
+    ColoredPrintf(COLOR_RED, "[ TIMEOUT  ] ");
+    printf("%zu %s, listed below:\n", timeout_test_count, (timeout_test_count == 1) ? "test" : "tests");
+    for (const auto& timeout_pair : timeout_test_list) {
+      ColoredPrintf(COLOR_RED, "[ TIMEOUT  ] ");
+      printf("%s (stopped at %" PRId64 " ms)\n", timeout_pair.first.c_str(),
+                                                 timeout_pair.second / 1000000);
+    }
+  }
+
+  // Print tests run exceed warnline.
+  size_t slow_test_count = slow_test_list.size();
+  if (slow_test_count > 0) {
+    ColoredPrintf(COLOR_YELLOW, "[   SLOW   ] ");
+    printf("%zu %s, listed below:\n", slow_test_count, (slow_test_count == 1) ? "test" : "tests");
+    for (const auto& slow_tuple : slow_test_list) {
+      ColoredPrintf(COLOR_YELLOW, "[   SLOW   ] ");
+      printf("%s (%" PRId64 " ms, exceed warnline %d ms)\n", std::get<0>(slow_tuple).c_str(),
+             std::get<1>(slow_tuple) / 1000000, std::get<2>(slow_tuple));
+    }
+  }
+
+  if (fail_test_count > 0) {
+    printf("\n%2zu FAILED %s\n", fail_test_count, (fail_test_count == 1) ? "TEST" : "TESTS");
+  }
+  if (timeout_test_count > 0) {
+    printf("%2zu TIMEOUT %s\n", timeout_test_count, (timeout_test_count == 1) ? "TEST" : "TESTS");
+  }
+  if (slow_test_count > 0) {
+    printf("%2zu SLOW %s\n", slow_test_count, (slow_test_count == 1) ? "TEST" : "TESTS");
+  }
+  fflush(stdout);
+}
+
+// Output xml file when --gtest_output is used, write this function as we can't reuse
+// gtest.cc:XmlUnitTestResultPrinter. The reason is XmlUnitTestResultPrinter is totally
+// defined in gtest.cc and not expose to outside. What's more, as we don't run gtest in
+// the parent process, we don't have gtest classes which are needed by XmlUnitTestResultPrinter.
+void OnTestIterationEndXmlPrint(const std::string& xml_output_filename,
+                                const std::vector<TestCase>& testcase_list,
+                                time_t epoch_iteration_start_time,
+                                int64_t elapsed_time_ns) {
+  FILE* fp = fopen(xml_output_filename.c_str(), "w");
+  if (fp == NULL) {
+    fprintf(stderr, "failed to open '%s': %s\n", xml_output_filename.c_str(), strerror(errno));
+    exit(1);
+  }
+
+  size_t total_test_count = 0;
+  size_t total_failed_count = 0;
+  std::vector<size_t> failed_count_list(testcase_list.size(), 0);
+  std::vector<int64_t> elapsed_time_list(testcase_list.size(), 0);
+  for (size_t i = 0; i < testcase_list.size(); ++i) {
+    auto& testcase = testcase_list[i];
+    total_test_count += testcase.TestCount();
+    for (size_t j = 0; j < testcase.TestCount(); ++j) {
+      if (testcase.GetTestResult(j) != TEST_SUCCESS) {
+        ++failed_count_list[i];
+      }
+      elapsed_time_list[i] += testcase.GetTestTime(j);
+    }
+    total_failed_count += failed_count_list[i];
+  }
+
+  const tm* time_struct = localtime(&epoch_iteration_start_time);
+  char timestamp[40];
+  snprintf(timestamp, sizeof(timestamp), "%4d-%02d-%02dT%02d:%02d:%02d",
+           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);
+
+  fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", fp);
+  fprintf(fp, "<testsuites tests=\"%zu\" failures=\"%zu\" disabled=\"0\" errors=\"0\"",
+          total_test_count, total_failed_count);
+  fprintf(fp, " timestamp=\"%s\" time=\"%.3lf\" name=\"AllTests\">\n", timestamp, elapsed_time_ns / 1e9);
+  for (size_t i = 0; i < testcase_list.size(); ++i) {
+    auto& testcase = testcase_list[i];
+    fprintf(fp, "  <testsuite name=\"%s\" tests=\"%zu\" failures=\"%zu\" disabled=\"0\" errors=\"0\"",
+            testcase.GetName().c_str(), testcase.TestCount(), failed_count_list[i]);
+    fprintf(fp, " time=\"%.3lf\">\n", elapsed_time_list[i] / 1e9);
+
+    for (size_t j = 0; j < testcase.TestCount(); ++j) {
+      fprintf(fp, "    <testcase name=\"%s\" status=\"run\" time=\"%.3lf\" classname=\"%s\"",
+              testcase.GetTest(j).GetName().c_str(), testcase.GetTestTime(j) / 1e9,
+              testcase.GetName().c_str());
+      if (testcase.GetTestResult(j) == TEST_SUCCESS) {
+        fputs(" />\n", fp);
+      } else {
+        fputs(">\n", fp);
+        const std::string& test_output = testcase.GetTest(j).GetTestOutput();
+        fprintf(fp, "      <failure message=\"%s\" type=\"\">\n", test_output.c_str());
+        fputs("      </failure>\n", fp);
+        fputs("    </testcase>\n", fp);
+      }
+    }
+
+    fputs("  </testsuite>\n", fp);
+  }
+  fputs("</testsuites>\n", fp);
+  fclose(fp);
+}
+
+struct ChildProcInfo {
+  pid_t pid;
+  int64_t start_time_ns;
+  int64_t end_time_ns;
+  int64_t deadline_end_time_ns; // The time when the test is thought of as timeout.
+  size_t testcase_id, test_id;
+  bool finished;
+  bool timed_out;
+  int exit_status;
+  int child_read_fd; // File descriptor to read child test failure info.
+};
+
+// Forked Child process, run the single test.
+static void ChildProcessFn(int argc, char** argv, const std::string& test_name) {
+  char** new_argv = new char*[argc + 2];
+  memcpy(new_argv, argv, sizeof(char*) * argc);
+
+  char* filter_arg = new char [test_name.size() + 20];
+  strcpy(filter_arg, "--gtest_filter=");
+  strcat(filter_arg, test_name.c_str());
+  new_argv[argc] = filter_arg;
+  new_argv[argc + 1] = NULL;
+
+  int new_argc = argc + 1;
+  testing::InitGoogleTest(&new_argc, new_argv);
+  int result = RUN_ALL_TESTS();
+  exit(result);
+}
+
+static ChildProcInfo RunChildProcess(const std::string& test_name, int testcase_id, int test_id,
+                                     sigset_t sigmask, int argc, char** argv) {
+  int pipefd[2];
+  int ret = pipe2(pipefd, O_NONBLOCK);
+  if (ret == -1) {
+    perror("pipe2 in RunTestInSeparateProc");
+    exit(1);
+  }
+  pid_t pid = fork();
+  if (pid == -1) {
+    perror("fork in RunTestInSeparateProc");
+    exit(1);
+  } else if (pid == 0) {
+    // In child process, run a single test.
+    close(pipefd[0]);
+    close(STDOUT_FILENO);
+    close(STDERR_FILENO);
+    dup2(pipefd[1], STDOUT_FILENO);
+    dup2(pipefd[1], STDERR_FILENO);
+
+    if (sigprocmask(SIG_SETMASK, &sigmask, NULL) == -1) {
+      perror("sigprocmask SIG_SETMASK");
+      exit(1);
+    }
+    ChildProcessFn(argc, argv, test_name);
+    // Unreachable.
+  }
+  // In parent process, initialize child process info.
+  close(pipefd[1]);
+  ChildProcInfo child_proc;
+  child_proc.child_read_fd = pipefd[0];
+  child_proc.pid = pid;
+  child_proc.start_time_ns = NanoTime();
+  child_proc.deadline_end_time_ns = child_proc.start_time_ns + GetDeadlineInfo(test_name) * 1000000LL;
+  child_proc.testcase_id = testcase_id;
+  child_proc.test_id = test_id;
+  child_proc.finished = false;
+  return child_proc;
+}
+
+static void HandleSignals(std::vector<TestCase>& testcase_list,
+                            std::vector<ChildProcInfo>& child_proc_list) {
+  sigset_t waiting_mask;
+  sigemptyset(&waiting_mask);
+  sigaddset(&waiting_mask, SIGINT);
+  sigaddset(&waiting_mask, SIGQUIT);
+  timespec timeout;
+  timeout.tv_sec = timeout.tv_nsec = 0;
+  while (true) {
+    int signo = TEMP_FAILURE_RETRY(sigtimedwait(&waiting_mask, NULL, &timeout));
+    if (signo == -1) {
+      if (errno == EAGAIN) {
+        return; // Timeout, no pending signals.
+      }
+      perror("sigtimedwait");
+      exit(1);
+    } else if (signo == SIGQUIT) {
+      // Print current running tests.
+      printf("List of current running tests:\n");
+      for (auto& child_proc : child_proc_list) {
+        if (child_proc.pid != 0) {
+          std::string test_name = testcase_list[child_proc.testcase_id].GetTestName(child_proc.test_id);
+          int64_t current_time_ns = NanoTime();
+          int64_t run_time_ms = (current_time_ns - child_proc.start_time_ns) / 1000000;
+          printf("  %s (%" PRId64 " ms)\n", test_name.c_str(), run_time_ms);
+        }
+      }
+    } else if (signo == SIGINT) {
+      // Kill current running tests.
+      for (auto& child_proc : child_proc_list) {
+        if (child_proc.pid != 0) {
+          // Send SIGKILL to ensure the child process can be killed unconditionally.
+          kill(child_proc.pid, SIGKILL);
+        }
+      }
+      // SIGINT kills the parent process as well.
+      exit(1);
+    }
+  }
+}
+
+static bool CheckChildProcExit(pid_t exit_pid, int exit_status,
+                               std::vector<ChildProcInfo>& child_proc_list) {
+  for (size_t i = 0; i < child_proc_list.size(); ++i) {
+    if (child_proc_list[i].pid == exit_pid) {
+      child_proc_list[i].finished = true;
+      child_proc_list[i].timed_out = false;
+      child_proc_list[i].exit_status = exit_status;
+      child_proc_list[i].end_time_ns = NanoTime();
+      return true;
+    }
+  }
+  return false;
+}
+
+static size_t CheckChildProcTimeout(std::vector<ChildProcInfo>& child_proc_list) {
+  int64_t current_time_ns = NanoTime();
+  size_t timeout_child_count = 0;
+  for (size_t i = 0; i < child_proc_list.size(); ++i) {
+    if (child_proc_list[i].deadline_end_time_ns <= current_time_ns) {
+      child_proc_list[i].finished = true;
+      child_proc_list[i].timed_out = true;
+      child_proc_list[i].end_time_ns = current_time_ns;
+      ++timeout_child_count;
+    }
+  }
+  return timeout_child_count;
+}
+
+static void WaitChildProcs(std::vector<TestCase>& testcase_list,
+                           std::vector<ChildProcInfo>& child_proc_list) {
+  size_t finished_child_count = 0;
+  while (true) {
+    int status;
+    pid_t result;
+    while ((result = TEMP_FAILURE_RETRY(waitpid(-1, &status, WNOHANG))) > 0) {
+      if (CheckChildProcExit(result, status, child_proc_list)) {
+        ++finished_child_count;
+      }
+    }
+
+    if (result == -1) {
+      if (errno == ECHILD) {
+        // This happens when we have no running child processes.
+        return;
+      } else {
+        perror("waitpid");
+        exit(1);
+      }
+    } else if (result == 0) {
+      finished_child_count += CheckChildProcTimeout(child_proc_list);
+    }
+
+    if (finished_child_count > 0) {
+      return;
+    }
+
+    HandleSignals(testcase_list, child_proc_list);
+
+    // sleep 1 ms to avoid busy looping.
+    timespec sleep_time;
+    sleep_time.tv_sec = 0;
+    sleep_time.tv_nsec = 1000000;
+    nanosleep(&sleep_time, NULL);
+  }
+}
+
+static TestResult WaitForOneChild(pid_t pid) {
+  int exit_status;
+  pid_t result = TEMP_FAILURE_RETRY(waitpid(pid, &exit_status, 0));
+
+  TestResult test_result = TEST_SUCCESS;
+  if (result != pid || WEXITSTATUS(exit_status) != 0) {
+    test_result = TEST_FAILED;
+  }
+  return test_result;
+}
+
+static void CollectChildTestResult(const ChildProcInfo& child_proc, TestCase& testcase) {
+  int test_id = child_proc.test_id;
+  testcase.SetTestTime(test_id, child_proc.end_time_ns - child_proc.start_time_ns);
+  if (child_proc.timed_out) {
+    // The child process marked as timed_out has not exited, and we should kill it manually.
+    kill(child_proc.pid, SIGKILL);
+    WaitForOneChild(child_proc.pid);
+  }
+
+  while (true) {
+    char buf[1024];
+    ssize_t bytes_read = TEMP_FAILURE_RETRY(read(child_proc.child_read_fd, buf, sizeof(buf) - 1));
+    if (bytes_read > 0) {
+      buf[bytes_read] = '\0';
+      testcase.GetTest(test_id).AppendTestOutput(buf);
+    } else if (bytes_read == 0) {
+      break; // Read end.
+    } else {
+      if (errno == EAGAIN) {
+        // No data is available. This rarely happens, only when the child process created other
+        // processes which have not exited so far. But the child process has already exited or
+        // been killed, so the test has finished, and we shouldn't wait further.
+        break;
+      }
+      perror("read child_read_fd in RunTestInSeparateProc");
+      exit(1);
+    }
+  }
+  close(child_proc.child_read_fd);
+
+  if (child_proc.timed_out) {
+    testcase.SetTestResult(test_id, TEST_TIMEOUT);
+    char buf[1024];
+    snprintf(buf, sizeof(buf), "%s killed because of timeout at %" PRId64 " ms.\n",
+             testcase.GetTestName(test_id).c_str(), testcase.GetTestTime(test_id) / 1000000);
+    testcase.GetTest(test_id).AppendTestOutput(buf);
+
+  } else if (WIFSIGNALED(child_proc.exit_status)) {
+    // Record signal terminated test as failed.
+    testcase.SetTestResult(test_id, TEST_FAILED);
+    char buf[1024];
+    snprintf(buf, sizeof(buf), "%s terminated by signal: %s.\n",
+             testcase.GetTestName(test_id).c_str(), strsignal(WTERMSIG(child_proc.exit_status)));
+    testcase.GetTest(test_id).AppendTestOutput(buf);
+
+  } else {
+    testcase.SetTestResult(test_id, WEXITSTATUS(child_proc.exit_status) == 0 ?
+                           TEST_SUCCESS : TEST_FAILED);
+  }
+}
+
+// We choose to use multi-fork and multi-wait here instead of multi-thread, because it always
+// makes deadlock to use fork in multi-thread.
+// Returns true if all tests run successfully, otherwise return false.
+static bool RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>& testcase_list,
+                                  int iteration_count, size_t job_count,
+                                  const std::string& xml_output_filename) {
+  // Stop default result printer to avoid environment setup/teardown information for each test.
+  testing::UnitTest::GetInstance()->listeners().Release(
+                        testing::UnitTest::GetInstance()->listeners().default_result_printer());
+  testing::UnitTest::GetInstance()->listeners().Append(new TestResultPrinter);
+
+  // Signals are blocked here as we want to handle them in HandleSignals() later.
+  sigset_t block_mask, orig_mask;
+  sigemptyset(&block_mask);
+  sigaddset(&block_mask, SIGINT);
+  sigaddset(&block_mask, SIGQUIT);
+  if (sigprocmask(SIG_BLOCK, &block_mask, &orig_mask) == -1) {
+    perror("sigprocmask SIG_BLOCK");
+    exit(1);
+  }
+
+  bool all_tests_passed = true;
+
+  for (size_t iteration = 1;
+       iteration_count < 0 || iteration <= static_cast<size_t>(iteration_count);
+       ++iteration) {
+    OnTestIterationStartPrint(testcase_list, iteration, iteration_count);
+    int64_t iteration_start_time_ns = NanoTime();
+    time_t epoch_iteration_start_time = time(NULL);
+
+    // Run up to job_count tests in parallel, each test in a child process.
+    std::vector<ChildProcInfo> child_proc_list;
+
+    // Next test to run is [next_testcase_id:next_test_id].
+    size_t next_testcase_id = 0;
+    size_t next_test_id = 0;
+
+    // Record how many tests are finished.
+    std::vector<size_t> finished_test_count_list(testcase_list.size(), 0);
+    size_t finished_testcase_count = 0;
+
+    while (finished_testcase_count < testcase_list.size()) {
+      // run up to job_count child processes.
+      while (child_proc_list.size() < job_count && next_testcase_id < testcase_list.size()) {
+        std::string test_name = testcase_list[next_testcase_id].GetTestName(next_test_id);
+        ChildProcInfo child_proc = RunChildProcess(test_name, next_testcase_id, next_test_id,
+                                                   orig_mask, argc, argv);
+        child_proc_list.push_back(child_proc);
+        if (++next_test_id == testcase_list[next_testcase_id].TestCount()) {
+          next_test_id = 0;
+          ++next_testcase_id;
+        }
+      }
+
+      // Wait for any child proc finish or timeout.
+      WaitChildProcs(testcase_list, child_proc_list);
+
+      // Collect result.
+      auto it = child_proc_list.begin();
+      while (it != child_proc_list.end()) {
+        auto& child_proc = *it;
+        if (child_proc.finished == true) {
+          size_t testcase_id = child_proc.testcase_id;
+          size_t test_id = child_proc.test_id;
+          TestCase& testcase = testcase_list[testcase_id];
+
+          CollectChildTestResult(child_proc, testcase);
+          OnTestEndPrint(testcase, test_id);
+
+          if (++finished_test_count_list[testcase_id] == testcase.TestCount()) {
+            ++finished_testcase_count;
+          }
+          if (testcase.GetTestResult(test_id) != TEST_SUCCESS) {
+            all_tests_passed = false;
+          }
+
+          it = child_proc_list.erase(it);
+        } else {
+          ++it;
+        }
+      }
+    }
+
+    int64_t elapsed_time_ns = NanoTime() - iteration_start_time_ns;
+    OnTestIterationEndPrint(testcase_list, iteration, elapsed_time_ns);
+    if (!xml_output_filename.empty()) {
+      OnTestIterationEndXmlPrint(xml_output_filename, testcase_list, epoch_iteration_start_time,
+                                 elapsed_time_ns);
+    }
+  }
+
+  // Restore signal mask.
+  if (sigprocmask(SIG_SETMASK, &orig_mask, NULL) == -1) {
+    perror("sigprocmask SIG_SETMASK");
+    exit(1);
+  }
+
+  return all_tests_passed;
+}
+
+static size_t GetProcessorCount() {
+  return static_cast<size_t>(sysconf(_SC_NPROCESSORS_ONLN));
+}
+
+static void AddPathSeparatorInTestProgramPath(std::vector<char*>& args) {
+  // To run DeathTest in threadsafe mode, gtest requires that the user must invoke the
+  // test program via a valid path that contains at least one path separator.
+  // The reason is that gtest uses clone() + execve() to run DeathTest in threadsafe mode,
+  // and execve() doesn't read environment variable PATH, so execve() will not success
+  // until we specify the absolute path or relative path of the test program directly.
+  if (strchr(args[0], '/') == NULL) {
+    char path[PATH_MAX];
+    ssize_t path_len = readlink("/proc/self/exe", path, sizeof(path));
+    if (path_len <= 0 || path_len >= static_cast<ssize_t>(sizeof(path))) {
+      perror("readlink");
+      exit(1);
+    }
+    path[path_len] = '\0';
+    args[0] = strdup(path);
+  }
+}
+
+static void AddGtestFilterSynonym(std::vector<char*>& args) {
+  // Support --gtest-filter as a synonym for --gtest_filter.
+  for (size_t i = 1; i < args.size(); ++i) {
+    if (strncmp(args[i], "--gtest-filter", strlen("--gtest-filter")) == 0) {
+      args[i][7] = '_';
+    }
+  }
+}
+
+struct IsolationTestOptions {
+  bool isolate;
+  size_t job_count;
+  int test_deadline_ms;
+  int test_warnline_ms;
+  std::string gtest_color;
+  bool gtest_print_time;
+  int gtest_repeat;
+  std::string gtest_output;
+};
+
+// Pick options not for gtest: There are two parts in args, one part is used in isolation test mode
+// as described in PrintHelpInfo(), the other part is handled by testing::InitGoogleTest() in
+// gtest. PickOptions() picks the first part into IsolationTestOptions structure, leaving the second
+// part in args.
+// Arguments:
+//   args is used to pass in all command arguments, and pass out only the part of options for gtest.
+//   options is used to pass out test options in isolation mode.
+// Return false if there is error in arguments.
+static bool PickOptions(std::vector<char*>& args, IsolationTestOptions& options) {
+  for (size_t i = 1; i < args.size(); ++i) {
+    if (strcmp(args[i], "--help") == 0 || strcmp(args[i], "-h") == 0) {
+      PrintHelpInfo();
+      options.isolate = false;
+      return true;
+    }
+  }
+
+  AddPathSeparatorInTestProgramPath(args);
+  AddGtestFilterSynonym(args);
+
+  // if --bionic-selftest argument is used, only enable self tests, otherwise remove self tests.
+  bool enable_selftest = false;
+  for (size_t i = 1; i < args.size(); ++i) {
+    if (strcmp(args[i], "--bionic-selftest") == 0) {
+      // This argument is to enable "bionic_selftest*" for self test, and is not shown in help info.
+      // Don't remove this option from arguments.
+      enable_selftest = true;
+    }
+  }
+  std::string gtest_filter_str;
+  for (size_t i = args.size() - 1; i >= 1; --i) {
+    if (strncmp(args[i], "--gtest_filter=", strlen("--gtest_filter=")) == 0) {
+      gtest_filter_str = std::string(args[i]);
+      args.erase(args.begin() + i);
+      break;
+    }
+  }
+  if (enable_selftest == true) {
+    args.push_back(strdup("--gtest_filter=bionic_selftest*"));
+  } else {
+    if (gtest_filter_str == "") {
+      gtest_filter_str = "--gtest_filter=-bionic_selftest*";
+    } else {
+      // Find if '-' for NEGATIVE_PATTERNS exists.
+      if (gtest_filter_str.find(":-") != std::string::npos) {
+        gtest_filter_str += ":bionic_selftest*";
+      } else {
+        gtest_filter_str += ":-bionic_selftest*";
+      }
+    }
+    args.push_back(strdup(gtest_filter_str.c_str()));
+  }
+
+  options.isolate = true;
+  // Parse arguments that make us can't run in isolation mode.
+  for (size_t i = 1; i < args.size(); ++i) {
+    if (strcmp(args[i], "--no-isolate") == 0) {
+      options.isolate = false;
+    } else if (strcmp(args[i], "--gtest_list_tests") == 0) {
+      options.isolate = false;
+    }
+  }
+
+  // Stop parsing if we will not run in isolation mode.
+  if (options.isolate == false) {
+    return true;
+  }
+
+  // Init default isolation test options.
+  options.job_count = GetProcessorCount();
+  options.test_deadline_ms = DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS;
+  options.test_warnline_ms = DEFAULT_GLOBAL_TEST_RUN_WARNLINE_MS;
+  options.gtest_color = testing::GTEST_FLAG(color);
+  options.gtest_print_time = testing::GTEST_FLAG(print_time);
+  options.gtest_repeat = testing::GTEST_FLAG(repeat);
+  options.gtest_output = testing::GTEST_FLAG(output);
+
+  // Parse arguments speficied for isolation mode.
+  for (size_t i = 1; i < args.size(); ++i) {
+    if (strncmp(args[i], "-j", strlen("-j")) == 0) {
+      char* p = args[i] + strlen("-j");
+      int count = 0;
+      if (*p != '\0') {
+        // Argument like -j5.
+        count = atoi(p);
+      } else if (args.size() > i + 1) {
+        // Arguments like -j 5.
+        count = atoi(args[i + 1]);
+        ++i;
+      }
+      if (count <= 0) {
+        fprintf(stderr, "invalid job count: %d\n", count);
+        return false;
+      }
+      options.job_count = static_cast<size_t>(count);
+    } else if (strncmp(args[i], "--deadline=", strlen("--deadline=")) == 0) {
+      int time_ms = atoi(args[i] + strlen("--deadline="));
+      if (time_ms <= 0) {
+        fprintf(stderr, "invalid deadline: %d\n", time_ms);
+        return false;
+      }
+      options.test_deadline_ms = time_ms;
+    } else if (strncmp(args[i], "--warnline=", strlen("--warnline=")) == 0) {
+      int time_ms = atoi(args[i] + strlen("--warnline="));
+      if (time_ms <= 0) {
+        fprintf(stderr, "invalid warnline: %d\n", time_ms);
+        return false;
+      }
+      options.test_warnline_ms = time_ms;
+    } else if (strncmp(args[i], "--gtest_color=", strlen("--gtest_color=")) == 0) {
+      options.gtest_color = args[i] + strlen("--gtest_color=");
+    } else if (strcmp(args[i], "--gtest_print_time=0") == 0) {
+      options.gtest_print_time = false;
+    } else if (strncmp(args[i], "--gtest_repeat=", strlen("--gtest_repeat=")) == 0) {
+      // If the value of gtest_repeat is < 0, then it indicates the tests
+      // should be repeated forever.
+      options.gtest_repeat = atoi(args[i] + strlen("--gtest_repeat="));
+      // Remove --gtest_repeat=xx from arguments, so child process only run one iteration for a single test.
+      args.erase(args.begin() + i);
+      --i;
+    } else if (strncmp(args[i], "--gtest_output=", strlen("--gtest_output=")) == 0) {
+      std::string output = args[i] + strlen("--gtest_output=");
+      // generate output xml file path according to the strategy in gtest.
+      bool success = true;
+      if (strncmp(output.c_str(), "xml:", strlen("xml:")) == 0) {
+        output = output.substr(strlen("xml:"));
+        if (output.size() == 0) {
+          success = false;
+        }
+        // Make absolute path.
+        if (success && output[0] != '/') {
+          char* cwd = getcwd(NULL, 0);
+          if (cwd != NULL) {
+            output = std::string(cwd) + "/" + output;
+            free(cwd);
+          } else {
+            success = false;
+          }
+        }
+        // Add file name if output is a directory.
+        if (success && output.back() == '/') {
+          output += "test_details.xml";
+        }
+      }
+      if (success) {
+        options.gtest_output = output;
+      } else {
+        fprintf(stderr, "invalid gtest_output file: %s\n", args[i]);
+        return false;
+      }
+
+      // Remove --gtest_output=xxx from arguments, so child process will not write xml file.
+      args.erase(args.begin() + i);
+      --i;
+    }
+  }
+
+  // Add --no-isolate in args to prevent child process from running in isolation mode again.
+  // As DeathTest will try to call execve(), this argument should always be added.
+  args.insert(args.begin() + 1, strdup("--no-isolate"));
+  return true;
+}
+
+int main(int argc, char** argv) {
+  std::vector<char*> arg_list;
+  for (int i = 0; i < argc; ++i) {
+    arg_list.push_back(argv[i]);
+  }
+
+  IsolationTestOptions options;
+  if (PickOptions(arg_list, options) == false) {
+    return 1;
+  }
+
+  if (options.isolate == true) {
+    // Set global variables.
+    global_test_run_deadline_ms = options.test_deadline_ms;
+    global_test_run_warnline_ms = options.test_warnline_ms;
+    testing::GTEST_FLAG(color) = options.gtest_color.c_str();
+    testing::GTEST_FLAG(print_time) = options.gtest_print_time;
+    std::vector<TestCase> testcase_list;
+
+    argc = static_cast<int>(arg_list.size());
+    arg_list.push_back(NULL);
+    if (EnumerateTests(argc, arg_list.data(), testcase_list) == false) {
+      return 1;
+    }
+    bool all_test_passed =  RunTestInSeparateProc(argc, arg_list.data(), testcase_list,
+                              options.gtest_repeat, options.job_count, options.gtest_output);
+    return all_test_passed ? 0 : 1;
+  } else {
+    argc = static_cast<int>(arg_list.size());
+    arg_list.push_back(NULL);
+    testing::InitGoogleTest(&argc, arg_list.data());
+    return RUN_ALL_TESTS();
+  }
+}
+
+//################################################################################
+// Bionic Gtest self test, run this by --bionic-selftest option.
+
+TEST(bionic_selftest, test_success) {
+  ASSERT_EQ(1, 1);
+}
+
+TEST(bionic_selftest, test_fail) {
+  ASSERT_EQ(0, 1);
+}
+
+TEST(bionic_selftest, test_time_warn) {
+  sleep(4);
+}
+
+TEST(bionic_selftest, test_timeout) {
+  while (1) {}
+}
+
+TEST(bionic_selftest, test_signal_SEGV_terminated) {
+  char* p = reinterpret_cast<char*>(static_cast<intptr_t>(atoi("0")));
+  *p = 3;
+}
+
+class bionic_selftest_DeathTest : public BionicDeathTest {};
+
+static void deathtest_helper_success() {
+  ASSERT_EQ(1, 1);
+  exit(0);
+}
+
+TEST_F(bionic_selftest_DeathTest, success) {
+  ASSERT_EXIT(deathtest_helper_success(), ::testing::ExitedWithCode(0), "");
+}
+
+static void deathtest_helper_fail() {
+  ASSERT_EQ(1, 0);
+}
+
+TEST_F(bionic_selftest_DeathTest, fail) {
+  ASSERT_EXIT(deathtest_helper_fail(), ::testing::ExitedWithCode(0), "");
+}
diff --git a/tests/inttypes_test.cpp b/tests/inttypes_test.cpp
index e588503..dbbb6d4 100644
--- a/tests/inttypes_test.cpp
+++ b/tests/inttypes_test.cpp
@@ -14,11 +14,12 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
-
-#include <stdio.h>
 #include <inttypes.h>
 
+#include <errno.h>
+#include <gtest/gtest.h>
+#include <stdio.h>
+
 TEST(inttypes, misc) {
   char buf[512];
 
@@ -46,3 +47,51 @@
 TEST(inttypes, wcstoumax) {
   ASSERT_EQ(123U, wcstoumax(L"123", NULL, 10));
 }
+
+TEST(inttypes, strtoimax_EINVAL) {
+  errno = 0;
+  strtoimax("123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoimax("123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoimax("123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(inttypes, strtoumax_EINVAL) {
+  errno = 0;
+  strtoumax("123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoumax("123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoumax("123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(inttypes, wcstoimax_EINVAL) {
+  errno = 0;
+  wcstoimax(L"123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoimax(L"123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoimax(L"123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(inttypes, wcstoumax_EINVAL) {
+  errno = 0;
+  wcstoumax(L"123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoumax(L"123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoumax(L"123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
diff --git a/tests/libc_logging_test.cpp b/tests/libc_logging_test.cpp
index 950161e..d4ceded 100644
--- a/tests/libc_logging_test.cpp
+++ b/tests/libc_logging_test.cpp
@@ -176,3 +176,15 @@
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif // __BIONIC__
 }
+
+TEST(libc_logging, buffer_overrun) {
+#if defined(__BIONIC__)
+  char buf[BUFSIZ];
+  ASSERT_EQ(11, __libc_format_buffer(buf, sizeof(buf), "hello %s", "world"));
+  EXPECT_STREQ("hello world", buf);
+  ASSERT_EQ(11, __libc_format_buffer(buf, 8, "hello %s", "world"));
+  EXPECT_STREQ("hello w", buf);
+#else // __BIONIC__
+  GTEST_LOG_(INFO) << "This test does nothing.\n";
+#endif // __BIONIC__
+}
diff --git a/tests/libgen_test.cpp b/tests/libgen_test.cpp
index 3958f81..e9a5d5c 100644
--- a/tests/libgen_test.cpp
+++ b/tests/libgen_test.cpp
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
-
 #include <libgen.h>
 
 #include <errno.h>
+#include <gtest/gtest.h>
 
 static void TestBasename(const char* in, const char* expected_out) {
   char* writable_in = (in != NULL) ? strdup(in) : NULL;
@@ -40,7 +39,7 @@
 
 // Do not use basename as the test name, it's defined to another value in glibc
 // so leads to a differently named test on host versus target architectures.
-TEST(libgen, basename_smoke) {
+TEST(libgen, posix_basename) {
   TestBasename(NULL, ".");
   TestBasename("", ".");
   TestBasename("/usr/lib", "lib");
diff --git a/tests/libs/Android.build.dlext_testzip.mk b/tests/libs/Android.build.dlext_testzip.mk
index d05927e..7cc0dae 100644
--- a/tests/libs/Android.build.dlext_testzip.mk
+++ b/tests/libs/Android.build.dlext_testzip.mk
@@ -35,7 +35,7 @@
 $(LOCAL_BUILT_MODULE): PRIVATE_ALIGNMENT := 4096 # PAGE_SIZE
 $(LOCAL_BUILT_MODULE) : $(my_shared_libs) | $(ZIPALIGN)
 	@echo "Zipalign $(PRIVATE_ALIGNMENT): $@"
-	$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)
-	$(hide) cp $^ $(dir $@)
-	$(hide) (cd $(dir $@) && touch empty_file.txt && zip -rD0 $(notdir $@).unaligned empty_file.txt *.so)
+	$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)/libdir
+	$(hide) cp $^ $(dir $@)/libdir
+	$(hide) (cd $(dir $@) && touch empty_file.txt && zip -rD0 $(notdir $@).unaligned empty_file.txt libdir/*.so)
 	$(hide) $(ZIPALIGN) $(PRIVATE_ALIGNMENT) $@.unaligned $@
diff --git a/tests/libs/Android.build.dlopen_2_parents_reloc.mk b/tests/libs/Android.build.dlopen_2_parents_reloc.mk
new file mode 100644
index 0000000..29ae10d
--- /dev/null
+++ b/tests/libs/Android.build.dlopen_2_parents_reloc.mk
@@ -0,0 +1,52 @@
+#
+# Copyright (C) 2014 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.
+#
+
+# -----------------------------------------------------------------------------
+# Libraries used by dlfcn tests to verify local group ref_counting
+# libtest_two_parents*.so
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# ..._child.so - correct answer
+# -----------------------------------------------------------------------------
+libtest_two_parents_child_src_files := \
+    dlopen_2_parents_reloc_answer.cpp
+
+module := libtest_two_parents_child
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._parent1.so - correct answer
+# -----------------------------------------------------------------------------
+libtest_two_parents_parent1_src_files := \
+    dlopen_check_order_reloc_answer_impl.cpp
+
+libtest_two_parents_parent1_shared_libraries := libtest_two_parents_child
+libtest_two_parents_parent1_cflags := -D__ANSWER=42
+module := libtest_two_parents_parent1
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._parent2.so - incorrect answer
+# -----------------------------------------------------------------------------
+libtest_two_parents_parent2_src_files := \
+    dlopen_check_order_reloc_answer_impl.cpp
+
+libtest_two_parents_parent2_shared_libraries := libtest_two_parents_child
+libtest_two_parents_parent2_cflags := -D__ANSWER=1
+module := libtest_two_parents_parent2
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
diff --git a/tests/libs/Android.build.dlopen_check_order_dlsym.mk b/tests/libs/Android.build.dlopen_check_order_dlsym.mk
new file mode 100644
index 0000000..73d8c1a
--- /dev/null
+++ b/tests/libs/Android.build.dlopen_check_order_dlsym.mk
@@ -0,0 +1,90 @@
+#
+# Copyright (C) 2012 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.
+#
+
+# -----------------------------------------------------------------------------
+# Libraries used by dlfcn tests to verify correct load order:
+# libtest_check_order_2_right.so
+# -----------------------------------------------------------------------------
+libtest_check_order_dlsym_2_right_src_files := \
+    dlopen_check_order_dlsym_answer.cpp
+
+libtest_check_order_dlsym_2_right_cflags := -D__ANSWER=42
+module := libtest_check_order_dlsym_2_right
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_a.so
+# -----------------------------------------------------------------------------
+libtest_check_order_dlsym_a_src_files := \
+    dlopen_check_order_dlsym_answer.cpp
+
+libtest_check_order_dlsym_a_cflags := -D__ANSWER=1
+module := libtest_check_order_dlsym_a
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_b.so
+# -----------------------------------------------------------------------------
+libtest_check_order_dlsym_b_src_files := \
+    dlopen_check_order_dlsym_answer.cpp
+
+libtest_check_order_dlsym_b_cflags := -D__ANSWER=2 -D__ANSWER2=43
+module := libtest_check_order_dlsym_b
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_c.so
+# -----------------------------------------------------------------------------
+libtest_check_order_dlsym_3_c_src_files := \
+    dlopen_check_order_dlsym_answer.cpp
+
+libtest_check_order_dlsym_3_c_cflags := -D__ANSWER=3
+module := libtest_check_order_dlsym_3_c
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_d.so
+# -----------------------------------------------------------------------------
+libtest_check_order_dlsym_d_src_files := \
+   dlopen_check_order_dlsym_answer.cpp
+
+libtest_check_order_dlsym_d_shared_libraries := libtest_check_order_dlsym_b
+libtest_check_order_dlsym_d_cflags := -D__ANSWER=4 -D__ANSWER2=4
+module := libtest_check_order_dlsym_d
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_left.so
+# -----------------------------------------------------------------------------
+libtest_check_order_dlsym_1_left_src_files := \
+    empty.cpp
+
+libtest_check_order_dlsym_1_left_shared_libraries := libtest_check_order_dlsym_a libtest_check_order_dlsym_b
+
+module := libtest_check_order_dlsym_1_left
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order.so
+# -----------------------------------------------------------------------------
+libtest_check_order_dlsym_src_files := \
+    empty.cpp
+
+libtest_check_order_dlsym_shared_libraries := libtest_check_order_dlsym_1_left \
+  libtest_check_order_dlsym_2_right libtest_check_order_dlsym_3_c
+
+module := libtest_check_order_dlsym
+include $(LOCAL_PATH)/Android.build.testlib.mk
diff --git a/tests/libs/Android.build.dlopen_check_order_reloc_main_executable.mk b/tests/libs/Android.build.dlopen_check_order_reloc_main_executable.mk
new file mode 100644
index 0000000..639696b
--- /dev/null
+++ b/tests/libs/Android.build.dlopen_check_order_reloc_main_executable.mk
@@ -0,0 +1,56 @@
+#
+# Copyright (C) 2012 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.
+#
+
+# -----------------------------------------------------------------------------
+# Libraries used by dlfcn tests to verify correct relocation order:
+# libtest_check_order_reloc_root*.so
+# -----------------------------------------------------------------------------
+
+
+# -----------------------------------------------------------------------------
+# ..._1.so - empty
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_root_1_src_files := \
+    empty.cpp
+
+
+module := libtest_check_order_reloc_root_1
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+
+# -----------------------------------------------------------------------------
+# ..._2.so - this one has the incorrect answer
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_root_2_src_files := \
+    dlopen_check_order_reloc_root_answer_impl.cpp
+
+libtest_check_order_reloc_root_2_cflags := -D__ANSWER=2
+
+module := libtest_check_order_reloc_root_2
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_reloc_root.so <- implements get_answer3()
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_root_src_files := \
+    dlopen_check_order_reloc_root_answer.cpp
+
+libtest_check_order_reloc_root_shared_libraries := \
+    libtest_check_order_reloc_root_1 \
+    libtest_check_order_reloc_root_2
+
+module := libtest_check_order_reloc_root
+include $(LOCAL_PATH)/Android.build.testlib.mk
diff --git a/tests/libs/Android.build.dlopen_check_order_reloc_siblings.mk b/tests/libs/Android.build.dlopen_check_order_reloc_siblings.mk
new file mode 100644
index 0000000..bd35a51
--- /dev/null
+++ b/tests/libs/Android.build.dlopen_check_order_reloc_siblings.mk
@@ -0,0 +1,158 @@
+#
+# Copyright (C) 2014 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.
+#
+
+# -----------------------------------------------------------------------------
+# Libraries used by dlfcn tests to verify correct relocation order:
+# libtest_check_order_reloc_siblings*.so
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# ..._1.so - empty
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_1_src_files := \
+    empty.cpp
+
+libtest_check_order_reloc_siblings_1_shared_libraries := \
+    libtest_check_order_reloc_siblings_a \
+    libtest_check_order_reloc_siblings_b
+
+module := libtest_check_order_reloc_siblings_1
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+
+# -----------------------------------------------------------------------------
+# ..._2.so - empty
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_2_src_files := \
+    dlopen_check_order_reloc_grandchild_answer.cpp
+
+libtest_check_order_reloc_siblings_2_shared_libraries := \
+    libtest_check_order_reloc_siblings_c \
+    libtest_check_order_reloc_siblings_d
+
+libtest_check_order_reloc_siblings_2_allow_undefined_symbols := true
+module := libtest_check_order_reloc_siblings_2
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._3.so - get_answer2();
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_3_src_files := \
+    dlopen_check_order_reloc_nephew_answer.cpp
+
+libtest_check_order_reloc_siblings_3_shared_libraries := \
+    libtest_check_order_reloc_siblings_e \
+    libtest_check_order_reloc_siblings_f
+
+module := libtest_check_order_reloc_siblings_3
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._a.so <- correct impl
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_a_src_files := \
+    dlopen_check_order_reloc_answer_impl.cpp
+
+libtest_check_order_reloc_siblings_a_cflags := -D__ANSWER=42
+module := libtest_check_order_reloc_siblings_a
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._b.so
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_b_src_files := \
+    dlopen_check_order_reloc_answer_impl.cpp
+
+libtest_check_order_reloc_siblings_b_cflags := -D__ANSWER=1
+module := libtest_check_order_reloc_siblings_b
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._c.so
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_c_src_files := \
+    dlopen_check_order_reloc_answer_impl.cpp
+
+libtest_check_order_reloc_siblings_c_cflags := -D__ANSWER=2
+libtest_check_order_reloc_siblings_c_shared_libraries := \
+    libtest_check_order_reloc_siblings_c_1 \
+    libtest_check_order_reloc_siblings_c_2
+
+module := libtest_check_order_reloc_siblings_c
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._d.so
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_d_src_files := \
+    dlopen_check_order_reloc_answer_impl.cpp
+
+libtest_check_order_reloc_siblings_d_cflags := -D__ANSWER=3
+module := libtest_check_order_reloc_siblings_d
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._e.so
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_e_src_files := \
+    dlopen_check_order_reloc_answer_impl.cpp
+
+libtest_check_order_reloc_siblings_e_cflags := -D__ANSWER=4
+module := libtest_check_order_reloc_siblings_e
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._f.so <- get_answer()
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_f_src_files := \
+    dlopen_check_order_reloc_answer.cpp
+
+module := libtest_check_order_reloc_siblings_f
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._c_1.so
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_c_1_src_files := \
+    dlopen_check_order_reloc_grandchild_answer_impl.cpp
+
+libtest_check_order_reloc_siblings_c_1_cflags := -D__ANSWER=42
+module := libtest_check_order_reloc_siblings_c_1
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# ..._c_2.so
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_c_2_src_files := \
+    dlopen_check_order_reloc_grandchild_answer_impl.cpp
+
+libtest_check_order_reloc_siblings_c_2_cflags := -D__ANSWER=0
+module := libtest_check_order_reloc_siblings_c_2
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_reloc_siblings.so
+# -----------------------------------------------------------------------------
+libtest_check_order_reloc_siblings_src_files := \
+    empty.cpp
+
+libtest_check_order_reloc_siblings_shared_libraries := \
+    libtest_check_order_reloc_siblings_1 \
+    libtest_check_order_reloc_siblings_2 \
+    libtest_check_order_reloc_siblings_3
+
+module := libtest_check_order_reloc_siblings
+include $(LOCAL_PATH)/Android.build.testlib.mk
diff --git a/tests/libs/Android.build.pthread_atfork.mk b/tests/libs/Android.build.pthread_atfork.mk
new file mode 100644
index 0000000..72ffec4
--- /dev/null
+++ b/tests/libs/Android.build.pthread_atfork.mk
@@ -0,0 +1,25 @@
+#
+# Copyright (C) 2014 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.
+#
+
+# -----------------------------------------------------------------------------
+# This library used to test phtread_atfork handler behaviour
+# during/after dlclose.
+# -----------------------------------------------------------------------------
+libtest_pthread_atfork_src_files := pthread_atfork.cpp
+
+module := libtest_pthread_atfork
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
diff --git a/tests/libs/Android.build.versioned_lib.mk b/tests/libs/Android.build.versioned_lib.mk
new file mode 100644
index 0000000..f3a6374
--- /dev/null
+++ b/tests/libs/Android.build.versioned_lib.mk
@@ -0,0 +1,120 @@
+#
+# 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.
+#
+
+# -----------------------------------------------------------------------------
+# Libraries used to test versioned symbols
+# -----------------------------------------------------------------------------
+libtest_versioned_uselibv1_src_files := versioned_uselib.cpp
+
+libtest_versioned_uselibv1_shared_libraries := \
+    libtest_versioned_libv1
+
+module := libtest_versioned_uselibv1
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+libtest_versioned_uselibv2_src_files := \
+    versioned_uselib.cpp
+
+libtest_versioned_uselibv2_shared_libraries := \
+    libtest_versioned_libv2
+
+libtest_versioned_uselibv2_ldflags := \
+    -Wl,--version-script,$(LOCAL_PATH)/versioned_uselib.map
+
+module := libtest_versioned_uselibv2
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+libtest_versioned_uselibv2_other_src_files := \
+    versioned_uselib.cpp
+
+libtest_versioned_uselibv2_other_shared_libraries := \
+    libtest_versioned_otherlib_empty libtest_versioned_libv2
+
+module := libtest_versioned_uselibv2_other
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+libtest_versioned_uselibv3_other_src_files := \
+    versioned_uselib.cpp
+
+libtest_versioned_uselibv3_other_shared_libraries := \
+    libtest_versioned_otherlib_empty libtest_versioned_lib
+
+module := libtest_versioned_uselibv3_other
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# lib v1 - this one used during static linking but never used at runtime
+# which forces libtest_versioned_uselibv1 to use function v1 from
+# libtest_versioned_lib.so
+# -----------------------------------------------------------------------------
+libtest_versioned_libv1_src_files := \
+    versioned_lib_v1.cpp
+
+libtest_versioned_libv1_ldflags := \
+    -Wl,--version-script,$(LOCAL_PATH)/versioned_lib_v1.map \
+    -Wl,-soname,libtest_versioned_lib.so
+
+module := libtest_versioned_libv1
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# lib v2 - to make libtest_versioned_uselibv2.so use version 2 of versioned_function()
+# -----------------------------------------------------------------------------
+libtest_versioned_libv2_src_files := \
+    versioned_lib_v2.cpp
+
+libtest_versioned_libv2_ldflags := \
+    -Wl,--version-script,$(LOCAL_PATH)/versioned_lib_v2.map \
+    -Wl,-soname,libtest_versioned_lib.so
+
+module := libtest_versioned_libv2
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+
+# -----------------------------------------------------------------------------
+# last version - this one is used at the runtime and exports 3 versions
+# of versioned_symbol().
+# -----------------------------------------------------------------------------
+libtest_versioned_lib_src_files := \
+    versioned_lib_v3.cpp
+
+libtest_versioned_lib_ldflags := \
+    -Wl,--version-script,$(LOCAL_PATH)/versioned_lib_v3.map
+
+module := libtest_versioned_lib
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# This library is empty, the actual implementation will provide an unversioned
+# symbol for versioned_function().
+# -----------------------------------------------------------------------------
+libtest_versioned_otherlib_empty_src_files := empty.cpp
+
+libtest_versioned_otherlib_empty_ldflags := -Wl,-soname,libtest_versioned_otherlib.so
+module := libtest_versioned_otherlib_empty
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+libtest_versioned_otherlib_src_files := versioned_lib_other.cpp
+
+libtest_versioned_otherlib_ldflags := \
+    -Wl,--version-script,$(LOCAL_PATH)/versioned_lib_other.map
+
+module := libtest_versioned_otherlib
+include $(LOCAL_PATH)/Android.build.testlib.mk
diff --git a/tests/libs/Android.mk b/tests/libs/Android.mk
index af3e070..c432c2e 100644
--- a/tests/libs/Android.mk
+++ b/tests/libs/Android.mk
@@ -21,25 +21,44 @@
 common_additional_dependencies := \
     $(LOCAL_PATH)/Android.mk \
     $(LOCAL_PATH)/Android.build.dlext_testzip.mk \
+    $(LOCAL_PATH)/Android.build.dlopen_2_parents_reloc.mk \
+    $(LOCAL_PATH)/Android.build.dlopen_check_order_dlsym.mk \
+    $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_siblings.mk \
+    $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_main_executable.mk \
+    $(LOCAL_PATH)/Android.build.pthread_atfork.mk \
     $(LOCAL_PATH)/Android.build.testlib.mk \
+    $(LOCAL_PATH)/Android.build.versioned_lib.mk \
     $(TEST_PATH)/Android.build.mk
 
 # -----------------------------------------------------------------------------
-# Library used by dlfcn tests.
+# Library to test gnu-styled hash
 # -----------------------------------------------------------------------------
 ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64))
-no-elf-hash-table-library_src_files := \
-    empty.cpp \
+libgnu-hash-table-library_src_files := \
+    dlext_test_library.cpp \
 
-no-elf-hash-table-library_ldflags := \
+libgnu-hash-table-library_ldflags := \
     -Wl,--hash-style=gnu \
 
-module := no-elf-hash-table-library
+module := libgnu-hash-table-library
 module_tag := optional
 include $(LOCAL_PATH)/Android.build.testlib.mk
 endif
 
 # -----------------------------------------------------------------------------
+# Library to test sysv-styled hash
+# -----------------------------------------------------------------------------
+libsysv-hash-table-library_src_files := \
+    dlext_test_library.cpp \
+
+libsysv-hash-table-library_ldflags := \
+    -Wl,--hash-style=sysv \
+
+module := libsysv-hash-table-library
+module_tag := optional
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
 # Library used by dlext tests - with GNU RELRO program header
 # -----------------------------------------------------------------------------
 libdlext_test_src_files := \
@@ -100,6 +119,17 @@
 build_target := SHARED_LIBRARY
 include $(TEST_PATH)/Android.build.mk
 
+# ----------------------------------------------------------------------------
+# Library with soname which does not match filename
+# ----------------------------------------------------------------------------
+libdlext_test_different_soname_src_files := \
+    dlext_test_library.cpp \
+
+module := libdlext_test_different_soname
+module_tag := optional
+libdlext_test_different_soname_ldflags := -Wl,-soname=libdlext_test_soname.so
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
 # -----------------------------------------------------------------------------
 # Library used by dlext tests - zipped and aligned
 # -----------------------------------------------------------------------------
@@ -121,86 +151,70 @@
 include $(LOCAL_PATH)/Android.build.testlib.mk
 
 # -----------------------------------------------------------------------------
-# Libraries used by dlfcn tests to verify correct load order:
-# libtest_check_order_2_right.so
+# Library used by dlfcn nodelete tests
 # -----------------------------------------------------------------------------
-libtest_check_order_2_right_src_files := \
-    dlopen_testlib_answer.cpp
+libtest_nodelete_1_src_files := \
+    dlopen_nodelete_1.cpp
 
-libtest_check_order_2_right_cflags := -D__ANSWER=42
-module := libtest_check_order_2_right
+module := libtest_nodelete_1
 include $(LOCAL_PATH)/Android.build.testlib.mk
 
 # -----------------------------------------------------------------------------
-# libtest_check_order_a.so
+# Library used by dlfcn nodelete tests
 # -----------------------------------------------------------------------------
-libtest_check_order_a_src_files := \
-    dlopen_testlib_answer.cpp
+libtest_nodelete_2_src_files := \
+    dlopen_nodelete_2.cpp
 
-libtest_check_order_a_cflags := -D__ANSWER=1
-module := libtest_check_order_a
+module := libtest_nodelete_2
 include $(LOCAL_PATH)/Android.build.testlib.mk
 
 # -----------------------------------------------------------------------------
-# libtest_check_order_b.so
+# Library used by dlfcn nodelete tests
 # -----------------------------------------------------------------------------
-libtest_check_order_b_src_files := \
-    dlopen_testlib_answer.cpp
+libtest_nodelete_dt_flags_1_src_files := \
+    dlopen_nodelete_dt_flags_1.cpp
 
-libtest_check_order_b_cflags := -D__ANSWER=2 -D__ANSWER2=43
-module := libtest_check_order_b
+libtest_nodelete_dt_flags_1_ldflags := -Wl,-z,nodelete
+
+module := libtest_nodelete_dt_flags_1
 include $(LOCAL_PATH)/Android.build.testlib.mk
 
 # -----------------------------------------------------------------------------
-# libtest_check_order_c.so
+# Build library with two parents
 # -----------------------------------------------------------------------------
-libtest_check_order_3_c_src_files := \
-    dlopen_testlib_answer.cpp
-
-libtest_check_order_3_c_cflags := -D__ANSWER=3
-module := libtest_check_order_3_c
-include $(LOCAL_PATH)/Android.build.testlib.mk
+include $(LOCAL_PATH)/Android.build.dlopen_2_parents_reloc.mk
 
 # -----------------------------------------------------------------------------
-# libtest_check_order_d.so
+# Build libtest_check_order_dlsym.so with its dependencies.
 # -----------------------------------------------------------------------------
-libtest_check_order_d_src_files := \
-   dlopen_testlib_answer.cpp
-
-libtest_check_order_d_shared_libraries := libtest_check_order_b
-libtest_check_order_d_cflags := -D__ANSWER=4 -D__ANSWER2=4
-module := libtest_check_order_d
-include $(LOCAL_PATH)/Android.build.testlib.mk
+include $(LOCAL_PATH)/Android.build.dlopen_check_order_dlsym.mk
 
 # -----------------------------------------------------------------------------
-# libtest_check_order_left.so
+# Build libtest_check_order_siblings.so with its dependencies.
 # -----------------------------------------------------------------------------
-libtest_check_order_1_left_src_files := \
-    empty.cpp
-
-libtest_check_order_1_left_shared_libraries := libtest_check_order_a libtest_check_order_b
-
-module := libtest_check_order_1_left
-include $(LOCAL_PATH)/Android.build.testlib.mk
+include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_siblings.mk
 
 # -----------------------------------------------------------------------------
-# libtest_check_order.so
+# Build libtest_check_order_root.so with its dependencies.
 # -----------------------------------------------------------------------------
-libtest_check_order_src_files := \
-    empty.cpp
+include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_main_executable.mk
 
-libtest_check_order_shared_libraries := libtest_check_order_1_left \
-  libtest_check_order_2_right libtest_check_order_3_c
+# -----------------------------------------------------------------------------
+# Build libtest_versioned_lib.so with its dependencies.
+# -----------------------------------------------------------------------------
+include $(LOCAL_PATH)/Android.build.versioned_lib.mk
 
-module := libtest_check_order
-include $(LOCAL_PATH)/Android.build.testlib.mk
+# -----------------------------------------------------------------------------
+# Build libraries needed by pthread_atfork tests
+# -----------------------------------------------------------------------------
+include $(LOCAL_PATH)/Android.build.pthread_atfork.mk
 
 # -----------------------------------------------------------------------------
 # Library with dependency loop used by dlfcn tests
 #
 # libtest_with_dependency_loop -> a -> b -> c -> a
 # -----------------------------------------------------------------------------
-libtest_with_dependency_loop_src_files := dlopen_testlib_invalid.cpp
+libtest_with_dependency_loop_src_files := dlopen_testlib_loopy_root.cpp
 
 libtest_with_dependency_loop_shared_libraries := \
     libtest_with_dependency_loop_a
@@ -211,7 +225,7 @@
 # -----------------------------------------------------------------------------
 # libtest_with_dependency_loop_a.so
 # -----------------------------------------------------------------------------
-libtest_with_dependency_loop_a_src_files := dlopen_testlib_invalid.cpp
+libtest_with_dependency_loop_a_src_files := dlopen_testlib_loopy_a.cpp
 
 libtest_with_dependency_loop_a_shared_libraries := \
     libtest_with_dependency_loop_b_tmp
@@ -224,7 +238,7 @@
 #
 # this is temporary placeholder - will be removed
 # -----------------------------------------------------------------------------
-libtest_with_dependency_loop_b_tmp_src_files := dlopen_testlib_invalid.cpp
+libtest_with_dependency_loop_b_tmp_src_files := dlopen_testlib_loopy_invalid.cpp
 libtest_with_dependency_loop_b_tmp_ldflags := -Wl,-soname=libtest_with_dependency_loop_b.so
 
 module := libtest_with_dependency_loop_b_tmp
@@ -233,7 +247,7 @@
 # -----------------------------------------------------------------------------
 # libtest_with_dependency_loop_b.so
 # -----------------------------------------------------------------------------
-libtest_with_dependency_loop_b_src_files := dlopen_testlib_invalid.cpp
+libtest_with_dependency_loop_b_src_files := dlopen_testlib_loopy_b.cpp
 libtest_with_dependency_loop_b_shared_libraries := libtest_with_dependency_loop_c
 
 module := libtest_with_dependency_loop_b
@@ -242,7 +256,7 @@
 # -----------------------------------------------------------------------------
 # libtest_with_dependency_loop_c.so
 # -----------------------------------------------------------------------------
-libtest_with_dependency_loop_c_src_files := dlopen_testlib_invalid.cpp
+libtest_with_dependency_loop_c_src_files := dlopen_testlib_loopy_c.cpp
 
 libtest_with_dependency_loop_c_shared_libraries := \
     libtest_with_dependency_loop_a
@@ -295,7 +309,7 @@
 build_type := host
 include $(TEST_PATH)/Android.build.mk
 
-ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm64 x86 x86_64))
     ifeq ($(TARGET_ARCH),arm64)
       libtest_ifunc_multilib := 64
       # TODO: This is a workaround - remove it once gcc
@@ -304,6 +318,7 @@
     endif
 
     build_type := target
+    libtest_ifunc_clang_target := false
     include $(TEST_PATH)/Android.build.mk
 endif
 
@@ -318,6 +333,47 @@
 include $(LOCAL_PATH)/Android.build.testlib.mk
 
 # -----------------------------------------------------------------------------
+# This library is used by dl_load test to check symbol preempting
+# by main executable
+# -----------------------------------------------------------------------------
+libdl_preempt_test_1_src_files := dl_preempt_library_1.cpp
+
+module := libdl_preempt_test_1
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# This library is used by dl_load test to check symbol preempting
+# by libdl_preempt_test_1.so
+# -----------------------------------------------------------------------------
+libdl_preempt_test_2_src_files := dl_preempt_library_2.cpp
+
+module := libdl_preempt_test_2
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# Library with DF_1_GLOBAL
+# -----------------------------------------------------------------------------
+libdl_test_df_1_global_src_files := dl_df_1_global.cpp
+libdl_test_df_1_global_ldflags := -Wl,-z,global
+# TODO (dimitry): x86* toolchain does not support -z global - switch to bfd
+ifeq ($(filter $(TARGET_ARCH),x86 x86_64),$(TARGET_ARCH))
+libdl_test_df_1_global_ldflags_target := -fuse-ld=bfd
+endif
+# TODO (dimitry): host ld.gold does not yet support -z global
+# remove this line once it is updated.
+libdl_test_df_1_global_ldflags_host := -fuse-ld=bfd
+
+module := libdl_test_df_1_global
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# Library using symbol from libdl_test_df_1_global
+# -----------------------------------------------------------------------------
+libtest_dlsym_df_1_global_src_files := dl_df_1_use_global.cpp
+module := libtest_dlsym_df_1_global
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
 # Library with weak function
 # -----------------------------------------------------------------------------
 libtest_dlsym_weak_func_src_files := \
@@ -325,3 +381,44 @@
 
 module := libtest_dlsym_weak_func
 include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# Library to check RTLD_LOCAL with dlsym in 'this'
+# -----------------------------------------------------------------------------
+libtest_dlsym_from_this_src_files := dlsym_from_this.cpp
+
+module := libtest_dlsym_from_this
+libtest_dlsym_from_this_shared_libraries_target := libdl
+
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# Library with weak undefined function
+# -----------------------------------------------------------------------------
+libtest_dlopen_weak_undefined_func_src_files := \
+    dlopen_weak_undefined.cpp
+
+module := libtest_dlopen_weak_undefined_func
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# Library with constructor that calls dlopen() b/7941716
+# -----------------------------------------------------------------------------
+libtest_dlopen_from_ctor_src_files := \
+   dlopen_testlib_dlopen_from_ctor.cpp
+
+module := libtest_dlopen_from_ctor
+
+libtest_dlopen_from_ctor_shared_libraries_target := libdl
+
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
+# Library that depends on the library with constructor that calls dlopen() b/7941716
+# -----------------------------------------------------------------------------
+
+libtest_dlopen_from_ctor_main_src_files := empty.cpp
+libtest_dlopen_from_ctor_main_shared_libraries := libtest_dlopen_from_ctor
+
+module := libtest_dlopen_from_ctor_main
+include $(LOCAL_PATH)/Android.build.testlib.mk
diff --git a/tests/libs/atexit_testlib.cpp b/tests/libs/atexit_testlib.cpp
index d35f57b..314e8de 100644
--- a/tests/libs/atexit_testlib.cpp
+++ b/tests/libs/atexit_testlib.cpp
@@ -19,12 +19,19 @@
 #include <string>
 
 // use external control number from main test
-static std::string* atexit_sequence = NULL;
-static bool* atexit_valid_this_in_static_dtor = NULL;
+static std::string* atexit_sequence = nullptr;
+static bool* atexit_valid_this_in_static_dtor = nullptr;
+static bool* atexit_attr_dtor_called = nullptr;
+
+static int cxx_ctor_called = 0;
+static int attr_ctor_called = 0;
 
 static class AtExitStaticClass {
  public:
-  AtExitStaticClass() { expected_this = this; }
+  AtExitStaticClass() {
+    expected_this = this;
+    cxx_ctor_called = 1;
+  }
   ~AtExitStaticClass() {
     if (atexit_valid_this_in_static_dtor) {
       *atexit_valid_this_in_static_dtor = (expected_this == this);
@@ -35,7 +42,7 @@
 
 } static_obj;
 
-const AtExitStaticClass* AtExitStaticClass::expected_this = NULL;
+const AtExitStaticClass* AtExitStaticClass::expected_this = nullptr;
 
 // 4
 static void atexit_handler_from_atexit_from_atexit2() {
@@ -66,10 +73,30 @@
   *atexit_sequence += " a wall";
 }
 
-extern "C" void register_atexit(std::string* sequence, bool* valid_this_in_static_dtor) {
+// attribute c-tor and d-tor
+static void __attribute__((constructor)) atexit_attr_ctor() {
+  attr_ctor_called = 1;
+}
+
+static void __attribute__((destructor)) atexit_attr_dtor() {
+  if (atexit_attr_dtor_called) {
+    *atexit_attr_dtor_called = true;
+  }
+}
+
+extern "C" void register_atexit(std::string* sequence, bool* valid_this_in_static_dtor, bool* attr_dtor_called) {
   atexit_sequence = sequence;
   atexit_valid_this_in_static_dtor = valid_this_in_static_dtor;
+  atexit_attr_dtor_called = attr_dtor_called;
   atexit(atexit_handler_regular);
   atexit(atexit_handler_with_atexit);
 }
 
+extern "C" int get_cxx_ctor_called() {
+  return cxx_ctor_called;
+}
+
+extern "C" int get_attr_ctor_called() {
+  return attr_ctor_called;
+}
+
diff --git a/tests/libs/dl_df_1_global.cpp b/tests/libs/dl_df_1_global.cpp
new file mode 100644
index 0000000..39856fd
--- /dev/null
+++ b/tests/libs/dl_df_1_global.cpp
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int dl_df_1_global_get_answer_impl() {
+  return 42;
+}
diff --git a/tests/libs/dl_df_1_use_global.cpp b/tests/libs/dl_df_1_use_global.cpp
new file mode 100644
index 0000000..e14910d
--- /dev/null
+++ b/tests/libs/dl_df_1_use_global.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int __attribute__((weak)) dl_df_1_global_get_answer_impl() {
+  return 0;
+}
+
+extern "C" int dl_df_1_global_get_answer() {
+  return dl_df_1_global_get_answer_impl();
+}
diff --git a/tests/libs/dl_preempt_library_1.cpp b/tests/libs/dl_preempt_library_1.cpp
new file mode 100644
index 0000000..b4d81d5
--- /dev/null
+++ b/tests/libs/dl_preempt_library_1.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+// This one should be preempted by the function
+// defined in the main executable.
+extern "C" int __attribute__((weak)) main_global_default_serial() {
+  return 2716057;
+}
+
+// Even though this one is defined by the main
+// executable it should not be preempted
+// because of protected visibility
+extern "C" int __attribute__((weak, visibility("protected"))) main_global_protected_serial() {
+  return 3370318;
+}
+
+extern "C" int main_global_default_get_serial() {
+  return main_global_default_serial();
+}
+
+extern "C" int main_global_protected_get_serial() {
+  return main_global_protected_serial();
+}
+
+// Trying to preempt functions from a DT_NEEDED .so
+extern "C" int lib_global_default_serial() {
+  return 3370318;
+}
+
+extern "C" int lib_global_protected_serial() {
+  return 2716057;
+}
diff --git a/tests/libs/dl_preempt_library_2.cpp b/tests/libs/dl_preempt_library_2.cpp
new file mode 100644
index 0000000..8df9a16
--- /dev/null
+++ b/tests/libs/dl_preempt_library_2.cpp
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+// This one should be preempted by the function
+// defined in libdl_preempt_test_1.so
+extern "C" int __attribute__((weak)) lib_global_default_serial() {
+  return 2716057;
+}
+
+// Even though this one is defined by
+// libdl_preempt_test_1.so it should not be
+// preempted because of protected visibility
+extern "C" int __attribute__((weak,visibility("protected"))) lib_global_protected_serial() {
+  return 3370318;
+}
+
+extern "C" int lib_global_default_get_serial() {
+  return lib_global_default_serial();
+}
+
+extern "C" int lib_global_protected_get_serial() {
+  return lib_global_protected_serial();
+}
+
diff --git a/tests/libs/dlopen_2_parents_reloc_answer.cpp b/tests/libs/dlopen_2_parents_reloc_answer.cpp
new file mode 100644
index 0000000..036670b
--- /dev/null
+++ b/tests/libs/dlopen_2_parents_reloc_answer.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int __attribute__((weak)) check_order_reloc_get_answer_impl() {
+  return 0;
+}
+
+extern "C" int check_order_reloc_get_answer() {
+  return check_order_reloc_get_answer_impl();
+}
diff --git a/tests/libs/dlopen_check_order_dlsym_answer.cpp b/tests/libs/dlopen_check_order_dlsym_answer.cpp
new file mode 100644
index 0000000..2ae6cf7
--- /dev/null
+++ b/tests/libs/dlopen_check_order_dlsym_answer.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int check_order_dlsym_get_answer() {
+  return __ANSWER;
+}
+
+#ifdef __ANSWER2
+extern "C" int check_order_dlsym_get_answer2() {
+  return __ANSWER2;
+}
+#endif
diff --git a/tests/libs/dlopen_check_order_reloc_answer.cpp b/tests/libs/dlopen_check_order_reloc_answer.cpp
new file mode 100644
index 0000000..036670b
--- /dev/null
+++ b/tests/libs/dlopen_check_order_reloc_answer.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int __attribute__((weak)) check_order_reloc_get_answer_impl() {
+  return 0;
+}
+
+extern "C" int check_order_reloc_get_answer() {
+  return check_order_reloc_get_answer_impl();
+}
diff --git a/tests/libs/dlopen_check_order_reloc_answer_impl.cpp b/tests/libs/dlopen_check_order_reloc_answer_impl.cpp
new file mode 100644
index 0000000..324b905
--- /dev/null
+++ b/tests/libs/dlopen_check_order_reloc_answer_impl.cpp
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int check_order_reloc_get_answer_impl() {
+  return __ANSWER;
+}
diff --git a/tests/libs/dlopen_check_order_reloc_grandchild_answer.cpp b/tests/libs/dlopen_check_order_reloc_grandchild_answer.cpp
new file mode 100644
index 0000000..afb5f2c
--- /dev/null
+++ b/tests/libs/dlopen_check_order_reloc_grandchild_answer.cpp
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int check_order_reloc_grandchild_get_answer_impl();
+
+extern "C" int check_order_reloc_grandchild_get_answer() {
+  return check_order_reloc_grandchild_get_answer_impl();
+}
+
diff --git a/tests/libs/dlopen_check_order_reloc_grandchild_answer_impl.cpp b/tests/libs/dlopen_check_order_reloc_grandchild_answer_impl.cpp
new file mode 100644
index 0000000..32d2b24
--- /dev/null
+++ b/tests/libs/dlopen_check_order_reloc_grandchild_answer_impl.cpp
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int check_order_reloc_grandchild_get_answer_impl() {
+  return __ANSWER;
+}
diff --git a/tests/libs/dlopen_check_order_reloc_nephew_answer.cpp b/tests/libs/dlopen_check_order_reloc_nephew_answer.cpp
new file mode 100644
index 0000000..d6d1f09
--- /dev/null
+++ b/tests/libs/dlopen_check_order_reloc_nephew_answer.cpp
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int check_order_reloc_get_answer_impl();
+
+extern "C" int check_order_reloc_nephew_get_answer() {
+  return check_order_reloc_get_answer_impl();
+}
+
+namespace {
+// The d-tor for this class is called on dlclose() -> __on_dlclose() -> __cxa_finalize()
+// We use it to detect calls to prematurely unmapped libraries during dlclose.
+// See also b/18338888
+class CallNephewInDtor {
+ public:
+  ~CallNephewInDtor() {
+    check_order_reloc_get_answer_impl();
+  }
+} instance;
+};
+
+extern "C" void* get_instance() {
+  return &instance;
+}
diff --git a/tests/libs/dlopen_check_order_reloc_root_answer.cpp b/tests/libs/dlopen_check_order_reloc_root_answer.cpp
new file mode 100644
index 0000000..b21abd7
--- /dev/null
+++ b/tests/libs/dlopen_check_order_reloc_root_answer.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int check_order_reloc_root_get_answer_impl();
+
+extern "C" int check_order_reloc_root_get_answer() {
+  return check_order_reloc_root_get_answer_impl();
+}
diff --git a/tests/libs/dlopen_check_order_reloc_root_answer_impl.cpp b/tests/libs/dlopen_check_order_reloc_root_answer_impl.cpp
new file mode 100644
index 0000000..25fb9ac
--- /dev/null
+++ b/tests/libs/dlopen_check_order_reloc_root_answer_impl.cpp
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int check_order_reloc_root_get_answer_impl() {
+  return __ANSWER;
+}
diff --git a/tests/libs/dlopen_nodelete_1.cpp b/tests/libs/dlopen_nodelete_1.cpp
new file mode 100644
index 0000000..9438978
--- /dev/null
+++ b/tests/libs/dlopen_nodelete_1.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+
+uint32_t dlopen_nodelete_1_taxicab_number = 1729;
+static bool* unload_flag_ptr = nullptr;
+
+extern "C" void dlopen_nodelete_1_set_unload_flag_ptr(bool* ptr) {
+  unload_flag_ptr = ptr;
+}
+
+static void __attribute__((destructor)) unload_guard() {
+  if (unload_flag_ptr != nullptr) {
+    *unload_flag_ptr = true;
+  }
+}
diff --git a/tests/libs/dlopen_nodelete_2.cpp b/tests/libs/dlopen_nodelete_2.cpp
new file mode 100644
index 0000000..b5ab5c1
--- /dev/null
+++ b/tests/libs/dlopen_nodelete_2.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+
+uint32_t dlopen_nodelete_2_taxicab_number = 1729;
+static bool* unload_flag_ptr = nullptr;
+
+extern "C" void dlopen_nodelete_2_set_unload_flag_ptr(bool* ptr) {
+  unload_flag_ptr = ptr;
+}
+
+static void __attribute__((destructor)) unload_guard() {
+  if (unload_flag_ptr != nullptr) {
+    *unload_flag_ptr = true;
+  }
+}
diff --git a/tests/libs/dlopen_nodelete_dt_flags_1.cpp b/tests/libs/dlopen_nodelete_dt_flags_1.cpp
new file mode 100644
index 0000000..39c0a7e
--- /dev/null
+++ b/tests/libs/dlopen_nodelete_dt_flags_1.cpp
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+
+static bool* unload_flag_ptr = nullptr;
+
+extern "C" void dlopen_nodelete_dt_flags_1_set_unload_flag_ptr(bool* ptr) {
+  unload_flag_ptr = ptr;
+}
+
+static void __attribute__((destructor)) unload_guard() {
+  if (unload_flag_ptr != nullptr) {
+    *unload_flag_ptr = true;
+  }
+}
diff --git a/tests/libs/dlopen_testlib_answer.cpp b/tests/libs/dlopen_testlib_answer.cpp
deleted file mode 100644
index a4d7504..0000000
--- a/tests/libs/dlopen_testlib_answer.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-extern "C" int dlopen_test_get_answer() {
-  return __ANSWER;
-}
-
-#ifdef __ANSWER2
-extern "C" int dlopen_test_get_answer2() {
-  return __ANSWER2;
-}
-#endif
diff --git a/tests/libs/dlopen_testlib_dlopen_from_ctor.cpp b/tests/libs/dlopen_testlib_dlopen_from_ctor.cpp
new file mode 100644
index 0000000..95233f7
--- /dev/null
+++ b/tests/libs/dlopen_testlib_dlopen_from_ctor.cpp
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+#include <dlfcn.h>
+
+static void __attribute__((constructor)) call_dlopen_from_ctor() {
+  void* handle = dlopen("libc.so", RTLD_NOW);
+  dlclose(handle);
+}
+
diff --git a/tests/libs/dlopen_testlib_invalid.cpp b/tests/libs/dlopen_testlib_invalid.cpp
deleted file mode 100644
index f2039c6..0000000
--- a/tests/libs/dlopen_testlib_invalid.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <stdlib.h>
-
-// This file is used for libraries that are not supposed to
-// be successfully loaded/linked - therefore, this function should
-// not be visible via dlsym - (we are going to use this fact in tests)
-extern "C" int dlopen_test_invalid_function() {
-  abort();
-}
diff --git a/tests/libs/dlopen_testlib_loopy_a.cpp b/tests/libs/dlopen_testlib_loopy_a.cpp
new file mode 100644
index 0000000..4c08764
--- /dev/null
+++ b/tests/libs/dlopen_testlib_loopy_a.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdlib.h>
+
+extern "C" bool __attribute__((weak)) dlopen_test_loopy_function_impl() {
+  return false;
+}
+
+extern "C" bool dlopen_test_loopy_function() {
+  return dlopen_test_loopy_function_impl();
+}
diff --git a/tests/libs/dlopen_testlib_loopy_b.cpp b/tests/libs/dlopen_testlib_loopy_b.cpp
new file mode 100644
index 0000000..01dcda9
--- /dev/null
+++ b/tests/libs/dlopen_testlib_loopy_b.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdlib.h>
+
+extern "C" bool dlopen_test_loopy_function_impl() {
+  return false;
+}
diff --git a/tests/libs/dlopen_testlib_loopy_c.cpp b/tests/libs/dlopen_testlib_loopy_c.cpp
new file mode 100644
index 0000000..01dcda9
--- /dev/null
+++ b/tests/libs/dlopen_testlib_loopy_c.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdlib.h>
+
+extern "C" bool dlopen_test_loopy_function_impl() {
+  return false;
+}
diff --git a/tests/libs/dlopen_testlib_loopy_invalid.cpp b/tests/libs/dlopen_testlib_loopy_invalid.cpp
new file mode 100644
index 0000000..5aa11f8
--- /dev/null
+++ b/tests/libs/dlopen_testlib_loopy_invalid.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdlib.h>
+
+// This library should never be loaded
+static void __attribute__((constructor)) panic() {
+  abort();
+}
+
diff --git a/tests/libs/dlopen_testlib_loopy_root.cpp b/tests/libs/dlopen_testlib_loopy_root.cpp
new file mode 100644
index 0000000..c9459f0
--- /dev/null
+++ b/tests/libs/dlopen_testlib_loopy_root.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdlib.h>
+
+extern "C" bool dlopen_test_loopy_function_impl() {
+  return true;
+}
diff --git a/tests/libs/dlopen_testlib_simple.cpp b/tests/libs/dlopen_testlib_simple.cpp
index bf750b2..3226955 100644
--- a/tests/libs/dlopen_testlib_simple.cpp
+++ b/tests/libs/dlopen_testlib_simple.cpp
@@ -19,6 +19,6 @@
 
 uint32_t dlopen_testlib_taxicab_number = 1729;
 
-bool dlopen_testlib_simple_func() {
+extern "C" bool dlopen_testlib_simple_func() {
   return true;
 }
diff --git a/tests/libs/dlopen_weak_undefined.cpp b/tests/libs/dlopen_weak_undefined.cpp
new file mode 100644
index 0000000..599a52e
--- /dev/null
+++ b/tests/libs/dlopen_weak_undefined.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+extern "C" int __attribute__((weak)) weak_undefined_func();
+
+extern "C" int use_weak_undefined_func() {
+  if (weak_undefined_func) {
+    return weak_undefined_func();
+  } else {
+    return 6551;
+  }
+}
diff --git a/tests/libs/dlsym_from_this.cpp b/tests/libs/dlsym_from_this.cpp
new file mode 100644
index 0000000..b5215c9
--- /dev/null
+++ b/tests/libs/dlsym_from_this.cpp
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+#include <dlfcn.h>
+#include <stdio.h>
+
+int test_dlsym_symbol = 42;
+
+extern "C" int* lookup_dlsym_symbol_using_RTLD_DEFAULT() {
+  dlerror();
+  int* result = static_cast<int*>(dlsym(RTLD_DEFAULT, "test_dlsym_symbol"));
+  // TODO: remove this once b/20049306 is fixed
+  if (result == nullptr) {
+    printf("Cannot find the answer\n");
+  }
+  return result;
+}
+
diff --git a/tests/libs/pthread_atfork.cpp b/tests/libs/pthread_atfork.cpp
new file mode 100644
index 0000000..3a5aa4f
--- /dev/null
+++ b/tests/libs/pthread_atfork.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <pthread.h>
+
+extern "C" int proxy_pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) {
+  return pthread_atfork(prepare, parent, child);
+}
diff --git a/tests/libs/versioned_lib_other.cpp b/tests/libs/versioned_lib_other.cpp
new file mode 100644
index 0000000..60fa99a
--- /dev/null
+++ b/tests/libs/versioned_lib_other.cpp
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+extern "C" int versioned_function_v2() {
+  return 20;
+}
+
+__asm__(".symver versioned_function_v2,versioned_function@@TESTLIB_V2");
diff --git a/tests/libs/versioned_lib_other.map b/tests/libs/versioned_lib_other.map
new file mode 100644
index 0000000..752686d
--- /dev/null
+++ b/tests/libs/versioned_lib_other.map
@@ -0,0 +1,9 @@
+TESTLIB_V0 {
+  local:
+    versioned_function_v*;
+};
+
+TESTLIB_V2 {
+  global:
+    versioned_function;
+} TESTLIB_V0;
diff --git a/tests/libs/versioned_lib_v1.cpp b/tests/libs/versioned_lib_v1.cpp
new file mode 100644
index 0000000..c81cbf1
--- /dev/null
+++ b/tests/libs/versioned_lib_v1.cpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+extern "C" {
+  int versioned_function_v1(); // __attribute__((visibility("hidden")));
+  int version_zero_function();
+}
+
+int versioned_function_v1() {
+  return 1;
+}
+
+int version_zero_function() {
+  return 100;
+}
+
+__asm__(".symver versioned_function_v1,versioned_function@@TESTLIB_V1");
diff --git a/tests/libs/versioned_lib_v1.map b/tests/libs/versioned_lib_v1.map
new file mode 100644
index 0000000..dbda327
--- /dev/null
+++ b/tests/libs/versioned_lib_v1.map
@@ -0,0 +1,12 @@
+TESTLIB_V0 {
+  global:
+    version_zero_function;
+  local:
+    versioned_function_v*;
+};
+
+TESTLIB_V1 {
+  global:
+    versioned_function;
+} TESTLIB_V0;
+
diff --git a/tests/libs/versioned_lib_v2.cpp b/tests/libs/versioned_lib_v2.cpp
new file mode 100644
index 0000000..d7d413f
--- /dev/null
+++ b/tests/libs/versioned_lib_v2.cpp
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+extern "C" {
+  int versioned_function_v1(); // __attribute__((visibility("hidden")));
+  int versioned_function_v2(); // __attribute__((visibility("hidden")));
+  int version_zero_function();
+}
+
+int versioned_function_v1() {
+  return 1;
+}
+
+int versioned_function_v2() {
+  return 2;
+}
+
+int version_zero_function() {
+  return 200;
+}
+__asm__(".symver versioned_function_v1,versioned_function@TESTLIB_V1");
+__asm__(".symver versioned_function_v2,versioned_function@@TESTLIB_V2");
diff --git a/tests/libs/versioned_lib_v2.map b/tests/libs/versioned_lib_v2.map
new file mode 100644
index 0000000..bb38102
--- /dev/null
+++ b/tests/libs/versioned_lib_v2.map
@@ -0,0 +1,16 @@
+TESTLIB_V0 {
+  global:
+    version_zero_function;
+  local:
+    versioned_function_v*;
+};
+
+TESTLIB_V1 {
+  global:
+    versioned_function;
+} TESTLIB_V0;
+
+TESTLIB_V2 {
+  global:
+    versioned_function;
+} TESTLIB_V1;
diff --git a/tests/libs/versioned_lib_v3.cpp b/tests/libs/versioned_lib_v3.cpp
new file mode 100644
index 0000000..f4740a4
--- /dev/null
+++ b/tests/libs/versioned_lib_v3.cpp
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+extern "C" {
+  int versioned_function_v1(); // __attribute__((visibility("hidden")));
+  int versioned_function_v2(); // __attribute__((visibility("hidden")));
+  int versioned_function_v3(); // __attribute__((visibility("hidden")));
+  int version_zero_function();
+}
+
+int versioned_function_v1() {
+  return 1;
+}
+
+int versioned_function_v2() {
+  return 2;
+}
+
+int versioned_function_v3() {
+  return 3;
+}
+
+int version_zero_function() {
+  return 1000;
+}
+
+__asm__(".symver versioned_function_v1,versioned_function@TESTLIB_V1");
+__asm__(".symver versioned_function_v2,versioned_function@TESTLIB_V2");
+__asm__(".symver versioned_function_v3,versioned_function@@TESTLIB_V3");
diff --git a/tests/libs/versioned_lib_v3.map b/tests/libs/versioned_lib_v3.map
new file mode 100644
index 0000000..5b1ce59
--- /dev/null
+++ b/tests/libs/versioned_lib_v3.map
@@ -0,0 +1,21 @@
+TESTLIB_V0 {
+  global:
+    version_zero_function;
+  local:
+    versioned_function_v*;
+};
+
+TESTLIB_V1 {
+  global:
+    versioned_function;
+} TESTLIB_V0;
+
+TESTLIB_V2 {
+  global:
+    versioned_function;
+} TESTLIB_V1;
+
+TESTLIB_V3 {
+  global:
+    versioned_function;
+} TESTLIB_V2;
diff --git a/tests/libs/versioned_uselib.cpp b/tests/libs/versioned_uselib.cpp
new file mode 100644
index 0000000..96eb7c3
--- /dev/null
+++ b/tests/libs/versioned_uselib.cpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+extern "C" {
+  int versioned_function();
+
+  int get_function_version();
+  int version_zero_function();
+  int version_zero_function2() __attribute__((weak));
+}
+
+int get_function_version() {
+  return version_zero_function2() + version_zero_function() + versioned_function();
+}
+
+// we expect this function to be preempted by main executable.
+int version_zero_function2() {
+  return 40000;
+}
diff --git a/tests/libs/versioned_uselib.map b/tests/libs/versioned_uselib.map
new file mode 100644
index 0000000..10bc9ce
--- /dev/null
+++ b/tests/libs/versioned_uselib.map
@@ -0,0 +1,9 @@
+TESTLIB_NONE {
+  global:
+    get_function_version;
+};
+
+TESTLIB_ZERO {
+  global:
+    version_zero_function2;
+} TESTLIB_NONE;
diff --git a/tests/locale_test.cpp b/tests/locale_test.cpp
index 7ec607a..f308af5 100644
--- a/tests/locale_test.cpp
+++ b/tests/locale_test.cpp
@@ -71,20 +71,30 @@
   EXPECT_EQ(ENOENT, errno); // POSIX specified, not an implementation detail!
 }
 
-TEST(locale, newlocale) {
+TEST(locale, newlocale_invalid_category_mask) {
   errno = 0;
   EXPECT_EQ(0, newlocale(1 << 20, "C", 0));
   EXPECT_EQ(EINVAL, errno);
+}
 
-  locale_t l = newlocale(LC_ALL, "C", 0);
-  ASSERT_TRUE(l != NULL);
-  freelocale(l);
+TEST(locale, newlocale_NULL_locale_name) {
+  errno = 0;
+  EXPECT_EQ(0, newlocale(LC_ALL, NULL, 0));
+  EXPECT_EQ(EINVAL, errno);
+}
 
+TEST(locale, newlocale_bad_locale_name) {
   errno = 0;
   EXPECT_EQ(0, newlocale(LC_ALL, "this-is-not-a-locale", 0));
   EXPECT_EQ(ENOENT, errno); // POSIX specified, not an implementation detail!
 }
 
+TEST(locale, newlocale) {
+  locale_t l = newlocale(LC_ALL, "C", 0);
+  ASSERT_TRUE(l != NULL);
+  freelocale(l);
+}
+
 TEST(locale, duplocale) {
   locale_t cloned_global = duplocale(LC_GLOBAL_LOCALE);
   ASSERT_TRUE(cloned_global != NULL);
diff --git a/tests/malloc_test.cpp b/tests/malloc_test.cpp
index 6b7a28b..b76625a 100644
--- a/tests/malloc_test.cpp
+++ b/tests/malloc_test.cpp
@@ -22,6 +22,8 @@
 #include <malloc.h>
 #include <unistd.h>
 
+#include <tinyxml2.h>
+
 #include "private/bionic_config.h"
 
 TEST(malloc, malloc_std) {
@@ -322,3 +324,51 @@
   ASSERT_EQ(NULL, valloc(SIZE_MAX));
 }
 #endif
+
+TEST(malloc, malloc_info) {
+#ifdef __BIONIC__
+  char* buf;
+  size_t bufsize;
+  FILE* memstream = open_memstream(&buf, &bufsize);
+  ASSERT_NE(nullptr, memstream);
+  ASSERT_EQ(0, malloc_info(0, memstream));
+  ASSERT_EQ(0, fclose(memstream));
+
+  tinyxml2::XMLDocument doc;
+  ASSERT_EQ(tinyxml2::XML_SUCCESS, doc.Parse(buf));
+
+  auto root = doc.FirstChildElement();
+  ASSERT_NE(nullptr, root);
+  ASSERT_STREQ("malloc", root->Name());
+  ASSERT_STREQ("jemalloc-1", root->Attribute("version"));
+
+  auto arena = root->FirstChildElement();
+  for (; arena != nullptr; arena = arena->NextSiblingElement()) {
+    int val;
+
+    ASSERT_STREQ("heap", arena->Name());
+    ASSERT_EQ(tinyxml2::XML_SUCCESS, arena->QueryIntAttribute("nr", &val));
+    ASSERT_EQ(tinyxml2::XML_SUCCESS,
+              arena->FirstChildElement("allocated-large")->QueryIntText(&val));
+    ASSERT_EQ(tinyxml2::XML_SUCCESS,
+              arena->FirstChildElement("allocated-huge")->QueryIntText(&val));
+    ASSERT_EQ(tinyxml2::XML_SUCCESS,
+              arena->FirstChildElement("allocated-bins")->QueryIntText(&val));
+    ASSERT_EQ(tinyxml2::XML_SUCCESS,
+              arena->FirstChildElement("bins-total")->QueryIntText(&val));
+
+    auto bin = arena->FirstChildElement("bin");
+    for (; bin != nullptr; bin = bin ->NextSiblingElement()) {
+      if (strcmp(bin->Name(), "bin") == 0) {
+        ASSERT_EQ(tinyxml2::XML_SUCCESS, bin->QueryIntAttribute("nr", &val));
+        ASSERT_EQ(tinyxml2::XML_SUCCESS,
+                  bin->FirstChildElement("allocated")->QueryIntText(&val));
+        ASSERT_EQ(tinyxml2::XML_SUCCESS,
+                  bin->FirstChildElement("nmalloc")->QueryIntText(&val));
+        ASSERT_EQ(tinyxml2::XML_SUCCESS,
+                  bin->FirstChildElement("ndalloc")->QueryIntText(&val));
+      }
+    }
+  }
+#endif
+}
diff --git a/tests/math_cos_test.cpp b/tests/math_cos_test.cpp
deleted file mode 100644
index c0a2d82..0000000
--- a/tests/math_cos_test.cpp
+++ /dev/null
@@ -1,5643 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  double expected;
-  double call_data;
-} cos_intel_data_t;
-
-static cos_intel_data_t g_cos_intel_data[] = {
-  { // Entry 0
-    0x1.c1a27ae836f128000000000000504e9bp-1,
-    0x1.feb1f7920e248p-2
-  },
-  { // Entry 1
-    0x1.c1a27ae836f128000000000000504e9bp-1,
-    -0x1.feb1f7920e248p-2
-  },
-  { // Entry 2
-    0x1.78daf01036d0cfffffffffffff9890d6p-1,
-    0x1.7cb7648526f99p-1
-  },
-  { // Entry 3
-    0x1.78daf01036d0cfffffffffffff9890d6p-1,
-    -0x1.7cb7648526f99p-1
-  },
-  { // Entry 4
-    0x1.ff8eb6a91ecb000000000000001f8f56p-1,
-    0x1.549ec0c0c5afap-5
-  },
-  { // Entry 5
-    0x1.ff8eb6a91ecb000000000000001f8f56p-1,
-    -0x1.549ec0c0c5afap-5
-  },
-  { // Entry 6
-    0x1.fed0476fc75c9800000000000020b13ep-1,
-    0x1.16e534ee36580p-4
-  },
-  { // Entry 7
-    0x1.fed0476fc75c9800000000000020b13ep-1,
-    -0x1.16e534ee36580p-4
-  },
-  { // Entry 8
-    0x1.f10fc61e2c78efffffffffffff87666ap-1,
-    0x1.efeef61d39ac2p-3
-  },
-  { // Entry 9
-    0x1.f10fc61e2c78efffffffffffff87666ap-1,
-    -0x1.efeef61d39ac2p-3
-  },
-  { // Entry 10
-    0x1.434a3645be2087ffffffffffff72d0aep-1,
-    0x1.c65a170474549p-1
-  },
-  { // Entry 11
-    0x1.434a3645be2087ffffffffffff72d0aep-1,
-    -0x1.c65a170474549p-1
-  },
-  { // Entry 12
-    0x1.337fc5b072c52800000000000017fe77p-3,
-    0x1.6b8a6273d7c21p0
-  },
-  { // Entry 13
-    0x1.337fc5b072c52800000000000017fe77p-3,
-    -0x1.6b8a6273d7c21p0
-  },
-  { // Entry 14
-    0x1.efa7cddb128fb8004356877b74ee8abdp-1,
-    -0x1.036f4ba7e90aap-2
-  },
-  { // Entry 15
-    0x1.efa7cddb128fb8004356877b74ee8abdp-1,
-    0x1.036f4ba7e90aap-2
-  },
-  { // Entry 16
-    0x1.fffffffffffffffb5117fee2eda7f13ep-1,
-    -0x1.1500766c9df20p-31
-  },
-  { // Entry 17
-    0x1.fffffffffffffffb5117fee2eda7f13ep-1,
-    0x1.1500766c9df20p-31
-  },
-  { // Entry 18
-    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
-    -0x1.1e2a1563e068ep-2
-  },
-  { // Entry 19
-    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
-    0x1.1e2a1563e068ep-2
-  },
-  { // Entry 20
-    0x1.dc044ac92b7fb9007913c87db76fa49fp-8,
-    -0x1.2115aa73f8d05p5
-  },
-  { // Entry 21
-    0x1.dc044ac92b7fb9007913c87db76fa49fp-8,
-    0x1.2115aa73f8d05p5
-  },
-  { // Entry 22
-    0x1.d1fa67c50dd527f6e9abbb0bd0664ab9p-4,
-    -0x1.34e3bcdf8f69ap2
-  },
-  { // Entry 23
-    0x1.d1fa67c50dd527f6e9abbb0bd0664ab9p-4,
-    0x1.34e3bcdf8f69ap2
-  },
-  { // Entry 24
-    0x1.e2f8d19fb8db88056dcddd76f5a05c20p-2,
-    -0x1.380000000000bp7
-  },
-  { // Entry 25
-    0x1.e2f8d19fb8db88056dcddd76f5a05c20p-2,
-    0x1.380000000000bp7
-  },
-  { // Entry 26
-    0x1.8da9c90c3eda17f5bd708cfc414ff1b8p-1,
-    -0x1.440000004p6
-  },
-  { // Entry 27
-    0x1.8da9c90c3eda17f5bd708cfc414ff1b8p-1,
-    0x1.440000004p6
-  },
-  { // Entry 28
-    0x1.b59b320603f837ff015e2a961e75946ep-1,
-    -0x1.550c8ee67a4c4p29
-  },
-  { // Entry 29
-    0x1.b59b320603f837ff015e2a961e75946ep-1,
-    0x1.550c8ee67a4c4p29
-  },
-  { // Entry 30
-    0x1.ffffff7af6c887e5f3186371a17dd81fp-1,
-    -0x1.711789fdb2e8ap-13
-  },
-  { // Entry 31
-    0x1.ffffff7af6c887e5f3186371a17dd81fp-1,
-    0x1.711789fdb2e8ap-13
-  },
-  { // Entry 32
-    0x1.c1b68ebb0b4fe82e8e99f9d425ee901ap-2,
-    -0x1.77e000002p8
-  },
-  { // Entry 33
-    0x1.c1b68ebb0b4fe82e8e99f9d425ee901ap-2,
-    0x1.77e000002p8
-  },
-  { // Entry 34
-    0x1.1161e1dad76dbfd55f08c4a4a90bd547p-4,
-    -0x1.8106561931b43p0
-  },
-  { // Entry 35
-    0x1.1161e1dad76dbfd55f08c4a4a90bd547p-4,
-    0x1.8106561931b43p0
-  },
-  { // Entry 36
-    0x1.f828c3226b3d77c374e789d7216a85b3p-5,
-    -0x1.825be2461cad4p0
-  },
-  { // Entry 37
-    0x1.f828c3226b3d77c374e789d7216a85b3p-5,
-    0x1.825be2461cad4p0
-  },
-  { // Entry 38
-    0x1.f2990d742e9fa80dd19483a2c0de428bp-5,
-    -0x1.8288755803b08p0
-  },
-  { // Entry 39
-    0x1.f2990d742e9fa80dd19483a2c0de428bp-5,
-    0x1.8288755803b08p0
-  },
-  { // Entry 40
-    -0x1.ff150dda7524ce678ab97ee460e8e961p-1,
-    -0x1.8a75701f4ccd3p1
-  },
-  { // Entry 41
-    -0x1.ff150dda7524ce678ab97ee460e8e961p-1,
-    0x1.8a75701f4ccd3p1
-  },
-  { // Entry 42
-    0x1.015c47c32b574802eb81deb0db46c207p-1,
-    -0x1.b389316f37f37p3
-  },
-  { // Entry 43
-    0x1.015c47c32b574802eb81deb0db46c207p-1,
-    0x1.b389316f37f37p3
-  },
-  { // Entry 44
-    0x1.d681a366a05347fa56b75d845b33c7bbp-1,
-    -0x1.c602c465d7d27p6
-  },
-  { // Entry 45
-    0x1.d681a366a05347fa56b75d845b33c7bbp-1,
-    0x1.c602c465d7d27p6
-  },
-  { // Entry 46
-    -0x1.84e896c7543d54c16d7be346e0f40017p-1,
-    -0x1.cfb81fe69664cp4
-  },
-  { // Entry 47
-    -0x1.84e896c7543d54c16d7be346e0f40017p-1,
-    0x1.cfb81fe69664cp4
-  },
-  { // Entry 48
-    0x1.fc5dcfddd54c07f1574ce114c1e5effep-1,
-    -0x1.d08f2d86b12c6p13
-  },
-  { // Entry 49
-    0x1.fc5dcfddd54c07f1574ce114c1e5effep-1,
-    0x1.d08f2d86b12c6p13
-  },
-  { // Entry 50
-    0x1.fe83235fbe015d6c361556ee5a0e2294p-3,
-    -0x1.de13f0943c494p99
-  },
-  { // Entry 51
-    0x1.fe83235fbe015d6c361556ee5a0e2294p-3,
-    0x1.de13f0943c494p99
-  },
-  { // Entry 52
-    -0x1.720321239ec4f38d55b40d8445099c2ap-1,
-    -0x1.de3c1f1285e8bp3
-  },
-  { // Entry 53
-    -0x1.720321239ec4f38d55b40d8445099c2ap-1,
-    0x1.de3c1f1285e8bp3
-  },
-  { // Entry 54
-    0x1.f7143c8bba406d6f834a3bca5e9c6a58p-4,
-    -0x1.fffffffffff7fp1023
-  },
-  { // Entry 55
-    0x1.f7143c8bba406d6f834a3bca5e9c6a58p-4,
-    0x1.fffffffffff7fp1023
-  },
-  { // Entry 56
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 57
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 58
-    0x1.055e457ac122766a7a343ea4ac739b2ep-5,
-    0x1.0000000000001p51
-  },
-  { // Entry 59
-    0x1.055e457ac122766a7a343ea4ac739b2ep-5,
-    -0x1.0000000000001p51
-  },
-  { // Entry 60
-    0x1.c1528065b7d4e2d84d640301800ddd81p-1,
-    0x1.0000000000003p-1
-  },
-  { // Entry 61
-    0x1.c1528065b7d4e2d84d640301800ddd81p-1,
-    -0x1.0000000000003p-1
-  },
-  { // Entry 62
-    0x1.fffffffffffffffeffffffffffffa0p-1,
-    0x1.0000000000003p-32
-  },
-  { // Entry 63
-    0x1.fffffffffffffffeffffffffffffa0p-1,
-    -0x1.0000000000003p-32
-  },
-  { // Entry 64
-    0x1.fffea444bc05e0b2ec693f7226d056b8p-1,
-    0x1.0000000000020p150
-  },
-  { // Entry 65
-    0x1.fffea444bc05e0b2ec693f7226d056b8p-1,
-    -0x1.0000000000020p150
-  },
-  { // Entry 66
-    -0x1.ebddee876f4338cc885394d1039acfe1p-1,
-    0x1.0000000000038p380
-  },
-  { // Entry 67
-    -0x1.ebddee876f4338cc885394d1039acfe1p-1,
-    -0x1.0000000000038p380
-  },
-  { // Entry 68
-    -0x1.f2ffc51dc69681ded33362645b4e8513p-1,
-    0x1.0000000000118p380
-  },
-  { // Entry 69
-    -0x1.f2ffc51dc69681ded33362645b4e8513p-1,
-    -0x1.0000000000118p380
-  },
-  { // Entry 70
-    -0x1.f8fbb4d358b207f4f81c36cf21c4af97p-1,
-    0x1.00000000003ffp641
-  },
-  { // Entry 71
-    -0x1.f8fbb4d358b207f4f81c36cf21c4af97p-1,
-    -0x1.00000000003ffp641
-  },
-  { // Entry 72
-    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
-    0x1.00000000010p1
-  },
-  { // Entry 73
-    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
-    -0x1.00000000010p1
-  },
-  { // Entry 74
-    0x1.fd1242c25994d0cc5daf405fa510e539p-1,
-    0x1.000000008p452
-  },
-  { // Entry 75
-    0x1.fd1242c25994d0cc5daf405fa510e539p-1,
-    -0x1.000000008p452
-  },
-  { // Entry 76
-    0x1.fffc0001554da8000048828de97acccbp-1,
-    0x1.00000000effafp-7
-  },
-  { // Entry 77
-    0x1.fffc0001554da8000048828de97acccbp-1,
-    -0x1.00000000effafp-7
-  },
-  { // Entry 78
-    0x1.14a27f292552280000dd30fbf6b38481p-1,
-    0x1.00000114fefe2p0
-  },
-  { // Entry 79
-    0x1.14a27f292552280000dd30fbf6b38481p-1,
-    -0x1.00000114fefe2p0
-  },
-  { // Entry 80
-    0x1.bf81e0269c59c7ff753ca32147666c56p-3,
-    0x1.0000070p40
-  },
-  { // Entry 81
-    0x1.bf81e0269c59c7ff753ca32147666c56p-3,
-    -0x1.0000070p40
-  },
-  { // Entry 82
-    0x1.14a26ed1960d67ffffdf8d13b43fa2b4p-1,
-    0x1.00000acadb3d3p0
-  },
-  { // Entry 83
-    0x1.14a26ed1960d67ffffdf8d13b43fa2b4p-1,
-    -0x1.00000acadb3d3p0
-  },
-  { // Entry 84
-    0x1.ffffffffbfffe7ffff155655559a7d2dp-1,
-    0x1.00003p-17
-  },
-  { // Entry 85
-    0x1.ffffffffbfffe7ffff155655559a7d2dp-1,
-    -0x1.00003p-17
-  },
-  { // Entry 86
-    0x1.ffffffffeffff7ffff15f96ad3b29d94p-1,
-    0x1.00003ffffffaep-18
-  },
-  { // Entry 87
-    0x1.ffffffffeffff7ffff15f96ad3b29d94p-1,
-    -0x1.00003ffffffaep-18
-  },
-  { // Entry 88
-    0x1.ffffffffeffff7ffff15576aab329f45p-1,
-    0x1.00003ffffffffp-18
-  },
-  { // Entry 89
-    0x1.ffffffffeffff7ffff15576aab329f45p-1,
-    -0x1.00003ffffffffp-18
-  },
-  { // Entry 90
-    -0x1.dab7efeb35bad7fbdcb0efedb662097cp-2,
-    0x1.00007ffffdea0p41
-  },
-  { // Entry 91
-    -0x1.dab7efeb35bad7fbdcb0efedb662097cp-2,
-    -0x1.00007ffffdea0p41
-  },
-  { // Entry 92
-    0x1.fffffffffbfff8000001595aa9afffcfp-1,
-    0x1.0000ffff8p-19
-  },
-  { // Entry 93
-    0x1.fffffffffbfff8000001595aa9afffcfp-1,
-    -0x1.0000ffff8p-19
-  },
-  { // Entry 94
-    0x1.fffffffffefff80000004b36423050f6p-1,
-    0x1.0003fff800051p-20
-  },
-  { // Entry 95
-    0x1.fffffffffefff80000004b36423050f6p-1,
-    -0x1.0003fff800051p-20
-  },
-  { // Entry 96
-    0x1.fffffffffefff800000042961fb095f7p-1,
-    0x1.0003fff800096p-20
-  },
-  { // Entry 97
-    0x1.fffffffffefff800000042961fb095f7p-1,
-    -0x1.0003fff800096p-20
-  },
-  { // Entry 98
-    -0x1.fbf2b71a23a577fddd081d30bc24917fp-2,
-    0x1.000fd20p334
-  },
-  { // Entry 99
-    -0x1.fbf2b71a23a577fddd081d30bc24917fp-2,
-    -0x1.000fd20p334
-  },
-  { // Entry 100
-    0x1.fccc87eae7736d8d8a4776314f6b0ba7p-5,
-    0x1.003p514
-  },
-  { // Entry 101
-    0x1.fccc87eae7736d8d8a4776314f6b0ba7p-5,
-    -0x1.003p514
-  },
-  { // Entry 102
-    -0x1.a43f40d92b7ed7eef0fe6d1799442cfap-7,
-    0x1.00600000015f4p41
-  },
-  { // Entry 103
-    -0x1.a43f40d92b7ed7eef0fe6d1799442cfap-7,
-    -0x1.00600000015f4p41
-  },
-  { // Entry 104
-    0x1.c11cc38f40ab2827dd0ff8c6f3dd1dafp-1,
-    0x1.007p-1
-  },
-  { // Entry 105
-    0x1.c11cc38f40ab2827dd0ff8c6f3dd1dafp-1,
-    -0x1.007p-1
-  },
-  { // Entry 106
-    0x1.ffffffffffbfc7f3c0000157ac331d0cp-1,
-    0x1.007p-21
-  },
-  { // Entry 107
-    0x1.ffffffffffbfc7f3c0000157ac331d0cp-1,
-    -0x1.007p-21
-  },
-  { // Entry 108
-    0x1.e9ba98231f7346e0566694e1484a5b98p-8,
-    0x1.00cp40
-  },
-  { // Entry 109
-    0x1.e9ba98231f7346e0566694e1484a5b98p-8,
-    -0x1.00cp40
-  },
-  { // Entry 110
-    0x1.fefdf48ed649cd087e3e801219edf804p-1,
-    0x1.011p-4
-  },
-  { // Entry 111
-    0x1.fefdf48ed649cd087e3e801219edf804p-1,
-    -0x1.011p-4
-  },
-  { // Entry 112
-    -0x1.ffc16a0f12ff271ced72fc659ddcd382p-1,
-    0x1.011p996
-  },
-  { // Entry 113
-    -0x1.ffc16a0f12ff271ced72fc659ddcd382p-1,
-    -0x1.011p996
-  },
-  { // Entry 114
-    0x1.efd5b61a30a387fff1400519845fcb1ep-1,
-    0x1.020p-2
-  },
-  { // Entry 115
-    0x1.efd5b61a30a387fff1400519845fcb1ep-1,
-    -0x1.020p-2
-  },
-  { // Entry 116
-    0x1.c97b8161dc50a06cd4801deeb8e0715bp-2,
-    0x1.0204260c18307p59
-  },
-  { // Entry 117
-    0x1.c97b8161dc50a06cd4801deeb8e0715bp-2,
-    -0x1.0204260c18307p59
-  },
-  { // Entry 118
-    -0x1.bf26a3c9b9fbe83488449343f08b08d7p-2,
-    0x1.02e78a321155ep1
-  },
-  { // Entry 119
-    -0x1.bf26a3c9b9fbe83488449343f08b08d7p-2,
-    -0x1.02e78a321155ep1
-  },
-  { // Entry 120
-    0x1.fef806b1f84e4dfd5f71307a3c3eb602p-1,
-    0x1.040p-4
-  },
-  { // Entry 121
-    0x1.fef806b1f84e4dfd5f71307a3c3eb602p-1,
-    -0x1.040p-4
-  },
-  { // Entry 122
-    0x1.fe851fbf87d176fb4c69295c7f928402p-1,
-    0x1.04bde8bb80258p98
-  },
-  { // Entry 123
-    0x1.fe851fbf87d176fb4c69295c7f928402p-1,
-    -0x1.04bde8bb80258p98
-  },
-  { // Entry 124
-    0x1.70f6a51da8efec398e74169e771386eap-1,
-    0x1.077e749e37ceep236
-  },
-  { // Entry 125
-    0x1.70f6a51da8efec398e74169e771386eap-1,
-    -0x1.077e749e37ceep236
-  },
-  { // Entry 126
-    0x1.6b408c856bda57fe5829a58361fea112p-3,
-    0x1.07f80p300
-  },
-  { // Entry 127
-    0x1.6b408c856bda57fe5829a58361fea112p-3,
-    -0x1.07f80p300
-  },
-  { // Entry 128
-    0x1.2b2f965ae40fc7ffffbca0b7eaec5919p-1,
-    0x1.07f9bea1b3546p27
-  },
-  { // Entry 129
-    0x1.2b2f965ae40fc7ffffbca0b7eaec5919p-1,
-    -0x1.07f9bea1b3546p27
-  },
-  { // Entry 130
-    -0x1.4eed2f3fc76a77f803d8911eeddcc5e8p-1,
-    0x1.090d18372f2d5p4
-  },
-  { // Entry 131
-    -0x1.4eed2f3fc76a77f803d8911eeddcc5e8p-1,
-    -0x1.090d18372f2d5p4
-  },
-  { // Entry 132
-    0x1.fba59aecee5000315cee323079ed1427p-1,
-    0x1.0b4p-3
-  },
-  { // Entry 133
-    0x1.fba59aecee5000315cee323079ed1427p-1,
-    -0x1.0b4p-3
-  },
-  { // Entry 134
-    0x1.fffd1bcda7a7d5510aa3d0ed8addc785p-1,
-    0x1.0c0d5c2af3c2ep346
-  },
-  { // Entry 135
-    0x1.fffd1bcda7a7d5510aa3d0ed8addc785p-1,
-    -0x1.0c0d5c2af3c2ep346
-  },
-  { // Entry 136
-    -0x1.e4dfe831292867fdc1333c0a4c3f3f70p-1,
-    0x1.0d30596ee91fdp216
-  },
-  { // Entry 137
-    -0x1.e4dfe831292867fdc1333c0a4c3f3f70p-1,
-    -0x1.0d30596ee91fdp216
-  },
-  { // Entry 138
-    0x1.fb8432886a283b17acaa524e312ab1e3p-2,
-    0x1.0d6p0
-  },
-  { // Entry 139
-    0x1.fb8432886a283b17acaa524e312ab1e3p-2,
-    -0x1.0d6p0
-  },
-  { // Entry 140
-    0x1.ffffee202853ffbbc1684847019727a0p-1,
-    0x1.0e9474c68831cp-10
-  },
-  { // Entry 141
-    0x1.ffffee202853ffbbc1684847019727a0p-1,
-    -0x1.0e9474c68831cp-10
-  },
-  { // Entry 142
-    -0x1.b70d3d5584b1a83c68e254e523d37dfdp-2,
-    0x1.113bae4049849p2
-  },
-  { // Entry 143
-    -0x1.b70d3d5584b1a83c68e254e523d37dfdp-2,
-    -0x1.113bae4049849p2
-  },
-  { // Entry 144
-    0x1.fed8df58f625fdcbb1e40cf83caa2ca2p-1,
-    0x1.12eb870976540p-4
-  },
-  { // Entry 145
-    0x1.fed8df58f625fdcbb1e40cf83caa2ca2p-1,
-    -0x1.12eb870976540p-4
-  },
-  { // Entry 146
-    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
-    0x1.13cp0
-  },
-  { // Entry 147
-    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
-    -0x1.13cp0
-  },
-  { // Entry 148
-    0x1.fed0476fc75c9800000000000020b13ep-1,
-    0x1.16e534ee36580p-4
-  },
-  { // Entry 149
-    0x1.fed0476fc75c9800000000000020b13ep-1,
-    -0x1.16e534ee36580p-4
-  },
-  { // Entry 150
-    0x1.fb38e82e3193a7f19a17d231a2e8194ep-1,
-    0x1.17fffffffea98p-3
-  },
-  { // Entry 151
-    0x1.fb38e82e3193a7f19a17d231a2e8194ep-1,
-    -0x1.17fffffffea98p-3
-  },
-  { // Entry 152
-    0x1.fb38e82e3187fc65747ae443461eb434p-1,
-    0x1.180p-3
-  },
-  { // Entry 153
-    0x1.fb38e82e3187fc65747ae443461eb434p-1,
-    -0x1.180p-3
-  },
-  { // Entry 154
-    -0x1.e59647f1fe9c750059b9eafb88c2aceap-1,
-    0x1.1a191ebbb4d7fp7
-  },
-  { // Entry 155
-    -0x1.e59647f1fe9c750059b9eafb88c2aceap-1,
-    -0x1.1a191ebbb4d7fp7
-  },
-  { // Entry 156
-    -0x1.d0dca1f8715bd7f9ff373c763522db0ep-4,
-    0x1.1da84f2b7b1d8p7
-  },
-  { // Entry 157
-    -0x1.d0dca1f8715bd7f9ff373c763522db0ep-4,
-    -0x1.1da84f2b7b1d8p7
-  },
-  { // Entry 158
-    0x1.b917ebbc30e1d8364bc3c2c10ea13539p-2,
-    0x1.201e973251302p0
-  },
-  { // Entry 159
-    0x1.b917ebbc30e1d8364bc3c2c10ea13539p-2,
-    -0x1.201e973251302p0
-  },
-  { // Entry 160
-    0x1.fffadf12ff4147f6f6f35b44b0f6cb46p-1,
-    0x1.21e02p-7
-  },
-  { // Entry 161
-    0x1.fffadf12ff4147f6f6f35b44b0f6cb46p-1,
-    -0x1.21e02p-7
-  },
-  { // Entry 162
-    -0x1.598a4dab3de597d52faa736762a3f651p-1,
-    0x1.27e29a4b985bfp1
-  },
-  { // Entry 163
-    -0x1.598a4dab3de597d52faa736762a3f651p-1,
-    -0x1.27e29a4b985bfp1
-  },
-  { // Entry 164
-    0x1.fa95c1154abf56c4dbb77bfe5e4e8f42p-1,
-    0x1.2a1f28dbfb6c0p-3
-  },
-  { // Entry 165
-    0x1.fa95c1154abf56c4dbb77bfe5e4e8f42p-1,
-    -0x1.2a1f28dbfb6c0p-3
-  },
-  { // Entry 166
-    -0x1.6412293adb7bca97731e50a86312da2dp-1,
-    0x1.2b8p1
-  },
-  { // Entry 167
-    -0x1.6412293adb7bca97731e50a86312da2dp-1,
-    -0x1.2b8p1
-  },
-  { // Entry 168
-    0x1.fffa518a7d0e77f3b431fcd0ba353095p-1,
-    0x1.31199def72f4dp-7
-  },
-  { // Entry 169
-    0x1.fffa518a7d0e77f3b431fcd0ba353095p-1,
-    -0x1.31199def72f4dp-7
-  },
-  { // Entry 170
-    0x1.f36895fe177f77fe84798264ad4f33b1p-1,
-    0x1.31260e1485014p4
-  },
-  { // Entry 171
-    0x1.f36895fe177f77fe84798264ad4f33b1p-1,
-    -0x1.31260e1485014p4
-  },
-  { // Entry 172
-    0x1.d36207b4fee167f6b3185fdd9294a233p-4,
-    0x1.34e964cd103bdp2
-  },
-  { // Entry 173
-    0x1.d36207b4fee167f6b3185fdd9294a233p-4,
-    -0x1.34e964cd103bdp2
-  },
-  { // Entry 174
-    -0x1.84a37f4fa7616caad66b4d701ab53e94p-1,
-    0x1.37618a0ba7850p1
-  },
-  { // Entry 175
-    -0x1.84a37f4fa7616caad66b4d701ab53e94p-1,
-    -0x1.37618a0ba7850p1
-  },
-  { // Entry 176
-    -0x1.c830bbc99e2290f9d93aa62b2ddfec97p-39,
-    0x1.379704f5f1eb3p24
-  },
-  { // Entry 177
-    -0x1.c830bbc99e2290f9d93aa62b2ddfec97p-39,
-    -0x1.379704f5f1eb3p24
-  },
-  { // Entry 178
-    0x1.b5daaa233bd4f7fcf34b6d5d0280172fp-3,
-    0x1.3b61dd166d470p2
-  },
-  { // Entry 179
-    0x1.b5daaa233bd4f7fcf34b6d5d0280172fp-3,
-    -0x1.3b61dd166d470p2
-  },
-  { // Entry 180
-    -0x1.ffd00dc4db400d962e2d255a661e3ccbp-4,
-    0x1.3c011022acbd0p37
-  },
-  { // Entry 181
-    -0x1.ffd00dc4db400d962e2d255a661e3ccbp-4,
-    -0x1.3c011022acbd0p37
-  },
-  { // Entry 182
-    -0x1.14052b4016ff57fe5750ed3426bfd758p-1,
-    0x1.3e7788e900b70p727
-  },
-  { // Entry 183
-    -0x1.14052b4016ff57fe5750ed3426bfd758p-1,
-    -0x1.3e7788e900b70p727
-  },
-  { // Entry 184
-    0x1.ffffe6a5e4197f5fc50acb189eb85c94p-1,
-    0x1.423eafdcc2779p-10
-  },
-  { // Entry 185
-    0x1.ffffe6a5e4197f5fc50acb189eb85c94p-1,
-    -0x1.423eafdcc2779p-10
-  },
-  { // Entry 186
-    -0x1.fe09fc3d16fedd7508301df68857b756p-6,
-    0x1.4321828c1b538p119
-  },
-  { // Entry 187
-    -0x1.fe09fc3d16fedd7508301df68857b756p-6,
-    -0x1.4321828c1b538p119
-  },
-  { // Entry 188
-    0x1.b685d949a27a0143c4ac9b553541ebecp-14,
-    0x1.43506cb22975dp22
-  },
-  { // Entry 189
-    0x1.b685d949a27a0143c4ac9b553541ebecp-14,
-    -0x1.43506cb22975dp22
-  },
-  { // Entry 190
-    0x1.fe398090e203bc2f6fe6830d380facc4p-1,
-    0x1.439f63495786ap67
-  },
-  { // Entry 191
-    0x1.fe398090e203bc2f6fe6830d380facc4p-1,
-    -0x1.439f63495786ap67
-  },
-  { // Entry 192
-    0x1.fe6274e000973a26c1a0053e3fdeffc7p-1,
-    0x1.457538a6bd073p-4
-  },
-  { // Entry 193
-    0x1.fe6274e000973a26c1a0053e3fdeffc7p-1,
-    -0x1.457538a6bd073p-4
-  },
-  { // Entry 194
-    0x1.09fcb69359c09d5739f1f0255d4fce83p-1,
-    0x1.478fc08p43
-  },
-  { // Entry 195
-    0x1.09fcb69359c09d5739f1f0255d4fce83p-1,
-    -0x1.478fc08p43
-  },
-  { // Entry 196
-    -0x1.20c2158511e7899f1ec379e90c296780p-9,
-    0x1.48a45797cbe63p61
-  },
-  { // Entry 197
-    -0x1.20c2158511e7899f1ec379e90c296780p-9,
-    -0x1.48a45797cbe63p61
-  },
-  { // Entry 198
-    0x1.990d17aae25307fec4ae6d4e98f30093p-1,
-    0x1.4a62e0e12c173p-1
-  },
-  { // Entry 199
-    0x1.990d17aae25307fec4ae6d4e98f30093p-1,
-    -0x1.4a62e0e12c173p-1
-  },
-  { // Entry 200
-    0x1.fdd4f1e00b38700419f96d341905d045p-3,
-    0x1.4c596642a9488p9
-  },
-  { // Entry 201
-    0x1.fdd4f1e00b38700419f96d341905d045p-3,
-    -0x1.4c596642a9488p9
-  },
-  { // Entry 202
-    0x1.fe4f141032f377fe135b13e04436c5ffp-1,
-    0x1.4d0p-4
-  },
-  { // Entry 203
-    0x1.fe4f141032f377fe135b13e04436c5ffp-1,
-    -0x1.4d0p-4
-  },
-  { // Entry 204
-    0x1.94e9f45d43c137a3f345644240a2cef0p-2,
-    0x1.4f0f308p488
-  },
-  { // Entry 205
-    0x1.94e9f45d43c137a3f345644240a2cef0p-2,
-    -0x1.4f0f308p488
-  },
-  { // Entry 206
-    0x1.9355f69ad4326404827cd5ccff8a0c69p-2,
-    0x1.52f00e0p793
-  },
-  { // Entry 207
-    0x1.9355f69ad4326404827cd5ccff8a0c69p-2,
-    -0x1.52f00e0p793
-  },
-  { // Entry 208
-    0x1.1a19be8bea10a801d0b2d09d9509c2c4p-1,
-    0x1.52f06c730ec02p2
-  },
-  { // Entry 209
-    0x1.1a19be8bea10a801d0b2d09d9509c2c4p-1,
-    -0x1.52f06c730ec02p2
-  },
-  { // Entry 210
-    0x1.385d92ec0c7337fea39493f6f2674328p-1,
-    0x1.53e7d5845fe3dp220
-  },
-  { // Entry 211
-    0x1.385d92ec0c7337fea39493f6f2674328p-1,
-    -0x1.53e7d5845fe3dp220
-  },
-  { // Entry 212
-    0x1.fffffffffe2f0f000000465e3592bffbp-1,
-    0x1.590p-20
-  },
-  { // Entry 213
-    0x1.fffffffffe2f0f000000465e3592bffbp-1,
-    -0x1.590p-20
-  },
-  { // Entry 214
-    -0x1.ffd7bc28ded91ffa200d677109251801p-1,
-    0x1.592f1176f0980p86
-  },
-  { // Entry 215
-    -0x1.ffd7bc28ded91ffa200d677109251801p-1,
-    -0x1.592f1176f0980p86
-  },
-  { // Entry 216
-    -0x1.cee28b3d79799000009ea8081244116cp-1,
-    0x1.5999999dc09dcp1
-  },
-  { // Entry 217
-    -0x1.cee28b3d79799000009ea8081244116cp-1,
-    -0x1.5999999dc09dcp1
-  },
-  { // Entry 218
-    0x1.c1f1eb08c26040a32800f087952a383cp-1,
-    0x1.5bea010p468
-  },
-  { // Entry 219
-    0x1.c1f1eb08c26040a32800f087952a383cp-1,
-    -0x1.5bea010p468
-  },
-  { // Entry 220
-    0x1.fffe35ab09a653e266eada6f44055214p-1,
-    0x1.5cb80a6135e5ap1000
-  },
-  { // Entry 221
-    0x1.fffe35ab09a653e266eada6f44055214p-1,
-    -0x1.5cb80a6135e5ap1000
-  },
-  { // Entry 222
-    -0x1.07b85f606e75d765b1aa3bbccba6eaf8p-3,
-    0x1.5d5be48730d2dp13
-  },
-  { // Entry 223
-    -0x1.07b85f606e75d765b1aa3bbccba6eaf8p-3,
-    -0x1.5d5be48730d2dp13
-  },
-  { // Entry 224
-    0x1.ffffffffff86239c000004d581b055ebp-1,
-    0x1.614p-21
-  },
-  { // Entry 225
-    0x1.ffffffffff86239c000004d581b055ebp-1,
-    -0x1.614p-21
-  },
-  { // Entry 226
-    -0x1.dd3a806e89cf17fffff16ecd5397b486p-1,
-    0x1.62adc8a660364p1
-  },
-  { // Entry 227
-    -0x1.dd3a806e89cf17fffff16ecd5397b486p-1,
-    -0x1.62adc8a660364p1
-  },
-  { // Entry 228
-    -0x1.4308b14f4b6edc4c07ee6895f3188af3p-1,
-    0x1.64ef438p142
-  },
-  { // Entry 229
-    -0x1.4308b14f4b6edc4c07ee6895f3188af3p-1,
-    -0x1.64ef438p142
-  },
-  { // Entry 230
-    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
-    0x1.652p0
-  },
-  { // Entry 231
-    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
-    -0x1.652p0
-  },
-  { // Entry 232
-    0x1.fff832c50f471ff5599c23dc968eb8e4p-1,
-    0x1.65865b2cb08a2p-7
-  },
-  { // Entry 233
-    0x1.fff832c50f471ff5599c23dc968eb8e4p-1,
-    -0x1.65865b2cb08a2p-7
-  },
-  { // Entry 234
-    0x1.acc251be330228021bc31307bc81dc16p-1,
-    0x1.6a937daabc20ep375
-  },
-  { // Entry 235
-    0x1.acc251be330228021bc31307bc81dc16p-1,
-    -0x1.6a937daabc20ep375
-  },
-  { // Entry 236
-    -0x1.14ae72e6ba22ef4608875c41378eb052p-61,
-    0x1.6ac5b262ca1ffp849
-  },
-  { // Entry 237
-    -0x1.14ae72e6ba22ef4608875c41378eb052p-61,
-    -0x1.6ac5b262ca1ffp849
-  },
-  { // Entry 238
-    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
-    0x1.6f7bdef7bdef4p3
-  },
-  { // Entry 239
-    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
-    -0x1.6f7bdef7bdef4p3
-  },
-  { // Entry 240
-    0x1.8d23f97901a307fffd6c52adf83f0993p-1,
-    0x1.739ce759ce738p200
-  },
-  { // Entry 241
-    0x1.8d23f97901a307fffd6c52adf83f0993p-1,
-    -0x1.739ce759ce738p200
-  },
-  { // Entry 242
-    0x1.fffff78a14ba0f38a84b48dcdb63d44fp-1,
-    0x1.7450c3f49d0b2p-11
-  },
-  { // Entry 243
-    0x1.fffff78a14ba0f38a84b48dcdb63d44fp-1,
-    -0x1.7450c3f49d0b2p-11
-  },
-  { // Entry 244
-    0x1.d6f1c727fb2cb7f7e9cbee2e14246c08p-4,
-    0x1.749fe53f963fdp0
-  },
-  { // Entry 245
-    0x1.d6f1c727fb2cb7f7e9cbee2e14246c08p-4,
-    -0x1.749fe53f963fdp0
-  },
-  { // Entry 246
-    -0x1.f284b5028c1847fffffc9532fe892aadp-1,
-    0x1.74af6725c6206p1
-  },
-  { // Entry 247
-    -0x1.f284b5028c1847fffffc9532fe892aadp-1,
-    -0x1.74af6725c6206p1
-  },
-  { // Entry 248
-    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
-    0x1.7550d28ffccc4p1
-  },
-  { // Entry 249
-    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
-    -0x1.7550d28ffccc4p1
-  },
-  { // Entry 250
-    0x1.d66d2078ebdeb7ffedf8a48e25084c19p-1,
-    0x1.775e397cd6aa0p6
-  },
-  { // Entry 251
-    0x1.d66d2078ebdeb7ffedf8a48e25084c19p-1,
-    -0x1.775e397cd6aa0p6
-  },
-  { // Entry 252
-    0x1.7af9a13085f5382a87a541ae0b2e5965p-1,
-    0x1.799302bf7f290p-1
-  },
-  { // Entry 253
-    0x1.7af9a13085f5382a87a541ae0b2e5965p-1,
-    -0x1.799302bf7f290p-1
-  },
-  { // Entry 254
-    0x1.ffdd2fdac0c2483e7b116d6d488e7a4bp-1,
-    0x1.799fffffffffdp-6
-  },
-  { // Entry 255
-    0x1.ffdd2fdac0c2483e7b116d6d488e7a4bp-1,
-    -0x1.799fffffffffdp-6
-  },
-  { // Entry 256
-    0x1.fff744f185a737f256732ce87dbaf7a7p-1,
-    0x1.7a3692ca94490p-7
-  },
-  { // Entry 257
-    0x1.fff744f185a737f256732ce87dbaf7a7p-1,
-    -0x1.7a3692ca94490p-7
-  },
-  { // Entry 258
-    0x1.7a6b326b690fa831ee4d0dd72787fbc3p-1,
-    0x1.7a66a638ac5b5p-1
-  },
-  { // Entry 259
-    0x1.7a6b326b690fa831ee4d0dd72787fbc3p-1,
-    -0x1.7a66a638ac5b5p-1
-  },
-  { // Entry 260
-    0x1.671fdb64ffbed7e4952a9d967941e7dap-4,
-    0x1.7ba65462b49a0p0
-  },
-  { // Entry 261
-    0x1.671fdb64ffbed7e4952a9d967941e7dap-4,
-    -0x1.7ba65462b49a0p0
-  },
-  { // Entry 262
-    0x1.ffa55490f206e3b4323a02477b4149e8p-1,
-    0x1.7cdf37cdf37c9p239
-  },
-  { // Entry 263
-    0x1.ffa55490f206e3b4323a02477b4149e8p-1,
-    -0x1.7cdf37cdf37c9p239
-  },
-  { // Entry 264
-    0x1.4c5b5970a3a488233005742af5e6a95ep-4,
-    0x1.7d542565f472ep0
-  },
-  { // Entry 265
-    0x1.4c5b5970a3a488233005742af5e6a95ep-4,
-    -0x1.7d542565f472ep0
-  },
-  { // Entry 266
-    0x1.479a5667c63f57da26adf180a7eb2ffbp-4,
-    0x1.7da0751649058p0
-  },
-  { // Entry 267
-    0x1.479a5667c63f57da26adf180a7eb2ffbp-4,
-    -0x1.7da0751649058p0
-  },
-  { // Entry 268
-    0x1.fff717511dcb57f32d38f29c01379b98p-1,
-    0x1.7e0ddcda6cc0dp-7
-  },
-  { // Entry 269
-    0x1.fff717511dcb57f32d38f29c01379b98p-1,
-    -0x1.7e0ddcda6cc0dp-7
-  },
-  { // Entry 270
-    0x1.ffffffffff7077e7000006b4c7060c33p-1,
-    0x1.7f6p-21
-  },
-  { // Entry 271
-    0x1.ffffffffff7077e7000006b4c7060c33p-1,
-    -0x1.7f6p-21
-  },
-  { // Entry 272
-    -0x1.fff9e1554698017220917c3fb31188ddp-1,
-    0x1.7f90117d44c74p100
-  },
-  { // Entry 273
-    -0x1.fff9e1554698017220917c3fb31188ddp-1,
-    -0x1.7f90117d44c74p100
-  },
-  { // Entry 274
-    0x1.ffdc006bff7e984a8d5031a7152d36e5p-1,
-    0x1.7ffffffffef7ap-6
-  },
-  { // Entry 275
-    0x1.ffdc006bff7e984a8d5031a7152d36e5p-1,
-    -0x1.7ffffffffef7ap-6
-  },
-  { // Entry 276
-    0x1.ffdc006bff7e78474d66d7f25c3ac277p-1,
-    0x1.7fffffffffa26p-6
-  },
-  { // Entry 277
-    0x1.ffdc006bff7e78474d66d7f25c3ac277p-1,
-    -0x1.7fffffffffa26p-6
-  },
-  { // Entry 278
-    0x1.ffdc006bff7e6839adba2a91108d56afp-1,
-    0x1.7ffffffffff80p-6
-  },
-  { // Entry 279
-    0x1.ffdc006bff7e6839adba2a91108d56afp-1,
-    -0x1.7ffffffffff80p-6
-  },
-  { // Entry 280
-    0x1.760718ab443977fdd8f8f2221ca4db3cp-1,
-    0x1.80ep-1
-  },
-  { // Entry 281
-    0x1.760718ab443977fdd8f8f2221ca4db3cp-1,
-    -0x1.80ep-1
-  },
-  { // Entry 282
-    -0x1.fffffffffffffffffffffffffeb29d0bp-1,
-    0x1.81ae0dffa3b33p959
-  },
-  { // Entry 283
-    -0x1.fffffffffffffffffffffffffeb29d0bp-1,
-    -0x1.81ae0dffa3b33p959
-  },
-  { // Entry 284
-    -0x1.fbdc48125b34574cf1f91419e7edb75bp-1,
-    0x1.81d612289c5cfp1
-  },
-  { // Entry 285
-    -0x1.fbdc48125b34574cf1f91419e7edb75bp-1,
-    -0x1.81d612289c5cfp1
-  },
-  { // Entry 286
-    0x1.ff9e396651cc97e935b2e0ee73607d12p-5,
-    0x1.8220192270a0ep0
-  },
-  { // Entry 287
-    0x1.ff9e396651cc97e935b2e0ee73607d12p-5,
-    -0x1.8220192270a0ep0
-  },
-  { // Entry 288
-    0x1.fe2b26dddb5c882f30a885c1b291f945p-5,
-    0x1.822bb780e9104p0
-  },
-  { // Entry 289
-    0x1.fe2b26dddb5c882f30a885c1b291f945p-5,
-    -0x1.822bb780e9104p0
-  },
-  { // Entry 290
-    0x1.eb87cff7c91157a755818c01284b0e51p-5,
-    0x1.82c119c4b8e49p0
-  },
-  { // Entry 291
-    0x1.eb87cff7c91157a755818c01284b0e51p-5,
-    -0x1.82c119c4b8e49p0
-  },
-  { // Entry 292
-    0x1.eb87cff7a62b77b57a66ac275a3104c8p-5,
-    0x1.82c119c4b9fc4p0
-  },
-  { // Entry 293
-    0x1.eb87cff7a62b77b57a66ac275a3104c8p-5,
-    -0x1.82c119c4b9fc4p0
-  },
-  { // Entry 294
-    0x1.eb87cff795ab17a807864d8fb0ca43cap-5,
-    0x1.82c119c4ba808p0
-  },
-  { // Entry 295
-    0x1.eb87cff795ab17a807864d8fb0ca43cap-5,
-    -0x1.82c119c4ba808p0
-  },
-  { // Entry 296
-    0x1.de1d17ab0d6a48367523193d68568c1bp-5,
-    0x1.832c9fc765270p0
-  },
-  { // Entry 297
-    0x1.de1d17ab0d6a48367523193d68568c1bp-5,
-    -0x1.832c9fc765270p0
-  },
-  { // Entry 298
-    0x1.dc86e7bec0c44848cfc39b7f1b8204acp-5,
-    0x1.833956ce7d1f9p0
-  },
-  { // Entry 299
-    0x1.dc86e7bec0c44848cfc39b7f1b8204acp-5,
-    -0x1.833956ce7d1f9p0
-  },
-  { // Entry 300
-    0x1.db03cbb942a7a84974e904ecc896a5eep-5,
-    0x1.834574eb1c099p0
-  },
-  { // Entry 301
-    0x1.db03cbb942a7a84974e904ecc896a5eep-5,
-    -0x1.834574eb1c099p0
-  },
-  { // Entry 302
-    0x1.ce431710d15077b1e8170a532b68abdep-5,
-    0x1.83aba5688e13ep0
-  },
-  { // Entry 303
-    0x1.ce431710d15077b1e8170a532b68abdep-5,
-    -0x1.83aba5688e13ep0
-  },
-  { // Entry 304
-    0x1.cd46b3a77f6dd7ab0d312546aba7c0afp-5,
-    0x1.83b38bbafd75bp0
-  },
-  { // Entry 305
-    0x1.cd46b3a77f6dd7ab0d312546aba7c0afp-5,
-    -0x1.83b38bbafd75bp0
-  },
-  { // Entry 306
-    -0x1.ff29bc666bee6ea44d4db000e5f173bfp-1,
-    0x1.86a017cb1c31cp16
-  },
-  { // Entry 307
-    -0x1.ff29bc666bee6ea44d4db000e5f173bfp-1,
-    -0x1.86a017cb1c31cp16
-  },
-  { // Entry 308
-    -0x1.7968916e4c64630e8e3ae60276ba2d27p-2,
-    0x1.8720588p392
-  },
-  { // Entry 309
-    -0x1.7968916e4c64630e8e3ae60276ba2d27p-2,
-    -0x1.8720588p392
-  },
-  { // Entry 310
-    0x1.fb97c7e452917f59890dfb47e7c9b5e3p-1,
-    0x1.88a2288a22888p9
-  },
-  { // Entry 311
-    0x1.fb97c7e452917f59890dfb47e7c9b5e3p-1,
-    -0x1.88a2288a22888p9
-  },
-  { // Entry 312
-    -0x1.ae44a5f01bf633015e5aacccab4a7f3dp-1,
-    0x1.8cf013991c308p1000
-  },
-  { // Entry 313
-    -0x1.ae44a5f01bf633015e5aacccab4a7f3dp-1,
-    -0x1.8cf013991c308p1000
-  },
-  { // Entry 314
-    0x1.d96e82f71a9dc7fd86f57480e75491e3p-1,
-    0x1.9p-2
-  },
-  { // Entry 315
-    0x1.d96e82f71a9dc7fd86f57480e75491e3p-1,
-    -0x1.9p-2
-  },
-  { // Entry 316
-    0x1.0fd9d5c093df4f57fc49463e2f3f33e6p-7,
-    0x1.9p0
-  },
-  { // Entry 317
-    0x1.0fd9d5c093df4f57fc49463e2f3f33e6p-7,
-    -0x1.9p0
-  },
-  { // Entry 318
-    0x1.0fd9d5c05e5fc801a0f5cbfa33777ae4p-7,
-    0x1.90000000006b0p0
-  },
-  { // Entry 319
-    0x1.0fd9d5c05e5fc801a0f5cbfa33777ae4p-7,
-    -0x1.90000000006b0p0
-  },
-  { // Entry 320
-    0x1.bc8be725417d8800000cada42eeea04ep-1,
-    0x1.900c206d44162p6
-  },
-  { // Entry 321
-    0x1.bc8be725417d8800000cada42eeea04ep-1,
-    -0x1.900c206d44162p6
-  },
-  { // Entry 322
-    0x1.fffffffff63b67e4972d86a2f9d8209bp-1,
-    0x1.900c2af7baef3p-19
-  },
-  { // Entry 323
-    0x1.fffffffff63b67e4972d86a2f9d8209bp-1,
-    -0x1.900c2af7baef3p-19
-  },
-  { // Entry 324
-    0x1.bd464c9352d107ffffff8db9e0da71c0p-1,
-    0x1.900f11bd8955dp6
-  },
-  { // Entry 325
-    0x1.bd464c9352d107ffffff8db9e0da71c0p-1,
-    -0x1.900f11bd8955dp6
-  },
-  { // Entry 326
-    0x1.fffffda85cdd0d431e06f9aa74bc8ce0p-1,
-    0x1.910b35c3253d4p100
-  },
-  { // Entry 327
-    0x1.fffffda85cdd0d431e06f9aa74bc8ce0p-1,
-    -0x1.910b35c3253d4p100
-  },
-  { // Entry 328
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 329
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 330
-    -0x1.2aeef4b9ea1ae4e64c71fccf1fd06f40p-18,
-    0x1.922p0
-  },
-  { // Entry 331
-    -0x1.2aeef4b9ea1ae4e64c71fccf1fd06f40p-18,
-    -0x1.922p0
-  },
-  { // Entry 332
-    -0x1.ffffffffd904847798c7acd46ad183cap-18,
-    0x1.9220354442d18p0
-  },
-  { // Entry 333
-    -0x1.ffffffffd904847798c7acd46ad183cap-18,
-    -0x1.9220354442d18p0
-  },
-  { // Entry 334
-    -0x1.ffffffffffffffffffff2ac8c3da72cbp-1,
-    0x1.9251f93aeb59dp12
-  },
-  { // Entry 335
-    -0x1.ffffffffffffffffffff2ac8c3da72cbp-1,
-    -0x1.9251f93aeb59dp12
-  },
-  { // Entry 336
-    0x1.ffb8c4d1f78a87fffffb23d171bd54d0p-1,
-    0x1.943be221d909ap2
-  },
-  { // Entry 337
-    0x1.ffb8c4d1f78a87fffffb23d171bd54d0p-1,
-    -0x1.943be221d909ap2
-  },
-  { // Entry 338
-    0x1.fff6011fdddab7f25c82e5384d46cc69p-1,
-    0x1.94af699302875p-7
-  },
-  { // Entry 339
-    0x1.fff6011fdddab7f25c82e5384d46cc69p-1,
-    -0x1.94af699302875p-7
-  },
-  { // Entry 340
-    0x1.d7954e7a3ee998000099470604329b68p-1,
-    0x1.999999ab7b0edp-2
-  },
-  { // Entry 341
-    0x1.d7954e7a3ee998000099470604329b68p-1,
-    -0x1.999999ab7b0edp-2
-  },
-  { // Entry 342
-    0x1.d7954e76c8e30fffff5a9bf455a06410p-1,
-    0x1.999999bd4190bp-2
-  },
-  { // Entry 343
-    0x1.d7954e76c8e30fffff5a9bf455a06410p-1,
-    -0x1.999999bd4190bp-2
-  },
-  { // Entry 344
-    0x1.fa23cfb82022440eb972c7e083933d20p-1,
-    0x1.9bd0f19479a24p2
-  },
-  { // Entry 345
-    0x1.fa23cfb82022440eb972c7e083933d20p-1,
-    -0x1.9bd0f19479a24p2
-  },
-  { // Entry 346
-    -0x1.6a09e667f3af07f2f4676b5f6f268c81p-1,
-    0x1.9c55835e7e83ep8
-  },
-  { // Entry 347
-    -0x1.6a09e667f3af07f2f4676b5f6f268c81p-1,
-    -0x1.9c55835e7e83ep8
-  },
-  { // Entry 348
-    0x1.fff59c12558097f2858f4a1326f2ddf4p-1,
-    0x1.9c9942b14448dp-7
-  },
-  { // Entry 349
-    0x1.fff59c12558097f2858f4a1326f2ddf4p-1,
-    -0x1.9c9942b14448dp-7
-  },
-  { // Entry 350
-    0x1.ffece5cab4ca5652ea2fc7ccce883304p-1,
-    0x1.9d3d92485e2b5p523
-  },
-  { // Entry 351
-    0x1.ffece5cab4ca5652ea2fc7ccce883304p-1,
-    -0x1.9d3d92485e2b5p523
-  },
-  { // Entry 352
-    -0x1.ff55301d3a780d19c28c22c82c1f5383p-5,
-    0x1.a0d068341a080p1000
-  },
-  { // Entry 353
-    -0x1.ff55301d3a780d19c28c22c82c1f5383p-5,
-    -0x1.a0d068341a080p1000
-  },
-  { // Entry 354
-    0x1.5a5615acd0dc09bf32e903149634f999p-1,
-    0x1.a7ep-1
-  },
-  { // Entry 355
-    0x1.5a5615acd0dc09bf32e903149634f999p-1,
-    -0x1.a7ep-1
-  },
-  { // Entry 356
-    0x1.766ad27a1de4fb1a5b667216bbe6bf68p-14,
-    0x1.a858343863965p119
-  },
-  { // Entry 357
-    0x1.766ad27a1de4fb1a5b667216bbe6bf68p-14,
-    -0x1.a858343863965p119
-  },
-  { // Entry 358
-    0x1.6bd4d5be7249325d8680606e6b9ea625p-1,
-    0x1.ab190633d88eap3
-  },
-  { // Entry 359
-    0x1.6bd4d5be7249325d8680606e6b9ea625p-1,
-    -0x1.ab190633d88eap3
-  },
-  { // Entry 360
-    0x1.ffffffffff4a57e64da87a5af47cfa18p-1,
-    0x1.af4bd2f4bd2f0p-21
-  },
-  { // Entry 361
-    0x1.ffffffffff4a57e64da87a5af47cfa18p-1,
-    -0x1.af4bd2f4bd2f0p-21
-  },
-  { // Entry 362
-    0x1.7ff2934ad29a74288b886124fead5842p-1,
-    0x1.afa70300aee60p72
-  },
-  { // Entry 363
-    0x1.7ff2934ad29a74288b886124fead5842p-1,
-    -0x1.afa70300aee60p72
-  },
-  { // Entry 364
-    0x1.ff866aebdce0a7fffffb6074d5199896p-1,
-    0x1.b5ab427cffb4cp94
-  },
-  { // Entry 365
-    0x1.ff866aebdce0a7fffffb6074d5199896p-1,
-    -0x1.b5ab427cffb4cp94
-  },
-  { // Entry 366
-    -0x1.f54f5227a4e83fbf939b2e96178f121dp-60,
-    0x1.b951f1572eba5p23
-  },
-  { // Entry 367
-    -0x1.f54f5227a4e83fbf939b2e96178f121dp-60,
-    -0x1.b951f1572eba5p23
-  },
-  { // Entry 368
-    0x1.fffd06d35579c7fe295dad17efbbbe97p-1,
-    0x1.b96e5b96e5b91p-8
-  },
-  { // Entry 369
-    0x1.fffd06d35579c7fe295dad17efbbbe97p-1,
-    -0x1.b96e5b96e5b91p-8
-  },
-  { // Entry 370
-    -0x1.7c4128e2aff4b2b78e147601fa658af5p-1,
-    0x1.ba3b18395d17bp8
-  },
-  { // Entry 371
-    -0x1.7c4128e2aff4b2b78e147601fa658af5p-1,
-    -0x1.ba3b18395d17bp8
-  },
-  { // Entry 372
-    -0x1.fffffffffffffffffffffffffefaff9dp-1,
-    0x1.bab62ed655019p970
-  },
-  { // Entry 373
-    -0x1.fffffffffffffffffffffffffefaff9dp-1,
-    -0x1.bab62ed655019p970
-  },
-  { // Entry 374
-    0x1.ffffff3e534467fffff37e509b7b792ep-1,
-    0x1.bd55aa411ab46p-13
-  },
-  { // Entry 375
-    0x1.ffffff3e534467fffff37e509b7b792ep-1,
-    -0x1.bd55aa411ab46p-13
-  },
-  { // Entry 376
-    -0x1.7fdb07b9f77e07ffff7207c4628d3f68p-1,
-    0x1.bd616d4fe95cdp36
-  },
-  { // Entry 377
-    -0x1.7fdb07b9f77e07ffff7207c4628d3f68p-1,
-    -0x1.bd616d4fe95cdp36
-  },
-  { // Entry 378
-    0x1.ffcf4da76222c889718239523341f4b5p-1,
-    0x1.beap-6
-  },
-  { // Entry 379
-    0x1.ffcf4da76222c889718239523341f4b5p-1,
-    -0x1.beap-6
-  },
-  { // Entry 380
-    -0x1.ddee13357ec6f7fcc9502399fccdc2f0p-1,
-    0x1.c11516af585a4p1
-  },
-  { // Entry 381
-    -0x1.ddee13357ec6f7fcc9502399fccdc2f0p-1,
-    -0x1.c11516af585a4p1
-  },
-  { // Entry 382
-    0x1.58cccec059da17d3f448a8b2b6e7c0e8p-1,
-    0x1.c75e54de4c06ep2
-  },
-  { // Entry 383
-    0x1.58cccec059da17d3f448a8b2b6e7c0e8p-1,
-    -0x1.c75e54de4c06ep2
-  },
-  { // Entry 384
-    -0x1.ffffffffffffffffffffffffffc8663ep-1,
-    0x1.cb44e86bc192bp648
-  },
-  { // Entry 385
-    -0x1.ffffffffffffffffffffffffffc8663ep-1,
-    -0x1.cb44e86bc192bp648
-  },
-  { // Entry 386
-    0x1.ffffffffffffffffffffffffff2198f9p-1,
-    0x1.cb44e86bc192bp649
-  },
-  { // Entry 387
-    0x1.ffffffffffffffffffffffffff2198f9p-1,
-    -0x1.cb44e86bc192bp649
-  },
-  { // Entry 388
-    -0x1.ca281d7fe44b07ffffd2b7d46ab5d361p-1,
-    0x1.cd5a6f8762affp1
-  },
-  { // Entry 389
-    -0x1.ca281d7fe44b07ffffd2b7d46ab5d361p-1,
-    -0x1.cd5a6f8762affp1
-  },
-  { // Entry 390
-    0x1.e80ad4fe54c71d4e604ede474cca0b19p-5,
-    0x1.d0cb95f02ad77p464
-  },
-  { // Entry 391
-    0x1.e80ad4fe54c71d4e604ede474cca0b19p-5,
-    -0x1.d0cb95f02ad77p464
-  },
-  { // Entry 392
-    0x1.0df8eb409efe37fffff925b5de2c80b6p-1,
-    0x1.d31bd604903a0p2
-  },
-  { // Entry 393
-    0x1.0df8eb409efe37fffff925b5de2c80b6p-1,
-    -0x1.d31bd604903a0p2
-  },
-  { // Entry 394
-    0x1.ff2ae968efe70ea4126849c3832c9cbdp-1,
-    0x1.d32f4610180f6p-5
-  },
-  { // Entry 395
-    0x1.ff2ae968efe70ea4126849c3832c9cbdp-1,
-    -0x1.d32f4610180f6p-5
-  },
-  { // Entry 396
-    -0x1.cec307a674d3ed2f8df47cf394aa88eap-3,
-    0x1.d96e058p488
-  },
-  { // Entry 397
-    -0x1.cec307a674d3ed2f8df47cf394aa88eap-3,
-    -0x1.d96e058p488
-  },
-  { // Entry 398
-    -0x1.ac8dbf9cdc95483577560b1814ea8895p-5,
-    0x1.db0803c392b4cp15
-  },
-  { // Entry 399
-    -0x1.ac8dbf9cdc95483577560b1814ea8895p-5,
-    -0x1.db0803c392b4cp15
-  },
-  { // Entry 400
-    -0x1.ac94870ca631684bd10b658b80cfcd42p-5,
-    0x1.db0803c3ff51dp15
-  },
-  { // Entry 401
-    -0x1.ac94870ca631684bd10b658b80cfcd42p-5,
-    -0x1.db0803c3ff51dp15
-  },
-  { // Entry 402
-    0x1.ff229073fd8b5e91d60dd095cfde5967p-1,
-    0x1.dc4p-5
-  },
-  { // Entry 403
-    0x1.ff229073fd8b5e91d60dd095cfde5967p-1,
-    -0x1.dc4p-5
-  },
-  { // Entry 404
-    0x1.ff21e5f975fffe83c2ae1c55a885f12fp-1,
-    0x1.dcf73dcf73dccp-5
-  },
-  { // Entry 405
-    0x1.ff21e5f975fffe83c2ae1c55a885f12fp-1,
-    -0x1.dcf73dcf73dccp-5
-  },
-  { // Entry 406
-    0x1.2f011326420e5002172db245fd9063e2p-1,
-    0x1.dffffffffffffp-1
-  },
-  { // Entry 407
-    0x1.2f011326420e5002172db245fd9063e2p-1,
-    -0x1.dffffffffffffp-1
-  },
-  { // Entry 408
-    0x1.f72c8e16dbc78b26afbf346185dccb48p-1,
-    0x1.e123691a7c4bep26
-  },
-  { // Entry 409
-    0x1.f72c8e16dbc78b26afbf346185dccb48p-1,
-    -0x1.e123691a7c4bep26
-  },
-  { // Entry 410
-    -0x1.4b0c6bb623f57fffff5e458203deef33p-2,
-    0x1.e666666f9cf49p0
-  },
-  { // Entry 411
-    -0x1.4b0c6bb623f57fffff5e458203deef33p-2,
-    -0x1.e666666f9cf49p0
-  },
-  { // Entry 412
-    0x1.fd74b5587588481884a92e83747f5c4ep-1,
-    0x1.e83accfc50b70p995
-  },
-  { // Entry 413
-    0x1.fd74b5587588481884a92e83747f5c4ep-1,
-    -0x1.e83accfc50b70p995
-  },
-  { // Entry 414
-    0x1.fff169b6ab7d17f43d59f6cf085accb0p-1,
-    0x1.e8ep-7
-  },
-  { // Entry 415
-    0x1.fff169b6ab7d17f43d59f6cf085accb0p-1,
-    -0x1.e8ep-7
-  },
-  { // Entry 416
-    0x1.7d39c9f1b0b3c0027a5fc9a76faee83dp-1,
-    0x1.eaf5ea5317442p4
-  },
-  { // Entry 417
-    0x1.7d39c9f1b0b3c0027a5fc9a76faee83dp-1,
-    -0x1.eaf5ea5317442p4
-  },
-  { // Entry 418
-    0x1.7f13af7081a6741660469fd60255fe49p-1,
-    0x1.eb0c2b00b1b83p4
-  },
-  { // Entry 419
-    0x1.7f13af7081a6741660469fd60255fe49p-1,
-    -0x1.eb0c2b00b1b83p4
-  },
-  { // Entry 420
-    -0x1.7ad7b88a1fe0f82b6f249c7c56dd8b5ap-1,
-    0x1.ebc6b555311c4p15
-  },
-  { // Entry 421
-    -0x1.7ad7b88a1fe0f82b6f249c7c56dd8b5ap-1,
-    -0x1.ebc6b555311c4p15
-  },
-  { // Entry 422
-    0x1.b06b2b58a2a23c98b12853415b5c83a1p-5,
-    0x1.ef7bdef7bdef2p239
-  },
-  { // Entry 423
-    0x1.b06b2b58a2a23c98b12853415b5c83a1p-5,
-    -0x1.ef7bdef7bdef2p239
-  },
-  { // Entry 424
-    0x1.fe6ded53172a6876790d3aab83a656f4p-1,
-    0x1.efbbeefbbeef8p15
-  },
-  { // Entry 425
-    0x1.fe6ded53172a6876790d3aab83a656f4p-1,
-    -0x1.efbbeefbbeef8p15
-  },
-  { // Entry 426
-    -0x1.fe2bcb87a7e158cffa2fe8d306cc7555p-1,
-    0x1.f07c1f07c1ef7p239
-  },
-  { // Entry 427
-    -0x1.fe2bcb87a7e158cffa2fe8d306cc7555p-1,
-    -0x1.f07c1f07c1ef7p239
-  },
-  { // Entry 428
-    -0x1.79d08d6b3a88282e0a0da2350464d0abp-1,
-    0x1.f0f2b5e060b29p1
-  },
-  { // Entry 429
-    -0x1.79d08d6b3a88282e0a0da2350464d0abp-1,
-    -0x1.f0f2b5e060b29p1
-  },
-  { // Entry 430
-    0x1.f0d11d321178d7ff15da48990d5983c2p-1,
-    0x1.f40p-3
-  },
-  { // Entry 431
-    0x1.f0d11d321178d7ff15da48990d5983c2p-1,
-    -0x1.f40p-3
-  },
-  { // Entry 432
-    0x1.e3ff5b15f723d7f7f7f5bb0dbce54d01p-4,
-    0x1.f43d49f947e87p9
-  },
-  { // Entry 433
-    0x1.e3ff5b15f723d7f7f7f5bb0dbce54d01p-4,
-    -0x1.f43d49f947e87p9
-  },
-  { // Entry 434
-    -0x1.6636c9f6a87a97f1cbdf708a2f1ad9bap-1,
-    0x1.f7fffffffffffp1
-  },
-  { // Entry 435
-    -0x1.6636c9f6a87a97f1cbdf708a2f1ad9bap-1,
-    -0x1.f7fffffffffffp1
-  },
-  { // Entry 436
-    0x1.ffc1be33092857ff26220f9981635bc7p-1,
-    0x1.f8fffffffffffp-6
-  },
-  { // Entry 437
-    0x1.ffc1be33092857ff26220f9981635bc7p-1,
-    -0x1.f8fffffffffffp-6
-  },
-  { // Entry 438
-    0x1.ffc1be33092857fb344affdd93d043a7p-1,
-    0x1.f90p-6
-  },
-  { // Entry 439
-    0x1.ffc1be33092857fb344affdd93d043a7p-1,
-    -0x1.f90p-6
-  },
-  { // Entry 440
-    -0x1.fffffffcab0d58220669dcfa421ccfa6p-1,
-    0x1.fa0236523ce54p344
-  },
-  { // Entry 441
-    -0x1.fffffffcab0d58220669dcfa421ccfa6p-1,
-    -0x1.fa0236523ce54p344
-  },
-  { // Entry 442
-    0x1.fc0d98ace2308800000212788a794eacp-1,
-    0x1.fceab54d37da0p-4
-  },
-  { // Entry 443
-    0x1.fc0d98ace2308800000212788a794eacp-1,
-    -0x1.fceab54d37da0p-4
-  },
-  { // Entry 444
-    -0x1.9589bca128b917fe59692a738c3791c9p-4,
-    0x1.fd0072fffffffp2
-  },
-  { // Entry 445
-    -0x1.9589bca128b917fe59692a738c3791c9p-4,
-    -0x1.fd0072fffffffp2
-  },
-  { // Entry 446
-    -0x1.4d304b07fc897cf1ade54fe97db7c8bdp-2,
-    0x1.fe0f827673422p62
-  },
-  { // Entry 447
-    -0x1.4d304b07fc897cf1ade54fe97db7c8bdp-2,
-    -0x1.fe0f827673422p62
-  },
-  { // Entry 448
-    0x1.c1a27ae836f128000000000000504e9bp-1,
-    0x1.feb1f7920e248p-2
-  },
-  { // Entry 449
-    0x1.c1a27ae836f128000000000000504e9bp-1,
-    -0x1.feb1f7920e248p-2
-  },
-  { // Entry 450
-    -0x1.936b64e955978d15aacfddf5821c6281p-1,
-    0x1.feeffffffffc6p995
-  },
-  { // Entry 451
-    -0x1.936b64e955978d15aacfddf5821c6281p-1,
-    -0x1.feeffffffffc6p995
-  },
-  { // Entry 452
-    0x1.fff007147ea577fb02130c68b335ef45p-1,
-    0x1.ff8ffffffffffp-7
-  },
-  { // Entry 453
-    0x1.fff007147ea577fb02130c68b335ef45p-1,
-    -0x1.ff8ffffffffffp-7
-  },
-  { // Entry 454
-    0x1.ffffc01bfe442b09cbec19f68af8fbf8p-1,
-    0x1.ff8ffffffffffp-10
-  },
-  { // Entry 455
-    0x1.ffffc01bfe442b09cbec19f68af8fbf8p-1,
-    -0x1.ff8ffffffffffp-10
-  },
-  { // Entry 456
-    0x1.7cc9fb75317ae93bf5ddee0e8b9c83cep-1,
-    0x1.ff8ffffffffffp870
-  },
-  { // Entry 457
-    0x1.7cc9fb75317ae93bf5ddee0e8b9c83cep-1,
-    -0x1.ff8ffffffffffp870
-  },
-  { // Entry 458
-    0x1.d6aea48015588e71983142804227fd84p-1,
-    0x1.ffcfff8p19
-  },
-  { // Entry 459
-    0x1.d6aea48015588e71983142804227fd84p-1,
-    -0x1.ffcfff8p19
-  },
-  { // Entry 460
-    -0x1.6a9972eee19badf9e34d36b0d1202091p-2,
-    0x1.ffcfff8p365
-  },
-  { // Entry 461
-    -0x1.6a9972eee19badf9e34d36b0d1202091p-2,
-    -0x1.ffcfff8p365
-  },
-  { // Entry 462
-    -0x1.3aaa15f7544b691a43e1fa1a639bdfc2p-1,
-    0x1.ffcffffffff6cp720
-  },
-  { // Entry 463
-    -0x1.3aaa15f7544b691a43e1fa1a639bdfc2p-1,
-    -0x1.ffcffffffff6cp720
-  },
-  { // Entry 464
-    0x1.3f164bce055c4c61b74a61f73ca73d3fp-1,
-    0x1.ffcfffffffff9p320
-  },
-  { // Entry 465
-    0x1.3f164bce055c4c61b74a61f73ca73d3fp-1,
-    -0x1.ffcfffffffff9p320
-  },
-  { // Entry 466
-    0x1.fffff002fff14d566ae8ec9d1edc3e3fp-1,
-    0x1.ffcffffffffffp-11
-  },
-  { // Entry 467
-    0x1.fffff002fff14d566ae8ec9d1edc3e3fp-1,
-    -0x1.ffcffffffffffp-11
-  },
-  { // Entry 468
-    -0x1.ffffff987f985d67944b867bff4ab857p-1,
-    0x1.ffcffffffffffp405
-  },
-  { // Entry 469
-    -0x1.ffffff987f985d67944b867bff4ab857p-1,
-    -0x1.ffcffffffffffp405
-  },
-  { // Entry 470
-    -0x1.ffff6235a25edb8c975b485c5c6f41f7p-1,
-    0x1.ffcffffffffffp567
-  },
-  { // Entry 471
-    -0x1.ffff6235a25edb8c975b485c5c6f41f7p-1,
-    -0x1.ffcffffffffffp567
-  },
-  { // Entry 472
-    0x1.fdf11ae4608b0894bab8786949aa6333p-3,
-    0x1.ffefff8ffffffp16
-  },
-  { // Entry 473
-    0x1.fdf11ae4608b0894bab8786949aa6333p-3,
-    -0x1.ffefff8ffffffp16
-  },
-  { // Entry 474
-    0x1.8f5525ab4583c064353aaad12c6cce6cp-1,
-    0x1.ffeffffffffccp995
-  },
-  { // Entry 475
-    0x1.8f5525ab4583c064353aaad12c6cce6cp-1,
-    -0x1.ffeffffffffccp995
-  },
-  { // Entry 476
-    0x1.a0af44a45c0569b72058cc34efd0e32ep-8,
-    0x1.ffeffffffffffp77
-  },
-  { // Entry 477
-    0x1.a0af44a45c0569b72058cc34efd0e32ep-8,
-    -0x1.ffeffffffffffp77
-  },
-  { // Entry 478
-    -0x1.df7546c31bf8cffef69c4859da055f33p-1,
-    0x1.ffeffffffffffp122
-  },
-  { // Entry 479
-    -0x1.df7546c31bf8cffef69c4859da055f33p-1,
-    -0x1.ffeffffffffffp122
-  },
-  { // Entry 480
-    -0x1.825a7bea27d5b1a598af6b684eb18478p-1,
-    0x1.ffeffffffffffp179
-  },
-  { // Entry 481
-    -0x1.825a7bea27d5b1a598af6b684eb18478p-1,
-    -0x1.ffeffffffffffp179
-  },
-  { // Entry 482
-    -0x1.1be2ab2078d547fff09932011fe16456p-1,
-    0x1.ffeffffffffffp238
-  },
-  { // Entry 483
-    -0x1.1be2ab2078d547fff09932011fe16456p-1,
-    -0x1.ffeffffffffffp238
-  },
-  { // Entry 484
-    -0x1.a4cc5f838f5297e0a7e749cb087c2f14p-7,
-    0x1.fff0000002511p492
-  },
-  { // Entry 485
-    -0x1.a4cc5f838f5297e0a7e749cb087c2f14p-7,
-    -0x1.fff0000002511p492
-  },
-  { // Entry 486
-    0x1.f16437d6119f89bfa73a2f14f377fd3ep-10,
-    0x1.fff1fffffffffp41
-  },
-  { // Entry 487
-    0x1.f16437d6119f89bfa73a2f14f377fd3ep-10,
-    -0x1.fff1fffffffffp41
-  },
-  { // Entry 488
-    0x1.898324c2f1cfc596e590b4a80d2508fbp-11,
-    0x1.ffffc7fffffffp45
-  },
-  { // Entry 489
-    0x1.898324c2f1cfc596e590b4a80d2508fbp-11,
-    -0x1.ffffc7fffffffp45
-  },
-  { // Entry 490
-    0x1.f0154c00688f87fcc96f14c8efb5914fp-1,
-    0x1.ffffdf1ffffffp-3
-  },
-  { // Entry 491
-    0x1.f0154c00688f87fcc96f14c8efb5914fp-1,
-    -0x1.ffffdf1ffffffp-3
-  },
-  { // Entry 492
-    0x1.ffc00157126a7d98216491df73d97cd3p-1,
-    0x1.fffff8fffffffp-6
-  },
-  { // Entry 493
-    0x1.ffc00157126a7d98216491df73d97cd3p-1,
-    -0x1.fffff8fffffffp-6
-  },
-  { // Entry 494
-    -0x1.e0d9f0f38c73f0069739e9de65191416p-2,
-    0x1.fffffbfffffffp968
-  },
-  { // Entry 495
-    -0x1.e0d9f0f38c73f0069739e9de65191416p-2,
-    -0x1.fffffbfffffffp968
-  },
-  { // Entry 496
-    0x1.fff4699dd560b5dbb88a029337b9ab86p-1,
-    0x1.fffffcfffffffp40
-  },
-  { // Entry 497
-    0x1.fff4699dd560b5dbb88a029337b9ab86p-1,
-    -0x1.fffffcfffffffp40
-  },
-  { // Entry 498
-    0x1.ff0015559f228802433732ae11942945p-1,
-    0x1.ffffff0000040p-5
-  },
-  { // Entry 499
-    0x1.ff0015559f228802433732ae11942945p-1,
-    -0x1.ffffff0000040p-5
-  },
-  { // Entry 500
-    -0x1.9c6951cccd39bf60d47db80be6fce34fp-2,
-    0x1.ffffff8p119
-  },
-  { // Entry 501
-    -0x1.9c6951cccd39bf60d47db80be6fce34fp-2,
-    -0x1.ffffff8p119
-  },
-  { // Entry 502
-    -0x1.f2c2263590034ec62522d45d2eeca285p-1,
-    0x1.ffffff8p192
-  },
-  { // Entry 503
-    -0x1.f2c2263590034ec62522d45d2eeca285p-1,
-    -0x1.ffffff8p192
-  },
-  { // Entry 504
-    0x1.c7884d6cfb5511a6b5111077fd0b1b72p-1,
-    0x1.ffffff8p543
-  },
-  { // Entry 505
-    0x1.c7884d6cfb5511a6b5111077fd0b1b72p-1,
-    -0x1.ffffff8p543
-  },
-  { // Entry 506
-    0x1.e66c79e776a1eff6b68f2d01289e08e8p-2,
-    0x1.ffffffc3fffffp500
-  },
-  { // Entry 507
-    0x1.e66c79e776a1eff6b68f2d01289e08e8p-2,
-    -0x1.ffffffc3fffffp500
-  },
-  { // Entry 508
-    0x1.c7c9a9c57c0b2009f18a6c2c07b52ea2p-3,
-    0x1.ffffffe1fffffp700
-  },
-  { // Entry 509
-    0x1.c7c9a9c57c0b2009f18a6c2c07b52ea2p-3,
-    -0x1.ffffffe1fffffp700
-  },
-  { // Entry 510
-    0x1.7bb28daf5f9ad3608dda8a16ea235cb4p-1,
-    0x1.ffffffff0f0ffp400
-  },
-  { // Entry 511
-    0x1.7bb28daf5f9ad3608dda8a16ea235cb4p-1,
-    -0x1.ffffffff0f0ffp400
-  },
-  { // Entry 512
-    0x1.fc015527d8bb37806e4976dcf7a7c98cp-1,
-    0x1.ffffffff3ffffp-4
-  },
-  { // Entry 513
-    0x1.fc015527d8bb37806e4976dcf7a7c98cp-1,
-    -0x1.ffffffff3ffffp-4
-  },
-  { // Entry 514
-    -0x1.ea5257eb66e3bffee900cd4447404c16p-1,
-    0x1.ffffffff8ffffp3
-  },
-  { // Entry 515
-    -0x1.ea5257eb66e3bffee900cd4447404c16p-1,
-    -0x1.ffffffff8ffffp3
-  },
-  { // Entry 516
-    -0x1.4eaa606dbef968000267b0375ded6872p-1,
-    0x1.fffffffffbcffp1
-  },
-  { // Entry 517
-    -0x1.4eaa606dbef968000267b0375ded6872p-1,
-    -0x1.fffffffffbcffp1
-  },
-  { // Entry 518
-    -0x1.fc9cd6b5f009482b0d5582e1c6cdf738p-1,
-    0x1.fffffffffe0b5p720
-  },
-  { // Entry 519
-    -0x1.fc9cd6b5f009482b0d5582e1c6cdf738p-1,
-    -0x1.fffffffffe0b5p720
-  },
-  { // Entry 520
-    0x1.e96ac045dd138d25741cb879b92afa48p-3,
-    0x1.fffffffffe7ffp41
-  },
-  { // Entry 521
-    0x1.e96ac045dd138d25741cb879b92afa48p-3,
-    -0x1.fffffffffe7ffp41
-  },
-  { // Entry 522
-    -0x1.fcaf39cfb94d48195d2b26060b30f822p-1,
-    0x1.fffffffffee09p720
-  },
-  { // Entry 523
-    -0x1.fcaf39cfb94d48195d2b26060b30f822p-1,
-    -0x1.fffffffffee09p720
-  },
-  { // Entry 524
-    0x1.8432232a6d1daa6ac8a94c0021e60d50p-1,
-    0x1.ffffffffffdffp40
-  },
-  { // Entry 525
-    0x1.8432232a6d1daa6ac8a94c0021e60d50p-1,
-    -0x1.ffffffffffdffp40
-  },
-  { // Entry 526
-    0x1.9e375143139d9a37b354ea33dd625cd6p-6,
-    0x1.ffffffffffeffp41
-  },
-  { // Entry 527
-    0x1.9e375143139d9a37b354ea33dd625cd6p-6,
-    -0x1.ffffffffffeffp41
-  },
-  { // Entry 528
-    0x1.fffc0001555528000049b10c26a1f539p-1,
-    0x1.fffffffffff4ap-8
-  },
-  { // Entry 529
-    0x1.fffc0001555528000049b10c26a1f539p-1,
-    -0x1.fffffffffff4ap-8
-  },
-  { // Entry 530
-    0x1.463a895c4ea5ce4e56e8f578388eed3ap-1,
-    0x1.fffffffffff78p920
-  },
-  { // Entry 531
-    0x1.463a895c4ea5ce4e56e8f578388eed3ap-1,
-    -0x1.fffffffffff78p920
-  },
-  { // Entry 532
-    0x1.3c1a48635cf380c8158d934c4d0dd87cp-1,
-    0x1.fffffffffffd5p995
-  },
-  { // Entry 533
-    0x1.3c1a48635cf380c8158d934c4d0dd87cp-1,
-    -0x1.fffffffffffd5p995
-  },
-  { // Entry 534
-    0x1.91c4e0708bd486217f5fc230f0416220p-1,
-    0x1.fffffffffffe8p720
-  },
-  { // Entry 535
-    0x1.91c4e0708bd486217f5fc230f0416220p-1,
-    -0x1.fffffffffffe8p720
-  },
-  { // Entry 536
-    -0x1.3e15cb849b5ea87bcc583f6344cbcc40p-1,
-    0x1.fffffffffffebp920
-  },
-  { // Entry 537
-    -0x1.3e15cb849b5ea87bcc583f6344cbcc40p-1,
-    -0x1.fffffffffffebp920
-  },
-  { // Entry 538
-    -0x1.816808349b80dd3c22cbe80b4c171d1fp-1,
-    0x1.ffffffffffff1p245
-  },
-  { // Entry 539
-    -0x1.816808349b80dd3c22cbe80b4c171d1fp-1,
-    -0x1.ffffffffffff1p245
-  },
-  { // Entry 540
-    0x1.4699c814c5f075bb0ed9472dfecc50a9p-1,
-    0x1.ffffffffffff4p845
-  },
-  { // Entry 541
-    0x1.4699c814c5f075bb0ed9472dfecc50a9p-1,
-    -0x1.ffffffffffff4p845
-  },
-  { // Entry 542
-    -0x1.815e92b7a2a019e74650a859968e0f29p-1,
-    0x1.ffffffffffff4p1020
-  },
-  { // Entry 543
-    -0x1.815e92b7a2a019e74650a859968e0f29p-1,
-    -0x1.ffffffffffff4p1020
-  },
-  { // Entry 544
-    -0x1.3e8d028153201ed272fc9549725fcb3fp-10,
-    0x1.ffffffffffffcp45
-  },
-  { // Entry 545
-    -0x1.3e8d028153201ed272fc9549725fcb3fp-10,
-    -0x1.ffffffffffffcp45
-  },
-  { // Entry 546
-    0x1.7d6765714c78532d3eb0f2a73c5d6126p-1,
-    0x1.ffffffffffffep105
-  },
-  { // Entry 547
-    0x1.7d6765714c78532d3eb0f2a73c5d6126p-1,
-    -0x1.ffffffffffffep105
-  },
-  { // Entry 548
-    -0x1.f869fb14d2568d67c37c90b0a038b240p-3,
-    0x1.ffffffffffffep480
-  },
-  { // Entry 549
-    -0x1.f869fb14d2568d67c37c90b0a038b240p-3,
-    -0x1.ffffffffffffep480
-  },
-  { // Entry 550
-    -0x1.80a75b369d3c3fd15b6060c6fb98f2d6p-1,
-    0x1.ffffffffffffep970
-  },
-  { // Entry 551
-    -0x1.80a75b369d3c3fd15b6060c6fb98f2d6p-1,
-    -0x1.ffffffffffffep970
-  },
-  { // Entry 552
-    -0x1.9dba69e853bd77fd883be3bb1171df55p-4,
-    0x1.0000000000001p42
-  },
-  { // Entry 553
-    -0x1.9dba69e853bd77fd883be3bb1171df55p-4,
-    -0x1.0000000000001p42
-  },
-  { // Entry 554
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 555
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074
-  },
-  { // Entry 556
-    0x1.p0,
-    -0.0
-  },
-  { // Entry 557
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074
-  },
-  { // Entry 558
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 559
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 560
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 561
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1022
-  },
-  { // Entry 562
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1022
-  },
-  { // Entry 563
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 564
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 565
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 566
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 567
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1022
-  },
-  { // Entry 568
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1022
-  },
-  { // Entry 569
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 570
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 571
-    0x1.ffffff5c28f5cb4c5272061281211120p-1,
-    0x1.999999999999ap-13
-  },
-  { // Entry 572
-    0x1.ffffff5c28f5cb4c5272061281211120p-1,
-    -0x1.999999999999ap-13
-  },
-  { // Entry 573
-    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
-    0x1.999999999999ap-12
-  },
-  { // Entry 574
-    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
-    -0x1.999999999999ap-12
-  },
-  { // Entry 575
-    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
-    0x1.3333333333334p-11
-  },
-  { // Entry 576
-    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
-    -0x1.3333333333334p-11
-  },
-  { // Entry 577
-    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
-    0x1.999999999999ap-11
-  },
-  { // Entry 578
-    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
-    -0x1.999999999999ap-11
-  },
-  { // Entry 579
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    0x1.0p-10
-  },
-  { // Entry 580
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    -0x1.0p-10
-  },
-  { // Entry 581
-    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
-    0x1.3333333333333p-10
-  },
-  { // Entry 582
-    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
-    -0x1.3333333333333p-10
-  },
-  { // Entry 583
-    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
-    0x1.6666666666666p-10
-  },
-  { // Entry 584
-    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
-    -0x1.6666666666666p-10
-  },
-  { // Entry 585
-    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
-    0x1.9999999999999p-10
-  },
-  { // Entry 586
-    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
-    -0x1.9999999999999p-10
-  },
-  { // Entry 587
-    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
-    0x1.cccccccccccccp-10
-  },
-  { // Entry 588
-    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
-    -0x1.cccccccccccccp-10
-  },
-  { // Entry 589
-    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
-    0x1.0666666666666p-7
-  },
-  { // Entry 590
-    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
-    -0x1.0666666666666p-7
-  },
-  { // Entry 591
-    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
-    0x1.cccccccccccccp-7
-  },
-  { // Entry 592
-    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
-    -0x1.cccccccccccccp-7
-  },
-  { // Entry 593
-    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
-    0x1.4999999999999p-6
-  },
-  { // Entry 594
-    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
-    -0x1.4999999999999p-6
-  },
-  { // Entry 595
-    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
-    0x1.accccccccccccp-6
-  },
-  { // Entry 596
-    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
-    -0x1.accccccccccccp-6
-  },
-  { // Entry 597
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    0x1.080p-5
-  },
-  { // Entry 598
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    -0x1.080p-5
-  },
-  { // Entry 599
-    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
-    0x1.399999999999ap-5
-  },
-  { // Entry 600
-    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
-    -0x1.399999999999ap-5
-  },
-  { // Entry 601
-    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
-    0x1.6b33333333334p-5
-  },
-  { // Entry 602
-    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
-    -0x1.6b33333333334p-5
-  },
-  { // Entry 603
-    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
-    0x1.9cccccccccccep-5
-  },
-  { // Entry 604
-    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
-    -0x1.9cccccccccccep-5
-  },
-  { // Entry 605
-    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
-    0x1.ce66666666666p-5
-  },
-  { // Entry 606
-    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
-    -0x1.ce66666666666p-5
-  },
-  { // Entry 607
-    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
-    0x1.5e7fc4369bdadp-1
-  },
-  { // Entry 608
-    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
-    -0x1.5e7fc4369bdadp-1
-  },
-  { // Entry 609
-    0x1.0b5d3802fc7991140168f294eedd7904p-2,
-    0x1.4e7fc4369bdadp0
-  },
-  { // Entry 610
-    0x1.0b5d3802fc7991140168f294eedd7904p-2,
-    -0x1.4e7fc4369bdadp0
-  },
-  { // Entry 611
-    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
-    0x1.edbfa651e9c84p0
-  },
-  { // Entry 612
-    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
-    -0x1.edbfa651e9c84p0
-  },
-  { // Entry 613
-    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
-    0x1.467fc4369bdadp1
-  },
-  { // Entry 614
-    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
-    -0x1.467fc4369bdadp1
-  },
-  { // Entry 615
-    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
-    0x1.961fb54442d18p1
-  },
-  { // Entry 616
-    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
-    -0x1.961fb54442d18p1
-  },
-  { // Entry 617
-    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
-    0x1.e5bfa651e9c83p1
-  },
-  { // Entry 618
-    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
-    -0x1.e5bfa651e9c83p1
-  },
-  { // Entry 619
-    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
-    0x1.1aafcbafc85f7p2
-  },
-  { // Entry 620
-    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
-    -0x1.1aafcbafc85f7p2
-  },
-  { // Entry 621
-    0x1.4894f695dc56bce8b273e5524f181264p-2,
-    0x1.427fc4369bdadp2
-  },
-  { // Entry 622
-    0x1.4894f695dc56bce8b273e5524f181264p-2,
-    -0x1.427fc4369bdadp2
-  },
-  { // Entry 623
-    0x1.a016ea3a692ce0c321b77f168de39122p-1,
-    0x1.6a4fbcbd6f562p2
-  },
-  { // Entry 624
-    0x1.a016ea3a692ce0c321b77f168de39122p-1,
-    -0x1.6a4fbcbd6f562p2
-  },
-  { // Entry 625
-    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
-    0x1.6af2eff0a2896p2
-  },
-  { // Entry 626
-    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
-    -0x1.6af2eff0a2896p2
-  },
-  { // Entry 627
-    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
-    0x1.43c62a9d02414p2
-  },
-  { // Entry 628
-    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
-    -0x1.43c62a9d02414p2
-  },
-  { // Entry 629
-    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
-    0x1.1c99654961f92p2
-  },
-  { // Entry 630
-    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
-    -0x1.1c99654961f92p2
-  },
-  { // Entry 631
-    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
-    0x1.ead93feb8361fp1
-  },
-  { // Entry 632
-    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
-    -0x1.ead93feb8361fp1
-  },
-  { // Entry 633
-    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
-    0x1.9c7fb54442d1ap1
-  },
-  { // Entry 634
-    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
-    -0x1.9c7fb54442d1ap1
-  },
-  { // Entry 635
-    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
-    0x1.4e262a9d02415p1
-  },
-  { // Entry 636
-    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
-    -0x1.4e262a9d02415p1
-  },
-  { // Entry 637
-    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
-    0x1.ff993feb83620p0
-  },
-  { // Entry 638
-    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
-    -0x1.ff993feb83620p0
-  },
-  { // Entry 639
-    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
-    0x1.62e62a9d02416p0
-  },
-  { // Entry 640
-    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
-    -0x1.62e62a9d02416p0
-  },
-  { // Entry 641
-    0x1.6e1061205dd79051c112d30a05097c61p-1,
-    0x1.8c662a9d02419p-1
-  },
-  { // Entry 642
-    0x1.6e1061205dd79051c112d30a05097c61p-1,
-    -0x1.8c662a9d02419p-1
-  },
-  { // Entry 643
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    -0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 644
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 645
-    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
-    -0x1.95ec8b9e03d54p0
-  },
-  { // Entry 646
-    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
-    0x1.95ec8b9e03d54p0
-  },
-  { // Entry 647
-    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
-    -0x1.832efa2a435a9p0
-  },
-  { // Entry 648
-    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
-    0x1.832efa2a435a9p0
-  },
-  { // Entry 649
-    0x1.0cab9115640d993082a7343bb5affea2p-3,
-    -0x1.707168b682dfep0
-  },
-  { // Entry 650
-    0x1.0cab9115640d993082a7343bb5affea2p-3,
-    0x1.707168b682dfep0
-  },
-  { // Entry 651
-    0x1.a0723a95492edee5dc98394e45f96d88p-3,
-    -0x1.5db3d742c2653p0
-  },
-  { // Entry 652
-    0x1.a0723a95492edee5dc98394e45f96d88p-3,
-    0x1.5db3d742c2653p0
-  },
-  { // Entry 653
-    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
-    -0x1.4af645cf01ea8p0
-  },
-  { // Entry 654
-    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
-    0x1.4af645cf01ea8p0
-  },
-  { // Entry 655
-    0x1.6043621b13be2ff07085f8278598e566p-2,
-    -0x1.3838b45b416fdp0
-  },
-  { // Entry 656
-    0x1.6043621b13be2ff07085f8278598e566p-2,
-    0x1.3838b45b416fdp0
-  },
-  { // Entry 657
-    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
-    -0x1.257b22e780f52p0
-  },
-  { // Entry 658
-    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
-    0x1.257b22e780f52p0
-  },
-  { // Entry 659
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    -0x1.12bd9173c07abp0
-  },
-  { // Entry 660
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    0x1.12bd9173c07abp0
-  },
-  { // Entry 661
-    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
-    -0x1.ea5c3ed5b3850p-1
-  },
-  { // Entry 662
-    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
-    0x1.ea5c3ed5b3850p-1
-  },
-  { // Entry 663
-    0x1.3805a1882009f2843da808e959f17861p-1,
-    -0x1.d4b87dab670a0p-1
-  },
-  { // Entry 664
-    0x1.3805a1882009f2843da808e959f17861p-1,
-    0x1.d4b87dab670a0p-1
-  },
-  { // Entry 665
-    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
-    -0x1.bf14bc811a8f0p-1
-  },
-  { // Entry 666
-    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
-    0x1.bf14bc811a8f0p-1
-  },
-  { // Entry 667
-    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
-    -0x1.a970fb56ce140p-1
-  },
-  { // Entry 668
-    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
-    0x1.a970fb56ce140p-1
-  },
-  { // Entry 669
-    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
-    -0x1.93cd3a2c81990p-1
-  },
-  { // Entry 670
-    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
-    0x1.93cd3a2c81990p-1
-  },
-  { // Entry 671
-    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
-    -0x1.7e297902351e0p-1
-  },
-  { // Entry 672
-    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
-    0x1.7e297902351e0p-1
-  },
-  { // Entry 673
-    0x1.863a850e438fe029302aba0f5f127616p-1,
-    -0x1.6885b7d7e8a30p-1
-  },
-  { // Entry 674
-    0x1.863a850e438fe029302aba0f5f127616p-1,
-    0x1.6885b7d7e8a30p-1
-  },
-  { // Entry 675
-    0x1.93e2948233fce814439ed51fd2548920p-1,
-    -0x1.52e1f6ad9c280p-1
-  },
-  { // Entry 676
-    0x1.93e2948233fce814439ed51fd2548920p-1,
-    0x1.52e1f6ad9c280p-1
-  },
-  { // Entry 677
-    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
-    -0x1.3d3e35834fad0p-1
-  },
-  { // Entry 678
-    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
-    0x1.3d3e35834fad0p-1
-  },
-  { // Entry 679
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    -0x1.0a0b02501c799p-1
-  },
-  { // Entry 680
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    0x1.0a0b02501c799p-1
-  },
-  { // Entry 681
-    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
-    -0x1.d8f7208e6b82cp-2
-  },
-  { // Entry 682
-    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
-    0x1.d8f7208e6b82cp-2
-  },
-  { // Entry 683
-    0x1.d6c0b125791cffce83e32564712b78c6p-1,
-    -0x1.9dd83c7c9e126p-2
-  },
-  { // Entry 684
-    0x1.d6c0b125791cffce83e32564712b78c6p-1,
-    0x1.9dd83c7c9e126p-2
-  },
-  { // Entry 685
-    0x1.e1960261829858391645bbe12019e58ap-1,
-    -0x1.62b9586ad0a20p-2
-  },
-  { // Entry 686
-    0x1.e1960261829858391645bbe12019e58ap-1,
-    0x1.62b9586ad0a20p-2
-  },
-  { // Entry 687
-    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
-    -0x1.279a74590331ap-2
-  },
-  { // Entry 688
-    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
-    0x1.279a74590331ap-2
-  },
-  { // Entry 689
-    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
-    -0x1.d8f7208e6b829p-3
-  },
-  { // Entry 690
-    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
-    0x1.d8f7208e6b829p-3
-  },
-  { // Entry 691
-    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
-    -0x1.62b9586ad0a1ep-3
-  },
-  { // Entry 692
-    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
-    0x1.62b9586ad0a1ep-3
-  },
-  { // Entry 693
-    0x1.fc97283a424797215f8a8d1967736c9bp-1,
-    -0x1.d8f7208e6b826p-4
-  },
-  { // Entry 694
-    0x1.fc97283a424797215f8a8d1967736c9bp-1,
-    0x1.d8f7208e6b826p-4
-  },
-  { // Entry 695
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    -0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 696
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 697
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 698
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    -0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 699
-    0x1.fc97283a424795847294654a1d8a08edp-1,
-    0x1.d8f7208e6b82dp-4
-  },
-  { // Entry 700
-    0x1.fc97283a424795847294654a1d8a08edp-1,
-    -0x1.d8f7208e6b82dp-4
-  },
-  { // Entry 701
-    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
-    0x1.62b9586ad0a22p-3
-  },
-  { // Entry 702
-    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
-    -0x1.62b9586ad0a22p-3
-  },
-  { // Entry 703
-    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
-    0x1.d8f7208e6b82dp-3
-  },
-  { // Entry 704
-    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
-    -0x1.d8f7208e6b82dp-3
-  },
-  { // Entry 705
-    0x1.ead07cc6356960546ae634ef62621fb2p-1,
-    0x1.279a74590331cp-2
-  },
-  { // Entry 706
-    0x1.ead07cc6356960546ae634ef62621fb2p-1,
-    -0x1.279a74590331cp-2
-  },
-  { // Entry 707
-    0x1.e1960261829852ca662ca27d518c2fa9p-1,
-    0x1.62b9586ad0a22p-2
-  },
-  { // Entry 708
-    0x1.e1960261829852ca662ca27d518c2fa9p-1,
-    -0x1.62b9586ad0a22p-2
-  },
-  { // Entry 709
-    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
-    0x1.9dd83c7c9e128p-2
-  },
-  { // Entry 710
-    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
-    -0x1.9dd83c7c9e128p-2
-  },
-  { // Entry 711
-    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
-    0x1.d8f7208e6b82ep-2
-  },
-  { // Entry 712
-    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
-    -0x1.d8f7208e6b82ep-2
-  },
-  { // Entry 713
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    0x1.0a0b02501c799p-1
-  },
-  { // Entry 714
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    -0x1.0a0b02501c799p-1
-  },
-  { // Entry 715
-    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
-    0x1.3d3e35834faccp-1
-  },
-  { // Entry 716
-    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
-    -0x1.3d3e35834faccp-1
-  },
-  { // Entry 717
-    0x1.93e2948233fd0f69e3918982148f8265p-1,
-    0x1.52e1f6ad9c27cp-1
-  },
-  { // Entry 718
-    0x1.93e2948233fd0f69e3918982148f8265p-1,
-    -0x1.52e1f6ad9c27cp-1
-  },
-  { // Entry 719
-    0x1.863a850e43900997e76be80405437377p-1,
-    0x1.6885b7d7e8a2cp-1
-  },
-  { // Entry 720
-    0x1.863a850e43900997e76be80405437377p-1,
-    -0x1.6885b7d7e8a2cp-1
-  },
-  { // Entry 721
-    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
-    0x1.7e297902351dcp-1
-  },
-  { // Entry 722
-    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
-    -0x1.7e297902351dcp-1
-  },
-  { // Entry 723
-    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
-    0x1.93cd3a2c8198cp-1
-  },
-  { // Entry 724
-    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
-    -0x1.93cd3a2c8198cp-1
-  },
-  { // Entry 725
-    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
-    0x1.a970fb56ce13cp-1
-  },
-  { // Entry 726
-    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
-    -0x1.a970fb56ce13cp-1
-  },
-  { // Entry 727
-    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
-    0x1.bf14bc811a8ecp-1
-  },
-  { // Entry 728
-    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
-    -0x1.bf14bc811a8ecp-1
-  },
-  { // Entry 729
-    0x1.3805a188200a254247f30462c36acf6ap-1,
-    0x1.d4b87dab6709cp-1
-  },
-  { // Entry 730
-    0x1.3805a188200a254247f30462c36acf6ap-1,
-    -0x1.d4b87dab6709cp-1
-  },
-  { // Entry 731
-    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
-    0x1.ea5c3ed5b384cp-1
-  },
-  { // Entry 732
-    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
-    -0x1.ea5c3ed5b384cp-1
-  },
-  { // Entry 733
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    0x1.12bd9173c07abp0
-  },
-  { // Entry 734
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    -0x1.12bd9173c07abp0
-  },
-  { // Entry 735
-    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
-    0x1.257b22e780f56p0
-  },
-  { // Entry 736
-    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
-    -0x1.257b22e780f56p0
-  },
-  { // Entry 737
-    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
-    0x1.3838b45b41701p0
-  },
-  { // Entry 738
-    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
-    -0x1.3838b45b41701p0
-  },
-  { // Entry 739
-    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
-    0x1.4af645cf01eacp0
-  },
-  { // Entry 740
-    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
-    -0x1.4af645cf01eacp0
-  },
-  { // Entry 741
-    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
-    0x1.5db3d742c2657p0
-  },
-  { // Entry 742
-    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
-    -0x1.5db3d742c2657p0
-  },
-  { // Entry 743
-    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
-    0x1.707168b682e02p0
-  },
-  { // Entry 744
-    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
-    -0x1.707168b682e02p0
-  },
-  { // Entry 745
-    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
-    0x1.832efa2a435adp0
-  },
-  { // Entry 746
-    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
-    -0x1.832efa2a435adp0
-  },
-  { // Entry 747
-    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
-    0x1.95ec8b9e03d58p0
-  },
-  { // Entry 748
-    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
-    -0x1.95ec8b9e03d58p0
-  },
-  { // Entry 749
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 750
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    -0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 751
-    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
-    0x1.04aff6d330942p0
-  },
-  { // Entry 752
-    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
-    -0x1.04aff6d330942p0
-  },
-  { // Entry 753
-    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
-    0x1.04b09e98dcdb4p0
-  },
-  { // Entry 754
-    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
-    -0x1.04b09e98dcdb4p0
-  },
-  { // Entry 755
-    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
-    0x1.04b1465e89226p0
-  },
-  { // Entry 756
-    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
-    -0x1.04b1465e89226p0
-  },
-  { // Entry 757
-    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
-    0x1.04b1ee2435698p0
-  },
-  { // Entry 758
-    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
-    -0x1.04b1ee2435698p0
-  },
-  { // Entry 759
-    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
-    0x1.04b295e9e1b0ap0
-  },
-  { // Entry 760
-    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
-    -0x1.04b295e9e1b0ap0
-  },
-  { // Entry 761
-    0x1.0cadb27753d65785e06d0e464006149ep-1,
-    0x1.04b33daf8df7cp0
-  },
-  { // Entry 762
-    0x1.0cadb27753d65785e06d0e464006149ep-1,
-    -0x1.04b33daf8df7cp0
-  },
-  { // Entry 763
-    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
-    0x1.04b3e5753a3eep0
-  },
-  { // Entry 764
-    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
-    -0x1.04b3e5753a3eep0
-  },
-  { // Entry 765
-    0x1.0cab7733099df738645574cd482ef4b2p-1,
-    0x1.04b48d3ae6860p0
-  },
-  { // Entry 766
-    0x1.0cab7733099df738645574cd482ef4b2p-1,
-    -0x1.04b48d3ae6860p0
-  },
-  { // Entry 767
-    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
-    0x1.04b5350092ccfp0
-  },
-  { // Entry 768
-    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
-    -0x1.04b5350092ccfp0
-  },
-  { // Entry 769
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 770
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074
-  },
-  { // Entry 771
-    0x1.p0,
-    -0.0
-  },
-  { // Entry 772
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074
-  },
-  { // Entry 773
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 774
-    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
-    0x1.279a74590331bp-1
-  },
-  { // Entry 775
-    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
-    -0x1.279a74590331bp-1
-  },
-  { // Entry 776
-    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
-    0x1.279a74590331cp-1
-  },
-  { // Entry 777
-    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
-    -0x1.279a74590331cp-1
-  },
-  { // Entry 778
-    0x1.ad02c771c35ec478d333803762f450d5p-1,
-    0x1.279a74590331dp-1
-  },
-  { // Entry 779
-    0x1.ad02c771c35ec478d333803762f450d5p-1,
-    -0x1.279a74590331dp-1
-  },
-  { // Entry 780
-    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
-    0x1.bb67ae8584ca9p0
-  },
-  { // Entry 781
-    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
-    -0x1.bb67ae8584ca9p0
-  },
-  { // Entry 782
-    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
-    0x1.bb67ae8584caap0
-  },
-  { // Entry 783
-    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
-    -0x1.bb67ae8584caap0
-  },
-  { // Entry 784
-    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
-    0x1.bb67ae8584cabp0
-  },
-  { // Entry 785
-    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
-    -0x1.bb67ae8584cabp0
-  },
-  { // Entry 786
-    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
-    0x1.bffffffffffffp-2
-  },
-  { // Entry 787
-    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
-    -0x1.bffffffffffffp-2
-  },
-  { // Entry 788
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    0x1.cp-2
-  },
-  { // Entry 789
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    -0x1.cp-2
-  },
-  { // Entry 790
-    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
-    0x1.c000000000001p-2
-  },
-  { // Entry 791
-    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
-    -0x1.c000000000001p-2
-  },
-  { // Entry 792
-    0x1.8bb105a5dc90104051d08cb965631807p-1,
-    0x1.5ffffffffffffp-1
-  },
-  { // Entry 793
-    0x1.8bb105a5dc90104051d08cb965631807p-1,
-    -0x1.5ffffffffffffp-1
-  },
-  { // Entry 794
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    0x1.6p-1
-  },
-  { // Entry 795
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    -0x1.6p-1
-  },
-  { // Entry 796
-    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
-    0x1.6000000000001p-1
-  },
-  { // Entry 797
-    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
-    -0x1.6000000000001p-1
-  },
-  { // Entry 798
-    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
-    0x1.2ffffffffffffp0
-  },
-  { // Entry 799
-    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
-    -0x1.2ffffffffffffp0
-  },
-  { // Entry 800
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    0x1.3p0
-  },
-  { // Entry 801
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    -0x1.3p0
-  },
-  { // Entry 802
-    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
-    0x1.3000000000001p0
-  },
-  { // Entry 803
-    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
-    -0x1.3000000000001p0
-  },
-  { // Entry 804
-    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
-    0x1.37fffffffffffp1
-  },
-  { // Entry 805
-    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
-    -0x1.37fffffffffffp1
-  },
-  { // Entry 806
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    0x1.380p1
-  },
-  { // Entry 807
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    -0x1.380p1
-  },
-  { // Entry 808
-    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
-    0x1.3800000000001p1
-  },
-  { // Entry 809
-    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
-    -0x1.3800000000001p1
-  },
-  { // Entry 810
-    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
-    0x1.069c8b46b3792p-4
-  },
-  { // Entry 811
-    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
-    -0x1.069c8b46b3792p-4
-  },
-  { // Entry 812
-    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
-    0x1.069c8b46b3792p-3
-  },
-  { // Entry 813
-    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
-    -0x1.069c8b46b3792p-3
-  },
-  { // Entry 814
-    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
-    0x1.89ead0ea0d35bp-3
-  },
-  { // Entry 815
-    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
-    -0x1.89ead0ea0d35bp-3
-  },
-  { // Entry 816
-    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
-    0x1.069c8b46b3792p-2
-  },
-  { // Entry 817
-    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
-    -0x1.069c8b46b3792p-2
-  },
-  { // Entry 818
-    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
-    0x1.4843ae1860576p-2
-  },
-  { // Entry 819
-    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
-    -0x1.4843ae1860576p-2
-  },
-  { // Entry 820
-    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
-    0x1.89ead0ea0d35ap-2
-  },
-  { // Entry 821
-    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
-    -0x1.89ead0ea0d35ap-2
-  },
-  { // Entry 822
-    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
-    0x1.cb91f3bbba13ep-2
-  },
-  { // Entry 823
-    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
-    -0x1.cb91f3bbba13ep-2
-  },
-  { // Entry 824
-    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
-    0x1.069c8b46b3791p-1
-  },
-  { // Entry 825
-    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
-    -0x1.069c8b46b3791p-1
-  },
-  { // Entry 826
-    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
-    0x1.27701caf89e83p-1
-  },
-  { // Entry 827
-    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
-    -0x1.27701caf89e83p-1
-  },
-  { // Entry 828
-    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
-    0x1.4843ae1860575p-1
-  },
-  { // Entry 829
-    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
-    -0x1.4843ae1860575p-1
-  },
-  { // Entry 830
-    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
-    0x1.69173f8136c67p-1
-  },
-  { // Entry 831
-    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
-    -0x1.69173f8136c67p-1
-  },
-  { // Entry 832
-    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
-    0x1.89ead0ea0d359p-1
-  },
-  { // Entry 833
-    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
-    -0x1.89ead0ea0d359p-1
-  },
-  { // Entry 834
-    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
-    0x1.aabe6252e3a4bp-1
-  },
-  { // Entry 835
-    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
-    -0x1.aabe6252e3a4bp-1
-  },
-  { // Entry 836
-    0x1.3f3a0e28bedd40445858f823e150264bp-1,
-    0x1.cb91f3bbba13dp-1
-  },
-  { // Entry 837
-    0x1.3f3a0e28bedd40445858f823e150264bp-1,
-    -0x1.cb91f3bbba13dp-1
-  },
-  { // Entry 838
-    0x1.24ec799171642dbd24d259005822bd25p-1,
-    0x1.ec6585249082fp-1
-  },
-  { // Entry 839
-    0x1.24ec799171642dbd24d259005822bd25p-1,
-    -0x1.ec6585249082fp-1
-  },
-  { // Entry 840
-    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
-    0x1.069c8b46b3791p0
-  },
-  { // Entry 841
-    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
-    -0x1.069c8b46b3791p0
-  },
-  { // Entry 842
-    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
-    0x1.170653fb1eb0ap0
-  },
-  { // Entry 843
-    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
-    -0x1.170653fb1eb0ap0
-  },
-  { // Entry 844
-    0x1.9e7f8652b47582afd29744293170c07cp-2,
-    0x1.27701caf89e83p0
-  },
-  { // Entry 845
-    0x1.9e7f8652b47582afd29744293170c07cp-2,
-    -0x1.27701caf89e83p0
-  },
-  { // Entry 846
-    0x1.61a76077aee07bb349ca76cf700913d1p-2,
-    0x1.37d9e563f51fcp0
-  },
-  { // Entry 847
-    0x1.61a76077aee07bb349ca76cf700913d1p-2,
-    -0x1.37d9e563f51fcp0
-  },
-  { // Entry 848
-    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
-    0x1.4843ae1860575p0
-  },
-  { // Entry 849
-    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
-    -0x1.4843ae1860575p0
-  },
-  { // Entry 850
-    0x1.c7b90e3024593da8449963cfe08dde85p-3,
-    0x1.58ad76cccb8eep0
-  },
-  { // Entry 851
-    0x1.c7b90e3024593da8449963cfe08dde85p-3,
-    -0x1.58ad76cccb8eep0
-  },
-  { // Entry 852
-    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
-    0x1.69173f8136c67p0
-  },
-  { // Entry 853
-    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
-    -0x1.69173f8136c67p0
-  },
-  { // Entry 854
-    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
-    0x1.79810835a1fe0p0
-  },
-  { // Entry 855
-    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
-    -0x1.79810835a1fe0p0
-  },
-  { // Entry 856
-    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
-    0x1.89ead0ea0d359p0
-  },
-  { // Entry 857
-    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
-    -0x1.89ead0ea0d359p0
-  },
-  { // Entry 858
-    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
-    0x1.9a54999e786d2p0
-  },
-  { // Entry 859
-    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
-    -0x1.9a54999e786d2p0
-  },
-  { // Entry 860
-    -0x1.894f70befbb41417dff843e81fac388bp-4,
-    0x1.aabe6252e3a4bp0
-  },
-  { // Entry 861
-    -0x1.894f70befbb41417dff843e81fac388bp-4,
-    -0x1.aabe6252e3a4bp0
-  },
-  { // Entry 862
-    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
-    0x1.bb282b074edc4p0
-  },
-  { // Entry 863
-    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
-    -0x1.bb282b074edc4p0
-  },
-  { // Entry 864
-    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
-    0x1.cb91f3bbba13dp0
-  },
-  { // Entry 865
-    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
-    -0x1.cb91f3bbba13dp0
-  },
-  { // Entry 866
-    -0x1.235b331d8f7339841a517312d0d347fbp-2,
-    0x1.dbfbbc70254b6p0
-  },
-  { // Entry 867
-    -0x1.235b331d8f7339841a517312d0d347fbp-2,
-    -0x1.dbfbbc70254b6p0
-  },
-  { // Entry 868
-    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
-    0x1.ec6585249082fp0
-  },
-  { // Entry 869
-    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
-    -0x1.ec6585249082fp0
-  },
-  { // Entry 870
-    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
-    0x1.fccf4dd8fbba8p0
-  },
-  { // Entry 871
-    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
-    -0x1.fccf4dd8fbba8p0
-  },
-  { // Entry 872
-    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
-    0x1.069c8b46b3791p1
-  },
-  { // Entry 873
-    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
-    -0x1.069c8b46b3791p1
-  },
-  { // Entry 874
-    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
-    0x1.0ed16fa0e914ep1
-  },
-  { // Entry 875
-    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
-    -0x1.0ed16fa0e914ep1
-  },
-  { // Entry 876
-    -0x1.24ec79917163dda65afd8109f59cb465p-1,
-    0x1.170653fb1eb0bp1
-  },
-  { // Entry 877
-    -0x1.24ec79917163dda65afd8109f59cb465p-1,
-    -0x1.170653fb1eb0bp1
-  },
-  { // Entry 878
-    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
-    0x1.1f3b3855544c8p1
-  },
-  { // Entry 879
-    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
-    -0x1.1f3b3855544c8p1
-  },
-  { // Entry 880
-    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
-    0x1.27701caf89e85p1
-  },
-  { // Entry 881
-    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
-    -0x1.27701caf89e85p1
-  },
-  { // Entry 882
-    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
-    0x1.2fa50109bf842p1
-  },
-  { // Entry 883
-    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
-    -0x1.2fa50109bf842p1
-  },
-  { // Entry 884
-    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
-    0x1.37d9e563f51ffp1
-  },
-  { // Entry 885
-    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
-    -0x1.37d9e563f51ffp1
-  },
-  { // Entry 886
-    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
-    0x1.400ec9be2abbcp1
-  },
-  { // Entry 887
-    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
-    -0x1.400ec9be2abbcp1
-  },
-  { // Entry 888
-    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
-    0x1.4843ae1860579p1
-  },
-  { // Entry 889
-    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
-    -0x1.4843ae1860579p1
-  },
-  { // Entry 890
-    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
-    0x1.5078927295f36p1
-  },
-  { // Entry 891
-    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
-    -0x1.5078927295f36p1
-  },
-  { // Entry 892
-    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
-    0x1.58ad76cccb8f3p1
-  },
-  { // Entry 893
-    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
-    -0x1.58ad76cccb8f3p1
-  },
-  { // Entry 894
-    -0x1.da94d54dd4c0cedccd73684994422740p-1,
-    0x1.60e25b27012b0p1
-  },
-  { // Entry 895
-    -0x1.da94d54dd4c0cedccd73684994422740p-1,
-    -0x1.60e25b27012b0p1
-  },
-  { // Entry 896
-    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
-    0x1.69173f8136c6dp1
-  },
-  { // Entry 897
-    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
-    -0x1.69173f8136c6dp1
-  },
-  { // Entry 898
-    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
-    0x1.714c23db6c62ap1
-  },
-  { // Entry 899
-    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
-    -0x1.714c23db6c62ap1
-  },
-  { // Entry 900
-    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
-    0x1.79810835a1fe7p1
-  },
-  { // Entry 901
-    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
-    -0x1.79810835a1fe7p1
-  },
-  { // Entry 902
-    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
-    0x1.81b5ec8fd79a4p1
-  },
-  { // Entry 903
-    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
-    -0x1.81b5ec8fd79a4p1
-  },
-  { // Entry 904
-    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
-    0x1.89ead0ea0d35bp1
-  },
-  { // Entry 905
-    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
-    -0x1.89ead0ea0d35bp1
-  },
-  { // Entry 906
-    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
-    -0x1.81b5ec8fd799fp2
-  },
-  { // Entry 907
-    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
-    0x1.81b5ec8fd799fp2
-  },
-  { // Entry 908
-    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
-    -0x1.714c23db6c626p2
-  },
-  { // Entry 909
-    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
-    0x1.714c23db6c626p2
-  },
-  { // Entry 910
-    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
-    -0x1.60e25b27012adp2
-  },
-  { // Entry 911
-    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
-    0x1.60e25b27012adp2
-  },
-  { // Entry 912
-    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
-    -0x1.5078927295f34p2
-  },
-  { // Entry 913
-    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
-    0x1.5078927295f34p2
-  },
-  { // Entry 914
-    0x1.235b331d8f7487ce2db97819fae7777cp-2,
-    -0x1.400ec9be2abbbp2
-  },
-  { // Entry 915
-    0x1.235b331d8f7487ce2db97819fae7777cp-2,
-    0x1.400ec9be2abbbp2
-  },
-  { // Entry 916
-    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
-    -0x1.2fa50109bf842p2
-  },
-  { // Entry 917
-    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
-    0x1.2fa50109bf842p2
-  },
-  { // Entry 918
-    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
-    -0x1.1f3b3855544c9p2
-  },
-  { // Entry 919
-    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
-    0x1.1f3b3855544c9p2
-  },
-  { // Entry 920
-    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
-    -0x1.0ed16fa0e9150p2
-  },
-  { // Entry 921
-    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
-    0x1.0ed16fa0e9150p2
-  },
-  { // Entry 922
-    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
-    -0x1.fccf4dd8fbbaep1
-  },
-  { // Entry 923
-    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
-    0x1.fccf4dd8fbbaep1
-  },
-  { // Entry 924
-    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
-    -0x1.dbfbbc70254bcp1
-  },
-  { // Entry 925
-    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
-    0x1.dbfbbc70254bcp1
-  },
-  { // Entry 926
-    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
-    -0x1.bb282b074edcap1
-  },
-  { // Entry 927
-    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
-    0x1.bb282b074edcap1
-  },
-  { // Entry 928
-    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
-    -0x1.9a54999e786d8p1
-  },
-  { // Entry 929
-    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
-    0x1.9a54999e786d8p1
-  },
-  { // Entry 930
-    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
-    -0x1.79810835a1fe6p1
-  },
-  { // Entry 931
-    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
-    0x1.79810835a1fe6p1
-  },
-  { // Entry 932
-    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
-    -0x1.58ad76cccb8f4p1
-  },
-  { // Entry 933
-    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
-    0x1.58ad76cccb8f4p1
-  },
-  { // Entry 934
-    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
-    -0x1.37d9e563f5202p1
-  },
-  { // Entry 935
-    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
-    0x1.37d9e563f5202p1
-  },
-  { // Entry 936
-    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
-    -0x1.170653fb1eb10p1
-  },
-  { // Entry 937
-    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
-    0x1.170653fb1eb10p1
-  },
-  { // Entry 938
-    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
-    -0x1.ec6585249083cp0
-  },
-  { // Entry 939
-    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
-    0x1.ec6585249083cp0
-  },
-  { // Entry 940
-    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
-    -0x1.aabe6252e3a58p0
-  },
-  { // Entry 941
-    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
-    0x1.aabe6252e3a58p0
-  },
-  { // Entry 942
-    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
-    -0x1.69173f8136c74p0
-  },
-  { // Entry 943
-    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
-    0x1.69173f8136c74p0
-  },
-  { // Entry 944
-    0x1.9e7f8652b47289e53fccd54955db4552p-2,
-    -0x1.27701caf89e90p0
-  },
-  { // Entry 945
-    0x1.9e7f8652b47289e53fccd54955db4552p-2,
-    0x1.27701caf89e90p0
-  },
-  { // Entry 946
-    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
-    -0x1.cb91f3bbba157p-1
-  },
-  { // Entry 947
-    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
-    0x1.cb91f3bbba157p-1
-  },
-  { // Entry 948
-    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
-    -0x1.4843ae186058ep-1
-  },
-  { // Entry 949
-    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
-    0x1.4843ae186058ep-1
-  },
-  { // Entry 950
-    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
-    -0x1.89ead0ea0d38ap-2
-  },
-  { // Entry 951
-    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
-    0x1.89ead0ea0d38ap-2
-  },
-  { // Entry 952
-    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
-    -0x1.069c8b46b37f0p-3
-  },
-  { // Entry 953
-    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
-    0x1.069c8b46b37f0p-3
-  },
-  { // Entry 954
-    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
-    0x1.069c8b46b3734p-3
-  },
-  { // Entry 955
-    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
-    -0x1.069c8b46b3734p-3
-  },
-  { // Entry 956
-    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
-    0x1.89ead0ea0d32cp-2
-  },
-  { // Entry 957
-    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
-    -0x1.89ead0ea0d32cp-2
-  },
-  { // Entry 958
-    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
-    0x1.4843ae186055fp-1
-  },
-  { // Entry 959
-    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
-    -0x1.4843ae186055fp-1
-  },
-  { // Entry 960
-    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
-    0x1.cb91f3bbba128p-1
-  },
-  { // Entry 961
-    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
-    -0x1.cb91f3bbba128p-1
-  },
-  { // Entry 962
-    0x1.9e7f8652b478066eec563f835097f148p-2,
-    0x1.27701caf89e78p0
-  },
-  { // Entry 963
-    0x1.9e7f8652b478066eec563f835097f148p-2,
-    -0x1.27701caf89e78p0
-  },
-  { // Entry 964
-    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
-    0x1.69173f8136c5cp0
-  },
-  { // Entry 965
-    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
-    -0x1.69173f8136c5cp0
-  },
-  { // Entry 966
-    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
-    0x1.aabe6252e3a40p0
-  },
-  { // Entry 967
-    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
-    -0x1.aabe6252e3a40p0
-  },
-  { // Entry 968
-    -0x1.61a76077aedc99952438421f820a2befp-2,
-    0x1.ec65852490824p0
-  },
-  { // Entry 969
-    -0x1.61a76077aedc99952438421f820a2befp-2,
-    -0x1.ec65852490824p0
-  },
-  { // Entry 970
-    -0x1.24ec799171626e36709cfcf7c7752332p-1,
-    0x1.170653fb1eb04p1
-  },
-  { // Entry 971
-    -0x1.24ec799171626e36709cfcf7c7752332p-1,
-    -0x1.170653fb1eb04p1
-  },
-  { // Entry 972
-    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
-    0x1.37d9e563f51f6p1
-  },
-  { // Entry 973
-    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
-    -0x1.37d9e563f51f6p1
-  },
-  { // Entry 974
-    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
-    0x1.58ad76cccb8e8p1
-  },
-  { // Entry 975
-    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
-    -0x1.58ad76cccb8e8p1
-  },
-  { // Entry 976
-    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
-    0x1.79810835a1fdap1
-  },
-  { // Entry 977
-    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
-    -0x1.79810835a1fdap1
-  },
-  { // Entry 978
-    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
-    0x1.9a54999e786ccp1
-  },
-  { // Entry 979
-    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
-    -0x1.9a54999e786ccp1
-  },
-  { // Entry 980
-    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
-    0x1.bb282b074edbep1
-  },
-  { // Entry 981
-    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
-    -0x1.bb282b074edbep1
-  },
-  { // Entry 982
-    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
-    0x1.dbfbbc70254b0p1
-  },
-  { // Entry 983
-    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
-    -0x1.dbfbbc70254b0p1
-  },
-  { // Entry 984
-    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
-    0x1.fccf4dd8fbba2p1
-  },
-  { // Entry 985
-    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
-    -0x1.fccf4dd8fbba2p1
-  },
-  { // Entry 986
-    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
-    0x1.0ed16fa0e914ap2
-  },
-  { // Entry 987
-    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
-    -0x1.0ed16fa0e914ap2
-  },
-  { // Entry 988
-    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
-    0x1.1f3b3855544c3p2
-  },
-  { // Entry 989
-    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
-    -0x1.1f3b3855544c3p2
-  },
-  { // Entry 990
-    0x1.069107ae9302caf2068b48842afdf051p-5,
-    0x1.2fa50109bf83cp2
-  },
-  { // Entry 991
-    0x1.069107ae9302caf2068b48842afdf051p-5,
-    -0x1.2fa50109bf83cp2
-  },
-  { // Entry 992
-    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
-    0x1.400ec9be2abb5p2
-  },
-  { // Entry 993
-    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
-    -0x1.400ec9be2abb5p2
-  },
-  { // Entry 994
-    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
-    0x1.5078927295f2ep2
-  },
-  { // Entry 995
-    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
-    -0x1.5078927295f2ep2
-  },
-  { // Entry 996
-    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
-    0x1.60e25b27012a7p2
-  },
-  { // Entry 997
-    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
-    -0x1.60e25b27012a7p2
-  },
-  { // Entry 998
-    0x1.be1d7c3534c280dab43dced670330b63p-1,
-    0x1.714c23db6c620p2
-  },
-  { // Entry 999
-    0x1.be1d7c3534c280dab43dced670330b63p-1,
-    -0x1.714c23db6c620p2
-  },
-  { // Entry 1000
-    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
-    0x1.81b5ec8fd7999p2
-  },
-  { // Entry 1001
-    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
-    -0x1.81b5ec8fd7999p2
-  },
-  { // Entry 1002
-    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
-    0x1.effffffffffffp-5
-  },
-  { // Entry 1003
-    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
-    -0x1.effffffffffffp-5
-  },
-  { // Entry 1004
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    0x1.fp-5
-  },
-  { // Entry 1005
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    -0x1.fp-5
-  },
-  { // Entry 1006
-    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
-    0x1.f000000000001p-5
-  },
-  { // Entry 1007
-    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
-    -0x1.f000000000001p-5
-  },
-  { // Entry 1008
-    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
-    0x1.f7fffffffffffp-4
-  },
-  { // Entry 1009
-    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
-    -0x1.f7fffffffffffp-4
-  },
-  { // Entry 1010
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    0x1.f80p-4
-  },
-  { // Entry 1011
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    -0x1.f80p-4
-  },
-  { // Entry 1012
-    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
-    0x1.f800000000001p-4
-  },
-  { // Entry 1013
-    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
-    -0x1.f800000000001p-4
-  },
-  { // Entry 1014
-    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
-    0x1.4bfffffffffffp-3
-  },
-  { // Entry 1015
-    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
-    -0x1.4bfffffffffffp-3
-  },
-  { // Entry 1016
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    0x1.4c0p-3
-  },
-  { // Entry 1017
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    -0x1.4c0p-3
-  },
-  { // Entry 1018
-    0x1.f94984b2552e189ca658c51c42e907cep-1,
-    0x1.4c00000000001p-3
-  },
-  { // Entry 1019
-    0x1.f94984b2552e189ca658c51c42e907cep-1,
-    -0x1.4c00000000001p-3
-  },
-  { // Entry 1020
-    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
-    0x1.3333333333332p-2
-  },
-  { // Entry 1021
-    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
-    -0x1.3333333333332p-2
-  },
-  { // Entry 1022
-    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
-    0x1.3333333333333p-2
-  },
-  { // Entry 1023
-    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
-    -0x1.3333333333333p-2
-  },
-  { // Entry 1024
-    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
-    0x1.3333333333334p-2
-  },
-  { // Entry 1025
-    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
-    -0x1.3333333333334p-2
-  },
-  { // Entry 1026
-    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
-    0x1.594317acc4ef8p-1
-  },
-  { // Entry 1027
-    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
-    -0x1.594317acc4ef8p-1
-  },
-  { // Entry 1028
-    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
-    0x1.594317acc4ef9p-1
-  },
-  { // Entry 1029
-    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
-    -0x1.594317acc4ef9p-1
-  },
-  { // Entry 1030
-    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
-    0x1.594317acc4efap-1
-  },
-  { // Entry 1031
-    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
-    -0x1.594317acc4efap-1
-  },
-  { // Entry 1032
-    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
-    0x1.8ffffffffffffp-1
-  },
-  { // Entry 1033
-    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
-    -0x1.8ffffffffffffp-1
-  },
-  { // Entry 1034
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    0x1.9p-1
-  },
-  { // Entry 1035
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    -0x1.9p-1
-  },
-  { // Entry 1036
-    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
-    0x1.9000000000001p-1
-  },
-  { // Entry 1037
-    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
-    -0x1.9000000000001p-1
-  },
-  { // Entry 1038
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 1039
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074
-  },
-  { // Entry 1040
-    0x1.p0,
-    -0.0
-  },
-  { // Entry 1041
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074
-  },
-  { // Entry 1042
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 1043
-    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
-    0x1.921fb54442d17p-5
-  },
-  { // Entry 1044
-    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
-    -0x1.921fb54442d17p-5
-  },
-  { // Entry 1045
-    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
-    0x1.921fb54442d18p-5
-  },
-  { // Entry 1046
-    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
-    -0x1.921fb54442d18p-5
-  },
-  { // Entry 1047
-    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
-    0x1.921fb54442d19p-5
-  },
-  { // Entry 1048
-    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
-    -0x1.921fb54442d19p-5
-  },
-  { // Entry 1049
-    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
-    0x1.921fb54442d17p-4
-  },
-  { // Entry 1050
-    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
-    -0x1.921fb54442d17p-4
-  },
-  { // Entry 1051
-    0x1.fd88da3d125259ee594b5705767ab649p-1,
-    0x1.921fb54442d18p-4
-  },
-  { // Entry 1052
-    0x1.fd88da3d125259ee594b5705767ab649p-1,
-    -0x1.921fb54442d18p-4
-  },
-  { // Entry 1053
-    0x1.fd88da3d125259bc29fddeb20e228056p-1,
-    0x1.921fb54442d19p-4
-  },
-  { // Entry 1054
-    0x1.fd88da3d125259bc29fddeb20e228056p-1,
-    -0x1.921fb54442d19p-4
-  },
-  { // Entry 1055
-    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
-    0x1.921fb54442d17p-3
-  },
-  { // Entry 1056
-    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
-    -0x1.921fb54442d17p-3
-  },
-  { // Entry 1057
-    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
-    0x1.921fb54442d18p-3
-  },
-  { // Entry 1058
-    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
-    -0x1.921fb54442d18p-3
-  },
-  { // Entry 1059
-    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
-    0x1.921fb54442d19p-3
-  },
-  { // Entry 1060
-    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
-    -0x1.921fb54442d19p-3
-  },
-  { // Entry 1061
-    0x1.d906bcf328d46672d9c1a865898e5966p-1,
-    0x1.921fb54442d17p-2
-  },
-  { // Entry 1062
-    0x1.d906bcf328d46672d9c1a865898e5966p-1,
-    -0x1.921fb54442d17p-2
-  },
-  { // Entry 1063
-    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
-    0x1.921fb54442d18p-2
-  },
-  { // Entry 1064
-    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
-    -0x1.921fb54442d18p-2
-  },
-  { // Entry 1065
-    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
-    0x1.921fb54442d19p-2
-  },
-  { // Entry 1066
-    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
-    -0x1.921fb54442d19p-2
-  },
-  { // Entry 1067
-    0x1.6a09e667f3bcd777b6461376ab523242p-1,
-    0x1.921fb54442d17p-1
-  },
-  { // Entry 1068
-    0x1.6a09e667f3bcd777b6461376ab523242p-1,
-    -0x1.921fb54442d17p-1
-  },
-  { // Entry 1069
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 1070
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    -0x1.921fb54442d18p-1
-  },
-  { // Entry 1071
-    0x1.6a09e667f3bcc0d717df943adef39253p-1,
-    0x1.921fb54442d19p-1
-  },
-  { // Entry 1072
-    0x1.6a09e667f3bcc0d717df943adef39253p-1,
-    -0x1.921fb54442d19p-1
-  },
-  { // Entry 1073
-    0x1.469898cc51701b839a252049c0b8b50bp-52,
-    0x1.921fb54442d17p0
-  },
-  { // Entry 1074
-    0x1.469898cc51701b839a252049c0b8b50bp-52,
-    -0x1.921fb54442d17p0
-  },
-  { // Entry 1075
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 1076
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 1077
-    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
-    0x1.921fb54442d19p0
-  },
-  { // Entry 1078
-    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
-    -0x1.921fb54442d19p0
-  },
-  { // Entry 1079
-    -0x1.fffffffffffffffffffffffff97d5bffp-1,
-    0x1.921fb54442d17p1
-  },
-  { // Entry 1080
-    -0x1.fffffffffffffffffffffffff97d5bffp-1,
-    -0x1.921fb54442d17p1
-  },
-  { // Entry 1081
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 1082
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    -0x1.921fb54442d18p1
-  },
-  { // Entry 1083
-    -0x1.fffffffffffffffffffffffffde6e58cp-1,
-    0x1.921fb54442d19p1
-  },
-  { // Entry 1084
-    -0x1.fffffffffffffffffffffffffde6e58cp-1,
-    -0x1.921fb54442d19p1
-  },
-  { // Entry 1085
-    0x1.ffffffffffffffffffffffffe5f56ffep-1,
-    0x1.921fb54442d17p2
-  },
-  { // Entry 1086
-    0x1.ffffffffffffffffffffffffe5f56ffep-1,
-    -0x1.921fb54442d17p2
-  },
-  { // Entry 1087
-    0x1.fffffffffffffffffffffffffec88317p-1,
-    0x1.921fb54442d18p2
-  },
-  { // Entry 1088
-    0x1.fffffffffffffffffffffffffec88317p-1,
-    -0x1.921fb54442d18p2
-  },
-  { // Entry 1089
-    0x1.fffffffffffffffffffffffff79b9631p-1,
-    0x1.921fb54442d19p2
-  },
-  { // Entry 1090
-    0x1.fffffffffffffffffffffffff79b9631p-1,
-    -0x1.921fb54442d19p2
-  },
-  { // Entry 1091
-    0x1.ffffffffffffffffffffffff97d5bff8p-1,
-    0x1.921fb54442d17p3
-  },
-  { // Entry 1092
-    0x1.ffffffffffffffffffffffff97d5bff8p-1,
-    -0x1.921fb54442d17p3
-  },
-  { // Entry 1093
-    0x1.fffffffffffffffffffffffffb220c5ep-1,
-    0x1.921fb54442d18p3
-  },
-  { // Entry 1094
-    0x1.fffffffffffffffffffffffffb220c5ep-1,
-    -0x1.921fb54442d18p3
-  },
-  { // Entry 1095
-    0x1.ffffffffffffffffffffffffde6e58c4p-1,
-    0x1.921fb54442d19p3
-  },
-  { // Entry 1096
-    0x1.ffffffffffffffffffffffffde6e58c4p-1,
-    -0x1.921fb54442d19p3
-  },
-  { // Entry 1097
-    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
-    0x1.921fb54442d17p4
-  },
-  { // Entry 1098
-    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
-    -0x1.921fb54442d17p4
-  },
-  { // Entry 1099
-    0x1.ffffffffffffffffffffffffec88317ap-1,
-    0x1.921fb54442d18p4
-  },
-  { // Entry 1100
-    0x1.ffffffffffffffffffffffffec88317ap-1,
-    -0x1.921fb54442d18p4
-  },
-  { // Entry 1101
-    0x1.ffffffffffffffffffffffff79b96313p-1,
-    0x1.921fb54442d19p4
-  },
-  { // Entry 1102
-    0x1.ffffffffffffffffffffffff79b96313p-1,
-    -0x1.921fb54442d19p4
-  },
-  { // Entry 1103
-    0x1.fffffffffffffffffffffff97d5bff87p-1,
-    0x1.921fb54442d17p5
-  },
-  { // Entry 1104
-    0x1.fffffffffffffffffffffff97d5bff87p-1,
-    -0x1.921fb54442d17p5
-  },
-  { // Entry 1105
-    0x1.ffffffffffffffffffffffffb220c5e9p-1,
-    0x1.921fb54442d18p5
-  },
-  { // Entry 1106
-    0x1.ffffffffffffffffffffffffb220c5e9p-1,
-    -0x1.921fb54442d18p5
-  },
-  { // Entry 1107
-    0x1.fffffffffffffffffffffffde6e58c4cp-1,
-    0x1.921fb54442d19p5
-  },
-  { // Entry 1108
-    0x1.fffffffffffffffffffffffde6e58c4cp-1,
-    -0x1.921fb54442d19p5
-  },
-  { // Entry 1109
-    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
-    0x1.921fb54442d17p6
-  },
-  { // Entry 1110
-    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
-    -0x1.921fb54442d17p6
-  },
-  { // Entry 1111
-    0x1.fffffffffffffffffffffffec88317a7p-1,
-    0x1.921fb54442d18p6
-  },
-  { // Entry 1112
-    0x1.fffffffffffffffffffffffec88317a7p-1,
-    -0x1.921fb54442d18p6
-  },
-  { // Entry 1113
-    0x1.fffffffffffffffffffffff79b963131p-1,
-    0x1.921fb54442d19p6
-  },
-  { // Entry 1114
-    0x1.fffffffffffffffffffffff79b963131p-1,
-    -0x1.921fb54442d19p6
-  },
-  { // Entry 1115
-    0x1.ffffffffffffffffffffff97d5bff874p-1,
-    0x1.921fb54442d17p7
-  },
-  { // Entry 1116
-    0x1.ffffffffffffffffffffff97d5bff874p-1,
-    -0x1.921fb54442d17p7
-  },
-  { // Entry 1117
-    0x1.fffffffffffffffffffffffb220c5e9dp-1,
-    0x1.921fb54442d18p7
-  },
-  { // Entry 1118
-    0x1.fffffffffffffffffffffffb220c5e9dp-1,
-    -0x1.921fb54442d18p7
-  },
-  { // Entry 1119
-    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
-    0x1.921fb54442d19p7
-  },
-  { // Entry 1120
-    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
-    -0x1.921fb54442d19p7
-  },
-  { // Entry 1121
-    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
-    0x1.2d97c7f3321d1p1
-  },
-  { // Entry 1122
-    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
-    -0x1.2d97c7f3321d1p1
-  },
-  { // Entry 1123
-    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
-    0x1.2d97c7f3321d2p1
-  },
-  { // Entry 1124
-    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
-    -0x1.2d97c7f3321d2p1
-  },
-  { // Entry 1125
-    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
-    0x1.2d97c7f3321d3p1
-  },
-  { // Entry 1126
-    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
-    -0x1.2d97c7f3321d3p1
-  },
-  { // Entry 1127
-    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
-    0x1.f6a7a2955385dp1
-  },
-  { // Entry 1128
-    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
-    -0x1.f6a7a2955385dp1
-  },
-  { // Entry 1129
-    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
-    0x1.f6a7a2955385ep1
-  },
-  { // Entry 1130
-    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
-    -0x1.f6a7a2955385ep1
-  },
-  { // Entry 1131
-    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
-    0x1.f6a7a2955385fp1
-  },
-  { // Entry 1132
-    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
-    -0x1.f6a7a2955385fp1
-  },
-  { // Entry 1133
-    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
-    0x1.2d97c7f3321d1p2
-  },
-  { // Entry 1134
-    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
-    -0x1.2d97c7f3321d1p2
-  },
-  { // Entry 1135
-    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
-    0x1.2d97c7f3321d2p2
-  },
-  { // Entry 1136
-    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
-    -0x1.2d97c7f3321d2p2
-  },
-  { // Entry 1137
-    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
-    0x1.2d97c7f3321d3p2
-  },
-  { // Entry 1138
-    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
-    -0x1.2d97c7f3321d3p2
-  },
-  { // Entry 1139
-    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
-    0x1.5fdbbe9bba774p2
-  },
-  { // Entry 1140
-    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
-    -0x1.5fdbbe9bba774p2
-  },
-  { // Entry 1141
-    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
-    0x1.5fdbbe9bba775p2
-  },
-  { // Entry 1142
-    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
-    -0x1.5fdbbe9bba775p2
-  },
-  { // Entry 1143
-    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
-    0x1.5fdbbe9bba776p2
-  },
-  { // Entry 1144
-    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
-    -0x1.5fdbbe9bba776p2
-  },
-  { // Entry 1145
-    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
-    0x1.c463abeccb2bap2
-  },
-  { // Entry 1146
-    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
-    -0x1.c463abeccb2bap2
-  },
-  { // Entry 1147
-    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
-    0x1.c463abeccb2bbp2
-  },
-  { // Entry 1148
-    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
-    -0x1.c463abeccb2bbp2
-  },
-  { // Entry 1149
-    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
-    0x1.c463abeccb2bcp2
-  },
-  { // Entry 1150
-    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
-    -0x1.c463abeccb2bcp2
-  },
-  { // Entry 1151
-    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
-    0x1.f6a7a2955385dp2
-  },
-  { // Entry 1152
-    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
-    -0x1.f6a7a2955385dp2
-  },
-  { // Entry 1153
-    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
-    0x1.f6a7a2955385ep2
-  },
-  { // Entry 1154
-    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
-    -0x1.f6a7a2955385ep2
-  },
-  { // Entry 1155
-    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
-    0x1.f6a7a2955385fp2
-  },
-  { // Entry 1156
-    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
-    -0x1.f6a7a2955385fp2
-  },
-  { // Entry 1157
-    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
-    0x1.1475cc9eedeffp3
-  },
-  { // Entry 1158
-    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
-    -0x1.1475cc9eedeffp3
-  },
-  { // Entry 1159
-    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
-    0x1.1475cc9eedfp3
-  },
-  { // Entry 1160
-    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
-    -0x1.1475cc9eedfp3
-  },
-  { // Entry 1161
-    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
-    0x1.1475cc9eedf01p3
-  },
-  { // Entry 1162
-    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
-    -0x1.1475cc9eedf01p3
-  },
-  { // Entry 1163
-    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
-    0x1.2d97c7f3321d1p3
-  },
-  { // Entry 1164
-    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
-    -0x1.2d97c7f3321d1p3
-  },
-  { // Entry 1165
-    -0x1.fffffffffffffffffffffffffd4326f5p-1,
-    0x1.2d97c7f3321d2p3
-  },
-  { // Entry 1166
-    -0x1.fffffffffffffffffffffffffd4326f5p-1,
-    -0x1.2d97c7f3321d2p3
-  },
-  { // Entry 1167
-    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
-    0x1.2d97c7f3321d3p3
-  },
-  { // Entry 1168
-    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
-    -0x1.2d97c7f3321d3p3
-  },
-  { // Entry 1169
-    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
-    0x1.46b9c347764a2p3
-  },
-  { // Entry 1170
-    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
-    -0x1.46b9c347764a2p3
-  },
-  { // Entry 1171
-    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
-    0x1.46b9c347764a3p3
-  },
-  { // Entry 1172
-    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
-    -0x1.46b9c347764a3p3
-  },
-  { // Entry 1173
-    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
-    0x1.46b9c347764a4p3
-  },
-  { // Entry 1174
-    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
-    -0x1.46b9c347764a4p3
-  },
-  { // Entry 1175
-    -0x1.3dc585b2c742181326e07c40748873bbp-49,
-    0x1.5fdbbe9bba774p3
-  },
-  { // Entry 1176
-    -0x1.3dc585b2c742181326e07c40748873bbp-49,
-    -0x1.5fdbbe9bba774p3
-  },
-  { // Entry 1177
-    -0x1.ee2c2d963a10c0993703e20446463301p-52,
-    0x1.5fdbbe9bba775p3
-  },
-  { // Entry 1178
-    -0x1.ee2c2d963a10c0993703e20446463301p-52,
-    -0x1.5fdbbe9bba775p3
-  },
-  { // Entry 1179
-    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
-    0x1.5fdbbe9bba776p3
-  },
-  { // Entry 1180
-    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
-    -0x1.5fdbbe9bba776p3
-  },
-  { // Entry 1181
-    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
-    0x1.78fdb9effea45p3
-  },
-  { // Entry 1182
-    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
-    -0x1.78fdb9effea45p3
-  },
-  { // Entry 1183
-    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
-    0x1.78fdb9effea46p3
-  },
-  { // Entry 1184
-    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
-    -0x1.78fdb9effea46p3
-  },
-  { // Entry 1185
-    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
-    0x1.78fdb9effea47p3
-  },
-  { // Entry 1186
-    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
-    -0x1.78fdb9effea47p3
-  },
-  { // Entry 1187
-    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
-    0x1.ab41b09886fe8p3
-  },
-  { // Entry 1188
-    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
-    -0x1.ab41b09886fe8p3
-  },
-  { // Entry 1189
-    0x1.6a09e667f3bd58952228d7e58701d299p-1,
-    0x1.ab41b09886fe9p3
-  },
-  { // Entry 1190
-    0x1.6a09e667f3bd58952228d7e58701d299p-1,
-    -0x1.ab41b09886fe9p3
-  },
-  { // Entry 1191
-    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
-    0x1.ab41b09886feap3
-  },
-  { // Entry 1192
-    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
-    -0x1.ab41b09886feap3
-  },
-  { // Entry 1193
-    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
-    0x1.c463abeccb2bap3
-  },
-  { // Entry 1194
-    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
-    -0x1.c463abeccb2bap3
-  },
-  { // Entry 1195
-    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
-    0x1.c463abeccb2bbp3
-  },
-  { // Entry 1196
-    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
-    -0x1.c463abeccb2bbp3
-  },
-  { // Entry 1197
-    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
-    0x1.c463abeccb2bcp3
-  },
-  { // Entry 1198
-    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
-    -0x1.c463abeccb2bcp3
-  },
-  { // Entry 1199
-    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
-    0x1.dd85a7410f58bp3
-  },
-  { // Entry 1200
-    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
-    -0x1.dd85a7410f58bp3
-  },
-  { // Entry 1201
-    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
-    0x1.dd85a7410f58cp3
-  },
-  { // Entry 1202
-    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
-    -0x1.dd85a7410f58cp3
-  },
-  { // Entry 1203
-    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
-    0x1.dd85a7410f58dp3
-  },
-  { // Entry 1204
-    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
-    -0x1.dd85a7410f58dp3
-  },
-  { // Entry 1205
-    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
-    0x1.f6a7a2955385dp3
-  },
-  { // Entry 1206
-    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
-    -0x1.f6a7a2955385dp3
-  },
-  { // Entry 1207
-    -0x1.fffffffffffffffffffffffff8653353p-1,
-    0x1.f6a7a2955385ep3
-  },
-  { // Entry 1208
-    -0x1.fffffffffffffffffffffffff8653353p-1,
-    -0x1.f6a7a2955385ep3
-  },
-  { // Entry 1209
-    -0x1.ffffffffffffffffffffffffe48492d3p-1,
-    0x1.f6a7a2955385fp3
-  },
-  { // Entry 1210
-    -0x1.ffffffffffffffffffffffffe48492d3p-1,
-    -0x1.f6a7a2955385fp3
-  },
-  { // Entry 1211
-    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
-    0x1.07e4cef4cbd96p4
-  },
-  { // Entry 1212
-    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
-    -0x1.07e4cef4cbd96p4
-  },
-  { // Entry 1213
-    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
-    0x1.07e4cef4cbd97p4
-  },
-  { // Entry 1214
-    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
-    -0x1.07e4cef4cbd97p4
-  },
-  { // Entry 1215
-    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
-    0x1.07e4cef4cbd98p4
-  },
-  { // Entry 1216
-    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
-    -0x1.07e4cef4cbd98p4
-  },
-  { // Entry 1217
-    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
-    0x1.1475cc9eedeffp4
-  },
-  { // Entry 1218
-    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
-    -0x1.1475cc9eedeffp4
-  },
-  { // Entry 1219
-    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
-    0x1.1475cc9eedfp4
-  },
-  { // Entry 1220
-    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
-    -0x1.1475cc9eedfp4
-  },
-  { // Entry 1221
-    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
-    0x1.1475cc9eedf01p4
-  },
-  { // Entry 1222
-    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
-    -0x1.1475cc9eedf01p4
-  },
-  { // Entry 1223
-    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
-    0x1.2106ca4910068p4
-  },
-  { // Entry 1224
-    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
-    -0x1.2106ca4910068p4
-  },
-  { // Entry 1225
-    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
-    0x1.2106ca4910069p4
-  },
-  { // Entry 1226
-    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
-    -0x1.2106ca4910069p4
-  },
-  { // Entry 1227
-    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
-    0x1.2106ca491006ap4
-  },
-  { // Entry 1228
-    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
-    -0x1.2106ca491006ap4
-  },
-  { // Entry 1229
-    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
-    0x1.2d97c7f3321d1p4
-  },
-  { // Entry 1230
-    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
-    -0x1.2d97c7f3321d1p4
-  },
-  { // Entry 1231
-    0x1.fffffffffffffffffffffffff50c9bd4p-1,
-    0x1.2d97c7f3321d2p4
-  },
-  { // Entry 1232
-    0x1.fffffffffffffffffffffffff50c9bd4p-1,
-    -0x1.2d97c7f3321d2p4
-  },
-  { // Entry 1233
-    0x1.ffffffffffffffffffffffff5ef18107p-1,
-    0x1.2d97c7f3321d3p4
-  },
-  { // Entry 1234
-    0x1.ffffffffffffffffffffffff5ef18107p-1,
-    -0x1.2d97c7f3321d3p4
-  },
-  { // Entry 1235
-    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
-    0x1.3a28c59d54339p4
-  },
-  { // Entry 1236
-    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
-    -0x1.3a28c59d54339p4
-  },
-  { // Entry 1237
-    0x1.6a09e667f3be268fb61ad5523532e298p-1,
-    0x1.3a28c59d5433ap4
-  },
-  { // Entry 1238
-    0x1.6a09e667f3be268fb61ad5523532e298p-1,
-    -0x1.3a28c59d5433ap4
-  },
-  { // Entry 1239
-    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
-    0x1.3a28c59d5433bp4
-  },
-  { // Entry 1240
-    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
-    -0x1.3a28c59d5433bp4
-  },
-  { // Entry 1241
-    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
-    0x1.46b9c347764a2p4
-  },
-  { // Entry 1242
-    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
-    -0x1.46b9c347764a2p4
-  },
-  { // Entry 1243
-    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
-    0x1.46b9c347764a3p4
-  },
-  { // Entry 1244
-    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
-    -0x1.46b9c347764a3p4
-  },
-  { // Entry 1245
-    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
-    0x1.46b9c347764a4p4
-  },
-  { // Entry 1246
-    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
-    -0x1.46b9c347764a4p4
-  },
-  { // Entry 1247
-    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
-    0x1.534ac0f19860bp4
-  },
-  { // Entry 1248
-    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
-    -0x1.534ac0f19860bp4
-  },
-  { // Entry 1249
-    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
-    0x1.534ac0f19860cp4
-  },
-  { // Entry 1250
-    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
-    -0x1.534ac0f19860cp4
-  },
-  { // Entry 1251
-    -0x1.6a09e667f3bd84532147be323eddac01p-1,
-    0x1.534ac0f19860dp4
-  },
-  { // Entry 1252
-    -0x1.6a09e667f3bd84532147be323eddac01p-1,
-    -0x1.534ac0f19860dp4
-  },
-  { // Entry 1253
-    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
-    0x1.5fdbbe9bba774p4
-  },
-  { // Entry 1254
-    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
-    -0x1.5fdbbe9bba774p4
-  },
-  { // Entry 1255
-    -0x1.fffffffffffffffffffffffff11845e1p-1,
-    0x1.5fdbbe9bba775p4
-  },
-  { // Entry 1256
-    -0x1.fffffffffffffffffffffffff11845e1p-1,
-    -0x1.5fdbbe9bba775p4
-  },
-  { // Entry 1257
-    -0x1.ffffffffffffffffffffffff6ca35147p-1,
-    0x1.5fdbbe9bba776p4
-  },
-  { // Entry 1258
-    -0x1.ffffffffffffffffffffffff6ca35147p-1,
-    -0x1.5fdbbe9bba776p4
-  },
-  { // Entry 1259
-    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
-    0x1.6c6cbc45dc8dcp4
-  },
-  { // Entry 1260
-    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
-    -0x1.6c6cbc45dc8dcp4
-  },
-  { // Entry 1261
-    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
-    0x1.6c6cbc45dc8ddp4
-  },
-  { // Entry 1262
-    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
-    -0x1.6c6cbc45dc8ddp4
-  },
-  { // Entry 1263
-    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
-    0x1.6c6cbc45dc8dep4
-  },
-  { // Entry 1264
-    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
-    -0x1.6c6cbc45dc8dep4
-  },
-  { // Entry 1265
-    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
-    0x1.78fdb9effea45p4
-  },
-  { // Entry 1266
-    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
-    -0x1.78fdb9effea45p4
-  },
-  { // Entry 1267
-    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
-    0x1.78fdb9effea46p4
-  },
-  { // Entry 1268
-    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
-    -0x1.78fdb9effea46p4
-  },
-  { // Entry 1269
-    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
-    0x1.78fdb9effea47p4
-  },
-  { // Entry 1270
-    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
-    -0x1.78fdb9effea47p4
-  },
-  { // Entry 1271
-    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
-    0x1.858eb79a20baep4
-  },
-  { // Entry 1272
-    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
-    -0x1.858eb79a20baep4
-  },
-  { // Entry 1273
-    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
-    0x1.858eb79a20bafp4
-  },
-  { // Entry 1274
-    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
-    -0x1.858eb79a20bafp4
-  },
-  { // Entry 1275
-    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
-    0x1.858eb79a20bb0p4
-  },
-  { // Entry 1276
-    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
-    -0x1.858eb79a20bb0p4
-  },
-  { // Entry 1277
-    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
-    0x1.fffffffffffffp62
-  },
-  { // Entry 1278
-    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
-    -0x1.fffffffffffffp62
-  },
-  { // Entry 1279
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    0x1.0p63
-  },
-  { // Entry 1280
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    -0x1.0p63
-  },
-  { // Entry 1281
-    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
-    0x1.0000000000001p63
-  },
-  { // Entry 1282
-    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
-    -0x1.0000000000001p63
-  },
-  { // Entry 1283
-    0x1.4ab650b8c60734385375e22603fcdb10p-1,
-    0x1.fffffffffffffp26
-  },
-  { // Entry 1284
-    0x1.4ab650b8c60734385375e22603fcdb10p-1,
-    -0x1.fffffffffffffp26
-  },
-  { // Entry 1285
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    0x1.0p27
-  },
-  { // Entry 1286
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    -0x1.0p27
-  },
-  { // Entry 1287
-    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
-    0x1.0000000000001p27
-  },
-  { // Entry 1288
-    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
-    -0x1.0000000000001p27
-  },
-  { // Entry 1289
-    0x1.40ad67e777b1df0195189f50a8c26345p-1,
-    0x1.fffffffffffffp23
-  },
-  { // Entry 1290
-    0x1.40ad67e777b1df0195189f50a8c26345p-1,
-    -0x1.fffffffffffffp23
-  },
-  { // Entry 1291
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    0x1.0p24
-  },
-  { // Entry 1292
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    -0x1.0p24
-  },
-  { // Entry 1293
-    0x1.40ad680ce2f924d716769d1064bc8defp-1,
-    0x1.0000000000001p24
-  },
-  { // Entry 1294
-    0x1.40ad680ce2f924d716769d1064bc8defp-1,
-    -0x1.0000000000001p24
-  },
-  { // Entry 1295
-    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
-    0x1.fffffffffffffp1
-  },
-  { // Entry 1296
-    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
-    -0x1.fffffffffffffp1
-  },
-  { // Entry 1297
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    0x1.0p2
-  },
-  { // Entry 1298
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    -0x1.0p2
-  },
-  { // Entry 1299
-    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
-    0x1.0000000000001p2
-  },
-  { // Entry 1300
-    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
-    -0x1.0000000000001p2
-  },
-  { // Entry 1301
-    -0x1.aa2265753720101145230952e61c6f2cp-2,
-    0x1.fffffffffffffp0
-  },
-  { // Entry 1302
-    -0x1.aa2265753720101145230952e61c6f2cp-2,
-    -0x1.fffffffffffffp0
-  },
-  { // Entry 1303
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    0x1.0p1
-  },
-  { // Entry 1304
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    -0x1.0p1
-  },
-  { // Entry 1305
-    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
-    0x1.0000000000001p1
-  },
-  { // Entry 1306
-    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
-    -0x1.0000000000001p1
-  },
-  { // Entry 1307
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 1308
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 1309
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.0p0
-  },
-  { // Entry 1310
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.0p0
-  },
-  { // Entry 1311
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    0x1.0000000000001p0
-  },
-  { // Entry 1312
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    -0x1.0000000000001p0
-  },
-  { // Entry 1313
-    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
-    0x1.fffffffffffffp-2
-  },
-  { // Entry 1314
-    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
-    -0x1.fffffffffffffp-2
-  },
-  { // Entry 1315
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    0x1.0p-1
-  },
-  { // Entry 1316
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    -0x1.0p-1
-  },
-  { // Entry 1317
-    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
-    0x1.0000000000001p-1
-  },
-  { // Entry 1318
-    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
-    -0x1.0000000000001p-1
-  },
-  { // Entry 1319
-    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
-    0x1.fffffffffffffp-3
-  },
-  { // Entry 1320
-    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
-    -0x1.fffffffffffffp-3
-  },
-  { // Entry 1321
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    0x1.0p-2
-  },
-  { // Entry 1322
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    -0x1.0p-2
-  },
-  { // Entry 1323
-    0x1.f01549f7deea155458b92a4167aec7ffp-1,
-    0x1.0000000000001p-2
-  },
-  { // Entry 1324
-    0x1.f01549f7deea155458b92a4167aec7ffp-1,
-    -0x1.0000000000001p-2
-  },
-  { // Entry 1325
-    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
-    0x1.fffffffffffffp-4
-  },
-  { // Entry 1326
-    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
-    -0x1.fffffffffffffp-4
-  },
-  { // Entry 1327
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    0x1.0p-3
-  },
-  { // Entry 1328
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    -0x1.0p-3
-  },
-  { // Entry 1329
-    0x1.fc015527d5bd365a92186b203507f9adp-1,
-    0x1.0000000000001p-3
-  },
-  { // Entry 1330
-    0x1.fc015527d5bd365a92186b203507f9adp-1,
-    -0x1.0000000000001p-3
-  },
-  { // Entry 1331
-    0x1.ff0015549f4d34da0b745dc7433145efp-1,
-    0x1.fffffffffffffp-5
-  },
-  { // Entry 1332
-    0x1.ff0015549f4d34da0b745dc7433145efp-1,
-    -0x1.fffffffffffffp-5
-  },
-  { // Entry 1333
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    0x1.0p-4
-  },
-  { // Entry 1334
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    -0x1.0p-4
-  },
-  { // Entry 1335
-    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
-    0x1.0000000000001p-4
-  },
-  { // Entry 1336
-    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
-    -0x1.0000000000001p-4
-  },
-  { // Entry 1337
-    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
-    0x1.fffffffffffffp-6
-  },
-  { // Entry 1338
-    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
-    -0x1.fffffffffffffp-6
-  },
-  { // Entry 1339
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    0x1.0p-5
-  },
-  { // Entry 1340
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    -0x1.0p-5
-  },
-  { // Entry 1341
-    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
-    0x1.0000000000001p-5
-  },
-  { // Entry 1342
-    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
-    -0x1.0000000000001p-5
-  },
-  { // Entry 1343
-    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
-    0x1.fffffffffffffp-7
-  },
-  { // Entry 1344
-    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
-    -0x1.fffffffffffffp-7
-  },
-  { // Entry 1345
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    0x1.0p-6
-  },
-  { // Entry 1346
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    -0x1.0p-6
-  },
-  { // Entry 1347
-    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
-    0x1.0000000000001p-6
-  },
-  { // Entry 1348
-    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
-    -0x1.0000000000001p-6
-  },
-  { // Entry 1349
-    0x1.fffffff00000001555565549f49c9f4dp-1,
-    0x1.fffffffffffffp-15
-  },
-  { // Entry 1350
-    0x1.fffffff00000001555565549f49c9f4dp-1,
-    -0x1.fffffffffffffp-15
-  },
-  { // Entry 1351
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    0x1.0p-14
-  },
-  { // Entry 1352
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    -0x1.0p-14
-  },
-  { // Entry 1353
-    0x1.fffffff00000001555535549f4a49f4dp-1,
-    0x1.0000000000001p-14
-  },
-  { // Entry 1354
-    0x1.fffffff00000001555535549f4a49f4dp-1,
-    -0x1.0000000000001p-14
-  },
-  { // Entry 1355
-    0x1.fffffffffffffc000000000000415555p-1,
-    0x1.fffffffffffffp-28
-  },
-  { // Entry 1356
-    0x1.fffffffffffffc000000000000415555p-1,
-    -0x1.fffffffffffffp-28
-  },
-  { // Entry 1357
-    0x1.fffffffffffffc000000000000015555p-1,
-    0x1.0p-27
-  },
-  { // Entry 1358
-    0x1.fffffffffffffc000000000000015555p-1,
-    -0x1.0p-27
-  },
-  { // Entry 1359
-    0x1.fffffffffffffbffffffffffff815555p-1,
-    0x1.0000000000001p-27
-  },
-  { // Entry 1360
-    0x1.fffffffffffffbffffffffffff815555p-1,
-    -0x1.0000000000001p-27
-  },
-  { // Entry 1361
-    0x1.fffffffffffffff00000000000010015p-1,
-    0x1.fffffffffffffp-31
-  },
-  { // Entry 1362
-    0x1.fffffffffffffff00000000000010015p-1,
-    -0x1.fffffffffffffp-31
-  },
-  { // Entry 1363
-    0x1.fffffffffffffff00000000000000015p-1,
-    0x1.0p-30
-  },
-  { // Entry 1364
-    0x1.fffffffffffffff00000000000000015p-1,
-    -0x1.0p-30
-  },
-  { // Entry 1365
-    0x1.ffffffffffffffeffffffffffffe0015p-1,
-    0x1.0000000000001p-30
-  },
-  { // Entry 1366
-    0x1.ffffffffffffffeffffffffffffe0015p-1,
-    -0x1.0000000000001p-30
-  },
-  { // Entry 1367
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1368
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1369
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1370
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1371
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1372
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1373
-    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
-    0x1.ffffffffffffep1023
-  },
-  { // Entry 1374
-    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
-    -0x1.ffffffffffffep1023
-  },
-  { // Entry 1375
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 1376
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    -0x1.921fb54442d18p1
-  },
-  { // Entry 1377
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 1378
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 1379
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    0x1.0000000000001p0
-  },
-  { // Entry 1380
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    -0x1.0000000000001p0
-  },
-  { // Entry 1381
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.0p0
-  },
-  { // Entry 1382
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.0p0
-  },
-  { // Entry 1383
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 1384
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 1385
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 1386
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    -0x1.921fb54442d18p-1
-  },
-  { // Entry 1387
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 1388
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 1389
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1022
-  },
-  { // Entry 1390
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1022
-  },
-  { // Entry 1391
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 1392
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 1393
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffcp-1023
-  },
-  { // Entry 1394
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffcp-1023
-  },
-  { // Entry 1395
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1073
-  },
-  { // Entry 1396
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1073
-  },
-  { // Entry 1397
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074
-  },
-  { // Entry 1398
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 1399
-    0x1.p0,
-    0.0
-  },
-  { // Entry 1400
-    0x1.p0,
-    -0.0
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_cos, cos_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_cos_intel_data)/sizeof(cos_intel_data_t); i++) {
-    EXPECT_DOUBLE_EQ(g_cos_intel_data[i].expected, cos(g_cos_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_cosf_test.cpp b/tests/math_cosf_test.cpp
deleted file mode 100644
index ea95ff3..0000000
--- a/tests/math_cosf_test.cpp
+++ /dev/null
@@ -1,4355 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  float expected;
-  float call_data;
-} cosf_intel_data_t;
-
-static cosf_intel_data_t g_cosf_intel_data[] = {
-  { // Entry 0
-    0x1.bc7b66ffb7689d646dd1af83e9661d2dp-1,
-    -0x1.09ebacp-1
-  },
-  { // Entry 1
-    0x1.bc7b66ffb7689d646dd1af83e9661d2dp-1,
-    0x1.09ebacp-1
-  },
-  { // Entry 2
-    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
-    -0x1.156564p4
-  },
-  { // Entry 3
-    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
-    0x1.156564p4
-  },
-  { // Entry 4
-    -0x1.c11bb2f056552ca4cdb6c5a0cf71509dp-8,
-    -0x1.406a40p6
-  },
-  { // Entry 5
-    -0x1.c11bb2f056552ca4cdb6c5a0cf71509dp-8,
-    0x1.406a40p6
-  },
-  { // Entry 6
-    0x1.ff836cff97077bf489aadc5f349a9fb9p-1,
-    -0x1.653078p-5
-  },
-  { // Entry 7
-    0x1.ff836cff97077bf489aadc5f349a9fb9p-1,
-    0x1.653078p-5
-  },
-  { // Entry 8
-    0x1.b29cd4f9da2964e8c6bb5693387d3f3bp-5,
-    -0x1.6c0008p5
-  },
-  { // Entry 9
-    0x1.b29cd4f9da2964e8c6bb5693387d3f3bp-5,
-    0x1.6c0008p5
-  },
-  { // Entry 10
-    0x1.df40d3f650f6c94390a3ca5d8d9b48c1p-1,
-    -0x1.703824p-2
-  },
-  { // Entry 11
-    0x1.df40d3f650f6c94390a3ca5d8d9b48c1p-1,
-    0x1.703824p-2
-  },
-  { // Entry 12
-    0x1.f76316f541e10ef15d57c5a23775329cp-1,
-    -0x1.782e2ep-3
-  },
-  { // Entry 13
-    0x1.f76316f541e10ef15d57c5a23775329cp-1,
-    0x1.782e2ep-3
-  },
-  { // Entry 14
-    0x1.cfab0ec2fc95382986fa511648bd4e6fp-24,
-    -0x1.8e3266p9
-  },
-  { // Entry 15
-    0x1.cfab0ec2fc95382986fa511648bd4e6fp-24,
-    0x1.8e3266p9
-  },
-  { // Entry 16
-    0x1.92e66b5920a85d6083e9cc85568ceaa3p-21,
-    -0x1.c6ac02p14
-  },
-  { // Entry 17
-    0x1.92e66b5920a85d6083e9cc85568ceaa3p-21,
-    0x1.c6ac02p14
-  },
-  { // Entry 18
-    0x1.d1ceb4ffff6ed05b5ef5fc618231214ap-2,
-    -0x1.e513fcp4
-  },
-  { // Entry 19
-    0x1.d1ceb4ffff6ed05b5ef5fc618231214ap-2,
-    0x1.e513fcp4
-  },
-  { // Entry 20
-    0x1.c27e049dfeab38e1b8ea6a09631829fep-1,
-    -0x1.fb1904p-2
-  },
-  { // Entry 21
-    0x1.c27e049dfeab38e1b8ea6a09631829fep-1,
-    0x1.fb1904p-2
-  },
-  { // Entry 22
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 23
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    0x1.fffffep127
-  },
-  { // Entry 24
-    0x1.ffffff000000155555549f49f4a28a28p-1,
-    0x1.p-12
-  },
-  { // Entry 25
-    0x1.ffffff000000155555549f49f4a28a28p-1,
-    -0x1.p-12
-  },
-  { // Entry 26
-    0x1.ffffffffffc000000000015555555555p-1,
-    0x1.p-21
-  },
-  { // Entry 27
-    0x1.ffffffffffc000000000015555555555p-1,
-    -0x1.p-21
-  },
-  { // Entry 28
-    0x1.fffffffffff000000000001555555555p-1,
-    0x1.p-22
-  },
-  { // Entry 29
-    0x1.fffffffffff000000000001555555555p-1,
-    -0x1.p-22
-  },
-  { // Entry 30
-    0x1.fffffefffffc155551ff49f696c4aecap-1,
-    0x1.000002p-12
-  },
-  { // Entry 31
-    0x1.fffffefffffc155551ff49f696c4aecap-1,
-    -0x1.000002p-12
-  },
-  { // Entry 32
-    0x1.882d606ba07505a7a09ae74d713f9788p-1,
-    0x1.000002p51
-  },
-  { // Entry 33
-    0x1.882d606ba07505a7a09ae74d713f9788p-1,
-    -0x1.000002p51
-  },
-  { // Entry 34
-    0x1.fc0154f7f5b6422f7794bf156ee98b7ep-1,
-    0x1.000006p-3
-  },
-  { // Entry 35
-    0x1.fc0154f7f5b6422f7794bf156ee98b7ep-1,
-    -0x1.000006p-3
-  },
-  { // Entry 36
-    0x1.34e976ef67d60a3de814ad3d0203ba21p-10,
-    0x1.000006p121
-  },
-  { // Entry 37
-    0x1.34e976ef67d60a3de814ad3d0203ba21p-10,
-    -0x1.000006p121
-  },
-  { // Entry 38
-    -0x1.ffffa2cf59398dc6180801e9ea3120c8p-1,
-    0x1.000006p122
-  },
-  { // Entry 39
-    -0x1.ffffa2cf59398dc6180801e9ea3120c8p-1,
-    -0x1.000006p122
-  },
-  { // Entry 40
-    0x1.ffc0014453315d47e2a318bf63e4caa7p-1,
-    0x1.000022p-5
-  },
-  { // Entry 41
-    0x1.ffc0014453315d47e2a318bf63e4caa7p-1,
-    -0x1.000022p-5
-  },
-  { // Entry 42
-    0x1.c15215015f3d916a0019a39e3acc7364p-1,
-    0x1.0000e0p-1
-  },
-  { // Entry 43
-    0x1.c15215015f3d916a0019a39e3acc7364p-1,
-    -0x1.0000e0p-1
-  },
-  { // Entry 44
-    0x1.ff001394e93085c7cce53915893af765p-1,
-    0x1.0000e0p-4
-  },
-  { // Entry 45
-    0x1.ff001394e93085c7cce53915893af765p-1,
-    -0x1.0000e0p-4
-  },
-  { // Entry 46
-    0x1.90b0c97de2370587a68aeae2b6943953p-15,
-    0x1.000322p23
-  },
-  { // Entry 47
-    0x1.90b0c97de2370587a68aeae2b6943953p-15,
-    -0x1.000322p23
-  },
-  { // Entry 48
-    -0x1.8b90c67677565874f44d9314ca2ba634p-6,
-    0x1.000402p8
-  },
-  { // Entry 49
-    -0x1.8b90c67677565874f44d9314ca2ba634p-6,
-    -0x1.000402p8
-  },
-  { // Entry 50
-    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
-    0x1.001cp0
-  },
-  { // Entry 51
-    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
-    -0x1.001cp0
-  },
-  { // Entry 52
-    0x1.c0b6d10005468a3a3eb056eb59b58ce2p-1,
-    0x1.0144p-1
-  },
-  { // Entry 53
-    0x1.c0b6d10005468a3a3eb056eb59b58ce2p-1,
-    -0x1.0144p-1
-  },
-  { // Entry 54
-    -0x1.c403d90006509b0762642d0bea40e4b1p-2,
-    0x1.0394c8p1
-  },
-  { // Entry 55
-    -0x1.c403d90006509b0762642d0bea40e4b1p-2,
-    -0x1.0394c8p1
-  },
-  { // Entry 56
-    -0x1.270da18b198e6ebfc8782082902bf2d4p-25,
-    0x1.04ccbcp18
-  },
-  { // Entry 57
-    -0x1.270da18b198e6ebfc8782082902bf2d4p-25,
-    -0x1.04ccbcp18
-  },
-  { // Entry 58
-    0x1.ee0f67015b9fb39ba6eb91d47829c913p-1,
-    0x1.07b518p99
-  },
-  { // Entry 59
-    0x1.ee0f67015b9fb39ba6eb91d47829c913p-1,
-    -0x1.07b518p99
-  },
-  { // Entry 60
-    0x1.fef05d000666cb47f1632c478a6282a8p-1,
-    0x1.07bf80p-4
-  },
-  { // Entry 61
-    0x1.fef05d000666cb47f1632c478a6282a8p-1,
-    -0x1.07bf80p-4
-  },
-  { // Entry 62
-    0x1.16f4330000b44c8288679f8c79d36c4fp-6,
-    0x1.07c1f0p5
-  },
-  { // Entry 63
-    0x1.16f4330000b44c8288679f8c79d36c4fp-6,
-    -0x1.07c1f0p5
-  },
-  { // Entry 64
-    0x1.cfb404557277d85bf149496d46c2fa9fp-18,
-    0x1.0bd21ep9
-  },
-  { // Entry 65
-    0x1.cfb404557277d85bf149496d46c2fa9fp-18,
-    -0x1.0bd21ep9
-  },
-  { // Entry 66
-    0x1.bb543efffd6cacac12698b8a94ed2c3ep-1,
-    0x1.0c3cp-1
-  },
-  { // Entry 67
-    0x1.bb543efffd6cacac12698b8a94ed2c3ep-1,
-    -0x1.0c3cp-1
-  },
-  { // Entry 68
-    0x1.bb0a22c13b616cdcad32c7fca58e6643p-1,
-    0x1.0cd0p-1
-  },
-  { // Entry 69
-    0x1.bb0a22c13b616cdcad32c7fca58e6643p-1,
-    -0x1.0cd0p-1
-  },
-  { // Entry 70
-    0x1.f98f9b1d05e7c922ac5e5c6b6ac86876p-2,
-    0x1.0df0p0
-  },
-  { // Entry 71
-    0x1.f98f9b1d05e7c922ac5e5c6b6ac86876p-2,
-    -0x1.0df0p0
-  },
-  { // Entry 72
-    0x1.ee15181830c25b0b10ce671e8f7a3289p-1,
-    0x1.0fb4p-2
-  },
-  { // Entry 73
-    0x1.ee15181830c25b0b10ce671e8f7a3289p-1,
-    -0x1.0fb4p-2
-  },
-  { // Entry 74
-    0x1.edf6cc16defe6361f38ffa60ece3944cp-1,
-    0x1.109ab2p-2
-  },
-  { // Entry 75
-    0x1.edf6cc16defe6361f38ffa60ece3944cp-1,
-    -0x1.109ab2p-2
-  },
-  { // Entry 76
-    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
-    0x1.156564p4
-  },
-  { // Entry 77
-    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
-    -0x1.156564p4
-  },
-  { // Entry 78
-    0x1.b656d60000155bacb4aa874b28de2ff9p-1,
-    0x1.160cp-1
-  },
-  { // Entry 79
-    0x1.b656d60000155bacb4aa874b28de2ff9p-1,
-    -0x1.160cp-1
-  },
-  { // Entry 80
-    0x1.ffb275967c191ee95f862efb4f790cecp-1,
-    0x1.19ccp-5
-  },
-  { // Entry 81
-    0x1.ffb275967c191ee95f862efb4f790cecp-1,
-    -0x1.19ccp-5
-  },
-  { // Entry 82
-    0x1.c59c50ffe542233b7ea21100df87bb60p-2,
-    0x1.1ca4p0
-  },
-  { // Entry 83
-    0x1.c59c50ffe542233b7ea21100df87bb60p-2,
-    -0x1.1ca4p0
-  },
-  { // Entry 84
-    0x1.af630f86b77571b9de2f17fee2b6c5cep-5,
-    0x1.1ffffep79
-  },
-  { // Entry 85
-    0x1.af630f86b77571b9de2f17fee2b6c5cep-5,
-    -0x1.1ffffep79
-  },
-  { // Entry 86
-    0x1.b1493ef1fbc62673ec140c12adc5a134p-6,
-    0x1.2620p10
-  },
-  { // Entry 87
-    0x1.b1493ef1fbc62673ec140c12adc5a134p-6,
-    -0x1.2620p10
-  },
-  { // Entry 88
-    -0x1.ad00b6f15c6ac5c3e79ef55d2fec70bdp-5,
-    0x1.2a3d62p2
-  },
-  { // Entry 89
-    -0x1.ad00b6f15c6ac5c3e79ef55d2fec70bdp-5,
-    -0x1.2a3d62p2
-  },
-  { // Entry 90
-    -0x1.ab9984f283f114cf13cc6df38c67955fp-6,
-    0x1.2bec22p2
-  },
-  { // Entry 91
-    -0x1.ab9984f283f114cf13cc6df38c67955fp-6,
-    -0x1.2bec22p2
-  },
-  { // Entry 92
-    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
-    0x1.2d97c8p2
-  },
-  { // Entry 93
-    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
-    -0x1.2d97c8p2
-  },
-  { // Entry 94
-    -0x1.ffffffffffffd703498c3b8288563915p-1,
-    0x1.2d97c8p3
-  },
-  { // Entry 95
-    -0x1.ffffffffffffd703498c3b8288563915p-1,
-    -0x1.2d97c8p3
-  },
-  { // Entry 96
-    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
-    0x1.2d97c8p4
-  },
-  { // Entry 97
-    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
-    -0x1.2d97c8p4
-  },
-  { // Entry 98
-    -0x1.99b69cf0c4a2c8ddad3f4cf29453e509p-6,
-    0x1.2fefc4p9
-  },
-  { // Entry 99
-    -0x1.99b69cf0c4a2c8ddad3f4cf29453e509p-6,
-    -0x1.2fefc4p9
-  },
-  { // Entry 100
-    0x1.e92148328d620fc186df9d6ce1088fd9p-1,
-    0x1.333724p-2
-  },
-  { // Entry 101
-    0x1.e92148328d620fc186df9d6ce1088fd9p-1,
-    -0x1.333724p-2
-  },
-  { // Entry 102
-    0x1.a1caab00002d3189e0699f2aaf20d9fcp-1,
-    0x1.3b90f8p-1
-  },
-  { // Entry 103
-    0x1.a1caab00002d3189e0699f2aaf20d9fcp-1,
-    -0x1.3b90f8p-1
-  },
-  { // Entry 104
-    0x1.fc33baffffffbb055ce03690bd392531p-1,
-    0x1.41c470p16
-  },
-  { // Entry 105
-    0x1.fc33baffffffbb055ce03690bd392531p-1,
-    -0x1.41c470p16
-  },
-  { // Entry 106
-    0x1.4798b30672f21602a21aaf471e8259a0p-19,
-    0x1.442f74p15
-  },
-  { // Entry 107
-    0x1.4798b30672f21602a21aaf471e8259a0p-19,
-    -0x1.442f74p15
-  },
-  { // Entry 108
-    0x1.e2b5ecffffa49c8c68d743c47f624633p-1,
-    0x1.5c09dap-2
-  },
-  { // Entry 109
-    0x1.e2b5ecffffa49c8c68d743c47f624633p-1,
-    -0x1.5c09dap-2
-  },
-  { // Entry 110
-    0x1.10591094ac58a270d9ad91802df49fd0p-11,
-    0x1.5fe0p3
-  },
-  { // Entry 111
-    0x1.10591094ac58a270d9ad91802df49fd0p-11,
-    -0x1.5fe0p3
-  },
-  { // Entry 112
-    -0x1.fffe580ee141c0225b44281c1c6f7ff1p-1,
-    0x1.665982p119
-  },
-  { // Entry 113
-    -0x1.fffe580ee141c0225b44281c1c6f7ff1p-1,
-    -0x1.665982p119
-  },
-  { // Entry 114
-    -0x1.e2b8ecffed91ce3a4b9dc5a592fb0b14p-1,
-    0x1.66a0bap1
-  },
-  { // Entry 115
-    -0x1.e2b8ecffed91ce3a4b9dc5a592fb0b14p-1,
-    -0x1.66a0bap1
-  },
-  { // Entry 116
-    -0x1.a08c6cfdbe04b859c0e16d478ff81f7bp-5,
-    0x1.6bee42p12
-  },
-  { // Entry 117
-    -0x1.a08c6cfdbe04b859c0e16d478ff81f7bp-5,
-    -0x1.6bee42p12
-  },
-  { // Entry 118
-    0x1.ff7c719a18439c4267075e2df688343ap-1,
-    0x1.6f1070p-5
-  },
-  { // Entry 119
-    0x1.ff7c719a18439c4267075e2df688343ap-1,
-    -0x1.6f1070p-5
-  },
-  { // Entry 120
-    0x1.ff7c3b997d6bea661ef0d1e69e222bfep-1,
-    0x1.6f5bc2p-5
-  },
-  { // Entry 121
-    0x1.ff7c3b997d6bea661ef0d1e69e222bfep-1,
-    -0x1.6f5bc2p-5
-  },
-  { // Entry 122
-    -0x1.6a0a0ee68da131091e29e055226a1bd9p-1,
-    0x1.72b53cp5
-  },
-  { // Entry 123
-    -0x1.6a0a0ee68da131091e29e055226a1bd9p-1,
-    -0x1.72b53cp5
-  },
-  { // Entry 124
-    0x1.ff777b9a218985c1a191c92b2d11ffbap-1,
-    0x1.75ec1ap-5
-  },
-  { // Entry 125
-    0x1.ff777b9a218985c1a191c92b2d11ffbap-1,
-    -0x1.75ec1ap-5
-  },
-  { // Entry 126
-    0x1.6d487f92427920e81dc5ae34e0e8d7bap-2,
-    0x1.78b3fap100
-  },
-  { // Entry 127
-    0x1.6d487f92427920e81dc5ae34e0e8d7bap-2,
-    -0x1.78b3fap100
-  },
-  { // Entry 128
-    0x1.4949c2fffa0cd336dfda998216dae393p-4,
-    0x1.7d8568p0
-  },
-  { // Entry 129
-    0x1.4949c2fffa0cd336dfda998216dae393p-4,
-    -0x1.7d8568p0
-  },
-  { // Entry 130
-    -0x1.b9ed9eb33eacbfac8151cda113734c29p-1,
-    0x1.830688p57
-  },
-  { // Entry 131
-    -0x1.b9ed9eb33eacbfac8151cda113734c29p-1,
-    -0x1.830688p57
-  },
-  { // Entry 132
-    0x1.c7349af06d61394cae1912233f64a04ep-5,
-    0x1.83e430p0
-  },
-  { // Entry 133
-    0x1.c7349af06d61394cae1912233f64a04ep-5,
-    -0x1.83e430p0
-  },
-  { // Entry 134
-    0x1.ab73f0f0fe04403e6a7fdde141a38a8ep-5,
-    0x1.84c288p0
-  },
-  { // Entry 135
-    0x1.ab73f0f0fe04403e6a7fdde141a38a8ep-5,
-    -0x1.84c288p0
-  },
-  { // Entry 136
-    0x1.ff6c2799dcf0d6c8f7acaf5b0a46e6e2p-1,
-    0x1.852140p-5
-  },
-  { // Entry 137
-    0x1.ff6c2799dcf0d6c8f7acaf5b0a46e6e2p-1,
-    -0x1.852140p-5
-  },
-  { // Entry 138
-    0x1.ff69ed99de70e51f519f30bad247a4d9p-1,
-    0x1.880cb6p-5
-  },
-  { // Entry 139
-    0x1.ff69ed99de70e51f519f30bad247a4d9p-1,
-    -0x1.880cb6p-5
-  },
-  { // Entry 140
-    -0x1.fd76c57f872f85bc4b0e1bf591b3b5b0p-1,
-    0x1.9364eap119
-  },
-  { // Entry 141
-    -0x1.fd76c57f872f85bc4b0e1bf591b3b5b0p-1,
-    -0x1.9364eap119
-  },
-  { // Entry 142
-    -0x1.f87c1ceec5fd5811c9c089cdaeeff13cp-8,
-    0x1.979e28p9
-  },
-  { // Entry 143
-    -0x1.f87c1ceec5fd5811c9c089cdaeeff13cp-8,
-    -0x1.979e28p9
-  },
-  { // Entry 144
-    -0x1.16ae29144d3b1ea8d907b8776f704157p-26,
-    0x1.9a48dep15
-  },
-  { // Entry 145
-    -0x1.16ae29144d3b1ea8d907b8776f704157p-26,
-    -0x1.9a48dep15
-  },
-  { // Entry 146
-    -0x1.977552f8e6ab3c01cb29ec77803007cfp-13,
-    0x1.9cbc1ap50
-  },
-  { // Entry 147
-    -0x1.977552f8e6ab3c01cb29ec77803007cfp-13,
-    -0x1.9cbc1ap50
-  },
-  { // Entry 148
-    0x1.ff58c5ffffffc7266a9df4e921726771p-1,
-    0x1.9ddb06p-5
-  },
-  { // Entry 149
-    0x1.ff58c5ffffffc7266a9df4e921726771p-1,
-    -0x1.9ddb06p-5
-  },
-  { // Entry 150
-    0x1.fffffffffffff5700019fffff0094c15p-1,
-    0x1.9ffffep-27
-  },
-  { // Entry 151
-    0x1.fffffffffffff5700019fffff0094c15p-1,
-    -0x1.9ffffep-27
-  },
-  { // Entry 152
-    0x1.31bd63004b1ff4d722c745044706d517p-1,
-    0x1.ac129cp24
-  },
-  { // Entry 153
-    0x1.31bd63004b1ff4d722c745044706d517p-1,
-    -0x1.ac129cp24
-  },
-  { // Entry 154
-    -0x1.f1ad0f000009e06ce449f5bde03d5d1ap-1,
-    0x1.b078f8p1
-  },
-  { // Entry 155
-    -0x1.f1ad0f000009e06ce449f5bde03d5d1ap-1,
-    -0x1.b078f8p1
-  },
-  { // Entry 156
-    0x1.ff4776ffe324ba2958aca8d73cf8b839p-1,
-    0x1.b2c03cp-5
-  },
-  { // Entry 157
-    0x1.ff4776ffe324ba2958aca8d73cf8b839p-1,
-    -0x1.b2c03cp-5
-  },
-  { // Entry 158
-    0x1.ff437f00005e500d29bd8103a8e769e9p-1,
-    0x1.b766f6p-5
-  },
-  { // Entry 159
-    0x1.ff437f00005e500d29bd8103a8e769e9p-1,
-    -0x1.b766f6p-5
-  },
-  { // Entry 160
-    -0x1.99663da94db7348bcbb257ed16b7227cp-24,
-    0x1.beeeeep79
-  },
-  { // Entry 161
-    -0x1.99663da94db7348bcbb257ed16b7227cp-24,
-    -0x1.beeeeep79
-  },
-  { // Entry 162
-    0x1.f3d620ffffff860e49bbab8963dcc42ep-1,
-    0x1.bf4e1cp-3
-  },
-  { // Entry 163
-    0x1.f3d620ffffff860e49bbab8963dcc42ep-1,
-    -0x1.bf4e1cp-3
-  },
-  { // Entry 164
-    0x1.81ff79ed9201755f7ad18b533aa99d18p-1,
-    0x1.c0p2
-  },
-  { // Entry 165
-    0x1.81ff79ed9201755f7ad18b533aa99d18p-1,
-    -0x1.c0p2
-  },
-  { // Entry 166
-    -0x1.af3c6108887730fcecedf61d2d81ceabp-15,
-    0x1.c20ec8p23
-  },
-  { // Entry 167
-    -0x1.af3c6108887730fcecedf61d2d81ceabp-15,
-    -0x1.c20ec8p23
-  },
-  { // Entry 168
-    -0x1.b1656ef91447fa6a546cbd81034cafabp-14,
-    0x1.c79d20p17
-  },
-  { // Entry 169
-    -0x1.b1656ef91447fa6a546cbd81034cafabp-14,
-    -0x1.c79d20p17
-  },
-  { // Entry 170
-    0x1.2da1d3007a57461f6f67f2d3e983f798p-1,
-    0x1.ca7ce0p24
-  },
-  { // Entry 171
-    0x1.2da1d3007a57461f6f67f2d3e983f798p-1,
-    -0x1.ca7ce0p24
-  },
-  { // Entry 172
-    0x1.ffdd37888387ce3c9828144676f2ab0dp-1,
-    0x1.cc31b8p18
-  },
-  { // Entry 173
-    0x1.ffdd37888387ce3c9828144676f2ab0dp-1,
-    -0x1.cc31b8p18
-  },
-  { // Entry 174
-    0x1.395ba4ffffa061223f7304299be0aad8p-1,
-    0x1.d30892p-1
-  },
-  { // Entry 175
-    0x1.395ba4ffffa061223f7304299be0aad8p-1,
-    -0x1.d30892p-1
-  },
-  { // Entry 176
-    0x1.cb27c6ffd8e9d51a0605b57fd02ee483p-1,
-    0x1.d5574cp-2
-  },
-  { // Entry 177
-    0x1.cb27c6ffd8e9d51a0605b57fd02ee483p-1,
-    -0x1.d5574cp-2
-  },
-  { // Entry 178
-    0x1.a0a09cfd2b2b23476f09aa3eb631351cp-5,
-    0x1.d7557ap12
-  },
-  { // Entry 179
-    0x1.a0a09cfd2b2b23476f09aa3eb631351cp-5,
-    -0x1.d7557ap12
-  },
-  { // Entry 180
-    0x1.38ae6d000c49df5001baf701b1a2a564p-1,
-    0x1.dbe75cp24
-  },
-  { // Entry 181
-    0x1.38ae6d000c49df5001baf701b1a2a564p-1,
-    -0x1.dbe75cp24
-  },
-  { // Entry 182
-    0x1.ffff1f00125abf3d1765781b64e6fe07p-1,
-    0x1.dffffep-9
-  },
-  { // Entry 183
-    0x1.ffff1f00125abf3d1765781b64e6fe07p-1,
-    -0x1.dffffep-9
-  },
-  { // Entry 184
-    -0x1.9abc76f7eb1d15a727e0be7ab16400a7p-1,
-    0x1.e02a42p108
-  },
-  { // Entry 185
-    -0x1.9abc76f7eb1d15a727e0be7ab16400a7p-1,
-    -0x1.e02a42p108
-  },
-  { // Entry 186
-    0x1.5a1429044eb087032dbee719cdd30226p-1,
-    0x1.e701eap100
-  },
-  { // Entry 187
-    0x1.5a1429044eb087032dbee719cdd30226p-1,
-    -0x1.e701eap100
-  },
-  { // Entry 188
-    -0x1.94ffc0f8d888f6f46c6d55a2efa1083fp-1,
-    0x1.edf188p24
-  },
-  { // Entry 189
-    -0x1.94ffc0f8d888f6f46c6d55a2efa1083fp-1,
-    -0x1.edf188p24
-  },
-  { // Entry 190
-    -0x1.27c6d300d8756e78846b84a1fa3b12a2p-1,
-    0x1.f4c63ap24
-  },
-  { // Entry 191
-    -0x1.27c6d300d8756e78846b84a1fa3b12a2p-1,
-    -0x1.f4c63ap24
-  },
-  { // Entry 192
-    0x1.da54ecefb1cd39510555126a76cb20d4p-7,
-    0x1.f5ba76p2
-  },
-  { // Entry 193
-    0x1.da54ecefb1cd39510555126a76cb20d4p-7,
-    -0x1.f5ba76p2
-  },
-  { // Entry 194
-    0x1.fc28da000006bc4f0b0cd3c8ab10fc57p-1,
-    0x1.f5ff4ep-4
-  },
-  { // Entry 195
-    0x1.fc28da000006bc4f0b0cd3c8ab10fc57p-1,
-    -0x1.f5ff4ep-4
-  },
-  { // Entry 196
-    -0x1.ffffffffffea396ab8aee509392c755dp-1,
-    0x1.f6a7a2p3
-  },
-  { // Entry 197
-    -0x1.ffffffffffea396ab8aee509392c755dp-1,
-    -0x1.f6a7a2p3
-  },
-  { // Entry 198
-    0x1.a4f1d4fd0ea286f32f3cb3092b4ced14p-5,
-    0x1.f6bff2p12
-  },
-  { // Entry 199
-    0x1.a4f1d4fd0ea286f32f3cb3092b4ced14p-5,
-    -0x1.f6bff2p12
-  },
-  { // Entry 200
-    -0x1.fffffffffffffaf33de290ca99e2faf3p-1,
-    0x1.f9cbe2p8
-  },
-  { // Entry 201
-    -0x1.fffffffffffffaf33de290ca99e2faf3p-1,
-    -0x1.f9cbe2p8
-  },
-  { // Entry 202
-    0x1.fdd40d6d912ce2594f200104570ac1b3p-3,
-    0x1.fc767ep12
-  },
-  { // Entry 203
-    0x1.fdd40d6d912ce2594f200104570ac1b3p-3,
-    -0x1.fc767ep12
-  },
-  { // Entry 204
-    -0x1.752de2ffffb1a5e227bf2c12f4083203p-1,
-    0x1.ff5352p8
-  },
-  { // Entry 205
-    -0x1.752de2ffffb1a5e227bf2c12f4083203p-1,
-    -0x1.ff5352p8
-  },
-  { // Entry 206
-    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
-    0x1.fff1fep1
-  },
-  { // Entry 207
-    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
-    -0x1.fff1fep1
-  },
-  { // Entry 208
-    -0x1.28406a0025545c9a568dacd45518dd65p-3,
-    0x1.fff1fep2
-  },
-  { // Entry 209
-    -0x1.28406a0025545c9a568dacd45518dd65p-3,
-    -0x1.fff1fep2
-  },
-  { // Entry 210
-    0x1.f015c8c24ca5e99c7c65599c8d60976ep-1,
-    0x1.fff7fep-3
-  },
-  { // Entry 211
-    0x1.f015c8c24ca5e99c7c65599c8d60976ep-1,
-    -0x1.fff7fep-3
-  },
-  { // Entry 212
-    0x1.aff9b45e94d32d8e5bde25dec6f357d6p-9,
-    0x1.fffe3ep41
-  },
-  { // Entry 213
-    0x1.aff9b45e94d32d8e5bde25dec6f357d6p-9,
-    -0x1.fffe3ep41
-  },
-  { // Entry 214
-    -0x1.ea5464fff571f6ff335004eade301b56p-1,
-    0x1.ffff8ep3
-  },
-  { // Entry 215
-    -0x1.ea5464fff571f6ff335004eade301b56p-1,
-    -0x1.ffff8ep3
-  },
-  { // Entry 216
-    0x1.fffd4e735df6db6a7ca7cb0436e6ef48p-1,
-    0x1.ffff8ep40
-  },
-  { // Entry 217
-    0x1.fffd4e735df6db6a7ca7cb0436e6ef48p-1,
-    -0x1.ffff8ep40
-  },
-  { // Entry 218
-    -0x1.88e527ffedd85d2e2429166f795d9788p-7,
-    0x1.ffff9ep45
-  },
-  { // Entry 219
-    -0x1.88e527ffedd85d2e2429166f795d9788p-7,
-    -0x1.ffff9ep45
-  },
-  { // Entry 220
-    -0x1.db8fa0e071f98061f27ef67161511437p-3,
-    0x1.ffffbap23
-  },
-  { // Entry 221
-    -0x1.db8fa0e071f98061f27ef67161511437p-3,
-    -0x1.ffffbap23
-  },
-  { // Entry 222
-    -0x1.fe5b337f4cfe25d468defe65d5c524adp-1,
-    0x1.ffffdcp8
-  },
-  { // Entry 223
-    -0x1.fe5b337f4cfe25d468defe65d5c524adp-1,
-    -0x1.ffffdcp8
-  },
-  { // Entry 224
-    -0x1.f59038f4c2dd33d159171ee80bb64886p-5,
-    0x1.fffff8p118
-  },
-  { // Entry 225
-    -0x1.f59038f4c2dd33d159171ee80bb64886p-5,
-    -0x1.fffff8p118
-  },
-  { // Entry 226
-    0x1.fffffc00001155553a7d27f4a289f319p-1,
-    0x1.fffffcp-12
-  },
-  { // Entry 227
-    0x1.fffffc00001155553a7d27f4a289f319p-1,
-    -0x1.fffffcp-12
-  },
-  { // Entry 228
-    -0x1.f9d6bdd62473cd2b729fe3a67a4e9157p-4,
-    0x1.fffffcp22
-  },
-  { // Entry 229
-    -0x1.f9d6bdd62473cd2b729fe3a67a4e9157p-4,
-    -0x1.fffffcp22
-  },
-  { // Entry 230
-    0x1.eb408300005d91b9814cada88f5fc596p-1,
-    0x1.24836cp-2
-  },
-  { // Entry 231
-    0x1.eb408300005d91b9814cada88f5fc596p-1,
-    -0x1.24836cp-2
-  },
-  { // Entry 232
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 233
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149
-  },
-  { // Entry 234
-    0x1.p0,
-    0.0
-  },
-  { // Entry 235
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149
-  },
-  { // Entry 236
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 237
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.000002p-126
-  },
-  { // Entry 238
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.000002p-126
-  },
-  { // Entry 239
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-126
-  },
-  { // Entry 240
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-126
-  },
-  { // Entry 241
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffffcp-127
-  },
-  { // Entry 242
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffffcp-127
-  },
-  { // Entry 243
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffffcp-127
-  },
-  { // Entry 244
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffffcp-127
-  },
-  { // Entry 245
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-126
-  },
-  { // Entry 246
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-126
-  },
-  { // Entry 247
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.000002p-126
-  },
-  { // Entry 248
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.000002p-126
-  },
-  { // Entry 249
-    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
-    0x1.99999ap-13
-  },
-  { // Entry 250
-    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
-    -0x1.99999ap-13
-  },
-  { // Entry 251
-    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
-    0x1.99999ap-12
-  },
-  { // Entry 252
-    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
-    -0x1.99999ap-12
-  },
-  { // Entry 253
-    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
-    0x1.333334p-11
-  },
-  { // Entry 254
-    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
-    -0x1.333334p-11
-  },
-  { // Entry 255
-    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
-    0x1.99999ap-11
-  },
-  { // Entry 256
-    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
-    -0x1.99999ap-11
-  },
-  { // Entry 257
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    0x1.p-10
-  },
-  { // Entry 258
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    -0x1.p-10
-  },
-  { // Entry 259
-    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
-    0x1.333334p-10
-  },
-  { // Entry 260
-    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
-    -0x1.333334p-10
-  },
-  { // Entry 261
-    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
-    0x1.666668p-10
-  },
-  { // Entry 262
-    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
-    -0x1.666668p-10
-  },
-  { // Entry 263
-    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
-    0x1.99999cp-10
-  },
-  { // Entry 264
-    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
-    -0x1.99999cp-10
-  },
-  { // Entry 265
-    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
-    0x1.ccccccp-10
-  },
-  { // Entry 266
-    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
-    -0x1.ccccccp-10
-  },
-  { // Entry 267
-    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
-    0x1.066666p-7
-  },
-  { // Entry 268
-    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
-    -0x1.066666p-7
-  },
-  { // Entry 269
-    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
-    0x1.ccccccp-7
-  },
-  { // Entry 270
-    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
-    -0x1.ccccccp-7
-  },
-  { // Entry 271
-    0x1.ffe57a785123226c1e2efb411353edc9p-1,
-    0x1.499998p-6
-  },
-  { // Entry 272
-    0x1.ffe57a785123226c1e2efb411353edc9p-1,
-    -0x1.499998p-6
-  },
-  { // Entry 273
-    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
-    0x1.acccccp-6
-  },
-  { // Entry 274
-    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
-    -0x1.acccccp-6
-  },
-  { // Entry 275
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    0x1.08p-5
-  },
-  { // Entry 276
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    -0x1.08p-5
-  },
-  { // Entry 277
-    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
-    0x1.39999ap-5
-  },
-  { // Entry 278
-    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
-    -0x1.39999ap-5
-  },
-  { // Entry 279
-    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
-    0x1.6b3334p-5
-  },
-  { // Entry 280
-    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
-    -0x1.6b3334p-5
-  },
-  { // Entry 281
-    0x1.ff59a00cc4ad492ca2597495412998edp-1,
-    0x1.9ccccep-5
-  },
-  { // Entry 282
-    0x1.ff59a00cc4ad492ca2597495412998edp-1,
-    -0x1.9ccccep-5
-  },
-  { // Entry 283
-    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
-    0x1.ce6666p-5
-  },
-  { // Entry 284
-    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
-    -0x1.ce6666p-5
-  },
-  { // Entry 285
-    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
-    0x1.5e7fc4p-1
-  },
-  { // Entry 286
-    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
-    -0x1.5e7fc4p-1
-  },
-  { // Entry 287
-    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
-    0x1.4e7fc4p0
-  },
-  { // Entry 288
-    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
-    -0x1.4e7fc4p0
-  },
-  { // Entry 289
-    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
-    0x1.edbfa6p0
-  },
-  { // Entry 290
-    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
-    -0x1.edbfa6p0
-  },
-  { // Entry 291
-    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
-    0x1.467fc4p1
-  },
-  { // Entry 292
-    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
-    -0x1.467fc4p1
-  },
-  { // Entry 293
-    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
-    0x1.961fb4p1
-  },
-  { // Entry 294
-    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
-    -0x1.961fb4p1
-  },
-  { // Entry 295
-    -0x1.969082007733d787f4c36ba0f9425694p-1,
-    0x1.e5bfa4p1
-  },
-  { // Entry 296
-    -0x1.969082007733d787f4c36ba0f9425694p-1,
-    -0x1.e5bfa4p1
-  },
-  { // Entry 297
-    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
-    0x1.1aafcap2
-  },
-  { // Entry 298
-    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
-    -0x1.1aafcap2
-  },
-  { // Entry 299
-    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
-    0x1.427fc2p2
-  },
-  { // Entry 300
-    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
-    -0x1.427fc2p2
-  },
-  { // Entry 301
-    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
-    0x1.6a4fbap2
-  },
-  { // Entry 302
-    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
-    -0x1.6a4fbap2
-  },
-  { // Entry 303
-    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
-    0x1.6af2f0p2
-  },
-  { // Entry 304
-    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
-    -0x1.6af2f0p2
-  },
-  { // Entry 305
-    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
-    0x1.43c62ap2
-  },
-  { // Entry 306
-    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
-    -0x1.43c62ap2
-  },
-  { // Entry 307
-    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
-    0x1.1c9964p2
-  },
-  { // Entry 308
-    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
-    -0x1.1c9964p2
-  },
-  { // Entry 309
-    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
-    0x1.ead93cp1
-  },
-  { // Entry 310
-    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
-    -0x1.ead93cp1
-  },
-  { // Entry 311
-    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
-    0x1.9c7fb0p1
-  },
-  { // Entry 312
-    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
-    -0x1.9c7fb0p1
-  },
-  { // Entry 313
-    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
-    0x1.4e2624p1
-  },
-  { // Entry 314
-    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
-    -0x1.4e2624p1
-  },
-  { // Entry 315
-    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
-    0x1.ff9932p0
-  },
-  { // Entry 316
-    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
-    -0x1.ff9932p0
-  },
-  { // Entry 317
-    0x1.77a92ca01bc79c195dda33736807f986p-3,
-    0x1.62e61cp0
-  },
-  { // Entry 318
-    0x1.77a92ca01bc79c195dda33736807f986p-3,
-    -0x1.62e61cp0
-  },
-  { // Entry 319
-    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
-    0x1.8c662cp-1
-  },
-  { // Entry 320
-    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
-    -0x1.8c662cp-1
-  },
-  { // Entry 321
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    -0x1.a8aa1cp0
-  },
-  { // Entry 322
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    0x1.a8aa1cp0
-  },
-  { // Entry 323
-    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
-    -0x1.95ec8ap0
-  },
-  { // Entry 324
-    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
-    0x1.95ec8ap0
-  },
-  { // Entry 325
-    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
-    -0x1.832ef8p0
-  },
-  { // Entry 326
-    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
-    0x1.832ef8p0
-  },
-  { // Entry 327
-    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
-    -0x1.707166p0
-  },
-  { // Entry 328
-    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
-    0x1.707166p0
-  },
-  { // Entry 329
-    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
-    -0x1.5db3d4p0
-  },
-  { // Entry 330
-    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
-    0x1.5db3d4p0
-  },
-  { // Entry 331
-    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
-    -0x1.4af642p0
-  },
-  { // Entry 332
-    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
-    0x1.4af642p0
-  },
-  { // Entry 333
-    0x1.60437277d48067e85230bce1883eaabap-2,
-    -0x1.3838b0p0
-  },
-  { // Entry 334
-    0x1.60437277d48067e85230bce1883eaabap-2,
-    0x1.3838b0p0
-  },
-  { // Entry 335
-    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
-    -0x1.257b1ep0
-  },
-  { // Entry 336
-    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
-    0x1.257b1ep0
-  },
-  { // Entry 337
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    -0x1.12bd92p0
-  },
-  { // Entry 338
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    0x1.12bd92p0
-  },
-  { // Entry 339
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    -0x1.ea5c3ep-1
-  },
-  { // Entry 340
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    0x1.ea5c3ep-1
-  },
-  { // Entry 341
-    0x1.3805a2dafda7f8554aec65dab348a714p-1,
-    -0x1.d4b87cp-1
-  },
-  { // Entry 342
-    0x1.3805a2dafda7f8554aec65dab348a714p-1,
-    0x1.d4b87cp-1
-  },
-  { // Entry 343
-    0x1.48e52ff5bbe794618b85190b86411824p-1,
-    -0x1.bf14bap-1
-  },
-  { // Entry 344
-    0x1.48e52ff5bbe794618b85190b86411824p-1,
-    0x1.bf14bap-1
-  },
-  { // Entry 345
-    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
-    -0x1.a970f8p-1
-  },
-  { // Entry 346
-    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
-    0x1.a970f8p-1
-  },
-  { // Entry 347
-    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
-    -0x1.93cd36p-1
-  },
-  { // Entry 348
-    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
-    0x1.93cd36p-1
-  },
-  { // Entry 349
-    0x1.77e00c3718528c36f722e63096c2646bp-1,
-    -0x1.7e2974p-1
-  },
-  { // Entry 350
-    0x1.77e00c3718528c36f722e63096c2646bp-1,
-    0x1.7e2974p-1
-  },
-  { // Entry 351
-    0x1.863a88d6b064f36f34370722d361ce9fp-1,
-    -0x1.6885b2p-1
-  },
-  { // Entry 352
-    0x1.863a88d6b064f36f34370722d361ce9fp-1,
-    0x1.6885b2p-1
-  },
-  { // Entry 353
-    0x1.93e2989cee6084e34b533b1eb92746dap-1,
-    -0x1.52e1f0p-1
-  },
-  { // Entry 354
-    0x1.93e2989cee6084e34b533b1eb92746dap-1,
-    0x1.52e1f0p-1
-  },
-  { // Entry 355
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    -0x1.3d3e36p-1
-  },
-  { // Entry 356
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    0x1.3d3e36p-1
-  },
-  { // Entry 357
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    -0x1.0a0b02p-1
-  },
-  { // Entry 358
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    0x1.0a0b02p-1
-  },
-  { // Entry 359
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    -0x1.d8f720p-2
-  },
-  { // Entry 360
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    0x1.d8f720p-2
-  },
-  { // Entry 361
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    -0x1.9dd83cp-2
-  },
-  { // Entry 362
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    0x1.9dd83cp-2
-  },
-  { // Entry 363
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    -0x1.62b958p-2
-  },
-  { // Entry 364
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    0x1.62b958p-2
-  },
-  { // Entry 365
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    -0x1.279a74p-2
-  },
-  { // Entry 366
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    0x1.279a74p-2
-  },
-  { // Entry 367
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    -0x1.d8f720p-3
-  },
-  { // Entry 368
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    0x1.d8f720p-3
-  },
-  { // Entry 369
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    -0x1.62b958p-3
-  },
-  { // Entry 370
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    0x1.62b958p-3
-  },
-  { // Entry 371
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    -0x1.d8f720p-4
-  },
-  { // Entry 372
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    0x1.d8f720p-4
-  },
-  { // Entry 373
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    -0x1.d8f720p-5
-  },
-  { // Entry 374
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    0x1.d8f720p-5
-  },
-  { // Entry 375
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    0x1.d8f720p-5
-  },
-  { // Entry 376
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    -0x1.d8f720p-5
-  },
-  { // Entry 377
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    0x1.d8f720p-4
-  },
-  { // Entry 378
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    -0x1.d8f720p-4
-  },
-  { // Entry 379
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    0x1.62b958p-3
-  },
-  { // Entry 380
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    -0x1.62b958p-3
-  },
-  { // Entry 381
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    0x1.d8f720p-3
-  },
-  { // Entry 382
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    -0x1.d8f720p-3
-  },
-  { // Entry 383
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    0x1.279a74p-2
-  },
-  { // Entry 384
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    -0x1.279a74p-2
-  },
-  { // Entry 385
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    0x1.62b958p-2
-  },
-  { // Entry 386
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    -0x1.62b958p-2
-  },
-  { // Entry 387
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    0x1.9dd83cp-2
-  },
-  { // Entry 388
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    -0x1.9dd83cp-2
-  },
-  { // Entry 389
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    0x1.d8f720p-2
-  },
-  { // Entry 390
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    -0x1.d8f720p-2
-  },
-  { // Entry 391
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    0x1.0a0b02p-1
-  },
-  { // Entry 392
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    -0x1.0a0b02p-1
-  },
-  { // Entry 393
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    0x1.3d3e36p-1
-  },
-  { // Entry 394
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    -0x1.3d3e36p-1
-  },
-  { // Entry 395
-    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
-    0x1.52e1f8p-1
-  },
-  { // Entry 396
-    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
-    -0x1.52e1f8p-1
-  },
-  { // Entry 397
-    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
-    0x1.6885bap-1
-  },
-  { // Entry 398
-    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
-    -0x1.6885bap-1
-  },
-  { // Entry 399
-    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
-    0x1.7e297cp-1
-  },
-  { // Entry 400
-    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
-    -0x1.7e297cp-1
-  },
-  { // Entry 401
-    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
-    0x1.93cd3ep-1
-  },
-  { // Entry 402
-    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
-    -0x1.93cd3ep-1
-  },
-  { // Entry 403
-    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
-    0x1.a971p-1
-  },
-  { // Entry 404
-    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
-    -0x1.a971p-1
-  },
-  { // Entry 405
-    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
-    0x1.bf14c2p-1
-  },
-  { // Entry 406
-    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
-    -0x1.bf14c2p-1
-  },
-  { // Entry 407
-    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
-    0x1.d4b884p-1
-  },
-  { // Entry 408
-    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
-    -0x1.d4b884p-1
-  },
-  { // Entry 409
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    0x1.ea5c3ep-1
-  },
-  { // Entry 410
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    -0x1.ea5c3ep-1
-  },
-  { // Entry 411
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    0x1.12bd92p0
-  },
-  { // Entry 412
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    -0x1.12bd92p0
-  },
-  { // Entry 413
-    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
-    0x1.257b24p0
-  },
-  { // Entry 414
-    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
-    -0x1.257b24p0
-  },
-  { // Entry 415
-    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
-    0x1.3838b6p0
-  },
-  { // Entry 416
-    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
-    -0x1.3838b6p0
-  },
-  { // Entry 417
-    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
-    0x1.4af648p0
-  },
-  { // Entry 418
-    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
-    -0x1.4af648p0
-  },
-  { // Entry 419
-    0x1.a072252090c33828767aee3e040ccddfp-3,
-    0x1.5db3dap0
-  },
-  { // Entry 420
-    0x1.a072252090c33828767aee3e040ccddfp-3,
-    -0x1.5db3dap0
-  },
-  { // Entry 421
-    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
-    0x1.70716cp0
-  },
-  { // Entry 422
-    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
-    -0x1.70716cp0
-  },
-  { // Entry 423
-    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
-    0x1.832efep0
-  },
-  { // Entry 424
-    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
-    -0x1.832efep0
-  },
-  { // Entry 425
-    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
-    0x1.95ec90p0
-  },
-  { // Entry 426
-    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
-    -0x1.95ec90p0
-  },
-  { // Entry 427
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    0x1.a8aa1cp0
-  },
-  { // Entry 428
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    -0x1.a8aa1cp0
-  },
-  { // Entry 429
-    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
-    0x1.04aff8p0
-  },
-  { // Entry 430
-    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
-    -0x1.04aff8p0
-  },
-  { // Entry 431
-    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
-    0x1.04b0a0p0
-  },
-  { // Entry 432
-    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
-    -0x1.04b0a0p0
-  },
-  { // Entry 433
-    0x1.0cb10893a9b5471a44356072cb33b395p-1,
-    0x1.04b148p0
-  },
-  { // Entry 434
-    0x1.0cb10893a9b5471a44356072cb33b395p-1,
-    -0x1.04b148p0
-  },
-  { // Entry 435
-    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
-    0x1.04b1f0p0
-  },
-  { // Entry 436
-    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
-    -0x1.04b1f0p0
-  },
-  { // Entry 437
-    0x1.0caecc8b7782f86827af92b0b2374510p-1,
-    0x1.04b298p0
-  },
-  { // Entry 438
-    0x1.0caecc8b7782f86827af92b0b2374510p-1,
-    -0x1.04b298p0
-  },
-  { // Entry 439
-    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
-    0x1.04b340p0
-  },
-  { // Entry 440
-    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
-    -0x1.04b340p0
-  },
-  { // Entry 441
-    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
-    0x1.04b3e8p0
-  },
-  { // Entry 442
-    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
-    -0x1.04b3e8p0
-  },
-  { // Entry 443
-    0x1.0cab727bc8619d628361876e1f30a633p-1,
-    0x1.04b490p0
-  },
-  { // Entry 444
-    0x1.0cab727bc8619d628361876e1f30a633p-1,
-    -0x1.04b490p0
-  },
-  { // Entry 445
-    0x1.0caa5b450a4324f204a556b072da124ap-1,
-    0x1.04b534p0
-  },
-  { // Entry 446
-    0x1.0caa5b450a4324f204a556b072da124ap-1,
-    -0x1.04b534p0
-  },
-  { // Entry 447
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 448
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149
-  },
-  { // Entry 449
-    0x1.p0,
-    0.0
-  },
-  { // Entry 450
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149
-  },
-  { // Entry 451
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 452
-    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
-    0x1.279a72p-1
-  },
-  { // Entry 453
-    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
-    -0x1.279a72p-1
-  },
-  { // Entry 454
-    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
-    0x1.279a74p-1
-  },
-  { // Entry 455
-    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
-    -0x1.279a74p-1
-  },
-  { // Entry 456
-    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
-    0x1.279a76p-1
-  },
-  { // Entry 457
-    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
-    -0x1.279a76p-1
-  },
-  { // Entry 458
-    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
-    0x1.bb67acp0
-  },
-  { // Entry 459
-    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
-    -0x1.bb67acp0
-  },
-  { // Entry 460
-    -0x1.48d1d9b467e37955337311decd09fc74p-3,
-    0x1.bb67aep0
-  },
-  { // Entry 461
-    -0x1.48d1d9b467e37955337311decd09fc74p-3,
-    -0x1.bb67aep0
-  },
-  { // Entry 462
-    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
-    0x1.bb67b0p0
-  },
-  { // Entry 463
-    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
-    -0x1.bb67b0p0
-  },
-  { // Entry 464
-    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
-    0x1.bffffep-2
-  },
-  { // Entry 465
-    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
-    -0x1.bffffep-2
-  },
-  { // Entry 466
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    0x1.c0p-2
-  },
-  { // Entry 467
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    -0x1.c0p-2
-  },
-  { // Entry 468
-    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
-    0x1.c00002p-2
-  },
-  { // Entry 469
-    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
-    -0x1.c00002p-2
-  },
-  { // Entry 470
-    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
-    0x1.5ffffep-1
-  },
-  { // Entry 471
-    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
-    -0x1.5ffffep-1
-  },
-  { // Entry 472
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    0x1.60p-1
-  },
-  { // Entry 473
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    -0x1.60p-1
-  },
-  { // Entry 474
-    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
-    0x1.600002p-1
-  },
-  { // Entry 475
-    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
-    -0x1.600002p-1
-  },
-  { // Entry 476
-    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
-    0x1.2ffffep0
-  },
-  { // Entry 477
-    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
-    -0x1.2ffffep0
-  },
-  { // Entry 478
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    0x1.30p0
-  },
-  { // Entry 479
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    -0x1.30p0
-  },
-  { // Entry 480
-    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
-    0x1.300002p0
-  },
-  { // Entry 481
-    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
-    -0x1.300002p0
-  },
-  { // Entry 482
-    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
-    0x1.37fffep1
-  },
-  { // Entry 483
-    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
-    -0x1.37fffep1
-  },
-  { // Entry 484
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    0x1.38p1
-  },
-  { // Entry 485
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    -0x1.38p1
-  },
-  { // Entry 486
-    -0x1.863eff63dfa00bfc758baf469469d741p-1,
-    0x1.380002p1
-  },
-  { // Entry 487
-    -0x1.863eff63dfa00bfc758baf469469d741p-1,
-    -0x1.380002p1
-  },
-  { // Entry 488
-    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
-    0x1.069c8cp-4
-  },
-  { // Entry 489
-    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
-    -0x1.069c8cp-4
-  },
-  { // Entry 490
-    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
-    0x1.069c8cp-3
-  },
-  { // Entry 491
-    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
-    -0x1.069c8cp-3
-  },
-  { // Entry 492
-    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
-    0x1.89ead2p-3
-  },
-  { // Entry 493
-    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
-    -0x1.89ead2p-3
-  },
-  { // Entry 494
-    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
-    0x1.069c8cp-2
-  },
-  { // Entry 495
-    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
-    -0x1.069c8cp-2
-  },
-  { // Entry 496
-    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
-    0x1.4843b0p-2
-  },
-  { // Entry 497
-    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
-    -0x1.4843b0p-2
-  },
-  { // Entry 498
-    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
-    0x1.89ead4p-2
-  },
-  { // Entry 499
-    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
-    -0x1.89ead4p-2
-  },
-  { // Entry 500
-    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
-    0x1.cb91f8p-2
-  },
-  { // Entry 501
-    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
-    -0x1.cb91f8p-2
-  },
-  { // Entry 502
-    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
-    0x1.069c8ep-1
-  },
-  { // Entry 503
-    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
-    -0x1.069c8ep-1
-  },
-  { // Entry 504
-    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
-    0x1.277020p-1
-  },
-  { // Entry 505
-    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
-    -0x1.277020p-1
-  },
-  { // Entry 506
-    0x1.9a52e08b191bd55512c8365074f1987fp-1,
-    0x1.4843b2p-1
-  },
-  { // Entry 507
-    0x1.9a52e08b191bd55512c8365074f1987fp-1,
-    -0x1.4843b2p-1
-  },
-  { // Entry 508
-    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
-    0x1.691744p-1
-  },
-  { // Entry 509
-    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
-    -0x1.691744p-1
-  },
-  { // Entry 510
-    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
-    0x1.89ead6p-1
-  },
-  { // Entry 511
-    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
-    -0x1.89ead6p-1
-  },
-  { // Entry 512
-    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
-    0x1.aabe68p-1
-  },
-  { // Entry 513
-    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
-    -0x1.aabe68p-1
-  },
-  { // Entry 514
-    0x1.3f3a09427966e9518802dee3bf443a95p-1,
-    0x1.cb91fap-1
-  },
-  { // Entry 515
-    0x1.3f3a09427966e9518802dee3bf443a95p-1,
-    -0x1.cb91fap-1
-  },
-  { // Entry 516
-    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
-    0x1.ec658cp-1
-  },
-  { // Entry 517
-    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
-    -0x1.ec658cp-1
-  },
-  { // Entry 518
-    0x1.096abb862f9bd5515982c2818c332ff9p-1,
-    0x1.069c8ep0
-  },
-  { // Entry 519
-    0x1.096abb862f9bd5515982c2818c332ff9p-1,
-    -0x1.069c8ep0
-  },
-  { // Entry 520
-    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
-    0x1.170656p0
-  },
-  { // Entry 521
-    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
-    -0x1.170656p0
-  },
-  { // Entry 522
-    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
-    0x1.27701ep0
-  },
-  { // Entry 523
-    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
-    -0x1.27701ep0
-  },
-  { // Entry 524
-    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
-    0x1.37d9e6p0
-  },
-  { // Entry 525
-    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
-    -0x1.37d9e6p0
-  },
-  { // Entry 526
-    0x1.235b337b091cdd8ac06390abc6816b82p-2,
-    0x1.4843aep0
-  },
-  { // Entry 527
-    0x1.235b337b091cdd8ac06390abc6816b82p-2,
-    -0x1.4843aep0
-  },
-  { // Entry 528
-    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
-    0x1.58ad76p0
-  },
-  { // Entry 529
-    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
-    -0x1.58ad76p0
-  },
-  { // Entry 530
-    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
-    0x1.69173ep0
-  },
-  { // Entry 531
-    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
-    -0x1.69173ep0
-  },
-  { // Entry 532
-    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
-    0x1.798106p0
-  },
-  { // Entry 533
-    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
-    -0x1.798106p0
-  },
-  { // Entry 534
-    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
-    0x1.89eacep0
-  },
-  { // Entry 535
-    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
-    -0x1.89eacep0
-  },
-  { // Entry 536
-    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
-    0x1.9a5496p0
-  },
-  { // Entry 537
-    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
-    -0x1.9a5496p0
-  },
-  { // Entry 538
-    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
-    0x1.aabe5ep0
-  },
-  { // Entry 539
-    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
-    -0x1.aabe5ep0
-  },
-  { // Entry 540
-    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
-    0x1.bb2826p0
-  },
-  { // Entry 541
-    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
-    -0x1.bb2826p0
-  },
-  { // Entry 542
-    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
-    0x1.cb91eep0
-  },
-  { // Entry 543
-    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
-    -0x1.cb91eep0
-  },
-  { // Entry 544
-    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
-    0x1.dbfbb6p0
-  },
-  { // Entry 545
-    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
-    -0x1.dbfbb6p0
-  },
-  { // Entry 546
-    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
-    0x1.ec657ep0
-  },
-  { // Entry 547
-    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
-    -0x1.ec657ep0
-  },
-  { // Entry 548
-    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
-    0x1.fccf46p0
-  },
-  { // Entry 549
-    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
-    -0x1.fccf46p0
-  },
-  { // Entry 550
-    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
-    0x1.069c88p1
-  },
-  { // Entry 551
-    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
-    -0x1.069c88p1
-  },
-  { // Entry 552
-    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
-    0x1.0ed16cp1
-  },
-  { // Entry 553
-    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
-    -0x1.0ed16cp1
-  },
-  { // Entry 554
-    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
-    0x1.170650p1
-  },
-  { // Entry 555
-    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
-    -0x1.170650p1
-  },
-  { // Entry 556
-    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
-    0x1.1f3b34p1
-  },
-  { // Entry 557
-    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
-    -0x1.1f3b34p1
-  },
-  { // Entry 558
-    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
-    0x1.277018p1
-  },
-  { // Entry 559
-    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
-    -0x1.277018p1
-  },
-  { // Entry 560
-    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
-    0x1.2fa4fcp1
-  },
-  { // Entry 561
-    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
-    -0x1.2fa4fcp1
-  },
-  { // Entry 562
-    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
-    0x1.37d9e0p1
-  },
-  { // Entry 563
-    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
-    -0x1.37d9e0p1
-  },
-  { // Entry 564
-    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
-    0x1.400ec4p1
-  },
-  { // Entry 565
-    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
-    -0x1.400ec4p1
-  },
-  { // Entry 566
-    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
-    0x1.4843a8p1
-  },
-  { // Entry 567
-    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
-    -0x1.4843a8p1
-  },
-  { // Entry 568
-    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
-    0x1.50788cp1
-  },
-  { // Entry 569
-    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
-    -0x1.50788cp1
-  },
-  { // Entry 570
-    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
-    0x1.58ad70p1
-  },
-  { // Entry 571
-    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
-    -0x1.58ad70p1
-  },
-  { // Entry 572
-    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
-    0x1.60e254p1
-  },
-  { // Entry 573
-    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
-    -0x1.60e254p1
-  },
-  { // Entry 574
-    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
-    0x1.691738p1
-  },
-  { // Entry 575
-    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
-    -0x1.691738p1
-  },
-  { // Entry 576
-    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
-    0x1.714c1cp1
-  },
-  { // Entry 577
-    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
-    -0x1.714c1cp1
-  },
-  { // Entry 578
-    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
-    0x1.7981p1
-  },
-  { // Entry 579
-    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
-    -0x1.7981p1
-  },
-  { // Entry 580
-    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
-    0x1.81b5e4p1
-  },
-  { // Entry 581
-    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
-    -0x1.81b5e4p1
-  },
-  { // Entry 582
-    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
-    0x1.89eac8p1
-  },
-  { // Entry 583
-    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
-    -0x1.89eac8p1
-  },
-  { // Entry 584
-    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
-    -0x1.81b5eep2
-  },
-  { // Entry 585
-    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
-    0x1.81b5eep2
-  },
-  { // Entry 586
-    0x1.be1d849ec649b797320e985d0b82ae85p-1,
-    -0x1.714c26p2
-  },
-  { // Entry 587
-    0x1.be1d849ec649b797320e985d0b82ae85p-1,
-    0x1.714c26p2
-  },
-  { // Entry 588
-    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
-    -0x1.60e25ep2
-  },
-  { // Entry 589
-    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
-    0x1.60e25ep2
-  },
-  { // Entry 590
-    0x1.096ad87c326622c42de34f92814cfa84p-1,
-    -0x1.507896p2
-  },
-  { // Entry 591
-    0x1.096ad87c326622c42de34f92814cfa84p-1,
-    0x1.507896p2
-  },
-  { // Entry 592
-    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
-    -0x1.400ecep2
-  },
-  { // Entry 593
-    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
-    0x1.400ecep2
-  },
-  { // Entry 594
-    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
-    -0x1.2fa506p2
-  },
-  { // Entry 595
-    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
-    0x1.2fa506p2
-  },
-  { // Entry 596
-    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
-    -0x1.1f3b3ep2
-  },
-  { // Entry 597
-    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
-    0x1.1f3b3ep2
-  },
-  { // Entry 598
-    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
-    -0x1.0ed176p2
-  },
-  { // Entry 599
-    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
-    0x1.0ed176p2
-  },
-  { // Entry 600
-    -0x1.5837ae8569c95846e6164d9636546120p-1,
-    -0x1.fccf5ap1
-  },
-  { // Entry 601
-    -0x1.5837ae8569c95846e6164d9636546120p-1,
-    0x1.fccf5ap1
-  },
-  { // Entry 602
-    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
-    -0x1.dbfbc8p1
-  },
-  { // Entry 603
-    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
-    0x1.dbfbc8p1
-  },
-  { // Entry 604
-    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
-    -0x1.bb2836p1
-  },
-  { // Entry 605
-    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
-    0x1.bb2836p1
-  },
-  { // Entry 606
-    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
-    -0x1.9a54a4p1
-  },
-  { // Entry 607
-    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
-    0x1.9a54a4p1
-  },
-  { // Entry 608
-    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
-    -0x1.798112p1
-  },
-  { // Entry 609
-    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
-    0x1.798112p1
-  },
-  { // Entry 610
-    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
-    -0x1.58ad80p1
-  },
-  { // Entry 611
-    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
-    0x1.58ad80p1
-  },
-  { // Entry 612
-    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
-    -0x1.37d9eep1
-  },
-  { // Entry 613
-    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
-    0x1.37d9eep1
-  },
-  { // Entry 614
-    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
-    -0x1.17065cp1
-  },
-  { // Entry 615
-    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
-    0x1.17065cp1
-  },
-  { // Entry 616
-    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
-    -0x1.ec6594p0
-  },
-  { // Entry 617
-    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
-    0x1.ec6594p0
-  },
-  { // Entry 618
-    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
-    -0x1.aabe70p0
-  },
-  { // Entry 619
-    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
-    0x1.aabe70p0
-  },
-  { // Entry 620
-    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
-    -0x1.69174cp0
-  },
-  { // Entry 621
-    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
-    0x1.69174cp0
-  },
-  { // Entry 622
-    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
-    -0x1.277028p0
-  },
-  { // Entry 623
-    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
-    0x1.277028p0
-  },
-  { // Entry 624
-    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
-    -0x1.cb920ap-1
-  },
-  { // Entry 625
-    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
-    0x1.cb920ap-1
-  },
-  { // Entry 626
-    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
-    -0x1.4843c4p-1
-  },
-  { // Entry 627
-    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
-    0x1.4843c4p-1
-  },
-  { // Entry 628
-    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
-    -0x1.89eafcp-2
-  },
-  { // Entry 629
-    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
-    0x1.89eafcp-2
-  },
-  { // Entry 630
-    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
-    -0x1.069ce0p-3
-  },
-  { // Entry 631
-    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
-    0x1.069ce0p-3
-  },
-  { // Entry 632
-    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
-    0x1.069c38p-3
-  },
-  { // Entry 633
-    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
-    -0x1.069c38p-3
-  },
-  { // Entry 634
-    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
-    0x1.89eaa8p-2
-  },
-  { // Entry 635
-    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
-    -0x1.89eaa8p-2
-  },
-  { // Entry 636
-    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
-    0x1.48439ap-1
-  },
-  { // Entry 637
-    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
-    -0x1.48439ap-1
-  },
-  { // Entry 638
-    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
-    0x1.cb91e0p-1
-  },
-  { // Entry 639
-    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
-    -0x1.cb91e0p-1
-  },
-  { // Entry 640
-    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
-    0x1.277014p0
-  },
-  { // Entry 641
-    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
-    -0x1.277014p0
-  },
-  { // Entry 642
-    0x1.46dc8a919b27840cda6e18a079da459cp-3,
-    0x1.691738p0
-  },
-  { // Entry 643
-    0x1.46dc8a919b27840cda6e18a079da459cp-3,
-    -0x1.691738p0
-  },
-  { // Entry 644
-    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
-    0x1.aabe5cp0
-  },
-  { // Entry 645
-    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
-    -0x1.aabe5cp0
-  },
-  { // Entry 646
-    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
-    0x1.ec6580p0
-  },
-  { // Entry 647
-    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
-    -0x1.ec6580p0
-  },
-  { // Entry 648
-    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
-    0x1.170652p1
-  },
-  { // Entry 649
-    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
-    -0x1.170652p1
-  },
-  { // Entry 650
-    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
-    0x1.37d9e4p1
-  },
-  { // Entry 651
-    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
-    -0x1.37d9e4p1
-  },
-  { // Entry 652
-    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
-    0x1.58ad76p1
-  },
-  { // Entry 653
-    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
-    -0x1.58ad76p1
-  },
-  { // Entry 654
-    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
-    0x1.798108p1
-  },
-  { // Entry 655
-    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
-    -0x1.798108p1
-  },
-  { // Entry 656
-    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
-    0x1.9a549ap1
-  },
-  { // Entry 657
-    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
-    -0x1.9a549ap1
-  },
-  { // Entry 658
-    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
-    0x1.bb282cp1
-  },
-  { // Entry 659
-    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
-    -0x1.bb282cp1
-  },
-  { // Entry 660
-    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
-    0x1.dbfbbep1
-  },
-  { // Entry 661
-    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
-    -0x1.dbfbbep1
-  },
-  { // Entry 662
-    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
-    0x1.fccf50p1
-  },
-  { // Entry 663
-    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
-    -0x1.fccf50p1
-  },
-  { // Entry 664
-    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
-    0x1.0ed170p2
-  },
-  { // Entry 665
-    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
-    -0x1.0ed170p2
-  },
-  { // Entry 666
-    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
-    0x1.1f3b38p2
-  },
-  { // Entry 667
-    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
-    -0x1.1f3b38p2
-  },
-  { // Entry 668
-    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
-    0x1.2fa5p2
-  },
-  { // Entry 669
-    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
-    -0x1.2fa5p2
-  },
-  { // Entry 670
-    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
-    0x1.400ec8p2
-  },
-  { // Entry 671
-    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
-    -0x1.400ec8p2
-  },
-  { // Entry 672
-    0x1.096aaf70341485062f443c80a90a3be3p-1,
-    0x1.507890p2
-  },
-  { // Entry 673
-    0x1.096aaf70341485062f443c80a90a3be3p-1,
-    -0x1.507890p2
-  },
-  { // Entry 674
-    0x1.6fcb6ae03107be458d07361371efabb4p-1,
-    0x1.60e258p2
-  },
-  { // Entry 675
-    0x1.6fcb6ae03107be458d07361371efabb4p-1,
-    -0x1.60e258p2
-  },
-  { // Entry 676
-    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
-    0x1.714c20p2
-  },
-  { // Entry 677
-    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
-    -0x1.714c20p2
-  },
-  { // Entry 678
-    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
-    0x1.81b5e8p2
-  },
-  { // Entry 679
-    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
-    -0x1.81b5e8p2
-  },
-  { // Entry 680
-    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
-    0x1.effffep-5
-  },
-  { // Entry 681
-    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
-    -0x1.effffep-5
-  },
-  { // Entry 682
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    0x1.f0p-5
-  },
-  { // Entry 683
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    -0x1.f0p-5
-  },
-  { // Entry 684
-    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
-    0x1.f00002p-5
-  },
-  { // Entry 685
-    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
-    -0x1.f00002p-5
-  },
-  { // Entry 686
-    0x1.fc21005d216a89de55b192096fc6b7bap-1,
-    0x1.f7fffep-4
-  },
-  { // Entry 687
-    0x1.fc21005d216a89de55b192096fc6b7bap-1,
-    -0x1.f7fffep-4
-  },
-  { // Entry 688
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    0x1.f8p-4
-  },
-  { // Entry 689
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    -0x1.f8p-4
-  },
-  { // Entry 690
-    0x1.fc21004d6b953945667f800ff81de0ebp-1,
-    0x1.f80002p-4
-  },
-  { // Entry 691
-    0x1.fc21004d6b953945667f800ff81de0ebp-1,
-    -0x1.f80002p-4
-  },
-  { // Entry 692
-    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
-    0x1.4bfffep-3
-  },
-  { // Entry 693
-    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
-    -0x1.4bfffep-3
-  },
-  { // Entry 694
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    0x1.4cp-3
-  },
-  { // Entry 695
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    -0x1.4cp-3
-  },
-  { // Entry 696
-    0x1.f949849dac6a548dd851139041106316p-1,
-    0x1.4c0002p-3
-  },
-  { // Entry 697
-    0x1.f949849dac6a548dd851139041106316p-1,
-    -0x1.4c0002p-3
-  },
-  { // Entry 698
-    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
-    0x1.333332p-2
-  },
-  { // Entry 699
-    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
-    -0x1.333332p-2
-  },
-  { // Entry 700
-    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
-    0x1.333334p-2
-  },
-  { // Entry 701
-    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
-    -0x1.333334p-2
-  },
-  { // Entry 702
-    0x1.e921dcd906824da60e43c03a7774b171p-1,
-    0x1.333336p-2
-  },
-  { // Entry 703
-    0x1.e921dcd906824da60e43c03a7774b171p-1,
-    -0x1.333336p-2
-  },
-  { // Entry 704
-    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
-    0x1.594316p-1
-  },
-  { // Entry 705
-    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
-    -0x1.594316p-1
-  },
-  { // Entry 706
-    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
-    0x1.594318p-1
-  },
-  { // Entry 707
-    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
-    -0x1.594318p-1
-  },
-  { // Entry 708
-    0x1.8feeda131852852d2fa7fe8847b05973p-1,
-    0x1.59431ap-1
-  },
-  { // Entry 709
-    0x1.8feeda131852852d2fa7fe8847b05973p-1,
-    -0x1.59431ap-1
-  },
-  { // Entry 710
-    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
-    0x1.8ffffep-1
-  },
-  { // Entry 711
-    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
-    -0x1.8ffffep-1
-  },
-  { // Entry 712
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    0x1.90p-1
-  },
-  { // Entry 713
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    -0x1.90p-1
-  },
-  { // Entry 714
-    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
-    0x1.900002p-1
-  },
-  { // Entry 715
-    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
-    -0x1.900002p-1
-  },
-  { // Entry 716
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 717
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149
-  },
-  { // Entry 718
-    0x1.p0,
-    0.0
-  },
-  { // Entry 719
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149
-  },
-  { // Entry 720
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 721
-    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
-    0x1.921fb4p-5
-  },
-  { // Entry 722
-    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
-    -0x1.921fb4p-5
-  },
-  { // Entry 723
-    0x1.ff621e370373dc6f3963d42896ede078p-1,
-    0x1.921fb6p-5
-  },
-  { // Entry 724
-    0x1.ff621e370373dc6f3963d42896ede078p-1,
-    -0x1.921fb6p-5
-  },
-  { // Entry 725
-    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
-    0x1.921fb8p-5
-  },
-  { // Entry 726
-    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
-    -0x1.921fb8p-5
-  },
-  { // Entry 727
-    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
-    0x1.921fb4p-4
-  },
-  { // Entry 728
-    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
-    -0x1.921fb4p-4
-  },
-  { // Entry 729
-    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
-    0x1.921fb6p-4
-  },
-  { // Entry 730
-    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
-    -0x1.921fb6p-4
-  },
-  { // Entry 731
-    0x1.fd88da347f8e696999ffd58060ba3569p-1,
-    0x1.921fb8p-4
-  },
-  { // Entry 732
-    0x1.fd88da347f8e696999ffd58060ba3569p-1,
-    -0x1.921fb8p-4
-  },
-  { // Entry 733
-    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
-    0x1.921fb4p-3
-  },
-  { // Entry 734
-    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
-    -0x1.921fb4p-3
-  },
-  { // Entry 735
-    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
-    0x1.921fb6p-3
-  },
-  { // Entry 736
-    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
-    -0x1.921fb6p-3
-  },
-  { // Entry 737
-    0x1.f6297cdd55014a808b883fd183f318acp-1,
-    0x1.921fb8p-3
-  },
-  { // Entry 738
-    0x1.f6297cdd55014a808b883fd183f318acp-1,
-    -0x1.921fb8p-3
-  },
-  { // Entry 739
-    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
-    0x1.921fb4p-2
-  },
-  { // Entry 740
-    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
-    -0x1.921fb4p-2
-  },
-  { // Entry 741
-    0x1.d906bccf3cb875874da3da4c01104bafp-1,
-    0x1.921fb6p-2
-  },
-  { // Entry 742
-    0x1.d906bccf3cb875874da3da4c01104bafp-1,
-    -0x1.921fb6p-2
-  },
-  { // Entry 743
-    0x1.d906bc6d452d744f210810861102f2dap-1,
-    0x1.921fb8p-2
-  },
-  { // Entry 744
-    0x1.d906bc6d452d744f210810861102f2dap-1,
-    -0x1.921fb8p-2
-  },
-  { // Entry 745
-    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
-    0x1.921fb4p-1
-  },
-  { // Entry 746
-    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
-    -0x1.921fb4p-1
-  },
-  { // Entry 747
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    0x1.921fb6p-1
-  },
-  { // Entry 748
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    -0x1.921fb6p-1
-  },
-  { // Entry 749
-    0x1.6a09e4792971e22c9a00261aeac070dap-1,
-    0x1.921fb8p-1
-  },
-  { // Entry 750
-    0x1.6a09e4792971e22c9a00261aeac070dap-1,
-    -0x1.921fb8p-1
-  },
-  { // Entry 751
-    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
-    0x1.921fb4p0
-  },
-  { // Entry 752
-    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
-    -0x1.921fb4p0
-  },
-  { // Entry 753
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    0x1.921fb6p0
-  },
-  { // Entry 754
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    -0x1.921fb6p0
-  },
-  { // Entry 755
-    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
-    0x1.921fb8p0
-  },
-  { // Entry 756
-    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
-    -0x1.921fb8p0
-  },
-  { // Entry 757
-    -0x1.fffffffffff9951b30e084732e60bb85p-1,
-    0x1.921fb4p1
-  },
-  { // Entry 758
-    -0x1.fffffffffff9951b30e084732e60bb85p-1,
-    -0x1.921fb4p1
-  },
-  { // Entry 759
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    0x1.921fb6p1
-  },
-  { // Entry 760
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    -0x1.921fb6p1
-  },
-  { // Entry 761
-    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
-    0x1.921fb8p1
-  },
-  { // Entry 762
-    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
-    -0x1.921fb8p1
-  },
-  { // Entry 763
-    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
-    0x1.921fb4p2
-  },
-  { // Entry 764
-    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
-    -0x1.921fb4p2
-  },
-  { // Entry 765
-    0x1.fffffffffff76521249c74285bf73c07p-1,
-    0x1.921fb6p2
-  },
-  { // Entry 766
-    0x1.fffffffffff76521249c74285bf73c07p-1,
-    -0x1.921fb6p2
-  },
-  { // Entry 767
-    0x1.ffffffffff8875d585b6db2c31711004p-1,
-    0x1.921fb8p2
-  },
-  { // Entry 768
-    0x1.ffffffffff8875d585b6db2c31711004p-1,
-    -0x1.921fb8p2
-  },
-  { // Entry 769
-    0x1.ffffffffff9951b30e084a6a993b8675p-1,
-    0x1.921fb4p3
-  },
-  { // Entry 770
-    0x1.ffffffffff9951b30e084a6a993b8675p-1,
-    -0x1.921fb4p3
-  },
-  { // Entry 771
-    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
-    0x1.921fb6p3
-  },
-  { // Entry 772
-    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
-    -0x1.921fb6p3
-  },
-  { // Entry 773
-    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
-    0x1.921fb8p3
-  },
-  { // Entry 774
-    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
-    -0x1.921fb8p3
-  },
-  { // Entry 775
-    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
-    0x1.921fb4p4
-  },
-  { // Entry 776
-    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
-    -0x1.921fb4p4
-  },
-  { // Entry 777
-    0x1.ffffffffff76521249c7484ea7d7a409p-1,
-    0x1.921fb6p4
-  },
-  { // Entry 778
-    0x1.ffffffffff76521249c7484ea7d7a409p-1,
-    -0x1.921fb6p4
-  },
-  { // Entry 779
-    0x1.fffffffff8875d585b720f25f0473943p-1,
-    0x1.921fb8p4
-  },
-  { // Entry 780
-    0x1.fffffffff8875d585b720f25f0473943p-1,
-    -0x1.921fb8p4
-  },
-  { // Entry 781
-    0x1.fffffffff9951b30e087de5cc38683b8p-1,
-    0x1.921fb4p5
-  },
-  { // Entry 782
-    0x1.fffffffff9951b30e087de5cc38683b8p-1,
-    -0x1.921fb4p5
-  },
-  { // Entry 783
-    0x1.fffffffffdd94849271d6b463df6bddfp-1,
-    0x1.921fb6p5
-  },
-  { // Entry 784
-    0x1.fffffffffdd94849271d6b463df6bddfp-1,
-    -0x1.921fb6p5
-  },
-  { // Entry 785
-    0x1.ffffffffe21d75616e000e55d09f8757p-1,
-    0x1.921fb8p5
-  },
-  { // Entry 786
-    0x1.ffffffffe21d75616e000e55d09f8757p-1,
-    -0x1.921fb8p5
-  },
-  { // Entry 787
-    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
-    0x1.921fb4p6
-  },
-  { // Entry 788
-    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
-    -0x1.921fb4p6
-  },
-  { // Entry 789
-    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
-    0x1.921fb6p6
-  },
-  { // Entry 790
-    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
-    -0x1.921fb6p6
-  },
-  { // Entry 791
-    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
-    0x1.921fb8p6
-  },
-  { // Entry 792
-    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
-    -0x1.921fb8p6
-  },
-  { // Entry 793
-    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
-    0x1.921fb4p7
-  },
-  { // Entry 794
-    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
-    -0x1.921fb4p7
-  },
-  { // Entry 795
-    0x1.ffffffffdd948492723342ea1da49bacp-1,
-    0x1.921fb6p7
-  },
-  { // Entry 796
-    0x1.ffffffffdd948492723342ea1da49bacp-1,
-    -0x1.921fb6p7
-  },
-  { // Entry 797
-    0x1.fffffffe21d7561725c712f068fc9718p-1,
-    0x1.921fb8p7
-  },
-  { // Entry 798
-    0x1.fffffffe21d7561725c712f068fc9718p-1,
-    -0x1.921fb8p7
-  },
-  { // Entry 799
-    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
-    0x1.2d97c4p1
-  },
-  { // Entry 800
-    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
-    -0x1.2d97c4p1
-  },
-  { // Entry 801
-    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
-    0x1.2d97c6p1
-  },
-  { // Entry 802
-    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
-    -0x1.2d97c6p1
-  },
-  { // Entry 803
-    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
-    0x1.2d97c8p1
-  },
-  { // Entry 804
-    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
-    -0x1.2d97c8p1
-  },
-  { // Entry 805
-    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
-    0x1.f6a7a0p1
-  },
-  { // Entry 806
-    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
-    -0x1.f6a7a0p1
-  },
-  { // Entry 807
-    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
-    0x1.f6a7a2p1
-  },
-  { // Entry 808
-    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
-    -0x1.f6a7a2p1
-  },
-  { // Entry 809
-    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
-    0x1.f6a7a4p1
-  },
-  { // Entry 810
-    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
-    -0x1.f6a7a4p1
-  },
-  { // Entry 811
-    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
-    0x1.2d97c4p2
-  },
-  { // Entry 812
-    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
-    -0x1.2d97c4p2
-  },
-  { // Entry 813
-    -0x1.f3321d234f1363d187dd09528b67b215p-22,
-    0x1.2d97c6p2
-  },
-  { // Entry 814
-    -0x1.f3321d234f1363d187dd09528b67b215p-22,
-    -0x1.2d97c6p2
-  },
-  { // Entry 815
-    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
-    0x1.2d97c8p2
-  },
-  { // Entry 816
-    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
-    -0x1.2d97c8p2
-  },
-  { // Entry 817
-    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
-    0x1.5fdbbcp2
-  },
-  { // Entry 818
-    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
-    -0x1.5fdbbcp2
-  },
-  { // Entry 819
-    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
-    0x1.5fdbbep2
-  },
-  { // Entry 820
-    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
-    -0x1.5fdbbep2
-  },
-  { // Entry 821
-    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
-    0x1.5fdbc0p2
-  },
-  { // Entry 822
-    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
-    -0x1.5fdbc0p2
-  },
-  { // Entry 823
-    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
-    0x1.c463a8p2
-  },
-  { // Entry 824
-    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
-    -0x1.c463a8p2
-  },
-  { // Entry 825
-    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
-    0x1.c463aap2
-  },
-  { // Entry 826
-    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
-    -0x1.c463aap2
-  },
-  { // Entry 827
-    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
-    0x1.c463acp2
-  },
-  { // Entry 828
-    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
-    -0x1.c463acp2
-  },
-  { // Entry 829
-    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
-    0x1.f6a7a0p2
-  },
-  { // Entry 830
-    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
-    -0x1.f6a7a0p2
-  },
-  { // Entry 831
-    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
-    0x1.f6a7a2p2
-  },
-  { // Entry 832
-    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
-    -0x1.f6a7a2p2
-  },
-  { // Entry 833
-    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
-    0x1.f6a7a4p2
-  },
-  { // Entry 834
-    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
-    -0x1.f6a7a4p2
-  },
-  { // Entry 835
-    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
-    0x1.1475cap3
-  },
-  { // Entry 836
-    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
-    -0x1.1475cap3
-  },
-  { // Entry 837
-    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
-    0x1.1475ccp3
-  },
-  { // Entry 838
-    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
-    -0x1.1475ccp3
-  },
-  { // Entry 839
-    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
-    0x1.1475cep3
-  },
-  { // Entry 840
-    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
-    -0x1.1475cep3
-  },
-  { // Entry 841
-    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
-    0x1.2d97c4p3
-  },
-  { // Entry 842
-    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
-    -0x1.2d97c4p3
-  },
-  { // Entry 843
-    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
-    0x1.2d97c6p3
-  },
-  { // Entry 844
-    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
-    -0x1.2d97c6p3
-  },
-  { // Entry 845
-    -0x1.ffffffffffffd703498c3b8288563915p-1,
-    0x1.2d97c8p3
-  },
-  { // Entry 846
-    -0x1.ffffffffffffd703498c3b8288563915p-1,
-    -0x1.2d97c8p3
-  },
-  { // Entry 847
-    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
-    0x1.46b9c0p3
-  },
-  { // Entry 848
-    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
-    -0x1.46b9c0p3
-  },
-  { // Entry 849
-    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
-    0x1.46b9c2p3
-  },
-  { // Entry 850
-    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
-    -0x1.46b9c2p3
-  },
-  { // Entry 851
-    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
-    0x1.46b9c4p3
-  },
-  { // Entry 852
-    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
-    -0x1.46b9c4p3
-  },
-  { // Entry 853
-    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
-    0x1.5fdbbcp3
-  },
-  { // Entry 854
-    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
-    -0x1.5fdbbcp3
-  },
-  { // Entry 855
-    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
-    0x1.5fdbbep3
-  },
-  { // Entry 856
-    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
-    -0x1.5fdbbep3
-  },
-  { // Entry 857
-    0x1.644588ac238ae493fa32435ba51329bfp-21,
-    0x1.5fdbc0p3
-  },
-  { // Entry 858
-    0x1.644588ac238ae493fa32435ba51329bfp-21,
-    -0x1.5fdbc0p3
-  },
-  { // Entry 859
-    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
-    0x1.78fdb6p3
-  },
-  { // Entry 860
-    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
-    -0x1.78fdb6p3
-  },
-  { // Entry 861
-    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
-    0x1.78fdb8p3
-  },
-  { // Entry 862
-    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
-    -0x1.78fdb8p3
-  },
-  { // Entry 863
-    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
-    0x1.78fdbap3
-  },
-  { // Entry 864
-    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
-    -0x1.78fdbap3
-  },
-  { // Entry 865
-    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
-    0x1.ab41aep3
-  },
-  { // Entry 866
-    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
-    -0x1.ab41aep3
-  },
-  { // Entry 867
-    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
-    0x1.ab41b0p3
-  },
-  { // Entry 868
-    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
-    -0x1.ab41b0p3
-  },
-  { // Entry 869
-    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
-    0x1.ab41b2p3
-  },
-  { // Entry 870
-    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
-    -0x1.ab41b2p3
-  },
-  { // Entry 871
-    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
-    0x1.c463a8p3
-  },
-  { // Entry 872
-    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
-    -0x1.c463a8p3
-  },
-  { // Entry 873
-    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
-    0x1.c463aap3
-  },
-  { // Entry 874
-    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
-    -0x1.c463aap3
-  },
-  { // Entry 875
-    -0x1.334d44b0945407b118b361ab78171f67p-25,
-    0x1.c463acp3
-  },
-  { // Entry 876
-    -0x1.334d44b0945407b118b361ab78171f67p-25,
-    -0x1.c463acp3
-  },
-  { // Entry 877
-    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
-    0x1.dd85a4p3
-  },
-  { // Entry 878
-    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
-    -0x1.dd85a4p3
-  },
-  { // Entry 879
-    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
-    0x1.dd85a6p3
-  },
-  { // Entry 880
-    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
-    -0x1.dd85a6p3
-  },
-  { // Entry 881
-    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
-    0x1.dd85a8p3
-  },
-  { // Entry 882
-    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
-    -0x1.dd85a8p3
-  },
-  { // Entry 883
-    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
-    0x1.f6a7a0p3
-  },
-  { // Entry 884
-    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
-    -0x1.f6a7a0p3
-  },
-  { // Entry 885
-    -0x1.ffffffffffea396ab8aee509392c755dp-1,
-    0x1.f6a7a2p3
-  },
-  { // Entry 886
-    -0x1.ffffffffffea396ab8aee509392c755dp-1,
-    -0x1.f6a7a2p3
-  },
-  { // Entry 887
-    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
-    0x1.f6a7a4p3
-  },
-  { // Entry 888
-    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
-    -0x1.f6a7a4p3
-  },
-  { // Entry 889
-    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
-    0x1.07e4ccp4
-  },
-  { // Entry 890
-    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
-    -0x1.07e4ccp4
-  },
-  { // Entry 891
-    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
-    0x1.07e4cep4
-  },
-  { // Entry 892
-    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
-    -0x1.07e4cep4
-  },
-  { // Entry 893
-    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
-    0x1.07e4d0p4
-  },
-  { // Entry 894
-    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
-    -0x1.07e4d0p4
-  },
-  { // Entry 895
-    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
-    0x1.1475cap4
-  },
-  { // Entry 896
-    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
-    -0x1.1475cap4
-  },
-  { // Entry 897
-    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
-    0x1.1475ccp4
-  },
-  { // Entry 898
-    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
-    -0x1.1475ccp4
-  },
-  { // Entry 899
-    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
-    0x1.1475cep4
-  },
-  { // Entry 900
-    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
-    -0x1.1475cep4
-  },
-  { // Entry 901
-    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
-    0x1.2106c8p4
-  },
-  { // Entry 902
-    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
-    -0x1.2106c8p4
-  },
-  { // Entry 903
-    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
-    0x1.2106cap4
-  },
-  { // Entry 904
-    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
-    -0x1.2106cap4
-  },
-  { // Entry 905
-    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
-    0x1.2106ccp4
-  },
-  { // Entry 906
-    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
-    -0x1.2106ccp4
-  },
-  { // Entry 907
-    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
-    0x1.2d97c4p4
-  },
-  { // Entry 908
-    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
-    -0x1.2d97c4p4
-  },
-  { // Entry 909
-    0x1.fffffffffc32939898f585d6948cf2d1p-1,
-    0x1.2d97c6p4
-  },
-  { // Entry 910
-    0x1.fffffffffc32939898f585d6948cf2d1p-1,
-    -0x1.2d97c6p4
-  },
-  { // Entry 911
-    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
-    0x1.2d97c8p4
-  },
-  { // Entry 912
-    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
-    -0x1.2d97c8p4
-  },
-  { // Entry 913
-    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
-    0x1.3a28c2p4
-  },
-  { // Entry 914
-    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
-    -0x1.3a28c2p4
-  },
-  { // Entry 915
-    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
-    0x1.3a28c4p4
-  },
-  { // Entry 916
-    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
-    -0x1.3a28c4p4
-  },
-  { // Entry 917
-    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
-    0x1.3a28c6p4
-  },
-  { // Entry 918
-    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
-    -0x1.3a28c6p4
-  },
-  { // Entry 919
-    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
-    0x1.46b9c0p4
-  },
-  { // Entry 920
-    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
-    -0x1.46b9c0p4
-  },
-  { // Entry 921
-    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
-    0x1.46b9c2p4
-  },
-  { // Entry 922
-    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
-    -0x1.46b9c2p4
-  },
-  { // Entry 923
-    -0x1.71136b88d4608490f2ddfe90101112aep-21,
-    0x1.46b9c4p4
-  },
-  { // Entry 924
-    -0x1.71136b88d4608490f2ddfe90101112aep-21,
-    -0x1.46b9c4p4
-  },
-  { // Entry 925
-    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
-    0x1.534abep4
-  },
-  { // Entry 926
-    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
-    -0x1.534abep4
-  },
-  { // Entry 927
-    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
-    0x1.534ac0p4
-  },
-  { // Entry 928
-    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
-    -0x1.534ac0p4
-  },
-  { // Entry 929
-    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
-    0x1.534ac2p4
-  },
-  { // Entry 930
-    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
-    -0x1.534ac2p4
-  },
-  { // Entry 931
-    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
-    0x1.5fdbbcp4
-  },
-  { // Entry 932
-    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
-    -0x1.5fdbbcp4
-  },
-  { // Entry 933
-    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
-    0x1.5fdbbep4
-  },
-  { // Entry 934
-    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
-    -0x1.5fdbbep4
-  },
-  { // Entry 935
-    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
-    0x1.5fdbc0p4
-  },
-  { // Entry 936
-    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
-    -0x1.5fdbc0p4
-  },
-  { // Entry 937
-    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
-    0x1.6c6cbap4
-  },
-  { // Entry 938
-    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
-    -0x1.6c6cbap4
-  },
-  { // Entry 939
-    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
-    0x1.6c6cbcp4
-  },
-  { // Entry 940
-    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
-    -0x1.6c6cbcp4
-  },
-  { // Entry 941
-    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
-    0x1.6c6cbep4
-  },
-  { // Entry 942
-    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
-    -0x1.6c6cbep4
-  },
-  { // Entry 943
-    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
-    0x1.78fdb6p4
-  },
-  { // Entry 944
-    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
-    -0x1.78fdb6p4
-  },
-  { // Entry 945
-    -0x1.effea46c21baa3da7c266c953a013598p-20,
-    0x1.78fdb8p4
-  },
-  { // Entry 946
-    -0x1.effea46c21baa3da7c266c953a013598p-20,
-    -0x1.78fdb8p4
-  },
-  { // Entry 947
-    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
-    0x1.78fdbap4
-  },
-  { // Entry 948
-    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
-    -0x1.78fdbap4
-  },
-  { // Entry 949
-    0x1.6a0994e68b787ee4fd6830b288225745p-1,
-    0x1.858eb4p4
-  },
-  { // Entry 950
-    0x1.6a0994e68b787ee4fd6830b288225745p-1,
-    -0x1.858eb4p4
-  },
-  { // Entry 951
-    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
-    0x1.858eb6p4
-  },
-  { // Entry 952
-    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
-    -0x1.858eb6p4
-  },
-  { // Entry 953
-    0x1.6a09ef690e2283b658509ed319483839p-1,
-    0x1.858eb8p4
-  },
-  { // Entry 954
-    0x1.6a09ef690e2283b658509ed319483839p-1,
-    -0x1.858eb8p4
-  },
-  { // Entry 955
-    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
-    0x1.fffffep62
-  },
-  { // Entry 956
-    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
-    -0x1.fffffep62
-  },
-  { // Entry 957
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    0x1.p63
-  },
-  { // Entry 958
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    -0x1.p63
-  },
-  { // Entry 959
-    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
-    0x1.000002p63
-  },
-  { // Entry 960
-    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
-    -0x1.000002p63
-  },
-  { // Entry 961
-    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
-    0x1.fffffep26
-  },
-  { // Entry 962
-    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
-    -0x1.fffffep26
-  },
-  { // Entry 963
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    0x1.p27
-  },
-  { // Entry 964
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    -0x1.p27
-  },
-  { // Entry 965
-    -0x1.ad3d80c82f4452b076581de24648435bp-1,
-    0x1.000002p27
-  },
-  { // Entry 966
-    -0x1.ad3d80c82f4452b076581de24648435bp-1,
-    -0x1.000002p27
-  },
-  { // Entry 967
-    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
-    0x1.fffffep23
-  },
-  { // Entry 968
-    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
-    -0x1.fffffep23
-  },
-  { // Entry 969
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    0x1.p24
-  },
-  { // Entry 970
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    -0x1.p24
-  },
-  { // Entry 971
-    0x1.caf8537c3e442ca8aca86c156773853ap-2,
-    0x1.000002p24
-  },
-  { // Entry 972
-    0x1.caf8537c3e442ca8aca86c156773853ap-2,
-    -0x1.000002p24
-  },
-  { // Entry 973
-    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
-    0x1.fffffep1
-  },
-  { // Entry 974
-    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
-    -0x1.fffffep1
-  },
-  { // Entry 975
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    0x1.p2
-  },
-  { // Entry 976
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    -0x1.p2
-  },
-  { // Entry 977
-    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
-    0x1.000002p2
-  },
-  { // Entry 978
-    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
-    -0x1.000002p2
-  },
-  { // Entry 979
-    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
-    0x1.fffffep0
-  },
-  { // Entry 980
-    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
-    -0x1.fffffep0
-  },
-  { // Entry 981
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    0x1.p1
-  },
-  { // Entry 982
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    -0x1.p1
-  },
-  { // Entry 983
-    -0x1.aa227401b288620a0372d5a96084915dp-2,
-    0x1.000002p1
-  },
-  { // Entry 984
-    -0x1.aa227401b288620a0372d5a96084915dp-2,
-    -0x1.000002p1
-  },
-  { // Entry 985
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    0x1.fffffep-1
-  },
-  { // Entry 986
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    -0x1.fffffep-1
-  },
-  { // Entry 987
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.p0
-  },
-  { // Entry 988
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.p0
-  },
-  { // Entry 989
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    0x1.000002p0
-  },
-  { // Entry 990
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    -0x1.000002p0
-  },
-  { // Entry 991
-    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
-    0x1.fffffep-2
-  },
-  { // Entry 992
-    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
-    -0x1.fffffep-2
-  },
-  { // Entry 993
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    0x1.p-1
-  },
-  { // Entry 994
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    -0x1.p-1
-  },
-  { // Entry 995
-    0x1.c1527f70409076da0c3204df1e099a83p-1,
-    0x1.000002p-1
-  },
-  { // Entry 996
-    0x1.c1527f70409076da0c3204df1e099a83p-1,
-    -0x1.000002p-1
-  },
-  { // Entry 997
-    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
-    0x1.fffffep-3
-  },
-  { // Entry 998
-    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
-    -0x1.fffffep-3
-  },
-  { // Entry 999
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    0x1.p-2
-  },
-  { // Entry 1000
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    -0x1.p-2
-  },
-  { // Entry 1001
-    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
-    0x1.000002p-2
-  },
-  { // Entry 1002
-    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
-    -0x1.000002p-2
-  },
-  { // Entry 1003
-    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
-    0x1.fffffep-4
-  },
-  { // Entry 1004
-    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
-    -0x1.fffffep-4
-  },
-  { // Entry 1005
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    0x1.p-3
-  },
-  { // Entry 1006
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    -0x1.p-3
-  },
-  { // Entry 1007
-    0x1.fc015517e065afb6bb102c18f5919820p-1,
-    0x1.000002p-3
-  },
-  { // Entry 1008
-    0x1.fc015517e065afb6bb102c18f5919820p-1,
-    -0x1.000002p-3
-  },
-  { // Entry 1009
-    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
-    0x1.fffffep-5
-  },
-  { // Entry 1010
-    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
-    -0x1.fffffep-5
-  },
-  { // Entry 1011
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    0x1.p-4
-  },
-  { // Entry 1012
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    -0x1.p-4
-  },
-  { // Entry 1013
-    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
-    0x1.000002p-4
-  },
-  { // Entry 1014
-    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
-    -0x1.000002p-4
-  },
-  { // Entry 1015
-    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
-    0x1.fffffep-6
-  },
-  { // Entry 1016
-    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
-    -0x1.fffffep-6
-  },
-  { // Entry 1017
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    0x1.p-5
-  },
-  { // Entry 1018
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    -0x1.p-5
-  },
-  { // Entry 1019
-    0x1.ffc001545287d49b57972af5145663a0p-1,
-    0x1.000002p-5
-  },
-  { // Entry 1020
-    0x1.ffc001545287d49b57972af5145663a0p-1,
-    -0x1.000002p-5
-  },
-  { // Entry 1021
-    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
-    0x1.fffffep-7
-  },
-  { // Entry 1022
-    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
-    -0x1.fffffep-7
-  },
-  { // Entry 1023
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    0x1.p-6
-  },
-  { // Entry 1024
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    -0x1.p-6
-  },
-  { // Entry 1025
-    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
-    0x1.000002p-6
-  },
-  { // Entry 1026
-    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
-    -0x1.000002p-6
-  },
-  { // Entry 1027
-    0x1.fffffff0000020155544fff49fca38e6p-1,
-    0x1.fffffep-15
-  },
-  { // Entry 1028
-    0x1.fffffff0000020155544fff49fca38e6p-1,
-    -0x1.fffffep-15
-  },
-  { // Entry 1029
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    0x1.p-14
-  },
-  { // Entry 1030
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    -0x1.p-14
-  },
-  { // Entry 1031
-    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
-    0x1.000002p-14
-  },
-  { // Entry 1032
-    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
-    -0x1.000002p-14
-  },
-  { // Entry 1033
-    0x1.fffffffffffffc000007fffffc015555p-1,
-    0x1.fffffep-28
-  },
-  { // Entry 1034
-    0x1.fffffffffffffc000007fffffc015555p-1,
-    -0x1.fffffep-28
-  },
-  { // Entry 1035
-    0x1.fffffffffffffc000000000000015555p-1,
-    0x1.p-27
-  },
-  { // Entry 1036
-    0x1.fffffffffffffc000000000000015555p-1,
-    -0x1.p-27
-  },
-  { // Entry 1037
-    0x1.fffffffffffffbffffeffffff0015555p-1,
-    0x1.000002p-27
-  },
-  { // Entry 1038
-    0x1.fffffffffffffbffffeffffff0015555p-1,
-    -0x1.000002p-27
-  },
-  { // Entry 1039
-    0x1.fffffffffffffff000001ffffff00015p-1,
-    0x1.fffffep-31
-  },
-  { // Entry 1040
-    0x1.fffffffffffffff000001ffffff00015p-1,
-    -0x1.fffffep-31
-  },
-  { // Entry 1041
-    0x1.fffffffffffffff00000000000000015p-1,
-    0x1.p-30
-  },
-  { // Entry 1042
-    0x1.fffffffffffffff00000000000000015p-1,
-    -0x1.p-30
-  },
-  { // Entry 1043
-    0x1.ffffffffffffffefffffbfffffc00015p-1,
-    0x1.000002p-30
-  },
-  { // Entry 1044
-    0x1.ffffffffffffffefffffbfffffc00015p-1,
-    -0x1.000002p-30
-  },
-  { // Entry 1045
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1046
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1047
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1048
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1049
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1050
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1051
-    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
-    0x1.fffffcp127
-  },
-  { // Entry 1052
-    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
-    -0x1.fffffcp127
-  },
-  { // Entry 1053
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    0x1.921fb6p1
-  },
-  { // Entry 1054
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    -0x1.921fb6p1
-  },
-  { // Entry 1055
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    0x1.921fb6p0
-  },
-  { // Entry 1056
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    -0x1.921fb6p0
-  },
-  { // Entry 1057
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    0x1.000002p0
-  },
-  { // Entry 1058
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    -0x1.000002p0
-  },
-  { // Entry 1059
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.p0
-  },
-  { // Entry 1060
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.p0
-  },
-  { // Entry 1061
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    0x1.fffffep-1
-  },
-  { // Entry 1062
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    -0x1.fffffep-1
-  },
-  { // Entry 1063
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    0x1.921fb6p-1
-  },
-  { // Entry 1064
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    -0x1.921fb6p-1
-  },
-  { // Entry 1065
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.000002p-126
-  },
-  { // Entry 1066
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.000002p-126
-  },
-  { // Entry 1067
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-126
-  },
-  { // Entry 1068
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-126
-  },
-  { // Entry 1069
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffffcp-127
-  },
-  { // Entry 1070
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffffcp-127
-  },
-  { // Entry 1071
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffff8p-127
-  },
-  { // Entry 1072
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffff8p-127
-  },
-  { // Entry 1073
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-148
-  },
-  { // Entry 1074
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-148
-  },
-  { // Entry 1075
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149
-  },
-  { // Entry 1076
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 1077
-    0x1.p0,
-    0.0f
-  },
-  { // Entry 1078
-    0x1.p0,
-    -0.0f
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_cosf, cosf_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_cosf_intel_data)/sizeof(cosf_intel_data_t); i++) {
-    EXPECT_FLOAT_EQ(g_cosf_intel_data[i].expected, cosf(g_cosf_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_data/acos_intel_data.h b/tests/math_data/acos_intel_data.h
new file mode 100644
index 0000000..5c177ce
--- /dev/null
+++ b/tests/math_data/acos_intel_data.h
@@ -0,0 +1,1314 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_acos_intel_data[] = {
+  { // Entry 0
+    0x1.c8a538ae83d1f7ffffffffffffcef091p-1,
+    0x1.4182199998587p-1
+  },
+  { // Entry 1
+    0x1.520dc553f6b23800000000000226b93cp-2,
+    0x1.e45a1c93651ecp-1
+  },
+  { // Entry 2
+    0x1.91e006d41d8d8fffffffffffffffe4aep0,
+    0x1.fd737be914578p-11
+  },
+  { // Entry 3
+    0x1.efeef61d39ac1ffffffffffff8244904p-3,
+    0x1.f10fc61e2c78fp-1
+  },
+  { // Entry 4
+    0x1.0c152382d8f1bff4e139b41e4025d0fcp1,
+    -0x1.00000000060p-1
+  },
+  { // Entry 5
+    0x1.0c152382e0732be923fe009ea0c7355dp1,
+    -0x1.000000002p-1
+  },
+  { // Entry 6
+    0x1.d2cf5cbe8a4768000d63bae9c7297bcfp0,
+    -0x1.00000100001p-2
+  },
+  { // Entry 7
+    0x1.0c164c45aca25370b59ffdf4a18d65a1p1,
+    -0x1.0004040p-1
+  },
+  { // Entry 8
+    0x1.a222e1630a32c8001e3ce23da074be9bp0,
+    -0x1.0007ffffffffep-4
+  },
+  { // Entry 9
+    0x1.0c75b731b9c0ceed0fc3f7c5f98c5e1bp1,
+    -0x1.014e445bdcf7dp-1
+  },
+  { // Entry 10
+    0x1.0c8df00b6a96b44b4bbb209fc767369fp1,
+    -0x1.01a2037b1bac4p-1
+  },
+  { // Entry 11
+    0x1.0de4edea718bd2db5b8f1e8d95da11f5p1,
+    -0x1.064p-1
+  },
+  { // Entry 12
+    0x1.0e4b7c84d10ff2cdc09d8629c37c6bf9p1,
+    -0x1.07ap-1
+  },
+  { // Entry 13
+    0x1.0f2e40d09060f1a3d94731a6ca70a8ddp1,
+    -0x1.0aa7f71e6e71cp-1
+  },
+  { // Entry 14
+    0x1.0f43445ef5606fffa32df1d88ff691efp1,
+    -0x1.0aefb502023b6p-1
+  },
+  { // Entry 15
+    0x1.101adb881a80b24d6b78dbda9f109728p1,
+    -0x1.0dce1b9c37387p-1
+  },
+  { // Entry 16
+    0x1.10e62fa769e6534e688c4e0e33eca505p1,
+    -0x1.108p-1
+  },
+  { // Entry 17
+    0x1.11c33797afddabbea24dc3547594c5c0p1,
+    -0x1.136ae890a0b29p-1
+  },
+  { // Entry 18
+    0x1.1bae2535eaee0c1296c6eab12d27114ap1,
+    -0x1.340p-1
+  },
+  { // Entry 19
+    0x1.238d4f63c0137461ca7c6635fd0225bcp1,
+    -0x1.4c8df30e0f9f9p-1
+  },
+  { // Entry 20
+    0x1.bd4c060e9d4fa8000ae2414e49c449dep0,
+    -0x1.57cp-3
+  },
+  { // Entry 21
+    0x1.f3739df16d5810008dbb8f86206274e3p0,
+    -0x1.7c0p-2
+  },
+  { // Entry 22
+    0x1.359d26f93b6c08001b822971ead56e4cp1,
+    -0x1.7fffffffffff9p-1
+  },
+  { // Entry 23
+    0x1.f4aa0ecbe9ca07ff5383e6cbdeda0e6fp0,
+    -0x1.808p-2
+  },
+  { // Entry 24
+    0x1.3f176283f912f4d5c7129ad9f5141c1dp1,
+    -0x1.980p-1
+  },
+  { // Entry 25
+    0x1.92398cd07734cfff8e4658afba76b963p0,
+    -0x1.9d78c29270c37p-12
+  },
+  { // Entry 26
+    0x1.0241ccc7797b28001d8b3ed530288167p1,
+    -0x1.ba7c5af7cd988p-2
+  },
+  { // Entry 27
+    0x1.a0fad7a0ff6ff7ff77e44ec7b5ef9ba3p0,
+    -0x1.db2p-5
+  },
+  { // Entry 28
+    0x1.921fb54442d18469898cc51711854bddp0,
+    -0x1.f9a2475d37a04p-101
+  },
+  { // Entry 29
+    0x1.921fb54442d18469898cc517119368e5p0,
+    -0x1.fb65e86dc7e52p-101
+  },
+  { // Entry 30
+    0x1.821f3cbecf0a577f98d9122b4f7b3737p1,
+    -0x1.fc01190c5f1d4p-1
+  },
+  { // Entry 31
+    0x1.931eb46e6d8fd80019cf2ec002d1ea6ep0,
+    -0x1.fdfdfffffffffp-9
+  },
+  { // Entry 32
+    0x1.d2bdcdea4bbff28ee1513ce0581e6b80p0,
+    -0x1.ff77fffffffffp-3
+  },
+  { // Entry 33
+    0x1.b235294c376f9ffbe3cda85efb67c658p0,
+    -0x1.ffff7ffffffffp-4
+  },
+  { // Entry 34
+    0x1.0c1523808801280001696015d499795fp1,
+    -0x1.ffffffeffffe1p-2
+  },
+  { // Entry 35
+    0x1.9a200aa3332ca8002dd33eda52daa3b5p0,
+    -0x1.ffffffffff8ffp-6
+  },
+  { // Entry 36
+    0x1.0c152382d7340fff11bb3dc1f95c2689p1,
+    -0x1.fffffffffff03p-2
+  },
+  { // Entry 37
+    0x1.9a200aa3332e67f83053ef04d0a4eb45p0,
+    -0x1.ffffffffffffep-6
+  },
+  { // Entry 38
+    0x1.921fb54442d18869898cc517019839a2p0,
+    -0x1.fffffffffffffp-55
+  },
+  { // Entry 39
+    0x1.720a392c1d8527f0766bdc231b390704p0,
+    0x1.00000000008p-3
+  },
+  { // Entry 40
+    0x1.51700e0c1325b800d16de8911c74de7dp0,
+    0x1.00000000060p-2
+  },
+  { // Entry 41
+    0x1.720a392c198d30009edc2a4283eae411p0,
+    0x1.000000002p-3
+  },
+  { // Entry 42
+    0x1.0c1523804a159000007341c4be8459a3p0,
+    0x1.000000046b404p-1
+  },
+  { // Entry 43
+    0x1.0c15235de3e7cb9bd2348617696fafccp0,
+    0x1.0000004p-1
+  },
+  { // Entry 44
+    0x1.51700cf3291357ffa4ca332eb644f0f6p0,
+    0x1.0000044p-2
+  },
+  { // Entry 45
+    0x1.911fb1199613980023854405784aadecp0,
+    0x1.0004000000050p-8
+  },
+  { // Entry 46
+    0x1.512df2849c580e80a384e0df8f8e5a29p0,
+    0x1.010p-2
+  },
+  { // Entry 47
+    0x1.0a2f22b4aaf4137fd551484ed58a9734p0,
+    0x1.0347f8edc9a96p-1
+  },
+  { // Entry 48
+    0x1.4e34727b36618e7b44a67aa702c53623p0,
+    0x1.0c8p-2
+  },
+  { // Entry 49
+    0x1.04bc2567dc9f8cd86255dcf4fafa7693p0,
+    0x1.0c9e8916420b6p-1
+  },
+  { // Entry 50
+    0x1.04014982d9ce73c468c55eb187532cd7p0,
+    0x1.0ddc68b675658p-1
+  },
+  { // Entry 51
+    0x1.81385760faf0f7fe7fd9d1f793eb6e9bp0,
+    0x1.0e4390e4390e1p-4
+  },
+  { // Entry 52
+    0x1.4d7407811e5f8f522dfdeb46952e8762p0,
+    0x1.0f6671d3cee5ep-2
+  },
+  { // Entry 53
+    0x1.4d4c369ec6516bd075addb99a8f1fdc7p0,
+    0x1.0ffffffe0p-2
+  },
+  { // Entry 54
+    0x1.899f4edc942ce80055c005582a9d9f5fp0,
+    0x1.100000004p-5
+  },
+  { // Entry 55
+    0x1.02bb48da5f7b9308fc7983b9f555bdf9p0,
+    0x1.1005a3ac6f054p-1
+  },
+  { // Entry 56
+    0x1.028b1af46d959324ee19f46a706b7d35p0,
+    0x1.1057411e5735ap-1
+  },
+  { // Entry 57
+    0x1.020b51b1f72a8c2e4de9ec5488de7857p0,
+    0x1.112f8a27ba5d5p-1
+  },
+  { // Entry 58
+    0x1.01e697d61109f3bbb99fe25e8efaf83fp0,
+    0x1.116da6bf8b495p-1
+  },
+  { // Entry 59
+    0x1.017d9b789233f3964f1c62e3d1f18bb8p0,
+    0x1.121f157cb6c0ap-1
+  },
+  { // Entry 60
+    0x1.0176c4d6b5631326381f276a1cf5aff2p0,
+    0x1.122aa2913636cp-1
+  },
+  { // Entry 61
+    0x1.00d2160daa60f2dc9c5d2070d90ff117p0,
+    0x1.134093e8f975bp-1
+  },
+  { // Entry 62
+    0x1.0067819bc0a6131b2515e089e5ffead6p0,
+    0x1.13f438738f770p-1
+  },
+  { // Entry 63
+    0x1.005af0d670a69300326d1f919e90e37ep0,
+    0x1.1409633da0018p-1
+  },
+  { // Entry 64
+    0x1.0006aaab22f953446798783c17afa73ap0,
+    0x1.149748a9f1e12p-1
+  },
+  { // Entry 65
+    0x1.8dc1a761fc3e27ffddbace0c08f7d931p0,
+    0x1.178p-6
+  },
+  { // Entry 66
+    0x1.faedbe5d362f77e0e37df0ba380d6bf2p-1,
+    0x1.18e37509b64bfp-1
+  },
+  { // Entry 67
+    0x1.f723c85457f23e048017ebac9828f74ap-1,
+    0x1.1c0c71b0d77b4p-1
+  },
+  { // Entry 68
+    0x1.f40045aa068255be54395b26191ca6ecp-1,
+    0x1.1ea7972fc8124p-1
+  },
+  { // Entry 69
+    0x1.f3e4a7973ba9f5bc588023272bfd8fefp-1,
+    0x1.1ebe78e20b1c4p-1
+  },
+  { // Entry 70
+    0x1.f35b18d9133df5c3286ad7c7f3a599ebp-1,
+    0x1.1f306490c5782p-1
+  },
+  { // Entry 71
+    0x1.edf06e518f1d7e7d6318864553757b63p-1,
+    0x1.23a83d7649788p-1
+  },
+  { // Entry 72
+    0x1.edae9bcb630d4d2d95081b152b6797a3p-1,
+    0x1.23de545deeef6p-1
+  },
+  { // Entry 73
+    0x1.eb59d70c979f2da8249d5a4f58755b8fp-1,
+    0x1.25c7dcb26a9cap-1
+  },
+  { // Entry 74
+    0x1.ea55cf128780505242c68838513032e7p-1,
+    0x1.269cae16c3f63p-1
+  },
+  { // Entry 75
+    0x1.e0c7b682b6a8581abfbc77e99954db72p-1,
+    0x1.2e6p-1
+  },
+  { // Entry 76
+    0x1.d9b299bbb4e537ac6ff62206d2da36b3p-1,
+    0x1.340fb2423c6b3p-1
+  },
+  { // Entry 77
+    0x1.d538889085d30e4ca3abe981c9888d22p-1,
+    0x1.37a0130f68f6ap-1
+  },
+  { // Entry 78
+    0x1.8d4034388cd22fff892e9180c4337f63p0,
+    0x1.37db709c37bf5p-6
+  },
+  { // Entry 79
+    0x1.c8a538ae83d1f7ffffffffffffcef091p-1,
+    0x1.4182199998587p-1
+  },
+  { // Entry 80
+    0x1.3ea71520cf3d37faeb955cf605d0a7dbp0,
+    0x1.480p-2
+  },
+  { // Entry 81
+    0x1.be76e54ddede3ffe867c8817e7c6e06fp-1,
+    0x1.495e1625f7b6fp-1
+  },
+  { // Entry 82
+    0x1.921562b09cf0e8004c5a81cf221a6e56p0,
+    0x1.4a5274a529496p-13
+  },
+  { // Entry 83
+    0x1.af9fdabd59d9e658ff0e5e8c0c145370p-1,
+    0x1.5496e087b338fp-1
+  },
+  { // Entry 84
+    0x1.91f48e0a5cec37ffff970d899abc38d6p0,
+    0x1.5939cd8c9fbedp-11
+  },
+  { // Entry 85
+    0x1.a5282161b01857fa74d0820197a14f5ep-1,
+    0x1.5c55572447fb8p-1
+  },
+  { // Entry 86
+    0x1.9c0c4195064df7ffd3c667633bf7a651p-1,
+    0x1.62f42a09bce1dp-1
+  },
+  { // Entry 87
+    0x1.91c4c20a0ea7f800004eb45095fd191ap0,
+    0x1.6bcce1297373ep-10
+  },
+  { // Entry 88
+    0x1.339d18f59afb880000d2fbce3d9c08c2p0,
+    0x1.7182fc23eb316p-2
+  },
+  { // Entry 89
+    0x1.7ad4c5762d7b6800001a3adffeded5f4p0,
+    0x1.742b66dcd4308p-4
+  },
+  { // Entry 90
+    0x1.32882c24236038000cd47b0b46bba64ep0,
+    0x1.758b345cb9f3ep-2
+  },
+  { // Entry 91
+    0x1.7f46927c463a28062e3b1b0c16ac1bdbp-1,
+    0x1.771e38e0af4fcp-1
+  },
+  { // Entry 92
+    0x1.782ebe246cbe37e3fb6a1ef678b064bfp-1,
+    0x1.7be8d3908cb27p-1
+  },
+  { // Entry 93
+    0x1.7a40db57e99637fea04162825b2bc181p0,
+    0x1.7d6p-4
+  },
+  { // Entry 94
+    0x1.720a392c1d9517f0970e86dd5de5b635p-1,
+    0x1.8000000000002p-1
+  },
+  { // Entry 95
+    0x1.2e038f4737dfb7f94f31df896ea0ac7ap0,
+    0x1.864fbb7b12ad6p-2
+  },
+  { // Entry 96
+    0x1.657df1f3a0bc08338a7af19c234dfc3ap-1,
+    0x1.882efd2dd4220p-1
+  },
+  { // Entry 97
+    0x1.85cea1911701e80000bca0371b899679p0,
+    0x1.89fb8a6df15e2p-5
+  },
+  { // Entry 98
+    0x1.2a202393ed2377fd5857f95af8665161p0,
+    0x1.94a5294a52948p-2
+  },
+  { // Entry 99
+    0x1.781e4389c0b36fff9c101747cda30edcp0,
+    0x1.9f6p-4
+  },
+  { // Entry 100
+    0x1.5d318bf3e390e7fff88af7a5da604d3ap0,
+    0x1.a46e97f496ea3p-3
+  },
+  { // Entry 101
+    0x1.1b5148dd9e1bd7b01791138f3f325580p-1,
+    0x1.b397a5f961839p-1
+  },
+  { // Entry 102
+    0x1.1a583fd138fb37a3f6d2f07dbf3ec7b3p-1,
+    0x1.b41a53773a4e3p-1
+  },
+  { // Entry 103
+    0x1.14823c2657c87f555ecd15bb19387e6bp-1,
+    0x1.b721cf87383f3p-1
+  },
+  { // Entry 104
+    0x1.1301fd2ab34e480181c3a283011497c5p-1,
+    0x1.b7e6e68840de9p-1
+  },
+  { // Entry 105
+    0x1.12e096afcb7de8799b39619a4d425055p-1,
+    0x1.b7f7fc997bfe3p-1
+  },
+  { // Entry 106
+    0x1.05b944cc4600b7f611b44550901f0ceep-1,
+    0x1.be8cd7678f521p-1
+  },
+  { // Entry 107
+    0x1.8e9f6e1d3decc7fff55630ea5ccfd289p0,
+    0x1.c01ffffffffffp-7
+  },
+  { // Entry 108
+    0x1.ffc7ad9153ff2fd7a788766680d9a358p-2,
+    0x1.c16p-1
+  },
+  { // Entry 109
+    0x1.1dc2cb388dc96800004b1ca5a21af6b0p0,
+    0x1.c196ba7c38699p-2
+  },
+  { // Entry 110
+    0x1.fb29d815d149880a7b959c1fb8374fd0p-2,
+    0x1.c27a04ea38cddp-1
+  },
+  { // Entry 111
+    0x1.fb0f38754a0cf7f96b7417b739fd6712p-2,
+    0x1.c280586977fd3p-1
+  },
+  { // Entry 112
+    0x1.f1884288008e97f81e1bbdd955287e5bp-2,
+    0x1.c4bed345ea41ap-1
+  },
+  { // Entry 113
+    0x1.eb974d89e1c136026c6858b963f4f0d2p-2,
+    0x1.c62p-1
+  },
+  { // Entry 114
+    0x1.e297da83df05f62c3022324c50ec1611p-2,
+    0x1.c82f6b1c3d906p-1
+  },
+  { // Entry 115
+    0x1.589c2963846ca801074a478b55f6b7cap0,
+    0x1.c84p-3
+  },
+  { // Entry 116
+    0x1.cdd9f8d6e777f7ffff853f09a06b5911p-2,
+    0x1.ccccccd442bf9p-1
+  },
+  { // Entry 117
+    0x1.c42907c37d1b27cc0fa3350a28179421p-2,
+    0x1.cee437c4d6115p-1
+  },
+  { // Entry 118
+    0x1.bf05da450c97f7f8826c8bfaa9e0af95p-2,
+    0x1.cffbbf702a732p-1
+  },
+  { // Entry 119
+    0x1.bedf70d3703617fac6520f0337bf4a56p-2,
+    0x1.d003ddf5923bap-1
+  },
+  { // Entry 120
+    0x1.b5d5824cd5a5b7f84e927113df50ca1dp-2,
+    0x1.d1e84213079a0p-1
+  },
+  { // Entry 121
+    0x1.a858c231190e17fa9b20a3d037ec0e43p-2,
+    0x1.d4a9c16b6b42ep-1
+  },
+  { // Entry 122
+    0x1.9f6c7fe8723777fb3d256621194eb6f1p-2,
+    0x1.d6711059b2ce3p-1
+  },
+  { // Entry 123
+    0x1.9d5978ef2047b7f97b093ad7540b39b8p-2,
+    0x1.d6d99a0c90a6ap-1
+  },
+  { // Entry 124
+    0x1.9cb189645b2df7f79b30cb75dff78e0bp-2,
+    0x1.d6fa8f01023cfp-1
+  },
+  { // Entry 125
+    0x1.97b574226c7d77fd9b3bd3bc8ba77dd9p-2,
+    0x1.d7f35e4f0e194p-1
+  },
+  { // Entry 126
+    0x1.9613e250da73e8056bef22e9fe299078p-2,
+    0x1.d8442a16f8a05p-1
+  },
+  { // Entry 127
+    0x1.95e4749133f2a806cc1561ec93381a09p-2,
+    0x1.d84d5271eccedp-1
+  },
+  { // Entry 128
+    0x1.858c8c0e0f34bf9b87be908d0e8cd365p-2,
+    0x1.db658d47a4f02p-1
+  },
+  { // Entry 129
+    0x1.6bf38913626aa7ff1b8b15b0481456e5p-2,
+    0x1.e00000007ffffp-1
+  },
+  { // Entry 130
+    0x1.3c2328dda8571001f1fa3a4b1b738ab2p-2,
+    0x1.e7cb07ba8097ap-1
+  },
+  { // Entry 131
+    0x1.37fa7f88bd54d0023b864b207af0307cp-2,
+    0x1.e86bbf35007dfp-1
+  },
+  { // Entry 132
+    0x1.29ce7191cc2fe7ff1aee4a298866fa12p-2,
+    0x1.ea7feaf29d558p-1
+  },
+  { // Entry 133
+    0x1.1cedf22edfdaee581a28423c374a63e9p-2,
+    0x1.ec4e9a59613acp-1
+  },
+  { // Entry 134
+    0x1.110e9a3d93e5d3b661dc886b7dfc0145p0,
+    0x1.eeac200629b5dp-2
+  },
+  { // Entry 135
+    0x1.ffd3bf06ed2642f1bf646de4dfb90f14p-3,
+    0x1.f018068f84bdep-1
+  },
+  { // Entry 136
+    0x1.106ef026ab7e73cb6256ab29382a05f3p0,
+    0x1.f0daf154de72cp-2
+  },
+  { // Entry 137
+    0x1.ecd91ecf5a9e8000fcf0fe2a481676b9p-3,
+    0x1.f13efac234068p-1
+  },
+  { // Entry 138
+    0x1.d75772546bfc7f3d87511ce008b8b8c3p-3,
+    0x1.f28p-1
+  },
+  { // Entry 139
+    0x1.d5b9693237ace821fe875ccefd4cc418p-3,
+    0x1.f297929fe63cap-1
+  },
+  { // Entry 140
+    0x1.af6c2d4b59de08016fcef2f0148a746dp-3,
+    0x1.f4ae875c6bacbp-1
+  },
+  { // Entry 141
+    0x1.a6be0361001ee8060af2ba4dd0c50aa9p-3,
+    0x1.f5218a91baa07p-1
+  },
+  { // Entry 142
+    0x1.0ee85baa5eb7f3fbe1fccd08bc3b4492p0,
+    0x1.f62ec3b97b60cp-2
+  },
+  { // Entry 143
+    0x1.0e9a941b232133fa63772cc6a091171bp0,
+    0x1.f73dcf73dcf70p-2
+  },
+  { // Entry 144
+    0x1.6c424b343238b7c44b51bd77c7190160p-3,
+    0x1.f7ec434d201d1p-1
+  },
+  { // Entry 145
+    0x1.6a83017dfb54de59e9192470188662cfp-3,
+    0x1.f80p-1
+  },
+  { // Entry 146
+    0x1.90252d2c42cd97ffe9be50f9322516ccp0,
+    0x1.fa86cd7cf3513p-8
+  },
+  { // Entry 147
+    0x1.0d58a360c87c4bbf3d29d0f4a82169bbp0,
+    0x1.fb9dc5ca73720p-2
+  },
+  { // Entry 148
+    0x1.fa6c651bf32d78660fb62ba8468a8cc0p-4,
+    0x1.fc1775dbef1abp-1
+  },
+  { // Entry 149
+    0x1.f7c328cf834cd87de2b639509dda5de1p-4,
+    0x1.fc21ef3b98990p-1
+  },
+  { // Entry 150
+    0x1.f3c8ed27ef9f283f2ac70ec9d6098d19p-4,
+    0x1.fc317cd691f52p-1
+  },
+  { // Entry 151
+    0x1.eea6e96b75ead807baca906e58bb8059p-4,
+    0x1.fc4560a02d712p-1
+  },
+  { // Entry 152
+    0x1.0d1a4cf1b1fd73b9c4a8b5017d645f3bp0,
+    0x1.fc76453e6bae8p-2
+  },
+  { // Entry 153
+    0x1.df3494c7556a03ecf756bf4c5c1d24b7p-4,
+    0x1.fc7ffffffffffp-1
+  },
+  { // Entry 154
+    0x1.0d05103b42c9940e6e6c705d65e17858p0,
+    0x1.fccp-2
+  },
+  { // Entry 155
+    0x1.9c9bb5b4c94c8001b817fedb0eaca0ecp-4,
+    0x1.fd678a5a7385ep-1
+  },
+  { // Entry 156
+    0x1.f4f3987cd68ff86900930a2b99148f4fp-5,
+    0x1.ff0b016f7cb8bp-1
+  },
+  { // Entry 157
+    0x1.b96fe9afa4c148152f48dd9ea74565d6p-5,
+    0x1.ff41bf1886212p-1
+  },
+  { // Entry 158
+    0x1.a38189360e584c2c315c37b74a8de324p-5,
+    0x1.ff542d4af33e4p-1
+  },
+  { // Entry 159
+    0x1.def2feb427f5869945b1e63446daac8ep-6,
+    0x1.ffc7fffffffffp-1
+  },
+  { // Entry 160
+    0x1.911fb919aa13a80003dab66eeb93af47p0,
+    0x1.fff7ffep-9
+  },
+  { // Entry 161
+    0x1.7bb96d689be7ca1030e43bc3fecb819ap-8,
+    0x1.fffdccc1d701fp-1
+  },
+  { // Entry 162
+    0x1.b95e54541a071ffcc559e575e1c45d84p-9,
+    0x1.ffff41c283750p-1
+  },
+  { // Entry 163
+    0x1.9464bc1fea5e476fc7c730847ef2072cp-9,
+    0x1.ffff604c81f35p-1
+  },
+  { // Entry 164
+    0x1.2380ce33ccc5d81a1da42a66818b51f4p-9,
+    0x1.ffffad047cd7bp-1
+  },
+  { // Entry 165
+    0x1.0c1524bceb518c3bb68d2d3c320fc558p0,
+    0x1.fffffbbffffffp-2
+  },
+  { // Entry 166
+    0x1.feffc038c368f967261955172b2d21e2p-12,
+    0x1.fffffc03fffffp-1
+  },
+  { // Entry 167
+    0x1.821d0973b4a0b0016c6b1edfcc06b6ffp0,
+    0x1.fffffe3ffffffp-5
+  },
+  { // Entry 168
+    0x1.9eb04d49b225986a90691720b967589ap-13,
+    0x1.ffffff5810533p-1
+  },
+  { // Entry 169
+    0x1.3988e15f98f3dd3665a7a72d97547617p-13,
+    0x1.ffffff9ffffffp-1
+  },
+  { // Entry 170
+    0x1.bb67aed2e237162c8ad96b5482f602bep-14,
+    0x1.ffffffcffffffp-1
+  },
+  { // Entry 171
+    0x1.6514ba909fbbf3226dfd735dfdf42191p-14,
+    0x1.ffffffe0ded2ep-1
+  },
+  { // Entry 172
+    0x1.911fb519a01327ffffaff63cfe51a6ffp0,
+    0x1.fffffff001050p-9
+  },
+  { // Entry 173
+    0x1.0c152386e1d2f41799a6b289b1db9e6cp0,
+    0x1.fffffff1fffffp-2
+  },
+  { // Entry 174
+    0x1.3988e7c8d4f60f003e750e7129eb31cdp-16,
+    0x1.fffffffe7ffffp-1
+  },
+  { // Entry 175
+    0x1.deeeb2316401cb2cb77ada03ca8dd431p-17,
+    0x1.ffffffff1ffffp-1
+  },
+  { // Entry 176
+    0x1.752ea8a9db933d7df1d6cffb00007a5ap-18,
+    0x1.ffffffffddfffp-1
+  },
+  { // Entry 177
+    0x1.deefb2c32530bab30cf8bbb0a6928f4cp-19,
+    0x1.fffffffff1fffp-1
+  },
+  { // Entry 178
+    0x1.0c152382daad2c41d08ab091f9f43ac6p0,
+    0x1.fffffffff3fffp-2
+  },
+  { // Entry 179
+    0x1.b000000000cd0800000106bc80666823p-19,
+    0x1.fffffffff49c0p-1
+  },
+  { // Entry 180
+    0x1.0c152382d7c177dbb5c7b51c4e876e71p0,
+    0x1.fffffffffe1e1p-2
+  },
+  { // Entry 181
+    0x1.911fb5199813a8003eb04539417cd403p0,
+    0x1.fffffffffffd0p-9
+  },
+  { // Entry 182
+    0x1.0c152382d736ab69cc6c36f54e0a958bp0,
+    0x1.fffffffffffeep-2
+  },
+  { // Entry 183
+    0x1.8000000000000900000000000091ccccp-25,
+    0x1.ffffffffffff7p-1
+  },
+  { // Entry 184
+    0x1.0c152382d73673fcd69b865c0010cf96p0,
+    0x1.ffffffffffffap-2
+  },
+  { // Entry 185
+    0x1.4d5341b00be8a7fed4c5dfdc2eee1ccbp-2,
+    0x1.e51cfe3b1ba8bp-1
+  },
+  { // Entry 186
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.0p-1
+  },
+  { // Entry 187
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.0p-1
+  },
+  { // Entry 188
+    0x1.da22859b2d5c27c2d45ce750728c8805p-1,
+    0x1.33b645a1cac08p-1
+  },
+  { // Entry 189
+    0x1.921fb54442d1913030139541b9b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 190
+    0x1.921fb54442d1913030139541b9b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 191
+    0x1.359d26f93b6c32551ad5cf63b6549b57p1,
+    -0x1.8p-1
+  },
+  { // Entry 192
+    0x1.0c152382d73666bca69b88f04790b76cp-1,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 193
+    0x1.0c152382d73666bca69b88f04790b76cp-1,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 194
+    0x1.9e7c9b89260e3bcb44d14a8fdac1fd70p-8,
+    0x1.fffd60e94ee39p-1
+  },
+  { // Entry 195
+    0x1.921fb54442d18469898c851701b839a2p0,
+    0x1.0p-82
+  },
+  { // Entry 196
+    0x1.921fb54442d18461898cc51701b839a2p0,
+    0x1.0p-61
+  },
+  { // Entry 197
+    0x1.921fb54442918469898cc51701b839a1p0,
+    0x1.0p-42
+  },
+  { // Entry 198
+    0x1.921fb14442d184697ee21a6c570d422ap0,
+    0x1.0p-22
+  },
+  { // Entry 199
+    0x1.916ab041f915522c7a634527690e82a5p0,
+    0x1.6a09e667f3bcbp-9
+  },
+  { // Entry 200
+    0x1.916ab041f91552247a614526a90e32a5p0,
+    0x1.6a09e667f3bccp-9
+  },
+  { // Entry 201
+    0x1.916ab041f915521c7a5f4525e90de2a5p0,
+    0x1.6a09e667f3bcdp-9
+  },
+  { // Entry 202
+    0x1.90b5aae52c79b2aa66b36d577b951ab5p0,
+    0x1.6a09e667f3bcbp-8
+  },
+  { // Entry 203
+    0x1.90b5aae52c79b29a66a36d3f7b6d1a70p0,
+    0x1.6a09e667f3bccp-8
+  },
+  { // Entry 204
+    0x1.90b5aae52c79b28a66936d277b451a2ap0,
+    0x1.6a09e667f3bcdp-8
+  },
+  { // Entry 205
+    0x1.8f4b9db1f59a78450728d07fcec82844p0,
+    0x1.6a09e667f3bcbp-7
+  },
+  { // Entry 206
+    0x1.8f4b9db1f59a782506a8cd7fbac79c4cp0,
+    0x1.6a09e667f3bccp-7
+  },
+  { // Entry 207
+    0x1.8f4b9db1f59a78050628ca7fa6c71049p0,
+    0x1.6a09e667f3bcdp-7
+  },
+  { // Entry 208
+    0x1.8c776f7d7291f51392f5b98b4f9ef640p0,
+    0x1.6a09e667f3bcbp-6
+  },
+  { // Entry 209
+    0x1.8c776f7d7291f4d38ef559814e86d71dp0,
+    0x1.6a09e667f3bccp-6
+  },
+  { // Entry 210
+    0x1.8c776f7d7291f4938af4f9774d6eb79fp0,
+    0x1.6a09e667f3bcdp-6
+  },
+  { // Entry 211
+    0x1.86ce747eb5cb996caf44709717fef092p0,
+    0x1.6a09e667f3bcbp-5
+  },
+  { // Entry 212
+    0x1.86ce747eb5cb98ec8f386b94e7027fe1p0,
+    0x1.6a09e667f3bccp-5
+  },
+  { // Entry 213
+    0x1.86ce747eb5cb986c6f2c6692b6060c5ap0,
+    0x1.6a09e667f3bcdp-5
+  },
+  { // Entry 214
+    0x1.7b77852c631c38160912d4bff04e41e2p0,
+    0x1.6a09e667f3bcbp-4
+  },
+  { // Entry 215
+    0x1.7b77852c631c37150790505801c3579cp0,
+    0x1.6a09e667f3bccp-4
+  },
+  { // Entry 216
+    0x1.7b77852c631c3614060dcbf013385671p0,
+    0x1.6a09e667f3bcdp-4
+  },
+  { // Entry 217
+    0x1.64a144217a8f043112de5f55544e1c28p0,
+    0x1.6a09e667f3bcbp-3
+  },
+  { // Entry 218
+    0x1.64a144217a8f0228e1955e7984b3f71bp0,
+    0x1.6a09e667f3bccp-3
+  },
+  { // Entry 219
+    0x1.64a144217a8f0020b04c5d9db5191435p0,
+    0x1.6a09e667f3bcdp-3
+  },
+  { // Entry 220
+    0x1.359d26f93b6c3905e6d6ef5eb0f574adp0,
+    0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 221
+    0x1.359d26f93b6c34bf331d9755a68a7afcp0,
+    0x1.6a09e667f3bccp-2
+  },
+  { // Entry 222
+    0x1.359d26f93b6c30787f643f4c9c1897fdp0,
+    0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 223
+    0x1.91420151498adc61fb274f09e54f1937p0,
+    0x1.bb67ae8584ca9p-9
+  },
+  { // Entry 224
+    0x1.91420151498adc59fb244f08354e0b37p0,
+    0x1.bb67ae8584caap-9
+  },
+  { // Entry 225
+    0x1.91420151498adc51fb214f06854cfd36p0,
+    0x1.bb67ae8584cabp-9
+  },
+  { // Entry 226
+    0x1.90644cb8084a289e0fdaf319a3d72d0bp0,
+    0x1.bb67ae8584ca9p-8
+  },
+  { // Entry 227
+    0x1.90644cb8084a288e0fc2f2e3a3502baap0,
+    0x1.bb67ae8584caap-8
+  },
+  { // Entry 228
+    0x1.90644cb8084a287e0faaf2ada2c92a48p0,
+    0x1.bb67ae8584cabp-8
+  },
+  { // Entry 229
+    0x1.8ea8def973a3419f8672de627481cc16p0,
+    0x1.bb67ae8584ca9p-7
+  },
+  { // Entry 230
+    0x1.8ea8def973a3417f85b2d7a230ff0745p0,
+    0x1.bb67ae8584caap-7
+  },
+  { // Entry 231
+    0x1.8ea8def973a3415f84f2d0e1ed7c4267p0,
+    0x1.bb67ae8584cabp-7
+  },
+  { // Entry 232
+    0x1.8b31df18893670912b1c1be4889884efp0,
+    0x1.bb67ae8584ca9p-6
+  },
+  { // Entry 233
+    0x1.8b31df1889367051251b43c2c30e15fcp0,
+    0x1.bb67ae8584caap-6
+  },
+  { // Entry 234
+    0x1.8b31df18893670111f1a6ba0fd83a699p0,
+    0x1.bb67ae8584cabp-6
+  },
+  { // Entry 235
+    0x1.8442bbd27f036dec946a1fbdbfe07d8fp0,
+    0x1.bb67ae8584ca9p-5
+  },
+  { // Entry 236
+    0x1.8442bbd27f036d6c644f0ed2a561b9aap0,
+    0x1.bb67ae8584caap-5
+  },
+  { // Entry 237
+    0x1.8442bbd27f036cec3433fde78ae2f24bp0,
+    0x1.bb67ae8584cabp-5
+  },
+  { // Entry 238
+    0x1.765b4c48040219666b2fef59fcb0d2d4p0,
+    0x1.bb67ae8584ca9p-4
+  },
+  { // Entry 239
+    0x1.765b4c4804021864e7c768f7896df8efp0,
+    0x1.bb67ae8584caap-4
+  },
+  { // Entry 240
+    0x1.765b4c4804021763645ee295162b02d4p0,
+    0x1.bb67ae8584cabp-4
+  },
+  { // Entry 241
+    0x1.5a417dae31bf8205988e1afc294b93e7p0,
+    0x1.bb67ae8584ca9p-3
+  },
+  { // Entry 242
+    0x1.5a417dae31bf7ff92827db161a0e0411p0,
+    0x1.bb67ae8584caap-3
+  },
+  { // Entry 243
+    0x1.5a417dae31bf7decb7c19b300acf85f9p0,
+    0x1.bb67ae8584cabp-3
+  },
+  { // Entry 244
+    0x1.1f7a90695ca9046f7f711f3c5271788dp0,
+    0x1.bb67ae8584ca9p-2
+  },
+  { // Entry 245
+    0x1.1f7a90695ca8ffff78c910422d09179bp0,
+    0x1.bb67ae8584caap-2
+  },
+  { // Entry 246
+    0x1.1f7a90695ca8fb8f72210148079740eep0,
+    0x1.bb67ae8584cabp-2
+  },
+  { // Entry 247
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.fffffffffffffp-128
+  },
+  { // Entry 248
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.0p-127
+  },
+  { // Entry 249
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.0000000000001p-127
+  },
+  { // Entry 250
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffffffffffp-127
+  },
+  { // Entry 251
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.0p-126
+  },
+  { // Entry 252
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.0000000000001p-126
+  },
+  { // Entry 253
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 254
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022
+  },
+  { // Entry 255
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 256
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074
+  },
+  { // Entry 257
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0.0
+  },
+  { // Entry 258
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074
+  },
+  { // Entry 259
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 260
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022
+  },
+  { // Entry 261
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 262
+    0x1.921fb54042d18469898ce50c570d8ef7p0,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 263
+    0x1.921fb54042d18469898cc50c570d8ef7p0,
+    0x1.0p-30
+  },
+  { // Entry 264
+    0x1.921fb54042d18469898c850c570d8ef7p0,
+    0x1.0000000000001p-30
+  },
+  { // Entry 265
+    0x1.921fb52442d18469898dafc1ac62e44cp0,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 266
+    0x1.921fb52442d18469898cafc1ac62e44cp0,
+    0x1.0p-27
+  },
+  { // Entry 267
+    0x1.921fb52442d18469898aafc1ac62e44cp0,
+    0x1.0000000000001p-27
+  },
+  { // Entry 268
+    0x1.921fb4c442d18469898b6fc1ac62e44cp0,
+    0x1.fffffffffffffp-26
+  },
+  { // Entry 269
+    0x1.921fb4c442d1846989876fc1ac62e44cp0,
+    0x1.0p-25
+  },
+  { // Entry 270
+    0x1.921fb4c442d18469897f6fc1ac62e44bp0,
+    0x1.0000000000001p-25
+  },
+  { // Entry 271
+    0x1.921bb54442c6d9befe954da08765547fp0,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 272
+    0x1.921bb54442c6d9bede954d9f87655473p0,
+    0x1.0p-14
+  },
+  { // Entry 273
+    0x1.921bb54442c6d9be9e954d9d8765545bp0,
+    0x1.0000000000001p-14
+  },
+  { // Entry 274
+    0x1.8e1faa994b5731853e59876423331a32p0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 275
+    0x1.8e1faa994b5731653d597b63832a59bcp0,
+    0x1.0p-6
+  },
+  { // Entry 276
+    0x1.8e1faa994b5731253b5963624318d8a0p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 277
+    0x1.8a1f5fe55274a09adac41ad9214797d8p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 278
+    0x1.8a1f5fe55274a05ad2c29a890fc3a730p0,
+    0x1.0p-5
+  },
+  { // Entry 279
+    0x1.8a1f5fe552749fdac2bf99e8ecbbc462p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 280
+    0x1.821d0965ad9b6ba3be317b82a5a09c93p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 281
+    0x1.821d0965ad9b6b237e01535f8603a3acp0,
+    0x1.0p-4
+  },
+  { // Entry 282
+    0x1.821d0965ad9b6a22fda1031946c9a5cep0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 283
+    0x1.720a392c1d954953c0f01dccd7296f92p0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 284
+    0x1.720a392c1d954851badbd6cd2d8e792cp0,
+    0x1.0p-3
+  },
+  { // Entry 285
+    0x1.720a392c1d95464daeb348cdda582a13p0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 286
+    0x1.51700e0c14b25200dff9b6fda0f736e3p0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 287
+    0x1.51700e0c14b24ff015655c5ec5a7aaa3p0,
+    0x1.0p-2
+  },
+  { // Entry 288
+    0x1.51700e0c14b24bce803ca7210f054413p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 289
+    0x1.0c152382d7365ce4c584921c1d87f0edp0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 290
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.0p-1
+  },
+  { // Entry 291
+    0x1.0c152382d7364f09881065f5c83b9e1ap0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 292
+    0x1.00000000000000aaaaaaaaaaaaabddddp-26,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 293
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 294
+    0x1.921fb54442d1be716ce093b94fb839a2p-1,
+    0x1.6a09e667f3bcap-1
+  },
+  { // Entry 295
+    0x1.921fb54442d1a7d0ce7a147d853839a2p-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 296
+    0x1.921fb54442d1913030139541b9b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 297
+    0x1.921fb54442d17a8f91ad1605ed3839a2p-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 298
+    0x1.921fb54442d163eef34696ca1fb839a2p-1,
+    0x1.6a09e667f3bcep-1
+  },
+  { // Entry 299
+    0x1.0c152382d736a6bca69b88f03d8186d0p-1,
+    0x1.bb67ae8584ca8p-1
+  },
+  { // Entry 300
+    0x1.0c152382d73686bca69b88f0444486cdp-1,
+    0x1.bb67ae8584ca9p-1
+  },
+  { // Entry 301
+    0x1.0c152382d73666bca69b88f04790b76cp-1,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 302
+    0x1.0c152382d73646bca69b88f0476618afp-1,
+    0x1.bb67ae8584cabp-1
+  },
+  { // Entry 303
+    0x1.0c152382d73626bca69b88f043c4aa95p-1,
+    0x1.bb67ae8584cacp-1
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 305
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p0
+  },
+  { // Entry 306
+    0x1.00000000000000aaaaaaaaaaaaabddddp-26,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 307
+    0x1.921fb52442d18469898cafc1ac62e44cp1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 308
+    0x1.55bcf3c4a46940e467961a6926261188p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 309
+    0x1.3cb0785319b734306fa73e7cb82eb540p1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 310
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 311
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 312
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022
+  },
+  { // Entry 313
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022
+  },
+  { // Entry 314
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 315
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 316
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 317
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 318
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1073
+  },
+  { // Entry 319
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1073
+  },
+  { // Entry 320
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074
+  },
+  { // Entry 321
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074
+  },
+  { // Entry 322
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0.0
+  },
+  { // Entry 323
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/acosf_intel_data.h b/tests/math_data/acosf_intel_data.h
new file mode 100644
index 0000000..1dca9a6
--- /dev/null
+++ b/tests/math_data/acosf_intel_data.h
@@ -0,0 +1,982 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_acosf_intel_data[] = {
+  { // Entry 0
+    0x1.0c257a7050fc3cea24f3029a2ad2e815p1,
+    -0x1.003898p-1
+  },
+  { // Entry 1
+    0x1.0c5f16794284a814e57dd1aeaff2935dp1,
+    -0x1.01p-1
+  },
+  { // Entry 2
+    0x1.0c8b0a779009c3775eee358be153ba65p1,
+    -0x1.0198p-1
+  },
+  { // Entry 3
+    0x1.0c9c667630ac1465b612be91f8800305p1,
+    -0x1.01d4p-1
+  },
+  { // Entry 4
+    0x1.0ca922436a0ff902c6cea7bee39f2164p1,
+    -0x1.02p-1
+  },
+  { // Entry 5
+    0x1.0cb2657e0dce844aad10d5211ad1439cp1,
+    -0x1.0220p-1
+  },
+  { // Entry 6
+    0x1.0df8b9ffd527aa217e668eed5b98130dp1,
+    -0x1.0684p-1
+  },
+  { // Entry 7
+    0x1.0e677d6ca16a0aa3a9d0e12324b56b7fp1,
+    -0x1.08p-1
+  },
+  { // Entry 8
+    0x1.b3374800692e62ccb28232cf124403efp0,
+    -0x1.08p-3
+  },
+  { // Entry 9
+    0x1.0f93197d31106d9f9dba9ce88846e520p1,
+    -0x1.0cp-1
+  },
+  { // Entry 10
+    0x1.1123e56d1de1347426f6fa3a25b95c8cp1,
+    -0x1.1150dap-1
+  },
+  { // Entry 11
+    0x1.112abd8e560b61295f76c37854cc404dp1,
+    -0x1.1168p-1
+  },
+  { // Entry 12
+    0x1.e678d3006dfeea8466508e9c6fee67a4p0,
+    -0x1.4b5228p-2
+  },
+  { // Entry 13
+    0x1.979fd100670d576688cfaa662e894818p0,
+    -0x1.60p-6
+  },
+  { // Entry 14
+    0x1.921fb60042d08469899dab0c12058f59p0,
+    -0x1.77fffep-25
+  },
+  { // Entry 15
+    0x1.07828bffbd26a9f5425b3c7691d1145fp1,
+    -0x1.e0p-2
+  },
+  { // Entry 16
+    0x1.821faef0618143c8461491fc02984220p1,
+    -0x1.fc0152p-1
+  },
+  { // Entry 17
+    0x1.854911067d00b04f895724d24d2830a4p1,
+    -0x1.fd6d40p-1
+  },
+  { // Entry 18
+    0x1.892b29068f5ed60cbc8141ceb1ff1701p1,
+    -0x1.febf58p-1
+  },
+  { // Entry 19
+    0x1.892d7afb015ab37d6eccc7ff7772b447p1,
+    -0x1.febffep-1
+  },
+  { // Entry 20
+    0x1.922fb500357c0d0df814593ed0d8a6f6p0,
+    -0x1.fff77ep-13
+  },
+  { // Entry 21
+    0x1.d2cf54ff929e2d5be1416c50d9d79662p0,
+    -0x1.ffffc6p-3
+  },
+  { // Entry 22
+    0x1.516fecff6adfa313f251aed1e1a22f51p0,
+    0x1.000080p-2
+  },
+  { // Entry 23
+    0x1.720a22ff97b83535612cba12029c626cp0,
+    0x1.0000b0p-3
+  },
+  { // Entry 24
+    0x1.920fb5000026b79d1a03feae60b3ad18p0,
+    0x1.000444p-12
+  },
+  { // Entry 25
+    0x1.0c0296fe93cb8e2df049d07fc1f71573p0,
+    0x1.002020p-1
+  },
+  { // Entry 26
+    0x1.0becac0001ed95caabc8aaf7ac71baadp0,
+    0x1.004614p-1
+  },
+  { // Entry 27
+    0x1.821444fffa502058fee64d29443f6673p0,
+    0x1.008cp-4
+  },
+  { // Entry 28
+    0x1.921fa50002d18466bc2fbaf2dfbfe5c0p0,
+    0x1.0444p-20
+  },
+  { // Entry 29
+    0x1.89fc5200006860d664f1779f6433bb6bp0,
+    0x1.04612ep-5
+  },
+  { // Entry 30
+    0x1.066d06ff24cb086507a3136cbe17f53bp0,
+    0x1.09bcp-1
+  },
+  { // Entry 31
+    0x1.004b2400184a6783cce37c77124fbad7p0,
+    0x1.1424p-1
+  },
+  { // Entry 32
+    0x1.8dce2b0000002047ed2091cba08e645dp0,
+    0x1.145f36p-6
+  },
+  { // Entry 33
+    0x1.ff4e43161f8e1568e3cef5ea955e27aep-1,
+    0x1.1538p-1
+  },
+  { // Entry 34
+    0x1.fbfd9c80230bbece7389c23697ccf2fbp-1,
+    0x1.18p-1
+  },
+  { // Entry 35
+    0x1.fb5652006b924c37b98c87daeb1d82ecp-1,
+    0x1.188cp-1
+  },
+  { // Entry 36
+    0x1.fb42a430e00edbd5da24f337e1d23079p-1,
+    0x1.189c76p-1
+  },
+  { // Entry 37
+    0x1.fa6f4f234b75986db2db5b5dc5c48cecp-1,
+    0x1.194d22p-1
+  },
+  { // Entry 38
+    0x1.f77a1830c13bdad867d6c4b90616f090p-1,
+    0x1.1bc49ep-1
+  },
+  { // Entry 39
+    0x1.f573250e683e3fad23db66c319161854p-1,
+    0x1.1d74p-1
+  },
+  { // Entry 40
+    0x1.f265000c4bfabe772e7612fd97fed272p-1,
+    0x1.1ffcp-1
+  },
+  { // Entry 41
+    0x1.f2602bf7f44f7de8784eb95d1beba89bp-1,
+    0x1.1ffffep-1
+  },
+  { // Entry 42
+    0x1.f25de4fe24f7cf27cd316d2820678f2fp-1,
+    0x1.2001e0p-1
+  },
+  { // Entry 43
+    0x1.f196d900045457fd3b54c3489c7c98bep-1,
+    0x1.20a65cp-1
+  },
+  { // Entry 44
+    0x1.ecaf3b0005b758518583cf278db2ae82p-1,
+    0x1.24b002p-1
+  },
+  { // Entry 45
+    0x1.6d695dffff9b6175c1d6960d5402e86cp0,
+    0x1.24b148p-3
+  },
+  { // Entry 46
+    0x1.e9e3edfe52297b7e3bda43edcec28af5p-1,
+    0x1.26f9cap-1
+  },
+  { // Entry 47
+    0x1.e8e04cff129c3819b1047ff1f1783828p-1,
+    0x1.27cddap-1
+  },
+  { // Entry 48
+    0x1.e859c30003395e0da55cc100bf66122ep-1,
+    0x1.283ba0p-1
+  },
+  { // Entry 49
+    0x1.e0c1d61d78cd94b9d9e6ec7562ec236fp-1,
+    0x1.2e64bep-1
+  },
+  { // Entry 50
+    0x1.ddff723813e38a441c78c70496a65788p-1,
+    0x1.309da4p-1
+  },
+  { // Entry 51
+    0x1.886e55001396e3f47532d8a787794f14p0,
+    0x1.361910p-5
+  },
+  { // Entry 52
+    0x1.d4121631cf7cf3b517f471b456bebde0p-1,
+    0x1.388980p-1
+  },
+  { // Entry 53
+    0x1.ca9495fb7b2ac583f7b612b659bb4d75p-1,
+    0x1.3ffffep-1
+  },
+  { // Entry 54
+    0x1.c4957352aa82e9e602a75716c087d355p-1,
+    0x1.44a8b6p-1
+  },
+  { // Entry 55
+    0x1.baa309030f555d66a64a3c50d49ca0e4p-1,
+    0x1.4c49ecp-1
+  },
+  { // Entry 56
+    0x1.aea132fb898a11ba65de612cf32c7f6cp-1,
+    0x1.5554dap-1
+  },
+  { // Entry 57
+    0x1.668f1f001255d1b8844c2bf7d8b804dep0,
+    0x1.5ad6b0p-3
+  },
+  { // Entry 58
+    0x1.a633baf67d350b07cd61c177ab058a1ep-1,
+    0x1.5b9108p-1
+  },
+  { // Entry 59
+    0x1.a37262f499382b280c29295c80043ef3p-1,
+    0x1.5d95aap-1
+  },
+  { // Entry 60
+    0x1.a1945af39258c47400a7049b0fa1ced0p-1,
+    0x1.5ef254p-1
+  },
+  { // Entry 61
+    0x1.a022c6f49c36ad7986e19f087aa933d9p-1,
+    0x1.5fff12p-1
+  },
+  { // Entry 62
+    0x1.37fab2ffff9477b036f349972197c2bep0,
+    0x1.612c3ap-2
+  },
+  { // Entry 63
+    0x1.65b292ffffcc939788e4b6d487fe8cdfp0,
+    0x1.61a112p-3
+  },
+  { // Entry 64
+    0x1.9b8ff4fe183afaa47464c07e624d4445p-1,
+    0x1.634db4p-1
+  },
+  { // Entry 65
+    0x1.96dc1701b6e0eb4ea1fcf021a2c3d38ap-1,
+    0x1.66acaap-1
+  },
+  { // Entry 66
+    0x1.8e32af0006512524b5cd8aeb6e63c791p-1,
+    0x1.6ccdd4p-1
+  },
+  { // Entry 67
+    0x1.804bbd016ca13c18200362deaa59fed2p-1,
+    0x1.766c48p-1
+  },
+  { // Entry 68
+    0x1.4fd532ffffd0b23ae975cddd912591b4p-1,
+    0x1.95c09ap-1
+  },
+  { // Entry 69
+    0x1.788c1b00007236e7c664a0714def797bp0,
+    0x1.988b72p-4
+  },
+  { // Entry 70
+    0x1.426b63ffff75484d98afbacb71fd1a5ap-1,
+    0x1.9dcaf8p-1
+  },
+  { // Entry 71
+    0x1.39de4eff95f8ac0807aca0b9cdd04a1dp-1,
+    0x1.a2c556p-1
+  },
+  { // Entry 72
+    0x1.38f16effff9e4e67514d5d63a0a6557dp-1,
+    0x1.a34d72p-1
+  },
+  { // Entry 73
+    0x1.1a76cb056f41ba8d9cd68713a9c2b0a3p-1,
+    0x1.b40a52p-1
+  },
+  { // Entry 74
+    0x1.1ee3e8000050338f0fc9efe7ffb60bdcp0,
+    0x1.bd8696p-2
+  },
+  { // Entry 75
+    0x1.02bedad86f18596f026ada4944e9c33dp-1,
+    0x1.bfffe2p-1
+  },
+  { // Entry 76
+    0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-1,
+    0x1.c0p-1
+  },
+  { // Entry 77
+    0x1.ff8307c1ec4e07784126d1b4edd06823p-2,
+    0x1.c17072p-1
+  },
+  { // Entry 78
+    0x1.fe02b6529120aa515e1832349a662dfep-2,
+    0x1.c1cc5ep-1
+  },
+  { // Entry 79
+    0x1.759edd0162a92b1a62937275448bb090p0,
+    0x1.c71c72p-4
+  },
+  { // Entry 80
+    0x1.e3689a62e92c874e13f58948bcfc3f8ep-2,
+    0x1.c7fffep-1
+  },
+  { // Entry 81
+    0x1.5840c3ffff9a16c02ea4a0bc7608d63cp0,
+    0x1.cb08aep-3
+  },
+  { // Entry 82
+    0x1.75490d00012add014fd20781cfa59149p0,
+    0x1.cc70d8p-4
+  },
+  { // Entry 83
+    0x1.c2d789028d1b6bc4445359a77b66b22cp-2,
+    0x1.cf2c3cp-1
+  },
+  { // Entry 84
+    0x1.befee4fdeaa4df1ce9fca3988ffc256fp-2,
+    0x1.cffd38p-1
+  },
+  { // Entry 85
+    0x1.15851afc2ea1823412c4566b9741155ap0,
+    0x1.def7b0p-2
+  },
+  { // Entry 86
+    0x1.54cf89ffff9b35c2d6f0eec1cdddd7fcp0,
+    0x1.e5d44cp-3
+  },
+  { // Entry 87
+    0x1.736f86ffff8f1c8e0754f45ce46de0f0p0,
+    0x1.e9d60ep-4
+  },
+  { // Entry 88
+    0x1.11bd758662c5b5d2186c1d298cf7f0b2p0,
+    0x1.ec4746p-2
+  },
+  { // Entry 89
+    0x1.e0f8c30892663dadc7f43b5a93088423p-3,
+    0x1.f1f1fep-1
+  },
+  { // Entry 90
+    0x1.e007dfb3698110ebd1dc3d45233e2c73p-3,
+    0x1.f1fffep-1
+  },
+  { // Entry 91
+    0x1.d1fa8b029886129544d943c684a8ceb5p-3,
+    0x1.f2cddcp-1
+  },
+  { // Entry 92
+    0x1.b4df86024b58e8e96534a6e26d324fa2p-3,
+    0x1.f46522p-1
+  },
+  { // Entry 93
+    0x1.39d7acf9d6e48f39ad2962a89d3a8b86p-3,
+    0x1.f9fffep-1
+  },
+  { // Entry 94
+    0x1.0d6dbe7f2e341b18c74019a99120f59cp0,
+    0x1.fb5472p-2
+  },
+  { // Entry 95
+    0x1.0c5eb8f7ab8c9e685b9d22e45d04f3a2p0,
+    0x1.ff0104p-2
+  },
+  { // Entry 96
+    0x1.0c55c92a56134b333fbf4af2c68a3854p0,
+    0x1.ff1ffep-2
+  },
+  { // Entry 97
+    0x1.0c4e426ce9414f08c194150bdcbcf176p0,
+    0x1.ff3a14p-2
+  },
+  { // Entry 98
+    0x1.8220dcff801a88159a8ca341c9eec793p0,
+    0x1.ff85cap-5
+  },
+  { // Entry 99
+    0x1.0c17983d1def4e82b953bdfc7dff0dfbp0,
+    0x1.fff77ep-2
+  },
+  { // Entry 100
+    0x1.0c159a71ec12c92e12b2592f98c68b03p0,
+    0x1.fffe64p-2
+  },
+  { // Entry 101
+    0x1.800009000091ccd901171c6034e7b4d3p-9,
+    0x1.ffff70p-1
+  },
+  { // Entry 102
+    0x1.901fb3feeb35c355e40ef2b73166eccep0,
+    0x1.fffff0p-8
+  },
+  { // Entry 103
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.p-1
+  },
+  { // Entry 104
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.p-1
+  },
+  { // Entry 105
+    0x1.da2285254e79544ff70a5c48f856e1e2p-1,
+    0x1.33b646p-1
+  },
+  { // Entry 106
+    0x1.921fb5d7457f84698994d9949c77055ep-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 107
+    0x1.921fb5d7457f84698994d9949c77055ep-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 108
+    0x1.359d26f93b6c32551ad5cf63b6549b57p1,
+    -0x1.80p-1
+  },
+  { // Entry 109
+    0x1.0c15248de0cb2e1ef42023dc8eb80020p-1,
+    0x1.bb67aep-1
+  },
+  { // Entry 110
+    0x1.0c15248de0cb2e1ef42023dc8eb80020p-1,
+    0x1.bb67aep-1
+  },
+  { // Entry 111
+    0x1.9ec4a1ffeb4da0d834c0a89f94a8e3d5p-8,
+    0x1.fffd60p-1
+  },
+  { // Entry 112
+    0x1.921fb54442d18469898c851701b839a2p0,
+    0x1.p-82
+  },
+  { // Entry 113
+    0x1.921fb54442d18461898cc51701b839a2p0,
+    0x1.p-61
+  },
+  { // Entry 114
+    0x1.921fb54442918469898cc51701b839a1p0,
+    0x1.p-42
+  },
+  { // Entry 115
+    0x1.921fb14442d184697ee21a6c570d422ap0,
+    0x1.p-22
+  },
+  { // Entry 116
+    0x1.916ab0432d0f7d830e55bf5f9d23ea06p0,
+    0x1.6a09e4p-9
+  },
+  { // Entry 117
+    0x1.916ab0422d0f3d82f6d4f8e3e0b0161ap0,
+    0x1.6a09e6p-9
+  },
+  { // Entry 118
+    0x1.916ab0412d0efd82de9f2ced603175a1p0,
+    0x1.6a09e8p-9
+  },
+  { // Entry 119
+    0x1.90b5aae7946fd751bb3f0dd6bd9c3a5fp0,
+    0x1.6a09e4p-8
+  },
+  { // Entry 120
+    0x1.90b5aae5946dd74ebf3432e311714a32p0,
+    0x1.6a09e6p-8
+  },
+  { // Entry 121
+    0x1.90b5aae3946bd74bbd811f5ec41a8d1cp0,
+    0x1.6a09e8p-8
+  },
+  { // Entry 122
+    0x1.8f4b9db6c59531b64c9d1cca72a60098p0,
+    0x1.6a09e4p-7
+  },
+  { // Entry 123
+    0x1.8f4b9db2c585315669ef5257a125885ep0,
+    0x1.6a09e6p-7
+  },
+  { // Entry 124
+    0x1.8f4b9daec57530f659fe2c00c0828556p0,
+    0x1.6a09e8p-7
+  },
+  { // Entry 125
+    0x1.8c776f8712faf332f0569d2e2b1c8af2p0,
+    0x1.6a09e4p-6
+  },
+  { // Entry 126
+    0x1.8c776f7f127ae732aee9a38c00683c31p0,
+    0x1.6a09e6p-6
+  },
+  { // Entry 127
+    0x1.8c776f7711fadb31032ed772064bfaa2p0,
+    0x1.6a09e8p-6
+  },
+  { // Entry 128
+    0x1.86ce7491fa3b3515774393cc5a2ac8d1p0,
+    0x1.6a09e4p-5
+  },
+  { // Entry 129
+    0x1.86ce7481f639b47d2b513503952d36b3p0,
+    0x1.6a09e6p-5
+  },
+  { // Entry 130
+    0x1.86ce7471f23833d9868e1a1ce3223d95p0,
+    0x1.6a09e8p-5
+  },
+  { // Entry 131
+    0x1.7b77855309115e60277dd0adb2d211ecp0,
+    0x1.6a09e4p-4
+  },
+  { // Entry 132
+    0x1.7b778532e8e10e138c0530964bec6a45p0,
+    0x1.6a09e6p-4
+  },
+  { // Entry 133
+    0x1.7b778512c8b0bd6b5bde9418a60c5362p0,
+    0x1.6a09e8p-4
+  },
+  { // Entry 134
+    0x1.64a1446fb469cb3e8129d8af56970d03p0,
+    0x1.6a09e4p-3
+  },
+  { // Entry 135
+    0x1.64a1442eae40ad38e802ab2319096ca4p0,
+    0x1.6a09e6p-3
+  },
+  { // Entry 136
+    0x1.64a143eda8178c3be9e58f8805a8cd99p0,
+    0x1.6a09e8p-3
+  },
+  { // Entry 137
+    0x1.359d279dda2c8084c57122774bedccd7p0,
+    0x1.6a09e4p-2
+  },
+  { // Entry 138
+    0x1.359d271503b568f326aba2ee1163aa56p0,
+    0x1.6a09e6p-2
+  },
+  { // Entry 139
+    0x1.359d268c2d3e35bc4ee9def9a883b8e9p0,
+    0x1.6a09e8p-2
+  },
+  { // Entry 140
+    0x1.914201528c4dbab3248745b01274284cp0,
+    0x1.bb67acp-9
+  },
+  { // Entry 141
+    0x1.914201518c4d5ab2ef2fcf50924bc48fp0,
+    0x1.bb67aep-9
+  },
+  { // Entry 142
+    0x1.914201508c4cfab2b8faa420a6e84290p0,
+    0x1.bb67b0p-9
+  },
+  { // Entry 143
+    0x1.90644cba8dd2bb7dbce6a8d00d628b45p0,
+    0x1.bb67acp-8
+  },
+  { // Entry 144
+    0x1.90644cb88dcfbb77021b3572c356f712p0,
+    0x1.bb67aep-8
+  },
+  { // Entry 145
+    0x1.90644cb68dccbb704062042fba36ba7fp0,
+    0x1.bb67b0p-8
+  },
+  { // Entry 146
+    0x1.8ea8defe7ecb1a0937cbd2748d94a22cp0,
+    0x1.bb67acp-7
+  },
+  { // Entry 147
+    0x1.8ea8defa7eb31931598919ba7b226aebp0,
+    0x1.bb67aep-7
+  },
+  { // Entry 148
+    0x1.8ea8def67e9b185943d5855cab6b8f1ep0,
+    0x1.bb67b0p-7
+  },
+  { // Entry 149
+    0x1.8b31df22a03bceab93822903a64e5616p0,
+    0x1.bb67acp-6
+  },
+  { // Entry 150
+    0x1.8b31df1a9f7bb3a8ac8516ff422b02efp0,
+    0x1.bb67aep-6
+  },
+  { // Entry 151
+    0x1.8b31df129ebb98a409a384915d8a1e46p0,
+    0x1.bb67b0p-6
+  },
+  { // Entry 152
+    0x1.8442bbe6b2be94bbdc8bc8ce90846342p0,
+    0x1.bb67acp-5
+  },
+  { // Entry 153
+    0x1.8442bbd6acbb32a90fcd44a67b9dbfa7p0,
+    0x1.bb67aep-5
+  },
+  { // Entry 154
+    0x1.8442bbc6a6b7d088582c015aa929c60bp0,
+    0x1.bb67b0p-5
+  },
+  { // Entry 155
+    0x1.765b4c70995cb6fd1a5785f37349503ep0,
+    0x1.bb67acp-4
+  },
+  { // Entry 156
+    0x1.765b4c5068efa686a263561080ef83d3p0,
+    0x1.bb67aep-4
+  },
+  { // Entry 157
+    0x1.765b4c303882959f56467ba4dca02931p0,
+    0x1.bb67b0p-4
+  },
+  { // Entry 158
+    0x1.5a417e00d83327c69d7b1be72667fb7ap0,
+    0x1.bb67acp-3
+  },
+  { // Entry 159
+    0x1.5a417dbf4a26629ee6bfd4a919213520p0,
+    0x1.bb67aep-3
+  },
+  { // Entry 160
+    0x1.5a417d7dbc1999be28c737a49a8b1a97p0,
+    0x1.bb67b0p-3
+  },
+  { // Entry 161
+    0x1.1f7a911c6589a2670979ee4bbce207acp0,
+    0x1.bb67acp-2
+  },
+  { // Entry 162
+    0x1.1f7a908e64b4bd515e30fcb0d207f55cp0,
+    0x1.bb67aep-2
+  },
+  { // Entry 163
+    0x1.1f7a900063dfb264c88f3cfb5460a189p0,
+    0x1.bb67b0p-2
+  },
+  { // Entry 164
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.fffff8p-128
+  },
+  { // Entry 165
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.p-127
+  },
+  { // Entry 166
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.000004p-127
+  },
+  { // Entry 167
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffcp-127
+  },
+  { // Entry 168
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.p-126
+  },
+  { // Entry 169
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.000002p-126
+  },
+  { // Entry 170
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.000002p-126
+  },
+  { // Entry 171
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.p-126
+  },
+  { // Entry 172
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 173
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149
+  },
+  { // Entry 174
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0.0
+  },
+  { // Entry 175
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149
+  },
+  { // Entry 176
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffcp-127
+  },
+  { // Entry 177
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.p-126
+  },
+  { // Entry 178
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.000002p-126
+  },
+  { // Entry 179
+    0x1.921fb54042d18869898cc50c570daef7p0,
+    0x1.fffffep-31
+  },
+  { // Entry 180
+    0x1.921fb54042d18469898cc50c570d8ef7p0,
+    0x1.p-30
+  },
+  { // Entry 181
+    0x1.921fb54042d17c69898cc50c570d4ef7p0,
+    0x1.000002p-30
+  },
+  { // Entry 182
+    0x1.921fb52442d1a469898cafc1aca2e44cp0,
+    0x1.fffffep-28
+  },
+  { // Entry 183
+    0x1.921fb52442d18469898cafc1ac62e44cp0,
+    0x1.p-27
+  },
+  { // Entry 184
+    0x1.921fb52442d14469898cafc1abe2e44bp0,
+    0x1.000002p-27
+  },
+  { // Entry 185
+    0x1.921fb4c442d2046989876fc1bc62e43cp0,
+    0x1.fffffep-26
+  },
+  { // Entry 186
+    0x1.921fb4c442d1846989876fc1ac62e44cp0,
+    0x1.p-25
+  },
+  { // Entry 187
+    0x1.921fb4c442d0846989876fc18c62e40cp0,
+    0x1.000002p-25
+  },
+  { // Entry 188
+    0x1.921bb54446c6d9befe954d8107655c32p0,
+    0x1.fffffep-15
+  },
+  { // Entry 189
+    0x1.921bb54442c6d9bede954d9f87655473p0,
+    0x1.p-14
+  },
+  { // Entry 190
+    0x1.921bb5443ac6d9be9e954d1c8764f2f6p0,
+    0x1.000002p-14
+  },
+  { // Entry 191
+    0x1.8e1faa9d4b7732e531579341ed5c2713p0,
+    0x1.fffffep-7
+  },
+  { // Entry 192
+    0x1.8e1faa994b5731653d597b63832a59bcp0,
+    0x1.p-6
+  },
+  { // Entry 193
+    0x1.8e1faa914b172e64954b49fe82828e16p0,
+    0x1.000002p-6
+  },
+  { // Entry 194
+    0x1.8a1f5fed5374d063d492faf2e989f5e8p0,
+    0x1.fffffep-6
+  },
+  { // Entry 195
+    0x1.8a1f5fe55274a05ad2c29a890fc3a730p0,
+    0x1.p-5
+  },
+  { // Entry 196
+    0x1.8a1f5fd550744042cce1237e8c427b18p0,
+    0x1.000002p-5
+  },
+  { // Entry 197
+    0x1.821d0975b5a1701fd5e5e3dfab724e1dp0,
+    0x1.fffffep-5
+  },
+  { // Entry 198
+    0x1.821d0965ad9b6b237e01535f8603a3acp0,
+    0x1.p-4
+  },
+  { // Entry 199
+    0x1.821d09459d8f60fa85ddb8a001b22154p0,
+    0x1.000002p-4
+  },
+  { // Entry 200
+    0x1.720a394c5e57d0f0286bae477c8095f1p0,
+    0x1.fffffep-4
+  },
+  { // Entry 201
+    0x1.720a392c1d954851badbd6cd2d8e792cp0,
+    0x1.p-3
+  },
+  { // Entry 202
+    0x1.720a38eb9c10358bb1e5dd06059098b3p0,
+    0x1.000002p-3
+  },
+  { // Entry 203
+    0x1.51700e4e2e04d90fe58757f33d17c63ep0,
+    0x1.fffffep-3
+  },
+  { // Entry 204
+    0x1.51700e0c14b24ff015655c5ec5a7aaa3p0,
+    0x1.p-2
+  },
+  { // Entry 205
+    0x1.51700d87e20d30783166a45543964e85p0,
+    0x1.000002p-2
+  },
+  { // Entry 206
+    0x1.0c152416a4706c25c04942fa8bb98d98p0,
+    0x1.fffffep-2
+  },
+  { // Entry 207
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.p-1
+  },
+  { // Entry 208
+    0x1.0c15225b3cc19cba57f7f9cdea23cba7p0,
+    0x1.000002p-1
+  },
+  { // Entry 209
+    0x1.6a09e6861f3aadd17681ee6db029b4c0p-12,
+    0x1.fffffep-1
+  },
+  { // Entry 210
+    0.0,
+    0x1.p0
+  },
+  { // Entry 211
+    0x1.921fbb7f6d0f8469b1df49c77c9d4d49p-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 212
+    0x1.921fb8ab59498469901db80ff0ba49ecp-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 213
+    0x1.921fb5d7457f84698994d9949c77055ep-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 214
+    0x1.921fb30331b1846987a41075fbfb2392p-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 215
+    0x1.921fb02f1ddf846973aabe148b701d17p-1,
+    0x1.6a09eap-1
+  },
+  { // Entry 216
+    0x1.0c152c8de0a83d8e4e5b1362f47a87c2p-1,
+    0x1.bb67aap-1
+  },
+  { // Entry 217
+    0x1.0c15288de0c0a374f676f4425482c282p-1,
+    0x1.bb67acp-1
+  },
+  { // Entry 218
+    0x1.0c15248de0cb2e1ef42023dc8eb80020p-1,
+    0x1.bb67aep-1
+  },
+  { // Entry 219
+    0x1.0c15208de0c7dd8ba756ab16a2362af4p-1,
+    0x1.bb67b0p-1
+  },
+  { // Entry 220
+    0x1.0c151c8de0b6b1ba701a8724928ef46ap-1,
+    0x1.bb67b2p-1
+  },
+  { // Entry 221
+    0.0,
+    0x1.p0
+  },
+  { // Entry 222
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p0
+  },
+  { // Entry 223
+    0x1.6a09e6861f3aadd17681ee6db029b4c0p-12,
+    0x1.fffffep-1
+  },
+  { // Entry 224
+    0x1.921464f50ea08a941b0111078e4ab854p1,
+    -0x1.fffffep-1
+  },
+  { // Entry 225
+    0x1.55bcf295580042e4947664b4c398a672p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 226
+    0x1.3cb0789eecd173b0646f2be9d0d21005p1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 227
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.000002p-126
+  },
+  { // Entry 228
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.000002p-126
+  },
+  { // Entry 229
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.p-126
+  },
+  { // Entry 230
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.p-126
+  },
+  { // Entry 231
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffcp-127
+  },
+  { // Entry 232
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 233
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffff8p-127
+  },
+  { // Entry 234
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 235
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-148
+  },
+  { // Entry 236
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-148
+  },
+  { // Entry 237
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149
+  },
+  { // Entry 238
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149
+  },
+  { // Entry 239
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0.0f
+  },
+  { // Entry 240
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/acosh_intel_data.h b/tests/math_data/acosh_intel_data.h
new file mode 100644
index 0000000..69552f8
--- /dev/null
+++ b/tests/math_data/acosh_intel_data.h
@@ -0,0 +1,958 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_acosh_intel_data[] = {
+  { // Entry 0
+    0x1.52417db067f37fff78da0e59c786a63ep8,
+    0x1.0000000000001p487
+  },
+  { // Entry 1
+    0x1.132def2b505ebfb768161d82be1f888dp9,
+    0x1.0000000000001p793
+  },
+  { // Entry 2
+    0x1.0979b1dbc2e56800030ba9b06cf83f10p9,
+    0x1.000000000001fp765
+  },
+  { // Entry 3
+    0x1.2c2fc595456a2807214d0087f4432d47p-23,
+    0x1.000000000002cp0
+  },
+  { // Entry 4
+    0x1.7fffffffffff70000000000091ccccccp-23,
+    0x1.0000000000048p0
+  },
+  { // Entry 5
+    0x1.fffffffffffaaaaaaaaaaad111111111p-22,
+    0x1.00000000002p0
+  },
+  { // Entry 6
+    0x1.bb67ae854d5db16a878f9eb2adb06a0bp-16,
+    0x1.000000018p0
+  },
+  { // Entry 7
+    0x1.69dca2563fe028021e9094ed47ed04ecp-15,
+    0x1.00000003ff0p0
+  },
+  { // Entry 8
+    0x1.30fc1934f09c97ff42ffecad467897fdp6,
+    0x1.000000cp109
+  },
+  { // Entry 9
+    0x1.6c275e69b28b4441b5463b5476d53758p-10,
+    0x1.0000103p0
+  },
+  { // Entry 10
+    0x1.b1e5d906d5ed79cefcae2668c5f67c8ap-10,
+    0x1.000016fb5b0c4p0
+  },
+  { // Entry 11
+    0x1.deee9cb901ed887353ce5684cd29c83ep-10,
+    0x1.00001c0p0
+  },
+  { // Entry 12
+    0x1.deee5b3e7d4c333cbcba1f16d8473a1ep-8,
+    0x1.0001cp0
+  },
+  { // Entry 13
+    0x1.ffffaaaad110fa35b2e863129439b017p-8,
+    0x1.00020p0
+  },
+  { // Entry 14
+    0x1.338a7b0a9bbf4515d91fc94b631d949bp-7,
+    0x1.0002e2ec3f80cp0
+  },
+  { // Entry 15
+    0x1.398892de8eab46dddf895e6b2df71e14p-7,
+    0x1.00030p0
+  },
+  { // Entry 16
+    0x1.bb66d0d2d8d230fe173d0d972c5321a0p-7,
+    0x1.00060p0
+  },
+  { // Entry 17
+    0x1.ffdea9ecfe4a23fd37592420dd1e4aecp-7,
+    0x1.0007ff0p0
+  },
+  { // Entry 18
+    0x1.6a0803b6df85a5a6a28a7d24344fd7bcp-6,
+    0x1.001p0
+  },
+  { // Entry 19
+    0x1.13b744b6fc24081df6488fc0a0521447p-5,
+    0x1.00251f4dbf0f3p0
+  },
+  { // Entry 20
+    0x1.5164c776eb38b7a1b4e392209f7cd76cp0,
+    0x1.00380p1
+  },
+  { // Entry 21
+    0x1.74927a59064b972c627d0f8dbf3a208bp-5,
+    0x1.0043ca3ea0570p0
+  },
+  { // Entry 22
+    0x1.e9b61fa83327114a9499c4386197f7ecp-5,
+    0x1.007522166b864p0
+  },
+  { // Entry 23
+    0x1.4a6b504ae30bf818ff58df731784a2e5p-4,
+    0x1.00d55a07e7d7dp0
+  },
+  { // Entry 24
+    0x1.6e48df1bd304d83259b7350ef19d654ap-4,
+    0x1.010636f08d98cp0
+  },
+  { // Entry 25
+    0x1.86cc84485647b80c608bfc977c465c3ep-4,
+    0x1.012a83d511968p0
+  },
+  { // Entry 26
+    0x1.8c96a62f43fda829f2c6aa64fc7c3f52p-4,
+    0x1.01336eaa27065p0
+  },
+  { // Entry 27
+    0x1.c96ae158c261681aae2f1ac5b1e7b53dp-4,
+    0x1.01991427286a7p0
+  },
+  { // Entry 28
+    0x1.fd303bdcd51d207b38fd033ccca4ebe0p-4,
+    0x1.01fb0b7471c13p0
+  },
+  { // Entry 29
+    0x1.01fbf091ad42880b50591ac5a3c25a55p-3,
+    0x1.0208a7bec3ef6p0
+  },
+  { // Entry 30
+    0x1.2142780a5b4da80572f1f1e417c281e0p-3,
+    0x1.028ec4a860985p0
+  },
+  { // Entry 31
+    0x1.c6f3debc6b9baf8fd4952d3e75007116p4,
+    0x1.040p40
+  },
+  { // Entry 32
+    0x1.b776eaca67a8d81470ca11e3c19618f4p-3,
+    0x1.05ea9e87359f0p0
+  },
+  { // Entry 33
+    0x1.c738f388674bbffeab4246796640039ap-3,
+    0x1.0659a435f099fp0
+  },
+  { // Entry 34
+    0x1.f33d4f7790f6982e3cae58a8f5a4c85cp-3,
+    0x1.07a4d97d8d94cp0
+  },
+  { // Entry 35
+    0x1.f6ac7bad8b4ac7489787663c51fd8389p-3,
+    0x1.07cp0
+  },
+  { // Entry 36
+    0x1.fc25c7d91809f80c15ad7b8a098904e9p-3,
+    0x1.07ebaac665ee8p0
+  },
+  { // Entry 37
+    0x1.14d72e562b86f80b92db76914c1a8483p-2,
+    0x1.0969a517e7390p0
+  },
+  { // Entry 38
+    0x1.3724eb536abd17f3549fde7c0a8bcc78p4,
+    0x1.0a05028140ap27
+  },
+  { // Entry 39
+    0x1.424e1a83309277fc74e6252f9ccff51ep4,
+    0x1.0b31d5526e304p28
+  },
+  { // Entry 40
+    0x1.42dc24aefea4a00000f4c4c42f7676bdp-2,
+    0x1.0cd48770c2348p0
+  },
+  { // Entry 41
+    0x1.aa3dbe48def817845faa61fd5cb0449ap-2,
+    0x1.168p0
+  },
+  { // Entry 42
+    0x1.6c0ff5895036d14a54136cb97458c3a1p0,
+    0x1.18c6318c6318cp1
+  },
+  { // Entry 43
+    0x1.14aeaf2cf882b800017816b0634a51c7p1,
+    0x1.1999999a7f91bp2
+  },
+  { // Entry 44
+    0x1.c636c1b2700c78000114e5846e56f02ap-2,
+    0x1.1999999abcb84p0
+  },
+  { // Entry 45
+    0x1.c636c1b55e89800000206f2d5b63746ep-2,
+    0x1.1999999b12b2fp0
+  },
+  { // Entry 46
+    0x1.c636c1b787628800007e1a95058e28f9p-2,
+    0x1.1999999b52092p0
+  },
+  { // Entry 47
+    0x1.c636c1bc867dc0000156a1eae635a35ep-2,
+    0x1.1999999be4936p0
+  },
+  { // Entry 48
+    0x1.c636c1c7da2afffffeb98fc860cd7ceep-2,
+    0x1.1999999d30c68p0
+  },
+  { // Entry 49
+    0x1.c6d30f1d087751157fa51c32440dd291p-2,
+    0x1.19ab84ff770f9p0
+  },
+  { // Entry 50
+    0x1.38138021525b17f5a7d79c6787045fbap4,
+    0x1.19f9842cbe9dap27
+  },
+  { // Entry 51
+    0x1.cff8efdd68b8b000088f99302f13fd55p-2,
+    0x1.1abb14934c112p0
+  },
+  { // Entry 52
+    0x1.4345ce06726eeffd3deec654e93bb704p4,
+    0x1.1bd9ff3818250p28
+  },
+  { // Entry 53
+    0x1.da627b574124041f55d0b8534c07caa2p-2,
+    0x1.1bf734206562ep0
+  },
+  { // Entry 54
+    0x1.dcfa110e4d2be4e60f4c2c7b792aa979p-2,
+    0x1.1c4711c4711c4p0
+  },
+  { // Entry 55
+    0x1.e4f600bca9b43c7505820f34625aedf8p-2,
+    0x1.1d4p0
+  },
+  { // Entry 56
+    0x1.435af0cd8723f7fc0f030744eaf5e4f3p4,
+    0x1.1d51ee6904f05p28
+  },
+  { // Entry 57
+    0x1.f66cd8a589f9e801dcbbaba95fa2db1bp-2,
+    0x1.1f7p0
+  },
+  { // Entry 58
+    0x1.fb04da24bd3263c3c19595829f887623p-2,
+    0x1.2006d9ba6b627p0
+  },
+  { // Entry 59
+    0x1.fb4d685e13d1738553151c2a08436513p-2,
+    0x1.201034be9b997p0
+  },
+  { // Entry 60
+    0x1.fd9747d199d9e34b5ee5a758b3a33b2ep-2,
+    0x1.205bf510b5de4p0
+  },
+  { // Entry 61
+    0x1.fde64921f2be26d349af15c65d2baec8p-2,
+    0x1.206633589fb42p0
+  },
+  { // Entry 62
+    0x1.ff88ab5b57988a62645ec106c4097863p-2,
+    0x1.209c8ea824394p0
+  },
+  { // Entry 63
+    0x1.ffaa5d190b3e38a2f5978b0cbdef37c0p-2,
+    0x1.20a0f16a1f3a8p0
+  },
+  { // Entry 64
+    0x1.43d0ccb7eaf817fbfc58bb2d606c246ap4,
+    0x1.25a62ecd4ac96p28
+  },
+  { // Entry 65
+    0x1.25942d7ea38d3037fdf235c374a0a10ap-1,
+    0x1.2b4p0
+  },
+  { // Entry 66
+    0x1.1eb90fcb975c97e99a03cd4e9ecf7efep1,
+    0x1.30000000e4cffp2
+  },
+  { // Entry 67
+    0x1.1ed61acd1cef37f72ebe2150d786654ap1,
+    0x1.304376382bfc1p2
+  },
+  { // Entry 68
+    0x1.1f962e5c168007edbcf9aaa8334a7be8p1,
+    0x1.32032a240af45p2
+  },
+  { // Entry 69
+    0x1.1fda546800eb981039b042c0a6205a51p1,
+    0x1.32a2a7cec80a3p2
+  },
+  { // Entry 70
+    0x1.1ff53fa69f9f6813df120c0fc9a7c82fp1,
+    0x1.32e1bf98770d2p2
+  },
+  { // Entry 71
+    0x1.85a6fe5151e877fffe89df73281dac1ep0,
+    0x1.333333335c4e7p1
+  },
+  { // Entry 72
+    0x1.203dae008f42281336198904d353a9d3p1,
+    0x1.338bc6d217390p2
+  },
+  { // Entry 73
+    0x1.204200d0ad3cb80822eaaf1a8fd400eep1,
+    0x1.3395f01ec30aep2
+  },
+  { // Entry 74
+    0x1.2180ae42458557f160869fa88bfdd767p1,
+    0x1.3686b30ec28f9p2
+  },
+  { // Entry 75
+    0x1.22824d7775d127ed6249aedcd653a683p1,
+    0x1.38ecbb448bb60p2
+  },
+  { // Entry 76
+    0x1.24d7aa57e09e200f0fa51b8e122a50d1p1,
+    0x1.3e8fa3e8fa3e8p2
+  },
+  { // Entry 77
+    0x1.24ead0998b45e80c15775fe412fa3476p1,
+    0x1.3ebe5740abf57p2
+  },
+  { // Entry 78
+    0x1.9119c13a31baffe46835ab2266588de9p0,
+    0x1.4p1
+  },
+  { // Entry 79
+    0x1.638eab49216f8ee9217f986540739282p-1,
+    0x1.404p0
+  },
+  { // Entry 80
+    0x1.663100c2a4fe2251bc802e040c21517cp-1,
+    0x1.413e827d04fa0p0
+  },
+  { // Entry 81
+    0x1.2a8a45eb147ce80084d5dc0629061b72p1,
+    0x1.4cc5baf5c8392p2
+  },
+  { // Entry 82
+    0x1.834b2cacec9cf00000bf6612e57cbe8fp-1,
+    0x1.4ccccccd6481ap0
+  },
+  { // Entry 83
+    0x1.834b2cb510a9c7fffe91256bde54bbddp-1,
+    0x1.4cccccd0c613dp0
+  },
+  { // Entry 84
+    0x1.869f689d41e5ae1cbc4db884da78fec0p-1,
+    0x1.4e309016165fcp0
+  },
+  { // Entry 85
+    0x1.dfcd5df1bc2707ffd5ca5383f4cce6e7p1,
+    0x1.53d4f53d4f53cp4
+  },
+  { // Entry 86
+    0x1.2e3bb6dd0b0ae0067c5f911faaaa78ddp1,
+    0x1.5655956559564p2
+  },
+  { // Entry 87
+    0x1.30af83c42c157ff130f6bbdfb23ca759p1,
+    0x1.5cd735cd735ccp2
+  },
+  { // Entry 88
+    0x1.af87977409910c12e8a8802fd87c6abfp-1,
+    0x1.6070381c0e040p0
+  },
+  { // Entry 89
+    0x1.3bacc53061f3b7f7d9035c57315345fbp4,
+    0x1.6118461184610p27
+  },
+  { // Entry 90
+    0x1.b2066fe0952af7fd5b1a52e397d20b42p-1,
+    0x1.619f89771feaap0
+  },
+  { // Entry 91
+    0x1.b243d68391f9d80c17216d59e4919bafp-1,
+    0x1.61bccd7f349c4p0
+  },
+  { // Entry 92
+    0x1.bbe95ab6d25078000176eb5757518ce0p-1,
+    0x1.6666666a4d8cap0
+  },
+  { // Entry 93
+    0x1.bce47c50e597e80168ea6ea197b7c5fbp-1,
+    0x1.66e198e40a07cp0
+  },
+  { // Entry 94
+    0x1.c4b434e7858417fe5522bdc24515e3abp-1,
+    0x1.6ac2abcce660fp0
+  },
+  { // Entry 95
+    0x1.b4b0591fab93e80c344916601f3f98fep0,
+    0x1.6c0p1
+  },
+  { // Entry 96
+    0x1.c9e777034bed37fc519e004af23c57ecp-1,
+    0x1.6d63c0cb542d6p0
+  },
+  { // Entry 97
+    0x1.cda9310b784e5000aeae7baa2dcc4cfcp-1,
+    0x1.6f5p0
+  },
+  { // Entry 98
+    0x1.d169426b135d0bbab276664d9f830c71p-1,
+    0x1.7140727bb4fa3p0
+  },
+  { // Entry 99
+    0x1.d740fdf53668a1bcea81609db9e0db68p-1,
+    0x1.745p0
+  },
+  { // Entry 100
+    0x1.bc01207bd25b6801df8e788fb5f41357p0,
+    0x1.75e32cf383997p1
+  },
+  { // Entry 101
+    0x1.ecc2caec5160436e6ef0c4dfd37de905p-1,
+    0x1.7fffffffffffdp0
+  },
+  { // Entry 102
+    0x1.ecc2caf0a75cdffffe93419822098956p-1,
+    0x1.800000026c803p0
+  },
+  { // Entry 103
+    0x1.ee3b06ecea5ed564406442d07861a73fp-1,
+    0x1.80d2ba083b446p0
+  },
+  { // Entry 104
+    0x1.f314c9cb875be7f25915ef6fe8147ea7p-1,
+    0x1.839p0
+  },
+  { // Entry 105
+    0x1.f4ba2f1cad8f475dfb4fa048b5cece75p-1,
+    0x1.848p0
+  },
+  { // Entry 106
+    0x1.fbd18e6aa534eed05007aee3d66b990ap-1,
+    0x1.8895b461da6c6p0
+  },
+  { // Entry 107
+    0x1.9bdb225dace4b0005714c41371dff0c4p1,
+    0x1.90240902409p3
+  },
+  { // Entry 108
+    0x1.0c0616dbd301e000016d7f0d89731675p0,
+    0x1.9999999ac11f3p0
+  },
+  { // Entry 109
+    0x1.d4d19d0a825927fe1b0973d8b461e8edp0,
+    0x1.99cp1
+  },
+  { // Entry 110
+    0x1.4c703d5db8586802badfb82b797d3dc0p1,
+    0x1.b0020p2
+  },
+  { // Entry 111
+    0x1.1efb699cdcd33801fb03b9466fdd60fap0,
+    0x1.b26c9b26c9b26p0
+  },
+  { // Entry 112
+    0x1.2d72a3ace48437fde986eb51409ae273p0,
+    0x1.c6f61e8a542a8p0
+  },
+  { // Entry 113
+    0x1.f1b4656fac2777ff0b0732f4ed9eaaf0p0,
+    0x1.c86p1
+  },
+  { // Entry 114
+    0x1.5550540d3de547fce11196feb22aa2e1p1,
+    0x1.ceb1dd915e476p2
+  },
+  { // Entry 115
+    0x1.e4db571e008197fe9e09c3aa26aa7fccp3,
+    0x1.d0741d0741d04p20
+  },
+  { // Entry 116
+    0x1.07eac9f6dafa57ff028d331cb48f9038p3,
+    0x1.dd374dd374dd0p10
+  },
+  { // Entry 117
+    0x1.e784c2b3e554f800004d96919f791652p5,
+    0x1.e3920fcba08c5p86
+  },
+  { // Entry 118
+    0x1.e4bcd2d77ead3ffffa7087c93f5678b5p2,
+    0x1.e6bd865d59181p9
+  },
+  { // Entry 119
+    0x1.09ba252166ce8800003aa2a95746a4aap3,
+    0x1.f8fc7e3f1f880p10
+  },
+  { // Entry 120
+    0x1.4e6b108abebaefffc5c616605660da14p0,
+    0x1.fb5p0
+  },
+  { // Entry 121
+    0x1.2a66594f2e5b0fffff7ff379f5e243a7p9,
+    0x1.fff003fffffffp859
+  },
+  { // Entry 122
+    0x1.081ca3e524daf5a4d1e9e6092a37c659p1,
+    0x1.fff7fffffffffp1
+  },
+  { // Entry 123
+    0x1.081ce5ff7fcfd7ff29362493ef56165fp1,
+    0x1.fff8fffffffffp1
+  },
+  { // Entry 124
+    0x1.6262acbb698ca80507700d5ef3d0c5adp1,
+    0x1.fffcfffffffffp2
+  },
+  { // Entry 125
+    0x1.8e8f43d38040fffeda732c8d164c1eb5p8,
+    0x1.fffffbbffffffp573
+  },
+  { // Entry 126
+    0x1.c55179395a000800ddc334790469d4dep7,
+    0x1.fffffe3ffffffp325
+  },
+  { // Entry 127
+    0x1.27a094edef0c27ffb3d9ba9f6d2910a5p9,
+    0x1.fffffe3ffffffp851
+  },
+  { // Entry 128
+    0x1.27f94df9eaf50fbc89beac79392b0a20p9,
+    0x1.fffffe3ffffffp852
+  },
+  { // Entry 129
+    0x1.bb7d2fe3dbf7f7fee03edebc7a01d599p1,
+    0x1.fffffffbfbfffp3
+  },
+  { // Entry 130
+    0x1.62e3efef359dffffb4e2975678a61bf4p2,
+    0x1.ffffffff8ffffp6
+  },
+  { // Entry 131
+    0x1.86ef5ccdfa1b17fe78c886a9d8b2faaep7,
+    0x1.ffffffffddfffp280
+  },
+  { // Entry 132
+    0x1.62e3efef419e17fffe6390b9f02bcc28p2,
+    0x1.ffffffffeffffp6
+  },
+  { // Entry 133
+    0x1.62e3efef439dffffd26b10f8467623p2,
+    0x1.ffffffffffff1p6
+  },
+  { // Entry 134
+    0x1.419ecb712c4808035decb58386841d9dp4,
+    0x1.ffffffffffff7p27
+  },
+  { // Entry 135
+    0x1.633ce8fb9f87dafc69ac5909d3e5a6d9p9,
+    0x1.ffffffffffffap1023
+  },
+  { // Entry 136
+    0x1.62e3efef439e1800026ba0fa2d3cdb98p2,
+    0x1.ffffffffffffdp6
+  },
+  { // Entry 137
+    0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    0x1.ffffffffffffep501
+  },
+  { // Entry 138
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 139
+    0x1.9f323ecbf9848bf835a433c0ce9aed17p-2,
+    0x1.1555555555555p0
+  },
+  { // Entry 140
+    0x1.23a4fbcdbc0835819feea2ceae6532bdp-1,
+    0x1.2aaaaaaaaaaaap0
+  },
+  { // Entry 141
+    0x1.62e42fefa39ec8ace91cbc855a44bdf6p-1,
+    0x1.3ffffffffffffp0
+  },
+  { // Entry 142
+    0x1.973a2448a635d2473522e0e7015d28f1p-1,
+    0x1.5555555555554p0
+  },
+  { // Entry 143
+    0x1.c484603eb09c0970ffa86254d6babfa5p-1,
+    0x1.6aaaaaaaaaaa9p0
+  },
+  { // Entry 144
+    0x1.ecc2caec5160600d94b684cdb2112543p-1,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 146
+    0x1.79072028586b73758a4f622cafb07d48p-1,
+    0x1.489a5796de0b2p0
+  },
+  { // Entry 147
+    0x1.94d80f30e93e5e29997af8fe4481c88cp-1,
+    0x1.54494203c1934p0
+  },
+  { // Entry 148
+    0x1.cddcc71de32ab5ac57c13ba40ec7963bp-1,
+    0x1.6f6a8be981db0p0
+  },
+  { // Entry 149
+    0x1.8fcb9d874c026f2c12450971bb1bddfcp-1,
+    0x1.521792ea7d26ep0
+  },
+  { // Entry 150
+    0x1.8ca5043b79263a06aa0f70d7d0bda22bp-2,
+    0x1.13723f2585da2p0
+  },
+  { // Entry 151
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 152
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 153
+    0x1.0893ff7cee46eb16015477f9b6695819p0,
+    0x1.9555555555555p0
+  },
+  { // Entry 154
+    0x1.193ea7aad030a176a4198d5505137cb5p0,
+    0x1.aaaaaaaaaaaaap0
+  },
+  { // Entry 155
+    0x1.28a7cbb850061ed8cb452c64c52218c9p0,
+    0x1.bffffffffffffp0
+  },
+  { // Entry 156
+    0x1.37030b8cc93542ccc38cca9157b0f26dp0,
+    0x1.d555555555554p0
+  },
+  { // Entry 157
+    0x1.44779e1ebd847257f6c077cb3350b457p0,
+    0x1.eaaaaaaaaaaa9p0
+  },
+  { // Entry 158
+    0x1.5124271980433744c1063fe570409b9ap0,
+    0x1.ffffffffffffep0
+  },
+  { // Entry 159
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 160
+    0x1.0c2423fc001c38dcbc9cd1946000f563p0,
+    0x1.99bf25234bccap0
+  },
+  { // Entry 161
+    0x1.197e89ca48809b3746de418fbf0ee383p0,
+    0x1.aaffe573bd7bbp0
+  },
+  { // Entry 162
+    0x1.261b72900d136b90cbef8fa9a3bbd85ap0,
+    0x1.bc5ccd71976cbp0
+  },
+  { // Entry 163
+    0x1.fbbfb95324eb186f3d677aed30c35884p-1,
+    0x1.888b56d86b26ep0
+  },
+  { // Entry 164
+    0x1.4cf1a48b4bdba9043707a45b35f0d529p0,
+    0x1.f8cc6db1bbcb4p0
+  },
+  { // Entry 165
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.0p1
+  },
+  { // Entry 166
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.0p100
+  },
+  { // Entry 167
+    0x1.1869a6d0fc0c8734cff5be4c994a623cp6,
+    0x1.199999999999ap100
+  },
+  { // Entry 168
+    0x1.18c2c053a6401fdf8f801885ecec896ep6,
+    0x1.3333333333334p100
+  },
+  { // Entry 169
+    0x1.1914b70ad53709fc02e60c9931465d1cp6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 170
+    0x1.19609a00a84eb5469b8a14575cfcffdcp6,
+    0x1.6666666666668p100
+  },
+  { // Entry 171
+    0x1.19a74011e314f1179b5984282f925681p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 172
+    0x1.19e95674b98dd93c68942542ae48ec14p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 173
+    0x1.1a276ad639b09e9294f7218ef587ce6cp6,
+    0x1.b333333333336p100
+  },
+  { // Entry 174
+    0x1.1a61f2927239a4e5d75ab70952b3595ap6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 175
+    0x1.1a994ff83eca77f3ef91866a7b8540e2p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 176
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.0p101
+  },
+  { // Entry 177
+    0x1.16a529a32777cd0fc3079004b633875fp7,
+    0x1.0p200
+  },
+  { // Entry 178
+    0x1.16d5f62219f05aa89db4c3750fbb01d6p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 179
+    0x1.170282e36f0a26fdfd79f091b98c1570p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 180
+    0x1.172b7e3f06859c0c372cea9b5bb8ff47p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 181
+    0x1.17516fb9f01171b1837eee7a719450a6p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 182
+    0x1.1774c2c28d748f9a0366a662dadefbf9p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 183
+    0x1.1795cdf3f8b103ac6a03f6f01a3a46c3p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 184
+    0x1.17b4d824b8c26657803575163dd9b7efp7,
+    0x1.b333333333336p200
+  },
+  { // Entry 185
+    0x1.17d21c02d506e98121673fd36c6f7d66p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 186
+    0x1.17edcab5bb4f53082d82a78400d8712ap7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 187
+    0x1.18080dd3171b6c031a9b576be63b6d4cp7,
+    0x1.0p201
+  },
+  { // Entry 188
+    0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    0x1.0p1000
+  },
+  { // Entry 189
+    0x1.5af7c2fbbe5044c692e0f97aca1a61e7p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 190
+    0x1.5b02e62c1396b7dbead244c1f48ea6cdp9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 191
+    0x1.5b0d2502f975951f793f03445d19e143p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 192
+    0x1.5b16a161b3d88a88cc53843c2290b59bp9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 193
+    0x1.5b1f7623db315202ec4d72363ce36070p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 194
+    0x1.5b27b8f036006f0785f4c6598cba3322p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 195
+    0x1.5b2f7b7c6604c7b24b8125e315a20f6dp9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 196
+    0x1.5b36cc73ed15e87cb3cd9892614780cbp9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 197
+    0x1.5b3db820a6a802de76d4727e8661bdbcp9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 198
+    0x1.5b4448e7fd9b091d321a9e787fba7cc4p9,
+    0x1.0p1001
+  },
+  { // Entry 199
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 200
+    0x1.ecc2caec51607cacba7c44bb8e7ed846p-1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 201
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 202
+    0x1.ecc2caec5160b5eb0607c49740e9a298p-1,
+    0x1.8000000000001p0
+  },
+  { // Entry 203
+    0x1.512427198043408194a907fefefaf99cp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 204
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.0p1
+  },
+  { // Entry 205
+    0x1.5124271980435c380f91604ba8dadeb9p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 206
+    0x1.081eb4b42159138d780ef9da45476c93p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 207
+    0x1.081eb4b4215917af0d37af17fbf93f73p1,
+    0x1.0p2
+  },
+  { // Entry 208
+    0x1.081eb4b421591ff23789199368f32314p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 209
+    0x1.1542457337d4299c6b73c89d8469a171p4,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 210
+    0x1.1542457337d42a1c6b73c89d84aba171p4,
+    0x1.0p24
+  },
+  { // Entry 211
+    0x1.1542457337d42b1c6b73c89d8523a171p4,
+    0x1.0000000000001p24
+  },
+  { // Entry 212
+    0x1.3687a9f1af2b145ca14e7a4a06e617b2p4,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 213
+    0x1.3687a9f1af2b14dca14e7a4a06e917b2p4,
+    0x1.0p27
+  },
+  { // Entry 214
+    0x1.3687a9f1af2b15dca14e7a4a06e317b2p4,
+    0x1.0000000000001p27
+  },
+  { // Entry 215
+    0x1.419ecb712c480c035decb58387261d9dp4,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 216
+    0x1.419ecb712c480c835decb58387285d9dp4,
+    0x1.0p28
+  },
+  { // Entry 217
+    0x1.419ecb712c480d835decb5838720dd9dp4,
+    0x1.0000000000001p28
+  },
+  { // Entry 218
+    0x1.62e42fefa39ef31793c7673007e4ed5ep5,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 219
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.0p63
+  },
+  { // Entry 220
+    0x1.62e42fefa39ef3d793c7673007e1ed5ep5,
+    0x1.0000000000001p63
+  },
+  { // Entry 221
+    0x1.601e678fc457b550e49fd861a7d5a183p6,
+    0x1.fffffffffffffp125
+  },
+  { // Entry 222
+    0x1.601e678fc457b570e49fd861a7d62183p6,
+    0x1.0p126
+  },
+  { // Entry 223
+    0x1.601e678fc457b5b0e49fd861a7d42183p6,
+    0x1.0000000000001p126
+  },
+  { // Entry 224
+    0x1.628b76e3a7b60b96bde275563be3e3e3p9,
+    0x1.fffffffffffffp1021
+  },
+  { // Entry 225
+    0x1.628b76e3a7b60b9abde275563be3f3e3p9,
+    0x1.0p1022
+  },
+  { // Entry 226
+    0x1.628b76e3a7b60ba2bde275563be3b3e3p9,
+    0x1.0000000000001p1022
+  },
+  { // Entry 227
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 229
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 230
+    0x1.633ce8fb9f87db0c69ac5909d3e7a6d9p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 231
+    0x1.cfc02f90106c17a3fd778845de3494b4p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 232
+    0x1.05f23c6cbaf30c042e32011989ade594p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 233
+    0x1.6a09e667f3bcc725fb1d3377443ae618p-26,
+    0x1.0000000000001p0
+  },
+  { // Entry 234
+    0.0,
+    0x1.0p0
+  }
+};
diff --git a/tests/math_data/acoshf_intel_data.h b/tests/math_data/acoshf_intel_data.h
new file mode 100644
index 0000000..2541aee
--- /dev/null
+++ b/tests/math_data/acoshf_intel_data.h
@@ -0,0 +1,662 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_acoshf_intel_data[] = {
+  { // Entry 0
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 1
+    0x1.7912730e9dd8c28d0c2e8851730eeb45p4,
+    0x1.000002p33
+  },
+  { // Entry 2
+    0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    0x1.000002p63
+  },
+  { // Entry 3
+    0x1.6a09dedd14b1e5d3f0a7b66fb7978e52p-9,
+    0x1.000040p0
+  },
+  { // Entry 4
+    0x1.5124710011087370bef8ff29334f0588p0,
+    0x1.000040p1
+  },
+  { // Entry 5
+    0x1.7ffff7000091ccc09884d33b64b1eb87p-9,
+    0x1.000048p0
+  },
+  { // Entry 6
+    0x1.686fc30f61d32f36cebd3556647e6d85p5,
+    0x1.00004cp64
+  },
+  { // Entry 7
+    0x1.5125e27f7363b91a4d3149cf50666ecap0,
+    0x1.000180p1
+  },
+  { // Entry 8
+    0x1.e330350c572f333162767c36dce61564p-8,
+    0x1.0001c8p0
+  },
+  { // Entry 9
+    0x1.52a797d729941823c44aae94a78e8d74p-7,
+    0x1.000380p0
+  },
+  { // Entry 10
+    0x1.94c4db06c1e84a221d39f0a3cee05599p-7,
+    0x1.0005p0
+  },
+  { // Entry 11
+    0x1.deed89b7b3535ce83319a83454260bf8p-7,
+    0x1.0007p0
+  },
+  { // Entry 12
+    0x1.52a1ce85b747431168d159e69c1ef56ep-5,
+    0x1.0038p0
+  },
+  { // Entry 13
+    0x1.67d67454b91b1d46567f99ba2e2e100cp-5,
+    0x1.003f3cp0
+  },
+  { // Entry 14
+    0x1.deff5d6d7e77e9ef89d533cd1b4674c0p-5,
+    0x1.007010p0
+  },
+  { // Entry 15
+    0x1.03ecf505a34cdb22e926c22dafdcba93p-4,
+    0x1.0084p0
+  },
+  { // Entry 16
+    0x1.522637e146375db3d5e54da506a6da8ap0,
+    0x1.00e0p1
+  },
+  { // Entry 17
+    0x1.74d0fb045fad2bb6a0e3f2f93c3dbcc4p-4,
+    0x1.010fa8p0
+  },
+  { // Entry 18
+    0x1.90b591058df058eb707359449093e7d5p-4,
+    0x1.0139dcp0
+  },
+  { // Entry 19
+    0x1.bb67a8fd17fb152d1c73ebdb092cac1dp-4,
+    0x1.018060p0
+  },
+  { // Entry 20
+    0x1.e71f530f94e947158a386b336cdec658p-4,
+    0x1.01d0p0
+  },
+  { // Entry 21
+    0x1.ffaad0fa452627976ff366b9d3840fd1p-4,
+    0x1.02p0
+  },
+  { // Entry 22
+    0x1.5530ccfff7ae8f7c70f1590984ee044fp0,
+    0x1.038ap1
+  },
+  { // Entry 23
+    0x1.5e4fd4ffff5dbe26d4ed5650c003b86ap0,
+    0x1.0bc0p1
+  },
+  { // Entry 24
+    0x1.5fab1f780d388e9cc57b36be3c3141c7p0,
+    0x1.0dp1
+  },
+  { // Entry 25
+    0x1.763bdf002ea17936e0bfcfe7b6511bcbp-2,
+    0x1.114986p0
+  },
+  { // Entry 26
+    0x1.a00911010f93abee028e302008964513p-2,
+    0x1.156bbcp0
+  },
+  { // Entry 27
+    0x1.94e9050d7f9b05eaab2ab578f9f7c8a9p2,
+    0x1.17a93cp8
+  },
+  { // Entry 28
+    0x1.b6c931c025238ebcf98ef12eb28d8307p5,
+    0x1.18p78
+  },
+  { // Entry 29
+    0x1.bb6f05ffddc8a6d7ec01df7072e6e0f0p-2,
+    0x1.18616cp0
+  },
+  { // Entry 30
+    0x1.6d74ee000195eb1aa7d81dd17a217ffap0,
+    0x1.1a23bap1
+  },
+  { // Entry 31
+    0x1.ca976f7083fa74fb28b04fb16943e348p1,
+    0x1.20p4
+  },
+  { // Entry 32
+    0x1.efbe20ff9b93b8c1be0904c4167348d7p2,
+    0x1.210840p10
+  },
+  { // Entry 33
+    0x1.76b1c30001e25f3c8bf59f51e1345b89p0,
+    0x1.2365e8p1
+  },
+  { // Entry 34
+    0x1.14d7f7fffe2fabae91a11982e4e616c8p-1,
+    0x1.2658p0
+  },
+  { // Entry 35
+    0x1.2693990483fd8eeb51271e2e585b684dp-1,
+    0x1.2b8d74p0
+  },
+  { // Entry 36
+    0x1.5c4e960001d47445bae41369dbff3bebp-1,
+    0x1.3d8ea8p0
+  },
+  { // Entry 37
+    0x1.6aae7300008fa4d9f021ed601c65f965p-1,
+    0x1.42f55cp0
+  },
+  { // Entry 38
+    0x1.9e86a6000ecf0210e4a6a5b7423d0413p0,
+    0x1.4fd3f0p1
+  },
+  { // Entry 39
+    0x1.8e05b6fd5d1b8aec832f758abac8fe89p-1,
+    0x1.515450p0
+  },
+  { // Entry 40
+    0x1.df328b0ba47a77279fd4ced3f49c93eap1,
+    0x1.523b56p4
+  },
+  { // Entry 41
+    0x1.9eb7a2fc5b6aa4ff59b8601984b72a68p-1,
+    0x1.58ac40p0
+  },
+  { // Entry 42
+    0x1.abc47a73960e8473135511220cc16ca9p0,
+    0x1.6058p1
+  },
+  { // Entry 43
+    0x1.83ceeb0e93a6e047b70a3145b22d0855p3,
+    0x1.660dd6p16
+  },
+  { // Entry 44
+    0x1.e7306f0ae25f79290292e6e2e6fa8ca0p1,
+    0x1.67ffc0p4
+  },
+  { // Entry 45
+    0x1.c3bf8400023ca827c6741d7e90c625f4p-1,
+    0x1.6a48p0
+  },
+  { // Entry 46
+    0x1.9036310001a25b1ccef0f5035d136dc3p1,
+    0x1.6d7680p3
+  },
+  { // Entry 47
+    0x1.cb7077ffffb491dd760b7538a02c6e3ep-1,
+    0x1.6e2c4cp0
+  },
+  { // Entry 48
+    0x1.d466eb047d3274c3f8e4ad57ff764ea1p-1,
+    0x1.72d0p0
+  },
+  { // Entry 49
+    0x1.d53c6fc6f92e0ba23b31c22d8cc254cfp-1,
+    0x1.7340p0
+  },
+  { // Entry 50
+    0x1.ec49d25fbb6766d39e90829e6e2e250cp1,
+    0x1.769da0p4
+  },
+  { // Entry 51
+    0x1.dc679d017683946d78e2a9cc803cf6c7p-1,
+    0x1.770d10p0
+  },
+  { // Entry 52
+    0x1.e8c0b0fffe1ddf6adf3d4c2f7dd95d58p-1,
+    0x1.7dc566p0
+  },
+  { // Entry 53
+    0x1.e9609b000000a0eda71092f93ae128abp-1,
+    0x1.7e1deep0
+  },
+  { // Entry 54
+    0x1.ecc2c030a30fcdab9ac241b66cd30c25p-1,
+    0x1.7ffffap0
+  },
+  { // Entry 55
+    0x1.ecc35a07f3682dbaa360587c559ccbd3p-1,
+    0x1.800050p0
+  },
+  { // Entry 56
+    0x1.ecc6dc03c34154354f855c6bd517af5dp-1,
+    0x1.800246p0
+  },
+  { // Entry 57
+    0x1.f0192f00019712eb97524c0bc702be17p-1,
+    0x1.81dfb6p0
+  },
+  { // Entry 58
+    0x1.f284540001b93c8ebe3f4affe21905a6p-1,
+    0x1.833df6p0
+  },
+  { // Entry 59
+    0x1.f4d44c1caf6cd216b634d3097e9011f1p-1,
+    0x1.848ee8p0
+  },
+  { // Entry 60
+    0x1.f4ff87d0159c59ba0482602abe442ae8p-1,
+    0x1.84a798p0
+  },
+  { // Entry 61
+    0x1.fbd18dc250d3324af75f978654b26cdfp-1,
+    0x1.8895b4p0
+  },
+  { // Entry 62
+    0x1.fc5d43a0453c54315cc3647a30e4ed2bp-1,
+    0x1.88e6fap0
+  },
+  { // Entry 63
+    0x1.feb4430000ee8977e14ac962c3ef7706p-1,
+    0x1.8a44bap0
+  },
+  { // Entry 64
+    0x1.ce51f9f47895ee807158da16a38ca157p0,
+    0x1.8ffffep1
+  },
+  { // Entry 65
+    0x1.6c02870f43f412f2facda9c71af64d9ap5,
+    0x1.9026f4p64
+  },
+  { // Entry 66
+    0x1.47533d0000264c4cbb7c2fab58133240p1,
+    0x1.9f47e2p2
+  },
+  { // Entry 67
+    0x1.1a30b200001c3de79bc0f29982af5fc1p0,
+    0x1.abee22p0
+  },
+  { // Entry 68
+    0x1.3f6350ffda1d235a4490f7aa2ce26ae7p4,
+    0x1.bd531cp27
+  },
+  { // Entry 69
+    0x1.50eb6d04542893111cfd374dfd3d214fp1,
+    0x1.bf3baap2
+  },
+  { // Entry 70
+    0x1.2dfa93ff2c6700d1d90825d37183dcd9p2,
+    0x1.bffffep5
+  },
+  { // Entry 71
+    0x1.ecf4c21af95787266aac99616d63af21p0,
+    0x1.c053d4p1
+  },
+  { // Entry 72
+    0x1.ee596e252c01641fd16160b80bc6afe6p0,
+    0x1.c2ac2ap1
+  },
+  { // Entry 73
+    0x1.52826efff379e591193fb977ff4e6bb1p1,
+    0x1.c4c3fcp2
+  },
+  { // Entry 74
+    0x1.cb605d0b0f66c2ac5857cda13901790bp5,
+    0x1.cb0d08p81
+  },
+  { // Entry 75
+    0x1.f38fc1e25f10f5fb2271b50edba446b8p0,
+    0x1.cb9080p1
+  },
+  { // Entry 76
+    0x1.3940a3ffff65e12ff76d6976a25254bfp0,
+    0x1.d8cb54p0
+  },
+  { // Entry 77
+    0x1.40889effd28e277ad840d7466abad6ecp4,
+    0x1.de61fcp27
+  },
+  { // Entry 78
+    0x1.09aa20ff6df329fc6965c5157042b44ap3,
+    0x1.f7fffep10
+  },
+  { // Entry 79
+    0x1.dca21f00608c1d5dfa8c6e2db5abd9c0p4,
+    0x1.f7fffep41
+  },
+  { // Entry 80
+    0x1.62636e000aae80a748dcd7555caf8e89p2,
+    0x1.fbfffep6
+  },
+  { // Entry 81
+    0x1.50a2ac95684b68fdc508df40cc73323dp0,
+    0x1.ff1ffep0
+  },
+  { // Entry 82
+    0x1.50b9c8d9ac3d9fed6029492e2946e89cp0,
+    0x1.ff47f0p0
+  },
+  { // Entry 83
+    0x1.b6102affc7f74638c6d979799db2bfaap5,
+    0x1.ff9ffep77
+  },
+  { // Entry 84
+    0x1.50f6250001e11ede297c4b3f4b76e264p0,
+    0x1.ffb058p0
+  },
+  { // Entry 85
+    0x1.510a08ffff3a5b971fb41b757c6603ecp0,
+    0x1.ffd2c6p0
+  },
+  { // Entry 86
+    0x1.419ecb012c46848356c72808ab86361cp4,
+    0x1.fffff2p27
+  },
+  { // Entry 87
+    0x1.55074600473a9dd627ac47d1d2419990p6,
+    0x1.fffff8p121
+  },
+  { // Entry 88
+    0x1.640e90fffe1db3e4bbbe3d2c1b08c229p0,
+    0x1.111874p1
+  },
+  { // Entry 89
+    0.0,
+    0x1.p0
+  },
+  { // Entry 90
+    0x1.9f3245325fddd5b2c87f249c5271c1cdp-2,
+    0x1.155556p0
+  },
+  { // Entry 91
+    0x1.23a5003dc2a6d928dd921e808a9011e8p-1,
+    0x1.2aaaacp0
+  },
+  { // Entry 92
+    0x1.62e43544f8e86e9a20f297ce4a2bc5d8p-1,
+    0x1.400002p0
+  },
+  { // Entry 93
+    0x1.973a2a54caa1da0a04be159db5cae8abp-1,
+    0x1.555558p0
+  },
+  { // Entry 94
+    0x1.c48466e37608eec558429434454efbc0p-1,
+    0x1.6aaaaep0
+  },
+  { // Entry 95
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 96
+    0.0,
+    0x1.p0
+  },
+  { // Entry 97
+    0x1.7907212d9f29112f246e3e48d17cb877p-1,
+    0x1.489a58p0
+  },
+  { // Entry 98
+    0x1.94d80f28552a7960dbd361ef8d997239p-1,
+    0x1.544942p0
+  },
+  { // Entry 99
+    0x1.cddcc749958a508d272c8af1d7f4ee9fp-1,
+    0x1.6f6a8cp0
+  },
+  { // Entry 100
+    0x1.8fcba00aaf47e796d01724c28df0a8c3p-1,
+    0x1.521794p0
+  },
+  { // Entry 101
+    0x1.8ca50cd428a176f539205f3add783b57p-2,
+    0x1.137240p0
+  },
+  { // Entry 102
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 103
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 104
+    0x1.08940007f543cfa0adae2e6229dce7e2p0,
+    0x1.955556p0
+  },
+  { // Entry 105
+    0x1.193ea8aad0300976a4b6e2a99a10d315p0,
+    0x1.aaaaacp0
+  },
+  { // Entry 106
+    0x1.28a7cd1cd2d875d89ba32eb5d574ffa4p0,
+    0x1.c00002p0
+  },
+  { // Entry 107
+    0x1.37030d490f3cb36dda8e8436280f6666p0,
+    0x1.d55558p0
+  },
+  { // Entry 108
+    0x1.4477a0289e7622001965214199d0661bp0,
+    0x1.eaaaaep0
+  },
+  { // Entry 109
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 110
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 111
+    0x1.0c242312e9f147c72de6f878eed5f263p0,
+    0x1.99bf24p0
+  },
+  { // Entry 112
+    0x1.197e88b3d1486826e7557849fa8702f9p0,
+    0x1.aaffe4p0
+  },
+  { // Entry 113
+    0x1.261b718b8dc24a39a77a013459187eabp0,
+    0x1.bc5cccp0
+  },
+  { // Entry 114
+    0x1.fbbfbb4fb3c51a1a693b8538d12b2528p-1,
+    0x1.888b58p0
+  },
+  { // Entry 115
+    0x1.4cf1a4b95964bc7af475a1628b613d0bp0,
+    0x1.f8cc6ep0
+  },
+  { // Entry 116
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 117
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.p100
+  },
+  { // Entry 118
+    0x1.1869a6d270699e1fa7c307d5fdbce864p6,
+    0x1.19999ap100
+  },
+  { // Entry 119
+    0x1.18c2c05650eac97c01479a1a77caa909p6,
+    0x1.333334p100
+  },
+  { // Entry 120
+    0x1.1914b70e86721bbde7a2eea6f077d548p6,
+    0x1.4ccccep100
+  },
+  { // Entry 121
+    0x1.19609a053a97d6f30409751e6281de59p6,
+    0x1.666668p100
+  },
+  { // Entry 122
+    0x1.19a74017386a428962791f05687972f6p6,
+    0x1.800002p100
+  },
+  { // Entry 123
+    0x1.19e9567ab98dd45c6898a542a93d6c1bp6,
+    0x1.99999cp100
+  },
+  { // Entry 124
+    0x1.1a276adcd0472f52cdae405190f05814p6,
+    0x1.b33336p100
+  },
+  { // Entry 125
+    0x1.1a61f2998eab653e55cda9cf1b8d9e50p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 126
+    0x1.1a994fffd300555a0d63481601d36422p6,
+    0x1.e6666ap100
+  },
+  { // Entry 127
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.p101
+  },
+  { // Entry 128
+    0.0,
+    0x1.p0
+  },
+  { // Entry 129
+    0x1.ecc2c7586ca3963ba572db868c3947eep-1,
+    0x1.7ffffep0
+  },
+  { // Entry 130
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 131
+    0x1.ecc2ce80361506372c8accaeb16b83abp-1,
+    0x1.800002p0
+  },
+  { // Entry 132
+    0x1.512425f1e5ce2ba992dbea3a907450b6p0,
+    0x1.fffffep0
+  },
+  { // Entry 133
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 134
+    0x1.51242968b528e77e4665f8cde850553dp0,
+    0x1.000002p1
+  },
+  { // Entry 135
+    0x1.081eb42feeb3ba85ed12ce4bc0fcf1eep1,
+    0x1.fffffep1
+  },
+  { // Entry 136
+    0x1.081eb4b4215917af0d37af17fbf93f73p1,
+    0x1.p2
+  },
+  { // Entry 137
+    0x1.081eb5bc86a22af8d808c499360fc118p1,
+    0x1.000002p2
+  },
+  { // Entry 138
+    0x1.1542456337d4221c6b6673481f564c03p4,
+    0x1.fffffep23
+  },
+  { // Entry 139
+    0x1.1542457337d42a1c6b73c89d84aba171p4,
+    0x1.p24
+  },
+  { // Entry 140
+    0x1.1542459337d40a1c6bae7347bf564d0ep4,
+    0x1.000002p24
+  },
+  { // Entry 141
+    0x1.3687a9e1af2b0cdca14904f4ad63c259p4,
+    0x1.fffffep26
+  },
+  { // Entry 142
+    0x1.3687a9f1af2b14dca14e7a4a06e917b2p4,
+    0x1.p27
+  },
+  { // Entry 143
+    0x1.3687aa11af2af4dca17964f470d3c2c5p4,
+    0x1.000002p27
+  },
+  { // Entry 144
+    0x1.419ecb612c4804835de7582e2dc70845p4,
+    0x1.fffffep27
+  },
+  { // Entry 145
+    0x1.419ecb712c480c835decb58387285d9dp4,
+    0x1.p28
+  },
+  { // Entry 146
+    0x1.419ecb912c47ec835e17702df1a308afp4,
+    0x1.000002p28
+  },
+  { // Entry 147
+    0x1.62e42fe7a39eef5793c4bc855b3b42b2p5,
+    0x1.fffffep62
+  },
+  { // Entry 148
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.p63
+  },
+  { // Entry 149
+    0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    0x1.000002p63
+  },
+  { // Entry 150
+    0x1.601e678bc457b370e49e830c5180cc2dp6,
+    0x1.fffffep125
+  },
+  { // Entry 151
+    0x1.601e678fc457b570e49fd861a7d62183p6,
+    0x1.p126
+  },
+  { // Entry 152
+    0x1.601e6797c457ad70e4aa830c4280cc48p6,
+    0x1.000002p126
+  },
+  { // Entry 153
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 154
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 155
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 156
+    0x1.65a9f84782e6293e42e44b53ad4b0e74p6,
+    0x1.fffffcp127
+  },
+  { // Entry 157
+    0x1.cfc0300e23df54cd908a25ac434e488cp0,
+    0x1.921fb6p1
+  },
+  { // Entry 158
+    0x1.05f23d07b63b0afafa9ad8203dad69f2p0,
+    0x1.921fb6p0
+  },
+  { // Entry 159
+    0x1.ffffffaaaaaad11110fa35a369c3dc32p-12,
+    0x1.000002p0
+  },
+  { // Entry 160
+    0.0,
+    0x1.p0
+  }
+};
diff --git a/tests/math_data/asin_intel_data.h b/tests/math_data/asin_intel_data.h
new file mode 100644
index 0000000..7d16a4b
--- /dev/null
+++ b/tests/math_data/asin_intel_data.h
@@ -0,0 +1,2774 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_asin_intel_data[] = {
+  { // Entry 0
+    0x1.9283586503fe000000000000000e46aap-5,
+    0x1.9259e3708bd3ap-5
+  },
+  { // Entry 1
+    -0x1.9283586503fe000000000000000e46aap-5,
+    -0x1.9259e3708bd3ap-5
+  },
+  { // Entry 2
+    0x1.d7bdcd778049f00000000000000d57e1p-5,
+    0x1.d77b117f230d6p-5
+  },
+  { // Entry 3
+    -0x1.d7bdcd778049f00000000000000d57e1p-5,
+    -0x1.d77b117f230d6p-5
+  },
+  { // Entry 4
+    0x1.a202b3fb84788000000000000056edb7p-4,
+    0x1.a1490c8c06ba7p-4
+  },
+  { // Entry 5
+    -0x1.a202b3fb84788000000000000056edb7p-4,
+    -0x1.a1490c8c06ba7p-4
+  },
+  { // Entry 6
+    0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    0x1.9697cb602c582p-3
+  },
+  { // Entry 7
+    -0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    -0x1.9697cb602c582p-3
+  },
+  { // Entry 8
+    0x1.d5064e6fe82c4fffffffffffff9ed184p-3,
+    0x1.d0ef799001ba9p-3
+  },
+  { // Entry 9
+    -0x1.d5064e6fe82c4fffffffffffff9ed184p-3,
+    -0x1.d0ef799001ba9p-3
+  },
+  { // Entry 10
+    0x1.fe767739d0f6d0000000000000000458p-2,
+    0x1.e9950730c4696p-2
+  },
+  { // Entry 11
+    -0x1.fe767739d0f6d0000000000000000458p-2,
+    -0x1.e9950730c4696p-2
+  },
+  { // Entry 12
+    0x1.30706f699466d7ffffffffffff5f2011p-1,
+    0x1.1ed06d50f7e88p-1
+  },
+  { // Entry 13
+    -0x1.30706f699466d7ffffffffffff5f2011p-1,
+    -0x1.1ed06d50f7e88p-1
+  },
+  { // Entry 14
+    0x1.29517ab4c132a800000000000089db56p0,
+    0x1.d5b05a89d3e77p-1
+  },
+  { // Entry 15
+    -0x1.29517ab4c132a800000000000089db56p0,
+    -0x1.d5b05a89d3e77p-1
+  },
+  { // Entry 16
+    0x1.3aa301f6ebb1dfffffffffffff16c28cp0,
+    0x1.e264357ea0e29p-1
+  },
+  { // Entry 17
+    -0x1.3aa301f6ebb1dfffffffffffff16c28cp0,
+    -0x1.e264357ea0e29p-1
+  },
+  { // Entry 18
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 19
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 20
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 22
+    -0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 23
+    0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 24
+    -0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    -0x1.1c0p-2
+  },
+  { // Entry 25
+    0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    0x1.1c0p-2
+  },
+  { // Entry 26
+    -0x1.322f6d8e910113592ff4014f403aad06p-1,
+    -0x1.20424621202acp-1
+  },
+  { // Entry 27
+    0x1.322f6d8e910113592ff4014f403aad06p-1,
+    0x1.20424621202acp-1
+  },
+  { // Entry 28
+    -0x1.57c8d32d4c7a763ab677a006ae66467fp-1,
+    -0x1.3e872c7cba096p-1
+  },
+  { // Entry 29
+    0x1.57c8d32d4c7a763ab677a006ae66467fp-1,
+    0x1.3e872c7cba096p-1
+  },
+  { // Entry 30
+    -0x1.759edd04f68e48001bb07775889fc8a5p-1,
+    -0x1.555555555555ap-1
+  },
+  { // Entry 31
+    0x1.759edd04f68e48001bb07775889fc8a5p-1,
+    0x1.555555555555ap-1
+  },
+  { // Entry 32
+    -0x1.782333f928813ffec11dba3a89d05c6cp-1,
+    -0x1.573489b9ae5adp-1
+  },
+  { // Entry 33
+    0x1.782333f928813ffec11dba3a89d05c6cp-1,
+    0x1.573489b9ae5adp-1
+  },
+  { // Entry 34
+    -0x1.94d8b4c7808fb7a87e757b5f42035aacp-1,
+    -0x1.6bf5707aa0f6bp-1
+  },
+  { // Entry 35
+    0x1.94d8b4c7808fb7a87e757b5f42035aacp-1,
+    0x1.6bf5707aa0f6bp-1
+  },
+  { // Entry 36
+    -0x1.b235315cc8d0081c027b42e63e305a66p-1,
+    -0x1.800000004p-1
+  },
+  { // Entry 37
+    0x1.b235315cc8d0081c027b42e63e305a66p-1,
+    0x1.800000004p-1
+  },
+  { // Entry 38
+    -0x1.96b6e8a201871000f870b24841c05f73p-4,
+    -0x1.960be5db7a892p-4
+  },
+  { // Entry 39
+    0x1.96b6e8a201871000f870b24841c05f73p-4,
+    0x1.960be5db7a892p-4
+  },
+  { // Entry 40
+    -0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    -0x1.980p-4
+  },
+  { // Entry 41
+    0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    0x1.980p-4
+  },
+  { // Entry 42
+    -0x1.aa371ee73bd1c8079ffffa36ba5e5d8cp-2,
+    -0x1.9e03d2f534734p-2
+  },
+  { // Entry 43
+    0x1.aa371ee73bd1c8079ffffa36ba5e5d8cp-2,
+    0x1.9e03d2f534734p-2
+  },
+  { // Entry 44
+    -0x1.ed27cb01adedd7ae3d6cfc08b5b1ca73p-1,
+    -0x1.a45ca57a33fcdp-1
+  },
+  { // Entry 45
+    0x1.ed27cb01adedd7ae3d6cfc08b5b1ca73p-1,
+    0x1.a45ca57a33fcdp-1
+  },
+  { // Entry 46
+    -0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    -0x1.b34p-6
+  },
+  { // Entry 47
+    0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    0x1.b34p-6
+  },
+  { // Entry 48
+    -0x1.bf79714a2c1567fffff9585f49069adbp-15,
+    -0x1.bf7971469ca1fp-15
+  },
+  { // Entry 49
+    0x1.bf79714a2c1567fffff9585f49069adbp-15,
+    0x1.bf7971469ca1fp-15
+  },
+  { // Entry 50
+    -0x1.bf79714a2c19b8000013b283b77d9f82p-15,
+    -0x1.bf7971469ca64p-15
+  },
+  { // Entry 51
+    0x1.bf79714a2c19b8000013b283b77d9f82p-15,
+    0x1.bf7971469ca64p-15
+  },
+  { // Entry 52
+    -0x1.cfaf2746103107617c4b6b2c15223d0dp-2,
+    -0x1.c0000000003ffp-2
+  },
+  { // Entry 53
+    0x1.cfaf2746103107617c4b6b2c15223d0dp-2,
+    0x1.c0000000003ffp-2
+  },
+  { // Entry 54
+    -0x1.0129be4949aae7feec564fbe5489c78ep-1,
+    -0x1.ecf8cad745f54p-2
+  },
+  { // Entry 55
+    0x1.0129be4949aae7feec564fbe5489c78ep-1,
+    0x1.ecf8cad745f54p-2
+  },
+  { // Entry 56
+    -0x1.5047d77b0f8938000011f5af41f72c88p0,
+    -0x1.ef28841197292p-1
+  },
+  { // Entry 57
+    0x1.5047d77b0f8938000011f5af41f72c88p0,
+    0x1.ef28841197292p-1
+  },
+  { // Entry 58
+    -0x1.fb9f1177a8157880070f3ad2a1f9422ep-6,
+    -0x1.fb8a474fa66d0p-6
+  },
+  { // Entry 59
+    0x1.fb9f1177a8157880070f3ad2a1f9422ep-6,
+    0x1.fb8a474fa66d0p-6
+  },
+  { // Entry 60
+    -0x1.7b9033edad533793d172bb5d680b97b4p0,
+    -0x1.fe0359a2193f8p-1
+  },
+  { // Entry 61
+    0x1.7b9033edad533793d172bb5d680b97b4p0,
+    0x1.fe0359a2193f8p-1
+  },
+  { // Entry 62
+    -0x1.7b9033f17fe8b7728028f04d5b42dfa4p0,
+    -0x1.fe0359a2c5813p-1
+  },
+  { // Entry 63
+    0x1.7b9033f17fe8b7728028f04d5b42dfa4p0,
+    0x1.fe0359a2c5813p-1
+  },
+  { // Entry 64
+    -0x1.7da665f5fe592780850c1bef60fac479p0,
+    -0x1.fe5d0b4f2f569p-1
+  },
+  { // Entry 65
+    0x1.7da665f5fe592780850c1bef60fac479p0,
+    0x1.fe5d0b4f2f569p-1
+  },
+  { // Entry 66
+    -0x1.ff348201393248a795686f3f0d307c5ap-6,
+    -0x1.ff1f4655459b6p-6
+  },
+  { // Entry 67
+    0x1.ff348201393248a795686f3f0d307c5ap-6,
+    0x1.ff1f4655459b6p-6
+  },
+  { // Entry 68
+    0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 69
+    -0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 70
+    0x1.0c152382d736d999ee9a1f752604d40ep-1,
+    0x1.0000000000007p-1
+  },
+  { // Entry 71
+    -0x1.0c152382d736d999ee9a1f752604d40ep-1,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 72
+    0x1.0c152382d7495341342a52c5694cd736p-1,
+    0x1.0000000000107p-1
+  },
+  { // Entry 73
+    -0x1.0c152382d7495341342a52c5694cd736p-1,
+    -0x1.0000000000107p-1
+  },
+  { // Entry 74
+    0x1.0c152382d74c92a39b64abd4b3dd08c3p-1,
+    0x1.0000000000134p-1
+  },
+  { // Entry 75
+    -0x1.0c152382d74c92a39b64abd4b3dd08c3p-1,
+    -0x1.0000000000134p-1
+  },
+  { // Entry 76
+    0x1.000aabde0bba85978d6ad9f48828ec86p-5,
+    0x1.00000000001e0p-5
+  },
+  { // Entry 77
+    -0x1.000aabde0bba85978d6ad9f48828ec86p-5,
+    -0x1.00000000001e0p-5
+  },
+  { // Entry 78
+    0x1.000aabde0bbc75d5990d467c55b9ae34p-5,
+    0x1.00000000001ffp-5
+  },
+  { // Entry 79
+    -0x1.000aabde0bbc75d5990d467c55b9ae34p-5,
+    -0x1.00000000001ffp-5
+  },
+  { // Entry 80
+    0x1.000aabde0c8daffe80d2e7d3e14097d7p-5,
+    0x1.0000000000f11p-5
+  },
+  { // Entry 81
+    -0x1.000aabde0c8daffe80d2e7d3e14097d7p-5,
+    -0x1.0000000000f11p-5
+  },
+  { // Entry 82
+    0x1.02be9ce0ba0b280001c151672b571466p-2,
+    0x1.000000000181bp-2
+  },
+  { // Entry 83
+    -0x1.02be9ce0ba0b280001c151672b571466p-2,
+    -0x1.000000000181bp-2
+  },
+  { // Entry 84
+    0x1.0c152382de23f70071cd464afd26d0adp-1,
+    0x1.00000000060p-1
+  },
+  { // Entry 85
+    -0x1.0c152382de23f70071cd464afd26d0adp-1,
+    -0x1.00000000060p-1
+  },
+  { // Entry 86
+    0x1.0c152382f2ecd32eb46eb26eaa3a3436p-1,
+    0x1.00000000180p-1
+  },
+  { // Entry 87
+    -0x1.0c152382f2ecd32eb46eb26eaa3a3436p-1,
+    -0x1.00000000180p-1
+  },
+  { // Entry 88
+    0x1.0c1523836b039272e99d2aa6c733fbd4p-1,
+    0x1.000000008p-1
+  },
+  { // Entry 89
+    -0x1.0c1523836b039272e99d2aa6c733fbd4p-1,
+    -0x1.000000008p-1
+  },
+  { // Entry 90
+    0x1.0c15258825828aed7433be734fa034e0p-1,
+    0x1.000001cp-1
+  },
+  { // Entry 91
+    -0x1.0c15258825828aed7433be734fa034e0p-1,
+    -0x1.000001cp-1
+  },
+  { // Entry 92
+    0x1.0c15258d2e27e114dc33e19be219a967p-1,
+    0x1.000001c45c0p-1
+  },
+  { // Entry 93
+    -0x1.0c15258d2e27e114dc33e19be219a967p-1,
+    -0x1.000001c45c0p-1
+  },
+  { // Entry 94
+    0x1.02c23a43a81227fff55e30293b8669cfp-2,
+    0x1.00038p-2
+  },
+  { // Entry 95
+    -0x1.02c23a43a81227fff55e30293b8669cfp-2,
+    -0x1.00038p-2
+  },
+  { // Entry 96
+    0x1.0032c1ec76116800257dc6de53c0616ep-4,
+    0x1.0007fffffffd1p-4
+  },
+  { // Entry 97
+    -0x1.0032c1ec76116800257dc6de53c0616ep-4,
+    -0x1.0007fffffffd1p-4
+  },
+  { // Entry 98
+    0x1.0c279d5b633cdc69f2775e85622dc4a2p-1,
+    0x1.001p-1
+  },
+  { // Entry 99
+    -0x1.0c279d5b633cdc69f2775e85622dc4a2p-1,
+    -0x1.001p-1
+  },
+  { // Entry 100
+    0x1.0c4c923447087dae5cae7c825ed2a0ccp-1,
+    0x1.003p-1
+  },
+  { // Entry 101
+    -0x1.0c4c923447087dae5cae7c825ed2a0ccp-1,
+    -0x1.003p-1
+  },
+  { // Entry 102
+    0x1.0c55cfa828c0b38becd1409b658d6950p-1,
+    0x1.00380p-1
+  },
+  { // Entry 103
+    -0x1.0c55cfa828c0b38becd1409b658d6950p-1,
+    -0x1.00380p-1
+  },
+  { // Entry 104
+    0x1.0062da048ea0d7efd536d5c643e9f215p-4,
+    0x1.00380p-4
+  },
+  { // Entry 105
+    -0x1.0062da048ea0d7efd536d5c643e9f215p-4,
+    -0x1.00380p-4
+  },
+  { // Entry 106
+    0x1.00402aaac5e698004c94e39262202714p-8,
+    0x1.003fffep-8
+  },
+  { // Entry 107
+    -0x1.00402aaac5e698004c94e39262202714p-8,
+    -0x1.003fffep-8
+  },
+  { // Entry 108
+    0x1.0c9720590ac37fd593221825ec3a084bp-1,
+    0x1.00708a54b2c67p-1
+  },
+  { // Entry 109
+    -0x1.0c9720590ac37fd593221825ec3a084bp-1,
+    -0x1.00708a54b2c67p-1
+  },
+  { // Entry 110
+    0x1.00c00000000000000000000ac2bcaf2ap-45,
+    0x1.00cp-45
+  },
+  { // Entry 111
+    -0x1.00c00000000000000000000ac2bcaf2ap-45,
+    -0x1.00cp-45
+  },
+  { // Entry 112
+    0x1.0d96e57290c3f1c3681bab8c1f00b39cp-1,
+    0x1.014dcaa237970p-1
+  },
+  { // Entry 113
+    -0x1.0d96e57290c3f1c3681bab8c1f00b39cp-1,
+    -0x1.014dcaa237970p-1
+  },
+  { // Entry 114
+    0x1.0dabf55dce937f7558a8b531d459f15ep-1,
+    0x1.016p-1
+  },
+  { // Entry 115
+    -0x1.0dabf55dce937f7558a8b531d459f15ep-1,
+    -0x1.016p-1
+  },
+  { // Entry 116
+    0x1.0dc2ef671d6c33eaa546ddae05d5e453p-1,
+    0x1.0173dc94b6306p-1
+  },
+  { // Entry 117
+    -0x1.0dc2ef671d6c33eaa546ddae05d5e453p-1,
+    -0x1.0173dc94b6306p-1
+  },
+  { // Entry 118
+    0x1.0f1e6ec54eea2c73401f62badd2976acp-1,
+    0x1.02ap-1
+  },
+  { // Entry 119
+    -0x1.0f1e6ec54eea2c73401f62badd2976acp-1,
+    -0x1.02ap-1
+  },
+  { // Entry 120
+    0x1.0f4da9229cffec0c3743997491f11d56p-1,
+    0x1.02c8c16dc1934p-1
+  },
+  { // Entry 121
+    -0x1.0f4da9229cffec0c3743997491f11d56p-1,
+    -0x1.02c8c16dc1934p-1
+  },
+  { // Entry 122
+    0x1.0f6899dc73e34a54ad3cce806ce29011p-1,
+    0x1.02ep-1
+  },
+  { // Entry 123
+    -0x1.0f6899dc73e34a54ad3cce806ce29011p-1,
+    -0x1.02ep-1
+  },
+  { // Entry 124
+    0x1.0f838e30479aba67ec652b632028fefap-1,
+    0x1.02f740f61e37ap-1
+  },
+  { // Entry 125
+    -0x1.0f838e30479aba67ec652b632028fefap-1,
+    -0x1.02f740f61e37ap-1
+  },
+  { // Entry 126
+    0x1.0fe301c2f5be2a63ef5b2626fe19c78ap-1,
+    0x1.034993ee3b8dap-1
+  },
+  { // Entry 127
+    -0x1.0fe301c2f5be2a63ef5b2626fe19c78ap-1,
+    -0x1.034993ee3b8dap-1
+  },
+  { // Entry 128
+    0x1.1022212ba23069c4a937494d32fea558p-1,
+    0x1.038p-1
+  },
+  { // Entry 129
+    -0x1.1022212ba23069c4a937494d32fea558p-1,
+    -0x1.038p-1
+  },
+  { // Entry 130
+    0x1.10282996f9883a58886ba1799ed5dd8ep-1,
+    0x1.038533564d2f6p-1
+  },
+  { // Entry 131
+    -0x1.10282996f9883a58886ba1799ed5dd8ep-1,
+    -0x1.038533564d2f6p-1
+  },
+  { // Entry 132
+    0x1.1066e87eac0fa20763c3465fae49f6f3p-1,
+    0x1.03bb47eba27acp-1
+  },
+  { // Entry 133
+    -0x1.1066e87eac0fa20763c3465fae49f6f3p-1,
+    -0x1.03bb47eba27acp-1
+  },
+  { // Entry 134
+    0x1.10cbb4c8656620d5e25de954cc196a15p-1,
+    0x1.04122069afab2p-1
+  },
+  { // Entry 135
+    -0x1.10cbb4c8656620d5e25de954cc196a15p-1,
+    -0x1.04122069afab2p-1
+  },
+  { // Entry 136
+    0x1.116717f96556ee4420b909b7fa6b63dfp-1,
+    0x1.0497edab6ede1p-1
+  },
+  { // Entry 137
+    -0x1.116717f96556ee4420b909b7fa6b63dfp-1,
+    -0x1.0497edab6ede1p-1
+  },
+  { // Entry 138
+    0x1.1179dbb27e582d73878c014b8e3e1cc0p-1,
+    0x1.04a814758e0f8p-1
+  },
+  { // Entry 139
+    -0x1.1179dbb27e582d73878c014b8e3e1cc0p-1,
+    -0x1.04a814758e0f8p-1
+  },
+  { // Entry 140
+    0x1.1198c0d79289b2f9f277c2f3a7a05d25p-1,
+    0x1.04c2ab77cf474p-1
+  },
+  { // Entry 141
+    -0x1.1198c0d79289b2f9f277c2f3a7a05d25p-1,
+    -0x1.04c2ab77cf474p-1
+  },
+  { // Entry 142
+    0x1.196875557f2137d39d74d174f529db4bp-1,
+    0x1.0b73c2dcdc2b8p-1
+  },
+  { // Entry 143
+    -0x1.196875557f2137d39d74d174f529db4bp-1,
+    -0x1.0b73c2dcdc2b8p-1
+  },
+  { // Entry 144
+    0x1.1b553e4436fee055d4d2c67c601a0212p-1,
+    0x1.0d177bea3f610p-1
+  },
+  { // Entry 145
+    -0x1.1b553e4436fee055d4d2c67c601a0212p-1,
+    -0x1.0d177bea3f610p-1
+  },
+  { // Entry 146
+    0x1.1c38449a61c9580d6859380e343d833cp-1,
+    0x1.0dd885a3ef4fcp-1
+  },
+  { // Entry 147
+    -0x1.1c38449a61c9580d6859380e343d833cp-1,
+    -0x1.0dd885a3ef4fcp-1
+  },
+  { // Entry 148
+    0x1.1cc4b3c079836265872b7d492044d616p-1,
+    0x1.0e4fd42b1d0e6p-1
+  },
+  { // Entry 149
+    -0x1.1cc4b3c079836265872b7d492044d616p-1,
+    -0x1.0e4fd42b1d0e6p-1
+  },
+  { // Entry 150
+    0x1.1cfd6e266de95f1bf48764f46577e309p-1,
+    0x1.0e8p-1
+  },
+  { // Entry 151
+    -0x1.1cfd6e266de95f1bf48764f46577e309p-1,
+    -0x1.0e8p-1
+  },
+  { // Entry 152
+    0x1.21cdcf52000c220a966befeb62e640f6p-1,
+    0x1.129345051b29dp-1
+  },
+  { // Entry 153
+    -0x1.21cdcf52000c220a966befeb62e640f6p-1,
+    -0x1.129345051b29dp-1
+  },
+  { // Entry 154
+    0x1.130d3aa02dac280175032d7dcd901029p-5,
+    0x1.130p-5
+  },
+  { // Entry 155
+    -0x1.130d3aa02dac280175032d7dcd901029p-5,
+    -0x1.130p-5
+  },
+  { // Entry 156
+    0x1.140000000d5df80001bf7913cb80995cp-17,
+    0x1.140p-17
+  },
+  { // Entry 157
+    -0x1.140000000d5df80001bf7913cb80995cp-17,
+    -0x1.140p-17
+  },
+  { // Entry 158
+    0x1.2775c4b617d654588958a178dea861bap-1,
+    0x1.1755174d62823p-1
+  },
+  { // Entry 159
+    -0x1.2775c4b617d654588958a178dea861bap-1,
+    -0x1.1755174d62823p-1
+  },
+  { // Entry 160
+    0x1.199af8e5ca4257fcd763543b8f3fce81p-5,
+    0x1.198cc66331980p-5
+  },
+  { // Entry 161
+    -0x1.199af8e5ca4257fcd763543b8f3fce81p-5,
+    -0x1.198cc66331980p-5
+  },
+  { // Entry 162
+    0x1.2c5ab8264bdbb3e1bc65214317759a09p-1,
+    0x1.1b6bdc91e8ed8p-1
+  },
+  { // Entry 163
+    -0x1.2c5ab8264bdbb3e1bc65214317759a09p-1,
+    -0x1.1b6bdc91e8ed8p-1
+  },
+  { // Entry 164
+    0x1.2cee00a870ba528fbe6b9f3cda1408b3p-1,
+    0x1.1be67991de2d4p-1
+  },
+  { // Entry 165
+    -0x1.2cee00a870ba528fbe6b9f3cda1408b3p-1,
+    -0x1.1be67991de2d4p-1
+  },
+  { // Entry 166
+    0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    0x1.1c0p-2
+  },
+  { // Entry 167
+    -0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    -0x1.1c0p-2
+  },
+  { // Entry 168
+    0x1.2febc655185c99c444ff04c55bfb6d66p-1,
+    0x1.1e627f69af588p-1
+  },
+  { // Entry 169
+    -0x1.2febc655185c99c444ff04c55bfb6d66p-1,
+    -0x1.1e627f69af588p-1
+  },
+  { // Entry 170
+    0x1.30d8a981b9948a394e1467470cfad235p-1,
+    0x1.1f26bdf8a0343p-1
+  },
+  { // Entry 171
+    -0x1.30d8a981b9948a394e1467470cfad235p-1,
+    -0x1.1f26bdf8a0343p-1
+  },
+  { // Entry 172
+    0x1.30f8d6bccdf217fff8c0dda31391974fp-1,
+    0x1.1f41613172746p-1
+  },
+  { // Entry 173
+    -0x1.30f8d6bccdf217fff8c0dda31391974fp-1,
+    -0x1.1f41613172746p-1
+  },
+  { // Entry 174
+    0x1.3110249047eaf30fc3ba6988a43b8ccbp-1,
+    0x1.1f54ab50e347ep-1
+  },
+  { // Entry 175
+    -0x1.3110249047eaf30fc3ba6988a43b8ccbp-1,
+    -0x1.1f54ab50e347ep-1
+  },
+  { // Entry 176
+    0x1.31462f20d3145a25898cd5561126dbefp-1,
+    0x1.1f816460b6e0dp-1
+  },
+  { // Entry 177
+    -0x1.31462f20d3145a25898cd5561126dbefp-1,
+    -0x1.1f816460b6e0dp-1
+  },
+  { // Entry 178
+    0x1.31ef197bde35531a915e264fef2305e8p-1,
+    0x1.200d19c3f0b0bp-1
+  },
+  { // Entry 179
+    -0x1.31ef197bde35531a915e264fef2305e8p-1,
+    -0x1.200d19c3f0b0bp-1
+  },
+  { // Entry 180
+    0x1.321d12e54f83b31627f80c3fa62b7ca1p-1,
+    0x1.20331ab8a7458p-1
+  },
+  { // Entry 181
+    -0x1.321d12e54f83b31627f80c3fa62b7ca1p-1,
+    -0x1.20331ab8a7458p-1
+  },
+  { // Entry 182
+    0x1.2177521a338b07fff0d9c9957c5a6cebp-16,
+    0x1.21775219f5dc5p-16
+  },
+  { // Entry 183
+    -0x1.2177521a338b07fff0d9c9957c5a6cebp-16,
+    -0x1.21775219f5dc5p-16
+  },
+  { // Entry 184
+    0x1.3e67925d0e6f8bcbb21a79d27ecca7d2p-1,
+    0x1.2a46471805efdp-1
+  },
+  { // Entry 185
+    -0x1.3e67925d0e6f8bcbb21a79d27ecca7d2p-1,
+    -0x1.2a46471805efdp-1
+  },
+  { // Entry 186
+    0x1.2bb1862a568148015c0bf4a2a7154dc1p-3,
+    0x1.2aap-3
+  },
+  { // Entry 187
+    -0x1.2bb1862a568148015c0bf4a2a7154dc1p-3,
+    -0x1.2aap-3
+  },
+  { // Entry 188
+    0x1.3f6fd0f27823d7fefc74a71eccd96298p-1,
+    0x1.2b1ce548833aep-1
+  },
+  { // Entry 189
+    -0x1.3f6fd0f27823d7fefc74a71eccd96298p-1,
+    -0x1.2b1ce548833aep-1
+  },
+  { // Entry 190
+    0x1.411bb49364c5ea4184bb3805a893e054p-1,
+    0x1.2c77c3b7fadbcp-1
+  },
+  { // Entry 191
+    -0x1.411bb49364c5ea4184bb3805a893e054p-1,
+    -0x1.2c77c3b7fadbcp-1
+  },
+  { // Entry 192
+    0x1.442ff6c0f5d4d7fe7775e70c3e4e8219p-1,
+    0x1.2ef49e5511ddfp-1
+  },
+  { // Entry 193
+    -0x1.442ff6c0f5d4d7fe7775e70c3e4e8219p-1,
+    -0x1.2ef49e5511ddfp-1
+  },
+  { // Entry 194
+    0x1.443fecfebc1df7de68052624a8b1d61dp-1,
+    0x1.2f017c4fe3544p-1
+  },
+  { // Entry 195
+    -0x1.443fecfebc1df7de68052624a8b1d61dp-1,
+    -0x1.2f017c4fe3544p-1
+  },
+  { // Entry 196
+    0x1.457bf318fe516a79da6f4a61af7a7fa5p-1,
+    0x1.3p-1
+  },
+  { // Entry 197
+    -0x1.457bf318fe516a79da6f4a61af7a7fa5p-1,
+    -0x1.3p-1
+  },
+  { // Entry 198
+    0x1.5ccd5c05e68fb800000849ddd0fe2ca5p-1,
+    0x1.4270ed4aad70ep-1
+  },
+  { // Entry 199
+    -0x1.5ccd5c05e68fb800000849ddd0fe2ca5p-1,
+    -0x1.4270ed4aad70ep-1
+  },
+  { // Entry 200
+    0x1.44000000159fd80003e593b785ba9626p-17,
+    0x1.440p-17
+  },
+  { // Entry 201
+    -0x1.44000000159fd80003e593b785ba9626p-17,
+    -0x1.440p-17
+  },
+  { // Entry 202
+    0x1.63b1cbb66b8a17ae1fd76035d949e2b7p-1,
+    0x1.47c3fdc9bf433p-1
+  },
+  { // Entry 203
+    -0x1.63b1cbb66b8a17ae1fd76035d949e2b7p-1,
+    -0x1.47c3fdc9bf433p-1
+  },
+  { // Entry 204
+    0x1.65fc8f66ba692e01a5afda7ace8deae2p-1,
+    0x1.4985ec22e7bf6p-1
+  },
+  { // Entry 205
+    -0x1.65fc8f66ba692e01a5afda7ace8deae2p-1,
+    -0x1.4985ec22e7bf6p-1
+  },
+  { // Entry 206
+    0x1.4d78bac08656681847462467555e549bp-3,
+    0x1.4c0p-3
+  },
+  { // Entry 207
+    -0x1.4d78bac08656681847462467555e549bp-3,
+    -0x1.4c0p-3
+  },
+  { // Entry 208
+    0x1.6d59bfe3f2224f6000acc00b769ed440p-1,
+    0x1.4f2p-1
+  },
+  { // Entry 209
+    -0x1.6d59bfe3f2224f6000acc00b769ed440p-1,
+    -0x1.4f2p-1
+  },
+  { // Entry 210
+    0x1.5000000000207800000013a839333343p-20,
+    0x1.4fffffffffcp-20
+  },
+  { // Entry 211
+    -0x1.5000000000207800000013a839333343p-20,
+    -0x1.4fffffffffcp-20
+  },
+  { // Entry 212
+    0x1.500000000060780000004ac83933337fp-20,
+    0x1.5p-20
+  },
+  { // Entry 213
+    -0x1.500000000060780000004ac83933337fp-20,
+    -0x1.5p-20
+  },
+  { // Entry 214
+    0x1.55277b9f38d027ffff30112bed0c9f0fp-4,
+    0x1.54c28a8e4f3e2p-4
+  },
+  { // Entry 215
+    -0x1.55277b9f38d027ffff30112bed0c9f0fp-4,
+    -0x1.54c28a8e4f3e2p-4
+  },
+  { // Entry 216
+    0x1.5ed2a392bb50f7fad69db4d959b3510ap-2,
+    0x1.580p-2
+  },
+  { // Entry 217
+    -0x1.5ed2a392bb50f7fad69db4d959b3510ap-2,
+    -0x1.580p-2
+  },
+  { // Entry 218
+    0x1.7f1f4917c72b6003b55c8200e8dcecc0p-1,
+    0x1.5c5b3407f55e1p-1
+  },
+  { // Entry 219
+    -0x1.7f1f4917c72b6003b55c8200e8dcecc0p-1,
+    -0x1.5c5b3407f55e1p-1
+  },
+  { // Entry 220
+    0x1.8b6201c0f179080000d81b7964ae4654p-1,
+    0x1.653da5baf7440p-1
+  },
+  { // Entry 221
+    -0x1.8b6201c0f179080000d81b7964ae4654p-1,
+    -0x1.653da5baf7440p-1
+  },
+  { // Entry 222
+    0x1.7250952ca29c0813f4e50a0ad18f3648p-2,
+    0x1.6a4bb63c82129p-2
+  },
+  { // Entry 223
+    -0x1.7250952ca29c0813f4e50a0ad18f3648p-2,
+    -0x1.6a4bb63c82129p-2
+  },
+  { // Entry 224
+    0x1.77b27e3a4418480d8c0062be11693e16p-2,
+    0x1.6f533603e2320p-2
+  },
+  { // Entry 225
+    -0x1.77b27e3a4418480d8c0062be11693e16p-2,
+    -0x1.6f533603e2320p-2
+  },
+  { // Entry 226
+    0x1.9e149bad9649280000eb9dad7440c574p-1,
+    0x1.7264d0bec49b2p-1
+  },
+  { // Entry 227
+    -0x1.9e149bad9649280000eb9dad7440c574p-1,
+    -0x1.7264d0bec49b2p-1
+  },
+  { // Entry 228
+    0x1.7cc0ee7ed8ad48137e185fb9156bae4cp-2,
+    0x1.740a59647d7a5p-2
+  },
+  { // Entry 229
+    -0x1.7cc0ee7ed8ad48137e185fb9156bae4cp-2,
+    -0x1.740a59647d7a5p-2
+  },
+  { // Entry 230
+    0x1.a207566488fc97fcadc30933e3392d3dp-1,
+    0x1.751bcca851309p-1
+  },
+  { // Entry 231
+    -0x1.a207566488fc97fcadc30933e3392d3dp-1,
+    -0x1.751bcca851309p-1
+  },
+  { // Entry 232
+    0x1.7e693c113d4a4814c150d8ac5b0c8d53p-2,
+    0x1.7595883b67f16p-2
+  },
+  { // Entry 233
+    -0x1.7e693c113d4a4814c150d8ac5b0c8d53p-2,
+    -0x1.7595883b67f16p-2
+  },
+  { // Entry 234
+    0x1.7ee6be5058d0201a24d137f52ff6909ep-2,
+    0x1.760a6116c7198p-2
+  },
+  { // Entry 235
+    -0x1.7ee6be5058d0201a24d137f52ff6909ep-2,
+    -0x1.760a6116c7198p-2
+  },
+  { // Entry 236
+    0x1.a6a1bef361a7d7f9c2816e02dbac1bf5p-1,
+    0x1.783ee81831665p-1
+  },
+  { // Entry 237
+    -0x1.a6a1bef361a7d7f9c2816e02dbac1bf5p-1,
+    -0x1.783ee81831665p-1
+  },
+  { // Entry 238
+    0x1.86618612c359e81481d9a7341d6a2a51p-2,
+    0x1.7cfe473430fc6p-2
+  },
+  { // Entry 239
+    -0x1.86618612c359e81481d9a7341d6a2a51p-2,
+    -0x1.7cfe473430fc6p-2
+  },
+  { // Entry 240
+    0x1.88d8a3b14d9e1ff14bbde3d33d157530p-2,
+    0x1.7f47cd10de0e8p-2
+  },
+  { // Entry 241
+    -0x1.88d8a3b14d9e1ff14bbde3d33d157530p-2,
+    -0x1.7f47cd10de0e8p-2
+  },
+  { // Entry 242
+    0x1.8988868fc564c81982b2db8ce8bc0625p-2,
+    0x1.7feae137d5ddep-2
+  },
+  { // Entry 243
+    -0x1.8988868fc564c81982b2db8ce8bc0625p-2,
+    -0x1.7feae137d5ddep-2
+  },
+  { // Entry 244
+    0x1.899fd8f017515812de14f44be98d055cp-2,
+    0x1.80007ffffffffp-2
+  },
+  { // Entry 245
+    -0x1.899fd8f017515812de14f44be98d055cp-2,
+    -0x1.80007ffffffffp-2
+  },
+  { // Entry 246
+    0x1.b27ae0f5ee6e67fffb44fb3a0cb3c215p-1,
+    0x1.802e143a91c4ep-1
+  },
+  { // Entry 247
+    -0x1.b27ae0f5ee6e67fffb44fb3a0cb3c215p-1,
+    -0x1.802e143a91c4ep-1
+  },
+  { // Entry 248
+    0x1.8b7809bb86ae17ec6c24da984138f419p-2,
+    0x1.81b612840dbaep-2
+  },
+  { // Entry 249
+    -0x1.8b7809bb86ae17ec6c24da984138f419p-2,
+    -0x1.81b612840dbaep-2
+  },
+  { // Entry 250
+    0x1.8f91c0fb8e2e97ef847eab1159f00cc6p-2,
+    0x1.8581ade28355fp-2
+  },
+  { // Entry 251
+    -0x1.8f91c0fb8e2e97ef847eab1159f00cc6p-2,
+    -0x1.8581ade28355fp-2
+  },
+  { // Entry 252
+    0x1.8c16f3fc4a5840013187c62d948aa003p-3,
+    0x1.89ap-3
+  },
+  { // Entry 253
+    -0x1.8c16f3fc4a5840013187c62d948aa003p-3,
+    -0x1.89ap-3
+  },
+  { // Entry 254
+    0x1.c1e120b980b3cf3fbf17268200fc8ffbp-1,
+    0x1.8a2f2f54d849ep-1
+  },
+  { // Entry 255
+    -0x1.c1e120b980b3cf3fbf17268200fc8ffbp-1,
+    -0x1.8a2f2f54d849ep-1
+  },
+  { // Entry 256
+    0x1.95b5a93656211806335e5300e251533cp-2,
+    0x1.8b2da077338c2p-2
+  },
+  { // Entry 257
+    -0x1.95b5a93656211806335e5300e251533cp-2,
+    -0x1.8b2da077338c2p-2
+  },
+  { // Entry 258
+    0x1.90cc7766b33bd000fff143442b4e2043p-4,
+    0x1.9028ceb4afd2cp-4
+  },
+  { // Entry 259
+    -0x1.90cc7766b33bd000fff143442b4e2043p-4,
+    -0x1.9028ceb4afd2cp-4
+  },
+  { // Entry 260
+    0x1.cbe2739ce56927fbb7d0777fc5057965p-1,
+    0x1.907e632b1000ep-1
+  },
+  { // Entry 261
+    -0x1.cbe2739ce56927fbb7d0777fc5057965p-1,
+    -0x1.907e632b1000ep-1
+  },
+  { // Entry 262
+    0x1.9eff7d224a10cffd0ccc2eea39c4ecacp-2,
+    0x1.93bb0fc0700b7p-2
+  },
+  { // Entry 263
+    -0x1.9eff7d224a10cffd0ccc2eea39c4ecacp-2,
+    -0x1.93bb0fc0700b7p-2
+  },
+  { // Entry 264
+    0x1.a0552aa49b7117fa53b105630024fe49p-2,
+    0x1.94f4f95477d9ep-2
+  },
+  { // Entry 265
+    -0x1.a0552aa49b7117fa53b105630024fe49p-2,
+    -0x1.94f4f95477d9ep-2
+  },
+  { // Entry 266
+    0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    0x1.9697cb602c582p-3
+  },
+  { // Entry 267
+    -0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    -0x1.9697cb602c582p-3
+  },
+  { // Entry 268
+    0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    0x1.980p-4
+  },
+  { // Entry 269
+    -0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    -0x1.980p-4
+  },
+  { // Entry 270
+    0x1.9c618aafabed50000080bb9d9c6d602ep-3,
+    0x1.999999a45e898p-3
+  },
+  { // Entry 271
+    -0x1.9c618aafabed50000080bb9d9c6d602ep-3,
+    -0x1.999999a45e898p-3
+  },
+  { // Entry 272
+    0x1.9c618aafac061003732b347dbb6bf610p-3,
+    0x1.999999a45ea1cp-3
+  },
+  { // Entry 273
+    -0x1.9c618aafac061003732b347dbb6bf610p-3,
+    -0x1.999999a45ea1cp-3
+  },
+  { // Entry 274
+    0x1.9c618ab54a7b2ffe4628191f82391647p-3,
+    0x1.999999a9e006dp-3
+  },
+  { // Entry 275
+    -0x1.9c618ab54a7b2ffe4628191f82391647p-3,
+    -0x1.999999a9e006dp-3
+  },
+  { // Entry 276
+    0x1.9c618ab55b092ffd804a3f4bc32f43c6p-3,
+    0x1.999999a9f03f3p-3
+  },
+  { // Entry 277
+    -0x1.9c618ab55b092ffd804a3f4bc32f43c6p-3,
+    -0x1.999999a9f03f3p-3
+  },
+  { // Entry 278
+    0x1.ddedf400713097ce31df0888bcde8d69p-1,
+    0x1.9b7c1d9445413p-1
+  },
+  { // Entry 279
+    -0x1.ddedf400713097ce31df0888bcde8d69p-1,
+    -0x1.9b7c1d9445413p-1
+  },
+  { // Entry 280
+    0x1.eca34562d4a0d79516186d1c200eae46p-1,
+    0x1.a410ef3ffe9b1p-1
+  },
+  { // Entry 281
+    -0x1.eca34562d4a0d79516186d1c200eae46p-1,
+    -0x1.a410ef3ffe9b1p-1
+  },
+  { // Entry 282
+    0x1.f90469438f616801edb23ef0fcf7a322p-1,
+    0x1.ab053825fa3c7p-1
+  },
+  { // Entry 283
+    -0x1.f90469438f616801edb23ef0fcf7a322p-1,
+    -0x1.ab053825fa3c7p-1
+  },
+  { // Entry 284
+    0x1.b000000000cd0800000106bc80666823p-20,
+    0x1.bp-20
+  },
+  { // Entry 285
+    -0x1.b000000000cd0800000106bc80666823p-20,
+    -0x1.bp-20
+  },
+  { // Entry 286
+    0x1.b3b0da67543b3807834a8feb1c1eba94p-3,
+    0x1.b0696dec2c0a1p-3
+  },
+  { // Entry 287
+    -0x1.b3b0da67543b3807834a8feb1c1eba94p-3,
+    -0x1.b0696dec2c0a1p-3
+  },
+  { // Entry 288
+    0x1.04179cbe1e5c1fffff818794e482d547p0,
+    0x1.b333333761245p-1
+  },
+  { // Entry 289
+    -0x1.04179cbe1e5c1fffff818794e482d547p0,
+    -0x1.b333333761245p-1
+  },
+  { // Entry 290
+    0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    0x1.b34p-6
+  },
+  { // Entry 291
+    -0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    -0x1.b34p-6
+  },
+  { // Entry 292
+    0x1.0554bb3242a2a800df4cee49ca092177p0,
+    0x1.b48p-1
+  },
+  { // Entry 293
+    -0x1.0554bb3242a2a800df4cee49ca092177p0,
+    -0x1.b48p-1
+  },
+  { // Entry 294
+    0x1.b8a88f38bc5ac8137e8c7eb54443675ep-3,
+    0x1.b54423c1483e2p-3
+  },
+  { // Entry 295
+    -0x1.b8a88f38bc5ac8137e8c7eb54443675ep-3,
+    -0x1.b54423c1483e2p-3
+  },
+  { // Entry 296
+    0x1.07d8cdf7eeee880fbc5277faa149e24ap0,
+    0x1.b71bdc2c4ecf6p-1
+  },
+  { // Entry 297
+    -0x1.07d8cdf7eeee880fbc5277faa149e24ap0,
+    -0x1.b71bdc2c4ecf6p-1
+  },
+  { // Entry 298
+    0x1.bf06ca3159a247fffd949acbf7190141p-6,
+    0x1.bef89775b5e88p-6
+  },
+  { // Entry 299
+    -0x1.bf06ca3159a247fffd949acbf7190141p-6,
+    -0x1.bef89775b5e88p-6
+  },
+  { // Entry 300
+    0x1.ce8c7a50bddbaffeae205209c4b290fcp-2,
+    0x1.befa8c764e35dp-2
+  },
+  { // Entry 301
+    -0x1.ce8c7a50bddbaffeae205209c4b290fcp-2,
+    -0x1.befa8c764e35dp-2
+  },
+  { // Entry 302
+    0x1.cf79cf3c63f057d0885a264fa7e14a24p-2,
+    0x1.bfd007a1b1a48p-2
+  },
+  { // Entry 303
+    -0x1.cf79cf3c63f057d0885a264fa7e14a24p-2,
+    -0x1.bfd007a1b1a48p-2
+  },
+  { // Entry 304
+    0x1.c0e0d42a150f980e71b5f03eded5070fp-23,
+    0x1.c0e0d42a150c0p-23
+  },
+  { // Entry 305
+    -0x1.c0e0d42a150f980e71b5f03eded5070fp-23,
+    -0x1.c0e0d42a150c0p-23
+  },
+  { // Entry 306
+    0x1.c14a6c452bfa080160389f80233eca63p-6,
+    0x1.c13c020751a78p-6
+  },
+  { // Entry 307
+    -0x1.c14a6c452bfa080160389f80233eca63p-6,
+    -0x1.c13c020751a78p-6
+  },
+  { // Entry 308
+    0x1.d11a7b81b1c1e79cf616ad2e273afb43p-2,
+    0x1.c1469a15e68f5p-2
+  },
+  { // Entry 309
+    -0x1.d11a7b81b1c1e79cf616ad2e273afb43p-2,
+    -0x1.c1469a15e68f5p-2
+  },
+  { // Entry 310
+    0x1.16f4bb864adfc800008fd38fd1e04261p0,
+    0x1.c5e01019009efp-1
+  },
+  { // Entry 311
+    -0x1.16f4bb864adfc800008fd38fd1e04261p0,
+    -0x1.c5e01019009efp-1
+  },
+  { // Entry 312
+    0x1.c678548c22ba90p-115,
+    0x1.c678548c22ba9p-115
+  },
+  { // Entry 313
+    -0x1.c678548c22ba90p-115,
+    -0x1.c678548c22ba9p-115
+  },
+  { // Entry 314
+    0x1.d7efd0e20d07d8013801e962e317e549p-2,
+    0x1.c767fffffffffp-2
+  },
+  { // Entry 315
+    -0x1.d7efd0e20d07d8013801e962e317e549p-2,
+    -0x1.c767fffffffffp-2
+  },
+  { // Entry 316
+    0x1.c9e63f1fe0f0e821b29667bc4eb4d50bp-4,
+    0x1.c8f23c8f23c8cp-4
+  },
+  { // Entry 317
+    -0x1.c9e63f1fe0f0e821b29667bc4eb4d50bp-4,
+    -0x1.c8f23c8f23c8cp-4
+  },
+  { // Entry 318
+    0x1.1ea9370e567be7ffffffe01e15866a33p0,
+    0x1.ccccccd416c08p-1
+  },
+  { // Entry 319
+    -0x1.1ea9370e567be7ffffffe01e15866a33p0,
+    -0x1.ccccccd416c08p-1
+  },
+  { // Entry 320
+    0x1.22927e6073b4c80000d27967f2a7a4f7p0,
+    0x1.d027e48f2c2bap-1
+  },
+  { // Entry 321
+    -0x1.22927e6073b4c80000d27967f2a7a4f7p0,
+    -0x1.d027e48f2c2bap-1
+  },
+  { // Entry 322
+    0x1.d2e000000102cdc6eb418359d0682dedp-20,
+    0x1.d2ep-20
+  },
+  { // Entry 323
+    -0x1.d2e000000102cdc6eb418359d0682dedp-20,
+    -0x1.d2ep-20
+  },
+  { // Entry 324
+    0x1.281b4c2fcafe57fe16b4679be76d29f5p0,
+    0x1.d4b81182fe13bp-1
+  },
+  { // Entry 325
+    -0x1.281b4c2fcafe57fe16b4679be76d29f5p0,
+    -0x1.d4b81182fe13bp-1
+  },
+  { // Entry 326
+    0x1.e70a08011eeb97fb46e212681fd509f0p-2,
+    0x1.d4e205cadb381p-2
+  },
+  { // Entry 327
+    -0x1.e70a08011eeb97fb46e212681fd509f0p-2,
+    -0x1.d4e205cadb381p-2
+  },
+  { // Entry 328
+    0x1.d90d0803393b9819fec9e92bfd414223p-4,
+    0x1.d80p-4
+  },
+  { // Entry 329
+    -0x1.d90d0803393b9819fec9e92bfd414223p-4,
+    -0x1.d80p-4
+  },
+  { // Entry 330
+    0x1.3172527a00f7e8002439c6d9f1d3590dp0,
+    0x1.dbec0e2ae5bdbp-1
+  },
+  { // Entry 331
+    -0x1.3172527a00f7e8002439c6d9f1d3590dp0,
+    -0x1.dbec0e2ae5bdbp-1
+  },
+  { // Entry 332
+    0x1.dd2bf488d4241c11bf324d508cfacbeap-11,
+    0x1.dd2bf03799278p-11
+  },
+  { // Entry 333
+    -0x1.dd2bf488d4241c11bf324d508cfacbeap-11,
+    -0x1.dd2bf03799278p-11
+  },
+  { // Entry 334
+    0x1.f192112f19e6f7fc311ba78ec60abb13p-2,
+    0x1.de386d60903a5p-2
+  },
+  { // Entry 335
+    -0x1.f192112f19e6f7fc311ba78ec60abb13p-2,
+    -0x1.de386d60903a5p-2
+  },
+  { // Entry 336
+    0x1.f408515902f777fad5cb629690c96e8cp-2,
+    0x1.e0655f628fcc4p-2
+  },
+  { // Entry 337
+    -0x1.f408515902f777fad5cb629690c96e8cp-2,
+    -0x1.e0655f628fcc4p-2
+  },
+  { // Entry 338
+    0x1.f425d0cdf031d78d14e47ef92c30410dp-2,
+    0x1.e07f6c11f3ad7p-2
+  },
+  { // Entry 339
+    -0x1.f425d0cdf031d78d14e47ef92c30410dp-2,
+    -0x1.e07f6c11f3ad7p-2
+  },
+  { // Entry 340
+    0x1.e4c86c3587e888034c71e60a370d6263p-5,
+    0x1.e48p-5
+  },
+  { // Entry 341
+    -0x1.e4c86c3587e888034c71e60a370d6263p-5,
+    -0x1.e48p-5
+  },
+  { // Entry 342
+    0x1.e6c2ee85159eeffd05dd82882578d1d4p-5,
+    0x1.e6799e6799e64p-5
+  },
+  { // Entry 343
+    -0x1.e6c2ee85159eeffd05dd82882578d1d4p-5,
+    -0x1.e6799e6799e64p-5
+  },
+  { // Entry 344
+    0x1.e92973bd05fb21d34afdf692cee7c5d5p-4,
+    0x1.e80p-4
+  },
+  { // Entry 345
+    -0x1.e92973bd05fb21d34afdf692cee7c5d5p-4,
+    -0x1.e80p-4
+  },
+  { // Entry 346
+    0x1.eb3228982dcb8aaa55776e8b9ba3cd25p-4,
+    0x1.ea04fb75153f7p-4
+  },
+  { // Entry 347
+    -0x1.eb3228982dcb8aaa55776e8b9ba3cd25p-4,
+    -0x1.ea04fb75153f7p-4
+  },
+  { // Entry 348
+    0x1.f026f488662fc51b1e6d97371bb4f957p-3,
+    0x1.eb50295fad425p-3
+  },
+  { // Entry 349
+    -0x1.f026f488662fc51b1e6d97371bb4f957p-3,
+    -0x1.eb50295fad425p-3
+  },
+  { // Entry 350
+    0x1.eb63051149d3b7822ba54208fc03580ep-6,
+    0x1.eb50295fad425p-6
+  },
+  { // Entry 351
+    -0x1.eb63051149d3b7822ba54208fc03580ep-6,
+    -0x1.eb50295fad425p-6
+  },
+  { // Entry 352
+    0x1.4a55ae332c7a4c09ea98e7d59d9872dfp0,
+    0x1.ec0p-1
+  },
+  { // Entry 353
+    -0x1.4a55ae332c7a4c09ea98e7d59d9872dfp0,
+    -0x1.ec0p-1
+  },
+  { // Entry 354
+    0x1.4c655babcbe0b41389bc82e9f12e67c7p0,
+    0x1.ed2p-1
+  },
+  { // Entry 355
+    -0x1.4c655babcbe0b41389bc82e9f12e67c7p0,
+    -0x1.ed2p-1
+  },
+  { // Entry 356
+    0x1.4ff93f191d3694ab593de5dd6371b96fp0,
+    0x1.ef00708a54b2cp-1
+  },
+  { // Entry 357
+    -0x1.4ff93f191d3694ab593de5dd6371b96fp0,
+    -0x1.ef00708a54b2cp-1
+  },
+  { // Entry 358
+    0x1.ef77ab8e8feff4c39e94fa09320902abp-21,
+    0x1.ef77ab8e8fa2ap-21
+  },
+  { // Entry 359
+    -0x1.ef77ab8e8feff4c39e94fa09320902abp-21,
+    -0x1.ef77ab8e8fa2ap-21
+  },
+  { // Entry 360
+    0x1.efe5d9610962p-114,
+    0x1.efe5d96109620p-114
+  },
+  { // Entry 361
+    -0x1.efe5d9610962p-114,
+    -0x1.efe5d96109620p-114
+  },
+  { // Entry 362
+    0x1.51f4bd13f858ebf929a2088e2df34c72p0,
+    0x1.effffffffffffp-1
+  },
+  { // Entry 363
+    -0x1.51f4bd13f858ebf929a2088e2df34c72p0,
+    -0x1.effffffffffffp-1
+  },
+  { // Entry 364
+    0x1.52f8c72726a5343c6b1f75919edb5695p0,
+    0x1.f08p-1
+  },
+  { // Entry 365
+    -0x1.52f8c72726a5343c6b1f75919edb5695p0,
+    -0x1.f08p-1
+  },
+  { // Entry 366
+    0x1.54a5553221e80bf87bdb823192526176p0,
+    0x1.f14e94d8d2e1ep-1
+  },
+  { // Entry 367
+    -0x1.54a5553221e80bf87bdb823192526176p0,
+    -0x1.f14e94d8d2e1ep-1
+  },
+  { // Entry 368
+    0x1.5587523c7468b4173cf688f3219a184bp0,
+    0x1.f1b9535b4f194p-1
+  },
+  { // Entry 369
+    -0x1.5587523c7468b4173cf688f3219a184bp0,
+    -0x1.f1b9535b4f194p-1
+  },
+  { // Entry 370
+    0x1.56f4285735ecd7fe51444aebf353c0fbp0,
+    0x1.f26274adac979p-1
+  },
+  { // Entry 371
+    -0x1.56f4285735ecd7fe51444aebf353c0fbp0,
+    -0x1.f26274adac979p-1
+  },
+  { // Entry 372
+    0x1.6a45631fc69f340139208a9ea48fe11ap0,
+    0x1.f9cef541d5e40p-1
+  },
+  { // Entry 373
+    -0x1.6a45631fc69f340139208a9ea48fe11ap0,
+    -0x1.f9cef541d5e40p-1
+  },
+  { // Entry 374
+    0x1.fa639fc0adc0454cb19c822984da84edp-10,
+    0x1.fa638b1ceed60p-10
+  },
+  { // Entry 375
+    -0x1.fa639fc0adc0454cb19c822984da84edp-10,
+    -0x1.fa638b1ceed60p-10
+  },
+  { // Entry 376
+    0x1.fbf655a75453f895b93ae4abf4622da1p-5,
+    0x1.fba3053043e65p-5
+  },
+  { // Entry 377
+    -0x1.fbf655a75453f895b93ae4abf4622da1p-5,
+    -0x1.fba3053043e65p-5
+  },
+  { // Entry 378
+    0x1.7b802087557af76d96f304c0322df996p0,
+    0x1.fe0084356e6d3p-1
+  },
+  { // Entry 379
+    -0x1.7b802087557af76d96f304c0322df996p0,
+    -0x1.fe0084356e6d3p-1
+  },
+  { // Entry 380
+    0x1.7b8020890cf9e76f8fbc0fabd64eff53p0,
+    0x1.fe008435bc011p-1
+  },
+  { // Entry 381
+    -0x1.7b8020890cf9e76f8fbc0fabd64eff53p0,
+    -0x1.fe008435bc011p-1
+  },
+  { // Entry 382
+    0x1.7e1781bb355ec7803ff31d5be8def463p0,
+    0x1.fe6eec178dfcbp-1
+  },
+  { // Entry 383
+    -0x1.7e1781bb355ec7803ff31d5be8def463p0,
+    -0x1.fe6eec178dfcbp-1
+  },
+  { // Entry 384
+    0x1.7e2f2046c07b287fa8dea80ba23ad32dp0,
+    0x1.fe729b3d76af8p-1
+  },
+  { // Entry 385
+    -0x1.7e2f2046c07b287fa8dea80ba23ad32dp0,
+    -0x1.fe729b3d76af8p-1
+  },
+  { // Entry 386
+    0x1.7e2f2de8b8a817806d1670be6f754d6dp0,
+    0x1.fe729d5c93ad0p-1
+  },
+  { // Entry 387
+    -0x1.7e2f2de8b8a817806d1670be6f754d6dp0,
+    -0x1.fe729d5c93ad0p-1
+  },
+  { // Entry 388
+    0x1.ff49880d5a20aac3e3526e6cf9e09cb8p-10,
+    0x1.ff4972cecbed8p-10
+  },
+  { // Entry 389
+    -0x1.ff49880d5a20aac3e3526e6cf9e09cb8p-10,
+    -0x1.ff4972cecbed8p-10
+  },
+  { // Entry 390
+    0x1.ff87e144b3d5285c831c0483be2e06a7p-6,
+    0x1.ff729b33a450ap-6
+  },
+  { // Entry 391
+    -0x1.ff87e144b3d5285c831c0483be2e06a7p-6,
+    -0x1.ff729b33a450ap-6
+  },
+  { // Entry 392
+    0x1.027c7bd81acdf7fffe09c8613b3ac04ap-2,
+    0x1.ff7feffffffffp-3
+  },
+  { // Entry 393
+    -0x1.027c7bd81acdf7fffe09c8613b3ac04ap-2,
+    -0x1.ff7feffffffffp-3
+  },
+  { // Entry 394
+    0x1.ff8ffffffffff0000000551d619470aap-41,
+    0x1.ff8ffffffffffp-41
+  },
+  { // Entry 395
+    -0x1.ff8ffffffffff0000000551d619470aap-41,
+    -0x1.ff8ffffffffffp-41
+  },
+  { // Entry 396
+    0x1.0bf4cf34f3faeff2e4c6b885b77bb549p-1,
+    0x1.ffc7fffffffffp-2
+  },
+  { // Entry 397
+    -0x1.0bf4cf34f3faeff2e4c6b885b77bb549p-1,
+    -0x1.ffc7fffffffffp-2
+  },
+  { // Entry 398
+    0x1.8ab0d642e4c54804398ead7dd2453377p0,
+    0x1.ffc8c0c7e6e1ap-1
+  },
+  { // Entry 399
+    -0x1.8ab0d642e4c54804398ead7dd2453377p0,
+    -0x1.ffc8c0c7e6e1ap-1
+  },
+  { // Entry 400
+    0x1.8bbc3fa798db6800007c1f9be356a554p0,
+    0x1.ffd730634939cp-1
+  },
+  { // Entry 401
+    -0x1.8bbc3fa798db6800007c1f9be356a554p0,
+    -0x1.ffd730634939cp-1
+  },
+  { // Entry 402
+    0x1.8bc09a510098b804dee9939611959c0ep0,
+    0x1.ffd767f0eb014p-1
+  },
+  { // Entry 403
+    -0x1.8bc09a510098b804dee9939611959c0ep0,
+    -0x1.ffd767f0eb014p-1
+  },
+  { // Entry 404
+    0x1.0022b9e6710f97fcdf56a91cace59e6dp-4,
+    0x1.fff000000000ap-5
+  },
+  { // Entry 405
+    -0x1.0022b9e6710f97fcdf56a91cace59e6dp-4,
+    -0x1.fff000000000ap-5
+  },
+  { // Entry 406
+    0x1.fff1065375e97dcce338cf6e9331a5d9p-10,
+    0x1.fff0f0fffffffp-10
+  },
+  { // Entry 407
+    -0x1.fff1065375e97dcce338cf6e9331a5d9p-10,
+    -0x1.fff0f0fffffffp-10
+  },
+  { // Entry 408
+    0x1.0c10851c1a1097dc3df97865c5caec5bp-1,
+    0x1.fff7fffffffffp-2
+  },
+  { // Entry 409
+    -0x1.0c10851c1a1097dc3df97865c5caec5bp-1,
+    -0x1.fff7fffffffffp-2
+  },
+  { // Entry 410
+    0x1.02be94db85e837fffd06abd4bb6eb065p-2,
+    0x1.fffff077fffaep-3
+  },
+  { // Entry 411
+    -0x1.02be94db85e837fffd06abd4bb6eb065p-2,
+    -0x1.fffff077fffaep-3
+  },
+  { // Entry 412
+    0x1.ffffff4555553f7bbbbd352972db79p-15,
+    0x1.ffffff3ffffffp-15
+  },
+  { // Entry 413
+    -0x1.ffffff4555553f7bbbbd352972db79p-15,
+    -0x1.ffffff3ffffffp-15
+  },
+  { // Entry 414
+    0x1.00abe0c026d6980000ee7b5b3c750ee4p-3,
+    0x1.fffffffdfdf9bp-4
+  },
+  { // Entry 415
+    -0x1.00abe0c026d6980000ee7b5b3c750ee4p-3,
+    -0x1.fffffffdfdf9bp-4
+  },
+  { // Entry 416
+    0x1.921e7bbb5b08af737a8c86a1f3470fb7p0,
+    0x1.fffffffe7ffffp-1
+  },
+  { // Entry 417
+    -0x1.921e7bbb5b08af737a8c86a1f3470fb7p0,
+    -0x1.fffffffe7ffffp-1
+  },
+  { // Entry 418
+    0x1.921e91836230570dcee4fe03756f458cp0,
+    0x1.fffffffeb37ffp-1
+  },
+  { // Entry 419
+    -0x1.921e91836230570dcee4fe03756f458cp0,
+    -0x1.fffffffeb37ffp-1
+  },
+  { // Entry 420
+    0x1.0002aabdac7327ffffd50d8db1e7238cp-6,
+    0x1.ffffffff9bbffp-7
+  },
+  { // Entry 421
+    -0x1.0002aabdac7327ffffd50d8db1e7238cp-6,
+    -0x1.ffffffff9bbffp-7
+  },
+  { // Entry 422
+    0x1.00abe0c121d1a80c0ce870896b905389p-3,
+    0x1.ffffffffeffffp-4
+  },
+  { // Entry 423
+    -0x1.00abe0c121d1a80c0ce870896b905389p-3,
+    -0x1.ffffffffeffffp-4
+  },
+  { // Entry 424
+    0x1.0002aabdde7237febfdec02e5706bab1p-6,
+    0x1.ffffffffffbafp-7
+  },
+  { // Entry 425
+    -0x1.0002aabdde7237febfdec02e5706bab1p-6,
+    -0x1.ffffffffffbafp-7
+  },
+  { // Entry 426
+    0x1.002abde95358d80170fb3700a02d872dp-4,
+    0x1.ffffffffffee9p-5
+  },
+  { // Entry 427
+    -0x1.002abde95358d80170fb3700a02d872dp-4,
+    -0x1.ffffffffffee9p-5
+  },
+  { // Entry 428
+    0x1.921fb2cdef21d7febc9f3f1b1d1683b0p0,
+    0x1.fffffffffff9fp-1
+  },
+  { // Entry 429
+    -0x1.921fb2cdef21d7febc9f3f1b1d1683b0p0,
+    -0x1.fffffffffff9fp-1
+  },
+  { // Entry 430
+    0x1.921fb48f3dde506fab247b4dc86ea6e0p0,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 431
+    -0x1.921fb48f3dde506fab247b4dc86ea6e0p0,
+    -0x1.ffffffffffff8p-1
+  },
+  { // Entry 432
+    0x1.02be9ce0b87c980fa863b980f3eb6ed8p-2,
+    0x1.ffffffffffff9p-3
+  },
+  { // Entry 433
+    -0x1.02be9ce0b87c980fa863b980f3eb6ed8p-2,
+    -0x1.ffffffffffff9p-3
+  },
+  { // Entry 434
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 435
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 436
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 437
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 438
+    0x1.4a1ce4ed5846e1103ebca2dd90e3eb3fp-1,
+    0x1.33b645a1cac08p-1
+  },
+  { // Entry 439
+    -0x1.4a1ce4ed5846e1103ebca2dd90e3eb3fp-1,
+    -0x1.33b645a1cac08p-1
+  },
+  { // Entry 440
+    0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 441
+    -0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 442
+    0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 443
+    -0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 444
+    -0x1.b235315c680dc081583db360d5e1fa18p-1,
+    -0x1.8p-1
+  },
+  { // Entry 445
+    0x1.b235315c680dc081583db360d5e1fa18p-1,
+    0x1.8p-1
+  },
+  { // Entry 446
+    0x1.0c152382d736510b363f009eddefddebp0,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 447
+    -0x1.0c152382d736510b363f009eddefddebp0,
+    -0x1.bb67ae8584caap-1
+  },
+  { // Entry 448
+    0x1.0c152382d736510b363f009eddefddebp0,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 449
+    -0x1.0c152382d736510b363f009eddefddebp0,
+    -0x1.bb67ae8584caap-1
+  },
+  { // Entry 450
+    0x1.908138a8b9ab762dbe47f3cc71dd77a4p0,
+    0x1.fffd60e94ee39p-1
+  },
+  { // Entry 451
+    -0x1.908138a8b9ab762dbe47f3cc71dd77a4p0,
+    -0x1.fffd60e94ee39p-1
+  },
+  { // Entry 452
+    0x1.p-82,
+    0x1.0p-82
+  },
+  { // Entry 453
+    -0x1.p-82,
+    -0x1.0p-82
+  },
+  { // Entry 454
+    0x1.0000000000000000000000000000000ap-61,
+    0x1.0p-61
+  },
+  { // Entry 455
+    -0x1.0000000000000000000000000000000ap-61,
+    -0x1.0p-61
+  },
+  { // Entry 456
+    0x1.0000000000000000000002aaaaaaaaaap-42,
+    0x1.0p-42
+  },
+  { // Entry 457
+    -0x1.0000000000000000000002aaaaaaaaaap-42,
+    -0x1.0p-42
+  },
+  { // Entry 458
+    0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    0x1.0p-22
+  },
+  { // Entry 459
+    -0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    -0x1.0p-22
+  },
+  { // Entry 460
+    0x1.6a0a049378647a1e52ffdf31536df951p-9,
+    0x1.6a09e667f3bcbp-9
+  },
+  { // Entry 461
+    -0x1.6a0a049378647a1e52ffdf31536df951p-9,
+    -0x1.6a09e667f3bcbp-9
+  },
+  { // Entry 462
+    0x1.6a0a049378648a1e56ffe0b1540df936p-9,
+    0x1.6a09e667f3bccp-9
+  },
+  { // Entry 463
+    -0x1.6a0a049378648a1e56ffe0b1540df936p-9,
+    -0x1.6a09e667f3bccp-9
+  },
+  { // Entry 464
+    0x1.6a0a049378649a1e5affe23154adf976p-9,
+    0x1.6a09e667f3bcdp-9
+  },
+  { // Entry 465
+    -0x1.6a0a049378649a1e5affe23154adf976p-9,
+    -0x1.6a09e667f3bcdp-9
+  },
+  { // Entry 466
+    0x1.6a0a5f1657d1bf22d957bf86231eed1ap-8,
+    0x1.6a09e667f3bcbp-8
+  },
+  { // Entry 467
+    -0x1.6a0a5f1657d1bf22d957bf86231eed1ap-8,
+    -0x1.6a09e667f3bcbp-8
+  },
+  { // Entry 468
+    0x1.6a0a5f1657d1cf22e957d7864b1f3199p-8,
+    0x1.6a09e667f3bccp-8
+  },
+  { // Entry 469
+    -0x1.6a0a5f1657d1cf22e957d7864b1f3199p-8,
+    -0x1.6a09e667f3bccp-8
+  },
+  { // Entry 470
+    0x1.6a0a5f1657d1df22f957ef86731f7782p-8,
+    0x1.6a09e667f3bcdp-8
+  },
+  { // Entry 471
+    -0x1.6a0a5f1657d1df22f957ef86731f7782p-8,
+    -0x1.6a09e667f3bcdp-8
+  },
+  { // Entry 472
+    0x1.6a0bc9269b86124131fa4b997808aec8p-7,
+    0x1.6a09e667f3bcbp-7
+  },
+  { // Entry 473
+    -0x1.6a0bc9269b86124131fa4b997808aec8p-7,
+    -0x1.6a09e667f3bcbp-7
+  },
+  { // Entry 474
+    0x1.6a0bc9269b86224171fbcba3784eaabap-7,
+    0x1.6a09e667f3bccp-7
+  },
+  { // Entry 475
+    -0x1.6a0bc9269b86224171fbcba3784eaabap-7,
+    -0x1.6a09e667f3bccp-7
+  },
+  { // Entry 476
+    0x1.6a0bc9269b863241b1fd4bad7894ac55p-7,
+    0x1.6a09e667f3bcdp-7
+  },
+  { // Entry 477
+    -0x1.6a0bc9269b863241b1fd4bad7894ac55p-7,
+    -0x1.6a09e667f3bcdp-7
+  },
+  { // Entry 478
+    0x1.6a1171b40fe3d57da5c2e2ec8650d873p-6,
+    0x1.6a09e667f3bcbp-6
+  },
+  { // Entry 479
+    -0x1.6a1171b40fe3d57da5c2e2ec8650d873p-6,
+    -0x1.6a09e667f3bcbp-6
+  },
+  { // Entry 480
+    0x1.6a1171b40fe3e57ea5dae56ccc58a13ep-6,
+    0x1.6a09e667f3bccp-6
+  },
+  { // Entry 481
+    -0x1.6a1171b40fe3e57ea5dae56ccc58a13ep-6,
+    -0x1.6a09e667f3bccp-6
+  },
+  { // Entry 482
+    0x1.6a1171b40fe3f57fa5f2e7ed126080afp-6,
+    0x1.6a09e667f3bcdp-6
+  },
+  { // Entry 483
+    -0x1.6a1171b40fe3f57fa5f2e7ed126080afp-6,
+    -0x1.6a09e667f3bcdp-6
+  },
+  { // Entry 484
+    0x1.6a2818b1a0bd5f9b490a8ffd372921ffp-5,
+    0x1.6a09e667f3bcbp-5
+  },
+  { // Entry 485
+    -0x1.6a2818b1a0bd5f9b490a8ffd372921ffp-5,
+    -0x1.6a09e667f3bcbp-5
+  },
+  { // Entry 486
+    0x1.6a2818b1a0bd6f9f4a8b304356b73812p-5,
+    0x1.6a09e667f3bccp-5
+  },
+  { // Entry 487
+    -0x1.6a2818b1a0bd6f9f4a8b304356b73812p-5,
+    -0x1.6a09e667f3bccp-5
+  },
+  { // Entry 488
+    0x1.6a2818b1a0bd7fa34c0bd0897645a8ebp-5,
+    0x1.6a09e667f3bcdp-5
+  },
+  { // Entry 489
+    -0x1.6a2818b1a0bd7fa34c0bd0897645a8ebp-5,
+    -0x1.6a09e667f3bcdp-5
+  },
+  { // Entry 490
+    0x1.6a83017dfb54c538079f0571169f7c03p-4,
+    0x1.6a09e667f3bcbp-4
+  },
+  { // Entry 491
+    -0x1.6a83017dfb54c538079f0571169f7c03p-4,
+    -0x1.6a09e667f3bcbp-4
+  },
+  { // Entry 492
+    0x1.6a83017dfb54d5481fc74befff4e205fp-4,
+    0x1.6a09e667f3bccp-4
+  },
+  { // Entry 493
+    -0x1.6a83017dfb54d5481fc74befff4e205fp-4,
+    -0x1.6a09e667f3bccp-4
+  },
+  { // Entry 494
+    0x1.6a83017dfb54e55837ef926ee7fe330dp-4,
+    0x1.6a09e667f3bcdp-4
+  },
+  { // Entry 495
+    -0x1.6a83017dfb54e55837ef926ee7fe330dp-4,
+    -0x1.6a09e667f3bcdp-4
+  },
+  { // Entry 496
+    0x1.6bf38916421401c3b5732e0d6b50ebd0p-3,
+    0x1.6a09e667f3bcbp-3
+  },
+  { // Entry 497
+    -0x1.6bf38916421401c3b5732e0d6b50ebd0p-3,
+    -0x1.6a09e667f3bcbp-3
+  },
+  { // Entry 498
+    0x1.6bf38916421412053fbb34ebe8221436p-3,
+    0x1.6a09e667f3bccp-3
+  },
+  { // Entry 499
+    -0x1.6bf38916421412053fbb34ebe8221436p-3,
+    -0x1.6a09e667f3bccp-3
+  },
+  { // Entry 500
+    0x1.6bf3891642142246ca033bca64f92b66p-3,
+    0x1.6a09e667f3bcdp-3
+  },
+  { // Entry 501
+    -0x1.6bf3891642142246ca033bca64f92b66p-3,
+    -0x1.6a09e667f3bcdp-3
+  },
+  { // Entry 502
+    0x1.720a392c1d952d8e8ad756e1430b13d1p-2,
+    0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 503
+    -0x1.720a392c1d952d8e8ad756e1430b13d1p-2,
+    -0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 504
+    0x1.720a392c1d953ea959bcb7056cb6fa96p-2,
+    0x1.6a09e667f3bccp-2
+  },
+  { // Entry 505
+    -0x1.720a392c1d953ea959bcb7056cb6fa96p-2,
+    -0x1.6a09e667f3bccp-2
+  },
+  { // Entry 506
+    0x1.720a392c1d954fc428a21729967e8694p-2,
+    0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 507
+    -0x1.720a392c1d954fc428a21729967e8694p-2,
+    -0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 508
+    0x1.bb67e5f28d500f1ccaec1a38d240d53fp-9,
+    0x1.bb67ae8584ca9p-9
+  },
+  { // Entry 509
+    -0x1.bb67e5f28d500f1ccaec1a38d240d53fp-9,
+    -0x1.bb67ae8584ca9p-9
+  },
+  { // Entry 510
+    0x1.bb67e5f28d501f1cd0ec1d98d45cd638p-9,
+    0x1.bb67ae8584caap-9
+  },
+  { // Entry 511
+    -0x1.bb67e5f28d501f1cd0ec1d98d45cd638p-9,
+    -0x1.bb67ae8584caap-9
+  },
+  { // Entry 512
+    0x1.bb67e5f28d502f1cd6ec20f8d678d7a0p-9,
+    0x1.bb67ae8584cabp-9
+  },
+  { // Entry 513
+    -0x1.bb67e5f28d502f1cd6ec20f8d678d7a0p-9,
+    -0x1.bb67ae8584cabp-9
+  },
+  { // Entry 514
+    0x1.bb688c3a875bcb79b1d1fd5de10c96d1p-8,
+    0x1.bb67ae8584ca9p-8
+  },
+  { // Entry 515
+    -0x1.bb688c3a875bcb79b1d1fd5de10c96d1p-8,
+    -0x1.bb67ae8584ca9p-8
+  },
+  { // Entry 516
+    0x1.bb688c3a875bdb79c9d2335e680df78fp-8,
+    0x1.bb67ae8584caap-8
+  },
+  { // Entry 517
+    -0x1.bb688c3a875bdb79c9d2335e680df78fp-8,
+    -0x1.bb67ae8584caap-8
+  },
+  { // Entry 518
+    0x1.bb688c3a875beb79e1d2695eef0f5a08p-8,
+    0x1.bb67ae8584cabp-8
+  },
+  { // Entry 519
+    -0x1.bb688c3a875beb79e1d2695eef0f5a08p-8,
+    -0x1.bb67ae8584cabp-8
+  },
+  { // Entry 520
+    0x1.bb6b2567972165018cf35a469b36c5e6p-7,
+    0x1.bb67ae8584ca9p-7
+  },
+  { // Entry 521
+    -0x1.bb6b2567972165018cf35a469b36c5e6p-7,
+    -0x1.bb67ae8584ca9p-7
+  },
+  { // Entry 522
+    0x1.bb6b256797217501ecf6ba685c992e41p-7,
+    0x1.bb67ae8584caap-7
+  },
+  { // Entry 523
+    -0x1.bb6b256797217501ecf6ba685c992e41p-7,
+    -0x1.bb67ae8584caap-7
+  },
+  { // Entry 524
+    0x1.bb6b2567972185024cfa1a8a1dfb9d8ap-7,
+    0x1.bb67ae8584cabp-7
+  },
+  { // Entry 525
+    -0x1.bb6b2567972185024cfa1a8a1dfb9d8ap-7,
+    -0x1.bb67ae8584cabp-7
+  },
+  { // Entry 526
+    0x1.bb758aee66c4f6179c2a4c9e47ed2c98p-6,
+    0x1.bb67ae8584ca9p-6
+  },
+  { // Entry 527
+    -0x1.bb758aee66c4f6179c2a4c9e47ed2c98p-6,
+    -0x1.bb67ae8584ca9p-6
+  },
+  { // Entry 528
+    0x1.bb758aee66c506191c60550faa88e978p-6,
+    0x1.bb67ae8584caap-6
+  },
+  { // Entry 529
+    -0x1.bb758aee66c506191c60550faa88e978p-6,
+    -0x1.bb67ae8584caap-6
+  },
+  { // Entry 530
+    0x1.bb758aee66c5161a9c965d810d24c216p-6,
+    0x1.bb67ae8584cabp-6
+  },
+  { // Entry 531
+    -0x1.bb758aee66c5161a9c965d810d24c216p-6,
+    -0x1.bb67ae8584cabp-6
+  },
+  { // Entry 532
+    0x1.bb9f2e3879c2cf9ea454ab283af7825ap-5,
+    0x1.bb67ae8584ca9p-5
+  },
+  { // Entry 533
+    -0x1.bb9f2e3879c2cf9ea454ab283af7825ap-5,
+    -0x1.bb67ae8584ca9p-5
+  },
+  { // Entry 534
+    0x1.bb9f2e3879c2dfa4a7b6c88b8acffef5p-5,
+    0x1.bb67ae8584caap-5
+  },
+  { // Entry 535
+    -0x1.bb9f2e3879c2dfa4a7b6c88b8acffef5p-5,
+    -0x1.bb67ae8584caap-5
+  },
+  { // Entry 536
+    0x1.bb9f2e3879c2efaaab18e5eedaa8eae8p-5,
+    0x1.bb67ae8584cabp-5
+  },
+  { // Entry 537
+    -0x1.bb9f2e3879c2efaaab18e5eedaa8eae8p-5,
+    -0x1.bb67ae8584cabp-5
+  },
+  { // Entry 538
+    0x1.bc468fc3ecf6b031e5cd5bd050766cd7p-4,
+    0x1.bb67ae8584ca9p-4
+  },
+  { // Entry 539
+    -0x1.bc468fc3ecf6b031e5cd5bd050766cd7p-4,
+    -0x1.bb67ae8584ca9p-4
+  },
+  { // Entry 540
+    0x1.bc468fc3ecf6c04a1c55c1f784a40b33p-4,
+    0x1.bb67ae8584caap-4
+  },
+  { // Entry 541
+    -0x1.bc468fc3ecf6c04a1c55c1f784a40b33p-4,
+    -0x1.bb67ae8584caap-4
+  },
+  { // Entry 542
+    0x1.bc468fc3ecf6d06252de281eb8d36cdfp-4,
+    0x1.bb67ae8584cabp-4
+  },
+  { // Entry 543
+    -0x1.bc468fc3ecf6d06252de281eb8d36cdfp-4,
+    -0x1.bb67ae8584cabp-4
+  },
+  { // Entry 544
+    0x1.bef1bcb08890131f87f550d6c3652dd7p-3,
+    0x1.bb67ae8584ca9p-3
+  },
+  { // Entry 545
+    -0x1.bef1bcb08890131f87f550d6c3652dd7p-3,
+    -0x1.bb67ae8584ca9p-3
+  },
+  { // Entry 546
+    0x1.bef1bcb0889023830b2750073d51ac87p-3,
+    0x1.bb67ae8584caap-3
+  },
+  { // Entry 547
+    -0x1.bef1bcb0889023830b2750073d51ac87p-3,
+    -0x1.bb67ae8584caap-3
+  },
+  { // Entry 548
+    0x1.bef1bcb0889033e68e594f37b7459d46p-3,
+    0x1.bb67ae8584cabp-3
+  },
+  { // Entry 549
+    -0x1.bef1bcb0889033e68e594f37b7459d46p-3,
+    -0x1.bb67ae8584cabp-3
+  },
+  { // Entry 550
+    0x1.ca94936b98a1ffe8286e976abd1b0451p-2,
+    0x1.bb67ae8584ca9p-2
+  },
+  { // Entry 551
+    -0x1.ca94936b98a1ffe8286e976abd1b0451p-2,
+    -0x1.bb67ae8584ca9p-2
+  },
+  { // Entry 552
+    0x1.ca94936b98a211a8430ed35352bc881bp-2,
+    0x1.bb67ae8584caap-2
+  },
+  { // Entry 553
+    -0x1.ca94936b98a211a8430ed35352bc881bp-2,
+    -0x1.bb67ae8584caap-2
+  },
+  { // Entry 554
+    0x1.ca94936b98a223685daf0f3be883e2d0p-2,
+    0x1.bb67ae8584cabp-2
+  },
+  { // Entry 555
+    -0x1.ca94936b98a223685daf0f3be883e2d0p-2,
+    -0x1.bb67ae8584cabp-2
+  },
+  { // Entry 556
+    0x1.fffffffffffff0p-128,
+    0x1.fffffffffffffp-128
+  },
+  { // Entry 557
+    -0x1.fffffffffffff0p-128,
+    -0x1.fffffffffffffp-128
+  },
+  { // Entry 558
+    0x1.p-127,
+    0x1.0p-127
+  },
+  { // Entry 559
+    -0x1.p-127,
+    -0x1.0p-127
+  },
+  { // Entry 560
+    0x1.00000000000010p-127,
+    0x1.0000000000001p-127
+  },
+  { // Entry 561
+    -0x1.00000000000010p-127,
+    -0x1.0000000000001p-127
+  },
+  { // Entry 562
+    0x1.fffffffffffff0p-127,
+    0x1.fffffffffffffp-127
+  },
+  { // Entry 563
+    -0x1.fffffffffffff0p-127,
+    -0x1.fffffffffffffp-127
+  },
+  { // Entry 564
+    0x1.p-126,
+    0x1.0p-126
+  },
+  { // Entry 565
+    -0x1.p-126,
+    -0x1.0p-126
+  },
+  { // Entry 566
+    0x1.00000000000010p-126,
+    0x1.0000000000001p-126
+  },
+  { // Entry 567
+    -0x1.00000000000010p-126,
+    -0x1.0000000000001p-126
+  },
+  { // Entry 568
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 569
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 570
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 571
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 572
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 573
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 574
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 575
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 576
+    -0.0,
+    -0.0
+  },
+  { // Entry 577
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 578
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 579
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 580
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 581
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 582
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 583
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 584
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 585
+    0x1.fffffffffffff005555555555554d57bp-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 586
+    -0x1.fffffffffffff005555555555554d57bp-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 587
+    0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    0x1.0p-30
+  },
+  { // Entry 588
+    -0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    -0x1.0p-30
+  },
+  { // Entry 589
+    0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 590
+    -0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 591
+    0x1.fffffffffffff155555555555537bbbbp-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 592
+    -0x1.fffffffffffff155555555555537bbbbp-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 593
+    0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    0x1.0p-27
+  },
+  { // Entry 594
+    -0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    -0x1.0p-27
+  },
+  { // Entry 595
+    0x1.00000000000010aaaaaaaaaaaacbddddp-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 596
+    -0x1.00000000000010aaaaaaaaaaaacbddddp-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 597
+    0x1.00000000000002aaaaaaaaaaaaddddddp-25,
+    0x1.fffffffffffffp-26
+  },
+  { // Entry 598
+    -0x1.00000000000002aaaaaaaaaaaaddddddp-25,
+    -0x1.fffffffffffffp-26
+  },
+  { // Entry 599
+    0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    0x1.0p-25
+  },
+  { // Entry 600
+    -0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    -0x1.0p-25
+  },
+  { // Entry 601
+    0x1.0000000000001aaaaaaaaaaaadddddddp-25,
+    0x1.0000000000001p-25
+  },
+  { // Entry 602
+    -0x1.0000000000001aaaaaaaaaaaadddddddp-25,
+    -0x1.0000000000001p-25
+  },
+  { // Entry 603
+    0x1.00000002aaaaa2bddddd9e94b9489c80p-14,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 604
+    -0x1.00000002aaaaa2bddddd9e94b9489c80p-14,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 605
+    0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    0x1.0p-14
+  },
+  { // Entry 606
+    -0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    -0x1.0p-14
+  },
+  { // Entry 607
+    0x1.00000002aaaababdddde5e94b9519c80p-14,
+    0x1.0000000000001p-14
+  },
+  { // Entry 608
+    -0x1.00000002aaaababdddde5e94b9519c80p-14,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 609
+    0x1.0002aabdde94b912cccf6cb7a147dbe6p-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 610
+    -0x1.0002aabdde94b912cccf6cb7a147dbe6p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 611
+    0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    0x1.0p-6
+  },
+  { // Entry 612
+    -0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    -0x1.0p-6
+  },
+  { // Entry 613
+    0x1.0002aabdde94d1138cd86d2fa7d8406cp-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 614
+    -0x1.0002aabdde94d1138cd86d2fa7d8406cp-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 615
+    0x1.000aabde0b9c79d5d91547bc0e143946p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 616
+    -0x1.000aabde0b9c79d5d91547bc0e143946p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 617
+    0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    0x1.0p-5
+  },
+  { // Entry 618
+    -0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    -0x1.0p-5
+  },
+  { // Entry 619
+    0x1.000aabde0b9c91d8d9a565c29f8ea804p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 620
+    -0x1.000aabde0b9c91d8d9a565c29f8ea804p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 621
+    0x1.002abde953618c5cb5b49945c179d0f3p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 622
+    -0x1.002abde953618c5cb5b49945c179d0f3p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 623
+    0x1.002abde953619460b8b71b77bb495f57p-4,
+    0x1.0p-4
+  },
+  { // Entry 624
+    -0x1.002abde953619460b8b71b77bb495f57p-4,
+    -0x1.0p-4
+  },
+  { // Entry 625
+    0x1.002abde95361a468bebc1fdbaee93d3fp-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 626
+    -0x1.002abde95361a468bebc1fdbaee93d3fp-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 627
+    0x1.00abe0c129e1d8ae44e53a515476507cp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 628
+    -0x1.00abe0c129e1d8ae44e53a515476507cp-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 629
+    0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    0x1.0p-3
+  },
+  { // Entry 630
+    -0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    -0x1.0p-3
+  },
+  { // Entry 631
+    0x1.00abe0c129e1f0ded6cbe2493b007c79p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 632
+    -0x1.00abe0c129e1f0ded6cbe2493b007c79p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 633
+    0x1.02be9ce0b87cc9a2a64c386583040afap-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 634
+    -0x1.02be9ce0b87cc9a2a64c386583040afap-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 635
+    0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    0x1.0p-2
+  },
+  { // Entry 636
+    -0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    -0x1.0p-2
+  },
+  { // Entry 637
+    0x1.02be9ce0b87ce26c254077d7cacbd63cp-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 638
+    -0x1.02be9ce0b87ce26c254077d7cacbd63cp-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 639
+    0x1.0c152382d7364f09881065f5c8609169p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 640
+    -0x1.0c152382d7364f09881065f5c8609169p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 641
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 642
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 643
+    0x1.0c152382d7366ac002f8be4272f9370fp-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 644
+    -0x1.0c152382d7366ac002f8be4272f9370fp-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 645
+    0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 646
+    -0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 647
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p0
+  },
+  { // Entry 648
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p0
+  },
+  { // Entry 649
+    0x1.921fb54442d14a61a638f674b3b839a2p-1,
+    0x1.6a09e667f3bcap-1
+  },
+  { // Entry 650
+    -0x1.921fb54442d14a61a638f674b3b839a2p-1,
+    -0x1.6a09e667f3bcap-1
+  },
+  { // Entry 651
+    0x1.921fb54442d16102449f75b07e3839a2p-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 652
+    -0x1.921fb54442d16102449f75b07e3839a2p-1,
+    -0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 653
+    0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 654
+    -0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 655
+    0x1.921fb54442d18e43816c7428163839a2p-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 656
+    -0x1.921fb54442d18e43816c7428163839a2p-1,
+    -0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 657
+    0x1.921fb54442d1a4e41fd2f363e3b839a2p-1,
+    0x1.6a09e667f3bcep-1
+  },
+  { // Entry 658
+    -0x1.921fb54442d1a4e41fd2f363e3b839a2p-1,
+    -0x1.6a09e667f3bcep-1
+  },
+  { // Entry 659
+    0x1.0c152382d736310b363f009ee2f7763ap0,
+    0x1.bb67ae8584ca8p-1
+  },
+  { // Entry 660
+    -0x1.0c152382d736310b363f009ee2f7763ap0,
+    -0x1.bb67ae8584ca8p-1
+  },
+  { // Entry 661
+    0x1.0c152382d736410b363f009edf95f63bp0,
+    0x1.bb67ae8584ca9p-1
+  },
+  { // Entry 662
+    -0x1.0c152382d736410b363f009edf95f63bp0,
+    -0x1.bb67ae8584ca9p-1
+  },
+  { // Entry 663
+    0x1.0c152382d736510b363f009eddefddebp0,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 664
+    -0x1.0c152382d736510b363f009eddefddebp0,
+    -0x1.bb67ae8584caap-1
+  },
+  { // Entry 665
+    0x1.0c152382d736610b363f009ede052d4ap0,
+    0x1.bb67ae8584cabp-1
+  },
+  { // Entry 666
+    -0x1.0c152382d736610b363f009ede052d4ap0,
+    -0x1.bb67ae8584cabp-1
+  },
+  { // Entry 667
+    0x1.0c152382d736710b363f009edfd5e457p0,
+    0x1.bb67ae8584cacp-1
+  },
+  { // Entry 668
+    -0x1.0c152382d736710b363f009edfd5e457p0,
+    -0x1.bb67ae8584cacp-1
+  },
+  { // Entry 669
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p0
+  },
+  { // Entry 670
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p0
+  },
+  { // Entry 671
+    0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 672
+    -0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 673
+    0x1.ce8276c3e139c7eeab836fc4dd4a61bcp-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 674
+    -0x1.ce8276c3e139c7eeab836fc4dd4a61bcp-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 675
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 676
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 677
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 678
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 680
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 681
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 682
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 683
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 684
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 685
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 686
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 687
+    0.0,
+    0.0
+  },
+  { // Entry 688
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/asinf_intel_data.h b/tests/math_data/asinf_intel_data.h
new file mode 100644
index 0000000..6979a6b
--- /dev/null
+++ b/tests/math_data/asinf_intel_data.h
@@ -0,0 +1,1934 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_asinf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2
+    -0x1.0cad8e66f6fb487cf1df9ed091e4a72ep-1,
+    -0x1.0083f4p-1
+  },
+  { // Entry 3
+    0x1.0cad8e66f6fb487cf1df9ed091e4a72ep-1,
+    0x1.0083f4p-1
+  },
+  { // Entry 4
+    -0x1.103565dad7e2002283a3fac2b1d6311dp-1,
+    -0x1.03909cp-1
+  },
+  { // Entry 5
+    0x1.103565dad7e2002283a3fac2b1d6311dp-1,
+    0x1.03909cp-1
+  },
+  { // Entry 6
+    -0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    -0x1.0ep-1
+  },
+  { // Entry 7
+    0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    0x1.0ep-1
+  },
+  { // Entry 8
+    -0x1.311900012958ac30f09a111b838a00c4p-1,
+    -0x1.1f5cp-1
+  },
+  { // Entry 9
+    0x1.311900012958ac30f09a111b838a00c4p-1,
+    0x1.1f5cp-1
+  },
+  { // Entry 10
+    -0x1.246f5c0000a72022c39c255ede1512d3p-3,
+    -0x1.237138p-3
+  },
+  { // Entry 11
+    0x1.246f5c0000a72022c39c255ede1512d3p-3,
+    0x1.237138p-3
+  },
+  { // Entry 12
+    -0x1.3db0900000395b4211afefffc6915c36p-3,
+    -0x1.3c6acap-3
+  },
+  { // Entry 13
+    0x1.3db0900000395b4211afefffc6915c36p-3,
+    0x1.3c6acap-3
+  },
+  { // Entry 14
+    -0x1.5e2e4b551d68af4d88152d62976726c4p-1,
+    -0x1.4382c8p-1
+  },
+  { // Entry 15
+    0x1.5e2e4b551d68af4d88152d62976726c4p-1,
+    0x1.4382c8p-1
+  },
+  { // Entry 16
+    -0x1.7be252f6f0a776a93608351ae10eb974p0,
+    -0x1.fe11b4p-1
+  },
+  { // Entry 17
+    0x1.7be252f6f0a776a93608351ae10eb974p0,
+    0x1.fe11b4p-1
+  },
+  { // Entry 18
+    -0x1.00ab00ffe5d68ab742fd93647ec0a67bp-3,
+    -0x1.fffe44p-4
+  },
+  { // Entry 19
+    0x1.00ab00ffe5d68ab742fd93647ec0a67bp-3,
+    0x1.fffe44p-4
+  },
+  { // Entry 20
+    -0x1.0c15110930220c79eb624ae419c8836cp-1,
+    -0x1.ffffe0p-2
+  },
+  { // Entry 21
+    0x1.0c15110930220c79eb624ae419c8836cp-1,
+    0x1.ffffe0p-2
+  },
+  { // Entry 22
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 23
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 24
+    0x1.02be9ef183114fc560988306f887ac74p-2,
+    0x1.000002p-2
+  },
+  { // Entry 25
+    -0x1.02be9ef183114fc560988306f887ac74p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 26
+    0x1.02bea1024da614265a59c002ae0c56a0p-2,
+    0x1.000004p-2
+  },
+  { // Entry 27
+    -0x1.02bea1024da614265a59c002ae0c56a0p-2,
+    -0x1.000004p-2
+  },
+  { // Entry 28
+    0x1.0c152a7075f75bf85c1ca9191b19a5afp-1,
+    0x1.000006p-1
+  },
+  { // Entry 29
+    -0x1.0c152a7075f75bf85c1ca9191b19a5afp-1,
+    -0x1.000006p-1
+  },
+  { // Entry 30
+    0x1.0c15315e14c63ae876f9313819157a92p-1,
+    0x1.00000cp-1
+  },
+  { // Entry 31
+    -0x1.0c15315e14c63ae876f9313819157a92p-1,
+    -0x1.00000cp-1
+  },
+  { // Entry 32
+    0x1.00ac0101ec72f1a878790d17bb281556p-3,
+    0x1.000020p-3
+  },
+  { // Entry 33
+    -0x1.00ac0101ec72f1a878790d17bb281556p-3,
+    -0x1.000020p-3
+  },
+  { // Entry 34
+    0x1.0c154ac55b88a3af9035a28322fdd9a3p-1,
+    0x1.000022p-1
+  },
+  { // Entry 35
+    -0x1.0c154ac55b88a3af9035a28322fdd9a3p-1,
+    -0x1.000022p-1
+  },
+  { // Entry 36
+    0x1.02bebffe2c7ea2805320dec66ca7844cp-2,
+    0x1.000022p-2
+  },
+  { // Entry 37
+    -0x1.02bebffe2c7ea2805320dec66ca7844cp-2,
+    -0x1.000022p-2
+  },
+  { // Entry 38
+    0x1.0c15565164aa3a55958458405a1c1e98p-1,
+    0x1.00002cp-1
+  },
+  { // Entry 39
+    -0x1.0c15565164aa3a55958458405a1c1e98p-1,
+    -0x1.00002cp-1
+  },
+  { // Entry 40
+    0x1.0c155aefcec270c5a31b3e016614b676p-1,
+    0x1.000030p-1
+  },
+  { // Entry 41
+    -0x1.0c155aefcec270c5a31b3e016614b676p-1,
+    -0x1.000030p-1
+  },
+  { // Entry 42
+    0x1.0c15667bd819ea5190d64e1eecd9d3ffp-1,
+    0x1.00003ap-1
+  },
+  { // Entry 43
+    -0x1.0c15667bd819ea5190d64e1eecd9d3ffp-1,
+    -0x1.00003ap-1
+  },
+  { // Entry 44
+    0x1.0c16deeaf496378cb0c17601a82b3ef7p-1,
+    0x1.000180p-1
+  },
+  { // Entry 45
+    -0x1.0c16deeaf496378cb0c17601a82b3ef7p-1,
+    -0x1.000180p-1
+  },
+  { // Entry 46
+    0x1.0c1772b884fb0853488f82c8eab22f06p-1,
+    0x1.0002p-1
+  },
+  { // Entry 47
+    -0x1.0c1772b884fb0853488f82c8eab22f06p-1,
+    -0x1.0002p-1
+  },
+  { // Entry 48
+    0x1.0c189a53efac87369bf73699b02aa09ep-1,
+    0x1.0003p-1
+  },
+  { // Entry 49
+    -0x1.0c189a53efac87369bf73699b02aa09ep-1,
+    -0x1.0003p-1
+  },
+  { // Entry 50
+    0x1.00aefcfffff563634fb095cc9e40dda3p-3,
+    0x1.000316p-3
+  },
+  { // Entry 51
+    -0x1.00aefcfffff563634fb095cc9e40dda3p-3,
+    -0x1.000316p-3
+  },
+  { // Entry 52
+    0x1.0c190240aa98557da9d4fe206ae66279p-1,
+    0x1.00035ap-1
+  },
+  { // Entry 53
+    -0x1.0c190240aa98557da9d4fe206ae66279p-1,
+    -0x1.00035ap-1
+  },
+  { // Entry 54
+    0x1.0c19c1efbce926ca14cb3e0b0fcfe46cp-1,
+    0x1.0004p-1
+  },
+  { // Entry 55
+    -0x1.0c19c1efbce926ca14cb3e0b0fcfe46cp-1,
+    -0x1.0004p-1
+  },
+  { // Entry 56
+    0x1.000b2b01e4072831138943d51020c3f5p-6,
+    0x1.000880p-6
+  },
+  { // Entry 57
+    -0x1.000b2b01e4072831138943d51020c3f5p-6,
+    -0x1.000880p-6
+  },
+  { // Entry 58
+    0x1.0c30da6ca06846115bb5e8040cd163a5p-1,
+    0x1.0018p-1
+  },
+  { // Entry 59
+    -0x1.0c30da6ca06846115bb5e8040cd163a5p-1,
+    -0x1.0018p-1
+  },
+  { // Entry 60
+    0x1.0c3578fe7d748ef467902185b57079a1p-1,
+    0x1.001cp-1
+  },
+  { // Entry 61
+    -0x1.0c3578fe7d748ef467902185b57079a1p-1,
+    -0x1.001cp-1
+  },
+  { // Entry 62
+    0x1.0c3a17968466fa128c82b047d29e1a81p-1,
+    0x1.0020p-1
+  },
+  { // Entry 63
+    -0x1.0c3a17968466fa128c82b047d29e1a81p-1,
+    -0x1.0020p-1
+  },
+  { // Entry 64
+    0x1.0c3b1a489846ab8835c530f3c925e48dp-1,
+    0x1.0020e0p-1
+  },
+  { // Entry 65
+    -0x1.0c3b1a489846ab8835c530f3c925e48dp-1,
+    -0x1.0020e0p-1
+  },
+  { // Entry 66
+    0x1.0c3c8bd9c9f36a99f8039f99249719a7p-1,
+    0x1.002220p-1
+  },
+  { // Entry 67
+    -0x1.0c3c8bd9c9f36a99f8039f99249719a7p-1,
+    -0x1.002220p-1
+  },
+  { // Entry 68
+    0x1.0c3eb634b570d95017c1efd1196f0188p-1,
+    0x1.0024p-1
+  },
+  { // Entry 69
+    -0x1.0c3eb634b570d95017c1efd1196f0188p-1,
+    -0x1.0024p-1
+  },
+  { // Entry 70
+    0x1.0c502e329b76cbc90d2bc2d8a46fd894p-1,
+    0x1.003320p-1
+  },
+  { // Entry 71
+    -0x1.0c502e329b76cbc90d2bc2d8a46fd894p-1,
+    -0x1.003320p-1
+  },
+  { // Entry 72
+    0x1.0c7f6563138d8ff3289425afc29cf2e4p-1,
+    0x1.005cp-1
+  },
+  { // Entry 73
+    -0x1.0c7f6563138d8ff3289425afc29cf2e4p-1,
+    -0x1.005cp-1
+  },
+  { // Entry 74
+    0x1.0c8d4265d9ee207b3dc21f1db76ede7cp-1,
+    0x1.0068p-1
+  },
+  { // Entry 75
+    -0x1.0c8d4265d9ee207b3dc21f1db76ede7cp-1,
+    -0x1.0068p-1
+  },
+  { // Entry 76
+    0x1.0c91e1732197e2a5d4dca63deb68090ap-1,
+    0x1.006cp-1
+  },
+  { // Entry 77
+    -0x1.0c91e1732197e2a5d4dca63deb68090ap-1,
+    -0x1.006cp-1
+  },
+  { // Entry 78
+    0x1.035dad0091daa5df1fc0e0e0a9fe4ed4p-2,
+    0x1.009ap-2
+  },
+  { // Entry 79
+    -0x1.035dad0091daa5df1fc0e0e0a9fe4ed4p-2,
+    -0x1.009ap-2
+  },
+  { // Entry 80
+    0x1.0d403226a827880e2ff8226ddebdcb2bp-1,
+    0x1.0102d2p-1
+  },
+  { // Entry 81
+    -0x1.0d403226a827880e2ff8226ddebdcb2bp-1,
+    -0x1.0102d2p-1
+  },
+  { // Entry 82
+    0x1.0d9488ef7d93f71e126a87e6a4df2604p-1,
+    0x1.014bc0p-1
+  },
+  { // Entry 83
+    -0x1.0d9488ef7d93f71e126a87e6a4df2604p-1,
+    -0x1.014bc0p-1
+  },
+  { // Entry 84
+    0x1.0db5367f9e64f3f50a2f70dbcc5b7254p-1,
+    0x1.0168p-1
+  },
+  { // Entry 85
+    -0x1.0db5367f9e64f3f50a2f70dbcc5b7254p-1,
+    -0x1.0168p-1
+  },
+  { // Entry 86
+    0x1.0de005001105becff3be2f022c424727p-1,
+    0x1.018dp-1
+  },
+  { // Entry 87
+    -0x1.0de005001105becff3be2f022c424727p-1,
+    -0x1.018dp-1
+  },
+  { // Entry 88
+    0x1.0f8db1c47d54f959ab0145145c67ac7cp-1,
+    0x1.03p-1
+  },
+  { // Entry 89
+    -0x1.0f8db1c47d54f959ab0145145c67ac7cp-1,
+    -0x1.03p-1
+  },
+  { // Entry 90
+    0x1.17df11023b00b60e566bcc34452d8efcp-1,
+    0x1.0a24p-1
+  },
+  { // Entry 91
+    -0x1.17df11023b00b60e566bcc34452d8efcp-1,
+    -0x1.0a24p-1
+  },
+  { // Entry 92
+    0x1.188a13003e2d6673f8b1137ddefa7ff6p-1,
+    0x1.0ab608p-1
+  },
+  { // Entry 93
+    -0x1.188a13003e2d6673f8b1137ddefa7ff6p-1,
+    -0x1.0ab608p-1
+  },
+  { // Entry 94
+    0x1.0c310bfed8146bab3eccd1f36ad598dfp-4,
+    0x1.0cp-4
+  },
+  { // Entry 95
+    -0x1.0c310bfed8146bab3eccd1f36ad598dfp-4,
+    -0x1.0cp-4
+  },
+  { // Entry 96
+    0x1.1ab071a6a6495483fb202832876267b1p-1,
+    0x1.0c8b3ap-1
+  },
+  { // Entry 97
+    -0x1.1ab071a6a6495483fb202832876267b1p-1,
+    -0x1.0c8b3ap-1
+  },
+  { // Entry 98
+    0x1.1ae03117af7650c7036eeb7f258539aep-1,
+    0x1.0cb3e0p-1
+  },
+  { // Entry 99
+    -0x1.1ae03117af7650c7036eeb7f258539aep-1,
+    -0x1.0cb3e0p-1
+  },
+  { // Entry 100
+    0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    0x1.0ep-1
+  },
+  { // Entry 101
+    -0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    -0x1.0ep-1
+  },
+  { // Entry 102
+    0x1.0e0321004f7f95de7df856f46276d32cp-6,
+    0x1.0ep-6
+  },
+  { // Entry 103
+    -0x1.0e0321004f7f95de7df856f46276d32cp-6,
+    -0x1.0ep-6
+  },
+  { // Entry 104
+    0x1.1d19b3000a8c63dbb9cd3aa26cb93af8p-1,
+    0x1.0e98p-1
+  },
+  { // Entry 105
+    -0x1.1d19b3000a8c63dbb9cd3aa26cb93af8p-1,
+    -0x1.0e98p-1
+  },
+  { // Entry 106
+    0x1.0f37e6ffffffcadf5403653d968a2680p-5,
+    0x1.0f2b38p-5
+  },
+  { // Entry 107
+    -0x1.0f37e6ffffffcadf5403653d968a2680p-5,
+    -0x1.0f2b38p-5
+  },
+  { // Entry 108
+    0x1.1ecf67bb91057e1a4092f0d0eaea1701p-1,
+    0x1.100b32p-1
+  },
+  { // Entry 109
+    -0x1.1ecf67bb91057e1a4092f0d0eaea1701p-1,
+    -0x1.100b32p-1
+  },
+  { // Entry 110
+    0x1.1f4b64fffffffa0c91291e1431281f37p-1,
+    0x1.107434p-1
+  },
+  { // Entry 111
+    -0x1.1f4b64fffffffa0c91291e1431281f37p-1,
+    -0x1.107434p-1
+  },
+  { // Entry 112
+    0x1.1903930006f8309241827585b2c80661p-2,
+    0x1.1580p-2
+  },
+  { // Entry 113
+    -0x1.1903930006f8309241827585b2c80661p-2,
+    -0x1.1580p-2
+  },
+  { // Entry 114
+    0x1.172493fffee5a2507f132613cadeccccp-5,
+    0x1.1716c0p-5
+  },
+  { // Entry 115
+    -0x1.172493fffee5a2507f132613cadeccccp-5,
+    -0x1.1716c0p-5
+  },
+  { // Entry 116
+    0x1.1c7d46fd7b1ac4ded1655c5206e6e630p-2,
+    0x1.18d8p-2
+  },
+  { // Entry 117
+    -0x1.1c7d46fd7b1ac4ded1655c5206e6e630p-2,
+    -0x1.18d8p-2
+  },
+  { // Entry 118
+    0x1.29647a7e646f32008c8601ac04967bfcp-1,
+    0x1.18f32ep-1
+  },
+  { // Entry 119
+    -0x1.29647a7e646f32008c8601ac04967bfcp-1,
+    -0x1.18f32ep-1
+  },
+  { // Entry 120
+    0x1.311900012958ac30f09a111b838a00c4p-1,
+    0x1.1f5cp-1
+  },
+  { // Entry 121
+    -0x1.311900012958ac30f09a111b838a00c4p-1,
+    -0x1.1f5cp-1
+  },
+  { // Entry 122
+    0x1.23fee9057a799bd52740b1ae1d1e9685p-2,
+    0x1.200ep-2
+  },
+  { // Entry 123
+    -0x1.23fee9057a799bd52740b1ae1d1e9685p-2,
+    -0x1.200ep-2
+  },
+  { // Entry 124
+    0x1.3cdf26fdd7f39ef9b6df17e306cf9247p-1,
+    0x1.2906fcp-1
+  },
+  { // Entry 125
+    -0x1.3cdf26fdd7f39ef9b6df17e306cf9247p-1,
+    -0x1.2906fcp-1
+  },
+  { // Entry 126
+    0x1.45311906dbb495a038edf78f3481fba9p-1,
+    0x1.2fc3c2p-1
+  },
+  { // Entry 127
+    -0x1.45311906dbb495a038edf78f3481fba9p-1,
+    -0x1.2fc3c2p-1
+  },
+  { // Entry 128
+    0x1.3644eaffff7a7a503708b5792101243fp-2,
+    0x1.318b20p-2
+  },
+  { // Entry 129
+    -0x1.3644eaffff7a7a503708b5792101243fp-2,
+    -0x1.318b20p-2
+  },
+  { // Entry 130
+    0x1.34360affff7ab0ac1a44f15312908de9p-5,
+    0x1.34236ep-5
+  },
+  { // Entry 131
+    -0x1.34360affff7ab0ac1a44f15312908de9p-5,
+    -0x1.34236ep-5
+  },
+  { // Entry 132
+    0x1.380134f73a1260de2e6015aa3c882e11p-7,
+    0x1.38p-7
+  },
+  { // Entry 133
+    -0x1.380134f73a1260de2e6015aa3c882e11p-7,
+    -0x1.38p-7
+  },
+  { // Entry 134
+    0x1.4014d8ffaf8aeb3dbd2dcdaae835ffefp-5,
+    0x1.40p-5
+  },
+  { // Entry 135
+    -0x1.4014d8ffaf8aeb3dbd2dcdaae835ffefp-5,
+    -0x1.40p-5
+  },
+  { // Entry 136
+    0x1.59ad15042743d036220b033a43e33a33p-1,
+    0x1.4001c0p-1
+  },
+  { // Entry 137
+    -0x1.59ad15042743d036220b033a43e33a33p-1,
+    -0x1.4001c0p-1
+  },
+  { // Entry 138
+    0x1.5ff1acffefe1ce301daaa4f72cee5d3ap-1,
+    0x1.44e026p-1
+  },
+  { // Entry 139
+    -0x1.5ff1acffefe1ce301daaa4f72cee5d3ap-1,
+    -0x1.44e026p-1
+  },
+  { // Entry 140
+    0x1.6eafa6f9f2763aaeabf6311f88ed3ce1p-1,
+    0x1.502232p-1
+  },
+  { // Entry 141
+    -0x1.6eafa6f9f2763aaeabf6311f88ed3ce1p-1,
+    -0x1.502232p-1
+  },
+  { // Entry 142
+    0x1.7423d70007f86d1c5c92cd2399d33f4cp-1,
+    0x1.543a76p-1
+  },
+  { // Entry 143
+    -0x1.7423d70007f86d1c5c92cd2399d33f4cp-1,
+    -0x1.543a76p-1
+  },
+  { // Entry 144
+    0x1.583dff000083fab9afb8092f68183a9fp-5,
+    0x1.582410p-5
+  },
+  { // Entry 145
+    -0x1.583dff000083fab9afb8092f68183a9fp-5,
+    -0x1.582410p-5
+  },
+  { // Entry 146
+    0x1.8f10290841d65bfd313e02877a87a22ep-1,
+    0x1.67de32p-1
+  },
+  { // Entry 147
+    -0x1.8f10290841d65bfd313e02877a87a22ep-1,
+    -0x1.67de32p-1
+  },
+  { // Entry 148
+    0x1.68ab6efc047d3ad046bd8183ec5c4d46p-4,
+    0x1.68342ap-4
+  },
+  { // Entry 149
+    -0x1.68ab6efc047d3ad046bd8183ec5c4d46p-4,
+    -0x1.68342ap-4
+  },
+  { // Entry 150
+    0x1.958d3affedd648f35110cf87a747e43dp-1,
+    0x1.6c7452p-1
+  },
+  { // Entry 151
+    -0x1.958d3affedd648f35110cf87a747e43dp-1,
+    -0x1.6c7452p-1
+  },
+  { // Entry 152
+    0x1.980272fff139547fa5ad822694b7159fp-1,
+    0x1.6e2d2ep-1
+  },
+  { // Entry 153
+    -0x1.980272fff139547fa5ad822694b7159fp-1,
+    -0x1.6e2d2ep-1
+  },
+  { // Entry 154
+    0x1.8101cefb4b74963084b66c2235b48567p-2,
+    0x1.77fffep-2
+  },
+  { // Entry 155
+    -0x1.8101cefb4b74963084b66c2235b48567p-2,
+    -0x1.77fffep-2
+  },
+  { // Entry 156
+    0x1.800001000001ccccd115f16ac09c2c1dp-10,
+    0x1.7ffff8p-10
+  },
+  { // Entry 157
+    -0x1.800001000001ccccd115f16ac09c2c1dp-10,
+    -0x1.7ffff8p-10
+  },
+  { // Entry 158
+    0x1.81f272fdf7b31c16d324f90717ad9849p-4,
+    0x1.816050p-4
+  },
+  { // Entry 159
+    -0x1.81f272fdf7b31c16d324f90717ad9849p-4,
+    -0x1.816050p-4
+  },
+  { // Entry 160
+    0x1.bce4ceffee2656af653f471f22502ccbp-1,
+    0x1.86fbe6p-1
+  },
+  { // Entry 161
+    -0x1.bce4ceffee2656af653f471f22502ccbp-1,
+    -0x1.86fbe6p-1
+  },
+  { // Entry 162
+    0x1.bd56d0ffebe6415a921b526b10cc09edp-1,
+    0x1.874578p-1
+  },
+  { // Entry 163
+    -0x1.bd56d0ffebe6415a921b526b10cc09edp-1,
+    -0x1.874578p-1
+  },
+  { // Entry 164
+    0x1.bd866affeb83a8ebf25b7e0c9b453091p-1,
+    0x1.87642ap-1
+  },
+  { // Entry 165
+    -0x1.bd866affeb83a8ebf25b7e0c9b453091p-1,
+    -0x1.87642ap-1
+  },
+  { // Entry 166
+    0x1.bdeae8ffefe79fe29894af8440b888bdp-1,
+    0x1.87a4ecp-1
+  },
+  { // Entry 167
+    -0x1.bdeae8ffefe79fe29894af8440b888bdp-1,
+    -0x1.87a4ecp-1
+  },
+  { // Entry 168
+    0x1.c0ffa2ffef29ead18ae6ab673811f725p-1,
+    0x1.899f22p-1
+  },
+  { // Entry 169
+    -0x1.c0ffa2ffef29ead18ae6ab673811f725p-1,
+    -0x1.899f22p-1
+  },
+  { // Entry 170
+    0x1.c257fb0004ddb2849076737a53acb2a8p-1,
+    0x1.8a7afep-1
+  },
+  { // Entry 171
+    -0x1.c257fb0004ddb2849076737a53acb2a8p-1,
+    -0x1.8a7afep-1
+  },
+  { // Entry 172
+    0x1.cc9d2b00116cbcf4625a1bbb3b5b4e78p-1,
+    0x1.90f29cp-1
+  },
+  { // Entry 173
+    -0x1.cc9d2b00116cbcf4625a1bbb3b5b4e78p-1,
+    -0x1.90f29cp-1
+  },
+  { // Entry 174
+    0x1.cdddf100135cb2e8716e639bb3b5249fp-1,
+    0x1.91b9cap-1
+  },
+  { // Entry 175
+    -0x1.cdddf100135cb2e8716e639bb3b5249fp-1,
+    -0x1.91b9cap-1
+  },
+  { // Entry 176
+    0x1.9dd80f000084e0c3df1946aed6d959bfp-7,
+    0x1.9dd53ep-7
+  },
+  { // Entry 177
+    -0x1.9dd80f000084e0c3df1946aed6d959bfp-7,
+    -0x1.9dd53ep-7
+  },
+  { // Entry 178
+    0x1.e5e6ecedd795023dfa3c7dc241f10438p-1,
+    0x1.a02dccp-1
+  },
+  { // Entry 179
+    -0x1.e5e6ecedd795023dfa3c7dc241f10438p-1,
+    -0x1.a02dccp-1
+  },
+  { // Entry 180
+    0x1.aa8363fe050a48c7238e23364d019995p-4,
+    0x1.a9be2ep-4
+  },
+  { // Entry 181
+    -0x1.aa8363fe050a48c7238e23364d019995p-4,
+    -0x1.a9be2ep-4
+  },
+  { // Entry 182
+    0x1.bf42d6021ad1ba9c3760e8c7cccdb6a5p-2,
+    0x1.b12cd0p-2
+  },
+  { // Entry 183
+    -0x1.bf42d6021ad1ba9c3760e8c7cccdb6a5p-2,
+    -0x1.b12cd0p-2
+  },
+  { // Entry 184
+    0x1.c43c42fc467765267b2bce544d70b0edp-2,
+    0x1.b5ad60p-2
+  },
+  { // Entry 185
+    -0x1.c43c42fc467765267b2bce544d70b0edp-2,
+    -0x1.b5ad60p-2
+  },
+  { // Entry 186
+    0x1.1094910e7fcd16c9764b4e1b76b737f6p0,
+    0x1.bfd588p-1
+  },
+  { // Entry 187
+    -0x1.1094910e7fcd16c9764b4e1b76b737f6p0,
+    -0x1.bfd588p-1
+  },
+  { // Entry 188
+    0x1.10c02f0e93e8632e646d67e9015374c9p0,
+    0x1.bfffcap-1
+  },
+  { // Entry 189
+    -0x1.10c02f0e93e8632e646d67e9015374c9p0,
+    -0x1.bfffcap-1
+  },
+  { // Entry 190
+    0x1.10c066d3e6931b76a13df3a689971ba5p0,
+    0x1.c0p-1
+  },
+  { // Entry 191
+    -0x1.10c066d3e6931b76a13df3a689971ba5p0,
+    -0x1.c0p-1
+  },
+  { // Entry 192
+    0x1.c7006b02966adf6a3df6650579596d38p-3,
+    0x1.c3448ep-3
+  },
+  { // Entry 193
+    -0x1.c7006b02966adf6a3df6650579596d38p-3,
+    -0x1.c3448ep-3
+  },
+  { // Entry 194
+    0x1.cced1cffffffead2e67aff2ed34f68fbp-4,
+    0x1.cbf43cp-4
+  },
+  { // Entry 195
+    -0x1.cced1cffffffead2e67aff2ed34f68fbp-4,
+    -0x1.cbf43cp-4
+  },
+  { // Entry 196
+    0x1.d194fd0297f56d654d767460f12bbd70p-3,
+    0x1.cd95p-3
+  },
+  { // Entry 197
+    -0x1.d194fd0297f56d654d767460f12bbd70p-3,
+    -0x1.cd95p-3
+  },
+  { // Entry 198
+    0x1.2d46e9003819962ec438e47416ebe356p0,
+    0x1.d8c8c0p-1
+  },
+  { // Entry 199
+    -0x1.2d46e9003819962ec438e47416ebe356p0,
+    -0x1.d8c8c0p-1
+  },
+  { // Entry 200
+    0x1.de1b0901f98eac7553f0e8195ad077fcp-3,
+    0x1.d9c654p-3
+  },
+  { // Entry 201
+    -0x1.de1b0901f98eac7553f0e8195ad077fcp-3,
+    -0x1.d9c654p-3
+  },
+  { // Entry 202
+    0x1.3722d2feb24c7d9ccc847f53a3a4ee80p0,
+    0x1.e0p-1
+  },
+  { // Entry 203
+    -0x1.3722d2feb24c7d9ccc847f53a3a4ee80p0,
+    -0x1.e0p-1
+  },
+  { // Entry 204
+    0x1.e481c0fce71340393796f56e26562981p-3,
+    0x1.e0p-3
+  },
+  { // Entry 205
+    -0x1.e481c0fce71340393796f56e26562981p-3,
+    -0x1.e0p-3
+  },
+  { // Entry 206
+    0x1.e2579e00010e16a23389c5d2d04cb016p-6,
+    0x1.e245c8p-6
+  },
+  { // Entry 207
+    -0x1.e2579e00010e16a23389c5d2d04cb016p-6,
+    -0x1.e245c8p-6
+  },
+  { // Entry 208
+    0x1.ebf1570082616eec6d62ca4bbe98a80ep-3,
+    0x1.e739c0p-3
+  },
+  { // Entry 209
+    -0x1.ebf1570082616eec6d62ca4bbe98a80ep-3,
+    -0x1.e739c0p-3
+  },
+  { // Entry 210
+    0x1.ec0b2efe45213aa2a5913be53fba2675p-3,
+    0x1.e752dap-3
+  },
+  { // Entry 211
+    -0x1.ec0b2efe45213aa2a5913be53fba2675p-3,
+    -0x1.e752dap-3
+  },
+  { // Entry 212
+    0x1.ed3b16ffff7cb9709229934808bd086bp-3,
+    0x1.e87a02p-3
+  },
+  { // Entry 213
+    -0x1.ed3b16ffff7cb9709229934808bd086bp-3,
+    -0x1.e87a02p-3
+  },
+  { // Entry 214
+    0x1.ffeaecffff817ca1af5df7aff71f98c6p-3,
+    0x1.fa9a82p-3
+  },
+  { // Entry 215
+    -0x1.ffeaecffff817ca1af5df7aff71f98c6p-3,
+    -0x1.fa9a82p-3
+  },
+  { // Entry 216
+    0x1.7d60c2f47c8167d9affdf68d4fdbc5d9p0,
+    0x1.fe51d8p-1
+  },
+  { // Entry 217
+    -0x1.7d60c2f47c8167d9affdf68d4fdbc5d9p0,
+    -0x1.fe51d8p-1
+  },
+  { // Entry 218
+    0x1.901f34fea94ed8bf7d5ce1e00256bec5p0,
+    0x1.fffbfep-1
+  },
+  { // Entry 219
+    -0x1.901f34fea94ed8bf7d5ce1e00256bec5p0,
+    -0x1.fffbfep-1
+  },
+  { // Entry 220
+    0x1.00ab7efcdc7e3da7637e617c6307c133p-3,
+    0x1.ffff3ep-4
+  },
+  { // Entry 221
+    -0x1.00ab7efcdc7e3da7637e617c6307c133p-3,
+    -0x1.ffff3ep-4
+  },
+  { // Entry 222
+    0x1.0c15110930220c79eb624ae419c8836cp-1,
+    0x1.ffffe0p-2
+  },
+  { // Entry 223
+    -0x1.0c15110930220c79eb624ae419c8836cp-1,
+    -0x1.ffffe0p-2
+  },
+  { // Entry 224
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.p-1
+  },
+  { // Entry 225
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.p-1
+  },
+  { // Entry 226
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.p-1
+  },
+  { // Entry 227
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.p-1
+  },
+  { // Entry 228
+    0x1.4a1ce5633729b4831c0f2de50b199161p-1,
+    0x1.33b646p-1
+  },
+  { // Entry 229
+    -0x1.4a1ce5633729b4831c0f2de50b199161p-1,
+    -0x1.33b646p-1
+  },
+  { // Entry 230
+    0x1.921fb4b1402384698984b09966f96de6p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 231
+    -0x1.921fb4b1402384698984b09966f96de6p-1,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 232
+    0x1.921fb4b1402384698984b09966f96de6p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 233
+    -0x1.921fb4b1402384698984b09966f96de6p-1,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 234
+    -0x1.b235315c680dc081583db360d5e1fa18p-1,
+    -0x1.80p-1
+  },
+  { // Entry 235
+    0x1.b235315c680dc081583db360d5e1fa18p-1,
+    0x1.80p-1
+  },
+  { // Entry 236
+    0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    0x1.bb67aep-1
+  },
+  { // Entry 237
+    -0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    -0x1.bb67aep-1
+  },
+  { // Entry 238
+    0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    0x1.bb67aep-1
+  },
+  { // Entry 239
+    -0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    -0x1.bb67aep-1
+  },
+  { // Entry 240
+    0x1.9080f0a242e636c8b158046e622390bep0,
+    0x1.fffd60p-1
+  },
+  { // Entry 241
+    -0x1.9080f0a242e636c8b158046e622390bep0,
+    -0x1.fffd60p-1
+  },
+  { // Entry 242
+    0x1.p-82,
+    0x1.p-82
+  },
+  { // Entry 243
+    -0x1.p-82,
+    -0x1.p-82
+  },
+  { // Entry 244
+    0x1.0000000000000000000000000000000ap-61,
+    0x1.p-61
+  },
+  { // Entry 245
+    -0x1.0000000000000000000000000000000ap-61,
+    -0x1.p-61
+  },
+  { // Entry 246
+    0x1.0000000000000000000002aaaaaaaaaap-42,
+    0x1.p-42
+  },
+  { // Entry 247
+    -0x1.0000000000000000000002aaaaaaaaaap-42,
+    -0x1.p-42
+  },
+  { // Entry 248
+    0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    0x1.p-22
+  },
+  { // Entry 249
+    -0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    -0x1.p-22
+  },
+  { // Entry 250
+    0x1.6a0a022b840dccf66e0b6ec9289f36b5p-9,
+    0x1.6a09e4p-9
+  },
+  { // Entry 251
+    -0x1.6a0a022b840dccf66e0b6ec9289f36b5p-9,
+    -0x1.6a09e4p-9
+  },
+  { // Entry 252
+    0x1.6a0a042b848dcd256f98664210471010p-9,
+    0x1.6a09e6p-9
+  },
+  { // Entry 253
+    -0x1.6a0a042b848dcd256f98664210471010p-9,
+    -0x1.6a09e6p-9
+  },
+  { // Entry 254
+    0x1.6a0a062b850dcd55db3053430d8801dep-9,
+    0x1.6a09e8p-9
+  },
+  { // Entry 255
+    -0x1.6a0a062b850dcd55db3053430d8801dep-9,
+    -0x1.6a09e8p-9
+  },
+  { // Entry 256
+    0x1.6a0a5cae61ad17ce4db740441bff4264p-8,
+    0x1.6a09e4p-8
+  },
+  { // Entry 257
+    -0x1.6a0a5cae61ad17ce4db740441bff4264p-8,
+    -0x1.6a09e4p-8
+  },
+  { // Entry 258
+    0x1.6a0a5eae63ad1aca589233f046ef6f98p-8,
+    0x1.6a09e6p-8
+  },
+  { // Entry 259
+    -0x1.6a0a5eae63ad1aca589233f046ef6f98p-8,
+    -0x1.6a09e6p-8
+  },
+  { // Entry 260
+    0x1.6a0a60ae65ad1dcc0ba5b83d9dac8608p-8,
+    0x1.6a09e8p-8
+  },
+  { // Entry 261
+    -0x1.6a0a60ae65ad1dcc0ba5b83d9dac8608p-8,
+    -0x1.6a09e8p-8
+  },
+  { // Entry 262
+    0x1.6a0bc6be9e29599e77d42647891c84e9p-7,
+    0x1.6a09e4p-7
+  },
+  { // Entry 263
+    -0x1.6a0bc6be9e29599e77d42647891c84e9p-7,
+    -0x1.6a09e4p-7
+  },
+  { // Entry 264
+    0x1.6a0bc8bea629898fceb95fb04958a217p-7,
+    0x1.6a09e6p-7
+  },
+  { // Entry 265
+    -0x1.6a0bc8bea629898fceb95fb04958a217p-7,
+    -0x1.6a09e6p-7
+  },
+  { // Entry 266
+    0x1.6a0bcabeae29b997c74c8b209ada2625p-7,
+    0x1.6a09e8p-7
+  },
+  { // Entry 267
+    -0x1.6a0bcabeae29b997c74c8b209ada2625p-7,
+    -0x1.6a09e8p-7
+  },
+  { // Entry 268
+    0x1.6a116f4bf5a44da64d89fa35a6ebac04p-6,
+    0x1.6a09e4p-6
+  },
+  { // Entry 269
+    -0x1.6a116f4bf5a44da64d89fa35a6ebac04p-6,
+    -0x1.6a09e4p-6
+  },
+  { // Entry 270
+    0x1.6a11714c15a74db6a8c862c053ff5c47p-6,
+    0x1.6a09e6p-6
+  },
+  { // Entry 271
+    -0x1.6a11714c15a74db6a8c862c053ff5c47p-6,
+    -0x1.6a09e6p-6
+  },
+  { // Entry 272
+    0x1.6a11734c35aa4e21977b693edb0fbfedp-6,
+    0x1.6a09e8p-6
+  },
+  { // Entry 273
+    -0x1.6a11734c35aa4e21977b693edb0fbfedp-6,
+    -0x1.6a09e8p-6
+  },
+  { // Entry 274
+    0x1.6a28164912c9ea8249262954f1ae1a22p-5,
+    0x1.6a09e4p-5
+  },
+  { // Entry 275
+    -0x1.6a28164912c9ea8249262954f1ae1a22p-5,
+    -0x1.6a09e4p-5
+  },
+  { // Entry 276
+    0x1.6a28184992f9fd8bc772026d91605dcap-5,
+    0x1.6a09e6p-5
+  },
+  { // Entry 277
+    -0x1.6a28184992f9fd8bc772026d91605dcap-5,
+    -0x1.6a09e6p-5
+  },
+  { // Entry 278
+    0x1.6a281a4a132a12005fd55f43d2bf81a6p-5,
+    0x1.6a09e8p-5
+  },
+  { // Entry 279
+    -0x1.6a281a4a132a12005fd55f43d2bf81a6p-5,
+    -0x1.6a09e8p-5
+  },
+  { // Entry 280
+    0x1.6a82ff139c02609620ef4694ee627b57p-4,
+    0x1.6a09e4p-4
+  },
+  { // Entry 281
+    -0x1.6a82ff139c02609620ef4694ee627b57p-4,
+    -0x1.6a09e4p-4
+  },
+  { // Entry 282
+    0x1.6a8301159f07655fd879480b5cbcf5cbp-4,
+    0x1.6a09e6p-4
+  },
+  { // Entry 283
+    -0x1.6a8301159f07655fd879480b5cbcf5cbp-4,
+    -0x1.6a09e6p-4
+  },
+  { // Entry 284
+    0x1.6a830317a20c6fe2dae30fe5babe63f8p-4,
+    0x1.6a09e8p-4
+  },
+  { // Entry 285
+    -0x1.6a830317a20c6fe2dae30fe5babe63f8p-4,
+    -0x1.6a09e8p-4
+  },
+  { // Entry 286
+    0x1.6bf386a4733dc9584317633d590964f4p-3,
+    0x1.6a09e4p-3
+  },
+  { // Entry 287
+    -0x1.6bf386a4733dc9584317633d590964f4p-3,
+    -0x1.6a09e4p-3
+  },
+  { // Entry 288
+    0x1.6bf388aca486b9850c50cf9f457667f2p-3,
+    0x1.6a09e6p-3
+  },
+  { // Entry 289
+    -0x1.6bf388aca486b9850c50cf9f457667f2p-3,
+    -0x1.6a09e6p-3
+  },
+  { // Entry 290
+    0x1.6bf38ab4d5cfc16cfd39ac77e07b6048p-3,
+    0x1.6a09e8p-3
+  },
+  { // Entry 291
+    -0x1.6bf38ab4d5cfc16cfd39ac77e07b6048p-3,
+    -0x1.6a09e8p-3
+  },
+  { // Entry 292
+    0x1.720a3699a2940f93106e8a7ed729b32ap-2,
+    0x1.6a09e4p-2
+  },
+  { // Entry 293
+    -0x1.720a3699a2940f93106e8a7ed729b32ap-2,
+    -0x1.6a09e4p-2
+  },
+  { // Entry 294
+    0x1.720a38bcfc706dd98b8488a3c1523d31p-2,
+    0x1.6a09e6p-2
+  },
+  { // Entry 295
+    -0x1.720a38bcfc706dd98b8488a3c1523d31p-2,
+    -0x1.6a09e6p-2
+  },
+  { // Entry 296
+    0x1.720a3ae0564d3ab4ea8b987564d202e2p-2,
+    0x1.6a09e8p-2
+  },
+  { // Entry 297
+    -0x1.720a3ae0564d3ab4ea8b987564d202e2p-2,
+    -0x1.6a09e8p-2
+  },
+  { // Entry 298
+    0x1.bb67e36d07936cca0afecdde8822ac92p-9,
+    0x1.bb67acp-9
+  },
+  { // Entry 299
+    -0x1.bb67e36d07936cca0afecdde8822ac92p-9,
+    -0x1.bb67acp-9
+  },
+  { // Entry 300
+    0x1.bb67e56d08536d34b9eb8cded8ea25b3p-9,
+    0x1.bb67aep-9
+  },
+  { // Entry 301
+    -0x1.bb67e56d08536d34b9eb8cded8ea25b3p-9,
+    -0x1.bb67aep-9
+  },
+  { // Entry 302
+    0x1.bb67e76d09136da12441ecb59fee2493p-9,
+    0x1.bb67b0p-9
+  },
+  { // Entry 303
+    -0x1.bb67e76d09136da12441ecb59fee2493p-9,
+    -0x1.bb67b0p-9
+  },
+  { // Entry 304
+    0x1.bb6889b4fec8ebcca61c46f455ae5d4fp-8,
+    0x1.bb67acp-8
+  },
+  { // Entry 305
+    -0x1.bb6889b4fec8ebcca61c46f455ae5d4fp-8,
+    -0x1.bb67acp-8
+  },
+  { // Entry 306
+    0x1.bb688bb501c8f287718fa43e6142902dp-8,
+    0x1.bb67aep-8
+  },
+  { // Entry 307
+    -0x1.bb688bb501c8f287718fa43e6142902dp-8,
+    -0x1.bb67aep-8
+  },
+  { // Entry 308
+    0x1.bb688db504c8f9492ac0e747817f22a8p-8,
+    0x1.bb67b0p-8
+  },
+  { // Entry 309
+    -0x1.bb688db504c8f9492ac0e747817f22a8p-8,
+    -0x1.bb67b0p-8
+  },
+  { // Entry 310
+    0x1.bb6b22e203353028e079513a11cbbab3p-7,
+    0x1.bb67acp-7
+  },
+  { // Entry 311
+    -0x1.bb6b22e203353028e079513a11cbbab3p-7,
+    -0x1.bb67acp-7
+  },
+  { // Entry 312
+    0x1.bb6b24e20f359c1801d5ae434ae75b2dp-7,
+    0x1.bb67aep-7
+  },
+  { // Entry 313
+    -0x1.bb6b24e20f359c1801d5ae434ae75b2dp-7,
+    -0x1.bb67aep-7
+  },
+  { // Entry 314
+    0x1.bb6b26e21b360822db9fdd2b265541b5p-7,
+    0x1.bb67b0p-7
+  },
+  { // Entry 315
+    -0x1.bb6b26e21b360822db9fdd2b265541b5p-7,
+    -0x1.bb67b0p-7
+  },
+  { // Entry 316
+    0x1.bb758868a56d6f7d82a704d6da78e2fdp-6,
+    0x1.bb67acp-6
+  },
+  { // Entry 317
+    -0x1.bb758868a56d6f7d82a704d6da78e2fdp-6,
+    -0x1.bb67acp-6
+  },
+  { // Entry 318
+    0x1.bb758a68d574303741eb85efe34dac9ap-6,
+    0x1.bb67aep-6
+  },
+  { // Entry 319
+    -0x1.bb758a68d574303741eb85efe34dac9ap-6,
+    -0x1.bb67aep-6
+  },
+  { // Entry 320
+    0x1.bb758c69057af15ffa5021690b86d6e5p-6,
+    0x1.bb67b0p-6
+  },
+  { // Entry 321
+    -0x1.bb758c69057af15ffa5021690b86d6e5p-6,
+    -0x1.bb67b0p-6
+  },
+  { // Entry 322
+    0x1.bb9f2bb2025df5b5a01f890e267acbf6p-5,
+    0x1.bb67acp-5
+  },
+  { // Entry 323
+    -0x1.bb9f2bb2025df5b5a01f890e267acbf6p-5,
+    -0x1.bb67acp-5
+  },
+  { // Entry 324
+    0x1.bb9f2db2c2ca380f37f00e10c34f3f4ep-5,
+    0x1.bb67aep-5
+  },
+  { // Entry 325
+    -0x1.bb9f2db2c2ca380f37f00e10c34f3f4ep-5,
+    -0x1.bb67aep-5
+  },
+  { // Entry 326
+    0x1.bb9f2fb383367c262c18778b11ce72cap-5,
+    0x1.bb67b0p-5
+  },
+  { // Entry 327
+    -0x1.bb9f2fb383367c262c18778b11ce72cap-5,
+    -0x1.bb67b0p-5
+  },
+  { // Entry 328
+    0x1.bc468d3a974cd6c6f353f238e6ee9635p-4,
+    0x1.bb67acp-4
+  },
+  { // Entry 329
+    -0x1.bc468d3a974cd6c6f353f238e6ee9635p-4,
+    -0x1.bb67acp-4
+  },
+  { // Entry 330
+    0x1.bc468f3d9e1dde2e7296f0680c8b5cf1p-4,
+    0x1.bb67aep-4
+  },
+  { // Entry 331
+    -0x1.bc468f3d9e1dde2e7296f0680c8b5cf1p-4,
+    -0x1.bb67aep-4
+  },
+  { // Entry 332
+    0x1.bc469140a4eeeca3346497225181070ep-4,
+    0x1.bb67b0p-4
+  },
+  { // Entry 333
+    -0x1.bc469140a4eeeca3346497225181070ep-4,
+    -0x1.bb67b0p-4
+  },
+  { // Entry 334
+    0x1.bef1ba1b54f2e517608d497eda81f13ep-3,
+    0x1.bb67acp-3
+  },
+  { // Entry 335
+    -0x1.bef1ba1b54f2e517608d497eda81f13ep-3,
+    -0x1.bb67acp-3
+  },
+  { // Entry 336
+    0x1.bef1bc27c5590e551667836f44b8240bp-3,
+    0x1.bb67aep-3
+  },
+  { // Entry 337
+    -0x1.bef1bc27c5590e551667836f44b8240bp-3,
+    -0x1.bb67aep-3
+  },
+  { // Entry 338
+    0x1.bef1be3435bf555b062c6b933968f858p-3,
+    0x1.bb67b0p-3
+  },
+  { // Entry 339
+    -0x1.bef1be3435bf555b062c6b933968f858p-3,
+    -0x1.bb67b0p-3
+  },
+  { // Entry 340
+    0x1.ca94909f751f880a004b5b2d1358c7d8p-2,
+    0x1.bb67acp-2
+  },
+  { // Entry 341
+    -0x1.ca94909f751f880a004b5b2d1358c7d8p-2,
+    -0x1.bb67acp-2
+  },
+  { // Entry 342
+    0x1.ca9492d778731c60ad6f2198bec11118p-2,
+    0x1.bb67aep-2
+  },
+  { // Entry 343
+    -0x1.ca9492d778731c60ad6f2198bec11118p-2,
+    -0x1.bb67aep-2
+  },
+  { // Entry 344
+    0x1.ca94950f7bc7481303f6206eb55e6063p-2,
+    0x1.bb67b0p-2
+  },
+  { // Entry 345
+    -0x1.ca94950f7bc7481303f6206eb55e6063p-2,
+    -0x1.bb67b0p-2
+  },
+  { // Entry 346
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 347
+    -0x1.fffff8p-128,
+    -0x1.fffff8p-128
+  },
+  { // Entry 348
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 349
+    -0x1.p-127,
+    -0x1.p-127
+  },
+  { // Entry 350
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 351
+    -0x1.000004p-127,
+    -0x1.000004p-127
+  },
+  { // Entry 352
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 353
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 354
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 355
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 356
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 357
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 358
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 359
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 360
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 361
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 362
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 363
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 364
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 365
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 366
+    0.0,
+    0.0
+  },
+  { // Entry 367
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 368
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 369
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 370
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 371
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 372
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 373
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 374
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 375
+    0x1.fffffe0000000005555545555565557bp-31,
+    0x1.fffffep-31
+  },
+  { // Entry 376
+    -0x1.fffffe0000000005555545555565557bp-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 377
+    0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    0x1.p-30
+  },
+  { // Entry 378
+    -0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    -0x1.p-30
+  },
+  { // Entry 379
+    0x1.0000020000000002aaaabaaaaacaaabdp-30,
+    0x1.000002p-30
+  },
+  { // Entry 380
+    -0x1.0000020000000002aaaabaaaaacaaabdp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 381
+    0x1.fffffe0000000155555155555957bbbap-28,
+    0x1.fffffep-28
+  },
+  { // Entry 382
+    -0x1.fffffe0000000155555155555957bbbap-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 383
+    0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    0x1.p-27
+  },
+  { // Entry 384
+    -0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    -0x1.p-27
+  },
+  { // Entry 385
+    0x1.00000200000000aaaaaeaaaab2abdde3p-27,
+    0x1.000002p-27
+  },
+  { // Entry 386
+    -0x1.00000200000000aaaaaeaaaab2abdde3p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 387
+    0x1.fffffe00000015555515555597bbbb9ap-26,
+    0x1.fffffep-26
+  },
+  { // Entry 388
+    -0x1.fffffe00000015555515555597bbbb9ap-26,
+    -0x1.fffffep-26
+  },
+  { // Entry 389
+    0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    0x1.p-25
+  },
+  { // Entry 390
+    -0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    -0x1.p-25
+  },
+  { // Entry 391
+    0x1.0000020000000aaaaaeaaaab2bddde3fp-25,
+    0x1.000002p-25
+  },
+  { // Entry 392
+    -0x1.0000020000000aaaaaeaaaab2bddde3fp-25,
+    -0x1.000002p-25
+  },
+  { // Entry 393
+    0x1.fffffe055555457bbbcafd296eb7e3aap-15,
+    0x1.fffffep-15
+  },
+  { // Entry 394
+    -0x1.fffffe055555457bbbcafd296eb7e3aap-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 395
+    0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    0x1.p-14
+  },
+  { // Entry 396
+    -0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    -0x1.p-14
+  },
+  { // Entry 397
+    0x1.00000202aaaababdddfe9e94d1aaf1dbp-14,
+    0x1.000002p-14
+  },
+  { // Entry 398
+    -0x1.00000202aaaababdddfe9e94d1aaf1dbp-14,
+    -0x1.000002p-14
+  },
+  { // Entry 399
+    0x1.0002a9bdd69461160d4c75451704a3b7p-6,
+    0x1.fffffep-7
+  },
+  { // Entry 400
+    -0x1.0002a9bdd69461160d4c75451704a3b7p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 401
+    0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    0x1.p-6
+  },
+  { // Entry 402
+    -0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    -0x1.p-6
+  },
+  { // Entry 403
+    0x1.0002acbdee95813d105ec61fcd6ae2fap-6,
+    0x1.000002p-6
+  },
+  { // Entry 404
+    -0x1.0002acbdee95813d105ec61fcd6ae2fap-6,
+    -0x1.000002p-6
+  },
+  { // Entry 405
+    0x1.000aaaddeb9680b69f39448305c87741p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 406
+    -0x1.000aaaddeb9680b69f39448305c87741p-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 407
+    0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    0x1.p-5
+  },
+  { // Entry 408
+    -0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    -0x1.p-5
+  },
+  { // Entry 409
+    0x1.000aadde4ba884d79574330eaeb7d132p-5,
+    0x1.000002p-5
+  },
+  { // Entry 410
+    -0x1.000aadde4ba884d79574330eaeb7d132p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 411
+    0x1.002abce8d301449b3a6e1375645eb853p-4,
+    0x1.fffffep-5
+  },
+  { // Entry 412
+    -0x1.002abce8d301449b3a6e1375645eb853p-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 413
+    0x1.002abde953619460b8b71b77bb495f57p-4,
+    0x1.p-4
+  },
+  { // Entry 414
+    -0x1.002abde953619460b8b71b77bb495f57p-4,
+    -0x1.p-4
+  },
+  { // Entry 415
+    0x1.002abfea542236f03af0c770006184e0p-4,
+    0x1.000002p-4
+  },
+  { // Entry 416
+    -0x1.002abfea542236f03af0c770006184e0p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 417
+    0x1.00abdfbf23cd9bcb0908b67c29bd1d84p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 418
+    -0x1.00abdfbf23cd9bcb0908b67c29bd1d84p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 419
+    0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    0x1.p-3
+  },
+  { // Entry 420
+    -0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    -0x1.p-3
+  },
+  { // Entry 421
+    0x1.00abe2c5360a76eebd374087e13d0778p-3,
+    0x1.000002p-3
+  },
+  { // Entry 422
+    -0x1.00abe2c5360a76eebd374087e13d0778p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 423
+    0x1.02be9bd85332ad669015b48f1281cd8ep-2,
+    0x1.fffffep-3
+  },
+  { // Entry 424
+    -0x1.02be9bd85332ad669015b48f1281cd8ep-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 425
+    0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    0x1.p-2
+  },
+  { // Entry 426
+    -0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    -0x1.p-2
+  },
+  { // Entry 427
+    0x1.02be9ef183114fc560988306f887ac74p-2,
+    0x1.000002p-2
+  },
+  { // Entry 428
+    -0x1.02be9ef183114fc560988306f887ac74p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 429
+    0x1.0c15225b3cc2308792870438ebfd5814p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 430
+    -0x1.0c15225b3cc2308792870438ebfd5814p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 431
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.p-1
+  },
+  { // Entry 432
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.p-1
+  },
+  { // Entry 433
+    0x1.0c1525d20c1fcf5e632996922f28dbf4p-1,
+    0x1.000002p-1
+  },
+  { // Entry 434
+    -0x1.0c1525d20c1fcf5e632996922f28dbf4p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 435
+    0x1.920914a5da6f90beac755cf81add3707p0,
+    0x1.fffffep-1
+  },
+  { // Entry 436
+    -0x1.920914a5da6f90beac755cf81add3707p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 437
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p0
+  },
+  { // Entry 438
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p0
+  },
+  { // Entry 439
+    0x1.921faf0918938469613a406686d325fbp-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 440
+    -0x1.921faf0918938469613a406686d325fbp-1,
+    -0x1.6a09e2p-1
+  },
+  { // Entry 441
+    0x1.921fb1dd2c59846982fbd21e12b62957p-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 442
+    -0x1.921fb1dd2c59846982fbd21e12b62957p-1,
+    -0x1.6a09e4p-1
+  },
+  { // Entry 443
+    0x1.921fb4b1402384698984b09966f96de6p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 444
+    -0x1.921fb4b1402384698984b09966f96de6p-1,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 445
+    0x1.921fb78553f184698b7579b807754fb1p-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 446
+    -0x1.921fb78553f184698b7579b807754fb1p-1,
+    -0x1.6a09e8p-1
+  },
+  { // Entry 447
+    0x1.921fba5967c384699f6ecc197800562dp-1,
+    0x1.6a09eap-1
+  },
+  { // Entry 448
+    -0x1.921fba5967c384699f6ecc197800562dp-1,
+    -0x1.6a09eap-1
+  },
+  { // Entry 449
+    0x1.0c151efd527d65a2625f3b65877af5c1p0,
+    0x1.bb67aap-1
+  },
+  { // Entry 450
+    -0x1.0c151efd527d65a2625f3b65877af5c1p0,
+    -0x1.bb67aap-1
+  },
+  { // Entry 451
+    0x1.0c1520fd527132af0e514af5d776d861p0,
+    0x1.bb67acp-1
+  },
+  { // Entry 452
+    -0x1.0c1520fd527132af0e514af5d776d861p0,
+    -0x1.bb67acp-1
+  },
+  { // Entry 453
+    0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    0x1.bb67aep-1
+  },
+  { // Entry 454
+    -0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    -0x1.bb67aep-1
+  },
+  { // Entry 455
+    0x1.0c1524fd526d95a3b5e16f8bb09d2428p0,
+    0x1.bb67b0p-1
+  },
+  { // Entry 456
+    -0x1.0c1524fd526d95a3b5e16f8bb09d2428p0,
+    -0x1.bb67b0p-1
+  },
+  { // Entry 457
+    0x1.0c1526fd52762b8c517f8184b870bf6dp0,
+    0x1.bb67b2p-1
+  },
+  { // Entry 458
+    -0x1.0c1526fd52762b8c517f8184b870bf6dp0,
+    -0x1.bb67b2p-1
+  },
+  { // Entry 459
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p0
+  },
+  { // Entry 460
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p0
+  },
+  { // Entry 461
+    0x1.920914a5da6f90beac755cf81add3707p0,
+    0x1.fffffep-1
+  },
+  { // Entry 462
+    -0x1.920914a5da6f90beac755cf81add3707p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 463
+    0x1.ce8277f32da2c5ee7ea325793fd7ccd1p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 464
+    -0x1.ce8277f32da2c5ee7ea325793fd7ccd1p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 465
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 466
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 467
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 468
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 469
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 470
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 471
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 472
+    -0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 473
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 474
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 475
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 476
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 477
+    0.0,
+    0.0f
+  },
+  { // Entry 478
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/asinh_intel_data.h b/tests/math_data/asinh_intel_data.h
new file mode 100644
index 0000000..98eff86
--- /dev/null
+++ b/tests/math_data/asinh_intel_data.h
@@ -0,0 +1,2042 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_asinh_intel_data[] = {
+  { // Entry 0
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 2
+    -0x1.f2eba5eb5b53c803301c0f8279efd38cp-2,
+    -0x1.0372ae11c5a53p-1
+  },
+  { // Entry 3
+    0x1.f2eba5eb5b53c803301c0f8279efd38cp-2,
+    0x1.0372ae11c5a53p-1
+  },
+  { // Entry 4
+    -0x1.f8df023d2021bc3d400b315a5494d006p-2,
+    -0x1.06c9b26c9b268p-1
+  },
+  { // Entry 5
+    0x1.f8df023d2021bc3d400b315a5494d006p-2,
+    0x1.06c9b26c9b268p-1
+  },
+  { // Entry 6
+    -0x1.fb25d3a760a193706b3228440829ee8fp-2,
+    -0x1.08116a27c1078p-1
+  },
+  { // Entry 7
+    0x1.fb25d3a760a193706b3228440829ee8fp-2,
+    0x1.08116a27c1078p-1
+  },
+  { // Entry 8
+    -0x1.fec35b3e7215a3724feecdb2518899cep-2,
+    -0x1.0a1a86a1a87p-1
+  },
+  { // Entry 9
+    0x1.fec35b3e7215a3724feecdb2518899cep-2,
+    0x1.0a1a86a1a87p-1
+  },
+  { // Entry 10
+    -0x1.ff951bb7ee7f7a1d9dcf30fb1f47bad6p-2,
+    -0x1.0a90be1c15949p-1
+  },
+  { // Entry 11
+    0x1.ff951bb7ee7f7a1d9dcf30fb1f47bad6p-2,
+    0x1.0a90be1c15949p-1
+  },
+  { // Entry 12
+    -0x1.3b60a4460a2d2800883eb5ded3be4df0p2,
+    -0x1.1421084210848p6
+  },
+  { // Entry 13
+    0x1.3b60a4460a2d2800883eb5ded3be4df0p2,
+    0x1.1421084210848p6
+  },
+  { // Entry 14
+    -0x1.138aeab017488804b338e9ac099ab687p-2,
+    -0x1.16e1400db88a8p-2
+  },
+  { // Entry 15
+    0x1.138aeab017488804b338e9ac099ab687p-2,
+    0x1.16e1400db88a8p-2
+  },
+  { // Entry 16
+    -0x1.fdbacdc8a66437ff0c93d9767a45cb0cp-1,
+    -0x1.2b1a532971568p0
+  },
+  { // Entry 17
+    0x1.fdbacdc8a66437ff0c93d9767a45cb0cp-1,
+    0x1.2b1a532971568p0
+  },
+  { // Entry 18
+    -0x1.24501dcbce83f8126c61bacbb8a27cedp1,
+    -0x1.36c03904a8e4ep2
+  },
+  { // Entry 19
+    0x1.24501dcbce83f8126c61bacbb8a27cedp1,
+    0x1.36c03904a8e4ep2
+  },
+  { // Entry 20
+    -0x1.5d36f22f9d342ff8da6ba2b17b474db8p-3,
+    -0x1.5ee8cb3c781c0p-3
+  },
+  { // Entry 21
+    0x1.5d36f22f9d342ff8da6ba2b17b474db8p-3,
+    0x1.5ee8cb3c781c0p-3
+  },
+  { // Entry 22
+    -0x1.52b6672b024fe000ae144fc9afaeaf51p-1,
+    -0x1.6bf6fdbf6fd24p-1
+  },
+  { // Entry 23
+    0x1.52b6672b024fe000ae144fc9afaeaf51p-1,
+    0x1.6bf6fdbf6fd24p-1
+  },
+  { // Entry 24
+    -0x1.3993d63acc4ba8035d2b420b1158f993p1,
+    -0x1.70000000000ffp2
+  },
+  { // Entry 25
+    0x1.3993d63acc4ba8035d2b420b1158f993p1,
+    0x1.70000000000ffp2
+  },
+  { // Entry 26
+    -0x1.97580351103362867acce504fee4245dp-9,
+    -0x1.97582e4a115p-9
+  },
+  { // Entry 27
+    0x1.97580351103362867acce504fee4245dp-9,
+    0x1.97582e4a115p-9
+  },
+  { // Entry 28
+    -0x1.97b3da2c985dc7e04ebe6b0d62a5513ap-3,
+    -0x1.9a6699a6699b0p-3
+  },
+  { // Entry 29
+    0x1.97b3da2c985dc7e04ebe6b0d62a5513ap-3,
+    0x1.9a6699a6699b0p-3
+  },
+  { // Entry 30
+    -0x1.92a338ada07c1b531a9867c9a235d502p-2,
+    -0x1.9d17d9fcad768p-2
+  },
+  { // Entry 31
+    0x1.92a338ada07c1b531a9867c9a235d502p-2,
+    0x1.9d17d9fcad768p-2
+  },
+  { // Entry 32
+    -0x1.4c76858b980217a240a5c74a2588e630p1,
+    -0x1.ab52dd08f34f4p2
+  },
+  { // Entry 33
+    0x1.4c76858b980217a240a5c74a2588e630p1,
+    0x1.ab52dd08f34f4p2
+  },
+  { // Entry 34
+    -0x1.c06f36b1bdfbf6638d2d6cdc9bc63083p-8,
+    -0x1.c0701c0701ep-8
+  },
+  { // Entry 35
+    0x1.c06f36b1bdfbf6638d2d6cdc9bc63083p-8,
+    0x1.c0701c0701ep-8
+  },
+  { // Entry 36
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 37
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 38
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 39
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 40
+    0x1.419ecb712c480f8b5decb58386dedd9dp4,
+    0x1.0000000000003p28
+  },
+  { // Entry 41
+    -0x1.419ecb712c480f8b5decb58386dedd9dp4,
+    -0x1.0000000000003p28
+  },
+  { // Entry 42
+    0x1.ecc2caec516161a5e8aa442a5078d5cfp-2,
+    0x1.0000000000007p-1
+  },
+  { // Entry 43
+    -0x1.ecc2caec516161a5e8aa442a5078d5cfp-2,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 44
+    0x1.facfb2399e674ffa702bb3c88b513063p-3,
+    0x1.0000000000020p-2
+  },
+  { // Entry 45
+    -0x1.facfb2399e674ffa702bb3c88b513063p-3,
+    -0x1.0000000000020p-2
+  },
+  { // Entry 46
+    0x1.fffaaad10fbf68e32f80487342e56091p-7,
+    0x1.00000000000e0p-6
+  },
+  { // Entry 47
+    -0x1.fffaaad10fbf68e32f80487342e56091p-7,
+    -0x1.00000000000e0p-6
+  },
+  { // Entry 48
+    0x1.ffeaad10b5eade934d677b23c2b7f1f1p-6,
+    0x1.00000000001c0p-5
+  },
+  { // Entry 49
+    -0x1.ffeaad10b5eade934d677b23c2b7f1f1p-6,
+    -0x1.00000000001c0p-5
+  },
+  { // Entry 50
+    0x1.c3436617a1808a74e9cb44e078522310p-1,
+    0x1.00000000030p0
+  },
+  { // Entry 51
+    -0x1.c3436617a1808a74e9cb44e078522310p-1,
+    -0x1.00000000030p0
+  },
+  { // Entry 52
+    0x1.ffffeaaacb7b0ce864203f798c0ce39dp-10,
+    0x1.000000000f350p-9
+  },
+  { // Entry 53
+    -0x1.ffffeaaacb7b0ce864203f798c0ce39dp-10,
+    -0x1.000000000f350p-9
+  },
+  { // Entry 54
+    0x1.ffffeaaacd310cb1a42a8370b88e1d60p-10,
+    0x1.00000000101p-9
+  },
+  { // Entry 55
+    -0x1.ffffeaaacd310cb1a42a8370b88e1d60p-10,
+    -0x1.00000000101p-9
+  },
+  { // Entry 56
+    0x1.fead0b69d618a81747624f3c7ca38382p-4,
+    0x1.000000002p-3
+  },
+  { // Entry 57
+    -0x1.fead0b69d618a81747624f3c7ca38382p-4,
+    -0x1.000000002p-3
+  },
+  { // Entry 58
+    0x1.ffeaad1131a3687962cb8ca0a64f4c60p-6,
+    0x1.000000003e0p-5
+  },
+  { // Entry 59
+    -0x1.ffeaad1131a3687962cb8ca0a64f4c60p-6,
+    -0x1.000000003e0p-5
+  },
+  { // Entry 60
+    0x1.ffeaad1135a2e8915dcc65794d5c1216p-6,
+    0x1.000000004p-5
+  },
+  { // Entry 61
+    -0x1.ffeaad1135a2e8915dcc65794d5c1216p-6,
+    -0x1.000000004p-5
+  },
+  { // Entry 62
+    0x1.fead0b6d0fabe7f7940a172c81b216a2p-4,
+    0x1.00000001cp-3
+  },
+  { // Entry 63
+    -0x1.fead0b6d0fabe7f7940a172c81b216a2p-4,
+    -0x1.00000001cp-3
+  },
+  { // Entry 64
+    0x1.719218369adf88000392d7dc8518a18fp0,
+    0x1.000000060p1
+  },
+  { // Entry 65
+    -0x1.719218369adf88000392d7dc8518a18fp0,
+    -0x1.000000060p1
+  },
+  { // Entry 66
+    0x1.ecc2cafab28f10000058d757d62be0f2p-2,
+    0x1.0000000809d7dp-1
+  },
+  { // Entry 67
+    -0x1.ecc2cafab28f10000058d757d62be0f2p-2,
+    -0x1.0000000809d7dp-1
+  },
+  { // Entry 68
+    0x1.ffeabb0ef606c7da67459428149adbadp-6,
+    0x1.0000070p-5
+  },
+  { // Entry 69
+    -0x1.ffeabb0ef606c7da67459428149adbadp-6,
+    -0x1.0000070p-5
+  },
+  { // Entry 70
+    0x1.0c1f98037ddb97ff3c5068b316a00165p1,
+    0x1.00001c0p2
+  },
+  { // Entry 71
+    -0x1.0c1f98037ddb97ff3c5068b316a00165p1,
+    -0x1.00001c0p2
+  },
+  { // Entry 72
+    0x1.fad06c7e0e0a7003b1140bc95ab405ffp-3,
+    0x1.00006p-2
+  },
+  { // Entry 73
+    -0x1.fad06c7e0e0a7003b1140bc95ab405ffp-3,
+    -0x1.00006p-2
+  },
+  { // Entry 74
+    0x1.c344d0212927f5fa42a3dd90c845aafep-1,
+    0x1.00010p0
+  },
+  { // Entry 75
+    -0x1.c344d0212927f5fa42a3dd90c845aafep-1,
+    -0x1.00010p0
+  },
+  { // Entry 76
+    0x1.5507660f47456800d91258e8755bd5f4p7,
+    0x1.001p245
+  },
+  { // Entry 77
+    -0x1.5507660f47456800d91258e8755bd5f4p7,
+    -0x1.001p245
+  },
+  { // Entry 78
+    0x1.210ae10a6cc59fbb8020167ab1dffccap9,
+    0x1.001p833
+  },
+  { // Entry 79
+    -0x1.210ae10a6cc59fbb8020167ab1dffccap9,
+    -0x1.001p833
+  },
+  { // Entry 80
+    0x1.d5f45b75d63b680001d13ac1dbe562bcp8,
+    0x1.003p677
+  },
+  { // Entry 81
+    -0x1.d5f45b75d63b680001d13ac1dbe562bcp8,
+    -0x1.003p677
+  },
+  { // Entry 82
+    0x1.ffb3c044157318449812a557bcf1706ap-4,
+    0x1.008460a44ffc1p-3
+  },
+  { // Entry 83
+    -0x1.ffb3c044157318449812a557bcf1706ap-4,
+    -0x1.008460a44ffc1p-3
+  },
+  { // Entry 84
+    0x1.edb50436723d4759390d6456c2e8adf5p-2,
+    0x1.00876f69ec52fp-1
+  },
+  { // Entry 85
+    -0x1.edb50436723d4759390d6456c2e8adf5p-2,
+    -0x1.00876f69ec52fp-1
+  },
+  { // Entry 86
+    0x1.41bb41c3f17da804e9ad14f4bd75bacep4,
+    0x1.01c8fb2951ca4p28
+  },
+  { // Entry 87
+    -0x1.41bb41c3f17da804e9ad14f4bd75bacep4,
+    -0x1.01c8fb2951ca4p28
+  },
+  { // Entry 88
+    0x1.c6dfe797565f57ffff7a8713d032c096p-1,
+    0x1.028f5c2a30342p0
+  },
+  { // Entry 89
+    -0x1.c6dfe797565f57ffff7a8713d032c096p-1,
+    -0x1.028f5c2a30342p0
+  },
+  { // Entry 90
+    0x1.c6dfe79afae7afffffa3117d3818eeecp-1,
+    0x1.028f5c2cc6e8bp0
+  },
+  { // Entry 91
+    -0x1.c6dfe79afae7afffffa3117d3818eeecp-1,
+    -0x1.028f5c2cc6e8bp0
+  },
+  { // Entry 92
+    0x1.f15897705c5497fd072c467ee385c7a0p-2,
+    0x1.0290d52c6e91cp-1
+  },
+  { // Entry 93
+    -0x1.f15897705c5497fd072c467ee385c7a0p-2,
+    -0x1.0290d52c6e91cp-1
+  },
+  { // Entry 94
+    0x1.f1760421743425feec4439805ecd1fc5p-2,
+    0x1.02a150a8542a0p-1
+  },
+  { // Entry 95
+    -0x1.f1760421743425feec4439805ecd1fc5p-2,
+    -0x1.02a150a8542a0p-1
+  },
+  { // Entry 96
+    0x1.f6bc79c87c02ec261ae70361810513bfp-2,
+    0x1.0596af363ee5ap-1
+  },
+  { // Entry 97
+    -0x1.f6bc79c87c02ec261ae70361810513bfp-2,
+    -0x1.0596af363ee5ap-1
+  },
+  { // Entry 98
+    0x1.78a6cf7b3035bce4e063abd1ab00c432p0,
+    0x1.08040201008p1
+  },
+  { // Entry 99
+    -0x1.78a6cf7b3035bce4e063abd1ab00c432p0,
+    -0x1.08040201008p1
+  },
+  { // Entry 100
+    0x1.fb18e232de8cd7fb0a7c7d40c2100415p-2,
+    0x1.080a2213c5d7fp-1
+  },
+  { // Entry 101
+    -0x1.fb18e232de8cd7fb0a7c7d40c2100415p-2,
+    -0x1.080a2213c5d7fp-1
+  },
+  { // Entry 102
+    0x1.fc36c248c852a7ffddc9062d9e764f4bp-2,
+    0x1.08aaffb099863p-1
+  },
+  { // Entry 103
+    -0x1.fc36c248c852a7ffddc9062d9e764f4bp-2,
+    -0x1.08aaffb099863p-1
+  },
+  { // Entry 104
+    0x1.0f28edd4476116d66ca78dc309cf80f9p-9,
+    0x1.0f28fa815b6c8p-9
+  },
+  { // Entry 105
+    -0x1.0f28edd4476116d66ca78dc309cf80f9p-9,
+    -0x1.0f28fa815b6c8p-9
+  },
+  { // Entry 106
+    0x1.151f44f2b4f427ffff7a41c02c5cf355p1,
+    0x1.133333335479ap2
+  },
+  { // Entry 107
+    -0x1.151f44f2b4f427ffff7a41c02c5cf355p1,
+    -0x1.133333335479ap2
+  },
+  { // Entry 108
+    0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    0x1.180p0
+  },
+  { // Entry 109
+    -0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    -0x1.180p0
+  },
+  { // Entry 110
+    0x1.434264c6fc6708034a24c8e524f5687dp4,
+    0x1.1b9d819ebf8cep28
+  },
+  { // Entry 111
+    -0x1.434264c6fc6708034a24c8e524f5687dp4,
+    -0x1.1b9d819ebf8cep28
+  },
+  { // Entry 112
+    0x1.101ff8a713880a351f47c974f12ce55ep-1,
+    0x1.1d1e74e330911p-1
+  },
+  { // Entry 113
+    -0x1.101ff8a713880a351f47c974f12ce55ep-1,
+    -0x1.1d1e74e330911p-1
+  },
+  { // Entry 114
+    0x1.1a493ab88461d7fd3beeba172ff9a7f0p-2,
+    0x1.1dep-2
+  },
+  { // Entry 115
+    -0x1.1a493ab88461d7fd3beeba172ff9a7f0p-2,
+    -0x1.1dep-2
+  },
+  { // Entry 116
+    0x1.12e044c3ab17180beb67fd37dde3818ep-1,
+    0x1.2045a703c2358p-1
+  },
+  { // Entry 117
+    -0x1.12e044c3ab17180beb67fd37dde3818ep-1,
+    -0x1.2045a703c2358p-1
+  },
+  { // Entry 118
+    0x1.134f8303f8e7d7792a8cfcae2ab188a3p-1,
+    0x1.20c557b1da1d0p-1
+  },
+  { // Entry 119
+    -0x1.134f8303f8e7d7792a8cfcae2ab188a3p-1,
+    -0x1.20c557b1da1d0p-1
+  },
+  { // Entry 120
+    0x1.13a88f92f15df43236c0af1f8703f1e3p-1,
+    0x1.212b987b85034p-1
+  },
+  { // Entry 121
+    -0x1.13a88f92f15df43236c0af1f8703f1e3p-1,
+    -0x1.212b987b85034p-1
+  },
+  { // Entry 122
+    0x1.16805e66deb3cf0b1c0ec9b60fdb7894p-1,
+    0x1.24709b4a7de54p-1
+  },
+  { // Entry 123
+    -0x1.16805e66deb3cf0b1c0ec9b60fdb7894p-1,
+    -0x1.24709b4a7de54p-1
+  },
+  { // Entry 124
+    0x1.265195db6355dfff0127bbf1e5e11703p-6,
+    0x1.2655a343af923p-6
+  },
+  { // Entry 125
+    -0x1.265195db6355dfff0127bbf1e5e11703p-6,
+    -0x1.2655a343af923p-6
+  },
+  { // Entry 126
+    0x1.43fe1550dc5730023455469bb4ddb63fp4,
+    0x1.28e9e3033b2d0p28
+  },
+  { // Entry 127
+    -0x1.43fe1550dc5730023455469bb4ddb63fp4,
+    -0x1.28e9e3033b2d0p28
+  },
+  { // Entry 128
+    0x1.218f8513eb4d27ec00b1291cfdc18d67p1,
+    0x1.300000036bf99p2
+  },
+  { // Entry 129
+    -0x1.218f8513eb4d27ec00b1291cfdc18d67p1,
+    -0x1.300000036bf99p2
+  },
+  { // Entry 130
+    0x1.22a54301136de7ee5ce85eb01455a4eep1,
+    0x1.32a4e674697e7p2
+  },
+  { // Entry 131
+    -0x1.22a54301136de7ee5ce85eb01455a4eep1,
+    -0x1.32a4e674697e7p2
+  },
+  { // Entry 132
+    0x1.24292ef03128080ed3d9b08df44f6fb7p1,
+    0x1.365fc696fa5b0p2
+  },
+  { // Entry 133
+    -0x1.24292ef03128080ed3d9b08df44f6fb7p1,
+    -0x1.365fc696fa5b0p2
+  },
+  { // Entry 134
+    0x1.2575169c887057ffff7a5b19ee86a3d5p1,
+    0x1.3999999a1ab8cp2
+  },
+  { // Entry 135
+    -0x1.2575169c887057ffff7a5b19ee86a3d5p1,
+    -0x1.3999999a1ab8cp2
+  },
+  { // Entry 136
+    0x1.25dc8638bdb2f80ff1668031438c9765p1,
+    0x1.3a9ca45e66e91p2
+  },
+  { // Entry 137
+    -0x1.25dc8638bdb2f80ff1668031438c9765p1,
+    -0x1.3a9ca45e66e91p2
+  },
+  { // Entry 138
+    0x1.26409faea12417fd5ca4674254142d91p1,
+    0x1.3b9817a24777ep2
+  },
+  { // Entry 139
+    -0x1.26409faea12417fd5ca4674254142d91p1,
+    -0x1.3b9817a24777ep2
+  },
+  { // Entry 140
+    0x1.4fffffffff9f880000004ac8393332e6p-20,
+    0x1.5p-20
+  },
+  { // Entry 141
+    -0x1.4fffffffff9f880000004ac8393332e6p-20,
+    -0x1.5p-20
+  },
+  { // Entry 142
+    0x1.2ee78375a21e580b5728c038fb225c9fp1,
+    0x1.52191d255a790p2
+  },
+  { // Entry 143
+    -0x1.2ee78375a21e580b5728c038fb225c9fp1,
+    -0x1.52191d255a790p2
+  },
+  { // Entry 144
+    0x1.3185d0f16e6b6807a095bb392a3382b4p1,
+    0x1.593552a340f40p2
+  },
+  { // Entry 145
+    -0x1.3185d0f16e6b6807a095bb392a3382b4p1,
+    -0x1.593552a340f40p2
+  },
+  { // Entry 146
+    0x1.5aa83c174d0747d7431c3ae246f0a0c0p-5,
+    0x1.5ac2b9013fba0p-5
+  },
+  { // Entry 147
+    -0x1.5aa83c174d0747d7431c3ae246f0a0c0p-5,
+    -0x1.5ac2b9013fba0p-5
+  },
+  { // Entry 148
+    0x1.339f4c2a909867fb9c10e43011125aa5p1,
+    0x1.5f03888dbf20fp2
+  },
+  { // Entry 149
+    -0x1.339f4c2a909867fb9c10e43011125aa5p1,
+    -0x1.5f03888dbf20fp2
+  },
+  { // Entry 150
+    0x1.bd38dfe35d1acaae5c9501194270a136p0,
+    0x1.6113b497290a0p1
+  },
+  { // Entry 151
+    -0x1.bd38dfe35d1acaae5c9501194270a136p0,
+    -0x1.6113b497290a0p1
+  },
+  { // Entry 152
+    0x1.c1075a363e410a8f98845c743ba3787ap0,
+    0x1.66b359acd6680p1
+  },
+  { // Entry 153
+    -0x1.c1075a363e410a8f98845c743ba3787ap0,
+    -0x1.66b359acd6680p1
+  },
+  { // Entry 154
+    0x1.c262c12766e32579979b9555c11e1726p0,
+    0x1.68b97a389b46cp1
+  },
+  { // Entry 155
+    -0x1.c262c12766e32579979b9555c11e1726p0,
+    -0x1.68b97a389b46cp1
+  },
+  { // Entry 156
+    0x1.747df23f098e1ea8bfc81fa5be8e0998p-7,
+    0x1.748p-7
+  },
+  { // Entry 157
+    -0x1.747df23f098e1ea8bfc81fa5be8e0998p-7,
+    -0x1.748p-7
+  },
+  { // Entry 158
+    0x1.734f39e590ff4c558714ce06a3e0ce12p-2,
+    0x1.7b8p-2
+  },
+  { // Entry 159
+    -0x1.734f39e590ff4c558714ce06a3e0ce12p-2,
+    -0x1.7b8p-2
+  },
+  { // Entry 160
+    0x1.84ea54e95b79d80052d4496a3b257037p-4,
+    0x1.858p-4
+  },
+  { // Entry 161
+    -0x1.84ea54e95b79d80052d4496a3b257037p-4,
+    -0x1.858p-4
+  },
+  { // Entry 162
+    0x1.8c3d8723afa7d7fe5aac8c67302c2016p-7,
+    0x1.8c4p-7
+  },
+  { // Entry 163
+    -0x1.8c3d8723afa7d7fe5aac8c67302c2016p-7,
+    -0x1.8c4p-7
+  },
+  { // Entry 164
+    0x1.6fdab10671bdb04ee0b9e2255ea89ee4p-1,
+    0x1.905415054158cp-1
+  },
+  { // Entry 165
+    -0x1.6fdab10671bdb04ee0b9e2255ea89ee4p-1,
+    -0x1.905415054158cp-1
+  },
+  { // Entry 166
+    0x1.77204b30761997ffff9f14bcadd5050ep-1,
+    0x1.9999999df31f2p-1
+  },
+  { // Entry 167
+    -0x1.77204b30761997ffff9f14bcadd5050ep-1,
+    -0x1.9999999df31f2p-1
+  },
+  { // Entry 168
+    0x1.8f656b48fdbb8800007fb53bc7f22857p-2,
+    0x1.999999a8e2404p-2
+  },
+  { // Entry 169
+    -0x1.8f656b48fdbb8800007fb53bc7f22857p-2,
+    -0x1.999999a8e2404p-2
+  },
+  { // Entry 170
+    0x1.98eb9ea8504947ffff97daef209016f0p-4,
+    0x1.999999c3bfab9p-4
+  },
+  { // Entry 171
+    -0x1.98eb9ea8504947ffff97daef209016f0p-4,
+    -0x1.999999c3bfab9p-4
+  },
+  { // Entry 172
+    0x1.98eb9eaddfeba000008e0f13b5b376e8p-4,
+    0x1.999999c95667ap-4
+  },
+  { // Entry 173
+    -0x1.98eb9eaddfeba000008e0f13b5b376e8p-4,
+    -0x1.999999c95667ap-4
+  },
+  { // Entry 174
+    0x1.796335ca772c2274edcfef9c0d7aea2ap-1,
+    0x1.9c8p-1
+  },
+  { // Entry 175
+    -0x1.796335ca772c2274edcfef9c0d7aea2ap-1,
+    -0x1.9c8p-1
+  },
+  { // Entry 176
+    0x1.a3fc70e78b72affea798fb1ed9e01b11p-7,
+    0x1.a3ff627f789p-7
+  },
+  { // Entry 177
+    -0x1.a3fc70e78b72affea798fb1ed9e01b11p-7,
+    -0x1.a3ff627f789p-7
+  },
+  { // Entry 178
+    0x1.4f0a85b0ad4857ff001b414064939016p9,
+    0x1.a6edff7a583f8p965
+  },
+  { // Entry 179
+    -0x1.4f0a85b0ad4857ff001b414064939016p9,
+    -0x1.a6edff7a583f8p965
+  },
+  { // Entry 180
+    0x1.4c2b484bc41907fe51fbf0db7eb6c058p1,
+    0x1.aa552a954aap2
+  },
+  { // Entry 181
+    -0x1.4c2b484bc41907fe51fbf0db7eb6c058p1,
+    -0x1.aa552a954aap2
+  },
+  { // Entry 182
+    0x1.8964d070b42ff2d026071f870e311b26p-1,
+    0x1.b1427cd988b8cp-1
+  },
+  { // Entry 183
+    -0x1.8964d070b42ff2d026071f870e311b26p-1,
+    -0x1.b1427cd988b8cp-1
+  },
+  { // Entry 184
+    0x1.4d02914955d62fffff71df03043350f4p0,
+    0x1.b3333337506cap0
+  },
+  { // Entry 185
+    -0x1.4d02914955d62fffff71df03043350f4p0,
+    -0x1.b3333337506cap0
+  },
+  { // Entry 186
+    0x1.b010ad38a80b2ae0fc455f9f136e746dp-2,
+    0x1.bd0p-2
+  },
+  { // Entry 187
+    -0x1.b010ad38a80b2ae0fc455f9f136e746dp-2,
+    -0x1.bd0p-2
+  },
+  { // Entry 188
+    0x1.c8543a9a9c24311233a315255f5c4651p-9,
+    0x1.c8547704cc94ap-9
+  },
+  { // Entry 189
+    -0x1.c8543a9a9c24311233a315255f5c4651p-9,
+    -0x1.c8547704cc94ap-9
+  },
+  { // Entry 190
+    0x1.c9ac0c777fff8ff9d8ee7153627176abp-4,
+    0x1.caap-4
+  },
+  { // Entry 191
+    -0x1.c9ac0c777fff8ff9d8ee7153627176abp-4,
+    -0x1.caap-4
+  },
+  { // Entry 192
+    0x1.ca6adaba65efe7f20f871de10947cd5cp-4,
+    0x1.cb5fffffe7a06p-4
+  },
+  { // Entry 193
+    -0x1.ca6adaba65efe7f20f871de10947cd5cp-4,
+    -0x1.cb5fffffe7a06p-4
+  },
+  { // Entry 194
+    0x1.ca6adaba7e28a7f59fa07b692a9fe0f9p-4,
+    0x1.cb6p-4
+  },
+  { // Entry 195
+    -0x1.ca6adaba7e28a7f59fa07b692a9fe0f9p-4,
+    -0x1.cb6p-4
+  },
+  { // Entry 196
+    0x1.e1c5c0ca279f77ff07f31b933b58d12ap2,
+    0x1.d0b42d0b42d08p9
+  },
+  { // Entry 197
+    -0x1.e1c5c0ca279f77ff07f31b933b58d12ap2,
+    -0x1.d0b42d0b42d08p9
+  },
+  { // Entry 198
+    0x1.a3e8b71cba28d7fec3d1c6454bbba99dp-1,
+    0x1.d4974eca333c3p-1
+  },
+  { // Entry 199
+    -0x1.a3e8b71cba28d7fec3d1c6454bbba99dp-1,
+    -0x1.d4974eca333c3p-1
+  },
+  { // Entry 200
+    0x1.d4ede01f10ab67b211c278274a3c64eap-5,
+    0x1.d52f71e93cb21p-5
+  },
+  { // Entry 201
+    -0x1.d4ede01f10ab67b211c278274a3c64eap-5,
+    -0x1.d52f71e93cb21p-5
+  },
+  { // Entry 202
+    0x1.a66b6c181a57eec89a856dab88260c85p-1,
+    0x1.d80p-1
+  },
+  { // Entry 203
+    -0x1.a66b6c181a57eec89a856dab88260c85p-1,
+    -0x1.d80p-1
+  },
+  { // Entry 204
+    0x1.da493afa5f7b1834c0ac9129ea3f8481p-5,
+    0x1.da8d12b111853p-5
+  },
+  { // Entry 205
+    -0x1.da493afa5f7b1834c0ac9129ea3f8481p-5,
+    -0x1.da8d12b111853p-5
+  },
+  { // Entry 206
+    0x1.d86c93088bcd89c3a7ea69e10bebc834p-3,
+    0x1.dcap-3
+  },
+  { // Entry 207
+    -0x1.d86c93088bcd89c3a7ea69e10bebc834p-3,
+    -0x1.dcap-3
+  },
+  { // Entry 208
+    0x1.5b210231129f7801b2df8c036bedd614p1,
+    0x1.dfbf7efdfbf78p2
+  },
+  { // Entry 209
+    -0x1.5b210231129f7801b2df8c036bedd614p1,
+    -0x1.dfbf7efdfbf78p2
+  },
+  { // Entry 210
+    0x1.e743ce73d923d00856cbaafe09163cdfp-3,
+    0x1.ebep-3
+  },
+  { // Entry 211
+    -0x1.e743ce73d923d00856cbaafe09163cdfp-3,
+    -0x1.ebep-3
+  },
+  { // Entry 212
+    0x1.de596b4f4d5018eb85e6571011c15683p-2,
+    0x1.efeffffffffffp-2
+  },
+  { // Entry 213
+    -0x1.de596b4f4d5018eb85e6571011c15683p-2,
+    -0x1.efeffffffffffp-2
+  },
+  { // Entry 214
+    0x1.6a6eb2ffee2edafd7fed403ad2c6d203p0,
+    0x1.f03c3f9d576bcp0
+  },
+  { // Entry 215
+    -0x1.6a6eb2ffee2edafd7fed403ad2c6d203p0,
+    -0x1.f03c3f9d576bcp0
+  },
+  { // Entry 216
+    0x1.f3df6e88a792e801ff70692e5a789f21p-5,
+    0x1.f42edbd85d9f8p-5
+  },
+  { // Entry 217
+    -0x1.f3df6e88a792e801ff70692e5a789f21p-5,
+    -0x1.f42edbd85d9f8p-5
+  },
+  { // Entry 218
+    0x1.6c59a446d1b78b1c9b74684b78b10b0fp0,
+    0x1.f46ea5f8f54e8p0
+  },
+  { // Entry 219
+    -0x1.6c59a446d1b78b1c9b74684b78b10b0fp0,
+    -0x1.f46ea5f8f54e8p0
+  },
+  { // Entry 220
+    0x1.f55afe0cccf0971d810065fd8ca51746p-7,
+    0x1.f56p-7
+  },
+  { // Entry 221
+    -0x1.f55afe0cccf0971d810065fd8ca51746p-7,
+    -0x1.f56p-7
+  },
+  { // Entry 222
+    0x1.f72c28bf439cf823462f9436177c0f68p-3,
+    0x1.fc4p-3
+  },
+  { // Entry 223
+    -0x1.f72c28bf439cf823462f9436177c0f68p-3,
+    -0x1.fc4p-3
+  },
+  { // Entry 224
+    0x1.fe3de8a25c148ff37ff3fff4ea96b0c5p-4,
+    0x1.ff8ffffffffffp-4
+  },
+  { // Entry 225
+    -0x1.fe3de8a25c148ff37ff3fff4ea96b0c5p-4,
+    -0x1.ff8ffffffffffp-4
+  },
+  { // Entry 226
+    0x1.ff7abb0b079d45b8c077c138812ef785p-6,
+    0x1.ff8ffffffffffp-6
+  },
+  { // Entry 227
+    -0x1.ff7abb0b079d45b8c077c138812ef785p-6,
+    -0x1.ff8ffffffffffp-6
+  },
+  { // Entry 228
+    0x1.ff8faae2c4a7e15f49f1e7fd10226df8p-9,
+    0x1.ff8ffffffffffp-9
+  },
+  { // Entry 229
+    -0x1.ff8faae2c4a7e15f49f1e7fd10226df8p-9,
+    -0x1.ff8ffffffffffp-9
+  },
+  { // Entry 230
+    0x1.6363716659a0d6ec9a4d1673a0c1caf9p1,
+    0x1.ffffff3ffffffp2
+  },
+  { // Entry 231
+    -0x1.6363716659a0d6ec9a4d1673a0c1caf9p1,
+    -0x1.ffffff3ffffffp2
+  },
+  { // Entry 232
+    0x1.fffaaab70073cffe1ca7af59dea383bdp-7,
+    0x1.ffffffe5effffp-7
+  },
+  { // Entry 233
+    -0x1.fffaaab70073cffe1ca7af59dea383bdp-7,
+    -0x1.ffffffe5effffp-7
+  },
+  { // Entry 234
+    0x1.ffeaad091c25f7fe78be0efb91393b35p-6,
+    0x1.fffffff8657ffp-6
+  },
+  { // Entry 235
+    -0x1.ffeaad091c25f7fe78be0efb91393b35p-6,
+    -0x1.fffffff8657ffp-6
+  },
+  { // Entry 236
+    0x1.fffaaacd0fc35843b8b9c2c8eaaf170dp-7,
+    0x1.fffffffbfffffp-7
+  },
+  { // Entry 237
+    -0x1.fffaaacd0fc35843b8b9c2c8eaaf170dp-7,
+    -0x1.fffffffbfffffp-7
+  },
+  { // Entry 238
+    0x1.c34366179ac8d01e2cd45de4745e134ap-1,
+    0x1.fffffffffc7ffp-1
+  },
+  { // Entry 239
+    -0x1.c34366179ac8d01e2cd45de4745e134ap-1,
+    -0x1.fffffffffc7ffp-1
+  },
+  { // Entry 240
+    0x1.fead0b6996797834b43bac6b0f3fe20fp-4,
+    0x1.ffffffffffe21p-4
+  },
+  { // Entry 241
+    -0x1.fead0b6996797834b43bac6b0f3fe20fp-4,
+    -0x1.ffffffffffe21p-4
+  },
+  { // Entry 242
+    0x1.c34366179d41a11c2058c40156eae780p-1,
+    0x1.fffffffffffeep-1
+  },
+  { // Entry 243
+    -0x1.c34366179d41a11c2058c40156eae780p-1,
+    -0x1.fffffffffffeep-1
+  },
+  { // Entry 244
+    0x1.ffffaaaad10fda3642e7f712ee391058p-9,
+    0x1.fffffffffffeep-9
+  },
+  { // Entry 245
+    -0x1.ffffaaaad10fda3642e7f712ee391058p-9,
+    -0x1.fffffffffffeep-9
+  },
+  { // Entry 246
+    0x1.30fc1931f09c97ff42ff5cad467897fdp7,
+    0x1.fffffffffffeep218
+  },
+  { // Entry 247
+    -0x1.30fc1931f09c97ff42ff5cad467897fdp7,
+    -0x1.fffffffffffeep218
+  },
+  { // Entry 248
+    0x1.ffaad0fa452557ff22342e0cd4997830p-5,
+    0x1.ffffffffffff3p-5
+  },
+  { // Entry 249
+    -0x1.ffaad0fa452557ff22342e0cd4997830p-5,
+    -0x1.ffffffffffff3p-5
+  },
+  { // Entry 250
+    0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    0x1.ffffffffffffep501
+  },
+  { // Entry 251
+    -0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    -0x1.ffffffffffffep501
+  },
+  { // Entry 252
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 253
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 254
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.cp-1
+  },
+  { // Entry 255
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.cp-1
+  },
+  { // Entry 256
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.8p-1
+  },
+  { // Entry 257
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.8p-1
+  },
+  { // Entry 258
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.4p-1
+  },
+  { // Entry 259
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.4p-1
+  },
+  { // Entry 260
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.0p-1
+  },
+  { // Entry 261
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.0p-1
+  },
+  { // Entry 262
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.8p-2
+  },
+  { // Entry 263
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.8p-2
+  },
+  { // Entry 264
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.0p-2
+  },
+  { // Entry 265
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.0p-2
+  },
+  { // Entry 266
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.0p-3
+  },
+  { // Entry 267
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.0p-3
+  },
+  { // Entry 268
+    0.0,
+    0.0
+  },
+  { // Entry 269
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.0p-3
+  },
+  { // Entry 270
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.0p-3
+  },
+  { // Entry 271
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.0p-2
+  },
+  { // Entry 272
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.0p-2
+  },
+  { // Entry 273
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.8p-2
+  },
+  { // Entry 274
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.8p-2
+  },
+  { // Entry 275
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.0p-1
+  },
+  { // Entry 276
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.0p-1
+  },
+  { // Entry 277
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.4p-1
+  },
+  { // Entry 278
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.4p-1
+  },
+  { // Entry 279
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.8p-1
+  },
+  { // Entry 280
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.8p-1
+  },
+  { // Entry 281
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.cp-1
+  },
+  { // Entry 282
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.cp-1
+  },
+  { // Entry 283
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 284
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 285
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.0p100
+  },
+  { // Entry 286
+    -0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    -0x1.0p100
+  },
+  { // Entry 287
+    0x1.1869a6d0fc0c8734cff5be4c994a623cp6,
+    0x1.199999999999ap100
+  },
+  { // Entry 288
+    -0x1.1869a6d0fc0c8734cff5be4c994a623cp6,
+    -0x1.199999999999ap100
+  },
+  { // Entry 289
+    0x1.18c2c053a6401fdf8f801885ecec896ep6,
+    0x1.3333333333334p100
+  },
+  { // Entry 290
+    -0x1.18c2c053a6401fdf8f801885ecec896ep6,
+    -0x1.3333333333334p100
+  },
+  { // Entry 291
+    0x1.1914b70ad53709fc02e60c9931465d1cp6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 292
+    -0x1.1914b70ad53709fc02e60c9931465d1cp6,
+    -0x1.4cccccccccccep100
+  },
+  { // Entry 293
+    0x1.19609a00a84eb5469b8a14575cfcffdcp6,
+    0x1.6666666666668p100
+  },
+  { // Entry 294
+    -0x1.19609a00a84eb5469b8a14575cfcffdcp6,
+    -0x1.6666666666668p100
+  },
+  { // Entry 295
+    0x1.19a74011e314f1179b5984282f925681p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 296
+    -0x1.19a74011e314f1179b5984282f925681p6,
+    -0x1.8000000000002p100
+  },
+  { // Entry 297
+    0x1.19e95674b98dd93c68942542ae48ec14p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 298
+    -0x1.19e95674b98dd93c68942542ae48ec14p6,
+    -0x1.999999999999cp100
+  },
+  { // Entry 299
+    0x1.1a276ad639b09e9294f7218ef587ce6cp6,
+    0x1.b333333333336p100
+  },
+  { // Entry 300
+    -0x1.1a276ad639b09e9294f7218ef587ce6cp6,
+    -0x1.b333333333336p100
+  },
+  { // Entry 301
+    0x1.1a61f2927239a4e5d75ab70952b3595ap6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 302
+    -0x1.1a61f2927239a4e5d75ab70952b3595ap6,
+    -0x1.cccccccccccd0p100
+  },
+  { // Entry 303
+    0x1.1a994ff83eca77f3ef91866a7b8540e2p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 304
+    -0x1.1a994ff83eca77f3ef91866a7b8540e2p6,
+    -0x1.e66666666666ap100
+  },
+  { // Entry 305
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.0p101
+  },
+  { // Entry 306
+    -0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    -0x1.0p101
+  },
+  { // Entry 307
+    0x1.16a529a32777cd0fc3079004b633875fp7,
+    0x1.0p200
+  },
+  { // Entry 308
+    -0x1.16a529a32777cd0fc3079004b633875fp7,
+    -0x1.0p200
+  },
+  { // Entry 309
+    0x1.16d5f62219f05aa89db4c3750fbb01d6p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 310
+    -0x1.16d5f62219f05aa89db4c3750fbb01d6p7,
+    -0x1.199999999999ap200
+  },
+  { // Entry 311
+    0x1.170282e36f0a26fdfd79f091b98c1570p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 312
+    -0x1.170282e36f0a26fdfd79f091b98c1570p7,
+    -0x1.3333333333334p200
+  },
+  { // Entry 313
+    0x1.172b7e3f06859c0c372cea9b5bb8ff47p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 314
+    -0x1.172b7e3f06859c0c372cea9b5bb8ff47p7,
+    -0x1.4cccccccccccep200
+  },
+  { // Entry 315
+    0x1.17516fb9f01171b1837eee7a719450a6p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 316
+    -0x1.17516fb9f01171b1837eee7a719450a6p7,
+    -0x1.6666666666668p200
+  },
+  { // Entry 317
+    0x1.1774c2c28d748f9a0366a662dadefbf9p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 318
+    -0x1.1774c2c28d748f9a0366a662dadefbf9p7,
+    -0x1.8000000000002p200
+  },
+  { // Entry 319
+    0x1.1795cdf3f8b103ac6a03f6f01a3a46c3p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 320
+    -0x1.1795cdf3f8b103ac6a03f6f01a3a46c3p7,
+    -0x1.999999999999cp200
+  },
+  { // Entry 321
+    0x1.17b4d824b8c26657803575163dd9b7efp7,
+    0x1.b333333333336p200
+  },
+  { // Entry 322
+    -0x1.17b4d824b8c26657803575163dd9b7efp7,
+    -0x1.b333333333336p200
+  },
+  { // Entry 323
+    0x1.17d21c02d506e98121673fd36c6f7d66p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 324
+    -0x1.17d21c02d506e98121673fd36c6f7d66p7,
+    -0x1.cccccccccccd0p200
+  },
+  { // Entry 325
+    0x1.17edcab5bb4f53082d82a78400d8712ap7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 326
+    -0x1.17edcab5bb4f53082d82a78400d8712ap7,
+    -0x1.e66666666666ap200
+  },
+  { // Entry 327
+    0x1.18080dd3171b6c031a9b576be63b6d4cp7,
+    0x1.0p201
+  },
+  { // Entry 328
+    -0x1.18080dd3171b6c031a9b576be63b6d4cp7,
+    -0x1.0p201
+  },
+  { // Entry 329
+    0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    0x1.0p1000
+  },
+  { // Entry 330
+    -0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    -0x1.0p1000
+  },
+  { // Entry 331
+    0x1.5af7c2fbbe5044c692e0f97aca1a61e7p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 332
+    -0x1.5af7c2fbbe5044c692e0f97aca1a61e7p9,
+    -0x1.199999999999ap1000
+  },
+  { // Entry 333
+    0x1.5b02e62c1396b7dbead244c1f48ea6cdp9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 334
+    -0x1.5b02e62c1396b7dbead244c1f48ea6cdp9,
+    -0x1.3333333333334p1000
+  },
+  { // Entry 335
+    0x1.5b0d2502f975951f793f03445d19e143p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 336
+    -0x1.5b0d2502f975951f793f03445d19e143p9,
+    -0x1.4cccccccccccep1000
+  },
+  { // Entry 337
+    0x1.5b16a161b3d88a88cc53843c2290b59bp9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 338
+    -0x1.5b16a161b3d88a88cc53843c2290b59bp9,
+    -0x1.6666666666668p1000
+  },
+  { // Entry 339
+    0x1.5b1f7623db315202ec4d72363ce36070p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 340
+    -0x1.5b1f7623db315202ec4d72363ce36070p9,
+    -0x1.8000000000002p1000
+  },
+  { // Entry 341
+    0x1.5b27b8f036006f0785f4c6598cba3322p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 342
+    -0x1.5b27b8f036006f0785f4c6598cba3322p9,
+    -0x1.999999999999cp1000
+  },
+  { // Entry 343
+    0x1.5b2f7b7c6604c7b24b8125e315a20f6dp9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 344
+    -0x1.5b2f7b7c6604c7b24b8125e315a20f6dp9,
+    -0x1.b333333333336p1000
+  },
+  { // Entry 345
+    0x1.5b36cc73ed15e87cb3cd9892614780cbp9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 346
+    -0x1.5b36cc73ed15e87cb3cd9892614780cbp9,
+    -0x1.cccccccccccd0p1000
+  },
+  { // Entry 347
+    0x1.5b3db820a6a802de76d4727e8661bdbcp9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 348
+    -0x1.5b3db820a6a802de76d4727e8661bdbcp9,
+    -0x1.e66666666666ap1000
+  },
+  { // Entry 349
+    0x1.5b4448e7fd9b091d321a9e787fba7cc4p9,
+    0x1.0p1001
+  },
+  { // Entry 350
+    -0x1.5b4448e7fd9b091d321a9e787fba7cc4p9,
+    -0x1.0p1001
+  },
+  { // Entry 351
+    -0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 352
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 353
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 354
+    -0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 355
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 356
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 357
+    -0.0,
+    -0.0
+  },
+  { // Entry 358
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 359
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 360
+    -0x1.0499e40c65ff571c4214191e409f886cp-1,
+    -0x1.1000000000001p-1
+  },
+  { // Entry 361
+    0x1.0499e40c65ff571c4214191e409f886cp-1,
+    0x1.1000000000001p-1
+  },
+  { // Entry 362
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.1p-1
+  },
+  { // Entry 363
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.1p-1
+  },
+  { // Entry 364
+    -0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    -0x1.0ffffffffffffp-1
+  },
+  { // Entry 365
+    0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    0x1.0ffffffffffffp-1
+  },
+  { // Entry 366
+    0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    0x1.0ffffffffffffp-1
+  },
+  { // Entry 367
+    -0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    -0x1.0ffffffffffffp-1
+  },
+  { // Entry 368
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.1p-1
+  },
+  { // Entry 369
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.1p-1
+  },
+  { // Entry 370
+    0x1.0499e40c65ff571c4214191e409f886cp-1,
+    0x1.1000000000001p-1
+  },
+  { // Entry 371
+    -0x1.0499e40c65ff571c4214191e409f886cp-1,
+    -0x1.1000000000001p-1
+  },
+  { // Entry 372
+    0x1.62e42fefa39ef31793c7673007e4ed5ep5,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 373
+    -0x1.62e42fefa39ef31793c7673007e4ed5ep5,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 374
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.0p63
+  },
+  { // Entry 375
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    -0x1.0p63
+  },
+  { // Entry 376
+    0x1.62e42fefa39ef3d793c7673007e1ed5ep5,
+    0x1.0000000000001p63
+  },
+  { // Entry 377
+    -0x1.62e42fefa39ef3d793c7673007e1ed5ep5,
+    -0x1.0000000000001p63
+  },
+  { // Entry 378
+    0x1.419ecb712c480c0b5decb58387269d9dp4,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 379
+    -0x1.419ecb712c480c0b5decb58387269d9dp4,
+    -0x1.fffffffffffffp27
+  },
+  { // Entry 380
+    0x1.419ecb712c480c8b5decb58387285d9dp4,
+    0x1.0p28
+  },
+  { // Entry 381
+    -0x1.419ecb712c480c8b5decb58387285d9dp4,
+    -0x1.0p28
+  },
+  { // Entry 382
+    0x1.419ecb712c480d8b5decb583871fdd9dp4,
+    0x1.0000000000001p28
+  },
+  { // Entry 383
+    -0x1.419ecb712c480d8b5decb583871fdd9dp4,
+    -0x1.0000000000001p28
+  },
+  { // Entry 384
+    0x1.3687a9f1af2b147ca14e7a4a06e817b2p4,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 385
+    -0x1.3687a9f1af2b147ca14e7a4a06e817b2p4,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 386
+    0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    0x1.0p27
+  },
+  { // Entry 387
+    -0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    -0x1.0p27
+  },
+  { // Entry 388
+    0x1.3687a9f1af2b15fca14e7a4a06df17b2p4,
+    0x1.0000000000001p27
+  },
+  { // Entry 389
+    -0x1.3687a9f1af2b15fca14e7a4a06df17b2p4,
+    -0x1.0000000000001p27
+  },
+  { // Entry 390
+    0x1.1542457337d4319c6b73c89d84e9a171p4,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 391
+    -0x1.1542457337d4319c6b73c89d84e9a171p4,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 392
+    0x1.1542457337d4321c6b73c89d84aba171p4,
+    0x1.0p24
+  },
+  { // Entry 393
+    -0x1.1542457337d4321c6b73c89d84aba171p4,
+    -0x1.0p24
+  },
+  { // Entry 394
+    0x1.1542457337d4331c6b73c89d8423a171p4,
+    0x1.0000000000001p24
+  },
+  { // Entry 395
+    -0x1.1542457337d4331c6b73c89d8423a171p4,
+    -0x1.0000000000001p24
+  },
+  { // Entry 396
+    0x1.0c1f8a6e80eeae5c96894f2bffb535afp1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 397
+    -0x1.0c1f8a6e80eeae5c96894f2bffb535afp1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 398
+    0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    0x1.0p2
+  },
+  { // Entry 399
+    -0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    -0x1.0p2
+  },
+  { // Entry 400
+    0x1.0c1f8a6e80eeba00dda49e2daa18ae71p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 401
+    -0x1.0c1f8a6e80eeba00dda49e2daa18ae71p1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 402
+    0x1.719218313d086bd11ec0138398310287p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 403
+    -0x1.719218313d086bd11ec0138398310287p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 404
+    0x1.719218313d0872f8e831837f0e954189p0,
+    0x1.0p1
+  },
+  { // Entry 405
+    -0x1.719218313d0872f8e831837f0e954189p0,
+    -0x1.0p1
+  },
+  { // Entry 406
+    0x1.719218313d0881487b146375fad45d3fp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 407
+    -0x1.719218313d0881487b146375fad45d3fp0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 408
+    0x1.c34366179d42617162bffd7dbe442e71p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 409
+    -0x1.c34366179d42617162bffd7dbe442e71p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 410
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 411
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 412
+    0x1.c34366179d4283625059bc5770d91d5dp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 413
+    -0x1.c34366179d4283625059bc5770d91d5dp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 414
+    0x1.ecc2caec51608afc4d5f24b27c20dc9cp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 415
+    -0x1.ecc2caec51608afc4d5f24b27c20dc9cp-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 416
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.0p-1
+  },
+  { // Entry 417
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.0p-1
+  },
+  { // Entry 418
+    0x1.ecc2caec5160b5eb0607c49741ce9bc6p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 419
+    -0x1.ecc2caec5160b5eb0607c49741ce9bc6p-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 420
+    0x1.facfb2399e635f07b2ecf48db28f6b82p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 421
+    -0x1.facfb2399e635f07b2ecf48db28f6b82p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 422
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.0p-2
+  },
+  { // Entry 423
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.0p-2
+  },
+  { // Entry 424
+    0x1.facfb2399e638d98cf5a30945cc1a910p-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 425
+    -0x1.facfb2399e638d98cf5a30945cc1a910p-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 426
+    0x1.fead0b6996971d25a6c9ee383ff9d971p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 427
+    -0x1.fead0b6996971d25a6c9ee383ff9d971p-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 428
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.0p-3
+  },
+  { // Entry 429
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.0p-3
+  },
+  { // Entry 430
+    0x1.fead0b6996974cc6c316dfa305c0f42dp-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 431
+    -0x1.fead0b6996974cc6c316dfa305c0f42dp-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 432
+    0x1.ffaad0fa4526179f69f8625dbfeb270fp-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 433
+    -0x1.ffaad0fa4526179f69f8625dbfeb270fp-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 434
+    0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    0x1.0p-4
+  },
+  { // Entry 435
+    -0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    -0x1.0p-4
+  },
+  { // Entry 436
+    0x1.ffaad0fa452647877be96f71fab46392p-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 437
+    -0x1.ffaad0fa452647877be96f71fab46392p-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 438
+    0x1.ffeaad10b5b2d593fd4d7fd398a04e17p-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 439
+    -0x1.ffeaad10b5b2d593fd4d7fd398a04e17p-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 440
+    0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    0x1.0p-5
+  },
+  { // Entry 441
+    -0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    -0x1.0p-5
+  },
+  { // Entry 442
+    0x1.ffeaad10b5b3058dfe6d43e0b5accb41p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 443
+    -0x1.ffeaad10b5b3058dfe6d43e0b5accb41p-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 444
+    0x1.fffaaad10fa359c3a4fad4bba332af54p-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 445
+    -0x1.fffaaad10fa359c3a4fad4bba332af54p-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 446
+    0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    0x1.0p-6
+  },
+  { // Entry 447
+    -0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    -0x1.0p-6
+  },
+  { // Entry 448
+    0x1.fffaaad10fa389c2250cd3cbb051e660p-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 449
+    -0x1.fffaaad10fa389c2250cd3cbb051e660p-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 450
+    0x1.fffffffaaaaa9ad111118fa35a2fb2e8p-15,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 451
+    -0x1.fffffffaaaaa9ad111118fa35a2fb2e8p-15,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 452
+    0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    0x1.0p-14
+  },
+  { // Entry 453
+    -0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    -0x1.0p-14
+  },
+  { // Entry 454
+    0x1.fffffffaaaaacad111100fa35a41b2e8p-15,
+    0x1.0000000000001p-14
+  },
+  { // Entry 455
+    -0x1.fffffffaaaaacad111100fa35a41b2e8p-15,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 456
+    0x1.ffffffffffffeeaaaaaaaaaaaacd1111p-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 457
+    -0x1.ffffffffffffeeaaaaaaaaaaaacd1111p-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 458
+    0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    0x1.0p-27
+  },
+  { // Entry 459
+    -0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    -0x1.0p-27
+  },
+  { // Entry 460
+    0x1.0000000000000f555555555555368888p-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 461
+    -0x1.0000000000000f555555555555368888p-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 462
+    0x1.ffffffffffffefaaaaaaaaaaaab2d111p-29,
+    0x1.fffffffffffffp-29
+  },
+  { // Entry 463
+    -0x1.ffffffffffffefaaaaaaaaaaaab2d111p-29,
+    -0x1.fffffffffffffp-29
+  },
+  { // Entry 464
+    0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    0x1.0p-28
+  },
+  { // Entry 465
+    -0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    -0x1.0p-28
+  },
+  { // Entry 466
+    0x1.0000000000000fd555555555554d6888p-28,
+    0x1.0000000000001p-28
+  },
+  { // Entry 467
+    -0x1.0000000000000fd555555555554d6888p-28,
+    -0x1.0000000000001p-28
+  },
+  { // Entry 468
+    0x1.ffffffffffffeffaaaaaaaaaaaab2ad1p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 469
+    -0x1.ffffffffffffeffaaaaaaaaaaaab2ad1p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 470
+    0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    0x1.0p-30
+  },
+  { // Entry 471
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    -0x1.0p-30
+  },
+  { // Entry 472
+    0x1.0000000000000ffd555555555554d568p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 473
+    -0x1.0000000000000ffd555555555554d568p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 474
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 475
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 476
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 477
+    -0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 478
+    0x1.633ce8fb9f87db0c69ac5909d3e7a6d9p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 479
+    -0x1.633ce8fb9f87db0c69ac5909d3e7a6d9p9,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 480
+    0x1.dcbf69f10006cbe9c11ca9a5d76ab0c1p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 481
+    -0x1.dcbf69f10006cbe9c11ca9a5d76ab0c1p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 482
+    0x1.3bc04e847ec0514731ddcb476d407d39p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 483
+    -0x1.3bc04e847ec0514731ddcb476d407d39p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 484
+    0x1.c34366179d4283625059bc5770d91d5dp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 485
+    -0x1.c34366179d4283625059bc5770d91d5dp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 486
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 487
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 488
+    0x1.c34366179d42617162bffd7dbe442e71p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 489
+    -0x1.c34366179d42617162bffd7dbe442e71p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 490
+    0x1.7144779e3f0ba7a6bf77ae922933a297p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 491
+    -0x1.7144779e3f0ba7a6bf77ae922933a297p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 492
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 493
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 494
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 495
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 496
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 497
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 498
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 499
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 500
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 501
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 502
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 503
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 504
+    0.0,
+    0.0
+  },
+  { // Entry 505
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/asinhf_intel_data.h b/tests/math_data/asinhf_intel_data.h
new file mode 100644
index 0000000..e09b2f1
--- /dev/null
+++ b/tests/math_data/asinhf_intel_data.h
@@ -0,0 +1,1650 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_asinhf_intel_data[] = {
+  { // Entry 0
+    -0x1.0f1feafffe3d1154765de9942446abdfp-2,
+    -0x1.124db8p-2
+  },
+  { // Entry 1
+    0x1.0f1feafffe3d1154765de9942446abdfp-2,
+    0x1.124db8p-2
+  },
+  { // Entry 2
+    -0x1.250abb00034e7ff129bd35187e5a90a8p-11,
+    -0x1.250abcp-11
+  },
+  { // Entry 3
+    0x1.250abb00034e7ff129bd35187e5a90a8p-11,
+    0x1.250abcp-11
+  },
+  { // Entry 4
+    -0x1.544e70ffffe14ccbadab97b65580f0f7p-5,
+    -0x1.546780p-5
+  },
+  { // Entry 5
+    0x1.544e70ffffe14ccbadab97b65580f0f7p-5,
+    0x1.546780p-5
+  },
+  { // Entry 6
+    -0x1.e4713d0abf552bdbc167e2422c33c9cbp1,
+    -0x1.60p4
+  },
+  { // Entry 7
+    0x1.e4713d0abf552bdbc167e2422c33c9cbp1,
+    0x1.60p4
+  },
+  { // Entry 8
+    -0x1.5fe9a00168f4b6cc1a76f27bb6acd88bp-4,
+    -0x1.605880p-4
+  },
+  { // Entry 9
+    0x1.5fe9a00168f4b6cc1a76f27bb6acd88bp-4,
+    0x1.605880p-4
+  },
+  { // Entry 10
+    -0x1.dade546facd5dc06721c3a76f2fa6a4cp0,
+    -0x1.8f096ep1
+  },
+  { // Entry 11
+    0x1.dade546facd5dc06721c3a76f2fa6a4cp0,
+    0x1.8f096ep1
+  },
+  { // Entry 12
+    -0x1.d4982b0c930dad1b48293ef31d693cecp-6,
+    -0x1.d4a886p-6
+  },
+  { // Entry 13
+    0x1.d4982b0c930dad1b48293ef31d693cecp-6,
+    0x1.d4a886p-6
+  },
+  { // Entry 14
+    -0x1.d9ecbcfff8be129cc3cf7bf216da5f46p-4,
+    -0x1.dafba0p-4
+  },
+  { // Entry 15
+    0x1.d9ecbcfff8be129cc3cf7bf216da5f46p-4,
+    0x1.dafba0p-4
+  },
+  { // Entry 16
+    -0x1.f95ae3069ee6ea46106060615b04d1b9p-3,
+    -0x1.fe7fc0p-3
+  },
+  { // Entry 17
+    0x1.f95ae3069ee6ea46106060615b04d1b9p-3,
+    0x1.fe7fc0p-3
+  },
+  { // Entry 18
+    0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    0x1.p-5
+  },
+  { // Entry 19
+    -0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    -0x1.p-5
+  },
+  { // Entry 20
+    0x1.ffffffffffffffffffffffffffffffffp-144,
+    0x1.p-143
+  },
+  { // Entry 21
+    -0x1.ffffffffffffffffffffffffffffffffp-144,
+    -0x1.p-143
+  },
+  { // Entry 22
+    0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    0x1.000002p-5
+  },
+  { // Entry 23
+    -0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    -0x1.000002p-5
+  },
+  { // Entry 24
+    0x1.000001fffffffffffffff55555155554p-41,
+    0x1.000002p-41
+  },
+  { // Entry 25
+    -0x1.000001fffffffffffffff55555155554p-41,
+    -0x1.000002p-41
+  },
+  { // Entry 26
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 27
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 28
+    0x1.7912730e9dd8c28d0e2e8849730f0345p4,
+    0x1.000002p33
+  },
+  { // Entry 29
+    -0x1.7912730e9dd8c28d0e2e8849730f0345p4,
+    -0x1.000002p33
+  },
+  { // Entry 30
+    0x1.fead3b0ab2db53675e78fa2d41047d4ap-4,
+    0x1.000018p-3
+  },
+  { // Entry 31
+    -0x1.fead3b0ab2db53675e78fa2d41047d4ap-4,
+    -0x1.000018p-3
+  },
+  { // Entry 32
+    0x1.fead42fae23a4ec3ec74e75d7e6a8e01p-4,
+    0x1.00001cp-3
+  },
+  { // Entry 33
+    -0x1.fead42fae23a4ec3ec74e75d7e6a8e01p-4,
+    -0x1.00001cp-3
+  },
+  { // Entry 34
+    0x1.686fc30f61d32f36cebd3556647e6d85p5,
+    0x1.00004cp64
+  },
+  { // Entry 35
+    -0x1.686fc30f61d32f36cebd3556647e6d85p5,
+    -0x1.00004cp64
+  },
+  { // Entry 36
+    0x1.0c1fb8ff9524366b4770e679f3d2be09p1,
+    0x1.000060p2
+  },
+  { // Entry 37
+    -0x1.0c1fb8ff9524366b4770e679f3d2be09p1,
+    -0x1.000060p2
+  },
+  { // Entry 38
+    0x1.ecc43f011e3008670443b4fad065f492p-2,
+    0x1.0000d0p-1
+  },
+  { // Entry 39
+    -0x1.ecc43f011e3008670443b4fad065f492p-2,
+    -0x1.0000d0p-1
+  },
+  { // Entry 40
+    0x1.feafbe09a9ba162c9d72e1d6bf7564a3p-4,
+    0x1.00015cp-3
+  },
+  { // Entry 41
+    -0x1.feafbe09a9ba162c9d72e1d6bf7564a3p-4,
+    -0x1.00015cp-3
+  },
+  { // Entry 42
+    0x1.c3458525ab38fbabe76fc767cf7a5730p-1,
+    0x1.000180p0
+  },
+  { // Entry 43
+    -0x1.c3458525ab38fbabe76fc767cf7a5730p-1,
+    -0x1.000180p0
+  },
+  { // Entry 44
+    0x1.fad2e50655314fc4b2c8f27b0fc674ddp-3,
+    0x1.0001a6p-2
+  },
+  { // Entry 45
+    -0x1.fad2e50655314fc4b2c8f27b0fc674ddp-3,
+    -0x1.0001a6p-2
+  },
+  { // Entry 46
+    0x1.fff8d74b7e204f81827216900ed8543fp-6,
+    0x1.000716p-5
+  },
+  { // Entry 47
+    -0x1.fff8d74b7e204f81827216900ed8543fp-6,
+    -0x1.000716p-5
+  },
+  { // Entry 48
+    0x1.ffbac9000089648597139384da627d36p-5,
+    0x1.0008p-4
+  },
+  { // Entry 49
+    -0x1.ffbac9000089648597139384da627d36p-5,
+    -0x1.0008p-4
+  },
+  { // Entry 50
+    0x1.fffb13040741e3467cc63b91d9b9d8c7p-6,
+    0x1.000834p-5
+  },
+  { // Entry 51
+    -0x1.fffb13040741e3467cc63b91d9b9d8c7p-6,
+    -0x1.000834p-5
+  },
+  { // Entry 52
+    0x1.fec8d40c701c746cf9bdcc066cc0c5bbp-4,
+    0x1.000ep-3
+  },
+  { // Entry 53
+    -0x1.fec8d40c701c746cf9bdcc066cc0c5bbp-4,
+    -0x1.000ep-3
+  },
+  { // Entry 54
+    0x1.0c3ab19e45eb29d7ac3cb690b07f2c76p1,
+    0x1.0038p2
+  },
+  { // Entry 55
+    -0x1.0c3ab19e45eb29d7ac3cb690b07f2c76p1,
+    -0x1.0038p2
+  },
+  { // Entry 56
+    0x1.c3b5a37f910bfbf8ba8ffc861755f387p-1,
+    0x1.0050cep0
+  },
+  { // Entry 57
+    -0x1.c3b5a37f910bfbf8ba8ffc861755f387p-1,
+    -0x1.0050cep0
+  },
+  { // Entry 58
+    0x1.ff9b301b22a673c34515e6fb85810f60p-4,
+    0x1.0078p-3
+  },
+  { // Entry 59
+    -0x1.ff9b301b22a673c34515e6fb85810f60p-4,
+    -0x1.0078p-3
+  },
+  { // Entry 60
+    0x1.c4bc4cfeab01d553217d775dafbe1e54p-1,
+    0x1.010ac8p0
+  },
+  { // Entry 61
+    -0x1.c4bc4cfeab01d553217d775dafbe1e54p-1,
+    -0x1.010ac8p0
+  },
+  { // Entry 62
+    0x1.fe5b8ef85ffc7ee05a4f3f96b6e60554p-3,
+    0x1.01d4p-2
+  },
+  { // Entry 63
+    -0x1.fe5b8ef85ffc7ee05a4f3f96b6e60554p-3,
+    -0x1.01d4p-2
+  },
+  { // Entry 64
+    0x1.795233437bda10a17c9819cb13d288e3p3,
+    0x1.02p16
+  },
+  { // Entry 65
+    -0x1.795233437bda10a17c9819cb13d288e3p3,
+    -0x1.02p16
+  },
+  { // Entry 66
+    0x1.7952350002c01bfe0af7d7457dbf20dap3,
+    0x1.02000ep16
+  },
+  { // Entry 67
+    -0x1.7952350002c01bfe0af7d7457dbf20dap3,
+    -0x1.02000ep16
+  },
+  { // Entry 68
+    0x1.f1abad0010bc92fb3c926eb5ded61431p-2,
+    0x1.02bf60p-1
+  },
+  { // Entry 69
+    -0x1.f1abad0010bc92fb3c926eb5ded61431p-2,
+    -0x1.02bf60p-1
+  },
+  { // Entry 70
+    0x1.ca35e4554c95b4f73f96234be8db5a0cp-1,
+    0x1.04efa8p0
+  },
+  { // Entry 71
+    -0x1.ca35e4554c95b4f73f96234be8db5a0cp-1,
+    -0x1.04efa8p0
+  },
+  { // Entry 72
+    0x1.f62556ffff16c63d4ba67855548e7a1ap-2,
+    0x1.0541d6p-1
+  },
+  { // Entry 73
+    -0x1.f62556ffff16c63d4ba67855548e7a1ap-2,
+    -0x1.0541d6p-1
+  },
+  { // Entry 74
+    0x1.cc0aec88d32a2ccff738ff8f5e116de3p-1,
+    0x1.063ef4p0
+  },
+  { // Entry 75
+    -0x1.cc0aec88d32a2ccff738ff8f5e116de3p-1,
+    -0x1.063ef4p0
+  },
+  { // Entry 76
+    0x1.06ac7a01a2b93dd343117d62da00efe9p-5,
+    0x1.06b8p-5
+  },
+  { // Entry 77
+    -0x1.06ac7a01a2b93dd343117d62da00efe9p-5,
+    -0x1.06b8p-5
+  },
+  { // Entry 78
+    0x1.78a50f013838dd4ba303180ecb0af32fp0,
+    0x1.0802p1
+  },
+  { // Entry 79
+    -0x1.78a50f013838dd4ba303180ecb0af32fp0,
+    -0x1.0802p1
+  },
+  { // Entry 80
+    0x1.104e01af3396534a594bd72c365a3eedp1,
+    0x1.08c230p2
+  },
+  { // Entry 81
+    -0x1.104e01af3396534a594bd72c365a3eedp1,
+    -0x1.08c230p2
+  },
+  { // Entry 82
+    0x1.d0517f0001a7d9a1e6f44c6bab1469eep-1,
+    0x1.0950c8p0
+  },
+  { // Entry 83
+    -0x1.d0517f0001a7d9a1e6f44c6bab1469eep-1,
+    -0x1.0950c8p0
+  },
+  { // Entry 84
+    0x1.fe0a030fb46d45fb1c02b3272bcd1914p-2,
+    0x1.09b21ap-1
+  },
+  { // Entry 85
+    -0x1.fe0a030fb46d45fb1c02b3272bcd1914p-2,
+    -0x1.09b21ap-1
+  },
+  { // Entry 86
+    0x1.fea6bc4743366aeba868336ffac3acbdp-2,
+    0x1.0a0a66p-1
+  },
+  { // Entry 87
+    -0x1.fea6bc4743366aeba868336ffac3acbdp-2,
+    -0x1.0a0a66p-1
+  },
+  { // Entry 88
+    0x1.d822f300019612b0ea114300b20b6d9dp-1,
+    0x1.0ef9fap0
+  },
+  { // Entry 89
+    -0x1.d822f300019612b0ea114300b20b6d9dp-1,
+    -0x1.0ef9fap0
+  },
+  { // Entry 90
+    0x1.d98a7896e162415f9165e41af5e889cbp-1,
+    0x1.10p0
+  },
+  { // Entry 91
+    -0x1.d98a7896e162415f9165e41af5e889cbp-1,
+    -0x1.10p0
+  },
+  { // Entry 92
+    0x1.1034b2000a6d7c1400fd184bdac732ffp-4,
+    0x1.1068p-4
+  },
+  { // Entry 93
+    -0x1.1034b2000a6d7c1400fd184bdac732ffp-4,
+    -0x1.1068p-4
+  },
+  { // Entry 94
+    0x1.de5c70fffea7cdc7698c00ca7b57f914p-1,
+    0x1.138754p0
+  },
+  { // Entry 95
+    -0x1.de5c70fffea7cdc7698c00ca7b57f914p-1,
+    -0x1.138754p0
+  },
+  { // Entry 96
+    0x1.16a7b0fce815d17a58d940605c85f9cfp-3,
+    0x1.1784p-3
+  },
+  { // Entry 97
+    -0x1.16a7b0fce815d17a58d940605c85f9cfp-3,
+    -0x1.1784p-3
+  },
+  { // Entry 98
+    0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    0x1.18p0
+  },
+  { // Entry 99
+    -0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    -0x1.18p0
+  },
+  { // Entry 100
+    0x1.b6c931c025238ebcf98ef12eb28d8307p5,
+    0x1.18p78
+  },
+  { // Entry 101
+    -0x1.b6c931c025238ebcf98ef12eb28d8307p5,
+    -0x1.18p78
+  },
+  { // Entry 102
+    0x1.7bf48d0006896bad6b7e5e69afbdc70bp3,
+    0x1.1823p16
+  },
+  { // Entry 103
+    -0x1.7bf48d0006896bad6b7e5e69afbdc70bp3,
+    -0x1.1823p16
+  },
+  { // Entry 104
+    0x1.e681682e3230779582a57284cdf10552p-1,
+    0x1.198be0p0
+  },
+  { // Entry 105
+    -0x1.e681682e3230779582a57284cdf10552p-1,
+    -0x1.198be0p0
+  },
+  { // Entry 106
+    0x1.e7ff47ef1be499dbdb2d4c2dab7144d2p-1,
+    0x1.1aa8p0
+  },
+  { // Entry 107
+    -0x1.e7ff47ef1be499dbdb2d4c2dab7144d2p-1,
+    -0x1.1aa8p0
+  },
+  { // Entry 108
+    0x1.19ffa8fffcaa5a70836fe5869d6f3e64p-3,
+    0x1.1ae4p-3
+  },
+  { // Entry 109
+    -0x1.19ffa8fffcaa5a70836fe5869d6f3e64p-3,
+    -0x1.1ae4p-3
+  },
+  { // Entry 110
+    0x1.e8d45f38a22bc64723c44174227b6055p-1,
+    0x1.1b46d0p0
+  },
+  { // Entry 111
+    -0x1.e8d45f38a22bc64723c44174227b6055p-1,
+    -0x1.1b46d0p0
+  },
+  { // Entry 112
+    0x1.e8db53fe01cb2f1941b1e02656828b71p-1,
+    0x1.1b4cp0
+  },
+  { // Entry 113
+    -0x1.e8db53fe01cb2f1941b1e02656828b71p-1,
+    -0x1.1b4cp0
+  },
+  { // Entry 114
+    0x1.e93d1fffffc916cac5df6685ccfb9a95p-1,
+    0x1.1b94f4p0
+  },
+  { // Entry 115
+    -0x1.e93d1fffffc916cac5df6685ccfb9a95p-1,
+    -0x1.1b94f4p0
+  },
+  { // Entry 116
+    0x1.e9cc87321d1ed3ec8130e9128585214cp-1,
+    0x1.1cp0
+  },
+  { // Entry 117
+    -0x1.e9cc87321d1ed3ec8130e9128585214cp-1,
+    -0x1.1cp0
+  },
+  { // Entry 118
+    0x1.18760b00045eb313cf2650593887e2bep6,
+    0x1.1d0740p100
+  },
+  { // Entry 119
+    -0x1.18760b00045eb313cf2650593887e2bep6,
+    -0x1.1d0740p100
+  },
+  { // Entry 120
+    0x1.ed98b1f64a808793ae088a13d43da9c2p-1,
+    0x1.1ed8p0
+  },
+  { // Entry 121
+    -0x1.ed98b1f64a808793ae088a13d43da9c2p-1,
+    -0x1.1ed8p0
+  },
+  { // Entry 122
+    0x1.24f53378690fc7ab8aafbeb62b1c3badp-5,
+    0x1.250530p-5
+  },
+  { // Entry 123
+    -0x1.24f53378690fc7ab8aafbeb62b1c3badp-5,
+    -0x1.250530p-5
+  },
+  { // Entry 124
+    0x1.4a5b157658bb51fe2cd170c897ff9227p-5,
+    0x1.4a7202p-5
+  },
+  { // Entry 125
+    -0x1.4a5b157658bb51fe2cd170c897ff9227p-5,
+    -0x1.4a7202p-5
+  },
+  { // Entry 126
+    0x1.b736e800018136bc46678d296cd029bdp0,
+    0x1.585c20p1
+  },
+  { // Entry 127
+    -0x1.b736e800018136bc46678d296cd029bdp0,
+    -0x1.585c20p1
+  },
+  { // Entry 128
+    0x1.220b35fffea45ca3a7091d0d1dd0328dp0,
+    0x1.6433f4p0
+  },
+  { // Entry 129
+    -0x1.220b35fffea45ca3a7091d0d1dd0328dp0,
+    -0x1.6433f4p0
+  },
+  { // Entry 130
+    0x1.6b88e10b317c9c2d54079667c212fd16p-6,
+    0x1.6b9084p-6
+  },
+  { // Entry 131
+    -0x1.6b88e10b317c9c2d54079667c212fd16p-6,
+    -0x1.6b9084p-6
+  },
+  { // Entry 132
+    0x1.c570240000129c3304aa0b9915097b93p0,
+    0x1.6d505ep1
+  },
+  { // Entry 133
+    -0x1.c570240000129c3304aa0b9915097b93p0,
+    -0x1.6d505ep1
+  },
+  { // Entry 134
+    0x1.71f3de02331239b851f896c8c251b36fp-4,
+    0x1.7274b0p-4
+  },
+  { // Entry 135
+    -0x1.71f3de02331239b851f896c8c251b36fp-4,
+    -0x1.7274b0p-4
+  },
+  { // Entry 136
+    0x1.7fffff000001ccccc883a8462e52c2d1p-10,
+    0x1.800008p-10
+  },
+  { // Entry 137
+    -0x1.7fffff000001ccccc883a8462e52c2d1p-10,
+    -0x1.800008p-10
+  },
+  { // Entry 138
+    0x1.d2c365a2367e0a0f342a944b8fe912adp0,
+    0x1.81f778p1
+  },
+  { // Entry 139
+    -0x1.d2c365a2367e0a0f342a944b8fe912adp0,
+    -0x1.81f778p1
+  },
+  { // Entry 140
+    0x1.7042f9000343b85d0080af58e6ce2a5bp3,
+    0x1.84c61ep15
+  },
+  { // Entry 141
+    -0x1.7042f9000343b85d0080af58e6ce2a5bp3,
+    -0x1.84c61ep15
+  },
+  { // Entry 142
+    0x1.ca328b0b0732378d71b2ed8f94926b5cp5,
+    0x1.8c25e4p81
+  },
+  { // Entry 143
+    -0x1.ca328b0b0732378d71b2ed8f94926b5cp5,
+    -0x1.8c25e4p81
+  },
+  { // Entry 144
+    0x1.6c02870f43f412f2facda9c71af64d9ap5,
+    0x1.9026f4p64
+  },
+  { // Entry 145
+    -0x1.6c02870f43f412f2facda9c71af64d9ap5,
+    -0x1.9026f4p64
+  },
+  { // Entry 146
+    0x1.dc29a21d978c49d5ef40e243da93e547p0,
+    0x1.912912p1
+  },
+  { // Entry 147
+    -0x1.dc29a21d978c49d5ef40e243da93e547p0,
+    -0x1.912912p1
+  },
+  { // Entry 148
+    0x1.e87da9ce17176d9508dd14c470c83b98p0,
+    0x1.a5e970p1
+  },
+  { // Entry 149
+    -0x1.e87da9ce17176d9508dd14c470c83b98p0,
+    -0x1.a5e970p1
+  },
+  { // Entry 150
+    0x1.52728c00e52ef07d6e0a17848d326ee2p1,
+    0x1.bffffep2
+  },
+  { // Entry 151
+    -0x1.52728c00e52ef07d6e0a17848d326ee2p1,
+    -0x1.bffffep2
+  },
+  { // Entry 152
+    0x1.5512b2ffffffdc9663a38b72b6dcdf6fp0,
+    0x1.c3523ep0
+  },
+  { // Entry 153
+    -0x1.5512b2ffffffdc9663a38b72b6dcdf6fp0,
+    -0x1.c3523ep0
+  },
+  { // Entry 154
+    0x1.c52b7d0f27e70062b6eeb63fbfbccb96p-6,
+    0x1.c53a48p-6
+  },
+  { // Entry 155
+    -0x1.c52b7d0f27e70062b6eeb63fbfbccb96p-6,
+    -0x1.c53a48p-6
+  },
+  { // Entry 156
+    0x1.a89b32fff40d30fcb4988c656e03af82p-1,
+    0x1.dafa74p-1
+  },
+  { // Entry 157
+    -0x1.a89b32fff40d30fcb4988c656e03af82p-1,
+    -0x1.dafa74p-1
+  },
+  { // Entry 158
+    0x1.6274b2fffe689d7abb667b3f8ab66e94p0,
+    0x1.df1344p0
+  },
+  { // Entry 159
+    -0x1.6274b2fffe689d7abb667b3f8ab66e94p0,
+    -0x1.df1344p0
+  },
+  { // Entry 160
+    0x1.e9d89afff66699a3a0a0107eec7292b8p-4,
+    0x1.eb03bcp-4
+  },
+  { // Entry 161
+    -0x1.e9d89afff66699a3a0a0107eec7292b8p-4,
+    -0x1.eb03bcp-4
+  },
+  { // Entry 162
+    0x1.baba624cf203c38bfc585ab19463e81bp-1,
+    0x1.f3fffep-1
+  },
+  { // Entry 163
+    -0x1.baba624cf203c38bfc585ab19463e81bp-1,
+    -0x1.f3fffep-1
+  },
+  { // Entry 164
+    0x1.bcc66ead9bdc7bae10b705739ce6273ap-1,
+    0x1.f6dd80p-1
+  },
+  { // Entry 165
+    -0x1.bcc66ead9bdc7bae10b705739ce6273ap-1,
+    -0x1.f6dd80p-1
+  },
+  { // Entry 166
+    0x1.dca21f00608c1d5dfa8c6eb1ce2f725cp4,
+    0x1.f7fffep41
+  },
+  { // Entry 167
+    -0x1.dca21f00608c1d5dfa8c6eb1ce2f725cp4,
+    -0x1.f7fffep41
+  },
+  { // Entry 168
+    0x1.0a2f1d0000074b9fe1702b2e3f079a3bp1,
+    0x1.f81024p1
+  },
+  { // Entry 169
+    -0x1.0a2f1d0000074b9fe1702b2e3f079a3bp1,
+    -0x1.f81024p1
+  },
+  { // Entry 170
+    0x1.f8b8c2d940b76e1cca1ebf54f4195d20p-4,
+    0x1.f9fffep-4
+  },
+  { // Entry 171
+    -0x1.f8b8c2d940b76e1cca1ebf54f4195d20p-4,
+    -0x1.f9fffep-4
+  },
+  { // Entry 172
+    0x1.fa6d06fff6691e956f3207b0a5ca4eeap-4,
+    0x1.fbb796p-4
+  },
+  { // Entry 173
+    -0x1.fa6d06fff6691e956f3207b0a5ca4eeap-4,
+    -0x1.fbb796p-4
+  },
+  { // Entry 174
+    0x1.fd26a51202d84047f50c18a4c4235d86p-6,
+    0x1.fd3ba0p-6
+  },
+  { // Entry 175
+    -0x1.fd26a51202d84047f50c18a4c4235d86p-6,
+    -0x1.fd3ba0p-6
+  },
+  { // Entry 176
+    0x1.eaf8a9005792f097e006d070ec6e7538p-2,
+    0x1.fdfffep-2
+  },
+  { // Entry 177
+    -0x1.eaf8a9005792f097e006d070ec6e7538p-2,
+    -0x1.fdfffep-2
+  },
+  { // Entry 178
+    0x1.ff322f1260d5d5168ca6d76975246012p-7,
+    0x1.ff377ep-7
+  },
+  { // Entry 179
+    -0x1.ff322f1260d5d5168ca6d76975246012p-7,
+    -0x1.ff377ep-7
+  },
+  { // Entry 180
+    0x1.b6102affc7f74638c6d979799db2bfaap5,
+    0x1.ff9ffep77
+  },
+  { // Entry 181
+    -0x1.b6102affc7f74638c6d979799db2bfaap5,
+    -0x1.ff9ffep77
+  },
+  { // Entry 182
+    0x1.ffb29911437bb58cb151e304b1fad9a8p-7,
+    0x1.ffb7ecp-7
+  },
+  { // Entry 183
+    -0x1.ffb29911437bb58cb151e304b1fad9a8p-7,
+    -0x1.ffb7ecp-7
+  },
+  { // Entry 184
+    0x1.fe8d48ac193eaa17e2bb8b9342791f2dp-4,
+    0x1.ffdffep-4
+  },
+  { // Entry 185
+    -0x1.fe8d48ac193eaa17e2bb8b9342791f2dp-4,
+    -0x1.ffdffep-4
+  },
+  { // Entry 186
+    0x1.ffdfa8bad104e0551f02b0530cfad4f8p-9,
+    0x1.ffdffep-9
+  },
+  { // Entry 187
+    -0x1.ffdfa8bad104e0551f02b0530cfad4f8p-9,
+    -0x1.ffdffep-9
+  },
+  { // Entry 188
+    0x1.fea49a3aebbc35e17238eea29547caf8p-4,
+    0x1.fff77ep-4
+  },
+  { // Entry 189
+    -0x1.fea49a3aebbc35e17238eea29547caf8p-4,
+    -0x1.fff77ep-4
+  },
+  { // Entry 190
+    0x1.facf9900599e9e6aa0b023811476fee8p-3,
+    0x1.ffffe6p-3
+  },
+  { // Entry 191
+    -0x1.facf9900599e9e6aa0b023811476fee8p-3,
+    -0x1.ffffe6p-3
+  },
+  { // Entry 192
+    0x1.ffaac50040a9c0881e560e4889792087p-5,
+    0x1.fffff4p-5
+  },
+  { // Entry 193
+    -0x1.ffaac50040a9c0881e560e4889792087p-5,
+    -0x1.fffff4p-5
+  },
+  { // Entry 194
+    0x1.ffaac8fe42289581485ee110507837f6p-5,
+    0x1.fffff8p-5
+  },
+  { // Entry 195
+    -0x1.ffaac8fe42289581485ee110507837f6p-5,
+    -0x1.fffff8p-5
+  },
+  { // Entry 196
+    0x1.c9d926ffffec577f549c952aff8ea67ep-1,
+    0x1.04ad76p0
+  },
+  { // Entry 197
+    -0x1.c9d926ffffec577f549c952aff8ea67ep-1,
+    -0x1.04ad76p0
+  },
+  { // Entry 198
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 199
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 200
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.c0p-1
+  },
+  { // Entry 201
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.c0p-1
+  },
+  { // Entry 202
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.80p-1
+  },
+  { // Entry 203
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.80p-1
+  },
+  { // Entry 204
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.40p-1
+  },
+  { // Entry 205
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.40p-1
+  },
+  { // Entry 206
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.p-1
+  },
+  { // Entry 207
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.p-1
+  },
+  { // Entry 208
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.80p-2
+  },
+  { // Entry 209
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.80p-2
+  },
+  { // Entry 210
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.p-2
+  },
+  { // Entry 211
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.p-2
+  },
+  { // Entry 212
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.p-3
+  },
+  { // Entry 213
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.p-3
+  },
+  { // Entry 214
+    0.0,
+    0.0
+  },
+  { // Entry 215
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.p-3
+  },
+  { // Entry 216
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.p-3
+  },
+  { // Entry 217
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.p-2
+  },
+  { // Entry 218
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.p-2
+  },
+  { // Entry 219
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.80p-2
+  },
+  { // Entry 220
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.80p-2
+  },
+  { // Entry 221
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.p-1
+  },
+  { // Entry 222
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.p-1
+  },
+  { // Entry 223
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.40p-1
+  },
+  { // Entry 224
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.40p-1
+  },
+  { // Entry 225
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.80p-1
+  },
+  { // Entry 226
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.80p-1
+  },
+  { // Entry 227
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.c0p-1
+  },
+  { // Entry 228
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.c0p-1
+  },
+  { // Entry 229
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 230
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 231
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.p100
+  },
+  { // Entry 232
+    -0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    -0x1.p100
+  },
+  { // Entry 233
+    0x1.1869a6d270699e1fa7c307d5fdbce864p6,
+    0x1.19999ap100
+  },
+  { // Entry 234
+    -0x1.1869a6d270699e1fa7c307d5fdbce864p6,
+    -0x1.19999ap100
+  },
+  { // Entry 235
+    0x1.18c2c05650eac97c01479a1a77caa909p6,
+    0x1.333334p100
+  },
+  { // Entry 236
+    -0x1.18c2c05650eac97c01479a1a77caa909p6,
+    -0x1.333334p100
+  },
+  { // Entry 237
+    0x1.1914b70e86721bbde7a2eea6f077d548p6,
+    0x1.4ccccep100
+  },
+  { // Entry 238
+    -0x1.1914b70e86721bbde7a2eea6f077d548p6,
+    -0x1.4ccccep100
+  },
+  { // Entry 239
+    0x1.19609a053a97d6f30409751e6281de59p6,
+    0x1.666668p100
+  },
+  { // Entry 240
+    -0x1.19609a053a97d6f30409751e6281de59p6,
+    -0x1.666668p100
+  },
+  { // Entry 241
+    0x1.19a74017386a428962791f05687972f6p6,
+    0x1.800002p100
+  },
+  { // Entry 242
+    -0x1.19a74017386a428962791f05687972f6p6,
+    -0x1.800002p100
+  },
+  { // Entry 243
+    0x1.19e9567ab98dd45c6898a542a93d6c1bp6,
+    0x1.99999cp100
+  },
+  { // Entry 244
+    -0x1.19e9567ab98dd45c6898a542a93d6c1bp6,
+    -0x1.99999cp100
+  },
+  { // Entry 245
+    0x1.1a276adcd0472f52cdae405190f05814p6,
+    0x1.b33336p100
+  },
+  { // Entry 246
+    -0x1.1a276adcd0472f52cdae405190f05814p6,
+    -0x1.b33336p100
+  },
+  { // Entry 247
+    0x1.1a61f2998eab653e55cda9cf1b8d9e50p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 248
+    -0x1.1a61f2998eab653e55cda9cf1b8d9e50p6,
+    -0x1.ccccd0p100
+  },
+  { // Entry 249
+    0x1.1a994fffd300555a0d63481601d36422p6,
+    0x1.e6666ap100
+  },
+  { // Entry 250
+    -0x1.1a994fffd300555a0d63481601d36422p6,
+    -0x1.e6666ap100
+  },
+  { // Entry 251
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.p101
+  },
+  { // Entry 252
+    -0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    -0x1.p101
+  },
+  { // Entry 253
+    -0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    -0x1.fffffep127
+  },
+  { // Entry 254
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 255
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 256
+    -0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    -0x1.fffffep127
+  },
+  { // Entry 257
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 258
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 259
+    0.0,
+    0.0
+  },
+  { // Entry 260
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 261
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 262
+    -0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    -0x1.100002p-1
+  },
+  { // Entry 263
+    0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    0x1.100002p-1
+  },
+  { // Entry 264
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.10p-1
+  },
+  { // Entry 265
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.10p-1
+  },
+  { // Entry 266
+    -0x1.0499e2483e40900199471311080aa3efp-1,
+    -0x1.0ffffep-1
+  },
+  { // Entry 267
+    0x1.0499e2483e40900199471311080aa3efp-1,
+    0x1.0ffffep-1
+  },
+  { // Entry 268
+    0x1.0499e2483e40900199471311080aa3efp-1,
+    0x1.0ffffep-1
+  },
+  { // Entry 269
+    -0x1.0499e2483e40900199471311080aa3efp-1,
+    -0x1.0ffffep-1
+  },
+  { // Entry 270
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.10p-1
+  },
+  { // Entry 271
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.10p-1
+  },
+  { // Entry 272
+    0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    0x1.100002p-1
+  },
+  { // Entry 273
+    -0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    -0x1.100002p-1
+  },
+  { // Entry 274
+    0x1.62e42fe7a39eef5793c4bc855b3b42b2p5,
+    0x1.fffffep62
+  },
+  { // Entry 275
+    -0x1.62e42fe7a39eef5793c4bc855b3b42b2p5,
+    -0x1.fffffep62
+  },
+  { // Entry 276
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.p63
+  },
+  { // Entry 277
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    -0x1.p63
+  },
+  { // Entry 278
+    0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    0x1.000002p63
+  },
+  { // Entry 279
+    -0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    -0x1.000002p63
+  },
+  { // Entry 280
+    0x1.419ecb612c48048b5de7682e2ddf0845p4,
+    0x1.fffffep27
+  },
+  { // Entry 281
+    -0x1.419ecb612c48048b5de7682e2ddf0845p4,
+    -0x1.fffffep27
+  },
+  { // Entry 282
+    0x1.419ecb712c480c8b5decb58387285d9dp4,
+    0x1.p28
+  },
+  { // Entry 283
+    -0x1.419ecb712c480c8b5decb58387285d9dp4,
+    -0x1.p28
+  },
+  { // Entry 284
+    0x1.419ecb912c47ec8b5e17502df20308aep4,
+    0x1.000002p28
+  },
+  { // Entry 285
+    -0x1.419ecb912c47ec8b5e17502df20308aep4,
+    -0x1.000002p28
+  },
+  { // Entry 286
+    0x1.3687a9e1af2b0cfca14944f4adc3c25ap4,
+    0x1.fffffep26
+  },
+  { // Entry 287
+    -0x1.3687a9e1af2b0cfca14944f4adc3c25ap4,
+    -0x1.fffffep26
+  },
+  { // Entry 288
+    0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    0x1.p27
+  },
+  { // Entry 289
+    -0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    -0x1.p27
+  },
+  { // Entry 290
+    0x1.3687aa11af2af4fca178e4f47253c2c1p4,
+    0x1.000002p27
+  },
+  { // Entry 291
+    -0x1.3687aa11af2af4fca178e4f47253c2c1p4,
+    -0x1.000002p27
+  },
+  { // Entry 292
+    0x1.1542456337d42a1c6b76734837564c23p4,
+    0x1.fffffep23
+  },
+  { // Entry 293
+    -0x1.1542456337d42a1c6b76734837564c23p4,
+    -0x1.fffffep23
+  },
+  { // Entry 294
+    0x1.1542457337d4321c6b73c89d84aba171p4,
+    0x1.p24
+  },
+  { // Entry 295
+    -0x1.1542457337d4321c6b73c89d84aba171p4,
+    -0x1.p24
+  },
+  { // Entry 296
+    0x1.1542459337d4121c6b8e73481f564c0ep4,
+    0x1.000002p24
+  },
+  { // Entry 297
+    -0x1.1542459337d4121c6b8e73481f564c0ep4,
+    -0x1.000002p24
+  },
+  { // Entry 298
+    0x1.0c1f89f2534d548373a25a26f285c8e4p1,
+    0x1.fffffep1
+  },
+  { // Entry 299
+    -0x1.0c1f89f2534d548373a25a26f285c8e4p1,
+    -0x1.fffffep1
+  },
+  { // Entry 300
+    0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    0x1.p2
+  },
+  { // Entry 301
+    -0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    -0x1.p2
+  },
+  { // Entry 302
+    0x1.0c1f8b66dc300f1430203df7b7466063p1,
+    0x1.000002p2
+  },
+  { // Entry 303
+    -0x1.0c1f8b66dc300f1430203df7b7466063p1,
+    -0x1.000002p2
+  },
+  { // Entry 304
+    0x1.7192174c43d9e96299f78116852f0226p0,
+    0x1.fffffep0
+  },
+  { // Entry 305
+    -0x1.7192174c43d9e96299f78116852f0226p0,
+    -0x1.fffffep0
+  },
+  { // Entry 306
+    0x1.719218313d0872f8e831837f0e954189p0,
+    0x1.p1
+  },
+  { // Entry 307
+    -0x1.719218313d0872f8e831837f0e954189p0,
+    -0x1.p1
+  },
+  { // Entry 308
+    0x1.719219fb2f63609c4a04634fb68878aep0,
+    0x1.000002p1
+  },
+  { // Entry 309
+    -0x1.719219fb2f63609c4a04634fb68878aep0,
+    -0x1.000002p1
+  },
+  { // Entry 310
+    0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    0x1.fffffep-1
+  },
+  { // Entry 311
+    -0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 312
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 313
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 314
+    0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    0x1.000002p0
+  },
+  { // Entry 315
+    -0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    -0x1.000002p0
+  },
+  { // Entry 316
+    0x1.ecc2c9225f040f819311fcc70a981347p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 317
+    -0x1.ecc2c9225f040f819311fcc70a981347p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 318
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.p-1
+  },
+  { // Entry 319
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.p-1
+  },
+  { // Entry 320
+    0x1.ecc2ce8036189a1bdcaca590368850b2p-2,
+    0x1.000002p-1
+  },
+  { // Entry 321
+    -0x1.ecc2ce8036189a1bdcaca590368850b2p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 322
+    0x1.facfb048e7ded2c6807bda0b8101be5ep-3,
+    0x1.fffffep-3
+  },
+  { // Entry 323
+    -0x1.facfb048e7ded2c6807bda0b8101be5ep-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 324
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.p-2
+  },
+  { // Entry 325
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.p-2
+  },
+  { // Entry 326
+    0x1.facfb61b0b6c4e73771a7b444600d862p-3,
+    0x1.000002p-2
+  },
+  { // Entry 327
+    -0x1.facfb61b0b6c4e73771a7b444600d862p-3,
+    -0x1.000002p-2
+  },
+  { // Entry 328
+    0x1.fead096d8abe9f0e7222b9aab95512f1p-4,
+    0x1.fffffep-4
+  },
+  { // Entry 329
+    -0x1.fead096d8abe9f0e7222b9aab95512f1p-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 330
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.p-3
+  },
+  { // Entry 331
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.p-3
+  },
+  { // Entry 332
+    0x1.fead0f61ae4831826943c3b871be46a4p-4,
+    0x1.000002p-3
+  },
+  { // Entry 333
+    -0x1.fead0f61ae4831826943c3b871be46a4p-4,
+    -0x1.000002p-3
+  },
+  { // Entry 334
+    0x1.ffaacefb4466c60d6ba2d2fac8774fdap-5,
+    0x1.fffffep-5
+  },
+  { // Entry 335
+    -0x1.ffaacefb4466c60d6ba2d2fac8774fdap-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 336
+    0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    0x1.p-4
+  },
+  { // Entry 337
+    -0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    -0x1.p-4
+  },
+  { // Entry 338
+    0x1.ffaad4f846a4e4b46d5fa87174990d96p-5,
+    0x1.000002p-4
+  },
+  { // Entry 339
+    -0x1.ffaad4f846a4e4b46d5fa87174990d96p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 340
+    0x1.ffeaab10f5a6e7d189c57c0e68bbb03ap-6,
+    0x1.fffffep-6
+  },
+  { // Entry 341
+    -0x1.ffeaab10f5a6e7d189c57c0e68bbb03ap-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 342
+    0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    0x1.p-5
+  },
+  { // Entry 343
+    -0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    -0x1.p-5
+  },
+  { // Entry 344
+    0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    0x1.000002p-5
+  },
+  { // Entry 345
+    -0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    -0x1.000002p-5
+  },
+  { // Entry 346
+    0x1.fffaa8d11fa2a9bd25f4c3a139791ba3p-7,
+    0x1.fffffep-7
+  },
+  { // Entry 347
+    -0x1.fffaa8d11fa2a9bd25f4c3a139791ba3p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 348
+    0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    0x1.p-6
+  },
+  { // Entry 349
+    -0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    -0x1.p-6
+  },
+  { // Entry 350
+    0x1.fffaaed0efa4e96f2c182216a1ad2218p-7,
+    0x1.000002p-6
+  },
+  { // Entry 351
+    -0x1.fffaaed0efa4e96f2c182216a1ad2218p-7,
+    -0x1.000002p-6
+  },
+  { // Entry 352
+    0x1.fffffdfaaaaabad111004fa36115083cp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 353
+    -0x1.fffffdfaaaaabad111004fa36115083cp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 354
+    0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    0x1.p-14
+  },
+  { // Entry 355
+    -0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    -0x1.p-14
+  },
+  { // Entry 356
+    0x1.000001fd55554568886947d19abb8424p-14,
+    0x1.000002p-14
+  },
+  { // Entry 357
+    -0x1.000001fd55554568886947d19abb8424p-14,
+    -0x1.000002p-14
+  },
+  { // Entry 358
+    0x1.fffffdfffffffeaaaaaeaaaaa6ad1112p-28,
+    0x1.fffffep-28
+  },
+  { // Entry 359
+    -0x1.fffffdfffffffeaaaaaeaaaaa6ad1112p-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 360
+    0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    0x1.p-27
+  },
+  { // Entry 361
+    -0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    -0x1.p-27
+  },
+  { // Entry 362
+    0x1.000001ffffffff55555155554d568883p-27,
+    0x1.000002p-27
+  },
+  { // Entry 363
+    -0x1.000001ffffffff55555155554d568883p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 364
+    0x1.fffffdffffffffaaaaabaaaaa9aad111p-29,
+    0x1.fffffep-29
+  },
+  { // Entry 365
+    -0x1.fffffdffffffffaaaaabaaaaa9aad111p-29,
+    -0x1.fffffep-29
+  },
+  { // Entry 366
+    0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    0x1.p-28
+  },
+  { // Entry 367
+    -0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    -0x1.p-28
+  },
+  { // Entry 368
+    0x1.000001ffffffffd55554555553556887p-28,
+    0x1.000002p-28
+  },
+  { // Entry 369
+    -0x1.000001ffffffffd55554555553556887p-28,
+    -0x1.000002p-28
+  },
+  { // Entry 370
+    0x1.fffffdfffffffffaaaaabaaaaa9aaad1p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 371
+    -0x1.fffffdfffffffffaaaaabaaaaa9aaad1p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 372
+    0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    0x1.p-30
+  },
+  { // Entry 373
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    -0x1.p-30
+  },
+  { // Entry 374
+    0x1.000001fffffffffd5555455555355568p-30,
+    0x1.000002p-30
+  },
+  { // Entry 375
+    -0x1.000001fffffffffd5555455555355568p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 376
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 377
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 378
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 379
+    -0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    -0x1.fffffep127
+  },
+  { // Entry 380
+    0x1.65a9f84782e6293e42e44b53ad4b0e74p6,
+    0x1.fffffcp127
+  },
+  { // Entry 381
+    -0x1.65a9f84782e6293e42e44b53ad4b0e74p6,
+    -0x1.fffffcp127
+  },
+  { // Entry 382
+    0x1.dcbf6a62e35477f9ae79be71ed97620bp0,
+    0x1.921fb6p1
+  },
+  { // Entry 383
+    -0x1.dcbf6a62e35477f9ae79be71ed97620bp0,
+    -0x1.921fb6p1
+  },
+  { // Entry 384
+    0x1.3bc04ee951032b4f7509b3b2e0f0715ap0,
+    0x1.921fb6p0
+  },
+  { // Entry 385
+    -0x1.3bc04ee951032b4f7509b3b2e0f0715ap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 386
+    0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    0x1.000002p0
+  },
+  { // Entry 387
+    -0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    -0x1.000002p0
+  },
+  { // Entry 388
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 389
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 390
+    0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    0x1.fffffep-1
+  },
+  { // Entry 391
+    -0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 392
+    0x1.71447831e43cde2ed30650428c5a8410p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 393
+    -0x1.71447831e43cde2ed30650428c5a8410p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 394
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 395
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 396
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 397
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 398
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 399
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 400
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 401
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 402
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 403
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 404
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 405
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 406
+    0.0,
+    0.0f
+  },
+  { // Entry 407
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/atan2_intel_data.h b/tests/math_data/atan2_intel_data.h
new file mode 100644
index 0000000..5d9eb44
--- /dev/null
+++ b/tests/math_data/atan2_intel_data.h
@@ -0,0 +1,5348 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_atan2_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffffffffff20000000000061fffd55p-60,
+    -0x1.0p-100,
+    0x1.0000000000007p-41
+  },
+  { // Entry 1
+    0x1.ffffffffffff20000000000061fffd55p-60,
+    0x1.0p-100,
+    0x1.0000000000007p-41
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.0p-1073,
+    0x1.0000000000001p1
+  },
+  { // Entry 3
+    0.0,
+    0x1.0p-1073,
+    0x1.0000000000001p1
+  },
+  { // Entry 4
+    -0x1.cd648010e76317fd25f197c89894a747p-1,
+    -0x1.0p10,
+    0x1.955555555555ep9
+  },
+  { // Entry 5
+    0x1.cd648010e76317fd25f197c89894a747p-1,
+    0x1.0p10,
+    0x1.955555555555ep9
+  },
+  { // Entry 6
+    -0x1.0000000000000800000000000040p-924,
+    -0x1.0p100,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 7
+    0x1.0000000000000800000000000040p-924,
+    0x1.0p100,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 8
+    -0x1.0945ca475762680110c86c82f4007bdap1,
+    -0x1.0000000000001p0,
+    -0x1.18cd584e6112bp-1
+  },
+  { // Entry 9
+    0x1.0945ca475762680110c86c82f4007bdap1,
+    0x1.0000000000001p0,
+    -0x1.18cd584e6112bp-1
+  },
+  { // Entry 10
+    -0x1.f9ca0e1dd954324b96732f0ae9c1c8ffp-3,
+    -0x1.0222222222222p0,
+    0x1.ffeffffffffffp1
+  },
+  { // Entry 11
+    0x1.f9ca0e1dd954324b96732f0ae9c1c8ffp-3,
+    0x1.0222222222222p0,
+    0x1.ffeffffffffffp1
+  },
+  { // Entry 12
+    -0x1.fff9653e6201f888937cfc2d716b4d44p-2,
+    -0x1.14171f06bfb89p-2,
+    0x1.f96902dccd29ap-2
+  },
+  { // Entry 13
+    0x1.fff9653e6201f888937cfc2d716b4d44p-2,
+    0x1.14171f06bfb89p-2,
+    0x1.f96902dccd29ap-2
+  },
+  { // Entry 14
+    -0x1.ff572aded0be932feeb4707dcb65336dp0,
+    -0x1.1999999999998p-2,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 15
+    0x1.ff572aded0be932feeb4707dcb65336dp0,
+    0x1.1999999999998p-2,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 16
+    -0x1.ff542758ef05b8e7de0d70e2d341ed67p0,
+    -0x1.1999999999999p-1,
+    -0x1.ffeffffffffffp-3
+  },
+  { // Entry 17
+    0x1.ff542758ef05b8e7de0d70e2d341ed67p0,
+    0x1.1999999999999p-1,
+    -0x1.ffeffffffffffp-3
+  },
+  { // Entry 18
+    -0x1.2fffffffffffffffffffffffffffffffp-1071,
+    -0x1.3p-1070,
+    0x1.0p1
+  },
+  { // Entry 19
+    0x1.2fffffffffffffffffffffffffffffffp-1071,
+    0x1.3p-1070,
+    0x1.0p1
+  },
+  { // Entry 20
+    -0x1.85539729ef1727fed15784b60b91b2ecp-1,
+    -0x1.3cf3cf3cf3cf4p9,
+    0x1.4d34d34d34d34p9
+  },
+  { // Entry 21
+    0x1.85539729ef1727fed15784b60b91b2ecp-1,
+    0x1.3cf3cf3cf3cf4p9,
+    0x1.4d34d34d34d34p9
+  },
+  { // Entry 22
+    -0x1.40000000000008000000000000fffd65p-59,
+    -0x1.3fffffffffffep42,
+    0x1.ffffffffffffcp100
+  },
+  { // Entry 23
+    0x1.40000000000008000000000000fffd65p-59,
+    0x1.3fffffffffffep42,
+    0x1.ffffffffffffcp100
+  },
+  { // Entry 24
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.4p-1072,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 25
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.4p-1072,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 26
+    -0x1.3fffffffffffffffffffffffffffffffp-1073,
+    -0x1.4p-1072,
+    0x1.0p1
+  },
+  { // Entry 27
+    0x1.3fffffffffffffffffffffffffffffffp-1073,
+    0x1.4p-1072,
+    0x1.0p1
+  },
+  { // Entry 28
+    -0x1.5ffe7c27a5cf37fef15668ed8bfdc92cp-1,
+    -0x1.6477c84a032cep-1,
+    0x1.b21f69ae030b0p-1
+  },
+  { // Entry 29
+    0x1.5ffe7c27a5cf37fef15668ed8bfdc92cp-1,
+    0x1.6477c84a032cep-1,
+    0x1.b21f69ae030b0p-1
+  },
+  { // Entry 30
+    -0x1.66719908f7c3b796d84184977c923894p-12,
+    -0x1.6666666665b64p-1,
+    0x1.ffeffffffffffp10
+  },
+  { // Entry 31
+    0x1.66719908f7c3b796d84184977c923894p-12,
+    0x1.6666666665b64p-1,
+    0x1.ffeffffffffffp10
+  },
+  { // Entry 32
+    -0x1.667199f33acd08010011a82e9838500dp-52,
+    -0x1.6666666666668p-1,
+    0x1.ffeffffff924fp50
+  },
+  { // Entry 33
+    0x1.667199f33acd08010011a82e9838500dp-52,
+    0x1.6666666666668p-1,
+    0x1.ffeffffff924fp50
+  },
+  { // Entry 34
+    -0x1.48ef86a5d674e7fe626345caa6dea1adp0,
+    -0x1.6e589292a58a8p3,
+    0x1.aebd9564499f0p1
+  },
+  { // Entry 35
+    0x1.48ef86a5d674e7fe626345caa6dea1adp0,
+    0x1.6e589292a58a8p3,
+    0x1.aebd9564499f0p1
+  },
+  { // Entry 36
+    -0x1.69412651b663880102057ffe2b6916e7p-2,
+    -0x1.7906fe92593dcp-2,
+    0x1.0p0
+  },
+  { // Entry 37
+    0x1.69412651b663880102057ffe2b6916e7p-2,
+    0x1.7906fe92593dcp-2,
+    0x1.0p0
+  },
+  { // Entry 38
+    -0x1.7fffffffffff97ffb800000013803a80p-33,
+    -0x1.7fffffffffffep0,
+    0x1.0000000000003p33
+  },
+  { // Entry 39
+    0x1.7fffffffffff97ffb800000013803a80p-33,
+    0x1.7fffffffffffep0,
+    0x1.0000000000003p33
+  },
+  { // Entry 40
+    -0x1.7fffffffee0020000184c84cd0a5bfb7p-18,
+    -0x1.7ffffffffffffp0,
+    0x1.ffffffffffffcp17
+  },
+  { // Entry 41
+    0x1.7fffffffee0020000184c84cd0a5bfb7p-18,
+    0x1.7ffffffffffffp0,
+    0x1.ffffffffffffcp17
+  },
+  { // Entry 42
+    -0x1.01b7ead625912801099d55f3bb6d9b74p0,
+    -0x1.8e38e38e38e39p9,
+    0x1.f7df7df7df7dep8
+  },
+  { // Entry 43
+    0x1.01b7ead625912801099d55f3bb6d9b74p0,
+    0x1.8e38e38e38e39p9,
+    0x1.f7df7df7df7dep8
+  },
+  { // Entry 44
+    -0x1.119e0f7084d96bc18bbf2e7a08cfe5adp1,
+    -0x1.9249249249246p-2,
+    -0x1.001p-2
+  },
+  { // Entry 45
+    0x1.119e0f7084d96bc18bbf2e7a08cfe5adp1,
+    0x1.9249249249246p-2,
+    -0x1.001p-2
+  },
+  { // Entry 46
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.99999999999a8p-4,
+    0x1.0p-1074
+  },
+  { // Entry 47
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.99999999999a8p-4,
+    0x1.0p-1074
+  },
+  { // Entry 48
+    -0x1.37626c23803aec7d7a70f700585852f4p-1,
+    -0x1.a77569dd5a776p8,
+    0x1.301ecc07b301ep9
+  },
+  { // Entry 49
+    0x1.37626c23803aec7d7a70f700585852f4p-1,
+    0x1.a77569dd5a776p8,
+    0x1.301ecc07b301ep9
+  },
+  { // Entry 50
+    -0x1.0ca7cc2d0d7fd03164ee3af269e6bf79p1,
+    -0x1.b6db6db6db6e0p-1,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 51
+    0x1.0ca7cc2d0d7fd03164ee3af269e6bf79p1,
+    0x1.b6db6db6db6e0p-1,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 52
+    -0x1.a271f63e34fb2fff42b98e7a5ab17eafp-2,
+    -0x1.bb67ae8584c96p-1,
+    0x1.0000000000008p1
+  },
+  { // Entry 53
+    0x1.a271f63e34fb2fff42b98e7a5ab17eafp-2,
+    0x1.bb67ae8584c96p-1,
+    0x1.0000000000008p1
+  },
+  { // Entry 54
+    -0x1.f0845de317dae782ac3e8a7eb1fadd63p-2,
+    -0x1.bed61bed61be4p7,
+    0x1.a814afd6a053bp8
+  },
+  { // Entry 55
+    0x1.f0845de317dae782ac3e8a7eb1fadd63p-2,
+    0x1.bed61bed61be4p7,
+    0x1.a814afd6a053bp8
+  },
+  { // Entry 56
+    -0x1.3a51f5f0cb5d33de07ac24a32621878dp-1,
+    -0x1.c18f9c18f9c3ep7,
+    0x1.3ef368eb04334p8
+  },
+  { // Entry 57
+    0x1.3a51f5f0cb5d33de07ac24a32621878dp-1,
+    0x1.c18f9c18f9c3ep7,
+    0x1.3ef368eb04334p8
+  },
+  { // Entry 58
+    -0x1.fcb510cd5b6bbb8cde13f46dbeeb3110p-3,
+    -0x1.d26a2bad98d68p-2,
+    0x1.cbbd407a7a5b0p0
+  },
+  { // Entry 59
+    0x1.fcb510cd5b6bbb8cde13f46dbeeb3110p-3,
+    0x1.d26a2bad98d68p-2,
+    0x1.cbbd407a7a5b0p0
+  },
+  { // Entry 60
+    -0x1.cd5de97a2e3e1859fc3e2517de7a0880p-3,
+    -0x1.d555555555555p0,
+    0x1.0000000000003p3
+  },
+  { // Entry 61
+    0x1.cd5de97a2e3e1859fc3e2517de7a0880p-3,
+    0x1.d555555555555p0,
+    0x1.0000000000003p3
+  },
+  { // Entry 62
+    -0x1.337d175e088fb7fa32fafca382768a15p-3,
+    -0x1.db8a874640569p-3,
+    0x1.88eed10e75135p0
+  },
+  { // Entry 63
+    0x1.337d175e088fb7fa32fafca382768a15p-3,
+    0x1.db8a874640569p-3,
+    0x1.88eed10e75135p0
+  },
+  { // Entry 64
+    -0x1.f9d28f3da09c8864390cd924ac658d33p0,
+    -0x1.ddddddddddde0p-2,
+    -0x1.99ce075f6fd27p-3
+  },
+  { // Entry 65
+    0x1.f9d28f3da09c8864390cd924ac658d33p0,
+    0x1.ddddddddddde0p-2,
+    -0x1.99ce075f6fd27p-3
+  },
+  { // Entry 66
+    -0x1.ae127b4fb5a7e81cc14c8d0627d18c73p-8,
+    -0x1.eccd7fdf96454p10,
+    0x1.255608e135d80p18
+  },
+  { // Entry 67
+    0x1.ae127b4fb5a7e81cc14c8d0627d18c73p-8,
+    0x1.eccd7fdf96454p10,
+    0x1.255608e135d80p18
+  },
+  { // Entry 68
+    -0x1.09121b4b0fb15403f902f2d06a8f1034p1,
+    -0x1.f5a814afd6a05p9,
+    -0x1.1219dbcc48673p9
+  },
+  { // Entry 69
+    0x1.09121b4b0fb15403f902f2d06a8f1034p1,
+    0x1.f5a814afd6a05p9,
+    -0x1.1219dbcc48673p9
+  },
+  { // Entry 70
+    -0x1.ffd55bba97625a80f03aaeebb3192417p-6,
+    -0x1.ffffffffffffdp-1,
+    0x1.ffffffffffffcp4
+  },
+  { // Entry 71
+    0x1.ffd55bba97625a80f03aaeebb3192417p-6,
+    0x1.ffffffffffffdp-1,
+    0x1.ffffffffffffcp4
+  },
+  { // Entry 72
+    0x1.ffffffffffffe0000000000001fffffdp-64,
+    0x1.0p-53,
+    0x1.0000000000001p10
+  },
+  { // Entry 73
+    -0x1.ffffffffffffe0000000000001fffffdp-64,
+    -0x1.0p-53,
+    0x1.0000000000001p10
+  },
+  { // Entry 74
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 75
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 76
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.99999999999a8p-4
+  },
+  { // Entry 77
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.99999999999a8p-4
+  },
+  { // Entry 78
+    0.0,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 80
+    0x1.ffffffffffffe0000000000001ffffffp-1074,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 81
+    -0x1.ffffffffffffe0000000000001ffffffp-1074,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 82
+    0.0,
+    0x1.0p-1074,
+    0x1.0222222222223p0
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0222222222223p0
+  },
+  { // Entry 84
+    0.0,
+    0x1.0p-1074,
+    0x1.03126e978d4fep0
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.0p-1074,
+    0x1.03126e978d4fep0
+  },
+  { // Entry 86
+    0.0,
+    0x1.0p-1074,
+    0x1.0a3d70a3d70a3p0
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0a3d70a3d70a3p0
+  },
+  { // Entry 88
+    0x1.0b833be165ccd3f3660d385792d30b1fp1,
+    0x1.0000000000001p-2,
+    -0x1.24924924924aap-3
+  },
+  { // Entry 89
+    -0x1.0b833be165ccd3f3660d385792d30b1fp1,
+    -0x1.0000000000001p-2,
+    -0x1.24924924924aap-3
+  },
+  { // Entry 90
+    0x1.5522d16b2f5a7d52fbf6dd4ea12734c4p-5,
+    0x1.0000000000001p-4,
+    0x1.8000000000001p0
+  },
+  { // Entry 91
+    -0x1.5522d16b2f5a7d52fbf6dd4ea12734c4p-5,
+    -0x1.0000000000001p-4,
+    0x1.8000000000001p0
+  },
+  { // Entry 92
+    0x1.7ffffffedfffe80184cd02ca5ef0e59ap-16,
+    0x1.0000000000001p-17,
+    0x1.5555555555558p-2
+  },
+  { // Entry 93
+    -0x1.7ffffffedfffe80184cd02ca5ef0e59ap-16,
+    -0x1.0000000000001p-17,
+    0x1.5555555555558p-2
+  },
+  { // Entry 94
+    0x1.00000000000017ffaaaaaaaaab6a92aap-32,
+    0x1.0000000000001p-31,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 95
+    -0x1.00000000000017ffaaaaaaaaab6a92aap-32,
+    -0x1.0000000000001p-31,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 96
+    0x1.00000000000027ffffffaaaaae6aaaaap-40,
+    0x1.0000000000001p-41,
+    0x1.ffffffffffffdp-2
+  },
+  { // Entry 97
+    -0x1.00000000000027ffffffaaaaae6aaaaap-40,
+    -0x1.0000000000001p-41,
+    0x1.ffffffffffffdp-2
+  },
+  { // Entry 98
+    0x1.000000000000680000000000103faaaap-56,
+    0x1.0000000000004p1,
+    0x1.ffffffffffffbp56
+  },
+  { // Entry 99
+    -0x1.000000000000680000000000103faaaap-56,
+    -0x1.0000000000004p1,
+    0x1.ffffffffffffbp56
+  },
+  { // Entry 100
+    0x1.fd5ba9aac2f7c8b4561b80036f0e165cp-4,
+    0x1.0000000000007p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 101
+    -0x1.fd5ba9aac2f7c8b4561b80036f0e165cp-4,
+    -0x1.0000000000007p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 102
+    0x1.ff55bb72cfe2e821e203716e1d97a257p-5,
+    0x1.000000000001cp-3,
+    0x1.ffffffffffff3p0
+  },
+  { // Entry 103
+    -0x1.ff55bb72cfe2e821e203716e1d97a257p-5,
+    -0x1.000000000001cp-3,
+    0x1.ffffffffffff3p0
+  },
+  { // Entry 104
+    0x1.38e36745aef6d7ab02058b0c0c876fc8p-9,
+    0x1.00000000004d6p-8,
+    0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 105
+    -0x1.38e36745aef6d7ab02058b0c0c876fc8p-9,
+    -0x1.00000000004d6p-8,
+    0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 106
+    0x1.3ff4325a8437500000286dff86bc02adp-1,
+    0x1.00000009f0205p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 107
+    -0x1.3ff4325a8437500000286dff86bc02adp-1,
+    -0x1.00000009f0205p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 108
+    0x1.b4f5f236308b48037fe229608c1d81fbp-2,
+    0x1.001p-1,
+    0x1.199999999999ap0
+  },
+  { // Entry 109
+    -0x1.b4f5f236308b48037fe229608c1d81fbp-2,
+    -0x1.001p-1,
+    0x1.199999999999ap0
+  },
+  { // Entry 110
+    0x1.9242e6442d4317ff2531ceafca8af0f4p0,
+    0x1.001p10,
+    -0x1.1999999999999p-1
+  },
+  { // Entry 111
+    -0x1.9242e6442d4317ff2531ceafca8af0f4p0,
+    -0x1.001p10,
+    -0x1.1999999999999p-1
+  },
+  { // Entry 112
+    0x1.046862a40cbe6ab9070021df9e1e411bp1,
+    0x1.0175fcd4ab261p1,
+    -0x1.01749ca942943p0
+  },
+  { // Entry 113
+    -0x1.046862a40cbe6ab9070021df9e1e411bp1,
+    -0x1.0175fcd4ab261p1,
+    -0x1.01749ca942943p0
+  },
+  { // Entry 114
+    0x1.9b2bb7e10b2677febb378df81a94d587p-1,
+    0x1.066b3f39ae7a1p0,
+    0x1.fa9c4b9f46842p-1
+  },
+  { // Entry 115
+    -0x1.9b2bb7e10b2677febb378df81a94d587p-1,
+    -0x1.066b3f39ae7a1p0,
+    0x1.fa9c4b9f46842p-1
+  },
+  { // Entry 116
+    0x1.e897850a716e4889a143afe6cdae77d1p-2,
+    0x1.08b1d3b97c955p-2,
+    0x1.0p-1
+  },
+  { // Entry 117
+    -0x1.e897850a716e4889a143afe6cdae77d1p-2,
+    -0x1.08b1d3b97c955p-2,
+    0x1.0p-1
+  },
+  { // Entry 118
+    0x1.13e7bb06113d680135e98e8c2e9c9628p-92,
+    0x1.09d89d89d89d8p9,
+    0x1.ed55555555573p100
+  },
+  { // Entry 119
+    -0x1.13e7bb06113d680135e98e8c2e9c9628p-92,
+    -0x1.09d89d89d89d8p9,
+    0x1.ed55555555573p100
+  },
+  { // Entry 120
+    0x1.ff572aded0be7136f236315e3c9eccb7p0,
+    0x1.199999999999cp-1,
+    -0x1.ffffffffffffep-3
+  },
+  { // Entry 121
+    -0x1.ff572aded0be7136f236315e3c9eccb7p0,
+    -0x1.199999999999cp-1,
+    -0x1.ffffffffffffep-3
+  },
+  { // Entry 122
+    0x1.196ba6878b92680ebe4a5666ff18a384p-5,
+    0x1.199999999999cp-2,
+    0x1.001p3
+  },
+  { // Entry 123
+    -0x1.196ba6878b92680ebe4a5666ff18a384p-5,
+    -0x1.199999999999cp-2,
+    0x1.001p3
+  },
+  { // Entry 124
+    0x1.1b4a29a02a9c87fffdb48e539399967ap-3,
+    0x1.1adec7d06a010p-2,
+    0x1.fbfa204c8234cp0
+  },
+  { // Entry 125
+    -0x1.1b4a29a02a9c87fffdb48e539399967ap-3,
+    -0x1.1adec7d06a010p-2,
+    0x1.fbfa204c8234cp0
+  },
+  { // Entry 126
+    0x1.19dcd054169247fffd4cc05900e64848p-2,
+    0x1.213422ec61f53p-3,
+    0x1.0p-1
+  },
+  { // Entry 127
+    -0x1.19dcd054169247fffd4cc05900e64848p-2,
+    -0x1.213422ec61f53p-3,
+    0x1.0p-1
+  },
+  { // Entry 128
+    0x1.b3b95bdcb30277fec23bb4be90b63531p-1,
+    0x1.2776fe2145bd5p0,
+    0x1.0306216790738p0
+  },
+  { // Entry 129
+    -0x1.b3b95bdcb30277fec23bb4be90b63531p-1,
+    -0x1.2776fe2145bd5p0,
+    0x1.0306216790738p0
+  },
+  { // Entry 130
+    0x1.ee0c54984cb15edcdcb239dbfffd57dep-4,
+    0x1.27fb7de0e57c8p12,
+    0x1.313f9061390p15
+  },
+  { // Entry 131
+    -0x1.ee0c54984cb15edcdcb239dbfffd57dep-4,
+    -0x1.27fb7de0e57c8p12,
+    0x1.313f9061390p15
+  },
+  { // Entry 132
+    0x1.27ff4834766d779860765d14b68788cep-8,
+    0x1.27fb7de0e57c8p12,
+    0x1.fff88d6e2d934p19
+  },
+  { // Entry 133
+    -0x1.27ff4834766d779860765d14b68788cep-8,
+    -0x1.27fb7de0e57c8p12,
+    0x1.fff88d6e2d934p19
+  },
+  { // Entry 134
+    0x1.f9c6b238c6435777790ced0df81049e2p0,
+    0x1.2aaaaaaaaaaabp0,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 135
+    -0x1.f9c6b238c6435777790ced0df81049e2p0,
+    -0x1.2aaaaaaaaaaabp0,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 136
+    0x1.2aaaaaaaaaaa77ff787e6b74f9b2d658p-32,
+    0x1.2aaaaaaaaaaabp0,
+    0x1.0000000000003p32
+  },
+  { // Entry 137
+    -0x1.2aaaaaaaaaaa77ff787e6b74f9b2d658p-32,
+    -0x1.2aaaaaaaaaaabp0,
+    0x1.0000000000003p32
+  },
+  { // Entry 138
+    0x1.edae91ebbfb8780006f7e9144583c7b3p0,
+    0x1.2d66ca857bf9ap0,
+    -0x1.c28f5c28f5c28p-2
+  },
+  { // Entry 139
+    -0x1.edae91ebbfb8780006f7e9144583c7b3p0,
+    -0x1.2d66ca857bf9ap0,
+    -0x1.c28f5c28f5c28p-2
+  },
+  { // Entry 140
+    0x1.9d5a77d67cf1d7febab338e68f258f5ap-1,
+    0x1.2e12530a85951p2,
+    0x1.211a7b9611a7bp2
+  },
+  { // Entry 141
+    -0x1.9d5a77d67cf1d7febab338e68f258f5ap-1,
+    -0x1.2e12530a85951p2,
+    0x1.211a7b9611a7bp2
+  },
+  { // Entry 142
+    0x1.a244e21ebefa8fffffbfabeaba9e67acp-2,
+    0x1.3333333d813abp-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 143
+    -0x1.a244e21ebefa8fffffbfabeaba9e67acp-2,
+    -0x1.3333333d813abp-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 144
+    0x1.90a08b292067f00094284270c3b75547p-4,
+    0x1.3deb308a9c960p-4,
+    0x1.9500a27c6a82ep-1
+  },
+  { // Entry 145
+    -0x1.90a08b292067f00094284270c3b75547p-4,
+    -0x1.3deb308a9c960p-4,
+    0x1.9500a27c6a82ep-1
+  },
+  { // Entry 146
+    0x1.a896592d6fdb57b63fa6ed728b91fe47p-5,
+    0x1.420bc59c42c7cp2,
+    0x1.83fffffffffffp6
+  },
+  { // Entry 147
+    -0x1.a896592d6fdb57b63fa6ed728b91fe47p-5,
+    -0x1.420bc59c42c7cp2,
+    0x1.83fffffffffffp6
+  },
+  { // Entry 148
+    0x1.25e3010ff1ed37fe769fa76dea43608cp1,
+    0x1.494b48acbe5b0p-9,
+    -0x1.23da61f087530p-9
+  },
+  { // Entry 149
+    -0x1.25e3010ff1ed37fe769fa76dea43608cp1,
+    -0x1.494b48acbe5b0p-9,
+    -0x1.23da61f087530p-9
+  },
+  { // Entry 150
+    0x1.6d0d1984633eb80e098b6dc91f083a06p-3,
+    0x1.51ff85f2ba468p0,
+    0x1.d50692986b95dp2
+  },
+  { // Entry 151
+    -0x1.6d0d1984633eb80e098b6dc91f083a06p-3,
+    -0x1.51ff85f2ba468p0,
+    0x1.d50692986b95dp2
+  },
+  { // Entry 152
+    0x1.ccadda48d08027ff92d1bd814812ce8cp-1,
+    0x1.5412e00233d75p-1,
+    0x1.0dff2d1714940p-1
+  },
+  { // Entry 153
+    -0x1.ccadda48d08027ff92d1bd814812ce8cp-1,
+    -0x1.5412e00233d75p-1,
+    0x1.0dff2d1714940p-1
+  },
+  { // Entry 154
+    0x1.3f2496d84ac34801117f6f830c0fb201p-90,
+    0x1.5555555554c2ep8,
+    0x1.11ccccccccccdp98
+  },
+  { // Entry 155
+    -0x1.3f2496d84ac34801117f6f830c0fb201p-90,
+    -0x1.5555555554c2ep8,
+    0x1.11ccccccccccdp98
+  },
+  { // Entry 156
+    0x1.555555555555aaaaaaaaaaaab5555555p-1021,
+    0x1.5555555555558p-2,
+    0x1.ffffffffffffcp1018
+  },
+  { // Entry 157
+    -0x1.555555555555aaaaaaaaaaaab5555555p-1021,
+    -0x1.5555555555558p-2,
+    0x1.ffffffffffffcp1018
+  },
+  { // Entry 158
+    0x1.88134cb8d04e88985007b92a62b1fd1ap-8,
+    0x1.5711ef5ee1eecp-5,
+    0x1.c000000000302p2
+  },
+  { // Entry 159
+    -0x1.88134cb8d04e88985007b92a62b1fd1ap-8,
+    -0x1.5711ef5ee1eecp-5,
+    0x1.c000000000302p2
+  },
+  { // Entry 160
+    0x1.94a470782907f800006a4822bc94bc23p-1,
+    0x1.666666688d411p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 161
+    -0x1.94a470782907f800006a4822bc94bc23p-1,
+    -0x1.666666688d411p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 162
+    0x1.d7d7b672ee30c85d01819b25305f3230p-10,
+    0x1.6c9b26c9b26cap0,
+    0x1.8ba2e8ba2e8cap9
+  },
+  { // Entry 163
+    -0x1.d7d7b672ee30c85d01819b25305f3230p-10,
+    -0x1.6c9b26c9b26cap0,
+    0x1.8ba2e8ba2e8cap9
+  },
+  { // Entry 164
+    0x1.7fffffffee0030000184c60cd2a5c008p-18,
+    0x1.8p-53,
+    0x1.ffffffffffffcp-36
+  },
+  { // Entry 165
+    -0x1.7fffffffee0030000184c60cd2a5c008p-18,
+    -0x1.8p-53,
+    0x1.ffffffffffffcp-36
+  },
+  { // Entry 166
+    0x1.e7c8952cb26158012b54b9a61c08f431p-2,
+    0x1.8c46231188cp0,
+    0x1.8p1
+  },
+  { // Entry 167
+    -0x1.e7c8952cb26158012b54b9a61c08f431p-2,
+    -0x1.8c46231188cp0,
+    0x1.8p1
+  },
+  { // Entry 168
+    0x1.2b854f022de7a93cb621cb2462f86074p0,
+    0x1.8d79435e50d71p2,
+    0x1.50d79435e50d9p1
+  },
+  { // Entry 169
+    -0x1.2b854f022de7a93cb621cb2462f86074p0,
+    -0x1.8d79435e50d71p2,
+    0x1.50d79435e50d9p1
+  },
+  { // Entry 170
+    0x1.42a76a164c39c800e4405027c490bdfbp-1,
+    0x1.8dd3d2235ad60p-1,
+    0x1.10b5d1e78459cp0
+  },
+  { // Entry 171
+    -0x1.42a76a164c39c800e4405027c490bdfbp-1,
+    -0x1.8dd3d2235ad60p-1,
+    0x1.10b5d1e78459cp0
+  },
+  { // Entry 172
+    0x1.e3240e993ab957f9d76dde4a50896826p-3,
+    0x1.9p0,
+    0x1.9fffffffffffbp2
+  },
+  { // Entry 173
+    -0x1.e3240e993ab957f9d76dde4a50896826p-3,
+    -0x1.9p0,
+    0x1.9fffffffffffbp2
+  },
+  { // Entry 174
+    0x1.a335efd4da90a804f7a6dad4434f5ba0p-2,
+    0x1.920d799fda713p-3,
+    0x1.cf4cdc48f3536p-2
+  },
+  { // Entry 175
+    -0x1.a335efd4da90a804f7a6dad4434f5ba0p-2,
+    -0x1.920d799fda713p-3,
+    0x1.cf4cdc48f3536p-2
+  },
+  { // Entry 176
+    0x1.ed87f9c729d17ffe9d2f47e2fe9ecb40p-1,
+    0x1.95fad40a57ec6p9,
+    0x1.19dbcc48676f6p9
+  },
+  { // Entry 177
+    -0x1.ed87f9c729d17ffe9d2f47e2fe9ecb40p-1,
+    -0x1.95fad40a57ec6p9,
+    0x1.19dbcc48676f6p9
+  },
+  { // Entry 178
+    0x1.0bfa5f3f099e68000068d82232dc4cc7p-1,
+    0x1.9999999e37c24p-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 179
+    -0x1.0bfa5f3f099e68000068d82232dc4cc7p-1,
+    -0x1.9999999e37c24p-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 180
+    0x1.1fa6ac30d066d800006a5c239e5188f2p-2,
+    0x1.999999bb09140p-3,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 181
+    -0x1.1fa6ac30d066d800006a5c239e5188f2p-2,
+    -0x1.999999bb09140p-3,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 182
+    0x1.2570742fa4989fffff9e946c986117d9p-3,
+    0x1.999999c2f3b55p-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 183
+    -0x1.2570742fa4989fffff9e946c986117d9p-3,
+    -0x1.999999c2f3b55p-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 184
+    0x1.257074378653a7ffffffb78db995aafcp-3,
+    0x1.999999ce1b18ap-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 185
+    -0x1.257074378653a7ffffffb78db995aafcp-3,
+    -0x1.999999ce1b18ap-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 186
+    0x1.25707437a1476000006169ddb5dabdd7p-3,
+    0x1.999999ce413ccp-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 187
+    -0x1.25707437a1476000006169ddb5dabdd7p-3,
+    -0x1.999999ce413ccp-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 188
+    0x1.b6a03b0f1ff0d7fd08e9f5846ec5a75bp-1,
+    0x1.9c5c97530cc21p0,
+    0x1.6563fa1d6f518p0
+  },
+  { // Entry 189
+    -0x1.b6a03b0f1ff0d7fd08e9f5846ec5a75bp-1,
+    -0x1.9c5c97530cc21p0,
+    0x1.6563fa1d6f518p0
+  },
+  { // Entry 190
+    0x1.b80aa068167f97558972ecfed6777774p-19,
+    0x1.9f5aeae03799dp-18,
+    0x1.e346d9b2ad73ep0
+  },
+  { // Entry 191
+    -0x1.b80aa068167f97558972ecfed6777774p-19,
+    -0x1.9f5aeae03799dp-18,
+    0x1.e346d9b2ad73ep0
+  },
+  { // Entry 192
+    0x1.e5ef7b22c83b27ad34bbfda6c2383d23p-2,
+    0x1.a4d269349b66cp-3,
+    0x1.999999999999ap-2
+  },
+  { // Entry 193
+    -0x1.e5ef7b22c83b27ad34bbfda6c2383d23p-2,
+    -0x1.a4d269349b66cp-3,
+    0x1.999999999999ap-2
+  },
+  { // Entry 194
+    0x1.5e82cb51676728011e1c6ba75f3339a7p-91,
+    0x1.ad5aa6ff6335ep9,
+    0x1.3995880de757ap100
+  },
+  { // Entry 195
+    -0x1.5e82cb51676728011e1c6ba75f3339a7p-91,
+    -0x1.ad5aa6ff6335ep9,
+    0x1.3995880de757ap100
+  },
+  { // Entry 196
+    0x1.95ac93504f319fefb1b5148792dab412p-1,
+    0x1.b1427cd988b8cp-2,
+    0x1.ab4adeaf1a3eap-2
+  },
+  { // Entry 197
+    -0x1.95ac93504f319fefb1b5148792dab412p-1,
+    -0x1.b1427cd988b8cp-2,
+    0x1.ab4adeaf1a3eap-2
+  },
+  { // Entry 198
+    0x1.921fd1f09f928801088a93fc7dbba1cap0,
+    0x1.bbd49acc58d98p10,
+    -0x1.8db0a4ab22e7ep-9
+  },
+  { // Entry 199
+    -0x1.921fd1f09f928801088a93fc7dbba1cap0,
+    -0x1.bbd49acc58d98p10,
+    -0x1.8db0a4ab22e7ep-9
+  },
+  { // Entry 200
+    0x1.43e54975fb8bc8012953e9ef023f67b3p-100,
+    0x1.c37dac37dac3cp0,
+    0x1.64d9364d93659p100
+  },
+  { // Entry 201
+    -0x1.43e54975fb8bc8012953e9ef023f67b3p-100,
+    -0x1.c37dac37dac3cp0,
+    0x1.64d9364d93659p100
+  },
+  { // Entry 202
+    0x1.ab78c13521cfc80117f7fae57836356ep-98,
+    0x1.c9b26c9b26ca0p2,
+    0x1.1219dbcc48679p100
+  },
+  { // Entry 203
+    -0x1.ab78c13521cfc80117f7fae57836356ep-98,
+    -0x1.c9b26c9b26ca0p2,
+    0x1.1219dbcc48679p100
+  },
+  { // Entry 204
+    0x1.77e467d5ff6337f84f880eb86f426f87p-1,
+    0x1.ce0d5078ae3d0p0,
+    0x1.0p1
+  },
+  { // Entry 205
+    -0x1.77e467d5ff6337f84f880eb86f426f87p-1,
+    -0x1.ce0d5078ae3d0p0,
+    0x1.0p1
+  },
+  { // Entry 206
+    0x1.7ccd882d8fdbe8010d0be61f023186a5p-1,
+    0x1.dbcc48676f32ap7,
+    0x1.0295fad40a58bp8
+  },
+  { // Entry 207
+    -0x1.7ccd882d8fdbe8010d0be61f023186a5p-1,
+    -0x1.dbcc48676f32ap7,
+    0x1.0295fad40a58bp8
+  },
+  { // Entry 208
+    0x1.2d3a87e24eb319156ef615caa7abe128p0,
+    0x1.e052bf5a814b6p2,
+    0x1.8f83e0f83e0f1p1
+  },
+  { // Entry 209
+    -0x1.2d3a87e24eb319156ef615caa7abe128p0,
+    -0x1.e052bf5a814b6p2,
+    0x1.8f83e0f83e0f1p1
+  },
+  { // Entry 210
+    0x1.eb0df42c36a5f7fe1df8c86bed0a28a0p-1,
+    0x1.e0547e40e4cc8p-2,
+    0x1.50eebc195bb24p-2
+  },
+  { // Entry 211
+    -0x1.eb0df42c36a5f7fe1df8c86bed0a28a0p-1,
+    -0x1.e0547e40e4cc8p-2,
+    0x1.50eebc195bb24p-2
+  },
+  { // Entry 212
+    0x1.c7fe1dbd95349778458697fe195e4a58p-8,
+    0x1.e666666666668p1,
+    0x1.111111111196dp9
+  },
+  { // Entry 213
+    -0x1.c7fe1dbd95349778458697fe195e4a58p-8,
+    -0x1.e666666666668p1,
+    0x1.111111111196dp9
+  },
+  { // Entry 214
+    0x1.38927ede67216800006a39bb49e9c0f4p0,
+    0x1.e666666b987f5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 215
+    -0x1.38927ede67216800006a39bb49e9c0f4p0,
+    -0x1.e666666b987f5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 216
+    0x1.39fed5699428b3b69a7339d36bb044abp-1,
+    0x1.e91ee78afd1e6p-3,
+    0x1.5b7c32b32bde0p-2
+  },
+  { // Entry 217
+    -0x1.39fed5699428b3b69a7339d36bb044abp-1,
+    -0x1.e91ee78afd1e6p-3,
+    0x1.5b7c32b32bde0p-2
+  },
+  { // Entry 218
+    0x1.a127224010cba803945f315e1d0ee4b5p-1,
+    0x1.f166e1dc4499bp2,
+    0x1.d50692986b98fp2
+  },
+  { // Entry 219
+    -0x1.a127224010cba803945f315e1d0ee4b5p-1,
+    -0x1.f166e1dc4499bp2,
+    0x1.d50692986b98fp2
+  },
+  { // Entry 220
+    0x1.f1f32aa6acb70801dd4349d43d3d4c25p-3,
+    0x1.fbfffffffffffp-2,
+    0x1.ffffffffe7fffp0
+  },
+  { // Entry 221
+    -0x1.f1f32aa6acb70801dd4349d43d3d4c25p-3,
+    -0x1.fbfffffffffffp-2,
+    0x1.ffffffffe7fffp0
+  },
+  { // Entry 222
+    0x1.079c41361b6ab8115015e4f32dcfe4b3p1,
+    0x1.ff4b7c848cde6p-1,
+    -0x1.0fd6c7f44f588p-1
+  },
+  { // Entry 223
+    -0x1.079c41361b6ab8115015e4f32dcfe4b3p1,
+    -0x1.ff4b7c848cde6p-1,
+    -0x1.0fd6c7f44f588p-1
+  },
+  { // Entry 224
+    0x1.da4c6912789968011f1b516f595d868ep-2,
+    0x1.ff677ffffffffp-6,
+    0x1.ffffffff19fffp-5
+  },
+  { // Entry 225
+    -0x1.da4c6912789968011f1b516f595d868ep-2,
+    -0x1.ff677ffffffffp-6,
+    0x1.ffffffff19fffp-5
+  },
+  { // Entry 226
+    0x1.fffc80021ffc480225fc1d822a9bc5e0p-58,
+    0x1.fffc7ffffffffp-50,
+    0x1.fffffffddffffp7
+  },
+  { // Entry 227
+    -0x1.fffc80021ffc480225fc1d822a9bc5e0p-58,
+    -0x1.fffc7ffffffffp-50,
+    0x1.fffffffddffffp7
+  },
+  { // Entry 228
+    0x1.66666666666617fffffffffff8b72015p-50,
+    0x1.ffffffffffffcp50,
+    0x1.6db6db6db6db9p100
+  },
+  { // Entry 229
+    -0x1.66666666666617fffffffffff8b72015p-50,
+    -0x1.ffffffffffffcp50,
+    0x1.6db6db6db6db9p100
+  },
+  { // Entry 230
+    0x1.ff55d35ae8e467ce77407069ad013ab5p-5,
+    0x1.ffffffffffffep-3,
+    0x1.ffffe7fffffffp1
+  },
+  { // Entry 231
+    -0x1.ff55d35ae8e467ce77407069ad013ab5p-5,
+    -0x1.ffffffffffffep-3,
+    0x1.ffffe7fffffffp1
+  },
+  { // Entry 232
+    0x1.b4ddd66a37b3b335a2a5b11ceb9a4c56p-2,
+    0x1.ffffffffffffep-4,
+    0x1.199999999999cp-2
+  },
+  { // Entry 233
+    -0x1.b4ddd66a37b3b335a2a5b11ceb9a4c56p-2,
+    -0x1.ffffffffffffep-4,
+    0x1.199999999999cp-2
+  },
+  { // Entry 234
+    0x1.90e6d4253517c8010321aeae887990a9p1,
+    0x1.ffffffffffffep-7,
+    -0x1.a2e8ba2e97a22p0
+  },
+  { // Entry 235
+    -0x1.90e6d4253517c8010321aeae887990a9p1,
+    -0x1.ffffffffffffep-7,
+    -0x1.a2e8ba2e97a22p0
+  },
+  { // Entry 236
+    0x1.b6db6db6db6d281ddaaea5b12cced2a1p-25,
+    0x1.ffffffffffffep-25,
+    0x1.2aaaaaaaaaaabp0
+  },
+  { // Entry 237
+    -0x1.b6db6db6db6d281ddaaea5b12cced2a1p-25,
+    -0x1.ffffffffffffep-25,
+    0x1.2aaaaaaaaaaabp0
+  },
+  { // Entry 238
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.ffffffffffffep-807,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 239
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.ffffffffffffep-807,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 240
+    0x1.096d05371b1c54c40f9a06c6cf2db981p1,
+    0x1.ffffffffffffep0,
+    -0x1.199999999999ap0
+  },
+  { // Entry 241
+    -0x1.096d05371b1c54c40f9a06c6cf2db981p1,
+    -0x1.ffffffffffffep0,
+    -0x1.199999999999ap0
+  },
+  { // Entry 242
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.4p-1072
+  },
+  { // Entry 243
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.4p-1072
+  },
+  { // Entry 244
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 245
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 246
+    -0x1.f4f3b198c0f168030e9490be1ea559e8p-4,
+    -0x1.08de20fafe4a2p0,
+    0x1.0d5ba77adf969p3
+  },
+  { // Entry 247
+    0x1.f4f3b198c0f168030e9490be1ea559e8p-4,
+    0x1.08de20fafe4a2p0,
+    0x1.0d5ba77adf969p3
+  },
+  { // Entry 248
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 249
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 250
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 251
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 252
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 253
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 254
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 255
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 256
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 257
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 258
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 259
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 260
+    0x1.7249faa996a216a33079d20319e727c3p0,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 261
+    -0x1.7249faa996a216a33079d20319e727c3p0,
+    -0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 262
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 263
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 264
+    0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    0x1.0p0,
+    0x1.0p9
+  },
+  { // Entry 265
+    -0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    -0x1.0p0,
+    0x1.0p9
+  },
+  { // Entry 266
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 267
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 268
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.0p3,
+    0x1.0p9
+  },
+  { // Entry 269
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.0p3,
+    0x1.0p9
+  },
+  { // Entry 270
+    0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 271
+    -0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    -0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 272
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0p0,
+    0x1.0p100
+  },
+  { // Entry 273
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0p0,
+    0x1.0p100
+  },
+  { // Entry 274
+    0x1.ffffffffffffffffffffffffffffffffp-102,
+    0x1.0p0,
+    0x1.0p101
+  },
+  { // Entry 275
+    -0x1.ffffffffffffffffffffffffffffffffp-102,
+    -0x1.0p0,
+    0x1.0p101
+  },
+  { // Entry 276
+    0x1.ffffffffffffffffffffffffffffffffp-98,
+    0x1.0p3,
+    0x1.0p100
+  },
+  { // Entry 277
+    -0x1.ffffffffffffffffffffffffffffffffp-98,
+    -0x1.0p3,
+    0x1.0p100
+  },
+  { // Entry 278
+    0x1.ffffffffffffffffffffffffffffffffp-99,
+    0x1.0p3,
+    0x1.0p101
+  },
+  { // Entry 279
+    -0x1.ffffffffffffffffffffffffffffffffp-99,
+    -0x1.0p3,
+    0x1.0p101
+  },
+  { // Entry 280
+    0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    0x1.0p9,
+    0x1.0p0
+  },
+  { // Entry 281
+    -0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    -0x1.0p9,
+    0x1.0p0
+  },
+  { // Entry 282
+    0x1.8e1fca98cb63311299ee93be01605c21p0,
+    0x1.0p9,
+    0x1.0p3
+  },
+  { // Entry 283
+    -0x1.8e1fca98cb63311299ee93be01605c21p0,
+    -0x1.0p9,
+    0x1.0p3
+  },
+  { // Entry 284
+    0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 285
+    -0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    -0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 286
+    0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 287
+    -0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    -0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 288
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p9,
+    0x1.0p9
+  },
+  { // Entry 289
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p9,
+    0x1.0p9
+  },
+  { // Entry 290
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p9,
+    0x1.0p10
+  },
+  { // Entry 291
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p9,
+    0x1.0p10
+  },
+  { // Entry 292
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.0p10,
+    0x1.0p9
+  },
+  { // Entry 293
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.0p10,
+    0x1.0p9
+  },
+  { // Entry 294
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 295
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 296
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.0p9,
+    0x1.0p100
+  },
+  { // Entry 297
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.0p9,
+    0x1.0p100
+  },
+  { // Entry 298
+    0x1.ffffffffffffffffffffffffffffffffp-93,
+    0x1.0p9,
+    0x1.0p101
+  },
+  { // Entry 299
+    -0x1.ffffffffffffffffffffffffffffffffp-93,
+    -0x1.0p9,
+    0x1.0p101
+  },
+  { // Entry 300
+    0x1.ffffffffffffffffffffffffffffffffp-91,
+    0x1.0p10,
+    0x1.0p100
+  },
+  { // Entry 301
+    -0x1.ffffffffffffffffffffffffffffffffp-91,
+    -0x1.0p10,
+    0x1.0p100
+  },
+  { // Entry 302
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.0p10,
+    0x1.0p101
+  },
+  { // Entry 303
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.0p10,
+    0x1.0p101
+  },
+  { // Entry 304
+    0x1.921fb54442d18469898cc516f1b839a2p0,
+    0x1.0p100,
+    0x1.0p0
+  },
+  { // Entry 305
+    -0x1.921fb54442d18469898cc516f1b839a2p0,
+    -0x1.0p100,
+    0x1.0p0
+  },
+  { // Entry 306
+    0x1.921fb54442d18469898cc51681b839a2p0,
+    0x1.0p100,
+    0x1.0p3
+  },
+  { // Entry 307
+    -0x1.921fb54442d18469898cc51681b839a2p0,
+    -0x1.0p100,
+    0x1.0p3
+  },
+  { // Entry 308
+    0x1.921fb54442d18469898cc516f9b839a2p0,
+    0x1.0p101,
+    0x1.0p0
+  },
+  { // Entry 309
+    -0x1.921fb54442d18469898cc516f9b839a2p0,
+    -0x1.0p101,
+    0x1.0p0
+  },
+  { // Entry 310
+    0x1.921fb54442d18469898cc516c1b839a2p0,
+    0x1.0p101,
+    0x1.0p3
+  },
+  { // Entry 311
+    -0x1.921fb54442d18469898cc516c1b839a2p0,
+    -0x1.0p101,
+    0x1.0p3
+  },
+  { // Entry 312
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.0p100,
+    0x1.0p9
+  },
+  { // Entry 313
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.0p100,
+    0x1.0p9
+  },
+  { // Entry 314
+    0x1.921fb54442d18469898cc4d701b839a2p0,
+    0x1.0p100,
+    0x1.0p10
+  },
+  { // Entry 315
+    -0x1.921fb54442d18469898cc4d701b839a2p0,
+    -0x1.0p100,
+    0x1.0p10
+  },
+  { // Entry 316
+    0x1.921fb54442d18469898cc50701b839a2p0,
+    0x1.0p101,
+    0x1.0p9
+  },
+  { // Entry 317
+    -0x1.921fb54442d18469898cc50701b839a2p0,
+    -0x1.0p101,
+    0x1.0p9
+  },
+  { // Entry 318
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.0p101,
+    0x1.0p10
+  },
+  { // Entry 319
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.0p101,
+    0x1.0p10
+  },
+  { // Entry 320
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 321
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 322
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p100,
+    0x1.0p101
+  },
+  { // Entry 323
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p100,
+    0x1.0p101
+  },
+  { // Entry 324
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.0p101,
+    0x1.0p100
+  },
+  { // Entry 325
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.0p101,
+    0x1.0p100
+  },
+  { // Entry 326
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p101,
+    0x1.0p101
+  },
+  { // Entry 327
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p101,
+    0x1.0p101
+  },
+  { // Entry 328
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 329
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 330
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 331
+    0.0,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 332
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 333
+    0.0,
+    0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 334
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 335
+    -0.0,
+    -0.0,
+    0x1.0p1
+  },
+  { // Entry 336
+    -0.0,
+    -0.0,
+    0x1.0000000000001p1
+  },
+  { // Entry 337
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 338
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 339
+    0.0,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 340
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 341
+    0.0,
+    0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 342
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 343
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 344
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 345
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 346
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 347
+    0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 348
+    -0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 349
+    0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 350
+    -0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    -0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 351
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 352
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 353
+    0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 354
+    -0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    -0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 355
+    0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 356
+    -0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    -0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 357
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 358
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 359
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 360
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 361
+    -0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    -0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 362
+    0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 363
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 364
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 365
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 366
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 367
+    -0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    -0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 368
+    0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 369
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 370
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 371
+    -0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    -0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 372
+    0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 373
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 374
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 375
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 376
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 377
+    -0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 378
+    0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 379
+    0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 380
+    -0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 381
+    0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 382
+    -0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 383
+    0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 384
+    -0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 385
+    0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 386
+    -0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 387
+    0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 388
+    -0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 389
+    0x1.a271f63e34fce0d49df838a986453485p-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 390
+    -0x1.a271f63e34fce0d49df838a986453485p-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 391
+    0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 392
+    -0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 393
+    0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 394
+    -0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 395
+    0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 396
+    -0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 397
+    -0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 398
+    0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 399
+    -0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 400
+    0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 401
+    -0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 402
+    0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 403
+    -0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 404
+    0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 405
+    -0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 406
+    0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 407
+    -0x1.a271f63e34fce0d49df838a986453485p-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 408
+    0x1.a271f63e34fce0d49df838a986453485p-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 409
+    -0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 410
+    0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 411
+    -0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 412
+    0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 413
+    -0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 414
+    0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 415
+    0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 416
+    -0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 417
+    0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 418
+    -0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 419
+    0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 420
+    -0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 421
+    0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 422
+    -0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 423
+    0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 424
+    -0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 425
+    0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 426
+    -0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 427
+    0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 428
+    -0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 429
+    0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 430
+    -0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 431
+    0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 432
+    -0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 433
+    -0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 434
+    0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 435
+    -0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 436
+    0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 437
+    -0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 438
+    0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 439
+    -0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 440
+    0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 441
+    -0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 442
+    0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 443
+    -0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 444
+    0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 445
+    -0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 446
+    0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 447
+    -0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 448
+    0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 449
+    -0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 450
+    0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 451
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 452
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 453
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 454
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 455
+    0x1.921fb54442d16c69898cc517021839a2p-1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 456
+    -0x1.921fb54442d16c69898cc517021839a2p-1,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 457
+    0x1.921fb54442d18c69898cc51701d839a2p-1,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 458
+    -0x1.921fb54442d18c69898cc51701d839a2p-1,
+    -0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 459
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 460
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 461
+    0x1.921fb54442d17469898cc517023839a2p-1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 462
+    -0x1.921fb54442d17469898cc517023839a2p-1,
+    -0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 463
+    0x1.921fb54442d19c69898cc517015839a2p-1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 464
+    -0x1.921fb54442d19c69898cc517015839a2p-1,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 465
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 466
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 467
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 468
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 469
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.fffffffffffffp-27,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 470
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.fffffffffffffp-27,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 471
+    0x1.ffffffffffffed5555555555559bbbbbp-28,
+    0x1.fffffffffffffp-27,
+    0x1.0p1
+  },
+  { // Entry 472
+    -0x1.ffffffffffffed5555555555559bbbbbp-28,
+    -0x1.fffffffffffffp-27,
+    0x1.0p1
+  },
+  { // Entry 473
+    0x1.ffffffffffffcd5555555555591bbbbbp-28,
+    0x1.fffffffffffffp-27,
+    0x1.0000000000001p1
+  },
+  { // Entry 474
+    -0x1.ffffffffffffcd5555555555591bbbbbp-28,
+    -0x1.fffffffffffffp-27,
+    0x1.0000000000001p1
+  },
+  { // Entry 475
+    0x1.00000000000006aaaaaaaaaaaacdddddp-27,
+    0x1.0p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 476
+    -0x1.00000000000006aaaaaaaaaaaacdddddp-27,
+    -0x1.0p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 477
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.0p-26,
+    0x1.0p1
+  },
+  { // Entry 478
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.0p-26,
+    0x1.0p1
+  },
+  { // Entry 479
+    0x1.ffffffffffffdd555555555557dbbbbbp-28,
+    0x1.0p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 480
+    -0x1.ffffffffffffdd555555555557dbbbbbp-28,
+    -0x1.0p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 481
+    0x1.00000000000016aaaaaaaaaaab0dddddp-27,
+    0x1.0000000000001p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 482
+    -0x1.00000000000016aaaaaaaaaaab0dddddp-27,
+    -0x1.0000000000001p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 483
+    0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    0x1.0000000000001p-26,
+    0x1.0p1
+  },
+  { // Entry 484
+    -0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    -0x1.0000000000001p-26,
+    0x1.0p1
+  },
+  { // Entry 485
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.0000000000001p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 486
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.0000000000001p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 487
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 488
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 489
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 490
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 491
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 492
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 493
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 494
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0.0
+  },
+  { // Entry 495
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 496
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 497
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 498
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 499
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 500
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 501
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 502
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 503
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 504
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 505
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 506
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 507
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 508
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 509
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 510
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 511
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 512
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 513
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 514
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 515
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 516
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 517
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 518
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 519
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 520
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 521
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 522
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 523
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 524
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 525
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 526
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 527
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 528
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 529
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 530
+    0x1.ffffffffffffefffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 531
+    -0x1.ffffffffffffefffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 532
+    0x1.ffffffffffffd0000000000002ff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 533
+    -0x1.ffffffffffffd0000000000002ff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 534
+    0x1.000000000000080000000000003faaaap-56,
+    0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 535
+    -0x1.000000000000080000000000003faaaap-56,
+    -0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 536
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 537
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 538
+    0x1.ffffffffffffe0000000000001ff5555p-57,
+    0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 539
+    -0x1.ffffffffffffe0000000000001ff5555p-57,
+    -0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 540
+    0x1.00000000000018000000000000bfaaaap-56,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 541
+    -0x1.00000000000018000000000000bfaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 542
+    0x1.0000000000000fffffffffffffffaaaap-56,
+    0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 543
+    -0x1.0000000000000fffffffffffffffaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 544
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 545
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 546
+    -0x1.00000000000018000000000000bfaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 547
+    0x1.00000000000018000000000000bfaaaap-56,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 548
+    -0x1.0000000000000fffffffffffffffaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 549
+    0x1.0000000000000fffffffffffffffaaaap-56,
+    0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 550
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 551
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 552
+    -0x1.000000000000080000000000003faaaap-56,
+    -0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 553
+    0x1.000000000000080000000000003faaaap-56,
+    0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 554
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 555
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 556
+    -0x1.ffffffffffffe0000000000001ff5555p-57,
+    -0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 557
+    0x1.ffffffffffffe0000000000001ff5555p-57,
+    0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 558
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 559
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 560
+    -0x1.ffffffffffffefffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 561
+    0x1.ffffffffffffefffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 562
+    -0x1.ffffffffffffd0000000000002ff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 563
+    0x1.ffffffffffffd0000000000002ff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 564
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 565
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 566
+    0x1.ffffffffffffeff555555555555655bbp-31,
+    0x1.fffffffffffffp1,
+    0x1.0p32
+  },
+  { // Entry 567
+    -0x1.ffffffffffffeff555555555555655bbp-31,
+    -0x1.fffffffffffffp1,
+    0x1.0p32
+  },
+  { // Entry 568
+    0x1.ffffffffffffcff555555555585855bbp-31,
+    0x1.fffffffffffffp1,
+    0x1.0000000000001p32
+  },
+  { // Entry 569
+    -0x1.ffffffffffffcff555555555585855bbp-31,
+    -0x1.fffffffffffffp1,
+    0x1.0000000000001p32
+  },
+  { // Entry 570
+    0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    0x1.0p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 571
+    -0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    -0x1.0p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 572
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0p2,
+    0x1.0p32
+  },
+  { // Entry 573
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0p2,
+    0x1.0p32
+  },
+  { // Entry 574
+    0x1.ffffffffffffdff555555555575755bbp-31,
+    0x1.0p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 575
+    -0x1.ffffffffffffdff555555555575755bbp-31,
+    -0x1.0p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 576
+    0x1.00000000000017faaaaaaaaaab692addp-30,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 577
+    -0x1.00000000000017faaaaaaaaaab692addp-30,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 578
+    0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    0x1.0000000000001p2,
+    0x1.0p32
+  },
+  { // Entry 579
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    -0x1.0000000000001p2,
+    0x1.0p32
+  },
+  { // Entry 580
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0000000000001p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 581
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0000000000001p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 582
+    -0x1.00000000000017faaaaaaaaaab692addp-30,
+    -0x1.0000000000001p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 583
+    0x1.00000000000017faaaaaaaaaab692addp-30,
+    0x1.0000000000001p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 584
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    -0x1.0000000000001p-2,
+    0x1.0p28
+  },
+  { // Entry 585
+    0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    0x1.0000000000001p-2,
+    0x1.0p28
+  },
+  { // Entry 586
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0000000000001p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 587
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0000000000001p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 588
+    -0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    -0x1.0p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 589
+    0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    0x1.0p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 590
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0p-2,
+    0x1.0p28
+  },
+  { // Entry 591
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0p-2,
+    0x1.0p28
+  },
+  { // Entry 592
+    -0x1.ffffffffffffdff555555555575755bbp-31,
+    -0x1.0p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 593
+    0x1.ffffffffffffdff555555555575755bbp-31,
+    0x1.0p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 594
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffffffffffp-3,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 595
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffffffffffp-3,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 596
+    -0x1.ffffffffffffeff555555555555655bbp-31,
+    -0x1.fffffffffffffp-3,
+    0x1.0p28
+  },
+  { // Entry 597
+    0x1.ffffffffffffeff555555555555655bbp-31,
+    0x1.fffffffffffffp-3,
+    0x1.0p28
+  },
+  { // Entry 598
+    -0x1.ffffffffffffcff555555555585855bbp-31,
+    -0x1.fffffffffffffp-3,
+    0x1.0000000000001p28
+  },
+  { // Entry 599
+    0x1.ffffffffffffcff555555555585855bbp-31,
+    0x1.fffffffffffffp-3,
+    0x1.0000000000001p28
+  },
+  { // Entry 600
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 601
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 602
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp2,
+    0x1.0p3
+  },
+  { // Entry 603
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp2,
+    0x1.0p3
+  },
+  { // Entry 604
+    0x1.921fb54442d16c69898cc517021839a2p-1,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p3
+  },
+  { // Entry 605
+    -0x1.921fb54442d16c69898cc517021839a2p-1,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p3
+  },
+  { // Entry 606
+    0x1.921fb54442d18c69898cc51701d839a2p-1,
+    0x1.0p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 607
+    -0x1.921fb54442d18c69898cc51701d839a2p-1,
+    -0x1.0p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 608
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 609
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 610
+    0x1.921fb54442d17469898cc517023839a2p-1,
+    0x1.0p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 611
+    -0x1.921fb54442d17469898cc517023839a2p-1,
+    -0x1.0p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 612
+    0x1.921fb54442d19c69898cc517015839a2p-1,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 613
+    -0x1.921fb54442d19c69898cc517015839a2p-1,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 614
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p3,
+    0x1.0p3
+  },
+  { // Entry 615
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p3,
+    0x1.0p3
+  },
+  { // Entry 616
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0000000000001p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 617
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 618
+    -0x1.dac670561bb51cf1462ef23fdf5661b4p-2,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 619
+    0x1.dac670561bb51cf1462ef23fdf5661b4p-2,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 620
+    -0x1.dac670561bb510247962257311bcc81bp-2,
+    -0x1.0000000000001p3,
+    0x1.0p4
+  },
+  { // Entry 621
+    0x1.dac670561bb510247962257311bcc81bp-2,
+    0x1.0000000000001p3,
+    0x1.0p4
+  },
+  { // Entry 622
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 623
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0000000000001p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 624
+    -0x1.dac670561bb50357ac9558a64593d258p-2,
+    -0x1.0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 625
+    0x1.dac670561bb50357ac9558a64593d258p-2,
+    0x1.0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 626
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p3,
+    0x1.0p4
+  },
+  { // Entry 627
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p3,
+    0x1.0p4
+  },
+  { // Entry 628
+    -0x1.dac670561bb4dcf1462ef23fe0232e81p-2,
+    -0x1.0p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 629
+    0x1.dac670561bb4dcf1462ef23fe0232e81p-2,
+    0x1.0p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 630
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 631
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 632
+    -0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    -0x1.fffffffffffffp2,
+    0x1.0p4
+  },
+  { // Entry 633
+    0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    0x1.fffffffffffffp2,
+    0x1.0p4
+  },
+  { // Entry 634
+    -0x1.dac670561bb4d0247962257313bcc81bp-2,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p4
+  },
+  { // Entry 635
+    0x1.dac670561bb4d0247962257313bcc81bp-2,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p4
+  },
+  { // Entry 636
+    0x1.72c43f4b1650a9d9aea6a40b156d98c0p1,
+    0x1.fffffffffffffp2,
+    -0x1.0000000000001p5
+  },
+  { // Entry 637
+    -0x1.72c43f4b1650a9d9aea6a40b156d98c0p1,
+    -0x1.fffffffffffffp2,
+    -0x1.0000000000001p5
+  },
+  { // Entry 638
+    0x1.72c43f4b1650a7f7ccc4c22933b558f8p1,
+    0x1.fffffffffffffp2,
+    -0x1.0p5
+  },
+  { // Entry 639
+    -0x1.72c43f4b1650a7f7ccc4c22933b558f8p1,
+    -0x1.fffffffffffffp2,
+    -0x1.0p5
+  },
+  { // Entry 640
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 641
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 642
+    0x1.72c43f4b1650a8e8bdb5b31a24897ff2p1,
+    0x1.0p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 643
+    -0x1.72c43f4b1650a8e8bdb5b31a24897ff2p1,
+    -0x1.0p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 644
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.0p3,
+    -0x1.0p5
+  },
+  { // Entry 645
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.0p3,
+    -0x1.0p5
+  },
+  { // Entry 646
+    0x1.72c43f4b1650a615eae2e04751cbef8fp1,
+    0x1.0p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 647
+    -0x1.72c43f4b1650a615eae2e04751cbef8fp1,
+    -0x1.0p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 648
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.0000000000001p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 649
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.0000000000001p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 650
+    0x1.72c43f4b1650a524f9f1ef5660e3da4dp1,
+    0x1.0000000000001p3,
+    -0x1.0p5
+  },
+  { // Entry 651
+    -0x1.72c43f4b1650a524f9f1ef5660e3da4dp1,
+    -0x1.0000000000001p3,
+    -0x1.0p5
+  },
+  { // Entry 652
+    0x1.72c43f4b1650a4340900fe656fde89b1p1,
+    0x1.0000000000001p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 653
+    -0x1.72c43f4b1650a4340900fe656fde89b1p1,
+    -0x1.0000000000001p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 654
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 655
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 656
+    0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    0x1.fffffffffffffp2,
+    0x1.0p6
+  },
+  { // Entry 657
+    -0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    -0x1.fffffffffffffp2,
+    0x1.0p6
+  },
+  { // Entry 658
+    0x1.fd5ba9aac2f6ad229cffee4a50b0e5b4p-4,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p6
+  },
+  { // Entry 659
+    -0x1.fd5ba9aac2f6ad229cffee4a50b0e5b4p-4,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p6
+  },
+  { // Entry 660
+    0x1.fd5ba9aac2f6ec268d3ef23a8d4e3181p-4,
+    0x1.0p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 661
+    -0x1.fd5ba9aac2f6ec268d3ef23a8d4e3181p-4,
+    -0x1.0p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 662
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0p3,
+    0x1.0p6
+  },
+  { // Entry 663
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0p3,
+    0x1.0p6
+  },
+  { // Entry 664
+    0x1.fd5ba9aac2f6bce3990faf465f7f83d9p-4,
+    0x1.0p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 665
+    -0x1.fd5ba9aac2f6bce3990faf465f7f83d9p-4,
+    -0x1.0p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 666
+    0x1.fd5ba9aac2f70ba8855e7432adbcb671p-4,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 667
+    -0x1.fd5ba9aac2f70ba8855e7432adbcb671p-4,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 668
+    0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    0x1.0000000000001p3,
+    0x1.0p6
+  },
+  { // Entry 669
+    -0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    -0x1.0000000000001p3,
+    0x1.0p6
+  },
+  { // Entry 670
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0000000000001p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 671
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 672
+    -0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 673
+    0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 674
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p3,
+    0x1.0p7
+  },
+  { // Entry 675
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p3,
+    0x1.0p7
+  },
+  { // Entry 676
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 677
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0000000000001p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 678
+    -0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    -0x1.0p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 679
+    0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    0x1.0p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 680
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p3,
+    0x1.0p7
+  },
+  { // Entry 681
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p3,
+    0x1.0p7
+  },
+  { // Entry 682
+    -0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    -0x1.0p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 683
+    0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    0x1.0p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 684
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 685
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 686
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp2,
+    0x1.0p7
+  },
+  { // Entry 687
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp2,
+    0x1.0p7
+  },
+  { // Entry 688
+    -0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p7
+  },
+  { // Entry 689
+    0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p7
+  },
+  { // Entry 690
+    0x1.0468a8ace4df65d2ed8c40d37cc6e907p1,
+    0x1.fffffffffffffp2,
+    -0x1.0000000000001p2
+  },
+  { // Entry 691
+    -0x1.0468a8ace4df65d2ed8c40d37cc6e907p1,
+    -0x1.fffffffffffffp2,
+    -0x1.0000000000001p2
+  },
+  { // Entry 692
+    0x1.0468a8ace4df629fba590da0498e971cp1,
+    0x1.fffffffffffffp2,
+    -0x1.0p2
+  },
+  { // Entry 693
+    -0x1.0468a8ace4df629fba590da0498e971cp1,
+    -0x1.fffffffffffffp2,
+    -0x1.0p2
+  },
+  { // Entry 694
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 695
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 696
+    0x1.0468a8ace4df643953f2a739e313b5d4p1,
+    0x1.0p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 697
+    -0x1.0468a8ace4df643953f2a739e313b5d4p1,
+    -0x1.0p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 698
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.0p3,
+    -0x1.0p2
+  },
+  { // Entry 699
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.0p3,
+    -0x1.0p2
+  },
+  { // Entry 700
+    0x1.0468a8ace4df5f6c8725da6d164e971cp1,
+    0x1.0p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 701
+    -0x1.0468a8ace4df5f6c8725da6d164e971cp1,
+    -0x1.0p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 702
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.0000000000001p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 703
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.0000000000001p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 704
+    0x1.0468a8ace4df5dd2ed8c40d37ce082a1p1,
+    0x1.0000000000001p3,
+    -0x1.0p2
+  },
+  { // Entry 705
+    -0x1.0468a8ace4df5dd2ed8c40d37ce082a1p1,
+    -0x1.0000000000001p3,
+    -0x1.0p2
+  },
+  { // Entry 706
+    0x1.0468a8ace4df5c3953f2a739e353b5d4p1,
+    0x1.0000000000001p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 707
+    -0x1.0468a8ace4df5c3953f2a739e353b5d4p1,
+    -0x1.0000000000001p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 708
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffffffffffp-103,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 709
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffffffffffp-103,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 710
+    0x1.ffffffffffffefffffffffffffffffffp-101,
+    0x1.fffffffffffffp-103,
+    0x1.0p-2
+  },
+  { // Entry 711
+    -0x1.ffffffffffffefffffffffffffffffffp-101,
+    -0x1.fffffffffffffp-103,
+    0x1.0p-2
+  },
+  { // Entry 712
+    0x1.ffffffffffffd0000000000002ffffffp-101,
+    0x1.fffffffffffffp-103,
+    0x1.0000000000001p-2
+  },
+  { // Entry 713
+    -0x1.ffffffffffffd0000000000002ffffffp-101,
+    -0x1.fffffffffffffp-103,
+    0x1.0000000000001p-2
+  },
+  { // Entry 714
+    0x1.0000000000000800000000000040p-100,
+    0x1.0p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 715
+    -0x1.0000000000000800000000000040p-100,
+    -0x1.0p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 716
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0p-102,
+    0x1.0p-2
+  },
+  { // Entry 717
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0p-102,
+    0x1.0p-2
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0000000000001ffffffp-101,
+    0x1.0p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 719
+    -0x1.ffffffffffffe0000000000001ffffffp-101,
+    -0x1.0p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 720
+    0x1.00000000000018000000000000c0p-100,
+    0x1.0000000000001p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 721
+    -0x1.00000000000018000000000000c0p-100,
+    -0x1.0000000000001p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 722
+    0x1.0000000000000fffffffffffffffffffp-100,
+    0x1.0000000000001p-102,
+    0x1.0p-2
+  },
+  { // Entry 723
+    -0x1.0000000000000fffffffffffffffffffp-100,
+    -0x1.0000000000001p-102,
+    0x1.0p-2
+  },
+  { // Entry 724
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0000000000001p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 725
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0000000000001p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 726
+    0x1.ffffffffffffffffffffffffffffffffp-201,
+    0x1.fffffffffffffp-203,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 727
+    -0x1.ffffffffffffffffffffffffffffffffp-201,
+    -0x1.fffffffffffffp-203,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 728
+    0x1.ffffffffffffefffffffffffffffffffp-201,
+    0x1.fffffffffffffp-203,
+    0x1.0p-2
+  },
+  { // Entry 729
+    -0x1.ffffffffffffefffffffffffffffffffp-201,
+    -0x1.fffffffffffffp-203,
+    0x1.0p-2
+  },
+  { // Entry 730
+    0x1.ffffffffffffd0000000000002ffffffp-201,
+    0x1.fffffffffffffp-203,
+    0x1.0000000000001p-2
+  },
+  { // Entry 731
+    -0x1.ffffffffffffd0000000000002ffffffp-201,
+    -0x1.fffffffffffffp-203,
+    0x1.0000000000001p-2
+  },
+  { // Entry 732
+    0x1.0000000000000800000000000040p-200,
+    0x1.0p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 733
+    -0x1.0000000000000800000000000040p-200,
+    -0x1.0p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 734
+    0x1.ffffffffffffffffffffffffffffffffp-201,
+    0x1.0p-202,
+    0x1.0p-2
+  },
+  { // Entry 735
+    -0x1.ffffffffffffffffffffffffffffffffp-201,
+    -0x1.0p-202,
+    0x1.0p-2
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0000000000001ffffffp-201,
+    0x1.0p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 737
+    -0x1.ffffffffffffe0000000000001ffffffp-201,
+    -0x1.0p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 738
+    0x1.00000000000018000000000000c0p-200,
+    0x1.0000000000001p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 739
+    -0x1.00000000000018000000000000c0p-200,
+    -0x1.0000000000001p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 740
+    0x1.0000000000000fffffffffffffffffffp-200,
+    0x1.0000000000001p-202,
+    0x1.0p-2
+  },
+  { // Entry 741
+    -0x1.0000000000000fffffffffffffffffffp-200,
+    -0x1.0000000000001p-202,
+    0x1.0p-2
+  },
+  { // Entry 742
+    0x1.ffffffffffffffffffffffffffffffffp-201,
+    0x1.0000000000001p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 743
+    -0x1.ffffffffffffffffffffffffffffffffp-201,
+    -0x1.0000000000001p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 744
+    0x1.ffffffffffffffffffffffffffffffffp-1001,
+    0x1.fffffffffffffp-1003,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 745
+    -0x1.ffffffffffffffffffffffffffffffffp-1001,
+    -0x1.fffffffffffffp-1003,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 746
+    0x1.ffffffffffffefffffffffffffffffffp-1001,
+    0x1.fffffffffffffp-1003,
+    0x1.0p-2
+  },
+  { // Entry 747
+    -0x1.ffffffffffffefffffffffffffffffffp-1001,
+    -0x1.fffffffffffffp-1003,
+    0x1.0p-2
+  },
+  { // Entry 748
+    0x1.ffffffffffffd0000000000002ffffffp-1001,
+    0x1.fffffffffffffp-1003,
+    0x1.0000000000001p-2
+  },
+  { // Entry 749
+    -0x1.ffffffffffffd0000000000002ffffffp-1001,
+    -0x1.fffffffffffffp-1003,
+    0x1.0000000000001p-2
+  },
+  { // Entry 750
+    0x1.0000000000000800000000000040p-1000,
+    0x1.0p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 751
+    -0x1.0000000000000800000000000040p-1000,
+    -0x1.0p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 752
+    0x1.ffffffffffffffffffffffffffffffffp-1001,
+    0x1.0p-1002,
+    0x1.0p-2
+  },
+  { // Entry 753
+    -0x1.ffffffffffffffffffffffffffffffffp-1001,
+    -0x1.0p-1002,
+    0x1.0p-2
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0000000000001ffffffp-1001,
+    0x1.0p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 755
+    -0x1.ffffffffffffe0000000000001ffffffp-1001,
+    -0x1.0p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 756
+    0x1.00000000000018000000000000c0p-1000,
+    0x1.0000000000001p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 757
+    -0x1.00000000000018000000000000c0p-1000,
+    -0x1.0000000000001p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 758
+    0x1.0000000000000fffffffffffffffffffp-1000,
+    0x1.0000000000001p-1002,
+    0x1.0p-2
+  },
+  { // Entry 759
+    -0x1.0000000000000fffffffffffffffffffp-1000,
+    -0x1.0000000000001p-1002,
+    0x1.0p-2
+  },
+  { // Entry 760
+    0x1.ffffffffffffffffffffffffffffffffp-1001,
+    0x1.0000000000001p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 761
+    -0x1.ffffffffffffffffffffffffffffffffp-1001,
+    -0x1.0000000000001p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 762
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 763
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 764
+    0x1.ffffffffffffefffffffffffff7fffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 765
+    -0x1.ffffffffffffefffffffffffff7fffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 766
+    0x1.ffffffffffffdfffffffffffffffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.0p103
+  },
+  { // Entry 767
+    -0x1.ffffffffffffdfffffffffffffffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.0p103
+  },
+  { // Entry 768
+    0x1.ffffffffffffc0000000000003ffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.0000000000001p103
+  },
+  { // Entry 769
+    -0x1.ffffffffffffc0000000000003ffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.0000000000001p103
+  },
+  { // Entry 770
+    0x1.ffffffffffffa000000000000bffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.0000000000002p103
+  },
+  { // Entry 771
+    -0x1.ffffffffffffa000000000000bffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.0000000000002p103
+  },
+  { // Entry 772
+    0x1.0000000000000800000000000080p-100,
+    0x1.fffffffffffffp2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 773
+    -0x1.0000000000000800000000000080p-100,
+    -0x1.fffffffffffffp2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 774
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 775
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 776
+    0x1.ffffffffffffefffffffffffffffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.0p103
+  },
+  { // Entry 777
+    -0x1.ffffffffffffefffffffffffffffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.0p103
+  },
+  { // Entry 778
+    0x1.ffffffffffffd0000000000002ffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p103
+  },
+  { // Entry 779
+    -0x1.ffffffffffffd0000000000002ffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p103
+  },
+  { // Entry 780
+    0x1.ffffffffffffb0000000000009ffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.0000000000002p103
+  },
+  { // Entry 781
+    -0x1.ffffffffffffb0000000000009ffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000002p103
+  },
+  { // Entry 782
+    0x1.00000000000010000000000001p-100,
+    0x1.0p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 783
+    -0x1.00000000000010000000000001p-100,
+    -0x1.0p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 784
+    0x1.0000000000000800000000000040p-100,
+    0x1.0p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 785
+    -0x1.0000000000000800000000000040p-100,
+    -0x1.0p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 786
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0p3,
+    0x1.0p103
+  },
+  { // Entry 787
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0p3,
+    0x1.0p103
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0000000000001ffffffp-101,
+    0x1.0p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 789
+    -0x1.ffffffffffffe0000000000001ffffffp-101,
+    -0x1.0p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 790
+    0x1.ffffffffffffc0000000000007ffffffp-101,
+    0x1.0p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 791
+    -0x1.ffffffffffffc0000000000007ffffffp-101,
+    -0x1.0p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 792
+    0x1.00000000000020000000000002p-100,
+    0x1.0000000000001p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 793
+    -0x1.00000000000020000000000002p-100,
+    -0x1.0000000000001p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 794
+    0x1.00000000000018000000000000c0p-100,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 795
+    -0x1.00000000000018000000000000c0p-100,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 796
+    0x1.0000000000000fffffffffffffffffffp-100,
+    0x1.0000000000001p3,
+    0x1.0p103
+  },
+  { // Entry 797
+    -0x1.0000000000000fffffffffffffffffffp-100,
+    -0x1.0000000000001p3,
+    0x1.0p103
+  },
+  { // Entry 798
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0000000000001p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 799
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0000000000003ffffffp-101,
+    0x1.0000000000001p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 801
+    -0x1.ffffffffffffe0000000000003ffffffp-101,
+    -0x1.0000000000001p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 802
+    0x1.00000000000030000000000003p-100,
+    0x1.0000000000002p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 803
+    -0x1.00000000000030000000000003p-100,
+    -0x1.0000000000002p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 804
+    0x1.0000000000002800000000000140p-100,
+    0x1.0000000000002p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 805
+    -0x1.0000000000002800000000000140p-100,
+    -0x1.0000000000002p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 806
+    0x1.0000000000001fffffffffffffffffffp-100,
+    0x1.0000000000002p3,
+    0x1.0p103
+  },
+  { // Entry 807
+    -0x1.0000000000001fffffffffffffffffffp-100,
+    -0x1.0000000000002p3,
+    0x1.0p103
+  },
+  { // Entry 808
+    0x1.0000000000000fffffffffffffp-100,
+    0x1.0000000000002p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 809
+    -0x1.0000000000000fffffffffffffp-100,
+    -0x1.0000000000002p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 810
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0000000000002p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 811
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0000000000002p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 812
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 813
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 814
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 815
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 816
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 817
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 818
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 819
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 820
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 821
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 822
+    0x1.0000000000000800000000000080p-1023,
+    0x1.fffffffffffffp0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 823
+    -0x1.0000000000000800000000000080p-1023,
+    -0x1.fffffffffffffp0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 824
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 825
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 826
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 827
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 828
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 829
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 830
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 831
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 832
+    0x1.00000000000010000000000001p-1023,
+    0x1.0p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 833
+    -0x1.00000000000010000000000001p-1023,
+    -0x1.0p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 834
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 835
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 836
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 837
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 838
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 839
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 840
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 841
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 842
+    0x1.00000000000020000000000002p-1023,
+    0x1.0000000000001p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 843
+    -0x1.00000000000020000000000002p-1023,
+    -0x1.0000000000001p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 844
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 845
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 846
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 847
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 848
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 849
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 850
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 851
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 852
+    0x1.00000000000030000000000003p-1023,
+    0x1.0000000000002p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 853
+    -0x1.00000000000030000000000003p-1023,
+    -0x1.0000000000002p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 854
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 855
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 856
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 857
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 858
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 859
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 860
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 861
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 862
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 863
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 864
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 865
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 866
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 867
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 868
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 869
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 870
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 871
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 872
+    0x1.0000000000000800000000000080p-1022,
+    0x1.fffffffffffffp1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 873
+    -0x1.0000000000000800000000000080p-1022,
+    -0x1.fffffffffffffp1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 874
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 875
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 876
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 877
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 878
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 879
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 880
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 881
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 882
+    0x1.00000000000010000000000001p-1022,
+    0x1.0p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 883
+    -0x1.00000000000010000000000001p-1022,
+    -0x1.0p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 884
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 885
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 886
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 887
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 888
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 889
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 890
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 891
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 892
+    0x1.00000000000020000000000002p-1022,
+    0x1.0000000000001p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 893
+    -0x1.00000000000020000000000002p-1022,
+    -0x1.0000000000001p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 894
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 895
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 896
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 897
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 898
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 899
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 900
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 901
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 902
+    0x1.00000000000030000000000003p-1022,
+    0x1.0000000000002p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 903
+    -0x1.00000000000030000000000003p-1022,
+    -0x1.0000000000002p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 904
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 905
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 906
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 907
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 908
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 909
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 910
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 911
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 912
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 913
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 914
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 915
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 916
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.0p0
+  },
+  { // Entry 917
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.0p0
+  },
+  { // Entry 918
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 919
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 920
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 921
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 922
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 923
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 924
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 925
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 926
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.0p0
+  },
+  { // Entry 927
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.0p0
+  },
+  { // Entry 928
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 929
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 930
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 931
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 932
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 933
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 934
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 935
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 936
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.0p0
+  },
+  { // Entry 937
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.0p0
+  },
+  { // Entry 938
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 939
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 940
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 941
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 942
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 943
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 944
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 945
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 946
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.0p0
+  },
+  { // Entry 947
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.0p0
+  },
+  { // Entry 948
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 949
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 950
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 951
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 952
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 953
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 954
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 955
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 956
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.0p0
+  },
+  { // Entry 957
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.0p0
+  },
+  { // Entry 958
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 959
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 960
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 961
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 962
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0.0
+  },
+  { // Entry 963
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0.0
+  },
+  { // Entry 964
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 965
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 966
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 967
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 968
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 969
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 970
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 971
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 972
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 973
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 974
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 975
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 976
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 977
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 978
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 979
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 980
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 981
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 982
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 983
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 984
+    -0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 985
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 986
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 987
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 988
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 989
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 990
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 991
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 992
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 993
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 994
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 995
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 996
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 997
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 998
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 999
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1000
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1001
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1002
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1003
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1004
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1005
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1006
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1007
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1008
+    0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1009
+    0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1010
+    0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1011
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1012
+    -0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1013
+    -0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1014
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1015
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1016
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1017
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1018
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1019
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1020
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1021
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1022
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1023
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1024
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1025
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1026
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1027
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1028
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1029
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1030
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1031
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1032
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1033
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1034
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1035
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1036
+    0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1037
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1038
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1039
+    -0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1040
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1041
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1042
+    0x1.921fb54442d17469898cc51701b839a2p0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1043
+    0x1.921fb54442d19469898cc51701b839a2p0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1044
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1045
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1046
+    0x1.ffffffffffffffffffffffffff555555p-53,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1047
+    -0x1.ffffffffffffffffffffffffff555555p-53,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1048
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1049
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1050
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1051
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1052
+    0x1.921fb54442d17c69898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1053
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1054
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1055
+    -0x1.921fb54442d17469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1056
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1057
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1058
+    -0x1.921fb54442d17c69898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1059
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1060
+    -0x1.921fb54442d19469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1061
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1062
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1063
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1064
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1065
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  }
+};
diff --git a/tests/math_data/atan2f_intel_data.h b/tests/math_data/atan2f_intel_data.h
new file mode 100644
index 0000000..ba9046c
--- /dev/null
+++ b/tests/math_data/atan2f_intel_data.h
@@ -0,0 +1,4703 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_atan2f_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffe4000187ffea90012c1fef963e3bp-60,
+    -0x1.p-100,
+    0x1.00000ep-41
+  },
+  { // Entry 1
+    0x1.ffffe4000187ffea90012c1fef963e3bp-60,
+    0x1.p-100,
+    0x1.00000ep-41
+  },
+  { // Entry 2
+    -0.0f,
+    -0x1.p-100,
+    0x1.00000ep50
+  },
+  { // Entry 3
+    0.0f,
+    0x1.p-100,
+    0x1.00000ep50
+  },
+  { // Entry 4
+    -0x1.7ffffffffff44cccff95f13b15ee40f3p-11,
+    -0x1.000002p-10,
+    0x1.555554p0
+  },
+  { // Entry 5
+    0x1.7ffffffffff44cccff95f13b15ee40f3p-11,
+    0x1.000002p-10,
+    0x1.555554p0
+  },
+  { // Entry 6
+    -0x1.fffffc00000d55550555571bbbb2d111p-23,
+    -0x1.000004p0,
+    0x1.000006p22
+  },
+  { // Entry 7
+    0x1.fffffc00000d55550555571bbbb2d111p-23,
+    0x1.000004p0,
+    0x1.000006p22
+  },
+  { // Entry 8
+    -0x1.dad20effbd30f4310a58502b0ff3965dp-2,
+    -0x1.000006p3,
+    0x1.fff186p3
+  },
+  { // Entry 9
+    0x1.dad20effbd30f4310a58502b0ff3965dp-2,
+    0x1.000006p3,
+    0x1.fff186p3
+  },
+  { // Entry 10
+    -0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    -0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 11
+    0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 12
+    -0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    -0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 13
+    0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 14
+    -0x1.43e6bb010a022abaa97bc92c2bf92b2dp-2,
+    -0x1.04fd14p-4,
+    0x1.8eb358p-3
+  },
+  { // Entry 15
+    0x1.43e6bb010a022abaa97bc92c2bf92b2dp-2,
+    0x1.04fd14p-4,
+    0x1.8eb358p-3
+  },
+  { // Entry 16
+    -0x1.905827610aa194066b73a36bcafa2041p-1,
+    -0x1.0596bcp-3,
+    0x1.0769dcp-3
+  },
+  { // Entry 17
+    0x1.905827610aa194066b73a36bcafa2041p-1,
+    0x1.0596bcp-3,
+    0x1.0769dcp-3
+  },
+  { // Entry 18
+    -0x1.f5b7710347b9a8b79afdefc31a2185a0p-2,
+    -0x1.111118p-2,
+    0x1.fffff8p-2
+  },
+  { // Entry 19
+    0x1.f5b7710347b9a8b79afdefc31a2185a0p-2,
+    0x1.111118p-2,
+    0x1.fffff8p-2
+  },
+  { // Entry 20
+    -0x1.151c477cb91ad4bb4a65e8d3fd3321f4p0,
+    -0x1.111118p-14,
+    0x1.222218p-15
+  },
+  { // Entry 21
+    0x1.151c477cb91ad4bb4a65e8d3fd3321f4p0,
+    0x1.111118p-14,
+    0x1.222218p-15
+  },
+  { // Entry 22
+    -0x1.520acb002e18e97cf7bea2ae9290357bp0,
+    -0x1.199994p-1,
+    0x1.20p-3
+  },
+  { // Entry 23
+    0x1.520acb002e18e97cf7bea2ae9290357bp0,
+    0x1.199994p-1,
+    0x1.20p-3
+  },
+  { // Entry 24
+    -0x1.d1a1ebad28ca743ee543132b45980d5cp-2,
+    -0x1.199998p-1,
+    0x1.20p0
+  },
+  { // Entry 25
+    0x1.d1a1ebad28ca743ee543132b45980d5cp-2,
+    0x1.199998p-1,
+    0x1.20p0
+  },
+  { // Entry 26
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.19999ap0,
+    0x1.p-149
+  },
+  { // Entry 27
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.19999ap0,
+    0x1.p-149
+  },
+  { // Entry 28
+    -0x1.922170fe86dc56969c78b959508174d3p-1,
+    -0x1.2c0202p9,
+    0x1.2bfffap9
+  },
+  { // Entry 29
+    0x1.922170fe86dc56969c78b959508174d3p-1,
+    0x1.2c0202p9,
+    0x1.2bfffap9
+  },
+  { // Entry 30
+    -0x1.8ec170fc51bb0a23bd010cc82696f548p0,
+    -0x1.2ffff0p6,
+    0x1.p0
+  },
+  { // Entry 31
+    0x1.8ec170fc51bb0a23bd010cc82696f548p0,
+    0x1.2ffff0p6,
+    0x1.p0
+  },
+  { // Entry 32
+    -0x1.2fffffffffffffffffffffffffffffffp-146,
+    -0x1.30p-145,
+    0x1.p1
+  },
+  { // Entry 33
+    0x1.2fffffffffffffffffffffffffffffffp-146,
+    0x1.30p-145,
+    0x1.p1
+  },
+  { // Entry 34
+    -0x1.2a73acfced538de0e37fe6b9b0a41ebap-2,
+    -0x1.333338p-2,
+    0x1.fffffcp-1
+  },
+  { // Entry 35
+    0x1.2a73acfced538de0e37fe6b9b0a41ebap-2,
+    0x1.333338p-2,
+    0x1.fffffcp-1
+  },
+  { // Entry 36
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.40p-147,
+    -0x1.fffffep127
+  },
+  { // Entry 37
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.40p-147,
+    -0x1.fffffep127
+  },
+  { // Entry 38
+    -0x1.3fffffffffffffffffffffffffffffffp-148,
+    -0x1.40p-147,
+    0x1.p1
+  },
+  { // Entry 39
+    0x1.3fffffffffffffffffffffffffffffffp-148,
+    0x1.40p-147,
+    0x1.p1
+  },
+  { // Entry 40
+    -0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    -0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 41
+    0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 42
+    -0x1.72eab640dab3ff16e57acdbe73e804d6p-2,
+    -0x1.7b4a16p-4,
+    0x1.f474d8p-3
+  },
+  { // Entry 43
+    0x1.72eab640dab3ff16e57acdbe73e804d6p-2,
+    0x1.7b4a16p-4,
+    0x1.f474d8p-3
+  },
+  { // Entry 44
+    -0x1.7fffad001ebebf3a599c03854b51e597p-9,
+    -0x1.7ffffep0,
+    0x1.000006p9
+  },
+  { // Entry 45
+    0x1.7fffad001ebebf3a599c03854b51e597p-9,
+    0x1.7ffffep0,
+    0x1.000006p9
+  },
+  { // Entry 46
+    -0x1.e3539c0f15f7f48eab208803a29a2c7dp0,
+    -0x1.85e85ep-1,
+    -0x1.fffffcp-3
+  },
+  { // Entry 47
+    0x1.e3539c0f15f7f48eab208803a29a2c7dp0,
+    0x1.85e85ep-1,
+    -0x1.fffffcp-3
+  },
+  { // Entry 48
+    -0x1.fff7a95adac43e9c9763981911f0af91p-6,
+    -0x1.881a4ap5,
+    0x1.88p10
+  },
+  { // Entry 49
+    0x1.fff7a95adac43e9c9763981911f0af91p-6,
+    0x1.881a4ap5,
+    0x1.88p10
+  },
+  { // Entry 50
+    -0x1.afffffffffffffffffffffffffffffffp-146,
+    -0x1.b0p-145,
+    0x1.p1
+  },
+  { // Entry 51
+    0x1.afffffffffffffffffffffffffffffffp-146,
+    0x1.b0p-145,
+    0x1.p1
+  },
+  { // Entry 52
+    -0x1.a5ce8d1a28d5bcb270bc016790eb423ap0,
+    -0x1.bbbbbcp-1,
+    -0x1.1179f8p-4
+  },
+  { // Entry 53
+    0x1.a5ce8d1a28d5bcb270bc016790eb423ap0,
+    0x1.bbbbbcp-1,
+    -0x1.1179f8p-4
+  },
+  { // Entry 54
+    -0x1.eafe7000a5dc264f70fe1dd7f684b160p-3,
+    -0x1.d55554p-1,
+    0x1.dffffep1
+  },
+  { // Entry 55
+    0x1.eafe7000a5dc264f70fe1dd7f684b160p-3,
+    0x1.d55554p-1,
+    0x1.dffffep1
+  },
+  { // Entry 56
+    -0x1.eb4a75001deee59a8f1d03f2e725b3aep-2,
+    -0x1.d5e926p-3,
+    0x1.c38dc4p-2
+  },
+  { // Entry 57
+    0x1.eb4a75001deee59a8f1d03f2e725b3aep-2,
+    0x1.d5e926p-3,
+    0x1.c38dc4p-2
+  },
+  { // Entry 58
+    -0x1.dfffffffffffffffffffffffffffffffp-147,
+    -0x1.e0p-146,
+    0x1.p1
+  },
+  { // Entry 59
+    0x1.dfffffffffffffffffffffffffffffffp-147,
+    0x1.e0p-146,
+    0x1.p1
+  },
+  { // Entry 60
+    -0x1.f12ab8f4f73d14abefa8e36cac1681p-19,
+    -0x1.f12a96p2,
+    0x1.ffffdcp20
+  },
+  { // Entry 61
+    0x1.f12ab8f4f73d14abefa8e36cac1681p-19,
+    0x1.f12a96p2,
+    0x1.ffffdcp20
+  },
+  { // Entry 62
+    -0x1.e42b250039e7dca1fe04ee304684c0edp-2,
+    -0x1.f8732ap-2,
+    0x1.ed16e2p-1
+  },
+  { // Entry 63
+    0x1.e42b250039e7dca1fe04ee304684c0edp-2,
+    0x1.f8732ap-2,
+    0x1.ed16e2p-1
+  },
+  { // Entry 64
+    -0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    -0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 65
+    0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 66
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 67
+    0.0f,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 68
+    -0.0f,
+    -0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 69
+    0x1.5ffff7c000317ffed70006f5ffd63cp-147,
+    0x1.p-149,
+    0x1.745d20p-3
+  },
+  { // Entry 70
+    -0x1.5ffff7c000317ffed70006f5ffd63cp-147,
+    -0x1.p-149,
+    0x1.745d20p-3
+  },
+  { // Entry 71
+    0x1.40000dc0009740067fc0477d431261e1p-146,
+    0x1.p-149,
+    0x1.999988p-4
+  },
+  { // Entry 72
+    -0x1.40000dc0009740067fc0477d431261e1p-146,
+    -0x1.p-149,
+    0x1.999988p-4
+  },
+  { // Entry 73
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 74
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 75
+    0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 76
+    -0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    -0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 77
+    0x1.03a264fffa8f8262b1fabf7149142cb1p-1,
+    0x1.p9,
+    0x1.ccccd8p9
+  },
+  { // Entry 78
+    -0x1.03a264fffa8f8262b1fabf7149142cb1p-1,
+    -0x1.p9,
+    0x1.ccccd8p9
+  },
+  { // Entry 79
+    0x1.096d02910676c2be11dcfe9fe3175278p1,
+    0x1.000002p-1,
+    -0x1.19998ep-2
+  },
+  { // Entry 80
+    -0x1.096d02910676c2be11dcfe9fe3175278p1,
+    -0x1.000002p-1,
+    -0x1.19998ep-2
+  },
+  { // Entry 81
+    0x1.ff54b8d04e797f1463152a327d0b86c4p-2,
+    0x1.000002p-1,
+    0x1.d55560p-1
+  },
+  { // Entry 82
+    -0x1.ff54b8d04e797f1463152a327d0b86c4p-2,
+    -0x1.000002p-1,
+    0x1.d55560p-1
+  },
+  { // Entry 83
+    0x1.dac67522e883aedcc9c473438e936964p-2,
+    0x1.000002p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 84
+    -0x1.dac67522e883aedcc9c473438e936964p-2,
+    -0x1.000002p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 85
+    0x1.f430999672c04e0df46fd1307191a380p-4,
+    0x1.000002p-3,
+    0x1.04bd9cp0
+  },
+  { // Entry 86
+    -0x1.f430999672c04e0df46fd1307191a380p-4,
+    -0x1.000002p-3,
+    0x1.04bd9cp0
+  },
+  { // Entry 87
+    0x1.7fb81eff43d4f24387e27e042d6562dbp-5,
+    0x1.000002p-5,
+    0x1.555552p-1
+  },
+  { // Entry 88
+    -0x1.7fb81eff43d4f24387e27e042d6562dbp-5,
+    -0x1.000002p-5,
+    0x1.555552p-1
+  },
+  { // Entry 89
+    0x1.000003000001aaaaa1aaaa80dddd98ddp-23,
+    0x1.000002p-23,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    -0x1.000003000001aaaaa1aaaa80dddd98ddp-23,
+    -0x1.000002p-23,
+    0x1.fffffep-1
+  },
+  { // Entry 91
+    0x1.921fb4fddc6a66f8e54f012a148cac4ep1,
+    0x1.000002p-25,
+    -0x1.d1745cp-1
+  },
+  { // Entry 92
+    -0x1.921fb4fddc6a66f8e54f012a148cac4ep1,
+    -0x1.000002p-25,
+    -0x1.d1745cp-1
+  },
+  { // Entry 93
+    0x1.0468a979b1a9f0624f4c1516d96c6422p1,
+    0x1.000002p0,
+    -0x1.000006p-1
+  },
+  { // Entry 94
+    -0x1.0468a979b1a9f0624f4c1516d96c6422p1,
+    -0x1.000002p0,
+    -0x1.000006p-1
+  },
+  { // Entry 95
+    0x1.b96e57abf90140f894091838c2b8a690p-1,
+    0x1.000002p0,
+    0x1.b6db76p-1
+  },
+  { // Entry 96
+    -0x1.b96e57abf90140f894091838c2b8a690p-1,
+    -0x1.000002p0,
+    0x1.b6db76p-1
+  },
+  { // Entry 97
+    0x1.f01ecfda25de70c3e0bfdea229510fd3p0,
+    0x1.000002p1,
+    -0x1.89d8a0p-1
+  },
+  { // Entry 98
+    -0x1.f01ecfda25de70c3e0bfdea229510fd3p0,
+    -0x1.000002p1,
+    -0x1.89d8a0p-1
+  },
+  { // Entry 99
+    0x1.ff5625094d950db0c74144886d91c14cp-5,
+    0x1.000004p-3,
+    0x1.ffff9ep0
+  },
+  { // Entry 100
+    -0x1.ff5625094d950db0c74144886d91c14cp-5,
+    -0x1.000004p-3,
+    0x1.ffff9ep0
+  },
+  { // Entry 101
+    0x1.fd5bd4fd7ac8b0cf6006c4414f743ea0p-4,
+    0x1.000006p3,
+    0x1.ffffe0p5
+  },
+  { // Entry 102
+    -0x1.fd5bd4fd7ac8b0cf6006c4414f743ea0p-4,
+    -0x1.000006p3,
+    0x1.ffffe0p5
+  },
+  { // Entry 103
+    0x1.8c4f470003e118b76491b0c859d6c053p1,
+    0x1.000008p-2,
+    -0x1.60p2
+  },
+  { // Entry 104
+    -0x1.8c4f470003e118b76491b0c859d6c053p1,
+    -0x1.000008p-2,
+    -0x1.60p2
+  },
+  { // Entry 105
+    0x1.2834603b51b0b1b7ada51badb8c5e787p-1,
+    0x1.00000ep-20,
+    0x1.88p-20
+  },
+  { // Entry 106
+    -0x1.2834603b51b0b1b7ada51badb8c5e787p-1,
+    -0x1.00000ep-20,
+    0x1.88p-20
+  },
+  { // Entry 107
+    0x1.f77e7bb64eb5f42395a6d8adcffa6337p-2,
+    0x1.00000ep-20,
+    0x1.ddfffep-20
+  },
+  { // Entry 108
+    -0x1.f77e7bb64eb5f42395a6d8adcffa6337p-2,
+    -0x1.00000ep-20,
+    0x1.ddfffep-20
+  },
+  { // Entry 109
+    0x1.ffd87cf6fd38249fc231c5402edbc122p-6,
+    0x1.000010p-3,
+    0x1.fffcfep1
+  },
+  { // Entry 110
+    -0x1.ffd87cf6fd38249fc231c5402edbc122p-6,
+    -0x1.000010p-3,
+    0x1.fffcfep1
+  },
+  { // Entry 111
+    0x1.fd5bd4fd76b8efb59210712d88b6e912p-4,
+    0x1.00001ep3,
+    0x1.000008p6
+  },
+  { // Entry 112
+    -0x1.fd5bd4fd76b8efb59210712d88b6e912p-4,
+    -0x1.00001ep3,
+    0x1.000008p6
+  },
+  { // Entry 113
+    0x1.fd5c357b879b2fe30dedcd3135cb691bp-4,
+    0x1.000038p3,
+    0x1.ffffe2p5
+  },
+  { // Entry 114
+    -0x1.fd5c357b879b2fe30dedcd3135cb691bp-4,
+    -0x1.000038p3,
+    0x1.ffffe2p5
+  },
+  { // Entry 115
+    0x1.99392cffffb1e34431dc0b78592ad27cp0,
+    0x1.000262p0,
+    -0x1.c67ffep-6
+  },
+  { // Entry 116
+    -0x1.99392cffffb1e34431dc0b78592ad27cp0,
+    -0x1.000262p0,
+    -0x1.c67ffep-6
+  },
+  { // Entry 117
+    0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 118
+    -0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    -0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 119
+    0x1.321a6aeab209211260a57ffa3329874ep-1,
+    0x1.000ep-20,
+    0x1.77fffep-20
+  },
+  { // Entry 120
+    -0x1.321a6aeab209211260a57ffa3329874ep-1,
+    -0x1.000ep-20,
+    0x1.77fffep-20
+  },
+  { // Entry 121
+    0x1.ff753bea780e4b6715b12898d26fada0p-5,
+    0x1.0010p-3,
+    0x1.000030p1
+  },
+  { // Entry 122
+    -0x1.ff753bea780e4b6715b12898d26fada0p-5,
+    -0x1.0010p-3,
+    0x1.000030p1
+  },
+  { // Entry 123
+    0x1.400ea9fffd0dcf2989a4e76f8aa5db51p-1,
+    0x1.001be4p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 124
+    -0x1.400ea9fffd0dcf2989a4e76f8aa5db51p-1,
+    -0x1.001be4p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 125
+    0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 126
+    -0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    -0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 127
+    0x1.943f9a4b36eb2b8033de5110689ec228p-1,
+    0x1.022228p0,
+    0x1.fffffcp-1
+  },
+  { // Entry 128
+    -0x1.943f9a4b36eb2b8033de5110689ec228p-1,
+    -0x1.022228p0,
+    0x1.fffffcp-1
+  },
+  { // Entry 129
+    0x1.c66450ffe905abdcfe0531d5f14c2238p0,
+    0x1.0b7778p-21,
+    -0x1.bb0cp-24
+  },
+  { // Entry 130
+    -0x1.c66450ffe905abdcfe0531d5f14c2238p0,
+    -0x1.0b7778p-21,
+    -0x1.bb0cp-24
+  },
+  { // Entry 131
+    0x1.f759ec36e59bd61b017b6ebaaf148489p-2,
+    0x1.0df6b0p9,
+    0x1.f83dc0p9
+  },
+  { // Entry 132
+    -0x1.f759ec36e59bd61b017b6ebaaf148489p-2,
+    -0x1.0df6b0p9,
+    0x1.f83dc0p9
+  },
+  { // Entry 133
+    0x1.0039e2465cf8081fc9c3f6acc6017e31p-1,
+    0x1.0f83dap9,
+    0x1.f07bd4p9
+  },
+  { // Entry 134
+    -0x1.0039e2465cf8081fc9c3f6acc6017e31p-1,
+    -0x1.0f83dap9,
+    0x1.f07bd4p9
+  },
+  { // Entry 135
+    0x1.32c00cffff80612ac29d96e5387e4acdp-1,
+    0x1.10cee0p1,
+    0x1.8f83e4p1
+  },
+  { // Entry 136
+    -0x1.32c00cffff80612ac29d96e5387e4acdp-1,
+    -0x1.10cee0p1,
+    0x1.8f83e4p1
+  },
+  { // Entry 137
+    0x1.fc9d3effcf63ce3c73d32f688b7e0d3ep-2,
+    0x1.133332p9,
+    0x1.fbbbacp9
+  },
+  { // Entry 138
+    -0x1.fc9d3effcf63ce3c73d32f688b7e0d3ep-2,
+    -0x1.133332p9,
+    0x1.fbbbacp9
+  },
+  { // Entry 139
+    0x1.13b7ba9cbd2bde0ae99dd5b90b6a6caep-4,
+    0x1.142288p-5,
+    0x1.p-1
+  },
+  { // Entry 140
+    -0x1.13b7ba9cbd2bde0ae99dd5b90b6a6caep-4,
+    -0x1.142288p-5,
+    0x1.p-1
+  },
+  { // Entry 141
+    0x1.9baeb903173549a4605c13cb0ec5c997p-1,
+    0x1.1a8a08p-1,
+    0x1.102e88p-1
+  },
+  { // Entry 142
+    -0x1.9baeb903173549a4605c13cb0ec5c997p-1,
+    -0x1.1a8a08p-1,
+    0x1.102e88p-1
+  },
+  { // Entry 143
+    0x1.585ed10003e25039288d2a597baabb4ep-1,
+    0x1.1aab0ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 144
+    -0x1.585ed10003e25039288d2a597baabb4ep-1,
+    -0x1.1aab0ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 145
+    0x1.fd7b30fe75452129dd4d92575b1b6643p-3,
+    0x1.20p0,
+    0x1.1b6db6p2
+  },
+  { // Entry 146
+    -0x1.fd7b30fe75452129dd4d92575b1b6643p-3,
+    -0x1.20p0,
+    0x1.1b6db6p2
+  },
+  { // Entry 147
+    0x1.5ee2abfffc833087a8462d843d375f40p-1,
+    0x1.221ffcp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 148
+    -0x1.5ee2abfffc833087a8462d843d375f40p-1,
+    -0x1.221ffcp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 149
+    0x1.922dd2fea41a07a00852062680449192p-1,
+    0x1.223224p9,
+    0x1.222224p9
+  },
+  { // Entry 150
+    -0x1.922dd2fea41a07a00852062680449192p-1,
+    -0x1.223224p9,
+    0x1.222224p9
+  },
+  { // Entry 151
+    0x1.fd98765b7a311ad974b5861737a89126p-4,
+    0x1.3024a6p-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 152
+    -0x1.fd98765b7a311ad974b5861737a89126p-4,
+    -0x1.3024a6p-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 153
+    0x1.ff173f59cb25f4362c94ce6ab39ece70p-4,
+    0x1.310b7ep-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 154
+    -0x1.ff173f59cb25f4362c94ce6ab39ece70p-4,
+    -0x1.310b7ep-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 155
+    0x1.893661d985cfb6e78d6ed0749b2fd803p-1,
+    0x1.31f564p-4,
+    0x1.3ccc80p-4
+  },
+  { // Entry 156
+    -0x1.893661d985cfb6e78d6ed0749b2fd803p-1,
+    -0x1.31f564p-4,
+    0x1.3ccc80p-4
+  },
+  { // Entry 157
+    0x1.3800a6f8595ae7372b172ef6aec40af3p-28,
+    0x1.38p-20,
+    0x1.fffeeep7
+  },
+  { // Entry 158
+    -0x1.3800a6f8595ae7372b172ef6aec40af3p-28,
+    -0x1.38p-20,
+    0x1.fffeeep7
+  },
+  { // Entry 159
+    0x1.f51dec230b3dcdee4d4b104276bd091bp0,
+    0x1.3a58f8p0,
+    -0x1.p-1
+  },
+  { // Entry 160
+    -0x1.f51dec230b3dcdee4d4b104276bd091bp0,
+    -0x1.3a58f8p0,
+    -0x1.p-1
+  },
+  { // Entry 161
+    0x1.add4fcfffc818f75eda49eae0d8f98e2p-2,
+    0x1.3cc366p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 162
+    -0x1.add4fcfffc818f75eda49eae0d8f98e2p-2,
+    -0x1.3cc366p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 163
+    0x1.9d6394fffffe8990edfcf5c33f9e7bc1p0,
+    0x1.3fc2e4p3,
+    -0x1.c28f5ep-2
+  },
+  { // Entry 164
+    -0x1.9d6394fffffe8990edfcf5c33f9e7bc1p0,
+    -0x1.3fc2e4p3,
+    -0x1.c28f5ep-2
+  },
+  { // Entry 165
+    0x1.16d00513a5c2b116688fed7c9e6d7bf9p-3,
+    0x1.40a050p-6,
+    0x1.24924ap-3
+  },
+  { // Entry 166
+    -0x1.16d00513a5c2b116688fed7c9e6d7bf9p-3,
+    -0x1.40a050p-6,
+    0x1.24924ap-3
+  },
+  { // Entry 167
+    0x1.6d71ea27ddde729204699db97fdd037ep-1,
+    0x1.41f070p2,
+    0x1.73b782p2
+  },
+  { // Entry 168
+    -0x1.6d71ea27ddde729204699db97fdd037ep-1,
+    -0x1.41f070p2,
+    0x1.73b782p2
+  },
+  { // Entry 169
+    0x1.6e2ce2182a658d8450720e677f21ce61p-1,
+    0x1.429ap9,
+    0x1.7368e2p9
+  },
+  { // Entry 170
+    -0x1.6e2ce2182a658d8450720e677f21ce61p-1,
+    -0x1.429ap9,
+    0x1.7368e2p9
+  },
+  { // Entry 171
+    0x1.740a75f5e00f3c2a265818a8e05ccc99p-1,
+    0x1.435e54p0,
+    0x1.6bca20p0
+  },
+  { // Entry 172
+    -0x1.740a75f5e00f3c2a265818a8e05ccc99p-1,
+    -0x1.435e54p0,
+    0x1.6bca20p0
+  },
+  { // Entry 173
+    0x1.4eb92766fa1641bdcd6b72f3bd619251p-1,
+    0x1.5baa3ap-2,
+    0x1.c5c85cp-2
+  },
+  { // Entry 174
+    -0x1.4eb92766fa1641bdcd6b72f3bd619251p-1,
+    -0x1.5baa3ap-2,
+    0x1.c5c85cp-2
+  },
+  { // Entry 175
+    0x1.feb17ca8152a6f1c96ebab23e1ca4438p-4,
+    0x1.5d6c50p-8,
+    0x1.5c80p-5
+  },
+  { // Entry 176
+    -0x1.feb17ca8152a6f1c96ebab23e1ca4438p-4,
+    -0x1.5d6c50p-8,
+    0x1.5c80p-5
+  },
+  { // Entry 177
+    0x1.61e054ffff517564fbb75fa927e9317dp1,
+    0x1.62b140p1,
+    -0x1.c0p2
+  },
+  { // Entry 178
+    -0x1.61e054ffff517564fbb75fa927e9317dp1,
+    -0x1.62b140p1,
+    -0x1.c0p2
+  },
+  { // Entry 179
+    0x1.926064fffd342f8f129a70df92a458b3p-1,
+    0x1.633de6p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 180
+    -0x1.926064fffd342f8f129a70df92a458b3p-1,
+    -0x1.633de6p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 181
+    0x1.ddf15cfffeff907133df83405cf1c383p-2,
+    0x1.65a3e2p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 182
+    -0x1.ddf15cfffeff907133df83405cf1c383p-2,
+    -0x1.65a3e2p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 183
+    0x1.a8c692fc3efe50c92076f2cdd3f6bd92p0,
+    0x1.68b44ep0,
+    -0x1.p-3
+  },
+  { // Entry 184
+    -0x1.a8c692fc3efe50c92076f2cdd3f6bd92p0,
+    -0x1.68b44ep0,
+    -0x1.p-3
+  },
+  { // Entry 185
+    0x1.1d730dfffc0d10826bfff4268c4db210p0,
+    0x1.6a0092p0,
+    0x1.62e42ep-1
+  },
+  { // Entry 186
+    -0x1.1d730dfffc0d10826bfff4268c4db210p0,
+    -0x1.6a0092p0,
+    0x1.62e42ep-1
+  },
+  { // Entry 187
+    0x1.9a06c6fffcb000f0eb371998c338bdaep-1,
+    0x1.6e04f2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 188
+    -0x1.9a06c6fffcb000f0eb371998c338bdaep-1,
+    -0x1.6e04f2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 189
+    0x1.921f9f0000092b6cc81e3cd97531299cp0,
+    0x1.70p-1,
+    0x1.0011p-20
+  },
+  { // Entry 190
+    -0x1.921f9f0000092b6cc81e3cd97531299cp0,
+    -0x1.70p-1,
+    0x1.0011p-20
+  },
+  { // Entry 191
+    0x1.55a1f300040b007b9fcf88e0bbaa4bf9p0,
+    0x1.707652p1,
+    0x1.62e42ep-1
+  },
+  { // Entry 192
+    -0x1.55a1f300040b007b9fcf88e0bbaa4bf9p0,
+    -0x1.707652p1,
+    0x1.62e42ep-1
+  },
+  { // Entry 193
+    0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 194
+    -0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    -0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 195
+    0x1.7702d9c0f7f4e1f5f65e806e4e9e2eb4p-3,
+    0x1.7b4274p-2,
+    0x1.000006p1
+  },
+  { // Entry 196
+    -0x1.7702d9c0f7f4e1f5f65e806e4e9e2eb4p-3,
+    -0x1.7b4274p-2,
+    0x1.000006p1
+  },
+  { // Entry 197
+    0x1.fac9255e2e84501d7f69135fa78a7842p-2,
+    0x1.7c1570p-2,
+    0x1.601e80p-1
+  },
+  { // Entry 198
+    -0x1.fac9255e2e84501d7f69135fa78a7842p-2,
+    -0x1.7c1570p-2,
+    0x1.601e80p-1
+  },
+  { // Entry 199
+    0x1.a4c2220003e9ff7184d11c11dbed790ap-1,
+    0x1.7db652p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 200
+    -0x1.a4c2220003e9ff7184d11c11dbed790ap-1,
+    -0x1.7db652p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 201
+    0x1.487f682022d3a5562109a0306dcb05a2p-1,
+    0x1.7e7a9ap-2,
+    0x1.p-1
+  },
+  { // Entry 202
+    -0x1.487f682022d3a5562109a0306dcb05a2p-1,
+    -0x1.7e7a9ap-2,
+    0x1.p-1
+  },
+  { // Entry 203
+    0x1.e48b2fddff19e1b2ad305bf85f553acfp0,
+    0x1.7fbddep0,
+    -0x1.p-1
+  },
+  { // Entry 204
+    -0x1.e48b2fddff19e1b2ad305bf85f553acfp0,
+    -0x1.7fbddep0,
+    -0x1.p-1
+  },
+  { // Entry 205
+    0x1.8000030000017ffff0ffffc44ccc87ccp-23,
+    0x1.80p-23,
+    0x1.fffffcp-1
+  },
+  { // Entry 206
+    -0x1.8000030000017ffff0ffffc44ccc87ccp-23,
+    -0x1.80p-23,
+    0x1.fffffcp-1
+  },
+  { // Entry 207
+    0x1.236ede000419f0232206a19dc1c9ba72p0,
+    0x1.807cdcp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 208
+    -0x1.236ede000419f0232206a19dc1c9ba72p0,
+    -0x1.807cdcp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 209
+    0x1.23af91000432ff7ca91b5869446d2677p0,
+    0x1.817ccep0,
+    0x1.62e42ep-1
+  },
+  { // Entry 210
+    -0x1.23af91000432ff7ca91b5869446d2677p0,
+    -0x1.817ccep0,
+    0x1.62e42ep-1
+  },
+  { // Entry 211
+    0x1.1d0d78ffde75e005ce13a48bb96c20d2p1,
+    0x1.86bcf6p-9,
+    -0x1.2cde14p-9
+  },
+  { // Entry 212
+    -0x1.1d0d78ffde75e005ce13a48bb96c20d2p1,
+    -0x1.86bcf6p-9,
+    -0x1.2cde14p-9
+  },
+  { // Entry 213
+    0x1.c40b44f7d49ec3bebbe6c143bb874988p-17,
+    0x1.88p-7,
+    0x1.bbfdfep9
+  },
+  { // Entry 214
+    -0x1.c40b44f7d49ec3bebbe6c143bb874988p-17,
+    -0x1.88p-7,
+    0x1.bbfdfep9
+  },
+  { // Entry 215
+    0x1.ac7dfffd2b94ebd2b4155d81fcb743c8p-1,
+    0x1.8ba2bcp9,
+    0x1.64d916p9
+  },
+  { // Entry 216
+    -0x1.ac7dfffd2b94ebd2b4155d81fcb743c8p-1,
+    -0x1.8ba2bcp9,
+    0x1.64d916p9
+  },
+  { // Entry 217
+    0x1.f4436c2918d5691620bddea5f0bdb99fp0,
+    0x1.904a6ap9,
+    -0x1.42e220p8
+  },
+  { // Entry 218
+    -0x1.f4436c2918d5691620bddea5f0bdb99fp0,
+    -0x1.904a6ap9,
+    -0x1.42e220p8
+  },
+  { // Entry 219
+    0x1.f280a4a85a9834808487443a22c27f9cp-4,
+    0x1.90c864p-5,
+    0x1.99999ap-2
+  },
+  { // Entry 220
+    -0x1.f280a4a85a9834808487443a22c27f9cp-4,
+    -0x1.90c864p-5,
+    0x1.99999ap-2
+  },
+  { // Entry 221
+    0x1.0a58d9000005f0ba9a470ce5241f1b9cp-1,
+    0x1.969770p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 222
+    -0x1.0a58d9000005f0ba9a470ce5241f1b9cp-1,
+    -0x1.969770p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 223
+    0x1.f730a597948e5c35433d522c24bdefa5p-1,
+    0x1.9b2698p9,
+    0x1.1219d6p9
+  },
+  { // Entry 224
+    -0x1.f730a597948e5c35433d522c24bdefa5p-1,
+    -0x1.9b2698p9,
+    0x1.1219d6p9
+  },
+  { // Entry 225
+    0x1.25c78f0002b5030803b34e0d3d565ec5p1,
+    0x1.a99552p-9,
+    -0x1.788ee0p-9
+  },
+  { // Entry 226
+    -0x1.25c78f0002b5030803b34e0d3d565ec5p1,
+    -0x1.a99552p-9,
+    -0x1.788ee0p-9
+  },
+  { // Entry 227
+    0x1.fec12756125a1c17f496ca7eff6b5d07p-4,
+    0x1.aac766p-1,
+    0x1.a99994p2
+  },
+  { // Entry 228
+    -0x1.fec12756125a1c17f496ca7eff6b5d07p-4,
+    -0x1.aac766p-1,
+    0x1.a99994p2
+  },
+  { // Entry 229
+    0x1.ff2726fffadc57a59c068daf94011a06p-2,
+    0x1.acd9c8p-2,
+    0x1.89469ep-1
+  },
+  { // Entry 230
+    -0x1.ff2726fffadc57a59c068daf94011a06p-2,
+    -0x1.acd9c8p-2,
+    0x1.89469ep-1
+  },
+  { // Entry 231
+    0x1.6cefa52cd49df53a19a9664ef79b5d21p-1,
+    0x1.ba8cp-2,
+    0x1.p-1
+  },
+  { // Entry 232
+    -0x1.6cefa52cd49df53a19a9664ef79b5d21p-1,
+    -0x1.ba8cp-2,
+    0x1.p-1
+  },
+  { // Entry 233
+    0x1.ffecd1bdfc10703be4cadb1ac64a6eacp-6,
+    0x1.bf31e2p-5,
+    0x1.bf1d60p0
+  },
+  { // Entry 234
+    -0x1.ffecd1bdfc10703be4cadb1ac64a6eacp-6,
+    -0x1.bf31e2p-5,
+    0x1.bf1d60p0
+  },
+  { // Entry 235
+    0x1.d93732f77c9157c16887ce5aa762f389p-6,
+    0x1.c1aep-5,
+    0x1.e66658p0
+  },
+  { // Entry 236
+    -0x1.d93732f77c9157c16887ce5aa762f389p-6,
+    -0x1.c1aep-5,
+    0x1.e66658p0
+  },
+  { // Entry 237
+    0x1.cea8bcf57199048990f21a209a2d2d3ep-45,
+    0x1.c25c26p-44,
+    0x1.f263a0p0
+  },
+  { // Entry 238
+    -0x1.cea8bcf57199048990f21a209a2d2d3ep-45,
+    -0x1.c25c26p-44,
+    0x1.f263a0p0
+  },
+  { // Entry 239
+    0x1.90004702e62bf58fd25e1cb1c208fb8bp-1,
+    0x1.c8dcb8p2,
+    0x1.ccaa94p2
+  },
+  { // Entry 240
+    -0x1.90004702e62bf58fd25e1cb1c208fb8bp-1,
+    -0x1.c8dcb8p2,
+    0x1.ccaa94p2
+  },
+  { // Entry 241
+    0x1.fd7c865a3e71ad0d8a724c912f6fb8b9p-4,
+    0x1.d64866p-3,
+    0x1.d629c0p0
+  },
+  { // Entry 242
+    -0x1.fd7c865a3e71ad0d8a724c912f6fb8b9p-4,
+    -0x1.d64866p-3,
+    0x1.d629c0p0
+  },
+  { // Entry 243
+    0x1.4aa669000170483715efe0528369e73ep-1,
+    0x1.d7011cp0,
+    0x1.3880c8p1
+  },
+  { // Entry 244
+    -0x1.4aa669000170483715efe0528369e73ep-1,
+    -0x1.d7011cp0,
+    0x1.3880c8p1
+  },
+  { // Entry 245
+    0x1.f420e6032da03c581c213d0cc2eacf5bp-2,
+    0x1.db6e30p-2,
+    0x1.bf62a4p-1
+  },
+  { // Entry 246
+    -0x1.f420e6032da03c581c213d0cc2eacf5bp-2,
+    -0x1.db6e30p-2,
+    0x1.bf62a4p-1
+  },
+  { // Entry 247
+    0x1.922dc15dd25e294f02361f0292bc0df8p-1,
+    0x1.dddddcp-2,
+    0x1.ddc3a4p-2
+  },
+  { // Entry 248
+    -0x1.922dc15dd25e294f02361f0292bc0df8p-1,
+    -0x1.dddddcp-2,
+    0x1.ddc3a4p-2
+  },
+  { // Entry 249
+    0x1.9d6fd902defaede7830883b7a2788da8p-1,
+    0x1.de61fcp9,
+    0x1.c9b22cp9
+  },
+  { // Entry 250
+    -0x1.9d6fd902defaede7830883b7a2788da8p-1,
+    -0x1.de61fcp9,
+    0x1.c9b22cp9
+  },
+  { // Entry 251
+    0x1.7ee180ca27095c5506b0fa68e94004d0p-4,
+    0x1.dffffep-2,
+    0x1.40p2
+  },
+  { // Entry 252
+    -0x1.7ee180ca27095c5506b0fa68e94004d0p-4,
+    -0x1.dffffep-2,
+    0x1.40p2
+  },
+  { // Entry 253
+    0x1.7d848f000bfaf243f75b3a1218dad94ep0,
+    0x1.dffffep2,
+    0x1.35c292p-1
+  },
+  { // Entry 254
+    -0x1.7d848f000bfaf243f75b3a1218dad94ep0,
+    -0x1.dffffep2,
+    0x1.35c292p-1
+  },
+  { // Entry 255
+    0x1.dfffe63601c1383bc54eea3773a4624fp-11,
+    0x1.dffffep10,
+    0x1.000008p21
+  },
+  { // Entry 256
+    -0x1.dfffe63601c1383bc54eea3773a4624fp-11,
+    -0x1.dffffep10,
+    0x1.000008p21
+  },
+  { // Entry 257
+    0x1.8f82d1b1443d17b008f18f7822175902p-4,
+    0x1.e0f078p-6,
+    0x1.333334p-2
+  },
+  { // Entry 258
+    -0x1.8f82d1b1443d17b008f18f7822175902p-4,
+    -0x1.e0f078p-6,
+    0x1.333334p-2
+  },
+  { // Entry 259
+    0x1.07795d7bc568d7597605f1e44388198ep1,
+    0x1.e2be36p-2,
+    -0x1.fffffcp-3
+  },
+  { // Entry 260
+    -0x1.07795d7bc568d7597605f1e44388198ep1,
+    -0x1.e2be36p-2,
+    -0x1.fffffcp-3
+  },
+  { // Entry 261
+    0x1.fff95e57a0b39bb8afc31a89674dc197p-92,
+    0x1.e62448p8,
+    0x1.e62a94p99
+  },
+  { // Entry 262
+    -0x1.fff95e57a0b39bb8afc31a89674dc197p-92,
+    -0x1.e62448p8,
+    0x1.e62a94p99
+  },
+  { // Entry 263
+    0x1.0e06f7000a4e54e7181ed79d635dead3p0,
+    0x1.e783d4p-1,
+    0x1.148cf8p-1
+  },
+  { // Entry 264
+    -0x1.0e06f7000a4e54e7181ed79d635dead3p0,
+    -0x1.e783d4p-1,
+    0x1.148cf8p-1
+  },
+  { // Entry 265
+    0x1.fea63fbd167cf3f4fa0987d1e28cd75fp-4,
+    0x1.e7a55ap-1,
+    0x1.e66660p2
+  },
+  { // Entry 266
+    -0x1.fea63fbd167cf3f4fa0987d1e28cd75fp-4,
+    -0x1.e7a55ap-1,
+    0x1.e66660p2
+  },
+  { // Entry 267
+    0x1.d32abcfffffee42f5ad6cc888072e445p0,
+    0x1.ece6d4p0,
+    -0x1.p-1
+  },
+  { // Entry 268
+    -0x1.d32abcfffffee42f5ad6cc888072e445p0,
+    -0x1.ece6d4p0,
+    -0x1.p-1
+  },
+  { // Entry 269
+    0x1.ecac96fad1d02ec25eecde4b7f0b97eap-4,
+    0x1.ef1060p-5,
+    0x1.p-1
+  },
+  { // Entry 270
+    -0x1.ecac96fad1d02ec25eecde4b7f0b97eap-4,
+    -0x1.ef1060p-5,
+    0x1.p-1
+  },
+  { // Entry 271
+    0x1.1202c2e6b84549d2bdd30f506adfa9d4p0,
+    0x1.f07bd2p9,
+    0x1.0f83dcp9
+  },
+  { // Entry 272
+    -0x1.1202c2e6b84549d2bdd30f506adfa9d4p0,
+    -0x1.f07bd2p9,
+    0x1.0f83dcp9
+  },
+  { // Entry 273
+    0x1.ffe7d9701b27043f401f2771fcff61aap-6,
+    0x1.fddffep15,
+    0x1.fdcd90p20
+  },
+  { // Entry 274
+    -0x1.ffe7d9701b27043f401f2771fcff61aap-6,
+    -0x1.fddffep15,
+    0x1.fdcd90p20
+  },
+  { // Entry 275
+    0x1.919c94434fc91fb77041e0d4eaadf614p-1,
+    0x1.fefffep-10,
+    0x1.0003p-9
+  },
+  { // Entry 276
+    -0x1.919c94434fc91fb77041e0d4eaadf614p-1,
+    -0x1.fefffep-10,
+    0x1.0003p-9
+  },
+  { // Entry 277
+    0x1.1b57780820085bc0391cbd61b2fd2335p0,
+    0x1.ff8ffep-20,
+    0x1.000088p-20
+  },
+  { // Entry 278
+    -0x1.1b57780820085bc0391cbd61b2fd2335p0,
+    -0x1.ff8ffep-20,
+    0x1.000088p-20
+  },
+  { // Entry 279
+    0x1.ff976af6e817ac0b343cc79da075b8a8p-6,
+    0x1.ffc0p-139,
+    0x1.fffep-134
+  },
+  { // Entry 280
+    -0x1.ff976af6e817ac0b343cc79da075b8a8p-6,
+    -0x1.ffc0p-139,
+    0x1.fffep-134
+  },
+  { // Entry 281
+    0x1.ff7fc3e4933e894c72260e0533856313p-4,
+    0x1.fff77ep-5,
+    0x1.fdcd2ep-2
+  },
+  { // Entry 282
+    -0x1.ff7fc3e4933e894c72260e0533856313p-4,
+    -0x1.fff77ep-5,
+    0x1.fdcd2ep-2
+  },
+  { // Entry 283
+    0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 284
+    -0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    -0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 285
+    0x1.fffffdfffff7ffffdfffff7ffffdffffp-127,
+    0x1.fffff6p0,
+    0x1.fffff8p126
+  },
+  { // Entry 286
+    -0x1.fffffdfffff7ffffdfffff7ffffdffffp-127,
+    -0x1.fffff6p0,
+    0x1.fffff8p126
+  },
+  { // Entry 287
+    0x1.ffffec000077fffd05556b3554a0155bp-34,
+    0x1.fffff8p-2,
+    0x1.000006p32
+  },
+  { // Entry 288
+    -0x1.ffffec000077fffd05556b3554a0155bp-34,
+    -0x1.fffff8p-2,
+    0x1.000006p32
+  },
+  { // Entry 289
+    0x1.55554fffffffffffffffffffffffffffp-104,
+    0x1.fffff8p-127,
+    0x1.80p-23
+  },
+  { // Entry 290
+    -0x1.55554fffffffffffffffffffffffffffp-104,
+    -0x1.fffff8p-127,
+    0x1.80p-23
+  },
+  { // Entry 291
+    0x1.ff54beeda807aa4ec5698ce8cc7dcba8p-2,
+    0x1.fffffcp-1,
+    0x1.d55552p0
+  },
+  { // Entry 292
+    -0x1.ff54beeda807aa4ec5698ce8cc7dcba8p-2,
+    -0x1.fffffcp-1,
+    0x1.d55552p0
+  },
+  { // Entry 293
+    0x1.fffff800000fffffe000003fffff80p-129,
+    0x1.fffffcp-2,
+    0x1.000002p127
+  },
+  { // Entry 294
+    -0x1.fffff800000fffffe000003fffff80p-129,
+    -0x1.fffffcp-2,
+    0x1.000002p127
+  },
+  { // Entry 295
+    0x1.d7625deb9d3d113e0be1ba5dac42e6c0p-2,
+    0x1.fffffcp-2,
+    0x1.022228p0
+  },
+  { // Entry 296
+    -0x1.d7625deb9d3d113e0be1ba5dac42e6c0p-2,
+    -0x1.fffffcp-2,
+    0x1.022228p0
+  },
+  { // Entry 297
+    0x1.0c30b75fc8b0637fcbaf3ed21f47bbd5p-118,
+    0x1.fffffcp-122,
+    0x1.e8ba40p-4
+  },
+  { // Entry 298
+    -0x1.0c30b75fc8b0637fcbaf3ed21f47bbd5p-118,
+    -0x1.fffffcp-122,
+    0x1.e8ba40p-4
+  },
+  { // Entry 299
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-126,
+    0x1.p1
+  },
+  { // Entry 300
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-126,
+    0x1.p1
+  },
+  { // Entry 301
+    0x1.f5b748fc32492f9b0e1a9e29c7b40a45p-3,
+    0x1.fffffcp20,
+    0x1.00000ap23
+  },
+  { // Entry 302
+    -0x1.f5b748fc32492f9b0e1a9e29c7b40a45p-3,
+    -0x1.fffffcp20,
+    0x1.00000ap23
+  },
+  { // Entry 303
+    0x1.e8009efffc72402f56046bbb3775db7ep-2,
+    0x1.6e6d52p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 304
+    -0x1.e8009efffc72402f56046bbb3775db7ep-2,
+    -0x1.6e6d52p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 305
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 306
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 307
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 308
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 309
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 310
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 311
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 312
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 313
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 314
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 315
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 316
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.p0,
+    0x1.p3
+  },
+  { // Entry 317
+    0x1.7249faa996a216a33079d20319e727c3p0,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 318
+    -0x1.7249faa996a216a33079d20319e727c3p0,
+    -0x1.p3,
+    0x1.p0
+  },
+  { // Entry 319
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 320
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p3,
+    0x1.p3
+  },
+  { // Entry 321
+    0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    0x1.p0,
+    0x1.p9
+  },
+  { // Entry 322
+    -0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    -0x1.p0,
+    0x1.p9
+  },
+  { // Entry 323
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 324
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.p0,
+    0x1.p10
+  },
+  { // Entry 325
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.p3,
+    0x1.p9
+  },
+  { // Entry 326
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.p3,
+    0x1.p9
+  },
+  { // Entry 327
+    0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 328
+    -0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    -0x1.p3,
+    0x1.p10
+  },
+  { // Entry 329
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.p0,
+    0x1.p100
+  },
+  { // Entry 330
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.p0,
+    0x1.p100
+  },
+  { // Entry 331
+    0x1.ffffffffffffffffffffffffffffffffp-102,
+    0x1.p0,
+    0x1.p101
+  },
+  { // Entry 332
+    -0x1.ffffffffffffffffffffffffffffffffp-102,
+    -0x1.p0,
+    0x1.p101
+  },
+  { // Entry 333
+    0x1.ffffffffffffffffffffffffffffffffp-98,
+    0x1.p3,
+    0x1.p100
+  },
+  { // Entry 334
+    -0x1.ffffffffffffffffffffffffffffffffp-98,
+    -0x1.p3,
+    0x1.p100
+  },
+  { // Entry 335
+    0x1.ffffffffffffffffffffffffffffffffp-99,
+    0x1.p3,
+    0x1.p101
+  },
+  { // Entry 336
+    -0x1.ffffffffffffffffffffffffffffffffp-99,
+    -0x1.p3,
+    0x1.p101
+  },
+  { // Entry 337
+    0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    0x1.p9,
+    0x1.p0
+  },
+  { // Entry 338
+    -0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    -0x1.p9,
+    0x1.p0
+  },
+  { // Entry 339
+    0x1.8e1fca98cb63311299ee93be01605c21p0,
+    0x1.p9,
+    0x1.p3
+  },
+  { // Entry 340
+    -0x1.8e1fca98cb63311299ee93be01605c21p0,
+    -0x1.p9,
+    0x1.p3
+  },
+  { // Entry 341
+    0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 342
+    -0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    -0x1.p10,
+    0x1.p0
+  },
+  { // Entry 343
+    0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 344
+    -0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    -0x1.p10,
+    0x1.p3
+  },
+  { // Entry 345
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 346
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p9,
+    0x1.p9
+  },
+  { // Entry 347
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p9,
+    0x1.p10
+  },
+  { // Entry 348
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p9,
+    0x1.p10
+  },
+  { // Entry 349
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.p10,
+    0x1.p9
+  },
+  { // Entry 350
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.p10,
+    0x1.p9
+  },
+  { // Entry 351
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 352
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p10,
+    0x1.p10
+  },
+  { // Entry 353
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.p9,
+    0x1.p100
+  },
+  { // Entry 354
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.p9,
+    0x1.p100
+  },
+  { // Entry 355
+    0x1.ffffffffffffffffffffffffffffffffp-93,
+    0x1.p9,
+    0x1.p101
+  },
+  { // Entry 356
+    -0x1.ffffffffffffffffffffffffffffffffp-93,
+    -0x1.p9,
+    0x1.p101
+  },
+  { // Entry 357
+    0x1.ffffffffffffffffffffffffffffffffp-91,
+    0x1.p10,
+    0x1.p100
+  },
+  { // Entry 358
+    -0x1.ffffffffffffffffffffffffffffffffp-91,
+    -0x1.p10,
+    0x1.p100
+  },
+  { // Entry 359
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.p10,
+    0x1.p101
+  },
+  { // Entry 360
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.p10,
+    0x1.p101
+  },
+  { // Entry 361
+    0x1.921fb54442d18469898cc516f1b839a2p0,
+    0x1.p100,
+    0x1.p0
+  },
+  { // Entry 362
+    -0x1.921fb54442d18469898cc516f1b839a2p0,
+    -0x1.p100,
+    0x1.p0
+  },
+  { // Entry 363
+    0x1.921fb54442d18469898cc51681b839a2p0,
+    0x1.p100,
+    0x1.p3
+  },
+  { // Entry 364
+    -0x1.921fb54442d18469898cc51681b839a2p0,
+    -0x1.p100,
+    0x1.p3
+  },
+  { // Entry 365
+    0x1.921fb54442d18469898cc516f9b839a2p0,
+    0x1.p101,
+    0x1.p0
+  },
+  { // Entry 366
+    -0x1.921fb54442d18469898cc516f9b839a2p0,
+    -0x1.p101,
+    0x1.p0
+  },
+  { // Entry 367
+    0x1.921fb54442d18469898cc516c1b839a2p0,
+    0x1.p101,
+    0x1.p3
+  },
+  { // Entry 368
+    -0x1.921fb54442d18469898cc516c1b839a2p0,
+    -0x1.p101,
+    0x1.p3
+  },
+  { // Entry 369
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.p100,
+    0x1.p9
+  },
+  { // Entry 370
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.p100,
+    0x1.p9
+  },
+  { // Entry 371
+    0x1.921fb54442d18469898cc4d701b839a2p0,
+    0x1.p100,
+    0x1.p10
+  },
+  { // Entry 372
+    -0x1.921fb54442d18469898cc4d701b839a2p0,
+    -0x1.p100,
+    0x1.p10
+  },
+  { // Entry 373
+    0x1.921fb54442d18469898cc50701b839a2p0,
+    0x1.p101,
+    0x1.p9
+  },
+  { // Entry 374
+    -0x1.921fb54442d18469898cc50701b839a2p0,
+    -0x1.p101,
+    0x1.p9
+  },
+  { // Entry 375
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.p101,
+    0x1.p10
+  },
+  { // Entry 376
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.p101,
+    0x1.p10
+  },
+  { // Entry 377
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 378
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p100,
+    0x1.p100
+  },
+  { // Entry 379
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p100,
+    0x1.p101
+  },
+  { // Entry 380
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p100,
+    0x1.p101
+  },
+  { // Entry 381
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.p101,
+    0x1.p100
+  },
+  { // Entry 382
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.p101,
+    0x1.p100
+  },
+  { // Entry 383
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p101,
+    0x1.p101
+  },
+  { // Entry 384
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p101,
+    0x1.p101
+  },
+  { // Entry 385
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 386
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 387
+    -0.0f,
+    -0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 388
+    0.0f,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 389
+    -0.0f,
+    -0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 390
+    0.0f,
+    0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 391
+    0.0,
+    0.0,
+    0x1.fffffep0
+  },
+  { // Entry 392
+    0.0,
+    0.0,
+    0x1.p1
+  },
+  { // Entry 393
+    0.0,
+    0.0,
+    0x1.000002p1
+  },
+  { // Entry 394
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 395
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 396
+    0.0f,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 397
+    -0.0f,
+    -0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 398
+    0.0f,
+    0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 399
+    -0.0f,
+    -0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 400
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 401
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 402
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 403
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 404
+    0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 405
+    -0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    -0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 406
+    0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 407
+    -0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    -0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 408
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 409
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 410
+    0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 411
+    -0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    -0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 412
+    0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 413
+    -0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    -0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 414
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 415
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 416
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 417
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 418
+    -0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    -0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 419
+    0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 420
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 421
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 422
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 423
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 424
+    -0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    -0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 425
+    0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 426
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 427
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 428
+    -0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    -0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 429
+    0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 430
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 431
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 432
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 433
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 434
+    -0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    -0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 435
+    0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 436
+    0x1.a271f5940186465d406645186f3ff94ap-2,
+    0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 437
+    -0x1.a271f5940186465d406645186f3ff94ap-2,
+    -0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 438
+    0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 439
+    -0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    -0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 440
+    0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 441
+    -0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    -0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 442
+    0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 443
+    -0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    -0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 444
+    0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 445
+    -0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    -0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 446
+    0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 447
+    -0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    -0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 448
+    0x1.a271f8f252607a942b743a29251f41b3p-2,
+    0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 449
+    -0x1.a271f8f252607a942b743a29251f41b3p-2,
+    -0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 450
+    0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 451
+    -0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    -0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 452
+    0x1.a271f492240706fe45667de97ee1051bp-2,
+    0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 453
+    -0x1.a271f492240706fe45667de97ee1051bp-2,
+    -0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 454
+    -0x1.a271f8f252607a942b743a29251f41b3p-2,
+    -0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 455
+    0x1.a271f8f252607a942b743a29251f41b3p-2,
+    0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 456
+    -0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    -0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 457
+    0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 458
+    -0x1.a271f492240706fe45667de97ee1051bp-2,
+    -0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 459
+    0x1.a271f492240706fe45667de97ee1051bp-2,
+    0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 460
+    -0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    -0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 461
+    0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 462
+    -0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    -0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 463
+    0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 464
+    -0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    -0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 465
+    0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 466
+    -0x1.a271f5940186465d406645186f3ff94ap-2,
+    -0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 467
+    0x1.a271f5940186465d406645186f3ff94ap-2,
+    0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 468
+    -0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    -0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 469
+    0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 470
+    -0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    -0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 471
+    0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 472
+    0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 473
+    -0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    -0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 474
+    0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 475
+    -0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    -0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 476
+    0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 477
+    -0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    -0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 478
+    0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 479
+    -0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    -0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 480
+    0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 481
+    -0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    -0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 482
+    0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 483
+    -0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    -0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 484
+    0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 485
+    -0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    -0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 486
+    0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 487
+    -0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    -0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 488
+    0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 489
+    -0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    -0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 490
+    -0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    -0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 491
+    0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 492
+    -0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    -0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 493
+    0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 494
+    -0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    -0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 495
+    0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 496
+    -0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    -0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 497
+    0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 498
+    -0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    -0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 499
+    0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 500
+    -0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    -0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 501
+    0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 502
+    -0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    -0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 503
+    0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 504
+    -0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    -0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 505
+    0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 506
+    -0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    -0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 507
+    0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 508
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 509
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 510
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 511
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 512
+    0x1.921fb24442d304698b0cc51401b839c8p-1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 513
+    -0x1.921fb24442d304698b0cc51401b839c8p-1,
+    -0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 514
+    0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 515
+    -0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    -0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 516
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 517
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p1,
+    0x1.p1
+  },
+  { // Entry 518
+    0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 519
+    -0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    -0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 520
+    0x1.921fb84442d00469880cc51a01b8397bp-1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 521
+    -0x1.921fb84442d00469880cc51a01b8397bp-1,
+    -0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 522
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 523
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 524
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 525
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 526
+    0x1.ffffffd555555bbbbbba972972d00dp-14,
+    0x1.fffffep-13,
+    0x1.fffffep0
+  },
+  { // Entry 527
+    -0x1.ffffffd555555bbbbbba972972d00dp-14,
+    -0x1.fffffep-13,
+    0x1.fffffep0
+  },
+  { // Entry 528
+    0x1.fffffdd55555dbbbbb1a9729e57ab751p-14,
+    0x1.fffffep-13,
+    0x1.p1
+  },
+  { // Entry 529
+    -0x1.fffffdd55555dbbbbb1a9729e57ab751p-14,
+    -0x1.fffffep-13,
+    0x1.p1
+  },
+  { // Entry 530
+    0x1.fffff9d55562dbbb9bda97790acf3db2p-14,
+    0x1.fffffep-13,
+    0x1.000002p1
+  },
+  { // Entry 531
+    -0x1.fffff9d55562dbbb9bda97790acf3db2p-14,
+    -0x1.fffffep-13,
+    0x1.000002p1
+  },
+  { // Entry 532
+    0x1.000000eaaaab6dddde6d4b951012b14cp-13,
+    0x1.p-12,
+    0x1.fffffep0
+  },
+  { // Entry 533
+    -0x1.000000eaaaab6dddde6d4b951012b14cp-13,
+    -0x1.p-12,
+    0x1.fffffep0
+  },
+  { // Entry 534
+    0x1.ffffffd555555bbbbbba972972d00dp-14,
+    0x1.p-12,
+    0x1.p1
+  },
+  { // Entry 535
+    -0x1.ffffffd555555bbbbbba972972d00dp-14,
+    -0x1.p-12,
+    0x1.p1
+  },
+  { // Entry 536
+    0x1.fffffbd5555e5bbba77a97585824f2d2p-14,
+    0x1.p-12,
+    0x1.000002p1
+  },
+  { // Entry 537
+    -0x1.fffffbd5555e5bbba77a97585824f2d2p-14,
+    -0x1.p-12,
+    0x1.000002p1
+  },
+  { // Entry 538
+    0x1.000002eaaaacedddde0d4b917d68009bp-13,
+    0x1.000002p-12,
+    0x1.fffffep0
+  },
+  { // Entry 539
+    -0x1.000002eaaaacedddde0d4b917d68009bp-13,
+    -0x1.000002p-12,
+    0x1.fffffep0
+  },
+  { // Entry 540
+    0x1.000001eaaaaa2ddddcfd4b9486bd5ca7p-13,
+    0x1.000002p-12,
+    0x1.p1
+  },
+  { // Entry 541
+    -0x1.000001eaaaaa2ddddcfd4b9486bd5ca7p-13,
+    -0x1.000002p-12,
+    0x1.p1
+  },
+  { // Entry 542
+    0x1.ffffffd555555bbbbbba972972d00dp-14,
+    0x1.000002p-12,
+    0x1.000002p1
+  },
+  { // Entry 543
+    -0x1.ffffffd555555bbbbbba972972d00dp-14,
+    -0x1.000002p-12,
+    0x1.000002p1
+  },
+  { // Entry 544
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 545
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 546
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 547
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 548
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 549
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 550
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 551
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 552
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 553
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 554
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 555
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 556
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 557
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 558
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 559
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 560
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 561
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 562
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 563
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 564
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 565
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 566
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 567
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 568
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 569
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 570
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 571
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 572
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 573
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 574
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 575
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 576
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 577
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 578
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 579
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 580
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 581
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 582
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 583
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 584
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 585
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 586
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 587
+    0x1.fffffdffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 588
+    -0x1.fffffdffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 589
+    0x1.fffffa00000bffffe800002ffffef555p-57,
+    0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 590
+    -0x1.fffffa00000bffffe800002ffffef555p-57,
+    -0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 591
+    0x1.000001000001000001000000ffffabaap-56,
+    0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 592
+    -0x1.000001000001000001000000ffffabaap-56,
+    -0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 593
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.p1,
+    0x1.p57
+  },
+  { // Entry 594
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.p1,
+    0x1.p57
+  },
+  { // Entry 595
+    0x1.fffffc000007fffff000001fffff1555p-57,
+    0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 596
+    -0x1.fffffc000007fffff000001fffff1555p-57,
+    -0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 597
+    0x1.000003000003000003000002ffffadaap-56,
+    0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 598
+    -0x1.000003000003000003000002ffffadaap-56,
+    -0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 599
+    0x1.000001ffffffffffffffffffffffaaaap-56,
+    0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 600
+    -0x1.000001ffffffffffffffffffffffaaaap-56,
+    -0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 601
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 602
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 603
+    -0x1.000003000003000003000002ffffadaap-56,
+    -0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 604
+    0x1.000003000003000003000002ffffadaap-56,
+    0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 605
+    -0x1.000001ffffffffffffffffffffffaaaap-56,
+    -0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 606
+    0x1.000001ffffffffffffffffffffffaaaap-56,
+    0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 607
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 608
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 609
+    -0x1.000001000001000001000000ffffabaap-56,
+    -0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 610
+    0x1.000001000001000001000000ffffabaap-56,
+    0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 611
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.p1,
+    0x1.p57
+  },
+  { // Entry 612
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.p1,
+    0x1.p57
+  },
+  { // Entry 613
+    -0x1.fffffc000007fffff000001fffff1555p-57,
+    -0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 614
+    0x1.fffffc000007fffff000001fffff1555p-57,
+    0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 615
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 616
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 617
+    -0x1.fffffdffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 618
+    0x1.fffffdffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 619
+    -0x1.fffffa00000bffffe800002ffffef555p-57,
+    -0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 620
+    0x1.fffffa00000bffffe800002ffffef555p-57,
+    0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 621
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffep1,
+    0x1.fffffep31
+  },
+  { // Entry 622
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffep1,
+    0x1.fffffep31
+  },
+  { // Entry 623
+    0x1.fffffdfffffffff555557555553555bbp-31,
+    0x1.fffffep1,
+    0x1.p32
+  },
+  { // Entry 624
+    -0x1.fffffdfffffffff555557555553555bbp-31,
+    -0x1.fffffep1,
+    0x1.p32
+  },
+  { // Entry 625
+    0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    0x1.fffffep1,
+    0x1.000002p32
+  },
+  { // Entry 626
+    -0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    -0x1.fffffep1,
+    0x1.000002p32
+  },
+  { // Entry 627
+    0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 628
+    -0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    -0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 629
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.p2,
+    0x1.p32
+  },
+  { // Entry 630
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.p2,
+    0x1.p32
+  },
+  { // Entry 631
+    0x1.fffffc000007fff545559575545515bfp-31,
+    0x1.p2,
+    0x1.000002p32
+  },
+  { // Entry 632
+    -0x1.fffffc000007fff545559575545515bfp-31,
+    -0x1.p2,
+    0x1.000002p32
+  },
+  { // Entry 633
+    0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    0x1.000002p2,
+    0x1.fffffep31
+  },
+  { // Entry 634
+    -0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    -0x1.000002p2,
+    0x1.fffffep31
+  },
+  { // Entry 635
+    0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    0x1.000002p2,
+    0x1.p32
+  },
+  { // Entry 636
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    -0x1.000002p2,
+    0x1.p32
+  },
+  { // Entry 637
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.000002p2,
+    0x1.000002p32
+  },
+  { // Entry 638
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.000002p2,
+    0x1.000002p32
+  },
+  { // Entry 639
+    -0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    -0x1.000002p-2,
+    0x1.fffffep27
+  },
+  { // Entry 640
+    0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    0x1.000002p-2,
+    0x1.fffffep27
+  },
+  { // Entry 641
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    -0x1.000002p-2,
+    0x1.p28
+  },
+  { // Entry 642
+    0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    0x1.000002p-2,
+    0x1.p28
+  },
+  { // Entry 643
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.000002p-2,
+    0x1.000002p28
+  },
+  { // Entry 644
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.000002p-2,
+    0x1.000002p28
+  },
+  { // Entry 645
+    -0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    -0x1.p-2,
+    0x1.fffffep27
+  },
+  { // Entry 646
+    0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    0x1.p-2,
+    0x1.fffffep27
+  },
+  { // Entry 647
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.p-2,
+    0x1.p28
+  },
+  { // Entry 648
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.p-2,
+    0x1.p28
+  },
+  { // Entry 649
+    -0x1.fffffc000007fff545559575545515bfp-31,
+    -0x1.p-2,
+    0x1.000002p28
+  },
+  { // Entry 650
+    0x1.fffffc000007fff545559575545515bfp-31,
+    0x1.p-2,
+    0x1.000002p28
+  },
+  { // Entry 651
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffep-3,
+    0x1.fffffep27
+  },
+  { // Entry 652
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffep-3,
+    0x1.fffffep27
+  },
+  { // Entry 653
+    -0x1.fffffdfffffffff555557555553555bbp-31,
+    -0x1.fffffep-3,
+    0x1.p28
+  },
+  { // Entry 654
+    0x1.fffffdfffffffff555557555553555bbp-31,
+    0x1.fffffep-3,
+    0x1.p28
+  },
+  { // Entry 655
+    -0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    -0x1.fffffep-3,
+    0x1.000002p28
+  },
+  { // Entry 656
+    0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    0x1.fffffep-3,
+    0x1.000002p28
+  },
+  { // Entry 657
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep2,
+    0x1.fffffep2
+  },
+  { // Entry 658
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep2,
+    0x1.fffffep2
+  },
+  { // Entry 659
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep2,
+    0x1.p3
+  },
+  { // Entry 660
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep2,
+    0x1.p3
+  },
+  { // Entry 661
+    0x1.921fb24442d304698b0cc51401b839c8p-1,
+    0x1.fffffep2,
+    0x1.000002p3
+  },
+  { // Entry 662
+    -0x1.921fb24442d304698b0cc51401b839c8p-1,
+    -0x1.fffffep2,
+    0x1.000002p3
+  },
+  { // Entry 663
+    0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 664
+    -0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    -0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 665
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 666
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p3,
+    0x1.p3
+  },
+  { // Entry 667
+    0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 668
+    -0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    -0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 669
+    0x1.921fb84442d00469880cc51a01b8397bp-1,
+    0x1.000002p3,
+    0x1.fffffep2
+  },
+  { // Entry 670
+    -0x1.921fb84442d00469880cc51a01b8397bp-1,
+    -0x1.000002p3,
+    0x1.fffffep2
+  },
+  { // Entry 671
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p3,
+    0x1.p3
+  },
+  { // Entry 672
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p3,
+    0x1.p3
+  },
+  { // Entry 673
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.000002p3,
+    0x1.000002p3
+  },
+  { // Entry 674
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.000002p3,
+    0x1.000002p3
+  },
+  { // Entry 675
+    -0x1.dac67522e883aedcc9c473438e936964p-2,
+    -0x1.000002p3,
+    0x1.fffffep3
+  },
+  { // Entry 676
+    0x1.dac67522e883aedcc9c473438e936964p-2,
+    0x1.000002p3,
+    0x1.fffffep3
+  },
+  { // Entry 677
+    -0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    -0x1.000002p3,
+    0x1.p4
+  },
+  { // Entry 678
+    0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    0x1.000002p3,
+    0x1.p4
+  },
+  { // Entry 679
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.000002p3,
+    0x1.000002p4
+  },
+  { // Entry 680
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.000002p3,
+    0x1.000002p4
+  },
+  { // Entry 681
+    -0x1.dac671efb54fd7d28ecd5330c89a3d73p-2,
+    -0x1.p3,
+    0x1.fffffep3
+  },
+  { // Entry 682
+    0x1.dac671efb54fd7d28ecd5330c89a3d73p-2,
+    0x1.p3,
+    0x1.fffffep3
+  },
+  { // Entry 683
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p3,
+    0x1.p4
+  },
+  { // Entry 684
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p3,
+    0x1.p4
+  },
+  { // Entry 685
+    -0x1.dac66d22e886e20ff6fe7a2378baf6f9p-2,
+    -0x1.p3,
+    0x1.000002p4
+  },
+  { // Entry 686
+    0x1.dac66d22e886e20ff6fe7a2378baf6f9p-2,
+    0x1.p3,
+    0x1.000002p4
+  },
+  { // Entry 687
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.fffffep2,
+    0x1.fffffep3
+  },
+  { // Entry 688
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.fffffep2,
+    0x1.fffffep3
+  },
+  { // Entry 689
+    -0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    -0x1.fffffep2,
+    0x1.p4
+  },
+  { // Entry 690
+    0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    0x1.fffffep2,
+    0x1.p4
+  },
+  { // Entry 691
+    -0x1.dac66b894eeee20ff7663e0a055c2460p-2,
+    -0x1.fffffep2,
+    0x1.000002p4
+  },
+  { // Entry 692
+    0x1.dac66b894eeee20ff7663e0a055c2460p-2,
+    0x1.fffffep2,
+    0x1.000002p4
+  },
+  { // Entry 693
+    0x1.72c43fa570aa5c9e564c7f0a5befa484p1,
+    0x1.fffffep2,
+    -0x1.000002p5
+  },
+  { // Entry 694
+    -0x1.72c43fa570aa5c9e564c7f0a5befa484p1,
+    -0x1.fffffep2,
+    -0x1.000002p5
+  },
+  { // Entry 695
+    0x1.72c43f69346ec6ea833e8c8f811d5b23p1,
+    0x1.fffffep2,
+    -0x1.p5
+  },
+  { // Entry 696
+    -0x1.72c43f69346ec6ea833e8c8f811d5b23p1,
+    -0x1.fffffep2,
+    -0x1.p5
+  },
+  { // Entry 697
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.fffffep2,
+    -0x1.fffffep4
+  },
+  { // Entry 698
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.fffffep2,
+    -0x1.fffffep4
+  },
+  { // Entry 699
+    0x1.72c43f87528c71e0c59cd3cd4eedc91cp1,
+    0x1.p3,
+    -0x1.000002p5
+  },
+  { // Entry 700
+    -0x1.72c43f87528c71e0c59cd3cd4eedc91cp1,
+    -0x1.p3,
+    -0x1.000002p5
+  },
+  { // Entry 701
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.p3,
+    -0x1.p5
+  },
+  { // Entry 702
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.p3,
+    -0x1.p5
+  },
+  { // Entry 703
+    0x1.72c43f2cf8326c9028ca86607b667a8cp1,
+    0x1.p3,
+    -0x1.fffffep4
+  },
+  { // Entry 704
+    -0x1.72c43f2cf8326c9028ca86607b667a8cp1,
+    -0x1.p3,
+    -0x1.fffffep4
+  },
+  { // Entry 705
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.000002p3,
+    -0x1.000002p5
+  },
+  { // Entry 706
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.000002p3,
+    -0x1.000002p5
+  },
+  { // Entry 707
+    0x1.72c43f0eda1471e0c4cf752a26ca10a6p1,
+    0x1.000002p3,
+    -0x1.p5
+  },
+  { // Entry 708
+    -0x1.72c43f0eda1471e0c4cf752a26ca10a6p1,
+    -0x1.000002p3,
+    -0x1.p5
+  },
+  { // Entry 709
+    0x1.72c43ef0bbf60243faa66eaf95b8eb8ep1,
+    0x1.000002p3,
+    -0x1.fffffep4
+  },
+  { // Entry 710
+    -0x1.72c43ef0bbf60243faa66eaf95b8eb8ep1,
+    -0x1.000002p3,
+    -0x1.fffffep4
+  },
+  { // Entry 711
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.fffffep2,
+    0x1.fffffep5
+  },
+  { // Entry 712
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.fffffep2,
+    0x1.fffffep5
+  },
+  { // Entry 713
+    0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    0x1.fffffep2,
+    0x1.p6
+  },
+  { // Entry 714
+    -0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    -0x1.fffffep2,
+    0x1.p6
+  },
+  { // Entry 715
+    0x1.fd5ba3c2647c7ef6c76d6d5ea97bab75p-4,
+    0x1.fffffep2,
+    0x1.000002p6
+  },
+  { // Entry 716
+    -0x1.fd5ba3c2647c7ef6c76d6d5ea97bab75p-4,
+    -0x1.fffffep2,
+    0x1.000002p6
+  },
+  { // Entry 717
+    0x1.fd5baba2e27ac4e31ede5c4d3485ebacp-4,
+    0x1.p3,
+    0x1.fffffep5
+  },
+  { // Entry 718
+    -0x1.fd5baba2e27ac4e31ede5c4d3485ebacp-4,
+    -0x1.p3,
+    0x1.fffffep5
+  },
+  { // Entry 719
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.p3,
+    0x1.p6
+  },
+  { // Entry 720
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.p3,
+    0x1.p6
+  },
+  { // Entry 721
+    0x1.fd5ba5ba83faad9ea550e6d54b02d0f9p-4,
+    0x1.p3,
+    0x1.000002p6
+  },
+  { // Entry 722
+    -0x1.fd5ba5ba83faad9ea550e6d54b02d0f9p-4,
+    -0x1.p3,
+    0x1.000002p6
+  },
+  { // Entry 723
+    0x1.fd5baf932182675568b9d1daf2fd1727p-4,
+    0x1.000002p3,
+    0x1.fffffep5
+  },
+  { // Entry 724
+    -0x1.fd5baf932182675568b9d1daf2fd1727p-4,
+    -0x1.000002p3,
+    0x1.fffffep5
+  },
+  { // Entry 725
+    0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    0x1.000002p3,
+    0x1.p6
+  },
+  { // Entry 726
+    -0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    -0x1.000002p3,
+    0x1.p6
+  },
+  { // Entry 727
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.000002p3,
+    0x1.000002p6
+  },
+  { // Entry 728
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.000002p3,
+    0x1.000002p6
+  },
+  { // Entry 729
+    -0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    -0x1.000002p3,
+    0x1.fffffep6
+  },
+  { // Entry 730
+    0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    0x1.000002p3,
+    0x1.fffffep6
+  },
+  { // Entry 731
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p3,
+    0x1.p7
+  },
+  { // Entry 732
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p3,
+    0x1.p7
+  },
+  { // Entry 733
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.000002p3,
+    0x1.000002p7
+  },
+  { // Entry 734
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.000002p3,
+    0x1.000002p7
+  },
+  { // Entry 735
+    -0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    -0x1.p3,
+    0x1.fffffep6
+  },
+  { // Entry 736
+    0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    0x1.p3,
+    0x1.fffffep6
+  },
+  { // Entry 737
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p3,
+    0x1.p7
+  },
+  { // Entry 738
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p3,
+    0x1.p7
+  },
+  { // Entry 739
+    -0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    -0x1.p3,
+    0x1.000002p7
+  },
+  { // Entry 740
+    0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    0x1.p3,
+    0x1.000002p7
+  },
+  { // Entry 741
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffep2,
+    0x1.fffffep6
+  },
+  { // Entry 742
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffep2,
+    0x1.fffffep6
+  },
+  { // Entry 743
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep2,
+    0x1.p7
+  },
+  { // Entry 744
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep2,
+    0x1.p7
+  },
+  { // Entry 745
+    -0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    -0x1.fffffep2,
+    0x1.000002p7
+  },
+  { // Entry 746
+    0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    0x1.fffffep2,
+    0x1.000002p7
+  },
+  { // Entry 747
+    0x1.0468a9467e7938105dfef0f3f2ae89fdp1,
+    0x1.fffffep2,
+    -0x1.000002p2
+  },
+  { // Entry 748
+    -0x1.0468a9467e7938105dfef0f3f2ae89fdp1,
+    -0x1.fffffep2,
+    -0x1.000002p2
+  },
+  { // Entry 749
+    0x1.0468a8e01812bd2f16a00cf199ef647fp1,
+    0x1.fffffep2,
+    -0x1.p2
+  },
+  { // Entry 750
+    -0x1.0468a8e01812bd2f16a00cf199ef647fp1,
+    -0x1.fffffep2,
+    -0x1.p2
+  },
+  { // Entry 751
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.fffffep2,
+    -0x1.fffffep1
+  },
+  { // Entry 752
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.fffffep2,
+    -0x1.fffffep1
+  },
+  { // Entry 753
+    0x1.0468a9134b459e76c491082a433c8899p1,
+    0x1.p3,
+    -0x1.000002p2
+  },
+  { // Entry 754
+    -0x1.0468a9134b459e76c491082a433c8899p1,
+    -0x1.p3,
+    -0x1.000002p2
+  },
+  { // Entry 755
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.p3,
+    -0x1.p2
+  },
+  { // Entry 756
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.p3,
+    -0x1.p2
+  },
+  { // Entry 757
+    0x1.0468a879b1ac23957ce9188c7ea0e2c0p1,
+    0x1.p3,
+    -0x1.fffffep1
+  },
+  { // Entry 758
+    -0x1.0468a879b1ac23957ce9188c7ea0e2c0p1,
+    -0x1.p3,
+    -0x1.fffffep1
+  },
+  { // Entry 759
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.000002p3,
+    -0x1.000002p2
+  },
+  { // Entry 760
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.000002p3,
+    -0x1.000002p2
+  },
+  { // Entry 761
+    0x1.0468a8467e799e76c3a631cfeff37bb0p1,
+    0x1.000002p3,
+    -0x1.p2
+  },
+  { // Entry 762
+    -0x1.0468a8467e799e76c3a631cfeff37bb0p1,
+    -0x1.000002p3,
+    -0x1.p2
+  },
+  { // Entry 763
+    0x1.0468a8134b469e76c3b32a4cc187a15dp1,
+    0x1.000002p3,
+    -0x1.fffffep1
+  },
+  { // Entry 764
+    -0x1.0468a8134b469e76c3b32a4cc187a15dp1,
+    -0x1.000002p3,
+    -0x1.fffffep1
+  },
+  { // Entry 765
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffep-103,
+    0x1.fffffep-3
+  },
+  { // Entry 766
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffep-103,
+    0x1.fffffep-3
+  },
+  { // Entry 767
+    0x1.fffffdffffffffffffffffffffffffffp-101,
+    0x1.fffffep-103,
+    0x1.p-2
+  },
+  { // Entry 768
+    -0x1.fffffdffffffffffffffffffffffffffp-101,
+    -0x1.fffffep-103,
+    0x1.p-2
+  },
+  { // Entry 769
+    0x1.fffffa00000bffffe800002fffffa0p-101,
+    0x1.fffffep-103,
+    0x1.000002p-2
+  },
+  { // Entry 770
+    -0x1.fffffa00000bffffe800002fffffa0p-101,
+    -0x1.fffffep-103,
+    0x1.000002p-2
+  },
+  { // Entry 771
+    0x1.000001000001000001000001000001p-100,
+    0x1.p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 772
+    -0x1.000001000001000001000001000001p-100,
+    -0x1.p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 773
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.p-102,
+    0x1.p-2
+  },
+  { // Entry 774
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.p-102,
+    0x1.p-2
+  },
+  { // Entry 775
+    0x1.fffffc000007fffff000001fffffc0p-101,
+    0x1.p-102,
+    0x1.000002p-2
+  },
+  { // Entry 776
+    -0x1.fffffc000007fffff000001fffffc0p-101,
+    -0x1.p-102,
+    0x1.000002p-2
+  },
+  { // Entry 777
+    0x1.000003000003000003000003000003p-100,
+    0x1.000002p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 778
+    -0x1.000003000003000003000003000003p-100,
+    -0x1.000002p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 779
+    0x1.000001ffffffffffffffffffffffffffp-100,
+    0x1.000002p-102,
+    0x1.p-2
+  },
+  { // Entry 780
+    -0x1.000001ffffffffffffffffffffffffffp-100,
+    -0x1.000002p-102,
+    0x1.p-2
+  },
+  { // Entry 781
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.000002p-102,
+    0x1.000002p-2
+  },
+  { // Entry 782
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.000002p-102,
+    0x1.000002p-2
+  },
+  { // Entry 783
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffcp2,
+    0x1.fffffcp102
+  },
+  { // Entry 784
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffcp2,
+    0x1.fffffcp102
+  },
+  { // Entry 785
+    0x1.fffffdfffffdfffffdfffffdfffffdffp-101,
+    0x1.fffffcp2,
+    0x1.fffffep102
+  },
+  { // Entry 786
+    -0x1.fffffdfffffdfffffdfffffdfffffdffp-101,
+    -0x1.fffffcp2,
+    0x1.fffffep102
+  },
+  { // Entry 787
+    0x1.fffffbffffffffffffffffffffffffffp-101,
+    0x1.fffffcp2,
+    0x1.p103
+  },
+  { // Entry 788
+    -0x1.fffffbffffffffffffffffffffffffffp-101,
+    -0x1.fffffcp2,
+    0x1.p103
+  },
+  { // Entry 789
+    0x1.fffff800000fffffe000003fffff80p-101,
+    0x1.fffffcp2,
+    0x1.000002p103
+  },
+  { // Entry 790
+    -0x1.fffff800000fffffe000003fffff80p-101,
+    -0x1.fffffcp2,
+    0x1.000002p103
+  },
+  { // Entry 791
+    0x1.fffff400002fffff400002fffff4p-101,
+    0x1.fffffcp2,
+    0x1.000004p103
+  },
+  { // Entry 792
+    -0x1.fffff400002fffff400002fffff4p-101,
+    -0x1.fffffcp2,
+    0x1.000004p103
+  },
+  { // Entry 793
+    0x1.000001000002000004000008000010p-100,
+    0x1.fffffep2,
+    0x1.fffffcp102
+  },
+  { // Entry 794
+    -0x1.000001000002000004000008000010p-100,
+    -0x1.fffffep2,
+    0x1.fffffcp102
+  },
+  { // Entry 795
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffep2,
+    0x1.fffffep102
+  },
+  { // Entry 796
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffep2,
+    0x1.fffffep102
+  },
+  { // Entry 797
+    0x1.fffffdffffffffffffffffffffffffffp-101,
+    0x1.fffffep2,
+    0x1.p103
+  },
+  { // Entry 798
+    -0x1.fffffdffffffffffffffffffffffffffp-101,
+    -0x1.fffffep2,
+    0x1.p103
+  },
+  { // Entry 799
+    0x1.fffffa00000bffffe800002fffffa0p-101,
+    0x1.fffffep2,
+    0x1.000002p103
+  },
+  { // Entry 800
+    -0x1.fffffa00000bffffe800002fffffa0p-101,
+    -0x1.fffffep2,
+    0x1.000002p103
+  },
+  { // Entry 801
+    0x1.fffff6000027ffff6000027ffff6p-101,
+    0x1.fffffep2,
+    0x1.000004p103
+  },
+  { // Entry 802
+    -0x1.fffff6000027ffff6000027ffff6p-101,
+    -0x1.fffffep2,
+    0x1.000004p103
+  },
+  { // Entry 803
+    0x1.000002000004000008000010000020p-100,
+    0x1.p3,
+    0x1.fffffcp102
+  },
+  { // Entry 804
+    -0x1.000002000004000008000010000020p-100,
+    -0x1.p3,
+    0x1.fffffcp102
+  },
+  { // Entry 805
+    0x1.000001000001000001000001000001p-100,
+    0x1.p3,
+    0x1.fffffep102
+  },
+  { // Entry 806
+    -0x1.000001000001000001000001000001p-100,
+    -0x1.p3,
+    0x1.fffffep102
+  },
+  { // Entry 807
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.p3,
+    0x1.p103
+  },
+  { // Entry 808
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.p3,
+    0x1.p103
+  },
+  { // Entry 809
+    0x1.fffffc000007fffff000001fffffc0p-101,
+    0x1.p3,
+    0x1.000002p103
+  },
+  { // Entry 810
+    -0x1.fffffc000007fffff000001fffffc0p-101,
+    -0x1.p3,
+    0x1.000002p103
+  },
+  { // Entry 811
+    0x1.fffff800001fffff800001fffff8p-101,
+    0x1.p3,
+    0x1.000004p103
+  },
+  { // Entry 812
+    -0x1.fffff800001fffff800001fffff8p-101,
+    -0x1.p3,
+    0x1.000004p103
+  },
+  { // Entry 813
+    0x1.000004000008000010000020000040p-100,
+    0x1.000002p3,
+    0x1.fffffcp102
+  },
+  { // Entry 814
+    -0x1.000004000008000010000020000040p-100,
+    -0x1.000002p3,
+    0x1.fffffcp102
+  },
+  { // Entry 815
+    0x1.000003000003000003000003000003p-100,
+    0x1.000002p3,
+    0x1.fffffep102
+  },
+  { // Entry 816
+    -0x1.000003000003000003000003000003p-100,
+    -0x1.000002p3,
+    0x1.fffffep102
+  },
+  { // Entry 817
+    0x1.000001ffffffffffffffffffffffffffp-100,
+    0x1.000002p3,
+    0x1.p103
+  },
+  { // Entry 818
+    -0x1.000001ffffffffffffffffffffffffffp-100,
+    -0x1.000002p3,
+    0x1.p103
+  },
+  { // Entry 819
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.000002p3,
+    0x1.000002p103
+  },
+  { // Entry 820
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.000002p3,
+    0x1.000002p103
+  },
+  { // Entry 821
+    0x1.fffffc00000fffffc00000fffffcp-101,
+    0x1.000002p3,
+    0x1.000004p103
+  },
+  { // Entry 822
+    -0x1.fffffc00000fffffc00000fffffcp-101,
+    -0x1.000002p3,
+    0x1.000004p103
+  },
+  { // Entry 823
+    0x1.00000600000c000018000030000060p-100,
+    0x1.000004p3,
+    0x1.fffffcp102
+  },
+  { // Entry 824
+    -0x1.00000600000c000018000030000060p-100,
+    -0x1.000004p3,
+    0x1.fffffcp102
+  },
+  { // Entry 825
+    0x1.000005000005000005000005000005p-100,
+    0x1.000004p3,
+    0x1.fffffep102
+  },
+  { // Entry 826
+    -0x1.000005000005000005000005000005p-100,
+    -0x1.000004p3,
+    0x1.fffffep102
+  },
+  { // Entry 827
+    0x1.000003ffffffffffffffffffffffffffp-100,
+    0x1.000004p3,
+    0x1.p103
+  },
+  { // Entry 828
+    -0x1.000003ffffffffffffffffffffffffffp-100,
+    -0x1.000004p3,
+    0x1.p103
+  },
+  { // Entry 829
+    0x1.000001fffffc000007fffff000001fffp-100,
+    0x1.000004p3,
+    0x1.000002p103
+  },
+  { // Entry 830
+    -0x1.000001fffffc000007fffff000001fffp-100,
+    -0x1.000004p3,
+    0x1.000002p103
+  },
+  { // Entry 831
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.000004p3,
+    0x1.000004p103
+  },
+  { // Entry 832
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.000004p3,
+    0x1.000004p103
+  },
+  { // Entry 833
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 834
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 835
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 836
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 837
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 838
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 839
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 840
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 841
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 842
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 843
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 844
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 845
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 846
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 847
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 848
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 849
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 850
+    0.0,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 851
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 852
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 853
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 854
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 855
+    -0.0,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 856
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 857
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 858
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 859
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 860
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 861
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 862
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 863
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 864
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 865
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 866
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 867
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 868
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 869
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 870
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 871
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 872
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 873
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 874
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 875
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 876
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 877
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 878
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 879
+    0.0,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 880
+    0.0,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 881
+    0.0,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 882
+    -0.0,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 883
+    -0.0,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 884
+    -0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 885
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 886
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 887
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 888
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 889
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 890
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 891
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 892
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 893
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 894
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 895
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 896
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 897
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 898
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 899
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 900
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 901
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 902
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 903
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 904
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 905
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 906
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 907
+    0.0f,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 908
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 909
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 910
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 911
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 912
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 913
+    0x1.921fb34442d184698c376fc1ac62dde6p0,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 914
+    0x1.921fb74442d1846986e21a6c570d955ep0,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 915
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 916
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 917
+    0x1.fffffffffffd55555555555bbbbbbbbbp-24,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 918
+    -0x1.fffffffffffd55555555555bbbbbbbbbp-24,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 919
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 920
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 921
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 922
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 923
+    0x1.921fb44442d184698ae21a6c570d8bc4p1,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 924
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 925
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 926
+    -0x1.921fb34442d184698c376fc1ac62dde6p0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 927
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 928
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 929
+    -0x1.921fb44442d184698ae21a6c570d8bc4p1,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 930
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 931
+    -0x1.921fb74442d1846986e21a6c570d955ep0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 932
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 933
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 934
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 935
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 936
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  }
+};
diff --git a/tests/math_data/atan_intel_data.h b/tests/math_data/atan_intel_data.h
new file mode 100644
index 0000000..64bd607
--- /dev/null
+++ b/tests/math_data/atan_intel_data.h
@@ -0,0 +1,4646 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_atan_intel_data[] = {
+  { // Entry 0
+    0x1.0fb06ede9973a00000000000007cc060p-5,
+    0x1.0fc9f1fabe658p-5
+  },
+  { // Entry 1
+    -0x1.0fb06ede9973a00000000000007cc060p-5,
+    -0x1.0fc9f1fabe658p-5
+  },
+  { // Entry 2
+    0x1.1ba1951db1d6dfffffffffffffb8f174p-5,
+    0x1.1bbe9c255698dp-5
+  },
+  { // Entry 3
+    -0x1.1ba1951db1d6dfffffffffffffb8f174p-5,
+    -0x1.1bbe9c255698dp-5
+  },
+  { // Entry 4
+    0x1.8d8d2d4bd6fa2fffffffffffffb52a01p-5,
+    0x1.8ddd25ab90ca1p-5
+  },
+  { // Entry 5
+    -0x1.8d8d2d4bd6fa2fffffffffffffb52a01p-5,
+    -0x1.8ddd25ab90ca1p-5
+  },
+  { // Entry 6
+    0x1.52c39ef070cad0000000000000397b8dp-4,
+    0x1.5389e6df41979p-4
+  },
+  { // Entry 7
+    -0x1.52c39ef070cad0000000000000397b8dp-4,
+    -0x1.5389e6df41979p-4
+  },
+  { // Entry 8
+    0x1.a33f32ac5ceb4ffffffffffffff62c0ep-3,
+    0x1.a933fe176b375p-3
+  },
+  { // Entry 9
+    -0x1.a33f32ac5ceb4ffffffffffffff62c0ep-3,
+    -0x1.a933fe176b375p-3
+  },
+  { // Entry 10
+    0x1.09544b71ad4a6800000000000013a8d4p-2,
+    0x1.0f6e5d9960397p-2
+  },
+  { // Entry 11
+    -0x1.09544b71ad4a6800000000000013a8d4p-2,
+    -0x1.0f6e5d9960397p-2
+  },
+  { // Entry 12
+    0x1.46ac37224353600000000000000f8ab8p-1,
+    0x1.7ba49f739829fp-1
+  },
+  { // Entry 13
+    -0x1.46ac37224353600000000000000f8ab8p-1,
+    -0x1.7ba49f739829fp-1
+  },
+  { // Entry 14
+    -0x1.93d0d4b4b1dee82cea5b0c37054b40e2p-1,
+    -0x1.01b28f7519ab5p0
+  },
+  { // Entry 15
+    0x1.93d0d4b4b1dee82cea5b0c37054b40e2p-1,
+    0x1.01b28f7519ab5p0
+  },
+  { // Entry 16
+    -0x1.8e373c766a9cb7fff0093d26a3e96fdcp0,
+    -0x1.05ffffffff0p6
+  },
+  { // Entry 17
+    0x1.8e373c766a9cb7fff0093d26a3e96fdcp0,
+    0x1.05ffffffff0p6
+  },
+  { // Entry 18
+    -0x1.9a66b77f370938283db745fa4d8f6929p-1,
+    -0x1.086a05172c159p0
+  },
+  { // Entry 19
+    0x1.9a66b77f370938283db745fa4d8f6929p-1,
+    0x1.086a05172c159p0
+  },
+  { // Entry 20
+    -0x1.a1f29496a63eb7fed7941742ac25c0bcp-1,
+    -0x1.10556f1497661p0
+  },
+  { // Entry 21
+    0x1.a1f29496a63eb7fed7941742ac25c0bcp-1,
+    0x1.10556f1497661p0
+  },
+  { // Entry 22
+    -0x1.a46a24d34e9b282810adb188827a9af1p-1,
+    -0x1.12fa0d6901526p0
+  },
+  { // Entry 23
+    0x1.a46a24d34e9b282810adb188827a9af1p-1,
+    0x1.12fa0d6901526p0
+  },
+  { // Entry 24
+    -0x1.fd7343117fa575c550dcdff0fd642410p-2,
+    -0x1.160dc317bf87cp-1
+  },
+  { // Entry 25
+    0x1.fd7343117fa575c550dcdff0fd642410p-2,
+    0x1.160dc317bf87cp-1
+  },
+  { // Entry 26
+    -0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    -0x1.1b2p0
+  },
+  { // Entry 27
+    0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    0x1.1b2p0
+  },
+  { // Entry 28
+    -0x1.1b6b00f64692b8157a322d05add170c4p-2,
+    -0x1.22e245c48b894p-2
+  },
+  { // Entry 29
+    0x1.1b6b00f64692b8157a322d05add170c4p-2,
+    0x1.22e245c48b894p-2
+  },
+  { // Entry 30
+    -0x1.76f5ddc3a8b508ed9f137dea6b81e90fp0,
+    -0x1.2c72f995b1d2ep3
+  },
+  { // Entry 31
+    0x1.76f5ddc3a8b508ed9f137dea6b81e90fp0,
+    0x1.2c72f995b1d2ep3
+  },
+  { // Entry 32
+    -0x1.1e00babdefd447d7cd293fd8818ded16p-1,
+    -0x1.3fffffffffe01p-1
+  },
+  { // Entry 33
+    0x1.1e00babdefd447d7cd293fd8818ded16p-1,
+    0x1.3fffffffffe01p-1
+  },
+  { // Entry 34
+    -0x1.257cf8f86aae37fd89007cddd9fbedadp-1,
+    -0x1.4a818adf4d00cp-1
+  },
+  { // Entry 35
+    0x1.257cf8f86aae37fd89007cddd9fbedadp-1,
+    0x1.4a818adf4d00cp-1
+  },
+  { // Entry 36
+    -0x1.30ac945137336cee6dcf73db648cfcb8p-1,
+    -0x1.5a95192041f9ep-1
+  },
+  { // Entry 37
+    0x1.30ac945137336cee6dcf73db648cfcb8p-1,
+    0x1.5a95192041f9ep-1
+  },
+  { // Entry 38
+    -0x1.dfc9b7f9ab42d803453edb4156b22fe0p-1,
+    -0x1.5c634cb1dfe6bp0
+  },
+  { // Entry 39
+    0x1.dfc9b7f9ab42d803453edb4156b22fe0p-1,
+    0x1.5c634cb1dfe6bp0
+  },
+  { // Entry 40
+    -0x1.6bf3302a984a8a006c4478c0e763fab9p-2,
+    -0x1.7c1756ec12b23p-2
+  },
+  { // Entry 41
+    0x1.6bf3302a984a8a006c4478c0e763fab9p-2,
+    0x1.7c1756ec12b23p-2
+  },
+  { // Entry 42
+    -0x1.7f747c370c0727fccfb9495ede110579p-5,
+    -0x1.7fbc3df2ed276p-5
+  },
+  { // Entry 43
+    0x1.7f747c370c0727fccfb9495ede110579p-5,
+    0x1.7fbc3df2ed276p-5
+  },
+  { // Entry 44
+    -0x1.fdda4aef81e8e7fffd547e56ce08f36dp-1,
+    -0x1.8b0adc528bce4p0
+  },
+  { // Entry 45
+    0x1.fdda4aef81e8e7fffd547e56ce08f36dp-1,
+    0x1.8b0adc528bce4p0
+  },
+  { // Entry 46
+    -0x1.91cf060a572547ff8e8e829b167593fcp0,
+    -0x1.962000000000bp9
+  },
+  { // Entry 47
+    0x1.91cf060a572547ff8e8e829b167593fcp0,
+    0x1.962000000000bp9
+  },
+  { // Entry 48
+    -0x1.47c28e8c40ec280000020808fdc90264p0,
+    -0x1.ac2e0862e543ep1
+  },
+  { // Entry 49
+    0x1.47c28e8c40ec280000020808fdc90264p0,
+    0x1.ac2e0862e543ep1
+  },
+  { // Entry 50
+    -0x1.921fb54442d18469898cc516ef921439p0,
+    -0x1.c35fe0cc9d0e4p99
+  },
+  { // Entry 51
+    0x1.921fb54442d18469898cc516ef921439p0,
+    0x1.c35fe0cc9d0e4p99
+  },
+  { // Entry 52
+    -0x1.fee2431215606f9db22d52fc7e731b98p-6,
+    -0x1.ff0caaae31790p-6
+  },
+  { // Entry 53
+    0x1.fee2431215606f9db22d52fc7e731b98p-6,
+    0x1.ff0caaae31790p-6
+  },
+  { // Entry 54
+    -0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    -0x1.ffeffffffffffp0
+  },
+  { // Entry 55
+    0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    0x1.ffeffffffffffp0
+  },
+  { // Entry 56
+    -0x1.f5aa32d8a6d177fffad61b5dca0be8bfp-3,
+    -0x1.fff2007ffffffp-3
+  },
+  { // Entry 57
+    0x1.f5aa32d8a6d177fffad61b5dca0be8bfp-3,
+    0x1.fff2007ffffffp-3
+  },
+  { // Entry 58
+    -0x1.f5b39f92578e003ce025445d5448c723p-3,
+    -0x1.fffc03fffffffp-3
+  },
+  { // Entry 59
+    0x1.f5b39f92578e003ce025445d5448c723p-3,
+    0x1.fffc03fffffffp-3
+  },
+  { // Entry 60
+    0x1.fd5ba9aac2f7f7f74a4ac2f7962ea006p-4,
+    0x1.0000000000009p-3
+  },
+  { // Entry 61
+    -0x1.fd5ba9aac2f7f7f74a4ac2f7962ea006p-4,
+    -0x1.0000000000009p-3
+  },
+  { // Entry 62
+    0x1.1b6e192ebbe4b3939e676eed13ecdea5p0,
+    0x1.0000000000011p1
+  },
+  { // Entry 63
+    -0x1.1b6e192ebbe4b3939e676eed13ecdea5p0,
+    -0x1.0000000000011p1
+  },
+  { // Entry 64
+    0x1.fd5ba9aac3301779426a44d6216c0127p-4,
+    0x1.00000000001d1p-3
+  },
+  { // Entry 65
+    -0x1.fd5ba9aac3301779426a44d6216c0127p-4,
+    -0x1.00000000001d1p-3
+  },
+  { // Entry 66
+    0x1.f5b75f92c8e0a8fdae620b51cd9aff12p-3,
+    0x1.00000000007p-2
+  },
+  { // Entry 67
+    -0x1.f5b75f92c8e0a8fdae620b51cd9aff12p-3,
+    -0x1.00000000007p-2
+  },
+  { // Entry 68
+    0x1.ffd55bba9d69a8ad651d71aec988dad0p-6,
+    0x1.0000000003047p-5
+  },
+  { // Entry 69
+    -0x1.ffd55bba9d69a8ad651d71aec988dad0p-6,
+    -0x1.0000000003047p-5
+  },
+  { // Entry 70
+    0x1.911fb5999813a8003c879b1793966ea1p0,
+    0x1.0000000020017p8
+  },
+  { // Entry 71
+    -0x1.911fb5999813a8003c879b1793966ea1p0,
+    -0x1.0000000020017p8
+  },
+  { // Entry 72
+    0x1.921fb54472d18469850cc517020039a2p-1,
+    0x1.000000003p0
+  },
+  { // Entry 73
+    -0x1.921fb54472d18469850cc517020039a2p-1,
+    -0x1.000000003p0
+  },
+  { // Entry 74
+    0x1.f5b75f959ae0a8fd6e9ac1e84bceca57p-3,
+    0x1.000000018p-2
+  },
+  { // Entry 75
+    -0x1.f5b75f959ae0a8fd6e9ac1e84bceca57p-3,
+    -0x1.000000018p-2
+  },
+  { // Entry 76
+    0x1.f5b7671a4f939829143782fc6e124ccap-3,
+    0x1.0000040p-2
+  },
+  { // Entry 77
+    -0x1.f5b7671a4f939829143782fc6e124ccap-3,
+    -0x1.0000040p-2
+  },
+  { // Entry 78
+    0x1.fd5bb18b417c48ac848521bb0772d9a1p-4,
+    0x1.00000400004p-3
+  },
+  { // Entry 79
+    -0x1.fd5bb18b417c48ac848521bb0772d9a1p-4,
+    -0x1.00000400004p-3
+  },
+  { // Entry 80
+    0x1.921fc4440248282d290a616b8bd2a40fp-1,
+    0x1.00000effbfe72p0
+  },
+  { // Entry 81
+    -0x1.921fc4440248282d290a616b8bd2a40fp-1,
+    -0x1.00000effbfe72p0
+  },
+  { // Entry 82
+    0x1.921fcb4efe8b9800001979c3c14ae647p-1,
+    0x1.0000160abcad0p0
+  },
+  { // Entry 83
+    -0x1.921fcb4efe8b9800001979c3c14ae647p-1,
+    -0x1.0000160abcad0p0
+  },
+  { // Entry 84
+    0x1.fd5d9dd9fe4877fd578f460dcb83a068p-4,
+    0x1.0000fe0p-3
+  },
+  { // Entry 85
+    -0x1.fd5d9dd9fe4877fd578f460dcb83a068p-4,
+    -0x1.0000fe0p-3
+  },
+  { // Entry 86
+    0x1.1b6fb2c336d49314eac9f9c98fd7e33cp0,
+    0x1.00040p1
+  },
+  { // Entry 87
+    -0x1.1b6fb2c336d49314eac9f9c98fd7e33cp0,
+    -0x1.00040p1
+  },
+  { // Entry 88
+    0x1.8e200a90cc63080337bb5f472303d0cbp0,
+    0x1.000ffffffffe1p6
+  },
+  { // Entry 89
+    -0x1.8e200a90cc63080337bb5f472303d0cbp0,
+    -0x1.000ffffffffe1p6
+  },
+  { // Entry 90
+    0x1.924fb0c48ad183a74183edd5362486dfp-1,
+    0x1.003p0
+  },
+  { // Entry 91
+    -0x1.924fb0c48ad183a74183edd5362486dfp-1,
+    -0x1.003p0
+  },
+  { // Entry 92
+    0x1.fedc5f6aeb98186a3b0d3b954d70911cp-4,
+    0x1.00c35e9758e2cp-3
+  },
+  { // Entry 93
+    -0x1.fedc5f6aeb98186a3b0d3b954d70911cp-4,
+    -0x1.00c35e9758e2cp-3
+  },
+  { // Entry 94
+    0x1.921fb3466091e7ffbc9b8e5c6d88ce22p0,
+    0x1.011p23
+  },
+  { // Entry 95
+    -0x1.921fb3466091e7ffbc9b8e5c6d88ce22p0,
+    -0x1.011p23
+  },
+  { // Entry 96
+    0x1.1c2100958558dfff915395a5bfb4e4f7p0,
+    0x1.01c1b75a29198p1
+  },
+  { // Entry 97
+    -0x1.1c2100958558dfff915395a5bfb4e4f7p0,
+    -0x1.01c1b75a29198p1
+  },
+  { // Entry 98
+    0x1.941da6b976112800ae50a79244b2f00fp-1,
+    0x1.01fffp0
+  },
+  { // Entry 99
+    -0x1.941da6b976112800ae50a79244b2f00fp-1,
+    -0x1.01fffp0
+  },
+  { // Entry 100
+    0x1.95412c14caec68368d2352262e205e29p-1,
+    0x1.032667b38fd63p0
+  },
+  { // Entry 101
+    -0x1.95412c14caec68368d2352262e205e29p-1,
+    -0x1.032667b38fd63p0
+  },
+  { // Entry 102
+    0x1.954797156907ffe8d43c56fed8806cbap-1,
+    0x1.032ce7209e936p0
+  },
+  { // Entry 103
+    -0x1.954797156907ffe8d43c56fed8806cbap-1,
+    -0x1.032ce7209e936p0
+  },
+  { // Entry 104
+    0x1.03fe926deb87dea036ae0e5000a78179p-7,
+    0x1.03fff80p-7
+  },
+  { // Entry 105
+    -0x1.03fe926deb87dea036ae0e5000a78179p-7,
+    -0x1.03fff80p-7
+  },
+  { // Entry 106
+    0x1.fd61e4326c1e17f9be5c0e96b9e245b5p-3,
+    0x1.041391b4f6773p-2
+  },
+  { // Entry 107
+    -0x1.fd61e4326c1e17f9be5c0e96b9e245b5p-3,
+    -0x1.041391b4f6773p-2
+  },
+  { // Entry 108
+    0x1.9690e7465847a7ddc153bc6798d1b82bp-1,
+    0x1.047b2d5ac8ccbp0
+  },
+  { // Entry 109
+    -0x1.9690e7465847a7ddc153bc6798d1b82bp-1,
+    -0x1.047b2d5ac8ccbp0
+  },
+  { // Entry 110
+    0x1.96c8ea639f68cc09d44584196295df93p-1,
+    0x1.04b43403953b0p0
+  },
+  { // Entry 111
+    -0x1.96c8ea639f68cc09d44584196295df93p-1,
+    -0x1.04b43403953b0p0
+  },
+  { // Entry 112
+    0x1.96c95ba7df84f7fecf841f04a5386a95p-1,
+    0x1.04b4a761a073bp0
+  },
+  { // Entry 113
+    -0x1.96c95ba7df84f7fecf841f04a5386a95p-1,
+    -0x1.04b4a761a073bp0
+  },
+  { // Entry 114
+    0x1.ff956a68e5f5d7fa26829ba0a3287227p-3,
+    0x1.053f96b868b40p-2
+  },
+  { // Entry 115
+    -0x1.ff956a68e5f5d7fa26829ba0a3287227p-3,
+    -0x1.053f96b868b40p-2
+  },
+  { // Entry 116
+    0x1.98b0c3c0dd8917febe21b582e45bf32ap-1,
+    0x1.06a6fdd8c9be8p0
+  },
+  { // Entry 117
+    -0x1.98b0c3c0dd8917febe21b582e45bf32ap-1,
+    -0x1.06a6fdd8c9be8p0
+  },
+  { // Entry 118
+    0x1.e7e3d0910807efff992c7a274fdbed8cp-2,
+    0x1.084p-1
+  },
+  { // Entry 119
+    -0x1.e7e3d0910807efff992c7a274fdbed8cp-2,
+    -0x1.084p-1
+  },
+  { // Entry 120
+    0x1.09882f0fd878b7fc750c23c0417aa352p-5,
+    0x1.09ap-5
+  },
+  { // Entry 121
+    -0x1.09882f0fd878b7fc750c23c0417aa352p-5,
+    -0x1.09ap-5
+  },
+  { // Entry 122
+    0x1.a057e3cb74245802b71c5786bd3bf5a9p-1,
+    0x1.0ea1281786681p0
+  },
+  { // Entry 123
+    -0x1.a057e3cb74245802b71c5786bd3bf5a9p-1,
+    -0x1.0ea1281786681p0
+  },
+  { // Entry 124
+    0x1.a057e3cb7428100cde6242b3bf2d75e7p-1,
+    0x1.0ea12817866c0p0
+  },
+  { // Entry 125
+    -0x1.a057e3cb7428100cde6242b3bf2d75e7p-1,
+    -0x1.0ea12817866c0p0
+  },
+  { // Entry 126
+    0x1.09544b71ad4a6800000000000013a8d4p-2,
+    0x1.0f6e5d9960397p-2
+  },
+  { // Entry 127
+    -0x1.09544b71ad4a6800000000000013a8d4p-2,
+    -0x1.0f6e5d9960397p-2
+  },
+  { // Entry 128
+    0x1.921fb4cd9c6767fffffe6051bf1c3fecp0,
+    0x1.142c69b7200b4p25
+  },
+  { // Entry 129
+    -0x1.921fb4cd9c6767fffffe6051bf1c3fecp0,
+    -0x1.142c69b7200b4p25
+  },
+  { // Entry 130
+    0x1.a908afa5b1d49d450834540fee9c3c24p-1,
+    0x1.180p0
+  },
+  { // Entry 131
+    -0x1.a908afa5b1d49d450834540fee9c3c24p-1,
+    -0x1.180p0
+  },
+  { // Entry 132
+    0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    0x1.1b2p0
+  },
+  { // Entry 133
+    -0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    -0x1.1b2p0
+  },
+  { // Entry 134
+    0x1.1ffffffffff868000000005c43999999p-22,
+    0x1.2p-22
+  },
+  { // Entry 135
+    -0x1.1ffffffffff868000000005c43999999p-22,
+    -0x1.2p-22
+  },
+  { // Entry 136
+    0x1.1231f3cf3b64080110ff41eaf08e7f52p-1,
+    0x1.2fcf7444bde76p-1
+  },
+  { // Entry 137
+    -0x1.1231f3cf3b64080110ff41eaf08e7f52p-1,
+    -0x1.2fcf7444bde76p-1
+  },
+  { // Entry 138
+    0x1.14e89198860627ffffe8602275519490p-1,
+    0x1.337d9db6d7c12p-1
+  },
+  { // Entry 139
+    -0x1.14e89198860627ffffe8602275519490p-1,
+    -0x1.337d9db6d7c12p-1
+  },
+  { // Entry 140
+    0x1.91eae7e474234800ffed4579e939b69ep0,
+    0x1.364a2f134fcc8p10
+  },
+  { // Entry 141
+    -0x1.91eae7e474234800ffed4579e939b69ep0,
+    -0x1.364a2f134fcc8p10
+  },
+  { // Entry 142
+    0x1.921fb53da9afc7ff8a7b36e49887a88cp0,
+    0x1.3663986f82220p29
+  },
+  { // Entry 143
+    -0x1.921fb53da9afc7ff8a7b36e49887a88cp0,
+    -0x1.3663986f82220p29
+  },
+  { // Entry 144
+    0x1.78c56b92f190e84a323bd5804a1c5ba6p0,
+    0x1.4210842108420p3
+  },
+  { // Entry 145
+    -0x1.78c56b92f190e84a323bd5804a1c5ba6p0,
+    -0x1.4210842108420p3
+  },
+  { // Entry 146
+    0x1.78d751494898372d0fe3af3a7837ff8fp0,
+    0x1.42f5ff15ddc08p3
+  },
+  { // Entry 147
+    -0x1.78d751494898372d0fe3af3a7837ff8fp0,
+    -0x1.42f5ff15ddc08p3
+  },
+  { // Entry 148
+    0x1.31ce4da037f1542340ee4c61421bba5ap0,
+    0x1.43fff80p1
+  },
+  { // Entry 149
+    -0x1.31ce4da037f1542340ee4c61421bba5ap0,
+    -0x1.43fff80p1
+  },
+  { // Entry 150
+    0x1.31ce4fc9313474e69b41306d82deceb0p0,
+    0x1.440p1
+  },
+  { // Entry 151
+    -0x1.31ce4fc9313474e69b41306d82deceb0p0,
+    -0x1.440p1
+  },
+  { // Entry 152
+    0x1.26b3d211bc3faaf8f037dd3421d9f962p-1,
+    0x1.4c3a987530ea6p-1
+  },
+  { // Entry 153
+    -0x1.26b3d211bc3faaf8f037dd3421d9f962p-1,
+    -0x1.4c3a987530ea6p-1
+  },
+  { // Entry 154
+    0x1.351779f072846800a9bb18d72a79814ep0,
+    0x1.5094250942508p1
+  },
+  { // Entry 155
+    -0x1.351779f072846800a9bb18d72a79814ep0,
+    -0x1.5094250942508p1
+  },
+  { // Entry 156
+    0x1.58fcecb696d827ec66c4a7bfd8ed327bp-8,
+    0x1.58fdbd8ddbbf8p-8
+  },
+  { // Entry 157
+    -0x1.58fcecb696d827ec66c4a7bfd8ed327bp-8,
+    -0x1.58fdbd8ddbbf8p-8
+  },
+  { // Entry 158
+    0x1.63398f6da2f1a7fffff2d311886948c5p0,
+    0x1.596de8ca11ae6p2
+  },
+  { // Entry 159
+    -0x1.63398f6da2f1a7fffff2d311886948c5p0,
+    -0x1.596de8ca11ae6p2
+  },
+  { // Entry 160
+    0x1.3424a0066e6a8d6e3d6901f99034cde1p-1,
+    0x1.5faa0cbf48e56p-1
+  },
+  { // Entry 161
+    -0x1.3424a0066e6a8d6e3d6901f99034cde1p-1,
+    -0x1.5faa0cbf48e56p-1
+  },
+  { // Entry 162
+    0x1.5ff223a639d5bfce7ae1cfb7516d26adp-6,
+    0x1.6p-6
+  },
+  { // Entry 163
+    -0x1.5ff223a639d5bfce7ae1cfb7516d26adp-6,
+    -0x1.6p-6
+  },
+  { // Entry 164
+    0x1.345f01cce38c8d8be40cc12c58240e15p-1,
+    0x1.600000000018dp-1
+  },
+  { // Entry 165
+    -0x1.345f01cce38c8d8be40cc12c58240e15p-1,
+    -0x1.600000000018dp-1
+  },
+  { // Entry 166
+    0x1.367cb24fdff2146a3c6863d233ff09fep-1,
+    0x1.632p-1
+  },
+  { // Entry 167
+    -0x1.367cb24fdff2146a3c6863d233ff09fep-1,
+    -0x1.632p-1
+  },
+  { // Entry 168
+    0x1.57baeb9c51db490f8249f6679768741fp-2,
+    0x1.654p-2
+  },
+  { // Entry 169
+    -0x1.57baeb9c51db490f8249f6679768741fp-2,
+    -0x1.654p-2
+  },
+  { // Entry 170
+    0x1.395006b0fd682d86f4a40f69e4dad1f3p-1,
+    0x1.675370cc217f1p-1
+  },
+  { // Entry 171
+    -0x1.395006b0fd682d86f4a40f69e4dad1f3p-1,
+    -0x1.675370cc217f1p-1
+  },
+  { // Entry 172
+    0x1.695a2c268e1e57ffee0cb8c88986dfefp-12,
+    0x1.695a2d168b440p-12
+  },
+  { // Entry 173
+    -0x1.695a2c268e1e57ffee0cb8c88986dfefp-12,
+    -0x1.695a2d168b440p-12
+  },
+  { // Entry 174
+    0x1.90b6fc0474fec7fe12f524f1b420b184p0,
+    0x1.6b5ad6b5aceb4p7
+  },
+  { // Entry 175
+    -0x1.90b6fc0474fec7fe12f524f1b420b184p0,
+    -0x1.6b5ad6b5aceb4p7
+  },
+  { // Entry 176
+    0x1.3b8f3306167a8baa368daae0bf08e86cp0,
+    0x1.6c0p1
+  },
+  { // Entry 177
+    -0x1.3b8f3306167a8baa368daae0bf08e86cp0,
+    -0x1.6c0p1
+  },
+  { // Entry 178
+    0x1.5f6bae189b51098a86d90c98da4cc877p-2,
+    0x1.6de63b148cf0bp-2
+  },
+  { // Entry 179
+    -0x1.5f6bae189b51098a86d90c98da4cc877p-2,
+    -0x1.6de63b148cf0bp-2
+  },
+  { // Entry 180
+    0x1.3de18703d42d69f55b3e6c4d1fe5629dp-1,
+    0x1.6e30022cb4501p-1
+  },
+  { // Entry 181
+    -0x1.3de18703d42d69f55b3e6c4d1fe5629dp-1,
+    -0x1.6e30022cb4501p-1
+  },
+  { // Entry 182
+    0x1.ebe5401364d0c802b6d52ee2cdf2086ep-1,
+    0x1.6e3b1e21b27ddp0
+  },
+  { // Entry 183
+    -0x1.ebe5401364d0c802b6d52ee2cdf2086ep-1,
+    -0x1.6e3b1e21b27ddp0
+  },
+  { // Entry 184
+    0x1.6310721e8d7bc04e2ae4e8cce87a1ec0p-2,
+    0x1.72036f889e86fp-2
+  },
+  { // Entry 185
+    -0x1.6310721e8d7bc04e2ae4e8cce87a1ec0p-2,
+    -0x1.72036f889e86fp-2
+  },
+  { // Entry 186
+    0x1.685c82be1d6fa902b238e87716c3bbfbp-2,
+    0x1.7803718434620p-2
+  },
+  { // Entry 187
+    -0x1.685c82be1d6fa902b238e87716c3bbfbp-2,
+    -0x1.7803718434620p-2
+  },
+  { // Entry 188
+    0x1.68c3b08c20af09be807f598cbca32cb9p-2,
+    0x1.78788d320d639p-2
+  },
+  { // Entry 189
+    -0x1.68c3b08c20af09be807f598cbca32cb9p-2,
+    -0x1.78788d320d639p-2
+  },
+  { // Entry 190
+    0x1.6b35cbad026009f12d00003f84c29caep-2,
+    0x1.7b3fe92e2fd63p-2
+  },
+  { // Entry 191
+    -0x1.6b35cbad026009f12d00003f84c29caep-2,
+    -0x1.7b3fe92e2fd63p-2
+  },
+  { // Entry 192
+    0x1.6c4b3610c42b29eabeaa35cc1b8067ecp-2,
+    0x1.7c7b80a9d788bp-2
+  },
+  { // Entry 193
+    -0x1.6c4b3610c42b29eabeaa35cc1b8067ecp-2,
+    -0x1.7c7b80a9d788bp-2
+  },
+  { // Entry 194
+    0x1.6eed6ff6cd99ca02c4d88c9aa595d5cfp-2,
+    0x1.7f7b8c648a650p-2
+  },
+  { // Entry 195
+    -0x1.6eed6ff6cd99ca02c4d88c9aa595d5cfp-2,
+    -0x1.7f7b8c648a650p-2
+  },
+  { // Entry 196
+    0x1.7fffffffffffb80000000000184cccccp-25,
+    0x1.8p-25
+  },
+  { // Entry 197
+    -0x1.7fffffffffffb80000000000184cccccp-25,
+    -0x1.8p-25
+  },
+  { // Entry 198
+    0x1.7fffffffffffc800000000000f4cccccp-25,
+    0x1.8000000000001p-25
+  },
+  { // Entry 199
+    -0x1.7fffffffffffc800000000000f4cccccp-25,
+    -0x1.8000000000001p-25
+  },
+  { // Entry 200
+    0x1.7fffffffffffd80000000000064cccccp-25,
+    0x1.8000000000002p-25
+  },
+  { // Entry 201
+    -0x1.7fffffffffffd80000000000064cccccp-25,
+    -0x1.8000000000002p-25
+  },
+  { // Entry 202
+    0x1.f7b9ef3dc65408000005e3f91e816063p-1,
+    0x1.80df4b28b5a84p0
+  },
+  { // Entry 203
+    -0x1.f7b9ef3dc65408000005e3f91e816063p-1,
+    -0x1.80df4b28b5a84p0
+  },
+  { // Entry 204
+    0x1.90ce0249811008006638702db8ae59e2p0,
+    0x1.8421084210846p7
+  },
+  { // Entry 205
+    -0x1.90ce0249811008006638702db8ae59e2p0,
+    -0x1.8421084210846p7
+  },
+  { // Entry 206
+    0x1.fb3c57dab5afa80a506e91f92e6a8df9p-1,
+    0x1.86a71395bc9b5p0
+  },
+  { // Entry 207
+    -0x1.fb3c57dab5afa80a506e91f92e6a8df9p-1,
+    -0x1.86a71395bc9b5p0
+  },
+  { // Entry 208
+    0x1.68d94312ca7f17ffeed1dd16ec2d35e6p0,
+    0x1.898p2
+  },
+  { // Entry 209
+    -0x1.68d94312ca7f17ffeed1dd16ec2d35e6p0,
+    -0x1.898p2
+  },
+  { // Entry 210
+    0x1.ff69d0cefa8a27ebf8cbf5ec1cc78342p-1,
+    0x1.8db18047c8944p0
+  },
+  { // Entry 211
+    -0x1.ff69d0cefa8a27ebf8cbf5ec1cc78342p-1,
+    -0x1.8db18047c8944p0
+  },
+  { // Entry 212
+    0x1.983e285453b3f000002efc9d654c6a32p-4,
+    0x1.999999c022342p-4
+  },
+  { // Entry 213
+    -0x1.983e285453b3f000002efc9d654c6a32p-4,
+    -0x1.999999c022342p-4
+  },
+  { // Entry 214
+    0x1.94441feb7be7180000005c46362b16d8p-3,
+    0x1.999999f951960p-3
+  },
+  { // Entry 215
+    -0x1.94441feb7be7180000005c46362b16d8p-3,
+    -0x1.999999f951960p-3
+  },
+  { // Entry 216
+    0x1.9a6a8e96c86047fffe94ba49799c011fp-3,
+    0x1.9ffffffffffddp-3
+  },
+  { // Entry 217
+    -0x1.9a6a8e96c86047fffe94ba49799c011fp-3,
+    -0x1.9ffffffffffddp-3
+  },
+  { // Entry 218
+    0x1.9e94153cfe4dc80036c037e172b7cee9p-4,
+    0x1.a0000000008p-4
+  },
+  { // Entry 219
+    -0x1.9e94153cfe4dc80036c037e172b7cee9p-4,
+    -0x1.a0000000008p-4
+  },
+  { // Entry 220
+    0x1.9fd8a4d9973e57fc465de41ddc4cbae2p-4,
+    0x1.a147eb4c17006p-4
+  },
+  { // Entry 221
+    -0x1.9fd8a4d9973e57fc465de41ddc4cbae2p-4,
+    -0x1.a147eb4c17006p-4
+  },
+  { // Entry 222
+    0x1.62e23d7da5f6d8010d5496a08573e188p-1,
+    0x1.a94678821f0e9p-1
+  },
+  { // Entry 223
+    -0x1.62e23d7da5f6d8010d5496a08573e188p-1,
+    -0x1.a94678821f0e9p-1
+  },
+  { // Entry 224
+    0x1.096fe22081e2b800007e36c682109058p0,
+    0x1.b102342163952p0
+  },
+  { // Entry 225
+    -0x1.096fe22081e2b800007e36c682109058p0,
+    -0x1.b102342163952p0
+  },
+  { // Entry 226
+    0x1.0a471736b923b1f18885a17308e12beep0,
+    0x1.b445c1ad3cad1p0
+  },
+  { // Entry 227
+    -0x1.0a471736b923b1f18885a17308e12beep0,
+    -0x1.b445c1ad3cad1p0
+  },
+  { // Entry 228
+    0x1.0a66d6f646e8d37662253bd9155a84dep0,
+    0x1.b4c1d0c10cca9p0
+  },
+  { // Entry 229
+    -0x1.0a66d6f646e8d37662253bd9155a84dep0,
+    -0x1.b4c1d0c10cca9p0
+  },
+  { // Entry 230
+    0x1.a3ad60e89da8b6f1dd20c69213b7612ap-2,
+    0x1.bcde6f379bcdep-2
+  },
+  { // Entry 231
+    -0x1.a3ad60e89da8b6f1dd20c69213b7612ap-2,
+    -0x1.bcde6f379bcdep-2
+  },
+  { // Entry 232
+    0x1.0e04a23e7337930371d81f0cf4d7e9dcp0,
+    0x1.c34p0
+  },
+  { // Entry 233
+    -0x1.0e04a23e7337930371d81f0cf4d7e9dcp0,
+    -0x1.c34p0
+  },
+  { // Entry 234
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.c77250c52a4c4p994
+  },
+  { // Entry 235
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.c77250c52a4c4p994
+  },
+  { // Entry 236
+    0x1.ad00f5422058b7f130ce2474b9fbbdf8p-2,
+    0x1.c80p-2
+  },
+  { // Entry 237
+    -0x1.ad00f5422058b7f130ce2474b9fbbdf8p-2,
+    -0x1.c80p-2
+  },
+  { // Entry 238
+    0x1.4c50697afe3227fd6af96ad804191fc4p0,
+    0x1.c9b26c9b26cb2p1
+  },
+  { // Entry 239
+    -0x1.4c50697afe3227fd6af96ad804191fc4p0,
+    -0x1.c9b26c9b26cb2p1
+  },
+  { // Entry 240
+    0x1.c287b5672b66d828ebaf4756e4f60ad1p-3,
+    0x1.c9f0f1fe648bfp-3
+  },
+  { // Entry 241
+    -0x1.c287b5672b66d828ebaf4756e4f60ad1p-3,
+    -0x1.c9f0f1fe648bfp-3
+  },
+  { // Entry 242
+    0x1.ce35e40b0af2980007f47f44f1179e69p-5,
+    0x1.ceb39ce739ce2p-5
+  },
+  { // Entry 243
+    -0x1.ce35e40b0af2980007f47f44f1179e69p-5,
+    -0x1.ceb39ce739ce2p-5
+  },
+  { // Entry 244
+    0x1.ca5072830899e807a46fd46deed06c13p-3,
+    0x1.d21f1bc07ff10p-3
+  },
+  { // Entry 245
+    -0x1.ca5072830899e807a46fd46deed06c13p-3,
+    -0x1.d21f1bc07ff10p-3
+  },
+  { // Entry 246
+    0x1.d757ad6321e1b7ff10e2bc2deea40152p-7,
+    0x1.d76p-7
+  },
+  { // Entry 247
+    -0x1.d757ad6321e1b7ff10e2bc2deea40152p-7,
+    -0x1.d76p-7
+  },
+  { // Entry 248
+    0x1.bc568fd6eb58f751409b945717d9554ap-2,
+    0x1.da8p-2
+  },
+  { // Entry 249
+    -0x1.bc568fd6eb58f751409b945717d9554ap-2,
+    -0x1.da8p-2
+  },
+  { // Entry 250
+    0x1.dcb58cdb206477fea2ac612eafe90af0p-6,
+    0x1.dcd80p-6
+  },
+  { // Entry 251
+    -0x1.dcb58cdb206477fea2ac612eafe90af0p-6,
+    -0x1.dcd80p-6
+  },
+  { // Entry 252
+    0x1.4fefc9638a79f51094053a972023f6c2p0,
+    0x1.e3fffffffffffp1
+  },
+  { // Entry 253
+    -0x1.4fefc9638a79f51094053a972023f6c2p0,
+    -0x1.e3fffffffffffp1
+  },
+  { // Entry 254
+    0x1.e559f77b3d1bc7fe0f0af62001c4d64ap-4,
+    0x1.e7a2c68ca3bbep-4
+  },
+  { // Entry 255
+    -0x1.e559f77b3d1bc7fe0f0af62001c4d64ap-4,
+    -0x1.e7a2c68ca3bbep-4
+  },
+  { // Entry 256
+    0x1.507316595911cbbe475d6a0d0c879007p0,
+    0x1.e7f3f9fcfe780p1
+  },
+  { // Entry 257
+    -0x1.507316595911cbbe475d6a0d0c879007p0,
+    -0x1.e7f3f9fcfe780p1
+  },
+  { // Entry 258
+    0x1.df110864c9d9d03004ee274a70c0ae22p-3,
+    0x1.e7fffffffffffp-3
+  },
+  { // Entry 259
+    -0x1.df110864c9d9d03004ee274a70c0ae22p-3,
+    -0x1.e7fffffffffffp-3
+  },
+  { // Entry 260
+    0x1.7145eac2088a38096a1a13357d2f5f02p0,
+    0x1.fp2
+  },
+  { // Entry 261
+    -0x1.7145eac2088a38096a1a13357d2f5f02p0,
+    -0x1.fp2
+  },
+  { // Entry 262
+    0x1.f2d88602d915b7a920d38c9f9cff16e8p-6,
+    0x1.f30p-6
+  },
+  { // Entry 263
+    -0x1.f2d88602d915b7a920d38c9f9cff16e8p-6,
+    -0x1.f30p-6
+  },
+  { // Entry 264
+    0x1.f8cda64a08edafa2039d9d8a93546545p-6,
+    0x1.f8f68ec9e17eep-6
+  },
+  { // Entry 265
+    -0x1.f8cda64a08edafa2039d9d8a93546545p-6,
+    -0x1.f8f68ec9e17eep-6
+  },
+  { // Entry 266
+    0x1.8e1199d0ffd197fffe93ecafbc7df2e1p0,
+    0x1.f8ffffeffffaep5
+  },
+  { // Entry 267
+    -0x1.8e1199d0ffd197fffe93ecafbc7df2e1p0,
+    -0x1.f8ffffeffffaep5
+  },
+  { // Entry 268
+    0x1.efc20ff0ea4347fb09f751f06225cf3ep-3,
+    0x1.f9ac87c22c381p-3
+  },
+  { // Entry 269
+    -0x1.efc20ff0ea4347fb09f751f06225cf3ep-3,
+    -0x1.f9ac87c22c381p-3
+  },
+  { // Entry 270
+    0x1.fa55579e0ba577fe929dc83eb7995abcp-6,
+    0x1.fa7e9fa7e9f89p-6
+  },
+  { // Entry 271
+    -0x1.fa55579e0ba577fe929dc83eb7995abcp-6,
+    -0x1.fa7e9fa7e9f89p-6
+  },
+  { // Entry 272
+    0x1.fa55579e0ba6f7a0b740d8dad80c76dep-6,
+    0x1.fa7e9fa7e9fa1p-6
+  },
+  { // Entry 273
+    -0x1.fa55579e0ba6f7a0b740d8dad80c76dep-6,
+    -0x1.fa7e9fa7e9fa1p-6
+  },
+  { // Entry 274
+    0x1.fdb067638eb577993194616b1f02253ep-6,
+    0x1.fdda82fef66eep-6
+  },
+  { // Entry 275
+    -0x1.fdb067638eb577993194616b1f02253ep-6,
+    -0x1.fdda82fef66eep-6
+  },
+  { // Entry 276
+    0x1.f58a3225d517f7b85d014640f929635dp-3,
+    0x1.ffcffffffffffp-3
+  },
+  { // Entry 277
+    -0x1.f58a3225d517f7b85d014640f929635dp-3,
+    -0x1.ffcffffffffffp-3
+  },
+  { // Entry 278
+    0x1.f5a8507ca2e7f74fe8389718208bcb16p-3,
+    0x1.ffeffffffffffp-3
+  },
+  { // Entry 279
+    -0x1.f5a8507ca2e7f74fe8389718208bcb16p-3,
+    -0x1.ffeffffffffffp-3
+  },
+  { // Entry 280
+    0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    0x1.ffeffffffffffp0
+  },
+  { // Entry 281
+    -0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    -0x1.ffeffffffffffp0
+  },
+  { // Entry 282
+    0x1.822487e434a688433f85f4d9d59f5c91p0,
+    0x1.ffeffffffffffp3
+  },
+  { // Entry 283
+    -0x1.822487e434a688433f85f4d9d59f5c91p0,
+    -0x1.ffeffffffffffp3
+  },
+  { // Entry 284
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fff8e61eadcf7p1021
+  },
+  { // Entry 285
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fff8e61eadcf7p1021
+  },
+  { // Entry 286
+    0x1.f5b39f92578e003ce025445d5448c723p-3,
+    0x1.fffc03fffffffp-3
+  },
+  { // Entry 287
+    -0x1.f5b39f92578e003ce025445d5448c723p-3,
+    -0x1.fffc03fffffffp-3
+  },
+  { // Entry 288
+    0x1.1b6e0f9521925801d32b4375d240e5b1p0,
+    0x1.ffffcffffffffp0
+  },
+  { // Entry 289
+    -0x1.1b6e0f9521925801d32b4375d240e5b1p0,
+    -0x1.ffffcffffffffp0
+  },
+  { // Entry 290
+    0x1.f5b75ded226447fe90c6cb904987f275p-3,
+    0x1.fffffe3ffffbfp-3
+  },
+  { // Entry 291
+    -0x1.f5b75ded226447fe90c6cb904987f275p-3,
+    -0x1.fffffe3ffffbfp-3
+  },
+  { // Entry 292
+    0x1.8a205fd5287ff7ff262bad6513207543p0,
+    0x1.fffffff3fffffp4
+  },
+  { // Entry 293
+    -0x1.8a205fd5287ff7ff262bad6513207543p0,
+    -0x1.fffffff3fffffp4
+  },
+  { // Entry 294
+    0x1.ffd55bba962df799aa0c3a5a5edf7631p-6,
+    0x1.fffffffffecb6p-6
+  },
+  { // Entry 295
+    -0x1.ffd55bba962df799aa0c3a5a5edf7631p-6,
+    -0x1.fffffffffecb6p-6
+  },
+  { // Entry 296
+    0x1.ffd55bba972df799aa0c3a87739a477dp-6,
+    0x1.ffffffffffcbap-6
+  },
+  { // Entry 297
+    -0x1.ffd55bba972df799aa0c3a87739a477dp-6,
+    -0x1.ffffffffffcbap-6
+  },
+  { // Entry 298
+    0x1.dac670561bb3768adfc88bd930751a06p-2,
+    0x1.fffffffffffe2p-2
+  },
+  { // Entry 299
+    -0x1.dac670561bb3768adfc88bd930751a06p-2,
+    -0x1.fffffffffffe2p-2
+  },
+  { // Entry 300
+    0x1.8a205fd55873f800459be65852624b5fp0,
+    0x1.ffffffffffff3p4
+  },
+  { // Entry 301
+    -0x1.8a205fd55873f800459be65852624b5fp0,
+    -0x1.ffffffffffff3p4
+  },
+  { // Entry 302
+    0x1.fffff55555bb3bb73172cf8cfdef50f9p-11,
+    0x1.ffffffffffff8p-11
+  },
+  { // Entry 303
+    -0x1.fffff55555bb3bb73172cf8cfdef50f9p-11,
+    -0x1.ffffffffffff8p-11
+  },
+  { // Entry 304
+    0x1.f5b75f92c80db80cbd711fcdd109b918p-3,
+    0x1.ffffffffffffep-3
+  },
+  { // Entry 305
+    -0x1.f5b75f92c80db80cbd711fcdd109b918p-3,
+    -0x1.ffffffffffffep-3
+  },
+  { // Entry 306
+    0x1.ffffffffffffb5555555555563bbbbbbp-26,
+    0x1.ffffffffffffep-26
+  },
+  { // Entry 307
+    -0x1.ffffffffffffb5555555555563bbbbbbp-26,
+    -0x1.ffffffffffffep-26
+  },
+  { // Entry 308
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 309
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 310
+    -0.0,
+    -0.0
+  },
+  { // Entry 311
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 313
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 314
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 315
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 316
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 317
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 318
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 319
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 320
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 321
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 322
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 323
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 324
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 325
+    0x1.9999994237fab1da64992a310312505ep-13,
+    0x1.999999999999ap-13
+  },
+  { // Entry 326
+    -0x1.9999994237fab1da64992a310312505ep-13,
+    -0x1.999999999999ap-13
+  },
+  { // Entry 327
+    0x1.9999983c131f7a10c5dd5d6e7ce3cb81p-12,
+    0x1.999999999999ap-12
+  },
+  { // Entry 328
+    -0x1.9999983c131f7a10c5dd5d6e7ce3cb81p-12,
+    -0x1.999999999999ap-12
+  },
+  { // Entry 329
+    0x1.333330e560498c727e4d6265bd2ffec8p-11,
+    0x1.3333333333334p-11
+  },
+  { // Entry 330
+    -0x1.333330e560498c727e4d6265bd2ffec8p-11,
+    -0x1.3333333333334p-11
+  },
+  { // Entry 331
+    0x1.999994237fca32b5a26ff8f7d9bd8d35p-11,
+    0x1.999999999999ap-11
+  },
+  { // Entry 332
+    -0x1.999994237fca32b5a26ff8f7d9bd8d35p-11,
+    -0x1.999999999999ap-11
+  },
+  { // Entry 333
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.0p-10
+  },
+  { // Entry 334
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.0p-10
+  },
+  { // Entry 335
+    0x1.333329fbe7ebeef09e51711b44f86539p-10,
+    0x1.3333333333333p-10
+  },
+  { // Entry 336
+    -0x1.333329fbe7ebeef09e51711b44f86539p-10,
+    -0x1.3333333333333p-10
+  },
+  { // Entry 337
+    0x1.666657c3edf5fc60e8ee22a4cfe0569cp-10,
+    0x1.6666666666666p-10
+  },
+  { // Entry 338
+    -0x1.666657c3edf5fc60e8ee22a4cfe0569cp-10,
+    -0x1.6666666666666p-10
+  },
+  { // Entry 339
+    0x1.999983c133ee81d417cae21e440492ffp-10,
+    0x1.9999999999999p-10
+  },
+  { // Entry 340
+    -0x1.999983c133ee81d417cae21e440492ffp-10,
+    -0x1.9999999999999p-10
+  },
+  { // Entry 341
+    0x1.ccccadb230d5be2055f8f3b668d57c61p-10,
+    0x1.cccccccccccccp-10
+  },
+  { // Entry 342
+    -0x1.ccccadb230d5be2055f8f3b668d57c61p-10,
+    -0x1.cccccccccccccp-10
+  },
+  { // Entry 343
+    0x1.0664f6d5e1b55939fa39d3978354fb08p-7,
+    0x1.0666666666666p-7
+  },
+  { // Entry 344
+    -0x1.0664f6d5e1b55939fa39d3978354fb08p-7,
+    -0x1.0666666666666p-7
+  },
+  { // Entry 345
+    0x1.ccc506615256b4d660acbe5536614bc0p-7,
+    0x1.cccccccccccccp-7
+  },
+  { // Entry 346
+    -0x1.ccc506615256b4d660acbe5536614bc0p-7,
+    -0x1.cccccccccccccp-7
+  },
+  { // Entry 347
+    0x1.498e385e62b42d40708322b65b9a92a2p-6,
+    0x1.4999999999999p-6
+  },
+  { // Entry 348
+    -0x1.498e385e62b42d40708322b65b9a92a2p-6,
+    -0x1.4999999999999p-6
+  },
+  { // Entry 349
+    0x1.acb3bf2888fd253cde72a65ff6b5a5edp-6,
+    0x1.accccccccccccp-6
+  },
+  { // Entry 350
+    -0x1.acb3bf2888fd253cde72a65ff6b5a5edp-6,
+    -0x1.accccccccccccp-6
+  },
+  { // Entry 351
+    0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    0x1.080p-5
+  },
+  { // Entry 352
+    -0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    -0x1.080p-5
+  },
+  { // Entry 353
+    0x1.39726b096afb5657f037d44ceabacfdep-5,
+    0x1.399999999999ap-5
+  },
+  { // Entry 354
+    -0x1.39726b096afb5657f037d44ceabacfdep-5,
+    -0x1.399999999999ap-5
+  },
+  { // Entry 355
+    0x1.6af659752a8e90e79823616d18922d06p-5,
+    0x1.6b33333333334p-5
+  },
+  { // Entry 356
+    -0x1.6af659752a8e90e79823616d18922d06p-5,
+    -0x1.6b33333333334p-5
+  },
+  { // Entry 357
+    0x1.9c737d9b4d07092c295584951a1f5a71p-5,
+    0x1.9cccccccccccep-5
+  },
+  { // Entry 358
+    -0x1.9c737d9b4d07092c295584951a1f5a71p-5,
+    -0x1.9cccccccccccep-5
+  },
+  { // Entry 359
+    0x1.cde8ec5bb65f0e742405e56b5ae426e2p-5,
+    0x1.ce66666666666p-5
+  },
+  { // Entry 360
+    -0x1.cde8ec5bb65f0e742405e56b5ae426e2p-5,
+    -0x1.ce66666666666p-5
+  },
+  { // Entry 361
+    0x1.3359bce85d4c0edf062a316ac9a3b035p-1,
+    0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 362
+    -0x1.3359bce85d4c0edf062a316ac9a3b035p-1,
+    -0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 363
+    0x1.d5ca708561450bec8cd54cd06ef71588p-1,
+    0x1.4e7fc4369bdadp0
+  },
+  { // Entry 364
+    -0x1.d5ca708561450bec8cd54cd06ef71588p-1,
+    -0x1.4e7fc4369bdadp0
+  },
+  { // Entry 365
+    0x1.17ac441eeac2e0e131633d5dbda1192dp0,
+    0x1.edbfa651e9c84p0
+  },
+  { // Entry 366
+    -0x1.17ac441eeac2e0e131633d5dbda1192dp0,
+    -0x1.edbfa651e9c84p0
+  },
+  { // Entry 367
+    0x1.3279e85590bed5c0a7d465c70e9312dbp0,
+    0x1.467fc4369bdadp1
+  },
+  { // Entry 368
+    -0x1.3279e85590bed5c0a7d465c70e9312dbp0,
+    -0x1.467fc4369bdadp1
+  },
+  { // Entry 369
+    0x1.43f644a23f11312b0baeda6469939df1p0,
+    0x1.961fb54442d18p1
+  },
+  { // Entry 370
+    -0x1.43f644a23f11312b0baeda6469939df1p0,
+    -0x1.961fb54442d18p1
+  },
+  { // Entry 371
+    0x1.502a1d3da2b62cdafdfc8df896fb781ep0,
+    0x1.e5bfa651e9c83p1
+  },
+  { // Entry 372
+    -0x1.502a1d3da2b62cdafdfc8df896fb781ep0,
+    -0x1.e5bfa651e9c83p1
+  },
+  { // Entry 373
+    0x1.592066aa733e56535ef23487f1ba45abp0,
+    0x1.1aafcbafc85f7p2
+  },
+  { // Entry 374
+    -0x1.592066aa733e56535ef23487f1ba45abp0,
+    -0x1.1aafcbafc85f7p2
+  },
+  { // Entry 375
+    0x1.5ff8e2755165d95ef4dfa238b69035c3p0,
+    0x1.427fc4369bdadp2
+  },
+  { // Entry 376
+    -0x1.5ff8e2755165d95ef4dfa238b69035c3p0,
+    -0x1.427fc4369bdadp2
+  },
+  { // Entry 377
+    0x1.655d65485dc172ad1da5d376106987dep0,
+    0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 378
+    -0x1.655d65485dc172ad1da5d376106987dep0,
+    -0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 379
+    0x1.65711d6bfd5303b266e1f766916353c0p0,
+    0x1.6af2eff0a2896p2
+  },
+  { // Entry 380
+    -0x1.65711d6bfd5303b266e1f766916353c0p0,
+    -0x1.6af2eff0a2896p2
+  },
+  { // Entry 381
+    0x1.602a2aaa59041e73fe9cbe5018d9258bp0,
+    0x1.43c62a9d02414p2
+  },
+  { // Entry 382
+    -0x1.602a2aaa59041e73fe9cbe5018d9258bp0,
+    -0x1.43c62a9d02414p2
+  },
+  { // Entry 383
+    0x1.597f46e10aa0ef6e7b79babd52218e41p0,
+    0x1.1c99654961f92p2
+  },
+  { // Entry 384
+    -0x1.597f46e10aa0ef6e7b79babd52218e41p0,
+    -0x1.1c99654961f92p2
+  },
+  { // Entry 385
+    0x1.50d20254a2ff42dab732523958fa024cp0,
+    0x1.ead93feb8361fp1
+  },
+  { // Entry 386
+    -0x1.50d20254a2ff42dab732523958fa024cp0,
+    -0x1.ead93feb8361fp1
+  },
+  { // Entry 387
+    0x1.45190c030df0f68611f816a36d10b59ap0,
+    0x1.9c7fb54442d1ap1
+  },
+  { // Entry 388
+    -0x1.45190c030df0f68611f816a36d10b59ap0,
+    -0x1.9c7fb54442d1ap1
+  },
+  { // Entry 389
+    0x1.34794d6993e603dc236dc9700bc984e9p0,
+    0x1.4e262a9d02415p1
+  },
+  { // Entry 390
+    -0x1.34794d6993e603dc236dc9700bc984e9p0,
+    -0x1.4e262a9d02415p1
+  },
+  { // Entry 391
+    0x1.1b598910bd9bdfeeb608b6b41a96f287p0,
+    0x1.ff993feb83620p0
+  },
+  { // Entry 392
+    -0x1.1b598910bd9bdfeeb608b6b41a96f287p0,
+    -0x1.ff993feb83620p0
+  },
+  { // Entry 393
+    0x1.e44c9309197c4f98392215a424630bb4p-1,
+    0x1.62e62a9d02416p0
+  },
+  { // Entry 394
+    -0x1.e44c9309197c4f98392215a424630bb4p-1,
+    -0x1.62e62a9d02416p0
+  },
+  { // Entry 395
+    0x1.5150f1acfb0190aa9794ba0211b4eb4bp-1,
+    0x1.8c662a9d02419p-1
+  },
+  { // Entry 396
+    -0x1.5150f1acfb0190aa9794ba0211b4eb4bp-1,
+    -0x1.8c662a9d02419p-1
+  },
+  { // Entry 397
+    -0x1.073ea15c614e11668ba9fe75888fee13p0,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 398
+    0x1.073ea15c614e11668ba9fe75888fee13p0,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 399
+    -0x1.0215495ceb1806c15504264e9f1be222p0,
+    -0x1.95ec8b9e03d54p0
+  },
+  { // Entry 400
+    0x1.0215495ceb1806c15504264e9f1be222p0,
+    0x1.95ec8b9e03d54p0
+  },
+  { // Entry 401
+    -0x1.f923661b52647e658c1f9707f87d1606p-1,
+    -0x1.832efa2a435a9p0
+  },
+  { // Entry 402
+    0x1.f923661b52647e658c1f9707f87d1606p-1,
+    0x1.832efa2a435a9p0
+  },
+  { // Entry 403
+    -0x1.ed57806b9090def7310604bffed0093dp-1,
+    -0x1.707168b682dfep0
+  },
+  { // Entry 404
+    0x1.ed57806b9090def7310604bffed0093dp-1,
+    0x1.707168b682dfep0
+  },
+  { // Entry 405
+    -0x1.e0b524b578b4212100f5f78ecd69a1ddp-1,
+    -0x1.5db3d742c2653p0
+  },
+  { // Entry 406
+    0x1.e0b524b578b4212100f5f78ecd69a1ddp-1,
+    0x1.5db3d742c2653p0
+  },
+  { // Entry 407
+    -0x1.d3290701e8ac987ea5732b16701a05fcp-1,
+    -0x1.4af645cf01ea8p0
+  },
+  { // Entry 408
+    0x1.d3290701e8ac987ea5732b16701a05fcp-1,
+    0x1.4af645cf01ea8p0
+  },
+  { // Entry 409
+    -0x1.c49e488683ace4d5fd4683f7caab7e9fp-1,
+    -0x1.3838b45b416fdp0
+  },
+  { // Entry 410
+    0x1.c49e488683ace4d5fd4683f7caab7e9fp-1,
+    0x1.3838b45b416fdp0
+  },
+  { // Entry 411
+    -0x1.b4fe843e9e803b2349ffd384aab807f3p-1,
+    -0x1.257b22e780f52p0
+  },
+  { // Entry 412
+    0x1.b4fe843e9e803b2349ffd384aab807f3p-1,
+    0x1.257b22e780f52p0
+  },
+  { // Entry 413
+    -0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 414
+    0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 415
+    -0x1.871278e2b0226c7be314f39e634cb866p-1,
+    -0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 416
+    0x1.871278e2b0226c7be314f39e634cb866p-1,
+    0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 417
+    -0x1.7b8b3be13fca614c858af0d2c2879b7ap-1,
+    -0x1.d4b87dab670a0p-1
+  },
+  { // Entry 418
+    0x1.7b8b3be13fca614c858af0d2c2879b7ap-1,
+    0x1.d4b87dab670a0p-1
+  },
+  { // Entry 419
+    -0x1.6f851ed60f1e0ce1ff2d5577433c5ab2p-1,
+    -0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 420
+    0x1.6f851ed60f1e0ce1ff2d5577433c5ab2p-1,
+    0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 421
+    -0x1.62fb644de198ccbb0b7e0d32484d4ec0p-1,
+    -0x1.a970fb56ce140p-1
+  },
+  { // Entry 422
+    0x1.62fb644de198ccbb0b7e0d32484d4ec0p-1,
+    0x1.a970fb56ce140p-1
+  },
+  { // Entry 423
+    -0x1.55e986b4afe0cfdcf0138634c7c95b2bp-1,
+    -0x1.93cd3a2c81990p-1
+  },
+  { // Entry 424
+    0x1.55e986b4afe0cfdcf0138634c7c95b2bp-1,
+    0x1.93cd3a2c81990p-1
+  },
+  { // Entry 425
+    -0x1.484b52126a2735deb224632c4c2e4042p-1,
+    -0x1.7e297902351e0p-1
+  },
+  { // Entry 426
+    0x1.484b52126a2735deb224632c4c2e4042p-1,
+    0x1.7e297902351e0p-1
+  },
+  { // Entry 427
+    -0x1.3a1d01c9f4b1e99685e3fe739fdcffdap-1,
+    -0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 428
+    0x1.3a1d01c9f4b1e99685e3fe739fdcffdap-1,
+    0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 429
+    -0x1.2b5b626353bb47148742f9c053cd45c3p-1,
+    -0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 430
+    0x1.2b5b626353bb47148742f9c053cd45c3p-1,
+    0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 431
+    -0x1.1c03f735e818163698043ffa524dd5f7p-1,
+    -0x1.3d3e35834fad0p-1
+  },
+  { // Entry 432
+    0x1.1c03f735e818163698043ffa524dd5f7p-1,
+    0x1.3d3e35834fad0p-1
+  },
+  { // Entry 433
+    -0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 434
+    0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 435
+    -0x1.bb12f34bbefd630026b351ba15c3d256p-2,
+    -0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 436
+    0x1.bb12f34bbefd630026b351ba15c3d256p-2,
+    0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 437
+    -0x1.894ae0cb0ee2f00789eee093998b4a9bp-2,
+    -0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 438
+    0x1.894ae0cb0ee2f00789eee093998b4a9bp-2,
+    0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 439
+    -0x1.5579fdc3a8f3f9cf3f863dc6aa9b7198p-2,
+    -0x1.62b9586ad0a20p-2
+  },
+  { // Entry 440
+    0x1.5579fdc3a8f3f9cf3f863dc6aa9b7198p-2,
+    0x1.62b9586ad0a20p-2
+  },
+  { // Entry 441
+    -0x1.1fc79cfbf4e7b55f4dc25f1890fecd53p-2,
+    -0x1.279a74590331ap-2
+  },
+  { // Entry 442
+    0x1.1fc79cfbf4e7b55f4dc25f1890fecd53p-2,
+    0x1.279a74590331ap-2
+  },
+  { // Entry 443
+    -0x1.d0d0f85f973cce547bb0dc0a38708bffp-3,
+    -0x1.d8f7208e6b829p-3
+  },
+  { // Entry 444
+    0x1.d0d0f85f973cce547bb0dc0a38708bffp-3,
+    0x1.d8f7208e6b829p-3
+  },
+  { // Entry 445
+    -0x1.5f3d415cb47fed760072dbaeb268ceefp-3,
+    -0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 446
+    0x1.5f3d415cb47fed760072dbaeb268ceefp-3,
+    0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 447
+    -0x1.d6e1431de5be5630dec33d31fb926cbfp-4,
+    -0x1.d8f7208e6b826p-4
+  },
+  { // Entry 448
+    0x1.d6e1431de5be5630dec33d31fb926cbfp-4,
+    0x1.d8f7208e6b826p-4
+  },
+  { // Entry 449
+    -0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 450
+    0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 451
+    0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 452
+    -0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 453
+    0x1.d6e1431de5bec4b79b64ec5a67bbcc08p-4,
+    0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 454
+    -0x1.d6e1431de5bec4b79b64ec5a67bbcc08p-4,
+    -0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 455
+    0x1.5f3d415cb4802b98cc41263eda7f242ap-3,
+    0x1.62b9586ad0a22p-3
+  },
+  { // Entry 456
+    -0x1.5f3d415cb4802b98cc41263eda7f242ap-3,
+    -0x1.62b9586ad0a22p-3
+  },
+  { // Entry 457
+    0x1.d0d0f85f973d0b16e9de3a03bdc6808bp-3,
+    0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 458
+    -0x1.d0d0f85f973d0b16e9de3a03bdc6808bp-3,
+    -0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 459
+    0x1.1fc79cfbf4e7d2e9265fe8f12eda96cap-2,
+    0x1.279a74590331cp-2
+  },
+  { // Entry 460
+    -0x1.1fc79cfbf4e7d2e9265fe8f12eda96cap-2,
+    -0x1.279a74590331cp-2
+  },
+  { // Entry 461
+    0x1.5579fdc3a8f4166188aad00fcf71b510p-2,
+    0x1.62b9586ad0a22p-2
+  },
+  { // Entry 462
+    -0x1.5579fdc3a8f4166188aad00fcf71b510p-2,
+    -0x1.62b9586ad0a22p-2
+  },
+  { // Entry 463
+    0x1.894ae0cb0ee30b895f6381f3b133dc04p-2,
+    0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 464
+    -0x1.894ae0cb0ee30b895f6381f3b133dc04p-2,
+    -0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 465
+    0x1.bb12f34bbefd7d5fccadb160103a2001p-2,
+    0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 466
+    -0x1.bb12f34bbefd7d5fccadb160103a2001p-2,
+    -0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 467
+    0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 468
+    -0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 469
+    0x1.1c03f735e817e7f7c907ff3c4e54650dp-1,
+    0x1.3d3e35834faccp-1
+  },
+  { // Entry 470
+    -0x1.1c03f735e817e7f7c907ff3c4e54650dp-1,
+    -0x1.3d3e35834faccp-1
+  },
+  { // Entry 471
+    0x1.2b5b626353bb1a939a57893481fc6efep-1,
+    0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 472
+    -0x1.2b5b626353bb1a939a57893481fc6efep-1,
+    -0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 473
+    0x1.3a1d01c9f4b1becd56338b2ff004552cp-1,
+    0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 474
+    -0x1.3a1d01c9f4b1becd56338b2ff004552cp-1,
+    -0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 475
+    0x1.484b52126a270cc4c2f0b9b8d5749c23p-1,
+    0x1.7e297902351dcp-1
+  },
+  { // Entry 476
+    -0x1.484b52126a270cc4c2f0b9b8d5749c23p-1,
+    -0x1.7e297902351dcp-1
+  },
+  { // Entry 477
+    0x1.55e986b4afe0a867e17b875f8892133ep-1,
+    0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 478
+    -0x1.55e986b4afe0a867e17b875f8892133ep-1,
+    -0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 479
+    0x1.62fb644de198a6df044c5f206ab189e5p-1,
+    0x1.a970fb56ce13cp-1
+  },
+  { // Entry 480
+    -0x1.62fb644de198a6df044c5f206ab189e5p-1,
+    -0x1.a970fb56ce13cp-1
+  },
+  { // Entry 481
+    0x1.6f851ed60f1de8920ad396732d80e630p-1,
+    0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 482
+    -0x1.6f851ed60f1de8920ad396732d80e630p-1,
+    -0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 483
+    0x1.7b8b3be13fca3e7ae61ece393dc20351p-1,
+    0x1.d4b87dab6709cp-1
+  },
+  { // Entry 484
+    -0x1.7b8b3be13fca3e7ae61ece393dc20351p-1,
+    -0x1.d4b87dab6709cp-1
+  },
+  { // Entry 485
+    0x1.871278e2b0224b1a57a7517aa6080561p-1,
+    0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 486
+    -0x1.871278e2b0224b1a57a7517aa6080561p-1,
+    -0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 487
+    0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 488
+    -0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 489
+    0x1.b4fe843e9e8072727b4b8be7730dc9f5p-1,
+    0x1.257b22e780f56p0
+  },
+  { // Entry 490
+    -0x1.b4fe843e9e8072727b4b8be7730dc9f5p-1,
+    -0x1.257b22e780f56p0
+  },
+  { // Entry 491
+    0x1.c49e488683ad184b42699159db8963c3p-1,
+    0x1.3838b45b41701p0
+  },
+  { // Entry 492
+    -0x1.c49e488683ad184b42699159db8963c3p-1,
+    -0x1.3838b45b41701p0
+  },
+  { // Entry 493
+    0x1.d3290701e8acc868f20733059c0c608ep-1,
+    0x1.4af645cf01eacp0
+  },
+  { // Entry 494
+    -0x1.d3290701e8acc868f20733059c0c608ep-1,
+    -0x1.4af645cf01eacp0
+  },
+  { // Entry 495
+    0x1.e0b524b578b44dca424e286b8612b332p-1,
+    0x1.5db3d742c2657p0
+  },
+  { // Entry 496
+    -0x1.e0b524b578b44dca424e286b8612b332p-1,
+    -0x1.5db3d742c2657p0
+  },
+  { // Entry 497
+    0x1.ed57806b909108a3ff02c70a568bf594p-1,
+    0x1.707168b682e02p0
+  },
+  { // Entry 498
+    -0x1.ed57806b909108a3ff02c70a568bf594p-1,
+    -0x1.707168b682e02p0
+  },
+  { // Entry 499
+    0x1.f923661b5264a5551df6c3d4c279e2c6p-1,
+    0x1.832efa2a435adp0
+  },
+  { // Entry 500
+    -0x1.f923661b5264a5551df6c3d4c279e2c6p-1,
+    -0x1.832efa2a435adp0
+  },
+  { // Entry 501
+    0x1.0215495ceb1818f77c287b62995eeddbp0,
+    0x1.95ec8b9e03d58p0
+  },
+  { // Entry 502
+    -0x1.0215495ceb1818f77c287b62995eeddbp0,
+    -0x1.95ec8b9e03d58p0
+  },
+  { // Entry 503
+    0x1.073ea15c614e11668ba9fe75888fee13p0,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 504
+    -0x1.073ea15c614e11668ba9fe75888fee13p0,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 505
+    0x1.96c4c0ec290ebef92ab936700e7d3f1bp-1,
+    0x1.04aff6d330942p0
+  },
+  { // Entry 506
+    -0x1.96c4c0ec290ebef92ab936700e7d3f1bp-1,
+    -0x1.04aff6d330942p0
+  },
+  { // Entry 507
+    0x1.96c565a66992e578d5536359e24d1cffp-1,
+    0x1.04b09e98dcdb4p0
+  },
+  { // Entry 508
+    -0x1.96c565a66992e578d5536359e24d1cffp-1,
+    -0x1.04b09e98dcdb4p0
+  },
+  { // Entry 509
+    0x1.96c60a603e270ac6f5547fd0c1f8f8ecp-1,
+    0x1.04b1465e89226p0
+  },
+  { // Entry 510
+    -0x1.96c60a603e270ac6f5547fd0c1f8f8ecp-1,
+    -0x1.04b1465e89226p0
+  },
+  { // Entry 511
+    0x1.96c6af19a6cb76e043213a66372fc856p-1,
+    0x1.04b1ee2435698p0
+  },
+  { // Entry 512
+    -0x1.96c6af19a6cb76e043213a66372fc856p-1,
+    -0x1.04b1ee2435698p0
+  },
+  { // Entry 513
+    0x1.96c753d2a38071c172287dd0e901a28ep-1,
+    0x1.04b295e9e1b0ap0
+  },
+  { // Entry 514
+    -0x1.96c753d2a38071c172287dd0e901a28ep-1,
+    -0x1.04b295e9e1b0ap0
+  },
+  { // Entry 515
+    0x1.96c7f88b3446436730e2c7c9e49c64fap-1,
+    0x1.04b33daf8df7cp0
+  },
+  { // Entry 516
+    -0x1.96c7f88b3446436730e2c7c9e49c64fap-1,
+    -0x1.04b33daf8df7cp0
+  },
+  { // Entry 517
+    0x1.96c89d43591d33ce28d17fec2513bfcbp-1,
+    0x1.04b3e5753a3eep0
+  },
+  { // Entry 518
+    -0x1.96c89d43591d33ce28d17fec2513bfcbp-1,
+    -0x1.04b3e5753a3eep0
+  },
+  { // Entry 519
+    0x1.96c941fb12058af2fe7e4e965a300441p-1,
+    0x1.04b48d3ae6860p0
+  },
+  { // Entry 520
+    -0x1.96c941fb12058af2fe7e4e965a300441p-1,
+    -0x1.04b48d3ae6860p0
+  },
+  { // Entry 521
+    0x1.96c9e6b25eff61b237930a7d05a731ebp-1,
+    0x1.04b5350092ccfp0
+  },
+  { // Entry 522
+    -0x1.96c9e6b25eff61b237930a7d05a731ebp-1,
+    -0x1.04b5350092ccfp0
+  },
+  { // Entry 523
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 524
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 525
+    -0.0,
+    -0.0
+  },
+  { // Entry 526
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 527
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 528
+    0x1.0c152382d73648a8c8f9175719d84f03p-1,
+    0x1.279a74590331bp-1
+  },
+  { // Entry 529
+    -0x1.0c152382d73648a8c8f9175719d84f03p-1,
+    -0x1.279a74590331bp-1
+  },
+  { // Entry 530
+    0x1.0c152382d73654a8c8f917571a1aed4ap-1,
+    0x1.279a74590331cp-1
+  },
+  { // Entry 531
+    -0x1.0c152382d73654a8c8f917571a1aed4ap-1,
+    -0x1.279a74590331cp-1
+  },
+  { // Entry 532
+    0x1.0c152382d73660a8c8f917571a0a6821p-1,
+    0x1.279a74590331dp-1
+  },
+  { // Entry 533
+    -0x1.0c152382d73660a8c8f917571a0a6821p-1,
+    -0x1.279a74590331dp-1
+  },
+  { // Entry 534
+    0x1.0c152382d7365277925622b33812561ep0,
+    0x1.bb67ae8584ca9p0
+  },
+  { // Entry 535
+    -0x1.0c152382d7365277925622b33812561ep0,
+    -0x1.bb67ae8584ca9p0
+  },
+  { // Entry 536
+    0x1.0c152382d7365677925622b338471928p0,
+    0x1.bb67ae8584caap0
+  },
+  { // Entry 537
+    -0x1.0c152382d7365677925622b338471928p0,
+    -0x1.bb67ae8584caap0
+  },
+  { // Entry 538
+    0x1.0c152382d7365a77925622b338446f3cp0,
+    0x1.bb67ae8584cabp0
+  },
+  { // Entry 539
+    -0x1.0c152382d7365a77925622b338446f3cp0,
+    -0x1.bb67ae8584cabp0
+  },
+  { // Entry 540
+    0x1.a64eec3cc23fbdfe90b96189d12851b4p-2,
+    0x1.bffffffffffffp-2
+  },
+  { // Entry 541
+    -0x1.a64eec3cc23fbdfe90b96189d12851b4p-2,
+    -0x1.bffffffffffffp-2
+  },
+  { // Entry 542
+    0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    0x1.cp-2
+  },
+  { // Entry 543
+    -0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    -0x1.cp-2
+  },
+  { // Entry 544
+    0x1.a64eec3cc23fd8da7938f61a2f29ff73p-2,
+    0x1.c000000000001p-2
+  },
+  { // Entry 545
+    -0x1.a64eec3cc23fd8da7938f61a2f29ff73p-2,
+    -0x1.c000000000001p-2
+  },
+  { // Entry 546
+    0x1.345f01cce37ba96325eacdc6f7ceec8cp-1,
+    0x1.5ffffffffffffp-1
+  },
+  { // Entry 547
+    -0x1.345f01cce37ba96325eacdc6f7ceec8cp-1,
+    -0x1.5ffffffffffffp-1
+  },
+  { // Entry 548
+    0x1.345f01cce37bb440844df1c4409fe779p-1,
+    0x1.6p-1
+  },
+  { // Entry 549
+    -0x1.345f01cce37bb440844df1c4409fe779p-1,
+    -0x1.6p-1
+  },
+  { // Entry 550
+    0x1.345f01cce37bbf1de2b115c1891fbafap-1,
+    0x1.6000000000001p-1
+  },
+  { // Entry 551
+    -0x1.345f01cce37bbf1de2b115c1891fbafap-1,
+    -0x1.6000000000001p-1
+  },
+  { // Entry 552
+    0x1.bde70ed439fe5f73a215d6096c04b42bp-1,
+    0x1.2ffffffffffffp0
+  },
+  { // Entry 553
+    -0x1.bde70ed439fe5f73a215d6096c04b42bp-1,
+    -0x1.2ffffffffffffp0
+  },
+  { // Entry 554
+    0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    0x1.3p0
+  },
+  { // Entry 555
+    -0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    -0x1.3p0
+  },
+  { // Entry 556
+    0x1.bde70ed439fe7a01885c5ef51760662ap-1,
+    0x1.3000000000001p0
+  },
+  { // Entry 557
+    -0x1.bde70ed439fe7a01885c5ef51760662ap-1,
+    -0x1.3000000000001p0
+  },
+  { // Entry 558
+    0x1.2e75728833a53c7ab9de734b9eb4f397p0,
+    0x1.37fffffffffffp1
+  },
+  { // Entry 559
+    -0x1.2e75728833a53c7ab9de734b9eb4f397p0,
+    -0x1.37fffffffffffp1
+  },
+  { // Entry 560
+    0x1.2e75728833a54116e3ef7326bd9839p0,
+    0x1.380p1
+  },
+  { // Entry 561
+    -0x1.2e75728833a54116e3ef7326bd9839p0,
+    -0x1.380p1
+  },
+  { // Entry 562
+    0x1.2e75728833a545b30e007301dc13e399p0,
+    0x1.3800000000001p1
+  },
+  { // Entry 563
+    -0x1.2e75728833a545b30e007301dc13e399p0,
+    -0x1.3800000000001p1
+  },
+  { // Entry 564
+    0x1.0640a74d6105ee338c5bcc6c7348c123p-4,
+    0x1.069c8b46b3792p-4
+  },
+  { // Entry 565
+    -0x1.0640a74d6105ee338c5bcc6c7348c123p-4,
+    -0x1.069c8b46b3792p-4
+  },
+  { // Entry 566
+    0x1.052fab368e062e72fbf2d39fe9d18888p-3,
+    0x1.069c8b46b3792p-3
+  },
+  { // Entry 567
+    -0x1.052fab368e062e72fbf2d39fe9d18888p-3,
+    -0x1.069c8b46b3792p-3
+  },
+  { // Entry 568
+    0x1.852a21876f242e8b182abd42c41ee89dp-3,
+    0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 569
+    -0x1.852a21876f242e8b182abd42c41ee89dp-3,
+    -0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 570
+    0x1.01123bc10a64bf0ab62d6ef7f32651aap-2,
+    0x1.069c8b46b3792p-2
+  },
+  { // Entry 571
+    -0x1.01123bc10a64bf0ab62d6ef7f32651aap-2,
+    -0x1.069c8b46b3792p-2
+  },
+  { // Entry 572
+    0x1.3daa733ee5357808e68aee008972c828p-2,
+    0x1.4843ae1860576p-2
+  },
+  { // Entry 573
+    -0x1.3daa733ee5357808e68aee008972c828p-2,
+    -0x1.4843ae1860576p-2
+  },
+  { // Entry 574
+    0x1.780c45b9736a9089f2fe1f8efa60bf44p-2,
+    0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 575
+    -0x1.780c45b9736a9089f2fe1f8efa60bf44p-2,
+    -0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 576
+    0x1.affaac96d797029e0b8ab4083d980b68p-2,
+    0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 577
+    -0x1.affaac96d797029e0b8ab4083d980b68p-2,
+    -0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 578
+    0x1.e54c7f9dac6708f315d38c8a8c2ce4d3p-2,
+    0x1.069c8b46b3791p-1
+  },
+  { // Entry 579
+    -0x1.e54c7f9dac6708f315d38c8a8c2ce4d3p-2,
+    -0x1.069c8b46b3791p-1
+  },
+  { // Entry 580
+    0x1.0bf560a09b924073e473cb0d5c32501ep-1,
+    0x1.27701caf89e83p-1
+  },
+  { // Entry 581
+    -0x1.0bf560a09b924073e473cb0d5c32501ep-1,
+    -0x1.27701caf89e83p-1
+  },
+  { // Entry 582
+    0x1.23e717d0fa7b0b8bf45d2cd120f6d29ep-1,
+    0x1.4843ae1860575p-1
+  },
+  { // Entry 583
+    -0x1.23e717d0fa7b0b8bf45d2cd120f6d29ep-1,
+    -0x1.4843ae1860575p-1
+  },
+  { // Entry 584
+    0x1.3a7e3f4793afa9a24b0112ea83035c7ep-1,
+    0x1.69173f8136c67p-1
+  },
+  { // Entry 585
+    -0x1.3a7e3f4793afa9a24b0112ea83035c7ep-1,
+    -0x1.69173f8136c67p-1
+  },
+  { // Entry 586
+    0x1.4fc2c55f7154871c8daa35843857b7ffp-1,
+    0x1.89ead0ea0d359p-1
+  },
+  { // Entry 587
+    -0x1.4fc2c55f7154871c8daa35843857b7ffp-1,
+    -0x1.89ead0ea0d359p-1
+  },
+  { // Entry 588
+    0x1.63c05ef8a353c6d1360ead977c2adb94p-1,
+    0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 589
+    -0x1.63c05ef8a353c6d1360ead977c2adb94p-1,
+    -0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 590
+    0x1.7685624cb374ad8950ee302aee748ad9p-1,
+    0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 591
+    -0x1.7685624cb374ad8950ee302aee748ad9p-1,
+    -0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 592
+    0x1.8821d1878dcb0371d2ed00f8bad7755ep-1,
+    0x1.ec6585249082fp-1
+  },
+  { // Entry 593
+    -0x1.8821d1878dcb0371d2ed00f8bad7755ep-1,
+    -0x1.ec6585249082fp-1
+  },
+  { // Entry 594
+    0x1.98a69592999488465c8b6185dd58b38ap-1,
+    0x1.069c8b46b3791p0
+  },
+  { // Entry 595
+    -0x1.98a69592999488465c8b6185dd58b38ap-1,
+    -0x1.069c8b46b3791p0
+  },
+  { // Entry 596
+    0x1.a824e56beafb17efb9ed12695185cc5bp-1,
+    0x1.170653fb1eb0ap0
+  },
+  { // Entry 597
+    -0x1.a824e56beafb17efb9ed12695185cc5bp-1,
+    -0x1.170653fb1eb0ap0
+  },
+  { // Entry 598
+    0x1.b6add448714e627e74ee9ce6911993e6p-1,
+    0x1.27701caf89e83p0
+  },
+  { // Entry 599
+    -0x1.b6add448714e627e74ee9ce6911993e6p-1,
+    -0x1.27701caf89e83p0
+  },
+  { // Entry 600
+    0x1.c4520007344f8b36a1c610e27f4bb57ep-1,
+    0x1.37d9e563f51fcp0
+  },
+  { // Entry 601
+    -0x1.c4520007344f8b36a1c610e27f4bb57ep-1,
+    -0x1.37d9e563f51fcp0
+  },
+  { // Entry 602
+    0x1.d12159a144ff3c88e549b6c7fe977a6bp-1,
+    0x1.4843ae1860575p0
+  },
+  { // Entry 603
+    -0x1.d12159a144ff3c88e549b6c7fe977a6bp-1,
+    -0x1.4843ae1860575p0
+  },
+  { // Entry 604
+    0x1.dd2b01e17c4270caa5ead83118478c99p-1,
+    0x1.58ad76cccb8eep0
+  },
+  { // Entry 605
+    -0x1.dd2b01e17c4270caa5ead83118478c99p-1,
+    -0x1.58ad76cccb8eep0
+  },
+  { // Entry 606
+    0x1.e87d358361bd4751c472fe76608804f7p-1,
+    0x1.69173f8136c67p0
+  },
+  { // Entry 607
+    -0x1.e87d358361bd4751c472fe76608804f7p-1,
+    -0x1.69173f8136c67p0
+  },
+  { // Entry 608
+    0x1.f32544b66aa5dfd1d5c551c7b435f099p-1,
+    0x1.79810835a1fe0p0
+  },
+  { // Entry 609
+    -0x1.f32544b66aa5dfd1d5c551c7b435f099p-1,
+    -0x1.79810835a1fe0p0
+  },
+  { // Entry 610
+    0x1.fd2f92d1f51f1d323eacb60983a6f40dp-1,
+    0x1.89ead0ea0d359p0
+  },
+  { // Entry 611
+    -0x1.fd2f92d1f51f1d323eacb60983a6f40dp-1,
+    -0x1.89ead0ea0d359p0
+  },
+  { // Entry 612
+    0x1.0353cdddc16607e33b1f4c9d55ff1784p0,
+    0x1.9a54999e786d2p0
+  },
+  { // Entry 613
+    -0x1.0353cdddc16607e33b1f4c9d55ff1784p0,
+    -0x1.9a54999e786d2p0
+  },
+  { // Entry 614
+    0x1.07cbfe8c14dd9ae6823776b5a4d81ba9p0,
+    0x1.aabe6252e3a4bp0
+  },
+  { // Entry 615
+    -0x1.07cbfe8c14dd9ae6823776b5a4d81ba9p0,
+    -0x1.aabe6252e3a4bp0
+  },
+  { // Entry 616
+    0x1.0c0540ee6eff5cb8c83f0e7e225652c0p0,
+    0x1.bb282b074edc4p0
+  },
+  { // Entry 617
+    -0x1.0c0540ee6eff5cb8c83f0e7e225652c0p0,
+    -0x1.bb282b074edc4p0
+  },
+  { // Entry 618
+    0x1.1004179915f3bd7827be1c9d557de4b1p0,
+    0x1.cb91f3bbba13dp0
+  },
+  { // Entry 619
+    -0x1.1004179915f3bd7827be1c9d557de4b1p0,
+    -0x1.cb91f3bbba13dp0
+  },
+  { // Entry 620
+    0x1.13cca8f590cdd610776bb232694ba1c1p0,
+    0x1.dbfbbc70254b6p0
+  },
+  { // Entry 621
+    -0x1.13cca8f590cdd610776bb232694ba1c1p0,
+    -0x1.dbfbbc70254b6p0
+  },
+  { // Entry 622
+    0x1.1762c60438ce2cf59a91a21864529016p0,
+    0x1.ec6585249082fp0
+  },
+  { // Entry 623
+    -0x1.1762c60438ce2cf59a91a21864529016p0,
+    -0x1.ec6585249082fp0
+  },
+  { // Entry 624
+    0x1.1ac9f0f5f0ac59ef468d0e8c13eecc94p0,
+    0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 625
+    -0x1.1ac9f0f5f0ac59ef468d0e8c13eecc94p0,
+    -0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 626
+    0x1.1e05637ffc0a8a6d0a7e22324ebefacfp0,
+    0x1.069c8b46b3791p1
+  },
+  { // Entry 627
+    -0x1.1e05637ffc0a8a6d0a7e22324ebefacfp0,
+    -0x1.069c8b46b3791p1
+  },
+  { // Entry 628
+    0x1.211814d79540eebd6dda8be7ed197d84p0,
+    0x1.0ed16fa0e914ep1
+  },
+  { // Entry 629
+    -0x1.211814d79540eebd6dda8be7ed197d84p0,
+    -0x1.0ed16fa0e914ep1
+  },
+  { // Entry 630
+    0x1.2404bf4b3ead000faf892c3f4eb4bfa9p0,
+    0x1.170653fb1eb0bp1
+  },
+  { // Entry 631
+    -0x1.2404bf4b3ead000faf892c3f4eb4bfa9p0,
+    -0x1.170653fb1eb0bp1
+  },
+  { // Entry 632
+    0x1.26cde575b64162e9e462d564797a5dd7p0,
+    0x1.1f3b3855544c8p1
+  },
+  { // Entry 633
+    -0x1.26cde575b64162e9e462d564797a5dd7p0,
+    -0x1.1f3b3855544c8p1
+  },
+  { // Entry 634
+    0x1.2975d70a874ee2c0fbc4d32b9997edb4p0,
+    0x1.27701caf89e85p1
+  },
+  { // Entry 635
+    -0x1.2975d70a874ee2c0fbc4d32b9997edb4p0,
+    -0x1.27701caf89e85p1
+  },
+  { // Entry 636
+    0x1.2bfeb53ef2d629fd2ec3bbe0988ec127p0,
+    0x1.2fa50109bf842p1
+  },
+  { // Entry 637
+    -0x1.2bfeb53ef2d629fd2ec3bbe0988ec127p0,
+    -0x1.2fa50109bf842p1
+  },
+  { // Entry 638
+    0x1.2e6a76d3a7c4daa88cd0858debcbfd55p0,
+    0x1.37d9e563f51ffp1
+  },
+  { // Entry 639
+    -0x1.2e6a76d3a7c4daa88cd0858debcbfd55p0,
+    -0x1.37d9e563f51ffp1
+  },
+  { // Entry 640
+    0x1.30baebc4d0b12279c4c6a70a83ec7404p0,
+    0x1.400ec9be2abbcp1
+  },
+  { // Entry 641
+    -0x1.30baebc4d0b12279c4c6a70a83ec7404p0,
+    -0x1.400ec9be2abbcp1
+  },
+  { // Entry 642
+    0x1.32f1c0a688709db9016d269725c02a4fp0,
+    0x1.4843ae1860579p1
+  },
+  { // Entry 643
+    -0x1.32f1c0a688709db9016d269725c02a4fp0,
+    -0x1.4843ae1860579p1
+  },
+  { // Entry 644
+    0x1.351081b3f9205c658eef3c57bcc8acb2p0,
+    0x1.5078927295f36p1
+  },
+  { // Entry 645
+    -0x1.351081b3f9205c658eef3c57bcc8acb2p0,
+    -0x1.5078927295f36p1
+  },
+  { // Entry 646
+    0x1.37189d975e5f9cb962f7bf8cf038ccc8p0,
+    0x1.58ad76cccb8f3p1
+  },
+  { // Entry 647
+    -0x1.37189d975e5f9cb962f7bf8cf038ccc8p0,
+    -0x1.58ad76cccb8f3p1
+  },
+  { // Entry 648
+    0x1.390b67f0f05fe3c31d028790ff0ff571p0,
+    0x1.60e25b27012b0p1
+  },
+  { // Entry 649
+    -0x1.390b67f0f05fe3c31d028790ff0ff571p0,
+    -0x1.60e25b27012b0p1
+  },
+  { // Entry 650
+    0x1.3aea1ba270fc7663f575c66a2dbf5ff8p0,
+    0x1.69173f8136c6dp1
+  },
+  { // Entry 651
+    -0x1.3aea1ba270fc7663f575c66a2dbf5ff8p0,
+    -0x1.69173f8136c6dp1
+  },
+  { // Entry 652
+    0x1.3cb5dce4b8f630b629d722f5ae3dc757p0,
+    0x1.714c23db6c62ap1
+  },
+  { // Entry 653
+    -0x1.3cb5dce4b8f630b629d722f5ae3dc757p0,
+    -0x1.714c23db6c62ap1
+  },
+  { // Entry 654
+    0x1.3e6fbb2c41396ce4aeff19d97552d217p0,
+    0x1.79810835a1fe7p1
+  },
+  { // Entry 655
+    -0x1.3e6fbb2c41396ce4aeff19d97552d217p0,
+    -0x1.79810835a1fe7p1
+  },
+  { // Entry 656
+    0x1.4018b2e13fe932bca7539dacbfa4d09ep0,
+    0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 657
+    -0x1.4018b2e13fe932bca7539dacbfa4d09ep0,
+    -0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 658
+    0x1.41b1aeef8e4ae6bd8723cc148d6caf10p0,
+    0x1.89ead0ea0d35bp1
+  },
+  { // Entry 659
+    -0x1.41b1aeef8e4ae6bd8723cc148d6caf10p0,
+    -0x1.89ead0ea0d35bp1
+  },
+  { // Entry 660
+    -0x1.6807a9c540dd353125463348a685edc8p0,
+    -0x1.81b5ec8fd799fp2
+  },
+  { // Entry 661
+    0x1.6807a9c540dd353125463348a685edc8p0,
+    0x1.81b5ec8fd799fp2
+  },
+  { // Entry 662
+    -0x1.6631e1a59590376d984470d99cc8df7bp0,
+    -0x1.714c23db6c626p2
+  },
+  { // Entry 663
+    0x1.6631e1a59590376d984470d99cc8df7bp0,
+    0x1.714c23db6c626p2
+  },
+  { // Entry 664
+    -0x1.6431bb7edf2bb723008b3c51ca448a76p0,
+    -0x1.60e25b27012adp2
+  },
+  { // Entry 665
+    0x1.6431bb7edf2bb723008b3c51ca448a76p0,
+    0x1.60e25b27012adp2
+  },
+  { // Entry 666
+    -0x1.6201493b022361bd3c406520761b65cfp0,
+    -0x1.5078927295f34p2
+  },
+  { // Entry 667
+    0x1.6201493b022361bd3c406520761b65cfp0,
+    0x1.5078927295f34p2
+  },
+  { // Entry 668
+    -0x1.5f9977a47aee17d0f12c193a7dd62259p0,
+    -0x1.400ec9be2abbbp2
+  },
+  { // Entry 669
+    0x1.5f9977a47aee17d0f12c193a7dd62259p0,
+    0x1.400ec9be2abbbp2
+  },
+  { // Entry 670
+    -0x1.5cf1c53dd9ca9fa29b3bb04ec56e073fp0,
+    -0x1.2fa50109bf842p2
+  },
+  { // Entry 671
+    0x1.5cf1c53dd9ca9fa29b3bb04ec56e073fp0,
+    0x1.2fa50109bf842p2
+  },
+  { // Entry 672
+    -0x1.59ffe278fb5d0fd66d3a875f34e955b9p0,
+    -0x1.1f3b3855544c9p2
+  },
+  { // Entry 673
+    0x1.59ffe278fb5d0fd66d3a875f34e955b9p0,
+    0x1.1f3b3855544c9p2
+  },
+  { // Entry 674
+    -0x1.56b732e5cd9e7665c855c33ec7ba86a3p0,
+    -0x1.0ed16fa0e9150p2
+  },
+  { // Entry 675
+    0x1.56b732e5cd9e7665c855c33ec7ba86a3p0,
+    0x1.0ed16fa0e9150p2
+  },
+  { // Entry 676
+    -0x1.530823483d3605b2bd96ffaf2c4679c9p0,
+    -0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 677
+    0x1.530823483d3605b2bd96ffaf2c4679c9p0,
+    0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 678
+    -0x1.4edf430c0024477cefffec364da85c1dp0,
+    -0x1.dbfbbc70254bcp1
+  },
+  { // Entry 679
+    0x1.4edf430c0024477cefffec364da85c1dp0,
+    0x1.dbfbbc70254bcp1
+  },
+  { // Entry 680
+    -0x1.4a2407447a81c7dc1121259e08565d3ep0,
+    -0x1.bb282b074edcap1
+  },
+  { // Entry 681
+    0x1.4a2407447a81c7dc1121259e08565d3ep0,
+    0x1.bb282b074edcap1
+  },
+  { // Entry 682
+    -0x1.44b710bde944f5b73d2380913fb96b93p0,
+    -0x1.9a54999e786d8p1
+  },
+  { // Entry 683
+    0x1.44b710bde944f5b73d2380913fb96b93p0,
+    0x1.9a54999e786d8p1
+  },
+  { // Entry 684
+    -0x1.3e6fbb2c41396997fae3ce7cb202ab3cp0,
+    -0x1.79810835a1fe6p1
+  },
+  { // Entry 685
+    0x1.3e6fbb2c41396997fae3ce7cb202ab3cp0,
+    0x1.79810835a1fe6p1
+  },
+  { // Entry 686
+    -0x1.37189d975e5fa09a38272d7f560e0da4p0,
+    -0x1.58ad76cccb8f4p1
+  },
+  { // Entry 687
+    0x1.37189d975e5fa09a38272d7f560e0da4p0,
+    0x1.58ad76cccb8f4p1
+  },
+  { // Entry 688
+    -0x1.2e6a76d3a7c4e87fefa518c326ab6156p0,
+    -0x1.37d9e563f5202p1
+  },
+  { // Entry 689
+    0x1.2e6a76d3a7c4e87fefa518c326ab6156p0,
+    0x1.37d9e563f5202p1
+  },
+  { // Entry 690
+    -0x1.2404bf4b3ead1be0d614e16bd1916f4dp0,
+    -0x1.170653fb1eb10p1
+  },
+  { // Entry 691
+    0x1.2404bf4b3ead1be0d614e16bd1916f4dp0,
+    0x1.170653fb1eb10p1
+  },
+  { // Entry 692
+    -0x1.1762c60438ce5938069b20cf6314944ap0,
+    -0x1.ec6585249083cp0
+  },
+  { // Entry 693
+    0x1.1762c60438ce5938069b20cf6314944ap0,
+    0x1.ec6585249083cp0
+  },
+  { // Entry 694
+    -0x1.07cbfe8c14ddd1f1d38ba981b0996a1ap0,
+    -0x1.aabe6252e3a58p0
+  },
+  { // Entry 695
+    0x1.07cbfe8c14ddd1f1d38ba981b0996a1ap0,
+    0x1.aabe6252e3a58p0
+  },
+  { // Entry 696
+    -0x1.e87d358361bdd2789fd13900549104c2p-1,
+    -0x1.69173f8136c74p0
+  },
+  { // Entry 697
+    0x1.e87d358361bdd2789fd13900549104c2p-1,
+    0x1.69173f8136c74p0
+  },
+  { // Entry 698
+    -0x1.b6add448714f14e4cbd045740116f534p-1,
+    -0x1.27701caf89e90p0
+  },
+  { // Entry 699
+    0x1.b6add448714f14e4cbd045740116f534p-1,
+    0x1.27701caf89e90p0
+  },
+  { // Entry 700
+    -0x1.7685624cb37593eb960af368aeea2616p-1,
+    -0x1.cb91f3bbba157p-1
+  },
+  { // Entry 701
+    0x1.7685624cb37593eb960af368aeea2616p-1,
+    0x1.cb91f3bbba157p-1
+  },
+  { // Entry 702
+    -0x1.23e717d0fa7c2705659e11ed85e6dac4p-1,
+    -0x1.4843ae186058ep-1
+  },
+  { // Entry 703
+    0x1.23e717d0fa7c2705659e11ed85e6dac4p-1,
+    0x1.4843ae186058ep-1
+  },
+  { // Entry 704
+    -0x1.780c45b9736d2d89e5dbc5fe7167a786p-2,
+    -0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 705
+    0x1.780c45b9736d2d89e5dbc5fe7167a786p-2,
+    0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 706
+    -0x1.052fab368e0bf61ea3f942bd2601e1bap-3,
+    -0x1.069c8b46b37f0p-3
+  },
+  { // Entry 707
+    0x1.052fab368e0bf61ea3f942bd2601e1bap-3,
+    0x1.069c8b46b37f0p-3
+  },
+  { // Entry 708
+    0x1.052fab368e0066c753ec64819b76a489p-3,
+    0x1.069c8b46b3734p-3
+  },
+  { // Entry 709
+    -0x1.052fab368e0066c753ec64819b76a489p-3,
+    -0x1.069c8b46b3734p-3
+  },
+  { // Entry 710
+    0x1.780c45b973680f69ff94600d976ecca3p-2,
+    0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 711
+    -0x1.780c45b973680f69ff94600d976ecca3p-2,
+    -0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 712
+    0x1.23e717d0fa7a1216d86181eab105dcf9p-1,
+    0x1.4843ae186055fp-1
+  },
+  { // Entry 713
+    -0x1.23e717d0fa7a1216d86181eab105dcf9p-1,
+    -0x1.4843ae186055fp-1
+  },
+  { // Entry 714
+    0x1.7685624cb373f375056aa629c14d7f7ep-1,
+    0x1.cb91f3bbba128p-1
+  },
+  { // Entry 715
+    -0x1.7685624cb373f375056aa629c14d7f7ep-1,
+    -0x1.cb91f3bbba128p-1
+  },
+  { // Entry 716
+    0x1.b6add448714dcb8a52cd35a987330f71p-1,
+    0x1.27701caf89e78p0
+  },
+  { // Entry 717
+    -0x1.b6add448714dcb8a52cd35a987330f71p-1,
+    -0x1.27701caf89e78p0
+  },
+  { // Entry 718
+    0x1.e87d358361bcd19359996a7779c977a2p-1,
+    0x1.69173f8136c5cp0
+  },
+  { // Entry 719
+    -0x1.e87d358361bcd19359996a7779c977a2p-1,
+    -0x1.69173f8136c5cp0
+  },
+  { // Entry 720
+    0x1.07cbfe8c14dd6c531603e943f23b5395p0,
+    0x1.aabe6252e3a40p0
+  },
+  { // Entry 721
+    -0x1.07cbfe8c14dd6c531603e943f23b5395p0,
+    -0x1.aabe6252e3a40p0
+  },
+  { // Entry 722
+    0x1.1762c60438ce078252d85e42621311efp0,
+    0x1.ec65852490824p0
+  },
+  { // Entry 723
+    -0x1.1762c60438ce078252d85e42621311efp0,
+    -0x1.ec65852490824p0
+  },
+  { // Entry 724
+    0x1.2404bf4b3eacd91e132bfb674e2913adp0,
+    0x1.170653fb1eb04p1
+  },
+  { // Entry 725
+    -0x1.2404bf4b3eacd91e132bfb674e2913adp0,
+    -0x1.170653fb1eb04p1
+  },
+  { // Entry 726
+    0x1.2e6a76d3a7c4b1226452cbee254cb00ep0,
+    0x1.37d9e563f51f6p1
+  },
+  { // Entry 727
+    -0x1.2e6a76d3a7c4b1226452cbee254cb00ep0,
+    -0x1.37d9e563f51f6p1
+  },
+  { // Entry 728
+    0x1.37189d975e5f721039ee06227b2cc34ep0,
+    0x1.58ad76cccb8e8p1
+  },
+  { // Entry 729
+    -0x1.37189d975e5f721039ee06227b2cc34ep0,
+    -0x1.58ad76cccb8e8p1
+  },
+  { // Entry 730
+    0x1.3e6fbb2c413941ff899c462376afaff3p0,
+    0x1.79810835a1fdap1
+  },
+  { // Entry 731
+    -0x1.3e6fbb2c413941ff899c462376afaff3p0,
+    -0x1.79810835a1fdap1
+  },
+  { // Entry 732
+    0x1.44b710bde944d3a9aeff63d91fa1f037p0,
+    0x1.9a54999e786ccp1
+  },
+  { // Entry 733
+    -0x1.44b710bde944d3a9aeff63d91fa1f037p0,
+    -0x1.9a54999e786ccp1
+  },
+  { // Entry 734
+    0x1.4a2407447a81aa4a6751ba1c00ad16b4p0,
+    0x1.bb282b074edbep1
+  },
+  { // Entry 735
+    -0x1.4a2407447a81aa4a6751ba1c00ad16b4p0,
+    -0x1.bb282b074edbep1
+  },
+  { // Entry 736
+    0x1.4edf430c00242d9760af2ba3d134ee30p0,
+    0x1.dbfbbc70254b0p1
+  },
+  { // Entry 737
+    -0x1.4edf430c00242d9760af2ba3d134ee30p0,
+    -0x1.dbfbbc70254b0p1
+  },
+  { // Entry 738
+    0x1.530823483d35eed7bdc41c7d43d4d1bep0,
+    0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 739
+    -0x1.530823483d35eed7bdc41c7d43d4d1bep0,
+    -0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 740
+    0x1.56b732e5cd9e621620c292f21c370a65p0,
+    0x1.0ed16fa0e914ap2
+  },
+  { // Entry 741
+    -0x1.56b732e5cd9e621620c292f21c370a65p0,
+    -0x1.0ed16fa0e914ap2
+  },
+  { // Entry 742
+    0x1.59ffe278fb5cfdacbc51061667641320p0,
+    0x1.1f3b3855544c3p2
+  },
+  { // Entry 743
+    -0x1.59ffe278fb5cfdacbc51061667641320p0,
+    -0x1.1f3b3855544c3p2
+  },
+  { // Entry 744
+    0x1.5cf1c53dd9ca8f4d320efaf2bed238dep0,
+    0x1.2fa50109bf83cp2
+  },
+  { // Entry 745
+    -0x1.5cf1c53dd9ca8f4d320efaf2bed238dep0,
+    -0x1.2fa50109bf83cp2
+  },
+  { // Entry 746
+    0x1.5f9977a47aee090d54ca7b763af2b8f6p0,
+    0x1.400ec9be2abb5p2
+  },
+  { // Entry 747
+    -0x1.5f9977a47aee090d54ca7b763af2b8f6p0,
+    -0x1.400ec9be2abb5p2
+  },
+  { // Entry 748
+    0x1.6201493b02235454cfe997849b56e6a4p0,
+    0x1.5078927295f2ep2
+  },
+  { // Entry 749
+    -0x1.6201493b02235454cfe997849b56e6a4p0,
+    -0x1.5078927295f2ep2
+  },
+  { // Entry 750
+    0x1.6431bb7edf2baae88464ead12ab4619ep0,
+    0x1.60e25b27012a7p2
+  },
+  { // Entry 751
+    -0x1.6431bb7edf2baae88464ead12ab4619ep0,
+    -0x1.60e25b27012a7p2
+  },
+  { // Entry 752
+    0x1.6631e1a595902c3b42171a76898ec8fbp0,
+    0x1.714c23db6c620p2
+  },
+  { // Entry 753
+    -0x1.6631e1a595902c3b42171a76898ec8fbp0,
+    -0x1.714c23db6c620p2
+  },
+  { // Entry 754
+    0x1.6807a9c540dd2ae72a3e8ad8c9147867p0,
+    0x1.81b5ec8fd7999p2
+  },
+  { // Entry 755
+    -0x1.6807a9c540dd2ae72a3e8ad8c9147867p0,
+    -0x1.81b5ec8fd7999p2
+  },
+  { // Entry 756
+    0x1.ef652dceca4daec044deb346c4b08d48p-5,
+    0x1.effffffffffffp-5
+  },
+  { // Entry 757
+    -0x1.ef652dceca4daec044deb346c4b08d48p-5,
+    -0x1.effffffffffffp-5
+  },
+  { // Entry 758
+    0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    0x1.fp-5
+  },
+  { // Entry 759
+    -0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    -0x1.fp-5
+  },
+  { // Entry 760
+    0x1.ef652dceca4dcea258f35ae476f20359p-5,
+    0x1.f000000000001p-5
+  },
+  { // Entry 761
+    -0x1.ef652dceca4dcea258f35ae476f20359p-5,
+    -0x1.f000000000001p-5
+  },
+  { // Entry 762
+    0x1.f57ab026c3a8ecb83ec0ccdd10add49ep-4,
+    0x1.f7fffffffffffp-4
+  },
+  { // Entry 763
+    -0x1.f57ab026c3a8ecb83ec0ccdd10add49ep-4,
+    -0x1.f7fffffffffffp-4
+  },
+  { // Entry 764
+    0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    0x1.f80p-4
+  },
+  { // Entry 765
+    -0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    -0x1.f80p-4
+  },
+  { // Entry 766
+    0x1.f57ab026c3a90c3e105340f690d6d5afp-4,
+    0x1.f800000000001p-4
+  },
+  { // Entry 767
+    -0x1.f57ab026c3a90c3e105340f690d6d5afp-4,
+    -0x1.f800000000001p-4
+  },
+  { // Entry 768
+    0x1.4923024ccb77ffc36091a6f234051783p-3,
+    0x1.4bfffffffffffp-3
+  },
+  { // Entry 769
+    -0x1.4923024ccb77ffc36091a6f234051783p-3,
+    -0x1.4bfffffffffffp-3
+  },
+  { // Entry 770
+    0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    0x1.4c0p-3
+  },
+  { // Entry 771
+    -0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    -0x1.4c0p-3
+  },
+  { // Entry 772
+    0x1.4923024ccb781ef19bcbb3aa2395a92bp-3,
+    0x1.4c00000000001p-3
+  },
+  { // Entry 773
+    -0x1.4923024ccb781ef19bcbb3aa2395a92bp-3,
+    -0x1.4c00000000001p-3
+  },
+  { // Entry 774
+    0x1.2a73a661eaf04c94833e0199180e931dp-2,
+    0x1.3333333333332p-2
+  },
+  { // Entry 775
+    -0x1.2a73a661eaf04c94833e0199180e931dp-2,
+    -0x1.3333333333332p-2
+  },
+  { // Entry 776
+    0x1.2a73a661eaf05b424f928e83f4ea7bc2p-2,
+    0x1.3333333333333p-2
+  },
+  { // Entry 777
+    -0x1.2a73a661eaf05b424f928e83f4ea7bc2p-2,
+    -0x1.3333333333333p-2
+  },
+  { // Entry 778
+    0x1.2a73a661eaf069f01be71b6ed1a61259p-2,
+    0x1.3333333333334p-2
+  },
+  { // Entry 779
+    -0x1.2a73a661eaf069f01be71b6ed1a61259p-2,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 780
+    0x1.2fc48220cc1fce7fc93a77a07e48b002p-1,
+    0x1.594317acc4ef8p-1
+  },
+  { // Entry 781
+    -0x1.2fc48220cc1fce7fc93a77a07e48b002p-1,
+    -0x1.594317acc4ef8p-1
+  },
+  { // Entry 782
+    0x1.2fc48220cc1fd97f6b9419f2cefa0646p-1,
+    0x1.594317acc4ef9p-1
+  },
+  { // Entry 783
+    -0x1.2fc48220cc1fd97f6b9419f2cefa0646p-1,
+    -0x1.594317acc4ef9p-1
+  },
+  { // Entry 784
+    0x1.2fc48220cc1fe47f0dedbc451f59c99cp-1,
+    0x1.594317acc4efap-1
+  },
+  { // Entry 785
+    -0x1.2fc48220cc1fe47f0dedbc451f59c99cp-1,
+    -0x1.594317acc4efap-1
+  },
+  { // Entry 786
+    0x1.538f57b89061e1a19793adab72dc4cd0p-1,
+    0x1.8ffffffffffffp-1
+  },
+  { // Entry 787
+    -0x1.538f57b89061e1a19793adab72dc4cd0p-1,
+    -0x1.8ffffffffffffp-1
+  },
+  { // Entry 788
+    0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    0x1.9p-1
+  },
+  { // Entry 789
+    -0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    -0x1.9p-1
+  },
+  { // Entry 790
+    0x1.538f57b89061f580ae16652b86bb6353p-1,
+    0x1.9000000000001p-1
+  },
+  { // Entry 791
+    -0x1.538f57b89061f580ae16652b86bb6353p-1,
+    -0x1.9000000000001p-1
+  },
+  { // Entry 792
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 793
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 794
+    -0.0,
+    -0.0
+  },
+  { // Entry 795
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 796
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 797
+    0x1.91cd24dd4f86f3abcfa4276d83a13d73p-5,
+    0x1.921fb54442d17p-5
+  },
+  { // Entry 798
+    -0x1.91cd24dd4f86f3abcfa4276d83a13d73p-5,
+    -0x1.921fb54442d17p-5
+  },
+  { // Entry 799
+    0x1.91cd24dd4f8703a1f7188f1d645421b1p-5,
+    0x1.921fb54442d18p-5
+  },
+  { // Entry 800
+    -0x1.91cd24dd4f8703a1f7188f1d645421b1p-5,
+    -0x1.921fb54442d18p-5
+  },
+  { // Entry 801
+    0x1.91cd24dd4f8713981e8cf6cd45063dd6p-5,
+    0x1.921fb54442d19p-5
+  },
+  { // Entry 802
+    -0x1.91cd24dd4f8713981e8cf6cd45063dd6p-5,
+    -0x1.921fb54442d19p-5
+  },
+  { // Entry 803
+    0x1.90d6dfbf0463be2efc3d3ae995b9e240p-4,
+    0x1.921fb54442d17p-4
+  },
+  { // Entry 804
+    -0x1.90d6dfbf0463be2efc3d3ae995b9e240p-4,
+    -0x1.921fb54442d17p-4
+  },
+  { // Entry 805
+    0x1.90d6dfbf0463ce07e23e541458c4aa07p-4,
+    0x1.921fb54442d18p-4
+  },
+  { // Entry 806
+    -0x1.90d6dfbf0463ce07e23e541458c4aa07p-4,
+    -0x1.921fb54442d18p-4
+  },
+  { // Entry 807
+    0x1.90d6dfbf0463dde0c83f6d3f1bcc5cd7p-4,
+    0x1.921fb54442d19p-4
+  },
+  { // Entry 808
+    -0x1.90d6dfbf0463dde0c83f6d3f1bcc5cd7p-4,
+    -0x1.921fb54442d19p-4
+  },
+  { // Entry 809
+    0x1.8d128eae9561353a88062ef0a34b4e80p-3,
+    0x1.921fb54442d17p-3
+  },
+  { // Entry 810
+    -0x1.8d128eae9561353a88062ef0a34b4e80p-3,
+    -0x1.921fb54442d17p-3
+  },
+  { // Entry 811
+    0x1.8d128eae956144a27ad04eaa5b924d06p-3,
+    0x1.921fb54442d18p-3
+  },
+  { // Entry 812
+    -0x1.8d128eae956144a27ad04eaa5b924d06p-3,
+    -0x1.921fb54442d18p-3
+  },
+  { // Entry 813
+    0x1.8d128eae9561540a6d9a6e6413cda4f7p-3,
+    0x1.921fb54442d19p-3
+  },
+  { // Entry 814
+    -0x1.8d128eae9561540a6d9a6e6413cda4f7p-3,
+    -0x1.921fb54442d19p-3
+  },
+  { // Entry 815
+    0x1.7f2d6a24777e099c2376cf0898b3c360p-2,
+    0x1.921fb54442d17p-2
+  },
+  { // Entry 816
+    -0x1.7f2d6a24777e099c2376cf0898b3c360p-2,
+    -0x1.921fb54442d17p-2
+  },
+  { // Entry 817
+    0x1.7f2d6a24777e1778e0d5c62102085610p-2,
+    0x1.921fb54442d18p-2
+  },
+  { // Entry 818
+    -0x1.7f2d6a24777e1778e0d5c62102085610p-2,
+    -0x1.921fb54442d18p-2
+  },
+  { // Entry 819
+    0x1.7f2d6a24777e25559e34bd396b372d9ep-2,
+    0x1.921fb54442d19p-2
+  },
+  { // Entry 820
+    -0x1.7f2d6a24777e25559e34bd396b372d9ep-2,
+    -0x1.921fb54442d19p-2
+  },
+  { // Entry 821
+    0x1.54e04c05d069fa1ecac0c3f5d7fae70fp-1,
+    0x1.921fb54442d17p-1
+  },
+  { // Entry 822
+    -0x1.54e04c05d069fa1ecac0c3f5d7fae70fp-1,
+    -0x1.921fb54442d17p-1
+  },
+  { // Entry 823
+    0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 824
+    -0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 825
+    0x1.54e04c05d06a0de96edd9dea29d9b191p-1,
+    0x1.921fb54442d19p-1
+  },
+  { // Entry 826
+    -0x1.54e04c05d06a0de96edd9dea29d9b191p-1,
+    -0x1.921fb54442d19p-1
+  },
+  { // Entry 827
+    0x1.00fe987ed02fed962e123a7e12a6d283p0,
+    0x1.921fb54442d17p0
+  },
+  { // Entry 828
+    -0x1.00fe987ed02fed962e123a7e12a6d283p0,
+    -0x1.921fb54442d17p0
+  },
+  { // Entry 829
+    0x1.00fe987ed02ff23377d99ec36db533fep0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 830
+    -0x1.00fe987ed02ff23377d99ec36db533fep0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 831
+    0x1.00fe987ed02ff6d0c1a10308c880b0d3p0,
+    0x1.921fb54442d19p0
+  },
+  { // Entry 832
+    -0x1.00fe987ed02ff6d0c1a10308c880b0d3p0,
+    -0x1.921fb54442d19p0
+  },
+  { // Entry 833
+    0x1.433b8a322ddd266fd81ec843d7c92a7ap0,
+    0x1.921fb54442d17p1
+  },
+  { // Entry 834
+    -0x1.433b8a322ddd266fd81ec843d7c92a7ap0,
+    -0x1.921fb54442d17p1
+  },
+  { // Entry 835
+    0x1.433b8a322ddd29618168a21c962c68bcp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 836
+    -0x1.433b8a322ddd29618168a21c962c68bcp0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 837
+    0x1.433b8a322ddd2c532ab27bf55459320bp0,
+    0x1.921fb54442d19p1
+  },
+  { // Entry 838
+    -0x1.433b8a322ddd2c532ab27bf55459320bp0,
+    -0x1.921fb54442d19p1
+  },
+  { // Entry 839
+    0x1.69b8154baf42e0f527ff3f4df7a4633ep0,
+    0x1.921fb54442d17p2
+  },
+  { // Entry 840
+    -0x1.69b8154baf42e0f527ff3f4df7a4633ep0,
+    -0x1.921fb54442d17p2
+  },
+  { // Entry 841
+    0x1.69b8154baf42e289ea46de59f75a7b90p0,
+    0x1.921fb54442d18p2
+  },
+  { // Entry 842
+    -0x1.69b8154baf42e289ea46de59f75a7b90p0,
+    -0x1.921fb54442d18p2
+  },
+  { // Entry 843
+    0x1.69b8154baf42e41eac8e7d65f6f129e7p0,
+    0x1.921fb54442d19p2
+  },
+  { // Entry 844
+    -0x1.69b8154baf42e41eac8e7d65f6f129e7p0,
+    -0x1.921fb54442d19p2
+  },
+  { // Entry 845
+    0x1.7dcb7c5c399ec04ad5c1eabbb0cccf9fp0,
+    0x1.921fb54442d17p3
+  },
+  { // Entry 846
+    -0x1.7dcb7c5c399ec04ad5c1eabbb0cccf9fp0,
+    -0x1.921fb54442d17p3
+  },
+  { // Entry 847
+    0x1.7dcb7c5c399ec11908f5986443f30bdap0,
+    0x1.921fb54442d18p3
+  },
+  { // Entry 848
+    -0x1.7dcb7c5c399ec11908f5986443f30bdap0,
+    -0x1.921fb54442d18p3
+  },
+  { // Entry 849
+    0x1.7dcb7c5c399ec1e73c29460cd708f9d8p0,
+    0x1.921fb54442d19p3
+  },
+  { // Entry 850
+    -0x1.7dcb7c5c399ec1e73c29460cd708f9d8p0,
+    -0x1.921fb54442d19p3
+  },
+  { // Entry 851
+    0x1.87f17cfda0b5caf7b170dd86f8287b63p0,
+    0x1.921fb54442d17p4
+  },
+  { // Entry 852
+    -0x1.87f17cfda0b5caf7b170dd86f8287b63p0,
+    -0x1.921fb54442d17p4
+  },
+  { // Entry 853
+    0x1.87f17cfda0b5cb5f4832c04cdf736f84p0,
+    0x1.921fb54442d18p4
+  },
+  { // Entry 854
+    -0x1.87f17cfda0b5cb5f4832c04cdf736f84p0,
+    -0x1.921fb54442d18p4
+  },
+  { // Entry 855
+    0x1.87f17cfda0b5cbc6def4a312c6b628b0p0,
+    0x1.921fb54442d19p4
+  },
+  { // Entry 856
+    -0x1.87f17cfda0b5cbc6def4a312c6b628b0p0,
+    -0x1.921fb54442d19p4
+  },
+  { // Entry 857
+    0x1.8d08152eddb7a3b8c976d7e120ba1197p0,
+    0x1.921fb54442d17p5
+  },
+  { // Entry 858
+    -0x1.8d08152eddb7a3b8c976d7e120ba1197p0,
+    -0x1.921fb54442d17p5
+  },
+  { // Entry 859
+    0x1.8d08152eddb7a3eca4948f3acff50864p0,
+    0x1.921fb54442d18p5
+  },
+  { // Entry 860
+    -0x1.8d08152eddb7a3eca4948f3acff50864p0,
+    -0x1.921fb54442d18p5
+  },
+  { // Entry 861
+    0x1.8d08152eddb7a4207fb246947f2bdf35p0,
+    0x1.921fb54442d19p5
+  },
+  { // Entry 862
+    -0x1.8d08152eddb7a4207fb246947f2bdf35p0,
+    -0x1.921fb54442d19p5
+  },
+  { // Entry 863
+    0x1.8f93d4b78b7cddf446e36e538b980193p0,
+    0x1.921fb54442d17p6
+  },
+  { // Entry 864
+    -0x1.8f93d4b78b7cddf446e36e538b980193p0,
+    -0x1.921fb54442d17p6
+  },
+  { // Entry 865
+    0x1.8f93d4b78b7cde0e366aa212646d3cb6p0,
+    0x1.921fb54442d18p6
+  },
+  { // Entry 866
+    -0x1.8f93d4b78b7cde0e366aa212646d3cb6p0,
+    -0x1.921fb54442d18p6
+  },
+  { // Entry 867
+    0x1.8f93d4b78b7cde2825f1d5d13d40678bp0,
+    0x1.921fb54442d19p6
+  },
+  { // Entry 868
+    -0x1.8f93d4b78b7cde2825f1d5d13d40678bp0,
+    -0x1.921fb54442d19p6
+  },
+  { // Entry 869
+    0x1.90d9c2ed8873775a4f6e3fe4c3a5982bp0,
+    0x1.921fb54442d17p7
+  },
+  { // Entry 870
+    -0x1.90d9c2ed8873775a4f6e3fe4c3a5982bp0,
+    -0x1.921fb54442d17p7
+  },
+  { // Entry 871
+    0x1.90d9c2ed887377674770eac36c2436b5p0,
+    0x1.921fb54442d18p7
+  },
+  { // Entry 872
+    -0x1.90d9c2ed887377674770eac36c2436b5p0,
+    -0x1.921fb54442d18p7
+  },
+  { // Entry 873
+    0x1.90d9c2ed887377743f7395a214a1cd0ep0,
+    0x1.921fb54442d19p7
+  },
+  { // Entry 874
+    -0x1.90d9c2ed887377743f7395a214a1cd0ep0,
+    -0x1.921fb54442d19p7
+  },
+  { // Entry 875
+    0x1.2b5f4b53c7948df5568782d0a75b8459p0,
+    0x1.2d97c7f3321d1p1
+  },
+  { // Entry 876
+    -0x1.2b5f4b53c7948df5568782d0a75b8459p0,
+    -0x1.2d97c7f3321d1p1
+  },
+  { // Entry 877
+    0x1.2b5f4b53c79492d7b5a6cd6203c9aae2p0,
+    0x1.2d97c7f3321d2p1
+  },
+  { // Entry 878
+    -0x1.2b5f4b53c79492d7b5a6cd6203c9aae2p0,
+    -0x1.2d97c7f3321d2p1
+  },
+  { // Entry 879
+    0x1.2b5f4b53c79497ba14c617f35fc7662ep0,
+    0x1.2d97c7f3321d3p1
+  },
+  { // Entry 880
+    -0x1.2b5f4b53c79497ba14c617f35fc7662ep0,
+    -0x1.2d97c7f3321d3p1
+  },
+  { // Entry 881
+    0x1.524a69fcff2af09f5f140df341a455ddp0,
+    0x1.f6a7a2955385dp1
+  },
+  { // Entry 882
+    -0x1.524a69fcff2af09f5f140df341a455ddp0,
+    -0x1.f6a7a2955385dp1
+  },
+  { // Entry 883
+    0x1.524a69fcff2af2923cab5c00b660c55fp0,
+    0x1.f6a7a2955385ep1
+  },
+  { // Entry 884
+    -0x1.524a69fcff2af2923cab5c00b660c55fp0,
+    -0x1.f6a7a2955385ep1
+  },
+  { // Entry 885
+    0x1.524a69fcff2af4851a42aa0e2aff61bcp0,
+    0x1.f6a7a2955385fp1
+  },
+  { // Entry 886
+    -0x1.524a69fcff2af4851a42aa0e2aff61bcp0,
+    -0x1.f6a7a2955385fp1
+  },
+  { // Entry 887
+    0x1.5c97d37d98aa37af1a1b75a619098288p0,
+    0x1.2d97c7f3321d1p2
+  },
+  { // Entry 888
+    -0x1.5c97d37d98aa37af1a1b75a619098288p0,
+    -0x1.2d97c7f3321d1p2
+  },
+  { // Entry 889
+    0x1.5c97d37d98aa3a711b94359371aaf903p0,
+    0x1.2d97c7f3321d2p2
+  },
+  { // Entry 890
+    -0x1.5c97d37d98aa3a711b94359371aaf903p0,
+    -0x1.2d97c7f3321d2p2
+  },
+  { // Entry 891
+    0x1.5c97d37d98aa3d331d0cf580ca04c102p0,
+    0x1.2d97c7f3321d3p2
+  },
+  { // Entry 892
+    -0x1.5c97d37d98aa3d331d0cf580ca04c102p0,
+    -0x1.2d97c7f3321d3p2
+  },
+  { // Entry 893
+    0x1.64102fc571c7422b6ad0ed05fd24e652p0,
+    0x1.5fdbbe9bba774p2
+  },
+  { // Entry 894
+    -0x1.64102fc571c7422b6ad0ed05fd24e652p0,
+    -0x1.5fdbbe9bba774p2
+  },
+  { // Entry 895
+    0x1.64102fc571c744381d266feb08ddfcc4p0,
+    0x1.5fdbbe9bba775p2
+  },
+  { // Entry 896
+    -0x1.64102fc571c744381d266feb08ddfcc4p0,
+    -0x1.5fdbbe9bba775p2
+  },
+  { // Entry 897
+    0x1.64102fc571c74644cf7bf2d01468e265p0,
+    0x1.5fdbbe9bba776p2
+  },
+  { // Entry 898
+    -0x1.64102fc571c74644cf7bf2d01468e265p0,
+    -0x1.5fdbbe9bba776p2
+  },
+  { // Entry 899
+    0x1.6e2561a6cd2181c009d7d863e666c437p0,
+    0x1.c463abeccb2bap2
+  },
+  { // Entry 900
+    -0x1.6e2561a6cd2181c009d7d863e666c437p0,
+    -0x1.c463abeccb2bap2
+  },
+  { // Entry 901
+    0x1.6e2561a6cd21830183c87ae1761354b0p0,
+    0x1.c463abeccb2bbp2
+  },
+  { // Entry 902
+    -0x1.6e2561a6cd21830183c87ae1761354b0p0,
+    -0x1.c463abeccb2bbp2
+  },
+  { // Entry 903
+    0x1.6e2561a6cd218442fdb91d5f05a99ap0,
+    0x1.c463abeccb2bcp2
+  },
+  { // Entry 904
+    -0x1.6e2561a6cd218442fdb91d5f05a99ap0,
+    -0x1.c463abeccb2bcp2
+  },
+  { // Entry 905
+    0x1.71b4100f0956769d1c64ae4d729107a5p0,
+    0x1.f6a7a2955385dp2
+  },
+  { // Entry 906
+    -0x1.71b4100f0956769d1c64ae4d729107a5p0,
+    -0x1.f6a7a2955385dp2
+  },
+  { // Entry 907
+    0x1.71b4100f095677a27b2c03b940d5e613p0,
+    0x1.f6a7a2955385ep2
+  },
+  { // Entry 908
+    -0x1.71b4100f095677a27b2c03b940d5e613p0,
+    -0x1.f6a7a2955385ep2
+  },
+  { // Entry 909
+    0x1.71b4100f095678a7d9f359250f0a64c8p0,
+    0x1.f6a7a2955385fp2
+  },
+  { // Entry 910
+    -0x1.71b4100f095678a7d9f359250f0a64c8p0,
+    -0x1.f6a7a2955385fp2
+  },
+  { // Entry 911
+    0x1.749f96097c7015073733e2e3659a844bp0,
+    0x1.1475cc9eedeffp3
+  },
+  { // Entry 912
+    -0x1.749f96097c7015073733e2e3659a844bp0,
+    -0x1.1475cc9eedeffp3
+  },
+  { // Entry 913
+    0x1.749f96097c7016b86e95ca64b3f1546fp0,
+    0x1.1475cc9eedfp3
+  },
+  { // Entry 914
+    -0x1.749f96097c7016b86e95ca64b3f1546fp0,
+    -0x1.1475cc9eedfp3
+  },
+  { // Entry 915
+    0x1.749f96097c701869a5f7b1e60216a952p0,
+    0x1.1475cc9eedf01p3
+  },
+  { // Entry 916
+    -0x1.749f96097c701869a5f7b1e60216a952p0,
+    -0x1.1475cc9eedf01p3
+  },
+  { // Entry 917
+    0x1.77100abbdfe4f88c42b76a1a44ccb487p0,
+    0x1.2d97c7f3321d1p3
+  },
+  { // Entry 918
+    -0x1.77100abbdfe4f88c42b76a1a44ccb487p0,
+    -0x1.2d97c7f3321d1p3
+  },
+  { // Entry 919
+    0x1.77100abbdfe4f9f90d90533c02b3964ep0,
+    0x1.2d97c7f3321d2p3
+  },
+  { // Entry 920
+    -0x1.77100abbdfe4f9f90d90533c02b3964ep0,
+    -0x1.2d97c7f3321d2p3
+  },
+  { // Entry 921
+    0x1.77100abbdfe4fb65d8693c5dc07431bdp0,
+    0x1.2d97c7f3321d3p3
+  },
+  { // Entry 922
+    -0x1.77100abbdfe4fb65d8693c5dc07431bdp0,
+    -0x1.2d97c7f3321d3p3
+  },
+  { // Entry 923
+    0x1.79216b94b662deb07e2d6de7f1804507p0,
+    0x1.46b9c347764a2p3
+  },
+  { // Entry 924
+    -0x1.79216b94b662deb07e2d6de7f1804507p0,
+    -0x1.46b9c347764a2p3
+  },
+  { // Entry 925
+    0x1.79216b94b662dfe7d5a91b73c06086ebp0,
+    0x1.46b9c347764a3p3
+  },
+  { // Entry 926
+    -0x1.79216b94b662dfe7d5a91b73c06086ebp0,
+    -0x1.46b9c347764a3p3
+  },
+  { // Entry 927
+    0x1.79216b94b662e11f2d24c8ff8f2294b3p0,
+    0x1.46b9c347764a4p3
+  },
+  { // Entry 928
+    -0x1.79216b94b662e11f2d24c8ff8f2294b3p0,
+    -0x1.46b9c347764a4p3
+  },
+  { // Entry 929
+    0x1.7ae7d7e5d1f9ee2a0e89a2289062ad74p0,
+    0x1.5fdbbe9bba774p3
+  },
+  { // Entry 930
+    -0x1.7ae7d7e5d1f9ee2a0e89a2289062ad74p0,
+    -0x1.5fdbbe9bba774p3
+  },
+  { // Entry 931
+    0x1.7ae7d7e5d1f9ef36dc870ed6964fa9dfp0,
+    0x1.5fdbbe9bba775p3
+  },
+  { // Entry 932
+    -0x1.7ae7d7e5d1f9ef36dc870ed6964fa9dfp0,
+    -0x1.5fdbbe9bba775p3
+  },
+  { // Entry 933
+    0x1.7ae7d7e5d1f9f043aa847b849c24674ap0,
+    0x1.5fdbbe9bba776p3
+  },
+  { // Entry 934
+    -0x1.7ae7d7e5d1f9f043aa847b849c24674ap0,
+    -0x1.5fdbbe9bba776p3
+  },
+  { // Entry 935
+    0x1.7c722476319a280dab0b4cf4c187f8abp0,
+    0x1.78fdb9effea45p3
+  },
+  { // Entry 936
+    -0x1.7c722476319a280dab0b4cf4c187f8abp0,
+    -0x1.78fdb9effea45p3
+  },
+  { // Entry 937
+    0x1.7c722476319a28f8131f5d500f0f03e6p0,
+    0x1.78fdb9effea46p3
+  },
+  { // Entry 938
+    -0x1.7c722476319a28f8131f5d500f0f03e6p0,
+    -0x1.78fdb9effea46p3
+  },
+  { // Entry 939
+    0x1.7c722476319a29e27b336dab5c824dedp0,
+    0x1.78fdb9effea47p3
+  },
+  { // Entry 940
+    -0x1.7c722476319a29e27b336dab5c824dedp0,
+    -0x1.78fdb9effea47p3
+  },
+  { // Entry 941
+    0x1.7efc711c97aca34b1628231d4f4fabe2p0,
+    0x1.ab41b09886fe8p3
+  },
+  { // Entry 942
+    -0x1.7efc711c97aca34b1628231d4f4fabe2p0,
+    -0x1.ab41b09886fe8p3
+  },
+  { // Entry 943
+    0x1.7efc711c97aca401df609cab03bab68cp0,
+    0x1.ab41b09886fe9p3
+  },
+  { // Entry 944
+    -0x1.7efc711c97aca401df609cab03bab68cp0,
+    -0x1.ab41b09886fe9p3
+  },
+  { // Entry 945
+    0x1.7efc711c97aca4b8a8991638b818241cp0,
+    0x1.ab41b09886feap3
+  },
+  { // Entry 946
+    -0x1.7efc711c97aca4b8a8991638b818241cp0,
+    -0x1.ab41b09886feap3
+  },
+  { // Entry 947
+    0x1.800bb15ffe80dd150b83506ecafcd897p0,
+    0x1.c463abeccb2bap3
+  },
+  { // Entry 948
+    -0x1.800bb15ffe80dd150b83506ecafcd897p0,
+    -0x1.c463abeccb2bap3
+  },
+  { // Entry 949
+    0x1.800bb15ffe80ddb82f1388a941a8215cp0,
+    0x1.c463abeccb2bbp3
+  },
+  { // Entry 950
+    -0x1.800bb15ffe80ddb82f1388a941a8215cp0,
+    -0x1.c463abeccb2bbp3
+  },
+  { // Entry 951
+    0x1.800bb15ffe80de5b52a3c0e3b847eeaap0,
+    0x1.c463abeccb2bcp3
+  },
+  { // Entry 952
+    -0x1.800bb15ffe80de5b52a3c0e3b847eeaap0,
+    -0x1.c463abeccb2bcp3
+  },
+  { // Entry 953
+    0x1.80fe86b132e8f8618de08cf337993ca3p0,
+    0x1.dd85a7410f58bp3
+  },
+  { // Entry 954
+    -0x1.80fe86b132e8f8618de08cf337993ca3p0,
+    -0x1.dd85a7410f58bp3
+  },
+  { // Entry 955
+    0x1.80fe86b132e8f8f40c19d09e489d38e1p0,
+    0x1.dd85a7410f58cp3
+  },
+  { // Entry 956
+    -0x1.80fe86b132e8f8f40c19d09e489d38e1p0,
+    -0x1.dd85a7410f58cp3
+  },
+  { // Entry 957
+    0x1.80fe86b132e8f9868a53144959976f3cp0,
+    0x1.dd85a7410f58dp3
+  },
+  { // Entry 958
+    -0x1.80fe86b132e8f9868a53144959976f3cp0,
+    -0x1.dd85a7410f58dp3
+  },
+  { // Entry 959
+    0x1.81d92def25f25718c6829a063fb81fd7p0,
+    0x1.f6a7a2955385dp3
+  },
+  { // Entry 960
+    -0x1.81d92def25f25718c6829a063fb81fd7p0,
+    -0x1.f6a7a2955385dp3
+  },
+  { // Entry 961
+    0x1.81d92def25f2579d0b06bd55e5dd10d1p0,
+    0x1.f6a7a2955385ep3
+  },
+  { // Entry 962
+    -0x1.81d92def25f2579d0b06bd55e5dd10d1p0,
+    -0x1.f6a7a2955385ep3
+  },
+  { // Entry 963
+    0x1.81d92def25f258214f8ae0a58bf99edep0,
+    0x1.f6a7a2955385fp3
+  },
+  { // Entry 964
+    -0x1.81d92def25f258214f8ae0a58bf99edep0,
+    -0x1.f6a7a2955385fp3
+  },
+  { // Entry 965
+    0x1.829f16bb7d95108c0eb21238a0c53f5ep0,
+    0x1.07e4cef4cbd96p4
+  },
+  { // Entry 966
+    -0x1.829f16bb7d95108c0eb21238a0c53f5ep0,
+    -0x1.07e4cef4cbd96p4
+  },
+  { // Entry 967
+    0x1.829f16bb7d95117c16ba648f3486d718p0,
+    0x1.07e4cef4cbd97p4
+  },
+  { // Entry 968
+    -0x1.829f16bb7d95117c16ba648f3486d718p0,
+    -0x1.07e4cef4cbd97p4
+  },
+  { // Entry 969
+    0x1.829f16bb7d95126c1ec2b6e5c82b6edep0,
+    0x1.07e4cef4cbd98p4
+  },
+  { // Entry 970
+    -0x1.829f16bb7d95126c1ec2b6e5c82b6edep0,
+    -0x1.07e4cef4cbd98p4
+  },
+  { // Entry 971
+    0x1.835311c4fa5d7c37c557b7a5a3338324p0,
+    0x1.1475cc9eedeffp4
+  },
+  { // Entry 972
+    -0x1.835311c4fa5d7c37c557b7a5a3338324p0,
+    -0x1.1475cc9eedeffp4
+  },
+  { // Entry 973
+    0x1.835311c4fa5d7d128c5fa09cc922483dp0,
+    0x1.1475cc9eedfp4
+  },
+  { // Entry 974
+    -0x1.835311c4fa5d7d128c5fa09cc922483dp0,
+    -0x1.1475cc9eedfp4
+  },
+  { // Entry 975
+    0x1.835311c4fa5d7ded53678993eef7d037p0,
+    0x1.1475cc9eedf01p4
+  },
+  { // Entry 976
+    -0x1.835311c4fa5d7ded53678993eef7d037p0,
+    -0x1.1475cc9eedf01p4
+  },
+  { // Entry 977
+    0x1.83f7731825dc9d8ff5737093bb3540dep0,
+    0x1.2106ca4910068p4
+  },
+  { // Entry 978
+    -0x1.83f7731825dc9d8ff5737093bb3540dep0,
+    -0x1.2106ca4910068p4
+  },
+  { // Entry 979
+    0x1.83f7731825dc9e582ebc020978ee1a95p0,
+    0x1.2106ca4910069p4
+  },
+  { // Entry 980
+    -0x1.83f7731825dc9e582ebc020978ee1a95p0,
+    -0x1.2106ca4910069p4
+  },
+  { // Entry 981
+    0x1.83f7731825dc9f206804937f3690da9bp0,
+    0x1.2106ca491006ap4
+  },
+  { // Entry 982
+    -0x1.83f7731825dc9f206804937f3690da9bp0,
+    -0x1.2106ca491006ap4
+  },
+  { // Entry 983
+    0x1.848e2bec799ece48230ea9b4de60cfb7p0,
+    0x1.2d97c7f3321d1p4
+  },
+  { // Entry 984
+    -0x1.848e2bec799ece48230ea9b4de60cfb7p0,
+    -0x1.2d97c7f3321d1p4
+  },
+  { // Entry 985
+    0x1.848e2bec799ecf0011a08e93bfcbf6bap0,
+    0x1.2d97c7f3321d2p4
+  },
+  { // Entry 986
+    -0x1.848e2bec799ecf0011a08e93bfcbf6bap0,
+    -0x1.2d97c7f3321d2p4
+  },
+  { // Entry 987
+    0x1.848e2bec799ecfb800327372a123a7b7p0,
+    0x1.2d97c7f3321d3p4
+  },
+  { // Entry 988
+    -0x1.848e2bec799ecfb800327372a123a7b7p0,
+    -0x1.2d97c7f3321d3p4
+  },
+  { // Entry 989
+    0x1.8518de4b48e76e411ea1cdeeb59cbf77p0,
+    0x1.3a28c59d54339p4
+  },
+  { // Entry 990
+    -0x1.8518de4b48e76e411ea1cdeeb59cbf77p0,
+    -0x1.3a28c59d54339p4
+  },
+  { // Entry 991
+    0x1.8518de4b48e76eeaab2a58ab739c30cbp0,
+    0x1.3a28c59d5433ap4
+  },
+  { // Entry 992
+    -0x1.8518de4b48e76eeaab2a58ab739c30cbp0,
+    -0x1.3a28c59d5433ap4
+  },
+  { // Entry 993
+    0x1.8518de4b48e76f9437b2e368318a6869p0,
+    0x1.3a28c59d5433bp4
+  },
+  { // Entry 994
+    -0x1.8518de4b48e76f9437b2e368318a6869p0,
+    -0x1.3a28c59d5433bp4
+  },
+  { // Entry 995
+    0x1.8598ec35167127ce203d29cce66b685bp0,
+    0x1.46b9c347764a2p4
+  },
+  { // Entry 996
+    -0x1.8598ec35167127ce203d29cce66b685bp0,
+    -0x1.46b9c347764a2p4
+  },
+  { // Entry 997
+    0x1.8598ec351671286aea010a7cf15304a4p0,
+    0x1.46b9c347764a3p4
+  },
+  { // Entry 998
+    -0x1.8598ec351671286aea010a7cf15304a4p0,
+    -0x1.46b9c347764a3p4
+  },
+  { // Entry 999
+    0x1.8598ec3516712907b3c4eb2cfc2b4f2dp0,
+    0x1.46b9c347764a4p4
+  },
+  { // Entry 1000
+    -0x1.8598ec3516712907b3c4eb2cfc2b4f2dp0,
+    -0x1.46b9c347764a4p4
+  },
+  { // Entry 1001
+    0x1.860f836e59cf533a5f5acd977fb3bd1bp0,
+    0x1.534ac0f19860bp4
+  },
+  { // Entry 1002
+    -0x1.860f836e59cf533a5f5acd977fb3bd1bp0,
+    -0x1.534ac0f19860bp4
+  },
+  { // Entry 1003
+    0x1.860f836e59cf53cbc97c4e327874fe3fp0,
+    0x1.534ac0f19860cp4
+  },
+  { // Entry 1004
+    -0x1.860f836e59cf53cbc97c4e327874fe3fp0,
+    -0x1.534ac0f19860cp4
+  },
+  { // Entry 1005
+    0x1.860f836e59cf545d339dcecd7128903ap0,
+    0x1.534ac0f19860dp4
+  },
+  { // Entry 1006
+    -0x1.860f836e59cf545d339dcecd7128903ap0,
+    -0x1.534ac0f19860dp4
+  },
+  { // Entry 1007
+    0x1.867da6c87b57e8adf8990014ae6c012fp0,
+    0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1008
+    -0x1.867da6c87b57e8adf8990014ae6c012fp0,
+    -0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1009
+    0x1.867da6c87b57e935349724e0cc37b311p0,
+    0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1010
+    -0x1.867da6c87b57e935349724e0cc37b311p0,
+    -0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1011
+    0x1.867da6c87b57e9bc709549ace9f71ee9p0,
+    0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1012
+    -0x1.867da6c87b57e9bc709549ace9f71ee9p0,
+    -0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1013
+    0x1.86e435818151b84fe25834c19a7e2e5fp0,
+    0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1014
+    -0x1.86e435818151b84fe25834c19a7e2e5fp0,
+    -0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1015
+    0x1.86e435818151b8cdf86e6345f58c69fap0,
+    0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1016
+    -0x1.86e435818151b8cdf86e6345f58c69fap0,
+    -0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1017
+    0x1.86e435818151b94c0e8491ca508f98b5p0,
+    0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1018
+    -0x1.86e435818151b94c0e8491ca508f98b5p0,
+    -0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1019
+    0x1.8743f12bf9fc92a7f65de8d6cd3df59dp0,
+    0x1.78fdb9effea45p4
+  },
+  { // Entry 1020
+    -0x1.8743f12bf9fc92a7f65de8d6cd3df59dp0,
+    -0x1.78fdb9effea45p4
+  },
+  { // Entry 1021
+    0x1.8743f12bf9fc931dcc400e45f1cbfd18p0,
+    0x1.78fdb9effea46p4
+  },
+  { // Entry 1022
+    -0x1.8743f12bf9fc931dcc400e45f1cbfd18p0,
+    -0x1.78fdb9effea46p4
+  },
+  { // Entry 1023
+    0x1.8743f12bf9fc9393a22233b51650089fp0,
+    0x1.78fdb9effea47p4
+  },
+  { // Entry 1024
+    -0x1.8743f12bf9fc9393a22233b51650089fp0,
+    -0x1.78fdb9effea47p4
+  },
+  { // Entry 1025
+    0x1.879d82738cdb0715c7e50907e7a87c80p0,
+    0x1.858eb79a20baep4
+  },
+  { // Entry 1026
+    -0x1.879d82738cdb0715c7e50907e7a87c80p0,
+    -0x1.858eb79a20baep4
+  },
+  { // Entry 1027
+    0x1.879d82738cdb07842634f187eb77dddcp0,
+    0x1.858eb79a20bafp4
+  },
+  { // Entry 1028
+    -0x1.879d82738cdb07842634f187eb77dddcp0,
+    -0x1.858eb79a20bafp4
+  },
+  { // Entry 1029
+    0x1.879d82738cdb07f28484da07ef3e3230p0,
+    0x1.858eb79a20bb0p4
+  },
+  { // Entry 1030
+    -0x1.879d82738cdb07f28484da07ef3e3230p0,
+    -0x1.858eb79a20bb0p4
+  },
+  { // Entry 1031
+    0x1.921fb54442d18467898cc51701b829a2p0,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 1032
+    -0x1.921fb54442d18467898cc51701b829a2p0,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 1033
+    0x1.921fb54442d18467898cc51701b839a2p0,
+    0x1.0p63
+  },
+  { // Entry 1034
+    -0x1.921fb54442d18467898cc51701b839a2p0,
+    -0x1.0p63
+  },
+  { // Entry 1035
+    0x1.921fb54442d18467898cc51701b859a2p0,
+    0x1.0000000000001p63
+  },
+  { // Entry 1036
+    -0x1.921fb54442d18467898cc51701b859a2p0,
+    -0x1.0000000000001p63
+  },
+  { // Entry 1037
+    0x1.921fb52442d18469898befc1ac62e44cp0,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 1038
+    -0x1.921fb52442d18469898befc1ac62e44cp0,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 1039
+    0x1.921fb52442d18469898cefc1ac62e44cp0,
+    0x1.0p27
+  },
+  { // Entry 1040
+    -0x1.921fb52442d18469898cefc1ac62e44cp0,
+    -0x1.0p27
+  },
+  { // Entry 1041
+    0x1.921fb52442d18469898eefc1ac62e44cp0,
+    0x1.0000000000001p27
+  },
+  { // Entry 1042
+    -0x1.921fb52442d18469898eefc1ac62e44cp0,
+    -0x1.0000000000001p27
+  },
+  { // Entry 1043
+    0x1.921fb44442d1846989da1a6c570d8eccp0,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 1044
+    -0x1.921fb44442d1846989da1a6c570d8eccp0,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 1045
+    0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    0x1.0p24
+  },
+  { // Entry 1046
+    -0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    -0x1.0p24
+  },
+  { // Entry 1047
+    0x1.921fb44442d1846989f21a6c570d8eb3p0,
+    0x1.0000000000001p24
+  },
+  { // Entry 1048
+    -0x1.921fb44442d1846989f21a6c570d8eb3p0,
+    -0x1.0000000000001p24
+  },
+  { // Entry 1049
+    0x1.5368c951e9cfc7c24c38fb77a1dfa57cp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 1050
+    -0x1.5368c951e9cfc7c24c38fb77a1dfa57cp0,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 1051
+    0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    0x1.0p2
+  },
+  { // Entry 1052
+    -0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    -0x1.0p2
+  },
+  { // Entry 1053
+    0x1.5368c951e9cfcd67f1dea11d475ac643p0,
+    0x1.0000000000001p2
+  },
+  { // Entry 1054
+    -0x1.5368c951e9cfcd67f1dea11d475ac643p0,
+    -0x1.0000000000001p2
+  },
+  { // Entry 1055
+    0x1.1b6e192ebbe443939e676eed7053450cp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 1056
+    -0x1.1b6e192ebbe443939e676eed7053450cp0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 1057
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.0p1
+  },
+  { // Entry 1058
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.0p1
+  },
+  { // Entry 1059
+    0x1.1b6e192ebbe44d2d3801088709af6e01p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 1060
+    -0x1.1b6e192ebbe44d2d3801088709af6e01p0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 1061
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1062
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1063
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0
+  },
+  { // Entry 1064
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0
+  },
+  { // Entry 1065
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1066
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1067
+    0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 1068
+    -0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 1069
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p-1
+  },
+  { // Entry 1070
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p-1
+  },
+  { // Entry 1071
+    0x1.dac670561bb510247962257311bcc81bp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 1072
+    -0x1.dac670561bb510247962257311bcc81bp-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 1073
+    0x1.f5b75f92c80dc71bcc802edce02e0a97p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 1074
+    -0x1.f5b75f92c80dc71bcc802edce02e0a97p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 1075
+    0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    0x1.0p-2
+  },
+  { // Entry 1076
+    -0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    -0x1.0p-2
+  },
+  { // Entry 1077
+    0x1.f5b75f92c80df448f9ad5c0a0d45f554p-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 1078
+    -0x1.f5b75f92c80df448f9ad5c0a0d45f554p-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 1079
+    0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 1080
+    -0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 1081
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0p-3
+  },
+  { // Entry 1082
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0p-3
+  },
+  { // Entry 1083
+    0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 1084
+    -0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 1085
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 1086
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 1087
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p-4
+  },
+  { // Entry 1088
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p-4
+  },
+  { // Entry 1089
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 1090
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 1091
+    0x1.ffd55bba97623a88ee3b2ecbb917a476p-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 1092
+    -0x1.ffd55bba97623a88ee3b2ecbb917a476p-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 1093
+    0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    0x1.0p-5
+  },
+  { // Entry 1094
+    -0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    -0x1.0p-5
+  },
+  { // Entry 1095
+    0x1.ffd55bba97626a7cf13a6efbad1a43e7p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 1096
+    -0x1.ffd55bba97626a7cf13a6efbad1a43e7p-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 1097
+    0x1.fff555bbb7299b78cf08ad801befb881p-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 1098
+    -0x1.fff555bbb7299b78cf08ad801befb881p-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 1099
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.0p-6
+  },
+  { // Entry 1100
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.0p-6
+  },
+  { // Entry 1101
+    0x1.fff555bbb729cb75cf38aa804beca0b4p-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 1102
+    -0x1.fff555bbb729cb75cf38aa804beca0b4p-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 1103
+    0x1.fffffff5555545bbbbbcb72972876256p-15,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 1104
+    -0x1.fffffff5555545bbbbbcb72972876256p-15,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 1105
+    0x1.fffffff5555555bbbbbbb72972976256p-15,
+    0x1.0p-14
+  },
+  { // Entry 1106
+    -0x1.fffffff5555555bbbbbbb72972976256p-15,
+    -0x1.0p-14
+  },
+  { // Entry 1107
+    0x1.fffffff5555575bbbbb9b72972b76256p-15,
+    0x1.0000000000001p-14
+  },
+  { // Entry 1108
+    -0x1.fffffff5555575bbbbb9b72972b76256p-15,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 1109
+    0x1.ffffffffffffed5555555555559bbbbbp-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 1110
+    -0x1.ffffffffffffed5555555555559bbbbbp-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 1111
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.0p-27
+  },
+  { // Entry 1112
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.0p-27
+  },
+  { // Entry 1113
+    0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 1114
+    -0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 1115
+    0x1.ffffffffffffeff555555555555655bbp-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 1116
+    -0x1.ffffffffffffeff555555555555655bbp-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 1117
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0p-30
+  },
+  { // Entry 1118
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0p-30
+  },
+  { // Entry 1119
+    0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 1120
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 1121
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1122
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1123
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1124
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1125
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL
+  },
+  { // Entry 1126
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL
+  },
+  { // Entry 1127
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1128
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1129
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 1130
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 1131
+    0x1.433b8a322ddd29618168a21c962c68bcp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 1132
+    -0x1.433b8a322ddd29618168a21c962c68bcp0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 1133
+    0x1.00fe987ed02ff23377d99ec36db533fep0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 1134
+    -0x1.00fe987ed02ff23377d99ec36db533fep0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 1135
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1136
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1137
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0
+  },
+  { // Entry 1138
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0
+  },
+  { // Entry 1139
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1140
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1141
+    0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 1142
+    -0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 1143
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 1144
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1145
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1146
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1147
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1148
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1149
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1150
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1151
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 1152
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 1153
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1154
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1155
+    0.0,
+    0.0
+  },
+  { // Entry 1156
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/atanf_intel_data.h b/tests/math_data/atanf_intel_data.h
new file mode 100644
index 0000000..85f9962
--- /dev/null
+++ b/tests/math_data/atanf_intel_data.h
@@ -0,0 +1,4350 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_atanf_intel_data[] = {
+  { // Entry 0
+    -0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    -0x1.00e0p-1
+  },
+  { // Entry 1
+    0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    0x1.00e0p-1
+  },
+  { // Entry 2
+    -0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    -0x1.01b8p0
+  },
+  { // Entry 3
+    0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    0x1.01b8p0
+  },
+  { // Entry 4
+    -0x1.93e6bcfcbf2868bf3d227ad52cc06775p-1,
+    -0x1.01c89ep0
+  },
+  { // Entry 5
+    0x1.93e6bcfcbf2868bf3d227ad52cc06775p-1,
+    0x1.01c89ep0
+  },
+  { // Entry 6
+    -0x1.e4353f004481a69e0d97136cd8302508p-2,
+    -0x1.05ec48p-1
+  },
+  { // Entry 7
+    0x1.e4353f004481a69e0d97136cd8302508p-2,
+    0x1.05ec48p-1
+  },
+  { // Entry 8
+    -0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    -0x1.06p0
+  },
+  { // Entry 9
+    0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    0x1.06p0
+  },
+  { // Entry 10
+    -0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    -0x1.065c78p-1
+  },
+  { // Entry 11
+    0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    0x1.065c78p-1
+  },
+  { // Entry 12
+    -0x1.fd08daffe290e806775f8df4ed63331fp-2,
+    -0x1.15c8e2p-1
+  },
+  { // Entry 13
+    0x1.fd08daffe290e806775f8df4ed63331fp-2,
+    0x1.15c8e2p-1
+  },
+  { // Entry 14
+    -0x1.12d0910000acd3796043ce397dc0aaf0p-1,
+    -0x1.30a612p-1
+  },
+  { // Entry 15
+    0x1.12d0910000acd3796043ce397dc0aaf0p-1,
+    0x1.30a612p-1
+  },
+  { // Entry 16
+    -0x1.8501defc40a94bd69a326f6f4efc3cabp0,
+    -0x1.3801p4
+  },
+  { // Entry 17
+    0x1.8501defc40a94bd69a326f6f4efc3cabp0,
+    0x1.3801p4
+  },
+  { // Entry 18
+    -0x1.1dbfdb002aafa34d56d4efdeb875d7ccp-1,
+    -0x1.3fa5d0p-1
+  },
+  { // Entry 19
+    0x1.1dbfdb002aafa34d56d4efdeb875d7ccp-1,
+    0x1.3fa5d0p-1
+  },
+  { // Entry 20
+    -0x1.91c7f6fffff6a5eef58d32a20cb76586p0,
+    -0x1.7573fep9
+  },
+  { // Entry 21
+    0x1.91c7f6fffff6a5eef58d32a20cb76586p0,
+    0x1.7573fep9
+  },
+  { // Entry 22
+    -0x1.f31d35b81259f5f45badc8b774241b15p-1,
+    -0x1.79743ep0
+  },
+  { // Entry 23
+    0x1.f31d35b81259f5f45badc8b774241b15p-1,
+    0x1.79743ep0
+  },
+  { // Entry 24
+    -0x1.f54b76ff8c8f4020ccc4dfba5f1dcfc4p-1,
+    -0x1.7cefc8p0
+  },
+  { // Entry 25
+    0x1.f54b76ff8c8f4020ccc4dfba5f1dcfc4p-1,
+    0x1.7cefc8p0
+  },
+  { // Entry 26
+    -0x1.921fa2ffefea1a475fc6364331e98c0fp0,
+    -0x1.c07630p19
+  },
+  { // Entry 27
+    0x1.921fa2ffefea1a475fc6364331e98c0fp0,
+    0x1.c07630p19
+  },
+  { // Entry 28
+    -0x1.c8d37cfff9732aae565e96c9ab1ae3p-4,
+    -0x1.cabad0p-4
+  },
+  { // Entry 29
+    0x1.c8d37cfff9732aae565e96c9ab1ae3p-4,
+    0x1.cabad0p-4
+  },
+  { // Entry 30
+    -0x1.8455816cd8b17910d5fb42c54a7a3f6ap-1,
+    -0x1.e52326p-1
+  },
+  { // Entry 31
+    0x1.8455816cd8b17910d5fb42c54a7a3f6ap-1,
+    0x1.e52326p-1
+  },
+  { // Entry 32
+    -0x1.87ce6ca38f66951f7d176d27e4cc7114p-1,
+    -0x1.ebc518p-1
+  },
+  { // Entry 33
+    0x1.87ce6ca38f66951f7d176d27e4cc7114p-1,
+    0x1.ebc518p-1
+  },
+  { // Entry 34
+    0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    0x1.p-5
+  },
+  { // Entry 35
+    -0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    -0x1.p-5
+  },
+  { // Entry 36
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-4
+  },
+  { // Entry 37
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 38
+    0x1.ff5632fb474b2bdff859ee6421a12d48p-5,
+    0x1.00003cp-4
+  },
+  { // Entry 39
+    -0x1.ff5632fb474b2bdff859ee6421a12d48p-5,
+    -0x1.00003cp-4
+  },
+  { // Entry 40
+    0x1.9220654406519246dee218750f6118e0p-1,
+    0x1.0000b0p0
+  },
+  { // Entry 41
+    -0x1.9220654406519246dee218750f6118e0p-1,
+    -0x1.0000b0p0
+  },
+  { // Entry 42
+    0x1.f5b8c8fc218568d2548c390de7a3dfcep-3,
+    0x1.0000c0p-2
+  },
+  { // Entry 43
+    -0x1.f5b8c8fc218568d2548c390de7a3dfcep-3,
+    -0x1.0000c0p-2
+  },
+  { // Entry 44
+    0x1.fd64d4fccffaeeedba9c9564a6730d18p-4,
+    0x1.0004a8p-3
+  },
+  { // Entry 45
+    -0x1.fd64d4fccffaeeedba9c9564a6730d18p-4,
+    -0x1.0004a8p-3
+  },
+  { // Entry 46
+    0x1.9227b5244326d9bed87bdeb00908aeb7p-1,
+    0x1.0008p0
+  },
+  { // Entry 47
+    -0x1.9227b5244326d9bed87bdeb00908aeb7p-1,
+    -0x1.0008p0
+  },
+  { // Entry 48
+    0x1.922b76ff245e6de6345559ddb2fcf536p-1,
+    0x1.000bc2p0
+  },
+  { // Entry 49
+    -0x1.922b76ff245e6de6345559ddb2fcf536p-1,
+    -0x1.000bc2p0
+  },
+  { // Entry 50
+    0x1.922b82fe9701aeaffb73a1443c0c83d0p-1,
+    0x1.000bcep0
+  },
+  { // Entry 51
+    -0x1.922b82fe9701aeaffb73a1443c0c83d0p-1,
+    -0x1.000bcep0
+  },
+  { // Entry 52
+    0x1.923faf44d816daa54d425d8045e2887dp-1,
+    0x1.001ffcp0
+  },
+  { // Entry 53
+    -0x1.923faf44d816daa54d425d8045e2887dp-1,
+    -0x1.001ffcp0
+  },
+  { // Entry 54
+    0x1.fe2484fd31d3cf098219a2af1d986eedp-4,
+    0x1.0066p-3
+  },
+  { // Entry 55
+    -0x1.fe2484fd31d3cf098219a2af1d986eedp-4,
+    -0x1.0066p-3
+  },
+  { // Entry 56
+    0x1.92939b003b069b3e275950af80cd63fcp-1,
+    0x1.0074p0
+  },
+  { // Entry 57
+    -0x1.92939b003b069b3e275950af80cd63fcp-1,
+    -0x1.0074p0
+  },
+  { // Entry 58
+    0x1.1b9d3b002159e2945b595dab6488de5bp0,
+    0x1.0076p1
+  },
+  { // Entry 59
+    -0x1.1b9d3b002159e2945b595dab6488de5bp0,
+    -0x1.0076p1
+  },
+  { // Entry 60
+    0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    0x1.00e0p-1
+  },
+  { // Entry 61
+    -0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    -0x1.00e0p-1
+  },
+  { // Entry 62
+    0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    0x1.01b8p0
+  },
+  { // Entry 63
+    -0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    -0x1.01b8p0
+  },
+  { // Entry 64
+    0x1.94167efccbc0fa6d4577f69f61e031d2p-1,
+    0x1.01f8bap0
+  },
+  { // Entry 65
+    -0x1.94167efccbc0fa6d4577f69f61e031d2p-1,
+    -0x1.01f8bap0
+  },
+  { // Entry 66
+    0x1.9672428abad4ced3d0a6e349e9bf2b3ep-1,
+    0x1.045cp0
+  },
+  { // Entry 67
+    -0x1.9672428abad4ced3d0a6e349e9bf2b3ep-1,
+    -0x1.045cp0
+  },
+  { // Entry 68
+    0x1.fe8abeff0d857adea735e07cdc25f45cp-3,
+    0x1.04b198p-2
+  },
+  { // Entry 69
+    -0x1.fe8abeff0d857adea735e07cdc25f45cp-3,
+    -0x1.04b198p-2
+  },
+  { // Entry 70
+    0x1.e3ee99003632acbd63018dcd998b0a66p-2,
+    0x1.05bfb8p-1
+  },
+  { // Entry 71
+    -0x1.e3ee99003632acbd63018dcd998b0a66p-2,
+    -0x1.05bfb8p-1
+  },
+  { // Entry 72
+    0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    0x1.06p0
+  },
+  { // Entry 73
+    -0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    -0x1.06p0
+  },
+  { // Entry 74
+    0x1.e4c00f0040fd5558135d221fc95d855ep-2,
+    0x1.0643e0p-1
+  },
+  { // Entry 75
+    -0x1.e4c00f0040fd5558135d221fc95d855ep-2,
+    -0x1.0643e0p-1
+  },
+  { // Entry 76
+    0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    0x1.065c78p-1
+  },
+  { // Entry 77
+    -0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    -0x1.065c78p-1
+  },
+  { // Entry 78
+    0x1.067fe90007689d48fb39791c0a809723p-9,
+    0x1.0680p-9
+  },
+  { // Entry 79
+    -0x1.067fe90007689d48fb39791c0a809723p-9,
+    -0x1.0680p-9
+  },
+  { // Entry 80
+    0x1.e5f6450041f31d7a1b1ffc6626e3a3a9p-2,
+    0x1.0707ccp-1
+  },
+  { // Entry 81
+    -0x1.e5f6450041f31d7a1b1ffc6626e3a3a9p-2,
+    -0x1.0707ccp-1
+  },
+  { // Entry 82
+    0x1.9a000a935bd8e2b2823be1b99de9aa6dp-1,
+    0x1.08p0
+  },
+  { // Entry 83
+    -0x1.9a000a935bd8e2b2823be1b99de9aa6dp-1,
+    -0x1.08p0
+  },
+  { // Entry 84
+    0x1.e7e095003c972c47c7b484d1174ef8f1p-2,
+    0x1.083df4p-1
+  },
+  { // Entry 85
+    -0x1.e7e095003c972c47c7b484d1174ef8f1p-2,
+    -0x1.083df4p-1
+  },
+  { // Entry 86
+    0x1.9b95d2027f3b51c408badd232447fca7p-1,
+    0x1.09a4p0
+  },
+  { // Entry 87
+    -0x1.9b95d2027f3b51c408badd232447fca7p-1,
+    -0x1.09a4p0
+  },
+  { // Entry 88
+    0x1.9bf2349c2fe1915b2ba951f4d90c2346p-1,
+    0x1.0a04p0
+  },
+  { // Entry 89
+    -0x1.9bf2349c2fe1915b2ba951f4d90c2346p-1,
+    -0x1.0a04p0
+  },
+  { // Entry 90
+    0x1.9c0d202ee6cadb3368d0bc3bc61620f7p-1,
+    0x1.0a20p0
+  },
+  { // Entry 91
+    -0x1.9c0d202ee6cadb3368d0bc3bc61620f7p-1,
+    -0x1.0a20p0
+  },
+  { // Entry 92
+    0x1.9c0e9ebf9ee6f339b8d4eb3e3659c70ep-1,
+    0x1.0a218ep0
+  },
+  { // Entry 93
+    -0x1.9c0e9ebf9ee6f339b8d4eb3e3659c70ep-1,
+    -0x1.0a218ep0
+  },
+  { // Entry 94
+    0x1.9d252e659267619beef68e8773dc6ec3p-1,
+    0x1.0b44p0
+  },
+  { // Entry 95
+    -0x1.9d252e659267619beef68e8773dc6ec3p-1,
+    -0x1.0b44p0
+  },
+  { // Entry 96
+    0x1.ee39fb000821b1a9c00089e135f069d2p-2,
+    0x1.0c4670p-1
+  },
+  { // Entry 97
+    -0x1.ee39fb000821b1a9c00089e135f069d2p-2,
+    -0x1.0c4670p-1
+  },
+  { // Entry 98
+    0x1.eff285034b3ca346fbed2f996a1534f1p-2,
+    0x1.0d5f6ep-1
+  },
+  { // Entry 99
+    -0x1.eff285034b3ca346fbed2f996a1534f1p-2,
+    -0x1.0d5f6ep-1
+  },
+  { // Entry 100
+    0x1.f33837034c37141c6ee6c4c215ebe879p-2,
+    0x1.0f771ep-1
+  },
+  { // Entry 101
+    -0x1.f33837034c37141c6ee6c4c215ebe879p-2,
+    -0x1.0f771ep-1
+  },
+  { // Entry 102
+    0x1.a169ad8725b3aa57831d5cea9cf84a45p-1,
+    0x1.0fc3aep0
+  },
+  { // Entry 103
+    -0x1.a169ad8725b3aa57831d5cea9cf84a45p-1,
+    -0x1.0fc3aep0
+  },
+  { // Entry 104
+    0x1.a199a5013b67a3668024b5fdba537ffbp-1,
+    0x1.0ff6b6p0
+  },
+  { // Entry 105
+    -0x1.a199a5013b67a3668024b5fdba537ffbp-1,
+    -0x1.0ff6b6p0
+  },
+  { // Entry 106
+    0x1.f9ef110001fb3099dbc032baff8a7c9cp-2,
+    0x1.13c8p-1
+  },
+  { // Entry 107
+    -0x1.f9ef110001fb3099dbc032baff8a7c9cp-2,
+    -0x1.13c8p-1
+  },
+  { // Entry 108
+    0x1.fb05f2d09a4dc6b31f91eaed3651aa0fp-2,
+    0x1.147cp-1
+  },
+  { // Entry 109
+    -0x1.fb05f2d09a4dc6b31f91eaed3651aa0fp-2,
+    -0x1.147cp-1
+  },
+  { // Entry 110
+    0x1.166210ff1f27419bd56d7ad58a532203p-4,
+    0x1.16d0p-4
+  },
+  { // Entry 111
+    -0x1.166210ff1f27419bd56d7ad58a532203p-4,
+    -0x1.16d0p-4
+  },
+  { // Entry 112
+    0x1.ff14479ea0d08b305667ea1e6b71efa9p-2,
+    0x1.171cp-1
+  },
+  { // Entry 113
+    -0x1.ff14479ea0d08b305667ea1e6b71efa9p-2,
+    -0x1.171cp-1
+  },
+  { // Entry 114
+    0x1.aa655941c2ed237529659b26a6d40360p-1,
+    0x1.1980p0
+  },
+  { // Entry 115
+    -0x1.aa655941c2ed237529659b26a6d40360p-1,
+    -0x1.1980p0
+  },
+  { // Entry 116
+    0x1.1ac3c9559802914487a1a7e1b563dc42p-4,
+    0x1.1b37p-4
+  },
+  { // Entry 117
+    -0x1.1ac3c9559802914487a1a7e1b563dc42p-4,
+    -0x1.1b37p-4
+  },
+  { // Entry 118
+    0x1.ace31afd63c618792d7f004a5f20bf53p-1,
+    0x1.1c443ep0
+  },
+  { // Entry 119
+    -0x1.ace31afd63c618792d7f004a5f20bf53p-1,
+    -0x1.1c443ep0
+  },
+  { // Entry 120
+    0x1.aefd63ceeeba596e1d377ed9501f9f2dp-1,
+    0x1.1ea0p0
+  },
+  { // Entry 121
+    -0x1.aefd63ceeeba596e1d377ed9501f9f2dp-1,
+    -0x1.1ea0p0
+  },
+  { // Entry 122
+    0x1.31e3ddfffbe9c81c178270bc759875e9p-3,
+    0x1.342f6cp-3
+  },
+  { // Entry 123
+    -0x1.31e3ddfffbe9c81c178270bc759875e9p-3,
+    -0x1.342f6cp-3
+  },
+  { // Entry 124
+    0x1.30f588fffee141782f61de3b913cc344p-2,
+    0x1.3a4e82p-2
+  },
+  { // Entry 125
+    -0x1.30f588fffee141782f61de3b913cc344p-2,
+    -0x1.3a4e82p-2
+  },
+  { // Entry 126
+    0x1.26c384fe95d5e24c9c60adf93f531182p-1,
+    0x1.4c50e8p-1
+  },
+  { // Entry 127
+    -0x1.26c384fe95d5e24c9c60adf93f531182p-1,
+    -0x1.4c50e8p-1
+  },
+  { // Entry 128
+    0x1.e42856fffdaf1e270f502c72bfe272b0p-1,
+    0x1.62b140p0
+  },
+  { // Entry 129
+    -0x1.e42856fffdaf1e270f502c72bfe272b0p-1,
+    -0x1.62b140p0
+  },
+  { // Entry 130
+    0x1.6703fefed06b914b99e3124ca0c2cb58p-2,
+    0x1.767caap-2
+  },
+  { // Entry 131
+    -0x1.6703fefed06b914b99e3124ca0c2cb58p-2,
+    -0x1.767caap-2
+  },
+  { // Entry 132
+    0x1.75cb06fffffebc09be37493223d1436ap-4,
+    0x1.76d58ep-4
+  },
+  { // Entry 133
+    -0x1.75cb06fffffebc09be37493223d1436ap-4,
+    -0x1.76d58ep-4
+  },
+  { // Entry 134
+    0x1.43fdd1a6959aa989f50575cf45455d64p-1,
+    0x1.7780f2p-1
+  },
+  { // Entry 135
+    -0x1.43fdd1a6959aa989f50575cf45455d64p-1,
+    -0x1.7780f2p-1
+  },
+  { // Entry 136
+    0x1.481bba0215fb04f66252d5b8f4a0299ap-1,
+    0x1.7ddf62p-1
+  },
+  { // Entry 137
+    -0x1.481bba0215fb04f66252d5b8f4a0299ap-1,
+    -0x1.7ddf62p-1
+  },
+  { // Entry 138
+    0x1.6f946595578bf7edcadbbe6e816838dap-2,
+    0x1.8039f8p-2
+  },
+  { // Entry 139
+    -0x1.6f946595578bf7edcadbbe6e816838dap-2,
+    -0x1.8039f8p-2
+  },
+  { // Entry 140
+    0x1.6f9d299cc53084feaeb4a89dd538984cp-2,
+    0x1.8043f8p-2
+  },
+  { // Entry 141
+    -0x1.6f9d299cc53084feaeb4a89dd538984cp-2,
+    -0x1.8043f8p-2
+  },
+  { // Entry 142
+    0x1.6fa461634385621a7b4a1f3f39e69e88p-2,
+    0x1.804c34p-2
+  },
+  { // Entry 143
+    -0x1.6fa461634385621a7b4a1f3f39e69e88p-2,
+    -0x1.804c34p-2
+  },
+  { // Entry 144
+    0x1.6fedbe03cf0b00cdb648f3f58822f3c8p-2,
+    0x1.809fe8p-2
+  },
+  { // Entry 145
+    -0x1.6fedbe03cf0b00cdb648f3f58822f3c8p-2,
+    -0x1.809fe8p-2
+  },
+  { // Entry 146
+    0x1.738c297a78e8c603048015fdc8bcf4c9p-2,
+    0x1.84c270p-2
+  },
+  { // Entry 147
+    -0x1.738c297a78e8c603048015fdc8bcf4c9p-2,
+    -0x1.84c270p-2
+  },
+  { // Entry 148
+    0x1.98f0340002c61b1d33f8d1e2c1af5581p-4,
+    0x1.9a4d6ep-4
+  },
+  { // Entry 149
+    -0x1.98f0340002c61b1d33f8d1e2c1af5581p-4,
+    -0x1.9a4d6ep-4
+  },
+  { // Entry 150
+    0x1.9f8b4300038b239eb63e7be822591b5fp-4,
+    0x1.a0f9bcp-4
+  },
+  { // Entry 151
+    -0x1.9f8b4300038b239eb63e7be822591b5fp-4,
+    -0x1.a0f9bcp-4
+  },
+  { // Entry 152
+    0x1.a0fd9d00039a60bddbfddc10b05c56a3p-4,
+    0x1.a26ff0p-4
+  },
+  { // Entry 153
+    -0x1.a0fd9d00039a60bddbfddc10b05c56a3p-4,
+    -0x1.a26ff0p-4
+  },
+  { // Entry 154
+    0x1.a4728900556fc2b8a5a530e3d999b1d7p-4,
+    0x1.a5ee2cp-4
+  },
+  { // Entry 155
+    -0x1.a4728900556fc2b8a5a530e3d999b1d7p-4,
+    -0x1.a5ee2cp-4
+  },
+  { // Entry 156
+    0x1.a4728afaf537b57369dd1613673f2757p-4,
+    0x1.a5ee2ep-4
+  },
+  { // Entry 157
+    -0x1.a4728afaf537b57369dd1613673f2757p-4,
+    -0x1.a5ee2ep-4
+  },
+  { // Entry 158
+    0x1.915e19aa098cba6ef178411ea4174f67p-2,
+    0x1.a744d8p-2
+  },
+  { // Entry 159
+    -0x1.915e19aa098cba6ef178411ea4174f67p-2,
+    -0x1.a744d8p-2
+  },
+  { // Entry 160
+    0x1.a95d5effffee8dfa2a44af912ff5c6bdp-4,
+    0x1.aae686p-4
+  },
+  { // Entry 161
+    -0x1.a95d5effffee8dfa2a44af912ff5c6bdp-4,
+    -0x1.aae686p-4
+  },
+  { // Entry 162
+    0x1.b0f897fdea5769efb43b734c6f5d38fdp-4,
+    0x1.b29748p-4
+  },
+  { // Entry 163
+    -0x1.b0f897fdea5769efb43b734c6f5d38fdp-4,
+    -0x1.b29748p-4
+  },
+  { // Entry 164
+    0x1.b6fd68fffbf33784a8e129606c5a3fd4p-4,
+    0x1.b8adb0p-4
+  },
+  { // Entry 165
+    -0x1.b6fd68fffbf33784a8e129606c5a3fd4p-4,
+    -0x1.b8adb0p-4
+  },
+  { // Entry 166
+    0x1.a205342c457ac3a056abcfe7527a4453p-2,
+    0x1.bae68ep-2
+  },
+  { // Entry 167
+    -0x1.a205342c457ac3a056abcfe7527a4453p-2,
+    -0x1.bae68ep-2
+  },
+  { // Entry 168
+    0x1.a64efd063370b5e3a708b2a37ddab223p-2,
+    0x1.c00014p-2
+  },
+  { // Entry 169
+    -0x1.a64efd063370b5e3a708b2a37ddab223p-2,
+    -0x1.c00014p-2
+  },
+  { // Entry 170
+    0x1.ad00f396db03faa7f9d7e3221d4552adp-2,
+    0x1.c7fffep-2
+  },
+  { // Entry 171
+    -0x1.ad00f396db03faa7f9d7e3221d4552adp-2,
+    -0x1.c7fffep-2
+  },
+  { // Entry 172
+    0x1.6e6d5d27bd08154a6349dd2d9a311e10p0,
+    0x1.c7fffep2
+  },
+  { // Entry 173
+    -0x1.6e6d5d27bd08154a6349dd2d9a311e10p0,
+    -0x1.c7fffep2
+  },
+  { // Entry 174
+    0x1.769885e484d0999ef07a0c7cc0ce73f5p-1,
+    0x1.cbb484p-1
+  },
+  { // Entry 175
+    -0x1.769885e484d0999ef07a0c7cc0ce73f5p-1,
+    -0x1.cbb484p-1
+  },
+  { // Entry 176
+    0x1.7805f5ed5a7d34cf922043471c74eecfp-1,
+    0x1.ce4a36p-1
+  },
+  { // Entry 177
+    -0x1.7805f5ed5a7d34cf922043471c74eecfp-1,
+    -0x1.ce4a36p-1
+  },
+  { // Entry 178
+    0x1.c85b2ebda13e4f781ea65e5aa1b8b9e1p-3,
+    0x1.d00ffep-3
+  },
+  { // Entry 179
+    -0x1.c85b2ebda13e4f781ea65e5aa1b8b9e1p-3,
+    -0x1.d00ffep-3
+  },
+  { // Entry 180
+    0x1.c8df373eebdbd7d2983d9c074687b3b1p-3,
+    0x1.d09ad0p-3
+  },
+  { // Entry 181
+    -0x1.c8df373eebdbd7d2983d9c074687b3b1p-3,
+    -0x1.d09ad0p-3
+  },
+  { // Entry 182
+    0x1.8108f7001b7ce9d26ea2a770acd41044p0,
+    0x1.deaa38p3
+  },
+  { // Entry 183
+    -0x1.8108f7001b7ce9d26ea2a770acd41044p0,
+    -0x1.deaa38p3
+  },
+  { // Entry 184
+    0x1.82d6b687d8692e9aefc611be6b1d44a8p-1,
+    0x1.e24eaep-1
+  },
+  { // Entry 185
+    -0x1.82d6b687d8692e9aefc611be6b1d44a8p-1,
+    -0x1.e24eaep-1
+  },
+  { // Entry 186
+    0x1.921fb5011d0bff02f51322a08f435689p0,
+    0x1.e7fffep25
+  },
+  { // Entry 187
+    -0x1.921fb5011d0bff02f51322a08f435689p0,
+    -0x1.e7fffep25
+  },
+  { // Entry 188
+    0x1.8755f7204b35fedd69304c014ba9193ap-1,
+    0x1.eaddb6p-1
+  },
+  { // Entry 189
+    -0x1.8755f7204b35fedd69304c014ba9193ap-1,
+    -0x1.eaddb6p-1
+  },
+  { // Entry 190
+    0x1.921facfffe4d525869adf36453ac0045p0,
+    0x1.ef7bd0p20
+  },
+  { // Entry 191
+    -0x1.921facfffe4d525869adf36453ac0045p0,
+    -0x1.ef7bd0p20
+  },
+  { // Entry 192
+    0x1.f14041fffc6f93742ff15942783907eep-4,
+    0x1.f3b552p-4
+  },
+  { // Entry 193
+    -0x1.f14041fffc6f93742ff15942783907eep-4,
+    -0x1.f3b552p-4
+  },
+  { // Entry 194
+    0x1.f4bb0afed7559483e5805dd4879465bcp-6,
+    0x1.f4e2f8p-6
+  },
+  { // Entry 195
+    -0x1.f4bb0afed7559483e5805dd4879465bcp-6,
+    -0x1.f4e2f8p-6
+  },
+  { // Entry 196
+    0x1.d45aeb02a07ca4b711c2193329425c78p-2,
+    0x1.f7fffep-2
+  },
+  { // Entry 197
+    -0x1.d45aeb02a07ca4b711c2193329425c78p-2,
+    -0x1.f7fffep-2
+  },
+  { // Entry 198
+    0x1.d539bcffd5888dca7deceba8a3f2d041p-2,
+    0x1.f914e8p-2
+  },
+  { // Entry 199
+    -0x1.d539bcffd5888dca7deceba8a3f2d041p-2,
+    -0x1.f914e8p-2
+  },
+  { // Entry 200
+    0x1.8ee84f1478a25b9bfacdabb49fcea6d5p-1,
+    0x1.f99b76p-1
+  },
+  { // Entry 201
+    -0x1.8ee84f1478a25b9bfacdabb49fcea6d5p-1,
+    -0x1.f99b76p-1
+  },
+  { // Entry 202
+    0x1.fadbf0ff486b15e264c02ca39b8e6e46p-6,
+    0x1.fb055ap-6
+  },
+  { // Entry 203
+    -0x1.fadbf0ff486b15e264c02ca39b8e6e46p-6,
+    -0x1.fb055ap-6
+  },
+  { // Entry 204
+    0x1.9044df034b8d943327bee5c633b3f31cp-1,
+    0x1.fc4dc0p-1
+  },
+  { // Entry 205
+    -0x1.9044df034b8d943327bee5c633b3f31cp-1,
+    -0x1.fc4dc0p-1
+  },
+  { // Entry 206
+    0x1.921f74fffa03e701accc9d1ee3bd2f43p0,
+    0x1.fddffep17
+  },
+  { // Entry 207
+    -0x1.921f74fffa03e701accc9d1ee3bd2f43p0,
+    -0x1.fddffep17
+  },
+  { // Entry 208
+    0x1.91af9bc0400e0e21fb44692a41829c5dp-1,
+    0x1.ff1ffep-1
+  },
+  { // Entry 209
+    -0x1.91af9bc0400e0e21fb44692a41829c5dp-1,
+    -0x1.ff1ffep-1
+  },
+  { // Entry 210
+    0x1.91bfa241a2bf1c8f33e7aee3a38362fap-1,
+    0x1.ff3ffep-1
+  },
+  { // Entry 211
+    -0x1.91bfa241a2bf1c8f33e7aee3a38362fap-1,
+    -0x1.ff3ffep-1
+  },
+  { // Entry 212
+    0x1.f502a50008dcfa3d1252e8256297aa16p-3,
+    0x1.ff3ffep-3
+  },
+  { // Entry 213
+    -0x1.f502a50008dcfa3d1252e8256297aa16p-3,
+    -0x1.ff3ffep-3
+  },
+  { // Entry 214
+    0x1.1b6c658f57d1e4435c946530e7d0415cp0,
+    0x1.fff77ep0
+  },
+  { // Entry 215
+    -0x1.1b6c658f57d1e4435c946530e7d0415cp0,
+    -0x1.fff77ep0
+  },
+  { // Entry 216
+    0x1.f5b0a8fac8ee3b2a0997552183bbaf86p-3,
+    0x1.fff8dep-3
+  },
+  { // Entry 217
+    -0x1.f5b0a8fac8ee3b2a0997552183bbaf86p-3,
+    -0x1.fff8dep-3
+  },
+  { // Entry 218
+    0x1.f5b0c8fad63b565edaa4205b5787d234p-3,
+    0x1.fff9p-3
+  },
+  { // Entry 219
+    -0x1.f5b0c8fad63b565edaa4205b5787d234p-3,
+    -0x1.fff9p-3
+  },
+  { // Entry 220
+    0x1.ffd048ff42ff02270154618cac768f98p-6,
+    0x1.fffaecp-6
+  },
+  { // Entry 221
+    -0x1.ffd048ff42ff02270154618cac768f98p-6,
+    -0x1.fffaecp-6
+  },
+  { // Entry 222
+    0x1.921de5429e50865c34386a247dc4ee4ep-1,
+    0x1.fffc60p-1
+  },
+  { // Entry 223
+    -0x1.921de5429e50865c34386a247dc4ee4ep-1,
+    -0x1.fffc60p-1
+  },
+  { // Entry 224
+    0x1.921f84443e21041cf1621a6d2e90a3cap-1,
+    0x1.ffff9ep-1
+  },
+  { // Entry 225
+    -0x1.921f84443e21041cf1621a6d2e90a3cap-1,
+    -0x1.ffff9ep-1
+  },
+  { // Entry 226
+    0x1.1b6e0d95213d8e5e8acacf6ee3b5dda1p0,
+    0x1.ffffc6p0
+  },
+  { // Entry 227
+    -0x1.1b6e0d95213d8e5e8acacf6ee3b5dda1p0,
+    -0x1.ffffc6p0
+  },
+  { // Entry 228
+    0x1.5368c551e98fc9a0436ff6aed5a43bfep0,
+    0x1.ffffdep1
+  },
+  { // Entry 229
+    -0x1.5368c551e98fc9a0436ff6aed5a43bfep0,
+    -0x1.ffffdep1
+  },
+  { // Entry 230
+    0x1.1b6e15952230c1a76e364414327ae250p0,
+    0x1.ffffeep0
+  },
+  { // Entry 231
+    -0x1.1b6e15952230c1a76e364414327ae250p0,
+    -0x1.ffffeep0
+  },
+  { // Entry 232
+    0x1.921fb14442c984697ee21a6c570dc22ap-1,
+    0x1.fffff8p-1
+  },
+  { // Entry 233
+    -0x1.921fb14442c984697ee21a6c570dc22ap-1,
+    -0x1.fffff8p-1
+  },
+  { // Entry 234
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 235
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 236
+    0.0,
+    0.0
+  },
+  { // Entry 237
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 238
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 239
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 240
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 241
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 242
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 243
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 244
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 245
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 246
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 247
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 248
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 249
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 250
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 251
+    0x1.999999a89e60d0512d6b0b39bd2a565ap-13,
+    0x1.99999ap-13
+  },
+  { // Entry 252
+    -0x1.999999a89e60d0512d6b0b39bd2a565ap-13,
+    -0x1.99999ap-13
+  },
+  { // Entry 253
+    0x1.999998a27984d3ebeb1c3290cc2c5caap-12,
+    0x1.99999ap-12
+  },
+  { // Entry 254
+    -0x1.999998a27984d3ebeb1c3290cc2c5caap-12,
+    -0x1.99999ap-12
+  },
+  { // Entry 255
+    0x1.333331b22d11b0ccb2bb7ba6f63b4d3cp-11,
+    0x1.333334p-11
+  },
+  { // Entry 256
+    -0x1.333331b22d11b0ccb2bb7ba6f63b4d3cp-11,
+    -0x1.333334p-11
+  },
+  { // Entry 257
+    0x1.99999489e62c7a2256e05c49880d23d9p-11,
+    0x1.99999ap-11
+  },
+  { // Entry 258
+    -0x1.99999489e62c7a2256e05c49880d23d9p-11,
+    -0x1.99999ap-11
+  },
+  { // Entry 259
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.p-10
+  },
+  { // Entry 260
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.p-10
+  },
+  { // Entry 261
+    0x1.33332ac8b4a6505aad1a5539202df4f4p-10,
+    0x1.333334p-10
+  },
+  { // Entry 262
+    -0x1.33332ac8b4a6505aad1a5539202df4f4p-10,
+    -0x1.333334p-10
+  },
+  { // Entry 263
+    0x1.6666595d875d6f587e4d878a7b492f47p-10,
+    0x1.666668p-10
+  },
+  { // Entry 264
+    -0x1.6666595d875d6f587e4d878a7b492f47p-10,
+    -0x1.666668p-10
+  },
+  { // Entry 265
+    0x1.9999862799f2a4104ba8c411863e71f7p-10,
+    0x1.99999cp-10
+  },
+  { // Entry 266
+    -0x1.9999862799f2a4104ba8c411863e71f7p-10,
+    -0x1.99999cp-10
+  },
+  { // Entry 267
+    0x1.ccccace5643276ecd8ffae54b28b87ffp-10,
+    0x1.ccccccp-10
+  },
+  { // Entry 268
+    -0x1.ccccace5643276ecd8ffae54b28b87ffp-10,
+    -0x1.ccccccp-10
+  },
+  { // Entry 269
+    0x1.0664f66f7cfd482cf0ff4582bbeef478p-7,
+    0x1.066666p-7
+  },
+  { // Entry 270
+    -0x1.0664f66f7cfd482cf0ff4582bbeef478p-7,
+    -0x1.066666p-7
+  },
+  { // Entry 271
+    0x1.ccc505948fe7a3b8e0837445c2136897p-7,
+    0x1.ccccccp-7
+  },
+  { // Entry 272
+    -0x1.ccc505948fe7a3b8e0837445c2136897p-7,
+    -0x1.ccccccp-7
+  },
+  { // Entry 273
+    0x1.498e36c4f385d5af3b6b6480a8ebfe14p-6,
+    0x1.499998p-6
+  },
+  { // Entry 274
+    -0x1.498e36c4f385d5af3b6b6480a8ebfe14p-6,
+    -0x1.499998p-6
+  },
+  { // Entry 275
+    0x1.acb3be5be013930205335e91f230ec8bp-6,
+    0x1.acccccp-6
+  },
+  { // Entry 276
+    -0x1.acb3be5be013930205335e91f230ec8bp-6,
+    -0x1.acccccp-6
+  },
+  { // Entry 277
+    0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    0x1.08p-5
+  },
+  { // Entry 278
+    -0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    -0x1.08p-5
+  },
+  { // Entry 279
+    0x1.39726b6fab059b66dd740ae83fb565b7p-5,
+    0x1.39999ap-5
+  },
+  { // Entry 280
+    -0x1.39726b6fab059b66dd740ae83fb565b7p-5,
+    -0x1.39999ap-5
+  },
+  { // Entry 281
+    0x1.6af65a41908039c267674f356f997d4dp-5,
+    0x1.6b3334p-5
+  },
+  { // Entry 282
+    -0x1.6af65a41908039c267674f356f997d4dp-5,
+    -0x1.6b3334p-5
+  },
+  { // Entry 283
+    0x1.9c737ecdb90a7c4f9d8682bc2815635bp-5,
+    0x1.9ccccep-5
+  },
+  { // Entry 284
+    -0x1.9c737ecdb90a7c4f9d8682bc2815635bp-5,
+    -0x1.9ccccep-5
+  },
+  { // Entry 285
+    0x1.cde8ebf5a33a269c5529c53e853ce492p-5,
+    0x1.ce6666p-5
+  },
+  { // Entry 286
+    -0x1.cde8ebf5a33a269c5529c53e853ce492p-5,
+    -0x1.ce6666p-5
+  },
+  { // Entry 287
+    0x1.3359bcc32e58c6de203f8b6c19fa5ff9p-1,
+    0x1.5e7fc4p-1
+  },
+  { // Entry 288
+    -0x1.3359bcc32e58c6de203f8b6c19fa5ff9p-1,
+    -0x1.5e7fc4p-1
+  },
+  { // Entry 289
+    0x1.d5ca705d09beeec558a5b8db2d657192p-1,
+    0x1.4e7fc4p0
+  },
+  { // Entry 290
+    -0x1.d5ca705d09beeec558a5b8db2d657192p-1,
+    -0x1.4e7fc4p0
+  },
+  { // Entry 291
+    0x1.17ac440d8febeb7a1d19a5ae8faa7d7ep0,
+    0x1.edbfa6p0
+  },
+  { // Entry 292
+    -0x1.17ac440d8febeb7a1d19a5ae8faa7d7ep0,
+    -0x1.edbfa6p0
+  },
+  { // Entry 293
+    0x1.3279e84703fc9c8f702a678693102c47p0,
+    0x1.467fc4p1
+  },
+  { // Entry 294
+    -0x1.3279e84703fc9c8f702a678693102c47p0,
+    -0x1.467fc4p1
+  },
+  { // Entry 295
+    0x1.43f64467a5781271582ce61ccc6b0199p0,
+    0x1.961fb4p1
+  },
+  { // Entry 296
+    -0x1.43f64467a5781271582ce61ccc6b0199p0,
+    -0x1.961fb4p1
+  },
+  { // Entry 297
+    0x1.502a1cf082c199f85892b1763efa6c61p0,
+    0x1.e5bfa4p1
+  },
+  { // Entry 298
+    -0x1.502a1cf082c199f85892b1763efa6c61p0,
+    -0x1.e5bfa4p1
+  },
+  { // Entry 299
+    0x1.592066563d61378c65a8ef7d091bdc95p0,
+    0x1.1aafcap2
+  },
+  { // Entry 300
+    -0x1.592066563d61378c65a8ef7d091bdc95p0,
+    -0x1.1aafcap2
+  },
+  { // Entry 301
+    0x1.5ff8e21f712f9ee4424bbc711e1ef6f3p0,
+    0x1.427fc2p2
+  },
+  { // Entry 302
+    -0x1.5ff8e21f712f9ee4424bbc711e1ef6f3p0,
+    -0x1.427fc2p2
+  },
+  { // Entry 303
+    0x1.655d64f377c9e58e727f460133ed97a3p0,
+    0x1.6a4fbap2
+  },
+  { // Entry 304
+    -0x1.655d64f377c9e58e727f460133ed97a3p0,
+    -0x1.6a4fbap2
+  },
+  { // Entry 305
+    0x1.65711d6dd7ca878481fcb2ec4f9f9341p0,
+    0x1.6af2f0p2
+  },
+  { // Entry 306
+    -0x1.65711d6dd7ca878481fcb2ec4f9f9341p0,
+    -0x1.6af2f0p2
+  },
+  { // Entry 307
+    0x1.602a2a92bb3778489bbc165a7d25fb68p0,
+    0x1.43c62ap2
+  },
+  { // Entry 308
+    -0x1.602a2a92bb3778489bbc165a7d25fb68p0,
+    -0x1.43c62ap2
+  },
+  { // Entry 309
+    0x1.597f46a19f06d53bf1df42bfaedc5c4dp0,
+    0x1.1c9964p2
+  },
+  { // Entry 310
+    -0x1.597f46a19f06d53bf1df42bfaedc5c4dp0,
+    -0x1.1c9964p2
+  },
+  { // Entry 311
+    0x1.50d201d4d8188bc950ce239cd4991bb9p0,
+    0x1.ead93cp1
+  },
+  { // Entry 312
+    -0x1.50d201d4d8188bc950ce239cd4991bb9p0,
+    -0x1.ead93cp1
+  },
+  { // Entry 313
+    0x1.45190b163719c828307d6a3d0cf0b54cp0,
+    0x1.9c7fb0p1
+  },
+  { // Entry 314
+    -0x1.45190b163719c828307d6a3d0cf0b54cp0,
+    -0x1.9c7fb0p1
+  },
+  { // Entry 315
+    0x1.34794bb84d2baa02953a0a72b717f0ebp0,
+    0x1.4e2624p1
+  },
+  { // Entry 316
+    -0x1.34794bb84d2baa02953a0a72b717f0ebp0,
+    -0x1.4e2624p1
+  },
+  { // Entry 317
+    0x1.1b59864724a10efac8597e77461bc3f1p0,
+    0x1.ff9932p0
+  },
+  { // Entry 318
+    -0x1.1b59864724a10efac8597e77461bc3f1p0,
+    -0x1.ff9932p0
+  },
+  { // Entry 319
+    0x1.e44c89086d1aecac1cbe2b3941c67a0fp-1,
+    0x1.62e61cp0
+  },
+  { // Entry 320
+    -0x1.e44c89086d1aecac1cbe2b3941c67a0fp-1,
+    -0x1.62e61cp0
+  },
+  { // Entry 321
+    0x1.5150f28aee7aa819cb475b4a85ae7569p-1,
+    0x1.8c662cp-1
+  },
+  { // Entry 322
+    -0x1.5150f28aee7aa819cb475b4a85ae7569p-1,
+    -0x1.8c662cp-1
+  },
+  { // Entry 323
+    -0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 324
+    0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    0x1.a8aa1cp0
+  },
+  { // Entry 325
+    -0x1.021548e71bb3457d648c1924de4f5d65p0,
+    -0x1.95ec8ap0
+  },
+  { // Entry 326
+    0x1.021548e71bb3457d648c1924de4f5d65p0,
+    0x1.95ec8ap0
+  },
+  { // Entry 327
+    -0x1.f92364ca1fa2dabc63ba7f6e8a68d3f6p-1,
+    -0x1.832ef8p0
+  },
+  { // Entry 328
+    0x1.f92364ca1fa2dabc63ba7f6e8a68d3f6p-1,
+    0x1.832ef8p0
+  },
+  { // Entry 329
+    -0x1.ed577ea7517c28cbc891c018438dac11p-1,
+    -0x1.707166p0
+  },
+  { // Entry 330
+    0x1.ed577ea7517c28cbc891c018438dac11p-1,
+    0x1.707166p0
+  },
+  { // Entry 331
+    -0x1.e0b5226ef36d67e005a0eb9cfdb9b51ap-1,
+    -0x1.5db3d4p0
+  },
+  { // Entry 332
+    0x1.e0b5226ef36d67e005a0eb9cfdb9b51ap-1,
+    0x1.5db3d4p0
+  },
+  { // Entry 333
+    -0x1.d3290427f1d17e30a6993fbe96cc1fdfp-1,
+    -0x1.4af642p0
+  },
+  { // Entry 334
+    0x1.d3290427f1d17e30a6993fbe96cc1fdfp-1,
+    0x1.4af642p0
+  },
+  { // Entry 335
+    -0x1.c49e4505cff7e9f58be9c60ef08b794dp-1,
+    -0x1.3838b0p0
+  },
+  { // Entry 336
+    0x1.c49e4505cff7e9f58be9c60ef08b794dp-1,
+    0x1.3838b0p0
+  },
+  { // Entry 337
+    -0x1.b4fe80019a190ceb39c7cce2f0847082p-1,
+    -0x1.257b1ep0
+  },
+  { // Entry 338
+    0x1.b4fe80019a190ceb39c7cce2f0847082p-1,
+    0x1.257b1ep0
+  },
+  { // Entry 339
+    -0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    -0x1.12bd92p0
+  },
+  { // Entry 340
+    0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    0x1.12bd92p0
+  },
+  { // Entry 341
+    -0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 342
+    0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 343
+    -0x1.7b8b3af8b9278dd5c80bf4f386dc5503p-1,
+    -0x1.d4b87cp-1
+  },
+  { // Entry 344
+    0x1.7b8b3af8b9278dd5c80bf4f386dc5503p-1,
+    0x1.d4b87cp-1
+  },
+  { // Entry 345
+    -0x1.6f851d6a4f403a71ef874dcc9ed9d59ap-1,
+    -0x1.bf14bap-1
+  },
+  { // Entry 346
+    0x1.6f851d6a4f403a71ef874dcc9ed9d59ap-1,
+    0x1.bf14bap-1
+  },
+  { // Entry 347
+    -0x1.62fb625437af22ec34ce96b17c5ac9ecp-1,
+    -0x1.a970f8p-1
+  },
+  { // Entry 348
+    0x1.62fb625437af22ec34ce96b17c5ac9ecp-1,
+    0x1.a970f8p-1
+  },
+  { // Entry 349
+    -0x1.55e98421ee9465b922d19e78004b9e96p-1,
+    -0x1.93cd36p-1
+  },
+  { // Entry 350
+    0x1.55e98421ee9465b922d19e78004b9e96p-1,
+    0x1.93cd36p-1
+  },
+  { // Entry 351
+    -0x1.484b4edaf8871846261a76bd33d9f049p-1,
+    -0x1.7e2974p-1
+  },
+  { // Entry 352
+    0x1.484b4edaf8871846261a76bd33d9f049p-1,
+    0x1.7e2974p-1
+  },
+  { // Entry 353
+    -0x1.3a1cfde1e590471ac2ff5eefe745a249p-1,
+    -0x1.6885b2p-1
+  },
+  { // Entry 354
+    0x1.3a1cfde1e590471ac2ff5eefe745a249p-1,
+    0x1.6885b2p-1
+  },
+  { // Entry 355
+    -0x1.2b5b5dbe8467930df24be6b9046ddfaep-1,
+    -0x1.52e1f0p-1
+  },
+  { // Entry 356
+    0x1.2b5b5dbe8467930df24be6b9046ddfaep-1,
+    0x1.52e1f0p-1
+  },
+  { // Entry 357
+    -0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 358
+    0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 359
+    -0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 360
+    0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    0x1.0a0b02p-1
+  },
+  { // Entry 361
+    -0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 362
+    0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 363
+    -0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 364
+    0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 365
+    -0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 366
+    0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    0x1.62b958p-2
+  },
+  { // Entry 367
+    -0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 368
+    0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    0x1.279a74p-2
+  },
+  { // Entry 369
+    -0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 370
+    0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 371
+    -0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 372
+    0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 373
+    -0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 374
+    0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 375
+    -0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 376
+    0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 377
+    0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 378
+    -0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 379
+    0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 380
+    -0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 381
+    0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 382
+    -0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 383
+    0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 384
+    -0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 385
+    0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    0x1.279a74p-2
+  },
+  { // Entry 386
+    -0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 387
+    0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    0x1.62b958p-2
+  },
+  { // Entry 388
+    -0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 389
+    0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 390
+    -0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 391
+    0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 392
+    -0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 393
+    0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    0x1.0a0b02p-1
+  },
+  { // Entry 394
+    -0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 395
+    0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 396
+    -0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 397
+    0x1.2b5b634ea20bdc86ee2a005916e6440ap-1,
+    0x1.52e1f8p-1
+  },
+  { // Entry 398
+    -0x1.2b5b634ea20bdc86ee2a005916e6440ap-1,
+    -0x1.52e1f8p-1
+  },
+  { // Entry 399
+    0x1.3a1d033b0b8af99ba311a5b2b61923fdp-1,
+    0x1.6885bap-1
+  },
+  { // Entry 400
+    -0x1.3a1d033b0b8af99ba311a5b2b61923fdp-1,
+    -0x1.6885bap-1
+  },
+  { // Entry 401
+    0x1.484b53fe3670095a8de580bd37b09834p-1,
+    0x1.7e297cp-1
+  },
+  { // Entry 402
+    -0x1.484b53fe3670095a8de580bd37b09834p-1,
+    -0x1.7e297cp-1
+  },
+  { // Entry 403
+    0x1.55e989109067d04fb47f38831112284ep-1,
+    0x1.93cd3ep-1
+  },
+  { // Entry 404
+    -0x1.55e989109067d04fb47f38831112284ep-1,
+    -0x1.93cd3ep-1
+  },
+  { // Entry 405
+    0x1.62fb670fb893cf191d38ab2f1067b2dep-1,
+    0x1.a971p-1
+  },
+  { // Entry 406
+    -0x1.62fb670fb893cf191d38ab2f1067b2dep-1,
+    -0x1.a971p-1
+  },
+  { // Entry 407
+    0x1.6f8521f44dc815420fa612edb64cbde6p-1,
+    0x1.bf14c2p-1
+  },
+  { // Entry 408
+    -0x1.6f8521f44dc815420fa612edb64cbde6p-1,
+    -0x1.bf14c2p-1
+  },
+  { // Entry 409
+    0x1.7b8b3f52ed1004e7b2fde26964f1ce72p-1,
+    0x1.d4b884p-1
+  },
+  { // Entry 410
+    -0x1.7b8b3f52ed1004e7b2fde26964f1ce72p-1,
+    -0x1.d4b884p-1
+  },
+  { // Entry 411
+    0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 412
+    -0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 413
+    0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    0x1.12bd92p0
+  },
+  { // Entry 414
+    -0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    -0x1.12bd92p0
+  },
+  { // Entry 415
+    0x1.b4fe853106c1ee9ed92061a86abea8fbp-1,
+    0x1.257b24p0
+  },
+  { // Entry 416
+    -0x1.b4fe853106c1ee9ed92061a86abea8fbp-1,
+    -0x1.257b24p0
+  },
+  { // Entry 417
+    0x1.c49e49d8ce799df605c0c3754f12c804p-1,
+    0x1.3838b6p0
+  },
+  { // Entry 418
+    -0x1.c49e49d8ce799df605c0c3754f12c804p-1,
+    -0x1.3838b6p0
+  },
+  { // Entry 419
+    0x1.d32908a5e902e2f9d1bdd644edec4fecp-1,
+    0x1.4af648p0
+  },
+  { // Entry 420
+    -0x1.d32908a5e902e2f9d1bdd644edec4fecp-1,
+    -0x1.4af648p0
+  },
+  { // Entry 421
+    0x1.e0b5269ed18eb6e8f1b485483f950e69p-1,
+    0x1.5db3dap0
+  },
+  { // Entry 422
+    -0x1.e0b5269ed18eb6e8f1b485483f950e69p-1,
+    -0x1.5db3dap0
+  },
+  { // Entry 423
+    0x1.ed57828f84cacdec44b29eaeb9138ae7p-1,
+    0x1.70716cp0
+  },
+  { // Entry 424
+    -0x1.ed57828f84cacdec44b29eaeb9138ae7p-1,
+    -0x1.70716cp0
+  },
+  { // Entry 425
+    0x1.f9236870954c3910ae46db78e8dab4a1p-1,
+    0x1.832efep0
+  },
+  { // Entry 426
+    -0x1.f9236870954c3910ae46db78e8dab4a1p-1,
+    -0x1.832efep0
+  },
+  { // Entry 427
+    0x1.02154a9c2f5c8c14720789b394a8d71ep0,
+    0x1.95ec90p0
+  },
+  { // Entry 428
+    -0x1.02154a9c2f5c8c14720789b394a8d71ep0,
+    -0x1.95ec90p0
+  },
+  { // Entry 429
+    0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    0x1.a8aa1cp0
+  },
+  { // Entry 430
+    -0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 431
+    0x1.96c4c21383607ec90510b32aa175fe13p-1,
+    0x1.04aff8p0
+  },
+  { // Entry 432
+    -0x1.96c4c21383607ec90510b32aa175fe13p-1,
+    -0x1.04aff8p0
+  },
+  { // Entry 433
+    0x1.96c5670707d079f967bde56724a1508cp-1,
+    0x1.04b0a0p0
+  },
+  { // Entry 434
+    -0x1.96c5670707d079f967bde56724a1508cp-1,
+    -0x1.04b0a0p0
+  },
+  { // Entry 435
+    0x1.96c60bfa20055aa638999dba9d5b9ba4p-1,
+    0x1.04b148p0
+  },
+  { // Entry 436
+    -0x1.96c60bfa20055aa638999dba9d5b9ba4p-1,
+    -0x1.04b148p0
+  },
+  { // Entry 437
+    0x1.96c6b0eccbff69175eae7d730f2d63c8p-1,
+    0x1.04b1f0p0
+  },
+  { // Entry 438
+    -0x1.96c6b0eccbff69175eae7d730f2d63c8p-1,
+    -0x1.04b1f0p0
+  },
+  { // Entry 439
+    0x1.96c755df0bbeed94bc0a76fe6f6efe03p-1,
+    0x1.04b298p0
+  },
+  { // Entry 440
+    -0x1.96c755df0bbeed94bc0a76fe6f6efe03p-1,
+    -0x1.04b298p0
+  },
+  { // Entry 441
+    0x1.96c7fad0df4430662dbe23a125fdf4dcp-1,
+    0x1.04b340p0
+  },
+  { // Entry 442
+    -0x1.96c7fad0df4430662dbe23a125fdf4dcp-1,
+    -0x1.04b340p0
+  },
+  { // Entry 443
+    0x1.96c89fc2468f79d38bdc192ed1b15eadp-1,
+    0x1.04b3e8p0
+  },
+  { // Entry 444
+    -0x1.96c89fc2468f79d38bdc192ed1b15eadp-1,
+    -0x1.04b3e8p0
+  },
+  { // Entry 445
+    0x1.96c944b341a11224a9783fc55088730ap-1,
+    0x1.04b490p0
+  },
+  { // Entry 446
+    -0x1.96c944b341a11224a9783fc55088730ap-1,
+    -0x1.04b490p0
+  },
+  { // Entry 447
+    0x1.96c9e5b678ff391c2d3fa2849c0a25d4p-1,
+    0x1.04b534p0
+  },
+  { // Entry 448
+    -0x1.96c9e5b678ff391c2d3fa2849c0a25d4p-1,
+    -0x1.04b534p0
+  },
+  { // Entry 449
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 450
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 451
+    0.0,
+    0.0
+  },
+  { // Entry 452
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 453
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 454
+    0x1.0c1521c014d01f8a9ddecc36f1430940p-1,
+    0x1.279a72p-1
+  },
+  { // Entry 455
+    -0x1.0c1521c014d01f8a9ddecc36f1430940p-1,
+    -0x1.279a72p-1
+  },
+  { // Entry 456
+    0x1.0c15234014d0ffa236d9926a680fd817p-1,
+    0x1.279a74p-1
+  },
+  { // Entry 457
+    -0x1.0c15234014d0ffa236d9926a680fd817p-1,
+    -0x1.279a74p-1
+  },
+  { // Entry 458
+    0x1.0c1524c014d0932c0cf0350674c305cap-1,
+    0x1.279a76p-1
+  },
+  { // Entry 459
+    -0x1.0c1524c014d0932c0cf0350674c305cap-1,
+    -0x1.279a76p-1
+  },
+  { // Entry 460
+    0x1.0c1522e17602fe431351c1c08ae51ff7p0,
+    0x1.bb67acp0
+  },
+  { // Entry 461
+    -0x1.0c1522e17602fe431351c1c08ae51ff7p0,
+    -0x1.bb67acp0
+  },
+  { // Entry 462
+    0x1.0c1523617603a6edb72557e634b4b8e0p0,
+    0x1.bb67aep0
+  },
+  { // Entry 463
+    -0x1.0c1523617603a6edb72557e634b4b8e0p0,
+    -0x1.bb67aep0
+  },
+  { // Entry 464
+    0x1.0c1523e1760371e48330a6db47968a93p0,
+    0x1.bb67b0p0
+  },
+  { // Entry 465
+    -0x1.0c1523e1760371e48330a6db47968a93p0,
+    -0x1.bb67b0p0
+  },
+  { // Entry 466
+    0x1.a64eea8f03b7833c1b78f9cef282cf0fp-2,
+    0x1.bffffep-2
+  },
+  { // Entry 467
+    -0x1.a64eea8f03b7833c1b78f9cef282cf0fp-2,
+    -0x1.bffffep-2
+  },
+  { // Entry 468
+    0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    0x1.c0p-2
+  },
+  { // Entry 469
+    -0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    -0x1.c0p-2
+  },
+  { // Entry 470
+    0x1.a64eedea80c775ce2723b37d5f27788dp-2,
+    0x1.c00002p-2
+  },
+  { // Entry 471
+    -0x1.a64eedea80c775ce2723b37d5f27788dp-2,
+    -0x1.c00002p-2
+  },
+  { // Entry 472
+    0x1.345f007137aead7202d87adc5e70e53ep-1,
+    0x1.5ffffep-1
+  },
+  { // Entry 473
+    -0x1.345f007137aead7202d87adc5e70e53ep-1,
+    -0x1.5ffffep-1
+  },
+  { // Entry 474
+    0x1.345f01cce37bb440844df1c4409fe779p-1,
+    0x1.60p-1
+  },
+  { // Entry 475
+    -0x1.345f01cce37bb440844df1c4409fe779p-1,
+    -0x1.60p-1
+  },
+  { // Entry 476
+    0x1.345f03288f477671552f403f77363c6ep-1,
+    0x1.600002p-1
+  },
+  { // Entry 477
+    -0x1.345f03288f477671552f403f77363c6ep-1,
+    -0x1.600002p-1
+  },
+  { // Entry 478
+    0x1.bde70d2b5b9861800016d24f37e1f182p-1,
+    0x1.2ffffep0
+  },
+  { // Entry 479
+    -0x1.bde70d2b5b9861800016d24f37e1f182p-1,
+    -0x1.2ffffep0
+  },
+  { // Entry 480
+    0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    0x1.30p0
+  },
+  { // Entry 481
+    -0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    -0x1.30p0
+  },
+  { // Entry 482
+    0x1.bde7107d1861329d77f85e21c5cf991dp-1,
+    0x1.300002p0
+  },
+  { // Entry 483
+    -0x1.bde7107d1861329d77f85e21c5cf991dp-1,
+    -0x1.300002p0
+  },
+  { // Entry 484
+    0x1.2e7571f4ae6251e5ddb771325105495ep0,
+    0x1.37fffep1
+  },
+  { // Entry 485
+    -0x1.2e7571f4ae6251e5ddb771325105495ep0,
+    -0x1.37fffep1
+  },
+  { // Entry 486
+    0x1.2e75728833a54116e3ef7326bd9839p0,
+    0x1.38p1
+  },
+  { // Entry 487
+    -0x1.2e75728833a54116e3ef7326bd9839p0,
+    -0x1.38p1
+  },
+  { // Entry 488
+    0x1.2e75731bb8e691dca788c02332d288f0p0,
+    0x1.380002p1
+  },
+  { // Entry 489
+    -0x1.2e75731bb8e691dca788c02332d288f0p0,
+    -0x1.380002p1
+  },
+  { // Entry 490
+    0x1.0640a805eb5ac8d45f6e626469cfd37cp-4,
+    0x1.069c8cp-4
+  },
+  { // Entry 491
+    -0x1.0640a805eb5ac8d45f6e626469cfd37cp-4,
+    -0x1.069c8cp-4
+  },
+  { // Entry 492
+    0x1.052fabecdb3192006601da57b9f185bbp-3,
+    0x1.069c8cp-3
+  },
+  { // Entry 493
+    -0x1.052fabecdb3192006601da57b9f185bbp-3,
+    -0x1.069c8cp-3
+  },
+  { // Entry 494
+    0x1.852a2293776e3c2cf4b7a237dfbcac9cp-3,
+    0x1.89ead2p-3
+  },
+  { // Entry 495
+    -0x1.852a2293776e3c2cf4b7a237dfbcac9cp-3,
+    -0x1.89ead2p-3
+  },
+  { // Entry 496
+    0x1.01123c6ee78df9fddeaeaac0f651fffdp-2,
+    0x1.069c8cp-2
+  },
+  { // Entry 497
+    -0x1.01123c6ee78df9fddeaeaac0f651fffdp-2,
+    -0x1.069c8cp-2
+  },
+  { // Entry 498
+    0x1.3daa74f913ef98bebdaf6ff5fe9ed93ep-2,
+    0x1.4843b0p-2
+  },
+  { // Entry 499
+    -0x1.3daa74f913ef98bebdaf6ff5fe9ed93ep-2,
+    -0x1.4843b0p-2
+  },
+  { // Entry 500
+    0x1.780c486991daa5d72fdda5ce57d44289p-2,
+    0x1.89ead4p-2
+  },
+  { // Entry 501
+    -0x1.780c486991daa5d72fdda5ce57d44289p-2,
+    -0x1.89ead4p-2
+  },
+  { // Entry 502
+    0x1.affab023fe5819ab1f4cad60051a8345p-2,
+    0x1.cb91f8p-2
+  },
+  { // Entry 503
+    -0x1.affab023fe5819ab1f4cad60051a8345p-2,
+    -0x1.cb91f8p-2
+  },
+  { // Entry 504
+    0x1.e54c83edcc5caaa7a074644b3d2183a2p-2,
+    0x1.069c8ep-1
+  },
+  { // Entry 505
+    -0x1.e54c83edcc5caaa7a074644b3d2183a2p-2,
+    -0x1.069c8ep-1
+  },
+  { // Entry 506
+    0x1.0bf5631d21b59bea6037065bd184c7fdp-1,
+    0x1.277020p-1
+  },
+  { // Entry 507
+    -0x1.0bf5631d21b59bea6037065bd184c7fdp-1,
+    -0x1.277020p-1
+  },
+  { // Entry 508
+    0x1.23e71a9565cd2e40ee391514bdb4e6d5p-1,
+    0x1.4843b2p-1
+  },
+  { // Entry 509
+    -0x1.23e71a9565cd2e40ee391514bdb4e6d5p-1,
+    -0x1.4843b2p-1
+  },
+  { // Entry 510
+    0x1.3a7e42481b7080ceeca06ac375e2af5bp-1,
+    0x1.691744p-1
+  },
+  { // Entry 511
+    -0x1.3a7e42481b7080ceeca06ac375e2af5bp-1,
+    -0x1.691744p-1
+  },
+  { // Entry 512
+    0x1.4fc2c891491b52874ce2931f24e4b619p-1,
+    0x1.89ead6p-1
+  },
+  { // Entry 513
+    -0x1.4fc2c891491b52874ce2931f24e4b619p-1,
+    -0x1.89ead6p-1
+  },
+  { // Entry 514
+    0x1.63c0625215a8fafdacb65eebcc76d090p-1,
+    0x1.aabe68p-1
+  },
+  { // Entry 515
+    -0x1.63c0625215a8fafdacb65eebcc76d090p-1,
+    -0x1.aabe68p-1
+  },
+  { // Entry 516
+    0x1.768565c528c1c7512181ef021a9befe5p-1,
+    0x1.cb91fap-1
+  },
+  { // Entry 517
+    -0x1.768565c528c1c7512181ef021a9befe5p-1,
+    -0x1.cb91fap-1
+  },
+  { // Entry 518
+    0x1.8821d517853a9293101e345ad74f6492p-1,
+    0x1.ec658cp-1
+  },
+  { // Entry 519
+    -0x1.8821d517853a9293101e345ad74f6492p-1,
+    -0x1.ec658cp-1
+  },
+  { // Entry 520
+    0x1.98a6983a1f69e2ba7830d45b9caa2847p-1,
+    0x1.069c8ep0
+  },
+  { // Entry 521
+    -0x1.98a6983a1f69e2ba7830d45b9caa2847p-1,
+    -0x1.069c8ep0
+  },
+  { // Entry 522
+    0x1.a824e7446479e89c28c3c93afc5c60a3p-1,
+    0x1.170656p0
+  },
+  { // Entry 523
+    -0x1.a824e7446479e89c28c3c93afc5c60a3p-1,
+    -0x1.170656p0
+  },
+  { // Entry 524
+    0x1.b6add56905c11877985184b1ee5d353ap-1,
+    0x1.27701ep0
+  },
+  { // Entry 525
+    -0x1.b6add56905c11877985184b1ee5d353ap-1,
+    -0x1.27701ep0
+  },
+  { // Entry 526
+    0x1.c4520084d880847dda367ba8b7a8b21dp-1,
+    0x1.37d9e6p0
+  },
+  { // Entry 527
+    -0x1.c4520084d880847dda367ba8b7a8b21dp-1,
+    -0x1.37d9e6p0
+  },
+  { // Entry 528
+    0x1.d121598ed50fface6324aa1c21a74d23p-1,
+    0x1.4843aep0
+  },
+  { // Entry 529
+    -0x1.d121598ed50fface6324aa1c21a74d23p-1,
+    -0x1.4843aep0
+  },
+  { // Entry 530
+    0x1.dd2b014fde35d165c474a1122825802dp-1,
+    0x1.58ad76p0
+  },
+  { // Entry 531
+    -0x1.dd2b014fde35d165c474a1122825802dp-1,
+    -0x1.58ad76p0
+  },
+  { // Entry 532
+    0x1.e87d3481ac8dd5621a3b3c4f921c44fap-1,
+    0x1.69173ep0
+  },
+  { // Entry 533
+    -0x1.e87d3481ac8dd5621a3b3c4f921c44fap-1,
+    -0x1.69173ep0
+  },
+  { // Entry 534
+    0x1.f32543520ef9c5f5810f6db85d7aaf28p-1,
+    0x1.798106p0
+  },
+  { // Entry 535
+    -0x1.f32543520ef9c5f5810f6db85d7aaf28p-1,
+    -0x1.798106p0
+  },
+  { // Entry 536
+    0x1.fd2f9116e59cee8a040e62d4b5243e1ap-1,
+    0x1.89eacep0
+  },
+  { // Entry 537
+    -0x1.fd2f9116e59cee8a040e62d4b5243e1ap-1,
+    -0x1.89eacep0
+  },
+  { // Entry 538
+    0x1.0353ccda2d644d7938c482410bb91bb1p0,
+    0x1.9a5496p0
+  },
+  { // Entry 539
+    -0x1.0353ccda2d644d7938c482410bb91bb1p0,
+    -0x1.9a5496p0
+  },
+  { // Entry 540
+    0x1.07cbfd6728be1d728e6efaa566962a31p0,
+    0x1.aabe5ep0
+  },
+  { // Entry 541
+    -0x1.07cbfd6728be1d728e6efaa566962a31p0,
+    -0x1.aabe5ep0
+  },
+  { // Entry 542
+    0x1.0c053fac5615bd33ea669091fc7a90bcp0,
+    0x1.bb2826p0
+  },
+  { // Entry 543
+    -0x1.0c053fac5615bd33ea669091fc7a90bcp0,
+    -0x1.bb2826p0
+  },
+  { // Entry 544
+    0x1.1004163d82000593e7df6bce3d8cab10p0,
+    0x1.cb91eep0
+  },
+  { // Entry 545
+    -0x1.1004163d82000593e7df6bce3d8cab10p0,
+    -0x1.cb91eep0
+  },
+  { // Entry 546
+    0x1.13cca783c7bd2088b900b4113ba87852p0,
+    0x1.dbfbb6p0
+  },
+  { // Entry 547
+    -0x1.13cca783c7bd2088b900b4113ba87852p0,
+    -0x1.dbfbb6p0
+  },
+  { // Entry 548
+    0x1.1762c47f210f545ac9a8a7e0241e7259p0,
+    0x1.ec657ep0
+  },
+  { // Entry 549
+    -0x1.1762c47f210f545ac9a8a7e0241e7259p0,
+    -0x1.ec657ep0
+  },
+  { // Entry 550
+    0x1.1ac9ef601c2f97f7b0f0a6d93dd834eep0,
+    0x1.fccf46p0
+  },
+  { // Entry 551
+    -0x1.1ac9ef601c2f97f7b0f0a6d93dd834eep0,
+    -0x1.fccf46p0
+  },
+  { // Entry 552
+    0x1.1e05623dfb4cc3c6baa62e4bc279a9a4p0,
+    0x1.069c88p1
+  },
+  { // Entry 553
+    -0x1.1e05623dfb4cc3c6baa62e4bc279a9a4p0,
+    -0x1.069c88p1
+  },
+  { // Entry 554
+    0x1.21181384588be60732d01848bc71700bp0,
+    0x1.0ed16cp1
+  },
+  { // Entry 555
+    -0x1.21181384588be60732d01848bc71700bp0,
+    -0x1.0ed16cp1
+  },
+  { // Entry 556
+    0x1.2404bde8e2552de3cc50334d78b5dc4ap0,
+    0x1.170650p1
+  },
+  { // Entry 557
+    -0x1.2404bde8e2552de3cc50334d78b5dc4ap0,
+    -0x1.170650p1
+  },
+  { // Entry 558
+    0x1.26cde4061c757738e2ce7f21522b89dap0,
+    0x1.1f3b34p1
+  },
+  { // Entry 559
+    -0x1.26cde4061c757738e2ce7f21522b89dap0,
+    -0x1.1f3b34p1
+  },
+  { // Entry 560
+    0x1.2975d58f5e9bdfe1899ef21d99c49b2bp0,
+    0x1.277018p1
+  },
+  { // Entry 561
+    -0x1.2975d58f5e9bdfe1899ef21d99c49b2bp0,
+    -0x1.277018p1
+  },
+  { // Entry 562
+    0x1.2bfeb3b9bbea83cde56fbf951e871487p0,
+    0x1.2fa4fcp1
+  },
+  { // Entry 563
+    -0x1.2bfeb3b9bbea83cde56fbf951e871487p0,
+    -0x1.2fa4fcp1
+  },
+  { // Entry 564
+    0x1.2e6a7545ba88692a48d56e5581873211p0,
+    0x1.37d9e0p1
+  },
+  { // Entry 565
+    -0x1.2e6a7545ba88692a48d56e5581873211p0,
+    -0x1.37d9e0p1
+  },
+  { // Entry 566
+    0x1.30baea2f60c5a59cc6d2e94130f95768p0,
+    0x1.400ec4p1
+  },
+  { // Entry 567
+    -0x1.30baea2f60c5a59cc6d2e94130f95768p0,
+    -0x1.400ec4p1
+  },
+  { // Entry 568
+    0x1.32f1bf0aa92c8a65a6948643fdcfd255p0,
+    0x1.4843a8p1
+  },
+  { // Entry 569
+    -0x1.32f1bf0aa92c8a65a6948643fdcfd255p0,
+    -0x1.4843a8p1
+  },
+  { // Entry 570
+    0x1.35108012a113c05aaab2d146f1393f5cp0,
+    0x1.50788cp1
+  },
+  { // Entry 571
+    -0x1.35108012a113c05aaab2d146f1393f5cp0,
+    -0x1.50788cp1
+  },
+  { // Entry 572
+    0x1.37189bf16a71201adaf5b8708459828ep0,
+    0x1.58ad70p1
+  },
+  { // Entry 573
+    -0x1.37189bf16a71201adaf5b8708459828ep0,
+    -0x1.58ad70p1
+  },
+  { // Entry 574
+    0x1.390b6647268e4ff7a7fc9ad3d315ca68p0,
+    0x1.60e254p1
+  },
+  { // Entry 575
+    -0x1.390b6647268e4ff7a7fc9ad3d315ca68p0,
+    -0x1.60e254p1
+  },
+  { // Entry 576
+    0x1.3aea19f582cfb2fc7f01e690b9e61c32p0,
+    0x1.691738p1
+  },
+  { // Entry 577
+    -0x1.3aea19f582cfb2fc7f01e690b9e61c32p0,
+    -0x1.691738p1
+  },
+  { // Entry 578
+    0x1.3cb5db3545a9577b9d057ce82dc608c6p0,
+    0x1.714c1cp1
+  },
+  { // Entry 579
+    -0x1.3cb5db3545a9577b9d057ce82dc608c6p0,
+    -0x1.714c1cp1
+  },
+  { // Entry 580
+    0x1.3e6fb97ad7a66ba04c7b01d1646602e1p0,
+    0x1.7981p1
+  },
+  { // Entry 581
+    -0x1.3e6fb97ad7a66ba04c7b01d1646602e1p0,
+    -0x1.7981p1
+  },
+  { // Entry 582
+    0x1.4018b12e603d690dfd89144ca355ad7cp0,
+    0x1.81b5e4p1
+  },
+  { // Entry 583
+    -0x1.4018b12e603d690dfd89144ca355ad7cp0,
+    -0x1.81b5e4p1
+  },
+  { // Entry 584
+    0x1.41b1ad3bab8b579c71ceb89cb23a4191p0,
+    0x1.89eac8p1
+  },
+  { // Entry 585
+    -0x1.41b1ad3bab8b579c71ceb89cb23a4191p0,
+    -0x1.89eac8p1
+  },
+  { // Entry 586
+    -0x1.6807a9ecb61e7179d47b86a3d7d89614p0,
+    -0x1.81b5eep2
+  },
+  { // Entry 587
+    0x1.6807a9ecb61e7179d47b86a3d7d89614p0,
+    0x1.81b5eep2
+  },
+  { // Entry 588
+    -0x1.6631e1e590c8943bb980827585841401p0,
+    -0x1.714c26p2
+  },
+  { // Entry 589
+    0x1.6631e1e590c8943bb980827585841401p0,
+    0x1.714c26p2
+  },
+  { // Entry 590
+    -0x1.6431bbdbbb23b05a6294690cc8fe4afbp0,
+    -0x1.60e25ep2
+  },
+  { // Entry 591
+    0x1.6431bbdbbb23b05a6294690cc8fe4afbp0,
+    0x1.60e25ep2
+  },
+  { // Entry 592
+    -0x1.620149ba05b3abd7c744898b395ff078p0,
+    -0x1.507896p2
+  },
+  { // Entry 593
+    0x1.620149ba05b3abd7c744898b395ff078p0,
+    0x1.507896p2
+  },
+  { // Entry 594
+    -0x1.5f99784c16ae6ade09784989de90f9cep0,
+    -0x1.400ecep2
+  },
+  { // Entry 595
+    0x1.5f99784c16ae6ade09784989de90f9cep0,
+    0x1.400ecep2
+  },
+  { // Entry 596
+    -0x1.5cf1c615f954a1c183fa9df874538ee9p0,
+    -0x1.2fa506p2
+  },
+  { // Entry 597
+    0x1.5cf1c615f954a1c183fa9df874538ee9p0,
+    0x1.2fa506p2
+  },
+  { // Entry 598
+    -0x1.59ffe38b71898ed7998b335085e65964p0,
+    -0x1.1f3b3ep2
+  },
+  { // Entry 599
+    0x1.59ffe38b71898ed7998b335085e65964p0,
+    0x1.1f3b3ep2
+  },
+  { // Entry 600
+    -0x1.56b7343ee6671bf137c3060d6bbac90bp0,
+    -0x1.0ed176p2
+  },
+  { // Entry 601
+    0x1.56b7343ee6671bf137c3060d6bbac90bp0,
+    0x1.0ed176p2
+  },
+  { // Entry 602
+    -0x1.530824ba9228f906cf6fbbb114073212p0,
+    -0x1.fccf5ap1
+  },
+  { // Entry 603
+    0x1.530824ba9228f906cf6fbbb114073212p0,
+    0x1.fccf5ap1
+  },
+  { // Entry 604
+    -0x1.4edf449b38ca3a22476f62c7349bb773p0,
+    -0x1.dbfbc8p1
+  },
+  { // Entry 605
+    0x1.4edf449b38ca3a22476f62c7349bb773p0,
+    0x1.dbfbc8p1
+  },
+  { // Entry 606
+    -0x1.4a2408f508131a351e75bd65a563180ap0,
+    -0x1.bb2836p1
+  },
+  { // Entry 607
+    0x1.4a2408f508131a351e75bd65a563180ap0,
+    0x1.bb2836p1
+  },
+  { // Entry 608
+    -0x1.44b712953f85f723e8b9348c9f600a8cp0,
+    -0x1.9a54a4p1
+  },
+  { // Entry 609
+    0x1.44b712953f85f723e8b9348c9f600a8cp0,
+    0x1.9a54a4p1
+  },
+  { // Entry 610
+    -0x1.3e6fbd3122418ea0ac307a2ed17c0d28p0,
+    -0x1.798112p1
+  },
+  { // Entry 611
+    0x1.3e6fbd3122418ea0ac307a2ed17c0d28p0,
+    0x1.798112p1
+  },
+  { // Entry 612
+    -0x1.37189fd23f9a7ac18ff4e4c5821e80bfp0,
+    -0x1.58ad80p1
+  },
+  { // Entry 613
+    0x1.37189fd23f9a7ac18ff4e4c5821e80bfp0,
+    0x1.58ad80p1
+  },
+  { // Entry 614
+    -0x1.2e6a794f37529d7b8c78438094df8560p0,
+    -0x1.37d9eep1
+  },
+  { // Entry 615
+    0x1.2e6a794f37529d7b8c78438094df8560p0,
+    0x1.37d9eep1
+  },
+  { // Entry 616
+    -0x1.2404c2150e76f6d23e4a514c77839926p0,
+    -0x1.17065cp1
+  },
+  { // Entry 617
+    0x1.2404c2150e76f6d23e4a514c77839926p0,
+    0x1.17065cp1
+  },
+  { // Entry 618
+    -0x1.1762c92d89f7b516e38b1fadbc7c1725p0,
+    -0x1.ec6594p0
+  },
+  { // Entry 619
+    0x1.1762c92d89f7b516e38b1fadbc7c1725p0,
+    0x1.ec6594p0
+  },
+  { // Entry 620
+    -0x1.07cc022a998cd36350736775629f7411p0,
+    -0x1.aabe70p0
+  },
+  { // Entry 621
+    0x1.07cc022a998cd36350736775629f7411p0,
+    0x1.aabe70p0
+  },
+  { // Entry 622
+    -0x1.e87d3ddf5d974d08f4dd58fe2cb62a75p-1,
+    -0x1.69174cp0
+  },
+  { // Entry 623
+    0x1.e87d3ddf5d974d08f4dd58fe2cb62a75p-1,
+    0x1.69174cp0
+  },
+  { // Entry 624
+    -0x1.b6adddfcb60791bdfa29e43ae237526cp-1,
+    -0x1.277028p0
+  },
+  { // Entry 625
+    0x1.b6adddfcb60791bdfa29e43ae237526cp-1,
+    0x1.277028p0
+  },
+  { // Entry 626
+    -0x1.76856ea18da195176e0ece2cba9470a9p-1,
+    -0x1.cb920ap-1
+  },
+  { // Entry 627
+    0x1.76856ea18da195176e0ece2cba9470a9p-1,
+    0x1.cb920ap-1
+  },
+  { // Entry 628
+    -0x1.23e72757057c5809379a3139ba87791dp-1,
+    -0x1.4843c4p-1
+  },
+  { // Entry 629
+    0x1.23e72757057c5809379a3139ba87791dp-1,
+    0x1.4843c4p-1
+  },
+  { // Entry 630
+    -0x1.780c6b4190a4c02ec686d865d59869c8p-2,
+    -0x1.89eafcp-2
+  },
+  { // Entry 631
+    0x1.780c6b4190a4c02ec686d865d59869c8p-2,
+    0x1.89eafcp-2
+  },
+  { // Entry 632
+    -0x1.052ffe90feb23c1016d89c3f01bc9e1fp-3,
+    -0x1.069ce0p-3
+  },
+  { // Entry 633
+    0x1.052ffe90feb23c1016d89c3f01bc9e1fp-3,
+    0x1.069ce0p-3
+  },
+  { // Entry 634
+    0x1.052f5948b6d5f860bd33815fb4292679p-3,
+    0x1.069c38p-3
+  },
+  { // Entry 635
+    -0x1.052f5948b6d5f860bd33815fb4292679p-3,
+    -0x1.069c38p-3
+  },
+  { // Entry 636
+    0x1.780c22159221d1976cc58c067c712c12p-2,
+    0x1.89eaa8p-2
+  },
+  { // Entry 637
+    -0x1.780c22159221d1976cc58c067c712c12p-2,
+    -0x1.89eaa8p-2
+  },
+  { // Entry 638
+    0x1.23e709933aec019daf9a653afa37bd56p-1,
+    0x1.48439ap-1
+  },
+  { // Entry 639
+    -0x1.23e709933aec019daf9a653afa37bd56p-1,
+    -0x1.48439ap-1
+  },
+  { // Entry 640
+    0x1.7685575f043fc937570fbcd679218a9ep-1,
+    0x1.cb91e0p-1
+  },
+  { // Entry 641
+    -0x1.7685575f043fc937570fbcd679218a9ep-1,
+    -0x1.cb91e0p-1
+  },
+  { // Entry 642
+    0x1.b6adccd55525b9c5503e0cdc8d37e90ep-1,
+    0x1.277014p0
+  },
+  { // Entry 643
+    -0x1.b6adccd55525b9c5503e0cdc8d37e90ep-1,
+    -0x1.277014p0
+  },
+  { // Entry 644
+    0x1.e87d307e1763e6189f33adfb0e8068c9p-1,
+    0x1.691738p0
+  },
+  { // Entry 645
+    -0x1.e87d307e1763e6189f33adfb0e8068c9p-1,
+    -0x1.691738p0
+  },
+  { // Entry 646
+    0x1.07cbfcdfaa6996b12b44434dca3635e9p0,
+    0x1.aabe5cp0
+  },
+  { // Entry 647
+    -0x1.07cbfcdfaa6996b12b44434dca3635e9p0,
+    -0x1.aabe5cp0
+  },
+  { // Entry 648
+    0x1.1762c4ec13567bd7f5f799b650139ef2p0,
+    0x1.ec6580p0
+  },
+  { // Entry 649
+    -0x1.1762c4ec13567bd7f5f799b650139ef2p0,
+    -0x1.ec6580p0
+  },
+  { // Entry 650
+    0x1.2404be9ae9b56a1e7b93aab429a437dcp0,
+    0x1.170652p1
+  },
+  { // Entry 651
+    -0x1.2404be9ae9b56a1e7b93aab429a437dcp0,
+    -0x1.170652p1
+  },
+  { // Entry 652
+    0x1.2e6a766d02ca49766b8c5e064edd330ap0,
+    0x1.37d9e4p1
+  },
+  { // Entry 653
+    -0x1.2e6a766d02ca49766b8c5e064edd330ap0,
+    -0x1.37d9e4p1
+  },
+  { // Entry 654
+    0x1.37189d65ba6a203671b78263ea59150ep0,
+    0x1.58ad76p1
+  },
+  { // Entry 655
+    -0x1.37189d65ba6a203671b78263ea59150ep0,
+    -0x1.58ad76p1
+  },
+  { // Entry 656
+    0x1.3e6fbb2131bc83fb7bb1680528d88125p0,
+    0x1.798108p1
+  },
+  { // Entry 657
+    -0x1.3e6fbb2131bc83fb7bb1680528d88125p0,
+    -0x1.798108p1
+  },
+  { // Entry 658
+    0x1.44b710cf357eefd513350249454692fep0,
+    0x1.9a549ap1
+  },
+  { // Entry 659
+    -0x1.44b710cf357eefd513350249454692fep0,
+    -0x1.9a549ap1
+  },
+  { // Entry 660
+    0x1.4a24076ac744c5d206c4362f0a81c539p0,
+    0x1.bb282cp1
+  },
+  { // Entry 661
+    -0x1.4a24076ac744c5d206c4362f0a81c539p0,
+    -0x1.bb282cp1
+  },
+  { // Entry 662
+    0x1.4edf4341eeb190f38d0f628df7c0f39cp0,
+    0x1.dbfbbep1
+  },
+  { // Entry 663
+    -0x1.4edf4341eeb190f38d0f628df7c0f39cp0,
+    -0x1.dbfbbep1
+  },
+  { // Entry 664
+    0x1.53082389d4de0bf0033c96e02e4ce915p0,
+    0x1.fccf50p1
+  },
+  { // Entry 665
+    -0x1.53082389d4de0bf0033c96e02e4ce915p0,
+    -0x1.fccf50p1
+  },
+  { // Entry 666
+    0x1.56b732f9ebf592c0c94096bc1ed28a6bp0,
+    0x1.0ed170p2
+  },
+  { // Entry 667
+    -0x1.56b732f9ebf592c0c94096bc1ed28a6bp0,
+    -0x1.0ed170p2
+  },
+  { // Entry 668
+    0x1.59ffe268d6801ace03f3d195dcfe7b03p0,
+    0x1.1f3b38p2
+  },
+  { // Entry 669
+    -0x1.59ffe268d6801ace03f3d195dcfe7b03p0,
+    -0x1.1f3b38p2
+  },
+  { // Entry 670
+    0x1.5cf1c510a2c51231c77aeb5bcfdb18f6p0,
+    0x1.2fa5p2
+  },
+  { // Entry 671
+    -0x1.5cf1c510a2c51231c77aeb5bcfdb18f6p0,
+    -0x1.2fa5p2
+  },
+  { // Entry 672
+    0x1.5f99775fdcea19d02889374d890664b5p0,
+    0x1.400ec8p2
+  },
+  { // Entry 673
+    -0x1.5f99775fdcea19d02889374d890664b5p0,
+    -0x1.400ec8p2
+  },
+  { // Entry 674
+    0x1.620148e37eeeed056aad41e79a62c2c1p0,
+    0x1.507890p2
+  },
+  { // Entry 675
+    -0x1.620148e37eeeed056aad41e79a62c2c1p0,
+    -0x1.507890p2
+  },
+  { // Entry 676
+    0x1.6431bb181361216275b0d203a9331c13p0,
+    0x1.60e258p2
+  },
+  { // Entry 677
+    -0x1.6431bb181361216275b0d203a9331c13p0,
+    -0x1.60e258p2
+  },
+  { // Entry 678
+    0x1.6631e1326b64f0282c465af90d9d3bd9p0,
+    0x1.714c20p2
+  },
+  { // Entry 679
+    -0x1.6631e1326b64f0282c465af90d9d3bd9p0,
+    -0x1.714c20p2
+  },
+  { // Entry 680
+    0x1.6807a948166caac881ad676127631903p0,
+    0x1.81b5e8p2
+  },
+  { // Entry 681
+    -0x1.6807a948166caac881ad676127631903p0,
+    -0x1.81b5e8p2
+  },
+  { // Entry 682
+    0x1.ef652bd0a90c724b11a56d2fd671af31p-5,
+    0x1.effffep-5
+  },
+  { // Entry 683
+    -0x1.ef652bd0a90c724b11a56d2fd671af31p-5,
+    -0x1.effffep-5
+  },
+  { // Entry 684
+    0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    0x1.f0p-5
+  },
+  { // Entry 685
+    -0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    -0x1.f0p-5
+  },
+  { // Entry 686
+    0x1.ef652fcceb8f073ec7ec4e0d20bb7bfbp-5,
+    0x1.f00002p-5
+  },
+  { // Entry 687
+    -0x1.ef652fcceb8f073ec7ec4e0d20bb7bfbp-5,
+    -0x1.f00002p-5
+  },
+  { // Entry 688
+    0x1.f57aae2e668fcd953f95c1400b66f69ap-4,
+    0x1.f7fffep-4
+  },
+  { // Entry 689
+    -0x1.f57aae2e668fcd953f95c1400b66f69ap-4,
+    -0x1.f7fffep-4
+  },
+  { // Entry 690
+    0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    0x1.f8p-4
+  },
+  { // Entry 691
+    -0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    -0x1.f8p-4
+  },
+  { // Entry 692
+    0x1.f57ab21f20c21c186f960384371cb174p-4,
+    0x1.f80002p-4
+  },
+  { // Entry 693
+    -0x1.f57ab21f20c21c186f960384371cb174p-4,
+    -0x1.f80002p-4
+  },
+  { // Entry 694
+    0x1.49230059e7c45adb8ec67bfb8e8a656bp-3,
+    0x1.4bfffep-3
+  },
+  { // Entry 695
+    -0x1.49230059e7c45adb8ec67bfb8e8a656bp-3,
+    -0x1.4bfffep-3
+  },
+  { // Entry 696
+    0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    0x1.4cp-3
+  },
+  { // Entry 697
+    -0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    -0x1.4cp-3
+  },
+  { // Entry 698
+    0x1.4923043faf2b9c728ca66011aefa5d95p-3,
+    0x1.4c0002p-3
+  },
+  { // Entry 699
+    -0x1.4923043faf2b9c728ca66011aefa5d95p-3,
+    -0x1.4c0002p-3
+  },
+  { // Entry 700
+    0x1.2a73a5481536bc5af06b6df4531f2c45p-2,
+    0x1.333332p-2
+  },
+  { // Entry 701
+    -0x1.2a73a5481536bc5af06b6df4531f2c45p-2,
+    -0x1.333332p-2
+  },
+  { // Entry 702
+    0x1.2a73a71dcec15ae5ead00add4294e754p-2,
+    0x1.333334p-2
+  },
+  { // Entry 703
+    -0x1.2a73a71dcec15ae5ead00add4294e754p-2,
+    -0x1.333334p-2
+  },
+  { // Entry 704
+    0x1.2a73a8f3884b7828b0c0111255103dc3p-2,
+    0x1.333336p-2
+  },
+  { // Entry 705
+    -0x1.2a73a8f3884b7828b0c0111255103dc3p-2,
+    -0x1.333336p-2
+  },
+  { // Entry 706
+    0x1.2fc480fa0e88570eda20090113e29e36p-1,
+    0x1.594316p-1
+  },
+  { // Entry 707
+    -0x1.2fc480fa0e88570eda20090113e29e36p-1,
+    -0x1.594316p-1
+  },
+  { // Entry 708
+    0x1.2fc4825a02d3f974157fe3c500a7defbp-1,
+    0x1.594318p-1
+  },
+  { // Entry 709
+    -0x1.2fc4825a02d3f974157fe3c500a7defbp-1,
+    -0x1.594318p-1
+  },
+  { // Entry 710
+    0x1.2fc483b9f71e558d99929cc8e5da29dfp-1,
+    0x1.59431ap-1
+  },
+  { // Entry 711
+    -0x1.2fc483b9f71e558d99929cc8e5da29dfp-1,
+    -0x1.59431ap-1
+  },
+  { // Entry 712
+    0x1.538f567a9ef925d9ba9a4231046e7f2cp-1,
+    0x1.8ffffep-1
+  },
+  { // Entry 713
+    -0x1.538f567a9ef925d9ba9a4231046e7f2cp-1,
+    -0x1.8ffffep-1
+  },
+  { // Entry 714
+    0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    0x1.90p-1
+  },
+  { // Entry 715
+    -0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    -0x1.90p-1
+  },
+  { // Entry 716
+    0x1.538f58f681c97cc9bd5a1277e9e2f0fbp-1,
+    0x1.900002p-1
+  },
+  { // Entry 717
+    -0x1.538f58f681c97cc9bd5a1277e9e2f0fbp-1,
+    -0x1.900002p-1
+  },
+  { // Entry 718
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 719
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 720
+    0.0,
+    0.0
+  },
+  { // Entry 721
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 722
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 723
+    0x1.91cd2399d43fabf90187544276a9fdd6p-5,
+    0x1.921fb4p-5
+  },
+  { // Entry 724
+    -0x1.91cd2399d43fabf90187544276a9fdd6p-5,
+    -0x1.921fb4p-5
+  },
+  { // Entry 725
+    0x1.91cd2598992e3959b33089adc931af1bp-5,
+    0x1.921fb6p-5
+  },
+  { // Entry 726
+    -0x1.91cd2598992e3959b33089adc931af1bp-5,
+    -0x1.921fb6p-5
+  },
+  { // Entry 727
+    0x1.91cd27975e1cc39a020e1155956c974ep-5,
+    0x1.921fb8p-5
+  },
+  { // Entry 728
+    -0x1.91cd27975e1cc39a020e1155956c974ep-5,
+    -0x1.921fb8p-5
+  },
+  { // Entry 729
+    0x1.90d6de7dda04008932bb9dc6d6663dffp-4,
+    0x1.921fb4p-4
+  },
+  { // Entry 730
+    -0x1.90d6de7dda04008932bb9dc6d6663dffp-4,
+    -0x1.921fb4p-4
+  },
+  { // Entry 731
+    0x1.90d6e078f6c425534a52900d55c07c08p-4,
+    0x1.921fb6p-4
+  },
+  { // Entry 732
+    -0x1.90d6e078f6c425534a52900d55c07c08p-4,
+    -0x1.921fb6p-4
+  },
+  { // Entry 733
+    0x1.90d6e27413843dc984d6d696c18f157ap-4,
+    0x1.921fb8p-4
+  },
+  { // Entry 734
+    -0x1.90d6e27413843dc984d6d696c18f157ap-4,
+    -0x1.921fb8p-4
+  },
+  { // Entry 735
+    0x1.8d128d765c163bb2a4684b359bc37b4ap-3,
+    0x1.921fb4p-3
+  },
+  { // Entry 736
+    -0x1.8d128d765c163bb2a4684b359bc37b4ap-3,
+    -0x1.921fb4p-3
+  },
+  { // Entry 737
+    0x1.8d128f635a6f85e06f888e0887f9908fp-3,
+    0x1.921fb6p-3
+  },
+  { // Entry 738
+    -0x1.8d128f635a6f85e06f888e0887f9908fp-3,
+    -0x1.921fb6p-3
+  },
+  { // Entry 739
+    0x1.8d12915058c8a173e6b2d7c8cf5f012ap-3,
+    0x1.921fb8p-3
+  },
+  { // Entry 740
+    -0x1.8d12915058c8a173e6b2d7c8cf5f012ap-3,
+    -0x1.921fb8p-3
+  },
+  { // Entry 741
+    0x1.7f2d690b879f26b1634350104478a209p-2,
+    0x1.921fb4p-2
+  },
+  { // Entry 742
+    -0x1.7f2d690b879f26b1634350104478a209p-2,
+    -0x1.921fb4p-2
+  },
+  { // Entry 743
+    0x1.7f2d6ac71f4b19b38cf78bbadec1435ap-2,
+    0x1.921fb6p-2
+  },
+  { // Entry 744
+    -0x1.7f2d6ac71f4b19b38cf78bbadec1435ap-2,
+    -0x1.921fb6p-2
+  },
+  { // Entry 745
+    0x1.7f2d6c82b6f675c92c9dfa635f318ed7p-2,
+    0x1.921fb8p-2
+  },
+  { // Entry 746
+    -0x1.7f2d6c82b6f675c92c9dfa635f318ed7p-2,
+    -0x1.921fb8p-2
+  },
+  { // Entry 747
+    0x1.54e04b3d43589d0cc0bd332c6a822ecfp-1,
+    0x1.921fb4p-1
+  },
+  { // Entry 748
+    -0x1.54e04b3d43589d0cc0bd332c6a822ecfp-1,
+    -0x1.921fb4p-1
+  },
+  { // Entry 749
+    0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 750
+    -0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 751
+    0x1.54e04db697db56ae489f89986a14a1b7p-1,
+    0x1.921fb8p-1
+  },
+  { // Entry 752
+    -0x1.54e04db697db56ae489f89986a14a1b7p-1,
+    -0x1.921fb8p-1
+  },
+  { // Entry 753
+    0x1.00fe98214bd47b0727cef70af68aceeep0,
+    0x1.921fb4p0
+  },
+  { // Entry 754
+    -0x1.00fe98214bd47b0727cef70af68aceeep0,
+    -0x1.921fb4p0
+  },
+  { // Entry 755
+    0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    0x1.921fb6p0
+  },
+  { // Entry 756
+    -0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 757
+    0x1.00fe99489e458fdeaf9be968cab6da63p0,
+    0x1.921fb8p0
+  },
+  { // Entry 758
+    -0x1.00fe99489e458fdeaf9be968cab6da63p0,
+    -0x1.921fb8p0
+  },
+  { // Entry 759
+    0x1.433b89f683ed7fa5817d865f4f40b772p0,
+    0x1.921fb4p1
+  },
+  { // Entry 760
+    -0x1.433b89f683ed7fa5817d865f4f40b772p0,
+    -0x1.921fb4p1
+  },
+  { // Entry 761
+    0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    0x1.921fb6p1
+  },
+  { // Entry 762
+    -0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 763
+    0x1.433b8ab2ee3f565d04344459852fbcf4p0,
+    0x1.921fb8p1
+  },
+  { // Entry 764
+    -0x1.433b8ab2ee3f565d04344459852fbcf4p0,
+    -0x1.921fb8p1
+  },
+  { // Entry 765
+    0x1.69b8152ba44a49cab381a82d3efbf702p0,
+    0x1.921fb4p2
+  },
+  { // Entry 766
+    -0x1.69b8152ba44a49cab381a82d3efbf702p0,
+    -0x1.921fb4p2
+  },
+  { // Entry 767
+    0x1.69b8155e3c934e6ce63a344b2956ab50p0,
+    0x1.921fb6p2
+  },
+  { // Entry 768
+    -0x1.69b8155e3c934e6ce63a344b2956ab50p0,
+    -0x1.921fb6p2
+  },
+  { // Entry 769
+    0x1.69b81590d4dbd567331c0dc4b7fd047bp0,
+    0x1.921fb8p2
+  },
+  { // Entry 770
+    -0x1.69b81590d4dbd567331c0dc4b7fd047bp0,
+    -0x1.921fb8p2
+  },
+  { // Entry 771
+    0x1.7dcb7c4be6b4be644d7db098c68e6e5ep0,
+    0x1.921fb4p3
+  },
+  { // Entry 772
+    -0x1.7dcb7c4be6b4be644d7db098c68e6e5ep0,
+    -0x1.921fb4p3
+  },
+  { // Entry 773
+    0x1.7dcb7c65ad1b3ccb7360f1b9b77bc510p0,
+    0x1.921fb6p3
+  },
+  { // Entry 774
+    -0x1.7dcb7c65ad1b3ccb7360f1b9b77bc510p0,
+    -0x1.921fb6p3
+  },
+  { // Entry 775
+    0x1.7dcb7c7f738179f9a5848bd2f6ea74p0,
+    0x1.921fb8p3
+  },
+  { // Entry 776
+    -0x1.7dcb7c7f738179f9a5848bd2f6ea74p0,
+    -0x1.921fb8p3
+  },
+  { // Entry 777
+    0x1.87f17cf56d5854572d8ed4b6d7629cb7p0,
+    0x1.921fb4p4
+  },
+  { // Entry 778
+    -0x1.87f17cf56d5854572d8ed4b6d7629cb7p0,
+    -0x1.921fb4p4
+  },
+  { // Entry 779
+    0x1.87f17d026030951388edff604c5b31acp0,
+    0x1.921fb6p4
+  },
+  { // Entry 780
+    -0x1.87f17d026030951388edff604c5b31acp0,
+    -0x1.921fb6p4
+  },
+  { // Entry 781
+    0x1.87f17d0f5308b4e40d66884bfda71f16p0,
+    0x1.921fb8p4
+  },
+  { // Entry 782
+    -0x1.87f17d0f5308b4e40d66884bfda71f16p0,
+    -0x1.921fb8p4
+  },
+  { // Entry 783
+    0x1.8d08152ac2c9f80510b67fe8688fe00bp0,
+    0x1.921fb4p5
+  },
+  { // Entry 784
+    -0x1.8d08152ac2c9f80510b67fe8688fe00bp0,
+    -0x1.921fb4p5
+  },
+  { // Entry 785
+    0x1.8d0815313e2db1236b7416aaf31784edp0,
+    0x1.921fb6p5
+  },
+  { // Entry 786
+    -0x1.8d0815313e2db1236b7416aaf31784edp0,
+    -0x1.921fb6p5
+  },
+  { // Entry 787
+    0x1.8d081537b99159c1d87b49089b46259bp0,
+    0x1.921fb8p5
+  },
+  { // Entry 788
+    -0x1.8d081537b99159c1d87b49089b46259bp0,
+    -0x1.921fb8p5
+  },
+  { // Entry 789
+    0x1.8f93d4b57dde1ae888776df959240a29p0,
+    0x1.921fb4p6
+  },
+  { // Entry 790
+    -0x1.8f93d4b57dde1ae888776df959240a29p0,
+    -0x1.921fb4p6
+  },
+  { // Entry 791
+    0x1.8f93d4b8bbcf027a20c8f2f1496ed581p0,
+    0x1.921fb6p6
+  },
+  { // Entry 792
+    -0x1.8f93d4b8bbcf027a20c8f2f1496ed581p0,
+    -0x1.921fb6p6
+  },
+  { // Entry 793
+    0x1.8f93d4bbf9bfe1ca81404ffb114601efp0,
+    0x1.921fb8p6
+  },
+  { // Entry 794
+    -0x1.8f93d4bbf9bfe1ca81404ffb114601efp0,
+    -0x1.921fb8p6
+  },
+  { // Entry 795
+    0x1.90d9c2ec819f17b4d8062df65c79686ep0,
+    0x1.921fb4p7
+  },
+  { // Entry 796
+    -0x1.90d9c2ec819f17b4d8062df65c79686ep0,
+    -0x1.921fb4p7
+  },
+  { // Entry 797
+    0x1.90d9c2ee209f6d9d910babe7f62e7a71p0,
+    0x1.921fb6p7
+  },
+  { // Entry 798
+    -0x1.90d9c2ee209f6d9d910babe7f62e7a71p0,
+    -0x1.921fb6p7
+  },
+  { // Entry 799
+    0x1.90d9c2efbf9fbf6585fe7f879e30cb27p0,
+    0x1.921fb8p7
+  },
+  { // Entry 800
+    -0x1.90d9c2efbf9fbf6585fe7f879e30cb27p0,
+    -0x1.921fb8p7
+  },
+  { // Entry 801
+    0x1.2b5f4a1f186a4f4cce84633d4e88c6e3p0,
+    0x1.2d97c4p1
+  },
+  { // Entry 802
+    -0x1.2b5f4a1f186a4f4cce84633d4e88c6e3p0,
+    -0x1.2d97c4p1
+  },
+  { // Entry 803
+    0x1.2b5f4abb6450cfe394b11d0190b012a2p0,
+    0x1.2d97c6p1
+  },
+  { // Entry 804
+    -0x1.2b5f4abb6450cfe394b11d0190b012a2p0,
+    -0x1.2d97c6p1
+  },
+  { // Entry 805
+    0x1.2b5f4b57b0358ecd5c4ef2cf8eeca8b5p0,
+    0x1.2d97c8p1
+  },
+  { // Entry 806
+    -0x1.2b5f4b57b0358ecd5c4ef2cf8eeca8b5p0,
+    -0x1.2d97c8p1
+  },
+  { // Entry 807
+    0x1.524a69ac739be8aa44819da2c46ddeffp0,
+    0x1.f6a7a0p1
+  },
+  { // Entry 808
+    -0x1.524a69ac739be8aa44819da2c46ddeffp0,
+    -0x1.f6a7a0p1
+  },
+  { // Entry 809
+    0x1.524a69eacf4f30dd7930094c2c5422fap0,
+    0x1.f6a7a2p1
+  },
+  { // Entry 810
+    -0x1.524a69eacf4f30dd7930094c2c5422fap0,
+    -0x1.f6a7a2p1
+  },
+  { // Entry 811
+    0x1.524a6a292b0201c41df76f9856ea793ep0,
+    0x1.f6a7a4p1
+  },
+  { // Entry 812
+    -0x1.524a6a292b0201c41df76f9856ea793ep0,
+    -0x1.f6a7a4p1
+  },
+  { // Entry 813
+    0x1.5c97d2cf4d47c39e1d3362c5c6cb465ep0,
+    0x1.2d97c4p2
+  },
+  { // Entry 814
+    -0x1.5c97d2cf4d47c39e1d3362c5c6cb465ep0,
+    -0x1.2d97c4p2
+  },
+  { // Entry 815
+    0x1.5c97d3278d78828714e1db373c01c428p0,
+    0x1.2d97c6p2
+  },
+  { // Entry 816
+    -0x1.5c97d3278d78828714e1db373c01c428p0,
+    -0x1.2d97c6p2
+  },
+  { // Entry 817
+    0x1.5c97d37fcda822b612cc305acdb3719ap0,
+    0x1.2d97c8p2
+  },
+  { // Entry 818
+    -0x1.5c97d37fcda822b612cc305acdb3719ap0,
+    -0x1.2d97c8p2
+  },
+  { // Entry 819
+    0x1.64102f6fe89978879ec1eb938127f347p0,
+    0x1.5fdbbcp2
+  },
+  { // Entry 820
+    -0x1.64102f6fe89978879ec1eb938127f347p0,
+    -0x1.5fdbbcp2
+  },
+  { // Entry 821
+    0x1.64102fb17ee4bd784c0bc3c4b87b12dbp0,
+    0x1.5fdbbep2
+  },
+  { // Entry 822
+    -0x1.64102fb17ee4bd784c0bc3c4b87b12dbp0,
+    -0x1.5fdbbep2
+  },
+  { // Entry 823
+    0x1.64102ff3152f49a5b25bbbed0e298789p0,
+    0x1.5fdbc0p2
+  },
+  { // Entry 824
+    -0x1.64102ff3152f49a5b25bbbed0e298789p0,
+    -0x1.5fdbc0p2
+  },
+  { // Entry 825
+    0x1.6e256157f08af28f8fbcb2f100b427b2p0,
+    0x1.c463a8p2
+  },
+  { // Entry 826
+    -0x1.6e256157f08af28f8fbcb2f100b427b2p0,
+    -0x1.c463a8p2
+  },
+  { // Entry 827
+    0x1.6e2561801fc98949e471b87dd9e165adp0,
+    0x1.c463aap2
+  },
+  { // Entry 828
+    -0x1.6e2561801fc98949e471b87dd9e165adp0,
+    -0x1.c463aap2
+  },
+  { // Entry 829
+    0x1.6e2561a84f07c6d78f351f778ca48ee1p0,
+    0x1.c463acp2
+  },
+  { // Entry 830
+    -0x1.6e2561a84f07c6d78f351f778ca48ee1p0,
+    -0x1.c463acp2
+  },
+  { // Entry 831
+    0x1.71b40fe4d6264f6dcb5aa93d81eee334p0,
+    0x1.f6a7a0p2
+  },
+  { // Entry 832
+    -0x1.71b40fe4d6264f6dcb5aa93d81eee334p0,
+    -0x1.f6a7a0p2
+  },
+  { // Entry 833
+    0x1.71b4100581ff6df4d0e43adc1c6df394p0,
+    0x1.f6a7a2p2
+  },
+  { // Entry 834
+    -0x1.71b4100581ff6df4d0e43adc1c6df394p0,
+    -0x1.f6a7a2p2
+  },
+  { // Entry 835
+    0x1.71b410262dd84afcf6128b00223864d4p0,
+    0x1.f6a7a4p2
+  },
+  { // Entry 836
+    -0x1.71b410262dd84afcf6128b00223864d4p0,
+    -0x1.f6a7a4p2
+  },
+  { // Entry 837
+    0x1.749f95c28655e27185bdf7611bf6dabap0,
+    0x1.1475cap3
+  },
+  { // Entry 838
+    -0x1.749f95c28655e27185bdf7611bf6dabap0,
+    -0x1.1475cap3
+  },
+  { // Entry 839
+    0x1.749f95f8ad42bfc84cd821638d05272ep0,
+    0x1.1475ccp3
+  },
+  { // Entry 840
+    -0x1.749f95f8ad42bfc84cd821638d05272ep0,
+    -0x1.1475ccp3
+  },
+  { // Entry 841
+    0x1.749f962ed42ed732156103090043fe20p0,
+    0x1.1475cep3
+  },
+  { // Entry 842
+    -0x1.749f962ed42ed732156103090043fe20p0,
+    -0x1.1475cep3
+  },
+  { // Entry 843
+    0x1.77100a61d11bd3683ef7f13e0e2d3714p0,
+    0x1.2d97c4p3
+  },
+  { // Entry 844
+    -0x1.77100a61d11bd3683ef7f13e0e2d3714p0,
+    -0x1.2d97c4p3
+  },
+  { // Entry 845
+    0x1.77100a8f6a77d25e60c8ac6b368ced7cp0,
+    0x1.2d97c6p3
+  },
+  { // Entry 846
+    -0x1.77100a8f6a77d25e60c8ac6b368ced7cp0,
+    -0x1.2d97c6p3
+  },
+  { // Entry 847
+    0x1.77100abd03d3383b200c349a288d0858p0,
+    0x1.2d97c8p3
+  },
+  { // Entry 848
+    -0x1.77100abd03d3383b200c349a288d0858p0,
+    -0x1.2d97c8p3
+  },
+  { // Entry 849
+    0x1.79216b54e7690f5dc60c9f9ad18c2fe4p0,
+    0x1.46b9c0p3
+  },
+  { // Entry 850
+    -0x1.79216b54e7690f5dc60c9f9ad18c2fe4p0,
+    -0x1.46b9c0p3
+  },
+  { // Entry 851
+    0x1.79216b7bd2590ebc8160a2e2288b213cp0,
+    0x1.46b9c2p3
+  },
+  { // Entry 852
+    -0x1.79216b7bd2590ebc8160a2e2288b213cp0,
+    -0x1.46b9c2p3
+  },
+  { // Entry 853
+    0x1.79216ba2bd48954acc47fb24366389dcp0,
+    0x1.46b9c4p3
+  },
+  { // Entry 854
+    -0x1.79216ba2bd48954acc47fb24366389dcp0,
+    -0x1.46b9c4p3
+  },
+  { // Entry 855
+    0x1.7ae7d7b9fff1b8fc1a190cb09ec19212p0,
+    0x1.5fdbbcp3
+  },
+  { // Entry 856
+    -0x1.7ae7d7b9fff1b8fc1a190cb09ec19212p0,
+    -0x1.5fdbbcp3
+  },
+  { // Entry 857
+    0x1.7ae7d7db99b1b48f74a47550dd2775fbp0,
+    0x1.5fdbbep3
+  },
+  { // Entry 858
+    -0x1.7ae7d7db99b1b48f74a47550dd2775fbp0,
+    -0x1.5fdbbep3
+  },
+  { // Entry 859
+    0x1.7ae7d7fd33714f26d256bae7b8da269cp0,
+    0x1.5fdbc0p3
+  },
+  { // Entry 860
+    -0x1.7ae7d7fd33714f26d256bae7b8da269cp0,
+    -0x1.5fdbc0p3
+  },
+  { // Entry 861
+    0x1.7c72243c821084a80ce5911f6e3dea5dp0,
+    0x1.78fdb6p3
+  },
+  { // Entry 862
+    -0x1.7c72243c821084a80ce5911f6e3dea5dp0,
+    -0x1.78fdb6p3
+  },
+  { // Entry 863
+    0x1.7c722459cf137ac258c3b7237604e08ep0,
+    0x1.78fdb8p3
+  },
+  { // Entry 864
+    -0x1.7c722459cf137ac258c3b7237604e08ep0,
+    -0x1.78fdb8p3
+  },
+  { // Entry 865
+    0x1.7c7224771c1621d7d010891cc6cbd91ep0,
+    0x1.78fdbap3
+  },
+  { // Entry 866
+    -0x1.7c7224771c1621d7d010891cc6cbd91ep0,
+    -0x1.78fdbap3
+  },
+  { // Entry 867
+    0x1.7efc70fef0079d0f48b6d9402b26d905p0,
+    0x1.ab41aep3
+  },
+  { // Entry 868
+    -0x1.7efc70fef0079d0f48b6d9402b26d905p0,
+    -0x1.ab41aep3
+  },
+  { // Entry 869
+    0x1.7efc7115c92ed7b4199c4707127cb54bp0,
+    0x1.ab41b0p3
+  },
+  { // Entry 870
+    -0x1.7efc7115c92ed7b4199c4707127cb54bp0,
+    -0x1.ab41b0p3
+  },
+  { // Entry 871
+    0x1.7efc712ca255dbe487b8a2707e7c0319p0,
+    0x1.ab41b2p3
+  },
+  { // Entry 872
+    -0x1.7efc712ca255dbe487b8a2707e7c0319p0,
+    -0x1.ab41b2p3
+  },
+  { // Entry 873
+    0x1.800bb137f9715ad622aff2aea130dce0p0,
+    0x1.c463a8p3
+  },
+  { // Entry 874
+    -0x1.800bb137f9715ad622aff2aea130dce0p0,
+    -0x1.c463a8p3
+  },
+  { // Entry 875
+    0x1.800bb14c5de3a50924516807a2acf3fep0,
+    0x1.c463aap3
+  },
+  { // Entry 876
+    -0x1.800bb14c5de3a50924516807a2acf3fep0,
+    -0x1.c463aap3
+  },
+  { // Entry 877
+    0x1.800bb160c255c14e4e27ff1409d422e3p0,
+    0x1.c463acp3
+  },
+  { // Entry 878
+    -0x1.800bb160c255c14e4e27ff1409d422e3p0,
+    -0x1.c463acp3
+  },
+  { // Entry 879
+    0x1.80fe86936790bcf875c5fe2fb547d565p0,
+    0x1.dd85a4p3
+  },
+  { // Entry 880
+    -0x1.80fe86936790bcf875c5fe2fb547d565p0,
+    -0x1.dd85a4p3
+  },
+  { // Entry 881
+    0x1.80fe86a5b758117d0d5619d06ab27318p0,
+    0x1.dd85a6p3
+  },
+  { // Entry 882
+    -0x1.80fe86a5b758117d0d5619d06ab27318p0,
+    -0x1.dd85a6p3
+  },
+  { // Entry 883
+    0x1.80fe86b8071f3eea18b5b73ff7f2e4a9p0,
+    0x1.dd85a8p3
+  },
+  { // Entry 884
+    -0x1.80fe86b8071f3eea18b5b73ff7f2e4a9p0,
+    -0x1.dd85a8p3
+  },
+  { // Entry 885
+    0x1.81d92dd9caf1328bc6b375143237cb0fp0,
+    0x1.f6a7a0p3
+  },
+  { // Entry 886
+    -0x1.81d92dd9caf1328bc6b375143237cb0fp0,
+    -0x1.f6a7a0p3
+  },
+  { // Entry 887
+    0x1.81d92dea5381d18436c91dc15fbc646dp0,
+    0x1.f6a7a2p3
+  },
+  { // Entry 888
+    -0x1.81d92dea5381d18436c91dc15fbc646dp0,
+    -0x1.f6a7a2p3
+  },
+  { // Entry 889
+    0x1.81d92dfadc124ef0f2477e36e6f68f74p0,
+    0x1.f6a7a4p3
+  },
+  { // Entry 890
+    -0x1.81d92dfadc124ef0f2477e36e6f68f74p0,
+    -0x1.f6a7a4p3
+  },
+  { // Entry 891
+    0x1.829f168f2426e5aaade6af4c5fde890ap0,
+    0x1.07e4ccp4
+  },
+  { // Entry 892
+    -0x1.829f168f2426e5aaade6af4c5fde890ap0,
+    -0x1.07e4ccp4
+  },
+  { // Entry 893
+    0x1.829f16ad2528616b825b97261b82b069p0,
+    0x1.07e4cep4
+  },
+  { // Entry 894
+    -0x1.829f16ad2528616b825b97261b82b069p0,
+    -0x1.07e4cep4
+  },
+  { // Entry 895
+    0x1.829f16cb2629692c853c96842a0be987p0,
+    0x1.07e4d0p4
+  },
+  { // Entry 896
+    -0x1.829f16cb2629692c853c96842a0be987p0,
+    -0x1.07e4d0p4
+  },
+  { // Entry 897
+    0x1.835311a12459455ac82eb15660927ea8p0,
+    0x1.1475cap4
+  },
+  { // Entry 898
+    -0x1.835311a12459455ac82eb15660927ea8p0,
+    -0x1.1475cap4
+  },
+  { // Entry 899
+    0x1.835311bc7d3a944a470489a7e4d79c89p0,
+    0x1.1475ccp4
+  },
+  { // Entry 900
+    -0x1.835311bc7d3a944a470489a7e4d79c89p0,
+    -0x1.1475ccp4
+  },
+  { // Entry 901
+    0x1.835311d7d61b7e454afbda6fc3780f9bp0,
+    0x1.1475cep4
+  },
+  { // Entry 902
+    -0x1.835311d7d61b7e454afbda6fc3780f9bp0,
+    -0x1.1475cep4
+  },
+  { // Entry 903
+    0x1.83f772fb8c656bf286bfb98e1b6c2297p0,
+    0x1.2106c8p4
+  },
+  { // Entry 904
+    -0x1.83f772fb8c656bf286bfb98e1b6c2297p0,
+    -0x1.2106c8p4
+  },
+  { // Entry 905
+    0x1.83f77314938eb6f209e9d6f162ceb218p0,
+    0x1.2106cap4
+  },
+  { // Entry 906
+    -0x1.83f77314938eb6f209e9d6f162ceb218p0,
+    -0x1.2106cap4
+  },
+  { // Entry 907
+    0x1.83f7732d9ab7a98acc60db819db81050p0,
+    0x1.2106ccp4
+  },
+  { // Entry 908
+    -0x1.83f7732d9ab7a98acc60db819db81050p0,
+    -0x1.2106ccp4
+  },
+  { // Entry 909
+    0x1.848e2bbf112b7c2876657a2a86df9912p0,
+    0x1.2d97c4p4
+  },
+  { // Entry 910
+    -0x1.848e2bbf112b7c2876657a2a86df9912p0,
+    -0x1.2d97c4p4
+  },
+  { // Entry 911
+    0x1.848e2bd60efe2b9612b5fc806fd418d9p0,
+    0x1.2d97c6p4
+  },
+  { // Entry 912
+    -0x1.848e2bd60efe2b9612b5fc806fd418d9p0,
+    -0x1.2d97c6p4
+  },
+  { // Entry 913
+    0x1.848e2bed0cd08d2b9a9efc0954153c48p0,
+    0x1.2d97c8p4
+  },
+  { // Entry 914
+    -0x1.848e2bed0cd08d2b9a9efc0954153c48p0,
+    -0x1.2d97c8p4
+  },
+  { // Entry 915
+    0x1.8518de24fb5e23b2ff0cc417b338f410p0,
+    0x1.3a28c2p4
+  },
+  { // Entry 916
+    -0x1.8518de24fb5e23b2ff0cc417b338f410p0,
+    -0x1.3a28c2p4
+  },
+  { // Entry 917
+    0x1.8518de3a2cef8f1d8eb840c195f7aec6p0,
+    0x1.3a28c4p4
+  },
+  { // Entry 918
+    -0x1.8518de3a2cef8f1d8eb840c195f7aec6p0,
+    -0x1.3a28c4p4
+  },
+  { // Entry 919
+    0x1.8518de4f5e80b5a144ccb442286993f2p0,
+    0x1.3a28c6p4
+  },
+  { // Entry 920
+    -0x1.8518de4f5e80b5a144ccb442286993f2p0,
+    -0x1.3a28c6p4
+  },
+  { // Entry 921
+    0x1.8598ec14f4559fb7ce6f97f8b0ce9772p0,
+    0x1.46b9c0p4
+  },
+  { // Entry 922
+    -0x1.8598ec14f4559fb7ce6f97f8b0ce9772p0,
+    -0x1.46b9c0p4
+  },
+  { // Entry 923
+    0x1.8598ec288d8e61a24f31637379503fc5p0,
+    0x1.46b9c2p4
+  },
+  { // Entry 924
+    -0x1.8598ec288d8e61a24f31637379503fc5p0,
+    -0x1.46b9c2p4
+  },
+  { // Entry 925
+    0x1.8598ec3c26c6e645d117b0b4d0b90716p0,
+    0x1.46b9c4p4
+  },
+  { // Entry 926
+    -0x1.8598ec3c26c6e645d117b0b4d0b90716p0,
+    -0x1.46b9c4p4
+  },
+  { // Entry 927
+    0x1.860f835398d37040ddc2d7017bf92099p0,
+    0x1.534abep4
+  },
+  { // Entry 928
+    -0x1.860f835398d37040ddc2d7017bf92099p0,
+    -0x1.534abep4
+  },
+  { // Entry 929
+    0x1.860f8365c617d586a14b44930af2704ap0,
+    0x1.534ac0p4
+  },
+  { // Entry 930
+    -0x1.860f8365c617d586a14b44930af2704ap0,
+    -0x1.534ac0p4
+  },
+  { // Entry 931
+    0x1.860f8377f35c040fc41230db2834a379p0,
+    0x1.534ac2p4
+  },
+  { // Entry 932
+    -0x1.860f8377f35c040fc41230db2834a379p0,
+    -0x1.534ac2p4
+  },
+  { // Entry 933
+    0x1.867da6b26f9ac2fa4c1d70b7532cb6aep0,
+    0x1.5fdbbcp4
+  },
+  { // Entry 934
+    -0x1.867da6b26f9ac2fa4c1d70b7532cb6aep0,
+    -0x1.5fdbbcp4
+  },
+  { // Entry 935
+    0x1.867da6c3571aaf0e97b75fd8102e312ap0,
+    0x1.5fdbbep4
+  },
+  { // Entry 936
+    -0x1.867da6c3571aaf0e97b75fd8102e312ap0,
+    -0x1.5fdbbep4
+  },
+  { // Entry 937
+    0x1.867da6d43e9a6a0ab844221559e0ca4ep0,
+    0x1.5fdbc0p4
+  },
+  { // Entry 938
+    -0x1.867da6d43e9a6a0ab844221559e0ca4ep0,
+    -0x1.5fdbc0p4
+  },
+  { // Entry 939
+    0x1.86e4356f9805898eff739bee09b0eb2bp0,
+    0x1.6c6cbap4
+  },
+  { // Entry 940
+    -0x1.86e4356f9805898eff739bee09b0eb2bp0,
+    -0x1.6c6cbap4
+  },
+  { // Entry 941
+    0x1.86e4357f5ac86b81453a4b9f1ab42ac2p0,
+    0x1.6c6cbcp4
+  },
+  { // Entry 942
+    -0x1.86e4357f5ac86b81453a4b9f1ab42ac2p0,
+    -0x1.6c6cbcp4
+  },
+  { // Entry 943
+    0x1.86e4358f1d8b21400c5273ab23322cc4p0,
+    0x1.6c6cbep4
+  },
+  { // Entry 944
+    -0x1.86e4358f1d8b21400c5273ab23322cc4p0,
+    -0x1.6c6cbep4
+  },
+  { // Entry 945
+    0x1.8743f10efa639eaaf405e83f84a991bbp0,
+    0x1.78fdb6p4
+  },
+  { // Entry 946
+    -0x1.8743f10efa639eaaf405e83f84a991bbp0,
+    -0x1.78fdb6p4
+  },
+  { // Entry 947
+    0x1.8743f11db5201e00fba3693129ceaaadp0,
+    0x1.78fdb8p4
+  },
+  { // Entry 948
+    -0x1.8743f11db5201e00fba3693129ceaaadp0,
+    -0x1.78fdb8p4
+  },
+  { // Entry 949
+    0x1.8743f12c6fdc75672ff29ccd6d6423ccp0,
+    0x1.78fdbap4
+  },
+  { // Entry 950
+    -0x1.8743f12c6fdc75672ff29ccd6d6423ccp0,
+    -0x1.78fdbap4
+  },
+  { // Entry 951
+    0x1.879d825ab3fe49f711b2fa09df2c5726p0,
+    0x1.858eb4p4
+  },
+  { // Entry 952
+    -0x1.879d825ab3fe49f711b2fa09df2c5726p0,
+    -0x1.858eb4p4
+  },
+  { // Entry 953
+    0x1.879d82687fc876212b8475e64de596a4p0,
+    0x1.858eb6p4
+  },
+  { // Entry 954
+    -0x1.879d82687fc876212b8475e64de596a4p0,
+    -0x1.858eb6p4
+  },
+  { // Entry 955
+    0x1.879d82764b927e1728ed144f2db217ebp0,
+    0x1.858eb8p4
+  },
+  { // Entry 956
+    -0x1.879d82764b927e1728ed144f2db217ebp0,
+    -0x1.858eb8p4
+  },
+  { // Entry 957
+    0x1.921fb54442d18467898cc31701b639a2p0,
+    0x1.fffffep62
+  },
+  { // Entry 958
+    -0x1.921fb54442d18467898cc31701b639a2p0,
+    -0x1.fffffep62
+  },
+  { // Entry 959
+    0x1.921fb54442d18467898cc51701b839a2p0,
+    0x1.p63
+  },
+  { // Entry 960
+    -0x1.921fb54442d18467898cc51701b839a2p0,
+    -0x1.p63
+  },
+  { // Entry 961
+    0x1.921fb54442d18467898cc91701b039a2p0,
+    0x1.000002p63
+  },
+  { // Entry 962
+    -0x1.921fb54442d18467898cc91701b039a2p0,
+    -0x1.000002p63
+  },
+  { // Entry 963
+    0x1.921fb52442d16469896cefc18ce2e42dp0,
+    0x1.fffffep26
+  },
+  { // Entry 964
+    -0x1.921fb52442d16469896cefc18ce2e42dp0,
+    -0x1.fffffep26
+  },
+  { // Entry 965
+    0x1.921fb52442d18469898cefc1ac62e44cp0,
+    0x1.p27
+  },
+  { // Entry 966
+    -0x1.921fb52442d18469898cefc1ac62e44cp0,
+    -0x1.p27
+  },
+  { // Entry 967
+    0x1.921fb52442d1c469890cefc2ab62e250p0,
+    0x1.000002p27
+  },
+  { // Entry 968
+    -0x1.921fb52442d1c469890cefc2ab62e250p0,
+    -0x1.000002p27
+  },
+  { // Entry 969
+    0x1.921fb44442d0846988e21a6c570d8fc4p0,
+    0x1.fffffep23
+  },
+  { // Entry 970
+    -0x1.921fb44442d0846988e21a6c570d8fc4p0,
+    -0x1.fffffep23
+  },
+  { // Entry 971
+    0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    0x1.p24
+  },
+  { // Entry 972
+    -0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    -0x1.p24
+  },
+  { // Entry 973
+    0x1.921fb44442d3846985e21a72570d86c4p0,
+    0x1.000002p24
+  },
+  { // Entry 974
+    -0x1.921fb44442d3846985e21a72570d86c4p0,
+    -0x1.000002p24
+  },
+  { // Entry 975
+    0x1.5368c915ad9354b6c80847a9f514bb75p0,
+    0x1.fffffep1
+  },
+  { // Entry 976
+    -0x1.5368c915ad9354b6c80847a9f514bb75p0,
+    -0x1.fffffep1
+  },
+  { // Entry 977
+    0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    0x1.p2
+  },
+  { // Entry 978
+    -0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    -0x1.p2
+  },
+  { // Entry 979
+    0x1.5368c9ca62475f5801ace2839c235895p0,
+    0x1.000002p2
+  },
+  { // Entry 980
+    -0x1.5368c9ca62475f5801ace2839c235895p0,
+    -0x1.000002p2
+  },
+  { // Entry 981
+    0x1.1b6e18c8557d8e74e5d9704acf91aa45p0,
+    0x1.fffffep0
+  },
+  { // Entry 982
+    -0x1.1b6e18c8557d8e74e5d9704acf91aa45p0,
+    -0x1.fffffep0
+  },
+  { // Entry 983
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.p1
+  },
+  { // Entry 984
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.p1
+  },
+  { // Entry 985
+    0x1.1b6e19fb88afcbe58bcd268e23897be3p0,
+    0x1.000002p1
+  },
+  { // Entry 986
+    -0x1.1b6e19fb88afcbe58bcd268e23897be3p0,
+    -0x1.000002p1
+  },
+  { // Entry 987
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 988
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 989
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0
+  },
+  { // Entry 990
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0
+  },
+  { // Entry 991
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p0
+  },
+  { // Entry 992
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p0
+  },
+  { // Entry 993
+    0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 994
+    -0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 995
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p-1
+  },
+  { // Entry 996
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p-1
+  },
+  { // Entry 997
+    0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    0x1.000002p-1
+  },
+  { // Entry 998
+    -0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 999
+    0x1.f5b75db0e62bd7f064e3887809ade7efp-3,
+    0x1.fffffep-3
+  },
+  { // Entry 1000
+    -0x1.f5b75db0e62bd7f064e3887809ade7efp-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 1001
+    0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    0x1.p-2
+  },
+  { // Entry 1002
+    -0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    -0x1.p-2
+  },
+  { // Entry 1003
+    0x1.f5b763568bd1288c4bd4fecdaee28fb5p-3,
+    0x1.000002p-2
+  },
+  { // Entry 1004
+    -0x1.f5b763568bd1288c4bd4fecdaee28fb5p-3,
+    -0x1.000002p-2
+  },
+  { // Entry 1005
+    0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    0x1.fffffep-4
+  },
+  { // Entry 1006
+    -0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 1007
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.p-3
+  },
+  { // Entry 1008
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.p-3
+  },
+  { // Entry 1009
+    0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    0x1.000002p-3
+  },
+  { // Entry 1010
+    -0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    -0x1.000002p-3
+  },
+  { // Entry 1011
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep-5
+  },
+  { // Entry 1012
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 1013
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p-4
+  },
+  { // Entry 1014
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p-4
+  },
+  { // Entry 1015
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-4
+  },
+  { // Entry 1016
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 1017
+    0x1.ffd559bb174252032fa3014c0671336cp-6,
+    0x1.fffffep-6
+  },
+  { // Entry 1018
+    -0x1.ffd559bb174252032fa3014c0671336cp-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 1019
+    0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    0x1.p-5
+  },
+  { // Entry 1020
+    -0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    -0x1.p-5
+  },
+  { // Entry 1021
+    0x1.ffd55fb997a23889edd9fb6b2758a63ep-6,
+    0x1.000002p-5
+  },
+  { // Entry 1022
+    -0x1.ffd55fb997a23889edd9fb6b2758a63ep-6,
+    -0x1.000002p-5
+  },
+  { // Entry 1023
+    0x1.fff553bbd727ab77d118772cd6b96490p-7,
+    0x1.fffffep-7
+  },
+  { // Entry 1024
+    -0x1.fff553bbd727ab77d118772cd6b96490p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 1025
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.p-6
+  },
+  { // Entry 1026
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.p-6
+  },
+  { // Entry 1027
+    0x1.fff559bb772daab7e316976eceda5473p-7,
+    0x1.000002p-6
+  },
+  { // Entry 1028
+    -0x1.fff559bb772daab7e316976eceda5473p-7,
+    -0x1.000002p-6
+  },
+  { // Entry 1029
+    0x1.fffffdf5555575bbbb99b72981620cfcp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 1030
+    -0x1.fffffdf5555575bbbb99b72981620cfcp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 1031
+    0x1.fffffff5555555bbbbbbb72972976256p-15,
+    0x1.p-14
+  },
+  { // Entry 1032
+    -0x1.fffffff5555555bbbbbbb72972976256p-15,
+    -0x1.p-14
+  },
+  { // Entry 1033
+    0x1.000001faaaaa8adddd9fdb949681068fp-14,
+    0x1.000002p-14
+  },
+  { // Entry 1034
+    -0x1.000001faaaaa8adddd9fdb949681068fp-14,
+    -0x1.000002p-14
+  },
+  { // Entry 1035
+    0x1.fffffdfffffffd55555d55554d5bbbbep-28,
+    0x1.fffffep-28
+  },
+  { // Entry 1036
+    -0x1.fffffdfffffffd55555d55554d5bbbbep-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 1037
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.p-27
+  },
+  { // Entry 1038
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.p-27
+  },
+  { // Entry 1039
+    0x1.000001fffffffeaaaaa2aaaa9aadddd3p-27,
+    0x1.000002p-27
+  },
+  { // Entry 1040
+    -0x1.000001fffffffeaaaaa2aaaa9aadddd3p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 1041
+    0x1.fffffdfffffffff555557555553555bbp-31,
+    0x1.fffffep-31
+  },
+  { // Entry 1042
+    -0x1.fffffdfffffffff555557555553555bbp-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 1043
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.p-30
+  },
+  { // Entry 1044
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.p-30
+  },
+  { // Entry 1045
+    0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    0x1.000002p-30
+  },
+  { // Entry 1046
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 1047
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffep127
+  },
+  { // Entry 1048
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffep127
+  },
+  { // Entry 1049
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffep127
+  },
+  { // Entry 1050
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffep127
+  },
+  { // Entry 1051
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF
+  },
+  { // Entry 1052
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF
+  },
+  { // Entry 1053
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffep127
+  },
+  { // Entry 1054
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffep127
+  },
+  { // Entry 1055
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffcp127
+  },
+  { // Entry 1056
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffcp127
+  },
+  { // Entry 1057
+    0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    0x1.921fb6p1
+  },
+  { // Entry 1058
+    -0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 1059
+    0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    0x1.921fb6p0
+  },
+  { // Entry 1060
+    -0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 1061
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p0
+  },
+  { // Entry 1062
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p0
+  },
+  { // Entry 1063
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0
+  },
+  { // Entry 1064
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0
+  },
+  { // Entry 1065
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 1066
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 1067
+    0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 1068
+    -0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 1069
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 1070
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 1071
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 1072
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 1073
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1074
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1075
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 1076
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 1077
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 1078
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 1079
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1080
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1081
+    0.0,
+    0.0f
+  },
+  { // Entry 1082
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/atanh_intel_data.h b/tests/math_data/atanh_intel_data.h
new file mode 100644
index 0000000..6b6808b
--- /dev/null
+++ b/tests/math_data/atanh_intel_data.h
@@ -0,0 +1,2458 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_atanh_intel_data[] = {
+  { // Entry 0
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2
+    -0x1.33c537256ac26ea1b8865a026e72c752p-1,
+    -0x1.136p-1
+  },
+  { // Entry 3
+    0x1.33c537256ac26ea1b8865a026e72c752p-1,
+    0x1.136p-1
+  },
+  { // Entry 4
+    -0x1.44767fdc853773ecd65b43b0efd1f8d6p-1,
+    -0x1.1f07c1f07c1f4p-1
+  },
+  { // Entry 5
+    0x1.44767fdc853773ecd65b43b0efd1f8d6p-1,
+    0x1.1f07c1f07c1f4p-1
+  },
+  { // Entry 6
+    -0x1.7761ddbd0573b7ff1d51e300bdb439bep-1,
+    -0x1.400000010p-1
+  },
+  { // Entry 7
+    0x1.7761ddbd0573b7ff1d51e300bdb439bep-1,
+    0x1.400000010p-1
+  },
+  { // Entry 8
+    -0x1.6259494a4bb397ff89dd84b74e230f31p-2,
+    -0x1.54d9d811468c2p-2
+  },
+  { // Entry 9
+    0x1.6259494a4bb397ff89dd84b74e230f31p-2,
+    0x1.54d9d811468c2p-2
+  },
+  { // Entry 10
+    -0x1.6719a6fbfef1d7fc326d067903183cddp-2,
+    -0x1.5911c3a70cebdp-2
+  },
+  { // Entry 11
+    0x1.6719a6fbfef1d7fc326d067903183cddp-2,
+    0x1.5911c3a70cebdp-2
+  },
+  { // Entry 12
+    -0x1.ad75b9841b24e264875483def1610c01p-1,
+    -0x1.5ece354ff80a2p-1
+  },
+  { // Entry 13
+    0x1.ad75b9841b24e264875483def1610c01p-1,
+    0x1.5ece354ff80a2p-1
+  },
+  { // Entry 14
+    -0x1.c08e6aa55e4172db4c413132b24283edp-1,
+    -0x1.68ae1ca8f6ad6p-1
+  },
+  { // Entry 15
+    0x1.c08e6aa55e4172db4c413132b24283edp-1,
+    0x1.68ae1ca8f6ad6p-1
+  },
+  { // Entry 16
+    -0x1.d6f10a7081e7ecc4a2d3d9e2371d1cb0p-1,
+    -0x1.739ce739ce73cp-1
+  },
+  { // Entry 17
+    0x1.d6f10a7081e7ecc4a2d3d9e2371d1cb0p-1,
+    0x1.739ce739ce73cp-1
+  },
+  { // Entry 18
+    -0x1.862796317ed3d7fcb8bec742b2ea5c0bp-2,
+    -0x1.744f8613c514bp-2
+  },
+  { // Entry 19
+    0x1.862796317ed3d7fcb8bec742b2ea5c0bp-2,
+    0x1.744f8613c514bp-2
+  },
+  { // Entry 20
+    -0x1.8027fe496eaad0006a3df4a7cfc399bap-5,
+    -0x1.7fdff7fffffffp-5
+  },
+  { // Entry 21
+    0x1.8027fe496eaad0006a3df4a7cfc399bap-5,
+    0x1.7fdff7fffffffp-5
+  },
+  { // Entry 22
+    -0x1.80602a138a48e581b7bf0a1d1f84769fp-10,
+    -0x1.8060180601ff6p-10
+  },
+  { // Entry 23
+    0x1.80602a138a48e581b7bf0a1d1f84769fp-10,
+    0x1.8060180601ff6p-10
+  },
+  { // Entry 24
+    -0x1.9f323ecbf984c5d61382119eafcddf36p-3,
+    -0x1.999999999999ap-3
+  },
+  { // Entry 25
+    0x1.9f323ecbf984c5d61382119eafcddf36p-3,
+    0x1.999999999999ap-3
+  },
+  { // Entry 26
+    -0x1.b7c54f4582a8f52cb0434b624cb3140bp-2,
+    -0x1.9e9703735f652p-2
+  },
+  { // Entry 27
+    0x1.b7c54f4582a8f52cb0434b624cb3140bp-2,
+    0x1.9e9703735f652p-2
+  },
+  { // Entry 28
+    -0x1.ac44a1f923250f86e06d88e6919a1a4fp-24,
+    -0x1.ac44a1f923238p-24
+  },
+  { // Entry 29
+    0x1.ac44a1f923250f86e06d88e6919a1a4fp-24,
+    0x1.ac44a1f923238p-24
+  },
+  { // Entry 30
+    -0x1.cee62c51688218abca36efcf5f6add63p-2,
+    -0x1.b1bfa1c2ff5c8p-2
+  },
+  { // Entry 31
+    0x1.cee62c51688218abca36efcf5f6add63p-2,
+    0x1.b1bfa1c2ff5c8p-2
+  },
+  { // Entry 32
+    -0x1.b4c1183827d4a805d64de6f870cd6888p-5,
+    -0x1.b45746fb45980p-5
+  },
+  { // Entry 33
+    0x1.b4c1183827d4a805d64de6f870cd6888p-5,
+    0x1.b45746fb45980p-5
+  },
+  { // Entry 34
+    -0x1.cd1ce8658f1e27f929bb26f71cf39ep-3,
+    -0x1.c579d4043e054p-3
+  },
+  { // Entry 35
+    0x1.cd1ce8658f1e27f929bb26f71cf39ep-3,
+    0x1.c579d4043e054p-3
+  },
+  { // Entry 36
+    -0x1.f4b9755f2c26e7fc906b87927f3076ecp-2,
+    -0x1.d04b9bb0bda28p-2
+  },
+  { // Entry 37
+    0x1.f4b9755f2c26e7fc906b87927f3076ecp-2,
+    0x1.d04b9bb0bda28p-2
+  },
+  { // Entry 38
+    -0x1.d49dd5cd8086d7fe196df1da63aadaf9p-4,
+    -0x1.d29523bb69328p-4
+  },
+  { // Entry 39
+    0x1.d49dd5cd8086d7fe196df1da63aadaf9p-4,
+    0x1.d29523bb69328p-4
+  },
+  { // Entry 40
+    -0x1.f7f60ac95611e75a2a085f35a7c508dcp-2,
+    -0x1.d2dce780a7304p-2
+  },
+  { // Entry 41
+    0x1.f7f60ac95611e75a2a085f35a7c508dcp-2,
+    0x1.d2dce780a7304p-2
+  },
+  { // Entry 42
+    -0x1.df875eb326b209b9c9a00f82e3dbc3bap-3,
+    -0x1.d6f41e3ea643ap-3
+  },
+  { // Entry 43
+    0x1.df875eb326b209b9c9a00f82e3dbc3bap-3,
+    0x1.d6f41e3ea643ap-3
+  },
+  { // Entry 44
+    -0x1.fe0dc4fabe81f72d042d459cdb17f7c5p-2,
+    -0x1.d7ad1055ed587p-2
+  },
+  { // Entry 45
+    0x1.fe0dc4fabe81f72d042d459cdb17f7c5p-2,
+    0x1.d7ad1055ed587p-2
+  },
+  { // Entry 46
+    -0x1.ede7fef85615d5762723a4bc9071bcfcp-4,
+    -0x1.eb86b85bf65d8p-4
+  },
+  { // Entry 47
+    0x1.ede7fef85615d5762723a4bc9071bcfcp-4,
+    0x1.eb86b85bf65d8p-4
+  },
+  { // Entry 48
+    -0x1.ffff0f05db419e0562a8a13e0c88ec0cp-3,
+    -0x1.f59707e3f49d0p-3
+  },
+  { // Entry 49
+    0x1.ffff0f05db419e0562a8a13e0c88ec0cp-3,
+    0x1.f59707e3f49d0p-3
+  },
+  { // Entry 50
+    -0x1.340af764783edfffac199b0ebf01c362p1,
+    -0x1.f7cp-1
+  },
+  { // Entry 51
+    0x1.340af764783edfffac199b0ebf01c362p1,
+    0x1.f7cp-1
+  },
+  { // Entry 52
+    -0x1.fc0000000000000000000000029aca95p-52,
+    -0x1.fc0p-52
+  },
+  { // Entry 53
+    0x1.fc0000000000000000000000029aca95p-52,
+    0x1.fc0p-52
+  },
+  { // Entry 54
+    -0x1.fdc93ea04e6030021bf3b7f1b7274addp-5,
+    -0x1.fd210af77856cp-5
+  },
+  { // Entry 55
+    0x1.fdc93ea04e6030021bf3b7f1b7274addp-5,
+    0x1.fd210af77856cp-5
+  },
+  { // Entry 56
+    -0x1.ffeaa91115a4e8716dc9f09be20a9364p-7,
+    -0x1.ffep-7
+  },
+  { // Entry 57
+    0x1.ffeaa91115a4e8716dc9f09be20a9364p-7,
+    0x1.ffep-7
+  },
+  { // Entry 58
+    -0x1.9a775e687850d877587114f931f61369p3,
+    -0x1.ffffffffe03edp-1
+  },
+  { // Entry 59
+    0x1.9a775e687850d877587114f931f61369p3,
+    0x1.ffffffffe03edp-1
+  },
+  { // Entry 60
+    -0x1.9ba863fb6bf8e791c8099e55cff570c3p3,
+    -0x1.ffffffffe2863p-1
+  },
+  { // Entry 61
+    0x1.9ba863fb6bf8e791c8099e55cff570c3p3,
+    0x1.ffffffffe2863p-1
+  },
+  { // Entry 62
+    -0x1.f369d8eedfbb384b0ee31be424423ec2p3,
+    -0x1.ffffffffffe0bp-1
+  },
+  { // Entry 63
+    0x1.f369d8eedfbb384b0ee31be424423ec2p3,
+    0x1.ffffffffffe0bp-1
+  },
+  { // Entry 64
+    -0x1.02bd22bd19797815b1ddefc90c41f8fbp4,
+    -0x1.fffffffffff5ep-1
+  },
+  { // Entry 65
+    0x1.02bd22bd19797815b1ddefc90c41f8fbp4,
+    0x1.fffffffffff5ep-1
+  },
+  { // Entry 66
+    -0x1.1841a4bab2d6d03a28537f43de9e90a4p4,
+    -0x1.ffffffffffff5p-1
+  },
+  { // Entry 67
+    0x1.1841a4bab2d6d03a28537f43de9e90a4p4,
+    0x1.ffffffffffff5p-1
+  },
+  { // Entry 68
+    0x1.p-99,
+    0x1.0p-99
+  },
+  { // Entry 69
+    -0x1.p-99,
+    -0x1.0p-99
+  },
+  { // Entry 70
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 71
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 72
+    0x1.00000000000010000000155555555555p-41,
+    0x1.0000000000001p-41
+  },
+  { // Entry 73
+    -0x1.00000000000010000000155555555555p-41,
+    -0x1.0000000000001p-41
+  },
+  { // Entry 74
+    0x1.015891c9eaefd81f5edb9583f3871889p-3,
+    0x1.0000000000006p-3
+  },
+  { // Entry 75
+    -0x1.015891c9eaefd81f5edb9583f3871889p-3,
+    -0x1.0000000000006p-3
+  },
+  { // Entry 76
+    0x1.193ea7aad0313ecbf96ee2aa7057ee7cp-1,
+    0x1.0000000000007p-1
+  },
+  { // Entry 77
+    -0x1.193ea7aad0313ecbf96ee2aa7057ee7cp-1,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 78
+    0x1.000555888ad4c9be103a862dcf933db6p-6,
+    0x1.0000000000030p-6
+  },
+  { // Entry 79
+    -0x1.000555888ad4c9be103a862dcf933db6p-6,
+    -0x1.0000000000030p-6
+  },
+  { // Entry 80
+    0x1.0000055555a8988cd2ad575377ece0d7p-10,
+    0x1.0000000000201p-10
+  },
+  { // Entry 81
+    -0x1.0000055555a8988cd2ad575377ece0d7p-10,
+    -0x1.0000000000201p-10
+  },
+  { // Entry 82
+    0x1.015891c9f107d81f5edc2a1f85d03e57p-3,
+    0x1.00000000060p-3
+  },
+  { // Entry 83
+    -0x1.015891c9f107d81f5edc2a1f85d03e57p-3,
+    -0x1.00000000060p-3
+  },
+  { // Entry 84
+    0x1.005588ad597cefed3539549b86ce2b1bp-4,
+    0x1.00000000220p-4
+  },
+  { // Entry 85
+    -0x1.005588ad597cefed3539549b86ce2b1bp-4,
+    -0x1.00000000220p-4
+  },
+  { // Entry 86
+    0x1.0000055577888aaad1cf378dd5b4caa3p-10,
+    0x1.00000000220p-10
+  },
+  { // Entry 87
+    -0x1.0000055577888aaad1cf378dd5b4caa3p-10,
+    -0x1.00000000220p-10
+  },
+  { // Entry 88
+    0x1.193ea7fca06d7000000fd6e3e45036c3p-1,
+    0x1.0000003d5c2d9p-1
+  },
+  { // Entry 89
+    -0x1.193ea7fca06d7000000fd6e3e45036c3p-1,
+    -0x1.0000003d5c2d9p-1
+  },
+  { // Entry 90
+    0x1.0158920aeeffb7df62fc5f72d05afc8ap-3,
+    0x1.0000004p-3
+  },
+  { // Entry 91
+    -0x1.0158920aeeffb7df62fc5f72d05afc8ap-3,
+    -0x1.0000004p-3
+  },
+  { // Entry 92
+    0x1.015894d61bb2a7f0ee6532fa66c13887p-3,
+    0x1.0000030p-3
+  },
+  { // Entry 93
+    -0x1.015894d61bb2a7f0ee6532fa66c13887p-3,
+    -0x1.0000030p-3
+  },
+  { // Entry 94
+    0x1.00255c8a5b4f98134613c6ae100b17d2p-5,
+    0x1.001p-5
+  },
+  { // Entry 95
+    -0x1.00255c8a5b4f98134613c6ae100b17d2p-5,
+    -0x1.001p-5
+  },
+  { // Entry 96
+    0x1.199403c895f3b2fbd6e04ef63e5e0b99p-1,
+    0x1.003fffcp-1
+  },
+  { // Entry 97
+    -0x1.199403c895f3b2fbd6e04ef63e5e0b99p-1,
+    -0x1.003fffcp-1
+  },
+  { // Entry 98
+    0x1.00401004000480000000000005595756p-50,
+    0x1.0040100400048p-50
+  },
+  { // Entry 99
+    -0x1.00401004000480000000000005595756p-50,
+    -0x1.0040100400048p-50
+  },
+  { // Entry 100
+    0x1.00b5e931e4c3080916948fa283902fa8p-4,
+    0x1.006p-4
+  },
+  { // Entry 101
+    -0x1.00b5e931e4c3080916948fa283902fa8p-4,
+    -0x1.006p-4
+  },
+  { // Entry 102
+    0x1.021c8577650fa41d24281561edcb1273p-10,
+    0x1.021c8p-10
+  },
+  { // Entry 103
+    -0x1.021c8577650fa41d24281561edcb1273p-10,
+    -0x1.021c8p-10
+  },
+  { // Entry 104
+    0x1.03858e51088d27f9df83774139563f2cp-6,
+    0x1.038p-6
+  },
+  { // Entry 105
+    -0x1.03858e51088d27f9df83774139563f2cp-6,
+    -0x1.038p-6
+  },
+  { // Entry 106
+    0x1.1e9b2fd18d91b42e390d13e9beb6978cp-1,
+    0x1.040p-1
+  },
+  { // Entry 107
+    -0x1.1e9b2fd18d91b42e390d13e9beb6978cp-1,
+    -0x1.040p-1
+  },
+  { // Entry 108
+    0x1.0841776c420d4707689f45329a9bf2cep-7,
+    0x1.084p-7
+  },
+  { // Entry 109
+    -0x1.0841776c420d4707689f45329a9bf2cep-7,
+    -0x1.084p-7
+  },
+  { // Entry 110
+    0x1.37ed416dfaf6747b307bee589157fe93p-1,
+    0x1.1650efedb9eb2p-1
+  },
+  { // Entry 111
+    -0x1.37ed416dfaf6747b307bee589157fe93p-1,
+    -0x1.1650efedb9eb2p-1
+  },
+  { // Entry 112
+    0x1.45e1141a8c00e0b0eb767eb3382f20b8p-1,
+    0x1.1ffffffffffffp-1
+  },
+  { // Entry 113
+    -0x1.45e1141a8c00e0b0eb767eb3382f20b8p-1,
+    -0x1.1ffffffffffffp-1
+  },
+  { // Entry 114
+    0x1.45e1141a8c00f818c85ab35ce89683a2p-1,
+    0x1.2p-1
+  },
+  { // Entry 115
+    -0x1.45e1141a8c00f818c85ab35ce89683a2p-1,
+    -0x1.2p-1
+  },
+  { // Entry 116
+    0x1.2e223119d32f870a129b78a196ee4c8dp-7,
+    0x1.2e2p-7
+  },
+  { // Entry 117
+    -0x1.2e223119d32f870a129b78a196ee4c8dp-7,
+    -0x1.2e2p-7
+  },
+  { // Entry 118
+    0x1.600c9c6f70efcd85cd16189ee688ead0p-1,
+    0x1.316p-1
+  },
+  { // Entry 119
+    -0x1.600c9c6f70efcd85cd16189ee688ead0p-1,
+    -0x1.316p-1
+  },
+  { // Entry 120
+    0x1.3b5afc2b8cfd87f655c91414c5969d60p-2,
+    0x1.31cp-2
+  },
+  { // Entry 121
+    -0x1.3b5afc2b8cfd87f655c91414c5969d60p-2,
+    -0x1.31cp-2
+  },
+  { // Entry 122
+    0x1.62e4307128100800001f7881babc44f3p-1,
+    0x1.3333338617529p-1
+  },
+  { // Entry 123
+    -0x1.62e4307128100800001f7881babc44f3p-1,
+    -0x1.3333338617529p-1
+  },
+  { // Entry 124
+    0x1.33aef545bb20968537b09375e6d5c60ap-7,
+    0x1.33aca4ae2b081p-7
+  },
+  { // Entry 125
+    -0x1.33aef545bb20968537b09375e6d5c60ap-7,
+    -0x1.33aca4ae2b081p-7
+  },
+  { // Entry 126
+    0x1.9c5cfbb889a7419fe7705e893b99fbb5p-1,
+    0x1.5586ad8669418p-1
+  },
+  { // Entry 127
+    -0x1.9c5cfbb889a7419fe7705e893b99fbb5p-1,
+    -0x1.5586ad8669418p-1
+  },
+  { // Entry 128
+    0x1.9d5e0765d3182e417e4d91808f30b95fp-1,
+    0x1.56152a51dda72p-1
+  },
+  { // Entry 129
+    -0x1.9d5e0765d3182e417e4d91808f30b95fp-1,
+    -0x1.56152a51dda72p-1
+  },
+  { // Entry 130
+    0x1.9d783af9f97bce33bd221a9954befb0cp-1,
+    0x1.5623ab271fa52p-1
+  },
+  { // Entry 131
+    -0x1.9d783af9f97bce33bd221a9954befb0cp-1,
+    -0x1.5623ab271fa52p-1
+  },
+  { // Entry 132
+    0x1.56a0f0b4476de80270a6332ff4450533p-5,
+    0x1.566dd4892fab9p-5
+  },
+  { // Entry 133
+    -0x1.56a0f0b4476de80270a6332ff4450533p-5,
+    -0x1.566dd4892fab9p-5
+  },
+  { // Entry 134
+    0x1.5db43aa0e3e55fffa5ad9886e8f22cb8p-3,
+    0x1.5a582cdc4e9d4p-3
+  },
+  { // Entry 135
+    -0x1.5db43aa0e3e55fffa5ad9886e8f22cb8p-3,
+    -0x1.5a582cdc4e9d4p-3
+  },
+  { // Entry 136
+    0x1.ab9dfa0ec89b8247c03f70d6fccdfd66p-1,
+    0x1.5dd34e7af8d61p-1
+  },
+  { // Entry 137
+    -0x1.ab9dfa0ec89b8247c03f70d6fccdfd66p-1,
+    -0x1.5dd34e7af8d61p-1
+  },
+  { // Entry 138
+    0x1.67a648e5b16c6a6999d9665a8c288d27p-8,
+    0x1.67a55c49aa5d6p-8
+  },
+  { // Entry 139
+    -0x1.67a648e5b16c6a6999d9665a8c288d27p-8,
+    -0x1.67a55c49aa5d6p-8
+  },
+  { // Entry 140
+    0x1.7b57ee7bea57a7fcebaaea6f557706c2p-2,
+    0x1.6ae491f70c7cbp-2
+  },
+  { // Entry 141
+    -0x1.7b57ee7bea57a7fcebaaea6f557706c2p-2,
+    -0x1.6ae491f70c7cbp-2
+  },
+  { // Entry 142
+    0x1.7222b50fd4f8ce0954e89313933bded3p-3,
+    0x1.6e2856e2856f5p-3
+  },
+  { // Entry 143
+    -0x1.7222b50fd4f8ce0954e89313933bded3p-3,
+    -0x1.6e2856e2856f5p-3
+  },
+  { // Entry 144
+    0x1.cf6347191f5b5aba22dc8400fa882ceep-1,
+    0x1.7p-1
+  },
+  { // Entry 145
+    -0x1.cf6347191f5b5aba22dc8400fa882ceep-1,
+    -0x1.7p-1
+  },
+  { // Entry 146
+    0x1.83916f868284f882ad9463d174a59d97p-2,
+    0x1.721060c1a73cep-2
+  },
+  { // Entry 147
+    -0x1.83916f868284f882ad9463d174a59d97p-2,
+    -0x1.721060c1a73cep-2
+  },
+  { // Entry 148
+    0x1.85e0806e8e13b7fcc08479529c8104e6p-2,
+    0x1.7411d463bfe90p-2
+  },
+  { // Entry 149
+    -0x1.85e0806e8e13b7fcc08479529c8104e6p-2,
+    -0x1.7411d463bfe90p-2
+  },
+  { // Entry 150
+    0x1.f2272af46bbe08000012b87d08e7932fp-1,
+    0x1.800000078eaacp-1
+  },
+  { // Entry 151
+    -0x1.f2272af46bbe08000012b87d08e7932fp-1,
+    -0x1.800000078eaacp-1
+  },
+  { // Entry 152
+    0x1.f2272af46bbf0800001fad0fd766e8cfp-1,
+    0x1.800000078eab3p-1
+  },
+  { // Entry 153
+    -0x1.f2272af46bbf0800001fad0fd766e8cfp-1,
+    -0x1.800000078eab3p-1
+  },
+  { // Entry 154
+    0x1.83e4a353f34f3562d9d23f45dc8b2e29p-7,
+    0x1.83ep-7
+  },
+  { // Entry 155
+    -0x1.83e4a353f34f3562d9d23f45dc8b2e29p-7,
+    -0x1.83ep-7
+  },
+  { // Entry 156
+    0x1.89b541d1b39fa30a054d69c38ffbdb5ep-4,
+    0x1.888p-4
+  },
+  { // Entry 157
+    -0x1.89b541d1b39fa30a054d69c38ffbdb5ep-4,
+    -0x1.888p-4
+  },
+  { // Entry 158
+    0x1.8a08c32ee13cd9422b9ad12f398f50bbp-8,
+    0x1.8a078c03f8dcep-8
+  },
+  { // Entry 159
+    -0x1.8a08c32ee13cd9422b9ad12f398f50bbp-8,
+    -0x1.8a078c03f8dcep-8
+  },
+  { // Entry 160
+    0x1.946669a6bba909c4bc5da852e75a3d66p-8,
+    0x1.9465194651941p-8
+  },
+  { // Entry 161
+    -0x1.946669a6bba909c4bc5da852e75a3d66p-8,
+    -0x1.9465194651941p-8
+  },
+  { // Entry 162
+    0x1.9c7d184ac6505eee21ace6732a52730cp-3,
+    0x1.970p-3
+  },
+  { // Entry 163
+    -0x1.9c7d184ac6505eee21ace6732a52730cp-3,
+    -0x1.970p-3
+  },
+  { // Entry 164
+    0x1.98da3c40000e9801ec829a13899425ecp-4,
+    0x1.978p-4
+  },
+  { // Entry 165
+    -0x1.98da3c40000e9801ec829a13899425ecp-4,
+    -0x1.978p-4
+  },
+  { // Entry 166
+    0x1.9af93cdc56240000000fff41a04220ffp-4,
+    0x1.999999a3a18c2p-4
+  },
+  { // Entry 167
+    -0x1.9af93cdc56240000000fff41a04220ffp-4,
+    -0x1.999999a3a18c2p-4
+  },
+  { // Entry 168
+    0x1.9af93cdc566f000000197f297a13895cp-4,
+    0x1.999999a3a1d66p-4
+  },
+  { // Entry 169
+    -0x1.9af93cdc566f000000197f297a13895cp-4,
+    -0x1.999999a3a1d66p-4
+  },
+  { // Entry 170
+    0x1.193ea7fa8d771fffffe6de660aab4045p0,
+    0x1.999999d303287p-1
+  },
+  { // Entry 171
+    -0x1.193ea7fa8d771fffffe6de660aab4045p0,
+    -0x1.999999d303287p-1
+  },
+  { // Entry 172
+    0x1.9af93d0c9ef7d80000017b97c0c0930cp-4,
+    0x1.999999d36ec44p-4
+  },
+  { // Entry 173
+    -0x1.9af93d0c9ef7d80000017b97c0c0930cp-4,
+    -0x1.999999d36ec44p-4
+  },
+  { // Entry 174
+    0x1.9f323f7638726800001eda3701a5c338p-3,
+    0x1.99999a3d09361p-3
+  },
+  { // Entry 175
+    -0x1.9f323f7638726800001eda3701a5c338p-3,
+    -0x1.99999a3d09361p-3
+  },
+  { // Entry 176
+    0x1.9f323fd47175b7ffffe05fbf960efc6ap-3,
+    0x1.99999a977d623p-3
+  },
+  { // Entry 177
+    -0x1.9f323fd47175b7ffffe05fbf960efc6ap-3,
+    -0x1.99999a977d623p-3
+  },
+  { // Entry 178
+    0x1.9f323fe10c9a1800001efbbe0bb48ebbp-3,
+    0x1.99999aa39770ap-3
+  },
+  { // Entry 179
+    -0x1.9f323fe10c9a1800001efbbe0bb48ebbp-3,
+    -0x1.99999aa39770ap-3
+  },
+  { // Entry 180
+    0x1.9a179be1e7a6e801a0cbc1770ccc0691p-5,
+    0x1.99cp-5
+  },
+  { // Entry 181
+    -0x1.9a179be1e7a6e801a0cbc1770ccc0691p-5,
+    -0x1.99cp-5
+  },
+  { // Entry 182
+    0x1.a5256971dc6e440698f25410f9a508ffp-10,
+    0x1.a52551b31353cp-10
+  },
+  { // Entry 183
+    -0x1.a5256971dc6e440698f25410f9a508ffp-10,
+    -0x1.a52551b31353cp-10
+  },
+  { // Entry 184
+    0x1.ad6df00c82cd92c93177514dd245567bp-24,
+    0x1.ad6df00c82cc0p-24
+  },
+  { // Entry 185
+    -0x1.ad6df00c82cd92c93177514dd245567bp-24,
+    -0x1.ad6df00c82cc0p-24
+  },
+  { // Entry 186
+    0x1.aec648950aa9b6160bf45bf45b2ce0bep-8,
+    0x1.aec4b201aa53bp-8
+  },
+  { // Entry 187
+    -0x1.aec648950aa9b6160bf45bf45b2ce0bep-8,
+    -0x1.aec4b201aa53bp-8
+  },
+  { // Entry 188
+    0x1.b6cabb35f338f7fb83223470c9fbfb09p-3,
+    0x1.b032e138a539dp-3
+  },
+  { // Entry 189
+    -0x1.b6cabb35f338f7fb83223470c9fbfb09p-3,
+    -0x1.b032e138a539dp-3
+  },
+  { // Entry 190
+    0x1.d6f4c64bee95d884b07a53fe12d571f4p-2,
+    0x1.b85680001c332p-2
+  },
+  { // Entry 191
+    -0x1.d6f4c64bee95d884b07a53fe12d571f4p-2,
+    -0x1.b85680001c332p-2
+  },
+  { // Entry 192
+    0x1.c184b5fbed8192fa453d4d9c1577a9e3p-10,
+    0x1.c184991bf2fp-10
+  },
+  { // Entry 193
+    -0x1.c184b5fbed8192fa453d4d9c1577a9e3p-10,
+    -0x1.c184991bf2fp-10
+  },
+  { // Entry 194
+    0x1.e71d3517d3e01b42d5dae4c3aaf70503p-2,
+    0x1.c56b0b96cdf91p-2
+  },
+  { // Entry 195
+    -0x1.e71d3517d3e01b42d5dae4c3aaf70503p-2,
+    -0x1.c56b0b96cdf91p-2
+  },
+  { // Entry 196
+    0x1.c5e0000001db8fffed2e2b94fd54870dp-20,
+    0x1.c5ep-20
+  },
+  { // Entry 197
+    -0x1.c5e0000001db8fffed2e2b94fd54870dp-20,
+    -0x1.c5ep-20
+  },
+  { // Entry 198
+    0x1.f055451fb359e7fffffbe5195d4377e8p-2,
+    0x1.ccccccd660083p-2
+  },
+  { // Entry 199
+    -0x1.f055451fb359e7fffffbe5195d4377e8p-2,
+    -0x1.ccccccd660083p-2
+  },
+  { // Entry 200
+    0x1.f1c704e1f3c8a800b71131c90e193596p-2,
+    0x1.cdf37cdf37cd9p-2
+  },
+  { // Entry 201
+    -0x1.f1c704e1f3c8a800b71131c90e193596p-2,
+    -0x1.cdf37cdf37cd9p-2
+  },
+  { // Entry 202
+    0x1.d00a0587151948029cb1fb36b2a24903p-5,
+    0x1.cf8b2052bbb11p-5
+  },
+  { // Entry 203
+    -0x1.d00a0587151948029cb1fb36b2a24903p-5,
+    -0x1.cf8b2052bbb11p-5
+  },
+  { // Entry 204
+    0x1.f4656a69bea6d733e8f3dfaec12111c3p-2,
+    0x1.d008d55f75360p-2
+  },
+  { // Entry 205
+    -0x1.f4656a69bea6d733e8f3dfaec12111c3p-2,
+    -0x1.d008d55f75360p-2
+  },
+  { // Entry 206
+    0x1.d0cad6adc9a0c837bbecea984e9019d7p-5,
+    0x1.d04b532bd5b41p-5
+  },
+  { // Entry 207
+    -0x1.d0cad6adc9a0c837bbecea984e9019d7p-5,
+    -0x1.d04b532bd5b41p-5
+  },
+  { // Entry 208
+    0x1.f62f40794a7b089973231ae614553eb0p-2,
+    0x1.d1745d1745d11p-2
+  },
+  { // Entry 209
+    -0x1.f62f40794a7b089973231ae614553eb0p-2,
+    -0x1.d1745d1745d11p-2
+  },
+  { // Entry 210
+    0x1.d1c00000008077fe5d003fc8ce63e4a4p-21,
+    0x1.d1cp-21
+  },
+  { // Entry 211
+    -0x1.d1c00000008077fe5d003fc8ce63e4a4p-21,
+    -0x1.d1cp-21
+  },
+  { // Entry 212
+    0x1.f6beddb6ec29b749a9e4a3f67a36b414p-2,
+    0x1.d1e646f156570p-2
+  },
+  { // Entry 213
+    -0x1.f6beddb6ec29b749a9e4a3f67a36b414p-2,
+    -0x1.d1e646f156570p-2
+  },
+  { // Entry 214
+    0x1.fabc7c84166033eb57a453fd83585dc8p-2,
+    0x1.d50efa205a174p-2
+  },
+  { // Entry 215
+    -0x1.fabc7c84166033eb57a453fd83585dc8p-2,
+    -0x1.d50efa205a174p-2
+  },
+  { // Entry 216
+    0x1.d62f43b4c2c737fdd232cf2e299076f7p-11,
+    0x1.d62f3b71fca8cp-11
+  },
+  { // Entry 217
+    -0x1.d62f43b4c2c737fdd232cf2e299076f7p-11,
+    -0x1.d62f3b71fca8cp-11
+  },
+  { // Entry 218
+    0x1.e3a4b468f251480a6049e3fe17b89646p-5,
+    0x1.e3150daedb476p-5
+  },
+  { // Entry 219
+    -0x1.e3a4b468f251480a6049e3fe17b89646p-5,
+    -0x1.e3150daedb476p-5
+  },
+  { // Entry 220
+    0x1.e68e0c2de6d2280c8a117c4d61d8f42fp-5,
+    0x1.e5fbc9eecbdaep-5
+  },
+  { // Entry 221
+    -0x1.e68e0c2de6d2280c8a117c4d61d8f42fp-5,
+    -0x1.e5fbc9eecbdaep-5
+  },
+  { // Entry 222
+    0x1.e9de86e8fd3be801a9f830844ba5e501p-5,
+    0x1.e9494303cd80fp-5
+  },
+  { // Entry 223
+    -0x1.e9de86e8fd3be801a9f830844ba5e501p-5,
+    -0x1.e9494303cd80fp-5
+  },
+  { // Entry 224
+    0x1.edbcc82a00a4c001e7ac01891849800ep-5,
+    0x1.ed23f4c89da70p-5
+  },
+  { // Entry 225
+    -0x1.edbcc82a00a4c001e7ac01891849800ep-5,
+    -0x1.ed23f4c89da70p-5
+  },
+  { // Entry 226
+    0x1.fa0dc9d7131fee2b38ba993a65f82a06p-3,
+    0x1.effffffffffffp-3
+  },
+  { // Entry 227
+    -0x1.fa0dc9d7131fee2b38ba993a65f82a06p-3,
+    -0x1.effffffffffffp-3
+  },
+  { // Entry 228
+    0x1.f37429af961a9824754b77a1b593d39ap-4,
+    0x1.f0fe3530f7239p-4
+  },
+  { // Entry 229
+    -0x1.f37429af961a9824754b77a1b593d39ap-4,
+    -0x1.f0fe3530f7239p-4
+  },
+  { // Entry 230
+    0x1.f37429af961ab89edde6f4ae74375a06p-4,
+    0x1.f0fe3530f723bp-4
+  },
+  { // Entry 231
+    -0x1.f37429af961ab89edde6f4ae74375a06p-4,
+    -0x1.f0fe3530f723bp-4
+  },
+  { // Entry 232
+    0x1.f37429af961ac8dc1234b334d38f1d1bp-4,
+    0x1.f0fe3530f723cp-4
+  },
+  { // Entry 233
+    -0x1.f37429af961ac8dc1234b334d38f1d1bp-4,
+    -0x1.f0fe3530f723cp-4
+  },
+  { // Entry 234
+    0x1.f37429af962b268ac88eb6a2f4026151p-4,
+    0x1.f0fe3530f733ep-4
+  },
+  { // Entry 235
+    -0x1.f37429af962b268ac88eb6a2f4026151p-4,
+    -0x1.f0fe3530f733ep-4
+  },
+  { // Entry 236
+    0x1.f1e9c43b21348857c7e465e46799dce1p-5,
+    0x1.f14d08c7109aap-5
+  },
+  { // Entry 237
+    -0x1.f1e9c43b21348857c7e465e46799dce1p-5,
+    -0x1.f14d08c7109aap-5
+  },
+  { // Entry 238
+    0x1.f90b42375a486a39cdf9b2ccf2824fecp-4,
+    0x1.f68p-4
+  },
+  { // Entry 239
+    -0x1.f90b42375a486a39cdf9b2ccf2824fecp-4,
+    -0x1.f68p-4
+  },
+  { // Entry 240
+    0x1.f72a153ff7688808c896dd6ffe6516d4p-5,
+    0x1.f688582bdf450p-5
+  },
+  { // Entry 241
+    -0x1.f72a153ff7688808c896dd6ffe6516d4p-5,
+    -0x1.f688582bdf450p-5
+  },
+  { // Entry 242
+    0x1.f7e703f1db06e802f9321fd5e2394e07p-5,
+    0x1.f744909706414p-5
+  },
+  { // Entry 243
+    -0x1.f7e703f1db06e802f9321fd5e2394e07p-5,
+    -0x1.f744909706414p-5
+  },
+  { // Entry 244
+    0x1.340af764783edfffac199b0ebf01c362p1,
+    0x1.f7cp-1
+  },
+  { // Entry 245
+    -0x1.340af764783edfffac199b0ebf01c362p1,
+    -0x1.f7cp-1
+  },
+  { // Entry 246
+    0x1.fa24a006fb7277fe99107e535f1488d7p-5,
+    0x1.f98p-5
+  },
+  { // Entry 247
+    -0x1.fa24a006fb7277fe99107e535f1488d7p-5,
+    -0x1.f98p-5
+  },
+  { // Entry 248
+    0x1.fabe9384d8eb28030d5306c1d38ffe3cp-5,
+    0x1.fa195d3f2824ap-5
+  },
+  { // Entry 249
+    -0x1.fabe9384d8eb28030d5306c1d38ffe3cp-5,
+    -0x1.fa195d3f2824ap-5
+  },
+  { // Entry 250
+    0x1.fac53cc7f51a2825f03615ff2011a3f4p-5,
+    0x1.fa2p-5
+  },
+  { // Entry 251
+    -0x1.fac53cc7f51a2825f03615ff2011a3f4p-5,
+    -0x1.fa2p-5
+  },
+  { // Entry 252
+    0x1.fca715610d4c584a721b2c19e6223c63p-5,
+    0x1.fbfffffffffffp-5
+  },
+  { // Entry 253
+    -0x1.fca715610d4c584a721b2c19e6223c63p-5,
+    -0x1.fbfffffffffffp-5
+  },
+  { // Entry 254
+    0x1.ff2303e94a6fa776b99fdcdac342443dp-4,
+    0x1.fc7ffffffffffp-4
+  },
+  { // Entry 255
+    -0x1.ff2303e94a6fa776b99fdcdac342443dp-4,
+    -0x1.fc7ffffffffffp-4
+  },
+  { // Entry 256
+    0x1.fcca7762322a195ec28591033e93e55bp-7,
+    0x1.fccp-7
+  },
+  { // Entry 257
+    -0x1.fcca7762322a195ec28591033e93e55bp-7,
+    -0x1.fccp-7
+  },
+  { // Entry 258
+    0x1.fde34e5e71112802cd5dc4e1fb2d0640p-5,
+    0x1.fd3b00ef28dc9p-5
+  },
+  { // Entry 259
+    -0x1.fde34e5e71112802cd5dc4e1fb2d0640p-5,
+    -0x1.fd3b00ef28dc9p-5
+  },
+  { // Entry 260
+    0x1.fd5da51e6bee9b019e62cd796699df5cp-8,
+    0x1.fd5b04f37a8adp-8
+  },
+  { // Entry 261
+    -0x1.fd5da51e6bee9b019e62cd796699df5cp-8,
+    -0x1.fd5b04f37a8adp-8
+  },
+  { // Entry 262
+    0x1.ff08b9b3981768022e66dd42cd419f4cp-9,
+    0x1.ff080ffffffffp-9
+  },
+  { // Entry 263
+    -0x1.ff08b9b3981768022e66dd42cd419f4cp-9,
+    -0x1.ff080ffffffffp-9
+  },
+  { // Entry 264
+    0x1.ff782a88ba0fba00f908e16f051a1810p-10,
+    0x1.ff77fffffffffp-10
+  },
+  { // Entry 265
+    -0x1.ff782a88ba0fba00f908e16f051a1810p-10,
+    -0x1.ff77fffffffffp-10
+  },
+  { // Entry 266
+    0x1.0154818928eb11132905352501826af5p-3,
+    0x1.fff7fffffffffp-4
+  },
+  { // Entry 267
+    -0x1.0154818928eb11132905352501826af5p-3,
+    -0x1.fff7fffffffffp-4
+  },
+  { // Entry 268
+    0x1.fffca6a70d15564482dc93a139764e2dp-9,
+    0x1.fffbfbfffffffp-9
+  },
+  { // Entry 269
+    -0x1.fffca6a70d15564482dc93a139764e2dp-9,
+    -0x1.fffbfbfffffffp-9
+  },
+  { // Entry 270
+    0x1.0157cebdbc7ecff56d936def2dc90848p-3,
+    0x1.fffe7ffffffffp-4
+  },
+  { // Entry 271
+    -0x1.0157cebdbc7ecff56d936def2dc90848p-3,
+    -0x1.fffe7ffffffffp-4
+  },
+  { // Entry 272
+    0x1.ffff2aaa70e11229a646c3ea214d5c6bp-10,
+    0x1.fffeffffffcffp-10
+  },
+  { // Entry 273
+    -0x1.ffff2aaa70e11229a646c3ea214d5c6bp-10,
+    -0x1.fffeffffffcffp-10
+  },
+  { // Entry 274
+    0x1.fe849ae4ae0948fc35cd560fe0f7a64fp2,
+    0x1.fffff8170432cp-1
+  },
+  { // Entry 275
+    -0x1.fe849ae4ae0948fc35cd560fe0f7a64fp2,
+    -0x1.fffff8170432cp-1
+  },
+  { // Entry 276
+    0x1.fe8636119def0727f0b21ad8da17b705p2,
+    0x1.fffff81769d3bp-1
+  },
+  { // Entry 277
+    -0x1.fe8636119def0727f0b21ad8da17b705p2,
+    -0x1.fffff81769d3bp-1
+  },
+  { // Entry 278
+    0x1.feab0f8d089237326f5246ce7822ddcap2,
+    0x1.fffff8207ffffp-1
+  },
+  { // Entry 279
+    -0x1.feab0f8d089237326f5246ce7822ddcap2,
+    -0x1.fffff8207ffffp-1
+  },
+  { // Entry 280
+    0x1.fffffbc002aa9a99aab134f0ccf89dcfp-20,
+    0x1.fffffbbffffffp-20
+  },
+  { // Entry 281
+    -0x1.fffffbc002aa9a99aab134f0ccf89dcfp-20,
+    -0x1.fffffbbffffffp-20
+  },
+  { // Entry 282
+    0x1.38aa9bbc81de80372da066273e181f3dp3,
+    0x1.ffffffc7fffffp-1
+  },
+  { // Entry 283
+    -0x1.38aa9bbc81de80372da066273e181f3dp3,
+    -0x1.ffffffc7fffffp-1
+  },
+  { // Entry 284
+    0x1.a791d873bcf1ef6cc589b55be94c11ccp3,
+    0x1.fffffffff1fffp-1
+  },
+  { // Entry 285
+    -0x1.a791d873bcf1ef6cc589b55be94c11ccp3,
+    -0x1.fffffffff1fffp-1
+  },
+  { // Entry 286
+    0x1.048fa31ec6a076cfd26abb456c9e863ap4,
+    0x1.fffffffffff7fp-1
+  },
+  { // Entry 287
+    -0x1.048fa31ec6a076cfd26abb456c9e863ap4,
+    -0x1.fffffffffff7fp-1
+  },
+  { // Entry 288
+    0x1.ffffffffffff8aaaaaaaaaa9f1111111p-25,
+    0x1.fffffffffffeep-25
+  },
+  { // Entry 289
+    -0x1.ffffffffffff8aaaaaaaaaa9f1111111p-25,
+    -0x1.fffffffffffeep-25
+  },
+  { // Entry 290
+    -0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    -0x1.f777777777777p-1
+  },
+  { // Entry 291
+    0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    0x1.f777777777777p-1
+  },
+  { // Entry 292
+    -0x1.04f65f9c7297527749382883b8e88e33p1,
+    -0x1.eeeeeeeeeeeeep-1
+  },
+  { // Entry 293
+    0x1.04f65f9c7297527749382883b8e88e33p1,
+    0x1.eeeeeeeeeeeeep-1
+  },
+  { // Entry 294
+    -0x1.d4ef968880dcf1c48bf6d707008e71a0p0,
+    -0x1.e666666666665p-1
+  },
+  { // Entry 295
+    0x1.d4ef968880dcf1c48bf6d707008e71a0p0,
+    0x1.e666666666665p-1
+  },
+  { // Entry 296
+    -0x1.af038cbcdfe177f9b97cb13acb6a1d56p0,
+    -0x1.ddddddddddddcp-1
+  },
+  { // Entry 297
+    0x1.af038cbcdfe177f9b97cb13acb6a1d56p0,
+    0x1.ddddddddddddcp-1
+  },
+  { // Entry 298
+    -0x1.9157dfdd1b3e8bb2bc8c94b692c36c8bp0,
+    -0x1.d555555555553p-1
+  },
+  { // Entry 299
+    0x1.9157dfdd1b3e8bb2bc8c94b692c36c8bp0,
+    0x1.d555555555553p-1
+  },
+  { // Entry 300
+    -0x1.78e360604b32513afa302dd9090f54afp0,
+    -0x1.ccccccccccccap-1
+  },
+  { // Entry 301
+    0x1.78e360604b32513afa302dd9090f54afp0,
+    0x1.ccccccccccccap-1
+  },
+  { // Entry 302
+    -0x1.640775d4dd98457b36fb7ce98ec43308p0,
+    -0x1.c444444444441p-1
+  },
+  { // Entry 303
+    0x1.640775d4dd98457b36fb7ce98ec43308p0,
+    0x1.c444444444441p-1
+  },
+  { // Entry 304
+    -0x1.51cca16d7bb9ff79603c2533c5c76b7ap0,
+    -0x1.bbbbbbbbbbbb8p-1
+  },
+  { // Entry 305
+    0x1.51cca16d7bb9ff79603c2533c5c76b7ap0,
+    0x1.bbbbbbbbbbbb8p-1
+  },
+  { // Entry 306
+    -0x1.41933b0e446305a96ace1bc262cdee99p0,
+    -0x1.b33333333332fp-1
+  },
+  { // Entry 307
+    0x1.41933b0e446305a96ace1bc262cdee99p0,
+    0x1.b33333333332fp-1
+  },
+  { // Entry 308
+    -0x1.32ee3b77f374414d3a29141080dfabeap0,
+    -0x1.aaaaaaaaaaaa6p-1
+  },
+  { // Entry 309
+    0x1.32ee3b77f374414d3a29141080dfabeap0,
+    0x1.aaaaaaaaaaaa6p-1
+  },
+  { // Entry 310
+    -0x1.258fdae8372b9231a664ea76c9d6586fp0,
+    -0x1.a22222222221dp-1
+  },
+  { // Entry 311
+    0x1.258fdae8372b9231a664ea76c9d6586fp0,
+    0x1.a22222222221dp-1
+  },
+  { // Entry 312
+    -0x1.193ea7aad0302d04dcfd1b8e192ed85dp0,
+    -0x1.9999999999994p-1
+  },
+  { // Entry 313
+    0x1.193ea7aad0302d04dcfd1b8e192ed85dp0,
+    0x1.9999999999994p-1
+  },
+  { // Entry 314
+    -0x1.0dcefea4d025e0b8d09052e46fdf4f2ep0,
+    -0x1.911111111110bp-1
+  },
+  { // Entry 315
+    0x1.0dcefea4d025e0b8d09052e46fdf4f2ep0,
+    0x1.911111111110bp-1
+  },
+  { // Entry 316
+    -0x1.031ef11090f771d990e41e47d30913d6p0,
+    -0x1.8888888888882p-1
+  },
+  { // Entry 317
+    0x1.031ef11090f771d990e41e47d30913d6p0,
+    0x1.8888888888882p-1
+  },
+  { // Entry 318
+    -0x1.f2272ae325a47546f69496cf861be046p-1,
+    -0x1.7fffffffffff9p-1
+  },
+  { // Entry 319
+    0x1.f2272ae325a47546f69496cf861be046p-1,
+    0x1.7fffffffffff9p-1
+  },
+  { // Entry 320
+    -0x1.df2e6d6e5fb9a3aede73b55578f55672p-1,
+    -0x1.7777777777770p-1
+  },
+  { // Entry 321
+    0x1.df2e6d6e5fb9a3aede73b55578f55672p-1,
+    0x1.7777777777770p-1
+  },
+  { // Entry 322
+    -0x1.cd302116f50ababc40c132419e1dab2ap-1,
+    -0x1.6eeeeeeeeeee7p-1
+  },
+  { // Entry 323
+    0x1.cd302116f50ababc40c132419e1dab2ap-1,
+    0x1.6eeeeeeeeeee7p-1
+  },
+  { // Entry 324
+    -0x1.bc0ed0947fbd88e1ba52723b57950592p-1,
+    -0x1.666666666665ep-1
+  },
+  { // Entry 325
+    0x1.bc0ed0947fbd88e1ba52723b57950592p-1,
+    0x1.666666666665ep-1
+  },
+  { // Entry 326
+    -0x1.abb1c9065825972aaaf3d164ca1f5323p-1,
+    -0x1.5ddddddddddd5p-1
+  },
+  { // Entry 327
+    0x1.abb1c9065825972aaaf3d164ca1f5323p-1,
+    0x1.5ddddddddddd5p-1
+  },
+  { // Entry 328
+    -0x1.9c041f7ed8d229e312aad84998a0e008p-1,
+    -0x1.555555555554cp-1
+  },
+  { // Entry 329
+    0x1.9c041f7ed8d229e312aad84998a0e008p-1,
+    0x1.555555555554cp-1
+  },
+  { // Entry 330
+    -0x1.8cf3f3b791739ba35824b20bb67bc051p-1,
+    -0x1.4ccccccccccc3p-1
+  },
+  { // Entry 331
+    0x1.8cf3f3b791739ba35824b20bb67bc051p-1,
+    0x1.4ccccccccccc3p-1
+  },
+  { // Entry 332
+    -0x1.7e71ded66460614d3cfeeae5195853fdp-1,
+    -0x1.444444444443ap-1
+  },
+  { // Entry 333
+    0x1.7e71ded66460614d3cfeeae5195853fdp-1,
+    0x1.444444444443ap-1
+  },
+  { // Entry 334
+    -0x1.7070827f1c7ee9fc23eb09099495f760p-1,
+    -0x1.3bbbbbbbbbbb1p-1
+  },
+  { // Entry 335
+    0x1.7070827f1c7ee9fc23eb09099495f760p-1,
+    0x1.3bbbbbbbbbbb1p-1
+  },
+  { // Entry 336
+    -0x1.62e42fefa39ddb5793c7673063c5ed5ep-1,
+    -0x1.3333333333328p-1
+  },
+  { // Entry 337
+    0x1.62e42fefa39ddb5793c7673063c5ed5ep-1,
+    0x1.3333333333328p-1
+  },
+  { // Entry 338
+    -0x1.55c2a141bd913c9da91e9ba97d84ef42p-1,
+    -0x1.2aaaaaaaaaa9fp-1
+  },
+  { // Entry 339
+    0x1.55c2a141bd913c9da91e9ba97d84ef42p-1,
+    0x1.2aaaaaaaaaa9fp-1
+  },
+  { // Entry 340
+    -0x1.4902c08bec8b8d6ba2debcee67107aa5p-1,
+    -0x1.2222222222216p-1
+  },
+  { // Entry 341
+    0x1.4902c08bec8b8d6ba2debcee67107aa5p-1,
+    0x1.2222222222216p-1
+  },
+  { // Entry 342
+    -0x1.3c9c79bc8508ca2d5b90a842ee7edfa3p-1,
+    -0x1.199999999998dp-1
+  },
+  { // Entry 343
+    0x1.3c9c79bc8508ca2d5b90a842ee7edfa3p-1,
+    0x1.199999999998dp-1
+  },
+  { // Entry 344
+    -0x1.308894d710d767af349ad5664f91afbcp-1,
+    -0x1.1111111111104p-1
+  },
+  { // Entry 345
+    0x1.308894d710d767af349ad5664f91afbcp-1,
+    0x1.1111111111104p-1
+  },
+  { // Entry 346
+    -0x1.24c096cf976a96087c1335628fdc0098p-1,
+    -0x1.088888888887bp-1
+  },
+  { // Entry 347
+    0x1.24c096cf976a96087c1335628fdc0098p-1,
+    0x1.088888888887bp-1
+  },
+  { // Entry 348
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 349
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 350
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 351
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 352
+    0x1.24c096cf976bc79a7ab78995d36b066bp-1,
+    0x1.0888888888889p-1
+  },
+  { // Entry 353
+    -0x1.24c096cf976bc79a7ab78995d36b066bp-1,
+    -0x1.0888888888889p-1
+  },
+  { // Entry 354
+    0x1.308894d710d8a0ba55ff01eb87cbc220p-1,
+    0x1.1111111111112p-1
+  },
+  { // Entry 355
+    -0x1.308894d710d8a0ba55ff01eb87cbc220p-1,
+    -0x1.1111111111112p-1
+  },
+  { // Entry 356
+    0x1.3c9c79bc850a0b52fa4dacd910d12a32p-1,
+    0x1.199999999999bp-1
+  },
+  { // Entry 357
+    -0x1.3c9c79bc850a0b52fa4dacd910d12a32p-1,
+    -0x1.199999999999bp-1
+  },
+  { // Entry 358
+    0x1.4902c08bec8cd75f11102da30f1f78d7p-1,
+    0x1.2222222222224p-1
+  },
+  { // Entry 359
+    -0x1.4902c08bec8cd75f11102da30f1f78d7p-1,
+    -0x1.2222222222224p-1
+  },
+  { // Entry 360
+    0x1.55c2a141bd929027179a90e1bcdc1a2dp-1,
+    0x1.2aaaaaaaaaaadp-1
+  },
+  { // Entry 361
+    -0x1.55c2a141bd929027179a90e1bcdc1a2dp-1,
+    -0x1.2aaaaaaaaaaadp-1
+  },
+  { // Entry 362
+    0x1.62e42fefa39f395793c767300da3ed5ep-1,
+    0x1.3333333333336p-1
+  },
+  { // Entry 363
+    -0x1.62e42fefa39f395793c767300da3ed5ep-1,
+    -0x1.3333333333336p-1
+  },
+  { // Entry 364
+    0x1.7070827f1c80536feb7673dd88b946ecp-1,
+    0x1.3bbbbbbbbbbbfp-1
+  },
+  { // Entry 365
+    -0x1.7070827f1c80536feb7673dd88b946ecp-1,
+    -0x1.3bbbbbbbbbbbfp-1
+  },
+  { // Entry 366
+    0x1.7e71ded66461d753e33ac2ff618644e0p-1,
+    0x1.4444444444448p-1
+  },
+  { // Entry 367
+    -0x1.7e71ded66461d753e33ac2ff618644e0p-1,
+    -0x1.4444444444448p-1
+  },
+  { // Entry 368
+    0x1.8cf3f3b791751f845062c18f4b0d7fe7p-1,
+    0x1.4ccccccccccd1p-1
+  },
+  { // Entry 369
+    -0x1.8cf3f3b791751f845062c18f4b0d7fe7p-1,
+    -0x1.4ccccccccccd1p-1
+  },
+  { // Entry 370
+    0x1.9c041f7ed8d3bd1645de0b7c8544b713p-1,
+    0x1.555555555555ap-1
+  },
+  { // Entry 371
+    -0x1.9c041f7ed8d3bd1645de0b7c8544b713p-1,
+    -0x1.555555555555ap-1
+  },
+  { // Entry 372
+    0x1.abb1c90658273b62b26c47dabd2b16cap-1,
+    0x1.5dddddddddde3p-1
+  },
+  { // Entry 373
+    -0x1.abb1c90658273b62b26c47dabd2b16cap-1,
+    -0x1.5dddddddddde3p-1
+  },
+  { // Entry 374
+    0x1.bc0ed0947fbf4018f189a9725a0c8214p-1,
+    0x1.666666666666cp-1
+  },
+  { // Entry 375
+    -0x1.bc0ed0947fbf4018f189a9725a0c8214p-1,
+    -0x1.666666666666cp-1
+  },
+  { // Entry 376
+    0x1.cd302116f50c8745aed84bd751fb575cp-1,
+    0x1.6eeeeeeeeeef5p-1
+  },
+  { // Entry 377
+    -0x1.cd302116f50c8745aed84bd751fb575cp-1,
+    -0x1.6eeeeeeeeeef5p-1
+  },
+  { // Entry 378
+    0x1.df2e6d6e5fbb884c684c52df3b260c38p-1,
+    0x1.777777777777ep-1
+  },
+  { // Entry 379
+    -0x1.df2e6d6e5fbb884c684c52df3b260c38p-1,
+    -0x1.777777777777ep-1
+  },
+  { // Entry 380
+    0x1.f2272ae325a67546f69496cf861be046p-1,
+    0x1.8000000000007p-1
+  },
+  { // Entry 381
+    -0x1.f2272ae325a67546f69496cf861be046p-1,
+    -0x1.8000000000007p-1
+  },
+  { // Entry 382
+    0x1.031ef11090f8818c48703199fec1433ap0,
+    0x1.8888888888890p-1
+  },
+  { // Entry 383
+    -0x1.031ef11090f8818c48703199fec1433ap0,
+    -0x1.8888888888890p-1
+  },
+  { // Entry 384
+    0x1.0dcefea4d0270295d8d877b36ea1c0e3p0,
+    0x1.9111111111119p-1
+  },
+  { // Entry 385
+    -0x1.0dcefea4d0270295d8d877b36ea1c0e3p0,
+    -0x1.9111111111119p-1
+  },
+  { // Entry 386
+    0x1.193ea7aad03164214ec438001cc9b599p0,
+    0x1.99999999999a2p-1
+  },
+  { // Entry 387
+    -0x1.193ea7aad03164214ec438001cc9b599p0,
+    -0x1.99999999999a2p-1
+  },
+  { // Entry 388
+    0x1.258fdae8372ce27963c75835d46b66e6p0,
+    0x1.a22222222222bp-1
+  },
+  { // Entry 389
+    -0x1.258fdae8372ce27963c75835d46b66e6p0,
+    -0x1.a22222222222bp-1
+  },
+  { // Entry 390
+    0x1.32ee3b77f375afd8dd11ce3f9e4b9287p0,
+    0x1.aaaaaaaaaaab4p-1
+  },
+  { // Entry 391
+    -0x1.32ee3b77f375afd8dd11ce3f9e4b9287p0,
+    -0x1.aaaaaaaaaaab4p-1
+  },
+  { // Entry 392
+    0x1.41933b0e44649943f09224fce382c799p0,
+    0x1.b33333333333dp-1
+  },
+  { // Entry 393
+    -0x1.41933b0e44649943f09224fce382c799p0,
+    -0x1.b33333333333dp-1
+  },
+  { // Entry 394
+    0x1.51cca16d7bbbc179603c253505b36b7ap0,
+    0x1.bbbbbbbbbbbc6p-1
+  },
+  { // Entry 395
+    -0x1.51cca16d7bbbc179603c253505b36b7ap0,
+    -0x1.bbbbbbbbbbbc6p-1
+  },
+  { // Entry 396
+    0x1.640775d4dd9a4337400b58abfdea644fp0,
+    0x1.c44444444444fp-1
+  },
+  { // Entry 397
+    -0x1.640775d4dd9a4337400b58abfdea644fp0,
+    -0x1.c44444444444fp-1
+  },
+  { // Entry 398
+    0x1.78e360604b349eb43d8e7eb37a3c01b6p0,
+    0x1.cccccccccccd8p-1
+  },
+  { // Entry 399
+    -0x1.78e360604b349eb43d8e7eb37a3c01b6p0,
+    -0x1.cccccccccccd8p-1
+  },
+  { // Entry 400
+    0x1.9157dfdd1b4148ea63817356fc04c13bp0,
+    0x1.d555555555561p-1
+  },
+  { // Entry 401
+    -0x1.9157dfdd1b4148ea63817356fc04c13bp0,
+    -0x1.d555555555561p-1
+  },
+  { // Entry 402
+    0x1.af038cbcdfe4dcf0e5a000b57077d005p0,
+    0x1.dddddddddddeap-1
+  },
+  { // Entry 403
+    -0x1.af038cbcdfe4dcf0e5a000b57077d005p0,
+    -0x1.dddddddddddeap-1
+  },
+  { // Entry 404
+    0x1.d4ef968880e16e7c57738ee1cab27657p0,
+    0x1.e666666666673p-1
+  },
+  { // Entry 405
+    -0x1.d4ef968880e16e7c57738ee1cab27657p0,
+    -0x1.e666666666673p-1
+  },
+  { // Entry 406
+    0x1.04f65f9c729aa8b4082276b069b6c479p1,
+    0x1.eeeeeeeeeeefcp-1
+  },
+  { // Entry 407
+    -0x1.04f65f9c729aa8b4082276b069b6c479p1,
+    -0x1.eeeeeeeeeeefcp-1
+  },
+  { // Entry 408
+    0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    0x1.f777777777777p-1
+  },
+  { // Entry 409
+    -0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    -0x1.f777777777777p-1
+  },
+  { // Entry 410
+    -0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 411
+    0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 412
+    -0x1.25e4f7b2737fa14486612173c6896892p4,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 413
+    0x1.25e4f7b2737fa14486612173c6896892p4,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 414
+    -0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    -0x1.ffffffffffffdp-1
+  },
+  { // Entry 415
+    0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    0x1.ffffffffffffdp-1
+  },
+  { // Entry 416
+    0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 417
+    -0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 418
+    0x1.25e4f7b2737fa14486612173c6896892p4,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 419
+    -0x1.25e4f7b2737fa14486612173c6896892p4,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 420
+    0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    0x1.ffffffffffffdp-1
+  },
+  { // Entry 421
+    -0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    -0x1.ffffffffffffdp-1
+  },
+  { // Entry 422
+    0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    0x1.47ae147ae147ap-3
+  },
+  { // Entry 423
+    -0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    -0x1.47ae147ae147ap-3
+  },
+  { // Entry 424
+    0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 425
+    -0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 426
+    0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    0x1.47ae147ae147cp-3
+  },
+  { // Entry 427
+    -0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    -0x1.47ae147ae147cp-3
+  },
+  { // Entry 428
+    -0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    -0x1.47ae147ae147cp-3
+  },
+  { // Entry 429
+    0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    0x1.47ae147ae147cp-3
+  },
+  { // Entry 430
+    -0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 431
+    0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 432
+    -0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    -0x1.47ae147ae147ap-3
+  },
+  { // Entry 433
+    0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    0x1.47ae147ae147ap-3
+  },
+  { // Entry 434
+    0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 435
+    -0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 436
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 437
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 438
+    0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 439
+    -0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 440
+    0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 441
+    -0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 442
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.0p-2
+  },
+  { // Entry 443
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.0p-2
+  },
+  { // Entry 444
+    0x1.058aefa811452b8387cd4093155eafe4p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 445
+    -0x1.058aefa811452b8387cd4093155eafe4p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 446
+    0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 447
+    -0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 448
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.0p-3
+  },
+  { // Entry 449
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.0p-3
+  },
+  { // Entry 450
+    0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 451
+    -0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 452
+    0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 453
+    -0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 454
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.0p-4
+  },
+  { // Entry 455
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.0p-4
+  },
+  { // Entry 456
+    0x1.005588ad375adddb2322b573d6963771p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 457
+    -0x1.005588ad375adddb2322b573d6963771p-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 458
+    0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 459
+    -0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 460
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.0p-5
+  },
+  { // Entry 461
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.0p-5
+  },
+  { // Entry 462
+    0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 463
+    -0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 464
+    0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 465
+    -0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 466
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.0p-6
+  },
+  { // Entry 467
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.0p-6
+  },
+  { // Entry 468
+    0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 469
+    -0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 470
+    0x1.000155588891a53723d0cfc25d992fd2p-7,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 471
+    -0x1.000155588891a53723d0cfc25d992fd2p-7,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 472
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.0p-7
+  },
+  { // Entry 473
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.0p-7
+  },
+  { // Entry 474
+    0x1.000155588891bd3783d24fc85db13332p-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 475
+    -0x1.000155588891bd3783d24fc85db13332p-7,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 476
+    0x1.000055558888a51ae61ef133fc078f9ap-8,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 477
+    -0x1.000055558888a51ae61ef133fc078f9ap-8,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 478
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.0p-8
+  },
+  { // Entry 479
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.0p-8
+  },
+  { // Entry 480
+    0x1.000055558888bd1afe1f09341407a85bp-8,
+    0x1.0000000000001p-8
+  },
+  { // Entry 481
+    -0x1.000055558888bd1afe1f09341407a85bp-8,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 482
+    0x1.000015555888811acfc98c1e9ae230fcp-9,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 483
+    -0x1.000015555888811acfc98c1e9ae230fcp-9,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 484
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.0p-9
+  },
+  { // Entry 485
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.0p-9
+  },
+  { // Entry 486
+    0x1.000015555888991ad5c98d9e9b423144p-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 487
+    -0x1.000015555888991ad5c98d9e9b423144p-9,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 488
+    0x1.000005555588808ad12d373b75ab20a3p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 489
+    -0x1.000005555588808ad12d373b75ab20a3p-10,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 490
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.0p-10
+  },
+  { // Entry 491
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.0p-10
+  },
+  { // Entry 492
+    0x1.000005555588988ad2ad375375aca0afp-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 493
+    -0x1.000005555588988ad2ad375375aca0afp-10,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 494
+    0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 495
+    -0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 496
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.0p-14
+  },
+  { // Entry 497
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.0p-14
+  },
+  { // Entry 498
+    0x1.000000055555658888898ad1ad2aee1ep-14,
+    0x1.0000000000001p-14
+  },
+  { // Entry 499
+    -0x1.000000055555658888898ad1ad2aee1ep-14,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 500
+    0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    0x1.fffffffffffffp-29
+  },
+  { // Entry 501
+    -0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    -0x1.fffffffffffffp-29
+  },
+  { // Entry 502
+    0x1.00000000000000555555555555558888p-28,
+    0x1.0p-28
+  },
+  { // Entry 503
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.0p-28
+  },
+  { // Entry 504
+    0x1.00000000000010555555555555658888p-28,
+    0x1.0000000000001p-28
+  },
+  { // Entry 505
+    -0x1.00000000000010555555555555658888p-28,
+    -0x1.0000000000001p-28
+  },
+  { // Entry 506
+    0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 507
+    -0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 508
+    0x1.00000000000000055555555555555588p-30,
+    0x1.0p-30
+  },
+  { // Entry 509
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.0p-30
+  },
+  { // Entry 510
+    0x1.00000000000010055555555555565588p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 511
+    -0x1.00000000000010055555555555565588p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 512
+    -0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 513
+    0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 514
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 515
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 516
+    -0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 517
+    0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 518
+    -0x1.058aefa811452b8387cd4093155eafe4p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 519
+    0x1.058aefa811452b8387cd4093155eafe4p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 520
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.0p-2
+  },
+  { // Entry 521
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.0p-2
+  },
+  { // Entry 522
+    -0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 523
+    0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 524
+    -0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 525
+    0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 526
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.0p-3
+  },
+  { // Entry 527
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.0p-3
+  },
+  { // Entry 528
+    -0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 529
+    0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 530
+    -0x1.005588ad375adddb2322b573d6963771p-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 531
+    0x1.005588ad375adddb2322b573d6963771p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 532
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.0p-4
+  },
+  { // Entry 533
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.0p-4
+  },
+  { // Entry 534
+    -0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 535
+    0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 536
+    -0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 537
+    0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 538
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.0p-5
+  },
+  { // Entry 539
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.0p-5
+  },
+  { // Entry 540
+    -0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 541
+    0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 542
+    -0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 543
+    0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 544
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.0p-6
+  },
+  { // Entry 545
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.0p-6
+  },
+  { // Entry 546
+    -0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 547
+    0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 548
+    -0x1.000155588891bd3783d24fc85db13332p-7,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 549
+    0x1.000155588891bd3783d24fc85db13332p-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 550
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.0p-7
+  },
+  { // Entry 551
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.0p-7
+  },
+  { // Entry 552
+    -0x1.000155588891a53723d0cfc25d992fd2p-7,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 553
+    0x1.000155588891a53723d0cfc25d992fd2p-7,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 554
+    -0x1.000055558888bd1afe1f09341407a85bp-8,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 555
+    0x1.000055558888bd1afe1f09341407a85bp-8,
+    0x1.0000000000001p-8
+  },
+  { // Entry 556
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.0p-8
+  },
+  { // Entry 557
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.0p-8
+  },
+  { // Entry 558
+    -0x1.000055558888a51ae61ef133fc078f9ap-8,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 559
+    0x1.000055558888a51ae61ef133fc078f9ap-8,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 560
+    -0x1.000015555888991ad5c98d9e9b423144p-9,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 561
+    0x1.000015555888991ad5c98d9e9b423144p-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 562
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.0p-9
+  },
+  { // Entry 563
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.0p-9
+  },
+  { // Entry 564
+    -0x1.000015555888811acfc98c1e9ae230fcp-9,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 565
+    0x1.000015555888811acfc98c1e9ae230fcp-9,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 566
+    -0x1.000005555588988ad2ad375375aca0afp-10,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 567
+    0x1.000005555588988ad2ad375375aca0afp-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 568
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.0p-10
+  },
+  { // Entry 569
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.0p-10
+  },
+  { // Entry 570
+    -0x1.000005555588808ad12d373b75ab20a3p-10,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 571
+    0x1.000005555588808ad12d373b75ab20a3p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 572
+    -0x1.000000055555658888898ad1ad2aee1ep-14,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 573
+    0x1.000000055555658888898ad1ad2aee1ep-14,
+    0x1.0000000000001p-14
+  },
+  { // Entry 574
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.0p-14
+  },
+  { // Entry 575
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.0p-14
+  },
+  { // Entry 576
+    -0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 577
+    0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 578
+    -0x1.00000000000010555555555555658888p-28,
+    -0x1.0000000000001p-28
+  },
+  { // Entry 579
+    0x1.00000000000010555555555555658888p-28,
+    0x1.0000000000001p-28
+  },
+  { // Entry 580
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.0p-28
+  },
+  { // Entry 581
+    0x1.00000000000000555555555555558888p-28,
+    0x1.0p-28
+  },
+  { // Entry 582
+    -0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    -0x1.fffffffffffffp-29
+  },
+  { // Entry 583
+    0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    0x1.fffffffffffffp-29
+  },
+  { // Entry 584
+    -0x1.00000000000010055555555555565588p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 585
+    0x1.00000000000010055555555555565588p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 586
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.0p-30
+  },
+  { // Entry 587
+    0x1.00000000000000055555555555555588p-30,
+    0x1.0p-30
+  },
+  { // Entry 588
+    -0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 589
+    0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 590
+    HUGE_VAL,
+    0x1.0p0
+  },
+  { // Entry 591
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 592
+    0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 593
+    -0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 594
+    0x1.0f2eb070230688149a25318fd8d4ea0fp0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 595
+    -0x1.0f2eb070230688149a25318fd8d4ea0fp0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 596
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 597
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 598
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 599
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 600
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 601
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 602
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 603
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 604
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 605
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 606
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 607
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 608
+    0.0,
+    0.0
+  },
+  { // Entry 609
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/atanhf_intel_data.h b/tests/math_data/atanhf_intel_data.h
new file mode 100644
index 0000000..9d8025a
--- /dev/null
+++ b/tests/math_data/atanhf_intel_data.h
@@ -0,0 +1,2090 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_atanhf_intel_data[] = {
+  { // Entry 0
+    -0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    -0x1.1ffcp-20
+  },
+  { // Entry 1
+    0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    0x1.1ffcp-20
+  },
+  { // Entry 2
+    -0x1.5f3287f902075197c786c1cf696101b4p-1,
+    -0x1.30d35cp-1
+  },
+  { // Entry 3
+    0x1.5f3287f902075197c786c1cf696101b4p-1,
+    0x1.30d35cp-1
+  },
+  { // Entry 4
+    -0x1.8a0ca6ffdb34c70bb4a5b23fb6e19d01p-1,
+    -0x1.4b1df6p-1
+  },
+  { // Entry 5
+    0x1.8a0ca6ffdb34c70bb4a5b23fb6e19d01p-1,
+    0x1.4b1df6p-1
+  },
+  { // Entry 6
+    -0x1.6d46ff0031931d74cbb9c2cfd9429d8cp-3,
+    -0x1.6973e0p-3
+  },
+  { // Entry 7
+    0x1.6d46ff0031931d74cbb9c2cfd9429d8cp-3,
+    0x1.6973e0p-3
+  },
+  { // Entry 8
+    -0x1.713f610010deb18ee2e239f1963a1405p-12,
+    -0x1.713f60p-12
+  },
+  { // Entry 9
+    0x1.713f610010deb18ee2e239f1963a1405p-12,
+    0x1.713f60p-12
+  },
+  { // Entry 10
+    -0x1.7141490014d5f81f903df4950464cda8p-12,
+    -0x1.714148p-12
+  },
+  { // Entry 11
+    0x1.7141490014d5f81f903df4950464cda8p-12,
+    0x1.714148p-12
+  },
+  { // Entry 12
+    -0x1.714177001535ac6e291f246ad5579b0ep-12,
+    -0x1.714176p-12
+  },
+  { // Entry 13
+    0x1.714177001535ac6e291f246ad5579b0ep-12,
+    0x1.714176p-12
+  },
+  { // Entry 14
+    -0x1.15963da938a6c10a74aafac840a012a1p0,
+    -0x1.96efa2p-1
+  },
+  { // Entry 15
+    0x1.15963da938a6c10a74aafac840a012a1p0,
+    0x1.96efa2p-1
+  },
+  { // Entry 16
+    -0x1.17f6e9a62565d644cd0022d91487ef7bp0,
+    -0x1.98acaep-1
+  },
+  { // Entry 17
+    0x1.17f6e9a62565d644cd0022d91487ef7bp0,
+    0x1.98acaep-1
+  },
+  { // Entry 18
+    -0x1.1ba0f2fffc8e369353caacfa549acbf2p0,
+    -0x1.9b4dc0p-1
+  },
+  { // Entry 19
+    0x1.1ba0f2fffc8e369353caacfa549acbf2p0,
+    0x1.9b4dc0p-1
+  },
+  { // Entry 20
+    -0x1.2dd9b663e5ae06cd47d4cca1f6139598p0,
+    -0x1.a782a6p-1
+  },
+  { // Entry 21
+    0x1.2dd9b663e5ae06cd47d4cca1f6139598p0,
+    0x1.a782a6p-1
+  },
+  { // Entry 22
+    -0x1.cd2af1003fb97ed31a696564871fd18ap-4,
+    -0x1.cb3a9ap-4
+  },
+  { // Entry 23
+    0x1.cd2af1003fb97ed31a696564871fd18ap-4,
+    0x1.cb3a9ap-4
+  },
+  { // Entry 24
+    -0x1.d077fc01fda53b80967d942b1ffe2193p-16,
+    -0x1.d077fcp-16
+  },
+  { // Entry 25
+    0x1.d077fc01fda53b80967d942b1ffe2193p-16,
+    0x1.d077fcp-16
+  },
+  { // Entry 26
+    -0x1.fb0335b41665a445bad16a5da2454d1ap-3,
+    -0x1.f0e7p-3
+  },
+  { // Entry 27
+    0x1.fb0335b41665a445bad16a5da2454d1ap-3,
+    0x1.f0e7p-3
+  },
+  { // Entry 28
+    -0x1.fbbbe9001627e7188cb48f38c4820e35p-3,
+    -0x1.f194d0p-3
+  },
+  { // Entry 29
+    0x1.fbbbe9001627e7188cb48f38c4820e35p-3,
+    0x1.f194d0p-3
+  },
+  { // Entry 30
+    -0x1.193d550095876f79105e76c75ca58b2fp-1,
+    -0x1.fffe04p-2
+  },
+  { // Entry 31
+    0x1.193d550095876f79105e76c75ca58b2fp-1,
+    0x1.fffe04p-2
+  },
+  { // Entry 32
+    -0x1.193ea5002587c5e868720bc46d87505bp-1,
+    -0x1.fffffcp-2
+  },
+  { // Entry 33
+    0x1.193ea5002587c5e868720bc46d87505bp-1,
+    0x1.fffffcp-2
+  },
+  { // Entry 34
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 35
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 36
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 37
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 38
+    0x1.00000200000000000000155555d55556p-41,
+    0x1.000002p-41
+  },
+  { // Entry 39
+    -0x1.00000200000000000000155555d55556p-41,
+    -0x1.000002p-41
+  },
+  { // Entry 40
+    0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    0x1.000010p-1
+  },
+  { // Entry 41
+    -0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    -0x1.000010p-1
+  },
+  { // Entry 42
+    0x1.05901c768a92c5a23c8e8531ffe01945p-2,
+    0x1.0004dap-2
+  },
+  { // Entry 43
+    -0x1.05901c768a92c5a23c8e8531ffe01945p-2,
+    -0x1.0004dap-2
+  },
+  { // Entry 44
+    0x1.01d972ffff40cd1cf377322d5faca975p-6,
+    0x1.01d4p-6
+  },
+  { // Entry 45
+    -0x1.01d972ffff40cd1cf377322d5faca975p-6,
+    -0x1.01d4p-6
+  },
+  { // Entry 46
+    0x1.0b4d0560a980ef9bc645b2c29563e89fp-2,
+    0x1.0564p-2
+  },
+  { // Entry 47
+    -0x1.0b4d0560a980ef9bc645b2c29563e89fp-2,
+    -0x1.0564p-2
+  },
+  { // Entry 48
+    0x1.0616e1ffd00766707c845454688ac285p-5,
+    0x1.06p-5
+  },
+  { // Entry 49
+    -0x1.0616e1ffd00766707c845454688ac285p-5,
+    -0x1.06p-5
+  },
+  { // Entry 50
+    0x1.0c1a71e0f243aaabf988a086b92d8098p-2,
+    0x1.0624p-2
+  },
+  { // Entry 51
+    -0x1.0c1a71e0f243aaabf988a086b92d8098p-2,
+    -0x1.0624p-2
+  },
+  { // Entry 52
+    0x1.068016ffffd89ea5af86d140cc4499acp-9,
+    0x1.0680p-9
+  },
+  { // Entry 53
+    -0x1.068016ffffd89ea5af86d140cc4499acp-9,
+    -0x1.0680p-9
+  },
+  { // Entry 54
+    0x1.10f99a58d073173f64d078d1921d0abdp-2,
+    0x1.0ab0p-2
+  },
+  { // Entry 55
+    -0x1.10f99a58d073173f64d078d1921d0abdp-2,
+    -0x1.0ab0p-2
+  },
+  { // Entry 56
+    0x1.10022efcd204975cd5de2eb798c5a366p-4,
+    0x1.0f9cp-4
+  },
+  { // Entry 57
+    -0x1.10022efcd204975cd5de2eb798c5a366p-4,
+    -0x1.0f9cp-4
+  },
+  { // Entry 58
+    0x1.384c7bbb40817a713670eda9b1b1aacdp-1,
+    0x1.1694p-1
+  },
+  { // Entry 59
+    -0x1.384c7bbb40817a713670eda9b1b1aacdp-1,
+    -0x1.1694p-1
+  },
+  { // Entry 60
+    0x1.189a2700033273251e12d5eba90e4465p-3,
+    0x1.16dcp-3
+  },
+  { // Entry 61
+    -0x1.189a2700033273251e12d5eba90e4465p-3,
+    -0x1.16dcp-3
+  },
+  { // Entry 62
+    0x1.3a52accbc786f237ffb73633c18324fbp-1,
+    0x1.18p-1
+  },
+  { // Entry 63
+    -0x1.3a52accbc786f237ffb73633c18324fbp-1,
+    -0x1.18p-1
+  },
+  { // Entry 64
+    0x1.19c3b0fa86d540072c08c5d6b394b165p-3,
+    0x1.18p-3
+  },
+  { // Entry 65
+    -0x1.19c3b0fa86d540072c08c5d6b394b165p-3,
+    -0x1.18p-3
+  },
+  { // Entry 66
+    0x1.1c8f7300000b7dc0ff5b03e64623dec6p-4,
+    0x1.1c1a7ap-4
+  },
+  { // Entry 67
+    -0x1.1c8f7300000b7dc0ff5b03e64623dec6p-4,
+    -0x1.1c1a7ap-4
+  },
+  { // Entry 68
+    0x1.44f16a9bea7f03af529b037b235f31b5p-1,
+    0x1.1f5cp-1
+  },
+  { // Entry 69
+    -0x1.44f16a9bea7f03af529b037b235f31b5p-1,
+    -0x1.1f5cp-1
+  },
+  { // Entry 70
+    0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    0x1.1ffcp-20
+  },
+  { // Entry 71
+    -0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    -0x1.1ffcp-20
+  },
+  { // Entry 72
+    0x1.27f9cfc34385aff96fa7a25c9010711bp-2,
+    0x1.1ffffep-2
+  },
+  { // Entry 73
+    -0x1.27f9cfc34385aff96fa7a25c9010711bp-2,
+    -0x1.1ffffep-2
+  },
+  { // Entry 74
+    0x1.5deb9a83ee95c385ba5335580af08f08p-1,
+    0x1.30p-1
+  },
+  { // Entry 75
+    -0x1.5deb9a83ee95c385ba5335580af08f08p-1,
+    -0x1.30p-1
+  },
+  { // Entry 76
+    0x1.5e0e0298d9eec3ab8b4f4e1b8d295ac3p-1,
+    0x1.301646p-1
+  },
+  { // Entry 77
+    -0x1.5e0e0298d9eec3ab8b4f4e1b8d295ac3p-1,
+    -0x1.301646p-1
+  },
+  { // Entry 78
+    0x1.5e60e400006f52cb7692b6e8a51da384p-1,
+    0x1.304be6p-1
+  },
+  { // Entry 79
+    -0x1.5e60e400006f52cb7692b6e8a51da384p-1,
+    -0x1.304be6p-1
+  },
+  { // Entry 80
+    0x1.47f5170000024233854b6203d98d324fp-5,
+    0x1.47c844p-5
+  },
+  { // Entry 81
+    -0x1.47f5170000024233854b6203d98d324fp-5,
+    -0x1.47c844p-5
+  },
+  { // Entry 82
+    0x1.48ae1cfffeff307b13c17eb56fdcf7c2p-5,
+    0x1.4880fep-5
+  },
+  { // Entry 83
+    -0x1.48ae1cfffeff307b13c17eb56fdcf7c2p-5,
+    -0x1.4880fep-5
+  },
+  { // Entry 84
+    0x1.79d4c40000354d83f4c26c097b0e75fdp-2,
+    0x1.6991dap-2
+  },
+  { // Entry 85
+    -0x1.79d4c40000354d83f4c26c097b0e75fdp-2,
+    -0x1.6991dap-2
+  },
+  { // Entry 86
+    0x1.c7139f215feb3a72cf1b5e192f938ea4p-1,
+    0x1.6bef72p-1
+  },
+  { // Entry 87
+    -0x1.c7139f215feb3a72cf1b5e192f938ea4p-1,
+    -0x1.6bef72p-1
+  },
+  { // Entry 88
+    0x1.7140e3001401c1b014172d6fd91711aep-12,
+    0x1.7140e2p-12
+  },
+  { // Entry 89
+    -0x1.7140e3001401c1b014172d6fd91711aep-12,
+    -0x1.7140e2p-12
+  },
+  { // Entry 90
+    0x1.e05648db7af67a5476dcef31c7834740p-1,
+    0x1.77fffep-1
+  },
+  { // Entry 91
+    -0x1.e05648db7af67a5476dcef31c7834740p-1,
+    -0x1.77fffep-1
+  },
+  { // Entry 92
+    0x1.77fffe0000000010e5f5104d55b356b3p-30,
+    0x1.77fffep-30
+  },
+  { // Entry 93
+    -0x1.77fffe0000000010e5f5104d55b356b3p-30,
+    -0x1.77fffep-30
+  },
+  { // Entry 94
+    0x1.93b0aee21c2c808f5840a8fdec9984e1p-2,
+    0x1.80p-2
+  },
+  { // Entry 95
+    -0x1.93b0aee21c2c808f5840a8fdec9984e1p-2,
+    -0x1.80p-2
+  },
+  { // Entry 96
+    0x1.f22781be9e69629e565cb27d7e8be241p-1,
+    0x1.800026p-1
+  },
+  { // Entry 97
+    -0x1.f22781be9e69629e565cb27d7e8be241p-1,
+    -0x1.800026p-1
+  },
+  { // Entry 98
+    0x1.f22a81c2c1df6e290a34d78c0e42165fp-1,
+    0x1.800176p-1
+  },
+  { // Entry 99
+    -0x1.f22a81c2c1df6e290a34d78c0e42165fp-1,
+    -0x1.800176p-1
+  },
+  { // Entry 100
+    0x1.f4d9b1f449f9637049f465ad813677cdp-1,
+    0x1.812ceap-1
+  },
+  { // Entry 101
+    -0x1.f4d9b1f449f9637049f465ad813677cdp-1,
+    -0x1.812ceap-1
+  },
+  { // Entry 102
+    0x1.f6a98a347aefdfbfdfc26e6c5fd39d63p-1,
+    0x1.81f5b6p-1
+  },
+  { // Entry 103
+    -0x1.f6a98a347aefdfbfdfc26e6c5fd39d63p-1,
+    -0x1.81f5b6p-1
+  },
+  { // Entry 104
+    0x1.f6b16e036a1228e2d7592b99921a73fdp-1,
+    0x1.81f91ep-1
+  },
+  { // Entry 105
+    -0x1.f6b16e036a1228e2d7592b99921a73fdp-1,
+    -0x1.81f91ep-1
+  },
+  { // Entry 106
+    0x1.879115ffff8980f9da1405781afd63e0p-3,
+    0x1.82dd3cp-3
+  },
+  { // Entry 107
+    -0x1.879115ffff8980f9da1405781afd63e0p-3,
+    -0x1.82dd3cp-3
+  },
+  { // Entry 108
+    0x1.87f3fb0000ab210be606ca39761681bdp-7,
+    0x1.87ef32p-7
+  },
+  { // Entry 109
+    -0x1.87f3fb0000ab210be606ca39761681bdp-7,
+    -0x1.87ef32p-7
+  },
+  { // Entry 110
+    0x1.8c680b3adda5a66ad6d8da856236ff97p-7,
+    0x1.8c6318p-7
+  },
+  { // Entry 111
+    -0x1.8c680b3adda5a66ad6d8da856236ff97p-7,
+    -0x1.8c6318p-7
+  },
+  { // Entry 112
+    0x1.9aa64d00181abc40f45d08711a8a0e2dp-3,
+    0x1.953bb8p-3
+  },
+  { // Entry 113
+    -0x1.9aa64d00181abc40f45d08711a8a0e2dp-3,
+    -0x1.953bb8p-3
+  },
+  { // Entry 114
+    0x1.99ba390011821eb8ba2f398e3ec3cbd2p-4,
+    0x1.985dc4p-4
+  },
+  { // Entry 115
+    -0x1.99ba390011821eb8ba2f398e3ec3cbd2p-4,
+    -0x1.985dc4p-4
+  },
+  { // Entry 116
+    0x1.a05bacfcccc788b02291ff2a73385befp-5,
+    0x1.9ffffep-5
+  },
+  { // Entry 117
+    -0x1.a05bacfcccc788b02291ff2a73385befp-5,
+    -0x1.9ffffep-5
+  },
+  { // Entry 118
+    0x1.a64fb7002d9b9b7248958431d95f77ebp-4,
+    0x1.a4d240p-4
+  },
+  { // Entry 119
+    -0x1.a64fb7002d9b9b7248958431d95f77ebp-4,
+    -0x1.a4d240p-4
+  },
+  { // Entry 120
+    0x1.a64908fbec59b6b02d326674ded2f9f2p-5,
+    0x1.a5e962p-5
+  },
+  { // Entry 121
+    -0x1.a64908fbec59b6b02d326674ded2f9f2p-5,
+    -0x1.a5e962p-5
+  },
+  { // Entry 122
+    0x1.b192470000fb2118da687cc4160f98c6p-6,
+    0x1.b17860p-6
+  },
+  { // Entry 123
+    -0x1.b192470000fb2118da687cc4160f98c6p-6,
+    -0x1.b17860p-6
+  },
+  { // Entry 124
+    0x1.d6f45cc922663f64dfff1989368eafd0p-2,
+    0x1.b8562ap-2
+  },
+  { // Entry 125
+    -0x1.d6f45cc922663f64dfff1989368eafd0p-2,
+    -0x1.b8562ap-2
+  },
+  { // Entry 126
+    0x1.dad882760031b0b207eec53f2bad3a56p-2,
+    0x1.bb80c8p-2
+  },
+  { // Entry 127
+    -0x1.dad882760031b0b207eec53f2bad3a56p-2,
+    -0x1.bb80c8p-2
+  },
+  { // Entry 128
+    0x1.bcef0900070bb4d60dba7d7916e44f1cp-11,
+    0x1.bcef02p-11
+  },
+  { // Entry 129
+    -0x1.bcef0900070bb4d60dba7d7916e44f1cp-11,
+    -0x1.bcef02p-11
+  },
+  { // Entry 130
+    0x1.e0648f29a5cb8fa830357eb28463b371p-2,
+    0x1.bfffbep-2
+  },
+  { // Entry 131
+    -0x1.e0648f29a5cb8fa830357eb28463b371p-2,
+    -0x1.bfffbep-2
+  },
+  { // Entry 132
+    0x1.c2e5e80000474fca411deeabc2d871b2p-6,
+    0x1.c2c8c6p-6
+  },
+  { // Entry 133
+    -0x1.c2e5e80000474fca411deeabc2d871b2p-6,
+    -0x1.c2c8c6p-6
+  },
+  { // Entry 134
+    0x1.c997430019b045d79984044543bd4322p-4,
+    0x1.c7b258p-4
+  },
+  { // Entry 135
+    -0x1.c997430019b045d79984044543bd4322p-4,
+    -0x1.c7b258p-4
+  },
+  { // Entry 136
+    0x1.6cc8dca857314e6901156d00f8a3b682p0,
+    0x1.c7fffep-1
+  },
+  { // Entry 137
+    -0x1.6cc8dca857314e6901156d00f8a3b682p0,
+    -0x1.c7fffep-1
+  },
+  { // Entry 138
+    0x1.c7fffe01e245f9ab162301990550caa9p-16,
+    0x1.c7fffep-16
+  },
+  { // Entry 139
+    -0x1.c7fffe01e245f9ab162301990550caa9p-16,
+    -0x1.c7fffep-16
+  },
+  { // Entry 140
+    0x1.ed65267d01a1db540b37753c51d66426p-2,
+    0x1.ca7436p-2
+  },
+  { // Entry 141
+    -0x1.ed65267d01a1db540b37753c51d66426p-2,
+    -0x1.ca7436p-2
+  },
+  { // Entry 142
+    0x1.d48af32968fa3b34457bcff03db0622dp-3,
+    0x1.cc8928p-3
+  },
+  { // Entry 143
+    -0x1.d48af32968fa3b34457bcff03db0622dp-3,
+    -0x1.cc8928p-3
+  },
+  { // Entry 144
+    0x1.f0c2d8fffefca01290c2ef36330c9115p-2,
+    0x1.cd242cp-2
+  },
+  { // Entry 145
+    -0x1.f0c2d8fffefca01290c2ef36330c9115p-2,
+    -0x1.cd242cp-2
+  },
+  { // Entry 146
+    0x1.ce535efa32f0cec15b3bccf05c079f19p-5,
+    0x1.cdd5e0p-5
+  },
+  { // Entry 147
+    -0x1.ce535efa32f0cec15b3bccf05c079f19p-5,
+    -0x1.cdd5e0p-5
+  },
+  { // Entry 148
+    0x1.d0703e01fd8bbf96395ed2f62f54fdcap-16,
+    0x1.d0703ep-16
+  },
+  { // Entry 149
+    -0x1.d0703e01fd8bbf96395ed2f62f54fdcap-16,
+    -0x1.d0703ep-16
+  },
+  { // Entry 150
+    0x1.f84fd66cf58e3da9e2d75ce683cca2d0p-2,
+    0x1.d32406p-2
+  },
+  { // Entry 151
+    -0x1.f84fd66cf58e3da9e2d75ce683cca2d0p-2,
+    -0x1.d32406p-2
+  },
+  { // Entry 152
+    0x1.dca60100427d4d26515dcb19009e0fe7p-4,
+    0x1.da822cp-4
+  },
+  { // Entry 153
+    -0x1.dca60100427d4d26515dcb19009e0fe7p-4,
+    -0x1.da822cp-4
+  },
+  { // Entry 154
+    0x1.f19057907b6a6fe84ba8e4830b7a0799p-3,
+    0x1.e7fffep-3
+  },
+  { // Entry 155
+    -0x1.f19057907b6a6fe84ba8e4830b7a0799p-3,
+    -0x1.e7fffep-3
+  },
+  { // Entry 156
+    0x1.ef311b0049dc13b5b0e01b868b4cfc92p-4,
+    0x1.eccb14p-4
+  },
+  { // Entry 157
+    -0x1.ef311b0049dc13b5b0e01b868b4cfc92p-4,
+    -0x1.eccb14p-4
+  },
+  { // Entry 158
+    0x1.ee703b40bad448188d321c9cf1c77c2fp-6,
+    0x1.ee49d2p-6
+  },
+  { // Entry 159
+    -0x1.ee703b40bad448188d321c9cf1c77c2fp-6,
+    -0x1.ee49d2p-6
+  },
+  { // Entry 160
+    0x1.efa28ecceba94af00baf6a70399b27c5p-6,
+    0x1.ef7bdep-6
+  },
+  { // Entry 161
+    -0x1.efa28ecceba94af00baf6a70399b27c5p-6,
+    -0x1.ef7bdep-6
+  },
+  { // Entry 162
+    0x1.fa0dc7b72c16fcd1b16623d79ed72b48p-3,
+    0x1.effffep-3
+  },
+  { // Entry 163
+    -0x1.fa0dc7b72c16fcd1b16623d79ed72b48p-3,
+    -0x1.effffep-3
+  },
+  { // Entry 164
+    0x1.f479ce9e62f1de793e626c5e4cd483bfp-4,
+    0x1.f1fffep-4
+  },
+  { // Entry 165
+    -0x1.f479ce9e62f1de793e626c5e4cd483bfp-4,
+    -0x1.f1fffep-4
+  },
+  { // Entry 166
+    0x1.f48dfd004492424a2242a7f1b84fde43p-4,
+    0x1.f213e0p-4
+  },
+  { // Entry 167
+    -0x1.f48dfd004492424a2242a7f1b84fde43p-4,
+    -0x1.f213e0p-4
+  },
+  { // Entry 168
+    0x1.f55565004e1ba77f8c68954d58ad9522p-4,
+    0x1.f2d854p-4
+  },
+  { // Entry 169
+    -0x1.f55565004e1ba77f8c68954d58ad9522p-4,
+    -0x1.f2d854p-4
+  },
+  { // Entry 170
+    0x1.fec794ffff80de6f133ff791c5439d8ep-3,
+    0x1.f47232p-3
+  },
+  { // Entry 171
+    -0x1.fec794ffff80de6f133ff791c5439d8ep-3,
+    -0x1.f47232p-3
+  },
+  { // Entry 172
+    0x1.f813e9004d5cdfb063728666fb66e97fp-4,
+    0x1.f58c5ep-4
+  },
+  { // Entry 173
+    -0x1.f813e9004d5cdfb063728666fb66e97fp-4,
+    -0x1.f58c5ep-4
+  },
+  { // Entry 174
+    0x1.f7b721ffff991c706d90945105ec030fp-7,
+    0x1.f7acfap-7
+  },
+  { // Entry 175
+    -0x1.f7b721ffff991c706d90945105ec030fp-7,
+    -0x1.f7acfap-7
+  },
+  { // Entry 176
+    0x1.fbd5f50051fbc9e55c8b2be9e9e21851p-4,
+    0x1.f93fe2p-4
+  },
+  { // Entry 177
+    -0x1.fbd5f50051fbc9e55c8b2be9e9e21851p-4,
+    -0x1.f93fe2p-4
+  },
+  { // Entry 178
+    0x1.fcfaff0050f8ca3009ab7b1e46b4ec9dp-4,
+    0x1.fa6074p-4
+  },
+  { // Entry 179
+    -0x1.fcfaff0050f8ca3009ab7b1e46b4ec9dp-4,
+    -0x1.fa6074p-4
+  },
+  { // Entry 180
+    0x1.03a8a30006385ed65d745b5dec7c194ep-2,
+    0x1.fc7746p-3
+  },
+  { // Entry 181
+    -0x1.03a8a30006385ed65d745b5dec7c194ep-2,
+    -0x1.fc7746p-3
+  },
+  { // Entry 182
+    0x1.fe2a317243079e4fdd1cb855c975cdf1p-6,
+    0x1.fep-6
+  },
+  { // Entry 183
+    -0x1.fe2a317243079e4fdd1cb855c975cdf1p-6,
+    -0x1.fep-6
+  },
+  { // Entry 184
+    0x1.fe82db7456cf5b9b9edf1b4b77c994bdp-6,
+    0x1.fe5894p-6
+  },
+  { // Entry 185
+    -0x1.fe82db7456cf5b9b9edf1b4b77c994bdp-6,
+    -0x1.fe5894p-6
+  },
+  { // Entry 186
+    0x1.ffeaa710f5a6e8d16dc905e338c0200fp-7,
+    0x1.ffdffep-7
+  },
+  { // Entry 187
+    -0x1.ffeaa710f5a6e8d16dc905e338c0200fp-7,
+    -0x1.ffdffep-7
+  },
+  { // Entry 188
+    0x1.7d33cb0c02505f47778ae337ae72ec1fp2,
+    0x1.fffe3ep-1
+  },
+  { // Entry 189
+    -0x1.7d33cb0c02505f47778ae337ae72ec1fp2,
+    -0x1.fffe3ep-1
+  },
+  { // Entry 190
+    0x1.193e51002cdbc475975ff766fbd1f6b5p-1,
+    0x1.ffff7ep-2
+  },
+  { // Entry 191
+    -0x1.193e51002cdbc475975ff766fbd1f6b5p-1,
+    -0x1.ffff7ep-2
+  },
+  { // Entry 192
+    0x1.000514847a91cdaebaecfa77f6111dd9p-6,
+    0x1.ffff7ep-7
+  },
+  { // Entry 193
+    -0x1.000514847a91cdaebaecfa77f6111dd9p-6,
+    -0x1.ffff7ep-7
+  },
+  { // Entry 194
+    0x1.193ea5002587c5e868720bc46d87505bp-1,
+    0x1.fffffcp-2
+  },
+  { // Entry 195
+    -0x1.193ea5002587c5e868720bc46d87505bp-1,
+    -0x1.fffffcp-2
+  },
+  { // Entry 196
+    0x1.fffffcaaaaa71111155a35aa3dc3d06cp-13,
+    0x1.fffffcp-13
+  },
+  { // Entry 197
+    -0x1.fffffcaaaaa71111155a35aa3dc3d06cp-13,
+    -0x1.fffffcp-13
+  },
+  { // Entry 198
+    -0x1.31dd2cd1386933d1d890b6a9703c16adp1,
+    -0x1.f77778p-1
+  },
+  { // Entry 199
+    0x1.31dd2cd1386933d1d890b6a9703c16adp1,
+    0x1.f77778p-1
+  },
+  { // Entry 200
+    -0x1.04f663adcdd5e8864c55a5751a0b17b7p1,
+    -0x1.eeeef0p-1
+  },
+  { // Entry 201
+    0x1.04f663adcdd5e8864c55a5751a0b17b7p1,
+    0x1.eeeef0p-1
+  },
+  { // Entry 202
+    -0x1.d4ef9ebd04658e641423a6ed3defe0dap0,
+    -0x1.e66668p-1
+  },
+  { // Entry 203
+    0x1.d4ef9ebd04658e641423a6ed3defe0dap0,
+    0x1.e66668p-1
+  },
+  { // Entry 204
+    -0x1.af0395037f075cc7baefa38ef81f508fp0,
+    -0x1.dddde0p-1
+  },
+  { // Entry 205
+    0x1.af0395037f075cc7baefa38ef81f508fp0,
+    0x1.dddde0p-1
+  },
+  { // Entry 206
+    -0x1.9157e83626a045c7caf65f13d23b0dd3p0,
+    -0x1.d55558p-1
+  },
+  { // Entry 207
+    0x1.9157e83626a045c7caf65f13d23b0dd3p0,
+    0x1.d55558p-1
+  },
+  { // Entry 208
+    -0x1.78e368cc158d8c46dcfa1f8a88963aa4p0,
+    -0x1.ccccd0p-1
+  },
+  { // Entry 209
+    0x1.78e368cc158d8c46dcfa1f8a88963aa4p0,
+    0x1.ccccd0p-1
+  },
+  { // Entry 210
+    -0x1.64077e53bbdd057c995616b489d53cf4p0,
+    -0x1.c44448p-1
+  },
+  { // Entry 211
+    0x1.64077e53bbdd057c995616b489d53cf4p0,
+    0x1.c44448p-1
+  },
+  { // Entry 212
+    -0x1.51cca9ffc51eb62dad1c2d513ab87a52p0,
+    -0x1.bbbbc0p-1
+  },
+  { // Entry 213
+    0x1.51cca9ffc51eb62dad1c2d513ab87a52p0,
+    0x1.bbbbc0p-1
+  },
+  { // Entry 214
+    -0x1.419343b452798f95458545b3a8e5c365p0,
+    -0x1.b33338p-1
+  },
+  { // Entry 215
+    0x1.419343b452798f95458545b3a8e5c365p0,
+    0x1.b33338p-1
+  },
+  { // Entry 216
+    -0x1.32ee4432223fd6ff7fc96b745a339d15p0,
+    -0x1.aaaab0p-1
+  },
+  { // Entry 217
+    0x1.32ee4432223fd6ff7fc96b745a339d15p0,
+    0x1.aaaab0p-1
+  },
+  { // Entry 218
+    -0x1.258fe3b6e537bb3292f6d7e4afbb9d07p0,
+    -0x1.a22228p-1
+  },
+  { // Entry 219
+    0x1.258fe3b6e537bb3292f6d7e4afbb9d07p0,
+    0x1.a22228p-1
+  },
+  { // Entry 220
+    -0x1.193eb08e5ea8c2c200b0e99c5a36fddep0,
+    -0x1.9999a0p-1
+  },
+  { // Entry 221
+    0x1.193eb08e5ea8c2c200b0e99c5a36fddep0,
+    0x1.9999a0p-1
+  },
+  { // Entry 222
+    -0x1.0dcf079da2f030ae3fbf6b6f92a2a743p0,
+    -0x1.911118p-1
+  },
+  { // Entry 223
+    0x1.0dcf079da2f030ae3fbf6b6f92a2a743p0,
+    0x1.911118p-1
+  },
+  { // Entry 224
+    -0x1.031efa1f0ecc8f3a906dd42d8c2123cbp0,
+    -0x1.888890p-1
+  },
+  { // Entry 225
+    0x1.031efa1f0ecc8f3a906dd42d8c2123cbp0,
+    0x1.888890p-1
+  },
+  { // Entry 226
+    -0x1.f2273d2c4ab521b4cd487640ff959135p-1,
+    -0x1.800008p-1
+  },
+  { // Entry 227
+    0x1.f2273d2c4ab521b4cd487640ff959135p-1,
+    0x1.800008p-1
+  },
+  { // Entry 228
+    -0x1.df2e7fe4879a14bed3444cebeb14e17ap-1,
+    -0x1.777780p-1
+  },
+  { // Entry 229
+    0x1.df2e7fe4879a14bed3444cebeb14e17ap-1,
+    0x1.777780p-1
+  },
+  { // Entry 230
+    -0x1.cd3033baff79597658ed84a70792b418p-1,
+    -0x1.6eeef8p-1
+  },
+  { // Entry 231
+    0x1.cd3033baff79597658ed84a70792b418p-1,
+    0x1.6eeef8p-1
+  },
+  { // Entry 232
+    -0x1.bc0ee367530d66cc841d5f9d30c2b886p-1,
+    -0x1.666670p-1
+  },
+  { // Entry 233
+    0x1.bc0ee367530d66cc841d5f9d30c2b886p-1,
+    0x1.666670p-1
+  },
+  { // Entry 234
+    -0x1.abb1dc08e18126620d575aabc793b2a9p-1,
+    -0x1.5ddde8p-1
+  },
+  { // Entry 235
+    0x1.abb1dc08e18126620d575aabc793b2a9p-1,
+    0x1.5ddde8p-1
+  },
+  { // Entry 236
+    -0x1.9c0432b20c814b3021011c479a51acefp-1,
+    -0x1.555560p-1
+  },
+  { // Entry 237
+    0x1.9c0432b20c814b3021011c479a51acefp-1,
+    0x1.555560p-1
+  },
+  { // Entry 238
+    -0x1.8cf4071c6b253657280e30019b42b6cbp-1,
+    -0x1.4cccd8p-1
+  },
+  { // Entry 239
+    0x1.8cf4071c6b253657280e30019b42b6cbp-1,
+    0x1.4cccd8p-1
+  },
+  { // Entry 240
+    -0x1.7e71f26de777bc532a40c40569e80be7p-1,
+    -0x1.444450p-1
+  },
+  { // Entry 241
+    0x1.7e71f26de777bc532a40c40569e80be7p-1,
+    0x1.444450p-1
+  },
+  { // Entry 242
+    -0x1.7070964a5465019869be4292807243adp-1,
+    -0x1.3bbbc8p-1
+  },
+  { // Entry 243
+    0x1.7070964a5465019869be4292807243adp-1,
+    0x1.3bbbc8p-1
+  },
+  { // Entry 244
+    -0x1.62e443efa416f35cfe72519ab5c49833p-1,
+    -0x1.333340p-1
+  },
+  { // Entry 245
+    0x1.62e443efa416f35cfe72519ab5c49833p-1,
+    0x1.333340p-1
+  },
+  { // Entry 246
+    -0x1.55c2b577a316f398743bc84818a8366dp-1,
+    -0x1.2aaab8p-1
+  },
+  { // Entry 247
+    0x1.55c2b577a316f398743bc84818a8366dp-1,
+    0x1.2aaab8p-1
+  },
+  { // Entry 248
+    -0x1.4902d4f8dcabba59533687adf378fc3bp-1,
+    -0x1.222230p-1
+  },
+  { // Entry 249
+    0x1.4902d4f8dcabba59533687adf378fc3bp-1,
+    0x1.222230p-1
+  },
+  { // Entry 250
+    -0x1.3c9c8e61aec973e370031a7719321089p-1,
+    -0x1.1999a8p-1
+  },
+  { // Entry 251
+    0x1.3c9c8e61aec973e370031a7719321089p-1,
+    0x1.1999a8p-1
+  },
+  { // Entry 252
+    -0x1.3088a9b5ad202b17e52d8601513662b0p-1,
+    -0x1.111120p-1
+  },
+  { // Entry 253
+    0x1.3088a9b5ad202b17e52d8601513662b0p-1,
+    0x1.111120p-1
+  },
+  { // Entry 254
+    -0x1.24c0abe8e973d6e99acbd15484fd64f1p-1,
+    -0x1.088898p-1
+  },
+  { // Entry 255
+    0x1.24c0abe8e973d6e99acbd15484fd64f1p-1,
+    0x1.088898p-1
+  },
+  { // Entry 256
+    -0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    -0x1.000010p-1
+  },
+  { // Entry 257
+    0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    0x1.000010p-1
+  },
+  { // Entry 258
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 259
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 260
+    0x1.24c0961556d0aa95d6fb6c106b236048p-1,
+    0x1.088888p-1
+  },
+  { // Entry 261
+    -0x1.24c0961556d0aa95d6fb6c106b236048p-1,
+    -0x1.088888p-1
+  },
+  { // Entry 262
+    0x1.30889359736e9acf9152fe43f28f7dcdp-1,
+    0x1.111110p-1
+  },
+  { // Entry 263
+    -0x1.30889359736e9acf9152fe43f28f7dcdp-1,
+    -0x1.111110p-1
+  },
+  { // Entry 264
+    0x1.3c9c77714791547aab37a433668ebfb8p-1,
+    0x1.199998p-1
+  },
+  { // Entry 265
+    -0x1.3c9c77714791547aab37a433668ebfb8p-1,
+    -0x1.199998p-1
+  },
+  { // Entry 266
+    0x1.4902bd6778eba4dde3659bd4e4b3b796p-1,
+    0x1.222220p-1
+  },
+  { // Entry 267
+    -0x1.4902bd6778eba4dde3659bd4e4b3b796p-1,
+    -0x1.222220p-1
+  },
+  { // Entry 268
+    0x1.55c29d36f62e0342a6067b58817783bep-1,
+    0x1.2aaaa8p-1
+  },
+  { // Entry 269
+    -0x1.55c29d36f62e0342a6067b58817783bep-1,
+    -0x1.2aaaa8p-1
+  },
+  { // Entry 270
+    0x1.62e42aefa3a673577e1cbcc51d3a75b3p-1,
+    0x1.333330p-1
+  },
+  { // Entry 271
+    -0x1.62e42aefa3a673577e1cbcc51d3a75b3p-1,
+    -0x1.333330p-1
+  },
+  { // Entry 272
+    0x1.70707c78ea48dcd2be90243420138634p-1,
+    0x1.3bbbb8p-1
+  },
+  { // Entry 273
+    -0x1.70707c78ea48dcd2be90243420138634p-1,
+    -0x1.3bbbb8p-1
+  },
+  { // Entry 274
+    0x1.7e71d7b69209fbf8a31f61e28fb38405p-1,
+    0x1.444440p-1
+  },
+  { // Entry 275
+    -0x1.7e71d7b69209fbf8a31f61e28fb38405p-1,
+    -0x1.444440p-1
+  },
+  { // Entry 276
+    0x1.8cf3eb67c6bcfdb506baa6ecb5f2d950p-1,
+    0x1.4cccc8p-1
+  },
+  { // Entry 277
+    -0x1.8cf3eb67c6bcfdb506baa6ecb5f2d950p-1,
+    -0x1.4cccc8p-1
+  },
+  { // Entry 278
+    0x1.9c0415e53f585567855afd0c32aa7e17p-1,
+    0x1.555550p-1
+  },
+  { // Entry 279
+    -0x1.9c0415e53f585567855afd0c32aa7e17p-1,
+    -0x1.555550p-1
+  },
+  { // Entry 280
+    0x1.abb1be04e0a675ba1948b8fb1841584cp-1,
+    0x1.5dddd8p-1
+  },
+  { // Entry 281
+    -0x1.abb1be04e0a675ba1948b8fb1841584cp-1,
+    -0x1.5dddd8p-1
+  },
+  { // Entry 282
+    0x1.bc0ec407f36921e00a5bfee526dd0834p-1,
+    0x1.666660p-1
+  },
+  { // Entry 283
+    -0x1.bc0ec407f36921e00a5bfee526dd0834p-1,
+    -0x1.666660p-1
+  },
+  { // Entry 284
+    0x1.cd3012d5c08d242886fcc0f61668a3d5p-1,
+    0x1.6eeee8p-1
+  },
+  { // Entry 285
+    -0x1.cd3012d5c08d242886fcc0f61668a3d5p-1,
+    -0x1.6eeee8p-1
+  },
+  { // Entry 286
+    0x1.df2e5d46fda42cf27a71863b4cf7c7e6p-1,
+    0x1.777770p-1
+  },
+  { // Entry 287
+    -0x1.df2e5d46fda42cf27a71863b4cf7c7e6p-1,
+    -0x1.777770p-1
+  },
+  { // Entry 288
+    0x1.f227189a01908f60f615760148cb8e3fp-1,
+    0x1.7ffff8p-1
+  },
+  { // Entry 289
+    -0x1.f227189a01908f60f615760148cb8e3fp-1,
+    -0x1.7ffff8p-1
+  },
+  { // Entry 290
+    0x1.031ee6b6dd313b8e955cf0deb74b13d5p0,
+    0x1.888880p-1
+  },
+  { // Entry 291
+    -0x1.031ee6b6dd313b8e955cf0deb74b13d5p0,
+    -0x1.888880p-1
+  },
+  { // Entry 292
+    0x1.0dcef2e94717cf54ab5e3d4ae7c6ab03p0,
+    0x1.911108p-1
+  },
+  { // Entry 293
+    -0x1.0dcef2e94717cf54ab5e3d4ae7c6ab03p0,
+    -0x1.911108p-1
+  },
+  { // Entry 294
+    0x1.193e9a557b698cfbd9d4a767ef99c767p0,
+    0x1.999990p-1
+  },
+  { // Entry 295
+    -0x1.193e9a557b698cfbd9d4a767ef99c767p0,
+    -0x1.999990p-1
+  },
+  { // Entry 296
+    0x1.258fcbb1c5e534f37ad64a1e99a869e8p0,
+    0x1.a22218p-1
+  },
+  { // Entry 297
+    -0x1.258fcbb1c5e534f37ad64a1e99a869e8p0,
+    -0x1.a22218p-1
+  },
+  { // Entry 298
+    0x1.32ee2a03975b57f64a84528990be1f9ap0,
+    0x1.aaaaa0p-1
+  },
+  { // Entry 299
+    -0x1.32ee2a03975b57f64a84528990be1f9ap0,
+    -0x1.aaaaa0p-1
+  },
+  { // Entry 300
+    0x1.419326e02573d8b3acc7cbf76968fe33p0,
+    0x1.b33328p-1
+  },
+  { // Entry 301
+    -0x1.419326e02573d8b3acc7cbf76968fe33p0,
+    -0x1.b33328p-1
+  },
+  { // Entry 302
+    0x1.51cc89db34776ccef56dd618e02f1da6p0,
+    0x1.bbbbb0p-1
+  },
+  { // Entry 303
+    -0x1.51cc89db34776ccef56dd618e02f1da6p0,
+    -0x1.bbbbb0p-1
+  },
+  { // Entry 304
+    0x1.640759eae23a226a9d7c3926242da006p0,
+    0x1.c44438p-1
+  },
+  { // Entry 305
+    -0x1.640759eae23a226a9d7c3926242da006p0,
+    -0x1.c44438p-1
+  },
+  { // Entry 306
+    0x1.78e33eb126c4263142e4f9584dfaa238p0,
+    0x1.ccccc0p-1
+  },
+  { // Entry 307
+    -0x1.78e33eb126c4263142e4f9584dfaa238p0,
+    -0x1.ccccc0p-1
+  },
+  { // Entry 308
+    0x1.9157b61fe9d5041ad9f9720e3ae0d7c0p0,
+    0x1.d55548p-1
+  },
+  { // Entry 309
+    -0x1.9157b61fe9d5041ad9f9720e3ae0d7c0p0,
+    -0x1.d55548p-1
+  },
+  { // Entry 310
+    0x1.af0356f1e19ad530d89ec545995495b6p0,
+    0x1.ddddd0p-1
+  },
+  { // Entry 311
+    -0x1.af0356f1e19ad530d89ec545995495b6p0,
+    -0x1.ddddd0p-1
+  },
+  { // Entry 312
+    0x1.d4ef4caff7901be8dda0560383f995f5p0,
+    0x1.e66658p-1
+  },
+  { // Entry 313
+    -0x1.d4ef4caff7901be8dda0560383f995f5p0,
+    -0x1.e66658p-1
+  },
+  { // Entry 314
+    0x1.04f626a98f6c7775f5aa272dfa30aa0cp1,
+    0x1.eeeee0p-1
+  },
+  { // Entry 315
+    -0x1.04f626a98f6c7775f5aa272dfa30aa0cp1,
+    -0x1.eeeee0p-1
+  },
+  { // Entry 316
+    0x1.31dcb3cf7aadccb53ddc6ab3e5f44cf1p1,
+    0x1.f77768p-1
+  },
+  { // Entry 317
+    -0x1.31dcb3cf7aadccb53ddc6ab3e5f44cf1p1,
+    -0x1.f77768p-1
+  },
+  { // Entry 318
+    -0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    -0x1.fffffep-1
+  },
+  { // Entry 319
+    0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    0x1.fffffep-1
+  },
+  { // Entry 320
+    -0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    -0x1.fffffcp-1
+  },
+  { // Entry 321
+    0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    0x1.fffffcp-1
+  },
+  { // Entry 322
+    -0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    -0x1.fffffap-1
+  },
+  { // Entry 323
+    0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    0x1.fffffap-1
+  },
+  { // Entry 324
+    0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    0x1.fffffep-1
+  },
+  { // Entry 325
+    -0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    -0x1.fffffep-1
+  },
+  { // Entry 326
+    0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    0x1.fffffcp-1
+  },
+  { // Entry 327
+    -0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    -0x1.fffffcp-1
+  },
+  { // Entry 328
+    0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    0x1.fffffap-1
+  },
+  { // Entry 329
+    -0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    -0x1.fffffap-1
+  },
+  { // Entry 330
+    0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    0x1.47ae12p-3
+  },
+  { // Entry 331
+    -0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    -0x1.47ae12p-3
+  },
+  { // Entry 332
+    0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    0x1.47ae14p-3
+  },
+  { // Entry 333
+    -0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    -0x1.47ae14p-3
+  },
+  { // Entry 334
+    0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    0x1.47ae16p-3
+  },
+  { // Entry 335
+    -0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    -0x1.47ae16p-3
+  },
+  { // Entry 336
+    -0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    -0x1.47ae16p-3
+  },
+  { // Entry 337
+    0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    0x1.47ae16p-3
+  },
+  { // Entry 338
+    -0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    -0x1.47ae14p-3
+  },
+  { // Entry 339
+    0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    0x1.47ae14p-3
+  },
+  { // Entry 340
+    -0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    -0x1.47ae12p-3
+  },
+  { // Entry 341
+    0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    0x1.47ae12p-3
+  },
+  { // Entry 342
+    0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 343
+    -0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 344
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 345
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 346
+    0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    0x1.000002p-1
+  },
+  { // Entry 347
+    -0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 348
+    0x1.058aee9700341b95bc1c097b18171158p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 349
+    -0x1.058aee9700341b95bc1c097b18171158p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 350
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.p-2
+  },
+  { // Entry 351
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.p-2
+  },
+  { // Entry 352
+    0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    0x1.000002p-2
+  },
+  { // Entry 353
+    -0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 354
+    0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 355
+    -0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 356
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.p-3
+  },
+  { // Entry 357
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.p-3
+  },
+  { // Entry 358
+    0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    0x1.000002p-3
+  },
+  { // Entry 359
+    -0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 360
+    0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    0x1.fffffep-5
+  },
+  { // Entry 361
+    -0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 362
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.p-4
+  },
+  { // Entry 363
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.p-4
+  },
+  { // Entry 364
+    0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    0x1.000002p-4
+  },
+  { // Entry 365
+    -0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 366
+    0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 367
+    -0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 368
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.p-5
+  },
+  { // Entry 369
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.p-5
+  },
+  { // Entry 370
+    0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    0x1.000002p-5
+  },
+  { // Entry 371
+    -0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 372
+    0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    0x1.fffffep-7
+  },
+  { // Entry 373
+    -0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 374
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.p-6
+  },
+  { // Entry 375
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.p-6
+  },
+  { // Entry 376
+    0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    0x1.000002p-6
+  },
+  { // Entry 377
+    -0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 378
+    0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    0x1.fffffep-8
+  },
+  { // Entry 379
+    -0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    -0x1.fffffep-8
+  },
+  { // Entry 380
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.p-7
+  },
+  { // Entry 381
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.p-7
+  },
+  { // Entry 382
+    0x1.000157589091cd47c4535d7818762b69p-7,
+    0x1.000002p-7
+  },
+  { // Entry 383
+    -0x1.000157589091cd47c4535d7818762b69p-7,
+    -0x1.000002p-7
+  },
+  { // Entry 384
+    0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    0x1.fffffep-9
+  },
+  { // Entry 385
+    -0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    -0x1.fffffep-9
+  },
+  { // Entry 386
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.p-8
+  },
+  { // Entry 387
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.p-8
+  },
+  { // Entry 388
+    0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    0x1.000002p-8
+  },
+  { // Entry 389
+    -0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    -0x1.000002p-8
+  },
+  { // Entry 390
+    0x1.000014555848890b11c5ac88518c9f8bp-9,
+    0x1.fffffep-10
+  },
+  { // Entry 391
+    -0x1.000014555848890b11c5ac88518c9f8bp-9,
+    -0x1.fffffep-10
+  },
+  { // Entry 392
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.p-9
+  },
+  { // Entry 393
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.p-9
+  },
+  { // Entry 394
+    0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    0x1.000002p-9
+  },
+  { // Entry 395
+    -0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    -0x1.000002p-9
+  },
+  { // Entry 396
+    0x1.0000045555788889e1ad293e1f844b3dp-10,
+    0x1.fffffep-11
+  },
+  { // Entry 397
+    -0x1.0000045555788889e1ad293e1f844b3dp-10,
+    -0x1.fffffep-11
+  },
+  { // Entry 398
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.p-10
+  },
+  { // Entry 399
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.p-10
+  },
+  { // Entry 400
+    0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    0x1.000002p-10
+  },
+  { // Entry 401
+    -0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    -0x1.000002p-10
+  },
+  { // Entry 402
+    0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 403
+    -0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 404
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.p-14
+  },
+  { // Entry 405
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.p-14
+  },
+  { // Entry 406
+    0x1.000002055555758888ca8ad1dfe598dap-14,
+    0x1.000002p-14
+  },
+  { // Entry 407
+    -0x1.000002055555758888ca8ad1dfe598dap-14,
+    -0x1.000002p-14
+  },
+  { // Entry 408
+    0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    0x1.fffffep-29
+  },
+  { // Entry 409
+    -0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    -0x1.fffffep-29
+  },
+  { // Entry 410
+    0x1.00000000000000555555555555558888p-28,
+    0x1.p-28
+  },
+  { // Entry 411
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.p-28
+  },
+  { // Entry 412
+    0x1.0000020000000055555755555955888bp-28,
+    0x1.000002p-28
+  },
+  { // Entry 413
+    -0x1.0000020000000055555755555955888bp-28,
+    -0x1.000002p-28
+  },
+  { // Entry 414
+    0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 415
+    -0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 416
+    0x1.00000000000000055555555555555588p-30,
+    0x1.p-30
+  },
+  { // Entry 417
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.p-30
+  },
+  { // Entry 418
+    0x1.00000200000000055555755555955588p-30,
+    0x1.000002p-30
+  },
+  { // Entry 419
+    -0x1.00000200000000055555755555955588p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 420
+    -0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 421
+    0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    0x1.000002p-1
+  },
+  { // Entry 422
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 423
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 424
+    -0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 425
+    0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 426
+    -0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 427
+    0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    0x1.000002p-2
+  },
+  { // Entry 428
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.p-2
+  },
+  { // Entry 429
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.p-2
+  },
+  { // Entry 430
+    -0x1.058aee9700341b95bc1c097b18171158p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 431
+    0x1.058aee9700341b95bc1c097b18171158p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 432
+    -0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 433
+    0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    0x1.000002p-3
+  },
+  { // Entry 434
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.p-3
+  },
+  { // Entry 435
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.p-3
+  },
+  { // Entry 436
+    -0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 437
+    0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 438
+    -0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 439
+    0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    0x1.000002p-4
+  },
+  { // Entry 440
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.p-4
+  },
+  { // Entry 441
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.p-4
+  },
+  { // Entry 442
+    -0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 443
+    0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    0x1.fffffep-5
+  },
+  { // Entry 444
+    -0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 445
+    0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    0x1.000002p-5
+  },
+  { // Entry 446
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.p-5
+  },
+  { // Entry 447
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.p-5
+  },
+  { // Entry 448
+    -0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 449
+    0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 450
+    -0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 451
+    0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    0x1.000002p-6
+  },
+  { // Entry 452
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.p-6
+  },
+  { // Entry 453
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.p-6
+  },
+  { // Entry 454
+    -0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 455
+    0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    0x1.fffffep-7
+  },
+  { // Entry 456
+    -0x1.000157589091cd47c4535d7818762b69p-7,
+    -0x1.000002p-7
+  },
+  { // Entry 457
+    0x1.000157589091cd47c4535d7818762b69p-7,
+    0x1.000002p-7
+  },
+  { // Entry 458
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.p-7
+  },
+  { // Entry 459
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.p-7
+  },
+  { // Entry 460
+    -0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    -0x1.fffffep-8
+  },
+  { // Entry 461
+    0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    0x1.fffffep-8
+  },
+  { // Entry 462
+    -0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    -0x1.000002p-8
+  },
+  { // Entry 463
+    0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    0x1.000002p-8
+  },
+  { // Entry 464
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.p-8
+  },
+  { // Entry 465
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.p-8
+  },
+  { // Entry 466
+    -0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    -0x1.fffffep-9
+  },
+  { // Entry 467
+    0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    0x1.fffffep-9
+  },
+  { // Entry 468
+    -0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    -0x1.000002p-9
+  },
+  { // Entry 469
+    0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    0x1.000002p-9
+  },
+  { // Entry 470
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.p-9
+  },
+  { // Entry 471
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.p-9
+  },
+  { // Entry 472
+    -0x1.000014555848890b11c5ac88518c9f8bp-9,
+    -0x1.fffffep-10
+  },
+  { // Entry 473
+    0x1.000014555848890b11c5ac88518c9f8bp-9,
+    0x1.fffffep-10
+  },
+  { // Entry 474
+    -0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    -0x1.000002p-10
+  },
+  { // Entry 475
+    0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    0x1.000002p-10
+  },
+  { // Entry 476
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.p-10
+  },
+  { // Entry 477
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.p-10
+  },
+  { // Entry 478
+    -0x1.0000045555788889e1ad293e1f844b3dp-10,
+    -0x1.fffffep-11
+  },
+  { // Entry 479
+    0x1.0000045555788889e1ad293e1f844b3dp-10,
+    0x1.fffffep-11
+  },
+  { // Entry 480
+    -0x1.000002055555758888ca8ad1dfe598dap-14,
+    -0x1.000002p-14
+  },
+  { // Entry 481
+    0x1.000002055555758888ca8ad1dfe598dap-14,
+    0x1.000002p-14
+  },
+  { // Entry 482
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.p-14
+  },
+  { // Entry 483
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.p-14
+  },
+  { // Entry 484
+    -0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 485
+    0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 486
+    -0x1.0000020000000055555755555955888bp-28,
+    -0x1.000002p-28
+  },
+  { // Entry 487
+    0x1.0000020000000055555755555955888bp-28,
+    0x1.000002p-28
+  },
+  { // Entry 488
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.p-28
+  },
+  { // Entry 489
+    0x1.00000000000000555555555555558888p-28,
+    0x1.p-28
+  },
+  { // Entry 490
+    -0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    -0x1.fffffep-29
+  },
+  { // Entry 491
+    0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    0x1.fffffep-29
+  },
+  { // Entry 492
+    -0x1.00000200000000055555755555955588p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 493
+    0x1.00000200000000055555755555955588p-30,
+    0x1.000002p-30
+  },
+  { // Entry 494
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.p-30
+  },
+  { // Entry 495
+    0x1.00000000000000055555555555555588p-30,
+    0x1.p-30
+  },
+  { // Entry 496
+    -0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 497
+    0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 498
+    HUGE_VALF,
+    0x1.p0
+  },
+  { // Entry 499
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 500
+    0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    0x1.fffffep-1
+  },
+  { // Entry 501
+    -0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    -0x1.fffffep-1
+  },
+  { // Entry 502
+    0x1.0f2eb16521912336da989907b42e8493p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 503
+    -0x1.0f2eb16521912336da989907b42e8493p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 504
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 505
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 506
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 507
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 508
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 509
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 510
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 511
+    -0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 512
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 513
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 514
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 515
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 516
+    0.0,
+    0.0f
+  },
+  { // Entry 517
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/cbrt_intel_data.h b/tests/math_data/cbrt_intel_data.h
new file mode 100644
index 0000000..9bb4708
--- /dev/null
+++ b/tests/math_data/cbrt_intel_data.h
@@ -0,0 +1,2274 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_cbrt_intel_data[] = {
+  { // Entry 0
+    -0x1.p-10,
+    -0x1.0p-30
+  },
+  { // Entry 1
+    0x1.p-10,
+    0x1.0p-30
+  },
+  { // Entry 2
+    -0x1.00000000007fffffffffc00000000035p-3,
+    -0x1.00000000018p-9
+  },
+  { // Entry 3
+    0x1.00000000007fffffffffc00000000035p-3,
+    0x1.00000000018p-9
+  },
+  { // Entry 4
+    -0x1.0000000007ffffffffc0000000035555p-340,
+    -0x1.00000000180p-1020
+  },
+  { // Entry 5
+    0x1.0000000007ffffffffc0000000035555p-340,
+    0x1.00000000180p-1020
+  },
+  { // Entry 6
+    -0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    -0x1.060p-40
+  },
+  { // Entry 7
+    0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    0x1.060p-40
+  },
+  { // Entry 8
+    -0x1.45abfb7ef7189911ba894c45eca1ddcap-1,
+    -0x1.0787c1fa77ce0p-2
+  },
+  { // Entry 9
+    0x1.45abfb7ef7189911ba894c45eca1ddcap-1,
+    0x1.0787c1fa77ce0p-2
+  },
+  { // Entry 10
+    -0x1.9e9ee2bee69fe80c4f73cb59ccb7f3d1p5,
+    -0x1.0fe6fc05ac8c0p17
+  },
+  { // Entry 11
+    0x1.9e9ee2bee69fe80c4f73cb59ccb7f3d1p5,
+    0x1.0fe6fc05ac8c0p17
+  },
+  { // Entry 12
+    -0x1.493b33358f83ff197c29192baacf2763p-9,
+    -0x1.10441104412p-26
+  },
+  { // Entry 13
+    0x1.493b33358f83ff197c29192baacf2763p-9,
+    0x1.10441104412p-26
+  },
+  { // Entry 14
+    -0x1.9f187bb994b4e822d4c29f84eda66145p-1,
+    -0x1.10d67c062d7e0p-1
+  },
+  { // Entry 15
+    0x1.9f187bb994b4e822d4c29f84eda66145p-1,
+    0x1.10d67c062d7e0p-1
+  },
+  { // Entry 16
+    -0x1.0af6562f82937800f6aaeb59ca8be923p-2,
+    -0x1.2250ab3726b08p-6
+  },
+  { // Entry 17
+    0x1.0af6562f82937800f6aaeb59ca8be923p-2,
+    0x1.2250ab3726b08p-6
+  },
+  { // Entry 18
+    -0x1.a9cd919402f48820501d0a16e616a1efp30,
+    -0x1.268029abf1585p92
+  },
+  { // Entry 19
+    0x1.a9cd919402f48820501d0a16e616a1efp30,
+    0x1.268029abf1585p92
+  },
+  { // Entry 20
+    -0x1.aa74fb53ace248137ec2a68f4e2c0e6ap-11,
+    -0x1.27dc102fbaaecp-31
+  },
+  { // Entry 21
+    0x1.aa74fb53ace248137ec2a68f4e2c0e6ap-11,
+    0x1.27dc102fbaaecp-31
+  },
+  { // Entry 22
+    -0x1.bfb5c1cdaa6ddfd032c8a87db7a19ca2p-5,
+    -0x1.5655956559580p-13
+  },
+  { // Entry 23
+    0x1.bfb5c1cdaa6ddfd032c8a87db7a19ca2p-5,
+    0x1.5655956559580p-13
+  },
+  { // Entry 24
+    -0x1.cb8a75541abed81fa799464451a558d3p30,
+    -0x1.7232560b9ccc6p92
+  },
+  { // Entry 25
+    0x1.cb8a75541abed81fa799464451a558d3p30,
+    0x1.7232560b9ccc6p92
+  },
+  { // Entry 26
+    -0x1.7d038d6155dc480a9f29e86566a5f43dp-356,
+    -0x1.a60p-1067
+  },
+  { // Entry 27
+    0x1.7d038d6155dc480a9f29e86566a5f43dp-356,
+    0x1.a60p-1067
+  },
+  { // Entry 28
+    -0x1.e3b9dfbcafcda8395331b22320212c4cp7,
+    -0x1.afc6abf5d0ce0p23
+  },
+  { // Entry 29
+    0x1.e3b9dfbcafcda8395331b22320212c4cp7,
+    0x1.afc6abf5d0ce0p23
+  },
+  { // Entry 30
+    -0x1.84ad603727a0508cbedd2bca0ec48725p0,
+    -0x1.bffa90d87aa98p1
+  },
+  { // Entry 31
+    0x1.84ad603727a0508cbedd2bca0ec48725p0,
+    0x1.bffa90d87aa98p1
+  },
+  { // Entry 32
+    -0x1.947c09fa258151cfeee85175bc41fb81p-3,
+    -0x1.f8e38e38e38e4p-8
+  },
+  { // Entry 33
+    0x1.947c09fa258151cfeee85175bc41fb81p-3,
+    0x1.f8e38e38e38e4p-8
+  },
+  { // Entry 34
+    -0x1.ffffffffffff9fffffffffffedffffffp-341,
+    -0x1.fffffffffffeep-1021
+  },
+  { // Entry 35
+    0x1.ffffffffffff9fffffffffffedffffffp-341,
+    0x1.fffffffffffeep-1021
+  },
+  { // Entry 36
+    0x1.428a2f98d728c24ae0d4448847c4a6bap-341,
+    0x1.0000000000003p-1022
+  },
+  { // Entry 37
+    -0x1.428a2f98d728c24ae0d4448847c4a6bap-341,
+    -0x1.0000000000003p-1022
+  },
+  { // Entry 38
+    0x1.965fea53d6e3faf702e41590b070bffbp-14,
+    0x1.0000000000006p-40
+  },
+  { // Entry 39
+    -0x1.965fea53d6e3faf702e41590b070bffbp-14,
+    -0x1.0000000000006p-40
+  },
+  { // Entry 40
+    0x1.965fea53d6e3faf702e41590b070bffbp0,
+    0x1.0000000000006p2
+  },
+  { // Entry 41
+    -0x1.965fea53d6e3faf702e41590b070bffbp0,
+    -0x1.0000000000006p2
+  },
+  { // Entry 42
+    0x1.965fea53d6e607dd91906073bf1a35edp0,
+    0x1.0000000000044p2
+  },
+  { // Entry 43
+    -0x1.965fea53d6e607dd91906073bf1a35edp0,
+    -0x1.0000000000044p2
+  },
+  { // Entry 44
+    0x1.965fea53d6e697ca348e11e2a091d5b6p0,
+    0x1.0000000000055p2
+  },
+  { // Entry 45
+    -0x1.965fea53d6e697ca348e11e2a091d5b6p0,
+    -0x1.0000000000055p2
+  },
+  { // Entry 46
+    0x1.00000000000cbfffffffff5d70p1,
+    0x1.0000000000264p3
+  },
+  { // Entry 47
+    -0x1.00000000000cbfffffffff5d70p1,
+    -0x1.0000000000264p3
+  },
+  { // Entry 48
+    0x1.965fea53d702f7bcb128b0aa890997e0p0,
+    0x1.00000000003afp2
+  },
+  { // Entry 49
+    -0x1.965fea53d702f7bcb128b0aa890997e0p0,
+    -0x1.00000000003afp2
+  },
+  { // Entry 50
+    0x1.428a2f98d75e6fd4d753df927b6b1d4fp-14,
+    0x1.00000000008p-41
+  },
+  { // Entry 51
+    -0x1.428a2f98d75e6fd4d753df927b6b1d4fp-14,
+    -0x1.00000000008p-41
+  },
+  { // Entry 52
+    0x1.00000000007fffffffffc00000000035p-3,
+    0x1.00000000018p-9
+  },
+  { // Entry 53
+    -0x1.00000000007fffffffffc00000000035p-3,
+    -0x1.00000000018p-9
+  },
+  { // Entry 54
+    0x1.965fea53da1087ffad4108c4ea80cbc2p-14,
+    0x1.00000000060p-40
+  },
+  { // Entry 55
+    -0x1.965fea53da1087ffad4108c4ea80cbc2p-14,
+    -0x1.00000000060p-40
+  },
+  { // Entry 56
+    0x1.965fea53da4af7aa8f6e6d4048e52f2bp1,
+    0x1.00000000066e7p5
+  },
+  { // Entry 57
+    -0x1.965fea53da4af7aa8f6e6d4048e52f2bp1,
+    -0x1.00000000066e7p5
+  },
+  { // Entry 58
+    0x1.0000000007ffffffffc0000000035555p-340,
+    0x1.00000000180p-1020
+  },
+  { // Entry 59
+    -0x1.0000000007ffffffffc0000000035555p-340,
+    -0x1.00000000180p-1020
+  },
+  { // Entry 60
+    0x1.965fea55f54097c36a6737d85dd006dcp-40,
+    0x1.0000000401004p-118
+  },
+  { // Entry 61
+    -0x1.965fea55f54097c36a6737d85dd006dcp-40,
+    -0x1.0000000401004p-118
+  },
+  { // Entry 62
+    0x1.428a2fa15995e7ffff68534daa2646edp0,
+    0x1.00000014430e2p1
+  },
+  { // Entry 63
+    -0x1.428a2fa15995e7ffff68534daa2646edp0,
+    -0x1.00000014430e2p1
+  },
+  { // Entry 64
+    0x1.428a2fbea35a3d9d86d0a73d050d1379p-348,
+    0x1.0000005a0p-1043
+  },
+  { // Entry 65
+    -0x1.428a2fbea35a3d9d86d0a73d050d1379p-348,
+    -0x1.0000005a0p-1043
+  },
+  { // Entry 66
+    0x1.965ff2caa42317c00ffd791c040fb91dp-34,
+    0x1.00000fff0p-100
+  },
+  { // Entry 67
+    -0x1.965ff2caa42317c00ffd791c040fb91dp-34,
+    -0x1.00000fff0p-100
+  },
+  { // Entry 68
+    0x1.965ff2cb2b9860374c7a92e3bf79265dp-14,
+    0x1.00001p-40
+  },
+  { // Entry 69
+    -0x1.965ff2cb2b9860374c7a92e3bf79265dp-14,
+    -0x1.00001p-40
+  },
+  { // Entry 70
+    0x1.9660b58366b9c81443c564c8519c1649p-341,
+    0x1.00018000008p-1021
+  },
+  { // Entry 71
+    -0x1.9660b58366b9c81443c564c8519c1649p-341,
+    -0x1.00018000008p-1021
+  },
+  { // Entry 72
+    0x1.96639e80554d07f44482ed4edeb69024p-14,
+    0x1.00070p-40
+  },
+  { // Entry 73
+    -0x1.96639e80554d07f44482ed4edeb69024p-14,
+    -0x1.00070p-40
+  },
+  { // Entry 74
+    0x1.9665b2342f8d97ab827cc907bea6a6a0p-2,
+    0x1.000aecf24b8bbp-4
+  },
+  { // Entry 75
+    -0x1.9665b2342f8d97ab827cc907bea6a6a0p-2,
+    -0x1.000aecf24b8bbp-4
+  },
+  { // Entry 76
+    0x1.96664e51470857ba927fd8c83e4a668fp-2,
+    0x1.000c14046c27cp-4
+  },
+  { // Entry 77
+    -0x1.96664e51470857ba927fd8c83e4a668fp-2,
+    -0x1.000c14046c27cp-4
+  },
+  { // Entry 78
+    0x1.9681cd4d59cf3c49d09a44a6e5a71a0bp-4,
+    0x1.00401004000dep-10
+  },
+  { // Entry 79
+    -0x1.9681cd4d59cf3c49d09a44a6e5a71a0bp-4,
+    -0x1.00401004000dep-10
+  },
+  { // Entry 80
+    0x1.00254fe4e09a28161b19a150ed679c38p-340,
+    0x1.007p-1020
+  },
+  { // Entry 81
+    -0x1.00254fe4e09a28161b19a150ed679c38p-340,
+    -0x1.007p-1020
+  },
+  { // Entry 82
+    0x1.42b9323abafd78d0666f2ca1fbd9f8b9p-341,
+    0x1.007p-1022
+  },
+  { // Entry 83
+    -0x1.42b9323abafd78d0666f2ca1fbd9f8b9p-341,
+    -0x1.007p-1022
+  },
+  { // Entry 84
+    0x1.005a8aa11fd96610f475d13eb6f8247fp-340,
+    0x1.011p-1020
+  },
+  { // Entry 85
+    -0x1.005a8aa11fd96610f475d13eb6f8247fp-340,
+    -0x1.011p-1020
+  },
+  { // Entry 86
+    0x1.976e211b4a5fda2f3d9110f59316298ap-14,
+    0x1.020p-40
+  },
+  { // Entry 87
+    -0x1.976e211b4a5fda2f3d9110f59316298ap-14,
+    -0x1.020p-40
+  },
+  { // Entry 88
+    0x1.97f4c72a4cc937c8ec5808f7e0f23f1dp334,
+    0x1.03001fc0eb6f0p1004
+  },
+  { // Entry 89
+    -0x1.97f4c72a4cc937c8ec5808f7e0f23f1dp334,
+    -0x1.03001fc0eb6f0p1004
+  },
+  { // Entry 90
+    0x1.97f5f8160b8917c80d38a6af1f6f152bp0,
+    0x1.03026484c3994p2
+  },
+  { // Entry 91
+    -0x1.97f5f8160b8917c80d38a6af1f6f152bp0,
+    -0x1.03026484c3994p2
+  },
+  { // Entry 92
+    0x1.446c1fbe1a821a88b3a25b8549559d1cp-81,
+    0x1.0482412090482p-242
+  },
+  { // Entry 93
+    -0x1.446c1fbe1a821a88b3a25b8549559d1cp-81,
+    -0x1.0482412090482p-242
+  },
+  { // Entry 94
+    0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    0x1.060p-40
+  },
+  { // Entry 95
+    -0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    -0x1.060p-40
+  },
+  { // Entry 96
+    0x1.454088d15010f7f343422c761e601e61p-1,
+    0x1.068341a0d0680p-2
+  },
+  { // Entry 97
+    -0x1.454088d15010f7f343422c761e601e61p-1,
+    -0x1.068341a0d0680p-2
+  },
+  { // Entry 98
+    0x1.9a92c607cfd737e7521bc7f98770b170p2,
+    0x1.08046a3c709e3p8
+  },
+  { // Entry 99
+    -0x1.9a92c607cfd737e7521bc7f98770b170p2,
+    -0x1.08046a3c709e3p8
+  },
+  { // Entry 100
+    0x1.9a93cde71ba557e6218528c1cb0d6e32p-1,
+    0x1.08066749584ddp-1
+  },
+  { // Entry 101
+    -0x1.9a93cde71ba557e6218528c1cb0d6e32p-1,
+    -0x1.08066749584ddp-1
+  },
+  { // Entry 102
+    0x1.9a952773d350c7e97b4223564fd73be7p-347,
+    0x1.080901ebap-1039
+  },
+  { // Entry 103
+    -0x1.9a952773d350c7e97b4223564fd73be7p-347,
+    -0x1.080901ebap-1039
+  },
+  { // Entry 104
+    0x1.032ee63c56e3b55628c6400c742d93edp1,
+    0x1.09ab38ed184bap3
+  },
+  { // Entry 105
+    -0x1.032ee63c56e3b55628c6400c742d93edp1,
+    -0x1.09ab38ed184bap3
+  },
+  { // Entry 106
+    0x1.9b9968457c86a7d7dbb54f5a02fc037bp4,
+    0x1.0a0056960e368p14
+  },
+  { // Entry 107
+    -0x1.9b9968457c86a7d7dbb54f5a02fc037bp4,
+    -0x1.0a0056960e368p14
+  },
+  { // Entry 108
+    0x1.9e9f1f2d0855881624b60f77c042b78dp0,
+    0x1.0fe772e9039f5p2
+  },
+  { // Entry 109
+    -0x1.9e9f1f2d0855881624b60f77c042b78dp0,
+    -0x1.0fe772e9039f5p2
+  },
+  { // Entry 110
+    0x1.9ea753cde1bd0855df2edf015f707a04p1,
+    0x1.0ff797ef1a3c3p5
+  },
+  { // Entry 111
+    -0x1.9ea753cde1bd0855df2edf015f707a04p1,
+    -0x1.0ff797ef1a3c3p5
+  },
+  { // Entry 112
+    0x1.491fc152578ca7cdd8078fdafcb33036p-357,
+    0x1.1p-1070
+  },
+  { // Entry 113
+    -0x1.491fc152578ca7cdd8078fdafcb33036p-357,
+    -0x1.1p-1070
+  },
+  { // Entry 114
+    0x1.9eac9efc6e88d7c312cafbfcbd94b5b4p0,
+    0x1.1002029e1aaddp2
+  },
+  { // Entry 115
+    -0x1.9eac9efc6e88d7c312cafbfcbd94b5b4p0,
+    -0x1.1002029e1aaddp2
+  },
+  { // Entry 116
+    0x1.9f1445f47beb881feb8cc6da6423f1fap0,
+    0x1.10ce2ee39f71bp2
+  },
+  { // Entry 117
+    -0x1.9f1445f47beb881feb8cc6da6423f1fap0,
+    -0x1.10ce2ee39f71bp2
+  },
+  { // Entry 118
+    0x1.9f16f1b3849098203460c5bf7946e9ddp-1,
+    0x1.10d37312af8fap-1
+  },
+  { // Entry 119
+    -0x1.9f16f1b3849098203460c5bf7946e9ddp-1,
+    -0x1.10d37312af8fap-1
+  },
+  { // Entry 120
+    0x1.9f22b8991664081f68f99db9a1cc0b73p0,
+    0x1.10eaac892a245p2
+  },
+  { // Entry 121
+    -0x1.9f22b8991664081f68f99db9a1cc0b73p0,
+    -0x1.10eaac892a245p2
+  },
+  { // Entry 122
+    0x1.9f458921d52a281fafef2e225aaab6c6p0,
+    0x1.112f5c03ecec0p2
+  },
+  { // Entry 123
+    -0x1.9f458921d52a281fafef2e225aaab6c6p0,
+    -0x1.112f5c03ecec0p2
+  },
+  { // Entry 124
+    0x1.4c4c991ac651a84e0ff0656285977047p1,
+    0x1.17f2cafabb46ap4
+  },
+  { // Entry 125
+    -0x1.4c4c991ac651a84e0ff0656285977047p1,
+    -0x1.17f2cafabb46ap4
+  },
+  { // Entry 126
+    0x1.a430ecfcf44ee7dc4e735762947d3dc3p0,
+    0x1.1b02602c908bfp2
+  },
+  { // Entry 127
+    -0x1.a430ecfcf44ee7dc4e735762947d3dc3p0,
+    -0x1.1b02602c908bfp2
+  },
+  { // Entry 128
+    0x1.a6a556b95dffa828a9a81a921f87fa85p-4,
+    0x1.1fff905c3adbcp-10
+  },
+  { // Entry 129
+    -0x1.a6a556b95dffa828a9a81a921f87fa85p-4,
+    -0x1.1fff905c3adbcp-10
+  },
+  { // Entry 130
+    0x1.a6a58d55e307bdded6f0c26447e14afap-14,
+    0x1.2p-40
+  },
+  { // Entry 131
+    -0x1.a6a58d55e307bdded6f0c26447e14afap-14,
+    -0x1.2p-40
+  },
+  { // Entry 132
+    0x1.a741dcaa85c507f8f476871a86c8f2fbp-14,
+    0x1.214p-40
+  },
+  { // Entry 133
+    -0x1.a741dcaa85c507f8f476871a86c8f2fbp-14,
+    -0x1.214p-40
+  },
+  { // Entry 134
+    0x1.a9b9a98cfc11381defe6253a98938775p-4,
+    0x1.2656ddd0ef9a9p-10
+  },
+  { // Entry 135
+    -0x1.a9b9a98cfc11381defe6253a98938775p-4,
+    -0x1.2656ddd0ef9a9p-10
+  },
+  { // Entry 136
+    0x1.a9ce86294341981ffbd04f46339b7ca3p0,
+    0x1.26822529cb997p2
+  },
+  { // Entry 137
+    -0x1.a9ce86294341981ffbd04f46339b7ca3p0,
+    -0x1.26822529cb997p2
+  },
+  { // Entry 138
+    0x1.aa3393610111800c773e492ba03c0bc0p-4,
+    0x1.2754041e0bd58p-10
+  },
+  { // Entry 139
+    -0x1.aa3393610111800c773e492ba03c0bc0p-4,
+    -0x1.2754041e0bd58p-10
+  },
+  { // Entry 140
+    0x1.aa6eaf149711081267d4d3bcfb21576ap-1,
+    0x1.27cef4d58fa06p-1
+  },
+  { // Entry 141
+    -0x1.aa6eaf149711081267d4d3bcfb21576ap-1,
+    -0x1.27cef4d58fa06p-1
+  },
+  { // Entry 142
+    0x1.ab0111c4f67687eab45b47dba3899345p-14,
+    0x1.290p-40
+  },
+  { // Entry 143
+    -0x1.ab0111c4f67687eab45b47dba3899345p-14,
+    -0x1.290p-40
+  },
+  { // Entry 144
+    0x1.ab7d23f59ed937e12fad7075ab2a34f5p66,
+    0x1.2a032f360b141p200
+  },
+  { // Entry 145
+    -0x1.ab7d23f59ed937e12fad7075ab2a34f5p66,
+    -0x1.2a032f360b141p200
+  },
+  { // Entry 146
+    0x1.0e7fe920f31d3746275027b3282172eep-340,
+    0x1.2e025c04b85fcp-1020
+  },
+  { // Entry 147
+    -0x1.0e7fe920f31d3746275027b3282172eep-340,
+    -0x1.2e025c04b85fcp-1020
+  },
+  { // Entry 148
+    0x1.55aaaaae387217d53fbba423cebb1a2ep-2,
+    0x1.304c1304c1304p-5
+  },
+  { // Entry 149
+    -0x1.55aaaaae387217d53fbba423cebb1a2ep-2,
+    -0x1.304c1304c1304p-5
+  },
+  { // Entry 150
+    0x1.b3dd56a2b132e7fdf10074b0924288f1p32,
+    0x1.3bdfee33b02f8p98
+  },
+  { // Entry 151
+    -0x1.b3dd56a2b132e7fdf10074b0924288f1p32,
+    -0x1.3bdfee33b02f8p98
+  },
+  { // Entry 152
+    0x1.b439df3c2659081df6a3085c877c7cffp0,
+    0x1.3ca946e736845p2
+  },
+  { // Entry 153
+    -0x1.b439df3c2659081df6a3085c877c7cffp0,
+    -0x1.3ca946e736845p2
+  },
+  { // Entry 154
+    0x1.138291eabb92efba9fe0d9849a897aa5p-340,
+    0x1.3f1aa4d984256p-1020
+  },
+  { // Entry 155
+    -0x1.138291eabb92efba9fe0d9849a897aa5p-340,
+    -0x1.3f1aa4d984256p-1020
+  },
+  { // Entry 156
+    0x1.b5695d4850bf002f93a8951840fdbdc1p-14,
+    0x1.3f4p-40
+  },
+  { // Entry 157
+    -0x1.b5695d4850bf002f93a8951840fdbdc1p-14,
+    -0x1.3f4p-40
+  },
+  { // Entry 158
+    0x1.13c484138704e8100660522ff714d063p-2,
+    0x1.3ffffffffffffp-6
+  },
+  { // Entry 159
+    -0x1.13c484138704e8100660522ff714d063p-2,
+    -0x1.3ffffffffffffp-6
+  },
+  { // Entry 160
+    0x1.b67bc3075e4107fa3e70de5d4fa75b20p0,
+    0x1.419a4a4598f5ap2
+  },
+  { // Entry 161
+    -0x1.b67bc3075e4107fa3e70de5d4fa75b20p0,
+    -0x1.419a4a4598f5ap2
+  },
+  { // Entry 162
+    0x1.b94a867d7d37304bf35180360c8f26bap-11,
+    0x1.47d1f47d1f471p-31
+  },
+  { // Entry 163
+    -0x1.b94a867d7d37304bf35180360c8f26bap-11,
+    -0x1.47d1f47d1f471p-31
+  },
+  { // Entry 164
+    0x1.ba6940f949a5f802cb51c7c838c7308dp-2,
+    0x1.4a5294a5294a5p-4
+  },
+  { // Entry 165
+    -0x1.ba6940f949a5f802cb51c7c838c7308dp-2,
+    -0x1.4a5294a5294a5p-4
+  },
+  { // Entry 166
+    0x1.1765862491b577ffff674fac52ee428ep0,
+    0x1.4ccccccf6cc89p0
+  },
+  { // Entry 167
+    -0x1.1765862491b577ffff674fac52ee428ep0,
+    -0x1.4ccccccf6cc89p0
+  },
+  { // Entry 168
+    0x1.17658624b3b6a7ffff67369ed724b90ap0,
+    0x1.4ccccccfe64bdp0
+  },
+  { // Entry 169
+    -0x1.17658624b3b6a7ffff67369ed724b90ap0,
+    -0x1.4ccccccfe64bdp0
+  },
+  { // Entry 170
+    0x1.1765862ca9ee78000097306b13e0ad9bp0,
+    0x1.4cccccec59b21p0
+  },
+  { // Entry 171
+    -0x1.1765862ca9ee78000097306b13e0ad9bp0,
+    -0x1.4cccccec59b21p0
+  },
+  { // Entry 172
+    0x1.c04d1376c37e4817e18315bd6a9e85e3p-8,
+    0x1.57b1272bb8441p-22
+  },
+  { // Entry 173
+    -0x1.c04d1376c37e4817e18315bd6a9e85e3p-8,
+    -0x1.57b1272bb8441p-22
+  },
+  { // Entry 174
+    0x1.c06ebba26ccd500a0de09b79cc640f3dp-1,
+    0x1.57fe95dbd7d28p-1
+  },
+  { // Entry 175
+    -0x1.c06ebba26ccd500a0de09b79cc640f3dp-1,
+    -0x1.57fe95dbd7d28p-1
+  },
+  { // Entry 176
+    0x1.c0e29e3b4a9e87f43c4eb9d13de23aefp0,
+    0x1.59098ae904084p2
+  },
+  { // Entry 177
+    -0x1.c0e29e3b4a9e87f43c4eb9d13de23aefp0,
+    -0x1.59098ae904084p2
+  },
+  { // Entry 178
+    0x1.c3db07e1a14ac838412532030d4d4d78p0,
+    0x1.5feea74303d38p2
+  },
+  { // Entry 179
+    -0x1.c3db07e1a14ac838412532030d4d4d78p0,
+    -0x1.5feea74303d38p2
+  },
+  { // Entry 180
+    0x1.6d73ab7df4e47b07582a3ea009214428p-14,
+    0x1.746p-41
+  },
+  { // Entry 181
+    -0x1.6d73ab7df4e47b07582a3ea009214428p-14,
+    -0x1.746p-41
+  },
+  { // Entry 182
+    0x1.22622dd15ed89a9f922c42a1b1289769p-2,
+    0x1.75ap-6
+  },
+  { // Entry 183
+    -0x1.22622dd15ed89a9f922c42a1b1289769p-2,
+    -0x1.75ap-6
+  },
+  { // Entry 184
+    0x1.cd8515b56ceb3f41561edc76c9bf01b0p-14,
+    0x1.770p-40
+  },
+  { // Entry 185
+    -0x1.cd8515b56ceb3f41561edc76c9bf01b0p-14,
+    -0x1.770p-40
+  },
+  { // Entry 186
+    0x1.d449b6dbbc459812bdd21f77ccdfd045p-4,
+    0x1.87bdb17ed3d1fp-10
+  },
+  { // Entry 187
+    -0x1.d449b6dbbc459812bdd21f77ccdfd045p-4,
+    -0x1.87bdb17ed3d1fp-10
+  },
+  { // Entry 188
+    0x1.280a36cf6379ea8fdfafc89cc9d77091p-7,
+    0x1.8be2f8be2f8b1p-21
+  },
+  { // Entry 189
+    -0x1.280a36cf6379ea8fdfafc89cc9d77091p-7,
+    -0x1.8be2f8be2f8b1p-21
+  },
+  { // Entry 190
+    0x1.75460639f871b7ffff679bb948d1e585p0,
+    0x1.8cccccd41928ap1
+  },
+  { // Entry 191
+    -0x1.75460639f871b7ffff679bb948d1e585p0,
+    -0x1.8cccccd41928ap1
+  },
+  { // Entry 192
+    0x1.d7bd00808f8337d9a59ba78f7f1d6790p-1,
+    0x1.9076c775b5273p-1
+  },
+  { // Entry 193
+    -0x1.d7bd00808f8337d9a59ba78f7f1d6790p-1,
+    -0x1.9076c775b5273p-1
+  },
+  { // Entry 194
+    0x1.d7e64dc80f7097f1129998d4da209031p-14,
+    0x1.90ep-40
+  },
+  { // Entry 195
+    -0x1.d7e64dc80f7097f1129998d4da209031p-14,
+    -0x1.90ep-40
+  },
+  { // Entry 196
+    0x1.da7c2ab04f88d7e99ecbfecf1a524bcbp-14,
+    0x1.978p-40
+  },
+  { // Entry 197
+    -0x1.da7c2ab04f88d7e99ecbfecf1a524bcbp-14,
+    -0x1.978p-40
+  },
+  { // Entry 198
+    0x1.dad49d2409c36ff2d4c9b994a1547f79p-4,
+    0x1.98640c41ec378p-10
+  },
+  { // Entry 199
+    -0x1.dad49d2409c36ff2d4c9b994a1547f79p-4,
+    -0x1.98640c41ec378p-10
+  },
+  { // Entry 200
+    0x1.79eafa03cd0c9b7054cf5184f3432188p-1,
+    0x1.9bcbd6d204234p-2
+  },
+  { // Entry 201
+    -0x1.79eafa03cd0c9b7054cf5184f3432188p-1,
+    -0x1.9bcbd6d204234p-2
+  },
+  { // Entry 202
+    0x1.7a41970365eebffe84779d36e5b55ff9p-4,
+    0x1.9ce739ce739c1p-11
+  },
+  { // Entry 203
+    -0x1.7a41970365eebffe84779d36e5b55ff9p-4,
+    -0x1.9ce739ce739c1p-11
+  },
+  { // Entry 204
+    0x1.dd182f9eccd338154df52c8068d21c58p-4,
+    0x1.9e429e92b01aap-10
+  },
+  { // Entry 205
+    -0x1.dd182f9eccd338154df52c8068d21c58p-4,
+    -0x1.9e429e92b01aap-10
+  },
+  { // Entry 206
+    0x1.7b184c99eafd98080039f19cdaba9566p-2,
+    0x1.9fa7e9fa7e9f8p-5
+  },
+  { // Entry 207
+    -0x1.7b184c99eafd98080039f19cdaba9566p-2,
+    -0x1.9fa7e9fa7e9f8p-5
+  },
+  { // Entry 208
+    0x1.2cf888f8db02e80cf78a32d60db9310ep-1,
+    0x1.ap-3
+  },
+  { // Entry 209
+    -0x1.2cf888f8db02e80cf78a32d60db9310ep-1,
+    -0x1.ap-3
+  },
+  { // Entry 210
+    0x1.7d9d668054af70ab308f4cce4f06da18p-12,
+    0x1.a80p-35
+  },
+  { // Entry 211
+    -0x1.7d9d668054af70ab308f4cce4f06da18p-12,
+    -0x1.a80p-35
+  },
+  { // Entry 212
+    0x1.7f867ca5bf7fd8000095d700659c419bp1,
+    0x1.ae666667ef215p4
+  },
+  { // Entry 213
+    -0x1.7f867ca5bf7fd8000095d700659c419bp1,
+    -0x1.ae666667ef215p4
+  },
+  { // Entry 214
+    0x1.e3ce44a1a91cb00d803d37f957814cd0p-1,
+    0x1.affd4ad81d672p-1
+  },
+  { // Entry 215
+    -0x1.e3ce44a1a91cb00d803d37f957814cd0p-1,
+    -0x1.affd4ad81d672p-1
+  },
+  { // Entry 216
+    0x1.807936a48a0f47ffff8f15d7f7433972p1,
+    0x1.b199999b7b95cp4
+  },
+  { // Entry 217
+    -0x1.807936a48a0f47ffff8f15d7f7433972p1,
+    -0x1.b199999b7b95cp4
+  },
+  { // Entry 218
+    0x1.e59391f23400e00084dca80338a86267p-14,
+    0x1.b4cp-40
+  },
+  { // Entry 219
+    -0x1.e59391f23400e00084dca80338a86267p-14,
+    -0x1.b4cp-40
+  },
+  { // Entry 220
+    0x1.32e4d254e0dc255221323a5c06838a1ap0,
+    0x1.b90bf360408b6p0
+  },
+  { // Entry 221
+    -0x1.32e4d254e0dc255221323a5c06838a1ap0,
+    -0x1.b90bf360408b6p0
+  },
+  { // Entry 222
+    0x1.e86c9f7f43066f552417904aa615b9a0p3,
+    0x1.bc7acad8dd5acp11
+  },
+  { // Entry 223
+    -0x1.e86c9f7f43066f552417904aa615b9a0p3,
+    -0x1.bc7acad8dd5acp11
+  },
+  { // Entry 224
+    0x1.e9b5dba58189dbbca0a6d76e870ebb59p-348,
+    0x1.cp-1042
+  },
+  { // Entry 225
+    -0x1.e9b5dba58189dbbca0a6d76e870ebb59p-348,
+    -0x1.cp-1042
+  },
+  { // Entry 226
+    0x1.eac78857bf50afff5f93dd134572416dp-11,
+    0x1.c2f0bc2f0bc21p-31
+  },
+  { // Entry 227
+    -0x1.eac78857bf50afff5f93dd134572416dp-11,
+    -0x1.c2f0bc2f0bc21p-31
+  },
+  { // Entry 228
+    0x1.ec05b532dfa5c62bee423818abe2bee1p-14,
+    0x1.c66p-40
+  },
+  { // Entry 229
+    -0x1.ec05b532dfa5c62bee423818abe2bee1p-14,
+    -0x1.c66p-40
+  },
+  { // Entry 230
+    0x1.ee6a99864dfff7f9fa4d2ad7424eaa16p0,
+    0x1.cd0a43a2eeb58p2
+  },
+  { // Entry 231
+    -0x1.ee6a99864dfff7f9fa4d2ad7424eaa16p0,
+    -0x1.cd0a43a2eeb58p2
+  },
+  { // Entry 232
+    0x1.3943209755b3d556bbdf7b713db939cbp0,
+    0x1.d513b4b6d224dp0
+  },
+  { // Entry 233
+    -0x1.3943209755b3d556bbdf7b713db939cbp0,
+    -0x1.d513b4b6d224dp0
+  },
+  { // Entry 234
+    0x1.396bdc60bdb41f01722a27e291122a02p0,
+    0x1.d5cac80757178p0
+  },
+  { // Entry 235
+    -0x1.396bdc60bdb41f01722a27e291122a02p0,
+    -0x1.d5cac80757178p0
+  },
+  { // Entry 236
+    0x1.8ae2d99c67b21d4a107cd7180cb6047cp0,
+    0x1.d5cac80757234p1
+  },
+  { // Entry 237
+    -0x1.8ae2d99c67b21d4a107cd7180cb6047cp0,
+    -0x1.d5cac80757234p1
+  },
+  { // Entry 238
+    0x1.8ae2d99c67b3b0c177f3b4d020019db3p0,
+    0x1.d5cac8075728ep1
+  },
+  { // Entry 239
+    -0x1.8ae2d99c67b3b0c177f3b4d020019db3p0,
+    -0x1.d5cac8075728ep1
+  },
+  { // Entry 240
+    0x1.f51a62037e9555df224a09e8431605ecp-348,
+    0x1.ep-1042
+  },
+  { // Entry 241
+    -0x1.f51a62037e9555df224a09e8431605ecp-348,
+    -0x1.ep-1042
+  },
+  { // Entry 242
+    0x1.8f1aa664697648005040ca059dec2aa7p1,
+    0x1.e501f9914b497p4
+  },
+  { // Entry 243
+    -0x1.8f1aa664697648005040ca059dec2aa7p1,
+    -0x1.e501f9914b497p4
+  },
+  { // Entry 244
+    0x1.91d389680d252578c71bd969e9e5df7cp-12,
+    0x1.ef0p-35
+  },
+  { // Entry 245
+    -0x1.91d389680d252578c71bd969e9e5df7cp-12,
+    -0x1.ef0p-35
+  },
+  { // Entry 246
+    0x1.fa9c3138585675b633ac519bbe7eb6cap-1,
+    0x1.fp-1
+  },
+  { // Entry 247
+    -0x1.fa9c3138585675b633ac519bbe7eb6cap-1,
+    -0x1.fp-1
+  },
+  { // Entry 248
+    0x1.92a20771ff112584a4790389196565d1p0,
+    0x1.f1fca6c583c30p1
+  },
+  { // Entry 249
+    -0x1.92a20771ff112584a4790389196565d1p0,
+    -0x1.f1fca6c583c30p1
+  },
+  { // Entry 250
+    0x1.fd7cd96ce16437fdae1d4bfb787b426fp-14,
+    0x1.f88p-40
+  },
+  { // Entry 251
+    -0x1.fd7cd96ce16437fdae1d4bfb787b426fp-14,
+    -0x1.f88p-40
+  },
+  { // Entry 252
+    0x1.fe9c895bb318681d0b5408d96d1beae5p-1,
+    0x1.fbd87fc327a2dp-1
+  },
+  { // Entry 253
+    -0x1.fe9c895bb318681d0b5408d96d1beae5p-1,
+    -0x1.fbd87fc327a2dp-1
+  },
+  { // Entry 254
+    0x1.feb271deb951f820004e9934bbbf7e43p-1,
+    0x1.fc19e0f734ee1p-1
+  },
+  { // Entry 255
+    -0x1.feb271deb951f820004e9934bbbf7e43p-1,
+    -0x1.fc19e0f734ee1p-1
+  },
+  { // Entry 256
+    0x1.9583540d8fdae068f8c9ddb6ceab0c37p-14,
+    0x1.fccp-41
+  },
+  { // Entry 257
+    -0x1.9583540d8fdae068f8c9ddb6ceab0c37p-14,
+    -0x1.fccp-41
+  },
+  { // Entry 258
+    0x1.feee5cca3c43bff6182abd6ea83a6125p-1,
+    0x1.fcccccccccccdp-1
+  },
+  { // Entry 259
+    -0x1.feee5cca3c43bff6182abd6ea83a6125p-1,
+    -0x1.fcccccccccccdp-1
+  },
+  { // Entry 260
+    0x1.96143e1178b6a02e01899e1296e91759p-2,
+    0x1.fee22eb294d1cp-5
+  },
+  { // Entry 261
+    -0x1.96143e1178b6a02e01899e1296e91759p-2,
+    -0x1.fee22eb294d1cp-5
+  },
+  { // Entry 262
+    0x1.ffa545425dad5803a4c5925748cce2a0p-341,
+    0x1.feeffffffffffp-1021
+  },
+  { // Entry 263
+    -0x1.ffa545425dad5803a4c5925748cce2a0p-341,
+    -0x1.feeffffffffffp-1021
+  },
+  { // Entry 264
+    0x1.ffb49f9263cfa814d8ba77ebbb974678p-4,
+    0x1.ff1e000000070p-10
+  },
+  { // Entry 265
+    -0x1.ffb49f9263cfa814d8ba77ebbb974678p-4,
+    -0x1.ff1e000000070p-10
+  },
+  { // Entry 266
+    0x1.ffc5b3203ea9282e4a10ace3963e1fbbp1,
+    0x1.ff512d4a5d2dcp5
+  },
+  { // Entry 267
+    -0x1.ffc5b3203ea9282e4a10ace3963e1fbbp1,
+    -0x1.ff512d4a5d2dcp5
+  },
+  { // Entry 268
+    0x1.965207315dc4902bd076fcf408a70902p-1,
+    0x1.ffcb843a0a6cbp-2
+  },
+  { // Entry 269
+    -0x1.965207315dc4902bd076fcf408a70902p-1,
+    -0x1.ffcb843a0a6cbp-2
+  },
+  { // Entry 270
+    0x1.965316982580502bb83c58cdaeb3a369p0,
+    0x1.ffcf85cbf1176p1
+  },
+  { // Entry 271
+    -0x1.965316982580502bb83c58cdaeb3a369p0,
+    -0x1.ffcf85cbf1176p1
+  },
+  { // Entry 272
+    0x1.42801af6b3a2a61ff5fa71d0a6845a9bp-340,
+    0x1.ffcffffffffffp-1020
+  },
+  { // Entry 273
+    -0x1.42801af6b3a2a61ff5fa71d0a6845a9bp-340,
+    -0x1.ffcffffffffffp-1020
+  },
+  { // Entry 274
+    0x1.965fea101c3caaac6eab292aa5769bcap-14,
+    0x1.fffffefffffffp-41
+  },
+  { // Entry 275
+    -0x1.965fea101c3caaac6eab292aa5769bcap-14,
+    -0x1.fffffefffffffp-41
+  },
+  { // Entry 276
+    0x1.fffffff555554fc71c718c3f35a9339fp-14,
+    0x1.ffffffdffffffp-40
+  },
+  { // Entry 277
+    -0x1.fffffff555554fc71c718c3f35a9339fp-14,
+    -0x1.ffffffdffffffp-40
+  },
+  { // Entry 278
+    0x1.965fea4d7d641a86999ad2b1b38192d3p-14,
+    0x1.ffffffe7fffffp-41
+  },
+  { // Entry 279
+    -0x1.965fea4d7d641a86999ad2b1b38192d3p-14,
+    -0x1.ffffffe7fffffp-41
+  },
+  { // Entry 280
+    0x1.965fea4d7d641a86999ad2b1b38192d3p0,
+    0x1.ffffffe7fffffp1
+  },
+  { // Entry 281
+    -0x1.965fea4d7d641a86999ad2b1b38192d3p0,
+    -0x1.ffffffe7fffffp1
+  },
+  { // Entry 282
+    0x1.965fea4d7d641a86999ad2b1b38192d3p13,
+    0x1.ffffffe7fffffp40
+  },
+  { // Entry 283
+    -0x1.965fea4d7d641a86999ad2b1b38192d3p13,
+    -0x1.ffffffe7fffffp40
+  },
+  { // Entry 284
+    0x1.fffffffd55554ffc71c70e30fcc8817fp-14,
+    0x1.fffffff7fffffp-40
+  },
+  { // Entry 285
+    -0x1.fffffffd55554ffc71c70e30fcc8817fp-14,
+    -0x1.fffffff7fffffp-40
+  },
+  { // Entry 286
+    0x1.fffffffffff34fffffffffaf837fffffp-1,
+    0x1.ffffffffffd9fp-1
+  },
+  { // Entry 287
+    -0x1.fffffffffff34fffffffffaf837fffffp-1,
+    -0x1.ffffffffffd9fp-1
+  },
+  { // Entry 288
+    0x1.fffffffffff9ffffffffffedffffffffp-341,
+    0x1.ffffffffffee0p-1021
+  },
+  { // Entry 289
+    -0x1.fffffffffff9ffffffffffedffffffffp-341,
+    -0x1.ffffffffffee0p-1021
+  },
+  { // Entry 290
+    0x1.ffffffffffff9fffffffffffedffffffp-341,
+    0x1.fffffffffffeep-1021
+  },
+  { // Entry 291
+    -0x1.ffffffffffff9fffffffffffedffffffp-341,
+    -0x1.fffffffffffeep-1021
+  },
+  { // Entry 292
+    0x1.965fea53d6e38034b41ac1fbdae9a22fp-14,
+    0x1.fffffffffffefp-41
+  },
+  { // Entry 293
+    -0x1.965fea53d6e38034b41ac1fbdae9a22fp-14,
+    -0x1.fffffffffffefp-41
+  },
+  { // Entry 294
+    0x1.965fea53d6e38034b41ac1fbdae9a22fp0,
+    0x1.fffffffffffefp1
+  },
+  { // Entry 295
+    -0x1.965fea53d6e38034b41ac1fbdae9a22fp0,
+    -0x1.fffffffffffefp1
+  },
+  { // Entry 296
+    0x1.965fea53d6e38034b41ac1fbdae9a22fp13,
+    0x1.fffffffffffefp40
+  },
+  { // Entry 297
+    -0x1.965fea53d6e38034b41ac1fbdae9a22fp13,
+    -0x1.fffffffffffefp40
+  },
+  { // Entry 298
+    0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-14,
+    0x1.ffffffffffffcp-40
+  },
+  { // Entry 299
+    -0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-14,
+    -0x1.ffffffffffffcp-40
+  },
+  { // Entry 300
+    0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-341,
+    0x1.ffffffffffffcp-1021
+  },
+  { // Entry 301
+    -0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-341,
+    -0x1.ffffffffffffcp-1021
+  },
+  { // Entry 302
+    0x1.428a2f98d728a76a078787ef8fb5d54bp-340,
+    0x1.ffffffffffffep-1020
+  },
+  { // Entry 303
+    -0x1.428a2f98d728a76a078787ef8fb5d54bp-340,
+    -0x1.ffffffffffffep-1020
+  },
+  { // Entry 304
+    0x1.965fea53d6e3bfb3b0b7db8f7ec17d0fp-341,
+    0x1.ffffffffffffep-1022
+  },
+  { // Entry 305
+    -0x1.965fea53d6e3bfb3b0b7db8f7ec17d0fp-341,
+    -0x1.ffffffffffffep-1022
+  },
+  { // Entry 306
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 307
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 308
+    0x1.0ce9d573f43b4429b89ec57945e5d434p0,
+    0x1.28ba2e8ba2e8cp0
+  },
+  { // Entry 309
+    -0x1.0ce9d573f43b4429b89ec57945e5d434p0,
+    -0x1.28ba2e8ba2e8cp0
+  },
+  { // Entry 310
+    0x1.18b16f086288d6f00ce5c5780fcb86f0p0,
+    0x1.51745d1745d18p0
+  },
+  { // Entry 311
+    -0x1.18b16f086288d6f00ce5c5780fcb86f0p0,
+    -0x1.51745d1745d18p0
+  },
+  { // Entry 312
+    0x1.238f2c8477adc049b515c7f78f3ae422p0,
+    0x1.7a2e8ba2e8ba4p0
+  },
+  { // Entry 313
+    -0x1.238f2c8477adc049b515c7f78f3ae422p0,
+    -0x1.7a2e8ba2e8ba4p0
+  },
+  { // Entry 314
+    0x1.2dabb7e49e39ff2a10deddc33bc81fccp0,
+    0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 315
+    -0x1.2dabb7e49e39ff2a10deddc33bc81fccp0,
+    -0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 316
+    0x1.372579fd08bf3f740d425e125a1352ffp0,
+    0x1.cba2e8ba2e8bcp0
+  },
+  { // Entry 317
+    -0x1.372579fd08bf3f740d425e125a1352ffp0,
+    -0x1.cba2e8ba2e8bcp0
+  },
+  { // Entry 318
+    0x1.4013dac5da2a703e1c77ca4721acee1cp0,
+    0x1.f45d1745d1748p0
+  },
+  { // Entry 319
+    -0x1.4013dac5da2a703e1c77ca4721acee1cp0,
+    -0x1.f45d1745d1748p0
+  },
+  { // Entry 320
+    0x1.48894c52b3445f6f84012f405de32fa2p0,
+    0x1.0e8ba2e8ba2eap1
+  },
+  { // Entry 321
+    -0x1.48894c52b3445f6f84012f405de32fa2p0,
+    -0x1.0e8ba2e8ba2eap1
+  },
+  { // Entry 322
+    0x1.5094a1d6e6b639229cdb3810b410cd5cp0,
+    0x1.22e8ba2e8ba30p1
+  },
+  { // Entry 323
+    -0x1.5094a1d6e6b639229cdb3810b410cd5cp0,
+    -0x1.22e8ba2e8ba30p1
+  },
+  { // Entry 324
+    0x1.5841f8c61fd58c8dad04fdec3cf0af73p0,
+    0x1.3745d1745d176p1
+  },
+  { // Entry 325
+    -0x1.5841f8c61fd58c8dad04fdec3cf0af73p0,
+    -0x1.3745d1745d176p1
+  },
+  { // Entry 326
+    0x1.5f9b5c16910ae69ed06d3e621a09f184p0,
+    0x1.4ba2e8ba2e8bcp1
+  },
+  { // Entry 327
+    -0x1.5f9b5c16910ae69ed06d3e621a09f184p0,
+    -0x1.4ba2e8ba2e8bcp1
+  },
+  { // Entry 328
+    0x1.66a9398ba2a3a698c051df109f770e88p0,
+    0x1.6000000000002p1
+  },
+  { // Entry 329
+    -0x1.66a9398ba2a3a698c051df109f770e88p0,
+    -0x1.6000000000002p1
+  },
+  { // Entry 330
+    0x1.6d72b7dcc7672cfcef1093936e2afe79p0,
+    0x1.745d1745d1748p1
+  },
+  { // Entry 331
+    -0x1.6d72b7dcc7672cfcef1093936e2afe79p0,
+    -0x1.745d1745d1748p1
+  },
+  { // Entry 332
+    0x1.73fdf738e55e14736c80bd51b7812f30p0,
+    0x1.88ba2e8ba2e8ep1
+  },
+  { // Entry 333
+    -0x1.73fdf738e55e14736c80bd51b7812f30p0,
+    -0x1.88ba2e8ba2e8ep1
+  },
+  { // Entry 334
+    0x1.7a504269f3f8eaacfe698899d72d5624p0,
+    0x1.9d1745d1745d4p1
+  },
+  { // Entry 335
+    -0x1.7a504269f3f8eaacfe698899d72d5624p0,
+    -0x1.9d1745d1745d4p1
+  },
+  { // Entry 336
+    0x1.806e34d4af571a8ec04858e9296e6f3bp0,
+    0x1.b1745d1745d1ap1
+  },
+  { // Entry 337
+    -0x1.806e34d4af571a8ec04858e9296e6f3bp0,
+    -0x1.b1745d1745d1ap1
+  },
+  { // Entry 338
+    0x1.865bd841493085e78103debe7c1f93c8p0,
+    0x1.c5d1745d17460p1
+  },
+  { // Entry 339
+    -0x1.865bd841493085e78103debe7c1f93c8p0,
+    -0x1.c5d1745d17460p1
+  },
+  { // Entry 340
+    0x1.8c1cbc7cd4e55e886cb4a94f63941b44p0,
+    0x1.da2e8ba2e8ba6p1
+  },
+  { // Entry 341
+    -0x1.8c1cbc7cd4e55e886cb4a94f63941b44p0,
+    -0x1.da2e8ba2e8ba6p1
+  },
+  { // Entry 342
+    0x1.91b40a4df21132c467d86553807600cdp0,
+    0x1.ee8ba2e8ba2ecp1
+  },
+  { // Entry 343
+    -0x1.91b40a4df21132c467d86553807600cdp0,
+    -0x1.ee8ba2e8ba2ecp1
+  },
+  { // Entry 344
+    0x1.972492d08e2c99d904b83bd8d8b5b7b7p0,
+    0x1.01745d1745d19p2
+  },
+  { // Entry 345
+    -0x1.972492d08e2c99d904b83bd8d8b5b7b7p0,
+    -0x1.01745d1745d19p2
+  },
+  { // Entry 346
+    0x1.9c70dc04b206ec6b858fbed95865bda0p0,
+    0x1.0ba2e8ba2e8bcp2
+  },
+  { // Entry 347
+    -0x1.9c70dc04b206ec6b858fbed95865bda0p0,
+    -0x1.0ba2e8ba2e8bcp2
+  },
+  { // Entry 348
+    0x1.a19b2b2929306e418bc85ca14b471159p0,
+    0x1.15d1745d1745fp2
+  },
+  { // Entry 349
+    -0x1.a19b2b2929306e418bc85ca14b471159p0,
+    -0x1.15d1745d1745fp2
+  },
+  { // Entry 350
+    0x1.a6a58d55e307cd862806e73ea3aa75dcp0,
+    0x1.2000000000002p2
+  },
+  { // Entry 351
+    -0x1.a6a58d55e307cd862806e73ea3aa75dcp0,
+    -0x1.2000000000002p2
+  },
+  { // Entry 352
+    0x1.ab91deaee6e7398a4db8d908e1d20b42p0,
+    0x1.2a2e8ba2e8ba5p2
+  },
+  { // Entry 353
+    -0x1.ab91deaee6e7398a4db8d908e1d20b42p0,
+    -0x1.2a2e8ba2e8ba5p2
+  },
+  { // Entry 354
+    0x1.b061d074afb8809398fc89026fd75a85p0,
+    0x1.345d1745d1748p2
+  },
+  { // Entry 355
+    -0x1.b061d074afb8809398fc89026fd75a85p0,
+    -0x1.345d1745d1748p2
+  },
+  { // Entry 356
+    0x1.b516ee27c2d35cf59a75730f88f173e0p0,
+    0x1.3e8ba2e8ba2ebp2
+  },
+  { // Entry 357
+    -0x1.b516ee27c2d35cf59a75730f88f173e0p0,
+    -0x1.3e8ba2e8ba2ebp2
+  },
+  { // Entry 358
+    0x1.b9b2a1e9f9da334490d48cb02cb4bf58p0,
+    0x1.48ba2e8ba2e8ep2
+  },
+  { // Entry 359
+    -0x1.b9b2a1e9f9da334490d48cb02cb4bf58p0,
+    -0x1.48ba2e8ba2e8ep2
+  },
+  { // Entry 360
+    0x1.be36383f4756f16d777bfee1465b907ep0,
+    0x1.52e8ba2e8ba31p2
+  },
+  { // Entry 361
+    -0x1.be36383f4756f16d777bfee1465b907ep0,
+    -0x1.52e8ba2e8ba31p2
+  },
+  { // Entry 362
+    0x1.c2a2e349098e1ce3cf090c892ec047cap0,
+    0x1.5d1745d1745d4p2
+  },
+  { // Entry 363
+    -0x1.c2a2e349098e1ce3cf090c892ec047cap0,
+    -0x1.5d1745d1745d4p2
+  },
+  { // Entry 364
+    0x1.c6f9bd91c721629d7d05a54a3b34c8fep0,
+    0x1.6745d1745d177p2
+  },
+  { // Entry 365
+    -0x1.c6f9bd91c721629d7d05a54a3b34c8fep0,
+    -0x1.6745d1745d177p2
+  },
+  { // Entry 366
+    0x1.cb3bcc7b190568ede2e1277438cb7dc0p0,
+    0x1.71745d1745d1ap2
+  },
+  { // Entry 367
+    -0x1.cb3bcc7b190568ede2e1277438cb7dc0p0,
+    -0x1.71745d1745d1ap2
+  },
+  { // Entry 368
+    0x1.cf6a025c48d470136550753b069eb686p0,
+    0x1.7ba2e8ba2e8bdp2
+  },
+  { // Entry 369
+    -0x1.cf6a025c48d470136550753b069eb686p0,
+    -0x1.7ba2e8ba2e8bdp2
+  },
+  { // Entry 370
+    0x1.d385405d97057c2d90e63f01cb80587dp0,
+    0x1.85d1745d17460p2
+  },
+  { // Entry 371
+    -0x1.d385405d97057c2d90e63f01cb80587dp0,
+    -0x1.85d1745d17460p2
+  },
+  { // Entry 372
+    0x1.d78e581a0c130b55a8fe17e4c041698cp0,
+    0x1.9000000000003p2
+  },
+  { // Entry 373
+    -0x1.d78e581a0c130b55a8fe17e4c041698cp0,
+    -0x1.9000000000003p2
+  },
+  { // Entry 374
+    0x1.db860d100d75f2cb69726e75e5a5a9a0p0,
+    0x1.9a2e8ba2e8ba6p2
+  },
+  { // Entry 375
+    -0x1.db860d100d75f2cb69726e75e5a5a9a0p0,
+    -0x1.9a2e8ba2e8ba6p2
+  },
+  { // Entry 376
+    0x1.df6d15e795af02a9c5484050b847db7dp0,
+    0x1.a45d1745d1749p2
+  },
+  { // Entry 377
+    -0x1.df6d15e795af02a9c5484050b847db7dp0,
+    -0x1.a45d1745d1749p2
+  },
+  { // Entry 378
+    0x1.e3441d93d4a6e4350c223c240878382cp0,
+    0x1.ae8ba2e8ba2ecp2
+  },
+  { // Entry 379
+    -0x1.e3441d93d4a6e4350c223c240878382cp0,
+    -0x1.ae8ba2e8ba2ecp2
+  },
+  { // Entry 380
+    0x1.e70bc455167843aff629b746acfdb954p0,
+    0x1.b8ba2e8ba2e8fp2
+  },
+  { // Entry 381
+    -0x1.e70bc455167843aff629b746acfdb954p0,
+    -0x1.b8ba2e8ba2e8fp2
+  },
+  { // Entry 382
+    0x1.eac4a09f102dc54392e2d4473d85908cp0,
+    0x1.c2e8ba2e8ba32p2
+  },
+  { // Entry 383
+    -0x1.eac4a09f102dc54392e2d4473d85908cp0,
+    -0x1.c2e8ba2e8ba32p2
+  },
+  { // Entry 384
+    0x1.ee6f3fe7143487345a5bdd055002660cp0,
+    0x1.cd1745d1745d5p2
+  },
+  { // Entry 385
+    -0x1.ee6f3fe7143487345a5bdd055002660cp0,
+    -0x1.cd1745d1745d5p2
+  },
+  { // Entry 386
+    0x1.f20c275d2d02fed5358f1cbf6bde21f6p0,
+    0x1.d745d1745d178p2
+  },
+  { // Entry 387
+    -0x1.f20c275d2d02fed5358f1cbf6bde21f6p0,
+    -0x1.d745d1745d178p2
+  },
+  { // Entry 388
+    0x1.f59bd492aecb81e8f922dfb0a070b22cp0,
+    0x1.e1745d1745d1bp2
+  },
+  { // Entry 389
+    -0x1.f59bd492aecb81e8f922dfb0a070b22cp0,
+    -0x1.e1745d1745d1bp2
+  },
+  { // Entry 390
+    0x1.f91ebe1075131607e1dbc3ce239d00d2p0,
+    0x1.eba2e8ba2e8bep2
+  },
+  { // Entry 391
+    -0x1.f91ebe1075131607e1dbc3ce239d00d2p0,
+    -0x1.eba2e8ba2e8bep2
+  },
+  { // Entry 392
+    0x1.fc9553deb389bb042ac0e43d2dcb675dp0,
+    0x1.f5d1745d17461p2
+  },
+  { // Entry 393
+    -0x1.fc9553deb389bb042ac0e43d2dcb675dp0,
+    -0x1.f5d1745d17461p2
+  },
+  { // Entry 394
+    0x1.p1,
+    0x1.0p3
+  },
+  { // Entry 395
+    -0x1.p1,
+    -0x1.0p3
+  },
+  { // Entry 396
+    0x1.428a2f98d728ae223ddab715be250d0cp33,
+    0x1.0p100
+  },
+  { // Entry 397
+    -0x1.428a2f98d728ae223ddab715be250d0cp33,
+    -0x1.0p100
+  },
+  { // Entry 398
+    0x1.4cf38fa1af1c8e60b99ab1c90a701828p33,
+    0x1.199999999999ap100
+  },
+  { // Entry 399
+    -0x1.4cf38fa1af1c8e60b99ab1c90a701828p33,
+    -0x1.199999999999ap100
+  },
+  { // Entry 400
+    0x1.56bfea66ef78d5074657b3dee42b5e0cp33,
+    0x1.3333333333334p100
+  },
+  { // Entry 401
+    -0x1.56bfea66ef78d5074657b3dee42b5e0cp33,
+    -0x1.3333333333334p100
+  },
+  { // Entry 402
+    0x1.60048365d4c9ff9b67f93498f33785eap33,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 403
+    -0x1.60048365d4c9ff9b67f93498f33785eap33,
+    -0x1.4cccccccccccep100
+  },
+  { // Entry 404
+    0x1.68d25a9bdf483c622a268591832b9e0cp33,
+    0x1.6666666666668p100
+  },
+  { // Entry 405
+    -0x1.68d25a9bdf483c622a268591832b9e0cp33,
+    -0x1.6666666666668p100
+  },
+  { // Entry 406
+    0x1.7137449123ef700f67831ee169a0f859p33,
+    0x1.8000000000002p100
+  },
+  { // Entry 407
+    -0x1.7137449123ef700f67831ee169a0f859p33,
+    -0x1.8000000000002p100
+  },
+  { // Entry 408
+    0x1.793eace1a3426c2ab31f0f7242cbda04p33,
+    0x1.999999999999cp100
+  },
+  { // Entry 409
+    -0x1.793eace1a3426c2ab31f0f7242cbda04p33,
+    -0x1.999999999999cp100
+  },
+  { // Entry 410
+    0x1.80f22109df4e9aabf15aa42b09a56fe4p33,
+    0x1.b333333333336p100
+  },
+  { // Entry 411
+    -0x1.80f22109df4e9aabf15aa42b09a56fe4p33,
+    -0x1.b333333333336p100
+  },
+  { // Entry 412
+    0x1.8859b5bd7e46d0b16729348cdc72c851p33,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 413
+    -0x1.8859b5bd7e46d0b16729348cdc72c851p33,
+    -0x1.cccccccccccd0p100
+  },
+  { // Entry 414
+    0x1.8f7c5264003808599b16e8bbfa290ef6p33,
+    0x1.e66666666666ap100
+  },
+  { // Entry 415
+    -0x1.8f7c5264003808599b16e8bbfa290ef6p33,
+    -0x1.e66666666666ap100
+  },
+  { // Entry 416
+    0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    0x1.0p101
+  },
+  { // Entry 417
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    -0x1.0p101
+  },
+  { // Entry 418
+    0x1.965fea53d6e3c82b05999ab43dc4def1p66,
+    0x1.0p200
+  },
+  { // Entry 419
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p66,
+    -0x1.0p200
+  },
+  { // Entry 420
+    0x1.a37e13dc4b3bbdc9f070bbccaee9e708p66,
+    0x1.199999999999ap200
+  },
+  { // Entry 421
+    -0x1.a37e13dc4b3bbdc9f070bbccaee9e708p66,
+    -0x1.199999999999ap200
+  },
+  { // Entry 422
+    0x1.afd66803b2c0cb28b8149b63f2e5b8e9p66,
+    0x1.3333333333334p200
+  },
+  { // Entry 423
+    -0x1.afd66803b2c0cb28b8149b63f2e5b8e9p66,
+    -0x1.3333333333334p200
+  },
+  { // Entry 424
+    0x1.bb83b127e934396de5002f26845693c2p66,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 425
+    -0x1.bb83b127e934396de5002f26845693c2p66,
+    -0x1.4cccccccccccep200
+  },
+  { // Entry 426
+    0x1.c69b5a72f1a9a3d5297dfa071329d303p66,
+    0x1.6666666666668p200
+  },
+  { // Entry 427
+    -0x1.c69b5a72f1a9a3d5297dfa071329d303p66,
+    -0x1.6666666666668p200
+  },
+  { // Entry 428
+    0x1.d12ed0af1a27fc29a341295b82254417p66,
+    0x1.8000000000002p200
+  },
+  { // Entry 429
+    -0x1.d12ed0af1a27fc29a341295b82254417p66,
+    -0x1.8000000000002p200
+  },
+  { // Entry 430
+    0x1.db4c7760bcff3665b7f68aed854e789bp66,
+    0x1.999999999999cp200
+  },
+  { // Entry 431
+    -0x1.db4c7760bcff3665b7f68aed854e789bp66,
+    -0x1.999999999999cp200
+  },
+  { // Entry 432
+    0x1.e50057a6819032342f0b19647f70fc87p66,
+    0x1.b333333333336p200
+  },
+  { // Entry 433
+    -0x1.e50057a6819032342f0b19647f70fc87p66,
+    -0x1.b333333333336p200
+  },
+  { // Entry 434
+    0x1.ee549fe7085e87e59ca6a43631166ee4p66,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 435
+    -0x1.ee549fe7085e87e59ca6a43631166ee4p66,
+    -0x1.cccccccccccd0p200
+  },
+  { // Entry 436
+    0x1.f75202ec86e0c47a6b05c229a6b58c64p66,
+    0x1.e66666666666ap200
+  },
+  { // Entry 437
+    -0x1.f75202ec86e0c47a6b05c229a6b58c64p66,
+    -0x1.e66666666666ap200
+  },
+  { // Entry 438
+    0x1.p67,
+    0x1.0p201
+  },
+  { // Entry 439
+    -0x1.p67,
+    -0x1.0p201
+  },
+  { // Entry 440
+    0x1.428a2f98d728ae223ddab715be250d0cp333,
+    0x1.0p1000
+  },
+  { // Entry 441
+    -0x1.428a2f98d728ae223ddab715be250d0cp333,
+    -0x1.0p1000
+  },
+  { // Entry 442
+    0x1.4cf38fa1af1c8e60b99ab1c90a701828p333,
+    0x1.199999999999ap1000
+  },
+  { // Entry 443
+    -0x1.4cf38fa1af1c8e60b99ab1c90a701828p333,
+    -0x1.199999999999ap1000
+  },
+  { // Entry 444
+    0x1.56bfea66ef78d5074657b3dee42b5e0cp333,
+    0x1.3333333333334p1000
+  },
+  { // Entry 445
+    -0x1.56bfea66ef78d5074657b3dee42b5e0cp333,
+    -0x1.3333333333334p1000
+  },
+  { // Entry 446
+    0x1.60048365d4c9ff9b67f93498f33785eap333,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 447
+    -0x1.60048365d4c9ff9b67f93498f33785eap333,
+    -0x1.4cccccccccccep1000
+  },
+  { // Entry 448
+    0x1.68d25a9bdf483c622a268591832b9e0cp333,
+    0x1.6666666666668p1000
+  },
+  { // Entry 449
+    -0x1.68d25a9bdf483c622a268591832b9e0cp333,
+    -0x1.6666666666668p1000
+  },
+  { // Entry 450
+    0x1.7137449123ef700f67831ee169a0f859p333,
+    0x1.8000000000002p1000
+  },
+  { // Entry 451
+    -0x1.7137449123ef700f67831ee169a0f859p333,
+    -0x1.8000000000002p1000
+  },
+  { // Entry 452
+    0x1.793eace1a3426c2ab31f0f7242cbda04p333,
+    0x1.999999999999cp1000
+  },
+  { // Entry 453
+    -0x1.793eace1a3426c2ab31f0f7242cbda04p333,
+    -0x1.999999999999cp1000
+  },
+  { // Entry 454
+    0x1.80f22109df4e9aabf15aa42b09a56fe4p333,
+    0x1.b333333333336p1000
+  },
+  { // Entry 455
+    -0x1.80f22109df4e9aabf15aa42b09a56fe4p333,
+    -0x1.b333333333336p1000
+  },
+  { // Entry 456
+    0x1.8859b5bd7e46d0b16729348cdc72c851p333,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 457
+    -0x1.8859b5bd7e46d0b16729348cdc72c851p333,
+    -0x1.cccccccccccd0p1000
+  },
+  { // Entry 458
+    0x1.8f7c5264003808599b16e8bbfa290ef6p333,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 459
+    -0x1.8f7c5264003808599b16e8bbfa290ef6p333,
+    -0x1.e66666666666ap1000
+  },
+  { // Entry 460
+    0x1.965fea53d6e3c82b05999ab43dc4def1p333,
+    0x1.0p1001
+  },
+  { // Entry 461
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p333,
+    -0x1.0p1001
+  },
+  { // Entry 462
+    0x1.965fea53d6e3c3ef5b28bb21de4e77c6p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 463
+    -0x1.965fea53d6e3c3ef5b28bb21de4e77c6p0,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 464
+    0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    0x1.0p2
+  },
+  { // Entry 465
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    -0x1.0p2
+  },
+  { // Entry 466
+    0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p0,
+    0x1.0000000000001p2
+  },
+  { // Entry 467
+    -0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p0,
+    -0x1.0000000000001p2
+  },
+  { // Entry 468
+    0x1.428a2f98d728aac622b11f82a6f666c9p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 469
+    -0x1.428a2f98d728aac622b11f82a6f666c9p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 470
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.0p1
+  },
+  { // Entry 471
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.0p1
+  },
+  { // Entry 472
+    0x1.428a2f98d728b4da742de63bec4c97dep0,
+    0x1.0000000000001p1
+  },
+  { // Entry 473
+    -0x1.428a2f98d728b4da742de63bec4c97dep0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 474
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 475
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 476
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 477
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 478
+    0x1.0000000000000555555555555538e38ep0,
+    0x1.0000000000001p0
+  },
+  { // Entry 479
+    -0x1.0000000000000555555555555538e38ep0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 480
+    0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 481
+    -0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 482
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    0x1.0p-1
+  },
+  { // Entry 483
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    -0x1.0p-1
+  },
+  { // Entry 484
+    0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 485
+    -0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 486
+    0x1.428a2f98d728aac622b11f82a6f666c9p-1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 487
+    -0x1.428a2f98d728aac622b11f82a6f666c9p-1,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 488
+    0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    0x1.0p-2
+  },
+  { // Entry 489
+    -0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    -0x1.0p-2
+  },
+  { // Entry 490
+    0x1.428a2f98d728b4da742de63bec4c97dep-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 491
+    -0x1.428a2f98d728b4da742de63bec4c97dep-1,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 492
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 493
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-2,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 494
+    0x1.p-1,
+    0x1.0p-3
+  },
+  { // Entry 495
+    -0x1.p-1,
+    -0x1.0p-3
+  },
+  { // Entry 496
+    0x1.0000000000000555555555555538e38ep-1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 497
+    -0x1.0000000000000555555555555538e38ep-1,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 498
+    0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 499
+    -0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-2,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 500
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    0x1.0p-4
+  },
+  { // Entry 501
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    -0x1.0p-4
+  },
+  { // Entry 502
+    0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 503
+    -0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-2,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 504
+    0x1.428a2f98d728aac622b11f82a6f666c9p-2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 505
+    -0x1.428a2f98d728aac622b11f82a6f666c9p-2,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 506
+    0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    0x1.0p-5
+  },
+  { // Entry 507
+    -0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    -0x1.0p-5
+  },
+  { // Entry 508
+    0x1.428a2f98d728b4da742de63bec4c97dep-2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 509
+    -0x1.428a2f98d728b4da742de63bec4c97dep-2,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 510
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-3,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 511
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-3,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 512
+    0x1.p-2,
+    0x1.0p-6
+  },
+  { // Entry 513
+    -0x1.p-2,
+    -0x1.0p-6
+  },
+  { // Entry 514
+    0x1.0000000000000555555555555538e38ep-2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 515
+    -0x1.0000000000000555555555555538e38ep-2,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 516
+    0x1.p-358,
+    0x1.0p-1074
+  },
+  { // Entry 517
+    -0x1.p-358,
+    -0x1.0p-1074
+  },
+  { // Entry 518
+    -0x1.p-358,
+    -0x1.0p-1074
+  },
+  { // Entry 519
+    0x1.p-358,
+    0x1.0p-1074
+  },
+  { // Entry 520
+    0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 521
+    -0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 522
+    -0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 523
+    0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 524
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 525
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 526
+    0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 527
+    -0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 528
+    0x1.428a2f98d728a76a078787ef8fb5d54bp341,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 529
+    -0x1.428a2f98d728a76a078787ef8fb5d54bp341,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 530
+    0x1.76ef7e73104b77508331312871c1baeap0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 531
+    -0x1.76ef7e73104b77508331312871c1baeap0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 532
+    0x1.2996264e0e3fdb54d3ab251146a24027p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 533
+    -0x1.2996264e0e3fdb54d3ab251146a24027p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 534
+    0x1.d8639fdcb60ea0b871238ad028637d9fp-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 535
+    -0x1.d8639fdcb60ea0b871238ad028637d9fp-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 536
+    0x1.p1,
+    0x1.0p3
+  },
+  { // Entry 537
+    -0x1.p1,
+    -0x1.0p3
+  },
+  { // Entry 538
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.0p1
+  },
+  { // Entry 539
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.0p1
+  },
+  { // Entry 540
+    0x1.0000000000000555555555555538e38ep0,
+    0x1.0000000000001p0
+  },
+  { // Entry 541
+    -0x1.0000000000000555555555555538e38ep0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 542
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 543
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 544
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 545
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 546
+    0x1.428a2f98d728b4da742de63bec4c97dep-341,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 547
+    -0x1.428a2f98d728b4da742de63bec4c97dep-341,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 548
+    0x1.428a2f98d728ae223ddab715be250d0cp-341,
+    0x1.0p-1022
+  },
+  { // Entry 549
+    -0x1.428a2f98d728ae223ddab715be250d0cp-341,
+    -0x1.0p-1022
+  },
+  { // Entry 550
+    0x1.428a2f98d728a76a078787ef8fb5d54bp-341,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 551
+    -0x1.428a2f98d728a76a078787ef8fb5d54bp-341,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 552
+    0x1.428a2f98d728a0b1d13458c960fef09cp-341,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 553
+    -0x1.428a2f98d728a0b1d13458c960fef09cp-341,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 554
+    0x1.428a2f98d728ae223ddab715be250d0cp-358,
+    0x1.0p-1073
+  },
+  { // Entry 555
+    -0x1.428a2f98d728ae223ddab715be250d0cp-358,
+    -0x1.0p-1073
+  },
+  { // Entry 556
+    0x1.p-358,
+    0x1.0p-1074
+  },
+  { // Entry 557
+    -0x1.p-358,
+    -0x1.0p-1074
+  },
+  { // Entry 558
+    0.0,
+    0.0
+  },
+  { // Entry 559
+    -0.0,
+    -0.0
+  },
+  { // Entry 560
+    0x1.80p1,
+    0x1.bp4
+  },
+  { // Entry 561
+    -0x1.80p1,
+    -0x1.bp4
+  },
+  { // Entry 562
+    0x1.40p2,
+    0x1.f40p6
+  },
+  { // Entry 563
+    -0x1.40p2,
+    -0x1.f40p6
+  }
+};
diff --git a/tests/math_data/cbrtf_intel_data.h b/tests/math_data/cbrtf_intel_data.h
new file mode 100644
index 0000000..5ce73df
--- /dev/null
+++ b/tests/math_data/cbrtf_intel_data.h
@@ -0,0 +1,1754 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_cbrtf_intel_data[] = {
+  { // Entry 0
+    -0x1.00007fffc000355520003aaa663936aap-42,
+    -0x1.000180p-126
+  },
+  { // Entry 1
+    0x1.00007fffc000355520003aaa663936aap-42,
+    0x1.000180p-126
+  },
+  { // Entry 2
+    -0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    -0x1.0003p-6
+  },
+  { // Entry 3
+    0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    0x1.0003p-6
+  },
+  { // Entry 4
+    -0x1.007c2715b6911795158a4d4cc45b8d59p2,
+    -0x1.01752ap6
+  },
+  { // Entry 5
+    0x1.007c2715b6911795158a4d4cc45b8d59p2,
+    0x1.01752ap6
+  },
+  { // Entry 6
+    -0x1.0b9ccd06011fce363b7a50a0a3b8e26cp1,
+    -0x1.247112p3
+  },
+  { // Entry 7
+    0x1.0b9ccd06011fce363b7a50a0a3b8e26cp1,
+    0x1.247112p3
+  },
+  { // Entry 8
+    -0x1.aa863b0a38d00e125cbd173f60ddbb68p1,
+    -0x1.27fff8p5
+  },
+  { // Entry 9
+    0x1.aa863b0a38d00e125cbd173f60ddbb68p1,
+    0x1.27fff8p5
+  },
+  { // Entry 10
+    -0x1.b0ff4b0cf530be2de450549f985f42afp-3,
+    -0x1.35ae80p-7
+  },
+  { // Entry 11
+    0x1.b0ff4b0cf530be2de450549f985f42afp-3,
+    0x1.35ae80p-7
+  },
+  { // Entry 12
+    -0x1.d30d4d0027a339e3355b6acc1d16b858p-11,
+    -0x1.84a5b6p-31
+  },
+  { // Entry 13
+    0x1.d30d4d0027a339e3355b6acc1d16b858p-11,
+    0x1.84a5b6p-31
+  },
+  { // Entry 14
+    -0x1.7bc7460098a24fb469f60dedd0c113cep-4,
+    -0x1.a1e880p-11
+  },
+  { // Entry 15
+    0x1.7bc7460098a24fb469f60dedd0c113cep-4,
+    0x1.a1e880p-11
+  },
+  { // Entry 16
+    -0x1.e18718fd2b5e5307048d4417449467b6p-11,
+    -0x1.a9ea80p-31
+  },
+  { // Entry 17
+    0x1.e18718fd2b5e5307048d4417449467b6p-11,
+    0x1.a9ea80p-31
+  },
+  { // Entry 18
+    -0x1.e3082be3326da6c23ae338a3f121dd1fp-11,
+    -0x1.adeb80p-31
+  },
+  { // Entry 19
+    0x1.e3082be3326da6c23ae338a3f121dd1fp-11,
+    0x1.adeb80p-31
+  },
+  { // Entry 20
+    0x1.965ff706d5d0ceecd979f25d2bd0f2dcp-14,
+    0x1.000018p-40
+  },
+  { // Entry 21
+    -0x1.965ff706d5d0ceecd979f25d2bd0f2dcp-14,
+    -0x1.000018p-40
+  },
+  { // Entry 22
+    0x1.96602e0e72a7fdf15e33145af6f263d8p0,
+    0x1.000080p2
+  },
+  { // Entry 23
+    -0x1.96602e0e72a7fdf15e33145af6f263d8p0,
+    -0x1.000080p2
+  },
+  { // Entry 24
+    0x1.96603efd1611ff8ea190cefd028f4506p-14,
+    0x1.0000a0p-40
+  },
+  { // Entry 25
+    -0x1.96603efd1611ff8ea190cefd028f4506p-14,
+    -0x1.0000a0p-40
+  },
+  { // Entry 26
+    0x1.00003ffff00006aaa755572aa998e434p-2,
+    0x1.0000c0p-6
+  },
+  { // Entry 27
+    -0x1.00003ffff00006aaa755572aa998e434p-2,
+    -0x1.0000c0p-6
+  },
+  { // Entry 28
+    0x1.966060da58aa5d0c57334a9a680c3e14p-14,
+    0x1.0000e0p-40
+  },
+  { // Entry 29
+    -0x1.966060da58aa5d0c57334a9a680c3e14p-14,
+    -0x1.0000e0p-40
+  },
+  { // Entry 30
+    0x1.428ad0dd9e52d1023b2faca281049d23p-42,
+    0x1.000180p-125
+  },
+  { // Entry 31
+    -0x1.428ad0dd9e52d1023b2faca281049d23p-42,
+    -0x1.000180p-125
+  },
+  { // Entry 32
+    0x1.00007fffc000355520003aaa663936aap-42,
+    0x1.000180p-126
+  },
+  { // Entry 33
+    -0x1.00007fffc000355520003aaa663936aap-42,
+    -0x1.000180p-126
+  },
+  { // Entry 34
+    0x1.966118fd0fff4af1016786c52473d739p0,
+    0x1.00023cp2
+  },
+  { // Entry 35
+    -0x1.966118fd0fff4af1016786c52473d739p0,
+    -0x1.00023cp2
+  },
+  { // Entry 36
+    0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    0x1.0003p-6
+  },
+  { // Entry 37
+    -0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    -0x1.0003p-6
+  },
+  { // Entry 38
+    0x1.9661c46c3f2accbc3b2879ecc64c5563p-42,
+    0x1.000380p-124
+  },
+  { // Entry 39
+    -0x1.9661c46c3f2accbc3b2879ecc64c5563p-42,
+    -0x1.000380p-124
+  },
+  { // Entry 40
+    0x1.000954fe3e2e3b3fc203c0f1122ef525p-2,
+    0x1.001cp-6
+  },
+  { // Entry 41
+    -0x1.000954fe3e2e3b3fc203c0f1122ef525p-2,
+    -0x1.001cp-6
+  },
+  { // Entry 42
+    0x1.000fff001aa755ca9990d15f4978c319p-1,
+    0x1.0030p-3
+  },
+  { // Entry 43
+    -0x1.000fff001aa755ca9990d15f4978c319p-1,
+    -0x1.0030p-3
+  },
+  { // Entry 44
+    0x1.000fff001aa755ca9990d15f4978c319p-2,
+    0x1.0030p-6
+  },
+  { // Entry 45
+    -0x1.000fff001aa755ca9990d15f4978c319p-2,
+    -0x1.0030p-6
+  },
+  { // Entry 46
+    0x1.96e94efe3bb4f031f6fd29764c187ba9p-14,
+    0x1.0104p-40
+  },
+  { // Entry 47
+    -0x1.96e94efe3bb4f031f6fd29764c187ba9p-14,
+    -0x1.0104p-40
+  },
+  { // Entry 48
+    0x1.4354f47046b122c8269cefa33f6945e0p-12,
+    0x1.01e4p-35
+  },
+  { // Entry 49
+    -0x1.4354f47046b122c8269cefa33f6945e0p-12,
+    -0x1.01e4p-35
+  },
+  { // Entry 50
+    0x1.435ce4ffe5df0ed6186f37c8cd55dfcdp-14,
+    0x1.01f7p-41
+  },
+  { // Entry 51
+    -0x1.435ce4ffe5df0ed6186f37c8cd55dfcdp-14,
+    -0x1.01f7p-41
+  },
+  { // Entry 52
+    0x1.43da6b00005c39b0e6c7c4cec8063f45p0,
+    0x1.0323dep1
+  },
+  { // Entry 53
+    -0x1.43da6b00005c39b0e6c7c4cec8063f45p0,
+    -0x1.0323dep1
+  },
+  { // Entry 54
+    0x1.998ca5fd9079c0acf8d0c470551815c4p-14,
+    0x1.060cp-40
+  },
+  { // Entry 55
+    -0x1.998ca5fd9079c0acf8d0c470551815c4p-14,
+    -0x1.060cp-40
+  },
+  { // Entry 56
+    0x1.998ebb71eaf54f2b63663678acd9c1b0p-14,
+    0x1.0610p-40
+  },
+  { // Entry 57
+    -0x1.998ebb71eaf54f2b63663678acd9c1b0p-14,
+    -0x1.0610p-40
+  },
+  { // Entry 58
+    0x1.454f770000009a77b66758620294365fp-1,
+    0x1.06a76ap-2
+  },
+  { // Entry 59
+    -0x1.454f770000009a77b66758620294365fp-1,
+    -0x1.06a76ap-2
+  },
+  { // Entry 60
+    0x1.9ap-4,
+    0x1.06e9aap-10
+  },
+  { // Entry 61
+    -0x1.9ap-4,
+    -0x1.06e9aap-10
+  },
+  { // Entry 62
+    0x1.9a2dc6da8c05f5e76488d08a9d68aab3p0,
+    0x1.0741c4p2
+  },
+  { // Entry 63
+    -0x1.9a2dc6da8c05f5e76488d08a9d68aab3p0,
+    -0x1.0741c4p2
+  },
+  { // Entry 64
+    0x1.9b67b1a6ed6fd1c14e0973d1bbdffc44p-14,
+    0x1.09a0p-40
+  },
+  { // Entry 65
+    -0x1.9b67b1a6ed6fd1c14e0973d1bbdffc44p-14,
+    -0x1.09a0p-40
+  },
+  { // Entry 66
+    0x1.46ffc700366b1255b7648b4899b98d5ap-14,
+    0x1.0ac4p-41
+  },
+  { // Entry 67
+    -0x1.46ffc700366b1255b7648b4899b98d5ap-14,
+    -0x1.0ac4p-41
+  },
+  { // Entry 68
+    0x1.9c1f2ad69d37542ebe215ede37325f7dp-14,
+    0x1.0b04p-40
+  },
+  { // Entry 69
+    -0x1.9c1f2ad69d37542ebe215ede37325f7dp-14,
+    -0x1.0b04p-40
+  },
+  { // Entry 70
+    0x1.9c8148004106b29bacdfd646ccb890bbp-2,
+    0x1.0bc2e2p-4
+  },
+  { // Entry 71
+    -0x1.9c8148004106b29bacdfd646ccb890bbp-2,
+    -0x1.0bc2e2p-4
+  },
+  { // Entry 72
+    0x1.478a7bb572cc90cef3596fd852b532cdp0,
+    0x1.0c1808p1
+  },
+  { // Entry 73
+    -0x1.478a7bb572cc90cef3596fd852b532cdp0,
+    -0x1.0c1808p1
+  },
+  { // Entry 74
+    0x1.9d2397032cef4ebe8a2c5c889a8876a1p-1,
+    0x1.0cff70p-1
+  },
+  { // Entry 75
+    -0x1.9d2397032cef4ebe8a2c5c889a8876a1p-1,
+    -0x1.0cff70p-1
+  },
+  { // Entry 76
+    0x1.9e20b8d6240f02f0eaf930fdf441789ep0,
+    0x1.0eef12p2
+  },
+  { // Entry 77
+    -0x1.9e20b8d6240f02f0eaf930fdf441789ep0,
+    -0x1.0eef12p2
+  },
+  { // Entry 78
+    0x1.9ead3105d958ea7ec76503944303ef7dp2,
+    0x1.100322p8
+  },
+  { // Entry 79
+    -0x1.9ead3105d958ea7ec76503944303ef7dp2,
+    -0x1.100322p8
+  },
+  { // Entry 80
+    0x1.9f2faffdef6461c09455448fa928b9c3p-1,
+    0x1.110440p-1
+  },
+  { // Entry 81
+    -0x1.9f2faffdef6461c09455448fa928b9c3p-1,
+    -0x1.110440p-1
+  },
+  { // Entry 82
+    0x1.a0dfb8137c3e91c3f3e838645b454f05p-14,
+    0x1.145cp-40
+  },
+  { // Entry 83
+    -0x1.a0dfb8137c3e91c3f3e838645b454f05p-14,
+    -0x1.145cp-40
+  },
+  { // Entry 84
+    0x1.a2311b035270313c9ca7f92e42644378p-1,
+    0x1.16fd1ep-1
+  },
+  { // Entry 85
+    -0x1.a2311b035270313c9ca7f92e42644378p-1,
+    -0x1.16fd1ep-1
+  },
+  { // Entry 86
+    0x1.a25e7efd01b4c7f69f01fe96f643494fp-14,
+    0x1.1758p-40
+  },
+  { // Entry 87
+    -0x1.a25e7efd01b4c7f69f01fe96f643494fp-14,
+    -0x1.1758p-40
+  },
+  { // Entry 88
+    0x1.a28a68ffbdfb7eb6667d2cdd341cd234p-14,
+    0x1.17b0p-40
+  },
+  { // Entry 89
+    -0x1.a28a68ffbdfb7eb6667d2cdd341cd234p-14,
+    -0x1.17b0p-40
+  },
+  { // Entry 90
+    0x1.a2b24d04a7585fdde607a7f42d370876p-42,
+    0x1.18p-124
+  },
+  { // Entry 91
+    -0x1.a2b24d04a7585fdde607a7f42d370876p-42,
+    -0x1.18p-124
+  },
+  { // Entry 92
+    0x1.a480db076345638b28d0b5d97e216402p-14,
+    0x1.1ba4p-40
+  },
+  { // Entry 93
+    -0x1.a480db076345638b28d0b5d97e216402p-14,
+    -0x1.1ba4p-40
+  },
+  { // Entry 94
+    0x1.4e11970614cfe9395e7c524b2922ed62p-14,
+    0x1.1c71c8p-41
+  },
+  { // Entry 95
+    -0x1.4e11970614cfe9395e7c524b2922ed62p-14,
+    -0x1.1c71c8p-41
+  },
+  { // Entry 96
+    0x1.a524ac009e9723d4018859285260a132p-14,
+    0x1.1cf0p-40
+  },
+  { // Entry 97
+    -0x1.a524ac009e9723d4018859285260a132p-14,
+    -0x1.1cf0p-40
+  },
+  { // Entry 98
+    0x1.a5b64e6d1ad233a593368ac2163d6b7dp-14,
+    0x1.1e18p-40
+  },
+  { // Entry 99
+    -0x1.a5b64e6d1ad233a593368ac2163d6b7dp-14,
+    -0x1.1e18p-40
+  },
+  { // Entry 100
+    0x1.a6a58c5b6df5c725e3ec4ab187301586p-14,
+    0x1.1ffffep-40
+  },
+  { // Entry 101
+    -0x1.a6a58c5b6df5c725e3ec4ab187301586p-14,
+    -0x1.1ffffep-40
+  },
+  { // Entry 102
+    0x1.acp-4,
+    0x1.2b1530p-10
+  },
+  { // Entry 103
+    -0x1.acp-4,
+    -0x1.2b1530p-10
+  },
+  { // Entry 104
+    0x1.5500563b025a26e6cde7846c60dd1a63p0,
+    0x1.2e85dcp1
+  },
+  { // Entry 105
+    -0x1.5500563b025a26e6cde7846c60dd1a63p0,
+    -0x1.2e85dcp1
+  },
+  { // Entry 106
+    0x1.57bfb300c89d535ddc61f9b3d999dc1ep0,
+    0x1.35e4f8p1
+  },
+  { // Entry 107
+    -0x1.57bfb300c89d535ddc61f9b3d999dc1ep0,
+    -0x1.35e4f8p1
+  },
+  { // Entry 108
+    0x1.b2e9430bd21aae846599fdf68e51e1e6p-1,
+    0x1.39ce70p-1
+  },
+  { // Entry 109
+    -0x1.b2e9430bd21aae846599fdf68e51e1e6p-1,
+    -0x1.39ce70p-1
+  },
+  { // Entry 110
+    0x1.b40a010c84eac96d410f8ba21fda3f22p0,
+    0x1.3c4114p2
+  },
+  { // Entry 111
+    -0x1.b40a010c84eac96d410f8ba21fda3f22p0,
+    -0x1.3c4114p2
+  },
+  { // Entry 112
+    0x1.c5d8590ca543fcb1c0bfb46e90e419bep0,
+    0x1.6499f6p2
+  },
+  { // Entry 113
+    -0x1.c5d8590ca543fcb1c0bfb46e90e419bep0,
+    -0x1.6499f6p2
+  },
+  { // Entry 114
+    0x1.c6791f0cb47f19f16d083c211d10420bp0,
+    0x1.661576p2
+  },
+  { // Entry 115
+    -0x1.c6791f0cb47f19f16d083c211d10420bp0,
+    -0x1.661576p2
+  },
+  { // Entry 116
+    0x1.c71f7f0cd5c51d6bb49a93023a9a652dp-1,
+    0x1.679f4ap-1
+  },
+  { // Entry 117
+    -0x1.c71f7f0cd5c51d6bb49a93023a9a652dp-1,
+    -0x1.679f4ap-1
+  },
+  { // Entry 118
+    0x1.c728c50c9eca36360c22256e33e42dc2p0,
+    0x1.67b546p2
+  },
+  { // Entry 119
+    -0x1.c728c50c9eca36360c22256e33e42dc2p0,
+    -0x1.67b546p2
+  },
+  { // Entry 120
+    0x1.1fb2b50224020b9a31b5e09844e1348dp-1,
+    0x1.6b5ad6p-3
+  },
+  { // Entry 121
+    -0x1.1fb2b50224020b9a31b5e09844e1348dp-1,
+    -0x1.6b5ad6p-3
+  },
+  { // Entry 122
+    0x1.6ab560ffff8428b4d453bae089599bbap-1,
+    0x1.6c0d4ap-2
+  },
+  { // Entry 123
+    -0x1.6ab560ffff8428b4d453bae089599bbap-1,
+    -0x1.6c0d4ap-2
+  },
+  { // Entry 124
+    0x1.cdee0281e74e9710c68918089b9a62f2p-42,
+    0x1.77fffep-124
+  },
+  { // Entry 125
+    -0x1.cdee0281e74e9710c68918089b9a62f2p-42,
+    -0x1.77fffep-124
+  },
+  { // Entry 126
+    0x1.d11fb6f9f76e1fd19de47cbe7090dffbp-43,
+    0x1.7fda9cp-127
+  },
+  { // Entry 127
+    -0x1.d11fb6f9f76e1fd19de47cbe7090dffbp-43,
+    -0x1.7fda9cp-127
+  },
+  { // Entry 128
+    0x1.7ad659001595cf1b272d5984d8001451p-2,
+    0x1.9ecf20p-5
+  },
+  { // Entry 129
+    -0x1.7ad659001595cf1b272d5984d8001451p-2,
+    -0x1.9ecf20p-5
+  },
+  { // Entry 130
+    0x1.7ad659001595cf1b272d5984d8001451p-41,
+    0x1.9ecf20p-122
+  },
+  { // Entry 131
+    -0x1.7ad659001595cf1b272d5984d8001451p-41,
+    -0x1.9ecf20p-122
+  },
+  { // Entry 132
+    0x1.df1025ff8b1feb85afffe8b0cce5c6c1p-1,
+    0x1.a368d0p-1
+  },
+  { // Entry 133
+    -0x1.df1025ff8b1feb85afffe8b0cce5c6c1p-1,
+    -0x1.a368d0p-1
+  },
+  { // Entry 134
+    0x1.dfa5d2ff7b31fa9b073558a718dd7beap-3,
+    0x1.a4f268p-7
+  },
+  { // Entry 135
+    -0x1.dfa5d2ff7b31fa9b073558a718dd7beap-3,
+    -0x1.a4f268p-7
+  },
+  { // Entry 136
+    0x1.e14d56805a724bfafe4ad3bdbf27694fp0,
+    0x1.a9514ep2
+  },
+  { // Entry 137
+    -0x1.e14d56805a724bfafe4ad3bdbf27694fp0,
+    -0x1.a9514ep2
+  },
+  { // Entry 138
+    0x1.e2df53063263dd47f4e3b4be5d8acd20p-2,
+    0x1.ad7e78p-4
+  },
+  { // Entry 139
+    -0x1.e2df53063263dd47f4e3b4be5d8acd20p-2,
+    -0x1.ad7e78p-4
+  },
+  { // Entry 140
+    0x1.eb5752ff94df0f59dec8df36f4cc1b31p-41,
+    0x1.c47d8cp-121
+  },
+  { // Entry 141
+    -0x1.eb5752ff94df0f59dec8df36f4cc1b31p-41,
+    -0x1.c47d8cp-121
+  },
+  { // Entry 142
+    0x1.ebe5df03d9d653e93e8fd07e1190dca7p-2,
+    0x1.c607d2p-4
+  },
+  { // Entry 143
+    -0x1.ebe5df03d9d653e93e8fd07e1190dca7p-2,
+    -0x1.c607d2p-4
+  },
+  { // Entry 144
+    0x1.ecp-3,
+    0x1.c65030p-7
+  },
+  { // Entry 145
+    -0x1.ecp-3,
+    -0x1.c65030p-7
+  },
+  { // Entry 146
+    0x1.ed53c2fed7938cfe7d57506934d72ep-43,
+    0x1.c9fff0p-127
+  },
+  { // Entry 147
+    -0x1.ed53c2fed7938cfe7d57506934d72ep-43,
+    -0x1.c9fff0p-127
+  },
+  { // Entry 148
+    0x1.87d30f000003670b89545d5765e0e462p-2,
+    0x1.caf302p-5
+  },
+  { // Entry 149
+    -0x1.87d30f000003670b89545d5765e0e462p-2,
+    -0x1.caf302p-5
+  },
+  { // Entry 150
+    0x1.37964effff778957b16b4208af77a9b9p-1,
+    0x1.cd97a8p-3
+  },
+  { // Entry 151
+    -0x1.37964effff778957b16b4208af77a9b9p-1,
+    -0x1.cd97a8p-3
+  },
+  { // Entry 152
+    0x1.ef78e20aee43030728af06495ee66d87p-14,
+    0x1.cffffep-40
+  },
+  { // Entry 153
+    -0x1.ef78e20aee43030728af06495ee66d87p-14,
+    -0x1.cffffep-40
+  },
+  { // Entry 154
+    0x1.f060ceff8db83f2f87077b938a0de67fp-1,
+    0x1.d28cc4p-1
+  },
+  { // Entry 155
+    -0x1.f060ceff8db83f2f87077b938a0de67fp-1,
+    -0x1.d28cc4p-1
+  },
+  { // Entry 156
+    0x1.f0d282ff86ba2828aff1098a7563fc5bp-1,
+    0x1.d3cdaap-1
+  },
+  { // Entry 157
+    -0x1.f0d282ff86ba2828aff1098a7563fc5bp-1,
+    -0x1.d3cdaap-1
+  },
+  { // Entry 158
+    0x1.f1a89236719cd91fce63ecac19a53d56p0,
+    0x1.d62b5ap2
+  },
+  { // Entry 159
+    -0x1.f1a89236719cd91fce63ecac19a53d56p0,
+    -0x1.d62b5ap2
+  },
+  { // Entry 160
+    0x1.f1c2bfc0386315c501e39e3ac19c4279p-1,
+    0x1.d67590p-1
+  },
+  { // Entry 161
+    -0x1.f1c2bfc0386315c501e39e3ac19c4279p-1,
+    -0x1.d67590p-1
+  },
+  { // Entry 162
+    0x1.f2p-4,
+    0x1.d72352p-10
+  },
+  { // Entry 163
+    -0x1.f2p-4,
+    -0x1.d72352p-10
+  },
+  { // Entry 164
+    0x1.f21c203557858a7f1c78b0cb14718fa0p0,
+    0x1.d7732ap2
+  },
+  { // Entry 165
+    -0x1.f21c203557858a7f1c78b0cb14718fa0p0,
+    -0x1.d7732ap2
+  },
+  { // Entry 166
+    0x1.f21cf4389d599ec5022b876e9dab8142p-8,
+    0x1.d77584p-22
+  },
+  { // Entry 167
+    -0x1.f21cf4389d599ec5022b876e9dab8142p-8,
+    -0x1.d77584p-22
+  },
+  { // Entry 168
+    0x1.f250a10528fd3cf7552e65df7a4956f7p2,
+    0x1.d8084ep8
+  },
+  { // Entry 169
+    -0x1.f250a10528fd3cf7552e65df7a4956f7p2,
+    -0x1.d8084ep8
+  },
+  { // Entry 170
+    0x1.8be60f000087a7c285d12416d0b0cb96p-5,
+    0x1.d96a4ap-14
+  },
+  { // Entry 171
+    -0x1.8be60f000087a7c285d12416d0b0cb96p-5,
+    -0x1.d96a4ap-14
+  },
+  { // Entry 172
+    0x1.3a7bb8ffff77ce75cfe33eca149a6a50p-1,
+    0x1.da956cp-3
+  },
+  { // Entry 173
+    -0x1.3a7bb8ffff77ce75cfe33eca149a6a50p-1,
+    -0x1.da956cp-3
+  },
+  { // Entry 174
+    0x1.f5477afcf320bd46a28a22db0896968ep0,
+    0x1.e081a4p2
+  },
+  { // Entry 175
+    -0x1.f5477afcf320bd46a28a22db0896968ep0,
+    -0x1.e081a4p2
+  },
+  { // Entry 176
+    0x1.f63e0aff87cf1648687fec920f40ac1ap-3,
+    0x1.e3480ap-7
+  },
+  { // Entry 177
+    -0x1.f63e0aff87cf1648687fec920f40ac1ap-3,
+    -0x1.e3480ap-7
+  },
+  { // Entry 178
+    0x1.f64d78ff83bdecdd6abbbb5c278476c2p2,
+    0x1.e37496p8
+  },
+  { // Entry 179
+    -0x1.f64d78ff83bdecdd6abbbb5c278476c2p2,
+    -0x1.e37496p8
+  },
+  { // Entry 180
+    0x1.f67dbc1e6250897b0e90aa1d01d222c7p-14,
+    0x1.e3fffep-40
+  },
+  { // Entry 181
+    -0x1.f67dbc1e6250897b0e90aa1d01d222c7p-14,
+    -0x1.e3fffep-40
+  },
+  { // Entry 182
+    0x1.f696a6ff9280045087896842b6ed5614p0,
+    0x1.e44802p2
+  },
+  { // Entry 183
+    -0x1.f696a6ff9280045087896842b6ed5614p0,
+    -0x1.e44802p2
+  },
+  { // Entry 184
+    0x1.f6b6e4ff4a938651705569091603de15p0,
+    0x1.e4a53cp2
+  },
+  { // Entry 185
+    -0x1.f6b6e4ff4a938651705569091603de15p0,
+    -0x1.e4a53cp2
+  },
+  { // Entry 186
+    0x1.3de6d50029c5bbf888e67bae14879833p-1,
+    0x1.ea3a80p-3
+  },
+  { // Entry 187
+    -0x1.3de6d50029c5bbf888e67bae14879833p-1,
+    -0x1.ea3a80p-3
+  },
+  { // Entry 188
+    0x1.fc5fc5d0ad07f38ec9b17b1f7d4e1717p0,
+    0x1.f532fep2
+  },
+  { // Entry 189
+    -0x1.fc5fc5d0ad07f38ec9b17b1f7d4e1717p0,
+    -0x1.f532fep2
+  },
+  { // Entry 190
+    0x1.fc7d65d0f6b174adf860b9de60ce7b24p-1,
+    0x1.f58aa2p-1
+  },
+  { // Entry 191
+    -0x1.fc7d65d0f6b174adf860b9de60ce7b24p-1,
+    -0x1.f58aa2p-1
+  },
+  { // Entry 192
+    0x1.40d9df284bdbddbc87772703bfc95645p-42,
+    0x1.f7fffep-126
+  },
+  { // Entry 193
+    -0x1.40d9df284bdbddbc87772703bfc95645p-42,
+    -0x1.f7fffep-126
+  },
+  { // Entry 194
+    0x1.945120ffff77f4d7e68f17a43da19205p-1,
+    0x1.f842f0p-2
+  },
+  { // Entry 195
+    -0x1.945120ffff77f4d7e68f17a43da19205p-1,
+    -0x1.f842f0p-2
+  },
+  { // Entry 196
+    0x1.fd92627ea97689afac4039869f00e4aep-43,
+    0x1.f8bffcp-127
+  },
+  { // Entry 197
+    -0x1.fd92627ea97689afac4039869f00e4aep-43,
+    -0x1.f8bffcp-127
+  },
+  { // Entry 198
+    0x1.feff7ee99408c9b222d85d44d72d687fp-14,
+    0x1.fcfffep-40
+  },
+  { // Entry 199
+    -0x1.feff7ee99408c9b222d85d44d72d687fp-14,
+    -0x1.fcfffep-40
+  },
+  { // Entry 200
+    0x1.4217cb047241feeb78c9a78591f7bc72p-42,
+    0x1.fddffep-126
+  },
+  { // Entry 201
+    -0x1.4217cb047241feeb78c9a78591f7bc72p-42,
+    -0x1.fddffep-126
+  },
+  { // Entry 202
+    0x1.fffa53efe9ebf75d6e114db81461dc7ep-43,
+    0x1.ffeefcp-127
+  },
+  { // Entry 203
+    -0x1.fffa53efe9ebf75d6e114db81461dc7ep-43,
+    -0x1.ffeefcp-127
+  },
+  { // Entry 204
+    0x1.965cbd06313b1d823e96d5c4737221fbp13,
+    0x1.fff3fep40
+  },
+  { // Entry 205
+    -0x1.965cbd06313b1d823e96d5c4737221fbp13,
+    -0x1.fff3fep40
+  },
+  { // Entry 206
+    0x1.42897306f46b887b6eb89d9b502e1782p-2,
+    0x1.fffc7ep-6
+  },
+  { // Entry 207
+    -0x1.42897306f46b887b6eb89d9b502e1782p-2,
+    -0x1.fffc7ep-6
+  },
+  { // Entry 208
+    0x1.42897306f46b887b6eb89d9b502e1782p-42,
+    0x1.fffc7ep-126
+  },
+  { // Entry 209
+    -0x1.42897306f46b887b6eb89d9b502e1782p-42,
+    -0x1.fffc7ep-126
+  },
+  { // Entry 210
+    0x1.965fb7005dcfa5daf92e3ebc255183c2p13,
+    0x1.ffff3ep40
+  },
+  { // Entry 211
+    -0x1.965fb7005dcfa5daf92e3ebc255183c2p13,
+    -0x1.ffff3ep40
+  },
+  { // Entry 212
+    0x1.fffff3ffffb7fffd2fffde3ffe427fe7p-42,
+    0x1.ffffdcp-124
+  },
+  { // Entry 213
+    -0x1.fffff3ffffb7fffd2fffde3ffe427fe7p-42,
+    -0x1.ffffdcp-124
+  },
+  { // Entry 214
+    0x1.fffffdfffffdfffffcaaaaa3fffff155p-14,
+    0x1.fffffap-40
+  },
+  { // Entry 215
+    -0x1.fffffdfffffdfffffcaaaaa3fffff155p-14,
+    -0x1.fffffap-40
+  },
+  { // Entry 216
+    0x1.965fe944ec46dbaa04d0e2812cfbefb0p-42,
+    0x1.fffffcp-125
+  },
+  { // Entry 217
+    -0x1.965fe944ec46dbaa04d0e2812cfbefb0p-42,
+    -0x1.fffffcp-125
+  },
+  { // Entry 218
+    0x1.55984b0000856675bab5f168f2e53b1ap-1,
+    0x1.301afep-2
+  },
+  { // Entry 219
+    -0x1.55984b0000856675bab5f168f2e53b1ap-1,
+    -0x1.301afep-2
+  },
+  { // Entry 220
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 221
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 222
+    0x1.0ce9d549c583299981fd71ff4fb99542p0,
+    0x1.28ba2ep0
+  },
+  { // Entry 223
+    -0x1.0ce9d549c583299981fd71ff4fb99542p0,
+    -0x1.28ba2ep0
+  },
+  { // Entry 224
+    0x1.18b16ebaf3cb379fae9ca7124ed79cffp0,
+    0x1.51745cp0
+  },
+  { // Entry 225
+    -0x1.18b16ebaf3cb379fae9ca7124ed79cffp0,
+    -0x1.51745cp0
+  },
+  { // Entry 226
+    0x1.238f2c18d09933e19014663c566270fcp0,
+    0x1.7a2e8ap0
+  },
+  { // Entry 227
+    -0x1.238f2c18d09933e19014663c566270fcp0,
+    -0x1.7a2e8ap0
+  },
+  { // Entry 228
+    0x1.2dabb75e8acb9144f6b52cda420fefaap0,
+    0x1.a2e8b8p0
+  },
+  { // Entry 229
+    -0x1.2dabb75e8acb9144f6b52cda420fefaap0,
+    -0x1.a2e8b8p0
+  },
+  { // Entry 230
+    0x1.3725795f7ddf1e78729e44a17e53d61ep0,
+    0x1.cba2e6p0
+  },
+  { // Entry 231
+    -0x1.3725795f7ddf1e78729e44a17e53d61ep0,
+    -0x1.cba2e6p0
+  },
+  { // Entry 232
+    0x1.4013da13344ab46d4137da308b33cf09p0,
+    0x1.f45d14p0
+  },
+  { // Entry 233
+    -0x1.4013da13344ab46d4137da308b33cf09p0,
+    -0x1.f45d14p0
+  },
+  { // Entry 234
+    0x1.48894bf47f0d516d9880c85daea2ba0ep0,
+    0x1.0e8ba2p1
+  },
+  { // Entry 235
+    -0x1.48894bf47f0d516d9880c85daea2ba0ep0,
+    -0x1.0e8ba2p1
+  },
+  { // Entry 236
+    0x1.5094a1c4f343bd5747ddd428a2e21726p0,
+    0x1.22e8bap1
+  },
+  { // Entry 237
+    -0x1.5094a1c4f343bd5747ddd428a2e21726p0,
+    -0x1.22e8bap1
+  },
+  { // Entry 238
+    0x1.5841f8f99a25bf1c33fed0059f449f12p0,
+    0x1.3745d2p1
+  },
+  { // Entry 239
+    -0x1.5841f8f99a25bf1c33fed0059f449f12p0,
+    -0x1.3745d2p1
+  },
+  { // Entry 240
+    0x1.5f9b5c89b6723a4740b02d00e63ed8c5p0,
+    0x1.4ba2eap1
+  },
+  { // Entry 241
+    -0x1.5f9b5c89b6723a4740b02d00e63ed8c5p0,
+    -0x1.4ba2eap1
+  },
+  { // Entry 242
+    0x1.66a93a398814835bf64bd954530c2e24p0,
+    0x1.600002p1
+  },
+  { // Entry 243
+    -0x1.66a93a398814835bf64bd954530c2e24p0,
+    -0x1.600002p1
+  },
+  { // Entry 244
+    0x1.6d72b8c12f197ccd2a891dce2b3420ccp0,
+    0x1.745d1ap1
+  },
+  { // Entry 245
+    -0x1.6d72b8c12f197ccd2a891dce2b3420ccp0,
+    -0x1.745d1ap1
+  },
+  { // Entry 246
+    0x1.73fdf8501e9f51315cd9208aeb0df5fdp0,
+    0x1.88ba32p1
+  },
+  { // Entry 247
+    -0x1.73fdf8501e9f51315cd9208aeb0df5fdp0,
+    -0x1.88ba32p1
+  },
+  { // Entry 248
+    0x1.7a5043b0c25062c3a77f012041ed0dd3p0,
+    0x1.9d174ap1
+  },
+  { // Entry 249
+    -0x1.7a5043b0c25062c3a77f012041ed0dd3p0,
+    -0x1.9d174ap1
+  },
+  { // Entry 250
+    0x1.806e3648370d0107430e69be51ba6181p0,
+    0x1.b17462p1
+  },
+  { // Entry 251
+    -0x1.806e3648370d0107430e69be51ba6181p0,
+    -0x1.b17462p1
+  },
+  { // Entry 252
+    0x1.865bd9deffdb100981101a7bb371c6b8p0,
+    0x1.c5d17ap1
+  },
+  { // Entry 253
+    -0x1.865bd9deffdb100981101a7bb371c6b8p0,
+    -0x1.c5d17ap1
+  },
+  { // Entry 254
+    0x1.8c1cbe427502dcf0e5ddaa6cde822e1fp0,
+    0x1.da2e92p1
+  },
+  { // Entry 255
+    -0x1.8c1cbe427502dcf0e5ddaa6cde822e1fp0,
+    -0x1.da2e92p1
+  },
+  { // Entry 256
+    0x1.91b40c3970fa45b45e1ec4f180366a63p0,
+    0x1.ee8baap1
+  },
+  { // Entry 257
+    -0x1.91b40c3970fa45b45e1ec4f180366a63p0,
+    -0x1.ee8baap1
+  },
+  { // Entry 258
+    0x1.9724945921484b9f5eb5ded43b84d0a6p0,
+    0x1.017460p2
+  },
+  { // Entry 259
+    -0x1.9724945921484b9f5eb5ded43b84d0a6p0,
+    -0x1.017460p2
+  },
+  { // Entry 260
+    0x1.9c70ddb3118685770f9b9f2ed474a9d0p0,
+    0x1.0ba2ecp2
+  },
+  { // Entry 261
+    -0x1.9c70ddb3118685770f9b9f2ed474a9d0p0,
+    -0x1.0ba2ecp2
+  },
+  { // Entry 262
+    0x1.a19b2cfb98d6b98fca487b40078f60f8p0,
+    0x1.15d178p2
+  },
+  { // Entry 263
+    -0x1.a19b2cfb98d6b98fca487b40078f60f8p0,
+    -0x1.15d178p2
+  },
+  { // Entry 264
+    0x1.a6a58f4acd2830ccf461068bd78b43dfp0,
+    0x1.200004p2
+  },
+  { // Entry 265
+    -0x1.a6a58f4acd2830ccf461068bd78b43dfp0,
+    -0x1.200004p2
+  },
+  { // Entry 266
+    0x1.ab91e0c4d7beb2de033eb06c97ff2623p0,
+    0x1.2a2e90p2
+  },
+  { // Entry 267
+    -0x1.ab91e0c4d7beb2de033eb06c97ff2623p0,
+    -0x1.2a2e90p2
+  },
+  { // Entry 268
+    0x1.b061d2aa517a9271e11f29270be275c2p0,
+    0x1.345d1cp2
+  },
+  { // Entry 269
+    -0x1.b061d2aa517a9271e11f29270be275c2p0,
+    -0x1.345d1cp2
+  },
+  { // Entry 270
+    0x1.b516f07bda4aaf3cbb849ded81335246p0,
+    0x1.3e8ba8p2
+  },
+  { // Entry 271
+    -0x1.b516f07bda4aaf3cbb849ded81335246p0,
+    -0x1.3e8ba8p2
+  },
+  { // Entry 272
+    0x1.b9b2a45b63834be7e92068f4eff7d21fp0,
+    0x1.48ba34p2
+  },
+  { // Entry 273
+    -0x1.b9b2a45b63834be7e92068f4eff7d21fp0,
+    -0x1.48ba34p2
+  },
+  { // Entry 274
+    0x1.be363accf4e07fa728c35cb0445f056bp0,
+    0x1.52e8c0p2
+  },
+  { // Entry 275
+    -0x1.be363accf4e07fa728c35cb0445f056bp0,
+    -0x1.52e8c0p2
+  },
+  { // Entry 276
+    0x1.c2a2e5f1ffae47369528dd6baf39165dp0,
+    0x1.5d174cp2
+  },
+  { // Entry 277
+    -0x1.c2a2e5f1ffae47369528dd6baf39165dp0,
+    -0x1.5d174cp2
+  },
+  { // Entry 278
+    0x1.c6f9c0551bb2a258d6a396ca52615749p0,
+    0x1.6745d8p2
+  },
+  { // Entry 279
+    -0x1.c6f9c0551bb2a258d6a396ca52615749p0,
+    -0x1.6745d8p2
+  },
+  { // Entry 280
+    0x1.cb3bcf57f15ff14a02f69b42213ee5c6p0,
+    0x1.717464p2
+  },
+  { // Entry 281
+    -0x1.cb3bcf57f15ff14a02f69b42213ee5c6p0,
+    -0x1.717464p2
+  },
+  { // Entry 282
+    0x1.cf6a0551d85b12144ae1377a6a9b72b2p0,
+    0x1.7ba2f0p2
+  },
+  { // Entry 283
+    -0x1.cf6a0551d85b12144ae1377a6a9b72b2p0,
+    -0x1.7ba2f0p2
+  },
+  { // Entry 284
+    0x1.d385436b1dde883e39c480d710236941p0,
+    0x1.85d17cp2
+  },
+  { // Entry 285
+    -0x1.d385436b1dde883e39c480d710236941p0,
+    -0x1.85d17cp2
+  },
+  { // Entry 286
+    0x1.d78e5b3ed606f3cb13a91f1357f91657p0,
+    0x1.900008p2
+  },
+  { // Entry 287
+    -0x1.d78e5b3ed606f3cb13a91f1357f91657p0,
+    -0x1.900008p2
+  },
+  { // Entry 288
+    0x1.db86104b70ee77d6387ad03f5a44c6b3p0,
+    0x1.9a2e94p2
+  },
+  { // Entry 289
+    -0x1.db86104b70ee77d6387ad03f5a44c6b3p0,
+    -0x1.9a2e94p2
+  },
+  { // Entry 290
+    0x1.df6d1938f2d285672ba023837c7650a3p0,
+    0x1.a45d20p2
+  },
+  { // Entry 291
+    -0x1.df6d1938f2d285672ba023837c7650a3p0,
+    -0x1.a45d20p2
+  },
+  { // Entry 292
+    0x1.e34420fa948c2d5fc8ce30e75343315bp0,
+    0x1.ae8bacp2
+  },
+  { // Entry 293
+    -0x1.e34420fa948c2d5fc8ce30e75343315bp0,
+    -0x1.ae8bacp2
+  },
+  { // Entry 294
+    0x1.e70bc7d0aa6f9a8c1a90bdfd23944160p0,
+    0x1.b8ba38p2
+  },
+  { // Entry 295
+    -0x1.e70bc7d0aa6f9a8c1a90bdfd23944160p0,
+    -0x1.b8ba38p2
+  },
+  { // Entry 296
+    0x1.eac4a42ef11caabdbf485346bb85dca9p0,
+    0x1.c2e8c4p2
+  },
+  { // Entry 297
+    -0x1.eac4a42ef11caabdbf485346bb85dca9p0,
+    -0x1.c2e8c4p2
+  },
+  { // Entry 298
+    0x1.ee6f438ac201cc83c3551ec3ec88f765p0,
+    0x1.cd1750p2
+  },
+  { // Entry 299
+    -0x1.ee6f438ac201cc83c3551ec3ec88f765p0,
+    -0x1.cd1750p2
+  },
+  { // Entry 300
+    0x1.f20c2b142e1141f944a5bd436f899fd8p0,
+    0x1.d745dcp2
+  },
+  { // Entry 301
+    -0x1.f20c2b142e1141f944a5bd436f899fd8p0,
+    -0x1.d745dcp2
+  },
+  { // Entry 302
+    0x1.f59bd85c8f80600f9a9091ac4ae69b2bp0,
+    0x1.e17468p2
+  },
+  { // Entry 303
+    -0x1.f59bd85c8f80600f9a9091ac4ae69b2bp0,
+    -0x1.e17468p2
+  },
+  { // Entry 304
+    0x1.f91ec1ecc7699ea908b3dc91bb2117d7p0,
+    0x1.eba2f4p2
+  },
+  { // Entry 305
+    -0x1.f91ec1ecc7699ea908b3dc91bb2117d7p0,
+    -0x1.eba2f4p2
+  },
+  { // Entry 306
+    0x1.fc9557cd0eaee03376a0df6d1ba5d501p0,
+    0x1.f5d180p2
+  },
+  { // Entry 307
+    -0x1.fc9557cd0eaee03376a0df6d1ba5d501p0,
+    -0x1.f5d180p2
+  },
+  { // Entry 308
+    0x1.p1,
+    0x1.p3
+  },
+  { // Entry 309
+    -0x1.p1,
+    -0x1.p3
+  },
+  { // Entry 310
+    0x1.428a2f98d728ae223ddab715be250d0cp33,
+    0x1.p100
+  },
+  { // Entry 311
+    -0x1.428a2f98d728ae223ddab715be250d0cp33,
+    -0x1.p100
+  },
+  { // Entry 312
+    0x1.4cf38fca0ab1d0dd5e3f8b10df7de89dp33,
+    0x1.19999ap100
+  },
+  { // Entry 313
+    -0x1.4cf38fca0ab1d0dd5e3f8b10df7de89dp33,
+    -0x1.19999ap100
+  },
+  { // Entry 314
+    0x1.56bfeab31a1e9d53e75261e0f714927bp33,
+    0x1.333334p100
+  },
+  { // Entry 315
+    -0x1.56bfeab31a1e9d53e75261e0f714927bp33,
+    -0x1.333334p100
+  },
+  { // Entry 316
+    0x1.600483d224f2459cbe9a69151151c908p33,
+    0x1.4ccccep100
+  },
+  { // Entry 317
+    -0x1.600483d224f2459cbe9a69151151c908p33,
+    -0x1.4ccccep100
+  },
+  { // Entry 318
+    0x1.68d25b2553fccd180af10eec660ead4dp33,
+    0x1.666668p100
+  },
+  { // Entry 319
+    -0x1.68d25b2553fccd180af10eec660ead4dp33,
+    -0x1.666668p100
+  },
+  { // Entry 320
+    0x1.713745353c7f5d6125705b069ec452b8p33,
+    0x1.800002p100
+  },
+  { // Entry 321
+    -0x1.713745353c7f5d6125705b069ec452b8p33,
+    -0x1.800002p100
+  },
+  { // Entry 322
+    0x1.793ead9e429872e2b3fe619f7f25153cp33,
+    0x1.99999cp100
+  },
+  { // Entry 323
+    -0x1.793ead9e429872e2b3fe619f7f25153cp33,
+    -0x1.99999cp100
+  },
+  { // Entry 324
+    0x1.80f221dd370feca7c7efbe496a84ee22p33,
+    0x1.b33336p100
+  },
+  { // Entry 325
+    -0x1.80f221dd370feca7c7efbe496a84ee22p33,
+    -0x1.b33336p100
+  },
+  { // Entry 326
+    0x1.8859b6a5ff499f31338b11076fb457bap33,
+    0x1.ccccd0p100
+  },
+  { // Entry 327
+    -0x1.8859b6a5ff499f31338b11076fb457bap33,
+    -0x1.ccccd0p100
+  },
+  { // Entry 328
+    0x1.8f7c53604ebc3a1267eb6083464ac3a6p33,
+    0x1.e6666ap100
+  },
+  { // Entry 329
+    -0x1.8f7c53604ebc3a1267eb6083464ac3a6p33,
+    -0x1.e6666ap100
+  },
+  { // Entry 330
+    0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    0x1.p101
+  },
+  { // Entry 331
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    -0x1.p101
+  },
+  { // Entry 332
+    0x1.965fe9cc61957f119f89d08a8918481ep0,
+    0x1.fffffep1
+  },
+  { // Entry 333
+    -0x1.965fe9cc61957f119f89d08a8918481ep0,
+    -0x1.fffffep1
+  },
+  { // Entry 334
+    0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    0x1.p2
+  },
+  { // Entry 335
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    -0x1.p2
+  },
+  { // Entry 336
+    0x1.965feb62c17f4b733617ccc56909e9f9p0,
+    0x1.000002p2
+  },
+  { // Entry 337
+    -0x1.965feb62c17f4b733617ccc56909e9f9p0,
+    -0x1.000002p2
+  },
+  { // Entry 338
+    0x1.428a2f2d53c3575963d11c9df5d9ad83p0,
+    0x1.fffffep0
+  },
+  { // Entry 339
+    -0x1.428a2f2d53c3575963d11c9df5d9ad83p0,
+    -0x1.fffffep0
+  },
+  { // Entry 340
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.p1
+  },
+  { // Entry 341
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.p1
+  },
+  { // Entry 342
+    0x1.428a306fddf284ad27ff7ccb79aabf3cp0,
+    0x1.000002p1
+  },
+  { // Entry 343
+    -0x1.428a306fddf284ad27ff7ccb79aabf3cp0,
+    -0x1.000002p1
+  },
+  { // Entry 344
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 345
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 346
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 347
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 348
+    0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    0x1.000002p0
+  },
+  { // Entry 349
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    -0x1.000002p0
+  },
+  { // Entry 350
+    0x1.965fe9cc61957f119f89d08a8918481ep-1,
+    0x1.fffffep-2
+  },
+  { // Entry 351
+    -0x1.965fe9cc61957f119f89d08a8918481ep-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 352
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    0x1.p-1
+  },
+  { // Entry 353
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    -0x1.p-1
+  },
+  { // Entry 354
+    0x1.965feb62c17f4b733617ccc56909e9f9p-1,
+    0x1.000002p-1
+  },
+  { // Entry 355
+    -0x1.965feb62c17f4b733617ccc56909e9f9p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 356
+    0x1.428a2f2d53c3575963d11c9df5d9ad83p-1,
+    0x1.fffffep-3
+  },
+  { // Entry 357
+    -0x1.428a2f2d53c3575963d11c9df5d9ad83p-1,
+    -0x1.fffffep-3
+  },
+  { // Entry 358
+    0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    0x1.p-2
+  },
+  { // Entry 359
+    -0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    -0x1.p-2
+  },
+  { // Entry 360
+    0x1.428a306fddf284ad27ff7ccb79aabf3cp-1,
+    0x1.000002p-2
+  },
+  { // Entry 361
+    -0x1.428a306fddf284ad27ff7ccb79aabf3cp-1,
+    -0x1.000002p-2
+  },
+  { // Entry 362
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-2,
+    0x1.fffffep-4
+  },
+  { // Entry 363
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-2,
+    -0x1.fffffep-4
+  },
+  { // Entry 364
+    0x1.p-1,
+    0x1.p-3
+  },
+  { // Entry 365
+    -0x1.p-1,
+    -0x1.p-3
+  },
+  { // Entry 366
+    0x1.000000aaaaaa38e38eb74f028086d9fcp-1,
+    0x1.000002p-3
+  },
+  { // Entry 367
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp-1,
+    -0x1.000002p-3
+  },
+  { // Entry 368
+    0x1.965fe9cc61957f119f89d08a8918481ep-2,
+    0x1.fffffep-5
+  },
+  { // Entry 369
+    -0x1.965fe9cc61957f119f89d08a8918481ep-2,
+    -0x1.fffffep-5
+  },
+  { // Entry 370
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    0x1.p-4
+  },
+  { // Entry 371
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    -0x1.p-4
+  },
+  { // Entry 372
+    0x1.965feb62c17f4b733617ccc56909e9f9p-2,
+    0x1.000002p-4
+  },
+  { // Entry 373
+    -0x1.965feb62c17f4b733617ccc56909e9f9p-2,
+    -0x1.000002p-4
+  },
+  { // Entry 374
+    0x1.428a2f2d53c3575963d11c9df5d9ad83p-2,
+    0x1.fffffep-6
+  },
+  { // Entry 375
+    -0x1.428a2f2d53c3575963d11c9df5d9ad83p-2,
+    -0x1.fffffep-6
+  },
+  { // Entry 376
+    0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    0x1.p-5
+  },
+  { // Entry 377
+    -0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    -0x1.p-5
+  },
+  { // Entry 378
+    0x1.428a306fddf284ad27ff7ccb79aabf3cp-2,
+    0x1.000002p-5
+  },
+  { // Entry 379
+    -0x1.428a306fddf284ad27ff7ccb79aabf3cp-2,
+    -0x1.000002p-5
+  },
+  { // Entry 380
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-3,
+    0x1.fffffep-7
+  },
+  { // Entry 381
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-3,
+    -0x1.fffffep-7
+  },
+  { // Entry 382
+    0x1.p-2,
+    0x1.p-6
+  },
+  { // Entry 383
+    -0x1.p-2,
+    -0x1.p-6
+  },
+  { // Entry 384
+    0x1.000000aaaaaa38e38eb74f028086d9fcp-2,
+    0x1.000002p-6
+  },
+  { // Entry 385
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp-2,
+    -0x1.000002p-6
+  },
+  { // Entry 386
+    0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    0x1.p-149
+  },
+  { // Entry 387
+    -0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    -0x1.p-149
+  },
+  { // Entry 388
+    -0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    -0x1.p-149
+  },
+  { // Entry 389
+    0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    0x1.p-149
+  },
+  { // Entry 390
+    0x1.965fe9cc61957f119f89d08a8918481ep42,
+    0x1.fffffep127
+  },
+  { // Entry 391
+    -0x1.965fe9cc61957f119f89d08a8918481ep42,
+    -0x1.fffffep127
+  },
+  { // Entry 392
+    -0x1.965fe9cc61957f119f89d08a8918481ep42,
+    -0x1.fffffep127
+  },
+  { // Entry 393
+    0x1.965fe9cc61957f119f89d08a8918481ep42,
+    0x1.fffffep127
+  },
+  { // Entry 394
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 395
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 396
+    0x1.965fe9cc61957f119f89d08a8918481ep42,
+    0x1.fffffep127
+  },
+  { // Entry 397
+    -0x1.965fe9cc61957f119f89d08a8918481ep42,
+    -0x1.fffffep127
+  },
+  { // Entry 398
+    0x1.965fe944ec46dbaa04d0e2812cfbefb0p42,
+    0x1.fffffcp127
+  },
+  { // Entry 399
+    -0x1.965fe944ec46dbaa04d0e2812cfbefb0p42,
+    -0x1.fffffcp127
+  },
+  { // Entry 400
+    0x1.76ef7ead6985271fe7617b1da5065543p0,
+    0x1.921fb6p1
+  },
+  { // Entry 401
+    -0x1.76ef7ead6985271fe7617b1da5065543p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 402
+    0x1.2996267c5deedc47b88ccae60aa2742ap0,
+    0x1.921fb6p0
+  },
+  { // Entry 403
+    -0x1.2996267c5deedc47b88ccae60aa2742ap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 404
+    0x1.d863a02639c8222baeb0d484991e52cdp-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 405
+    -0x1.d863a02639c8222baeb0d484991e52cdp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 406
+    0x1.p1,
+    0x1.p3
+  },
+  { // Entry 407
+    -0x1.p1,
+    -0x1.p3
+  },
+  { // Entry 408
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.p1
+  },
+  { // Entry 409
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.p1
+  },
+  { // Entry 410
+    0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    0x1.000002p0
+  },
+  { // Entry 411
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    -0x1.000002p0
+  },
+  { // Entry 412
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 413
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 414
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 415
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 416
+    0x1.000000aaaaaa38e38eb74f028086d9fcp-42,
+    0x1.000002p-126
+  },
+  { // Entry 417
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp-42,
+    -0x1.000002p-126
+  },
+  { // Entry 418
+    0x1.p-42,
+    0x1.p-126
+  },
+  { // Entry 419
+    -0x1.p-42,
+    -0x1.p-126
+  },
+  { // Entry 420
+    0x1.fffffeaaaaa9c71c70ca45869598bfe9p-43,
+    0x1.fffffcp-127
+  },
+  { // Entry 421
+    -0x1.fffffeaaaaa9c71c70ca45869598bfe9p-43,
+    -0x1.fffffcp-127
+  },
+  { // Entry 422
+    0x1.fffffd555551c71c69e0650db20a4b26p-43,
+    0x1.fffff8p-127
+  },
+  { // Entry 423
+    -0x1.fffffd555551c71c69e0650db20a4b26p-43,
+    -0x1.fffff8p-127
+  },
+  { // Entry 424
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-50,
+    0x1.p-148
+  },
+  { // Entry 425
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-50,
+    -0x1.p-148
+  },
+  { // Entry 426
+    0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    0x1.p-149
+  },
+  { // Entry 427
+    -0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    -0x1.p-149
+  },
+  { // Entry 428
+    0.0,
+    0.0f
+  },
+  { // Entry 429
+    -0.0,
+    -0.0f
+  },
+  { // Entry 430
+    0x1.80p1,
+    0x1.b0p4
+  },
+  { // Entry 431
+    -0x1.80p1,
+    -0x1.b0p4
+  },
+  { // Entry 432
+    0x1.40p2,
+    0x1.f4p6
+  },
+  { // Entry 433
+    -0x1.40p2,
+    -0x1.f4p6
+  }
+};
diff --git a/tests/math_data/ceil_intel_data.h b/tests/math_data/ceil_intel_data.h
new file mode 100644
index 0000000..33096ab
--- /dev/null
+++ b/tests/math_data/ceil_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_ceil_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0x1.p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p1,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.80p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.80p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.94p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.94p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.94p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f480p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f480p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f480p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.00000000000040p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.00000000000020p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.ffffffffffff80p49,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.ffffffffffffc0p50,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.ffffffffffffe0p51,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.00000004p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffffcp30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffffcp30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffffcp30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffffcp30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffffcp30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.p31,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.p31,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.p31,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.p31,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.00000002p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.00000002p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.00000002p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.00000002p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.00000002p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.fffffff8p29,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff4p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffff8p30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.fffffffcp30,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.40p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.20p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.10p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.08p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.04p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.02p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.01p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.0080p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.0040p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.0020p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.0010p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.40p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.40p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.20p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.20p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.10p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.10p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.08p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.08p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.04p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.04p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.02p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.02p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.01p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.01p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.0080p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.0080p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.0040p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.0040p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0080p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.0020p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.0020p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.0010p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.0010p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.p2,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p1,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0x1.p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0x1.p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0x1.p0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p1,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/ceilf_intel_data.h b/tests/math_data/ceilf_intel_data.h
new file mode 100644
index 0000000..4b52406
--- /dev/null
+++ b/tests/math_data/ceilf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_ceilf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0x1.p0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p1,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p1,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.80p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.80p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.94p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.94p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.94p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f480p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f480p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f480p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.000008p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.000004p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.fffff0p20,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.fffff8p21,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.fffffcp22,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.40p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.20p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.10p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.08p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.04p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.02p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.01p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.0080p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.0040p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.0020p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.0010p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.40p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.40p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.20p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.20p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.10p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.10p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.08p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.08p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.04p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.04p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.02p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.02p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.01p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.01p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.0080p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.0080p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.0040p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.0040p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0080p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.0020p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.0020p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.0010p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.0010p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.p2,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p1,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0x1.p0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0x1.p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0x1.p0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p1,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/copysign_intel_data.h b/tests/math_data/copysign_intel_data.h
new file mode 100644
index 0000000..1478f1e
--- /dev/null
+++ b/tests/math_data/copysign_intel_data.h
@@ -0,0 +1,1458 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_copysign_intel_data[] = {
+  { // Entry 0
+    -0x1.p-10,
+    -0x1.0p-10,
+    -0x1.0p-10
+  },
+  { // Entry 1
+    0x1.p-10,
+    -0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 2
+    -0x1.p-10,
+    0x1.0p-10,
+    -0x1.0p-10
+  },
+  { // Entry 3
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 4
+    -0x1.40p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 6
+    -0x1.40p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 7
+    0x1.40p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 8
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 9
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 10
+    0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 11
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 12
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 13
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 14
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 15
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 16
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 17
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 18
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 19
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 20
+    -0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    -0x1.p-1073,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 22
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 23
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 24
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 25
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 26
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 27
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 28
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 29
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 30
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 31
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 32
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 33
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 34
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 35
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 36
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 37
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 38
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 39
+    0x1.00000000000020p-1023,
+    -0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 40
+    0x1.00000000000020p-1023,
+    -0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 41
+    0x1.00000000000020p-1023,
+    -0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 42
+    0x1.p-1023,
+    -0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 43
+    0x1.p-1023,
+    -0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 44
+    0x1.p-1023,
+    -0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 45
+    0x1.ffffffffffffc0p-1024,
+    -0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 46
+    0x1.ffffffffffffc0p-1024,
+    -0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 47
+    0x1.ffffffffffffc0p-1024,
+    -0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 48
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 49
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 50
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 51
+    0x1.p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 53
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 54
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 55
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 56
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 57
+    0x1.00000000000010p1023,
+    -0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 58
+    0x1.00000000000010p1023,
+    -0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 59
+    0x1.00000000000010p1023,
+    -0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 60
+    0x1.p1023,
+    -0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 61
+    0x1.p1023,
+    -0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 62
+    0x1.p1023,
+    -0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 63
+    0x1.fffffffffffff0p1022,
+    -0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p1022,
+    -0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 65
+    0x1.fffffffffffff0p1022,
+    -0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 66
+    -0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    -0x1.0000000000002p-1023
+  },
+  { // Entry 67
+    -0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    -0x1.0p-1023
+  },
+  { // Entry 68
+    -0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    -0x1.ffffffffffffcp-1024
+  },
+  { // Entry 69
+    -0x1.p-1023,
+    0x1.0p-1023,
+    -0x1.0000000000002p-1023
+  },
+  { // Entry 70
+    -0x1.p-1023,
+    0x1.0p-1023,
+    -0x1.0p-1023
+  },
+  { // Entry 71
+    -0x1.p-1023,
+    0x1.0p-1023,
+    -0x1.ffffffffffffcp-1024
+  },
+  { // Entry 72
+    -0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    -0x1.0000000000002p-1023
+  },
+  { // Entry 73
+    -0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    -0x1.0p-1023
+  },
+  { // Entry 74
+    -0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    -0x1.ffffffffffffcp-1024
+  },
+  { // Entry 75
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 82
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 83
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1023
+  },
+  { // Entry 85
+    -0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1023
+  },
+  { // Entry 86
+    -0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 87
+    -0x1.p1023,
+    0x1.0p1023,
+    -0x1.0000000000001p1023
+  },
+  { // Entry 88
+    -0x1.p1023,
+    0x1.0p1023,
+    -0x1.0p1023
+  },
+  { // Entry 89
+    -0x1.p1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 90
+    -0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    -0x1.0000000000001p1023
+  },
+  { // Entry 91
+    -0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    -0x1.0p1023
+  },
+  { // Entry 92
+    -0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 93
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 94
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 95
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 96
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 97
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 98
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 99
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 100
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 101
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 102
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 103
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 104
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 105
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 106
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 107
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 108
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 109
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 110
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 112
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 113
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 115
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 116
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 117
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 119
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 120
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 122
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 123
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 124
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 125
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 126
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 127
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 128
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 129
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 130
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 131
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 132
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 133
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 135
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 136
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 137
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 138
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 139
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 140
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 141
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 142
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 143
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 144
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 145
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 146
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 147
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 148
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 149
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 150
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 151
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 152
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 153
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 154
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 155
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 156
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 157
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 158
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 159
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 160
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 161
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 162
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 163
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 164
+    -0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 165
+    -0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 166
+    -0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 167
+    -0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 168
+    -0.0,
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 169
+    -0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 170
+    -0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 171
+    0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 172
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 173
+    0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 174
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 175
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 176
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 177
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 178
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 179
+    -0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 180
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 181
+    -0.0,
+    -0.0,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 183
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 184
+    0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 185
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 186
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 187
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 188
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 189
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 190
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 191
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 192
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 193
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 194
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 195
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 196
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 198
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 199
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 200
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 201
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 202
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 203
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 205
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 206
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 207
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 208
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 209
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 210
+    0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 211
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 212
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 213
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 214
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 215
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 216
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 217
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 218
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 219
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 220
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 221
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 223
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    HUGE_VAL
+  },
+  { // Entry 224
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1022
+  },
+  { // Entry 226
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 227
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0.0
+  },
+  { // Entry 229
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 230
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 231
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 232
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 233
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 234
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 235
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -HUGE_VAL
+  },
+  { // Entry 236
+    0x1.p0,
+    -0x1.0p0,
+    HUGE_VAL
+  },
+  { // Entry 237
+    0x1.p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 238
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0p-1022
+  },
+  { // Entry 239
+    0x1.p0,
+    -0x1.0p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 240
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 241
+    0x1.p0,
+    -0x1.0p0,
+    0.0
+  },
+  { // Entry 242
+    -0x1.p0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 243
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 244
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 245
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p-1022
+  },
+  { // Entry 246
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 247
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 248
+    -0x1.p0,
+    -0x1.0p0,
+    -HUGE_VAL
+  },
+  { // Entry 249
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    HUGE_VAL
+  },
+  { // Entry 250
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 251
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1022
+  },
+  { // Entry 252
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 253
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 254
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0.0
+  },
+  { // Entry 255
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 256
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 257
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 258
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1022
+  },
+  { // Entry 259
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 260
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 261
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -HUGE_VAL
+  },
+  { // Entry 262
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 263
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 264
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 265
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 266
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 267
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 268
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 269
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 270
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 271
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 272
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 273
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 274
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 275
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 276
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 277
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 278
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 279
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 280
+    HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 281
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 282
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 283
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 284
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 286
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  }
+};
diff --git a/tests/math_data/copysignf_intel_data.h b/tests/math_data/copysignf_intel_data.h
new file mode 100644
index 0000000..58a579d
--- /dev/null
+++ b/tests/math_data/copysignf_intel_data.h
@@ -0,0 +1,1458 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_copysignf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-10,
+    -0x1.p-10,
+    -0x1.p-10
+  },
+  { // Entry 1
+    0x1.p-10,
+    -0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 2
+    -0x1.p-10,
+    0x1.p-10,
+    -0x1.p-10
+  },
+  { // Entry 3
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 4
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 6
+    -0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 7
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 8
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 9
+    0x1.p-148,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 10
+    0x1.p-148,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 11
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 12
+    0x1.p-149,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 13
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 14
+    -0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 15
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 16
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 17
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 18
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 19
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 20
+    -0x1.p-148,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 21
+    0x1.p-148,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 22
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 23
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 24
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 25
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 26
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 27
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 28
+    -0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 29
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 30
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 31
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 32
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 33
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 34
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 35
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 36
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 38
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 39
+    0x1.000004p-127,
+    -0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 40
+    0x1.000004p-127,
+    -0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 41
+    0x1.000004p-127,
+    -0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 42
+    0x1.p-127,
+    -0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 43
+    0x1.p-127,
+    -0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 44
+    0x1.p-127,
+    -0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 45
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 46
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 47
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 48
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 49
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 50
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 51
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 52
+    0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 53
+    0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 54
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 55
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 56
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 57
+    0x1.000002p127,
+    -0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 58
+    0x1.000002p127,
+    -0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 59
+    0x1.000002p127,
+    -0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 60
+    0x1.p127,
+    -0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 61
+    0x1.p127,
+    -0x1.p127,
+    0x1.p127
+  },
+  { // Entry 62
+    0x1.p127,
+    -0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 63
+    0x1.fffffep126,
+    -0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 64
+    0x1.fffffep126,
+    -0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 65
+    0x1.fffffep126,
+    -0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 66
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    -0x1.000004p-127
+  },
+  { // Entry 67
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    -0x1.p-127
+  },
+  { // Entry 68
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128
+  },
+  { // Entry 69
+    -0x1.p-127,
+    0x1.p-127,
+    -0x1.000004p-127
+  },
+  { // Entry 70
+    -0x1.p-127,
+    0x1.p-127,
+    -0x1.p-127
+  },
+  { // Entry 71
+    -0x1.p-127,
+    0x1.p-127,
+    -0x1.fffff8p-128
+  },
+  { // Entry 72
+    -0x1.000004p-127,
+    0x1.000004p-127,
+    -0x1.000004p-127
+  },
+  { // Entry 73
+    -0x1.000004p-127,
+    0x1.000004p-127,
+    -0x1.p-127
+  },
+  { // Entry 74
+    -0x1.000004p-127,
+    0x1.000004p-127,
+    -0x1.fffff8p-128
+  },
+  { // Entry 75
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 76
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 77
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 78
+    -0x1.p0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 79
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 80
+    -0x1.p0,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 81
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 82
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 83
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 84
+    -0x1.fffffep126,
+    0x1.fffffep126,
+    -0x1.000002p127
+  },
+  { // Entry 85
+    -0x1.fffffep126,
+    0x1.fffffep126,
+    -0x1.p127
+  },
+  { // Entry 86
+    -0x1.fffffep126,
+    0x1.fffffep126,
+    -0x1.fffffep126
+  },
+  { // Entry 87
+    -0x1.p127,
+    0x1.p127,
+    -0x1.000002p127
+  },
+  { // Entry 88
+    -0x1.p127,
+    0x1.p127,
+    -0x1.p127
+  },
+  { // Entry 89
+    -0x1.p127,
+    0x1.p127,
+    -0x1.fffffep126
+  },
+  { // Entry 90
+    -0x1.000002p127,
+    0x1.000002p127,
+    -0x1.000002p127
+  },
+  { // Entry 91
+    -0x1.000002p127,
+    0x1.000002p127,
+    -0x1.p127
+  },
+  { // Entry 92
+    -0x1.000002p127,
+    0x1.000002p127,
+    -0x1.fffffep126
+  },
+  { // Entry 93
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 94
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 95
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 96
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 97
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 98
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 99
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 100
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 101
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 102
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 103
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 104
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 105
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 106
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 107
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 108
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 109
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 110
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 111
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 112
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 113
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 114
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 115
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 116
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 117
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 119
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 120
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 121
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 122
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 123
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 124
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 125
+    -0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 126
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 127
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 128
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 129
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 130
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 131
+    -0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 132
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 133
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 134
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 135
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 136
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 137
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 138
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 139
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 140
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 141
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 142
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 143
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 144
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 145
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 146
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 147
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 148
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 149
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 150
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 151
+    -0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 152
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 153
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 154
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 155
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 156
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 157
+    -0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 158
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 159
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 160
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 161
+    0.0,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 162
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 163
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 164
+    -0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 165
+    -0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 166
+    -0.0,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 167
+    -0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 168
+    -0.0,
+    0.0f,
+    -0x1.p0
+  },
+  { // Entry 169
+    -0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 170
+    -0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 171
+    0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 172
+    0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 173
+    0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 174
+    0.0,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 175
+    0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 176
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 177
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 178
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 179
+    -0.0,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 180
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 181
+    -0.0,
+    -0.0f,
+    -0x1.p0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 183
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 184
+    0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 185
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 186
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 187
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 188
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 189
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 190
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 191
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 192
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 194
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 195
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 196
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 197
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 198
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 199
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 200
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 201
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 202
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 203
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 204
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 205
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 206
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 207
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 208
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 209
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 210
+    0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 211
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 212
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 213
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 214
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 215
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 216
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 217
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 218
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 219
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 220
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 221
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 222
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 223
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    HUGE_VALF
+  },
+  { // Entry 224
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep127
+  },
+  { // Entry 225
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-126
+  },
+  { // Entry 226
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffcp-127
+  },
+  { // Entry 227
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 228
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0.0f
+  },
+  { // Entry 229
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0.0f
+  },
+  { // Entry 230
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 231
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 232
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p-126
+  },
+  { // Entry 233
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 234
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.fffffep127
+  },
+  { // Entry 235
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -HUGE_VALF
+  },
+  { // Entry 236
+    0x1.p0,
+    -0x1.p0,
+    HUGE_VALF
+  },
+  { // Entry 237
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep127
+  },
+  { // Entry 238
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 239
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 240
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 241
+    0x1.p0,
+    -0x1.p0,
+    0.0f
+  },
+  { // Entry 242
+    -0x1.p0,
+    -0x1.p0,
+    -0.0f
+  },
+  { // Entry 243
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 244
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 245
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 246
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 247
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.fffffep127
+  },
+  { // Entry 248
+    -0x1.p0,
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 249
+    0x1.000002p0,
+    -0x1.000002p0,
+    HUGE_VALF
+  },
+  { // Entry 250
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep127
+  },
+  { // Entry 251
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-126
+  },
+  { // Entry 252
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 253
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 254
+    0x1.000002p0,
+    -0x1.000002p0,
+    0.0f
+  },
+  { // Entry 255
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0.0f
+  },
+  { // Entry 256
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 257
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 258
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p-126
+  },
+  { // Entry 259
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 260
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.fffffep127
+  },
+  { // Entry 261
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -HUGE_VALF
+  },
+  { // Entry 262
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 263
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 264
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 265
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 266
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 267
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 268
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 269
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 270
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 271
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 272
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 273
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 274
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 275
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 276
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 277
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 278
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 279
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 280
+    HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 281
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 282
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 283
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 284
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 286
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 287
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  }
+};
diff --git a/tests/math_data/cos_intel_data.h b/tests/math_data/cos_intel_data.h
new file mode 100644
index 0000000..22ec0bc
--- /dev/null
+++ b/tests/math_data/cos_intel_data.h
@@ -0,0 +1,5622 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_cos_intel_data[] = {
+  { // Entry 0
+    0x1.c1a27ae836f128000000000000504e9bp-1,
+    0x1.feb1f7920e248p-2
+  },
+  { // Entry 1
+    0x1.c1a27ae836f128000000000000504e9bp-1,
+    -0x1.feb1f7920e248p-2
+  },
+  { // Entry 2
+    0x1.78daf01036d0cfffffffffffff9890d6p-1,
+    0x1.7cb7648526f99p-1
+  },
+  { // Entry 3
+    0x1.78daf01036d0cfffffffffffff9890d6p-1,
+    -0x1.7cb7648526f99p-1
+  },
+  { // Entry 4
+    0x1.ff8eb6a91ecb000000000000001f8f56p-1,
+    0x1.549ec0c0c5afap-5
+  },
+  { // Entry 5
+    0x1.ff8eb6a91ecb000000000000001f8f56p-1,
+    -0x1.549ec0c0c5afap-5
+  },
+  { // Entry 6
+    0x1.fed0476fc75c9800000000000020b13ep-1,
+    0x1.16e534ee36580p-4
+  },
+  { // Entry 7
+    0x1.fed0476fc75c9800000000000020b13ep-1,
+    -0x1.16e534ee36580p-4
+  },
+  { // Entry 8
+    0x1.f10fc61e2c78efffffffffffff87666ap-1,
+    0x1.efeef61d39ac2p-3
+  },
+  { // Entry 9
+    0x1.f10fc61e2c78efffffffffffff87666ap-1,
+    -0x1.efeef61d39ac2p-3
+  },
+  { // Entry 10
+    0x1.434a3645be2087ffffffffffff72d0aep-1,
+    0x1.c65a170474549p-1
+  },
+  { // Entry 11
+    0x1.434a3645be2087ffffffffffff72d0aep-1,
+    -0x1.c65a170474549p-1
+  },
+  { // Entry 12
+    0x1.337fc5b072c52800000000000017fe77p-3,
+    0x1.6b8a6273d7c21p0
+  },
+  { // Entry 13
+    0x1.337fc5b072c52800000000000017fe77p-3,
+    -0x1.6b8a6273d7c21p0
+  },
+  { // Entry 14
+    0x1.efa7cddb128fb8004356877b74ee8abdp-1,
+    -0x1.036f4ba7e90aap-2
+  },
+  { // Entry 15
+    0x1.efa7cddb128fb8004356877b74ee8abdp-1,
+    0x1.036f4ba7e90aap-2
+  },
+  { // Entry 16
+    0x1.fffffffffffffffb5117fee2eda7f13ep-1,
+    -0x1.1500766c9df20p-31
+  },
+  { // Entry 17
+    0x1.fffffffffffffffb5117fee2eda7f13ep-1,
+    0x1.1500766c9df20p-31
+  },
+  { // Entry 18
+    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
+    -0x1.1e2a1563e068ep-2
+  },
+  { // Entry 19
+    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
+    0x1.1e2a1563e068ep-2
+  },
+  { // Entry 20
+    0x1.dc044ac92b7fb9007913c87db76fa49fp-8,
+    -0x1.2115aa73f8d05p5
+  },
+  { // Entry 21
+    0x1.dc044ac92b7fb9007913c87db76fa49fp-8,
+    0x1.2115aa73f8d05p5
+  },
+  { // Entry 22
+    0x1.d1fa67c50dd527f6e9abbb0bd0664ab9p-4,
+    -0x1.34e3bcdf8f69ap2
+  },
+  { // Entry 23
+    0x1.d1fa67c50dd527f6e9abbb0bd0664ab9p-4,
+    0x1.34e3bcdf8f69ap2
+  },
+  { // Entry 24
+    0x1.e2f8d19fb8db88056dcddd76f5a05c20p-2,
+    -0x1.380000000000bp7
+  },
+  { // Entry 25
+    0x1.e2f8d19fb8db88056dcddd76f5a05c20p-2,
+    0x1.380000000000bp7
+  },
+  { // Entry 26
+    0x1.8da9c90c3eda17f5bd708cfc414ff1b8p-1,
+    -0x1.440000004p6
+  },
+  { // Entry 27
+    0x1.8da9c90c3eda17f5bd708cfc414ff1b8p-1,
+    0x1.440000004p6
+  },
+  { // Entry 28
+    0x1.b59b320603f837ff015e2a961e75946ep-1,
+    -0x1.550c8ee67a4c4p29
+  },
+  { // Entry 29
+    0x1.b59b320603f837ff015e2a961e75946ep-1,
+    0x1.550c8ee67a4c4p29
+  },
+  { // Entry 30
+    0x1.ffffff7af6c887e5f3186371a17dd81fp-1,
+    -0x1.711789fdb2e8ap-13
+  },
+  { // Entry 31
+    0x1.ffffff7af6c887e5f3186371a17dd81fp-1,
+    0x1.711789fdb2e8ap-13
+  },
+  { // Entry 32
+    0x1.c1b68ebb0b4fe82e8e99f9d425ee901ap-2,
+    -0x1.77e000002p8
+  },
+  { // Entry 33
+    0x1.c1b68ebb0b4fe82e8e99f9d425ee901ap-2,
+    0x1.77e000002p8
+  },
+  { // Entry 34
+    0x1.1161e1dad76dbfd55f08c4a4a90bd547p-4,
+    -0x1.8106561931b43p0
+  },
+  { // Entry 35
+    0x1.1161e1dad76dbfd55f08c4a4a90bd547p-4,
+    0x1.8106561931b43p0
+  },
+  { // Entry 36
+    0x1.f828c3226b3d77c374e789d7216a85b3p-5,
+    -0x1.825be2461cad4p0
+  },
+  { // Entry 37
+    0x1.f828c3226b3d77c374e789d7216a85b3p-5,
+    0x1.825be2461cad4p0
+  },
+  { // Entry 38
+    0x1.f2990d742e9fa80dd19483a2c0de428bp-5,
+    -0x1.8288755803b08p0
+  },
+  { // Entry 39
+    0x1.f2990d742e9fa80dd19483a2c0de428bp-5,
+    0x1.8288755803b08p0
+  },
+  { // Entry 40
+    -0x1.ff150dda7524ce678ab97ee460e8e961p-1,
+    -0x1.8a75701f4ccd3p1
+  },
+  { // Entry 41
+    -0x1.ff150dda7524ce678ab97ee460e8e961p-1,
+    0x1.8a75701f4ccd3p1
+  },
+  { // Entry 42
+    0x1.015c47c32b574802eb81deb0db46c207p-1,
+    -0x1.b389316f37f37p3
+  },
+  { // Entry 43
+    0x1.015c47c32b574802eb81deb0db46c207p-1,
+    0x1.b389316f37f37p3
+  },
+  { // Entry 44
+    0x1.d681a366a05347fa56b75d845b33c7bbp-1,
+    -0x1.c602c465d7d27p6
+  },
+  { // Entry 45
+    0x1.d681a366a05347fa56b75d845b33c7bbp-1,
+    0x1.c602c465d7d27p6
+  },
+  { // Entry 46
+    -0x1.84e896c7543d54c16d7be346e0f40017p-1,
+    -0x1.cfb81fe69664cp4
+  },
+  { // Entry 47
+    -0x1.84e896c7543d54c16d7be346e0f40017p-1,
+    0x1.cfb81fe69664cp4
+  },
+  { // Entry 48
+    0x1.fc5dcfddd54c07f1574ce114c1e5effep-1,
+    -0x1.d08f2d86b12c6p13
+  },
+  { // Entry 49
+    0x1.fc5dcfddd54c07f1574ce114c1e5effep-1,
+    0x1.d08f2d86b12c6p13
+  },
+  { // Entry 50
+    0x1.fe83235fbe015d6c361556ee5a0e2294p-3,
+    -0x1.de13f0943c494p99
+  },
+  { // Entry 51
+    0x1.fe83235fbe015d6c361556ee5a0e2294p-3,
+    0x1.de13f0943c494p99
+  },
+  { // Entry 52
+    -0x1.720321239ec4f38d55b40d8445099c2ap-1,
+    -0x1.de3c1f1285e8bp3
+  },
+  { // Entry 53
+    -0x1.720321239ec4f38d55b40d8445099c2ap-1,
+    0x1.de3c1f1285e8bp3
+  },
+  { // Entry 54
+    0x1.f7143c8bba406d6f834a3bca5e9c6a58p-4,
+    -0x1.fffffffffff7fp1023
+  },
+  { // Entry 55
+    0x1.f7143c8bba406d6f834a3bca5e9c6a58p-4,
+    0x1.fffffffffff7fp1023
+  },
+  { // Entry 56
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 57
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 58
+    0x1.055e457ac122766a7a343ea4ac739b2ep-5,
+    0x1.0000000000001p51
+  },
+  { // Entry 59
+    0x1.055e457ac122766a7a343ea4ac739b2ep-5,
+    -0x1.0000000000001p51
+  },
+  { // Entry 60
+    0x1.c1528065b7d4e2d84d640301800ddd81p-1,
+    0x1.0000000000003p-1
+  },
+  { // Entry 61
+    0x1.c1528065b7d4e2d84d640301800ddd81p-1,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 62
+    0x1.fffffffffffffffeffffffffffffa0p-1,
+    0x1.0000000000003p-32
+  },
+  { // Entry 63
+    0x1.fffffffffffffffeffffffffffffa0p-1,
+    -0x1.0000000000003p-32
+  },
+  { // Entry 64
+    0x1.fffea444bc05e0b2ec693f7226d056b8p-1,
+    0x1.0000000000020p150
+  },
+  { // Entry 65
+    0x1.fffea444bc05e0b2ec693f7226d056b8p-1,
+    -0x1.0000000000020p150
+  },
+  { // Entry 66
+    -0x1.ebddee876f4338cc885394d1039acfe1p-1,
+    0x1.0000000000038p380
+  },
+  { // Entry 67
+    -0x1.ebddee876f4338cc885394d1039acfe1p-1,
+    -0x1.0000000000038p380
+  },
+  { // Entry 68
+    -0x1.f2ffc51dc69681ded33362645b4e8513p-1,
+    0x1.0000000000118p380
+  },
+  { // Entry 69
+    -0x1.f2ffc51dc69681ded33362645b4e8513p-1,
+    -0x1.0000000000118p380
+  },
+  { // Entry 70
+    -0x1.f8fbb4d358b207f4f81c36cf21c4af97p-1,
+    0x1.00000000003ffp641
+  },
+  { // Entry 71
+    -0x1.f8fbb4d358b207f4f81c36cf21c4af97p-1,
+    -0x1.00000000003ffp641
+  },
+  { // Entry 72
+    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
+    0x1.00000000010p1
+  },
+  { // Entry 73
+    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
+    -0x1.00000000010p1
+  },
+  { // Entry 74
+    0x1.fd1242c25994d0cc5daf405fa510e539p-1,
+    0x1.000000008p452
+  },
+  { // Entry 75
+    0x1.fd1242c25994d0cc5daf405fa510e539p-1,
+    -0x1.000000008p452
+  },
+  { // Entry 76
+    0x1.fffc0001554da8000048828de97acccbp-1,
+    0x1.00000000effafp-7
+  },
+  { // Entry 77
+    0x1.fffc0001554da8000048828de97acccbp-1,
+    -0x1.00000000effafp-7
+  },
+  { // Entry 78
+    0x1.14a27f292552280000dd30fbf6b38481p-1,
+    0x1.00000114fefe2p0
+  },
+  { // Entry 79
+    0x1.14a27f292552280000dd30fbf6b38481p-1,
+    -0x1.00000114fefe2p0
+  },
+  { // Entry 80
+    0x1.bf81e0269c59c7ff753ca32147666c56p-3,
+    0x1.0000070p40
+  },
+  { // Entry 81
+    0x1.bf81e0269c59c7ff753ca32147666c56p-3,
+    -0x1.0000070p40
+  },
+  { // Entry 82
+    0x1.14a26ed1960d67ffffdf8d13b43fa2b4p-1,
+    0x1.00000acadb3d3p0
+  },
+  { // Entry 83
+    0x1.14a26ed1960d67ffffdf8d13b43fa2b4p-1,
+    -0x1.00000acadb3d3p0
+  },
+  { // Entry 84
+    0x1.ffffffffbfffe7ffff155655559a7d2dp-1,
+    0x1.00003p-17
+  },
+  { // Entry 85
+    0x1.ffffffffbfffe7ffff155655559a7d2dp-1,
+    -0x1.00003p-17
+  },
+  { // Entry 86
+    0x1.ffffffffeffff7ffff15f96ad3b29d94p-1,
+    0x1.00003ffffffaep-18
+  },
+  { // Entry 87
+    0x1.ffffffffeffff7ffff15f96ad3b29d94p-1,
+    -0x1.00003ffffffaep-18
+  },
+  { // Entry 88
+    0x1.ffffffffeffff7ffff15576aab329f45p-1,
+    0x1.00003ffffffffp-18
+  },
+  { // Entry 89
+    0x1.ffffffffeffff7ffff15576aab329f45p-1,
+    -0x1.00003ffffffffp-18
+  },
+  { // Entry 90
+    -0x1.dab7efeb35bad7fbdcb0efedb662097cp-2,
+    0x1.00007ffffdea0p41
+  },
+  { // Entry 91
+    -0x1.dab7efeb35bad7fbdcb0efedb662097cp-2,
+    -0x1.00007ffffdea0p41
+  },
+  { // Entry 92
+    0x1.fffffffffbfff8000001595aa9afffcfp-1,
+    0x1.0000ffff8p-19
+  },
+  { // Entry 93
+    0x1.fffffffffbfff8000001595aa9afffcfp-1,
+    -0x1.0000ffff8p-19
+  },
+  { // Entry 94
+    0x1.fffffffffefff80000004b36423050f6p-1,
+    0x1.0003fff800051p-20
+  },
+  { // Entry 95
+    0x1.fffffffffefff80000004b36423050f6p-1,
+    -0x1.0003fff800051p-20
+  },
+  { // Entry 96
+    0x1.fffffffffefff800000042961fb095f7p-1,
+    0x1.0003fff800096p-20
+  },
+  { // Entry 97
+    0x1.fffffffffefff800000042961fb095f7p-1,
+    -0x1.0003fff800096p-20
+  },
+  { // Entry 98
+    -0x1.fbf2b71a23a577fddd081d30bc24917fp-2,
+    0x1.000fd20p334
+  },
+  { // Entry 99
+    -0x1.fbf2b71a23a577fddd081d30bc24917fp-2,
+    -0x1.000fd20p334
+  },
+  { // Entry 100
+    0x1.fccc87eae7736d8d8a4776314f6b0ba7p-5,
+    0x1.003p514
+  },
+  { // Entry 101
+    0x1.fccc87eae7736d8d8a4776314f6b0ba7p-5,
+    -0x1.003p514
+  },
+  { // Entry 102
+    -0x1.a43f40d92b7ed7eef0fe6d1799442cfap-7,
+    0x1.00600000015f4p41
+  },
+  { // Entry 103
+    -0x1.a43f40d92b7ed7eef0fe6d1799442cfap-7,
+    -0x1.00600000015f4p41
+  },
+  { // Entry 104
+    0x1.c11cc38f40ab2827dd0ff8c6f3dd1dafp-1,
+    0x1.007p-1
+  },
+  { // Entry 105
+    0x1.c11cc38f40ab2827dd0ff8c6f3dd1dafp-1,
+    -0x1.007p-1
+  },
+  { // Entry 106
+    0x1.ffffffffffbfc7f3c0000157ac331d0cp-1,
+    0x1.007p-21
+  },
+  { // Entry 107
+    0x1.ffffffffffbfc7f3c0000157ac331d0cp-1,
+    -0x1.007p-21
+  },
+  { // Entry 108
+    0x1.e9ba98231f7346e0566694e1484a5b98p-8,
+    0x1.00cp40
+  },
+  { // Entry 109
+    0x1.e9ba98231f7346e0566694e1484a5b98p-8,
+    -0x1.00cp40
+  },
+  { // Entry 110
+    0x1.fefdf48ed649cd087e3e801219edf804p-1,
+    0x1.011p-4
+  },
+  { // Entry 111
+    0x1.fefdf48ed649cd087e3e801219edf804p-1,
+    -0x1.011p-4
+  },
+  { // Entry 112
+    -0x1.ffc16a0f12ff271ced72fc659ddcd382p-1,
+    0x1.011p996
+  },
+  { // Entry 113
+    -0x1.ffc16a0f12ff271ced72fc659ddcd382p-1,
+    -0x1.011p996
+  },
+  { // Entry 114
+    0x1.efd5b61a30a387fff1400519845fcb1ep-1,
+    0x1.020p-2
+  },
+  { // Entry 115
+    0x1.efd5b61a30a387fff1400519845fcb1ep-1,
+    -0x1.020p-2
+  },
+  { // Entry 116
+    0x1.c97b8161dc50a06cd4801deeb8e0715bp-2,
+    0x1.0204260c18307p59
+  },
+  { // Entry 117
+    0x1.c97b8161dc50a06cd4801deeb8e0715bp-2,
+    -0x1.0204260c18307p59
+  },
+  { // Entry 118
+    -0x1.bf26a3c9b9fbe83488449343f08b08d7p-2,
+    0x1.02e78a321155ep1
+  },
+  { // Entry 119
+    -0x1.bf26a3c9b9fbe83488449343f08b08d7p-2,
+    -0x1.02e78a321155ep1
+  },
+  { // Entry 120
+    0x1.fef806b1f84e4dfd5f71307a3c3eb602p-1,
+    0x1.040p-4
+  },
+  { // Entry 121
+    0x1.fef806b1f84e4dfd5f71307a3c3eb602p-1,
+    -0x1.040p-4
+  },
+  { // Entry 122
+    0x1.fe851fbf87d176fb4c69295c7f928402p-1,
+    0x1.04bde8bb80258p98
+  },
+  { // Entry 123
+    0x1.fe851fbf87d176fb4c69295c7f928402p-1,
+    -0x1.04bde8bb80258p98
+  },
+  { // Entry 124
+    0x1.70f6a51da8efec398e74169e771386eap-1,
+    0x1.077e749e37ceep236
+  },
+  { // Entry 125
+    0x1.70f6a51da8efec398e74169e771386eap-1,
+    -0x1.077e749e37ceep236
+  },
+  { // Entry 126
+    0x1.6b408c856bda57fe5829a58361fea112p-3,
+    0x1.07f80p300
+  },
+  { // Entry 127
+    0x1.6b408c856bda57fe5829a58361fea112p-3,
+    -0x1.07f80p300
+  },
+  { // Entry 128
+    0x1.2b2f965ae40fc7ffffbca0b7eaec5919p-1,
+    0x1.07f9bea1b3546p27
+  },
+  { // Entry 129
+    0x1.2b2f965ae40fc7ffffbca0b7eaec5919p-1,
+    -0x1.07f9bea1b3546p27
+  },
+  { // Entry 130
+    -0x1.4eed2f3fc76a77f803d8911eeddcc5e8p-1,
+    0x1.090d18372f2d5p4
+  },
+  { // Entry 131
+    -0x1.4eed2f3fc76a77f803d8911eeddcc5e8p-1,
+    -0x1.090d18372f2d5p4
+  },
+  { // Entry 132
+    0x1.fba59aecee5000315cee323079ed1427p-1,
+    0x1.0b4p-3
+  },
+  { // Entry 133
+    0x1.fba59aecee5000315cee323079ed1427p-1,
+    -0x1.0b4p-3
+  },
+  { // Entry 134
+    0x1.fffd1bcda7a7d5510aa3d0ed8addc785p-1,
+    0x1.0c0d5c2af3c2ep346
+  },
+  { // Entry 135
+    0x1.fffd1bcda7a7d5510aa3d0ed8addc785p-1,
+    -0x1.0c0d5c2af3c2ep346
+  },
+  { // Entry 136
+    -0x1.e4dfe831292867fdc1333c0a4c3f3f70p-1,
+    0x1.0d30596ee91fdp216
+  },
+  { // Entry 137
+    -0x1.e4dfe831292867fdc1333c0a4c3f3f70p-1,
+    -0x1.0d30596ee91fdp216
+  },
+  { // Entry 138
+    0x1.fb8432886a283b17acaa524e312ab1e3p-2,
+    0x1.0d6p0
+  },
+  { // Entry 139
+    0x1.fb8432886a283b17acaa524e312ab1e3p-2,
+    -0x1.0d6p0
+  },
+  { // Entry 140
+    0x1.ffffee202853ffbbc1684847019727a0p-1,
+    0x1.0e9474c68831cp-10
+  },
+  { // Entry 141
+    0x1.ffffee202853ffbbc1684847019727a0p-1,
+    -0x1.0e9474c68831cp-10
+  },
+  { // Entry 142
+    -0x1.b70d3d5584b1a83c68e254e523d37dfdp-2,
+    0x1.113bae4049849p2
+  },
+  { // Entry 143
+    -0x1.b70d3d5584b1a83c68e254e523d37dfdp-2,
+    -0x1.113bae4049849p2
+  },
+  { // Entry 144
+    0x1.fed8df58f625fdcbb1e40cf83caa2ca2p-1,
+    0x1.12eb870976540p-4
+  },
+  { // Entry 145
+    0x1.fed8df58f625fdcbb1e40cf83caa2ca2p-1,
+    -0x1.12eb870976540p-4
+  },
+  { // Entry 146
+    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
+    0x1.13cp0
+  },
+  { // Entry 147
+    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
+    -0x1.13cp0
+  },
+  { // Entry 148
+    0x1.fed0476fc75c9800000000000020b13ep-1,
+    0x1.16e534ee36580p-4
+  },
+  { // Entry 149
+    0x1.fed0476fc75c9800000000000020b13ep-1,
+    -0x1.16e534ee36580p-4
+  },
+  { // Entry 150
+    0x1.fb38e82e3193a7f19a17d231a2e8194ep-1,
+    0x1.17fffffffea98p-3
+  },
+  { // Entry 151
+    0x1.fb38e82e3193a7f19a17d231a2e8194ep-1,
+    -0x1.17fffffffea98p-3
+  },
+  { // Entry 152
+    0x1.fb38e82e3187fc65747ae443461eb434p-1,
+    0x1.180p-3
+  },
+  { // Entry 153
+    0x1.fb38e82e3187fc65747ae443461eb434p-1,
+    -0x1.180p-3
+  },
+  { // Entry 154
+    -0x1.e59647f1fe9c750059b9eafb88c2aceap-1,
+    0x1.1a191ebbb4d7fp7
+  },
+  { // Entry 155
+    -0x1.e59647f1fe9c750059b9eafb88c2aceap-1,
+    -0x1.1a191ebbb4d7fp7
+  },
+  { // Entry 156
+    -0x1.d0dca1f8715bd7f9ff373c763522db0ep-4,
+    0x1.1da84f2b7b1d8p7
+  },
+  { // Entry 157
+    -0x1.d0dca1f8715bd7f9ff373c763522db0ep-4,
+    -0x1.1da84f2b7b1d8p7
+  },
+  { // Entry 158
+    0x1.b917ebbc30e1d8364bc3c2c10ea13539p-2,
+    0x1.201e973251302p0
+  },
+  { // Entry 159
+    0x1.b917ebbc30e1d8364bc3c2c10ea13539p-2,
+    -0x1.201e973251302p0
+  },
+  { // Entry 160
+    0x1.fffadf12ff4147f6f6f35b44b0f6cb46p-1,
+    0x1.21e02p-7
+  },
+  { // Entry 161
+    0x1.fffadf12ff4147f6f6f35b44b0f6cb46p-1,
+    -0x1.21e02p-7
+  },
+  { // Entry 162
+    -0x1.598a4dab3de597d52faa736762a3f651p-1,
+    0x1.27e29a4b985bfp1
+  },
+  { // Entry 163
+    -0x1.598a4dab3de597d52faa736762a3f651p-1,
+    -0x1.27e29a4b985bfp1
+  },
+  { // Entry 164
+    0x1.fa95c1154abf56c4dbb77bfe5e4e8f42p-1,
+    0x1.2a1f28dbfb6c0p-3
+  },
+  { // Entry 165
+    0x1.fa95c1154abf56c4dbb77bfe5e4e8f42p-1,
+    -0x1.2a1f28dbfb6c0p-3
+  },
+  { // Entry 166
+    -0x1.6412293adb7bca97731e50a86312da2dp-1,
+    0x1.2b8p1
+  },
+  { // Entry 167
+    -0x1.6412293adb7bca97731e50a86312da2dp-1,
+    -0x1.2b8p1
+  },
+  { // Entry 168
+    0x1.fffa518a7d0e77f3b431fcd0ba353095p-1,
+    0x1.31199def72f4dp-7
+  },
+  { // Entry 169
+    0x1.fffa518a7d0e77f3b431fcd0ba353095p-1,
+    -0x1.31199def72f4dp-7
+  },
+  { // Entry 170
+    0x1.f36895fe177f77fe84798264ad4f33b1p-1,
+    0x1.31260e1485014p4
+  },
+  { // Entry 171
+    0x1.f36895fe177f77fe84798264ad4f33b1p-1,
+    -0x1.31260e1485014p4
+  },
+  { // Entry 172
+    0x1.d36207b4fee167f6b3185fdd9294a233p-4,
+    0x1.34e964cd103bdp2
+  },
+  { // Entry 173
+    0x1.d36207b4fee167f6b3185fdd9294a233p-4,
+    -0x1.34e964cd103bdp2
+  },
+  { // Entry 174
+    -0x1.84a37f4fa7616caad66b4d701ab53e94p-1,
+    0x1.37618a0ba7850p1
+  },
+  { // Entry 175
+    -0x1.84a37f4fa7616caad66b4d701ab53e94p-1,
+    -0x1.37618a0ba7850p1
+  },
+  { // Entry 176
+    -0x1.c830bbc99e2290f9d93aa62b2ddfec97p-39,
+    0x1.379704f5f1eb3p24
+  },
+  { // Entry 177
+    -0x1.c830bbc99e2290f9d93aa62b2ddfec97p-39,
+    -0x1.379704f5f1eb3p24
+  },
+  { // Entry 178
+    0x1.b5daaa233bd4f7fcf34b6d5d0280172fp-3,
+    0x1.3b61dd166d470p2
+  },
+  { // Entry 179
+    0x1.b5daaa233bd4f7fcf34b6d5d0280172fp-3,
+    -0x1.3b61dd166d470p2
+  },
+  { // Entry 180
+    -0x1.ffd00dc4db400d962e2d255a661e3ccbp-4,
+    0x1.3c011022acbd0p37
+  },
+  { // Entry 181
+    -0x1.ffd00dc4db400d962e2d255a661e3ccbp-4,
+    -0x1.3c011022acbd0p37
+  },
+  { // Entry 182
+    -0x1.14052b4016ff57fe5750ed3426bfd758p-1,
+    0x1.3e7788e900b70p727
+  },
+  { // Entry 183
+    -0x1.14052b4016ff57fe5750ed3426bfd758p-1,
+    -0x1.3e7788e900b70p727
+  },
+  { // Entry 184
+    0x1.ffffe6a5e4197f5fc50acb189eb85c94p-1,
+    0x1.423eafdcc2779p-10
+  },
+  { // Entry 185
+    0x1.ffffe6a5e4197f5fc50acb189eb85c94p-1,
+    -0x1.423eafdcc2779p-10
+  },
+  { // Entry 186
+    -0x1.fe09fc3d16fedd7508301df68857b756p-6,
+    0x1.4321828c1b538p119
+  },
+  { // Entry 187
+    -0x1.fe09fc3d16fedd7508301df68857b756p-6,
+    -0x1.4321828c1b538p119
+  },
+  { // Entry 188
+    0x1.b685d949a27a0143c4ac9b553541ebecp-14,
+    0x1.43506cb22975dp22
+  },
+  { // Entry 189
+    0x1.b685d949a27a0143c4ac9b553541ebecp-14,
+    -0x1.43506cb22975dp22
+  },
+  { // Entry 190
+    0x1.fe398090e203bc2f6fe6830d380facc4p-1,
+    0x1.439f63495786ap67
+  },
+  { // Entry 191
+    0x1.fe398090e203bc2f6fe6830d380facc4p-1,
+    -0x1.439f63495786ap67
+  },
+  { // Entry 192
+    0x1.fe6274e000973a26c1a0053e3fdeffc7p-1,
+    0x1.457538a6bd073p-4
+  },
+  { // Entry 193
+    0x1.fe6274e000973a26c1a0053e3fdeffc7p-1,
+    -0x1.457538a6bd073p-4
+  },
+  { // Entry 194
+    0x1.09fcb69359c09d5739f1f0255d4fce83p-1,
+    0x1.478fc08p43
+  },
+  { // Entry 195
+    0x1.09fcb69359c09d5739f1f0255d4fce83p-1,
+    -0x1.478fc08p43
+  },
+  { // Entry 196
+    -0x1.20c2158511e7899f1ec379e90c296780p-9,
+    0x1.48a45797cbe63p61
+  },
+  { // Entry 197
+    -0x1.20c2158511e7899f1ec379e90c296780p-9,
+    -0x1.48a45797cbe63p61
+  },
+  { // Entry 198
+    0x1.990d17aae25307fec4ae6d4e98f30093p-1,
+    0x1.4a62e0e12c173p-1
+  },
+  { // Entry 199
+    0x1.990d17aae25307fec4ae6d4e98f30093p-1,
+    -0x1.4a62e0e12c173p-1
+  },
+  { // Entry 200
+    0x1.fdd4f1e00b38700419f96d341905d045p-3,
+    0x1.4c596642a9488p9
+  },
+  { // Entry 201
+    0x1.fdd4f1e00b38700419f96d341905d045p-3,
+    -0x1.4c596642a9488p9
+  },
+  { // Entry 202
+    0x1.fe4f141032f377fe135b13e04436c5ffp-1,
+    0x1.4d0p-4
+  },
+  { // Entry 203
+    0x1.fe4f141032f377fe135b13e04436c5ffp-1,
+    -0x1.4d0p-4
+  },
+  { // Entry 204
+    0x1.94e9f45d43c137a3f345644240a2cef0p-2,
+    0x1.4f0f308p488
+  },
+  { // Entry 205
+    0x1.94e9f45d43c137a3f345644240a2cef0p-2,
+    -0x1.4f0f308p488
+  },
+  { // Entry 206
+    0x1.9355f69ad4326404827cd5ccff8a0c69p-2,
+    0x1.52f00e0p793
+  },
+  { // Entry 207
+    0x1.9355f69ad4326404827cd5ccff8a0c69p-2,
+    -0x1.52f00e0p793
+  },
+  { // Entry 208
+    0x1.1a19be8bea10a801d0b2d09d9509c2c4p-1,
+    0x1.52f06c730ec02p2
+  },
+  { // Entry 209
+    0x1.1a19be8bea10a801d0b2d09d9509c2c4p-1,
+    -0x1.52f06c730ec02p2
+  },
+  { // Entry 210
+    0x1.385d92ec0c7337fea39493f6f2674328p-1,
+    0x1.53e7d5845fe3dp220
+  },
+  { // Entry 211
+    0x1.385d92ec0c7337fea39493f6f2674328p-1,
+    -0x1.53e7d5845fe3dp220
+  },
+  { // Entry 212
+    0x1.fffffffffe2f0f000000465e3592bffbp-1,
+    0x1.590p-20
+  },
+  { // Entry 213
+    0x1.fffffffffe2f0f000000465e3592bffbp-1,
+    -0x1.590p-20
+  },
+  { // Entry 214
+    -0x1.ffd7bc28ded91ffa200d677109251801p-1,
+    0x1.592f1176f0980p86
+  },
+  { // Entry 215
+    -0x1.ffd7bc28ded91ffa200d677109251801p-1,
+    -0x1.592f1176f0980p86
+  },
+  { // Entry 216
+    -0x1.cee28b3d79799000009ea8081244116cp-1,
+    0x1.5999999dc09dcp1
+  },
+  { // Entry 217
+    -0x1.cee28b3d79799000009ea8081244116cp-1,
+    -0x1.5999999dc09dcp1
+  },
+  { // Entry 218
+    0x1.c1f1eb08c26040a32800f087952a383cp-1,
+    0x1.5bea010p468
+  },
+  { // Entry 219
+    0x1.c1f1eb08c26040a32800f087952a383cp-1,
+    -0x1.5bea010p468
+  },
+  { // Entry 220
+    0x1.fffe35ab09a653e266eada6f44055214p-1,
+    0x1.5cb80a6135e5ap1000
+  },
+  { // Entry 221
+    0x1.fffe35ab09a653e266eada6f44055214p-1,
+    -0x1.5cb80a6135e5ap1000
+  },
+  { // Entry 222
+    -0x1.07b85f606e75d765b1aa3bbccba6eaf8p-3,
+    0x1.5d5be48730d2dp13
+  },
+  { // Entry 223
+    -0x1.07b85f606e75d765b1aa3bbccba6eaf8p-3,
+    -0x1.5d5be48730d2dp13
+  },
+  { // Entry 224
+    0x1.ffffffffff86239c000004d581b055ebp-1,
+    0x1.614p-21
+  },
+  { // Entry 225
+    0x1.ffffffffff86239c000004d581b055ebp-1,
+    -0x1.614p-21
+  },
+  { // Entry 226
+    -0x1.dd3a806e89cf17fffff16ecd5397b486p-1,
+    0x1.62adc8a660364p1
+  },
+  { // Entry 227
+    -0x1.dd3a806e89cf17fffff16ecd5397b486p-1,
+    -0x1.62adc8a660364p1
+  },
+  { // Entry 228
+    -0x1.4308b14f4b6edc4c07ee6895f3188af3p-1,
+    0x1.64ef438p142
+  },
+  { // Entry 229
+    -0x1.4308b14f4b6edc4c07ee6895f3188af3p-1,
+    -0x1.64ef438p142
+  },
+  { // Entry 230
+    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
+    0x1.652p0
+  },
+  { // Entry 231
+    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
+    -0x1.652p0
+  },
+  { // Entry 232
+    0x1.fff832c50f471ff5599c23dc968eb8e4p-1,
+    0x1.65865b2cb08a2p-7
+  },
+  { // Entry 233
+    0x1.fff832c50f471ff5599c23dc968eb8e4p-1,
+    -0x1.65865b2cb08a2p-7
+  },
+  { // Entry 234
+    0x1.acc251be330228021bc31307bc81dc16p-1,
+    0x1.6a937daabc20ep375
+  },
+  { // Entry 235
+    0x1.acc251be330228021bc31307bc81dc16p-1,
+    -0x1.6a937daabc20ep375
+  },
+  { // Entry 236
+    -0x1.14ae72e6ba22ef4608875c41378eb052p-61,
+    0x1.6ac5b262ca1ffp849
+  },
+  { // Entry 237
+    -0x1.14ae72e6ba22ef4608875c41378eb052p-61,
+    -0x1.6ac5b262ca1ffp849
+  },
+  { // Entry 238
+    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
+    0x1.6f7bdef7bdef4p3
+  },
+  { // Entry 239
+    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
+    -0x1.6f7bdef7bdef4p3
+  },
+  { // Entry 240
+    0x1.8d23f97901a307fffd6c52adf83f0993p-1,
+    0x1.739ce759ce738p200
+  },
+  { // Entry 241
+    0x1.8d23f97901a307fffd6c52adf83f0993p-1,
+    -0x1.739ce759ce738p200
+  },
+  { // Entry 242
+    0x1.fffff78a14ba0f38a84b48dcdb63d44fp-1,
+    0x1.7450c3f49d0b2p-11
+  },
+  { // Entry 243
+    0x1.fffff78a14ba0f38a84b48dcdb63d44fp-1,
+    -0x1.7450c3f49d0b2p-11
+  },
+  { // Entry 244
+    0x1.d6f1c727fb2cb7f7e9cbee2e14246c08p-4,
+    0x1.749fe53f963fdp0
+  },
+  { // Entry 245
+    0x1.d6f1c727fb2cb7f7e9cbee2e14246c08p-4,
+    -0x1.749fe53f963fdp0
+  },
+  { // Entry 246
+    -0x1.f284b5028c1847fffffc9532fe892aadp-1,
+    0x1.74af6725c6206p1
+  },
+  { // Entry 247
+    -0x1.f284b5028c1847fffffc9532fe892aadp-1,
+    -0x1.74af6725c6206p1
+  },
+  { // Entry 248
+    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
+    0x1.7550d28ffccc4p1
+  },
+  { // Entry 249
+    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
+    -0x1.7550d28ffccc4p1
+  },
+  { // Entry 250
+    0x1.d66d2078ebdeb7ffedf8a48e25084c19p-1,
+    0x1.775e397cd6aa0p6
+  },
+  { // Entry 251
+    0x1.d66d2078ebdeb7ffedf8a48e25084c19p-1,
+    -0x1.775e397cd6aa0p6
+  },
+  { // Entry 252
+    0x1.7af9a13085f5382a87a541ae0b2e5965p-1,
+    0x1.799302bf7f290p-1
+  },
+  { // Entry 253
+    0x1.7af9a13085f5382a87a541ae0b2e5965p-1,
+    -0x1.799302bf7f290p-1
+  },
+  { // Entry 254
+    0x1.ffdd2fdac0c2483e7b116d6d488e7a4bp-1,
+    0x1.799fffffffffdp-6
+  },
+  { // Entry 255
+    0x1.ffdd2fdac0c2483e7b116d6d488e7a4bp-1,
+    -0x1.799fffffffffdp-6
+  },
+  { // Entry 256
+    0x1.fff744f185a737f256732ce87dbaf7a7p-1,
+    0x1.7a3692ca94490p-7
+  },
+  { // Entry 257
+    0x1.fff744f185a737f256732ce87dbaf7a7p-1,
+    -0x1.7a3692ca94490p-7
+  },
+  { // Entry 258
+    0x1.7a6b326b690fa831ee4d0dd72787fbc3p-1,
+    0x1.7a66a638ac5b5p-1
+  },
+  { // Entry 259
+    0x1.7a6b326b690fa831ee4d0dd72787fbc3p-1,
+    -0x1.7a66a638ac5b5p-1
+  },
+  { // Entry 260
+    0x1.671fdb64ffbed7e4952a9d967941e7dap-4,
+    0x1.7ba65462b49a0p0
+  },
+  { // Entry 261
+    0x1.671fdb64ffbed7e4952a9d967941e7dap-4,
+    -0x1.7ba65462b49a0p0
+  },
+  { // Entry 262
+    0x1.ffa55490f206e3b4323a02477b4149e8p-1,
+    0x1.7cdf37cdf37c9p239
+  },
+  { // Entry 263
+    0x1.ffa55490f206e3b4323a02477b4149e8p-1,
+    -0x1.7cdf37cdf37c9p239
+  },
+  { // Entry 264
+    0x1.4c5b5970a3a488233005742af5e6a95ep-4,
+    0x1.7d542565f472ep0
+  },
+  { // Entry 265
+    0x1.4c5b5970a3a488233005742af5e6a95ep-4,
+    -0x1.7d542565f472ep0
+  },
+  { // Entry 266
+    0x1.479a5667c63f57da26adf180a7eb2ffbp-4,
+    0x1.7da0751649058p0
+  },
+  { // Entry 267
+    0x1.479a5667c63f57da26adf180a7eb2ffbp-4,
+    -0x1.7da0751649058p0
+  },
+  { // Entry 268
+    0x1.fff717511dcb57f32d38f29c01379b98p-1,
+    0x1.7e0ddcda6cc0dp-7
+  },
+  { // Entry 269
+    0x1.fff717511dcb57f32d38f29c01379b98p-1,
+    -0x1.7e0ddcda6cc0dp-7
+  },
+  { // Entry 270
+    0x1.ffffffffff7077e7000006b4c7060c33p-1,
+    0x1.7f6p-21
+  },
+  { // Entry 271
+    0x1.ffffffffff7077e7000006b4c7060c33p-1,
+    -0x1.7f6p-21
+  },
+  { // Entry 272
+    -0x1.fff9e1554698017220917c3fb31188ddp-1,
+    0x1.7f90117d44c74p100
+  },
+  { // Entry 273
+    -0x1.fff9e1554698017220917c3fb31188ddp-1,
+    -0x1.7f90117d44c74p100
+  },
+  { // Entry 274
+    0x1.ffdc006bff7e984a8d5031a7152d36e5p-1,
+    0x1.7ffffffffef7ap-6
+  },
+  { // Entry 275
+    0x1.ffdc006bff7e984a8d5031a7152d36e5p-1,
+    -0x1.7ffffffffef7ap-6
+  },
+  { // Entry 276
+    0x1.ffdc006bff7e78474d66d7f25c3ac277p-1,
+    0x1.7fffffffffa26p-6
+  },
+  { // Entry 277
+    0x1.ffdc006bff7e78474d66d7f25c3ac277p-1,
+    -0x1.7fffffffffa26p-6
+  },
+  { // Entry 278
+    0x1.ffdc006bff7e6839adba2a91108d56afp-1,
+    0x1.7ffffffffff80p-6
+  },
+  { // Entry 279
+    0x1.ffdc006bff7e6839adba2a91108d56afp-1,
+    -0x1.7ffffffffff80p-6
+  },
+  { // Entry 280
+    0x1.760718ab443977fdd8f8f2221ca4db3cp-1,
+    0x1.80ep-1
+  },
+  { // Entry 281
+    0x1.760718ab443977fdd8f8f2221ca4db3cp-1,
+    -0x1.80ep-1
+  },
+  { // Entry 282
+    -0x1.fffffffffffffffffffffffffeb29d0bp-1,
+    0x1.81ae0dffa3b33p959
+  },
+  { // Entry 283
+    -0x1.fffffffffffffffffffffffffeb29d0bp-1,
+    -0x1.81ae0dffa3b33p959
+  },
+  { // Entry 284
+    -0x1.fbdc48125b34574cf1f91419e7edb75bp-1,
+    0x1.81d612289c5cfp1
+  },
+  { // Entry 285
+    -0x1.fbdc48125b34574cf1f91419e7edb75bp-1,
+    -0x1.81d612289c5cfp1
+  },
+  { // Entry 286
+    0x1.ff9e396651cc97e935b2e0ee73607d12p-5,
+    0x1.8220192270a0ep0
+  },
+  { // Entry 287
+    0x1.ff9e396651cc97e935b2e0ee73607d12p-5,
+    -0x1.8220192270a0ep0
+  },
+  { // Entry 288
+    0x1.fe2b26dddb5c882f30a885c1b291f945p-5,
+    0x1.822bb780e9104p0
+  },
+  { // Entry 289
+    0x1.fe2b26dddb5c882f30a885c1b291f945p-5,
+    -0x1.822bb780e9104p0
+  },
+  { // Entry 290
+    0x1.eb87cff7c91157a755818c01284b0e51p-5,
+    0x1.82c119c4b8e49p0
+  },
+  { // Entry 291
+    0x1.eb87cff7c91157a755818c01284b0e51p-5,
+    -0x1.82c119c4b8e49p0
+  },
+  { // Entry 292
+    0x1.eb87cff7a62b77b57a66ac275a3104c8p-5,
+    0x1.82c119c4b9fc4p0
+  },
+  { // Entry 293
+    0x1.eb87cff7a62b77b57a66ac275a3104c8p-5,
+    -0x1.82c119c4b9fc4p0
+  },
+  { // Entry 294
+    0x1.eb87cff795ab17a807864d8fb0ca43cap-5,
+    0x1.82c119c4ba808p0
+  },
+  { // Entry 295
+    0x1.eb87cff795ab17a807864d8fb0ca43cap-5,
+    -0x1.82c119c4ba808p0
+  },
+  { // Entry 296
+    0x1.de1d17ab0d6a48367523193d68568c1bp-5,
+    0x1.832c9fc765270p0
+  },
+  { // Entry 297
+    0x1.de1d17ab0d6a48367523193d68568c1bp-5,
+    -0x1.832c9fc765270p0
+  },
+  { // Entry 298
+    0x1.dc86e7bec0c44848cfc39b7f1b8204acp-5,
+    0x1.833956ce7d1f9p0
+  },
+  { // Entry 299
+    0x1.dc86e7bec0c44848cfc39b7f1b8204acp-5,
+    -0x1.833956ce7d1f9p0
+  },
+  { // Entry 300
+    0x1.db03cbb942a7a84974e904ecc896a5eep-5,
+    0x1.834574eb1c099p0
+  },
+  { // Entry 301
+    0x1.db03cbb942a7a84974e904ecc896a5eep-5,
+    -0x1.834574eb1c099p0
+  },
+  { // Entry 302
+    0x1.ce431710d15077b1e8170a532b68abdep-5,
+    0x1.83aba5688e13ep0
+  },
+  { // Entry 303
+    0x1.ce431710d15077b1e8170a532b68abdep-5,
+    -0x1.83aba5688e13ep0
+  },
+  { // Entry 304
+    0x1.cd46b3a77f6dd7ab0d312546aba7c0afp-5,
+    0x1.83b38bbafd75bp0
+  },
+  { // Entry 305
+    0x1.cd46b3a77f6dd7ab0d312546aba7c0afp-5,
+    -0x1.83b38bbafd75bp0
+  },
+  { // Entry 306
+    -0x1.ff29bc666bee6ea44d4db000e5f173bfp-1,
+    0x1.86a017cb1c31cp16
+  },
+  { // Entry 307
+    -0x1.ff29bc666bee6ea44d4db000e5f173bfp-1,
+    -0x1.86a017cb1c31cp16
+  },
+  { // Entry 308
+    -0x1.7968916e4c64630e8e3ae60276ba2d27p-2,
+    0x1.8720588p392
+  },
+  { // Entry 309
+    -0x1.7968916e4c64630e8e3ae60276ba2d27p-2,
+    -0x1.8720588p392
+  },
+  { // Entry 310
+    0x1.fb97c7e452917f59890dfb47e7c9b5e3p-1,
+    0x1.88a2288a22888p9
+  },
+  { // Entry 311
+    0x1.fb97c7e452917f59890dfb47e7c9b5e3p-1,
+    -0x1.88a2288a22888p9
+  },
+  { // Entry 312
+    -0x1.ae44a5f01bf633015e5aacccab4a7f3dp-1,
+    0x1.8cf013991c308p1000
+  },
+  { // Entry 313
+    -0x1.ae44a5f01bf633015e5aacccab4a7f3dp-1,
+    -0x1.8cf013991c308p1000
+  },
+  { // Entry 314
+    0x1.d96e82f71a9dc7fd86f57480e75491e3p-1,
+    0x1.9p-2
+  },
+  { // Entry 315
+    0x1.d96e82f71a9dc7fd86f57480e75491e3p-1,
+    -0x1.9p-2
+  },
+  { // Entry 316
+    0x1.0fd9d5c093df4f57fc49463e2f3f33e6p-7,
+    0x1.9p0
+  },
+  { // Entry 317
+    0x1.0fd9d5c093df4f57fc49463e2f3f33e6p-7,
+    -0x1.9p0
+  },
+  { // Entry 318
+    0x1.0fd9d5c05e5fc801a0f5cbfa33777ae4p-7,
+    0x1.90000000006b0p0
+  },
+  { // Entry 319
+    0x1.0fd9d5c05e5fc801a0f5cbfa33777ae4p-7,
+    -0x1.90000000006b0p0
+  },
+  { // Entry 320
+    0x1.bc8be725417d8800000cada42eeea04ep-1,
+    0x1.900c206d44162p6
+  },
+  { // Entry 321
+    0x1.bc8be725417d8800000cada42eeea04ep-1,
+    -0x1.900c206d44162p6
+  },
+  { // Entry 322
+    0x1.fffffffff63b67e4972d86a2f9d8209bp-1,
+    0x1.900c2af7baef3p-19
+  },
+  { // Entry 323
+    0x1.fffffffff63b67e4972d86a2f9d8209bp-1,
+    -0x1.900c2af7baef3p-19
+  },
+  { // Entry 324
+    0x1.bd464c9352d107ffffff8db9e0da71c0p-1,
+    0x1.900f11bd8955dp6
+  },
+  { // Entry 325
+    0x1.bd464c9352d107ffffff8db9e0da71c0p-1,
+    -0x1.900f11bd8955dp6
+  },
+  { // Entry 326
+    0x1.fffffda85cdd0d431e06f9aa74bc8ce0p-1,
+    0x1.910b35c3253d4p100
+  },
+  { // Entry 327
+    0x1.fffffda85cdd0d431e06f9aa74bc8ce0p-1,
+    -0x1.910b35c3253d4p100
+  },
+  { // Entry 328
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 329
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 330
+    -0x1.2aeef4b9ea1ae4e64c71fccf1fd06f40p-18,
+    0x1.922p0
+  },
+  { // Entry 331
+    -0x1.2aeef4b9ea1ae4e64c71fccf1fd06f40p-18,
+    -0x1.922p0
+  },
+  { // Entry 332
+    -0x1.ffffffffd904847798c7acd46ad183cap-18,
+    0x1.9220354442d18p0
+  },
+  { // Entry 333
+    -0x1.ffffffffd904847798c7acd46ad183cap-18,
+    -0x1.9220354442d18p0
+  },
+  { // Entry 334
+    -0x1.ffffffffffffffffffff2ac8c3da72cbp-1,
+    0x1.9251f93aeb59dp12
+  },
+  { // Entry 335
+    -0x1.ffffffffffffffffffff2ac8c3da72cbp-1,
+    -0x1.9251f93aeb59dp12
+  },
+  { // Entry 336
+    0x1.ffb8c4d1f78a87fffffb23d171bd54d0p-1,
+    0x1.943be221d909ap2
+  },
+  { // Entry 337
+    0x1.ffb8c4d1f78a87fffffb23d171bd54d0p-1,
+    -0x1.943be221d909ap2
+  },
+  { // Entry 338
+    0x1.fff6011fdddab7f25c82e5384d46cc69p-1,
+    0x1.94af699302875p-7
+  },
+  { // Entry 339
+    0x1.fff6011fdddab7f25c82e5384d46cc69p-1,
+    -0x1.94af699302875p-7
+  },
+  { // Entry 340
+    0x1.d7954e7a3ee998000099470604329b68p-1,
+    0x1.999999ab7b0edp-2
+  },
+  { // Entry 341
+    0x1.d7954e7a3ee998000099470604329b68p-1,
+    -0x1.999999ab7b0edp-2
+  },
+  { // Entry 342
+    0x1.d7954e76c8e30fffff5a9bf455a06410p-1,
+    0x1.999999bd4190bp-2
+  },
+  { // Entry 343
+    0x1.d7954e76c8e30fffff5a9bf455a06410p-1,
+    -0x1.999999bd4190bp-2
+  },
+  { // Entry 344
+    0x1.fa23cfb82022440eb972c7e083933d20p-1,
+    0x1.9bd0f19479a24p2
+  },
+  { // Entry 345
+    0x1.fa23cfb82022440eb972c7e083933d20p-1,
+    -0x1.9bd0f19479a24p2
+  },
+  { // Entry 346
+    -0x1.6a09e667f3af07f2f4676b5f6f268c81p-1,
+    0x1.9c55835e7e83ep8
+  },
+  { // Entry 347
+    -0x1.6a09e667f3af07f2f4676b5f6f268c81p-1,
+    -0x1.9c55835e7e83ep8
+  },
+  { // Entry 348
+    0x1.fff59c12558097f2858f4a1326f2ddf4p-1,
+    0x1.9c9942b14448dp-7
+  },
+  { // Entry 349
+    0x1.fff59c12558097f2858f4a1326f2ddf4p-1,
+    -0x1.9c9942b14448dp-7
+  },
+  { // Entry 350
+    0x1.ffece5cab4ca5652ea2fc7ccce883304p-1,
+    0x1.9d3d92485e2b5p523
+  },
+  { // Entry 351
+    0x1.ffece5cab4ca5652ea2fc7ccce883304p-1,
+    -0x1.9d3d92485e2b5p523
+  },
+  { // Entry 352
+    -0x1.ff55301d3a780d19c28c22c82c1f5383p-5,
+    0x1.a0d068341a080p1000
+  },
+  { // Entry 353
+    -0x1.ff55301d3a780d19c28c22c82c1f5383p-5,
+    -0x1.a0d068341a080p1000
+  },
+  { // Entry 354
+    0x1.5a5615acd0dc09bf32e903149634f999p-1,
+    0x1.a7ep-1
+  },
+  { // Entry 355
+    0x1.5a5615acd0dc09bf32e903149634f999p-1,
+    -0x1.a7ep-1
+  },
+  { // Entry 356
+    0x1.766ad27a1de4fb1a5b667216bbe6bf68p-14,
+    0x1.a858343863965p119
+  },
+  { // Entry 357
+    0x1.766ad27a1de4fb1a5b667216bbe6bf68p-14,
+    -0x1.a858343863965p119
+  },
+  { // Entry 358
+    0x1.6bd4d5be7249325d8680606e6b9ea625p-1,
+    0x1.ab190633d88eap3
+  },
+  { // Entry 359
+    0x1.6bd4d5be7249325d8680606e6b9ea625p-1,
+    -0x1.ab190633d88eap3
+  },
+  { // Entry 360
+    0x1.ffffffffff4a57e64da87a5af47cfa18p-1,
+    0x1.af4bd2f4bd2f0p-21
+  },
+  { // Entry 361
+    0x1.ffffffffff4a57e64da87a5af47cfa18p-1,
+    -0x1.af4bd2f4bd2f0p-21
+  },
+  { // Entry 362
+    0x1.7ff2934ad29a74288b886124fead5842p-1,
+    0x1.afa70300aee60p72
+  },
+  { // Entry 363
+    0x1.7ff2934ad29a74288b886124fead5842p-1,
+    -0x1.afa70300aee60p72
+  },
+  { // Entry 364
+    0x1.ff866aebdce0a7fffffb6074d5199896p-1,
+    0x1.b5ab427cffb4cp94
+  },
+  { // Entry 365
+    0x1.ff866aebdce0a7fffffb6074d5199896p-1,
+    -0x1.b5ab427cffb4cp94
+  },
+  { // Entry 366
+    -0x1.f54f5227a4e83fbf939b2e96178f121dp-60,
+    0x1.b951f1572eba5p23
+  },
+  { // Entry 367
+    -0x1.f54f5227a4e83fbf939b2e96178f121dp-60,
+    -0x1.b951f1572eba5p23
+  },
+  { // Entry 368
+    0x1.fffd06d35579c7fe295dad17efbbbe97p-1,
+    0x1.b96e5b96e5b91p-8
+  },
+  { // Entry 369
+    0x1.fffd06d35579c7fe295dad17efbbbe97p-1,
+    -0x1.b96e5b96e5b91p-8
+  },
+  { // Entry 370
+    -0x1.7c4128e2aff4b2b78e147601fa658af5p-1,
+    0x1.ba3b18395d17bp8
+  },
+  { // Entry 371
+    -0x1.7c4128e2aff4b2b78e147601fa658af5p-1,
+    -0x1.ba3b18395d17bp8
+  },
+  { // Entry 372
+    -0x1.fffffffffffffffffffffffffefaff9dp-1,
+    0x1.bab62ed655019p970
+  },
+  { // Entry 373
+    -0x1.fffffffffffffffffffffffffefaff9dp-1,
+    -0x1.bab62ed655019p970
+  },
+  { // Entry 374
+    0x1.ffffff3e534467fffff37e509b7b792ep-1,
+    0x1.bd55aa411ab46p-13
+  },
+  { // Entry 375
+    0x1.ffffff3e534467fffff37e509b7b792ep-1,
+    -0x1.bd55aa411ab46p-13
+  },
+  { // Entry 376
+    -0x1.7fdb07b9f77e07ffff7207c4628d3f68p-1,
+    0x1.bd616d4fe95cdp36
+  },
+  { // Entry 377
+    -0x1.7fdb07b9f77e07ffff7207c4628d3f68p-1,
+    -0x1.bd616d4fe95cdp36
+  },
+  { // Entry 378
+    0x1.ffcf4da76222c889718239523341f4b5p-1,
+    0x1.beap-6
+  },
+  { // Entry 379
+    0x1.ffcf4da76222c889718239523341f4b5p-1,
+    -0x1.beap-6
+  },
+  { // Entry 380
+    -0x1.ddee13357ec6f7fcc9502399fccdc2f0p-1,
+    0x1.c11516af585a4p1
+  },
+  { // Entry 381
+    -0x1.ddee13357ec6f7fcc9502399fccdc2f0p-1,
+    -0x1.c11516af585a4p1
+  },
+  { // Entry 382
+    0x1.58cccec059da17d3f448a8b2b6e7c0e8p-1,
+    0x1.c75e54de4c06ep2
+  },
+  { // Entry 383
+    0x1.58cccec059da17d3f448a8b2b6e7c0e8p-1,
+    -0x1.c75e54de4c06ep2
+  },
+  { // Entry 384
+    -0x1.ffffffffffffffffffffffffffc8663ep-1,
+    0x1.cb44e86bc192bp648
+  },
+  { // Entry 385
+    -0x1.ffffffffffffffffffffffffffc8663ep-1,
+    -0x1.cb44e86bc192bp648
+  },
+  { // Entry 386
+    0x1.ffffffffffffffffffffffffff2198f9p-1,
+    0x1.cb44e86bc192bp649
+  },
+  { // Entry 387
+    0x1.ffffffffffffffffffffffffff2198f9p-1,
+    -0x1.cb44e86bc192bp649
+  },
+  { // Entry 388
+    -0x1.ca281d7fe44b07ffffd2b7d46ab5d361p-1,
+    0x1.cd5a6f8762affp1
+  },
+  { // Entry 389
+    -0x1.ca281d7fe44b07ffffd2b7d46ab5d361p-1,
+    -0x1.cd5a6f8762affp1
+  },
+  { // Entry 390
+    0x1.e80ad4fe54c71d4e604ede474cca0b19p-5,
+    0x1.d0cb95f02ad77p464
+  },
+  { // Entry 391
+    0x1.e80ad4fe54c71d4e604ede474cca0b19p-5,
+    -0x1.d0cb95f02ad77p464
+  },
+  { // Entry 392
+    0x1.0df8eb409efe37fffff925b5de2c80b6p-1,
+    0x1.d31bd604903a0p2
+  },
+  { // Entry 393
+    0x1.0df8eb409efe37fffff925b5de2c80b6p-1,
+    -0x1.d31bd604903a0p2
+  },
+  { // Entry 394
+    0x1.ff2ae968efe70ea4126849c3832c9cbdp-1,
+    0x1.d32f4610180f6p-5
+  },
+  { // Entry 395
+    0x1.ff2ae968efe70ea4126849c3832c9cbdp-1,
+    -0x1.d32f4610180f6p-5
+  },
+  { // Entry 396
+    -0x1.cec307a674d3ed2f8df47cf394aa88eap-3,
+    0x1.d96e058p488
+  },
+  { // Entry 397
+    -0x1.cec307a674d3ed2f8df47cf394aa88eap-3,
+    -0x1.d96e058p488
+  },
+  { // Entry 398
+    -0x1.ac8dbf9cdc95483577560b1814ea8895p-5,
+    0x1.db0803c392b4cp15
+  },
+  { // Entry 399
+    -0x1.ac8dbf9cdc95483577560b1814ea8895p-5,
+    -0x1.db0803c392b4cp15
+  },
+  { // Entry 400
+    -0x1.ac94870ca631684bd10b658b80cfcd42p-5,
+    0x1.db0803c3ff51dp15
+  },
+  { // Entry 401
+    -0x1.ac94870ca631684bd10b658b80cfcd42p-5,
+    -0x1.db0803c3ff51dp15
+  },
+  { // Entry 402
+    0x1.ff229073fd8b5e91d60dd095cfde5967p-1,
+    0x1.dc4p-5
+  },
+  { // Entry 403
+    0x1.ff229073fd8b5e91d60dd095cfde5967p-1,
+    -0x1.dc4p-5
+  },
+  { // Entry 404
+    0x1.ff21e5f975fffe83c2ae1c55a885f12fp-1,
+    0x1.dcf73dcf73dccp-5
+  },
+  { // Entry 405
+    0x1.ff21e5f975fffe83c2ae1c55a885f12fp-1,
+    -0x1.dcf73dcf73dccp-5
+  },
+  { // Entry 406
+    0x1.2f011326420e5002172db245fd9063e2p-1,
+    0x1.dffffffffffffp-1
+  },
+  { // Entry 407
+    0x1.2f011326420e5002172db245fd9063e2p-1,
+    -0x1.dffffffffffffp-1
+  },
+  { // Entry 408
+    0x1.f72c8e16dbc78b26afbf346185dccb48p-1,
+    0x1.e123691a7c4bep26
+  },
+  { // Entry 409
+    0x1.f72c8e16dbc78b26afbf346185dccb48p-1,
+    -0x1.e123691a7c4bep26
+  },
+  { // Entry 410
+    -0x1.4b0c6bb623f57fffff5e458203deef33p-2,
+    0x1.e666666f9cf49p0
+  },
+  { // Entry 411
+    -0x1.4b0c6bb623f57fffff5e458203deef33p-2,
+    -0x1.e666666f9cf49p0
+  },
+  { // Entry 412
+    0x1.fd74b5587588481884a92e83747f5c4ep-1,
+    0x1.e83accfc50b70p995
+  },
+  { // Entry 413
+    0x1.fd74b5587588481884a92e83747f5c4ep-1,
+    -0x1.e83accfc50b70p995
+  },
+  { // Entry 414
+    0x1.fff169b6ab7d17f43d59f6cf085accb0p-1,
+    0x1.e8ep-7
+  },
+  { // Entry 415
+    0x1.fff169b6ab7d17f43d59f6cf085accb0p-1,
+    -0x1.e8ep-7
+  },
+  { // Entry 416
+    0x1.7d39c9f1b0b3c0027a5fc9a76faee83dp-1,
+    0x1.eaf5ea5317442p4
+  },
+  { // Entry 417
+    0x1.7d39c9f1b0b3c0027a5fc9a76faee83dp-1,
+    -0x1.eaf5ea5317442p4
+  },
+  { // Entry 418
+    0x1.7f13af7081a6741660469fd60255fe49p-1,
+    0x1.eb0c2b00b1b83p4
+  },
+  { // Entry 419
+    0x1.7f13af7081a6741660469fd60255fe49p-1,
+    -0x1.eb0c2b00b1b83p4
+  },
+  { // Entry 420
+    -0x1.7ad7b88a1fe0f82b6f249c7c56dd8b5ap-1,
+    0x1.ebc6b555311c4p15
+  },
+  { // Entry 421
+    -0x1.7ad7b88a1fe0f82b6f249c7c56dd8b5ap-1,
+    -0x1.ebc6b555311c4p15
+  },
+  { // Entry 422
+    0x1.b06b2b58a2a23c98b12853415b5c83a1p-5,
+    0x1.ef7bdef7bdef2p239
+  },
+  { // Entry 423
+    0x1.b06b2b58a2a23c98b12853415b5c83a1p-5,
+    -0x1.ef7bdef7bdef2p239
+  },
+  { // Entry 424
+    0x1.fe6ded53172a6876790d3aab83a656f4p-1,
+    0x1.efbbeefbbeef8p15
+  },
+  { // Entry 425
+    0x1.fe6ded53172a6876790d3aab83a656f4p-1,
+    -0x1.efbbeefbbeef8p15
+  },
+  { // Entry 426
+    -0x1.fe2bcb87a7e158cffa2fe8d306cc7555p-1,
+    0x1.f07c1f07c1ef7p239
+  },
+  { // Entry 427
+    -0x1.fe2bcb87a7e158cffa2fe8d306cc7555p-1,
+    -0x1.f07c1f07c1ef7p239
+  },
+  { // Entry 428
+    -0x1.79d08d6b3a88282e0a0da2350464d0abp-1,
+    0x1.f0f2b5e060b29p1
+  },
+  { // Entry 429
+    -0x1.79d08d6b3a88282e0a0da2350464d0abp-1,
+    -0x1.f0f2b5e060b29p1
+  },
+  { // Entry 430
+    0x1.f0d11d321178d7ff15da48990d5983c2p-1,
+    0x1.f40p-3
+  },
+  { // Entry 431
+    0x1.f0d11d321178d7ff15da48990d5983c2p-1,
+    -0x1.f40p-3
+  },
+  { // Entry 432
+    0x1.e3ff5b15f723d7f7f7f5bb0dbce54d01p-4,
+    0x1.f43d49f947e87p9
+  },
+  { // Entry 433
+    0x1.e3ff5b15f723d7f7f7f5bb0dbce54d01p-4,
+    -0x1.f43d49f947e87p9
+  },
+  { // Entry 434
+    -0x1.6636c9f6a87a97f1cbdf708a2f1ad9bap-1,
+    0x1.f7fffffffffffp1
+  },
+  { // Entry 435
+    -0x1.6636c9f6a87a97f1cbdf708a2f1ad9bap-1,
+    -0x1.f7fffffffffffp1
+  },
+  { // Entry 436
+    0x1.ffc1be33092857ff26220f9981635bc7p-1,
+    0x1.f8fffffffffffp-6
+  },
+  { // Entry 437
+    0x1.ffc1be33092857ff26220f9981635bc7p-1,
+    -0x1.f8fffffffffffp-6
+  },
+  { // Entry 438
+    0x1.ffc1be33092857fb344affdd93d043a7p-1,
+    0x1.f90p-6
+  },
+  { // Entry 439
+    0x1.ffc1be33092857fb344affdd93d043a7p-1,
+    -0x1.f90p-6
+  },
+  { // Entry 440
+    -0x1.fffffffcab0d58220669dcfa421ccfa6p-1,
+    0x1.fa0236523ce54p344
+  },
+  { // Entry 441
+    -0x1.fffffffcab0d58220669dcfa421ccfa6p-1,
+    -0x1.fa0236523ce54p344
+  },
+  { // Entry 442
+    0x1.fc0d98ace2308800000212788a794eacp-1,
+    0x1.fceab54d37da0p-4
+  },
+  { // Entry 443
+    0x1.fc0d98ace2308800000212788a794eacp-1,
+    -0x1.fceab54d37da0p-4
+  },
+  { // Entry 444
+    -0x1.9589bca128b917fe59692a738c3791c9p-4,
+    0x1.fd0072fffffffp2
+  },
+  { // Entry 445
+    -0x1.9589bca128b917fe59692a738c3791c9p-4,
+    -0x1.fd0072fffffffp2
+  },
+  { // Entry 446
+    -0x1.4d304b07fc897cf1ade54fe97db7c8bdp-2,
+    0x1.fe0f827673422p62
+  },
+  { // Entry 447
+    -0x1.4d304b07fc897cf1ade54fe97db7c8bdp-2,
+    -0x1.fe0f827673422p62
+  },
+  { // Entry 448
+    0x1.c1a27ae836f128000000000000504e9bp-1,
+    0x1.feb1f7920e248p-2
+  },
+  { // Entry 449
+    0x1.c1a27ae836f128000000000000504e9bp-1,
+    -0x1.feb1f7920e248p-2
+  },
+  { // Entry 450
+    -0x1.936b64e955978d15aacfddf5821c6281p-1,
+    0x1.feeffffffffc6p995
+  },
+  { // Entry 451
+    -0x1.936b64e955978d15aacfddf5821c6281p-1,
+    -0x1.feeffffffffc6p995
+  },
+  { // Entry 452
+    0x1.fff007147ea577fb02130c68b335ef45p-1,
+    0x1.ff8ffffffffffp-7
+  },
+  { // Entry 453
+    0x1.fff007147ea577fb02130c68b335ef45p-1,
+    -0x1.ff8ffffffffffp-7
+  },
+  { // Entry 454
+    0x1.ffffc01bfe442b09cbec19f68af8fbf8p-1,
+    0x1.ff8ffffffffffp-10
+  },
+  { // Entry 455
+    0x1.ffffc01bfe442b09cbec19f68af8fbf8p-1,
+    -0x1.ff8ffffffffffp-10
+  },
+  { // Entry 456
+    0x1.7cc9fb75317ae93bf5ddee0e8b9c83cep-1,
+    0x1.ff8ffffffffffp870
+  },
+  { // Entry 457
+    0x1.7cc9fb75317ae93bf5ddee0e8b9c83cep-1,
+    -0x1.ff8ffffffffffp870
+  },
+  { // Entry 458
+    0x1.d6aea48015588e71983142804227fd84p-1,
+    0x1.ffcfff8p19
+  },
+  { // Entry 459
+    0x1.d6aea48015588e71983142804227fd84p-1,
+    -0x1.ffcfff8p19
+  },
+  { // Entry 460
+    -0x1.6a9972eee19badf9e34d36b0d1202091p-2,
+    0x1.ffcfff8p365
+  },
+  { // Entry 461
+    -0x1.6a9972eee19badf9e34d36b0d1202091p-2,
+    -0x1.ffcfff8p365
+  },
+  { // Entry 462
+    -0x1.3aaa15f7544b691a43e1fa1a639bdfc2p-1,
+    0x1.ffcffffffff6cp720
+  },
+  { // Entry 463
+    -0x1.3aaa15f7544b691a43e1fa1a639bdfc2p-1,
+    -0x1.ffcffffffff6cp720
+  },
+  { // Entry 464
+    0x1.3f164bce055c4c61b74a61f73ca73d3fp-1,
+    0x1.ffcfffffffff9p320
+  },
+  { // Entry 465
+    0x1.3f164bce055c4c61b74a61f73ca73d3fp-1,
+    -0x1.ffcfffffffff9p320
+  },
+  { // Entry 466
+    0x1.fffff002fff14d566ae8ec9d1edc3e3fp-1,
+    0x1.ffcffffffffffp-11
+  },
+  { // Entry 467
+    0x1.fffff002fff14d566ae8ec9d1edc3e3fp-1,
+    -0x1.ffcffffffffffp-11
+  },
+  { // Entry 468
+    -0x1.ffffff987f985d67944b867bff4ab857p-1,
+    0x1.ffcffffffffffp405
+  },
+  { // Entry 469
+    -0x1.ffffff987f985d67944b867bff4ab857p-1,
+    -0x1.ffcffffffffffp405
+  },
+  { // Entry 470
+    -0x1.ffff6235a25edb8c975b485c5c6f41f7p-1,
+    0x1.ffcffffffffffp567
+  },
+  { // Entry 471
+    -0x1.ffff6235a25edb8c975b485c5c6f41f7p-1,
+    -0x1.ffcffffffffffp567
+  },
+  { // Entry 472
+    0x1.fdf11ae4608b0894bab8786949aa6333p-3,
+    0x1.ffefff8ffffffp16
+  },
+  { // Entry 473
+    0x1.fdf11ae4608b0894bab8786949aa6333p-3,
+    -0x1.ffefff8ffffffp16
+  },
+  { // Entry 474
+    0x1.8f5525ab4583c064353aaad12c6cce6cp-1,
+    0x1.ffeffffffffccp995
+  },
+  { // Entry 475
+    0x1.8f5525ab4583c064353aaad12c6cce6cp-1,
+    -0x1.ffeffffffffccp995
+  },
+  { // Entry 476
+    0x1.a0af44a45c0569b72058cc34efd0e32ep-8,
+    0x1.ffeffffffffffp77
+  },
+  { // Entry 477
+    0x1.a0af44a45c0569b72058cc34efd0e32ep-8,
+    -0x1.ffeffffffffffp77
+  },
+  { // Entry 478
+    -0x1.df7546c31bf8cffef69c4859da055f33p-1,
+    0x1.ffeffffffffffp122
+  },
+  { // Entry 479
+    -0x1.df7546c31bf8cffef69c4859da055f33p-1,
+    -0x1.ffeffffffffffp122
+  },
+  { // Entry 480
+    -0x1.825a7bea27d5b1a598af6b684eb18478p-1,
+    0x1.ffeffffffffffp179
+  },
+  { // Entry 481
+    -0x1.825a7bea27d5b1a598af6b684eb18478p-1,
+    -0x1.ffeffffffffffp179
+  },
+  { // Entry 482
+    -0x1.1be2ab2078d547fff09932011fe16456p-1,
+    0x1.ffeffffffffffp238
+  },
+  { // Entry 483
+    -0x1.1be2ab2078d547fff09932011fe16456p-1,
+    -0x1.ffeffffffffffp238
+  },
+  { // Entry 484
+    -0x1.a4cc5f838f5297e0a7e749cb087c2f14p-7,
+    0x1.fff0000002511p492
+  },
+  { // Entry 485
+    -0x1.a4cc5f838f5297e0a7e749cb087c2f14p-7,
+    -0x1.fff0000002511p492
+  },
+  { // Entry 486
+    0x1.f16437d6119f89bfa73a2f14f377fd3ep-10,
+    0x1.fff1fffffffffp41
+  },
+  { // Entry 487
+    0x1.f16437d6119f89bfa73a2f14f377fd3ep-10,
+    -0x1.fff1fffffffffp41
+  },
+  { // Entry 488
+    0x1.898324c2f1cfc596e590b4a80d2508fbp-11,
+    0x1.ffffc7fffffffp45
+  },
+  { // Entry 489
+    0x1.898324c2f1cfc596e590b4a80d2508fbp-11,
+    -0x1.ffffc7fffffffp45
+  },
+  { // Entry 490
+    0x1.f0154c00688f87fcc96f14c8efb5914fp-1,
+    0x1.ffffdf1ffffffp-3
+  },
+  { // Entry 491
+    0x1.f0154c00688f87fcc96f14c8efb5914fp-1,
+    -0x1.ffffdf1ffffffp-3
+  },
+  { // Entry 492
+    0x1.ffc00157126a7d98216491df73d97cd3p-1,
+    0x1.fffff8fffffffp-6
+  },
+  { // Entry 493
+    0x1.ffc00157126a7d98216491df73d97cd3p-1,
+    -0x1.fffff8fffffffp-6
+  },
+  { // Entry 494
+    -0x1.e0d9f0f38c73f0069739e9de65191416p-2,
+    0x1.fffffbfffffffp968
+  },
+  { // Entry 495
+    -0x1.e0d9f0f38c73f0069739e9de65191416p-2,
+    -0x1.fffffbfffffffp968
+  },
+  { // Entry 496
+    0x1.fff4699dd560b5dbb88a029337b9ab86p-1,
+    0x1.fffffcfffffffp40
+  },
+  { // Entry 497
+    0x1.fff4699dd560b5dbb88a029337b9ab86p-1,
+    -0x1.fffffcfffffffp40
+  },
+  { // Entry 498
+    0x1.ff0015559f228802433732ae11942945p-1,
+    0x1.ffffff0000040p-5
+  },
+  { // Entry 499
+    0x1.ff0015559f228802433732ae11942945p-1,
+    -0x1.ffffff0000040p-5
+  },
+  { // Entry 500
+    -0x1.9c6951cccd39bf60d47db80be6fce34fp-2,
+    0x1.ffffff8p119
+  },
+  { // Entry 501
+    -0x1.9c6951cccd39bf60d47db80be6fce34fp-2,
+    -0x1.ffffff8p119
+  },
+  { // Entry 502
+    -0x1.f2c2263590034ec62522d45d2eeca285p-1,
+    0x1.ffffff8p192
+  },
+  { // Entry 503
+    -0x1.f2c2263590034ec62522d45d2eeca285p-1,
+    -0x1.ffffff8p192
+  },
+  { // Entry 504
+    0x1.c7884d6cfb5511a6b5111077fd0b1b72p-1,
+    0x1.ffffff8p543
+  },
+  { // Entry 505
+    0x1.c7884d6cfb5511a6b5111077fd0b1b72p-1,
+    -0x1.ffffff8p543
+  },
+  { // Entry 506
+    0x1.e66c79e776a1eff6b68f2d01289e08e8p-2,
+    0x1.ffffffc3fffffp500
+  },
+  { // Entry 507
+    0x1.e66c79e776a1eff6b68f2d01289e08e8p-2,
+    -0x1.ffffffc3fffffp500
+  },
+  { // Entry 508
+    0x1.c7c9a9c57c0b2009f18a6c2c07b52ea2p-3,
+    0x1.ffffffe1fffffp700
+  },
+  { // Entry 509
+    0x1.c7c9a9c57c0b2009f18a6c2c07b52ea2p-3,
+    -0x1.ffffffe1fffffp700
+  },
+  { // Entry 510
+    0x1.7bb28daf5f9ad3608dda8a16ea235cb4p-1,
+    0x1.ffffffff0f0ffp400
+  },
+  { // Entry 511
+    0x1.7bb28daf5f9ad3608dda8a16ea235cb4p-1,
+    -0x1.ffffffff0f0ffp400
+  },
+  { // Entry 512
+    0x1.fc015527d8bb37806e4976dcf7a7c98cp-1,
+    0x1.ffffffff3ffffp-4
+  },
+  { // Entry 513
+    0x1.fc015527d8bb37806e4976dcf7a7c98cp-1,
+    -0x1.ffffffff3ffffp-4
+  },
+  { // Entry 514
+    -0x1.ea5257eb66e3bffee900cd4447404c16p-1,
+    0x1.ffffffff8ffffp3
+  },
+  { // Entry 515
+    -0x1.ea5257eb66e3bffee900cd4447404c16p-1,
+    -0x1.ffffffff8ffffp3
+  },
+  { // Entry 516
+    -0x1.4eaa606dbef968000267b0375ded6872p-1,
+    0x1.fffffffffbcffp1
+  },
+  { // Entry 517
+    -0x1.4eaa606dbef968000267b0375ded6872p-1,
+    -0x1.fffffffffbcffp1
+  },
+  { // Entry 518
+    -0x1.fc9cd6b5f009482b0d5582e1c6cdf738p-1,
+    0x1.fffffffffe0b5p720
+  },
+  { // Entry 519
+    -0x1.fc9cd6b5f009482b0d5582e1c6cdf738p-1,
+    -0x1.fffffffffe0b5p720
+  },
+  { // Entry 520
+    0x1.e96ac045dd138d25741cb879b92afa48p-3,
+    0x1.fffffffffe7ffp41
+  },
+  { // Entry 521
+    0x1.e96ac045dd138d25741cb879b92afa48p-3,
+    -0x1.fffffffffe7ffp41
+  },
+  { // Entry 522
+    -0x1.fcaf39cfb94d48195d2b26060b30f822p-1,
+    0x1.fffffffffee09p720
+  },
+  { // Entry 523
+    -0x1.fcaf39cfb94d48195d2b26060b30f822p-1,
+    -0x1.fffffffffee09p720
+  },
+  { // Entry 524
+    0x1.8432232a6d1daa6ac8a94c0021e60d50p-1,
+    0x1.ffffffffffdffp40
+  },
+  { // Entry 525
+    0x1.8432232a6d1daa6ac8a94c0021e60d50p-1,
+    -0x1.ffffffffffdffp40
+  },
+  { // Entry 526
+    0x1.9e375143139d9a37b354ea33dd625cd6p-6,
+    0x1.ffffffffffeffp41
+  },
+  { // Entry 527
+    0x1.9e375143139d9a37b354ea33dd625cd6p-6,
+    -0x1.ffffffffffeffp41
+  },
+  { // Entry 528
+    0x1.fffc0001555528000049b10c26a1f539p-1,
+    0x1.fffffffffff4ap-8
+  },
+  { // Entry 529
+    0x1.fffc0001555528000049b10c26a1f539p-1,
+    -0x1.fffffffffff4ap-8
+  },
+  { // Entry 530
+    0x1.463a895c4ea5ce4e56e8f578388eed3ap-1,
+    0x1.fffffffffff78p920
+  },
+  { // Entry 531
+    0x1.463a895c4ea5ce4e56e8f578388eed3ap-1,
+    -0x1.fffffffffff78p920
+  },
+  { // Entry 532
+    0x1.3c1a48635cf380c8158d934c4d0dd87cp-1,
+    0x1.fffffffffffd5p995
+  },
+  { // Entry 533
+    0x1.3c1a48635cf380c8158d934c4d0dd87cp-1,
+    -0x1.fffffffffffd5p995
+  },
+  { // Entry 534
+    0x1.91c4e0708bd486217f5fc230f0416220p-1,
+    0x1.fffffffffffe8p720
+  },
+  { // Entry 535
+    0x1.91c4e0708bd486217f5fc230f0416220p-1,
+    -0x1.fffffffffffe8p720
+  },
+  { // Entry 536
+    -0x1.3e15cb849b5ea87bcc583f6344cbcc40p-1,
+    0x1.fffffffffffebp920
+  },
+  { // Entry 537
+    -0x1.3e15cb849b5ea87bcc583f6344cbcc40p-1,
+    -0x1.fffffffffffebp920
+  },
+  { // Entry 538
+    -0x1.816808349b80dd3c22cbe80b4c171d1fp-1,
+    0x1.ffffffffffff1p245
+  },
+  { // Entry 539
+    -0x1.816808349b80dd3c22cbe80b4c171d1fp-1,
+    -0x1.ffffffffffff1p245
+  },
+  { // Entry 540
+    0x1.4699c814c5f075bb0ed9472dfecc50a9p-1,
+    0x1.ffffffffffff4p845
+  },
+  { // Entry 541
+    0x1.4699c814c5f075bb0ed9472dfecc50a9p-1,
+    -0x1.ffffffffffff4p845
+  },
+  { // Entry 542
+    -0x1.815e92b7a2a019e74650a859968e0f29p-1,
+    0x1.ffffffffffff4p1020
+  },
+  { // Entry 543
+    -0x1.815e92b7a2a019e74650a859968e0f29p-1,
+    -0x1.ffffffffffff4p1020
+  },
+  { // Entry 544
+    -0x1.3e8d028153201ed272fc9549725fcb3fp-10,
+    0x1.ffffffffffffcp45
+  },
+  { // Entry 545
+    -0x1.3e8d028153201ed272fc9549725fcb3fp-10,
+    -0x1.ffffffffffffcp45
+  },
+  { // Entry 546
+    0x1.7d6765714c78532d3eb0f2a73c5d6126p-1,
+    0x1.ffffffffffffep105
+  },
+  { // Entry 547
+    0x1.7d6765714c78532d3eb0f2a73c5d6126p-1,
+    -0x1.ffffffffffffep105
+  },
+  { // Entry 548
+    -0x1.f869fb14d2568d67c37c90b0a038b240p-3,
+    0x1.ffffffffffffep480
+  },
+  { // Entry 549
+    -0x1.f869fb14d2568d67c37c90b0a038b240p-3,
+    -0x1.ffffffffffffep480
+  },
+  { // Entry 550
+    -0x1.80a75b369d3c3fd15b6060c6fb98f2d6p-1,
+    0x1.ffffffffffffep970
+  },
+  { // Entry 551
+    -0x1.80a75b369d3c3fd15b6060c6fb98f2d6p-1,
+    -0x1.ffffffffffffep970
+  },
+  { // Entry 552
+    -0x1.9dba69e853bd77fd883be3bb1171df55p-4,
+    0x1.0000000000001p42
+  },
+  { // Entry 553
+    -0x1.9dba69e853bd77fd883be3bb1171df55p-4,
+    -0x1.0000000000001p42
+  },
+  { // Entry 554
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 555
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 556
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 557
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 558
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 559
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 560
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 561
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 562
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1022
+  },
+  { // Entry 563
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 564
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 565
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 566
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 567
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1022
+  },
+  { // Entry 568
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 569
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 570
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 571
+    0x1.ffffff5c28f5cb4c5272061281211120p-1,
+    0x1.999999999999ap-13
+  },
+  { // Entry 572
+    0x1.ffffff5c28f5cb4c5272061281211120p-1,
+    -0x1.999999999999ap-13
+  },
+  { // Entry 573
+    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
+    0x1.999999999999ap-12
+  },
+  { // Entry 574
+    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
+    -0x1.999999999999ap-12
+  },
+  { // Entry 575
+    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
+    0x1.3333333333334p-11
+  },
+  { // Entry 576
+    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
+    -0x1.3333333333334p-11
+  },
+  { // Entry 577
+    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
+    0x1.999999999999ap-11
+  },
+  { // Entry 578
+    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
+    -0x1.999999999999ap-11
+  },
+  { // Entry 579
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    0x1.0p-10
+  },
+  { // Entry 580
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    -0x1.0p-10
+  },
+  { // Entry 581
+    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
+    0x1.3333333333333p-10
+  },
+  { // Entry 582
+    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
+    -0x1.3333333333333p-10
+  },
+  { // Entry 583
+    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
+    0x1.6666666666666p-10
+  },
+  { // Entry 584
+    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
+    -0x1.6666666666666p-10
+  },
+  { // Entry 585
+    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
+    0x1.9999999999999p-10
+  },
+  { // Entry 586
+    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
+    -0x1.9999999999999p-10
+  },
+  { // Entry 587
+    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
+    0x1.cccccccccccccp-10
+  },
+  { // Entry 588
+    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
+    -0x1.cccccccccccccp-10
+  },
+  { // Entry 589
+    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
+    0x1.0666666666666p-7
+  },
+  { // Entry 590
+    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
+    -0x1.0666666666666p-7
+  },
+  { // Entry 591
+    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
+    0x1.cccccccccccccp-7
+  },
+  { // Entry 592
+    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
+    -0x1.cccccccccccccp-7
+  },
+  { // Entry 593
+    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
+    0x1.4999999999999p-6
+  },
+  { // Entry 594
+    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
+    -0x1.4999999999999p-6
+  },
+  { // Entry 595
+    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
+    0x1.accccccccccccp-6
+  },
+  { // Entry 596
+    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
+    -0x1.accccccccccccp-6
+  },
+  { // Entry 597
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    0x1.080p-5
+  },
+  { // Entry 598
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    -0x1.080p-5
+  },
+  { // Entry 599
+    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
+    0x1.399999999999ap-5
+  },
+  { // Entry 600
+    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
+    -0x1.399999999999ap-5
+  },
+  { // Entry 601
+    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
+    0x1.6b33333333334p-5
+  },
+  { // Entry 602
+    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
+    -0x1.6b33333333334p-5
+  },
+  { // Entry 603
+    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
+    0x1.9cccccccccccep-5
+  },
+  { // Entry 604
+    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
+    -0x1.9cccccccccccep-5
+  },
+  { // Entry 605
+    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
+    0x1.ce66666666666p-5
+  },
+  { // Entry 606
+    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
+    -0x1.ce66666666666p-5
+  },
+  { // Entry 607
+    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
+    0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 608
+    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
+    -0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 609
+    0x1.0b5d3802fc7991140168f294eedd7904p-2,
+    0x1.4e7fc4369bdadp0
+  },
+  { // Entry 610
+    0x1.0b5d3802fc7991140168f294eedd7904p-2,
+    -0x1.4e7fc4369bdadp0
+  },
+  { // Entry 611
+    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
+    0x1.edbfa651e9c84p0
+  },
+  { // Entry 612
+    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
+    -0x1.edbfa651e9c84p0
+  },
+  { // Entry 613
+    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
+    0x1.467fc4369bdadp1
+  },
+  { // Entry 614
+    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
+    -0x1.467fc4369bdadp1
+  },
+  { // Entry 615
+    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
+    0x1.961fb54442d18p1
+  },
+  { // Entry 616
+    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
+    -0x1.961fb54442d18p1
+  },
+  { // Entry 617
+    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
+    0x1.e5bfa651e9c83p1
+  },
+  { // Entry 618
+    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
+    -0x1.e5bfa651e9c83p1
+  },
+  { // Entry 619
+    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
+    0x1.1aafcbafc85f7p2
+  },
+  { // Entry 620
+    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
+    -0x1.1aafcbafc85f7p2
+  },
+  { // Entry 621
+    0x1.4894f695dc56bce8b273e5524f181264p-2,
+    0x1.427fc4369bdadp2
+  },
+  { // Entry 622
+    0x1.4894f695dc56bce8b273e5524f181264p-2,
+    -0x1.427fc4369bdadp2
+  },
+  { // Entry 623
+    0x1.a016ea3a692ce0c321b77f168de39122p-1,
+    0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 624
+    0x1.a016ea3a692ce0c321b77f168de39122p-1,
+    -0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 625
+    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
+    0x1.6af2eff0a2896p2
+  },
+  { // Entry 626
+    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
+    -0x1.6af2eff0a2896p2
+  },
+  { // Entry 627
+    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
+    0x1.43c62a9d02414p2
+  },
+  { // Entry 628
+    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
+    -0x1.43c62a9d02414p2
+  },
+  { // Entry 629
+    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
+    0x1.1c99654961f92p2
+  },
+  { // Entry 630
+    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
+    -0x1.1c99654961f92p2
+  },
+  { // Entry 631
+    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
+    0x1.ead93feb8361fp1
+  },
+  { // Entry 632
+    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
+    -0x1.ead93feb8361fp1
+  },
+  { // Entry 633
+    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
+    0x1.9c7fb54442d1ap1
+  },
+  { // Entry 634
+    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
+    -0x1.9c7fb54442d1ap1
+  },
+  { // Entry 635
+    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
+    0x1.4e262a9d02415p1
+  },
+  { // Entry 636
+    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
+    -0x1.4e262a9d02415p1
+  },
+  { // Entry 637
+    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
+    0x1.ff993feb83620p0
+  },
+  { // Entry 638
+    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
+    -0x1.ff993feb83620p0
+  },
+  { // Entry 639
+    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
+    0x1.62e62a9d02416p0
+  },
+  { // Entry 640
+    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
+    -0x1.62e62a9d02416p0
+  },
+  { // Entry 641
+    0x1.6e1061205dd79051c112d30a05097c61p-1,
+    0x1.8c662a9d02419p-1
+  },
+  { // Entry 642
+    0x1.6e1061205dd79051c112d30a05097c61p-1,
+    -0x1.8c662a9d02419p-1
+  },
+  { // Entry 643
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 644
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 645
+    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
+    -0x1.95ec8b9e03d54p0
+  },
+  { // Entry 646
+    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
+    0x1.95ec8b9e03d54p0
+  },
+  { // Entry 647
+    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
+    -0x1.832efa2a435a9p0
+  },
+  { // Entry 648
+    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
+    0x1.832efa2a435a9p0
+  },
+  { // Entry 649
+    0x1.0cab9115640d993082a7343bb5affea2p-3,
+    -0x1.707168b682dfep0
+  },
+  { // Entry 650
+    0x1.0cab9115640d993082a7343bb5affea2p-3,
+    0x1.707168b682dfep0
+  },
+  { // Entry 651
+    0x1.a0723a95492edee5dc98394e45f96d88p-3,
+    -0x1.5db3d742c2653p0
+  },
+  { // Entry 652
+    0x1.a0723a95492edee5dc98394e45f96d88p-3,
+    0x1.5db3d742c2653p0
+  },
+  { // Entry 653
+    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
+    -0x1.4af645cf01ea8p0
+  },
+  { // Entry 654
+    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
+    0x1.4af645cf01ea8p0
+  },
+  { // Entry 655
+    0x1.6043621b13be2ff07085f8278598e566p-2,
+    -0x1.3838b45b416fdp0
+  },
+  { // Entry 656
+    0x1.6043621b13be2ff07085f8278598e566p-2,
+    0x1.3838b45b416fdp0
+  },
+  { // Entry 657
+    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
+    -0x1.257b22e780f52p0
+  },
+  { // Entry 658
+    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
+    0x1.257b22e780f52p0
+  },
+  { // Entry 659
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 660
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 661
+    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
+    -0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 662
+    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
+    0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 663
+    0x1.3805a1882009f2843da808e959f17861p-1,
+    -0x1.d4b87dab670a0p-1
+  },
+  { // Entry 664
+    0x1.3805a1882009f2843da808e959f17861p-1,
+    0x1.d4b87dab670a0p-1
+  },
+  { // Entry 665
+    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
+    -0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 666
+    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
+    0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 667
+    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
+    -0x1.a970fb56ce140p-1
+  },
+  { // Entry 668
+    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
+    0x1.a970fb56ce140p-1
+  },
+  { // Entry 669
+    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
+    -0x1.93cd3a2c81990p-1
+  },
+  { // Entry 670
+    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
+    0x1.93cd3a2c81990p-1
+  },
+  { // Entry 671
+    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
+    -0x1.7e297902351e0p-1
+  },
+  { // Entry 672
+    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
+    0x1.7e297902351e0p-1
+  },
+  { // Entry 673
+    0x1.863a850e438fe029302aba0f5f127616p-1,
+    -0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 674
+    0x1.863a850e438fe029302aba0f5f127616p-1,
+    0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 675
+    0x1.93e2948233fce814439ed51fd2548920p-1,
+    -0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 676
+    0x1.93e2948233fce814439ed51fd2548920p-1,
+    0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 677
+    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
+    -0x1.3d3e35834fad0p-1
+  },
+  { // Entry 678
+    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
+    0x1.3d3e35834fad0p-1
+  },
+  { // Entry 679
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 680
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 681
+    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
+    -0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 682
+    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
+    0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 683
+    0x1.d6c0b125791cffce83e32564712b78c6p-1,
+    -0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 684
+    0x1.d6c0b125791cffce83e32564712b78c6p-1,
+    0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 685
+    0x1.e1960261829858391645bbe12019e58ap-1,
+    -0x1.62b9586ad0a20p-2
+  },
+  { // Entry 686
+    0x1.e1960261829858391645bbe12019e58ap-1,
+    0x1.62b9586ad0a20p-2
+  },
+  { // Entry 687
+    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
+    -0x1.279a74590331ap-2
+  },
+  { // Entry 688
+    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
+    0x1.279a74590331ap-2
+  },
+  { // Entry 689
+    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
+    -0x1.d8f7208e6b829p-3
+  },
+  { // Entry 690
+    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
+    0x1.d8f7208e6b829p-3
+  },
+  { // Entry 691
+    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
+    -0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 692
+    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
+    0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 693
+    0x1.fc97283a424797215f8a8d1967736c9bp-1,
+    -0x1.d8f7208e6b826p-4
+  },
+  { // Entry 694
+    0x1.fc97283a424797215f8a8d1967736c9bp-1,
+    0x1.d8f7208e6b826p-4
+  },
+  { // Entry 695
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 696
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 697
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 698
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 699
+    0x1.fc97283a424795847294654a1d8a08edp-1,
+    0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 700
+    0x1.fc97283a424795847294654a1d8a08edp-1,
+    -0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 701
+    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
+    0x1.62b9586ad0a22p-3
+  },
+  { // Entry 702
+    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
+    -0x1.62b9586ad0a22p-3
+  },
+  { // Entry 703
+    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
+    0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 704
+    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
+    -0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 705
+    0x1.ead07cc6356960546ae634ef62621fb2p-1,
+    0x1.279a74590331cp-2
+  },
+  { // Entry 706
+    0x1.ead07cc6356960546ae634ef62621fb2p-1,
+    -0x1.279a74590331cp-2
+  },
+  { // Entry 707
+    0x1.e1960261829852ca662ca27d518c2fa9p-1,
+    0x1.62b9586ad0a22p-2
+  },
+  { // Entry 708
+    0x1.e1960261829852ca662ca27d518c2fa9p-1,
+    -0x1.62b9586ad0a22p-2
+  },
+  { // Entry 709
+    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
+    0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 710
+    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
+    -0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 711
+    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
+    0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 712
+    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
+    -0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 713
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 714
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 715
+    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
+    0x1.3d3e35834faccp-1
+  },
+  { // Entry 716
+    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
+    -0x1.3d3e35834faccp-1
+  },
+  { // Entry 717
+    0x1.93e2948233fd0f69e3918982148f8265p-1,
+    0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 718
+    0x1.93e2948233fd0f69e3918982148f8265p-1,
+    -0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 719
+    0x1.863a850e43900997e76be80405437377p-1,
+    0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 720
+    0x1.863a850e43900997e76be80405437377p-1,
+    -0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 721
+    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
+    0x1.7e297902351dcp-1
+  },
+  { // Entry 722
+    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
+    -0x1.7e297902351dcp-1
+  },
+  { // Entry 723
+    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
+    0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 724
+    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
+    -0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 725
+    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
+    0x1.a970fb56ce13cp-1
+  },
+  { // Entry 726
+    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
+    -0x1.a970fb56ce13cp-1
+  },
+  { // Entry 727
+    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
+    0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 728
+    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
+    -0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 729
+    0x1.3805a188200a254247f30462c36acf6ap-1,
+    0x1.d4b87dab6709cp-1
+  },
+  { // Entry 730
+    0x1.3805a188200a254247f30462c36acf6ap-1,
+    -0x1.d4b87dab6709cp-1
+  },
+  { // Entry 731
+    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
+    0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 732
+    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
+    -0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 733
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 734
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 735
+    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
+    0x1.257b22e780f56p0
+  },
+  { // Entry 736
+    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
+    -0x1.257b22e780f56p0
+  },
+  { // Entry 737
+    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
+    0x1.3838b45b41701p0
+  },
+  { // Entry 738
+    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
+    -0x1.3838b45b41701p0
+  },
+  { // Entry 739
+    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
+    0x1.4af645cf01eacp0
+  },
+  { // Entry 740
+    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
+    -0x1.4af645cf01eacp0
+  },
+  { // Entry 741
+    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
+    0x1.5db3d742c2657p0
+  },
+  { // Entry 742
+    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
+    -0x1.5db3d742c2657p0
+  },
+  { // Entry 743
+    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
+    0x1.707168b682e02p0
+  },
+  { // Entry 744
+    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
+    -0x1.707168b682e02p0
+  },
+  { // Entry 745
+    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
+    0x1.832efa2a435adp0
+  },
+  { // Entry 746
+    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
+    -0x1.832efa2a435adp0
+  },
+  { // Entry 747
+    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
+    0x1.95ec8b9e03d58p0
+  },
+  { // Entry 748
+    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
+    -0x1.95ec8b9e03d58p0
+  },
+  { // Entry 749
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 750
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 751
+    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
+    0x1.04aff6d330942p0
+  },
+  { // Entry 752
+    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
+    -0x1.04aff6d330942p0
+  },
+  { // Entry 753
+    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
+    0x1.04b09e98dcdb4p0
+  },
+  { // Entry 754
+    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
+    -0x1.04b09e98dcdb4p0
+  },
+  { // Entry 755
+    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
+    0x1.04b1465e89226p0
+  },
+  { // Entry 756
+    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
+    -0x1.04b1465e89226p0
+  },
+  { // Entry 757
+    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
+    0x1.04b1ee2435698p0
+  },
+  { // Entry 758
+    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
+    -0x1.04b1ee2435698p0
+  },
+  { // Entry 759
+    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
+    0x1.04b295e9e1b0ap0
+  },
+  { // Entry 760
+    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
+    -0x1.04b295e9e1b0ap0
+  },
+  { // Entry 761
+    0x1.0cadb27753d65785e06d0e464006149ep-1,
+    0x1.04b33daf8df7cp0
+  },
+  { // Entry 762
+    0x1.0cadb27753d65785e06d0e464006149ep-1,
+    -0x1.04b33daf8df7cp0
+  },
+  { // Entry 763
+    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
+    0x1.04b3e5753a3eep0
+  },
+  { // Entry 764
+    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
+    -0x1.04b3e5753a3eep0
+  },
+  { // Entry 765
+    0x1.0cab7733099df738645574cd482ef4b2p-1,
+    0x1.04b48d3ae6860p0
+  },
+  { // Entry 766
+    0x1.0cab7733099df738645574cd482ef4b2p-1,
+    -0x1.04b48d3ae6860p0
+  },
+  { // Entry 767
+    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
+    0x1.04b5350092ccfp0
+  },
+  { // Entry 768
+    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
+    -0x1.04b5350092ccfp0
+  },
+  { // Entry 769
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 770
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 771
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 772
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 773
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 774
+    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
+    0x1.279a74590331bp-1
+  },
+  { // Entry 775
+    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
+    -0x1.279a74590331bp-1
+  },
+  { // Entry 776
+    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
+    0x1.279a74590331cp-1
+  },
+  { // Entry 777
+    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
+    -0x1.279a74590331cp-1
+  },
+  { // Entry 778
+    0x1.ad02c771c35ec478d333803762f450d5p-1,
+    0x1.279a74590331dp-1
+  },
+  { // Entry 779
+    0x1.ad02c771c35ec478d333803762f450d5p-1,
+    -0x1.279a74590331dp-1
+  },
+  { // Entry 780
+    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
+    0x1.bb67ae8584ca9p0
+  },
+  { // Entry 781
+    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
+    -0x1.bb67ae8584ca9p0
+  },
+  { // Entry 782
+    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
+    0x1.bb67ae8584caap0
+  },
+  { // Entry 783
+    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
+    -0x1.bb67ae8584caap0
+  },
+  { // Entry 784
+    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
+    0x1.bb67ae8584cabp0
+  },
+  { // Entry 785
+    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
+    -0x1.bb67ae8584cabp0
+  },
+  { // Entry 786
+    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
+    0x1.bffffffffffffp-2
+  },
+  { // Entry 787
+    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
+    -0x1.bffffffffffffp-2
+  },
+  { // Entry 788
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    0x1.cp-2
+  },
+  { // Entry 789
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    -0x1.cp-2
+  },
+  { // Entry 790
+    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
+    0x1.c000000000001p-2
+  },
+  { // Entry 791
+    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
+    -0x1.c000000000001p-2
+  },
+  { // Entry 792
+    0x1.8bb105a5dc90104051d08cb965631807p-1,
+    0x1.5ffffffffffffp-1
+  },
+  { // Entry 793
+    0x1.8bb105a5dc90104051d08cb965631807p-1,
+    -0x1.5ffffffffffffp-1
+  },
+  { // Entry 794
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    0x1.6p-1
+  },
+  { // Entry 795
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    -0x1.6p-1
+  },
+  { // Entry 796
+    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
+    0x1.6000000000001p-1
+  },
+  { // Entry 797
+    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
+    -0x1.6000000000001p-1
+  },
+  { // Entry 798
+    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
+    0x1.2ffffffffffffp0
+  },
+  { // Entry 799
+    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
+    -0x1.2ffffffffffffp0
+  },
+  { // Entry 800
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    0x1.3p0
+  },
+  { // Entry 801
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    -0x1.3p0
+  },
+  { // Entry 802
+    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
+    0x1.3000000000001p0
+  },
+  { // Entry 803
+    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
+    -0x1.3000000000001p0
+  },
+  { // Entry 804
+    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
+    0x1.37fffffffffffp1
+  },
+  { // Entry 805
+    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
+    -0x1.37fffffffffffp1
+  },
+  { // Entry 806
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    0x1.380p1
+  },
+  { // Entry 807
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    -0x1.380p1
+  },
+  { // Entry 808
+    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
+    0x1.3800000000001p1
+  },
+  { // Entry 809
+    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
+    -0x1.3800000000001p1
+  },
+  { // Entry 810
+    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
+    0x1.069c8b46b3792p-4
+  },
+  { // Entry 811
+    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
+    -0x1.069c8b46b3792p-4
+  },
+  { // Entry 812
+    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
+    0x1.069c8b46b3792p-3
+  },
+  { // Entry 813
+    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
+    -0x1.069c8b46b3792p-3
+  },
+  { // Entry 814
+    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
+    0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 815
+    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
+    -0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 816
+    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
+    0x1.069c8b46b3792p-2
+  },
+  { // Entry 817
+    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
+    -0x1.069c8b46b3792p-2
+  },
+  { // Entry 818
+    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
+    0x1.4843ae1860576p-2
+  },
+  { // Entry 819
+    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
+    -0x1.4843ae1860576p-2
+  },
+  { // Entry 820
+    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
+    0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 821
+    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
+    -0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 822
+    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
+    0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 823
+    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
+    -0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 824
+    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
+    0x1.069c8b46b3791p-1
+  },
+  { // Entry 825
+    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
+    -0x1.069c8b46b3791p-1
+  },
+  { // Entry 826
+    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
+    0x1.27701caf89e83p-1
+  },
+  { // Entry 827
+    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
+    -0x1.27701caf89e83p-1
+  },
+  { // Entry 828
+    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
+    0x1.4843ae1860575p-1
+  },
+  { // Entry 829
+    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
+    -0x1.4843ae1860575p-1
+  },
+  { // Entry 830
+    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
+    0x1.69173f8136c67p-1
+  },
+  { // Entry 831
+    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
+    -0x1.69173f8136c67p-1
+  },
+  { // Entry 832
+    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
+    0x1.89ead0ea0d359p-1
+  },
+  { // Entry 833
+    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
+    -0x1.89ead0ea0d359p-1
+  },
+  { // Entry 834
+    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
+    0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 835
+    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
+    -0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 836
+    0x1.3f3a0e28bedd40445858f823e150264bp-1,
+    0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 837
+    0x1.3f3a0e28bedd40445858f823e150264bp-1,
+    -0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 838
+    0x1.24ec799171642dbd24d259005822bd25p-1,
+    0x1.ec6585249082fp-1
+  },
+  { // Entry 839
+    0x1.24ec799171642dbd24d259005822bd25p-1,
+    -0x1.ec6585249082fp-1
+  },
+  { // Entry 840
+    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
+    0x1.069c8b46b3791p0
+  },
+  { // Entry 841
+    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
+    -0x1.069c8b46b3791p0
+  },
+  { // Entry 842
+    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
+    0x1.170653fb1eb0ap0
+  },
+  { // Entry 843
+    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
+    -0x1.170653fb1eb0ap0
+  },
+  { // Entry 844
+    0x1.9e7f8652b47582afd29744293170c07cp-2,
+    0x1.27701caf89e83p0
+  },
+  { // Entry 845
+    0x1.9e7f8652b47582afd29744293170c07cp-2,
+    -0x1.27701caf89e83p0
+  },
+  { // Entry 846
+    0x1.61a76077aee07bb349ca76cf700913d1p-2,
+    0x1.37d9e563f51fcp0
+  },
+  { // Entry 847
+    0x1.61a76077aee07bb349ca76cf700913d1p-2,
+    -0x1.37d9e563f51fcp0
+  },
+  { // Entry 848
+    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
+    0x1.4843ae1860575p0
+  },
+  { // Entry 849
+    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
+    -0x1.4843ae1860575p0
+  },
+  { // Entry 850
+    0x1.c7b90e3024593da8449963cfe08dde85p-3,
+    0x1.58ad76cccb8eep0
+  },
+  { // Entry 851
+    0x1.c7b90e3024593da8449963cfe08dde85p-3,
+    -0x1.58ad76cccb8eep0
+  },
+  { // Entry 852
+    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
+    0x1.69173f8136c67p0
+  },
+  { // Entry 853
+    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
+    -0x1.69173f8136c67p0
+  },
+  { // Entry 854
+    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
+    0x1.79810835a1fe0p0
+  },
+  { // Entry 855
+    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
+    -0x1.79810835a1fe0p0
+  },
+  { // Entry 856
+    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
+    0x1.89ead0ea0d359p0
+  },
+  { // Entry 857
+    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
+    -0x1.89ead0ea0d359p0
+  },
+  { // Entry 858
+    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
+    0x1.9a54999e786d2p0
+  },
+  { // Entry 859
+    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
+    -0x1.9a54999e786d2p0
+  },
+  { // Entry 860
+    -0x1.894f70befbb41417dff843e81fac388bp-4,
+    0x1.aabe6252e3a4bp0
+  },
+  { // Entry 861
+    -0x1.894f70befbb41417dff843e81fac388bp-4,
+    -0x1.aabe6252e3a4bp0
+  },
+  { // Entry 862
+    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
+    0x1.bb282b074edc4p0
+  },
+  { // Entry 863
+    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
+    -0x1.bb282b074edc4p0
+  },
+  { // Entry 864
+    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
+    0x1.cb91f3bbba13dp0
+  },
+  { // Entry 865
+    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
+    -0x1.cb91f3bbba13dp0
+  },
+  { // Entry 866
+    -0x1.235b331d8f7339841a517312d0d347fbp-2,
+    0x1.dbfbbc70254b6p0
+  },
+  { // Entry 867
+    -0x1.235b331d8f7339841a517312d0d347fbp-2,
+    -0x1.dbfbbc70254b6p0
+  },
+  { // Entry 868
+    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
+    0x1.ec6585249082fp0
+  },
+  { // Entry 869
+    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
+    -0x1.ec6585249082fp0
+  },
+  { // Entry 870
+    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
+    0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 871
+    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
+    -0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 872
+    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
+    0x1.069c8b46b3791p1
+  },
+  { // Entry 873
+    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
+    -0x1.069c8b46b3791p1
+  },
+  { // Entry 874
+    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
+    0x1.0ed16fa0e914ep1
+  },
+  { // Entry 875
+    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
+    -0x1.0ed16fa0e914ep1
+  },
+  { // Entry 876
+    -0x1.24ec79917163dda65afd8109f59cb465p-1,
+    0x1.170653fb1eb0bp1
+  },
+  { // Entry 877
+    -0x1.24ec79917163dda65afd8109f59cb465p-1,
+    -0x1.170653fb1eb0bp1
+  },
+  { // Entry 878
+    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
+    0x1.1f3b3855544c8p1
+  },
+  { // Entry 879
+    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
+    -0x1.1f3b3855544c8p1
+  },
+  { // Entry 880
+    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
+    0x1.27701caf89e85p1
+  },
+  { // Entry 881
+    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
+    -0x1.27701caf89e85p1
+  },
+  { // Entry 882
+    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
+    0x1.2fa50109bf842p1
+  },
+  { // Entry 883
+    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
+    -0x1.2fa50109bf842p1
+  },
+  { // Entry 884
+    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
+    0x1.37d9e563f51ffp1
+  },
+  { // Entry 885
+    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
+    -0x1.37d9e563f51ffp1
+  },
+  { // Entry 886
+    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
+    0x1.400ec9be2abbcp1
+  },
+  { // Entry 887
+    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
+    -0x1.400ec9be2abbcp1
+  },
+  { // Entry 888
+    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
+    0x1.4843ae1860579p1
+  },
+  { // Entry 889
+    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
+    -0x1.4843ae1860579p1
+  },
+  { // Entry 890
+    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
+    0x1.5078927295f36p1
+  },
+  { // Entry 891
+    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
+    -0x1.5078927295f36p1
+  },
+  { // Entry 892
+    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
+    0x1.58ad76cccb8f3p1
+  },
+  { // Entry 893
+    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
+    -0x1.58ad76cccb8f3p1
+  },
+  { // Entry 894
+    -0x1.da94d54dd4c0cedccd73684994422740p-1,
+    0x1.60e25b27012b0p1
+  },
+  { // Entry 895
+    -0x1.da94d54dd4c0cedccd73684994422740p-1,
+    -0x1.60e25b27012b0p1
+  },
+  { // Entry 896
+    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
+    0x1.69173f8136c6dp1
+  },
+  { // Entry 897
+    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
+    -0x1.69173f8136c6dp1
+  },
+  { // Entry 898
+    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
+    0x1.714c23db6c62ap1
+  },
+  { // Entry 899
+    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
+    -0x1.714c23db6c62ap1
+  },
+  { // Entry 900
+    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
+    0x1.79810835a1fe7p1
+  },
+  { // Entry 901
+    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
+    -0x1.79810835a1fe7p1
+  },
+  { // Entry 902
+    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
+    0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 903
+    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
+    -0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 904
+    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
+    0x1.89ead0ea0d35bp1
+  },
+  { // Entry 905
+    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
+    -0x1.89ead0ea0d35bp1
+  },
+  { // Entry 906
+    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
+    -0x1.81b5ec8fd799fp2
+  },
+  { // Entry 907
+    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
+    0x1.81b5ec8fd799fp2
+  },
+  { // Entry 908
+    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
+    -0x1.714c23db6c626p2
+  },
+  { // Entry 909
+    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
+    0x1.714c23db6c626p2
+  },
+  { // Entry 910
+    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
+    -0x1.60e25b27012adp2
+  },
+  { // Entry 911
+    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
+    0x1.60e25b27012adp2
+  },
+  { // Entry 912
+    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
+    -0x1.5078927295f34p2
+  },
+  { // Entry 913
+    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
+    0x1.5078927295f34p2
+  },
+  { // Entry 914
+    0x1.235b331d8f7487ce2db97819fae7777cp-2,
+    -0x1.400ec9be2abbbp2
+  },
+  { // Entry 915
+    0x1.235b331d8f7487ce2db97819fae7777cp-2,
+    0x1.400ec9be2abbbp2
+  },
+  { // Entry 916
+    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
+    -0x1.2fa50109bf842p2
+  },
+  { // Entry 917
+    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
+    0x1.2fa50109bf842p2
+  },
+  { // Entry 918
+    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
+    -0x1.1f3b3855544c9p2
+  },
+  { // Entry 919
+    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
+    0x1.1f3b3855544c9p2
+  },
+  { // Entry 920
+    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
+    -0x1.0ed16fa0e9150p2
+  },
+  { // Entry 921
+    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
+    0x1.0ed16fa0e9150p2
+  },
+  { // Entry 922
+    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
+    -0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 923
+    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
+    0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 924
+    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
+    -0x1.dbfbbc70254bcp1
+  },
+  { // Entry 925
+    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
+    0x1.dbfbbc70254bcp1
+  },
+  { // Entry 926
+    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
+    -0x1.bb282b074edcap1
+  },
+  { // Entry 927
+    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
+    0x1.bb282b074edcap1
+  },
+  { // Entry 928
+    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
+    -0x1.9a54999e786d8p1
+  },
+  { // Entry 929
+    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
+    0x1.9a54999e786d8p1
+  },
+  { // Entry 930
+    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
+    -0x1.79810835a1fe6p1
+  },
+  { // Entry 931
+    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
+    0x1.79810835a1fe6p1
+  },
+  { // Entry 932
+    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
+    -0x1.58ad76cccb8f4p1
+  },
+  { // Entry 933
+    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
+    0x1.58ad76cccb8f4p1
+  },
+  { // Entry 934
+    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
+    -0x1.37d9e563f5202p1
+  },
+  { // Entry 935
+    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
+    0x1.37d9e563f5202p1
+  },
+  { // Entry 936
+    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
+    -0x1.170653fb1eb10p1
+  },
+  { // Entry 937
+    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
+    0x1.170653fb1eb10p1
+  },
+  { // Entry 938
+    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
+    -0x1.ec6585249083cp0
+  },
+  { // Entry 939
+    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
+    0x1.ec6585249083cp0
+  },
+  { // Entry 940
+    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
+    -0x1.aabe6252e3a58p0
+  },
+  { // Entry 941
+    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
+    0x1.aabe6252e3a58p0
+  },
+  { // Entry 942
+    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
+    -0x1.69173f8136c74p0
+  },
+  { // Entry 943
+    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
+    0x1.69173f8136c74p0
+  },
+  { // Entry 944
+    0x1.9e7f8652b47289e53fccd54955db4552p-2,
+    -0x1.27701caf89e90p0
+  },
+  { // Entry 945
+    0x1.9e7f8652b47289e53fccd54955db4552p-2,
+    0x1.27701caf89e90p0
+  },
+  { // Entry 946
+    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
+    -0x1.cb91f3bbba157p-1
+  },
+  { // Entry 947
+    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
+    0x1.cb91f3bbba157p-1
+  },
+  { // Entry 948
+    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
+    -0x1.4843ae186058ep-1
+  },
+  { // Entry 949
+    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
+    0x1.4843ae186058ep-1
+  },
+  { // Entry 950
+    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
+    -0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 951
+    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
+    0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 952
+    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
+    -0x1.069c8b46b37f0p-3
+  },
+  { // Entry 953
+    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
+    0x1.069c8b46b37f0p-3
+  },
+  { // Entry 954
+    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
+    0x1.069c8b46b3734p-3
+  },
+  { // Entry 955
+    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
+    -0x1.069c8b46b3734p-3
+  },
+  { // Entry 956
+    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
+    0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 957
+    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
+    -0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 958
+    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
+    0x1.4843ae186055fp-1
+  },
+  { // Entry 959
+    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
+    -0x1.4843ae186055fp-1
+  },
+  { // Entry 960
+    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
+    0x1.cb91f3bbba128p-1
+  },
+  { // Entry 961
+    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
+    -0x1.cb91f3bbba128p-1
+  },
+  { // Entry 962
+    0x1.9e7f8652b478066eec563f835097f148p-2,
+    0x1.27701caf89e78p0
+  },
+  { // Entry 963
+    0x1.9e7f8652b478066eec563f835097f148p-2,
+    -0x1.27701caf89e78p0
+  },
+  { // Entry 964
+    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
+    0x1.69173f8136c5cp0
+  },
+  { // Entry 965
+    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
+    -0x1.69173f8136c5cp0
+  },
+  { // Entry 966
+    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
+    0x1.aabe6252e3a40p0
+  },
+  { // Entry 967
+    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
+    -0x1.aabe6252e3a40p0
+  },
+  { // Entry 968
+    -0x1.61a76077aedc99952438421f820a2befp-2,
+    0x1.ec65852490824p0
+  },
+  { // Entry 969
+    -0x1.61a76077aedc99952438421f820a2befp-2,
+    -0x1.ec65852490824p0
+  },
+  { // Entry 970
+    -0x1.24ec799171626e36709cfcf7c7752332p-1,
+    0x1.170653fb1eb04p1
+  },
+  { // Entry 971
+    -0x1.24ec799171626e36709cfcf7c7752332p-1,
+    -0x1.170653fb1eb04p1
+  },
+  { // Entry 972
+    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
+    0x1.37d9e563f51f6p1
+  },
+  { // Entry 973
+    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
+    -0x1.37d9e563f51f6p1
+  },
+  { // Entry 974
+    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
+    0x1.58ad76cccb8e8p1
+  },
+  { // Entry 975
+    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
+    -0x1.58ad76cccb8e8p1
+  },
+  { // Entry 976
+    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
+    0x1.79810835a1fdap1
+  },
+  { // Entry 977
+    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
+    -0x1.79810835a1fdap1
+  },
+  { // Entry 978
+    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
+    0x1.9a54999e786ccp1
+  },
+  { // Entry 979
+    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
+    -0x1.9a54999e786ccp1
+  },
+  { // Entry 980
+    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
+    0x1.bb282b074edbep1
+  },
+  { // Entry 981
+    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
+    -0x1.bb282b074edbep1
+  },
+  { // Entry 982
+    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
+    0x1.dbfbbc70254b0p1
+  },
+  { // Entry 983
+    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
+    -0x1.dbfbbc70254b0p1
+  },
+  { // Entry 984
+    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
+    0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 985
+    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
+    -0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 986
+    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
+    0x1.0ed16fa0e914ap2
+  },
+  { // Entry 987
+    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
+    -0x1.0ed16fa0e914ap2
+  },
+  { // Entry 988
+    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
+    0x1.1f3b3855544c3p2
+  },
+  { // Entry 989
+    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
+    -0x1.1f3b3855544c3p2
+  },
+  { // Entry 990
+    0x1.069107ae9302caf2068b48842afdf051p-5,
+    0x1.2fa50109bf83cp2
+  },
+  { // Entry 991
+    0x1.069107ae9302caf2068b48842afdf051p-5,
+    -0x1.2fa50109bf83cp2
+  },
+  { // Entry 992
+    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
+    0x1.400ec9be2abb5p2
+  },
+  { // Entry 993
+    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
+    -0x1.400ec9be2abb5p2
+  },
+  { // Entry 994
+    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
+    0x1.5078927295f2ep2
+  },
+  { // Entry 995
+    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
+    -0x1.5078927295f2ep2
+  },
+  { // Entry 996
+    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
+    0x1.60e25b27012a7p2
+  },
+  { // Entry 997
+    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
+    -0x1.60e25b27012a7p2
+  },
+  { // Entry 998
+    0x1.be1d7c3534c280dab43dced670330b63p-1,
+    0x1.714c23db6c620p2
+  },
+  { // Entry 999
+    0x1.be1d7c3534c280dab43dced670330b63p-1,
+    -0x1.714c23db6c620p2
+  },
+  { // Entry 1000
+    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
+    0x1.81b5ec8fd7999p2
+  },
+  { // Entry 1001
+    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
+    -0x1.81b5ec8fd7999p2
+  },
+  { // Entry 1002
+    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
+    0x1.effffffffffffp-5
+  },
+  { // Entry 1003
+    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
+    -0x1.effffffffffffp-5
+  },
+  { // Entry 1004
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    0x1.fp-5
+  },
+  { // Entry 1005
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    -0x1.fp-5
+  },
+  { // Entry 1006
+    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
+    0x1.f000000000001p-5
+  },
+  { // Entry 1007
+    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
+    -0x1.f000000000001p-5
+  },
+  { // Entry 1008
+    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
+    0x1.f7fffffffffffp-4
+  },
+  { // Entry 1009
+    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
+    -0x1.f7fffffffffffp-4
+  },
+  { // Entry 1010
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    0x1.f80p-4
+  },
+  { // Entry 1011
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    -0x1.f80p-4
+  },
+  { // Entry 1012
+    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
+    0x1.f800000000001p-4
+  },
+  { // Entry 1013
+    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
+    -0x1.f800000000001p-4
+  },
+  { // Entry 1014
+    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
+    0x1.4bfffffffffffp-3
+  },
+  { // Entry 1015
+    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
+    -0x1.4bfffffffffffp-3
+  },
+  { // Entry 1016
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    0x1.4c0p-3
+  },
+  { // Entry 1017
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    -0x1.4c0p-3
+  },
+  { // Entry 1018
+    0x1.f94984b2552e189ca658c51c42e907cep-1,
+    0x1.4c00000000001p-3
+  },
+  { // Entry 1019
+    0x1.f94984b2552e189ca658c51c42e907cep-1,
+    -0x1.4c00000000001p-3
+  },
+  { // Entry 1020
+    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
+    0x1.3333333333332p-2
+  },
+  { // Entry 1021
+    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
+    -0x1.3333333333332p-2
+  },
+  { // Entry 1022
+    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
+    0x1.3333333333333p-2
+  },
+  { // Entry 1023
+    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
+    -0x1.3333333333333p-2
+  },
+  { // Entry 1024
+    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
+    0x1.3333333333334p-2
+  },
+  { // Entry 1025
+    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 1026
+    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
+    0x1.594317acc4ef8p-1
+  },
+  { // Entry 1027
+    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
+    -0x1.594317acc4ef8p-1
+  },
+  { // Entry 1028
+    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
+    0x1.594317acc4ef9p-1
+  },
+  { // Entry 1029
+    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
+    -0x1.594317acc4ef9p-1
+  },
+  { // Entry 1030
+    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
+    0x1.594317acc4efap-1
+  },
+  { // Entry 1031
+    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
+    -0x1.594317acc4efap-1
+  },
+  { // Entry 1032
+    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
+    0x1.8ffffffffffffp-1
+  },
+  { // Entry 1033
+    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
+    -0x1.8ffffffffffffp-1
+  },
+  { // Entry 1034
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    0x1.9p-1
+  },
+  { // Entry 1035
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    -0x1.9p-1
+  },
+  { // Entry 1036
+    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
+    0x1.9000000000001p-1
+  },
+  { // Entry 1037
+    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
+    -0x1.9000000000001p-1
+  },
+  { // Entry 1038
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 1039
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 1040
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 1041
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 1042
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 1043
+    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
+    0x1.921fb54442d17p-5
+  },
+  { // Entry 1044
+    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
+    -0x1.921fb54442d17p-5
+  },
+  { // Entry 1045
+    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
+    0x1.921fb54442d18p-5
+  },
+  { // Entry 1046
+    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
+    -0x1.921fb54442d18p-5
+  },
+  { // Entry 1047
+    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
+    0x1.921fb54442d19p-5
+  },
+  { // Entry 1048
+    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
+    -0x1.921fb54442d19p-5
+  },
+  { // Entry 1049
+    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
+    0x1.921fb54442d17p-4
+  },
+  { // Entry 1050
+    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
+    -0x1.921fb54442d17p-4
+  },
+  { // Entry 1051
+    0x1.fd88da3d125259ee594b5705767ab649p-1,
+    0x1.921fb54442d18p-4
+  },
+  { // Entry 1052
+    0x1.fd88da3d125259ee594b5705767ab649p-1,
+    -0x1.921fb54442d18p-4
+  },
+  { // Entry 1053
+    0x1.fd88da3d125259bc29fddeb20e228056p-1,
+    0x1.921fb54442d19p-4
+  },
+  { // Entry 1054
+    0x1.fd88da3d125259bc29fddeb20e228056p-1,
+    -0x1.921fb54442d19p-4
+  },
+  { // Entry 1055
+    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
+    0x1.921fb54442d17p-3
+  },
+  { // Entry 1056
+    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
+    -0x1.921fb54442d17p-3
+  },
+  { // Entry 1057
+    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
+    0x1.921fb54442d18p-3
+  },
+  { // Entry 1058
+    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
+    -0x1.921fb54442d18p-3
+  },
+  { // Entry 1059
+    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
+    0x1.921fb54442d19p-3
+  },
+  { // Entry 1060
+    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
+    -0x1.921fb54442d19p-3
+  },
+  { // Entry 1061
+    0x1.d906bcf328d46672d9c1a865898e5966p-1,
+    0x1.921fb54442d17p-2
+  },
+  { // Entry 1062
+    0x1.d906bcf328d46672d9c1a865898e5966p-1,
+    -0x1.921fb54442d17p-2
+  },
+  { // Entry 1063
+    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
+    0x1.921fb54442d18p-2
+  },
+  { // Entry 1064
+    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
+    -0x1.921fb54442d18p-2
+  },
+  { // Entry 1065
+    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
+    0x1.921fb54442d19p-2
+  },
+  { // Entry 1066
+    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
+    -0x1.921fb54442d19p-2
+  },
+  { // Entry 1067
+    0x1.6a09e667f3bcd777b6461376ab523242p-1,
+    0x1.921fb54442d17p-1
+  },
+  { // Entry 1068
+    0x1.6a09e667f3bcd777b6461376ab523242p-1,
+    -0x1.921fb54442d17p-1
+  },
+  { // Entry 1069
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 1070
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 1071
+    0x1.6a09e667f3bcc0d717df943adef39253p-1,
+    0x1.921fb54442d19p-1
+  },
+  { // Entry 1072
+    0x1.6a09e667f3bcc0d717df943adef39253p-1,
+    -0x1.921fb54442d19p-1
+  },
+  { // Entry 1073
+    0x1.469898cc51701b839a252049c0b8b50bp-52,
+    0x1.921fb54442d17p0
+  },
+  { // Entry 1074
+    0x1.469898cc51701b839a252049c0b8b50bp-52,
+    -0x1.921fb54442d17p0
+  },
+  { // Entry 1075
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 1076
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 1077
+    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
+    0x1.921fb54442d19p0
+  },
+  { // Entry 1078
+    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
+    -0x1.921fb54442d19p0
+  },
+  { // Entry 1079
+    -0x1.fffffffffffffffffffffffff97d5bffp-1,
+    0x1.921fb54442d17p1
+  },
+  { // Entry 1080
+    -0x1.fffffffffffffffffffffffff97d5bffp-1,
+    -0x1.921fb54442d17p1
+  },
+  { // Entry 1081
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 1082
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 1083
+    -0x1.fffffffffffffffffffffffffde6e58cp-1,
+    0x1.921fb54442d19p1
+  },
+  { // Entry 1084
+    -0x1.fffffffffffffffffffffffffde6e58cp-1,
+    -0x1.921fb54442d19p1
+  },
+  { // Entry 1085
+    0x1.ffffffffffffffffffffffffe5f56ffep-1,
+    0x1.921fb54442d17p2
+  },
+  { // Entry 1086
+    0x1.ffffffffffffffffffffffffe5f56ffep-1,
+    -0x1.921fb54442d17p2
+  },
+  { // Entry 1087
+    0x1.fffffffffffffffffffffffffec88317p-1,
+    0x1.921fb54442d18p2
+  },
+  { // Entry 1088
+    0x1.fffffffffffffffffffffffffec88317p-1,
+    -0x1.921fb54442d18p2
+  },
+  { // Entry 1089
+    0x1.fffffffffffffffffffffffff79b9631p-1,
+    0x1.921fb54442d19p2
+  },
+  { // Entry 1090
+    0x1.fffffffffffffffffffffffff79b9631p-1,
+    -0x1.921fb54442d19p2
+  },
+  { // Entry 1091
+    0x1.ffffffffffffffffffffffff97d5bff8p-1,
+    0x1.921fb54442d17p3
+  },
+  { // Entry 1092
+    0x1.ffffffffffffffffffffffff97d5bff8p-1,
+    -0x1.921fb54442d17p3
+  },
+  { // Entry 1093
+    0x1.fffffffffffffffffffffffffb220c5ep-1,
+    0x1.921fb54442d18p3
+  },
+  { // Entry 1094
+    0x1.fffffffffffffffffffffffffb220c5ep-1,
+    -0x1.921fb54442d18p3
+  },
+  { // Entry 1095
+    0x1.ffffffffffffffffffffffffde6e58c4p-1,
+    0x1.921fb54442d19p3
+  },
+  { // Entry 1096
+    0x1.ffffffffffffffffffffffffde6e58c4p-1,
+    -0x1.921fb54442d19p3
+  },
+  { // Entry 1097
+    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
+    0x1.921fb54442d17p4
+  },
+  { // Entry 1098
+    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
+    -0x1.921fb54442d17p4
+  },
+  { // Entry 1099
+    0x1.ffffffffffffffffffffffffec88317ap-1,
+    0x1.921fb54442d18p4
+  },
+  { // Entry 1100
+    0x1.ffffffffffffffffffffffffec88317ap-1,
+    -0x1.921fb54442d18p4
+  },
+  { // Entry 1101
+    0x1.ffffffffffffffffffffffff79b96313p-1,
+    0x1.921fb54442d19p4
+  },
+  { // Entry 1102
+    0x1.ffffffffffffffffffffffff79b96313p-1,
+    -0x1.921fb54442d19p4
+  },
+  { // Entry 1103
+    0x1.fffffffffffffffffffffff97d5bff87p-1,
+    0x1.921fb54442d17p5
+  },
+  { // Entry 1104
+    0x1.fffffffffffffffffffffff97d5bff87p-1,
+    -0x1.921fb54442d17p5
+  },
+  { // Entry 1105
+    0x1.ffffffffffffffffffffffffb220c5e9p-1,
+    0x1.921fb54442d18p5
+  },
+  { // Entry 1106
+    0x1.ffffffffffffffffffffffffb220c5e9p-1,
+    -0x1.921fb54442d18p5
+  },
+  { // Entry 1107
+    0x1.fffffffffffffffffffffffde6e58c4cp-1,
+    0x1.921fb54442d19p5
+  },
+  { // Entry 1108
+    0x1.fffffffffffffffffffffffde6e58c4cp-1,
+    -0x1.921fb54442d19p5
+  },
+  { // Entry 1109
+    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
+    0x1.921fb54442d17p6
+  },
+  { // Entry 1110
+    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
+    -0x1.921fb54442d17p6
+  },
+  { // Entry 1111
+    0x1.fffffffffffffffffffffffec88317a7p-1,
+    0x1.921fb54442d18p6
+  },
+  { // Entry 1112
+    0x1.fffffffffffffffffffffffec88317a7p-1,
+    -0x1.921fb54442d18p6
+  },
+  { // Entry 1113
+    0x1.fffffffffffffffffffffff79b963131p-1,
+    0x1.921fb54442d19p6
+  },
+  { // Entry 1114
+    0x1.fffffffffffffffffffffff79b963131p-1,
+    -0x1.921fb54442d19p6
+  },
+  { // Entry 1115
+    0x1.ffffffffffffffffffffff97d5bff874p-1,
+    0x1.921fb54442d17p7
+  },
+  { // Entry 1116
+    0x1.ffffffffffffffffffffff97d5bff874p-1,
+    -0x1.921fb54442d17p7
+  },
+  { // Entry 1117
+    0x1.fffffffffffffffffffffffb220c5e9dp-1,
+    0x1.921fb54442d18p7
+  },
+  { // Entry 1118
+    0x1.fffffffffffffffffffffffb220c5e9dp-1,
+    -0x1.921fb54442d18p7
+  },
+  { // Entry 1119
+    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
+    0x1.921fb54442d19p7
+  },
+  { // Entry 1120
+    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
+    -0x1.921fb54442d19p7
+  },
+  { // Entry 1121
+    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
+    0x1.2d97c7f3321d1p1
+  },
+  { // Entry 1122
+    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
+    -0x1.2d97c7f3321d1p1
+  },
+  { // Entry 1123
+    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
+    0x1.2d97c7f3321d2p1
+  },
+  { // Entry 1124
+    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
+    -0x1.2d97c7f3321d2p1
+  },
+  { // Entry 1125
+    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
+    0x1.2d97c7f3321d3p1
+  },
+  { // Entry 1126
+    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
+    -0x1.2d97c7f3321d3p1
+  },
+  { // Entry 1127
+    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
+    0x1.f6a7a2955385dp1
+  },
+  { // Entry 1128
+    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
+    -0x1.f6a7a2955385dp1
+  },
+  { // Entry 1129
+    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
+    0x1.f6a7a2955385ep1
+  },
+  { // Entry 1130
+    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
+    -0x1.f6a7a2955385ep1
+  },
+  { // Entry 1131
+    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
+    0x1.f6a7a2955385fp1
+  },
+  { // Entry 1132
+    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
+    -0x1.f6a7a2955385fp1
+  },
+  { // Entry 1133
+    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
+    0x1.2d97c7f3321d1p2
+  },
+  { // Entry 1134
+    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
+    -0x1.2d97c7f3321d1p2
+  },
+  { // Entry 1135
+    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
+    0x1.2d97c7f3321d2p2
+  },
+  { // Entry 1136
+    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
+    -0x1.2d97c7f3321d2p2
+  },
+  { // Entry 1137
+    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
+    0x1.2d97c7f3321d3p2
+  },
+  { // Entry 1138
+    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
+    -0x1.2d97c7f3321d3p2
+  },
+  { // Entry 1139
+    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
+    0x1.5fdbbe9bba774p2
+  },
+  { // Entry 1140
+    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
+    -0x1.5fdbbe9bba774p2
+  },
+  { // Entry 1141
+    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
+    0x1.5fdbbe9bba775p2
+  },
+  { // Entry 1142
+    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
+    -0x1.5fdbbe9bba775p2
+  },
+  { // Entry 1143
+    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
+    0x1.5fdbbe9bba776p2
+  },
+  { // Entry 1144
+    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
+    -0x1.5fdbbe9bba776p2
+  },
+  { // Entry 1145
+    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
+    0x1.c463abeccb2bap2
+  },
+  { // Entry 1146
+    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
+    -0x1.c463abeccb2bap2
+  },
+  { // Entry 1147
+    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
+    0x1.c463abeccb2bbp2
+  },
+  { // Entry 1148
+    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
+    -0x1.c463abeccb2bbp2
+  },
+  { // Entry 1149
+    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
+    0x1.c463abeccb2bcp2
+  },
+  { // Entry 1150
+    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
+    -0x1.c463abeccb2bcp2
+  },
+  { // Entry 1151
+    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
+    0x1.f6a7a2955385dp2
+  },
+  { // Entry 1152
+    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
+    -0x1.f6a7a2955385dp2
+  },
+  { // Entry 1153
+    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
+    0x1.f6a7a2955385ep2
+  },
+  { // Entry 1154
+    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
+    -0x1.f6a7a2955385ep2
+  },
+  { // Entry 1155
+    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
+    0x1.f6a7a2955385fp2
+  },
+  { // Entry 1156
+    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
+    -0x1.f6a7a2955385fp2
+  },
+  { // Entry 1157
+    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
+    0x1.1475cc9eedeffp3
+  },
+  { // Entry 1158
+    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
+    -0x1.1475cc9eedeffp3
+  },
+  { // Entry 1159
+    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
+    0x1.1475cc9eedfp3
+  },
+  { // Entry 1160
+    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
+    -0x1.1475cc9eedfp3
+  },
+  { // Entry 1161
+    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
+    0x1.1475cc9eedf01p3
+  },
+  { // Entry 1162
+    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
+    -0x1.1475cc9eedf01p3
+  },
+  { // Entry 1163
+    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
+    0x1.2d97c7f3321d1p3
+  },
+  { // Entry 1164
+    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
+    -0x1.2d97c7f3321d1p3
+  },
+  { // Entry 1165
+    -0x1.fffffffffffffffffffffffffd4326f5p-1,
+    0x1.2d97c7f3321d2p3
+  },
+  { // Entry 1166
+    -0x1.fffffffffffffffffffffffffd4326f5p-1,
+    -0x1.2d97c7f3321d2p3
+  },
+  { // Entry 1167
+    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
+    0x1.2d97c7f3321d3p3
+  },
+  { // Entry 1168
+    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
+    -0x1.2d97c7f3321d3p3
+  },
+  { // Entry 1169
+    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
+    0x1.46b9c347764a2p3
+  },
+  { // Entry 1170
+    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
+    -0x1.46b9c347764a2p3
+  },
+  { // Entry 1171
+    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
+    0x1.46b9c347764a3p3
+  },
+  { // Entry 1172
+    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
+    -0x1.46b9c347764a3p3
+  },
+  { // Entry 1173
+    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
+    0x1.46b9c347764a4p3
+  },
+  { // Entry 1174
+    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
+    -0x1.46b9c347764a4p3
+  },
+  { // Entry 1175
+    -0x1.3dc585b2c742181326e07c40748873bbp-49,
+    0x1.5fdbbe9bba774p3
+  },
+  { // Entry 1176
+    -0x1.3dc585b2c742181326e07c40748873bbp-49,
+    -0x1.5fdbbe9bba774p3
+  },
+  { // Entry 1177
+    -0x1.ee2c2d963a10c0993703e20446463301p-52,
+    0x1.5fdbbe9bba775p3
+  },
+  { // Entry 1178
+    -0x1.ee2c2d963a10c0993703e20446463301p-52,
+    -0x1.5fdbbe9bba775p3
+  },
+  { // Entry 1179
+    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
+    0x1.5fdbbe9bba776p3
+  },
+  { // Entry 1180
+    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
+    -0x1.5fdbbe9bba776p3
+  },
+  { // Entry 1181
+    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
+    0x1.78fdb9effea45p3
+  },
+  { // Entry 1182
+    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
+    -0x1.78fdb9effea45p3
+  },
+  { // Entry 1183
+    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
+    0x1.78fdb9effea46p3
+  },
+  { // Entry 1184
+    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
+    -0x1.78fdb9effea46p3
+  },
+  { // Entry 1185
+    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
+    0x1.78fdb9effea47p3
+  },
+  { // Entry 1186
+    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
+    -0x1.78fdb9effea47p3
+  },
+  { // Entry 1187
+    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
+    0x1.ab41b09886fe8p3
+  },
+  { // Entry 1188
+    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
+    -0x1.ab41b09886fe8p3
+  },
+  { // Entry 1189
+    0x1.6a09e667f3bd58952228d7e58701d299p-1,
+    0x1.ab41b09886fe9p3
+  },
+  { // Entry 1190
+    0x1.6a09e667f3bd58952228d7e58701d299p-1,
+    -0x1.ab41b09886fe9p3
+  },
+  { // Entry 1191
+    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
+    0x1.ab41b09886feap3
+  },
+  { // Entry 1192
+    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
+    -0x1.ab41b09886feap3
+  },
+  { // Entry 1193
+    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
+    0x1.c463abeccb2bap3
+  },
+  { // Entry 1194
+    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
+    -0x1.c463abeccb2bap3
+  },
+  { // Entry 1195
+    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
+    0x1.c463abeccb2bbp3
+  },
+  { // Entry 1196
+    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
+    -0x1.c463abeccb2bbp3
+  },
+  { // Entry 1197
+    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
+    0x1.c463abeccb2bcp3
+  },
+  { // Entry 1198
+    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
+    -0x1.c463abeccb2bcp3
+  },
+  { // Entry 1199
+    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
+    0x1.dd85a7410f58bp3
+  },
+  { // Entry 1200
+    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
+    -0x1.dd85a7410f58bp3
+  },
+  { // Entry 1201
+    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
+    0x1.dd85a7410f58cp3
+  },
+  { // Entry 1202
+    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
+    -0x1.dd85a7410f58cp3
+  },
+  { // Entry 1203
+    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
+    0x1.dd85a7410f58dp3
+  },
+  { // Entry 1204
+    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
+    -0x1.dd85a7410f58dp3
+  },
+  { // Entry 1205
+    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
+    0x1.f6a7a2955385dp3
+  },
+  { // Entry 1206
+    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
+    -0x1.f6a7a2955385dp3
+  },
+  { // Entry 1207
+    -0x1.fffffffffffffffffffffffff8653353p-1,
+    0x1.f6a7a2955385ep3
+  },
+  { // Entry 1208
+    -0x1.fffffffffffffffffffffffff8653353p-1,
+    -0x1.f6a7a2955385ep3
+  },
+  { // Entry 1209
+    -0x1.ffffffffffffffffffffffffe48492d3p-1,
+    0x1.f6a7a2955385fp3
+  },
+  { // Entry 1210
+    -0x1.ffffffffffffffffffffffffe48492d3p-1,
+    -0x1.f6a7a2955385fp3
+  },
+  { // Entry 1211
+    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
+    0x1.07e4cef4cbd96p4
+  },
+  { // Entry 1212
+    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
+    -0x1.07e4cef4cbd96p4
+  },
+  { // Entry 1213
+    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
+    0x1.07e4cef4cbd97p4
+  },
+  { // Entry 1214
+    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
+    -0x1.07e4cef4cbd97p4
+  },
+  { // Entry 1215
+    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
+    0x1.07e4cef4cbd98p4
+  },
+  { // Entry 1216
+    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
+    -0x1.07e4cef4cbd98p4
+  },
+  { // Entry 1217
+    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
+    0x1.1475cc9eedeffp4
+  },
+  { // Entry 1218
+    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
+    -0x1.1475cc9eedeffp4
+  },
+  { // Entry 1219
+    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
+    0x1.1475cc9eedfp4
+  },
+  { // Entry 1220
+    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
+    -0x1.1475cc9eedfp4
+  },
+  { // Entry 1221
+    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
+    0x1.1475cc9eedf01p4
+  },
+  { // Entry 1222
+    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
+    -0x1.1475cc9eedf01p4
+  },
+  { // Entry 1223
+    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
+    0x1.2106ca4910068p4
+  },
+  { // Entry 1224
+    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
+    -0x1.2106ca4910068p4
+  },
+  { // Entry 1225
+    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
+    0x1.2106ca4910069p4
+  },
+  { // Entry 1226
+    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
+    -0x1.2106ca4910069p4
+  },
+  { // Entry 1227
+    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
+    0x1.2106ca491006ap4
+  },
+  { // Entry 1228
+    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
+    -0x1.2106ca491006ap4
+  },
+  { // Entry 1229
+    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
+    0x1.2d97c7f3321d1p4
+  },
+  { // Entry 1230
+    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
+    -0x1.2d97c7f3321d1p4
+  },
+  { // Entry 1231
+    0x1.fffffffffffffffffffffffff50c9bd4p-1,
+    0x1.2d97c7f3321d2p4
+  },
+  { // Entry 1232
+    0x1.fffffffffffffffffffffffff50c9bd4p-1,
+    -0x1.2d97c7f3321d2p4
+  },
+  { // Entry 1233
+    0x1.ffffffffffffffffffffffff5ef18107p-1,
+    0x1.2d97c7f3321d3p4
+  },
+  { // Entry 1234
+    0x1.ffffffffffffffffffffffff5ef18107p-1,
+    -0x1.2d97c7f3321d3p4
+  },
+  { // Entry 1235
+    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
+    0x1.3a28c59d54339p4
+  },
+  { // Entry 1236
+    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
+    -0x1.3a28c59d54339p4
+  },
+  { // Entry 1237
+    0x1.6a09e667f3be268fb61ad5523532e298p-1,
+    0x1.3a28c59d5433ap4
+  },
+  { // Entry 1238
+    0x1.6a09e667f3be268fb61ad5523532e298p-1,
+    -0x1.3a28c59d5433ap4
+  },
+  { // Entry 1239
+    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
+    0x1.3a28c59d5433bp4
+  },
+  { // Entry 1240
+    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
+    -0x1.3a28c59d5433bp4
+  },
+  { // Entry 1241
+    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
+    0x1.46b9c347764a2p4
+  },
+  { // Entry 1242
+    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
+    -0x1.46b9c347764a2p4
+  },
+  { // Entry 1243
+    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
+    0x1.46b9c347764a3p4
+  },
+  { // Entry 1244
+    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
+    -0x1.46b9c347764a3p4
+  },
+  { // Entry 1245
+    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
+    0x1.46b9c347764a4p4
+  },
+  { // Entry 1246
+    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
+    -0x1.46b9c347764a4p4
+  },
+  { // Entry 1247
+    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
+    0x1.534ac0f19860bp4
+  },
+  { // Entry 1248
+    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
+    -0x1.534ac0f19860bp4
+  },
+  { // Entry 1249
+    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
+    0x1.534ac0f19860cp4
+  },
+  { // Entry 1250
+    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
+    -0x1.534ac0f19860cp4
+  },
+  { // Entry 1251
+    -0x1.6a09e667f3bd84532147be323eddac01p-1,
+    0x1.534ac0f19860dp4
+  },
+  { // Entry 1252
+    -0x1.6a09e667f3bd84532147be323eddac01p-1,
+    -0x1.534ac0f19860dp4
+  },
+  { // Entry 1253
+    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
+    0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1254
+    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
+    -0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1255
+    -0x1.fffffffffffffffffffffffff11845e1p-1,
+    0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1256
+    -0x1.fffffffffffffffffffffffff11845e1p-1,
+    -0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1257
+    -0x1.ffffffffffffffffffffffff6ca35147p-1,
+    0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1258
+    -0x1.ffffffffffffffffffffffff6ca35147p-1,
+    -0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1259
+    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
+    0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1260
+    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
+    -0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1261
+    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
+    0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1262
+    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
+    -0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1263
+    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
+    0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1264
+    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
+    -0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1265
+    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
+    0x1.78fdb9effea45p4
+  },
+  { // Entry 1266
+    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
+    -0x1.78fdb9effea45p4
+  },
+  { // Entry 1267
+    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
+    0x1.78fdb9effea46p4
+  },
+  { // Entry 1268
+    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
+    -0x1.78fdb9effea46p4
+  },
+  { // Entry 1269
+    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
+    0x1.78fdb9effea47p4
+  },
+  { // Entry 1270
+    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
+    -0x1.78fdb9effea47p4
+  },
+  { // Entry 1271
+    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
+    0x1.858eb79a20baep4
+  },
+  { // Entry 1272
+    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
+    -0x1.858eb79a20baep4
+  },
+  { // Entry 1273
+    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
+    0x1.858eb79a20bafp4
+  },
+  { // Entry 1274
+    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
+    -0x1.858eb79a20bafp4
+  },
+  { // Entry 1275
+    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
+    0x1.858eb79a20bb0p4
+  },
+  { // Entry 1276
+    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
+    -0x1.858eb79a20bb0p4
+  },
+  { // Entry 1277
+    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 1278
+    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 1279
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    0x1.0p63
+  },
+  { // Entry 1280
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    -0x1.0p63
+  },
+  { // Entry 1281
+    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
+    0x1.0000000000001p63
+  },
+  { // Entry 1282
+    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
+    -0x1.0000000000001p63
+  },
+  { // Entry 1283
+    0x1.4ab650b8c60734385375e22603fcdb10p-1,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 1284
+    0x1.4ab650b8c60734385375e22603fcdb10p-1,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 1285
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    0x1.0p27
+  },
+  { // Entry 1286
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    -0x1.0p27
+  },
+  { // Entry 1287
+    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
+    0x1.0000000000001p27
+  },
+  { // Entry 1288
+    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
+    -0x1.0000000000001p27
+  },
+  { // Entry 1289
+    0x1.40ad67e777b1df0195189f50a8c26345p-1,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 1290
+    0x1.40ad67e777b1df0195189f50a8c26345p-1,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 1291
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    0x1.0p24
+  },
+  { // Entry 1292
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    -0x1.0p24
+  },
+  { // Entry 1293
+    0x1.40ad680ce2f924d716769d1064bc8defp-1,
+    0x1.0000000000001p24
+  },
+  { // Entry 1294
+    0x1.40ad680ce2f924d716769d1064bc8defp-1,
+    -0x1.0000000000001p24
+  },
+  { // Entry 1295
+    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 1296
+    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 1297
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    0x1.0p2
+  },
+  { // Entry 1298
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    -0x1.0p2
+  },
+  { // Entry 1299
+    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
+    0x1.0000000000001p2
+  },
+  { // Entry 1300
+    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 1301
+    -0x1.aa2265753720101145230952e61c6f2cp-2,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 1302
+    -0x1.aa2265753720101145230952e61c6f2cp-2,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 1303
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    0x1.0p1
+  },
+  { // Entry 1304
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    -0x1.0p1
+  },
+  { // Entry 1305
+    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
+    0x1.0000000000001p1
+  },
+  { // Entry 1306
+    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
+    -0x1.0000000000001p1
+  },
+  { // Entry 1307
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1308
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1309
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.0p0
+  },
+  { // Entry 1310
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.0p0
+  },
+  { // Entry 1311
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1312
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1313
+    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 1314
+    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 1315
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    0x1.0p-1
+  },
+  { // Entry 1316
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    -0x1.0p-1
+  },
+  { // Entry 1317
+    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 1318
+    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 1319
+    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 1320
+    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 1321
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    0x1.0p-2
+  },
+  { // Entry 1322
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    -0x1.0p-2
+  },
+  { // Entry 1323
+    0x1.f01549f7deea155458b92a4167aec7ffp-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 1324
+    0x1.f01549f7deea155458b92a4167aec7ffp-1,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 1325
+    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 1326
+    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 1327
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    0x1.0p-3
+  },
+  { // Entry 1328
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    -0x1.0p-3
+  },
+  { // Entry 1329
+    0x1.fc015527d5bd365a92186b203507f9adp-1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 1330
+    0x1.fc015527d5bd365a92186b203507f9adp-1,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 1331
+    0x1.ff0015549f4d34da0b745dc7433145efp-1,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 1332
+    0x1.ff0015549f4d34da0b745dc7433145efp-1,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 1333
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    0x1.0p-4
+  },
+  { // Entry 1334
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    -0x1.0p-4
+  },
+  { // Entry 1335
+    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 1336
+    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 1337
+    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 1338
+    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 1339
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    0x1.0p-5
+  },
+  { // Entry 1340
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    -0x1.0p-5
+  },
+  { // Entry 1341
+    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
+    0x1.0000000000001p-5
+  },
+  { // Entry 1342
+    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 1343
+    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 1344
+    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 1345
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    0x1.0p-6
+  },
+  { // Entry 1346
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    -0x1.0p-6
+  },
+  { // Entry 1347
+    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
+    0x1.0000000000001p-6
+  },
+  { // Entry 1348
+    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 1349
+    0x1.fffffff00000001555565549f49c9f4dp-1,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 1350
+    0x1.fffffff00000001555565549f49c9f4dp-1,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 1351
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    0x1.0p-14
+  },
+  { // Entry 1352
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    -0x1.0p-14
+  },
+  { // Entry 1353
+    0x1.fffffff00000001555535549f4a49f4dp-1,
+    0x1.0000000000001p-14
+  },
+  { // Entry 1354
+    0x1.fffffff00000001555535549f4a49f4dp-1,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 1355
+    0x1.fffffffffffffc000000000000415555p-1,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 1356
+    0x1.fffffffffffffc000000000000415555p-1,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 1357
+    0x1.fffffffffffffc000000000000015555p-1,
+    0x1.0p-27
+  },
+  { // Entry 1358
+    0x1.fffffffffffffc000000000000015555p-1,
+    -0x1.0p-27
+  },
+  { // Entry 1359
+    0x1.fffffffffffffbffffffffffff815555p-1,
+    0x1.0000000000001p-27
+  },
+  { // Entry 1360
+    0x1.fffffffffffffbffffffffffff815555p-1,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 1361
+    0x1.fffffffffffffff00000000000010015p-1,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 1362
+    0x1.fffffffffffffff00000000000010015p-1,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 1363
+    0x1.fffffffffffffff00000000000000015p-1,
+    0x1.0p-30
+  },
+  { // Entry 1364
+    0x1.fffffffffffffff00000000000000015p-1,
+    -0x1.0p-30
+  },
+  { // Entry 1365
+    0x1.ffffffffffffffeffffffffffffe0015p-1,
+    0x1.0000000000001p-30
+  },
+  { // Entry 1366
+    0x1.ffffffffffffffeffffffffffffe0015p-1,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 1367
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1368
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1369
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1370
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1371
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1372
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1373
+    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 1374
+    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 1375
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 1376
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 1377
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 1378
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 1379
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1380
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1381
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.0p0
+  },
+  { // Entry 1382
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.0p0
+  },
+  { // Entry 1383
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1384
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1385
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 1386
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 1387
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 1388
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1389
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1022
+  },
+  { // Entry 1390
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 1391
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1392
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1393
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1394
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1395
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1073
+  },
+  { // Entry 1396
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1073
+  },
+  { // Entry 1397
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 1398
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 1399
+    0x1.p0,
+    0.0
+  },
+  { // Entry 1400
+    0x1.p0,
+    -0.0
+  },
+};
diff --git a/tests/math_data/cosf_intel_data.h b/tests/math_data/cosf_intel_data.h
new file mode 100644
index 0000000..d606021
--- /dev/null
+++ b/tests/math_data/cosf_intel_data.h
@@ -0,0 +1,4334 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_cosf_intel_data[] = {
+  { // Entry 0
+    0x1.bc7b66ffb7689d646dd1af83e9661d2dp-1,
+    -0x1.09ebacp-1
+  },
+  { // Entry 1
+    0x1.bc7b66ffb7689d646dd1af83e9661d2dp-1,
+    0x1.09ebacp-1
+  },
+  { // Entry 2
+    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
+    -0x1.156564p4
+  },
+  { // Entry 3
+    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
+    0x1.156564p4
+  },
+  { // Entry 4
+    -0x1.c11bb2f056552ca4cdb6c5a0cf71509dp-8,
+    -0x1.406a40p6
+  },
+  { // Entry 5
+    -0x1.c11bb2f056552ca4cdb6c5a0cf71509dp-8,
+    0x1.406a40p6
+  },
+  { // Entry 6
+    0x1.ff836cff97077bf489aadc5f349a9fb9p-1,
+    -0x1.653078p-5
+  },
+  { // Entry 7
+    0x1.ff836cff97077bf489aadc5f349a9fb9p-1,
+    0x1.653078p-5
+  },
+  { // Entry 8
+    0x1.b29cd4f9da2964e8c6bb5693387d3f3bp-5,
+    -0x1.6c0008p5
+  },
+  { // Entry 9
+    0x1.b29cd4f9da2964e8c6bb5693387d3f3bp-5,
+    0x1.6c0008p5
+  },
+  { // Entry 10
+    0x1.df40d3f650f6c94390a3ca5d8d9b48c1p-1,
+    -0x1.703824p-2
+  },
+  { // Entry 11
+    0x1.df40d3f650f6c94390a3ca5d8d9b48c1p-1,
+    0x1.703824p-2
+  },
+  { // Entry 12
+    0x1.f76316f541e10ef15d57c5a23775329cp-1,
+    -0x1.782e2ep-3
+  },
+  { // Entry 13
+    0x1.f76316f541e10ef15d57c5a23775329cp-1,
+    0x1.782e2ep-3
+  },
+  { // Entry 14
+    0x1.cfab0ec2fc95382986fa511648bd4e6fp-24,
+    -0x1.8e3266p9
+  },
+  { // Entry 15
+    0x1.cfab0ec2fc95382986fa511648bd4e6fp-24,
+    0x1.8e3266p9
+  },
+  { // Entry 16
+    0x1.92e66b5920a85d6083e9cc85568ceaa3p-21,
+    -0x1.c6ac02p14
+  },
+  { // Entry 17
+    0x1.92e66b5920a85d6083e9cc85568ceaa3p-21,
+    0x1.c6ac02p14
+  },
+  { // Entry 18
+    0x1.d1ceb4ffff6ed05b5ef5fc618231214ap-2,
+    -0x1.e513fcp4
+  },
+  { // Entry 19
+    0x1.d1ceb4ffff6ed05b5ef5fc618231214ap-2,
+    0x1.e513fcp4
+  },
+  { // Entry 20
+    0x1.c27e049dfeab38e1b8ea6a09631829fep-1,
+    -0x1.fb1904p-2
+  },
+  { // Entry 21
+    0x1.c27e049dfeab38e1b8ea6a09631829fep-1,
+    0x1.fb1904p-2
+  },
+  { // Entry 22
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 23
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    0x1.fffffep127
+  },
+  { // Entry 24
+    0x1.ffffff000000155555549f49f4a28a28p-1,
+    0x1.p-12
+  },
+  { // Entry 25
+    0x1.ffffff000000155555549f49f4a28a28p-1,
+    -0x1.p-12
+  },
+  { // Entry 26
+    0x1.ffffffffffc000000000015555555555p-1,
+    0x1.p-21
+  },
+  { // Entry 27
+    0x1.ffffffffffc000000000015555555555p-1,
+    -0x1.p-21
+  },
+  { // Entry 28
+    0x1.fffffffffff000000000001555555555p-1,
+    0x1.p-22
+  },
+  { // Entry 29
+    0x1.fffffffffff000000000001555555555p-1,
+    -0x1.p-22
+  },
+  { // Entry 30
+    0x1.fffffefffffc155551ff49f696c4aecap-1,
+    0x1.000002p-12
+  },
+  { // Entry 31
+    0x1.fffffefffffc155551ff49f696c4aecap-1,
+    -0x1.000002p-12
+  },
+  { // Entry 32
+    0x1.882d606ba07505a7a09ae74d713f9788p-1,
+    0x1.000002p51
+  },
+  { // Entry 33
+    0x1.882d606ba07505a7a09ae74d713f9788p-1,
+    -0x1.000002p51
+  },
+  { // Entry 34
+    0x1.fc0154f7f5b6422f7794bf156ee98b7ep-1,
+    0x1.000006p-3
+  },
+  { // Entry 35
+    0x1.fc0154f7f5b6422f7794bf156ee98b7ep-1,
+    -0x1.000006p-3
+  },
+  { // Entry 36
+    0x1.34e976ef67d60a3de814ad3d0203ba21p-10,
+    0x1.000006p121
+  },
+  { // Entry 37
+    0x1.34e976ef67d60a3de814ad3d0203ba21p-10,
+    -0x1.000006p121
+  },
+  { // Entry 38
+    -0x1.ffffa2cf59398dc6180801e9ea3120c8p-1,
+    0x1.000006p122
+  },
+  { // Entry 39
+    -0x1.ffffa2cf59398dc6180801e9ea3120c8p-1,
+    -0x1.000006p122
+  },
+  { // Entry 40
+    0x1.ffc0014453315d47e2a318bf63e4caa7p-1,
+    0x1.000022p-5
+  },
+  { // Entry 41
+    0x1.ffc0014453315d47e2a318bf63e4caa7p-1,
+    -0x1.000022p-5
+  },
+  { // Entry 42
+    0x1.c15215015f3d916a0019a39e3acc7364p-1,
+    0x1.0000e0p-1
+  },
+  { // Entry 43
+    0x1.c15215015f3d916a0019a39e3acc7364p-1,
+    -0x1.0000e0p-1
+  },
+  { // Entry 44
+    0x1.ff001394e93085c7cce53915893af765p-1,
+    0x1.0000e0p-4
+  },
+  { // Entry 45
+    0x1.ff001394e93085c7cce53915893af765p-1,
+    -0x1.0000e0p-4
+  },
+  { // Entry 46
+    0x1.90b0c97de2370587a68aeae2b6943953p-15,
+    0x1.000322p23
+  },
+  { // Entry 47
+    0x1.90b0c97de2370587a68aeae2b6943953p-15,
+    -0x1.000322p23
+  },
+  { // Entry 48
+    -0x1.8b90c67677565874f44d9314ca2ba634p-6,
+    0x1.000402p8
+  },
+  { // Entry 49
+    -0x1.8b90c67677565874f44d9314ca2ba634p-6,
+    -0x1.000402p8
+  },
+  { // Entry 50
+    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
+    0x1.001cp0
+  },
+  { // Entry 51
+    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
+    -0x1.001cp0
+  },
+  { // Entry 52
+    0x1.c0b6d10005468a3a3eb056eb59b58ce2p-1,
+    0x1.0144p-1
+  },
+  { // Entry 53
+    0x1.c0b6d10005468a3a3eb056eb59b58ce2p-1,
+    -0x1.0144p-1
+  },
+  { // Entry 54
+    -0x1.c403d90006509b0762642d0bea40e4b1p-2,
+    0x1.0394c8p1
+  },
+  { // Entry 55
+    -0x1.c403d90006509b0762642d0bea40e4b1p-2,
+    -0x1.0394c8p1
+  },
+  { // Entry 56
+    -0x1.270da18b198e6ebfc8782082902bf2d4p-25,
+    0x1.04ccbcp18
+  },
+  { // Entry 57
+    -0x1.270da18b198e6ebfc8782082902bf2d4p-25,
+    -0x1.04ccbcp18
+  },
+  { // Entry 58
+    0x1.ee0f67015b9fb39ba6eb91d47829c913p-1,
+    0x1.07b518p99
+  },
+  { // Entry 59
+    0x1.ee0f67015b9fb39ba6eb91d47829c913p-1,
+    -0x1.07b518p99
+  },
+  { // Entry 60
+    0x1.fef05d000666cb47f1632c478a6282a8p-1,
+    0x1.07bf80p-4
+  },
+  { // Entry 61
+    0x1.fef05d000666cb47f1632c478a6282a8p-1,
+    -0x1.07bf80p-4
+  },
+  { // Entry 62
+    0x1.16f4330000b44c8288679f8c79d36c4fp-6,
+    0x1.07c1f0p5
+  },
+  { // Entry 63
+    0x1.16f4330000b44c8288679f8c79d36c4fp-6,
+    -0x1.07c1f0p5
+  },
+  { // Entry 64
+    0x1.cfb404557277d85bf149496d46c2fa9fp-18,
+    0x1.0bd21ep9
+  },
+  { // Entry 65
+    0x1.cfb404557277d85bf149496d46c2fa9fp-18,
+    -0x1.0bd21ep9
+  },
+  { // Entry 66
+    0x1.bb543efffd6cacac12698b8a94ed2c3ep-1,
+    0x1.0c3cp-1
+  },
+  { // Entry 67
+    0x1.bb543efffd6cacac12698b8a94ed2c3ep-1,
+    -0x1.0c3cp-1
+  },
+  { // Entry 68
+    0x1.bb0a22c13b616cdcad32c7fca58e6643p-1,
+    0x1.0cd0p-1
+  },
+  { // Entry 69
+    0x1.bb0a22c13b616cdcad32c7fca58e6643p-1,
+    -0x1.0cd0p-1
+  },
+  { // Entry 70
+    0x1.f98f9b1d05e7c922ac5e5c6b6ac86876p-2,
+    0x1.0df0p0
+  },
+  { // Entry 71
+    0x1.f98f9b1d05e7c922ac5e5c6b6ac86876p-2,
+    -0x1.0df0p0
+  },
+  { // Entry 72
+    0x1.ee15181830c25b0b10ce671e8f7a3289p-1,
+    0x1.0fb4p-2
+  },
+  { // Entry 73
+    0x1.ee15181830c25b0b10ce671e8f7a3289p-1,
+    -0x1.0fb4p-2
+  },
+  { // Entry 74
+    0x1.edf6cc16defe6361f38ffa60ece3944cp-1,
+    0x1.109ab2p-2
+  },
+  { // Entry 75
+    0x1.edf6cc16defe6361f38ffa60ece3944cp-1,
+    -0x1.109ab2p-2
+  },
+  { // Entry 76
+    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
+    0x1.156564p4
+  },
+  { // Entry 77
+    0x1.dee8d0fffcd997ce5cfbab0a5a336c14p-5,
+    -0x1.156564p4
+  },
+  { // Entry 78
+    0x1.b656d60000155bacb4aa874b28de2ff9p-1,
+    0x1.160cp-1
+  },
+  { // Entry 79
+    0x1.b656d60000155bacb4aa874b28de2ff9p-1,
+    -0x1.160cp-1
+  },
+  { // Entry 80
+    0x1.ffb275967c191ee95f862efb4f790cecp-1,
+    0x1.19ccp-5
+  },
+  { // Entry 81
+    0x1.ffb275967c191ee95f862efb4f790cecp-1,
+    -0x1.19ccp-5
+  },
+  { // Entry 82
+    0x1.c59c50ffe542233b7ea21100df87bb60p-2,
+    0x1.1ca4p0
+  },
+  { // Entry 83
+    0x1.c59c50ffe542233b7ea21100df87bb60p-2,
+    -0x1.1ca4p0
+  },
+  { // Entry 84
+    0x1.af630f86b77571b9de2f17fee2b6c5cep-5,
+    0x1.1ffffep79
+  },
+  { // Entry 85
+    0x1.af630f86b77571b9de2f17fee2b6c5cep-5,
+    -0x1.1ffffep79
+  },
+  { // Entry 86
+    0x1.b1493ef1fbc62673ec140c12adc5a134p-6,
+    0x1.2620p10
+  },
+  { // Entry 87
+    0x1.b1493ef1fbc62673ec140c12adc5a134p-6,
+    -0x1.2620p10
+  },
+  { // Entry 88
+    -0x1.ad00b6f15c6ac5c3e79ef55d2fec70bdp-5,
+    0x1.2a3d62p2
+  },
+  { // Entry 89
+    -0x1.ad00b6f15c6ac5c3e79ef55d2fec70bdp-5,
+    -0x1.2a3d62p2
+  },
+  { // Entry 90
+    -0x1.ab9984f283f114cf13cc6df38c67955fp-6,
+    0x1.2bec22p2
+  },
+  { // Entry 91
+    -0x1.ab9984f283f114cf13cc6df38c67955fp-6,
+    -0x1.2bec22p2
+  },
+  { // Entry 92
+    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
+    0x1.2d97c8p2
+  },
+  { // Entry 93
+    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
+    -0x1.2d97c8p2
+  },
+  { // Entry 94
+    -0x1.ffffffffffffd703498c3b8288563915p-1,
+    0x1.2d97c8p3
+  },
+  { // Entry 95
+    -0x1.ffffffffffffd703498c3b8288563915p-1,
+    -0x1.2d97c8p3
+  },
+  { // Entry 96
+    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
+    0x1.2d97c8p4
+  },
+  { // Entry 97
+    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
+    -0x1.2d97c8p4
+  },
+  { // Entry 98
+    -0x1.99b69cf0c4a2c8ddad3f4cf29453e509p-6,
+    0x1.2fefc4p9
+  },
+  { // Entry 99
+    -0x1.99b69cf0c4a2c8ddad3f4cf29453e509p-6,
+    -0x1.2fefc4p9
+  },
+  { // Entry 100
+    0x1.e92148328d620fc186df9d6ce1088fd9p-1,
+    0x1.333724p-2
+  },
+  { // Entry 101
+    0x1.e92148328d620fc186df9d6ce1088fd9p-1,
+    -0x1.333724p-2
+  },
+  { // Entry 102
+    0x1.a1caab00002d3189e0699f2aaf20d9fcp-1,
+    0x1.3b90f8p-1
+  },
+  { // Entry 103
+    0x1.a1caab00002d3189e0699f2aaf20d9fcp-1,
+    -0x1.3b90f8p-1
+  },
+  { // Entry 104
+    0x1.fc33baffffffbb055ce03690bd392531p-1,
+    0x1.41c470p16
+  },
+  { // Entry 105
+    0x1.fc33baffffffbb055ce03690bd392531p-1,
+    -0x1.41c470p16
+  },
+  { // Entry 106
+    0x1.4798b30672f21602a21aaf471e8259a0p-19,
+    0x1.442f74p15
+  },
+  { // Entry 107
+    0x1.4798b30672f21602a21aaf471e8259a0p-19,
+    -0x1.442f74p15
+  },
+  { // Entry 108
+    0x1.e2b5ecffffa49c8c68d743c47f624633p-1,
+    0x1.5c09dap-2
+  },
+  { // Entry 109
+    0x1.e2b5ecffffa49c8c68d743c47f624633p-1,
+    -0x1.5c09dap-2
+  },
+  { // Entry 110
+    0x1.10591094ac58a270d9ad91802df49fd0p-11,
+    0x1.5fe0p3
+  },
+  { // Entry 111
+    0x1.10591094ac58a270d9ad91802df49fd0p-11,
+    -0x1.5fe0p3
+  },
+  { // Entry 112
+    -0x1.fffe580ee141c0225b44281c1c6f7ff1p-1,
+    0x1.665982p119
+  },
+  { // Entry 113
+    -0x1.fffe580ee141c0225b44281c1c6f7ff1p-1,
+    -0x1.665982p119
+  },
+  { // Entry 114
+    -0x1.e2b8ecffed91ce3a4b9dc5a592fb0b14p-1,
+    0x1.66a0bap1
+  },
+  { // Entry 115
+    -0x1.e2b8ecffed91ce3a4b9dc5a592fb0b14p-1,
+    -0x1.66a0bap1
+  },
+  { // Entry 116
+    -0x1.a08c6cfdbe04b859c0e16d478ff81f7bp-5,
+    0x1.6bee42p12
+  },
+  { // Entry 117
+    -0x1.a08c6cfdbe04b859c0e16d478ff81f7bp-5,
+    -0x1.6bee42p12
+  },
+  { // Entry 118
+    0x1.ff7c719a18439c4267075e2df688343ap-1,
+    0x1.6f1070p-5
+  },
+  { // Entry 119
+    0x1.ff7c719a18439c4267075e2df688343ap-1,
+    -0x1.6f1070p-5
+  },
+  { // Entry 120
+    0x1.ff7c3b997d6bea661ef0d1e69e222bfep-1,
+    0x1.6f5bc2p-5
+  },
+  { // Entry 121
+    0x1.ff7c3b997d6bea661ef0d1e69e222bfep-1,
+    -0x1.6f5bc2p-5
+  },
+  { // Entry 122
+    -0x1.6a0a0ee68da131091e29e055226a1bd9p-1,
+    0x1.72b53cp5
+  },
+  { // Entry 123
+    -0x1.6a0a0ee68da131091e29e055226a1bd9p-1,
+    -0x1.72b53cp5
+  },
+  { // Entry 124
+    0x1.ff777b9a218985c1a191c92b2d11ffbap-1,
+    0x1.75ec1ap-5
+  },
+  { // Entry 125
+    0x1.ff777b9a218985c1a191c92b2d11ffbap-1,
+    -0x1.75ec1ap-5
+  },
+  { // Entry 126
+    0x1.6d487f92427920e81dc5ae34e0e8d7bap-2,
+    0x1.78b3fap100
+  },
+  { // Entry 127
+    0x1.6d487f92427920e81dc5ae34e0e8d7bap-2,
+    -0x1.78b3fap100
+  },
+  { // Entry 128
+    0x1.4949c2fffa0cd336dfda998216dae393p-4,
+    0x1.7d8568p0
+  },
+  { // Entry 129
+    0x1.4949c2fffa0cd336dfda998216dae393p-4,
+    -0x1.7d8568p0
+  },
+  { // Entry 130
+    -0x1.b9ed9eb33eacbfac8151cda113734c29p-1,
+    0x1.830688p57
+  },
+  { // Entry 131
+    -0x1.b9ed9eb33eacbfac8151cda113734c29p-1,
+    -0x1.830688p57
+  },
+  { // Entry 132
+    0x1.c7349af06d61394cae1912233f64a04ep-5,
+    0x1.83e430p0
+  },
+  { // Entry 133
+    0x1.c7349af06d61394cae1912233f64a04ep-5,
+    -0x1.83e430p0
+  },
+  { // Entry 134
+    0x1.ab73f0f0fe04403e6a7fdde141a38a8ep-5,
+    0x1.84c288p0
+  },
+  { // Entry 135
+    0x1.ab73f0f0fe04403e6a7fdde141a38a8ep-5,
+    -0x1.84c288p0
+  },
+  { // Entry 136
+    0x1.ff6c2799dcf0d6c8f7acaf5b0a46e6e2p-1,
+    0x1.852140p-5
+  },
+  { // Entry 137
+    0x1.ff6c2799dcf0d6c8f7acaf5b0a46e6e2p-1,
+    -0x1.852140p-5
+  },
+  { // Entry 138
+    0x1.ff69ed99de70e51f519f30bad247a4d9p-1,
+    0x1.880cb6p-5
+  },
+  { // Entry 139
+    0x1.ff69ed99de70e51f519f30bad247a4d9p-1,
+    -0x1.880cb6p-5
+  },
+  { // Entry 140
+    -0x1.fd76c57f872f85bc4b0e1bf591b3b5b0p-1,
+    0x1.9364eap119
+  },
+  { // Entry 141
+    -0x1.fd76c57f872f85bc4b0e1bf591b3b5b0p-1,
+    -0x1.9364eap119
+  },
+  { // Entry 142
+    -0x1.f87c1ceec5fd5811c9c089cdaeeff13cp-8,
+    0x1.979e28p9
+  },
+  { // Entry 143
+    -0x1.f87c1ceec5fd5811c9c089cdaeeff13cp-8,
+    -0x1.979e28p9
+  },
+  { // Entry 144
+    -0x1.16ae29144d3b1ea8d907b8776f704157p-26,
+    0x1.9a48dep15
+  },
+  { // Entry 145
+    -0x1.16ae29144d3b1ea8d907b8776f704157p-26,
+    -0x1.9a48dep15
+  },
+  { // Entry 146
+    -0x1.977552f8e6ab3c01cb29ec77803007cfp-13,
+    0x1.9cbc1ap50
+  },
+  { // Entry 147
+    -0x1.977552f8e6ab3c01cb29ec77803007cfp-13,
+    -0x1.9cbc1ap50
+  },
+  { // Entry 148
+    0x1.ff58c5ffffffc7266a9df4e921726771p-1,
+    0x1.9ddb06p-5
+  },
+  { // Entry 149
+    0x1.ff58c5ffffffc7266a9df4e921726771p-1,
+    -0x1.9ddb06p-5
+  },
+  { // Entry 150
+    0x1.fffffffffffff5700019fffff0094c15p-1,
+    0x1.9ffffep-27
+  },
+  { // Entry 151
+    0x1.fffffffffffff5700019fffff0094c15p-1,
+    -0x1.9ffffep-27
+  },
+  { // Entry 152
+    0x1.31bd63004b1ff4d722c745044706d517p-1,
+    0x1.ac129cp24
+  },
+  { // Entry 153
+    0x1.31bd63004b1ff4d722c745044706d517p-1,
+    -0x1.ac129cp24
+  },
+  { // Entry 154
+    -0x1.f1ad0f000009e06ce449f5bde03d5d1ap-1,
+    0x1.b078f8p1
+  },
+  { // Entry 155
+    -0x1.f1ad0f000009e06ce449f5bde03d5d1ap-1,
+    -0x1.b078f8p1
+  },
+  { // Entry 156
+    0x1.ff4776ffe324ba2958aca8d73cf8b839p-1,
+    0x1.b2c03cp-5
+  },
+  { // Entry 157
+    0x1.ff4776ffe324ba2958aca8d73cf8b839p-1,
+    -0x1.b2c03cp-5
+  },
+  { // Entry 158
+    0x1.ff437f00005e500d29bd8103a8e769e9p-1,
+    0x1.b766f6p-5
+  },
+  { // Entry 159
+    0x1.ff437f00005e500d29bd8103a8e769e9p-1,
+    -0x1.b766f6p-5
+  },
+  { // Entry 160
+    -0x1.99663da94db7348bcbb257ed16b7227cp-24,
+    0x1.beeeeep79
+  },
+  { // Entry 161
+    -0x1.99663da94db7348bcbb257ed16b7227cp-24,
+    -0x1.beeeeep79
+  },
+  { // Entry 162
+    0x1.f3d620ffffff860e49bbab8963dcc42ep-1,
+    0x1.bf4e1cp-3
+  },
+  { // Entry 163
+    0x1.f3d620ffffff860e49bbab8963dcc42ep-1,
+    -0x1.bf4e1cp-3
+  },
+  { // Entry 164
+    0x1.81ff79ed9201755f7ad18b533aa99d18p-1,
+    0x1.c0p2
+  },
+  { // Entry 165
+    0x1.81ff79ed9201755f7ad18b533aa99d18p-1,
+    -0x1.c0p2
+  },
+  { // Entry 166
+    -0x1.af3c6108887730fcecedf61d2d81ceabp-15,
+    0x1.c20ec8p23
+  },
+  { // Entry 167
+    -0x1.af3c6108887730fcecedf61d2d81ceabp-15,
+    -0x1.c20ec8p23
+  },
+  { // Entry 168
+    -0x1.b1656ef91447fa6a546cbd81034cafabp-14,
+    0x1.c79d20p17
+  },
+  { // Entry 169
+    -0x1.b1656ef91447fa6a546cbd81034cafabp-14,
+    -0x1.c79d20p17
+  },
+  { // Entry 170
+    0x1.2da1d3007a57461f6f67f2d3e983f798p-1,
+    0x1.ca7ce0p24
+  },
+  { // Entry 171
+    0x1.2da1d3007a57461f6f67f2d3e983f798p-1,
+    -0x1.ca7ce0p24
+  },
+  { // Entry 172
+    0x1.ffdd37888387ce3c9828144676f2ab0dp-1,
+    0x1.cc31b8p18
+  },
+  { // Entry 173
+    0x1.ffdd37888387ce3c9828144676f2ab0dp-1,
+    -0x1.cc31b8p18
+  },
+  { // Entry 174
+    0x1.395ba4ffffa061223f7304299be0aad8p-1,
+    0x1.d30892p-1
+  },
+  { // Entry 175
+    0x1.395ba4ffffa061223f7304299be0aad8p-1,
+    -0x1.d30892p-1
+  },
+  { // Entry 176
+    0x1.cb27c6ffd8e9d51a0605b57fd02ee483p-1,
+    0x1.d5574cp-2
+  },
+  { // Entry 177
+    0x1.cb27c6ffd8e9d51a0605b57fd02ee483p-1,
+    -0x1.d5574cp-2
+  },
+  { // Entry 178
+    0x1.a0a09cfd2b2b23476f09aa3eb631351cp-5,
+    0x1.d7557ap12
+  },
+  { // Entry 179
+    0x1.a0a09cfd2b2b23476f09aa3eb631351cp-5,
+    -0x1.d7557ap12
+  },
+  { // Entry 180
+    0x1.38ae6d000c49df5001baf701b1a2a564p-1,
+    0x1.dbe75cp24
+  },
+  { // Entry 181
+    0x1.38ae6d000c49df5001baf701b1a2a564p-1,
+    -0x1.dbe75cp24
+  },
+  { // Entry 182
+    0x1.ffff1f00125abf3d1765781b64e6fe07p-1,
+    0x1.dffffep-9
+  },
+  { // Entry 183
+    0x1.ffff1f00125abf3d1765781b64e6fe07p-1,
+    -0x1.dffffep-9
+  },
+  { // Entry 184
+    -0x1.9abc76f7eb1d15a727e0be7ab16400a7p-1,
+    0x1.e02a42p108
+  },
+  { // Entry 185
+    -0x1.9abc76f7eb1d15a727e0be7ab16400a7p-1,
+    -0x1.e02a42p108
+  },
+  { // Entry 186
+    0x1.5a1429044eb087032dbee719cdd30226p-1,
+    0x1.e701eap100
+  },
+  { // Entry 187
+    0x1.5a1429044eb087032dbee719cdd30226p-1,
+    -0x1.e701eap100
+  },
+  { // Entry 188
+    -0x1.94ffc0f8d888f6f46c6d55a2efa1083fp-1,
+    0x1.edf188p24
+  },
+  { // Entry 189
+    -0x1.94ffc0f8d888f6f46c6d55a2efa1083fp-1,
+    -0x1.edf188p24
+  },
+  { // Entry 190
+    -0x1.27c6d300d8756e78846b84a1fa3b12a2p-1,
+    0x1.f4c63ap24
+  },
+  { // Entry 191
+    -0x1.27c6d300d8756e78846b84a1fa3b12a2p-1,
+    -0x1.f4c63ap24
+  },
+  { // Entry 192
+    0x1.da54ecefb1cd39510555126a76cb20d4p-7,
+    0x1.f5ba76p2
+  },
+  { // Entry 193
+    0x1.da54ecefb1cd39510555126a76cb20d4p-7,
+    -0x1.f5ba76p2
+  },
+  { // Entry 194
+    0x1.fc28da000006bc4f0b0cd3c8ab10fc57p-1,
+    0x1.f5ff4ep-4
+  },
+  { // Entry 195
+    0x1.fc28da000006bc4f0b0cd3c8ab10fc57p-1,
+    -0x1.f5ff4ep-4
+  },
+  { // Entry 196
+    -0x1.ffffffffffea396ab8aee509392c755dp-1,
+    0x1.f6a7a2p3
+  },
+  { // Entry 197
+    -0x1.ffffffffffea396ab8aee509392c755dp-1,
+    -0x1.f6a7a2p3
+  },
+  { // Entry 198
+    0x1.a4f1d4fd0ea286f32f3cb3092b4ced14p-5,
+    0x1.f6bff2p12
+  },
+  { // Entry 199
+    0x1.a4f1d4fd0ea286f32f3cb3092b4ced14p-5,
+    -0x1.f6bff2p12
+  },
+  { // Entry 200
+    -0x1.fffffffffffffaf33de290ca99e2faf3p-1,
+    0x1.f9cbe2p8
+  },
+  { // Entry 201
+    -0x1.fffffffffffffaf33de290ca99e2faf3p-1,
+    -0x1.f9cbe2p8
+  },
+  { // Entry 202
+    0x1.fdd40d6d912ce2594f200104570ac1b3p-3,
+    0x1.fc767ep12
+  },
+  { // Entry 203
+    0x1.fdd40d6d912ce2594f200104570ac1b3p-3,
+    -0x1.fc767ep12
+  },
+  { // Entry 204
+    -0x1.752de2ffffb1a5e227bf2c12f4083203p-1,
+    0x1.ff5352p8
+  },
+  { // Entry 205
+    -0x1.752de2ffffb1a5e227bf2c12f4083203p-1,
+    -0x1.ff5352p8
+  },
+  { // Entry 206
+    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
+    0x1.fff1fep1
+  },
+  { // Entry 207
+    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
+    -0x1.fff1fep1
+  },
+  { // Entry 208
+    -0x1.28406a0025545c9a568dacd45518dd65p-3,
+    0x1.fff1fep2
+  },
+  { // Entry 209
+    -0x1.28406a0025545c9a568dacd45518dd65p-3,
+    -0x1.fff1fep2
+  },
+  { // Entry 210
+    0x1.f015c8c24ca5e99c7c65599c8d60976ep-1,
+    0x1.fff7fep-3
+  },
+  { // Entry 211
+    0x1.f015c8c24ca5e99c7c65599c8d60976ep-1,
+    -0x1.fff7fep-3
+  },
+  { // Entry 212
+    0x1.aff9b45e94d32d8e5bde25dec6f357d6p-9,
+    0x1.fffe3ep41
+  },
+  { // Entry 213
+    0x1.aff9b45e94d32d8e5bde25dec6f357d6p-9,
+    -0x1.fffe3ep41
+  },
+  { // Entry 214
+    -0x1.ea5464fff571f6ff335004eade301b56p-1,
+    0x1.ffff8ep3
+  },
+  { // Entry 215
+    -0x1.ea5464fff571f6ff335004eade301b56p-1,
+    -0x1.ffff8ep3
+  },
+  { // Entry 216
+    0x1.fffd4e735df6db6a7ca7cb0436e6ef48p-1,
+    0x1.ffff8ep40
+  },
+  { // Entry 217
+    0x1.fffd4e735df6db6a7ca7cb0436e6ef48p-1,
+    -0x1.ffff8ep40
+  },
+  { // Entry 218
+    -0x1.88e527ffedd85d2e2429166f795d9788p-7,
+    0x1.ffff9ep45
+  },
+  { // Entry 219
+    -0x1.88e527ffedd85d2e2429166f795d9788p-7,
+    -0x1.ffff9ep45
+  },
+  { // Entry 220
+    -0x1.db8fa0e071f98061f27ef67161511437p-3,
+    0x1.ffffbap23
+  },
+  { // Entry 221
+    -0x1.db8fa0e071f98061f27ef67161511437p-3,
+    -0x1.ffffbap23
+  },
+  { // Entry 222
+    -0x1.fe5b337f4cfe25d468defe65d5c524adp-1,
+    0x1.ffffdcp8
+  },
+  { // Entry 223
+    -0x1.fe5b337f4cfe25d468defe65d5c524adp-1,
+    -0x1.ffffdcp8
+  },
+  { // Entry 224
+    -0x1.f59038f4c2dd33d159171ee80bb64886p-5,
+    0x1.fffff8p118
+  },
+  { // Entry 225
+    -0x1.f59038f4c2dd33d159171ee80bb64886p-5,
+    -0x1.fffff8p118
+  },
+  { // Entry 226
+    0x1.fffffc00001155553a7d27f4a289f319p-1,
+    0x1.fffffcp-12
+  },
+  { // Entry 227
+    0x1.fffffc00001155553a7d27f4a289f319p-1,
+    -0x1.fffffcp-12
+  },
+  { // Entry 228
+    -0x1.f9d6bdd62473cd2b729fe3a67a4e9157p-4,
+    0x1.fffffcp22
+  },
+  { // Entry 229
+    -0x1.f9d6bdd62473cd2b729fe3a67a4e9157p-4,
+    -0x1.fffffcp22
+  },
+  { // Entry 230
+    0x1.eb408300005d91b9814cada88f5fc596p-1,
+    0x1.24836cp-2
+  },
+  { // Entry 231
+    0x1.eb408300005d91b9814cada88f5fc596p-1,
+    -0x1.24836cp-2
+  },
+  { // Entry 232
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 233
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149
+  },
+  { // Entry 234
+    0x1.p0,
+    0.0
+  },
+  { // Entry 235
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149
+  },
+  { // Entry 236
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 237
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p-126
+  },
+  { // Entry 238
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p-126
+  },
+  { // Entry 239
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-126
+  },
+  { // Entry 240
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-126
+  },
+  { // Entry 241
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 242
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp-127
+  },
+  { // Entry 243
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp-127
+  },
+  { // Entry 244
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 245
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-126
+  },
+  { // Entry 246
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-126
+  },
+  { // Entry 247
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p-126
+  },
+  { // Entry 248
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p-126
+  },
+  { // Entry 249
+    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
+    0x1.99999ap-13
+  },
+  { // Entry 250
+    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
+    -0x1.99999ap-13
+  },
+  { // Entry 251
+    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
+    0x1.99999ap-12
+  },
+  { // Entry 252
+    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
+    -0x1.99999ap-12
+  },
+  { // Entry 253
+    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
+    0x1.333334p-11
+  },
+  { // Entry 254
+    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
+    -0x1.333334p-11
+  },
+  { // Entry 255
+    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
+    0x1.99999ap-11
+  },
+  { // Entry 256
+    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
+    -0x1.99999ap-11
+  },
+  { // Entry 257
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    0x1.p-10
+  },
+  { // Entry 258
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    -0x1.p-10
+  },
+  { // Entry 259
+    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
+    0x1.333334p-10
+  },
+  { // Entry 260
+    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
+    -0x1.333334p-10
+  },
+  { // Entry 261
+    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
+    0x1.666668p-10
+  },
+  { // Entry 262
+    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
+    -0x1.666668p-10
+  },
+  { // Entry 263
+    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
+    0x1.99999cp-10
+  },
+  { // Entry 264
+    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
+    -0x1.99999cp-10
+  },
+  { // Entry 265
+    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
+    0x1.ccccccp-10
+  },
+  { // Entry 266
+    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
+    -0x1.ccccccp-10
+  },
+  { // Entry 267
+    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
+    0x1.066666p-7
+  },
+  { // Entry 268
+    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
+    -0x1.066666p-7
+  },
+  { // Entry 269
+    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
+    0x1.ccccccp-7
+  },
+  { // Entry 270
+    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
+    -0x1.ccccccp-7
+  },
+  { // Entry 271
+    0x1.ffe57a785123226c1e2efb411353edc9p-1,
+    0x1.499998p-6
+  },
+  { // Entry 272
+    0x1.ffe57a785123226c1e2efb411353edc9p-1,
+    -0x1.499998p-6
+  },
+  { // Entry 273
+    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
+    0x1.acccccp-6
+  },
+  { // Entry 274
+    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
+    -0x1.acccccp-6
+  },
+  { // Entry 275
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    0x1.08p-5
+  },
+  { // Entry 276
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    -0x1.08p-5
+  },
+  { // Entry 277
+    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
+    0x1.39999ap-5
+  },
+  { // Entry 278
+    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
+    -0x1.39999ap-5
+  },
+  { // Entry 279
+    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
+    0x1.6b3334p-5
+  },
+  { // Entry 280
+    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
+    -0x1.6b3334p-5
+  },
+  { // Entry 281
+    0x1.ff59a00cc4ad492ca2597495412998edp-1,
+    0x1.9ccccep-5
+  },
+  { // Entry 282
+    0x1.ff59a00cc4ad492ca2597495412998edp-1,
+    -0x1.9ccccep-5
+  },
+  { // Entry 283
+    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
+    0x1.ce6666p-5
+  },
+  { // Entry 284
+    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
+    -0x1.ce6666p-5
+  },
+  { // Entry 285
+    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
+    0x1.5e7fc4p-1
+  },
+  { // Entry 286
+    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
+    -0x1.5e7fc4p-1
+  },
+  { // Entry 287
+    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
+    0x1.4e7fc4p0
+  },
+  { // Entry 288
+    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
+    -0x1.4e7fc4p0
+  },
+  { // Entry 289
+    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
+    0x1.edbfa6p0
+  },
+  { // Entry 290
+    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
+    -0x1.edbfa6p0
+  },
+  { // Entry 291
+    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
+    0x1.467fc4p1
+  },
+  { // Entry 292
+    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
+    -0x1.467fc4p1
+  },
+  { // Entry 293
+    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
+    0x1.961fb4p1
+  },
+  { // Entry 294
+    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
+    -0x1.961fb4p1
+  },
+  { // Entry 295
+    -0x1.969082007733d787f4c36ba0f9425694p-1,
+    0x1.e5bfa4p1
+  },
+  { // Entry 296
+    -0x1.969082007733d787f4c36ba0f9425694p-1,
+    -0x1.e5bfa4p1
+  },
+  { // Entry 297
+    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
+    0x1.1aafcap2
+  },
+  { // Entry 298
+    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
+    -0x1.1aafcap2
+  },
+  { // Entry 299
+    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
+    0x1.427fc2p2
+  },
+  { // Entry 300
+    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
+    -0x1.427fc2p2
+  },
+  { // Entry 301
+    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
+    0x1.6a4fbap2
+  },
+  { // Entry 302
+    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
+    -0x1.6a4fbap2
+  },
+  { // Entry 303
+    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
+    0x1.6af2f0p2
+  },
+  { // Entry 304
+    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
+    -0x1.6af2f0p2
+  },
+  { // Entry 305
+    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
+    0x1.43c62ap2
+  },
+  { // Entry 306
+    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
+    -0x1.43c62ap2
+  },
+  { // Entry 307
+    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
+    0x1.1c9964p2
+  },
+  { // Entry 308
+    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
+    -0x1.1c9964p2
+  },
+  { // Entry 309
+    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
+    0x1.ead93cp1
+  },
+  { // Entry 310
+    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
+    -0x1.ead93cp1
+  },
+  { // Entry 311
+    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
+    0x1.9c7fb0p1
+  },
+  { // Entry 312
+    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
+    -0x1.9c7fb0p1
+  },
+  { // Entry 313
+    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
+    0x1.4e2624p1
+  },
+  { // Entry 314
+    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
+    -0x1.4e2624p1
+  },
+  { // Entry 315
+    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
+    0x1.ff9932p0
+  },
+  { // Entry 316
+    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
+    -0x1.ff9932p0
+  },
+  { // Entry 317
+    0x1.77a92ca01bc79c195dda33736807f986p-3,
+    0x1.62e61cp0
+  },
+  { // Entry 318
+    0x1.77a92ca01bc79c195dda33736807f986p-3,
+    -0x1.62e61cp0
+  },
+  { // Entry 319
+    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
+    0x1.8c662cp-1
+  },
+  { // Entry 320
+    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
+    -0x1.8c662cp-1
+  },
+  { // Entry 321
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 322
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    0x1.a8aa1cp0
+  },
+  { // Entry 323
+    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
+    -0x1.95ec8ap0
+  },
+  { // Entry 324
+    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
+    0x1.95ec8ap0
+  },
+  { // Entry 325
+    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
+    -0x1.832ef8p0
+  },
+  { // Entry 326
+    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
+    0x1.832ef8p0
+  },
+  { // Entry 327
+    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
+    -0x1.707166p0
+  },
+  { // Entry 328
+    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
+    0x1.707166p0
+  },
+  { // Entry 329
+    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
+    -0x1.5db3d4p0
+  },
+  { // Entry 330
+    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
+    0x1.5db3d4p0
+  },
+  { // Entry 331
+    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
+    -0x1.4af642p0
+  },
+  { // Entry 332
+    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
+    0x1.4af642p0
+  },
+  { // Entry 333
+    0x1.60437277d48067e85230bce1883eaabap-2,
+    -0x1.3838b0p0
+  },
+  { // Entry 334
+    0x1.60437277d48067e85230bce1883eaabap-2,
+    0x1.3838b0p0
+  },
+  { // Entry 335
+    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
+    -0x1.257b1ep0
+  },
+  { // Entry 336
+    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
+    0x1.257b1ep0
+  },
+  { // Entry 337
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    -0x1.12bd92p0
+  },
+  { // Entry 338
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    0x1.12bd92p0
+  },
+  { // Entry 339
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 340
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 341
+    0x1.3805a2dafda7f8554aec65dab348a714p-1,
+    -0x1.d4b87cp-1
+  },
+  { // Entry 342
+    0x1.3805a2dafda7f8554aec65dab348a714p-1,
+    0x1.d4b87cp-1
+  },
+  { // Entry 343
+    0x1.48e52ff5bbe794618b85190b86411824p-1,
+    -0x1.bf14bap-1
+  },
+  { // Entry 344
+    0x1.48e52ff5bbe794618b85190b86411824p-1,
+    0x1.bf14bap-1
+  },
+  { // Entry 345
+    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
+    -0x1.a970f8p-1
+  },
+  { // Entry 346
+    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
+    0x1.a970f8p-1
+  },
+  { // Entry 347
+    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
+    -0x1.93cd36p-1
+  },
+  { // Entry 348
+    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
+    0x1.93cd36p-1
+  },
+  { // Entry 349
+    0x1.77e00c3718528c36f722e63096c2646bp-1,
+    -0x1.7e2974p-1
+  },
+  { // Entry 350
+    0x1.77e00c3718528c36f722e63096c2646bp-1,
+    0x1.7e2974p-1
+  },
+  { // Entry 351
+    0x1.863a88d6b064f36f34370722d361ce9fp-1,
+    -0x1.6885b2p-1
+  },
+  { // Entry 352
+    0x1.863a88d6b064f36f34370722d361ce9fp-1,
+    0x1.6885b2p-1
+  },
+  { // Entry 353
+    0x1.93e2989cee6084e34b533b1eb92746dap-1,
+    -0x1.52e1f0p-1
+  },
+  { // Entry 354
+    0x1.93e2989cee6084e34b533b1eb92746dap-1,
+    0x1.52e1f0p-1
+  },
+  { // Entry 355
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 356
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 357
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 358
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    0x1.0a0b02p-1
+  },
+  { // Entry 359
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    -0x1.d8f720p-2
+  },
+  { // Entry 360
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    0x1.d8f720p-2
+  },
+  { // Entry 361
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 362
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    0x1.9dd83cp-2
+  },
+  { // Entry 363
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    -0x1.62b958p-2
+  },
+  { // Entry 364
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    0x1.62b958p-2
+  },
+  { // Entry 365
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    -0x1.279a74p-2
+  },
+  { // Entry 366
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    0x1.279a74p-2
+  },
+  { // Entry 367
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    -0x1.d8f720p-3
+  },
+  { // Entry 368
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    0x1.d8f720p-3
+  },
+  { // Entry 369
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    -0x1.62b958p-3
+  },
+  { // Entry 370
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    0x1.62b958p-3
+  },
+  { // Entry 371
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    -0x1.d8f720p-4
+  },
+  { // Entry 372
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    0x1.d8f720p-4
+  },
+  { // Entry 373
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    -0x1.d8f720p-5
+  },
+  { // Entry 374
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    0x1.d8f720p-5
+  },
+  { // Entry 375
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    0x1.d8f720p-5
+  },
+  { // Entry 376
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    -0x1.d8f720p-5
+  },
+  { // Entry 377
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    0x1.d8f720p-4
+  },
+  { // Entry 378
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    -0x1.d8f720p-4
+  },
+  { // Entry 379
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    0x1.62b958p-3
+  },
+  { // Entry 380
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    -0x1.62b958p-3
+  },
+  { // Entry 381
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    0x1.d8f720p-3
+  },
+  { // Entry 382
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    -0x1.d8f720p-3
+  },
+  { // Entry 383
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    0x1.279a74p-2
+  },
+  { // Entry 384
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    -0x1.279a74p-2
+  },
+  { // Entry 385
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    0x1.62b958p-2
+  },
+  { // Entry 386
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    -0x1.62b958p-2
+  },
+  { // Entry 387
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    0x1.9dd83cp-2
+  },
+  { // Entry 388
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 389
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    0x1.d8f720p-2
+  },
+  { // Entry 390
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    -0x1.d8f720p-2
+  },
+  { // Entry 391
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    0x1.0a0b02p-1
+  },
+  { // Entry 392
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 393
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 394
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 395
+    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
+    0x1.52e1f8p-1
+  },
+  { // Entry 396
+    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
+    -0x1.52e1f8p-1
+  },
+  { // Entry 397
+    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
+    0x1.6885bap-1
+  },
+  { // Entry 398
+    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
+    -0x1.6885bap-1
+  },
+  { // Entry 399
+    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
+    0x1.7e297cp-1
+  },
+  { // Entry 400
+    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
+    -0x1.7e297cp-1
+  },
+  { // Entry 401
+    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
+    0x1.93cd3ep-1
+  },
+  { // Entry 402
+    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
+    -0x1.93cd3ep-1
+  },
+  { // Entry 403
+    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
+    0x1.a971p-1
+  },
+  { // Entry 404
+    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
+    -0x1.a971p-1
+  },
+  { // Entry 405
+    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
+    0x1.bf14c2p-1
+  },
+  { // Entry 406
+    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
+    -0x1.bf14c2p-1
+  },
+  { // Entry 407
+    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
+    0x1.d4b884p-1
+  },
+  { // Entry 408
+    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
+    -0x1.d4b884p-1
+  },
+  { // Entry 409
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 410
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 411
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    0x1.12bd92p0
+  },
+  { // Entry 412
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    -0x1.12bd92p0
+  },
+  { // Entry 413
+    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
+    0x1.257b24p0
+  },
+  { // Entry 414
+    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
+    -0x1.257b24p0
+  },
+  { // Entry 415
+    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
+    0x1.3838b6p0
+  },
+  { // Entry 416
+    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
+    -0x1.3838b6p0
+  },
+  { // Entry 417
+    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
+    0x1.4af648p0
+  },
+  { // Entry 418
+    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
+    -0x1.4af648p0
+  },
+  { // Entry 419
+    0x1.a072252090c33828767aee3e040ccddfp-3,
+    0x1.5db3dap0
+  },
+  { // Entry 420
+    0x1.a072252090c33828767aee3e040ccddfp-3,
+    -0x1.5db3dap0
+  },
+  { // Entry 421
+    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
+    0x1.70716cp0
+  },
+  { // Entry 422
+    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
+    -0x1.70716cp0
+  },
+  { // Entry 423
+    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
+    0x1.832efep0
+  },
+  { // Entry 424
+    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
+    -0x1.832efep0
+  },
+  { // Entry 425
+    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
+    0x1.95ec90p0
+  },
+  { // Entry 426
+    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
+    -0x1.95ec90p0
+  },
+  { // Entry 427
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    0x1.a8aa1cp0
+  },
+  { // Entry 428
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 429
+    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
+    0x1.04aff8p0
+  },
+  { // Entry 430
+    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
+    -0x1.04aff8p0
+  },
+  { // Entry 431
+    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
+    0x1.04b0a0p0
+  },
+  { // Entry 432
+    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
+    -0x1.04b0a0p0
+  },
+  { // Entry 433
+    0x1.0cb10893a9b5471a44356072cb33b395p-1,
+    0x1.04b148p0
+  },
+  { // Entry 434
+    0x1.0cb10893a9b5471a44356072cb33b395p-1,
+    -0x1.04b148p0
+  },
+  { // Entry 435
+    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
+    0x1.04b1f0p0
+  },
+  { // Entry 436
+    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
+    -0x1.04b1f0p0
+  },
+  { // Entry 437
+    0x1.0caecc8b7782f86827af92b0b2374510p-1,
+    0x1.04b298p0
+  },
+  { // Entry 438
+    0x1.0caecc8b7782f86827af92b0b2374510p-1,
+    -0x1.04b298p0
+  },
+  { // Entry 439
+    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
+    0x1.04b340p0
+  },
+  { // Entry 440
+    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
+    -0x1.04b340p0
+  },
+  { // Entry 441
+    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
+    0x1.04b3e8p0
+  },
+  { // Entry 442
+    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
+    -0x1.04b3e8p0
+  },
+  { // Entry 443
+    0x1.0cab727bc8619d628361876e1f30a633p-1,
+    0x1.04b490p0
+  },
+  { // Entry 444
+    0x1.0cab727bc8619d628361876e1f30a633p-1,
+    -0x1.04b490p0
+  },
+  { // Entry 445
+    0x1.0caa5b450a4324f204a556b072da124ap-1,
+    0x1.04b534p0
+  },
+  { // Entry 446
+    0x1.0caa5b450a4324f204a556b072da124ap-1,
+    -0x1.04b534p0
+  },
+  { // Entry 447
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 448
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149
+  },
+  { // Entry 449
+    0x1.p0,
+    0.0
+  },
+  { // Entry 450
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149
+  },
+  { // Entry 451
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 452
+    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
+    0x1.279a72p-1
+  },
+  { // Entry 453
+    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
+    -0x1.279a72p-1
+  },
+  { // Entry 454
+    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
+    0x1.279a74p-1
+  },
+  { // Entry 455
+    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
+    -0x1.279a74p-1
+  },
+  { // Entry 456
+    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
+    0x1.279a76p-1
+  },
+  { // Entry 457
+    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
+    -0x1.279a76p-1
+  },
+  { // Entry 458
+    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
+    0x1.bb67acp0
+  },
+  { // Entry 459
+    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
+    -0x1.bb67acp0
+  },
+  { // Entry 460
+    -0x1.48d1d9b467e37955337311decd09fc74p-3,
+    0x1.bb67aep0
+  },
+  { // Entry 461
+    -0x1.48d1d9b467e37955337311decd09fc74p-3,
+    -0x1.bb67aep0
+  },
+  { // Entry 462
+    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
+    0x1.bb67b0p0
+  },
+  { // Entry 463
+    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
+    -0x1.bb67b0p0
+  },
+  { // Entry 464
+    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
+    0x1.bffffep-2
+  },
+  { // Entry 465
+    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
+    -0x1.bffffep-2
+  },
+  { // Entry 466
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    0x1.c0p-2
+  },
+  { // Entry 467
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    -0x1.c0p-2
+  },
+  { // Entry 468
+    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
+    0x1.c00002p-2
+  },
+  { // Entry 469
+    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
+    -0x1.c00002p-2
+  },
+  { // Entry 470
+    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
+    0x1.5ffffep-1
+  },
+  { // Entry 471
+    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
+    -0x1.5ffffep-1
+  },
+  { // Entry 472
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    0x1.60p-1
+  },
+  { // Entry 473
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    -0x1.60p-1
+  },
+  { // Entry 474
+    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
+    0x1.600002p-1
+  },
+  { // Entry 475
+    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
+    -0x1.600002p-1
+  },
+  { // Entry 476
+    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
+    0x1.2ffffep0
+  },
+  { // Entry 477
+    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
+    -0x1.2ffffep0
+  },
+  { // Entry 478
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    0x1.30p0
+  },
+  { // Entry 479
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    -0x1.30p0
+  },
+  { // Entry 480
+    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
+    0x1.300002p0
+  },
+  { // Entry 481
+    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
+    -0x1.300002p0
+  },
+  { // Entry 482
+    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
+    0x1.37fffep1
+  },
+  { // Entry 483
+    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
+    -0x1.37fffep1
+  },
+  { // Entry 484
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    0x1.38p1
+  },
+  { // Entry 485
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    -0x1.38p1
+  },
+  { // Entry 486
+    -0x1.863eff63dfa00bfc758baf469469d741p-1,
+    0x1.380002p1
+  },
+  { // Entry 487
+    -0x1.863eff63dfa00bfc758baf469469d741p-1,
+    -0x1.380002p1
+  },
+  { // Entry 488
+    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
+    0x1.069c8cp-4
+  },
+  { // Entry 489
+    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
+    -0x1.069c8cp-4
+  },
+  { // Entry 490
+    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
+    0x1.069c8cp-3
+  },
+  { // Entry 491
+    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
+    -0x1.069c8cp-3
+  },
+  { // Entry 492
+    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
+    0x1.89ead2p-3
+  },
+  { // Entry 493
+    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
+    -0x1.89ead2p-3
+  },
+  { // Entry 494
+    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
+    0x1.069c8cp-2
+  },
+  { // Entry 495
+    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
+    -0x1.069c8cp-2
+  },
+  { // Entry 496
+    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
+    0x1.4843b0p-2
+  },
+  { // Entry 497
+    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
+    -0x1.4843b0p-2
+  },
+  { // Entry 498
+    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
+    0x1.89ead4p-2
+  },
+  { // Entry 499
+    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
+    -0x1.89ead4p-2
+  },
+  { // Entry 500
+    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
+    0x1.cb91f8p-2
+  },
+  { // Entry 501
+    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
+    -0x1.cb91f8p-2
+  },
+  { // Entry 502
+    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
+    0x1.069c8ep-1
+  },
+  { // Entry 503
+    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
+    -0x1.069c8ep-1
+  },
+  { // Entry 504
+    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
+    0x1.277020p-1
+  },
+  { // Entry 505
+    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
+    -0x1.277020p-1
+  },
+  { // Entry 506
+    0x1.9a52e08b191bd55512c8365074f1987fp-1,
+    0x1.4843b2p-1
+  },
+  { // Entry 507
+    0x1.9a52e08b191bd55512c8365074f1987fp-1,
+    -0x1.4843b2p-1
+  },
+  { // Entry 508
+    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
+    0x1.691744p-1
+  },
+  { // Entry 509
+    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
+    -0x1.691744p-1
+  },
+  { // Entry 510
+    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
+    0x1.89ead6p-1
+  },
+  { // Entry 511
+    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
+    -0x1.89ead6p-1
+  },
+  { // Entry 512
+    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
+    0x1.aabe68p-1
+  },
+  { // Entry 513
+    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
+    -0x1.aabe68p-1
+  },
+  { // Entry 514
+    0x1.3f3a09427966e9518802dee3bf443a95p-1,
+    0x1.cb91fap-1
+  },
+  { // Entry 515
+    0x1.3f3a09427966e9518802dee3bf443a95p-1,
+    -0x1.cb91fap-1
+  },
+  { // Entry 516
+    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
+    0x1.ec658cp-1
+  },
+  { // Entry 517
+    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
+    -0x1.ec658cp-1
+  },
+  { // Entry 518
+    0x1.096abb862f9bd5515982c2818c332ff9p-1,
+    0x1.069c8ep0
+  },
+  { // Entry 519
+    0x1.096abb862f9bd5515982c2818c332ff9p-1,
+    -0x1.069c8ep0
+  },
+  { // Entry 520
+    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
+    0x1.170656p0
+  },
+  { // Entry 521
+    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
+    -0x1.170656p0
+  },
+  { // Entry 522
+    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
+    0x1.27701ep0
+  },
+  { // Entry 523
+    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
+    -0x1.27701ep0
+  },
+  { // Entry 524
+    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
+    0x1.37d9e6p0
+  },
+  { // Entry 525
+    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
+    -0x1.37d9e6p0
+  },
+  { // Entry 526
+    0x1.235b337b091cdd8ac06390abc6816b82p-2,
+    0x1.4843aep0
+  },
+  { // Entry 527
+    0x1.235b337b091cdd8ac06390abc6816b82p-2,
+    -0x1.4843aep0
+  },
+  { // Entry 528
+    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
+    0x1.58ad76p0
+  },
+  { // Entry 529
+    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
+    -0x1.58ad76p0
+  },
+  { // Entry 530
+    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
+    0x1.69173ep0
+  },
+  { // Entry 531
+    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
+    -0x1.69173ep0
+  },
+  { // Entry 532
+    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
+    0x1.798106p0
+  },
+  { // Entry 533
+    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
+    -0x1.798106p0
+  },
+  { // Entry 534
+    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
+    0x1.89eacep0
+  },
+  { // Entry 535
+    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
+    -0x1.89eacep0
+  },
+  { // Entry 536
+    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
+    0x1.9a5496p0
+  },
+  { // Entry 537
+    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
+    -0x1.9a5496p0
+  },
+  { // Entry 538
+    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
+    0x1.aabe5ep0
+  },
+  { // Entry 539
+    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
+    -0x1.aabe5ep0
+  },
+  { // Entry 540
+    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
+    0x1.bb2826p0
+  },
+  { // Entry 541
+    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
+    -0x1.bb2826p0
+  },
+  { // Entry 542
+    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
+    0x1.cb91eep0
+  },
+  { // Entry 543
+    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
+    -0x1.cb91eep0
+  },
+  { // Entry 544
+    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
+    0x1.dbfbb6p0
+  },
+  { // Entry 545
+    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
+    -0x1.dbfbb6p0
+  },
+  { // Entry 546
+    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
+    0x1.ec657ep0
+  },
+  { // Entry 547
+    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
+    -0x1.ec657ep0
+  },
+  { // Entry 548
+    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
+    0x1.fccf46p0
+  },
+  { // Entry 549
+    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
+    -0x1.fccf46p0
+  },
+  { // Entry 550
+    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
+    0x1.069c88p1
+  },
+  { // Entry 551
+    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
+    -0x1.069c88p1
+  },
+  { // Entry 552
+    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
+    0x1.0ed16cp1
+  },
+  { // Entry 553
+    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
+    -0x1.0ed16cp1
+  },
+  { // Entry 554
+    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
+    0x1.170650p1
+  },
+  { // Entry 555
+    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
+    -0x1.170650p1
+  },
+  { // Entry 556
+    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
+    0x1.1f3b34p1
+  },
+  { // Entry 557
+    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
+    -0x1.1f3b34p1
+  },
+  { // Entry 558
+    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
+    0x1.277018p1
+  },
+  { // Entry 559
+    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
+    -0x1.277018p1
+  },
+  { // Entry 560
+    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
+    0x1.2fa4fcp1
+  },
+  { // Entry 561
+    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
+    -0x1.2fa4fcp1
+  },
+  { // Entry 562
+    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
+    0x1.37d9e0p1
+  },
+  { // Entry 563
+    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
+    -0x1.37d9e0p1
+  },
+  { // Entry 564
+    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
+    0x1.400ec4p1
+  },
+  { // Entry 565
+    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
+    -0x1.400ec4p1
+  },
+  { // Entry 566
+    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
+    0x1.4843a8p1
+  },
+  { // Entry 567
+    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
+    -0x1.4843a8p1
+  },
+  { // Entry 568
+    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
+    0x1.50788cp1
+  },
+  { // Entry 569
+    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
+    -0x1.50788cp1
+  },
+  { // Entry 570
+    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
+    0x1.58ad70p1
+  },
+  { // Entry 571
+    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
+    -0x1.58ad70p1
+  },
+  { // Entry 572
+    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
+    0x1.60e254p1
+  },
+  { // Entry 573
+    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
+    -0x1.60e254p1
+  },
+  { // Entry 574
+    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
+    0x1.691738p1
+  },
+  { // Entry 575
+    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
+    -0x1.691738p1
+  },
+  { // Entry 576
+    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
+    0x1.714c1cp1
+  },
+  { // Entry 577
+    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
+    -0x1.714c1cp1
+  },
+  { // Entry 578
+    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
+    0x1.7981p1
+  },
+  { // Entry 579
+    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
+    -0x1.7981p1
+  },
+  { // Entry 580
+    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
+    0x1.81b5e4p1
+  },
+  { // Entry 581
+    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
+    -0x1.81b5e4p1
+  },
+  { // Entry 582
+    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
+    0x1.89eac8p1
+  },
+  { // Entry 583
+    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
+    -0x1.89eac8p1
+  },
+  { // Entry 584
+    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
+    -0x1.81b5eep2
+  },
+  { // Entry 585
+    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
+    0x1.81b5eep2
+  },
+  { // Entry 586
+    0x1.be1d849ec649b797320e985d0b82ae85p-1,
+    -0x1.714c26p2
+  },
+  { // Entry 587
+    0x1.be1d849ec649b797320e985d0b82ae85p-1,
+    0x1.714c26p2
+  },
+  { // Entry 588
+    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
+    -0x1.60e25ep2
+  },
+  { // Entry 589
+    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
+    0x1.60e25ep2
+  },
+  { // Entry 590
+    0x1.096ad87c326622c42de34f92814cfa84p-1,
+    -0x1.507896p2
+  },
+  { // Entry 591
+    0x1.096ad87c326622c42de34f92814cfa84p-1,
+    0x1.507896p2
+  },
+  { // Entry 592
+    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
+    -0x1.400ecep2
+  },
+  { // Entry 593
+    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
+    0x1.400ecep2
+  },
+  { // Entry 594
+    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
+    -0x1.2fa506p2
+  },
+  { // Entry 595
+    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
+    0x1.2fa506p2
+  },
+  { // Entry 596
+    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
+    -0x1.1f3b3ep2
+  },
+  { // Entry 597
+    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
+    0x1.1f3b3ep2
+  },
+  { // Entry 598
+    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
+    -0x1.0ed176p2
+  },
+  { // Entry 599
+    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
+    0x1.0ed176p2
+  },
+  { // Entry 600
+    -0x1.5837ae8569c95846e6164d9636546120p-1,
+    -0x1.fccf5ap1
+  },
+  { // Entry 601
+    -0x1.5837ae8569c95846e6164d9636546120p-1,
+    0x1.fccf5ap1
+  },
+  { // Entry 602
+    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
+    -0x1.dbfbc8p1
+  },
+  { // Entry 603
+    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
+    0x1.dbfbc8p1
+  },
+  { // Entry 604
+    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
+    -0x1.bb2836p1
+  },
+  { // Entry 605
+    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
+    0x1.bb2836p1
+  },
+  { // Entry 606
+    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
+    -0x1.9a54a4p1
+  },
+  { // Entry 607
+    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
+    0x1.9a54a4p1
+  },
+  { // Entry 608
+    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
+    -0x1.798112p1
+  },
+  { // Entry 609
+    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
+    0x1.798112p1
+  },
+  { // Entry 610
+    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
+    -0x1.58ad80p1
+  },
+  { // Entry 611
+    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
+    0x1.58ad80p1
+  },
+  { // Entry 612
+    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
+    -0x1.37d9eep1
+  },
+  { // Entry 613
+    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
+    0x1.37d9eep1
+  },
+  { // Entry 614
+    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
+    -0x1.17065cp1
+  },
+  { // Entry 615
+    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
+    0x1.17065cp1
+  },
+  { // Entry 616
+    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
+    -0x1.ec6594p0
+  },
+  { // Entry 617
+    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
+    0x1.ec6594p0
+  },
+  { // Entry 618
+    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
+    -0x1.aabe70p0
+  },
+  { // Entry 619
+    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
+    0x1.aabe70p0
+  },
+  { // Entry 620
+    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
+    -0x1.69174cp0
+  },
+  { // Entry 621
+    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
+    0x1.69174cp0
+  },
+  { // Entry 622
+    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
+    -0x1.277028p0
+  },
+  { // Entry 623
+    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
+    0x1.277028p0
+  },
+  { // Entry 624
+    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
+    -0x1.cb920ap-1
+  },
+  { // Entry 625
+    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
+    0x1.cb920ap-1
+  },
+  { // Entry 626
+    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
+    -0x1.4843c4p-1
+  },
+  { // Entry 627
+    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
+    0x1.4843c4p-1
+  },
+  { // Entry 628
+    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
+    -0x1.89eafcp-2
+  },
+  { // Entry 629
+    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
+    0x1.89eafcp-2
+  },
+  { // Entry 630
+    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
+    -0x1.069ce0p-3
+  },
+  { // Entry 631
+    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
+    0x1.069ce0p-3
+  },
+  { // Entry 632
+    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
+    0x1.069c38p-3
+  },
+  { // Entry 633
+    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
+    -0x1.069c38p-3
+  },
+  { // Entry 634
+    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
+    0x1.89eaa8p-2
+  },
+  { // Entry 635
+    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
+    -0x1.89eaa8p-2
+  },
+  { // Entry 636
+    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
+    0x1.48439ap-1
+  },
+  { // Entry 637
+    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
+    -0x1.48439ap-1
+  },
+  { // Entry 638
+    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
+    0x1.cb91e0p-1
+  },
+  { // Entry 639
+    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
+    -0x1.cb91e0p-1
+  },
+  { // Entry 640
+    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
+    0x1.277014p0
+  },
+  { // Entry 641
+    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
+    -0x1.277014p0
+  },
+  { // Entry 642
+    0x1.46dc8a919b27840cda6e18a079da459cp-3,
+    0x1.691738p0
+  },
+  { // Entry 643
+    0x1.46dc8a919b27840cda6e18a079da459cp-3,
+    -0x1.691738p0
+  },
+  { // Entry 644
+    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
+    0x1.aabe5cp0
+  },
+  { // Entry 645
+    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
+    -0x1.aabe5cp0
+  },
+  { // Entry 646
+    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
+    0x1.ec6580p0
+  },
+  { // Entry 647
+    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
+    -0x1.ec6580p0
+  },
+  { // Entry 648
+    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
+    0x1.170652p1
+  },
+  { // Entry 649
+    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
+    -0x1.170652p1
+  },
+  { // Entry 650
+    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
+    0x1.37d9e4p1
+  },
+  { // Entry 651
+    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
+    -0x1.37d9e4p1
+  },
+  { // Entry 652
+    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
+    0x1.58ad76p1
+  },
+  { // Entry 653
+    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
+    -0x1.58ad76p1
+  },
+  { // Entry 654
+    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
+    0x1.798108p1
+  },
+  { // Entry 655
+    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
+    -0x1.798108p1
+  },
+  { // Entry 656
+    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
+    0x1.9a549ap1
+  },
+  { // Entry 657
+    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
+    -0x1.9a549ap1
+  },
+  { // Entry 658
+    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
+    0x1.bb282cp1
+  },
+  { // Entry 659
+    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
+    -0x1.bb282cp1
+  },
+  { // Entry 660
+    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
+    0x1.dbfbbep1
+  },
+  { // Entry 661
+    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
+    -0x1.dbfbbep1
+  },
+  { // Entry 662
+    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
+    0x1.fccf50p1
+  },
+  { // Entry 663
+    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
+    -0x1.fccf50p1
+  },
+  { // Entry 664
+    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
+    0x1.0ed170p2
+  },
+  { // Entry 665
+    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
+    -0x1.0ed170p2
+  },
+  { // Entry 666
+    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
+    0x1.1f3b38p2
+  },
+  { // Entry 667
+    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
+    -0x1.1f3b38p2
+  },
+  { // Entry 668
+    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
+    0x1.2fa5p2
+  },
+  { // Entry 669
+    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
+    -0x1.2fa5p2
+  },
+  { // Entry 670
+    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
+    0x1.400ec8p2
+  },
+  { // Entry 671
+    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
+    -0x1.400ec8p2
+  },
+  { // Entry 672
+    0x1.096aaf70341485062f443c80a90a3be3p-1,
+    0x1.507890p2
+  },
+  { // Entry 673
+    0x1.096aaf70341485062f443c80a90a3be3p-1,
+    -0x1.507890p2
+  },
+  { // Entry 674
+    0x1.6fcb6ae03107be458d07361371efabb4p-1,
+    0x1.60e258p2
+  },
+  { // Entry 675
+    0x1.6fcb6ae03107be458d07361371efabb4p-1,
+    -0x1.60e258p2
+  },
+  { // Entry 676
+    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
+    0x1.714c20p2
+  },
+  { // Entry 677
+    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
+    -0x1.714c20p2
+  },
+  { // Entry 678
+    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
+    0x1.81b5e8p2
+  },
+  { // Entry 679
+    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
+    -0x1.81b5e8p2
+  },
+  { // Entry 680
+    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
+    0x1.effffep-5
+  },
+  { // Entry 681
+    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
+    -0x1.effffep-5
+  },
+  { // Entry 682
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    0x1.f0p-5
+  },
+  { // Entry 683
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    -0x1.f0p-5
+  },
+  { // Entry 684
+    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
+    0x1.f00002p-5
+  },
+  { // Entry 685
+    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
+    -0x1.f00002p-5
+  },
+  { // Entry 686
+    0x1.fc21005d216a89de55b192096fc6b7bap-1,
+    0x1.f7fffep-4
+  },
+  { // Entry 687
+    0x1.fc21005d216a89de55b192096fc6b7bap-1,
+    -0x1.f7fffep-4
+  },
+  { // Entry 688
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    0x1.f8p-4
+  },
+  { // Entry 689
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    -0x1.f8p-4
+  },
+  { // Entry 690
+    0x1.fc21004d6b953945667f800ff81de0ebp-1,
+    0x1.f80002p-4
+  },
+  { // Entry 691
+    0x1.fc21004d6b953945667f800ff81de0ebp-1,
+    -0x1.f80002p-4
+  },
+  { // Entry 692
+    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
+    0x1.4bfffep-3
+  },
+  { // Entry 693
+    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
+    -0x1.4bfffep-3
+  },
+  { // Entry 694
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    0x1.4cp-3
+  },
+  { // Entry 695
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    -0x1.4cp-3
+  },
+  { // Entry 696
+    0x1.f949849dac6a548dd851139041106316p-1,
+    0x1.4c0002p-3
+  },
+  { // Entry 697
+    0x1.f949849dac6a548dd851139041106316p-1,
+    -0x1.4c0002p-3
+  },
+  { // Entry 698
+    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
+    0x1.333332p-2
+  },
+  { // Entry 699
+    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
+    -0x1.333332p-2
+  },
+  { // Entry 700
+    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
+    0x1.333334p-2
+  },
+  { // Entry 701
+    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
+    -0x1.333334p-2
+  },
+  { // Entry 702
+    0x1.e921dcd906824da60e43c03a7774b171p-1,
+    0x1.333336p-2
+  },
+  { // Entry 703
+    0x1.e921dcd906824da60e43c03a7774b171p-1,
+    -0x1.333336p-2
+  },
+  { // Entry 704
+    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
+    0x1.594316p-1
+  },
+  { // Entry 705
+    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
+    -0x1.594316p-1
+  },
+  { // Entry 706
+    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
+    0x1.594318p-1
+  },
+  { // Entry 707
+    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
+    -0x1.594318p-1
+  },
+  { // Entry 708
+    0x1.8feeda131852852d2fa7fe8847b05973p-1,
+    0x1.59431ap-1
+  },
+  { // Entry 709
+    0x1.8feeda131852852d2fa7fe8847b05973p-1,
+    -0x1.59431ap-1
+  },
+  { // Entry 710
+    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
+    0x1.8ffffep-1
+  },
+  { // Entry 711
+    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
+    -0x1.8ffffep-1
+  },
+  { // Entry 712
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    0x1.90p-1
+  },
+  { // Entry 713
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    -0x1.90p-1
+  },
+  { // Entry 714
+    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
+    0x1.900002p-1
+  },
+  { // Entry 715
+    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
+    -0x1.900002p-1
+  },
+  { // Entry 716
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 717
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149
+  },
+  { // Entry 718
+    0x1.p0,
+    0.0
+  },
+  { // Entry 719
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149
+  },
+  { // Entry 720
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 721
+    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
+    0x1.921fb4p-5
+  },
+  { // Entry 722
+    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
+    -0x1.921fb4p-5
+  },
+  { // Entry 723
+    0x1.ff621e370373dc6f3963d42896ede078p-1,
+    0x1.921fb6p-5
+  },
+  { // Entry 724
+    0x1.ff621e370373dc6f3963d42896ede078p-1,
+    -0x1.921fb6p-5
+  },
+  { // Entry 725
+    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
+    0x1.921fb8p-5
+  },
+  { // Entry 726
+    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
+    -0x1.921fb8p-5
+  },
+  { // Entry 727
+    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
+    0x1.921fb4p-4
+  },
+  { // Entry 728
+    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
+    -0x1.921fb4p-4
+  },
+  { // Entry 729
+    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
+    0x1.921fb6p-4
+  },
+  { // Entry 730
+    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
+    -0x1.921fb6p-4
+  },
+  { // Entry 731
+    0x1.fd88da347f8e696999ffd58060ba3569p-1,
+    0x1.921fb8p-4
+  },
+  { // Entry 732
+    0x1.fd88da347f8e696999ffd58060ba3569p-1,
+    -0x1.921fb8p-4
+  },
+  { // Entry 733
+    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
+    0x1.921fb4p-3
+  },
+  { // Entry 734
+    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
+    -0x1.921fb4p-3
+  },
+  { // Entry 735
+    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
+    0x1.921fb6p-3
+  },
+  { // Entry 736
+    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
+    -0x1.921fb6p-3
+  },
+  { // Entry 737
+    0x1.f6297cdd55014a808b883fd183f318acp-1,
+    0x1.921fb8p-3
+  },
+  { // Entry 738
+    0x1.f6297cdd55014a808b883fd183f318acp-1,
+    -0x1.921fb8p-3
+  },
+  { // Entry 739
+    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
+    0x1.921fb4p-2
+  },
+  { // Entry 740
+    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
+    -0x1.921fb4p-2
+  },
+  { // Entry 741
+    0x1.d906bccf3cb875874da3da4c01104bafp-1,
+    0x1.921fb6p-2
+  },
+  { // Entry 742
+    0x1.d906bccf3cb875874da3da4c01104bafp-1,
+    -0x1.921fb6p-2
+  },
+  { // Entry 743
+    0x1.d906bc6d452d744f210810861102f2dap-1,
+    0x1.921fb8p-2
+  },
+  { // Entry 744
+    0x1.d906bc6d452d744f210810861102f2dap-1,
+    -0x1.921fb8p-2
+  },
+  { // Entry 745
+    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
+    0x1.921fb4p-1
+  },
+  { // Entry 746
+    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
+    -0x1.921fb4p-1
+  },
+  { // Entry 747
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 748
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 749
+    0x1.6a09e4792971e22c9a00261aeac070dap-1,
+    0x1.921fb8p-1
+  },
+  { // Entry 750
+    0x1.6a09e4792971e22c9a00261aeac070dap-1,
+    -0x1.921fb8p-1
+  },
+  { // Entry 751
+    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
+    0x1.921fb4p0
+  },
+  { // Entry 752
+    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
+    -0x1.921fb4p0
+  },
+  { // Entry 753
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    0x1.921fb6p0
+  },
+  { // Entry 754
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    -0x1.921fb6p0
+  },
+  { // Entry 755
+    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
+    0x1.921fb8p0
+  },
+  { // Entry 756
+    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
+    -0x1.921fb8p0
+  },
+  { // Entry 757
+    -0x1.fffffffffff9951b30e084732e60bb85p-1,
+    0x1.921fb4p1
+  },
+  { // Entry 758
+    -0x1.fffffffffff9951b30e084732e60bb85p-1,
+    -0x1.921fb4p1
+  },
+  { // Entry 759
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    0x1.921fb6p1
+  },
+  { // Entry 760
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    -0x1.921fb6p1
+  },
+  { // Entry 761
+    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
+    0x1.921fb8p1
+  },
+  { // Entry 762
+    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
+    -0x1.921fb8p1
+  },
+  { // Entry 763
+    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
+    0x1.921fb4p2
+  },
+  { // Entry 764
+    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
+    -0x1.921fb4p2
+  },
+  { // Entry 765
+    0x1.fffffffffff76521249c74285bf73c07p-1,
+    0x1.921fb6p2
+  },
+  { // Entry 766
+    0x1.fffffffffff76521249c74285bf73c07p-1,
+    -0x1.921fb6p2
+  },
+  { // Entry 767
+    0x1.ffffffffff8875d585b6db2c31711004p-1,
+    0x1.921fb8p2
+  },
+  { // Entry 768
+    0x1.ffffffffff8875d585b6db2c31711004p-1,
+    -0x1.921fb8p2
+  },
+  { // Entry 769
+    0x1.ffffffffff9951b30e084a6a993b8675p-1,
+    0x1.921fb4p3
+  },
+  { // Entry 770
+    0x1.ffffffffff9951b30e084a6a993b8675p-1,
+    -0x1.921fb4p3
+  },
+  { // Entry 771
+    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
+    0x1.921fb6p3
+  },
+  { // Entry 772
+    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
+    -0x1.921fb6p3
+  },
+  { // Entry 773
+    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
+    0x1.921fb8p3
+  },
+  { // Entry 774
+    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
+    -0x1.921fb8p3
+  },
+  { // Entry 775
+    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
+    0x1.921fb4p4
+  },
+  { // Entry 776
+    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
+    -0x1.921fb4p4
+  },
+  { // Entry 777
+    0x1.ffffffffff76521249c7484ea7d7a409p-1,
+    0x1.921fb6p4
+  },
+  { // Entry 778
+    0x1.ffffffffff76521249c7484ea7d7a409p-1,
+    -0x1.921fb6p4
+  },
+  { // Entry 779
+    0x1.fffffffff8875d585b720f25f0473943p-1,
+    0x1.921fb8p4
+  },
+  { // Entry 780
+    0x1.fffffffff8875d585b720f25f0473943p-1,
+    -0x1.921fb8p4
+  },
+  { // Entry 781
+    0x1.fffffffff9951b30e087de5cc38683b8p-1,
+    0x1.921fb4p5
+  },
+  { // Entry 782
+    0x1.fffffffff9951b30e087de5cc38683b8p-1,
+    -0x1.921fb4p5
+  },
+  { // Entry 783
+    0x1.fffffffffdd94849271d6b463df6bddfp-1,
+    0x1.921fb6p5
+  },
+  { // Entry 784
+    0x1.fffffffffdd94849271d6b463df6bddfp-1,
+    -0x1.921fb6p5
+  },
+  { // Entry 785
+    0x1.ffffffffe21d75616e000e55d09f8757p-1,
+    0x1.921fb8p5
+  },
+  { // Entry 786
+    0x1.ffffffffe21d75616e000e55d09f8757p-1,
+    -0x1.921fb8p5
+  },
+  { // Entry 787
+    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
+    0x1.921fb4p6
+  },
+  { // Entry 788
+    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
+    -0x1.921fb4p6
+  },
+  { // Entry 789
+    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
+    0x1.921fb6p6
+  },
+  { // Entry 790
+    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
+    -0x1.921fb6p6
+  },
+  { // Entry 791
+    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
+    0x1.921fb8p6
+  },
+  { // Entry 792
+    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
+    -0x1.921fb8p6
+  },
+  { // Entry 793
+    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
+    0x1.921fb4p7
+  },
+  { // Entry 794
+    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
+    -0x1.921fb4p7
+  },
+  { // Entry 795
+    0x1.ffffffffdd948492723342ea1da49bacp-1,
+    0x1.921fb6p7
+  },
+  { // Entry 796
+    0x1.ffffffffdd948492723342ea1da49bacp-1,
+    -0x1.921fb6p7
+  },
+  { // Entry 797
+    0x1.fffffffe21d7561725c712f068fc9718p-1,
+    0x1.921fb8p7
+  },
+  { // Entry 798
+    0x1.fffffffe21d7561725c712f068fc9718p-1,
+    -0x1.921fb8p7
+  },
+  { // Entry 799
+    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
+    0x1.2d97c4p1
+  },
+  { // Entry 800
+    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
+    -0x1.2d97c4p1
+  },
+  { // Entry 801
+    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
+    0x1.2d97c6p1
+  },
+  { // Entry 802
+    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
+    -0x1.2d97c6p1
+  },
+  { // Entry 803
+    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
+    0x1.2d97c8p1
+  },
+  { // Entry 804
+    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
+    -0x1.2d97c8p1
+  },
+  { // Entry 805
+    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
+    0x1.f6a7a0p1
+  },
+  { // Entry 806
+    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
+    -0x1.f6a7a0p1
+  },
+  { // Entry 807
+    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
+    0x1.f6a7a2p1
+  },
+  { // Entry 808
+    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
+    -0x1.f6a7a2p1
+  },
+  { // Entry 809
+    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
+    0x1.f6a7a4p1
+  },
+  { // Entry 810
+    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
+    -0x1.f6a7a4p1
+  },
+  { // Entry 811
+    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
+    0x1.2d97c4p2
+  },
+  { // Entry 812
+    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
+    -0x1.2d97c4p2
+  },
+  { // Entry 813
+    -0x1.f3321d234f1363d187dd09528b67b215p-22,
+    0x1.2d97c6p2
+  },
+  { // Entry 814
+    -0x1.f3321d234f1363d187dd09528b67b215p-22,
+    -0x1.2d97c6p2
+  },
+  { // Entry 815
+    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
+    0x1.2d97c8p2
+  },
+  { // Entry 816
+    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
+    -0x1.2d97c8p2
+  },
+  { // Entry 817
+    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
+    0x1.5fdbbcp2
+  },
+  { // Entry 818
+    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
+    -0x1.5fdbbcp2
+  },
+  { // Entry 819
+    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
+    0x1.5fdbbep2
+  },
+  { // Entry 820
+    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
+    -0x1.5fdbbep2
+  },
+  { // Entry 821
+    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
+    0x1.5fdbc0p2
+  },
+  { // Entry 822
+    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
+    -0x1.5fdbc0p2
+  },
+  { // Entry 823
+    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
+    0x1.c463a8p2
+  },
+  { // Entry 824
+    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
+    -0x1.c463a8p2
+  },
+  { // Entry 825
+    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
+    0x1.c463aap2
+  },
+  { // Entry 826
+    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
+    -0x1.c463aap2
+  },
+  { // Entry 827
+    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
+    0x1.c463acp2
+  },
+  { // Entry 828
+    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
+    -0x1.c463acp2
+  },
+  { // Entry 829
+    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
+    0x1.f6a7a0p2
+  },
+  { // Entry 830
+    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
+    -0x1.f6a7a0p2
+  },
+  { // Entry 831
+    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
+    0x1.f6a7a2p2
+  },
+  { // Entry 832
+    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
+    -0x1.f6a7a2p2
+  },
+  { // Entry 833
+    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
+    0x1.f6a7a4p2
+  },
+  { // Entry 834
+    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
+    -0x1.f6a7a4p2
+  },
+  { // Entry 835
+    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
+    0x1.1475cap3
+  },
+  { // Entry 836
+    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
+    -0x1.1475cap3
+  },
+  { // Entry 837
+    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
+    0x1.1475ccp3
+  },
+  { // Entry 838
+    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
+    -0x1.1475ccp3
+  },
+  { // Entry 839
+    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
+    0x1.1475cep3
+  },
+  { // Entry 840
+    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
+    -0x1.1475cep3
+  },
+  { // Entry 841
+    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
+    0x1.2d97c4p3
+  },
+  { // Entry 842
+    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
+    -0x1.2d97c4p3
+  },
+  { // Entry 843
+    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
+    0x1.2d97c6p3
+  },
+  { // Entry 844
+    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
+    -0x1.2d97c6p3
+  },
+  { // Entry 845
+    -0x1.ffffffffffffd703498c3b8288563915p-1,
+    0x1.2d97c8p3
+  },
+  { // Entry 846
+    -0x1.ffffffffffffd703498c3b8288563915p-1,
+    -0x1.2d97c8p3
+  },
+  { // Entry 847
+    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
+    0x1.46b9c0p3
+  },
+  { // Entry 848
+    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
+    -0x1.46b9c0p3
+  },
+  { // Entry 849
+    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
+    0x1.46b9c2p3
+  },
+  { // Entry 850
+    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
+    -0x1.46b9c2p3
+  },
+  { // Entry 851
+    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
+    0x1.46b9c4p3
+  },
+  { // Entry 852
+    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
+    -0x1.46b9c4p3
+  },
+  { // Entry 853
+    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
+    0x1.5fdbbcp3
+  },
+  { // Entry 854
+    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
+    -0x1.5fdbbcp3
+  },
+  { // Entry 855
+    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
+    0x1.5fdbbep3
+  },
+  { // Entry 856
+    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
+    -0x1.5fdbbep3
+  },
+  { // Entry 857
+    0x1.644588ac238ae493fa32435ba51329bfp-21,
+    0x1.5fdbc0p3
+  },
+  { // Entry 858
+    0x1.644588ac238ae493fa32435ba51329bfp-21,
+    -0x1.5fdbc0p3
+  },
+  { // Entry 859
+    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
+    0x1.78fdb6p3
+  },
+  { // Entry 860
+    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
+    -0x1.78fdb6p3
+  },
+  { // Entry 861
+    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
+    0x1.78fdb8p3
+  },
+  { // Entry 862
+    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
+    -0x1.78fdb8p3
+  },
+  { // Entry 863
+    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
+    0x1.78fdbap3
+  },
+  { // Entry 864
+    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
+    -0x1.78fdbap3
+  },
+  { // Entry 865
+    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
+    0x1.ab41aep3
+  },
+  { // Entry 866
+    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
+    -0x1.ab41aep3
+  },
+  { // Entry 867
+    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
+    0x1.ab41b0p3
+  },
+  { // Entry 868
+    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
+    -0x1.ab41b0p3
+  },
+  { // Entry 869
+    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
+    0x1.ab41b2p3
+  },
+  { // Entry 870
+    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
+    -0x1.ab41b2p3
+  },
+  { // Entry 871
+    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
+    0x1.c463a8p3
+  },
+  { // Entry 872
+    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
+    -0x1.c463a8p3
+  },
+  { // Entry 873
+    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
+    0x1.c463aap3
+  },
+  { // Entry 874
+    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
+    -0x1.c463aap3
+  },
+  { // Entry 875
+    -0x1.334d44b0945407b118b361ab78171f67p-25,
+    0x1.c463acp3
+  },
+  { // Entry 876
+    -0x1.334d44b0945407b118b361ab78171f67p-25,
+    -0x1.c463acp3
+  },
+  { // Entry 877
+    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
+    0x1.dd85a4p3
+  },
+  { // Entry 878
+    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
+    -0x1.dd85a4p3
+  },
+  { // Entry 879
+    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
+    0x1.dd85a6p3
+  },
+  { // Entry 880
+    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
+    -0x1.dd85a6p3
+  },
+  { // Entry 881
+    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
+    0x1.dd85a8p3
+  },
+  { // Entry 882
+    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
+    -0x1.dd85a8p3
+  },
+  { // Entry 883
+    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
+    0x1.f6a7a0p3
+  },
+  { // Entry 884
+    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
+    -0x1.f6a7a0p3
+  },
+  { // Entry 885
+    -0x1.ffffffffffea396ab8aee509392c755dp-1,
+    0x1.f6a7a2p3
+  },
+  { // Entry 886
+    -0x1.ffffffffffea396ab8aee509392c755dp-1,
+    -0x1.f6a7a2p3
+  },
+  { // Entry 887
+    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
+    0x1.f6a7a4p3
+  },
+  { // Entry 888
+    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
+    -0x1.f6a7a4p3
+  },
+  { // Entry 889
+    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
+    0x1.07e4ccp4
+  },
+  { // Entry 890
+    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
+    -0x1.07e4ccp4
+  },
+  { // Entry 891
+    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
+    0x1.07e4cep4
+  },
+  { // Entry 892
+    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
+    -0x1.07e4cep4
+  },
+  { // Entry 893
+    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
+    0x1.07e4d0p4
+  },
+  { // Entry 894
+    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
+    -0x1.07e4d0p4
+  },
+  { // Entry 895
+    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
+    0x1.1475cap4
+  },
+  { // Entry 896
+    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
+    -0x1.1475cap4
+  },
+  { // Entry 897
+    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
+    0x1.1475ccp4
+  },
+  { // Entry 898
+    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
+    -0x1.1475ccp4
+  },
+  { // Entry 899
+    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
+    0x1.1475cep4
+  },
+  { // Entry 900
+    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
+    -0x1.1475cep4
+  },
+  { // Entry 901
+    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
+    0x1.2106c8p4
+  },
+  { // Entry 902
+    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
+    -0x1.2106c8p4
+  },
+  { // Entry 903
+    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
+    0x1.2106cap4
+  },
+  { // Entry 904
+    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
+    -0x1.2106cap4
+  },
+  { // Entry 905
+    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
+    0x1.2106ccp4
+  },
+  { // Entry 906
+    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
+    -0x1.2106ccp4
+  },
+  { // Entry 907
+    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
+    0x1.2d97c4p4
+  },
+  { // Entry 908
+    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
+    -0x1.2d97c4p4
+  },
+  { // Entry 909
+    0x1.fffffffffc32939898f585d6948cf2d1p-1,
+    0x1.2d97c6p4
+  },
+  { // Entry 910
+    0x1.fffffffffc32939898f585d6948cf2d1p-1,
+    -0x1.2d97c6p4
+  },
+  { // Entry 911
+    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
+    0x1.2d97c8p4
+  },
+  { // Entry 912
+    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
+    -0x1.2d97c8p4
+  },
+  { // Entry 913
+    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
+    0x1.3a28c2p4
+  },
+  { // Entry 914
+    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
+    -0x1.3a28c2p4
+  },
+  { // Entry 915
+    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
+    0x1.3a28c4p4
+  },
+  { // Entry 916
+    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
+    -0x1.3a28c4p4
+  },
+  { // Entry 917
+    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
+    0x1.3a28c6p4
+  },
+  { // Entry 918
+    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
+    -0x1.3a28c6p4
+  },
+  { // Entry 919
+    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
+    0x1.46b9c0p4
+  },
+  { // Entry 920
+    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
+    -0x1.46b9c0p4
+  },
+  { // Entry 921
+    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
+    0x1.46b9c2p4
+  },
+  { // Entry 922
+    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
+    -0x1.46b9c2p4
+  },
+  { // Entry 923
+    -0x1.71136b88d4608490f2ddfe90101112aep-21,
+    0x1.46b9c4p4
+  },
+  { // Entry 924
+    -0x1.71136b88d4608490f2ddfe90101112aep-21,
+    -0x1.46b9c4p4
+  },
+  { // Entry 925
+    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
+    0x1.534abep4
+  },
+  { // Entry 926
+    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
+    -0x1.534abep4
+  },
+  { // Entry 927
+    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
+    0x1.534ac0p4
+  },
+  { // Entry 928
+    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
+    -0x1.534ac0p4
+  },
+  { // Entry 929
+    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
+    0x1.534ac2p4
+  },
+  { // Entry 930
+    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
+    -0x1.534ac2p4
+  },
+  { // Entry 931
+    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
+    0x1.5fdbbcp4
+  },
+  { // Entry 932
+    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
+    -0x1.5fdbbcp4
+  },
+  { // Entry 933
+    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
+    0x1.5fdbbep4
+  },
+  { // Entry 934
+    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
+    -0x1.5fdbbep4
+  },
+  { // Entry 935
+    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
+    0x1.5fdbc0p4
+  },
+  { // Entry 936
+    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
+    -0x1.5fdbc0p4
+  },
+  { // Entry 937
+    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
+    0x1.6c6cbap4
+  },
+  { // Entry 938
+    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
+    -0x1.6c6cbap4
+  },
+  { // Entry 939
+    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
+    0x1.6c6cbcp4
+  },
+  { // Entry 940
+    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
+    -0x1.6c6cbcp4
+  },
+  { // Entry 941
+    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
+    0x1.6c6cbep4
+  },
+  { // Entry 942
+    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
+    -0x1.6c6cbep4
+  },
+  { // Entry 943
+    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
+    0x1.78fdb6p4
+  },
+  { // Entry 944
+    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
+    -0x1.78fdb6p4
+  },
+  { // Entry 945
+    -0x1.effea46c21baa3da7c266c953a013598p-20,
+    0x1.78fdb8p4
+  },
+  { // Entry 946
+    -0x1.effea46c21baa3da7c266c953a013598p-20,
+    -0x1.78fdb8p4
+  },
+  { // Entry 947
+    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
+    0x1.78fdbap4
+  },
+  { // Entry 948
+    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
+    -0x1.78fdbap4
+  },
+  { // Entry 949
+    0x1.6a0994e68b787ee4fd6830b288225745p-1,
+    0x1.858eb4p4
+  },
+  { // Entry 950
+    0x1.6a0994e68b787ee4fd6830b288225745p-1,
+    -0x1.858eb4p4
+  },
+  { // Entry 951
+    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
+    0x1.858eb6p4
+  },
+  { // Entry 952
+    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
+    -0x1.858eb6p4
+  },
+  { // Entry 953
+    0x1.6a09ef690e2283b658509ed319483839p-1,
+    0x1.858eb8p4
+  },
+  { // Entry 954
+    0x1.6a09ef690e2283b658509ed319483839p-1,
+    -0x1.858eb8p4
+  },
+  { // Entry 955
+    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
+    0x1.fffffep62
+  },
+  { // Entry 956
+    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
+    -0x1.fffffep62
+  },
+  { // Entry 957
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    0x1.p63
+  },
+  { // Entry 958
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    -0x1.p63
+  },
+  { // Entry 959
+    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
+    0x1.000002p63
+  },
+  { // Entry 960
+    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
+    -0x1.000002p63
+  },
+  { // Entry 961
+    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
+    0x1.fffffep26
+  },
+  { // Entry 962
+    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
+    -0x1.fffffep26
+  },
+  { // Entry 963
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    0x1.p27
+  },
+  { // Entry 964
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    -0x1.p27
+  },
+  { // Entry 965
+    -0x1.ad3d80c82f4452b076581de24648435bp-1,
+    0x1.000002p27
+  },
+  { // Entry 966
+    -0x1.ad3d80c82f4452b076581de24648435bp-1,
+    -0x1.000002p27
+  },
+  { // Entry 967
+    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
+    0x1.fffffep23
+  },
+  { // Entry 968
+    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
+    -0x1.fffffep23
+  },
+  { // Entry 969
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    0x1.p24
+  },
+  { // Entry 970
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    -0x1.p24
+  },
+  { // Entry 971
+    0x1.caf8537c3e442ca8aca86c156773853ap-2,
+    0x1.000002p24
+  },
+  { // Entry 972
+    0x1.caf8537c3e442ca8aca86c156773853ap-2,
+    -0x1.000002p24
+  },
+  { // Entry 973
+    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
+    0x1.fffffep1
+  },
+  { // Entry 974
+    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
+    -0x1.fffffep1
+  },
+  { // Entry 975
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    0x1.p2
+  },
+  { // Entry 976
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    -0x1.p2
+  },
+  { // Entry 977
+    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
+    0x1.000002p2
+  },
+  { // Entry 978
+    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
+    -0x1.000002p2
+  },
+  { // Entry 979
+    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
+    0x1.fffffep0
+  },
+  { // Entry 980
+    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
+    -0x1.fffffep0
+  },
+  { // Entry 981
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    0x1.p1
+  },
+  { // Entry 982
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    -0x1.p1
+  },
+  { // Entry 983
+    -0x1.aa227401b288620a0372d5a96084915dp-2,
+    0x1.000002p1
+  },
+  { // Entry 984
+    -0x1.aa227401b288620a0372d5a96084915dp-2,
+    -0x1.000002p1
+  },
+  { // Entry 985
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 986
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 987
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.p0
+  },
+  { // Entry 988
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.p0
+  },
+  { // Entry 989
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    0x1.000002p0
+  },
+  { // Entry 990
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    -0x1.000002p0
+  },
+  { // Entry 991
+    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 992
+    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 993
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    0x1.p-1
+  },
+  { // Entry 994
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    -0x1.p-1
+  },
+  { // Entry 995
+    0x1.c1527f70409076da0c3204df1e099a83p-1,
+    0x1.000002p-1
+  },
+  { // Entry 996
+    0x1.c1527f70409076da0c3204df1e099a83p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 997
+    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
+    0x1.fffffep-3
+  },
+  { // Entry 998
+    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
+    -0x1.fffffep-3
+  },
+  { // Entry 999
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    0x1.p-2
+  },
+  { // Entry 1000
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    -0x1.p-2
+  },
+  { // Entry 1001
+    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
+    0x1.000002p-2
+  },
+  { // Entry 1002
+    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
+    -0x1.000002p-2
+  },
+  { // Entry 1003
+    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
+    0x1.fffffep-4
+  },
+  { // Entry 1004
+    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
+    -0x1.fffffep-4
+  },
+  { // Entry 1005
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    0x1.p-3
+  },
+  { // Entry 1006
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    -0x1.p-3
+  },
+  { // Entry 1007
+    0x1.fc015517e065afb6bb102c18f5919820p-1,
+    0x1.000002p-3
+  },
+  { // Entry 1008
+    0x1.fc015517e065afb6bb102c18f5919820p-1,
+    -0x1.000002p-3
+  },
+  { // Entry 1009
+    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
+    0x1.fffffep-5
+  },
+  { // Entry 1010
+    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
+    -0x1.fffffep-5
+  },
+  { // Entry 1011
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    0x1.p-4
+  },
+  { // Entry 1012
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    -0x1.p-4
+  },
+  { // Entry 1013
+    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
+    0x1.000002p-4
+  },
+  { // Entry 1014
+    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
+    -0x1.000002p-4
+  },
+  { // Entry 1015
+    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
+    0x1.fffffep-6
+  },
+  { // Entry 1016
+    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
+    -0x1.fffffep-6
+  },
+  { // Entry 1017
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    0x1.p-5
+  },
+  { // Entry 1018
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    -0x1.p-5
+  },
+  { // Entry 1019
+    0x1.ffc001545287d49b57972af5145663a0p-1,
+    0x1.000002p-5
+  },
+  { // Entry 1020
+    0x1.ffc001545287d49b57972af5145663a0p-1,
+    -0x1.000002p-5
+  },
+  { // Entry 1021
+    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
+    0x1.fffffep-7
+  },
+  { // Entry 1022
+    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
+    -0x1.fffffep-7
+  },
+  { // Entry 1023
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    0x1.p-6
+  },
+  { // Entry 1024
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    -0x1.p-6
+  },
+  { // Entry 1025
+    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
+    0x1.000002p-6
+  },
+  { // Entry 1026
+    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
+    -0x1.000002p-6
+  },
+  { // Entry 1027
+    0x1.fffffff0000020155544fff49fca38e6p-1,
+    0x1.fffffep-15
+  },
+  { // Entry 1028
+    0x1.fffffff0000020155544fff49fca38e6p-1,
+    -0x1.fffffep-15
+  },
+  { // Entry 1029
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    0x1.p-14
+  },
+  { // Entry 1030
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    -0x1.p-14
+  },
+  { // Entry 1031
+    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
+    0x1.000002p-14
+  },
+  { // Entry 1032
+    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
+    -0x1.000002p-14
+  },
+  { // Entry 1033
+    0x1.fffffffffffffc000007fffffc015555p-1,
+    0x1.fffffep-28
+  },
+  { // Entry 1034
+    0x1.fffffffffffffc000007fffffc015555p-1,
+    -0x1.fffffep-28
+  },
+  { // Entry 1035
+    0x1.fffffffffffffc000000000000015555p-1,
+    0x1.p-27
+  },
+  { // Entry 1036
+    0x1.fffffffffffffc000000000000015555p-1,
+    -0x1.p-27
+  },
+  { // Entry 1037
+    0x1.fffffffffffffbffffeffffff0015555p-1,
+    0x1.000002p-27
+  },
+  { // Entry 1038
+    0x1.fffffffffffffbffffeffffff0015555p-1,
+    -0x1.000002p-27
+  },
+  { // Entry 1039
+    0x1.fffffffffffffff000001ffffff00015p-1,
+    0x1.fffffep-31
+  },
+  { // Entry 1040
+    0x1.fffffffffffffff000001ffffff00015p-1,
+    -0x1.fffffep-31
+  },
+  { // Entry 1041
+    0x1.fffffffffffffff00000000000000015p-1,
+    0x1.p-30
+  },
+  { // Entry 1042
+    0x1.fffffffffffffff00000000000000015p-1,
+    -0x1.p-30
+  },
+  { // Entry 1043
+    0x1.ffffffffffffffefffffbfffffc00015p-1,
+    0x1.000002p-30
+  },
+  { // Entry 1044
+    0x1.ffffffffffffffefffffbfffffc00015p-1,
+    -0x1.000002p-30
+  },
+  { // Entry 1045
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1046
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1047
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1048
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1049
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1050
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1051
+    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
+    0x1.fffffcp127
+  },
+  { // Entry 1052
+    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
+    -0x1.fffffcp127
+  },
+  { // Entry 1053
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    0x1.921fb6p1
+  },
+  { // Entry 1054
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    -0x1.921fb6p1
+  },
+  { // Entry 1055
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    0x1.921fb6p0
+  },
+  { // Entry 1056
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    -0x1.921fb6p0
+  },
+  { // Entry 1057
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    0x1.000002p0
+  },
+  { // Entry 1058
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    -0x1.000002p0
+  },
+  { // Entry 1059
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.p0
+  },
+  { // Entry 1060
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.p0
+  },
+  { // Entry 1061
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 1062
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 1063
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 1064
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 1065
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p-126
+  },
+  { // Entry 1066
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p-126
+  },
+  { // Entry 1067
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-126
+  },
+  { // Entry 1068
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-126
+  },
+  { // Entry 1069
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp-127
+  },
+  { // Entry 1070
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1071
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffff8p-127
+  },
+  { // Entry 1072
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffff8p-127
+  },
+  { // Entry 1073
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-148
+  },
+  { // Entry 1074
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-148
+  },
+  { // Entry 1075
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149
+  },
+  { // Entry 1076
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 1077
+    0x1.p0,
+    0.0f
+  },
+  { // Entry 1078
+    0x1.p0,
+    -0.0f
+  },
+};
diff --git a/tests/math_data/cosh_intel_data.h b/tests/math_data/cosh_intel_data.h
new file mode 100644
index 0000000..2a8fe82
--- /dev/null
+++ b/tests/math_data/cosh_intel_data.h
@@ -0,0 +1,2934 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_cosh_intel_data[] = {
+  { // Entry 0
+    0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    -0x1.20b0659d8a7e1p9
+  },
+  { // Entry 1
+    0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    0x1.20b0659d8a7e1p9
+  },
+  { // Entry 2
+    0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    -0x1.3c640p9
+  },
+  { // Entry 3
+    0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    0x1.3c640p9
+  },
+  { // Entry 4
+    0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    -0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 5
+    0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 6
+    0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    -0x1.4aa0d96719fc6p9
+  },
+  { // Entry 7
+    0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    0x1.4aa0d96719fc6p9
+  },
+  { // Entry 8
+    0x1.eb34f0a92ee7280128c114f07d355776p958,
+    -0x1.4cb09e65eb930p9
+  },
+  { // Entry 9
+    0x1.eb34f0a92ee7280128c114f07d355776p958,
+    0x1.4cb09e65eb930p9
+  },
+  { // Entry 10
+    0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    -0x1.4d5b56d5b55acp9
+  },
+  { // Entry 11
+    0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    0x1.4d5b56d5b55acp9
+  },
+  { // Entry 12
+    0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    -0x1.50dc3739dde8ep9
+  },
+  { // Entry 13
+    0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    0x1.50dc3739dde8ep9
+  },
+  { // Entry 14
+    0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    -0x1.529994bb15795p9
+  },
+  { // Entry 15
+    0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    0x1.529994bb15795p9
+  },
+  { // Entry 16
+    0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    -0x1.5cf9ace27d120p9
+  },
+  { // Entry 17
+    0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    0x1.5cf9ace27d120p9
+  },
+  { // Entry 18
+    0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    -0x1.5fc2907bbfb53p9
+  },
+  { // Entry 19
+    0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    0x1.5fc2907bbfb53p9
+  },
+  { // Entry 20
+    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    -0x1.62e42fefa39eap9
+  },
+  { // Entry 21
+    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    0x1.62e42fefa39eap9
+  },
+  { // Entry 22
+    0x1.000004a24e558c02a9470bd8d4f869a3p0,
+    -0x1.85acfb6cf0992p-11
+  },
+  { // Entry 23
+    0x1.000004a24e558c02a9470bd8d4f869a3p0,
+    0x1.85acfb6cf0992p-11
+  },
+  { // Entry 24
+    0x1.p0,
+    -0x1.9p-1069
+  },
+  { // Entry 25
+    0x1.p0,
+    0x1.9p-1069
+  },
+  { // Entry 26
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 27
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    0x1.999999999999ap-2
+  },
+  { // Entry 28
+    0x1.580485993cf5380007b6f3dfb3426795p1,
+    -0x1.a52f2fff26658p0
+  },
+  { // Entry 29
+    0x1.580485993cf5380007b6f3dfb3426795p1,
+    0x1.a52f2fff26658p0
+  },
+  { // Entry 30
+    0x1.786cf5655ff2cf9f3e2f91013f3f8c31p9,
+    -0x1.d449f6b92fb70p2
+  },
+  { // Entry 31
+    0x1.786cf5655ff2cf9f3e2f91013f3f8c31p9,
+    0x1.d449f6b92fb70p2
+  },
+  { // Entry 32
+    0x1.072f2f89ddc2f7a6dd2420f4fde2c244p0,
+    -0x1.e411ac17c616dp-3
+  },
+  { // Entry 33
+    0x1.072f2f89ddc2f7a6dd2420f4fde2c244p0,
+    0x1.e411ac17c616dp-3
+  },
+  { // Entry 34
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    0x1.0p-21
+  },
+  { // Entry 35
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    -0x1.0p-21
+  },
+  { // Entry 36
+    0x1.000000000000080000000000000aaaaap0,
+    0x1.0p-26
+  },
+  { // Entry 37
+    0x1.000000000000080000000000000aaaaap0,
+    -0x1.0p-26
+  },
+  { // Entry 38
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    0x1.0p7
+  },
+  { // Entry 39
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    -0x1.0p7
+  },
+  { // Entry 40
+    0x1.0000000000000000000020p0,
+    0x1.0000000000001p-41
+  },
+  { // Entry 41
+    0x1.0000000000000000000020p0,
+    -0x1.0000000000001p-41
+  },
+  { // Entry 42
+    0x1.p0,
+    0x1.0000000000001p-352
+  },
+  { // Entry 43
+    0x1.p0,
+    -0x1.0000000000001p-352
+  },
+  { // Entry 44
+    0x1.749eaa93f4e98ffecd44eae03d0a1d5bp10,
+    0x1.0000000000003p3
+  },
+  { // Entry 45
+    0x1.749eaa93f4e98ffecd44eae03d0a1d5bp10,
+    -0x1.0000000000003p3
+  },
+  { // Entry 46
+    0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    0x1.0000000000007p8
+  },
+  { // Entry 47
+    0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    -0x1.0000000000007p8
+  },
+  { // Entry 48
+    0x1.000000000000080000000000110aaaaap0,
+    0x1.0000000000011p-26
+  },
+  { // Entry 49
+    0x1.000000000000080000000000110aaaaap0,
+    -0x1.0000000000011p-26
+  },
+  { // Entry 50
+    0x1.8b07551d9f67f7fdc0ff67bf92a962fdp0,
+    0x1.0000000000102p0
+  },
+  { // Entry 51
+    0x1.8b07551d9f67f7fdc0ff67bf92a962fdp0,
+    -0x1.0000000000102p0
+  },
+  { // Entry 52
+    0x1.1f43fcc5952c37ff0506eaa1b0c216eep45,
+    0x1.0000000006345p5
+  },
+  { // Entry 53
+    0x1.1f43fcc5952c37ff0506eaa1b0c216eep45,
+    -0x1.0000000006345p5
+  },
+  { // Entry 54
+    0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    0x1.0000202p9
+  },
+  { // Entry 55
+    0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    -0x1.0000202p9
+  },
+  { // Entry 56
+    0x1.203fc65a034d07ffda891f0ce56a69b6p45,
+    0x1.00070p5
+  },
+  { // Entry 57
+    0x1.203fc65a034d07ffda891f0ce56a69b6p45,
+    -0x1.00070p5
+  },
+  { // Entry 58
+    0x1.000000000000080100080000000aad55p0,
+    0x1.001p-26
+  },
+  { // Entry 59
+    0x1.000000000000080100080000000aad55p0,
+    -0x1.001p-26
+  },
+  { // Entry 60
+    0x1.75e54432c8551fabeec3248201e6c2ccp10,
+    0x1.001c0p3
+  },
+  { // Entry 61
+    0x1.75e54432c8551fabeec3248201e6c2ccp10,
+    -0x1.001c0p3
+  },
+  { // Entry 62
+    0x1.e708d6f7a319258034ee3b204d26ca92p1,
+    0x1.018p1
+  },
+  { // Entry 63
+    0x1.e708d6f7a319258034ee3b204d26ca92p1,
+    -0x1.018p1
+  },
+  { // Entry 64
+    0x1.0000216287cecc0d0dc2c5304f513db1p0,
+    0x1.057b17480eb6bp-9
+  },
+  { // Entry 65
+    0x1.0000216287cecc0d0dc2c5304f513db1p0,
+    -0x1.057b17480eb6bp-9
+  },
+  { // Entry 66
+    0x1.000008637bdd480001e95efd80447405p0,
+    0x1.0624dd41d1d06p-10
+  },
+  { // Entry 67
+    0x1.000008637bdd480001e95efd80447405p0,
+    -0x1.0624dd41d1d06p-10
+  },
+  { // Entry 68
+    0x1.fe87c460adc0882fbe85314df418d2b4p1,
+    0x1.07bd69f72017dp1
+  },
+  { // Entry 69
+    0x1.fe87c460adc0882fbe85314df418d2b4p1,
+    -0x1.07bd69f72017dp1
+  },
+  { // Entry 70
+    0x1.0000000000220800000000c10560p0,
+    0x1.080p-21
+  },
+  { // Entry 71
+    0x1.0000000000220800000000c10560p0,
+    -0x1.080p-21
+  },
+  { // Entry 72
+    0x1.f39a59f250416803923a1c1e1528d74dp10,
+    0x1.0962589625894p3
+  },
+  { // Entry 73
+    0x1.f39a59f250416803923a1c1e1528d74dp10,
+    -0x1.0962589625894p3
+  },
+  { // Entry 74
+    0x1.09c4fe008ebbf7feff9c55742944c979p47,
+    0x1.0a77d78f63c77p5
+  },
+  { // Entry 75
+    0x1.09c4fe008ebbf7feff9c55742944c979p47,
+    -0x1.0a77d78f63c77p5
+  },
+  { // Entry 76
+    0x1.250e830d17c53ffff0f0a7b37c3274aep0,
+    0x1.1044110441104p-1
+  },
+  { // Entry 77
+    0x1.250e830d17c53ffff0f0a7b37c3274aep0,
+    -0x1.1044110441104p-1
+  },
+  { // Entry 78
+    0x1.0000024ff524ec0206bcebcbcb8fd2d8p0,
+    0x1.1343b94c10b91p-11
+  },
+  { // Entry 79
+    0x1.0000024ff524ec0206bcebcbcb8fd2d8p0,
+    -0x1.1343b94c10b91p-11
+  },
+  { // Entry 80
+    0x1.a4e4693413b9970755c15633af25f96bp399,
+    0x1.15c18de877563p8
+  },
+  { // Entry 81
+    0x1.a4e4693413b9970755c15633af25f96bp399,
+    -0x1.15c18de877563p8
+  },
+  { // Entry 82
+    0x1.a7b0a63b771487fe7ea3e4c4c6a5986cp0,
+    0x1.170p0
+  },
+  { // Entry 83
+    0x1.a7b0a63b771487fe7ea3e4c4c6a5986cp0,
+    -0x1.170p0
+  },
+  { // Entry 84
+    0x1.2040f2a1ab52f6519acd0a68e44e2672p2,
+    0x1.17cp1
+  },
+  { // Entry 85
+    0x1.2040f2a1ab52f6519acd0a68e44e2672p2,
+    -0x1.17cp1
+  },
+  { // Entry 86
+    0x1.ffffffffffff691afdbf851f5ebecf8fp24,
+    0x1.205966f2b4f12p4
+  },
+  { // Entry 87
+    0x1.ffffffffffff691afdbf851f5ebecf8fp24,
+    -0x1.205966f2b4f12p4
+  },
+  { // Entry 88
+    0x1.79842c1bcf0097ff7fb2dd182713e67ap207,
+    0x1.2120481204831p7
+  },
+  { // Entry 89
+    0x1.79842c1bcf0097ff7fb2dd182713e67ap207,
+    -0x1.2120481204831p7
+  },
+  { // Entry 90
+    0x1.29fbb84ba8876b368d8a9db5c1e1454dp0,
+    0x1.215c31dfb06bep-1
+  },
+  { // Entry 91
+    0x1.29fbb84ba8876b368d8a9db5c1e1454dp0,
+    -0x1.215c31dfb06bep-1
+  },
+  { // Entry 92
+    0x1.eaa521edf1bc28014602191ce618c05fp845,
+    0x1.2586ca9cf411bp9
+  },
+  { // Entry 93
+    0x1.eaa521edf1bc28014602191ce618c05fp845,
+    -0x1.2586ca9cf411bp9
+  },
+  { // Entry 94
+    0x1.6a09e667f3b873e3fe3a64632e382c20p25,
+    0x1.25e4f7b2737f7p4
+  },
+  { // Entry 95
+    0x1.6a09e667f3b873e3fe3a64632e382c20p25,
+    -0x1.25e4f7b2737f7p4
+  },
+  { // Entry 96
+    0x1.57261d902201780090571fb5bf70f618p12,
+    0x1.29b98d2ca77bfp3
+  },
+  { // Entry 97
+    0x1.57261d902201780090571fb5bf70f618p12,
+    -0x1.29b98d2ca77bfp3
+  },
+  { // Entry 98
+    0x1.bfa86b3a08ba080003331b84fa809b78p5,
+    0x1.2dee0f9476ef0p2
+  },
+  { // Entry 99
+    0x1.bfa86b3a08ba080003331b84fa809b78p5,
+    -0x1.2dee0f9476ef0p2
+  },
+  { // Entry 100
+    0x1.ca2d30aee8c837f93c016463c234beb0p0,
+    0x1.2fap0
+  },
+  { // Entry 101
+    0x1.ca2d30aee8c837f93c016463c234beb0p0,
+    -0x1.2fap0
+  },
+  { // Entry 102
+    0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    0x1.2fe8bcd183299p9
+  },
+  { // Entry 103
+    0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    -0x1.2fe8bcd183299p9
+  },
+  { // Entry 104
+    0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    0x1.30a324d6033b5p9
+  },
+  { // Entry 105
+    0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    -0x1.30a324d6033b5p9
+  },
+  { // Entry 106
+    0x1.0000b839f863b3e4bcae71b55072ca80p0,
+    0x1.331f2adbaf98dp-8
+  },
+  { // Entry 107
+    0x1.0000b839f863b3e4bcae71b55072ca80p0,
+    -0x1.331f2adbaf98dp-8
+  },
+  { // Entry 108
+    0x1.f3a98884eba4bc32647b7ac3c5404f85p26,
+    0x1.3623c0c9e9d5ap4
+  },
+  { // Entry 109
+    0x1.f3a98884eba4bc32647b7ac3c5404f85p26,
+    -0x1.3623c0c9e9d5ap4
+  },
+  { // Entry 110
+    0x1.75a07cfb107ca6ba9dba1e2c2cedd659p453,
+    0x1.3b11206005429p8
+  },
+  { // Entry 111
+    0x1.75a07cfb107ca6ba9dba1e2c2cedd659p453,
+    -0x1.3b11206005429p8
+  },
+  { // Entry 112
+    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    0x1.42a565e456e04p9
+  },
+  { // Entry 113
+    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    -0x1.42a565e456e04p9
+  },
+  { // Entry 114
+    0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    0x1.456bf23e02428p9
+  },
+  { // Entry 115
+    0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    -0x1.456bf23e02428p9
+  },
+  { // Entry 116
+    0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    0x1.45c1feef8086cp9
+  },
+  { // Entry 117
+    0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    -0x1.45c1feef8086cp9
+  },
+  { // Entry 118
+    0x1.4dbe273792bde7fc45ff4f687bf81f94p6,
+    0x1.478p2
+  },
+  { // Entry 119
+    0x1.4dbe273792bde7fc45ff4f687bf81f94p6,
+    -0x1.478p2
+  },
+  { // Entry 120
+    0x1.a1732beffb81e80f059be59df088e0dcp2,
+    0x1.480p1
+  },
+  { // Entry 121
+    0x1.a1732beffb81e80f059be59df088e0dcp2,
+    -0x1.480p1
+  },
+  { // Entry 122
+    0x1.f292b709c70c9039aec2c978d1d7e73ep0,
+    0x1.494p0
+  },
+  { // Entry 123
+    0x1.f292b709c70c9039aec2c978d1d7e73ep0,
+    -0x1.494p0
+  },
+  { // Entry 124
+    0x1.a6c83c0fd645320793a014725c3d6e2dp2,
+    0x1.49a4d26934980p1
+  },
+  { // Entry 125
+    0x1.a6c83c0fd645320793a014725c3d6e2dp2,
+    -0x1.49a4d26934980p1
+  },
+  { // Entry 126
+    0x1.14ff8ce7eedcf7ff00c85c22990fd0fep951,
+    0x1.49fa3bc9fa3bcp9
+  },
+  { // Entry 127
+    0x1.14ff8ce7eedcf7ff00c85c22990fd0fep951,
+    -0x1.49fa3bc9fa3bcp9
+  },
+  { // Entry 128
+    0x1.f6c6651de70d704c55837250811c86ddp0,
+    0x1.4bcp0
+  },
+  { // Entry 129
+    0x1.f6c6651de70d704c55837250811c86ddp0,
+    -0x1.4bcp0
+  },
+  { // Entry 130
+    0x1.c18c56303fe66fff9d9b8c47655f12c0p2,
+    0x1.51965d2b59826p1
+  },
+  { // Entry 131
+    0x1.c18c56303fe66fff9d9b8c47655f12c0p2,
+    -0x1.51965d2b59826p1
+  },
+  { // Entry 132
+    0x1.eeac3d912b1ce80100df042cfb33c06ep59,
+    0x1.51fafb7826f27p5
+  },
+  { // Entry 133
+    0x1.eeac3d912b1ce80100df042cfb33c06ep59,
+    -0x1.51fafb7826f27p5
+  },
+  { // Entry 134
+    0x1.9548e9688fb2e800c466e7d893328f68p991,
+    0x1.5807dc787a5d5p9
+  },
+  { // Entry 135
+    0x1.9548e9688fb2e800c466e7d893328f68p991,
+    -0x1.5807dc787a5d5p9
+  },
+  { // Entry 136
+    0x1.000003a93be72bffaeb829ad23f9901bp0,
+    0x1.5a5c6af3cbf35p-11
+  },
+  { // Entry 137
+    0x1.000003a93be72bffaeb829ad23f9901bp0,
+    -0x1.5a5c6af3cbf35p-11
+  },
+  { // Entry 138
+    0x1.8d35b12c48404800034bee73c998316fp14,
+    0x1.5ac4908a754c1p3
+  },
+  { // Entry 139
+    0x1.8d35b12c48404800034bee73c998316fp14,
+    -0x1.5ac4908a754c1p3
+  },
+  { // Entry 140
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    0x1.5dadf5d1e452cp9
+  },
+  { // Entry 141
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    -0x1.5dadf5d1e452cp9
+  },
+  { // Entry 142
+    0x1.edcb14879613e80176087c1a76dec97cp1008,
+    0x1.5e056ed40e56ep9
+  },
+  { // Entry 143
+    0x1.edcb14879613e80176087c1a76dec97cp1008,
+    -0x1.5e056ed40e56ep9
+  },
+  { // Entry 144
+    0x1.96faa872a06aa3003f5158de9c570302p1023,
+    0x1.631f86ac0611bp9
+  },
+  { // Entry 145
+    0x1.96faa872a06aa3003f5158de9c570302p1023,
+    -0x1.631f86ac0611bp9
+  },
+  { // Entry 146
+    0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    0x1.632ba58eae071p9
+  },
+  { // Entry 147
+    0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    -0x1.632ba58eae071p9
+  },
+  { // Entry 148
+    0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    0x1.633ce8fb9f771p9
+  },
+  { // Entry 149
+    0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    -0x1.633ce8fb9f771p9
+  },
+  { // Entry 150
+    0x1.fffffffff093ae594ed7508a02429436p1023,
+    0x1.633ce8fb9f840p9
+  },
+  { // Entry 151
+    0x1.fffffffff093ae594ed7508a02429436p1023,
+    -0x1.633ce8fb9f840p9
+  },
+  { // Entry 152
+    0x1.fffffffff713ae594eafc080a48289f9p1023,
+    0x1.633ce8fb9f85ap9
+  },
+  { // Entry 153
+    0x1.fffffffff713ae594eafc080a48289f9p1023,
+    -0x1.633ce8fb9f85ap9
+  },
+  { // Entry 154
+    0x1.1350a413023bfffffe14156b2ad2a0aap1,
+    0x1.6666666678dc9p0
+  },
+  { // Entry 155
+    0x1.1350a413023bfffffe14156b2ad2a0aap1,
+    -0x1.6666666678dc9p0
+  },
+  { // Entry 156
+    0x1.4152c1863ba8280001cbf788e6aa237cp0,
+    0x1.66666666a6b7ep-1
+  },
+  { // Entry 157
+    0x1.4152c1863ba8280001cbf788e6aa237cp0,
+    -0x1.66666666a6b7ep-1
+  },
+  { // Entry 158
+    0x1.ffffd47fb735b800740691174c7f5813p31,
+    0x1.6dfb50131e66dp4
+  },
+  { // Entry 159
+    0x1.ffffd47fb735b800740691174c7f5813p31,
+    -0x1.6dfb50131e66dp4
+  },
+  { // Entry 160
+    0x1.23aaacaf304fbfffff85f2e03f117872p3,
+    0x1.733333335c84ap1
+  },
+  { // Entry 161
+    0x1.23aaacaf304fbfffff85f2e03f117872p3,
+    -0x1.733333335c84ap1
+  },
+  { // Entry 162
+    0x1.000000000047f4008000035ee023fep0,
+    0x1.7fep-21
+  },
+  { // Entry 163
+    0x1.000000000047f4008000035ee023fep0,
+    -0x1.7fep-21
+  },
+  { // Entry 164
+    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    0x1.820d92fc4b42ap8
+  },
+  { // Entry 165
+    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    -0x1.820d92fc4b42ap8
+  },
+  { // Entry 166
+    0x1.9d55555ab98f4817a9f90acefca23523p140,
+    0x1.88d9eff243ec8p6
+  },
+  { // Entry 167
+    0x1.9d55555ab98f4817a9f90acefca23523p140,
+    -0x1.88d9eff243ec8p6
+  },
+  { // Entry 168
+    0x1.04c5f3d75091e8012559fb87285a99dep0,
+    0x1.8aep-3
+  },
+  { // Entry 169
+    0x1.04c5f3d75091e8012559fb87285a99dep0,
+    -0x1.8aep-3
+  },
+  { // Entry 170
+    0x1.50a125ad300e5802736ad2f68de9efdap0,
+    0x1.8c6318c6318c4p-1
+  },
+  { // Entry 171
+    0x1.50a125ad300e5802736ad2f68de9efdap0,
+    -0x1.8c6318c6318c4p-1
+  },
+  { // Entry 172
+    0x1.a2cc09e2e7dd780005c588bf2ebd2d28p35,
+    0x1.9720cc66f1cbbp4
+  },
+  { // Entry 173
+    0x1.a2cc09e2e7dd780005c588bf2ebd2d28p35,
+    -0x1.9720cc66f1cbbp4
+  },
+  { // Entry 174
+    0x1.49ea5b155646500001cb3c7a14d4f641p1,
+    0x1.99999999b8db8p0
+  },
+  { // Entry 175
+    0x1.49ea5b155646500001cb3c7a14d4f641p1,
+    -0x1.99999999b8db8p0
+  },
+  { // Entry 176
+    0x1.0147f40224ea77fffe35f63e0620c28ep0,
+    0x1.99999999bbe1bp-4
+  },
+  { // Entry 177
+    0x1.0147f40224ea77fffe35f63e0620c28ep0,
+    -0x1.99999999bbe1bp-4
+  },
+  { // Entry 178
+    0x1.0523184b26181ffffe5ad5f60af39607p0,
+    0x1.9999999ab6eebp-3
+  },
+  { // Entry 179
+    0x1.0523184b26181ffffe5ad5f60af39607p0,
+    -0x1.9999999ab6eebp-3
+  },
+  { // Entry 180
+    0x1.0147f4022697680001b3e13f009af80bp0,
+    0x1.9999999ac7857p-4
+  },
+  { // Entry 181
+    0x1.0147f4022697680001b3e13f009af80bp0,
+    -0x1.9999999ac7857p-4
+  },
+  { // Entry 182
+    0x1.0523184b290290000199de7723bc799dp0,
+    0x1.9999999b2aca1p-3
+  },
+  { // Entry 183
+    0x1.0523184b290290000199de7723bc799dp0,
+    -0x1.9999999b2aca1p-3
+  },
+  { // Entry 184
+    0x1.0147f402280ed80001d59eeac36ba73dp0,
+    0x1.9999999bb1c77p-4
+  },
+  { // Entry 185
+    0x1.0147f402280ed80001d59eeac36ba73dp0,
+    -0x1.9999999bb1c77p-4
+  },
+  { // Entry 186
+    0x1.ffffffffffed457a42e161456cf862b2p590,
+    0x1.9a57d76d152fcp8
+  },
+  { // Entry 187
+    0x1.ffffffffffed457a42e161456cf862b2p590,
+    -0x1.9a57d76d152fcp8
+  },
+  { // Entry 188
+    0x1.6375401c4fbbf8003386ea381d3fe669p0,
+    0x1.b5daed76bb580p-1
+  },
+  { // Entry 189
+    0x1.6375401c4fbbf8003386ea381d3fe669p0,
+    -0x1.b5daed76bb580p-1
+  },
+  { // Entry 190
+    0x1.f30605e8b5451805101b3ea033bab41cp8,
+    0x1.b9f89e22629b5p2
+  },
+  { // Entry 191
+    0x1.f30605e8b5451805101b3ea033bab41cp8,
+    -0x1.b9f89e22629b5p2
+  },
+  { // Entry 192
+    0x1.f309ebf823d108054159f278e16ad109p8,
+    0x1.b9f91e22629b5p2
+  },
+  { // Entry 193
+    0x1.f309ebf823d108054159f278e16ad109p8,
+    -0x1.b9f91e22629b5p2
+  },
+  { // Entry 194
+    0x1.185c2bf1d5276fffd73fd51a307743a4p0,
+    0x1.bb4p-2
+  },
+  { // Entry 195
+    0x1.185c2bf1d5276fffd73fd51a307743a4p0,
+    -0x1.bb4p-2
+  },
+  { // Entry 196
+    0x1.0005ffd0c797f7ff1970be180784a55cp0,
+    0x1.bb6p-7
+  },
+  { // Entry 197
+    0x1.0005ffd0c797f7ff1970be180784a55cp0,
+    -0x1.bb6p-7
+  },
+  { // Entry 198
+    0x1.968ef6ceade7f60edc2b4f0265da6ba4p640,
+    0x1.bcc517b553c93p8
+  },
+  { // Entry 199
+    0x1.968ef6ceade7f60edc2b4f0265da6ba4p640,
+    -0x1.bcc517b553c93p8
+  },
+  { // Entry 200
+    0x1.7b972e453783930f202a8aa455bb6c01p1,
+    0x1.c02p0
+  },
+  { // Entry 201
+    0x1.7b972e453783930f202a8aa455bb6c01p1,
+    -0x1.c02p0
+  },
+  { // Entry 202
+    0x1.7eec19d4dcbc738baa1a1114dee049b8p1,
+    0x1.c28p0
+  },
+  { // Entry 203
+    0x1.7eec19d4dcbc738baa1a1114dee049b8p1,
+    -0x1.c28p0
+  },
+  { // Entry 204
+    0x1.0656561cbe53c7fffdb60e1b054d8f16p0,
+    0x1.c6c2e93467e80p-3
+  },
+  { // Entry 205
+    0x1.0656561cbe53c7fffdb60e1b054d8f16p0,
+    -0x1.c6c2e93467e80p-3
+  },
+  { // Entry 206
+    0x1.06a2b3e7b603e800c2f4167761b30bf8p0,
+    0x1.d14bf83b48ec3p-3
+  },
+  { // Entry 207
+    0x1.06a2b3e7b603e800c2f4167761b30bf8p0,
+    -0x1.d14bf83b48ec3p-3
+  },
+  { // Entry 208
+    0x1.fb4d9de0ad845677ec6fc467c2ca9f9ap19,
+    0x1.d18p3
+  },
+  { // Entry 209
+    0x1.fb4d9de0ad845677ec6fc467c2ca9f9ap19,
+    -0x1.d18p3
+  },
+  { // Entry 210
+    0x1.73a6cd8f2f6d681e70f9695a25f39c35p0,
+    0x1.d60p-1
+  },
+  { // Entry 211
+    0x1.73a6cd8f2f6d681e70f9695a25f39c35p0,
+    -0x1.d60p-1
+  },
+  { // Entry 212
+    0x1.9fb7158a225e000047f44f47edad0545p1,
+    0x1.d8b5f14439f87p0
+  },
+  { // Entry 213
+    0x1.9fb7158a225e000047f44f47edad0545p1,
+    -0x1.d8b5f14439f87p0
+  },
+  { // Entry 214
+    0x1.ea40b4c3630d1000615de8737ec4857cp9,
+    0x1.e532a134b958cp2
+  },
+  { // Entry 215
+    0x1.ea40b4c3630d1000615de8737ec4857cp9,
+    -0x1.e532a134b958cp2
+  },
+  { // Entry 216
+    0x1.dbca9263f840fca48450e408fa36b56bp177,
+    0x1.effffffffffffp6
+  },
+  { // Entry 217
+    0x1.dbca9263f840fca48450e408fa36b56bp177,
+    -0x1.effffffffffffp6
+  },
+  { // Entry 218
+    0x1.01e4fad3b993aa1a52d036790b34e1cep0,
+    0x1.f1fffffffffffp-4
+  },
+  { // Entry 219
+    0x1.01e4fad3b993aa1a52d036790b34e1cep0,
+    -0x1.f1fffffffffffp-4
+  },
+  { // Entry 220
+    0x1.07a6bb7edb5de8000669b121a48f81e9p0,
+    0x1.f37a7a76cbc72p-3
+  },
+  { // Entry 221
+    0x1.07a6bb7edb5de8000669b121a48f81e9p0,
+    -0x1.f37a7a76cbc72p-3
+  },
+  { // Entry 222
+    0x1.d1ee8e62b2098fff7b22532973b4ccp1,
+    0x1.f73a29b8fcc22p0
+  },
+  { // Entry 223
+    0x1.d1ee8e62b2098fff7b22532973b4ccp1,
+    -0x1.f73a29b8fcc22p0
+  },
+  { // Entry 224
+    0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    0x1.fdfffffffffffp5
+  },
+  { // Entry 225
+    0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    -0x1.fdfffffffffffp5
+  },
+  { // Entry 226
+    0x1.000000000007f4018180a8332feed269p0,
+    0x1.fe7f9fe7f9fc1p-23
+  },
+  { // Entry 227
+    0x1.000000000007f4018180a8332feed269p0,
+    -0x1.fe7f9fe7f9fc1p-23
+  },
+  { // Entry 228
+    0x1.000007f7824c94120eb9c3be21444195p0,
+    0x1.feeffffffffffp-11
+  },
+  { // Entry 229
+    0x1.000007f7824c94120eb9c3be21444195p0,
+    -0x1.feeffffffffffp-11
+  },
+  { // Entry 230
+    0x1.dfa36f8e6bf72fa8a934ef27b5231b54p1,
+    0x1.feeffffffffffp0
+  },
+  { // Entry 231
+    0x1.dfa36f8e6bf72fa8a934ef27b5231b54p1,
+    -0x1.feeffffffffffp0
+  },
+  { // Entry 232
+    0x1.08086ec43bf6287590f3692c2b8d555dp0,
+    0x1.ffb886fe444c0p-3
+  },
+  { // Entry 233
+    0x1.08086ec43bf6287590f3692c2b8d555dp0,
+    -0x1.ffb886fe444c0p-3
+  },
+  { // Entry 234
+    0x1.080972995a2b573ac07666762f1a0b72p0,
+    0x1.ffd8af33686dbp-3
+  },
+  { // Entry 235
+    0x1.080972995a2b573ac07666762f1a0b72p0,
+    -0x1.ffd8af33686dbp-3
+  },
+  { // Entry 236
+    0x1.6d4fd9ab47c9200073aa8127a2419ac8p737,
+    0x1.ffe5effffffffp8
+  },
+  { // Entry 237
+    0x1.6d4fd9ab47c9200073aa8127a2419ac8p737,
+    -0x1.ffe5effffffffp8
+  },
+  { // Entry 238
+    0x1.74418e8eaca63c82e25a9f7d06548e5dp10,
+    0x1.ffeffffffffffp2
+  },
+  { // Entry 239
+    0x1.74418e8eaca63c82e25a9f7d06548e5dp10,
+    -0x1.ffeffffffffffp2
+  },
+  { // Entry 240
+    0x1.080a3deb46ec08a56cbd7f1bde2759b0p0,
+    0x1.fff1d77ffffffp-3
+  },
+  { // Entry 241
+    0x1.080a3deb46ec08a56cbd7f1bde2759b0p0,
+    -0x1.fff1d77ffffffp-3
+  },
+  { // Entry 242
+    0x1.941a855acbf7a7ffc58b32660a23ba32p737,
+    0x1.ffffc5dffffffp8
+  },
+  { // Entry 243
+    0x1.941a855acbf7a7ffc58b32660a23ba32p737,
+    -0x1.ffffc5dffffffp8
+  },
+  { // Entry 244
+    0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    0x1.fffffdfffffffp6
+  },
+  { // Entry 245
+    0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    -0x1.fffffdfffffffp6
+  },
+  { // Entry 246
+    0x1.080ab0589b61286b6d41402698d5bfeep0,
+    0x1.ffffff7ffffffp-3
+  },
+  { // Entry 247
+    0x1.080ab0589b61286b6d41402698d5bfeep0,
+    -0x1.ffffff7ffffffp-3
+  },
+  { // Entry 248
+    0x1.20ac18541756f8007b9a2f43dab0cc9cp0,
+    0x1.ffffff8ffffffp-2
+  },
+  { // Entry 249
+    0x1.20ac18541756f8007b9a2f43dab0cc9cp0,
+    -0x1.ffffff8ffffffp-2
+  },
+  { // Entry 250
+    0x1.e18fa0deb98c68008c19676612286a2dp1,
+    0x1.ffffffffbffffp0
+  },
+  { // Entry 251
+    0x1.e18fa0deb98c68008c19676612286a2dp1,
+    -0x1.ffffffffbffffp0
+  },
+  { // Entry 252
+    0x1.p0,
+    0x1.fffffffff7fffp-352
+  },
+  { // Entry 253
+    0x1.p0,
+    -0x1.fffffffff7fffp-352
+  },
+  { // Entry 254
+    0x1.0f2ebd0a7fc177f6fa2a0a4e6bb2f696p22,
+    0x1.fffffffffff7fp3
+  },
+  { // Entry 255
+    0x1.0f2ebd0a7fc177f6fa2a0a4e6bb2f696p22,
+    -0x1.fffffffffff7fp3
+  },
+  { // Entry 256
+    0x1.e18fa0df2d99b84e92f43b9b47f7341ep1,
+    0x1.fffffffffffeep0
+  },
+  { // Entry 257
+    0x1.e18fa0df2d99b84e92f43b9b47f7341ep1,
+    -0x1.fffffffffffeep0
+  },
+  { // Entry 258
+    0x1.b4ee858de3e5a800f659793765248fb4p4,
+    0x1.ffffffffffff5p1
+  },
+  { // Entry 259
+    0x1.b4ee858de3e5a800f659793765248fb4p4,
+    -0x1.ffffffffffff5p1
+  },
+  { // Entry 260
+    0x1.p0,
+    0x1.ffffffffffffdp-200
+  },
+  { // Entry 261
+    0x1.p0,
+    -0x1.ffffffffffffdp-200
+  },
+  { // Entry 262
+    0x1.0000000000001ffffffffffffcaaaaaap0,
+    0x1.ffffffffffffep-26
+  },
+  { // Entry 263
+    0x1.0000000000001ffffffffffffcaaaaaap0,
+    -0x1.ffffffffffffep-26
+  },
+  { // Entry 264
+    0x1.00000000000007ffffffffffff0aaaaap0,
+    0x1.ffffffffffffep-27
+  },
+  { // Entry 265
+    0x1.00000000000007ffffffffffff0aaaaap0,
+    -0x1.ffffffffffffep-27
+  },
+  { // Entry 266
+    0x1.9476504ba82057f69310608c30e76cebp737,
+    0x1.ffffffffffffep8
+  },
+  { // Entry 267
+    0x1.9476504ba82057f69310608c30e76cebp737,
+    -0x1.ffffffffffffep8
+  },
+  { // Entry 268
+    0x1.p0,
+    0.0
+  },
+  { // Entry 269
+    0x1.00a7413869e0bc675ef8f8059bcc3722p0,
+    0x1.2492492492492p-4
+  },
+  { // Entry 270
+    0x1.00a7413869e0bc675ef8f8059bcc3722p0,
+    -0x1.2492492492492p-4
+  },
+  { // Entry 271
+    0x1.029ddf6df7f29c6e5531c853aa7ef551p0,
+    0x1.2492492492492p-3
+  },
+  { // Entry 272
+    0x1.029ddf6df7f29c6e5531c853aa7ef551p0,
+    -0x1.2492492492492p-3
+  },
+  { // Entry 273
+    0x1.05e66b632df1253b01df69be9ece44e3p0,
+    0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 274
+    0x1.05e66b632df1253b01df69be9ece44e3p0,
+    -0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 275
+    0x1.0a852f6aef4fd03008a8aa0554865518p0,
+    0x1.2492492492492p-2
+  },
+  { // Entry 276
+    0x1.0a852f6aef4fd03008a8aa0554865518p0,
+    -0x1.2492492492492p-2
+  },
+  { // Entry 277
+    0x1.10803503a700f31eb1d4ed9defcba588p0,
+    0x1.6db6db6db6db6p-2
+  },
+  { // Entry 278
+    0x1.10803503a700f31eb1d4ed9defcba588p0,
+    -0x1.6db6db6db6db6p-2
+  },
+  { // Entry 279
+    0x1.17df4cbabde0a25651179bc95d273b63p0,
+    0x1.b6db6db6db6dap-2
+  },
+  { // Entry 280
+    0x1.17df4cbabde0a25651179bc95d273b63p0,
+    -0x1.b6db6db6db6dap-2
+  },
+  { // Entry 281
+    0x1.20ac1862ae8d021a4e365577227270b1p0,
+    0x1.ffffffffffffep-2
+  },
+  { // Entry 282
+    0x1.20ac1862ae8d021a4e365577227270b1p0,
+    -0x1.ffffffffffffep-2
+  },
+  { // Entry 283
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.0p-1
+  },
+  { // Entry 284
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.0p-1
+  },
+  { // Entry 285
+    0x1.2af217a90e6dec39004f56495cd43505p0,
+    0x1.2492492492492p-1
+  },
+  { // Entry 286
+    0x1.2af217a90e6dec39004f56495cd43505p0,
+    -0x1.2492492492492p-1
+  },
+  { // Entry 287
+    0x1.36beb71cfe154fa26b865cb1a3cb8a5fp0,
+    0x1.4924924924924p-1
+  },
+  { // Entry 288
+    0x1.36beb71cfe154fa26b865cb1a3cb8a5fp0,
+    -0x1.4924924924924p-1
+  },
+  { // Entry 289
+    0x1.442161b9a30711902871e6d507913362p0,
+    0x1.6db6db6db6db6p-1
+  },
+  { // Entry 290
+    0x1.442161b9a30711902871e6d507913362p0,
+    -0x1.6db6db6db6db6p-1
+  },
+  { // Entry 291
+    0x1.532b950b9683060720f579e323e93474p0,
+    0x1.9249249249248p-1
+  },
+  { // Entry 292
+    0x1.532b950b9683060720f579e323e93474p0,
+    -0x1.9249249249248p-1
+  },
+  { // Entry 293
+    0x1.63f0f80b9c6bb0519d8eae2c3ccbbd98p0,
+    0x1.b6db6db6db6dap-1
+  },
+  { // Entry 294
+    0x1.63f0f80b9c6bb0519d8eae2c3ccbbd98p0,
+    -0x1.b6db6db6db6dap-1
+  },
+  { // Entry 295
+    0x1.768774cc7f49764e7589347e3613d36bp0,
+    0x1.db6db6db6db6cp-1
+  },
+  { // Entry 296
+    0x1.768774cc7f49764e7589347e3613d36bp0,
+    -0x1.db6db6db6db6cp-1
+  },
+  { // Entry 297
+    0x1.8b07551d9f54f1f51d63c148150ff9f0p0,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 298
+    0x1.8b07551d9f54f1f51d63c148150ff9f0p0,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 299
+    0x1.p0,
+    0.0
+  },
+  { // Entry 300
+    0x1.0009a148b0e06dc3d0614c40dd1468d6p0,
+    0x1.18de5ab277f45p-6
+  },
+  { // Entry 301
+    0x1.0009a148b0e06dc3d0614c40dd1468d6p0,
+    -0x1.18de5ab277f45p-6
+  },
+  { // Entry 302
+    0x1.002685dc3cf39cdb36154a8c673f400bp0,
+    0x1.18de5ab277f45p-5
+  },
+  { // Entry 303
+    0x1.002685dc3cf39cdb36154a8c673f400bp0,
+    -0x1.18de5ab277f45p-5
+  },
+  { // Entry 304
+    0x1.0056afe71e837cc56169a00a96535d60p0,
+    0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 305
+    0x1.0056afe71e837cc56169a00a96535d60p0,
+    -0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 306
+    0x1.009a2308fa8fcdaddee63777dbb370e6p0,
+    0x1.18de5ab277f45p-4
+  },
+  { // Entry 307
+    0x1.009a2308fa8fcdaddee63777dbb370e6p0,
+    -0x1.18de5ab277f45p-4
+  },
+  { // Entry 308
+    0x1.00f0e454e69896dbe7bfa42c490502bbp0,
+    0x1.5f15f15f15f16p-4
+  },
+  { // Entry 309
+    0x1.00f0e454e69896dbe7bfa42c490502bbp0,
+    -0x1.5f15f15f15f16p-4
+  },
+  { // Entry 310
+    0x1.015afa51ca5a8c6a812cb74010fd2339p0,
+    0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 311
+    0x1.015afa51ca5a8c6a812cb74010fd2339p0,
+    -0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 312
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 313
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 314
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 315
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 316
+    0x1.02068cf05597373684859565fe36babfp0,
+    0x1.01767dce434aap-3
+  },
+  { // Entry 317
+    0x1.02068cf05597373684859565fe36babfp0,
+    -0x1.01767dce434aap-3
+  },
+  { // Entry 318
+    0x1.0236d50fb0daff9feea39dcae5219685p0,
+    0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 319
+    0x1.0236d50fb0daff9feea39dcae5219685p0,
+    -0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 320
+    0x1.026945c041710aacb6e5b3c7fb2aa37ap0,
+    0x1.18de5ab277f46p-3
+  },
+  { // Entry 321
+    0x1.026945c041710aacb6e5b3c7fb2aa37ap0,
+    -0x1.18de5ab277f46p-3
+  },
+  { // Entry 322
+    0x1.029ddf6df7f29d011dd86bfe01ec3683p0,
+    0x1.2492492492494p-3
+  },
+  { // Entry 323
+    0x1.029ddf6df7f29d011dd86bfe01ec3683p0,
+    -0x1.2492492492494p-3
+  },
+  { // Entry 324
+    0x1.02d4a289645849faf12a95a92d2534d5p0,
+    0x1.30463796ac9e2p-3
+  },
+  { // Entry 325
+    0x1.02d4a289645849faf12a95a92d2534d5p0,
+    -0x1.30463796ac9e2p-3
+  },
+  { // Entry 326
+    0x1.030d8f87b6ead4a0bc7464b33dbba3aap0,
+    0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 327
+    0x1.030d8f87b6ead4a0bc7464b33dbba3aap0,
+    -0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 328
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 329
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 330
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 331
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 332
+    0x1.0a19d6de605abf08129cddde1636dd2ap0,
+    0x1.1eb851eb851ecp-2
+  },
+  { // Entry 333
+    0x1.0a19d6de605abf08129cddde1636dd2ap0,
+    -0x1.1eb851eb851ecp-2
+  },
+  { // Entry 334
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    0x1.999999999999ap-2
+  },
+  { // Entry 335
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 336
+    0x1.2365ee6c60d331135d0b3ad315833363p0,
+    0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 337
+    0x1.2365ee6c60d331135d0b3ad315833363p0,
+    -0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 338
+    0x1.363e341f66160527d93c30b63d619a60p0,
+    0x1.47ae147ae147bp-1
+  },
+  { // Entry 339
+    0x1.363e341f66160527d93c30b63d619a60p0,
+    -0x1.47ae147ae147bp-1
+  },
+  { // Entry 340
+    0x1.4d8f87572582badd7439620bd7e9590bp0,
+    0x1.851eb851eb852p-1
+  },
+  { // Entry 341
+    0x1.4d8f87572582badd7439620bd7e9590bp0,
+    -0x1.851eb851eb852p-1
+  },
+  { // Entry 342
+    0x1.69aff7d0ce135dcd1a6ec2e65d0a89dfp0,
+    0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 343
+    0x1.69aff7d0ce135dcd1a6ec2e65d0a89dfp0,
+    -0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 344
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 345
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 346
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 347
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 348
+    0x1.c035cc3cf78edf8213cbad9479090d14p7,
+    0x1.86bc88cbf1b67p2
+  },
+  { // Entry 349
+    0x1.c035cc3cf78edf8213cbad9479090d14p7,
+    -0x1.86bc88cbf1b67p2
+  },
+  { // Entry 350
+    0x1.20af6cbb4ba69598ec939d7de84f588dp15,
+    0x1.66bc88cbf1b67p3
+  },
+  { // Entry 351
+    0x1.20af6cbb4ba69598ec939d7de84f588dp15,
+    -0x1.66bc88cbf1b67p3
+  },
+  { // Entry 352
+    0x1.73e096cf57b5505242fb8e3b8be68034p22,
+    0x1.050d6698f548dp4
+  },
+  { // Entry 353
+    0x1.73e096cf57b5505242fb8e3b8be68034p22,
+    -0x1.050d6698f548dp4
+  },
+  { // Entry 354
+    0x1.df0b13a84513e2dfcb4b2dd0b765caf4p29,
+    0x1.56bc88cbf1b67p4
+  },
+  { // Entry 355
+    0x1.df0b13a84513e2dfcb4b2dd0b765caf4p29,
+    -0x1.56bc88cbf1b67p4
+  },
+  { // Entry 356
+    0x1.348bc1e018bc593ce3145e9f4c06b22cp37,
+    0x1.a86baafeee241p4
+  },
+  { // Entry 357
+    0x1.348bc1e018bc593ce3145e9f4c06b22cp37,
+    -0x1.a86baafeee241p4
+  },
+  { // Entry 358
+    0x1.8d761a3398942448ea796cb7e602a205p44,
+    0x1.fa1acd31ea91bp4
+  },
+  { // Entry 359
+    0x1.8d761a3398942448ea796cb7e602a205p44,
+    -0x1.fa1acd31ea91bp4
+  },
+  { // Entry 360
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 361
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 362
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 363
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 364
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 365
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 366
+    0x1.000000010000654361c4613c7312ecfdp15,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 367
+    0x1.000000010000654361c4613c7312ecfdp15,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 368
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 369
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 370
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 371
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 372
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 373
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 374
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 375
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 376
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 377
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 378
+    0x1.01000000000019378798c06e5185a376p3,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 379
+    0x1.01000000000019378798c06e5185a376p3,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 380
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 381
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 382
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 383
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 384
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 385
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 386
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 387
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 388
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 389
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 390
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 391
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 392
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 393
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 394
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 395
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 396
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 397
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 398
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 399
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 400
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 401
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 402
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 403
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 404
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 405
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 406
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 407
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 408
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 409
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 410
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 411
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 412
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 413
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 414
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 415
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 416
+    0x1.000f60066540a372cf2f0ea5d3ca7e8bp0,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 417
+    0x1.000f60066540a372cf2f0ea5d3ca7e8bp0,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 418
+    0x1.000f60066540a374321a5962997281b2p0,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 419
+    0x1.000f60066540a374321a5962997281b2p0,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 420
+    0x1.000f60066540a3759505a41f5f1a94dbp0,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 421
+    0x1.000f60066540a3759505a41f5f1a94dbp0,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 422
+    0x1.000000000000ca87c3898cffd1bcd954p31,
+    -0x1.62e42fefa39f0p4
+  },
+  { // Entry 423
+    0x1.000000000000ca87c3898cffd1bcd954p31,
+    0x1.62e42fefa39f0p4
+  },
+  { // Entry 424
+    0x1.ffffffffffff950f871319ff0e6e2b95p30,
+    -0x1.62e42fefa39efp4
+  },
+  { // Entry 425
+    0x1.ffffffffffff950f871319ff0e6e2b95p30,
+    0x1.62e42fefa39efp4
+  },
+  { // Entry 426
+    0x1.fffffffffffd950f87131a007962a482p30,
+    -0x1.62e42fefa39eep4
+  },
+  { // Entry 427
+    0x1.fffffffffffd950f87131a007962a482p30,
+    0x1.62e42fefa39eep4
+  },
+  { // Entry 428
+    0x1.000000010000654361c4613c7312ecfdp15,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 429
+    0x1.000000010000654361c4613c7312ecfdp15,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 430
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 431
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 432
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 433
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 434
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 435
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 436
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 437
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 438
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 439
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 440
+    0x1.01000000000019378798c06e5185a376p3,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 441
+    0x1.01000000000019378798c06e5185a376p3,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 442
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 443
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 444
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 445
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 446
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 447
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 448
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 449
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 450
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 451
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 452
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 453
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 454
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 455
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 456
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 457
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 458
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 459
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 460
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 461
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 462
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 463
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 464
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 465
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 466
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 467
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 468
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 469
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 470
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 471
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 472
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 473
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 474
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 475
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 476
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 477
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 478
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 479
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 480
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 481
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 482
+    0x1.bfeb3206958461e0cd949b740397374bp262,
+    0x1.6db6db6db6db7p7
+  },
+  { // Entry 483
+    0x1.bfeb3206958461e0cd949b740397374bp262,
+    -0x1.6db6db6db6db7p7
+  },
+  { // Entry 484
+    0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    0x1.db6db6db6db6ep7
+  },
+  { // Entry 485
+    0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    -0x1.db6db6db6db6ep7
+  },
+  { // Entry 486
+    0x1.10bbd304e4d53317191db80168f41e88p421,
+    0x1.2492492492492p8
+  },
+  { // Entry 487
+    0x1.10bbd304e4d53317191db80168f41e88p421,
+    -0x1.2492492492492p8
+  },
+  { // Entry 488
+    0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    0x1.5b6db6db6db6dp8
+  },
+  { // Entry 489
+    0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    -0x1.5b6db6db6db6dp8
+  },
+  { // Entry 490
+    0x1.4c21539572c19b59fc629129d307d9b1p579,
+    0x1.9249249249248p8
+  },
+  { // Entry 491
+    0x1.4c21539572c19b59fc629129d307d9b1p579,
+    -0x1.9249249249248p8
+  },
+  { // Entry 492
+    0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    0x1.c924924924923p8
+  },
+  { // Entry 493
+    0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    -0x1.c924924924923p8
+  },
+  { // Entry 494
+    0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    0x1.4492492492492p9
+  },
+  { // Entry 495
+    0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    -0x1.4492492492492p9
+  },
+  { // Entry 496
+    0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    0x1.4924924924924p9
+  },
+  { // Entry 497
+    0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    -0x1.4924924924924p9
+  },
+  { // Entry 498
+    0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    0x1.4db6db6db6db6p9
+  },
+  { // Entry 499
+    0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    -0x1.4db6db6db6db6p9
+  },
+  { // Entry 500
+    0x1.0fc53c727155d9dd001733d4258e3203p975,
+    0x1.5249249249248p9
+  },
+  { // Entry 501
+    0x1.0fc53c727155d9dd001733d4258e3203p975,
+    -0x1.5249249249248p9
+  },
+  { // Entry 502
+    0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    0x1.56db6db6db6dap9
+  },
+  { // Entry 503
+    0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    -0x1.56db6db6db6dap9
+  },
+  { // Entry 504
+    0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    0x1.5b6db6db6db6cp9
+  },
+  { // Entry 505
+    0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    -0x1.5b6db6db6db6cp9
+  },
+  { // Entry 506
+    HUGE_VAL,
+    0x1.76db6db6db6dbp9
+  },
+  { // Entry 507
+    HUGE_VAL,
+    -0x1.76db6db6db6dbp9
+  },
+  { // Entry 508
+    HUGE_VAL,
+    0x1.8db6db6db6db6p9
+  },
+  { // Entry 509
+    HUGE_VAL,
+    -0x1.8db6db6db6db6p9
+  },
+  { // Entry 510
+    HUGE_VAL,
+    0x1.a492492492491p9
+  },
+  { // Entry 511
+    HUGE_VAL,
+    -0x1.a492492492491p9
+  },
+  { // Entry 512
+    HUGE_VAL,
+    0x1.bb6db6db6db6cp9
+  },
+  { // Entry 513
+    HUGE_VAL,
+    -0x1.bb6db6db6db6cp9
+  },
+  { // Entry 514
+    HUGE_VAL,
+    0x1.d249249249247p9
+  },
+  { // Entry 515
+    HUGE_VAL,
+    -0x1.d249249249247p9
+  },
+  { // Entry 516
+    HUGE_VAL,
+    0x1.e924924924922p9
+  },
+  { // Entry 517
+    HUGE_VAL,
+    -0x1.e924924924922p9
+  },
+  { // Entry 518
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    -0x1.6p9
+  },
+  { // Entry 519
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    0x1.6p9
+  },
+  { // Entry 520
+    0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    -0x1.5b6db6db6db6ep9
+  },
+  { // Entry 521
+    0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    0x1.5b6db6db6db6ep9
+  },
+  { // Entry 522
+    0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    -0x1.56db6db6db6dcp9
+  },
+  { // Entry 523
+    0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    0x1.56db6db6db6dcp9
+  },
+  { // Entry 524
+    0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    -0x1.524924924924ap9
+  },
+  { // Entry 525
+    0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    0x1.524924924924ap9
+  },
+  { // Entry 526
+    0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    -0x1.4db6db6db6db8p9
+  },
+  { // Entry 527
+    0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    0x1.4db6db6db6db8p9
+  },
+  { // Entry 528
+    0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    -0x1.4924924924926p9
+  },
+  { // Entry 529
+    0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    0x1.4924924924926p9
+  },
+  { // Entry 530
+    0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    -0x1.4492492492494p9
+  },
+  { // Entry 531
+    0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    0x1.4492492492494p9
+  },
+  { // Entry 532
+    0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    -0x1.4000000000002p9
+  },
+  { // Entry 533
+    0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    0x1.4000000000002p9
+  },
+  { // Entry 534
+    0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 535
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 536
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 537
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 538
+    0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 539
+    0x1.01d86cfadd84bed563ca81e639d82de4p0,
+    0x1.eb851eb851eb7p-4
+  },
+  { // Entry 540
+    0x1.01d86cfadd84bed563ca81e639d82de4p0,
+    -0x1.eb851eb851eb7p-4
+  },
+  { // Entry 541
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 542
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 543
+    0x1.01d86cfadd84bf12fa34fbebe5d038bep0,
+    0x1.eb851eb851eb9p-4
+  },
+  { // Entry 544
+    0x1.01d86cfadd84bf12fa34fbebe5d038bep0,
+    -0x1.eb851eb851eb9p-4
+  },
+  { // Entry 545
+    0x1.20ac1862ae8d042fe838523e9530a73ep0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 546
+    0x1.20ac1862ae8d042fe838523e9530a73ep0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 547
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.0p-1
+  },
+  { // Entry 548
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.0p-1
+  },
+  { // Entry 549
+    0x1.20ac1862ae8d0a70b63e4894edd78b6ep0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 550
+    0x1.20ac1862ae8d0a70b63e4894edd78b6ep0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 551
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 552
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 553
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 554
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 555
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 556
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 557
+    0x1.ab5adb9c435e4cc33d1386d805bcc667p30,
+    0x1.5ffffffffffffp4
+  },
+  { // Entry 558
+    0x1.ab5adb9c435e4cc33d1386d805bcc667p30,
+    -0x1.5ffffffffffffp4
+  },
+  { // Entry 559
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    0x1.6p4
+  },
+  { // Entry 560
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    -0x1.6p4
+  },
+  { // Entry 561
+    0x1.ab5adb9c4361a378f44c0d97f5ef6222p30,
+    0x1.6000000000001p4
+  },
+  { // Entry 562
+    0x1.ab5adb9c4361a378f44c0d97f5ef6222p30,
+    -0x1.6000000000001p4
+  },
+  { // Entry 563
+    0x1.226af33b1fdae7ecca102ad6b7f98a06p32,
+    0x1.6ffffffffffffp4
+  },
+  { // Entry 564
+    0x1.226af33b1fdae7ecca102ad6b7f98a06p32,
+    -0x1.6ffffffffffffp4
+  },
+  { // Entry 565
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    0x1.7p4
+  },
+  { // Entry 566
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    -0x1.7p4
+  },
+  { // Entry 567
+    0x1.226af33b1fdd2cc2b0866a8ecca822f4p32,
+    0x1.7000000000001p4
+  },
+  { // Entry 568
+    0x1.226af33b1fdd2cc2b0866a8ecca822f4p32,
+    -0x1.7000000000001p4
+  },
+  { // Entry 569
+    0x1.fffffffffffb9ede67b7a313295faa73p51,
+    0x1.25e4f7b2737f9p5
+  },
+  { // Entry 570
+    0x1.fffffffffffb9ede67b7a313295faa73p51,
+    -0x1.25e4f7b2737f9p5
+  },
+  { // Entry 571
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 572
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 573
+    0x1.000000000001cf6f33dbd188d26ca4a9p52,
+    0x1.25e4f7b2737fbp5
+  },
+  { // Entry 574
+    0x1.000000000001cf6f33dbd188d26ca4a9p52,
+    -0x1.25e4f7b2737fbp5
+  },
+  { // Entry 575
+    0x1.6a09e667f3b73b2e9b132d51434e682dp52,
+    0x1.28aac01252c6cp5
+  },
+  { // Entry 576
+    0x1.6a09e667f3b73b2e9b132d51434e682dp52,
+    -0x1.28aac01252c6cp5
+  },
+  { // Entry 577
+    0x1.6a09e667f3ba0f4267e314c28dbf6b23p52,
+    0x1.28aac01252c6dp5
+  },
+  { // Entry 578
+    0x1.6a09e667f3ba0f4267e314c28dbf6b23p52,
+    -0x1.28aac01252c6dp5
+  },
+  { // Entry 579
+    0x1.6a09e667f3bce35634b2fc39805807b9p52,
+    0x1.28aac01252c6ep5
+  },
+  { // Entry 580
+    0x1.6a09e667f3bce35634b2fc39805807b9p52,
+    -0x1.28aac01252c6ep5
+  },
+  { // Entry 581
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 582
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 583
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 584
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 585
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 586
+    HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 587
+    HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 588
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 589
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 590
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 591
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 592
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 593
+    0x1.0000000000000007ffffffffffff800ap0,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 594
+    0x1.0000000000000007ffffffffffff800ap0,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 595
+    0x1.0000000000000008000000000000000ap0,
+    0x1.0p-30
+  },
+  { // Entry 596
+    0x1.0000000000000008000000000000000ap0,
+    -0x1.0p-30
+  },
+  { // Entry 597
+    0x1.0000000000000008000000000001000ap0,
+    0x1.0000000000001p-30
+  },
+  { // Entry 598
+    0x1.0000000000000008000000000001000ap0,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 599
+    0x1.0000000200000000aaaa8aaac16c016cp0,
+    0x1.fffffffffffffp-16
+  },
+  { // Entry 600
+    0x1.0000000200000000aaaa8aaac16c016cp0,
+    -0x1.fffffffffffffp-16
+  },
+  { // Entry 601
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    0x1.0p-15
+  },
+  { // Entry 602
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    -0x1.0p-15
+  },
+  { // Entry 603
+    0x1.0000000200000000aaaaeaaac16c416cp0,
+    0x1.0000000000001p-15
+  },
+  { // Entry 604
+    0x1.0000000200000000aaaaeaaac16c416cp0,
+    -0x1.0000000000001p-15
+  },
+  { // Entry 605
+    0x1.0008000aaab05b06d073fbf35675d3c7p0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 606
+    0x1.0008000aaab05b06d073fbf35675d3c7p0,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 607
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    0x1.0p-6
+  },
+  { // Entry 608
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    -0x1.0p-6
+  },
+  { // Entry 609
+    0x1.0008000aaab05b085077fbf689aa450ep0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 610
+    0x1.0008000aaab05b085077fbf689aa450ep0,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 611
+    0x1.002000aaac16c30a31d59c22178e80d2p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 612
+    0x1.002000aaac16c30a31d59c22178e80d2p0,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 613
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    0x1.0p-5
+  },
+  { // Entry 614
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    -0x1.0p-5
+  },
+  { // Entry 615
+    0x1.002000aaac16c31032159ceee5937a38p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 616
+    0x1.002000aaac16c31032159ceee5937a38p0,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 617
+    0x1.00800aab05b1fb1c50429ea2694ccac8p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 618
+    0x1.00800aab05b1fb1c50429ea2694ccac8p0,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 619
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    0x1.0p-4
+  },
+  { // Entry 620
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    -0x1.0p-4
+  },
+  { // Entry 621
+    0x1.00800aab05b1fb345442d1d6d4983508p0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 622
+    0x1.00800aab05b1fb345442d1d6d4983508p0,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 623
+    0x1.0200aac16db6edcc80b33b1062033cc7p0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 624
+    0x1.0200aac16db6edcc80b33b1062033cc7p0,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 625
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    0x1.0p-3
+  },
+  { // Entry 626
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    -0x1.0p-3
+  },
+  { // Entry 627
+    0x1.0200aac16db6ee2cc0c0091553a9d0cep0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 628
+    0x1.0200aac16db6ee2cc0c0091553a9d0cep0,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 629
+    0x1.080ab05ca6145e5b88296b187f06805fp0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 630
+    0x1.080ab05ca6145e5b88296b187f06805fp0,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 631
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    0x1.0p-2
+  },
+  { // Entry 632
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    -0x1.0p-2
+  },
+  { // Entry 633
+    0x1.080ab05ca6145fdf8b5dd6a4973a4a4ep0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 634
+    0x1.080ab05ca6145fdf8b5dd6a4973a4a4ep0,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 635
+    0x1.e18fa0df2d9ba58f58936095ae8d9969p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 636
+    0x1.e18fa0df2d9ba58f58936095ae8d9969p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 637
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    0x1.0p1
+  },
+  { // Entry 638
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    -0x1.0p1
+  },
+  { // Entry 639
+    0x1.e18fa0df2d9bfc9ac6be853a8fad8f33p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 640
+    0x1.e18fa0df2d9bfc9ac6be853a8fad8f33p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 641
+    0x1.b4ee858de3e7c9cd569e3d719b38d342p4,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 642
+    0x1.b4ee858de3e7c9cd569e3d719b38d342p4,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 643
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    0x1.0p2
+  },
+  { // Entry 644
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    -0x1.0p2
+  },
+  { // Entry 645
+    0x1.b4ee858de3e86d8aa6b2deb6ca2c6104p4,
+    0x1.0000000000001p2
+  },
+  { // Entry 646
+    0x1.b4ee858de3e86d8aa6b2deb6ca2c6104p4,
+    -0x1.0000000000001p2
+  },
+  { // Entry 647
+    0x1.749eaa93f4e703e92c604cbb82b0787ap10,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 648
+    0x1.749eaa93f4e703e92c604cbb82b0787ap10,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 649
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    0x1.0p3
+  },
+  { // Entry 650
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    -0x1.0p3
+  },
+  { // Entry 651
+    0x1.749eaa93f4e81b60282ffe386b648851p10,
+    0x1.0000000000001p3
+  },
+  { // Entry 652
+    0x1.749eaa93f4e81b60282ffe386b648851p10,
+    -0x1.0000000000001p3
+  },
+  { // Entry 653
+    0x1.0f2ebd0a800543a63cca0142899e262fp22,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 654
+    0x1.0f2ebd0a800543a63cca0142899e262fp22,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 655
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    0x1.0p4
+  },
+  { // Entry 656
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    -0x1.0p4
+  },
+  { // Entry 657
+    0x1.0f2ebd0a8006da6c5859c1404c29aff0p22,
+    0x1.0000000000001p4
+  },
+  { // Entry 658
+    0x1.0f2ebd0a8006da6c5859c1404c29aff0p22,
+    -0x1.0000000000001p4
+  },
+  { // Entry 659
+    0x1.1f43fcc4b661a8944ac389c44c1372ffp45,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 660
+    0x1.1f43fcc4b661a8944ac389c44c1372ffp45,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 661
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    0x1.0p5
+  },
+  { // Entry 662
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    -0x1.0p5
+  },
+  { // Entry 663
+    0x1.1f43fcc4b66506604111acee528244bfp45,
+    0x1.0000000000001p5
+  },
+  { // Entry 664
+    0x1.1f43fcc4b66506604111acee528244bfp45,
+    -0x1.0000000000001p5
+  },
+  { // Entry 665
+    0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 666
+    0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 667
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.0p6
+  },
+  { // Entry 668
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.0p6
+  },
+  { // Entry 669
+    0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    0x1.0000000000001p6
+  },
+  { // Entry 670
+    0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    -0x1.0000000000001p6
+  },
+  { // Entry 671
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 672
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 673
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    0x1.0p7
+  },
+  { // Entry 674
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    -0x1.0p7
+  },
+  { // Entry 675
+    0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    0x1.0000000000001p7
+  },
+  { // Entry 676
+    0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    -0x1.0000000000001p7
+  },
+  { // Entry 677
+    0x1.41c7a8814be192a5df25b042af824efdp368,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 678
+    0x1.41c7a8814be192a5df25b042af824efdp368,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 679
+    0x1.41c7a8814beba0e323300f777da65854p368,
+    0x1.0p8
+  },
+  { // Entry 680
+    0x1.41c7a8814beba0e323300f777da65854p368,
+    -0x1.0p8
+  },
+  { // Entry 681
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    0x1.0000000000001p8
+  },
+  { // Entry 682
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    -0x1.0000000000001p8
+  },
+  { // Entry 683
+    0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 684
+    0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 685
+    0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    0x1.0p9
+  },
+  { // Entry 686
+    0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    -0x1.0p9
+  },
+  { // Entry 687
+    0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    0x1.0000000000001p9
+  },
+  { // Entry 688
+    0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    -0x1.0000000000001p9
+  },
+  { // Entry 689
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 690
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 691
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 692
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 693
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 694
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 695
+    HUGE_VAL,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 696
+    0x1.72f147fee40004f636960fb65616f933p3,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 697
+    0x1.412cc2a8d4e9df8319ceee45d93f21f3p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 698
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 699
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 700
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 701
+    0x1.531994ce525b97d489c1beb383943240p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 702
+    0x1.p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 703
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 704
+    0x1.p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 705
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 706
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 707
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 708
+    0x1.p0,
+    0.0
+  },
+  { // Entry 709
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 710
+    0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 711
+    0x1.p0,
+    -0x1.0p-1073
+  },
+  { // Entry 712
+    0x1.p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 713
+    0x1.p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 714
+    0x1.p0,
+    -0x1.0p-1022
+  },
+  { // Entry 715
+    0x1.p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 716
+    0x1.531994ce525b97d489c1beb383943240p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 717
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 718
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 719
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 720
+    0x1.412cc2a8d4e9df8319ceee45d93f21f3p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 721
+    0x1.72f147fee40004f636960fb65616f933p3,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 722
+    HUGE_VAL,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 723
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 724
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 725
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 726
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 727
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 728
+    HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  }
+};
diff --git a/tests/math_data/coshf_intel_data.h b/tests/math_data/coshf_intel_data.h
new file mode 100644
index 0000000..813b1b3
--- /dev/null
+++ b/tests/math_data/coshf_intel_data.h
@@ -0,0 +1,2438 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_coshf_intel_data[] = {
+  { // Entry 0
+    0x1.2ae06100e62be904fdb5bc85681d5aaep11,
+    -0x1.0f1fb2p3
+  },
+  { // Entry 1
+    0x1.2ae06100e62be904fdb5bc85681d5aaep11,
+    0x1.0f1fb2p3
+  },
+  { // Entry 2
+    0x1.0000000000000000000c87785d6188p0,
+    -0x1.405f90p-38
+  },
+  { // Entry 3
+    0x1.0000000000000000000c87785d6188p0,
+    0x1.405f90p-38
+  },
+  { // Entry 4
+    0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    -0x1.561b10p6
+  },
+  { // Entry 5
+    0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    0x1.561b10p6
+  },
+  { // Entry 6
+    0x1.d2f2227ae4dd65b581071b0f40467c30p122,
+    -0x1.576ebcp6
+  },
+  { // Entry 7
+    0x1.d2f2227ae4dd65b581071b0f40467c30p122,
+    0x1.576ebcp6
+  },
+  { // Entry 8
+    0x1.936b41047c7f4ef20acbfc3ab28adde1p7,
+    -0x1.7fff80p2
+  },
+  { // Entry 9
+    0x1.936b41047c7f4ef20acbfc3ab28adde1p7,
+    0x1.7fff80p2
+  },
+  { // Entry 10
+    0x1.0000017f58437ac57be86eaf878afddap0,
+    -0x1.bb06ccp-12
+  },
+  { // Entry 11
+    0x1.0000017f58437ac57be86eaf878afddap0,
+    0x1.bb06ccp-12
+  },
+  { // Entry 12
+    0x1.fbacf4ca702a97945d7c7d78c0bdad47p8,
+    -0x1.bb1240p2
+  },
+  { // Entry 13
+    0x1.fbacf4ca702a97945d7c7d78c0bdad47p8,
+    0x1.bb1240p2
+  },
+  { // Entry 14
+    0x1.0000017fb2c9b9e288983fa06ce62b04p0,
+    -0x1.bb3b18p-12
+  },
+  { // Entry 15
+    0x1.0000017fb2c9b9e288983fa06ce62b04p0,
+    0x1.bb3b18p-12
+  },
+  { // Entry 16
+    0x1.0000070003551fecea0dae6d0551de10p0,
+    -0x1.deef12p-11
+  },
+  { // Entry 17
+    0x1.0000070003551fecea0dae6d0551de10p0,
+    0x1.deef12p-11
+  },
+  { // Entry 18
+    0x1.01fe2b000874d8917b3a73fd080542f7p0,
+    -0x1.fec090p-4
+  },
+  { // Entry 19
+    0x1.01fe2b000874d8917b3a73fd080542f7p0,
+    0x1.fec090p-4
+  },
+  { // Entry 20
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    0x1.p-21
+  },
+  { // Entry 21
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    -0x1.p-21
+  },
+  { // Entry 22
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 23
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 24
+    0x1.0000000000000000000020000080p0,
+    0x1.000002p-41
+  },
+  { // Entry 25
+    0x1.0000000000000000000020000080p0,
+    -0x1.000002p-41
+  },
+  { // Entry 26
+    0x1.749f1f059aafac3e3ae482f732034f99p10,
+    0x1.00000ap3
+  },
+  { // Entry 27
+    0x1.749f1f059aafac3e3ae482f732034f99p10,
+    -0x1.00000ap3
+  },
+  { // Entry 28
+    0x1.080ab13efd4e998566b0693a9a7731a8p0,
+    0x1.00000ep-2
+  },
+  { // Entry 29
+    0x1.080ab13efd4e998566b0693a9a7731a8p0,
+    -0x1.00000ep-2
+  },
+  { // Entry 30
+    0x1.0200ab01986c25f1377dd85169c7ccf5p0,
+    0x1.000010p-3
+  },
+  { // Entry 31
+    0x1.0200ab01986c25f1377dd85169c7ccf5p0,
+    -0x1.000010p-3
+  },
+  { // Entry 32
+    0x1.e190fd0d6db8db09b5aad2f89bb2ad76p1,
+    0x1.000060p1
+  },
+  { // Entry 33
+    0x1.e190fd0d6db8db09b5aad2f89bb2ad76p1,
+    -0x1.000060p1
+  },
+  { // Entry 34
+    0x1.b4f4eaff04f265d5f55aecad94412877p4,
+    0x1.0000f0p2
+  },
+  { // Entry 35
+    0x1.b4f4eaff04f265d5f55aecad94412877p4,
+    -0x1.0000f0p2
+  },
+  { // Entry 36
+    0x1.76112f028a8233c6be52ddd0d11dd50fp10,
+    0x1.001fc2p3
+  },
+  { // Entry 37
+    0x1.76112f028a8233c6be52ddd0d11dd50fp10,
+    -0x1.001fc2p3
+  },
+  { // Entry 38
+    0x1.e203bf2a6f104d990d9610afb6c8b014p1,
+    0x1.0020p1
+  },
+  { // Entry 39
+    0x1.e203bf2a6f104d990d9610afb6c8b014p1,
+    -0x1.0020p1
+  },
+  { // Entry 40
+    0x1.080cc501591cc669c4cc8cd1a5891727p0,
+    0x1.0020f0p-2
+  },
+  { // Entry 41
+    0x1.080cc501591cc669c4cc8cd1a5891727p0,
+    -0x1.0020f0p-2
+  },
+  { // Entry 42
+    0x1.7d15790923fc59b8d7d10a8c5d3adc48p10,
+    0x1.00b8p3
+  },
+  { // Entry 43
+    0x1.7d15790923fc59b8d7d10a8c5d3adc48p10,
+    -0x1.00b8p3
+  },
+  { // Entry 44
+    0x1.00818500020c06cedbd38d34eee6ab54p0,
+    0x1.0179p-4
+  },
+  { // Entry 45
+    0x1.00818500020c06cedbd38d34eee6ab54p0,
+    -0x1.0179p-4
+  },
+  { // Entry 46
+    0x1.8d17e7030b8e9690e01964bd2c8be94bp0,
+    0x1.01bfc2p0
+  },
+  { // Entry 47
+    0x1.8d17e7030b8e9690e01964bd2c8be94bp0,
+    -0x1.01bfc2p0
+  },
+  { // Entry 48
+    0x1.8e34430073e0e9199e68ad3bca9ed793p10,
+    0x1.0220p3
+  },
+  { // Entry 49
+    0x1.8e34430073e0e9199e68ad3bca9ed793p10,
+    -0x1.0220p3
+  },
+  { // Entry 50
+    0x1.93dc630008b669187e515dc7aa42f486p0,
+    0x1.0760p0
+  },
+  { // Entry 51
+    0x1.93dc630008b669187e515dc7aa42f486p0,
+    -0x1.0760p0
+  },
+  { // Entry 52
+    0x1.bf1abedb9fcde794ba793b6b505eb17bp22,
+    0x1.08p4
+  },
+  { // Entry 53
+    0x1.bf1abedb9fcde794ba793b6b505eb17bp22,
+    -0x1.08p4
+  },
+  { // Entry 54
+    0x1.89acdf26f99012ec527c5ea1162aa095p46,
+    0x1.0810eep5
+  },
+  { // Entry 55
+    0x1.89acdf26f99012ec527c5ea1162aa095p46,
+    -0x1.0810eep5
+  },
+  { // Entry 56
+    0x1.9506d202339691daa92242c890d53037p0,
+    0x1.0854p0
+  },
+  { // Entry 57
+    0x1.9506d202339691daa92242c890d53037p0,
+    -0x1.0854p0
+  },
+  { // Entry 58
+    0x1.97a75b0008810be285110dcff331ac17p0,
+    0x1.0a759cp0
+  },
+  { // Entry 59
+    0x1.97a75b0008810be285110dcff331ac17p0,
+    -0x1.0a759cp0
+  },
+  { // Entry 60
+    0x1.a229dffff61e1494787d29ddf23b0a5cp0,
+    0x1.12c4p0
+  },
+  { // Entry 61
+    0x1.a229dffff61e1494787d29ddf23b0a5cp0,
+    -0x1.12c4p0
+  },
+  { // Entry 62
+    0x1.a308650a09916a1f65dd2e3040dac8e6p0,
+    0x1.1370p0
+  },
+  { // Entry 63
+    0x1.a308650a09916a1f65dd2e3040dac8e6p0,
+    -0x1.1370p0
+  },
+  { // Entry 64
+    0x1.af7c88b59f8cb90273d971210f9ebaf1p0,
+    0x1.1cd4p0
+  },
+  { // Entry 65
+    0x1.af7c88b59f8cb90273d971210f9ebaf1p0,
+    -0x1.1cd4p0
+  },
+  { // Entry 66
+    0x1.b145deddd4b7287e0976b134aaea1e59p0,
+    0x1.1e24p0
+  },
+  { // Entry 67
+    0x1.b145deddd4b7287e0976b134aaea1e59p0,
+    -0x1.1e24p0
+  },
+  { // Entry 68
+    0x1.000002802632eecaa00848be2e43e7e8p0,
+    0x1.1e4004p-11
+  },
+  { // Entry 69
+    0x1.000002802632eecaa00848be2e43e7e8p0,
+    -0x1.1e4004p-11
+  },
+  { // Entry 70
+    0x1.00000280ae0c9376d02c0ee2eec07b9cp0,
+    0x1.1e5e62p-11
+  },
+  { // Entry 71
+    0x1.00000280ae0c9376d02c0ee2eec07b9cp0,
+    -0x1.1e5e62p-11
+  },
+  { // Entry 72
+    0x1.000a0d419b4ad7325cced6e3df2432b7p0,
+    0x1.1ef4p-6
+  },
+  { // Entry 73
+    0x1.000a0d419b4ad7325cced6e3df2432b7p0,
+    -0x1.1ef4p-6
+  },
+  { // Entry 74
+    0x1.b267ed723f88f82136ba366db2171548p0,
+    0x1.1ef8p0
+  },
+  { // Entry 75
+    0x1.b267ed723f88f82136ba366db2171548p0,
+    -0x1.1ef8p0
+  },
+  { // Entry 76
+    0x1.d7fd050e42bfb9da524bda1b668ed20ep24,
+    0x1.1f0c1cp4
+  },
+  { // Entry 77
+    0x1.d7fd050e42bfb9da524bda1b668ed20ep24,
+    -0x1.1f0c1cp4
+  },
+  { // Entry 78
+    0x1.02b05b0000fe430b8ec0ab0008934320p0,
+    0x1.2892c0p-3
+  },
+  { // Entry 79
+    0x1.02b05b0000fe430b8ec0ab0008934320p0,
+    -0x1.2892c0p-3
+  },
+  { // Entry 80
+    0x1.b56d7b0019ebe1980a88bfc98b96f903p5,
+    0x1.2c733cp2
+  },
+  { // Entry 81
+    0x1.b56d7b0019ebe1980a88bfc98b96f903p5,
+    -0x1.2c733cp2
+  },
+  { // Entry 82
+    0x1.2dde070027e555af93bf4b3a296fe1e4p0,
+    0x1.2e16d8p-1
+  },
+  { // Entry 83
+    0x1.2dde070027e555af93bf4b3a296fe1e4p0,
+    -0x1.2e16d8p-1
+  },
+  { // Entry 84
+    0x1.0bbbe7000001e6b3b455efdab53e4ee4p0,
+    0x1.34de30p-2
+  },
+  { // Entry 85
+    0x1.0bbbe7000001e6b3b455efdab53e4ee4p0,
+    -0x1.34de30p-2
+  },
+  { // Entry 86
+    0x1.d6daeadc0aa386a2df7fee2f9b758bdbp0,
+    0x1.38p0
+  },
+  { // Entry 87
+    0x1.d6daeadc0aa386a2df7fee2f9b758bdbp0,
+    -0x1.38p0
+  },
+  { // Entry 88
+    0x1.ec7e880bf432acf0cdb3055c89eca119p0,
+    0x1.459506p0
+  },
+  { // Entry 89
+    0x1.ec7e880bf432acf0cdb3055c89eca119p0,
+    -0x1.459506p0
+  },
+  { // Entry 90
+    0x1.9a74150aa235ee7c81eb0c8a84e5756ep2,
+    0x1.45cf6ap1
+  },
+  { // Entry 91
+    0x1.9a74150aa235ee7c81eb0c8a84e5756ep2,
+    -0x1.45cf6ap1
+  },
+  { // Entry 92
+    0x1.f7c601c26a0aab07acb3aed129529860p116,
+    0x1.4719c6p6
+  },
+  { // Entry 93
+    0x1.f7c601c26a0aab07acb3aed129529860p116,
+    -0x1.4719c6p6
+  },
+  { // Entry 94
+    0x1.feb75137e73fc5511a1cdda1ce6ea73bp116,
+    0x1.4727cap6
+  },
+  { // Entry 95
+    0x1.feb75137e73fc5511a1cdda1ce6ea73bp116,
+    -0x1.4727cap6
+  },
+  { // Entry 96
+    0x1.392fe100303ac2c0f653a3ac40bb345ep0,
+    0x1.5028p-1
+  },
+  { // Entry 97
+    0x1.392fe100303ac2c0f653a3ac40bb345ep0,
+    -0x1.5028p-1
+  },
+  { // Entry 98
+    0x1.7eca310b2cc18f1b14012b1aba75d191p6,
+    0x1.5046a4p2
+  },
+  { // Entry 99
+    0x1.7eca310b2cc18f1b14012b1aba75d191p6,
+    -0x1.5046a4p2
+  },
+  { // Entry 100
+    0x1.03b968ffff0215bfacc70c1cc8cbeb01p0,
+    0x1.5cea44p-3
+  },
+  { // Entry 101
+    0x1.03b968ffff0215bfacc70c1cc8cbeb01p0,
+    -0x1.5cea44p-3
+  },
+  { // Entry 102
+    0x1.fbdabac97ac130517ca085001de97a8dp6,
+    0x1.625ebcp2
+  },
+  { // Entry 103
+    0x1.fbdabac97ac130517ca085001de97a8dp6,
+    -0x1.625ebcp2
+  },
+  { // Entry 104
+    0x1.ffe308fff60483750a8a66c93e16da96p126,
+    0x1.62e3f6p6
+  },
+  { // Entry 105
+    0x1.ffe308fff60483750a8a66c93e16da96p126,
+    -0x1.62e3f6p6
+  },
+  { // Entry 106
+    0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    0x1.62e4b4p6
+  },
+  { // Entry 107
+    0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    -0x1.62e4b4p6
+  },
+  { // Entry 108
+    0x1.03dd38ffff0116b4128076a495ccd814p0,
+    0x1.636444p-3
+  },
+  { // Entry 109
+    0x1.03dd38ffff0116b4128076a495ccd814p0,
+    -0x1.636444p-3
+  },
+  { // Entry 110
+    0x1.3887c59fb04d434e609610c148d9b8cep127,
+    0x1.63b080p6
+  },
+  { // Entry 111
+    0x1.3887c59fb04d434e609610c148d9b8cep127,
+    -0x1.63b080p6
+  },
+  { // Entry 112
+    0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    0x1.6591c4p6
+  },
+  { // Entry 113
+    0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    -0x1.6591c4p6
+  },
+  { // Entry 114
+    0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    0x1.65a8dap6
+  },
+  { // Entry 115
+    0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    -0x1.65a8dap6
+  },
+  { // Entry 116
+    0x1.00fe75ffffa2579f73eddb26932641adp0,
+    0x1.68d502p-4
+  },
+  { // Entry 117
+    0x1.00fe75ffffa2579f73eddb26932641adp0,
+    -0x1.68d502p-4
+  },
+  { // Entry 118
+    0x1.00000100034d4d82cc659ba42fd9eee7p0,
+    0x1.6a0c3cp-12
+  },
+  { // Entry 119
+    0x1.00000100034d4d82cc659ba42fd9eee7p0,
+    -0x1.6a0c3cp-12
+  },
+  { // Entry 120
+    0x1.0437b0ffff6fc3960703849d04864d19p0,
+    0x1.733eaap-3
+  },
+  { // Entry 121
+    0x1.0437b0ffff6fc3960703849d04864d19p0,
+    -0x1.733eaap-3
+  },
+  { // Entry 122
+    0x1.00045900028b76cee4330cc36105004cp0,
+    0x1.797124p-7
+  },
+  { // Entry 123
+    0x1.00045900028b76cee4330cc36105004cp0,
+    -0x1.797124p-7
+  },
+  { // Entry 124
+    0x1.11aeed0000fda977f1d894606c13127ep0,
+    0x1.7a730cp-2
+  },
+  { // Entry 125
+    0x1.11aeed0000fda977f1d894606c13127ep0,
+    -0x1.7a730cp-2
+  },
+  { // Entry 126
+    0x1.01182efffcd14b33d45c900ed03e5b8dp0,
+    0x1.7a9e50p-4
+  },
+  { // Entry 127
+    0x1.01182efffcd14b33d45c900ed03e5b8dp0,
+    -0x1.7a9e50p-4
+  },
+  { // Entry 128
+    0x1.046a6700030d4af8985007e85b4af3a7p0,
+    0x1.7bd6b6p-3
+  },
+  { // Entry 129
+    0x1.046a6700030d4af8985007e85b4af3a7p0,
+    -0x1.7bd6b6p-3
+  },
+  { // Entry 130
+    0x1.5df91cfff86f7210fa16368df0698fa9p16,
+    0x1.8313eap3
+  },
+  { // Entry 131
+    0x1.5df91cfff86f7210fa16368df0698fa9p16,
+    -0x1.8313eap3
+  },
+  { // Entry 132
+    0x1.049b050001c808a9415533afc7a84886p0,
+    0x1.83e5a8p-3
+  },
+  { // Entry 133
+    0x1.049b050001c808a9415533afc7a84886p0,
+    -0x1.83e5a8p-3
+  },
+  { // Entry 134
+    0x1.04b1a500027f89a1b0fe4148983e18a2p0,
+    0x1.87970cp-3
+  },
+  { // Entry 135
+    0x1.04b1a500027f89a1b0fe4148983e18a2p0,
+    -0x1.87970cp-3
+  },
+  { // Entry 136
+    0x1.982aa4f9d6ecf2daf29ef6311c7db8e1p16,
+    0x1.88p3
+  },
+  { // Entry 137
+    0x1.982aa4f9d6ecf2daf29ef6311c7db8e1p16,
+    -0x1.88p3
+  },
+  { // Entry 138
+    0x1.d501950e8ef23c5acbb78e6bf7a4441cp7,
+    0x1.89a39ep2
+  },
+  { // Entry 139
+    0x1.d501950e8ef23c5acbb78e6bf7a4441cp7,
+    -0x1.89a39ep2
+  },
+  { // Entry 140
+    0x1.dab77d041ed5ae09f1194336e1dfeca4p16,
+    0x1.8cd558p3
+  },
+  { // Entry 141
+    0x1.dab77d041ed5ae09f1194336e1dfeca4p16,
+    -0x1.8cd558p3
+  },
+  { // Entry 142
+    0x1.0013770002a06bda5ded556406e34a54p0,
+    0x1.8f4f3ep-6
+  },
+  { // Entry 143
+    0x1.0013770002a06bda5ded556406e34a54p0,
+    -0x1.8f4f3ep-6
+  },
+  { // Entry 144
+    0x1.014a8c000001724bcf21bcc9cd4ef647p0,
+    0x1.9b3716p-4
+  },
+  { // Entry 145
+    0x1.014a8c000001724bcf21bcc9cd4ef647p0,
+    -0x1.9b3716p-4
+  },
+  { // Entry 146
+    0x1.92c1df0aa08c8949d2dbfb61712636eap3,
+    0x1.9cb164p1
+  },
+  { // Entry 147
+    0x1.92c1df0aa08c8949d2dbfb61712636eap3,
+    -0x1.9cb164p1
+  },
+  { // Entry 148
+    0x1.5b2598fffffe38fde28ab3e6f6c93922p0,
+    0x1.a4299cp-1
+  },
+  { // Entry 149
+    0x1.5b2598fffffe38fde28ab3e6f6c93922p0,
+    -0x1.a4299cp-1
+  },
+  { // Entry 150
+    0x1.056ea5020eb4607e8800e56175b95427p0,
+    0x1.a52932p-3
+  },
+  { // Entry 151
+    0x1.056ea5020eb4607e8800e56175b95427p0,
+    -0x1.a52932p-3
+  },
+  { // Entry 152
+    0x1.16928f0000bf926291ed9efa582cceabp0,
+    0x1.aaeae4p-2
+  },
+  { // Entry 153
+    0x1.16928f0000bf926291ed9efa582cceabp0,
+    -0x1.aaeae4p-2
+  },
+  { // Entry 154
+    0x1.01731affff02859bd1fc2e3d3d5c6afcp0,
+    0x1.b3b0fcp-4
+  },
+  { // Entry 155
+    0x1.01731affff02859bd1fc2e3d3d5c6afcp0,
+    -0x1.b3b0fcp-4
+  },
+  { // Entry 156
+    0x1.fc3b5ac8614a73e8394fe9e1bf341a5dp3,
+    0x1.ba8aa8p1
+  },
+  { // Entry 157
+    0x1.fc3b5ac8614a73e8394fe9e1bf341a5dp3,
+    -0x1.ba8aa8p1
+  },
+  { // Entry 158
+    0x1.fcb698cebefbdde087f940e13637b997p3,
+    0x1.baa9bep1
+  },
+  { // Entry 159
+    0x1.fcb698cebefbdde087f940e13637b997p3,
+    -0x1.baa9bep1
+  },
+  { // Entry 160
+    0x1.0062890000000a2005177a360b8dafadp0,
+    0x1.c12a50p-5
+  },
+  { // Entry 161
+    0x1.0062890000000a2005177a360b8dafadp0,
+    -0x1.c12a50p-5
+  },
+  { // Entry 162
+    0x1.861ce90a2cd945e2796a70034a062f90p1,
+    0x1.c78c2cp0
+  },
+  { // Entry 163
+    0x1.861ce90a2cd945e2796a70034a062f90p1,
+    -0x1.c78c2cp0
+  },
+  { // Entry 164
+    0x1.0000196200326194f36f87a9a10954bcp0,
+    0x1.c7fffep-10
+  },
+  { // Entry 165
+    0x1.0000196200326194f36f87a9a10954bcp0,
+    -0x1.c7fffep-10
+  },
+  { // Entry 166
+    0x1.1a6044ffff019be7fe431534c1e1e91cp0,
+    0x1.ccef52p-2
+  },
+  { // Entry 167
+    0x1.1a6044ffff019be7fe431534c1e1e91cp0,
+    -0x1.ccef52p-2
+  },
+  { // Entry 168
+    0x1.908de10afd9f5aa0badc075a8aa14ccfp1,
+    0x1.ceb1c0p0
+  },
+  { // Entry 169
+    0x1.908de10afd9f5aa0badc075a8aa14ccfp1,
+    -0x1.ceb1c0p0
+  },
+  { // Entry 170
+    0x1.a060ab08be7164a09546b5ce15970e38p1,
+    0x1.d9239cp0
+  },
+  { // Entry 171
+    0x1.a060ab08be7164a09546b5ce15970e38p1,
+    -0x1.d9239cp0
+  },
+  { // Entry 172
+    0x1.d344e10e8bcea00ac4844a3448be9a5ep9,
+    0x1.e21ff0p2
+  },
+  { // Entry 173
+    0x1.d344e10e8bcea00ac4844a3448be9a5ep9,
+    -0x1.e21ff0p2
+  },
+  { // Entry 174
+    0x1.01dbabfffffdc890992101e9e0230177p0,
+    0x1.ed342ap-4
+  },
+  { // Entry 175
+    0x1.01dbabfffffdc890992101e9e0230177p0,
+    -0x1.ed342ap-4
+  },
+  { // Entry 176
+    0x1.75caa702ac31fcaca703cb767e704732p21,
+    0x1.f4169ap3
+  },
+  { // Entry 177
+    0x1.75caa702ac31fcaca703cb767e704732p21,
+    -0x1.f4169ap3
+  },
+  { // Entry 178
+    0x1.2d11ceffa73d603eca961e07fbcd0749p89,
+    0x1.f45dp5
+  },
+  { // Entry 179
+    0x1.2d11ceffa73d603eca961e07fbcd0749p89,
+    -0x1.f45dp5
+  },
+  { // Entry 180
+    0x1.00001f0200613f54e018eaccc7690671p0,
+    0x1.f7fffep-10
+  },
+  { // Entry 181
+    0x1.00001f0200613f54e018eaccc7690671p0,
+    -0x1.f7fffep-10
+  },
+  { // Entry 182
+    0x1.fe8bfd38762490c7f68e80a4bdf3a17dp89,
+    0x1.f896a2p5
+  },
+  { // Entry 183
+    0x1.fe8bfd38762490c7f68e80a4bdf3a17dp89,
+    -0x1.f896a2p5
+  },
+  { // Entry 184
+    0x1.d6cfcac57d6baaa29de57c93e576abc5p1,
+    0x1.f9fffep0
+  },
+  { // Entry 185
+    0x1.d6cfcac57d6baaa29de57c93e576abc5p1,
+    -0x1.f9fffep0
+  },
+  { // Entry 186
+    0x1.ddbfa30e4771719e07c1da78c0971b46p1,
+    0x1.fde37ep0
+  },
+  { // Entry 187
+    0x1.ddbfa30e4771719e07c1da78c0971b46p1,
+    -0x1.fde37ep0
+  },
+  { // Entry 188
+    0x1.007f0aff9995a3000c7c95095a06f71dp0,
+    0x1.fdfffep-5
+  },
+  { // Entry 189
+    0x1.007f0aff9995a3000c7c95095a06f71dp0,
+    -0x1.fdfffep-5
+  },
+  { // Entry 190
+    0x1.207137000101ef6a6756beb0ea45b857p0,
+    0x1.fe3b2ep-2
+  },
+  { // Entry 191
+    0x1.207137000101ef6a6756beb0ea45b857p0,
+    -0x1.fe3b2ep-2
+  },
+  { // Entry 192
+    0x1.6f8f53c3ebac6dfffe8a9b6e088ac07fp10,
+    0x1.ff1ffep2
+  },
+  { // Entry 193
+    0x1.6f8f53c3ebac6dfffe8a9b6e088ac07fp10,
+    -0x1.ff1ffep2
+  },
+  { // Entry 194
+    0x1.b261741c4fb3f1036d9f845f3564af2dp4,
+    0x1.ff3ffep1
+  },
+  { // Entry 195
+    0x1.b261741c4fb3f1036d9f845f3564af2dp4,
+    -0x1.ff3ffep1
+  },
+  { // Entry 196
+    0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    0x1.ffdffep5
+  },
+  { // Entry 197
+    0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    -0x1.ffdffep5
+  },
+  { // Entry 198
+    0x1.e1559d035ec13f82913aeeb61fab20d4p1,
+    0x1.ffe0p0
+  },
+  { // Entry 199
+    0x1.e1559d035ec13f82913aeeb61fab20d4p1,
+    -0x1.ffe0p0
+  },
+  { // Entry 200
+    0x1.1f0508e3c8278fe10a2e8c9020c8176dp45,
+    0x1.fffc7ep4
+  },
+  { // Entry 201
+    0x1.1f0508e3c8278fe10a2e8c9020c8176dp45,
+    -0x1.fffc7ep4
+  },
+  { // Entry 202
+    0x1.0f13feffff8e14e72398e58d6258a1dcp22,
+    0x1.fffcd8p3
+  },
+  { // Entry 203
+    0x1.0f13feffff8e14e72398e58d6258a1dcp22,
+    -0x1.fffcd8p3
+  },
+  { // Entry 204
+    0x1.e18dcd02b202413a4a76037efe716feep1,
+    0x1.fffefep0
+  },
+  { // Entry 205
+    0x1.e18dcd02b202413a4a76037efe716feep1,
+    -0x1.fffefep0
+  },
+  { // Entry 206
+    0x1.1f3661fed887e1ea6b1c49c86e62c65cp45,
+    0x1.ffff3ep4
+  },
+  { // Entry 207
+    0x1.1f3661fed887e1ea6b1c49c86e62c65cp45,
+    -0x1.ffff3ep4
+  },
+  { // Entry 208
+    0x1.20ac14ff94619db4d2e40af1cf118f50p0,
+    0x1.ffffe6p-2
+  },
+  { // Entry 209
+    0x1.20ac14ff94619db4d2e40af1cf118f50p0,
+    -0x1.ffffe6p-2
+  },
+  { // Entry 210
+    0x1.000001fffff8aaaaad6c16d05ca5ba42p0,
+    0x1.fffffcp-12
+  },
+  { // Entry 211
+    0x1.000001fffff8aaaaad6c16d05ca5ba42p0,
+    -0x1.fffffcp-12
+  },
+  { // Entry 212
+    0x1.1c74a6ffff27037aed89be799ae87d89p0,
+    0x1.de7314p-2
+  },
+  { // Entry 213
+    0x1.1c74a6ffff27037aed89be799ae87d89p0,
+    -0x1.de7314p-2
+  },
+  { // Entry 214
+    0x1.p0,
+    0.0
+  },
+  { // Entry 215
+    0x1.00a7413964dddf629669c3500f708459p0,
+    0x1.24924ap-4
+  },
+  { // Entry 216
+    0x1.00a7413964dddf629669c3500f708459p0,
+    -0x1.24924ap-4
+  },
+  { // Entry 217
+    0x1.029ddf71e67714aabadecb6c34881466p0,
+    0x1.24924ap-3
+  },
+  { // Entry 218
+    0x1.029ddf71e67714aabadecb6c34881466p0,
+    -0x1.24924ap-3
+  },
+  { // Entry 219
+    0x1.05e66b72f920ca534e1daa0b86a4e7ebp0,
+    0x1.b6db70p-3
+  },
+  { // Entry 220
+    0x1.05e66b72f920ca534e1daa0b86a4e7ebp0,
+    -0x1.b6db70p-3
+  },
+  { // Entry 221
+    0x1.0a852f7ad288abd0695c503777bc0195p0,
+    0x1.24924ap-2
+  },
+  { // Entry 222
+    0x1.0a852f7ad288abd0695c503777bc0195p0,
+    -0x1.24924ap-2
+  },
+  { // Entry 223
+    0x1.10803510fe36a3f7c842ab6a75c8b006p0,
+    0x1.6db6dcp-2
+  },
+  { // Entry 224
+    0x1.10803510fe36a3f7c842ab6a75c8b006p0,
+    -0x1.6db6dcp-2
+  },
+  { // Entry 225
+    0x1.17df4cc2d21000190b5383b6becd7becp0,
+    0x1.b6db6ep-2
+  },
+  { // Entry 226
+    0x1.17df4cc2d21000190b5383b6becd7becp0,
+    -0x1.b6db6ep-2
+  },
+  { // Entry 227
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.p-1
+  },
+  { // Entry 228
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.p-1
+  },
+  { // Entry 229
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.p-1
+  },
+  { // Entry 230
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.p-1
+  },
+  { // Entry 231
+    0x1.2af217eb37e2369650003997bb02d72cp0,
+    0x1.24924ap-1
+  },
+  { // Entry 232
+    0x1.2af217eb37e2369650003997bb02d72cp0,
+    -0x1.24924ap-1
+  },
+  { // Entry 233
+    0x1.36beb7b3f8f237e48efcda7fba85def5p0,
+    0x1.492494p-1
+  },
+  { // Entry 234
+    0x1.36beb7b3f8f237e48efcda7fba85def5p0,
+    -0x1.492494p-1
+  },
+  { // Entry 235
+    0x1.442162b93f2d4967b2bac87d988998cap0,
+    0x1.6db6dep-1
+  },
+  { // Entry 236
+    0x1.442162b93f2d4967b2bac87d988998cap0,
+    -0x1.6db6dep-1
+  },
+  { // Entry 237
+    0x1.532b9688fe84749d71a9627934d00a05p0,
+    0x1.924928p-1
+  },
+  { // Entry 238
+    0x1.532b9688fe84749d71a9627934d00a05p0,
+    -0x1.924928p-1
+  },
+  { // Entry 239
+    0x1.63f0fa1d8b27abf7928a83538f1fb402p0,
+    0x1.b6db72p-1
+  },
+  { // Entry 240
+    0x1.63f0fa1d8b27abf7928a83538f1fb402p0,
+    -0x1.b6db72p-1
+  },
+  { // Entry 241
+    0x1.7687778b78c8571fbd5f4165fc052aefp0,
+    0x1.db6dbcp-1
+  },
+  { // Entry 242
+    0x1.7687778b78c8571fbd5f4165fc052aefp0,
+    -0x1.db6dbcp-1
+  },
+  { // Entry 243
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 244
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 245
+    0x1.p0,
+    0.0
+  },
+  { // Entry 246
+    0x1.0009a148a4a36317b768fa180d3b7eb3p0,
+    0x1.18de5ap-6
+  },
+  { // Entry 247
+    0x1.0009a148a4a36317b768fa180d3b7eb3p0,
+    -0x1.18de5ap-6
+  },
+  { // Entry 248
+    0x1.002685dc0bfd9abdddd455b13ea887d9p0,
+    0x1.18de5ap-5
+  },
+  { // Entry 249
+    0x1.002685dc0bfd9abdddd455b13ea887d9p0,
+    -0x1.18de5ap-5
+  },
+  { // Entry 250
+    0x1.0056afe719b255038e559e394cf4b79ep0,
+    0x1.a54d88p-5
+  },
+  { // Entry 251
+    0x1.0056afe719b255038e559e394cf4b79ep0,
+    -0x1.a54d88p-5
+  },
+  { // Entry 252
+    0x1.009a2308369a4cbf9683178ebb9d9c79p0,
+    0x1.18de5ap-4
+  },
+  { // Entry 253
+    0x1.009a2308369a4cbf9683178ebb9d9c79p0,
+    -0x1.18de5ap-4
+  },
+  { // Entry 254
+    0x1.00f0e45304846d3a9b651810b40ff363p0,
+    0x1.5f15f0p-4
+  },
+  { // Entry 255
+    0x1.00f0e45304846d3a9b651810b40ff363p0,
+    -0x1.5f15f0p-4
+  },
+  { // Entry 256
+    0x1.015afa4e6af7cc67145b966628015d41p0,
+    0x1.a54d86p-4
+  },
+  { // Entry 257
+    0x1.015afa4e6af7cc67145b966628015d41p0,
+    -0x1.a54d86p-4
+  },
+  { // Entry 258
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    0x1.eb851cp-4
+  },
+  { // Entry 259
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    -0x1.eb851cp-4
+  },
+  { // Entry 260
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    0x1.eb851ep-4
+  },
+  { // Entry 261
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    -0x1.eb851ep-4
+  },
+  { // Entry 262
+    0x1.02068cf11e341bea4584e926b9b87a5cp0,
+    0x1.01767ep-3
+  },
+  { // Entry 263
+    0x1.02068cf11e341bea4584e926b9b87a5cp0,
+    -0x1.01767ep-3
+  },
+  { // Entry 264
+    0x1.0236d50ea15f24974c4f2f784695f8f3p0,
+    0x1.0d2a6cp-3
+  },
+  { // Entry 265
+    0x1.0236d50ea15f24974c4f2f784695f8f3p0,
+    -0x1.0d2a6cp-3
+  },
+  { // Entry 266
+    0x1.026945bd2fc314aa539bd2b0a1344e6ap0,
+    0x1.18de5ap-3
+  },
+  { // Entry 267
+    0x1.026945bd2fc314aa539bd2b0a1344e6ap0,
+    -0x1.18de5ap-3
+  },
+  { // Entry 268
+    0x1.029ddf68b9ecab97a543140ab7bc196ap0,
+    0x1.249248p-3
+  },
+  { // Entry 269
+    0x1.029ddf68b9ecab97a543140ab7bc196ap0,
+    -0x1.249248p-3
+  },
+  { // Entry 270
+    0x1.02d4a281cfc743376f69f8b9b0167a5ep0,
+    0x1.304636p-3
+  },
+  { // Entry 271
+    0x1.02d4a281cfc743376f69f8b9b0167a5ep0,
+    -0x1.304636p-3
+  },
+  { // Entry 272
+    0x1.030d8f7da18db0864f478300e780a951p0,
+    0x1.3bfa24p-3
+  },
+  { // Entry 273
+    0x1.030d8f7da18db0864f478300e780a951p0,
+    -0x1.3bfa24p-3
+  },
+  { // Entry 274
+    0x1.0348a6d600c50ac4ab832e474121e8b1p0,
+    0x1.47ae12p-3
+  },
+  { // Entry 275
+    0x1.0348a6d600c50ac4ab832e474121e8b1p0,
+    -0x1.47ae12p-3
+  },
+  { // Entry 276
+    0x1.0348a6e049689d30b2d20b0135f3fee4p0,
+    0x1.47ae14p-3
+  },
+  { // Entry 277
+    0x1.0348a6e049689d30b2d20b0135f3fee4p0,
+    -0x1.47ae14p-3
+  },
+  { // Entry 278
+    0x1.0a19d6dfd42b9ebd573de2bdeff3362ep0,
+    0x1.1eb852p-2
+  },
+  { // Entry 279
+    0x1.0a19d6dfd42b9ebd573de2bdeff3362ep0,
+    -0x1.1eb852p-2
+  },
+  { // Entry 280
+    0x1.14c128bc2baac3f4f83f16b43fc69324p0,
+    0x1.99999ap-2
+  },
+  { // Entry 281
+    0x1.14c128bc2baac3f4f83f16b43fc69324p0,
+    -0x1.99999ap-2
+  },
+  { // Entry 282
+    0x1.2365ee3fd57c998640a3796967b6c022p0,
+    0x1.0a3d70p-1
+  },
+  { // Entry 283
+    0x1.2365ee3fd57c998640a3796967b6c022p0,
+    -0x1.0a3d70p-1
+  },
+  { // Entry 284
+    0x1.363e33f5565998f1b5221773f03eea8bp0,
+    0x1.47ae14p-1
+  },
+  { // Entry 285
+    0x1.363e33f5565998f1b5221773f03eea8bp0,
+    -0x1.47ae14p-1
+  },
+  { // Entry 286
+    0x1.4d8f8734eeb43c686239fc3930bfba17p0,
+    0x1.851eb8p-1
+  },
+  { // Entry 287
+    0x1.4d8f8734eeb43c686239fc3930bfba17p0,
+    -0x1.851eb8p-1
+  },
+  { // Entry 288
+    0x1.69aff7bc5d60108b348ed38b803eb445p0,
+    0x1.c28f5cp-1
+  },
+  { // Entry 289
+    0x1.69aff7bc5d60108b348ed38b803eb445p0,
+    -0x1.c28f5cp-1
+  },
+  { // Entry 290
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 291
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 292
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 293
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 294
+    0x1.96953e5f15bebb0924d95e56e73390d3p3,
+    0x1.9de826p1
+  },
+  { // Entry 295
+    0x1.96953e5f15bebb0924d95e56e73390d3p3,
+    -0x1.9de826p1
+  },
+  { // Entry 296
+    0x1.d9a541d64593911611959440ebb98fd2p6,
+    0x1.5de826p2
+  },
+  { // Entry 297
+    0x1.d9a541d64593911611959440ebb98fd2p6,
+    -0x1.5de826p2
+  },
+  { // Entry 298
+    0x1.144daf73b05567a8ab0aec06359687bap10,
+    0x1.ecdc38p2
+  },
+  { // Entry 299
+    0x1.144daf73b05567a8ab0aec06359687bap10,
+    -0x1.ecdc38p2
+  },
+  { // Entry 300
+    0x1.425f2a5819d974b4f9180a62110d48cbp13,
+    0x1.3de826p3
+  },
+  { // Entry 301
+    0x1.425f2a5819d974b4f9180a62110d48cbp13,
+    -0x1.3de826p3
+  },
+  { // Entry 302
+    0x1.781f001bd3e350656b057368a4313822p16,
+    0x1.856230p3
+  },
+  { // Entry 303
+    0x1.781f001bd3e350656b057368a4313822p16,
+    -0x1.856230p3
+  },
+  { // Entry 304
+    0x1.b6d506c59eb76d627415a6c9ee480b4fp19,
+    0x1.ccdc3ap3
+  },
+  { // Entry 305
+    0x1.b6d506c59eb76d627415a6c9ee480b4fp19,
+    -0x1.ccdc3ap3
+  },
+  { // Entry 306
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 307
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 308
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    0x1.62e42cp3
+  },
+  { // Entry 309
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    -0x1.62e42cp3
+  },
+  { // Entry 310
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    0x1.62e42ep3
+  },
+  { // Entry 311
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    -0x1.62e42ep3
+  },
+  { // Entry 312
+    0x1.00000083e30886362db194a7754d1c73p15,
+    0x1.62e430p3
+  },
+  { // Entry 313
+    0x1.00000083e30886362db194a7754d1c73p15,
+    -0x1.62e430p3
+  },
+  { // Entry 314
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    0x1.62e42cp2
+  },
+  { // Entry 315
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    -0x1.62e42cp2
+  },
+  { // Entry 316
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    0x1.62e42ep2
+  },
+  { // Entry 317
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    -0x1.62e42ep2
+  },
+  { // Entry 318
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    0x1.62e430p2
+  },
+  { // Entry 319
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    -0x1.62e430p2
+  },
+  { // Entry 320
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    0x1.62e42cp1
+  },
+  { // Entry 321
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    -0x1.62e42cp1
+  },
+  { // Entry 322
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    0x1.62e42ep1
+  },
+  { // Entry 323
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    -0x1.62e42ep1
+  },
+  { // Entry 324
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    0x1.62e430p1
+  },
+  { // Entry 325
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    -0x1.62e430p1
+  },
+  { // Entry 326
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    0x1.62e42cp0
+  },
+  { // Entry 327
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    -0x1.62e42cp0
+  },
+  { // Entry 328
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    0x1.62e42ep0
+  },
+  { // Entry 329
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    -0x1.62e42ep0
+  },
+  { // Entry 330
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    0x1.62e430p0
+  },
+  { // Entry 331
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    -0x1.62e430p0
+  },
+  { // Entry 332
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    0x1.62e42cp-1
+  },
+  { // Entry 333
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    -0x1.62e42cp-1
+  },
+  { // Entry 334
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 335
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    -0x1.62e42ep-1
+  },
+  { // Entry 336
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    0x1.62e430p-1
+  },
+  { // Entry 337
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    -0x1.62e430p-1
+  },
+  { // Entry 338
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    0x1.62e42cp-2
+  },
+  { // Entry 339
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    -0x1.62e42cp-2
+  },
+  { // Entry 340
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    0x1.62e42ep-2
+  },
+  { // Entry 341
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    -0x1.62e42ep-2
+  },
+  { // Entry 342
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    0x1.62e430p-2
+  },
+  { // Entry 343
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    -0x1.62e430p-2
+  },
+  { // Entry 344
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    0x1.62e42cp-3
+  },
+  { // Entry 345
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    -0x1.62e42cp-3
+  },
+  { // Entry 346
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    0x1.62e42ep-3
+  },
+  { // Entry 347
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    -0x1.62e42ep-3
+  },
+  { // Entry 348
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    0x1.62e430p-3
+  },
+  { // Entry 349
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    -0x1.62e430p-3
+  },
+  { // Entry 350
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    0x1.62e42cp-4
+  },
+  { // Entry 351
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    -0x1.62e42cp-4
+  },
+  { // Entry 352
+    0x1.00f625552927bf649d646b851be50016p0,
+    0x1.62e42ep-4
+  },
+  { // Entry 353
+    0x1.00f625552927bf649d646b851be50016p0,
+    -0x1.62e42ep-4
+  },
+  { // Entry 354
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    0x1.62e430p-4
+  },
+  { // Entry 355
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    -0x1.62e430p-4
+  },
+  { // Entry 356
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    0x1.62e42cp-5
+  },
+  { // Entry 357
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    -0x1.62e42cp-5
+  },
+  { // Entry 358
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    0x1.62e42ep-5
+  },
+  { // Entry 359
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    -0x1.62e42ep-5
+  },
+  { // Entry 360
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    0x1.62e430p-5
+  },
+  { // Entry 361
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    -0x1.62e430p-5
+  },
+  { // Entry 362
+    0x1.000f60060df0bdbdb94a9aa61dfeb8e8p0,
+    0x1.62e42cp-6
+  },
+  { // Entry 363
+    0x1.000f60060df0bdbdb94a9aa61dfeb8e8p0,
+    -0x1.62e42cp-6
+  },
+  { // Entry 364
+    0x1.000f60063a4e26b757e72d4936a13599p0,
+    0x1.62e42ep-6
+  },
+  { // Entry 365
+    0x1.000f60063a4e26b757e72d4936a13599p0,
+    -0x1.62e42ep-6
+  },
+  { // Entry 366
+    0x1.000f600666ab8ff0fa5bc17ae2cd6176p0,
+    0x1.62e430p-6
+  },
+  { // Entry 367
+    0x1.000f600666ab8ff0fa5bc17ae2cd6176p0,
+    -0x1.62e430p-6
+  },
+  { // Entry 368
+    0x1.00000105c611505e7f74a30e6d20e850p31,
+    -0x1.62e430p4
+  },
+  { // Entry 369
+    0x1.00000105c611505e7f74a30e6d20e850p31,
+    0x1.62e430p4
+  },
+  { // Entry 370
+    0x1.ffffc20b8fe12f121740ea8acb959525p30,
+    -0x1.62e42ep4
+  },
+  { // Entry 371
+    0x1.ffffc20b8fe12f121740ea8acb959525p30,
+    0x1.62e42ep4
+  },
+  { // Entry 372
+    0x1.ffff820b9b9fbc6f5ddabe5f5d55c831p30,
+    -0x1.62e42cp4
+  },
+  { // Entry 373
+    0x1.ffff820b9b9fbc6f5ddabe5f5d55c831p30,
+    0x1.62e42cp4
+  },
+  { // Entry 374
+    0x1.00000083e30886362db194a7754d1c73p15,
+    -0x1.62e430p3
+  },
+  { // Entry 375
+    0x1.00000083e30886362db194a7754d1c73p15,
+    0x1.62e430p3
+  },
+  { // Entry 376
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    -0x1.62e42ep3
+  },
+  { // Entry 377
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    0x1.62e42ep3
+  },
+  { // Entry 378
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    -0x1.62e42cp3
+  },
+  { // Entry 379
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    0x1.62e42cp3
+  },
+  { // Entry 380
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    -0x1.62e430p2
+  },
+  { // Entry 381
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    0x1.62e430p2
+  },
+  { // Entry 382
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    -0x1.62e42ep2
+  },
+  { // Entry 383
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    0x1.62e42ep2
+  },
+  { // Entry 384
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    -0x1.62e42cp2
+  },
+  { // Entry 385
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    0x1.62e42cp2
+  },
+  { // Entry 386
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    -0x1.62e430p1
+  },
+  { // Entry 387
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    0x1.62e430p1
+  },
+  { // Entry 388
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    -0x1.62e42ep1
+  },
+  { // Entry 389
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    0x1.62e42ep1
+  },
+  { // Entry 390
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    -0x1.62e42cp1
+  },
+  { // Entry 391
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    0x1.62e42cp1
+  },
+  { // Entry 392
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    -0x1.62e430p0
+  },
+  { // Entry 393
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    0x1.62e430p0
+  },
+  { // Entry 394
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    -0x1.62e42ep0
+  },
+  { // Entry 395
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    0x1.62e42ep0
+  },
+  { // Entry 396
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    -0x1.62e42cp0
+  },
+  { // Entry 397
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    0x1.62e42cp0
+  },
+  { // Entry 398
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    -0x1.62e430p-1
+  },
+  { // Entry 399
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    0x1.62e430p-1
+  },
+  { // Entry 400
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    -0x1.62e42ep-1
+  },
+  { // Entry 401
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 402
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    -0x1.62e42cp-1
+  },
+  { // Entry 403
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    0x1.62e42cp-1
+  },
+  { // Entry 404
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    -0x1.62e430p-2
+  },
+  { // Entry 405
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    0x1.62e430p-2
+  },
+  { // Entry 406
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    -0x1.62e42ep-2
+  },
+  { // Entry 407
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    0x1.62e42ep-2
+  },
+  { // Entry 408
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    -0x1.62e42cp-2
+  },
+  { // Entry 409
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    0x1.62e42cp-2
+  },
+  { // Entry 410
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    -0x1.62e430p-3
+  },
+  { // Entry 411
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    0x1.62e430p-3
+  },
+  { // Entry 412
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    -0x1.62e42ep-3
+  },
+  { // Entry 413
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    0x1.62e42ep-3
+  },
+  { // Entry 414
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    -0x1.62e42cp-3
+  },
+  { // Entry 415
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    0x1.62e42cp-3
+  },
+  { // Entry 416
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    -0x1.62e430p-4
+  },
+  { // Entry 417
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    0x1.62e430p-4
+  },
+  { // Entry 418
+    0x1.00f625552927bf649d646b851be50016p0,
+    -0x1.62e42ep-4
+  },
+  { // Entry 419
+    0x1.00f625552927bf649d646b851be50016p0,
+    0x1.62e42ep-4
+  },
+  { // Entry 420
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    -0x1.62e42cp-4
+  },
+  { // Entry 421
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    0x1.62e42cp-4
+  },
+  { // Entry 422
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    -0x1.62e430p-5
+  },
+  { // Entry 423
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    0x1.62e430p-5
+  },
+  { // Entry 424
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    -0x1.62e42ep-5
+  },
+  { // Entry 425
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    0x1.62e42ep-5
+  },
+  { // Entry 426
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    -0x1.62e42cp-5
+  },
+  { // Entry 427
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    0x1.62e42cp-5
+  },
+  { // Entry 428
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 429
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 430
+    0x1.p0,
+    0.0
+  },
+  { // Entry 431
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 432
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 433
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    0x1.eb851cp-4
+  },
+  { // Entry 434
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    -0x1.eb851cp-4
+  },
+  { // Entry 435
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    0x1.eb851ep-4
+  },
+  { // Entry 436
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    -0x1.eb851ep-4
+  },
+  { // Entry 437
+    0x1.01d86cfd542cd92da6c44a42f7099d65p0,
+    0x1.eb8520p-4
+  },
+  { // Entry 438
+    0x1.01d86cfd542cd92da6c44a42f7099d65p0,
+    -0x1.eb8520p-4
+  },
+  { // Entry 439
+    0x1.20ac181ffb4ceac216e8b489c48dd3dfp0,
+    0x1.fffffep-2
+  },
+  { // Entry 440
+    0x1.20ac181ffb4ceac216e8b489c48dd3dfp0,
+    -0x1.fffffep-2
+  },
+  { // Entry 441
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.p-1
+  },
+  { // Entry 442
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.p-1
+  },
+  { // Entry 443
+    0x1.20ac18e8150e15cd6b3833b87109804fp0,
+    0x1.000002p-1
+  },
+  { // Entry 444
+    0x1.20ac18e8150e15cd6b3833b87109804fp0,
+    -0x1.000002p-1
+  },
+  { // Entry 445
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    0x1.fffffep-1
+  },
+  { // Entry 446
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    -0x1.fffffep-1
+  },
+  { // Entry 447
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 448
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 449
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    0x1.000002p0
+  },
+  { // Entry 450
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    -0x1.000002p0
+  },
+  { // Entry 451
+    0x1.ab5aa630eb432545b54cdaf7f455210cp30,
+    0x1.5ffffep4
+  },
+  { // Entry 452
+    0x1.ab5aa630eb432545b54cdaf7f455210cp30,
+    -0x1.5ffffep4
+  },
+  { // Entry 453
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    0x1.60p4
+  },
+  { // Entry 454
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    -0x1.60p4
+  },
+  { // Entry 455
+    0x1.ab5b1107a22a3664ed2273254e849a81p30,
+    0x1.600002p4
+  },
+  { // Entry 456
+    0x1.ab5b1107a22a3664ed2273254e849a81p30,
+    -0x1.600002p4
+  },
+  { // Entry 457
+    0x1.226aceedc3b97c2a7eac95e7562be263p32,
+    0x1.6ffffep4
+  },
+  { // Entry 458
+    0x1.226aceedc3b97c2a7eac95e7562be263p32,
+    -0x1.6ffffep4
+  },
+  { // Entry 459
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    0x1.70p4
+  },
+  { // Entry 460
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    -0x1.70p4
+  },
+  { // Entry 461
+    0x1.226b178880884451e86af2dfaf4ed9e0p32,
+    0x1.700002p4
+  },
+  { // Entry 462
+    0x1.226b178880884451e86af2dfaf4ed9e0p32,
+    -0x1.700002p4
+  },
+  { // Entry 463
+    0x1.ffff8188b8b99accb59239a999795cedp22,
+    0x1.0a2b20p4
+  },
+  { // Entry 464
+    0x1.ffff8188b8b99accb59239a999795cedp22,
+    -0x1.0a2b20p4
+  },
+  { // Entry 465
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 466
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 467
+    0x1.000000c4548de32ddb90a7e53a66ba0ap23,
+    0x1.0a2b24p4
+  },
+  { // Entry 468
+    0x1.000000c4548de32ddb90a7e53a66ba0ap23,
+    -0x1.0a2b24p4
+  },
+  { // Entry 469
+    0x1.ffffc2c458b36e7e18cb1f214e7b10ffp10,
+    0x1.0a2b20p3
+  },
+  { // Entry 470
+    0x1.ffffc2c458b36e7e18cb1f214e7b10ffp10,
+    -0x1.0a2b20p3
+  },
+  { // Entry 471
+    0x1.ffffe2c4559fb3e81fbe2bbb12e12ae1p10,
+    0x1.0a2b22p3
+  },
+  { // Entry 472
+    0x1.ffffe2c4559fb3e81fbe2bbb12e12ae1p10,
+    -0x1.0a2b22p3
+  },
+  { // Entry 473
+    0x1.000001622a45fc9a75838159b3d10509p11,
+    0x1.0a2b24p3
+  },
+  { // Entry 474
+    0x1.000001622a45fc9a75838159b3d10509p11,
+    -0x1.0a2b24p3
+  },
+  { // Entry 475
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 476
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 477
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 478
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 479
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 480
+    HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 481
+    HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 482
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 483
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 484
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 485
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 486
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 487
+    0x1.0000000000000007fffff0000008000ap0,
+    0x1.fffffep-31
+  },
+  { // Entry 488
+    0x1.0000000000000007fffff0000008000ap0,
+    -0x1.fffffep-31
+  },
+  { // Entry 489
+    0x1.0000000000000008000000000000000ap0,
+    0x1.p-30
+  },
+  { // Entry 490
+    0x1.0000000000000008000000000000000ap0,
+    -0x1.p-30
+  },
+  { // Entry 491
+    0x1.0000000000000008000020000020000ap0,
+    0x1.000002p-30
+  },
+  { // Entry 492
+    0x1.0000000000000008000020000020000ap0,
+    -0x1.000002p-30
+  },
+  { // Entry 493
+    0x1.00000001fffffc00aaaca80016c56b8ep0,
+    0x1.fffffep-16
+  },
+  { // Entry 494
+    0x1.00000001fffffc00aaaca80016c56b8ep0,
+    -0x1.fffffep-16
+  },
+  { // Entry 495
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    0x1.p-15
+  },
+  { // Entry 496
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    -0x1.p-15
+  },
+  { // Entry 497
+    0x1.0000000200000800aab2b00016d16d27p0,
+    0x1.000002p-15
+  },
+  { // Entry 498
+    0x1.0000000200000800aab2b00016d16d27p0,
+    -0x1.000002p-15
+  },
+  { // Entry 499
+    0x1.0008000a9ab0306483e877d147f6d18ap0,
+    0x1.fffffep-7
+  },
+  { // Entry 500
+    0x1.0008000a9ab0306483e877d147f6d18ap0,
+    -0x1.fffffep-7
+  },
+  { // Entry 501
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    0x1.p-6
+  },
+  { // Entry 502
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    -0x1.p-6
+  },
+  { // Entry 503
+    0x1.0008000acab0b07ceb0f063ba7bbfa54p0,
+    0x1.000002p-6
+  },
+  { // Entry 504
+    0x1.0008000acab0b07ceb0f063ba7bbfa54p0,
+    -0x1.000002p-6
+  },
+  { // Entry 505
+    0x1.002000aa6c14187902aad2ffba74cf2cp0,
+    0x1.fffffep-6
+  },
+  { // Entry 506
+    0x1.002000aa6c14187902aad2ffba74cf2cp0,
+    -0x1.fffffep-6
+  },
+  { // Entry 507
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    0x1.p-5
+  },
+  { // Entry 508
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    -0x1.p-5
+  },
+  { // Entry 509
+    0x1.002000ab2c1c18f2a86baf44b183af72p0,
+    0x1.000002p-5
+  },
+  { // Entry 510
+    0x1.002000ab2c1c18f2a86baf44b183af72p0,
+    -0x1.000002p-5
+  },
+  { // Entry 511
+    0x1.00800aaa05874ed7b7cf8f4b5e6fdb38p0,
+    0x1.fffffep-5
+  },
+  { // Entry 512
+    0x1.00800aaa05874ed7b7cf8f4b5e6fdb38p0,
+    -0x1.fffffep-5
+  },
+  { // Entry 513
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    0x1.p-4
+  },
+  { // Entry 514
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    -0x1.p-4
+  },
+  { // Entry 515
+    0x1.00800aad060756bf0548f2962af04df6p0,
+    0x1.000002p-4
+  },
+  { // Entry 516
+    0x1.00800aad060756bf0548f2962af04df6p0,
+    -0x1.000002p-4
+  },
+  { // Entry 517
+    0x1.0200aabd6b0bbcb062a61f361828f822p0,
+    0x1.fffffep-4
+  },
+  { // Entry 518
+    0x1.0200aabd6b0bbcb062a61f361828f822p0,
+    -0x1.fffffep-4
+  },
+  { // Entry 519
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    0x1.p-3
+  },
+  { // Entry 520
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    -0x1.p-3
+  },
+  { // Entry 521
+    0x1.0200aac9730d5c7d04db61f9275b83fap0,
+    0x1.000002p-3
+  },
+  { // Entry 522
+    0x1.0200aac9730d5c7d04db61f9275b83fap0,
+    -0x1.000002p-3
+  },
+  { // Entry 523
+    0x1.080ab04c7b478d4cb3110d491046c9c9p0,
+    0x1.fffffep-3
+  },
+  { // Entry 524
+    0x1.080ab04c7b478d4cb3110d491046c9c9p0,
+    -0x1.fffffep-3
+  },
+  { // Entry 525
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    0x1.p-2
+  },
+  { // Entry 526
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    -0x1.p-2
+  },
+  { // Entry 527
+    0x1.080ab07cfbae337f36a0f41414d9d0c8p0,
+    0x1.000002p-2
+  },
+  { // Entry 528
+    0x1.080ab07cfbae337f36a0f41414d9d0c8p0,
+    -0x1.000002p-2
+  },
+  { // Entry 529
+    0x1.e18f9d3eb3b30ed6335c902418fb7234p1,
+    0x1.fffffep0
+  },
+  { // Entry 530
+    0x1.e18f9d3eb3b30ed6335c902418fb7234p1,
+    -0x1.fffffep0
+  },
+  { // Entry 531
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    0x1.p1
+  },
+  { // Entry 532
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    -0x1.p1
+  },
+  { // Entry 533
+    0x1.e18fa8202183bcc8aa243133423f76ffp1,
+    0x1.000002p1
+  },
+  { // Entry 534
+    0x1.e18fa8202183bcc8aa243133423f76ffp1,
+    -0x1.000002p1
+  },
+  { // Entry 535
+    0x1.b4ee7ebb55f4cbc854b082e732092507p4,
+    0x1.fffffep1
+  },
+  { // Entry 536
+    0x1.b4ee7ebb55f4cbc854b082e732092507p4,
+    -0x1.fffffep1
+  },
+  { // Entry 537
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    0x1.p2
+  },
+  { // Entry 538
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    -0x1.p2
+  },
+  { // Entry 539
+    0x1.b4ee93330020564e2251f0a10e247060p4,
+    0x1.000002p2
+  },
+  { // Entry 540
+    0x1.b4ee93330020564e2251f0a10e247060p4,
+    -0x1.000002p2
+  },
+  { // Entry 541
+    0x1.749e9eeeffed4d8079070cc441b07e51p10,
+    0x1.fffffep2
+  },
+  { // Entry 542
+    0x1.749e9eeeffed4d8079070cc441b07e51p10,
+    -0x1.fffffep2
+  },
+  { // Entry 543
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    0x1.p3
+  },
+  { // Entry 544
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    -0x1.p3
+  },
+  { // Entry 545
+    0x1.749ec1dddff2ff3467178750bda1362bp10,
+    0x1.000002p3
+  },
+  { // Entry 546
+    0x1.749ec1dddff2ff3467178750bda1362bp10,
+    -0x1.000002p3
+  },
+  { // Entry 547
+    0x1.0f2eac1794bcba9969899739333d575dp22,
+    0x1.fffffep3
+  },
+  { // Entry 548
+    0x1.0f2eac1794bcba9969899739333d575dp22,
+    -0x1.fffffep3
+  },
+  { // Entry 549
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    0x1.p4
+  },
+  { // Entry 550
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    -0x1.p4
+  },
+  { // Entry 551
+    0x1.0f2edef059c578ce114742bef842a70bp22,
+    0x1.000002p4
+  },
+  { // Entry 552
+    0x1.0f2edef059c578ce114742bef842a70bp22,
+    -0x1.000002p4
+  },
+  { // Entry 553
+    0x1.1f43d8dc3908b8ed87a5abe34855b461p45,
+    0x1.fffffep4
+  },
+  { // Entry 554
+    0x1.1f43d8dc3908b8ed87a5abe34855b461p45,
+    -0x1.fffffep4
+  },
+  { // Entry 555
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    0x1.p5
+  },
+  { // Entry 556
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    -0x1.p5
+  },
+  { // Entry 557
+    0x1.1f444495be8e1616a1e5e396b9caac6bp45,
+    0x1.000002p5
+  },
+  { // Entry 558
+    0x1.1f444495be8e1616a1e5e396b9caac6bp45,
+    -0x1.000002p5
+  },
+  { // Entry 559
+    0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    0x1.fffffep5
+  },
+  { // Entry 560
+    0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    -0x1.fffffep5
+  },
+  { // Entry 561
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.p6
+  },
+  { // Entry 562
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.p6
+  },
+  { // Entry 563
+    0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    0x1.000002p6
+  },
+  { // Entry 564
+    0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    -0x1.000002p6
+  },
+  { // Entry 565
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 566
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 567
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 568
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 569
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 570
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 571
+    HUGE_VALF,
+    0x1.fffffcp127
+  },
+  { // Entry 572
+    0x1.72f14a1ced856a7e65c1607d36ef64b3p3,
+    0x1.921fb6p1
+  },
+  { // Entry 573
+    0x1.412cc380da7cb6987dff68ad77932f5dp1,
+    0x1.921fb6p0
+  },
+  { // Entry 574
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    0x1.000002p0
+  },
+  { // Entry 575
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 576
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    0x1.fffffep-1
+  },
+  { // Entry 577
+    0x1.5319951fdd08d95643a6762c2beffae2p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 578
+    0x1.p0,
+    0x1.000002p-126
+  },
+  { // Entry 579
+    0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 580
+    0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 581
+    0x1.p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 582
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 583
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 584
+    0x1.p0,
+    0.0f
+  },
+  { // Entry 585
+    0x1.p0,
+    -0.0f
+  },
+  { // Entry 586
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 587
+    0x1.p0,
+    -0x1.p-148
+  },
+  { // Entry 588
+    0x1.p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 589
+    0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 590
+    0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 591
+    0x1.p0,
+    -0x1.000002p-126
+  },
+  { // Entry 592
+    0x1.5319951fdd08d95643a6762c2beffae2p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 593
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    -0x1.fffffep-1
+  },
+  { // Entry 594
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 595
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    -0x1.000002p0
+  },
+  { // Entry 596
+    0x1.412cc380da7cb6987dff68ad77932f5dp1,
+    -0x1.921fb6p0
+  },
+  { // Entry 597
+    0x1.72f14a1ced856a7e65c1607d36ef64b3p3,
+    -0x1.921fb6p1
+  },
+  { // Entry 598
+    HUGE_VALF,
+    -0x1.fffffcp127
+  },
+  { // Entry 599
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 600
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 601
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 602
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 603
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 604
+    HUGE_VALF,
+    -0x1.65a9fap6
+  }
+};
diff --git a/tests/math_data/exp2_intel_data.h b/tests/math_data/exp2_intel_data.h
new file mode 100644
index 0000000..51f2690
--- /dev/null
+++ b/tests/math_data/exp2_intel_data.h
@@ -0,0 +1,1342 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_exp2_intel_data[] = {
+  { // Entry 0
+    0x1.7550685a42c638000000000000845a47p0,
+    0x1.16a76ec41b516p-1
+  },
+  { // Entry 1
+    0x1.89d948a94fe16fffffffffffff2cd3bdp0,
+    0x1.3e34fa6ab969ep-1
+  },
+  { // Entry 2
+    0x1.90661da12d5288000000000000b1b5f1p0,
+    0x1.4a63ff1d53f53p-1
+  },
+  { // Entry 3
+    0x1.cd6b37edeceaf7ffffffffffff7681d4p0,
+    0x1.b32a6c92d1185p-1
+  },
+  { // Entry 4
+    0x1.1ba39ff28e3e9fffffffffffffc69c44p1,
+    0x1.25dd9eedac79ap0
+  },
+  { // Entry 5
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 6
+    0x1.fffffffe9d1bd010d75fee7817e4dfc0p-1,
+    -0x1.0000000000001p-32
+  },
+  { // Entry 7
+    0x1.ffffffffffa746f404171ff3199aeed7p-1025,
+    -0x1.0000000000001p10
+  },
+  { // Entry 8
+    0x1.fe9d96b2a23d882193f7b993586f2602p-1,
+    -0x1.000000000006ap-8
+  },
+  { // Entry 9
+    0x1.ffffffff8a2a3c157c3b7f18ebab642dp-1025,
+    -0x1.0000000000154p10
+  },
+  { // Entry 10
+    0x1.ea4afa2a47b9bffeb53a92123e2892d5p-1,
+    -0x1.000000001p-4
+  },
+  { // Entry 11
+    0x1.6a09d3c7fa7857ffff5d816eb683ef4bp-1,
+    -0x1.000025fffffafp-1
+  },
+  { // Entry 12
+    0x1.fe9d966c1fb8a82de91ee9a29410d9a9p-1,
+    -0x1.0000330p-8
+  },
+  { // Entry 13
+    0x1.fa764417ff7da7fd252560ea61130296p-1,
+    -0x1.011p-6
+  },
+  { // Entry 14
+    0x1.e3ef96693f8579bbc20fc1cbf9decfc3p-1031,
+    -0x1.01853479d6414p10
+  },
+  { // Entry 15
+    0x1.171354a3dac90fb1c06ced94bc098564p-1058,
+    -0x1.0878080p10
+  },
+  { // Entry 16
+    0x1.00000000018f40b5ed994a2726414d06p-1074,
+    -0x1.0c7fffffffff7p10
+  },
+  { // Entry 17
+    0x1.00000000002c5c85fdf477b662b26945p-1074,
+    -0x1.0c7ffffffffffp10
+  },
+  { // Entry 18
+    0.0,
+    -0x1.0c80000000001p10
+  },
+  { // Entry 19
+    0.0,
+    -0x1.0c80400000001p10
+  },
+  { // Entry 20
+    0.0,
+    -0x1.0cbffffffffffp10
+  },
+  { // Entry 21
+    0.0,
+    -0x1.0ccp10
+  },
+  { // Entry 22
+    0x1.5fa21f48b380a7ff88e685255cd2b0b9p-68,
+    -0x1.0e2b14f637093p6
+  },
+  { // Entry 23
+    0x1.fffff3deb381580911bb0a338d5013d3p-1,
+    -0x1.180p-21
+  },
+  { // Entry 24
+    0x1.f220c9bfc3e5e802d3d2299f1c0cb896p-1,
+    -0x1.44ap-5
+  },
+  { // Entry 25
+    0x1.d2c416640bb58800000302d88dd4794dp-6,
+    -0x1.488a5a88d8627p2
+  },
+  { // Entry 26
+    0x1.7477fe65ed9eb801fb78e9f8195947dep-6,
+    -0x1.5d60a85cec862p2
+  },
+  { // Entry 27
+    0x1.fffffffffe01d7fb1785c9ab108f85f0p-1,
+    -0x1.7p-40
+  },
+  { // Entry 28
+    0x1.f710064ffbdf6800ff354e934260dd45p-1,
+    -0x1.a04p-6
+  },
+  { // Entry 29
+    0x1.81db2699d647e80119a5ff6578562368p-1,
+    -0x1.a1ep-2
+  },
+  { // Entry 30
+    0x1.18a82c07fc46d8033bd0fd06418f1d83p-1,
+    -0x1.bc137c829fe3fp-1
+  },
+  { // Entry 31
+    0x1.ffffd71ab8e1c7ffc23bb97e6431b6fep-1,
+    -0x1.d7ffep-20
+  },
+  { // Entry 32
+    0x1.b23dd2fbd9253801d5963064eb734a2fp-1,
+    -0x1.e6b30cdff66eap-3
+  },
+  { // Entry 33
+    0x1.9afdae5fa109f7fffb555a32c170d8b1p-32,
+    -0x1.f512959c9fef8p4
+  },
+  { // Entry 34
+    0x1.6ae5f40c2d268001595637d720fdaa90p-1,
+    -0x1.fc7f1fc7f1fc8p-2
+  },
+  { // Entry 35
+    0x1.aed49b5eb5803001fcd049a3732b31f0p-1,
+    -0x1.fdfffffffffffp-3
+  },
+  { // Entry 36
+    0x1.0000000d6a752800a91630539c6e7b0fp-1022,
+    -0x1.fefffffff6529p9
+  },
+  { // Entry 37
+    0x1.0000000c0790f7ff6249d8418e1b82c0p-1022,
+    -0x1.fefffffff7529p9
+  },
+  { // Entry 38
+    0x1.5ab07dd4854a1800e36cd5ae47a685bep-256,
+    -0x1.ff1ffffffffffp7
+  },
+  { // Entry 39
+    0x1.6a0bdc4db4d7b1f4e35e43dfc85817a7p-1,
+    -0x1.fff7fffffffffp-2
+  },
+  { // Entry 40
+    0x1.ffffffffffffffffffffffffe9d20bc1p-1,
+    -0x1.fff8e61eadd48p-101
+  },
+  { // Entry 41
+    0x1.ffd3a5705a0a3800003de8f068ba8fddp-1,
+    -0x1.ffff87bffffffp-12
+  },
+  { // Entry 42
+    0x1.fffff4e8de9f48000386a775899517eap-1,
+    -0x1.ffffffff07fffp-22
+  },
+  { // Entry 43
+    0x1.ffffd3a37bee1800966e6c9e9bb48496p-1,
+    -0x1.ffffffff3ffffp-20
+  },
+  { // Entry 44
+    0x1.0000000b561edfff7762203e6d954ab4p-1024,
+    -0x1.fffffffff7d29p9
+  },
+  { // Entry 45
+    0x1.00000004da8277ffff5d73afe24f21c3p-512,
+    -0x1.fffffffff8ff7p8
+  },
+  { // Entry 46
+    0x1.000000003851761b6d88f829becd3315p-1024,
+    -0x1.ffffffffffd76p9
+  },
+  { // Entry 47
+    0x1.000000001e533f989be7040824423450p-1024,
+    -0x1.ffffffffffea2p9
+  },
+  { // Entry 48
+    0x1.000000001111998e372040e1786d816fp-1024,
+    -0x1.fffffffffff3bp9
+  },
+  { // Entry 49
+    0x1.0000000004550915cce8b2fc4d47a539p-1024,
+    -0x1.fffffffffffcep9
+  },
+  { // Entry 50
+    0x1.0000000001fe2804e87d30cf8acc59c7p-1024,
+    -0x1.fffffffffffe9p9
+  },
+  { // Entry 51
+    0x1.0000000001205966f2b5938a5a957ce4p-1024,
+    -0x1.ffffffffffff3p9
+  },
+  { // Entry 52
+    0x1.fffffffffe9d1bd0105cdc21cead428cp-1,
+    -0x1.ffffffffffffep-41
+  },
+  { // Entry 53
+    0x1.ffffffffffa746f404171ff8a52bae95p-1,
+    -0x1.ffffffffffffep-43
+  },
+  { // Entry 54
+    0x1.0000000000162e42fefa3ae53369388cp-1024,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 55
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 56
+    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 57
+    0x1.00000000b17217f80f4f00c1ff23da21p0,
+    0x1.0000000000001p-32
+  },
+  { // Entry 58
+    0x1.00000000b17217f80f4f434cc820f6eep0,
+    0x1.0000000000007p-32
+  },
+  { // Entry 59
+    0x1.02c9a3e7780fe800c728e7d486fcf31cp0,
+    0x1.0000000003838p-6
+  },
+  { // Entry 60
+    0x1.6a09e66cc184b000004ee13300eefeedp0,
+    0x1.00000009cd189p-1
+  },
+  { // Entry 61
+    0x1.00b1afde7b1cb801287776b699278174p0,
+    0x1.000051bcd60e7p-8
+  },
+  { // Entry 62
+    0x1.0058c89a0da927ffd4f54c7681eb068dp0,
+    0x1.00007ffffffaep-9
+  },
+  { // Entry 63
+    0x1.059b67dbb73747ffc7559f37ef913157p0,
+    0x1.000ffffc0p-5
+  },
+  { // Entry 64
+    0x1.6b14ea048ba6b4a8a77fd275a20dcb27p0,
+    0x1.022p-1
+  },
+  { // Entry 65
+    0x1.002d711c9fe27ffffff45a9e519be99fp0,
+    0x1.0624de0b877a9p-10
+  },
+  { // Entry 66
+    0x1.002d711dd65f77fffff9a30e18baff60p0,
+    0x1.0624e50a0bee1p-10
+  },
+  { // Entry 67
+    0x1.002d711f4c5b7800000671d15bb60667p0,
+    0x1.0624ed76bb986p-10
+  },
+  { // Entry 68
+    0x1.1a7c0713c14c2fffff5e7085d7140701p4,
+    0x1.0916fbd16a4a4p2
+  },
+  { // Entry 69
+    0x1.0005f0eeca476ff5746e77918f305622p0,
+    0x1.1244912449101p-13
+  },
+  { // Entry 70
+    0x1.7550685a42c638000000000000845a47p0,
+    0x1.16a76ec41b516p-1
+  },
+  { // Entry 71
+    0x1.76e219f44e8077fffbf691327e18a6a6p0,
+    0x1.19c09494b839ep-1
+  },
+  { // Entry 72
+    0x1.3738d72e851d08007f94aec04e720143p0,
+    0x1.2090482412080p-2
+  },
+  { // Entry 73
+    0x1.5ebcb0c3a5e8cfffff403cfc89af025dp2,
+    0x1.3a24bc9f747a4p1
+  },
+  { // Entry 74
+    0x1.eff948ab8687f801d8c0b52d4fd1abc4p4,
+    0x1.3d104d551d81cp2
+  },
+  { // Entry 75
+    0x1.f662aa67062f68312afcbb64ee7a0cacp19,
+    0x1.3f8ffa3f6c716p4
+  },
+  { // Entry 76
+    0x1.3dc642457d0857ff16fb3b9bc0c86814p1,
+    0x1.4fd6031ce2f59p0
+  },
+  { // Entry 77
+    0x1.0000000075571ffffe9287b8913490cap0,
+    0x1.529297e4d4730p-33
+  },
+  { // Entry 78
+    0x1.428a2f98d728980287cd19f22ba23342p0,
+    0x1.555555555554fp-2
+  },
+  { // Entry 79
+    0x1.0792c37435e5b801a9bae4219f11a6a9p0,
+    0x1.588f0a4eac13ep-5
+  },
+  { // Entry 80
+    0x1.e0eaa5e12b62b7feff0ae982bc9b0e20p2,
+    0x1.746f2dac4c4aep1
+  },
+  { // Entry 81
+    0x1.e8f597a375b908310b9fd1892b940fddp2,
+    0x1.777f3eb118644p1
+  },
+  { // Entry 82
+    0x1.e212d1cd92af580000065ae4d335fcd5p5,
+    0x1.7a70623a65055p2
+  },
+  { // Entry 83
+    0x1.6e176769832437ff0078b13791381962p1,
+    0x1.841c84bf02c93p0
+  },
+  { // Entry 84
+    0x1.0000000010e578000152b56232aab68ep0,
+    0x1.86055129c133fp-36
+  },
+  { // Entry 85
+    0x1.1f98e30b070717f047944e564fb68949p6,
+    0x1.8abef85ac27cap2
+  },
+  { // Entry 86
+    0x1.29f209f62cd1bfffffb442fc666ab002p6,
+    0x1.8e0287eb30572p2
+  },
+  { // Entry 87
+    0x1.2e6eb60fef9e9801a703d7b8b727760dp50,
+    0x1.91ec7b1ec7c3dp5
+  },
+  { // Entry 88
+    0x1.125fbee3a8f4b000006b01ac6c39fae3p0,
+    0x1.999999b6966b1p-4
+  },
+  { // Entry 89
+    0x1.125fbef60d23f7fffff990af4ad356dep0,
+    0x1.99999b42b010ep-4
+  },
+  { // Entry 90
+    0x1.2df89d68ecd817feffbc8a02489a2c31p3,
+    0x1.9e7f87cd813d0p1
+  },
+  { // Entry 91
+    0x1.7b0837a01c4bf7fffb4b24ca92057ec8p844,
+    0x1.a64878765d9c6p9
+  },
+  { // Entry 92
+    0x1.279417bd1ee58000d657c88e959aa30ap0,
+    0x1.a8cp-3
+  },
+  { // Entry 93
+    0x1.24e4cfa950d85801e4e97cf588eae855p858,
+    0x1.ad18dca75151cp9
+  },
+  { // Entry 94
+    0x1.c9d7d9b687fd58033eb56233acd2e743p858,
+    0x1.ad6b5ad6b5ad6p9
+  },
+  { // Entry 95
+    0x1.099ad18ba452580179e84b9f367c24fcp0,
+    0x1.b34cc4566d0b8p-5
+  },
+  { // Entry 96
+    0x1.75db048626cc9801fdd8328e5e7c2ed3p55,
+    0x1.bc5ee5fb5abdfp5
+  },
+  { // Entry 97
+    0x1.04eb9df9467ea8006ec2ae40fe4aa9a2p0,
+    0x1.c20p-6
+  },
+  { // Entry 98
+    0x1.7336a662f7a3080000321c761912bb4dp3,
+    0x1.c49f19020be99p1
+  },
+  { // Entry 99
+    0x1.00051180218ca7fffffa98a0aca1602bp0,
+    0x1.d3f4cfa7e9e54p-14
+  },
+  { // Entry 100
+    0x1.0000146bb81ea0003b62e3d6d908a708p0,
+    0x1.d76p-20
+  },
+  { // Entry 101
+    0x1.e7ede8155f4148013c4232abc7194d4dp0,
+    0x1.dc6e371b8dcp-1
+  },
+  { // Entry 102
+    0x1.e96b5624c8f3e80004759e1237e298dfp1,
+    0x1.ef57627bcd18dp0
+  },
+  { // Entry 103
+    0x1.661bd0e767ee37ffff6f19dcbf13f733p0,
+    0x1.efe02bcccc3e0p-2
+  },
+  { // Entry 104
+    0x1.0b216e27ad0157ffb7b07aee744bc64bp0,
+    0x1.f70p-5
+  },
+  { // Entry 105
+    0x1.fbda9b237a1437feffee12944ccc2abep1,
+    0x1.fcff3fcff3fccp0
+  },
+  { // Entry 106
+    0x1.f0f5d9e1ab4cc825f655007e8ce8352fp7,
+    0x1.fd3f46397c92cp2
+  },
+  { // Entry 107
+    0x1.fc52e836980af7fffb69887832df36bep1,
+    0x1.fd56b236e47b0p0
+  },
+  { // Entry 108
+    0x1.fe974a46f07b082d32ce3627adbe734bp1,
+    0x1.fefb71b3e5192p0
+  },
+  { // Entry 109
+    0x1.30558126879a682ff3f16fbfef12a959p0,
+    0x1.fefffffffffffp-3
+  },
+  { // Entry 110
+    0x1.ea4afa2a3e59980143381c0d66f06241p511,
+    0x1.ffeffffffff7fp8
+  },
+  { // Entry 111
+    0x1.ffd9308364f08f6f2617da7d0b994aeep1023,
+    0x1.fffff1fffffffp9
+  },
+  { // Entry 112
+    0x1.ffffffffaa55e7ffffaa8e6b5f871352p0,
+    0x1.ffffffff84699p-1
+  },
+  { // Entry 113
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 114
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 115
+    0x1.7b29358d41a6466f059badebc0f3ef2ap-1,
+    -0x1.bbbbbbbbbbbbcp-2
+  },
+  { // Entry 116
+    0x1.8d17d2b770067dd0b560997d709462f2p-1,
+    -0x1.7777777777778p-2
+  },
+  { // Entry 117
+    0x1.9fdf8bcce533d3850499cd91b4fe1b45p-1,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 118
+    0x1.b38aa5682153ea10ec6aaf03b1e19a17p-1,
+    -0x1.ddddddddddde0p-3
+  },
+  { // Entry 119
+    0x1.c823e074ec128dd3e5a22665f53de430p-1,
+    -0x1.5555555555558p-3
+  },
+  { // Entry 120
+    0x1.ddb680117ab119ddf7de23abf70a974ap-1,
+    -0x1.999999999999fp-4
+  },
+  { // Entry 121
+    0x1.f44e4fb6c55d6f8461f0c24a6561e8cfp-1,
+    -0x1.111111111111cp-5
+  },
+  { // Entry 122
+    0x1.05fbd4d5b4d597517f2f14990c7c1d74p0,
+    0x1.1111111111106p-5
+  },
+  { // Entry 123
+    0x1.125fbee250663e39a600925ecaf87e7ap0,
+    0x1.9999999999994p-4
+  },
+  { // Entry 124
+    0x1.1f59ac3c7d6bf83c0aac08f864d917a0p0,
+    0x1.5555555555552p-3
+  },
+  { // Entry 125
+    0x1.2cf0b5245e8f288fd79fb13137352d3cp0,
+    0x1.ddddddddddddap-3
+  },
+  { // Entry 126
+    0x1.3b2c47bff8328699545ebbc1b8224569p0,
+    0x1.3333333333331p-2
+  },
+  { // Entry 127
+    0x1.4a142c2b2e71dbfc2b446735ddfe02fep0,
+    0x1.7777777777775p-2
+  },
+  { // Entry 128
+    0x1.59b088b8f29ed26e4afc853d2242f3dcp0,
+    0x1.bbbbbbbbbbbb9p-2
+  },
+  { // Entry 129
+    0x1.6a09e667f3bcbd45589bc56188452388p0,
+    0x1.ffffffffffffdp-2
+  },
+  { // Entry 130
+    0x1.p48,
+    0x1.8p5
+  },
+  { // Entry 131
+    0x1.51cb453b953666ae8a73c377e704a131p48,
+    0x1.8333333333333p5
+  },
+  { // Entry 132
+    0x1.bdb8cdadbe110aebd2ba26668f1a053fp48,
+    0x1.8666666666666p5
+  },
+  { // Entry 133
+    0x1.2611186bae6654d144153826a8cbde6ap49,
+    0x1.8999999999999p5
+  },
+  { // Entry 134
+    0x1.8406003b2ae41864a49eea54994df36fp49,
+    0x1.8ccccccccccccp5
+  },
+  { // Entry 135
+    0x1.fffffffffffd3a37a020b8c4054cb869p49,
+    0x1.8ffffffffffffp5
+  },
+  { // Entry 136
+    0x1.51cb453b953492665c6d2fb15083f6e2p50,
+    0x1.9333333333332p5
+  },
+  { // Entry 137
+    0x1.bdb8cdadbe0ea104fa428cab0d5125a2p50,
+    0x1.9666666666665p5
+  },
+  { // Entry 138
+    0x1.2611186bae64bd27820627b1e4c3f179p51,
+    0x1.9999999999998p5
+  },
+  { // Entry 139
+    0x1.8406003b2ae1fe7a7a4c90ae9e7a858ep51,
+    0x1.9cccccccccccbp5
+  },
+  { // Entry 140
+    0x1.fffffffffffa746f4041718be29130c3p51,
+    0x1.9fffffffffffep5
+  },
+  { // Entry 141
+    0x1.p-52,
+    -0x1.ap5
+  },
+  { // Entry 142
+    0x1.51cb453b953666ae8a73c377e704a131p-52,
+    -0x1.9cccccccccccdp5
+  },
+  { // Entry 143
+    0x1.bdb8cdadbe110aebd2ba26668f1a053fp-52,
+    -0x1.999999999999ap5
+  },
+  { // Entry 144
+    0x1.2611186bae6654d144153826a8cbde6ap-51,
+    -0x1.9666666666667p5
+  },
+  { // Entry 145
+    0x1.8406003b2ae41864a49eea54994df36fp-51,
+    -0x1.9333333333334p5
+  },
+  { // Entry 146
+    0x1.fffffffffffd3a37a020b8c4054cb869p-51,
+    -0x1.9000000000001p5
+  },
+  { // Entry 147
+    0x1.51cb453b953492665c6d2fb15083f6e2p-50,
+    -0x1.8cccccccccccep5
+  },
+  { // Entry 148
+    0x1.bdb8cdadbe0ea104fa428cab0d5125a2p-50,
+    -0x1.899999999999bp5
+  },
+  { // Entry 149
+    0x1.2611186bae64bd27820627b1e4c3f179p-49,
+    -0x1.8666666666668p5
+  },
+  { // Entry 150
+    0x1.8406003b2ae1fe7a7a4c90ae9e7a858ep-49,
+    -0x1.8333333333335p5
+  },
+  { // Entry 151
+    0x1.fffffffffffa746f4041718be29130c3p-49,
+    -0x1.8000000000002p5
+  },
+  { // Entry 152
+    0x1.p768,
+    0x1.8p9
+  },
+  { // Entry 153
+    0x1.p-896,
+    -0x1.cp9
+  },
+  { // Entry 154
+    HUGE_VAL,
+    0x1.4p12
+  },
+  { // Entry 155
+    0.0,
+    -0x1.6p12
+  },
+  { // Entry 156
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp1023,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 157
+    0x1.p-1074,
+    -0x1.0c8p10
+  },
+  { // Entry 158
+    0x1.ffffffffffa746f404171ff3199aeed7p-1025,
+    -0x1.0000000000001p10
+  },
+  { // Entry 159
+    0x1.p-1024,
+    -0x1.0p10
+  },
+  { // Entry 160
+    0x1.0000000000162e42fefa3ae53369388cp-1024,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 161
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp-513,
+    -0x1.0000000000001p9
+  },
+  { // Entry 162
+    0x1.p-512,
+    -0x1.0p9
+  },
+  { // Entry 163
+    0x1.00000000000b17217f7d1d351a389d40p-512,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 164
+    0x1.ffffffffffe9d1bd0105c68bc97ec194p-257,
+    -0x1.0000000000001p8
+  },
+  { // Entry 165
+    0x1.p-256,
+    -0x1.0p8
+  },
+  { // Entry 166
+    0x1.0000000000058b90bfbe8e8b2d3d4edep-256,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 167
+    0x1.fffffffffff4e8de8082e32725016147p-129,
+    -0x1.0000000000001p7
+  },
+  { // Entry 168
+    0x1.p-128,
+    -0x1.0p7
+  },
+  { // Entry 169
+    0x1.000000000002c5c85fdf4741bea6e77fp-128,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 170
+    0x1.fffffffffffa746f4041718be29130c3p-65,
+    -0x1.0000000000001p6
+  },
+  { // Entry 171
+    0x1.p-64,
+    -0x1.0p6
+  },
+  { // Entry 172
+    0x1.00000000000162e42fefa39fe95583c3p-64,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 173
+    0x1.fffffffffffd3a37a020b8c4054cb869p-33,
+    -0x1.0000000000001p5
+  },
+  { // Entry 174
+    0x1.p-32,
+    -0x1.0p5
+  },
+  { // Entry 175
+    0x1.000000000000b17217f7d1cfb72b45e2p-32,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 176
+    0x1.fffffffffffe9d1bd0105c6187a76436p-17,
+    -0x1.0000000000001p4
+  },
+  { // Entry 177
+    0x1.p-16,
+    -0x1.0p4
+  },
+  { // Entry 178
+    0x1.00000000000058b90bfbe8e7cc35c3f1p-16,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 179
+    0x1.ffffffffffff4e8de8082e30a513f41bp-9,
+    -0x1.0000000000001p3
+  },
+  { // Entry 180
+    0x1.p-8,
+    -0x1.0p3
+  },
+  { // Entry 181
+    0x1.0000000000002c5c85fdf473e242ea38p-8,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 182
+    0x1.ffffffffffffa746f40417184ada0a8ep-5,
+    -0x1.0000000000001p2
+  },
+  { // Entry 183
+    0x1.p-4,
+    -0x1.0p2
+  },
+  { // Entry 184
+    0x1.000000000000162e42fefa39f02b772cp-4,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 185
+    0x1.ffffffffffffd3a37a020b8c23810967p-3,
+    -0x1.0000000000001p1
+  },
+  { // Entry 186
+    0x1.p-2,
+    -0x1.0p1
+  },
+  { // Entry 187
+    0x1.0000000000000b17217f7d1cf7d83c1ap-2,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 188
+    0x1.ffffffffffffe9d1bd0105c6114585bbp-2,
+    -0x1.0000000000001p0
+  },
+  { // Entry 189
+    0x1.p-1,
+    -0x1.0p0
+  },
+  { // Entry 190
+    0x1.000000000000058b90bfbe8e7bdcbe2ep-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 191
+    0x1.ffffffffffe9d1bd0105c68bc97ec194p511,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 192
+    0x1.p512,
+    0x1.0p9
+  },
+  { // Entry 193
+    0x1.0000000000162e42fefa3ae53369388cp512,
+    0x1.0000000000001p9
+  },
+  { // Entry 194
+    0x1.fffffffffff4e8de8082e32725016147p255,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 195
+    0x1.p256,
+    0x1.0p8
+  },
+  { // Entry 196
+    0x1.00000000000b17217f7d1d351a389d40p256,
+    0x1.0000000000001p8
+  },
+  { // Entry 197
+    0x1.fffffffffffa746f4041718be29130c3p127,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 198
+    0x1.p128,
+    0x1.0p7
+  },
+  { // Entry 199
+    0x1.0000000000058b90bfbe8e8b2d3d4edep128,
+    0x1.0000000000001p7
+  },
+  { // Entry 200
+    0x1.fffffffffffd3a37a020b8c4054cb869p63,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 201
+    0x1.p64,
+    0x1.0p6
+  },
+  { // Entry 202
+    0x1.000000000002c5c85fdf4741bea6e77fp64,
+    0x1.0000000000001p6
+  },
+  { // Entry 203
+    0x1.fffffffffffe9d1bd0105c6187a76436p31,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 204
+    0x1.p32,
+    0x1.0p5
+  },
+  { // Entry 205
+    0x1.00000000000162e42fefa39fe95583c3p32,
+    0x1.0000000000001p5
+  },
+  { // Entry 206
+    0x1.ffffffffffff4e8de8082e30a513f41bp15,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 207
+    0x1.p16,
+    0x1.0p4
+  },
+  { // Entry 208
+    0x1.000000000000b17217f7d1cfb72b45e2p16,
+    0x1.0000000000001p4
+  },
+  { // Entry 209
+    0x1.ffffffffffffa746f40417184ada0a8ep7,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 210
+    0x1.p8,
+    0x1.0p3
+  },
+  { // Entry 211
+    0x1.00000000000058b90bfbe8e7cc35c3f1p8,
+    0x1.0000000000001p3
+  },
+  { // Entry 212
+    0x1.ffffffffffffd3a37a020b8c23810967p3,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 213
+    0x1.p4,
+    0x1.0p2
+  },
+  { // Entry 214
+    0x1.0000000000002c5c85fdf473e242ea38p4,
+    0x1.0000000000001p2
+  },
+  { // Entry 215
+    0x1.ffffffffffffe9d1bd0105c6114585bbp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p1
+  },
+  { // Entry 217
+    0x1.000000000000162e42fefa39f02b772cp2,
+    0x1.0000000000001p1
+  },
+  { // Entry 218
+    0x1.fffffffffffff4e8de8082e30884031fp0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 219
+    0x1.p1,
+    0x1.0p0
+  },
+  { // Entry 220
+    0x1.0000000000000b17217f7d1cf7d83c1ap1,
+    0x1.0000000000001p0
+  },
+  { // Entry 221
+    0x1.6a09e667f3bcc131216634b8a8ffb7b0p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 222
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 223
+    0x1.6a09e667f3bcccf47bc582be0b70aea4p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 224
+    0x1.ae89f995ad3ad13ebe2fd437cdc4d86bp-1,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 225
+    0x1.ae89f995ad3ad5e8734d1773205a7fbcp-1,
+    -0x1.0p-2
+  },
+  { // Entry 226
+    0x1.ae89f995ad3ad83d4ddbb910c9aa2c84p-1,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 227
+    0x1.d5818dcfba486fd2c0b58591353e1431p-1,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 228
+    0x1.d5818dcfba48725da05aeb66e0dca9f5p-1,
+    -0x1.0p-3
+  },
+  { // Entry 229
+    0x1.d5818dcfba4873a3102d9e51b6ad4734p-1,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 230
+    0x1.ea4afa2a490d97051edfd6f5de84f1fep-1,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 231
+    0x1.ea4afa2a490d9858f73a18f5db301f86p-1,
+    -0x1.0p-4
+  },
+  { // Entry 232
+    0x1.ea4afa2a490d9902e36739f5d9860ea0p-1,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 233
+    0x1.f50765b6e45405c75396b27147029cc0p-1,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 234
+    0x1.f50765b6e4540674f84b762862baff99p-1,
+    -0x1.0p-5
+  },
+  { // Entry 235
+    0x1.f50765b6e45406cbcaa5d803f0974796p-1,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 236
+    0x1.fa7c1819e90d8291461c9eac38e21676p-1,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 237
+    0x1.fa7c1819e90d82e90a7e74b263c1dc06p-1,
+    -0x1.0p-6
+  },
+  { // Entry 238
+    0x1.fa7c1819e90d8314ecaf5fb57931c482p-1,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 239
+    0x1.fd3c22b8f71f106b3c73a454f80c00ecp-1,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 240
+    0x1.fd3c22b8f71f10975ba4b32bcf3a5e12p-1,
+    -0x1.0p-7
+  },
+  { // Entry 241
+    0x1.fd3c22b8f71f10ad6b3d3a973ad18e15p-1,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 242
+    0x1.fe9d96b2a23d9134414ed15eb175bc62p-1,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 243
+    0x1.fe9d96b2a23d914a6037442fde31baf8p-1,
+    -0x1.0p-8
+  },
+  { // Entry 244
+    0x1.fe9d96b2a23d91556fab7d98748fba9fp-1,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 245
+    0x1.ff4eaca4391b5d982b2a046646772a87p-1,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 246
+    0x1.ff4eaca4391b5da33e743691f7298b12p-1,
+    -0x1.0p-9
+  },
+  { // Entry 247
+    0x1.ff4eaca4391b5da8c8194fa7cf82bb6ep-1,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 248
+    0x1.ffa74ea381efc2121cd91a3e6475a7d8p-1,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 249
+    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
+    -0x1.0p-10
+  },
+  { // Entry 250
+    0x1.ffa74ea381efc21a6cc15cead154662dp-1,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 251
+    0x1.fff4e8fd40080cc795b0e5e46a91f0ffp-1,
+    -0x1.0000000000001p-13
+  },
+  { // Entry 252
+    0x1.fff4e8fd40080cc8471f25ef2480b00bp-1,
+    -0x1.0p-13
+  },
+  { // Entry 253
+    0x1.fff4e8fd40080cc89fd645f481780f90p-1,
+    -0x1.fffffffffffffp-14
+  },
+  { // Entry 254
+    0x1.6a09e667f3bcc51cea30a40fc9c52aecp0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 255
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p-1
+  },
+  { // Entry 256
+    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 257
+    0x1.306fe0a31b7151388348ff0de074c5a3p0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 258
+    0x1.306fe0a31b7152de8d5a46305c85edecp0,
+    0x1.0p-2
+  },
+  { // Entry 259
+    0x1.306fe0a31b71562aa17cd47554af19b4p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 260
+    0x1.172b83c7d517ad0c7647240cbf259d0dp0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 261
+    0x1.172b83c7d517adcdf7c8c50eb14a7920p0,
+    0x1.0p-3
+  },
+  { // Entry 262
+    0x1.172b83c7d517af50facc07129595c3a8p0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 263
+    0x1.0b5586cf9890f5cce4ef0d92edf98f81p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 264
+    0x1.0b5586cf9890f6298b92b71842a98364p0,
+    0x1.0p-4
+  },
+  { // Entry 265
+    0x1.0b5586cf9890f6e2d8da0a22ec09cb7dp0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 266
+    0x1.059b0d31585743812721a46bbd07f042p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 267
+    0x1.059b0d31585743ae7c548eb68ca417fep0,
+    0x1.0p-5
+  },
+  { // Entry 268
+    0x1.059b0d315857440926ba634c2bdc7f06p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 269
+    0x1.02c9a3e778060ed08bb2bf3a4c4bffddp0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 270
+    0x1.02c9a3e778060ee6f7caca4f7a29bde9p0,
+    0x1.0p-6
+  },
+  { // Entry 271
+    0x1.02c9a3e778060f13cffae079d5e53fd5p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 272
+    0x1.0163da9fb33356cd23daa2a4de92b010p0,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 273
+    0x1.0163da9fb33356d84a66ae336dcdfa40p0,
+    0x1.0p-7
+  },
+  { // Entry 274
+    0x1.0163da9fb33356ee977ec5508c449011p0,
+    0x1.0000000000001p-7
+  },
+  { // Entry 275
+    0x1.00b1afa5abcbed5b9a41071a509ceaf7p0,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 276
+    0x1.00b1afa5abcbed6129ab13ec11dc9544p0,
+    0x1.0p-8
+  },
+  { // Entry 277
+    0x1.00b1afa5abcbed6c487f2d8f945bea39p0,
+    0x1.0000000000001p-8
+  },
+  { // Entry 278
+    0x1.0058c86da1c09e9f385b4a201180af89p0,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 279
+    0x1.0058c86da1c09ea1ff19d294cf2f679cp0,
+    0x1.0p-9
+  },
+  { // Entry 280
+    0x1.0058c86da1c09ea78c96e37e4a8cd7d8p0,
+    0x1.0000000000001p-9
+  },
+  { // Entry 281
+    0x1.002c605e2e8cec4f0a000b089708b90dp0,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 282
+    0x1.002c605e2e8cec506d21bfc89a23a010p0,
+    0x1.0p-10
+  },
+  { // Entry 283
+    0x1.002c605e2e8cec5333652948a0596e1cp0,
+    0x1.0000000000001p-10
+  },
+  { // Entry 284
+    0x1.00058ba01fb9f96d404f58b2f213c6ccp0,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 285
+    0x1.00058ba01fb9f96d6cacd4b180917c3ep0,
+    0x1.0p-13
+  },
+  { // Entry 286
+    0x1.00058ba01fb9f96dc567ccae9d8ce721p0,
+    0x1.0000000000001p-13
+  },
+  { // Entry 287
+    0.0,
+    -0x1.0c80000000001p10
+  },
+  { // Entry 288
+    0x1.p-1074,
+    -0x1.0c8p10
+  },
+  { // Entry 289
+    0x1.00000000002c5c85fdf477b662b26945p-1074,
+    -0x1.0c7ffffffffffp10
+  },
+  { // Entry 290
+    0.0,
+    -0x1.0cc0000000001p10
+  },
+  { // Entry 291
+    0.0,
+    -0x1.0ccp10
+  },
+  { // Entry 292
+    0.0,
+    -0x1.0cbffffffffffp10
+  },
+  { // Entry 293
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 294
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 295
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 296
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 297
+    0x1.1a6637e666f82e1bf9bdc293e110c586p3,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 298
+    0x1.d0231bd5e9cfd1c56d8c57fb9adc16e1p-4,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 299
+    0x1.7c3f73e5e9df4955e51db2c96c4cd483p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 300
+    0x1.58b3940afed165e46fbb76d0cb01dd87p-2,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 301
+    0x1.0000000000000b17217f7d1cf7d83c1ap1,
+    0x1.0000000000001p0
+  },
+  { // Entry 302
+    0x1.ffffffffffffe9d1bd0105c6114585bbp-2,
+    -0x1.0000000000001p0
+  },
+  { // Entry 303
+    0x1.p1,
+    0x1.0p0
+  },
+  { // Entry 304
+    0x1.p-1,
+    -0x1.0p0
+  },
+  { // Entry 305
+    0x1.fffffffffffff4e8de8082e30884031fp0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 306
+    0x1.000000000000058b90bfbe8e7bdcbe2ep-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 307
+    0x1.b93bbf8582e129341e24ff465142adfap0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 308
+    0x1.290ee6a5e83cf78da063060a3f50cc7fp-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 309
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 310
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 311
+    0x1.p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 312
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 313
+    0x1.p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 314
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 315
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 316
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 317
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 318
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1073
+  },
+  { // Entry 319
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 320
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 321
+    0x1.p0,
+    0.0
+  },
+  { // Entry 322
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 323
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp1023,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 324
+    HUGE_VAL,
+    0x1.0p10
+  },
+  { // Entry 325
+    0x1.p-1022,
+    -0x1.ff0p9
+  },
+  { // Entry 326
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp-1023,
+    -0x1.ff00000000001p9
+  },
+  { // Entry 327
+    0x1.p125,
+    0x1.f40p6
+  },
+  { // Entry 328
+    0x1.p-125,
+    -0x1.f40p6
+  },
+  { // Entry 329
+    0x1.p2,
+    0x1.0p1
+  },
+  { // Entry 330
+    0x1.p-2,
+    -0x1.0p1
+  }
+};
diff --git a/tests/math_data/exp2f_intel_data.h b/tests/math_data/exp2f_intel_data.h
new file mode 100644
index 0000000..5dc52ac
--- /dev/null
+++ b/tests/math_data/exp2f_intel_data.h
@@ -0,0 +1,1126 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_exp2f_intel_data[] = {
+  { // Entry 0
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0x1.p-128,
+    -0x1.p7
+  },
+  { // Entry 2
+    0x1.fffe9d1c4b0f37f413d44c66c0481834p-129,
+    -0x1.000002p7
+  },
+  { // Entry 3
+    0x1.ae89930028efb7886635034db7054020p-1,
+    -0x1.000160p-2
+  },
+  { // Entry 4
+    0x1.ffa72300006e20fa0359c57f1b36a8e6p-1,
+    -0x1.007ep-10
+  },
+  { // Entry 5
+    0x1.f4f5d8ffcfec5e7b589aa48f5b5d9017p-1,
+    -0x1.019ep-5
+  },
+  { // Entry 6
+    0x1.1c0df9b94df3cdb41628976927bf54e5p-129,
+    -0x1.01b330p7
+  },
+  { // Entry 7
+    0x1.e9f0bd0139ec689f72fb67c4e2ca601cp-1,
+    -0x1.0440p-4
+  },
+  { // Entry 8
+    0x1.5effb0fffd19b4376d4e6ae2b16b3a21p-1,
+    -0x1.16e0p-1
+  },
+  { // Entry 9
+    0x1.d737a7fa4dbf2cfb6dba6ec6817ed03bp-2,
+    -0x1.1ea8p0
+  },
+  { // Entry 10
+    0x1.a4e5b30000f59daf40326c212c5a2fcbp-1,
+    -0x1.2175bcp-2
+  },
+  { // Entry 11
+    0x1.9f7f16feb25f3000d062055413068a97p-19,
+    -0x1.24d228p4
+  },
+  { // Entry 12
+    0x1.00063d164d3512a13946a9d4477d594fp-149,
+    -0x1.29ffeep7
+  },
+  { // Entry 13
+    0.0f,
+    -0x1.2a0002p7
+  },
+  { // Entry 14
+    0.0f,
+    -0x1.2a0004p7
+  },
+  { // Entry 15
+    0.0f,
+    -0x1.2a14c0p7
+  },
+  { // Entry 16
+    0.0f,
+    -0x1.2c000ap7
+  },
+  { // Entry 17
+    0x1.a0d9ecffff19d4152b82c660dc209a77p-1,
+    -0x1.2fbad0p-2
+  },
+  { // Entry 18
+    0x1.c6052f00589d4f803738f8fcf36fa00bp-1,
+    -0x1.6318d0p-3
+  },
+  { // Entry 19
+    0x1.f7cbf0fffe32af4dda01fb5554e5bdd5p-1,
+    -0x1.7dc8e6p-6
+  },
+  { // Entry 20
+    0x1.994b4f09b6ee04bdf5b421d4e95dd38ep-107,
+    -0x1.a94ac2p6
+  },
+  { // Entry 21
+    0x1.9768dd0bafc9d9b1a97a54711d499b74p-4,
+    -0x1.aa326cp1
+  },
+  { // Entry 22
+    0x1.d58197fb38fa3c1fe12e7ad59c08ff21p-8,
+    -0x1.c7fffep2
+  },
+  { // Entry 23
+    0x1.6d7a68b2e47d3110712df2595c91f23cp-1,
+    -0x1.f207fep-2
+  },
+  { // Entry 24
+    0x1.be9e93477301949016bc2c2b50bfe2cap-126,
+    -0x1.f4c9d4p6
+  },
+  { // Entry 25
+    0x1.d61027f7bae9f1964c205dfcbe3f4679p-1,
+    -0x1.f8fe40p-4
+  },
+  { // Entry 26
+    0x1.4c6fea0579dc794e989c3505e39be48fp-127,
+    -0x1.fa7e04p6
+  },
+  { // Entry 27
+    0x1.d5da00fff7fc53eb4fff78cd7d1f080bp-1,
+    -0x1.fba72ap-4
+  },
+  { // Entry 28
+    0x1.05c9d13b70cff2cde5f75b870dacca62p-127,
+    -0x1.fbdef8p6
+  },
+  { // Entry 29
+    0x1.d5d2f0fa1f23ba0b7a06c89cc0128f77p-1,
+    -0x1.fbfffep-4
+  },
+  { // Entry 30
+    0x1.ea5a64f56a7ba762fe38fe8eb4a9dd03p-1,
+    -0x1.fe8c64p-5
+  },
+  { // Entry 31
+    0x1.ea4cccf5323b8c4405f1a736e586738fp-1,
+    -0x1.ffd40cp-5
+  },
+  { // Entry 32
+    0x1.0026deff8e53c240976d296b38100d8ap-16,
+    -0x1.fff8fep3
+  },
+  { // Entry 33
+    0x1.ea4b39f81ba66804ecab3d71073e27b3p-1,
+    -0x1.fff9fep-5
+  },
+  { // Entry 34
+    0x1.007969bfdcbdfb3e58bdf333f53a3c1dp-128,
+    -0x1.fffd44p6
+  },
+  { // Entry 35
+    0x1.0056b360e5a2dfe9ee49875dd529e33bp-128,
+    -0x1.fffe0cp6
+  },
+  { // Entry 36
+    0x1.fff4e90010d7f0f5d5e88ed4851d1542p-1,
+    -0x1.ffff7ep-14
+  },
+  { // Entry 37
+    0x1.001154ba7ed485fbf804cd8280d4ca0fp-128,
+    -0x1.ffff9cp6
+  },
+  { // Entry 38
+    0x1.d58194f64f579173d9ee5d3c576ef523p-1,
+    -0x1.ffffa6p-4
+  },
+  { // Entry 39
+    0x1.f50767075372b29c5577b7a9610f8d69p-1,
+    -0x1.ffffc2p-6
+  },
+  { // Entry 40
+    0x1.6a09f2a8c76a7a3cfef0de81f2b79d8ep-1,
+    -0x1.ffffcep-2
+  },
+  { // Entry 41
+    0x1.ae89fed49903eff01fb8da20ee306a5ep-1,
+    -0x1.ffffdcp-3
+  },
+  { // Entry 42
+    0x1.00533afff5eeac6d2dc9023c0b872bdap1,
+    0x1.0078p0
+  },
+  { // Entry 43
+    0x1.6a4a9ea1370039bb654a21a808d42ea9p0,
+    0x1.0084p-1
+  },
+  { // Entry 44
+    0x1.6c0213db20e12d00b593e21b41ec6f7bp0,
+    0x1.0401e0p-1
+  },
+  { // Entry 45
+    0x1.6d7c62dea2f8a79892ffb0a423c8312dp0,
+    0x1.07p-1
+  },
+  { // Entry 46
+    0x1.02ea9d000ca7a3d1c9f2feff1d75d9e8p0,
+    0x1.0bc2f0p-6
+  },
+  { // Entry 47
+    0x1.78d0620424ed2002d0f36cb6012c092cp0,
+    0x1.1d8cp-1
+  },
+  { // Entry 48
+    0x1.8fbcc30b8a9d1ea185426ae7254fa29ap4,
+    0x1.29256ap2
+  },
+  { // Entry 49
+    0x1.39e44cfffffe38aff28704c732b540fdp0,
+    0x1.2d2eb8p-2
+  },
+  { // Entry 50
+    0x1.9394c50a159080ad377f98e1d382d21ap0,
+    0x1.503cf0p-1
+  },
+  { // Entry 51
+    0x1.96718703f6190777431ca8e9c8d1e441p0,
+    0x1.557558p-1
+  },
+  { // Entry 52
+    0x1.be25dcfffffde8b04e7c7b1baec7abdbp2,
+    0x1.669390p1
+  },
+  { // Entry 53
+    0x1.7ca40f0c7bdc8b5683fc0560c6159f18p24,
+    0x1.892816p4
+  },
+  { // Entry 54
+    0x1.2536aaffff141c8870e8d4c2352e92eap0,
+    0x1.9103c2p-3
+  },
+  { // Entry 55
+    0x1.7ca44ef297d9c32fe00db5598642e868p1,
+    0x1.92819ep0
+  },
+  { // Entry 56
+    0x1.000008ff47d7ee2ce82ae0bdaaa55772p0,
+    0x1.9f5dc8p-21
+  },
+  { // Entry 57
+    0x1.93cdf30bca3f1ccc6eeb23eb6545f0fdp6,
+    0x1.aa14b2p2
+  },
+  { // Entry 58
+    0x1.13252d0000f4b53775393a04dbee6cd3p0,
+    0x1.aa2fc0p-4
+  },
+  { // Entry 59
+    0x1.28eb540000c5e726057f3ee56612a843p0,
+    0x1.b61f44p-3
+  },
+  { // Entry 60
+    0x1.b5fead000022a86ec9bc4232da47f2fbp1,
+    0x1.c65754p0
+  },
+  { // Entry 61
+    0x1.de844cffff0b21e0a471e9d560a514cbp0,
+    0x1.ce0ac0p-1
+  },
+  { // Entry 62
+    0x1.000504ffff072985d71458d5d453850ep0,
+    0x1.cf72b2p-14
+  },
+  { // Entry 63
+    0x1.c1c278fffb6bc7da81e20c43aeb9ce92p1,
+    0x1.d02174p0
+  },
+  { // Entry 64
+    0x1.e1ae78ffff0000b5ca88867f54dcc891p0,
+    0x1.d2e940p-1
+  },
+  { // Entry 65
+    0x1.1535d3000000cd03211e77e8de4eb7d2p0,
+    0x1.d65f1cp-4
+  },
+  { // Entry 66
+    0x1.00051c0000007f998be0d45ef35f3d57p0,
+    0x1.d7be2ep-14
+  },
+  { // Entry 67
+    0x1.f294d4fffeba9ad4fe553bc197fac243p0,
+    0x1.ec62p-1
+  },
+  { // Entry 68
+    0x1.f294d4fffeba9ad4fe553bc197fac243p30,
+    0x1.ef6310p4
+  },
+  { // Entry 69
+    0x1.ea3cb509a95f60a5d4162ea7e476f787p3,
+    0x1.f7faa0p1
+  },
+  { // Entry 70
+    0x1.03343b47502c1f28eb63e7f42392c024p127,
+    0x1.fc1260p6
+  },
+  { // Entry 71
+    0x1.16fc8b0000c873958ce77b558bb04b77p0,
+    0x1.fc1d68p-4
+  },
+  { // Entry 72
+    0x1.69ea89000a943cbb444fe33ef6484b14p0,
+    0x1.ff7ffep-2
+  },
+  { // Entry 73
+    0x1.69f25d08c9bdef92b155047e4e2700f8p0,
+    0x1.ff9ff2p-2
+  },
+  { // Entry 74
+    0x1.ffef58078cd6d0d5f1fe65744c616496p3,
+    0x1.fff9fep1
+  },
+  { // Entry 75
+    0x1.fff37b0a5ebca011d756edb4d62e7666p7,
+    0x1.fffdbep2
+  },
+  { // Entry 76
+    0x1.fffe180726a04201907cd73f88488d80p31,
+    0x1.ffffeap4
+  },
+  { // Entry 77
+    0x1.00000000000000000000000000000b17p0,
+    0x1.fffffcp-117
+  },
+  { // Entry 78
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.p-1
+  },
+  { // Entry 79
+    0x1.7b29357bbc48d2953781228b2e9ba474p-1,
+    -0x1.bbbbbcp-2
+  },
+  { // Entry 80
+    0x1.8d17d292bd084f608099344c40ba156ap-1,
+    -0x1.777778p-2
+  },
+  { // Entry 81
+    0x1.9fdf8b933e38a099e8b275aa655d720dp-1,
+    -0x1.333334p-2
+  },
+  { // Entry 82
+    0x1.b38aa517a000872460ce450b415297eep-1,
+    -0x1.dddde0p-3
+  },
+  { // Entry 83
+    0x1.c823e00b880a561008d5c1556a842a74p-1,
+    -0x1.555558p-3
+  },
+  { // Entry 84
+    0x1.ddb67fb66b77c35102ce41874e657eb6p-1,
+    -0x1.99999ep-4
+  },
+  { // Entry 85
+    0x1.f44e4f6ba2528a510e8a7cb8e11930bdp-1,
+    -0x1.111118p-5
+  },
+  { // Entry 86
+    0x1.05fbd4b8f440f2c1ccdb5cddeff66b41p0,
+    0x1.11110cp-5
+  },
+  { // Entry 87
+    0x1.125fbecf4bc054e03912db82366b6cb5p0,
+    0x1.999998p-4
+  },
+  { // Entry 88
+    0x1.1f59ac1b4b3e82b6e5a66ac50a8857dbp0,
+    0x1.555554p-3
+  },
+  { // Entry 89
+    0x1.2cf0b4f3b26e63c9d3cb40b4bae31586p0,
+    0x1.dddddcp-3
+  },
+  { // Entry 90
+    0x1.3b2c477e6e5f87fea4b02ead824f269ap0,
+    0x1.333332p-2
+  },
+  { // Entry 91
+    0x1.4a142bd74a641ce0ee908779b7d214fcp0,
+    0x1.777776p-2
+  },
+  { // Entry 92
+    0x1.59b088511d77ab47295346cb3a773b28p0,
+    0x1.bbbbbap-2
+  },
+  { // Entry 93
+    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
+    0x1.fffffep-2
+  },
+  { // Entry 94
+    0x1.p48,
+    0x1.80p5
+  },
+  { // Entry 95
+    0x1.51cb5ca59853a1e54593c77e7eb8db83p48,
+    0x1.833334p5
+  },
+  { // Entry 96
+    0x1.bdb90b780b33357a359a52b9f7ce88d2p48,
+    0x1.866668p5
+  },
+  { // Entry 97
+    0x1.26115591f845278abb13016348ac2f38p49,
+    0x1.89999cp5
+  },
+  { // Entry 98
+    0x1.84066bd07579e097880a08553b47167ap49,
+    0x1.8cccd0p5
+  },
+  { // Entry 99
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp50,
+    0x1.900004p5
+  },
+  { // Entry 100
+    0x1.51cbd1b7c03c121b017b7a63e5e7df2cp50,
+    0x1.933338p5
+  },
+  { // Entry 101
+    0x1.bdb9a5f1f180173634542f42d5122e11p50,
+    0x1.96666cp5
+  },
+  { // Entry 102
+    0x1.2611bb7c8fa36f3a6c96868064ca2d31p51,
+    0x1.9999a0p5
+  },
+  { // Entry 103
+    0x1.8406f24b3ca53ff6aff423c41ab06efap51,
+    0x1.9cccd4p5
+  },
+  { // Entry 104
+    0x1.p52,
+    0x1.a0p5
+  },
+  { // Entry 105
+    0x1.p-52,
+    -0x1.a0p5
+  },
+  { // Entry 106
+    0x1.51cb5ca59853a1e54593c77e7eb8db83p-52,
+    -0x1.9cccccp5
+  },
+  { // Entry 107
+    0x1.bdb90b780b33357a359a52b9f7ce88d2p-52,
+    -0x1.999998p5
+  },
+  { // Entry 108
+    0x1.26115591f845278abb13016348ac2f38p-51,
+    -0x1.966664p5
+  },
+  { // Entry 109
+    0x1.84066bd07579e097880a08553b47167ap-51,
+    -0x1.933330p5
+  },
+  { // Entry 110
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp-50,
+    -0x1.8ffffcp5
+  },
+  { // Entry 111
+    0x1.51cbd1b7c03c121b017b7a63e5e7df2cp-50,
+    -0x1.8cccc8p5
+  },
+  { // Entry 112
+    0x1.bdb9a5f1f180173634542f42d5122e11p-50,
+    -0x1.899994p5
+  },
+  { // Entry 113
+    0x1.2611bb7c8fa36f3a6c96868064ca2d31p-49,
+    -0x1.866660p5
+  },
+  { // Entry 114
+    0x1.8406f24b3ca53ff6aff423c41ab06efap-49,
+    -0x1.83332cp5
+  },
+  { // Entry 115
+    0x1.p-48,
+    -0x1.80p5
+  },
+  { // Entry 116
+    HUGE_VALF,
+    0x1.80p9
+  },
+  { // Entry 117
+    0.0f,
+    -0x1.c0p9
+  },
+  { // Entry 118
+    HUGE_VALF,
+    0x1.40p12
+  },
+  { // Entry 119
+    0.0f,
+    -0x1.60p12
+  },
+  { // Entry 120
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p127,
+    0x1.fffffep6
+  },
+  { // Entry 121
+    0x1.p-149,
+    -0x1.2ap7
+  },
+  { // Entry 122
+    0x1.fffe9d1c4b0f37f413d44c66c0481834p-129,
+    -0x1.000002p7
+  },
+  { // Entry 123
+    0x1.p-128,
+    -0x1.p7
+  },
+  { // Entry 124
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp-128,
+    -0x1.fffffep6
+  },
+  { // Entry 125
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p-65,
+    -0x1.000002p6
+  },
+  { // Entry 126
+    0x1.p-64,
+    -0x1.p6
+  },
+  { // Entry 127
+    0x1.00002c5c89d5ec6ca4d7c8acc017b7c9p-64,
+    -0x1.fffffep5
+  },
+  { // Entry 128
+    0x1.ffffa746fbb4062677bd0f506f391265p-33,
+    -0x1.000002p5
+  },
+  { // Entry 129
+    0x1.p-32,
+    -0x1.p5
+  },
+  { // Entry 130
+    0x1.0000162e43f4f831060e02d839a9d16dp-32,
+    -0x1.fffffep4
+  },
+  { // Entry 131
+    0x1.ffffd3a37bee075de43d49b9f60d05b0p-17,
+    -0x1.000002p4
+  },
+  { // Entry 132
+    0x1.p-16,
+    -0x1.p4
+  },
+  { // Entry 133
+    0x1.00000b1721bcfc99d9f890ea06911763p-16,
+    -0x1.fffffep3
+  },
+  { // Entry 134
+    0x1.ffffe9d1bd7c04bc4825147a8c0e63e3p-9,
+    -0x1.000002p3
+  },
+  { // Entry 135
+    0x1.p-8,
+    -0x1.p3
+  },
+  { // Entry 136
+    0x1.0000058b90cf1e6d97f9ca14dbcc1628p-8,
+    -0x1.fffffep2
+  },
+  { // Entry 137
+    0x1.fffff4e8de9f42a0cf11f7912ea17ee2p-5,
+    -0x1.000002p2
+  },
+  { // Entry 138
+    0x1.p-4,
+    -0x1.p2
+  },
+  { // Entry 139
+    0x1.000002c5c863b73f016468f6bac5ca2cp-4,
+    -0x1.fffffep1
+  },
+  { // Entry 140
+    0x1.fffffa746f47f160fcf890e3b801aeddp-3,
+    -0x1.000002p1
+  },
+  { // Entry 141
+    0x1.p-2,
+    -0x1.p1
+  },
+  { // Entry 142
+    0x1.00000162e430e5a18f6119e3c02282a5p-2,
+    -0x1.fffffep0
+  },
+  { // Entry 143
+    0x1.fffffd3a37a20cb4a12e24eaf25e3907p-2,
+    -0x1.000002p0
+  },
+  { // Entry 144
+    0x1.p-1,
+    -0x1.p0
+  },
+  { // Entry 145
+    0x1.000000b1721835514b86e6d96efd1bffp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 146
+    0x1.ffffa746fbb4062677bd0f506f391265p63,
+    0x1.fffffep5
+  },
+  { // Entry 147
+    0x1.p64,
+    0x1.p6
+  },
+  { // Entry 148
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp64,
+    0x1.000002p6
+  },
+  { // Entry 149
+    0x1.ffffd3a37bee075de43d49b9f60d05b0p31,
+    0x1.fffffep4
+  },
+  { // Entry 150
+    0x1.p32,
+    0x1.p5
+  },
+  { // Entry 151
+    0x1.00002c5c89d5ec6ca4d7c8acc017b7c9p32,
+    0x1.000002p5
+  },
+  { // Entry 152
+    0x1.ffffe9d1bd7c04bc4825147a8c0e63e3p15,
+    0x1.fffffep3
+  },
+  { // Entry 153
+    0x1.p16,
+    0x1.p4
+  },
+  { // Entry 154
+    0x1.0000162e43f4f831060e02d839a9d16dp16,
+    0x1.000002p4
+  },
+  { // Entry 155
+    0x1.fffff4e8de9f42a0cf11f7912ea17ee2p7,
+    0x1.fffffep2
+  },
+  { // Entry 156
+    0x1.p8,
+    0x1.p3
+  },
+  { // Entry 157
+    0x1.00000b1721bcfc99d9f890ea06911763p8,
+    0x1.000002p3
+  },
+  { // Entry 158
+    0x1.fffffa746f47f160fcf890e3b801aeddp3,
+    0x1.fffffep1
+  },
+  { // Entry 159
+    0x1.p4,
+    0x1.p2
+  },
+  { // Entry 160
+    0x1.0000058b90cf1e6d97f9ca14dbcc1628p4,
+    0x1.000002p2
+  },
+  { // Entry 161
+    0x1.fffffd3a37a20cb4a12e24eaf25e3907p1,
+    0x1.fffffep0
+  },
+  { // Entry 162
+    0x1.p2,
+    0x1.p1
+  },
+  { // Entry 163
+    0x1.000002c5c863b73f016468f6bac5ca2cp2,
+    0x1.000002p1
+  },
+  { // Entry 164
+    0x1.fffffe9d1bd08b5b58ee4879a122966ep0,
+    0x1.fffffep-1
+  },
+  { // Entry 165
+    0x1.p1,
+    0x1.p0
+  },
+  { // Entry 166
+    0x1.00000162e430e5a18f6119e3c02282a5p1,
+    0x1.000002p0
+  },
+  { // Entry 167
+    0x1.6a09e56d018a842b90dd06c362fef7adp-1,
+    -0x1.000002p-1
+  },
+  { // Entry 168
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.p-1
+  },
+  { // Entry 169
+    0x1.6a09e6e56cd62cb1c0a32dacee6c1513p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 170
+    0x1.ae89f9007697475c5ad3c1ca20c5ef35p-1,
+    -0x1.000002p-2
+  },
+  { // Entry 171
+    0x1.ae89f995ad3ad5e8734d1773205a7fbcp-1,
+    -0x1.p-2
+  },
+  { // Entry 172
+    0x1.ae89f9e0488cb092fcee839efbf3fc4cp-1,
+    -0x1.fffffep-3
+  },
+  { // Entry 173
+    0x1.d5818d7e5e53ccaf85be04f92de7e9bfp-1,
+    -0x1.000002p-3
+  },
+  { // Entry 174
+    0x1.d5818dcfba48725da05aeb66e0dca9f5p-1,
+    -0x1.p-3
+  },
+  { // Entry 175
+    0x1.d5818df86842ca7e21cae1385c97eb97p-1,
+    -0x1.fffffep-4
+  },
+  { // Entry 176
+    0x1.ea4af9ffce0251f017bdb97010c11824p-1,
+    -0x1.000002p-4
+  },
+  { // Entry 177
+    0x1.ea4afa2a490d9858f73a18f5db301f86p-1,
+    -0x1.p-4
+  },
+  { // Entry 178
+    0x1.ea4afa3f86933ceebf0b1d7e2966b3fbp-1,
+    -0x1.fffffep-5
+  },
+  { // Entry 179
+    0x1.f50765a12fbd6e767118fa02bcb3a0d1p-1,
+    -0x1.000002p-5
+  },
+  { // Entry 180
+    0x1.f50765b6e4540674f84b762862baff99p-1,
+    -0x1.p-5
+  },
+  { // Entry 181
+    0x1.f50765c1be9f52ce811823dc464b40d5p-1,
+    -0x1.fffffep-6
+  },
+  { // Entry 182
+    0x1.fa7c180ef0814846b01522e83717ad71p-1,
+    -0x1.000002p-6
+  },
+  { // Entry 183
+    0x1.fa7c1819e90d82e90a7e74b263c1dc06p-1,
+    -0x1.p-6
+  },
+  { // Entry 184
+    0x1.fa7c181f6553a05107e91b90eea42d9dp-1,
+    -0x1.fffffep-7
+  },
+  { // Entry 185
+    0x1.fd3c22b37338eec4260da36a7b7f5bf3p-1,
+    -0x1.000002p-7
+  },
+  { // Entry 186
+    0x1.fd3c22b8f71f10975ba4b32bcf3a5e12p-1,
+    -0x1.p-7
+  },
+  { // Entry 187
+    0x1.fd3c22bbb9122186b26b482799ce40c7p-1,
+    -0x1.fffffep-8
+  },
+  { // Entry 188
+    0x1.fe9d96afde6082f2254715efc5f6ad7ep-1,
+    -0x1.000002p-8
+  },
+  { // Entry 189
+    0x1.fe9d96b2a23d914a6037442fde31baf8p-1,
+    -0x1.p-8
+  },
+  { // Entry 190
+    0x1.fe9d96b4042c1877edacd889b36d1cd5p-1,
+    -0x1.fffffep-9
+  },
+  { // Entry 191
+    0x1.ff4eaca2d6b2175e4332494fb1c24589p-1,
+    -0x1.000002p-9
+  },
+  { // Entry 192
+    0x1.ff4eaca4391b5da33e743691f7298b12p-1,
+    -0x1.p-9
+  },
+  { // Entry 193
+    0x1.ff4eaca4ea5000c618347451421210cbp-1,
+    -0x1.fffffep-10
+  },
+  { // Entry 194
+    0x1.ffa74ea2d09c67341271213869921167p-1,
+    -0x1.000002p-10
+  },
+  { // Entry 195
+    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
+    -0x1.p-10
+  },
+  { // Entry 196
+    0x1.ffa74ea3da996f8989012938d02dddfep-1,
+    -0x1.fffffep-11
+  },
+  { // Entry 197
+    0x1.fff4e8fd29da44c6f05c4a5baf1c2bedp-1,
+    -0x1.000002p-13
+  },
+  { // Entry 198
+    0x1.fff4e8fd40080cc8471f25ef2480b00bp-1,
+    -0x1.p-13
+  },
+  { // Entry 199
+    0x1.fff4e8fd4b1ef0c8f2dcd0f35ca5afeep-1,
+    -0x1.fffffep-14
+  },
+  { // Entry 200
+    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
+    0x1.fffffep-2
+  },
+  { // Entry 201
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p-1
+  },
+  { // Entry 202
+    0x1.6a09e762e5efbbd7217018250a3ab194p0,
+    0x1.000002p-1
+  },
+  { // Entry 203
+    0x1.306fe06e5a2f2e8c620f7e55cc803dbap0,
+    0x1.fffffep-3
+  },
+  { // Entry 204
+    0x1.306fe0a31b7152de8d5a46305c85edecp0,
+    0x1.p-2
+  },
+  { // Entry 205
+    0x1.306fe10c9df5b6efbd400b7806005fa9p0,
+    0x1.000002p-2
+  },
+  { // Entry 206
+    0x1.172b83afa4e77ab9fb14ed6d59000b58p0,
+    0x1.fffffep-4
+  },
+  { // Entry 207
+    0x1.172b83c7d517adcdf7c8c50eb14a7920p0,
+    0x1.p-3
+  },
+  { // Entry 208
+    0x1.172b83f835781a3f7a959adc6f517010p0,
+    0x1.000002p-3
+  },
+  { // Entry 209
+    0x1.0b5586c403bc8139197ebf6ce09ca7f8p0,
+    0x1.fffffep-5
+  },
+  { // Entry 210
+    0x1.0b5586cf9890f6298b92b71842a98364p0,
+    0x1.p-4
+  },
+  { // Entry 211
+    0x1.0b5586e6c239e18bc2c6e6800e1a354ep0,
+    0x1.000002p-4
+  },
+  { // Entry 212
+    0x1.059b0d2badb0e674d86f3abe58578c7dp0,
+    0x1.fffffep-6
+  },
+  { // Entry 213
+    0x1.059b0d31585743ae7c548eb68ca417fep0,
+    0x1.p-5
+  },
+  { // Entry 214
+    0x1.059b0d3cada3fe80087460f12b3f85d7p0,
+    0x1.000002p-5
+  },
+  { // Entry 215
+    0x1.02c9a3e4aa830d8834bdc95da605d425p0,
+    0x1.fffffep-7
+  },
+  { // Entry 216
+    0x1.02c9a3e778060ee6f7caca4f7a29bde9p0,
+    0x1.p-6
+  },
+  { // Entry 217
+    0x1.02c9a3ed130c11bbcdfd15f6cb45777ap0,
+    0x1.000002p-6
+  },
+  { // Entry 218
+    0x1.0163da9e4e61d5676fd32618f2719b20p0,
+    0x1.fffffep-8
+  },
+  { // Entry 219
+    0x1.0163da9fb33356d84a66ae336dcdfa40p0,
+    0x1.p-7
+  },
+  { // Entry 220
+    0x1.0163daa27cd659bfcb8505a08a66849ap0,
+    0x1.000002p-7
+  },
+  { // Entry 221
+    0x1.00b1afa4f9deabc72f2d49f63a281424p0,
+    0x1.fffffep-9
+  },
+  { // Entry 222
+    0x1.00b1afa5abcbed6129ab13ec11dc9544p0,
+    0x1.p-8
+  },
+  { // Entry 223
+    0x1.00b1afa70fa6709690a3abda4929ec25p0,
+    0x1.000002p-8
+  },
+  { // Entry 224
+    0x1.0058c86d48e8cd9376c92f8fe93335b6p0,
+    0x1.fffffep-10
+  },
+  { // Entry 225
+    0x1.0058c86da1c09ea1ff19d294cf2f679cp0,
+    0x1.p-9
+  },
+  { // Entry 226
+    0x1.0058c86e537040bf6c1a50920426e07fp0,
+    0x1.000002p-9
+  },
+  { // Entry 227
+    0x1.002c605e0228b5b870970538ff3283dcp0,
+    0x1.fffffep-11
+  },
+  { // Entry 228
+    0x1.002c605e2e8cec506d21bfc89a23a010p0,
+    0x1.p-10
+  },
+  { // Entry 229
+    0x1.002c605e875559807d4b02cd5ace5723p0,
+    0x1.000002p-10
+  },
+  { // Entry 230
+    0x1.00058ba01a2e49ed9aec7e37918c1a4ap0,
+    0x1.fffffep-14
+  },
+  { // Entry 231
+    0x1.00058ba01fb9f96d6cacd4b180917c3ep0,
+    0x1.p-13
+  },
+  { // Entry 232
+    0x1.00058ba02ad1586d1089c2dee94ea420p0,
+    0x1.000002p-13
+  },
+  { // Entry 233
+    0.0f,
+    -0x1.2a0002p7
+  },
+  { // Entry 234
+    0x1.p-149,
+    -0x1.2ap7
+  },
+  { // Entry 235
+    0x1.0000b17255775c040618bf4a4ade83fcp-149,
+    -0x1.29fffep7
+  },
+  { // Entry 236
+    0.0f,
+    -0x1.2c0002p7
+  },
+  { // Entry 237
+    0.0f,
+    -0x1.2cp7
+  },
+  { // Entry 238
+    0.0f,
+    -0x1.2bfffep7
+  },
+  { // Entry 239
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 240
+    0.0,
+    -HUGE_VALF
+  },
+  { // Entry 241
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 242
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 243
+    0x1.1a66390580a2c585f3de207decb2766dp3,
+    0x1.921fb6p1
+  },
+  { // Entry 244
+    0x1.d02319fe0cc8c798aae9bec1c301fce2p-4,
+    -0x1.921fb6p1
+  },
+  { // Entry 245
+    0x1.7c3f74a733d032aa52d1a81682e9aa9cp1,
+    0x1.921fb6p0
+  },
+  { // Entry 246
+    0x1.58b3935bc68e5b61b8988445da3312edp-2,
+    -0x1.921fb6p0
+  },
+  { // Entry 247
+    0x1.00000162e430e5a18f6119e3c02282a5p1,
+    0x1.000002p0
+  },
+  { // Entry 248
+    0x1.fffffd3a37a20cb4a12e24eaf25e3907p-2,
+    -0x1.000002p0
+  },
+  { // Entry 249
+    0x1.p1,
+    0x1.p0
+  },
+  { // Entry 250
+    0x1.p-1,
+    -0x1.p0
+  },
+  { // Entry 251
+    0x1.fffffe9d1bd08b5b58ee4879a122966ep0,
+    0x1.fffffep-1
+  },
+  { // Entry 252
+    0x1.000000b1721835514b86e6d96efd1bffp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 253
+    0x1.b93bbff5a7e572bcd51227c9b33976f0p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 254
+    0x1.290ee65a6808cb3ac67a086b51909f9dp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 255
+    0x1.00000000000000000000000000000002p0,
+    0x1.p-126
+  },
+  { // Entry 256
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.p-126
+  },
+  { // Entry 257
+    0x1.00000000000000000000000000000002p0,
+    0x1.000002p-126
+  },
+  { // Entry 258
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.000002p-126
+  },
+  { // Entry 259
+    0x1.00000000000000000000000000000002p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 260
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 261
+    0x1.00000000000000000000000000000002p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 262
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.fffff8p-127
+  },
+  { // Entry 263
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 264
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-148
+  },
+  { // Entry 265
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 266
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 267
+    0x1.p0,
+    0.0f
+  },
+  { // Entry 268
+    0x1.p0,
+    -0.0f
+  },
+  { // Entry 269
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p127,
+    0x1.fffffep6
+  },
+  { // Entry 270
+    HUGE_VALF,
+    0x1.p7
+  },
+  { // Entry 271
+    0x1.p-126,
+    -0x1.f8p6
+  },
+  { // Entry 272
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p-127,
+    -0x1.f80002p6
+  },
+  { // Entry 273
+    0x1.p125,
+    0x1.f4p6
+  },
+  { // Entry 274
+    0x1.p-125,
+    -0x1.f4p6
+  },
+  { // Entry 275
+    0x1.p2,
+    0x1.p1
+  },
+  { // Entry 276
+    0x1.p-2,
+    -0x1.p1
+  }
+};
diff --git a/tests/math_data/exp_intel_data.h b/tests/math_data/exp_intel_data.h
new file mode 100644
index 0000000..0ca3813
--- /dev/null
+++ b/tests/math_data/exp_intel_data.h
@@ -0,0 +1,1954 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_exp_intel_data[] = {
+  { // Entry 0
+    0x1.0000000000001fffffffffffffffffffp0,
+    0x1.ffffffffffffep-52
+  },
+  { // Entry 1
+    0x1.000000000011ffffffffffffffffffffp0,
+    0x1.1ffffffffff5ep-44
+  },
+  { // Entry 2
+    0x1.000000000207fffffffffffffffffd34p0,
+    0x1.03fffffffef7fp-39
+  },
+  { // Entry 3
+    0x1.00000000c1b59800000000000027a7d5p0,
+    0x1.836b2fff6d6cbp-33
+  },
+  { // Entry 4
+    0x1.000000033d397800000000000002a51dp0,
+    0x1.9e9cbbfd6080bp-31
+  },
+  { // Entry 5
+    0x1.003af6c37c1d3000000000000009446ep0,
+    0x1.d77fd13d27fffp-11
+  },
+  { // Entry 6
+    0x1.016b4df3299d77ffffffffffffe83e10p0,
+    0x1.6a4d1af9cc989p-8
+  },
+  { // Entry 7
+    0x1.0ca4a41663fe07ffffffffffffdab235p0,
+    0x1.8ae823850230bp-5
+  },
+  { // Entry 8
+    0x1.1538ea18a4585000000000000039e054p0,
+    0x1.46370d915991bp-4
+  },
+  { // Entry 9
+    0x1.47408cb9583ce00000000000002c896fp0,
+    0x1.f6e4c3ced7c72p-3
+  },
+  { // Entry 10
+    0x1.27c2e4bc1ee707ffffffffffffeb0c2dp1,
+    0x1.accfbe46b4ef0p-1
+  },
+  { // Entry 11
+    0x1.557d4acd7e5568000000000000202c86p2,
+    0x1.aca7ae8da5a7bp0
+  },
+  { // Entry 12
+    0x1.91a8dff540ff700000000000002f1e33p2,
+    0x1.d6336a88077aap0
+  },
+  { // Entry 13
+    0x1.8ede492d96071fffffffffffff0aecd2p3,
+    0x1.42ee3c7dc4946p1
+  },
+  { // Entry 14
+    0x1.ac50b409c8aee0000000000000022ce3p8,
+    0x1.83d4bcdebb3f4p2
+  },
+  { // Entry 15
+    0x1.f3e558cf4de5400000000000001f5808p-23,
+    -0x1.e8bdbfcd9144ep3
+  },
+  { // Entry 16
+    0x1.951c6dc5d24e27ffffffffffffb6e0c3p-9,
+    -0x1.71e0b869b5e79p2
+  },
+  { // Entry 17
+    0x1.1064b2c103dda80000000000003eb5d7p-3,
+    -0x1.02393d5976769p1
+  },
+  { // Entry 18
+    0x1.3ef1e9b3a81c7fffffffffffffc315p-2,
+    -0x1.2a9cad9998262p0
+  },
+  { // Entry 19
+    0x1.534d4de87071300000000000003c6fb7p-3,
+    -0x1.cc37ef7de7501p0
+  },
+  { // Entry 20
+    0x1.2217147b85ea980000000000007745a3p-1,
+    -0x1.22e24fa3d5cf9p-1
+  },
+  { // Entry 21
+    0x1.9403fd0ee51c800000000000007720f1p-2,
+    -0x1.dc2b5df1f7d3dp-1
+  },
+  { // Entry 22
+    0x1.baded30cbf1c3ffffffffffffffbd904p-1,
+    -0x1.290ea09e36479p-3
+  },
+  { // Entry 23
+    0x1.ffe5d0bb7eabf0000000000000030320p-1,
+    -0x1.a2fefefd580dfp-13
+  },
+  { // Entry 24
+    0x1.ffffff84b39c4fffffffffffffff17f4p-1,
+    -0x1.ed318efb627eap-27
+  },
+  { // Entry 25
+    0x1.fffffffad0ae6800000000000009f1a8p-1,
+    -0x1.4bd46601ae1efp-31
+  },
+  { // Entry 26
+    0x1.ffffffffff7000000000000000000003p-1,
+    -0x1.2000000000288p-42
+  },
+  { // Entry 27
+    0x1.fffffffffffdp-1,
+    -0x1.8000000000012p-48
+  },
+  { // Entry 28
+    0x1.ffffffffffffc0p-1,
+    -0x1.0000000000001p-51
+  },
+  { // Entry 29
+    0x1.0000000000000fffffffffffffffffffp0,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 30
+    0x1.000000000001ffffffffffffffffffffp0,
+    0x1.fffffffffffe0p-48
+  },
+  { // Entry 31
+    0x1.000000017ffe80000000000000035ffdp0,
+    0x1.7ffe7ffee0024p-32
+  },
+  { // Entry 32
+    0x1.0000000180017ffffffffffffffc9ffdp0,
+    0x1.80017ffedffdcp-32
+  },
+  { // Entry 33
+    0x1.00000075e9f6400000000000000b1e80p0,
+    0x1.d7a7d893609e5p-26
+  },
+  { // Entry 34
+    0x1.0006e83736f8c80000000000000aa0afp0,
+    0x1.ba07d73250de7p-14
+  },
+  { // Entry 35
+    0x1.de7cd6751029a0000000000000e8bb2fp16,
+    0x1.76e7e5d7b6eacp3
+  },
+  { // Entry 36
+    0x1.1d71965f516ad80000000000009f7e97p19,
+    0x1.a8ead058bc6b8p3
+  },
+  { // Entry 37
+    0x1.a8c02e974c314fffffffffffffe21f03p25,
+    0x1.1d5c2daebe367p4
+  },
+  { // Entry 38
+    0x1.b890ca8637ae1fffffffffffffe42161p40,
+    0x1.c44ce0d716a1ap4
+  },
+  { // Entry 39
+    0x1.f03f56a88b5d781c905f6b51c76ae981p-1,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 40
+    0x1.ff003ff556aa87ebb06e0eb57287567fp-1,
+    -0x1.000000000000ap-9
+  },
+  { // Entry 41
+    0x1.8ebef9eac81fc8001a3dbd88248efe13p-1,
+    -0x1.0000000000025p-2
+  },
+  { // Entry 42
+    0x1.fc03fd56a469b800008bcdfe018dbc74p-1,
+    -0x1.0000000171051p-7
+  },
+  { // Entry 43
+    0x1.78b5612dbee010008d3bc0735c80f7a8p-2,
+    -0x1.0000018p0
+  },
+  { // Entry 44
+    0x1.969c870ea9f5a801ddc1ff08a008db09p-93,
+    -0x1.000001e3ep6
+  },
+  { // Entry 45
+    0x1.78af867bc511d321cd454dbddaf806bcp-2,
+    -0x1.0003fc0p0
+  },
+  { // Entry 46
+    0x1.fffffffffefff8000000000400100015p-1,
+    -0x1.00080000004p-41
+  },
+  { // Entry 47
+    0x1.789214093c81d3b65fac659fb3fc8249p-2,
+    -0x1.00180p0
+  },
+  { // Entry 48
+    0x1.8e298e52fcce88014ad95c4f3bd88765p-1,
+    -0x1.018p-2
+  },
+  { // Entry 49
+    0x1.aa6ffb0ba519f801f9c3e146a15dc02cp-24,
+    -0x1.02010p4
+  },
+  { // Entry 50
+    0x1.dd7a46b8d85d67d67359337109c25168p-376,
+    -0x1.040p8
+  },
+  { // Entry 51
+    0x1.33e96ca3bcf3e801f9b3f6126fc60699p-1,
+    -0x1.045b948724130p-1
+  },
+  { // Entry 52
+    0x1.ef2f652dc26057fffc98aa54d4c33c16p-1,
+    -0x1.118e05cfa3e80p-5
+  },
+  { // Entry 53
+    0x1.a5d2ce977bbe28048b316927f970c201p-7,
+    -0x1.169156e17b9b9p2
+  },
+  { // Entry 54
+    0x1.a0207cf4190f700452282b04fa390407p-7,
+    -0x1.17701b3bf0502p2
+  },
+  { // Entry 55
+    0x1.fb97e1ff8cbba7adf16f3fbd6878f560p-1,
+    -0x1.1b4p-7
+  },
+  { // Entry 56
+    0x1.bcff09ae30c46804a6fafd550766eed2p-1,
+    -0x1.1f4p-3
+  },
+  { // Entry 57
+    0x1.fee70cf5e86ef4e54d0b1fa2701a346fp-833,
+    -0x1.2059ad42c3cf7p9
+  },
+  { // Entry 58
+    0x1.7ccd3f33407458011470b3f67197a9c8p-1,
+    -0x1.2f269d2ca38d2p-2
+  },
+  { // Entry 59
+    0x1.09cdb36e977bc7ffffe6d4ddbb18d553p-14,
+    -0x1.3553cf1828b0bp3
+  },
+  { // Entry 60
+    0x1.f9dc5cd546d9b800dc3d95519dc67ee8p-449,
+    -0x1.368ac083128fcp8
+  },
+  { // Entry 61
+    0x1.f1c53c907f6f576e62e401315bafc69ep-15,
+    -0x1.376e8f679ae16p3
+  },
+  { // Entry 62
+    0x1.f24595954e6618028965a9d67edeaf7bp-8,
+    -0x1.3844f67495f7dp2
+  },
+  { // Entry 63
+    0x1.fb56521290a222527d1d3c3638265f46p-905,
+    -0x1.394e9e1b089d7p9
+  },
+  { // Entry 64
+    0x1.dc1658ff6e0707fafd2fd8306c4b1897p-114,
+    -0x1.3997ea51e5271p6
+  },
+  { // Entry 65
+    0x1.ec8b3c090f8b97716a3d38de46d68a1ep-1,
+    -0x1.3d5de560e1906p-5
+  },
+  { // Entry 66
+    0x1.af411bf985220b562909c652c087fef4p-951,
+    -0x1.4954aa552a960p9
+  },
+  { // Entry 67
+    0x1.e1b71d238d5077fe3bea222fcba15608p-957,
+    -0x1.4b5ad6a9ad6adp9
+  },
+  { // Entry 68
+    0x1.cc666a3519ca080f1daef57f92b41d29p-973,
+    -0x1.50ec32686a834p9
+  },
+  { // Entry 69
+    0x1.22462bd5f72b0fffa6085b04427fdf5dp-976,
+    -0x1.52316872b0222p9
+  },
+  { // Entry 70
+    0x1.c1ebc18610301fff2424bc3936260dd2p-981,
+    -0x1.53b4ed3b4ec77p9
+  },
+  { // Entry 71
+    0x1.8d015bcaf9e18b57fdf057239d94f586p-981,
+    -0x1.53c4f13c4f079p9
+  },
+  { // Entry 72
+    0x1.fd5835460ed48c4e14207309a1237f90p-989,
+    -0x1.566ad4a41bec0p9
+  },
+  { // Entry 73
+    0x1.58733fbc088ef7ff38e15f94166c022cp-994,
+    -0x1.585883e7b3b38p9
+  },
+  { // Entry 74
+    0x1.b052090690481802acf0169f62bf32c9p-32,
+    -0x1.5a81ecf68beccp4
+  },
+  { // Entry 75
+    0x1.df6154bc644dac0f9e3a56646948b7c5p-1015,
+    -0x1.5f75629af4eb7p9
+  },
+  { // Entry 76
+    0x1.ff4b0da37083502c114a7ac56ac0498fp-1023,
+    -0x1.6232eb1c432f2p9
+  },
+  { // Entry 77
+    0x1.625edd4c7513e842f27a931c2bbe007cp-1023,
+    -0x1.6261d7dbf48ccp9
+  },
+  { // Entry 78
+    0x1.d572d24973be20006bad92e29bcba984p-1,
+    -0x1.6364b8f747e32p-4
+  },
+  { // Entry 79
+    0x1.ee4dd792245778020250f8981d1a0ad1p-9,
+    -0x1.6524796b40895p2
+  },
+  { // Entry 80
+    0x1.f660c59b294505d8989f85f8ed2a1878p-5,
+    -0x1.6551daae369cep1
+  },
+  { // Entry 81
+    0x1.aa070449efffe9b910657898cdc0ccddp-1037,
+    -0x1.672463f141607p9
+  },
+  { // Entry 82
+    0x1.d4e7fc331b7327ffccf4ee0c59aa7b22p-1,
+    -0x1.6820c99c1dc16p-4
+  },
+  { // Entry 83
+    0x1.fcc448acf476575c66ee396912dbaacdp-528,
+    -0x1.6d4b7e82c3f02p8
+  },
+  { // Entry 84
+    0x1.7fff5a1bffcb2062c9aaa5b07d097255p-529,
+    -0x1.6e44f765fda76p8
+  },
+  { // Entry 85
+    0x1.fa4ecd8ae57187fffffff9910c476c64p-1,
+    -0x1.6e56e725b8304p-7
+  },
+  { // Entry 86
+    0x1.e8d2dafd017ce8032bcb89459464fe7dp-3,
+    -0x1.6ecp0
+  },
+  { // Entry 87
+    0x1.214e34caac9e67139688ad1632dd2055p-1062,
+    -0x1.7p9
+  },
+  { // Entry 88
+    0x1.c87f21775a482a09a44af59c3c3ae44bp-1071,
+    -0x1.72e42p9
+  },
+  { // Entry 89
+    0x1.a349b2329c6777ffce65934b3b6203a7p-273,
+    -0x1.7978bac71121cp7
+  },
+  { // Entry 90
+    0x1.d2a6d5ea995c17ab448132e1e0453805p-1,
+    -0x1.7bde79e0f970cp-4
+  },
+  { // Entry 91
+    0x1.b776dc64c76d197e8c644dc8cb509c4ap-3,
+    -0x1.8a0p0
+  },
+  { // Entry 92
+    0x1.4446fcf7da689802d8c725db8c1145afp-72,
+    -0x1.8d5c84f0bac8cp5
+  },
+  { // Entry 93
+    0x1.e72a0b68bb82b78ce0524d1abb6f7abep-73,
+    -0x1.8fa68b4447230p5
+  },
+  { // Entry 94
+    0x1.fc33d5e1ca6df7d5069b03dc5a683e4fp-75,
+    -0x1.9a671693b946bp5
+  },
+  { // Entry 95
+    0x1.e6981fd6ef79c7fffffcc7201f82fd49p-1,
+    -0x1.a0ec89f897a75p-5
+  },
+  { // Entry 96
+    0x1.f2b9d3b6cf2277a1283f8e00743a0669p-1,
+    -0x1.ae6p-6
+  },
+  { // Entry 97
+    0x1.e5034c8d191bbfff719f2098e33c0577p-1,
+    -0x1.bb9706e2f1bb4p-5
+  },
+  { // Entry 98
+    0x1.f24dc90f9fbeb8028fbcaeebabc7e9fcp-1,
+    -0x1.bc3edad2e1efbp-6
+  },
+  { // Entry 99
+    0x1.71f237d64a6eb46aa154476fd0fc3886p-11,
+    -0x1.d0697edbe0052p2
+  },
+  { // Entry 100
+    0x1.f12c0d3addaa48004b23516d2a113804p-1,
+    -0x1.e18p-6
+  },
+  { // Entry 101
+    0x1.f110dd9073d71800bb4056830b517b08p-1,
+    -0x1.e50p-6
+  },
+  { // Entry 102
+    0x1.f3aa7a860574c2b0783061fe1fd1df2ep-705,
+    -0x1.e7fffffffffffp8
+  },
+  { // Entry 103
+    0x1.f0f898d55117081fc3b8792205e4e130p-1,
+    -0x1.e82p-6
+  },
+  { // Entry 104
+    0x1.ff814fff18dac854185d019b0f8ead36p-1,
+    -0x1.fafebfafebfb0p-11
+  },
+  { // Entry 105
+    0x1.ffffffff01c0701c46208c5416d943adp-1,
+    -0x1.fc7f1fc7f20p-34
+  },
+  { // Entry 106
+    0x1.7907d4148bd91687a1b50f26e8830775p-2,
+    -0x1.ff8ffffffffffp-1
+  },
+  { // Entry 107
+    0x1.ffffffffffff801c0000000013f900c3p-1,
+    -0x1.ff8ffffffffffp-51
+  },
+  { // Entry 108
+    0x1.e0fbb03a0c27d7e84804cadec377bdf9p-1,
+    -0x1.ffeffffffffffp-5
+  },
+  { // Entry 109
+    0x1.ffffffffff00080000004004000ffff5p-1,
+    -0x1.ffeffffffffffp-42
+  },
+  { // Entry 110
+    0x1.ffffffffff0007fffffffffc00100015p-1,
+    -0x1.fff00000008p-42
+  },
+  { // Entry 111
+    0x1.ffffffffffffffffffffffffe000719ep-1,
+    -0x1.fff8e61eadd48p-101
+  },
+  { // Entry 112
+    0x1.fffffffffc00080000040010000ffd55p-1,
+    -0x1.fffbfffffffffp-40
+  },
+  { // Entry 113
+    0x1.fffffffffc00001c0004001fc7fffe19p-1,
+    -0x1.fffff1fffffffp-40
+  },
+  { // Entry 114
+    0x1.ff800ffeaac008589f9a96af73eaff67p-1,
+    -0x1.ffffffffffda5p-11
+  },
+  { // Entry 115
+    0x1.e355bbaee8d85815e4b476b704d0f4f1p-24,
+    -0x1.fffffffffff7dp3
+  },
+  { // Entry 116
+    0x1.78b56362cef3da984453d1c72c344a31p-2,
+    -0x1.ffffffffffff8p-1
+  },
+  { // Entry 117
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 118
+    0x1.42eb9f39afbac7e5e73c32a21e853f26p-185,
+    -0x1.ffffffffffffep6
+  },
+  { // Entry 119
+    0x1.0000000000000800000000000020p0,
+    0x1.0p-53
+  },
+  { // Entry 120
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp184,
+    0x1.0p7
+  },
+  { // Entry 121
+    0x1.9476504ba885758aa5fa7545e10e8e46p738,
+    0x1.0000000000001p9
+  },
+  { // Entry 122
+    0x1.0100802ab5577802ba424ad46b106a66p0,
+    0x1.0000000000003p-8
+  },
+  { // Entry 123
+    0x1.0000004000000800001caaaab1b55556p0,
+    0x1.0000000000007p-26
+  },
+  { // Entry 124
+    0x1.d8e64b8f26c128517489a490e684d8a8p2,
+    0x1.000000008p1
+  },
+  { // Entry 125
+    0x1.749ea7e015bc1dddfa19fbb3cf8bded4p11,
+    0x1.000000010p3
+  },
+  { // Entry 126
+    0x1.0f2ebd2c65d9a80081ac2e65e8025ab1p23,
+    0x1.000000020p4
+  },
+  { // Entry 127
+    0x1.0f2ec1473afea8081fa4566927a4cfd3p23,
+    0x1.0000004p4
+  },
+  { // Entry 128
+    0x1.0000000001000800000080080020002ap0,
+    0x1.00080p-40
+  },
+  { // Entry 129
+    0x1.00000000008008000000200400200005p0,
+    0x1.001p-41
+  },
+  { // Entry 130
+    0x1.000000000000080080000000002004p0,
+    0x1.001p-53
+  },
+  { // Entry 131
+    0x1.a8bf81a597edd223f2db6ebfe2eb1cc1p184,
+    0x1.00173eab3623ap7
+  },
+  { // Entry 132
+    0x1.75e54175aabb37fff5e5b44ba0f101b7p11,
+    0x1.001c0p3
+  },
+  { // Entry 133
+    0x1.60008fbed6c5280206e79909321d09c8p1,
+    0x1.02f8af8af8affp0
+  },
+  { // Entry 134
+    0x1.04184bb80ff43fffc89c53f1ee04ce04p0,
+    0x1.040p-6
+  },
+  { // Entry 135
+    0x1.00000840002208005d9600c105613e7cp0,
+    0x1.080p-21
+  },
+  { // Entry 136
+    0x1.2338ab9b7432080000000973938bacb0p0,
+    0x1.08000001d0fc8p-3
+  },
+  { // Entry 137
+    0x1.acc91bfa7c54c8036548c968b36e5750p0,
+    0x1.0814419d6a65ap-1
+  },
+  { // Entry 138
+    0x1.a4e4693413b9970755c15633af25f96bp400,
+    0x1.15c18de877563p8
+  },
+  { // Entry 139
+    0x1.000000000000480000000000061fffffp0,
+    0x1.1ffffffffffffp-50
+  },
+  { // Entry 140
+    0x1.eaa521edf1bc28014602191ce618c05fp846,
+    0x1.2586ca9cf411bp9
+  },
+  { // Entry 141
+    0x1.fca9c47016cb17617b275b298cf9f894p26,
+    0x1.2b55c037ebb9dp4
+  },
+  { // Entry 142
+    0x1.fcbb1e5c8d53575abc78726f5cea6f51p26,
+    0x1.2b564bee0a6cap4
+  },
+  { // Entry 143
+    0x1.cc0f9d911f1d1002cf0af382fdf62f02p0,
+    0x1.2c2p-1
+  },
+  { // Entry 144
+    0x1.b68a28b09fe947fdf00104f6d8c24801p6,
+    0x1.2c9e33f794769p2
+  },
+  { // Entry 145
+    0x1.d2e035b1892d6802a9c9e288d8e97c98p0,
+    0x1.33a74ff06fb66p-1
+  },
+  { // Entry 146
+    0x1.6acde844356c921fa99313aa18670593p3,
+    0x1.36cce3c3925p1
+  },
+  { // Entry 147
+    0x1.06dadee28c11c800fb9094435c1de727p7,
+    0x1.38389c48b0fcep2
+  },
+  { // Entry 148
+    0x1.c78f37f07cea6426ed5548b4a31d4ac2p904,
+    0x1.3997381d7d94fp9
+  },
+  { // Entry 149
+    0x1.bfe0c519166c47fe3a4b34e6c34b5ae4p1,
+    0x1.40a339c81cecbp0
+  },
+  { // Entry 150
+    0x1.fbc9c30603087488a3d92265b53c2a65p927,
+    0x1.419dbcc486770p9
+  },
+  { // Entry 151
+    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p930,
+    0x1.42a565e456e04p9
+  },
+  { // Entry 152
+    0x1.da134d5a4d1e1800c436544994058ce6p934,
+    0x1.44020100804p9
+  },
+  { // Entry 153
+    0x1.f4ec44194b642801a4afd4c50633e8aap938,
+    0x1.456bf23e02428p9
+  },
+  { // Entry 154
+    0x1.ea91d9533b394801bf3d3ec8f88de568p939,
+    0x1.45c1feef8086cp9
+  },
+  { // Entry 155
+    0x1.cb419b9279b35763d113e6c5db79dc54p943,
+    0x1.471c71c71c71cp9
+  },
+  { // Entry 156
+    0x1.6d14308828321de6fe67a4136f17d1f8p29,
+    0x1.474c9cc44cc25p4
+  },
+  { // Entry 157
+    0x1.c0194b4186e2780120b873d72456ecddp956,
+    0x1.4b9ab17812030p9
+  },
+  { // Entry 158
+    0x1.15c605853476b80008cabc4b207ffd1fp0,
+    0x1.4e59dc7e2b053p-4
+  },
+  { // Entry 159
+    0x1.6dee38735a6d3800d8ec117683275f3ap972,
+    0x1.510c5465d984bp9
+  },
+  { // Entry 160
+    0x1.f1e96be2a52cd777e8cf54184ed7ae48p0,
+    0x1.549b0f5742382p-1
+  },
+  { // Entry 161
+    0x1.f253c5990aad2800004db615b1148476p0,
+    0x1.55085fb86501ap-1
+  },
+  { // Entry 162
+    0x1.279b1c43a26617ff4c7508c35e562b22p993,
+    0x1.58383126e94bfp9
+  },
+  { // Entry 163
+    0x1.6fd5ab59153f32a4a383710a3419f57dp996,
+    0x1.595e5795e592bp9
+  },
+  { // Entry 164
+    0x1.5ecf1876539547ffd612e5c4b715c8adp1004,
+    0x1.5c1e0f0783c10p9
+  },
+  { // Entry 165
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1008,
+    0x1.5dadf5d1e452cp9
+  },
+  { // Entry 166
+    0x1.edcb14879613e80176087c1a76dec97cp1009,
+    0x1.5e056ed40e56ep9
+  },
+  { // Entry 167
+    0x1.fcc7e5ca80b1f75c14d762f846bc1669p0,
+    0x1.5fa97bb4e9060p-1
+  },
+  { // Entry 168
+    0x1.f8b5c987a3d877e18bfcada50f1c54b0p3,
+    0x1.610e47e1325dcp1
+  },
+  { // Entry 169
+    0x1.f1e9d8cf24fcd8025127877a738eb2d1p7,
+    0x1.611b19dcc53e4p2
+  },
+  { // Entry 170
+    0x1.ffc045692e8a039c5622b8219f19c619p1023,
+    0x1.62e41fffffffap9
+  },
+  { // Entry 171
+    0x1.ffc045693009d3d065062f9267dff55ep1023,
+    0x1.62e42p9
+  },
+  { // Entry 172
+    0x1.ffc04569a2fb83679239091df068997ep1023,
+    0x1.62e42000001ccp9
+  },
+  { // Entry 173
+    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1023,
+    0x1.62e42fefa39eap9
+  },
+  { // Entry 174
+    0x1.00000b40003f4800ed4e029b6b65ddb1p0,
+    0x1.680p-21
+  },
+  { // Entry 175
+    0x1.17e62f70bec99801a2936e89b54c5256p8,
+    0x1.689a7dc5921b8p2
+  },
+  { // Entry 176
+    0x1.6daaa1336a31500174ca0be569806fdep264,
+    0x1.6eb1de69ace32p7
+  },
+  { // Entry 177
+    0x1.72a9dadea7498c95a514c01d5403e5d0p0,
+    0x1.7b0p-2
+  },
+  { // Entry 178
+    0x1.1ed3fe64fc539800f9cd34ec4c83d9d1p2,
+    0x1.7fffffffffff9p0
+  },
+  { // Entry 179
+    0x1.000000000000180000000000001fffffp0,
+    0x1.7ffffffffffffp-52
+  },
+  { // Entry 180
+    0x1.fe31152b7ef6b1e0a8b9fec7ecdd85a4p553,
+    0x1.8p8
+  },
+  { // Entry 181
+    0x1.74d77b76d95163226caf84760a346abbp0,
+    0x1.810p-2
+  },
+  { // Entry 182
+    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp556,
+    0x1.820d92fc4b42ap8
+  },
+  { // Entry 183
+    0x1.00000000c1b59800000000000027a7d5p0,
+    0x1.836b2fff6d6cbp-33
+  },
+  { // Entry 184
+    0x1.78b69d690db792b574f904d2bb1e9ebep570,
+    0x1.8b7aee631f489p8
+  },
+  { // Entry 185
+    0x1.4dad95877ae078000012827fac891535p144,
+    0x1.905011e0df629p6
+  },
+  { // Entry 186
+    0x1.fcbb8778f61217665a6e6f2119880b29p144,
+    0x1.91fffp6
+  },
+  { // Entry 187
+    0x1.7a5b2771e0a16ce6ecd6de8573c11192p4,
+    0x1.94e54738fb4b7p1
+  },
+  { // Entry 188
+    0x1.7d676a26fe5caccea59b023540bec80fp0,
+    0x1.984p-2
+  },
+  { // Entry 189
+    0x1.698764128a4448010e251b55f37a7b6ep147,
+    0x1.98f381d7db44fp6
+  },
+  { // Entry 190
+    0x1.44e5a752f9e1efffb31481484aa7692ap9,
+    0x1.9e8186b267a28p2
+  },
+  { // Entry 191
+    0x1.8023d298e372f8020ec8cf4a70affa87p0,
+    0x1.9f91c1449c421p-2
+  },
+  { // Entry 192
+    0x1.df9bd06daf8ce7b123df43bb50109938p299,
+    0x1.9fc1f212d70f6p7
+  },
+  { // Entry 193
+    0x1.81a4fbca9dcdb800000ae068bc21c4f5p0,
+    0x1.a392789eafce9p-2
+  },
+  { // Entry 194
+    0x1.825f354ccf6f2fffab7e9eb828fbc67dp0,
+    0x1.a5807ca1392b2p-2
+  },
+  { // Entry 195
+    0x1.3c1e2876834aa7fa46011e98abeadf76p0,
+    0x1.bp-3
+  },
+  { // Entry 196
+    0x1.1c7e1aca53795fff54a5fdf5529261cap0,
+    0x1.b04p-4
+  },
+  { // Entry 197
+    0x1.a2d50b8b2880e801a27a34d1954dab50p331,
+    0x1.cbd917ccad096p7
+  },
+  { // Entry 198
+    0x1.419c8a8da1b79802e20296e5f9279626p1,
+    0x1.d7b677e333d38p-1
+  },
+  { // Entry 199
+    0x1.41d1b8b4649eb8000023f9776da9d645p1,
+    0x1.d80b1a6330bebp-1
+  },
+  { // Entry 200
+    0x1.bf3447921fd397fd6db462cd2fbb39fep10,
+    0x1.df50d9af9e410p2
+  },
+  { // Entry 201
+    0x1.9919794bc86298020a19588552ceae5cp0,
+    0x1.e0081ebc3264ep-2
+  },
+  { // Entry 202
+    0x1.76a62bad715b4800daadb6fc2b6e6166p5,
+    0x1.ec5bb209e5707p1
+  },
+  { // Entry 203
+    0x1.c701554c761aa80eedf2a49ef60e562cp2,
+    0x1.f62p0
+  },
+  { // Entry 204
+    0x1.c3dda3c952b918012fd79fbb8ea38f69p727,
+    0x1.f87c7820d8446p8
+  },
+  { // Entry 205
+    0x1.d28c6097b9d5578835e6cff1b19464cdp2,
+    0x1.fc89dc1aa909cp0
+  },
+  { // Entry 206
+    0x1.4231178c2348f5f77eedb27dc404f616p734,
+    0x1.fcfffffffffffp8
+  },
+  { // Entry 207
+    0x1.04034591911e77ff1834fd70d0bbb4b0p0,
+    0x1.fda6dfe27ffffp-7
+  },
+  { // Entry 208
+    0x1.a5b5691c4b0ef803cab2bad4a2013f14p0,
+    0x1.ff1dd1fffffffp-2
+  },
+  { // Entry 209
+    0x1.0000000000003ff20000000005fc8062p0,
+    0x1.ff8ffffffffffp-51
+  },
+  { // Entry 210
+    0x1.6d4fd9ab47c9200073aa8127a2419ac8p738,
+    0x1.ffe5effffffffp8
+  },
+  { // Entry 211
+    0x1.0000000000fff80000000000001fffaap0,
+    0x1.ffefffffff001p-41
+  },
+  { // Entry 212
+    0x1.74418bce788eb46746b38b578759ecc0p11,
+    0x1.ffeffffffffffp2
+  },
+  { // Entry 213
+    0x1.0000000000fff80000007ff80020002ap0,
+    0x1.fffp-41
+  },
+  { // Entry 214
+    0x1.0000000000fffff200007ff7f200008cp0,
+    0x1.ffffe3fffffffp-41
+  },
+  { // Entry 215
+    0x1.d8e64b8d2185281f984a4e51148dadecp2,
+    0x1.ffffffffe7fffp0
+  },
+  { // Entry 216
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 217
+    0x1.00000000000007ffffffffffff9fffffp0,
+    0x1.ffffffffffffep-54
+  },
+  { // Entry 218
+    0x1.00000000000007ffffffffffffdfffffp0,
+    0x1.fffffffffffffp-54
+  },
+  { // Entry 219
+    0x1.304d6aeca252531475ec9182369ba415p69,
+    0x1.7ffffffffffffp5
+  },
+  { // Entry 220
+    0x1.304d6aeca254b3af4bc5d6293d5f65c7p69,
+    0x1.8p5
+  },
+  { // Entry 221
+    0x1.304d6aeca257144a219f1ad50558d32cp69,
+    0x1.8000000000001p5
+  },
+  { // Entry 222
+    0x1.f8e6c24b558ef174995bcfad495149f5p-76,
+    -0x1.a000000000001p5
+  },
+  { // Entry 223
+    0x1.f8e6c24b5592e3421df27acf1e080144p-76,
+    -0x1.ap5
+  },
+  { // Entry 224
+    0x1.f8e6c24b5596d50fa28925f8d659c1bfp-76,
+    -0x1.9ffffffffffffp5
+  },
+  { // Entry 225
+    0x1.55779b984f395dea36a277b8bee2e64cp115,
+    0x1.3ffffffffffffp6
+  },
+  { // Entry 226
+    0x1.55779b984f3eb3c8a503b4a8e2489d98p115,
+    0x1.4p6
+  },
+  { // Entry 227
+    0x1.55779b984f4409a71364f1ae5d280e69p115,
+    0x1.4000000000001p6
+  },
+  { // Entry 228
+    0x1.07b7112bc1fbc2c0f9c1365330930310p-127,
+    -0x1.6000000000001p6
+  },
+  { // Entry 229
+    0x1.07b7112bc1ffe19d3e703e4a794f7372p-127,
+    -0x1.6p6
+  },
+  { // Entry 230
+    0x1.07b7112bc2040079831f46523d7cf692p-127,
+    -0x1.5ffffffffffffp6
+  },
+  { // Entry 231
+    0x1.40a4b9c27150866176d22f2139d1d40fp923,
+    0x1.3ffffffffffffp9
+  },
+  { // Entry 232
+    0x1.40a4b9c271789af8af205bb34f743337p923,
+    0x1.4p9
+  },
+  { // Entry 233
+    0x1.40a4b9c271a0af8fe76e8d47f7fd9c26p923,
+    0x1.4000000000001p9
+  },
+  { // Entry 234
+    0x1.44a3824e525d56fc3f02f886375ec876p-1016,
+    -0x1.6000000000001p9
+  },
+  { // Entry 235
+    0x1.44a3824e5285eb6c88cd46ba5deb457ap-1016,
+    -0x1.6p9
+  },
+  { // Entry 236
+    0x1.44a3824e52ae7fdcd2979a011280fbc8p-1016,
+    -0x1.5ffffffffffffp9
+  },
+  { // Entry 237
+    0x1.03996528e072b78a332480884c79baf7p75,
+    0x1.9ffffffffffffp5
+  },
+  { // Entry 238
+    0x1.03996528e074bebcfd76416fc2c0eb92p75,
+    0x1.ap5
+  },
+  { // Entry 239
+    0x1.03996528e076c5efc7c8025b476db0d0p75,
+    0x1.a000000000001p5
+  },
+  { // Entry 240
+    0x1.aebabae3a417ee6e7faf9ecfc951040cp-70,
+    -0x1.8000000000001p5
+  },
+  { // Entry 241
+    0x1.aebabae3a41b4be3f576e70303a37932p-70,
+    -0x1.8p5
+  },
+  { // Entry 242
+    0x1.aebabae3a41ea9596b3e2f3cf8e0d9e7p-70,
+    -0x1.7ffffffffffffp5
+  },
+  { // Entry 243
+    0x1.f1056dc7bf1b0fc857b67999f5035273p126,
+    0x1.5ffffffffffffp6
+  },
+  { // Entry 244
+    0x1.f1056dc7bf22d3de0ed57615bc501f8bp126,
+    0x1.6p6
+  },
+  { // Entry 245
+    0x1.f1056dc7bf2a97f3c5f472b093f3c91fp126,
+    0x1.6000000000001p6
+  },
+  { // Entry 246
+    0x1.7fd974d372de49099ee7bf48ae346eaap-116,
+    -0x1.4000000000001p6
+  },
+  { // Entry 247
+    0x1.7fd974d372e4486f72358acdd12690e5p-116,
+    -0x1.4p6
+  },
+  { // Entry 248
+    0x1.7fd974d372ea47d54583566af1b00056p-116,
+    -0x1.3ffffffffffffp6
+  },
+  { // Entry 249
+    0x1.93bf4ec282bd3b36cd2f4011488a8364p1015,
+    0x1.5ffffffffffffp9
+  },
+  { // Entry 250
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1015,
+    0x1.6p9
+  },
+  { // Entry 251
+    0x1.93bf4ec283222b0a7dcffbfe10b3e34ap1015,
+    0x1.6000000000001p9
+  },
+  { // Entry 252
+    0x1.98c72ca0cab14eda5aca97bee0fdd48fp-924,
+    -0x1.4000000000001p9
+  },
+  { // Entry 253
+    0x1.98c72ca0cae467bfeee3f11a4aa26f77p-924,
+    -0x1.4p9
+  },
+  { // Entry 254
+    0x1.98c72ca0cb1780a582fd50d8d0f98d8bp-924,
+    -0x1.3ffffffffffffp9
+  },
+  { // Entry 255
+    0x1.61013a44a981c910f20f80756007120ap-822,
+    -0x1.1cb90bfbe8e7cp9
+  },
+  { // Entry 256
+    0x1.8087717a7f08a7251210e71d47acc5e3p-905,
+    -0x1.397217f7d1cf8p9
+  },
+  { // Entry 257
+    0x1.a2de59d85452109f34165fa55f9e4e7bp-988,
+    -0x1.562b23f3bab73p9
+  },
+  { // Entry 258
+    0x1.fffffffffffff35793c76730080dfb9bp-2,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 259
+    0x1.00000000000001abc9e3b39803f45c1cp-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 260
+    0x1.00000000000009abc9e3b3980421ba6bp-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 261
+    0x1.6a09e667f3bcc48f0965009f2778df91p-1,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 262
+    0x1.6a09e667f3bcca3730fea06e1a966c06p-1,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 263
+    0x1.6a09e667f3bccfdf5898403d0dca9919p-1,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 264
+    0x1.ae89f995ad3ad33f3c451118e4ad74c5p-1,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 265
+    0x1.ae89f995ad3ad69c50383c735a575052p-1,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 266
+    0x1.ae89f995ad3ad9f9642b67cdd007e606p-1,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 267
+    0x1.d5818dcfba4870ea30f8974f369eab8cp-1,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 268
+    0x1.d5818dcfba4872bfb28667097f10807ep-1,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 269
+    0x1.d5818dcfba487495341436c3c7842af1p-1,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 270
+    0x1.ea4afa2a490d9797069887879b7c974ep-1,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 271
+    0x1.ea4afa2a490d988c2c159cac2248a01bp-1,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 272
+    0x1.ea4afa2a490d99815192b1d0a915237bp-1,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 273
+    0x1.f50765b6e4540611e065c14f105024cep-1,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 274
+    0x1.f50765b6e454068f223f2f082551b8efp-1,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 275
+    0x1.f50765b6e454070c64189cc13a536c5fp-1,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 276
+    0x1.059b0d315857435f6c51ceeb0a6b46e6p0,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 277
+    0x1.059b0d31585743a0d3151b41203c26eep0,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 278
+    0x1.059b0d31585743e239d86797360d174fp0,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 279
+    0x1.0b5586cf9890f587f5279294114165a2p0,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 280
+    0x1.0b5586cf9890f60d9feafa6059bc4b08p0,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 281
+    0x1.0b5586cf9890f6934aae622ca2377342p0,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 282
+    0x1.172b83c7d517ac7c7c0d3432ad543afap0,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 283
+    0x1.172b83c7d517ad93a790fc07c501430cp0,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 284
+    0x1.172b83c7d517aeaad314c3dcdcaf6249p0,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 285
+    0x1.306fe0a31b714ffe7eec6bebf7ca9d7dp0,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 286
+    0x1.306fe0a31b71525f5eadb222da6cfb5ap0,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 287
+    0x1.306fe0a31b7154c03e6ef859bd141af7p0,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 288
+    0x1.6a09e667f3bcc2320d5de690c78172aep0,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 289
+    0x1.6a09e667f3bcc7da34f7865fba958b33p0,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 290
+    0x1.6a09e667f3bccd825c91262eadc04456p0,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 291
+    0x1.ffffffffffffeca86c3898cff8779a1ap0,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 292
+    0x1.fffffffffffffca86c3898cff81cdd7cp0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 293
+    0x1.0000000000000654361c4c67fc21106fp1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 294
+    0x1.ffffffffffffd950d871319ff1aa4328p1,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 295
+    0x1.fffffffffffff950d871319ff03f50afp1,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 296
+    0x1.0000000000000ca86c3898cff86a2f1bp2,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 297
+    0x1.ffffffffffffb2a1b0e2633fe640c21bp3,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 298
+    0x1.fffffffffffff2a1b0e2633fe094f837p3,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 299
+    0x1.0000000000001950d871319ff174972ap4,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 300
+    0x1.ffffffffffff654361c4c67fd8327361p7,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 301
+    0x1.ffffffffffffe54361c4c67fc1834bd3p7,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 302
+    0x1.00000000000032a1b0e2633fe56a1222p8,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 303
+    0x1.fffffffffffeca86c3898cffdf28a36fp15,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 304
+    0x1.ffffffffffffca86c3898cff846c0534p15,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 305
+    0x1.000000000000654361c4c67fd4d7b37cp16,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 306
+    0x1.fffffffffffd950d87131a007960398fp31,
+    0x1.62e42fefa39eep4
+  },
+  { // Entry 307
+    0x1.ffffffffffff950d871319ff0e6dc0a3p31,
+    0x1.62e42fefa39efp4
+  },
+  { // Entry 308
+    0x1.000000000000ca86c3898cffd1bda3dbp32,
+    0x1.62e42fefa39f0p4
+  },
+  { // Entry 309
+    0x1.ffffffffffb2a1b0e26345b8dfe00697p1023,
+    0x1.62e42fefa39eep9
+  },
+  { // Entry 310
+    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 311
+    HUGE_VAL,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 312
+    0x1.c8464f76161962ed1930796c0794254ap-1071,
+    -0x1.72e42fefa39f0p9
+  },
+  { // Entry 313
+    0x1.c8464f7616526bb707f34028f1d63786p-1071,
+    -0x1.72e42fefa39efp9
+  },
+  { // Entry 314
+    0x1.c8464f76168b7480f6b60e06f556221bp-1071,
+    -0x1.72e42fefa39eep9
+  },
+  { // Entry 315
+    0x1.8ebef9eac820a84b86d1ce1a4424435fp-1,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 316
+    0x1.8ebef9eac820ae8682b9793ac6d1e772p-1,
+    -0x1.0p-2
+  },
+  { // Entry 317
+    0x1.8ebef9eac820b1a400ad4ecb083211f6p-1,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 318
+    0x1.c3d6a24ed82214f0d01daf8e1a8d2ca7p-1,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 319
+    0x1.c3d6a24ed82218787d624d3e5eba95f5p-1,
+    -0x1.0p-3
+  },
+  { // Entry 320
+    0x1.c3d6a24ed8221a3c54049c1680d3f05ep-1,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 321
+    0x1.e0fabfbc702a3b04e86023f0691cc597p-1,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 322
+    0x1.e0fabfbc702a3ce5e31fe0609358bafdp-1,
+    -0x1.0p-4
+  },
+  { // Entry 323
+    0x1.e0fabfbc702a3dd6607fbe98a8776a0ep-1,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 324
+    0x1.f03f56a88b5d781c905f6b51c76ae981p-1,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 325
+    0x1.f03f56a88b5d7914b00abf97762735d1p-1,
+    -0x1.0p-5
+  },
+  { // Entry 326
+    0x1.f03f56a88b5d7990bfe069ba4d858a7fp-1,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 327
+    0x1.f80feabfeefa48a9cd112d592c437012p-1,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 328
+    0x1.f80feabfeefa4927d10bdd54ead5aa46p-1,
+    -0x1.0p-6
+  },
+  { // Entry 329
+    0x1.f80feabfeefa4966d3093552ca1ed330p-1,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 330
+    0x1.fc03fd56aa224f587c3f685d543e53d7p-1,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 331
+    0x1.fc03fd56aa224f97fcbf1332988842dep-1,
+    -0x1.0p-7
+  },
+  { // Entry 332
+    0x1.fc03fd56aa224fb7bcfee89d3aad3d5cp-1,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 333
+    0x1.fe00ffaabffbbc51cd0e16d8b005d662p-1,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 334
+    0x1.fe00ffaabffbbc71ad1e1184afc19c7ep-1,
+    -0x1.0p-8
+  },
+  { // Entry 335
+    0x1.fe00ffaabffbbc819d260edaaf9f804bp-1,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 336
+    0x1.ff003ff556aa887b68800bb5d27da4ffp-1,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 337
+    0x1.ff003ff556aa888b60820b6087d1e91ap-1,
+    -0x1.0p-9
+  },
+  { // Entry 338
+    0x1.ff003ff556aa88935c830b35e27c0b57p-1,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 339
+    0x1.ff800ffeaabffee6fc4efcfc6459de13p-1,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 340
+    0x1.ff800ffeaabffeeefa4f3cf70f59d9bfp-1,
+    -0x1.0p-10
+  },
+  { // Entry 341
+    0x1.ff800ffeaabffef2f94f5cf464d9d7a1p-1,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 342
+    0x1.fff0003fff5556a9a8908b40b320849dp-1,
+    -0x1.0000000000001p-13
+  },
+  { // Entry 343
+    0x1.fff0003fff5556aaa8888b60b2cb2ff2p-1,
+    -0x1.0p-13
+  },
+  { // Entry 344
+    0x1.fff0003fff5556ab28848b70b2a0859dp-1,
+    -0x1.fffffffffffffp-14
+  },
+  { // Entry 345
+    0x1.48b5e3c3e81863e50ffc2ecb79f3f7c3p0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 346
+    0x1.48b5e3c3e81866767bc3b69baabe534ep0,
+    0x1.0p-2
+  },
+  { // Entry 347
+    0x1.48b5e3c3e8186b995352c63c0c6272ecp0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 348
+    0x1.2216045b6f5cce7ad7642815839c8160p0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 349
+    0x1.2216045b6f5ccf9ced688384e06b8d42p0,
+    0x1.0p-3
+  },
+  { // Entry 350
+    0x1.2216045b6f5cd1e119713a639a0d0b49p0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 351
+    0x1.1082b577d34ed74d70455df87e5de089p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 352
+    0x1.1082b577d34ed7d5b1a019e225c9a951p0,
+    0x1.0p-4
+  },
+  { // Entry 353
+    0x1.1082b577d34ed8e6345591b574a20744p0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 354
+    0x1.08205601127ec94c03bb0367085a3c64p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 355
+    0x1.08205601127ec98e0bd083aba80c97a6p0,
+    0x1.0p-5
+  },
+  { // Entry 356
+    0x1.08205601127eca121bfb8434e7717fb0p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 357
+    0x1.04080ab55de3915a37635d3d47dc3df6p0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 358
+    0x1.04080ab55de3917ab864b3e9044e6b45p0,
+    0x1.0p-6
+  },
+  { // Entry 359
+    0x1.04080ab55de391bbba6761407d32d213p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 360
+    0x1.0202015600445afc12436d5c6f22ecf0p0,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 361
+    0x1.0202015600445b0c326382bc73689d32p0,
+    0x1.0p-7
+  },
+  { // Entry 362
+    0x1.0202015600445b2c72a3ad7c7bf400bcp0,
+    0x1.0000000000001p-7
+  },
+  { // Entry 363
+    0x1.0100802ab55777ca8226417cbfee2ff3p0,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 364
+    0x1.0100802ab55777d28a2a42d26aa9ee67p0,
+    0x1.0p-8
+  },
+  { // Entry 365
+    0x1.0100802ab55777e29a32457dc0216c10p0,
+    0x1.0000000000001p-8
+  },
+  { // Entry 366
+    0x1.008020055600110e7b4155a81af484b1p0,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 367
+    0x1.00802005560011127d41d5bd72f4c8f3p0,
+    0x1.0p-9
+  },
+  { // Entry 368
+    0x1.008020055600111a8142d5e822f551a7p0,
+    0x1.0000000000001p-9
+  },
+  { // Entry 369
+    0x1.00400800aab555dbe30e5ce71927cbf0p0,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 370
+    0x1.00400800aab555dde38e6ce86e9277aap0,
+    0x1.0p-10
+  },
+  { // Entry 371
+    0x1.00400800aab555e1e48e8ceb1967cf29p0,
+    0x1.0000000000001p-10
+  },
+  { // Entry 372
+    0x1.00080020005555ffc10f1275295d4349p0,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 373
+    0x1.00080020005556000111127d297298c9p0,
+    0x1.0p-13
+  },
+  { // Entry 374
+    0x1.00080020005556008115128d299d43c9p0,
+    0x1.0000000000001p-13
+  },
+  { // Entry 375
+    0x1.44109edb206a938fad670b68ab99b768p-739,
+    -0x1.0000000000001p9
+  },
+  { // Entry 376
+    0x1.44109edb209315a388cb1b433ecd1a8ap-739,
+    -0x1.0p9
+  },
+  { // Entry 377
+    0x1.44109edb20a756ad767d2516a15514ccp-739,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 378
+    0x1.9755956ad4d04a606a8cd9ddfb368effp-370,
+    -0x1.0000000000001p8
+  },
+  { // Entry 379
+    0x1.9755956ad4e9bfb9c13a27ae4c07ed37p-370,
+    -0x1.0p8
+  },
+  { // Entry 380
+    0x1.9755956ad4f67a666c90cf2f3488a463p-370,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 381
+    0x1.42eb9f39afa6992bf3a1379715f6683bp-185,
+    -0x1.0000000000001p7
+  },
+  { // Entry 382
+    0x1.42eb9f39afb0b088ed6eb4f43cc9ec7bp-185,
+    -0x1.0p7
+  },
+  { // Entry 383
+    0x1.42eb9f39afb5bc376a5573c1164a9c03p-185,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 384
+    0x1.969d47321e46604a105f8de32d9dc685p-93,
+    -0x1.0000000000001p6
+  },
+  { // Entry 385
+    0x1.969d47321e4cbabf2d28070963b04194p-93,
+    -0x1.0p6
+  },
+  { // Entry 386
+    0x1.969d47321e4fe7f9bb8c43a606692a48p-93,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 387
+    0x1.c8464f761642f155fab3e5bb144fb910p-47,
+    -0x1.0000000000001p5
+  },
+  { // Entry 388
+    0x1.c8464f76164681e299a0124487884d64p-47,
+    -0x1.0p5
+  },
+  { // Entry 389
+    0x1.c8464f7616484a28e916288bed8e0ebfp-47,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 390
+    0x1.e355bbaee85aca50a3c50ad2ccffbb29p-24,
+    -0x1.0000000000001p4
+  },
+  { // Entry 391
+    0x1.e355bbaee85cada65f73f32e88fb3cc6p-24,
+    -0x1.0p4
+  },
+  { // Entry 392
+    0x1.e355bbaee85d9f513d4b675d1c3923f6p-24,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 393
+    0x1.5fc21041027a1bdec525f6d2b48a4637p-12,
+    -0x1.0000000000001p3
+  },
+  { // Entry 394
+    0x1.5fc21041027acbbfcd46780fee71ead2p-12,
+    -0x1.0p3
+  },
+  { // Entry 395
+    0x1.5fc21041027b23b05156b8aeac5feea5p-12,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 396
+    0x1.2c155b8213cefc79340f8e386263456ap-6,
+    -0x1.0000000000001p2
+  },
+  { // Entry 397
+    0x1.2c155b8213cf477e8af0132c2ae23d4ap-6,
+    -0x1.0p2
+  },
+  { // Entry 398
+    0x1.2c155b8213cf6d01366055a6162a395fp-6,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 399
+    0x1.152aaa3bf81c975862272f0f3b13f586p-3,
+    -0x1.0000000000001p1
+  },
+  { // Entry 400
+    0x1.152aaa3bf81cb9fdb76eae12d029571fp-3,
+    -0x1.0p1
+  },
+  { // Entry 401
+    0x1.152aaa3bf81ccb5062126d949c53c7ebp-3,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 402
+    0x1.78b56362cef364df9544f11b0a499031p-2,
+    -0x1.0000000000001p0
+  },
+  { // Entry 403
+    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
+    -0x1.0p0
+  },
+  { // Entry 404
+    0x1.78b56362cef3883096963481dd66523fp-2,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 405
+    0x1.9476504ba8399f5b97cae35beb78c3c5p738,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 406
+    0x1.9476504ba852e6c09c8567c01c5a6648p738,
+    0x1.0p9
+  },
+  { // Entry 407
+    0x1.9476504ba885758aa5fa7545e10e8e46p738,
+    0x1.0000000000001p9
+  },
+  { // Entry 408
+    0x1.41c7a8814be192a5df25b042af824efdp369,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 409
+    0x1.41c7a8814beba0e323300f777da65854p369,
+    0x1.0p8
+  },
+  { // Entry 410
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp369,
+    0x1.0000000000001p8
+  },
+  { // Entry 411
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p184,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 412
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp184,
+    0x1.0p7
+  },
+  { // Entry 413
+    0x1.95e54c5dd42e271fa23bf3585b655060p184,
+    0x1.0000000000001p7
+  },
+  { // Entry 414
+    0x1.425982cf597a4d52c89ea857bbaa807ap92,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 415
+    0x1.425982cf597cd205ce3d5b4edb031756p92,
+    0x1.0p6
+  },
+  { // Entry 416
+    0x1.425982cf5981db6bd97ac14c35e666c6p92,
+    0x1.0000000000001p6
+  },
+  { // Entry 417
+    0x1.1f43fcc4b661a8944ac389b609e0f74ep46,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 418
+    0x1.1f43fcc4b662c7d84788401842174074p46,
+    0x1.0p5
+  },
+  { // Entry 419
+    0x1.1f43fcc4b66506604111ace0104fc90ep46,
+    0x1.0000000000001p5
+  },
+  { // Entry 420
+    0x1.0f2ebd0a80017cfac56c30874afbab98p23,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 421
+    0x1.0f2ebd0a8002049223f170882b5ee5efp23,
+    0x1.0p4
+  },
+  { // Entry 422
+    0x1.0f2ebd0a800313c0e0fbf08ab7886866p23,
+    0x1.0000000000001p4
+  },
+  { // Entry 423
+    0x1.749ea7d470c681e43618ec18d53f1b21p11,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 424
+    0x1.749ea7d470c6df0be00e084a815d1de6p11,
+    0x1.0p3
+  },
+  { // Entry 425
+    0x1.749ea7d470c7995b33f840ae1f76e2e7p11,
+    0x1.0000000000001p3
+  },
+  { // Entry 426
+    0x1.b4c902e273a54fdfb6777166e6760dfbp5,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 427
+    0x1.b4c902e273a58678d6d3bfdb93db96d0p5,
+    0x1.0p2
+  },
+  { // Entry 428
+    0x1.b4c902e273a5f3ab178c5cc50320149cp5,
+    0x1.0000000000001p2
+  },
+  { // Entry 429
+    0x1.d8e64b8d4ddabf34d582cd2909aafb2ap2,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 430
+    0x1.d8e64b8d4ddadcc33a3ba206b68abba8p2,
+    0x1.0p1
+  },
+  { // Entry 431
+    0x1.d8e64b8d4ddb17e003ad4bc215d4ef86p2,
+    0x1.0000000000001p1
+  },
+  { // Entry 432
+    0x1.5bf0a8b145768a55da73221499fc4cfbp1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 433
+    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
+    0x1.0p0
+  },
+  { // Entry 434
+    0x1.5bf0a8b14576aaf46a43c097b87bc833p1,
+    0x1.0000000000001p0
+  },
+  { // Entry 435
+    0x1.ffc045692fc9dbc7b7e032576e5e26f8p1023,
+    0x1.62e41ffffffffp9
+  },
+  { // Entry 436
+    0x1.ffc045693009d3d065062f9267dff55ep1023,
+    0x1.62e42p9
+  },
+  { // Entry 437
+    0x1.ffc045693049cbd9122c34cc62776884p1023,
+    0x1.62e4200000001p9
+  },
+  { // Entry 438
+    0x1.c87f21775a0f1a25755fb027f94949a1p-1071,
+    -0x1.72e4200000001p9
+  },
+  { // Entry 439
+    0x1.c87f21775a482a09a44af59c3c3ae44bp-1071,
+    -0x1.72e42p9
+  },
+  { // Entry 440
+    0x1.c87f21775a8139edd33642327bb25c5fp-1071,
+    -0x1.72e41ffffffffp9
+  },
+  { // Entry 441
+    HUGE_VAL,
+    0x1.0p1020
+  },
+  { // Entry 442
+    HUGE_VAL,
+    0x1.999999999999ap1020
+  },
+  { // Entry 443
+    HUGE_VAL,
+    0x1.199999999999ap1021
+  },
+  { // Entry 444
+    HUGE_VAL,
+    0x1.6666666666667p1021
+  },
+  { // Entry 445
+    HUGE_VAL,
+    0x1.b333333333334p1021
+  },
+  { // Entry 446
+    HUGE_VAL,
+    0x1.0p1022
+  },
+  { // Entry 447
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 448
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 449
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 450
+    HUGE_VAL,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 451
+    0x1.724046eb09338d2991a30893e7f4108dp4,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 452
+    0x1.33dedc855935efaaaf578ced3f821f96p2,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 453
+    0x1.5bf0a8b14576aaf46a43c097b87bc833p1,
+    0x1.0000000000001p0
+  },
+  { // Entry 454
+    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
+    0x1.0p0
+  },
+  { // Entry 455
+    0x1.5bf0a8b145768a55da73221499fc4cfbp1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 456
+    0x1.18bd669471caa5585c71cc32a792ac85p1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 457
+    0x1.p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 458
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 459
+    0x1.p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 460
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 461
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 462
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 463
+    0x1.p0,
+    0.0
+  },
+  { // Entry 464
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 465
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 466
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1073
+  },
+  { // Entry 467
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 468
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 469
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 470
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 471
+    0x1.d2e171cf048793e16a7f9406e00c2dd9p-2,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 472
+    0x1.78b56362cef3883096963481dd66523fp-2,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 473
+    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
+    -0x1.0p0
+  },
+  { // Entry 474
+    0x1.78b56362cef364df9544f11b0a499031p-2,
+    -0x1.0000000000001p0
+  },
+  { // Entry 475
+    0x1.a9bcc46f767dfb0d4eec2b1337a04b9ap-3,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 476
+    0x1.620227b598ef9949e60e44dc45d14d0cp-5,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 477
+    0.0,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 478
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 479
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 480
+    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 481
+    HUGE_VAL,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 482
+    0x1.000000000007bbcffb06f8fdab896db0p-1022,
+    -0x1.6232bdd7abcd2p9
+  },
+  { // Entry 483
+    0x1.ffffffffffcf779ff60df40c631419a2p-1023,
+    -0x1.6232bdd7abcd3p9
+  },
+};
diff --git a/tests/math_data/expf_intel_data.h b/tests/math_data/expf_intel_data.h
new file mode 100644
index 0000000..7007458
--- /dev/null
+++ b/tests/math_data/expf_intel_data.h
@@ -0,0 +1,1418 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_expf_intel_data[] = {
+  { // Entry 0
+    0x1.e0fabf081222780d74c00fda30aa3943p-1,
+    -0x1.000006p-4
+  },
+  { // Entry 1
+    0x1.e0fabecbf2ca9acd25eef63af858ed60p-1,
+    -0x1.000008p-4
+  },
+  { // Entry 2
+    0x1.fc03fccfb913167ecfa84f48f5b7205bp-1,
+    -0x1.000022p-7
+  },
+  { // Entry 3
+    0x1.c3d642ff9bf2d294c0ce088e8bad27b3p-1,
+    -0x1.0001b0p-3
+  },
+  { // Entry 4
+    0x1.ff800efaebb8218fc5d491b9868689aap-1,
+    -0x1.000208p-10
+  },
+  { // Entry 5
+    0x1.8ebd9d0446182e9056f60489fcd002cdp-1,
+    -0x1.000380p-2
+  },
+  { // Entry 6
+    0x1.e0f995010fd96d3f294c3ffe0e512426p-1,
+    -0x1.0009f0p-4
+  },
+  { // Entry 7
+    0x1.78a3bb4c17adf5b2d40e6ee3dbd4866fp-2,
+    -0x1.000cp0
+  },
+  { // Entry 8
+    0x1.ffdffd003aacbfca6591e7a38368b94cp-1,
+    -0x1.0020p-12
+  },
+  { // Entry 9
+    0x1.fdff416aa3827d6335a1ffa43d440562p-1,
+    -0x1.00e0p-8
+  },
+  { // Entry 10
+    0x1.99007ffbdffac31dff90da5ee46a16fap-47,
+    -0x1.00e0p5
+  },
+  { // Entry 11
+    0x1.35c0dcfffb4419dc29555c232f3cdca7p-1,
+    -0x1.014ep-1
+  },
+  { // Entry 12
+    0x1.fbed9ac7ed032abfc76306a3e1dc816bp-1,
+    -0x1.05a4p-7
+  },
+  { // Entry 13
+    0x1.efddb9cccd73f71a4b2b8c01a57ae75fp-1,
+    -0x1.064cp-5
+  },
+  { // Entry 14
+    0x1.fffdf1010f37e2f1f5fca8b9c13aff70p-1,
+    -0x1.0780p-16
+  },
+  { // Entry 15
+    0x1.efc35653912fade6a17a8f8ef4109679p-1,
+    -0x1.08p-5
+  },
+  { // Entry 16
+    0x1.8b3096fffcbe737961f8c61cdf9d7137p-1,
+    -0x1.092c68p-2
+  },
+  { // Entry 17
+    0x1.fbdd1ce561f9d0a689812e5bea089f9cp-1,
+    -0x1.09ccp-7
+  },
+  { // Entry 18
+    0x1.efa1ef8a19d40bb22c5d3c315991e15fp-1,
+    -0x1.0a28p-5
+  },
+  { // Entry 19
+    0x1.ffffef09ce47ecc03d1d11f9491e6519p-1,
+    -0x1.0f6320p-21
+  },
+  { // Entry 20
+    0x1.ffffef09c047ed36f8aa1a7e67e26528p-1,
+    -0x1.0f64p-21
+  },
+  { // Entry 21
+    0x1.8890636e31f543b3853b1b305daeb933p-1,
+    -0x1.10p-2
+  },
+  { // Entry 22
+    0x1.ffffef0000483fff334aac5dabfd1c7dp-1,
+    -0x1.10p-21
+  },
+  { // Entry 23
+    0x1.ef1c2d002f7639d4d82edc01eaad1dedp-1,
+    -0x1.12ccp-5
+  },
+  { // Entry 24
+    0x1.de7f010d1c6494139b0531bd5b8f108bp-1,
+    -0x1.1534p-4
+  },
+  { // Entry 25
+    0x1.02057d1245ceaf62a21099d4441a36dbp-101,
+    -0x1.18p6
+  },
+  { // Entry 26
+    0x1.e9040734a16333567cf6f31bc90d4355p-27,
+    -0x1.211588p4
+  },
+  { // Entry 27
+    0x1.8d03f8ffffb1a2622bba81d6ab4a92ffp-14,
+    -0x1.287d08p3
+  },
+  { // Entry 28
+    0x1.e97e430257e75f497f6a3efe51ff5054p-112,
+    -0x1.33efeap6
+  },
+  { // Entry 29
+    0x1.c69c518ea7c58842c178fbd9e8cf536ep-117,
+    -0x1.421888p6
+  },
+  { // Entry 30
+    0x1.df2a0f92c17e9ff0bfb77b7abbe637a6p-126,
+    -0x1.5ad6b6p6
+  },
+  { // Entry 31
+    0x1.782f23068c10b1c5513dc3b0192d30d4p-127,
+    -0x1.5e9444p6
+  },
+  { // Entry 32
+    0x1.710602f9f4288348cc8348472a24f93dp-127,
+    -0x1.5ea7f2p6
+  },
+  { // Entry 33
+    0x1.65ab7994ff3440dcd3ee7f9b9a02423ap-127,
+    -0x1.5ec7f2p6
+  },
+  { // Entry 34
+    0x1.6031cc454f1c3e0126b71bf21e903d20p-127,
+    -0x1.5ed7bep6
+  },
+  { // Entry 35
+    0x1.b78f6800030fb7ec7984a3e7419d6fc2p-129,
+    -0x1.638066p6
+  },
+  { // Entry 36
+    0x1.f9363f3583279ac24e757eeb7654910cp-3,
+    -0x1.664ee0p0
+  },
+  { // Entry 37
+    0x1.d617f10e63adfcd67414c08dc6f9d010p-9,
+    -0x1.685b44p2
+  },
+  { // Entry 38
+    0x1.cf8c4503bf17d8c7647e93a153af37b6p-9,
+    -0x1.6941p2
+  },
+  { // Entry 39
+    0x1.d470b70e90d5097e87b925c5f63fee7dp-1,
+    -0x1.6c3328p-4
+  },
+  { // Entry 40
+    0x1.a9c0a5010de85f9a60c8104f37fc597fp-1,
+    -0x1.79c984p-3
+  },
+  { // Entry 41
+    0x1.dff126fffcdde3436322ba09db4556e1p-2,
+    -0x1.83ff38p-1
+  },
+  { // Entry 42
+    0x1.da1b8301af81384b8e495c9a4f97497fp-72,
+    -0x1.8a529ep5
+  },
+  { // Entry 43
+    0x1.babaf4ffffe29025ce751094aecf9b03p-19,
+    -0x1.93e788p3
+  },
+  { // Entry 44
+    0x1.6e953afffec7fc3b5dda17c820678821p-43,
+    -0x1.d723f8p4
+  },
+  { // Entry 45
+    0x1.ff0ff6f3d9f493ed610364861a995664p-1,
+    -0x1.e082c4p-10
+  },
+  { // Entry 46
+    0x1.ff38a40a3bc33f65f4bed5de0bdfc397p-45,
+    -0x1.e7fffep4
+  },
+  { // Entry 47
+    0x1.8028990034fcc8f33443321db08c6de8p-2,
+    -0x1.f5f922p-1
+  },
+  { // Entry 48
+    0x1.ff0248f1a17418e63d4711f3e66b7c25p-1,
+    -0x1.fbecp-10
+  },
+  { // Entry 49
+    0x1.ff0246f29f2c26c5ed51d16498d1d68ep-1,
+    -0x1.fbf0p-10
+  },
+  { // Entry 50
+    0x1.fa87f66f812849292290a9f6268ef2f9p-24,
+    -0x1.fe7ffep3
+  },
+  { // Entry 51
+    0x1.ff0046f2d716c095770d849e182a3bb2p-1,
+    -0x1.fff1fep-10
+  },
+  { // Entry 52
+    0x1.e0fb2911655006422a15c3c03f8ce847p-1,
+    -0x1.fff8fep-5
+  },
+  { // Entry 53
+    0x1.ff0040f4d6cac316bdcfa13cc5af7e7cp-1,
+    -0x1.fffep-10
+  },
+  { // Entry 54
+    0x1.ffe001081a28c420260a161b12fbb97dp-1,
+    -0x1.ffff7ep-13
+  },
+  { // Entry 55
+    0x1.0000010000008000002aaaaab5555557p0,
+    0x1.p-24
+  },
+  { // Entry 56
+    0x1.426436f5aec1c313a6d2bbcd58a388dep92,
+    0x1.000022p6
+  },
+  { // Entry 57
+    0x1.a615e50a5e54e1f2f7e57c3f0ff90c61p0,
+    0x1.0004p-1
+  },
+  { // Entry 58
+    0x1.d95d63014ce5cdcd113fee0a4be67902p2,
+    0x1.002038p1
+  },
+  { // Entry 59
+    0x1.762b6304e19f3518e90348b5d9dc544ep11,
+    0x1.0022p3
+  },
+  { // Entry 60
+    0x1.a636e00a0cd5b85262756d50b95ccc88p0,
+    0x1.002cp-1
+  },
+  { // Entry 61
+    0x1.8ca6d30587af504a6f69d3a57bf3e6a8p11,
+    0x1.02p3
+  },
+  { // Entry 62
+    0x1.dfa2d701da98a148063c3ca6d13f1bcep93,
+    0x1.045cb6p6
+  },
+  { // Entry 63
+    0x1.6340e70000e296e79073670ef9c0915dp1,
+    0x1.05533ep0
+  },
+  { // Entry 64
+    0x1.ef595b018549442ec73e3d5161768d16p5,
+    0x1.080d74p2
+  },
+  { // Entry 65
+    0x1.89acdf26f99012ec527c5e9e7c47117fp47,
+    0x1.0810eep5
+  },
+  { // Entry 66
+    0x1.f33bef00003ab93a467c94fc95deed30p5,
+    0x1.088d74p2
+  },
+  { // Entry 67
+    0x1.b0f34affff9dc2430b31c2ea04f9df90p95,
+    0x1.097f6ap6
+  },
+  { // Entry 68
+    0x1.6b4ae5522604e10273283efbf9f626c9p1,
+    0x1.0b0dbap0
+  },
+  { // Entry 69
+    0x1.000011000090800332d562ed602e3824p0,
+    0x1.10p-20
+  },
+  { // Entry 70
+    0x1.b380b0f6a12fa19df391f5034b8ae31bp0,
+    0x1.1009a4p-1
+  },
+  { // Entry 71
+    0x1.b5d293f5bfa20416721999c6be03a195p0,
+    0x1.12c1fep-1
+  },
+  { // Entry 72
+    0x1.b6609ff785a04630531354d1924f8d11p0,
+    0x1.1368p-1
+  },
+  { // Entry 73
+    0x1.78241affffd1cf967a9eec663f45677ep1,
+    0x1.13f37ap0
+  },
+  { // Entry 74
+    0x1.b77660f58bcb1ee2d757a97f82c8223dp0,
+    0x1.14acp-1
+  },
+  { // Entry 75
+    0x1.7b4d6f06cf0fbd1fbc05d50908352075p1,
+    0x1.1618p0
+  },
+  { // Entry 76
+    0x1.2765810002c2eb4265308ac8b12afa3bp0,
+    0x1.252726p-3
+  },
+  { // Entry 77
+    0x1.92b0acffff1c8646d4075976f62dfbc2p1,
+    0x1.25693ep0
+  },
+  { // Entry 78
+    0x1.fbd224c7e1970bed868fadc8012c85aep13,
+    0x1.364486p3
+  },
+  { // Entry 79
+    0x1.06007d00084349f9491104f20c89f2f9p28,
+    0x1.36e696p4
+  },
+  { // Entry 80
+    0x1.5ec18400003419ad3815b41c45384dccp0,
+    0x1.427898p-2
+  },
+  { // Entry 81
+    0x1.b23fdacfa3e0d9d21b342983e159fedcp118,
+    0x1.49477cp6
+  },
+  { // Entry 82
+    0x1.fea000e2438214ca9155d4c91bd29e9ap119,
+    0x1.4cb32cp6
+  },
+  { // Entry 83
+    0x1.f67176c19fee0c9a8d1c9cbb2d73b617p120,
+    0x1.4f686ap6
+  },
+  { // Entry 84
+    0x1.d1c241024d841bd52972be6182633733p121,
+    0x1.51e090p6
+  },
+  { // Entry 85
+    0x1.cde2dd070c7de9cb58c0caed927145d8p3,
+    0x1.55b4e2p1
+  },
+  { // Entry 86
+    0x1.f7109009cd3494af526c18af019055eep0,
+    0x1.59e08ep-1
+  },
+  { // Entry 87
+    0x1.fa7c26c12afb87b5b2b151e654f6eb90p0,
+    0x1.5d58aep-1
+  },
+  { // Entry 88
+    0x1.cf3d46cb98a571871f6dee1a80581a52p126,
+    0x1.5fb7ecp6
+  },
+  { // Entry 89
+    0x1.fd8718f3d3ed8f4a5d8dec6ae7327159p7,
+    0x1.6294e2p2
+  },
+  { // Entry 90
+    0x1.feaffef3e736b71569a474042054e8b7p7,
+    0x1.62ba22p2
+  },
+  { // Entry 91
+    0x1.f76ba46733f4146a0f94b3d1311494bcp127,
+    0x1.62d2e2p6
+  },
+  { // Entry 92
+    0x1.fd7b9f01b4df08855feb29023232fd99p127,
+    0x1.62df24p6
+  },
+  { // Entry 93
+    0x1.ff691e6dd71bc8cb1f1fcffcc32cb982p127,
+    0x1.62e302p6
+  },
+  { // Entry 94
+    0x1.ffce0a9e4fc6762c91f1a0ce358a8487p127,
+    0x1.62e3ccp6
+  },
+  { // Entry 95
+    0x1.fffc0109c402d8b23bfea3a14835831bp15,
+    0x1.62e3f0p3
+  },
+  { // Entry 96
+    0x1.fff1086632b0e9b93bc5be44d9c1dea7p127,
+    0x1.62e412p6
+  },
+  { // Entry 97
+    0x1.fff608470786d7e47ef11662f1790c2ap127,
+    0x1.62e41cp6
+  },
+  { // Entry 98
+    0x1.232b96ffec147bb31695595878ba4f9dp4,
+    0x1.735e70p1
+  },
+  { // Entry 99
+    0x1.8d2c990317660e21a64ba7723f5e0ed3p8,
+    0x1.7fp2
+  },
+  { // Entry 100
+    0x1.ed379f025781ddca240c83375ee496abp70,
+    0x1.89689ap5
+  },
+  { // Entry 101
+    0x1.3687410000e2c9f8732208c97919fb0ep0,
+    0x1.8b76d0p-3
+  },
+  { // Entry 102
+    0x1.312e79ff522af71b9e2e837bf8872972p2,
+    0x1.8fe0cap0
+  },
+  { // Entry 103
+    0x1.7008f10020226e4f59b5afd8c117c096p4,
+    0x1.915afcp1
+  },
+  { // Entry 104
+    0x1.de75e90225ec6da2cfb39dca6440b688p75,
+    0x1.a4e438p5
+  },
+  { // Entry 105
+    0x1.79f0650095fd426dce8aa803e9a4fc98p9,
+    0x1.a82f30p2
+  },
+  { // Entry 106
+    0x1.2e02d6fffffed97f27dcc3742472ffa4p1,
+    0x1.b78498p-1
+  },
+  { // Entry 107
+    0x1.fa2b60fffffeea1c7bd1c78bb5c46b17p9,
+    0x1.bae196p2
+  },
+  { // Entry 108
+    0x1.000734ffffffbaba4820a2b79d296d63p0,
+    0x1.cd3982p-14
+  },
+  { // Entry 109
+    0x1.d54158f5434edb2a234359befb2209bcp10,
+    0x1.e26570p2
+  },
+  { // Entry 110
+    0x1.99fb290176ec010d068c5f888a18d847p87,
+    0x1.e632aap5
+  },
+  { // Entry 111
+    0x1.bc8e5300003e12eaf0ea04b8c5076474p2,
+    0x1.f02d68p0
+  },
+  { // Entry 112
+    0x1.565672ffffe78168cea9ed1deed2c472p1,
+    0x1.f7b05cp-1
+  },
+  { // Entry 113
+    0x1.a664dced7cc33ede965392722b0d87bfp22,
+    0x1.f7fffep3
+  },
+  { // Entry 114
+    0x1.fe8bfd38762490c7f68e80a4bdf3a17dp90,
+    0x1.f896a2p5
+  },
+  { // Entry 115
+    0x1.cc24d50c16500084754fbddc60e7276cp2,
+    0x1.f8fffep0
+  },
+  { // Entry 116
+    0x1.72151c69ff0e9850b88cbd9a600fea50p11,
+    0x1.ff900ep2
+  },
+  { // Entry 117
+    0x1.3d59d2d8b22b41c2bb6334c9be7be902p92,
+    0x1.ffdffep5
+  },
+  { // Entry 118
+    0x1.74875300042b943ba368994eec8dcb0ep11,
+    0x1.fffbfep2
+  },
+  { // Entry 119
+    0x1.d8e6090cefe80487948c01efe3cf4c5ap2,
+    0x1.ffffdcp0
+  },
+  { // Entry 120
+    0x1.000000fffffe7ffffe2aaaabb5555702p0,
+    0x1.fffffcp-25
+  },
+  { // Entry 121
+    0x1.304d1ed9511bf5a6a5b20e4cdbf6d8ffp69,
+    0x1.7ffffep5
+  },
+  { // Entry 122
+    0x1.304d6aeca254b3af4bc5d6293d5f65c7p69,
+    0x1.80p5
+  },
+  { // Entry 123
+    0x1.304db70006924866bc1845097c91e488p69,
+    0x1.800002p5
+  },
+  { // Entry 124
+    0x1.f8e64411b4c7429f260cb72539880919p-76,
+    -0x1.a00002p5
+  },
+  { // Entry 125
+    0x1.f8e6c24b5592e3421df27acf1e080144p-76,
+    -0x1.a0p5
+  },
+  { // Entry 126
+    0x1.f8e7408515ecf009cb5b7fe80003ae74p-76,
+    -0x1.9ffffep5
+  },
+  { // Entry 127
+    0x1.5576f0dcac21787f2d57b14a700224e3p115,
+    0x1.3ffffep6
+  },
+  { // Entry 128
+    0x1.55779b984f3eb3c8a503b4a8e2489d98p115,
+    0x1.40p6
+  },
+  { // Entry 129
+    0x1.5578465447b9d5f83246af1e48e8225bp115,
+    0x1.400002p6
+  },
+  { // Entry 130
+    0x1.07b68d505a60dd444b8b2bdfe06038cfp-127,
+    -0x1.600002p6
+  },
+  { // Entry 131
+    0x1.07b7112bc1ffe19d3e703e4a794f7372p-127,
+    -0x1.60p6
+  },
+  { // Entry 132
+    0x1.07b795076b8caa412334e7ddf18b00f5p-127,
+    -0x1.5ffffep6
+  },
+  { // Entry 133
+    0x1.039924428f47511c03e75dd623bc47e1p75,
+    0x1.9ffffep5
+  },
+  { // Entry 134
+    0x1.03996528e074bebcfd76416fc2c0eb92p75,
+    0x1.a0p5
+  },
+  { // Entry 135
+    0x1.0399a60f41dbc2b085221312f505089dp75,
+    0x1.a00002p5
+  },
+  { // Entry 136
+    0x1.aeba4f3502d837951889740890747609p-70,
+    -0x1.800002p5
+  },
+  { // Entry 137
+    0x1.aebabae3a41b4be3f576e70303a37932p-70,
+    -0x1.80p5
+  },
+  { // Entry 138
+    0x1.aebb2692604a0be10cc9f3a09e77aae1p-70,
+    -0x1.7ffffep5
+  },
+  { // Entry 139
+    0x1.f1047545465f97aad6774dfe16b960e2p126,
+    0x1.5ffffep6
+  },
+  { // Entry 140
+    0x1.f1056dc7bf22d3de0ed57615bc501f8bp126,
+    0x1.60p6
+  },
+  { // Entry 141
+    0x1.f106664ab4276b833993050c9aa09a95p126,
+    0x1.600002p6
+  },
+  { // Entry 142
+    0x1.7fd8b4e6e875b5988aeb2e9083caf791p-116,
+    -0x1.400002p6
+  },
+  { // Entry 143
+    0x1.7fd974d372e4486f72358acdd12690e5p-116,
+    -0x1.40p6
+  },
+  { // Entry 144
+    0x1.7fda34c05d49387b3838c5c2bfad0123p-116,
+    -0x1.3ffffep6
+  },
+  { // Entry 145
+    0x1.6a32e160645dc5364da93c123215c591p-107,
+    -0x1.274768p6
+  },
+  { // Entry 146
+    0x1.42a280b47f1e50e7307c9599e94975dap-121,
+    -0x1.4e8ed0p6
+  },
+  { // Entry 147
+    0x1.1f6479d6e79d924759c7f44160ad30e3p-135,
+    -0x1.75d638p6
+  },
+  { // Entry 148
+    0x1.ffffffefa39ef39a7f254535d935142bp-2,
+    -0x1.62e430p-1
+  },
+  { // Entry 149
+    0x1.000000f7d1cff19f0f33036cf01c120cp-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 150
+    0x1.000001f7d1d16970dfcb360efa91fea0p-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 151
+    0x1.6a09e6622aebfbd7a4a03777223c604fp-1,
+    -0x1.62e430p-2
+  },
+  { // Entry 152
+    0x1.6a09e7172fdf5a2e5771f3866a25514ep-1,
+    -0x1.62e42ep-2
+  },
+  { // Entry 153
+    0x1.6a09e7cc34d3130784097b8d8a7c9008p-1,
+    -0x1.62e42cp-2
+  },
+  { // Entry 154
+    0x1.ae89f9923cbb49183aabb33b9de1bc82p-1,
+    -0x1.62e430p-3
+  },
+  { // Entry 155
+    0x1.ae89f9fddf39bb1bb94baa36c98abb7bp-1,
+    -0x1.62e42ep-3
+  },
+  { // Entry 156
+    0x1.ae89fa6981b84807d78b7f25910956dep-1,
+    -0x1.62e42cp-3
+  },
+  { // Entry 157
+    0x1.d5818dcdda301bca95fbcc530ab9b938p-1,
+    -0x1.62e430p-4
+  },
+  { // Entry 158
+    0x1.d5818e088a61d930df1b087a4b928ea0p-1,
+    -0x1.62e42ep-4
+  },
+  { // Entry 159
+    0x1.d5818e433a939ded2e7266cb13d29986p-1,
+    -0x1.62e42cp-4
+  },
+  { // Entry 160
+    0x1.ea4afa294e60b4bfa24494610e75261cp-1,
+    -0x1.62e430p-5
+  },
+  { // Entry 161
+    0x1.ea4afa47f3105849adccfa1dd5b3f93dp-1,
+    -0x1.62e42ep-5
+  },
+  { // Entry 162
+    0x1.ea4afa6697bffdbe044fa7cdad4b3ee7p-1,
+    -0x1.62e42cp-5
+  },
+  { // Entry 163
+    0x1.f50765b6643efaa2ca9e6690933e5c37p-1,
+    -0x1.62e430p-6
+  },
+  { // Entry 164
+    0x1.f50765c60c7a28948d82f31a7288232fp-1,
+    -0x1.62e42ep-6
+  },
+  { // Entry 165
+    0x1.f50765d5b4b557039240f127705c11e7p-1,
+    -0x1.62e42cp-6
+  },
+  { // Entry 166
+    0x1.059b0d214186cff9a974bcb883cf68dep0,
+    0x1.62e42cp-6
+  },
+  { // Entry 167
+    0x1.059b0d296e5f3924690ce10533fe599bp0,
+    0x1.62e42ep-6
+  },
+  { // Entry 168
+    0x1.059b0d319b37a2908f684fad7bfb94d0p0,
+    0x1.62e430p-6
+  },
+  { // Entry 169
+    0x1.0b5586aeb68ea24c9281f25b79d84f83p0,
+    0x1.62e42cp-5
+  },
+  { // Entry 170
+    0x1.0b5586bf6be70dbda62f7148cd5a788fp0,
+    0x1.62e42ep-5
+  },
+  { // Entry 171
+    0x1.0b5586d0213f7a3a0f63afa207ea7587p0,
+    0x1.62e430p-5
+  },
+  { // Entry 172
+    0x1.172b838327ae1f9d7e70418a476da480p0,
+    0x1.62e42cp-4
+  },
+  { // Entry 173
+    0x1.172b83a60d1e9230cb3b52cd1200b8dcp0,
+    0x1.62e42ep-4
+  },
+  { // Entry 174
+    0x1.172b83c8f28f0920c614fc4456de049fp0,
+    0x1.62e430p-4
+  },
+  { // Entry 175
+    0x1.306fe00d521c5b35bf373738b0a12e1ap0,
+    0x1.62e42cp-3
+  },
+  { // Entry 176
+    0x1.306fe0596e14680dc54f3a2ea15e3afcp0,
+    0x1.62e42ep-3
+  },
+  { // Entry 177
+    0x1.306fe0a58a0c87ecc96cd405d8b582dbp0,
+    0x1.62e430p-3
+  },
+  { // Entry 178
+    0x1.6a09e503b2a7dd99cf9474b115a73ecep0,
+    0x1.62e42cp-2
+  },
+  { // Entry 179
+    0x1.6a09e5b8b79a8cb4602b42cd4c99e60ep0,
+    0x1.62e42ep-2
+  },
+  { // Entry 180
+    0x1.6a09e66dbc8d96516a303ed0289c5d36p0,
+    0x1.62e430p-2
+  },
+  { // Entry 181
+    0x1.fffffc105c64ec3292f2afac3f1a430dp0,
+    0x1.62e42cp-1
+  },
+  { // Entry 182
+    0x1.fffffe105c61fc8ef63c65c66a9d4971p0,
+    0x1.62e42ep-1
+  },
+  { // Entry 183
+    0x1.000000082e308675abcb3c215eacf84ap1,
+    0x1.62e430p-1
+  },
+  { // Entry 184
+    0x1.fffff820b8d19779692fb0fcc0281246p1,
+    0x1.62e42cp0
+  },
+  { // Entry 185
+    0x1.fffffc20b8c5d8eaff4ac013cf734639p1,
+    0x1.62e42ep0
+  },
+  { // Entry 186
+    0x1.000000105c610d2e42f45922768a8e6cp2,
+    0x1.62e430p0
+  },
+  { // Entry 187
+    0x1.fffff04171c22b43a28d8088c347bf1fp3,
+    0x1.62e42cp1
+  },
+  { // Entry 188
+    0x1.fffff8417193310a429b71e70d792186p3,
+    0x1.62e42ep1
+  },
+  { // Entry 189
+    0x1.00000020b8c21b6833603e51897c598cp4,
+    0x1.62e430p1
+  },
+  { // Entry 190
+    0x1.ffffe082e40047c89dfa41d09c1e1ef8p7,
+    0x1.62e42cp2
+  },
+  { // Entry 191
+    0x1.fffff082e3445ee55b3fa84a5dd849c9p7,
+    0x1.62e42ep2
+  },
+  { // Entry 192
+    0x1.0000004171843aff1c9ef14341bfa42ep8,
+    0x1.62e430p2
+  },
+  { // Entry 193
+    0x1.ffffc105c9f0548760a823b0dfdaeb66p15,
+    0x1.62e42cp3
+  },
+  { // Entry 194
+    0x1.ffffe105c700b10c3e2a549fbdebb0dap15,
+    0x1.62e42ep3
+  },
+  { // Entry 195
+    0x1.00000082e30886b910b9d8752828389dp16,
+    0x1.62e430p3
+  },
+  { // Entry 196
+    0x1.ffff820b9b9fbc6d5dda406ad9f93354p31,
+    0x1.62e42cp4
+  },
+  { // Entry 197
+    0x1.ffffc20b8fe12f101740ac9653f78fe3p31,
+    0x1.62e42ep4
+  },
+  { // Entry 198
+    0x1.00000105c611505d7f74a41433312dp32,
+    0x1.62e430p4
+  },
+  { // Entry 199
+    0x1.fffe082f28688d3872ab8aa69f3dc358p127,
+    0x1.62e42cp6
+  },
+  { // Entry 200
+    0x1.ffff082e6c7fed1d3fd5cff7e1f60591p127,
+    0x1.62e42ep6
+  },
+  { // Entry 201
+    HUGE_VALF,
+    0x1.62e430p6
+  },
+  { // Entry 202
+    0.0f,
+    -0x1.9d1da2p6
+  },
+  { // Entry 203
+    0.0f,
+    -0x1.9d1da0p6
+  },
+  { // Entry 204
+    0x1.0000733d37b1d08a80d7f5b45a57b888p-149,
+    -0x1.9d1d9ep6
+  },
+  { // Entry 205
+    0x1.8ebef92368a3eafa519740584c0bc3b4p-1,
+    -0x1.000002p-2
+  },
+  { // Entry 206
+    0x1.8ebef9eac820ae8682b9793ac6d1e772p-1,
+    -0x1.p-2
+  },
+  { // Entry 207
+    0x1.8ebefa4e77df35ae82b57af121518cefp-1,
+    -0x1.fffffep-3
+  },
+  { // Entry 208
+    0x1.c3d6a1dde27992e129ed78a65573f878p-1,
+    -0x1.000002p-3
+  },
+  { // Entry 209
+    0x1.c3d6a24ed82218787d624d3e5eba95f5p-1,
+    -0x1.p-3
+  },
+  { // Entry 210
+    0x1.c3d6a28752f665db2eea1fa5876798a3p-1,
+    -0x1.fffffep-4
+  },
+  { // Entry 211
+    0x1.e0fabf8050d24919d357946f9e880754p-1,
+    -0x1.000002p-4
+  },
+  { // Entry 212
+    0x1.e0fabfbc702a3ce5e31fe0609358bafdp-1,
+    -0x1.p-4
+  },
+  { // Entry 213
+    0x1.e0fabfda7fd6399d632391f9771f3e82p-1,
+    -0x1.fffffep-5
+  },
+  { // Entry 214
+    0x1.f03f568987680f8419de7d66d0a619ecp-1,
+    -0x1.000002p-5
+  },
+  { // Entry 215
+    0x1.f03f56a88b5d7914b00abf97762735d1p-1,
+    -0x1.p-5
+  },
+  { // Entry 216
+    0x1.f03f56b80d582e9712e15df3cc9e8e9cp-1,
+    -0x1.fffffep-6
+  },
+  { // Entry 217
+    0x1.f80feab02e7af3675b36eb6c3c71a5eep-1,
+    -0x1.000002p-6
+  },
+  { // Entry 218
+    0x1.f80feabfeefa4927d10bdd54ead5aa46p-1,
+    -0x1.p-6
+  },
+  { // Entry 219
+    0x1.f80feac7cf39f4374d745808a78130ecp-1,
+    -0x1.fffffep-7
+  },
+  { // Entry 220
+    0x1.fc03fd4eba125a4d3455bf72cbc939f7p-1,
+    -0x1.000002p-7
+  },
+  { // Entry 221
+    0x1.fc03fd56aa224f97fcbf1332988842dep-1,
+    -0x1.p-7
+  },
+  { // Entry 222
+    0x1.fc03fd5aa22a4a49490bad128ba5af93p-1,
+    -0x1.fffffep-8
+  },
+  { // Entry 223
+    0x1.fe00ffa6c3f9bd20292897f42d7b9d76p-1,
+    -0x1.000002p-8
+  },
+  { // Entry 224
+    0x1.fe00ffaabffbbc71ad1e1184afc19c7ep-1,
+    -0x1.p-8
+  },
+  { // Entry 225
+    0x1.fe00ffacbdfcbc1d6c1a4dcc11ddb6d8p-1,
+    -0x1.fffffep-9
+  },
+  { // Entry 226
+    0x1.ff003ff357aa48970957a2cf7d7a6cacp-1,
+    -0x1.000002p-9
+  },
+  { // Entry 227
+    0x1.ff003ff556aa888b60820b6087d1e91ap-1,
+    -0x1.p-9
+  },
+  { // Entry 228
+    0x1.ff003ff6562aa8864bb757a4ed8d9686p-1,
+    -0x1.fffffep-10
+  },
+  { // Entry 229
+    0x1.ff800ffdaafff6efe4df3f7f5ce23accp-1,
+    -0x1.000002p-10
+  },
+  { // Entry 230
+    0x1.ff800ffeaabffeeefa4f3cf70f59d9bfp-1,
+    -0x1.p-10
+  },
+  { // Entry 231
+    0x1.ff800fff2aa002eeb4fb3d32c498a8ffp-1,
+    -0x1.fffffep-11
+  },
+  { // Entry 232
+    0x1.fff0003fdf5656a6a9932df6283cfcbdp-1,
+    -0x1.000002p-13
+  },
+  { // Entry 233
+    0x1.fff0003fff5556aaa8888b60b2cb2ff2p-1,
+    -0x1.p-13
+  },
+  { // Entry 234
+    0x1.fff000400f54d6aca8c334161010099ep-1,
+    -0x1.fffffep-14
+  },
+  { // Entry 235
+    0x1.48b5e371ba9f7fc224c75d198fe4cd1bp0,
+    0x1.fffffep-3
+  },
+  { // Entry 236
+    0x1.48b5e3c3e81866767bc3b69baabe534ep0,
+    0x1.p-2
+  },
+  { // Entry 237
+    0x1.48b5e468430a7181447647fc03adbfb6p0,
+    0x1.000002p-2
+  },
+  { // Entry 238
+    0x1.221604372c9c46732dd72e996c9e23f2p0,
+    0x1.fffffep-4
+  },
+  { // Entry 239
+    0x1.2216045b6f5ccf9ced688384e06b8d42p0,
+    0x1.p-3
+  },
+  { // Entry 240
+    0x1.221604a3f4ddef8974c0079f23fd0bb9p0,
+    0x1.000002p-3
+  },
+  { // Entry 241
+    0x1.1082b566cb2380e0be0d559a0150172fp0,
+    0x1.fffffep-5
+  },
+  { // Entry 242
+    0x1.1082b577d34ed7d5b1a019e225c9a951p0,
+    0x1.p-4
+  },
+  { // Entry 243
+    0x1.1082b599e3a588f120e61af4869c9842p0,
+    0x1.000002p-4
+  },
+  { // Entry 244
+    0x1.082055f8d17c19a67be4f7058e9a570ap0,
+    0x1.fffffep-6
+  },
+  { // Entry 245
+    0x1.08205601127ec98e0bd083aba80c97a6p0,
+    0x1.p-5
+  },
+  { // Entry 246
+    0x1.0820561194842a2343e81fd5fab451efp0,
+    0x1.000002p-5
+  },
+  { // Entry 247
+    0x1.04080ab14dc366ad6116c39e3c2d0a9ep0,
+    0x1.fffffep-7
+  },
+  { // Entry 248
+    0x1.04080ab55de3917ab864b3e9044e6b45p0,
+    0x1.p-6
+  },
+  { // Entry 249
+    0x1.04080abd7e23e746288296c1313f21b1p0,
+    0x1.000002p-6
+  },
+  { // Entry 250
+    0x1.02020153fc40586235decf4eb727a15fp0,
+    0x1.fffffep-8
+  },
+  { // Entry 251
+    0x1.0202015600445b0c326382bc73689d32p0,
+    0x1.p-7
+  },
+  { // Entry 252
+    0x1.0202015a084c606c4384f9a7ff2ee425p0,
+    0x1.000002p-7
+  },
+  { // Entry 253
+    0x1.01008029b456f7a855530b151055fcccp0,
+    0x1.fffffep-9
+  },
+  { // Entry 254
+    0x1.0100802ab55777d28a2a42d26aa9ee67p0,
+    0x1.p-8
+  },
+  { // Entry 255
+    0x1.0100802cb7587829f6da32ce4058b940p0,
+    0x1.000002p-8
+  },
+  { // Entry 256
+    0x1.00802004d5c0010ff251d134d9bbdf8cp0,
+    0x1.fffffep-10
+  },
+  { // Entry 257
+    0x1.00802005560011127d41d5bd72f4c8f3p0,
+    0x1.p-9
+  },
+  { // Entry 258
+    0x1.00802006568031185381f6d2c5f6ac90p0,
+    0x1.000002p-9
+  },
+  { // Entry 259
+    0x1.004008006aa553ddc0e317b0fa59b1c4p0,
+    0x1.fffffep-11
+  },
+  { // Entry 260
+    0x1.00400800aab555dde38e6ce86e9277aap0,
+    0x1.p-10
+  },
+  { // Entry 261
+    0x1.004008012ad559de58f118d77b0703afp0,
+    0x1.000002p-10
+  },
+  { // Entry 262
+    0x1.0008001ff85515ff012e68cd2d69c588p0,
+    0x1.fffffep-14
+  },
+  { // Entry 263
+    0x1.00080020005556000111127d297298c9p0,
+    0x1.p-13
+  },
+  { // Entry 264
+    0x1.000800201055d60201966bdd39867f5cp0,
+    0x1.000002p-13
+  },
+  { // Entry 265
+    0x1.969c7be3ad874c06787aba955d206d83p-93,
+    -0x1.000002p6
+  },
+  { // Entry 266
+    0x1.969d47321e4cbabf2d28070963b04194p-93,
+    -0x1.p6
+  },
+  { // Entry 267
+    0x1.969dacd97cce2d9b005ff576b7a0bb4fp-93,
+    -0x1.fffffep5
+  },
+  { // Entry 268
+    0x1.c845dd6490ab2d9c7b0cfec9c5008483p-47,
+    -0x1.000002p5
+  },
+  { // Entry 269
+    0x1.c8464f76164681e299a0124487884d64p-47,
+    -0x1.p5
+  },
+  { // Entry 270
+    0x1.c846887ee3c5d1705be6172d117870a0p-47,
+    -0x1.fffffep4
+  },
+  { // Entry 271
+    0x1.e3557f4434ad7be9e06c29966f56e62bp-24,
+    -0x1.000002p4
+  },
+  { // Entry 272
+    0x1.e355bbaee85cada65f73f32e88fb3cc6p-24,
+    -0x1.p4
+  },
+  { // Entry 273
+    0x1.e355d9e44509470f0aa73ac7ef12148fp-24,
+    -0x1.fffffep3
+  },
+  { // Entry 274
+    0x1.5fc1fa44e2269c9c9706469c20b93e95p-12,
+    -0x1.000002p3
+  },
+  { // Entry 275
+    0x1.5fc21041027acbbfcd46780fee71ead2p-12,
+    -0x1.p3
+  },
+  { // Entry 276
+    0x1.5fc21b3f1328cc16210576d3c70bf98bp-12,
+    -0x1.fffffep2
+  },
+  { // Entry 277
+    0x1.2c1552216918b98b1cef7b04f710e36cp-6,
+    -0x1.000002p2
+  },
+  { // Entry 278
+    0x1.2c155b8213cf477e8af0132c2ae23d4ap-6,
+    -0x1.p2
+  },
+  { // Entry 279
+    0x1.2c1560326946b078b09f8faebe2fc287p-6,
+    -0x1.fffffep1
+  },
+  { // Entry 280
+    0x1.152aa5e74d7c73728ada0663f224a381p-3,
+    -0x1.000002p1
+  },
+  { // Entry 281
+    0x1.152aaa3bf81cb9fdb76eae12d029571fp-3,
+    -0x1.p1
+  },
+  { // Entry 282
+    0x1.152aac664d735c4346cc27f42a3d83b1p-3,
+    -0x1.fffffep0
+  },
+  { // Entry 283
+    0x1.78b56071642fa837c9519eec10a7f937p-2,
+    -0x1.000002p0
+  },
+  { // Entry 284
+    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
+    -0x1.p0
+  },
+  { // Entry 285
+    0x1.78b564db84579b9490e7b9557026c647p-2,
+    -0x1.fffffep-1
+  },
+  { // Entry 286
+    0x1.4259323902dbc6e62e3e07ce26cd904cp92,
+    0x1.fffffep5
+  },
+  { // Entry 287
+    0x1.425982cf597cd205ce3d5b4edb031756p92,
+    0x1.p6
+  },
+  { // Entry 288
+    0x1.425a23fc432fb5d556006a4d8e7ee11bp92,
+    0x1.000002p6
+  },
+  { // Entry 289
+    0x1.1f43d8dc3908b8ed87a5abd50621706ap46,
+    0x1.fffffep4
+  },
+  { // Entry 290
+    0x1.1f43fcc4b662c7d84788401842174074p46,
+    0x1.p5
+  },
+  { // Entry 291
+    0x1.1f444495be8e1616a1e5e388779bc146p46,
+    0x1.000002p5
+  },
+  { // Entry 292
+    0x1.0f2eac1794b8f3edb5c10d26a51f420fp23,
+    0x1.fffffep3
+  },
+  { // Entry 293
+    0x1.0f2ebd0a8002049223f170882b5ee5efp23,
+    0x1.p4
+  },
+  { // Entry 294
+    0x1.0f2edef059c1b22312bed964006ee633p23,
+    0x1.000002p4
+  },
+  { // Entry 295
+    0x1.749e9c2f7bb6cf5a276ee08236c2d6c3p11,
+    0x1.fffffep2
+  },
+  { // Entry 296
+    0x1.749ea7d470c6df0be00e084a815d1de6p11,
+    0x1.p3
+  },
+  { // Entry 297
+    0x1.749ebf1e5bfe757019de4e22b113fde9p11,
+    0x1.000002p3
+  },
+  { // Entry 298
+    0x1.b4c8fc0f4fa7a2f2459a6ef53c315f0fp5,
+    0x1.fffffep1
+  },
+  { // Entry 299
+    0x1.b4c902e273a58678d6d3bfdb93db96d0p5,
+    0x1.p2
+  },
+  { // Entry 300
+    0x1.b4c91088bbf33336f0ee52b1ad858e43p5,
+    0x1.000002p2
+  },
+  { // Entry 301
+    0x1.d8e647db814773f419262ee477a98616p2,
+    0x1.fffffep0
+  },
+  { // Entry 302
+    0x1.d8e64b8d4ddadcc33a3ba206b68abba8p2,
+    0x1.p1
+  },
+  { // Entry 303
+    0x1.d8e652f0e717d92d15cd610022ae51e3p2,
+    0x1.000002p1
+  },
+  { // Entry 304
+    0x1.5bf0a75554ce91e83d421c2a7c075cb2p1,
+    0x1.fffffep-1
+  },
+  { // Entry 305
+    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
+    0x1.p0
+  },
+  { // Entry 306
+    0x1.5bf0ab6926caafa1a0158d79693ac8e1p1,
+    0x1.000002p0
+  },
+  { // Entry 307
+    HUGE_VALF,
+    0x1.p124
+  },
+  { // Entry 308
+    HUGE_VALF,
+    0x1.99999ap124
+  },
+  { // Entry 309
+    HUGE_VALF,
+    0x1.19999ap125
+  },
+  { // Entry 310
+    HUGE_VALF,
+    0x1.666668p125
+  },
+  { // Entry 311
+    HUGE_VALF,
+    0x1.b33334p125
+  },
+  { // Entry 312
+    HUGE_VALF,
+    0x1.p126
+  },
+  { // Entry 313
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 314
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 315
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 316
+    HUGE_VALF,
+    0x1.fffffcp127
+  },
+  { // Entry 317
+    0x1.7240490a165620d9b922aaa22a8e4c09p4,
+    0x1.921fb6p1
+  },
+  { // Entry 318
+    0x1.33dedd672084cca612aab2b9a3e817bbp2,
+    0x1.921fb6p0
+  },
+  { // Entry 319
+    0x1.5bf0ab6926caafa1a0158d79693ac8e1p1,
+    0x1.000002p0
+  },
+  { // Entry 320
+    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
+    0x1.p0
+  },
+  { // Entry 321
+    0x1.5bf0a75554ce91e83d421c2a7c075cb2p1,
+    0x1.fffffep-1
+  },
+  { // Entry 322
+    0x1.18bd66fb62b31900cc07634deba43456p1,
+    0x1.921fb6p-1
+  },
+  { // Entry 323
+    0x1.00000000000000000000000000000004p0,
+    0x1.000002p-126
+  },
+  { // Entry 324
+    0x1.00000000000000000000000000000004p0,
+    0x1.p-126
+  },
+  { // Entry 325
+    0x1.00000000000000000000000000000003p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 326
+    0x1.00000000000000000000000000000003p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 328
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 329
+    0x1.p0,
+    0.0f
+  },
+  { // Entry 330
+    0x1.p0,
+    -0.0f
+  },
+  { // Entry 331
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 332
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-148
+  },
+  { // Entry 333
+    0x1.fffffffffffffffffffffffffffffff8p-1,
+    -0x1.fffff8p-127
+  },
+  { // Entry 334
+    0x1.fffffffffffffffffffffffffffffff8p-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 335
+    0x1.fffffffffffffffffffffffffffffff8p-1,
+    -0x1.p-126
+  },
+  { // Entry 336
+    0x1.fffffffffffffffffffffffffffffff7p-1,
+    -0x1.000002p-126
+  },
+  { // Entry 337
+    0x1.d2e17123d2ae02abbcf896f2025e3463p-2,
+    -0x1.921fb6p-1
+  },
+  { // Entry 338
+    0x1.78b564db84579b9490e7b9557026c647p-2,
+    -0x1.fffffep-1
+  },
+  { // Entry 339
+    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
+    -0x1.p0
+  },
+  { // Entry 340
+    0x1.78b56071642fa837c9519eec10a7f937p-2,
+    -0x1.000002p0
+  },
+  { // Entry 341
+    0x1.a9bcc3373efd3e4d6a96be7a7562f428p-3,
+    -0x1.921fb6p0
+  },
+  { // Entry 342
+    0x1.620225ae5e9349593d6bb618c231545ep-5,
+    -0x1.921fb6p1
+  },
+  { // Entry 343
+    0.0f,
+    -0x1.fffffcp127
+  },
+  { // Entry 344
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 345
+    0.0,
+    -HUGE_VALF
+  },
+  { // Entry 346
+    0x1.ffff082e6c7fed1d3fd5cff7e1f60591p127,
+    0x1.62e42ep6
+  },
+  { // Entry 347
+    HUGE_VALF,
+    0x1.62e430p6
+  },
+  { // Entry 348
+    0x1.00004bf94f63e3fa686222148f1293c4p-126,
+    -0x1.5d589ep6
+  },
+  { // Entry 349
+    0x1.ffff97f292ce80e494231c6496e9cbf5p-127,
+    -0x1.5d58a0p6
+  },
+};
diff --git a/tests/math_data/expm1_intel_data.h b/tests/math_data/expm1_intel_data.h
new file mode 100644
index 0000000..be90c8d
--- /dev/null
+++ b/tests/math_data/expm1_intel_data.h
@@ -0,0 +1,1570 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_expm1_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffffffff0000000000555555555540p-41,
+    -0x1.0p-40
+  },
+  { // Entry 1
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p30
+  },
+  { // Entry 2
+    -0x1.fe0154aaeed8738220213bf805c9a017p-8,
+    -0x1.0000000000002p-7
+  },
+  { // Entry 3
+    -0x1.ffffffffffa000000000055555555556p-42,
+    -0x1.00000000001p-41
+  },
+  { // Entry 4
+    -0x1.fe0154aaef571540b64b8485cc828f04p-8,
+    -0x1.00000000003ffp-7
+  },
+  { // Entry 5
+    -0x1.43a54e4eb0119800b5b8f35e2b4e7e81p-1,
+    -0x1.000000002p0
+  },
+  { // Entry 6
+    -0x1.bacf4c925373696fd21f24ae89354a32p-1,
+    -0x1.003p1
+  },
+  { // Entry 7
+    -0x1.fcc2556e8534300e63c12f8a5a1106b6p-7,
+    -0x1.006p-6
+  },
+  { // Entry 8
+    -0x1.bdaeea20744956636e2e888fc1809651p-1,
+    -0x1.059def2b2f2c4p1
+  },
+  { // Entry 9
+    -0x1.07ffffffff77e00000002ecafffffff3p-40,
+    -0x1.080p-40
+  },
+  { // Entry 10
+    -0x1.1b19e5e90e6538002ec4e9f63c1927a9p-3,
+    -0x1.30ae80687cd57p-3
+  },
+  { // Entry 11
+    -0x1.d23c83e5c923a8d750b23742ad5d2d3dp-1,
+    -0x1.3519530a863ffp1
+  },
+  { // Entry 12
+    -0x1.34533cf44744c7f7dfe24cc81ce93a5ep-4,
+    -0x1.408c0a43cd97cp-4
+  },
+  { // Entry 13
+    -0x1.79c6caa9e49af4463cee3d526a8e1762p-1,
+    -0x1.56bccf9c08f94p0
+  },
+  { // Entry 14
+    -0x1.7de898bb4a1814449fc9bf5a787f2ce3p-1,
+    -0x1.5ebe08ce59440p0
+  },
+  { // Entry 15
+    -0x1.fde856b4a6b0d7fc360a96572944a5edp-1,
+    -0x1.5ffffffffff80p2
+  },
+  { // Entry 16
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6p9
+  },
+  { // Entry 17
+    -0x1.7f637276db37ab8b4f8af38ad62afdb3p-1,
+    -0x1.61abd3bb638ffp0
+  },
+  { // Entry 18
+    -0x1.7fd3858818630ad9afd1179848ee2effp-1,
+    -0x1.628b4a70e8586p0
+  },
+  { // Entry 19
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62ep9
+  },
+  { // Entry 20
+    -0x1.785b18f5275d64a3f5fda9ef739d80b5p-8,
+    -0x1.7970cf2265b9ap-8
+  },
+  { // Entry 21
+    -0x1.8b92870fa2b597fe9b02c25e9ad8a3cep-4,
+    -0x1.ap-4
+  },
+  { // Entry 22
+    -0x1.b57abe9ba86d56e26962c5525f1347a7p-8,
+    -0x1.b6f238c2a040ap-8
+  },
+  { // Entry 23
+    -0x1.b57abe9ba88897ff1194f673b12e2258p-8,
+    -0x1.b6f238c2a05c1p-8
+  },
+  { // Entry 24
+    -0x1.b57abe9ba88917245435a89f6cc2597ep-8,
+    -0x1.b6f238c2a05c9p-8
+  },
+  { // Entry 25
+    -0x1.b76f5651d19c26f8956b99cf61f3f2efp-6,
+    -0x1.bd6f7bfa7895ep-6
+  },
+  { // Entry 26
+    -0x1.b76f5651d3bc6710b0229be3f9607089p-6,
+    -0x1.bd6f7bfa7ac52p-6
+  },
+  { // Entry 27
+    -0x1.a78c2b7ae21669f0f3cd37c10528267ep-1,
+    -0x1.c18p0
+  },
+  { // Entry 28
+    -0x1.2b8ded3132d61ffff49548b6ec6ec8c6p-1,
+    -0x1.c26p-1
+  },
+  { // Entry 29
+    -0x1.ac6b158d953de99425206483bdcd2b28p-1,
+    -0x1.dp0
+  },
+  { // Entry 30
+    -0x1.ffefffffffffe8007ffe000000954f55p-54,
+    -0x1.ffeffffffffffp-54
+  },
+  { // Entry 31
+    -0x1.bab52178ee9089cf090261ec85161b44p-1,
+    -0x1.ffff3ffffffffp0
+  },
+  { // Entry 32
+    -0x1.f69f5523ef47a800c36704994de6bf7cp-1,
+    -0x1.fffffffffe9efp1
+  },
+  { // Entry 33
+    -0x1.fe0154aaee98b381f5a12261d8cf0352p-8,
+    -0x1.ffffffffffcp-8
+  },
+  { // Entry 34
+    -0x1.92e9a0720d3027f60f578a2cd30d104ep-2,
+    -0x1.ffffffffffe7fp-2
+  },
+  { // Entry 35
+    -0x1.bab5557101f8c8d73cd274ba659b2727p-1,
+    -0x1.ffffffffffffep0
+  },
+  { // Entry 36
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep7
+  },
+  { // Entry 37
+    0x1.000000000080000000002aaaaaaaaab5p-40,
+    0x1.0p-40
+  },
+  { // Entry 38
+    0x1.000000000000080000000000002aaaaap-52,
+    0x1.0p-52
+  },
+  { // Entry 39
+    0x1.9476504ba885758aa5fa7545e10e8e46p738,
+    0x1.0000000000001p9
+  },
+  { // Entry 40
+    0x1.0f2ebb2c65d9a80081ac2e65e8025ab1p23,
+    0x1.000000020p4
+  },
+  { // Entry 41
+    0x1.e5208c8ebb607ad767c1adb2ae9616f4p739,
+    0x1.007p9
+  },
+  { // Entry 42
+    0x1.040000000084080000002cb2b5555560p-40,
+    0x1.040p-40
+  },
+  { // Entry 43
+    0x1.c61e8108cb3b100f4a9641fe4b59d5a2p0,
+    0x1.052f742bb53d6p0
+  },
+  { // Entry 44
+    0x1.06466f97b426d000000a905602d7fb69p-10,
+    0x1.0624decad85d9p-10
+  },
+  { // Entry 45
+    0x1.65591a3a7b9fabe891c2ea5f47a6bb96p-1,
+    0x1.0f0ffffffffffp-1
+  },
+  { // Entry 46
+    0x1.66f0fb901f2bd45d99c3ae0c5506ad7fp-1,
+    0x1.1p-1
+  },
+  { // Entry 47
+    0x1.26beacef84dda800ee87d91d88c199a7p-6,
+    0x1.242p-6
+  },
+  { // Entry 48
+    0x1.11f6270d25be700ef7c34d02a29974f1p53,
+    0x1.266fd7cddff42p5
+  },
+  { // Entry 49
+    0x1.2d26216139d81006bcd5c876ca600a38p53,
+    0x1.27319e818c230p5
+  },
+  { // Entry 50
+    0x1.4d13fbb1a00192785df27257f060e683p53,
+    0x1.280p5
+  },
+  { // Entry 51
+    0x1.60c9b536e33bafefc62bca96f884a22ep53,
+    0x1.2875bd6dab630p5
+  },
+  { // Entry 52
+    0x1.8244f738ab986fcb022374240d8605cap53,
+    0x1.292f6d8d306c3p5
+  },
+  { // Entry 53
+    0x1.f4b1ecd508504fdbe96629980d48a020p53,
+    0x1.2b42ce6e584ebp5
+  },
+  { // Entry 54
+    0x1.88a122d234b394b88696ada7f7c11a0ap865,
+    0x1.2c0p9
+  },
+  { // Entry 55
+    0x1.6641633703ea28000010995bb7c4b21dp-2,
+    0x1.33333342022a7p-2
+  },
+  { // Entry 56
+    0x1.04dadee28c11c800fb9094435c1de727p7,
+    0x1.38389c48b0fcep2
+  },
+  { // Entry 57
+    0x1.007848baed8b37c3e6cc3bfb1a101644p58,
+    0x1.41a28cd5395c0p5
+  },
+  { // Entry 58
+    0x1.0c719229fb04b7c21ec3e0d7f2aed918p58,
+    0x1.42000000040p5
+  },
+  { // Entry 59
+    0x1.10924600307447c139d9bb2f82ff9a27p58,
+    0x1.421f4066cf2fcp5
+  },
+  { // Entry 60
+    0x1.31d215d36b1cc7c023dacc0edfa71bebp58,
+    0x1.430af90c17e36p5
+  },
+  { // Entry 61
+    0x1.379553b19df207c01565e5f16d485d4dp58,
+    0x1.4331346ca6ce7p5
+  },
+  { // Entry 62
+    0x1.379553b498da57c00fec0a571dd48a6fp58,
+    0x1.4331346cba64fp5
+  },
+  { // Entry 63
+    0x1.4bc2fdce156117bf5a49805dd419c072p58,
+    0x1.43b1b79351f4ep5
+  },
+  { // Entry 64
+    0x1.cf392076a1bdd7bf0d53e64efec10053p58,
+    0x1.465d52b8b0596p5
+  },
+  { // Entry 65
+    0x1.df8028d08d7bf7c01a066c0bca539e5ap58,
+    0x1.46a40dae90670p5
+  },
+  { // Entry 66
+    0x1.ea57988e94c817bf8f52f84ed3df88b0p58,
+    0x1.46d1d7d9e8a98p5
+  },
+  { // Entry 67
+    0x1.cb419b9279b35763d113e6c5db79dc54p943,
+    0x1.471c71c71c71cp9
+  },
+  { // Entry 68
+    0x1.f1345355d78ba4bf7b3fd1e3ecbf7dfdp948,
+    0x1.48e2388e2391cp9
+  },
+  { // Entry 69
+    0x1.55ab836495abe800005ca6d200952433p1,
+    0x1.4cccccce8ce97p0
+  },
+  { // Entry 70
+    0x1.6a77c2478bdb150bbc8ea756bbb8570bp970,
+    0x1.5059aabfe5765p9
+  },
+  { // Entry 71
+    0x1.e1afc1f1512b7428d3d28c586dcd7da0p974,
+    0x1.51e0f4c70ecdap9
+  },
+  { // Entry 72
+    0x1.5b1bac52655bf015d0c0897352cff074p-8,
+    0x1.5a312e2d5469ep-8
+  },
+  { // Entry 73
+    0x1.5d98a8b1c5b8a043f872dce4155ba02dp-8,
+    0x1.5caacc5a85cadp-8
+  },
+  { // Entry 74
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1008,
+    0x1.5dadf5d1e452cp9
+  },
+  { // Entry 75
+    0x1.624ca1ace3f15973a463b539c79a29fdp-8,
+    0x1.615856f590456p-8
+  },
+  { // Entry 76
+    0x1.624ca1ace613a9790c0e0fcff924bb7fp-8,
+    0x1.615856f59264cp-8
+  },
+  { // Entry 77
+    0x1.fffffffffc72a1b0e266677220702371p1023,
+    0x1.62e42fefa39e1p9
+  },
+  { // Entry 78
+    0x1.66bb6f898c6b5fb5d846de17be366ad0p-8,
+    0x1.65c100ffac3fdp-8
+  },
+  { // Entry 79
+    0x1.03854c2737b8d7ffffa5944ecc584479p0,
+    0x1.66666668c8bc0p-1
+  },
+  { // Entry 80
+    0x1.ad445f949fa7d34496e83174e2786b07p-2,
+    0x1.668p-2
+  },
+  { // Entry 81
+    0x1.67ad945f2f1d9fe2b66dc062db7996efp-8,
+    0x1.66b1d3ec2054fp-8
+  },
+  { // Entry 82
+    0x1.ae35f07f55b872de4707744c0a26ae90p-2,
+    0x1.672a28295e9c9p-2
+  },
+  { // Entry 83
+    0x1.78a4af6b33748fe2cb05dd6a4bfa7056p-8,
+    0x1.7790abed48f5ap-8
+  },
+  { // Entry 84
+    0x1.7bcae2fa3a8cc8cce95336f706279e5ap-8,
+    0x1.7ab23f3a26807p-8
+  },
+  { // Entry 85
+    0x1.7ce527adde0b88d06ecba195c7b0aa4cp-8,
+    0x1.7bcae2fa3adbep-8
+  },
+  { // Entry 86
+    0x1.7ce527ade0f5d8d09fcd9764c82d1274p-8,
+    0x1.7bcae2fa3dc1ep-8
+  },
+  { // Entry 87
+    0x1.7e0110f8b0e678d4a8586472ae7bc1d2p-8,
+    0x1.7ce527ade25b4p-8
+  },
+  { // Entry 88
+    0x1.7f1ea28925a638dc0db4fbf091b90b09p-8,
+    0x1.7e0110f8b0c8cp-8
+  },
+  { // Entry 89
+    0x1.803de018c41128de07c3aaf8cd79d45cp-8,
+    0x1.7f1ea28926651p-8
+  },
+  { // Entry 90
+    0x1.fe31152b7ef6b1e0a8b9fec7ecdd85a4p553,
+    0x1.8p8
+  },
+  { // Entry 91
+    0x1.d38c898541cf95544db45ffc7e46fd16p-2,
+    0x1.812p-2
+  },
+  { // Entry 92
+    0x1.8527a1ecdbec28000500f2ef81065e65p-7,
+    0x1.82dcb4e52cab1p-7
+  },
+  { // Entry 93
+    0x1.8fe5e61a83cad7fcee78aa274e8dc654p-9,
+    0x1.8f4a0b9ff7ed0p-9
+  },
+  { // Entry 94
+    0x1.e9306d671550b7fce52fe384e236ed51p-2,
+    0x1.8fep-2
+  },
+  { // Entry 95
+    0x1.aec7b35c8c209fffffe76d4ac148ca7ap-4,
+    0x1.9999999be6ebep-4
+  },
+  { // Entry 96
+    0x1.c56ecf3ddea747ffffa1cfcd9266f384p-3,
+    0x1.999999a7f45f9p-3
+  },
+  { // Entry 97
+    0x1.f7a0e4d5067effffffc2bf0d03877722p-2,
+    0x1.999999a867f17p-2
+  },
+  { // Entry 98
+    0x1.f7a0e4d8af7c480000325c9866d3f666p-2,
+    0x1.999999aadc06ap-2
+  },
+  { // Entry 99
+    0x1.fc8ecabe156a92f92ccd95f742d5f70fp-2,
+    0x1.9ce61d3061544p-2
+  },
+  { // Entry 100
+    0x1.c8082a8e3022880002e39fa93786b0cep-4,
+    0x1.b062a2df1de98p-4
+  },
+  { // Entry 101
+    0x1.b5e1f0f0c1d798a5b169cb191cd0c621p-8,
+    0x1.b46d1b46e5ccep-8
+  },
+  { // Entry 102
+    0x1.b5e9fa9919edd8bafdec03458df49c11p-8,
+    0x1.b4751746e5ccdp-8
+  },
+  { // Entry 103
+    0x1.b5e9fa9919ede8d65c8bacd72cd2a89cp-8,
+    0x1.b4751746e5ccep-8
+  },
+  { // Entry 104
+    0x1.b7594565a4b428b4734e2c9b43bec612p-8,
+    0x1.b5e1f0f0af677p-8
+  },
+  { // Entry 105
+    0x1.cf7fce3931c5e7ffe406b08dc477f91bp-8,
+    0x1.cdde2e3d70c6dp-8
+  },
+  { // Entry 106
+    0x1.cf44b5362775480990d2193fdac2a6c2p-9,
+    0x1.ce739ce735ce2p-9
+  },
+  { // Entry 107
+    0x1.8260dae0f18853ff9edaf44b27ba17b2p0,
+    0x1.d70a3d70a3d71p-1
+  },
+  { // Entry 108
+    0x1.dec5c594a41bb72f3ab6a63927f8e80dp-8,
+    0x1.dd083d2908a81p-8
+  },
+  { // Entry 109
+    0x1.e08690c3fb77571e49537d4d5f69aaf2p-8,
+    0x1.dec5c594ecfbcp-8
+  },
+  { // Entry 110
+    0x1.e6f8da92954ce80b660157d3ae9f4e70p-9,
+    0x1.e611d78dcf946p-9
+  },
+  { // Entry 111
+    0x1.95e784ba628073ff77d2f7ed4d6201bcp0,
+    0x1.e65f036272239p-1
+  },
+  { // Entry 112
+    0x1.e7d8753271e7a80359bd34ac05d687f5p-9,
+    0x1.e6f09e1a48351p-9
+  },
+  { // Entry 113
+    0x1.98df5c213427f4084f77d615f3544c56p0,
+    0x1.e8a974c5d39f7p-1
+  },
+  { // Entry 114
+    0x1.9f5b8bec582e4b59bb698dbd2576ed44p0,
+    0x1.eda1b9b5dff58p-1
+  },
+  { // Entry 115
+    0x1.f1be12f8f20cf876bccb9e47e3eb30b8p-7,
+    0x1.ee0p-7
+  },
+  { // Entry 116
+    0x1.f15c950aadd3178e4e8d488691307274p-8,
+    0x1.ef7bdef7bdef2p-8
+  },
+  { // Entry 117
+    0x1.f4647ce7fdefc80415bb8c747bed498ep-9,
+    0x1.f3709599bd0a0p-9
+  },
+  { // Entry 118
+    0x1.fbfc81c0062a280bc3db8a3918010b6ap-9,
+    0x1.fb01276ad538bp-9
+  },
+  { // Entry 119
+    0x1.4231178c2348f5f77eedb27dc404f616p734,
+    0x1.fcfffffffffffp8
+  },
+  { // Entry 120
+    0x1.74218bce788eb46746b38b578759ecc0p11,
+    0x1.ffeffffffffffp2
+  },
+  { // Entry 121
+    0x1.00000000009ff7ffffffea9aaaaaaa63p-39,
+    0x1.ffffffffff3ffp-40
+  },
+  { // Entry 122
+    0x1.0000000000000ffffffffffffeaaaaaap-50,
+    0x1.ffffffffffffep-51
+  },
+  { // Entry 123
+    0x1.ffffffffffffe7ffffffffffff155555p-54,
+    0x1.ffffffffffffep-54
+  },
+  { // Entry 124
+    0x1.00000000007ff80000002aa2aaaaaab5p-40,
+    0x1.fffffffffffffp-41
+  },
+  { // Entry 125
+    0x1.304d6aeca25253146dec9182369ba415p69,
+    0x1.7ffffffffffffp5
+  },
+  { // Entry 126
+    0x1.304d6aeca254b3af43c5d6293d5f65c7p69,
+    0x1.8p5
+  },
+  { // Entry 127
+    0x1.304d6aeca257144a199f1ad50558d32cp69,
+    0x1.8000000000001p5
+  },
+  { // Entry 128
+    -0x1.ffffffffffffffffffc0e327b6954e21p-1,
+    -0x1.a000000000001p5
+  },
+  { // Entry 129
+    -0x1.ffffffffffffffffffc0e327b6954da3p-1,
+    -0x1.ap5
+  },
+  { // Entry 130
+    -0x1.ffffffffffffffffffc0e327b6954d25p-1,
+    -0x1.9ffffffffffffp5
+  },
+  { // Entry 131
+    0x1.55779b984f395dea36a277b8bee2c64cp115,
+    0x1.3ffffffffffffp6
+  },
+  { // Entry 132
+    0x1.55779b984f3eb3c8a503b4a8e2487d98p115,
+    0x1.4p6
+  },
+  { // Entry 133
+    0x1.55779b984f4409a71364f1ae5d27ee69p115,
+    0x1.4000000000001p6
+  },
+  { // Entry 134
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.6000000000001p6
+  },
+  { // Entry 135
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.6p6
+  },
+  { // Entry 136
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.5ffffffffffffp6
+  },
+  { // Entry 137
+    0x1.40a4b9c27150866176d22f2139d1d40fp923,
+    0x1.3ffffffffffffp9
+  },
+  { // Entry 138
+    0x1.40a4b9c271789af8af205bb34f743337p923,
+    0x1.4p9
+  },
+  { // Entry 139
+    0x1.40a4b9c271a0af8fe76e8d47f7fd9c26p923,
+    0x1.4000000000001p9
+  },
+  { // Entry 140
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6000000000001p9
+  },
+  { // Entry 141
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6p9
+  },
+  { // Entry 142
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5ffffffffffffp9
+  },
+  { // Entry 143
+    0x1.03996528e072b78a330480884c79baf7p75,
+    0x1.9ffffffffffffp5
+  },
+  { // Entry 144
+    0x1.03996528e074bebcfd56416fc2c0eb92p75,
+    0x1.ap5
+  },
+  { // Entry 145
+    0x1.03996528e076c5efc7a8025b476db0d0p75,
+    0x1.a000000000001p5
+  },
+  { // Entry 146
+    -0x1.fffffffffffffffff28a2a28e2df408cp-1,
+    -0x1.8000000000001p5
+  },
+  { // Entry 147
+    -0x1.fffffffffffffffff28a2a28e2df25a0p-1,
+    -0x1.8p5
+  },
+  { // Entry 148
+    -0x1.fffffffffffffffff28a2a28e2df0ab5p-1,
+    -0x1.7ffffffffffffp5
+  },
+  { // Entry 149
+    0x1.f1056dc7bf1b0fc857b67999f503526fp126,
+    0x1.5ffffffffffffp6
+  },
+  { // Entry 150
+    0x1.f1056dc7bf22d3de0ed57615bc501f87p126,
+    0x1.6p6
+  },
+  { // Entry 151
+    0x1.f1056dc7bf2a97f3c5f472b093f3c91bp126,
+    0x1.6000000000001p6
+  },
+  { // Entry 152
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.4000000000001p6
+  },
+  { // Entry 153
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.4p6
+  },
+  { // Entry 154
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.3ffffffffffffp6
+  },
+  { // Entry 155
+    0x1.93bf4ec282bd3b36cd2f4011488a8364p1015,
+    0x1.5ffffffffffffp9
+  },
+  { // Entry 156
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1015,
+    0x1.6p9
+  },
+  { // Entry 157
+    0x1.93bf4ec283222b0a7dcffbfe10b3e34ap1015,
+    0x1.6000000000001p9
+  },
+  { // Entry 158
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.4000000000001p9
+  },
+  { // Entry 159
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.4p9
+  },
+  { // Entry 160
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.3ffffffffffffp9
+  },
+  { // Entry 161
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1cb90bfbe8e7cp9
+  },
+  { // Entry 162
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.397217f7d1cf8p9
+  },
+  { // Entry 163
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.562b23f3bab73p9
+  },
+  { // Entry 164
+    -0x1.0000000000000654361c4c67fbf90232p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 165
+    -0x1.fffffffffffffca86c3898cff81747c6p-2,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 166
+    -0x1.ffffffffffffeca86c3898cff7bc8b28p-2,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 167
+    -0x1.2bec3330188676e1ed35fec1b10e40dcp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 168
+    -0x1.2bec333018866b919e02bf23cad327f3p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 169
+    -0x1.2bec3330188660414ecf7f85e46acdcdp-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 170
+    -0x1.45d819a94b14b3030eebbb9c6d4a2ce8p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 171
+    -0x1.45d819a94b14a58ebf1f0e3296a2beb6p-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 172
+    -0x1.45d819a94b14981a6f5260c8bfe067e5p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 173
+    -0x1.53f391822dbc78ae783b45864b0aa398p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 174
+    -0x1.53f391822dbc6a026bccc7b4077bfc0ap-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 175
+    -0x1.53f391822dbc5b565f5e49e1c3dea870p-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 176
+    -0x1.5b505d5b6f26868f9677878648368b11p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 177
+    -0x1.5b505d5b6f26773d3ea6353ddb75fe46p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 178
+    -0x1.5b505d5b6f2667eae6d4e2f56eadc84fp-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 179
+    -0x1.5f134923757f3dc3f347d61df5fb6626p-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 180
+    -0x1.5f134923757f2e1bb81a1efb55c8e21cp-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 181
+    -0x1.5f134923757f1e737cec67d8b5927402p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 182
+    0x1.66c34c5615d0d7db1473bac29ad1b98dp-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 183
+    0x1.66c34c5615d0e834c546d0480f09bb89p-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 184
+    0x1.66c34c5615d0f88e7619e5cd8345d3f0p-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 185
+    0x1.6ab0d9f3121eb0fea4f25282282cb459p-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 186
+    0x1.6ab0d9f3121ec1b3fd5f4c0b37896101p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 187
+    0x1.6ab0d9f3121ed26955cc459446ee6856p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 188
+    0x1.72b83c7d517ac7c7c0d3432ad543afa6p-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 189
+    0x1.72b83c7d517ad93a790fc07c501430c3p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 190
+    0x1.72b83c7d517aeaad314c3dcdcaf62498p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 191
+    0x1.837f0518db8a7ff3f7635f5fbe54ebe8p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 192
+    0x1.837f0518db8a92faf56d9116d367dad5p-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 193
+    0x1.837f0518db8aa601f377c2cde8a0d7bep-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 194
+    0x1.a827999fcef308c835779a431e05cabbp-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 195
+    0x1.a827999fcef31f68d3de197eea562ccep-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 196
+    0x1.a827999fcef33609724498bab701115ap-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 197
+    0x1.ffffffffffffd950d871319ff0ef3435p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 198
+    0x1.fffffffffffff950d871319ff039baf9p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 199
+    0x1.0000000000000ca86c3898cff84220dep0,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 200
+    0x1.7fffffffffffd950d871319ff1aa4328p1,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 201
+    0x1.7ffffffffffff950d871319ff03f50afp1,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 202
+    0x1.8000000000001950d871319ff0d45e36p1,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 203
+    0x1.dfffffffffffb2a1b0e2633fe640c21bp3,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 204
+    0x1.dffffffffffff2a1b0e2633fe094f837p3,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 205
+    0x1.e0000000000032a1b0e2633fe2e92e54p3,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 206
+    0x1.fdffffffffff654361c4c67fd8327361p7,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 207
+    0x1.fdffffffffffe54361c4c67fc1834bd3p7,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 208
+    0x1.fe0000000000654361c4c67fcad42444p7,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 209
+    0x1.fffdfffffffeca86c3898cffdf28a36fp15,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 210
+    0x1.fffdffffffffca86c3898cff846c0534p15,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 211
+    0x1.fffe00000000ca86c3898cffa9af66f9p15,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 212
+    0x1.fffffffdfffd950d87131a007960398fp31,
+    0x1.62e42fefa39eep4
+  },
+  { // Entry 213
+    0x1.fffffffdffff950d871319ff0e6dc0a3p31,
+    0x1.62e42fefa39efp4
+  },
+  { // Entry 214
+    0x1.fffffffe0001950d871319ffa37b47b6p31,
+    0x1.62e42fefa39f0p4
+  },
+  { // Entry 215
+    0x1.ffffffffffb2a1b0e26345b8dfe00697p1023,
+    0x1.62e42fefa39eep9
+  },
+  { // Entry 216
+    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 217
+    HUGE_VAL,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 218
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39f0p9
+  },
+  { // Entry 219
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39efp9
+  },
+  { // Entry 220
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39eep9
+  },
+  { // Entry 221
+    -0x1.c5041854df7d5ed1e4b8c796ef6ef281p-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 222
+    -0x1.c5041854df7d45e5f51a1b14e4b86234p-3,
+    -0x1.0p-2
+  },
+  { // Entry 223
+    -0x1.c5041854df7d396ffd4ac4d3df37b827p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 224
+    -0x1.e14aed893eef58797f12838f2b969ac0p-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 225
+    -0x1.e14aed893eef3c3c14ed960d0a2b5054p-4,
+    -0x1.0p-3
+  },
+  { // Entry 226
+    -0x1.e14aed893eef2e1d5fdb1f4bf9607d0ep-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 227
+    -0x1.f0540438fd5c4fb179fdc0f96e33a687p-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 228
+    -0x1.f0540438fd5c31a1ce01f9f6ca74502bp-5,
+    -0x1.0p-4
+  },
+  { // Entry 229
+    -0x1.f0540438fd5c2299f804167578895f1dp-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 230
+    -0x1.f8152aee9450fc6df41295c712a2cfcbp-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 231
+    -0x1.f8152aee9450dd69fea80d113b1945c7p-6,
+    -0x1.0p-5
+  },
+  { // Entry 232
+    -0x1.f8152aee9450cde803f2c8b64f4eb008p-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 233
+    -0x1.fc055004416dd58cbbb4a9b4ef23fb67p-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 234
+    -0x1.fc055004416db60bbd08aac54a956e76p-7,
+    -0x1.0p-6
+  },
+  { // Entry 235
+    -0x1.fc055004416da64b3db2ab4d784b33e6p-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 236
+    -0x1.fe0154aaeed853c1e04bd155e0d61457p-8,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 237
+    -0x1.fe0154aaeed83401a07666b3bbde908fp-8,
+    -0x1.0p-7
+  },
+  { // Entry 238
+    -0x1.fe0154aaeed82421808bb162a96151a8p-8,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 239
+    -0x1.ff0055400443ae32f1e9274ffa299d5dp-9,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 240
+    -0x1.ff00554004438e52e1ee7b503e63818cp-9,
+    -0x1.0p-8
+  },
+  { // Entry 241
+    -0x1.ff00554004437e62d9f12550607fb463p-9,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 242
+    -0x1.ff801552aaef092effe8945b04b60168p-10,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 243
+    -0x1.ff801552aaeee93efbe93ef05c2dcb20p-10,
+    -0x1.0p-9
+  },
+  { // Entry 244
+    -0x1.ff801552aaeed946f9e9943b07e9502cp-10,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 245
+    -0x1.ffc005550004640ec40c0e6e9887b0c9p-11,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 246
+    -0x1.ffc0055500044416c30c23c298990114p-11,
+    -0x1.0p-10
+  },
+  { // Entry 247
+    -0x1.ffc005550004341ac28c2e6c98a17946p-11,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 248
+    -0x1.fff80015552acaedee97e99bef6c42ffp-14,
+    -0x1.0000000000001p-13
+  },
+  { // Entry 249
+    -0x1.fff80015552aaaeeee93e9a69a01a076p-14,
+    -0x1.0p-13
+  },
+  { // Entry 250
+    -0x1.fff80015552a9aef6e91e9abef4c4932p-14,
+    -0x1.fffffffffffffp-14
+  },
+  { // Entry 251
+    0x1.22d78f0fa0618f943ff0bb2de7cfdf0cp-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 252
+    0x1.22d78f0fa06199d9ef0eda6eaaf94d3bp-2,
+    0x1.0p-2
+  },
+  { // Entry 253
+    0x1.22d78f0fa061ae654d4b18f03189cbb3p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 254
+    0x1.10b022db7ae673d6bb2140ac1ce40bp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 255
+    0x1.10b022db7ae67ce76b441c27035c6a13p-3,
+    0x1.0p-3
+  },
+  { // Entry 256
+    0x1.10b022db7ae68f08cb89d31cd0685a4ap-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 257
+    0x1.082b577d34ed74d70455df87e5de0894p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 258
+    0x1.082b577d34ed7d5b1a019e225c9a951bp-4,
+    0x1.0p-4
+  },
+  { // Entry 259
+    0x1.082b577d34ed8e6345591b574a20744bp-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 260
+    0x1.040ac0224fd9298077606ce10b478c97p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 261
+    0x1.040ac0224fd931c17a1075750192f4d5p-5,
+    0x1.0p-5
+  },
+  { // Entry 262
+    0x1.040ac0224fd942437f70869cee2ff613p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 263
+    0x1.0202ad5778e4568dd8d74f51f70f7d9cp-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 264
+    0x1.0202ad5778e45eae192cfa41139ad15bp-6,
+    0x1.0p-6
+  },
+  { // Entry 265
+    0x1.0202ad5778e46eee99d8501f4cb484f2p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 266
+    0x1.0100ab00222d7e0921b6ae3791767825p-7,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 267
+    0x1.0100ab00222d861931c15e39b44e9937p-7,
+    0x1.0p-7
+  },
+  { // Entry 268
+    0x1.0100ab00222d963951d6be3dfa005e5fp-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 269
+    0x1.00802ab55777ca8226417cbfee2ff38bp-8,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 270
+    0x1.00802ab55777d28a2a42d26aa9ee67bcp-8,
+    0x1.0p-8
+  },
+  { // Entry 271
+    0x1.00802ab55777e29a32457dc0216c10dfp-8,
+    0x1.0000000000001p-8
+  },
+  { // Entry 272
+    0x1.00400aac00221cf682ab5035e9096355p-9,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 273
+    0x1.00400aac002224fa83ab7ae5e991e737p-9,
+    0x1.0p-9
+  },
+  { // Entry 274
+    0x1.00400aac0022350285abd045eaa34f2bp-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 275
+    0x1.002002aad5576f8c39739c649f2fc237p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 276
+    0x1.002002aad557778e39b3a1ba49dea952p-10,
+    0x1.0p-10
+  },
+  { // Entry 277
+    0x1.002002aad55787923a33ac659f3ca792p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 278
+    0x1.0004000aaabff821e24ea52ba86932b8p-13,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 279
+    0x1.0004000aaac00022224fa52e531931c1p-13,
+    0x1.0p-13
+  },
+  { // Entry 280
+    0x1.0004000aaac01022a251a533a87935d2p-13,
+    0x1.0000000000001p-13
+  },
+  { // Entry 281
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p9
+  },
+  { // Entry 282
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p9
+  },
+  { // Entry 283
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 284
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p8
+  },
+  { // Entry 285
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p8
+  },
+  { // Entry 286
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 287
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p7
+  },
+  { // Entry 288
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p7
+  },
+  { // Entry 289
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 290
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.0000000000001p6
+  },
+  { // Entry 291
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.0p6
+  },
+  { // Entry 292
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 293
+    -0x1.fffffffffff8dee6c227a6f43aa81530p-1,
+    -0x1.0000000000001p5
+  },
+  { // Entry 294
+    -0x1.fffffffffff8dee6c227a6e5f875997fp-1,
+    -0x1.0p5
+  },
+  { // Entry 295
+    -0x1.fffffffffff8dee6c227a6ded75c5ba7p-1,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 296
+    -0x1.fffffc395488a22f4a6b5eb875ea5a66p-1,
+    -0x1.0000000000001p4
+  },
+  { // Entry 297
+    -0x1.fffffc395488a22f46a4b3411819a2eep-1,
+    -0x1.0p4
+  },
+  { // Entry 298
+    -0x1.fffffc395488a22f44c15d85693145c7p-1,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 299
+    -0x1.ffd407bdf7dfb0bc84275b4125a96eb7p-1,
+    -0x1.0000000000001p3
+  },
+  { // Entry 300
+    -0x1.ffd407bdf7dfb0a688065730fe0231c2p-1,
+    -0x1.0p3
+  },
+  { // Entry 301
+    -0x1.ffd407bdf7dfb09b89f5d528ea2a7402p-1,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 302
+    -0x1.f69f5523ef61881c365f838e3cece5d4p-1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 303
+    -0x1.f69f5523ef6185c40ba87f669ea8ee15p-1,
+    -0x1.0p2
+  },
+  { // Entry 304
+    -0x1.f69f5523ef618497f64cfd52cf4eae35p-1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 305
+    -0x1.bab5557101f8da29e776343c313b029ep-1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 306
+    -0x1.bab5557101f8d1809224547b4bf5aa38p-1,
+    -0x1.0p1
+  },
+  { // Entry 307
+    -0x1.bab5557101f8cd2be77b649ad8eb0e05p-1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 308
+    -0x1.43a54e4e98864d90355d87727adb37e7p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 309
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.0p0
+  },
+  { // Entry 310
+    -0x1.43a54e4e98863be7b4b4e5bf114cd6e0p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 311
+    0x1.9476504ba8399f5b97cae35beb78c3c5p738,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 312
+    0x1.9476504ba852e6c09c8567c01c5a6648p738,
+    0x1.0p9
+  },
+  { // Entry 313
+    0x1.9476504ba885758aa5fa7545e10e8e46p738,
+    0x1.0000000000001p9
+  },
+  { // Entry 314
+    0x1.41c7a8814be192a5df25b042af824efdp369,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 315
+    0x1.41c7a8814beba0e323300f777da65854p369,
+    0x1.0p8
+  },
+  { // Entry 316
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp369,
+    0x1.0000000000001p8
+  },
+  { // Entry 317
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p184,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 318
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp184,
+    0x1.0p7
+  },
+  { // Entry 319
+    0x1.95e54c5dd42e271fa23bf3585b655060p184,
+    0x1.0000000000001p7
+  },
+  { // Entry 320
+    0x1.425982cf597a4d52c89ea847bbaa807ap92,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 321
+    0x1.425982cf597cd205ce3d5b3edb031756p92,
+    0x1.0p6
+  },
+  { // Entry 322
+    0x1.425982cf5981db6bd97ac13c35e666c6p92,
+    0x1.0000000000001p6
+  },
+  { // Entry 323
+    0x1.1f43fcc4b65da8944ac389b609e0f74ep46,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 324
+    0x1.1f43fcc4b65ec7d84788401842174074p46,
+    0x1.0p5
+  },
+  { // Entry 325
+    0x1.1f43fcc4b66106604111ace0104fc90ep46,
+    0x1.0000000000001p5
+  },
+  { // Entry 326
+    0x1.0f2ebb0a80017cfac56c30874afbab98p23,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 327
+    0x1.0f2ebb0a8002049223f170882b5ee5efp23,
+    0x1.0p4
+  },
+  { // Entry 328
+    0x1.0f2ebb0a800313c0e0fbf08ab7886866p23,
+    0x1.0000000000001p4
+  },
+  { // Entry 329
+    0x1.747ea7d470c681e43618ec18d53f1b21p11,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 330
+    0x1.747ea7d470c6df0be00e084a815d1de6p11,
+    0x1.0p3
+  },
+  { // Entry 331
+    0x1.747ea7d470c7995b33f840ae1f76e2e7p11,
+    0x1.0000000000001p3
+  },
+  { // Entry 332
+    0x1.acc902e273a54fdfb6777166e6760dfbp5,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 333
+    0x1.acc902e273a58678d6d3bfdb93db96d0p5,
+    0x1.0p2
+  },
+  { // Entry 334
+    0x1.acc902e273a5f3ab178c5cc50320149cp5,
+    0x1.0000000000001p2
+  },
+  { // Entry 335
+    0x1.98e64b8d4ddabf34d582cd2909aafb2ap2,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 336
+    0x1.98e64b8d4ddadcc33a3ba206b68abba8p2,
+    0x1.0p1
+  },
+  { // Entry 337
+    0x1.98e64b8d4ddb17e003ad4bc215d4ef86p2,
+    0x1.0000000000001p1
+  },
+  { // Entry 338
+    0x1.b7e151628aed14abb4e6442933f899f6p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 339
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.0p0
+  },
+  { // Entry 340
+    0x1.b7e151628aed55e8d487812f70f79067p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 341
+    0x1.ffc045692fc9dbc7b7e032576e5e26f8p1023,
+    0x1.62e41ffffffffp9
+  },
+  { // Entry 342
+    0x1.ffc045693009d3d065062f9267dff55ep1023,
+    0x1.62e42p9
+  },
+  { // Entry 343
+    0x1.ffc045693049cbd9122c34cc62776884p1023,
+    0x1.62e4200000001p9
+  },
+  { // Entry 344
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e4200000001p9
+  },
+  { // Entry 345
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42p9
+  },
+  { // Entry 346
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e41ffffffffp9
+  },
+  { // Entry 347
+    HUGE_VAL,
+    0x1.0p1020
+  },
+  { // Entry 348
+    HUGE_VAL,
+    0x1.999999999999ap1020
+  },
+  { // Entry 349
+    HUGE_VAL,
+    0x1.199999999999ap1021
+  },
+  { // Entry 350
+    HUGE_VAL,
+    0x1.6666666666667p1021
+  },
+  { // Entry 351
+    HUGE_VAL,
+    0x1.b333333333334p1021
+  },
+  { // Entry 352
+    HUGE_VAL,
+    0x1.0p1022
+  },
+  { // Entry 353
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 354
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 355
+    -0x1.p0,
+    -HUGE_VAL
+  },
+  { // Entry 356
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 357
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 358
+    HUGE_VAL,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 359
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 360
+    0x1.624046eb09338d2991a30893e7f4108dp4,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 361
+    -0x1.e9dfdd84a671066b619f1bb23ba2eb2fp-1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 362
+    0x1.e7bdb90ab26bdf555eaf19da7f043f2cp1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 363
+    -0x1.9590cee42260813cac44f53b3217ed19p-1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 364
+    0x1.b7e151628aed55e8d487812f70f79067p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 365
+    -0x1.43a54e4e98864d90355d87727adb37e7p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 366
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.0p0
+  },
+  { // Entry 367
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.0p0
+  },
+  { // Entry 368
+    0x1.b7e151628aed14abb4e6442933f899f6p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 369
+    -0x1.43a54e4e98863be7b4b4e5bf114cd6e0p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 370
+    0x1.317acd28e3954ab0b8e398654f25590ap0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 371
+    -0x1.168f47187dbc360f4ac035fc8ff9e913p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 372
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 373
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 374
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 375
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 376
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 377
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 378
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 379
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 380
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 381
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 382
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 383
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 384
+    0.0,
+    0.0
+  },
+  { // Entry 385
+    -0.0,
+    -0.0
+  },
+  { // Entry 386
+    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 387
+    HUGE_VAL,
+    0x1.62e42fefa39f0p9
+  }
+};
diff --git a/tests/math_data/expm1f_intel_data.h b/tests/math_data/expm1f_intel_data.h
new file mode 100644
index 0000000..f6f6bc2
--- /dev/null
+++ b/tests/math_data/expm1f_intel_data.h
@@ -0,0 +1,1182 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_expm1f_intel_data[] = {
+  { // Entry 0
+    -0x1.fffff00000555554000004444438e38ep-21,
+    -0x1.p-20
+  },
+  { // Entry 1
+    -0x1.fffff800001555552aaaaaeeeeee93e9p-22,
+    -0x1.p-21
+  },
+  { // Entry 2
+    -0x1.ffffff00000055555540000004444443p-25,
+    -0x1.p-24
+  },
+  { // Entry 3
+    -0x1.fffff40000155555bffffd99999b8e38p-21,
+    -0x1.000002p-20
+  },
+  { // Entry 4
+    -0x1.000000fffffcaaaaaa55555acccccb6cp-23,
+    -0x1.000002p-23
+  },
+  { // Entry 5
+    -0x1.92ead6fcef62fa8ffd6dddea52cb775dp-2,
+    -0x1.0001p-1
+  },
+  { // Entry 6
+    -0x1.0003ffffff7ffbfff8002aacaab2aaaap-40,
+    -0x1.0004p-40
+  },
+  { // Entry 7
+    -0x1.43eb2700073d423819fa85ce534f3bf1p-1,
+    -0x1.005fp0
+  },
+  { // Entry 8
+    -0x1.c59998f074353c5d0492e23cfecbc1f5p-3,
+    -0x1.0060p-2
+  },
+  { // Entry 9
+    -0x1.f48a2ae5cc72d28e4ff5d3940c608146p-5,
+    -0x1.023ep-4
+  },
+  { // Entry 10
+    -0x1.f2be57002fc371093dd9623ec6cdcf88p-4,
+    -0x1.09e940p-3
+  },
+  { // Entry 11
+    -0x1.4b3b8cffff78b97a60ce841d99138e34p-1,
+    -0x1.0a866cp0
+  },
+  { // Entry 12
+    -0x1.1e37fafffb5de84ddb61ac58d96c6109p-21,
+    -0x1.1e38p-21
+  },
+  { // Entry 13
+    -0x1.c96006fff735d59b28cc8226e99bd811p-2,
+    -0x1.2efd0ap-1
+  },
+  { // Entry 14
+    -0x1.d30023003cc4589a4a217749a50959dcp-1,
+    -0x1.374118p1
+  },
+  { // Entry 15
+    -0x1.7e8bcef9c4fe9e0ac2d05310f5cbd8f2p-1,
+    -0x1.60p0
+  },
+  { // Entry 16
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.60p6
+  },
+  { // Entry 17
+    -0x1.9758b6f38b012949e7b93c7f27202a48p-3,
+    -0x1.c62ee0p-3
+  },
+  { // Entry 18
+    -0x1.751b2169ee200a7bb4f26bccb619a80ep-2,
+    -0x1.cffffep-2
+  },
+  { // Entry 19
+    -0x1.a066d300130ff4e4fc65bad0a7f72ca1p-3,
+    -0x1.d1848cp-3
+  },
+  { // Entry 20
+    -0x1.fffff6ffff2933320eb3310fc95c97a5p-1,
+    -0x1.e434dep3
+  },
+  { // Entry 21
+    -0x1.fffff7fffffffffffffffffffffffffcp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 22
+    -0x1.ffffffffffffffffffffffe6961ed7f0p-1,
+    -0x1.fffffcp5
+  },
+  { // Entry 23
+    0x1.0100ab00222d861931c15e39b44e9937p-7,
+    0x1.p-7
+  },
+  { // Entry 24
+    0x1.00000400000aaaaac000002222224fa4p-21,
+    0x1.p-21
+  },
+  { // Entry 25
+    0x1.bcab8900011ff456b56212f998951e38p0,
+    0x1.01c18ep0
+  },
+  { // Entry 26
+    0x1.b61e5ca3a5e30b2f0a03f28af9ce0084p93,
+    0x1.04p6
+  },
+  { // Entry 27
+    0x1.c62b1d7eea9cc6f6ea3ff782be73b0cbp0,
+    0x1.0534p0
+  },
+  { // Entry 28
+    0x1.aef1abc1b1c54e2429d81ddb79775eefp94,
+    0x1.06b4e0p6
+  },
+  { // Entry 29
+    0x1.94c2590c0ac9993e93aa8acaf1046c73p96,
+    0x1.0c0040p6
+  },
+  { // Entry 30
+    0x1.2a7938fffec9616b4d631cb33d990160p-3,
+    0x1.16a150p-3
+  },
+  { // Entry 31
+    0x1.752a64ffff6149fa0bd6f95bb10bf8e8p-1,
+    0x1.184b62p-1
+  },
+  { // Entry 32
+    0x1.37703d00002d814e4605b09d7ef15368p-4,
+    0x1.2c2a90p-4
+  },
+  { // Entry 33
+    0x1.44835afffef0f01e2e400989de81bd82p-3,
+    0x1.2d3b76p-3
+  },
+  { // Entry 34
+    0x1.021c84fffff5d54e4229ede943f4a168p7,
+    0x1.378cb4p2
+  },
+  { // Entry 35
+    0x1.ff2ac4707dee3cd35848bdb4d4296824p124,
+    0x1.5a912cp6
+  },
+  { // Entry 36
+    0x1.7ff7f6932445d2e31f1b7c20d7c7d871p126,
+    0x1.5ef7bcp6
+  },
+  { // Entry 37
+    0x1.f916467349b058b9c38906911b856052p126,
+    0x1.60107cp6
+  },
+  { // Entry 38
+    0x1.f76ba46733f4146a0f94b3d1311494bap127,
+    0x1.62d2e2p6
+  },
+  { // Entry 39
+    0x1.fff1086632b0e9b93bc5be44d9c1dea5p127,
+    0x1.62e412p6
+  },
+  { // Entry 40
+    0x1.8dbe63000000d7dc67e2e67575c06599p-3,
+    0x1.6b7d8ap-3
+  },
+  { // Entry 41
+    0x1.9185a8fffe5a4f000eb5ab63da3bfa3fp-3,
+    0x1.6ea6e2p-3
+  },
+  { // Entry 42
+    0x1.e5fa73631c80571bb785e84b1dff0fb4p70,
+    0x1.894a52p5
+  },
+  { // Entry 43
+    0x1.dfc5e500a0d64765f069273b7e215719p-2,
+    0x1.897ba8p-2
+  },
+  { // Entry 44
+    0x1.9a6e870bbb7b2779cded78be9b91a2dap71,
+    0x1.8d7bdep5
+  },
+  { // Entry 45
+    0x1.fb180600000c0175ee1c8855daaebdb6p1,
+    0x1.9a0bccp0
+  },
+  { // Entry 46
+    0x1.00f200ffff918c60a6f122a3b475e0fep-1,
+    0x1.a074b8p-2
+  },
+  { // Entry 47
+    0x1.c6b4aa00000bf2d58223ca9249b47316p-4,
+    0x1.af311ap-4
+  },
+  { // Entry 48
+    0x1.e1bcd4fffe314487556a09bb0c8a7551p-3,
+    0x1.b0a4d4p-3
+  },
+  { // Entry 49
+    0x1.d62649fffff82b1e6698411a08145a29p-4,
+    0x1.bd11a8p-4
+  },
+  { // Entry 50
+    0x1.05161b00011b9313efed24a09a8cb044p-2,
+    0x1.d11ebap-3
+  },
+  { // Entry 51
+    0x1.9a92e90baa2969fa8c71bb3c2be8bb40p85,
+    0x1.db1e7ep5
+  },
+  { // Entry 52
+    0x1.e63ebcfffee84008206c45435ee52722p-14,
+    0x1.e63786p-14
+  },
+  { // Entry 53
+    0x1.9768d30002d89bbd7f87c2131074c9c5p0,
+    0x1.e788b8p-1
+  },
+  { // Entry 54
+    0x1.6e23d980dd2d2fba285ff30446a78914p5,
+    0x1.ec2f24p1
+  },
+  { // Entry 55
+    0x1.a664d8ed7cc33ede965392722b0d87bfp22,
+    0x1.f7fffep3
+  },
+  { // Entry 56
+    0x1.b6904dfffe42514279db71397b7ffb45p0,
+    0x1.ff07cep-1
+  },
+  { // Entry 57
+    0x1.b6b11ea799b7c71cf2f6b9659c8155c6p0,
+    0x1.ff1ffep-1
+  },
+  { // Entry 58
+    0x1.3d59d2d8b22b41c2bb6334b9be7be902p92,
+    0x1.ffdffep5
+  },
+  { // Entry 59
+    0x1.00000b00000aaaa78fffe97777a4d832p-19,
+    0x1.fffff6p-20
+  },
+  { // Entry 60
+    0x1.fffff800000000000000000000000003p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 61
+    0x1.000001fffffaaaaa8ffffff77777fa4fp-21,
+    0x1.fffffcp-22
+  },
+  { // Entry 62
+    0x1.4258e1a2c0604eea1e874d7004e6dfb9p92,
+    0x1.fffffcp5
+  },
+  { // Entry 63
+    0x1.00000700001aaaaadd55554ccccba7d2p-20,
+    0x1.fffffep-21
+  },
+  { // Entry 64
+    0x1.304d1ed9511bf5a69db20e4cdbf6d8ffp69,
+    0x1.7ffffep5
+  },
+  { // Entry 65
+    0x1.304d6aeca254b3af43c5d6293d5f65c7p69,
+    0x1.80p5
+  },
+  { // Entry 66
+    0x1.304db70006924866b41845097c91e488p69,
+    0x1.800002p5
+  },
+  { // Entry 67
+    -0x1.ffffffffffffffffffc0e3377dc96717p-1,
+    -0x1.a00002p5
+  },
+  { // Entry 68
+    -0x1.ffffffffffffffffffc0e327b6954da3p-1,
+    -0x1.a0p5
+  },
+  { // Entry 69
+    -0x1.ffffffffffffffffffc0e317ef5d4261p-1,
+    -0x1.9ffffep5
+  },
+  { // Entry 70
+    0x1.5576f0dcac21787f2d57b14a700204e3p115,
+    0x1.3ffffep6
+  },
+  { // Entry 71
+    0x1.55779b984f3eb3c8a503b4a8e2487d98p115,
+    0x1.40p6
+  },
+  { // Entry 72
+    0x1.5578465447b9d5f83246af1e48e8025bp115,
+    0x1.400002p6
+  },
+  { // Entry 73
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.600002p6
+  },
+  { // Entry 74
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.60p6
+  },
+  { // Entry 75
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.5ffffep6
+  },
+  { // Entry 76
+    0x1.039924428f47511c03c75dd623bc47e1p75,
+    0x1.9ffffep5
+  },
+  { // Entry 77
+    0x1.03996528e074bebcfd56416fc2c0eb92p75,
+    0x1.a0p5
+  },
+  { // Entry 78
+    0x1.0399a60f41dbc2b085021312f505089dp75,
+    0x1.a00002p5
+  },
+  { // Entry 79
+    -0x1.fffffffffffffffff28a2d8657e93e43p-1,
+    -0x1.800002p5
+  },
+  { // Entry 80
+    -0x1.fffffffffffffffff28a2a28e2df25a0p-1,
+    -0x1.80p5
+  },
+  { // Entry 81
+    -0x1.fffffffffffffffff28a26cb6cfdafa0p-1,
+    -0x1.7ffffep5
+  },
+  { // Entry 82
+    0x1.f1047545465f97aad6774dfe16b960dep126,
+    0x1.5ffffep6
+  },
+  { // Entry 83
+    0x1.f1056dc7bf22d3de0ed57615bc501f87p126,
+    0x1.60p6
+  },
+  { // Entry 84
+    0x1.f106664ab4276b833993050c9aa09a91p126,
+    0x1.600002p6
+  },
+  { // Entry 85
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.400002p6
+  },
+  { // Entry 86
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.40p6
+  },
+  { // Entry 87
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.3ffffep6
+  },
+  { // Entry 88
+    -0x1.ffffffffffffffffffffffffffa57347p-1,
+    -0x1.274768p6
+  },
+  { // Entry 89
+    -0x1.fffffffffffffffffffffffffffffebdp-1,
+    -0x1.4e8ed0p6
+  },
+  { // Entry 90
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.75d638p6
+  },
+  { // Entry 91
+    -0x1.000000082e308632c06d5d65136575eap-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 92
+    -0x1.fffffe105c601cc1e199f9261fc7dbe6p-2,
+    -0x1.62e42ep-1
+  },
+  { // Entry 93
+    -0x1.fffffc105c5d2d1e406993e20adc02bfp-2,
+    -0x1.62e42cp-1
+  },
+  { // Entry 94
+    -0x1.2bec333baa280850b6bf9111bb873f60p-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 95
+    -0x1.2bec31d1a0414ba3511c18f32bb55d63p-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 96
+    -0x1.2bec30679659d9f0f7ed08e4eb06dfefp-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 97
+    -0x1.45d819b70d12db9f1551331188790df6p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 98
+    -0x1.45d81808831913911ad15724d9d51211p-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 99
+    -0x1.45d81659f91edfe0a1d20369bbdaa485p-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 100
+    -0x1.53f391912e7f21ab50219d67aa32363ap-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 101
+    -0x1.53f38fbbacf136790727bc2da36b8afcp-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 102
+    -0x1.53f38de62b6310968c6cc9a7616b33cbp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 103
+    -0x1.5b505d6b19f4b405dbb6b9ef18ad9e35p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 104
+    -0x1.5b505b80cefa7b6523305e22a4c06c28p-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 105
+    -0x1.5b5059968400241fbb0583252b4c1185p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 106
+    -0x1.5f1349337820aba6ac332ded98347904p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 107
+    -0x1.5f13473e70baed6e4fa19cb1aefb9a04p-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 108
+    -0x1.5f13454969551f8db7e1db11f47dc315p-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 109
+    0x1.66c3485061b3fe6a5d2f2e20f3da3783p-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 110
+    0x1.66c34a5b97ce491a4338414cff9666e6p-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 111
+    0x1.66c34c66cde8a423da13eb5efee5340ep-6,
+    0x1.62e430p-6
+  },
+  { // Entry 112
+    0x1.6ab0d5d6d1d44992503e4b6f3b09f07ep-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 113
+    0x1.6ab0d7ed7ce1b7b4c5ee2919ab4f11e6p-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 114
+    0x1.6ab0da0427ef4741ec75f440fd4eb0f9p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 115
+    0x1.72b838327ae1f9d7e70418a476da480dp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 116
+    0x1.72b83a60d1e9230cb3b52cd1200b8dcdp-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 117
+    0x1.72b83c8f28f0920c614fc4456de049fcp-4,
+    0x1.62e430p-4
+  },
+  { // Entry 118
+    0x1.837f006a90e2d9adf9b9b9c5850970d1p-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 119
+    0x1.837f02cb70a3406e2a79d1750af1d7e2p-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 120
+    0x1.837f052c50643f664b66a02ec5ac16dbp-3,
+    0x1.62e430p-3
+  },
+  { // Entry 121
+    0x1.a827940eca9f76673e51d2c4569cfb3ap-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 122
+    0x1.a82796e2de6a32d180ad0b353267983bp-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 123
+    0x1.a82799b6f2365945a8c0fb40a27174dap-2,
+    0x1.62e430p-2
+  },
+  { // Entry 124
+    0x1.fffff820b8c9d86525e55f587e34861ap-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 125
+    0x1.fffffc20b8c3f91dec78cb8cd53a92e3p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 126
+    0x1.000000105c610ceb57967842bd59f094p0,
+    0x1.62e430p-1
+  },
+  { // Entry 127
+    0x1.7ffff820b8d19779692fb0fcc0281246p1,
+    0x1.62e42cp0
+  },
+  { // Entry 128
+    0x1.7ffffc20b8c5d8eaff4ac013cf734639p1,
+    0x1.62e42ep0
+  },
+  { // Entry 129
+    0x1.80000020b8c21a5c85e8b244ed151cd8p1,
+    0x1.62e430p0
+  },
+  { // Entry 130
+    0x1.dffff04171c22b43a28d8088c347bf1fp3,
+    0x1.62e42cp1
+  },
+  { // Entry 131
+    0x1.dffff8417193310a429b71e70d792186p3,
+    0x1.62e42ep1
+  },
+  { // Entry 132
+    0x1.e0000041718436d066c07ca312f8b318p3,
+    0x1.62e430p1
+  },
+  { // Entry 133
+    0x1.fdffe082e40047c89dfa41d09c1e1ef8p7,
+    0x1.62e42cp2
+  },
+  { // Entry 134
+    0x1.fdfff082e3445ee55b3fa84a5dd849c9p7,
+    0x1.62e42ep2
+  },
+  { // Entry 135
+    0x1.fe000082e30875fe393de286837f485dp7,
+    0x1.62e430p2
+  },
+  { // Entry 136
+    0x1.fffdc105c9f0548760a823b0dfdaeb66p15,
+    0x1.62e42cp3
+  },
+  { // Entry 137
+    0x1.fffde105c700b10c3e2a549fbdebb0dap15,
+    0x1.62e42ep3
+  },
+  { // Entry 138
+    0x1.fffe0105c6110d722173b0ea5050713ap15,
+    0x1.62e430p3
+  },
+  { // Entry 139
+    0x1.ffff82099b9fbc6d5dda406ad9f93354p31,
+    0x1.62e42cp4
+  },
+  { // Entry 140
+    0x1.ffffc2098fe12f101740ac9653f78fe3p31,
+    0x1.62e42ep4
+  },
+  { // Entry 141
+    0x1.00000104c611505d7f74a41433312dp32,
+    0x1.62e430p4
+  },
+  { // Entry 142
+    0x1.fffe082f28688d3872ab8aa69f3dc356p127,
+    0x1.62e42cp6
+  },
+  { // Entry 143
+    0x1.ffff082e6c7fed1d3fd5cff7e1f6058fp127,
+    0x1.62e42ep6
+  },
+  { // Entry 144
+    HUGE_VALF,
+    0x1.62e430p6
+  },
+  { // Entry 145
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da2p6
+  },
+  { // Entry 146
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da0p6
+  },
+  { // Entry 147
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1d9ep6
+  },
+  { // Entry 148
+    -0x1.c5041b725d705416b9a2fe9ecfd0f12fp-3,
+    -0x1.000002p-2
+  },
+  { // Entry 149
+    -0x1.c5041854df7d45e5f51a1b14e4b86234p-3,
+    -0x1.p-2
+  },
+  { // Entry 150
+    -0x1.c50416c620832945f52a143b7ab9cc40p-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 151
+    -0x1.e14af110ec3368f6b0943acd54603c38p-4,
+    -0x1.000002p-3
+  },
+  { // Entry 152
+    -0x1.e14aed893eef3c3c14ed960d0a2b5054p-4,
+    -0x1.p-3
+  },
+  { // Entry 153
+    -0x1.e14aebc5684cd12688af02d3c4c33ae5p-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 154
+    -0x1.f05407faf2db6e62ca86b906177f8ab4p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 155
+    -0x1.f0540438fd5c31a1ce01f9f6ca74502bp-5,
+    -0x1.p-4
+  },
+  { // Entry 156
+    -0x1.f0540258029c6629cdc6e0688e0c17d1p-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 157
+    -0x1.f8152ecf12fe0f7cc4305325eb3cc27ep-6,
+    -0x1.000002p-5
+  },
+  { // Entry 158
+    -0x1.f8152aee9450dd69fea80d113b1945c7p-6,
+    -0x1.p-5
+  },
+  { // Entry 159
+    -0x1.f81528fe54fa2d1da3d441866c2e2c68p-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 160
+    -0x1.fc0553f461432629324524f0e3968455p-7,
+    -0x1.000002p-6
+  },
+  { // Entry 161
+    -0x1.fc055004416db60bbd08aac54a956e76p-7,
+    -0x1.p-6
+  },
+  { // Entry 162
+    -0x1.fc054e0c3182f22ca2e9fdd61fb3c4d6p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 163
+    -0x1.fe0158a2f6d2d965d520469a1b630418p-8,
+    -0x1.000002p-7
+  },
+  { // Entry 164
+    -0x1.fe0154aaeed83401a07666b3bbde908fp-8,
+    -0x1.p-7
+  },
+  { // Entry 165
+    -0x1.fe0152aeeadadb5b7a2976ba2d283634p-8,
+    -0x1.fffffep-8
+  },
+  { // Entry 166
+    -0x1.ff00593c0642dfd6d7680bd2846289e8p-9,
+    -0x1.000002p-8
+  },
+  { // Entry 167
+    -0x1.ff00554004438e52e1ee7b503e63818cp-9,
+    -0x1.p-8
+  },
+  { // Entry 168
+    -0x1.ff0053420343e293e5b233ee2249277bp-9,
+    -0x1.fffffep-9
+  },
+  { // Entry 169
+    -0x1.ff801950ab6ed1ed50ba61050b26a7c2p-10,
+    -0x1.000002p-9
+  },
+  { // Entry 170
+    -0x1.ff801552aaeee93efbe93ef05c2dcb20p-10,
+    -0x1.p-9
+  },
+  { // Entry 171
+    -0x1.ff801353aaaef3689150b624e4d2f2dap-10,
+    -0x1.fffffep-10
+  },
+  { // Entry 172
+    -0x1.ffc009540024406c8302028c7714cceap-11,
+    -0x1.000002p-10
+  },
+  { // Entry 173
+    -0x1.ffc0055500044416c30c23c298990114p-11,
+    -0x1.p-10
+  },
+  { // Entry 174
+    -0x1.ffc003557ff4452c130b34ed9d5c017ep-11,
+    -0x1.fffffep-11
+  },
+  { // Entry 175
+    -0x1.fff80415352b2acd9a413af860684c9cp-14,
+    -0x1.000002p-13
+  },
+  { // Entry 176
+    -0x1.fff80015552aaaeeee93e9a69a01a076p-14,
+    -0x1.p-13
+  },
+  { // Entry 177
+    -0x1.fff7fe15652a6ae7997d3dfdfecc3a6bp-14,
+    -0x1.fffffep-14
+  },
+  { // Entry 178
+    0x1.22d78dc6ea7dff08931d74663f93346dp-2,
+    0x1.fffffep-3
+  },
+  { // Entry 179
+    0x1.22d78f0fa06199d9ef0eda6eaaf94d3bp-2,
+    0x1.p-2
+  },
+  { // Entry 180
+    0x1.22d791a10c29c60511d91ff00eb6fedap-2,
+    0x1.000002p-2
+  },
+  { // Entry 181
+    0x1.10b021b964e233996eb974cb64f11f96p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 182
+    0x1.10b022db7ae67ce76b441c27035c6a13p-3,
+    0x1.p-3
+  },
+  { // Entry 183
+    0x1.10b0251fa6ef7c4ba6003cf91fe85dc9p-3,
+    0x1.000002p-3
+  },
+  { // Entry 184
+    0x1.082b566cb2380e0be0d559a0150172f7p-4,
+    0x1.fffffep-5
+  },
+  { // Entry 185
+    0x1.082b577d34ed7d5b1a019e225c9a951bp-4,
+    0x1.p-4
+  },
+  { // Entry 186
+    0x1.082b599e3a588f120e61af4869c98421p-4,
+    0x1.000002p-4
+  },
+  { // Entry 187
+    0x1.040abf1a2f8334cf7c9ee0b1d34ae144p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 188
+    0x1.040ac0224fd931c17a1075750192f4d5p-5,
+    0x1.p-5
+  },
+  { // Entry 189
+    0x1.040ac232908544687d03fabf568a3de2p-5,
+    0x1.000002p-5
+  },
+  { // Entry 190
+    0x1.0202ac5370d9ab5845b0e78f0b42a783p-6,
+    0x1.fffffep-7
+  },
+  { // Entry 191
+    0x1.0202ad5778e45eae192cfa41139ad15bp-6,
+    0x1.p-6
+  },
+  { // Entry 192
+    0x1.0202af5f88f9d18a20a5b04c4fc86c51p-6,
+    0x1.000002p-6
+  },
+  { // Entry 193
+    0x1.0100a9fe202c311aef67a75b93d0aff7p-7,
+    0x1.fffffep-8
+  },
+  { // Entry 194
+    0x1.0100ab00222d861931c15e39b44e9937p-7,
+    0x1.p-7
+  },
+  { // Entry 195
+    0x1.0100ad0426303621c27cd3ff977212f4p-7,
+    0x1.000002p-7
+  },
+  { // Entry 196
+    0x1.008029b456f7a855530b151055fcccd9p-8,
+    0x1.fffffep-9
+  },
+  { // Entry 197
+    0x1.00802ab55777d28a2a42d26aa9ee67bcp-8,
+    0x1.p-8
+  },
+  { // Entry 198
+    0x1.00802cb7587829f6da32ce4058b94099p-8,
+    0x1.000002p-8
+  },
+  { // Entry 199
+    0x1.004009ab80021fe4a3a269b377bf18d6p-9,
+    0x1.fffffep-10
+  },
+  { // Entry 200
+    0x1.00400aac002224fa83ab7ae5e991e737p-9,
+    0x1.p-9
+  },
+  { // Entry 201
+    0x1.00400cad006230a703eda58bed592121p-9,
+    0x1.000002p-9
+  },
+  { // Entry 202
+    0x1.002001aa954f77038c5ec3e966c711f3p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 203
+    0x1.002002aad557778e39b3a1ba49dea952p-10,
+    0x1.p-10
+  },
+  { // Entry 204
+    0x1.002004ab55677963c4635dec1c0ebe87p-10,
+    0x1.000002p-10
+  },
+  { // Entry 205
+    0x1.0003ff0aa2bfe025cd19a5ad38b10c96p-13,
+    0x1.fffffep-14
+  },
+  { // Entry 206
+    0x1.0004000aaac00022224fa52e531931c1p-13,
+    0x1.p-13
+  },
+  { // Entry 207
+    0x1.0004020abac04032cd7ba730cfeb8c1ep-13,
+    0x1.000002p-13
+  },
+  { // Entry 208
+    -0x1.ffffffffffffffffffffffe6963841c5p-1,
+    -0x1.000002p6
+  },
+  { // Entry 209
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.p6
+  },
+  { // Entry 210
+    -0x1.ffffffffffffffffffffffe696253268p-1,
+    -0x1.fffffep5
+  },
+  { // Entry 211
+    -0x1.fffffffffff8dee88a6dbd53498e13ccp-1,
+    -0x1.000002p5
+  },
+  { // Entry 212
+    -0x1.fffffffffff8dee6c227a6e5f875997fp-1,
+    -0x1.p5
+  },
+  { // Entry 213
+    -0x1.fffffffffff8dee5de0470e8ba3e9067p-1,
+    -0x1.fffffep4
+  },
+  { // Entry 214
+    -0x1.fffffc3955017796a5082c3f27acd321p-1,
+    -0x1.000002p4
+  },
+  { // Entry 215
+    -0x1.fffffc395488a22f46a4b3411819a2eep-1,
+    -0x1.p4
+  },
+  { // Entry 216
+    -0x1.fffffc39544c3775ed71e1eab18a7021p-1,
+    -0x1.fffffep3
+  },
+  { // Entry 217
+    -0x1.ffd407c0b763bb2c6c6d1f372c7be8d8p-1,
+    -0x1.000002p3
+  },
+  { // Entry 218
+    -0x1.ffd407bdf7dfb0a688065730fe0231c2p-1,
+    -0x1.p3
+  },
+  { // Entry 219
+    -0x1.ffd407bc981d9ae67d3bdf5125871e80p-1,
+    -0x1.fffffep2
+  },
+  { // Entry 220
+    -0x1.f69f556ef4b73a33a7188427d84778e4p-1,
+    -0x1.000002p2
+  },
+  { // Entry 221
+    -0x1.f69f5523ef6185c40ba87f669ea8ee15p-1,
+    -0x1.p2
+  },
+  { // Entry 222
+    -0x1.f69f54fe6cb5ca7c3a7b03828a0e81ebp-1,
+    -0x1.fffffep1
+  },
+  { // Entry 223
+    -0x1.bab556862ca0e3235d497e670376d71fp-1,
+    -0x1.000002p1
+  },
+  { // Entry 224
+    -0x1.bab5557101f8d1809224547b4bf5aa38p-1,
+    -0x1.p1
+  },
+  { // Entry 225
+    -0x1.bab554e66ca328ef2e4cf602f5709f13p-1,
+    -0x1.fffffep0
+  },
+  { // Entry 226
+    -0x1.43a54fc74de82be41b573089f7ac0364p-1,
+    -0x1.000002p0
+  },
+  { // Entry 227
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.p0
+  },
+  { // Entry 228
+    -0x1.43a54d923dd43235b78c235547ec9cdcp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 229
+    0x1.4259323902dbc6e62e3e07be26cd904cp92,
+    0x1.fffffep5
+  },
+  { // Entry 230
+    0x1.425982cf597cd205ce3d5b3edb031756p92,
+    0x1.p6
+  },
+  { // Entry 231
+    0x1.425a23fc432fb5d556006a3d8e7ee11bp92,
+    0x1.000002p6
+  },
+  { // Entry 232
+    0x1.1f43d8dc3904b8ed87a5abd50621706ap46,
+    0x1.fffffep4
+  },
+  { // Entry 233
+    0x1.1f43fcc4b65ec7d84788401842174074p46,
+    0x1.p5
+  },
+  { // Entry 234
+    0x1.1f444495be8a1616a1e5e388779bc146p46,
+    0x1.000002p5
+  },
+  { // Entry 235
+    0x1.0f2eaa1794b8f3edb5c10d26a51f420fp23,
+    0x1.fffffep3
+  },
+  { // Entry 236
+    0x1.0f2ebb0a8002049223f170882b5ee5efp23,
+    0x1.p4
+  },
+  { // Entry 237
+    0x1.0f2edcf059c1b22312bed964006ee633p23,
+    0x1.000002p4
+  },
+  { // Entry 238
+    0x1.747e9c2f7bb6cf5a276ee08236c2d6c3p11,
+    0x1.fffffep2
+  },
+  { // Entry 239
+    0x1.747ea7d470c6df0be00e084a815d1de6p11,
+    0x1.p3
+  },
+  { // Entry 240
+    0x1.747ebf1e5bfe757019de4e22b113fde9p11,
+    0x1.000002p3
+  },
+  { // Entry 241
+    0x1.acc8fc0f4fa7a2f2459a6ef53c315f0fp5,
+    0x1.fffffep1
+  },
+  { // Entry 242
+    0x1.acc902e273a58678d6d3bfdb93db96d0p5,
+    0x1.p2
+  },
+  { // Entry 243
+    0x1.acc91088bbf33336f0ee52b1ad858e43p5,
+    0x1.000002p2
+  },
+  { // Entry 244
+    0x1.98e647db814773f419262ee477a98616p2,
+    0x1.fffffep0
+  },
+  { // Entry 245
+    0x1.98e64b8d4ddadcc33a3ba206b68abba8p2,
+    0x1.p1
+  },
+  { // Entry 246
+    0x1.98e652f0e717d92d15cd610022ae51e3p2,
+    0x1.000002p1
+  },
+  { // Entry 247
+    0x1.b7e14eaaa99d23d07a843854f80eb965p0,
+    0x1.fffffep-1
+  },
+  { // Entry 248
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.p0
+  },
+  { // Entry 249
+    0x1.b7e156d24d955f43402b1af2d27591c2p0,
+    0x1.000002p0
+  },
+  { // Entry 250
+    HUGE_VALF,
+    0x1.p124
+  },
+  { // Entry 251
+    HUGE_VALF,
+    0x1.99999ap124
+  },
+  { // Entry 252
+    HUGE_VALF,
+    0x1.19999ap125
+  },
+  { // Entry 253
+    HUGE_VALF,
+    0x1.666668p125
+  },
+  { // Entry 254
+    HUGE_VALF,
+    0x1.b33334p125
+  },
+  { // Entry 255
+    HUGE_VALF,
+    0x1.p126
+  },
+  { // Entry 256
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 257
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 258
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 259
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 260
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 261
+    HUGE_VALF,
+    0x1.fffffcp127
+  },
+  { // Entry 262
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp127
+  },
+  { // Entry 263
+    0x1.6240490a165620d9b922aaa22a8e4c09p4,
+    0x1.921fb6p1
+  },
+  { // Entry 264
+    -0x1.e9dfdda51a16cb6a6c29449e73dceabap-1,
+    -0x1.921fb6p1
+  },
+  { // Entry 265
+    0x1.e7bdbace4109994c2555657347d02f77p1,
+    0x1.921fb6p0
+  },
+  { // Entry 266
+    -0x1.9590cf323040b06ca55a506162a742f5p-1,
+    -0x1.921fb6p0
+  },
+  { // Entry 267
+    0x1.b7e156d24d955f43402b1af2d27591c2p0,
+    0x1.000002p0
+  },
+  { // Entry 268
+    -0x1.43a54fc74de82be41b573089f7ac0364p-1,
+    -0x1.000002p0
+  },
+  { // Entry 269
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.p0
+  },
+  { // Entry 270
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.p0
+  },
+  { // Entry 271
+    0x1.b7e14eaaa99d23d07a843854f80eb965p0,
+    0x1.fffffep-1
+  },
+  { // Entry 272
+    -0x1.43a54d923dd43235b78c235547ec9cdcp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 273
+    0x1.317acdf6c5663201980ec69bd74868acp0,
+    0x1.921fb6p-1
+  },
+  { // Entry 274
+    -0x1.168f476e16a8feaa2183b486fed0e5cep-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 275
+    0x1.00000200000000000000000000000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 276
+    -0x1.000001fffffffffffffffffffffffffdp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 277
+    0x1.00000000000000000000000000000002p-126,
+    0x1.p-126
+  },
+  { // Entry 278
+    -0x1.fffffffffffffffffffffffffffffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 279
+    0x1.fffffc00000000000000000000000003p-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 280
+    -0x1.fffffbfffffffffffffffffffffffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 281
+    0x1.fffff800000000000000000000000003p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 282
+    -0x1.fffff7fffffffffffffffffffffffffcp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 283
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 284
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 285
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 286
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 287
+    0.0,
+    0.0f
+  },
+  { // Entry 288
+    -0.0,
+    -0.0f
+  },
+  { // Entry 289
+    0x1.ffff082e6c7fed1d3fd5cff7e1f6058fp127,
+    0x1.62e42ep6
+  },
+  { // Entry 290
+    HUGE_VALF,
+    0x1.62e430p6
+  }
+};
diff --git a/tests/math_data/fabs_intel_data.h b/tests/math_data/fabs_intel_data.h
new file mode 100644
index 0000000..92db0ca
--- /dev/null
+++ b/tests/math_data/fabs_intel_data.h
@@ -0,0 +1,494 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_fabs_intel_data[] = {
+  { // Entry 0
+    0x1.p-10,
+    -0x1.0p-10
+  },
+  { // Entry 1
+    0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2
+    0.0,
+    -0.0
+  },
+  { // Entry 3
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 4
+    0x1.fffffffffffff0p999,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 5
+    0x1.p1000,
+    0x1.0p1000
+  },
+  { // Entry 6
+    0x1.00000000000010p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 7
+    0x1.fffffffffffff0p199,
+    0x1.fffffffffffffp199
+  },
+  { // Entry 8
+    0x1.p200,
+    0x1.0p200
+  },
+  { // Entry 9
+    0x1.00000000000010p200,
+    0x1.0000000000001p200
+  },
+  { // Entry 10
+    0x1.fffffffffffff0p99,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 11
+    0x1.p100,
+    0x1.0p100
+  },
+  { // Entry 12
+    0x1.00000000000010p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 13
+    0x1.fffffffffffff0p19,
+    0x1.fffffffffffffp19
+  },
+  { // Entry 14
+    0x1.p20,
+    0x1.0p20
+  },
+  { // Entry 15
+    0x1.00000000000010p20,
+    0x1.0000000000001p20
+  },
+  { // Entry 16
+    0x1.fffffffffffff0p14,
+    0x1.fffffffffffffp14
+  },
+  { // Entry 17
+    0x1.p15,
+    0x1.0p15
+  },
+  { // Entry 18
+    0x1.00000000000010p15,
+    0x1.0000000000001p15
+  },
+  { // Entry 19
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 20
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 21
+    0x1.00000000000010p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 22
+    0x1.fffffffffffff0p8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 23
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 24
+    0x1.00000000000010p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 25
+    0x1.fffffffffffff0p6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 26
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 27
+    0x1.00000000000010p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 28
+    0x1.fffffffffffff0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 29
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 30
+    0x1.00000000000010p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 31
+    0x1.fffffffffffff0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 32
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 33
+    0x1.00000000000010p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 34
+    0x1.fffffffffffff0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 35
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 36
+    0x1.00000000000010p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 37
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 38
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 39
+    0x1.00000000000010p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 40
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 41
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 42
+    0x1.00000000000010p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 43
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 44
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 45
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 46
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 47
+    0x1.p-1,
+    0x1.0p-1
+  },
+  { // Entry 48
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 49
+    0x1.fffffffffffff0p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 50
+    0x1.p-2,
+    0x1.0p-2
+  },
+  { // Entry 51
+    0x1.00000000000010p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 52
+    0x1.fffffffffffff0p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 53
+    0x1.p-3,
+    0x1.0p-3
+  },
+  { // Entry 54
+    0x1.00000000000010p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 55
+    0x1.fffffffffffff0p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 56
+    0x1.p-4,
+    0x1.0p-4
+  },
+  { // Entry 57
+    0x1.00000000000010p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 58
+    0x1.fffffffffffff0p-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 59
+    0x1.p-5,
+    0x1.0p-5
+  },
+  { // Entry 60
+    0x1.00000000000010p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 61
+    0x1.fffffffffffff0p-8,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 62
+    0x1.p-7,
+    0x1.0p-7
+  },
+  { // Entry 63
+    0x1.00000000000010p-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p-10,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 65
+    0x1.p-9,
+    0x1.0p-9
+  },
+  { // Entry 66
+    0x1.00000000000010p-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 67
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 68
+    0x1.p-10,
+    0x1.0p-10
+  },
+  { // Entry 69
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 70
+    0x1.fffffffffffff0p-16,
+    0x1.fffffffffffffp-16
+  },
+  { // Entry 71
+    0x1.p-15,
+    0x1.0p-15
+  },
+  { // Entry 72
+    0x1.00000000000010p-15,
+    0x1.0000000000001p-15
+  },
+  { // Entry 73
+    0x1.fffffffffffff0p-21,
+    0x1.fffffffffffffp-21
+  },
+  { // Entry 74
+    0x1.p-20,
+    0x1.0p-20
+  },
+  { // Entry 75
+    0x1.00000000000010p-20,
+    0x1.0000000000001p-20
+  },
+  { // Entry 76
+    0x1.fffffffffffff0p-101,
+    0x1.fffffffffffffp-101
+  },
+  { // Entry 77
+    0x1.p-100,
+    0x1.0p-100
+  },
+  { // Entry 78
+    0x1.00000000000010p-100,
+    0x1.0000000000001p-100
+  },
+  { // Entry 79
+    0x1.fffffffffffff0p-201,
+    0x1.fffffffffffffp-201
+  },
+  { // Entry 80
+    0x1.p-200,
+    0x1.0p-200
+  },
+  { // Entry 81
+    0x1.00000000000010p-200,
+    0x1.0000000000001p-200
+  },
+  { // Entry 82
+    0x1.fffffffffffff0p-1001,
+    0x1.fffffffffffffp-1001
+  },
+  { // Entry 83
+    0x1.p-1000,
+    0x1.0p-1000
+  },
+  { // Entry 84
+    0x1.00000000000010p-1000,
+    0x1.0000000000001p-1000
+  },
+  { // Entry 85
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 87
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 88
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 89
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 90
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 91
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 92
+    0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 93
+    0x1.921fb54442d180p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 94
+    0x1.921fb54442d180p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 95
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 96
+    0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 97
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 98
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 99
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 100
+    0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 101
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 102
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0x1.921fb54442d180p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 104
+    0x1.921fb54442d180p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 105
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 106
+    0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 107
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 108
+    0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 109
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 110
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 111
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 112
+    0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 113
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 114
+    0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 115
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 116
+    0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 117
+    0.0,
+    0.0
+  },
+  { // Entry 118
+    0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/fabsf_intel_data.h b/tests/math_data/fabsf_intel_data.h
new file mode 100644
index 0000000..eb426b6
--- /dev/null
+++ b/tests/math_data/fabsf_intel_data.h
@@ -0,0 +1,446 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_fabsf_intel_data[] = {
+  { // Entry 0
+    0x1.p-10,
+    -0x1.p-10
+  },
+  { // Entry 1
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2
+    0.0,
+    0.0
+  },
+  { // Entry 3
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 4
+    0x1.fffffep99,
+    0x1.fffffep99
+  },
+  { // Entry 5
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 6
+    0x1.000002p100,
+    0x1.000002p100
+  },
+  { // Entry 7
+    0x1.fffffep19,
+    0x1.fffffep19
+  },
+  { // Entry 8
+    0x1.p20,
+    0x1.p20
+  },
+  { // Entry 9
+    0x1.000002p20,
+    0x1.000002p20
+  },
+  { // Entry 10
+    0x1.fffffep14,
+    0x1.fffffep14
+  },
+  { // Entry 11
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 12
+    0x1.000002p15,
+    0x1.000002p15
+  },
+  { // Entry 13
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 14
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 15
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 16
+    0x1.fffffep8,
+    0x1.fffffep8
+  },
+  { // Entry 17
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 18
+    0x1.000002p9,
+    0x1.000002p9
+  },
+  { // Entry 19
+    0x1.fffffep6,
+    0x1.fffffep6
+  },
+  { // Entry 20
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 21
+    0x1.000002p7,
+    0x1.000002p7
+  },
+  { // Entry 22
+    0x1.fffffep4,
+    0x1.fffffep4
+  },
+  { // Entry 23
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 24
+    0x1.000002p5,
+    0x1.000002p5
+  },
+  { // Entry 25
+    0x1.fffffep3,
+    0x1.fffffep3
+  },
+  { // Entry 26
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 27
+    0x1.000002p4,
+    0x1.000002p4
+  },
+  { // Entry 28
+    0x1.fffffep2,
+    0x1.fffffep2
+  },
+  { // Entry 29
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 30
+    0x1.000002p3,
+    0x1.000002p3
+  },
+  { // Entry 31
+    0x1.fffffep1,
+    0x1.fffffep1
+  },
+  { // Entry 32
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 33
+    0x1.000002p2,
+    0x1.000002p2
+  },
+  { // Entry 34
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 35
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 36
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 37
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 38
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 39
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 40
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 41
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 42
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 43
+    0x1.fffffep-3,
+    0x1.fffffep-3
+  },
+  { // Entry 44
+    0x1.p-2,
+    0x1.p-2
+  },
+  { // Entry 45
+    0x1.000002p-2,
+    0x1.000002p-2
+  },
+  { // Entry 46
+    0x1.fffffep-4,
+    0x1.fffffep-4
+  },
+  { // Entry 47
+    0x1.p-3,
+    0x1.p-3
+  },
+  { // Entry 48
+    0x1.000002p-3,
+    0x1.000002p-3
+  },
+  { // Entry 49
+    0x1.fffffep-5,
+    0x1.fffffep-5
+  },
+  { // Entry 50
+    0x1.p-4,
+    0x1.p-4
+  },
+  { // Entry 51
+    0x1.000002p-4,
+    0x1.000002p-4
+  },
+  { // Entry 52
+    0x1.fffffep-6,
+    0x1.fffffep-6
+  },
+  { // Entry 53
+    0x1.p-5,
+    0x1.p-5
+  },
+  { // Entry 54
+    0x1.000002p-5,
+    0x1.000002p-5
+  },
+  { // Entry 55
+    0x1.fffffep-8,
+    0x1.fffffep-8
+  },
+  { // Entry 56
+    0x1.p-7,
+    0x1.p-7
+  },
+  { // Entry 57
+    0x1.000002p-7,
+    0x1.000002p-7
+  },
+  { // Entry 58
+    0x1.fffffep-10,
+    0x1.fffffep-10
+  },
+  { // Entry 59
+    0x1.p-9,
+    0x1.p-9
+  },
+  { // Entry 60
+    0x1.000002p-9,
+    0x1.000002p-9
+  },
+  { // Entry 61
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 62
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 63
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 64
+    0x1.fffffep-16,
+    0x1.fffffep-16
+  },
+  { // Entry 65
+    0x1.p-15,
+    0x1.p-15
+  },
+  { // Entry 66
+    0x1.000002p-15,
+    0x1.000002p-15
+  },
+  { // Entry 67
+    0x1.fffffep-21,
+    0x1.fffffep-21
+  },
+  { // Entry 68
+    0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 69
+    0x1.000002p-20,
+    0x1.000002p-20
+  },
+  { // Entry 70
+    0x1.fffffep-101,
+    0x1.fffffep-101
+  },
+  { // Entry 71
+    0x1.p-100,
+    0x1.p-100
+  },
+  { // Entry 72
+    0x1.000002p-100,
+    0x1.000002p-100
+  },
+  { // Entry 73
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 74
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 75
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 76
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 77
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 78
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 79
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 80
+    0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 81
+    0x1.921fb6p1,
+    0x1.921fb6p1
+  },
+  { // Entry 82
+    0x1.921fb6p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 83
+    0x1.921fb6p0,
+    0x1.921fb6p0
+  },
+  { // Entry 84
+    0x1.921fb6p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 85
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 86
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 87
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 88
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 89
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 91
+    0x1.921fb6p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 92
+    0x1.921fb6p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 93
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 94
+    0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 95
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 96
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 97
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 98
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 99
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 100
+    0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 101
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 102
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 103
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 104
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 105
+    0.0,
+    0.0f
+  },
+  { // Entry 106
+    0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/fdim_intel_data.h b/tests/math_data/fdim_intel_data.h
new file mode 100644
index 0000000..c448d96
--- /dev/null
+++ b/tests/math_data/fdim_intel_data.h
@@ -0,0 +1,1788 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_fdim_intel_data[] = {
+  { // Entry 0
+    0x1.334d6a161e4f48p-2,
+    -0x1.999999999999fp-3,
+    -0x1.000d1b71758e2p-1
+  },
+  { // Entry 1
+    0x1.99b3d07c84b5c8p-2,
+    -0x1.999999999999fp-3,
+    -0x1.33404ea4a8c16p-1
+  },
+  { // Entry 2
+    0x1.99999999999988p-12,
+    -0x1.999999999999fp-13,
+    -0x1.3333333333334p-11
+  },
+  { // Entry 3
+    0x1.f07c1f07c1f0f8p-12,
+    -0x1.dbcc48676f2f9p-13,
+    -0x1.6f31219dbcc46p-11
+  },
+  { // Entry 4
+    0x1.111e2c82869f18p-1,
+    -0x1.ddddddddddde1p-2,
+    -0x1.00068db8bac71p0
+  },
+  { // Entry 5
+    0x1.111e2c82869ea8p-1,
+    -0x1.dddddddddddefp-2,
+    -0x1.00068db8bac71p0
+  },
+  { // Entry 6
+    0x1.p1,
+    0x1.0p-1074,
+    -0x1.0p1
+  },
+  { // Entry 7
+    0x1.af286bca1af30800000000000080p-4,
+    0x1.0000000000001p-57,
+    -0x1.af286bca1af30p-4
+  },
+  { // Entry 8
+    0x1.0000000000000fffffffffffffffffffp350,
+    0x1.0000000000001p350,
+    0x1.af286bca1af20p-4
+  },
+  { // Entry 9
+    0x1.af286bca1af30800800000000080p-4,
+    0x1.0010000000001p-57,
+    -0x1.af286bca1af30p-4
+  },
+  { // Entry 10
+    0x1.0c30c30c30c308p-10,
+    0x1.8618618618610p-15,
+    -0x1.0p-10
+  },
+  { // Entry 11
+    0x1.a4924924924938p-2,
+    0x1.ffffffffffffep-4,
+    -0x1.2492492492494p-2
+  },
+  { // Entry 12
+    0x1.7ffffffffffff8p-51,
+    0x1.ffffffffffffep-53,
+    -0x1.0p-51
+  },
+  { // Entry 13
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.9p-1068
+  },
+  { // Entry 14
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 15
+    0.0,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 16
+    0x1.p1,
+    -0x1.0p3,
+    -0x1.4p3
+  },
+  { // Entry 17
+    0x1.p2,
+    -0x1.8p2,
+    -0x1.4p3
+  },
+  { // Entry 18
+    0x1.80p2,
+    -0x1.0p2,
+    -0x1.4p3
+  },
+  { // Entry 19
+    0x1.p3,
+    -0x1.0p1,
+    -0x1.4p3
+  },
+  { // Entry 20
+    0x1.40p3,
+    0.0,
+    -0x1.4p3
+  },
+  { // Entry 21
+    0x1.80p3,
+    0x1.0p1,
+    -0x1.4p3
+  },
+  { // Entry 22
+    0x1.c0p3,
+    0x1.0p2,
+    -0x1.4p3
+  },
+  { // Entry 23
+    0x1.p4,
+    0x1.8p2,
+    -0x1.4p3
+  },
+  { // Entry 24
+    0x1.20p4,
+    0x1.0p3,
+    -0x1.4p3
+  },
+  { // Entry 25
+    0x1.40p4,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 26
+    0.0,
+    -0x1.8p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 27
+    0.0,
+    -0x1.8p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 28
+    0.0,
+    -0x1.8p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 29
+    0.0,
+    -0x1.8p-1073,
+    -0.0
+  },
+  { // Entry 30
+    0.0,
+    -0x1.8p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 31
+    0.0,
+    -0x1.8p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 32
+    0.0,
+    -0x1.8p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 33
+    0x1.p-1074,
+    -0x1.0p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 34
+    0.0,
+    -0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 35
+    0.0,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 36
+    0.0,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 37
+    0.0,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 38
+    0.0,
+    -0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 39
+    0.0,
+    -0x1.0p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 40
+    0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.8p-1073
+  },
+  { // Entry 41
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 42
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 43
+    0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 44
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 45
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 46
+    0.0,
+    -0x1.0p-1074,
+    0x1.8p-1073
+  },
+  { // Entry 47
+    0x1.80p-1073,
+    -0.0,
+    -0x1.8p-1073
+  },
+  { // Entry 48
+    0x1.p-1073,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 49
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 50
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 51
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 52
+    0.0,
+    -0.0,
+    0x1.0p-1073
+  },
+  { // Entry 53
+    0.0,
+    -0.0,
+    0x1.8p-1073
+  },
+  { // Entry 54
+    0x1.p-1072,
+    0x1.0p-1074,
+    -0x1.8p-1073
+  },
+  { // Entry 55
+    0x1.80p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 56
+    0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 57
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 58
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 59
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 60
+    0.0,
+    0x1.0p-1074,
+    0x1.8p-1073
+  },
+  { // Entry 61
+    0x1.40p-1072,
+    0x1.0p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 62
+    0x1.p-1072,
+    0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 63
+    0x1.80p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 64
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 65
+    0x1.p-1074,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 66
+    0.0,
+    0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 67
+    0.0,
+    0x1.0p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 68
+    0x1.80p-1072,
+    0x1.8p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 69
+    0x1.40p-1072,
+    0x1.8p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 70
+    0x1.p-1072,
+    0x1.8p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 71
+    0x1.80p-1073,
+    0x1.8p-1073,
+    -0.0
+  },
+  { // Entry 72
+    0x1.p-1073,
+    0x1.8p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 73
+    0x1.p-1074,
+    0x1.8p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 74
+    0.0,
+    0x1.8p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 75
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 76
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 77
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 78
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 79
+    0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 82
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 83
+    0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 84
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 85
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 87
+    0.0,
+    0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 88
+    0.0,
+    0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 89
+    0.0,
+    0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 90
+    0x1.p-1074,
+    0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 91
+    0.0,
+    0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 92
+    0.0,
+    0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 93
+    0x1.p-1073,
+    0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 94
+    0x1.p-1074,
+    0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 95
+    0.0,
+    0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 96
+    0.0,
+    0x1.fffffffffffffp-51,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 97
+    0.0,
+    0x1.fffffffffffffp-51,
+    0x1.0p-50
+  },
+  { // Entry 98
+    0.0,
+    0x1.fffffffffffffp-51,
+    0x1.0000000000001p-50
+  },
+  { // Entry 99
+    0x1.p-103,
+    0x1.0p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 100
+    0.0,
+    0x1.0p-50,
+    0x1.0p-50
+  },
+  { // Entry 101
+    0.0,
+    0x1.0p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 102
+    0x1.80p-102,
+    0x1.0000000000001p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 103
+    0x1.p-102,
+    0x1.0000000000001p-50,
+    0x1.0p-50
+  },
+  { // Entry 104
+    0.0,
+    0x1.0000000000001p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 105
+    0.0,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 106
+    0.0,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 107
+    0.0,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 108
+    0x1.p-63,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 109
+    0.0,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 110
+    0.0,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 111
+    0x1.80p-62,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 112
+    0x1.p-62,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 113
+    0.0,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 114
+    0.0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 115
+    0.0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 116
+    0.0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 117
+    0x1.p-54,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 118
+    0.0,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 119
+    0.0,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 120
+    0x1.80p-53,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 121
+    0x1.p-53,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 122
+    0.0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 123
+    0.0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 126
+    0x1.p-52,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 127
+    0.0,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 128
+    0.0,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 129
+    0x1.80p-51,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 130
+    0x1.p-51,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 131
+    0.0,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 132
+    0.0,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 133
+    0.0,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 134
+    0.0,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 135
+    0x1.p-43,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 136
+    0.0,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 137
+    0.0,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 138
+    0x1.80p-42,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 139
+    0x1.p-42,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 140
+    0.0,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 141
+    0.0,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 142
+    0.0,
+    0x1.fffffffffffffp49,
+    0x1.0p50
+  },
+  { // Entry 143
+    0.0,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p50
+  },
+  { // Entry 144
+    0x1.p-3,
+    0x1.0p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p50,
+    0x1.0p50
+  },
+  { // Entry 146
+    0.0,
+    0x1.0p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 147
+    0x1.80p-2,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 148
+    0x1.p-2,
+    0x1.0000000000001p50,
+    0x1.0p50
+  },
+  { // Entry 149
+    0.0,
+    0x1.0000000000001p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 150
+    0.0,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 151
+    0.0,
+    0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 152
+    0.0,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 153
+    0x1.p970,
+    0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 154
+    0.0,
+    0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 155
+    0.0,
+    0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 156
+    0x1.80p971,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 157
+    0x1.p971,
+    0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 158
+    0.0,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 159
+    0.0,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 160
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 161
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 162
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 163
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 164
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 165
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 166
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 167
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 168
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 169
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 170
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 171
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 172
+    0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 173
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 174
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 175
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 176
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 177
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 178
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 179
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 180
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 182
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 183
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 184
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 185
+    0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 186
+    0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 187
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 188
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 189
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 190
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 191
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 192
+    0x1.00000000000010p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 193
+    0x1.fffffffffffff0p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 194
+    0x1.p-1021,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 195
+    0x1.p0,
+    0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 196
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 197
+    HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 198
+    0.0,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 199
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 200
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 201
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 202
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 203
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 204
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 205
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 206
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 207
+    0x1.fffffffffffff0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 208
+    0x1.p0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 209
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 210
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 211
+    0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 212
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 213
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 214
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 215
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 217
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 218
+    0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 219
+    0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 220
+    0x1.00000000000010p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 221
+    0x1.p0,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 222
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 224
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 225
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 227
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 228
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 229
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 230
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 231
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 233
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 234
+    0x1.p0,
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 235
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 236
+    HUGE_VAL,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 237
+    0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 238
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 239
+    0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 240
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 241
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 242
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 243
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 244
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 245
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 246
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 247
+    0x1.p0,
+    -0.0,
+    -0x1.0p0
+  },
+  { // Entry 248
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 249
+    HUGE_VAL,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 250
+    0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 251
+    0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 252
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 253
+    0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 254
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 255
+    0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 256
+    0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 257
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 258
+    0x1.ffffffffffffc0p-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 259
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 260
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 261
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 262
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 263
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 264
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 265
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 266
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 267
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 268
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 269
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 270
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 271
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 272
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 273
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 274
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 275
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 276
+    0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 277
+    0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 278
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 279
+    0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 280
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 281
+    0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 282
+    0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 283
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 284
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 285
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 286
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 287
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 289
+    0.0,
+    -0x1.fffffffffffffp-1,
+    HUGE_VAL
+  },
+  { // Entry 290
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 291
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1022
+  },
+  { // Entry 292
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 293
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 294
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0.0
+  },
+  { // Entry 295
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 296
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 297
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 298
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 299
+    0x1.p-53,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 300
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 301
+    HUGE_VAL,
+    -0x1.fffffffffffffp-1,
+    -HUGE_VAL
+  },
+  { // Entry 302
+    0.0,
+    -0x1.0p0,
+    HUGE_VAL
+  },
+  { // Entry 303
+    0.0,
+    -0x1.0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 304
+    0.0,
+    -0x1.0p0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    0.0,
+    -0x1.0p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 306
+    0.0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 307
+    0.0,
+    -0x1.0p0,
+    0.0
+  },
+  { // Entry 308
+    0.0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 309
+    0.0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 310
+    0.0,
+    -0x1.0p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 311
+    0.0,
+    -0x1.0p0,
+    -0x1.0p-1022
+  },
+  { // Entry 312
+    0.0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 313
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 314
+    HUGE_VAL,
+    -0x1.0p0,
+    -HUGE_VAL
+  },
+  { // Entry 315
+    0.0,
+    -0x1.0000000000001p0,
+    HUGE_VAL
+  },
+  { // Entry 316
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 317
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.0p-1022
+  },
+  { // Entry 318
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 319
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 320
+    0.0,
+    -0x1.0000000000001p0,
+    0.0
+  },
+  { // Entry 321
+    0.0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 322
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 323
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 324
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1022
+  },
+  { // Entry 325
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 326
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 327
+    HUGE_VAL,
+    -0x1.0000000000001p0,
+    -HUGE_VAL
+  },
+  { // Entry 328
+    0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 329
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 330
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 331
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 332
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 333
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 334
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 335
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 336
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 337
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 338
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 339
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 340
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 341
+    0.0,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 342
+    0.0,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 343
+    0.0,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 344
+    0.0,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 345
+    0.0,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 346
+    0.0,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 347
+    0.0,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 348
+    0.0,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 349
+    0.0,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 350
+    0.0,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 351
+    0.0,
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 352
+    0.0,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 353
+    0.0,
+    -HUGE_VAL,
+    -HUGE_VAL
+  }
+};
diff --git a/tests/math_data/fdimf_intel_data.h b/tests/math_data/fdimf_intel_data.h
new file mode 100644
index 0000000..eb05983
--- /dev/null
+++ b/tests/math_data/fdimf_intel_data.h
@@ -0,0 +1,1793 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_fdimf_intel_data[] = {
+  { // Entry 0
+    0x1.861861p-14,
+    -0x1.86187ep-15,
+    -0x1.249250p-13
+  },
+  { // Entry 1
+    0x1.334d69p-2,
+    -0x1.99999ep-3,
+    -0x1.000d1cp-1
+  },
+  { // Entry 2
+    0x1.99b3d1p-2,
+    -0x1.99999ep-3,
+    -0x1.334050p-1
+  },
+  { // Entry 3
+    0x1.999999p-12,
+    -0x1.99999ep-13,
+    -0x1.333334p-11
+  },
+  { // Entry 4
+    0x1.111e2bp-1,
+    -0x1.dddde2p-2,
+    -0x1.00068ep0
+  },
+  { // Entry 5
+    0x1.111e29p-1,
+    -0x1.dddde6p-2,
+    -0x1.00068ep0
+  },
+  { // Entry 6
+    0x1.04a781p-11,
+    -0x1.f6b0fep-12,
+    -0x1.p-10
+  },
+  { // Entry 7
+    0x1.02960bp-11,
+    -0x1.fad3eap-12,
+    -0x1.p-10
+  },
+  { // Entry 8
+    0x1.p1,
+    0x1.p-149,
+    -0x1.p1
+  },
+  { // Entry 9
+    0x1.000001fffffffffffff286bac0p73,
+    0x1.000002p73,
+    0x1.af28a8p-4
+  },
+  { // Entry 10
+    0x1.249269p-2,
+    0x1.08p-21,
+    -0x1.249248p-2
+  },
+  { // Entry 11
+    0x1.af2851p-4,
+    0x1.08p-23,
+    -0x1.af2830p-4
+  },
+  { // Entry 12
+    0x1.000021p-24,
+    0x1.08p-43,
+    -0x1.p-24
+  },
+  { // Entry 13
+    0x1.4ff4d3p3,
+    0x1.083d28p2,
+    -0x1.97ac7ep2
+  },
+  { // Entry 14
+    0x1.fffffcp127,
+    0x1.fffffcp127,
+    -0x1.90p-143
+  },
+  { // Entry 15
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 16
+    0.0,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 17
+    0x1.p1,
+    -0x1.p3,
+    -0x1.40p3
+  },
+  { // Entry 18
+    0x1.p2,
+    -0x1.80p2,
+    -0x1.40p3
+  },
+  { // Entry 19
+    0x1.80p2,
+    -0x1.p2,
+    -0x1.40p3
+  },
+  { // Entry 20
+    0x1.p3,
+    -0x1.p1,
+    -0x1.40p3
+  },
+  { // Entry 21
+    0x1.40p3,
+    0.0,
+    -0x1.40p3
+  },
+  { // Entry 22
+    0x1.80p3,
+    0x1.p1,
+    -0x1.40p3
+  },
+  { // Entry 23
+    0x1.c0p3,
+    0x1.p2,
+    -0x1.40p3
+  },
+  { // Entry 24
+    0x1.p4,
+    0x1.80p2,
+    -0x1.40p3
+  },
+  { // Entry 25
+    0x1.20p4,
+    0x1.p3,
+    -0x1.40p3
+  },
+  { // Entry 26
+    0x1.40p4,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 27
+    0.0,
+    -0x1.80p-148,
+    -0x1.80p-148
+  },
+  { // Entry 28
+    0.0,
+    -0x1.80p-148,
+    -0x1.p-148
+  },
+  { // Entry 29
+    0.0,
+    -0x1.80p-148,
+    -0x1.p-149
+  },
+  { // Entry 30
+    0.0,
+    -0x1.80p-148,
+    0.0
+  },
+  { // Entry 31
+    0.0,
+    -0x1.80p-148,
+    0x1.p-149
+  },
+  { // Entry 32
+    0.0,
+    -0x1.80p-148,
+    0x1.p-148
+  },
+  { // Entry 33
+    0.0,
+    -0x1.80p-148,
+    0x1.80p-148
+  },
+  { // Entry 34
+    0x1.p-149,
+    -0x1.p-148,
+    -0x1.80p-148
+  },
+  { // Entry 35
+    0.0,
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 36
+    0.0,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0.0,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 38
+    0.0,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 39
+    0.0,
+    -0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 40
+    0.0,
+    -0x1.p-148,
+    0x1.80p-148
+  },
+  { // Entry 41
+    0x1.p-148,
+    -0x1.p-149,
+    -0x1.80p-148
+  },
+  { // Entry 42
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 43
+    0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 44
+    0.0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 45
+    0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 46
+    0.0,
+    -0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 47
+    0.0,
+    -0x1.p-149,
+    0x1.80p-148
+  },
+  { // Entry 48
+    0x1.80p-148,
+    0.0,
+    -0x1.80p-148
+  },
+  { // Entry 49
+    0x1.p-148,
+    0.0,
+    -0x1.p-148
+  },
+  { // Entry 50
+    0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 51
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 52
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 53
+    0.0,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 54
+    0.0,
+    0.0,
+    0x1.80p-148
+  },
+  { // Entry 55
+    0x1.p-147,
+    0x1.p-149,
+    -0x1.80p-148
+  },
+  { // Entry 56
+    0x1.80p-148,
+    0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 57
+    0x1.p-148,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 58
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 59
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 60
+    0.0,
+    0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 61
+    0.0,
+    0x1.p-149,
+    0x1.80p-148
+  },
+  { // Entry 62
+    0x1.40p-147,
+    0x1.p-148,
+    -0x1.80p-148
+  },
+  { // Entry 63
+    0x1.p-147,
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 64
+    0x1.80p-148,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 65
+    0x1.p-148,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 66
+    0x1.p-149,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 67
+    0.0,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 68
+    0.0,
+    0x1.p-148,
+    0x1.80p-148
+  },
+  { // Entry 69
+    0x1.80p-147,
+    0x1.80p-148,
+    -0x1.80p-148
+  },
+  { // Entry 70
+    0x1.40p-147,
+    0x1.80p-148,
+    -0x1.p-148
+  },
+  { // Entry 71
+    0x1.p-147,
+    0x1.80p-148,
+    -0x1.p-149
+  },
+  { // Entry 72
+    0x1.80p-148,
+    0x1.80p-148,
+    0.0
+  },
+  { // Entry 73
+    0x1.p-148,
+    0x1.80p-148,
+    0x1.p-149
+  },
+  { // Entry 74
+    0x1.p-149,
+    0x1.80p-148,
+    0x1.p-148
+  },
+  { // Entry 75
+    0.0,
+    0x1.80p-148,
+    0x1.80p-148
+  },
+  { // Entry 76
+    0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 77
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 78
+    0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 79
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 80
+    0x1.p-148,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 81
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 82
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 83
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 84
+    0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 85
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 86
+    0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 87
+    0x1.fffffep127,
+    0x1.fffffep126,
+    -0x1.fffffep126
+  },
+  { // Entry 88
+    0.0,
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 89
+    0.0,
+    0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 90
+    0.0,
+    0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 91
+    0x1.p-149,
+    0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 92
+    0.0,
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 93
+    0.0,
+    0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 94
+    0x1.p-148,
+    0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 95
+    0x1.p-149,
+    0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 96
+    0.0,
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 97
+    0.0,
+    0x1.fffffep-51,
+    0x1.fffffep-51
+  },
+  { // Entry 98
+    0.0,
+    0x1.fffffep-51,
+    0x1.p-50
+  },
+  { // Entry 99
+    0.0,
+    0x1.fffffep-51,
+    0x1.000002p-50
+  },
+  { // Entry 100
+    0x1.p-74,
+    0x1.p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 101
+    0.0,
+    0x1.p-50,
+    0x1.p-50
+  },
+  { // Entry 102
+    0.0,
+    0x1.p-50,
+    0x1.000002p-50
+  },
+  { // Entry 103
+    0x1.80p-73,
+    0x1.000002p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 104
+    0x1.p-73,
+    0x1.000002p-50,
+    0x1.p-50
+  },
+  { // Entry 105
+    0.0,
+    0x1.000002p-50,
+    0x1.000002p-50
+  },
+  { // Entry 106
+    0.0,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 107
+    0.0,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 108
+    0.0,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 109
+    0x1.p-34,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 110
+    0.0,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 111
+    0.0,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 112
+    0x1.80p-33,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 113
+    0x1.p-33,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 114
+    0.0,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 115
+    0.0,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 116
+    0.0,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 117
+    0.0,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 118
+    0x1.p-25,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 119
+    0.0,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 120
+    0.0,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 121
+    0x1.80p-24,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 122
+    0x1.p-24,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 123
+    0.0,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 126
+    0.0,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 127
+    0x1.p-23,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 128
+    0.0,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 129
+    0.0,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 130
+    0x1.80p-22,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 131
+    0x1.p-22,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 132
+    0.0,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 133
+    0.0,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 134
+    0.0,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 135
+    0.0,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 136
+    0x1.p-14,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 137
+    0.0,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 138
+    0.0,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 139
+    0x1.80p-13,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 140
+    0x1.p-13,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 141
+    0.0,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 142
+    0.0,
+    0x1.fffffep49,
+    0x1.fffffep49
+  },
+  { // Entry 143
+    0.0,
+    0x1.fffffep49,
+    0x1.p50
+  },
+  { // Entry 144
+    0.0,
+    0x1.fffffep49,
+    0x1.000002p50
+  },
+  { // Entry 145
+    0x1.p26,
+    0x1.p50,
+    0x1.fffffep49
+  },
+  { // Entry 146
+    0.0,
+    0x1.p50,
+    0x1.p50
+  },
+  { // Entry 147
+    0.0,
+    0x1.p50,
+    0x1.000002p50
+  },
+  { // Entry 148
+    0x1.80p27,
+    0x1.000002p50,
+    0x1.fffffep49
+  },
+  { // Entry 149
+    0x1.p27,
+    0x1.000002p50,
+    0x1.p50
+  },
+  { // Entry 150
+    0.0,
+    0x1.000002p50,
+    0x1.000002p50
+  },
+  { // Entry 151
+    0.0,
+    0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 152
+    0.0,
+    0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 153
+    0.0,
+    0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 154
+    0x1.p103,
+    0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 155
+    0.0,
+    0x1.p127,
+    0x1.p127
+  },
+  { // Entry 156
+    0.0,
+    0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 157
+    0x1.80p104,
+    0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 158
+    0x1.p104,
+    0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 159
+    0.0,
+    0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 160
+    0.0,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 161
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 162
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 163
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 164
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 165
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 166
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 167
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 168
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 169
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 170
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 171
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 172
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 173
+    0.0,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 174
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 175
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 176
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 177
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 178
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 179
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 180
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 181
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 182
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 183
+    0x1.fffffe00000000000000000000000002p127,
+    0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 184
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 185
+    HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 186
+    0.0,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 187
+    0.0,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 188
+    0.0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 189
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 190
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 191
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 192
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 193
+    0x1.000002p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 194
+    0x1.fffffep-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 195
+    0x1.p-125,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 196
+    0x1.00000000000000000000000000000004p0,
+    0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 197
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 198
+    HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    0.0,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 202
+    0.0,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 203
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 204
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 205
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 206
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 207
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 208
+    0x1.fffffep-126,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 209
+    0x1.00000000000000000000000000000003p0,
+    0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 210
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 211
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 212
+    0.0,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 213
+    0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 214
+    0.0,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 215
+    0.0,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 216
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 217
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 218
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 219
+    0x1.p-148,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 220
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 221
+    0x1.000002p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 222
+    0x1.p0,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 223
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 224
+    HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 225
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 226
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 227
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 228
+    0.0,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 229
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 230
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 231
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 232
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 233
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 234
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 235
+    0x1.p0,
+    0.0f,
+    -0x1.p0
+  },
+  { // Entry 236
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 237
+    HUGE_VALF,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 238
+    0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 239
+    0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 240
+    0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 241
+    0.0,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 242
+    0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 243
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 244
+    0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 245
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 246
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 247
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 248
+    0x1.p0,
+    -0.0f,
+    -0x1.p0
+  },
+  { // Entry 249
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 250
+    HUGE_VALF,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 251
+    0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 252
+    0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 253
+    0.0,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 254
+    0.0,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 255
+    0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 256
+    0.0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 257
+    0.0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 258
+    0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 259
+    0x1.fffff8p-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 260
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 261
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 262
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 263
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 264
+    0.0,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 265
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 266
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 267
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 268
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 269
+    0.0,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 270
+    0.0,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 271
+    0.0,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 272
+    0.0,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 273
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 274
+    0x1.fffffffffffffffffffffffffffffff8p-1,
+    -0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 275
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 276
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 277
+    0.0,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 278
+    0.0,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 279
+    0.0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 280
+    0.0,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 281
+    0.0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 282
+    0.0,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 283
+    0.0,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 284
+    0.0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 285
+    0.0,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 286
+    0.0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 287
+    0x1.fffffffffffffffffffffffffffffff8p-1,
+    -0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 288
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 289
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 290
+    0.0,
+    -0x1.fffffep-1,
+    HUGE_VALF
+  },
+  { // Entry 291
+    0.0,
+    -0x1.fffffep-1,
+    0x1.fffffep127
+  },
+  { // Entry 292
+    0.0,
+    -0x1.fffffep-1,
+    0x1.p-126
+  },
+  { // Entry 293
+    0.0,
+    -0x1.fffffep-1,
+    0x1.fffffcp-127
+  },
+  { // Entry 294
+    0.0,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 295
+    0.0,
+    -0x1.fffffep-1,
+    0.0f
+  },
+  { // Entry 296
+    0.0,
+    -0x1.fffffep-1,
+    -0.0f
+  },
+  { // Entry 297
+    0.0,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 298
+    0.0,
+    -0x1.fffffep-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 299
+    0.0,
+    -0x1.fffffep-1,
+    -0x1.p-126
+  },
+  { // Entry 300
+    0x1.p-24,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 301
+    0x1.fffffdfffffffffffffffffffffffffep127,
+    -0x1.fffffep-1,
+    -0x1.fffffep127
+  },
+  { // Entry 302
+    HUGE_VALF,
+    -0x1.fffffep-1,
+    -HUGE_VALF
+  },
+  { // Entry 303
+    0.0,
+    -0x1.p0,
+    HUGE_VALF
+  },
+  { // Entry 304
+    0.0,
+    -0x1.p0,
+    0x1.fffffep127
+  },
+  { // Entry 305
+    0.0,
+    -0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    -0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    0.0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 308
+    0.0,
+    -0x1.p0,
+    0.0f
+  },
+  { // Entry 309
+    0.0,
+    -0x1.p0,
+    -0.0f
+  },
+  { // Entry 310
+    0.0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 311
+    0.0,
+    -0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 312
+    0.0,
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 313
+    0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 314
+    0x1.fffffdfffffffffffffffffffffffffep127,
+    -0x1.p0,
+    -0x1.fffffep127
+  },
+  { // Entry 315
+    HUGE_VALF,
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 316
+    0.0,
+    -0x1.000002p0,
+    HUGE_VALF
+  },
+  { // Entry 317
+    0.0,
+    -0x1.000002p0,
+    0x1.fffffep127
+  },
+  { // Entry 318
+    0.0,
+    -0x1.000002p0,
+    0x1.p-126
+  },
+  { // Entry 319
+    0.0,
+    -0x1.000002p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 320
+    0.0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 321
+    0.0,
+    -0x1.000002p0,
+    0.0f
+  },
+  { // Entry 322
+    0.0,
+    -0x1.000002p0,
+    -0.0f
+  },
+  { // Entry 323
+    0.0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 324
+    0.0,
+    -0x1.000002p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 325
+    0.0,
+    -0x1.000002p0,
+    -0x1.p-126
+  },
+  { // Entry 326
+    0.0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 327
+    0x1.fffffdfffffffffffffffffffffffffdp127,
+    -0x1.000002p0,
+    -0x1.fffffep127
+  },
+  { // Entry 328
+    HUGE_VALF,
+    -0x1.000002p0,
+    -HUGE_VALF
+  },
+  { // Entry 329
+    0.0,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 330
+    0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 331
+    0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 332
+    0.0,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 333
+    0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 334
+    0.0,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 335
+    0.0,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 336
+    0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 337
+    0.0,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 338
+    0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 339
+    0.0,
+    -0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 340
+    0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 341
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 342
+    0.0,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 343
+    0.0,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 344
+    0.0,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 345
+    0.0,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 346
+    0.0,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 347
+    0.0,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 348
+    0.0,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 349
+    0.0,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 350
+    0.0,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 351
+    0.0,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 352
+    0.0,
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 353
+    0.0,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 354
+    0.0,
+    -HUGE_VALF,
+    -HUGE_VALF
+  }
+};
diff --git a/tests/math_data/floor_intel_data.h b/tests/math_data/floor_intel_data.h
new file mode 100644
index 0000000..a1216df
--- /dev/null
+++ b/tests/math_data/floor_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_floor_intel_data[] = {
+  { // Entry 0
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.ffffffffffff80p49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.ffffffffffffc0p50,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.ffffffffffffe0p51,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0x1.p0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p1,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.80p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.80p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.94p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.94p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.94p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f480p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f480p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f480p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.00000000000040p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.00000000000020p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.fffffff8p29,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff4p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffff8p30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffff8p30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffff8p30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.fffffffcp30,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.fffffffcp30,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.fffffffcp30,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.fffffffcp30,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.fffffffcp30,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.00000004p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffffcp30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffffcp30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffffcp30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffffcp30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffffcp30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.p31,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.p31,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.p31,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.p31,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.00000002p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.00000002p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.00000002p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.00000002p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.00000002p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.00000002p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.p2,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0x1.p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0x1.p0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0x1.p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0x1.p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0x1.p0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0x1.p0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p1,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/floorf_intel_data.h b/tests/math_data/floorf_intel_data.h
new file mode 100644
index 0000000..3bf2c9f
--- /dev/null
+++ b/tests/math_data/floorf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_floorf_intel_data[] = {
+  { // Entry 0
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.fffff0p20,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.fffff8p21,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.fffffcp22,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0x1.p0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p1,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p1,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.80p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.80p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.94p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.94p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.94p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f480p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f480p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f480p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.000008p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.000004p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.p2,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p1,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0x1.p0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0x1.p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0x1.p0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0x1.p0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p1,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/fma_intel_data.h b/tests/math_data/fma_intel_data.h
new file mode 100644
index 0000000..6f05997
--- /dev/null
+++ b/tests/math_data/fma_intel_data.h
@@ -0,0 +1,13830 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_3_t<double, double, double, double> g_fma_intel_data[] = {
+  { // Entry 0
+    -0x1.e6666666666660p0,
+    0x1.0p-1074,
+    -0x1.ccccccccccccdp-1,
+    -0x1.e666666666666p0
+  },
+  { // Entry 1
+    0x1.15f15f15f15edfffffffffffffffffffp-2,
+    0x1.0p-1074,
+    -0x1.ccccccccccccdp-1,
+    0x1.15f15f15f15eep-2
+  },
+  { // Entry 2
+    0x1.0000000000002fffffffffffffffffffp-41,
+    0x1.0p-1074,
+    -0x1.e666666666666p-1,
+    0x1.0000000000003p-41
+  },
+  { // Entry 3
+    -0x1.e666666666665fffffffffffffffffffp0,
+    0x1.0p-1074,
+    0x1.0750750750756p-3,
+    -0x1.e666666666666p0
+  },
+  { // Entry 4
+    0x1.00000000000030p-41,
+    0x1.0p-1074,
+    0x1.4444444444430p-4,
+    0x1.0000000000003p-41
+  },
+  { // Entry 5
+    -0x1.f4ccccccccccc766666666666668p0,
+    0x1.0000000000001p-4,
+    -0x1.ccccccccccccdp-1,
+    -0x1.e666666666666p0
+  },
+  { // Entry 6
+    0x1.1be9c07bef3aa00000000ca3acc0p0,
+    0x1.333334be90b7dp-1,
+    0x1.62e42fefa39efp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 7
+    0x1.2da85c2c93416ffffffffd1b42c0p0,
+    0x1.6666670f24aa5p-1,
+    0x1.62e42fefa39efp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 8
+    0x1.6ce999999999c802333333333480p16,
+    0x1.8000000000001p4,
+    0x1.e666666666669p11,
+    0x1.ccccccccccccfp4
+  },
+  { // Entry 9
+    0x1.62b83c4461cc280000000001bc40p0,
+    0x1.ff812e8bc2d1fp-1,
+    0x1.62e42fefa39efp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 10
+    0x1.0942b0df6a30e7ff3586fb5fb5p39,
+    0x1.ffe7fffffffffp40,
+    0x1.094f2094f2096p-2,
+    -0x1.ba2e8ba2e8ba2p-2
+  },
+  { // Entry 11
+    0x1.06fb586fb586f8p-51,
+    0x1.ffffffffffffcp-1,
+    -0x1.8df6b0df6b0dfp-1,
+    0x1.8df6b0df6b0e0p-1
+  },
+  { // Entry 12
+    0x1.ffffffffffff70000000000004p-1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 13
+    0x1.ffffffffffff80000000000004p-1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 14
+    0x1.ffffffffffffa0000000000004p-1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 15
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 17
+    0x1.00000000000010p0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 18
+    0x1.00000000000037fffffffffffep0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 19
+    0x1.0000000000003ffffffffffffep0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 20
+    0x1.0000000000004ffffffffffffep0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 21
+    0x1.ffffffffffff70000000000008p-2,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 22
+    0x1.ffffffffffff80000000000008p-2,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 23
+    0x1.ffffffffffffa0000000000008p-2,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 24
+    0x1.fffffffffffff0p-2,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 25
+    0x1.p-1,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0p-1
+  },
+  { // Entry 26
+    0x1.00000000000010p-1,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 27
+    0x1.00000000000037fffffffffffcp-1,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 28
+    0x1.0000000000003ffffffffffffcp-1,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 29
+    0x1.0000000000004ffffffffffffcp-1,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 30
+    0x1.ffffffffffff70000000000004p-2,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 31
+    0x1.ffffffffffff80000000000004p-2,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 32
+    0x1.ffffffffffffa0000000000004p-2,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 33
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 34
+    0x1.p-1,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0p-1
+  },
+  { // Entry 35
+    0x1.00000000000010p-1,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 36
+    0x1.00000000000037fffffffffffep-1,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 37
+    0x1.0000000000003ffffffffffffep-1,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 38
+    0x1.0000000000004ffffffffffffep-1,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 39
+    0x1.ffffffffffff70p-2,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 40
+    0x1.ffffffffffff80p-2,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 41
+    0x1.ffffffffffffa0p-2,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p-2,
+    0x1.0p1023,
+    -0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 43
+    0x1.p-1,
+    0x1.0p1023,
+    -0.0,
+    0x1.0p-1
+  },
+  { // Entry 44
+    0x1.00000000000010p-1,
+    0x1.0p1023,
+    -0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 45
+    0x1.00000000000038p-1,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 46
+    0x1.00000000000040p-1,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 47
+    0x1.00000000000050p-1,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 48
+    0x1.ffffffffffffb0000000000004p-1,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 49
+    0x1.ffffffffffffc0000000000004p-1,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 50
+    0x1.ffffffffffffe0000000000004p-1,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 51
+    0x1.fffffffffffff0p-1,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    0x1.p0,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 53
+    0x1.00000000000010p0,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 54
+    0x1.00000000000017fffffffffffep0,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 55
+    0x1.0000000000001ffffffffffffep0,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 56
+    0x1.0000000000002ffffffffffffep0,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 57
+    0x1.ffffffffffffb0000000000002p-1,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 58
+    0x1.ffffffffffffc0000000000002p-1,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 59
+    0x1.ffffffffffffe0000000000002p-1,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 60
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 61
+    0x1.p0,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 62
+    0x1.00000000000010p0,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 63
+    0x1.00000000000017ffffffffffffp0,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 64
+    0x1.0000000000001fffffffffffffp0,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 65
+    0x1.0000000000002fffffffffffffp0,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 66
+    0x1.ffffffffffffb0p-1,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 67
+    0x1.ffffffffffffc0p-1,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 68
+    0x1.ffffffffffffe0p-1,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 69
+    0x1.fffffffffffff0p-1,
+    0x1.0p1023,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 70
+    0x1.p0,
+    0x1.0p1023,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 71
+    0x1.00000000000010p0,
+    0x1.0p1023,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 72
+    0x1.00000000000018p0,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 73
+    0x1.00000000000020p0,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 74
+    0x1.00000000000030p0,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 75
+    0x1.ffffffffffffe00000000000007fffffp-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 76
+    0x1.ffffffffffffe000000000000080p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 77
+    0x1.ffffffffffffe000000000000080p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 78
+    0x1.ffffffffffffefffffffffffffffffffp-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 79
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 81
+    0x1.00000000000007ffffffffffff7fffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 82
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 83
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 84
+    0x1.ffffffffffffefffffffffffffffffffp-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 85
+    0x1.fffffffffffff0p-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 87
+    0x1.ffffffffffffffffffffffffffffffffp-2,
+    0x1.0p-1,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 88
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 89
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 90
+    0x1.0000000000000fffffffffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 91
+    0x1.00000000000010p-1,
+    0x1.0p-1,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 92
+    0x1.00000000000010p-1,
+    0x1.0p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 93
+    0x1.00000000000007ffffffffffff7fffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 94
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 95
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 96
+    0x1.0000000000000fffffffffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 97
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 98
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 99
+    0x1.00000000000020000000000000ffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 100
+    0x1.00000000000020000000000001p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 101
+    0x1.00000000000020000000000001p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 102
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 103
+    0x1.0000000000001000000000000040p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 104
+    0x1.0000000000001000000000000240p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 105
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 106
+    0x1.00000000000018p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 107
+    0x1.00000000000018000000000002p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 108
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 109
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 110
+    0x1.0000000000002800000000000180p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 111
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 112
+    0x1.00000000000018p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 113
+    0x1.00000000000018000000000002p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 114
+    0x1.0000000000001fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 115
+    0x1.00000000000020p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 116
+    0x1.00000000000020000000000002p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 117
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 118
+    0x1.00000000000030p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 119
+    0x1.00000000000030000000000002p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 120
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 121
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 122
+    0x1.0000000000002800000000000180p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 123
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 124
+    0x1.00000000000030p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 125
+    0x1.00000000000030000000000002p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 126
+    0x1.00000000000040p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 127
+    0x1.00000000000040000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 128
+    0x1.00000000000040000000000003p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 129
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 130
+    0x1.0000000000001000000000000040p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 131
+    0x1.0000000000001000000000000240p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 132
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 133
+    0x1.00000000000018p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 134
+    0x1.00000000000018000000000002p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 135
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 136
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 137
+    0x1.0000000000002800000000000180p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 138
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 139
+    0x1.00000000000018p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 140
+    0x1.00000000000018000000000002p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 141
+    0x1.0000000000001fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 142
+    0x1.00000000000020p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 143
+    0x1.00000000000020000000000002p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 144
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 145
+    0x1.00000000000030p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 146
+    0x1.00000000000030000000000002p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 147
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 148
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 149
+    0x1.0000000000002800000000000180p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 150
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 151
+    0x1.00000000000030p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 152
+    0x1.00000000000030000000000002p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 153
+    0x1.00000000000040p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 154
+    0x1.00000000000040000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 155
+    0x1.00000000000040000000000003p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 156
+    0x1.0000000000006ffffffffffffc40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 157
+    0x1.0000000000007000000000000040p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-50
+  },
+  { // Entry 158
+    0x1.0000000000007000000000000840p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-50
+  },
+  { // Entry 159
+    0x1.00000000000077fffffffffffcp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 160
+    0x1.00000000000078p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-50
+  },
+  { // Entry 161
+    0x1.00000000000078000000000008p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 162
+    0x1.00000000000087fffffffffffb80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 163
+    0x1.00000000000087ffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-50
+  },
+  { // Entry 164
+    0x1.0000000000008800000000000780p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 165
+    0x1.00000000000077fffffffffffcp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 166
+    0x1.00000000000078p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-50
+  },
+  { // Entry 167
+    0x1.00000000000078000000000008p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-50
+  },
+  { // Entry 168
+    0x1.0000000000007ffffffffffffcp-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 169
+    0x1.00000000000080p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-50
+  },
+  { // Entry 170
+    0x1.00000000000080000000000008p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 171
+    0x1.0000000000008ffffffffffffcp-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 172
+    0x1.00000000000090p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-50
+  },
+  { // Entry 173
+    0x1.00000000000090000000000008p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 174
+    0x1.00000000000087fffffffffffb80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 175
+    0x1.00000000000087ffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-50
+  },
+  { // Entry 176
+    0x1.0000000000008800000000000780p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-50
+  },
+  { // Entry 177
+    0x1.0000000000008ffffffffffffcp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 178
+    0x1.00000000000090p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-50
+  },
+  { // Entry 179
+    0x1.00000000000090000000000008p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 180
+    0x1.0000000000009ffffffffffffdp-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 181
+    0x1.000000000000a0000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-50
+  },
+  { // Entry 182
+    0x1.000000000000a0000000000009p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 183
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 184
+    0x1.fffffffffffff000000000000080p-2,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-54
+  },
+  { // Entry 185
+    0x1.fffffffffffff000000000000180p-2,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-54
+  },
+  { // Entry 186
+    0x1.ffffffffffffffffffffffffff80p-2,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 187
+    0x1.p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-54
+  },
+  { // Entry 188
+    0x1.0000000000000000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 189
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 190
+    0x1.0000000000000fffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-54
+  },
+  { // Entry 191
+    0x1.00000000000010p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 192
+    0x1.ffffffffffffffffffffffffff80p-2,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 193
+    0x1.p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-54
+  },
+  { // Entry 194
+    0x1.0000000000000000000000000080p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-54
+  },
+  { // Entry 195
+    0x1.00000000000007ffffffffffffc0p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 196
+    0x1.00000000000008p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-54
+  },
+  { // Entry 197
+    0x1.0000000000000800000000000080p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 198
+    0x1.00000000000017ffffffffffffc0p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 199
+    0x1.00000000000018p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-54
+  },
+  { // Entry 200
+    0x1.0000000000001800000000000080p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 201
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 202
+    0x1.0000000000000fffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-54
+  },
+  { // Entry 203
+    0x1.00000000000010p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-54
+  },
+  { // Entry 204
+    0x1.00000000000017ffffffffffffc0p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 205
+    0x1.00000000000018p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-54
+  },
+  { // Entry 206
+    0x1.0000000000001800000000000080p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 207
+    0x1.00000000000028000000000000c0p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 208
+    0x1.00000000000028000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-54
+  },
+  { // Entry 209
+    0x1.0000000000002800000000000180p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 210
+    0x1.ffffffffffffe00000000000007fffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 211
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 212
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 213
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 214
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 215
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 217
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 218
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 219
+    -0x1.fffffffffffff0p970,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    0x1.fffffffffffff0p971,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    0x1.ffffffffffffd0000000000000ffffffp1023,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    -0x1.0p-1074
+  },
+  { // Entry 223
+    0x1.ffffffffffffd0000000000001p1023,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    -0.0
+  },
+  { // Entry 224
+    0x1.ffffffffffffd0000000000001p1023,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    0x1.0p-1074
+  },
+  { // Entry 225
+    0x1.ffffffffffffe00000000000007fffffp1023,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    -0x1.0p-1074
+  },
+  { // Entry 226
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    -0.0
+  },
+  { // Entry 227
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    -0x1.0p-1074
+  },
+  { // Entry 229
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    -0.0
+  },
+  { // Entry 230
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    -0x1.7ffffffffffff0p972,
+    0x1.ffffffffffffep511,
+    0x1.ffffffffffffep511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 232
+    -0x1.fffffffffffff0p971,
+    0x1.ffffffffffffep511,
+    0x1.fffffffffffffp511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 233
+    -0x1.p971,
+    0x1.ffffffffffffep511,
+    0x1.0p512,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 234
+    -0x1.fffffffffffff0p971,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 235
+    -0x1.fffffffffffff0p970,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 236
+    0.0,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 237
+    -0x1.p971,
+    0x1.0p512,
+    0x1.ffffffffffffep511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 238
+    0.0,
+    0x1.0p512,
+    0x1.fffffffffffffp511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 239
+    0x1.p971,
+    0x1.0p512,
+    0x1.0p512,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 240
+    -0x1.ffffffffffffc0p970,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 241
+    0x1.p971,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 242
+    0x1.fffffffffffff0p971,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 243
+    -0x1.fffffffffffff0p971,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 244
+    0.0,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 245
+    0x1.fffffffffffff0p970,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 246
+    -0x1.80p972,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 247
+    -0x1.p971,
+    0x1.0p1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 248
+    0.0,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 249
+    -HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    -0x1.0p-1074
+  },
+  { // Entry 250
+    -HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    -0.0
+  },
+  { // Entry 251
+    -HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    0x1.0p-1074
+  },
+  { // Entry 252
+    -0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    -0x1.0p-1074
+  },
+  { // Entry 253
+    -0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    -0.0
+  },
+  { // Entry 254
+    -0x1.ffffffffffffdfffffffffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    0x1.0p-1074
+  },
+  { // Entry 255
+    -0x1.ffffffffffffd0000000000001p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    -0x1.0p-1074
+  },
+  { // Entry 256
+    -0x1.ffffffffffffd0000000000001p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    -0.0
+  },
+  { // Entry 257
+    -0x1.ffffffffffffd0000000000000ffffffp1023,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    0x1.0p-1074
+  },
+  { // Entry 258
+    -HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    -0x1.0p-1074
+  },
+  { // Entry 259
+    -HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    -0.0
+  },
+  { // Entry 260
+    -HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    0x1.0p-1074
+  },
+  { // Entry 261
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    -0x1.0p-1074
+  },
+  { // Entry 262
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    -0.0
+  },
+  { // Entry 263
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    0x1.0p-1074
+  },
+  { // Entry 264
+    -0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    -0x1.0p-1074
+  },
+  { // Entry 265
+    -0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    -0.0
+  },
+  { // Entry 266
+    -0x1.ffffffffffffe00000000000007fffffp1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    0x1.0p-1074
+  },
+  { // Entry 267
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    -0x1.0p-1074
+  },
+  { // Entry 268
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    -0.0
+  },
+  { // Entry 269
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    0x1.0p-1074
+  },
+  { // Entry 270
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0p1,
+    -0x1.0p-1074
+  },
+  { // Entry 271
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0p1,
+    -0.0
+  },
+  { // Entry 272
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0p1,
+    0x1.0p-1074
+  },
+  { // Entry 273
+    -0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    -0x1.0p-1074
+  },
+  { // Entry 274
+    -0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    -0.0
+  },
+  { // Entry 275
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    0x1.0p-1074
+  },
+  { // Entry 276
+    0x1.7fffffffffffe400000000000040p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-2,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 277
+    0x1.7fffffffffffec00000000000040p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 278
+    0x1.7ffffffffffff400000000000040p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-2,
+    0x1.0p1023
+  },
+  { // Entry 279
+    0x1.7fffffffffffe8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 280
+    0x1.7ffffffffffff0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 281
+    0x1.7ffffffffffff8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1,
+    0x1.0p1023
+  },
+  { // Entry 282
+    0x1.7fffffffffffefffffffffffff80p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 283
+    0x1.7ffffffffffff7ffffffffffff80p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 284
+    0x1.7fffffffffffffffffffffffff80p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p-1,
+    0x1.0p1023
+  },
+  { // Entry 285
+    0x1.7fffffffffffe800000000000020p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-2,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 286
+    0x1.7ffffffffffff000000000000020p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 287
+    0x1.7ffffffffffff800000000000020p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-2,
+    0x1.0p1023
+  },
+  { // Entry 288
+    0x1.7fffffffffffecp1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 289
+    0x1.7ffffffffffff4p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 290
+    0x1.7ffffffffffffcp1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1,
+    0x1.0p1023
+  },
+  { // Entry 291
+    0x1.7ffffffffffff3ffffffffffffc0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 292
+    0x1.7ffffffffffffbffffffffffffc0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 293
+    0x1.80000000000003ffffffffffffc0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p-1,
+    0x1.0p1023
+  },
+  { // Entry 294
+    0x1.7fffffffffffecp1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-2,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 295
+    0x1.7ffffffffffff4p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 296
+    0x1.7ffffffffffffcp1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-2,
+    0x1.0p1023
+  },
+  { // Entry 297
+    0x1.7ffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.0p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 298
+    0x1.7ffffffffffff8p1023,
+    0x1.0p1023,
+    0x1.0p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 299
+    0x1.80p1023,
+    0x1.0p1023,
+    0x1.0p-1,
+    0x1.0p1023
+  },
+  { // Entry 300
+    0x1.7ffffffffffff8p1023,
+    0x1.0p1023,
+    0x1.0000000000001p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 301
+    0x1.80p1023,
+    0x1.0p1023,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 302
+    0x1.80000000000008p1023,
+    0x1.0p1023,
+    0x1.0000000000001p-1,
+    0x1.0p1023
+  },
+  { // Entry 303
+    0x1.ffffffffffffd800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 304
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 305
+    0x1.ffffffffffffe800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 306
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 307
+    0x1.ffffffffffffe8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 308
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 309
+    0x1.ffffffffffffefffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 310
+    0x1.fffffffffffff7ffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 311
+    HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 312
+    0x1.ffffffffffffe000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 313
+    0x1.ffffffffffffe800000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 314
+    0x1.fffffffffffff000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 315
+    0x1.ffffffffffffe8p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 316
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 317
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 318
+    0x1.fffffffffffff7ffffffffffff80p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 319
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 320
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 321
+    0x1.ffffffffffffe8p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 322
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 323
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 324
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 325
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 326
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 327
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 328
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 329
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 330
+    0x1.ffffffffffffd800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 331
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 332
+    0x1.ffffffffffffe800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 333
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 334
+    0x1.ffffffffffffe8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 335
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 336
+    0x1.ffffffffffffefffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 337
+    0x1.fffffffffffff7ffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 338
+    HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 339
+    0x1.ffffffffffffe000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 340
+    0x1.ffffffffffffe800000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 341
+    0x1.fffffffffffff000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 342
+    0x1.ffffffffffffe8p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 343
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 344
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 345
+    0x1.fffffffffffff7ffffffffffff80p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 346
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 347
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 348
+    0x1.ffffffffffffe8p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 349
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 350
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 351
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 352
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 353
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 354
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 355
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 356
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 357
+    0x1.ffffffffffffe800000000000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 358
+    0x1.fffffffffffff000000000000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 359
+    0x1.0000000000000000000000000020p1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 360
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 361
+    0x1.fffffffffffff8p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 362
+    0x1.00000000000004p1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 363
+    0x1.ffffffffffffffffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 364
+    0x1.00000000000003ffffffffffffc0p1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 365
+    0x1.0000000000000bffffffffffffc0p1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 366
+    0x1.fffffffffffff0p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 367
+    0x1.fffffffffffff8p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 368
+    0x1.00000000000004p1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 369
+    0x1.fffffffffffff8p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 370
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 371
+    0x1.00000000000008p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 372
+    0x1.00000000000004p1,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 373
+    0x1.00000000000008p1,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 374
+    0x1.00000000000010p1,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 375
+    0x1.ffffffffffffffffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 376
+    0x1.00000000000003ffffffffffffc0p1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 377
+    0x1.0000000000000bffffffffffffc0p1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 378
+    0x1.00000000000004p1,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 379
+    0x1.00000000000008p1,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 380
+    0x1.00000000000010p1,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 381
+    0x1.0000000000000c00000000000080p1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 382
+    0x1.0000000000001000000000000080p1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 383
+    0x1.0000000000001800000000000080p1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 384
+    -0x1.fffffffffffff0p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 385
+    -0x1.ffffffffffffe0p-54,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 386
+    0x1.00000000000010p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 387
+    0.0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 388
+    0x1.p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 389
+    0x1.80p-52,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 390
+    0x1.fffffffffffff0p-54,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 391
+    0x1.fffffffffffff8p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 392
+    0x1.fffffffffffffcp-52,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 393
+    -0x1.80p-52,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 394
+    -0x1.p-52,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 395
+    0.0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 396
+    -0x1.p-53,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 397
+    0.0,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 398
+    0x1.p-52,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 399
+    0.0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 400
+    0x1.p-53,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 401
+    0x1.80p-52,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 402
+    -0x1.40000000000008p-51,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 403
+    -0x1.00000000000008p-51,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 404
+    -0x1.00000000000010p-52,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 405
+    -0x1.80p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 406
+    -0x1.p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 407
+    0.0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 408
+    -0x1.fffffffffffff0p-53,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 409
+    -0x1.ffffffffffffe0p-54,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 410
+    0x1.00000000000010p-53,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 411
+    0x1.ffffffffffffe00000000000007fffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 412
+    0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 413
+    0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 414
+    0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 415
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 416
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 417
+    0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 418
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 419
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 420
+    0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 421
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 422
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 423
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 424
+    0x1.p0,
+    0x1.0p0,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 425
+    0x1.p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 426
+    0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 427
+    0x1.00000000000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 428
+    0x1.00000000000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 429
+    0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 430
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 431
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 432
+    0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 433
+    0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 434
+    0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 435
+    0x1.00000000000020000000000000ffffffp0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 436
+    0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 437
+    0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 438
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 439
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 440
+    -0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 441
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 442
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 443
+    -0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 444
+    -0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 445
+    -0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 446
+    -0x1.ffffffffffffe00000000000007fffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 447
+    -0x1.00000000000010p0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 448
+    -0x1.00000000000010p0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 449
+    -0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 450
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 451
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 452
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 453
+    -0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 454
+    -0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 455
+    -0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 456
+    -0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 457
+    -0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 458
+    -0x1.00000000000020000000000000ffffffp0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 459
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 460
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 461
+    -0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 462
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 463
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 464
+    -0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 465
+    0x1.0000003fffffeffffffe00000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 466
+    0x1.0000003ffffff000000000000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 467
+    0x1.0000003ffffff000000400000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 468
+    0x1.0000003ffffff7fffffep0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 469
+    0x1.0000003ffffff8p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 470
+    0x1.0000003ffffff8000004p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 471
+    0x1.00000040000007fffffdffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 472
+    0x1.00000040000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 473
+    0x1.00000040000008000003ffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 474
+    0x1.0000003ffffff7fffffep0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 475
+    0x1.0000003ffffff8p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 476
+    0x1.0000003ffffff8000004p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 477
+    0x1.0000003ffffffffffffep0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 478
+    0x1.00000040p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 479
+    0x1.00000040000000000004p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 480
+    0x1.0000004000000ffffffep0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 481
+    0x1.00000040000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 482
+    0x1.00000040000010000004p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 483
+    0x1.00000040000007fffffdffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 484
+    0x1.00000040000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 485
+    0x1.00000040000008000003ffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 486
+    0x1.0000004000000ffffffep0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 487
+    0x1.00000040000010p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 488
+    0x1.00000040000010000004p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 489
+    0x1.0000004000001ffffffe000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 490
+    0x1.00000040000020000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 491
+    0x1.00000040000020000004000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 492
+    -0x1.ffffff80000010000003ffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 493
+    -0x1.ffffff8000000fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 494
+    -0x1.ffffff8000000ffffff7ffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 495
+    -0x1.ffffff7ffffff0000004p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 496
+    -0x1.ffffff7ffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 497
+    -0x1.ffffff7fffffeffffff8p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 498
+    -0x1.ffffff7fffffe000000400000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 499
+    -0x1.ffffff7fffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 500
+    -0x1.ffffff7fffffdffffff800000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 501
+    -0x1.ffffff80000020000004p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 502
+    -0x1.ffffff80000020p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 503
+    -0x1.ffffff8000001ffffff8p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 504
+    -0x1.ffffff80000000000004p-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 505
+    -0x1.ffffff80p-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 506
+    -0x1.ffffff7ffffffffffff8p-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 507
+    -0x1.ffffff7ffffff0000004p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 508
+    -0x1.ffffff7ffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 509
+    -0x1.ffffff7fffffeffffff8p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 510
+    -0x1.ffffff80000040000004000002p-1,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 511
+    -0x1.ffffff80000040000000000002p-1,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 512
+    -0x1.ffffff8000003ffffff8000002p-1,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 513
+    -0x1.ffffff80000020000004p-1,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 514
+    -0x1.ffffff80000020p-1,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 515
+    -0x1.ffffff8000001ffffff8p-1,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 516
+    -0x1.ffffff80000010000003ffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 517
+    -0x1.ffffff8000000fffffffffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 518
+    -0x1.ffffff8000000ffffff7ffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 519
+    -0x1.fffffffffffffcp0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p52
+  },
+  { // Entry 520
+    -0x1.fffffffffffff8p-1,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1,
+    -0x1.0p52
+  },
+  { // Entry 521
+    -0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 522
+    -0x1.80p0,
+    0x1.fffffffffffffp51,
+    0x1.0p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 523
+    -0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0,
+    -0x1.0p52
+  },
+  { // Entry 524
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 525
+    -0x1.00000000000010p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 526
+    0x1.ffffffffffffe0p-2,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0,
+    -0x1.0p52
+  },
+  { // Entry 527
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 528
+    -0x1.80p0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p52
+  },
+  { // Entry 529
+    -0x1.p-1,
+    0x1.0p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0p52
+  },
+  { // Entry 530
+    0.0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 531
+    -0x1.p0,
+    0x1.0p52,
+    0x1.0p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 532
+    0.0,
+    0x1.0p52,
+    0x1.0p0,
+    -0x1.0p52
+  },
+  { // Entry 533
+    0x1.p-1,
+    0x1.0p52,
+    0x1.0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 534
+    0.0,
+    0x1.0p52,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 535
+    0x1.p0,
+    0x1.0p52,
+    0x1.0000000000001p0,
+    -0x1.0p52
+  },
+  { // Entry 536
+    0x1.80p0,
+    0x1.0p52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 537
+    -0x1.00000000000010p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p52
+  },
+  { // Entry 538
+    0x1.ffffffffffffe0p-2,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0p52
+  },
+  { // Entry 539
+    0x1.fffffffffffff0p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 540
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 541
+    0x1.p0,
+    0x1.0000000000001p52,
+    0x1.0p0,
+    -0x1.0p52
+  },
+  { // Entry 542
+    0x1.80p0,
+    0x1.0000000000001p52,
+    0x1.0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 543
+    0x1.00000000000010p0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 544
+    0x1.00000000000008p1,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0,
+    -0x1.0p52
+  },
+  { // Entry 545
+    0x1.40000000000008p1,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 546
+    0x1.08p-5,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p-5
+  },
+  { // Entry 547
+    0x1.0040p0,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p0
+  },
+  { // Entry 548
+    0x1.p-4,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p-5
+  },
+  { // Entry 549
+    0x1.08p0,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 550
+    0x1.p-4,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p-5
+  },
+  { // Entry 551
+    0x1.08p0,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p0
+  },
+  { // Entry 552
+    0x1.08p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p-5
+  },
+  { // Entry 553
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 554
+    0x1.20p-2,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 555
+    0x1.40p0,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 556
+    0x1.08p0,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 557
+    0x1.p1,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 558
+    0x1.01p3,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 559
+    0x1.20p3,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 560
+    0x1.0040p5,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 561
+    0x1.08p5,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 562
+    0x1.0040p5,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 563
+    0x1.08p5,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 564
+    0x1.0010p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 565
+    0x1.02p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 566
+    0x1.0002p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 567
+    0x1.0040p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 568
+    0x1.000080p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 569
+    0x1.0010p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 570
+    0x1.0008p3,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p3
+  },
+  { // Entry 571
+    0x1.0002p5,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p5
+  },
+  { // Entry 572
+    0x1.01p3,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 573
+    0x1.0040p5,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p5
+  },
+  { // Entry 574
+    0x1.01p3,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p3
+  },
+  { // Entry 575
+    0x1.0040p5,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p5
+  },
+  { // Entry 576
+    0x1.20p3,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 577
+    0x1.08p5,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p5
+  },
+  { // Entry 578
+    0x1.08p3,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 579
+    0x1.02p5,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 580
+    0x1.20p3,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 581
+    0x1.08p5,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 582
+    0x1.p4,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 583
+    0x1.40p5,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 584
+    0x1.40p5,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 585
+    0x1.p6,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 586
+    0x1.40p5,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 587
+    0x1.p6,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 588
+    0x1.10p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 589
+    0x1.40p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 590
+    0x1.02p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 591
+    0x1.08p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 592
+    0x1.0080p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 593
+    0x1.02p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 594
+    0x1.000010p10,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p10
+  },
+  { // Entry 595
+    0x1.000004p12,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p12
+  },
+  { // Entry 596
+    0x1.0002p10,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 597
+    0x1.000080p12,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p12
+  },
+  { // Entry 598
+    0x1.0002p10,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p10
+  },
+  { // Entry 599
+    0x1.000080p12,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p12
+  },
+  { // Entry 600
+    0x1.0040p10,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 601
+    0x1.0010p12,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p12
+  },
+  { // Entry 602
+    0x1.0010p10,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 603
+    0x1.0004p12,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 604
+    0x1.0040p10,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 605
+    0x1.0010p12,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 606
+    0x1.02p10,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 607
+    0x1.0080p12,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 608
+    0x1.08p10,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 609
+    0x1.02p12,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 610
+    0x1.08p10,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 611
+    0x1.02p12,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 612
+    0x1.20p10,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 613
+    0x1.08p12,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 614
+    0x1.p11,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 615
+    0x1.40p12,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 616
+    0x1.40p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 617
+    0x1.p13,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 618
+    0x1.0020p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 619
+    0x1.04p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 620
+    0x1.0008p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 621
+    0x1.01p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 622
+    0x1.0008p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 623
+    0x1.01p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 624
+    0x1.0002p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 625
+    0x1.0040p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 626
+    0x1.20p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 627
+    0x1.80p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 628
+    0x1.08p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 629
+    0x1.20p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 630
+    0x1.08p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 631
+    0x1.20p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 632
+    0x1.02p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 633
+    0x1.08p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 634
+    0x1.10p10,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 635
+    0x1.04p12,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 636
+    0x1.40p10,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 637
+    0x1.10p12,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 638
+    0x1.40p10,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 639
+    0x1.10p12,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 640
+    0x1.p11,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 641
+    0x1.40p12,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 642
+    0x1.000040p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 643
+    0x1.0008p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 644
+    0x1.000010p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 645
+    0x1.0002p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 646
+    0x1.000010p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 647
+    0x1.0002p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 648
+    0x1.000004p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 649
+    0x1.000080p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 650
+    0x1.0040p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 651
+    0x1.01p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 652
+    0x1.0010p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 653
+    0x1.0040p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 654
+    0x1.0010p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 655
+    0x1.0040p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 656
+    0x1.0004p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 657
+    0x1.0010p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 658
+    0x1.20p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 659
+    0x1.80p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 660
+    0x1.08p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 661
+    0x1.20p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 662
+    0x1.08p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 663
+    0x1.20p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 664
+    0x1.02p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 665
+    0x1.08p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 666
+    -0x1.ffffe0p-21,
+    -0x1.0p-20,
+    -0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 667
+    0x1.000010p-20,
+    -0x1.0p-20,
+    -0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 668
+    -0x1.000010p-20,
+    -0x1.0p-20,
+    0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 669
+    0x1.ffffe0p-21,
+    -0x1.0p-20,
+    0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 670
+    -0x1.000010p-20,
+    0x1.0p-20,
+    -0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 671
+    0x1.ffffe0p-21,
+    0x1.0p-20,
+    -0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 672
+    -0x1.ffffe0p-21,
+    0x1.0p-20,
+    0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 673
+    0x1.000010p-20,
+    0x1.0p-20,
+    0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 674
+    0x1.fffffffffffffffffffep-21,
+    -0x1.0p-10,
+    -0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 675
+    0x1.00000000000000000001p-20,
+    -0x1.0p-10,
+    -0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 676
+    -0x1.00000000000000000001p-20,
+    -0x1.0p-10,
+    0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 677
+    -0x1.fffffffffffffffffffep-21,
+    -0x1.0p-10,
+    0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 678
+    -0x1.00000000000000000001p-20,
+    0x1.0p-10,
+    -0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 679
+    -0x1.fffffffffffffffffffep-21,
+    0x1.0p-10,
+    -0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 680
+    0x1.fffffffffffffffffffep-21,
+    0x1.0p-10,
+    0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 681
+    0x1.00000000000000000001p-20,
+    0x1.0p-10,
+    0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 682
+    0x1.f0p-11,
+    -0x1.0p-5,
+    -0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 683
+    0x1.08p-10,
+    -0x1.0p-5,
+    -0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 684
+    -0x1.08p-10,
+    -0x1.0p-5,
+    0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 685
+    -0x1.f0p-11,
+    -0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 686
+    -0x1.08p-10,
+    0x1.0p-5,
+    -0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 687
+    -0x1.f0p-11,
+    0x1.0p-5,
+    -0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 688
+    0x1.f0p-11,
+    0x1.0p-5,
+    0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 689
+    0x1.08p-10,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 690
+    0x1.68p6,
+    -0x1.4p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 691
+    0x1.b8p6,
+    -0x1.4p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 692
+    -0x1.b8p6,
+    -0x1.4p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 693
+    -0x1.68p6,
+    -0x1.4p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 694
+    -0x1.b8p6,
+    0x1.4p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 695
+    -0x1.68p6,
+    0x1.4p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 696
+    0x1.68p6,
+    0x1.4p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 697
+    0x1.b8p6,
+    0x1.4p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 698
+    0.0,
+    -0x1.0p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 699
+    0x1.p1,
+    -0x1.0p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 700
+    -0x1.p1,
+    -0x1.0p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 701
+    0.0,
+    -0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 702
+    -0x1.p1,
+    0x1.0p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 703
+    0.0,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 704
+    0.0,
+    0x1.0p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 705
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 706
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 707
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 708
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 709
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 710
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 711
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 712
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 713
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 714
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 715
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 716
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 717
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 718
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 719
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 720
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 721
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 722
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 723
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 724
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 725
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 726
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 727
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 728
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 729
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 730
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 731
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 732
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 733
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 734
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 735
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 736
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 737
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 738
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 739
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 740
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 741
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 742
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 743
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 744
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 745
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 746
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 747
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 748
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 749
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 750
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 751
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 752
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 753
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 754
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 755
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 756
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 757
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 758
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 759
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 760
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 761
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 762
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 763
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 764
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 765
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 766
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 767
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 768
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 769
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 770
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 771
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 772
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 773
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 774
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 775
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 776
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 777
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 778
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 779
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 780
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 781
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 782
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 783
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 784
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 785
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 786
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 787
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 788
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 789
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 790
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 791
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 792
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 793
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 794
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 795
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 796
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 797
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 798
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 799
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 800
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 801
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 802
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 803
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 804
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 805
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 806
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 807
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 808
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 809
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 810
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 811
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 812
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 813
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 814
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 815
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 816
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 817
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 818
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 819
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 820
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 821
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 822
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 823
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 824
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 825
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 826
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 827
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 828
+    0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 829
+    -0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 830
+    0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 831
+    -0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 832
+    0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 833
+    -0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 834
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0.0
+  },
+  { // Entry 835
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 836
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 837
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 838
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 839
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 840
+    0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 841
+    -0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 842
+    0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 843
+    -0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 844
+    0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 845
+    -0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 846
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 847
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 848
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 849
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 850
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 851
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 852
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 853
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 854
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 855
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 856
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 857
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 858
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 859
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 860
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 861
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 862
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 863
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 864
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 865
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 866
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 867
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 868
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 869
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 870
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 871
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 872
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 873
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 874
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 875
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 876
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 877
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 878
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 879
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 880
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 881
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 882
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 883
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 884
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 885
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 886
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 887
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 888
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 889
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 890
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 891
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 892
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 893
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 894
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 895
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 896
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 897
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 898
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 899
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 900
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 901
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 902
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 903
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 904
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 905
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 906
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 907
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 908
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 909
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 910
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 911
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 912
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 913
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 914
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 915
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 916
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 917
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 918
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 919
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 920
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 921
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 922
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 923
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 924
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 925
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 926
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 927
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 928
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 929
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 930
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 931
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 932
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 933
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 934
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 935
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 936
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 937
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 938
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 939
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 940
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 941
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 942
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 943
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 944
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 945
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 946
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 947
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 948
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 949
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 950
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 951
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 952
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 953
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 954
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 955
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 956
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 957
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 958
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 959
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 960
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 961
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 962
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 963
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 964
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 965
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 966
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 967
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 968
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 969
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 970
+    0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 971
+    -0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 972
+    0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 973
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 974
+    0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 975
+    -0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 976
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0.0
+  },
+  { // Entry 977
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 978
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 979
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 980
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 981
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 982
+    0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 983
+    -0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 984
+    0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 985
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 986
+    0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 987
+    -0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 988
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 989
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 990
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 991
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 992
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 993
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 994
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 995
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 996
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 997
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 998
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 999
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1000
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1001
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1002
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1003
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1004
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1005
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1006
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1007
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1008
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1009
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1010
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1011
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1012
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1013
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1014
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1015
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1016
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1017
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1018
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1019
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1020
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1021
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1022
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1023
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1024
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1025
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1026
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1027
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1028
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1029
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1030
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1031
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1032
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1033
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1034
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1035
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1036
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1037
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1038
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1039
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1040
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1041
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1042
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1043
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1044
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1045
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1046
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1047
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1048
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1049
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1050
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1051
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1052
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1053
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1054
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1055
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1056
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1057
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1058
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1059
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1060
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1061
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1062
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1063
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1064
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1065
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1066
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1067
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1068
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1069
+    -0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1070
+    0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1071
+    0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1072
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1073
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1074
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1075
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1076
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1077
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1078
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1079
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1080
+    0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1081
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1082
+    -0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1083
+    -0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1084
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1085
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1086
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1087
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1088
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1089
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1090
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1091
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1092
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1093
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1094
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1095
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1096
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1097
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1098
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1099
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1100
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1101
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1102
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1103
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1104
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1105
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1106
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1107
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1108
+    HUGE_VAL,
+    0x1.0p-1022,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1109
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1110
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1111
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1112
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1113
+    -0x1.p-1022,
+    0x1.0p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1114
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1115
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1116
+    0x1.p-1074,
+    0x1.0p-1022,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1117
+    -0x1.p-1074,
+    0x1.0p-1022,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1118
+    0.0,
+    0x1.0p-1022,
+    0.0,
+    0.0
+  },
+  { // Entry 1119
+    0.0,
+    0x1.0p-1022,
+    0.0,
+    -0.0
+  },
+  { // Entry 1120
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1121
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1122
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1123
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1124
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1125
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1126
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1127
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1128
+    0x1.p-1074,
+    0x1.0p-1022,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1129
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1130
+    0.0,
+    0x1.0p-1022,
+    -0.0,
+    0.0
+  },
+  { // Entry 1131
+    -0.0,
+    0x1.0p-1022,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1132
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1133
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1134
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1135
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1136
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1137
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1138
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1139
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1140
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1141
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1142
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1143
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1144
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1145
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1146
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1147
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1148
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1149
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1150
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1151
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1152
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1153
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1154
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1155
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1156
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1157
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1158
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1159
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1160
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1161
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1162
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1163
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1164
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1165
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1166
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1167
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1168
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1169
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1170
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1171
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1172
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1173
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1174
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1175
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1176
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1177
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1178
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1179
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1180
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1181
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1182
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1183
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1184
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1185
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1186
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1187
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1188
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1189
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1190
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1191
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1192
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1193
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1194
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1195
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1196
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1197
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1198
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1199
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1200
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1201
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1202
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1203
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1204
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1205
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1206
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1207
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1208
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1209
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1210
+    0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1211
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1212
+    -0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1213
+    -0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1214
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1215
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1216
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1217
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1218
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1219
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1220
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1221
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1222
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1223
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1224
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1225
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1226
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1227
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1228
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1229
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1230
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1231
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1232
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1233
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1234
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1235
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1236
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1237
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1238
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1239
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1240
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1241
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1242
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1243
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1244
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1245
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1246
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1247
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1248
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1249
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1250
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1251
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1252
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1253
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1254
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1255
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1256
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1257
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1258
+    0x1.p-1074,
+    -0x1.0p-1022,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1259
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1260
+    0.0,
+    -0x1.0p-1022,
+    0.0,
+    0.0
+  },
+  { // Entry 1261
+    -0.0,
+    -0x1.0p-1022,
+    0.0,
+    -0.0
+  },
+  { // Entry 1262
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1263
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1264
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1265
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1266
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1267
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1268
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1269
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1270
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1271
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1272
+    0.0,
+    -0x1.0p-1022,
+    -0.0,
+    0.0
+  },
+  { // Entry 1273
+    0.0,
+    -0x1.0p-1022,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1274
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1275
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1276
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1277
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1278
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1279
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1280
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1281
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1282
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1283
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1284
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1285
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1286
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1287
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1288
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1289
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1290
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1291
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1292
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1293
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1294
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1295
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1296
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1297
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1298
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1299
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1300
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1301
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1302
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1303
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1304
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1305
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1306
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1307
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1308
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1309
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1310
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1311
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1312
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1313
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1314
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1315
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1316
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1317
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1318
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1319
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1320
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1321
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1322
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1323
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1324
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1325
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1326
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1327
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1328
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1329
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1330
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1331
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1332
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1333
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1334
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1335
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1336
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1337
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1338
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1339
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1340
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1341
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1342
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1343
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1344
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1345
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1346
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1347
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1348
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1349
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1350
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1351
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1352
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1353
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1354
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1355
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1356
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1357
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1358
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1359
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1360
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1361
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1362
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1363
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1364
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1365
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1366
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1367
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1368
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1369
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1370
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1371
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1372
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1373
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1374
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1375
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1376
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1377
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1378
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1379
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1380
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1381
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1382
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1383
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1384
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1385
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1386
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1387
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1388
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1389
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1390
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1391
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1392
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1393
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1394
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1395
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1396
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1397
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1398
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1399
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1400
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1401
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1402
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0.0
+  },
+  { // Entry 1403
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 1404
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1405
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1406
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1407
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1408
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1409
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1410
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1411
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1412
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1413
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1414
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 1415
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1416
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1417
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1418
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1419
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1420
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1421
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1422
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1423
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1424
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1425
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1426
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1427
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1428
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1429
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1430
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1431
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1432
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1433
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1434
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1435
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1436
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1437
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1438
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1439
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1440
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1441
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1442
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1443
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1444
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1445
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1446
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1447
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1448
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1449
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1450
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1451
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1452
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1453
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1454
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1455
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1456
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1457
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1458
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1459
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1460
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1461
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1462
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1463
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1464
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1465
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1466
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1467
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1468
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1469
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1470
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1471
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1472
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1473
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1474
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1475
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1476
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1477
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1478
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1479
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1480
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1481
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1482
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1483
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1484
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1485
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1486
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1487
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1488
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1489
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1490
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1491
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1492
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1493
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1494
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1495
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1496
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1497
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1498
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1499
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1500
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1501
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1502
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1503
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1504
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1505
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1506
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1507
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1508
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1509
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1510
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1511
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1512
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1513
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1514
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1515
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1516
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1517
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1518
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1519
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1520
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1521
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1522
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1523
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1524
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1525
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1526
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1527
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1528
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1529
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1530
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1531
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1532
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1533
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1534
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1535
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1536
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1537
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1538
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1539
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1540
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1541
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1542
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1543
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1544
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0.0
+  },
+  { // Entry 1545
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 1546
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1547
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1548
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1549
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1550
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1551
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1552
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1553
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1554
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1555
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1556
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 1557
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1558
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1559
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1560
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1561
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1562
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1563
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1564
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1565
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1566
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1567
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1568
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1569
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1570
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1571
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1572
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1573
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1574
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1575
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1576
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1577
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1578
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1579
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1580
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1581
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1582
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1583
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1584
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1585
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1586
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1587
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1588
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1589
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1590
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1591
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1592
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1593
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1594
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1595
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1596
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1597
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1598
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1599
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1600
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1601
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1602
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1603
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1604
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1605
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1606
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1607
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1608
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1609
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1610
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1611
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1612
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1613
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1614
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1615
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1616
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1617
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1618
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1619
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1620
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1621
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1622
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1623
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1624
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1625
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1626
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1627
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1628
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1629
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1630
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1631
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1632
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1633
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1634
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1635
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1636
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1637
+    -0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1638
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1639
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1640
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1641
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1642
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1643
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1644
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1645
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1646
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1647
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1648
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1649
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1650
+    -0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1651
+    -0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1652
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1653
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1654
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1655
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1656
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1657
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1658
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1659
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1660
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1661
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1662
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1663
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1664
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1665
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1666
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1667
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1668
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1669
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1670
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1671
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1672
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1673
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1674
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1675
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1676
+    HUGE_VAL,
+    0x1.0p-1074,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1677
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1678
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1679
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1680
+    0x1.p-1022,
+    0x1.0p-1074,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1681
+    -0x1.p-1022,
+    0x1.0p-1074,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1682
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1683
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1684
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1685
+    -0x1.p-1074,
+    0x1.0p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1686
+    0.0,
+    0x1.0p-1074,
+    0.0,
+    0.0
+  },
+  { // Entry 1687
+    0.0,
+    0x1.0p-1074,
+    0.0,
+    -0.0
+  },
+  { // Entry 1688
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1689
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1690
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1691
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1692
+    0x1.p-1022,
+    0x1.0p-1074,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1693
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1694
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1695
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1696
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1697
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1698
+    0.0,
+    0x1.0p-1074,
+    -0.0,
+    0.0
+  },
+  { // Entry 1699
+    -0.0,
+    0x1.0p-1074,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1700
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1701
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1702
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1703
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1704
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1705
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1706
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1707
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1708
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1709
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1710
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1711
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1712
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1713
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1714
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1715
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1716
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1717
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1718
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1719
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1720
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1721
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1722
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1723
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1724
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1725
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1726
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1727
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1728
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1729
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1730
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1731
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1732
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1733
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1734
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1735
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1736
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1737
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1738
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1739
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1740
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1741
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1742
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1743
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1744
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1745
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1746
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1747
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1748
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1749
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1750
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1751
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1752
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1753
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1754
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1755
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1756
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1757
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1758
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1759
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1760
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1761
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1762
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1763
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1764
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1765
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1766
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1767
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1768
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1769
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1770
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1771
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1772
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1773
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1774
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1775
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1776
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1777
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1778
+    0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1779
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1780
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1781
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1782
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1783
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1784
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1785
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1786
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1787
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1788
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1789
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1790
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1791
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1792
+    0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1793
+    0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1794
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1795
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1796
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1797
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1798
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1799
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1800
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1801
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1802
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1803
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1804
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1805
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1806
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1807
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1808
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1809
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1810
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1811
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1812
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1813
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1814
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1815
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1816
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1817
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1818
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1819
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1820
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1821
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1822
+    0x1.p-1022,
+    -0x1.0p-1074,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1823
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1824
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1825
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1826
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1827
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1828
+    0.0,
+    -0x1.0p-1074,
+    0.0,
+    0.0
+  },
+  { // Entry 1829
+    -0.0,
+    -0x1.0p-1074,
+    0.0,
+    -0.0
+  },
+  { // Entry 1830
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1831
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1832
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1833
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1834
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1835
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1836
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1837
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1838
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1839
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1840
+    0.0,
+    -0x1.0p-1074,
+    -0.0,
+    0.0
+  },
+  { // Entry 1841
+    0.0,
+    -0x1.0p-1074,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1842
+    HUGE_VAL,
+    0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1843
+    -HUGE_VAL,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1844
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1845
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1846
+    0x1.p-1022,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1847
+    -0x1.p-1022,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1848
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1849
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1850
+    0x1.p-1074,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1851
+    -0x1.p-1074,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1852
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1853
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1854
+    HUGE_VAL,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1855
+    -HUGE_VAL,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1856
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1857
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1858
+    0x1.p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1859
+    -0x1.p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1860
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1861
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1862
+    0x1.p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1863
+    -0x1.p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1864
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1865
+    -0.0,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1866
+    HUGE_VAL,
+    0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1867
+    -HUGE_VAL,
+    0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1868
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1869
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1870
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1871
+    -0x1.p-1022,
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1872
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1873
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1874
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1875
+    -0x1.p-1074,
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1876
+    0.0,
+    0.0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1877
+    0.0,
+    0.0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1878
+    HUGE_VAL,
+    0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1879
+    -HUGE_VAL,
+    0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1880
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1881
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1882
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1883
+    -0x1.p-1022,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1884
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1885
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1886
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1887
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1888
+    0.0,
+    0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1889
+    -0.0,
+    0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1890
+    HUGE_VAL,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1891
+    -HUGE_VAL,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1892
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1893
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1894
+    0x1.p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1895
+    -0x1.p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1896
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1897
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1898
+    0x1.p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1899
+    -0x1.p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1900
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1901
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1902
+    HUGE_VAL,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1903
+    -HUGE_VAL,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1904
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1905
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1906
+    0x1.p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1907
+    -0x1.p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1908
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1909
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1910
+    0x1.p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1911
+    -0x1.p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1912
+    0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1913
+    -0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1914
+    HUGE_VAL,
+    0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1915
+    -HUGE_VAL,
+    0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1916
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1917
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1918
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1919
+    -0x1.p-1022,
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1920
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1921
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1922
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1923
+    -0x1.p-1074,
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1924
+    0.0,
+    0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1925
+    0.0,
+    0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1926
+    HUGE_VAL,
+    0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1927
+    -HUGE_VAL,
+    0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1928
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1929
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1930
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1931
+    -0x1.p-1022,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1932
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1933
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1934
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1935
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1936
+    0.0,
+    0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1937
+    -0.0,
+    0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1938
+    HUGE_VAL,
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1939
+    -HUGE_VAL,
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1940
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1941
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1942
+    0x1.p-1022,
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1943
+    -0x1.p-1022,
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1944
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1945
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1946
+    0x1.p-1074,
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1947
+    -0x1.p-1074,
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1948
+    0.0,
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 1949
+    0.0,
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 1950
+    HUGE_VAL,
+    0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1951
+    -HUGE_VAL,
+    0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1952
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1953
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1954
+    0x1.p-1022,
+    0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1955
+    -0x1.p-1022,
+    0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1956
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1957
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1958
+    0x1.p-1074,
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1959
+    -0x1.p-1074,
+    0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1960
+    0.0,
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 1961
+    -0.0,
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1962
+    HUGE_VAL,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1963
+    -HUGE_VAL,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1964
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1965
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1966
+    0x1.p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1967
+    -0x1.p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1968
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1969
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1970
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1971
+    -0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1972
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1973
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1974
+    HUGE_VAL,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1975
+    -HUGE_VAL,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1976
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1977
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1978
+    0x1.p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1979
+    -0x1.p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1980
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1981
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1982
+    0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1983
+    -0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1984
+    0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1985
+    0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1986
+    HUGE_VAL,
+    -0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1987
+    -HUGE_VAL,
+    -0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1988
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1989
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1990
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1991
+    -0x1.p-1022,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1992
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1993
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1994
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1995
+    -0x1.p-1074,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1996
+    0.0,
+    -0.0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1997
+    -0.0,
+    -0.0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1998
+    HUGE_VAL,
+    -0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1999
+    -HUGE_VAL,
+    -0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 2000
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2001
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2002
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2003
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2004
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2005
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2006
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2007
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2008
+    0.0,
+    -0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2009
+    0.0,
+    -0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2010
+    HUGE_VAL,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2011
+    -HUGE_VAL,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2012
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2013
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2014
+    0x1.p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2015
+    -0x1.p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2016
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2017
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2018
+    0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2019
+    -0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2020
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2021
+    -0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2022
+    HUGE_VAL,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2023
+    -HUGE_VAL,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2024
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2025
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2026
+    0x1.p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2027
+    -0x1.p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2028
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2029
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2030
+    0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2031
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2032
+    0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2033
+    0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2034
+    HUGE_VAL,
+    -0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2035
+    -HUGE_VAL,
+    -0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2036
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2037
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2038
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2039
+    -0x1.p-1022,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2040
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2041
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2042
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2043
+    -0x1.p-1074,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2044
+    0.0,
+    -0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2045
+    -0.0,
+    -0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2046
+    HUGE_VAL,
+    -0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2047
+    -HUGE_VAL,
+    -0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2048
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2049
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2050
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2051
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2052
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2053
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2054
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2055
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2056
+    0.0,
+    -0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2057
+    0.0,
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2058
+    HUGE_VAL,
+    -0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 2059
+    -HUGE_VAL,
+    -0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 2060
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2061
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2062
+    0x1.p-1022,
+    -0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 2063
+    -0x1.p-1022,
+    -0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 2064
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2065
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2066
+    0x1.p-1074,
+    -0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 2067
+    -0x1.p-1074,
+    -0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 2068
+    0.0,
+    -0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 2069
+    -0.0,
+    -0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 2070
+    HUGE_VAL,
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 2071
+    -HUGE_VAL,
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 2072
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2073
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2074
+    0x1.p-1022,
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 2075
+    -0x1.p-1022,
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 2076
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2077
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2078
+    0x1.p-1074,
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 2079
+    -0x1.p-1074,
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 2080
+    0.0,
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 2081
+    0.0,
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 2082
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 2083
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2084
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2085
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2086
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2087
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2088
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2089
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2090
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2091
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 2092
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2093
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 2094
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2095
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2096
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2097
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2098
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2099
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2100
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2101
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2102
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 2103
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2104
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 2105
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2106
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2107
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2108
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2109
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2110
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2111
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2112
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2113
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2114
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2115
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 2116
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2117
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2118
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2119
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2120
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2121
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2122
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2123
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2124
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2125
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2126
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 2127
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2128
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2129
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2130
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2131
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2132
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2133
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2134
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2135
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2136
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2137
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 2138
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2139
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2140
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2141
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2142
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2143
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2144
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2145
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2146
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2147
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2148
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2149
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2150
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2151
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2152
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2153
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2154
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2155
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2156
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2157
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2158
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2159
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2160
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2161
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2162
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2163
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2164
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2165
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2166
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2167
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2168
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2169
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2170
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2171
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2172
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2173
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2174
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2175
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2176
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2177
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2178
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2179
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2180
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2181
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2182
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2183
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2184
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2185
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2186
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2187
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2188
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2189
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2190
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2191
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2192
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 2193
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2194
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2195
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2196
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2197
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2198
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2199
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2200
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2201
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 2202
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2203
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 2204
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2205
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2206
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2207
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2208
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2209
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2210
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2211
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2212
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 2213
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2214
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 2215
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2216
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2217
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2218
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2219
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2220
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2221
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2222
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2223
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2224
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2225
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 2226
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2227
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2228
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2229
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2230
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2231
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2232
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2233
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2234
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2235
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2236
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 2237
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2238
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2239
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2240
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2241
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2242
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2243
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2244
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2245
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2246
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2247
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 2248
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2249
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2250
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2251
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2252
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2253
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2254
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2255
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2256
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2257
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2258
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2259
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2260
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2261
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2262
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2263
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2264
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2265
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2266
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2267
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2268
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2269
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2270
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2271
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2272
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2273
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2274
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2275
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2276
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2277
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2278
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2279
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2280
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2281
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2282
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2283
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2284
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2285
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2286
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2287
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2288
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2289
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2290
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2291
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2292
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2293
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2294
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2295
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2296
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2297
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2298
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2299
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2300
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2301
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0
+  }
+};
diff --git a/tests/math_data/fmaf_intel_data.h b/tests/math_data/fmaf_intel_data.h
new file mode 100644
index 0000000..af509e6
--- /dev/null
+++ b/tests/math_data/fmaf_intel_data.h
@@ -0,0 +1,13836 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_3_t<float, float, float, float> g_fmaf_intel_data[] = {
+  { // Entry 0
+    -0x1.800002fffffffffffd80p73,
+    -0x1.000002p72,
+    0x1.80p1,
+    0x1.40p2
+  },
+  { // Entry 1
+    -0x1.e66666p0,
+    0x1.p-149,
+    -0x1.ccccccp-1,
+    -0x1.e66666p0
+  },
+  { // Entry 2
+    0x1.15f153ffffffffffffffffffffffffffp-2,
+    0x1.p-149,
+    -0x1.ccccccp-1,
+    0x1.15f154p-2
+  },
+  { // Entry 3
+    0x1.000005fffffffffffffffffffff0ccccp-41,
+    0x1.p-149,
+    -0x1.e66666p-1,
+    0x1.000006p-41
+  },
+  { // Entry 4
+    -0x1.e66665ffffffffffffffffffffffffffp0,
+    0x1.p-149,
+    0x1.075070p-3,
+    -0x1.e66666p0
+  },
+  { // Entry 5
+    0x1.00000600000000000000000000014444p-41,
+    0x1.p-149,
+    0x1.444424p-4,
+    0x1.000006p-41
+  },
+  { // Entry 6
+    0x1.c9999906666680p0,
+    0x1.000002p-3,
+    -0x1.ccccccp-1,
+    0x1.e66666p0
+  },
+  { // Entry 7
+    0x1.880156fffffffffefbbcp14,
+    0x1.0000e0p7,
+    0x1.88p7,
+    -0x1.0444p-50
+  },
+  { // Entry 8
+    0x1.2b3335p-43,
+    0x1.08p-41,
+    -0x1.8df6b0p-1,
+    0x1.18p-41
+  },
+  { // Entry 9
+    0x1.9af704000001p-1,
+    0x1.43969cp-3,
+    0x1.62e42ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 10
+    0x1.7eed9900000080p-1,
+    0x1.43969cp-4,
+    0x1.62e42ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 11
+    -0x1.5229cafffffffffc6de498p59,
+    0x1.88p60,
+    -0x1.b9aec0p-2,
+    0x1.c90db4p-4
+  },
+  { // Entry 12
+    0x1.678c8dffffffb0p-1,
+    0x1.ae0ef4p-7,
+    0x1.62e42ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 13
+    0x1.ffffee000010p-1,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 14
+    0x1.fffff0000010p-1,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 15
+    0x1.fffff4000010p-1,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 16
+    0x1.fffffep-1,
+    0x1.fffffep127,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 17
+    0x1.p0,
+    0x1.fffffep127,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 18
+    0x1.000002p0,
+    0x1.fffffep127,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 19
+    0x1.000006fffff8p0,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 20
+    0x1.000007fffff8p0,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 21
+    0x1.000009fffff8p0,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 22
+    0x1.ffffee000020p-2,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 23
+    0x1.fffff0000020p-2,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 24
+    0x1.fffff4000020p-2,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 25
+    0x1.fffffep-2,
+    0x1.fffffcp126,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 26
+    0x1.p-1,
+    0x1.fffffcp126,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 27
+    0x1.000002p-1,
+    0x1.fffffcp126,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 28
+    0x1.000006fffff0p-1,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 29
+    0x1.000007fffff0p-1,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 30
+    0x1.000009fffff0p-1,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 31
+    0x1.ffffee000010p-2,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 32
+    0x1.fffff0000010p-2,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 33
+    0x1.fffff4000010p-2,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 34
+    0x1.fffffep-2,
+    0x1.fffffep126,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 35
+    0x1.p-1,
+    0x1.fffffep126,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 36
+    0x1.000002p-1,
+    0x1.fffffep126,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 37
+    0x1.000006fffff8p-1,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 38
+    0x1.000007fffff8p-1,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 39
+    0x1.000009fffff8p-1,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 40
+    0x1.ffffeep-2,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 41
+    0x1.fffff0p-2,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 42
+    0x1.fffff4p-2,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 43
+    0x1.fffffep-2,
+    0x1.p127,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 44
+    0x1.p-1,
+    0x1.p127,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 45
+    0x1.000002p-1,
+    0x1.p127,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 46
+    0x1.000007p-1,
+    0x1.p127,
+    0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 47
+    0x1.000008p-1,
+    0x1.p127,
+    0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 48
+    0x1.00000ap-1,
+    0x1.p127,
+    0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 49
+    0x1.fffff6000010p-1,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 50
+    0x1.fffff8000010p-1,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 51
+    0x1.fffffc000010p-1,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 52
+    0x1.fffffep-1,
+    0x1.fffffcp126,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 53
+    0x1.p0,
+    0x1.fffffcp126,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 54
+    0x1.000002p0,
+    0x1.fffffcp126,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 55
+    0x1.000002fffff8p0,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 56
+    0x1.000003fffff8p0,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 57
+    0x1.000005fffff8p0,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 58
+    0x1.fffff6000008p-1,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 59
+    0x1.fffff8000008p-1,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 60
+    0x1.fffffc000008p-1,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 61
+    0x1.fffffep-1,
+    0x1.fffffep126,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 62
+    0x1.p0,
+    0x1.fffffep126,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 63
+    0x1.000002p0,
+    0x1.fffffep126,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 64
+    0x1.000002fffffcp0,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 65
+    0x1.000003fffffcp0,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 66
+    0x1.000005fffffcp0,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 67
+    0x1.fffff6p-1,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 68
+    0x1.fffff8p-1,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 69
+    0x1.fffffcp-1,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 70
+    0x1.fffffep-1,
+    0x1.p127,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 71
+    0x1.p0,
+    0x1.p127,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 72
+    0x1.000002p0,
+    0x1.p127,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 73
+    0x1.000003p0,
+    0x1.p127,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 74
+    0x1.000004p0,
+    0x1.p127,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 75
+    0x1.000006p0,
+    0x1.p127,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 76
+    0x1.fffffc000001ffffffffffffffffffffp-2,
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 77
+    0x1.fffffc000002p-2,
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 78
+    0x1.fffffc000002p-2,
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 79
+    0x1.fffffdffffffffffffffffffffffffffp-2,
+    0x1.fffffep-2,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 80
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 81
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 82
+    0x1.000000fffffdffffffffffffffffffffp-1,
+    0x1.fffffep-2,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 83
+    0x1.000000fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 84
+    0x1.000000fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 85
+    0x1.fffffdffffffffffffffffffffffffffp-2,
+    0x1.p-1,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 86
+    0x1.fffffep-2,
+    0x1.p-1,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 87
+    0x1.fffffep-2,
+    0x1.p-1,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 88
+    0x1.ffffffffffffffffffffffffffffffffp-2,
+    0x1.p-1,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 89
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 90
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 91
+    0x1.000001ffffffffffffffffffffffffffp-1,
+    0x1.p-1,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 92
+    0x1.000002p-1,
+    0x1.p-1,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 93
+    0x1.000002p-1,
+    0x1.p-1,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 94
+    0x1.000000fffffdffffffffffffffffffffp-1,
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 95
+    0x1.000000fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 96
+    0x1.000000fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 97
+    0x1.000001ffffffffffffffffffffffffffp-1,
+    0x1.000002p-1,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 98
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 99
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 100
+    0x1.000004000003ffffffffffffffffffffp-1,
+    0x1.000002p-1,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 101
+    0x1.000004000004p-1,
+    0x1.000002p-1,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 102
+    0x1.000004000004p-1,
+    0x1.000002p-1,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 103
+    0x1.000001fffffdp-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 104
+    0x1.000002000001p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 105
+    0x1.000002000009p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 106
+    0x1.000002fffffcp-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 107
+    0x1.000003p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 108
+    0x1.000003000008p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 109
+    0x1.000004fffffap-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 110
+    0x1.000004fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 111
+    0x1.000005000006p-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 112
+    0x1.000002fffffcp-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 113
+    0x1.000003p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 114
+    0x1.000003000008p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 115
+    0x1.000003fffffcp-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 116
+    0x1.000004p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 117
+    0x1.000004000008p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 118
+    0x1.000005fffffcp-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 119
+    0x1.000006p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 120
+    0x1.000006000008p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 121
+    0x1.000004fffffap-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 122
+    0x1.000004fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 123
+    0x1.000005000006p-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 124
+    0x1.000005fffffcp-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 125
+    0x1.000006p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 126
+    0x1.000006000008p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 127
+    0x1.000008p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 128
+    0x1.000008000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 129
+    0x1.00000800000cp-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 130
+    0x1.000001fffffdp-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 131
+    0x1.000002000001p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 132
+    0x1.000002000009p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 133
+    0x1.000002fffffcp-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 134
+    0x1.000003p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 135
+    0x1.000003000008p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 136
+    0x1.000004fffffap-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 137
+    0x1.000004fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 138
+    0x1.000005000006p-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 139
+    0x1.000002fffffcp-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 140
+    0x1.000003p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 141
+    0x1.000003000008p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 142
+    0x1.000003fffffcp-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 143
+    0x1.000004p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 144
+    0x1.000004000008p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 145
+    0x1.000005fffffcp-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 146
+    0x1.000006p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 147
+    0x1.000006000008p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 148
+    0x1.000004fffffap-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 149
+    0x1.000004fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 150
+    0x1.000005000006p-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 151
+    0x1.000005fffffcp-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 152
+    0x1.000006p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 153
+    0x1.000006000008p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 154
+    0x1.000008p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 155
+    0x1.000008000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 156
+    0x1.00000800000cp-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 157
+    0x1.00000dfffff1p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-22
+  },
+  { // Entry 158
+    0x1.00000e000001p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-21
+  },
+  { // Entry 159
+    0x1.00000e000021p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-21
+  },
+  { // Entry 160
+    0x1.00000efffff0p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 161
+    0x1.00000fp-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-21
+  },
+  { // Entry 162
+    0x1.00000f000020p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-21
+  },
+  { // Entry 163
+    0x1.000010ffffeep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 164
+    0x1.000010fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-21
+  },
+  { // Entry 165
+    0x1.00001100001ep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-21
+  },
+  { // Entry 166
+    0x1.00000efffff0p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-22
+  },
+  { // Entry 167
+    0x1.00000fp-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-21
+  },
+  { // Entry 168
+    0x1.00000f000020p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-21
+  },
+  { // Entry 169
+    0x1.00000ffffff0p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 170
+    0x1.000010p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-21
+  },
+  { // Entry 171
+    0x1.000010000020p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-21
+  },
+  { // Entry 172
+    0x1.000011fffff0p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 173
+    0x1.000012p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-21
+  },
+  { // Entry 174
+    0x1.000012000020p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-21
+  },
+  { // Entry 175
+    0x1.000010ffffeep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-22
+  },
+  { // Entry 176
+    0x1.000010fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-21
+  },
+  { // Entry 177
+    0x1.00001100001ep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-21
+  },
+  { // Entry 178
+    0x1.000011fffff0p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 179
+    0x1.000012p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-21
+  },
+  { // Entry 180
+    0x1.000012000020p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-21
+  },
+  { // Entry 181
+    0x1.000013fffff4p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 182
+    0x1.000014000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-21
+  },
+  { // Entry 183
+    0x1.000014000024p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-21
+  },
+  { // Entry 184
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-26
+  },
+  { // Entry 185
+    0x1.fffffe000002p-2,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-25
+  },
+  { // Entry 186
+    0x1.fffffe000006p-2,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-25
+  },
+  { // Entry 187
+    0x1.fffffffffffep-2,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 188
+    0x1.p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-25
+  },
+  { // Entry 189
+    0x1.000000000002p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-25
+  },
+  { // Entry 190
+    0x1.000001fffffdp-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 191
+    0x1.000001fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-25
+  },
+  { // Entry 192
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-25
+  },
+  { // Entry 193
+    0x1.fffffffffffep-2,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-26
+  },
+  { // Entry 194
+    0x1.p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-25
+  },
+  { // Entry 195
+    0x1.000000000002p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-25
+  },
+  { // Entry 196
+    0x1.000000ffffffp-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 197
+    0x1.000001p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-25
+  },
+  { // Entry 198
+    0x1.000001000002p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-25
+  },
+  { // Entry 199
+    0x1.000002ffffffp-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 200
+    0x1.000003p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-25
+  },
+  { // Entry 201
+    0x1.000003000002p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-25
+  },
+  { // Entry 202
+    0x1.000001fffffdp-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-26
+  },
+  { // Entry 203
+    0x1.000001fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-25
+  },
+  { // Entry 204
+    0x1.000002p-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-25
+  },
+  { // Entry 205
+    0x1.000002ffffffp-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 206
+    0x1.000003p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-25
+  },
+  { // Entry 207
+    0x1.000003000002p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-25
+  },
+  { // Entry 208
+    0x1.000005000003p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 209
+    0x1.000005000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-25
+  },
+  { // Entry 210
+    0x1.000005000006p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-25
+  },
+  { // Entry 211
+    0x1.fffffc000001ffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 212
+    0x1.fffffc000002p127,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 213
+    0x1.fffffc000002p127,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 214
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 215
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 216
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 217
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 218
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 219
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 220
+    -0x1.fffffep103,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    -0x1.fffffep127
+  },
+  { // Entry 221
+    0.0,
+    0x1.fffffep127,
+    0x1.p0,
+    -0x1.fffffep127
+  },
+  { // Entry 222
+    0x1.fffffep104,
+    0x1.fffffep127,
+    0x1.000002p0,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    0x1.fffffa000003ffffffffffffffffffffp127,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    -0x1.p-149
+  },
+  { // Entry 224
+    0x1.fffffa000004p127,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    0.0
+  },
+  { // Entry 225
+    0x1.fffffa000004p127,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    0x1.p-149
+  },
+  { // Entry 226
+    0x1.fffffc000001ffffffffffffffffffffp127,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    -0x1.p-149
+  },
+  { // Entry 227
+    0x1.fffffc000002p127,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    0.0
+  },
+  { // Entry 228
+    0x1.fffffc000002p127,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    0x1.p-149
+  },
+  { // Entry 229
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep63,
+    0x1.p64,
+    -0x1.p-149
+  },
+  { // Entry 230
+    0x1.fffffep127,
+    0x1.fffffep63,
+    0x1.p64,
+    0.0
+  },
+  { // Entry 231
+    0x1.fffffep127,
+    0x1.fffffep63,
+    0x1.p64,
+    0x1.p-149
+  },
+  { // Entry 232
+    -0x1.7ffffep105,
+    0x1.fffffcp63,
+    0x1.fffffcp63,
+    -0x1.fffffep127
+  },
+  { // Entry 233
+    -0x1.fffffep104,
+    0x1.fffffcp63,
+    0x1.fffffep63,
+    -0x1.fffffep127
+  },
+  { // Entry 234
+    -0x1.p104,
+    0x1.fffffcp63,
+    0x1.p64,
+    -0x1.fffffep127
+  },
+  { // Entry 235
+    -0x1.fffffep104,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    -0x1.fffffep127
+  },
+  { // Entry 236
+    -0x1.fffffep103,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    -0x1.fffffep127
+  },
+  { // Entry 237
+    0.0,
+    0x1.fffffep63,
+    0x1.p64,
+    -0x1.fffffep127
+  },
+  { // Entry 238
+    -0x1.p104,
+    0x1.p64,
+    0x1.fffffcp63,
+    -0x1.fffffep127
+  },
+  { // Entry 239
+    0.0,
+    0x1.p64,
+    0x1.fffffep63,
+    -0x1.fffffep127
+  },
+  { // Entry 240
+    0x1.p104,
+    0x1.p64,
+    0x1.p64,
+    -0x1.fffffep127
+  },
+  { // Entry 241
+    -0x1.fffff8p103,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    0x1.fffffep127
+  },
+  { // Entry 242
+    0x1.p104,
+    0x1.fffffcp126,
+    -0x1.p1,
+    0x1.fffffep127
+  },
+  { // Entry 243
+    0x1.fffffep104,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 244
+    -0x1.fffffep104,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    0x1.fffffep127
+  },
+  { // Entry 245
+    0.0,
+    0x1.fffffep126,
+    -0x1.p1,
+    0x1.fffffep127
+  },
+  { // Entry 246
+    0x1.fffffep103,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 247
+    -0x1.80p105,
+    0x1.p127,
+    -0x1.000002p1,
+    0x1.fffffep127
+  },
+  { // Entry 248
+    -0x1.p104,
+    0x1.p127,
+    -0x1.p1,
+    0x1.fffffep127
+  },
+  { // Entry 249
+    0.0,
+    0x1.p127,
+    -0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 250
+    -HUGE_VALF,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    -0x1.p-149
+  },
+  { // Entry 251
+    -HUGE_VALF,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    0.0
+  },
+  { // Entry 252
+    -HUGE_VALF,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    0x1.p-149
+  },
+  { // Entry 253
+    -0x1.fffffcp127,
+    0x1.fffffcp126,
+    -0x1.p1,
+    -0x1.p-149
+  },
+  { // Entry 254
+    -0x1.fffffcp127,
+    0x1.fffffcp126,
+    -0x1.p1,
+    0.0
+  },
+  { // Entry 255
+    -0x1.fffffbffffffffffffffffffffffffffp127,
+    0x1.fffffcp126,
+    -0x1.p1,
+    0x1.p-149
+  },
+  { // Entry 256
+    -0x1.fffffa000004p127,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    -0x1.p-149
+  },
+  { // Entry 257
+    -0x1.fffffa000004p127,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    0.0
+  },
+  { // Entry 258
+    -0x1.fffffa000003ffffffffffffffffffffp127,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    0x1.p-149
+  },
+  { // Entry 259
+    -HUGE_VALF,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    -0x1.p-149
+  },
+  { // Entry 260
+    -HUGE_VALF,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    0.0
+  },
+  { // Entry 261
+    -HUGE_VALF,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    0x1.p-149
+  },
+  { // Entry 262
+    -0x1.fffffep127,
+    0x1.fffffep126,
+    -0x1.p1,
+    -0x1.p-149
+  },
+  { // Entry 263
+    -0x1.fffffep127,
+    0x1.fffffep126,
+    -0x1.p1,
+    0.0
+  },
+  { // Entry 264
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep126,
+    -0x1.p1,
+    0x1.p-149
+  },
+  { // Entry 265
+    -0x1.fffffc000002p127,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    -0x1.p-149
+  },
+  { // Entry 266
+    -0x1.fffffc000002p127,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    0.0
+  },
+  { // Entry 267
+    -0x1.fffffc000001ffffffffffffffffffffp127,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    0x1.p-149
+  },
+  { // Entry 268
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.000002p1,
+    -0x1.p-149
+  },
+  { // Entry 269
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.000002p1,
+    0.0
+  },
+  { // Entry 270
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.000002p1,
+    0x1.p-149
+  },
+  { // Entry 271
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.p1,
+    -0x1.p-149
+  },
+  { // Entry 272
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.p1,
+    0.0
+  },
+  { // Entry 273
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.p1,
+    0x1.p-149
+  },
+  { // Entry 274
+    -0x1.fffffep127,
+    0x1.p127,
+    -0x1.fffffep0,
+    -0x1.p-149
+  },
+  { // Entry 275
+    -0x1.fffffep127,
+    0x1.p127,
+    -0x1.fffffep0,
+    0.0
+  },
+  { // Entry 276
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p127,
+    -0x1.fffffep0,
+    0x1.p-149
+  },
+  { // Entry 277
+    0x1.7ffffc800001p127,
+    0x1.fffffcp126,
+    0x1.fffffep-2,
+    0x1.fffffcp126
+  },
+  { // Entry 278
+    0x1.7ffffd800001p127,
+    0x1.fffffcp126,
+    0x1.fffffep-2,
+    0x1.fffffep126
+  },
+  { // Entry 279
+    0x1.7ffffe800001p127,
+    0x1.fffffcp126,
+    0x1.fffffep-2,
+    0x1.p127
+  },
+  { // Entry 280
+    0x1.7ffffdp127,
+    0x1.fffffcp126,
+    0x1.p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 281
+    0x1.7ffffep127,
+    0x1.fffffcp126,
+    0x1.p-1,
+    0x1.fffffep126
+  },
+  { // Entry 282
+    0x1.7fffffp127,
+    0x1.fffffcp126,
+    0x1.p-1,
+    0x1.p127
+  },
+  { // Entry 283
+    0x1.7ffffdfffffep127,
+    0x1.fffffcp126,
+    0x1.000002p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 284
+    0x1.7ffffefffffep127,
+    0x1.fffffcp126,
+    0x1.000002p-1,
+    0x1.fffffep126
+  },
+  { // Entry 285
+    0x1.7ffffffffffep127,
+    0x1.fffffcp126,
+    0x1.000002p-1,
+    0x1.p127
+  },
+  { // Entry 286
+    0x1.7ffffd00000080p127,
+    0x1.fffffep126,
+    0x1.fffffep-2,
+    0x1.fffffcp126
+  },
+  { // Entry 287
+    0x1.7ffffe00000080p127,
+    0x1.fffffep126,
+    0x1.fffffep-2,
+    0x1.fffffep126
+  },
+  { // Entry 288
+    0x1.7fffff00000080p127,
+    0x1.fffffep126,
+    0x1.fffffep-2,
+    0x1.p127
+  },
+  { // Entry 289
+    0x1.7ffffd80p127,
+    0x1.fffffep126,
+    0x1.p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 290
+    0x1.7ffffe80p127,
+    0x1.fffffep126,
+    0x1.p-1,
+    0x1.fffffep126
+  },
+  { // Entry 291
+    0x1.7fffff80p127,
+    0x1.fffffep126,
+    0x1.p-1,
+    0x1.p127
+  },
+  { // Entry 292
+    0x1.7ffffe7fffffp127,
+    0x1.fffffep126,
+    0x1.000002p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 293
+    0x1.7fffff7fffffp127,
+    0x1.fffffep126,
+    0x1.000002p-1,
+    0x1.fffffep126
+  },
+  { // Entry 294
+    0x1.8000007fffffp127,
+    0x1.fffffep126,
+    0x1.000002p-1,
+    0x1.p127
+  },
+  { // Entry 295
+    0x1.7ffffd80p127,
+    0x1.p127,
+    0x1.fffffep-2,
+    0x1.fffffcp126
+  },
+  { // Entry 296
+    0x1.7ffffe80p127,
+    0x1.p127,
+    0x1.fffffep-2,
+    0x1.fffffep126
+  },
+  { // Entry 297
+    0x1.7fffff80p127,
+    0x1.p127,
+    0x1.fffffep-2,
+    0x1.p127
+  },
+  { // Entry 298
+    0x1.7ffffep127,
+    0x1.p127,
+    0x1.p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 299
+    0x1.7fffffp127,
+    0x1.p127,
+    0x1.p-1,
+    0x1.fffffep126
+  },
+  { // Entry 300
+    0x1.80p127,
+    0x1.p127,
+    0x1.p-1,
+    0x1.p127
+  },
+  { // Entry 301
+    0x1.7fffffp127,
+    0x1.p127,
+    0x1.000002p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 302
+    0x1.80p127,
+    0x1.p127,
+    0x1.000002p-1,
+    0x1.fffffep126
+  },
+  { // Entry 303
+    0x1.800001p127,
+    0x1.p127,
+    0x1.000002p-1,
+    0x1.p127
+  },
+  { // Entry 304
+    0x1.fffffb000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 305
+    0x1.fffffc000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 306
+    0x1.fffffd000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 307
+    0x1.fffffcp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 308
+    0x1.fffffdp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 309
+    0x1.fffffep127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 310
+    0x1.fffffdfffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 311
+    0x1.fffffefffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 312
+    HUGE_VALF,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 313
+    0x1.fffffc000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 314
+    0x1.fffffd000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 315
+    0x1.fffffe000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 316
+    0x1.fffffdp127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 317
+    0x1.fffffep127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 318
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 319
+    0x1.fffffefffffep127,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 320
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 321
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 322
+    0x1.fffffdp127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 323
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 324
+    HUGE_VALF,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 325
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 326
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 327
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 328
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 329
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 330
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 331
+    0x1.fffffb000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 332
+    0x1.fffffc000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 333
+    0x1.fffffd000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 334
+    0x1.fffffcp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 335
+    0x1.fffffdp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 336
+    0x1.fffffep127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 337
+    0x1.fffffdfffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 338
+    0x1.fffffefffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 339
+    HUGE_VALF,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 340
+    0x1.fffffc000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 341
+    0x1.fffffd000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 342
+    0x1.fffffe000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 343
+    0x1.fffffdp127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 344
+    0x1.fffffep127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 345
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 346
+    0x1.fffffefffffep127,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 347
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 348
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 349
+    0x1.fffffdp127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 350
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 351
+    HUGE_VALF,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 352
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 353
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 354
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 355
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 356
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 357
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 358
+    0x1.fffffd000001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 359
+    0x1.fffffe000001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 360
+    0x1.00000000000080p1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 361
+    0x1.fffffep0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 362
+    0x1.ffffffp0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 363
+    0x1.00000080p1,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 364
+    0x1.fffffffffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 365
+    0x1.0000007fffffp1,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 366
+    0x1.0000017fffffp1,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 367
+    0x1.fffffep0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 368
+    0x1.ffffffp0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 369
+    0x1.00000080p1,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 370
+    0x1.ffffffp0,
+    0x1.p0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 371
+    0x1.p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 372
+    0x1.000001p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 373
+    0x1.00000080p1,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 374
+    0x1.000001p1,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 375
+    0x1.000002p1,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 376
+    0x1.fffffffffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 377
+    0x1.0000007fffffp1,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 378
+    0x1.0000017fffffp1,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 379
+    0x1.00000080p1,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 380
+    0x1.000001p1,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 381
+    0x1.000002p1,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 382
+    0x1.000001800002p1,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 383
+    0x1.000002000002p1,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 384
+    0x1.000003000002p1,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 385
+    -0x1.fffffep-24,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 386
+    -0x1.fffffcp-25,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 387
+    0x1.000002p-24,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 388
+    0.0,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 389
+    0x1.p-24,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 390
+    0x1.80p-23,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 391
+    0x1.fffffep-25,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 392
+    0x1.ffffffp-24,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 393
+    0x1.ffffff80p-23,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 394
+    -0x1.80p-23,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 395
+    -0x1.p-23,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 396
+    0.0,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 397
+    -0x1.p-24,
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 398
+    0.0,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 399
+    0x1.p-23,
+    0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 400
+    0.0,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 401
+    0x1.p-24,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 402
+    0x1.80p-23,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 403
+    -0x1.400001p-22,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 404
+    -0x1.000001p-22,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 405
+    -0x1.000002p-23,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 406
+    -0x1.80p-23,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 407
+    -0x1.p-23,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 408
+    0.0,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 409
+    -0x1.fffffep-24,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 410
+    -0x1.fffffcp-25,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 411
+    0x1.000002p-24,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 412
+    0x1.fffffc000001ffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 413
+    0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 414
+    0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 415
+    0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 416
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 417
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 418
+    0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 419
+    0x1.000000fffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 420
+    0x1.000000fffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 421
+    0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 422
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 423
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 424
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 425
+    0x1.p0,
+    0x1.p0,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 426
+    0x1.p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 427
+    0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 428
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 429
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 430
+    0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 431
+    0x1.000000fffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 432
+    0x1.000000fffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 433
+    0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.000002p0,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 434
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 435
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 436
+    0x1.000004000003ffffffffffffffffffffp0,
+    0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 437
+    0x1.000004000004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 438
+    0x1.000004000004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 439
+    -0x1.000000fffffep0,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 440
+    -0x1.000000fffffep0,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0.0
+  },
+  { // Entry 441
+    -0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 442
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 443
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 444
+    -0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 445
+    -0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 446
+    -0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 447
+    -0x1.fffffc000001ffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 448
+    -0x1.000002p0,
+    0x1.p0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 449
+    -0x1.000002p0,
+    0x1.p0,
+    -0x1.000002p0,
+    0.0
+  },
+  { // Entry 450
+    -0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 451
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 452
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 453
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 454
+    -0x1.fffffep-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 455
+    -0x1.fffffep-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 456
+    -0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 457
+    -0x1.000004000004p0,
+    0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 458
+    -0x1.000004000004p0,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0.0
+  },
+  { // Entry 459
+    -0x1.000004000003ffffffffffffffffffffp0,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 460
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 461
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 462
+    -0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 463
+    -0x1.000000fffffep0,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 464
+    -0x1.000000fffffep0,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 465
+    -0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 466
+    0x1.000ffdfff001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 467
+    0x1.000ffe000001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 468
+    0x1.000ffe002001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 469
+    0x1.000ffefff0p0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 470
+    0x1.000fffp0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 471
+    0x1.000fff0020p0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 472
+    0x1.001000ffeffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 473
+    0x1.001000fffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 474
+    0x1.001001001ffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 475
+    0x1.000ffefff0p0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 476
+    0x1.000fffp0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 477
+    0x1.000fff0020p0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 478
+    0x1.000ffffff0p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 479
+    0x1.0010p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 480
+    0x1.0010000020p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 481
+    0x1.001001fff0p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 482
+    0x1.001002p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 483
+    0x1.0010020020p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 484
+    0x1.001000ffeffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 485
+    0x1.001000fffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 486
+    0x1.001001001ffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 487
+    0x1.001001fff0p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 488
+    0x1.001002p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 489
+    0x1.0010020020p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 490
+    0x1.001003fff004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 491
+    0x1.001004000004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 492
+    0x1.001004002004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 493
+    -0x1.ffe002001ffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 494
+    -0x1.ffe001fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 495
+    -0x1.ffe001ffbffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 496
+    -0x1.ffdffe0020p-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 497
+    -0x1.ffdffep-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 498
+    -0x1.ffdffdffc0p-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 499
+    -0x1.ffdffc002002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 500
+    -0x1.ffdffc000002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 501
+    -0x1.ffdffbffc002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 502
+    -0x1.ffe0040020p-1,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 503
+    -0x1.ffe004p-1,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 504
+    -0x1.ffe003ffc0p-1,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 505
+    -0x1.ffe0000020p-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 506
+    -0x1.ffe0p-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 507
+    -0x1.ffdfffffc0p-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 508
+    -0x1.ffdffe0020p-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 509
+    -0x1.ffdffep-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 510
+    -0x1.ffdffdffc0p-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 511
+    -0x1.ffe008002008p-1,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 512
+    -0x1.ffe008000008p-1,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 513
+    -0x1.ffe007ffc008p-1,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 514
+    -0x1.ffe0040020p-1,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 515
+    -0x1.ffe004p-1,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 516
+    -0x1.ffe003ffc0p-1,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 517
+    -0x1.ffe002001ffcp-1,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 518
+    -0x1.ffe001fffffcp-1,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 519
+    -0x1.ffe001ffbffcp-1,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 520
+    -0x1.ffffff80p0,
+    0x1.fffffep22,
+    0x1.fffffep-1,
+    -0x1.000002p23
+  },
+  { // Entry 521
+    -0x1.ffffffp-1,
+    0x1.fffffep22,
+    0x1.fffffep-1,
+    -0x1.p23
+  },
+  { // Entry 522
+    -0x1.fffffep-2,
+    0x1.fffffep22,
+    0x1.fffffep-1,
+    -0x1.fffffep22
+  },
+  { // Entry 523
+    -0x1.80p0,
+    0x1.fffffep22,
+    0x1.p0,
+    -0x1.000002p23
+  },
+  { // Entry 524
+    -0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 525
+    0.0,
+    0x1.fffffep22,
+    0x1.p0,
+    -0x1.fffffep22
+  },
+  { // Entry 526
+    -0x1.000002p-1,
+    0x1.fffffep22,
+    0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 527
+    0x1.fffffcp-2,
+    0x1.fffffep22,
+    0x1.000002p0,
+    -0x1.p23
+  },
+  { // Entry 528
+    0x1.fffffep-1,
+    0x1.fffffep22,
+    0x1.000002p0,
+    -0x1.fffffep22
+  },
+  { // Entry 529
+    -0x1.80p0,
+    0x1.p23,
+    0x1.fffffep-1,
+    -0x1.000002p23
+  },
+  { // Entry 530
+    -0x1.p-1,
+    0x1.p23,
+    0x1.fffffep-1,
+    -0x1.p23
+  },
+  { // Entry 531
+    0.0,
+    0x1.p23,
+    0x1.fffffep-1,
+    -0x1.fffffep22
+  },
+  { // Entry 532
+    -0x1.p0,
+    0x1.p23,
+    0x1.p0,
+    -0x1.000002p23
+  },
+  { // Entry 533
+    0.0,
+    0x1.p23,
+    0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 534
+    0x1.p-1,
+    0x1.p23,
+    0x1.p0,
+    -0x1.fffffep22
+  },
+  { // Entry 535
+    0.0,
+    0x1.p23,
+    0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 536
+    0x1.p0,
+    0x1.p23,
+    0x1.000002p0,
+    -0x1.p23
+  },
+  { // Entry 537
+    0x1.80p0,
+    0x1.p23,
+    0x1.000002p0,
+    -0x1.fffffep22
+  },
+  { // Entry 538
+    -0x1.000002p-1,
+    0x1.000002p23,
+    0x1.fffffep-1,
+    -0x1.000002p23
+  },
+  { // Entry 539
+    0x1.fffffcp-2,
+    0x1.000002p23,
+    0x1.fffffep-1,
+    -0x1.p23
+  },
+  { // Entry 540
+    0x1.fffffep-1,
+    0x1.000002p23,
+    0x1.fffffep-1,
+    -0x1.fffffep22
+  },
+  { // Entry 541
+    0.0,
+    0x1.000002p23,
+    0x1.p0,
+    -0x1.000002p23
+  },
+  { // Entry 542
+    0x1.p0,
+    0x1.000002p23,
+    0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 543
+    0x1.80p0,
+    0x1.000002p23,
+    0x1.p0,
+    -0x1.fffffep22
+  },
+  { // Entry 544
+    0x1.000002p0,
+    0x1.000002p23,
+    0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 545
+    0x1.000001p1,
+    0x1.000002p23,
+    0x1.000002p0,
+    -0x1.p23
+  },
+  { // Entry 546
+    0x1.400001p1,
+    0x1.000002p23,
+    0x1.000002p0,
+    -0x1.fffffep22
+  },
+  { // Entry 547
+    0x1.08p-5,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p-5
+  },
+  { // Entry 548
+    0x1.0040p0,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p0
+  },
+  { // Entry 549
+    0x1.p-4,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p-5
+  },
+  { // Entry 550
+    0x1.08p0,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 551
+    0x1.p-4,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p-5
+  },
+  { // Entry 552
+    0x1.08p0,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p0
+  },
+  { // Entry 553
+    0x1.08p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.p-5
+  },
+  { // Entry 554
+    0x1.p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 555
+    0x1.20p-2,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 556
+    0x1.40p0,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 557
+    0x1.08p0,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 558
+    0x1.p1,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 559
+    0x1.01p3,
+    0x1.p0,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 560
+    0x1.20p3,
+    0x1.p0,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 561
+    0x1.0040p5,
+    0x1.p0,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 562
+    0x1.08p5,
+    0x1.p0,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 563
+    0x1.0040p5,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 564
+    0x1.08p5,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 565
+    0x1.0010p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 566
+    0x1.02p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 567
+    0x1.0002p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 568
+    0x1.0040p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 569
+    0x1.000080p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 570
+    0x1.0010p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 571
+    0x1.0008p3,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p3
+  },
+  { // Entry 572
+    0x1.0002p5,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p5
+  },
+  { // Entry 573
+    0x1.01p3,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 574
+    0x1.0040p5,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p5
+  },
+  { // Entry 575
+    0x1.01p3,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p3
+  },
+  { // Entry 576
+    0x1.0040p5,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p5
+  },
+  { // Entry 577
+    0x1.20p3,
+    0x1.p0,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 578
+    0x1.08p5,
+    0x1.p0,
+    0x1.p0,
+    0x1.p5
+  },
+  { // Entry 579
+    0x1.08p3,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 580
+    0x1.02p5,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 581
+    0x1.20p3,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 582
+    0x1.08p5,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 583
+    0x1.p4,
+    0x1.p0,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 584
+    0x1.40p5,
+    0x1.p0,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 585
+    0x1.40p5,
+    0x1.p0,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 586
+    0x1.p6,
+    0x1.p0,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 587
+    0x1.40p5,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 588
+    0x1.p6,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 589
+    0x1.10p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 590
+    0x1.40p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 591
+    0x1.02p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 592
+    0x1.08p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 593
+    0x1.0080p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 594
+    0x1.02p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 595
+    0x1.000010p10,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p10
+  },
+  { // Entry 596
+    0x1.000004p12,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p12
+  },
+  { // Entry 597
+    0x1.0002p10,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 598
+    0x1.000080p12,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p12
+  },
+  { // Entry 599
+    0x1.0002p10,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p10
+  },
+  { // Entry 600
+    0x1.000080p12,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p12
+  },
+  { // Entry 601
+    0x1.0040p10,
+    0x1.p0,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 602
+    0x1.0010p12,
+    0x1.p0,
+    0x1.p0,
+    0x1.p12
+  },
+  { // Entry 603
+    0x1.0010p10,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 604
+    0x1.0004p12,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 605
+    0x1.0040p10,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 606
+    0x1.0010p12,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 607
+    0x1.02p10,
+    0x1.p0,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 608
+    0x1.0080p12,
+    0x1.p0,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 609
+    0x1.08p10,
+    0x1.p0,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 610
+    0x1.02p12,
+    0x1.p0,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 611
+    0x1.08p10,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 612
+    0x1.02p12,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 613
+    0x1.20p10,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 614
+    0x1.08p12,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 615
+    0x1.p11,
+    0x1.p0,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 616
+    0x1.40p12,
+    0x1.p0,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 617
+    0x1.40p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 618
+    0x1.p13,
+    0x1.p0,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 619
+    0x1.0020p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 620
+    0x1.04p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 621
+    0x1.0008p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 622
+    0x1.01p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 623
+    0x1.0008p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 624
+    0x1.01p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 625
+    0x1.0002p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 626
+    0x1.0040p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 627
+    0x1.20p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 628
+    0x1.80p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 629
+    0x1.08p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 630
+    0x1.20p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 631
+    0x1.08p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 632
+    0x1.20p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 633
+    0x1.02p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 634
+    0x1.08p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 635
+    0x1.10p10,
+    0x1.p3,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 636
+    0x1.04p12,
+    0x1.p3,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 637
+    0x1.40p10,
+    0x1.p3,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 638
+    0x1.10p12,
+    0x1.p3,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 639
+    0x1.40p10,
+    0x1.p5,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 640
+    0x1.10p12,
+    0x1.p5,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 641
+    0x1.p11,
+    0x1.p5,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 642
+    0x1.40p12,
+    0x1.p5,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 643
+    0x1.000040p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 644
+    0x1.0008p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 645
+    0x1.000010p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 646
+    0x1.0002p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 647
+    0x1.000010p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 648
+    0x1.0002p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 649
+    0x1.000004p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 650
+    0x1.000080p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 651
+    0x1.0040p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 652
+    0x1.01p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 653
+    0x1.0010p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 654
+    0x1.0040p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 655
+    0x1.0010p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 656
+    0x1.0040p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 657
+    0x1.0004p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 658
+    0x1.0010p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 659
+    0x1.20p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 660
+    0x1.80p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 661
+    0x1.08p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 662
+    0x1.20p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 663
+    0x1.08p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 664
+    0x1.20p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 665
+    0x1.02p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 666
+    0x1.08p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 667
+    -0x1.ffffe0p-21,
+    -0x1.p-20,
+    -0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 668
+    0x1.000010p-20,
+    -0x1.p-20,
+    -0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 669
+    -0x1.000010p-20,
+    -0x1.p-20,
+    0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 670
+    0x1.ffffe0p-21,
+    -0x1.p-20,
+    0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 671
+    -0x1.000010p-20,
+    0x1.p-20,
+    -0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 672
+    0x1.ffffe0p-21,
+    0x1.p-20,
+    -0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 673
+    -0x1.ffffe0p-21,
+    0x1.p-20,
+    0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 674
+    0x1.000010p-20,
+    0x1.p-20,
+    0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 675
+    0x1.fffffffffffffffffffep-21,
+    -0x1.p-10,
+    -0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 676
+    0x1.00000000000000000001p-20,
+    -0x1.p-10,
+    -0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 677
+    -0x1.00000000000000000001p-20,
+    -0x1.p-10,
+    0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 678
+    -0x1.fffffffffffffffffffep-21,
+    -0x1.p-10,
+    0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 679
+    -0x1.00000000000000000001p-20,
+    0x1.p-10,
+    -0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 680
+    -0x1.fffffffffffffffffffep-21,
+    0x1.p-10,
+    -0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 681
+    0x1.fffffffffffffffffffep-21,
+    0x1.p-10,
+    0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 682
+    0x1.00000000000000000001p-20,
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 683
+    0x1.f0p-11,
+    -0x1.p-5,
+    -0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 684
+    0x1.08p-10,
+    -0x1.p-5,
+    -0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 685
+    -0x1.08p-10,
+    -0x1.p-5,
+    0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 686
+    -0x1.f0p-11,
+    -0x1.p-5,
+    0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 687
+    -0x1.08p-10,
+    0x1.p-5,
+    -0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 688
+    -0x1.f0p-11,
+    0x1.p-5,
+    -0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 689
+    0x1.f0p-11,
+    0x1.p-5,
+    0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 690
+    0x1.08p-10,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 691
+    0x1.68p6,
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 692
+    0x1.b8p6,
+    -0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 693
+    -0x1.b8p6,
+    -0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 694
+    -0x1.68p6,
+    -0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 695
+    -0x1.b8p6,
+    0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 696
+    -0x1.68p6,
+    0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 697
+    0x1.68p6,
+    0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 698
+    0x1.b8p6,
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 699
+    0.0,
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 700
+    0x1.p1,
+    -0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 701
+    -0x1.p1,
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 702
+    0.0,
+    -0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 703
+    -0x1.p1,
+    0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 704
+    0.0,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 705
+    0.0,
+    0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 706
+    0x1.p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 707
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 708
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 709
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 710
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 711
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 712
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 713
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 714
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 715
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 716
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 717
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 718
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 719
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 720
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 721
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 722
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 723
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 724
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 725
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 726
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 727
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 728
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 729
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 730
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 731
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 732
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 733
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 734
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 735
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 736
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 737
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 738
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 739
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 740
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 741
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 742
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 743
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 744
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 745
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 746
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 747
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 748
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 749
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 750
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 751
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 752
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 753
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 754
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 755
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 756
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 757
+    0x1.fffffe00000000000000000000000002p1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 758
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 759
+    0x1.fffffe00000000000000000000000001p1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 760
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 761
+    0x1.fffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 762
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 763
+    0x1.fffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 764
+    0x1.fffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 765
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 766
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 767
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 768
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 769
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 770
+    -0x1.fffffe00000000000000000000000002p1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 771
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 772
+    -0x1.fffffe00000000000000000000000001p1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 773
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 774
+    -0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 775
+    -0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 776
+    -0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 777
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 778
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 779
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 780
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 781
+    0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 782
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 783
+    0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 784
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 785
+    0x1.fffffa000004p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 786
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 787
+    0x1.fffffa000004p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 788
+    0x1.fffffa000004p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 789
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 790
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 791
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 792
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 793
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 794
+    -0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 795
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 796
+    -0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 797
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 798
+    -0x1.fffffa000004p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 799
+    -0x1.fffffa000004p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 800
+    -0x1.fffffa000004p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 801
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 802
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 803
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 804
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 805
+    0x1.fffffe00000000000000000001p-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 806
+    0x1.fffffdffffffffffffffffffffp-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 807
+    0x1.fffffe00000000000000000000fffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 808
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 809
+    0x1.fffffe00000000000000000000000002p-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 810
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 811
+    0x1.fffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 812
+    0x1.fffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 813
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 814
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 815
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 816
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 817
+    -0x1.fffffdffffffffffffffffffffp-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 818
+    -0x1.fffffe00000000000000000001p-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 819
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 820
+    -0x1.fffffe00000000000000000000fffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 821
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 822
+    -0x1.fffffe00000000000000000000000002p-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 823
+    -0x1.fffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 824
+    -0x1.fffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 825
+    HUGE_VALF,
+    0x1.fffffep127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 826
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 827
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 828
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 829
+    0x1.p-126,
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 830
+    -0x1.p-126,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 831
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 832
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 833
+    0x1.p-149,
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 834
+    -0x1.p-149,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 835
+    0.0,
+    0x1.fffffep127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 836
+    0.0,
+    0x1.fffffep127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 837
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 838
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 839
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 840
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 841
+    0x1.p-126,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 842
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 843
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 844
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 845
+    0x1.p-149,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 846
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 847
+    0.0,
+    0x1.fffffep127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 848
+    -0.0,
+    0x1.fffffep127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 849
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 850
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 851
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 852
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 853
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 854
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 855
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 856
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 857
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 858
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 859
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 860
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 861
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 862
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 863
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 864
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 865
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 866
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 867
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 868
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 869
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 870
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 871
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 872
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 873
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 874
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 875
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 876
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 877
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 878
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 879
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 880
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 881
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 882
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 883
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 884
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 885
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 886
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 887
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 888
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 889
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 890
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 891
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 892
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 893
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 894
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 895
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 896
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 897
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 898
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 899
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 900
+    -0x1.fffffe00000000000000000000000002p1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 901
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 902
+    -0x1.fffffe00000000000000000000000001p1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 903
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 904
+    -0x1.fffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 905
+    -0x1.fffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 906
+    -0x1.fffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 907
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 908
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 909
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 910
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 911
+    0x1.fffffe00000000000000000000000002p1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 912
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 913
+    0x1.fffffe00000000000000000000000001p1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 914
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 915
+    0x1.fffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 916
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 917
+    0x1.fffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 918
+    0x1.fffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 919
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 920
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 921
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 922
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 923
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 924
+    -0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 925
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 926
+    -0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 927
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 928
+    -0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 929
+    -0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 930
+    -0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 931
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 932
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 933
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 934
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 935
+    0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 936
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 937
+    0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 938
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 939
+    0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 940
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 941
+    0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 942
+    0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 943
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 944
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 945
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 946
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 947
+    -0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 948
+    -0x1.fffffe00000000000000000001p-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 949
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 950
+    -0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 951
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 952
+    -0x1.fffffe00000000000000000000000002p-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 953
+    -0x1.fffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 954
+    -0x1.fffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 955
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 956
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 957
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 958
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 959
+    0x1.fffffe00000000000000000001p-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 960
+    0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 961
+    0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 962
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 963
+    0x1.fffffe00000000000000000000000002p-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 964
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 965
+    0x1.fffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 966
+    0x1.fffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 967
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 968
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 969
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 970
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 971
+    0x1.p-126,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 972
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 973
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 974
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 975
+    0x1.p-149,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 976
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 977
+    0.0,
+    -0x1.fffffep127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 978
+    -0.0,
+    -0x1.fffffep127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 979
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 980
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 981
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 982
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 983
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 984
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 985
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 986
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 987
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 988
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 989
+    0.0,
+    -0x1.fffffep127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 990
+    0.0,
+    -0x1.fffffep127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 991
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 992
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 993
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 994
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 995
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 996
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 997
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 998
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 999
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1000
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1001
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1002
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1003
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1004
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1005
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1006
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1007
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1008
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1009
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1010
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1011
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1012
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1013
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1014
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1015
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1016
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1017
+    0x1.fffffe00000000000000000000000002p1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1018
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1019
+    0x1.fffffe00000000000000000000000001p1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1020
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1021
+    0x1.fffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1022
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1023
+    0x1.fffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1024
+    0x1.fffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1025
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1026
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1027
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1028
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1029
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1030
+    -0x1.fffffe00000000000000000000000002p1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1031
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1032
+    -0x1.fffffe00000000000000000000000001p1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1033
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1034
+    -0x1.fffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1035
+    -0x1.fffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1036
+    -0x1.fffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1037
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1038
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1039
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1040
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1041
+    0x1.00000000000000000000000000000004p-126,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1042
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1043
+    0x1.fffffc00000000000000000000000008p-127,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1044
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1045
+    0x1.00000000000000000000000002p-149,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1046
+    -0.0f,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1047
+    0.0f,
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1048
+    0.0f,
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1049
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1050
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1051
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1052
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1053
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1054
+    -0x1.00000000000000000000000000000004p-126,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1055
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1056
+    -0x1.fffffc00000000000000000000000008p-127,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1057
+    0.0f,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1058
+    -0x1.00000000000000000000000002p-149,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1059
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1060
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1061
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1062
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1063
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1064
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1065
+    0x1.00000000000000000000000000000003p-126,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1066
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1067
+    0x1.fffffc00000000000000000000000007p-127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1068
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1069
+    0x1.00000000000000000000000001fffffcp-149,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1070
+    -0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1071
+    0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1072
+    0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1073
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1074
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1075
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1076
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1077
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1078
+    -0x1.00000000000000000000000000000003p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1079
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1080
+    -0x1.fffffc00000000000000000000000007p-127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1081
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1082
+    -0x1.00000000000000000000000001fffffcp-149,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1083
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1084
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1085
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1086
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1087
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1088
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1089
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1090
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1091
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1092
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1093
+    0x1.00000000000000000000000000000004p-149,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1094
+    -0.0f,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1095
+    0.0f,
+    0x1.p-126,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1096
+    0.0f,
+    0x1.p-126,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1097
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1098
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1099
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1100
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1101
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1102
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1103
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1104
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1105
+    0.0f,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1106
+    -0x1.00000000000000000000000000000004p-149,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1107
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1108
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1109
+    HUGE_VALF,
+    0x1.p-126,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1110
+    -HUGE_VALF,
+    0x1.p-126,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1111
+    0x1.fffffep127,
+    0x1.p-126,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1112
+    -0x1.fffffep127,
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1113
+    0x1.p-126,
+    0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1114
+    -0x1.p-126,
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1115
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1116
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1117
+    0x1.p-149,
+    0x1.p-126,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1118
+    -0x1.p-149,
+    0x1.p-126,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1119
+    0.0,
+    0x1.p-126,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1120
+    0.0,
+    0x1.p-126,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1121
+    HUGE_VALF,
+    0x1.p-126,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1122
+    -HUGE_VALF,
+    0x1.p-126,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1123
+    0x1.fffffep127,
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1124
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1125
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1126
+    -0x1.p-126,
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1127
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1128
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1129
+    0x1.p-149,
+    0x1.p-126,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1130
+    -0x1.p-149,
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1131
+    0.0,
+    0x1.p-126,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1132
+    -0.0,
+    0x1.p-126,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1133
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1134
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1135
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1136
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1137
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1138
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1139
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1140
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1141
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1142
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1143
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1144
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1145
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1146
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1147
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1148
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1149
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1150
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1151
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1152
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1153
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1154
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1155
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1156
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1157
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1158
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1159
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1160
+    -0x1.fffffe00000000000000000000000002p1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1161
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1162
+    -0x1.fffffe00000000000000000000000001p1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1163
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1164
+    -0x1.fffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1165
+    -0x1.fffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1166
+    -0x1.fffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1167
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1168
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1169
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1170
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1171
+    0x1.fffffe00000000000000000000000002p1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1172
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1173
+    0x1.fffffe00000000000000000000000001p1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1174
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1175
+    0x1.fffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1176
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1177
+    0x1.fffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1178
+    0x1.fffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1179
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1180
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1181
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1182
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1183
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1184
+    -0x1.00000000000000000000000000000004p-126,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1185
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1186
+    -0x1.fffffc00000000000000000000000008p-127,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1187
+    0.0f,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1188
+    -0x1.00000000000000000000000002p-149,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1189
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1190
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1191
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1192
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1193
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1194
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1195
+    0x1.00000000000000000000000000000004p-126,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1196
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1197
+    0x1.fffffc00000000000000000000000008p-127,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1198
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1199
+    0x1.00000000000000000000000002p-149,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1200
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1201
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1202
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1203
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1204
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1205
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1206
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1207
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1208
+    -0x1.00000000000000000000000000000003p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1209
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1210
+    -0x1.fffffc00000000000000000000000007p-127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1211
+    0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1212
+    -0x1.00000000000000000000000001fffffcp-149,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1213
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1214
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1215
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1216
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1217
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1218
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1219
+    0x1.00000000000000000000000000000003p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1220
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1221
+    0x1.fffffc00000000000000000000000007p-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1222
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1223
+    0x1.00000000000000000000000001fffffcp-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1224
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1225
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1226
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1227
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1228
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1229
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1230
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1231
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1232
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1233
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1234
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1235
+    0.0f,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1236
+    -0x1.00000000000000000000000000000004p-149,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1237
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1238
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1239
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1240
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1241
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1242
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1243
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1244
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1245
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1246
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1247
+    0x1.00000000000000000000000000000004p-149,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1248
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1249
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1250
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1251
+    HUGE_VALF,
+    -0x1.p-126,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1252
+    -HUGE_VALF,
+    -0x1.p-126,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1253
+    0x1.fffffep127,
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1254
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1255
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1256
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1257
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1258
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1259
+    0x1.p-149,
+    -0x1.p-126,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1260
+    -0x1.p-149,
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1261
+    0.0,
+    -0x1.p-126,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1262
+    -0.0,
+    -0x1.p-126,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1263
+    HUGE_VALF,
+    -0x1.p-126,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1264
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1265
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1266
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1267
+    0x1.p-126,
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1268
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1269
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1270
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1271
+    0x1.p-149,
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1272
+    -0x1.p-149,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1273
+    0.0,
+    -0x1.p-126,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1274
+    0.0,
+    -0x1.p-126,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1275
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1276
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1277
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1278
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1279
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1280
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1281
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1282
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1283
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1284
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1285
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1286
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1287
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1288
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1289
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1290
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1291
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1292
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1293
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1294
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1295
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1296
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1297
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1298
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1299
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1300
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1301
+    0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1302
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1303
+    0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1304
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1305
+    0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1306
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1307
+    0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1308
+    0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1309
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1310
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1311
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1312
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1313
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1314
+    -0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1315
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1316
+    -0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1317
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1318
+    -0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1319
+    -0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1320
+    -0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1321
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1322
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1323
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1324
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1325
+    0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1326
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1327
+    0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1328
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1329
+    0x1.00000000000000000000000001fffffcp-149,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1330
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1331
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1332
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1333
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1334
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1335
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1336
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1337
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1338
+    -0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1339
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1340
+    -0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1341
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1342
+    -0x1.00000000000000000000000001fffffcp-149,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1343
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1344
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1345
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1346
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1347
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1348
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1349
+    0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1350
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1351
+    0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1352
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1353
+    0x1.00000000000000000000000001fffff8p-149,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1354
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1355
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1356
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1357
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1358
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1359
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1360
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1361
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1362
+    -0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1363
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1364
+    -0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1365
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1366
+    -0x1.00000000000000000000000001fffff8p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1367
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1368
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1369
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1370
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1371
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1372
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1373
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1374
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1375
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1376
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1377
+    0x1.00000000000000000000000000000003p-149,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1378
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1379
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1380
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1381
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1382
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1383
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1384
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1385
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1386
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1387
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1388
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1389
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1390
+    -0x1.00000000000000000000000000000003p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1391
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1392
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1393
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1394
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1395
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1396
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1397
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1398
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1399
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1400
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1401
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1402
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1403
+    0.0,
+    0x1.fffffcp-127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1404
+    0.0,
+    0x1.fffffcp-127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1405
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1406
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1407
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1408
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1409
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1410
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1411
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1412
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1413
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1414
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1415
+    0.0,
+    0x1.fffffcp-127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1416
+    -0.0,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1417
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1418
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1419
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1420
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1421
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1422
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1423
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1424
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1425
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1426
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1427
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1428
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1429
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1430
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1431
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1432
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1433
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1434
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1435
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1436
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1437
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1438
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1439
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1440
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1441
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1442
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1443
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1444
+    -0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1445
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1446
+    -0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1447
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1448
+    -0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1449
+    -0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1450
+    -0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1451
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1452
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1453
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1454
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1455
+    0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1456
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1457
+    0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1458
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1459
+    0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1460
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1461
+    0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1462
+    0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1463
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1464
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1465
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1466
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1467
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1468
+    -0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1469
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1470
+    -0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1471
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1472
+    -0x1.00000000000000000000000001fffffcp-149,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1473
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1474
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1475
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1476
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1477
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1478
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1479
+    0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1480
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1481
+    0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1482
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1483
+    0x1.00000000000000000000000001fffffcp-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1484
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1485
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1486
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1487
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1488
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1489
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1490
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1491
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1492
+    -0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1493
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1494
+    -0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1495
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1496
+    -0x1.00000000000000000000000001fffff8p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1497
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1498
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1499
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1500
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1501
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1502
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1503
+    0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1504
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1505
+    0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1506
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1507
+    0x1.00000000000000000000000001fffff8p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1508
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1509
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1510
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1511
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1512
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1513
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1514
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1515
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1516
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1517
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1518
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1519
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1520
+    -0x1.00000000000000000000000000000003p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1521
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1522
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1523
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1524
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1525
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1526
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1527
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1528
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1529
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1530
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1531
+    0x1.00000000000000000000000000000003p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1532
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1533
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1534
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1535
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1536
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1537
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1538
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1539
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1540
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1541
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1542
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1543
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1544
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1545
+    0.0,
+    -0x1.fffffcp-127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1546
+    -0.0,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1547
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1548
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1549
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1550
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1551
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1552
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1553
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1554
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1555
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1556
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1557
+    0.0,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1558
+    0.0,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1559
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1560
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1561
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1562
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1563
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1564
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1565
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1566
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1567
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1568
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1569
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1570
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1571
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1572
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1573
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1574
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1575
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1576
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1577
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1578
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1579
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1580
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1581
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1582
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1583
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1584
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1585
+    0x1.fffffe00000000000000000001p-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1586
+    0x1.fffffdffffffffffffffffffffp-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1587
+    0x1.fffffe00000000000000000000fffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1588
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1589
+    0x1.fffffe00000000000000000000000002p-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1590
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1591
+    0x1.fffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1592
+    0x1.fffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1593
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1594
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1595
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1596
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1597
+    -0x1.fffffdffffffffffffffffffffp-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1598
+    -0x1.fffffe00000000000000000001p-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1599
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1600
+    -0x1.fffffe00000000000000000000fffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1601
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1602
+    -0x1.fffffe00000000000000000000000002p-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1603
+    -0x1.fffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1604
+    -0x1.fffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1605
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1606
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1607
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1608
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1609
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1610
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1611
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1612
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1613
+    0x1.00000000000000000000000000000004p-149,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1614
+    -0.0f,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1615
+    0.0f,
+    0x1.p-149,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1616
+    0.0f,
+    0x1.p-149,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1617
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1618
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1619
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1620
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1621
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1622
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1623
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1624
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1625
+    0.0f,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1626
+    -0x1.00000000000000000000000000000004p-149,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1627
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1628
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1629
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1630
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1631
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1632
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1633
+    0x1.p-126,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1634
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1635
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1636
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1637
+    0x1.00000000000000000000000000000003p-149,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1638
+    -0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1639
+    0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1640
+    0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1641
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1642
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1643
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1644
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1645
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1646
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1647
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1648
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1649
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1650
+    -0x1.00000000000000000000000000000003p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1651
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1652
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1653
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1654
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1655
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1656
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1657
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1658
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1659
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1660
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1661
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1662
+    -0.0f,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1663
+    0.0f,
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1664
+    0.0f,
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1665
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1666
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1667
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1668
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1669
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1670
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1671
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1672
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1673
+    0.0f,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1674
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1675
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1676
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1677
+    HUGE_VALF,
+    0x1.p-149,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1678
+    -HUGE_VALF,
+    0x1.p-149,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1679
+    0x1.fffffep127,
+    0x1.p-149,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1680
+    -0x1.fffffep127,
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1681
+    0x1.p-126,
+    0x1.p-149,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1682
+    -0x1.p-126,
+    0x1.p-149,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1683
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1684
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1685
+    0x1.p-149,
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1686
+    -0x1.p-149,
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1687
+    0.0,
+    0x1.p-149,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1688
+    0.0,
+    0x1.p-149,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1689
+    HUGE_VALF,
+    0x1.p-149,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1690
+    -HUGE_VALF,
+    0x1.p-149,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1691
+    0x1.fffffep127,
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1692
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1693
+    0x1.p-126,
+    0x1.p-149,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1694
+    -0x1.p-126,
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1695
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1696
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1697
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1698
+    -0x1.p-149,
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1699
+    0.0,
+    0x1.p-149,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1700
+    -0.0,
+    0x1.p-149,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1701
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1702
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1703
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1704
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1705
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1706
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1707
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1708
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1709
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1710
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1711
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1712
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1713
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1714
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1715
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1716
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1717
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1718
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1719
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1720
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1721
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1722
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1723
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1724
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1725
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1726
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1727
+    -0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1728
+    -0x1.fffffe00000000000000000001p-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1729
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1730
+    -0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1731
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1732
+    -0x1.fffffe00000000000000000000000002p-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1733
+    -0x1.fffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1734
+    -0x1.fffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1735
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1736
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1737
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1738
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1739
+    0x1.fffffe00000000000000000001p-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1740
+    0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1741
+    0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1742
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1743
+    0x1.fffffe00000000000000000000000002p-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1744
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1745
+    0x1.fffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1746
+    0x1.fffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1747
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1748
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1749
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1750
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1751
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1752
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1753
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1754
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1755
+    0.0f,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1756
+    -0x1.00000000000000000000000000000004p-149,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1757
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1758
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1759
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1760
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1761
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1762
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1763
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1764
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1765
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1766
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1767
+    0x1.00000000000000000000000000000004p-149,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1768
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1769
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1770
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1771
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1772
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1773
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1774
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1775
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1776
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1777
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1778
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1779
+    0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1780
+    -0x1.00000000000000000000000000000003p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1781
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1782
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1783
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1784
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1785
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1786
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1787
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1788
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1789
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1790
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1791
+    0x1.00000000000000000000000000000003p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1792
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1793
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1794
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1795
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1796
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1797
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1798
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1799
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1800
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1801
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1802
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1803
+    0.0f,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1804
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1805
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1806
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1807
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1808
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1809
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1810
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1811
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1812
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1813
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1814
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1815
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1816
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1817
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1818
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1819
+    HUGE_VALF,
+    -0x1.p-149,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1820
+    -HUGE_VALF,
+    -0x1.p-149,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1821
+    0x1.fffffep127,
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1822
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1823
+    0x1.p-126,
+    -0x1.p-149,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1824
+    -0x1.p-126,
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1825
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1826
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1827
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1828
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1829
+    0.0,
+    -0x1.p-149,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1830
+    -0.0,
+    -0x1.p-149,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1831
+    HUGE_VALF,
+    -0x1.p-149,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1832
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1833
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1834
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1835
+    0x1.p-126,
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1836
+    -0x1.p-126,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1837
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1838
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1839
+    0x1.p-149,
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1840
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1841
+    0.0,
+    -0x1.p-149,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1842
+    0.0,
+    -0x1.p-149,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1843
+    HUGE_VALF,
+    0.0f,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1844
+    -HUGE_VALF,
+    0.0f,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1845
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1846
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1847
+    0x1.p-126,
+    0.0f,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1848
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1849
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1850
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1851
+    0x1.p-149,
+    0.0f,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1852
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1853
+    0.0,
+    0.0f,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1854
+    0.0,
+    0.0f,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1855
+    HUGE_VALF,
+    0.0f,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1856
+    -HUGE_VALF,
+    0.0f,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1857
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1858
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1859
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1860
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1861
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1862
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1863
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1864
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1865
+    0.0,
+    0.0f,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1866
+    -0.0,
+    0.0f,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1867
+    HUGE_VALF,
+    0.0f,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1868
+    -HUGE_VALF,
+    0.0f,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1869
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1870
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1871
+    0x1.p-126,
+    0.0f,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1872
+    -0x1.p-126,
+    0.0f,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1873
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1874
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1875
+    0x1.p-149,
+    0.0f,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1876
+    -0x1.p-149,
+    0.0f,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1877
+    0.0,
+    0.0f,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1878
+    0.0,
+    0.0f,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1879
+    HUGE_VALF,
+    0.0f,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1880
+    -HUGE_VALF,
+    0.0f,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1881
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1882
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1883
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1884
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1885
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1886
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1887
+    0x1.p-149,
+    0.0f,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1888
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1889
+    0.0,
+    0.0f,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1890
+    -0.0,
+    0.0f,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1891
+    HUGE_VALF,
+    0.0f,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1892
+    -HUGE_VALF,
+    0.0f,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1893
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1894
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1895
+    0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1896
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1897
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1898
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1899
+    0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1900
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1901
+    0.0,
+    0.0f,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1902
+    0.0,
+    0.0f,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1903
+    HUGE_VALF,
+    0.0f,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1904
+    -HUGE_VALF,
+    0.0f,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1905
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1906
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1907
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1908
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1909
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1910
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1911
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1912
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1913
+    0.0,
+    0.0f,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1914
+    -0.0,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1915
+    HUGE_VALF,
+    0.0f,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1916
+    -HUGE_VALF,
+    0.0f,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1917
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1918
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1919
+    0x1.p-126,
+    0.0f,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1920
+    -0x1.p-126,
+    0.0f,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1921
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1922
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1923
+    0x1.p-149,
+    0.0f,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1924
+    -0x1.p-149,
+    0.0f,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1925
+    0.0,
+    0.0f,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1926
+    0.0,
+    0.0f,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1927
+    HUGE_VALF,
+    0.0f,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1928
+    -HUGE_VALF,
+    0.0f,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1929
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1930
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1931
+    0x1.p-126,
+    0.0f,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1932
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1933
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1934
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1935
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1936
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1937
+    0.0,
+    0.0f,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1938
+    -0.0,
+    0.0f,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1939
+    HUGE_VALF,
+    0.0f,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1940
+    -HUGE_VALF,
+    0.0f,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1941
+    0x1.fffffep127,
+    0.0f,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1942
+    -0x1.fffffep127,
+    0.0f,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1943
+    0x1.p-126,
+    0.0f,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1944
+    -0x1.p-126,
+    0.0f,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1945
+    0x1.fffffcp-127,
+    0.0f,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1946
+    -0x1.fffffcp-127,
+    0.0f,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1947
+    0x1.p-149,
+    0.0f,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1948
+    -0x1.p-149,
+    0.0f,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1949
+    0.0,
+    0.0f,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1950
+    0.0,
+    0.0f,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1951
+    HUGE_VALF,
+    0.0f,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1952
+    -HUGE_VALF,
+    0.0f,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1953
+    0x1.fffffep127,
+    0.0f,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1954
+    -0x1.fffffep127,
+    0.0f,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1955
+    0x1.p-126,
+    0.0f,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1956
+    -0x1.p-126,
+    0.0f,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1957
+    0x1.fffffcp-127,
+    0.0f,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1958
+    -0x1.fffffcp-127,
+    0.0f,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1959
+    0x1.p-149,
+    0.0f,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1960
+    -0x1.p-149,
+    0.0f,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1961
+    0.0,
+    0.0f,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1962
+    -0.0,
+    0.0f,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1963
+    HUGE_VALF,
+    -0.0f,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1964
+    -HUGE_VALF,
+    -0.0f,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1965
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1966
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1967
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1968
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1969
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1970
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1971
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1972
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1973
+    0.0,
+    -0.0f,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1974
+    -0.0,
+    -0.0f,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1975
+    HUGE_VALF,
+    -0.0f,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1976
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1977
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1978
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1979
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1980
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1981
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1982
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1983
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1984
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1985
+    0.0,
+    -0.0f,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1986
+    0.0,
+    -0.0f,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1987
+    HUGE_VALF,
+    -0.0f,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1988
+    -HUGE_VALF,
+    -0.0f,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1989
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1990
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1991
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1992
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1993
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1994
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1995
+    0x1.p-149,
+    -0.0f,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1996
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1997
+    0.0,
+    -0.0f,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1998
+    -0.0,
+    -0.0f,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1999
+    HUGE_VALF,
+    -0.0f,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 2000
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 2001
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2002
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2003
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2004
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2005
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2006
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2007
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2008
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2009
+    0.0,
+    -0.0f,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 2010
+    0.0,
+    -0.0f,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2011
+    HUGE_VALF,
+    -0.0f,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2012
+    -HUGE_VALF,
+    -0.0f,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2013
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2014
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2015
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2016
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2017
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2018
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2019
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2020
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2021
+    0.0,
+    -0.0f,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2022
+    -0.0,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2023
+    HUGE_VALF,
+    -0.0f,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2024
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2025
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2026
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2027
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2028
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2029
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2030
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2031
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2032
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2033
+    0.0,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2034
+    0.0,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2035
+    HUGE_VALF,
+    -0.0f,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2036
+    -HUGE_VALF,
+    -0.0f,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2037
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2038
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2039
+    0x1.p-126,
+    -0.0f,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2040
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2041
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2042
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2043
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2044
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2045
+    0.0,
+    -0.0f,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 2046
+    -0.0,
+    -0.0f,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2047
+    HUGE_VALF,
+    -0.0f,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2048
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2049
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2050
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2051
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2052
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2053
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2054
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2055
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2056
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2057
+    0.0,
+    -0.0f,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 2058
+    0.0,
+    -0.0f,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2059
+    HUGE_VALF,
+    -0.0f,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 2060
+    -HUGE_VALF,
+    -0.0f,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 2061
+    0x1.fffffep127,
+    -0.0f,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 2062
+    -0x1.fffffep127,
+    -0.0f,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 2063
+    0x1.p-126,
+    -0.0f,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 2064
+    -0x1.p-126,
+    -0.0f,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 2065
+    0x1.fffffcp-127,
+    -0.0f,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 2066
+    -0x1.fffffcp-127,
+    -0.0f,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2067
+    0x1.p-149,
+    -0.0f,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 2068
+    -0x1.p-149,
+    -0.0f,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 2069
+    0.0,
+    -0.0f,
+    0.0f,
+    0.0f
+  },
+  { // Entry 2070
+    -0.0,
+    -0.0f,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 2071
+    HUGE_VALF,
+    -0.0f,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 2072
+    -HUGE_VALF,
+    -0.0f,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 2073
+    0x1.fffffep127,
+    -0.0f,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 2074
+    -0x1.fffffep127,
+    -0.0f,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 2075
+    0x1.p-126,
+    -0.0f,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 2076
+    -0x1.p-126,
+    -0.0f,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 2077
+    0x1.fffffcp-127,
+    -0.0f,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 2078
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2079
+    0x1.p-149,
+    -0.0f,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 2080
+    -0x1.p-149,
+    -0.0f,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 2081
+    0.0,
+    -0.0f,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 2082
+    0.0,
+    -0.0f,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 2083
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 2084
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2085
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2086
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2087
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2088
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2089
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2090
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2091
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2092
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2093
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2094
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 2095
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2096
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2097
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2098
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2099
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2100
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2101
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2102
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2103
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2104
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2105
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 2106
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2107
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2108
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2109
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2110
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2111
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2112
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2113
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2114
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2115
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2116
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 2117
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2118
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2119
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2120
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2121
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2122
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2123
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2124
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2125
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2126
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2127
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 2128
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2129
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2130
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2131
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2132
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2133
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2134
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2135
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2136
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 2137
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2138
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 2139
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2140
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2141
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2142
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2143
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2144
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2145
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2146
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2147
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 2148
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2149
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2150
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2151
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2152
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2153
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2154
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2155
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2156
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2157
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2158
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2159
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2160
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2161
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2162
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2163
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2164
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2165
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2166
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2167
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2168
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2169
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2170
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2171
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2172
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2173
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2174
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2175
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2176
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2177
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2178
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2179
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2180
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 2181
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2182
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2183
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2184
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2185
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2186
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2187
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2188
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2189
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2190
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2191
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 2192
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2193
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 2194
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2195
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2196
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2197
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2198
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2199
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2200
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2201
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2202
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2203
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2204
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 2205
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2206
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2207
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2208
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2209
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2210
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2211
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2212
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2213
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2214
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2215
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 2216
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2217
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2218
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2219
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2220
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2221
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2222
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2223
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2224
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2225
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2226
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 2227
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2228
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2229
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2230
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2231
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2232
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2233
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2234
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2235
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2236
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2237
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 2238
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2239
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2240
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2241
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2242
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2243
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2244
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2245
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2246
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 2247
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2248
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 2249
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2250
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2251
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2252
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2253
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2254
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2255
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2256
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2257
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 2258
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2259
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2260
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2261
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2262
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2263
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2264
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2265
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2266
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2267
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2268
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2269
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2270
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2271
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2272
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2273
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2274
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2275
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2276
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2277
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2278
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2279
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2280
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2281
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2282
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2283
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2284
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2285
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2286
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2287
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2288
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2289
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2290
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 2291
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2292
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2293
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2294
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2295
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2296
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2297
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2298
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2299
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2300
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2301
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 2302
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/fmax_intel_data.h b/tests/math_data/fmax_intel_data.h
new file mode 100644
index 0000000..14bd38b
--- /dev/null
+++ b/tests/math_data/fmax_intel_data.h
@@ -0,0 +1,1093 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_fmax_intel_data[] = {
+  { // Entry 0
+    -0x1.40p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 1
+    0x1.40p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 2
+    0x1.40p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 3
+    0x1.40p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 4
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 5
+    -0x1.p-1074,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 6
+    -0.0,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 7
+    0x1.p-1074,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 8
+    0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 9
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 10
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 11
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 12
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 13
+    0x1.p-1073,
+    -0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 14
+    -0.0,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 15
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 16
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 17
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 18
+    0x1.p-1073,
+    -0.0,
+    0x1.0p-1073
+  },
+  { // Entry 19
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 20
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 22
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 23
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 24
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 25
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 26
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 27
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 28
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 29
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 30
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 31
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 32
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 33
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 34
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 35
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 36
+    0x1.p-1023,
+    0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 37
+    0x1.00000000000020p-1023,
+    0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 38
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 39
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 40
+    0x1.00000000000020p-1023,
+    0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 41
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 42
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 43
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 44
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 45
+    0x1.p-50,
+    0x1.fffffffffffffp-51,
+    0x1.0p-50
+  },
+  { // Entry 46
+    0x1.00000000000010p-50,
+    0x1.fffffffffffffp-51,
+    0x1.0000000000001p-50
+  },
+  { // Entry 47
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 48
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.0p-50
+  },
+  { // Entry 49
+    0x1.00000000000010p-50,
+    0x1.0p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 50
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 51
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.0p-50
+  },
+  { // Entry 52
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 53
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 54
+    0x1.p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 55
+    0x1.00000000000010p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 56
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 57
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 58
+    0x1.00000000000010p-10,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 59
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 60
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 61
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 62
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 63
+    0x1.p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 64
+    0x1.00000000000010p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 65
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 66
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 67
+    0x1.00000000000010p-1,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 68
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 69
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 70
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 71
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 72
+    0x1.p1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 73
+    0x1.00000000000010p1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 74
+    0x1.p1,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 75
+    0x1.p1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 76
+    0x1.00000000000010p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 77
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 78
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 79
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 81
+    0x1.p10,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 82
+    0x1.00000000000010p10,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 84
+    0x1.p10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 85
+    0x1.00000000000010p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 86
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 87
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 88
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 89
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 90
+    0x1.p50,
+    0x1.fffffffffffffp49,
+    0x1.0p50
+  },
+  { // Entry 91
+    0x1.00000000000010p50,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p50
+  },
+  { // Entry 92
+    0x1.p50,
+    0x1.0p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 93
+    0x1.p50,
+    0x1.0p50,
+    0x1.0p50
+  },
+  { // Entry 94
+    0x1.00000000000010p50,
+    0x1.0p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 95
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 96
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.0p50
+  },
+  { // Entry 97
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 98
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 99
+    0x1.p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 100
+    0x1.00000000000010p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 101
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 102
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 103
+    0x1.00000000000010p1023,
+    0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 104
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 105
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 106
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 107
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 108
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 109
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 110
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 112
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 113
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 115
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 116
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 117
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 118
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 119
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 120
+    HUGE_VAL,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 121
+    HUGE_VAL,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 122
+    HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 123
+    HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 124
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 125
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 126
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 128
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 129
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 130
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 131
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 132
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 133
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 135
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 136
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 137
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 138
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 139
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 142
+    0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 143
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 144
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 145
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 146
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 147
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 148
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 149
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 150
+    0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 151
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 152
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 153
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 154
+    0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 155
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 156
+    0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 157
+    0x1.p-1022,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 158
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 159
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 160
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 161
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 162
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 163
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 164
+    0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 165
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 166
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 167
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 168
+    0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 169
+    0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 170
+    0x1.p-1074,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 171
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 172
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 173
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 174
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 175
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 176
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 177
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 178
+    0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 179
+    0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 180
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 181
+    0.0,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 183
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 184
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 185
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 186
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 187
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 188
+    -0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 190
+    -0.0,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 191
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 192
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 193
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 194
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 195
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 196
+    -0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 197
+    -0x1.p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 198
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 199
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 200
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    -0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 202
+    -0x1.p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 204
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 207
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 208
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 209
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 210
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 211
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 213
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 214
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/fmaxf_intel_data.h b/tests/math_data/fmaxf_intel_data.h
new file mode 100644
index 0000000..10f8319
--- /dev/null
+++ b/tests/math_data/fmaxf_intel_data.h
@@ -0,0 +1,1103 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_fmaxf_intel_data[] = {
+  { // Entry 0
+    0x1.p-148,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 1
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.00068ep0
+  },
+  { // Entry 2
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 3
+    0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 4
+    0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 6
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 7
+    -0x1.p-149,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 8
+    0.0,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 9
+    0x1.p-149,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 10
+    0x1.p-148,
+    -0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 11
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 12
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 13
+    0.0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 14
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 15
+    0x1.p-148,
+    -0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 16
+    0.0,
+    0.0,
+    -0x1.p-148
+  },
+  { // Entry 17
+    0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 18
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 19
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 20
+    0x1.p-148,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 21
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 22
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 23
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 24
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 25
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 26
+    0x1.p-148,
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 27
+    0x1.p-148,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 28
+    0x1.p-148,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 29
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 30
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 31
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 32
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 33
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 34
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 35
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 36
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 38
+    0x1.p-127,
+    0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 39
+    0x1.000004p-127,
+    0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 40
+    0x1.p-127,
+    0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 41
+    0x1.p-127,
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 42
+    0x1.000004p-127,
+    0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 43
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 44
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 45
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 46
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.fffffep-51
+  },
+  { // Entry 47
+    0x1.p-50,
+    0x1.fffffep-51,
+    0x1.p-50
+  },
+  { // Entry 48
+    0x1.000002p-50,
+    0x1.fffffep-51,
+    0x1.000002p-50
+  },
+  { // Entry 49
+    0x1.p-50,
+    0x1.p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 50
+    0x1.p-50,
+    0x1.p-50,
+    0x1.p-50
+  },
+  { // Entry 51
+    0x1.000002p-50,
+    0x1.p-50,
+    0x1.000002p-50
+  },
+  { // Entry 52
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 53
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.p-50
+  },
+  { // Entry 54
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.000002p-50
+  },
+  { // Entry 55
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 56
+    0x1.p-10,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 57
+    0x1.000002p-10,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 58
+    0x1.p-10,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 59
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 60
+    0x1.000002p-10,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 61
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 62
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 63
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 64
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 65
+    0x1.p-1,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 66
+    0x1.000002p-1,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 67
+    0x1.p-1,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 68
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 69
+    0x1.000002p-1,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 70
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 71
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 72
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 73
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 74
+    0x1.p1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 75
+    0x1.000002p1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 76
+    0x1.p1,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 77
+    0x1.p1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 78
+    0x1.000002p1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 79
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 80
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 81
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 82
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 84
+    0x1.000002p10,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 86
+    0x1.p10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 87
+    0x1.000002p10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 88
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 89
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 90
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 91
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.fffffep49
+  },
+  { // Entry 92
+    0x1.p50,
+    0x1.fffffep49,
+    0x1.p50
+  },
+  { // Entry 93
+    0x1.000002p50,
+    0x1.fffffep49,
+    0x1.000002p50
+  },
+  { // Entry 94
+    0x1.p50,
+    0x1.p50,
+    0x1.fffffep49
+  },
+  { // Entry 95
+    0x1.p50,
+    0x1.p50,
+    0x1.p50
+  },
+  { // Entry 96
+    0x1.000002p50,
+    0x1.p50,
+    0x1.000002p50
+  },
+  { // Entry 97
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.fffffep49
+  },
+  { // Entry 98
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.p50
+  },
+  { // Entry 99
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.000002p50
+  },
+  { // Entry 100
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 101
+    0x1.p127,
+    0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 102
+    0x1.000002p127,
+    0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 103
+    0x1.p127,
+    0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 104
+    0x1.p127,
+    0x1.p127,
+    0x1.p127
+  },
+  { // Entry 105
+    0x1.000002p127,
+    0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 106
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 107
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 108
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 109
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 110
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 111
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 112
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 113
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 114
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 115
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 116
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 117
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 119
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 120
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 121
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 122
+    HUGE_VALF,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 123
+    HUGE_VALF,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 124
+    HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 125
+    HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 126
+    HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 127
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 128
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 129
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 130
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 131
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 132
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 133
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 134
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 135
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 136
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 137
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 138
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 139
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 140
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 141
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 142
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 143
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 144
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 145
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 146
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 147
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 148
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 149
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 150
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 151
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 152
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 153
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 154
+    0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 155
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 156
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 157
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 158
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 159
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 160
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 161
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 162
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 163
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 164
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 165
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 166
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 167
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 168
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 169
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 170
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 171
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 172
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 173
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 174
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 175
+    0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 176
+    0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 177
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 178
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 179
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 180
+    0.0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 181
+    0.0,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 182
+    0.0,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 183
+    0.0,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 184
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 185
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 186
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 187
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 188
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 190
+    -0.0,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 191
+    -0.0,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 192
+    -0.0,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 194
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 195
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 196
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 197
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 198
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 199
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 200
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 201
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 202
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 203
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 204
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 205
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 206
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 207
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 208
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 209
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 210
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 211
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 212
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 213
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 214
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 215
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 216
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/fmin_intel_data.h b/tests/math_data/fmin_intel_data.h
new file mode 100644
index 0000000..a2538f5
--- /dev/null
+++ b/tests/math_data/fmin_intel_data.h
@@ -0,0 +1,1093 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_fmin_intel_data[] = {
+  { // Entry 0
+    -0x1.40p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 1
+    -0x1.40p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 2
+    -0x1.40p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 3
+    0x1.40p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 4
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 5
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 6
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 7
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 8
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 9
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 10
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 11
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 12
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 13
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 14
+    -0x1.p-1073,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 15
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 16
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 17
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 18
+    -0.0,
+    -0.0,
+    0x1.0p-1073
+  },
+  { // Entry 19
+    -0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 20
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    -0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 22
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 23
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 24
+    -0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 25
+    -0x1.p-1074,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 26
+    -0.0,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 27
+    0x1.p-1074,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 28
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 29
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 30
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 31
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 32
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 33
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 34
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 35
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 36
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 37
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 38
+    0x1.ffffffffffffc0p-1024,
+    0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 39
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 40
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 41
+    0x1.ffffffffffffc0p-1024,
+    0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 42
+    0x1.p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 43
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 44
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.0p-50
+  },
+  { // Entry 46
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.0000000000001p-50
+  },
+  { // Entry 47
+    0x1.fffffffffffff0p-51,
+    0x1.0p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 48
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.0p-50
+  },
+  { // Entry 49
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 50
+    0x1.fffffffffffff0p-51,
+    0x1.0000000000001p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 51
+    0x1.p-50,
+    0x1.0000000000001p-50,
+    0x1.0p-50
+  },
+  { // Entry 52
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 53
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 54
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 55
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 56
+    0x1.fffffffffffff0p-11,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 57
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 58
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 59
+    0x1.fffffffffffff0p-11,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 60
+    0x1.p-10,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 61
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 62
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 63
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 65
+    0x1.fffffffffffff0p-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 66
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 67
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 68
+    0x1.fffffffffffff0p-2,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 69
+    0x1.p-1,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 70
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 71
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 72
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 73
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 74
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 75
+    0x1.p1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 76
+    0x1.p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 77
+    0x1.fffffffffffff0p0,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 78
+    0x1.p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 79
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 82
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 83
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 84
+    0x1.p10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p9,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 88
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 89
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 90
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.0p50
+  },
+  { // Entry 91
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p50
+  },
+  { // Entry 92
+    0x1.fffffffffffff0p49,
+    0x1.0p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 93
+    0x1.p50,
+    0x1.0p50,
+    0x1.0p50
+  },
+  { // Entry 94
+    0x1.p50,
+    0x1.0p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 95
+    0x1.fffffffffffff0p49,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 96
+    0x1.p50,
+    0x1.0000000000001p50,
+    0x1.0p50
+  },
+  { // Entry 97
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 98
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 99
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 100
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 101
+    0x1.fffffffffffff0p1022,
+    0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 102
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 103
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 104
+    0x1.fffffffffffff0p1022,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 105
+    0x1.p1023,
+    0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 106
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 107
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 108
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 109
+    0x1.p-1022,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 110
+    0x1.p-1074,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    0.0,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 112
+    -0.0,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 113
+    -0x1.p-1074,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    -0x1.p-1022,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 115
+    -0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 116
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 117
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 118
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 119
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 120
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 121
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 122
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 123
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 124
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 125
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 126
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 128
+    0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 129
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 130
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 131
+    -0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 132
+    -0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 133
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 135
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 136
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 137
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 138
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 139
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 142
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 143
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 144
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 146
+    -0.0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 147
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 148
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 149
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 150
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 151
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 152
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 153
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 154
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 155
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 156
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 157
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 158
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 159
+    0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 160
+    -0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 161
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 162
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 163
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 164
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 165
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 166
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 167
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 168
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 169
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 170
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 171
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 172
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 173
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 174
+    -0x1.p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 175
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 176
+    -HUGE_VAL,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 177
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 178
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 179
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 180
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 181
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 183
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 184
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 185
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 186
+    -HUGE_VAL,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 187
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 188
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 189
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 190
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 191
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 192
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 194
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 195
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 196
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 197
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 198
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 199
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 200
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 202
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 204
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 207
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 208
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 209
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 210
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 211
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 213
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 214
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/fminf_intel_data.h b/tests/math_data/fminf_intel_data.h
new file mode 100644
index 0000000..051ae9b
--- /dev/null
+++ b/tests/math_data/fminf_intel_data.h
@@ -0,0 +1,1103 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_fminf_intel_data[] = {
+  { // Entry 0
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 1
+    0x1.fff2e2p-1,
+    0x1.fffffep-1,
+    0x1.fff2e2p-1
+  },
+  { // Entry 2
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 3
+    -0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 4
+    -0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 6
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 7
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 8
+    -0x1.p-148,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 9
+    -0x1.p-148,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 10
+    -0x1.p-148,
+    -0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 11
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 12
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 13
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 14
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 15
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 16
+    -0x1.p-148,
+    0.0,
+    -0x1.p-148
+  },
+  { // Entry 17
+    -0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 18
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 19
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 20
+    0.0,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 21
+    -0x1.p-148,
+    0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 22
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 23
+    0.0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 24
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 25
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 26
+    -0x1.p-148,
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 27
+    -0x1.p-149,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 28
+    0.0,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 29
+    0x1.p-149,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 30
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 31
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 32
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 33
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 34
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 35
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 36
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 38
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 39
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 40
+    0x1.fffff8p-128,
+    0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 41
+    0x1.p-127,
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 42
+    0x1.p-127,
+    0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 43
+    0x1.fffff8p-128,
+    0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 44
+    0x1.p-127,
+    0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 45
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 46
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.fffffep-51
+  },
+  { // Entry 47
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.p-50
+  },
+  { // Entry 48
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.000002p-50
+  },
+  { // Entry 49
+    0x1.fffffep-51,
+    0x1.p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 50
+    0x1.p-50,
+    0x1.p-50,
+    0x1.p-50
+  },
+  { // Entry 51
+    0x1.p-50,
+    0x1.p-50,
+    0x1.000002p-50
+  },
+  { // Entry 52
+    0x1.fffffep-51,
+    0x1.000002p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 53
+    0x1.p-50,
+    0x1.000002p-50,
+    0x1.p-50
+  },
+  { // Entry 54
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.000002p-50
+  },
+  { // Entry 55
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 56
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 57
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 58
+    0x1.fffffep-11,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 59
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 60
+    0x1.p-10,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 61
+    0x1.fffffep-11,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 62
+    0x1.p-10,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 63
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 64
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 65
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 66
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 67
+    0x1.fffffep-2,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 68
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 69
+    0x1.p-1,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 70
+    0x1.fffffep-2,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 71
+    0x1.p-1,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 72
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 73
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 74
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 75
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 76
+    0x1.fffffep0,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 77
+    0x1.p1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 78
+    0x1.p1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 79
+    0x1.fffffep0,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 80
+    0x1.p1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 81
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 82
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 83
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 84
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 85
+    0x1.fffffep9,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 86
+    0x1.p10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 88
+    0x1.fffffep9,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 89
+    0x1.p10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 90
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 91
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.fffffep49
+  },
+  { // Entry 92
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.p50
+  },
+  { // Entry 93
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.000002p50
+  },
+  { // Entry 94
+    0x1.fffffep49,
+    0x1.p50,
+    0x1.fffffep49
+  },
+  { // Entry 95
+    0x1.p50,
+    0x1.p50,
+    0x1.p50
+  },
+  { // Entry 96
+    0x1.p50,
+    0x1.p50,
+    0x1.000002p50
+  },
+  { // Entry 97
+    0x1.fffffep49,
+    0x1.000002p50,
+    0x1.fffffep49
+  },
+  { // Entry 98
+    0x1.p50,
+    0x1.000002p50,
+    0x1.p50
+  },
+  { // Entry 99
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.000002p50
+  },
+  { // Entry 100
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 101
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 102
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 103
+    0x1.fffffep126,
+    0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 104
+    0x1.p127,
+    0x1.p127,
+    0x1.p127
+  },
+  { // Entry 105
+    0x1.p127,
+    0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 106
+    0x1.fffffep126,
+    0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 107
+    0x1.p127,
+    0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 108
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 109
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 110
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 111
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 112
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 113
+    0.0,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 114
+    -0.0,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 115
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 116
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 117
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 119
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 120
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 121
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 122
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 123
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 124
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 125
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 126
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 127
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 128
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 129
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 130
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 131
+    0.0,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 132
+    -0.0,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 133
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 134
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 135
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 136
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 137
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 138
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 139
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 140
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 141
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 142
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 143
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 144
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 145
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 146
+    0x1.p-149,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 147
+    0.0,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 148
+    -0.0,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 149
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 150
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 151
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 152
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 153
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 154
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 155
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 156
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 157
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 158
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 159
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 160
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 161
+    0.0,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 162
+    -0.0,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 163
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 164
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 165
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 166
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 167
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 168
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 169
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 170
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 171
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 172
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 173
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 174
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 175
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 176
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 177
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 178
+    -HUGE_VALF,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 179
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 180
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 181
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 182
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 183
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 184
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 185
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 186
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 187
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 188
+    -HUGE_VALF,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 189
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 190
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 191
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 192
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 194
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 195
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 196
+    -HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 197
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 198
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 199
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 200
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 201
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 202
+    -HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 203
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 204
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 205
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 206
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 207
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 208
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 209
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 210
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 211
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 212
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 213
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 214
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 215
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 216
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/fmod_intel_data.h b/tests/math_data/fmod_intel_data.h
new file mode 100644
index 0000000..b15c77a
--- /dev/null
+++ b/tests/math_data/fmod_intel_data.h
@@ -0,0 +1,1328 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_fmod_intel_data[] = {
+  { // Entry 0
+    -0x1.57e8932492c0p-10,
+    -0x1.200ad685e7f44p3,
+    -0x1.000014abd446dp0
+  },
+  { // Entry 1
+    -0x1.d7dbf487ffd0p-11,
+    -0x1.3333333333334p-1,
+    0x1.10a83585649f6p-4
+  },
+  { // Entry 2
+    0x1.p-1072,
+    0x1.0000000000001p-41,
+    0x1.4p-1072
+  },
+  { // Entry 3
+    0x1.p-1072,
+    0x1.0000000000001p-1017,
+    0x1.4p-1072
+  },
+  { // Entry 4
+    0x1.fc8420e88cbfp18,
+    0x1.11f783ee89b08p99,
+    0x1.0abe1a29d8e8cp19
+  },
+  { // Entry 5
+    0x1.50p-61,
+    0x1.5555555555552p-12,
+    0x1.1111111111106p-14
+  },
+  { // Entry 6
+    -0.0,
+    -0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 7
+    -0.0,
+    -0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 8
+    0.0,
+    0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 9
+    0.0,
+    0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 10
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 11
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 12
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 13
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 14
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 15
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 16
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 17
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 18
+    0.0,
+    0x1.0p15,
+    -0x1.0p-117
+  },
+  { // Entry 19
+    0.0,
+    0x1.0p15,
+    0x1.0p-117
+  },
+  { // Entry 20
+    0.0,
+    0x1.0p16,
+    -0x1.0p-117
+  },
+  { // Entry 21
+    0.0,
+    0x1.0p16,
+    0x1.0p-117
+  },
+  { // Entry 22
+    0.0,
+    0x1.0p15,
+    0x1.0p15
+  },
+  { // Entry 23
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p16
+  },
+  { // Entry 24
+    0.0,
+    0x1.0p16,
+    0x1.0p15
+  },
+  { // Entry 25
+    0.0,
+    0x1.0p16,
+    0x1.0p16
+  },
+  { // Entry 26
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p117
+  },
+  { // Entry 27
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p118
+  },
+  { // Entry 28
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p117
+  },
+  { // Entry 29
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p118
+  },
+  { // Entry 30
+    0.0,
+    0x1.0p117,
+    -0x1.0p-117
+  },
+  { // Entry 31
+    0.0,
+    0x1.0p117,
+    0x1.0p-117
+  },
+  { // Entry 32
+    0.0,
+    0x1.0p118,
+    -0x1.0p-117
+  },
+  { // Entry 33
+    0.0,
+    0x1.0p118,
+    0x1.0p-117
+  },
+  { // Entry 34
+    0.0,
+    0x1.0p117,
+    0x1.0p15
+  },
+  { // Entry 35
+    0.0,
+    0x1.0p117,
+    0x1.0p16
+  },
+  { // Entry 36
+    0.0,
+    0x1.0p118,
+    0x1.0p15
+  },
+  { // Entry 37
+    0.0,
+    0x1.0p118,
+    0x1.0p16
+  },
+  { // Entry 38
+    0.0,
+    0x1.0p117,
+    0x1.0p117
+  },
+  { // Entry 39
+    0x1.p117,
+    0x1.0p117,
+    0x1.0p118
+  },
+  { // Entry 40
+    0.0,
+    0x1.0p118,
+    0x1.0p117
+  },
+  { // Entry 41
+    0.0,
+    0x1.0p118,
+    0x1.0p118
+  },
+  { // Entry 42
+    0.0,
+    0x1.9p6,
+    0x1.4p3
+  },
+  { // Entry 43
+    0x1.p0,
+    0x1.9p6,
+    0x1.6p3
+  },
+  { // Entry 44
+    0x1.p2,
+    0x1.9p6,
+    0x1.8p3
+  },
+  { // Entry 45
+    0x1.p0,
+    0x1.940p6,
+    0x1.4p3
+  },
+  { // Entry 46
+    0x1.p1,
+    0x1.940p6,
+    0x1.6p3
+  },
+  { // Entry 47
+    0x1.40p2,
+    0x1.940p6,
+    0x1.8p3
+  },
+  { // Entry 48
+    0x1.p1,
+    0x1.980p6,
+    0x1.4p3
+  },
+  { // Entry 49
+    0x1.80p1,
+    0x1.980p6,
+    0x1.6p3
+  },
+  { // Entry 50
+    0x1.80p2,
+    0x1.980p6,
+    0x1.8p3
+  },
+  { // Entry 51
+    0x1.80p1,
+    0x1.9c0p6,
+    0x1.4p3
+  },
+  { // Entry 52
+    0x1.p2,
+    0x1.9c0p6,
+    0x1.6p3
+  },
+  { // Entry 53
+    0x1.c0p2,
+    0x1.9c0p6,
+    0x1.8p3
+  },
+  { // Entry 54
+    0x1.p2,
+    0x1.ap6,
+    0x1.4p3
+  },
+  { // Entry 55
+    0x1.40p2,
+    0x1.ap6,
+    0x1.6p3
+  },
+  { // Entry 56
+    0x1.p3,
+    0x1.ap6,
+    0x1.8p3
+  },
+  { // Entry 57
+    0x1.40p2,
+    0x1.a40p6,
+    0x1.4p3
+  },
+  { // Entry 58
+    0x1.80p2,
+    0x1.a40p6,
+    0x1.6p3
+  },
+  { // Entry 59
+    0x1.20p3,
+    0x1.a40p6,
+    0x1.8p3
+  },
+  { // Entry 60
+    0x1.80p2,
+    0x1.a80p6,
+    0x1.4p3
+  },
+  { // Entry 61
+    0x1.c0p2,
+    0x1.a80p6,
+    0x1.6p3
+  },
+  { // Entry 62
+    0x1.40p3,
+    0x1.a80p6,
+    0x1.8p3
+  },
+  { // Entry 63
+    0x1.c0p2,
+    0x1.ac0p6,
+    0x1.4p3
+  },
+  { // Entry 64
+    0x1.p3,
+    0x1.ac0p6,
+    0x1.6p3
+  },
+  { // Entry 65
+    0x1.60p3,
+    0x1.ac0p6,
+    0x1.8p3
+  },
+  { // Entry 66
+    0x1.p3,
+    0x1.bp6,
+    0x1.4p3
+  },
+  { // Entry 67
+    0x1.20p3,
+    0x1.bp6,
+    0x1.6p3
+  },
+  { // Entry 68
+    0.0,
+    0x1.bp6,
+    0x1.8p3
+  },
+  { // Entry 69
+    0x1.20p3,
+    0x1.b40p6,
+    0x1.4p3
+  },
+  { // Entry 70
+    0x1.40p3,
+    0x1.b40p6,
+    0x1.6p3
+  },
+  { // Entry 71
+    0x1.p0,
+    0x1.b40p6,
+    0x1.8p3
+  },
+  { // Entry 72
+    0.0,
+    0x1.b80p6,
+    0x1.4p3
+  },
+  { // Entry 73
+    0.0,
+    0x1.b80p6,
+    0x1.6p3
+  },
+  { // Entry 74
+    0x1.p1,
+    0x1.b80p6,
+    0x1.8p3
+  },
+  { // Entry 75
+    -0.0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0x1.p-53,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 82
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 84
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 85
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 86
+    -0.0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 87
+    -0x1.p-53,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 88
+    -0.0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 89
+    -0x1.p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 90
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 91
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 92
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 93
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 94
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 95
+    0.0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 96
+    0x1.p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 97
+    0.0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 98
+    0x1.p-53,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 99
+    0.0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 100
+    0x1.p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 101
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 102
+    0.0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 104
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 105
+    0x1.p-53,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0.0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 107
+    0x1.p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 108
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 109
+    0x1.p-52,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 110
+    0.0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 111
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 112
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 113
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 114
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 115
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 116
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 117
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 119
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 120
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 122
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 123
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 124
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 125
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 126
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 128
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 129
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 130
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 131
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 132
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 133
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 135
+    -0x1.80p-1,
+    -0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 136
+    -0x1.p-1,
+    -0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 137
+    -0.0,
+    -0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 138
+    -0x1.p-2,
+    -0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    -0.0,
+    -0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 140
+    -0x1.00000000000020p-1,
+    -0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 141
+    -0.0,
+    -0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 142
+    -0x1.80p-1,
+    -0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 143
+    -0x1.00000000000040p-2,
+    -0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 144
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 145
+    0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 146
+    0x1.00000000000040p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 147
+    0x1.p-1,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 148
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 149
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 150
+    0x1.00000000000010p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 151
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 152
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 153
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 155
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 156
+    -0x1.p-53,
+    -0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 157
+    -0.0,
+    -0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 158
+    -0x1.p-51,
+    -0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 159
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 160
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 161
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 162
+    0.0,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    0x1.80p-1,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.00000000000040p-2,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    0x1.p-2,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 166
+    0.0,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 167
+    0x1.00000000000020p-1,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 168
+    0x1.80p-1,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 169
+    0x1.p-1,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 170
+    0.0,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 171
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 172
+    0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 173
+    0x1.00000000000040p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 174
+    0x1.p-1,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 175
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 176
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 177
+    0x1.00000000000010p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 178
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 179
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 180
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 183
+    -0x1.p-51,
+    -0x1.0p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 184
+    -0.0,
+    -0x1.0p53,
+    -0x1.0p0
+  },
+  { // Entry 185
+    -0x1.p-53,
+    -0x1.0p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 186
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    -0x1.0000000000001p0
+  },
+  { // Entry 187
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.0p0
+  },
+  { // Entry 188
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 189
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 190
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 191
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 192
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 193
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 194
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 195
+    0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 196
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 198
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 199
+    0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 200
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 202
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 203
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 204
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 207
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 208
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 209
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 210
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 211
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 212
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 213
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 214
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 215
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 217
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 227
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 229
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 230
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 231
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 233
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 234
+    0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 235
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 236
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 237
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 238
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 239
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 241
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 242
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 243
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 244
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 245
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 246
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 247
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 248
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 249
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 250
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 251
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 252
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 253
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 254
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 255
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 256
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 257
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 258
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 259
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 260
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 261
+    -0x1.8fd90479094320p-964,
+    -0x1.398dd069017ffp759,
+    -0x1.b148e36fdec2fp-964
+  }
+};
diff --git a/tests/math_data/fmodf_intel_data.h b/tests/math_data/fmodf_intel_data.h
new file mode 100644
index 0000000..32ba583
--- /dev/null
+++ b/tests/math_data/fmodf_intel_data.h
@@ -0,0 +1,1298 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_fmodf_intel_data[] = {
+  { // Entry 0
+    0x1.fbp-11,
+    0x1.8e77b6p12,
+    -0x1.0140p-10
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 3
+    0.0,
+    0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 5
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 6
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 7
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 8
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 9
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 10
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 11
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 12
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 13
+    0.0,
+    0x1.p15,
+    -0x1.p-117
+  },
+  { // Entry 14
+    0.0,
+    0x1.p15,
+    0x1.p-117
+  },
+  { // Entry 15
+    0.0,
+    0x1.p16,
+    -0x1.p-117
+  },
+  { // Entry 16
+    0.0,
+    0x1.p16,
+    0x1.p-117
+  },
+  { // Entry 17
+    0.0,
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 18
+    0x1.p15,
+    0x1.p15,
+    0x1.p16
+  },
+  { // Entry 19
+    0.0,
+    0x1.p16,
+    0x1.p15
+  },
+  { // Entry 20
+    0.0,
+    0x1.p16,
+    0x1.p16
+  },
+  { // Entry 21
+    0x1.p15,
+    0x1.p15,
+    0x1.p117
+  },
+  { // Entry 22
+    0x1.p15,
+    0x1.p15,
+    0x1.p118
+  },
+  { // Entry 23
+    0x1.p16,
+    0x1.p16,
+    0x1.p117
+  },
+  { // Entry 24
+    0x1.p16,
+    0x1.p16,
+    0x1.p118
+  },
+  { // Entry 25
+    0.0,
+    0x1.p117,
+    -0x1.p-117
+  },
+  { // Entry 26
+    0.0,
+    0x1.p117,
+    0x1.p-117
+  },
+  { // Entry 27
+    0.0,
+    0x1.p118,
+    -0x1.p-117
+  },
+  { // Entry 28
+    0.0,
+    0x1.p118,
+    0x1.p-117
+  },
+  { // Entry 29
+    0.0,
+    0x1.p117,
+    0x1.p15
+  },
+  { // Entry 30
+    0.0,
+    0x1.p117,
+    0x1.p16
+  },
+  { // Entry 31
+    0.0,
+    0x1.p118,
+    0x1.p15
+  },
+  { // Entry 32
+    0.0,
+    0x1.p118,
+    0x1.p16
+  },
+  { // Entry 33
+    0.0,
+    0x1.p117,
+    0x1.p117
+  },
+  { // Entry 34
+    0x1.p117,
+    0x1.p117,
+    0x1.p118
+  },
+  { // Entry 35
+    0.0,
+    0x1.p118,
+    0x1.p117
+  },
+  { // Entry 36
+    0.0,
+    0x1.p118,
+    0x1.p118
+  },
+  { // Entry 37
+    0.0,
+    0x1.90p6,
+    0x1.40p3
+  },
+  { // Entry 38
+    0x1.p0,
+    0x1.90p6,
+    0x1.60p3
+  },
+  { // Entry 39
+    0x1.p2,
+    0x1.90p6,
+    0x1.80p3
+  },
+  { // Entry 40
+    0x1.p0,
+    0x1.94p6,
+    0x1.40p3
+  },
+  { // Entry 41
+    0x1.p1,
+    0x1.94p6,
+    0x1.60p3
+  },
+  { // Entry 42
+    0x1.40p2,
+    0x1.94p6,
+    0x1.80p3
+  },
+  { // Entry 43
+    0x1.p1,
+    0x1.98p6,
+    0x1.40p3
+  },
+  { // Entry 44
+    0x1.80p1,
+    0x1.98p6,
+    0x1.60p3
+  },
+  { // Entry 45
+    0x1.80p2,
+    0x1.98p6,
+    0x1.80p3
+  },
+  { // Entry 46
+    0x1.80p1,
+    0x1.9cp6,
+    0x1.40p3
+  },
+  { // Entry 47
+    0x1.p2,
+    0x1.9cp6,
+    0x1.60p3
+  },
+  { // Entry 48
+    0x1.c0p2,
+    0x1.9cp6,
+    0x1.80p3
+  },
+  { // Entry 49
+    0x1.p2,
+    0x1.a0p6,
+    0x1.40p3
+  },
+  { // Entry 50
+    0x1.40p2,
+    0x1.a0p6,
+    0x1.60p3
+  },
+  { // Entry 51
+    0x1.p3,
+    0x1.a0p6,
+    0x1.80p3
+  },
+  { // Entry 52
+    0x1.40p2,
+    0x1.a4p6,
+    0x1.40p3
+  },
+  { // Entry 53
+    0x1.80p2,
+    0x1.a4p6,
+    0x1.60p3
+  },
+  { // Entry 54
+    0x1.20p3,
+    0x1.a4p6,
+    0x1.80p3
+  },
+  { // Entry 55
+    0x1.80p2,
+    0x1.a8p6,
+    0x1.40p3
+  },
+  { // Entry 56
+    0x1.c0p2,
+    0x1.a8p6,
+    0x1.60p3
+  },
+  { // Entry 57
+    0x1.40p3,
+    0x1.a8p6,
+    0x1.80p3
+  },
+  { // Entry 58
+    0x1.c0p2,
+    0x1.acp6,
+    0x1.40p3
+  },
+  { // Entry 59
+    0x1.p3,
+    0x1.acp6,
+    0x1.60p3
+  },
+  { // Entry 60
+    0x1.60p3,
+    0x1.acp6,
+    0x1.80p3
+  },
+  { // Entry 61
+    0x1.p3,
+    0x1.b0p6,
+    0x1.40p3
+  },
+  { // Entry 62
+    0x1.20p3,
+    0x1.b0p6,
+    0x1.60p3
+  },
+  { // Entry 63
+    0.0,
+    0x1.b0p6,
+    0x1.80p3
+  },
+  { // Entry 64
+    0x1.20p3,
+    0x1.b4p6,
+    0x1.40p3
+  },
+  { // Entry 65
+    0x1.40p3,
+    0x1.b4p6,
+    0x1.60p3
+  },
+  { // Entry 66
+    0x1.p0,
+    0x1.b4p6,
+    0x1.80p3
+  },
+  { // Entry 67
+    0.0,
+    0x1.b8p6,
+    0x1.40p3
+  },
+  { // Entry 68
+    0.0,
+    0x1.b8p6,
+    0x1.60p3
+  },
+  { // Entry 69
+    0x1.p1,
+    0x1.b8p6,
+    0x1.80p3
+  },
+  { // Entry 70
+    -0.0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 71
+    -0x1.p-23,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 72
+    -0x1.80p-23,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 73
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 74
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 75
+    -0x1.p-24,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 76
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 77
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 78
+    -0.0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 79
+    -0x1.80p-23,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 80
+    -0x1.p-23,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 81
+    -0.0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 82
+    -0x1.p-24,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 84
+    -0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 86
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 87
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 88
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 89
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 90
+    0.0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 91
+    0x1.p0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 92
+    0.0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 93
+    0x1.p-24,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 94
+    0.0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 95
+    0x1.p-23,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 96
+    0x1.80p-23,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 97
+    0.0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 98
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 99
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 100
+    0x1.p-24,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 101
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 102
+    0x1.p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 103
+    0x1.80p-23,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 104
+    0x1.p-23,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 105
+    0.0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 106
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 107
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 108
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 109
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 110
+    0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 111
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 112
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 113
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 114
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 115
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 116
+    0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 117
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 119
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 120
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 121
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 122
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 123
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 124
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 126
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 128
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 129
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 130
+    -0x1.80p-1,
+    -0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 131
+    -0x1.p-1,
+    -0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 132
+    -0.0,
+    -0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 133
+    -0x1.p-2,
+    -0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 134
+    -0.0,
+    -0x1.p22,
+    0x1.p0
+  },
+  { // Entry 135
+    -0x1.000004p-1,
+    -0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 136
+    -0.0,
+    -0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 137
+    -0x1.80p-1,
+    -0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 138
+    -0x1.000008p-2,
+    -0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 139
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 140
+    0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 141
+    0x1.000008p-1,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 142
+    0x1.p-1,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 143
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 144
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 145
+    0x1.000002p-1,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 146
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 147
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 148
+    -0x1.80p-23,
+    -0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 149
+    -0.0,
+    -0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 150
+    -0.0,
+    -0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 151
+    -0x1.p-24,
+    -0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 152
+    -0.0,
+    -0x1.p24,
+    0x1.p0
+  },
+  { // Entry 153
+    -0x1.p-22,
+    -0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 155
+    -0.0,
+    -0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 156
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 157
+    0.0,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 158
+    0x1.80p-1,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 159
+    0x1.000008p-2,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 160
+    0x1.p-2,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 161
+    0.0,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 162
+    0x1.000004p-1,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 163
+    0x1.80p-1,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 164
+    0x1.p-1,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 165
+    0.0,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 166
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 167
+    0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 168
+    0x1.000008p-1,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 169
+    0x1.p-1,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 170
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 171
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 172
+    0x1.000002p-1,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 173
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 174
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 175
+    -0.0,
+    -0x1.000002p24,
+    -0x1.000002p0
+  },
+  { // Entry 176
+    -0.0,
+    -0x1.000002p24,
+    -0x1.p0
+  },
+  { // Entry 177
+    -0x1.80p-23,
+    -0x1.000002p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 178
+    -0x1.p-22,
+    -0x1.p24,
+    -0x1.000002p0
+  },
+  { // Entry 179
+    -0.0,
+    -0x1.p24,
+    -0x1.p0
+  },
+  { // Entry 180
+    -0x1.p-24,
+    -0x1.p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 181
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    -0x1.000002p0
+  },
+  { // Entry 182
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.p0
+  },
+  { // Entry 183
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.fffffep-1
+  },
+  { // Entry 184
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 185
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 186
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 187
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 188
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 189
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 190
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 191
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 192
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 194
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 195
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 196
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 197
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 198
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 202
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 203
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 204
+    0.0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 205
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 206
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 207
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 209
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 210
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 211
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 212
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 213
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 214
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 215
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 216
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 217
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 218
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 219
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 220
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 221
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 222
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 224
+    0.0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 225
+    0.0,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 227
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 228
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 229
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 230
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 231
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 232
+    0.0,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 233
+    0.0,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 234
+    -0.0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 235
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 236
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 237
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 238
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 239
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 240
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 241
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 242
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 243
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 244
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 245
+    0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 246
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 247
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 248
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 249
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 250
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 251
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 252
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 253
+    0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 254
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 255
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/frexp_intel_data.h b/tests/math_data/frexp_intel_data.h
new file mode 100644
index 0000000..ce2e873
--- /dev/null
+++ b/tests/math_data/frexp_intel_data.h
@@ -0,0 +1,1108 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_int_1_t<double, double> g_frexp_intel_data[] = {
+  { // Entry 0
+    0x1.p-1,
+    (int)0x1.94p6,
+    0x1.0p100
+  },
+  { // Entry 1
+    0x1.199999999999a0p-1,
+    (int)0x1.94p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 2
+    0x1.33333333333340p-1,
+    (int)0x1.94p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 3
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.94p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 4
+    0x1.66666666666680p-1,
+    (int)0x1.94p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 5
+    0x1.80000000000020p-1,
+    (int)0x1.94p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 6
+    0x1.999999999999c0p-1,
+    (int)0x1.94p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 7
+    0x1.b3333333333360p-1,
+    (int)0x1.94p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 8
+    0x1.cccccccccccdp-1,
+    (int)0x1.94p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 9
+    0x1.e66666666666a0p-1,
+    (int)0x1.94p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 10
+    0x1.p-1,
+    (int)0x1.98p6,
+    0x1.0p101
+  },
+  { // Entry 11
+    0x1.p-1,
+    (int)0x1.92p7,
+    0x1.0p200
+  },
+  { // Entry 12
+    0x1.199999999999a0p-1,
+    (int)0x1.92p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 13
+    0x1.33333333333340p-1,
+    (int)0x1.92p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 14
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.92p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 15
+    0x1.66666666666680p-1,
+    (int)0x1.92p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 16
+    0x1.80000000000020p-1,
+    (int)0x1.92p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 17
+    0x1.999999999999c0p-1,
+    (int)0x1.92p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 18
+    0x1.b3333333333360p-1,
+    (int)0x1.92p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 19
+    0x1.cccccccccccdp-1,
+    (int)0x1.92p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 20
+    0x1.e66666666666a0p-1,
+    (int)0x1.92p7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 21
+    0x1.p-1,
+    (int)0x1.94p7,
+    0x1.0p201
+  },
+  { // Entry 22
+    0x1.p-1,
+    (int)0x1.f480p9,
+    0x1.0p1000
+  },
+  { // Entry 23
+    0x1.199999999999a0p-1,
+    (int)0x1.f480p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 24
+    0x1.33333333333340p-1,
+    (int)0x1.f480p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 25
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.f480p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 26
+    0x1.66666666666680p-1,
+    (int)0x1.f480p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 27
+    0x1.80000000000020p-1,
+    (int)0x1.f480p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 28
+    0x1.999999999999c0p-1,
+    (int)0x1.f480p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 29
+    0x1.b3333333333360p-1,
+    (int)0x1.f480p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 30
+    0x1.cccccccccccdp-1,
+    (int)0x1.f480p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 31
+    0x1.e66666666666a0p-1,
+    (int)0x1.f480p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 32
+    0x1.p-1,
+    (int)0x1.f5p9,
+    0x1.0p1001
+  },
+  { // Entry 33
+    -0x1.p-1,
+    (int)0x1.98p6,
+    -0x1.0p101
+  },
+  { // Entry 34
+    -0x1.e6666666666660p-1,
+    (int)0x1.94p6,
+    -0x1.e666666666666p100
+  },
+  { // Entry 35
+    -0x1.ccccccccccccc0p-1,
+    (int)0x1.94p6,
+    -0x1.cccccccccccccp100
+  },
+  { // Entry 36
+    -0x1.b3333333333320p-1,
+    (int)0x1.94p6,
+    -0x1.b333333333332p100
+  },
+  { // Entry 37
+    -0x1.99999999999980p-1,
+    (int)0x1.94p6,
+    -0x1.9999999999998p100
+  },
+  { // Entry 38
+    -0x1.7fffffffffffe0p-1,
+    (int)0x1.94p6,
+    -0x1.7fffffffffffep100
+  },
+  { // Entry 39
+    -0x1.66666666666640p-1,
+    (int)0x1.94p6,
+    -0x1.6666666666664p100
+  },
+  { // Entry 40
+    -0x1.4ccccccccccca0p-1,
+    (int)0x1.94p6,
+    -0x1.4cccccccccccap100
+  },
+  { // Entry 41
+    -0x1.333333333333p-1,
+    (int)0x1.94p6,
+    -0x1.3333333333330p100
+  },
+  { // Entry 42
+    -0x1.19999999999960p-1,
+    (int)0x1.94p6,
+    -0x1.1999999999996p100
+  },
+  { // Entry 43
+    -0x1.p-1,
+    (int)0x1.94p6,
+    -0x1.0p100
+  },
+  { // Entry 44
+    -0x1.p-1,
+    (int)0x1.94p7,
+    -0x1.0p201
+  },
+  { // Entry 45
+    -0x1.e6666666666660p-1,
+    (int)0x1.92p7,
+    -0x1.e666666666666p200
+  },
+  { // Entry 46
+    -0x1.ccccccccccccc0p-1,
+    (int)0x1.92p7,
+    -0x1.cccccccccccccp200
+  },
+  { // Entry 47
+    -0x1.b3333333333320p-1,
+    (int)0x1.92p7,
+    -0x1.b333333333332p200
+  },
+  { // Entry 48
+    -0x1.99999999999980p-1,
+    (int)0x1.92p7,
+    -0x1.9999999999998p200
+  },
+  { // Entry 49
+    -0x1.7fffffffffffe0p-1,
+    (int)0x1.92p7,
+    -0x1.7fffffffffffep200
+  },
+  { // Entry 50
+    -0x1.66666666666640p-1,
+    (int)0x1.92p7,
+    -0x1.6666666666664p200
+  },
+  { // Entry 51
+    -0x1.4ccccccccccca0p-1,
+    (int)0x1.92p7,
+    -0x1.4cccccccccccap200
+  },
+  { // Entry 52
+    -0x1.333333333333p-1,
+    (int)0x1.92p7,
+    -0x1.3333333333330p200
+  },
+  { // Entry 53
+    -0x1.19999999999960p-1,
+    (int)0x1.92p7,
+    -0x1.1999999999996p200
+  },
+  { // Entry 54
+    -0x1.p-1,
+    (int)0x1.92p7,
+    -0x1.0p200
+  },
+  { // Entry 55
+    -0x1.p-1,
+    (int)0x1.f5p9,
+    -0x1.0p1001
+  },
+  { // Entry 56
+    -0x1.e6666666666660p-1,
+    (int)0x1.f480p9,
+    -0x1.e666666666666p1000
+  },
+  { // Entry 57
+    -0x1.ccccccccccccc0p-1,
+    (int)0x1.f480p9,
+    -0x1.cccccccccccccp1000
+  },
+  { // Entry 58
+    -0x1.b3333333333320p-1,
+    (int)0x1.f480p9,
+    -0x1.b333333333332p1000
+  },
+  { // Entry 59
+    -0x1.99999999999980p-1,
+    (int)0x1.f480p9,
+    -0x1.9999999999998p1000
+  },
+  { // Entry 60
+    -0x1.7fffffffffffe0p-1,
+    (int)0x1.f480p9,
+    -0x1.7fffffffffffep1000
+  },
+  { // Entry 61
+    -0x1.66666666666640p-1,
+    (int)0x1.f480p9,
+    -0x1.6666666666664p1000
+  },
+  { // Entry 62
+    -0x1.4ccccccccccca0p-1,
+    (int)0x1.f480p9,
+    -0x1.4cccccccccccap1000
+  },
+  { // Entry 63
+    -0x1.333333333333p-1,
+    (int)0x1.f480p9,
+    -0x1.3333333333330p1000
+  },
+  { // Entry 64
+    -0x1.19999999999960p-1,
+    (int)0x1.f480p9,
+    -0x1.1999999999996p1000
+  },
+  { // Entry 65
+    -0x1.p-1,
+    (int)0x1.f480p9,
+    -0x1.0p1000
+  },
+  { // Entry 66
+    0x1.p-1,
+    (int)0x1.98p5,
+    0x1.0p50
+  },
+  { // Entry 67
+    0x1.199999999999a0p-1,
+    (int)0x1.98p5,
+    0x1.199999999999ap50
+  },
+  { // Entry 68
+    0x1.33333333333340p-1,
+    (int)0x1.98p5,
+    0x1.3333333333334p50
+  },
+  { // Entry 69
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.98p5,
+    0x1.4cccccccccccep50
+  },
+  { // Entry 70
+    0x1.66666666666680p-1,
+    (int)0x1.98p5,
+    0x1.6666666666668p50
+  },
+  { // Entry 71
+    0x1.80000000000020p-1,
+    (int)0x1.98p5,
+    0x1.8000000000002p50
+  },
+  { // Entry 72
+    0x1.999999999999c0p-1,
+    (int)0x1.98p5,
+    0x1.999999999999cp50
+  },
+  { // Entry 73
+    0x1.b3333333333360p-1,
+    (int)0x1.98p5,
+    0x1.b333333333336p50
+  },
+  { // Entry 74
+    0x1.cccccccccccdp-1,
+    (int)0x1.98p5,
+    0x1.cccccccccccd0p50
+  },
+  { // Entry 75
+    0x1.e66666666666a0p-1,
+    (int)0x1.98p5,
+    0x1.e66666666666ap50
+  },
+  { // Entry 76
+    0x1.p-1,
+    (int)0x1.a0p5,
+    0x1.0p51
+  },
+  { // Entry 77
+    0x1.p-1,
+    (int)0x1.a0p5,
+    0x1.0p51
+  },
+  { // Entry 78
+    0x1.199999999999a0p-1,
+    (int)0x1.a0p5,
+    0x1.199999999999ap51
+  },
+  { // Entry 79
+    0x1.33333333333340p-1,
+    (int)0x1.a0p5,
+    0x1.3333333333334p51
+  },
+  { // Entry 80
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.a0p5,
+    0x1.4cccccccccccep51
+  },
+  { // Entry 81
+    0x1.66666666666680p-1,
+    (int)0x1.a0p5,
+    0x1.6666666666668p51
+  },
+  { // Entry 82
+    0x1.80000000000020p-1,
+    (int)0x1.a0p5,
+    0x1.8000000000002p51
+  },
+  { // Entry 83
+    0x1.999999999999c0p-1,
+    (int)0x1.a0p5,
+    0x1.999999999999cp51
+  },
+  { // Entry 84
+    0x1.b3333333333360p-1,
+    (int)0x1.a0p5,
+    0x1.b333333333336p51
+  },
+  { // Entry 85
+    0x1.cccccccccccdp-1,
+    (int)0x1.a0p5,
+    0x1.cccccccccccd0p51
+  },
+  { // Entry 86
+    0x1.e66666666666a0p-1,
+    (int)0x1.a0p5,
+    0x1.e66666666666ap51
+  },
+  { // Entry 87
+    0x1.p-1,
+    (int)0x1.a8p5,
+    0x1.0p52
+  },
+  { // Entry 88
+    0x1.p-1,
+    (int)0x1.a8p5,
+    0x1.0p52
+  },
+  { // Entry 89
+    0x1.199999999999a0p-1,
+    (int)0x1.a8p5,
+    0x1.199999999999ap52
+  },
+  { // Entry 90
+    0x1.33333333333340p-1,
+    (int)0x1.a8p5,
+    0x1.3333333333334p52
+  },
+  { // Entry 91
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.a8p5,
+    0x1.4cccccccccccep52
+  },
+  { // Entry 92
+    0x1.66666666666680p-1,
+    (int)0x1.a8p5,
+    0x1.6666666666668p52
+  },
+  { // Entry 93
+    0x1.80000000000020p-1,
+    (int)0x1.a8p5,
+    0x1.8000000000002p52
+  },
+  { // Entry 94
+    0x1.999999999999c0p-1,
+    (int)0x1.a8p5,
+    0x1.999999999999cp52
+  },
+  { // Entry 95
+    0x1.b3333333333360p-1,
+    (int)0x1.a8p5,
+    0x1.b333333333336p52
+  },
+  { // Entry 96
+    0x1.cccccccccccdp-1,
+    (int)0x1.a8p5,
+    0x1.cccccccccccd0p52
+  },
+  { // Entry 97
+    0x1.e66666666666a0p-1,
+    (int)0x1.a8p5,
+    0x1.e66666666666ap52
+  },
+  { // Entry 98
+    0x1.p-1,
+    (int)0x1.b0p5,
+    0x1.0p53
+  },
+  { // Entry 99
+    0x1.p-1,
+    (int)0x1.b0p5,
+    0x1.0p53
+  },
+  { // Entry 100
+    0x1.199999999999a0p-1,
+    (int)0x1.b0p5,
+    0x1.199999999999ap53
+  },
+  { // Entry 101
+    0x1.33333333333340p-1,
+    (int)0x1.b0p5,
+    0x1.3333333333334p53
+  },
+  { // Entry 102
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.b0p5,
+    0x1.4cccccccccccep53
+  },
+  { // Entry 103
+    0x1.66666666666680p-1,
+    (int)0x1.b0p5,
+    0x1.6666666666668p53
+  },
+  { // Entry 104
+    0x1.80000000000020p-1,
+    (int)0x1.b0p5,
+    0x1.8000000000002p53
+  },
+  { // Entry 105
+    0x1.999999999999c0p-1,
+    (int)0x1.b0p5,
+    0x1.999999999999cp53
+  },
+  { // Entry 106
+    0x1.b3333333333360p-1,
+    (int)0x1.b0p5,
+    0x1.b333333333336p53
+  },
+  { // Entry 107
+    0x1.cccccccccccdp-1,
+    (int)0x1.b0p5,
+    0x1.cccccccccccd0p53
+  },
+  { // Entry 108
+    0x1.e66666666666a0p-1,
+    (int)0x1.b0p5,
+    0x1.e66666666666ap53
+  },
+  { // Entry 109
+    0x1.p-1,
+    (int)0x1.b8p5,
+    0x1.0p54
+  },
+  { // Entry 110
+    0x1.p-1,
+    (int)-0x1.0040p10,
+    0x1.0p-1026
+  },
+  { // Entry 111
+    0x1.d3333333333340p-1,
+    (int)-0x1.ff80p9,
+    0x1.d333333333334p-1024
+  },
+  { // Entry 112
+    0x1.b3333333333340p-1,
+    (int)-0x1.ffp9,
+    0x1.b333333333334p-1023
+  },
+  { // Entry 113
+    0x1.3e666666666670p-1,
+    (int)-0x1.fe80p9,
+    0x1.3e66666666667p-1022
+  },
+  { // Entry 114
+    0x1.a3333333333340p-1,
+    (int)-0x1.fe80p9,
+    0x1.a333333333334p-1022
+  },
+  { // Entry 115
+    0x1.04p-1,
+    (int)-0x1.fep9,
+    0x1.040p-1021
+  },
+  { // Entry 116
+    0x1.36666666666660p-1,
+    (int)-0x1.fep9,
+    0x1.3666666666666p-1021
+  },
+  { // Entry 117
+    0x1.68ccccccccccc0p-1,
+    (int)-0x1.fep9,
+    0x1.68cccccccccccp-1021
+  },
+  { // Entry 118
+    0x1.9b333333333320p-1,
+    (int)-0x1.fep9,
+    0x1.9b33333333332p-1021
+  },
+  { // Entry 119
+    0x1.cd999999999980p-1,
+    (int)-0x1.fep9,
+    0x1.cd99999999998p-1021
+  },
+  { // Entry 120
+    0x1.ffffffffffffe0p-1,
+    (int)-0x1.fep9,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 121
+    0x1.fffffffffffff0p-1,
+    (int)0x1.98p5,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 122
+    0x1.p-1,
+    (int)0x1.a0p5,
+    0x1.0p51
+  },
+  { // Entry 123
+    0x1.00000000000010p-1,
+    (int)0x1.a0p5,
+    0x1.0000000000001p51
+  },
+  { // Entry 124
+    0x1.fffffffffffff0p-1,
+    (int)0x1.a0p5,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 125
+    0x1.p-1,
+    (int)0x1.a8p5,
+    0x1.0p52
+  },
+  { // Entry 126
+    0x1.00000000000010p-1,
+    (int)0x1.a8p5,
+    0x1.0000000000001p52
+  },
+  { // Entry 127
+    0x1.fffffffffffff0p-1,
+    (int)0x1.a8p5,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 128
+    0x1.p-1,
+    (int)0x1.b0p5,
+    0x1.0p53
+  },
+  { // Entry 129
+    0x1.00000000000010p-1,
+    (int)0x1.b0p5,
+    0x1.0000000000001p53
+  },
+  { // Entry 130
+    -0x1.00000000000010p-1,
+    (int)0x1.a0p5,
+    -0x1.0000000000001p51
+  },
+  { // Entry 131
+    -0x1.p-1,
+    (int)0x1.a0p5,
+    -0x1.0p51
+  },
+  { // Entry 132
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.98p5,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 133
+    -0x1.00000000000010p-1,
+    (int)0x1.a8p5,
+    -0x1.0000000000001p52
+  },
+  { // Entry 134
+    -0x1.p-1,
+    (int)0x1.a8p5,
+    -0x1.0p52
+  },
+  { // Entry 135
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.a0p5,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 136
+    -0x1.00000000000010p-1,
+    (int)0x1.b0p5,
+    -0x1.0000000000001p53
+  },
+  { // Entry 137
+    -0x1.p-1,
+    (int)0x1.b0p5,
+    -0x1.0p53
+  },
+  { // Entry 138
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.a8p5,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 139
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.80p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 142
+    0x1.p-1,
+    (int)-0x1.40p2,
+    0x1.0p-6
+  },
+  { // Entry 143
+    0x1.00000000000010p-1,
+    (int)-0x1.40p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 144
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.40p2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 145
+    0x1.p-1,
+    (int)-0x1.p2,
+    0x1.0p-5
+  },
+  { // Entry 146
+    0x1.00000000000010p-1,
+    (int)-0x1.p2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 147
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.p2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 148
+    0x1.p-1,
+    (int)-0x1.80p1,
+    0x1.0p-4
+  },
+  { // Entry 149
+    0x1.00000000000010p-1,
+    (int)-0x1.80p1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 150
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.80p1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 151
+    0x1.p-1,
+    (int)-0x1.p1,
+    0x1.0p-3
+  },
+  { // Entry 152
+    0x1.00000000000010p-1,
+    (int)-0x1.p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 153
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.p1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 154
+    0x1.p-1,
+    (int)-0x1.p0,
+    0x1.0p-2
+  },
+  { // Entry 155
+    0x1.00000000000010p-1,
+    (int)-0x1.p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 156
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 157
+    0x1.p-1,
+    (int)0.0,
+    0x1.0p-1
+  },
+  { // Entry 158
+    0x1.00000000000010p-1,
+    (int)0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 159
+    -0x1.p-1,
+    (int)-0x1.0c40p10,
+    -0x1.0p-1074
+  },
+  { // Entry 160
+    -0.0,
+    (int)0.0,
+    -0.0
+  },
+  { // Entry 161
+    0x1.p-1,
+    (int)-0x1.0c40p10,
+    0x1.0p-1074
+  },
+  { // Entry 162
+    0x1.fffffffffffff0p-1,
+    (int)0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.00000000000010p-1,
+    (int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 166
+    0x1.p-1,
+    (int)0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 167
+    0x1.00000000000010p-1,
+    (int)0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 168
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 169
+    0x1.p-1,
+    (int)0x1.80p1,
+    0x1.0p2
+  },
+  { // Entry 170
+    0x1.00000000000010p-1,
+    (int)0x1.80p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 171
+    0x1.fffffffffffff0p-1,
+    (int)0x1.80p1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 172
+    0x1.p-1,
+    (int)0x1.p2,
+    0x1.0p3
+  },
+  { // Entry 173
+    0x1.00000000000010p-1,
+    (int)0x1.p2,
+    0x1.0000000000001p3
+  },
+  { // Entry 174
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p2,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 175
+    0x1.p-1,
+    (int)0x1.40p2,
+    0x1.0p4
+  },
+  { // Entry 176
+    0x1.00000000000010p-1,
+    (int)0x1.40p2,
+    0x1.0000000000001p4
+  },
+  { // Entry 177
+    0x1.fffffffffffff0p-1,
+    (int)0x1.40p2,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 178
+    0x1.p-1,
+    (int)0x1.80p2,
+    0x1.0p5
+  },
+  { // Entry 179
+    0x1.00000000000010p-1,
+    (int)0x1.80p2,
+    0x1.0000000000001p5
+  },
+  { // Entry 180
+    0x1.fffffffffffff0p-1,
+    (int)0x1.80p2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 181
+    0x1.p-1,
+    (int)0x1.c0p2,
+    0x1.0p6
+  },
+  { // Entry 182
+    0x1.00000000000010p-1,
+    (int)0x1.c0p2,
+    0x1.0000000000001p6
+  },
+  { // Entry 183
+    0x1.fffffffffffff0p-1,
+    (int)0x1.c0p2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 184
+    0x1.p-1,
+    (int)0x1.p3,
+    0x1.0p7
+  },
+  { // Entry 185
+    0x1.00000000000010p-1,
+    (int)0x1.p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 186
+    HUGE_VAL,
+    (int)0,
+    HUGE_VAL
+  },
+  { // Entry 187
+    -HUGE_VAL,
+    (int)0,
+    -HUGE_VAL
+  },
+  { // Entry 188
+    0.0,
+    (int)0.0,
+    0.0
+  },
+  { // Entry 189
+    -0.0,
+    (int)0.0,
+    -0.0
+  },
+  { // Entry 190
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    0x1.ffffffffffffe0p-1,
+    (int)0x1.p10,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    -0x1.ffffffffffffe0p-1,
+    (int)0x1.p10,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 194
+    0x1.921fb54442d180p-1,
+    (int)0x1.p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 195
+    -0x1.921fb54442d180p-1,
+    (int)0x1.p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 196
+    0x1.921fb54442d180p-1,
+    (int)0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 197
+    -0x1.921fb54442d180p-1,
+    (int)0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 198
+    0x1.00000000000010p-1,
+    (int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 199
+    -0x1.00000000000010p-1,
+    (int)0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 200
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 201
+    -0x1.p-1,
+    (int)0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 202
+    0x1.fffffffffffff0p-1,
+    (int)0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p-1,
+    (int)0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 204
+    0x1.921fb54442d180p-1,
+    (int)0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 205
+    -0x1.921fb54442d180p-1,
+    (int)0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 206
+    0x1.00000000000010p-1,
+    (int)-0x1.fe80p9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 207
+    -0x1.00000000000010p-1,
+    (int)-0x1.fe80p9,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 208
+    0x1.p-1,
+    (int)-0x1.fe80p9,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    -0x1.p-1,
+    (int)-0x1.fe80p9,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    0x1.ffffffffffffe0p-1,
+    (int)-0x1.ffp9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 211
+    -0x1.ffffffffffffe0p-1,
+    (int)-0x1.ffp9,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    0x1.ffffffffffffc0p-1,
+    (int)-0x1.ffp9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 213
+    -0x1.ffffffffffffc0p-1,
+    (int)-0x1.ffp9,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 214
+    0x1.p-1,
+    (int)-0x1.0cp10,
+    0x1.0p-1073
+  },
+  { // Entry 215
+    -0x1.p-1,
+    (int)-0x1.0cp10,
+    -0x1.0p-1073
+  },
+  { // Entry 216
+    0x1.p-1,
+    (int)-0x1.0c40p10,
+    0x1.0p-1074
+  },
+  { // Entry 217
+    -0x1.p-1,
+    (int)-0x1.0c40p10,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/frexpf_intel_data.h b/tests/math_data/frexpf_intel_data.h
new file mode 100644
index 0000000..dd6ba7d
--- /dev/null
+++ b/tests/math_data/frexpf_intel_data.h
@@ -0,0 +1,888 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_int_1_t<float, float> g_frexpf_intel_data[] = {
+  { // Entry 0
+    0x1.p-1,
+    (int)0x1.94p6,
+    0x1.p100
+  },
+  { // Entry 1
+    0x1.19999ap-1,
+    (int)0x1.94p6,
+    0x1.19999ap100
+  },
+  { // Entry 2
+    0x1.333334p-1,
+    (int)0x1.94p6,
+    0x1.333334p100
+  },
+  { // Entry 3
+    0x1.4ccccep-1,
+    (int)0x1.94p6,
+    0x1.4ccccep100
+  },
+  { // Entry 4
+    0x1.666668p-1,
+    (int)0x1.94p6,
+    0x1.666668p100
+  },
+  { // Entry 5
+    0x1.800002p-1,
+    (int)0x1.94p6,
+    0x1.800002p100
+  },
+  { // Entry 6
+    0x1.99999cp-1,
+    (int)0x1.94p6,
+    0x1.99999cp100
+  },
+  { // Entry 7
+    0x1.b33336p-1,
+    (int)0x1.94p6,
+    0x1.b33336p100
+  },
+  { // Entry 8
+    0x1.ccccd0p-1,
+    (int)0x1.94p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 9
+    0x1.e6666ap-1,
+    (int)0x1.94p6,
+    0x1.e6666ap100
+  },
+  { // Entry 10
+    0x1.p-1,
+    (int)0x1.98p6,
+    0x1.p101
+  },
+  { // Entry 11
+    -0x1.p-1,
+    (int)0x1.98p6,
+    -0x1.p101
+  },
+  { // Entry 12
+    -0x1.e66666p-1,
+    (int)0x1.94p6,
+    -0x1.e66666p100
+  },
+  { // Entry 13
+    -0x1.ccccccp-1,
+    (int)0x1.94p6,
+    -0x1.ccccccp100
+  },
+  { // Entry 14
+    -0x1.b33332p-1,
+    (int)0x1.94p6,
+    -0x1.b33332p100
+  },
+  { // Entry 15
+    -0x1.999998p-1,
+    (int)0x1.94p6,
+    -0x1.999998p100
+  },
+  { // Entry 16
+    -0x1.7ffffep-1,
+    (int)0x1.94p6,
+    -0x1.7ffffep100
+  },
+  { // Entry 17
+    -0x1.666664p-1,
+    (int)0x1.94p6,
+    -0x1.666664p100
+  },
+  { // Entry 18
+    -0x1.4ccccap-1,
+    (int)0x1.94p6,
+    -0x1.4ccccap100
+  },
+  { // Entry 19
+    -0x1.333330p-1,
+    (int)0x1.94p6,
+    -0x1.333330p100
+  },
+  { // Entry 20
+    -0x1.199996p-1,
+    (int)0x1.94p6,
+    -0x1.199996p100
+  },
+  { // Entry 21
+    -0x1.p-1,
+    (int)0x1.94p6,
+    -0x1.p100
+  },
+  { // Entry 22
+    0x1.p-1,
+    (int)0x1.60p4,
+    0x1.p21
+  },
+  { // Entry 23
+    0x1.19999ap-1,
+    (int)0x1.60p4,
+    0x1.19999ap21
+  },
+  { // Entry 24
+    0x1.333334p-1,
+    (int)0x1.60p4,
+    0x1.333334p21
+  },
+  { // Entry 25
+    0x1.4ccccep-1,
+    (int)0x1.60p4,
+    0x1.4ccccep21
+  },
+  { // Entry 26
+    0x1.666668p-1,
+    (int)0x1.60p4,
+    0x1.666668p21
+  },
+  { // Entry 27
+    0x1.800002p-1,
+    (int)0x1.60p4,
+    0x1.800002p21
+  },
+  { // Entry 28
+    0x1.99999cp-1,
+    (int)0x1.60p4,
+    0x1.99999cp21
+  },
+  { // Entry 29
+    0x1.b33336p-1,
+    (int)0x1.60p4,
+    0x1.b33336p21
+  },
+  { // Entry 30
+    0x1.ccccd0p-1,
+    (int)0x1.60p4,
+    0x1.ccccd0p21
+  },
+  { // Entry 31
+    0x1.e6666ap-1,
+    (int)0x1.60p4,
+    0x1.e6666ap21
+  },
+  { // Entry 32
+    0x1.p-1,
+    (int)0x1.70p4,
+    0x1.p22
+  },
+  { // Entry 33
+    0x1.p-1,
+    (int)0x1.70p4,
+    0x1.p22
+  },
+  { // Entry 34
+    0x1.19999ap-1,
+    (int)0x1.70p4,
+    0x1.19999ap22
+  },
+  { // Entry 35
+    0x1.333334p-1,
+    (int)0x1.70p4,
+    0x1.333334p22
+  },
+  { // Entry 36
+    0x1.4ccccep-1,
+    (int)0x1.70p4,
+    0x1.4ccccep22
+  },
+  { // Entry 37
+    0x1.666668p-1,
+    (int)0x1.70p4,
+    0x1.666668p22
+  },
+  { // Entry 38
+    0x1.800002p-1,
+    (int)0x1.70p4,
+    0x1.800002p22
+  },
+  { // Entry 39
+    0x1.99999cp-1,
+    (int)0x1.70p4,
+    0x1.99999cp22
+  },
+  { // Entry 40
+    0x1.b33336p-1,
+    (int)0x1.70p4,
+    0x1.b33336p22
+  },
+  { // Entry 41
+    0x1.ccccd0p-1,
+    (int)0x1.70p4,
+    0x1.ccccd0p22
+  },
+  { // Entry 42
+    0x1.e6666ap-1,
+    (int)0x1.70p4,
+    0x1.e6666ap22
+  },
+  { // Entry 43
+    0x1.p-1,
+    (int)0x1.80p4,
+    0x1.p23
+  },
+  { // Entry 44
+    0x1.p-1,
+    (int)0x1.80p4,
+    0x1.p23
+  },
+  { // Entry 45
+    0x1.19999ap-1,
+    (int)0x1.80p4,
+    0x1.19999ap23
+  },
+  { // Entry 46
+    0x1.333334p-1,
+    (int)0x1.80p4,
+    0x1.333334p23
+  },
+  { // Entry 47
+    0x1.4ccccep-1,
+    (int)0x1.80p4,
+    0x1.4ccccep23
+  },
+  { // Entry 48
+    0x1.666668p-1,
+    (int)0x1.80p4,
+    0x1.666668p23
+  },
+  { // Entry 49
+    0x1.800002p-1,
+    (int)0x1.80p4,
+    0x1.800002p23
+  },
+  { // Entry 50
+    0x1.99999cp-1,
+    (int)0x1.80p4,
+    0x1.99999cp23
+  },
+  { // Entry 51
+    0x1.b33336p-1,
+    (int)0x1.80p4,
+    0x1.b33336p23
+  },
+  { // Entry 52
+    0x1.ccccd0p-1,
+    (int)0x1.80p4,
+    0x1.ccccd0p23
+  },
+  { // Entry 53
+    0x1.e6666ap-1,
+    (int)0x1.80p4,
+    0x1.e6666ap23
+  },
+  { // Entry 54
+    0x1.p-1,
+    (int)0x1.90p4,
+    0x1.p24
+  },
+  { // Entry 55
+    0x1.p-1,
+    (int)0x1.90p4,
+    0x1.p24
+  },
+  { // Entry 56
+    0x1.19999ap-1,
+    (int)0x1.90p4,
+    0x1.19999ap24
+  },
+  { // Entry 57
+    0x1.333334p-1,
+    (int)0x1.90p4,
+    0x1.333334p24
+  },
+  { // Entry 58
+    0x1.4ccccep-1,
+    (int)0x1.90p4,
+    0x1.4ccccep24
+  },
+  { // Entry 59
+    0x1.666668p-1,
+    (int)0x1.90p4,
+    0x1.666668p24
+  },
+  { // Entry 60
+    0x1.800002p-1,
+    (int)0x1.90p4,
+    0x1.800002p24
+  },
+  { // Entry 61
+    0x1.99999cp-1,
+    (int)0x1.90p4,
+    0x1.99999cp24
+  },
+  { // Entry 62
+    0x1.b33336p-1,
+    (int)0x1.90p4,
+    0x1.b33336p24
+  },
+  { // Entry 63
+    0x1.ccccd0p-1,
+    (int)0x1.90p4,
+    0x1.ccccd0p24
+  },
+  { // Entry 64
+    0x1.e6666ap-1,
+    (int)0x1.90p4,
+    0x1.e6666ap24
+  },
+  { // Entry 65
+    0x1.p-1,
+    (int)0x1.a0p4,
+    0x1.p25
+  },
+  { // Entry 66
+    0x1.p-1,
+    (int)-0x1.02p7,
+    0x1.p-130
+  },
+  { // Entry 67
+    0x1.d33330p-1,
+    (int)-0x1.fcp6,
+    0x1.d33330p-128
+  },
+  { // Entry 68
+    0x1.b33330p-1,
+    (int)-0x1.f8p6,
+    0x1.b33330p-127
+  },
+  { // Entry 69
+    0x1.3e6664p-1,
+    (int)-0x1.f4p6,
+    0x1.3e6664p-126
+  },
+  { // Entry 70
+    0x1.a33330p-1,
+    (int)-0x1.f4p6,
+    0x1.a33330p-126
+  },
+  { // Entry 71
+    0x1.03fffep-1,
+    (int)-0x1.f0p6,
+    0x1.03fffep-125
+  },
+  { // Entry 72
+    0x1.366664p-1,
+    (int)-0x1.f0p6,
+    0x1.366664p-125
+  },
+  { // Entry 73
+    0x1.68cccap-1,
+    (int)-0x1.f0p6,
+    0x1.68cccap-125
+  },
+  { // Entry 74
+    0x1.9b3330p-1,
+    (int)-0x1.f0p6,
+    0x1.9b3330p-125
+  },
+  { // Entry 75
+    0x1.cd9996p-1,
+    (int)-0x1.f0p6,
+    0x1.cd9996p-125
+  },
+  { // Entry 76
+    0x1.fffffcp-1,
+    (int)-0x1.f0p6,
+    0x1.fffffcp-125
+  },
+  { // Entry 77
+    0x1.fffffep-1,
+    (int)0x1.60p4,
+    0x1.fffffep21
+  },
+  { // Entry 78
+    0x1.p-1,
+    (int)0x1.70p4,
+    0x1.p22
+  },
+  { // Entry 79
+    0x1.000002p-1,
+    (int)0x1.70p4,
+    0x1.000002p22
+  },
+  { // Entry 80
+    0x1.fffffep-1,
+    (int)0x1.70p4,
+    0x1.fffffep22
+  },
+  { // Entry 81
+    0x1.p-1,
+    (int)0x1.80p4,
+    0x1.p23
+  },
+  { // Entry 82
+    0x1.000002p-1,
+    (int)0x1.80p4,
+    0x1.000002p23
+  },
+  { // Entry 83
+    0x1.fffffep-1,
+    (int)0x1.80p4,
+    0x1.fffffep23
+  },
+  { // Entry 84
+    0x1.p-1,
+    (int)0x1.90p4,
+    0x1.p24
+  },
+  { // Entry 85
+    0x1.000002p-1,
+    (int)0x1.90p4,
+    0x1.000002p24
+  },
+  { // Entry 86
+    -0x1.000002p-1,
+    (int)0x1.70p4,
+    -0x1.000002p22
+  },
+  { // Entry 87
+    -0x1.p-1,
+    (int)0x1.70p4,
+    -0x1.p22
+  },
+  { // Entry 88
+    -0x1.fffffep-1,
+    (int)0x1.60p4,
+    -0x1.fffffep21
+  },
+  { // Entry 89
+    -0x1.000002p-1,
+    (int)0x1.80p4,
+    -0x1.000002p23
+  },
+  { // Entry 90
+    -0x1.p-1,
+    (int)0x1.80p4,
+    -0x1.p23
+  },
+  { // Entry 91
+    -0x1.fffffep-1,
+    (int)0x1.70p4,
+    -0x1.fffffep22
+  },
+  { // Entry 92
+    -0x1.000002p-1,
+    (int)0x1.90p4,
+    -0x1.000002p24
+  },
+  { // Entry 93
+    -0x1.p-1,
+    (int)0x1.90p4,
+    -0x1.p24
+  },
+  { // Entry 94
+    -0x1.fffffep-1,
+    (int)0x1.80p4,
+    -0x1.fffffep23
+  },
+  { // Entry 95
+    0x1.fffffep-1,
+    (int)0x1.p7,
+    0x1.fffffep127
+  },
+  { // Entry 96
+    -0x1.fffffep-1,
+    (int)0x1.p7,
+    -0x1.fffffep127
+  },
+  { // Entry 97
+    0x1.fffffep-1,
+    (int)-0x1.80p2,
+    0x1.fffffep-7
+  },
+  { // Entry 98
+    0x1.p-1,
+    (int)-0x1.40p2,
+    0x1.p-6
+  },
+  { // Entry 99
+    0x1.000002p-1,
+    (int)-0x1.40p2,
+    0x1.000002p-6
+  },
+  { // Entry 100
+    0x1.fffffep-1,
+    (int)-0x1.40p2,
+    0x1.fffffep-6
+  },
+  { // Entry 101
+    0x1.p-1,
+    (int)-0x1.p2,
+    0x1.p-5
+  },
+  { // Entry 102
+    0x1.000002p-1,
+    (int)-0x1.p2,
+    0x1.000002p-5
+  },
+  { // Entry 103
+    0x1.fffffep-1,
+    (int)-0x1.p2,
+    0x1.fffffep-5
+  },
+  { // Entry 104
+    0x1.p-1,
+    (int)-0x1.80p1,
+    0x1.p-4
+  },
+  { // Entry 105
+    0x1.000002p-1,
+    (int)-0x1.80p1,
+    0x1.000002p-4
+  },
+  { // Entry 106
+    0x1.fffffep-1,
+    (int)-0x1.80p1,
+    0x1.fffffep-4
+  },
+  { // Entry 107
+    0x1.p-1,
+    (int)-0x1.p1,
+    0x1.p-3
+  },
+  { // Entry 108
+    0x1.000002p-1,
+    (int)-0x1.p1,
+    0x1.000002p-3
+  },
+  { // Entry 109
+    0x1.fffffep-1,
+    (int)-0x1.p1,
+    0x1.fffffep-3
+  },
+  { // Entry 110
+    0x1.p-1,
+    (int)-0x1.p0,
+    0x1.p-2
+  },
+  { // Entry 111
+    0x1.000002p-1,
+    (int)-0x1.p0,
+    0x1.000002p-2
+  },
+  { // Entry 112
+    0x1.fffffep-1,
+    (int)-0x1.p0,
+    0x1.fffffep-2
+  },
+  { // Entry 113
+    0x1.p-1,
+    (int)0.0,
+    0x1.p-1
+  },
+  { // Entry 114
+    0x1.000002p-1,
+    (int)0.0,
+    0x1.000002p-1
+  },
+  { // Entry 115
+    -0x1.p-1,
+    (int)-0x1.28p7,
+    -0x1.p-149
+  },
+  { // Entry 116
+    0.0,
+    (int)0.0,
+    0.0
+  },
+  { // Entry 117
+    0x1.p-1,
+    (int)-0x1.28p7,
+    0x1.p-149
+  },
+  { // Entry 118
+    0x1.fffffep-1,
+    (int)0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 119
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 120
+    0x1.000002p-1,
+    (int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 121
+    0x1.fffffep-1,
+    (int)0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 122
+    0x1.p-1,
+    (int)0x1.p1,
+    0x1.p1
+  },
+  { // Entry 123
+    0x1.000002p-1,
+    (int)0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 124
+    0x1.fffffep-1,
+    (int)0x1.p1,
+    0x1.fffffep1
+  },
+  { // Entry 125
+    0x1.p-1,
+    (int)0x1.80p1,
+    0x1.p2
+  },
+  { // Entry 126
+    0x1.000002p-1,
+    (int)0x1.80p1,
+    0x1.000002p2
+  },
+  { // Entry 127
+    0x1.fffffep-1,
+    (int)0x1.80p1,
+    0x1.fffffep2
+  },
+  { // Entry 128
+    0x1.p-1,
+    (int)0x1.p2,
+    0x1.p3
+  },
+  { // Entry 129
+    0x1.000002p-1,
+    (int)0x1.p2,
+    0x1.000002p3
+  },
+  { // Entry 130
+    0x1.fffffep-1,
+    (int)0x1.p2,
+    0x1.fffffep3
+  },
+  { // Entry 131
+    0x1.p-1,
+    (int)0x1.40p2,
+    0x1.p4
+  },
+  { // Entry 132
+    0x1.000002p-1,
+    (int)0x1.40p2,
+    0x1.000002p4
+  },
+  { // Entry 133
+    0x1.fffffep-1,
+    (int)0x1.40p2,
+    0x1.fffffep4
+  },
+  { // Entry 134
+    0x1.p-1,
+    (int)0x1.80p2,
+    0x1.p5
+  },
+  { // Entry 135
+    0x1.000002p-1,
+    (int)0x1.80p2,
+    0x1.000002p5
+  },
+  { // Entry 136
+    0x1.fffffep-1,
+    (int)0x1.80p2,
+    0x1.fffffep5
+  },
+  { // Entry 137
+    0x1.p-1,
+    (int)0x1.c0p2,
+    0x1.p6
+  },
+  { // Entry 138
+    0x1.000002p-1,
+    (int)0x1.c0p2,
+    0x1.000002p6
+  },
+  { // Entry 139
+    0x1.fffffep-1,
+    (int)0x1.c0p2,
+    0x1.fffffep6
+  },
+  { // Entry 140
+    0x1.p-1,
+    (int)0x1.p3,
+    0x1.p7
+  },
+  { // Entry 141
+    0x1.000002p-1,
+    (int)0x1.p3,
+    0x1.000002p7
+  },
+  { // Entry 142
+    HUGE_VALF,
+    (int)0,
+    HUGE_VALF
+  },
+  { // Entry 143
+    -HUGE_VALF,
+    (int)0,
+    -HUGE_VALF
+  },
+  { // Entry 144
+    0.0,
+    (int)0.0,
+    0.0f
+  },
+  { // Entry 145
+    -0.0,
+    (int)0.0,
+    -0.0f
+  },
+  { // Entry 146
+    0x1.fffffep-1,
+    (int)0x1.p7,
+    0x1.fffffep127
+  },
+  { // Entry 147
+    -0x1.fffffep-1,
+    (int)0x1.p7,
+    -0x1.fffffep127
+  },
+  { // Entry 148
+    0x1.fffffcp-1,
+    (int)0x1.p7,
+    0x1.fffffcp127
+  },
+  { // Entry 149
+    -0x1.fffffcp-1,
+    (int)0x1.p7,
+    -0x1.fffffcp127
+  },
+  { // Entry 150
+    0x1.921fb6p-1,
+    (int)0x1.p1,
+    0x1.921fb6p1
+  },
+  { // Entry 151
+    -0x1.921fb6p-1,
+    (int)0x1.p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 152
+    0x1.921fb6p-1,
+    (int)0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 153
+    -0x1.921fb6p-1,
+    (int)0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 154
+    0x1.000002p-1,
+    (int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 155
+    -0x1.000002p-1,
+    (int)0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 156
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 157
+    -0x1.p-1,
+    (int)0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 158
+    0x1.fffffep-1,
+    (int)0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    -0x1.fffffep-1,
+    (int)0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 160
+    0x1.921fb6p-1,
+    (int)0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 161
+    -0x1.921fb6p-1,
+    (int)0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 162
+    0x1.000002p-1,
+    (int)-0x1.f4p6,
+    0x1.000002p-126
+  },
+  { // Entry 163
+    -0x1.000002p-1,
+    (int)-0x1.f4p6,
+    -0x1.000002p-126
+  },
+  { // Entry 164
+    0x1.p-1,
+    (int)-0x1.f4p6,
+    0x1.p-126
+  },
+  { // Entry 165
+    -0x1.p-1,
+    (int)-0x1.f4p6,
+    -0x1.p-126
+  },
+  { // Entry 166
+    0x1.fffffcp-1,
+    (int)-0x1.f8p6,
+    0x1.fffffcp-127
+  },
+  { // Entry 167
+    -0x1.fffffcp-1,
+    (int)-0x1.f8p6,
+    -0x1.fffffcp-127
+  },
+  { // Entry 168
+    0x1.fffff8p-1,
+    (int)-0x1.f8p6,
+    0x1.fffff8p-127
+  },
+  { // Entry 169
+    -0x1.fffff8p-1,
+    (int)-0x1.f8p6,
+    -0x1.fffff8p-127
+  },
+  { // Entry 170
+    0x1.p-1,
+    (int)-0x1.26p7,
+    0x1.p-148
+  },
+  { // Entry 171
+    -0x1.p-1,
+    (int)-0x1.26p7,
+    -0x1.p-148
+  },
+  { // Entry 172
+    0x1.p-1,
+    (int)-0x1.28p7,
+    0x1.p-149
+  },
+  { // Entry 173
+    -0x1.p-1,
+    (int)-0x1.28p7,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/hypot_intel_data.h b/tests/math_data/hypot_intel_data.h
new file mode 100644
index 0000000..41bfdde
--- /dev/null
+++ b/tests/math_data/hypot_intel_data.h
@@ -0,0 +1,2788 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_hypot_intel_data[] = {
+  { // Entry 0
+    0x1.74334f2872bf324a8b6c0ffaf2f4ee3dp0,
+    -0x1.0b2502b3f7656p0,
+    0x1.032a74c8e2bbdp0
+  },
+  { // Entry 1
+    0x1.21c9123e6cbbf812953910371e275dc7p3,
+    -0x1.21c9107b0e488p3,
+    0x1.ff77fffffffffp-9
+  },
+  { // Entry 2
+    0x1.ad09d0c85a9b738fbeb590492c45108fp-21,
+    -0x1.3db5af72d9074p-21,
+    0x1.2054976e47184p-21
+  },
+  { // Entry 3
+    0x1.6a1f7b584e052800e5d5eb2c842defa6p-1,
+    -0x1.47200db32f88cp-1,
+    -0x1.36a049ab1eee0p-2
+  },
+  { // Entry 4
+    0x1.893eff10a04aed61358d3d5b6481eebcp-425,
+    -0x1.5a9c9453941a0p-426,
+    -0x1.60ff7b7326510p-425
+  },
+  { // Entry 5
+    0x1.94c583ada5b5218962e6ed1568fead12p0,
+    -0x1.7ffffffffffffp0,
+    0x1.0000000000003p-1
+  },
+  { // Entry 6
+    0x1.97cfe6e25cd448cf5dbcb52213679796p-11,
+    -0x1.8e38e38e38e37p-11,
+    -0x1.5fad40a57eb38p-13
+  },
+  { // Entry 7
+    0x1.9e661829e5ee17ffba1d22ecf0580873p421,
+    -0x1.9897fbb0fa747p418,
+    0x1.9b3d45740c34cp421
+  },
+  { // Entry 8
+    0x1.c7653d4e9e6c77fe2eb3fc6720505db6p-11,
+    -0x1.bbbbbbbbbbbbcp-11,
+    -0x1.9999999999c33p-13
+  },
+  { // Entry 9
+    0x1.ddffe6e5a3a8384016ed35f115bc095ep-11,
+    -0x1.e9131abf0b717p-14,
+    0x1.da12f684bda24p-11
+  },
+  { // Entry 10
+    0x1.7158b50ca33488012d796eb6f1a7589bp0,
+    -0x1.f5723be0cafb4p-1,
+    0x1.0f35b6d1e4e0fp0
+  },
+  { // Entry 11
+    0x1.00007fffdffff7ffe2000dfff64007afp0,
+    -0x1.ffffffffffffdp-1,
+    0x1.ffffffffffffcp-9
+  },
+  { // Entry 12
+    0x1.fffffffep-1043,
+    0.0,
+    0x1.fffffffe0p-1043
+  },
+  { // Entry 13
+    0x1.199999999999a0p0,
+    0x1.0p-1074,
+    -0x1.199999999999ap0
+  },
+  { // Entry 14
+    0x1.aaaaaaaaaaaaa0p0,
+    0x1.0p-1074,
+    -0x1.aaaaaaaaaaaaap0
+  },
+  { // Entry 15
+    0x1.b87065d24cee52b080d32543ca9cfc19p-1,
+    0x1.0000000000001p-1,
+    -0x1.6666666666668p-1
+  },
+  { // Entry 16
+    0x1.43596ffaa74788558d1fbef5bc6654e5p0,
+    0x1.0000000000001p-2,
+    -0x1.3cf3cf3cf3cf4p0
+  },
+  { // Entry 17
+    0x1.4ccccccccccd08000000000000627627p-2,
+    0x1.0000000000001p-3,
+    -0x1.3333333333337p-2
+  },
+  { // Entry 18
+    0x1.801554bda99c72d8de8e8d0810523d56p0,
+    0x1.0000000000001p-5,
+    0x1.8000000000001p0
+  },
+  { // Entry 19
+    0x1.74b50ce2454308015045eece9494acfbp-3,
+    0x1.0000000000001p-7,
+    -0x1.745d1745d0e18p-3
+  },
+  { // Entry 20
+    0x1.28ff91ab72d727facf9be8fbd129e05ep-2,
+    0x1.0000000000080p-3,
+    0x1.0c0p-2
+  },
+  { // Entry 21
+    0x1.000033d5ab09e8017b9fe870280d1247p9,
+    0x1.0000000000aeep9,
+    0x1.45d1745d1745ep0
+  },
+  { // Entry 22
+    0x1.07e0f670c16e48e1e7c24e5939e31f55p-3,
+    0x1.00000009880p-3,
+    0x1.ffffff8cfffffp-6
+  },
+  { // Entry 23
+    0x1.b596b5878e25800001094dfd216cf693p-1,
+    0x1.00000040ed435p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 24
+    0x1.0008ffd80967981d0efdf34de42be658p-4,
+    0x1.0000007ffffdep-10,
+    0x1.0000fffffffffp-4
+  },
+  { // Entry 25
+    0x1.6a09e8e19116080994af0efbde159838p-20,
+    0x1.0000037ffffdfp-20,
+    0x1.00000000110p-20
+  },
+  { // Entry 26
+    0x1.00009ec452a8c81c490f9ba38768ce7cp-3,
+    0x1.0000043ffffdfp-3,
+    0x1.19453808ca296p-11
+  },
+  { // Entry 27
+    0x1.b879b2c3faae37fe5d8254c1a9443fd6p-1,
+    0x1.000fffffff6c8p-1,
+    -0x1.6666666666668p-1
+  },
+  { // Entry 28
+    0x1.6b9824a5d9fefc6fac3c06f2beba6d16p0,
+    0x1.001p0,
+    0x1.0222222222223p0
+  },
+  { // Entry 29
+    0x1.6b1dc233c08aacf04d42b3d293e12a49p0,
+    0x1.0016f5e74bfddp0,
+    -0x1.016eb68415ab1p0
+  },
+  { // Entry 30
+    0x1.778d27690518dd41bd73ad488f2a2174p-27,
+    0x1.00a436e9442ddp-27,
+    0x1.122dc42e12491p-27
+  },
+  { // Entry 31
+    0x1.6c9ed56d3e093800300f2c229b359a3dp0,
+    0x1.01b59372d3dp0,
+    -0x1.01f11caa0d8fap0
+  },
+  { // Entry 32
+    0x1.62e44823f6c828019d99f2ea6e42b44dp-1,
+    0x1.0624dd41fac87p-10,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 33
+    0x1.62e44823f6c9980000fc0f85b3c55a79p-1,
+    0x1.0624dd49c38c9p-10,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 34
+    0x1.086b948a12d8c800cf1808a10a5174d9p3,
+    0x1.086ac9804c16fp3,
+    0x1.47ae147ae1488p-5
+  },
+  { // Entry 35
+    0x1.74334f2872bf324a8b6c0ffaf2f4ee3dp0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 36
+    0x1.b174e26559df6801e67982110c79e921p0,
+    0x1.0dadec75407d1p0,
+    0x1.53594d6535950p0
+  },
+  { // Entry 37
+    0x1.0fa6ab587be3f81316d103dd56845189p2,
+    0x1.0dc27b7edad61p2,
+    -0x1.fffffffffffdfp-2
+  },
+  { // Entry 38
+    0x1.0e00000001e77800795b3317cdb8cf48p-1,
+    0x1.0e0p-1,
+    0x1.00880p-20
+  },
+  { // Entry 39
+    0x1.1e643a24dde918108702a958a34659bdp1,
+    0x1.17261d1fbe70fp1,
+    -0x1.0p-1
+  },
+  { // Entry 40
+    0x1.00009ec452a8c81c490f9ba38768ce7cp-3,
+    0x1.19453808ca296p-11,
+    0x1.0000043ffffdfp-3
+  },
+  { // Entry 41
+    0x1.1f7648cb9c2928102f301b4e2a6da7f8p3,
+    0x1.1f6fb7dbedf31p3,
+    -0x1.eb851eb851eb2p-4
+  },
+  { // Entry 42
+    0x1.3fc168b1ba65f7fefcba8c51c9dceebep1,
+    0x1.333333334955dp1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 43
+    0x1.d561dc6bbc69b7fffefd4eef36bb45cep-1,
+    0x1.33333336ffb33p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 44
+    0x1.b6d63492d208b7fe66769600852b12d8p7,
+    0x1.3845636425767p7,
+    0x1.34534564561d4p7
+  },
+  { // Entry 45
+    0x1.b6d63492cf6ddfff7a4bf179a9f2d6cap7,
+    0x1.3845636425776p7,
+    0x1.3453456452673p7
+  },
+  { // Entry 46
+    0x1.853a0d5122cef456b05a1510fbead643p6,
+    0x1.3bbd9e1fa27b4p6,
+    0x1.c7372b6a514bcp5
+  },
+  { // Entry 47
+    0x1.3fba0ae4ce08b810e8f56ddaf12a7f4fp3,
+    0x1.3e1f0f87c3dd1p3,
+    -0x1.fffffffffffdfp-1
+  },
+  { // Entry 48
+    0x1.b71be4215a53283d71f5b110a870e894p-11,
+    0x1.484e2afe0bbc6p-13,
+    -0x1.af5ebd7af5ec0p-11
+  },
+  { // Entry 49
+    0x1.56d07f9feb80d804781ae4305058b676p2,
+    0x1.550fe1779c5p2,
+    -0x1.14f2805f85d24p-1
+  },
+  { // Entry 50
+    0x1.a52df5c24c89489d50528533a7f35763p2,
+    0x1.5555555555556p0,
+    0x1.9c71c71c71c69p2
+  },
+  { // Entry 51
+    0x1.b993cc4482b447ff4f74030e8ba14870p-1,
+    0x1.57354071c6426p-3,
+    -0x1.b1293f6f53880p-1
+  },
+  { // Entry 52
+    0x1.a7e2abc57f0e380a70c24d675241f120p0,
+    0x1.5b2d96cb65bp0,
+    -0x1.e666666666664p-1
+  },
+  { // Entry 53
+    0x1.e44d26303c8e703260adac35beb0201ap421,
+    0x1.600ec23b7b61ep421,
+    -0x1.4c92148cef14ap421
+  },
+  { // Entry 54
+    0x1.f8611701969ccfffff045c3f99fe48f7p-1,
+    0x1.6666666dac2fap-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 55
+    0x1.6cc93c4d65368802345842af2282a5eap1,
+    0x1.6cc93a754133ep1,
+    0x1.257430139p-10
+  },
+  { // Entry 56
+    0x1.6cc93c4d653688025c9147b5b60441e9p1,
+    0x1.6cc93a754133ep1,
+    0x1.25743013900c8p-10
+  },
+  { // Entry 57
+    0x1.6cc93c4d653688025e2d2930daa313d5p1,
+    0x1.6cc93a754133ep1,
+    0x1.25743013900d0p-10
+  },
+  { // Entry 58
+    0x1.d488ac97053f37fbba277d07ac43cad5p-20,
+    0x1.7p-20,
+    0x1.220p-20
+  },
+  { // Entry 59
+    0x1.400000004cccc800052f1bc6a6c17e88p-1,
+    0x1.7ffffffffffffp-2,
+    0x1.000000006p-1
+  },
+  { // Entry 60
+    0x1.ffee8df9517ff7fe75600bb975e5ce61p0,
+    0x1.81792910a5db1p-1,
+    -0x1.da43b5dce0b18p0
+  },
+  { // Entry 61
+    0x1.9b0a5736513fc7ffab037ae75d04e99ap2,
+    0x1.88a4522914881p2,
+    0x1.e666666666667p0
+  },
+  { // Entry 62
+    0x1.a5fa08a755b5c900f2d5cc6751e1ecf9p2,
+    0x1.88cb3c9484e2ap0,
+    0x1.9a6449e59bb5dp2
+  },
+  { // Entry 63
+    0x1.8befefed027e87ff6c70308e205c2a19p6,
+    0x1.8beea4e1a0873p6,
+    -0x1.0p-1
+  },
+  { // Entry 64
+    0x1.96991a72bfd0100000868ffe3e831279p1,
+    0x1.8cccccce3bcbdp1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 65
+    0x1.bf7cd9d02c7e220c699cc834fdd4fb41p-4,
+    0x1.8ddf4152067fcp-4,
+    -0x1.999999999999ap-5
+  },
+  { // Entry 66
+    0x1.76e7ba8bc745280094a71daf10d4a68ep25,
+    0x1.97fe3896c80f0p2,
+    0x1.76e7ba8bc741bp25
+  },
+  { // Entry 67
+    0x1.0efacef2e4e81ffffefe587f1ae783b6p0,
+    0x1.999999a0c0a0bp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 68
+    0x1.715e867859a8580001048a1e9e9dff7cp-1,
+    0x1.999999b9ce793p-3,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 69
+    0x1.6690cd7c39fa4800010745dc1f901919p-1,
+    0x1.999999da8ed7ap-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 70
+    0x1.f65294baeb7788330decefa598e273d5p-11,
+    0x1.9dbcc48676f94p-15,
+    0x1.f5a814afd6a11p-11
+  },
+  { // Entry 71
+    0x1.c26cb730864d698c82db5769586bd519p0,
+    0x1.a2882f7660c18p-2,
+    0x1.b61a64501888ap0
+  },
+  { // Entry 72
+    0x1.209f4f2c5979e816bf99efe18e6f1cdap1,
+    0x1.b8f22f033c872p-3,
+    0x1.1f4db533bcddcp1
+  },
+  { // Entry 73
+    0x1.50225479d4b157fe785588557cc66cdep-10,
+    0x1.bd8caaaf99090p-11,
+    -0x1.f76b23986ff44p-11
+  },
+  { // Entry 74
+    0x1.060db00245bf781048c529e4efff0afbp25,
+    0x1.bffffffffffffp22,
+    0x1.0000027ffffdfp25
+  },
+  { // Entry 75
+    0x1.c8c25b45aba168f0187bb5c3abbc3d16p-11,
+    0x1.c06b09e919d94p-11,
+    -0x1.5b911048a3310p-13
+  },
+  { // Entry 76
+    0x1.f53b21b5c40249b92a9c223bae43323bp0,
+    0x1.c81e6f7fe3993p-2,
+    -0x1.e8167b6df2ee0p0
+  },
+  { // Entry 77
+    0x1.f5950f056e39e90cbaac1f89ab36b40ap2,
+    0x1.cba2e8ba2e8b7p0,
+    0x1.e83e0f83e0f76p2
+  },
+  { // Entry 78
+    0x1.ddffe6e5a3a8384016ed35f115bc095ep-11,
+    0x1.da12f684bda24p-11,
+    -0x1.e9131abf0b717p-14
+  },
+  { // Entry 79
+    0x1.7941bb05a39ca7ff5e4553b1fc4d7db9p-423,
+    0x1.f8d7bbd7ce920p-426,
+    -0x1.73f0fd4fd9fd0p-423
+  },
+  { // Entry 80
+    0x1.b13fad7cb7c50801dede1905f3f366a1p9,
+    0x1.f91b91b91b905p2,
+    0x1.b13b13b13b130p9
+  },
+  { // Entry 81
+    0x1.69fd85887947900071fbc08183b8ab23p0,
+    0x1.fcf76c540d958p-1,
+    -0x1.017098d82f95ep0
+  },
+  { // Entry 82
+    0x1.21c9123e6cbbf812953910371e275dc7p3,
+    0x1.ff77fffffffffp-9,
+    -0x1.21c9107b0e488p3
+  },
+  { // Entry 83
+    0x1.c66addfec91c411f38e2aacb6ea06a91p-3,
+    0x1.ffeffffffffffp-4,
+    -0x1.7777777777774p-3
+  },
+  { // Entry 84
+    0x1.4eb522b24186e8254574c77b5f914855p-1,
+    0x1.ffeffffffffffp-4,
+    0x1.488888888888ap-1
+  },
+  { // Entry 85
+    0x1.002caffe59b0a7feeda747a94b176ccap4,
+    0x1.ffeffffffffffp3,
+    -0x1.4888888888888p-1
+  },
+  { // Entry 86
+    0x1.fff28f6f00e797fec43eb25e08b861abp3,
+    0x1.ffeffffffffffp3,
+    -0x1.99999999a7508p-4
+  },
+  { // Entry 87
+    0x1.00000001fffff7fe0007f00400100ff6p20,
+    0x1.fffffbfffffffp4,
+    0x1.0p20
+  },
+  { // Entry 88
+    0x1.0082de91198ee8170bcff2900895b92ap2,
+    0x1.ffffffffffdffp-3,
+    0x1.0002fffffffdfp2
+  },
+  { // Entry 89
+    0x1.6a09e667f3c5125ab5042ba7be436cbbp-2,
+    0x1.ffffffffffff7p-3,
+    0x1.00000000000c0p-2
+  },
+  { // Entry 90
+    0x1.ffffffffffffb0p500,
+    0x1.ffffffffffffbp500,
+    0x1.ffffffffffffbp-1
+  },
+  { // Entry 91
+    0x1.333574eb66a002798d20bb2ca70862e4p-1,
+    0x1.ffffffffffffep-3,
+    0x1.1745d1745d177p-1
+  },
+  { // Entry 92
+    0x1.745d1745d17557ffffffffffc41ap-3,
+    0x1.ffffffffffffep-28,
+    0x1.745d1745d1750p-3
+  },
+  { // Entry 93
+    0x1.00000000000000007fffffffffffefffp1,
+    0x1.ffffffffffffep-32,
+    -0x1.0p1
+  },
+  { // Entry 94
+    0x1.7777777777780000015d1745d1745c6cp-4,
+    0x1.ffffffffffffep-40,
+    0x1.7777777777780p-4
+  },
+  { // Entry 95
+    0x1.01c5967e49cb581b1ce389659d8f68ecp2,
+    0x1.ffffffffffffep1,
+    -0x1.e2be2be2be2c3p-2
+  },
+  { // Entry 96
+    0x1.0058d424f448e820225d2e7a25abc0ebp4,
+    0x1.ffffffffffffep3,
+    -0x1.aaaaaaaaaaaa8p-1
+  },
+  { // Entry 97
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 98
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 99
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 100
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 101
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 102
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 104
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 105
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 107
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 108
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 109
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 110
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 111
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 112
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 113
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 114
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 115
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 116
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 117
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 118
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 119
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 120
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 121
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 122
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 123
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 124
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 125
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 126
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 127
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 128
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 129
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 130
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 131
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 132
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 133
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 134
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 135
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 136
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 137
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 138
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 139
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 140
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep3,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 141
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.0p0,
+    0x1.0p9
+  },
+  { // Entry 142
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 143
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.0p3,
+    0x1.0p9
+  },
+  { // Entry 144
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 145
+    0x1.p100,
+    0x1.0p0,
+    0x1.0p100
+  },
+  { // Entry 146
+    0x1.p101,
+    0x1.0p0,
+    0x1.0p101
+  },
+  { // Entry 147
+    0x1.p100,
+    0x1.0p3,
+    0x1.0p100
+  },
+  { // Entry 148
+    0x1.p101,
+    0x1.0p3,
+    0x1.0p101
+  },
+  { // Entry 149
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.0p9,
+    0x1.0p0
+  },
+  { // Entry 150
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.0p9,
+    0x1.0p3
+  },
+  { // Entry 151
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 152
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 153
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep9,
+    0x1.0p9,
+    0x1.0p9
+  },
+  { // Entry 154
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.0p9,
+    0x1.0p10
+  },
+  { // Entry 155
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.0p10,
+    0x1.0p9
+  },
+  { // Entry 156
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 157
+    0x1.p100,
+    0x1.0p9,
+    0x1.0p100
+  },
+  { // Entry 158
+    0x1.p101,
+    0x1.0p9,
+    0x1.0p101
+  },
+  { // Entry 159
+    0x1.p100,
+    0x1.0p10,
+    0x1.0p100
+  },
+  { // Entry 160
+    0x1.p101,
+    0x1.0p10,
+    0x1.0p101
+  },
+  { // Entry 161
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p0
+  },
+  { // Entry 162
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p3
+  },
+  { // Entry 163
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p3
+  },
+  { // Entry 165
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p9
+  },
+  { // Entry 166
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p10
+  },
+  { // Entry 167
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p9
+  },
+  { // Entry 168
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p10
+  },
+  { // Entry 169
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep100,
+    0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 170
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.0p100,
+    0x1.0p101
+  },
+  { // Entry 171
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.0p101,
+    0x1.0p100
+  },
+  { // Entry 172
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep101,
+    0x1.0p101,
+    0x1.0p101
+  },
+  { // Entry 173
+    0x1.ad5336963eefa83d75cf889be3a34d14p2,
+    0x1.7ffffffffffffp2,
+    0x1.7ffffffffffffp1
+  },
+  { // Entry 174
+    0x1.ad5336963eefabd15a8840999ed93d89p2,
+    0x1.7ffffffffffffp2,
+    0x1.8p1
+  },
+  { // Entry 175
+    0x1.ad5336963eefaf653f40f8975a2db59ep2,
+    0x1.7ffffffffffffp2,
+    0x1.8000000000001p1
+  },
+  { // Entry 176
+    0x1.ad5336963eefb68d08b26892d04d4378p2,
+    0x1.8p2,
+    0x1.7ffffffffffffp1
+  },
+  { // Entry 177
+    0x1.ad5336963eefba20ed6b20908b64ac4ep2,
+    0x1.8p2,
+    0x1.8p1
+  },
+  { // Entry 178
+    0x1.ad5336963eefbdb4d223d88e469a9cc3p2,
+    0x1.8p2,
+    0x1.8000000000001p1
+  },
+  { // Entry 179
+    0x1.ad5336963eefc4dc9b954889bd15c17dp2,
+    0x1.8000000000001p2,
+    0x1.7ffffffffffffp1
+  },
+  { // Entry 180
+    0x1.ad5336963eefc870804e0087780ea2b2p2,
+    0x1.8000000000001p2,
+    0x1.8p1
+  },
+  { // Entry 181
+    0x1.ad5336963eefcc046506b88533260b87p2,
+    0x1.8000000000001p2,
+    0x1.8000000000001p1
+  },
+  { // Entry 182
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 183
+    0x1.6a09e667f3bc9bc7762e14ef517466dep-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 184
+    0x1.6a09e667f3bca717c561548d37e9edb3p-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 185
+    0x1.6a09e667f3bcb2681494942b1eb9f701p-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 186
+    0x1.6a09e667f3bca717c561548d37e9edb3p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 187
+    0x1.6a09e667f3bcb2681494942b1e04f20ep-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 188
+    0x1.6a09e667f3bcbdb863c7d3c9047a78e3p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 189
+    0x1.6a09e667f3bcb2681494942b1eb9f701p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 190
+    0x1.6a09e667f3bcbdb863c7d3c9047a78e3p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 191
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 192
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 193
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p512,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511
+  },
+  { // Entry 194
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p512,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511
+  },
+  { // Entry 195
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p501,
+    0x1.fffffffffffffp500,
+    0x1.fffffffffffffp500
+  },
+  { // Entry 196
+    0x1.6a09e667f3bcc3608b617397f77caac1p501,
+    0x1.fffffffffffffp500,
+    0x1.0p501
+  },
+  { // Entry 197
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p501,
+    0x1.fffffffffffffp500,
+    0x1.0000000000001p501
+  },
+  { // Entry 198
+    0x1.6a09e667f3bcc3608b617397f77caac1p501,
+    0x1.0p501,
+    0x1.fffffffffffffp500
+  },
+  { // Entry 199
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep501,
+    0x1.0p501,
+    0x1.0p501
+  },
+  { // Entry 200
+    0x1.6a09e667f3bcd459022e5304d10b0412p501,
+    0x1.0p501,
+    0x1.0000000000001p501
+  },
+  { // Entry 201
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p501,
+    0x1.0000000000001p501,
+    0x1.fffffffffffffp500
+  },
+  { // Entry 202
+    0x1.6a09e667f3bcd459022e5304d10b0412p501,
+    0x1.0000000000001p501,
+    0x1.0p501
+  },
+  { // Entry 203
+    0x1.6a09e667f3bcdfa9516192a2b726086dp501,
+    0x1.0000000000001p501,
+    0x1.0000000000001p501
+  },
+  { // Entry 204
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-501,
+    0x1.fffffffffffffp-502,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 205
+    0x1.6a09e667f3bcc3608b617397f77caac1p-501,
+    0x1.fffffffffffffp-502,
+    0x1.0p-501
+  },
+  { // Entry 206
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-501,
+    0x1.fffffffffffffp-502,
+    0x1.0000000000001p-501
+  },
+  { // Entry 207
+    0x1.6a09e667f3bcc3608b617397f77caac1p-501,
+    0x1.0p-501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 208
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-501,
+    0x1.0p-501,
+    0x1.0p-501
+  },
+  { // Entry 209
+    0x1.6a09e667f3bcd459022e5304d10b0412p-501,
+    0x1.0p-501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 210
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-501,
+    0x1.0000000000001p-501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 211
+    0x1.6a09e667f3bcd459022e5304d10b0412p-501,
+    0x1.0000000000001p-501,
+    0x1.0p-501
+  },
+  { // Entry 212
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-501,
+    0x1.0000000000001p-501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 213
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 214
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0p-501
+  },
+  { // Entry 215
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0000000000001p-501
+  },
+  { // Entry 216
+    0x1.p501,
+    0x1.0p501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 217
+    0x1.p501,
+    0x1.0p501,
+    0x1.0p-501
+  },
+  { // Entry 218
+    0x1.p501,
+    0x1.0p501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 219
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 220
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0p-501
+  },
+  { // Entry 221
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 222
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    -0x1.0p-1074
+  },
+  { // Entry 223
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    -0.0
+  },
+  { // Entry 224
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0p-1074
+  },
+  { // Entry 225
+    0x1.p501,
+    0x1.0p501,
+    -0x1.0p-1074
+  },
+  { // Entry 226
+    0x1.p501,
+    0x1.0p501,
+    -0.0
+  },
+  { // Entry 227
+    0x1.p501,
+    0x1.0p501,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    -0x1.0p-1074
+  },
+  { // Entry 229
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    -0.0
+  },
+  { // Entry 230
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    0x1.fffffffffffff0p-502,
+    0x1.fffffffffffffp-502,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    0x1.fffffffffffff0p-502,
+    0x1.fffffffffffffp-502,
+    -0.0
+  },
+  { // Entry 233
+    0x1.fffffffffffff0p-502,
+    0x1.fffffffffffffp-502,
+    0x1.0p-1074
+  },
+  { // Entry 234
+    0x1.p-501,
+    0x1.0p-501,
+    -0x1.0p-1074
+  },
+  { // Entry 235
+    0x1.p-501,
+    0x1.0p-501,
+    -0.0
+  },
+  { // Entry 236
+    0x1.p-501,
+    0x1.0p-501,
+    0x1.0p-1074
+  },
+  { // Entry 237
+    0x1.00000000000010p-501,
+    0x1.0000000000001p-501,
+    -0x1.0p-1074
+  },
+  { // Entry 238
+    0x1.00000000000010p-501,
+    0x1.0000000000001p-501,
+    -0.0
+  },
+  { // Entry 239
+    0x1.00000000000010p-501,
+    0x1.0000000000001p-501,
+    0x1.0p-1074
+  },
+  { // Entry 240
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 241
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0p0
+  },
+  { // Entry 242
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0000000000001p0
+  },
+  { // Entry 243
+    0x1.p501,
+    0x1.0p501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 244
+    0x1.p501,
+    0x1.0p501,
+    0x1.0p0
+  },
+  { // Entry 245
+    0x1.p501,
+    0x1.0p501,
+    0x1.0000000000001p0
+  },
+  { // Entry 246
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 247
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0p0
+  },
+  { // Entry 248
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0000000000001p0
+  },
+  { // Entry 249
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-502,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 250
+    0x1.p0,
+    0x1.fffffffffffffp-502,
+    0x1.0p0
+  },
+  { // Entry 251
+    0x1.00000000000010p0,
+    0x1.fffffffffffffp-502,
+    0x1.0000000000001p0
+  },
+  { // Entry 252
+    0x1.fffffffffffff0p-1,
+    0x1.0p-501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 253
+    0x1.p0,
+    0x1.0p-501,
+    0x1.0p0
+  },
+  { // Entry 254
+    0x1.00000000000010p0,
+    0x1.0p-501,
+    0x1.0000000000001p0
+  },
+  { // Entry 255
+    0x1.fffffffffffff0p-1,
+    0x1.0000000000001p-501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 256
+    0x1.p0,
+    0x1.0000000000001p-501,
+    0x1.0p0
+  },
+  { // Entry 257
+    0x1.00000000000010p0,
+    0x1.0000000000001p-501,
+    0x1.0000000000001p0
+  },
+  { // Entry 258
+    0x1.fffffffffffff000000000000fffffffp49,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 259
+    0x1.fffffffffffff0000000000010p49,
+    0x1.fffffffffffffp49,
+    0x1.0p0
+  },
+  { // Entry 260
+    0x1.fffffffffffff0000000000010p49,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p0
+  },
+  { // Entry 261
+    0x1.00000000000000000000000007ffffffp50,
+    0x1.0p50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 262
+    0x1.00000000000000000000000007ffffffp50,
+    0x1.0p50,
+    0x1.0p0
+  },
+  { // Entry 263
+    0x1.00000000000000000000000008p50,
+    0x1.0p50,
+    0x1.0000000000001p0
+  },
+  { // Entry 264
+    0x1.00000000000010000000000007ffffffp50,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 265
+    0x1.00000000000010000000000007ffffffp50,
+    0x1.0000000000001p50,
+    0x1.0p0
+  },
+  { // Entry 266
+    0x1.00000000000010000000000008p50,
+    0x1.0000000000001p50,
+    0x1.0000000000001p0
+  },
+  { // Entry 267
+    0x1.fffffffffffff0000000000003ffffffp50,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 268
+    0x1.fffffffffffff0000000000004p50,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 269
+    0x1.fffffffffffff0000000000004p50,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 270
+    0x1.00000000000000000000000001ffffffp51,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 271
+    0x1.00000000000000000000000001ffffffp51,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 272
+    0x1.00000000000000000000000002p51,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 273
+    0x1.00000000000010000000000001ffffffp51,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 274
+    0x1.00000000000010000000000001ffffffp51,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 275
+    0x1.00000000000010000000000002p51,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 276
+    0x1.fffffffffffff0000000000000ffffffp51,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 277
+    0x1.fffffffffffff0000000000001p51,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 278
+    0x1.fffffffffffff0000000000001p51,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 279
+    0x1.000000000000000000000000007fffffp52,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 280
+    0x1.000000000000000000000000007fffffp52,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 281
+    0x1.0000000000000000000000000080p52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 282
+    0x1.000000000000100000000000007fffffp52,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 283
+    0x1.000000000000100000000000007fffffp52,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 284
+    0x1.0000000000001000000000000080p52,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 285
+    0x1.fffffffffffff00000000000003fffffp52,
+    0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 286
+    0x1.fffffffffffff000000000000040p52,
+    0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 287
+    0x1.fffffffffffff000000000000040p52,
+    0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 288
+    0x1.000000000000000000000000001fffffp53,
+    0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 289
+    0x1.000000000000000000000000001fffffp53,
+    0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 290
+    0x1.0000000000000000000000000020p53,
+    0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 291
+    0x1.000000000000100000000000001fffffp53,
+    0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 292
+    0x1.000000000000100000000000001fffffp53,
+    0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 293
+    0x1.0000000000001000000000000020p53,
+    0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 294
+    0x1.fffffffffffff00000000000000fffffp53,
+    0x1.fffffffffffffp53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 295
+    0x1.fffffffffffff000000000000010p53,
+    0x1.fffffffffffffp53,
+    0x1.0p0
+  },
+  { // Entry 296
+    0x1.fffffffffffff000000000000010p53,
+    0x1.fffffffffffffp53,
+    0x1.0000000000001p0
+  },
+  { // Entry 297
+    0x1.0000000000000000000000000007ffffp54,
+    0x1.0p54,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 298
+    0x1.0000000000000000000000000007ffffp54,
+    0x1.0p54,
+    0x1.0p0
+  },
+  { // Entry 299
+    0x1.0000000000000000000000000008p54,
+    0x1.0p54,
+    0x1.0000000000001p0
+  },
+  { // Entry 300
+    0x1.0000000000001000000000000007ffffp54,
+    0x1.0000000000001p54,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 301
+    0x1.0000000000001000000000000007ffffp54,
+    0x1.0000000000001p54,
+    0x1.0p0
+  },
+  { // Entry 302
+    0x1.0000000000001000000000000008p54,
+    0x1.0000000000001p54,
+    0x1.0000000000001p0
+  },
+  { // Entry 303
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-500,
+    0x1.fffffffffffffp-501,
+    0x1.fffffffffffffp-501
+  },
+  { // Entry 304
+    0x1.6a09e667f3bcc3608b617397f77caac1p-500,
+    0x1.fffffffffffffp-501,
+    0x1.0p-500
+  },
+  { // Entry 305
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-500,
+    0x1.fffffffffffffp-501,
+    0x1.0000000000001p-500
+  },
+  { // Entry 306
+    0x1.6a09e667f3bcc3608b617397f77caac1p-500,
+    0x1.0p-500,
+    0x1.fffffffffffffp-501
+  },
+  { // Entry 307
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-500,
+    0x1.0p-500,
+    0x1.0p-500
+  },
+  { // Entry 308
+    0x1.6a09e667f3bcd459022e5304d10b0412p-500,
+    0x1.0p-500,
+    0x1.0000000000001p-500
+  },
+  { // Entry 309
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-500,
+    0x1.0000000000001p-500,
+    0x1.fffffffffffffp-501
+  },
+  { // Entry 310
+    0x1.6a09e667f3bcd459022e5304d10b0412p-500,
+    0x1.0000000000001p-500,
+    0x1.0p-500
+  },
+  { // Entry 311
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-500,
+    0x1.0000000000001p-500,
+    0x1.0000000000001p-500
+  },
+  { // Entry 312
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-60,
+    0x1.fffffffffffffp-61,
+    0x1.fffffffffffffp-61
+  },
+  { // Entry 313
+    0x1.6a09e667f3bcc3608b617397f77caac1p-60,
+    0x1.fffffffffffffp-61,
+    0x1.0p-60
+  },
+  { // Entry 314
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-60,
+    0x1.fffffffffffffp-61,
+    0x1.0000000000001p-60
+  },
+  { // Entry 315
+    0x1.6a09e667f3bcc3608b617397f77caac1p-60,
+    0x1.0p-60,
+    0x1.fffffffffffffp-61
+  },
+  { // Entry 316
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-60,
+    0x1.0p-60,
+    0x1.0p-60
+  },
+  { // Entry 317
+    0x1.6a09e667f3bcd459022e5304d10b0412p-60,
+    0x1.0p-60,
+    0x1.0000000000001p-60
+  },
+  { // Entry 318
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-60,
+    0x1.0000000000001p-60,
+    0x1.fffffffffffffp-61
+  },
+  { // Entry 319
+    0x1.6a09e667f3bcd459022e5304d10b0412p-60,
+    0x1.0000000000001p-60,
+    0x1.0p-60
+  },
+  { // Entry 320
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-60,
+    0x1.0000000000001p-60,
+    0x1.0000000000001p-60
+  },
+  { // Entry 321
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-10,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 322
+    0x1.6a09e667f3bcc3608b617397f77caac1p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 323
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 324
+    0x1.6a09e667f3bcc3608b617397f77caac1p-10,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 325
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 326
+    0x1.6a09e667f3bcd459022e5304d10b0412p-10,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 327
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-10,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 328
+    0x1.6a09e667f3bcd459022e5304d10b0412p-10,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 329
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-10,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 330
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 331
+    0x1.6a09e667f3bcc3608b617397f77caac1p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 332
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 333
+    0x1.6a09e667f3bcc3608b617397f77caac1p-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 334
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 335
+    0x1.6a09e667f3bcd459022e5304d10b0412p-1,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 336
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 337
+    0x1.6a09e667f3bcd459022e5304d10b0412p-1,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 338
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 339
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p1,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 340
+    0x1.6a09e667f3bcc3608b617397f77caac1p1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 341
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 342
+    0x1.6a09e667f3bcc3608b617397f77caac1p1,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 343
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 344
+    0x1.6a09e667f3bcd459022e5304d10b0412p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 345
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 346
+    0x1.6a09e667f3bcd459022e5304d10b0412p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 347
+    0x1.6a09e667f3bcdfa9516192a2b726086dp1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 348
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p10,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 349
+    0x1.6a09e667f3bcc3608b617397f77caac1p10,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 350
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p10,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 351
+    0x1.6a09e667f3bcc3608b617397f77caac1p10,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 352
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 353
+    0x1.6a09e667f3bcd459022e5304d10b0412p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 354
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p10,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 355
+    0x1.6a09e667f3bcd459022e5304d10b0412p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 356
+    0x1.6a09e667f3bcdfa9516192a2b726086dp10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 357
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p60,
+    0x1.fffffffffffffp59,
+    0x1.fffffffffffffp59
+  },
+  { // Entry 358
+    0x1.6a09e667f3bcc3608b617397f77caac1p60,
+    0x1.fffffffffffffp59,
+    0x1.0p60
+  },
+  { // Entry 359
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p60,
+    0x1.fffffffffffffp59,
+    0x1.0000000000001p60
+  },
+  { // Entry 360
+    0x1.6a09e667f3bcc3608b617397f77caac1p60,
+    0x1.0p60,
+    0x1.fffffffffffffp59
+  },
+  { // Entry 361
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep60,
+    0x1.0p60,
+    0x1.0p60
+  },
+  { // Entry 362
+    0x1.6a09e667f3bcd459022e5304d10b0412p60,
+    0x1.0p60,
+    0x1.0000000000001p60
+  },
+  { // Entry 363
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p60,
+    0x1.0000000000001p60,
+    0x1.fffffffffffffp59
+  },
+  { // Entry 364
+    0x1.6a09e667f3bcd459022e5304d10b0412p60,
+    0x1.0000000000001p60,
+    0x1.0p60
+  },
+  { // Entry 365
+    0x1.6a09e667f3bcdfa9516192a2b726086dp60,
+    0x1.0000000000001p60,
+    0x1.0000000000001p60
+  },
+  { // Entry 366
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p500,
+    0x1.fffffffffffffp499,
+    0x1.fffffffffffffp499
+  },
+  { // Entry 367
+    0x1.6a09e667f3bcc3608b617397f77caac1p500,
+    0x1.fffffffffffffp499,
+    0x1.0p500
+  },
+  { // Entry 368
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p500,
+    0x1.fffffffffffffp499,
+    0x1.0000000000001p500
+  },
+  { // Entry 369
+    0x1.6a09e667f3bcc3608b617397f77caac1p500,
+    0x1.0p500,
+    0x1.fffffffffffffp499
+  },
+  { // Entry 370
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep500,
+    0x1.0p500,
+    0x1.0p500
+  },
+  { // Entry 371
+    0x1.6a09e667f3bcd459022e5304d10b0412p500,
+    0x1.0p500,
+    0x1.0000000000001p500
+  },
+  { // Entry 372
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p500,
+    0x1.0000000000001p500,
+    0x1.fffffffffffffp499
+  },
+  { // Entry 373
+    0x1.6a09e667f3bcd459022e5304d10b0412p500,
+    0x1.0000000000001p500,
+    0x1.0p500
+  },
+  { // Entry 374
+    0x1.6a09e667f3bcdfa9516192a2b726086dp500,
+    0x1.0000000000001p500,
+    0x1.0000000000001p500
+  },
+  { // Entry 375
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 376
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0p0
+  },
+  { // Entry 377
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0
+  },
+  { // Entry 378
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 379
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0p0
+  },
+  { // Entry 380
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0000000000001p0
+  },
+  { // Entry 381
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 382
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0p0
+  },
+  { // Entry 383
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p0
+  },
+  { // Entry 384
+    0x1.778d27690518c71d8d4d782889fc1c38p-27,
+    0x1.00a436e9442ebp-27,
+    0x1.122dc42e12482p-27
+  },
+  { // Entry 385
+    0x1.778d27690518d2cbeb1e43a94a18dcbbp-27,
+    0x1.00a436e9442ebp-27,
+    0x1.122dc42e12483p-27
+  },
+  { // Entry 386
+    0x1.778d27690518de7a48ef0f2a0a871bb3p-27,
+    0x1.00a436e9442ebp-27,
+    0x1.122dc42e12484p-27
+  },
+  { // Entry 387
+    0x1.778d27690518d20ca53cbc1df3f2eff8p-27,
+    0x1.00a436e9442ecp-27,
+    0x1.122dc42e12482p-27
+  },
+  { // Entry 388
+    0x1.778d27690518ddbb030d879eb3b8a069p-27,
+    0x1.00a436e9442ecp-27,
+    0x1.122dc42e12483p-27
+  },
+  { // Entry 389
+    0x1.778d27690518e96960de531f73cfcf4fp-27,
+    0x1.00a436e9442ecp-27,
+    0x1.122dc42e12484p-27
+  },
+  { // Entry 390
+    0x1.778d27690518dcfbbd2c00135e46c6d1p-27,
+    0x1.00a436e9442edp-27,
+    0x1.122dc42e12482p-27
+  },
+  { // Entry 391
+    0x1.778d27690518e8aa1afccb941db56731p-27,
+    0x1.00a436e9442edp-27,
+    0x1.122dc42e12483p-27
+  },
+  { // Entry 392
+    0x1.778d27690518f45878cd9714dd758605p-27,
+    0x1.00a436e9442edp-27,
+    0x1.122dc42e12484p-27
+  },
+  { // Entry 393
+    0x1.74334f2872bf31f2bd78c8d32ad384a6p0,
+    0x1.0b2502b3f7655p0,
+    -0x1.032a74c8e2bbep0
+  },
+  { // Entry 394
+    0x1.74334f2872bf26ceaa6e8d36067093ffp0,
+    0x1.0b2502b3f7655p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 395
+    0x1.74334f2872bf1baa97645198e2685868p0,
+    0x1.0b2502b3f7655p0,
+    -0x1.032a74c8e2bbcp0
+  },
+  { // Entry 396
+    0x1.74334f2872bf3d6e9e764b9816ffdf5ep0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbep0
+  },
+  { // Entry 397
+    0x1.74334f2872bf324a8b6c0ffaf2f4ee3dp0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 398
+    0x1.74334f2872bf27267861d45dcf44b22bp0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbcp0
+  },
+  { // Entry 399
+    0x1.74334f2872bf48ea7f73ce5d038198c9p0,
+    0x1.0b2502b3f7657p0,
+    -0x1.032a74c8e2bbep0
+  },
+  { // Entry 400
+    0x1.74334f2872bf3dc66c6992bfdfcea72ep0,
+    0x1.0b2502b3f7657p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 401
+    0x1.74334f2872bf32a2595f5722bc766aa2p0,
+    0x1.0b2502b3f7657p0,
+    -0x1.032a74c8e2bbcp0
+  },
+  { // Entry 402
+    0x1.b6d63492cf6c5f0d4a9e41a4ed8f8b94p7,
+    0x1.3845636425763p7,
+    0x1.3453456452664p7
+  },
+  { // Entry 403
+    0x1.b6d63492cf6c6a4b20bba441a2ca5ba3p7,
+    0x1.3845636425763p7,
+    0x1.3453456452665p7
+  },
+  { // Entry 404
+    0x1.b6d63492cf6c7588f6d906de5850ca51p7,
+    0x1.3845636425763p7,
+    0x1.3453456452666p7
+  },
+  { // Entry 405
+    0x1.b6d63492cf6c6a6ff4ee83c89e71f86dp7,
+    0x1.3845636425764p7,
+    0x1.3453456452664p7
+  },
+  { // Entry 406
+    0x1.b6d63492cf6c75adcb0be66553621e7ap7,
+    0x1.3845636425764p7,
+    0x1.3453456452665p7
+  },
+  { // Entry 407
+    0x1.b6d63492cf6c80eba1294902089de325p7,
+    0x1.3845636425764p7,
+    0x1.3453456452666p7
+  },
+  { // Entry 408
+    0x1.b6d63492cf6c75d29f3ec5ec4f9e1dc5p7,
+    0x1.3845636425765p7,
+    0x1.3453456452664p7
+  },
+  { // Entry 409
+    0x1.b6d63492cf6c8110755c2889044399cfp7,
+    0x1.3845636425765p7,
+    0x1.3453456452665p7
+  },
+  { // Entry 410
+    0x1.b6d63492cf6c8c4e4b798b25b934b477p7,
+    0x1.3845636425765p7,
+    0x1.3453456452666p7
+  },
+  { // Entry 411
+    0x1.b6d63492cf6c8c4e4b798b25b934b477p-6,
+    -0x1.3845636425765p-6,
+    -0x1.3453456452666p-6
+  },
+  { // Entry 412
+    0x1.b6d63492cf6c8110755c2889044399cfp-6,
+    -0x1.3845636425765p-6,
+    -0x1.3453456452665p-6
+  },
+  { // Entry 413
+    0x1.b6d63492cf6c75d29f3ec5ec4f9e1dc5p-6,
+    -0x1.3845636425765p-6,
+    -0x1.3453456452664p-6
+  },
+  { // Entry 414
+    0x1.b6d63492cf6c80eba1294902089de325p-6,
+    -0x1.3845636425764p-6,
+    -0x1.3453456452666p-6
+  },
+  { // Entry 415
+    0x1.b6d63492cf6c75adcb0be66553621e7ap-6,
+    -0x1.3845636425764p-6,
+    -0x1.3453456452665p-6
+  },
+  { // Entry 416
+    0x1.b6d63492cf6c6a6ff4ee83c89e71f86dp-6,
+    -0x1.3845636425764p-6,
+    -0x1.3453456452664p-6
+  },
+  { // Entry 417
+    0x1.b6d63492cf6c7588f6d906de5850ca51p-6,
+    -0x1.3845636425763p-6,
+    -0x1.3453456452666p-6
+  },
+  { // Entry 418
+    0x1.b6d63492cf6c6a4b20bba441a2ca5ba3p-6,
+    -0x1.3845636425763p-6,
+    -0x1.3453456452665p-6
+  },
+  { // Entry 419
+    0x1.b6d63492cf6c5f0d4a9e41a4ed8f8b94p-6,
+    -0x1.3845636425763p-6,
+    -0x1.3453456452664p-6
+  },
+  { // Entry 420
+    0x1.9a134186a4136915d6a2f7171812deefp-16,
+    -0x1.3845636425765p-16,
+    -0x1.09cc3d7f1c881p-16
+  },
+  { // Entry 421
+    0x1.9a134186a4135eb6f0c519097d75243dp-16,
+    -0x1.3845636425765p-16,
+    -0x1.09cc3d7f1c880p-16
+  },
+  { // Entry 422
+    0x1.9a134186a41354580ae73afbe33415cfp-16,
+    -0x1.3845636425765p-16,
+    -0x1.09cc3d7f1c87fp-16
+  },
+  { // Entry 423
+    0x1.9a134186a4135ce6bf291d40fc6e4392p-16,
+    -0x1.3845636425764p-16,
+    -0x1.09cc3d7f1c881p-16
+  },
+  { // Entry 424
+    0x1.9a134186a4135287d94b3f336181a757p-16,
+    -0x1.3845636425764p-16,
+    -0x1.09cc3d7f1c880p-16
+  },
+  { // Entry 425
+    0x1.9a134186a4134828f36d6125c6f1b75fp-16,
+    -0x1.3845636425764p-16,
+    -0x1.09cc3d7f1c87fp-16
+  },
+  { // Entry 426
+    0x1.9a134186a41350b7a7af436ae10ccc7ap-16,
+    -0x1.3845636425763p-16,
+    -0x1.09cc3d7f1c881p-16
+  },
+  { // Entry 427
+    0x1.9a134186a4134658c1d1655d45d14eb5p-16,
+    -0x1.3845636425763p-16,
+    -0x1.09cc3d7f1c880p-16
+  },
+  { // Entry 428
+    0x1.9a134186a4133bf9dbf3874faaf27d32p-16,
+    -0x1.3845636425763p-16,
+    -0x1.09cc3d7f1c87fp-16
+  },
+  { // Entry 429
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-6,
+    -0x1.0000000000001p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 430
+    0x1.6a09e667f3bcd459022e5304d10b0412p-6,
+    -0x1.0000000000001p-6,
+    -0x1.0p-6
+  },
+  { // Entry 431
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-6,
+    -0x1.0000000000001p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 432
+    0x1.6a09e667f3bcd459022e5304d10b0412p-6,
+    -0x1.0p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 433
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-6,
+    -0x1.0p-6,
+    -0x1.0p-6
+  },
+  { // Entry 434
+    0x1.6a09e667f3bcc3608b617397f77caac1p-6,
+    -0x1.0p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 435
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-6,
+    -0x1.fffffffffffffp-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 436
+    0x1.6a09e667f3bcc3608b617397f77caac1p-6,
+    -0x1.fffffffffffffp-7,
+    -0x1.0p-6
+  },
+  { // Entry 437
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-6,
+    -0x1.fffffffffffffp-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 438
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 439
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 440
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 441
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 442
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 443
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 444
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 445
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 446
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 447
+    0x1.1e3779b97f4a732437cef466090d1897p-400,
+    0x1.fffffffffffffp-401,
+    0x1.fffffffffffffp-402
+  },
+  { // Entry 448
+    0x1.1e3779b97f4a74ee2a2b5064e6a62857p-400,
+    0x1.fffffffffffffp-401,
+    0x1.0p-401
+  },
+  { // Entry 449
+    0x1.1e3779b97f4a78820ee40862a1faa06cp-400,
+    0x1.fffffffffffffp-401,
+    0x1.0000000000001p-401
+  },
+  { // Entry 450
+    0x1.1e3779b97f4a7a4c014064617f602b4fp-400,
+    0x1.0p-400,
+    0x1.fffffffffffffp-402
+  },
+  { // Entry 451
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p-400,
+    0x1.0p-400,
+    0x1.0p-401
+  },
+  { // Entry 452
+    0x1.1e3779b97f4a7fa9d855785e182b5a91p-400,
+    0x1.0p-400,
+    0x1.0000000000001p-401
+  },
+  { // Entry 453
+    0x1.1e3779b97f4a889b942344586c28a953p-400,
+    0x1.0000000000001p-400,
+    0x1.fffffffffffffp-402
+  },
+  { // Entry 454
+    0x1.1e3779b97f4a8a65867fa057499f6080p-400,
+    0x1.0000000000001p-400,
+    0x1.0p-401
+  },
+  { // Entry 455
+    0x1.1e3779b97f4a8df96b38585504af276dp-400,
+    0x1.0000000000001p-400,
+    0x1.0000000000001p-401
+  },
+  { // Entry 456
+    0x1.1e3779b97f4a732437cef466090d1897p-511,
+    0x1.fffffffffffffp-513,
+    0x1.fffffffffffffp-512
+  },
+  { // Entry 457
+    0x1.1e3779b97f4a7a4c014064617f602b4fp-511,
+    0x1.fffffffffffffp-513,
+    0x1.0p-511
+  },
+  { // Entry 458
+    0x1.1e3779b97f4a889b942344586c28a953p-511,
+    0x1.fffffffffffffp-513,
+    0x1.0000000000001p-511
+  },
+  { // Entry 459
+    0x1.1e3779b97f4a74ee2a2b5064e6a62857p-511,
+    0x1.0p-512,
+    0x1.fffffffffffffp-512
+  },
+  { // Entry 460
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p-511,
+    0x1.0p-512,
+    0x1.0p-511
+  },
+  { // Entry 461
+    0x1.1e3779b97f4a8a65867fa057499f6080p-511,
+    0x1.0p-512,
+    0x1.0000000000001p-511
+  },
+  { // Entry 462
+    0x1.1e3779b97f4a78820ee40862a1faa06cp-511,
+    0x1.0000000000001p-512,
+    0x1.fffffffffffffp-512
+  },
+  { // Entry 463
+    0x1.1e3779b97f4a7fa9d855785e182b5a91p-511,
+    0x1.0000000000001p-512,
+    0x1.0p-511
+  },
+  { // Entry 464
+    0x1.1e3779b97f4a8df96b38585504af276dp-511,
+    0x1.0000000000001p-512,
+    0x1.0000000000001p-511
+  },
+  { // Entry 465
+    0x1.1e3779b97f4a732437cef466090d1897p1022,
+    0x1.fffffffffffffp1021,
+    0x1.fffffffffffffp1020
+  },
+  { // Entry 466
+    0x1.1e3779b97f4a74ee2a2b5064e6a62857p1022,
+    0x1.fffffffffffffp1021,
+    0x1.0p1021
+  },
+  { // Entry 467
+    0x1.1e3779b97f4a78820ee40862a1faa06cp1022,
+    0x1.fffffffffffffp1021,
+    0x1.0000000000001p1021
+  },
+  { // Entry 468
+    0x1.1e3779b97f4a7a4c014064617f602b4fp1022,
+    0x1.0p1022,
+    0x1.fffffffffffffp1020
+  },
+  { // Entry 469
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p1022,
+    0x1.0p1022,
+    0x1.0p1021
+  },
+  { // Entry 470
+    0x1.1e3779b97f4a7fa9d855785e182b5a91p1022,
+    0x1.0p1022,
+    0x1.0000000000001p1021
+  },
+  { // Entry 471
+    0x1.1e3779b97f4a889b942344586c28a953p1022,
+    0x1.0000000000001p1022,
+    0x1.fffffffffffffp1020
+  },
+  { // Entry 472
+    0x1.1e3779b97f4a8a65867fa057499f6080p1022,
+    0x1.0000000000001p1022,
+    0x1.0p1021
+  },
+  { // Entry 473
+    0x1.1e3779b97f4a8df96b38585504af276dp1022,
+    0x1.0000000000001p1022,
+    0x1.0000000000001p1021
+  },
+  { // Entry 474
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 475
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 476
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 477
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 478
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 479
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 480
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 481
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 482
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 483
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 484
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 485
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 486
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 487
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 488
+    HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 489
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 490
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 491
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 492
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 493
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 494
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 495
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 496
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 497
+    HUGE_VAL,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 498
+    HUGE_VAL,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 499
+    HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 500
+    HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 501
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 502
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 503
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 504
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 505
+    HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 506
+    HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 507
+    HUGE_VAL,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 508
+    HUGE_VAL,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 509
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 510
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 511
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 513
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 514
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 515
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 516
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 517
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 518
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 519
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 520
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 521
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 522
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 523
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 524
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 525
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 526
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 527
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 528
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 529
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 530
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 531
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 532
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 533
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 534
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 535
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 536
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 537
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 538
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 539
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 540
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 541
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 542
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 543
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 544
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 545
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 546
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 547
+    0x1.000000000000000000000000007fffffp-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 548
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 549
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 550
+    0x1.40p2,
+    0x1.8p1,
+    0x1.0p2
+  },
+  { // Entry 551
+    0x1.40p2,
+    0x1.8p1,
+    -0x1.0p2
+  },
+  { // Entry 552
+    0x1.a0p3,
+    0x1.4p2,
+    0x1.8p3
+  },
+  { // Entry 553
+    0x1.a0p3,
+    0x1.4p2,
+    -0x1.8p3
+  }
+};
diff --git a/tests/math_data/hypotf_intel_data.h b/tests/math_data/hypotf_intel_data.h
new file mode 100644
index 0000000..fd4334b
--- /dev/null
+++ b/tests/math_data/hypotf_intel_data.h
@@ -0,0 +1,2373 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_hypotf_intel_data[] = {
+  { // Entry 0
+    0x1.804fa3000c7ebdf47434f397ec84c7a0p3,
+    -0x1.3372aep3,
+    0x1.cd2cfap2
+  },
+  { // Entry 1
+    0x1.75d046fff6326da34cade3039156d2ecp3,
+    -0x1.3372b0p3,
+    -0x1.a94388p2
+  },
+  { // Entry 2
+    0x1.9a134b0022862e28be8459544c0a0179p-16,
+    -0x1.38456cp-16,
+    -0x1.09cc42p-16
+  },
+  { // Entry 3
+    0x1.55555e0000000000000000125fff8890p-101,
+    -0x1.55555ep-101,
+    0x1.c0p-147
+  },
+  { // Entry 4
+    0x1.f6c65800001e1be1724156e80ea39f54p-41,
+    -0x1.5cp-62,
+    -0x1.f6c658p-41
+  },
+  { // Entry 5
+    0x1.75298b006e4054fd81616e2f820cb18ap4,
+    -0x1.6b91b0p4,
+    -0x1.5046aep2
+  },
+  { // Entry 6
+    0x1.7ffffc0055555a38da2bfed0dc82cd7ap0,
+    -0x1.7ffffcp0,
+    0x1.000006p-16
+  },
+  { // Entry 7
+    0x1.f13b56fc46bed2325ccd2c7cd5e69632p21,
+    -0x1.f12bp21,
+    0x1.fddffep15
+  },
+  { // Entry 8
+    0x1.555570p-2,
+    0x1.p-149,
+    0x1.555570p-2
+  },
+  { // Entry 9
+    0x1.55553ap100,
+    0x1.p0,
+    0x1.55553ap100
+  },
+  { // Entry 10
+    0x1.6a09eaa611765e10631270d5de08ee6ep100,
+    0x1.000006p100,
+    0x1.p100
+  },
+  { // Entry 11
+    0x1.6a099efd14740b74de47d3287c3ef106p-19,
+    0x1.000024p-19,
+    0x1.fffeeep-20
+  },
+  { // Entry 12
+    0x1.6a15e5005f98a0819477ee86c40c70a6p0,
+    0x1.0142b2p0,
+    -0x1.fd9982p-1
+  },
+  { // Entry 13
+    0x1.7c02c30005404c762e561df458868db8p6,
+    0x1.077f4cp6,
+    0x1.11d1ecp6
+  },
+  { // Entry 14
+    0x1.eb772efc48db2565eb91a892b9109e1ap2,
+    0x1.198cc0p0,
+    -0x1.e66626p2
+  },
+  { // Entry 15
+    0x1.fdecbd00002c3d202ee051ddfe076387p9,
+    0x1.1bd856p1,
+    0x1.fdec6ep9
+  },
+  { // Entry 16
+    0x1.800000001affffffff0d0000001115ffp-23,
+    0x1.20p-40,
+    0x1.80p-23
+  },
+  { // Entry 17
+    0x1.2004d7000c9e59b6c319a40f068137f1p6,
+    0x1.20p6,
+    0x1.a66670p-1
+  },
+  { // Entry 18
+    0x1.38031300000fffd7a4800dc6d8c127c4p1,
+    0x1.3160acp1,
+    -0x1.p-1
+  },
+  { // Entry 19
+    0x1.814cee00298d8fda8ba443fa2826cc78p9,
+    0x1.41f070p2,
+    0x1.814ad4p9
+  },
+  { // Entry 20
+    0x1.ba86e8ff3abb57bc63ed628576cbf719p100,
+    0x1.60p100,
+    0x1.0c30c4p100
+  },
+  { // Entry 21
+    0x1.276275p-10,
+    0x1.627626p-11,
+    0x1.d89d88p-11
+  },
+  { // Entry 22
+    0x1.30e418fc6e8f1e1342c13fc83cd67621p3,
+    0x1.74acc6p-1,
+    -0x1.30p3
+  },
+  { // Entry 23
+    0x1.fe01f0fc1044c738957a70f05fc15f48p3,
+    0x1.758fc2p-2,
+    0x1.fddfbcp3
+  },
+  { // Entry 24
+    0x1.000009p0,
+    0x1.80p-10,
+    0x1.ffffeep-1
+  },
+  { // Entry 25
+    0x1.4000030000066666570a3d851eb86f69p3,
+    0x1.80000ap2,
+    0x1.p3
+  },
+  { // Entry 26
+    0x1.8bb3cb0000954ddd1ba4ba3d1be7bcb3p0,
+    0x1.88603ep0,
+    -0x1.99999ap-3
+  },
+  { // Entry 27
+    0x1.068c070000048279abdd7e2cb99727aep1,
+    0x1.8bab4ap-1,
+    -0x1.e66674p0
+  },
+  { // Entry 28
+    0x1.8f827b00115def47c454b3599143d2eap10,
+    0x1.8f827ap10,
+    0x1.c454b0p-2
+  },
+  { // Entry 29
+    0x1.a6645cfc2ab00e5f4a76893e77c93e80p0,
+    0x1.9287e2p0,
+    -0x1.p-1
+  },
+  { // Entry 30
+    0x1.1bcf0effffc79fbfe4638ed7c7f20ad3p1,
+    0x1.938d28p-1,
+    0x1.094590p1
+  },
+  { // Entry 31
+    0x1.10d8ce00004de00b92c66641b1a95fc7p0,
+    0x1.9e874ap-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 32
+    0x1.fc516efc69a62ca47aa82a4c310ba6c3p-2,
+    0x1.af1948p-6,
+    -0x1.fb9a80p-2
+  },
+  { // Entry 33
+    0x1.e9e6a4fc2ddde87638b4684564e14ce6p-3,
+    0x1.b81272p-5,
+    -0x1.dd633ep-3
+  },
+  { // Entry 34
+    0x1.7396f60007c18075d8efd4c838b91544p-1,
+    0x1.b89068p-3,
+    0x1.62e42ep-1
+  },
+  { // Entry 35
+    0x1.c2c3acfcf40d75a5ea60e9c114443950p1,
+    0x1.c1a088p1,
+    -0x1.p-2
+  },
+  { // Entry 36
+    0x1.a43e960006dba02d6beb1d2c1eeaeceap-1,
+    0x1.c2250cp-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 37
+    0x1.1efb1b00082040053780041dc6b1f307p0,
+    0x1.c317a0p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 38
+    0x1.58e36d0000017c0ab31fb608eac90731p3,
+    0x1.ce38bap2,
+    0x1.ffffccp2
+  },
+  { // Entry 39
+    0x1.fcef76fc92680470b1a17bd9b4b35c4ap-1,
+    0x1.d1e90ap-1,
+    -0x1.999958p-2
+  },
+  { // Entry 40
+    0x1.ed06b0fc3e0586fd61429f9f743c6d47p0,
+    0x1.dc1edcp0,
+    -0x1.p-1
+  },
+  { // Entry 41
+    0x1.af9c310000012fae75588f7c15db9873p-1,
+    0x1.eb4822p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 42
+    0x1.fffc00fc05b6516a140feda87b19a0a1p2,
+    0x1.fbffbep-10,
+    0x1.fffcp2
+  },
+  { // Entry 43
+    0x1.ff7cc2fc27e17feee79397d1019b42f2p1,
+    0x1.fbfffep-3,
+    0x1.fe8040p1
+  },
+  { // Entry 44
+    0x1.fe01f0fc1044c738957a70f05fc15f48p3,
+    0x1.fddfbcp3,
+    0x1.758fc2p-2
+  },
+  { // Entry 45
+    0x1.f13b56fc46bed2325ccd2c7cd5e69632p21,
+    0x1.fddffep15,
+    -0x1.f12bp21
+  },
+  { // Entry 46
+    0x1.c48a1cfcd1996ebda81b01af08af23dfp0,
+    0x1.ff7ffep-3,
+    0x1.c0p0
+  },
+  { // Entry 47
+    0x1.ff87fb000001c07920c4dcf4f126de76p7,
+    0x1.ff8ffep1,
+    0x1.ff77fep7
+  },
+  { // Entry 48
+    0x1.ffffffff8007fffff001ffeffc00bff3p-127,
+    0x1.ffe0p-138,
+    0x1.fffffcp-127
+  },
+  { // Entry 49
+    0x1.01fbfb00000001fc0fda76cb886d48a6p2,
+    0x1.fffbfep1,
+    0x1.fff9fep-2
+  },
+  { // Entry 50
+    0x1.1e376efdd5824c75e9a0b3b7ea4e60bcp21,
+    0x1.ffffc0p20,
+    0x1.000050p20
+  },
+  { // Entry 51
+    0x1.1e376efdd469e54558718854476503e6p-19,
+    0x1.ffffc6p-20,
+    0x1.000044p-20
+  },
+  { // Entry 52
+    0x1.fffff0ffffffc0000e200069ec031c2ep6,
+    0x1.fffff8p-6,
+    0x1.fffff0p6
+  },
+  { // Entry 53
+    0x1.6a09e4fde9d71619ea1b09860fc404c9p0,
+    0x1.fffffcp-1,
+    0x1.p0
+  },
+  { // Entry 54
+    0x1.fffff8ffffffc0000320000aec00269ep-2,
+    0x1.fffffcp-14,
+    0x1.fffff8p-2
+  },
+  { // Entry 55
+    0x1.800000000000001555550000005554bdp-24,
+    0x1.fffffcp-54,
+    -0x1.80p-24
+  },
+  { // Entry 56
+    0x1.fffffcfffffdc000009fffffac000035p10,
+    0x1.fffffcp10,
+    0x1.fffffcp-2
+  },
+  { // Entry 57
+    0x1.fffffd000001c00002a000032c000275p12,
+    0x1.fffffcp12,
+    -0x1.p1
+  },
+  { // Entry 58
+    0x1.fffffcffffffc00000a00000ec000176p12,
+    0x1.fffffcp12,
+    0x1.fffffep0
+  },
+  { // Entry 59
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 60
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 61
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 62
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 63
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 64
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 65
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 66
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 67
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 68
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 69
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 70
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 71
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 72
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 73
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 74
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 75
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 76
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 77
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 78
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 79
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 80
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 81
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 82
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 83
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 84
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 85
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 86
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 87
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 88
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 89
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 91
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 92
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 93
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 94
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 95
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 96
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 97
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 98
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 99
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 100
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 101
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 102
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep3,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 103
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.p0,
+    0x1.p9
+  },
+  { // Entry 104
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 105
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.p3,
+    0x1.p9
+  },
+  { // Entry 106
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 107
+    0x1.p100,
+    0x1.p0,
+    0x1.p100
+  },
+  { // Entry 108
+    0x1.p101,
+    0x1.p0,
+    0x1.p101
+  },
+  { // Entry 109
+    0x1.p100,
+    0x1.p3,
+    0x1.p100
+  },
+  { // Entry 110
+    0x1.p101,
+    0x1.p3,
+    0x1.p101
+  },
+  { // Entry 111
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.p9,
+    0x1.p0
+  },
+  { // Entry 112
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.p9,
+    0x1.p3
+  },
+  { // Entry 113
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 114
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 115
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep9,
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 116
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.p9,
+    0x1.p10
+  },
+  { // Entry 117
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.p10,
+    0x1.p9
+  },
+  { // Entry 118
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 119
+    0x1.p100,
+    0x1.p9,
+    0x1.p100
+  },
+  { // Entry 120
+    0x1.p101,
+    0x1.p9,
+    0x1.p101
+  },
+  { // Entry 121
+    0x1.p100,
+    0x1.p10,
+    0x1.p100
+  },
+  { // Entry 122
+    0x1.p101,
+    0x1.p10,
+    0x1.p101
+  },
+  { // Entry 123
+    0x1.p100,
+    0x1.p100,
+    0x1.p0
+  },
+  { // Entry 124
+    0x1.p100,
+    0x1.p100,
+    0x1.p3
+  },
+  { // Entry 125
+    0x1.p101,
+    0x1.p101,
+    0x1.p0
+  },
+  { // Entry 126
+    0x1.p101,
+    0x1.p101,
+    0x1.p3
+  },
+  { // Entry 127
+    0x1.p100,
+    0x1.p100,
+    0x1.p9
+  },
+  { // Entry 128
+    0x1.p100,
+    0x1.p100,
+    0x1.p10
+  },
+  { // Entry 129
+    0x1.p101,
+    0x1.p101,
+    0x1.p9
+  },
+  { // Entry 130
+    0x1.p101,
+    0x1.p101,
+    0x1.p10
+  },
+  { // Entry 131
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep100,
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 132
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.p100,
+    0x1.p101
+  },
+  { // Entry 133
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.p101,
+    0x1.p100
+  },
+  { // Entry 134
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep101,
+    0x1.p101,
+    0x1.p101
+  },
+  { // Entry 135
+    0x1.ad533459cffc47225872f4a951e3eb94p2,
+    0x1.7ffffep2,
+    0x1.7ffffep1
+  },
+  { // Entry 136
+    0x1.ad5334cc4c939b314f9ca7280b7b2232p2,
+    0x1.7ffffep2,
+    0x1.80p1
+  },
+  { // Entry 137
+    0x1.ad53353ec92b695ec60ef2256f96f6bcp2,
+    0x1.7ffffep2,
+    0x1.800002p1
+  },
+  { // Entry 138
+    0x1.ad533623c258e030759a4ee61d10fcc3p2,
+    0x1.80p2,
+    0x1.7ffffep1
+  },
+  { // Entry 139
+    0x1.ad5336963eefba20ed6b20908b64ac4ep2,
+    0x1.80p2,
+    0x1.80p1
+  },
+  { // Entry 140
+    0x1.ad533708bb870e2fe4436964fee071dep2,
+    0x1.80p2,
+    0x1.800002p1
+  },
+  { // Entry 141
+    0x1.ad5337edb4b5f35d10e52ba46980f177p2,
+    0x1.800002p2,
+    0x1.7ffffep1
+  },
+  { // Entry 142
+    0x1.ad533860314c532f0a41112392b8f610p2,
+    0x1.800002p2,
+    0x1.80p1
+  },
+  { // Entry 143
+    0x1.ad5338d2ade32d1f82634c77c4e56d07p2,
+    0x1.800002p2,
+    0x1.800002p1
+  },
+  { // Entry 144
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 145
+    0x1.6a09e0bfcc232939bfd6f09afe47e193p-126,
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 146
+    0x1.6a09e229d60a463271f3020c29b89eb0p-126,
+    0x1.fffff8p-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 147
+    0x1.6a09e393dff2cd350be1111ca28a749bp-126,
+    0x1.fffff8p-127,
+    0x1.p-126
+  },
+  { // Entry 148
+    0x1.6a09e229d60a463271f3020c29b89eb0p-126,
+    0x1.fffffcp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 149
+    0x1.6a09e393dfeff92139690200f46eaf69p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 150
+    0x1.6a09e4fde9d71619ea1b09860fc404c9p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 151
+    0x1.6a09e393dff2cd350be1111ca28a749bp-126,
+    0x1.p-126,
+    0x1.fffff8p-127
+  },
+  { // Entry 152
+    0x1.6a09e4fde9d71619ea1b09860fc404c9p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 153
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 154
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 155
+    0x1.6a09e4fde9d66114f6320ab3ef821653p64,
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 156
+    0x1.6a09e4fde9d66114f6320ab3ef821653p64,
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 157
+    0x1.6a09e4fde9d66114f6320ab3ef821653p53,
+    0x1.fffffep52,
+    0x1.fffffep52
+  },
+  { // Entry 158
+    0x1.6a09e5b2eec9c250117a2e237528575cp53,
+    0x1.fffffep52,
+    0x1.p53
+  },
+  { // Entry 159
+    0x1.6a09e71cf8b1944db3c8e462b0886601p53,
+    0x1.fffffep52,
+    0x1.000002p53
+  },
+  { // Entry 160
+    0x1.6a09e5b2eec9c250117a2e237528575cp53,
+    0x1.p53,
+    0x1.fffffep52
+  },
+  { // Entry 161
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep53,
+    0x1.p53,
+    0x1.p53
+  },
+  { // Entry 162
+    0x1.6a09e7d1fda3e601624311059df7157bp53,
+    0x1.p53,
+    0x1.000002p53
+  },
+  { // Entry 163
+    0x1.6a09e71cf8b1944db3c8e462b0886601p53,
+    0x1.000002p53,
+    0x1.fffffep52
+  },
+  { // Entry 164
+    0x1.6a09e7d1fda3e601624311059df7157bp53,
+    0x1.000002p53,
+    0x1.p53
+  },
+  { // Entry 165
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p53,
+    0x1.000002p53,
+    0x1.000002p53
+  },
+  { // Entry 166
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-53,
+    0x1.fffffep-54,
+    0x1.fffffep-54
+  },
+  { // Entry 167
+    0x1.6a09e5b2eec9c250117a2e237528575cp-53,
+    0x1.fffffep-54,
+    0x1.p-53
+  },
+  { // Entry 168
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-53,
+    0x1.fffffep-54,
+    0x1.000002p-53
+  },
+  { // Entry 169
+    0x1.6a09e5b2eec9c250117a2e237528575cp-53,
+    0x1.p-53,
+    0x1.fffffep-54
+  },
+  { // Entry 170
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-53,
+    0x1.p-53,
+    0x1.p-53
+  },
+  { // Entry 171
+    0x1.6a09e7d1fda3e601624311059df7157bp-53,
+    0x1.p-53,
+    0x1.000002p-53
+  },
+  { // Entry 172
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-53,
+    0x1.000002p-53,
+    0x1.fffffep-54
+  },
+  { // Entry 173
+    0x1.6a09e7d1fda3e601624311059df7157bp-53,
+    0x1.000002p-53,
+    0x1.p-53
+  },
+  { // Entry 174
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-53,
+    0x1.000002p-53,
+    0x1.000002p-53
+  },
+  { // Entry 175
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.fffffep-54
+  },
+  { // Entry 176
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.p-53
+  },
+  { // Entry 177
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.000002p-53
+  },
+  { // Entry 178
+    0x1.p53,
+    0x1.p53,
+    0x1.fffffep-54
+  },
+  { // Entry 179
+    0x1.p53,
+    0x1.p53,
+    0x1.p-53
+  },
+  { // Entry 180
+    0x1.p53,
+    0x1.p53,
+    0x1.000002p-53
+  },
+  { // Entry 181
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.fffffep-54
+  },
+  { // Entry 182
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.p-53
+  },
+  { // Entry 183
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.000002p-53
+  },
+  { // Entry 184
+    0x1.fffffep52,
+    0x1.fffffep52,
+    -0x1.p-149
+  },
+  { // Entry 185
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0.0
+  },
+  { // Entry 186
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.p-149
+  },
+  { // Entry 187
+    0x1.p53,
+    0x1.p53,
+    -0x1.p-149
+  },
+  { // Entry 188
+    0x1.p53,
+    0x1.p53,
+    0.0
+  },
+  { // Entry 189
+    0x1.p53,
+    0x1.p53,
+    0x1.p-149
+  },
+  { // Entry 190
+    0x1.000002p53,
+    0x1.000002p53,
+    -0x1.p-149
+  },
+  { // Entry 191
+    0x1.000002p53,
+    0x1.000002p53,
+    0.0
+  },
+  { // Entry 192
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.p-149
+  },
+  { // Entry 193
+    0x1.fffffep-54,
+    0x1.fffffep-54,
+    -0x1.p-149
+  },
+  { // Entry 194
+    0x1.fffffep-54,
+    0x1.fffffep-54,
+    0.0
+  },
+  { // Entry 195
+    0x1.fffffep-54,
+    0x1.fffffep-54,
+    0x1.p-149
+  },
+  { // Entry 196
+    0x1.p-53,
+    0x1.p-53,
+    -0x1.p-149
+  },
+  { // Entry 197
+    0x1.p-53,
+    0x1.p-53,
+    0.0
+  },
+  { // Entry 198
+    0x1.p-53,
+    0x1.p-53,
+    0x1.p-149
+  },
+  { // Entry 199
+    0x1.000002p-53,
+    0x1.000002p-53,
+    -0x1.p-149
+  },
+  { // Entry 200
+    0x1.000002p-53,
+    0x1.000002p-53,
+    0.0
+  },
+  { // Entry 201
+    0x1.000002p-53,
+    0x1.000002p-53,
+    0x1.p-149
+  },
+  { // Entry 202
+    0x1.fffffe000000000000000000003fffffp52,
+    0x1.fffffep52,
+    0x1.fffffep-1
+  },
+  { // Entry 203
+    0x1.fffffe0000000000000000000040p52,
+    0x1.fffffep52,
+    0x1.p0
+  },
+  { // Entry 204
+    0x1.fffffe00000000000000000000400001p52,
+    0x1.fffffep52,
+    0x1.000002p0
+  },
+  { // Entry 205
+    0x1.000000000000000000000000001fffffp53,
+    0x1.p53,
+    0x1.fffffep-1
+  },
+  { // Entry 206
+    0x1.000000000000000000000000001fffffp53,
+    0x1.p53,
+    0x1.p0
+  },
+  { // Entry 207
+    0x1.0000000000000000000000000020p53,
+    0x1.p53,
+    0x1.000002p0
+  },
+  { // Entry 208
+    0x1.000002000000000000000000001fffffp53,
+    0x1.000002p53,
+    0x1.fffffep-1
+  },
+  { // Entry 209
+    0x1.000002000000000000000000001fffffp53,
+    0x1.000002p53,
+    0x1.p0
+  },
+  { // Entry 210
+    0x1.0000020000000000000000000020p53,
+    0x1.000002p53,
+    0x1.000002p0
+  },
+  { // Entry 211
+    0x1.fffffe000000000000000000003fffffp-1,
+    0x1.fffffep-54,
+    0x1.fffffep-1
+  },
+  { // Entry 212
+    0x1.000000000000000000000000001fffffp0,
+    0x1.fffffep-54,
+    0x1.p0
+  },
+  { // Entry 213
+    0x1.000002000000000000000000001fffffp0,
+    0x1.fffffep-54,
+    0x1.000002p0
+  },
+  { // Entry 214
+    0x1.fffffe0000000000000000000040p-1,
+    0x1.p-53,
+    0x1.fffffep-1
+  },
+  { // Entry 215
+    0x1.000000000000000000000000001fffffp0,
+    0x1.p-53,
+    0x1.p0
+  },
+  { // Entry 216
+    0x1.000002000000000000000000001fffffp0,
+    0x1.p-53,
+    0x1.000002p0
+  },
+  { // Entry 217
+    0x1.fffffe00000000000000000000400001p-1,
+    0x1.000002p-53,
+    0x1.fffffep-1
+  },
+  { // Entry 218
+    0x1.0000000000000000000000000020p0,
+    0x1.000002p-53,
+    0x1.p0
+  },
+  { // Entry 219
+    0x1.0000020000000000000000000020p0,
+    0x1.000002p-53,
+    0x1.000002p0
+  },
+  { // Entry 220
+    0x1.fffffe00003fffffbffffc000004p20,
+    0x1.fffffep20,
+    0x1.fffffep-1
+  },
+  { // Entry 221
+    0x1.fffffe00004000003ffffc3ffff440p20,
+    0x1.fffffep20,
+    0x1.p0
+  },
+  { // Entry 222
+    0x1.fffffe00004000013ffffe3fffd63fffp20,
+    0x1.fffffep20,
+    0x1.000002p0
+  },
+  { // Entry 223
+    0x1.00000000001fffffbffffe200008p21,
+    0x1.p21,
+    0x1.fffffep-1
+  },
+  { // Entry 224
+    0x1.00000000001ffffffffffep21,
+    0x1.p21,
+    0x1.p0
+  },
+  { // Entry 225
+    0x1.00000000002000007ffffe7ffff0p21,
+    0x1.p21,
+    0x1.000002p0
+  },
+  { // Entry 226
+    0x1.00000200001fffff7fffff200011bfffp21,
+    0x1.000002p21,
+    0x1.fffffep-1
+  },
+  { // Entry 227
+    0x1.00000200001fffffbffffe80000bp21,
+    0x1.000002p21,
+    0x1.p0
+  },
+  { // Entry 228
+    0x1.00000200002000003ffffdfffffcp21,
+    0x1.000002p21,
+    0x1.000002p0
+  },
+  { // Entry 229
+    0x1.fffffe00000fffffefffffc0000040p21,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 230
+    0x1.fffffe00001000000fffffcfffff50p21,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 231
+    0x1.fffffe00001000005000004ffffdcfffp21,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 232
+    0x1.000000000007ffffefffffe8000080p22,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 233
+    0x1.000000000007ffffffffffe0p22,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 234
+    0x1.00000000000800001ffffffffffeffffp22,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 235
+    0x1.000002000007ffffe00000280000afffp22,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 236
+    0x1.000002000007fffff000000000007fffp22,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 237
+    0x1.00000200000800000fffffdfffffc0p22,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 238
+    0x1.fffffe000003fffffbfffffc000004p22,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 239
+    0x1.fffffe000004000003fffffffffff7ffp22,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 240
+    0x1.fffffe00000400001400001ffffff7ffp22,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 241
+    0x1.000000000001fffffc000000000007ffp23,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 242
+    0x1.000000000001fffffffffffep23,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 243
+    0x1.000000000002000008000005ffffefffp23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 244
+    0x1.000002000001fffff800000fffffefffp23,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 245
+    0x1.000002000001fffffc000005fffffbffp23,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 246
+    0x1.000002000002000003fffffdfffffcp23,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 247
+    0x1.fffffe000000fffffeffffffc0000040p23,
+    0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 248
+    0x1.fffffe000001000001000000c000003fp23,
+    0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 249
+    0x1.fffffe000001000005000008c000063fp23,
+    0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 250
+    0x1.0000000000007fffff0000006000007fp24,
+    0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 251
+    0x1.0000000000007fffffffffffe0p24,
+    0x1.p24,
+    0x1.p0
+  },
+  { // Entry 252
+    0x1.000000000000800002000001dffffeffp24,
+    0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 253
+    0x1.0000020000007ffffe0000045ffff840p24,
+    0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 254
+    0x1.0000020000007fffff000001dffffcc0p24,
+    0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 255
+    0x1.000002000000800000ffffffdfffffc0p24,
+    0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 256
+    0x1.fffffe0000003fffffbffffffc000004p24,
+    0x1.fffffep24,
+    0x1.fffffep-1
+  },
+  { // Entry 257
+    0x1.fffffe0000004000004000003c000034p24,
+    0x1.fffffep24,
+    0x1.p0
+  },
+  { // Entry 258
+    0x1.fffffe0000004000014000023c000214p24,
+    0x1.fffffep24,
+    0x1.000002p0
+  },
+  { // Entry 259
+    0x1.0000000000001fffffc000001e000007p25,
+    0x1.p25,
+    0x1.fffffep-1
+  },
+  { // Entry 260
+    0x1.0000000000001ffffffffffffep25,
+    0x1.p25,
+    0x1.p0
+  },
+  { // Entry 261
+    0x1.0000000000002000008000007dffffefp25,
+    0x1.p25,
+    0x1.000002p0
+  },
+  { // Entry 262
+    0x1.0000020000001fffff8000011dfffdd4p25,
+    0x1.000002p25,
+    0x1.fffffep-1
+  },
+  { // Entry 263
+    0x1.0000020000001fffffc000007dffff0cp25,
+    0x1.000002p25,
+    0x1.p0
+  },
+  { // Entry 264
+    0x1.0000020000002000003ffffffdfffffcp25,
+    0x1.000002p25,
+    0x1.000002p0
+  },
+  { // Entry 265
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-60,
+    0x1.fffffep-61,
+    0x1.fffffep-61
+  },
+  { // Entry 266
+    0x1.6a09e5b2eec9c250117a2e237528575cp-60,
+    0x1.fffffep-61,
+    0x1.p-60
+  },
+  { // Entry 267
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-60,
+    0x1.fffffep-61,
+    0x1.000002p-60
+  },
+  { // Entry 268
+    0x1.6a09e5b2eec9c250117a2e237528575cp-60,
+    0x1.p-60,
+    0x1.fffffep-61
+  },
+  { // Entry 269
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-60,
+    0x1.p-60,
+    0x1.p-60
+  },
+  { // Entry 270
+    0x1.6a09e7d1fda3e601624311059df7157bp-60,
+    0x1.p-60,
+    0x1.000002p-60
+  },
+  { // Entry 271
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-60,
+    0x1.000002p-60,
+    0x1.fffffep-61
+  },
+  { // Entry 272
+    0x1.6a09e7d1fda3e601624311059df7157bp-60,
+    0x1.000002p-60,
+    0x1.p-60
+  },
+  { // Entry 273
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-60,
+    0x1.000002p-60,
+    0x1.000002p-60
+  },
+  { // Entry 274
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-10,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 275
+    0x1.6a09e5b2eec9c250117a2e237528575cp-10,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 276
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-10,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 277
+    0x1.6a09e5b2eec9c250117a2e237528575cp-10,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 278
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 279
+    0x1.6a09e7d1fda3e601624311059df7157bp-10,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 280
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-10,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 281
+    0x1.6a09e7d1fda3e601624311059df7157bp-10,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 282
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-10,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 283
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-1,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 284
+    0x1.6a09e5b2eec9c250117a2e237528575cp-1,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 285
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-1,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 286
+    0x1.6a09e5b2eec9c250117a2e237528575cp-1,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 287
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 288
+    0x1.6a09e7d1fda3e601624311059df7157bp-1,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 289
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-1,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 290
+    0x1.6a09e7d1fda3e601624311059df7157bp-1,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 291
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-1,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 292
+    0x1.6a09e4fde9d66114f6320ab3ef821653p1,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 293
+    0x1.6a09e5b2eec9c250117a2e237528575cp1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 294
+    0x1.6a09e71cf8b1944db3c8e462b0886601p1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 295
+    0x1.6a09e5b2eec9c250117a2e237528575cp1,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 296
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 297
+    0x1.6a09e7d1fda3e601624311059df7157bp1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 298
+    0x1.6a09e71cf8b1944db3c8e462b0886601p1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 299
+    0x1.6a09e7d1fda3e601624311059df7157bp1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 300
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 301
+    0x1.6a09e4fde9d66114f6320ab3ef821653p10,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 302
+    0x1.6a09e5b2eec9c250117a2e237528575cp10,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 303
+    0x1.6a09e71cf8b1944db3c8e462b0886601p10,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 304
+    0x1.6a09e5b2eec9c250117a2e237528575cp10,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 305
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 306
+    0x1.6a09e7d1fda3e601624311059df7157bp10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 307
+    0x1.6a09e71cf8b1944db3c8e462b0886601p10,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 308
+    0x1.6a09e7d1fda3e601624311059df7157bp10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 309
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 310
+    0x1.6a09e4fde9d66114f6320ab3ef821653p60,
+    0x1.fffffep59,
+    0x1.fffffep59
+  },
+  { // Entry 311
+    0x1.6a09e5b2eec9c250117a2e237528575cp60,
+    0x1.fffffep59,
+    0x1.p60
+  },
+  { // Entry 312
+    0x1.6a09e71cf8b1944db3c8e462b0886601p60,
+    0x1.fffffep59,
+    0x1.000002p60
+  },
+  { // Entry 313
+    0x1.6a09e5b2eec9c250117a2e237528575cp60,
+    0x1.p60,
+    0x1.fffffep59
+  },
+  { // Entry 314
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep60,
+    0x1.p60,
+    0x1.p60
+  },
+  { // Entry 315
+    0x1.6a09e7d1fda3e601624311059df7157bp60,
+    0x1.p60,
+    0x1.000002p60
+  },
+  { // Entry 316
+    0x1.6a09e71cf8b1944db3c8e462b0886601p60,
+    0x1.000002p60,
+    0x1.fffffep59
+  },
+  { // Entry 317
+    0x1.6a09e7d1fda3e601624311059df7157bp60,
+    0x1.000002p60,
+    0x1.p60
+  },
+  { // Entry 318
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p60,
+    0x1.000002p60,
+    0x1.000002p60
+  },
+  { // Entry 319
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.fffffep-1
+  },
+  { // Entry 320
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.p0
+  },
+  { // Entry 321
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.000002p0
+  },
+  { // Entry 322
+    0x1.p127,
+    0x1.p127,
+    0x1.fffffep-1
+  },
+  { // Entry 323
+    0x1.p127,
+    0x1.p127,
+    0x1.p0
+  },
+  { // Entry 324
+    0x1.p127,
+    0x1.p127,
+    0x1.000002p0
+  },
+  { // Entry 325
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.fffffep-1
+  },
+  { // Entry 326
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.p0
+  },
+  { // Entry 327
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.000002p0
+  },
+  { // Entry 328
+    0x1.778d23d44b55c4e7b10db1b757f6ee55p-27,
+    0x1.00a434p-27,
+    0x1.122dc2p-27
+  },
+  { // Entry 329
+    0x1.778d254a171118efb3206477d0250ecdp-27,
+    0x1.00a434p-27,
+    0x1.122dc4p-27
+  },
+  { // Entry 330
+    0x1.778d26bfe2cdb2f186ce7d3b1303e445p-27,
+    0x1.00a434p-27,
+    0x1.122dc6p-27
+  },
+  { // Entry 331
+    0x1.778d25322e53c575779bf8453dfa3d1cp-27,
+    0x1.00a436p-27,
+    0x1.122dc2p-27
+  },
+  { // Entry 332
+    0x1.778d26a7fa0dbd3d308d85a2de5329b5p-27,
+    0x1.00a436p-27,
+    0x1.122dc4p-27
+  },
+  { // Entry 333
+    0x1.778d281dc5c8fafebca0051d801423f2p-27,
+    0x1.00a436p-27,
+    0x1.122dc6p-27
+  },
+  { // Entry 334
+    0x1.778d269011533a0fa573ec7af086bc32p-27,
+    0x1.00a438p-27,
+    0x1.122dc2p-27
+  },
+  { // Entry 335
+    0x1.778d2805dd0bd597165aecc2378bac1cp-27,
+    0x1.00a438p-27,
+    0x1.122dc4p-27
+  },
+  { // Entry 336
+    0x1.778d297ba8c5b7185be86b37ed71b7e7p-27,
+    0x1.00a438p-27,
+    0x1.122dc6p-27
+  },
+  { // Entry 337
+    0x1.74334e106cbed9ae84bc8c76dd5c5713p0,
+    0x1.0b25p0,
+    -0x1.032a76p0
+  },
+  { // Entry 338
+    0x1.74334cabea5b8f74d5d14c94e0c759e1p0,
+    0x1.0b25p0,
+    -0x1.032a74p0
+  },
+  { // Entry 339
+    0x1.74334b4767f9b00f6266f798ce03fe56p0,
+    0x1.0b25p0,
+    -0x1.032a72p0
+  },
+  { // Entry 340
+    0x1.74334f7fe8dc915f56954cb730ec4eacp0,
+    0x1.0b2502p0,
+    -0x1.032a76p0
+  },
+  { // Entry 341
+    0x1.74334e1b667aa723bef8bd9997e318dbp0,
+    0x1.0b2502p0,
+    -0x1.032a74p0
+  },
+  { // Entry 342
+    0x1.74334cb6e41a27bc64192c7623c9095ep0,
+    0x1.0b2502p0,
+    -0x1.032a72p0
+  },
+  { // Entry 343
+    0x1.743350ef64fb9e8af653c2c33082504fp0,
+    0x1.0b2504p0,
+    -0x1.032a76p0
+  },
+  { // Entry 344
+    0x1.74334f8ae29b144d7495e8f3d356be7fp0,
+    0x1.0b2504p0,
+    -0x1.032a74p0
+  },
+  { // Entry 345
+    0x1.74334e26603bf4e430d12029be7e9e50p0,
+    0x1.0b2504p0,
+    -0x1.032a72p0
+  },
+  { // Entry 346
+    0x1.b6d62fc6f7a81ec948a1141efc6052a7p7,
+    0x1.384560p7,
+    0x1.345342p7
+  },
+  { // Entry 347
+    0x1.b6d6312eb26c5bc486b92f8cf55694f0p7,
+    0x1.384560p7,
+    0x1.345344p7
+  },
+  { // Entry 348
+    0x1.b6d632966d31c73a4041badc1888237dp7,
+    0x1.384560p7,
+    0x1.345346p7
+  },
+  { // Entry 349
+    0x1.b6d631334cf2c0ff05d0de26ff401478p7,
+    0x1.384562p7,
+    0x1.345342p7
+  },
+  { // Entry 350
+    0x1.b6d6329b07b5d35237676d0ef4b9f426p7,
+    0x1.384562p7,
+    0x1.345344p7
+  },
+  { // Entry 351
+    0x1.b6d63402c27a141fe55cef1e3465ad6dp7,
+    0x1.384562p7,
+    0x1.345346p7
+  },
+  { // Entry 352
+    0x1.b6d6329fa23e8a16b9bb93298235048cp7,
+    0x1.384564p7,
+    0x1.345342p7
+  },
+  { // Entry 353
+    0x1.b6d634075d0071c1dfcec3418989e05ep7,
+    0x1.384564p7,
+    0x1.345344p7
+  },
+  { // Entry 354
+    0x1.b6d6356f17c387e7832f69c16c81e0ccp7,
+    0x1.384564p7,
+    0x1.345346p7
+  },
+  { // Entry 355
+    0x1.b6d6356f17c387e7832f69c16c81e0ccp-6,
+    -0x1.384564p-6,
+    -0x1.345346p-6
+  },
+  { // Entry 356
+    0x1.b6d634075d0071c1dfcec3418989e05ep-6,
+    -0x1.384564p-6,
+    -0x1.345344p-6
+  },
+  { // Entry 357
+    0x1.b6d6329fa23e8a16b9bb93298235048cp-6,
+    -0x1.384564p-6,
+    -0x1.345342p-6
+  },
+  { // Entry 358
+    0x1.b6d63402c27a141fe55cef1e3465ad6dp-6,
+    -0x1.384562p-6,
+    -0x1.345346p-6
+  },
+  { // Entry 359
+    0x1.b6d6329b07b5d35237676d0ef4b9f426p-6,
+    -0x1.384562p-6,
+    -0x1.345344p-6
+  },
+  { // Entry 360
+    0x1.b6d631334cf2c0ff05d0de26ff401478p-6,
+    -0x1.384562p-6,
+    -0x1.345342p-6
+  },
+  { // Entry 361
+    0x1.b6d632966d31c73a4041badc1888237dp-6,
+    -0x1.384560p-6,
+    -0x1.345346p-6
+  },
+  { // Entry 362
+    0x1.b6d6312eb26c5bc486b92f8cf55694f0p-6,
+    -0x1.384560p-6,
+    -0x1.345344p-6
+  },
+  { // Entry 363
+    0x1.b6d62fc6f7a81ec948a1141efc6052a7p-6,
+    -0x1.384560p-6,
+    -0x1.345342p-6
+  },
+  { // Entry 364
+    0x1.9a134250dd50582b3680d82375c95486p-16,
+    -0x1.384564p-16,
+    -0x1.09cc3ep-16
+  },
+  { // Entry 365
+    0x1.9a1341050095587ce0ff2f690abe3130p-16,
+    -0x1.384564p-16,
+    -0x1.09cc3cp-16
+  },
+  { // Entry 366
+    0x1.9a133fb923dbcb7f9d68db36361f7a4cp-16,
+    -0x1.384564p-16,
+    -0x1.09cc3ap-16
+  },
+  { // Entry 367
+    0x1.9a1340cafa61a0e627789b5e20463d1fp-16,
+    -0x1.384562p-16,
+    -0x1.09cc3ep-16
+  },
+  { // Entry 368
+    0x1.9a133f7f1da565b1a938b5bc2a05ad2bp-16,
+    -0x1.384562p-16,
+    -0x1.09cc3cp-16
+  },
+  { // Entry 369
+    0x1.9a133e3340ea9d2e3c45e546f2b30188p-16,
+    -0x1.384562p-16,
+    -0x1.09cc3ap-16
+  },
+  { // Entry 370
+    0x1.9a133f451773f6322dcdf8373e99ef77p-16,
+    -0x1.384560p-16,
+    -0x1.09cc3ep-16
+  },
+  { // Entry 371
+    0x1.9a133df93ab67f77855132975a6d3aa2p-16,
+    -0x1.384560p-16,
+    -0x1.09cc3cp-16
+  },
+  { // Entry 372
+    0x1.9a133cad5dfa7b6ded8342c2ed23507ep-16,
+    -0x1.384560p-16,
+    -0x1.09cc3ap-16
+  },
+  { // Entry 373
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-6,
+    -0x1.000002p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 374
+    0x1.6a09e7d1fda3e601624311059df7157bp-6,
+    -0x1.000002p-6,
+    -0x1.p-6
+  },
+  { // Entry 375
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-6,
+    -0x1.000002p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 376
+    0x1.6a09e7d1fda3e601624311059df7157bp-6,
+    -0x1.p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 377
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-6,
+    -0x1.p-6,
+    -0x1.p-6
+  },
+  { // Entry 378
+    0x1.6a09e5b2eec9c250117a2e237528575cp-6,
+    -0x1.p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 379
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-6,
+    -0x1.fffffep-7,
+    -0x1.000002p-6
+  },
+  { // Entry 380
+    0x1.6a09e5b2eec9c250117a2e237528575cp-6,
+    -0x1.fffffep-7,
+    -0x1.p-6
+  },
+  { // Entry 381
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-6,
+    -0x1.fffffep-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 382
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 383
+    0x1.p-149,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 384
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 385
+    0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 386
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 387
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 388
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 389
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 390
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 391
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 392
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 393
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 394
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 395
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 396
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 397
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 398
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 399
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 400
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 401
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 402
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 403
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 404
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 405
+    HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 406
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 407
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 408
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 409
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 410
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 411
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 412
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 413
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 414
+    HUGE_VALF,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 415
+    HUGE_VALF,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 416
+    HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 417
+    HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 418
+    HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 419
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 420
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 421
+    HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 422
+    HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 423
+    HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 424
+    HUGE_VALF,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 425
+    HUGE_VALF,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 426
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 427
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 428
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 429
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 430
+    0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 431
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 432
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 433
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 434
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 435
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 436
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 437
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 438
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 439
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 440
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 441
+    0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 442
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 443
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 444
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 445
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 446
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 447
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 448
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 449
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 450
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 451
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 452
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 453
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 454
+    0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 455
+    0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 456
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 457
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 458
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 459
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 460
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 461
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 462
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 463
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 464
+    0x1.000000000001fffffffffffep-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 465
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 466
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 467
+    0x1.40p2,
+    0x1.80p1,
+    0x1.p2
+  },
+  { // Entry 468
+    0x1.40p2,
+    0x1.80p1,
+    -0x1.p2
+  },
+  { // Entry 469
+    0x1.a0p3,
+    0x1.40p2,
+    0x1.80p3
+  },
+  { // Entry 470
+    0x1.a0p3,
+    0x1.40p2,
+    -0x1.80p3
+  }
+};
diff --git a/tests/math_data/ilogb_intel_data.h b/tests/math_data/ilogb_intel_data.h
new file mode 100644
index 0000000..50a3a7f
--- /dev/null
+++ b/tests/math_data/ilogb_intel_data.h
@@ -0,0 +1,890 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_int_1_t<double> g_ilogb_intel_data[] = {
+  { // Entry 0
+    (int)0x1.90p6,
+    0x1.0p100
+  },
+  { // Entry 1
+    (int)0x1.90p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 2
+    (int)0x1.90p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 3
+    (int)0x1.90p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 4
+    (int)0x1.90p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 5
+    (int)0x1.90p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 6
+    (int)0x1.90p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 7
+    (int)0x1.90p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 8
+    (int)0x1.90p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 9
+    (int)0x1.90p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 10
+    (int)0x1.94p6,
+    0x1.0p101
+  },
+  { // Entry 11
+    (int)0x1.90p7,
+    0x1.0p200
+  },
+  { // Entry 12
+    (int)0x1.90p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 13
+    (int)0x1.90p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 14
+    (int)0x1.90p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 15
+    (int)0x1.90p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 16
+    (int)0x1.90p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 17
+    (int)0x1.90p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 18
+    (int)0x1.90p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 19
+    (int)0x1.90p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 20
+    (int)0x1.90p7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 21
+    (int)0x1.92p7,
+    0x1.0p201
+  },
+  { // Entry 22
+    (int)0x1.f4p9,
+    0x1.0p1000
+  },
+  { // Entry 23
+    (int)0x1.f4p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 24
+    (int)0x1.f4p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 25
+    (int)0x1.f4p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 26
+    (int)0x1.f4p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 27
+    (int)0x1.f4p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 28
+    (int)0x1.f4p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 29
+    (int)0x1.f4p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 30
+    (int)0x1.f4p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 31
+    (int)0x1.f4p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 32
+    (int)0x1.f480p9,
+    0x1.0p1001
+  },
+  { // Entry 33
+    (int)0x1.94p6,
+    -0x1.0p101
+  },
+  { // Entry 34
+    (int)0x1.90p6,
+    -0x1.e666666666666p100
+  },
+  { // Entry 35
+    (int)0x1.90p6,
+    -0x1.cccccccccccccp100
+  },
+  { // Entry 36
+    (int)0x1.90p6,
+    -0x1.b333333333332p100
+  },
+  { // Entry 37
+    (int)0x1.90p6,
+    -0x1.9999999999998p100
+  },
+  { // Entry 38
+    (int)0x1.90p6,
+    -0x1.7fffffffffffep100
+  },
+  { // Entry 39
+    (int)0x1.90p6,
+    -0x1.6666666666664p100
+  },
+  { // Entry 40
+    (int)0x1.90p6,
+    -0x1.4cccccccccccap100
+  },
+  { // Entry 41
+    (int)0x1.90p6,
+    -0x1.3333333333330p100
+  },
+  { // Entry 42
+    (int)0x1.90p6,
+    -0x1.1999999999996p100
+  },
+  { // Entry 43
+    (int)0x1.90p6,
+    -0x1.0p100
+  },
+  { // Entry 44
+    (int)0x1.92p7,
+    -0x1.0p201
+  },
+  { // Entry 45
+    (int)0x1.90p7,
+    -0x1.e666666666666p200
+  },
+  { // Entry 46
+    (int)0x1.90p7,
+    -0x1.cccccccccccccp200
+  },
+  { // Entry 47
+    (int)0x1.90p7,
+    -0x1.b333333333332p200
+  },
+  { // Entry 48
+    (int)0x1.90p7,
+    -0x1.9999999999998p200
+  },
+  { // Entry 49
+    (int)0x1.90p7,
+    -0x1.7fffffffffffep200
+  },
+  { // Entry 50
+    (int)0x1.90p7,
+    -0x1.6666666666664p200
+  },
+  { // Entry 51
+    (int)0x1.90p7,
+    -0x1.4cccccccccccap200
+  },
+  { // Entry 52
+    (int)0x1.90p7,
+    -0x1.3333333333330p200
+  },
+  { // Entry 53
+    (int)0x1.90p7,
+    -0x1.1999999999996p200
+  },
+  { // Entry 54
+    (int)0x1.90p7,
+    -0x1.0p200
+  },
+  { // Entry 55
+    (int)0x1.f480p9,
+    -0x1.0p1001
+  },
+  { // Entry 56
+    (int)0x1.f4p9,
+    -0x1.e666666666666p1000
+  },
+  { // Entry 57
+    (int)0x1.f4p9,
+    -0x1.cccccccccccccp1000
+  },
+  { // Entry 58
+    (int)0x1.f4p9,
+    -0x1.b333333333332p1000
+  },
+  { // Entry 59
+    (int)0x1.f4p9,
+    -0x1.9999999999998p1000
+  },
+  { // Entry 60
+    (int)0x1.f4p9,
+    -0x1.7fffffffffffep1000
+  },
+  { // Entry 61
+    (int)0x1.f4p9,
+    -0x1.6666666666664p1000
+  },
+  { // Entry 62
+    (int)0x1.f4p9,
+    -0x1.4cccccccccccap1000
+  },
+  { // Entry 63
+    (int)0x1.f4p9,
+    -0x1.3333333333330p1000
+  },
+  { // Entry 64
+    (int)0x1.f4p9,
+    -0x1.1999999999996p1000
+  },
+  { // Entry 65
+    (int)0x1.f4p9,
+    -0x1.0p1000
+  },
+  { // Entry 66
+    (int)0x1.90p5,
+    0x1.0p50
+  },
+  { // Entry 67
+    (int)0x1.90p5,
+    0x1.199999999999ap50
+  },
+  { // Entry 68
+    (int)0x1.90p5,
+    0x1.3333333333334p50
+  },
+  { // Entry 69
+    (int)0x1.90p5,
+    0x1.4cccccccccccep50
+  },
+  { // Entry 70
+    (int)0x1.90p5,
+    0x1.6666666666668p50
+  },
+  { // Entry 71
+    (int)0x1.90p5,
+    0x1.8000000000002p50
+  },
+  { // Entry 72
+    (int)0x1.90p5,
+    0x1.999999999999cp50
+  },
+  { // Entry 73
+    (int)0x1.90p5,
+    0x1.b333333333336p50
+  },
+  { // Entry 74
+    (int)0x1.90p5,
+    0x1.cccccccccccd0p50
+  },
+  { // Entry 75
+    (int)0x1.90p5,
+    0x1.e66666666666ap50
+  },
+  { // Entry 76
+    (int)0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 77
+    (int)0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 78
+    (int)0x1.98p5,
+    0x1.199999999999ap51
+  },
+  { // Entry 79
+    (int)0x1.98p5,
+    0x1.3333333333334p51
+  },
+  { // Entry 80
+    (int)0x1.98p5,
+    0x1.4cccccccccccep51
+  },
+  { // Entry 81
+    (int)0x1.98p5,
+    0x1.6666666666668p51
+  },
+  { // Entry 82
+    (int)0x1.98p5,
+    0x1.8000000000002p51
+  },
+  { // Entry 83
+    (int)0x1.98p5,
+    0x1.999999999999cp51
+  },
+  { // Entry 84
+    (int)0x1.98p5,
+    0x1.b333333333336p51
+  },
+  { // Entry 85
+    (int)0x1.98p5,
+    0x1.cccccccccccd0p51
+  },
+  { // Entry 86
+    (int)0x1.98p5,
+    0x1.e66666666666ap51
+  },
+  { // Entry 87
+    (int)0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 88
+    (int)0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 89
+    (int)0x1.a0p5,
+    0x1.199999999999ap52
+  },
+  { // Entry 90
+    (int)0x1.a0p5,
+    0x1.3333333333334p52
+  },
+  { // Entry 91
+    (int)0x1.a0p5,
+    0x1.4cccccccccccep52
+  },
+  { // Entry 92
+    (int)0x1.a0p5,
+    0x1.6666666666668p52
+  },
+  { // Entry 93
+    (int)0x1.a0p5,
+    0x1.8000000000002p52
+  },
+  { // Entry 94
+    (int)0x1.a0p5,
+    0x1.999999999999cp52
+  },
+  { // Entry 95
+    (int)0x1.a0p5,
+    0x1.b333333333336p52
+  },
+  { // Entry 96
+    (int)0x1.a0p5,
+    0x1.cccccccccccd0p52
+  },
+  { // Entry 97
+    (int)0x1.a0p5,
+    0x1.e66666666666ap52
+  },
+  { // Entry 98
+    (int)0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 99
+    (int)0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 100
+    (int)0x1.a8p5,
+    0x1.199999999999ap53
+  },
+  { // Entry 101
+    (int)0x1.a8p5,
+    0x1.3333333333334p53
+  },
+  { // Entry 102
+    (int)0x1.a8p5,
+    0x1.4cccccccccccep53
+  },
+  { // Entry 103
+    (int)0x1.a8p5,
+    0x1.6666666666668p53
+  },
+  { // Entry 104
+    (int)0x1.a8p5,
+    0x1.8000000000002p53
+  },
+  { // Entry 105
+    (int)0x1.a8p5,
+    0x1.999999999999cp53
+  },
+  { // Entry 106
+    (int)0x1.a8p5,
+    0x1.b333333333336p53
+  },
+  { // Entry 107
+    (int)0x1.a8p5,
+    0x1.cccccccccccd0p53
+  },
+  { // Entry 108
+    (int)0x1.a8p5,
+    0x1.e66666666666ap53
+  },
+  { // Entry 109
+    (int)0x1.b0p5,
+    0x1.0p54
+  },
+  { // Entry 110
+    (int)-0x1.0080p10,
+    0x1.0p-1026
+  },
+  { // Entry 111
+    (int)-0x1.p10,
+    0x1.d333333333334p-1024
+  },
+  { // Entry 112
+    (int)-0x1.ff80p9,
+    0x1.b333333333334p-1023
+  },
+  { // Entry 113
+    (int)-0x1.ffp9,
+    0x1.3e66666666667p-1022
+  },
+  { // Entry 114
+    (int)-0x1.ffp9,
+    0x1.a333333333334p-1022
+  },
+  { // Entry 115
+    (int)-0x1.fe80p9,
+    0x1.040p-1021
+  },
+  { // Entry 116
+    (int)-0x1.fe80p9,
+    0x1.3666666666666p-1021
+  },
+  { // Entry 117
+    (int)-0x1.fe80p9,
+    0x1.68cccccccccccp-1021
+  },
+  { // Entry 118
+    (int)-0x1.fe80p9,
+    0x1.9b33333333332p-1021
+  },
+  { // Entry 119
+    (int)-0x1.fe80p9,
+    0x1.cd99999999998p-1021
+  },
+  { // Entry 120
+    (int)-0x1.fe80p9,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 121
+    (int)0x1.90p5,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 122
+    (int)0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 123
+    (int)0x1.98p5,
+    0x1.0000000000001p51
+  },
+  { // Entry 124
+    (int)0x1.98p5,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 125
+    (int)0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 126
+    (int)0x1.a0p5,
+    0x1.0000000000001p52
+  },
+  { // Entry 127
+    (int)0x1.a0p5,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 128
+    (int)0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 129
+    (int)0x1.a8p5,
+    0x1.0000000000001p53
+  },
+  { // Entry 130
+    (int)0x1.98p5,
+    -0x1.0000000000001p51
+  },
+  { // Entry 131
+    (int)0x1.98p5,
+    -0x1.0p51
+  },
+  { // Entry 132
+    (int)0x1.90p5,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 133
+    (int)0x1.a0p5,
+    -0x1.0000000000001p52
+  },
+  { // Entry 134
+    (int)0x1.a0p5,
+    -0x1.0p52
+  },
+  { // Entry 135
+    (int)0x1.98p5,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 136
+    (int)0x1.a8p5,
+    -0x1.0000000000001p53
+  },
+  { // Entry 137
+    (int)0x1.a8p5,
+    -0x1.0p53
+  },
+  { // Entry 138
+    (int)0x1.a0p5,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 139
+    (int)0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    (int)0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    (int)-0x1.c0p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 142
+    (int)-0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 143
+    (int)-0x1.80p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 144
+    (int)-0x1.80p2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 145
+    (int)-0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 146
+    (int)-0x1.40p2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 147
+    (int)-0x1.40p2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 148
+    (int)-0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 149
+    (int)-0x1.p2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 150
+    (int)-0x1.p2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 151
+    (int)-0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 152
+    (int)-0x1.80p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 153
+    (int)-0x1.80p1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 154
+    (int)-0x1.p1,
+    0x1.0p-2
+  },
+  { // Entry 155
+    (int)-0x1.p1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 156
+    (int)-0x1.p1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 157
+    (int)-0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 158
+    (int)-0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 159
+    (int)-0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 160
+    (int)-0x1.fffffffcp30,
+    -0.0
+  },
+  { // Entry 161
+    (int)-0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 162
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    (int)0.0,
+    0x1.0p0
+  },
+  { // Entry 164
+    (int)0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    (int)0.0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 166
+    (int)0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 167
+    (int)0x1.p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 168
+    (int)0x1.p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 169
+    (int)0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 170
+    (int)0x1.p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 171
+    (int)0x1.p1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 172
+    (int)0x1.80p1,
+    0x1.0p3
+  },
+  { // Entry 173
+    (int)0x1.80p1,
+    0x1.0000000000001p3
+  },
+  { // Entry 174
+    (int)0x1.80p1,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 175
+    (int)0x1.p2,
+    0x1.0p4
+  },
+  { // Entry 176
+    (int)0x1.p2,
+    0x1.0000000000001p4
+  },
+  { // Entry 177
+    (int)0x1.p2,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 178
+    (int)0x1.40p2,
+    0x1.0p5
+  },
+  { // Entry 179
+    (int)0x1.40p2,
+    0x1.0000000000001p5
+  },
+  { // Entry 180
+    (int)0x1.40p2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 181
+    (int)0x1.80p2,
+    0x1.0p6
+  },
+  { // Entry 182
+    (int)0x1.80p2,
+    0x1.0000000000001p6
+  },
+  { // Entry 183
+    (int)0x1.80p2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 184
+    (int)0x1.c0p2,
+    0x1.0p7
+  },
+  { // Entry 185
+    (int)0x1.c0p2,
+    0x1.0000000000001p7
+  },
+  { // Entry 186
+    (int)0x1.fffffffcp30,
+    HUGE_VAL
+  },
+  { // Entry 187
+    (int)0x1.fffffffcp30,
+    -HUGE_VAL
+  },
+  { // Entry 188
+    (int)-0x1.fffffffcp30,
+    0.0
+  },
+  { // Entry 189
+    (int)-0x1.fffffffcp30,
+    -0.0
+  },
+  { // Entry 190
+    (int)0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    (int)0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    (int)0x1.ff80p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    (int)0x1.ff80p9,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 194
+    (int)0x1.p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 195
+    (int)0x1.p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 196
+    (int)0.0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 197
+    (int)0.0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 198
+    (int)0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 199
+    (int)0.0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 200
+    (int)0.0,
+    0x1.0p0
+  },
+  { // Entry 201
+    (int)0.0,
+    -0x1.0p0
+  },
+  { // Entry 202
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 203
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 204
+    (int)-0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 205
+    (int)-0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 206
+    (int)-0x1.ffp9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 207
+    (int)-0x1.ffp9,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 208
+    (int)-0x1.ffp9,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    (int)-0x1.ffp9,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    (int)-0x1.ff80p9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 211
+    (int)-0x1.ff80p9,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    (int)-0x1.ff80p9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 213
+    (int)-0x1.ff80p9,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 214
+    (int)-0x1.0c40p10,
+    0x1.0p-1073
+  },
+  { // Entry 215
+    (int)-0x1.0c40p10,
+    -0x1.0p-1073
+  },
+  { // Entry 216
+    (int)-0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 217
+    (int)-0x1.0c80p10,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/ilogbf_intel_data.h b/tests/math_data/ilogbf_intel_data.h
new file mode 100644
index 0000000..ef08fa3
--- /dev/null
+++ b/tests/math_data/ilogbf_intel_data.h
@@ -0,0 +1,714 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_int_1_t<float> g_ilogbf_intel_data[] = {
+  { // Entry 0
+    (int)0x1.90p6,
+    0x1.p100
+  },
+  { // Entry 1
+    (int)0x1.90p6,
+    0x1.19999ap100
+  },
+  { // Entry 2
+    (int)0x1.90p6,
+    0x1.333334p100
+  },
+  { // Entry 3
+    (int)0x1.90p6,
+    0x1.4ccccep100
+  },
+  { // Entry 4
+    (int)0x1.90p6,
+    0x1.666668p100
+  },
+  { // Entry 5
+    (int)0x1.90p6,
+    0x1.800002p100
+  },
+  { // Entry 6
+    (int)0x1.90p6,
+    0x1.99999cp100
+  },
+  { // Entry 7
+    (int)0x1.90p6,
+    0x1.b33336p100
+  },
+  { // Entry 8
+    (int)0x1.90p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 9
+    (int)0x1.90p6,
+    0x1.e6666ap100
+  },
+  { // Entry 10
+    (int)0x1.94p6,
+    0x1.p101
+  },
+  { // Entry 11
+    (int)0x1.94p6,
+    -0x1.p101
+  },
+  { // Entry 12
+    (int)0x1.90p6,
+    -0x1.e66666p100
+  },
+  { // Entry 13
+    (int)0x1.90p6,
+    -0x1.ccccccp100
+  },
+  { // Entry 14
+    (int)0x1.90p6,
+    -0x1.b33332p100
+  },
+  { // Entry 15
+    (int)0x1.90p6,
+    -0x1.999998p100
+  },
+  { // Entry 16
+    (int)0x1.90p6,
+    -0x1.7ffffep100
+  },
+  { // Entry 17
+    (int)0x1.90p6,
+    -0x1.666664p100
+  },
+  { // Entry 18
+    (int)0x1.90p6,
+    -0x1.4ccccap100
+  },
+  { // Entry 19
+    (int)0x1.90p6,
+    -0x1.333330p100
+  },
+  { // Entry 20
+    (int)0x1.90p6,
+    -0x1.199996p100
+  },
+  { // Entry 21
+    (int)0x1.90p6,
+    -0x1.p100
+  },
+  { // Entry 22
+    (int)0x1.50p4,
+    0x1.p21
+  },
+  { // Entry 23
+    (int)0x1.50p4,
+    0x1.19999ap21
+  },
+  { // Entry 24
+    (int)0x1.50p4,
+    0x1.333334p21
+  },
+  { // Entry 25
+    (int)0x1.50p4,
+    0x1.4ccccep21
+  },
+  { // Entry 26
+    (int)0x1.50p4,
+    0x1.666668p21
+  },
+  { // Entry 27
+    (int)0x1.50p4,
+    0x1.800002p21
+  },
+  { // Entry 28
+    (int)0x1.50p4,
+    0x1.99999cp21
+  },
+  { // Entry 29
+    (int)0x1.50p4,
+    0x1.b33336p21
+  },
+  { // Entry 30
+    (int)0x1.50p4,
+    0x1.ccccd0p21
+  },
+  { // Entry 31
+    (int)0x1.50p4,
+    0x1.e6666ap21
+  },
+  { // Entry 32
+    (int)0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 33
+    (int)0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 34
+    (int)0x1.60p4,
+    0x1.19999ap22
+  },
+  { // Entry 35
+    (int)0x1.60p4,
+    0x1.333334p22
+  },
+  { // Entry 36
+    (int)0x1.60p4,
+    0x1.4ccccep22
+  },
+  { // Entry 37
+    (int)0x1.60p4,
+    0x1.666668p22
+  },
+  { // Entry 38
+    (int)0x1.60p4,
+    0x1.800002p22
+  },
+  { // Entry 39
+    (int)0x1.60p4,
+    0x1.99999cp22
+  },
+  { // Entry 40
+    (int)0x1.60p4,
+    0x1.b33336p22
+  },
+  { // Entry 41
+    (int)0x1.60p4,
+    0x1.ccccd0p22
+  },
+  { // Entry 42
+    (int)0x1.60p4,
+    0x1.e6666ap22
+  },
+  { // Entry 43
+    (int)0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 44
+    (int)0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 45
+    (int)0x1.70p4,
+    0x1.19999ap23
+  },
+  { // Entry 46
+    (int)0x1.70p4,
+    0x1.333334p23
+  },
+  { // Entry 47
+    (int)0x1.70p4,
+    0x1.4ccccep23
+  },
+  { // Entry 48
+    (int)0x1.70p4,
+    0x1.666668p23
+  },
+  { // Entry 49
+    (int)0x1.70p4,
+    0x1.800002p23
+  },
+  { // Entry 50
+    (int)0x1.70p4,
+    0x1.99999cp23
+  },
+  { // Entry 51
+    (int)0x1.70p4,
+    0x1.b33336p23
+  },
+  { // Entry 52
+    (int)0x1.70p4,
+    0x1.ccccd0p23
+  },
+  { // Entry 53
+    (int)0x1.70p4,
+    0x1.e6666ap23
+  },
+  { // Entry 54
+    (int)0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 55
+    (int)0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 56
+    (int)0x1.80p4,
+    0x1.19999ap24
+  },
+  { // Entry 57
+    (int)0x1.80p4,
+    0x1.333334p24
+  },
+  { // Entry 58
+    (int)0x1.80p4,
+    0x1.4ccccep24
+  },
+  { // Entry 59
+    (int)0x1.80p4,
+    0x1.666668p24
+  },
+  { // Entry 60
+    (int)0x1.80p4,
+    0x1.800002p24
+  },
+  { // Entry 61
+    (int)0x1.80p4,
+    0x1.99999cp24
+  },
+  { // Entry 62
+    (int)0x1.80p4,
+    0x1.b33336p24
+  },
+  { // Entry 63
+    (int)0x1.80p4,
+    0x1.ccccd0p24
+  },
+  { // Entry 64
+    (int)0x1.80p4,
+    0x1.e6666ap24
+  },
+  { // Entry 65
+    (int)0x1.90p4,
+    0x1.p25
+  },
+  { // Entry 66
+    (int)-0x1.04p7,
+    0x1.p-130
+  },
+  { // Entry 67
+    (int)-0x1.p7,
+    0x1.d33330p-128
+  },
+  { // Entry 68
+    (int)-0x1.fcp6,
+    0x1.b33330p-127
+  },
+  { // Entry 69
+    (int)-0x1.f8p6,
+    0x1.3e6664p-126
+  },
+  { // Entry 70
+    (int)-0x1.f8p6,
+    0x1.a33330p-126
+  },
+  { // Entry 71
+    (int)-0x1.f4p6,
+    0x1.03fffep-125
+  },
+  { // Entry 72
+    (int)-0x1.f4p6,
+    0x1.366664p-125
+  },
+  { // Entry 73
+    (int)-0x1.f4p6,
+    0x1.68cccap-125
+  },
+  { // Entry 74
+    (int)-0x1.f4p6,
+    0x1.9b3330p-125
+  },
+  { // Entry 75
+    (int)-0x1.f4p6,
+    0x1.cd9996p-125
+  },
+  { // Entry 76
+    (int)-0x1.f4p6,
+    0x1.fffffcp-125
+  },
+  { // Entry 77
+    (int)0x1.50p4,
+    0x1.fffffep21
+  },
+  { // Entry 78
+    (int)0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 79
+    (int)0x1.60p4,
+    0x1.000002p22
+  },
+  { // Entry 80
+    (int)0x1.60p4,
+    0x1.fffffep22
+  },
+  { // Entry 81
+    (int)0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 82
+    (int)0x1.70p4,
+    0x1.000002p23
+  },
+  { // Entry 83
+    (int)0x1.70p4,
+    0x1.fffffep23
+  },
+  { // Entry 84
+    (int)0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 85
+    (int)0x1.80p4,
+    0x1.000002p24
+  },
+  { // Entry 86
+    (int)0x1.60p4,
+    -0x1.000002p22
+  },
+  { // Entry 87
+    (int)0x1.60p4,
+    -0x1.p22
+  },
+  { // Entry 88
+    (int)0x1.50p4,
+    -0x1.fffffep21
+  },
+  { // Entry 89
+    (int)0x1.70p4,
+    -0x1.000002p23
+  },
+  { // Entry 90
+    (int)0x1.70p4,
+    -0x1.p23
+  },
+  { // Entry 91
+    (int)0x1.60p4,
+    -0x1.fffffep22
+  },
+  { // Entry 92
+    (int)0x1.80p4,
+    -0x1.000002p24
+  },
+  { // Entry 93
+    (int)0x1.80p4,
+    -0x1.p24
+  },
+  { // Entry 94
+    (int)0x1.70p4,
+    -0x1.fffffep23
+  },
+  { // Entry 95
+    (int)0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 96
+    (int)0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 97
+    (int)-0x1.c0p2,
+    0x1.fffffep-7
+  },
+  { // Entry 98
+    (int)-0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 99
+    (int)-0x1.80p2,
+    0x1.000002p-6
+  },
+  { // Entry 100
+    (int)-0x1.80p2,
+    0x1.fffffep-6
+  },
+  { // Entry 101
+    (int)-0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 102
+    (int)-0x1.40p2,
+    0x1.000002p-5
+  },
+  { // Entry 103
+    (int)-0x1.40p2,
+    0x1.fffffep-5
+  },
+  { // Entry 104
+    (int)-0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 105
+    (int)-0x1.p2,
+    0x1.000002p-4
+  },
+  { // Entry 106
+    (int)-0x1.p2,
+    0x1.fffffep-4
+  },
+  { // Entry 107
+    (int)-0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 108
+    (int)-0x1.80p1,
+    0x1.000002p-3
+  },
+  { // Entry 109
+    (int)-0x1.80p1,
+    0x1.fffffep-3
+  },
+  { // Entry 110
+    (int)-0x1.p1,
+    0x1.p-2
+  },
+  { // Entry 111
+    (int)-0x1.p1,
+    0x1.000002p-2
+  },
+  { // Entry 112
+    (int)-0x1.p1,
+    0x1.fffffep-2
+  },
+  { // Entry 113
+    (int)-0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 114
+    (int)-0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 115
+    (int)-0x1.2ap7,
+    -0x1.p-149
+  },
+  { // Entry 116
+    (int)-0x1.fffffffcp30,
+    0.0
+  },
+  { // Entry 117
+    (int)-0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 118
+    (int)-0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 119
+    (int)0.0,
+    0x1.p0
+  },
+  { // Entry 120
+    (int)0.0,
+    0x1.000002p0
+  },
+  { // Entry 121
+    (int)0.0,
+    0x1.fffffep0
+  },
+  { // Entry 122
+    (int)0x1.p0,
+    0x1.p1
+  },
+  { // Entry 123
+    (int)0x1.p0,
+    0x1.000002p1
+  },
+  { // Entry 124
+    (int)0x1.p0,
+    0x1.fffffep1
+  },
+  { // Entry 125
+    (int)0x1.p1,
+    0x1.p2
+  },
+  { // Entry 126
+    (int)0x1.p1,
+    0x1.000002p2
+  },
+  { // Entry 127
+    (int)0x1.p1,
+    0x1.fffffep2
+  },
+  { // Entry 128
+    (int)0x1.80p1,
+    0x1.p3
+  },
+  { // Entry 129
+    (int)0x1.80p1,
+    0x1.000002p3
+  },
+  { // Entry 130
+    (int)0x1.80p1,
+    0x1.fffffep3
+  },
+  { // Entry 131
+    (int)0x1.p2,
+    0x1.p4
+  },
+  { // Entry 132
+    (int)0x1.p2,
+    0x1.000002p4
+  },
+  { // Entry 133
+    (int)0x1.p2,
+    0x1.fffffep4
+  },
+  { // Entry 134
+    (int)0x1.40p2,
+    0x1.p5
+  },
+  { // Entry 135
+    (int)0x1.40p2,
+    0x1.000002p5
+  },
+  { // Entry 136
+    (int)0x1.40p2,
+    0x1.fffffep5
+  },
+  { // Entry 137
+    (int)0x1.80p2,
+    0x1.p6
+  },
+  { // Entry 138
+    (int)0x1.80p2,
+    0x1.000002p6
+  },
+  { // Entry 139
+    (int)0x1.80p2,
+    0x1.fffffep6
+  },
+  { // Entry 140
+    (int)0x1.c0p2,
+    0x1.p7
+  },
+  { // Entry 141
+    (int)0x1.c0p2,
+    0x1.000002p7
+  },
+  { // Entry 142
+    (int)0x1.fffffffcp30,
+    HUGE_VALF
+  },
+  { // Entry 143
+    (int)0x1.fffffffcp30,
+    -HUGE_VALF
+  },
+  { // Entry 144
+    (int)-0x1.fffffffcp30,
+    0.0f
+  },
+  { // Entry 145
+    (int)-0x1.fffffffcp30,
+    -0.0f
+  },
+  { // Entry 146
+    (int)0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 147
+    (int)0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 148
+    (int)0x1.fcp6,
+    0x1.fffffcp127
+  },
+  { // Entry 149
+    (int)0x1.fcp6,
+    -0x1.fffffcp127
+  },
+  { // Entry 150
+    (int)0x1.p0,
+    0x1.921fb6p1
+  },
+  { // Entry 151
+    (int)0x1.p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 152
+    (int)0.0,
+    0x1.921fb6p0
+  },
+  { // Entry 153
+    (int)0.0,
+    -0x1.921fb6p0
+  },
+  { // Entry 154
+    (int)0.0,
+    0x1.000002p0
+  },
+  { // Entry 155
+    (int)0.0,
+    -0x1.000002p0
+  },
+  { // Entry 156
+    (int)0.0,
+    0x1.p0
+  },
+  { // Entry 157
+    (int)0.0,
+    -0x1.p0
+  },
+  { // Entry 158
+    (int)-0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    (int)-0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 160
+    (int)-0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 161
+    (int)-0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 162
+    (int)-0x1.f8p6,
+    0x1.000002p-126
+  },
+  { // Entry 163
+    (int)-0x1.f8p6,
+    -0x1.000002p-126
+  },
+  { // Entry 164
+    (int)-0x1.f8p6,
+    0x1.p-126
+  },
+  { // Entry 165
+    (int)-0x1.f8p6,
+    -0x1.p-126
+  },
+  { // Entry 166
+    (int)-0x1.fcp6,
+    0x1.fffffcp-127
+  },
+  { // Entry 167
+    (int)-0x1.fcp6,
+    -0x1.fffffcp-127
+  },
+  { // Entry 168
+    (int)-0x1.fcp6,
+    0x1.fffff8p-127
+  },
+  { // Entry 169
+    (int)-0x1.fcp6,
+    -0x1.fffff8p-127
+  },
+  { // Entry 170
+    (int)-0x1.28p7,
+    0x1.p-148
+  },
+  { // Entry 171
+    (int)-0x1.28p7,
+    -0x1.p-148
+  },
+  { // Entry 172
+    (int)-0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 173
+    (int)-0x1.2ap7,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/ldexp_intel_data.h b/tests/math_data/ldexp_intel_data.h
new file mode 100644
index 0000000..5d4ad1a
--- /dev/null
+++ b/tests/math_data/ldexp_intel_data.h
@@ -0,0 +1,4348 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, int> g_ldexp_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.55555555555560p-1024,
+    -0x1.5555555555556p-2,
+    (int)-1022
+  },
+  { // Entry 2
+    -0x1.6db6db6db6db70p-1023,
+    -0x1.6db6db6db6db7p-1,
+    (int)-1022
+  },
+  { // Entry 3
+    -0x1.8e38e38e38e390p-1023,
+    -0x1.8e38e38e38e39p-1,
+    (int)-1022
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    (int)-47
+  },
+  { // Entry 7
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 8
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 9
+    0x1.29e4129e4129e0p-1024,
+    0x1.29e4129e4129ep-7,
+    (int)-1017
+  },
+  { // Entry 10
+    HUGE_VAL,
+    0x1.8e147ae147ae1p0,
+    (int)2147483647
+  },
+  { // Entry 11
+    0.0,
+    0x1.dddddddddddddp-2,
+    (int)-1073
+  },
+  { // Entry 12
+    0x1.e0p-48,
+    0x1.ep-1071,
+    (int)1023
+  },
+  { // Entry 13
+    0.0,
+    0x1.f7df7df7df7dfp-2,
+    (int)-1073
+  },
+  { // Entry 14
+    0.0,
+    0x1.ffffffffffff0p-2,
+    (int)-1073
+  },
+  { // Entry 15
+    0x1.ffffffffffffc0p-1033,
+    0x1.ffffffffffffcp-1023,
+    (int)-10
+  },
+  { // Entry 16
+    0x1.ffffffffffffc0p-1022,
+    0x1.ffffffffffffcp-1023,
+    (int)1
+  },
+  { // Entry 17
+    0x1.ffffffffffffe0p-1070,
+    0x1.ffffffffffffep-1023,
+    (int)-47
+  },
+  { // Entry 18
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 19
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 20
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 21
+    -0x1.p-10,
+    -0x1.0p0,
+    (int)-10
+  },
+  { // Entry 22
+    -0x1.p-9,
+    -0x1.0p0,
+    (int)-9
+  },
+  { // Entry 23
+    -0x1.p-8,
+    -0x1.0p0,
+    (int)-8
+  },
+  { // Entry 24
+    -0x1.p-7,
+    -0x1.0p0,
+    (int)-7
+  },
+  { // Entry 25
+    -0x1.p-6,
+    -0x1.0p0,
+    (int)-6
+  },
+  { // Entry 26
+    -0x1.p-5,
+    -0x1.0p0,
+    (int)-5
+  },
+  { // Entry 27
+    -0x1.p-4,
+    -0x1.0p0,
+    (int)-4
+  },
+  { // Entry 28
+    -0x1.p-3,
+    -0x1.0p0,
+    (int)-3
+  },
+  { // Entry 29
+    -0x1.p-2,
+    -0x1.0p0,
+    (int)-2
+  },
+  { // Entry 30
+    -0x1.p-1,
+    -0x1.0p0,
+    (int)-1
+  },
+  { // Entry 31
+    -0x1.p0,
+    -0x1.0p0,
+    (int)0
+  },
+  { // Entry 32
+    -0x1.p1,
+    -0x1.0p0,
+    (int)1
+  },
+  { // Entry 33
+    -0x1.p2,
+    -0x1.0p0,
+    (int)2
+  },
+  { // Entry 34
+    -0x1.p3,
+    -0x1.0p0,
+    (int)3
+  },
+  { // Entry 35
+    -0x1.p4,
+    -0x1.0p0,
+    (int)4
+  },
+  { // Entry 36
+    -0x1.p5,
+    -0x1.0p0,
+    (int)5
+  },
+  { // Entry 37
+    -0x1.p6,
+    -0x1.0p0,
+    (int)6
+  },
+  { // Entry 38
+    -0x1.p7,
+    -0x1.0p0,
+    (int)7
+  },
+  { // Entry 39
+    -0x1.p8,
+    -0x1.0p0,
+    (int)8
+  },
+  { // Entry 40
+    -0x1.p9,
+    -0x1.0p0,
+    (int)9
+  },
+  { // Entry 41
+    -0x1.p10,
+    -0x1.0p0,
+    (int)10
+  },
+  { // Entry 42
+    -0x1.d1745d1745d170p-11,
+    -0x1.d1745d1745d17p-1,
+    (int)-10
+  },
+  { // Entry 43
+    -0x1.d1745d1745d170p-10,
+    -0x1.d1745d1745d17p-1,
+    (int)-9
+  },
+  { // Entry 44
+    -0x1.d1745d1745d170p-9,
+    -0x1.d1745d1745d17p-1,
+    (int)-8
+  },
+  { // Entry 45
+    -0x1.d1745d1745d170p-8,
+    -0x1.d1745d1745d17p-1,
+    (int)-7
+  },
+  { // Entry 46
+    -0x1.d1745d1745d170p-7,
+    -0x1.d1745d1745d17p-1,
+    (int)-6
+  },
+  { // Entry 47
+    -0x1.d1745d1745d170p-6,
+    -0x1.d1745d1745d17p-1,
+    (int)-5
+  },
+  { // Entry 48
+    -0x1.d1745d1745d170p-5,
+    -0x1.d1745d1745d17p-1,
+    (int)-4
+  },
+  { // Entry 49
+    -0x1.d1745d1745d170p-4,
+    -0x1.d1745d1745d17p-1,
+    (int)-3
+  },
+  { // Entry 50
+    -0x1.d1745d1745d170p-3,
+    -0x1.d1745d1745d17p-1,
+    (int)-2
+  },
+  { // Entry 51
+    -0x1.d1745d1745d170p-2,
+    -0x1.d1745d1745d17p-1,
+    (int)-1
+  },
+  { // Entry 52
+    -0x1.d1745d1745d170p-1,
+    -0x1.d1745d1745d17p-1,
+    (int)0
+  },
+  { // Entry 53
+    -0x1.d1745d1745d170p0,
+    -0x1.d1745d1745d17p-1,
+    (int)1
+  },
+  { // Entry 54
+    -0x1.d1745d1745d170p1,
+    -0x1.d1745d1745d17p-1,
+    (int)2
+  },
+  { // Entry 55
+    -0x1.d1745d1745d170p2,
+    -0x1.d1745d1745d17p-1,
+    (int)3
+  },
+  { // Entry 56
+    -0x1.d1745d1745d170p3,
+    -0x1.d1745d1745d17p-1,
+    (int)4
+  },
+  { // Entry 57
+    -0x1.d1745d1745d170p4,
+    -0x1.d1745d1745d17p-1,
+    (int)5
+  },
+  { // Entry 58
+    -0x1.d1745d1745d170p5,
+    -0x1.d1745d1745d17p-1,
+    (int)6
+  },
+  { // Entry 59
+    -0x1.d1745d1745d170p6,
+    -0x1.d1745d1745d17p-1,
+    (int)7
+  },
+  { // Entry 60
+    -0x1.d1745d1745d170p7,
+    -0x1.d1745d1745d17p-1,
+    (int)8
+  },
+  { // Entry 61
+    -0x1.d1745d1745d170p8,
+    -0x1.d1745d1745d17p-1,
+    (int)9
+  },
+  { // Entry 62
+    -0x1.d1745d1745d170p9,
+    -0x1.d1745d1745d17p-1,
+    (int)10
+  },
+  { // Entry 63
+    -0x1.a2e8ba2e8ba2e0p-11,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-10
+  },
+  { // Entry 64
+    -0x1.a2e8ba2e8ba2e0p-10,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-9
+  },
+  { // Entry 65
+    -0x1.a2e8ba2e8ba2e0p-9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-8
+  },
+  { // Entry 66
+    -0x1.a2e8ba2e8ba2e0p-8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-7
+  },
+  { // Entry 67
+    -0x1.a2e8ba2e8ba2e0p-7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-6
+  },
+  { // Entry 68
+    -0x1.a2e8ba2e8ba2e0p-6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-5
+  },
+  { // Entry 69
+    -0x1.a2e8ba2e8ba2e0p-5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-4
+  },
+  { // Entry 70
+    -0x1.a2e8ba2e8ba2e0p-4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-3
+  },
+  { // Entry 71
+    -0x1.a2e8ba2e8ba2e0p-3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-2
+  },
+  { // Entry 72
+    -0x1.a2e8ba2e8ba2e0p-2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-1
+  },
+  { // Entry 73
+    -0x1.a2e8ba2e8ba2e0p-1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)0
+  },
+  { // Entry 74
+    -0x1.a2e8ba2e8ba2e0p0,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)1
+  },
+  { // Entry 75
+    -0x1.a2e8ba2e8ba2e0p1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)2
+  },
+  { // Entry 76
+    -0x1.a2e8ba2e8ba2e0p2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)3
+  },
+  { // Entry 77
+    -0x1.a2e8ba2e8ba2e0p3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)4
+  },
+  { // Entry 78
+    -0x1.a2e8ba2e8ba2e0p4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)5
+  },
+  { // Entry 79
+    -0x1.a2e8ba2e8ba2e0p5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)6
+  },
+  { // Entry 80
+    -0x1.a2e8ba2e8ba2e0p6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)7
+  },
+  { // Entry 81
+    -0x1.a2e8ba2e8ba2e0p7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)8
+  },
+  { // Entry 82
+    -0x1.a2e8ba2e8ba2e0p8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)9
+  },
+  { // Entry 83
+    -0x1.a2e8ba2e8ba2e0p9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)10
+  },
+  { // Entry 84
+    -0x1.745d1745d17450p-11,
+    -0x1.745d1745d1745p-1,
+    (int)-10
+  },
+  { // Entry 85
+    -0x1.745d1745d17450p-10,
+    -0x1.745d1745d1745p-1,
+    (int)-9
+  },
+  { // Entry 86
+    -0x1.745d1745d17450p-9,
+    -0x1.745d1745d1745p-1,
+    (int)-8
+  },
+  { // Entry 87
+    -0x1.745d1745d17450p-8,
+    -0x1.745d1745d1745p-1,
+    (int)-7
+  },
+  { // Entry 88
+    -0x1.745d1745d17450p-7,
+    -0x1.745d1745d1745p-1,
+    (int)-6
+  },
+  { // Entry 89
+    -0x1.745d1745d17450p-6,
+    -0x1.745d1745d1745p-1,
+    (int)-5
+  },
+  { // Entry 90
+    -0x1.745d1745d17450p-5,
+    -0x1.745d1745d1745p-1,
+    (int)-4
+  },
+  { // Entry 91
+    -0x1.745d1745d17450p-4,
+    -0x1.745d1745d1745p-1,
+    (int)-3
+  },
+  { // Entry 92
+    -0x1.745d1745d17450p-3,
+    -0x1.745d1745d1745p-1,
+    (int)-2
+  },
+  { // Entry 93
+    -0x1.745d1745d17450p-2,
+    -0x1.745d1745d1745p-1,
+    (int)-1
+  },
+  { // Entry 94
+    -0x1.745d1745d17450p-1,
+    -0x1.745d1745d1745p-1,
+    (int)0
+  },
+  { // Entry 95
+    -0x1.745d1745d17450p0,
+    -0x1.745d1745d1745p-1,
+    (int)1
+  },
+  { // Entry 96
+    -0x1.745d1745d17450p1,
+    -0x1.745d1745d1745p-1,
+    (int)2
+  },
+  { // Entry 97
+    -0x1.745d1745d17450p2,
+    -0x1.745d1745d1745p-1,
+    (int)3
+  },
+  { // Entry 98
+    -0x1.745d1745d17450p3,
+    -0x1.745d1745d1745p-1,
+    (int)4
+  },
+  { // Entry 99
+    -0x1.745d1745d17450p4,
+    -0x1.745d1745d1745p-1,
+    (int)5
+  },
+  { // Entry 100
+    -0x1.745d1745d17450p5,
+    -0x1.745d1745d1745p-1,
+    (int)6
+  },
+  { // Entry 101
+    -0x1.745d1745d17450p6,
+    -0x1.745d1745d1745p-1,
+    (int)7
+  },
+  { // Entry 102
+    -0x1.745d1745d17450p7,
+    -0x1.745d1745d1745p-1,
+    (int)8
+  },
+  { // Entry 103
+    -0x1.745d1745d17450p8,
+    -0x1.745d1745d1745p-1,
+    (int)9
+  },
+  { // Entry 104
+    -0x1.745d1745d17450p9,
+    -0x1.745d1745d1745p-1,
+    (int)10
+  },
+  { // Entry 105
+    -0x1.45d1745d1745c0p-11,
+    -0x1.45d1745d1745cp-1,
+    (int)-10
+  },
+  { // Entry 106
+    -0x1.45d1745d1745c0p-10,
+    -0x1.45d1745d1745cp-1,
+    (int)-9
+  },
+  { // Entry 107
+    -0x1.45d1745d1745c0p-9,
+    -0x1.45d1745d1745cp-1,
+    (int)-8
+  },
+  { // Entry 108
+    -0x1.45d1745d1745c0p-8,
+    -0x1.45d1745d1745cp-1,
+    (int)-7
+  },
+  { // Entry 109
+    -0x1.45d1745d1745c0p-7,
+    -0x1.45d1745d1745cp-1,
+    (int)-6
+  },
+  { // Entry 110
+    -0x1.45d1745d1745c0p-6,
+    -0x1.45d1745d1745cp-1,
+    (int)-5
+  },
+  { // Entry 111
+    -0x1.45d1745d1745c0p-5,
+    -0x1.45d1745d1745cp-1,
+    (int)-4
+  },
+  { // Entry 112
+    -0x1.45d1745d1745c0p-4,
+    -0x1.45d1745d1745cp-1,
+    (int)-3
+  },
+  { // Entry 113
+    -0x1.45d1745d1745c0p-3,
+    -0x1.45d1745d1745cp-1,
+    (int)-2
+  },
+  { // Entry 114
+    -0x1.45d1745d1745c0p-2,
+    -0x1.45d1745d1745cp-1,
+    (int)-1
+  },
+  { // Entry 115
+    -0x1.45d1745d1745c0p-1,
+    -0x1.45d1745d1745cp-1,
+    (int)0
+  },
+  { // Entry 116
+    -0x1.45d1745d1745c0p0,
+    -0x1.45d1745d1745cp-1,
+    (int)1
+  },
+  { // Entry 117
+    -0x1.45d1745d1745c0p1,
+    -0x1.45d1745d1745cp-1,
+    (int)2
+  },
+  { // Entry 118
+    -0x1.45d1745d1745c0p2,
+    -0x1.45d1745d1745cp-1,
+    (int)3
+  },
+  { // Entry 119
+    -0x1.45d1745d1745c0p3,
+    -0x1.45d1745d1745cp-1,
+    (int)4
+  },
+  { // Entry 120
+    -0x1.45d1745d1745c0p4,
+    -0x1.45d1745d1745cp-1,
+    (int)5
+  },
+  { // Entry 121
+    -0x1.45d1745d1745c0p5,
+    -0x1.45d1745d1745cp-1,
+    (int)6
+  },
+  { // Entry 122
+    -0x1.45d1745d1745c0p6,
+    -0x1.45d1745d1745cp-1,
+    (int)7
+  },
+  { // Entry 123
+    -0x1.45d1745d1745c0p7,
+    -0x1.45d1745d1745cp-1,
+    (int)8
+  },
+  { // Entry 124
+    -0x1.45d1745d1745c0p8,
+    -0x1.45d1745d1745cp-1,
+    (int)9
+  },
+  { // Entry 125
+    -0x1.45d1745d1745c0p9,
+    -0x1.45d1745d1745cp-1,
+    (int)10
+  },
+  { // Entry 126
+    -0x1.1745d1745d1730p-11,
+    -0x1.1745d1745d173p-1,
+    (int)-10
+  },
+  { // Entry 127
+    -0x1.1745d1745d1730p-10,
+    -0x1.1745d1745d173p-1,
+    (int)-9
+  },
+  { // Entry 128
+    -0x1.1745d1745d1730p-9,
+    -0x1.1745d1745d173p-1,
+    (int)-8
+  },
+  { // Entry 129
+    -0x1.1745d1745d1730p-8,
+    -0x1.1745d1745d173p-1,
+    (int)-7
+  },
+  { // Entry 130
+    -0x1.1745d1745d1730p-7,
+    -0x1.1745d1745d173p-1,
+    (int)-6
+  },
+  { // Entry 131
+    -0x1.1745d1745d1730p-6,
+    -0x1.1745d1745d173p-1,
+    (int)-5
+  },
+  { // Entry 132
+    -0x1.1745d1745d1730p-5,
+    -0x1.1745d1745d173p-1,
+    (int)-4
+  },
+  { // Entry 133
+    -0x1.1745d1745d1730p-4,
+    -0x1.1745d1745d173p-1,
+    (int)-3
+  },
+  { // Entry 134
+    -0x1.1745d1745d1730p-3,
+    -0x1.1745d1745d173p-1,
+    (int)-2
+  },
+  { // Entry 135
+    -0x1.1745d1745d1730p-2,
+    -0x1.1745d1745d173p-1,
+    (int)-1
+  },
+  { // Entry 136
+    -0x1.1745d1745d1730p-1,
+    -0x1.1745d1745d173p-1,
+    (int)0
+  },
+  { // Entry 137
+    -0x1.1745d1745d1730p0,
+    -0x1.1745d1745d173p-1,
+    (int)1
+  },
+  { // Entry 138
+    -0x1.1745d1745d1730p1,
+    -0x1.1745d1745d173p-1,
+    (int)2
+  },
+  { // Entry 139
+    -0x1.1745d1745d1730p2,
+    -0x1.1745d1745d173p-1,
+    (int)3
+  },
+  { // Entry 140
+    -0x1.1745d1745d1730p3,
+    -0x1.1745d1745d173p-1,
+    (int)4
+  },
+  { // Entry 141
+    -0x1.1745d1745d1730p4,
+    -0x1.1745d1745d173p-1,
+    (int)5
+  },
+  { // Entry 142
+    -0x1.1745d1745d1730p5,
+    -0x1.1745d1745d173p-1,
+    (int)6
+  },
+  { // Entry 143
+    -0x1.1745d1745d1730p6,
+    -0x1.1745d1745d173p-1,
+    (int)7
+  },
+  { // Entry 144
+    -0x1.1745d1745d1730p7,
+    -0x1.1745d1745d173p-1,
+    (int)8
+  },
+  { // Entry 145
+    -0x1.1745d1745d1730p8,
+    -0x1.1745d1745d173p-1,
+    (int)9
+  },
+  { // Entry 146
+    -0x1.1745d1745d1730p9,
+    -0x1.1745d1745d173p-1,
+    (int)10
+  },
+  { // Entry 147
+    -0x1.d1745d1745d140p-12,
+    -0x1.d1745d1745d14p-2,
+    (int)-10
+  },
+  { // Entry 148
+    -0x1.d1745d1745d140p-11,
+    -0x1.d1745d1745d14p-2,
+    (int)-9
+  },
+  { // Entry 149
+    -0x1.d1745d1745d140p-10,
+    -0x1.d1745d1745d14p-2,
+    (int)-8
+  },
+  { // Entry 150
+    -0x1.d1745d1745d140p-9,
+    -0x1.d1745d1745d14p-2,
+    (int)-7
+  },
+  { // Entry 151
+    -0x1.d1745d1745d140p-8,
+    -0x1.d1745d1745d14p-2,
+    (int)-6
+  },
+  { // Entry 152
+    -0x1.d1745d1745d140p-7,
+    -0x1.d1745d1745d14p-2,
+    (int)-5
+  },
+  { // Entry 153
+    -0x1.d1745d1745d140p-6,
+    -0x1.d1745d1745d14p-2,
+    (int)-4
+  },
+  { // Entry 154
+    -0x1.d1745d1745d140p-5,
+    -0x1.d1745d1745d14p-2,
+    (int)-3
+  },
+  { // Entry 155
+    -0x1.d1745d1745d140p-4,
+    -0x1.d1745d1745d14p-2,
+    (int)-2
+  },
+  { // Entry 156
+    -0x1.d1745d1745d140p-3,
+    -0x1.d1745d1745d14p-2,
+    (int)-1
+  },
+  { // Entry 157
+    -0x1.d1745d1745d140p-2,
+    -0x1.d1745d1745d14p-2,
+    (int)0
+  },
+  { // Entry 158
+    -0x1.d1745d1745d140p-1,
+    -0x1.d1745d1745d14p-2,
+    (int)1
+  },
+  { // Entry 159
+    -0x1.d1745d1745d140p0,
+    -0x1.d1745d1745d14p-2,
+    (int)2
+  },
+  { // Entry 160
+    -0x1.d1745d1745d140p1,
+    -0x1.d1745d1745d14p-2,
+    (int)3
+  },
+  { // Entry 161
+    -0x1.d1745d1745d140p2,
+    -0x1.d1745d1745d14p-2,
+    (int)4
+  },
+  { // Entry 162
+    -0x1.d1745d1745d140p3,
+    -0x1.d1745d1745d14p-2,
+    (int)5
+  },
+  { // Entry 163
+    -0x1.d1745d1745d140p4,
+    -0x1.d1745d1745d14p-2,
+    (int)6
+  },
+  { // Entry 164
+    -0x1.d1745d1745d140p5,
+    -0x1.d1745d1745d14p-2,
+    (int)7
+  },
+  { // Entry 165
+    -0x1.d1745d1745d140p6,
+    -0x1.d1745d1745d14p-2,
+    (int)8
+  },
+  { // Entry 166
+    -0x1.d1745d1745d140p7,
+    -0x1.d1745d1745d14p-2,
+    (int)9
+  },
+  { // Entry 167
+    -0x1.d1745d1745d140p8,
+    -0x1.d1745d1745d14p-2,
+    (int)10
+  },
+  { // Entry 168
+    -0x1.745d1745d17420p-12,
+    -0x1.745d1745d1742p-2,
+    (int)-10
+  },
+  { // Entry 169
+    -0x1.745d1745d17420p-11,
+    -0x1.745d1745d1742p-2,
+    (int)-9
+  },
+  { // Entry 170
+    -0x1.745d1745d17420p-10,
+    -0x1.745d1745d1742p-2,
+    (int)-8
+  },
+  { // Entry 171
+    -0x1.745d1745d17420p-9,
+    -0x1.745d1745d1742p-2,
+    (int)-7
+  },
+  { // Entry 172
+    -0x1.745d1745d17420p-8,
+    -0x1.745d1745d1742p-2,
+    (int)-6
+  },
+  { // Entry 173
+    -0x1.745d1745d17420p-7,
+    -0x1.745d1745d1742p-2,
+    (int)-5
+  },
+  { // Entry 174
+    -0x1.745d1745d17420p-6,
+    -0x1.745d1745d1742p-2,
+    (int)-4
+  },
+  { // Entry 175
+    -0x1.745d1745d17420p-5,
+    -0x1.745d1745d1742p-2,
+    (int)-3
+  },
+  { // Entry 176
+    -0x1.745d1745d17420p-4,
+    -0x1.745d1745d1742p-2,
+    (int)-2
+  },
+  { // Entry 177
+    -0x1.745d1745d17420p-3,
+    -0x1.745d1745d1742p-2,
+    (int)-1
+  },
+  { // Entry 178
+    -0x1.745d1745d17420p-2,
+    -0x1.745d1745d1742p-2,
+    (int)0
+  },
+  { // Entry 179
+    -0x1.745d1745d17420p-1,
+    -0x1.745d1745d1742p-2,
+    (int)1
+  },
+  { // Entry 180
+    -0x1.745d1745d17420p0,
+    -0x1.745d1745d1742p-2,
+    (int)2
+  },
+  { // Entry 181
+    -0x1.745d1745d17420p1,
+    -0x1.745d1745d1742p-2,
+    (int)3
+  },
+  { // Entry 182
+    -0x1.745d1745d17420p2,
+    -0x1.745d1745d1742p-2,
+    (int)4
+  },
+  { // Entry 183
+    -0x1.745d1745d17420p3,
+    -0x1.745d1745d1742p-2,
+    (int)5
+  },
+  { // Entry 184
+    -0x1.745d1745d17420p4,
+    -0x1.745d1745d1742p-2,
+    (int)6
+  },
+  { // Entry 185
+    -0x1.745d1745d17420p5,
+    -0x1.745d1745d1742p-2,
+    (int)7
+  },
+  { // Entry 186
+    -0x1.745d1745d17420p6,
+    -0x1.745d1745d1742p-2,
+    (int)8
+  },
+  { // Entry 187
+    -0x1.745d1745d17420p7,
+    -0x1.745d1745d1742p-2,
+    (int)9
+  },
+  { // Entry 188
+    -0x1.745d1745d17420p8,
+    -0x1.745d1745d1742p-2,
+    (int)10
+  },
+  { // Entry 189
+    -0x1.1745d1745d17p-12,
+    -0x1.1745d1745d170p-2,
+    (int)-10
+  },
+  { // Entry 190
+    -0x1.1745d1745d17p-11,
+    -0x1.1745d1745d170p-2,
+    (int)-9
+  },
+  { // Entry 191
+    -0x1.1745d1745d17p-10,
+    -0x1.1745d1745d170p-2,
+    (int)-8
+  },
+  { // Entry 192
+    -0x1.1745d1745d17p-9,
+    -0x1.1745d1745d170p-2,
+    (int)-7
+  },
+  { // Entry 193
+    -0x1.1745d1745d17p-8,
+    -0x1.1745d1745d170p-2,
+    (int)-6
+  },
+  { // Entry 194
+    -0x1.1745d1745d17p-7,
+    -0x1.1745d1745d170p-2,
+    (int)-5
+  },
+  { // Entry 195
+    -0x1.1745d1745d17p-6,
+    -0x1.1745d1745d170p-2,
+    (int)-4
+  },
+  { // Entry 196
+    -0x1.1745d1745d17p-5,
+    -0x1.1745d1745d170p-2,
+    (int)-3
+  },
+  { // Entry 197
+    -0x1.1745d1745d17p-4,
+    -0x1.1745d1745d170p-2,
+    (int)-2
+  },
+  { // Entry 198
+    -0x1.1745d1745d17p-3,
+    -0x1.1745d1745d170p-2,
+    (int)-1
+  },
+  { // Entry 199
+    -0x1.1745d1745d17p-2,
+    -0x1.1745d1745d170p-2,
+    (int)0
+  },
+  { // Entry 200
+    -0x1.1745d1745d17p-1,
+    -0x1.1745d1745d170p-2,
+    (int)1
+  },
+  { // Entry 201
+    -0x1.1745d1745d17p0,
+    -0x1.1745d1745d170p-2,
+    (int)2
+  },
+  { // Entry 202
+    -0x1.1745d1745d17p1,
+    -0x1.1745d1745d170p-2,
+    (int)3
+  },
+  { // Entry 203
+    -0x1.1745d1745d17p2,
+    -0x1.1745d1745d170p-2,
+    (int)4
+  },
+  { // Entry 204
+    -0x1.1745d1745d17p3,
+    -0x1.1745d1745d170p-2,
+    (int)5
+  },
+  { // Entry 205
+    -0x1.1745d1745d17p4,
+    -0x1.1745d1745d170p-2,
+    (int)6
+  },
+  { // Entry 206
+    -0x1.1745d1745d17p5,
+    -0x1.1745d1745d170p-2,
+    (int)7
+  },
+  { // Entry 207
+    -0x1.1745d1745d17p6,
+    -0x1.1745d1745d170p-2,
+    (int)8
+  },
+  { // Entry 208
+    -0x1.1745d1745d17p7,
+    -0x1.1745d1745d170p-2,
+    (int)9
+  },
+  { // Entry 209
+    -0x1.1745d1745d17p8,
+    -0x1.1745d1745d170p-2,
+    (int)10
+  },
+  { // Entry 210
+    -0x1.745d1745d173d0p-13,
+    -0x1.745d1745d173dp-3,
+    (int)-10
+  },
+  { // Entry 211
+    -0x1.745d1745d173d0p-12,
+    -0x1.745d1745d173dp-3,
+    (int)-9
+  },
+  { // Entry 212
+    -0x1.745d1745d173d0p-11,
+    -0x1.745d1745d173dp-3,
+    (int)-8
+  },
+  { // Entry 213
+    -0x1.745d1745d173d0p-10,
+    -0x1.745d1745d173dp-3,
+    (int)-7
+  },
+  { // Entry 214
+    -0x1.745d1745d173d0p-9,
+    -0x1.745d1745d173dp-3,
+    (int)-6
+  },
+  { // Entry 215
+    -0x1.745d1745d173d0p-8,
+    -0x1.745d1745d173dp-3,
+    (int)-5
+  },
+  { // Entry 216
+    -0x1.745d1745d173d0p-7,
+    -0x1.745d1745d173dp-3,
+    (int)-4
+  },
+  { // Entry 217
+    -0x1.745d1745d173d0p-6,
+    -0x1.745d1745d173dp-3,
+    (int)-3
+  },
+  { // Entry 218
+    -0x1.745d1745d173d0p-5,
+    -0x1.745d1745d173dp-3,
+    (int)-2
+  },
+  { // Entry 219
+    -0x1.745d1745d173d0p-4,
+    -0x1.745d1745d173dp-3,
+    (int)-1
+  },
+  { // Entry 220
+    -0x1.745d1745d173d0p-3,
+    -0x1.745d1745d173dp-3,
+    (int)0
+  },
+  { // Entry 221
+    -0x1.745d1745d173d0p-2,
+    -0x1.745d1745d173dp-3,
+    (int)1
+  },
+  { // Entry 222
+    -0x1.745d1745d173d0p-1,
+    -0x1.745d1745d173dp-3,
+    (int)2
+  },
+  { // Entry 223
+    -0x1.745d1745d173d0p0,
+    -0x1.745d1745d173dp-3,
+    (int)3
+  },
+  { // Entry 224
+    -0x1.745d1745d173d0p1,
+    -0x1.745d1745d173dp-3,
+    (int)4
+  },
+  { // Entry 225
+    -0x1.745d1745d173d0p2,
+    -0x1.745d1745d173dp-3,
+    (int)5
+  },
+  { // Entry 226
+    -0x1.745d1745d173d0p3,
+    -0x1.745d1745d173dp-3,
+    (int)6
+  },
+  { // Entry 227
+    -0x1.745d1745d173d0p4,
+    -0x1.745d1745d173dp-3,
+    (int)7
+  },
+  { // Entry 228
+    -0x1.745d1745d173d0p5,
+    -0x1.745d1745d173dp-3,
+    (int)8
+  },
+  { // Entry 229
+    -0x1.745d1745d173d0p6,
+    -0x1.745d1745d173dp-3,
+    (int)9
+  },
+  { // Entry 230
+    -0x1.745d1745d173d0p7,
+    -0x1.745d1745d173dp-3,
+    (int)10
+  },
+  { // Entry 231
+    -0x1.745d1745d17340p-14,
+    -0x1.745d1745d1734p-4,
+    (int)-10
+  },
+  { // Entry 232
+    -0x1.745d1745d17340p-13,
+    -0x1.745d1745d1734p-4,
+    (int)-9
+  },
+  { // Entry 233
+    -0x1.745d1745d17340p-12,
+    -0x1.745d1745d1734p-4,
+    (int)-8
+  },
+  { // Entry 234
+    -0x1.745d1745d17340p-11,
+    -0x1.745d1745d1734p-4,
+    (int)-7
+  },
+  { // Entry 235
+    -0x1.745d1745d17340p-10,
+    -0x1.745d1745d1734p-4,
+    (int)-6
+  },
+  { // Entry 236
+    -0x1.745d1745d17340p-9,
+    -0x1.745d1745d1734p-4,
+    (int)-5
+  },
+  { // Entry 237
+    -0x1.745d1745d17340p-8,
+    -0x1.745d1745d1734p-4,
+    (int)-4
+  },
+  { // Entry 238
+    -0x1.745d1745d17340p-7,
+    -0x1.745d1745d1734p-4,
+    (int)-3
+  },
+  { // Entry 239
+    -0x1.745d1745d17340p-6,
+    -0x1.745d1745d1734p-4,
+    (int)-2
+  },
+  { // Entry 240
+    -0x1.745d1745d17340p-5,
+    -0x1.745d1745d1734p-4,
+    (int)-1
+  },
+  { // Entry 241
+    -0x1.745d1745d17340p-4,
+    -0x1.745d1745d1734p-4,
+    (int)0
+  },
+  { // Entry 242
+    -0x1.745d1745d17340p-3,
+    -0x1.745d1745d1734p-4,
+    (int)1
+  },
+  { // Entry 243
+    -0x1.745d1745d17340p-2,
+    -0x1.745d1745d1734p-4,
+    (int)2
+  },
+  { // Entry 244
+    -0x1.745d1745d17340p-1,
+    -0x1.745d1745d1734p-4,
+    (int)3
+  },
+  { // Entry 245
+    -0x1.745d1745d17340p0,
+    -0x1.745d1745d1734p-4,
+    (int)4
+  },
+  { // Entry 246
+    -0x1.745d1745d17340p1,
+    -0x1.745d1745d1734p-4,
+    (int)5
+  },
+  { // Entry 247
+    -0x1.745d1745d17340p2,
+    -0x1.745d1745d1734p-4,
+    (int)6
+  },
+  { // Entry 248
+    -0x1.745d1745d17340p3,
+    -0x1.745d1745d1734p-4,
+    (int)7
+  },
+  { // Entry 249
+    -0x1.745d1745d17340p4,
+    -0x1.745d1745d1734p-4,
+    (int)8
+  },
+  { // Entry 250
+    -0x1.745d1745d17340p5,
+    -0x1.745d1745d1734p-4,
+    (int)9
+  },
+  { // Entry 251
+    -0x1.745d1745d17340p6,
+    -0x1.745d1745d1734p-4,
+    (int)10
+  },
+  { // Entry 252
+    0x1.20p-62,
+    0x1.2p-52,
+    (int)-10
+  },
+  { // Entry 253
+    0x1.20p-61,
+    0x1.2p-52,
+    (int)-9
+  },
+  { // Entry 254
+    0x1.20p-60,
+    0x1.2p-52,
+    (int)-8
+  },
+  { // Entry 255
+    0x1.20p-59,
+    0x1.2p-52,
+    (int)-7
+  },
+  { // Entry 256
+    0x1.20p-58,
+    0x1.2p-52,
+    (int)-6
+  },
+  { // Entry 257
+    0x1.20p-57,
+    0x1.2p-52,
+    (int)-5
+  },
+  { // Entry 258
+    0x1.20p-56,
+    0x1.2p-52,
+    (int)-4
+  },
+  { // Entry 259
+    0x1.20p-55,
+    0x1.2p-52,
+    (int)-3
+  },
+  { // Entry 260
+    0x1.20p-54,
+    0x1.2p-52,
+    (int)-2
+  },
+  { // Entry 261
+    0x1.20p-53,
+    0x1.2p-52,
+    (int)-1
+  },
+  { // Entry 262
+    0x1.20p-52,
+    0x1.2p-52,
+    (int)0
+  },
+  { // Entry 263
+    0x1.20p-51,
+    0x1.2p-52,
+    (int)1
+  },
+  { // Entry 264
+    0x1.20p-50,
+    0x1.2p-52,
+    (int)2
+  },
+  { // Entry 265
+    0x1.20p-49,
+    0x1.2p-52,
+    (int)3
+  },
+  { // Entry 266
+    0x1.20p-48,
+    0x1.2p-52,
+    (int)4
+  },
+  { // Entry 267
+    0x1.20p-47,
+    0x1.2p-52,
+    (int)5
+  },
+  { // Entry 268
+    0x1.20p-46,
+    0x1.2p-52,
+    (int)6
+  },
+  { // Entry 269
+    0x1.20p-45,
+    0x1.2p-52,
+    (int)7
+  },
+  { // Entry 270
+    0x1.20p-44,
+    0x1.2p-52,
+    (int)8
+  },
+  { // Entry 271
+    0x1.20p-43,
+    0x1.2p-52,
+    (int)9
+  },
+  { // Entry 272
+    0x1.20p-42,
+    0x1.2p-52,
+    (int)10
+  },
+  { // Entry 273
+    0x1.745d1745d17580p-14,
+    0x1.745d1745d1758p-4,
+    (int)-10
+  },
+  { // Entry 274
+    0x1.745d1745d17580p-13,
+    0x1.745d1745d1758p-4,
+    (int)-9
+  },
+  { // Entry 275
+    0x1.745d1745d17580p-12,
+    0x1.745d1745d1758p-4,
+    (int)-8
+  },
+  { // Entry 276
+    0x1.745d1745d17580p-11,
+    0x1.745d1745d1758p-4,
+    (int)-7
+  },
+  { // Entry 277
+    0x1.745d1745d17580p-10,
+    0x1.745d1745d1758p-4,
+    (int)-6
+  },
+  { // Entry 278
+    0x1.745d1745d17580p-9,
+    0x1.745d1745d1758p-4,
+    (int)-5
+  },
+  { // Entry 279
+    0x1.745d1745d17580p-8,
+    0x1.745d1745d1758p-4,
+    (int)-4
+  },
+  { // Entry 280
+    0x1.745d1745d17580p-7,
+    0x1.745d1745d1758p-4,
+    (int)-3
+  },
+  { // Entry 281
+    0x1.745d1745d17580p-6,
+    0x1.745d1745d1758p-4,
+    (int)-2
+  },
+  { // Entry 282
+    0x1.745d1745d17580p-5,
+    0x1.745d1745d1758p-4,
+    (int)-1
+  },
+  { // Entry 283
+    0x1.745d1745d17580p-4,
+    0x1.745d1745d1758p-4,
+    (int)0
+  },
+  { // Entry 284
+    0x1.745d1745d17580p-3,
+    0x1.745d1745d1758p-4,
+    (int)1
+  },
+  { // Entry 285
+    0x1.745d1745d17580p-2,
+    0x1.745d1745d1758p-4,
+    (int)2
+  },
+  { // Entry 286
+    0x1.745d1745d17580p-1,
+    0x1.745d1745d1758p-4,
+    (int)3
+  },
+  { // Entry 287
+    0x1.745d1745d17580p0,
+    0x1.745d1745d1758p-4,
+    (int)4
+  },
+  { // Entry 288
+    0x1.745d1745d17580p1,
+    0x1.745d1745d1758p-4,
+    (int)5
+  },
+  { // Entry 289
+    0x1.745d1745d17580p2,
+    0x1.745d1745d1758p-4,
+    (int)6
+  },
+  { // Entry 290
+    0x1.745d1745d17580p3,
+    0x1.745d1745d1758p-4,
+    (int)7
+  },
+  { // Entry 291
+    0x1.745d1745d17580p4,
+    0x1.745d1745d1758p-4,
+    (int)8
+  },
+  { // Entry 292
+    0x1.745d1745d17580p5,
+    0x1.745d1745d1758p-4,
+    (int)9
+  },
+  { // Entry 293
+    0x1.745d1745d17580p6,
+    0x1.745d1745d1758p-4,
+    (int)10
+  },
+  { // Entry 294
+    0x1.745d1745d174f0p-13,
+    0x1.745d1745d174fp-3,
+    (int)-10
+  },
+  { // Entry 295
+    0x1.745d1745d174f0p-12,
+    0x1.745d1745d174fp-3,
+    (int)-9
+  },
+  { // Entry 296
+    0x1.745d1745d174f0p-11,
+    0x1.745d1745d174fp-3,
+    (int)-8
+  },
+  { // Entry 297
+    0x1.745d1745d174f0p-10,
+    0x1.745d1745d174fp-3,
+    (int)-7
+  },
+  { // Entry 298
+    0x1.745d1745d174f0p-9,
+    0x1.745d1745d174fp-3,
+    (int)-6
+  },
+  { // Entry 299
+    0x1.745d1745d174f0p-8,
+    0x1.745d1745d174fp-3,
+    (int)-5
+  },
+  { // Entry 300
+    0x1.745d1745d174f0p-7,
+    0x1.745d1745d174fp-3,
+    (int)-4
+  },
+  { // Entry 301
+    0x1.745d1745d174f0p-6,
+    0x1.745d1745d174fp-3,
+    (int)-3
+  },
+  { // Entry 302
+    0x1.745d1745d174f0p-5,
+    0x1.745d1745d174fp-3,
+    (int)-2
+  },
+  { // Entry 303
+    0x1.745d1745d174f0p-4,
+    0x1.745d1745d174fp-3,
+    (int)-1
+  },
+  { // Entry 304
+    0x1.745d1745d174f0p-3,
+    0x1.745d1745d174fp-3,
+    (int)0
+  },
+  { // Entry 305
+    0x1.745d1745d174f0p-2,
+    0x1.745d1745d174fp-3,
+    (int)1
+  },
+  { // Entry 306
+    0x1.745d1745d174f0p-1,
+    0x1.745d1745d174fp-3,
+    (int)2
+  },
+  { // Entry 307
+    0x1.745d1745d174f0p0,
+    0x1.745d1745d174fp-3,
+    (int)3
+  },
+  { // Entry 308
+    0x1.745d1745d174f0p1,
+    0x1.745d1745d174fp-3,
+    (int)4
+  },
+  { // Entry 309
+    0x1.745d1745d174f0p2,
+    0x1.745d1745d174fp-3,
+    (int)5
+  },
+  { // Entry 310
+    0x1.745d1745d174f0p3,
+    0x1.745d1745d174fp-3,
+    (int)6
+  },
+  { // Entry 311
+    0x1.745d1745d174f0p4,
+    0x1.745d1745d174fp-3,
+    (int)7
+  },
+  { // Entry 312
+    0x1.745d1745d174f0p5,
+    0x1.745d1745d174fp-3,
+    (int)8
+  },
+  { // Entry 313
+    0x1.745d1745d174f0p6,
+    0x1.745d1745d174fp-3,
+    (int)9
+  },
+  { // Entry 314
+    0x1.745d1745d174f0p7,
+    0x1.745d1745d174fp-3,
+    (int)10
+  },
+  { // Entry 315
+    0x1.1745d1745d1790p-12,
+    0x1.1745d1745d179p-2,
+    (int)-10
+  },
+  { // Entry 316
+    0x1.1745d1745d1790p-11,
+    0x1.1745d1745d179p-2,
+    (int)-9
+  },
+  { // Entry 317
+    0x1.1745d1745d1790p-10,
+    0x1.1745d1745d179p-2,
+    (int)-8
+  },
+  { // Entry 318
+    0x1.1745d1745d1790p-9,
+    0x1.1745d1745d179p-2,
+    (int)-7
+  },
+  { // Entry 319
+    0x1.1745d1745d1790p-8,
+    0x1.1745d1745d179p-2,
+    (int)-6
+  },
+  { // Entry 320
+    0x1.1745d1745d1790p-7,
+    0x1.1745d1745d179p-2,
+    (int)-5
+  },
+  { // Entry 321
+    0x1.1745d1745d1790p-6,
+    0x1.1745d1745d179p-2,
+    (int)-4
+  },
+  { // Entry 322
+    0x1.1745d1745d1790p-5,
+    0x1.1745d1745d179p-2,
+    (int)-3
+  },
+  { // Entry 323
+    0x1.1745d1745d1790p-4,
+    0x1.1745d1745d179p-2,
+    (int)-2
+  },
+  { // Entry 324
+    0x1.1745d1745d1790p-3,
+    0x1.1745d1745d179p-2,
+    (int)-1
+  },
+  { // Entry 325
+    0x1.1745d1745d1790p-2,
+    0x1.1745d1745d179p-2,
+    (int)0
+  },
+  { // Entry 326
+    0x1.1745d1745d1790p-1,
+    0x1.1745d1745d179p-2,
+    (int)1
+  },
+  { // Entry 327
+    0x1.1745d1745d1790p0,
+    0x1.1745d1745d179p-2,
+    (int)2
+  },
+  { // Entry 328
+    0x1.1745d1745d1790p1,
+    0x1.1745d1745d179p-2,
+    (int)3
+  },
+  { // Entry 329
+    0x1.1745d1745d1790p2,
+    0x1.1745d1745d179p-2,
+    (int)4
+  },
+  { // Entry 330
+    0x1.1745d1745d1790p3,
+    0x1.1745d1745d179p-2,
+    (int)5
+  },
+  { // Entry 331
+    0x1.1745d1745d1790p4,
+    0x1.1745d1745d179p-2,
+    (int)6
+  },
+  { // Entry 332
+    0x1.1745d1745d1790p5,
+    0x1.1745d1745d179p-2,
+    (int)7
+  },
+  { // Entry 333
+    0x1.1745d1745d1790p6,
+    0x1.1745d1745d179p-2,
+    (int)8
+  },
+  { // Entry 334
+    0x1.1745d1745d1790p7,
+    0x1.1745d1745d179p-2,
+    (int)9
+  },
+  { // Entry 335
+    0x1.1745d1745d1790p8,
+    0x1.1745d1745d179p-2,
+    (int)10
+  },
+  { // Entry 336
+    0x1.745d1745d174a0p-12,
+    0x1.745d1745d174ap-2,
+    (int)-10
+  },
+  { // Entry 337
+    0x1.745d1745d174a0p-11,
+    0x1.745d1745d174ap-2,
+    (int)-9
+  },
+  { // Entry 338
+    0x1.745d1745d174a0p-10,
+    0x1.745d1745d174ap-2,
+    (int)-8
+  },
+  { // Entry 339
+    0x1.745d1745d174a0p-9,
+    0x1.745d1745d174ap-2,
+    (int)-7
+  },
+  { // Entry 340
+    0x1.745d1745d174a0p-8,
+    0x1.745d1745d174ap-2,
+    (int)-6
+  },
+  { // Entry 341
+    0x1.745d1745d174a0p-7,
+    0x1.745d1745d174ap-2,
+    (int)-5
+  },
+  { // Entry 342
+    0x1.745d1745d174a0p-6,
+    0x1.745d1745d174ap-2,
+    (int)-4
+  },
+  { // Entry 343
+    0x1.745d1745d174a0p-5,
+    0x1.745d1745d174ap-2,
+    (int)-3
+  },
+  { // Entry 344
+    0x1.745d1745d174a0p-4,
+    0x1.745d1745d174ap-2,
+    (int)-2
+  },
+  { // Entry 345
+    0x1.745d1745d174a0p-3,
+    0x1.745d1745d174ap-2,
+    (int)-1
+  },
+  { // Entry 346
+    0x1.745d1745d174a0p-2,
+    0x1.745d1745d174ap-2,
+    (int)0
+  },
+  { // Entry 347
+    0x1.745d1745d174a0p-1,
+    0x1.745d1745d174ap-2,
+    (int)1
+  },
+  { // Entry 348
+    0x1.745d1745d174a0p0,
+    0x1.745d1745d174ap-2,
+    (int)2
+  },
+  { // Entry 349
+    0x1.745d1745d174a0p1,
+    0x1.745d1745d174ap-2,
+    (int)3
+  },
+  { // Entry 350
+    0x1.745d1745d174a0p2,
+    0x1.745d1745d174ap-2,
+    (int)4
+  },
+  { // Entry 351
+    0x1.745d1745d174a0p3,
+    0x1.745d1745d174ap-2,
+    (int)5
+  },
+  { // Entry 352
+    0x1.745d1745d174a0p4,
+    0x1.745d1745d174ap-2,
+    (int)6
+  },
+  { // Entry 353
+    0x1.745d1745d174a0p5,
+    0x1.745d1745d174ap-2,
+    (int)7
+  },
+  { // Entry 354
+    0x1.745d1745d174a0p6,
+    0x1.745d1745d174ap-2,
+    (int)8
+  },
+  { // Entry 355
+    0x1.745d1745d174a0p7,
+    0x1.745d1745d174ap-2,
+    (int)9
+  },
+  { // Entry 356
+    0x1.745d1745d174a0p8,
+    0x1.745d1745d174ap-2,
+    (int)10
+  },
+  { // Entry 357
+    0x1.d1745d1745d1c0p-12,
+    0x1.d1745d1745d1cp-2,
+    (int)-10
+  },
+  { // Entry 358
+    0x1.d1745d1745d1c0p-11,
+    0x1.d1745d1745d1cp-2,
+    (int)-9
+  },
+  { // Entry 359
+    0x1.d1745d1745d1c0p-10,
+    0x1.d1745d1745d1cp-2,
+    (int)-8
+  },
+  { // Entry 360
+    0x1.d1745d1745d1c0p-9,
+    0x1.d1745d1745d1cp-2,
+    (int)-7
+  },
+  { // Entry 361
+    0x1.d1745d1745d1c0p-8,
+    0x1.d1745d1745d1cp-2,
+    (int)-6
+  },
+  { // Entry 362
+    0x1.d1745d1745d1c0p-7,
+    0x1.d1745d1745d1cp-2,
+    (int)-5
+  },
+  { // Entry 363
+    0x1.d1745d1745d1c0p-6,
+    0x1.d1745d1745d1cp-2,
+    (int)-4
+  },
+  { // Entry 364
+    0x1.d1745d1745d1c0p-5,
+    0x1.d1745d1745d1cp-2,
+    (int)-3
+  },
+  { // Entry 365
+    0x1.d1745d1745d1c0p-4,
+    0x1.d1745d1745d1cp-2,
+    (int)-2
+  },
+  { // Entry 366
+    0x1.d1745d1745d1c0p-3,
+    0x1.d1745d1745d1cp-2,
+    (int)-1
+  },
+  { // Entry 367
+    0x1.d1745d1745d1c0p-2,
+    0x1.d1745d1745d1cp-2,
+    (int)0
+  },
+  { // Entry 368
+    0x1.d1745d1745d1c0p-1,
+    0x1.d1745d1745d1cp-2,
+    (int)1
+  },
+  { // Entry 369
+    0x1.d1745d1745d1c0p0,
+    0x1.d1745d1745d1cp-2,
+    (int)2
+  },
+  { // Entry 370
+    0x1.d1745d1745d1c0p1,
+    0x1.d1745d1745d1cp-2,
+    (int)3
+  },
+  { // Entry 371
+    0x1.d1745d1745d1c0p2,
+    0x1.d1745d1745d1cp-2,
+    (int)4
+  },
+  { // Entry 372
+    0x1.d1745d1745d1c0p3,
+    0x1.d1745d1745d1cp-2,
+    (int)5
+  },
+  { // Entry 373
+    0x1.d1745d1745d1c0p4,
+    0x1.d1745d1745d1cp-2,
+    (int)6
+  },
+  { // Entry 374
+    0x1.d1745d1745d1c0p5,
+    0x1.d1745d1745d1cp-2,
+    (int)7
+  },
+  { // Entry 375
+    0x1.d1745d1745d1c0p6,
+    0x1.d1745d1745d1cp-2,
+    (int)8
+  },
+  { // Entry 376
+    0x1.d1745d1745d1c0p7,
+    0x1.d1745d1745d1cp-2,
+    (int)9
+  },
+  { // Entry 377
+    0x1.d1745d1745d1c0p8,
+    0x1.d1745d1745d1cp-2,
+    (int)10
+  },
+  { // Entry 378
+    0x1.1745d1745d1770p-11,
+    0x1.1745d1745d177p-1,
+    (int)-10
+  },
+  { // Entry 379
+    0x1.1745d1745d1770p-10,
+    0x1.1745d1745d177p-1,
+    (int)-9
+  },
+  { // Entry 380
+    0x1.1745d1745d1770p-9,
+    0x1.1745d1745d177p-1,
+    (int)-8
+  },
+  { // Entry 381
+    0x1.1745d1745d1770p-8,
+    0x1.1745d1745d177p-1,
+    (int)-7
+  },
+  { // Entry 382
+    0x1.1745d1745d1770p-7,
+    0x1.1745d1745d177p-1,
+    (int)-6
+  },
+  { // Entry 383
+    0x1.1745d1745d1770p-6,
+    0x1.1745d1745d177p-1,
+    (int)-5
+  },
+  { // Entry 384
+    0x1.1745d1745d1770p-5,
+    0x1.1745d1745d177p-1,
+    (int)-4
+  },
+  { // Entry 385
+    0x1.1745d1745d1770p-4,
+    0x1.1745d1745d177p-1,
+    (int)-3
+  },
+  { // Entry 386
+    0x1.1745d1745d1770p-3,
+    0x1.1745d1745d177p-1,
+    (int)-2
+  },
+  { // Entry 387
+    0x1.1745d1745d1770p-2,
+    0x1.1745d1745d177p-1,
+    (int)-1
+  },
+  { // Entry 388
+    0x1.1745d1745d1770p-1,
+    0x1.1745d1745d177p-1,
+    (int)0
+  },
+  { // Entry 389
+    0x1.1745d1745d1770p0,
+    0x1.1745d1745d177p-1,
+    (int)1
+  },
+  { // Entry 390
+    0x1.1745d1745d1770p1,
+    0x1.1745d1745d177p-1,
+    (int)2
+  },
+  { // Entry 391
+    0x1.1745d1745d1770p2,
+    0x1.1745d1745d177p-1,
+    (int)3
+  },
+  { // Entry 392
+    0x1.1745d1745d1770p3,
+    0x1.1745d1745d177p-1,
+    (int)4
+  },
+  { // Entry 393
+    0x1.1745d1745d1770p4,
+    0x1.1745d1745d177p-1,
+    (int)5
+  },
+  { // Entry 394
+    0x1.1745d1745d1770p5,
+    0x1.1745d1745d177p-1,
+    (int)6
+  },
+  { // Entry 395
+    0x1.1745d1745d1770p6,
+    0x1.1745d1745d177p-1,
+    (int)7
+  },
+  { // Entry 396
+    0x1.1745d1745d1770p7,
+    0x1.1745d1745d177p-1,
+    (int)8
+  },
+  { // Entry 397
+    0x1.1745d1745d1770p8,
+    0x1.1745d1745d177p-1,
+    (int)9
+  },
+  { // Entry 398
+    0x1.1745d1745d1770p9,
+    0x1.1745d1745d177p-1,
+    (int)10
+  },
+  { // Entry 399
+    0x1.45d1745d1746p-11,
+    0x1.45d1745d17460p-1,
+    (int)-10
+  },
+  { // Entry 400
+    0x1.45d1745d1746p-10,
+    0x1.45d1745d17460p-1,
+    (int)-9
+  },
+  { // Entry 401
+    0x1.45d1745d1746p-9,
+    0x1.45d1745d17460p-1,
+    (int)-8
+  },
+  { // Entry 402
+    0x1.45d1745d1746p-8,
+    0x1.45d1745d17460p-1,
+    (int)-7
+  },
+  { // Entry 403
+    0x1.45d1745d1746p-7,
+    0x1.45d1745d17460p-1,
+    (int)-6
+  },
+  { // Entry 404
+    0x1.45d1745d1746p-6,
+    0x1.45d1745d17460p-1,
+    (int)-5
+  },
+  { // Entry 405
+    0x1.45d1745d1746p-5,
+    0x1.45d1745d17460p-1,
+    (int)-4
+  },
+  { // Entry 406
+    0x1.45d1745d1746p-4,
+    0x1.45d1745d17460p-1,
+    (int)-3
+  },
+  { // Entry 407
+    0x1.45d1745d1746p-3,
+    0x1.45d1745d17460p-1,
+    (int)-2
+  },
+  { // Entry 408
+    0x1.45d1745d1746p-2,
+    0x1.45d1745d17460p-1,
+    (int)-1
+  },
+  { // Entry 409
+    0x1.45d1745d1746p-1,
+    0x1.45d1745d17460p-1,
+    (int)0
+  },
+  { // Entry 410
+    0x1.45d1745d1746p0,
+    0x1.45d1745d17460p-1,
+    (int)1
+  },
+  { // Entry 411
+    0x1.45d1745d1746p1,
+    0x1.45d1745d17460p-1,
+    (int)2
+  },
+  { // Entry 412
+    0x1.45d1745d1746p2,
+    0x1.45d1745d17460p-1,
+    (int)3
+  },
+  { // Entry 413
+    0x1.45d1745d1746p3,
+    0x1.45d1745d17460p-1,
+    (int)4
+  },
+  { // Entry 414
+    0x1.45d1745d1746p4,
+    0x1.45d1745d17460p-1,
+    (int)5
+  },
+  { // Entry 415
+    0x1.45d1745d1746p5,
+    0x1.45d1745d17460p-1,
+    (int)6
+  },
+  { // Entry 416
+    0x1.45d1745d1746p6,
+    0x1.45d1745d17460p-1,
+    (int)7
+  },
+  { // Entry 417
+    0x1.45d1745d1746p7,
+    0x1.45d1745d17460p-1,
+    (int)8
+  },
+  { // Entry 418
+    0x1.45d1745d1746p8,
+    0x1.45d1745d17460p-1,
+    (int)9
+  },
+  { // Entry 419
+    0x1.45d1745d1746p9,
+    0x1.45d1745d17460p-1,
+    (int)10
+  },
+  { // Entry 420
+    0x1.745d1745d17490p-11,
+    0x1.745d1745d1749p-1,
+    (int)-10
+  },
+  { // Entry 421
+    0x1.745d1745d17490p-10,
+    0x1.745d1745d1749p-1,
+    (int)-9
+  },
+  { // Entry 422
+    0x1.745d1745d17490p-9,
+    0x1.745d1745d1749p-1,
+    (int)-8
+  },
+  { // Entry 423
+    0x1.745d1745d17490p-8,
+    0x1.745d1745d1749p-1,
+    (int)-7
+  },
+  { // Entry 424
+    0x1.745d1745d17490p-7,
+    0x1.745d1745d1749p-1,
+    (int)-6
+  },
+  { // Entry 425
+    0x1.745d1745d17490p-6,
+    0x1.745d1745d1749p-1,
+    (int)-5
+  },
+  { // Entry 426
+    0x1.745d1745d17490p-5,
+    0x1.745d1745d1749p-1,
+    (int)-4
+  },
+  { // Entry 427
+    0x1.745d1745d17490p-4,
+    0x1.745d1745d1749p-1,
+    (int)-3
+  },
+  { // Entry 428
+    0x1.745d1745d17490p-3,
+    0x1.745d1745d1749p-1,
+    (int)-2
+  },
+  { // Entry 429
+    0x1.745d1745d17490p-2,
+    0x1.745d1745d1749p-1,
+    (int)-1
+  },
+  { // Entry 430
+    0x1.745d1745d17490p-1,
+    0x1.745d1745d1749p-1,
+    (int)0
+  },
+  { // Entry 431
+    0x1.745d1745d17490p0,
+    0x1.745d1745d1749p-1,
+    (int)1
+  },
+  { // Entry 432
+    0x1.745d1745d17490p1,
+    0x1.745d1745d1749p-1,
+    (int)2
+  },
+  { // Entry 433
+    0x1.745d1745d17490p2,
+    0x1.745d1745d1749p-1,
+    (int)3
+  },
+  { // Entry 434
+    0x1.745d1745d17490p3,
+    0x1.745d1745d1749p-1,
+    (int)4
+  },
+  { // Entry 435
+    0x1.745d1745d17490p4,
+    0x1.745d1745d1749p-1,
+    (int)5
+  },
+  { // Entry 436
+    0x1.745d1745d17490p5,
+    0x1.745d1745d1749p-1,
+    (int)6
+  },
+  { // Entry 437
+    0x1.745d1745d17490p6,
+    0x1.745d1745d1749p-1,
+    (int)7
+  },
+  { // Entry 438
+    0x1.745d1745d17490p7,
+    0x1.745d1745d1749p-1,
+    (int)8
+  },
+  { // Entry 439
+    0x1.745d1745d17490p8,
+    0x1.745d1745d1749p-1,
+    (int)9
+  },
+  { // Entry 440
+    0x1.745d1745d17490p9,
+    0x1.745d1745d1749p-1,
+    (int)10
+  },
+  { // Entry 441
+    0x1.a2e8ba2e8ba320p-11,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-10
+  },
+  { // Entry 442
+    0x1.a2e8ba2e8ba320p-10,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-9
+  },
+  { // Entry 443
+    0x1.a2e8ba2e8ba320p-9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-8
+  },
+  { // Entry 444
+    0x1.a2e8ba2e8ba320p-8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-7
+  },
+  { // Entry 445
+    0x1.a2e8ba2e8ba320p-7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-6
+  },
+  { // Entry 446
+    0x1.a2e8ba2e8ba320p-6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-5
+  },
+  { // Entry 447
+    0x1.a2e8ba2e8ba320p-5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-4
+  },
+  { // Entry 448
+    0x1.a2e8ba2e8ba320p-4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-3
+  },
+  { // Entry 449
+    0x1.a2e8ba2e8ba320p-3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-2
+  },
+  { // Entry 450
+    0x1.a2e8ba2e8ba320p-2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-1
+  },
+  { // Entry 451
+    0x1.a2e8ba2e8ba320p-1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)0
+  },
+  { // Entry 452
+    0x1.a2e8ba2e8ba320p0,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)1
+  },
+  { // Entry 453
+    0x1.a2e8ba2e8ba320p1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)2
+  },
+  { // Entry 454
+    0x1.a2e8ba2e8ba320p2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)3
+  },
+  { // Entry 455
+    0x1.a2e8ba2e8ba320p3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)4
+  },
+  { // Entry 456
+    0x1.a2e8ba2e8ba320p4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)5
+  },
+  { // Entry 457
+    0x1.a2e8ba2e8ba320p5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)6
+  },
+  { // Entry 458
+    0x1.a2e8ba2e8ba320p6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)7
+  },
+  { // Entry 459
+    0x1.a2e8ba2e8ba320p7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)8
+  },
+  { // Entry 460
+    0x1.a2e8ba2e8ba320p8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)9
+  },
+  { // Entry 461
+    0x1.a2e8ba2e8ba320p9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)10
+  },
+  { // Entry 462
+    0x1.d1745d1745d1b0p-11,
+    0x1.d1745d1745d1bp-1,
+    (int)-10
+  },
+  { // Entry 463
+    0x1.d1745d1745d1b0p-10,
+    0x1.d1745d1745d1bp-1,
+    (int)-9
+  },
+  { // Entry 464
+    0x1.d1745d1745d1b0p-9,
+    0x1.d1745d1745d1bp-1,
+    (int)-8
+  },
+  { // Entry 465
+    0x1.d1745d1745d1b0p-8,
+    0x1.d1745d1745d1bp-1,
+    (int)-7
+  },
+  { // Entry 466
+    0x1.d1745d1745d1b0p-7,
+    0x1.d1745d1745d1bp-1,
+    (int)-6
+  },
+  { // Entry 467
+    0x1.d1745d1745d1b0p-6,
+    0x1.d1745d1745d1bp-1,
+    (int)-5
+  },
+  { // Entry 468
+    0x1.d1745d1745d1b0p-5,
+    0x1.d1745d1745d1bp-1,
+    (int)-4
+  },
+  { // Entry 469
+    0x1.d1745d1745d1b0p-4,
+    0x1.d1745d1745d1bp-1,
+    (int)-3
+  },
+  { // Entry 470
+    0x1.d1745d1745d1b0p-3,
+    0x1.d1745d1745d1bp-1,
+    (int)-2
+  },
+  { // Entry 471
+    0x1.d1745d1745d1b0p-2,
+    0x1.d1745d1745d1bp-1,
+    (int)-1
+  },
+  { // Entry 472
+    0x1.d1745d1745d1b0p-1,
+    0x1.d1745d1745d1bp-1,
+    (int)0
+  },
+  { // Entry 473
+    0x1.d1745d1745d1b0p0,
+    0x1.d1745d1745d1bp-1,
+    (int)1
+  },
+  { // Entry 474
+    0x1.d1745d1745d1b0p1,
+    0x1.d1745d1745d1bp-1,
+    (int)2
+  },
+  { // Entry 475
+    0x1.d1745d1745d1b0p2,
+    0x1.d1745d1745d1bp-1,
+    (int)3
+  },
+  { // Entry 476
+    0x1.d1745d1745d1b0p3,
+    0x1.d1745d1745d1bp-1,
+    (int)4
+  },
+  { // Entry 477
+    0x1.d1745d1745d1b0p4,
+    0x1.d1745d1745d1bp-1,
+    (int)5
+  },
+  { // Entry 478
+    0x1.d1745d1745d1b0p5,
+    0x1.d1745d1745d1bp-1,
+    (int)6
+  },
+  { // Entry 479
+    0x1.d1745d1745d1b0p6,
+    0x1.d1745d1745d1bp-1,
+    (int)7
+  },
+  { // Entry 480
+    0x1.d1745d1745d1b0p7,
+    0x1.d1745d1745d1bp-1,
+    (int)8
+  },
+  { // Entry 481
+    0x1.d1745d1745d1b0p8,
+    0x1.d1745d1745d1bp-1,
+    (int)9
+  },
+  { // Entry 482
+    0x1.d1745d1745d1b0p9,
+    0x1.d1745d1745d1bp-1,
+    (int)10
+  },
+  { // Entry 483
+    0x1.p-10,
+    0x1.0p0,
+    (int)-10
+  },
+  { // Entry 484
+    0x1.p-9,
+    0x1.0p0,
+    (int)-9
+  },
+  { // Entry 485
+    0x1.p-8,
+    0x1.0p0,
+    (int)-8
+  },
+  { // Entry 486
+    0x1.p-7,
+    0x1.0p0,
+    (int)-7
+  },
+  { // Entry 487
+    0x1.p-6,
+    0x1.0p0,
+    (int)-6
+  },
+  { // Entry 488
+    0x1.p-5,
+    0x1.0p0,
+    (int)-5
+  },
+  { // Entry 489
+    0x1.p-4,
+    0x1.0p0,
+    (int)-4
+  },
+  { // Entry 490
+    0x1.p-3,
+    0x1.0p0,
+    (int)-3
+  },
+  { // Entry 491
+    0x1.p-2,
+    0x1.0p0,
+    (int)-2
+  },
+  { // Entry 492
+    0x1.p-1,
+    0x1.0p0,
+    (int)-1
+  },
+  { // Entry 493
+    0x1.p0,
+    0x1.0p0,
+    (int)0
+  },
+  { // Entry 494
+    0x1.p1,
+    0x1.0p0,
+    (int)1
+  },
+  { // Entry 495
+    0x1.p2,
+    0x1.0p0,
+    (int)2
+  },
+  { // Entry 496
+    0x1.p3,
+    0x1.0p0,
+    (int)3
+  },
+  { // Entry 497
+    0x1.p4,
+    0x1.0p0,
+    (int)4
+  },
+  { // Entry 498
+    0x1.p5,
+    0x1.0p0,
+    (int)5
+  },
+  { // Entry 499
+    0x1.p6,
+    0x1.0p0,
+    (int)6
+  },
+  { // Entry 500
+    0x1.p7,
+    0x1.0p0,
+    (int)7
+  },
+  { // Entry 501
+    0x1.p8,
+    0x1.0p0,
+    (int)8
+  },
+  { // Entry 502
+    0x1.p9,
+    0x1.0p0,
+    (int)9
+  },
+  { // Entry 503
+    0x1.p10,
+    0x1.0p0,
+    (int)10
+  },
+  { // Entry 504
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023,
+    (int)-1023
+  },
+  { // Entry 505
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    (int)-1022
+  },
+  { // Entry 506
+    0x1.fffffffffffff0p23,
+    0x1.fffffffffffffp1023,
+    (int)-1000
+  },
+  { // Entry 507
+    0x1.fffffffffffff0p24,
+    0x1.fffffffffffffp1023,
+    (int)-999
+  },
+  { // Entry 508
+    0x1.fffffffffffff0p1013,
+    0x1.fffffffffffffp1023,
+    (int)-10
+  },
+  { // Entry 509
+    0x1.fffffffffffff0p1014,
+    0x1.fffffffffffffp1023,
+    (int)-9
+  },
+  { // Entry 510
+    0x1.fffffffffffff0p1015,
+    0x1.fffffffffffffp1023,
+    (int)-8
+  },
+  { // Entry 511
+    0x1.fffffffffffff0p1016,
+    0x1.fffffffffffffp1023,
+    (int)-7
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1017,
+    0x1.fffffffffffffp1023,
+    (int)-6
+  },
+  { // Entry 513
+    0x1.fffffffffffff0p1018,
+    0x1.fffffffffffffp1023,
+    (int)-5
+  },
+  { // Entry 514
+    0x1.fffffffffffff0p1019,
+    0x1.fffffffffffffp1023,
+    (int)-4
+  },
+  { // Entry 515
+    0x1.fffffffffffff0p1020,
+    0x1.fffffffffffffp1023,
+    (int)-3
+  },
+  { // Entry 516
+    0x1.fffffffffffff0p1021,
+    0x1.fffffffffffffp1023,
+    (int)-2
+  },
+  { // Entry 517
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1023,
+    (int)-1
+  },
+  { // Entry 518
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 519
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 520
+    0x1.p-52,
+    0x1.0p-1074,
+    (int)1022
+  },
+  { // Entry 521
+    0x1.p-74,
+    0x1.0p-1074,
+    (int)1000
+  },
+  { // Entry 522
+    0x1.p-75,
+    0x1.0p-1074,
+    (int)999
+  },
+  { // Entry 523
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 524
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 525
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 526
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 527
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 528
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 529
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 530
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 531
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 532
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 533
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 534
+    0x1.p-1025,
+    0x1.0p-2,
+    (int)-1023
+  },
+  { // Entry 535
+    0x1.p-1024,
+    0x1.0p-2,
+    (int)-1022
+  },
+  { // Entry 536
+    0x1.p-1024,
+    0x1.0p-1,
+    (int)-1023
+  },
+  { // Entry 537
+    0x1.p-1023,
+    0x1.0p-1,
+    (int)-1022
+  },
+  { // Entry 538
+    0x1.80p-1024,
+    0x1.8p-1,
+    (int)-1023
+  },
+  { // Entry 539
+    0x1.80p-1023,
+    0x1.8p-1,
+    (int)-1022
+  },
+  { // Entry 540
+    0.0,
+    0x1.0p-2,
+    (int)-1074
+  },
+  { // Entry 541
+    0.0,
+    0x1.0p-2,
+    (int)-1073
+  },
+  { // Entry 542
+    0.0,
+    0x1.0p-1,
+    (int)-1074
+  },
+  { // Entry 543
+    0x1.p-1074,
+    0x1.0p-1,
+    (int)-1073
+  },
+  { // Entry 544
+    0.0,
+    0x1.8p-1,
+    (int)-1074
+  },
+  { // Entry 545
+    0x1.80p-1074,
+    0x1.8p-1,
+    (int)-1073
+  },
+  { // Entry 546
+    0x1.p1023,
+    0x1.0p0,
+    (int)1023
+  },
+  { // Entry 547
+    0x1.p1022,
+    0x1.0p0,
+    (int)1022
+  },
+  { // Entry 548
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 549
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 550
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 551
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 552
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 553
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 554
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 555
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 556
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 557
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 558
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 559
+    0x1.p-1063,
+    0x1.0p-1074,
+    (int)11
+  },
+  { // Entry 560
+    0x1.p-1062,
+    0x1.0p-1074,
+    (int)12
+  },
+  { // Entry 561
+    0x1.p-1061,
+    0x1.0p-1074,
+    (int)13
+  },
+  { // Entry 562
+    0x1.p-1060,
+    0x1.0p-1074,
+    (int)14
+  },
+  { // Entry 563
+    0x1.p-1059,
+    0x1.0p-1074,
+    (int)15
+  },
+  { // Entry 564
+    0x1.p-1058,
+    0x1.0p-1074,
+    (int)16
+  },
+  { // Entry 565
+    0x1.p-1057,
+    0x1.0p-1074,
+    (int)17
+  },
+  { // Entry 566
+    0x1.p-1056,
+    0x1.0p-1074,
+    (int)18
+  },
+  { // Entry 567
+    0x1.p-1055,
+    0x1.0p-1074,
+    (int)19
+  },
+  { // Entry 568
+    0x1.p-1054,
+    0x1.0p-1074,
+    (int)20
+  },
+  { // Entry 569
+    0x1.p-1053,
+    0x1.0p-1074,
+    (int)21
+  },
+  { // Entry 570
+    0x1.p-1052,
+    0x1.0p-1074,
+    (int)22
+  },
+  { // Entry 571
+    0x1.p-1051,
+    0x1.0p-1074,
+    (int)23
+  },
+  { // Entry 572
+    0x1.p-1050,
+    0x1.0p-1074,
+    (int)24
+  },
+  { // Entry 573
+    0x1.p-1049,
+    0x1.0p-1074,
+    (int)25
+  },
+  { // Entry 574
+    0x1.p-1048,
+    0x1.0p-1074,
+    (int)26
+  },
+  { // Entry 575
+    0x1.p-1047,
+    0x1.0p-1074,
+    (int)27
+  },
+  { // Entry 576
+    0x1.p-1046,
+    0x1.0p-1074,
+    (int)28
+  },
+  { // Entry 577
+    0x1.p-1045,
+    0x1.0p-1074,
+    (int)29
+  },
+  { // Entry 578
+    0x1.p-1044,
+    0x1.0p-1074,
+    (int)30
+  },
+  { // Entry 579
+    0x1.p-1043,
+    0x1.0p-1074,
+    (int)31
+  },
+  { // Entry 580
+    0x1.p-1042,
+    0x1.0p-1074,
+    (int)32
+  },
+  { // Entry 581
+    0x1.p-1041,
+    0x1.0p-1074,
+    (int)33
+  },
+  { // Entry 582
+    0x1.p-1040,
+    0x1.0p-1074,
+    (int)34
+  },
+  { // Entry 583
+    0x1.p-1039,
+    0x1.0p-1074,
+    (int)35
+  },
+  { // Entry 584
+    0x1.p-1038,
+    0x1.0p-1074,
+    (int)36
+  },
+  { // Entry 585
+    0x1.p-1037,
+    0x1.0p-1074,
+    (int)37
+  },
+  { // Entry 586
+    0x1.p-1036,
+    0x1.0p-1074,
+    (int)38
+  },
+  { // Entry 587
+    0x1.p-1035,
+    0x1.0p-1074,
+    (int)39
+  },
+  { // Entry 588
+    0x1.p-1034,
+    0x1.0p-1074,
+    (int)40
+  },
+  { // Entry 589
+    0x1.p-1033,
+    0x1.0p-1074,
+    (int)41
+  },
+  { // Entry 590
+    0x1.p-1032,
+    0x1.0p-1074,
+    (int)42
+  },
+  { // Entry 591
+    0x1.p-1031,
+    0x1.0p-1074,
+    (int)43
+  },
+  { // Entry 592
+    0x1.p-1030,
+    0x1.0p-1074,
+    (int)44
+  },
+  { // Entry 593
+    0x1.p-1029,
+    0x1.0p-1074,
+    (int)45
+  },
+  { // Entry 594
+    0x1.p-1028,
+    0x1.0p-1074,
+    (int)46
+  },
+  { // Entry 595
+    0x1.p-1027,
+    0x1.0p-1074,
+    (int)47
+  },
+  { // Entry 596
+    0x1.p-1026,
+    0x1.0p-1074,
+    (int)48
+  },
+  { // Entry 597
+    0x1.p-1025,
+    0x1.0p-1074,
+    (int)49
+  },
+  { // Entry 598
+    0x1.p-1024,
+    0x1.0p-1074,
+    (int)50
+  },
+  { // Entry 599
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 600
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 601
+    0x1.p-1021,
+    0x1.0p-1074,
+    (int)53
+  },
+  { // Entry 602
+    0x1.p-1020,
+    0x1.0p-1074,
+    (int)54
+  },
+  { // Entry 603
+    0x1.p-1019,
+    0x1.0p-1074,
+    (int)55
+  },
+  { // Entry 604
+    0x1.p-1018,
+    0x1.0p-1074,
+    (int)56
+  },
+  { // Entry 605
+    0x1.p-1017,
+    0x1.0p-1074,
+    (int)57
+  },
+  { // Entry 606
+    0x1.p-1016,
+    0x1.0p-1074,
+    (int)58
+  },
+  { // Entry 607
+    0x1.p-1015,
+    0x1.0p-1074,
+    (int)59
+  },
+  { // Entry 608
+    0x1.p-1014,
+    0x1.0p-1074,
+    (int)60
+  },
+  { // Entry 609
+    0x1.p-1013,
+    0x1.0p-1074,
+    (int)61
+  },
+  { // Entry 610
+    0x1.p-1012,
+    0x1.0p-1074,
+    (int)62
+  },
+  { // Entry 611
+    0x1.p-1011,
+    0x1.0p-1074,
+    (int)63
+  },
+  { // Entry 612
+    0x1.p-1010,
+    0x1.0p-1074,
+    (int)64
+  },
+  { // Entry 613
+    0x1.p-1009,
+    0x1.0p-1074,
+    (int)65
+  },
+  { // Entry 614
+    0x1.p-1008,
+    0x1.0p-1074,
+    (int)66
+  },
+  { // Entry 615
+    0x1.p-1007,
+    0x1.0p-1074,
+    (int)67
+  },
+  { // Entry 616
+    0x1.p-1006,
+    0x1.0p-1074,
+    (int)68
+  },
+  { // Entry 617
+    0x1.p-1005,
+    0x1.0p-1074,
+    (int)69
+  },
+  { // Entry 618
+    0x1.p-1004,
+    0x1.0p-1074,
+    (int)70
+  },
+  { // Entry 619
+    0x1.p-1003,
+    0x1.0p-1074,
+    (int)71
+  },
+  { // Entry 620
+    0x1.p-1002,
+    0x1.0p-1074,
+    (int)72
+  },
+  { // Entry 621
+    0x1.p-1001,
+    0x1.0p-1074,
+    (int)73
+  },
+  { // Entry 622
+    0x1.p-1000,
+    0x1.0p-1074,
+    (int)74
+  },
+  { // Entry 623
+    0x1.p-999,
+    0x1.0p-1074,
+    (int)75
+  },
+  { // Entry 624
+    0x1.p-998,
+    0x1.0p-1074,
+    (int)76
+  },
+  { // Entry 625
+    0x1.p-997,
+    0x1.0p-1074,
+    (int)77
+  },
+  { // Entry 626
+    0x1.p-996,
+    0x1.0p-1074,
+    (int)78
+  },
+  { // Entry 627
+    0x1.p-995,
+    0x1.0p-1074,
+    (int)79
+  },
+  { // Entry 628
+    0x1.p-994,
+    0x1.0p-1074,
+    (int)80
+  },
+  { // Entry 629
+    0x1.p-993,
+    0x1.0p-1074,
+    (int)81
+  },
+  { // Entry 630
+    0x1.p-992,
+    0x1.0p-1074,
+    (int)82
+  },
+  { // Entry 631
+    0x1.p-991,
+    0x1.0p-1074,
+    (int)83
+  },
+  { // Entry 632
+    0x1.p-990,
+    0x1.0p-1074,
+    (int)84
+  },
+  { // Entry 633
+    0x1.p-989,
+    0x1.0p-1074,
+    (int)85
+  },
+  { // Entry 634
+    0x1.p-988,
+    0x1.0p-1074,
+    (int)86
+  },
+  { // Entry 635
+    0x1.p-987,
+    0x1.0p-1074,
+    (int)87
+  },
+  { // Entry 636
+    0x1.p-986,
+    0x1.0p-1074,
+    (int)88
+  },
+  { // Entry 637
+    0x1.p-985,
+    0x1.0p-1074,
+    (int)89
+  },
+  { // Entry 638
+    0x1.p-984,
+    0x1.0p-1074,
+    (int)90
+  },
+  { // Entry 639
+    0x1.p-983,
+    0x1.0p-1074,
+    (int)91
+  },
+  { // Entry 640
+    0x1.p-982,
+    0x1.0p-1074,
+    (int)92
+  },
+  { // Entry 641
+    0x1.p-981,
+    0x1.0p-1074,
+    (int)93
+  },
+  { // Entry 642
+    0x1.p-980,
+    0x1.0p-1074,
+    (int)94
+  },
+  { // Entry 643
+    0x1.p-979,
+    0x1.0p-1074,
+    (int)95
+  },
+  { // Entry 644
+    0x1.p-978,
+    0x1.0p-1074,
+    (int)96
+  },
+  { // Entry 645
+    0x1.p-977,
+    0x1.0p-1074,
+    (int)97
+  },
+  { // Entry 646
+    0x1.p-976,
+    0x1.0p-1074,
+    (int)98
+  },
+  { // Entry 647
+    0x1.p-975,
+    0x1.0p-1074,
+    (int)99
+  },
+  { // Entry 648
+    0x1.p-974,
+    0x1.0p-1074,
+    (int)100
+  },
+  { // Entry 649
+    0x1.p-973,
+    0x1.0p-1074,
+    (int)101
+  },
+  { // Entry 650
+    0x1.p-972,
+    0x1.0p-1074,
+    (int)102
+  },
+  { // Entry 651
+    0x1.p-971,
+    0x1.0p-1074,
+    (int)103
+  },
+  { // Entry 652
+    0x1.p-970,
+    0x1.0p-1074,
+    (int)104
+  },
+  { // Entry 653
+    0x1.p-969,
+    0x1.0p-1074,
+    (int)105
+  },
+  { // Entry 654
+    0x1.p-968,
+    0x1.0p-1074,
+    (int)106
+  },
+  { // Entry 655
+    0x1.p-967,
+    0x1.0p-1074,
+    (int)107
+  },
+  { // Entry 656
+    0x1.p-966,
+    0x1.0p-1074,
+    (int)108
+  },
+  { // Entry 657
+    0x1.p-965,
+    0x1.0p-1074,
+    (int)109
+  },
+  { // Entry 658
+    0x1.p-964,
+    0x1.0p-1074,
+    (int)110
+  },
+  { // Entry 659
+    0x1.p-963,
+    0x1.0p-1074,
+    (int)111
+  },
+  { // Entry 660
+    0x1.p-962,
+    0x1.0p-1074,
+    (int)112
+  },
+  { // Entry 661
+    0x1.p-961,
+    0x1.0p-1074,
+    (int)113
+  },
+  { // Entry 662
+    0x1.p-960,
+    0x1.0p-1074,
+    (int)114
+  },
+  { // Entry 663
+    0x1.p-959,
+    0x1.0p-1074,
+    (int)115
+  },
+  { // Entry 664
+    0x1.p-958,
+    0x1.0p-1074,
+    (int)116
+  },
+  { // Entry 665
+    0x1.p-957,
+    0x1.0p-1074,
+    (int)117
+  },
+  { // Entry 666
+    0x1.p-956,
+    0x1.0p-1074,
+    (int)118
+  },
+  { // Entry 667
+    0x1.p-955,
+    0x1.0p-1074,
+    (int)119
+  },
+  { // Entry 668
+    0x1.p-954,
+    0x1.0p-1074,
+    (int)120
+  },
+  { // Entry 669
+    0x1.p-953,
+    0x1.0p-1074,
+    (int)121
+  },
+  { // Entry 670
+    0x1.p-952,
+    0x1.0p-1074,
+    (int)122
+  },
+  { // Entry 671
+    0x1.p-951,
+    0x1.0p-1074,
+    (int)123
+  },
+  { // Entry 672
+    0x1.p-950,
+    0x1.0p-1074,
+    (int)124
+  },
+  { // Entry 673
+    0x1.p-949,
+    0x1.0p-1074,
+    (int)125
+  },
+  { // Entry 674
+    0x1.p-948,
+    0x1.0p-1074,
+    (int)126
+  },
+  { // Entry 675
+    0x1.p-947,
+    0x1.0p-1074,
+    (int)127
+  },
+  { // Entry 676
+    0x1.p-946,
+    0x1.0p-1074,
+    (int)128
+  },
+  { // Entry 677
+    0x1.p-945,
+    0x1.0p-1074,
+    (int)129
+  },
+  { // Entry 678
+    0x1.p-944,
+    0x1.0p-1074,
+    (int)130
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 680
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 681
+    0x1.ffffffffffffe0p-1021,
+    0x1.ffffffffffffep-1023,
+    (int)2
+  },
+  { // Entry 682
+    0x1.ffffffffffffe0p-1020,
+    0x1.ffffffffffffep-1023,
+    (int)3
+  },
+  { // Entry 683
+    0x1.ffffffffffffe0p-1019,
+    0x1.ffffffffffffep-1023,
+    (int)4
+  },
+  { // Entry 684
+    0x1.ffffffffffffe0p-1018,
+    0x1.ffffffffffffep-1023,
+    (int)5
+  },
+  { // Entry 685
+    0x1.ffffffffffffe0p-1017,
+    0x1.ffffffffffffep-1023,
+    (int)6
+  },
+  { // Entry 686
+    0x1.ffffffffffffe0p-1016,
+    0x1.ffffffffffffep-1023,
+    (int)7
+  },
+  { // Entry 687
+    0x1.ffffffffffffe0p-1015,
+    0x1.ffffffffffffep-1023,
+    (int)8
+  },
+  { // Entry 688
+    0x1.ffffffffffffe0p-1014,
+    0x1.ffffffffffffep-1023,
+    (int)9
+  },
+  { // Entry 689
+    0x1.ffffffffffffe0p-1013,
+    0x1.ffffffffffffep-1023,
+    (int)10
+  },
+  { // Entry 690
+    0x1.ffffffffffffe0p-1012,
+    0x1.ffffffffffffep-1023,
+    (int)11
+  },
+  { // Entry 691
+    0x1.ffffffffffffe0p-1011,
+    0x1.ffffffffffffep-1023,
+    (int)12
+  },
+  { // Entry 692
+    0x1.ffffffffffffe0p-1010,
+    0x1.ffffffffffffep-1023,
+    (int)13
+  },
+  { // Entry 693
+    0x1.ffffffffffffe0p-1009,
+    0x1.ffffffffffffep-1023,
+    (int)14
+  },
+  { // Entry 694
+    0x1.ffffffffffffe0p-1008,
+    0x1.ffffffffffffep-1023,
+    (int)15
+  },
+  { // Entry 695
+    0x1.ffffffffffffe0p-1007,
+    0x1.ffffffffffffep-1023,
+    (int)16
+  },
+  { // Entry 696
+    0x1.ffffffffffffe0p-1006,
+    0x1.ffffffffffffep-1023,
+    (int)17
+  },
+  { // Entry 697
+    0x1.ffffffffffffe0p-1005,
+    0x1.ffffffffffffep-1023,
+    (int)18
+  },
+  { // Entry 698
+    0x1.ffffffffffffe0p-1004,
+    0x1.ffffffffffffep-1023,
+    (int)19
+  },
+  { // Entry 699
+    0x1.ffffffffffffe0p-1003,
+    0x1.ffffffffffffep-1023,
+    (int)20
+  },
+  { // Entry 700
+    0x1.ffffffffffffe0p-1002,
+    0x1.ffffffffffffep-1023,
+    (int)21
+  },
+  { // Entry 701
+    0x1.ffffffffffffe0p-1001,
+    0x1.ffffffffffffep-1023,
+    (int)22
+  },
+  { // Entry 702
+    0x1.ffffffffffffe0p-1000,
+    0x1.ffffffffffffep-1023,
+    (int)23
+  },
+  { // Entry 703
+    0x1.ffffffffffffe0p-999,
+    0x1.ffffffffffffep-1023,
+    (int)24
+  },
+  { // Entry 704
+    0x1.ffffffffffffe0p-998,
+    0x1.ffffffffffffep-1023,
+    (int)25
+  },
+  { // Entry 705
+    0x1.ffffffffffffe0p-997,
+    0x1.ffffffffffffep-1023,
+    (int)26
+  },
+  { // Entry 706
+    0x1.ffffffffffffe0p-996,
+    0x1.ffffffffffffep-1023,
+    (int)27
+  },
+  { // Entry 707
+    0x1.ffffffffffffe0p-995,
+    0x1.ffffffffffffep-1023,
+    (int)28
+  },
+  { // Entry 708
+    0x1.ffffffffffffe0p-994,
+    0x1.ffffffffffffep-1023,
+    (int)29
+  },
+  { // Entry 709
+    0x1.ffffffffffffe0p-993,
+    0x1.ffffffffffffep-1023,
+    (int)30
+  },
+  { // Entry 710
+    0x1.ffffffffffffe0p-992,
+    0x1.ffffffffffffep-1023,
+    (int)31
+  },
+  { // Entry 711
+    0x1.ffffffffffffe0p-991,
+    0x1.ffffffffffffep-1023,
+    (int)32
+  },
+  { // Entry 712
+    0x1.ffffffffffffe0p-990,
+    0x1.ffffffffffffep-1023,
+    (int)33
+  },
+  { // Entry 713
+    0x1.ffffffffffffe0p-989,
+    0x1.ffffffffffffep-1023,
+    (int)34
+  },
+  { // Entry 714
+    0x1.ffffffffffffe0p-988,
+    0x1.ffffffffffffep-1023,
+    (int)35
+  },
+  { // Entry 715
+    0x1.ffffffffffffe0p-987,
+    0x1.ffffffffffffep-1023,
+    (int)36
+  },
+  { // Entry 716
+    0x1.ffffffffffffe0p-986,
+    0x1.ffffffffffffep-1023,
+    (int)37
+  },
+  { // Entry 717
+    0x1.ffffffffffffe0p-985,
+    0x1.ffffffffffffep-1023,
+    (int)38
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0p-984,
+    0x1.ffffffffffffep-1023,
+    (int)39
+  },
+  { // Entry 719
+    0x1.ffffffffffffe0p-983,
+    0x1.ffffffffffffep-1023,
+    (int)40
+  },
+  { // Entry 720
+    0x1.ffffffffffffe0p-982,
+    0x1.ffffffffffffep-1023,
+    (int)41
+  },
+  { // Entry 721
+    0x1.ffffffffffffe0p-981,
+    0x1.ffffffffffffep-1023,
+    (int)42
+  },
+  { // Entry 722
+    0x1.ffffffffffffe0p-980,
+    0x1.ffffffffffffep-1023,
+    (int)43
+  },
+  { // Entry 723
+    0x1.ffffffffffffe0p-979,
+    0x1.ffffffffffffep-1023,
+    (int)44
+  },
+  { // Entry 724
+    0x1.ffffffffffffe0p-978,
+    0x1.ffffffffffffep-1023,
+    (int)45
+  },
+  { // Entry 725
+    0x1.ffffffffffffe0p-977,
+    0x1.ffffffffffffep-1023,
+    (int)46
+  },
+  { // Entry 726
+    0x1.ffffffffffffe0p-976,
+    0x1.ffffffffffffep-1023,
+    (int)47
+  },
+  { // Entry 727
+    0x1.ffffffffffffe0p-975,
+    0x1.ffffffffffffep-1023,
+    (int)48
+  },
+  { // Entry 728
+    0x1.ffffffffffffe0p-974,
+    0x1.ffffffffffffep-1023,
+    (int)49
+  },
+  { // Entry 729
+    0x1.ffffffffffffe0p-973,
+    0x1.ffffffffffffep-1023,
+    (int)50
+  },
+  { // Entry 730
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 731
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 732
+    0x1.ffffffffffffe0p-970,
+    0x1.ffffffffffffep-1023,
+    (int)53
+  },
+  { // Entry 733
+    0x1.ffffffffffffe0p-969,
+    0x1.ffffffffffffep-1023,
+    (int)54
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-968,
+    0x1.ffffffffffffep-1023,
+    (int)55
+  },
+  { // Entry 735
+    0x1.ffffffffffffe0p-967,
+    0x1.ffffffffffffep-1023,
+    (int)56
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0p-966,
+    0x1.ffffffffffffep-1023,
+    (int)57
+  },
+  { // Entry 737
+    0x1.ffffffffffffe0p-965,
+    0x1.ffffffffffffep-1023,
+    (int)58
+  },
+  { // Entry 738
+    0x1.ffffffffffffe0p-964,
+    0x1.ffffffffffffep-1023,
+    (int)59
+  },
+  { // Entry 739
+    0x1.ffffffffffffe0p-963,
+    0x1.ffffffffffffep-1023,
+    (int)60
+  },
+  { // Entry 740
+    0x1.ffffffffffffe0p-962,
+    0x1.ffffffffffffep-1023,
+    (int)61
+  },
+  { // Entry 741
+    0x1.ffffffffffffe0p-961,
+    0x1.ffffffffffffep-1023,
+    (int)62
+  },
+  { // Entry 742
+    0x1.ffffffffffffe0p-960,
+    0x1.ffffffffffffep-1023,
+    (int)63
+  },
+  { // Entry 743
+    0x1.ffffffffffffe0p-959,
+    0x1.ffffffffffffep-1023,
+    (int)64
+  },
+  { // Entry 744
+    0x1.ffffffffffffe0p-958,
+    0x1.ffffffffffffep-1023,
+    (int)65
+  },
+  { // Entry 745
+    0x1.ffffffffffffe0p-957,
+    0x1.ffffffffffffep-1023,
+    (int)66
+  },
+  { // Entry 746
+    0x1.ffffffffffffe0p-956,
+    0x1.ffffffffffffep-1023,
+    (int)67
+  },
+  { // Entry 747
+    0x1.ffffffffffffe0p-955,
+    0x1.ffffffffffffep-1023,
+    (int)68
+  },
+  { // Entry 748
+    0x1.ffffffffffffe0p-954,
+    0x1.ffffffffffffep-1023,
+    (int)69
+  },
+  { // Entry 749
+    0x1.ffffffffffffe0p-953,
+    0x1.ffffffffffffep-1023,
+    (int)70
+  },
+  { // Entry 750
+    0x1.ffffffffffffe0p-952,
+    0x1.ffffffffffffep-1023,
+    (int)71
+  },
+  { // Entry 751
+    0x1.ffffffffffffe0p-951,
+    0x1.ffffffffffffep-1023,
+    (int)72
+  },
+  { // Entry 752
+    0x1.ffffffffffffe0p-950,
+    0x1.ffffffffffffep-1023,
+    (int)73
+  },
+  { // Entry 753
+    0x1.ffffffffffffe0p-949,
+    0x1.ffffffffffffep-1023,
+    (int)74
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0p-948,
+    0x1.ffffffffffffep-1023,
+    (int)75
+  },
+  { // Entry 755
+    0x1.ffffffffffffe0p-947,
+    0x1.ffffffffffffep-1023,
+    (int)76
+  },
+  { // Entry 756
+    0x1.ffffffffffffe0p-946,
+    0x1.ffffffffffffep-1023,
+    (int)77
+  },
+  { // Entry 757
+    0x1.ffffffffffffe0p-945,
+    0x1.ffffffffffffep-1023,
+    (int)78
+  },
+  { // Entry 758
+    0x1.ffffffffffffe0p-944,
+    0x1.ffffffffffffep-1023,
+    (int)79
+  },
+  { // Entry 759
+    0x1.ffffffffffffe0p-943,
+    0x1.ffffffffffffep-1023,
+    (int)80
+  },
+  { // Entry 760
+    0x1.ffffffffffffe0p-942,
+    0x1.ffffffffffffep-1023,
+    (int)81
+  },
+  { // Entry 761
+    0x1.ffffffffffffe0p-941,
+    0x1.ffffffffffffep-1023,
+    (int)82
+  },
+  { // Entry 762
+    0x1.ffffffffffffe0p-940,
+    0x1.ffffffffffffep-1023,
+    (int)83
+  },
+  { // Entry 763
+    0x1.ffffffffffffe0p-939,
+    0x1.ffffffffffffep-1023,
+    (int)84
+  },
+  { // Entry 764
+    0x1.ffffffffffffe0p-938,
+    0x1.ffffffffffffep-1023,
+    (int)85
+  },
+  { // Entry 765
+    0x1.ffffffffffffe0p-937,
+    0x1.ffffffffffffep-1023,
+    (int)86
+  },
+  { // Entry 766
+    0x1.ffffffffffffe0p-936,
+    0x1.ffffffffffffep-1023,
+    (int)87
+  },
+  { // Entry 767
+    0x1.ffffffffffffe0p-935,
+    0x1.ffffffffffffep-1023,
+    (int)88
+  },
+  { // Entry 768
+    0x1.ffffffffffffe0p-934,
+    0x1.ffffffffffffep-1023,
+    (int)89
+  },
+  { // Entry 769
+    0x1.ffffffffffffe0p-933,
+    0x1.ffffffffffffep-1023,
+    (int)90
+  },
+  { // Entry 770
+    0x1.ffffffffffffe0p-932,
+    0x1.ffffffffffffep-1023,
+    (int)91
+  },
+  { // Entry 771
+    0x1.ffffffffffffe0p-931,
+    0x1.ffffffffffffep-1023,
+    (int)92
+  },
+  { // Entry 772
+    0x1.ffffffffffffe0p-930,
+    0x1.ffffffffffffep-1023,
+    (int)93
+  },
+  { // Entry 773
+    0x1.ffffffffffffe0p-929,
+    0x1.ffffffffffffep-1023,
+    (int)94
+  },
+  { // Entry 774
+    0x1.ffffffffffffe0p-928,
+    0x1.ffffffffffffep-1023,
+    (int)95
+  },
+  { // Entry 775
+    0x1.ffffffffffffe0p-927,
+    0x1.ffffffffffffep-1023,
+    (int)96
+  },
+  { // Entry 776
+    0x1.ffffffffffffe0p-926,
+    0x1.ffffffffffffep-1023,
+    (int)97
+  },
+  { // Entry 777
+    0x1.ffffffffffffe0p-925,
+    0x1.ffffffffffffep-1023,
+    (int)98
+  },
+  { // Entry 778
+    0x1.ffffffffffffe0p-924,
+    0x1.ffffffffffffep-1023,
+    (int)99
+  },
+  { // Entry 779
+    0x1.ffffffffffffe0p-923,
+    0x1.ffffffffffffep-1023,
+    (int)100
+  },
+  { // Entry 780
+    0x1.ffffffffffffe0p-922,
+    0x1.ffffffffffffep-1023,
+    (int)101
+  },
+  { // Entry 781
+    0x1.ffffffffffffe0p-921,
+    0x1.ffffffffffffep-1023,
+    (int)102
+  },
+  { // Entry 782
+    0x1.ffffffffffffe0p-920,
+    0x1.ffffffffffffep-1023,
+    (int)103
+  },
+  { // Entry 783
+    0x1.ffffffffffffe0p-919,
+    0x1.ffffffffffffep-1023,
+    (int)104
+  },
+  { // Entry 784
+    0x1.ffffffffffffe0p-918,
+    0x1.ffffffffffffep-1023,
+    (int)105
+  },
+  { // Entry 785
+    0x1.ffffffffffffe0p-917,
+    0x1.ffffffffffffep-1023,
+    (int)106
+  },
+  { // Entry 786
+    0x1.ffffffffffffe0p-916,
+    0x1.ffffffffffffep-1023,
+    (int)107
+  },
+  { // Entry 787
+    0x1.ffffffffffffe0p-915,
+    0x1.ffffffffffffep-1023,
+    (int)108
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0p-914,
+    0x1.ffffffffffffep-1023,
+    (int)109
+  },
+  { // Entry 789
+    0x1.ffffffffffffe0p-913,
+    0x1.ffffffffffffep-1023,
+    (int)110
+  },
+  { // Entry 790
+    0x1.ffffffffffffe0p-912,
+    0x1.ffffffffffffep-1023,
+    (int)111
+  },
+  { // Entry 791
+    0x1.ffffffffffffe0p-911,
+    0x1.ffffffffffffep-1023,
+    (int)112
+  },
+  { // Entry 792
+    0x1.ffffffffffffe0p-910,
+    0x1.ffffffffffffep-1023,
+    (int)113
+  },
+  { // Entry 793
+    0x1.ffffffffffffe0p-909,
+    0x1.ffffffffffffep-1023,
+    (int)114
+  },
+  { // Entry 794
+    0x1.ffffffffffffe0p-908,
+    0x1.ffffffffffffep-1023,
+    (int)115
+  },
+  { // Entry 795
+    0x1.ffffffffffffe0p-907,
+    0x1.ffffffffffffep-1023,
+    (int)116
+  },
+  { // Entry 796
+    0x1.ffffffffffffe0p-906,
+    0x1.ffffffffffffep-1023,
+    (int)117
+  },
+  { // Entry 797
+    0x1.ffffffffffffe0p-905,
+    0x1.ffffffffffffep-1023,
+    (int)118
+  },
+  { // Entry 798
+    0x1.ffffffffffffe0p-904,
+    0x1.ffffffffffffep-1023,
+    (int)119
+  },
+  { // Entry 799
+    0x1.ffffffffffffe0p-903,
+    0x1.ffffffffffffep-1023,
+    (int)120
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0p-902,
+    0x1.ffffffffffffep-1023,
+    (int)121
+  },
+  { // Entry 801
+    0x1.ffffffffffffe0p-901,
+    0x1.ffffffffffffep-1023,
+    (int)122
+  },
+  { // Entry 802
+    0x1.ffffffffffffe0p-900,
+    0x1.ffffffffffffep-1023,
+    (int)123
+  },
+  { // Entry 803
+    0x1.ffffffffffffe0p-899,
+    0x1.ffffffffffffep-1023,
+    (int)124
+  },
+  { // Entry 804
+    0x1.ffffffffffffe0p-898,
+    0x1.ffffffffffffep-1023,
+    (int)125
+  },
+  { // Entry 805
+    0x1.ffffffffffffe0p-897,
+    0x1.ffffffffffffep-1023,
+    (int)126
+  },
+  { // Entry 806
+    0x1.ffffffffffffe0p-896,
+    0x1.ffffffffffffep-1023,
+    (int)127
+  },
+  { // Entry 807
+    0x1.ffffffffffffe0p-895,
+    0x1.ffffffffffffep-1023,
+    (int)128
+  },
+  { // Entry 808
+    0x1.ffffffffffffe0p-894,
+    0x1.ffffffffffffep-1023,
+    (int)129
+  },
+  { // Entry 809
+    0x1.ffffffffffffe0p-893,
+    0x1.ffffffffffffep-1023,
+    (int)130
+  },
+  { // Entry 810
+    0x1.p0,
+    0x1.0p-1074,
+    (int)1074
+  },
+  { // Entry 811
+    0x1.p-1,
+    0x1.0p-1074,
+    (int)1073
+  },
+  { // Entry 812
+    0x1.ffffffffffffe0p51,
+    0x1.ffffffffffffep-1023,
+    (int)1074
+  },
+  { // Entry 813
+    0x1.ffffffffffffe0p50,
+    0x1.ffffffffffffep-1023,
+    (int)1073
+  },
+  { // Entry 814
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 815
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 816
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 817
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 818
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 819
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 820
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 821
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 822
+    0.0,
+    0.0,
+    (int)0
+  },
+  { // Entry 823
+    -0.0,
+    -0.0,
+    (int)0
+  },
+  { // Entry 824
+    0.0,
+    0.0,
+    (int)1
+  },
+  { // Entry 825
+    -0.0,
+    -0.0,
+    (int)1
+  },
+  { // Entry 826
+    0.0,
+    0.0,
+    (int)-1
+  },
+  { // Entry 827
+    -0.0,
+    -0.0,
+    (int)-1
+  },
+  { // Entry 828
+    0.0,
+    0.0,
+    (int)127
+  },
+  { // Entry 829
+    -0.0,
+    -0.0,
+    (int)127
+  },
+  { // Entry 830
+    0.0,
+    0.0,
+    (int)-127
+  },
+  { // Entry 831
+    -0.0,
+    -0.0,
+    (int)-127
+  },
+  { // Entry 832
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)0
+  },
+  { // Entry 833
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 834
+    0x1.p-1022,
+    0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 835
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 836
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 837
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 838
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 839
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 840
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 841
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)0
+  },
+  { // Entry 842
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)1
+  },
+  { // Entry 843
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)1
+  },
+  { // Entry 844
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 845
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 846
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)127
+  },
+  { // Entry 847
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)127
+  },
+  { // Entry 848
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 849
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 850
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 851
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 852
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 853
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 854
+    HUGE_VAL,
+    0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 855
+    HUGE_VAL,
+    0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 856
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 857
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 858
+    0x1.p-1023,
+    0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 859
+    0x1.ffffffffffffe0p-1024,
+    0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 860
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 861
+    -0.0,
+    -0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 862
+    -0x1.ffffffffffffe0p-1024,
+    -0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 863
+    -0x1.p-1023,
+    -0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 864
+    0.0,
+    0x1.fffffffffffffp1023,
+    (int)-40000
+  },
+  { // Entry 865
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/ldexpf_intel_data.h b/tests/math_data/ldexpf_intel_data.h
new file mode 100644
index 0000000..b74ed93
--- /dev/null
+++ b/tests/math_data/ldexpf_intel_data.h
@@ -0,0 +1,4288 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, int> g_ldexpf_intel_data[] = {
+  { // Entry 0
+    -0.0f,
+    -0x1.p-149,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.555554p-128,
+    -0x1.555554p-2,
+    (int)-126
+  },
+  { // Entry 2
+    -0x1.6db6dcp-128,
+    -0x1.6db6dcp-1,
+    (int)-127
+  },
+  { // Entry 3
+    -0x1.8e38e4p-128,
+    -0x1.8e38e4p-1,
+    (int)-127
+  },
+  { // Entry 4
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 5
+    0.0f,
+    0x1.p-149,
+    (int)-10
+  },
+  { // Entry 6
+    0x1.29e412p-127,
+    0x1.29e412p-7,
+    (int)-120
+  },
+  { // Entry 7
+    0.0f,
+    0x1.dddddep-2,
+    (int)-148
+  },
+  { // Entry 8
+    0.0f,
+    0x1.ffff60p-127,
+    (int)-23
+  },
+  { // Entry 9
+    0.0f,
+    0x1.ffff84p-127,
+    (int)-23
+  },
+  { // Entry 10
+    0x1.fffff8p-137,
+    0x1.fffff8p-127,
+    (int)-10
+  },
+  { // Entry 11
+    0.0f,
+    0x1.fffffep127,
+    (int)(-2147483647-1)
+  },
+  { // Entry 12
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)2147483647
+  },
+  { // Entry 13
+    -0x1.p-10,
+    -0x1.p0,
+    (int)-10
+  },
+  { // Entry 14
+    -0x1.p-9,
+    -0x1.p0,
+    (int)-9
+  },
+  { // Entry 15
+    -0x1.p-8,
+    -0x1.p0,
+    (int)-8
+  },
+  { // Entry 16
+    -0x1.p-7,
+    -0x1.p0,
+    (int)-7
+  },
+  { // Entry 17
+    -0x1.p-6,
+    -0x1.p0,
+    (int)-6
+  },
+  { // Entry 18
+    -0x1.p-5,
+    -0x1.p0,
+    (int)-5
+  },
+  { // Entry 19
+    -0x1.p-4,
+    -0x1.p0,
+    (int)-4
+  },
+  { // Entry 20
+    -0x1.p-3,
+    -0x1.p0,
+    (int)-3
+  },
+  { // Entry 21
+    -0x1.p-2,
+    -0x1.p0,
+    (int)-2
+  },
+  { // Entry 22
+    -0x1.p-1,
+    -0x1.p0,
+    (int)-1
+  },
+  { // Entry 23
+    -0x1.p0,
+    -0x1.p0,
+    (int)0
+  },
+  { // Entry 24
+    -0x1.p1,
+    -0x1.p0,
+    (int)1
+  },
+  { // Entry 25
+    -0x1.p2,
+    -0x1.p0,
+    (int)2
+  },
+  { // Entry 26
+    -0x1.p3,
+    -0x1.p0,
+    (int)3
+  },
+  { // Entry 27
+    -0x1.p4,
+    -0x1.p0,
+    (int)4
+  },
+  { // Entry 28
+    -0x1.p5,
+    -0x1.p0,
+    (int)5
+  },
+  { // Entry 29
+    -0x1.p6,
+    -0x1.p0,
+    (int)6
+  },
+  { // Entry 30
+    -0x1.p7,
+    -0x1.p0,
+    (int)7
+  },
+  { // Entry 31
+    -0x1.p8,
+    -0x1.p0,
+    (int)8
+  },
+  { // Entry 32
+    -0x1.p9,
+    -0x1.p0,
+    (int)9
+  },
+  { // Entry 33
+    -0x1.p10,
+    -0x1.p0,
+    (int)10
+  },
+  { // Entry 34
+    -0x1.d1745cp-11,
+    -0x1.d1745cp-1,
+    (int)-10
+  },
+  { // Entry 35
+    -0x1.d1745cp-10,
+    -0x1.d1745cp-1,
+    (int)-9
+  },
+  { // Entry 36
+    -0x1.d1745cp-9,
+    -0x1.d1745cp-1,
+    (int)-8
+  },
+  { // Entry 37
+    -0x1.d1745cp-8,
+    -0x1.d1745cp-1,
+    (int)-7
+  },
+  { // Entry 38
+    -0x1.d1745cp-7,
+    -0x1.d1745cp-1,
+    (int)-6
+  },
+  { // Entry 39
+    -0x1.d1745cp-6,
+    -0x1.d1745cp-1,
+    (int)-5
+  },
+  { // Entry 40
+    -0x1.d1745cp-5,
+    -0x1.d1745cp-1,
+    (int)-4
+  },
+  { // Entry 41
+    -0x1.d1745cp-4,
+    -0x1.d1745cp-1,
+    (int)-3
+  },
+  { // Entry 42
+    -0x1.d1745cp-3,
+    -0x1.d1745cp-1,
+    (int)-2
+  },
+  { // Entry 43
+    -0x1.d1745cp-2,
+    -0x1.d1745cp-1,
+    (int)-1
+  },
+  { // Entry 44
+    -0x1.d1745cp-1,
+    -0x1.d1745cp-1,
+    (int)0
+  },
+  { // Entry 45
+    -0x1.d1745cp0,
+    -0x1.d1745cp-1,
+    (int)1
+  },
+  { // Entry 46
+    -0x1.d1745cp1,
+    -0x1.d1745cp-1,
+    (int)2
+  },
+  { // Entry 47
+    -0x1.d1745cp2,
+    -0x1.d1745cp-1,
+    (int)3
+  },
+  { // Entry 48
+    -0x1.d1745cp3,
+    -0x1.d1745cp-1,
+    (int)4
+  },
+  { // Entry 49
+    -0x1.d1745cp4,
+    -0x1.d1745cp-1,
+    (int)5
+  },
+  { // Entry 50
+    -0x1.d1745cp5,
+    -0x1.d1745cp-1,
+    (int)6
+  },
+  { // Entry 51
+    -0x1.d1745cp6,
+    -0x1.d1745cp-1,
+    (int)7
+  },
+  { // Entry 52
+    -0x1.d1745cp7,
+    -0x1.d1745cp-1,
+    (int)8
+  },
+  { // Entry 53
+    -0x1.d1745cp8,
+    -0x1.d1745cp-1,
+    (int)9
+  },
+  { // Entry 54
+    -0x1.d1745cp9,
+    -0x1.d1745cp-1,
+    (int)10
+  },
+  { // Entry 55
+    -0x1.a2e8b8p-11,
+    -0x1.a2e8b8p-1,
+    (int)-10
+  },
+  { // Entry 56
+    -0x1.a2e8b8p-10,
+    -0x1.a2e8b8p-1,
+    (int)-9
+  },
+  { // Entry 57
+    -0x1.a2e8b8p-9,
+    -0x1.a2e8b8p-1,
+    (int)-8
+  },
+  { // Entry 58
+    -0x1.a2e8b8p-8,
+    -0x1.a2e8b8p-1,
+    (int)-7
+  },
+  { // Entry 59
+    -0x1.a2e8b8p-7,
+    -0x1.a2e8b8p-1,
+    (int)-6
+  },
+  { // Entry 60
+    -0x1.a2e8b8p-6,
+    -0x1.a2e8b8p-1,
+    (int)-5
+  },
+  { // Entry 61
+    -0x1.a2e8b8p-5,
+    -0x1.a2e8b8p-1,
+    (int)-4
+  },
+  { // Entry 62
+    -0x1.a2e8b8p-4,
+    -0x1.a2e8b8p-1,
+    (int)-3
+  },
+  { // Entry 63
+    -0x1.a2e8b8p-3,
+    -0x1.a2e8b8p-1,
+    (int)-2
+  },
+  { // Entry 64
+    -0x1.a2e8b8p-2,
+    -0x1.a2e8b8p-1,
+    (int)-1
+  },
+  { // Entry 65
+    -0x1.a2e8b8p-1,
+    -0x1.a2e8b8p-1,
+    (int)0
+  },
+  { // Entry 66
+    -0x1.a2e8b8p0,
+    -0x1.a2e8b8p-1,
+    (int)1
+  },
+  { // Entry 67
+    -0x1.a2e8b8p1,
+    -0x1.a2e8b8p-1,
+    (int)2
+  },
+  { // Entry 68
+    -0x1.a2e8b8p2,
+    -0x1.a2e8b8p-1,
+    (int)3
+  },
+  { // Entry 69
+    -0x1.a2e8b8p3,
+    -0x1.a2e8b8p-1,
+    (int)4
+  },
+  { // Entry 70
+    -0x1.a2e8b8p4,
+    -0x1.a2e8b8p-1,
+    (int)5
+  },
+  { // Entry 71
+    -0x1.a2e8b8p5,
+    -0x1.a2e8b8p-1,
+    (int)6
+  },
+  { // Entry 72
+    -0x1.a2e8b8p6,
+    -0x1.a2e8b8p-1,
+    (int)7
+  },
+  { // Entry 73
+    -0x1.a2e8b8p7,
+    -0x1.a2e8b8p-1,
+    (int)8
+  },
+  { // Entry 74
+    -0x1.a2e8b8p8,
+    -0x1.a2e8b8p-1,
+    (int)9
+  },
+  { // Entry 75
+    -0x1.a2e8b8p9,
+    -0x1.a2e8b8p-1,
+    (int)10
+  },
+  { // Entry 76
+    -0x1.745d14p-11,
+    -0x1.745d14p-1,
+    (int)-10
+  },
+  { // Entry 77
+    -0x1.745d14p-10,
+    -0x1.745d14p-1,
+    (int)-9
+  },
+  { // Entry 78
+    -0x1.745d14p-9,
+    -0x1.745d14p-1,
+    (int)-8
+  },
+  { // Entry 79
+    -0x1.745d14p-8,
+    -0x1.745d14p-1,
+    (int)-7
+  },
+  { // Entry 80
+    -0x1.745d14p-7,
+    -0x1.745d14p-1,
+    (int)-6
+  },
+  { // Entry 81
+    -0x1.745d14p-6,
+    -0x1.745d14p-1,
+    (int)-5
+  },
+  { // Entry 82
+    -0x1.745d14p-5,
+    -0x1.745d14p-1,
+    (int)-4
+  },
+  { // Entry 83
+    -0x1.745d14p-4,
+    -0x1.745d14p-1,
+    (int)-3
+  },
+  { // Entry 84
+    -0x1.745d14p-3,
+    -0x1.745d14p-1,
+    (int)-2
+  },
+  { // Entry 85
+    -0x1.745d14p-2,
+    -0x1.745d14p-1,
+    (int)-1
+  },
+  { // Entry 86
+    -0x1.745d14p-1,
+    -0x1.745d14p-1,
+    (int)0
+  },
+  { // Entry 87
+    -0x1.745d14p0,
+    -0x1.745d14p-1,
+    (int)1
+  },
+  { // Entry 88
+    -0x1.745d14p1,
+    -0x1.745d14p-1,
+    (int)2
+  },
+  { // Entry 89
+    -0x1.745d14p2,
+    -0x1.745d14p-1,
+    (int)3
+  },
+  { // Entry 90
+    -0x1.745d14p3,
+    -0x1.745d14p-1,
+    (int)4
+  },
+  { // Entry 91
+    -0x1.745d14p4,
+    -0x1.745d14p-1,
+    (int)5
+  },
+  { // Entry 92
+    -0x1.745d14p5,
+    -0x1.745d14p-1,
+    (int)6
+  },
+  { // Entry 93
+    -0x1.745d14p6,
+    -0x1.745d14p-1,
+    (int)7
+  },
+  { // Entry 94
+    -0x1.745d14p7,
+    -0x1.745d14p-1,
+    (int)8
+  },
+  { // Entry 95
+    -0x1.745d14p8,
+    -0x1.745d14p-1,
+    (int)9
+  },
+  { // Entry 96
+    -0x1.745d14p9,
+    -0x1.745d14p-1,
+    (int)10
+  },
+  { // Entry 97
+    -0x1.45d170p-11,
+    -0x1.45d170p-1,
+    (int)-10
+  },
+  { // Entry 98
+    -0x1.45d170p-10,
+    -0x1.45d170p-1,
+    (int)-9
+  },
+  { // Entry 99
+    -0x1.45d170p-9,
+    -0x1.45d170p-1,
+    (int)-8
+  },
+  { // Entry 100
+    -0x1.45d170p-8,
+    -0x1.45d170p-1,
+    (int)-7
+  },
+  { // Entry 101
+    -0x1.45d170p-7,
+    -0x1.45d170p-1,
+    (int)-6
+  },
+  { // Entry 102
+    -0x1.45d170p-6,
+    -0x1.45d170p-1,
+    (int)-5
+  },
+  { // Entry 103
+    -0x1.45d170p-5,
+    -0x1.45d170p-1,
+    (int)-4
+  },
+  { // Entry 104
+    -0x1.45d170p-4,
+    -0x1.45d170p-1,
+    (int)-3
+  },
+  { // Entry 105
+    -0x1.45d170p-3,
+    -0x1.45d170p-1,
+    (int)-2
+  },
+  { // Entry 106
+    -0x1.45d170p-2,
+    -0x1.45d170p-1,
+    (int)-1
+  },
+  { // Entry 107
+    -0x1.45d170p-1,
+    -0x1.45d170p-1,
+    (int)0
+  },
+  { // Entry 108
+    -0x1.45d170p0,
+    -0x1.45d170p-1,
+    (int)1
+  },
+  { // Entry 109
+    -0x1.45d170p1,
+    -0x1.45d170p-1,
+    (int)2
+  },
+  { // Entry 110
+    -0x1.45d170p2,
+    -0x1.45d170p-1,
+    (int)3
+  },
+  { // Entry 111
+    -0x1.45d170p3,
+    -0x1.45d170p-1,
+    (int)4
+  },
+  { // Entry 112
+    -0x1.45d170p4,
+    -0x1.45d170p-1,
+    (int)5
+  },
+  { // Entry 113
+    -0x1.45d170p5,
+    -0x1.45d170p-1,
+    (int)6
+  },
+  { // Entry 114
+    -0x1.45d170p6,
+    -0x1.45d170p-1,
+    (int)7
+  },
+  { // Entry 115
+    -0x1.45d170p7,
+    -0x1.45d170p-1,
+    (int)8
+  },
+  { // Entry 116
+    -0x1.45d170p8,
+    -0x1.45d170p-1,
+    (int)9
+  },
+  { // Entry 117
+    -0x1.45d170p9,
+    -0x1.45d170p-1,
+    (int)10
+  },
+  { // Entry 118
+    -0x1.1745ccp-11,
+    -0x1.1745ccp-1,
+    (int)-10
+  },
+  { // Entry 119
+    -0x1.1745ccp-10,
+    -0x1.1745ccp-1,
+    (int)-9
+  },
+  { // Entry 120
+    -0x1.1745ccp-9,
+    -0x1.1745ccp-1,
+    (int)-8
+  },
+  { // Entry 121
+    -0x1.1745ccp-8,
+    -0x1.1745ccp-1,
+    (int)-7
+  },
+  { // Entry 122
+    -0x1.1745ccp-7,
+    -0x1.1745ccp-1,
+    (int)-6
+  },
+  { // Entry 123
+    -0x1.1745ccp-6,
+    -0x1.1745ccp-1,
+    (int)-5
+  },
+  { // Entry 124
+    -0x1.1745ccp-5,
+    -0x1.1745ccp-1,
+    (int)-4
+  },
+  { // Entry 125
+    -0x1.1745ccp-4,
+    -0x1.1745ccp-1,
+    (int)-3
+  },
+  { // Entry 126
+    -0x1.1745ccp-3,
+    -0x1.1745ccp-1,
+    (int)-2
+  },
+  { // Entry 127
+    -0x1.1745ccp-2,
+    -0x1.1745ccp-1,
+    (int)-1
+  },
+  { // Entry 128
+    -0x1.1745ccp-1,
+    -0x1.1745ccp-1,
+    (int)0
+  },
+  { // Entry 129
+    -0x1.1745ccp0,
+    -0x1.1745ccp-1,
+    (int)1
+  },
+  { // Entry 130
+    -0x1.1745ccp1,
+    -0x1.1745ccp-1,
+    (int)2
+  },
+  { // Entry 131
+    -0x1.1745ccp2,
+    -0x1.1745ccp-1,
+    (int)3
+  },
+  { // Entry 132
+    -0x1.1745ccp3,
+    -0x1.1745ccp-1,
+    (int)4
+  },
+  { // Entry 133
+    -0x1.1745ccp4,
+    -0x1.1745ccp-1,
+    (int)5
+  },
+  { // Entry 134
+    -0x1.1745ccp5,
+    -0x1.1745ccp-1,
+    (int)6
+  },
+  { // Entry 135
+    -0x1.1745ccp6,
+    -0x1.1745ccp-1,
+    (int)7
+  },
+  { // Entry 136
+    -0x1.1745ccp7,
+    -0x1.1745ccp-1,
+    (int)8
+  },
+  { // Entry 137
+    -0x1.1745ccp8,
+    -0x1.1745ccp-1,
+    (int)9
+  },
+  { // Entry 138
+    -0x1.1745ccp9,
+    -0x1.1745ccp-1,
+    (int)10
+  },
+  { // Entry 139
+    -0x1.d17452p-12,
+    -0x1.d17452p-2,
+    (int)-10
+  },
+  { // Entry 140
+    -0x1.d17452p-11,
+    -0x1.d17452p-2,
+    (int)-9
+  },
+  { // Entry 141
+    -0x1.d17452p-10,
+    -0x1.d17452p-2,
+    (int)-8
+  },
+  { // Entry 142
+    -0x1.d17452p-9,
+    -0x1.d17452p-2,
+    (int)-7
+  },
+  { // Entry 143
+    -0x1.d17452p-8,
+    -0x1.d17452p-2,
+    (int)-6
+  },
+  { // Entry 144
+    -0x1.d17452p-7,
+    -0x1.d17452p-2,
+    (int)-5
+  },
+  { // Entry 145
+    -0x1.d17452p-6,
+    -0x1.d17452p-2,
+    (int)-4
+  },
+  { // Entry 146
+    -0x1.d17452p-5,
+    -0x1.d17452p-2,
+    (int)-3
+  },
+  { // Entry 147
+    -0x1.d17452p-4,
+    -0x1.d17452p-2,
+    (int)-2
+  },
+  { // Entry 148
+    -0x1.d17452p-3,
+    -0x1.d17452p-2,
+    (int)-1
+  },
+  { // Entry 149
+    -0x1.d17452p-2,
+    -0x1.d17452p-2,
+    (int)0
+  },
+  { // Entry 150
+    -0x1.d17452p-1,
+    -0x1.d17452p-2,
+    (int)1
+  },
+  { // Entry 151
+    -0x1.d17452p0,
+    -0x1.d17452p-2,
+    (int)2
+  },
+  { // Entry 152
+    -0x1.d17452p1,
+    -0x1.d17452p-2,
+    (int)3
+  },
+  { // Entry 153
+    -0x1.d17452p2,
+    -0x1.d17452p-2,
+    (int)4
+  },
+  { // Entry 154
+    -0x1.d17452p3,
+    -0x1.d17452p-2,
+    (int)5
+  },
+  { // Entry 155
+    -0x1.d17452p4,
+    -0x1.d17452p-2,
+    (int)6
+  },
+  { // Entry 156
+    -0x1.d17452p5,
+    -0x1.d17452p-2,
+    (int)7
+  },
+  { // Entry 157
+    -0x1.d17452p6,
+    -0x1.d17452p-2,
+    (int)8
+  },
+  { // Entry 158
+    -0x1.d17452p7,
+    -0x1.d17452p-2,
+    (int)9
+  },
+  { // Entry 159
+    -0x1.d17452p8,
+    -0x1.d17452p-2,
+    (int)10
+  },
+  { // Entry 160
+    -0x1.745d0cp-12,
+    -0x1.745d0cp-2,
+    (int)-10
+  },
+  { // Entry 161
+    -0x1.745d0cp-11,
+    -0x1.745d0cp-2,
+    (int)-9
+  },
+  { // Entry 162
+    -0x1.745d0cp-10,
+    -0x1.745d0cp-2,
+    (int)-8
+  },
+  { // Entry 163
+    -0x1.745d0cp-9,
+    -0x1.745d0cp-2,
+    (int)-7
+  },
+  { // Entry 164
+    -0x1.745d0cp-8,
+    -0x1.745d0cp-2,
+    (int)-6
+  },
+  { // Entry 165
+    -0x1.745d0cp-7,
+    -0x1.745d0cp-2,
+    (int)-5
+  },
+  { // Entry 166
+    -0x1.745d0cp-6,
+    -0x1.745d0cp-2,
+    (int)-4
+  },
+  { // Entry 167
+    -0x1.745d0cp-5,
+    -0x1.745d0cp-2,
+    (int)-3
+  },
+  { // Entry 168
+    -0x1.745d0cp-4,
+    -0x1.745d0cp-2,
+    (int)-2
+  },
+  { // Entry 169
+    -0x1.745d0cp-3,
+    -0x1.745d0cp-2,
+    (int)-1
+  },
+  { // Entry 170
+    -0x1.745d0cp-2,
+    -0x1.745d0cp-2,
+    (int)0
+  },
+  { // Entry 171
+    -0x1.745d0cp-1,
+    -0x1.745d0cp-2,
+    (int)1
+  },
+  { // Entry 172
+    -0x1.745d0cp0,
+    -0x1.745d0cp-2,
+    (int)2
+  },
+  { // Entry 173
+    -0x1.745d0cp1,
+    -0x1.745d0cp-2,
+    (int)3
+  },
+  { // Entry 174
+    -0x1.745d0cp2,
+    -0x1.745d0cp-2,
+    (int)4
+  },
+  { // Entry 175
+    -0x1.745d0cp3,
+    -0x1.745d0cp-2,
+    (int)5
+  },
+  { // Entry 176
+    -0x1.745d0cp4,
+    -0x1.745d0cp-2,
+    (int)6
+  },
+  { // Entry 177
+    -0x1.745d0cp5,
+    -0x1.745d0cp-2,
+    (int)7
+  },
+  { // Entry 178
+    -0x1.745d0cp6,
+    -0x1.745d0cp-2,
+    (int)8
+  },
+  { // Entry 179
+    -0x1.745d0cp7,
+    -0x1.745d0cp-2,
+    (int)9
+  },
+  { // Entry 180
+    -0x1.745d0cp8,
+    -0x1.745d0cp-2,
+    (int)10
+  },
+  { // Entry 181
+    -0x1.1745c6p-12,
+    -0x1.1745c6p-2,
+    (int)-10
+  },
+  { // Entry 182
+    -0x1.1745c6p-11,
+    -0x1.1745c6p-2,
+    (int)-9
+  },
+  { // Entry 183
+    -0x1.1745c6p-10,
+    -0x1.1745c6p-2,
+    (int)-8
+  },
+  { // Entry 184
+    -0x1.1745c6p-9,
+    -0x1.1745c6p-2,
+    (int)-7
+  },
+  { // Entry 185
+    -0x1.1745c6p-8,
+    -0x1.1745c6p-2,
+    (int)-6
+  },
+  { // Entry 186
+    -0x1.1745c6p-7,
+    -0x1.1745c6p-2,
+    (int)-5
+  },
+  { // Entry 187
+    -0x1.1745c6p-6,
+    -0x1.1745c6p-2,
+    (int)-4
+  },
+  { // Entry 188
+    -0x1.1745c6p-5,
+    -0x1.1745c6p-2,
+    (int)-3
+  },
+  { // Entry 189
+    -0x1.1745c6p-4,
+    -0x1.1745c6p-2,
+    (int)-2
+  },
+  { // Entry 190
+    -0x1.1745c6p-3,
+    -0x1.1745c6p-2,
+    (int)-1
+  },
+  { // Entry 191
+    -0x1.1745c6p-2,
+    -0x1.1745c6p-2,
+    (int)0
+  },
+  { // Entry 192
+    -0x1.1745c6p-1,
+    -0x1.1745c6p-2,
+    (int)1
+  },
+  { // Entry 193
+    -0x1.1745c6p0,
+    -0x1.1745c6p-2,
+    (int)2
+  },
+  { // Entry 194
+    -0x1.1745c6p1,
+    -0x1.1745c6p-2,
+    (int)3
+  },
+  { // Entry 195
+    -0x1.1745c6p2,
+    -0x1.1745c6p-2,
+    (int)4
+  },
+  { // Entry 196
+    -0x1.1745c6p3,
+    -0x1.1745c6p-2,
+    (int)5
+  },
+  { // Entry 197
+    -0x1.1745c6p4,
+    -0x1.1745c6p-2,
+    (int)6
+  },
+  { // Entry 198
+    -0x1.1745c6p5,
+    -0x1.1745c6p-2,
+    (int)7
+  },
+  { // Entry 199
+    -0x1.1745c6p6,
+    -0x1.1745c6p-2,
+    (int)8
+  },
+  { // Entry 200
+    -0x1.1745c6p7,
+    -0x1.1745c6p-2,
+    (int)9
+  },
+  { // Entry 201
+    -0x1.1745c6p8,
+    -0x1.1745c6p-2,
+    (int)10
+  },
+  { // Entry 202
+    -0x1.745dp-13,
+    -0x1.745dp-3,
+    (int)-10
+  },
+  { // Entry 203
+    -0x1.745dp-12,
+    -0x1.745dp-3,
+    (int)-9
+  },
+  { // Entry 204
+    -0x1.745dp-11,
+    -0x1.745dp-3,
+    (int)-8
+  },
+  { // Entry 205
+    -0x1.745dp-10,
+    -0x1.745dp-3,
+    (int)-7
+  },
+  { // Entry 206
+    -0x1.745dp-9,
+    -0x1.745dp-3,
+    (int)-6
+  },
+  { // Entry 207
+    -0x1.745dp-8,
+    -0x1.745dp-3,
+    (int)-5
+  },
+  { // Entry 208
+    -0x1.745dp-7,
+    -0x1.745dp-3,
+    (int)-4
+  },
+  { // Entry 209
+    -0x1.745dp-6,
+    -0x1.745dp-3,
+    (int)-3
+  },
+  { // Entry 210
+    -0x1.745dp-5,
+    -0x1.745dp-3,
+    (int)-2
+  },
+  { // Entry 211
+    -0x1.745dp-4,
+    -0x1.745dp-3,
+    (int)-1
+  },
+  { // Entry 212
+    -0x1.745dp-3,
+    -0x1.745dp-3,
+    (int)0
+  },
+  { // Entry 213
+    -0x1.745dp-2,
+    -0x1.745dp-3,
+    (int)1
+  },
+  { // Entry 214
+    -0x1.745dp-1,
+    -0x1.745dp-3,
+    (int)2
+  },
+  { // Entry 215
+    -0x1.745dp0,
+    -0x1.745dp-3,
+    (int)3
+  },
+  { // Entry 216
+    -0x1.745dp1,
+    -0x1.745dp-3,
+    (int)4
+  },
+  { // Entry 217
+    -0x1.745dp2,
+    -0x1.745dp-3,
+    (int)5
+  },
+  { // Entry 218
+    -0x1.745dp3,
+    -0x1.745dp-3,
+    (int)6
+  },
+  { // Entry 219
+    -0x1.745dp4,
+    -0x1.745dp-3,
+    (int)7
+  },
+  { // Entry 220
+    -0x1.745dp5,
+    -0x1.745dp-3,
+    (int)8
+  },
+  { // Entry 221
+    -0x1.745dp6,
+    -0x1.745dp-3,
+    (int)9
+  },
+  { // Entry 222
+    -0x1.745dp7,
+    -0x1.745dp-3,
+    (int)10
+  },
+  { // Entry 223
+    -0x1.745ce8p-14,
+    -0x1.745ce8p-4,
+    (int)-10
+  },
+  { // Entry 224
+    -0x1.745ce8p-13,
+    -0x1.745ce8p-4,
+    (int)-9
+  },
+  { // Entry 225
+    -0x1.745ce8p-12,
+    -0x1.745ce8p-4,
+    (int)-8
+  },
+  { // Entry 226
+    -0x1.745ce8p-11,
+    -0x1.745ce8p-4,
+    (int)-7
+  },
+  { // Entry 227
+    -0x1.745ce8p-10,
+    -0x1.745ce8p-4,
+    (int)-6
+  },
+  { // Entry 228
+    -0x1.745ce8p-9,
+    -0x1.745ce8p-4,
+    (int)-5
+  },
+  { // Entry 229
+    -0x1.745ce8p-8,
+    -0x1.745ce8p-4,
+    (int)-4
+  },
+  { // Entry 230
+    -0x1.745ce8p-7,
+    -0x1.745ce8p-4,
+    (int)-3
+  },
+  { // Entry 231
+    -0x1.745ce8p-6,
+    -0x1.745ce8p-4,
+    (int)-2
+  },
+  { // Entry 232
+    -0x1.745ce8p-5,
+    -0x1.745ce8p-4,
+    (int)-1
+  },
+  { // Entry 233
+    -0x1.745ce8p-4,
+    -0x1.745ce8p-4,
+    (int)0
+  },
+  { // Entry 234
+    -0x1.745ce8p-3,
+    -0x1.745ce8p-4,
+    (int)1
+  },
+  { // Entry 235
+    -0x1.745ce8p-2,
+    -0x1.745ce8p-4,
+    (int)2
+  },
+  { // Entry 236
+    -0x1.745ce8p-1,
+    -0x1.745ce8p-4,
+    (int)3
+  },
+  { // Entry 237
+    -0x1.745ce8p0,
+    -0x1.745ce8p-4,
+    (int)4
+  },
+  { // Entry 238
+    -0x1.745ce8p1,
+    -0x1.745ce8p-4,
+    (int)5
+  },
+  { // Entry 239
+    -0x1.745ce8p2,
+    -0x1.745ce8p-4,
+    (int)6
+  },
+  { // Entry 240
+    -0x1.745ce8p3,
+    -0x1.745ce8p-4,
+    (int)7
+  },
+  { // Entry 241
+    -0x1.745ce8p4,
+    -0x1.745ce8p-4,
+    (int)8
+  },
+  { // Entry 242
+    -0x1.745ce8p5,
+    -0x1.745ce8p-4,
+    (int)9
+  },
+  { // Entry 243
+    -0x1.745ce8p6,
+    -0x1.745ce8p-4,
+    (int)10
+  },
+  { // Entry 244
+    0x1.80p-33,
+    0x1.80p-23,
+    (int)-10
+  },
+  { // Entry 245
+    0x1.80p-32,
+    0x1.80p-23,
+    (int)-9
+  },
+  { // Entry 246
+    0x1.80p-31,
+    0x1.80p-23,
+    (int)-8
+  },
+  { // Entry 247
+    0x1.80p-30,
+    0x1.80p-23,
+    (int)-7
+  },
+  { // Entry 248
+    0x1.80p-29,
+    0x1.80p-23,
+    (int)-6
+  },
+  { // Entry 249
+    0x1.80p-28,
+    0x1.80p-23,
+    (int)-5
+  },
+  { // Entry 250
+    0x1.80p-27,
+    0x1.80p-23,
+    (int)-4
+  },
+  { // Entry 251
+    0x1.80p-26,
+    0x1.80p-23,
+    (int)-3
+  },
+  { // Entry 252
+    0x1.80p-25,
+    0x1.80p-23,
+    (int)-2
+  },
+  { // Entry 253
+    0x1.80p-24,
+    0x1.80p-23,
+    (int)-1
+  },
+  { // Entry 254
+    0x1.80p-23,
+    0x1.80p-23,
+    (int)0
+  },
+  { // Entry 255
+    0x1.80p-22,
+    0x1.80p-23,
+    (int)1
+  },
+  { // Entry 256
+    0x1.80p-21,
+    0x1.80p-23,
+    (int)2
+  },
+  { // Entry 257
+    0x1.80p-20,
+    0x1.80p-23,
+    (int)3
+  },
+  { // Entry 258
+    0x1.80p-19,
+    0x1.80p-23,
+    (int)4
+  },
+  { // Entry 259
+    0x1.80p-18,
+    0x1.80p-23,
+    (int)5
+  },
+  { // Entry 260
+    0x1.80p-17,
+    0x1.80p-23,
+    (int)6
+  },
+  { // Entry 261
+    0x1.80p-16,
+    0x1.80p-23,
+    (int)7
+  },
+  { // Entry 262
+    0x1.80p-15,
+    0x1.80p-23,
+    (int)8
+  },
+  { // Entry 263
+    0x1.80p-14,
+    0x1.80p-23,
+    (int)9
+  },
+  { // Entry 264
+    0x1.80p-13,
+    0x1.80p-23,
+    (int)10
+  },
+  { // Entry 265
+    0x1.745d48p-14,
+    0x1.745d48p-4,
+    (int)-10
+  },
+  { // Entry 266
+    0x1.745d48p-13,
+    0x1.745d48p-4,
+    (int)-9
+  },
+  { // Entry 267
+    0x1.745d48p-12,
+    0x1.745d48p-4,
+    (int)-8
+  },
+  { // Entry 268
+    0x1.745d48p-11,
+    0x1.745d48p-4,
+    (int)-7
+  },
+  { // Entry 269
+    0x1.745d48p-10,
+    0x1.745d48p-4,
+    (int)-6
+  },
+  { // Entry 270
+    0x1.745d48p-9,
+    0x1.745d48p-4,
+    (int)-5
+  },
+  { // Entry 271
+    0x1.745d48p-8,
+    0x1.745d48p-4,
+    (int)-4
+  },
+  { // Entry 272
+    0x1.745d48p-7,
+    0x1.745d48p-4,
+    (int)-3
+  },
+  { // Entry 273
+    0x1.745d48p-6,
+    0x1.745d48p-4,
+    (int)-2
+  },
+  { // Entry 274
+    0x1.745d48p-5,
+    0x1.745d48p-4,
+    (int)-1
+  },
+  { // Entry 275
+    0x1.745d48p-4,
+    0x1.745d48p-4,
+    (int)0
+  },
+  { // Entry 276
+    0x1.745d48p-3,
+    0x1.745d48p-4,
+    (int)1
+  },
+  { // Entry 277
+    0x1.745d48p-2,
+    0x1.745d48p-4,
+    (int)2
+  },
+  { // Entry 278
+    0x1.745d48p-1,
+    0x1.745d48p-4,
+    (int)3
+  },
+  { // Entry 279
+    0x1.745d48p0,
+    0x1.745d48p-4,
+    (int)4
+  },
+  { // Entry 280
+    0x1.745d48p1,
+    0x1.745d48p-4,
+    (int)5
+  },
+  { // Entry 281
+    0x1.745d48p2,
+    0x1.745d48p-4,
+    (int)6
+  },
+  { // Entry 282
+    0x1.745d48p3,
+    0x1.745d48p-4,
+    (int)7
+  },
+  { // Entry 283
+    0x1.745d48p4,
+    0x1.745d48p-4,
+    (int)8
+  },
+  { // Entry 284
+    0x1.745d48p5,
+    0x1.745d48p-4,
+    (int)9
+  },
+  { // Entry 285
+    0x1.745d48p6,
+    0x1.745d48p-4,
+    (int)10
+  },
+  { // Entry 286
+    0x1.745d30p-13,
+    0x1.745d30p-3,
+    (int)-10
+  },
+  { // Entry 287
+    0x1.745d30p-12,
+    0x1.745d30p-3,
+    (int)-9
+  },
+  { // Entry 288
+    0x1.745d30p-11,
+    0x1.745d30p-3,
+    (int)-8
+  },
+  { // Entry 289
+    0x1.745d30p-10,
+    0x1.745d30p-3,
+    (int)-7
+  },
+  { // Entry 290
+    0x1.745d30p-9,
+    0x1.745d30p-3,
+    (int)-6
+  },
+  { // Entry 291
+    0x1.745d30p-8,
+    0x1.745d30p-3,
+    (int)-5
+  },
+  { // Entry 292
+    0x1.745d30p-7,
+    0x1.745d30p-3,
+    (int)-4
+  },
+  { // Entry 293
+    0x1.745d30p-6,
+    0x1.745d30p-3,
+    (int)-3
+  },
+  { // Entry 294
+    0x1.745d30p-5,
+    0x1.745d30p-3,
+    (int)-2
+  },
+  { // Entry 295
+    0x1.745d30p-4,
+    0x1.745d30p-3,
+    (int)-1
+  },
+  { // Entry 296
+    0x1.745d30p-3,
+    0x1.745d30p-3,
+    (int)0
+  },
+  { // Entry 297
+    0x1.745d30p-2,
+    0x1.745d30p-3,
+    (int)1
+  },
+  { // Entry 298
+    0x1.745d30p-1,
+    0x1.745d30p-3,
+    (int)2
+  },
+  { // Entry 299
+    0x1.745d30p0,
+    0x1.745d30p-3,
+    (int)3
+  },
+  { // Entry 300
+    0x1.745d30p1,
+    0x1.745d30p-3,
+    (int)4
+  },
+  { // Entry 301
+    0x1.745d30p2,
+    0x1.745d30p-3,
+    (int)5
+  },
+  { // Entry 302
+    0x1.745d30p3,
+    0x1.745d30p-3,
+    (int)6
+  },
+  { // Entry 303
+    0x1.745d30p4,
+    0x1.745d30p-3,
+    (int)7
+  },
+  { // Entry 304
+    0x1.745d30p5,
+    0x1.745d30p-3,
+    (int)8
+  },
+  { // Entry 305
+    0x1.745d30p6,
+    0x1.745d30p-3,
+    (int)9
+  },
+  { // Entry 306
+    0x1.745d30p7,
+    0x1.745d30p-3,
+    (int)10
+  },
+  { // Entry 307
+    0x1.1745dep-12,
+    0x1.1745dep-2,
+    (int)-10
+  },
+  { // Entry 308
+    0x1.1745dep-11,
+    0x1.1745dep-2,
+    (int)-9
+  },
+  { // Entry 309
+    0x1.1745dep-10,
+    0x1.1745dep-2,
+    (int)-8
+  },
+  { // Entry 310
+    0x1.1745dep-9,
+    0x1.1745dep-2,
+    (int)-7
+  },
+  { // Entry 311
+    0x1.1745dep-8,
+    0x1.1745dep-2,
+    (int)-6
+  },
+  { // Entry 312
+    0x1.1745dep-7,
+    0x1.1745dep-2,
+    (int)-5
+  },
+  { // Entry 313
+    0x1.1745dep-6,
+    0x1.1745dep-2,
+    (int)-4
+  },
+  { // Entry 314
+    0x1.1745dep-5,
+    0x1.1745dep-2,
+    (int)-3
+  },
+  { // Entry 315
+    0x1.1745dep-4,
+    0x1.1745dep-2,
+    (int)-2
+  },
+  { // Entry 316
+    0x1.1745dep-3,
+    0x1.1745dep-2,
+    (int)-1
+  },
+  { // Entry 317
+    0x1.1745dep-2,
+    0x1.1745dep-2,
+    (int)0
+  },
+  { // Entry 318
+    0x1.1745dep-1,
+    0x1.1745dep-2,
+    (int)1
+  },
+  { // Entry 319
+    0x1.1745dep0,
+    0x1.1745dep-2,
+    (int)2
+  },
+  { // Entry 320
+    0x1.1745dep1,
+    0x1.1745dep-2,
+    (int)3
+  },
+  { // Entry 321
+    0x1.1745dep2,
+    0x1.1745dep-2,
+    (int)4
+  },
+  { // Entry 322
+    0x1.1745dep3,
+    0x1.1745dep-2,
+    (int)5
+  },
+  { // Entry 323
+    0x1.1745dep4,
+    0x1.1745dep-2,
+    (int)6
+  },
+  { // Entry 324
+    0x1.1745dep5,
+    0x1.1745dep-2,
+    (int)7
+  },
+  { // Entry 325
+    0x1.1745dep6,
+    0x1.1745dep-2,
+    (int)8
+  },
+  { // Entry 326
+    0x1.1745dep7,
+    0x1.1745dep-2,
+    (int)9
+  },
+  { // Entry 327
+    0x1.1745dep8,
+    0x1.1745dep-2,
+    (int)10
+  },
+  { // Entry 328
+    0x1.745d24p-12,
+    0x1.745d24p-2,
+    (int)-10
+  },
+  { // Entry 329
+    0x1.745d24p-11,
+    0x1.745d24p-2,
+    (int)-9
+  },
+  { // Entry 330
+    0x1.745d24p-10,
+    0x1.745d24p-2,
+    (int)-8
+  },
+  { // Entry 331
+    0x1.745d24p-9,
+    0x1.745d24p-2,
+    (int)-7
+  },
+  { // Entry 332
+    0x1.745d24p-8,
+    0x1.745d24p-2,
+    (int)-6
+  },
+  { // Entry 333
+    0x1.745d24p-7,
+    0x1.745d24p-2,
+    (int)-5
+  },
+  { // Entry 334
+    0x1.745d24p-6,
+    0x1.745d24p-2,
+    (int)-4
+  },
+  { // Entry 335
+    0x1.745d24p-5,
+    0x1.745d24p-2,
+    (int)-3
+  },
+  { // Entry 336
+    0x1.745d24p-4,
+    0x1.745d24p-2,
+    (int)-2
+  },
+  { // Entry 337
+    0x1.745d24p-3,
+    0x1.745d24p-2,
+    (int)-1
+  },
+  { // Entry 338
+    0x1.745d24p-2,
+    0x1.745d24p-2,
+    (int)0
+  },
+  { // Entry 339
+    0x1.745d24p-1,
+    0x1.745d24p-2,
+    (int)1
+  },
+  { // Entry 340
+    0x1.745d24p0,
+    0x1.745d24p-2,
+    (int)2
+  },
+  { // Entry 341
+    0x1.745d24p1,
+    0x1.745d24p-2,
+    (int)3
+  },
+  { // Entry 342
+    0x1.745d24p2,
+    0x1.745d24p-2,
+    (int)4
+  },
+  { // Entry 343
+    0x1.745d24p3,
+    0x1.745d24p-2,
+    (int)5
+  },
+  { // Entry 344
+    0x1.745d24p4,
+    0x1.745d24p-2,
+    (int)6
+  },
+  { // Entry 345
+    0x1.745d24p5,
+    0x1.745d24p-2,
+    (int)7
+  },
+  { // Entry 346
+    0x1.745d24p6,
+    0x1.745d24p-2,
+    (int)8
+  },
+  { // Entry 347
+    0x1.745d24p7,
+    0x1.745d24p-2,
+    (int)9
+  },
+  { // Entry 348
+    0x1.745d24p8,
+    0x1.745d24p-2,
+    (int)10
+  },
+  { // Entry 349
+    0x1.d1746ap-12,
+    0x1.d1746ap-2,
+    (int)-10
+  },
+  { // Entry 350
+    0x1.d1746ap-11,
+    0x1.d1746ap-2,
+    (int)-9
+  },
+  { // Entry 351
+    0x1.d1746ap-10,
+    0x1.d1746ap-2,
+    (int)-8
+  },
+  { // Entry 352
+    0x1.d1746ap-9,
+    0x1.d1746ap-2,
+    (int)-7
+  },
+  { // Entry 353
+    0x1.d1746ap-8,
+    0x1.d1746ap-2,
+    (int)-6
+  },
+  { // Entry 354
+    0x1.d1746ap-7,
+    0x1.d1746ap-2,
+    (int)-5
+  },
+  { // Entry 355
+    0x1.d1746ap-6,
+    0x1.d1746ap-2,
+    (int)-4
+  },
+  { // Entry 356
+    0x1.d1746ap-5,
+    0x1.d1746ap-2,
+    (int)-3
+  },
+  { // Entry 357
+    0x1.d1746ap-4,
+    0x1.d1746ap-2,
+    (int)-2
+  },
+  { // Entry 358
+    0x1.d1746ap-3,
+    0x1.d1746ap-2,
+    (int)-1
+  },
+  { // Entry 359
+    0x1.d1746ap-2,
+    0x1.d1746ap-2,
+    (int)0
+  },
+  { // Entry 360
+    0x1.d1746ap-1,
+    0x1.d1746ap-2,
+    (int)1
+  },
+  { // Entry 361
+    0x1.d1746ap0,
+    0x1.d1746ap-2,
+    (int)2
+  },
+  { // Entry 362
+    0x1.d1746ap1,
+    0x1.d1746ap-2,
+    (int)3
+  },
+  { // Entry 363
+    0x1.d1746ap2,
+    0x1.d1746ap-2,
+    (int)4
+  },
+  { // Entry 364
+    0x1.d1746ap3,
+    0x1.d1746ap-2,
+    (int)5
+  },
+  { // Entry 365
+    0x1.d1746ap4,
+    0x1.d1746ap-2,
+    (int)6
+  },
+  { // Entry 366
+    0x1.d1746ap5,
+    0x1.d1746ap-2,
+    (int)7
+  },
+  { // Entry 367
+    0x1.d1746ap6,
+    0x1.d1746ap-2,
+    (int)8
+  },
+  { // Entry 368
+    0x1.d1746ap7,
+    0x1.d1746ap-2,
+    (int)9
+  },
+  { // Entry 369
+    0x1.d1746ap8,
+    0x1.d1746ap-2,
+    (int)10
+  },
+  { // Entry 370
+    0x1.1745d8p-11,
+    0x1.1745d8p-1,
+    (int)-10
+  },
+  { // Entry 371
+    0x1.1745d8p-10,
+    0x1.1745d8p-1,
+    (int)-9
+  },
+  { // Entry 372
+    0x1.1745d8p-9,
+    0x1.1745d8p-1,
+    (int)-8
+  },
+  { // Entry 373
+    0x1.1745d8p-8,
+    0x1.1745d8p-1,
+    (int)-7
+  },
+  { // Entry 374
+    0x1.1745d8p-7,
+    0x1.1745d8p-1,
+    (int)-6
+  },
+  { // Entry 375
+    0x1.1745d8p-6,
+    0x1.1745d8p-1,
+    (int)-5
+  },
+  { // Entry 376
+    0x1.1745d8p-5,
+    0x1.1745d8p-1,
+    (int)-4
+  },
+  { // Entry 377
+    0x1.1745d8p-4,
+    0x1.1745d8p-1,
+    (int)-3
+  },
+  { // Entry 378
+    0x1.1745d8p-3,
+    0x1.1745d8p-1,
+    (int)-2
+  },
+  { // Entry 379
+    0x1.1745d8p-2,
+    0x1.1745d8p-1,
+    (int)-1
+  },
+  { // Entry 380
+    0x1.1745d8p-1,
+    0x1.1745d8p-1,
+    (int)0
+  },
+  { // Entry 381
+    0x1.1745d8p0,
+    0x1.1745d8p-1,
+    (int)1
+  },
+  { // Entry 382
+    0x1.1745d8p1,
+    0x1.1745d8p-1,
+    (int)2
+  },
+  { // Entry 383
+    0x1.1745d8p2,
+    0x1.1745d8p-1,
+    (int)3
+  },
+  { // Entry 384
+    0x1.1745d8p3,
+    0x1.1745d8p-1,
+    (int)4
+  },
+  { // Entry 385
+    0x1.1745d8p4,
+    0x1.1745d8p-1,
+    (int)5
+  },
+  { // Entry 386
+    0x1.1745d8p5,
+    0x1.1745d8p-1,
+    (int)6
+  },
+  { // Entry 387
+    0x1.1745d8p6,
+    0x1.1745d8p-1,
+    (int)7
+  },
+  { // Entry 388
+    0x1.1745d8p7,
+    0x1.1745d8p-1,
+    (int)8
+  },
+  { // Entry 389
+    0x1.1745d8p8,
+    0x1.1745d8p-1,
+    (int)9
+  },
+  { // Entry 390
+    0x1.1745d8p9,
+    0x1.1745d8p-1,
+    (int)10
+  },
+  { // Entry 391
+    0x1.45d17cp-11,
+    0x1.45d17cp-1,
+    (int)-10
+  },
+  { // Entry 392
+    0x1.45d17cp-10,
+    0x1.45d17cp-1,
+    (int)-9
+  },
+  { // Entry 393
+    0x1.45d17cp-9,
+    0x1.45d17cp-1,
+    (int)-8
+  },
+  { // Entry 394
+    0x1.45d17cp-8,
+    0x1.45d17cp-1,
+    (int)-7
+  },
+  { // Entry 395
+    0x1.45d17cp-7,
+    0x1.45d17cp-1,
+    (int)-6
+  },
+  { // Entry 396
+    0x1.45d17cp-6,
+    0x1.45d17cp-1,
+    (int)-5
+  },
+  { // Entry 397
+    0x1.45d17cp-5,
+    0x1.45d17cp-1,
+    (int)-4
+  },
+  { // Entry 398
+    0x1.45d17cp-4,
+    0x1.45d17cp-1,
+    (int)-3
+  },
+  { // Entry 399
+    0x1.45d17cp-3,
+    0x1.45d17cp-1,
+    (int)-2
+  },
+  { // Entry 400
+    0x1.45d17cp-2,
+    0x1.45d17cp-1,
+    (int)-1
+  },
+  { // Entry 401
+    0x1.45d17cp-1,
+    0x1.45d17cp-1,
+    (int)0
+  },
+  { // Entry 402
+    0x1.45d17cp0,
+    0x1.45d17cp-1,
+    (int)1
+  },
+  { // Entry 403
+    0x1.45d17cp1,
+    0x1.45d17cp-1,
+    (int)2
+  },
+  { // Entry 404
+    0x1.45d17cp2,
+    0x1.45d17cp-1,
+    (int)3
+  },
+  { // Entry 405
+    0x1.45d17cp3,
+    0x1.45d17cp-1,
+    (int)4
+  },
+  { // Entry 406
+    0x1.45d17cp4,
+    0x1.45d17cp-1,
+    (int)5
+  },
+  { // Entry 407
+    0x1.45d17cp5,
+    0x1.45d17cp-1,
+    (int)6
+  },
+  { // Entry 408
+    0x1.45d17cp6,
+    0x1.45d17cp-1,
+    (int)7
+  },
+  { // Entry 409
+    0x1.45d17cp7,
+    0x1.45d17cp-1,
+    (int)8
+  },
+  { // Entry 410
+    0x1.45d17cp8,
+    0x1.45d17cp-1,
+    (int)9
+  },
+  { // Entry 411
+    0x1.45d17cp9,
+    0x1.45d17cp-1,
+    (int)10
+  },
+  { // Entry 412
+    0x1.745d20p-11,
+    0x1.745d20p-1,
+    (int)-10
+  },
+  { // Entry 413
+    0x1.745d20p-10,
+    0x1.745d20p-1,
+    (int)-9
+  },
+  { // Entry 414
+    0x1.745d20p-9,
+    0x1.745d20p-1,
+    (int)-8
+  },
+  { // Entry 415
+    0x1.745d20p-8,
+    0x1.745d20p-1,
+    (int)-7
+  },
+  { // Entry 416
+    0x1.745d20p-7,
+    0x1.745d20p-1,
+    (int)-6
+  },
+  { // Entry 417
+    0x1.745d20p-6,
+    0x1.745d20p-1,
+    (int)-5
+  },
+  { // Entry 418
+    0x1.745d20p-5,
+    0x1.745d20p-1,
+    (int)-4
+  },
+  { // Entry 419
+    0x1.745d20p-4,
+    0x1.745d20p-1,
+    (int)-3
+  },
+  { // Entry 420
+    0x1.745d20p-3,
+    0x1.745d20p-1,
+    (int)-2
+  },
+  { // Entry 421
+    0x1.745d20p-2,
+    0x1.745d20p-1,
+    (int)-1
+  },
+  { // Entry 422
+    0x1.745d20p-1,
+    0x1.745d20p-1,
+    (int)0
+  },
+  { // Entry 423
+    0x1.745d20p0,
+    0x1.745d20p-1,
+    (int)1
+  },
+  { // Entry 424
+    0x1.745d20p1,
+    0x1.745d20p-1,
+    (int)2
+  },
+  { // Entry 425
+    0x1.745d20p2,
+    0x1.745d20p-1,
+    (int)3
+  },
+  { // Entry 426
+    0x1.745d20p3,
+    0x1.745d20p-1,
+    (int)4
+  },
+  { // Entry 427
+    0x1.745d20p4,
+    0x1.745d20p-1,
+    (int)5
+  },
+  { // Entry 428
+    0x1.745d20p5,
+    0x1.745d20p-1,
+    (int)6
+  },
+  { // Entry 429
+    0x1.745d20p6,
+    0x1.745d20p-1,
+    (int)7
+  },
+  { // Entry 430
+    0x1.745d20p7,
+    0x1.745d20p-1,
+    (int)8
+  },
+  { // Entry 431
+    0x1.745d20p8,
+    0x1.745d20p-1,
+    (int)9
+  },
+  { // Entry 432
+    0x1.745d20p9,
+    0x1.745d20p-1,
+    (int)10
+  },
+  { // Entry 433
+    0x1.a2e8c4p-11,
+    0x1.a2e8c4p-1,
+    (int)-10
+  },
+  { // Entry 434
+    0x1.a2e8c4p-10,
+    0x1.a2e8c4p-1,
+    (int)-9
+  },
+  { // Entry 435
+    0x1.a2e8c4p-9,
+    0x1.a2e8c4p-1,
+    (int)-8
+  },
+  { // Entry 436
+    0x1.a2e8c4p-8,
+    0x1.a2e8c4p-1,
+    (int)-7
+  },
+  { // Entry 437
+    0x1.a2e8c4p-7,
+    0x1.a2e8c4p-1,
+    (int)-6
+  },
+  { // Entry 438
+    0x1.a2e8c4p-6,
+    0x1.a2e8c4p-1,
+    (int)-5
+  },
+  { // Entry 439
+    0x1.a2e8c4p-5,
+    0x1.a2e8c4p-1,
+    (int)-4
+  },
+  { // Entry 440
+    0x1.a2e8c4p-4,
+    0x1.a2e8c4p-1,
+    (int)-3
+  },
+  { // Entry 441
+    0x1.a2e8c4p-3,
+    0x1.a2e8c4p-1,
+    (int)-2
+  },
+  { // Entry 442
+    0x1.a2e8c4p-2,
+    0x1.a2e8c4p-1,
+    (int)-1
+  },
+  { // Entry 443
+    0x1.a2e8c4p-1,
+    0x1.a2e8c4p-1,
+    (int)0
+  },
+  { // Entry 444
+    0x1.a2e8c4p0,
+    0x1.a2e8c4p-1,
+    (int)1
+  },
+  { // Entry 445
+    0x1.a2e8c4p1,
+    0x1.a2e8c4p-1,
+    (int)2
+  },
+  { // Entry 446
+    0x1.a2e8c4p2,
+    0x1.a2e8c4p-1,
+    (int)3
+  },
+  { // Entry 447
+    0x1.a2e8c4p3,
+    0x1.a2e8c4p-1,
+    (int)4
+  },
+  { // Entry 448
+    0x1.a2e8c4p4,
+    0x1.a2e8c4p-1,
+    (int)5
+  },
+  { // Entry 449
+    0x1.a2e8c4p5,
+    0x1.a2e8c4p-1,
+    (int)6
+  },
+  { // Entry 450
+    0x1.a2e8c4p6,
+    0x1.a2e8c4p-1,
+    (int)7
+  },
+  { // Entry 451
+    0x1.a2e8c4p7,
+    0x1.a2e8c4p-1,
+    (int)8
+  },
+  { // Entry 452
+    0x1.a2e8c4p8,
+    0x1.a2e8c4p-1,
+    (int)9
+  },
+  { // Entry 453
+    0x1.a2e8c4p9,
+    0x1.a2e8c4p-1,
+    (int)10
+  },
+  { // Entry 454
+    0x1.d17468p-11,
+    0x1.d17468p-1,
+    (int)-10
+  },
+  { // Entry 455
+    0x1.d17468p-10,
+    0x1.d17468p-1,
+    (int)-9
+  },
+  { // Entry 456
+    0x1.d17468p-9,
+    0x1.d17468p-1,
+    (int)-8
+  },
+  { // Entry 457
+    0x1.d17468p-8,
+    0x1.d17468p-1,
+    (int)-7
+  },
+  { // Entry 458
+    0x1.d17468p-7,
+    0x1.d17468p-1,
+    (int)-6
+  },
+  { // Entry 459
+    0x1.d17468p-6,
+    0x1.d17468p-1,
+    (int)-5
+  },
+  { // Entry 460
+    0x1.d17468p-5,
+    0x1.d17468p-1,
+    (int)-4
+  },
+  { // Entry 461
+    0x1.d17468p-4,
+    0x1.d17468p-1,
+    (int)-3
+  },
+  { // Entry 462
+    0x1.d17468p-3,
+    0x1.d17468p-1,
+    (int)-2
+  },
+  { // Entry 463
+    0x1.d17468p-2,
+    0x1.d17468p-1,
+    (int)-1
+  },
+  { // Entry 464
+    0x1.d17468p-1,
+    0x1.d17468p-1,
+    (int)0
+  },
+  { // Entry 465
+    0x1.d17468p0,
+    0x1.d17468p-1,
+    (int)1
+  },
+  { // Entry 466
+    0x1.d17468p1,
+    0x1.d17468p-1,
+    (int)2
+  },
+  { // Entry 467
+    0x1.d17468p2,
+    0x1.d17468p-1,
+    (int)3
+  },
+  { // Entry 468
+    0x1.d17468p3,
+    0x1.d17468p-1,
+    (int)4
+  },
+  { // Entry 469
+    0x1.d17468p4,
+    0x1.d17468p-1,
+    (int)5
+  },
+  { // Entry 470
+    0x1.d17468p5,
+    0x1.d17468p-1,
+    (int)6
+  },
+  { // Entry 471
+    0x1.d17468p6,
+    0x1.d17468p-1,
+    (int)7
+  },
+  { // Entry 472
+    0x1.d17468p7,
+    0x1.d17468p-1,
+    (int)8
+  },
+  { // Entry 473
+    0x1.d17468p8,
+    0x1.d17468p-1,
+    (int)9
+  },
+  { // Entry 474
+    0x1.d17468p9,
+    0x1.d17468p-1,
+    (int)10
+  },
+  { // Entry 475
+    0x1.p-10,
+    0x1.p0,
+    (int)-10
+  },
+  { // Entry 476
+    0x1.p-9,
+    0x1.p0,
+    (int)-9
+  },
+  { // Entry 477
+    0x1.p-8,
+    0x1.p0,
+    (int)-8
+  },
+  { // Entry 478
+    0x1.p-7,
+    0x1.p0,
+    (int)-7
+  },
+  { // Entry 479
+    0x1.p-6,
+    0x1.p0,
+    (int)-6
+  },
+  { // Entry 480
+    0x1.p-5,
+    0x1.p0,
+    (int)-5
+  },
+  { // Entry 481
+    0x1.p-4,
+    0x1.p0,
+    (int)-4
+  },
+  { // Entry 482
+    0x1.p-3,
+    0x1.p0,
+    (int)-3
+  },
+  { // Entry 483
+    0x1.p-2,
+    0x1.p0,
+    (int)-2
+  },
+  { // Entry 484
+    0x1.p-1,
+    0x1.p0,
+    (int)-1
+  },
+  { // Entry 485
+    0x1.p0,
+    0x1.p0,
+    (int)0
+  },
+  { // Entry 486
+    0x1.p1,
+    0x1.p0,
+    (int)1
+  },
+  { // Entry 487
+    0x1.p2,
+    0x1.p0,
+    (int)2
+  },
+  { // Entry 488
+    0x1.p3,
+    0x1.p0,
+    (int)3
+  },
+  { // Entry 489
+    0x1.p4,
+    0x1.p0,
+    (int)4
+  },
+  { // Entry 490
+    0x1.p5,
+    0x1.p0,
+    (int)5
+  },
+  { // Entry 491
+    0x1.p6,
+    0x1.p0,
+    (int)6
+  },
+  { // Entry 492
+    0x1.p7,
+    0x1.p0,
+    (int)7
+  },
+  { // Entry 493
+    0x1.p8,
+    0x1.p0,
+    (int)8
+  },
+  { // Entry 494
+    0x1.p9,
+    0x1.p0,
+    (int)9
+  },
+  { // Entry 495
+    0x1.p10,
+    0x1.p0,
+    (int)10
+  },
+  { // Entry 496
+    0x1.fffffep0,
+    0x1.fffffep127,
+    (int)-127
+  },
+  { // Entry 497
+    0x1.fffffep1,
+    0x1.fffffep127,
+    (int)-126
+  },
+  { // Entry 498
+    0x1.fffffep117,
+    0x1.fffffep127,
+    (int)-10
+  },
+  { // Entry 499
+    0x1.fffffep118,
+    0x1.fffffep127,
+    (int)-9
+  },
+  { // Entry 500
+    0x1.fffffep119,
+    0x1.fffffep127,
+    (int)-8
+  },
+  { // Entry 501
+    0x1.fffffep120,
+    0x1.fffffep127,
+    (int)-7
+  },
+  { // Entry 502
+    0x1.fffffep121,
+    0x1.fffffep127,
+    (int)-6
+  },
+  { // Entry 503
+    0x1.fffffep122,
+    0x1.fffffep127,
+    (int)-5
+  },
+  { // Entry 504
+    0x1.fffffep123,
+    0x1.fffffep127,
+    (int)-4
+  },
+  { // Entry 505
+    0x1.fffffep124,
+    0x1.fffffep127,
+    (int)-3
+  },
+  { // Entry 506
+    0x1.fffffep125,
+    0x1.fffffep127,
+    (int)-2
+  },
+  { // Entry 507
+    0x1.fffffep126,
+    0x1.fffffep127,
+    (int)-1
+  },
+  { // Entry 508
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 509
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 510
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 511
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 512
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 513
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 514
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 515
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 516
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 517
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 518
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 519
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 520
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 521
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 522
+    0x1.p-129,
+    0x1.p-2,
+    (int)-127
+  },
+  { // Entry 523
+    0x1.p-128,
+    0x1.p-2,
+    (int)-126
+  },
+  { // Entry 524
+    0x1.p-128,
+    0x1.p-1,
+    (int)-127
+  },
+  { // Entry 525
+    0x1.p-127,
+    0x1.p-1,
+    (int)-126
+  },
+  { // Entry 526
+    0x1.80p-128,
+    0x1.80p-1,
+    (int)-127
+  },
+  { // Entry 527
+    0x1.80p-127,
+    0x1.80p-1,
+    (int)-126
+  },
+  { // Entry 528
+    0.0f,
+    0x1.p-2,
+    (int)-149
+  },
+  { // Entry 529
+    0.0f,
+    0x1.p-2,
+    (int)-148
+  },
+  { // Entry 530
+    0.0f,
+    0x1.p-1,
+    (int)-149
+  },
+  { // Entry 531
+    0x1.p-149,
+    0x1.p-1,
+    (int)-148
+  },
+  { // Entry 532
+    0.0f,
+    0x1.80p-1,
+    (int)-149
+  },
+  { // Entry 533
+    0x1.80p-149,
+    0x1.80p-1,
+    (int)-148
+  },
+  { // Entry 534
+    0x1.p127,
+    0x1.p0,
+    (int)127
+  },
+  { // Entry 535
+    0x1.p126,
+    0x1.p0,
+    (int)126
+  },
+  { // Entry 536
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 537
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 538
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 539
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 540
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 541
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 542
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 543
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 544
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 545
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 546
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 547
+    0x1.p-138,
+    0x1.p-149,
+    (int)11
+  },
+  { // Entry 548
+    0x1.p-137,
+    0x1.p-149,
+    (int)12
+  },
+  { // Entry 549
+    0x1.p-136,
+    0x1.p-149,
+    (int)13
+  },
+  { // Entry 550
+    0x1.p-135,
+    0x1.p-149,
+    (int)14
+  },
+  { // Entry 551
+    0x1.p-134,
+    0x1.p-149,
+    (int)15
+  },
+  { // Entry 552
+    0x1.p-133,
+    0x1.p-149,
+    (int)16
+  },
+  { // Entry 553
+    0x1.p-132,
+    0x1.p-149,
+    (int)17
+  },
+  { // Entry 554
+    0x1.p-131,
+    0x1.p-149,
+    (int)18
+  },
+  { // Entry 555
+    0x1.p-130,
+    0x1.p-149,
+    (int)19
+  },
+  { // Entry 556
+    0x1.p-129,
+    0x1.p-149,
+    (int)20
+  },
+  { // Entry 557
+    0x1.p-128,
+    0x1.p-149,
+    (int)21
+  },
+  { // Entry 558
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 559
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 560
+    0x1.p-125,
+    0x1.p-149,
+    (int)24
+  },
+  { // Entry 561
+    0x1.p-124,
+    0x1.p-149,
+    (int)25
+  },
+  { // Entry 562
+    0x1.p-123,
+    0x1.p-149,
+    (int)26
+  },
+  { // Entry 563
+    0x1.p-122,
+    0x1.p-149,
+    (int)27
+  },
+  { // Entry 564
+    0x1.p-121,
+    0x1.p-149,
+    (int)28
+  },
+  { // Entry 565
+    0x1.p-120,
+    0x1.p-149,
+    (int)29
+  },
+  { // Entry 566
+    0x1.p-119,
+    0x1.p-149,
+    (int)30
+  },
+  { // Entry 567
+    0x1.p-118,
+    0x1.p-149,
+    (int)31
+  },
+  { // Entry 568
+    0x1.p-117,
+    0x1.p-149,
+    (int)32
+  },
+  { // Entry 569
+    0x1.p-116,
+    0x1.p-149,
+    (int)33
+  },
+  { // Entry 570
+    0x1.p-115,
+    0x1.p-149,
+    (int)34
+  },
+  { // Entry 571
+    0x1.p-114,
+    0x1.p-149,
+    (int)35
+  },
+  { // Entry 572
+    0x1.p-113,
+    0x1.p-149,
+    (int)36
+  },
+  { // Entry 573
+    0x1.p-112,
+    0x1.p-149,
+    (int)37
+  },
+  { // Entry 574
+    0x1.p-111,
+    0x1.p-149,
+    (int)38
+  },
+  { // Entry 575
+    0x1.p-110,
+    0x1.p-149,
+    (int)39
+  },
+  { // Entry 576
+    0x1.p-109,
+    0x1.p-149,
+    (int)40
+  },
+  { // Entry 577
+    0x1.p-108,
+    0x1.p-149,
+    (int)41
+  },
+  { // Entry 578
+    0x1.p-107,
+    0x1.p-149,
+    (int)42
+  },
+  { // Entry 579
+    0x1.p-106,
+    0x1.p-149,
+    (int)43
+  },
+  { // Entry 580
+    0x1.p-105,
+    0x1.p-149,
+    (int)44
+  },
+  { // Entry 581
+    0x1.p-104,
+    0x1.p-149,
+    (int)45
+  },
+  { // Entry 582
+    0x1.p-103,
+    0x1.p-149,
+    (int)46
+  },
+  { // Entry 583
+    0x1.p-102,
+    0x1.p-149,
+    (int)47
+  },
+  { // Entry 584
+    0x1.p-101,
+    0x1.p-149,
+    (int)48
+  },
+  { // Entry 585
+    0x1.p-100,
+    0x1.p-149,
+    (int)49
+  },
+  { // Entry 586
+    0x1.p-99,
+    0x1.p-149,
+    (int)50
+  },
+  { // Entry 587
+    0x1.p-98,
+    0x1.p-149,
+    (int)51
+  },
+  { // Entry 588
+    0x1.p-97,
+    0x1.p-149,
+    (int)52
+  },
+  { // Entry 589
+    0x1.p-96,
+    0x1.p-149,
+    (int)53
+  },
+  { // Entry 590
+    0x1.p-95,
+    0x1.p-149,
+    (int)54
+  },
+  { // Entry 591
+    0x1.p-94,
+    0x1.p-149,
+    (int)55
+  },
+  { // Entry 592
+    0x1.p-93,
+    0x1.p-149,
+    (int)56
+  },
+  { // Entry 593
+    0x1.p-92,
+    0x1.p-149,
+    (int)57
+  },
+  { // Entry 594
+    0x1.p-91,
+    0x1.p-149,
+    (int)58
+  },
+  { // Entry 595
+    0x1.p-90,
+    0x1.p-149,
+    (int)59
+  },
+  { // Entry 596
+    0x1.p-89,
+    0x1.p-149,
+    (int)60
+  },
+  { // Entry 597
+    0x1.p-88,
+    0x1.p-149,
+    (int)61
+  },
+  { // Entry 598
+    0x1.p-87,
+    0x1.p-149,
+    (int)62
+  },
+  { // Entry 599
+    0x1.p-86,
+    0x1.p-149,
+    (int)63
+  },
+  { // Entry 600
+    0x1.p-85,
+    0x1.p-149,
+    (int)64
+  },
+  { // Entry 601
+    0x1.p-84,
+    0x1.p-149,
+    (int)65
+  },
+  { // Entry 602
+    0x1.p-83,
+    0x1.p-149,
+    (int)66
+  },
+  { // Entry 603
+    0x1.p-82,
+    0x1.p-149,
+    (int)67
+  },
+  { // Entry 604
+    0x1.p-81,
+    0x1.p-149,
+    (int)68
+  },
+  { // Entry 605
+    0x1.p-80,
+    0x1.p-149,
+    (int)69
+  },
+  { // Entry 606
+    0x1.p-79,
+    0x1.p-149,
+    (int)70
+  },
+  { // Entry 607
+    0x1.p-78,
+    0x1.p-149,
+    (int)71
+  },
+  { // Entry 608
+    0x1.p-77,
+    0x1.p-149,
+    (int)72
+  },
+  { // Entry 609
+    0x1.p-76,
+    0x1.p-149,
+    (int)73
+  },
+  { // Entry 610
+    0x1.p-75,
+    0x1.p-149,
+    (int)74
+  },
+  { // Entry 611
+    0x1.p-74,
+    0x1.p-149,
+    (int)75
+  },
+  { // Entry 612
+    0x1.p-73,
+    0x1.p-149,
+    (int)76
+  },
+  { // Entry 613
+    0x1.p-72,
+    0x1.p-149,
+    (int)77
+  },
+  { // Entry 614
+    0x1.p-71,
+    0x1.p-149,
+    (int)78
+  },
+  { // Entry 615
+    0x1.p-70,
+    0x1.p-149,
+    (int)79
+  },
+  { // Entry 616
+    0x1.p-69,
+    0x1.p-149,
+    (int)80
+  },
+  { // Entry 617
+    0x1.p-68,
+    0x1.p-149,
+    (int)81
+  },
+  { // Entry 618
+    0x1.p-67,
+    0x1.p-149,
+    (int)82
+  },
+  { // Entry 619
+    0x1.p-66,
+    0x1.p-149,
+    (int)83
+  },
+  { // Entry 620
+    0x1.p-65,
+    0x1.p-149,
+    (int)84
+  },
+  { // Entry 621
+    0x1.p-64,
+    0x1.p-149,
+    (int)85
+  },
+  { // Entry 622
+    0x1.p-63,
+    0x1.p-149,
+    (int)86
+  },
+  { // Entry 623
+    0x1.p-62,
+    0x1.p-149,
+    (int)87
+  },
+  { // Entry 624
+    0x1.p-61,
+    0x1.p-149,
+    (int)88
+  },
+  { // Entry 625
+    0x1.p-60,
+    0x1.p-149,
+    (int)89
+  },
+  { // Entry 626
+    0x1.p-59,
+    0x1.p-149,
+    (int)90
+  },
+  { // Entry 627
+    0x1.p-58,
+    0x1.p-149,
+    (int)91
+  },
+  { // Entry 628
+    0x1.p-57,
+    0x1.p-149,
+    (int)92
+  },
+  { // Entry 629
+    0x1.p-56,
+    0x1.p-149,
+    (int)93
+  },
+  { // Entry 630
+    0x1.p-55,
+    0x1.p-149,
+    (int)94
+  },
+  { // Entry 631
+    0x1.p-54,
+    0x1.p-149,
+    (int)95
+  },
+  { // Entry 632
+    0x1.p-53,
+    0x1.p-149,
+    (int)96
+  },
+  { // Entry 633
+    0x1.p-52,
+    0x1.p-149,
+    (int)97
+  },
+  { // Entry 634
+    0x1.p-51,
+    0x1.p-149,
+    (int)98
+  },
+  { // Entry 635
+    0x1.p-50,
+    0x1.p-149,
+    (int)99
+  },
+  { // Entry 636
+    0x1.p-49,
+    0x1.p-149,
+    (int)100
+  },
+  { // Entry 637
+    0x1.p-48,
+    0x1.p-149,
+    (int)101
+  },
+  { // Entry 638
+    0x1.p-47,
+    0x1.p-149,
+    (int)102
+  },
+  { // Entry 639
+    0x1.p-46,
+    0x1.p-149,
+    (int)103
+  },
+  { // Entry 640
+    0x1.p-45,
+    0x1.p-149,
+    (int)104
+  },
+  { // Entry 641
+    0x1.p-44,
+    0x1.p-149,
+    (int)105
+  },
+  { // Entry 642
+    0x1.p-43,
+    0x1.p-149,
+    (int)106
+  },
+  { // Entry 643
+    0x1.p-42,
+    0x1.p-149,
+    (int)107
+  },
+  { // Entry 644
+    0x1.p-41,
+    0x1.p-149,
+    (int)108
+  },
+  { // Entry 645
+    0x1.p-40,
+    0x1.p-149,
+    (int)109
+  },
+  { // Entry 646
+    0x1.p-39,
+    0x1.p-149,
+    (int)110
+  },
+  { // Entry 647
+    0x1.p-38,
+    0x1.p-149,
+    (int)111
+  },
+  { // Entry 648
+    0x1.p-37,
+    0x1.p-149,
+    (int)112
+  },
+  { // Entry 649
+    0x1.p-36,
+    0x1.p-149,
+    (int)113
+  },
+  { // Entry 650
+    0x1.p-35,
+    0x1.p-149,
+    (int)114
+  },
+  { // Entry 651
+    0x1.p-34,
+    0x1.p-149,
+    (int)115
+  },
+  { // Entry 652
+    0x1.p-33,
+    0x1.p-149,
+    (int)116
+  },
+  { // Entry 653
+    0x1.p-32,
+    0x1.p-149,
+    (int)117
+  },
+  { // Entry 654
+    0x1.p-31,
+    0x1.p-149,
+    (int)118
+  },
+  { // Entry 655
+    0x1.p-30,
+    0x1.p-149,
+    (int)119
+  },
+  { // Entry 656
+    0x1.p-29,
+    0x1.p-149,
+    (int)120
+  },
+  { // Entry 657
+    0x1.p-28,
+    0x1.p-149,
+    (int)121
+  },
+  { // Entry 658
+    0x1.p-27,
+    0x1.p-149,
+    (int)122
+  },
+  { // Entry 659
+    0x1.p-26,
+    0x1.p-149,
+    (int)123
+  },
+  { // Entry 660
+    0x1.p-25,
+    0x1.p-149,
+    (int)124
+  },
+  { // Entry 661
+    0x1.p-24,
+    0x1.p-149,
+    (int)125
+  },
+  { // Entry 662
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 663
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 664
+    0x1.p-21,
+    0x1.p-149,
+    (int)128
+  },
+  { // Entry 665
+    0x1.p-20,
+    0x1.p-149,
+    (int)129
+  },
+  { // Entry 666
+    0x1.p-19,
+    0x1.p-149,
+    (int)130
+  },
+  { // Entry 667
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 668
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 669
+    0x1.fffffcp-125,
+    0x1.fffffcp-127,
+    (int)2
+  },
+  { // Entry 670
+    0x1.fffffcp-124,
+    0x1.fffffcp-127,
+    (int)3
+  },
+  { // Entry 671
+    0x1.fffffcp-123,
+    0x1.fffffcp-127,
+    (int)4
+  },
+  { // Entry 672
+    0x1.fffffcp-122,
+    0x1.fffffcp-127,
+    (int)5
+  },
+  { // Entry 673
+    0x1.fffffcp-121,
+    0x1.fffffcp-127,
+    (int)6
+  },
+  { // Entry 674
+    0x1.fffffcp-120,
+    0x1.fffffcp-127,
+    (int)7
+  },
+  { // Entry 675
+    0x1.fffffcp-119,
+    0x1.fffffcp-127,
+    (int)8
+  },
+  { // Entry 676
+    0x1.fffffcp-118,
+    0x1.fffffcp-127,
+    (int)9
+  },
+  { // Entry 677
+    0x1.fffffcp-117,
+    0x1.fffffcp-127,
+    (int)10
+  },
+  { // Entry 678
+    0x1.fffffcp-116,
+    0x1.fffffcp-127,
+    (int)11
+  },
+  { // Entry 679
+    0x1.fffffcp-115,
+    0x1.fffffcp-127,
+    (int)12
+  },
+  { // Entry 680
+    0x1.fffffcp-114,
+    0x1.fffffcp-127,
+    (int)13
+  },
+  { // Entry 681
+    0x1.fffffcp-113,
+    0x1.fffffcp-127,
+    (int)14
+  },
+  { // Entry 682
+    0x1.fffffcp-112,
+    0x1.fffffcp-127,
+    (int)15
+  },
+  { // Entry 683
+    0x1.fffffcp-111,
+    0x1.fffffcp-127,
+    (int)16
+  },
+  { // Entry 684
+    0x1.fffffcp-110,
+    0x1.fffffcp-127,
+    (int)17
+  },
+  { // Entry 685
+    0x1.fffffcp-109,
+    0x1.fffffcp-127,
+    (int)18
+  },
+  { // Entry 686
+    0x1.fffffcp-108,
+    0x1.fffffcp-127,
+    (int)19
+  },
+  { // Entry 687
+    0x1.fffffcp-107,
+    0x1.fffffcp-127,
+    (int)20
+  },
+  { // Entry 688
+    0x1.fffffcp-106,
+    0x1.fffffcp-127,
+    (int)21
+  },
+  { // Entry 689
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 690
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 691
+    0x1.fffffcp-103,
+    0x1.fffffcp-127,
+    (int)24
+  },
+  { // Entry 692
+    0x1.fffffcp-102,
+    0x1.fffffcp-127,
+    (int)25
+  },
+  { // Entry 693
+    0x1.fffffcp-101,
+    0x1.fffffcp-127,
+    (int)26
+  },
+  { // Entry 694
+    0x1.fffffcp-100,
+    0x1.fffffcp-127,
+    (int)27
+  },
+  { // Entry 695
+    0x1.fffffcp-99,
+    0x1.fffffcp-127,
+    (int)28
+  },
+  { // Entry 696
+    0x1.fffffcp-98,
+    0x1.fffffcp-127,
+    (int)29
+  },
+  { // Entry 697
+    0x1.fffffcp-97,
+    0x1.fffffcp-127,
+    (int)30
+  },
+  { // Entry 698
+    0x1.fffffcp-96,
+    0x1.fffffcp-127,
+    (int)31
+  },
+  { // Entry 699
+    0x1.fffffcp-95,
+    0x1.fffffcp-127,
+    (int)32
+  },
+  { // Entry 700
+    0x1.fffffcp-94,
+    0x1.fffffcp-127,
+    (int)33
+  },
+  { // Entry 701
+    0x1.fffffcp-93,
+    0x1.fffffcp-127,
+    (int)34
+  },
+  { // Entry 702
+    0x1.fffffcp-92,
+    0x1.fffffcp-127,
+    (int)35
+  },
+  { // Entry 703
+    0x1.fffffcp-91,
+    0x1.fffffcp-127,
+    (int)36
+  },
+  { // Entry 704
+    0x1.fffffcp-90,
+    0x1.fffffcp-127,
+    (int)37
+  },
+  { // Entry 705
+    0x1.fffffcp-89,
+    0x1.fffffcp-127,
+    (int)38
+  },
+  { // Entry 706
+    0x1.fffffcp-88,
+    0x1.fffffcp-127,
+    (int)39
+  },
+  { // Entry 707
+    0x1.fffffcp-87,
+    0x1.fffffcp-127,
+    (int)40
+  },
+  { // Entry 708
+    0x1.fffffcp-86,
+    0x1.fffffcp-127,
+    (int)41
+  },
+  { // Entry 709
+    0x1.fffffcp-85,
+    0x1.fffffcp-127,
+    (int)42
+  },
+  { // Entry 710
+    0x1.fffffcp-84,
+    0x1.fffffcp-127,
+    (int)43
+  },
+  { // Entry 711
+    0x1.fffffcp-83,
+    0x1.fffffcp-127,
+    (int)44
+  },
+  { // Entry 712
+    0x1.fffffcp-82,
+    0x1.fffffcp-127,
+    (int)45
+  },
+  { // Entry 713
+    0x1.fffffcp-81,
+    0x1.fffffcp-127,
+    (int)46
+  },
+  { // Entry 714
+    0x1.fffffcp-80,
+    0x1.fffffcp-127,
+    (int)47
+  },
+  { // Entry 715
+    0x1.fffffcp-79,
+    0x1.fffffcp-127,
+    (int)48
+  },
+  { // Entry 716
+    0x1.fffffcp-78,
+    0x1.fffffcp-127,
+    (int)49
+  },
+  { // Entry 717
+    0x1.fffffcp-77,
+    0x1.fffffcp-127,
+    (int)50
+  },
+  { // Entry 718
+    0x1.fffffcp-76,
+    0x1.fffffcp-127,
+    (int)51
+  },
+  { // Entry 719
+    0x1.fffffcp-75,
+    0x1.fffffcp-127,
+    (int)52
+  },
+  { // Entry 720
+    0x1.fffffcp-74,
+    0x1.fffffcp-127,
+    (int)53
+  },
+  { // Entry 721
+    0x1.fffffcp-73,
+    0x1.fffffcp-127,
+    (int)54
+  },
+  { // Entry 722
+    0x1.fffffcp-72,
+    0x1.fffffcp-127,
+    (int)55
+  },
+  { // Entry 723
+    0x1.fffffcp-71,
+    0x1.fffffcp-127,
+    (int)56
+  },
+  { // Entry 724
+    0x1.fffffcp-70,
+    0x1.fffffcp-127,
+    (int)57
+  },
+  { // Entry 725
+    0x1.fffffcp-69,
+    0x1.fffffcp-127,
+    (int)58
+  },
+  { // Entry 726
+    0x1.fffffcp-68,
+    0x1.fffffcp-127,
+    (int)59
+  },
+  { // Entry 727
+    0x1.fffffcp-67,
+    0x1.fffffcp-127,
+    (int)60
+  },
+  { // Entry 728
+    0x1.fffffcp-66,
+    0x1.fffffcp-127,
+    (int)61
+  },
+  { // Entry 729
+    0x1.fffffcp-65,
+    0x1.fffffcp-127,
+    (int)62
+  },
+  { // Entry 730
+    0x1.fffffcp-64,
+    0x1.fffffcp-127,
+    (int)63
+  },
+  { // Entry 731
+    0x1.fffffcp-63,
+    0x1.fffffcp-127,
+    (int)64
+  },
+  { // Entry 732
+    0x1.fffffcp-62,
+    0x1.fffffcp-127,
+    (int)65
+  },
+  { // Entry 733
+    0x1.fffffcp-61,
+    0x1.fffffcp-127,
+    (int)66
+  },
+  { // Entry 734
+    0x1.fffffcp-60,
+    0x1.fffffcp-127,
+    (int)67
+  },
+  { // Entry 735
+    0x1.fffffcp-59,
+    0x1.fffffcp-127,
+    (int)68
+  },
+  { // Entry 736
+    0x1.fffffcp-58,
+    0x1.fffffcp-127,
+    (int)69
+  },
+  { // Entry 737
+    0x1.fffffcp-57,
+    0x1.fffffcp-127,
+    (int)70
+  },
+  { // Entry 738
+    0x1.fffffcp-56,
+    0x1.fffffcp-127,
+    (int)71
+  },
+  { // Entry 739
+    0x1.fffffcp-55,
+    0x1.fffffcp-127,
+    (int)72
+  },
+  { // Entry 740
+    0x1.fffffcp-54,
+    0x1.fffffcp-127,
+    (int)73
+  },
+  { // Entry 741
+    0x1.fffffcp-53,
+    0x1.fffffcp-127,
+    (int)74
+  },
+  { // Entry 742
+    0x1.fffffcp-52,
+    0x1.fffffcp-127,
+    (int)75
+  },
+  { // Entry 743
+    0x1.fffffcp-51,
+    0x1.fffffcp-127,
+    (int)76
+  },
+  { // Entry 744
+    0x1.fffffcp-50,
+    0x1.fffffcp-127,
+    (int)77
+  },
+  { // Entry 745
+    0x1.fffffcp-49,
+    0x1.fffffcp-127,
+    (int)78
+  },
+  { // Entry 746
+    0x1.fffffcp-48,
+    0x1.fffffcp-127,
+    (int)79
+  },
+  { // Entry 747
+    0x1.fffffcp-47,
+    0x1.fffffcp-127,
+    (int)80
+  },
+  { // Entry 748
+    0x1.fffffcp-46,
+    0x1.fffffcp-127,
+    (int)81
+  },
+  { // Entry 749
+    0x1.fffffcp-45,
+    0x1.fffffcp-127,
+    (int)82
+  },
+  { // Entry 750
+    0x1.fffffcp-44,
+    0x1.fffffcp-127,
+    (int)83
+  },
+  { // Entry 751
+    0x1.fffffcp-43,
+    0x1.fffffcp-127,
+    (int)84
+  },
+  { // Entry 752
+    0x1.fffffcp-42,
+    0x1.fffffcp-127,
+    (int)85
+  },
+  { // Entry 753
+    0x1.fffffcp-41,
+    0x1.fffffcp-127,
+    (int)86
+  },
+  { // Entry 754
+    0x1.fffffcp-40,
+    0x1.fffffcp-127,
+    (int)87
+  },
+  { // Entry 755
+    0x1.fffffcp-39,
+    0x1.fffffcp-127,
+    (int)88
+  },
+  { // Entry 756
+    0x1.fffffcp-38,
+    0x1.fffffcp-127,
+    (int)89
+  },
+  { // Entry 757
+    0x1.fffffcp-37,
+    0x1.fffffcp-127,
+    (int)90
+  },
+  { // Entry 758
+    0x1.fffffcp-36,
+    0x1.fffffcp-127,
+    (int)91
+  },
+  { // Entry 759
+    0x1.fffffcp-35,
+    0x1.fffffcp-127,
+    (int)92
+  },
+  { // Entry 760
+    0x1.fffffcp-34,
+    0x1.fffffcp-127,
+    (int)93
+  },
+  { // Entry 761
+    0x1.fffffcp-33,
+    0x1.fffffcp-127,
+    (int)94
+  },
+  { // Entry 762
+    0x1.fffffcp-32,
+    0x1.fffffcp-127,
+    (int)95
+  },
+  { // Entry 763
+    0x1.fffffcp-31,
+    0x1.fffffcp-127,
+    (int)96
+  },
+  { // Entry 764
+    0x1.fffffcp-30,
+    0x1.fffffcp-127,
+    (int)97
+  },
+  { // Entry 765
+    0x1.fffffcp-29,
+    0x1.fffffcp-127,
+    (int)98
+  },
+  { // Entry 766
+    0x1.fffffcp-28,
+    0x1.fffffcp-127,
+    (int)99
+  },
+  { // Entry 767
+    0x1.fffffcp-27,
+    0x1.fffffcp-127,
+    (int)100
+  },
+  { // Entry 768
+    0x1.fffffcp-26,
+    0x1.fffffcp-127,
+    (int)101
+  },
+  { // Entry 769
+    0x1.fffffcp-25,
+    0x1.fffffcp-127,
+    (int)102
+  },
+  { // Entry 770
+    0x1.fffffcp-24,
+    0x1.fffffcp-127,
+    (int)103
+  },
+  { // Entry 771
+    0x1.fffffcp-23,
+    0x1.fffffcp-127,
+    (int)104
+  },
+  { // Entry 772
+    0x1.fffffcp-22,
+    0x1.fffffcp-127,
+    (int)105
+  },
+  { // Entry 773
+    0x1.fffffcp-21,
+    0x1.fffffcp-127,
+    (int)106
+  },
+  { // Entry 774
+    0x1.fffffcp-20,
+    0x1.fffffcp-127,
+    (int)107
+  },
+  { // Entry 775
+    0x1.fffffcp-19,
+    0x1.fffffcp-127,
+    (int)108
+  },
+  { // Entry 776
+    0x1.fffffcp-18,
+    0x1.fffffcp-127,
+    (int)109
+  },
+  { // Entry 777
+    0x1.fffffcp-17,
+    0x1.fffffcp-127,
+    (int)110
+  },
+  { // Entry 778
+    0x1.fffffcp-16,
+    0x1.fffffcp-127,
+    (int)111
+  },
+  { // Entry 779
+    0x1.fffffcp-15,
+    0x1.fffffcp-127,
+    (int)112
+  },
+  { // Entry 780
+    0x1.fffffcp-14,
+    0x1.fffffcp-127,
+    (int)113
+  },
+  { // Entry 781
+    0x1.fffffcp-13,
+    0x1.fffffcp-127,
+    (int)114
+  },
+  { // Entry 782
+    0x1.fffffcp-12,
+    0x1.fffffcp-127,
+    (int)115
+  },
+  { // Entry 783
+    0x1.fffffcp-11,
+    0x1.fffffcp-127,
+    (int)116
+  },
+  { // Entry 784
+    0x1.fffffcp-10,
+    0x1.fffffcp-127,
+    (int)117
+  },
+  { // Entry 785
+    0x1.fffffcp-9,
+    0x1.fffffcp-127,
+    (int)118
+  },
+  { // Entry 786
+    0x1.fffffcp-8,
+    0x1.fffffcp-127,
+    (int)119
+  },
+  { // Entry 787
+    0x1.fffffcp-7,
+    0x1.fffffcp-127,
+    (int)120
+  },
+  { // Entry 788
+    0x1.fffffcp-6,
+    0x1.fffffcp-127,
+    (int)121
+  },
+  { // Entry 789
+    0x1.fffffcp-5,
+    0x1.fffffcp-127,
+    (int)122
+  },
+  { // Entry 790
+    0x1.fffffcp-4,
+    0x1.fffffcp-127,
+    (int)123
+  },
+  { // Entry 791
+    0x1.fffffcp-3,
+    0x1.fffffcp-127,
+    (int)124
+  },
+  { // Entry 792
+    0x1.fffffcp-2,
+    0x1.fffffcp-127,
+    (int)125
+  },
+  { // Entry 793
+    0x1.fffffcp-1,
+    0x1.fffffcp-127,
+    (int)126
+  },
+  { // Entry 794
+    0x1.fffffcp0,
+    0x1.fffffcp-127,
+    (int)127
+  },
+  { // Entry 795
+    0x1.fffffcp1,
+    0x1.fffffcp-127,
+    (int)128
+  },
+  { // Entry 796
+    0x1.fffffcp2,
+    0x1.fffffcp-127,
+    (int)129
+  },
+  { // Entry 797
+    0x1.fffffcp3,
+    0x1.fffffcp-127,
+    (int)130
+  },
+  { // Entry 798
+    0x1.p0,
+    0x1.p-149,
+    (int)149
+  },
+  { // Entry 799
+    0x1.p-1,
+    0x1.p-149,
+    (int)148
+  },
+  { // Entry 800
+    0x1.fffffcp22,
+    0x1.fffffcp-127,
+    (int)149
+  },
+  { // Entry 801
+    0x1.fffffcp21,
+    0x1.fffffcp-127,
+    (int)148
+  },
+  { // Entry 802
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 803
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 804
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 805
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 806
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 807
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 808
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 809
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 810
+    0.0,
+    0.0f,
+    (int)0
+  },
+  { // Entry 811
+    -0.0,
+    -0.0f,
+    (int)0
+  },
+  { // Entry 812
+    0.0,
+    0.0f,
+    (int)1
+  },
+  { // Entry 813
+    -0.0,
+    -0.0f,
+    (int)1
+  },
+  { // Entry 814
+    0.0,
+    0.0f,
+    (int)-1
+  },
+  { // Entry 815
+    -0.0,
+    -0.0f,
+    (int)-1
+  },
+  { // Entry 816
+    0.0,
+    0.0f,
+    (int)127
+  },
+  { // Entry 817
+    -0.0,
+    -0.0f,
+    (int)127
+  },
+  { // Entry 818
+    0.0,
+    0.0f,
+    (int)-127
+  },
+  { // Entry 819
+    -0.0,
+    -0.0f,
+    (int)-127
+  },
+  { // Entry 820
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)0
+  },
+  { // Entry 821
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 822
+    0x1.p-126,
+    0x1.p-126,
+    (int)0
+  },
+  { // Entry 823
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 824
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 825
+    -0x1.p-149,
+    -0x1.p-149,
+    (int)0
+  },
+  { // Entry 826
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 827
+    -0x1.p-126,
+    -0x1.p-126,
+    (int)0
+  },
+  { // Entry 828
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 829
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)0
+  },
+  { // Entry 830
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)1
+  },
+  { // Entry 831
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)1
+  },
+  { // Entry 832
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 833
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 834
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)127
+  },
+  { // Entry 835
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)127
+  },
+  { // Entry 836
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 837
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 838
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 839
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 840
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 841
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 842
+    HUGE_VALF,
+    0x1.p-126,
+    (int)40000
+  },
+  { // Entry 843
+    HUGE_VALF,
+    0x1.p-149,
+    (int)40000
+  },
+  { // Entry 844
+    -HUGE_VALF,
+    -0x1.p-126,
+    (int)40000
+  },
+  { // Entry 845
+    -HUGE_VALF,
+    -0x1.p-149,
+    (int)40000
+  },
+  { // Entry 846
+    0x1.p-127,
+    0x1.p-126,
+    (int)-1
+  },
+  { // Entry 847
+    0x1.fffffcp-128,
+    0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 848
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 849
+    -0.0f,
+    -0x1.p-149,
+    (int)-1
+  },
+  { // Entry 850
+    -0x1.fffffcp-128,
+    -0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 851
+    -0x1.p-127,
+    -0x1.p-126,
+    (int)-1
+  },
+  { // Entry 852
+    0.0f,
+    0x1.fffffep127,
+    (int)-40000
+  },
+  { // Entry 853
+    -0.0f,
+    -0x1.fffffep127,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/log10_intel_data.h b/tests/math_data/log10_intel_data.h
new file mode 100644
index 0000000..ae8a9bd
--- /dev/null
+++ b/tests/math_data/log10_intel_data.h
@@ -0,0 +1,1474 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_log10_intel_data[] = {
+  { // Entry 0
+    -0x1.a7d9a8edb47be8052ee10d61f72bedb3p3,
+    0x1.0000000000001p-44
+  },
+  { // Entry 1
+    -0x1.b64cb76a2c1767fe0cb381da5b9ce962p6,
+    0x1.0000000000001p-364
+  },
+  { // Entry 2
+    -0x1.ce61cf8e9227b7ffbbc2258f06b00848p-1,
+    0x1.000000007p-3
+  },
+  { // Entry 3
+    -0x1.ce61cf8e9227b7ffd109efcb25d89632p0,
+    0x1.00000000ep-6
+  },
+  { // Entry 4
+    0x1.dd4f85658431780003c8d7bebe51f836p-33,
+    0x1.0000000225863p0
+  },
+  { // Entry 5
+    -0x1.815182473f60d80043383683153332aap3,
+    0x1.0000006p-40
+  },
+  { // Entry 6
+    -0x1.c4bfc5e08f300001961133d67a8ae8f8p5,
+    0x1.000001cp-188
+  },
+  { // Entry 7
+    -0x1.3428e5a6db26b002262970cb294f81p0,
+    0x1.00380p-4
+  },
+  { // Entry 8
+    -0x1.8a593abb7a102800f94e99ea178864eep7,
+    0x1.00380p-655
+  },
+  { // Entry 9
+    0x1.e1a95d2d9ba1dfa58b2f8e5fdf0a1b54p4,
+    0x1.0080402010080p100
+  },
+  { // Entry 10
+    0x1.fdc9fc7b9d3258675b494256b7928fc6p-11,
+    0x1.0092e4b92e4a0p0
+  },
+  { // Entry 11
+    0x1.159c1712e74c68277fba58fe711f8027p-10,
+    0x1.00ap0
+  },
+  { // Entry 12
+    0x1.bd94e520279af862fe39c005f4682635p-10,
+    0x1.01010p0
+  },
+  { // Entry 13
+    0x1.828f82071564e84adb4af8ee9eed7b5ep-9,
+    0x1.01be8f10cdap0
+  },
+  { // Entry 14
+    0x1.9fb8cdcda6c2645e174538ea88aed24ap-9,
+    0x1.01e05e9614213p0
+  },
+  { // Entry 15
+    0x1.a37a0053a01f959dff9d7ed8c0738223p-9,
+    0x1.01e4b95a8d930p0
+  },
+  { // Entry 16
+    0x1.a605801cb85f27525bcda3da5f201ad1p-9,
+    0x1.01e7acfc057dap0
+  },
+  { // Entry 17
+    0x1.a619cc7168fac569791c99d75180265dp-9,
+    0x1.01e7c4870a56dp0
+  },
+  { // Entry 18
+    0x1.bafb8ddcf618275fe4ba979af560a660p-9,
+    0x1.01fffe0p0
+  },
+  { // Entry 19
+    0x1.cf3f4e32847f4ffcdca9e1a8a08a4547p0,
+    0x1.020p6
+  },
+  { // Entry 20
+    0x1.bafd4774dbc9b71fc01c9b281b1290d1p-9,
+    0x1.020000006p0
+  },
+  { // Entry 21
+    0x1.bbaa41582bd4b75516bf1e86eef4bba8p-9,
+    0x1.0200c8b461357p0
+  },
+  { // Entry 22
+    0x1.ec0d5a07492628986cc18f5d6a668867p-9,
+    0x1.0238f392a2110p0
+  },
+  { // Entry 23
+    0x1.4c9795fd1f7e88009e3273bf7835f084p-7,
+    0x1.060dae8131baap0
+  },
+  { // Entry 24
+    0x1.78b4ee43af1c080139a43926058a6e46p-7,
+    0x1.06ddf6ab94edcp0
+  },
+  { // Entry 25
+    -0x1.93ca96452c85680041ebe338f63d139ap2,
+    0x1.076899d38cc30p-21
+  },
+  { // Entry 26
+    0x1.ab09f93221f40000194c663bebd78f55p-7,
+    0x1.07cc640f96a18p0
+  },
+  { // Entry 27
+    0x1.6671b365d15bb76f5080cc3658e2519ep-6,
+    0x1.0d39f5fc24fa3p0
+  },
+  { // Entry 28
+    0x1.671a9b1bc6da7fffc947cfdb4dd24e3ap-6,
+    0x1.0d405a1bfe7p0
+  },
+  { // Entry 29
+    0x1.dd9de2ebee648801272900e785c996b3p-6,
+    0x1.11c602d8a1b64p0
+  },
+  { // Entry 30
+    0x1.4b55b84c74ca87ff3d23b3b83347c50fp-1,
+    0x1.1c0p2
+  },
+  { // Entry 31
+    -0x1.9897e85148d75fffff988e06dd8eae5ep4,
+    0x1.1f8b0260ccc08p-85
+  },
+  { // Entry 32
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-3,
+    0x1.2p-1
+  },
+  { // Entry 33
+    0x1.de288434c35c582817ddb245949a59a7p-5,
+    0x1.24d3540217b15p0
+  },
+  { // Entry 34
+    -0x1.ee30e065377edd211ae67f49d114a8dep-3,
+    0x1.25bde8b09bc9fp-1
+  },
+  { // Entry 35
+    -0x1.bef28412a9d80800871c59a8425d3aa6p0,
+    0x1.262p-6
+  },
+  { // Entry 36
+    0x1.f25d629171aaeb2276907167a9aecd6ep-5,
+    0x1.267e4cfc99f93p0
+  },
+  { // Entry 37
+    -0x1.9080890e2f1798003a7f3166289a2555p2,
+    0x1.288p-21
+  },
+  { // Entry 38
+    -0x1.e561065b019c7c8d498e8c78464330bap-3,
+    0x1.28aa9f2515f87p-1
+  },
+  { // Entry 39
+    -0x1.acdc65a935a5e7fbeb2a0414dae29db6p-1,
+    0x1.29a74a135d178p-3
+  },
+  { // Entry 40
+    -0x1.ef0c55090466e7fc5d2be8b017aa1eb5p4,
+    0x1.29ba33c33bb58p-103
+  },
+  { // Entry 41
+    -0x1.d8d9a2cfb79d0b2ce6db09b403fbdef1p-3,
+    0x1.2cep-1
+  },
+  { // Entry 42
+    0x1.44538ea06035a000000e7cc1825ca422p-4,
+    0x1.33333353c89c5p0
+  },
+  { // Entry 43
+    0x1.p0,
+    0x1.4p3
+  },
+  { // Entry 44
+    0x1.9c899ddb7cc3a80106bd92d9f30607adp-4,
+    0x1.42d14b4da920cp0
+  },
+  { // Entry 45
+    -0x1.7ddfc5b2002037feab4460e64664b09dp3,
+    0x1.480p-40
+  },
+  { // Entry 46
+    0x1.a8eec6065bd99ffffff2293a34b1917dp-2,
+    0x1.4cccccd6ceda7p1
+  },
+  { // Entry 47
+    0x1.d2b644665f10c7fffff2e1d2418998f5p-4,
+    0x1.4ccccceca919dp0
+  },
+  { // Entry 48
+    0x1.d3bdb9847bf709c43457968ca6e28646p-4,
+    0x1.4cfe1a8c30ed4p0
+  },
+  { // Entry 49
+    0x1.d6cf13653b91464319282088eeff4c97p-4,
+    0x1.4d913e35aea4ep0
+  },
+  { // Entry 50
+    -0x1.f1225ac4366237fdb303a0597a3c8f4ap-2,
+    0x1.4ed318236c85ap-2
+  },
+  { // Entry 51
+    0x1.f37196430c2beec26b1c31bf38d57f48p-4,
+    0x1.52faf510e022dp0
+  },
+  { // Entry 52
+    0x1.f38c0c8325d85ad659b2174a3ebf6f55p-4,
+    0x1.530p0
+  },
+  { // Entry 53
+    0x1.ffedeac4d176f7d2cde344b7ec70f166p-4,
+    0x1.555e30bbda69fp0
+  },
+  { // Entry 54
+    0x1.ef35aa1c6b1a77fd9de45a1e172b02c6p0,
+    0x1.57ee98247d966p6
+  },
+  { // Entry 55
+    -0x1.e280fe9b8cf857fdc3ad0dc812e58d1dp-2,
+    0x1.5a05d853c77c9p-2
+  },
+  { // Entry 56
+    -0x1.dae3311da4c40884648c41a830dfe372p-2,
+    0x1.6p-2
+  },
+  { // Entry 57
+    -0x1.cbac8ba352de3be2a5cca8fb96402862p-2,
+    0x1.6c4p-2
+  },
+  { // Entry 58
+    0x1.d97edc6cb096a800000c666995420256p-2,
+    0x1.7333334217b9ap1
+  },
+  { // Entry 59
+    0x1.4fb68838ccfa27ff2311eecb508d5928p-3,
+    0x1.7563c3887db28p0
+  },
+  { // Entry 60
+    0x1.f8871c174778c7fff5731acf2ea4467cp0,
+    0x1.76000000040p6
+  },
+  { // Entry 61
+    -0x1.f2c14c2f6c5c9dbe7c8284b15fe01787p-4,
+    0x1.82d0b42d0b428p-1
+  },
+  { // Entry 62
+    -0x1.db1d990e111ee766e962104fbbf0f003p-4,
+    0x1.87fd6da61c3dbp-1
+  },
+  { // Entry 63
+    -0x1.88bdca024f32e80a1de6671b22560759p2,
+    0x1.880p-21
+  },
+  { // Entry 64
+    -0x1.d03b8ce6051c97fdd425647f3739d7a7p-4,
+    0x1.8a653d99282aap-1
+  },
+  { // Entry 65
+    -0x1.c2d826f6ad5fe8162592cc036e069cedp-4,
+    0x1.8d6p-1
+  },
+  { // Entry 66
+    -0x1.c02618e0447d27f9ebb51462d6978f25p-4,
+    0x1.8dfa43fe5c91dp-1
+  },
+  { // Entry 67
+    -0x1.eeaa19fc34f817fda340aeb7b652075bp3,
+    0x1.915c782e20b7cp-52
+  },
+  { // Entry 68
+    -0x1.977d95879da08ffffff16749a9bc1021p-2,
+    0x1.999999f61e1aap-2
+  },
+  { // Entry 69
+    -0x1.65df6512f76d17ffffefc71689395abep-1,
+    0x1.99999a5944542p-3
+  },
+  { // Entry 70
+    -0x1.65df64c430555800001074b613f83508p-1,
+    0x1.99999aea617cep-3
+  },
+  { // Entry 71
+    -0x1.fffffec8e4ad680000105809fee7c68cp-1,
+    0x1.99999bd6ae073p-4
+  },
+  { // Entry 72
+    0x1.b88245f86df8afffff2313af8a910f6bp0,
+    0x1.a48f51c27f3efp5
+  },
+  { // Entry 73
+    0x1.c03ec805c52c92447268d7949588e608p-3,
+    0x1.a7cp0
+  },
+  { // Entry 74
+    0x1.e37abe09539ad7fdb2cbb9c1975d1fc2p5,
+    0x1.b1af286bca208p200
+  },
+  { // Entry 75
+    0x1.d7f59ab2bcd057ffffffb4bb61effb6fp-3,
+    0x1.b33333398e9e6p0
+  },
+  { // Entry 76
+    0x1.d7f59ae8908aa7ffffef7f3f17823162p-3,
+    0x1.b3333353e507cp0
+  },
+  { // Entry 77
+    0x1.e67b44ba485188898012c0536c604a15p-3,
+    0x1.ba5d2e974bap0
+  },
+  { // Entry 78
+    -0x1.d51e74e2235f9001c902f49b3d39be88p-5,
+    0x1.c0cp-1
+  },
+  { // Entry 79
+    -0x1.c250b537e74bc8265c7b1b0eb3cb7541p-5,
+    0x1.c320c8320c832p-1
+  },
+  { // Entry 80
+    0x1.c1497aa3ee77f7fcf0bc96c7418f04b6p0,
+    0x1.c71c71c71c71ep5
+  },
+  { // Entry 81
+    0x1.78d835115ae9f7ff0c0680783889e6a1p0,
+    0x1.da6d369b4dap4
+  },
+  { // Entry 82
+    -0x1.ee844d23120e6ff4b9d27f8ce30b3cc2p-6,
+    0x1.ddap-1
+  },
+  { // Entry 83
+    -0x1.af7bceba1050d7feead6ef91625b91dfp-6,
+    0x1.e1dff861891p-1
+  },
+  { // Entry 84
+    0x1.e3dbd09431d0d7fdf2755b85be8a1676p5,
+    0x1.e3b21bc1779ecp200
+  },
+  { // Entry 85
+    -0x1.7aea2aab13a0480729dec748658b34fdp-6,
+    0x1.e572b95cae540p-1
+  },
+  { // Entry 86
+    0x1.c8de2fbafe18580003cdaa774a73d0c0p0,
+    0x1.e739ce739ce70p5
+  },
+  { // Entry 87
+    -0x1.0ce446e3ca10c004d63fb70fab6a26ffp-6,
+    0x1.ed0340d0340d0p-1
+  },
+  { // Entry 88
+    -0x1.fcf458f6faa4380097af1db4b2910c7dp-7,
+    0x1.ee033092fe620p-1
+  },
+  { // Entry 89
+    -0x1.fbe09900f2e9d7e3bbbe0bd455c92038p-7,
+    0x1.ee0cc330cc347p-1
+  },
+  { // Entry 90
+    -0x1.f9454ad8c58a6801723d48914bdbc81bp-7,
+    0x1.ee23ee5df745dp-1
+  },
+  { // Entry 91
+    0x1.2c858a2326ced800dd3ed3ad03e0efedp-1,
+    0x1.ee8p1
+  },
+  { // Entry 92
+    0x1.7f694cc35a4da800fb6e6f17a5903e17p1,
+    0x1.eebbaeebbaee8p9
+  },
+  { // Entry 93
+    -0x1.e2cfbb4934806fe698638d9325ce0de6p-7,
+    0x1.eeebbaeebbaeep-1
+  },
+  { // Entry 94
+    -0x1.c3d0837783cac8005374209e6248fb22p-7,
+    0x1.f00000000008bp-1
+  },
+  { // Entry 95
+    -0x1.51824c7587ecc4cae0ebe2a8eae894b0p-7,
+    0x1.f3fffffffffffp-1
+  },
+  { // Entry 96
+    -0x1.d0ef7d83c50a77fdf0a9df7625174df6p0,
+    0x1.f46p-7
+  },
+  { // Entry 97
+    -0x1.3cad2633010287ec521f3fb1b0e16c34p-7,
+    0x1.f4bb83ff25408p-1
+  },
+  { // Entry 98
+    -0x1.30260ecbe5e48801930721a2e427895ap-7,
+    0x1.f52c691251919p-1
+  },
+  { // Entry 99
+    0x1.6937e0674dae37fec020473dcad8c7e5p7,
+    0x1.f5a814afd69f4p599
+  },
+  { // Entry 100
+    -0x1.f78887a8d70da00092ac096e0c2a748dp-8,
+    0x1.f70588f144d4ep-1
+  },
+  { // Entry 101
+    -0x1.f6f8472e06512801501371ceeb6902c1p-8,
+    0x1.f708159aab0fep-1
+  },
+  { // Entry 102
+    -0x1.c575bc711f57f7bcd5e65219b01c819cp-8,
+    0x1.f7e849868c907p-1
+  },
+  { // Entry 103
+    -0x1.c03a80ae608087bcec4b95b43cc7cf68p-8,
+    0x1.f7fffffffff4cp-1
+  },
+  { // Entry 104
+    0x1.2d536e42845f97fe560fa7b450804b26p8,
+    0x1.f9fe7f9fe7f9cp1000
+  },
+  { // Entry 105
+    -0x1.f568e77ed84b1372c94cff5e7e38e985p-10,
+    0x1.fdcp-1
+  },
+  { // Entry 106
+    -0x1.be202babd38921235652db287907f634p-10,
+    0x1.fdff6245a12f2p-1
+  },
+  { // Entry 107
+    -0x1.bd96a1d7da0391520e1595e0904768ffp-10,
+    0x1.fdffffffffffcp-1
+  },
+  { // Entry 108
+    -0x1.bd96a1d7d9d9b63e5aa7d082a140d738p-10,
+    0x1.fdfffffffffffp-1
+  },
+  { // Entry 109
+    -0x1.bd27045bfd1e24767eb1fadda38b82e2p-11,
+    0x1.fefffffffffffp-1
+  },
+  { // Entry 110
+    -0x1.bd27045bc77c779853b6fc7b419acb49p-11,
+    0x1.ff000000001ecp-1
+  },
+  { // Entry 111
+    -0x1.bd25e056b638d812a81d48bf2dd5c055p-11,
+    0x1.ff0000a7c5b2ap-1
+  },
+  { // Entry 112
+    -0x1.bd226529bffa7801b54d1e695f9cf46ap-11,
+    0x1.ff0002a7c5b2ap-1
+  },
+  { // Entry 113
+    -0x1.d8c1f8f29d862387133a7814cb061b6dp-12,
+    0x1.ff77fffffffffp-1
+  },
+  { // Entry 114
+    -0x1.7c85657289fbe8275c1971e953a6ae71p-12,
+    0x1.ff9285e1ae9c8p-1
+  },
+  { // Entry 115
+    -0x1.ea7ebec511a69b37b972d41a517cd884p-13,
+    0x1.ffb96e5b96e40p-1
+  },
+  { // Entry 116
+    -0x1.c4e293b148cec847b4e214c76642cd73p-13,
+    0x1.ffbed73ec264ep-1
+  },
+  { // Entry 117
+    -0x1.bcd37f1eb06ff7cc110a8bd0efc2804bp-13,
+    0x1.ffbffffffffffp-1
+  },
+  { // Entry 118
+    -0x1.bcd37f1eb000bbf841f514e78b0bec67p-13,
+    0x1.ffcp-1
+  },
+  { // Entry 119
+    -0x1.8536047fb9d4f3b5cba95cabacae22aep-13,
+    0x1.ffc7fffffffffp-1
+  },
+  { // Entry 120
+    0x1.343573efa4c4c000047648d4f349dfcep-1,
+    0x1.ffe4effffffffp1
+  },
+  { // Entry 121
+    -0x1.85236427a08717efc89ebcb159b0b578p-16,
+    0x1.fff8fffffffffp-1
+  },
+  { // Entry 122
+    -0x1.e8df7421f041fffffe5b0949761ec657p5,
+    0x1.fffa3bfffffffp-204
+  },
+  { // Entry 123
+    -0x1.e2efbc1dc92337d7a679ab6c98fab739p-20,
+    0x1.ffff74fffffffp-1
+  },
+  { // Entry 124
+    -0x1.34413657816577fd436fcbc4aa32de88p-2,
+    0x1.fffffe7ffffffp-2
+  },
+  { // Entry 125
+    -0x1.d0ca51f95ac197fe1add64b6119cb454p7,
+    0x1.ffffff3ffffffp-773
+  },
+  { // Entry 126
+    -0x1.f018f15c0ab6094209fcfe083ebc306ep4,
+    0x1.fffffffff1fffp-104
+  },
+  { // Entry 127
+    0x1.465107258d1d1800062fee82bffbff4cp6,
+    0x1.fffffffff9fffp270
+  },
+  { // Entry 128
+    -0x1.9a9adba646d8e7ff39ebe5c5b651ecbcp7,
+    0x1.fffffffffdfffp-683
+  },
+  { // Entry 129
+    -0x1.16c0f776836d8ffe515d679ed8a253b1p8,
+    0x1.fffffffffdfffp-927
+  },
+  { // Entry 130
+    0x1.d59b56cd2f3cc80209ce8056d3477a08p7,
+    0x1.fffffffffdfffp779
+  },
+  { // Entry 131
+    -0x1.ce61cf8ef372f7fe03b197d05decff0ep-1,
+    0x1.fffffffffff8fp-4
+  },
+  { // Entry 132
+    -0x1.c85c8985c199c7fc14d958ba92e399dbp7,
+    0x1.fffffffffffe0p-759
+  },
+  { // Entry 133
+    -0x1.bcb7b1526e511ac160e1a3298010d96dp-52,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 134
+    -0x1.34413509f7a00562d2bf0506ef44e3a5p-3,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 135
+    -0x1.8e271da4056a43993fdb13487031fbd4p-4,
+    0x1.995255f2d00abp-1
+  },
+  { // Entry 136
+    -0x1.9762be26c2c57dcae0118e0cced6e75ap-5,
+    0x1.c89ac57dac58ap-1
+  },
+  { // Entry 137
+    -0x1.c694ace08e5124f7327cd5da1fc480f6p-8,
+    0x1.f7e3350888a69p-1
+  },
+  { // Entry 138
+    0x1.064664d0dd47cb0784b117d2efb0afb2p-5,
+    0x1.1395d249b27a4p0
+  },
+  { // Entry 139
+    0x1.158bee1e56be974c17844d0736925a83p-4,
+    0x1.2b3a0a0f20a14p0
+  },
+  { // Entry 140
+    0x1.9cd10b008ddd739de9e6d843b8ff4092p-4,
+    0x1.42de41d48ec84p0
+  },
+  { // Entry 141
+    0x1.0d42f84798b4be1db02431f73c710b5fp-3,
+    0x1.5a827999fcef4p0
+  },
+  { // Entry 142
+    0x1.47f70647644a538dd717c3f0c99b4f52p-3,
+    0x1.7226b15f6b164p0
+  },
+  { // Entry 143
+    0x1.7f08548e0992552054c82deff65c5a7ep-3,
+    0x1.89cae924d93d4p0
+  },
+  { // Entry 144
+    0x1.b2e37bef02ca65a6b69ef0ef6045fca9p-3,
+    0x1.a16f20ea47644p0
+  },
+  { // Entry 145
+    0x1.e3e31eb5585d6defbecf1003ed8586ddp-3,
+    0x1.b91358afb58b4p0
+  },
+  { // Entry 146
+    0x1.0929d506851b759ac8b971a365bb53bfp-2,
+    0x1.d0b7907523b24p0
+  },
+  { // Entry 147
+    0x1.1f3b144d2903aa0e15b5d3c67d53f91bp-2,
+    0x1.e85bc83a91d94p0
+  },
+  { // Entry 148
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p1
+  },
+  { // Entry 149
+    -0x1.34413509f7a00562d2bf0506ef44e3a5p-3,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 150
+    -0x1.edc7b28c1cdff646afa1bdcd4e6a02f0p-4,
+    0x1.83e609263c011p-1
+  },
+  { // Entry 151
+    -0x1.7af97358b9e0a424fa702e69d4ac3a8cp-4,
+    0x1.9dc22be484456p-1
+  },
+  { // Entry 152
+    -0x1.0f218eacb6487dd0c606c3e816e7c3dap-4,
+    0x1.b79e4ea2cc89bp-1
+  },
+  { // Entry 153
+    -0x1.52e84950d4c307d9bedea47d3987c01bp-5,
+    0x1.d17a716114ce0p-1
+  },
+  { // Entry 154
+    -0x1.2519b7f1cb3d94d33244a6c708ffaefcp-6,
+    0x1.eb56941f5d125p-1
+  },
+  { // Entry 155
+    0x1.1f8102faa9fd301aa54cd13599ef1980p-8,
+    0x1.02995b6ed2ab5p0
+  },
+  { // Entry 156
+    0x1.a30a9d609efc4751d9d20363fa852e63p-6,
+    0x1.0f876ccdf6cd8p0
+  },
+  { // Entry 157
+    0x1.7706e100e01d4da13cc59446df5969d9p-5,
+    0x1.1c757e2d1aefbp0
+  },
+  { // Entry 158
+    0x1.0a965ca3c59fa6843ec39c17298b1aaap-4,
+    0x1.29638f8c3f11ep0
+  },
+  { // Entry 159
+    0x1.564b9e135d1f0f233bd67e02bc5bf6eap-4,
+    0x1.3651a0eb63341p0
+  },
+  { // Entry 160
+    0x1.9ee993b80f2136ca6bfb66b9c7b25428p-4,
+    0x1.433fb24a87564p0
+  },
+  { // Entry 161
+    0x1.e4ae53ebbcefbd04882f10aaa3de86b7p-4,
+    0x1.502dc3a9ab787p0
+  },
+  { // Entry 162
+    0x1.13e87661d64f5246b5a8d69214746331p-3,
+    0x1.5d1bd508cf9aap0
+  },
+  { // Entry 163
+    0x1.34413509f79fd8ff6b6661a93ead623bp-3,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 164
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.8p-1
+  },
+  { // Entry 165
+    -0x1.5634626b0211c48738b33f07d1594431p-4,
+    0x1.a666666666666p-1
+  },
+  { // Entry 166
+    -0x1.76d869b02a035a10797953f058b52ecap-5,
+    0x1.cccccccccccccp-1
+  },
+  { // Entry 167
+    -0x1.684bf7fda98a1c59efaac6272939dcd6p-7,
+    0x1.f333333333332p-1
+  },
+  { // Entry 168
+    0x1.5b2a5ca1f47b15b644b33c640923bf35p-6,
+    0x1.0ccccccccccccp0
+  },
+  { // Entry 169
+    0x1.a30a9d609efdd6812008dfbb8239bf8cp-5,
+    0x1.1ffffffffffffp0
+  },
+  { // Entry 170
+    0x1.44538de3b27e4c8bcd11e934e41583aap-4,
+    0x1.3333333333332p0
+  },
+  { // Entry 171
+    0x1.b02b728fb6168040e2c4e5e7fb3809b1p-4,
+    0x1.4666666666665p0
+  },
+  { // Entry 172
+    0x1.0aec6e4a00fec3048feb505070bb4f14p-3,
+    0x1.5999999999998p0
+  },
+  { // Entry 173
+    0x1.3b03499ffcc7d7b28a254f6122a6a4d4p-3,
+    0x1.6cccccccccccbp0
+  },
+  { // Entry 174
+    0x1.68a288b60b7f789784b55146880d9ce1p-3,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 175
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 176
+    0x1.e1a5e2df92e9e5bcc08d3839a3e54697p4,
+    0x1.0p100
+  },
+  { // Entry 177
+    0x1.e24f6e3fe3af5472f332ca85bdbb9d77p4,
+    0x1.199999999999ap100
+  },
+  { // Entry 178
+    0x1.e2ea366d769c64c298e42c7b7a7f4693p4,
+    0x1.3333333333334p100
+  },
+  { // Entry 179
+    0x1.e37899234efc355b9919ffe367a51209p4,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 180
+    0x1.e3fc6d39772e858d4b8607d59bb8d0ddp4,
+    0x1.6666666666668p100
+  },
+  { // Entry 181
+    0x1.e47727f0ff00e5d66a0cd9d066e228c3p4,
+    0x1.8000000000002p100
+  },
+  { // Entry 182
+    0x1.e4e9f6303263e5569760e25883a23773p4,
+    0x1.999999999999cp100
+  },
+  { // Entry 183
+    0x1.e555ce14de677da58c6cbe260334cf1bp4,
+    0x1.b333333333336p100
+  },
+  { // Entry 184
+    0x1.e5bb7b7ee2b364c38d849ed338fa804dp4,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 185
+    0x1.e61ba9358eaaf702959b2a4bfffdca28p4,
+    0x1.e66666666666ap100
+  },
+  { // Entry 186
+    0x1.e676e7b3bac865798509830704412b23p4,
+    0x1.0p101
+  },
+  { // Entry 187
+    0x1.e1a5e2df92e9e5bcc08d3839a3e54697p5,
+    0x1.0p200
+  },
+  { // Entry 188
+    0x1.e1faa88fbb4c9d17d9e0015fb0d07207p5,
+    0x1.199999999999ap200
+  },
+  { // Entry 189
+    0x1.e2480ca684c3253facb8b25a8f324695p5,
+    0x1.3333333333334p200
+  },
+  { // Entry 190
+    0x1.e28f3e0170f30d8c2cd39c0e85c52c50p5,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 191
+    0x1.e2d1280c850c35a50609a0079fcf0bbap5,
+    0x1.6666666666668p200
+  },
+  { // Entry 192
+    0x1.e30e856848f565c9954d09050563b7adp5,
+    0x1.8000000000002p200
+  },
+  { // Entry 193
+    0x1.e347ec87e2a6e589abf70d4913c3bf05p5,
+    0x1.999999999999cp200
+  },
+  { // Entry 194
+    0x1.e37dd87a38a8b1b1267cfb2fd38d0ad9p5,
+    0x1.b333333333336p200
+  },
+  { // Entry 195
+    0x1.e3b0af2f3acea5402708eb866e6fe372p5,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 196
+    0x1.e3e0c60a90ca6e5fab143142d1f18860p5,
+    0x1.e66666666666ap200
+  },
+  { // Entry 197
+    0x1.e40e6549a6d9259b22cb5da0541338ddp5,
+    0x1.0p201
+  },
+  { // Entry 198
+    0x1.2d07adcbbbd22f95f8584324066f4c1ep8,
+    0x1.0p1000
+  },
+  { // Entry 199
+    0x1.2d124681c0de86815b829c48c80cb18cp8,
+    0x1.199999999999ap1000
+  },
+  { // Entry 200
+    0x1.2d1bf3049a0d578655ddb26823d8ec1ep8,
+    0x1.3333333333334p1000
+  },
+  { // Entry 201
+    0x1.2d24d92ff793548fe5e10f9ea2ab48d5p8,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 202
+    0x1.2d2d16715a1679930107d01dc5ec84c3p8,
+    0x1.6666666666668p1000
+  },
+  { // Entry 203
+    0x1.2d34c21cd2939f9792f03d3d729f1a41p8,
+    0x1.8000000000002p1000
+  },
+  { // Entry 204
+    0x1.2d3bef00c5c9cf8f95c57dc5f46b1b2cp8,
+    0x1.999999999999cp1000
+  },
+  { // Entry 205
+    0x1.2d42ac7f108a091485163b82cc6444a6p8,
+    0x1.b333333333336p1000
+  },
+  { // Entry 206
+    0x1.2d490755b0cec7866527b98d9fc09fbap8,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 207
+    0x1.2d4f0a311b8e40aa55a922452c30d457p8,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 208
+    0x1.2d54be18fe501791c4a007d0dc750a67p8,
+    0x1.0p1001
+  },
+  { // Entry 209
+    -0x1.bcb7bf382c6fb3df0029e1e6c04e5b04p-22,
+    0x1.ffffep-1
+  },
+  { // Entry 210
+    -0x1.287a794e24640de79fb5dd39033f1c3ap-23,
+    0x1.fffff55555555p-1
+  },
+  { // Entry 211
+    0x1.287a731f2fe08fea55a78b1501306850p-23,
+    0x1.0000055555555p0
+  },
+  { // Entry 212
+    0x1.bcb7a36cb15a8cec0c39b0a7cf2d7858p-22,
+    0x1.00001p0
+  },
+  { // Entry 213
+    -0x1.bcb7b155e7c045d88b2ccd879d00dedap-32,
+    0x1.fffffff80p-1
+  },
+  { // Entry 214
+    -0x1.287a7888aec95740a166efaf8756eaa1p-33,
+    0x1.fffffffd55555p-1
+  },
+  { // Entry 215
+    0x1.287a719444b61daa0968ca1f55a6be9ap-33,
+    0x1.0000000155555p0
+  },
+  { // Entry 216
+    0x1.bcb7b14ef4e1808ed1e940a65b2d5f0fp-32,
+    0x1.000000040p0
+  },
+  { // Entry 217
+    -0x1.bcb7b1526f2f3f0313ef120e2ab88e99p-42,
+    0x1.fffffffffe0p-1
+  },
+  { // Entry 218
+    -0x1.2883ba0aa61efb4b5ec5882d1426a118p-43,
+    0x1.ffffffffff555p-1
+  },
+  { // Entry 219
+    0x1.2867ee8f909545d6cd4484a582495a1fp-43,
+    0x1.0000000000555p0
+  },
+  { // Entry 220
+    0x1.bcb7b1526d728751c180c12b004dd665p-42,
+    0x1.00000000010p0
+  },
+  { // Entry 221
+    -0x1.bcb7b1526e511ac160e1a3298010d96dp-52,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 222
+    -0x1.4d89c4fdd2bcba02454565e85cc46f5fp-53,
+    0x1.ffffffffffffdp-1
+  },
+  { // Entry 223
+    0x1.bcb7b1526e50d544ad2cc1ecd3e2a249p-54,
+    0x1.0000000000001p0
+  },
+  { // Entry 224
+    0x1.bcb7b1526e50ab93748d079547463ebfp-52,
+    0x1.0000000000004p0
+  },
+  { // Entry 225
+    0x1.34413509f79fef2da5a350b33a574eb5p8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    -0x1.434e6420f4373e5f05171d19e4184d25p8,
+    0x1.0p-1074
+  },
+  { // Entry 227
+    -0x1.34413509f7a02cb1a1f65baf60cb15dfp-3,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 228
+    -0x1.34413509f7a00562d2bf0506ef44e3a5p-3,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 229
+    -0x1.34413509f79fde140387ae5e7f7b691dp-3,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 230
+    0x1.34413509f79fb1b09c2f0b00cd273001p-3,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 231
+    0x1.34413509f79fd8ff6b6661a93ead623bp-3,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 232
+    0x1.34413509f7a0004e3a9db851ae76dcc3p-3,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 233
+    -0x1.34413509f79ffd16dc9d46ca9e4a0d3cp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 234
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p-1
+  },
+  { // Entry 235
+    -0x1.34413509f79fd365a3fd8c7309a4d81dp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 236
+    -0x1.ffbfc2bbc7808176d5526dc5cbf5abb0p-4,
+    0x1.7ffffffffffffp-1
+  },
+  { // Entry 237
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.8p-1
+  },
+  { // Entry 238
+    -0x1.ffbfc2bbc77fed399a36f3aad59232c9p-4,
+    0x1.8000000000001p-1
+  },
+  { // Entry 239
+    0x1.68a288b60b7f9da6d37c2fcd47f77008p-3,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 240
+    0x1.68a288b60b7fc2b622430e540655f53bp-3,
+    0x1.8p0
+  },
+  { // Entry 241
+    0x1.68a288b60b7fe7c57109ecdac3292c7bp-3,
+    0x1.8000000000001p0
+  },
+  { // Entry 242
+    0x1.2817ce90842c0e5d9ca444ee93c2f2b2p-10,
+    0x1.00aaaaaaaaaaap0
+  },
+  { // Entry 243
+    0x1.2817ce908447c75d5ca081d47714bc4cp-10,
+    0x1.00aaaaaaaaaabp0
+  },
+  { // Entry 244
+    0x1.2817ce908463805d1c9cbeb89ffd7a98p-10,
+    0x1.00aaaaaaaaaacp0
+  },
+  { // Entry 245
+    0x1.34413509f79fe83e404d699ed350adcap-1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 246
+    0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.0p2
+  },
+  { // Entry 247
+    0x1.34413509f79ffd16dc9d46ca9da34859p-1,
+    0x1.0000000000001p2
+  },
+  { // Entry 248
+    0x1.34413509f79fe14b61881fe58fa838a4p-2,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 249
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p1
+  },
+  { // Entry 250
+    0x1.34413509f7a00afc9a27da3d244d6dc3p-2,
+    0x1.0000000000001p1
+  },
+  { // Entry 251
+    -0x1.bcb7b1526e50ea1d497c9f189e19715ep-55,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 252
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 253
+    0x1.bcb7b1526e50d544ad2cc1ecd3e2a249p-54,
+    0x1.0000000000001p0
+  },
+  { // Entry 254
+    -0x1.34413509f79ffd16dc9d46ca9e4a0d3cp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 255
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p-1
+  },
+  { // Entry 256
+    -0x1.34413509f79fd365a3fd8c7309a4d81dp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 257
+    -0x1.34413509f79ff623fdd7fd115aa19816p-1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 258
+    -0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.0p-2
+  },
+  { // Entry 259
+    -0x1.34413509f79fe14b61881fe5904efd86p-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 260
+    -0x1.ce61cf8ef36fedbc8d6156bd661e298ep-1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 261
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.0p-3
+  },
+  { // Entry 262
+    -0x1.ce61cf8ef36fd8e3f11179919bcb8effp-1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 263
+    -0x1.34413509f79ff2aa8e755834b8cd5d83p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 264
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.0p-4
+  },
+  { // Entry 265
+    -0x1.34413509f79fe83e404d699ed3a4103bp0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 266
+    -0x1.8151824c7587ee76d63a050abe8ba63fp0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 267
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.0p-5
+  },
+  { // Entry 268
+    -0x1.8151824c7587e40a88121674d96258f7p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 269
+    -0x1.ce61cf8ef36fea431dfeb1e0c449eefbp0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 270
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.0p-6
+  },
+  { // Entry 271
+    -0x1.ce61cf8ef36fdfd6cfd6c34adf20a1b3p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 272
+    -0x1.0db90e68b8abf307b2e1af5b65041bdbp1,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 273
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.0p-7
+  },
+  { // Entry 274
+    -0x1.0db90e68b8abedd18bcdb810726f7537p1,
+    0x1.0000000000001p-7
+  },
+  { // Entry 275
+    -0x1.34413509f79ff0edd6c405c667e34039p1,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 276
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.0p-8
+  },
+  { // Entry 277
+    -0x1.34413509f79febb7afb00e7b754e9995p1,
+    0x1.0000000000001p-8
+  },
+  { // Entry 278
+    -0x1.5ac95bab3693eed3faa65c316ac26497p1,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 279
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.0p-9
+  },
+  { // Entry 280
+    -0x1.5ac95bab3693e99dd39264e6782dbdf3p1,
+    0x1.0000000000001p-9
+  },
+  { // Entry 281
+    -0x1.8151824c7587ecba1e88b29c6da188f5p1,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 282
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.0p-10
+  },
+  { // Entry 283
+    -0x1.8151824c7587e783f774bb517b0ce252p1,
+    0x1.0000000000001p-10
+  },
+  { // Entry 284
+    -0x1.f4e9f6303263e66c8a2fb5dd763ef60fp1,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 285
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.0p-13
+  },
+  { // Entry 286
+    -0x1.f4e9f6303263e136631bbe9283aa4f6cp1,
+    0x1.0000000000001p-13
+  },
+  { // Entry 287
+    -0x1.f4e9f6303263e66c8a2fb5dd763ef60fp1,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 288
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.0p-13
+  },
+  { // Entry 289
+    -0x1.f4e9f6303263e136631bbe9283aa4f6cp1,
+    0x1.0000000000001p-13
+  },
+  { // Entry 290
+    -0x1.ce61cf8ef36fedbc8d6156bd661e298ep-1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 291
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.0p-3
+  },
+  { // Entry 292
+    -0x1.ce61cf8ef36fd8e3f11179919bcb8effp-1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 293
+    -0x1.db11ed766abfc23dad46ff588641095dp-5,
+    0x1.bffffffffffffp-1
+  },
+  { // Entry 294
+    -0x1.db11ed766abf432dc3c1bb4167a6eb47p-5,
+    0x1.cp-1
+  },
+  { // Entry 295
+    -0x1.db11ed766abec41dda3c772a4d96833ep-5,
+    0x1.c000000000001p-1
+  },
+  { // Entry 296
+    -0x1.34413509f79ff2aa8e755834b8cd5d83p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 297
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.0p-4
+  },
+  { // Entry 298
+    -0x1.34413509f79fe83e404d699ed3a4103bp0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 299
+    -0x1.cb38fccd8bfea3c5778d26c3e6929b36p-6,
+    0x1.dffffffffffffp-1
+  },
+  { // Entry 300
+    -0x1.cb38fccd8bfdb696b29463658b991237p-6,
+    0x1.ep-1
+  },
+  { // Entry 301
+    -0x1.cb38fccd8bfcc967ed9ba00738877eb7p-6,
+    0x1.e000000000001p-1
+  },
+  { // Entry 302
+    -0x1.8151824c7587ee76d63a050abe8ba63fp0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 303
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.0p-5
+  },
+  { // Entry 304
+    -0x1.8151824c7587e40a88121674d96258f7p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 305
+    -0x1.c3d0837784c5d4dc2b470a089b8b6137p-7,
+    0x1.effffffffffffp-1
+  },
+  { // Entry 306
+    -0x1.c3d0837784c409cbf85d4dd61d426e1bp-7,
+    0x1.fp-1
+  },
+  { // Entry 307
+    -0x1.c3d0837784c23ebbc57391a3adc87461p-7,
+    0x1.f000000000001p-1
+  },
+  { // Entry 308
+    -0x1.ce61cf8ef36fea431dfeb1e0c449eefbp0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 309
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.0p-6
+  },
+  { // Entry 310
+    -0x1.ce61cf8ef36fdfd6cfd6c34adf20a1b3p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 311
+    -0x1.c03a80ae5e08bfbaeb001bb3cc0e0020p-8,
+    0x1.f7fffffffffffp-1
+  },
+  { // Entry 312
+    -0x1.c03a80ae5e05382d51f71b0f6602c76ap-8,
+    0x1.f80p-1
+  },
+  { // Entry 313
+    -0x1.c03a80ae5e01b09fb8ee1a6b1ca6b823p-8,
+    0x1.f800000000001p-1
+  },
+  { // Entry 314
+    -0x1.0db90e68b8abf307b2e1af5b65041bdbp1,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 315
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.0p-7
+  },
+  { // Entry 316
+    -0x1.0db90e68b8abedd18bcdb810726f7537p1,
+    0x1.0000000000001p-7
+  },
+  { // Entry 317
+    -0x1.be76bd77b50331b751b4d8af88fb07ecp-9,
+    0x1.fbfffffffffffp-1
+  },
+  { // Entry 318
+    -0x1.be76bd77b4fc30d6cb5e729fc0bd5fa5p-9,
+    0x1.fc0p-1
+  },
+  { // Entry 319
+    -0x1.be76bd77b4f52ff645080c9030f7ab79p-9,
+    0x1.fc00000000001p-1
+  },
+  { // Entry 320
+    -0x1.34413509f79ff0edd6c405c667e34039p1,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 321
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.0p-8
+  },
+  { // Entry 322
+    -0x1.34413509f79febb7afb00e7b754e9995p1,
+    0x1.0000000000001p-8
+  },
+  { // Entry 323
+    -0x1.bd96a1d7d9d9b63e5aa7d082a140d738p-10,
+    0x1.fdfffffffffffp-1
+  },
+  { // Entry 324
+    -0x1.bd96a1d7d9cbc28d1ed88eb987048038p-10,
+    0x1.fe0p-1
+  },
+  { // Entry 325
+    -0x1.bd96a1d7d9bdcedbe3094cf0dcd5c0adp-10,
+    0x1.fe00000000001p-1
+  },
+  { // Entry 326
+    -0x1.5ac95bab3693eed3faa65c316ac26497p1,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 327
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.0p-9
+  },
+  { // Entry 328
+    -0x1.5ac95bab3693e99dd39264e6782dbdf3p1,
+    0x1.0000000000001p-9
+  },
+  { // Entry 329
+    -0x1.bd27045bfd1e24767eb1fadda38b82e2p-11,
+    0x1.fefffffffffffp-1
+  },
+  { // Entry 330
+    -0x1.bd27045bfd024b0eb5a690199f7d311fp-11,
+    0x1.ff0p-1
+  },
+  { // Entry 331
+    -0x1.bd27045bfce671a6ec9b25567aa9bb13p-11,
+    0x1.ff00000000001p-1
+  },
+  { // Entry 332
+    -0x1.8151824c7587ecba1e88b29c6da188f5p1,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 333
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.0p-10
+  },
+  { // Entry 334
+    -0x1.8151824c7587e783f774bb517b0ce252p1,
+    0x1.0000000000001p-10
+  },
+  { // Entry 335
+    -0x1.bcef518e2998bf2fcdeca6d0c7d243c3p-12,
+    0x1.ff7ffffffffffp-1
+  },
+  { // Entry 336
+    -0x1.bcef518e29611a506bc6531e97655414p-12,
+    0x1.ff8p-1
+  },
+  { // Entry 337
+    -0x1.bcef518e29297571099fff6e248ec50ep-12,
+    0x1.ff80000000001p-1
+  },
+  { // Entry 338
+    -0x1.f4e9f6303263e66c8a2fb5dd763ef60fp1,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 339
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.0p-13
+  },
+  { // Entry 340
+    -0x1.f4e9f6303263e136631bbe9283aa4f6cp1,
+    0x1.0000000000001p-13
+  },
+  { // Entry 341
+    -0x1.bcbea45645848a4be42e2d4ac91c6d9fp-15,
+    0x1.ffeffffffffffp-1
+  },
+  { // Entry 342
+    -0x1.bcbea45643c7c4b46503e30e59b7dd28p-15,
+    0x1.fffp-1
+  },
+  { // Entry 343
+    -0x1.bcbea456420aff1ce5d998dfd0ef3d8bp-15,
+    0x1.fff0000000001p-1
+  },
+  { // Entry 344
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 345
+    0x1.34413509f79fef2da5a350b33a574eb5p8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 346
+    0x1.34413509f79fef2a2c33ee0e5db55eafp8,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 347
+    0x1.fd14db31ba3bab2b91a5ae782f204d4fp-2,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 348
+    0x1.91a74c4f853777f4e525f640304e54bep-3,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 349
+    0x1.bcb7b1526e50d544ad2cc1ecd3e2a249p-54,
+    0x1.0000000000001p0
+  },
+  { // Entry 350
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 351
+    -0x1.bcb7b1526e50ea1d497c9f189e19715ep-55,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 352
+    -0x1.adb63b88d410ccdab1fee0dffb47e244p-4,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 353
+    -0x1.33a7146f72a41f3293a464b4b1aa514cp8,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 354
+    -0x1.33a7146f72a41f39868329fe6aeda65ep8,
+    0x1.0p-1022
+  },
+  { // Entry 355
+    -0x1.33a7146f72a41f407961ef4824316a9fp8,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 356
+    -0x1.33a7146f72a41f476c40b491dd759e0ep8,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 357
+    -0x1.430153d3b1b9566338cf586d0e128edcp8,
+    0x1.0p-1073
+  },
+  { // Entry 358
+    -0x1.434e6420f4373e5f05171d19e4184d25p8,
+    0x1.0p-1074
+  },
+  { // Entry 359
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 360
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 361
+    0x1.p0,
+    0x1.4p3
+  },
+  { // Entry 362
+    0x1.p1,
+    0x1.9p6
+  },
+  { // Entry 363
+    0x1.80p1,
+    0x1.f40p9
+  }
+};
diff --git a/tests/math_data/log10f_intel_data.h b/tests/math_data/log10f_intel_data.h
new file mode 100644
index 0000000..0f1ac26
--- /dev/null
+++ b/tests/math_data/log10f_intel_data.h
@@ -0,0 +1,1226 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_log10f_intel_data[] = {
+  { // Entry 0
+    -0x1.fe8bfdffff13dd47512c048f491f9b43p3,
+    0x1.000022p-53
+  },
+  { // Entry 1
+    -0x1.815170ed4e086e755171000a21e4418ap2,
+    0x1.0000a0p-20
+  },
+  { // Entry 2
+    -0x1.fe8beafff5736c97130c9ced1f57d1a3p3,
+    0x1.000180p-53
+  },
+  { // Entry 3
+    -0x1.343e0effe0b2cf5c4261140f67bbb9dbp-2,
+    0x1.0001d0p-1
+  },
+  { // Entry 4
+    0x1.bc41b9006f9ea191f8d77992988148e8p-11,
+    0x1.007ffep0
+  },
+  { // Entry 5
+    0x1.286d48f2328d1c51bb42649f1e36f51cp-10,
+    0x1.00aadcp0
+  },
+  { // Entry 6
+    0x1.3c3724fff9a66a1fc88c62753a01a093p-10,
+    0x1.00b648p0
+  },
+  { // Entry 7
+    0x1.b41066a765c47c650e3f2b65383836c5p-10,
+    0x1.00fb80p0
+  },
+  { // Entry 8
+    0x1.b4ede8ab7383b8e1ac6403842ab125e1p-10,
+    0x1.00fcp0
+  },
+  { // Entry 9
+    0x1.b606409a66ace2644d565b3bbe495b4bp-10,
+    0x1.00fca2p0
+  },
+  { // Entry 10
+    0x1.361702fff27220603ff5a74b9a7278a1p-2,
+    0x1.010fp1
+  },
+  { // Entry 11
+    0x1.30ecd6fe9803b26443d0a8c84cf88f49p-9,
+    0x1.0160p0
+  },
+  { // Entry 12
+    0x1.ad1561043e238a54f2968308b5b84a0ap-9,
+    0x1.01efdep0
+  },
+  { // Entry 13
+    0x1.add67b049b9eccb589d59f2e94044d4cp-9,
+    0x1.01f0bep0
+  },
+  { // Entry 14
+    0x1.b4181727e525aa3c9fe9bb81a1ea32f2p-9,
+    0x1.01f8p0
+  },
+  { // Entry 15
+    0x1.ba90af0300546714c91e69807716244bp-9,
+    0x1.01ff82p0
+  },
+  { // Entry 16
+    0x1.bf75c6fdd387cfc33e178c7140ff4a43p-9,
+    0x1.020530p0
+  },
+  { // Entry 17
+    0x1.c160fcfb3f11263df6c5479a7fc1f96ep-9,
+    0x1.02076ap0
+  },
+  { // Entry 18
+    0x1.c3b396fb7cc17548094cdeed806812d7p-9,
+    0x1.020a1cp0
+  },
+  { // Entry 19
+    0x1.041e5efff8637a181cab5a487e534f1cp5,
+    0x1.0220p108
+  },
+  { // Entry 20
+    0x1.deaf41009dde64cb85f68d09d2edf173p-9,
+    0x1.02296ep0
+  },
+  { // Entry 21
+    0x1.ecf47efdaeb10f5ade28ff93f4f44527p-9,
+    0x1.023ap0
+  },
+  { // Entry 22
+    0x1.f514f89756d667a2094b9aa6f5425a94p-8,
+    0x1.048cp0
+  },
+  { // Entry 23
+    -0x1.31add3ffcf191eb75b949d0c4b25562ep0,
+    0x1.06p-4
+  },
+  { // Entry 24
+    0x1.5d5eb8fffce13ef5613f5c26350b3ef3p-7,
+    0x1.065cd2p0
+  },
+  { // Entry 25
+    0x1.b02afb003def304a513c84d809f21238p-7,
+    0x1.07e4bcp0
+  },
+  { // Entry 26
+    0x1.e8296b002bba062b42b25642380152e2p-7,
+    0x1.08ef12p0
+  },
+  { // Entry 27
+    0x1.e9c5e90021ec01c297e475abe4ba42p-7,
+    0x1.08f6c0p0
+  },
+  { // Entry 28
+    -0x1.7d2b50ffff0186373287a99f0cecd28ep0,
+    0x1.09bcp-5
+  },
+  { // Entry 29
+    0x1.3a62cbffff2834d75a70360f6b9d64cfp0,
+    0x1.0e83a0p4
+  },
+  { // Entry 30
+    -0x1.7aa2bc000221055273bfa7fee62d0379p0,
+    0x1.0fdcp-5
+  },
+  { // Entry 31
+    0x1.d5bbd4fffd35c403bb0a652e9334f1e4p0,
+    0x1.1180p6
+  },
+  { // Entry 32
+    0x1.ef425287c21feec9c54e178d894354edp-6,
+    0x1.1274p0
+  },
+  { // Entry 33
+    -0x1.29297dffff901bb8ac5190eca10186b9p0,
+    0x1.1adcp-4
+  },
+  { // Entry 34
+    0x1.817dc8fccbc0fb5087e88f554f1908fdp-5,
+    0x1.1d4cp0
+  },
+  { // Entry 35
+    0x1.96aaacfefcf3bb8dcf3d8c94eb1423cap-5,
+    0x1.1fp0
+  },
+  { // Entry 36
+    0x1.a2d9334a67417635918aaf61a00994f0p-5,
+    0x1.1ffcp0
+  },
+  { // Entry 37
+    0x1.e32d32fa5c9d38509a7ba3e2bfb93574p-5,
+    0x1.253d24p0
+  },
+  { // Entry 38
+    0x1.55811effbe311325be81852b0556032cp-1,
+    0x1.294a50p2
+  },
+  { // Entry 39
+    -0x1.d7dae0fffee85f639c44d1f94b88a9aap-3,
+    0x1.2d363ap-1
+  },
+  { // Entry 40
+    -0x1.9ba71b0001bcb89106e975a5735cc54cp1,
+    0x1.3ecf84p-11
+  },
+  { // Entry 41
+    0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 42
+    0x1.879ecefffff999362de3e56a2a6ed238p2,
+    0x1.412668p20
+  },
+  { // Entry 43
+    0x1.c10343057f36be857e8738b6dfecd5dep-4,
+    0x1.498152p0
+  },
+  { // Entry 44
+    0x1.f237b389b8afaac4cac40f2695df7209p-4,
+    0x1.52bf2ap0
+  },
+  { // Entry 45
+    -0x1.e0e8f9e4b17e517c0a47404130e68838p-2,
+    0x1.5b43e2p-2
+  },
+  { // Entry 46
+    0x1.bce8b0000212bd563ade9f93343779fbp-2,
+    0x1.5c17p1
+  },
+  { // Entry 47
+    -0x1.d30fa3d9517968762410807be9c7cb7ep-2,
+    0x1.663fe0p-2
+  },
+  { // Entry 48
+    0x1.ca3f98fffffea806640e073c5b17da75p-2,
+    0x1.66b06ap1
+  },
+  { // Entry 49
+    -0x1.81bbccfffeb10074d0f87e9e6ab68f3fp-1,
+    0x1.695dp-3
+  },
+  { // Entry 50
+    -0x1.3442891155fedc1531e5c4a593f0e2f0p-3,
+    0x1.6a095cp-1
+  },
+  { // Entry 51
+    0x1.f28489002d32f29f766276e96f7f21aap4,
+    0x1.6aaaaap103
+  },
+  { // Entry 52
+    -0x1.7d9722fffffee06829536561f0f13e07p-1,
+    0x1.7028e2p-3
+  },
+  { // Entry 53
+    0x1.e39e45d51ccc5ba793598e2a5b79a0dfp-2,
+    0x1.7bbf06p1
+  },
+  { // Entry 54
+    -0x1.ffbfcbff9b381c31b8783059f0acf062p-4,
+    0x1.7ffffep-1
+  },
+  { // Entry 55
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.80p-1
+  },
+  { // Entry 56
+    -0x1.b40dd238181b3a9e0aacd04028af4a80p-2,
+    0x1.801e82p-2
+  },
+  { // Entry 57
+    -0x1.f9043300033a2fda0c9e8b664d0dfae2p-4,
+    0x1.8174c4p-1
+  },
+  { // Entry 58
+    -0x1.530ccb00030817c37d1894f62c055194p0,
+    0x1.8421p-5
+  },
+  { // Entry 59
+    -0x1.e2278820b34cd516815ccd9af00ec36cp-4,
+    0x1.867124p-1
+  },
+  { // Entry 60
+    -0x1.db11ed766abf432dc3c1bb4167a6eb47p-4,
+    0x1.88p-1
+  },
+  { // Entry 61
+    0x1.eb76a4317f935066a9dd258d69495f3bp-3,
+    0x1.bcd946p0
+  },
+  { // Entry 62
+    -0x1.e5a7d2fffbde5faba9ad1dafa9f8e25ep-1,
+    0x1.cd1eb6p-4
+  },
+  { // Entry 63
+    -0x1.e3e2e8000003707015334e8f6d4e1baep-1,
+    0x1.d0cdb4p-4
+  },
+  { // Entry 64
+    -0x1.46b528fff19f0db93b31ce66c94d4faap-1,
+    0x1.d739cep-3
+  },
+  { // Entry 65
+    -0x1.ffd158bd0b2827904af6cec4c6e1bbe4p-6,
+    0x1.dc7710p-1
+  },
+  { // Entry 66
+    0x1.c00806bb584a81d2425a4c449277a3c0p-1,
+    0x1.dffffep2
+  },
+  { // Entry 67
+    -0x1.a0ed34fffc666da4d52ec02aeafec305p-6,
+    0x1.e2dc9ap-1
+  },
+  { // Entry 68
+    0x1.e61002ffffc2d1e0983851bf24c9ce23p4,
+    0x1.e339a2p100
+  },
+  { // Entry 69
+    -0x1.3a6ae8fffd0faf4aca1345a2b412cb11p-6,
+    0x1.e9de50p-1
+  },
+  { // Entry 70
+    -0x1.9775a6e35532e99d0cf2384ab86d5473p-7,
+    0x1.f18c60p-1
+  },
+  { // Entry 71
+    -0x1.81f977002634432665d65d78d2968a65p2,
+    0x1.f40e5ep-21
+  },
+  { // Entry 72
+    -0x1.f62251ffffff968db3edbd69bcf5cfdcp1,
+    0x1.f4e26ap-14
+  },
+  { // Entry 73
+    -0x1.14f03effe1727a0c4e49b2a6bad88689p-7,
+    0x1.f621f6p-1
+  },
+  { // Entry 74
+    -0x1.f7c3f8ffbdab13a6cac3e1e31df4ebbfp-8,
+    0x1.f7047cp-1
+  },
+  { // Entry 75
+    -0x1.f63efaafb8883e9793490850e59689c5p-8,
+    0x1.f70b5cp-1
+  },
+  { // Entry 76
+    -0x1.f37d18ffb9ef3b0fef577217ed18e097p-8,
+    0x1.f717d6p-1
+  },
+  { // Entry 77
+    -0x1.def364ad9e50296b41e69bbd93d4b89dp-8,
+    0x1.f774cep-1
+  },
+  { // Entry 78
+    -0x1.d980a30635055b8d9b54edd672c858a3p-10,
+    0x1.fddffep-1
+  },
+  { // Entry 79
+    -0x1.be7cd6ffc9f63979c62763b7424b91b8p-10,
+    0x1.fdfef8p-1
+  },
+  { // Entry 80
+    -0x1.a0d0f2971f8c3359f07a6bb4fccab210p-10,
+    0x1.fe21p-1
+  },
+  { // Entry 81
+    -0x1.bd2a7f88f7e22e1fbeda7c34e78c5fbfp-11,
+    0x1.fefffep-1
+  },
+  { // Entry 82
+    -0x1.ad17eafff3e585f32e96d0e7c6897eaep-11,
+    0x1.ff093ap-1
+  },
+  { // Entry 83
+    -0x1.e1b20eab03fb3a4a3c1ca58716aa04d8p2,
+    0x1.ff1ffep-26
+  },
+  { // Entry 84
+    -0x1.bd42c8df31e3d447244cc720bd67faadp-12,
+    0x1.ff7fe8p-1
+  },
+  { // Entry 85
+    -0x1.bdb1f6cd42c7c46d6967bb003016e45bp-13,
+    0x1.ffbfe0p-1
+  },
+  { // Entry 86
+    -0x1.ca749c8706de8e46ee3cf5bf9a96ab1bp-14,
+    0x1.ffdf04p-1
+  },
+  { // Entry 87
+    -0x1.c600bcbce645991d16979edbbc0c311fp-14,
+    0x1.ffdf56p-1
+  },
+  { // Entry 88
+    -0x1.bd34cc84be200f8cb449c26c3f6763d1p-14,
+    0x1.ffdff8p-1
+  },
+  { // Entry 89
+    -0x1.bce164dc339f92c17cc22cb9a07458d6p-14,
+    0x1.ffdffep-1
+  },
+  { // Entry 90
+    -0x1.3443d0ffc8b4e8b31ed055e579024a80p-1,
+    0x1.fff9fep-3
+  },
+  { // Entry 91
+    -0x1.72de800001549031af6ca96747c1126fp4,
+    0x1.fffc7ep-78
+  },
+  { // Entry 92
+    0x1.344134ff8b51b7a013d2358e0089d30dp5,
+    0x1.fffffap127
+  },
+  { // Entry 93
+    -0x1.bcb7b30f2604868dab81d79e1f40443cp-25,
+    0x1.fffffcp-1
+  },
+  { // Entry 94
+    -0x1.3441360959c2bf17a59af37357663f09p-3,
+    0x1.6a09e6p-1
+  },
+  { // Entry 95
+    -0x1.8e271d6ab5d7ee84106f48e33b8cb8e0p-4,
+    0x1.995256p-1
+  },
+  { // Entry 96
+    -0x1.9762ba2f4a2198a2ce8974450be1661fp-5,
+    0x1.c89ac6p-1
+  },
+  { // Entry 97
+    -0x1.c694764682002f79a74b22bb7570477ep-8,
+    0x1.f7e336p-1
+  },
+  { // Entry 98
+    0x1.064661197381c71f1a9f9ac21e313749p-5,
+    0x1.1395d2p0
+  },
+  { // Entry 99
+    0x1.158bedc46861d0d27c114033f3db9a96p-4,
+    0x1.2b3a0ap0
+  },
+  { // Entry 100
+    0x1.9cd10befe72cc8a8ecfeacd70aed874ap-4,
+    0x1.42de42p0
+  },
+  { // Entry 101
+    0x1.0d42f94d71eab1a45a4e19f5a1d78fcbp-3,
+    0x1.5a827ap0
+  },
+  { // Entry 102
+    0x1.47f707c940c69c0e2b81a883c7fcf3e2p-3,
+    0x1.7226b2p0
+  },
+  { // Entry 103
+    0x1.7f08567d056a15ac18992a2573074fc1p-3,
+    0x1.89caeap0
+  },
+  { // Entry 104
+    0x1.b2e37e3ec1bd60c78ec0b821ea37604dp-3,
+    0x1.a16f22p0
+  },
+  { // Entry 105
+    0x1.e3e3215b7afa3355ef4ed63c72685ff3p-3,
+    0x1.b9135ap0
+  },
+  { // Entry 106
+    0x1.0929d68063288eaf1594278eb7b2fc8ep-2,
+    0x1.d0b792p0
+  },
+  { // Entry 107
+    0x1.1f3b15ea121ed378638c6e76b1a3108fp-2,
+    0x1.e85bcap0
+  },
+  { // Entry 108
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p1
+  },
+  { // Entry 109
+    -0x1.3441360959c2bf17a59af37357663f09p-3,
+    0x1.6a09e6p-1
+  },
+  { // Entry 110
+    -0x1.edc7b7d1726b9d3a32996762d45e780ap-4,
+    0x1.83e608p-1
+  },
+  { // Entry 111
+    -0x1.7af97b7bce8afc77122afb0375a2da53p-4,
+    0x1.9dc22ap-1
+  },
+  { // Entry 112
+    -0x1.0f219957375a31be41be4c43a6916104p-4,
+    0x1.b79e4cp-1
+  },
+  { // Entry 113
+    -0x1.52e86324d08348db62a1b30a19674a5cp-5,
+    0x1.d17a6ep-1
+  },
+  { // Entry 114
+    -0x1.2519f3a5667aea40e1f962a1f5d85c21p-6,
+    0x1.eb5690p-1
+  },
+  { // Entry 115
+    0x1.1f80654567c5aa07e1d9578dfde75b1fp-8,
+    0x1.02995ap0
+  },
+  { // Entry 116
+    0x1.a30a884b48ced10372c3c1f79d81055bp-6,
+    0x1.0f876cp0
+  },
+  { // Entry 117
+    0x1.7706deccbe15df9c9101690cc9b736b0p-5,
+    0x1.1c757ep0
+  },
+  { // Entry 118
+    0x1.0a965f582ad2d2cc3962364e72fabf4bp-4,
+    0x1.296390p0
+  },
+  { // Entry 119
+    0x1.564ba4450402b6d51b22231ee30056ecp-4,
+    0x1.3651a2p0
+  },
+  { // Entry 120
+    0x1.9ee99d1f81cea5262e8e5fa8308a4f10p-4,
+    0x1.433fb4p0
+  },
+  { // Entry 121
+    0x1.e4ae6049c4561ba2e5b54e4aef7ec1f7p-4,
+    0x1.502dc6p0
+  },
+  { // Entry 122
+    0x1.13e87df00be5c8e58f5f6baa00a8e9a8p-3,
+    0x1.5d1bd8p0
+  },
+  { // Entry 123
+    0x1.3441340a957d1f4a988a733cd68c06d7p-3,
+    0x1.6a09e6p0
+  },
+  { // Entry 124
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.80p-1
+  },
+  { // Entry 125
+    -0x1.5634641a3fd51681f12d3df90719aed0p-4,
+    0x1.a66666p-1
+  },
+  { // Entry 126
+    -0x1.76d86fdd61d0265fd8416f7297bd494fp-5,
+    0x1.ccccccp-1
+  },
+  { // Entry 127
+    -0x1.684c1a332d5dc3307d73c7ba25168d0fp-7,
+    0x1.f33332p-1
+  },
+  { // Entry 128
+    0x1.5b2a4774a2de2143d8ff5f649a50863bp-6,
+    0x1.0cccccp0
+  },
+  { // Entry 129
+    0x1.a30a9d609efe9c281982d7df7ae69259p-5,
+    0x1.20p0
+  },
+  { // Entry 130
+    0x1.445392859c560c3c9ed56125e21ba584p-4,
+    0x1.333334p0
+  },
+  { // Entry 131
+    0x1.b02b7b4804d6e3346e6f30fb0ed80ed8p-4,
+    0x1.466668p0
+  },
+  { // Entry 132
+    0x1.0aec747738c557211b21410621b26f8fp-3,
+    0x1.59999cp0
+  },
+  { // Entry 133
+    0x1.3b03516d50b3544158f589c768f946e6p-3,
+    0x1.6cccd0p0
+  },
+  { // Entry 134
+    0x1.68a288b60b7fc2b622430e540655f53bp-3,
+    0x1.80p0
+  },
+  { // Entry 135
+    0.0,
+    0x1.p0
+  },
+  { // Entry 136
+    0x1.e1a5e2df92e9e5bcc08d3839a3e54697p4,
+    0x1.p100
+  },
+  { // Entry 137
+    0x1.e24f6e426a8bf8a9e67a7799f8b17451p4,
+    0x1.19999ap100
+  },
+  { // Entry 138
+    0x1.e2ea367218863bc8fd2c0d9ac9c7623cp4,
+    0x1.333334p100
+  },
+  { // Entry 139
+    0x1.e3789929b904e81bc6f0e5158f365203p4,
+    0x1.4ccccep100
+  },
+  { // Entry 140
+    0x1.e3fc6d41682d18d8c703d601ddc1fa20p4,
+    0x1.666668p100
+  },
+  { // Entry 141
+    0x1.e47727fa42d490cc96bad253a3656436p4,
+    0x1.800002p100
+  },
+  { // Entry 142
+    0x1.e4e9f63a9eb204cd2dcd94b7ceca28a7p4,
+    0x1.99999cp100
+  },
+  { // Entry 143
+    0x1.e555ce20504ed691954bc10e175867a8p4,
+    0x1.b33336p100
+  },
+  { // Entry 144
+    0x1.e5bb7b8b3d22f0a25afb3f6c6877e417p4,
+    0x1.ccccd0p100
+  },
+  { // Entry 145
+    0x1.e61ba942b928956af0bafc1ad04f0b20p4,
+    0x1.e6666ap100
+  },
+  { // Entry 146
+    0x1.e676e7b3bac865798509830704412b23p4,
+    0x1.p101
+  },
+  { // Entry 147
+    -0x1.bcb7bf382c6fb3df0029e1e6c04e5b04p-22,
+    0x1.ffffe0p-1
+  },
+  { // Entry 148
+    -0x1.15f2d18a6400ab03be90bfceaa5447fbp-23,
+    0x1.fffff6p-1
+  },
+  { // Entry 149
+    0x1.4d89c115357d535c8f9533338e6883eap-23,
+    0x1.000006p0
+  },
+  { // Entry 150
+    0x1.bcb7a36cb15a8cec0c39b0a7cf2d7858p-22,
+    0x1.000010p0
+  },
+  { // Entry 151
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 152
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 153
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 154
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 155
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 156
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 158
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 160
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 161
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 162
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 163
+    0x1.344135067e308acf8abe721a7991fdb7p5,
+    0x1.fffffep127
+  },
+  { // Entry 164
+    -0x1.66d3e7bd9a402c6f2e2bc4c48abe02abp5,
+    0x1.p-149
+  },
+  { // Entry 165
+    -0x1.34413af333ae8c86c135ab5278494452p-3,
+    0x1.6a09e4p-1
+  },
+  { // Entry 166
+    -0x1.3441360959c2bf17a59af37357663f09p-3,
+    0x1.6a09e6p-1
+  },
+  { // Entry 167
+    -0x1.3441311f7fdde48753477d6b1af5d93dp-3,
+    0x1.6a09e8p-1
+  },
+  { // Entry 168
+    0x1.34412f20bb9151db7cefbb5db5a9018ep-3,
+    0x1.6a09e4p0
+  },
+  { // Entry 169
+    0x1.3441340a957d1f4a988a733cd68c06d7p-3,
+    0x1.6a09e6p0
+  },
+  { // Entry 170
+    0x1.344138f46f61f9daeadde94512fc6ca3p-3,
+    0x1.6a09e8p0
+  },
+  { // Entry 171
+    -0x1.344136c6af521ffb49335226ca8bbf4ap-2,
+    0x1.fffffep-2
+  },
+  { // Entry 172
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p-1
+  },
+  { // Entry 173
+    -0x1.344131908840c3c3db4f515285b11c22p-2,
+    0x1.000002p-1
+  },
+  { // Entry 174
+    -0x1.ffbfcbff9b381c31b8783059f0acf062p-4,
+    0x1.7ffffep-1
+  },
+  { // Entry 175
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.80p-1
+  },
+  { // Entry 176
+    -0x1.ffbfb977f3d4acee4eb0b360dbc6ec48p-4,
+    0x1.800002p-1
+  },
+  { // Entry 177
+    0x1.68a2841421a3d04961e94e83359bcdafp-3,
+    0x1.7ffffep0
+  },
+  { // Entry 178
+    0x1.68a288b60b7fc2b622430e540655f53bp-3,
+    0x1.80p0
+  },
+  { // Entry 179
+    0x1.68a28d57f55587eb16cd0cffc00ecfbcp-3,
+    0x1.800002p0
+  },
+  { // Entry 180
+    0x1.28132fbb336f7bcb34b70b00867dc9d5p-10,
+    0x1.00aaa8p0
+  },
+  { // Entry 181
+    0x1.2816a6db3131b6eda414e69eae447c9dp-10,
+    0x1.00aaaap0
+  },
+  { // Entry 182
+    0x1.281a1dfb280a4dd9abcda3a702e5258dp-10,
+    0x1.00aaacp0
+  },
+  { // Entry 183
+    0x1.3441342b9bc6d6cc0a0263f0bd2fd4c3p-1,
+    0x1.fffffep1
+  },
+  { // Entry 184
+    0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.p2
+  },
+  { // Entry 185
+    0x1.344136c6af4f84e7c0f4645adf9d2657p-1,
+    0x1.000002p2
+  },
+  { // Entry 186
+    0x1.3441334d3fedbe66f4f2148963668696p-2,
+    0x1.fffffep0
+  },
+  { // Entry 187
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p1
+  },
+  { // Entry 188
+    0x1.3441388366ff1a9e62d6155da84129bep-2,
+    0x1.000002p1
+  },
+  { // Entry 189
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 190
+    0.0,
+    0x1.p0
+  },
+  { // Entry 191
+    0x1.bcb7af95b6a1e1b102c8a40366dc2f73p-25,
+    0x1.000002p0
+  },
+  { // Entry 192
+    -0x1.344136c6af521ffb49335226ca8bbf4ap-2,
+    0x1.fffffep-2
+  },
+  { // Entry 193
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p-1
+  },
+  { // Entry 194
+    -0x1.344131908840c3c3db4f515285b11c22p-2,
+    0x1.000002p-1
+  },
+  { // Entry 195
+    -0x1.344135e853790796342302bf70c2711dp-1,
+    0x1.fffffep-3
+  },
+  { // Entry 196
+    -0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.p-2
+  },
+  { // Entry 197
+    -0x1.3441334d3ff0597a7d3102554e551f89p-1,
+    0x1.000002p-2
+  },
+  { // Entry 198
+    -0x1.ce61d06d4f48ff2ec3ac5c6b7c3f0295p-1,
+    0x1.fffffep-4
+  },
+  { // Entry 199
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.p-3
+  },
+  { // Entry 200
+    -0x1.ce61cdd23bc051130cba5c0159d1b101p-1,
+    0x1.000002p-3
+  },
+  { // Entry 201
+    -0x1.34413579258c7b63a99adb0bc3ddca06p0,
+    0x1.fffffep-5
+  },
+  { // Entry 202
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.p-4
+  },
+  { // Entry 203
+    -0x1.3441342b9bc82455ce21dad6b2a7213cp0,
+    0x1.000002p-4
+  },
+  { // Entry 204
+    -0x1.815182bba374772ff15f87e1c99c12c2p0,
+    0x1.fffffep-6
+  },
+  { // Entry 205
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.p-5
+  },
+  { // Entry 206
+    -0x1.8151816e19b0202215e687acb86569f8p0,
+    0x1.000002p-5
+  },
+  { // Entry 207
+    -0x1.ce61cffe215c72fc392434b7cf5a5b7ep0,
+    0x1.fffffep-7
+  },
+  { // Entry 208
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.p-6
+  },
+  { // Entry 209
+    -0x1.ce61ceb097981bee5dab3482be23b2b5p0,
+    0x1.000002p-6
+  },
+  { // Entry 210
+    -0x1.0db90ea04fa23764407470c6ea8c521dp1,
+    0x1.fffffep-8
+  },
+  { // Entry 211
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.p-7
+  },
+  { // Entry 212
+    -0x1.0db90df98ac00bdd52b7f0ac61f0fdb8p1,
+    0x1.000002p-7
+  },
+  { // Entry 213
+    -0x1.344135418e96354a6456c731ed6b767bp1,
+    0x1.fffffep-9
+  },
+  { // Entry 214
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.p-8
+  },
+  { // Entry 215
+    -0x1.3441349ac9b409c3769a471764d02216p1,
+    0x1.000002p-8
+  },
+  { // Entry 216
+    -0x1.5ac95be2cd8a333088391d9cf04a9ad9p1,
+    0x1.fffffep-10
+  },
+  { // Entry 217
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.p-9
+  },
+  { // Entry 218
+    -0x1.5ac95b3c08a807a99a7c9d8267af4674p1,
+    0x1.000002p-9
+  },
+  { // Entry 219
+    -0x1.815182840c7e3116ac1b7407f329bf37p1,
+    0x1.fffffep-11
+  },
+  { // Entry 220
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.p-10
+  },
+  { // Entry 221
+    -0x1.815181dd479c058fbe5ef3ed6a8e6ad2p1,
+    0x1.000002p-10
+  },
+  { // Entry 222
+    -0x1.f4e9f667c95a2ac917c27748fbc72c51p1,
+    0x1.fffffep-14
+  },
+  { // Entry 223
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.p-13
+  },
+  { // Entry 224
+    -0x1.f4e9f5c10477ff422a05f72e732bd7ecp1,
+    0x1.000002p-13
+  },
+  { // Entry 225
+    -0x1.f4e9f667c95a2ac917c27748fbc72c51p1,
+    0x1.fffffep-14
+  },
+  { // Entry 226
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.p-13
+  },
+  { // Entry 227
+    -0x1.f4e9f5c10477ff422a05f72e732bd7ecp1,
+    0x1.000002p-13
+  },
+  { // Entry 228
+    -0x1.ce61d06d4f48ff2ec3ac5c6b7c3f0295p-1,
+    0x1.fffffep-4
+  },
+  { // Entry 229
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.p-3
+  },
+  { // Entry 230
+    -0x1.ce61cdd23bc051130cba5c0159d1b101p-1,
+    0x1.000002p-3
+  },
+  { // Entry 231
+    -0x1.db11fd5867f8ff1cca049f4cb4fd8694p-5,
+    0x1.bffffep-1
+  },
+  { // Entry 232
+    -0x1.db11ed766abf432dc3c1bb4167a6eb47p-5,
+    0x1.c0p-1
+  },
+  { // Entry 233
+    -0x1.db11dd946d97ae16f51ada8f25bd4cc1p-5,
+    0x1.c00002p-1
+  },
+  { // Entry 234
+    -0x1.34413579258c7b63a99adb0bc3ddca06p0,
+    0x1.fffffep-5
+  },
+  { // Entry 235
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.p-4
+  },
+  { // Entry 236
+    -0x1.3441342b9bc82455ce21dad6b2a7213cp0,
+    0x1.000002p-4
+  },
+  { // Entry 237
+    -0x1.cb391a7364ac9eed883817f1ffc2150cp-6,
+    0x1.dffffep-1
+  },
+  { // Entry 238
+    -0x1.cb38fccd8bfdb696b29463658b991237p-6,
+    0x1.e0p-1
+  },
+  { // Entry 239
+    -0x1.cb38df27b36e6e15dbf9aa6e26e0527bp-6,
+    0x1.e00002p-1
+  },
+  { // Entry 240
+    -0x1.815182bba374772ff15f87e1c99c12c2p0,
+    0x1.fffffep-6
+  },
+  { // Entry 241
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.p-5
+  },
+  { // Entry 242
+    -0x1.8151816e19b0202215e687acb86569f8p0,
+    0x1.000002p-5
+  },
+  { // Entry 243
+    -0x1.c3d0bcd98b3edf45205cfdbb6aed1917p-7,
+    0x1.effffep-1
+  },
+  { // Entry 244
+    -0x1.c3d0837784c409cbf85d4dd61d426e1bp-7,
+    0x1.f0p-1
+  },
+  { // Entry 245
+    -0x1.c3d04a157e84703859e1417a8c326212p-7,
+    0x1.f00002p-1
+  },
+  { // Entry 246
+    -0x1.ce61cffe215c72fc392434b7cf5a5b7ep0,
+    0x1.fffffep-7
+  },
+  { // Entry 247
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.p-6
+  },
+  { // Entry 248
+    -0x1.ce61ceb097981bee5dab3482be23b2b5p0,
+    0x1.000002p-6
+  },
+  { // Entry 249
+    -0x1.c03af1a0115fb694dfc7e5305e350297p-8,
+    0x1.f7fffep-1
+  },
+  { // Entry 250
+    -0x1.c03a80ae5e05382d51f71b0f6602c76ap-8,
+    0x1.f8p-1
+  },
+  { // Entry 251
+    -0x1.c03a0fbcab1d766b7c26660812478675p-8,
+    0x1.f80002p-1
+  },
+  { // Entry 252
+    -0x1.0db90ea04fa23764407470c6ea8c521dp1,
+    0x1.fffffep-8
+  },
+  { // Entry 253
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.p-7
+  },
+  { // Entry 254
+    -0x1.0db90df98ac00bdd52b7f0ac61f0fdb8p1,
+    0x1.000002p-7
+  },
+  { // Entry 255
+    -0x1.be779d93c637ed8142930d32c760672cp-9,
+    0x1.fbfffep-1
+  },
+  { // Entry 256
+    -0x1.be76bd77b4fc30d6cb5e729fc0bd5fa5p-9,
+    0x1.fcp-1
+  },
+  { // Entry 257
+    -0x1.be75dd5ba4a253fcbfcde28906782f81p-9,
+    0x1.fc0002p-1
+  },
+  { // Entry 258
+    -0x1.344135418e96354a6456c731ed6b767bp1,
+    0x1.fffffep-9
+  },
+  { // Entry 259
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.p-8
+  },
+  { // Entry 260
+    -0x1.3441349ac9b409c3769a471764d02216p1,
+    0x1.000002p-8
+  },
+  { // Entry 261
+    -0x1.bd98604e0225c5f5bcfcaf2d317a9cb8p-10,
+    0x1.fdfffep-1
+  },
+  { // Entry 262
+    -0x1.bd96a1d7d9cbc28d1ed88eb987048038p-10,
+    0x1.fep-1
+  },
+  { // Entry 263
+    -0x1.bd94e361b331f5825874683d16a4fa02p-10,
+    0x1.fe0002p-1
+  },
+  { // Entry 264
+    -0x1.5ac95be2cd8a333088391d9cf04a9ad9p1,
+    0x1.fffffep-10
+  },
+  { // Entry 265
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.p-9
+  },
+  { // Entry 266
+    -0x1.5ac95b3c08a807a99a7c9d8267af4674p1,
+    0x1.000002p-9
+  },
+  { // Entry 267
+    -0x1.bd2a7f88f7e22e1fbeda7c34e78c5fbfp-11,
+    0x1.fefffep-1
+  },
+  { // Entry 268
+    -0x1.bd27045bfd024b0eb5a690199f7d311fp-11,
+    0x1.ffp-1
+  },
+  { // Entry 269
+    -0x1.bd23892f059f536c854c6b13c5a3b7bfp-11,
+    0x1.ff0002p-1
+  },
+  { // Entry 270
+    -0x1.815182840c7e3116ac1b7407f329bf37p1,
+    0x1.fffffep-11
+  },
+  { // Entry 271
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.p-10
+  },
+  { // Entry 272
+    -0x1.815181dd479c058fbe5ef3ed6a8e6ad2p1,
+    0x1.000002p-10
+  },
+  { // Entry 273
+    -0x1.bcf6462a1921118a3b66f92fb7c60797p-12,
+    0x1.ff7ffep-1
+  },
+  { // Entry 274
+    -0x1.bcef518e29611a506bc6531e97655414p-12,
+    0x1.ff80p-1
+  },
+  { // Entry 275
+    -0x1.bce85cf240977c99419983a95dfa8d28p-12,
+    0x1.ff8002p-1
+  },
+  { // Entry 276
+    -0x1.f4e9f667c95a2ac917c27748fbc72c51p1,
+    0x1.fffffep-14
+  },
+  { // Entry 277
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.p-13
+  },
+  { // Entry 278
+    -0x1.f4e9f5c10477ff422a05f72e732bd7ecp1,
+    0x1.000002p-13
+  },
+  { // Entry 279
+    -0x1.bcf63d094f7a45ef4f9d2bcde45ded2fp-15,
+    0x1.ffeffep-1
+  },
+  { // Entry 280
+    -0x1.bcbea45643c7c4b46503e30e59b7dd28p-15,
+    0x1.fff0p-1
+  },
+  { // Entry 281
+    -0x1.bc870ba36fafb33cddcf17f055436437p-15,
+    0x1.fff002p-1
+  },
+  { // Entry 282
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 283
+    0x1.344135067e308acf8abe721a7991fdb7p5,
+    0x1.fffffep127
+  },
+  { // Entry 284
+    0x1.3441350304c122f48700992168f1c477p5,
+    0x1.fffffcp127
+  },
+  { // Entry 285
+    0x1.fd14dc015a2443dc8d1c9a7a4ead7c44p-2,
+    0x1.921fb6p1
+  },
+  { // Entry 286
+    0x1.91a74deec508a956dc13ce446f68b2a7p-3,
+    0x1.921fb6p0
+  },
+  { // Entry 287
+    0x1.bcb7af95b6a1e1b102c8a40366dc2f73p-25,
+    0x1.000002p0
+  },
+  { // Entry 288
+    0.0,
+    0x1.p0
+  },
+  { // Entry 289
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 290
+    -0x1.adb6384a546e6a16c42330d77d132671p-4,
+    0x1.921fb6p-1
+  },
+  { // Entry 291
+    -0x1.2f70302edce2b11d800ee1c6ab7aae56p5,
+    0x1.000002p-126
+  },
+  { // Entry 292
+    -0x1.2f703035cfc16f745a96688ab69d3e64p5,
+    0x1.p-126
+  },
+  { // Entry 293
+    -0x1.2f70303cc2a03bb0f2a882c164a49cddp5,
+    0x1.fffffcp-127
+  },
+  { // Entry 294
+    -0x1.2f703043b57f15d3487cc76186a378f6p5,
+    0x1.fffff8p-127
+  },
+  { // Entry 295
+    -0x1.646b65538650ec90cbed9f5dda901065p5,
+    0x1.p-148
+  },
+  { // Entry 296
+    -0x1.66d3e7bd9a402c6f2e2bc4c48abe02abp5,
+    0x1.p-149
+  },
+  { // Entry 297
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 298
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 299
+    0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 300
+    0x1.p1,
+    0x1.90p6
+  },
+  { // Entry 301
+    0x1.80p1,
+    0x1.f4p9
+  }
+};
diff --git a/tests/math_data/log1p_intel_data.h b/tests/math_data/log1p_intel_data.h
new file mode 100644
index 0000000..12118ea
--- /dev/null
+++ b/tests/math_data/log1p_intel_data.h
@@ -0,0 +1,1486 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_log1p_intel_data[] = {
+  { // Entry 0
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1
+    -0x1.0415d89e74446809b5d7e16e90dcfb17p-5,
+    -0x1.0000000000002p-5
+  },
+  { // Entry 2
+    -0x1.269621334db92803beb76a16b5547d4dp-2,
+    -0x1.000000180p-2
+  },
+  { // Entry 3
+    -0x1.00080000000008008002000000555d55p-52,
+    -0x1.00080p-52
+  },
+  { // Entry 4
+    -0x1.001000000040080040001559559556b2p-41,
+    -0x1.001p-41
+  },
+  { // Entry 5
+    -0x1.65724c2110f35416c9322de1fbce6ea0p-2,
+    -0x1.2dba262a7c8b0p-2
+  },
+  { // Entry 6
+    -0x1.5af4179028eb7638f1145bd433d6c831p-11,
+    -0x1.5ad6b5ad6b5b0p-11
+  },
+  { // Entry 7
+    -0x1.74fc36f06cd5b7ffd79b0ff90a64bb6ep-6,
+    -0x1.70c58e67b7aeap-6
+  },
+  { // Entry 8
+    -0x1.d62e0cd7372ac11cfb2f285d279dc3d4p-2,
+    -0x1.7905b82a1839dp-2
+  },
+  { // Entry 9
+    -0x1.7d9c1debf082f7fe3df487d0e4823676p-6,
+    -0x1.793331eece596p-6
+  },
+  { // Entry 10
+    -0x1.e148a1a2726cbfb45f343d2e78b71a51p-2,
+    -0x1.7ffffffffffffp-2
+  },
+  { // Entry 11
+    -0x1.9baf61134c048801e3731883b65290b3p-5,
+    -0x1.9182fde7e3318p-5
+  },
+  { // Entry 12
+    -0x1.ff93ccbd3124237a5b3cf16c47c915c9p-2,
+    -0x1.92a7fc86dcbd9p-2
+  },
+  { // Entry 13
+    -0x1.8feb5ba3c5b0d7fddffe1b9133bd3827p0,
+    -0x1.94a5294a5294cp-1
+  },
+  { // Entry 14
+    -0x1.e265a1d9483178002922dd984d33f198p-4,
+    -0x1.c712d0d7f0490p-4
+  },
+  { // Entry 15
+    -0x1.cd4e4c03a55707e868994265170eefb8p-10,
+    -0x1.cce673399cce8p-10
+  },
+  { // Entry 16
+    -0x1.e5df7f9b307ac000115f8473c90fb515p-9,
+    -0x1.e4f93e4f93e50p-9
+  },
+  { // Entry 17
+    -0x1.f96ef48ecd4037fe220ffae33fef5d04p-5,
+    -0x1.ea28302403580p-5
+  },
+  { // Entry 18
+    -0x1.fdd09f73d7f688dd5508c770fe7b7a9fp-5,
+    -0x1.ee4675d0ac9aap-5
+  },
+  { // Entry 19
+    -0x1.ffffffffffe4b72dd5ac98791a728e1fp-5,
+    -0x1.f0540438fd429p-5
+  },
+  { // Entry 20
+    -0x1.ff7fac9bb11607daf86980492f147eedp-10,
+    -0x1.ff0001ffffffep-10
+  },
+  { // Entry 21
+    -0x1.ffe7fffffffff7ff40047fffffaaaaaap-54,
+    -0x1.ffe7fffffffffp-54
+  },
+  { // Entry 22
+    -0x1.4cb9ed50b6bc79d44d301801ce0ff6f3p4,
+    -0x1.fffffff801fffp-1
+  },
+  { // Entry 23
+    -0x1.57cd0e3026827bbcd5d3d6a532515bd1p4,
+    -0x1.fffffffbfffffp-1
+  },
+  { // Entry 24
+    -0x1.002005545508732d7b57a1ec86bd5c7ap-10,
+    -0x1.fffffffc0p-11
+  },
+  { // Entry 25
+    -0x1.08598b57c1806001dbb99c0aebf44bdep-4,
+    -0x1.fffffffc0003fp-5
+  },
+  { // Entry 26
+    -0x1.08598b58e3a06001bf513750331fb25cp-4,
+    -0x1.fffffffe1ffffp-5
+  },
+  { // Entry 27
+    -0x1.ffffffff000007fffffff800002aacaap-54,
+    -0x1.ffffffff0p-54
+  },
+  { // Entry 28
+    -0x1.00000000001ff7fffffff54d55555547p-40,
+    -0x1.ffffffffff3ffp-41
+  },
+  { // Entry 29
+    -0x1.ffffffffffffeffffffffffffeaaaaaap-53,
+    -0x1.ffffffffffffep-53
+  },
+  { // Entry 30
+    0x1.ffffffffff0000000000aaaaaaaaaa2ap-41,
+    0x1.0p-40
+  },
+  { // Entry 31
+    0x1.ffffffffffffffffffffffffffffffp-121,
+    0x1.0p-120
+  },
+  { // Entry 32
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 33
+    0x1.fffffffffffffffffffffffffeaaaaaap-52,
+    0x1.0000000000001p-51
+  },
+  { // Entry 34
+    0x1.00000000000007ffffffffffff555555p-52,
+    0x1.0000000000001p-52
+  },
+  { // Entry 35
+    0x1.9f323ecbf9855480be2cbc494f93df36p-2,
+    0x1.0000000000007p-1
+  },
+  { // Entry 36
+    0x1.ffffffffffc0000000000aaaaaaaaaa8p-42,
+    0x1.00000000002p-41
+  },
+  { // Entry 37
+    0x1.ffffffffffdffffffffffaaaaaaaaaaep-42,
+    0x1.00000000003p-41
+  },
+  { // Entry 38
+    0x1.ffe002ae6a31006877edb3328bd3ae91p-12,
+    0x1.00000001fffffp-11
+  },
+  { // Entry 39
+    0x1.9f323f094c68a8000013901093412da6p-2,
+    0x1.0000002dfe2afp-1
+  },
+  { // Entry 40
+    0x1.9f323f094c692800000be5b40e615d2dp-2,
+    0x1.0000002dfe2b5p-1
+  },
+  { // Entry 41
+    0x1.193ea82ad0308976a42437ffabe62762p0,
+    0x1.000000cp1
+  },
+  { // Entry 42
+    0x1.f0b21b0c9a27f7973092bef2b8a18d80p-5,
+    0x1.00080p-4
+  },
+  { // Entry 43
+    0x1.1ace1631f668001f17e5430537a94f9fp5,
+    0x1.00080p51
+  },
+  { // Entry 44
+    0x1.000fffffffbff7ffc0001559559556a2p-41,
+    0x1.001p-41
+  },
+  { // Entry 45
+    0x1.f31cdeeb3cd4c7c0a3e945ad856befcbp4,
+    0x1.00cp45
+  },
+  { // Entry 46
+    0x1.206360b7e569587b36009d7c942d4f3cp5,
+    0x1.014p52
+  },
+  { // Entry 47
+    0x1.f333a5f5edb1b76e16684e60b7181719p-5,
+    0x1.015cdfc51f91cp-4
+  },
+  { // Entry 48
+    0x1.64892563f80250000b60adaac677e2eap-1,
+    0x1.01a5a2b15fc5cp0
+  },
+  { // Entry 49
+    0x1.0482afcf527d98002bc41c40cd3b44c5p-23,
+    0x1.0482b0d86c362p-23
+  },
+  { // Entry 50
+    0x1.045dcf2cb15f57fe3f2ed152226368c8p-5,
+    0x1.088c59ac8c7d1p-5
+  },
+  { // Entry 51
+    0x1.015e05876e3e67fff047c696eba44ba2p-4,
+    0x1.09ap-4
+  },
+  { // Entry 52
+    0x1.0b6515d81d9732694cd7ec512fc6f1b4p-11,
+    0x1.0b768b5ad8019p-11
+  },
+  { // Entry 53
+    0x1.b346a1d28f44d7fdcee7a0bd07405845p-2,
+    0x1.0f35566ed3cc2p-1
+  },
+  { // Entry 54
+    0x1.b3cce9b7221757feb43dcf531070c894p0,
+    0x1.1f27c14e425b9p2
+  },
+  { // Entry 55
+    0x1.fbc379bd13a6b00091e8da2307a3712fp-3,
+    0x1.202p-2
+  },
+  { // Entry 56
+    0x1.2140a33ee4f537fe4de38bae4056e098p-5,
+    0x1.266b753946441p-5
+  },
+  { // Entry 57
+    0x1.d6bfbea5ab7fd4c43b30348da32e2a7dp-2,
+    0x1.2ad0c02f60402p-1
+  },
+  { // Entry 58
+    0x1.c09da5a8b37876f669efaffd93412f9ap0,
+    0x1.312e7b7be62a5p2
+  },
+  { // Entry 59
+    0x1.e3a91d4d7516cb9db08fd3c3cf7d40cap-2,
+    0x1.351a8d46a35p-1
+  },
+  { // Entry 60
+    0x1.f128f5faf06ecb35c83b1131cf5d73d5p-2,
+    0x1.4p-1
+  },
+  { // Entry 61
+    0x1.f1ee31f14d4f17ffde2f2fe766dfc318p-2,
+    0x1.40a0502814080p-1
+  },
+  { // Entry 62
+    0x1.41e3e450b6073001c502b22fec3ab4d7p-5,
+    0x1.484c43acc194cp-5
+  },
+  { // Entry 63
+    0x1.4d9ff934d99f37ff40fd39eb618dcd3ap-21,
+    0x1.4dap-21
+  },
+  { // Entry 64
+    0x1.a0711f9b475687ffffd2981b5b49910ep2,
+    0x1.4e5fffff0p9
+  },
+  { // Entry 65
+    0x1.e1905175711a17c09fd40254fad72ae8p4,
+    0x1.56f3052920ef0p43
+  },
+  { // Entry 66
+    0x1.4f7ef3b13e1fa800361c4277dfa1092ap-4,
+    0x1.5d9e6884d6ac2p-4
+  },
+  { // Entry 67
+    0x1.e45c01e8c233cffe5ac108bc6c123bfap0,
+    0x1.688p2
+  },
+  { // Entry 68
+    0x1.c34366179d4258048e0ec51c6fefd58cp-1,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 69
+    0x1.e2af1644433ac7c03096da53cf28c18ap4,
+    0x1.6fd1ffb140878p43
+  },
+  { // Entry 70
+    0x1.6392a510033287ffc3d40d8ce33d1627p-4,
+    0x1.73767fd8537b3p-4
+  },
+  { // Entry 71
+    0x1.d36a35aaae768800f77be0b2a29e40b7p-1,
+    0x1.7dd89e50e078ep0
+  },
+  { // Entry 72
+    0x1.83ffed9f8129180039f0eacf23501c34p-20,
+    0x1.840p-20
+  },
+  { // Entry 73
+    0x1.8996381ef2cb67ff2c1a031d8e88fa81p-8,
+    0x1.8ac562b158ac4p-8
+  },
+  { // Entry 74
+    0x1.926499264fd877fe77bab85881dbab74p-43,
+    0x1.926499265p-43
+  },
+  { // Entry 75
+    0x1.e737cb23865c6b921552ad81d572b729p-1,
+    0x1.970p0
+  },
+  { // Entry 76
+    0x1.588c2de5e88db000000ea4e59847d15cp-2,
+    0x1.99999a1030f9dp-2
+  },
+  { // Entry 77
+    0x1.588c2df2c02057ffffefc30ff25d79ddp-2,
+    0x1.99999a222b93fp-2
+  },
+  { // Entry 78
+    0x1.756501be3e242800001019cd7cd7ce3fp-3,
+    0x1.99999a598c15cp-3
+  },
+  { // Entry 79
+    0x1.756502257dbf5000000bc0ddc72156fap-3,
+    0x1.99999ad572033p-3
+  },
+  { // Entry 80
+    0x1.8663f9903e12effffff039fafc6b5f67p-4,
+    0x1.99999bc8ec375p-4
+  },
+  { // Entry 81
+    0x1.9bd8abb150fbd005aa9e2ed5a074a08ep-21,
+    0x1.9bd8b60b96e2fp-21
+  },
+  { // Entry 82
+    0x1.9955bad1e36537ffd7fd8448d392de25p-7,
+    0x1.9be6f9be6f9b1p-7
+  },
+  { // Entry 83
+    0x1.5ba06e3fb01a2d107ec5201223f00bbbp-2,
+    0x1.9dead086a58cdp-2
+  },
+  { // Entry 84
+    0x1.5f1a557f41f26cc673db4f91686a3758p-2,
+    0x1.a2ce8df554b2cp-2
+  },
+  { // Entry 85
+    0x1.62405ebd6ab333837c8a77026ab4aae8p-2,
+    0x1.a74p-2
+  },
+  { // Entry 86
+    0x1.f5f73d69114c2b85b3b151d45a33d0e5p-1,
+    0x1.aa6p0
+  },
+  { // Entry 87
+    0x1.b229fbeca7781fffe6f5fdb97b7242c6p-5,
+    0x1.bdep-5
+  },
+  { // Entry 88
+    0x1.bc21a8cfe0c4178b34990a731d3fbd15p-5,
+    0x1.c86432190c8p-5
+  },
+  { // Entry 89
+    0x1.07952367af5c880000105e2b54a5a062p0,
+    0x1.cccccced2ed7ep0
+  },
+  { // Entry 90
+    0x1.c1de8bc3181ba001c1b60c40eff90650p-5,
+    0x1.ce7375b5023c4p-5
+  },
+  { // Entry 91
+    0x1.d59efda67795a800fddf8c5bba4a60b3p-43,
+    0x1.d59efda677cb8p-43
+  },
+  { // Entry 92
+    0x1.d80158c4069057ff768740aa80c0bd66p-7,
+    0x1.db6bcf502f3e0p-7
+  },
+  { // Entry 93
+    0x1.dfeabe29b510312e8367f414b0511949p-11,
+    0x1.e022fd930f86ap-11
+  },
+  { // Entry 94
+    0x1.8a9a59caf11980a5915d2b6b7cf2553dp-2,
+    0x1.e16b24d38d1b2p-2
+  },
+  { // Entry 95
+    0x1.8f11e873662c77e1769d569868a65e72p-2,
+    0x1.e80p-2
+  },
+  { // Entry 96
+    0x1.dd166106e87f37622aac2c908d6aaf91p-5,
+    0x1.eb40e151fad81p-5
+  },
+  { // Entry 97
+    0x1.ec80ffffffc4b7fe6ff009824ddc235ap-43,
+    0x1.ec80fffffffffp-43
+  },
+  { // Entry 98
+    0x1.edf52c2e34740b24b736dca45fb4ae9ep-13,
+    0x1.ee0410e3b1d24p-13
+  },
+  { // Entry 99
+    0x1.f02717d855569ffe85bb9f224358afeap-6,
+    0x1.f7bdd6789c670p-6
+  },
+  { // Entry 100
+    0x1.fbfffffffe07e80000029aea55555174p-40,
+    0x1.fbfffffffffffp-40
+  },
+  { // Entry 101
+    0x1.fbfffffffe07f80000029aca95555174p-40,
+    0x1.fc0p-40
+  },
+  { // Entry 102
+    0x1.367799dc39a238068eae0d5339eafee2p5,
+    0x1.fc00000000006p55
+  },
+  { // Entry 103
+    0x1.ffc7ffffff0027fcf000aa82af0a71p-41,
+    0x1.ffc7fffffffffp-41
+  },
+  { // Entry 104
+    0x1.ffdfffffffffe800fff8000000aa9aabp-54,
+    0x1.ffdffffffffffp-54
+  },
+  { // Entry 105
+    0x1.fff7fffffefff7fff000aab2aa8aa9ffp-41,
+    0x1.fff7fffffffffp-41
+  },
+  { // Entry 106
+    0x1.fff7ffffffffe8003fff800000aaa6aap-54,
+    0x1.fff7fffffffffp-54
+  },
+  { // Entry 107
+    0x1.c55179395a000800ddc334790469d4dep7,
+    0x1.fffffe3ffffffp326
+  },
+  { // Entry 108
+    0x1.ffc00aa4ac10abd44706d89cf12892a3p-11,
+    0x1.fffffffbfffffp-11
+  },
+  { // Entry 109
+    0x1.ffc00aa7ab50ebc44bf56111ce332375p-11,
+    0x1.ffffffff0p-11
+  },
+  { // Entry 110
+    0x1.25e4f7b2737f9fc486612173c6596892p5,
+    0x1.ffffffffffff8p52
+  },
+  { // Entry 111
+    0x1.62e42fefa39ef33793c7673007e1ed5ep9,
+    0x1.ffffffffffff8p1023
+  },
+  { // Entry 112
+    0x1.9f323ecbf98489d61382119eae69348bp-2,
+    0x1.ffffffffffffbp-2
+  },
+  { // Entry 113
+    0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    0x1.ffffffffffffep502
+  },
+  { // Entry 114
+    0x1.11d14e1fcb72edcb28a032e083a6f199p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 115
+    0x1.2ccac6c8f41b74d6b733c9141c0bece5p-1,
+    0x1.995255f2d00abp-1
+  },
+  { // Entry 116
+    0x1.466a9269707376e50187259ee2b04818p-1,
+    0x1.c89ac57dac58ap-1
+  },
+  { // Entry 117
+    0x1.5ed1a7dce11ace55a3cdbe341ee88222p-1,
+    0x1.f7e3350888a69p-1
+  },
+  { // Entry 118
+    0x1.761c7d9dddc01d509dcb9b4ebceca84ep-1,
+    0x1.1395d249b27a4p0
+  },
+  { // Entry 119
+    0x1.8c63d27d4ca03daba8c98a232b2380f0p-1,
+    0x1.2b3a0a0f20a14p0
+  },
+  { // Entry 120
+    0x1.a1bd4c77d55363ab3b61dc89f7812c71p-1,
+    0x1.42de41d48ec84p0
+  },
+  { // Entry 121
+    0x1.b63bf7baf5eaa6eadec65ed0408ff964p-1,
+    0x1.5a827999fcef4p0
+  },
+  { // Entry 122
+    0x1.c9f0ad341cbebd1d84ae0c2674a34983p-1,
+    0x1.7226b15f6b164p0
+  },
+  { // Entry 123
+    0x1.dcea661b59e7f2a61f64bc6d943ab5aep-1,
+    0x1.89cae924d93d4p0
+  },
+  { // Entry 124
+    0x1.ef36808e501ff5bc97de3be617ad08b5p-1,
+    0x1.a16f20ea47644p0
+  },
+  { // Entry 125
+    0x1.00707c29c4643ea6f53f2c0edcf3f90ep0,
+    0x1.b91358afb58b4p0
+  },
+  { // Entry 126
+    0x1.08fa4b129d365103d8615b0fee830753p0,
+    0x1.d0b7907523b24p0
+  },
+  { // Entry 127
+    0x1.113d8baca8608c19974ff89c21cc8d16p0,
+    0x1.e85bc83a91d94p0
+  },
+  { // Entry 128
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.0p1
+  },
+  { // Entry 129
+    0x1.11d14e1fcb72edcb28a032e083a6f199p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 130
+    0x1.26990e07e25825de21cb52e655390d9ap-1,
+    0x1.8e3e170bf282dp-1
+  },
+  { // Entry 131
+    0x1.3a914a1db8cc3855d200ca3202e23d04p-1,
+    0x1.b27247aff148ep-1
+  },
+  { // Entry 132
+    0x1.4dc997cbf2ed6806315c6962614b41f2p-1,
+    0x1.d6a67853f00efp-1
+  },
+  { // Entry 133
+    0x1.604fdb515451526fcf632e2255d97ef2p-1,
+    0x1.fadaa8f7eed50p-1
+  },
+  { // Entry 134
+    0x1.72308447c51665ec8f42f6c1c2f51294p-1,
+    0x1.0f876ccdf6cd9p0
+  },
+  { // Entry 135
+    0x1.8376bff406f913a3579a23f2e932df57p-1,
+    0x1.21a1851ff630ap0
+  },
+  { // Entry 136
+    0x1.942ca35e8f18f3591aded43add2260dbp-1,
+    0x1.33bb9d71f593bp0
+  },
+  { // Entry 137
+    0x1.a45b4ec4852597b4ab8fdd6275a5c1f7p-1,
+    0x1.45d5b5c3f4f6cp0
+  },
+  { // Entry 138
+    0x1.b40b0b9a489f168f5ffc2c60ac5bd06ap-1,
+    0x1.57efce15f459dp0
+  },
+  { // Entry 139
+    0x1.c34366179d426545cadbc394096e719bp-1,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 140
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.8p-1
+  },
+  { // Entry 141
+    0x1.34024ac47b6fcebf994c642ef7a882adp-1,
+    0x1.a666666666666p-1
+  },
+  { // Entry 142
+    0x1.48a11293d785b50c2a3feb14c3680501p-1,
+    0x1.cccccccccccccp-1
+  },
+  { // Entry 143
+    0x1.5c73760b3c362e51806f6a2fcb5402b3p-1,
+    0x1.f333333333332p-1
+  },
+  { // Entry 144
+    0x1.6f88b286b22f0a5f70b8ce35df42c80ap-1,
+    0x1.0ccccccccccccp0
+  },
+  { // Entry 145
+    0x1.81ee60afb5018aaa0181c98fe3d11e57p-1,
+    0x1.1ffffffffffffp0
+  },
+  { // Entry 146
+    0x1.93b0aee21c2c6f1afb29632c77f0434bp-1,
+    0x1.3333333333332p0
+  },
+  { // Entry 147
+    0x1.a4da91c611dbcf17d743bad01121e91dp-1,
+    0x1.4666666666665p0
+  },
+  { // Entry 148
+    0x1.b575ed0743492c8aacff60d5920dffc4p-1,
+    0x1.5999999999998p0
+  },
+  { // Entry 149
+    0x1.c58bb5a60978a15095fe55861acca737p-1,
+    0x1.6cccccccccccbp0
+  },
+  { // Entry 150
+    0x1.d5240f0e0e07606e918e49626c8f05e6p-1,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 151
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p0
+  },
+  { // Entry 152
+    0x1.7bdf362e9666e2dc442baf4dc625807dp-1,
+    0x1.199999999999ap0
+  },
+  { // Entry 153
+    0x1.93b0aee21c2c8c3240fad7898f606525p-1,
+    0x1.3333333333334p0
+  },
+  { // Entry 154
+    0x1.aa73108717b6b240250c5393b356e40ap-1,
+    0x1.4cccccccccccep0
+  },
+  { // Entry 155
+    0x1.c03d703735f8e1920627f4336073fe78p-1,
+    0x1.6666666666668p0
+  },
+  { // Entry 156
+    0x1.d5240f0e0e0793a1c4c17c959fc23919p-1,
+    0x1.8000000000002p0
+  },
+  { // Entry 157
+    0x1.e938cbceb16defcbb921fdd58d5dd567p-1,
+    0x1.999999999999cp0
+  },
+  { // Entry 158
+    0x1.fc8b7f138bdeb93fee2e78b4fe3e0831p-1,
+    0x1.b333333333336p0
+  },
+  { // Entry 159
+    0x1.0795235c1ea1ca8c0592ee75b4579a8ep0,
+    0x1.cccccccccccd0p0
+  },
+  { // Entry 160
+    0x1.1090e20315213b2ddb45c328435c3ca7p0,
+    0x1.e66666666666ap0
+  },
+  { // Entry 161
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.0p1
+  },
+  { // Entry 162
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 163
+    -0x1.3217b0fd2b116908897cb1050beea205p-1,
+    -0x1.ccccccccccccdp-2
+  },
+  { // Entry 164
+    -0x1.058aefa811451fc7cc1184d75997dc44p-1,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 165
+    -0x1.b91f28212ba0379f7a6379b28d1ba9b7p-2,
+    -0x1.6666666666667p-2
+  },
+  { // Entry 166
+    -0x1.6d3c324e13f4fe9befad50a0273411c8p-2,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 167
+    -0x1.269621134db93cd9140cbcc16037fb86p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 168
+    -0x1.c8ff7c79a9a24ac25d81ef2ffc2a24aep-3,
+    -0x1.999999999999cp-3
+  },
+  { // Entry 169
+    -0x1.4cd6b9796417b5f11f10de290430b32bp-3,
+    -0x1.3333333333336p-3
+  },
+  { // Entry 170
+    -0x1.af8e8210a41636e61283e0400e72f380p-4,
+    -0x1.999999999999fp-4
+  },
+  { // Entry 171
+    -0x1.a431d5bcc1942814e94f55ea2e15d5f4p-5,
+    -0x1.99999999999a4p-5
+  },
+  { // Entry 172
+    -0x1.400000000000032000000000000a6aaap-54,
+    -0x1.4p-54
+  },
+  { // Entry 173
+    0.0,
+    0.0
+  },
+  { // Entry 174
+    0x1.8fb063ef2c7e9cdd4f691425091f8212p-5,
+    0x1.999999999999ap-5
+  },
+  { // Entry 175
+    0x1.8663f793c46c6f8f982725b4f7100a62p-4,
+    0x1.999999999999ap-4
+  },
+  { // Entry 176
+    0x1.1e3b825dd05ec3fb503515bb34638d41p-3,
+    0x1.3333333333334p-3
+  },
+  { // Entry 177
+    0x1.7565011e496768e9c982340d63fd99bep-3,
+    0x1.999999999999ap-3
+  },
+  { // Entry 178
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.0p-2
+  },
+  { // Entry 179
+    0x1.0ca937be1b9dbb5e7217a3726f197837p-2,
+    0x1.3333333333333p-2
+  },
+  { // Entry 180
+    0x1.334e9e47d07f44b44307069827b79584p-2,
+    0x1.6666666666666p-2
+  },
+  { // Entry 181
+    0x1.588c2d913348f380eebceb76c4296aeap-2,
+    0x1.9999999999999p-2
+  },
+  { // Entry 182
+    0x1.7c7b282d0d46adc1a6a2b9d712581488p-2,
+    0x1.cccccccccccccp-2
+  },
+  { // Entry 183
+    0x1.9f323ecbf984b480be2cbc495a69348bp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 184
+    -0x1.7f7427b73e38f503b99f86230b9f8fa9p1,
+    -0x1.e666666666666p-1
+  },
+  { // Entry 185
+    -0x1.26bb1bbb5551382dd4adac5709a61451p1,
+    -0x1.cccccccccccccp-1
+  },
+  { // Entry 186
+    -0x1.e5a9a7c3ac414090cf257ef11203a29dp0,
+    -0x1.b333333333332p-1
+  },
+  { // Entry 187
+    -0x1.9c041f7ed8d2f6afdf77a5160f5931f4p0,
+    -0x1.9999999999998p-1
+  },
+  { // Entry 188
+    -0x1.62e42fefa39eb35793c767300fe5ed5ep0,
+    -0x1.7fffffffffffep-1
+  },
+  { // Entry 189
+    -0x1.34378fcbda71c6e50541cb590e10abedp0,
+    -0x1.6666666666664p-1
+  },
+  { // Entry 190
+    -0x1.0cc1248b56cc74c07caa7576f1233f0cp0,
+    -0x1.4cccccccccccap-1
+  },
+  { // Entry 191
+    -0x1.d5240f0e0e06fa082b27e2fc16cc768ap-1,
+    -0x1.3333333333330p-1
+  },
+  { // Entry 192
+    -0x1.98d60031b8212e345617e33819904bcep-1,
+    -0x1.1999999999996p-1
+  },
+  { // Entry 193
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 194
+    0x1.1542457337d42e1c6b73c89d866ba171p6,
+    0x1.0p100
+  },
+  { // Entry 195
+    0x1.15a3de711cc5494e20ce2f7e3974c4edp6,
+    0x1.199999999999ap100
+  },
+  { // Entry 196
+    0x1.15fcf7f3c6f8e1f8e05889b78d1212e9p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 197
+    0x1.164eeeaaf5efcc1553be7dcad167cc55p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 198
+    0x1.169ad1a0c907775fec628588fd1aeadcp6,
+    0x1.6666666666668p100
+  },
+  { // Entry 199
+    0x1.16e177b203cdb330ec31f559cfad3551p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 200
+    0x1.17238e14da469b55b96c96744e61203ap6,
+    0x1.999999999999cp100
+  },
+  { // Entry 201
+    0x1.1761a2765a6960abe5cf92c0959da837p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 202
+    0x1.179c2a3292f266ff2833283af2c71bb8p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 203
+    0x1.17d387985f833a0d4069f79c1b97242fp6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 204
+    0x1.18080dd3171b6c031a9b576be65b6d4cp6,
+    0x1.0p101
+  },
+  { // Entry 205
+    0x1.1542457337d42e1c6b73c89d862ba171p7,
+    0x1.0p200
+  },
+  { // Entry 206
+    0x1.157311f22a4cbbb54620fc0ddfb31be9p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 207
+    0x1.159f9eb37f66880aa5e6292a89842f82p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 208
+    0x1.15c89a0f16e1fd18df9923342bb11959p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 209
+    0x1.15ee8b8a006dd2be2beb2713418c6ab9p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 210
+    0x1.1611de929dd0f0a6abd2defbaad7160cp7,
+    0x1.8000000000002p200
+  },
+  { // Entry 211
+    0x1.1632e9c4090d64b912702f88ea3260d6p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 212
+    0x1.1651f3f4c91ec76428a1adaf0dd1d201p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 213
+    0x1.166f37d2e5634a8dc9d3786c3c679778p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 214
+    0x1.168ae685cbabb414d5eee01cd0d08b3cp7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 215
+    0x1.16a529a32777cd0fc3079004b633875fp7,
+    0x1.0p201
+  },
+  { // Entry 216
+    0x1.5a92d6d005c939a38650bac4e7b689cep9,
+    0x1.0p1000
+  },
+  { // Entry 217
+    0x1.5a9f09efc2675d09bcfc07a0fe18686cp9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 218
+    0x1.5aaa2d2017add01f14ed52e8288cad52p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 219
+    0x1.5ab46bf6fd8cad62a35a116a9117e7c8p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 220
+    0x1.5abde855b7efa2cbf66e9262568ebc20p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 221
+    0x1.5ac6bd17df486a461668805c70e166f4p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 222
+    0x1.5aceffe43a17874ab00fd47fc0b839a7p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 223
+    0x1.5ad6c2706a1bdff5759c340949a015f2p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 224
+    0x1.5ade1367f12d00bfdde8a6b895458750p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 225
+    0x1.5ae4ff14aabf1b21a0ef80a4ba5fc441p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 226
+    0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    0x1.0p1001
+  },
+  { // Entry 227
+    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 229
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 230
+    0x1.11d14e1fcb72e46bc706b21c5008b9f1p-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 231
+    0x1.11d14e1fcb72edcb28a032e083a6f199p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 232
+    0x1.11d14e1fcb72f72a8a39b3a4b7193d0ep-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 233
+    -0x1.3a5abf07b788ff1b06e03c7b74301bb8p0,
+    -0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 234
+    -0x1.3a5abf07b788e3cab7acfcdd8e180c5dp0,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 235
+    -0x1.3a5abf07b788c87a6879bd3faaea06e8p0,
+    -0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 236
+    0x1.c34366179d4258048e0ec51c6fefd58cp-1,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 237
+    0x1.c34366179d426545cadbc394096e719bp-1,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 238
+    0x1.c34366179d42728707a8c20ba2953544p-1,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 239
+    0x1.9f323ecbf984b480be2cbc495a69348bp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 240
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.0p-1
+  },
+  { // Entry 241
+    0x1.9f323ecbf984d480be2cbc495a3e89e1p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 242
+    0x1.1e85f5e7040cfaba33513aabf3326da5p-1,
+    0x1.7ffffffffffffp-1
+  },
+  { // Entry 243
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.8p-1
+  },
+  { // Entry 244
+    0x1.1e85f5e7040d0d0357e383d0857b9238p-1,
+    0x1.8000000000001p-1
+  },
+  { // Entry 245
+    -0x1.62e42fefa39f135793c7673009e5ed5ep0,
+    -0x1.8000000000001p-1
+  },
+  { // Entry 246
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    -0x1.8p-1
+  },
+  { // Entry 247
+    -0x1.62e42fefa39ed35793c7673009e5ed5ep0,
+    -0x1.7ffffffffffffp-1
+  },
+  { // Entry 248
+    0x1.d5240f0e0e076d3b5e5b162f39d6b3fap-1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 249
+    0x1.d5240f0e0e077a082b27e2fc06cc768ap-1,
+    0x1.8p0
+  },
+  { // Entry 250
+    0x1.d5240f0e0e0786d4f7f4afc8d3704d94p-1,
+    0x1.8000000000001p0
+  },
+  { // Entry 251
+    -0x1.25e4f7b2737fa18486612173c68a6892p5,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 252
+    0x1.9c041f7ed8d3304979113eafa0de50acp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 253
+    0x1.9c041f7ed8d336afdf77a516075931f4p0,
+    0x1.0p2
+  },
+  { // Entry 254
+    0x1.9c041f7ed8d3437cac4471e2d3d4133bp0,
+    0x1.0000000000001p2
+  },
+  { // Entry 255
+    0x1.193ea7aad030a4214ec437ffafd7ee7cp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 256
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.0p1
+  },
+  { // Entry 257
+    0x1.193ea7aad030b4214ec437ffafad43d2p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 258
+    0x1.62e42fefa39eeb5793c7673007d5ed5ep-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 259
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p0
+  },
+  { // Entry 260
+    0x1.62e42fefa39f035793c7673007a5ed5ep-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 261
+    0x1.9f323ecbf984b480be2cbc495a69348bp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 262
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.0p-1
+  },
+  { // Entry 263
+    0x1.9f323ecbf984d480be2cbc495a3e89e1p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 264
+    0x1.c8ff7c79a9a20df590b522632ec31a70p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 265
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.0p-2
+  },
+  { // Entry 266
+    0x1.c8ff7c79a9a2345bf71b88c9950ac885p-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 267
+    0x1.e27076e2af2e5065c4f1c53c5ba22021p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 268
+    0x1.e27076e2af2e5e9ea87ffe1fe9e155dbp-4,
+    0x1.0p-3
+  },
+  { // Entry 269
+    0x1.e27076e2af2e7b106f9c6fe70639d447p-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 270
+    0x1.f0a30c01162a5708bd8807dfa41c78f8p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 271
+    0x1.f0a30c01162a6617cc9716eeb32f131ap-5,
+    0x1.0p-4
+  },
+  { // Entry 272
+    0x1.f0a30c01162a8435eab5350cd13f04eep-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 273
+    0x1.f829b0e7832ff54baec8fe6c44c511fdp-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 274
+    0x1.f829b0e7833004cf8fc13c7bc8a7ebabp-6,
+    0x1.0p-5
+  },
+  { // Entry 275
+    0x1.f829b0e7833023d751b1b89ad0625665p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 276
+    0x1.fc0a8b0fc03e2d38f1978c3b9c1379b6p-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 277
+    0x1.fc0a8b0fc03e3cf9eda74d37abd56df5p-7,
+    0x1.0p-6
+  },
+  { // Entry 278
+    0x1.fc0a8b0fc03e5c7be5c6cf2fcb538558p-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 279
+    0x1.fe02a6b106787fe3370f3b19ca72746ep-8,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 280
+    0x1.fe02a6b106788fc37690391dc282d2b3p-8,
+    0x1.0p-7
+  },
+  { // Entry 281
+    0x1.fe02a6b10678af83f5923525b2a09b1bp-8,
+    0x1.0000000000001p-7
+  },
+  { // Entry 282
+    0x1.ff00aa2b10bbf4b076c559c4c4c719a8p-9,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 283
+    0x1.ff00aa2b10bc04a086b569b4d4b76919p-9,
+    0x1.0p-8
+  },
+  { // Entry 284
+    0x1.ff00aa2b10bc2480a6958994f4968af6p-9,
+    0x1.0000000000001p-8
+  },
+  { // Entry 285
+    0x1.ff802a9ab10e579274ea53f96c2ac73bp-10,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 286
+    0x1.ff802a9ab10e678a78e854f8ec6ac72bp-10,
+    0x1.0p-9
+  },
+  { // Entry 287
+    0x1.ff802a9ab10e877a80e456f7ecea07cap-10,
+    0x1.0000000000001p-9
+  },
+  { // Entry 288
+    0x1.ffc00aa8ab10ebc44c055914cd3364b9p-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 289
+    0x1.ffc00aa8ab10fbc04d051924c9347471p-11,
+    0x1.0p-10
+  },
+  { // Entry 290
+    0x1.ffc00aa8ab111bb84f049944c1363411p-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 291
+    0x1.fff8002aa9aaa11166638b10aec3e0a4p-14,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 292
+    0x1.fff8002aa9aab110e6678af0afc3daa4p-14,
+    0x1.0p-13
+  },
+  { // Entry 293
+    0x1.fff8002aa9aad10fe66f8ab0b1c3c2a5p-14,
+    0x1.0000000000001p-13
+  },
+  { // Entry 294
+    -0x1.62e42fefa39f135793c7673008e5ed5ep-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 295
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 296
+    -0x1.62e42fefa39ee35793c767300825ed5ep-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 297
+    -0x1.269621134db93cd9140cbcc16037fb86p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 298
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    -0x1.0p-2
+  },
+  { // Entry 299
+    -0x1.269621134db91cd9140cbcc1600d50dbp-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 300
+    -0x1.1178e8227e47d02c5d4668ebc04628aep-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 301
+    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
+    -0x1.0p-3
+  },
+  { // Entry 302
+    -0x1.1178e8227e47b4bea66afb34e4c8c56ap-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 303
+    -0x1.08598b59e3a0799b50ead061448cec6cp-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 304
+    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
+    -0x1.0p-4
+  },
+  { // Entry 305
+    -0x1.08598b59e3a06001b75136c7aaec7f32p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 306
+    -0x1.0415d89e7444578594cf9f5e0caf2971p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 307
+    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
+    -0x1.0p-5
+  },
+  { // Entry 308
+    -0x1.0415d89e74443ebf63433c45467a6ab5p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 309
+    -0x1.02056589358484e027b146bdd7feaee1p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 310
+    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
+    -0x1.0p-6
+  },
+  { // Entry 311
+    -0x1.0205658935846c7ea198e537bf9b9c7fp-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 312
+    -0x1.010157588de722ad0cdb84fde21218d8p-7,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 313
+    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
+    -0x1.0p-7
+  },
+  { // Entry 314
+    -0x1.010157588de70a7cac1a01f7d5f9256ep-7,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 315
+    -0x1.0080559588b367f5a8f34d9dadc40b3ap-8,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 316
+    -0x1.0080559588b357e598e33d8d9db37a29p-8,
+    -0x1.0p-8
+  },
+  { // Entry 317
+    -0x1.0080559588b34fdd90db358595ab9261p-8,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 318
+    -0x1.0040155d5889ee786b20efc1400f5ea4p-9,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 319
+    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
+    -0x1.0p-9
+  },
+  { // Entry 320
+    -0x1.0040155d5889d66c651dee407faefe5bp-9,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 321
+    -0x1.002005565588a3397dd822048abe2755p-10,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 322
+    -0x1.00200556558893357cd7e1f486bd0705p-10,
+    -0x1.0p-10
+  },
+  { // Entry 323
+    -0x1.0020055655888b337c57c1ec84bc8ee9p-10,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 324
+    -0x1.0004001555d568891de2704b038ca596p-13,
+    -0x1.0000000000001p-13
+  },
+  { // Entry 325
+    -0x1.0004001555d558889dde702b028c9996p-13,
+    -0x1.0p-13
+  },
+  { // Entry 326
+    -0x1.0004001555d550885ddc701b020c9696p-13,
+    -0x1.fffffffffffffp-14
+  },
+  { // Entry 327
+    0x1.73242d45267376d3a2a0a820c4902335p-1,
+    0x1.1082b577d34eap0
+  },
+  { // Entry 328
+    0x1.73242d4526738653ad4a41d5fe7ea6c1p-1,
+    0x1.1082b577d34ebp0
+  },
+  { // Entry 329
+    0x1.73242d45267395d3b7f3db8b37f509a8p-1,
+    0x1.1082b577d34ecp0
+  },
+  { // Entry 330
+    0x1.73242d452673a553c29d754070f34beap-1,
+    0x1.1082b577d34edp0
+  },
+  { // Entry 331
+    0x1.73242d452673b4d3cd470ef5a9796d86p-1,
+    0x1.1082b577d34eep0
+  },
+  { // Entry 332
+    0x1.73242d452673c453d7f0a8aae1876e7ep-1,
+    0x1.1082b577d34efp0
+  },
+  { // Entry 333
+    0x1.73242d452673d3d3e29a4260191d4ecfp-1,
+    0x1.1082b577d34f0p0
+  },
+  { // Entry 334
+    -0x1.00000000000018ade0e8cb684e083468p-4,
+    -0x1.f0540438fd5c6p-5
+  },
+  { // Entry 335
+    -0x1.0000000000001029cb3d0ccdd73ea85ap-4,
+    -0x1.f0540438fd5c5p-5
+  },
+  { // Entry 336
+    -0x1.00000000000007a5b5914e336079a4a5p-4,
+    -0x1.f0540438fd5c4p-5
+  },
+  { // Entry 337
+    -0x1.fffffffffffffe433fcb1f31d3725290p-5,
+    -0x1.f0540438fd5c3p-5
+  },
+  { // Entry 338
+    -0x1.ffffffffffffed3b1473a1fce5fa6c86p-5,
+    -0x1.f0540438fd5c2p-5
+  },
+  { // Entry 339
+    -0x1.ffffffffffffdc32e91c24c7f88b972cp-5,
+    -0x1.f0540438fd5c1p-5
+  },
+  { // Entry 340
+    -0x1.ffffffffffffcb2abdc4a7930b25d282p-5,
+    -0x1.f0540438fd5c0p-5
+  },
+  { // Entry 341
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 342
+    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 343
+    0x1.62e42fefa39ef34f93c7673007e5ad5ep9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 344
+    0x1.6bcbed09f00aece2ea800b6af0f24a0bp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 345
+    0x1.e3703db0ab119bed3e763f434dd7c4fbp-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 346
+    0x1.62e42fefa39f035793c7673007a5ed5ep-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 347
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p0
+  },
+  { // Entry 348
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 349
+    0x1.62e42fefa39eeb5793c7673007d5ed5ep-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 350
+    -0x1.25e4f7b2737fa18486612173c68a6892p5,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 351
+    0x1.28c6c3a79fe295c7ca64ed982642adcfp-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 352
+    -0x1.89f9ff0c761bc5454f17ec539e887d37p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 353
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 354
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 355
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 356
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 357
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 358
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 359
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 360
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 361
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 362
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 363
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 364
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 365
+    0.0,
+    0.0
+  },
+  { // Entry 366
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/log1pf_intel_data.h b/tests/math_data/log1pf_intel_data.h
new file mode 100644
index 0000000..3519a63
--- /dev/null
+++ b/tests/math_data/log1pf_intel_data.h
@@ -0,0 +1,1182 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_log1pf_intel_data[] = {
+  { // Entry 0
+    -0x1.630430efae4a1e08a52dd228f774747ap-1,
+    -0x1.0010p-1
+  },
+  { // Entry 1
+    -0x1.0a6a950320b815309cee76c6c346aa8ap-6,
+    -0x1.084310p-6
+  },
+  { // Entry 2
+    -0x1.4592f4df3c22380a8a7a6bd256a231c9p-2,
+    -0x1.16e480p-2
+  },
+  { // Entry 3
+    -0x1.5362b6deece53e28930e0d75f3b0e969p-2,
+    -0x1.20e0p-2
+  },
+  { // Entry 4
+    -0x1.66ea0edec29ccaccbbc9459e55583852p-2,
+    -0x1.2ec3p-2
+  },
+  { // Entry 5
+    -0x1.e5ee02ef643742b40691cfbbe5c34235p-1,
+    -0x1.39ce80p-1
+  },
+  { // Entry 6
+    -0x1.ee2a156b413e4fe8b48e04a1a81d7d1fp-2,
+    -0x1.88p-2
+  },
+  { // Entry 7
+    -0x1.af8967d890ceb5ae2c25ac22be3d5d14p-4,
+    -0x1.999502p-4
+  },
+  { // Entry 8
+    -0x1.c50e9e00c0346f0253e08a684bbb9a7ep-7,
+    -0x1.c1f080p-7
+  },
+  { // Entry 9
+    -0x1.d240ed01404debfca8485f4159238678p-7,
+    -0x1.cef3c0p-7
+  },
+  { // Entry 10
+    -0x1.e3d6ff014fb650f40fcce84889424dadp-7,
+    -0x1.e04906p-7
+  },
+  { // Entry 11
+    -0x1.e3dbcb012249a6d99fa2c2ccddddacc7p-7,
+    -0x1.e04dc0p-7
+  },
+  { // Entry 12
+    -0x1.e9924b01a753cecfd33f2d536b84f02fp-7,
+    -0x1.e5eeb0p-7
+  },
+  { // Entry 13
+    -0x1.f82ba0e78ab204f65a17734933732987p-6,
+    -0x1.f07ep-6
+  },
+  { // Entry 14
+    -0x1.f9c13b02072dd9618b9803ed7ddfbabep-7,
+    -0x1.f5df2ep-7
+  },
+  { // Entry 15
+    -0x1.fa2f5d01c871d22cde70cc085ced02ebp-7,
+    -0x1.f64ba0p-7
+  },
+  { // Entry 16
+    -0x1.fb1175021cc3e1272f3c6b103248fc29p-7,
+    -0x1.f72a40p-7
+  },
+  { // Entry 17
+    -0x1.fd69f70227b4fea60671e68dcb4dee6cp-7,
+    -0x1.f97984p-7
+  },
+  { // Entry 18
+    -0x1.62c42eefb8f3c8a68360fc37186210edp-1,
+    -0x1.ffdffep-2
+  },
+  { // Entry 19
+    -0x1.fffffdfffffaaaaaa6aaaab111112666p-24,
+    -0x1.fffffcp-24
+  },
+  { // Entry 20
+    0x1.ff802a9ab10e678a78e854f8ec6ac72bp-10,
+    0x1.p-9
+  },
+  { // Entry 21
+    0x1.ffc00aa8ab10fbc04d051924c9347471p-11,
+    0x1.p-10
+  },
+  { // Entry 22
+    0x1.fffff00000aaaaa2aaab11110bbbbc04p-21,
+    0x1.p-20
+  },
+  { // Entry 23
+    0x1.fffff800002aaaa9aaaab11110e66667p-22,
+    0x1.p-21
+  },
+  { // Entry 24
+    0x1.ffffffffffffffffffffffffffffffp-121,
+    0x1.p-120
+  },
+  { // Entry 25
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 26
+    0x1.fc0a8effff421db6014956cf936c5246p-7,
+    0x1.000002p-6
+  },
+  { // Entry 27
+    0x1.ffffc40009aaa8e9ab0190ff8c14b319p-19,
+    0x1.000002p-18
+  },
+  { // Entry 28
+    0x1.000000fffffd55555755555888887dddp-23,
+    0x1.000002p-23
+  },
+  { // Entry 29
+    0x1.000001ffffbfffff0000145555d5554ep-41,
+    0x1.000002p-41
+  },
+  { // Entry 30
+    0x1.e270851b92b64555fb421203aa0bcb5cp-4,
+    0x1.000008p-3
+  },
+  { // Entry 31
+    0x1.193ead002577c5e89dc7604b89fc7cebp0,
+    0x1.000008p1
+  },
+  { // Entry 32
+    0x1.193f3cfff9f7d6d8965e4e6b818cb622p0,
+    0x1.0000e0p1
+  },
+  { // Entry 33
+    0x1.ffd006a99ad908d29312234ef301f8a7p-11,
+    0x1.0008p-10
+  },
+  { // Entry 34
+    0x1.f2a7c700004b00f1cb775536c5857252p-5,
+    0x1.01128cp-4
+  },
+  { // Entry 35
+    0x1.cabc19000311437879afccdb6fc91aafp-3,
+    0x1.0116p-2
+  },
+  { // Entry 36
+    0x1.20794701579253647a43cecd04c093e2p4,
+    0x1.01fffep26
+  },
+  { // Entry 37
+    0x1.02d59bfffebbee3ec0c159b239188c69p-7,
+    0x1.03dcp-7
+  },
+  { // Entry 38
+    0x1.ea5f11000fca3ff94bceefddbe67b553p-4,
+    0x1.047752p-3
+  },
+  { // Entry 39
+    0x1.be69c4ffffedd2cb5e5f046e949251cap-2,
+    0x1.17c5f0p-1
+  },
+  { // Entry 40
+    0x1.f40ade790277455219208e6cbce12c81p-3,
+    0x1.1b30p-2
+  },
+  { // Entry 41
+    0x1.b17d614548b69a74509e9d003c096acdp0,
+    0x1.1cp2
+  },
+  { // Entry 42
+    0x1.c4017efffec839b96cd1a043d59e5735p-2,
+    0x1.1c1cp-1
+  },
+  { // Entry 43
+    0x1.6fb67efffb26578a0527f61362ac8fa8p-8,
+    0x1.70bf14p-8
+  },
+  { // Entry 44
+    0x1.7b9b982b27d8fd65f78363d3dedc97b2p-14,
+    0x1.7b9ffep-14
+  },
+  { // Entry 45
+    0x1.4402c0fffffff1ee8f659da5ea3af296p-2,
+    0x1.7d2286p-2
+  },
+  { // Entry 46
+    0x1.453252ffffff9b941dfd07fbfe366e98p3,
+    0x1.94d4eap14
+  },
+  { // Entry 47
+    0x1.981eb6000011b05ecb59c7545ff929fap-4,
+    0x1.ad250ap-4
+  },
+  { // Entry 48
+    0x1.ff1e1e73e713dc5a44e45f9c3f28b7c8p-1,
+    0x1.b6ae94p0
+  },
+  { // Entry 49
+    0x1.990193ffffdd6f9fee37f808cd2663abp-3,
+    0x1.c4b528p-3
+  },
+  { // Entry 50
+    0x1.cd15fefff69640aea34534134c884cf5p-14,
+    0x1.cd1c7cp-14
+  },
+  { // Entry 51
+    0x1.d29b864c3678db9fafb9295703bb2bc1p-7,
+    0x1.d5f20ep-7
+  },
+  { // Entry 52
+    0x1.db8be7c511d00e008415288ce9a25163p-8,
+    0x1.dd46aap-8
+  },
+  { // Entry 53
+    0x1.9a37cb000006cf9ac9e3b0eedec553ffp-2,
+    0x1.f88cf6p-2
+  },
+  { // Entry 54
+    0x1.0b2148000d52175d80c54887b0d4a470p2,
+    0x1.ffbffep5
+  },
+  { // Entry 55
+    0x1.fc090efffd0dee6eb02f2fa5b5d354afp-7,
+    0x1.fffe7ep-7
+  },
+  { // Entry 56
+    0x1.193e2700053065bd8378fbbd3b637eb6p0,
+    0x1.fffe7ep0
+  },
+  { // Entry 57
+    0x1.f82970e7831004cf7a6be71673528989p-6,
+    0x1.ffffbep-6
+  },
+  { // Entry 58
+    0x1.193ea500258270930f8e7d7af244dcffp0,
+    0x1.fffff8p0
+  },
+  { // Entry 59
+    0x1.fffff400004aaaa88aaabb11108d1115p-22,
+    0x1.fffffcp-22
+  },
+  { // Entry 60
+    0x1.11d14de2e6a77280841e892fac90ccfap-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 61
+    0x1.2ccac6d04834d03c513a0f03d4c89b83p-1,
+    0x1.995256p-1
+  },
+  { // Entry 62
+    0x1.466a92ae5453d95b0ba6631497388e92p-1,
+    0x1.c89ac6p-1
+  },
+  { // Entry 63
+    0x1.5ed1a85999ba7b8b5440ce7e5a6b56f2p-1,
+    0x1.f7e336p-1
+  },
+  { // Entry 64
+    0x1.761c7d56e25f3f7369eb2e8d33b8209cp-1,
+    0x1.1395d2p0
+  },
+  { // Entry 65
+    0x1.8c63d26f597f171e4d44ff4b30356555p-1,
+    0x1.2b3a0ap0
+  },
+  { // Entry 66
+    0x1.a1bd4c9e41df1dbc9bdcf52548fe75b2p-1,
+    0x1.42de42p0
+  },
+  { // Entry 67
+    0x1.b63bf811a5f2ac93a5d17ec91bb5daabp-1,
+    0x1.5a827ap0
+  },
+  { // Entry 68
+    0x1.c9f0adb76b4112afacd4ebe2a82850c6p-1,
+    0x1.7226b2p0
+  },
+  { // Entry 69
+    0x1.dcea66c807b8ed92f41a4c7968b5559fp-1,
+    0x1.89caeap0
+  },
+  { // Entry 70
+    0x1.ef368161759d5a9bb2da51833d2b502bp-1,
+    0x1.a16f22p0
+  },
+  { // Entry 71
+    0x1.00707ca544fcb52315ebafd578b872b3p0,
+    0x1.b9135ap0
+  },
+  { // Entry 72
+    0x1.08fa4b9ede8a0b58b4cad9c182b5bc7ap0,
+    0x1.d0b792p0
+  },
+  { // Entry 73
+    0x1.113d8c489a020b1485aeadcbd8328e39p0,
+    0x1.e85bcap0
+  },
+  { // Entry 74
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.p1
+  },
+  { // Entry 75
+    0x1.11d14de2e6a77280841e892fac90ccfap-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 76
+    0x1.26990d712acaf377db999b7a4d6f0d77p-1,
+    0x1.8e3e16p-1
+  },
+  { // Entry 77
+    0x1.3a9149340db314ea32356ecefac481p-1,
+    0x1.b27246p-1
+  },
+  { // Entry 78
+    0x1.4dc99695710c65b9bcf0bb6b8edd5d21p-1,
+    0x1.d6a676p-1
+  },
+  { // Entry 79
+    0x1.604fd9d3719dfe935e33ddc7d697914bp-1,
+    0x1.fadaa6p-1
+  },
+  { // Entry 80
+    0x1.7230837fde6a8438b4a457e20a8e06fep-1,
+    0x1.0f876cp0
+  },
+  { // Entry 81
+    0x1.8376bee5d088c50a9458bc6f7ae9a783p-1,
+    0x1.21a184p0
+  },
+  { // Entry 82
+    0x1.942ca20e8cddd1db45fd28a8128ba122p-1,
+    0x1.33bb9cp0
+  },
+  { // Entry 83
+    0x1.a45b4d36cf3486c62245ff3fa2915f6fp-1,
+    0x1.45d5b4p0
+  },
+  { // Entry 84
+    0x1.b40b09d2982dde5fa679cf307e5857c2p-1,
+    0x1.57efccp0
+  },
+  { // Entry 85
+    0x1.c343641957c53687deafd15a44326c6cp-1,
+    0x1.6a09e4p0
+  },
+  { // Entry 86
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.80p-1
+  },
+  { // Entry 87
+    0x1.34024a8c5f61c82ac61e318087908df6p-1,
+    0x1.a66666p-1
+  },
+  { // Entry 88
+    0x1.48a112280d6abde96ac67b1fb5ecb146p-1,
+    0x1.ccccccp-1
+  },
+  { // Entry 89
+    0x1.5c73756fb0dea2087cd90d8b7bc997a9p-1,
+    0x1.f33332p-1
+  },
+  { // Entry 90
+    0x1.6f88b1bee42272ff0a57db75096d585ep-1,
+    0x1.0cccccp0
+  },
+  { // Entry 91
+    0x1.81ee60afb50199b91090d89ef318de90p-1,
+    0x1.20p0
+  },
+  { // Entry 92
+    0x1.93b0af9c4ab8019e279f9c3bc8a37955p-1,
+    0x1.333334p0
+  },
+  { // Entry 93
+    0x1.a4da932e285ccc3fc07f118701145a41p-1,
+    0x1.466668p0
+  },
+  { // Entry 94
+    0x1.b575ef12280c4d1b4f06a46e25e8a4a6p-1,
+    0x1.59999cp0
+  },
+  { // Entry 95
+    0x1.c58bb849aa7457a9abbdac063833d724p-1,
+    0x1.6cccd0p0
+  },
+  { // Entry 96
+    0x1.d5240f0e0e077a082b27e2fc06cc768ap-1,
+    0x1.80p0
+  },
+  { // Entry 97
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p0
+  },
+  { // Entry 98
+    0x1.7bdf36901c7f350041da6ef1304395cep-1,
+    0x1.19999ap0
+  },
+  { // Entry 99
+    0x1.93b0af9c4ab8019e279f9c3bc8a37955p-1,
+    0x1.333334p0
+  },
+  { // Entry 100
+    0x1.aa731192391a8863f4bfe8452991c141p-1,
+    0x1.4ccccep0
+  },
+  { // Entry 101
+    0x1.c03d718c8b4dafcae9e8be78cf83cbf4p-1,
+    0x1.666668p0
+  },
+  { // Entry 102
+    0x1.d52410a7a7a06fcabadb6d90a4a19793p-1,
+    0x1.800002p0
+  },
+  { // Entry 103
+    0x1.e938cda74ef6d0be179304b52619eb82p-1,
+    0x1.99999cp0
+  },
+  { // Entry 104
+    0x1.fc8b8126826242614b481d83aaec3cbdp-1,
+    0x1.b33336p0
+  },
+  { // Entry 105
+    0x1.07952480b0ea35a6256b2037158f39fdp0,
+    0x1.ccccd0p0
+  },
+  { // Entry 106
+    0x1.1090e340e02935eda17728b57dbb2974p0,
+    0x1.e6666ap0
+  },
+  { // Entry 107
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.p1
+  },
+  { // Entry 108
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.p-1
+  },
+  { // Entry 109
+    -0x1.3217b042fc85e510ffef322447286167p-1,
+    -0x1.ccccccp-2
+  },
+  { // Entry 110
+    -0x1.058aee52bbf036e43da60fe740480ec8p-1,
+    -0x1.999998p-2
+  },
+  { // Entry 111
+    -0x1.b91f246ff08e2be21ff79355d363de75p-2,
+    -0x1.666664p-2
+  },
+  { // Entry 112
+    -0x1.6d3c2dbbcad2f6c5b9711be3c95acd83p-2,
+    -0x1.333330p-2
+  },
+  { // Entry 113
+    -0x1.26961d134dbb2783bd621217b5546c80p-2,
+    -0x1.fffffap-3
+  },
+  { // Entry 114
+    -0x1.c8ff7579a9a52ac25bb899dbd264ce86p-3,
+    -0x1.999994p-3
+  },
+  { // Entry 115
+    -0x1.4cd6b35b45fbb9ed92ccfd7f10d29dfcp-3,
+    -0x1.33332ep-3
+  },
+  { // Entry 116
+    -0x1.af8e7765f96eba7449d2e369edb815d8p-4,
+    -0x1.999990p-4
+  },
+  { // Entry 117
+    -0x1.a431c11b1271b3c8501cfaf9d3319015p-5,
+    -0x1.999986p-5
+  },
+  { // Entry 118
+    0.0,
+    0.0
+  },
+  { // Entry 119
+    0.0,
+    0.0
+  },
+  { // Entry 120
+    0x1.8fb06450b296f7b66ab1a549ae4826a2p-5,
+    0x1.99999ap-5
+  },
+  { // Entry 121
+    0x1.8663f7f0dbb23a23b18a99f13b06839ap-4,
+    0x1.99999ap-4
+  },
+  { // Entry 122
+    0x1.1e3b830fe6a17974c7bd84c4e3eab82cp-3,
+    0x1.333334p-3
+  },
+  { // Entry 123
+    0x1.756501739ebcb722ad1079954ab64abbp-3,
+    0x1.99999ap-3
+  },
+  { // Entry 124
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.p-2
+  },
+  { // Entry 125
+    0x1.0ca9385ba5764f40265b8842277dec27p-2,
+    0x1.333334p-2
+  },
+  { // Entry 126
+    0x1.334e9f7738caf691d9028f70d0039fefp-2,
+    0x1.666668p-2
+  },
+  { // Entry 127
+    0x1.588c2f480eb6532d57552d24a22c18b8p-2,
+    0x1.99999cp-2
+  },
+  { // Entry 128
+    0x1.7c7b2a6204723e0ab52a960a21dbe461p-2,
+    0x1.ccccd0p-2
+  },
+  { // Entry 129
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.p-1
+  },
+  { // Entry 130
+    -0x1.7f7425b73e3d1503aef4db985cf47e98p1,
+    -0x1.e66666p-1
+  },
+  { // Entry 131
+    -0x1.26bb19bb5555582dca0301cc5afb0340p1,
+    -0x1.ccccccp-1
+  },
+  { // Entry 132
+    -0x1.e5a9a3c3ac498090b9d029dbb4ad807ap0,
+    -0x1.b33332p-1
+  },
+  { // Entry 133
+    -0x1.9c041b7ed8db36afca225000b2030fd2p0,
+    -0x1.999998p-1
+  },
+  { // Entry 134
+    -0x1.62e42befa3a6f3577e72121ab28fcb3cp0,
+    -0x1.7ffffep-1
+  },
+  { // Entry 135
+    -0x1.34378bcbda7a06e4efec7643b0ba89cbp0,
+    -0x1.666664p-1
+  },
+  { // Entry 136
+    -0x1.0cc1208b56d4b4c06755206193cd1ceap0,
+    -0x1.4ccccap-1
+  },
+  { // Entry 137
+    -0x1.d524070e0e177a08007d38d15c203245p-1,
+    -0x1.333330p-1
+  },
+  { // Entry 138
+    -0x1.98d5f831b831ae342b6d390d5ee4078ap-1,
+    -0x1.199996p-1
+  },
+  { // Entry 139
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.p-1
+  },
+  { // Entry 140
+    0x1.1542457337d42e1c6b73c89d866ba171p6,
+    0x1.p100
+  },
+  { // Entry 141
+    0x1.15a3de7291226038f89b79079de74b15p6,
+    0x1.19999ap100
+  },
+  { // Entry 142
+    0x1.15fcf7f671a38b9552200b4c17f03284p6,
+    0x1.333334p100
+  },
+  { // Entry 143
+    0x1.164eeeaea72addd7387b5fd890994481p6,
+    0x1.4ccccep100
+  },
+  { // Entry 144
+    0x1.169ad1a55b50990c54e1e650029fc95ap6,
+    0x1.666668p100
+  },
+  { // Entry 145
+    0x1.16e177b7592304a2b3519037089451c5p6,
+    0x1.800002p100
+  },
+  { // Entry 146
+    0x1.17238e1ada469675b97116744955a040p6,
+    0x1.99999cp100
+  },
+  { // Entry 147
+    0x1.1761a27cf0fff16c1e86b183310631dfp6,
+    0x1.b33336p100
+  },
+  { // Entry 148
+    0x1.179c2a39af642757a6a61b00bba160aep6,
+    0x1.ccccd0p100
+  },
+  { // Entry 149
+    0x1.17d3879ff3b917735e3bb947a1e5476fp6,
+    0x1.e6666ap100
+  },
+  { // Entry 150
+    0x1.18080dd3171b6c031a9b576be65b6d4cp6,
+    0x1.p101
+  },
+  { // Entry 151
+    0x1.62e42feba39ef15793c611dab1909808p6,
+    0x1.fffffep127
+  },
+  { // Entry 152
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 153
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 154
+    0x1.11d14cb6fa73c6e3e2b32fdc2e39187cp-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 155
+    0x1.11d14de2e6a77280841e892fac90ccfap-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 156
+    0x1.11d14f0ed2da6e6c589fb5f4332d476fp-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 157
+    -0x1.3a5ac1c04c5f3b4913b799da9d738173p0,
+    -0x1.6a09e8p-1
+  },
+  { // Entry 158
+    -0x1.3a5abe5642755d2215d06656abb38c5dp0,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 159
+    -0x1.3a5abaec38972722a15fd1d5c0a89c36p0,
+    -0x1.6a09e4p-1
+  },
+  { // Entry 160
+    0x1.c343641957c53687deafd15a44326c6cp-1,
+    0x1.6a09e4p0
+  },
+  { // Entry 161
+    0x1.c34365c17f5fcd5f0800083c5f3f2de3p-1,
+    0x1.6a09e6p0
+  },
+  { // Entry 162
+    0x1.c3436769a6f904d49759471bcfce4490p-1,
+    0x1.6a09e8p0
+  },
+  { // Entry 163
+    0x1.9f323d76a42f30f2853c89b7f554a97bp-2,
+    0x1.fffffep-2
+  },
+  { // Entry 164
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.p-1
+  },
+  { // Entry 165
+    0x1.9f324176a42e8647db03a6298d08cf83p-2,
+    0x1.000002p-1
+  },
+  { // Entry 166
+    0x1.1e85f4c271c38bb4f9b938ae62856a75p-1,
+    0x1.7ffffep-1
+  },
+  { // Entry 167
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.80p-1
+  },
+  { // Entry 168
+    0x1.1e85f70b9655d4d98c420da42f457a6ep-1,
+    0x1.800002p-1
+  },
+  { // Entry 169
+    -0x1.62e433efa3a6f357a91cbcc55d3c0f80p0,
+    -0x1.800002p-1
+  },
+  { // Entry 170
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    -0x1.80p-1
+  },
+  { // Entry 171
+    -0x1.62e42befa3a6f3577e72121ab28fcb3cp0,
+    -0x1.7ffffep-1
+  },
+  { // Entry 172
+    0x1.d5240d74746d3c9786f9771f52074ef3p-1,
+    0x1.7ffffep0
+  },
+  { // Entry 173
+    0x1.d5240f0e0e077a082b27e2fc06cc768ap-1,
+    0x1.80p0
+  },
+  { // Entry 174
+    0x1.d52410a7a7a06fcabadb6d90a4a19793p-1,
+    0x1.800002p0
+  },
+  { // Entry 175
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p4,
+    -0x1.fffffep-1
+  },
+  { // Entry 176
+    0x1.9c041eb20c0617f78d606f27acf69e28p0,
+    0x1.fffffep1
+  },
+  { // Entry 177
+    0x1.9c041f7ed8d336afdf77a516075931f4p0,
+    0x1.p2
+  },
+  { // Entry 178
+    0x1.9c042118726b889b65f3e3e28e3e4e66p0,
+    0x1.000002p2
+  },
+  { // Entry 179
+    0x1.193ea7002585c5e86b1cb66b1832016cp0,
+    0x1.fffffep0
+  },
+  { // Entry 180
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.p1
+  },
+  { // Entry 181
+    0x1.193ea90025851b3dc15599f89374611bp0,
+    0x1.000002p1
+  },
+  { // Entry 182
+    0x1.62e42eefa39eb35793b211daaa909805p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 183
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p0
+  },
+  { // Entry 184
+    0x1.62e431efa39df357947211da3290986fp-1,
+    0x1.000002p0
+  },
+  { // Entry 185
+    0x1.9f323d76a42f30f2853c89b7f554a97bp-2,
+    0x1.fffffep-2
+  },
+  { // Entry 186
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.p-1
+  },
+  { // Entry 187
+    0x1.9f324176a42e8647db03a6298d08cf83p-2,
+    0x1.000002p-1
+  },
+  { // Entry 188
+    0x1.c8ff7ae010085833015383537a710bf7p-3,
+    0x1.fffffep-3
+  },
+  { // Entry 189
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.p-2
+  },
+  { // Entry 190
+    0x1.c8ff7facdcd4aa1e86a3628ed2816e49p-3,
+    0x1.000002p-2
+  },
+  { // Entry 191
+    0x1.e270751b92bc7e3985ba2b4eda27e177p-4,
+    0x1.fffffep-4
+  },
+  { // Entry 192
+    0x1.e27076e2af2e5e9ea87ffe1fe9e155dbp-4,
+    0x1.p-3
+  },
+  { // Entry 193
+    0x1.e2707a70e81187b4c829d7073485c254p-4,
+    0x1.000002p-3
+  },
+  { // Entry 194
+    0x1.f0a30a1f34487609a04c201edd1f6224p-5,
+    0x1.fffffep-5
+  },
+  { // Entry 195
+    0x1.f0a30c01162a6617cc9716eeb32f131ap-5,
+    0x1.p-4
+  },
+  { // Entry 196
+    0x1.f0a30fc4d9edf12a66bd3268f53eb247p-5,
+    0x1.000002p-4
+  },
+  { // Entry 197
+    0x1.f829aef70710f587dcdc1e46f5c8fc28p-6,
+    0x1.fffffep-6
+  },
+  { // Entry 198
+    0x1.f829b0e7833004cf8fc13c7bc8a7ebabp-6,
+    0x1.p-5
+  },
+  { // Entry 199
+    0x1.f829b4c87b6df63c671750b0d49bd0d0p-6,
+    0x1.000002p-5
+  },
+  { // Entry 200
+    0x1.fc0a8917a0bc40f9af9b81ceffb6876ap-7,
+    0x1.fffffep-7
+  },
+  { // Entry 201
+    0x1.fc0a8b0fc03e3cf9eda74d37abd56df5p-7,
+    0x1.p-6
+  },
+  { // Entry 202
+    0x1.fc0a8effff421db6014956cf936c5246p-7,
+    0x1.000002p-6
+  },
+  { // Entry 203
+    0x1.fe02a4b4fe886e0adfcd9bf770796795p-8,
+    0x1.fffffep-8
+  },
+  { // Entry 204
+    0x1.fe02a6b106788fc37690391dc282d2b3p-8,
+    0x1.p-7
+  },
+  { // Entry 205
+    0x1.fe02aaa91658c7641591cbf711392789p-8,
+    0x1.000002p-7
+  },
+  { // Entry 206
+    0x1.ff00a82d0ebe01a481bb62141d1d53b5p-9,
+    0x1.fffffep-9
+  },
+  { // Entry 207
+    0x1.ff00aa2b10bc04a086b569b4d4b76919p-9,
+    0x1.p-8
+  },
+  { // Entry 208
+    0x1.ff00ae2714b804a47ec15f0e31f390edp-9,
+    0x1.000002p-8
+  },
+  { // Entry 209
+    0x1.ff80289bb08ea6eb088098a49a71d9d9p-10,
+    0x1.fffffep-10
+  },
+  { // Entry 210
+    0x1.ff802a9ab10e678a78e854f8ec6ac72bp-10,
+    0x1.p-9
+  },
+  { // Entry 211
+    0x1.ff802e98b20de5cc57794db0a1879185p-10,
+    0x1.000002p-9
+  },
+  { // Entry 212
+    0x1.ffc008a92af1037e6d78fd20e4e62f56p-11,
+    0x1.fffffep-11
+  },
+  { // Entry 213
+    0x1.ffc00aa8ab10fbc04d051924c9347471p-11,
+    0x1.p-10
+  },
+  { // Entry 214
+    0x1.ffc00ea7ab50eac4cbd56964e4284cb6p-11,
+    0x1.000002p-10
+  },
+  { // Entry 215
+    0x1.fff7fe2ab9aa310ce6c785f0bd1aefcfp-14,
+    0x1.fffffep-14
+  },
+  { // Entry 216
+    0x1.fff8002aa9aab110e6678af0afc3daa4p-14,
+    0x1.p-13
+  },
+  { // Entry 217
+    0x1.fff8042a89abb0e8e8a770f314eeb25dp-14,
+    0x1.000002p-13
+  },
+  { // Entry 218
+    -0x1.62e433efa3a2f357991cbc8d5d3b4f80p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 219
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.p-1
+  },
+  { // Entry 220
+    -0x1.62e42defa39ff357931cbc85dd3b424dp-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 221
+    -0x1.269623bdf864b5bca2aac313becfafc7p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 222
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    -0x1.p-2
+  },
+  { // Entry 223
+    -0x1.26961fbdf8640b11f78e514c72f59cb5p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 224
+    -0x1.1178ea6ba2da5a9f4da9ec87413daa29p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 225
+    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
+    -0x1.p-3
+  },
+  { // Entry 226
+    -0x1.1178e6fdebfeae36d034bf0026e7ba26p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 227
+    -0x1.08598d7c05c2af150ef0536d3a6bec43p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 228
+    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
+    -0x1.p-4
+  },
+  { // Entry 229
+    -0x1.08598a48d28f60935a04940d6d173246p-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 230
+    -0x1.0415daaef8656050097e0aa39f7eb53ep-5,
+    -0x1.000002p-5
+  },
+  { // Entry 231
+    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
+    -0x1.p-5
+  },
+  { // Entry 232
+    -0x1.0415d7963233c7238cd1a9779dfbd10fp-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 233
+    -0x1.02056791560685012dd216873106670ep-6,
+    -0x1.000002p-6
+  },
+  { // Entry 234
+    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
+    -0x1.p-6
+  },
+  { // Entry 235
+    -0x1.020564852543729f44a720c573005c5fp-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 236
+    -0x1.0101595c95f736dd7dddd4f4a84fc30ep-7,
+    -0x1.000002p-7
+  },
+  { // Entry 237
+    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
+    -0x1.p-7
+  },
+  { // Entry 238
+    -0x1.0101565689df037097f9d05a2038a6fep-7,
+    -0x1.fffffep-8
+  },
+  { // Entry 239
+    -0x1.008057978ab55beba0ed4c4e688b0fddp-8,
+    -0x1.000002p-8
+  },
+  { // Entry 240
+    -0x1.0080559588b357e598e33d8d9db37a29p-8,
+    -0x1.p-8
+  },
+  { // Entry 241
+    -0x1.0080549487b2576599643eb948ddce3cp-8,
+    -0x1.fffffep-9
+  },
+  { // Entry 242
+    -0x1.0040175e590a1f9177e773be9c970fbep-9,
+    -0x1.000002p-9
+  },
+  { // Entry 243
+    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
+    -0x1.p-9
+  },
+  { // Entry 244
+    -0x1.0040145cd849bea09f4b0cbe55e0522ap-9,
+    -0x1.fffffep-10
+  },
+  { // Entry 245
+    -0x1.00200756d5a89bb7bd700a29d438709dp-10,
+    -0x1.000002p-10
+  },
+  { // Entry 246
+    -0x1.00200556558893357cd7e1f486bd0705p-10,
+    -0x1.p-10
+  },
+  { // Entry 247
+    -0x1.0020045615788f548c9dd3ebcc957ecfp-10,
+    -0x1.fffffep-11
+  },
+  { // Entry 248
+    -0x1.0004021565d5d89c9efe7d2c354c8573p-13,
+    -0x1.000002p-13
+  },
+  { // Entry 249
+    -0x1.0004001555d558889dde702b028c9996p-13,
+    -0x1.p-13
+  },
+  { // Entry 250
+    -0x1.0003ff154dd5188a9e0e72ab0936642cp-13,
+    -0x1.fffffep-14
+  },
+  { // Entry 251
+    0x1.732426090cb8287b20767f822cff213fp-1,
+    0x1.1082aep0
+  },
+  { // Entry 252
+    0x1.732427f90e136dae43644376436d483ap-1,
+    0x1.1082b0p0
+  },
+  { // Entry 253
+    0x1.732429e90f6cd25ec74c889c28bbeb0dp-1,
+    0x1.1082b2p0
+  },
+  { // Entry 254
+    0x1.73242bd910c4568cafd24e8cbead4f8cp-1,
+    0x1.1082b4p0
+  },
+  { // Entry 255
+    0x1.73242dc91219fa38009894d655459f92p-1,
+    0x1.1082b6p0
+  },
+  { // Entry 256
+    0x1.73242fb9136dbd60bd425afcaacb11f0p-1,
+    0x1.1082b8p0
+  },
+  { // Entry 257
+    0x1.732431a914bfa006e972a078ebc6136bp-1,
+    0x1.1082bap0
+  },
+  { // Entry 258
+    -0x1.0000031332fb3170f147bbabd5a5dbe2p-4,
+    -0x1.f0540ap-5
+  },
+  { // Entry 259
+    -0x1.00000202b0458e4ed1041496e7335a4dp-4,
+    -0x1.f05408p-5
+  },
+  { // Entry 260
+    -0x1.000000f22d8ffd4e110ab2e7abbf098bp-4,
+    -0x1.f05406p-5
+  },
+  { // Entry 261
+    -0x1.ffffffc355b4fcdd62b25a0e3f78a172p-5,
+    -0x1.f05404p-5
+  },
+  { // Entry 262
+    -0x1.fffffda2504a236163da32bc8033b657p-5,
+    -0x1.f05402p-5
+  },
+  { // Entry 263
+    -0x1.fffffb814adf6e2825881cac148330d7p-5,
+    -0x1.f054p-5
+  },
+  { // Entry 264
+    -0x1.fffff9604574dd31a7b744aef831786ep-5,
+    -0x1.f053fep-5
+  },
+  { // Entry 265
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 266
+    0x1.62e42feba39ef15793c611dab1909808p6,
+    0x1.fffffep127
+  },
+  { // Entry 267
+    0x1.62e42fe7a39eeb5793bcbc854d3b429ap6,
+    0x1.fffffcp127
+  },
+  { // Entry 268
+    0x1.6bcbed6499137a6d8cb88a3b46fe313bp0,
+    0x1.921fb6p1
+  },
+  { // Entry 269
+    0x1.e3703e42b92e44cc4a16c64759347ba9p-1,
+    0x1.921fb6p0
+  },
+  { // Entry 270
+    0x1.62e431efa39df357947211da3290986fp-1,
+    0x1.000002p0
+  },
+  { // Entry 271
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p0
+  },
+  { // Entry 272
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 273
+    0x1.62e42eefa39eb35793b211daaa909805p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 274
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p4,
+    -0x1.fffffep-1
+  },
+  { // Entry 275
+    0x1.28c6c410c6e97e86ac65cbbaf9be56e1p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 276
+    -0x1.89fa00c1dfad872a5efe4c31eb7dddb5p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 277
+    0x1.000001fffffffffffffffffffffffffdp-126,
+    0x1.000002p-126
+  },
+  { // Entry 278
+    -0x1.00000200000000000000000000000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 279
+    0x1.fffffffffffffffffffffffffffffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 280
+    -0x1.00000000000000000000000000000002p-126,
+    -0x1.p-126
+  },
+  { // Entry 281
+    0x1.fffffbfffffffffffffffffffffffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 282
+    -0x1.fffffc00000000000000000000000003p-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 283
+    0x1.fffff7fffffffffffffffffffffffffcp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 284
+    -0x1.fffff800000000000000000000000003p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 285
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 286
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 287
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 288
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 289
+    0.0,
+    0.0f
+  },
+  { // Entry 290
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/log2_intel_data.h b/tests/math_data/log2_intel_data.h
new file mode 100644
index 0000000..8a4fb79
--- /dev/null
+++ b/tests/math_data/log2_intel_data.h
@@ -0,0 +1,1422 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_log2_intel_data[] = {
+  { // Entry 0
+    -0x1.fefffffffffffff4755c4d6a3e815099p9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 1
+    -0x1.dfffffffffa3a7ffc265aaf2255b6929p3,
+    0x1.0000000002001p-15
+  },
+  { // Entry 2
+    0x1.14ff58be06e4eb0f63ba8e7579bab913p-37,
+    0x1.00000000060p0
+  },
+  { // Entry 3
+    0x1.14ff5a1566a9a8000208af7208121486p-26,
+    0x1.0000003000004p0
+  },
+  { // Entry 4
+    0x1.4329e6fafed4ec17674fb20107ee4738p-24,
+    0x1.000000ep0
+  },
+  { // Entry 5
+    0x1.f2d8fc80dac97800003cbce6797ac725p-22,
+    0x1.0000056719764p0
+  },
+  { // Entry 6
+    0x1.dc413771d9f3c80050b7ef09134bfc65p-10,
+    0x1.005294a5294a4p0
+  },
+  { // Entry 7
+    0x1.f94f46da272ae87214f66783dc0012aep-10,
+    0x1.00579f3c8a71dp0
+  },
+  { // Entry 8
+    0x1.5af457c06976d86934e812fcabd086a0p-9,
+    0x1.00785b0addce9p0
+  },
+  { // Entry 9
+    0x1.9002e361d485cbe42f7c524eb194d904p6,
+    0x1.0080402010080p100
+  },
+  { // Entry 10
+    0x1.ebccc1095cfa8866ace79cfc00544c63p-9,
+    0x1.00aaaaaaaa9abp0
+  },
+  { // Entry 11
+    0x1.6fe50b6ef08517f8e37b001794f4441cp-7,
+    0x1.020p0
+  },
+  { // Entry 12
+    -0x1.f15f624786a9ffffff74dc63a8516430p-1,
+    0x1.051eb856134c8p-1
+  },
+  { // Entry 13
+    0x1.d73e46341148efff33d83f08a3113bb1p-6,
+    0x1.0527acc8ad0c0p0
+  },
+  { // Entry 14
+    0x1.06844f3329cf480160c9207b0fe9686dp-5,
+    0x1.05bffd7177f90p0
+  },
+  { // Entry 15
+    0x1.6d16ccbfe831300071d2e127dcadc62cp-5,
+    0x1.080813d392eeap0
+  },
+  { // Entry 16
+    0x1.bd735eb18cf5e801185222972fe7d7f7p-5,
+    0x1.09d53e5078566p0
+  },
+  { // Entry 17
+    0x1.883a578a2144d80000082236bb975a7bp6,
+    0x1.0a4fea894ce63p98
+  },
+  { // Entry 18
+    0x1.e52bb32dde0e37835b09979ee48eb915p-5,
+    0x1.0aba57c4ca2d2p0
+  },
+  { // Entry 19
+    0x1.8c4d60a6f91cffffffc4db521ec23052p1,
+    0x1.11a2ad570fc84p3
+  },
+  { // Entry 20
+    0x1.3c10652cd2c037b722d8c301a9cbb787p-3,
+    0x1.1ce739ce739cdp0
+  },
+  { // Entry 21
+    0x1.25a57ea54060affffd6e2b38d8a6e680p3,
+    0x1.214e5031c9c98p9
+  },
+  { // Entry 22
+    -0x1.95d8976fa2bec7fffe44e71ab30da275p-1,
+    0x1.2790a7a4ac2e0p-1
+  },
+  { // Entry 23
+    0x1.ad532cd7cfc0c800fec9752b0728c5e1p-3,
+    0x1.280958add66e8p0
+  },
+  { // Entry 24
+    -0x1.92a321a719e2f7ffffa46c9962f213fcp-1,
+    0x1.28da10faa7922p-1
+  },
+  { // Entry 25
+    0x1.f00d883a5154c80b7cdca07e1f4c03b7p-3,
+    0x1.2ecc5d98bb317p0
+  },
+  { // Entry 26
+    -0x1.79538de327eb0000008a31eeec5b4479p-1,
+    0x1.333333363af15p-1
+  },
+  { // Entry 27
+    -0x1.79538dd93df7d800008833cc9d230deap-1,
+    0x1.3333333a5a724p-1
+  },
+  { // Entry 28
+    0x1.83988d0dfa3b6fffff7c315d9eb388a3p-2,
+    0x1.4ccccccd37c59p0
+  },
+  { // Entry 29
+    0x1.83988d1cb5af2ffffffb364351973dbfp-2,
+    0x1.4cccccd08960ap0
+  },
+  { // Entry 30
+    0x1.60e6235281e10fffff72c07b47d5653ap0,
+    0x1.4cccccdabef48p1
+  },
+  { // Entry 31
+    0x1.325fe221441468000004dbe427ffcc6ap1,
+    0x1.5049964882f16p2
+  },
+  { // Entry 32
+    -0x1.95c01a39fbdf57ffa2ec6f697886f6abp0,
+    0x1.55555555554d3p-2
+  },
+  { // Entry 33
+    0x1.b219b408ac406801297f9c0f313a0abcp-2,
+    0x1.57715d9c62be2p0
+  },
+  { // Entry 34
+    -0x1.14c560fe68af880e0a0f337d55565281p-1,
+    0x1.6p-1
+  },
+  { // Entry 35
+    -0x1.5140ccfbc94ba7fc14cae25af1322e19p3,
+    0x1.6057ff1745294p-11
+  },
+  { // Entry 36
+    0x1.7c44eecc79d9080000884a87ce09a1e3p0,
+    0x1.6666667712026p1
+  },
+  { // Entry 37
+    0x1.f44c3b80ce1b7f53077e2d0ba2df3c58p-2,
+    0x1.672ea4c8ed13cp0
+  },
+  { // Entry 38
+    0x1.7e3d59b76fecf800001f276bfc801af5p0,
+    0x1.685132bfb7bd6p1
+  },
+  { // Entry 39
+    -0x1.a02b5ec4fc7c87ff9784e19a86accb9ep2,
+    0x1.696p-7
+  },
+  { // Entry 40
+    0x1.fffffffffff39d44979cc67bcf7dedfap-2,
+    0x1.6a09e667f3b9cp0
+  },
+  { // Entry 41
+    -0x1.ffffffffffe3d5cb0585a3840c91514cp-2,
+    0x1.6a09e667f3c3bp-1
+  },
+  { // Entry 42
+    -0x1.ebe47960e3c087fe4e5268625f5a697ap-2,
+    0x1.6f0p-1
+  },
+  { // Entry 43
+    -0x1.9e9716d1cb72c80133c5f0f373cd97d0p2,
+    0x1.6f9be6f9be6f8p-7
+  },
+  { // Entry 44
+    0x1.182ffdcced70affff9846eab53e769dfp-1,
+    0x1.761702ac1314cp0
+  },
+  { // Entry 45
+    -0x1.c5272484399d1fffa79b8c4ab89ea8bcp-2,
+    0x1.78c0475799b40p-1
+  },
+  { // Entry 46
+    -0x1.c1bae6863c7b178789fef871a533f17ap-2,
+    0x1.79ap-1
+  },
+  { // Entry 47
+    -0x1.b7fcec2565ee77fbd36d69837dd95420p1,
+    0x1.7a17944879f04p-4
+  },
+  { // Entry 48
+    0x1.95c01a410a1af7ffffffff18ac20bc4fp0,
+    0x1.8000000756038p1
+  },
+  { // Entry 49
+    -0x1.b5a2a91024a237fc250d48b7dfc575f6p6,
+    0x1.81a6a65785de5p-110
+  },
+  { // Entry 50
+    -0x1.5b2c3da19723a80db6a0480592812599p0,
+    0x1.9p-2
+  },
+  { // Entry 51
+    -0x1.9596d761c3c1f000942a87960c4e6acap2,
+    0x1.954p-7
+  },
+  { // Entry 52
+    -0x1.361f7a0f40acf80008a3cdbb56ef43a3p-2,
+    0x1.9f0d1c4a85df8p-1
+  },
+  { // Entry 53
+    -0x1.a64a14ea31ff27ffffc6e0491c00ece0p1,
+    0x1.a01f56d5c8bf5p-4
+  },
+  { // Entry 54
+    0x1.36bda7028a6c18000436ccebd654b112p3,
+    0x1.a2f4704a7b7fcp9
+  },
+  { // Entry 55
+    -0x1.9162c8a7c89d6fff3b61696cc0cb7b08p2,
+    0x1.a82p-7
+  },
+  { // Entry 56
+    -0x1.3df5f27f08238fff3d930b0aa7b67e19p0,
+    0x1.b0ec3b0ec3b0cp-2
+  },
+  { // Entry 57
+    0x1.c20a0d80f7dc7000c26cf4f5584981e6p0,
+    0x1.b0ec3b0ec3b0cp1
+  },
+  { // Entry 58
+    0x1.f32d6c73fe4eb00000998f802fd894a2p2,
+    0x1.bd9cec1c72c90p7
+  },
+  { // Entry 59
+    -0x1.4f575b7d4160880182c6f69306d03c28p-3,
+    0x1.c910ef0d6d89fp-1
+  },
+  { // Entry 60
+    -0x1.4f278abffb110801a3d7edcb79ee5f32p-3,
+    0x1.c91854af9ee26p-1
+  },
+  { // Entry 61
+    -0x1.285378da90d7e7fb008eedf0a10fba48p-3,
+    0x1.cf243ff1971a1p-1
+  },
+  { // Entry 62
+    0x1.b74949020f785800105ca3140afb53b5p-1,
+    0x1.d00000080p0
+  },
+  { // Entry 63
+    -0x1.020fbb4ae01c67fa85f5128eef800678p-3,
+    0x1.d52db96328edcp-1
+  },
+  { // Entry 64
+    0x1.730a8d241efbb7fffff32ce95a694993p1,
+    0x1.dd4d6407c04c0p2
+  },
+  { // Entry 65
+    -0x1.7d06d263cf06e8013519197ee311d70dp-4,
+    0x1.e007446d5317ap-1
+  },
+  { // Entry 66
+    -0x1.651a043e59908801518f9ad8a730b006p-4,
+    0x1.e1f9cfe4da365p-1
+  },
+  { // Entry 67
+    -0x1.c315ace83f6d87ffd47ee348821be931p-5,
+    0x1.ecd393ee2a22dp-1
+  },
+  { // Entry 68
+    -0x1.c1a2dd30e92c97fe1e8a8927bca88d09p-5,
+    0x1.ece30a99708f3p-1
+  },
+  { // Entry 69
+    -0x1.31811414c9f457fedb339a2a59aa6a15p-5,
+    0x1.f2ef441966b20p-1
+  },
+  { // Entry 70
+    -0x1.ff54d4e01906700082476686f339feb0p-6,
+    0x1.f50b068c69ab9p-1
+  },
+  { // Entry 71
+    -0x1.fe4764e025a7a8010db1b6cf13da17afp-6,
+    0x1.f510bcafa535bp-1
+  },
+  { // Entry 72
+    -0x1.e9c8fb8a7a8ff9f9d482d43f89c910f1p-6,
+    0x1.f58p-1
+  },
+  { // Entry 73
+    -0x1.cff929eee46f28012d55ba72f9106a3fp-6,
+    0x1.f60c45b178d4dp-1
+  },
+  { // Entry 74
+    -0x1.cfbe0973d009a801f32a0b405f64c8fbp-6,
+    0x1.f60d8730dc09ap-1
+  },
+  { // Entry 75
+    -0x1.aef13de1197f92a24897297a335df9e7p-6,
+    0x1.f6cp-1
+  },
+  { // Entry 76
+    -0x1.a2551c8f2ac46800ba85b1a1eae0a6e2p-6,
+    0x1.f704add85e4a5p-1
+  },
+  { // Entry 77
+    -0x1.a21fbdfed5c5a801e2269de517fa7ab6p-6,
+    0x1.f705d098ffd9dp-1
+  },
+  { // Entry 78
+    -0x1.a0b920176bda5800c044f6f904f1595cp-6,
+    0x1.f70d7261c2ba0p-1
+  },
+  { // Entry 79
+    -0x1.c587cdb2b5cc67cae4990a6eaf50ba8cp-9,
+    0x1.fec603682f6b8p-1
+  },
+  { // Entry 80
+    -0x1.7c16ffe1cccb47d5379db27f7b490df5p-9,
+    0x1.fef8ce70306d5p-1
+  },
+  { // Entry 81
+    -0x1.71b0ea42e4e818440ecc7e467e125d9cp-9,
+    0x1.ff0000000000cp-1
+  },
+  { // Entry 82
+    -0x1.71b0ea42c98838d39811a1f869da817dp-9,
+    0x1.ff0000000013bp-1
+  },
+  { // Entry 83
+    -0x1.fe3672e0fc0b17be54e4caf20434a198p-10,
+    0x1.ff4f4b00a4f8ep-1
+  },
+  { // Entry 84
+    -0x1.f914d523f178576eeb72527f2b70a29cp-10,
+    0x1.ff5111a810580p-1
+  },
+  { // Entry 85
+    -0x1.f914d523ee66777286ccfd4913235594p-10,
+    0x1.ff5111a810591p-1
+  },
+  { // Entry 86
+    -0x1.de7e861144ac97832a4e3a5d92856809p-10,
+    0x1.ff5a457a5e13ep-1
+  },
+  { // Entry 87
+    -0x1.b6d5736af0ac97d260200b6dea2e4c1bp-10,
+    0x1.ff67fffffffffp-1
+  },
+  { // Entry 88
+    -0x1.54c6cf781fa087d33241ec17c4837255p-10,
+    0x1.ff89f2f328ed2p-1
+  },
+  { // Entry 89
+    -0x1.fb243353a93b57621a8538f059d9ae9cp-11,
+    0x1.ffa826070f4cbp-1
+  },
+  { // Entry 90
+    -0x1.b82668250050d778d8993a10e828c390p-11,
+    0x1.ffb3bffffffffp-1
+  },
+  { // Entry 91
+    -0x1.c0050ccaf8b8980002bd379e2a6c6214p2,
+    0x1.ffe3fffffc050p-8
+  },
+  { // Entry 92
+    -0x1.7d4120671257680005a86d606dcf2f32p-14,
+    0x1.fff7bdf17bdefp-1
+  },
+  { // Entry 93
+    -0x1.018000b8aaf5a80007b2db4c192253cbp10,
+    0x1.fffbfffff5ep-1031
+  },
+  { // Entry 94
+    -0x1.14ff72b62bdf4ffe64fb34d59dd51e74p-18,
+    0x1.ffff9ffffffffp-1
+  },
+  { // Entry 95
+    -0x1.f8000171548d6801817dc6695b1d7bb1p5,
+    0x1.ffffcp-64
+  },
+  { // Entry 96
+    -0x1.fe4a9a023f0577fdff3db84b62d9f2eap-21,
+    0x1.ffffe9e4b0628p-1
+  },
+  { // Entry 97
+    -0x1.fa4ac0aba3c2a7fc024396607228ba9dp-21,
+    0x1.ffffea110b39dp-1
+  },
+  { // Entry 98
+    -0x1.d6a5b47f4af0f7fd4f300c0b6918c63fp-21,
+    0x1.ffffeb9c5b2d8p-1
+  },
+  { // Entry 99
+    -0x1.715477c9d1f81923f8738f56fafb397bp-29,
+    0x1.ffffffeffffffp-1
+  },
+  { // Entry 100
+    -0x1.886a76622be3cab6d2103fbee1307674p-36,
+    0x1.ffffffffddfffp-1
+  },
+  { // Entry 101
+    -0x1.1500ca1283b5a7fbb9fa255a6b5e382bp-37,
+    0x1.fffffffff3fffp-1
+  },
+  { // Entry 102
+    -0x1.8000000000b8b0007b35bf2c5e4202cep1,
+    0x1.fffffffffdfffp-4
+  },
+  { // Entry 103
+    -0x1.00000000005c58003d9adf962f210167p2,
+    0x1.fffffffffdfffp-5
+  },
+  { // Entry 104
+    -0x1.40000000005c58003d9adf962f210167p2,
+    0x1.fffffffffdfffp-6
+  },
+  { // Entry 105
+    -0x1.c0000000005c58003d9adf962f210167p2,
+    0x1.fffffffffdfffp-8
+  },
+  { // Entry 106
+    0x1.7fffffffff474fff84ca40d3a1bdfd31p1,
+    0x1.fffffffffdfffp2
+  },
+  { // Entry 107
+    -0x1.9f7f051d0f361814496a13788aa1cd5fp-50,
+    0x1.ffffffffffff7p-1
+  },
+  { // Entry 108
+    -0x1.000000000000126e8d1ea7de883e83ddp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 109
+    -0x1.5614640c6fbc486cb295b10f8abd6939p-2,
+    0x1.962b5f9438d25p-1
+  },
+  { // Entry 110
+    -0x1.7b67e3d8e1879c50407e8e09ca62d7c2p-3,
+    0x1.c24cd8c07de7ep-1
+  },
+  { // Entry 111
+    -0x1.9cab985fe1d8d99581e09a95c3fac8e5p-5,
+    0x1.ee6e51ecc2fd7p-1
+  },
+  { // Entry 112
+    0x1.2ae04a51c9bc0b1821ec386516792b26p-4,
+    0x1.0d47e58c84098p0
+  },
+  { // Entry 113
+    0x1.7e235191cc46bfaed961bbad6075fcacp-3,
+    0x1.2358a222a6944p0
+  },
+  { // Entry 114
+    0x1.2aebb4eed34bf42bc5448a189070885ap-2,
+    0x1.39695eb8c91f0p0
+  },
+  { // Entry 115
+    0x1.8f6e7fe9764c2e91cb4ffe5f0bc8c5bdp-2,
+    0x1.4f7a1b4eeba9cp0
+  },
+  { // Entry 116
+    0x1.ed89a2dc1bb787ab7102598199c4314ep-2,
+    0x1.658ad7e50e348p0
+  },
+  { // Entry 117
+    0x1.2300d01a02b0f4c423375f5f27dc7268p-1,
+    0x1.7b9b947b30bf4p0
+  },
+  { // Entry 118
+    0x1.4cbcd1db0cd52626c88c135def6fe9adp-1,
+    0x1.91ac5111534a0p0
+  },
+  { // Entry 119
+    0x1.743d53168a525134e8343eebcf59fe0ep-1,
+    0x1.a7bd0da775d4cp0
+  },
+  { // Entry 120
+    0x1.99bc604e5748bb53276e45341eb98a06p-1,
+    0x1.bdcdca3d985f8p0
+  },
+  { // Entry 121
+    0x1.bd6b9ae6661c8790715131587a707f63p-1,
+    0x1.d3de86d3baea4p0
+  },
+  { // Entry 122
+    0x1.df75c6b861b93599aaeb3776b6013c7dp-1,
+    0x1.e9ef4369dd750p0
+  },
+  { // Entry 123
+    0x1.ffffffffffffa3aae26b51f401dccee2p-1,
+    0x1.ffffffffffffcp0
+  },
+  { // Entry 124
+    -0x1.000000000000126e8d1ea7de883e83ddp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 125
+    -0x1.733246b9a317f0bca830a0c588c3277bp-2,
+    0x1.8e3e170bf282dp-1
+  },
+  { // Entry 126
+    -0x1.e54e37a9c4bd980cfe450419c6f883fcp-3,
+    0x1.b27247aff148ep-1
+  },
+  { // Entry 127
+    -0x1.f19dcbcf827de4f7d32b492b04a24c27p-4,
+    0x1.d6a67853f00efp-1
+  },
+  { // Entry 128
+    -0x1.dd88a259f451a87b03861bb7688f43cep-7,
+    0x1.fadaa8f7eed50p-1
+  },
+  { // Entry 129
+    0x1.5c01a39fbd67e68597bbe1ac26c6be25p-4,
+    0x1.0f876ccdf6cd9p0
+  },
+  { // Entry 130
+    0x1.6cb0f6865c8e97c69cfca0255e6776bap-3,
+    0x1.21a1851ff630ap0
+  },
+  { // Entry 131
+    0x1.0fe8572e5293c2a44ea258726691bcdep-2,
+    0x1.33bb9d71f593bp0
+  },
+  { // Entry 132
+    0x1.64594d130cfbbf489ca3faaa8e6ee937p-2,
+    0x1.45d5b5c3f4f6cp0
+  },
+  { // Entry 133
+    0x1.b439310b4187ea516fa4708c4226a66dp-2,
+    0x1.57efce15f459dp0
+  },
+  { // Entry 134
+    0x1.ffffffffffffdb22e5c2b042ef82f844p-2,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 135
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.8p-1
+  },
+  { // Entry 136
+    -0x1.1c31ddd1b3bdb7e45c68feca52877fddp-2,
+    0x1.a666666666666p-1
+  },
+  { // Entry 137
+    -0x1.374d65d9e60937e1e9c3af53f2460781p-3,
+    0x1.cccccccccccccp-1
+  },
+  { // Entry 138
+    -0x1.2b38505f8a2a84910fe2def6e099c1a4p-5,
+    0x1.f333333333332p-1
+  },
+  { // Entry 139
+    0x1.20508f547ede543575d3d1c5271c8aebp-4,
+    0x1.0ccccccccccccp0
+  },
+  { // Entry 140
+    0x1.5c01a39fbd67d5d476c5408b1c684536p-3,
+    0x1.1ffffffffffffp0
+  },
+  { // Entry 141
+    0x1.0d58e42b1da11244cfd82a2743f07a46p-2,
+    0x1.3333333333332p0
+  },
+  { // Entry 142
+    0x1.66e8c01641ed632aa3e56de7648499cdp-2,
+    0x1.4666666666665p0
+  },
+  { // Entry 143
+    0x1.bb59b5fafc553e2891d2d31fea53fcb0p-2,
+    0x1.5999999999998p0
+  },
+  { // Entry 144
+    0x1.059cccf99870a58ae5bee787b5da3e26p-1,
+    0x1.6cccccccccccbp0
+  },
+  { // Entry 145
+    0x1.2b803473f7acd1b12c5db00c0f9d85f7p-1,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 146
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 147
+    0x1.199b728cb9d0c325536aa229a8894fd2p-3,
+    0x1.199999999999ap0
+  },
+  { // Entry 148
+    0x1.0d58e42b1da1ac2801254c3b38d1f6e5p-2,
+    0x1.3333333333334p0
+  },
+  { // Entry 149
+    0x1.83988d0c1f611efc28e37b6de8f0d25ep-2,
+    0x1.4cccccccccccep0
+  },
+  { // Entry 150
+    0x1.f113baed305e266df10e8a16d5d1b604p-2,
+    0x1.6666666666668p0
+  },
+  { // Entry 151
+    0x1.2b803473f7ad4ccd53ce981c057004fdp-1,
+    0x1.8000000000002p0
+  },
+  { // Entry 152
+    0x1.5b2c3da19723ed4d8ccfca8e89888f01p-1,
+    0x1.999999999999cp0
+  },
+  { // Entry 153
+    0x1.87f42b97294a21112b6763a4c5b15c5ep-1,
+    0x1.b333333333336p0
+  },
+  { // Entry 154
+    0x1.b22ca689867e189efbc280384c02430cp-1,
+    0x1.cccccccccccd0p0
+  },
+  { // Entry 155
+    0x1.da1c9885a0c428156893856b99d4ce5ap-1,
+    0x1.e66666666666ap0
+  },
+  { // Entry 156
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 157
+    0x1.90p6,
+    0x1.0p100
+  },
+  { // Entry 158
+    0x1.908ccdb9465ce86192a9b55114d444a7p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 159
+    0x1.910d58e42b1da1ac2801254c3b38d1f6p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 160
+    0x1.9183988d0c1f611efc28e37b6de8f0d2p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 161
+    0x1.91f113baed305e266df10e8a16d5d1b6p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 162
+    0x1.92570068e7ef5a999aa79d30380ae009p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 163
+    0x1.92b6587b432e47da9b199f951d13111ep6,
+    0x1.999999999999cp100
+  },
+  { // Entry 164
+    0x1.930fe8572e5294422256cec7498b62b8p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 165
+    0x1.9364594d130cfc313df7850070980486p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 166
+    0x1.93b439310b4188502ad1270ad733a99cp6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 167
+    0x1.94p6,
+    0x1.0p101
+  },
+  { // Entry 168
+    0x1.90p7,
+    0x1.0p200
+  },
+  { // Entry 169
+    0x1.904666dca32e7430c954daa88a6a2253p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 170
+    0x1.9086ac72158ed0d6140092a61d9c68fbp7,
+    0x1.3333333333334p200
+  },
+  { // Entry 171
+    0x1.90c1cc46860fb08f7e1471bdb6f47869p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 172
+    0x1.90f889dd76982f1336f887450b6ae8dbp7,
+    0x1.6666666666668p200
+  },
+  { // Entry 173
+    0x1.912b803473f7ad4ccd53ce981c057004p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 174
+    0x1.915b2c3da19723ed4d8ccfca8e89888fp7,
+    0x1.999999999999cp200
+  },
+  { // Entry 175
+    0x1.9187f42b97294a21112b6763a4c5b15cp7,
+    0x1.b333333333336p200
+  },
+  { // Entry 176
+    0x1.91b22ca689867e189efbc280384c0243p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 177
+    0x1.91da1c9885a0c428156893856b99d4cep7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 178
+    0x1.92p7,
+    0x1.0p201
+  },
+  { // Entry 179
+    0x1.f4p9,
+    0x1.0p1000
+  },
+  { // Entry 180
+    0x1.f41199b728cb9d0c325536aa229a8894p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 181
+    0x1.f421ab1c8563b435850024a987671a3ep9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 182
+    0x1.f4307311a183ec23df851c6f6dbd1e1ap9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 183
+    0x1.f43e22775da60bc4cdbe21d142daba36p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 184
+    0x1.f44ae00d1cfdeb533354f3a607015c01p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 185
+    0x1.f456cb0f6865c8fb536333f2a3a26223p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 186
+    0x1.f461fd0ae5ca5288444ad9d8e9316c57p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 187
+    0x1.f46c8b29a2619f8627bef0a00e130090p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 188
+    0x1.f47687262168310a055a24e15ae67533p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 189
+    0x1.f480p9,
+    0x1.0p1001
+  },
+  { // Entry 190
+    -0x1.715481dd5c5d93663255eca7ba82aeb6p-20,
+    0x1.ffffep-1
+  },
+  { // Entry 191
+    -0x1.71547c180a27f362d17a1f59be1bb55dp-21,
+    0x1.fffffp-1
+  },
+  { // Entry 192
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 193
+    0x1.7154708d66755d9fe119ed1e85c13f40p-21,
+    0x1.0000080p0
+  },
+  { // Entry 194
+    0x1.71546ac814f867d7a99ac240f177d35fp-20,
+    0x1.00001p0
+  },
+  { // Entry 195
+    -0x1.715476559ad8ce249f3237b562a13af0p-30,
+    0x1.fffffff80p-1
+  },
+  { // Entry 196
+    -0x1.71547654298457cc21b07cded2333ea6p-31,
+    0x1.fffffffc0p-1
+  },
+  { // Entry 197
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 198
+    0x1.7154765146db6b26b150b9ea12c16a1ap-31,
+    0x1.000000020p0
+  },
+  { // Entry 199
+    0x1.7154764fd586f4d9be72b1a943d27a16p-30,
+    0x1.000000040p0
+  },
+  { // Entry 200
+    -0x1.71547652b8e88bb2a66c90adb569ed7cp-40,
+    0x1.fffffffffe0p-1
+  },
+  { // Entry 201
+    -0x1.71547652b88c369511be286039f5fb20p-41,
+    0x1.ffffffffff0p-1
+  },
+  { // Entry 202
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 203
+    0x1.71547652b7d38c59e862106f7e37730ap-41,
+    0x1.00000000008p0
+  },
+  { // Entry 204
+    0x1.71547652b777373c53b460cc3decdcc6p-40,
+    0x1.00000000010p0
+  },
+  { // Entry 205
+    -0x1.71547652b8300fa20bda54a6d61b2f2ap-50,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 206
+    -0x1.71547652b82ff88cc4752923d23e6580p-51,
+    0x1.ffffffffffffcp-1
+  },
+  { // Entry 207
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 208
+    0x1.71547652b82fca6235aad21dd60f75dep-51,
+    0x1.0000000000002p0
+  },
+  { // Entry 209
+    0x1.71547652b82fb34cee45a69addbd4fe6p-50,
+    0x1.0000000000004p0
+  },
+  { // Entry 210
+    0x1.fffffffffffffffa3aae26b51f40630cp9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 211
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 212
+    -0x1.00000000000033138899b7a32401fb1cp-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 213
+    -0x1.000000000000126e8d1ea7de883e83ddp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 214
+    -0x1.ffffffffffffe39323473033dbd8c22ap-2,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 215
+    0x1.ffffffffffff99d8eecc90b9b7fc09c7p-2,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 216
+    0x1.ffffffffffffdb22e5c2b042ef82f844p-2,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 217
+    0x1.0000000000000e366e5c67e612139eeap-1,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 218
+    -0x1.0000000000000b8aa3b295c17f39e677p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 219
+    -0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 220
+    -0x1.ffffffffffffd1d57135a8fa054264d4p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 221
+    -0x1.a8ff971810a61f0f938c2bdfe202d351p-2,
+    0x1.7ffffffffffffp-1
+  },
+  { // Entry 222
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.8p-1
+  },
+  { // Entry 223
+    -0x1.a8ff971810a5a3f36c1b43cfec30544cp-2,
+    0x1.8000000000001p-1
+  },
+  { // Entry 224
+    0x1.2b803473f7acf0783639ea100efe9657p-1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 225
+    0x1.2b803473f7ad0f3f401624140d175ba2p-1,
+    0x1.8p0
+  },
+  { // Entry 226
+    0x1.2b803473f7ad2e0649f25e1809e7d5d9p-1,
+    0x1.8000000000001p0
+  },
+  { // Entry 227
+    0x1.ebccc1098ad858c1fcb8223ebc3a2d89p-9,
+    0x1.00aaaaaaaaaaap0
+  },
+  { // Entry 228
+    0x1.ebccc1098b06649e343f78ac72257de7p-9,
+    0x1.00aaaaaaaaaabp0
+  },
+  { // Entry 229
+    0x1.ebccc1098b34707a6bc6cf17493ced63p-9,
+    0x1.00aaaaaaaaaacp0
+  },
+  { // Entry 230
+    0x1.fffffffffffff4755c4d6a3e80c61988p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 231
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 232
+    0x1.0000000000000b8aa3b295c17eaf66cap1,
+    0x1.0000000000001p2
+  },
+  { // Entry 233
+    0x1.ffffffffffffe8eab89ad47d018c3311p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 234
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 235
+    0x1.000000000000171547652b82fd5ecd95p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 236
+    -0x1.71547652b82fe73ccee9488191df220fp-53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 237
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 238
+    0x1.71547652b82fd5ecd95d67df53a9dd50p-52,
+    0x1.0000000000001p0
+  },
+  { // Entry 239
+    -0x1.0000000000000b8aa3b295c17f39e677p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 240
+    -0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 241
+    -0x1.ffffffffffffd1d57135a8fa054264d4p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 242
+    -0x1.00000000000005c551d94ae0bf9cf33bp1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 243
+    -0x1.p1,
+    0x1.0p-2
+  },
+  { // Entry 244
+    -0x1.ffffffffffffe8eab89ad47d02a1326ap0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 245
+    -0x1.80000000000005c551d94ae0bf9cf33bp1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 246
+    -0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 247
+    -0x1.7ffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 248
+    -0x1.00000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 249
+    -0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 250
+    -0x1.fffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 251
+    -0x1.40000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 252
+    -0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 253
+    -0x1.3ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 254
+    -0x1.80000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 255
+    -0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 256
+    -0x1.7ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 257
+    -0x1.c0000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 258
+    -0x1.c0p2,
+    0x1.0p-7
+  },
+  { // Entry 259
+    -0x1.bffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-7
+  },
+  { // Entry 260
+    -0x1.0000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 261
+    -0x1.p3,
+    0x1.0p-8
+  },
+  { // Entry 262
+    -0x1.fffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-8
+  },
+  { // Entry 263
+    -0x1.2000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 264
+    -0x1.20p3,
+    0x1.0p-9
+  },
+  { // Entry 265
+    -0x1.1ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-9
+  },
+  { // Entry 266
+    -0x1.4000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 267
+    -0x1.40p3,
+    0x1.0p-10
+  },
+  { // Entry 268
+    -0x1.3ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-10
+  },
+  { // Entry 269
+    -0x1.a000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 270
+    -0x1.a0p3,
+    0x1.0p-13
+  },
+  { // Entry 271
+    -0x1.9ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 272
+    -0x1.a000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 273
+    -0x1.a0p3,
+    0x1.0p-13
+  },
+  { // Entry 274
+    -0x1.9ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 275
+    -0x1.80000000000005c551d94ae0bf9cf33bp1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 276
+    -0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 277
+    -0x1.7ffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 278
+    -0x1.8a8980abfbd38fec8261ce5ac7b2b316p-3,
+    0x1.bffffffffffffp-1
+  },
+  { // Entry 279
+    -0x1.8a8980abfbd32666a9b7e2df60d2bdc6p-3,
+    0x1.cp-1
+  },
+  { // Entry 280
+    -0x1.8a8980abfbd2bce0d10df763fdb79032p-3,
+    0x1.c000000000001p-1
+  },
+  { // Entry 281
+    -0x1.00000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 282
+    -0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 283
+    -0x1.fffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 284
+    -0x1.7d60496cfbb58b6d8d05c60c1e4defa0p-4,
+    0x1.dffffffffffffp-1
+  },
+  { // Entry 285
+    -0x1.7d60496cfbb4c673b4511f8c2b4e4fb7p-4,
+    0x1.ep-1
+  },
+  { // Entry 286
+    -0x1.7d60496cfbb40179db9c790c3edf8c5cp-4,
+    0x1.e000000000001p-1
+  },
+  { // Entry 287
+    -0x1.40000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 288
+    -0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 289
+    -0x1.3ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 290
+    -0x1.77394c9d958ed31cc5d7c5bf657ce7c7p-5,
+    0x1.effffffffffffp-1
+  },
+  { // Entry 291
+    -0x1.77394c9d958d55de5c380fe0871d757fp-5,
+    0x1.fp-1
+  },
+  { // Entry 292
+    -0x1.77394c9d958bd89ff2985a01b50a5933p-5,
+    0x1.f000000000001p-1
+  },
+  { // Entry 293
+    -0x1.80000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 294
+    -0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 295
+    -0x1.7ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 296
+    -0x1.743ee861f35851c7beb5800ff025220ap-6,
+    0x1.f7fffffffffffp-1
+  },
+  { // Entry 297
+    -0x1.743ee861f3556365483611f7c0bf059fp-6,
+    0x1.f80p-1
+  },
+  { // Entry 298
+    -0x1.743ee861f3527502d1b6a3dfa92b465cp-6,
+    0x1.f800000000001p-1
+  },
+  { // Entry 299
+    -0x1.c0000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 300
+    -0x1.c0p2,
+    0x1.0p-7
+  },
+  { // Entry 301
+    -0x1.bffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-7
+  },
+  { // Entry 302
+    -0x1.72c7ba20f73846a992511c7918df1e3ep-7,
+    0x1.fbfffffffffffp-1
+  },
+  { // Entry 303
+    -0x1.72c7ba20f73275b5d184a2c615b70ad4p-7,
+    0x1.fc0p-1
+  },
+  { // Entry 304
+    -0x1.72c7ba20f72ca4c210b8291341746042p-7,
+    0x1.fc00000000001p-1
+  },
+  { // Entry 305
+    -0x1.0000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 306
+    -0x1.p3,
+    0x1.0p-8
+  },
+  { // Entry 307
+    -0x1.fffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-8
+  },
+  { // Entry 308
+    -0x1.720d9c06a84180a8de11db415a9c19bfp-8,
+    0x1.fdfffffffffffp-1
+  },
+  { // Entry 309
+    -0x1.720d9c06a835ea6ef18f977e5d8a37abp-8,
+    0x1.fe0p-1
+  },
+  { // Entry 310
+    -0x1.720d9c06a82a5435050d53bbbd8733d9p-8,
+    0x1.fe00000000001p-1
+  },
+  { // Entry 311
+    -0x1.2000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 312
+    -0x1.20p3,
+    0x1.0p-9
+  },
+  { // Entry 313
+    -0x1.1ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-9
+  },
+  { // Entry 314
+    -0x1.71b0ea42e614c339acd1274e85c99f12p-9,
+    0x1.fefffffffffffp-1
+  },
+  { // Entry 315
+    -0x1.71b0ea42e5fda261dbbd1a498f533398p-9,
+    0x1.ff0p-1
+  },
+  { // Entry 316
+    -0x1.71b0ea42e5e6818a0aa90d455240385fp-9,
+    0x1.ff00000000001p-1
+  },
+  { // Entry 317
+    -0x1.4000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 318
+    -0x1.40p3,
+    0x1.0p-10
+  },
+  { // Entry 319
+    -0x1.3ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-10
+  },
+  { // Entry 320
+    -0x1.7182a894b6ca8f7bca8c2f767eabc572p-10,
+    0x1.ff7ffffffffffp-1
+  },
+  { // Entry 321
+    -0x1.7182a894b69c595f7920cea1619c6e57p-10,
+    0x1.ff8p-1
+  },
+  { // Entry 322
+    -0x1.7182a894b66e234327b56dcdb69a7d21p-10,
+    0x1.ff80000000001p-1
+  },
+  { // Entry 323
+    -0x1.a000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 324
+    -0x1.a0p3,
+    0x1.0p-13
+  },
+  { // Entry 325
+    -0x1.9ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 326
+    -0x1.715a3bc35aaead4b7ce65d43632af0adp-13,
+    0x1.ffeffffffffffp-1
+  },
+  { // Entry 327
+    -0x1.715a3bc3593d4d4a2a239745f6427420p-13,
+    0x1.fffp-1
+  },
+  { // Entry 328
+    -0x1.715a3bc357cbed48d760d15414b65d0dp-13,
+    0x1.fff0000000001p-1
+  },
+  { // Entry 329
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 330
+    0x1.fffffffffffffffa3aae26b51f40630cp9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 331
+    0x1.fffffffffffffff4755c4d6a3e8097eep9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 332
+    0x1.a6c873498ddf71a36f477a776fb34e4bp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 333
+    0x1.4d90e6931bbee346de8ef4eedf669c96p-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 334
+    0x1.71547652b82fd5ecd95d67df53a9dd50p-52,
+    0x1.0000000000001p0
+  },
+  { // Entry 335
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 336
+    -0x1.71547652b82fe73ccee9488191df220fp-53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 337
+    -0x1.64de32d9c882397242e216224132c6d2p-2,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 338
+    -0x1.fefffffffffffff4755c4d6a3e815099p9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 339
+    -0x1.ffp9,
+    0x1.0p-1022
+  },
+  { // Entry 340
+    -0x1.ff0000000000000b8aa3b295c17f6811p9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 341
+    -0x1.ff000000000000171547652b82ff88ccp9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 342
+    -0x1.0c40p10,
+    0x1.0p-1073
+  },
+  { // Entry 343
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 344
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 345
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 346
+    0x1.f4p6,
+    0x1.0p125
+  },
+  { // Entry 347
+    -0x1.fcp6,
+    0x1.0p-127
+  },
+  { // Entry 348
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 349
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 350
+    -0x1.p0,
+    0x1.0p-1
+  }
+};
diff --git a/tests/math_data/log2f_intel_data.h b/tests/math_data/log2f_intel_data.h
new file mode 100644
index 0000000..666a84e
--- /dev/null
+++ b/tests/math_data/log2f_intel_data.h
@@ -0,0 +1,1150 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_log2f_intel_data[] = {
+  { // Entry 0
+    0x1.715419fdb96231bd1fa15f37bfa42910p-17,
+    0x1.000080p0
+  },
+  { // Entry 1
+    0x1.14fe88ff5753fa56dc27bca056285672p-15,
+    0x1.000180p0
+  },
+  { // Entry 2
+    0x1.715305002e4ae466ed064a01ae55204ep-15,
+    0x1.0002p0
+  },
+  { // Entry 3
+    0x1.4327b20433837a3e2c610a392bbd295ap-14,
+    0x1.000380p0
+  },
+  { // Entry 4
+    0x1.64531effed17eb9b0a93b3ccaa24f82bp-13,
+    0x1.0007b8p0
+  },
+  { // Entry 5
+    -0x1.ffe7a4ffff5f125cad7f0468b55a873cp2,
+    0x1.004390p-8
+  },
+  { // Entry 6
+    -0x1.4fdd63002e000ea74a80c91b771feb2ep4,
+    0x1.0181p-21
+  },
+  { // Entry 7
+    0x1.61382d01166a5f656628676dd57287c3p-7,
+    0x1.01eb80p0
+  },
+  { // Entry 8
+    0x1.67ea1b041aeef5d06d27db173c4a8ec3p-7,
+    0x1.01f4dap0
+  },
+  { // Entry 9
+    0x1.6f089703fa8b836209e806374014eeeap-7,
+    0x1.01feccp0
+  },
+  { // Entry 10
+    0x1.d8c5b9000072814ba11dc07e3e55730cp-6,
+    0x1.052cp0
+  },
+  { // Entry 11
+    0x1.65ad73003698ae3b6629d42d6d969d65p-5,
+    0x1.07ddb4p0
+  },
+  { // Entry 12
+    0x1.671b720031bff18c21d3c6680b607a97p-5,
+    0x1.07e5e0p0
+  },
+  { // Entry 13
+    -0x1.bd01820013d2bdf2e708a03b63cad894p2,
+    0x1.0870p-7
+  },
+  { // Entry 14
+    0x1.bc8a3f002d49ff2fff61bbc88ca84366p-5,
+    0x1.09d0p0
+  },
+  { // Entry 15
+    0x1.d15cfd000ba18b834668273db43a54f4p-5,
+    0x1.0a48p0
+  },
+  { // Entry 16
+    0x1.254503fffff2c7469f0c551c58628c75p-4,
+    0x1.0d0686p0
+  },
+  { // Entry 17
+    0x1.8972445dbe2011fbaf76774ecaa1886bp-4,
+    0x1.11a0p0
+  },
+  { // Entry 18
+    -0x1.4e0dddfffd1fadff896c773a983cb069p4,
+    0x1.1684p-21
+  },
+  { // Entry 19
+    -0x1.6d9f4300000188d5e28bf9ecd7eb48a3p1,
+    0x1.1ac9bcp-3
+  },
+  { // Entry 20
+    0x1.3e8666fed9e0919054d1723c7bfa2a2ep-3,
+    0x1.1d24p0
+  },
+  { // Entry 21
+    -0x1.a9967dfffdea2f22e87a3d2cfb4653e0p-1,
+    0x1.1fc530p-1
+  },
+  { // Entry 22
+    -0x1.ac7b430000002b16a835260d35f73f3bp0,
+    0x1.40f572p-2
+  },
+  { // Entry 23
+    -0x1.50fd36ffff7b1fe211b2f1e467a808c6p1,
+    0x1.4a37aap-3
+  },
+  { // Entry 24
+    -0x1.68e3e700011eed1c8bdf78a5004ec845p4,
+    0x1.5c5780p-23
+  },
+  { // Entry 25
+    -0x1.14c560fe68af880e0a0f337d55565281p-1,
+    0x1.60p-1
+  },
+  { // Entry 26
+    0x1.eee0f9e9bd541c2161fbaa601ad44f9dp-2,
+    0x1.65ddfap0
+  },
+  { // Entry 27
+    0x1.ffff6b715e229192074dd520e800523dp-2,
+    0x1.6a09c2p0
+  },
+  { // Entry 28
+    0x1.ffffb4e49986d923a4e540f03b1da0dap-2,
+    0x1.6a09d4p0
+  },
+  { // Entry 29
+    -0x1.000008fd564a8532198fd9c602596351p-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 30
+    -0x1.5e7df5fe538ab34efb515ac93b443d55p2,
+    0x1.70p-6
+  },
+  { // Entry 31
+    0x1.3719d8ffda8ee27c20ca5d36ce40a19bp3,
+    0x1.a63c60p9
+  },
+  { // Entry 32
+    -0x1.95152a001cb0000297a418bc58741cd8p6,
+    0x1.a86a40p-102
+  },
+  { // Entry 33
+    -0x1.a86d52000000dde9cc8582ca6f4adf02p3,
+    0x1.aa932cp-14
+  },
+  { // Entry 34
+    -0x1.a65bf4fffdc2eb6e2bba1e155731485cp3,
+    0x1.be1dacp-14
+  },
+  { // Entry 35
+    0x1.19e96affffe46969e091319af39bf01dp3,
+    0x1.c0be08p8
+  },
+  { // Entry 36
+    -0x1.6b2194fffbcc473e6b408598b11c0b76p-3,
+    0x1.c4c990p-1
+  },
+  { // Entry 37
+    -0x1.b0747afff09129e7c27981832371a2b7p-4,
+    0x1.dbde6cp-1
+  },
+  { // Entry 38
+    -0x1.a31d90fffdc06fa674e6c77e0d27325ep3,
+    0x1.de9690p-14
+  },
+  { // Entry 39
+    -0x1.7d61ebfff707baf0a4babc7a455fdedap-4,
+    0x1.dfffdep-1
+  },
+  { // Entry 40
+    -0x1.8be3350000129024f1746df09b18e1c0p1,
+    0x1.e01448p-4
+  },
+  { // Entry 41
+    -0x1.2dab68ffff653aa0f522110f165fc6cdp-4,
+    0x1.e684aep-1
+  },
+  { // Entry 42
+    -0x1.1ddc06ffe493eb9e838bc57f1692f071p-5,
+    0x1.f3c3c0p-1
+  },
+  { // Entry 43
+    -0x1.fe5c28b51763fd9e597b74b77eaef363p-6,
+    0x1.f5104cp-1
+  },
+  { // Entry 44
+    -0x1.fb46c8ffb297bc8b36ec72bf8f845dafp-6,
+    0x1.f52108p-1
+  },
+  { // Entry 45
+    -0x1.83a4382bc0ca76ba53a02f5c39dd1105p1,
+    0x1.f600a8p-4
+  },
+  { // Entry 46
+    -0x1.c5685effd6dc60c465f6d4566400ea1bp-6,
+    0x1.f645bcp-1
+  },
+  { // Entry 47
+    -0x1.c0daa2ffe3fde42c220d9cdd6dba636bp-6,
+    0x1.f65e82p-1
+  },
+  { // Entry 48
+    -0x1.a0ab3effb22b2baa230d01d368f486cfp-6,
+    0x1.f70dbep-1
+  },
+  { // Entry 49
+    -0x1.9993e6b5eebc60c6416982df9bf027cdp-6,
+    0x1.f73462p-1
+  },
+  { // Entry 50
+    -0x1.90db40b3d98bebe6e068b72646536233p-6,
+    0x1.f763ecp-1
+  },
+  { // Entry 51
+    -0x1.805ce6d1eec4e554c05d1277b7a61f1ep-6,
+    0x1.f7bde0p-1
+  },
+  { // Entry 52
+    -0x1.71c5270003e7400a82571e14d211b1abp-9,
+    0x1.fefff2p-1
+  },
+  { // Entry 53
+    -0x1.4fd0950000f9ea163e3b6b379b806a27p-9,
+    0x1.ff1770p-1
+  },
+  { // Entry 54
+    -0x1.802e2bfffffc33f278fa52402320f10ap1,
+    0x1.ff800cp-4
+  },
+  { // Entry 55
+    -0x1.718867c39aac5ee37685394fe9bfd749p-13,
+    0x1.ffeffep-1
+  },
+  { // Entry 56
+    -0x1.72c684e5cfc146d2275210812c0c7f68p-16,
+    0x1.fffdfep-1
+  },
+  { // Entry 57
+    -0x1.71552efd6e75c155bd4e4ed94f59a26ap-16,
+    0x1.fffep-1
+  },
+  { // Entry 58
+    -0x1.48ef5e00535d9165bbb9b9a8c056f797p-18,
+    0x1.ffff8ep-1
+  },
+  { // Entry 59
+    -0x1.71547935612438aa6af6b5495892e719p-22,
+    0x1.fffff8p-1
+  },
+  { // Entry 60
+    -0x1.715477c40ca820a04d97be4efccd95a9p-23,
+    0x1.fffffcp-1
+  },
+  { // Entry 61
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 62
+    -0x1.000000d4175ddebaa6cc9d6112365229p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 63
+    -0x1.561462846d15350ee6248ecd4c1b002bp-2,
+    0x1.962b60p-1
+  },
+  { // Entry 64
+    -0x1.7b67dba86e896c0a53d2c939ef0d29bfp-3,
+    0x1.c24cdap-1
+  },
+  { // Entry 65
+    -0x1.9cab66c58143f2a800e68dbb02f54331p-5,
+    0x1.ee6e54p-1
+  },
+  { // Entry 66
+    0x1.2ae054380d16d8f59673a7e3928246cdp-4,
+    0x1.0d47e6p0
+  },
+  { // Entry 67
+    0x1.7e23503264c4ad371b8f163c4f9aef26p-3,
+    0x1.2358a2p0
+  },
+  { // Entry 68
+    0x1.2aebb187ce6ee362d3103a2200b286e2p-2,
+    0x1.39695ep0
+  },
+  { // Entry 69
+    0x1.8f6e7a2697b530fad3d12a9d6a8f1d3ap-2,
+    0x1.4f7a1ap0
+  },
+  { // Entry 70
+    0x1.ed899b07eb9cb8af2c927ecf12ec7cbep-2,
+    0x1.658ad6p0
+  },
+  { // Entry 71
+    0x1.2300cb4606615b744653e167d86f2813p-1,
+    0x1.7b9b92p0
+  },
+  { // Entry 72
+    0x1.4cbccc36deb50dd3e00c1a4eca18d57ep-1,
+    0x1.91ac4ep0
+  },
+  { // Entry 73
+    0x1.743d4cb7d92562e1484f862b688a46fbp-1,
+    0x1.a7bd0ap0
+  },
+  { // Entry 74
+    0x1.99bc5947999b190ccc67cef041311282p-1,
+    0x1.bdcdc6p0
+  },
+  { // Entry 75
+    0x1.bd6b934775bef13a6359e331efe67a11p-1,
+    0x1.d3de82p0
+  },
+  { // Entry 76
+    0x1.df75be8ef439ce361ebbb13fff3a7b53p-1,
+    0x1.e9ef3ep0
+  },
+  { // Entry 77
+    0x1.fffff758052d13b69dd6c8d6740a3357p-1,
+    0x1.fffffap0
+  },
+  { // Entry 78
+    -0x1.000000d4175ddebaa6cc9d6112365229p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 79
+    -0x1.73324a9b9d2895d79d8ddf07a502bep-2,
+    0x1.8e3e16p-1
+  },
+  { // Entry 80
+    -0x1.e54e432361189c3353cc06c2dd27d736p-3,
+    0x1.b27246p-1
+  },
+  { // Entry 81
+    -0x1.f19de909d7e63fd264a2c312d0c1789dp-4,
+    0x1.d6a676p-1
+  },
+  { // Entry 82
+    -0x1.dd89b738d21d0221c908b8a0c32f1212p-7,
+    0x1.fadaa6p-1
+  },
+  { // Entry 83
+    0x1.5c01921d594ace74709e134409d4ed24p-4,
+    0x1.0f876cp0
+  },
+  { // Entry 84
+    0x1.6cb0eb0cc03326cfabdb68ecee7aba40p-3,
+    0x1.21a184p0
+  },
+  { // Entry 85
+    0x1.0fe8503e467106a65788ddb3a15f5375p-2,
+    0x1.33bb9cp0
+  },
+  { // Entry 86
+    0x1.64594511e637e6f93b5cb2912b99abedp-2,
+    0x1.45d5b4p0
+  },
+  { // Entry 87
+    0x1.b4392815bf92113e75eb0dd2b26fd740p-2,
+    0x1.57efccp0
+  },
+  { // Entry 88
+    0x1.fffff62e925d61652c914504dc3ee2cep-2,
+    0x1.6a09e4p0
+  },
+  { // Entry 89
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.80p-1
+  },
+  { // Entry 90
+    -0x1.1c31df37d71943eb77829a1feb37b99ap-2,
+    0x1.a66666p-1
+  },
+  { // Entry 91
+    -0x1.374d6afb125968a0c493df15bf69e438p-3,
+    0x1.ccccccp-1
+  },
+  { // Entry 92
+    -0x1.2b386cc87f9a4eee785d4a5dbce887b7p-5,
+    0x1.f33332p-1
+  },
+  { // Entry 93
+    0x1.20507dbe3011bddb9a9b123c4341bc4cp-4,
+    0x1.0cccccp0
+  },
+  { // Entry 94
+    0x1.5c01a39fbd6879fa00b120a068badd12p-3,
+    0x1.20p0
+  },
+  { // Entry 95
+    0x1.0d58e803fedbad8f59d5947b2a21a425p-2,
+    0x1.333334p0
+  },
+  { // Entry 96
+    0x1.66e8c754261d0ebda20c00ad74e85091p-2,
+    0x1.466668p0
+  },
+  { // Entry 97
+    0x1.bb59c03d54eb4b10a384046c38ed39fdp-2,
+    0x1.59999cp0
+  },
+  { // Entry 98
+    0x1.059cd374571eb31852640bb553677c83p-1,
+    0x1.6cccd0p0
+  },
+  { // Entry 99
+    0x1.2b803473f7ad0f3f401624140d175ba2p-1,
+    0x1.80p0
+  },
+  { // Entry 100
+    0.0,
+    0x1.p0
+  },
+  { // Entry 101
+    0x1.199b76bf23e221a6231fc33bca41b607p-3,
+    0x1.19999ap0
+  },
+  { // Entry 102
+    0x1.0d58e803fedbad8f59d5947b2a21a425p-2,
+    0x1.333334p0
+  },
+  { // Entry 103
+    0x1.8398925fcd61fbf1aa81ef798b08bb2cp-2,
+    0x1.4ccccep0
+  },
+  { // Entry 104
+    0x1.f113c1858de496d814a68e82919d673bp-2,
+    0x1.666668p0
+  },
+  { // Entry 105
+    0x1.2b80384cd8e605e99a5cd99f34293888p-1,
+    0x1.800002p0
+  },
+  { // Entry 106
+    0x1.5b2c41f5948361383f498e179a6dd347p-1,
+    0x1.99999cp0
+  },
+  { // Entry 107
+    0x1.87f43057c707ec89ca00835fb95f66d7p-1,
+    0x1.b33336p0
+  },
+  { // Entry 108
+    0x1.b22cabaab2c8964911abde220f5f415cp-1,
+    0x1.ccccd0p0
+  },
+  { // Entry 109
+    0x1.da1c9dfd31a7706146ef266c16ed655dp-1,
+    0x1.e6666ap0
+  },
+  { // Entry 110
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 111
+    0x1.90p6,
+    0x1.p100
+  },
+  { // Entry 112
+    0x1.908ccdbb5f91f110d3118fe19de520dbp6,
+    0x1.19999ap100
+  },
+  { // Entry 113
+    0x1.910d58e803fedbad8f59d5947b2a21a4p6,
+    0x1.333334p100
+  },
+  { // Entry 114
+    0x1.918398925fcd61fbf1aa81ef798b08bbp6,
+    0x1.4ccccep100
+  },
+  { // Entry 115
+    0x1.91f113c1858de496d814a68e82919d67p6,
+    0x1.666668p100
+  },
+  { // Entry 116
+    0x1.9257007099b1cc0bd334b9b33e685271p6,
+    0x1.800002p100
+  },
+  { // Entry 117
+    0x1.92b65883eb2906c2707e931c2f34dba6p6,
+    0x1.99999cp100
+  },
+  { // Entry 118
+    0x1.930fe860af8e0fd913940106bf72becdp6,
+    0x1.b33336p100
+  },
+  { // Entry 119
+    0x1.936459575565912c922357bc441ebe82p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 120
+    0x1.93b4393bfa634ee0c28dde4cd82ddacap6,
+    0x1.e6666ap100
+  },
+  { // Entry 121
+    0x1.94p6,
+    0x1.p101
+  },
+  { // Entry 122
+    -0x1.715481dd5c5d93663255eca7ba82aeb6p-20,
+    0x1.ffffe0p-1
+  },
+  { // Entry 123
+    -0x1.71547c180a27f362d17a1f59be1bb55dp-21,
+    0x1.fffff0p-1
+  },
+  { // Entry 124
+    0.0,
+    0x1.p0
+  },
+  { // Entry 125
+    0x1.7154708d66755d9fe119ed1e85c13f40p-21,
+    0x1.000008p0
+  },
+  { // Entry 126
+    0x1.71546ac814f867d7a99ac240f177d35fp-20,
+    0x1.000010p0
+  },
+  { // Entry 127
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 128
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 129
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 130
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 131
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 132
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 133
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 134
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 135
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 136
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 137
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 138
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 139
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 140
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 141
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 142
+    0x1.fffffffa3aae23d27651e8410cc825cbp6,
+    0x1.fffffep127
+  },
+  { // Entry 143
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 144
+    -0x1.000004e8b6d14f4d69b75d7d91e08e98p-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 145
+    -0x1.000000d4175ddebaa6cc9d6112365229p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 146
+    -0x1.fffff97eefe066f380fa3704987b9811p-2,
+    0x1.6a09e8p-1
+  },
+  { // Entry 147
+    0x1.fffff62e925d61652c914504dc3ee2cep-2,
+    0x1.6a09e4p0
+  },
+  { // Entry 148
+    0x1.fffffe57d144428ab266c53ddb935bacp-2,
+    0x1.6a09e6p0
+  },
+  { // Entry 149
+    0x1.00000340880fcc863f82e47db3c233f7p-1,
+    0x1.6a09e8p0
+  },
+  { // Entry 150
+    -0x1.0000017154770b626b85efbccdf68d2ep0,
+    0x1.fffffep-2
+  },
+  { // Entry 151
+    -0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 152
+    -0x1.fffffa3aae2c7a711213405fc20a11b8p-1,
+    0x1.000002p-1
+  },
+  { // Entry 153
+    -0x1.a8ff9ec9d322112ed31f244bceb1ec85p-2,
+    0x1.7ffffep-1
+  },
+  { // Entry 154
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.80p-1
+  },
+  { // Entry 155
+    -0x1.a8ff8f664e33f42ccb464cc197ad8eefp-2,
+    0x1.800002p-1
+  },
+  { // Entry 156
+    0x1.2b80309b166ef76896706dda18a709bdp-1,
+    0x1.7ffffep0
+  },
+  { // Entry 157
+    0x1.2b803473f7ad0f3f401624140d175ba2p-1,
+    0x1.80p0
+  },
+  { // Entry 158
+    0x1.2b80384cd8e605e99a5cd99f34293888p-1,
+    0x1.800002p0
+  },
+  { // Entry 159
+    0x1.ebc51464ccd66f10e7d234a2a0ce225fp-9,
+    0x1.00aaa8p0
+  },
+  { // Entry 160
+    0x1.ebcad5e05d58c6ddfd6c09c193fb3e3ep-9,
+    0x1.00aaaap0
+  },
+  { // Entry 161
+    0x1.ebd0975be25fcf1843facabaa7aa7b51p-9,
+    0x1.00aaacp0
+  },
+  { // Entry 162
+    0x1.fffffe8eab88f49d947a1043320972d1p0,
+    0x1.fffffep1
+  },
+  { // Entry 163
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 164
+    0x1.000001715474e163bb7b2fe80f7d7b91p1,
+    0x1.000002p2
+  },
+  { // Entry 165
+    0x1.fffffd1d5711e93b28f420866412e5a2p-1,
+    0x1.fffffep0
+  },
+  { // Entry 166
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 167
+    0x1.000002e2a8e9c2c776f65fd01efaf723p0,
+    0x1.000002p1
+  },
+  { // Entry 168
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 169
+    0.0,
+    0x1.p0
+  },
+  { // Entry 170
+    0x1.715474e163bb7b2fe80f7d7b91f1851cp-23,
+    0x1.000002p0
+  },
+  { // Entry 171
+    -0x1.0000017154770b626b85efbccdf68d2ep0,
+    0x1.fffffep-2
+  },
+  { // Entry 172
+    -0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 173
+    -0x1.fffffa3aae2c7a711213405fc20a11b8p-1,
+    0x1.000002p-1
+  },
+  { // Entry 174
+    -0x1.000000b8aa3b85b135c2f7de66fb4697p1,
+    0x1.fffffep-3
+  },
+  { // Entry 175
+    -0x1.p1,
+    0x1.p-2
+  },
+  { // Entry 176
+    -0x1.fffffd1d57163d388909a02fe10508dcp0,
+    0x1.000002p-2
+  },
+  { // Entry 177
+    -0x1.800000b8aa3b85b135c2f7de66fb4697p1,
+    0x1.fffffep-4
+  },
+  { // Entry 178
+    -0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 179
+    -0x1.7ffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-3
+  },
+  { // Entry 180
+    -0x1.0000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-5
+  },
+  { // Entry 181
+    -0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 182
+    -0x1.fffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-4
+  },
+  { // Entry 183
+    -0x1.4000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-6
+  },
+  { // Entry 184
+    -0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 185
+    -0x1.3fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-5
+  },
+  { // Entry 186
+    -0x1.8000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-7
+  },
+  { // Entry 187
+    -0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 188
+    -0x1.7fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-6
+  },
+  { // Entry 189
+    -0x1.c000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-8
+  },
+  { // Entry 190
+    -0x1.c0p2,
+    0x1.p-7
+  },
+  { // Entry 191
+    -0x1.bfffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-7
+  },
+  { // Entry 192
+    -0x1.0000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-9
+  },
+  { // Entry 193
+    -0x1.p3,
+    0x1.p-8
+  },
+  { // Entry 194
+    -0x1.ffffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-8
+  },
+  { // Entry 195
+    -0x1.2000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-10
+  },
+  { // Entry 196
+    -0x1.20p3,
+    0x1.p-9
+  },
+  { // Entry 197
+    -0x1.1fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-9
+  },
+  { // Entry 198
+    -0x1.4000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-11
+  },
+  { // Entry 199
+    -0x1.40p3,
+    0x1.p-10
+  },
+  { // Entry 200
+    -0x1.3fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-10
+  },
+  { // Entry 201
+    -0x1.a000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-14
+  },
+  { // Entry 202
+    -0x1.a0p3,
+    0x1.p-13
+  },
+  { // Entry 203
+    -0x1.9fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-13
+  },
+  { // Entry 204
+    -0x1.a000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-14
+  },
+  { // Entry 205
+    -0x1.a0p3,
+    0x1.p-13
+  },
+  { // Entry 206
+    -0x1.9fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-13
+  },
+  { // Entry 207
+    -0x1.800000b8aa3b85b135c2f7de66fb4697p1,
+    0x1.fffffep-4
+  },
+  { // Entry 208
+    -0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 209
+    -0x1.7ffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-3
+  },
+  { // Entry 210
+    -0x1.8a898ddcb6efed6595efafc5e077a1cbp-3,
+    0x1.bffffep-1
+  },
+  { // Entry 211
+    -0x1.8a8980abfbd32666a9b7e2df60d2bdc6p-3,
+    0x1.c0p-1
+  },
+  { // Entry 212
+    -0x1.8a89737b40c57286b134031126c9c7edp-3,
+    0x1.c00002p-1
+  },
+  { // Entry 213
+    -0x1.0000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-5
+  },
+  { // Entry 214
+    -0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 215
+    -0x1.fffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-4
+  },
+  { // Entry 216
+    -0x1.7d60620c36d87cfcd8babf751edc0c8bp-4,
+    0x1.dffffep-1
+  },
+  { // Entry 217
+    -0x1.7d60496cfbb4c673b4511f8c2b4e4fb7p-4,
+    0x1.e0p-1
+  },
+  { // Entry 218
+    -0x1.7d6030cdc0ab535cca1fd50552237b1ep-4,
+    0x1.e00002p-1
+  },
+  { // Entry 219
+    -0x1.4000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-6
+  },
+  { // Entry 220
+    -0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 221
+    -0x1.3fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-5
+  },
+  { // Entry 222
+    -0x1.77397c4562d9e54641f615a6ca2b27bap-5,
+    0x1.effffep-1
+  },
+  { // Entry 223
+    -0x1.77394c9d958d55de5c380fe0871d757fp-5,
+    0x1.f0p-1
+  },
+  { // Entry 224
+    -0x1.77391cf5c871f7ce6a0d60c3fcc8c0a3p-5,
+    0x1.f00002p-1
+  },
+  { // Entry 225
+    -0x1.8000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-7
+  },
+  { // Entry 226
+    -0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 227
+    -0x1.7fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-6
+  },
+  { // Entry 228
+    -0x1.743f462e4254f5e2be25b8506028d08ap-6,
+    0x1.f7fffep-1
+  },
+  { // Entry 229
+    -0x1.743ee861f3556365483611f7c0bf059fp-6,
+    0x1.f8p-1
+  },
+  { // Entry 230
+    -0x1.743e8a95a4b51a5c74be0d5ae65aab1bp-6,
+    0x1.f80002p-1
+  },
+  { // Entry 231
+    -0x1.c000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-8
+  },
+  { // Entry 232
+    -0x1.c0p2,
+    0x1.p-7
+  },
+  { // Entry 233
+    -0x1.bfffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-7
+  },
+  { // Entry 234
+    -0x1.72c8743f6fa9cfbe1e287ad19aca6d67p-7,
+    0x1.fbfffep-1
+  },
+  { // Entry 235
+    -0x1.72c7ba20f73275b5d184a2c615b70ad4p-7,
+    0x1.fcp-1
+  },
+  { // Entry 236
+    -0x1.72c700027f76b150e530a12360d1566ap-7,
+    0x1.fc0002p-1
+  },
+  { // Entry 237
+    -0x1.0000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-9
+  },
+  { // Entry 238
+    -0x1.p3,
+    0x1.p-8
+  },
+  { // Entry 239
+    -0x1.ffffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-8
+  },
+  { // Entry 240
+    -0x1.720f0ecde68050a44c9a2eb30002eb02p-8,
+    0x1.fdfffep-1
+  },
+  { // Entry 241
+    -0x1.720d9c06a835ea6ef18f977e5d8a37abp-8,
+    0x1.fep-1
+  },
+  { // Entry 242
+    -0x1.720c293f6b5fbfb29fd6cb29447e6957p-8,
+    0x1.fe0002p-1
+  },
+  { // Entry 243
+    -0x1.2000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-10
+  },
+  { // Entry 244
+    -0x1.20p3,
+    0x1.p-9
+  },
+  { // Entry 245
+    -0x1.1fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-9
+  },
+  { // Entry 246
+    -0x1.71b3ce5de192eae3e822586249ef1031p-9,
+    0x1.fefffep-1
+  },
+  { // Entry 247
+    -0x1.71b0ea42e5fda261dbbd1a498f533398p-9,
+    0x1.ffp-1
+  },
+  { // Entry 248
+    -0x1.71ae0627ed4de7a0d25affc95a315118p-9,
+    0x1.ff0002p-1
+  },
+  { // Entry 249
+    -0x1.4000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-11
+  },
+  { // Entry 250
+    -0x1.40p3,
+    0x1.p-10
+  },
+  { // Entry 251
+    -0x1.3fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-10
+  },
+  { // Entry 252
+    -0x1.71886f5843ade047bd2d072e96484a61p-10,
+    0x1.ff7ffep-1
+  },
+  { // Entry 253
+    -0x1.7182a894b69c595f7920cea1619c6e57p-10,
+    0x1.ff80p-1
+  },
+  { // Entry 254
+    -0x1.717ce1d12f53080ec86587c1ed76029bp-10,
+    0x1.ff8002p-1
+  },
+  { // Entry 255
+    -0x1.a000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-14
+  },
+  { // Entry 256
+    -0x1.a0p3,
+    0x1.p-13
+  },
+  { // Entry 257
+    -0x1.9fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-13
+  },
+  { // Entry 258
+    -0x1.718867c39aac5ee37685394fe9bfd749p-13,
+    0x1.ffeffep-1
+  },
+  { // Entry 259
+    -0x1.715a3bc3593d4d4a2a239745f6427420p-13,
+    0x1.fff0p-1
+  },
+  { // Entry 260
+    -0x1.712c0fc345fbad46c2c9f3884df7233ep-13,
+    0x1.fff002p-1
+  },
+  { // Entry 261
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 262
+    0x1.fffffffa3aae23d27651e8410cc825cbp6,
+    0x1.fffffep127
+  },
+  { // Entry 263
+    0x1.fffffff4755c41df9abefafd93420d88p6,
+    0x1.fffffcp127
+  },
+  { // Entry 264
+    0x1.a6c873f5fb93d2711418c769ccf4818ap0,
+    0x1.921fb6p1
+  },
+  { // Entry 265
+    0x1.4d90e7ebf727a4e228318ed399e90315p-1,
+    0x1.921fb6p0
+  },
+  { // Entry 266
+    0x1.715474e163bb7b2fe80f7d7b91f1851cp-23,
+    0x1.000002p0
+  },
+  { // Entry 267
+    0.0,
+    0x1.p0
+  },
+  { // Entry 268
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 269
+    -0x1.64de302811b0b63baf9ce258cc2df9d5p-2,
+    0x1.921fb6p-1
+  },
+  { // Entry 270
+    -0x1.f7fffff4755c58f4e2242680bf841423p6,
+    0x1.000002p-126
+  },
+  { // Entry 271
+    -0x1.f8p6,
+    0x1.p-126
+  },
+  { // Entry 272
+    -0x1.f800000b8aa3be20654105026cbdf277p6,
+    0x1.fffffcp-127
+  },
+  { // Entry 273
+    -0x1.f80000171547935612438aa6af6b5495p6,
+    0x1.fffff8p-127
+  },
+  { // Entry 274
+    -0x1.28p7,
+    0x1.p-148
+  },
+  { // Entry 275
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 276
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 277
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 278
+    0x1.f4p6,
+    0x1.p125
+  },
+  { // Entry 279
+    -0x1.fcp6,
+    0x1.p-127
+  },
+  { // Entry 280
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 281
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 282
+    -0x1.p0,
+    0x1.p-1
+  }
+};
diff --git a/tests/math_data/log_intel_data.h b/tests/math_data/log_intel_data.h
new file mode 100644
index 0000000..95ae60e
--- /dev/null
+++ b/tests/math_data/log_intel_data.h
@@ -0,0 +1,1654 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_log_intel_data[] = {
+  { // Entry 0
+    0x1.d77fd13d27ffefffffffffffb5ed9843p-11,
+    0x1.003af6c37c1d3p0
+  },
+  { // Entry 1
+    0x1.411efd297c7808000000000016d615b2p-6,
+    0x1.05112792934b3p0
+  },
+  { // Entry 2
+    0x1.d4840664446fb800000000001f574ffcp-6,
+    0x1.076d1d8c75ea6p0
+  },
+  { // Entry 3
+    0x1.f6e4c3ced7c71ffffffffffffee947dap-3,
+    0x1.47408cb9583cep0
+  },
+  { // Entry 4
+    0x1.1a0408712e009ffffffffffffee46012p-2,
+    0x1.512b3126454f3p0
+  },
+  { // Entry 5
+    0x1.8b52c15ea9c237fffffffffffe61395cp-2,
+    0x1.789e95b11578cp0
+  },
+  { // Entry 6
+    0x1.d707029bb59d8ffffffffffffecf6ef6p-2,
+    0x1.958497f7b353fp0
+  },
+  { // Entry 7
+    0x1.0727af5fee8f5ffffffffffffec7021fp-1,
+    0x1.ac032a8d2ec23p0
+  },
+  { // Entry 8
+    0x1.12fcce02efb320000000000001435b90p-1,
+    0x1.b604e1942098dp0
+  },
+  { // Entry 9
+    0x1.178e6d3ecace98000000000001300accp-1,
+    0x1.b9f1fa4587967p0
+  },
+  { // Entry 10
+    0x1.62f71c4656b60fffffffffffff7f168ep-1,
+    0x1.000976581ce4ep1
+  },
+  { // Entry 11
+    0x1.d6336a88077a9fffffffffffffe1f817p0,
+    0x1.91a8dff540ff7p2
+  },
+  { // Entry 12
+    0x1.016e82ceda358fffffffffffffacbf62p1,
+    0x1.de37fb31fd5fcp2
+  },
+  { // Entry 13
+    0x1.1e126f5d95f3880000000000005d3761p1,
+    0x1.2b1199e497739p3
+  },
+  { // Entry 14
+    0x1.2f3832cad3d5f000000000000078801cp1,
+    0x1.55f0eaa1b2fc8p3
+  },
+  { // Entry 15
+    0x1.42ee3c7dc494600000000000004ea57fp1,
+    0x1.8ede492d96072p3
+  },
+  { // Entry 16
+    0x1.6b5df7e3cd421800000000000044613bp1,
+    0x1.11867637cbd03p4
+  },
+  { // Entry 17
+    0x1.7e7f095703eee7ffffffffffffacdc06p1,
+    0x1.3d9d7d597a9ddp4
+  },
+  { // Entry 18
+    0x1.9687c83faf0067ffffffffffffb9cf3fp1,
+    0x1.7f3825778aaafp4
+  },
+  { // Entry 19
+    0x1.83d4bcdebb3f3fffffffffffffffacc9p2,
+    0x1.ac50b409c8aeep8
+  },
+  { // Entry 20
+    0x1.fffffffffffff0000000000000aaaaaap-53,
+    0x1.0000000000001p0
+  },
+  { // Entry 21
+    0x1.76e7e5d7b6eabffffffffffffff06f80p3,
+    0x1.de7cd6751029ap16
+  },
+  { // Entry 22
+    0x1.fffffffffffff0000000000000aaaaaap-53,
+    0x1.0000000000001p0
+  },
+  { // Entry 23
+    -0x1.91550c357f883fff899dff30d0f303eep8,
+    0x1.0000000000003p-579
+  },
+  { // Entry 24
+    0x1.7fffffffffffb8000000000011ffffffp-50,
+    0x1.0000000000006p0
+  },
+  { // Entry 25
+    0x1.bffffffffffe780000000001c9555555p-48,
+    0x1.000000000001cp0
+  },
+  { // Entry 26
+    0x1.7fdfffffff7017ff000047ee017ff52cp-41,
+    0x1.0000000000bffp0
+  },
+  { // Entry 27
+    0x1.0fffffffedf0000001996aaaaa81e28ap-35,
+    0x1.00000000220p0
+  },
+  { // Entry 28
+    0x1.ffffffff00000000aaaaaaaa2aaaaaabp-33,
+    0x1.000000010p0
+  },
+  { // Entry 29
+    0x1.7fffff70000047ffffd78000184cccbdp-25,
+    0x1.000000cp0
+  },
+  { // Entry 30
+    0x1.0a2ea3e77af060004010c4f6b437fb45p1,
+    0x1.00070p3
+  },
+  { // Entry 31
+    0x1.90412094d367f99f3c615231ad98bf3dp-13,
+    0x1.000c82573f5f9p0
+  },
+  { // Entry 32
+    0x1.ffe002aa6ab1106678ad8b318cb38545p-12,
+    0x1.002p0
+  },
+  { // Entry 33
+    0x1.bfcf07242969d15db4d2b3efe1c037e0p-11,
+    0x1.00380p0
+  },
+  { // Entry 34
+    0x1.d77fd13d27ffefffffffffffb5ed9843p-11,
+    0x1.003af6c37c1d3p0
+  },
+  { // Entry 35
+    0x1.ea054ce8508e4874442e95e41718b0dep-10,
+    0x1.007a9ea7a9e80p0
+  },
+  { // Entry 36
+    0x1.ff004a7ab9083f9e1717d3a4aaec8657p-10,
+    0x1.007fdff7fdfe0p0
+  },
+  { // Entry 37
+    0x1.ffda65d44dccc889115a4a4ff75c5a77p-10,
+    0x1.0080169a16cd5p0
+  },
+  { // Entry 38
+    0x1.b956989d2589d7fd6838e57a702f38acp-9,
+    0x1.00dd0a8317176p0
+  },
+  { // Entry 39
+    0x1.fd0816d97152c7fead7b849f7614fb48p-9,
+    0x1.00ff02ba8a543p0
+  },
+  { // Entry 40
+    -0x1.37915555785b07fc19dd2632088a1e7fp9,
+    0x1.00fffffffffffp-899
+  },
+  { // Entry 41
+    0x1.64a2a9b6a40588010102807138dff50cp0,
+    0x1.01c00000000dcp2
+  },
+  { // Entry 42
+    0x1.d465957106bd286bae67c08297163ea3p-8,
+    0x1.01d6131d09dc5p0
+  },
+  { // Entry 43
+    0x1.fdf639bea5ad3762df24a208e2a1cbe8p-8,
+    0x1.01fff37a34084p0
+  },
+  { // Entry 44
+    0x1.fdf6e4fcf456977205228530acd57155p-8,
+    0x1.01fff426c8cb6p0
+  },
+  { // Entry 45
+    0x1.fdf6e4fd0426f76d6d7b839b5f6c8bafp-8,
+    0x1.01fff426c8db5p0
+  },
+  { // Entry 46
+    0x1.fdfe9c57debe1760fe4ff0899bf9e6dcp-8,
+    0x1.01fffbed922e3p0
+  },
+  { // Entry 47
+    -0x1.d17be2451229ffff11e851804e97cdd7p3,
+    0x1.028p-21
+  },
+  { // Entry 48
+    0x1.6dcb2fed7f25d3f286707230be190760p-7,
+    0x1.02dfafa07df6dp0
+  },
+  { // Entry 49
+    0x1.ff092a85ee02f7fe7fc5dc1d417184c0p-7,
+    0x1.040615461f6cap0
+  },
+  { // Entry 50
+    0x1.0aa53cea3f1abfff1ddfb5af4ac49aaep-6,
+    0x1.04334eec5a65dp0
+  },
+  { // Entry 51
+    0x1.6ea07021c133480174835d142a4b831ep-6,
+    0x1.05cb09bb9fed7p0
+  },
+  { // Entry 52
+    0x1.7199f984f560800135ff3aec3a0796a8p-6,
+    0x1.05d735184261cp0
+  },
+  { // Entry 53
+    0x1.7788bc9c08318801546c035cbd9a269ap-6,
+    0x1.05ef7bdee7be0p0
+  },
+  { // Entry 54
+    0x1.c2688e952a7237fdd8563297de625acfp-6,
+    0x1.0722a05711778p0
+  },
+  { // Entry 55
+    0x1.e02151352512f7c230cc4b895dc68dd1p-6,
+    0x1.079cf00fe24f9p0
+  },
+  { // Entry 56
+    -0x1.3e1fee699c6bc7fc001a359e0efe2db7p8,
+    0x1.07cp-459
+  },
+  { // Entry 57
+    0x1.f31b56b8b6f1a2862582f528b33c4de2p-6,
+    0x1.07eb259ee01b5p0
+  },
+  { // Entry 58
+    -0x1.d0819095fcd6c800924ecd0308ebe218p3,
+    0x1.0a8551f8fc7f8p-21
+  },
+  { // Entry 59
+    -0x1.0268d40000c718005da0249ebb0a3024p1,
+    0x1.0fff8p-3
+  },
+  { // Entry 60
+    0x1.6b5df7e3cd421800000000000044613bp1,
+    0x1.11867637cbd03p4
+  },
+  { // Entry 61
+    0x1.6b96cb66f55c2800172d81c1cef357b1p1,
+    0x1.11ffffffffff8p4
+  },
+  { // Entry 62
+    -0x1.f7a213a7cd380fffde498c453f12553dp0,
+    0x1.1e6p-3
+  },
+  { // Entry 63
+    -0x1.a0765853dec06ffedf49002b5d3008bep8,
+    0x1.206658d9b0f05p-601
+  },
+  { // Entry 64
+    0x1.0d7b6ff6e3a247fffffefb9449faf8e6p6,
+    0x1.2514738e6dcadp97
+  },
+  { // Entry 65
+    0x1.1ee3899f6818e7ffffd09e6eb4879725p1,
+    0x1.2cfbb9e4a1599p3
+  },
+  { // Entry 66
+    -0x1.33153336792897fd38f4af7ab5c00769p6,
+    0x1.2f0617037e590p-111
+  },
+  { // Entry 67
+    -0x1.04c1e6cec96377febe1183e3bd373c3ep3,
+    0x1.2f29fd4b42515p-12
+  },
+  { // Entry 68
+    -0x1.0578bc4a143d699806f945d1356d06a2p-1,
+    0x1.333e1f03af55ep-1
+  },
+  { // Entry 69
+    -0x1.fd2a1d4dcf23d7fe75f7eef9498fdaa2p-2,
+    0x1.3767a0aaf1452p-1
+  },
+  { // Entry 70
+    -0x1.fb0ce0ec79bc97fe95141ce227ed47d2p-2,
+    0x1.380c640e6246cp-1
+  },
+  { // Entry 71
+    -0x1.ee693caa501a93f30062e2a3c445ac9cp-2,
+    0x1.3bec837d601c1p-1
+  },
+  { // Entry 72
+    -0x1.ed67b9b0f2f8d420adcdf51f432817fap-2,
+    0x1.3c3c0p-1
+  },
+  { // Entry 73
+    0x1.25397dc9f85bd800000a3d55bd6d8e50p1,
+    0x1.3c419b9db662ap3
+  },
+  { // Entry 74
+    0x1.9c041f7ed8d329e312aad8493a3a79a2p0,
+    0x1.3ffffffffffffp2
+  },
+  { // Entry 75
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.4p0
+  },
+  { // Entry 76
+    0x1.d42adfec35d147fe04ff7b1b027c5fdap-3,
+    0x1.41cp0
+  },
+  { // Entry 77
+    0x1.d7577477b9ead7fe9b2bc6960a766303p-3,
+    0x1.423fc24d04fc6p0
+  },
+  { // Entry 78
+    -0x1.d360e90c3850b36d61103f575b991880p-2,
+    0x1.446p-1
+  },
+  { // Entry 79
+    -0x1.cdeabe01a86b2d50c8ea3bb030c66bbcp-2,
+    0x1.461c159a76d4bp-1
+  },
+  { // Entry 80
+    0x1.fb9186d5e3e244ee4e28531563b69a2cp-3,
+    0x1.47fffffffffffp0
+  },
+  { // Entry 81
+    0x1.fb9186d5e3e2a8d55466c3794d2ca092p-3,
+    0x1.480p0
+  },
+  { // Entry 82
+    0x1.fb920464f5fc777f3cb0d8448c30e701p-3,
+    0x1.4800141bea83fp0
+  },
+  { // Entry 83
+    0x1.fb9c2792045e9e82eff43ef1ce0bee02p-3,
+    0x1.4801b3bf42a4ap0
+  },
+  { // Entry 84
+    0x1.fc46718a2dc22ddbfabb2598a137baa7p-3,
+    0x1.481cfade8a64dp0
+  },
+  { // Entry 85
+    0x1.ff9bd7855aaeab815fd85d2cb0694231p-3,
+    0x1.48a5d0c7ac5b5p0
+  },
+  { // Entry 86
+    0x1.ffd65f29bfd4edf98ec849c90032f302p-3,
+    0x1.48af356081ca1p0
+  },
+  { // Entry 87
+    0x1.e737cb23865c6b921552ad81d572b729p-1,
+    0x1.4b8p1
+  },
+  { // Entry 88
+    0x1.90ed52d1a23c4ffed8ee7725c53035d6p8,
+    0x1.556ee611fa309p578
+  },
+  { // Entry 89
+    -0x1.b25b8d863b3b4800fcec4eb5c14a7c2ep3,
+    0x1.55ep-20
+  },
+  { // Entry 90
+    0x1.16758a93d29af7ff100a0c107fb0c9e7p6,
+    0x1.5996659966598p100
+  },
+  { // Entry 91
+    -0x1.7e3a93bf3540d81e3dbbb57585ec1674p-2,
+    0x1.608054de74582p-1
+  },
+  { // Entry 92
+    0x1.583a417be2216cb936610ca9843511dbp-2,
+    0x1.6649bb515354fp0
+  },
+  { // Entry 93
+    -0x1.4f7dac3f1d7f3fffffdf521ccfc9dbcdp5,
+    0x1.69b109377f7p-61
+  },
+  { // Entry 94
+    0x1.62e42fefa383734a769bb41258319c1ap-2,
+    0x1.6a09e667f3b31p0
+  },
+  { // Entry 95
+    -0x1.e7a2dd016daa87ffa79528e89b610c0ap1,
+    0x1.6b0p-6
+  },
+  { // Entry 96
+    0x1.739d7f6bbd0069ce24c53fad3ef796abp-2,
+    0x1.7p0
+  },
+  { // Entry 97
+    -0x1.4c3af4797206280013c4d45af696d7cbp-2,
+    0x1.7223cef78e25dp-1
+  },
+  { // Entry 98
+    -0x1.48e65fe2c23057fdeb25c7f7c4859e9cp-2,
+    0x1.73587ce753680p-1
+  },
+  { // Entry 99
+    -0x1.4057b02bfdd097fe57379888740d8103p-2,
+    0x1.76764087395fcp-1
+  },
+  { // Entry 100
+    0x1.4a5f12ed407a400083645efcc658eda6p8,
+    0x1.8ad934b838bdap476
+  },
+  { // Entry 101
+    -0x1.83d0f90690d0f7ff207b1f007f7a3917p1,
+    0x1.8bep-5
+  },
+  { // Entry 102
+    -0x1.e387545735931400edb47ee4265d728ep-1,
+    0x1.8e4p-2
+  },
+  { // Entry 103
+    -0x1.fcc59e01369768243eca599e59e6a909p-3,
+    0x1.8f6p-1
+  },
+  { // Entry 104
+    -0x1.edd6149b33156828750bb3a608c4ddc1p-3,
+    0x1.924c57d629082p-1
+  },
+  { // Entry 105
+    0x1.cfbe6164a73f1361604926a0a90f519fp-2,
+    0x1.92a4cb798664bp0
+  },
+  { // Entry 106
+    -0x1.b428216a5c1587fdbf2f97d4c27148ccp4,
+    0x1.980p-40
+  },
+  { // Entry 107
+    -0x1.d081f0f25d66380027d59b6ebdb9bac9p-3,
+    0x1.9819d0255be60p-1
+  },
+  { // Entry 108
+    -0x1.cc0d6a92b79157fe82bfad0addd085a5p-1,
+    0x1.a0ef883be2177p-2
+  },
+  { // Entry 109
+    -0x1.8f62e2cb658638000030eb1a289f78e3p-3,
+    0x1.a549336310e6fp-1
+  },
+  { // Entry 110
+    -0x1.3651d0de2368d7fee3d1d6ee2b227744p-3,
+    0x1.b80300c030118p-1
+  },
+  { // Entry 111
+    0x1.20f25e686e7f97feceff9a7299fcd1edp-1,
+    0x1.c22024dc8289cp0
+  },
+  { // Entry 112
+    -0x1.9e327eb6ac2c37f7a39af2c988abe2b6p-1,
+    0x1.c80p-2
+  },
+  { // Entry 113
+    -0x1.b76f3d0aaf0c97fadefb4f5332d365a9p-4,
+    0x1.cbea22c8a9a16p-1
+  },
+  { // Entry 114
+    -0x1.9335e5d59499181fa0f312a9854d3042p-4,
+    0x1.cffffffffffffp-1
+  },
+  { // Entry 115
+    0x1.b6cc2b05c90a77fe9a0bb3019d8a9aedp2,
+    0x1.dae1894a2dbedp9
+  },
+  { // Entry 116
+    -0x1.fc702b8d96d0d7d4794fd56c9bec2ce2p-5,
+    0x1.e1304c1304c13p-1
+  },
+  { // Entry 117
+    -0x1.f6c7f7d0b03557d1c2690fc214b3ef43p-5,
+    0x1.e185646bc7856p-1
+  },
+  { // Entry 118
+    -0x1.eb8dcb764e07e7d4f0ef36c6ee88eacap-5,
+    0x1.e22e7349f6e97p-1
+  },
+  { // Entry 119
+    -0x1.d94a9c323e77c7fd43e2e13f541141cbp-5,
+    0x1.e341f0592c2abp-1
+  },
+  { // Entry 120
+    -0x1.ccb106085394f7a05e03df8ac23eae5dp-5,
+    0x1.e4005dfd66c32p-1
+  },
+  { // Entry 121
+    -0x1.a9bd8afc6d84b7ec7bbc80cc6f2983f8p-5,
+    0x1.e61222241ca7fp-1
+  },
+  { // Entry 122
+    -0x1.787392a45888d8006bb538c724c45f7ep-5,
+    0x1.e901133e161e4p-1
+  },
+  { // Entry 123
+    -0x1.79a634cdfb255800008607b0c2c01570p4,
+    0x1.eddc0821c76c1p-35
+  },
+  { // Entry 124
+    0x1.5172153d5fe9b7ff0f26a87c085b87d7p-1,
+    0x1.eed9208a6a349p0
+  },
+  { // Entry 125
+    -0x1.12b227244ff977d878e1166c29f76aa5p-5,
+    0x1.ef1dbcea195cdp-1
+  },
+  { // Entry 126
+    -0x1.f8a34d2505f817d848f4e8959713fb76p-6,
+    0x1.f0786fa48bd9cp-1
+  },
+  { // Entry 127
+    0x1.06885d03c19c38000002f99205a60b54p1,
+    0x1.f1a945a457d96p2
+  },
+  { // Entry 128
+    0x1.a28cccb9c6f0d7fedd89e9c4d4b9f68bp6,
+    0x1.f1fffffffffffp150
+  },
+  { // Entry 129
+    -0x1.b032da095671e7c8d427eb42292764d2p-6,
+    0x1.f2ab9dee841b5p-1
+  },
+  { // Entry 130
+    -0x1.9d66ada69056485326194e3f1c7b170cp-6,
+    0x1.f33e2a944ac96p-1
+  },
+  { // Entry 131
+    -0x1.88e7a6bf1b5b97fdbf4dd5e05467c25dp-6,
+    0x1.f3de268394e8dp-1
+  },
+  { // Entry 132
+    -0x1.84e362ad217017fe7ee6c5e9580aa1ddp-6,
+    0x1.f3fd86b392884p-1
+  },
+  { // Entry 133
+    -0x1.744eff6d77dde7d2a179669e225699e3p-6,
+    0x1.f47f1e1f53f24p-1
+  },
+  { // Entry 134
+    -0x1.68b4f86497a0a7fe24c5fba78bf17a88p0,
+    0x1.f48p-3
+  },
+  { // Entry 135
+    -0x1.6f51e68fcd7cd7fa1e6acd9f4b979341p-6,
+    0x1.f4a622df760c9p-1
+  },
+  { // Entry 136
+    -0x1.6bab4f93a37207d2376593e12e890d80p-6,
+    0x1.f4c2b2a5a5c1dp-1
+  },
+  { // Entry 137
+    -0x1.65ae4deeda7b77fe9c5dac2c0c0dedf4p-6,
+    0x1.f4f18fab5c3b8p-1
+  },
+  { // Entry 138
+    -0x1.4c2a64cb22441fe74e2f868934e9e491p-6,
+    0x1.f5b96e5b96eb7p-1
+  },
+  { // Entry 139
+    -0x1.43ae6c44b9f767f34ebf8a2cc3744c94p-6,
+    0x1.f5fbf5cedc480p-1
+  },
+  { // Entry 140
+    -0x1.41f7812310c9b0015ca3978caea2af49p-6,
+    0x1.f60968a5952d9p-1
+  },
+  { // Entry 141
+    -0x1.3b0cb0b1469db800b20aa116988cb6f2p-6,
+    0x1.f63fae6bae321p-1
+  },
+  { // Entry 142
+    -0x1.311e67575b4f5006994df3158c7316ccp-6,
+    0x1.f68da368da368p-1
+  },
+  { // Entry 143
+    -0x1.020da703f2f9d7d88c2361f9312c8382p-6,
+    0x1.f7ffbefc5d9d8p-1
+  },
+  { // Entry 144
+    -0x1.0205658935b947ec5874530468145ae7p-6,
+    0x1.f7fffffffffe6p-1
+  },
+  { // Entry 145
+    -0x1.ae825fe2eb6707f96a6e4c1dd535f9ccp-7,
+    0x1.f95139c561139p-1
+  },
+  { // Entry 146
+    -0x1.23851c80dddf27fb847cdd237db32e86p-7,
+    0x1.fb77177fb5d35p-1
+  },
+  { // Entry 147
+    -0x1.7c498eb87ed687f5ab6d00e39946d3bfp-8,
+    0x1.fd09a0b5b17f0p-1
+  },
+  { // Entry 148
+    -0x1.50dd41aeb4865700c68f5df4a8438e0dp-8,
+    0x1.fd6p-1
+  },
+  { // Entry 149
+    -0x1.08b8bba5db3a85b4e252ed1003e3481fp-8,
+    0x1.fdef9fe7f9fe3p-1
+  },
+  { // Entry 150
+    -0x1.07c989add9f585e65c78fe912c1a8cp-8,
+    0x1.fdf17c5f17cp-1
+  },
+  { // Entry 151
+    -0x1.008055958e10b542f640a94ed45f9bc0p-8,
+    0x1.fdfffffffff55p-1
+  },
+  { // Entry 152
+    -0x1.1f3e47178f97c75334a62a2f7aa66bc5p-9,
+    0x1.fee1123d05c1bp-1
+  },
+  { // Entry 153
+    -0x1.ff7faa9ab136778a743baa4f52803c4ep-10,
+    0x1.ff007ffffffffp-1
+  },
+  { // Entry 154
+    -0x1.ff39ecbe26759778f8bbf67f1e4a7e0ap-10,
+    0x1.ff00a2cd88b55p-1
+  },
+  { // Entry 155
+    -0x1.6363477698d257fc17522b50ff55553cp0,
+    0x1.ff020ffffffffp-3
+  },
+  { // Entry 156
+    -0x1.f7a248bf22fa97facadb946630e3967cp-10,
+    0x1.ff046cbe6cbddp-1
+  },
+  { // Entry 157
+    -0x1.dae60fee9fa9f7e341fe9059ccf60974p-10,
+    0x1.ff12c3ff12c30p-1
+  },
+  { // Entry 158
+    -0x1.d208bc8587776791c38a76a675c1ea45p-10,
+    0x1.ff17309fefcd2p-1
+  },
+  { // Entry 159
+    -0x1.babff263eabf87ac216ead65574acf01p-12,
+    0x1.ffc8aaff534d4p-1
+  },
+  { // Entry 160
+    -0x1.c00c40725b0617de17d7b74e49091d74p-13,
+    0x1.ffe3fffffffffp-1
+  },
+  { // Entry 161
+    -0x1.78bfa5004153173f2f5226cd23948518p-13,
+    0x1.ffe874904abd0p-1
+  },
+  { // Entry 162
+    -0x1.1148dff957e7c74564229e9cb9c4b83cp-13,
+    0x1.ffeeebbaeebb8p-1
+  },
+  { // Entry 163
+    -0x1.4aa196aae1ef97ff1730897799ee4f02p8,
+    0x1.fffffbbffffffp-478
+  },
+  { // Entry 164
+    0x1.8e8f43d38040fffeda732c8d164c1eb5p8,
+    0x1.fffffbbffffffp574
+  },
+  { // Entry 165
+    -0x1.00000401000008015565655755957558p-31,
+    0x1.fffffffbfffffp-1
+  },
+  { // Entry 166
+    -0x1.ff8040007fc027f82c8ac2a212ef8e0ep-34,
+    0x1.ffffffff003fep-1
+  },
+  { // Entry 167
+    0x1.86ef5ccdfa1b17fe78c886a9d8b2faaep7,
+    0x1.ffffffffddfffp281
+  },
+  { // Entry 168
+    -0x1.00080000008008002000555d55955640p-40,
+    0x1.fffffffffdfffp-1
+  },
+  { // Entry 169
+    -0x1.00200000002008008000055755955801p-42,
+    0x1.ffffffffff7ffp-1
+  },
+  { // Entry 170
+    -0x1.00400000001008010000015655955aaap-43,
+    0x1.ffffffffffbffp-1
+  },
+  { // Entry 171
+    0x1.30fc1931f09c97ff42ff5cad467897fdp7,
+    0x1.fffffffffffeep219
+  },
+  { // Entry 172
+    -0x1.00000000000010000000000001555555p-51,
+    0x1.ffffffffffffcp-1
+  },
+  { // Entry 173
+    -0x1.00000000000008000000000000555555p-52,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 174
+    -0x1.03fe55a061c757fed6a1da317da50b1ap-1,
+    0x1.342185798f6d6p-1
+  },
+  { // Entry 175
+    -0x1.62e42fefa39f0ce4e0d5078578892721p-2,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 176
+    -0x1.da391c9043a0f16abe056e384bf07f29p-3,
+    0x1.962b5f9438d25p-1
+  },
+  { // Entry 177
+    -0x1.06fbec52082bd253e20210b58868e521p-3,
+    0x1.c24cd8c07de7ep-1
+  },
+  { // Entry 178
+    -0x1.1e0a8f670c50ad172b2608e4a78b5e60p-5,
+    0x1.ee6e51ecc2fd7p-1
+  },
+  { // Entry 179
+    0x1.9e548e7e3dde7b0f34385f075e850106p-5,
+    0x1.0d47e58c84098p0
+  },
+  { // Entry 180
+    0x1.08e0bae73ac238d5d0d1fd9a04579630p-3,
+    0x1.2358a222a6944p0
+  },
+  { // Entry 181
+    0x1.9e6462187c36a8ddeed899c4e3596896p-3,
+    0x1.39695eb8c91f0p0
+  },
+  { // Entry 182
+    0x1.14dd6b0af939ac9fd1cf8d8a3a630a07p-2,
+    0x1.4f7a1b4eeba9cp0
+  },
+  { // Entry 183
+    0x1.56181f19d7198035cf7c5df02d166026p-2,
+    0x1.658ad7e50e348p0
+  },
+  { // Entry 184
+    0x1.936a82fadcd85a768a1655a807a5c5fdp-2,
+    0x1.7b9b947b30bf4p0
+  },
+  { // Entry 185
+    0x1.cd45b0a9f25021e4c6ab876e541defc9p-2,
+    0x1.91ac5111534a0p0
+  },
+  { // Entry 186
+    0x1.02044c9b70627350f5c613ba3eff7f14p-1,
+    0x1.a7bd0da775d4cp0
+  },
+  { // Entry 187
+    0x1.1c01dad59e72fa047b61ac26c51f4c17p-1,
+    0x1.bdcdca3d985f8p0
+  },
+  { // Entry 188
+    0x1.34bde9b821fe31136e67453dfecf9e34p-1,
+    0x1.d3de86d3baea4p0
+  },
+  { // Entry 189
+    0x1.4c561dbbb21d9a8faab44f6777f929f7p-1,
+    0x1.e9ef4369dd750p0
+  },
+  { // Entry 190
+    0x1.62e42fefa39eb35793c7673003e5ed5ep-1,
+    0x1.ffffffffffffcp0
+  },
+  { // Entry 191
+    -0x1.62e42fefa39f0ce4e0d5078578892721p-2,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 192
+    -0x1.24cfce6f80d9b57bf711e8c7ba21def9p-2,
+    0x1.80aa84ce72f89p-1
+  },
+  { // Entry 193
+    -0x1.d490246defa6c24070421157c8bdbac4p-3,
+    0x1.974b2334f2346p-1
+  },
+  { // Entry 194
+    -0x1.65d558d4ce00a4188793f7452a41c9d3p-3,
+    0x1.adebc19b71703p-1
+  },
+  { // Entry 195
+    -0x1.f991c6cb3b376d3e05c0449d9978b9bbp-4,
+    0x1.c48c6001f0ac0p-1
+  },
+  { // Entry 196
+    -0x1.31b994d3a4f80646146a3561e1668213p-4,
+    0x1.db2cfe686fe7dp-1
+  },
+  { // Entry 197
+    -0x1.ccb73cdddb2b3b5b841eb150a3d5e34dp-6,
+    0x1.f1cd9cceef23ap-1
+  },
+  { // Entry 198
+    0x1.0b94f7c19617485bcb4375b0b82ed7aap-6,
+    0x1.04371d9ab72fbp0
+  },
+  { // Entry 199
+    0x1.e27076e2af2d92344012fb7464c787c6p-5,
+    0x1.0f876ccdf6cd9p0
+  },
+  { // Entry 200
+    0x1.986d3228180be0924ac3a19b72870e79p-4,
+    0x1.1ad7bc01366b7p0
+  },
+  { // Entry 201
+    0x1.1c898c16999f2915ad51a005b68ddcc4p-3,
+    0x1.26280b3476095p0
+  },
+  { // Entry 202
+    0x1.69d4592a03621b2e6cccc2036f3931ffp-3,
+    0x1.31785a67b5a73p0
+  },
+  { // Entry 203
+    0x1.b44f77bcc8f55a888449bc53e9d9bf3ep-3,
+    0x1.3cc8a99af5451p0
+  },
+  { // Entry 204
+    0x1.fc2d6cf47cf0b2e0b88f48832402408cp-3,
+    0x1.4818f8ce34e2fp0
+  },
+  { // Entry 205
+    0x1.20cdcd192ab6530b24d75ab4459e3bc3p-2,
+    0x1.536948017480dp0
+  },
+  { // Entry 206
+    0x1.426174dbd515d649d69984816e68940dp-2,
+    0x1.5eb99734b41ebp0
+  },
+  { // Entry 207
+    0x1.62e42fefa39e52069052cb73bf7c2d5fp-2,
+    0x1.6a09e667f3bc9p0
+  },
+  { // Entry 208
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    0x1.8p-1
+  },
+  { // Entry 209
+    -0x1.89fa465cb93c39302d7a43bf8a8345c8p-3,
+    0x1.a666666666666p-1
+  },
+  { // Entry 210
+    -0x1.af8e8210a41648ad2ef5a75c80ae9b02p-4,
+    0x1.cccccccccccccp-1
+  },
+  { // Entry 211
+    -0x1.9ece955321b91119b64b048613dbc07dp-6,
+    0x1.f333333333332p-1
+  },
+  { // Entry 212
+    0x1.8fb063ef2c7d10ac8c5ce361f3a59a73p-5,
+    0x1.0ccccccccccccp0
+  },
+  { // Entry 213
+    0x1.e27076e2af2d7b106f9c6fe70000f0b8p-4,
+    0x1.1ffffffffffffp0
+  },
+  { // Entry 214
+    0x1.7565011e4966e394742cdeb80aaa0b85p-3,
+    0x1.3333333333332p0
+  },
+  { // Entry 215
+    0x1.f18dc41e8ef1708ddac617e72a16a351p-3,
+    0x1.4666666666665p0
+  },
+  { // Entry 216
+    0x1.334e9e47d07efd97d13fea265dcec2d1p-2,
+    0x1.5999999999998p0
+  },
+  { // Entry 217
+    0x1.6aac04146151ff3644f0da8793fe911fp-2,
+    0x1.6cccccccccccbp0
+  },
+  { // Entry 218
+    0x1.9f323ecbf98469d61382119eac3e89e1p-2,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 219
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 220
+    0x1.8663f793c46cc6d5699b82cc3bd3be38p-4,
+    0x1.199999999999ap0
+  },
+  { // Entry 221
+    0x1.7565011e4967b8e9c982340d62384469p-3,
+    0x1.3333333333334p0
+  },
+  { // Entry 222
+    0x1.0ca937be1b9df8e84ab52d4b0aefd012p-2,
+    0x1.4cccccccccccep0
+  },
+  { // Entry 223
+    0x1.588c2d9133494380eebceb76c1928f7cp-2,
+    0x1.6666666666668p0
+  },
+  { // Entry 224
+    0x1.9f323ecbf9851480be2cbc4956e9348bp-2,
+    0x1.8000000000002p0
+  },
+  { // Entry 225
+    0x1.e148a1a2726d394df8cdd6c80d7ec865p-2,
+    0x1.999999999999cp0
+  },
+  { // Entry 226
+    0x1.0fae81914a9947bd2de51187a6308fdbp-1,
+    0x1.b333333333336p0
+  },
+  { // Entry 227
+    0x1.2cf25fad8f1c715e5fafceb63bf60707p-1,
+    0x1.cccccccccccd0p0
+  },
+  { // Entry 228
+    0x1.48a11293d785f86a7b177f4aa4e9cadbp-1,
+    0x1.e66666666666ap0
+  },
+  { // Entry 229
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p1
+  },
+  { // Entry 230
+    0x1.1542457337d42e1c6b73c89d862ba171p6,
+    0x1.0p100
+  },
+  { // Entry 231
+    0x1.15a3de711cc5494e20ce2f7e393a9661p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 232
+    0x1.15fcf7f3c6f8e1f8e05889b78cdcbd94p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 233
+    0x1.164eeeaaf5efcc1553be7dcad1369141p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 234
+    0x1.169ad1a0c907775fec628588fced3401p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 235
+    0x1.16e177b203cdb330ec31f559cf828aa6p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 236
+    0x1.17238e14da469b55b96c96744e39203ap6,
+    0x1.999999999999cp100
+  },
+  { // Entry 237
+    0x1.1761a2765a6960abe5cf92c095780291p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 238
+    0x1.179c2a3292f266ff2833283af2a38d7fp6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 239
+    0x1.17d387985f833a0d4069f79c1b757507p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 240
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.0p101
+  },
+  { // Entry 241
+    0x1.1542457337d42e1c6b73c89d862ba171p7,
+    0x1.0p200
+  },
+  { // Entry 242
+    0x1.157311f22a4cbbb54620fc0ddfb31be9p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 243
+    0x1.159f9eb37f66880aa5e6292a89842f82p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 244
+    0x1.15c89a0f16e1fd18df9923342bb11959p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 245
+    0x1.15ee8b8a006dd2be2beb2713418c6ab9p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 246
+    0x1.1611de929dd0f0a6abd2defbaad7160cp7,
+    0x1.8000000000002p200
+  },
+  { // Entry 247
+    0x1.1632e9c4090d64b912702f88ea3260d6p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 248
+    0x1.1651f3f4c91ec76428a1adaf0dd1d201p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 249
+    0x1.166f37d2e5634a8dc9d3786c3c679778p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 250
+    0x1.168ae685cbabb414d5eee01cd0d08b3cp7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 251
+    0x1.16a529a32777cd0fc3079004b633875fp7,
+    0x1.0p201
+  },
+  { // Entry 252
+    0x1.5a92d6d005c939a38650bac4e7b689cep9,
+    0x1.0p1000
+  },
+  { // Entry 253
+    -0x1.0000080000555559555588888b333357p-20,
+    0x1.ffffep-1
+  },
+  { // Entry 254
+    -0x1.0000040000155555d5555888889ddddep-21,
+    0x1.fffffp-1
+  },
+  { // Entry 255
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 256
+    0x1.fffff800002aaaa9aaaab11110e66667p-22,
+    0x1.0000080p0
+  },
+  { // Entry 257
+    0x1.fffff00000aaaaa2aaab11110bbbbc04p-21,
+    0x1.00001p0
+  },
+  { // Entry 258
+    -0x1.00000002000000055555556555555588p-30,
+    0x1.fffffff80p-1
+  },
+  { // Entry 259
+    -0x1.00000001000000015555555755555558p-31,
+    0x1.fffffffc0p-1
+  },
+  { // Entry 260
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 261
+    0x1.fffffffe00000002aaaaaaa6aaaaaab1p-32,
+    0x1.000000020p0
+  },
+  { // Entry 262
+    0x1.fffffffc0000000aaaaaaa8aaaaaab11p-31,
+    0x1.000000040p0
+  },
+  { // Entry 263
+    -0x1.00000000008000000000555555555595p-40,
+    0x1.fffffffffe0p-1
+  },
+  { // Entry 264
+    -0x1.0000000000400000000015555555555dp-41,
+    0x1.ffffffffff0p-1
+  },
+  { // Entry 265
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 266
+    0x1.ffffffffff80000000002aaaaaaaaa9ap-42,
+    0x1.00000000008p0
+  },
+  { // Entry 267
+    0x1.ffffffffff0000000000aaaaaaaaaa2ap-41,
+    0x1.00000000010p0
+  },
+  { // Entry 268
+    -0x1.00000000000020000000000005555555p-50,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 269
+    -0x1.00000000000010000000000001555555p-51,
+    0x1.ffffffffffffcp-1
+  },
+  { // Entry 270
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 271
+    0x1.ffffffffffffe0000000000002aaaaaap-52,
+    0x1.0000000000002p0
+  },
+  { // Entry 272
+    0x1.ffffffffffffc000000000000aaaaaaap-51,
+    0x1.0000000000004p0
+  },
+  { // Entry 273
+    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 274
+    -0x1.74385446d71c36395a7ea3b9e048a775p9,
+    0x1.0p-1074
+  },
+  { // Entry 275
+    -0x1.62e42fefa39f3a261da205fd13cb53dfp-2,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 276
+    -0x1.62e42fefa39f0ce4e0d5078578892721p-2,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 277
+    -0x1.62e42fefa39edfa3a408090ddf46fa62p-2,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 278
+    0x1.62e42fefa39eac8909ecc862fc0086ddp-2,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 279
+    0x1.62e42fefa39ed9ca46b9c6da9742b39bp-2,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 280
+    0x1.62e42fefa39f070b8386c5523084e05ap-2,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 281
+    -0x1.62e42fefa39f035793c767300825ed5ep-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 282
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p-1
+  },
+  { // Entry 283
+    -0x1.62e42fefa39ed35793c7673008e5ed5ep-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 284
+    -0x1.269621134db9522e69621216b637fb86p-2,
+    0x1.7ffffffffffffp-1
+  },
+  { // Entry 285
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    0x1.8p-1
+  },
+  { // Entry 286
+    -0x1.269621134db8fcd9140cbcc160e2a631p-2,
+    0x1.8000000000001p-1
+  },
+  { // Entry 287
+    0x1.9f323ecbf9849480be2cbc495993df36p-2,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 288
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.8p0
+  },
+  { // Entry 289
+    0x1.9f323ecbf984e9d61382119eaee9348bp-2,
+    0x1.8000000000001p0
+  },
+  { // Entry 290
+    0x1.54e3c0b10a36434abac277160311ccb4p-9,
+    0x1.00aaaaaaaaaaap0
+  },
+  { // Entry 291
+    0x1.54e3c0b10a562e0394dbbb9359f477ddp-9,
+    0x1.00aaaaaaaaaabp0
+  },
+  { // Entry 292
+    0x1.54e3c0b10a7618bc6ef5000eb37f2563p-9,
+    0x1.00aaaaaaaaaacp0
+  },
+  { // Entry 293
+    0x1.62e42fefa39eeb5793c7673007c5ed5ep0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 294
+    0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    0x1.0p2
+  },
+  { // Entry 295
+    0x1.62e42fefa39f035793c767300765ed5ep0,
+    0x1.0000000000001p2
+  },
+  { // Entry 296
+    0x1.62e42fefa39ee35793c7673007a5ed5ep-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 297
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p1
+  },
+  { // Entry 298
+    0x1.62e42fefa39f135793c7673006e5ed5ep-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 299
+    -0x1.00000000000004000000000000155555p-53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 301
+    0x1.fffffffffffff0000000000000aaaaaap-53,
+    0x1.0000000000001p0
+  },
+  { // Entry 302
+    -0x1.62e42fefa39f035793c767300825ed5ep-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 303
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p-1
+  },
+  { // Entry 304
+    -0x1.62e42fefa39ed35793c7673008e5ed5ep-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 305
+    -0x1.62e42fefa39efb5793c767300805ed5ep0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 306
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    0x1.0p-2
+  },
+  { // Entry 307
+    -0x1.62e42fefa39ee35793c767300865ed5ep0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 308
+    -0x1.0a2b23f3bab73a81aed58d6405fc7206p1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 309
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
+    0x1.0p-3
+  },
+  { // Entry 310
+    -0x1.0a2b23f3bab72e81aed58d64062c7206p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 311
+    -0x1.62e42fefa39ef75793c7673007f5ed5ep1,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 312
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
+    0x1.0p-4
+  },
+  { // Entry 313
+    -0x1.62e42fefa39eeb5793c767300825ed5ep1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 314
+    -0x1.bb9d3beb8c86b42d78b940fc09ef68b6p1,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 315
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
+    0x1.0p-5
+  },
+  { // Entry 316
+    -0x1.bb9d3beb8c86a82d78b940fc0a1f68b6p1,
+    0x1.0000000000001p-5
+  },
+  { // Entry 317
+    -0x1.0a2b23f3bab73881aed58d6405f47206p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 318
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
+    0x1.0p-6
+  },
+  { // Entry 319
+    -0x1.0a2b23f3bab73281aed58d64060c7206p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 320
+    -0x1.3687a9f1af2b16eca14e7a4a06f12fb2p2,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 321
+    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
+    0x1.0p-7
+  },
+  { // Entry 322
+    -0x1.3687a9f1af2b10eca14e7a4a07092fb2p2,
+    0x1.0000000000001p-7
+  },
+  { // Entry 323
+    -0x1.62e42fefa39ef55793c7673007eded5ep2,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 324
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
+    0x1.0p-8
+  },
+  { // Entry 325
+    -0x1.62e42fefa39eef5793c767300805ed5ep2,
+    0x1.0000000000001p-8
+  },
+  { // Entry 326
+    -0x1.8f40b5ed9812d3c28640541608eaab0ap2,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 327
+    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
+    0x1.0p-9
+  },
+  { // Entry 328
+    -0x1.8f40b5ed9812cdc2864054160902ab0ap2,
+    0x1.0000000000001p-9
+  },
+  { // Entry 329
+    -0x1.bb9d3beb8c86b22d78b940fc09e768b6p2,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 330
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
+    0x1.0p-10
+  },
+  { // Entry 331
+    -0x1.bb9d3beb8c86ac2d78b940fc09ff68b6p2,
+    0x1.0000000000001p-10
+  },
+  { // Entry 332
+    -0x1.205966f2b4f126b7281203d7066ed0dcp3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 333
+    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
+    0x1.0p-13
+  },
+  { // Entry 334
+    -0x1.205966f2b4f123b7281203d7067ad0dcp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 335
+    -0x1.205966f2b4f126b7281203d7066ed0dcp3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 336
+    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
+    0x1.0p-13
+  },
+  { // Entry 337
+    -0x1.205966f2b4f123b7281203d7067ad0dcp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 338
+    -0x1.0a2b23f3bab73a81aed58d6405fc7206p1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 339
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
+    0x1.0p-3
+  },
+  { // Entry 340
+    -0x1.0a2b23f3bab72e81aed58d64062c7206p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 341
+    -0x1.1178e8227e480707cafd4459785b0e8fp-3,
+    0x1.bffffffffffffp-1
+  },
+  { // Entry 342
+    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
+    0x1.cp-1
+  },
+  { // Entry 343
+    -0x1.1178e8227e4774bea66afb34e611e9fdp-3,
+    0x1.c000000000001p-1
+  },
+  { // Entry 344
+    -0x1.62e42fefa39ef75793c7673007f5ed5ep1,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 345
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
+    0x1.0p-4
+  },
+  { // Entry 346
+    -0x1.62e42fefa39eeb5793c767300825ed5ep1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 347
+    -0x1.08598b59e3a0f112c86247d8be41d487p-4,
+    0x1.dffffffffffffp-1
+  },
+  { // Entry 348
+    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
+    0x1.ep-1
+  },
+  { // Entry 349
+    -0x1.08598b59e39fe001b75136c7ad30c376p-4,
+    0x1.e000000000001p-1
+  },
+  { // Entry 350
+    -0x1.bb9d3beb8c86b42d78b940fc09ef68b6p1,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 351
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
+    0x1.0p-5
+  },
+  { // Entry 352
+    -0x1.bb9d3beb8c86a82d78b940fc0a1f68b6p1,
+    0x1.0000000000001p-5
+  },
+  { // Entry 353
+    -0x1.0415d89e74454f43844b7e55cedd837bp-5,
+    0x1.effffffffffffp-1
+  },
+  { // Entry 354
+    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
+    0x1.fp-1
+  },
+  { // Entry 355
+    -0x1.0415d89e74433ebf63433c454abc7b39p-5,
+    0x1.f000000000001p-1
+  },
+  { // Entry 356
+    -0x1.0a2b23f3bab73881aed58d6405f47206p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 357
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
+    0x1.0p-6
+  },
+  { // Entry 358
+    -0x1.0a2b23f3bab73281aed58d64060c7206p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 359
+    -0x1.0205658935867cbfa5a9263bd81da4a0p-6,
+    0x1.f7fffffffffffp-1
+  },
+  { // Entry 360
+    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
+    0x1.f80p-1
+  },
+  { // Entry 361
+    -0x1.0205658935826c7ea198e537c7dca08fp-6,
+    0x1.f800000000001p-1
+  },
+  { // Entry 362
+    -0x1.3687a9f1af2b16eca14e7a4a06f12fb2p2,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 363
+    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
+    0x1.0p-7
+  },
+  { // Entry 364
+    -0x1.3687a9f1af2b10eca14e7a4a07092fb2p2,
+    0x1.0000000000001p-7
+  },
+  { // Entry 365
+    -0x1.010157588deb1a9cec9b03fbee49c6b0p-7,
+    0x1.fbfffffffffffp-1
+  },
+  { // Entry 366
+    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
+    0x1.fc0p-1
+  },
+  { // Entry 367
+    -0x1.010157588de30a7cac1a01f7e639a670p-7,
+    0x1.fc00000000001p-1
+  },
+  { // Entry 368
+    -0x1.62e42fefa39ef55793c7673007eded5ep2,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 369
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
+    0x1.0p-8
+  },
+  { // Entry 370
+    -0x1.62e42fefa39eef5793c767300805ed5ep2,
+    0x1.0000000000001p-8
+  },
+  { // Entry 371
+    -0x1.0080559588bb5feda0eb4595c5fbe2b1p-8,
+    0x1.fdfffffffffffp-1
+  },
+  { // Entry 372
+    -0x1.0080559588b357e598e33d8d9db37a29p-8,
+    0x1.fe0p-1
+  },
+  { // Entry 373
+    -0x1.0080559588ab4fdd90db3585b5ebd2a1p-8,
+    0x1.fe00000000001p-1
+  },
+  { // Entry 374
+    -0x1.8f40b5ed9812d3c28640541608eaab0ap2,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 375
+    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
+    0x1.0p-9
+  },
+  { // Entry 376
+    -0x1.8f40b5ed9812cdc2864054160902ab0ap2,
+    0x1.0000000000001p-9
+  },
+  { // Entry 377
+    -0x1.0040155d5899e674691fef41402f3e7bp-9,
+    0x1.fefffffffffffp-1
+  },
+  { // Entry 378
+    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
+    0x1.ff0p-1
+  },
+  { // Entry 379
+    -0x1.0040155d5879d66c651dee40bfef1e6bp-9,
+    0x1.ff00000000001p-1
+  },
+  { // Entry 380
+    -0x1.bb9d3beb8c86b22d78b940fc09e768b6p2,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 381
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
+    0x1.0p-10
+  },
+  { // Entry 382
+    -0x1.bb9d3beb8c86ac2d78b940fc09ff68b6p2,
+    0x1.0000000000001p-10
+  },
+  { // Entry 383
+    -0x1.0020055655a89b377d5801fd08fd9f2dp-10,
+    0x1.ff7ffffffffffp-1
+  },
+  { // Entry 384
+    -0x1.00200556558893357cd7e1f486bd0705p-10,
+    0x1.ff8p-1
+  },
+  { // Entry 385
+    -0x1.0020055655688b337c57c1ed04fc9eedp-10,
+    0x1.ff80000000001p-1
+  },
+  { // Entry 386
+    -0x1.205966f2b4f126b7281203d7066ed0dcp3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 387
+    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
+    0x1.0p-13
+  },
+  { // Entry 388
+    -0x1.205966f2b4f123b7281203d7067ad0dcp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 389
+    -0x1.0004001556d56088dde0703f034ca096p-13,
+    0x1.ffeffffffffffp-1
+  },
+  { // Entry 390
+    -0x1.0004001555d558889dde702b028c9996p-13,
+    0x1.fffp-1
+  },
+  { // Entry 391
+    -0x1.0004001554d550885ddc701f024c9896p-13,
+    0x1.fff0000000001p-1
+  },
+  { // Entry 392
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 393
+    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 394
+    0x1.62e42fefa39ef34f93c7673007e5ad5ep9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 395
+    0x1.250d048e7a1bcdee499fa5b0ca1dd243p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 396
+    0x1.ce6bb25aa1315109feefc86318ab6e52p-2,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 397
+    0x1.fffffffffffff0000000000000aaaaaap-53,
+    0x1.0000000000001p0
+  },
+  { // Entry 398
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 399
+    -0x1.00000000000004000000000000155555p-53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 400
+    -0x1.eeb95b094c192b4a513e0bf9ee40d8d4p-3,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 401
+    -0x1.6232bdd7abcd23d5e7fd837c6fe23a67p9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 402
+    -0x1.6232bdd7abcd23dde7fd837c6fe1fa67p9,
+    0x1.0p-1022
+  },
+  { // Entry 403
+    -0x1.6232bdd7abcd23e5e7fd837c6fe23a67p9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 404
+    -0x1.6232bdd7abcd23ede7fd837c6fe2fa67p9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 405
+    -0x1.73df9b3adb334e7c8499b1e01446adfap9,
+    0x1.0p-1073
+  },
+  { // Entry 406
+    -0x1.74385446d71c36395a7ea3b9e048a775p9,
+    0x1.0p-1074
+  },
+  { // Entry 407
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 408
+    -HUGE_VAL,
+    -0.0
+  },
+};
diff --git a/tests/math_data/logb_intel_data.h b/tests/math_data/logb_intel_data.h
new file mode 100644
index 0000000..4657014
--- /dev/null
+++ b/tests/math_data/logb_intel_data.h
@@ -0,0 +1,898 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_logb_intel_data[] = {
+  { // Entry 0
+    -0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 2
+    0x1.90p6,
+    0x1.0p100
+  },
+  { // Entry 3
+    0x1.90p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 4
+    0x1.90p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 5
+    0x1.90p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 6
+    0x1.90p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 7
+    0x1.90p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 8
+    0x1.90p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 9
+    0x1.90p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 10
+    0x1.90p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 11
+    0x1.90p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 12
+    0x1.94p6,
+    0x1.0p101
+  },
+  { // Entry 13
+    0x1.90p7,
+    0x1.0p200
+  },
+  { // Entry 14
+    0x1.90p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 15
+    0x1.90p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 16
+    0x1.90p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 17
+    0x1.90p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 18
+    0x1.90p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 19
+    0x1.90p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 20
+    0x1.90p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 21
+    0x1.90p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 22
+    0x1.90p7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 23
+    0x1.92p7,
+    0x1.0p201
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.0p1000
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 30
+    0x1.f4p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 31
+    0x1.f4p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 32
+    0x1.f4p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 33
+    0x1.f4p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 34
+    0x1.f480p9,
+    0x1.0p1001
+  },
+  { // Entry 35
+    0x1.94p6,
+    -0x1.0p101
+  },
+  { // Entry 36
+    0x1.90p6,
+    -0x1.e666666666666p100
+  },
+  { // Entry 37
+    0x1.90p6,
+    -0x1.cccccccccccccp100
+  },
+  { // Entry 38
+    0x1.90p6,
+    -0x1.b333333333332p100
+  },
+  { // Entry 39
+    0x1.90p6,
+    -0x1.9999999999998p100
+  },
+  { // Entry 40
+    0x1.90p6,
+    -0x1.7fffffffffffep100
+  },
+  { // Entry 41
+    0x1.90p6,
+    -0x1.6666666666664p100
+  },
+  { // Entry 42
+    0x1.90p6,
+    -0x1.4cccccccccccap100
+  },
+  { // Entry 43
+    0x1.90p6,
+    -0x1.3333333333330p100
+  },
+  { // Entry 44
+    0x1.90p6,
+    -0x1.1999999999996p100
+  },
+  { // Entry 45
+    0x1.90p6,
+    -0x1.0p100
+  },
+  { // Entry 46
+    0x1.92p7,
+    -0x1.0p201
+  },
+  { // Entry 47
+    0x1.90p7,
+    -0x1.e666666666666p200
+  },
+  { // Entry 48
+    0x1.90p7,
+    -0x1.cccccccccccccp200
+  },
+  { // Entry 49
+    0x1.90p7,
+    -0x1.b333333333332p200
+  },
+  { // Entry 50
+    0x1.90p7,
+    -0x1.9999999999998p200
+  },
+  { // Entry 51
+    0x1.90p7,
+    -0x1.7fffffffffffep200
+  },
+  { // Entry 52
+    0x1.90p7,
+    -0x1.6666666666664p200
+  },
+  { // Entry 53
+    0x1.90p7,
+    -0x1.4cccccccccccap200
+  },
+  { // Entry 54
+    0x1.90p7,
+    -0x1.3333333333330p200
+  },
+  { // Entry 55
+    0x1.90p7,
+    -0x1.1999999999996p200
+  },
+  { // Entry 56
+    0x1.90p7,
+    -0x1.0p200
+  },
+  { // Entry 57
+    0x1.f480p9,
+    -0x1.0p1001
+  },
+  { // Entry 58
+    0x1.f4p9,
+    -0x1.e666666666666p1000
+  },
+  { // Entry 59
+    0x1.f4p9,
+    -0x1.cccccccccccccp1000
+  },
+  { // Entry 60
+    0x1.f4p9,
+    -0x1.b333333333332p1000
+  },
+  { // Entry 61
+    0x1.f4p9,
+    -0x1.9999999999998p1000
+  },
+  { // Entry 62
+    0x1.f4p9,
+    -0x1.7fffffffffffep1000
+  },
+  { // Entry 63
+    0x1.f4p9,
+    -0x1.6666666666664p1000
+  },
+  { // Entry 64
+    0x1.f4p9,
+    -0x1.4cccccccccccap1000
+  },
+  { // Entry 65
+    0x1.f4p9,
+    -0x1.3333333333330p1000
+  },
+  { // Entry 66
+    0x1.f4p9,
+    -0x1.1999999999996p1000
+  },
+  { // Entry 67
+    0x1.f4p9,
+    -0x1.0p1000
+  },
+  { // Entry 68
+    0x1.90p5,
+    0x1.0p50
+  },
+  { // Entry 69
+    0x1.90p5,
+    0x1.199999999999ap50
+  },
+  { // Entry 70
+    0x1.90p5,
+    0x1.3333333333334p50
+  },
+  { // Entry 71
+    0x1.90p5,
+    0x1.4cccccccccccep50
+  },
+  { // Entry 72
+    0x1.90p5,
+    0x1.6666666666668p50
+  },
+  { // Entry 73
+    0x1.90p5,
+    0x1.8000000000002p50
+  },
+  { // Entry 74
+    0x1.90p5,
+    0x1.999999999999cp50
+  },
+  { // Entry 75
+    0x1.90p5,
+    0x1.b333333333336p50
+  },
+  { // Entry 76
+    0x1.90p5,
+    0x1.cccccccccccd0p50
+  },
+  { // Entry 77
+    0x1.90p5,
+    0x1.e66666666666ap50
+  },
+  { // Entry 78
+    0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 79
+    0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 80
+    0x1.98p5,
+    0x1.199999999999ap51
+  },
+  { // Entry 81
+    0x1.98p5,
+    0x1.3333333333334p51
+  },
+  { // Entry 82
+    0x1.98p5,
+    0x1.4cccccccccccep51
+  },
+  { // Entry 83
+    0x1.98p5,
+    0x1.6666666666668p51
+  },
+  { // Entry 84
+    0x1.98p5,
+    0x1.8000000000002p51
+  },
+  { // Entry 85
+    0x1.98p5,
+    0x1.999999999999cp51
+  },
+  { // Entry 86
+    0x1.98p5,
+    0x1.b333333333336p51
+  },
+  { // Entry 87
+    0x1.98p5,
+    0x1.cccccccccccd0p51
+  },
+  { // Entry 88
+    0x1.98p5,
+    0x1.e66666666666ap51
+  },
+  { // Entry 89
+    0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 90
+    0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 91
+    0x1.a0p5,
+    0x1.199999999999ap52
+  },
+  { // Entry 92
+    0x1.a0p5,
+    0x1.3333333333334p52
+  },
+  { // Entry 93
+    0x1.a0p5,
+    0x1.4cccccccccccep52
+  },
+  { // Entry 94
+    0x1.a0p5,
+    0x1.6666666666668p52
+  },
+  { // Entry 95
+    0x1.a0p5,
+    0x1.8000000000002p52
+  },
+  { // Entry 96
+    0x1.a0p5,
+    0x1.999999999999cp52
+  },
+  { // Entry 97
+    0x1.a0p5,
+    0x1.b333333333336p52
+  },
+  { // Entry 98
+    0x1.a0p5,
+    0x1.cccccccccccd0p52
+  },
+  { // Entry 99
+    0x1.a0p5,
+    0x1.e66666666666ap52
+  },
+  { // Entry 100
+    0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 101
+    0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 102
+    0x1.a8p5,
+    0x1.199999999999ap53
+  },
+  { // Entry 103
+    0x1.a8p5,
+    0x1.3333333333334p53
+  },
+  { // Entry 104
+    0x1.a8p5,
+    0x1.4cccccccccccep53
+  },
+  { // Entry 105
+    0x1.a8p5,
+    0x1.6666666666668p53
+  },
+  { // Entry 106
+    0x1.a8p5,
+    0x1.8000000000002p53
+  },
+  { // Entry 107
+    0x1.a8p5,
+    0x1.999999999999cp53
+  },
+  { // Entry 108
+    0x1.a8p5,
+    0x1.b333333333336p53
+  },
+  { // Entry 109
+    0x1.a8p5,
+    0x1.cccccccccccd0p53
+  },
+  { // Entry 110
+    0x1.a8p5,
+    0x1.e66666666666ap53
+  },
+  { // Entry 111
+    0x1.b0p5,
+    0x1.0p54
+  },
+  { // Entry 112
+    -0x1.0080p10,
+    0x1.0p-1026
+  },
+  { // Entry 113
+    -0x1.p10,
+    0x1.d333333333334p-1024
+  },
+  { // Entry 114
+    -0x1.ff80p9,
+    0x1.b333333333334p-1023
+  },
+  { // Entry 115
+    -0x1.ffp9,
+    0x1.3e66666666667p-1022
+  },
+  { // Entry 116
+    -0x1.ffp9,
+    0x1.a333333333334p-1022
+  },
+  { // Entry 117
+    -0x1.fe80p9,
+    0x1.040p-1021
+  },
+  { // Entry 118
+    -0x1.fe80p9,
+    0x1.3666666666666p-1021
+  },
+  { // Entry 119
+    -0x1.fe80p9,
+    0x1.68cccccccccccp-1021
+  },
+  { // Entry 120
+    -0x1.fe80p9,
+    0x1.9b33333333332p-1021
+  },
+  { // Entry 121
+    -0x1.fe80p9,
+    0x1.cd99999999998p-1021
+  },
+  { // Entry 122
+    -0x1.fe80p9,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 123
+    0x1.90p5,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 124
+    0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 125
+    0x1.98p5,
+    0x1.0000000000001p51
+  },
+  { // Entry 126
+    0x1.98p5,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 127
+    0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 128
+    0x1.a0p5,
+    0x1.0000000000001p52
+  },
+  { // Entry 129
+    0x1.a0p5,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 130
+    0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 131
+    0x1.a8p5,
+    0x1.0000000000001p53
+  },
+  { // Entry 132
+    0x1.98p5,
+    -0x1.0000000000001p51
+  },
+  { // Entry 133
+    0x1.98p5,
+    -0x1.0p51
+  },
+  { // Entry 134
+    0x1.90p5,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 135
+    0x1.a0p5,
+    -0x1.0000000000001p52
+  },
+  { // Entry 136
+    0x1.a0p5,
+    -0x1.0p52
+  },
+  { // Entry 137
+    0x1.98p5,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 138
+    0x1.a8p5,
+    -0x1.0000000000001p53
+  },
+  { // Entry 139
+    0x1.a8p5,
+    -0x1.0p53
+  },
+  { // Entry 140
+    0x1.a0p5,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 141
+    0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 142
+    0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 143
+    -0x1.c0p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 144
+    -0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 145
+    -0x1.80p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 146
+    -0x1.80p2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 147
+    -0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 148
+    -0x1.40p2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 149
+    -0x1.40p2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 150
+    -0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 151
+    -0x1.p2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 152
+    -0x1.p2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 153
+    -0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 154
+    -0x1.80p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 155
+    -0x1.80p1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 156
+    -0x1.p1,
+    0x1.0p-2
+  },
+  { // Entry 157
+    -0x1.p1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 158
+    -0x1.p1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 159
+    -0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 160
+    -0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 161
+    -0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 162
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 163
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 164
+    -0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 165
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 166
+    0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 167
+    0.0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 168
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 169
+    0x1.p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 170
+    0x1.p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 171
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 172
+    0x1.p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 173
+    0x1.p1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 174
+    0x1.80p1,
+    0x1.0p3
+  },
+  { // Entry 175
+    0x1.80p1,
+    0x1.0000000000001p3
+  },
+  { // Entry 176
+    0x1.80p1,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 177
+    0x1.p2,
+    0x1.0p4
+  },
+  { // Entry 178
+    0x1.p2,
+    0x1.0000000000001p4
+  },
+  { // Entry 179
+    0x1.p2,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 180
+    0x1.40p2,
+    0x1.0p5
+  },
+  { // Entry 181
+    0x1.40p2,
+    0x1.0000000000001p5
+  },
+  { // Entry 182
+    0x1.40p2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 183
+    0x1.80p2,
+    0x1.0p6
+  },
+  { // Entry 184
+    0x1.80p2,
+    0x1.0000000000001p6
+  },
+  { // Entry 185
+    0x1.80p2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 186
+    0x1.c0p2,
+    0x1.0p7
+  },
+  { // Entry 187
+    0x1.c0p2,
+    0x1.0000000000001p7
+  },
+  { // Entry 188
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 189
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 190
+    0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    0x1.ff80p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    0x1.ff80p9,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 194
+    0x1.p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 195
+    0x1.p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 196
+    0.0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 197
+    0.0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 198
+    0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 199
+    0.0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 200
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 201
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 202
+    -0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 203
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 204
+    -0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 205
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 206
+    -0x1.ffp9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 207
+    -0x1.ffp9,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 208
+    -0x1.ffp9,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    -0x1.ffp9,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    -0x1.ff80p9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 211
+    -0x1.ff80p9,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    -0x1.ff80p9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 213
+    -0x1.ff80p9,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 214
+    -0x1.0c40p10,
+    0x1.0p-1073
+  },
+  { // Entry 215
+    -0x1.0c40p10,
+    -0x1.0p-1073
+  },
+  { // Entry 216
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 217
+    -0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 218
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 219
+    -HUGE_VAL,
+    -0.0
+  }
+};
diff --git a/tests/math_data/logbf_intel_data.h b/tests/math_data/logbf_intel_data.h
new file mode 100644
index 0000000..1ad3c03
--- /dev/null
+++ b/tests/math_data/logbf_intel_data.h
@@ -0,0 +1,714 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_logbf_intel_data[] = {
+  { // Entry 0
+    0x1.90p6,
+    0x1.p100
+  },
+  { // Entry 1
+    0x1.90p6,
+    0x1.19999ap100
+  },
+  { // Entry 2
+    0x1.90p6,
+    0x1.333334p100
+  },
+  { // Entry 3
+    0x1.90p6,
+    0x1.4ccccep100
+  },
+  { // Entry 4
+    0x1.90p6,
+    0x1.666668p100
+  },
+  { // Entry 5
+    0x1.90p6,
+    0x1.800002p100
+  },
+  { // Entry 6
+    0x1.90p6,
+    0x1.99999cp100
+  },
+  { // Entry 7
+    0x1.90p6,
+    0x1.b33336p100
+  },
+  { // Entry 8
+    0x1.90p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 9
+    0x1.90p6,
+    0x1.e6666ap100
+  },
+  { // Entry 10
+    0x1.94p6,
+    0x1.p101
+  },
+  { // Entry 11
+    0x1.94p6,
+    -0x1.p101
+  },
+  { // Entry 12
+    0x1.90p6,
+    -0x1.e66666p100
+  },
+  { // Entry 13
+    0x1.90p6,
+    -0x1.ccccccp100
+  },
+  { // Entry 14
+    0x1.90p6,
+    -0x1.b33332p100
+  },
+  { // Entry 15
+    0x1.90p6,
+    -0x1.999998p100
+  },
+  { // Entry 16
+    0x1.90p6,
+    -0x1.7ffffep100
+  },
+  { // Entry 17
+    0x1.90p6,
+    -0x1.666664p100
+  },
+  { // Entry 18
+    0x1.90p6,
+    -0x1.4ccccap100
+  },
+  { // Entry 19
+    0x1.90p6,
+    -0x1.333330p100
+  },
+  { // Entry 20
+    0x1.90p6,
+    -0x1.199996p100
+  },
+  { // Entry 21
+    0x1.90p6,
+    -0x1.p100
+  },
+  { // Entry 22
+    0x1.50p4,
+    0x1.p21
+  },
+  { // Entry 23
+    0x1.50p4,
+    0x1.19999ap21
+  },
+  { // Entry 24
+    0x1.50p4,
+    0x1.333334p21
+  },
+  { // Entry 25
+    0x1.50p4,
+    0x1.4ccccep21
+  },
+  { // Entry 26
+    0x1.50p4,
+    0x1.666668p21
+  },
+  { // Entry 27
+    0x1.50p4,
+    0x1.800002p21
+  },
+  { // Entry 28
+    0x1.50p4,
+    0x1.99999cp21
+  },
+  { // Entry 29
+    0x1.50p4,
+    0x1.b33336p21
+  },
+  { // Entry 30
+    0x1.50p4,
+    0x1.ccccd0p21
+  },
+  { // Entry 31
+    0x1.50p4,
+    0x1.e6666ap21
+  },
+  { // Entry 32
+    0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 33
+    0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 34
+    0x1.60p4,
+    0x1.19999ap22
+  },
+  { // Entry 35
+    0x1.60p4,
+    0x1.333334p22
+  },
+  { // Entry 36
+    0x1.60p4,
+    0x1.4ccccep22
+  },
+  { // Entry 37
+    0x1.60p4,
+    0x1.666668p22
+  },
+  { // Entry 38
+    0x1.60p4,
+    0x1.800002p22
+  },
+  { // Entry 39
+    0x1.60p4,
+    0x1.99999cp22
+  },
+  { // Entry 40
+    0x1.60p4,
+    0x1.b33336p22
+  },
+  { // Entry 41
+    0x1.60p4,
+    0x1.ccccd0p22
+  },
+  { // Entry 42
+    0x1.60p4,
+    0x1.e6666ap22
+  },
+  { // Entry 43
+    0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 44
+    0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 45
+    0x1.70p4,
+    0x1.19999ap23
+  },
+  { // Entry 46
+    0x1.70p4,
+    0x1.333334p23
+  },
+  { // Entry 47
+    0x1.70p4,
+    0x1.4ccccep23
+  },
+  { // Entry 48
+    0x1.70p4,
+    0x1.666668p23
+  },
+  { // Entry 49
+    0x1.70p4,
+    0x1.800002p23
+  },
+  { // Entry 50
+    0x1.70p4,
+    0x1.99999cp23
+  },
+  { // Entry 51
+    0x1.70p4,
+    0x1.b33336p23
+  },
+  { // Entry 52
+    0x1.70p4,
+    0x1.ccccd0p23
+  },
+  { // Entry 53
+    0x1.70p4,
+    0x1.e6666ap23
+  },
+  { // Entry 54
+    0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 55
+    0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 56
+    0x1.80p4,
+    0x1.19999ap24
+  },
+  { // Entry 57
+    0x1.80p4,
+    0x1.333334p24
+  },
+  { // Entry 58
+    0x1.80p4,
+    0x1.4ccccep24
+  },
+  { // Entry 59
+    0x1.80p4,
+    0x1.666668p24
+  },
+  { // Entry 60
+    0x1.80p4,
+    0x1.800002p24
+  },
+  { // Entry 61
+    0x1.80p4,
+    0x1.99999cp24
+  },
+  { // Entry 62
+    0x1.80p4,
+    0x1.b33336p24
+  },
+  { // Entry 63
+    0x1.80p4,
+    0x1.ccccd0p24
+  },
+  { // Entry 64
+    0x1.80p4,
+    0x1.e6666ap24
+  },
+  { // Entry 65
+    0x1.90p4,
+    0x1.p25
+  },
+  { // Entry 66
+    -0x1.04p7,
+    0x1.p-130
+  },
+  { // Entry 67
+    -0x1.p7,
+    0x1.d33330p-128
+  },
+  { // Entry 68
+    -0x1.fcp6,
+    0x1.b33330p-127
+  },
+  { // Entry 69
+    -0x1.f8p6,
+    0x1.3e6664p-126
+  },
+  { // Entry 70
+    -0x1.f8p6,
+    0x1.a33330p-126
+  },
+  { // Entry 71
+    -0x1.f4p6,
+    0x1.03fffep-125
+  },
+  { // Entry 72
+    -0x1.f4p6,
+    0x1.366664p-125
+  },
+  { // Entry 73
+    -0x1.f4p6,
+    0x1.68cccap-125
+  },
+  { // Entry 74
+    -0x1.f4p6,
+    0x1.9b3330p-125
+  },
+  { // Entry 75
+    -0x1.f4p6,
+    0x1.cd9996p-125
+  },
+  { // Entry 76
+    -0x1.f4p6,
+    0x1.fffffcp-125
+  },
+  { // Entry 77
+    0x1.50p4,
+    0x1.fffffep21
+  },
+  { // Entry 78
+    0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 79
+    0x1.60p4,
+    0x1.000002p22
+  },
+  { // Entry 80
+    0x1.60p4,
+    0x1.fffffep22
+  },
+  { // Entry 81
+    0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 82
+    0x1.70p4,
+    0x1.000002p23
+  },
+  { // Entry 83
+    0x1.70p4,
+    0x1.fffffep23
+  },
+  { // Entry 84
+    0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 85
+    0x1.80p4,
+    0x1.000002p24
+  },
+  { // Entry 86
+    0x1.60p4,
+    -0x1.000002p22
+  },
+  { // Entry 87
+    0x1.60p4,
+    -0x1.p22
+  },
+  { // Entry 88
+    0x1.50p4,
+    -0x1.fffffep21
+  },
+  { // Entry 89
+    0x1.70p4,
+    -0x1.000002p23
+  },
+  { // Entry 90
+    0x1.70p4,
+    -0x1.p23
+  },
+  { // Entry 91
+    0x1.60p4,
+    -0x1.fffffep22
+  },
+  { // Entry 92
+    0x1.80p4,
+    -0x1.000002p24
+  },
+  { // Entry 93
+    0x1.80p4,
+    -0x1.p24
+  },
+  { // Entry 94
+    0x1.70p4,
+    -0x1.fffffep23
+  },
+  { // Entry 95
+    0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 96
+    0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 97
+    -0x1.c0p2,
+    0x1.fffffep-7
+  },
+  { // Entry 98
+    -0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 99
+    -0x1.80p2,
+    0x1.000002p-6
+  },
+  { // Entry 100
+    -0x1.80p2,
+    0x1.fffffep-6
+  },
+  { // Entry 101
+    -0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 102
+    -0x1.40p2,
+    0x1.000002p-5
+  },
+  { // Entry 103
+    -0x1.40p2,
+    0x1.fffffep-5
+  },
+  { // Entry 104
+    -0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 105
+    -0x1.p2,
+    0x1.000002p-4
+  },
+  { // Entry 106
+    -0x1.p2,
+    0x1.fffffep-4
+  },
+  { // Entry 107
+    -0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 108
+    -0x1.80p1,
+    0x1.000002p-3
+  },
+  { // Entry 109
+    -0x1.80p1,
+    0x1.fffffep-3
+  },
+  { // Entry 110
+    -0x1.p1,
+    0x1.p-2
+  },
+  { // Entry 111
+    -0x1.p1,
+    0x1.000002p-2
+  },
+  { // Entry 112
+    -0x1.p1,
+    0x1.fffffep-2
+  },
+  { // Entry 113
+    -0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 114
+    -0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 115
+    -0x1.2ap7,
+    -0x1.p-149
+  },
+  { // Entry 116
+    -HUGE_VALF,
+    0.0
+  },
+  { // Entry 117
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 118
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 119
+    0.0,
+    0x1.p0
+  },
+  { // Entry 120
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 121
+    0.0,
+    0x1.fffffep0
+  },
+  { // Entry 122
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 123
+    0x1.p0,
+    0x1.000002p1
+  },
+  { // Entry 124
+    0x1.p0,
+    0x1.fffffep1
+  },
+  { // Entry 125
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 126
+    0x1.p1,
+    0x1.000002p2
+  },
+  { // Entry 127
+    0x1.p1,
+    0x1.fffffep2
+  },
+  { // Entry 128
+    0x1.80p1,
+    0x1.p3
+  },
+  { // Entry 129
+    0x1.80p1,
+    0x1.000002p3
+  },
+  { // Entry 130
+    0x1.80p1,
+    0x1.fffffep3
+  },
+  { // Entry 131
+    0x1.p2,
+    0x1.p4
+  },
+  { // Entry 132
+    0x1.p2,
+    0x1.000002p4
+  },
+  { // Entry 133
+    0x1.p2,
+    0x1.fffffep4
+  },
+  { // Entry 134
+    0x1.40p2,
+    0x1.p5
+  },
+  { // Entry 135
+    0x1.40p2,
+    0x1.000002p5
+  },
+  { // Entry 136
+    0x1.40p2,
+    0x1.fffffep5
+  },
+  { // Entry 137
+    0x1.80p2,
+    0x1.p6
+  },
+  { // Entry 138
+    0x1.80p2,
+    0x1.000002p6
+  },
+  { // Entry 139
+    0x1.80p2,
+    0x1.fffffep6
+  },
+  { // Entry 140
+    0x1.c0p2,
+    0x1.p7
+  },
+  { // Entry 141
+    0x1.c0p2,
+    0x1.000002p7
+  },
+  { // Entry 142
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 143
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 144
+    0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 145
+    0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 146
+    0x1.fcp6,
+    0x1.fffffcp127
+  },
+  { // Entry 147
+    0x1.fcp6,
+    -0x1.fffffcp127
+  },
+  { // Entry 148
+    0x1.p0,
+    0x1.921fb6p1
+  },
+  { // Entry 149
+    0x1.p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 150
+    0.0,
+    0x1.921fb6p0
+  },
+  { // Entry 151
+    0.0,
+    -0x1.921fb6p0
+  },
+  { // Entry 152
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 153
+    0.0,
+    -0x1.000002p0
+  },
+  { // Entry 154
+    0.0,
+    0x1.p0
+  },
+  { // Entry 155
+    0.0,
+    -0x1.p0
+  },
+  { // Entry 156
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 158
+    -0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 159
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 160
+    -0x1.f8p6,
+    0x1.000002p-126
+  },
+  { // Entry 161
+    -0x1.f8p6,
+    -0x1.000002p-126
+  },
+  { // Entry 162
+    -0x1.f8p6,
+    0x1.p-126
+  },
+  { // Entry 163
+    -0x1.f8p6,
+    -0x1.p-126
+  },
+  { // Entry 164
+    -0x1.fcp6,
+    0x1.fffffcp-127
+  },
+  { // Entry 165
+    -0x1.fcp6,
+    -0x1.fffffcp-127
+  },
+  { // Entry 166
+    -0x1.fcp6,
+    0x1.fffff8p-127
+  },
+  { // Entry 167
+    -0x1.fcp6,
+    -0x1.fffff8p-127
+  },
+  { // Entry 168
+    -0x1.28p7,
+    0x1.p-148
+  },
+  { // Entry 169
+    -0x1.28p7,
+    -0x1.p-148
+  },
+  { // Entry 170
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 171
+    -0x1.2ap7,
+    -0x1.p-149
+  },
+  { // Entry 172
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 173
+    -HUGE_VALF,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/logf_intel_data.h b/tests/math_data/logf_intel_data.h
new file mode 100644
index 0000000..b69776c
--- /dev/null
+++ b/tests/math_data/logf_intel_data.h
@@ -0,0 +1,1306 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_logf_intel_data[] = {
+  { // Entry 0
+    -0x1.bb9d3aeb8c87b02d7763eba8b48a102dp1,
+    0x1.000002p-5
+  },
+  { // Entry 1
+    0x1.fffffe000002aaaaa6aaaab111110666p-24,
+    0x1.000002p0
+  },
+  { // Entry 2
+    -0x1.c6b45ceb09a5a7c82aacd1cadf7253dcp4,
+    0x1.000008p-41
+  },
+  { // Entry 3
+    -0x1.d1cb7cea86d09f62474b14c45f4cb680p3,
+    0x1.000010p-21
+  },
+  { // Entry 4
+    -0x1.fe2800e87c347d788f394ef2e93db868p5,
+    0x1.000080p-92
+  },
+  { // Entry 5
+    0x1.1fffaf001e5ff32f85c436e59fe73b1ep-17,
+    0x1.000090p0
+  },
+  { // Entry 6
+    -0x1.0a27a3fffa7e0d031d9a55d157a0e8c8p1,
+    0x1.0007p-3
+  },
+  { // Entry 7
+    0x1.54de6ee78989a9acfc875c1d45e16490p-9,
+    0x1.00aaa8p0
+  },
+  { // Entry 8
+    0x1.8f4826fff787c58fab520e505952bb55p-9,
+    0x1.00c7f2p0
+  },
+  { // Entry 9
+    -0x1.6150cefffc83ba2da43d8d7455ef2fdep-1,
+    0x1.00cap-1
+  },
+  { // Entry 10
+    0x1.cf2e3eb0928bdf5cbf064a27c6422c85p-9,
+    0x1.00e8p0
+  },
+  { // Entry 11
+    0x1.f0ee8a9a67ab36597ffd3c93304d0cc5p-9,
+    0x1.00f8f0p0
+  },
+  { // Entry 12
+    0x1.fbdfc897d239fb49dc1c31afeaea1ea5p-9,
+    0x1.00fe6ep0
+  },
+  { // Entry 13
+    0x1.fdc5e48f893e8f48967ee4ff1e895dd5p-9,
+    0x1.00ff62p0
+  },
+  { // Entry 14
+    0x1.be79c70058ec8f9a6c04043f52763c30p-8,
+    0x1.01c0p0
+  },
+  { // Entry 15
+    0x1.e3afef036c442bea46d105f6864ea6f3p-8,
+    0x1.01e57ap0
+  },
+  { // Entry 16
+    0x1.eb92db03d89f25719af908ebb6e7e510p-8,
+    0x1.01ed6cp0
+  },
+  { // Entry 17
+    0x1.f873b502f9427cb1a14872267ffae2f8p-8,
+    0x1.01fa66p0
+  },
+  { // Entry 18
+    0x1.fc108903fcd4cd445800cb06c164d0b0p-8,
+    0x1.01fe0ap0
+  },
+  { // Entry 19
+    0x1.fea168fad6274232ad3998c3e39e43d9p-8,
+    0x1.0200a0p0
+  },
+  { // Entry 20
+    0x1.0ce4c9fe3edd7f45dc38d30f76305931p-7,
+    0x1.021cp0
+  },
+  { // Entry 21
+    0x1.0ee096e2764f9f1e64840607436cc093p-7,
+    0x1.0220p0
+  },
+  { // Entry 22
+    0x1.fc098efffe49fe32c3576def6f303335p-7,
+    0x1.03fffep0
+  },
+  { // Entry 23
+    -0x1.58fed400015fff94ac3bb9ebbc81c8aep-1,
+    0x1.04ffp-1
+  },
+  { // Entry 24
+    -0x1.58b1f1ffffa56b55b6a722e0ab2c5ae6p-1,
+    0x1.052634p-1
+  },
+  { // Entry 25
+    0x1.e720a3003d099731c85ce6d689546a76p-6,
+    0x1.07b9c4p0
+  },
+  { // Entry 26
+    0x1.f5a4cb00353937ad8b1e07a6a469189fp-6,
+    0x1.07f59cp0
+  },
+  { // Entry 27
+    -0x1.b0080fffd588ec91883715736aae0f50p4,
+    0x1.08p-39
+  },
+  { // Entry 28
+    0x1.7f64a700002b54d6fb5d69bc35c5e2cap-1,
+    0x1.0ea7b0p1
+  },
+  { // Entry 29
+    0x1.cf2825078d8bd21f5b5543342e66b54dp-5,
+    0x1.0ee4p0
+  },
+  { // Entry 30
+    0x1.845657000391f340da745d9e5d283165p-1,
+    0x1.1148p1
+  },
+  { // Entry 31
+    -0x1.b959420004b51fb80d8329172d8922f6p3,
+    0x1.12c8p-20
+  },
+  { // Entry 32
+    -0x1.3cb226cef9a610cf77dc0067902b4099p-1,
+    0x1.13d4p-1
+  },
+  { // Entry 33
+    0x1.5e1a22fccd87d40b6e7ebc0226374d61p-4,
+    0x1.16d8p0
+  },
+  { // Entry 34
+    -0x1.35fb76dd8c7a211f33842af42c599114p-1,
+    0x1.1778p-1
+  },
+  { // Entry 35
+    -0x1.35028ad9d8c85c1fca93f355d4796bc1p-1,
+    0x1.18p-1
+  },
+  { // Entry 36
+    0x1.a3f71cff14b8111aded976c26d18960ep-4,
+    0x1.1ba4p0
+  },
+  { // Entry 37
+    -0x1.55a061fff90fa6df755f7aef5ab9f978p1,
+    0x1.1bf4p-4
+  },
+  { // Entry 38
+    -0x1.ce5ffde66a9af783b86443209ecec164p3,
+    0x1.1ce0p-21
+  },
+  { // Entry 39
+    -0x1.ce3a55ea5d47322bdbbe0fff5479ca1ep3,
+    0x1.1e30p-21
+  },
+  { // Entry 40
+    0x1.e23792ef52971fd6c72a99f598a0fbacp-4,
+    0x1.1ffcp0
+  },
+  { // Entry 41
+    0x1.8fe0c85314ba5e09e115528c02ef6e31p0,
+    0x1.312e78p2
+  },
+  { // Entry 42
+    -0x1.fdedfade465d57336a9b8a3562d3b176p-2,
+    0x1.372c16p-1
+  },
+  { // Entry 43
+    -0x1.fd9c98de7d89b9e29546a9b7692cacddp-2,
+    0x1.3744d2p-1
+  },
+  { // Entry 44
+    -0x1.fd5656de0c66d47b7b9cf4fa68b356e4p-2,
+    0x1.375a2ep-1
+  },
+  { // Entry 45
+    -0x1.fca98cde0ceb18d6d7bab7705d14de17p-2,
+    0x1.378ebcp-1
+  },
+  { // Entry 46
+    -0x1.fc0a58de4ea7c9432ac00ff0adb6db7ep-2,
+    0x1.37bf30p-1
+  },
+  { // Entry 47
+    -0x1.ebdede51de7d7b359acc23ec312af2d4p-2,
+    0x1.3cb56ap-1
+  },
+  { // Entry 48
+    -0x1.dae0dedfdda2569379630abffcaffff2p-2,
+    0x1.420208p-1
+  },
+  { // Entry 49
+    -0x1.d930ca53ae8e0695d14e48376b584668p-2,
+    0x1.428a04p-1
+  },
+  { // Entry 50
+    0x1.ec3649c72c05a069c2d000090851c639p-3,
+    0x1.458cbep0
+  },
+  { // Entry 51
+    0x1.f3e63257ecd12b0d9ccc9ff34c3f3d6ep-3,
+    0x1.46c626p0
+  },
+  { // Entry 52
+    -0x1.693cfa30b633b1d03f4ecd88a750ac79p-2,
+    0x1.67cd3ap-1
+  },
+  { // Entry 53
+    -0x1.692b5e42108b73d7599518074ce8670ap-2,
+    0x1.67d36ap-1
+  },
+  { // Entry 54
+    -0x1.63bbba1771b8208d851ab36cd6d93f38p-2,
+    0x1.69bdbap-1
+  },
+  { // Entry 55
+    0x1.62e25eec85781e60cb49b4f21becabdfp-2,
+    0x1.6a0942p0
+  },
+  { // Entry 56
+    0x1.62e3ce9ef86f6524351edd87310e8743p-2,
+    0x1.6a09c4p0
+  },
+  { // Entry 57
+    -0x1.3c607adedb168d9d89c6b2265b4dd0a4p-2,
+    0x1.77ea38p-1
+  },
+  { // Entry 58
+    -0x1.194432fffcb092d891670b7f8f628fc4p6,
+    0x1.77fffep-102
+  },
+  { // Entry 59
+    0x1.193ea500258270930f8e7d7af244dcffp0,
+    0x1.7ffffcp1
+  },
+  { // Entry 60
+    -0x1.dac08de1d26b0f69e1ed58bd3d9fd82bp3,
+    0x1.82fe92p-22
+  },
+  { // Entry 61
+    0x1.c8d70de117cb2fe459ed64cc67e5abc9p3,
+    0x1.830608p20
+  },
+  { // Entry 62
+    0x1.f2272ae325a57546f69496cf261be046p1,
+    0x1.88p5
+  },
+  { // Entry 63
+    0x1.c9c5ade34763c0b9a180d863bfc7f106p3,
+    0x1.8e7686p20
+  },
+  { // Entry 64
+    -0x1.f991d108abe1fc9c91e91ae7f707bd4fp-3,
+    0x1.8ffffep-1
+  },
+  { // Entry 65
+    -0x1.827d4d002e5d13215ce5f8de87566933p1,
+    0x1.8ffffep-5
+  },
+  { // Entry 66
+    -0x1.f305bd058b3c9e64101476e5de911d83p-3,
+    0x1.9147e0p-1
+  },
+  { // Entry 67
+    -0x1.ee7ee50650878a84e97f4cec96736bc5p-3,
+    0x1.922b30p-1
+  },
+  { // Entry 68
+    0x1.dc0391005bf0fccb92c262eeb6a300e4p0,
+    0x1.9ae278p2
+  },
+  { // Entry 69
+    -0x1.2650b600000be0c5902c7a15495161c5p1,
+    0x1.9aeea0p-4
+  },
+  { // Entry 70
+    -0x1.7ba9b7ffff3d189f5a17149697c12ce2p1,
+    0x1.a5e970p-5
+  },
+  { // Entry 71
+    -0x1.206170fffc9e8a93c1986e21787bed5ap1,
+    0x1.ae6ef0p-4
+  },
+  { // Entry 72
+    -0x1.d73d7ffc1e7abc4225e39878828f8666p3,
+    0x1.afe26cp-22
+  },
+  { // Entry 73
+    -0x1.25174700000008ddbe755739d626364fp3,
+    0x1.b97c70p-14
+  },
+  { // Entry 74
+    -0x1.1ca5b500035fc07c389a9e5cbfd78edbp1,
+    0x1.bb2c2cp-4
+  },
+  { // Entry 75
+    -0x1.24b0ebfffcc32ee1b9b739e2a4c7d059p3,
+    0x1.bf0970p-14
+  },
+  { // Entry 76
+    -0x1.669915000230d74fa2da2f40bbdf4469p3,
+    0x1.c7fffep-17
+  },
+  { // Entry 77
+    -0x1.954aeedf4d5f5fb7c474a35723b4e707p-1,
+    0x1.cffffep-2
+  },
+  { // Entry 78
+    -0x1.92e76afffcd449b3ac5d412b622f78a8p-4,
+    0x1.d008e4p-1
+  },
+  { // Entry 79
+    -0x1.ffa24f1c1233a9f8e8ae684edf89313fp-5,
+    0x1.e10040p-1
+  },
+  { // Entry 80
+    -0x1.117889fffffbdf8a5cd7c34f7246f3cfp1,
+    0x1.e39bb4p-4
+  },
+  { // Entry 81
+    -0x1.894ac2dcdde549d0d0922b5b4f54e028p-5,
+    0x1.e7fffep-1
+  },
+  { // Entry 82
+    -0x1.381d36ffe60eb1dfb0686574074223e7p-5,
+    0x1.ecdc1cp-1
+  },
+  { // Entry 83
+    0x1.d14973edb3656c771e18eca84bc94c76p4,
+    0x1.effffep41
+  },
+  { // Entry 84
+    -0x1.efea18fff1115e81636f53b65665e16ep-6,
+    0x1.f0bc20p-1
+  },
+  { // Entry 85
+    -0x1.a5b584ffdad31147d1140b1694740ad7p-6,
+    0x1.f2fd60p-1
+  },
+  { // Entry 86
+    -0x1.62b35affdf0a2429284b006b680bd1bep-6,
+    0x1.f508e4p-1
+  },
+  { // Entry 87
+    -0x1.0cb140ffff9f8f1e06e7f9af0a531a5bp1,
+    0x1.f600dcp-4
+  },
+  { // Entry 88
+    -0x1.0bfe70eb451ad09a7cb75c1eedfa6150p1,
+    0x1.f8c010p-4
+  },
+  { // Entry 89
+    -0x1.70c8c50dce246dd6bcb0461e7dc4937ep-7,
+    0x1.fa4522p-1
+  },
+  { // Entry 90
+    -0x1.416a71b773a2c3e3980b11efd1a197b5p-8,
+    0x1.fd7ebep-1
+  },
+  { // Entry 91
+    -0x1.c0c674621c5b474a430e13570c580388p-9,
+    0x1.fe3ffep-1
+  },
+  { // Entry 92
+    -0x1.04863cfffbbf7edb167cb60df3f3d599p-9,
+    0x1.fefbbcp-1
+  },
+  { // Entry 93
+    -0x1.0a5ddf00004ebf2a6feee99d5bddde34p1,
+    0x1.ff353cp-4
+  },
+  { // Entry 94
+    -0x1.d80366485b747247a45bb9a470179df1p-15,
+    0x1.fff8a0p-1
+  },
+  { // Entry 95
+    -0x1.d1cb7fea86c49f63074b0d445fb65014p3,
+    0x1.fffff0p-22
+  },
+  { // Entry 96
+    0x1.d1cb7dea86bc9f62dca06199b5053f03p3,
+    0x1.fffff0p20
+  },
+  { // Entry 97
+    -0x1.00000200000555556555558888893333p-22,
+    0x1.fffff8p-1
+  },
+  { // Entry 98
+    -0x1.00000100000155555755555888888dddp-23,
+    0x1.fffffcp-1
+  },
+  { // Entry 99
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 100
+    -0x1.62e43115a8fb47c3a7c2e76a80cca9a5p-2,
+    0x1.6a09e6p-1
+  },
+  { // Entry 101
+    -0x1.da391a70d28a24641626f5e9155324b5p-3,
+    0x1.962b60p-1
+  },
+  { // Entry 102
+    -0x1.06fbe6a4e25295f80fb2274afe6d3bacp-3,
+    0x1.c24cdap-1
+  },
+  { // Entry 103
+    -0x1.1e0a6d053425d3d6528aa717ecc9a578p-5,
+    0x1.ee6e54p-1
+  },
+  { // Entry 104
+    0x1.9e549c3779f093451892a1fe4e67b50ep-5,
+    0x1.0d47e6p0
+  },
+  { // Entry 105
+    0x1.08e0b9f3a7944bab3ecb56d6a7ff03b5p-3,
+    0x1.2358a2p0
+  },
+  { // Entry 106
+    0x1.9e645d60ff198986479346d164ecad7ep-3,
+    0x1.39695ep0
+  },
+  { // Entry 107
+    0x1.14dd670cac0212506bf72fb762d8a7dbp-2,
+    0x1.4f7a1ap0
+  },
+  { // Entry 108
+    0x1.561819aca49de6b1d1ccda1095c74502p-2,
+    0x1.658ad6p0
+  },
+  { // Entry 109
+    0x1.936a7c496c3e21406af9f4ac9beac6a5p-2,
+    0x1.7b9b92p0
+  },
+  { // Entry 110
+    0x1.cd45a8d7e3403f5278d5e3d566349f75p-2,
+    0x1.91ac4ep0
+  },
+  { // Entry 111
+    0x1.02044831211ed0068efa4c2a8b9870bfp-1,
+    0x1.a7bd0ap0
+  },
+  { // Entry 112
+    0x1.1c01d5f6d3a50d31c45cbfddd0272765p-1,
+    0x1.bdcdc6p0
+  },
+  { // Entry 113
+    0x1.34bde46fd84fca43ba3f4799acab10ffp-1,
+    0x1.d3de82p0
+  },
+  { // Entry 114
+    0x1.4c5618136a3221d84476b78353fabc80p-1,
+    0x1.e9ef3ep0
+  },
+  { // Entry 115
+    0x1.62e429efa395f35781c7670787e58c2bp-1,
+    0x1.fffffap0
+  },
+  { // Entry 116
+    -0x1.62e43115a8fb47c3a7c2e76a80cca9a5p-2,
+    0x1.6a09e6p-1
+  },
+  { // Entry 117
+    -0x1.24cfd09514bae9e21501d1a28c37d51ep-2,
+    0x1.80aa84p-1
+  },
+  { // Entry 118
+    -0x1.d4902a7f6a1d18da241dffb42a0818edp-3,
+    0x1.974b22p-1
+  },
+  { // Entry 119
+    -0x1.65d5607cc85baba26e2faf78865dc991p-3,
+    0x1.adebc0p-1
+  },
+  { // Entry 120
+    -0x1.f991d8f6e2f011943d5a6a60cd646002p-4,
+    0x1.c48c5ep-1
+  },
+  { // Entry 121
+    -0x1.31b9a995502d59241500cd1ce955f5c4p-4,
+    0x1.db2cfcp-1
+  },
+  { // Entry 122
+    -0x1.ccb7994bda818c26cc15fca660f364ecp-6,
+    0x1.f1cd9ap-1
+  },
+  { // Entry 123
+    0x1.0b9492bd99570e8a2a2f5a7f59644b42p-6,
+    0x1.04371cp0
+  },
+  { // Entry 124
+    0x1.e2705e9cc554d8b565433c8fad2db164p-5,
+    0x1.0f876cp0
+  },
+  { // Entry 125
+    0x1.986d321688b074a21eb26b41679ee309p-4,
+    0x1.1ad7bcp0
+  },
+  { // Entry 126
+    0x1.1c89919fb208ebda275d6fee75577a43p-3,
+    0x1.26280cp0
+  },
+  { // Entry 127
+    0x1.69d463db5d0d8cbc5da8bd2c1f5d2953p-3,
+    0x1.31785cp0
+  },
+  { // Entry 128
+    0x1.b44f87381611ab2806d6f00d213de2cfp-3,
+    0x1.3cc8acp0
+  },
+  { // Entry 129
+    0x1.fc2d80e5311b3f7e05f26b963044ea08p-3,
+    0x1.4818fcp0
+  },
+  { // Entry 130
+    0x1.20cdd9262c59a7726689f4fe5ffa58fep-2,
+    0x1.53694cp0
+  },
+  { // Entry 131
+    0x1.426182db20e23d0b473ae1c2d1975c3fp-2,
+    0x1.5eb99cp0
+  },
+  { // Entry 132
+    0x1.62e42ec99e429eeb7fcbe6f58eff3117p-2,
+    0x1.6a09e6p0
+  },
+  { // Entry 133
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    0x1.80p-1
+  },
+  { // Entry 134
+    -0x1.89fa484d355b5e186f5662b3da3e745bp-3,
+    0x1.a66666p-1
+  },
+  { // Entry 135
+    -0x1.af8e892d15de87e2e9e59dff5c0633bep-4,
+    0x1.ccccccp-1
+  },
+  { // Entry 136
+    -0x1.9ecebcb597ea1bb43d896f584759744ap-6,
+    0x1.f33332p-1
+  },
+  { // Entry 137
+    0x1.8fb04b8da65ceb85a2edb7d0ff0ad2d3p-5,
+    0x1.0cccccp0
+  },
+  { // Entry 138
+    0x1.e27076e2af2e5e9ea87ffe1fe9e155dbp-4,
+    0x1.20p0
+  },
+  { // Entry 139
+    0x1.756506739ebaf1cd58855d231e777a59p-3,
+    0x1.333334p0
+  },
+  { // Entry 140
+    0x1.f18dce2898f5ba919d825d9696c6c774p-3,
+    0x1.466668p0
+  },
+  { // Entry 141
+    0x1.334ea564424013b7739afbc9478741b5p-2,
+    0x1.59999cp0
+  },
+  { // Entry 142
+    0x1.6aac0d0fe3871ab60d70d41e954c2bd3p-2,
+    0x1.6cccd0p0
+  },
+  { // Entry 143
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.80p0
+  },
+  { // Entry 144
+    0.0,
+    0x1.p0
+  },
+  { // Entry 145
+    0x1.8663fd6538c872349ec1a85e05ec5fb5p-4,
+    0x1.19999ap0
+  },
+  { // Entry 146
+    0x1.756506739ebaf1cd58855d231e777a59p-3,
+    0x1.333334p0
+  },
+  { // Entry 147
+    0x1.0ca93b6f56afbacd07973b0a3c67fc47p-2,
+    0x1.4ccccep0
+  },
+  { // Entry 148
+    0x1.588c32237c6aefe96e1db27c46710d39p-2,
+    0x1.666668p0
+  },
+  { // Entry 149
+    0x1.9f3244214ed68647ddc799823e05a9b1p-2,
+    0x1.800002p0
+  },
+  { // Entry 150
+    0x1.e148a7a27268594dfd4dd6c301fece79p-2,
+    0x1.99999cp0
+  },
+  { // Entry 151
+    0x1.0fae84dc95e1a7d9897472d55a7563e8p-1,
+    0x1.b33336p0
+  },
+  { // Entry 152
+    0x1.2cf2633bc7fc9d9d9929319aa918822cp-1,
+    0x1.ccccd0p0
+  },
+  { // Entry 153
+    0x1.48a1165df274ab7963f8550dcbfb6aebp-1,
+    0x1.e6666ap0
+  },
+  { // Entry 154
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p1
+  },
+  { // Entry 155
+    0x1.1542457337d42e1c6b73c89d862ba171p6,
+    0x1.p100
+  },
+  { // Entry 156
+    0x1.15a3de7291226038f89b79079dad1c89p6,
+    0x1.19999ap100
+  },
+  { // Entry 157
+    0x1.15fcf7f671a38b9552200b4c17badd2fp6,
+    0x1.333334p100
+  },
+  { // Entry 158
+    0x1.164eeeaea72addd7387b5fd89068096ep6,
+    0x1.4ccccep100
+  },
+  { // Entry 159
+    0x1.169ad1a55b50990c54e1e6500272127fp6,
+    0x1.666668p100
+  },
+  { // Entry 160
+    0x1.16e177b7592304a2b35190370869a71bp6,
+    0x1.800002p100
+  },
+  { // Entry 161
+    0x1.17238e1ada469675b9711674492da040p6,
+    0x1.99999cp100
+  },
+  { // Entry 162
+    0x1.1761a27cf0fff16c1e86b18330e08c39p6,
+    0x1.b33336p100
+  },
+  { // Entry 163
+    0x1.179c2a39af642757a6a61b00bb7dd276p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 164
+    0x1.17d3879ff3b917735e3bb947a1c39847p6,
+    0x1.e6666ap100
+  },
+  { // Entry 165
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.p101
+  },
+  { // Entry 166
+    -0x1.0000080000555559555588888b333357p-20,
+    0x1.ffffe0p-1
+  },
+  { // Entry 167
+    -0x1.0000040000155555d5555888889ddddep-21,
+    0x1.fffff0p-1
+  },
+  { // Entry 168
+    0.0,
+    0x1.p0
+  },
+  { // Entry 169
+    0x1.fffff800002aaaa9aaaab11110e66667p-22,
+    0x1.000008p0
+  },
+  { // Entry 170
+    0x1.fffff00000aaaaa2aaab11110bbbbc04p-21,
+    0x1.000010p0
+  },
+  { // Entry 171
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 172
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 173
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 174
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 175
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 176
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 177
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 178
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 179
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 180
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 181
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 182
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 183
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 184
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 185
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 186
+    0x1.62e42feba39ef15793c611dab1909808p6,
+    0x1.fffffep127
+  },
+  { // Entry 187
+    -0x1.9d1d9fccf4770743f2061e1de931a650p6,
+    0x1.p-149
+  },
+  { // Entry 188
+    -0x1.62e436bdd09a876194940b96cb28fd7fp-2,
+    0x1.6a09e4p-1
+  },
+  { // Entry 189
+    -0x1.62e43115a8fb47c3a7c2e76a80cca9a5p-2,
+    0x1.6a09e6p-1
+  },
+  { // Entry 190
+    -0x1.62e42b6d81640825bf89d8b8d9d0ff58p-2,
+    0x1.6a09e8p-1
+  },
+  { // Entry 191
+    0x1.62e4292176a35f4d92fac2c944a2dd3dp-2,
+    0x1.6a09e4p0
+  },
+  { // Entry 192
+    0x1.62e42ec99e429eeb7fcbe6f58eff3117p-2,
+    0x1.6a09e6p0
+  },
+  { // Entry 193
+    0x1.62e43471c5d9de896804f5a735fadb65p-2,
+    0x1.6a09e8p0
+  },
+  { // Entry 194
+    -0x1.62e431efa39ff357947211db3290986fp-1,
+    0x1.fffffep-2
+  },
+  { // Entry 195
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p-1
+  },
+  { // Entry 196
+    -0x1.62e42befa3a2f3578e7211e2b2908b3cp-1,
+    0x1.000002p-1
+  },
+  { // Entry 197
+    -0x1.26962668a3120b11fac40bc7b22b5a8dp-2,
+    0x1.7ffffep-1
+  },
+  { // Entry 198
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    0x1.80p-1
+  },
+  { // Entry 199
+    -0x1.26961bbdf867606749c734ddd1c6310bp-2,
+    0x1.800002p-1
+  },
+  { // Entry 200
+    0x1.9f323976a42bdb9d2ccac2985da0802fp-2,
+    0x1.7ffffep0
+  },
+  { // Entry 201
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.80p0
+  },
+  { // Entry 202
+    0x1.9f3244214ed68647ddc799823e05a9b1p-2,
+    0x1.800002p0
+  },
+  { // Entry 203
+    0x1.54de6ee78989a9acfc875c1d45e16490p-9,
+    0x1.00aaa8p0
+  },
+  { // Entry 204
+    0x1.54e26c3eab6ea24115a4ecbc6c21c3dep-9,
+    0x1.00aaaap0
+  },
+  { // Entry 205
+    0x1.54e66995c55e3ad40cb2b01d77b8b63fp-9,
+    0x1.00aaacp0
+  },
+  { // Entry 206
+    0x1.62e42eefa39e7357937211da729097d5p0,
+    0x1.fffffep1
+  },
+  { // Entry 207
+    0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    0x1.p2
+  },
+  { // Entry 208
+    0x1.62e431efa39cf357967211d6b2909e6fp0,
+    0x1.000002p2
+  },
+  { // Entry 209
+    0x1.62e42defa39df357931cbc84dd3b424dp-1,
+    0x1.fffffep0
+  },
+  { // Entry 210
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p1
+  },
+  { // Entry 211
+    0x1.62e433efa39af357991cbc7d5d3b4f80p-1,
+    0x1.000002p1
+  },
+  { // Entry 212
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 213
+    0.0,
+    0x1.p0
+  },
+  { // Entry 214
+    0x1.fffffe000002aaaaa6aaaab111110666p-24,
+    0x1.000002p0
+  },
+  { // Entry 215
+    -0x1.62e431efa39ff357947211db3290986fp-1,
+    0x1.fffffep-2
+  },
+  { // Entry 216
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p-1
+  },
+  { // Entry 217
+    -0x1.62e42befa3a2f3578e7211e2b2908b3cp-1,
+    0x1.000002p-1
+  },
+  { // Entry 218
+    -0x1.62e430efa39f7357941cbc859d3b42e7p0,
+    0x1.fffffep-3
+  },
+  { // Entry 219
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    0x1.p-2
+  },
+  { // Entry 220
+    -0x1.62e42defa3a0f357911cbc895d3b3c4dp0,
+    0x1.000002p-2
+  },
+  { // Entry 221
+    -0x1.0a2b2473bab77681af00380ed0971ccbp1,
+    0x1.fffffep-4
+  },
+  { // Entry 222
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
+    0x1.p-3
+  },
+  { // Entry 223
+    -0x1.0a2b22f3bab83681ad803810b097197ep1,
+    0x1.000002p-3
+  },
+  { // Entry 224
+    -0x1.62e4306fa39f335793f211dad2909822p1,
+    0x1.fffffep-5
+  },
+  { // Entry 225
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
+    0x1.p-4
+  },
+  { // Entry 226
+    -0x1.62e42eefa39ff357927211dcb29094d5p1,
+    0x1.000002p-4
+  },
+  { // Entry 227
+    -0x1.bb9d3c6b8c86f02d78e3eba6d48a137ap1,
+    0x1.fffffep-6
+  },
+  { // Entry 228
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
+    0x1.p-5
+  },
+  { // Entry 229
+    -0x1.bb9d3aeb8c87b02d7763eba8b48a102dp1,
+    0x1.000002p-5
+  },
+  { // Entry 230
+    -0x1.0a2b2433bab75681aeeae2b96b41c769p2,
+    0x1.fffffep-7
+  },
+  { // Entry 231
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
+    0x1.p-6
+  },
+  { // Entry 232
+    -0x1.0a2b2373bab7b681ae2ae2ba5b41c5c2p2,
+    0x1.000002p-6
+  },
+  { // Entry 233
+    -0x1.3687aa31af2b34eca163cf9f6c3e8514p2,
+    0x1.fffffep-8
+  },
+  { // Entry 234
+    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
+    0x1.p-7
+  },
+  { // Entry 235
+    -0x1.3687a971af2b94eca0a3cfa05c3e836ep2,
+    0x1.000002p-7
+  },
+  { // Entry 236
+    -0x1.62e4302fa39f135793dcbc856d3b42c0p2,
+    0x1.fffffep-9
+  },
+  { // Entry 237
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
+    0x1.p-8
+  },
+  { // Entry 238
+    -0x1.62e42f6fa39f7357931cbc865d3b411ap2,
+    0x1.000002p-8
+  },
+  { // Entry 239
+    -0x1.8f40b62d9812f1c28655a96b6e38006cp2,
+    0x1.fffffep-10
+  },
+  { // Entry 240
+    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
+    0x1.p-9
+  },
+  { // Entry 241
+    -0x1.8f40b56d981351c28595a96c5e37fec6p2,
+    0x1.000002p-9
+  },
+  { // Entry 242
+    -0x1.bb9d3c2b8c86d02d78ce96516f34be18p2,
+    0x1.fffffep-11
+  },
+  { // Entry 243
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
+    0x1.p-10
+  },
+  { // Entry 244
+    -0x1.bb9d3b6b8c87302d780e96525f34bc71p2,
+    0x1.000002p-10
+  },
+  { // Entry 245
+    -0x1.20596712b4f135b7281cae81b9157b8dp3,
+    0x1.fffffep-14
+  },
+  { // Entry 246
+    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
+    0x1.p-13
+  },
+  { // Entry 247
+    -0x1.205966b2b4f165b727bcae8231157abap3,
+    0x1.000002p-13
+  },
+  { // Entry 248
+    -0x1.20596712b4f135b7281cae81b9157b8dp3,
+    0x1.fffffep-14
+  },
+  { // Entry 249
+    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
+    0x1.p-13
+  },
+  { // Entry 250
+    -0x1.205966b2b4f165b727bcae8231157abap3,
+    0x1.000002p-13
+  },
+  { // Entry 251
+    -0x1.0a2b2473bab77681af00380ed0971ccbp1,
+    0x1.fffffep-4
+  },
+  { // Entry 252
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
+    0x1.p-3
+  },
+  { // Entry 253
+    -0x1.0a2b22f3bab83681ad803810b097197ep1,
+    0x1.000002p-3
+  },
+  { // Entry 254
+    -0x1.1178f14710961bedaf9f799a53afc33dp-3,
+    0x1.bffffep-1
+  },
+  { // Entry 255
+    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
+    0x1.c0p-1
+  },
+  { // Entry 256
+    -0x1.1178defdec03d2c915604897971b7658p-3,
+    0x1.c00002p-1
+  },
+  { // Entry 257
+    -0x1.62e4306fa39f335793f211dad2909822p1,
+    0x1.fffffep-5
+  },
+  { // Entry 258
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
+    0x1.p-4
+  },
+  { // Entry 259
+    -0x1.62e42eefa39ff357927211dcb29094d5p1,
+    0x1.000002p-4
+  },
+  { // Entry 260
+    -0x1.08599c6af4ba93c693b13122f6824a8bp-4,
+    0x1.dffffep-1
+  },
+  { // Entry 261
+    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
+    0x1.e0p-1
+  },
+  { // Entry 262
+    -0x1.08597a48d29871a4649d0a66ccbd5edbp-4,
+    0x1.e00002p-1
+  },
+  { // Entry 263
+    -0x1.bb9d3c6b8c86f02d78e3eba6d48a137ap1,
+    0x1.fffffep-6
+  },
+  { // Entry 264
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
+    0x1.p-5
+  },
+  { // Entry 265
+    -0x1.bb9d3aeb8c87b02d7763eba8b48a102dp1,
+    0x1.000002p-5
+  },
+  { // Entry 266
+    -0x1.0415f9a6b665d7a7b9958d7d28f62a74p-5,
+    0x1.effffep-1
+  },
+  { // Entry 267
+    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
+    0x1.f0p-1
+  },
+  { // Entry 268
+    -0x1.0415b7963244cf65919a578b2daa29d5p-5,
+    0x1.f00002p-1
+  },
+  { // Entry 269
+    -0x1.0a2b2433bab75681aeeae2b96b41c769p2,
+    0x1.fffffep-7
+  },
+  { // Entry 270
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
+    0x1.p-6
+  },
+  { // Entry 271
+    -0x1.0a2b2373bab7b681ae2ae2ba5b41c5c2p2,
+    0x1.000002p-6
+  },
+  { // Entry 272
+    -0x1.0205a68d45e67ed01e10e322bd43a170p-6,
+    0x1.f7fffep-1
+  },
+  { // Entry 273
+    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
+    0x1.f8p-1
+  },
+  { // Entry 274
+    -0x1.02052485256476af6f4daabd139b5e57p-6,
+    0x1.f80002p-1
+  },
+  { // Entry 275
+    -0x1.3687aa31af2b34eca163cf9f6c3e8514p2,
+    0x1.fffffep-8
+  },
+  { // Entry 276
+    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
+    0x1.p-7
+  },
+  { // Entry 277
+    -0x1.3687a971af2b94eca0a3cfa05c3e836ep2,
+    0x1.000002p-7
+  },
+  { // Entry 278
+    -0x1.0101d85a923025b54cbaae499d5e40bfp-7,
+    0x1.fbfffep-1
+  },
+  { // Entry 279
+    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
+    0x1.fcp-1
+  },
+  { // Entry 280
+    -0x1.0100d6568a200574745b39f0aae26685p-7,
+    0x1.fc0002p-1
+  },
+  { // Entry 281
+    -0x1.62e4302fa39f135793dcbc856d3b42c0p2,
+    0x1.fffffep-9
+  },
+  { // Entry 282
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
+    0x1.p-8
+  },
+  { // Entry 283
+    -0x1.62e42f6fa39f7357931cbc865d3b411ap2,
+    0x1.000002p-8
+  },
+  { // Entry 284
+    -0x1.008156968a355a68f2be9b035772c9c3p-8,
+    0x1.fdfffep-1
+  },
+  { // Entry 285
+    -0x1.0080559588b357e598e33d8d9db37a29p-8,
+    0x1.fep-1
+  },
+  { // Entry 286
+    -0x1.007f549488335866440de7a1f2084736p-8,
+    0x1.fe0002p-1
+  },
+  { // Entry 287
+    -0x1.8f40b62d9812f1c28655a96b6e38006cp2,
+    0x1.fffffep-10
+  },
+  { // Entry 288
+    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
+    0x1.p-9
+  },
+  { // Entry 289
+    -0x1.8f40b56d981351c28595a96c5e37fec6p2,
+    0x1.000002p-9
+  },
+  { // Entry 290
+    -0x1.0042165dd9caff419b1eccdf720a36d2p-9,
+    0x1.fefffep-1
+  },
+  { // Entry 291
+    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
+    0x1.ffp-1
+  },
+  { // Entry 292
+    -0x1.003e145cd94abf2033bf71dc3028520cp-9,
+    0x1.ff0002p-1
+  },
+  { // Entry 293
+    -0x1.bb9d3c2b8c86d02d78ce96516f34be18p2,
+    0x1.fffffep-11
+  },
+  { // Entry 294
+    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
+    0x1.p-10
+  },
+  { // Entry 295
+    -0x1.bb9d3b6b8c87302d780e96525f34bc71p2,
+    0x1.000002p-10
+  },
+  { // Entry 296
+    -0x1.0024065697999797f377cb852750240bp-10,
+    0x1.ff7ffep-1
+  },
+  { // Entry 297
+    -0x1.00200556558893357cd7e1f486bd0705p-10,
+    0x1.ff80p-1
+  },
+  { // Entry 298
+    -0x1.001c045617798f93464c0067a7eaae4fp-10,
+    0x1.ff8002p-1
+  },
+  { // Entry 299
+    -0x1.20596712b4f135b7281cae81b9157b8dp3,
+    0x1.fffffep-14
+  },
+  { // Entry 300
+    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
+    0x1.p-13
+  },
+  { // Entry 301
+    -0x1.205966b2b4f165b727bcae8231157abap3,
+    0x1.000002p-13
+  },
+  { // Entry 302
+    -0x1.002401156dd698a14a193857b6b2e2bdp-13,
+    0x1.ffeffep-1
+  },
+  { // Entry 303
+    -0x1.0004001555d558889dde702b028c9996p-13,
+    0x1.fff0p-1
+  },
+  { // Entry 304
+    -0x1.ffc7fe2abbac310fe54784015d23a61dp-14,
+    0x1.fff002p-1
+  },
+  { // Entry 305
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 306
+    0x1.62e42feba39ef15793c611dab1909808p6,
+    0x1.fffffep127
+  },
+  { // Entry 307
+    0x1.62e42fe7a39eeb5793bcbc854d3b429ap6,
+    0x1.fffffcp127
+  },
+  { // Entry 308
+    0x1.250d0505fece83f5f3328cc322f65153p0,
+    0x1.921fb6p1
+  },
+  { // Entry 309
+    0x1.ce6bb438b3fc2928a53b64ac7c0d6a91p-2,
+    0x1.921fb6p0
+  },
+  { // Entry 310
+    0x1.fffffe000002aaaaa6aaaab111110666p-24,
+    0x1.000002p0
+  },
+  { // Entry 311
+    0.0,
+    0x1.p0
+  },
+  { // Entry 312
+    -0x1.000000800000555555955555888888b3p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 313
+    -0x1.eeb9574d26837b0d04a6d367277ce056p-3,
+    0x1.921fb6p-1
+  },
+  { // Entry 314
+    -0x1.5d589f27e5107f8a356d9ee8ad1baae4p6,
+    0x1.000002p-126
+  },
+  { // Entry 315
+    -0x1.5d589f2fe510778a3578499347c655a9p6,
+    0x1.p-126
+  },
+  { // Entry 316
+    -0x1.5d589f37e5107f8a3582f43e0271006dp6,
+    0x1.fffffcp-127
+  },
+  { // Entry 317
+    -0x1.5d589f3fe510978a35cd9ee99d1bae31p6,
+    0x1.fffff8p-127
+  },
+  { // Entry 318
+    -0x1.9a57d76d152fc95d42de8f4f8921da75p6,
+    0x1.p-148
+  },
+  { // Entry 319
+    -0x1.9d1d9fccf4770743f2061e1de931a650p6,
+    0x1.p-149
+  },
+  { // Entry 320
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 321
+    -HUGE_VALF,
+    -0.0f
+  },
+};
diff --git a/tests/math_data/modf_intel_data.h b/tests/math_data/modf_intel_data.h
new file mode 100644
index 0000000..9af7e1b
--- /dev/null
+++ b/tests/math_data/modf_intel_data.h
@@ -0,0 +1,1858 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_2_1_t<double, double, double> g_modf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0x1.fffffffffffff0p-2,
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0x1.p-1,
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.00000000000010p-1,
+    0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.fffffffffffff0p-1,
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0.0,
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p-52,
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.ffffffffffffc0p-2,
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p-1,
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.00000000000020p-1,
+    0x1.p0,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.ffffffffffffe0p-1,
+    0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0.0,
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p-51,
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.ffffffffffff80p-2,
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p-1,
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.00000000000040p-1,
+    0x1.p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.fffffffffff8p-1,
+    0x1.8cp6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0.0,
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.p-46,
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.fffffffffff0p-2,
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.p-1,
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.000000000008p-1,
+    0x1.90p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.ffffffffffc0p-1,
+    0x1.f380p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0.0,
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.p-43,
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.ffffffffff80p-2,
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.p-1,
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.000000000040p-1,
+    0x1.f4p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.c0p-1,
+    0x1.ffffffffffff80p49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0.0,
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p-2,
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.80p-1,
+    0x1.ffffffffffffc0p50,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0.0,
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p-1,
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p-1,
+    0x1.ffffffffffffe0p51,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0.0,
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0.0,
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0.0,
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0.0,
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0.0,
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0.0,
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0.0,
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0.0,
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0.0,
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.00000000000010p-1,
+    -0.0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0x1.p-1,
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0x1.fffffffffffff0p-2,
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p-52,
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0.0,
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.fffffffffffff0p-1,
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.00000000000020p-1,
+    -0x1.p0,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p-1,
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.ffffffffffffc0p-2,
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p-51,
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0.0,
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.ffffffffffffe0p-1,
+    -0x1.p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.00000000000040p-1,
+    -0x1.p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p-1,
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.ffffffffffff80p-2,
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.p-46,
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0.0,
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.fffffffffff8p-1,
+    -0x1.8cp6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.000000000008p-1,
+    -0x1.90p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.p-1,
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.fffffffffff0p-2,
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.p-43,
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0.0,
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.ffffffffffc0p-1,
+    -0x1.f380p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.000000000040p-1,
+    -0x1.f4p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.p-1,
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.ffffffffff80p-2,
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p-2,
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0.0,
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.c0p-1,
+    -0x1.ffffffffffff80p49,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p-1,
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0.0,
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.80p-1,
+    -0x1.ffffffffffffc0p50,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p-1,
+    -0x1.ffffffffffffe0p51,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0.0,
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0.0,
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0.0,
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0.0,
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.fffffcp-1,
+    0x1.fffffff8p29,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0.0,
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p-22,
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.ffffe8p-1,
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffdp30
+  },
+  { // Entry 93
+    0x1.fffff0p-1,
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 94
+    0x1.fffff8p-1,
+    0x1.fffffff4p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 95
+    0.0,
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 96
+    0x1.p-22,
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 97
+    0x1.p-21,
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 98
+    0x1.80p-21,
+    0x1.fffffff8p30,
+    0x1.fffffff800003p30
+  },
+  { // Entry 99
+    0x1.ffffd0p-2,
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffdp30
+  },
+  { // Entry 100
+    0x1.ffffe0p-2,
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 101
+    0x1.fffff0p-2,
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 102
+    0x1.p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 103
+    0x1.000008p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 104
+    0x1.000010p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 105
+    0x1.000018p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa00003p30
+  },
+  { // Entry 106
+    0x1.ffffe8p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbffffdp30
+  },
+  { // Entry 107
+    0x1.fffff0p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 108
+    0x1.fffff8p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 109
+    0.0,
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 110
+    0x1.p-22,
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 111
+    0x1.p-21,
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 112
+    0x1.80p-21,
+    0x1.fffffffcp30,
+    0x1.fffffffc00003p30
+  },
+  { // Entry 113
+    0x1.ffffd0p-2,
+    0x1.fffffffcp30,
+    0x1.fffffffdffffdp30
+  },
+  { // Entry 114
+    0x1.ffffe0p-2,
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 115
+    0x1.fffff0p-2,
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 116
+    0x1.p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe0p30
+  },
+  { // Entry 117
+    0x1.000008p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 118
+    0x1.000010p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 119
+    0x1.000018p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe00003p30
+  },
+  { // Entry 120
+    0x1.ffffe8p-1,
+    0x1.fffffffcp30,
+    0x1.ffffffffffffdp30
+  },
+  { // Entry 121
+    0x1.fffff0p-1,
+    0x1.fffffffcp30,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 122
+    0x1.fffff8p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 123
+    0.0,
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 124
+    0x1.p-21,
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 125
+    0x1.p-20,
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 126
+    0x1.80p-20,
+    0x1.p31,
+    0x1.0000000000003p31
+  },
+  { // Entry 127
+    0x1.ffffa0p-2,
+    0x1.p31,
+    0x1.00000000ffffdp31
+  },
+  { // Entry 128
+    0x1.ffffc0p-2,
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 129
+    0x1.ffffe0p-2,
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 130
+    0x1.p-1,
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 131
+    0x1.000010p-1,
+    0x1.p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 132
+    0x1.000020p-1,
+    0x1.p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 133
+    0x1.000030p-1,
+    0x1.p31,
+    0x1.0000000100003p31
+  },
+  { // Entry 134
+    0.0,
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 135
+    0.0,
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 136
+    0.0,
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 137
+    0.0,
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 138
+    0.0,
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 139
+    0.0,
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 140
+    0.0,
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 141
+    0.0,
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 142
+    0.0,
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 143
+    0.0,
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 144
+    -0x1.p-22,
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 145
+    -0.0,
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 146
+    -0x1.fffffcp-1,
+    -0x1.fffffff8p29,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 147
+    -0x1.80p-21,
+    -0x1.fffffff8p30,
+    -0x1.fffffff800003p30
+  },
+  { // Entry 148
+    -0x1.p-21,
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 149
+    -0x1.p-22,
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 150
+    -0.0,
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 151
+    -0x1.fffff8p-1,
+    -0x1.fffffff4p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 152
+    -0x1.fffff0p-1,
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 153
+    -0x1.ffffe8p-1,
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffdp30
+  },
+  { // Entry 154
+    -0x1.000018p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00003p30
+  },
+  { // Entry 155
+    -0x1.000010p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 156
+    -0x1.000008p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 157
+    -0x1.p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 158
+    -0x1.fffff0p-2,
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 159
+    -0x1.ffffe0p-2,
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 160
+    -0x1.ffffd0p-2,
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffdp30
+  },
+  { // Entry 161
+    -0x1.80p-21,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00003p30
+  },
+  { // Entry 162
+    -0x1.p-21,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 163
+    -0x1.p-22,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 164
+    -0.0,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 165
+    -0x1.fffff8p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 166
+    -0x1.fffff0p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 167
+    -0x1.ffffe8p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffdp30
+  },
+  { // Entry 168
+    -0x1.000018p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00003p30
+  },
+  { // Entry 169
+    -0x1.000010p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 170
+    -0x1.000008p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 171
+    -0x1.p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 172
+    -0x1.fffff0p-2,
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 173
+    -0x1.ffffe0p-2,
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 174
+    -0x1.ffffd0p-2,
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffdp30
+  },
+  { // Entry 175
+    -0x1.80p-20,
+    -0x1.p31,
+    -0x1.0000000000003p31
+  },
+  { // Entry 176
+    -0x1.p-20,
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 177
+    -0x1.p-21,
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 179
+    -0x1.fffff8p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 180
+    -0x1.fffff0p-1,
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 181
+    -0x1.ffffe8p-1,
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffdp30
+  },
+  { // Entry 182
+    -0x1.000030p-1,
+    -0x1.p31,
+    -0x1.0000000100003p31
+  },
+  { // Entry 183
+    -0x1.000020p-1,
+    -0x1.p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 184
+    -0x1.000010p-1,
+    -0x1.p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 185
+    -0x1.p-1,
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 186
+    -0x1.ffffe0p-2,
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 187
+    -0x1.ffffc0p-2,
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 188
+    -0x1.ffffa0p-2,
+    -0x1.p31,
+    -0x1.00000000ffffdp31
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 190
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 191
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 192
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 193
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 194
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 195
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 196
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 197
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 198
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 199
+    0.0,
+    0x1.ffffffffffffd0p61,
+    0x1.ffffffffffffdp61
+  },
+  { // Entry 200
+    0.0,
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 202
+    0.0,
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 203
+    0.0,
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 204
+    0.0,
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 205
+    0.0,
+    0x1.00000000000030p62,
+    0x1.0000000000003p62
+  },
+  { // Entry 206
+    0.0,
+    0x1.ffffffffffffd0p62,
+    0x1.ffffffffffffdp62
+  },
+  { // Entry 207
+    0.0,
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 209
+    0.0,
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 210
+    0.0,
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 211
+    0.0,
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 212
+    0.0,
+    0x1.00000000000030p63,
+    0x1.0000000000003p63
+  },
+  { // Entry 213
+    0.0,
+    0x1.ffffffffffffd0p63,
+    0x1.ffffffffffffdp63
+  },
+  { // Entry 214
+    0.0,
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 215
+    0.0,
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 216
+    0.0,
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 217
+    0.0,
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 218
+    0.0,
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 219
+    0.0,
+    0x1.00000000000030p64,
+    0x1.0000000000003p64
+  },
+  { // Entry 220
+    -0.0,
+    -0x1.00000000000030p62,
+    -0x1.0000000000003p62
+  },
+  { // Entry 221
+    -0.0,
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 222
+    -0.0,
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 223
+    -0.0,
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 224
+    -0.0,
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 225
+    -0.0,
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.ffffffffffffd0p61,
+    -0x1.ffffffffffffdp61
+  },
+  { // Entry 227
+    -0.0,
+    -0x1.00000000000030p63,
+    -0x1.0000000000003p63
+  },
+  { // Entry 228
+    -0.0,
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 230
+    -0.0,
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 231
+    -0.0,
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 233
+    -0.0,
+    -0x1.ffffffffffffd0p62,
+    -0x1.ffffffffffffdp62
+  },
+  { // Entry 234
+    -0.0,
+    -0x1.00000000000030p64,
+    -0x1.0000000000003p64
+  },
+  { // Entry 235
+    -0.0,
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 236
+    -0.0,
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 237
+    -0.0,
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 238
+    -0.0,
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 239
+    -0.0,
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.ffffffffffffd0p63,
+    -0x1.ffffffffffffdp63
+  },
+  { // Entry 241
+    0.0,
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 242
+    0.0,
+    0x1.40p62,
+    0x1.4p62
+  },
+  { // Entry 243
+    0.0,
+    0x1.80p62,
+    0x1.8p62
+  },
+  { // Entry 244
+    0.0,
+    0x1.c0p62,
+    0x1.cp62
+  },
+  { // Entry 245
+    0.0,
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 246
+    0.0,
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 247
+    0.0,
+    0x1.40p63,
+    0x1.4p63
+  },
+  { // Entry 248
+    0.0,
+    0x1.80p63,
+    0x1.8p63
+  },
+  { // Entry 249
+    0.0,
+    0x1.c0p63,
+    0x1.cp63
+  },
+  { // Entry 250
+    0.0,
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 251
+    -0.0,
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 252
+    -0.0,
+    -0x1.40p62,
+    -0x1.4p62
+  },
+  { // Entry 253
+    -0.0,
+    -0x1.80p62,
+    -0x1.8p62
+  },
+  { // Entry 254
+    -0.0,
+    -0x1.c0p62,
+    -0x1.cp62
+  },
+  { // Entry 255
+    -0.0,
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 256
+    -0.0,
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 257
+    -0.0,
+    -0x1.40p63,
+    -0x1.4p63
+  },
+  { // Entry 258
+    -0.0,
+    -0x1.80p63,
+    -0x1.8p63
+  },
+  { // Entry 259
+    -0.0,
+    -0x1.c0p63,
+    -0x1.cp63
+  },
+  { // Entry 260
+    -0.0,
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 261
+    0x1.fffff8p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 262
+    0.0,
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 263
+    0x1.p-22,
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 264
+    -0x1.p-21,
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 265
+    -0.0,
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 266
+    -0x1.fffff8p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 267
+    0x1.ffffffffffffc0p-1,
+    0x1.80p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 268
+    0.0,
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 269
+    0x1.p-50,
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 270
+    0x1.ffffffffffff80p-1,
+    0x1.c0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 271
+    0.0,
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 272
+    0x1.p-49,
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 273
+    0x1.ffffffffffffp-1,
+    0x1.e0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 274
+    0.0,
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 275
+    0x1.p-48,
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 276
+    0x1.fffffffffffep-1,
+    0x1.f0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 277
+    0.0,
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 278
+    0x1.p-47,
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 279
+    0x1.fffffffffffcp-1,
+    0x1.f8p5,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 280
+    0.0,
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 281
+    0x1.p-46,
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 282
+    0x1.fffffffffff8p-1,
+    0x1.fcp6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 283
+    0.0,
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 284
+    0x1.p-45,
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 285
+    0x1.fffffffffff0p-1,
+    0x1.fep7,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 286
+    0.0,
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 287
+    0x1.p-44,
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 288
+    0x1.ffffffffffe0p-1,
+    0x1.ffp8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 289
+    0.0,
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 290
+    0x1.p-43,
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 291
+    0x1.ffffffffffc0p-1,
+    0x1.ff80p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 292
+    0.0,
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 293
+    0x1.p-42,
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 294
+    0x1.ffffffffff80p-1,
+    0x1.ffc0p10,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 295
+    0.0,
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 296
+    0x1.p-41,
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 297
+    0x1.ffffffffffp-1,
+    0x1.ffe0p11,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 298
+    0.0,
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 299
+    0x1.p-40,
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 300
+    0x1.ffffffffffffp-2,
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 301
+    0x1.p-1,
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 302
+    0x1.00000000000080p-1,
+    0x1.p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 303
+    0x1.fffffffffffep-2,
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 304
+    0x1.p-1,
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 305
+    0x1.000000000001p-1,
+    0x1.p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 306
+    0x1.fffffffffffcp-2,
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 307
+    0x1.p-1,
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 308
+    0x1.000000000002p-1,
+    0x1.p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 309
+    0x1.fffffffffff8p-2,
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 310
+    0x1.p-1,
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 311
+    0x1.000000000004p-1,
+    0x1.p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 312
+    0x1.fffffffffff0p-2,
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 313
+    0x1.p-1,
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 314
+    0x1.000000000008p-1,
+    0x1.p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 315
+    0x1.ffffffffffe0p-2,
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 316
+    0x1.p-1,
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 317
+    0x1.000000000010p-1,
+    0x1.p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 318
+    0x1.ffffffffffc0p-2,
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 319
+    0x1.p-1,
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 320
+    0x1.000000000020p-1,
+    0x1.p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 321
+    0x1.ffffffffff80p-2,
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 322
+    0x1.p-1,
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 323
+    0x1.000000000040p-1,
+    0x1.p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 324
+    0x1.ffffffffffp-2,
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 325
+    0x1.p-1,
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 326
+    0x1.000000000080p-1,
+    0x1.p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 327
+    0x1.ffffffffffp-2,
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 328
+    0x1.p-1,
+    0x1.0040p10,
+    0x1.006p10
+  },
+  { // Entry 329
+    0x1.000000000080p-1,
+    0x1.0040p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 330
+    0x1.fffffffffep-2,
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 331
+    0x1.p-1,
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 332
+    0x1.0000000001p-1,
+    0x1.p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 333
+    0x1.fffffffffcp-2,
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 334
+    0x1.p-1,
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 335
+    0x1.0000000002p-1,
+    0x1.p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 336
+    0.0,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 337
+    -0.0,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 338
+    0.0,
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 339
+    -0.0,
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 340
+    0.0,
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 341
+    -0.0,
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 342
+    0x1.21fb54442d18p-3,
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 343
+    -0x1.21fb54442d18p-3,
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 344
+    0x1.243f6a8885a3p-1,
+    0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 345
+    -0x1.243f6a8885a3p-1,
+    -0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 346
+    0x1.p-52,
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 347
+    -0x1.p-52,
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 348
+    0.0,
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 349
+    -0.0,
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 350
+    0x1.fffffffffffff0p-1,
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 351
+    -0x1.fffffffffffff0p-1,
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 352
+    0x1.921fb54442d180p-1,
+    0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 353
+    -0x1.921fb54442d180p-1,
+    -0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 354
+    0x1.00000000000010p-1022,
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 355
+    -0x1.00000000000010p-1022,
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 356
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 357
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 358
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 359
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 360
+    0x1.ffffffffffffc0p-1023,
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 361
+    -0x1.ffffffffffffc0p-1023,
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 362
+    0x1.p-1073,
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 363
+    -0x1.p-1073,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 364
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 365
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 366
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 367
+    -0.0,
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/modff_intel_data.h b/tests/math_data/modff_intel_data.h
new file mode 100644
index 0000000..f28f5c9
--- /dev/null
+++ b/tests/math_data/modff_intel_data.h
@@ -0,0 +1,1858 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_2_1_t<float, float, float> g_modff_intel_data[] = {
+  { // Entry 0
+    -0x1.p-149,
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0x1.fffffep-2,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0x1.p-1,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.000002p-1,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.fffffep-1,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p-23,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.fffff8p-2,
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p-1,
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.000004p-1,
+    0x1.p0,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.fffffcp-1,
+    0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0.0,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p-22,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.fffff0p-2,
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p-1,
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.000008p-1,
+    0x1.p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.ffffp-1,
+    0x1.8cp6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0.0,
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.p-17,
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.fffep-2,
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.p-1,
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.0001p-1,
+    0x1.90p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.fff8p-1,
+    0x1.f380p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0.0,
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.p-14,
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.fff0p-2,
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.p-1,
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.0008p-1,
+    0x1.f4p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.c0p-1,
+    0x1.fffff0p20,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0.0,
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p-2,
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.80p-1,
+    0x1.fffff8p21,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0.0,
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p-1,
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p-1,
+    0x1.fffffcp22,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0.0,
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0.0,
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0.0,
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0.0,
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0.0,
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0.0,
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0.0,
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0.0,
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.000002p-1,
+    -0.0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0x1.p-1,
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0x1.fffffep-2,
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p-23,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.fffffep-1,
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.000004p-1,
+    -0x1.p0,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p-1,
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.fffff8p-2,
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p-22,
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0.0,
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.fffffcp-1,
+    -0x1.p0,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.000008p-1,
+    -0x1.p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p-1,
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.fffff0p-2,
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.p-17,
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0.0,
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.ffffp-1,
+    -0x1.8cp6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.0001p-1,
+    -0x1.90p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.p-1,
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.fffep-2,
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.p-14,
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0.0,
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.fff8p-1,
+    -0x1.f380p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.0008p-1,
+    -0x1.f4p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.p-1,
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.fff0p-2,
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p-2,
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0.0,
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.c0p-1,
+    -0x1.fffff0p20,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p-1,
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0.0,
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.80p-1,
+    -0x1.fffff8p21,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p-1,
+    -0x1.fffffcp22,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0.0,
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0.0,
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0.0,
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0.0,
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0.0,
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 93
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 94
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 95
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 96
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 97
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 98
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 99
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 100
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 101
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 102
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 103
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 104
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 105
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 106
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 107
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 113
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 114
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 115
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 116
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 117
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 118
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 119
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 120
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 121
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 122
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 123
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 125
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 126
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 128
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 129
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 130
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 132
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 133
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 134
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 135
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 136
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 137
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 138
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 139
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 140
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 141
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 142
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 143
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 144
+    -0.0,
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 145
+    -0.0,
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 146
+    -0.0,
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 147
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 148
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 149
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 150
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 151
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 152
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 153
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 155
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 161
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 162
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 163
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 164
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 165
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 166
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 167
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 168
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 169
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 170
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 171
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 173
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 174
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 175
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 176
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 177
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 179
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 180
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 182
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 183
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 184
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 185
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 186
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 187
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 188
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 190
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 191
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 192
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 193
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 194
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 195
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 196
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 197
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 198
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 199
+    0.0,
+    0x1.fffffap61,
+    0x1.fffffap61
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 202
+    0.0,
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 203
+    0.0,
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 204
+    0.0,
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 205
+    0.0,
+    0x1.000006p62,
+    0x1.000006p62
+  },
+  { // Entry 206
+    0.0,
+    0x1.fffffap62,
+    0x1.fffffap62
+  },
+  { // Entry 207
+    0.0,
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 209
+    0.0,
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 210
+    0.0,
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 211
+    0.0,
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 212
+    0.0,
+    0x1.000006p63,
+    0x1.000006p63
+  },
+  { // Entry 213
+    0.0,
+    0x1.fffffap63,
+    0x1.fffffap63
+  },
+  { // Entry 214
+    0.0,
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 215
+    0.0,
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 216
+    0.0,
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 217
+    0.0,
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 218
+    0.0,
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 219
+    0.0,
+    0x1.000006p64,
+    0x1.000006p64
+  },
+  { // Entry 220
+    -0.0,
+    -0x1.000006p62,
+    -0x1.000006p62
+  },
+  { // Entry 221
+    -0.0,
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 222
+    -0.0,
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 223
+    -0.0,
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 224
+    -0.0,
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 225
+    -0.0,
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.fffffap61,
+    -0x1.fffffap61
+  },
+  { // Entry 227
+    -0.0,
+    -0x1.000006p63,
+    -0x1.000006p63
+  },
+  { // Entry 228
+    -0.0,
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 230
+    -0.0,
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 231
+    -0.0,
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 233
+    -0.0,
+    -0x1.fffffap62,
+    -0x1.fffffap62
+  },
+  { // Entry 234
+    -0.0,
+    -0x1.000006p64,
+    -0x1.000006p64
+  },
+  { // Entry 235
+    -0.0,
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 236
+    -0.0,
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 237
+    -0.0,
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 238
+    -0.0,
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 239
+    -0.0,
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.fffffap63,
+    -0x1.fffffap63
+  },
+  { // Entry 241
+    0.0,
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 242
+    0.0,
+    0x1.40p62,
+    0x1.40p62
+  },
+  { // Entry 243
+    0.0,
+    0x1.80p62,
+    0x1.80p62
+  },
+  { // Entry 244
+    0.0,
+    0x1.c0p62,
+    0x1.c0p62
+  },
+  { // Entry 245
+    0.0,
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 246
+    0.0,
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 247
+    0.0,
+    0x1.40p63,
+    0x1.40p63
+  },
+  { // Entry 248
+    0.0,
+    0x1.80p63,
+    0x1.80p63
+  },
+  { // Entry 249
+    0.0,
+    0x1.c0p63,
+    0x1.c0p63
+  },
+  { // Entry 250
+    0.0,
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 251
+    -0.0,
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 252
+    -0.0,
+    -0x1.40p62,
+    -0x1.40p62
+  },
+  { // Entry 253
+    -0.0,
+    -0x1.80p62,
+    -0x1.80p62
+  },
+  { // Entry 254
+    -0.0,
+    -0x1.c0p62,
+    -0x1.c0p62
+  },
+  { // Entry 255
+    -0.0,
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 256
+    -0.0,
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 257
+    -0.0,
+    -0x1.40p63,
+    -0x1.40p63
+  },
+  { // Entry 258
+    -0.0,
+    -0x1.80p63,
+    -0x1.80p63
+  },
+  { // Entry 259
+    -0.0,
+    -0x1.c0p63,
+    -0x1.c0p63
+  },
+  { // Entry 260
+    -0.0,
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 261
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 262
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 263
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 264
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 265
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 266
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 267
+    0x1.fffff8p-1,
+    0x1.80p1,
+    0x1.fffffep1
+  },
+  { // Entry 268
+    0.0,
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 269
+    0x1.p-21,
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 270
+    0x1.fffff0p-1,
+    0x1.c0p2,
+    0x1.fffffep2
+  },
+  { // Entry 271
+    0.0,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 272
+    0x1.p-20,
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 273
+    0x1.ffffe0p-1,
+    0x1.e0p3,
+    0x1.fffffep3
+  },
+  { // Entry 274
+    0.0,
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 275
+    0x1.p-19,
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 276
+    0x1.ffffc0p-1,
+    0x1.f0p4,
+    0x1.fffffep4
+  },
+  { // Entry 277
+    0.0,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 278
+    0x1.p-18,
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 279
+    0x1.ffff80p-1,
+    0x1.f8p5,
+    0x1.fffffep5
+  },
+  { // Entry 280
+    0.0,
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 281
+    0x1.p-17,
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 282
+    0x1.ffffp-1,
+    0x1.fcp6,
+    0x1.fffffep6
+  },
+  { // Entry 283
+    0.0,
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 284
+    0x1.p-16,
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 285
+    0x1.fffep-1,
+    0x1.fep7,
+    0x1.fffffep7
+  },
+  { // Entry 286
+    0.0,
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 287
+    0x1.p-15,
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 288
+    0x1.fffcp-1,
+    0x1.ffp8,
+    0x1.fffffep8
+  },
+  { // Entry 289
+    0.0,
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 290
+    0x1.p-14,
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 291
+    0x1.fff8p-1,
+    0x1.ff80p9,
+    0x1.fffffep9
+  },
+  { // Entry 292
+    0.0,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 293
+    0x1.p-13,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 294
+    0x1.fff0p-1,
+    0x1.ffc0p10,
+    0x1.fffffep10
+  },
+  { // Entry 295
+    0.0,
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 296
+    0x1.p-12,
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 297
+    0x1.ffe0p-1,
+    0x1.ffe0p11,
+    0x1.fffffep11
+  },
+  { // Entry 298
+    0.0,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 299
+    0x1.p-11,
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 300
+    0x1.ffffe0p-2,
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 301
+    0x1.p-1,
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 302
+    0x1.000010p-1,
+    0x1.p2,
+    0x1.200002p2
+  },
+  { // Entry 303
+    0x1.ffffc0p-2,
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 304
+    0x1.p-1,
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 305
+    0x1.000020p-1,
+    0x1.p3,
+    0x1.100002p3
+  },
+  { // Entry 306
+    0x1.ffff80p-2,
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 307
+    0x1.p-1,
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 308
+    0x1.000040p-1,
+    0x1.p4,
+    0x1.080002p4
+  },
+  { // Entry 309
+    0x1.ffffp-2,
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 310
+    0x1.p-1,
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 311
+    0x1.000080p-1,
+    0x1.p5,
+    0x1.040002p5
+  },
+  { // Entry 312
+    0x1.fffep-2,
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 313
+    0x1.p-1,
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 314
+    0x1.0001p-1,
+    0x1.p6,
+    0x1.020002p6
+  },
+  { // Entry 315
+    0x1.fffcp-2,
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 316
+    0x1.p-1,
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 317
+    0x1.0002p-1,
+    0x1.p7,
+    0x1.010002p7
+  },
+  { // Entry 318
+    0x1.fff8p-2,
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 319
+    0x1.p-1,
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 320
+    0x1.0004p-1,
+    0x1.p8,
+    0x1.008002p8
+  },
+  { // Entry 321
+    0x1.fff0p-2,
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 322
+    0x1.p-1,
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 323
+    0x1.0008p-1,
+    0x1.p9,
+    0x1.004002p9
+  },
+  { // Entry 324
+    0x1.ffe0p-2,
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 325
+    0x1.p-1,
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 326
+    0x1.0010p-1,
+    0x1.p10,
+    0x1.002002p10
+  },
+  { // Entry 327
+    0x1.ffe0p-2,
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 328
+    0x1.p-1,
+    0x1.0040p10,
+    0x1.0060p10
+  },
+  { // Entry 329
+    0x1.0010p-1,
+    0x1.0040p10,
+    0x1.006002p10
+  },
+  { // Entry 330
+    0x1.ffc0p-2,
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 331
+    0x1.p-1,
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 332
+    0x1.0020p-1,
+    0x1.p11,
+    0x1.001002p11
+  },
+  { // Entry 333
+    0x1.ff80p-2,
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 334
+    0x1.p-1,
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 335
+    0x1.0040p-1,
+    0x1.p12,
+    0x1.000802p12
+  },
+  { // Entry 336
+    0.0,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 337
+    -0.0,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 338
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 339
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 340
+    0.0,
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 341
+    -0.0,
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 342
+    0x1.21fb60p-3,
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 343
+    -0x1.21fb60p-3,
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 344
+    0x1.243f6cp-1,
+    0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 345
+    -0x1.243f6cp-1,
+    -0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 346
+    0x1.p-23,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 347
+    -0x1.p-23,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 348
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 349
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 350
+    0x1.fffffep-1,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 351
+    -0x1.fffffep-1,
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 352
+    0x1.921fb6p-1,
+    0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 353
+    -0x1.921fb6p-1,
+    -0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 354
+    0x1.000002p-126,
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 355
+    -0x1.000002p-126,
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 356
+    0x1.p-126,
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 357
+    -0x1.p-126,
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 358
+    0x1.fffffcp-127,
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 359
+    -0x1.fffffcp-127,
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 360
+    0x1.fffff8p-127,
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 361
+    -0x1.fffff8p-127,
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 362
+    0x1.p-148,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 363
+    -0x1.p-148,
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 364
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 365
+    -0x1.p-149,
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 366
+    0.0,
+    0.0,
+    0.0f
+  },
+  { // Entry 367
+    -0.0,
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/nearbyint_intel_data.h b/tests/math_data/nearbyint_intel_data.h
new file mode 100644
index 0000000..d51cbe4
--- /dev/null
+++ b/tests/math_data/nearbyint_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_nearbyint_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/nearbyintf_intel_data.h b/tests/math_data/nearbyintf_intel_data.h
new file mode 100644
index 0000000..a917b77
--- /dev/null
+++ b/tests/math_data/nearbyintf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_nearbyintf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/nextafter_intel_data.h b/tests/math_data/nextafter_intel_data.h
new file mode 100644
index 0000000..191dbf6
--- /dev/null
+++ b/tests/math_data/nextafter_intel_data.h
@@ -0,0 +1,2088 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_nextafter_intel_data[] = {
+  { // Entry 0
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 4
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 5
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 7
+    0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 8
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 9
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 12
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 14
+    0x1.00000000000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 15
+    0x1.p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 17
+    0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 18
+    0x1.ffffffffffffe0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 19
+    0x1.ffffffffffffe0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 20
+    0x1.ffffffffffffe0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 21
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 22
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 23
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 24
+    0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 25
+    0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 26
+    0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 27
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 29
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 30
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 31
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 32
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 33
+    -0x1.ffffffffffffe0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 34
+    -0x1.ffffffffffffe0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 35
+    -0x1.ffffffffffffe0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 36
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 37
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 38
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 39
+    -0x1.00000000000010p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 40
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 41
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 42
+    -0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 43
+    -0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 44
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 46
+    0x1.p1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 47
+    0x1.p1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 48
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 49
+    0x1.p1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 50
+    0x1.00000000000010p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 51
+    0x1.p1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 52
+    0x1.p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 53
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 54
+    0x1.ffffffffffffe0p0,
+    0x1.fffffffffffffp0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 55
+    0x1.ffffffffffffe0p0,
+    0x1.fffffffffffffp0,
+    -0x1.0p1
+  },
+  { // Entry 56
+    0x1.ffffffffffffe0p0,
+    0x1.fffffffffffffp0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 57
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 58
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    -0x1.0p1
+  },
+  { // Entry 59
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 60
+    0x1.p1,
+    0x1.0000000000001p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 61
+    0x1.p1,
+    0x1.0000000000001p1,
+    -0x1.0p1
+  },
+  { // Entry 62
+    0x1.p1,
+    0x1.0000000000001p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 63
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 64
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 65
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 66
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 67
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 68
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 69
+    -0x1.ffffffffffffe0p0,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 70
+    -0x1.ffffffffffffe0p0,
+    -0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 71
+    -0x1.ffffffffffffe0p0,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 72
+    -0x1.00000000000010p1,
+    -0x1.0000000000001p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 73
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    -0x1.0p1
+  },
+  { // Entry 74
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 75
+    -0x1.00000000000010p1,
+    -0x1.0p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 76
+    -0x1.p1,
+    -0x1.0p1,
+    -0x1.0p1
+  },
+  { // Entry 77
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 78
+    -0x1.p1,
+    -0x1.fffffffffffffp0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 79
+    -0x1.p1,
+    -0x1.fffffffffffffp0,
+    -0x1.0p1
+  },
+  { // Entry 80
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 82
+    0x1.p10,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 84
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 86
+    0x1.00000000000010p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 88
+    0x1.p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 89
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 90
+    0x1.ffffffffffffe0p9,
+    0x1.fffffffffffffp9,
+    -0x1.0000000000001p10
+  },
+  { // Entry 91
+    0x1.ffffffffffffe0p9,
+    0x1.fffffffffffffp9,
+    -0x1.0p10
+  },
+  { // Entry 92
+    0x1.ffffffffffffe0p9,
+    0x1.fffffffffffffp9,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 93
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 94
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    -0x1.0p10
+  },
+  { // Entry 95
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 96
+    0x1.p10,
+    0x1.0000000000001p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 97
+    0x1.p10,
+    0x1.0000000000001p10,
+    -0x1.0p10
+  },
+  { // Entry 98
+    0x1.p10,
+    0x1.0000000000001p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 99
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 100
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 101
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 102
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 103
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 104
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 105
+    -0x1.ffffffffffffe0p9,
+    -0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 106
+    -0x1.ffffffffffffe0p9,
+    -0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 107
+    -0x1.ffffffffffffe0p9,
+    -0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 108
+    -0x1.00000000000010p10,
+    -0x1.0000000000001p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 109
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    -0x1.0p10
+  },
+  { // Entry 110
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 111
+    -0x1.00000000000010p10,
+    -0x1.0p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 112
+    -0x1.p10,
+    -0x1.0p10,
+    -0x1.0p10
+  },
+  { // Entry 113
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 114
+    -0x1.p10,
+    -0x1.fffffffffffffp9,
+    -0x1.0000000000001p10
+  },
+  { // Entry 115
+    -0x1.p10,
+    -0x1.fffffffffffffp9,
+    -0x1.0p10
+  },
+  { // Entry 116
+    -0x1.fffffffffffff0p9,
+    -0x1.fffffffffffffp9,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 117
+    0x1.fffffffffffff0p99,
+    0x1.fffffffffffffp99,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 118
+    0x1.p100,
+    0x1.fffffffffffffp99,
+    0x1.0p100
+  },
+  { // Entry 119
+    0x1.p100,
+    0x1.fffffffffffffp99,
+    0x1.0000000000001p100
+  },
+  { // Entry 120
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 121
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 122
+    0x1.00000000000010p100,
+    0x1.0p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 123
+    0x1.p100,
+    0x1.0000000000001p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 124
+    0x1.p100,
+    0x1.0000000000001p100,
+    0x1.0p100
+  },
+  { // Entry 125
+    0x1.00000000000010p100,
+    0x1.0000000000001p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 126
+    0x1.ffffffffffffe0p99,
+    0x1.fffffffffffffp99,
+    -0x1.0000000000001p100
+  },
+  { // Entry 127
+    0x1.ffffffffffffe0p99,
+    0x1.fffffffffffffp99,
+    -0x1.0p100
+  },
+  { // Entry 128
+    0x1.ffffffffffffe0p99,
+    0x1.fffffffffffffp99,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 129
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 130
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    -0x1.0p100
+  },
+  { // Entry 131
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 132
+    0x1.p100,
+    0x1.0000000000001p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 133
+    0x1.p100,
+    0x1.0000000000001p100,
+    -0x1.0p100
+  },
+  { // Entry 134
+    0x1.p100,
+    0x1.0000000000001p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 135
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 136
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    0x1.0p100
+  },
+  { // Entry 137
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 138
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 139
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 140
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 141
+    -0x1.ffffffffffffe0p99,
+    -0x1.fffffffffffffp99,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 142
+    -0x1.ffffffffffffe0p99,
+    -0x1.fffffffffffffp99,
+    0x1.0p100
+  },
+  { // Entry 143
+    -0x1.ffffffffffffe0p99,
+    -0x1.fffffffffffffp99,
+    0x1.0000000000001p100
+  },
+  { // Entry 144
+    -0x1.00000000000010p100,
+    -0x1.0000000000001p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 145
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    -0x1.0p100
+  },
+  { // Entry 146
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 147
+    -0x1.00000000000010p100,
+    -0x1.0p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 148
+    -0x1.p100,
+    -0x1.0p100,
+    -0x1.0p100
+  },
+  { // Entry 149
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 150
+    -0x1.p100,
+    -0x1.fffffffffffffp99,
+    -0x1.0000000000001p100
+  },
+  { // Entry 151
+    -0x1.p100,
+    -0x1.fffffffffffffp99,
+    -0x1.0p100
+  },
+  { // Entry 152
+    -0x1.fffffffffffff0p99,
+    -0x1.fffffffffffffp99,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 153
+    0x1.fffffffffffff0p999,
+    0x1.fffffffffffffp999,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 154
+    0x1.p1000,
+    0x1.fffffffffffffp999,
+    0x1.0p1000
+  },
+  { // Entry 155
+    0x1.p1000,
+    0x1.fffffffffffffp999,
+    0x1.0000000000001p1000
+  },
+  { // Entry 156
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 157
+    0x1.p1000,
+    0x1.0p1000,
+    0x1.0p1000
+  },
+  { // Entry 158
+    0x1.00000000000010p1000,
+    0x1.0p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 159
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 160
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    0x1.0p1000
+  },
+  { // Entry 161
+    0x1.00000000000010p1000,
+    0x1.0000000000001p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 162
+    0x1.ffffffffffffe0p999,
+    0x1.fffffffffffffp999,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 163
+    0x1.ffffffffffffe0p999,
+    0x1.fffffffffffffp999,
+    -0x1.0p1000
+  },
+  { // Entry 164
+    0x1.ffffffffffffe0p999,
+    0x1.fffffffffffffp999,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 165
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 166
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    -0x1.0p1000
+  },
+  { // Entry 167
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 168
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 169
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    -0x1.0p1000
+  },
+  { // Entry 170
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 171
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 172
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    0x1.0p1000
+  },
+  { // Entry 173
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 174
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 175
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    0x1.0p1000
+  },
+  { // Entry 176
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 177
+    -0x1.ffffffffffffe0p999,
+    -0x1.fffffffffffffp999,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 178
+    -0x1.ffffffffffffe0p999,
+    -0x1.fffffffffffffp999,
+    0x1.0p1000
+  },
+  { // Entry 179
+    -0x1.ffffffffffffe0p999,
+    -0x1.fffffffffffffp999,
+    0x1.0000000000001p1000
+  },
+  { // Entry 180
+    -0x1.00000000000010p1000,
+    -0x1.0000000000001p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 181
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    -0x1.0p1000
+  },
+  { // Entry 182
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 183
+    -0x1.00000000000010p1000,
+    -0x1.0p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 184
+    -0x1.p1000,
+    -0x1.0p1000,
+    -0x1.0p1000
+  },
+  { // Entry 185
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 186
+    -0x1.p1000,
+    -0x1.fffffffffffffp999,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 187
+    -0x1.p1000,
+    -0x1.fffffffffffffp999,
+    -0x1.0p1000
+  },
+  { // Entry 188
+    -0x1.fffffffffffff0p999,
+    -0x1.fffffffffffffp999,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 189
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 190
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 194
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 195
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 196
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 197
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 200
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 201
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 202
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 203
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 205
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 206
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 207
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 208
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 209
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 210
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 211
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 212
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 213
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 214
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 215
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 216
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 217
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 220
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 223
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.0p-1074
+  },
+  { // Entry 226
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0.0
+  },
+  { // Entry 227
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 229
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 230
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 233
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 234
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 235
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 236
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 237
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.0p-1074
+  },
+  { // Entry 238
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    -0.0
+  },
+  { // Entry 239
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.0p-1074
+  },
+  { // Entry 240
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 241
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0.0
+  },
+  { // Entry 242
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.0p-1074
+  },
+  { // Entry 243
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 244
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 245
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 246
+    0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 247
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 248
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 249
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 250
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 251
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 252
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 253
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 254
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 255
+    -0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 256
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 257
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 258
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 259
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 260
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 261
+    0x1.00000fffffffe0p1,
+    0x1.00000fffffffep1,
+    0x1.00000fffffffep1
+  },
+  { // Entry 262
+    0x1.00000ffffffff0p1,
+    0x1.00000fffffffep1,
+    0x1.00000ffffffffp1
+  },
+  { // Entry 263
+    0x1.00000ffffffff0p1,
+    0x1.00000fffffffep1,
+    0x1.00001p1
+  },
+  { // Entry 264
+    0x1.00000fffffffe0p1,
+    0x1.00000ffffffffp1,
+    0x1.00000fffffffep1
+  },
+  { // Entry 265
+    0x1.00000ffffffff0p1,
+    0x1.00000ffffffffp1,
+    0x1.00000ffffffffp1
+  },
+  { // Entry 266
+    0x1.000010p1,
+    0x1.00000ffffffffp1,
+    0x1.00001p1
+  },
+  { // Entry 267
+    0x1.00000ffffffff0p1,
+    0x1.00001p1,
+    0x1.00000fffffffep1
+  },
+  { // Entry 268
+    0x1.00000ffffffff0p1,
+    0x1.00001p1,
+    0x1.00000ffffffffp1
+  },
+  { // Entry 269
+    0x1.000010p1,
+    0x1.00001p1,
+    0x1.00001p1
+  },
+  { // Entry 270
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 271
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 272
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 273
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 274
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 275
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 276
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 277
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 278
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 279
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 280
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 281
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 282
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 283
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 284
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 285
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 286
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 287
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 289
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 290
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 291
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 292
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 293
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 294
+    0x1.00000000000010p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 295
+    0x1.00000000000010p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 296
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 297
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 298
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 299
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 300
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 301
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 302
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 303
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 304
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 305
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 306
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 307
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 308
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 309
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 310
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 311
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 312
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 313
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 315
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 316
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 317
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 318
+    0x1.p-1073,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 319
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 320
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 321
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 322
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 323
+    0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 324
+    0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 325
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 326
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 327
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 328
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 329
+    0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 330
+    0x1.p-1074,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 331
+    0x1.p-1074,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 332
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 333
+    0x1.p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 334
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 335
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 336
+    -0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 337
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 338
+    -0x1.p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 339
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 340
+    -0x1.p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 341
+    -0x1.p-1074,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 342
+    0x1.p-1074,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 343
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 344
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 345
+    0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 346
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 347
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 348
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 349
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 350
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 351
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 352
+    -0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 353
+    -0x1.p-1074,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 354
+    -0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 355
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 356
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 357
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 358
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 359
+    -0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 360
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 361
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 362
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 363
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 364
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 365
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 366
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 367
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 368
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 369
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 370
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 371
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 372
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 373
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 374
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 375
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 376
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 377
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 378
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 379
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 380
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 381
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 382
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 383
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 384
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 385
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 386
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 387
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 388
+    -0x1.00000000000010p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 389
+    -0x1.00000000000010p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 390
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 391
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 392
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 393
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 394
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 395
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 396
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 397
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 398
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 399
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 400
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 401
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 402
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 403
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 404
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 405
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 406
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 407
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 408
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 409
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 410
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 411
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 412
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 413
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  }
+};
diff --git a/tests/math_data/nextafterf_intel_data.h b/tests/math_data/nextafterf_intel_data.h
new file mode 100644
index 0000000..f47bce2
--- /dev/null
+++ b/tests/math_data/nextafterf_intel_data.h
@@ -0,0 +1,1863 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_nextafterf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 3
+    -0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 4
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 5
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 6
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 7
+    0.0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 8
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 9
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 12
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 14
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 15
+    0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 17
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 18
+    0x1.fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 19
+    0x1.fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 20
+    0x1.fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 21
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 22
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 23
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 24
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 25
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 26
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 27
+    -0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 29
+    -0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 30
+    -0x1.fffffep-1,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 31
+    -0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 32
+    -0x1.fffffep-1,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 33
+    -0x1.fffffcp-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 34
+    -0x1.fffffcp-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 35
+    -0x1.fffffcp-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 36
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 37
+    -0x1.p0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 38
+    -0x1.p0,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 39
+    -0x1.000002p0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 40
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 41
+    -0x1.fffffep-1,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 42
+    -0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 43
+    -0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 44
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 45
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 46
+    0x1.p1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 47
+    0x1.p1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 48
+    0x1.fffffep0,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 49
+    0x1.p1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 50
+    0x1.000002p1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 51
+    0x1.p1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 52
+    0x1.p1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 53
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 54
+    0x1.fffffcp0,
+    0x1.fffffep0,
+    -0x1.000002p1
+  },
+  { // Entry 55
+    0x1.fffffcp0,
+    0x1.fffffep0,
+    -0x1.p1
+  },
+  { // Entry 56
+    0x1.fffffcp0,
+    0x1.fffffep0,
+    -0x1.fffffep0
+  },
+  { // Entry 57
+    0x1.fffffep0,
+    0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 58
+    0x1.fffffep0,
+    0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 59
+    0x1.fffffep0,
+    0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 60
+    0x1.p1,
+    0x1.000002p1,
+    -0x1.000002p1
+  },
+  { // Entry 61
+    0x1.p1,
+    0x1.000002p1,
+    -0x1.p1
+  },
+  { // Entry 62
+    0x1.p1,
+    0x1.000002p1,
+    -0x1.fffffep0
+  },
+  { // Entry 63
+    -0x1.p1,
+    -0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 64
+    -0x1.p1,
+    -0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 65
+    -0x1.p1,
+    -0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 66
+    -0x1.fffffep0,
+    -0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 67
+    -0x1.fffffep0,
+    -0x1.p1,
+    0x1.p1
+  },
+  { // Entry 68
+    -0x1.fffffep0,
+    -0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 69
+    -0x1.fffffcp0,
+    -0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 70
+    -0x1.fffffcp0,
+    -0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 71
+    -0x1.fffffcp0,
+    -0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 72
+    -0x1.000002p1,
+    -0x1.000002p1,
+    -0x1.000002p1
+  },
+  { // Entry 73
+    -0x1.p1,
+    -0x1.000002p1,
+    -0x1.p1
+  },
+  { // Entry 74
+    -0x1.p1,
+    -0x1.000002p1,
+    -0x1.fffffep0
+  },
+  { // Entry 75
+    -0x1.000002p1,
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 76
+    -0x1.p1,
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 77
+    -0x1.fffffep0,
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 78
+    -0x1.p1,
+    -0x1.fffffep0,
+    -0x1.000002p1
+  },
+  { // Entry 79
+    -0x1.p1,
+    -0x1.fffffep0,
+    -0x1.p1
+  },
+  { // Entry 80
+    -0x1.fffffep0,
+    -0x1.fffffep0,
+    -0x1.fffffep0
+  },
+  { // Entry 81
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 82
+    0x1.p10,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 84
+    0x1.fffffep9,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 86
+    0x1.000002p10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 88
+    0x1.p10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 89
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 90
+    0x1.fffffcp9,
+    0x1.fffffep9,
+    -0x1.000002p10
+  },
+  { // Entry 91
+    0x1.fffffcp9,
+    0x1.fffffep9,
+    -0x1.p10
+  },
+  { // Entry 92
+    0x1.fffffcp9,
+    0x1.fffffep9,
+    -0x1.fffffep9
+  },
+  { // Entry 93
+    0x1.fffffep9,
+    0x1.p10,
+    -0x1.000002p10
+  },
+  { // Entry 94
+    0x1.fffffep9,
+    0x1.p10,
+    -0x1.p10
+  },
+  { // Entry 95
+    0x1.fffffep9,
+    0x1.p10,
+    -0x1.fffffep9
+  },
+  { // Entry 96
+    0x1.p10,
+    0x1.000002p10,
+    -0x1.000002p10
+  },
+  { // Entry 97
+    0x1.p10,
+    0x1.000002p10,
+    -0x1.p10
+  },
+  { // Entry 98
+    0x1.p10,
+    0x1.000002p10,
+    -0x1.fffffep9
+  },
+  { // Entry 99
+    -0x1.p10,
+    -0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 100
+    -0x1.p10,
+    -0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 101
+    -0x1.p10,
+    -0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 102
+    -0x1.fffffep9,
+    -0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 103
+    -0x1.fffffep9,
+    -0x1.p10,
+    0x1.p10
+  },
+  { // Entry 104
+    -0x1.fffffep9,
+    -0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 105
+    -0x1.fffffcp9,
+    -0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 106
+    -0x1.fffffcp9,
+    -0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 107
+    -0x1.fffffcp9,
+    -0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 108
+    -0x1.000002p10,
+    -0x1.000002p10,
+    -0x1.000002p10
+  },
+  { // Entry 109
+    -0x1.p10,
+    -0x1.000002p10,
+    -0x1.p10
+  },
+  { // Entry 110
+    -0x1.p10,
+    -0x1.000002p10,
+    -0x1.fffffep9
+  },
+  { // Entry 111
+    -0x1.000002p10,
+    -0x1.p10,
+    -0x1.000002p10
+  },
+  { // Entry 112
+    -0x1.p10,
+    -0x1.p10,
+    -0x1.p10
+  },
+  { // Entry 113
+    -0x1.fffffep9,
+    -0x1.p10,
+    -0x1.fffffep9
+  },
+  { // Entry 114
+    -0x1.p10,
+    -0x1.fffffep9,
+    -0x1.000002p10
+  },
+  { // Entry 115
+    -0x1.p10,
+    -0x1.fffffep9,
+    -0x1.p10
+  },
+  { // Entry 116
+    -0x1.fffffep9,
+    -0x1.fffffep9,
+    -0x1.fffffep9
+  },
+  { // Entry 117
+    0x1.fffffep99,
+    0x1.fffffep99,
+    0x1.fffffep99
+  },
+  { // Entry 118
+    0x1.p100,
+    0x1.fffffep99,
+    0x1.p100
+  },
+  { // Entry 119
+    0x1.p100,
+    0x1.fffffep99,
+    0x1.000002p100
+  },
+  { // Entry 120
+    0x1.fffffep99,
+    0x1.p100,
+    0x1.fffffep99
+  },
+  { // Entry 121
+    0x1.p100,
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 122
+    0x1.000002p100,
+    0x1.p100,
+    0x1.000002p100
+  },
+  { // Entry 123
+    0x1.p100,
+    0x1.000002p100,
+    0x1.fffffep99
+  },
+  { // Entry 124
+    0x1.p100,
+    0x1.000002p100,
+    0x1.p100
+  },
+  { // Entry 125
+    0x1.000002p100,
+    0x1.000002p100,
+    0x1.000002p100
+  },
+  { // Entry 126
+    0x1.fffffcp99,
+    0x1.fffffep99,
+    -0x1.000002p100
+  },
+  { // Entry 127
+    0x1.fffffcp99,
+    0x1.fffffep99,
+    -0x1.p100
+  },
+  { // Entry 128
+    0x1.fffffcp99,
+    0x1.fffffep99,
+    -0x1.fffffep99
+  },
+  { // Entry 129
+    0x1.fffffep99,
+    0x1.p100,
+    -0x1.000002p100
+  },
+  { // Entry 130
+    0x1.fffffep99,
+    0x1.p100,
+    -0x1.p100
+  },
+  { // Entry 131
+    0x1.fffffep99,
+    0x1.p100,
+    -0x1.fffffep99
+  },
+  { // Entry 132
+    0x1.p100,
+    0x1.000002p100,
+    -0x1.000002p100
+  },
+  { // Entry 133
+    0x1.p100,
+    0x1.000002p100,
+    -0x1.p100
+  },
+  { // Entry 134
+    0x1.p100,
+    0x1.000002p100,
+    -0x1.fffffep99
+  },
+  { // Entry 135
+    -0x1.p100,
+    -0x1.000002p100,
+    0x1.fffffep99
+  },
+  { // Entry 136
+    -0x1.p100,
+    -0x1.000002p100,
+    0x1.p100
+  },
+  { // Entry 137
+    -0x1.p100,
+    -0x1.000002p100,
+    0x1.000002p100
+  },
+  { // Entry 138
+    -0x1.fffffep99,
+    -0x1.p100,
+    0x1.fffffep99
+  },
+  { // Entry 139
+    -0x1.fffffep99,
+    -0x1.p100,
+    0x1.p100
+  },
+  { // Entry 140
+    -0x1.fffffep99,
+    -0x1.p100,
+    0x1.000002p100
+  },
+  { // Entry 141
+    -0x1.fffffcp99,
+    -0x1.fffffep99,
+    0x1.fffffep99
+  },
+  { // Entry 142
+    -0x1.fffffcp99,
+    -0x1.fffffep99,
+    0x1.p100
+  },
+  { // Entry 143
+    -0x1.fffffcp99,
+    -0x1.fffffep99,
+    0x1.000002p100
+  },
+  { // Entry 144
+    -0x1.000002p100,
+    -0x1.000002p100,
+    -0x1.000002p100
+  },
+  { // Entry 145
+    -0x1.p100,
+    -0x1.000002p100,
+    -0x1.p100
+  },
+  { // Entry 146
+    -0x1.p100,
+    -0x1.000002p100,
+    -0x1.fffffep99
+  },
+  { // Entry 147
+    -0x1.000002p100,
+    -0x1.p100,
+    -0x1.000002p100
+  },
+  { // Entry 148
+    -0x1.p100,
+    -0x1.p100,
+    -0x1.p100
+  },
+  { // Entry 149
+    -0x1.fffffep99,
+    -0x1.p100,
+    -0x1.fffffep99
+  },
+  { // Entry 150
+    -0x1.p100,
+    -0x1.fffffep99,
+    -0x1.000002p100
+  },
+  { // Entry 151
+    -0x1.p100,
+    -0x1.fffffep99,
+    -0x1.p100
+  },
+  { // Entry 152
+    -0x1.fffffep99,
+    -0x1.fffffep99,
+    -0x1.fffffep99
+  },
+  { // Entry 153
+    0x1.fffffcp127,
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 154
+    0x1.fffffep127,
+    0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 155
+    0x1.fffffep127,
+    0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 156
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.fffffcp127
+  },
+  { // Entry 157
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 158
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 159
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.fffffcp127
+  },
+  { // Entry 160
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 161
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 162
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 163
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.fffffcp127
+  },
+  { // Entry 164
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.fffffap127
+  },
+  { // Entry 165
+    -0x1.fffffep127,
+    -0x1.fffffcp127,
+    -0x1.fffffep127
+  },
+  { // Entry 166
+    -0x1.fffffcp127,
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 167
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    -0x1.fffffap127
+  },
+  { // Entry 168
+    -0x1.fffffcp127,
+    -0x1.fffffap127,
+    -0x1.fffffep127
+  },
+  { // Entry 169
+    -0x1.fffffcp127,
+    -0x1.fffffap127,
+    -0x1.fffffcp127
+  },
+  { // Entry 170
+    -0x1.fffffap127,
+    -0x1.fffffap127,
+    -0x1.fffffap127
+  },
+  { // Entry 171
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.fffffep127
+  },
+  { // Entry 172
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 173
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.fffffap127
+  },
+  { // Entry 174
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 175
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffcp127
+  },
+  { // Entry 176
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffap127
+  },
+  { // Entry 177
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 178
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffcp127
+  },
+  { // Entry 179
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffap127
+  },
+  { // Entry 180
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffcp127
+  },
+  { // Entry 181
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 182
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 183
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 184
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 185
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 186
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.fffffcp127
+  },
+  { // Entry 187
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.fffffep127
+  },
+  { // Entry 188
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.fffffep127
+  },
+  { // Entry 189
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.p-149
+  },
+  { // Entry 190
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    0.0
+  },
+  { // Entry 191
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    0x1.p-149
+  },
+  { // Entry 192
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 193
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 194
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 195
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 196
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 197
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 198
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 199
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 200
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 201
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    -0x1.p-149
+  },
+  { // Entry 202
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0.0
+  },
+  { // Entry 203
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.p-149
+  },
+  { // Entry 204
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    -0x1.p-149
+  },
+  { // Entry 205
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0.0
+  },
+  { // Entry 206
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.p-149
+  },
+  { // Entry 207
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffcp127
+  },
+  { // Entry 208
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 209
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 210
+    0x1.p-149,
+    0.0,
+    0x1.fffffcp127
+  },
+  { // Entry 211
+    0x1.p-149,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 212
+    0x1.p-149,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 213
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffcp127
+  },
+  { // Entry 214
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 215
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 216
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 217
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffcp127
+  },
+  { // Entry 218
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffap127
+  },
+  { // Entry 219
+    -0x1.p-149,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 220
+    -0x1.p-149,
+    0.0,
+    -0x1.fffffcp127
+  },
+  { // Entry 221
+    -0x1.p-149,
+    0.0,
+    -0x1.fffffap127
+  },
+  { // Entry 222
+    0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    0.0,
+    0x1.p-149,
+    -0x1.fffffcp127
+  },
+  { // Entry 224
+    0.0,
+    0x1.p-149,
+    -0x1.fffffap127
+  },
+  { // Entry 225
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 226
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 227
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 228
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 229
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 230
+    0x1.fffffep127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 231
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 232
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 233
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 234
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 235
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 236
+    0x1.fffffep127,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 237
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 238
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 239
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 240
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 241
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 242
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 243
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 244
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 245
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 246
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 247
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 248
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 249
+    0x1.000002p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 250
+    0x1.000002p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 251
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 252
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 253
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 254
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 255
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 256
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 257
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 258
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 259
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 260
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 261
+    0x1.p-126,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 262
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 263
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 264
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 265
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 266
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 267
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 268
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 269
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 270
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 271
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 272
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 273
+    0x1.p-148,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 274
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 275
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 276
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 277
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 278
+    0.0,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 279
+    0.0,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 280
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 281
+    0.0,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 282
+    0.0,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 283
+    0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 284
+    0.0,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 285
+    0x1.p-149,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 286
+    0x1.p-149,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    0x1.p-149,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 288
+    0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 289
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 290
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 291
+    -0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 292
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 293
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 294
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 295
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 296
+    -0x1.p-149,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 297
+    0x1.p-149,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 298
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 299
+    0x1.p-149,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 300
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 301
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 302
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 303
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 304
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 305
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 306
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 307
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 308
+    -0x1.p-149,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 310
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 314
+    -0.0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 316
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 317
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 318
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 319
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 320
+    -0x1.p-148,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 321
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 322
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 323
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 324
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 325
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 326
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 327
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 328
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 329
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 330
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 331
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 332
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 333
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 334
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 335
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 336
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 337
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 338
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 339
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 340
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 341
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 342
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 343
+    -0x1.000002p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 344
+    -0x1.000002p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 345
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 346
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 347
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 348
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 349
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 350
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 351
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 352
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 353
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 354
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 355
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 356
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 357
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 358
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 359
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 360
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 361
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 362
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 363
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 364
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 365
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 366
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 367
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 368
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  }
+};
diff --git a/tests/math_data/pow_intel_data.h b/tests/math_data/pow_intel_data.h
new file mode 100644
index 0000000..ac9f5af
--- /dev/null
+++ b/tests/math_data/pow_intel_data.h
@@ -0,0 +1,3278 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_pow_intel_data[] = {
+  { // Entry 0
+    0x1.p0,
+    -0x1.0p-10, 0.0
+  },
+  { // Entry 1
+    0x1.p0,
+    -0x1.0p-20, 0.0
+  },
+  { // Entry 2
+    -HUGE_VAL,
+    -HUGE_VAL, 0x1.0000000000001p52
+  },
+  { // Entry 3
+    -0x1.ffffffffffffe0000000000001ffffffp20,
+    -0x1.0000000000001p-21, -0x1.0p0
+  },
+  { // Entry 4
+    0x1.p0,
+    -0x1.0000000000001p-41, 0.0
+  },
+  { // Entry 5
+    0x1.000000000000a000000000002dp-410,
+    -0x1.0000000000001p-41, 0x1.4p3
+  },
+  { // Entry 6
+    0x1.9241b707f6dadff955fd89193b67d331p-76,
+    -0x1.0000000000009p0, -0x1.7364d9364d93ep54
+  },
+  { // Entry 7
+    0x1.ffffe00000fffffabaaabeffffc3b111p-1,
+    -0x1.0000000000010p0, -0x1.0p28
+  },
+  { // Entry 8
+    -0x1.fffffeffac00403b0c6d424acd900953p964,
+    -0x1.00000000220p-1, -0x1.e28p9
+  },
+  { // Entry 9
+    0x1.ffe88f898fad6805ef5425ca3572f1e8p705,
+    -0x1.0000044p-1, -0x1.610p9
+  },
+  { // Entry 10
+    -0x1.fff0007ffc001fff0007ffc001fff0p40,
+    -0x1.00080p-41, -0x1.0p0
+  },
+  { // Entry 11
+    0x1.ff601b7c9059582e9c5cd4bde021f462p409,
+    -0x1.00080p-41, -0x1.4p3
+  },
+  { // Entry 12
+    -0x1.002802801400500080p200,
+    -0x1.00080p40, 0x1.4p2
+  },
+  { // Entry 13
+    0x1.ffa00a7f14c337fcecffc107244f96dfp245,
+    -0x1.0008000000f14p-41, -0x1.8p2
+  },
+  { // Entry 14
+    0x1.ff8011fd3be577fec85ffc5d60b0334ep-321,
+    -0x1.000800000e484p40, -0x1.0p3
+  },
+  { // Entry 15
+    0x1.6b3c46415430c004e9fd0b35f8ec6fd5p-1,
+    -0x1.046e8bfffffc2p0, -0x1.4p4
+  },
+  { // Entry 16
+    0.0,
+    -0x1.518p-1065, 0x1.0p1023
+  },
+  { // Entry 17
+    0x1.20000060000008p-81,
+    -0x1.8000004p-41, 0x1.0p1
+  },
+  { // Entry 18
+    0x1.c3d6a2157b623407e8c821289ebac2b6p-1,
+    -0x1.fffffbfffffffp-1, 0x1.0p20
+  },
+  { // Entry 19
+    -0x1.00000060000030000011000006300002p0,
+    -0x1.ffffffbffffffp-1, -0x1.8p1
+  },
+  { // Entry 20
+    -0x1.000000e00000a8000062000033a00018p35,
+    -0x1.ffffffbffffffp-6, -0x1.cp2
+  },
+  { // Entry 21
+    -0x1.000000e00000a8000062000033a00018p280,
+    -0x1.ffffffbffffffp-41, -0x1.cp2
+  },
+  { // Entry 22
+    -0x1.000000e00000a8000062000033a00018p-287,
+    -0x1.ffffffbffffffp40, -0x1.cp2
+  },
+  { // Entry 23
+    -0x1.fffffe40000038000030fffff49ffffdp286,
+    -0x1.ffffffbffffffp40, 0x1.cp2
+  },
+  { // Entry 24
+    0x1.ffffff80000008p-21,
+    -0x1.ffffffcp-11, 0x1.0p1
+  },
+  { // Entry 25
+    -0x1.000000000100080000010010004001p40,
+    -0x1.fffffffffdfffp-41, -0x1.0p0
+  },
+  { // Entry 26
+    -0x1.00000000000c98000000009e9a40p40,
+    -0x1.ffffffffffe6dp-41, -0x1.0p0
+  },
+  { // Entry 27
+    -0x1.fffffffdffffe00100000fffaaaaaaaap-1,
+    -0x1.ffffffffffffep-1, 0x1.00001p20
+  },
+  { // Entry 28
+    -0x1.0000000000000800000000000040p0,
+    -0x1.fffffffffffffp-1, -0x1.0p0
+  },
+  { // Entry 29
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023, 0x1.0000000000001p52
+  },
+  { // Entry 30
+    0x1.fda6a1be3e9d47fc84293281e77aa21ap-1,
+    0x1.0p-2, 0x1.b2cb2cb2cb2d0p-9
+  },
+  { // Entry 31
+    0.0,
+    0x1.0p-512, 0x1.0ccp1
+  },
+  { // Entry 32
+    0x1.f9b3a3820980938687e8bf7ff06bc42cp-914,
+    0x1.0p-1035, 0x1.c3a83a83a83a5p-1
+  },
+  { // Entry 33
+    0.0,
+    0x1.0p-1074, 0x1.0p1023
+  },
+  { // Entry 34
+    0.0,
+    0x1.0p-1074, 0x1.0000000000001p0
+  },
+  { // Entry 35
+    0x1.51cb453b954f5305fd8d61e650e8d0d5p-967,
+    0x1.0p-1074, 0x1.cccccccccccccp-1
+  },
+  { // Entry 36
+    0x1.fffffffd3a37a022a4bdf9482171d56fp1023,
+    0x1.0p1, 0x1.ffffffffff0p9
+  },
+  { // Entry 37
+    0x1.00000000000007ffffffffffffe0p-5,
+    0x1.0000000000001p-10, 0x1.0p-1
+  },
+  { // Entry 38
+    0x1.ae89f995ad5887ff46dd2362be6a8f23p-204,
+    0x1.0000000000001p-271, 0x1.7fffffffffffdp-1
+  },
+  { // Entry 39
+    0x1.2611186bae6a380002e6202c31b04d13p-38,
+    0x1.0000000000001p-462, 0x1.4f2094f2094f0p-4
+  },
+  { // Entry 40
+    0x1.6a09e667f3ecd2adb67223f9564b3422p-392,
+    0x1.0000000000001p-522, 0x1.7fffffffffffdp-1
+  },
+  { // Entry 41
+    0x1.9fdf8bcce543547d611ef13904022b8bp-493,
+    0x1.0000000000001p-547, 0x1.cccccccccccccp-1
+  },
+  { // Entry 42
+    0x1.91b501c2db5c8ffe81cc3effffe282e8p-290,
+    0x1.0000000000001p-643, 0x1.ccccccccccccap-2
+  },
+  { // Entry 43
+    0x1.a830fd0547202479c70c80b72a325d2fp-408,
+    0x1.0000000000001p-731, 0x1.1d41d41d41d44p-1
+  },
+  { // Entry 44
+    0x1.a9335df38e6e64cbdaa57750a0cfd5eep-291,
+    0x1.0000000000001p-733, 0x1.95810624dd2f7p-2
+  },
+  { // Entry 45
+    0x1.6a09e667f3d192a27b73577484a86dcdp-761,
+    0x1.0000000000001p-845, 0x1.cccccccccccccp-1
+  },
+  { // Entry 46
+    0x1.bdb8cdadbe60a56dd61c4e04350cfa9ap-569,
+    0x1.0000000000001p-947, 0x1.3333333333331p-1
+  },
+  { // Entry 47
+    0x1.6a09e66d72c9c801840532577e605e07p904,
+    0x1.0000000000001p-1005, -0x1.cccccccccfa81p-1
+  },
+  { // Entry 48
+    0x1.fffffffffffaea6e0622a45b3589d771p1023,
+    0x1.0000000000001p1, 0x1.ffffffffffffdp9
+  },
+  { // Entry 49
+    0x1.e6102ba465044814b28a0a49216ef667p-349,
+    0x1.0000000000001p663, -0x1.0cccccccccccfp-1
+  },
+  { // Entry 50
+    0x1.ffffffffffd75b6d85de8fb3a7e2e826p-703,
+    0x1.0000000000001p936, -0x1.8000000000001p-1
+  },
+  { // Entry 51
+    0x1.ffffffffffffe0000000000001ffffffp-1024,
+    0x1.0000000000001p1023, -0x1.0p0
+  },
+  { // Entry 52
+    0x1.fffffffffffaea6e0622a4573589d771p1023,
+    0x1.0000000000002p2, 0x1.ffffffffffffdp8
+  },
+  { // Entry 53
+    0x1.000000000000080000000000029fffffp0,
+    0x1.0000000000004p0, 0x1.0000000000007p-3
+  },
+  { // Entry 54
+    0x1.00000000000007ffffffffff3920p0,
+    0x1.0000000000004p0, 0x1.ffffffffffce8p-4
+  },
+  { // Entry 55
+    0x1.fffffffffffaea6e0622a44f3589d771p1023,
+    0x1.0000000000004p4, 0x1.ffffffffffffdp7
+  },
+  { // Entry 56
+    0x1.fb9540d99258a80f86b71925aaf4421ep80,
+    0x1.0000000000007p1023, 0x1.4444444444430p-4
+  },
+  { // Entry 57
+    0x1.df905ef8e2507fd852712ed6cea98963p833,
+    0x1.0000000000011p1, 0x1.a0f3ea0697a0bp9
+  },
+  { // Entry 58
+    0x1.00000000000097ffffffffffd2e0p3,
+    0x1.0000000000013p6, 0x1.0p-1
+  },
+  { // Entry 59
+    0x1.000000000000d7ffffffffff77e0p0,
+    0x1.0000000000021p0, 0x1.a2e8ba2e8ba2ep-2
+  },
+  { // Entry 60
+    0x1.9476504b9baf343e3f75a2bd2e4caddbp738,
+    0x1.0000000000080p0, 0x1.0p54
+  },
+  { // Entry 61
+    0x1.fffff4e95e1f3fdcdd5e3d928f3a47f5p1023,
+    0x1.00000000000ffp1, 0x1.fffffffc0p9
+  },
+  { // Entry 62
+    0x1.ffffffff8e4de8083ac63f95bcb525fcp1023,
+    0x1.00000000000ffp2, 0x1.ffffffffffcp8
+  },
+  { // Entry 63
+    0x1.9476504b433552adbf253ad5a9e61e68p738,
+    0x1.00000000004p0, 0x1.0p51
+  },
+  { // Entry 64
+    0x1.6247eb03578637ff2cb93c93fe2f2473p-129,
+    0x1.00000000007p1, -0x1.011p7
+  },
+  { // Entry 65
+    0x1.87cea2e506d2ea9b21823d7557663fbap427,
+    0x1.00000000020p1023, 0x1.ac083126e978cp-2
+  },
+  { // Entry 66
+    0x1.ffffff2b0338080b257df31bb02ff70ap767,
+    0x1.000000000ffffp-1, -0x1.7fffffffd5ce2p9
+  },
+  { // Entry 67
+    0x1.ffd931035b394087164501473df23095p1023,
+    0x1.000000001p1, 0x1.fffff1fffffffp9
+  },
+  { // Entry 68
+    0x1.912b6dd6652df7fa0fbaffbc7b32d62ap953,
+    0x1.000000001b1efp-1, -0x1.dcd2f3ea06995p9
+  },
+  { // Entry 69
+    0x1.fffffff800000020c0003f7b7ffe8216p-1,
+    0x1.000000040p0, -0x1.ffffffffcffffp-1
+  },
+  { // Entry 70
+    0x1.ffffffc0000027fffff70000039ffffep-1024,
+    0x1.0000001ffffffp1023, -0x1.0p0
+  },
+  { // Entry 71
+    0x1.705df34f84e31387148153c7cf783a53p-1,
+    0x1.0000004p1, -0x1.e66666666666bp-2
+  },
+  { // Entry 72
+    0x1.1a16744c2ec0d8042410bf3e3a9014acp1,
+    0x1.0000004p2, 0x1.23d70a3d70a3bp-1
+  },
+  { // Entry 73
+    0x1.fff8001002b417ef588e21c5092e20c7p1023,
+    0x1.0000010p-1, -0x1.ffffffffffff9p9
+  },
+  { // Entry 74
+    0x1.a12f806c39105800d5ac38f6cb88d374p-2,
+    0x1.000001cp3, -0x1.ba2e8ba2e8ba2p-2
+  },
+  { // Entry 75
+    0x1.d72f7f354d86d0206ad7c9be9b478c7cp-885,
+    0x1.0000044p-1, 0x1.ba0f61c9107c9p9
+  },
+  { // Entry 76
+    0x1.915d1955b15fc08191e000bc8a9c8262p738,
+    0x1.00020p0, 0x1.0000040p24
+  },
+  { // Entry 77
+    0x1.ffc0043cbc5db7fed905ea267724cd86p47,
+    0x1.000200000c0e4p-3, -0x1.fffffffff3fffp3
+  },
+  { // Entry 78
+    0x1.03861c0f25f0b7fdd7db988fc50e8ac5p896,
+    0x1.00070p7, 0x1.00000000880p7
+  },
+  { // Entry 79
+    0x1.735f4cae6fd5e7ec9ec93923f339e951p-242,
+    0x1.0007fdep0, -0x1.4f1b77c278dc0p20
+  },
+  { // Entry 80
+    0x1.b6bdcdafd5582823b4d361cb7bf02f0bp0,
+    0x1.0007ffffff18cp-3, -0x1.094f2094f2094p-2
+  },
+  { // Entry 81
+    0x1.ee9de3815589f8020429c850502a73cep0,
+    0x1.00080p1, 0x1.e666666666666p-1
+  },
+  { // Entry 82
+    0x1.fc4e957ad3cff80df14d5383bd09a83ap1023,
+    0x1.001febebccd42p0, 0x1.63d8aa986a9eap20
+  },
+  { // Entry 83
+    0x1.fbddf46d6b62882b4c4e659bf0212df4p1023,
+    0x1.001fef1cc4193p0, 0x1.63b500c83689dp20
+  },
+  { // Entry 84
+    0x1.fba7f9318c5dc81b1e178865147202f3p1023,
+    0x1.001ff069d2a6bp0, 0x1.63a676c8493e8p20
+  },
+  { // Entry 85
+    0x1.f61661b7000d32d1f698e0fa2f889d35p69,
+    0x1.00804025213dep-7, -0x1.4p3
+  },
+  { // Entry 86
+    0x1.e109bdcca01fb7ffbbe4f50c82d0ec62p15,
+    0x1.010p-1, -0x1.ffffffff9ffffp3
+  },
+  { // Entry 87
+    0x1.1e49c51473ff37dc1ad27264312c37b5p-1011,
+    0x1.021eeaa6d270dp1, -0x1.f37971758e257p9
+  },
+  { // Entry 88
+    0x1.eb41321e136b37fffbb99027ffc8514bp-21,
+    0x1.02f178bc5e2c1p3, -0x1.a99999999999ap2
+  },
+  { // Entry 89
+    0x1.080ffffff79cb800d4fa4351d8e63171p-2,
+    0x1.040p-1, 0x1.00000000060p1
+  },
+  { // Entry 90
+    0x1.cf2b19acfd538820cd62b9762fbd07d8p-1018,
+    0x1.0493cda7be452p1, -0x1.efe4b242071abp9
+  },
+  { // Entry 91
+    0x1.6692c05b09baba2ea48d785ad4a4575dp135,
+    0x1.05ebf8248a734p99, 0x1.5e3b32a2a9fb0p0
+  },
+  { // Entry 92
+    0x1.810f2f53980577f6663abfa1f774291bp70,
+    0x1.0aaaaaaaaaaabp7, 0x1.4p3
+  },
+  { // Entry 93
+    0x1.fffee335368ea0008aa6b3b006354625p-1,
+    0x1.0e4f938c0e0bbp-482, 0x1.b4838aa70d025p-26
+  },
+  { // Entry 94
+    0x1.cfc470cc939227fa970b58b91572f724p-40,
+    0x1.13bd11bcfaa50p-5, 0x1.0p3
+  },
+  { // Entry 95
+    0x1.ec33ea55afd33ad219aa2aec083397dfp-1,
+    0x1.1501f44659e54p0, -0x1.0p-1
+  },
+  { // Entry 96
+    0x1.f648a0ead82f6001daf0d46abd018b77p-1,
+    0x1.1555555555555p-1, 0x1.0000000000007p-5
+  },
+  { // Entry 97
+    0x1.fe7eb68734b5e825e94d6de454cde18ep6,
+    0x1.1745d1745da71p-1, -0x1.0000000000007p3
+  },
+  { // Entry 98
+    0x1.a5a00c77c65bf5b0592a61407b2bc79fp-39,
+    0x1.1973b102ffddbp-6, 0x1.a1d84f6a3b934p2
+  },
+  { // Entry 99
+    0x1.e7e26745f50fe800d14145ff80133761p-2,
+    0x1.19eedeb102d84p2, -0x1.0p-1
+  },
+  { // Entry 100
+    0x1.a73f9acbf4125a89020110a29c39bbd2p103,
+    0x1.24765a0cdd454p7, 0x1.cd81edfd6d5b8p3
+  },
+  { // Entry 101
+    0x1.445ae390f4b5369c1426f9fe8b8a1751p615,
+    0x1.2492492492492p-5, -0x1.ffffffffffff8p6
+  },
+  { // Entry 102
+    0x1.e4e045205527f33f0c9768dcb7f13fabp-616,
+    0x1.2492492492492p-5, 0x1.ffc7fffffffffp6
+  },
+  { // Entry 103
+    0x1.2dd17dc7293dc8001e1986a14875be95p122,
+    0x1.3150a12f25c8dp-41, -0x1.8p1
+  },
+  { // Entry 104
+    0x1.52c58cdbac4cb7feb761e24bbde99b85p-534,
+    0x1.3333333333333p-2, 0x1.333333333ce97p8
+  },
+  { // Entry 105
+    0x1.bc7f056ec71ff0000104808c9990ae9fp-2,
+    0x1.33333346cf8bap-2, 0x1.62e42fefa39efp-1
+  },
+  { // Entry 106
+    0x1.a2c9dc7bb2e724ae746c7a0a076b129bp-291,
+    0x1.38abf82ee6986p-1, 0x1.980p8
+  },
+  { // Entry 107
+    0x1.b4f60e5795b5e8088c1865ab9e0e2694p0,
+    0x1.3ec984cb36701p0, 0x1.38018879b2ba8p1
+  },
+  { // Entry 108
+    0x1.8fcf301c2b46532fffb6a06cc43dec91p-667,
+    0x1.4p-1070, 0x1.3ef368eb04327p-1
+  },
+  { // Entry 109
+    0x1.00003f65cce8080000ffef6e02bfe509p0,
+    0x1.4p4, 0x1.529a1574c0c72p-20
+  },
+  { // Entry 110
+    0x1.90000000000028000000000001p4,
+    0x1.4000000000001p2, 0x1.0p1
+  },
+  { // Entry 111
+    0x1.43015cf74d6e07ff3666305ddffb5f4ep1,
+    0x1.43e743ba79c41p-1, -0x1.02c30b80eb514p1
+  },
+  { // Entry 112
+    0x1.a36e1c3c700b7a416fad641bfc031adbp-10,
+    0x1.47ae147ae147bp-5, 0x1.000001cp1
+  },
+  { // Entry 113
+    0x1.e5eccf1b3a05dcf7adca8d47f937dac7p-985,
+    0x1.4e91b0e91b0f1p-1, 0x1.90c9714fbcd9bp10
+  },
+  { // Entry 114
+    0x1.95335bfb76c6c7fe38526cde1c16edbdp-3,
+    0x1.5152b7c373368p-22, 0x1.bb38288a0a6p-4
+  },
+  { // Entry 115
+    0x1.ffffffffffffb01e21a404429e88cfd6p-1,
+    0x1.51758790b4181p-4, 0x1.0p-52
+  },
+  { // Entry 116
+    0x1.702ebfa1ff2013f2438cfd1935b73099p101,
+    0x1.5555555555555p-2, -0x1.00380p6
+  },
+  { // Entry 117
+    0x1.ba30a127f6dd5fd9c60a7f010d9ca125p202,
+    0x1.5555555555555p-2, -0x1.ffc7fffffffffp6
+  },
+  { // Entry 118
+    0x1.7ffffe8eddc49a0bb74c9b3942e5eb0bp1,
+    0x1.5555555555555p-2, -0x1.fffffe3ffffffp-1
+  },
+  { // Entry 119
+    0x1.8aa8808647d07b8819b686a448174076p586,
+    0x1.5555555555555p-5, -0x1.ffc7fffffffffp6
+  },
+  { // Entry 120
+    0x1.7a0a9108e1d1884c584a9ab81fc3f3d1p-294,
+    0x1.5555555555555p-5, 0x1.000000000e0p6
+  },
+  { // Entry 121
+    0x1.ad3d5033217a047c2602ed9b3c0a9644p-461,
+    0x1.58a26121f46f6p-2, 0x1.24f45f5fd4f79p8
+  },
+  { // Entry 122
+    0x1.1104fb8cf786c800ffc735889a531fa3p0,
+    0x1.6130984c02017p0, 0x1.999999999999ap-3
+  },
+  { // Entry 123
+    0x1.1e952b19cc33672f1cdd3ec50e0b3df2p-1023,
+    0x1.622e8ba2e8b9dp-1, 0x1.e0f83e0f83e0cp10
+  },
+  { // Entry 124
+    0x1.ceafd8c0385bd8abbd5744704bf13d4ep-1023,
+    0x1.671111111110cp-1, 0x1.f333333333324p10
+  },
+  { // Entry 125
+    0x1.6a09e667f3ba12f93247a76d74374418p-1,
+    0x1.6a09e667f3b9ep-1, 0x1.ffffffffffff3p-1
+  },
+  { // Entry 126
+    0x1.a887293fd6f30a11e9f3aab161b0d41fp0,
+    0x1.745d1745d1746p-2, -0x1.ffffffffffff8p-2
+  },
+  { // Entry 127
+    0x1.917499900fda07fed49796d8256cbeadp-40,
+    0x1.745d1745d1746p-3, 0x1.fffffe3ffffffp3
+  },
+  { // Entry 128
+    0x1.f46e967980e048c59fd0fbea1e57781cp967,
+    0x1.7a0p7, 0x1.fffffffefffffp6
+  },
+  { // Entry 129
+    0x1.99ce45b7e28fc7ff2d3cfb4617742d7ap-1,
+    0x1.7bf0b2348b0a8p2, -0x1.0p-3
+  },
+  { // Entry 130
+    0x1.fe9d3facecdb482e52a2026f0d0fcbabp0,
+    0x1.8p-1, -0x1.33333333333c0p1
+  },
+  { // Entry 131
+    0x1.96c3a864d92cc8242fa6a056bb08b3cfp-1,
+    0x1.85e85e85e85eap-1, 0x1.b073ecade3053p-1
+  },
+  { // Entry 132
+    0x1.f2d80cf8cc08b7ffffeea79f95c3a9bap-1,
+    0x1.87d872441eabbp9, -0x1.fffffffffffeep-9
+  },
+  { // Entry 133
+    0x1.ffffffffffff701f8afb9aa06bad33c1p-1,
+    0x1.89e36ef84f19dp1, -0x1.0000000000011p-50
+  },
+  { // Entry 134
+    0x1.0000000000000fffb750f07593ac0fefp0,
+    0x1.8d600b7696862p-96, -0x1.efae61f60f6e8p-59
+  },
+  { // Entry 135
+    0x1.e8f15565ed43a82e052236ac3f8a1f09p77,
+    0x1.98d2fe5c53f34p-39, -0x1.044a002d50ad8p1
+  },
+  { // Entry 136
+    0x1.0f4b118a10e49fffff00ae7357d87c94p-1,
+    0x1.999999a637f10p-2, 0x1.62e42fefa39efp-1
+  },
+  { // Entry 137
+    0x1.d2515c49d64157fef62efe37aa7d4e57p-44,
+    0x1.9c0133cdb0856p-5, 0x1.4p3
+  },
+  { // Entry 138
+    0x1.fb85e9f13f076753450e315695d239e9p-1023,
+    0x1.9f0ed4f930522p-1, 0x1.a5db8a1755e9cp11
+  },
+  { // Entry 139
+    0x1.01ab8f2671b6e8000096349ab8974ec5p0,
+    0x1.9fcfe7f3fa181p-1, -0x1.0p-5
+  },
+  { // Entry 140
+    0x1.69c73824fbabf8066c0f38487c600c72p9,
+    0x1.a043274b705cep3, 0x1.487e31cce6468p1
+  },
+  { // Entry 141
+    0x1.d20088f4eeb8a52ff029ff7e476e3b67p-582,
+    0x1.a5d1745d1746ep-1, 0x1.03e0f83e0f83cp11
+  },
+  { // Entry 142
+    0x1.c4beedf3151e2803e049bb5161d1272dp-272,
+    0x1.aa4ce8ed526b1p-1, 0x1.00880p10
+  },
+  { // Entry 143
+    0x1.7173062b74c217fea6b41e6a7fb48dd6p-711,
+    0x1.ab99d36091bc0p97, -0x1.d136ee8e59573p2
+  },
+  { // Entry 144
+    0x1.86c1b49a551097fe78399c00d0157d92p-2,
+    0x1.b782218c3fdb4p2, -0x1.0p-1
+  },
+  { // Entry 145
+    0x1.5b6a74499d637804b9aa28f9b766c3ccp-1,
+    0x1.bceb771a02bdep2, -0x1.999999999999ap-3
+  },
+  { // Entry 146
+    0x1.fdde6d7d992d4ffcd0a2446a9572b791p-1,
+    0x1.bfffffffffffdp-1, 0x1.ffc7fffffffffp-6
+  },
+  { // Entry 147
+    0x1.2492492492492f05397829cbc1ade69fp-1023,
+    0x1.bffffffffffffp1022, -0x1.0p0
+  },
+  { // Entry 148
+    0x1.cca34d8d609542352dfeaace528cb7a1p-818,
+    0x1.cp-1033, 0x1.9555555555552p-1
+  },
+  { // Entry 149
+    0x1.55cb805d3b6ab5c7675ce288db179f2bp-981,
+    0x1.cp-1033, 0x1.e666666666662p-1
+  },
+  { // Entry 150
+    0x1.97a3fcbacebe5d86d4f9675d3b8208f8p861,
+    0x1.cp-1059, -0x1.a0ea0ea0ea0eap-1
+  },
+  { // Entry 151
+    0x1.e926f3342729d100beab22b5029fa692p-956,
+    0x1.cp-1071, 0x1.c8ebd48ebd498p-1
+  },
+  { // Entry 152
+    0x1.f1668a877c3020c8505c45ae994bd358p-1002,
+    0x1.cp-1071, 0x1.deeabb7884549p-1
+  },
+  { // Entry 153
+    0x1.24924924924597829cbc14f0e93c746ep-1023,
+    0x1.c000000000057p1022, -0x1.0p0
+  },
+  { // Entry 154
+    0x1.c65c2cf3962da8013d40ee8c3b46bf1dp96,
+    0x1.c25c268491610p-44, -0x1.1efeff5a273ecp1
+  },
+  { // Entry 155
+    0x1.970c10d6b0a59a7fadf1e21e5ab677bep77,
+    0x1.c25c268497682p-44, -0x1.cc6b93abbb074p0
+  },
+  { // Entry 156
+    0x1.8583c2489a50380006c9c7205b5a54fep-1,
+    0x1.c2e170b85c994p-2, 0x1.5555555555555p-2
+  },
+  { // Entry 157
+    0x1.7e4573015bc63bd267679aab2cd89f66p-1,
+    0x1.cb3c9484e2ad0p0, -0x1.0p-1
+  },
+  { // Entry 158
+    0x1.7e3e719ce5b797fe885815bc3b2457f2p-1,
+    0x1.cb4d69eb4f4b9p0, -0x1.0p-1
+  },
+  { // Entry 159
+    0x1.fd4250a871c7fe00d5f51039c57dde6fp-624,
+    0x1.ccc4c0fd63cb6p-1, 0x1.0p12
+  },
+  { // Entry 160
+    0x1.5dc285d5b5f16800f6d7dc5ffdcf8d16p-1,
+    0x1.d1745d1749883p-1, 0x1.ffc7fffffffffp1
+  },
+  { // Entry 161
+    0x1.fea595d5c04f881438f7f5f10dbb0297p-2,
+    0x1.d555555555552p-1, 0x1.ffc7fffffffffp2
+  },
+  { // Entry 162
+    0x1.0000000000007ff04a26678b633a133ep0,
+    0x1.d872441ec3905p2, 0x1.0000000000011p-50
+  },
+  { // Entry 163
+    0x1.a63f4bd797f82805919b09d2b62da1e1p-1,
+    0x1.da60a1f2ec608p-2, 0x1.007cd9524d3f4p-2
+  },
+  { // Entry 164
+    0x1.a82e1469025c850c1448a19c2af67fe4p-500,
+    0x1.db6db6db6db72p-2, 0x1.c30c30c30c3p8
+  },
+  { // Entry 165
+    0x1.779a06bc3880e2c39dfc679749e470a5p-2,
+    0x1.dbb0e0aa2dd0ep2, -0x1.0p-1
+  },
+  { // Entry 166
+    0x1.f55b41ab4a675405b542703d9b037ae7p-408,
+    0x1.dda95a95a95b1p-1, 0x1.fc0p11
+  },
+  { // Entry 167
+    0x1.767fbad219a208018d6b81f7f3a2051bp2,
+    0x1.de7f154838537p-6, -0x1.0p-1
+  },
+  { // Entry 168
+    0x1.711d602ffb27f80209043d6d8f283cf8p-10,
+    0x1.e66666666666bp-1, 0x1.ffffffffffff8p6
+  },
+  { // Entry 169
+    0x1.ff5697396af157ffead748859ae3c9cbp1,
+    0x1.eeeeeeeeeeeeep2, 0x1.5aaaaaaaaaaabp-1
+  },
+  { // Entry 170
+    0x1.fe961a3ccd3c281ad0333d6806927b2bp-1,
+    0x1.f07c1f07c1f07p-14, 0x1.40a57eb50296dp-12
+  },
+  { // Entry 171
+    0x1.dac0c7cfbef05bd65a0e6ea2477f47fap778,
+    0x1.f1a17d079e24fp-3, -0x1.7d9c0b5f3a960p8
+  },
+  { // Entry 172
+    0x1.6ea69bd85b67cc85be83fa977dc123cap-1,
+    0x1.f333333333324p0, -0x1.0p-1
+  },
+  { // Entry 173
+    0x1.715bf92f43f00b403049e0c3e51153f8p-16,
+    0x1.f664984b8a152p-21, 0x1.8b852ce2219f0p-1
+  },
+  { // Entry 174
+    0x1.74368094efbfb380bb2df2e20e2a7a17p-85,
+    0x1.f6ded8bc3fa43p-7, 0x1.c083595c2b1bcp3
+  },
+  { // Entry 175
+    0x1.b0ef556006207718d3da08a90136726dp721,
+    0x1.f83e0f83e0b8ap-1, -0x1.00000002b658ep15
+  },
+  { // Entry 176
+    0x1.b0ef4cd94f8f8a8e603ff658f61fefb1p721,
+    0x1.f83e0f83e0ba5p-1, -0x1.00000000221efp15
+  },
+  { // Entry 177
+    0x1.b0ef4cd82f1387d76580a9eeaba656f6p721,
+    0x1.f83e0f83e0bcfp-1, -0x1.00000000221efp15
+  },
+  { // Entry 178
+    0x1.b0ef4cfb1cec37d64f37ea375597b740p721,
+    0x1.f83e0f83e0bcfp-1, -0x1.000000002cb09p15
+  },
+  { // Entry 179
+    0x1.b0ef555e269c6774a18b56af36947d82p721,
+    0x1.f83e0f83e0bcfp-1, -0x1.00000002b6573p15
+  },
+  { // Entry 180
+    0x1.b1c3042fe76ec74eb631776ea90c3cc6p721,
+    0x1.f83e0f83e0bcfp-1, -0x1.00004000221efp15
+  },
+  { // Entry 181
+    0x1.f2e92477d64c86fa54f6215ec8de5896p827,
+    0x1.f83e0f83e0bcfp-1, -0x1.25ab6f7bced93p15
+  },
+  { // Entry 182
+    0x1.b0ef4c04ab6f97a529350915504c0074p721,
+    0x1.f83e0f83e0bcfp-1, -0x1.ffffffffc43dep14
+  },
+  { // Entry 183
+    0x1.b0ef555b1dbe97d276d196306ba00051p721,
+    0x1.f83e0f83e0c26p-1, -0x1.00000002b620fp15
+  },
+  { // Entry 184
+    0x1.b0ef4cbe6dee68f697fc5885e43a3545p721,
+    0x1.f83e0f83e0f80p-1, -0x1.00000000220p15
+  },
+  { // Entry 185
+    0x1.661db242e13f78760f3385c48de6e14dp-716,
+    0x1.f84f1b77aa61ep-1, 0x1.0000044p15
+  },
+  { // Entry 186
+    0x1.6cc056593b1897fe7294556e85a7fccap-1,
+    0x1.f869b10e1646ep0, -0x1.0p-1
+  },
+  { // Entry 187
+    0x1.96ec199c8283280dcde1bf0a6bdf18ddp-33,
+    0x1.f86d6f63aa049p-1, 0x1.780p10
+  },
+  { // Entry 188
+    0x1.8d3575c5a08217e96d2baccd92102101p612,
+    0x1.f96860afcb452p-1, -0x1.0000043fffeedp15
+  },
+  { // Entry 189
+    0x1.8d3575c52ea31fea3d0799f8cf8523e3p612,
+    0x1.f96860afcb468p-1, -0x1.0000043ffff85p15
+  },
+  { // Entry 190
+    0x1.8d3575c472f0c863c06a976e22a25c6dp612,
+    0x1.f96860afcb489p-1, -0x1.0000044p15
+  },
+  { // Entry 191
+    0x1.8d3575c35aacefea95c885439d49bd99p612,
+    0x1.f96860afcb4bbp-1, -0x1.00000440000d4p15
+  },
+  { // Entry 192
+    0x1.8d3575c0cfc461bbe5ee3644cc6d77c2p612,
+    0x1.f96860afcb506p-1, -0x1.0000043fffc79p15
+  },
+  { // Entry 193
+    0x1.8d3575c1667df1163979824d863cc571p612,
+    0x1.f96860afcb506p-1, -0x1.0000044000022p15
+  },
+  { // Entry 194
+    0x1.8d3575b4fec588e56f1ba4bb2cde3d37p612,
+    0x1.f96860afcb714p-1, -0x1.0000044000353p15
+  },
+  { // Entry 195
+    0x1.8d3575ac3ff49ee0044041951d20706bp612,
+    0x1.f96860afcb858p-1, -0x1.0000043fffe6dp15
+  },
+  { // Entry 196
+    0x1.671986dbe53f56acd36ddaeec97277aap-46,
+    0x1.f985f7cbf0059p-7, 0x1.e3fa3018bde08p2
+  },
+  { // Entry 197
+    0x1.eec73eb3ed9247940e87750e7fc49479p1019,
+    0x1.fa81a5e7d412cp-1, -0x1.000007ffef0p16
+  },
+  { // Entry 198
+    0x1.6afc2b3669cafd8b04be07637cb8ce5ep-1,
+    0x1.fd557019f1cd0p0, -0x1.0p-1
+  },
+  { // Entry 199
+    0x1.c4f91d24e5c3e86f73ea68132bda4b8ap1002,
+    0x1.fdfffffffffffp-3, -0x1.f3fffffffffffp8
+  },
+  { // Entry 200
+    0x1.6a93b7f04694ad66b9aa64f76ba1fa38p-2,
+    0x1.fe7b0ee6afa3cp2, -0x1.0p-1
+  },
+  { // Entry 201
+    0x1.e1776bde16643808a38caf050f5cb630p-966,
+    0x1.ff3e9ae3033aep-1, 0x1.ba6c13bf005ecp18
+  },
+  { // Entry 202
+    0x1.d4ef5ecd754cd7f6e7016453994c21d5p-943,
+    0x1.ff433a02ec964p-1, 0x1.ba7a347cdffebp18
+  },
+  { // Entry 203
+    0x1.fe9bbdc161abd7fd9b32dbbc2d748438p-915,
+    0x1.ff48e2b4a5d7ep-1, 0x1.ba8b810f5507fp18
+  },
+  { // Entry 204
+    0x1.de52aa6a5ecaf8067797c9e2a281b23ep-905,
+    0x1.ff4ae0e440fb6p-1, 0x1.ba9198ab03cd4p18
+  },
+  { // Entry 205
+    0x1.76bc52dc7431f800000536a94bc3d305p133,
+    0x1.ff77fffffffffp15, 0x1.0b1fdcd7590abp3
+  },
+  { // Entry 206
+    0x1.5c1c2ded7213d991836fd2aa8dff4df7p-1023,
+    0x1.ff7ffffffffffp0, -0x1.00000000cp10
+  },
+  { // Entry 207
+    0x1.7a2b4d72ccfab7febb68ab3ac422cda7p-613,
+    0x1.ff85796e4f063p-1, 0x1.bb44b86ca0928p18
+  },
+  { // Entry 208
+    0x1.18a2faf8b5f6e8032837e7d87abcfa58p-410,
+    0x1.ffae13ebf1872p-1, 0x1.bbc0d7c3a882cp18
+  },
+  { // Entry 209
+    0x1.39e7d84a8958282053666d8c41938466p-739,
+    0x1.fff0000006071p-1, 0x1.0000140p22
+  },
+  { // Entry 210
+    0x1.e6ce6f49ea6028016050f5f38aefc204p795,
+    0x1.fff800000e483p1023, 0x1.8df6b0df6b0e0p-1
+  },
+  { // Entry 211
+    0x1.9aaa3cdd12dc05e246b234654b8dc76fp-442,
+    0x1.fffffe7fffffep-1023, 0x1.ba2e8ba2e8ba4p-2
+  },
+  { // Entry 212
+    0x1.f663278f73044832a2c1c5820c51cde7p-1,
+    0x1.ffffff3ffffffp-8, 0x1.000000ep-8
+  },
+  { // Entry 213
+    0x1.ffffffcd55554801c722bf7f371564d7p-1,
+    0x1.ffffffbffffffp-1, 0x1.9555555555552p-1
+  },
+  { // Entry 214
+    0x1.61c50ac8e0257000ca0d8b938dfe79abp567,
+    0x1.ffffffbffffffp1023, 0x1.1bbbbbbbbbbb9p-1
+  },
+  { // Entry 215
+    0x1.ffffff80000008p-199,
+    0x1.ffffffcp-100, 0x1.0p1
+  },
+  { // Entry 216
+    0x1.ffffff85291c6803b8547332d01f63b1p1023,
+    0x1.ffffffff8ffffp7, 0x1.ffffffffe7e49p6
+  },
+  { // Entry 217
+    0x1.ffffffc7fff45f951f3a78dcb59a7fa5p-897,
+    0x1.ffffffffeffffp-2, 0x1.bffffffffffffp9
+  },
+  { // Entry 218
+    0x1.7b29358d45f41a2f23ee22f80bb6fd08p508,
+    0x1.fffffffff3ffep-1023, -0x1.fd8fd8fd8fd8ep-2
+  },
+  { // Entry 219
+    0x1.e3437e70fec24558c1079cade561e276p-810,
+    0x1.fffffffffbffep-1023, 0x1.9555555555552p-1
+  },
+  { // Entry 220
+    0x1.fffffffffdfff7fffffeff97fe6ffeffp-1,
+    0x1.fffffffffbfffp-1, 0x1.0000000000003p-1
+  },
+  { // Entry 221
+    0x1.f6697c7afa0ac827d45b428b9c13ea46p77,
+    0x1.ffffffffff0d6p952, 0x1.4f2094f2094f0p-4
+  },
+  { // Entry 222
+    0x1.ffffffffffbc37ffffffff82436fffffp-1,
+    0x1.ffffffffffb4bp-1, 0x1.cccccccccccccp-1
+  },
+  { // Entry 223
+    0x1.ffffffffffcfe7ffffffffe232cfffffp-1,
+    0x1.ffffffffffcd6p-1, 0x1.e666666666666p-1
+  },
+  { // Entry 224
+    0x1.fffffffffff377ffffffffdbdfefffffp-1,
+    0x1.ffffffffffe6fp-1, 0x1.ffffffffffff8p-2
+  },
+  { // Entry 225
+    0x1.000000000003c7ffffffffeb431fffffp0,
+    0x1.fffffffffff0ep-1, -0x1.ffffffffffe9bp-2
+  },
+  { // Entry 226
+    0x1.000000000012d800000000ecb980p-3,
+    0x1.fffffffffff37p0, -0x1.8p1
+  },
+  { // Entry 227
+    0x1.ae89f995aaa93b8abea2c7b7cbcdc5e2p378,
+    0x1.fffffffffff9fp2, 0x1.f8fffffffffffp6
+  },
+  { // Entry 228
+    0x1.000000000193480000013fd6b24000aap-1015,
+    0x1.fffffffffffa7p6, -0x1.220p7
+  },
+  { // Entry 229
+    0x1.fffffffffffd07ffffffffffec4fffffp-1,
+    0x1.fffffffffffcep-1, 0x1.e666666666666p-1
+  },
+  { // Entry 230
+    0x1.ffffffffff1ce485fdf4a5fd3e671ea9p-1023,
+    0x1.fffffffffffefp-5, 0x1.fefffffffffffp7
+  },
+  { // Entry 231
+    0x1.00000000000047ffffffffffffffffffp0,
+    0x1.ffffffffffff7p-1, -0x1.ffffffffffff7p-1
+  },
+  { // Entry 232
+    0x1.0000000000002800000000000640p-1023,
+    0x1.ffffffffffffbp1022, -0x1.0p0
+  },
+  { // Entry 233
+    0x1.fffffffffffff8000006ffffffd0p-1,
+    0x1.ffffffffffffcp-1, 0x1.fffffe3ffffffp-4
+  },
+  { // Entry 234
+    0x1.fffffffffff17217f7d1cf8da0cc77cbp1023,
+    0x1.ffffffffffffdp0, 0x1.0000000000002p10
+  },
+  { // Entry 235
+    0x1.fffffffffff8b90bfbe8e7bf932596dfp1023,
+    0x1.ffffffffffffdp1, 0x1.0000000000001p9
+  },
+  { // Entry 236
+    0x1.00000000000007ffffffffffffdfffffp0,
+    0x1.ffffffffffffep-1, -0x1.ffffffffffffep-2
+  },
+  { // Entry 237
+    0x1.9fdf8bcce5346004c5f8fe1fe52b1115p56,
+    0x1.ffffffffffffep-64, -0x1.ccccccccccccdp-1
+  },
+  { // Entry 238
+    0x1.3354053613975801e1f18c607d9f7c96p-55,
+    0x1.ffffffffffffep-224, 0x1.f6b0df6b0df6ap-3
+  },
+  { // Entry 239
+    0x1.4337cd6b11bd77ff1dfb16e77447ef8ep157,
+    0x1.ffffffffffffep-642, -0x1.f6b0df6b0df6cp-3
+  },
+  { // Entry 240
+    0x1.9fdf8bcce571fb3c9561f337c9c427d4p278,
+    0x1.ffffffffffffep-930, -0x1.3333333333337p-2
+  },
+  { // Entry 241
+    0x1.ddb680117ab968057796e81914e78595p909,
+    0x1.ffffffffffffep-1012, -0x1.ccccccccccccdp-1
+  },
+  { // Entry 242
+    0x1.2387a6e756233000b49c3b0bf9c54982p1,
+    0x1.ffffffffffffep4, 0x1.e66666666665cp-3
+  },
+  { // Entry 243
+    0x1.a5adb8c8e32c1807a7da92b43f7cc90cp54,
+    0x1.ffffffffffffep75, 0x1.70a3d70a3d70fp-1
+  },
+  { // Entry 244
+    0x1.ec1deabbe3a9eae29bde56f88e8ef4eep627,
+    0x1.ffffffffffffep813, 0x1.8af8af8af8af8p-1
+  },
+  { // Entry 245
+    0x1.ffffffffff8f9dccd52d470a882669c3p647,
+    0x1.ffffffffffffep863, 0x1.7fffffffffffdp-1
+  },
+  { // Entry 246
+    0x1.00000004da20a7d2821cdfd4f6347dd0p128,
+    0x1.fffffffffffffp-3, -0x1.000000000e0p6
+  },
+  { // Entry 247
+    0x1.44ce541b60346c98094443b9faa84abdp10,
+    0x1.fffffffffffffp1023, 0x1.4afd6a052c0e2p-7
+  },
+  { // Entry 248
+    0x1.cb720dcef90691503cbd1e949db761d9p-1,
+    0x1.0p-5, 0x1.0p-5
+  },
+  { // Entry 249
+    0x1.p-5,
+    0x1.0p-5, 0x1.0p0
+  },
+  { // Entry 250
+    0x1.p0,
+    0x1.0p0, 0x1.0p-5
+  },
+  { // Entry 251
+    0x1.p0,
+    0x1.0p0, 0x1.0p0
+  },
+  { // Entry 252
+    0x1.p-40,
+    0x1.0p-5, 0x1.0p3
+  },
+  { // Entry 253
+    0x1.p-160,
+    0x1.0p-5, 0x1.0p5
+  },
+  { // Entry 254
+    0x1.p0,
+    0x1.0p0, 0x1.0p3
+  },
+  { // Entry 255
+    0x1.p0,
+    0x1.0p0, 0x1.0p5
+  },
+  { // Entry 256
+    0.0,
+    0x1.0p-5, 0x1.0p10
+  },
+  { // Entry 257
+    0.0,
+    0x1.0p-5, 0x1.0p12
+  },
+  { // Entry 258
+    0x1.p0,
+    0x1.0p0, 0x1.0p10
+  },
+  { // Entry 259
+    0x1.p0,
+    0x1.0p0, 0x1.0p12
+  },
+  { // Entry 260
+    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
+    0x1.0p3, 0x1.0p-5
+  },
+  { // Entry 261
+    0x1.p3,
+    0x1.0p3, 0x1.0p0
+  },
+  { // Entry 262
+    0x1.1d4873168b9aa7805b8028990f07a98bp0,
+    0x1.0p5, 0x1.0p-5
+  },
+  { // Entry 263
+    0x1.p5,
+    0x1.0p5, 0x1.0p0
+  },
+  { // Entry 264
+    0x1.p24,
+    0x1.0p3, 0x1.0p3
+  },
+  { // Entry 265
+    0x1.p96,
+    0x1.0p3, 0x1.0p5
+  },
+  { // Entry 266
+    0x1.p40,
+    0x1.0p5, 0x1.0p3
+  },
+  { // Entry 267
+    0x1.p160,
+    0x1.0p5, 0x1.0p5
+  },
+  { // Entry 268
+    HUGE_VAL,
+    0x1.0p3, 0x1.0p10
+  },
+  { // Entry 269
+    HUGE_VAL,
+    0x1.0p3, 0x1.0p12
+  },
+  { // Entry 270
+    HUGE_VAL,
+    0x1.0p5, 0x1.0p10
+  },
+  { // Entry 271
+    HUGE_VAL,
+    0x1.0p5, 0x1.0p12
+  },
+  { // Entry 272
+    0x1.3dea64c12342235b41223e13d773fba2p0,
+    0x1.0p10, 0x1.0p-5
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.0p10, 0x1.0p0
+  },
+  { // Entry 274
+    0x1.4bfdad5362a271d4397afec42e20e036p0,
+    0x1.0p12, 0x1.0p-5
+  },
+  { // Entry 275
+    0x1.p12,
+    0x1.0p12, 0x1.0p0
+  },
+  { // Entry 276
+    0x1.p80,
+    0x1.0p10, 0x1.0p3
+  },
+  { // Entry 277
+    0x1.p320,
+    0x1.0p10, 0x1.0p5
+  },
+  { // Entry 278
+    0x1.p96,
+    0x1.0p12, 0x1.0p3
+  },
+  { // Entry 279
+    0x1.p384,
+    0x1.0p12, 0x1.0p5
+  },
+  { // Entry 280
+    0x1.000000000000198d4d0da05571e9ad47p2,
+    0x1.6a09e667f3bccp-1, -0x1.0p2
+  },
+  { // Entry 281
+    0x1.ffffffffffffcce565e4bf5521467385p-3,
+    0x1.6a09e667f3bccp-1, 0x1.0p2
+  },
+  { // Entry 282
+    0x1.000000000000198d4d0da05571e9ad47p-2,
+    0x1.6a09e667f3bccp0, -0x1.0p2
+  },
+  { // Entry 283
+    0x1.ffffffffffffcce565e4bf5521467385p1,
+    0x1.6a09e667f3bccp0, 0x1.0p2
+  },
+  { // Entry 284
+    0x1.000000000000198d4d0da05571e9ad47p2,
+    0x1.6a09e667f3bccp-1, -0x1.0p2
+  },
+  { // Entry 285
+    0x1.ffffffffffffcce565e4bf5521467385p-3,
+    0x1.6a09e667f3bccp-1, 0x1.0p2
+  },
+  { // Entry 286
+    0x1.000000000000198d4d0da05571e9ad47p-2,
+    0x1.6a09e667f3bccp0, -0x1.0p2
+  },
+  { // Entry 287
+    0x1.ffffffffffffcce565e4bf5521467385p1,
+    0x1.6a09e667f3bccp0, 0x1.0p2
+  },
+  { // Entry 288
+    0x1.00162f3904051fa2c1b4e853746b6f04p0,
+    0x1.6a09e667f3bccp-1, -0x1.0p-10
+  },
+  { // Entry 289
+    0x1.ffd3a565efb64ea88a80d8a52554a3a0p-1,
+    0x1.6a09e667f3bccp-1, 0x1.0p-10
+  },
+  { // Entry 290
+    0x1.ffd3a565efb64eaeed467183b8d46a96p-1,
+    0x1.6a09e667f3bccp0, -0x1.0p-10
+  },
+  { // Entry 291
+    0x1.00162f3904051f9f8fc46b3743f85cbep0,
+    0x1.6a09e667f3bccp0, 0x1.0p-10
+  },
+  { // Entry 292
+    0x1.948b0fcd6e9e06522c3f35ba781948b0p1,
+    0x1.8p-1, -0x1.0p2
+  },
+  { // Entry 293
+    0x1.44p-2,
+    0x1.8p-1, 0x1.0p2
+  },
+  { // Entry 294
+    0x1.948b0fcd6e9e06522c3f35ba781948b0p-3,
+    0x1.8p0, -0x1.0p2
+  },
+  { // Entry 295
+    0x1.44p2,
+    0x1.8p0, 0x1.0p2
+  },
+  { // Entry 296
+    0x1.279a74590331c4d218f81e4afb257d06p0,
+    0x1.8p-1, -0x1.0p-1
+  },
+  { // Entry 297
+    0x1.bb67ae8584caa73b25742d7078b83b89p-1,
+    0x1.8p-1, 0x1.0p-1
+  },
+  { // Entry 298
+    0x1.a20bd700c2c3dfc042cc1aed7871db45p-1,
+    0x1.8p0, -0x1.0p-1
+  },
+  { // Entry 299
+    0x1.3988e1409212e7d0321914321a556473p0,
+    0x1.8p0, 0x1.0p-1
+  },
+  { // Entry 300
+    0x1.00126a0b93db294cabe33da735437f51p0,
+    0x1.8p-1, -0x1.0p-10
+  },
+  { // Entry 301
+    0x1.ffdb2e8ed2a1fe71bd59fdd610313046p-1,
+    0x1.8p-1, 0x1.0p-10
+  },
+  { // Entry 302
+    0x1.ffcc1c5973b2129a5b1424e0c88786b8p-1,
+    0x1.8p0, -0x1.0p-10
+  },
+  { // Entry 303
+    0x1.0019f474aa190038c6af775d92f1d725p0,
+    0x1.8p0, 0x1.0p-10
+  },
+  { // Entry 304
+    0x1.p0,
+    0x1.0p0, -0x1.0p2
+  },
+  { // Entry 305
+    0x1.p0,
+    0x1.0p0, 0x1.0p2
+  },
+  { // Entry 306
+    0x1.p-4,
+    0x1.0p1, -0x1.0p2
+  },
+  { // Entry 307
+    0x1.p4,
+    0x1.0p1, 0x1.0p2
+  },
+  { // Entry 308
+    0x1.p0,
+    0x1.0p0, -0x1.0p-1
+  },
+  { // Entry 309
+    0x1.p0,
+    0x1.0p0, 0x1.0p-1
+  },
+  { // Entry 310
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.0p1, -0x1.0p-1
+  },
+  { // Entry 311
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p1, 0x1.0p-1
+  },
+  { // Entry 312
+    0x1.p0,
+    0x1.0p0, -0x1.0p-10
+  },
+  { // Entry 313
+    0x1.p0,
+    0x1.0p0, 0x1.0p-10
+  },
+  { // Entry 314
+    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
+    0x1.0p1, -0x1.0p-10
+  },
+  { // Entry 315
+    0x1.002c605e2e8cec506d21bfc89a23a010p0,
+    0x1.0p1, 0x1.0p-10
+  },
+  { // Entry 316
+    0x1.p40,
+    0x1.0p-10, -0x1.0p2
+  },
+  { // Entry 317
+    0x1.p-40,
+    0x1.0p-10, 0x1.0p2
+  },
+  { // Entry 318
+    0x1.fe013f6045e40a7c41499223b4a38ce8p-1,
+    0x1.004p0, -0x1.0p2
+  },
+  { // Entry 319
+    0x1.0100601001p0,
+    0x1.004p0, 0x1.0p2
+  },
+  { // Entry 320
+    0x1.p5,
+    0x1.0p-10, -0x1.0p-1
+  },
+  { // Entry 321
+    0x1.p-5,
+    0x1.0p-10, 0x1.0p-1
+  },
+  { // Entry 322
+    0x1.ffc00bfd808be0873653647448220fdfp-1,
+    0x1.004p0, -0x1.0p-1
+  },
+  { // Entry 323
+    0x1.001ffe003ff601bfac107ca6b29a0c31p0,
+    0x1.004p0, 0x1.0p-1
+  },
+  { // Entry 324
+    0x1.01bd1e77170b415e7626621eb5aaff61p0,
+    0x1.0p-10, -0x1.0p-10
+  },
+  { // Entry 325
+    0x1.fc8bc4866e8ad2b963e1828b0761cbc6p-1,
+    0x1.0p-10, 0x1.0p-10
+  },
+  { // Entry 326
+    0x1.ffffe0040055355844443df8680a8e05p-1,
+    0x1.004p0, -0x1.0p-10
+  },
+  { // Entry 327
+    0x1.00000ffe00d5256285340e4f3ad36287p0,
+    0x1.004p0, 0x1.0p-10
+  },
+  { // Entry 328
+    0x1.0000000000000800000000000040p-1024,
+    0x1.fffffffffffffp1023, -0x1.0p0
+  },
+  { // Entry 329
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023, 0x1.0p0
+  },
+  { // Entry 330
+    0x1.3b2c47bff827194425605a92311acceep1020,
+    0x1.0p-1074, -0x1.e666666666666p-1
+  },
+  { // Entry 331
+    0x1.9fdf8bcce542f50814057837677baf82p-1021,
+    0x1.0p-1074, 0x1.e666666666666p-1
+  },
+  { // Entry 332
+    0x1.00000000000651591f9dd5cdb110f6e3p-384,
+    0x1.fffffffffffffp-7, 0x1.fffffffffffffp5
+  },
+  { // Entry 333
+    0x1.fffffffffffc000000000003efffffffp-385,
+    0x1.fffffffffffffp-7, 0x1.0p6
+  },
+  { // Entry 334
+    0x1.ffffffffffdaba9b8188aa7428411dd5p-385,
+    0x1.fffffffffffffp-7, 0x1.0000000000001p6
+  },
+  { // Entry 335
+    0x1.00000000000851591f9dd5dc4bc3361fp-384,
+    0x1.0p-6, 0x1.fffffffffffffp5
+  },
+  { // Entry 336
+    0x1.p-384,
+    0x1.0p-6, 0x1.0p6
+  },
+  { // Entry 337
+    0x1.ffffffffffdeba9b8188aa2ded7820e7p-385,
+    0x1.0p-6, 0x1.0000000000001p6
+  },
+  { // Entry 338
+    0x1.00000000000c51591f9dd6055127b496p-384,
+    0x1.0000000000001p-6, 0x1.fffffffffffffp5
+  },
+  { // Entry 339
+    0x1.000000000004000000000007e0p-384,
+    0x1.0000000000001p-6, 0x1.0p6
+  },
+  { // Entry 340
+    0x1.ffffffffffe6ba9b8188a9b917e62709p-385,
+    0x1.0000000000001p-6, 0x1.0000000000001p6
+  },
+  { // Entry 341
+    0x1.000000000002773a77d719106e939582p-160,
+    0x1.fffffffffffffp-6, 0x1.fffffffffffffp4
+  },
+  { // Entry 342
+    0x1.fffffffffffe000000000000f7ffffffp-161,
+    0x1.fffffffffffffp-6, 0x1.0p5
+  },
+  { // Entry 343
+    0x1.fffffffffff0231620a39c093f16f8cep-161,
+    0x1.fffffffffffffp-6, 0x1.0000000000001p5
+  },
+  { // Entry 344
+    0x1.000000000003773a77d7191361ce0d5ap-160,
+    0x1.0p-5, 0x1.fffffffffffffp4
+  },
+  { // Entry 345
+    0x1.p-160,
+    0x1.0p-5, 0x1.0p5
+  },
+  { // Entry 346
+    0x1.fffffffffff2231620a39bfa8a2d1972p-161,
+    0x1.0p-5, 0x1.0000000000001p5
+  },
+  { // Entry 347
+    0x1.000000000005773a77d7191c3042fd08p-160,
+    0x1.0000000000001p-5, 0x1.fffffffffffffp4
+  },
+  { // Entry 348
+    0x1.000000000002000000000001f0p-160,
+    0x1.0000000000001p-5, 0x1.0p5
+  },
+  { // Entry 349
+    0x1.fffffffffff6231620a39be2f0595ab9p-161,
+    0x1.0000000000001p-5, 0x1.0000000000001p5
+  },
+  { // Entry 350
+    0x1.000000000000e2e42fefa39f59e36bcbp-64,
+    0x1.fffffffffffffp-5, 0x1.fffffffffffffp3
+  },
+  { // Entry 351
+    0x1.ffffffffffff0000000000003bffffffp-65,
+    0x1.fffffffffffffp-5, 0x1.0p4
+  },
+  { // Entry 352
+    0x1.fffffffffff9746f4041718ed45990a2p-65,
+    0x1.fffffffffffffp-5, 0x1.0000000000001p4
+  },
+  { // Entry 353
+    0x1.00000000000162e42fefa39fe95583c3p-64,
+    0x1.0p-4, 0x1.fffffffffffffp3
+  },
+  { // Entry 354
+    0x1.p-64,
+    0x1.0p-4, 0x1.0p4
+  },
+  { // Entry 355
+    0x1.fffffffffffa746f4041718be29130c3p-65,
+    0x1.0p-4, 0x1.0000000000001p4
+  },
+  { // Entry 356
+    0x1.00000000000262e42fefa3a1bc39b3b3p-64,
+    0x1.0000000000001p-4, 0x1.fffffffffffffp3
+  },
+  { // Entry 357
+    0x1.00000000000100000000000078p-64,
+    0x1.0000000000001p-4, 0x1.0p4
+  },
+  { // Entry 358
+    0x1.fffffffffffc746f4041718767007104p-65,
+    0x1.0000000000001p-4, 0x1.0000000000001p4
+  },
+  { // Entry 359
+    0x1.000000000000451591f9dd5ba59328abp-24,
+    0x1.fffffffffffffp-4, 0x1.fffffffffffffp2
+  },
+  { // Entry 360
+    0x1.ffffffffffff8000000000000dffffffp-25,
+    0x1.fffffffffffffp-4, 0x1.0p3
+  },
+  { // Entry 361
+    0x1.fffffffffffd6ba9b8188a9332cfe24ap-25,
+    0x1.fffffffffffffp-4, 0x1.0000000000001p3
+  },
+  { // Entry 362
+    0x1.000000000000851591f9dd5bbdd88d2ap-24,
+    0x1.0p-3, 0x1.fffffffffffffp2
+  },
+  { // Entry 363
+    0x1.p-24,
+    0x1.0p-3, 0x1.0p3
+  },
+  { // Entry 364
+    0x1.fffffffffffdeba9b8188a92a7ba5050p-25,
+    0x1.0p-3, 0x1.0000000000001p3
+  },
+  { // Entry 365
+    0x1.000000000001051591f9dd5c18635627p-24,
+    0x1.0000000000001p-3, 0x1.fffffffffffffp2
+  },
+  { // Entry 366
+    0x1.0000000000008000000000001cp-24,
+    0x1.0000000000001p-3, 0x1.0p3
+  },
+  { // Entry 367
+    0x1.fffffffffffeeba9b8188a91e58f2c5cp-25,
+    0x1.0000000000001p-3, 0x1.0000000000001p3
+  },
+  { // Entry 368
+    0x1.0000000000000c5c85fdf473df375979p-8,
+    0x1.fffffffffffffp-3, 0x1.fffffffffffffp1
+  },
+  { // Entry 369
+    0x1.ffffffffffffc0000000000002ffffffp-9,
+    0x1.fffffffffffffp-3, 0x1.0p2
+  },
+  { // Entry 370
+    0x1.ffffffffffff0e8de8082e30ba42371ap-9,
+    0x1.fffffffffffffp-3, 0x1.0000000000001p2
+  },
+  { // Entry 371
+    0x1.0000000000002c5c85fdf473e242ea38p-8,
+    0x1.0p-2, 0x1.fffffffffffffp1
+  },
+  { // Entry 372
+    0x1.p-8,
+    0x1.0p-2, 0x1.0p2
+  },
+  { // Entry 373
+    0x1.ffffffffffff4e8de8082e30a513f41bp-9,
+    0x1.0p-2, 0x1.0000000000001p2
+  },
+  { // Entry 374
+    0x1.0000000000006c5c85fdf473f15a0bb8p-8,
+    0x1.0000000000001p-2, 0x1.fffffffffffffp1
+  },
+  { // Entry 375
+    0x1.00000000000040000000000006p-8,
+    0x1.0000000000001p-2, 0x1.0p2
+  },
+  { // Entry 376
+    0x1.ffffffffffffce8de8082e308cb76e1dp-9,
+    0x1.0000000000001p-2, 0x1.0000000000001p2
+  },
+  { // Entry 377
+    0x1.fffffffffffff62e42fefa39efcd9404p-3,
+    0x1.fffffffffffffp-2, 0x1.fffffffffffffp0
+  },
+  { // Entry 378
+    0x1.ffffffffffffe000000000000080p-3,
+    0x1.fffffffffffffp-2, 0x1.0p1
+  },
+  { // Entry 379
+    0x1.ffffffffffffb3a37a020b8c24c6d1c6p-3,
+    0x1.fffffffffffffp-2, 0x1.0000000000001p1
+  },
+  { // Entry 380
+    0x1.0000000000000b17217f7d1cf7d83c1ap-2,
+    0x1.0p-1, 0x1.fffffffffffffp0
+  },
+  { // Entry 381
+    0x1.p-2,
+    0x1.0p-1, 0x1.0p1
+  },
+  { // Entry 382
+    0x1.ffffffffffffd3a37a020b8c23810967p-3,
+    0x1.0p-1, 0x1.0000000000001p1
+  },
+  { // Entry 383
+    0x1.0000000000002b17217f7d1cf93b204ap-2,
+    0x1.0000000000001p-1, 0x1.fffffffffffffp0
+  },
+  { // Entry 384
+    0x1.00000000000020000000000001p-2,
+    0x1.0000000000001p-1, 0x1.0p1
+  },
+  { // Entry 385
+    0x1.00000000000009d1bd0105c611fabc53p-2,
+    0x1.0000000000001p-1, 0x1.0000000000001p1
+  },
+  { // Entry 386
+    0x1.fffffffffffff00000000000007fffffp-1,
+    0x1.fffffffffffffp-1, 0x1.fffffffffffffp-1
+  },
+  { // Entry 387
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1, 0x1.0p0
+  },
+  { // Entry 388
+    0x1.ffffffffffffefffffffffffffp-1,
+    0x1.fffffffffffffp-1, 0x1.0000000000001p0
+  },
+  { // Entry 389
+    0x1.p0,
+    0x1.0p0, 0x1.fffffffffffffp-1
+  },
+  { // Entry 390
+    0x1.p0,
+    0x1.0p0, 0x1.0p0
+  },
+  { // Entry 391
+    0x1.p0,
+    0x1.0p0, 0x1.0000000000001p0
+  },
+  { // Entry 392
+    0x1.0000000000000fffffffffffff7fffffp0,
+    0x1.0000000000001p0, 0x1.fffffffffffffp-1
+  },
+  { // Entry 393
+    0x1.00000000000010p0,
+    0x1.0000000000001p0, 0x1.0p0
+  },
+  { // Entry 394
+    0x1.00000000000010000000000001p0,
+    0x1.0000000000001p0, 0x1.0000000000001p0
+  },
+  { // Entry 395
+    0x1.6a09e667f3bcbf74c2970440d6d2a831p0,
+    0x1.fffffffffffffp0, 0x1.fffffffffffffp-2
+  },
+  { // Entry 396
+    0x1.6a09e667f3bcc3608b617397f7660a23p0,
+    0x1.fffffffffffffp0, 0x1.0p-1
+  },
+  { // Entry 397
+    0x1.6a09e667f3bccb381cf6524638ad6b43p0,
+    0x1.fffffffffffffp0, 0x1.0000000000001p-1
+  },
+  { // Entry 398
+    0x1.6a09e667f3bcc51cea30a40fc9c52aecp0,
+    0x1.0p1, 0x1.fffffffffffffp-2
+  },
+  { // Entry 399
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p1, 0x1.0p-1
+  },
+  { // Entry 400
+    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
+    0x1.0p1, 0x1.0000000000001p-1
+  },
+  { // Entry 401
+    0x1.6a09e667f3bcd06d3963e3adaf664e88p0,
+    0x1.0000000000001p1, 0x1.fffffffffffffp-2
+  },
+  { // Entry 402
+    0x1.6a09e667f3bcd459022e5304d0b08199p0,
+    0x1.0000000000001p1, 0x1.0p-1
+  },
+  { // Entry 403
+    0x1.6a09e667f3bcdc3093c331b3136584f9p0,
+    0x1.0000000000001p1, 0x1.0000000000001p-1
+  },
+  { // Entry 404
+    0x1.6a09e667f3bcc248d663d4285049157bp0,
+    0x1.fffffffffffffp1, 0x1.fffffffffffffp-3
+  },
+  { // Entry 405
+    0x1.6a09e667f3bcc6349f2e437f70faef9cp0,
+    0x1.fffffffffffffp1, 0x1.0p-2
+  },
+  { // Entry 406
+    0x1.6a09e667f3bcce0c30c3222db27f411dp0,
+    0x1.fffffffffffffp1, 0x1.0000000000001p-2
+  },
+  { // Entry 407
+    0x1.6a09e667f3bcc51cea30a40fc9c52aecp0,
+    0x1.0p2, 0x1.fffffffffffffp-3
+  },
+  { // Entry 408
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p2, 0x1.0p-2
+  },
+  { // Entry 409
+    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
+    0x1.0p2, 0x1.0000000000001p-2
+  },
+  { // Entry 410
+    0x1.6a09e667f3bccac511ca43debc8a6c6bp0,
+    0x1.0000000000001p2, 0x1.fffffffffffffp-3
+  },
+  { // Entry 411
+    0x1.6a09e667f3bcceb0da94b335dd97af1cp0,
+    0x1.0000000000001p2, 0x1.0p-2
+  },
+  { // Entry 412
+    0x1.6a09e667f3bcd6886c2991e41fd2d1bdp0,
+    0x1.0000000000001p2, 0x1.0000000000001p-2
+  },
+  { // Entry 413
+    0x1.4bfdad5362a26dd5e0bd02594b5812cbp0,
+    0x1.fffffffffffffp2, 0x1.fffffffffffffp-4
+  },
+  { // Entry 414
+    0x1.4bfdad5362a270883bcdab618baa8204p0,
+    0x1.fffffffffffffp2, 0x1.0p-3
+  },
+  { // Entry 415
+    0x1.4bfdad5362a275ecf1eefd720c603321p0,
+    0x1.fffffffffffffp2, 0x1.0000000000001p-3
+  },
+  { // Entry 416
+    0x1.4bfdad5362a26f21de6a55bbedc15eb4p0,
+    0x1.0p3, 0x1.fffffffffffffp-4
+  },
+  { // Entry 417
+    0x1.4bfdad5362a271d4397afec42e20e036p0,
+    0x1.0p3, 0x1.0p-3
+  },
+  { // Entry 418
+    0x1.4bfdad5362a27738ef9c50d4aef0b5e4p0,
+    0x1.0p3, 0x1.0000000000001p-3
+  },
+  { // Entry 419
+    0x1.4bfdad5362a271b9d9c4fc813278bab6p0,
+    0x1.0000000000001p3, 0x1.fffffffffffffp-4
+  },
+  { // Entry 420
+    0x1.4bfdad5362a2746c34d5a58972f260c9p0,
+    0x1.0000000000001p3, 0x1.0p-3
+  },
+  { // Entry 421
+    0x1.4bfdad5362a279d0eaf6f799f3f67f99p0,
+    0x1.0000000000001p3, 0x1.0000000000001p-3
+  },
+  { // Entry 422
+    0x1.306fe0a31b7150a04b58ad8027ceb050p0,
+    0x1.fffffffffffffp3, 0x1.fffffffffffffp-5
+  },
+  { // Entry 423
+    0x1.306fe0a31b7152465569f4a2a3da43d4p0,
+    0x1.fffffffffffffp3, 0x1.0p-4
+  },
+  { // Entry 424
+    0x1.306fe0a31b715592698c82e79bf84613p0,
+    0x1.fffffffffffffp3, 0x1.0000000000001p-4
+  },
+  { // Entry 425
+    0x1.306fe0a31b7151388348ff0de074c5a3p0,
+    0x1.0p4, 0x1.fffffffffffffp-5
+  },
+  { // Entry 426
+    0x1.306fe0a31b7152de8d5a46305c85edecp0,
+    0x1.0p4, 0x1.0p-4
+  },
+  { // Entry 427
+    0x1.306fe0a31b71562aa17cd47554af19b4p0,
+    0x1.0p4, 0x1.0000000000001p-4
+  },
+  { // Entry 428
+    0x1.306fe0a31b715268f329a22951b38f61p0,
+    0x1.0000000000001p4, 0x1.fffffffffffffp-5
+  },
+  { // Entry 429
+    0x1.306fe0a31b71540efd3ae94bcdcfe133p0,
+    0x1.0000000000001p4, 0x1.0p-4
+  },
+  { // Entry 430
+    0x1.306fe0a31b71575b115d7790c60f600dp0,
+    0x1.0000000000001p4, 0x1.0000000000001p-4
+  },
+  { // Entry 431
+    0x1.1d4873168b9aa641db97b491a37936aep0,
+    0x1.fffffffffffffp4, 0x1.fffffffffffffp-6
+  },
+  { // Entry 432
+    0x1.1d4873168b9aa739096362f6285cb516p0,
+    0x1.fffffffffffffp4, 0x1.0p-5
+  },
+  { // Entry 433
+    0x1.1d4873168b9aa92764fabfbf32263462p0,
+    0x1.fffffffffffffp4, 0x1.0000000000001p-5
+  },
+  { // Entry 434
+    0x1.1d4873168b9aa6892db47a348a21b2c7p0,
+    0x1.0p5, 0x1.fffffffffffffp-6
+  },
+  { // Entry 435
+    0x1.1d4873168b9aa7805b8028990f07a98bp0,
+    0x1.0p5, 0x1.0p-5
+  },
+  { // Entry 436
+    0x1.1d4873168b9aa96eb717856218d61990p0,
+    0x1.0p5, 0x1.0000000000001p-5
+  },
+  { // Entry 437
+    0x1.1d4873168b9aa717d1ee057a576c30c4p0,
+    0x1.0000000000001p5, 0x1.fffffffffffffp-6
+  },
+  { // Entry 438
+    0x1.1d4873168b9aa80effb9b3dedc571840p0,
+    0x1.0000000000001p5, 0x1.0p-5
+  },
+  { // Entry 439
+    0x1.1d4873168b9aa9fd5b5110a7e62f69b6p0,
+    0x1.0000000000001p5, 0x1.0000000000001p-5
+  },
+  { // Entry 440
+    0x1.11301d0125b5099e90ea43d6599ee2bbp0,
+    0x1.fffffffffffffp5, 0x1.fffffffffffffp-7
+  },
+  { // Entry 441
+    0x1.11301d0125b50a2c95ee0eb47aeb1a78p0,
+    0x1.fffffffffffffp5, 0x1.0p-6
+  },
+  { // Entry 442
+    0x1.11301d0125b50b489ff5a470bd846771p0,
+    0x1.fffffffffffffp5, 0x1.0000000000001p-6
+  },
+  { // Entry 443
+    0x1.11301d0125b509c0b6ede3fb103f9017p0,
+    0x1.0p6, 0x1.fffffffffffffp-7
+  },
+  { // Entry 444
+    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
+    0x1.0p6, 0x1.0p-6
+  },
+  { // Entry 445
+    0x1.11301d0125b50b6ac5f9449574287d9fp0,
+    0x1.0p6, 0x1.0000000000001p-6
+  },
+  { // Entry 446
+    0x1.11301d0125b50a0502f524447d7dc40ep0,
+    0x1.0000000000001p6, 0x1.fffffffffffffp-7
+  },
+  { // Entry 447
+    0x1.11301d0125b50a9307f8ef229ecd649ep0,
+    0x1.0000000000001p6, 0x1.0p-6
+  },
+  { // Entry 448
+    0x1.11301d0125b50baf120084dee16d833bp0,
+    0x1.0000000000001p6, 0x1.0000000000001p-6
+  },
+  { // Entry 449
+    0x1.ffffffffff2746f4041746255c99e90bp1023,
+    0x1.ffffffffffffep0, 0x1.ffffffffffffep9
+  },
+  { // Entry 450
+    0x1.ffffffffff53a37a020ba924b26cfc59p1023,
+    0x1.ffffffffffffep0, 0x1.fffffffffffffp9
+  },
+  { // Entry 451
+    0x1.ffffffffff80000000000ffbfffffffep1023,
+    0x1.ffffffffffffep0, 0x1.0p10
+  },
+  { // Entry 452
+    0x1.ffffffffffd8b90bfbe8e9328265d851p1023,
+    0x1.ffffffffffffep0, 0x1.0000000000001p10
+  },
+  { // Entry 453
+    HUGE_VAL,
+    0x1.ffffffffffffep0, 0x1.0000000000002p10
+  },
+  { // Entry 454
+    0x1.ffffffffff6746f404172f0d3b1a6bf2p1023,
+    0x1.fffffffffffffp0, 0x1.ffffffffffffep9
+  },
+  { // Entry 455
+    0x1.ffffffffff93a37a020b979a21ad3dcdp1023,
+    0x1.fffffffffffffp0, 0x1.fffffffffffffp9
+  },
+  { // Entry 456
+    0x1.ffffffffffc00000000003feffffffffp1023,
+    0x1.fffffffffffffp0, 0x1.0p10
+  },
+  { // Entry 457
+    HUGE_VAL,
+    0x1.fffffffffffffp0, 0x1.0000000000001p10
+  },
+  { // Entry 458
+    HUGE_VAL,
+    0x1.fffffffffffffp0, 0x1.0000000000002p10
+  },
+  { // Entry 459
+    0x1.ffffffffffa746f404171ff3199aeed7p1023,
+    0x1.0p1, 0x1.ffffffffffffep9
+  },
+  { // Entry 460
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp1023,
+    0x1.0p1, 0x1.fffffffffffffp9
+  },
+  { // Entry 461
+    HUGE_VAL,
+    0x1.0p1, 0x1.0p10
+  },
+  { // Entry 462
+    HUGE_VAL,
+    0x1.0p1, 0x1.0000000000001p10
+  },
+  { // Entry 463
+    HUGE_VAL,
+    0x1.0p1, 0x1.0000000000002p10
+  },
+  { // Entry 464
+    HUGE_VAL,
+    0x1.0000000000001p1, 0x1.ffffffffffffep9
+  },
+  { // Entry 465
+    HUGE_VAL,
+    0x1.0000000000001p1, 0x1.fffffffffffffp9
+  },
+  { // Entry 466
+    HUGE_VAL,
+    0x1.0000000000001p1, 0x1.0p10
+  },
+  { // Entry 467
+    HUGE_VAL,
+    0x1.0000000000001p1, 0x1.0000000000001p10
+  },
+  { // Entry 468
+    HUGE_VAL,
+    0x1.0000000000001p1, 0x1.0000000000002p10
+  },
+  { // Entry 469
+    HUGE_VAL,
+    0x1.0000000000002p1, 0x1.ffffffffffffep9
+  },
+  { // Entry 470
+    HUGE_VAL,
+    0x1.0000000000002p1, 0x1.fffffffffffffp9
+  },
+  { // Entry 471
+    HUGE_VAL,
+    0x1.0000000000002p1, 0x1.0p10
+  },
+  { // Entry 472
+    HUGE_VAL,
+    0x1.0000000000002p1, 0x1.0000000000001p10
+  },
+  { // Entry 473
+    HUGE_VAL,
+    0x1.0000000000002p1, 0x1.0000000000002p10
+  },
+  { // Entry 474
+    0.0,
+    0x1.ffffffffffffep0, -0x1.0cc0000000002p10
+  },
+  { // Entry 475
+    0.0,
+    0x1.ffffffffffffep0, -0x1.0cc0000000001p10
+  },
+  { // Entry 476
+    0.0,
+    0x1.ffffffffffffep0, -0x1.0ccp10
+  },
+  { // Entry 477
+    0.0,
+    0x1.ffffffffffffep0, -0x1.0cbffffffffffp10
+  },
+  { // Entry 478
+    0.0,
+    0x1.ffffffffffffep0, -0x1.0cbfffffffffep10
+  },
+  { // Entry 479
+    0.0,
+    0x1.fffffffffffffp0, -0x1.0cc0000000002p10
+  },
+  { // Entry 480
+    0.0,
+    0x1.fffffffffffffp0, -0x1.0cc0000000001p10
+  },
+  { // Entry 481
+    0.0,
+    0x1.fffffffffffffp0, -0x1.0ccp10
+  },
+  { // Entry 482
+    0.0,
+    0x1.fffffffffffffp0, -0x1.0cbffffffffffp10
+  },
+  { // Entry 483
+    0.0,
+    0x1.fffffffffffffp0, -0x1.0cbfffffffffep10
+  },
+  { // Entry 484
+    0.0,
+    0x1.0p1, -0x1.0cc0000000002p10
+  },
+  { // Entry 485
+    0.0,
+    0x1.0p1, -0x1.0cc0000000001p10
+  },
+  { // Entry 486
+    0.0,
+    0x1.0p1, -0x1.0ccp10
+  },
+  { // Entry 487
+    0.0,
+    0x1.0p1, -0x1.0cbffffffffffp10
+  },
+  { // Entry 488
+    0.0,
+    0x1.0p1, -0x1.0cbfffffffffep10
+  },
+  { // Entry 489
+    0.0,
+    0x1.0000000000001p1, -0x1.0cc0000000002p10
+  },
+  { // Entry 490
+    0.0,
+    0x1.0000000000001p1, -0x1.0cc0000000001p10
+  },
+  { // Entry 491
+    0.0,
+    0x1.0000000000001p1, -0x1.0ccp10
+  },
+  { // Entry 492
+    0.0,
+    0x1.0000000000001p1, -0x1.0cbffffffffffp10
+  },
+  { // Entry 493
+    0.0,
+    0x1.0000000000001p1, -0x1.0cbfffffffffep10
+  },
+  { // Entry 494
+    0.0,
+    0x1.0000000000002p1, -0x1.0cc0000000002p10
+  },
+  { // Entry 495
+    0.0,
+    0x1.0000000000002p1, -0x1.0cc0000000001p10
+  },
+  { // Entry 496
+    0.0,
+    0x1.0000000000002p1, -0x1.0ccp10
+  },
+  { // Entry 497
+    0.0,
+    0x1.0000000000002p1, -0x1.0cbffffffffffp10
+  },
+  { // Entry 498
+    0.0,
+    0x1.0000000000002p1, -0x1.0cbfffffffffep10
+  },
+  { // Entry 499
+    0x1.a82e14690252e5ea2cfa30b25e947cedp-500,
+    0x1.db6db6db6db70p-2, 0x1.c30c30c30c2fep8
+  },
+  { // Entry 500
+    0x1.a82e1469023e8ea567883fcd2742e4b7p-500,
+    0x1.db6db6db6db70p-2, 0x1.c30c30c30c2ffp8
+  },
+  { // Entry 501
+    0x1.a82e1469022a3760a2164fe1a4cd3aa2p-500,
+    0x1.db6db6db6db70p-2, 0x1.c30c30c30c3p8
+  },
+  { // Entry 502
+    0x1.a82e14690215e01bdca460efd7337eaep-500,
+    0x1.db6db6db6db70p-2, 0x1.c30c30c30c301p8
+  },
+  { // Entry 503
+    0x1.a82e1469020188d7173272f7be75b0dcp-500,
+    0x1.db6db6db6db70p-2, 0x1.c30c30c30c302p8
+  },
+  { // Entry 504
+    0x1.a82e1469026c0cbfe6135b38e76d3a47p-500,
+    0x1.db6db6db6db71p-2, 0x1.c30c30c30c2fep8
+  },
+  { // Entry 505
+    0x1.a82e14690257b57b20a1691fd0d853d6p-500,
+    0x1.db6db6db6db71p-2, 0x1.c30c30c30c2ffp8
+  },
+  { // Entry 506
+    0x1.a82e146902435e365b2f78006f1f5b87p-500,
+    0x1.db6db6db6db71p-2, 0x1.c30c30c30c3p8
+  },
+  { // Entry 507
+    0x1.a82e1469022f06f195bd87dac2425159p-500,
+    0x1.db6db6db6db71p-2, 0x1.c30c30c30c301p8
+  },
+  { // Entry 508
+    0x1.a82e1469021aafacd04b98aeca41354dp-500,
+    0x1.db6db6db6db71p-2, 0x1.c30c30c30c302p8
+  },
+  { // Entry 509
+    0x1.a82e1469028533959f2c873c61cafb18p-500,
+    0x1.db6db6db6db72p-2, 0x1.c30c30c30c2fep8
+  },
+  { // Entry 510
+    0x1.a82e14690270dc50d9ba93ef6bf2c66dp-500,
+    0x1.db6db6db6db72p-2, 0x1.c30c30c30c2ffp8
+  },
+  { // Entry 511
+    0x1.a82e1469025c850c1448a19c2af67fe4p-500,
+    0x1.db6db6db6db72p-2, 0x1.c30c30c30c3p8
+  },
+  { // Entry 512
+    0x1.a82e146902482dc74ed6b0429ed6277cp-500,
+    0x1.db6db6db6db72p-2, 0x1.c30c30c30c301p8
+  },
+  { // Entry 513
+    0x1.a82e14690233d6828964bfe2c791bd35p-500,
+    0x1.db6db6db6db72p-2, 0x1.c30c30c30c302p8
+  },
+  { // Entry 514
+    0x1.a82e1469029e5a6b5845b4bccdadbf62p-500,
+    0x1.db6db6db6db73p-2, 0x1.c30c30c30c2fep8
+  },
+  { // Entry 515
+    0x1.a82e1469028a032692d3c03bf8923c7cp-500,
+    0x1.db6db6db6db73p-2, 0x1.c30c30c30c2ffp8
+  },
+  { // Entry 516
+    0x1.a82e14690275abe1cd61ccb4d852a7b9p-500,
+    0x1.db6db6db6db73p-2, 0x1.c30c30c30c3p8
+  },
+  { // Entry 517
+    0x1.a82e14690261549d07efda276cef0116p-500,
+    0x1.db6db6db6db73p-2, 0x1.c30c30c30c301p8
+  },
+  { // Entry 518
+    0x1.a82e1469024cfd58427de893b6674895p-500,
+    0x1.db6db6db6db73p-2, 0x1.c30c30c30c302p8
+  },
+  { // Entry 519
+    0x1.a82e146902b78141115ee3ba2b158723p-500,
+    0x1.db6db6db6db74p-2, 0x1.c30c30c30c2fep8
+  },
+  { // Entry 520
+    0x1.a82e146902a329fc4becee0576b6b603p-500,
+    0x1.db6db6db6db74p-2, 0x1.c30c30c30c2ffp8
+  },
+  { // Entry 521
+    0x1.a82e1469028ed2b7867af94a7733d305p-500,
+    0x1.db6db6db6db74p-2, 0x1.c30c30c30c3p8
+  },
+  { // Entry 522
+    0x1.a82e1469027a7b72c10905892c8cde29p-500,
+    0x1.db6db6db6db74p-2, 0x1.c30c30c30c301p8
+  },
+  { // Entry 523
+    0x1.a82e14690266242dfb9712c196c1d76dp-500,
+    0x1.db6db6db6db74p-2, 0x1.c30c30c30c302p8
+  },
+  { // Entry 524
+    -0x1.ffffffffffffe0000000000001ffffffp-1,
+    -0x1.0000000000001p0, -0x1.0p0
+  },
+  { // Entry 525
+    -0x1.p0,
+    -0x1.0p0, -0x1.0p0
+  },
+  { // Entry 526
+    -0x1.0000000000000800000000000040p0,
+    -0x1.fffffffffffffp-1, -0x1.0p0
+  },
+  { // Entry 527
+    HUGE_VAL,
+    0x1.0p1, 0x1.0p10
+  },
+  { // Entry 528
+    HUGE_VAL,
+    0x1.0p2, 0x1.0p9
+  },
+  { // Entry 529
+    0x1.ffffffffffec5c85fdf4743fd612b28ap-1025,
+    0x1.fffffffffffffp-2, 0x1.fffffffffffffp9
+  },
+  { // Entry 530
+    0x1.ffffffffffc00000000003feffffffffp-1025,
+    0x1.fffffffffffffp-2, 0x1.0p10
+  },
+  { // Entry 531
+    0x1.ffffffffff6746f404172f053b1a6bf2p-1025,
+    0x1.fffffffffffffp-2, 0x1.0000000000001p10
+  },
+  { // Entry 532
+    0x1.0000000000162e42fefa3ae53369388cp-1024,
+    0x1.0p-1, 0x1.fffffffffffffp9
+  },
+  { // Entry 533
+    0x1.p-1024,
+    0x1.0p-1, 0x1.0p10
+  },
+  { // Entry 534
+    0x1.ffffffffffa746f404171ff3199aeed7p-1025,
+    0x1.0p-1, 0x1.0000000000001p10
+  },
+  { // Entry 535
+    0x1.0000000000562e42fefa486cc428f71cp-1024,
+    0x1.0000000000001p-1, 0x1.fffffffffffffp9
+  },
+  { // Entry 536
+    0x1.0000000000400000000007fep-1024,
+    0x1.0000000000001p-1, 0x1.0p10
+  },
+  { // Entry 537
+    0x1.000000000013a37a020b8ce46b4dfa4ep-1024,
+    0x1.0000000000001p-1, 0x1.0000000000001p10
+  },
+  { // Entry 538
+    0x1.000000000074519a5623533df8dcd353p-1074,
+    0x1.0p-1074, 0x1.ffffffffffffbp-1
+  },
+  { // Entry 539
+    0x1.00000000005d0e1511b5d7f72c61368ap-1074,
+    0x1.0p-1074, 0x1.ffffffffffffcp-1
+  },
+  { // Entry 540
+    0x1.000000000045ca8fcd485ecd93a6ec9dp-1074,
+    0x1.0p-1074, 0x1.ffffffffffffdp-1
+  },
+  { // Entry 541
+    0x1.00000000002e870a88dae7c12eadf58cp-1074,
+    0x1.0p-1074, 0x1.ffffffffffffep-1
+  },
+  { // Entry 542
+    0x1.0000000000174385446d72d1fd765158p-1074,
+    0x1.0p-1074, 0x1.fffffffffffffp-1
+  },
+  { // Entry 543
+    0x1.p-1074,
+    0x1.0p-1074, 0x1.0p0
+  },
+  { // Entry 544
+    0.0,
+    0x1.0p-1074, 0x1.0000000000001p0
+  },
+  { // Entry 545
+    0.0,
+    0x1.0p-1074, 0x1.0000000000002p0
+  },
+  { // Entry 546
+    0.0,
+    0x1.0p-1074, 0x1.0000000000003p0
+  },
+  { // Entry 547
+    0.0,
+    0x1.0p-1074, 0x1.0000000000004p0
+  },
+  { // Entry 548
+    0.0,
+    0x1.0p-1074, 0x1.0000000000005p0
+  },
+  { // Entry 549
+    0x1.00000000007435e082649a68f64fe306p-1073,
+    0x1.0p-1073, 0x1.ffffffffffffbp-1
+  },
+  { // Entry 550
+    0x1.00000000005cf7e6ceb6ddb52e1b099ep-1073,
+    0x1.0p-1073, 0x1.ffffffffffffcp-1
+  },
+  { // Entry 551
+    0x1.000000000045b9ed1b09231d97c56c9dp-1073,
+    0x1.0p-1073, 0x1.ffffffffffffdp-1
+  },
+  { // Entry 552
+    0x1.00000000002e7bf3675b6aa2334f0c02p-1073,
+    0x1.0p-1073, 0x1.ffffffffffffep-1
+  },
+  { // Entry 553
+    0x1.0000000000173df9b3adb44300b7e7cep-1073,
+    0x1.0p-1073, 0x1.fffffffffffffp-1
+  },
+  { // Entry 554
+    0x1.p-1073,
+    0x1.0p-1073, 0x1.0p0
+  },
+  { // Entry 555
+    0x1.ffffffffffa3081931493b9d285bcb2bp-1074,
+    0x1.0p-1073, 0x1.0000000000001p0
+  },
+  { // Entry 556
+    0x1.ffffffffff4610326292881bdfb17983p-1074,
+    0x1.0p-1073, 0x1.0000000000002p0
+  },
+  { // Entry 557
+    0x1.fffffffffee9184b93dbe57c26010b04p-1074,
+    0x1.0p-1073, 0x1.0000000000003p0
+  },
+  { // Entry 558
+    0x1.fffffffffe8c2064c52553bdfb4a7fadp-1074,
+    0x1.0p-1073, 0x1.0000000000004p0
+  },
+  { // Entry 559
+    0x1.fffffffffe2f287df66ed2e15f8dd77ap-1074,
+    0x1.0p-1073, 0x1.0000000000005p0
+  },
+  { // Entry 560
+    0x1.8000000000ae387cd1e8f3f39fe157f9p-1073,
+    0x1.8p-1073, 0x1.ffffffffffffbp-1
+  },
+  { // Entry 561
+    0x1.80000000008b6063db20bcd67b4f5ba5p-1073,
+    0x1.8p-1073, 0x1.ffffffffffffcp-1
+  },
+  { // Entry 562
+    0x1.800000000068884ae45888e2bf6fd4afp-1073,
+    0x1.8p-1073, 0x1.ffffffffffffdp-1
+  },
+  { // Entry 563
+    0x1.800000000045b031ed9058186c42c317p-1073,
+    0x1.8p-1073, 0x1.ffffffffffffep-1
+  },
+  { // Entry 564
+    0x1.800000000022d818f6c82a7781c826dcp-1073,
+    0x1.8p-1073, 0x1.fffffffffffffp-1
+  },
+  { // Entry 565
+    0x1.80p-1073,
+    0x1.8p-1073, 0x1.0p0
+  },
+  { // Entry 566
+    0x1.7fffffffffba4fce126fb48d3687125dp-1073,
+    0x1.8p-1073, 0x1.0000000000001p0
+  },
+  { // Entry 567
+    0x1.7fffffffff749f9c24df75c00fd7fa2ep-1073,
+    0x1.8p-1073, 0x1.0000000000002p0
+  },
+  { // Entry 568
+    0x1.7fffffffff2eef6a374f43988bf2b76ep-1073,
+    0x1.8p-1073, 0x1.0000000000003p0
+  },
+  { // Entry 569
+    0x1.7ffffffffee93f3849bf1e16aad74a1dp-1073,
+    0x1.8p-1073, 0x1.0000000000004p0
+  },
+  { // Entry 570
+    0x1.7ffffffffea38f065c2f053a6c85b237p-1073,
+    0x1.8p-1073, 0x1.0000000000005p0
+  },
+  { // Entry 571
+    0x1.000000a0cf65eb1817a7095d9a0443a7p0,
+    0x1.0p-29, -0x1.0p-29
+  },
+  { // Entry 572
+    0x1.ffffff5f309a60aad5c2309f81f90defp-1,
+    0x1.0p-29, 0x1.0p-30
+  },
+  { // Entry 573
+    0x1.fffffd9e07cf07767a55afbe9acae93ep-1,
+    0x1.0p55, -0x1.0p-29
+  },
+  { // Entry 574
+    0x1.000000987e0cc66344d89b494e1f43b3p0,
+    0x1.0p55, 0x1.0p-30
+  },
+  { // Entry 575
+    0x1.fffffd669427cf159515873887c17cf2p-1,
+    0x1.0p60, -0x1.0p-29
+  },
+  { // Entry 576
+    0x1.000000a65af6ae61be88ea2558790cd7p0,
+    0x1.0p60, 0x1.0p-30
+  },
+  { // Entry 577
+    0x1.fffffffffe0000000000fff7ffffffaap-1,
+    0x1.fffffffffffffp-1, 0x1.0p13
+  },
+  { // Entry 578
+    0x1.fffffffff0000000003fffbfffff5557p-1,
+    0x1.fffffffffffffp-1, 0x1.0p16
+  },
+  { // Entry 579
+    0x1.p0,
+    0x1.0p0, 0x1.0p13
+  },
+  { // Entry 580
+    0x1.p0,
+    0x1.0p0, 0x1.0p16
+  },
+  { // Entry 581
+    0x1.00000000020000000001fff000000155p0,
+    0x1.0000000000001p0, 0x1.0p13
+  },
+  { // Entry 582
+    0x1.0000000010000000007fff800002aaa2p0,
+    0x1.0000000000001p0, 0x1.0p16
+  },
+  { // Entry 583
+    0x1.ffffffc0000004000001d5555516aaaap-1,
+    -0x1.0000000000001p0, -0x1.0p25
+  },
+  { // Entry 584
+    0x1.fffffe000000ffffffbaaaaab0000003p-1,
+    -0x1.0000000000001p0, -0x1.0p28
+  },
+  { // Entry 585
+    0x1.p0,
+    -0x1.0p0, -0x1.0p25
+  },
+  { // Entry 586
+    0x1.p0,
+    -0x1.0p0, -0x1.0p28
+  },
+  { // Entry 587
+    0x1.0000001000000080000042aaaaaeb555p0,
+    -0x1.fffffffffffffp-1, -0x1.0p25
+  },
+  { // Entry 588
+    0x1.00000080000020000007555557p0,
+    -0x1.fffffffffffffp-1, -0x1.0p28
+  },
+  { // Entry 589
+    0x1.368b2fc6f960a4c1d9aa628fe3f13fffp-1,
+    -0x1.0000000000001p0, -0x1.0p51
+  },
+  { // Entry 590
+    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
+    -0x1.0000000000001p0, -0x1.0p55
+  },
+  { // Entry 591
+    0x1.p0,
+    -0x1.0p0, -0x1.0p51
+  },
+  { // Entry 592
+    0x1.p0,
+    -0x1.0p0, -0x1.0p55
+  },
+  { // Entry 593
+    0x1.48b5e3c3e81867bf31a77a83c32c4744p0,
+    -0x1.fffffffffffffp-1, -0x1.0p51
+  },
+  { // Entry 594
+    0x1.b4c902e273a5a1c56701e715edaf2115p5,
+    -0x1.fffffffffffffp-1, -0x1.0p55
+  },
+  { // Entry 595
+    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
+    -0x1.0000000000001p0, -0x1.0p55
+  },
+  { // Entry 596
+    0x1.969d47321e4fe7f9bb8c43a5e486b9aep-93,
+    -0x1.0000000000001p0, -0x1.0p58
+  },
+  { // Entry 597
+    0x1.p0,
+    -0x1.0p0, -0x1.0p55
+  },
+  { // Entry 598
+    0x1.p0,
+    -0x1.0p0, -0x1.0p58
+  },
+  { // Entry 599
+    0x1.b4c902e273a5a1c56701e715edaf2115p5,
+    -0x1.fffffffffffffp-1, -0x1.0p55
+  },
+  { // Entry 600
+    0x1.1f43fcc4b663577a45ea9b49cce9ee73p46,
+    -0x1.fffffffffffffp-1, -0x1.0p58
+  },
+  { // Entry 601
+    0x1.44109edb20a756ad767d2515c94a003ap-739,
+    -0x1.0000000000001p0, -0x1.0p61
+  },
+  { // Entry 602
+    0.0,
+    -0x1.0000000000001p0, -0x1.0p64
+  },
+  { // Entry 603
+    0x1.p0,
+    -0x1.0p0, -0x1.0p61
+  },
+  { // Entry 604
+    0x1.p0,
+    -0x1.0p0, -0x1.0p64
+  },
+  { // Entry 605
+    0x1.41c7a8814bf0a801c5353f302a40cc7fp369,
+    -0x1.fffffffffffffp-1, -0x1.0p61
+  },
+  { // Entry 606
+    HUGE_VAL,
+    -0x1.fffffffffffffp-1, -0x1.0p64
+  },
+  { // Entry 607
+    0x1.0000001000000080000042aaaaaeb555p0,
+    0x1.fffffffffffffp-1, -0x1.0p25
+  },
+  { // Entry 608
+    0x1.00000080000020000007555557p0,
+    0x1.fffffffffffffp-1, -0x1.0p28
+  },
+  { // Entry 609
+    0x1.p0,
+    0x1.0p0, -0x1.0p25
+  },
+  { // Entry 610
+    0x1.p0,
+    0x1.0p0, -0x1.0p28
+  },
+  { // Entry 611
+    0x1.ffffffc0000004000001d5555516aaaap-1,
+    0x1.0000000000001p0, -0x1.0p25
+  },
+  { // Entry 612
+    0x1.fffffe000000ffffffbaaaaab0000003p-1,
+    0x1.0000000000001p0, -0x1.0p28
+  },
+  { // Entry 613
+    0x1.48b5e3c3e81867bf31a77a83c32c4744p0,
+    0x1.fffffffffffffp-1, -0x1.0p51
+  },
+  { // Entry 614
+    0x1.b4c902e273a5a1c56701e715edaf2115p5,
+    0x1.fffffffffffffp-1, -0x1.0p55
+  },
+  { // Entry 615
+    0x1.p0,
+    0x1.0p0, -0x1.0p51
+  },
+  { // Entry 616
+    0x1.p0,
+    0x1.0p0, -0x1.0p55
+  },
+  { // Entry 617
+    0x1.368b2fc6f960a4c1d9aa628fe3f13fffp-1,
+    0x1.0000000000001p0, -0x1.0p51
+  },
+  { // Entry 618
+    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
+    0x1.0000000000001p0, -0x1.0p55
+  },
+  { // Entry 619
+    0x1.b4c902e273a5a1c56701e715edaf2115p5,
+    0x1.fffffffffffffp-1, -0x1.0p55
+  },
+  { // Entry 620
+    0x1.1f43fcc4b663577a45ea9b49cce9ee73p46,
+    0x1.fffffffffffffp-1, -0x1.0p58
+  },
+  { // Entry 621
+    0x1.p0,
+    0x1.0p0, -0x1.0p55
+  },
+  { // Entry 622
+    0x1.p0,
+    0x1.0p0, -0x1.0p58
+  },
+  { // Entry 623
+    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
+    0x1.0000000000001p0, -0x1.0p55
+  },
+  { // Entry 624
+    0x1.969d47321e4fe7f9bb8c43a5e486b9aep-93,
+    0x1.0000000000001p0, -0x1.0p58
+  },
+  { // Entry 625
+    0x1.41c7a8814bf0a801c5353f302a40cc7fp369,
+    0x1.fffffffffffffp-1, -0x1.0p61
+  },
+  { // Entry 626
+    HUGE_VAL,
+    0x1.fffffffffffffp-1, -0x1.0p64
+  },
+  { // Entry 627
+    0x1.p0,
+    0x1.0p0, -0x1.0p61
+  },
+  { // Entry 628
+    0x1.p0,
+    0x1.0p0, -0x1.0p64
+  },
+  { // Entry 629
+    0x1.44109edb20a756ad767d2515c94a003ap-739,
+    0x1.0000000000001p0, -0x1.0p61
+  },
+  { // Entry 630
+    0.0,
+    0x1.0000000000001p0, -0x1.0p64
+  },
+  { // Entry 631
+    HUGE_VAL,
+    -0x1.0p15, 0x1.0p63
+  },
+  { // Entry 632
+    HUGE_VAL,
+    0.0, -0x1.8p1
+  },
+  { // Entry 633
+    -HUGE_VAL,
+    -0.0, -0x1.8p1
+  },
+  { // Entry 634
+    HUGE_VAL,
+    0.0, -0x1.0p0
+  },
+  { // Entry 635
+    -HUGE_VAL,
+    -0.0, -0x1.0p0
+  },
+  { // Entry 636
+    HUGE_VAL,
+    0.0, -0x1.fffffffffffffp1023
+  },
+  { // Entry 637
+    HUGE_VAL,
+    0.0, -0x1.8p2
+  },
+  { // Entry 638
+    HUGE_VAL,
+    0.0, -0x1.0p1
+  },
+  { // Entry 639
+    HUGE_VAL,
+    0.0, -0x1.0000000000001p0
+  },
+  { // Entry 640
+    HUGE_VAL,
+    0.0, -0x1.fffffffffffffp-1
+  },
+  { // Entry 641
+    HUGE_VAL,
+    0.0, -0x1.0p-1022
+  },
+  { // Entry 642
+    HUGE_VAL,
+    0.0, -0x1.0p-1074
+  },
+  { // Entry 643
+    HUGE_VAL,
+    -0.0, -0x1.fffffffffffffp1023
+  },
+  { // Entry 644
+    HUGE_VAL,
+    -0.0, -0x1.8p2
+  },
+  { // Entry 645
+    HUGE_VAL,
+    -0.0, -0x1.0p1
+  },
+  { // Entry 646
+    HUGE_VAL,
+    -0.0, -0x1.0000000000001p0
+  },
+  { // Entry 647
+    HUGE_VAL,
+    -0.0, -0x1.fffffffffffffp-1
+  },
+  { // Entry 648
+    HUGE_VAL,
+    -0.0, -0x1.0p-1022
+  },
+  { // Entry 649
+    HUGE_VAL,
+    -0.0, -0x1.0p-1074
+  },
+  { // Entry 650
+    HUGE_VAL,
+    0.0, -HUGE_VAL
+  },
+  { // Entry 651
+    HUGE_VAL,
+    -0.0, -HUGE_VAL
+  },
+  { // Entry 652
+    0.0,
+    0.0, 0x1.8p1
+  },
+  { // Entry 653
+    -0.0,
+    -0.0, 0x1.8p1
+  },
+  { // Entry 654
+    0.0,
+    0.0, 0x1.0p0
+  },
+  { // Entry 655
+    -0.0,
+    -0.0, 0x1.0p0
+  },
+  { // Entry 656
+    0.0,
+    0.0, HUGE_VAL
+  },
+  { // Entry 657
+    0.0,
+    0.0, 0x1.fffffffffffffp1023
+  },
+  { // Entry 658
+    0.0,
+    0.0, 0x1.8p2
+  },
+  { // Entry 659
+    0.0,
+    0.0, 0x1.0p1
+  },
+  { // Entry 660
+    0.0,
+    0.0, 0x1.0000000000001p0
+  },
+  { // Entry 661
+    0.0,
+    0.0, 0x1.fffffffffffffp-1
+  },
+  { // Entry 662
+    0.0,
+    0.0, 0x1.0p-1022
+  },
+  { // Entry 663
+    0.0,
+    0.0, 0x1.0p-1074
+  },
+  { // Entry 664
+    0.0,
+    -0.0, HUGE_VAL
+  },
+  { // Entry 665
+    0.0,
+    -0.0, 0x1.fffffffffffffp1023
+  },
+  { // Entry 666
+    0.0,
+    -0.0, 0x1.8p2
+  },
+  { // Entry 667
+    0.0,
+    -0.0, 0x1.0p1
+  },
+  { // Entry 668
+    0.0,
+    -0.0, 0x1.0000000000001p0
+  },
+  { // Entry 669
+    0.0,
+    -0.0, 0x1.fffffffffffffp-1
+  },
+  { // Entry 670
+    0.0,
+    -0.0, 0x1.0p-1022
+  },
+  { // Entry 671
+    0.0,
+    -0.0, 0x1.0p-1074
+  },
+  { // Entry 672
+    0x1.p0,
+    -0x1.0p0, HUGE_VAL
+  },
+  { // Entry 673
+    0x1.p0,
+    -0x1.0p0, -HUGE_VAL
+  },
+  { // Entry 674
+    0x1.p0,
+    0x1.0p0, HUGE_VAL
+  },
+  { // Entry 675
+    0x1.p0,
+    0x1.0p0, -HUGE_VAL
+  },
+  { // Entry 676
+    0x1.p0,
+    0x1.0p0, 0x1.fffffffffffffp1023
+  },
+  { // Entry 677
+    0x1.p0,
+    0x1.0p0, -0x1.fffffffffffffp1023
+  },
+  { // Entry 678
+    0x1.p0,
+    -0x1.0p0, 0x1.fffffffffffffp1023
+  },
+  { // Entry 679
+    0x1.p0,
+    -0x1.0p0, -0x1.fffffffffffffp1023
+  },
+  { // Entry 680
+    0x1.p0,
+    0x1.0p0, 0x1.0p-1
+  },
+  { // Entry 681
+    0x1.p0,
+    0x1.0p0, -0x1.0p-1
+  },
+  { // Entry 682
+    0x1.p0,
+    0x1.0p0, 0x1.0p-1022
+  },
+  { // Entry 683
+    0x1.p0,
+    0x1.0p0, -0x1.0p-1022
+  },
+  { // Entry 684
+    0x1.p0,
+    0x1.0p0, 0x1.ffffffffffffep-1023
+  },
+  { // Entry 685
+    0x1.p0,
+    0x1.0p0, -0x1.ffffffffffffep-1023
+  },
+  { // Entry 686
+    0x1.p0,
+    0x1.0p0, 0x1.0p-1074
+  },
+  { // Entry 687
+    0x1.p0,
+    0x1.0p0, -0x1.0p-1074
+  },
+  { // Entry 688
+    0x1.p0,
+    0x1.0p0, 0.0
+  },
+  { // Entry 689
+    0x1.p0,
+    0x1.0p0, -0.0
+  },
+  { // Entry 690
+    0x1.p0,
+    HUGE_VAL, 0.0
+  },
+  { // Entry 691
+    0x1.p0,
+    HUGE_VAL, -0.0
+  },
+  { // Entry 692
+    0x1.p0,
+    0x1.fffffffffffffp1023, 0.0
+  },
+  { // Entry 693
+    0x1.p0,
+    0x1.fffffffffffffp1023, -0.0
+  },
+  { // Entry 694
+    0x1.p0,
+    0x1.0p-1022, 0.0
+  },
+  { // Entry 695
+    0x1.p0,
+    0x1.0p-1022, -0.0
+  },
+  { // Entry 696
+    0x1.p0,
+    0x1.0p-1074, 0.0
+  },
+  { // Entry 697
+    0x1.p0,
+    0x1.0p-1074, -0.0
+  },
+  { // Entry 698
+    0x1.p0,
+    0.0, 0.0
+  },
+  { // Entry 699
+    0x1.p0,
+    0.0, -0.0
+  },
+  { // Entry 700
+    0x1.p0,
+    -0.0, 0.0
+  },
+  { // Entry 701
+    0x1.p0,
+    -0.0, -0.0
+  },
+  { // Entry 702
+    0x1.p0,
+    -0x1.0p-1074, 0.0
+  },
+  { // Entry 703
+    0x1.p0,
+    -0x1.0p-1074, -0.0
+  },
+  { // Entry 704
+    0x1.p0,
+    -0x1.0p-1022, 0.0
+  },
+  { // Entry 705
+    0x1.p0,
+    -0x1.0p-1022, -0.0
+  },
+  { // Entry 706
+    0x1.p0,
+    -0x1.fffffffffffffp1023, 0.0
+  },
+  { // Entry 707
+    0x1.p0,
+    -0x1.fffffffffffffp1023, -0.0
+  },
+  { // Entry 708
+    0x1.p0,
+    -HUGE_VAL, 0.0
+  },
+  { // Entry 709
+    0x1.p0,
+    -HUGE_VAL, -0.0
+  },
+  { // Entry 710
+    HUGE_VAL,
+    0x1.0p-1022, -HUGE_VAL
+  },
+  { // Entry 711
+    HUGE_VAL,
+    0x1.0p-1074, -HUGE_VAL
+  },
+  { // Entry 712
+    HUGE_VAL,
+    -0x1.0p-1074, -HUGE_VAL
+  },
+  { // Entry 713
+    HUGE_VAL,
+    -0x1.0p-1022, -HUGE_VAL
+  },
+  { // Entry 714
+    0.0,
+    HUGE_VAL, -HUGE_VAL
+  },
+  { // Entry 715
+    0.0,
+    0x1.fffffffffffffp1023, -HUGE_VAL
+  },
+  { // Entry 716
+    0.0,
+    0x1.8p0, -HUGE_VAL
+  },
+  { // Entry 717
+    0.0,
+    -0x1.8p0, -HUGE_VAL
+  },
+  { // Entry 718
+    0.0,
+    -0x1.fffffffffffffp1023, -HUGE_VAL
+  },
+  { // Entry 719
+    0.0,
+    -HUGE_VAL, -HUGE_VAL
+  },
+  { // Entry 720
+    0.0,
+    0x1.0p-1022, HUGE_VAL
+  },
+  { // Entry 721
+    0.0,
+    0x1.0p-1074, HUGE_VAL
+  },
+  { // Entry 722
+    0.0,
+    0.0, HUGE_VAL
+  },
+  { // Entry 723
+    0.0,
+    -0.0, HUGE_VAL
+  },
+  { // Entry 724
+    0.0,
+    -0x1.0p-1074, HUGE_VAL
+  },
+  { // Entry 725
+    0.0,
+    -0x1.0p-1022, HUGE_VAL
+  },
+  { // Entry 726
+    HUGE_VAL,
+    HUGE_VAL, HUGE_VAL
+  },
+  { // Entry 727
+    HUGE_VAL,
+    0x1.fffffffffffffp1023, HUGE_VAL
+  },
+  { // Entry 728
+    HUGE_VAL,
+    0x1.8p0, HUGE_VAL
+  },
+  { // Entry 729
+    HUGE_VAL,
+    -0x1.8p0, HUGE_VAL
+  },
+  { // Entry 730
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023, HUGE_VAL
+  },
+  { // Entry 731
+    HUGE_VAL,
+    -HUGE_VAL, HUGE_VAL
+  },
+  { // Entry 732
+    -0.0,
+    -HUGE_VAL, -0x1.8p1
+  },
+  { // Entry 733
+    -0.0,
+    -HUGE_VAL, -0x1.0p0
+  },
+  { // Entry 734
+    0.0,
+    -HUGE_VAL, -HUGE_VAL
+  },
+  { // Entry 735
+    0.0,
+    -HUGE_VAL, -0x1.921fb54442d18p1
+  },
+  { // Entry 736
+    0.0,
+    -HUGE_VAL, -0x1.921fb54442d18p0
+  },
+  { // Entry 737
+    0.0,
+    -HUGE_VAL, -0x1.fffffffffffffp1023
+  },
+  { // Entry 738
+    0.0,
+    -HUGE_VAL, -0x1.8p2
+  },
+  { // Entry 739
+    0.0,
+    -HUGE_VAL, -0x1.0p1
+  },
+  { // Entry 740
+    0.0,
+    -HUGE_VAL, -0x1.0p-1022
+  },
+  { // Entry 741
+    0.0,
+    -HUGE_VAL, -0x1.0p-1074
+  },
+  { // Entry 742
+    -HUGE_VAL,
+    -HUGE_VAL, 0x1.8p1
+  },
+  { // Entry 743
+    -HUGE_VAL,
+    -HUGE_VAL, 0x1.4p2
+  },
+  { // Entry 744
+    HUGE_VAL,
+    -HUGE_VAL, HUGE_VAL
+  },
+  { // Entry 745
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.921fb54442d18p1
+  },
+  { // Entry 746
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.921fb54442d18p0
+  },
+  { // Entry 747
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.fffffffffffffp1023
+  },
+  { // Entry 748
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.8p2
+  },
+  { // Entry 749
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.0p1
+  },
+  { // Entry 750
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.0p-1022
+  },
+  { // Entry 751
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.0p-1074
+  },
+  { // Entry 752
+    0.0,
+    HUGE_VAL, -0x1.0p-1074
+  },
+  { // Entry 753
+    0.0,
+    HUGE_VAL, -0x1.0p-1022
+  },
+  { // Entry 754
+    0.0,
+    HUGE_VAL, -0x1.fffffffffffffp1023
+  },
+  { // Entry 755
+    0.0,
+    HUGE_VAL, -HUGE_VAL
+  },
+  { // Entry 756
+    HUGE_VAL,
+    HUGE_VAL, HUGE_VAL
+  },
+  { // Entry 757
+    HUGE_VAL,
+    HUGE_VAL, 0x1.fffffffffffffp1023
+  },
+  { // Entry 758
+    HUGE_VAL,
+    HUGE_VAL, 0x1.0p-1022
+  },
+  { // Entry 759
+    HUGE_VAL,
+    HUGE_VAL, 0x1.0p-1074
+  },
+  { // Entry 760
+    HUGE_VAL,
+    0x1.fffffffffffffp1023, 0x1.fffffffffffffp1023
+  },
+  { // Entry 761
+    0.0,
+    0x1.0p-1022, 0x1.0p1
+  },
+  { // Entry 762
+    0.0,
+    -0x1.0p-1022, 0x1.0p1
+  },
+  { // Entry 763
+    0.0,
+    0x1.0p-1074, 0x1.0p1
+  },
+  { // Entry 764
+    0.0,
+    -0x1.0p-1074, 0x1.0p1
+  },
+  { // Entry 765
+    HUGE_VAL,
+    HUGE_VAL, 0x1.0p-1
+  },
+  { // Entry 766
+    0x1.fffffffffffff7ffffffffffffefffffp511,
+    0x1.fffffffffffffp1023, 0x1.0p-1
+  },
+  { // Entry 767
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.0p-1, 0x1.0p-1
+  },
+  { // Entry 768
+    0x1.p-511,
+    0x1.0p-1022, 0x1.0p-1
+  },
+  { // Entry 769
+    0x1.p-537,
+    0x1.0p-1074, 0x1.0p-1
+  },
+  { // Entry 770
+    0.0,
+    0.0, 0x1.0p-1
+  },
+  { // Entry 771
+    0.0,
+    -0.0, 0x1.0p-1
+  },
+  { // Entry 772
+    HUGE_VAL,
+    -HUGE_VAL, 0x1.0p-1
+  },
+  { // Entry 773
+    0.0,
+    HUGE_VAL, -0x1.0p-1
+  },
+  { // Entry 774
+    0x1.0000000000000400000000000018p-512,
+    0x1.fffffffffffffp1023, -0x1.0p-1
+  },
+  { // Entry 775
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p-1, -0x1.0p-1
+  },
+  { // Entry 776
+    0x1.p511,
+    0x1.0p-1022, -0x1.0p-1
+  },
+  { // Entry 777
+    0x1.p537,
+    0x1.0p-1074, -0x1.0p-1
+  },
+  { // Entry 778
+    HUGE_VAL,
+    0.0, -0x1.0p-1
+  },
+  { // Entry 779
+    HUGE_VAL,
+    -0.0, -0x1.0p-1
+  },
+  { // Entry 780
+    0.0,
+    -HUGE_VAL, -0x1.0p-1
+  },
+  { // Entry 781
+    0.0,
+    0x1.0p-1, HUGE_VAL
+  },
+  { // Entry 782
+    0.0,
+    0x1.0p-1, 0x1.fffffffffffffp1023
+  },
+  { // Entry 783
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.0p-1, 0x1.0p-1
+  },
+  { // Entry 784
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1, 0x1.0p-1022
+  },
+  { // Entry 785
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1, 0x1.0p-1074
+  },
+  { // Entry 786
+    0x1.p0,
+    0x1.0p-1, 0.0
+  },
+  { // Entry 787
+    0x1.p0,
+    0x1.0p-1, -0.0
+  },
+  { // Entry 788
+    0x1.p0,
+    0x1.0p-1, -0x1.0p-1074
+  },
+  { // Entry 789
+    0x1.p0,
+    0x1.0p-1, -0x1.0p-1022
+  },
+  { // Entry 790
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p-1, -0x1.0p-1
+  },
+  { // Entry 791
+    HUGE_VAL,
+    0x1.0p-1, -0x1.fffffffffffffp1023
+  },
+  { // Entry 792
+    HUGE_VAL,
+    0x1.0p-1, -HUGE_VAL
+  },
+  { // Entry 793
+    0.0,
+    -0x1.0p-1, HUGE_VAL
+  },
+  { // Entry 794
+    0.0,
+    -0x1.0p-1, 0x1.fffffffffffffp1023
+  },
+  { // Entry 795
+    0x1.p0,
+    -0x1.0p-1, 0.0
+  },
+  { // Entry 796
+    0x1.p0,
+    -0x1.0p-1, -0.0
+  },
+  { // Entry 797
+    HUGE_VAL,
+    -0x1.0p-1, -0x1.fffffffffffffp1023
+  },
+  { // Entry 798
+    HUGE_VAL,
+    -0x1.0p-1, -HUGE_VAL
+  },
+  { // Entry 799
+    0x1.p1,
+    0x1.0p2, 0x1.0p-1
+  },
+  { // Entry 800
+    0x1.80p1,
+    0x1.2p3, 0x1.0p-1
+  },
+  { // Entry 801
+    0x1.p2,
+    0x1.0p4, 0x1.0p-1
+  },
+  { // Entry 802
+    0x1.p-1,
+    0x1.0p2, -0x1.0p-1
+  },
+  { // Entry 803
+    0x1.p-2,
+    0x1.0p4, -0x1.0p-1
+  },
+  { // Entry 804
+    0x1.p-3,
+    0x1.0p6, -0x1.0p-1
+  },
+  { // Entry 805
+    HUGE_VAL,
+    0x1.fffffffffffffp-1, -0x1.74910d52d3052p62
+  },
+  { // Entry 806
+    0.0,
+    0x1.fffffffffffffp-1, 0x1.74910d52d3052p62
+  },
+  { // Entry 807
+    0x1.p2,
+    0x1.0p1, 0x1.0p1
+  },
+  { // Entry 808
+    0x1.p-2,
+    0x1.0p1, -0x1.0p1
+  },
+  { // Entry 809
+    0x1.p2,
+    -0x1.0p1, 0x1.0p1
+  },
+  { // Entry 810
+    0x1.p-2,
+    -0x1.0p1, -0x1.0p1
+  },
+  { // Entry 811
+    0x1.b0p4,
+    0x1.8p1, 0x1.8p1
+  },
+  { // Entry 812
+    0x1.86a0p11,
+    0x1.4p2, 0x1.4p2
+  },
+  { // Entry 813
+    0x1.921ee0p19,
+    0x1.cp2, 0x1.cp2
+  },
+  { // Entry 814
+    0x1.2a05f2p33,
+    0x1.4p3, 0x1.4p3
+  },
+};
diff --git a/tests/math_data/powf_intel_data.h b/tests/math_data/powf_intel_data.h
new file mode 100644
index 0000000..3a1765b
--- /dev/null
+++ b/tests/math_data/powf_intel_data.h
@@ -0,0 +1,2766 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_powf_intel_data[] = {
+  { // Entry 0
+    HUGE_VALF,
+    -0.0, -0x1.000002p-1
+  },
+  { // Entry 1
+    0.0f,
+    -0x1.p-5, 0x1.e0p4
+  },
+  { // Entry 2
+    -0.0f,
+    -0x1.p-30, 0x1.40p2
+  },
+  { // Entry 3
+    0x1.p0,
+    -0x1.p0, 0x1.000002p32
+  },
+  { // Entry 4
+    0x1.p0,
+    -0x1.000002p-41, 0.0
+  },
+  { // Entry 5
+    0x1.d1a029128778fca3f9a261be1cb86be7p-121,
+    -0x1.000006p0, -0x1.bc1ee2p27
+  },
+  { // Entry 6
+    0x1.da6e3ff202da752de523f9846303c0b5p-124,
+    -0x1.00000ap0, -0x1.111112p27
+  },
+  { // Entry 7
+    0x1.eb70a2fbb8b2489b8d838eb65ed676acp-91,
+    -0x1.00000ap0, -0x1.8f83e4p26
+  },
+  { // Entry 8
+    HUGE_VALF,
+    -0x1.000028p0, 0x1.20p44
+  },
+  { // Entry 9
+    0x1.002001p-4,
+    -0x1.0010p-2, 0x1.p1
+  },
+  { // Entry 10
+    0x1.002001p-82,
+    -0x1.0010p-41, 0x1.p1
+  },
+  { // Entry 11
+    0x1.004004p-82,
+    -0x1.0020p-41, 0x1.p1
+  },
+  { // Entry 12
+    0x1.006009p-12,
+    -0x1.0030p-6, 0x1.p1
+  },
+  { // Entry 13
+    -0x1.fb859adbdb7df6974c5c9a5489e6972ap53,
+    -0x1.0040p-6, -0x1.20p3
+  },
+  { // Entry 14
+    0x1.008010p-82,
+    -0x1.0040p-41, 0x1.p1
+  },
+  { // Entry 15
+    0x1.00e031p-40,
+    -0x1.0070p-20, 0x1.p1
+  },
+  { // Entry 16
+    0x1.31e452ffffec96a3d5a882fe244f8c63p-1,
+    -0x1.046ef4p0, -0x1.e0p4
+  },
+  { // Entry 17
+    0x1.33e8f304p-36,
+    -0x1.08p-6, 0x1.80p2
+  },
+  { // Entry 18
+    0x1.d82001fe9d6bdbba98638def8d37e50bp-124,
+    -0x1.1ec38cp0, -0x1.78p9
+  },
+  { // Entry 19
+    -0x1.45f3bdeaa5f60d121c3fa751dbd758adp36,
+    -0x1.bffffep-6, -0x1.c0p2
+  },
+  { // Entry 20
+    0x1.df41ae7ef4e15e8ad45c7293ddc3fe7dp61,
+    -0x1.fffffap-1, -0x1.c9b244p27
+  },
+  { // Entry 21
+    0x1.df46f26f1f129a54922022f9b653a99fp61,
+    -0x1.fffffap-1, -0x1.c9b262p27
+  },
+  { // Entry 22
+    -0x1.00000300000900001b0000510000f3p21,
+    -0x1.fffffap-22, -0x1.p0
+  },
+  { // Entry 23
+    -0x1.00000300000900001b0000510000f3p-99,
+    -0x1.fffffap98, -0x1.p0
+  },
+  { // Entry 24
+    -0x1.78b55ef8aecb0b7c5b8865e27157d824p-2,
+    -0x1.fffffcp-1, 0x1.000002p23
+  },
+  { // Entry 25
+    -0x1.fffffep-41,
+    -0x1.fffffep-41, 0x1.p0
+  },
+  { // Entry 26
+    0x1.p71,
+    0x1.p-2, -0x1.1cp5
+  },
+  { // Entry 27
+    0x1.d580710e38463c3dd62fce98f203b471p-1,
+    0x1.p-2, 0x1.0007p-4
+  },
+  { // Entry 28
+    0x1.p-15,
+    0x1.p-2, 0x1.e0p2
+  },
+  { // Entry 29
+    0.0f,
+    0x1.p-3, 0x1.8ffffep5
+  },
+  { // Entry 30
+    0x1.p-40,
+    0x1.p-5, 0x1.p3
+  },
+  { // Entry 31
+    0x1.p40,
+    0x1.p-10, -0x1.p2
+  },
+  { // Entry 32
+    0x1.ecfff0b449d7c9a5d494c884c717f9cdp-88,
+    0x1.p-144, 0x1.3586fep-1
+  },
+  { // Entry 33
+    0x1.ecfff0b449d7c9a5d494c884c717f9cdp-106,
+    0x1.p-144, 0x1.7586fep-1
+  },
+  { // Entry 34
+    HUGE_VALF,
+    0x1.p-149, -0x1.ccacccp-1
+  },
+  { // Entry 35
+    HUGE_VALF,
+    0x1.p-149, -0x1.e6e666p-1
+  },
+  { // Entry 36
+    0x1.e8e101355bd975bfec3fb5ed3757777dp-1,
+    0x1.000002p-2, 0x1.1111p-5
+  },
+  { // Entry 37
+    0x1.ddb64347a55e452ed04d6a173ca5b56cp99,
+    0x1.000002p-111, -0x1.ccccccp-1
+  },
+  { // Entry 38
+    0x1.558e990004a8ebb3e8176275ba9f1052p52,
+    0x1.000002p-112, -0x1.df3b5ap-2
+  },
+  { // Entry 39
+    0x1.fffffd0000053ffff66000120bffddb6p92,
+    0x1.000002p-124, -0x1.80p-1
+  },
+  { // Entry 40
+    0x1.fffffffffff800000800000555554555p-1,
+    0x1.000002p0, -0x1.p-23
+  },
+  { // Entry 41
+    0x1.fffffffffff9000007000002eaaaa02ap-1,
+    0x1.000002p0, -0x1.c0p-24
+  },
+  { // Entry 42
+    0x1.ddb6530d485b7badb441a4460ca54c62p9,
+    0x1.000002p11, 0x1.ccccc6p-1
+  },
+  { // Entry 43
+    0x1.d901790cd9d1b9d8cdf616296479022fp-14,
+    0x1.000002p17, -0x1.8af8b0p-1
+  },
+  { // Entry 44
+    0x1.e6d3f90d414447b2f2467d4c214496bdp30,
+    0x1.000002p42, 0x1.7904a4p-1
+  },
+  { // Entry 45
+    0x1.000012ffffd68004fa7fb159108ec97dp0,
+    0x1.00001cp0, 0x1.5b6dbap-1
+  },
+  { // Entry 46
+    0x1.d174810e1e4527f011547dfc4dc6b48cp-3,
+    0x1.00001cp3, -0x1.6ccccep-1
+  },
+  { // Entry 47
+    0x1.d581970e8b4ccc9dbc28899bd1848e24p-1,
+    0x1.00002ep-2, 0x1.ffffcep-5
+  },
+  { // Entry 48
+    0x1.000455000312cc6e79ced653c38d7e2ap0,
+    0x1.000038p-50, -0x1.fff77ep-20
+  },
+  { // Entry 49
+    0x1.00480900a807e03f01500480090008p-81,
+    0x1.0008p-9, 0x1.20p3
+  },
+  { // Entry 50
+    0x1.ffc004ffb0045fc8029fe20149f2408ep39,
+    0x1.0008p-10, -0x1.p2
+  },
+  { // Entry 51
+    0x1.fec1bb35b5a826526101adab0695d1d3p-1,
+    0x1.00e0p0, -0x1.6ccccep-1
+  },
+  { // Entry 52
+    0x1.fadbde187acba5b3a6c4cde78e1bbb4ap45,
+    0x1.01fffcp0, 0x1.p12
+  },
+  { // Entry 53
+    0x1.ff1fb6ff79a5e0391b1d7dfb14de7de6p22,
+    0x1.01fffep0, 0x1.000cb6p11
+  },
+  { // Entry 54
+    0x1.6cbbc2fff64c73aab0033df757f3808dp11,
+    0x1.0220p0, 0x1.e295f2p9
+  },
+  { // Entry 55
+    0x1.f81f5312ba449421bd9393ad8df53aaep-1,
+    0x1.04p0, -0x1.0006p0
+  },
+  { // Entry 56
+    0x1.ffe88affffff33e933cfaad5f0ee2678p-1,
+    0x1.08c7eep-16, 0x1.0f94b2p-16
+  },
+  { // Entry 57
+    0x1.0000dcffffc6fee7e4aac09a3d9fb9a1p0,
+    0x1.0ep-20, -0x1.000cdcp-20
+  },
+  { // Entry 58
+    0x1.70ce05e629803c0ca47482392a882debp-3,
+    0x1.0ep3, -0x1.9b91bap-1
+  },
+  { // Entry 59
+    0x1.5a8926e473f6148a5a383bfa1ed0b335p-90,
+    0x1.0ffffep0, -0x1.0000fep10
+  },
+  { // Entry 60
+    0x1.8ec5b2e1606728f21cf2c90c2e4d2a9bp-93,
+    0x1.0ffffep0, -0x1.07fffep10
+  },
+  { // Entry 61
+    0x1.a47dd4ffffe25486314351413837b2fdp4,
+    0x1.1624p-4, -0x1.3720c0p0
+  },
+  { // Entry 62
+    0x1.442401p0,
+    0x1.2010p0, 0x1.p1
+  },
+  { // Entry 63
+    0x1.e7aaf2ffffbce86a4fd2cf9cb53d7e55p-1,
+    0x1.253264p0, -0x1.6f826ep-2
+  },
+  { // Entry 64
+    0x1.4d63290052d4d2d894b4635cb9b98130p-39,
+    0x1.2711c8p-6, 0x1.aa804ep2
+  },
+  { // Entry 65
+    0x1.b20168da0fc1fca6d3c1b8c23fdcaf39p49,
+    0x1.2aaaaap-1, -0x1.fff1fep5
+  },
+  { // Entry 66
+    0x1.ee26c12ebf5b649bef95484ece113007p2,
+    0x1.2f7dc0p-23, -0x1.0967c0p-3
+  },
+  { // Entry 67
+    0x1.bc90590000002ee11763c6fe2418730cp-2,
+    0x1.334478p-2, 0x1.62e42ep-1
+  },
+  { // Entry 68
+    0x1.8c8c8300308cee7c1a41b09294323cfbp-82,
+    0x1.3ffffep-1, 0x1.e0p6
+  },
+  { // Entry 69
+    0x1.643d4efffe606e056e4035b0becc20fdp-5,
+    0x1.3ffffep-40, 0x1.d2f190p-4
+  },
+  { // Entry 70
+    0x1.f8148914d4ea3af94ee724572f2ee8ffp-1,
+    0x1.41d420p20, -0x1.22p-10
+  },
+  { // Entry 71
+    0x1.cd6e9100038c93a7dce72a113ca56c70p-2,
+    0x1.443a42p-2, 0x1.62e42ep-1
+  },
+  { // Entry 72
+    0x1.f895910f392f3b8fcc641ae87164d684p-1,
+    0x1.45a2a8p1, -0x1.p-6
+  },
+  { // Entry 73
+    0x1.e3dff8fff6e9efd4f167a7b91eb882afp-1,
+    0x1.45d174p-1, 0x1.00001cp-3
+  },
+  { // Entry 74
+    0x1.d332f0fffc83128a7fc7bd56be27e755p-2,
+    0x1.4a1704p-2, 0x1.62e42ep-1
+  },
+  { // Entry 75
+    0x1.d5ae790003cb17cf83deb5e2cc0ea01cp-2,
+    0x1.4c9f94p-2, 0x1.62e42ep-1
+  },
+  { // Entry 76
+    0x1.ca8ec6ed5df39f991f808d94dd5c8834p88,
+    0x1.4e9cc2p-30, -0x1.80p1
+  },
+  { // Entry 77
+    0x1.d9b648fffc167ed8b917b64f747e6270p-2,
+    0x1.50bfc8p-2, 0x1.62e42ep-1
+  },
+  { // Entry 78
+    0x1.da95070001a3799fee02ea034357a8c2p-2,
+    0x1.51a450p-2, 0x1.62e42ep-1
+  },
+  { // Entry 79
+    0x1.fe957b38c5b6959bb0ea80e43c709ecap-1,
+    0x1.679286p-11, 0x1.8ea824p-12
+  },
+  { // Entry 80
+    0x1.aca91b5f3882f36dcdab2a8d641c0ab5p-56,
+    0x1.745d18p-4, 0x1.ff1ffep3
+  },
+  { // Entry 81
+    0x1.f82eb711ff0066ee591658258b692331p-1,
+    0x1.77fffep-120, 0x1.85bc7ap-13
+  },
+  { // Entry 82
+    0x1.d98c8300003e83fd25b95381f702161cp-1,
+    0x1.7a3d0ep0, -0x1.99999ap-3
+  },
+  { // Entry 83
+    0x1.f82cef13a11a5f5a0562fe52c88207bdp-1,
+    0x1.7c9a16p-2, 0x1.fddffep-7
+  },
+  { // Entry 84
+    0x1.d0d014fffe715e2732b6d1ced96adb76p19,
+    0x1.7e9bb0p-8, -0x1.569828p1
+  },
+  { // Entry 85
+    0x1.8518e2fffdea301062ac6a29c6e53df6p-1,
+    0x1.851ebap-1, 0x1.000ep0
+  },
+  { // Entry 86
+    0x1.2da1e8fffe1350e4daf5553e75dca020p-4,
+    0x1.861862p-4, 0x1.1cp0
+  },
+  { // Entry 87
+    0x1.dd037a2c561bfe1824p-11,
+    0x1.8ce632p-4, 0x1.80p1
+  },
+  { // Entry 88
+    0x1.f81fa713d2b23eac52a36f4b3a33023ep-1,
+    0x1.8f86aap-1, 0x1.0000e0p-4
+  },
+  { // Entry 89
+    0x1.03f14b095ae687525a7e377e3505e587p0,
+    0x1.90p5, 0x1.0008p-8
+  },
+  { // Entry 90
+    0x1.36395100005cc4113b220d6ce672e165p0,
+    0x1.95578ep1, 0x1.555556p-3
+  },
+  { // Entry 91
+    0x1.f83249134e77a21bf811350c6a931beep-1,
+    0x1.98p5, -0x1.000002p-8
+  },
+  { // Entry 92
+    0x1.9f628b3cfd06f417f86e1ca8edc1469ep117,
+    0x1.99999cp3, 0x1.p5
+  },
+  { // Entry 93
+    0x1.d4851ccedafdd1cbc79a6a6b3dbb1cbep119,
+    0x1.9a66d0p-14, -0x1.20p3
+  },
+  { // Entry 94
+    0x1.2536270001fab70a29d68e60feb11211p-11,
+    0x1.9ffffep41, -0x1.094f1cp-2
+  },
+  { // Entry 95
+    0x1.d08ae8fffdc7029e0bd02c871606a01cp0,
+    0x1.a57becp1, 0x1.p-1
+  },
+  { // Entry 96
+    0x1.b83638ffb21561a23ec9b8a7b0ba7b52p15,
+    0x1.aaaaaep-1, -0x1.e0p5
+  },
+  { // Entry 97
+    0x1.c198860000001c1cee146e451365eae1p-10,
+    0x1.ad1d1cp-14, 0x1.62e42ep-1
+  },
+  { // Entry 98
+    0x1.cd0c6eefc33dfc2ef3d2beb81ad568cap30,
+    0x1.b13b1cp-1, -0x1.ffff1ep6
+  },
+  { // Entry 99
+    0x1.6228e4fef882769ba040164fc4bca0cbp-81,
+    0x1.b7ffd8p-1, 0x1.705394p8
+  },
+  { // Entry 100
+    0x1.ae9d756c84b4063f238dd151bec30e0bp-99,
+    0x1.be0d7cp-1, 0x1.ede448p8
+  },
+  { // Entry 101
+    0x1.913f68f101ebe490d29d873d1e0fd828p-85,
+    0x1.be0f70p-1, 0x1.a8147ap8
+  },
+  { // Entry 102
+    0x1.b1e7215c128082aab49edab1641919a8p-99,
+    0x1.be0f70p-1, 0x1.ede5d8p8
+  },
+  { // Entry 103
+    0x1.dc574183f03d7a333c18fc6916daa859p-96,
+    0x1.bff0d0p-1, 0x1.ed2fb4p8
+  },
+  { // Entry 104
+    0x1.da6fcd00020da659e4a50ba993a71d92p6,
+    0x1.bffffep1, 0x1.e7f782p1
+  },
+  { // Entry 105
+    HUGE_VALF,
+    0x1.c25c26p-44, -0x1.40p3
+  },
+  { // Entry 106
+    0x1.951dfaf0d0341097e50f8d51fb5b0b2ap-72,
+    0x1.c4ec74p-1, 0x1.935234p8
+  },
+  { // Entry 107
+    0x1.fb1c6cfffef199884e78c26fef057fc3p4,
+    0x1.c76380p0, 0x1.80087cp2
+  },
+  { // Entry 108
+    0x1.d82d7dffffefc26e1f09e6d73a276d81p-10,
+    0x1.cc8d06p-14, 0x1.62e42ep-1
+  },
+  { // Entry 109
+    0x1.997e0eef7bb3d4eda40dc43c72a53167p-70,
+    0x1.d1cdccp-1, 0x1.fc2640p8
+  },
+  { // Entry 110
+    0x1.fe82dd381a8d3056a4c554f1e1764f9dp-1,
+    0x1.d40a66p-3, 0x1.02964cp-9
+  },
+  { // Entry 111
+    0x1.f3ab1937169c9ab7aac67b94894ede10p-1,
+    0x1.d55552p-2, 0x1.000038p-5
+  },
+  { // Entry 112
+    0x1.fe805f37b89bc0c8b0163db7c11f48f2p-1,
+    0x1.da12f0p-1, 0x1.38p-5
+  },
+  { // Entry 113
+    0x1.c27937000f6c15a86f8eb042a0895566p-73,
+    0x1.df0a82p-1, 0x1.77fbc0p9
+  },
+  { // Entry 114
+    0x1.c64b0d000027dbefa1e3233ef53619b7p105,
+    0x1.dffffep52, 0x1.00087cp1
+  },
+  { // Entry 115
+    0x1.0847b080e10a3f33ba599a218b630ffbp0,
+    0x1.e06b8cp-1, -0x1.p-1
+  },
+  { // Entry 116
+    0x1.eff5716fa057c0db02972e5b51a95899p-1,
+    0x1.e06b8cp-1, 0x1.p-1
+  },
+  { // Entry 117
+    0x1.083f7f587cdb6cc005ee70abb128067cp0,
+    0x1.e08956p-1, -0x1.p-1
+  },
+  { // Entry 118
+    0x1.f004d186653df746f46ac1da51e68817p-1,
+    0x1.e08956p-1, 0x1.p-1
+  },
+  { // Entry 119
+    0x1.2e78986ce71690689a17b09e2fd01256p0,
+    0x1.e0ee8ap-1, -0x1.5515p1
+  },
+  { // Entry 120
+    0x1.34e306ebdacb3fb249efb92c5df50a30p0,
+    0x1.e0ee8ap-1, -0x1.80p1
+  },
+  { // Entry 121
+    0x1.1a22a2b284843cef729aa7923200616bp0,
+    0x1.e0ee8ap-1, -0x1.8d89d8p0
+  },
+  { // Entry 122
+    0x1.1d8befed03f9ed8d628e72acfd5846f2p0,
+    0x1.e0ee8ap-1, -0x1.beb050p0
+  },
+  { // Entry 123
+    0x1.e9e518fb1617eceb976b420930a3ce51p-1,
+    0x1.e0ee8ap-1, 0x1.68f880p-1
+  },
+  { // Entry 124
+    0x1.a0bdbae7d1b95d1adb05939aefcd35f2p-93,
+    0x1.e13d0ep-1, 0x1.0220p10
+  },
+  { // Entry 125
+    0x1.8789269c3d7361f6464f369baecd358fp-90,
+    0x1.e1f07ep-1, 0x1.p10
+  },
+  { // Entry 126
+    0x1.f67dcb0d034ec28a4309c4415565f9ecp1,
+    0x1.e4000ep5, 0x1.55555ap-2
+  },
+  { // Entry 127
+    0x1.e65785986fb7af1219234980dca4ef34p-93,
+    0x1.e6f314p-1, 0x1.3e0f80p10
+  },
+  { // Entry 128
+    0x1.e9a57691f06acbd3893901e376830537p-125,
+    0x1.e97470p-1, 0x1.dd67c0p10
+  },
+  { // Entry 129
+    0x1.866ec900017d689ca5deb18c4769effbp-2,
+    0x1.f040c8p-1, 0x1.eddbacp4
+  },
+  { // Entry 130
+    0x1.f839d5101bcf305e04c187afb53a6c53p-1,
+    0x1.f091e2p-1, 0x1.p-1
+  },
+  { // Entry 131
+    0x1.a374c2b00b62172cd4678df5e503b6f1p-13,
+    0x1.f60c04p-14, 0x1.e2e42ep-1
+  },
+  { // Entry 132
+    0x1.f8479b115561f17028b236fb8f2c173fp-1,
+    0x1.ff174ap-1, 0x1.119996p3
+  },
+  { // Entry 133
+    0x1.f947cf0debb3f5149df66e08396f65c5p3,
+    0x1.ff1ffep3, 0x1.fddffep-1
+  },
+  { // Entry 134
+    0x1.f3ae6b36c3163cd2d42f1eddf4e95886p-1,
+    0x1.ff7ffep0, -0x1.203c88p-5
+  },
+  { // Entry 135
+    0x1.f842b5127e562bf4cc2fb2aa30312393p-1,
+    0x1.ffbffep-10, 0x1.3ffffep-9
+  },
+  { // Entry 136
+    0x1.fc042cfcabd3d00c3fd7e9d168a20182p-1,
+    0x1.ffc0p-1, 0x1.ffc7fep3
+  },
+  { // Entry 137
+    0x1.f836cd12927fe3ea2eb9810462c208dcp-1,
+    0x1.fff77ep100, -0x1.cb0968p-13
+  },
+  { // Entry 138
+    0x1.fff3fd0c0608c60d8c3c9f07648607d5p14,
+    0x1.fff7fep9, 0x1.80p0
+  },
+  { // Entry 139
+    0x1.f811d3140d17296dc633cd00bfd96387p-1,
+    0x1.fff8p-1, 0x1.ff80p7
+  },
+  { // Entry 140
+    0x1.fe9d9738d0ca9f11f97a71b1a366145ap-1,
+    0x1.fffefep1, -0x1.fffff8p-10
+  },
+  { // Entry 141
+    0x1.f202b300003069a7a886e44fbf6073c2p72,
+    0x1.ffff3ep127, 0x1.23d714p-1
+  },
+  { // Entry 142
+    0x1.b834a192875d72ac81b7915cf8979690p-96,
+    0x1.ffffbep-1, 0x1.p25
+  },
+  { // Entry 143
+    0x1.ffffed000029bffddef5495e5603ce3bp-1,
+    0x1.ffffe2p-1, 0x1.44443ep-1
+  },
+  { // Entry 144
+    0x1.d6ab5d0e7ae03433ad824616d0db8b03p15,
+    0x1.ffffeep-40, -0x1.a0ea0cp-2
+  },
+  { // Entry 145
+    0x1.000002fffffffffff27fffe4ffffebc0p0,
+    0x1.fffffap-1, -0x1.fffffap-1
+  },
+  { // Entry 146
+    0x1.00000000000400000400000d55556d55p0,
+    0x1.fffffcp-1, -0x1.p-23
+  },
+  { // Entry 147
+    0x1.00000000000380000380000acaaabdeap0,
+    0x1.fffffcp-1, -0x1.c0p-24
+  },
+  { // Entry 148
+    0x1.ee8fc930954d29b3e28c5c1eafb9f7fdp4,
+    0x1.fffffcp-67, -0x1.33334ep-4
+  },
+  { // Entry 149
+    0x1.6a0a0cfff3ffa00e753af84c0100fbf0p13,
+    0x1.fffffcp-106, -0x1.075078p-3
+  },
+  { // Entry 150
+    0x1.9aaabcfff2ae3e7c84e87085640355e4p48,
+    0x1.fffffcp-120, -0x1.a2e8bep-2
+  },
+  { // Entry 151
+    0x1.f5777afffe2b46a4da98759043de4862p-52,
+    0x1.fffffcp80, -0x1.428f58p-1
+  },
+  { // Entry 152
+    0x1.73d3321e7f247def1ed4c816c824c77dp-67,
+    0x1.fffffcp119, -0x1.1b91b4p-1
+  },
+  { // Entry 153
+    0x1.000001000001000001000001000001p10,
+    0x1.fffffep-11, -0x1.p0
+  },
+  { // Entry 154
+    0x1.fffffeffffffbfffffdfffffebfffff1p0,
+    0x1.fffffep1, 0x1.p-1
+  },
+  { // Entry 155
+    0x1.cb5a0d0002f5169a13de39863bb5f91dp-2,
+    0x1.421efap-2, 0x1.62e42ep-1
+  },
+  { // Entry 156
+    0x1.cb720dcef90691503cbd1e949db761d9p-1,
+    0x1.p-5, 0x1.p-5
+  },
+  { // Entry 157
+    0x1.p-5,
+    0x1.p-5, 0x1.p0
+  },
+  { // Entry 158
+    0x1.p0,
+    0x1.p0, 0x1.p-5
+  },
+  { // Entry 159
+    0x1.p0,
+    0x1.p0, 0x1.p0
+  },
+  { // Entry 160
+    0x1.p-40,
+    0x1.p-5, 0x1.p3
+  },
+  { // Entry 161
+    0.0f,
+    0x1.p-5, 0x1.p5
+  },
+  { // Entry 162
+    0x1.p0,
+    0x1.p0, 0x1.p3
+  },
+  { // Entry 163
+    0x1.p0,
+    0x1.p0, 0x1.p5
+  },
+  { // Entry 164
+    0.0f,
+    0x1.p-5, 0x1.p10
+  },
+  { // Entry 165
+    0.0f,
+    0x1.p-5, 0x1.p12
+  },
+  { // Entry 166
+    0x1.p0,
+    0x1.p0, 0x1.p10
+  },
+  { // Entry 167
+    0x1.p0,
+    0x1.p0, 0x1.p12
+  },
+  { // Entry 168
+    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
+    0x1.p3, 0x1.p-5
+  },
+  { // Entry 169
+    0x1.p3,
+    0x1.p3, 0x1.p0
+  },
+  { // Entry 170
+    0x1.1d4873168b9aa7805b8028990f07a98bp0,
+    0x1.p5, 0x1.p-5
+  },
+  { // Entry 171
+    0x1.p5,
+    0x1.p5, 0x1.p0
+  },
+  { // Entry 172
+    0x1.p24,
+    0x1.p3, 0x1.p3
+  },
+  { // Entry 173
+    0x1.p96,
+    0x1.p3, 0x1.p5
+  },
+  { // Entry 174
+    0x1.p40,
+    0x1.p5, 0x1.p3
+  },
+  { // Entry 175
+    HUGE_VALF,
+    0x1.p5, 0x1.p5
+  },
+  { // Entry 176
+    HUGE_VALF,
+    0x1.p3, 0x1.p10
+  },
+  { // Entry 177
+    HUGE_VALF,
+    0x1.p3, 0x1.p12
+  },
+  { // Entry 178
+    HUGE_VALF,
+    0x1.p5, 0x1.p10
+  },
+  { // Entry 179
+    HUGE_VALF,
+    0x1.p5, 0x1.p12
+  },
+  { // Entry 180
+    0x1.3dea64c12342235b41223e13d773fba2p0,
+    0x1.p10, 0x1.p-5
+  },
+  { // Entry 181
+    0x1.p10,
+    0x1.p10, 0x1.p0
+  },
+  { // Entry 182
+    0x1.4bfdad5362a271d4397afec42e20e036p0,
+    0x1.p12, 0x1.p-5
+  },
+  { // Entry 183
+    0x1.p12,
+    0x1.p12, 0x1.p0
+  },
+  { // Entry 184
+    0x1.p80,
+    0x1.p10, 0x1.p3
+  },
+  { // Entry 185
+    HUGE_VALF,
+    0x1.p10, 0x1.p5
+  },
+  { // Entry 186
+    0x1.p96,
+    0x1.p12, 0x1.p3
+  },
+  { // Entry 187
+    HUGE_VALF,
+    0x1.p12, 0x1.p5
+  },
+  { // Entry 188
+    0x1.00000126055cfd443c5376930d169f32p2,
+    0x1.6a09e6p-1, -0x1.p2
+  },
+  { // Entry 189
+    0x1.fffffdb3f548a8d827b65c88p-3,
+    0x1.6a09e6p-1, 0x1.p2
+  },
+  { // Entry 190
+    0x1.00000126055cfd443c5376930d169f32p-2,
+    0x1.6a09e6p0, -0x1.p2
+  },
+  { // Entry 191
+    0x1.fffffdb3f548a8d827b65c88p1,
+    0x1.6a09e6p0, 0x1.p2
+  },
+  { // Entry 192
+    0x1.00000126055cfd443c5376930d169f32p2,
+    0x1.6a09e6p-1, -0x1.p2
+  },
+  { // Entry 193
+    0x1.fffffdb3f548a8d827b65c88p-3,
+    0x1.6a09e6p-1, 0x1.p2
+  },
+  { // Entry 194
+    0x1.00000126055cfd443c5376930d169f32p-2,
+    0x1.6a09e6p0, -0x1.p2
+  },
+  { // Entry 195
+    0x1.fffffdb3f548a8d827b65c88p1,
+    0x1.6a09e6p0, 0x1.p2
+  },
+  { // Entry 196
+    0x1.00162f3916670d119697154ae3512c2dp0,
+    0x1.6a09e6p-1, -0x1.p-10
+  },
+  { // Entry 197
+    0x1.ffd3a565caf8d230dae1250693a55f23p-1,
+    0x1.6a09e6p-1, 0x1.p-10
+  },
+  { // Entry 198
+    0x1.ffd3a5661473cb269f894b40d6cf9bacp-1,
+    0x1.6a09e6p0, -0x1.p-10
+  },
+  { // Entry 199
+    0x1.00162f38f1a33230bc340bd3752fc094p0,
+    0x1.6a09e6p0, 0x1.p-10
+  },
+  { // Entry 200
+    0x1.948b0fcd6e9e06522c3f35ba781948b0p1,
+    0x1.80p-1, -0x1.p2
+  },
+  { // Entry 201
+    0x1.44p-2,
+    0x1.80p-1, 0x1.p2
+  },
+  { // Entry 202
+    0x1.948b0fcd6e9e06522c3f35ba781948b0p-3,
+    0x1.80p0, -0x1.p2
+  },
+  { // Entry 203
+    0x1.44p2,
+    0x1.80p0, 0x1.p2
+  },
+  { // Entry 204
+    0x1.279a74590331c4d218f81e4afb257d06p0,
+    0x1.80p-1, -0x1.p-1
+  },
+  { // Entry 205
+    0x1.bb67ae8584caa73b25742d7078b83b89p-1,
+    0x1.80p-1, 0x1.p-1
+  },
+  { // Entry 206
+    0x1.a20bd700c2c3dfc042cc1aed7871db45p-1,
+    0x1.80p0, -0x1.p-1
+  },
+  { // Entry 207
+    0x1.3988e1409212e7d0321914321a556473p0,
+    0x1.80p0, 0x1.p-1
+  },
+  { // Entry 208
+    0x1.00126a0b93db294cabe33da735437f51p0,
+    0x1.80p-1, -0x1.p-10
+  },
+  { // Entry 209
+    0x1.ffdb2e8ed2a1fe71bd59fdd610313046p-1,
+    0x1.80p-1, 0x1.p-10
+  },
+  { // Entry 210
+    0x1.ffcc1c5973b2129a5b1424e0c88786b8p-1,
+    0x1.80p0, -0x1.p-10
+  },
+  { // Entry 211
+    0x1.0019f474aa190038c6af775d92f1d725p0,
+    0x1.80p0, 0x1.p-10
+  },
+  { // Entry 212
+    0x1.p0,
+    0x1.p0, -0x1.p2
+  },
+  { // Entry 213
+    0x1.p0,
+    0x1.p0, 0x1.p2
+  },
+  { // Entry 214
+    0x1.p-4,
+    0x1.p1, -0x1.p2
+  },
+  { // Entry 215
+    0x1.p4,
+    0x1.p1, 0x1.p2
+  },
+  { // Entry 216
+    0x1.p0,
+    0x1.p0, -0x1.p-1
+  },
+  { // Entry 217
+    0x1.p0,
+    0x1.p0, 0x1.p-1
+  },
+  { // Entry 218
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.p1, -0x1.p-1
+  },
+  { // Entry 219
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p1, 0x1.p-1
+  },
+  { // Entry 220
+    0x1.p0,
+    0x1.p0, -0x1.p-10
+  },
+  { // Entry 221
+    0x1.p0,
+    0x1.p0, 0x1.p-10
+  },
+  { // Entry 222
+    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
+    0x1.p1, -0x1.p-10
+  },
+  { // Entry 223
+    0x1.002c605e2e8cec506d21bfc89a23a010p0,
+    0x1.p1, 0x1.p-10
+  },
+  { // Entry 224
+    0x1.p40,
+    0x1.p-10, -0x1.p2
+  },
+  { // Entry 225
+    0x1.p-40,
+    0x1.p-10, 0x1.p2
+  },
+  { // Entry 226
+    0x1.fe013f6045e40a7c41499223b4a38ce8p-1,
+    0x1.0040p0, -0x1.p2
+  },
+  { // Entry 227
+    0x1.0100601001p0,
+    0x1.0040p0, 0x1.p2
+  },
+  { // Entry 228
+    0x1.p5,
+    0x1.p-10, -0x1.p-1
+  },
+  { // Entry 229
+    0x1.p-5,
+    0x1.p-10, 0x1.p-1
+  },
+  { // Entry 230
+    0x1.ffc00bfd808be0873653647448220fdfp-1,
+    0x1.0040p0, -0x1.p-1
+  },
+  { // Entry 231
+    0x1.001ffe003ff601bfac107ca6b29a0c31p0,
+    0x1.0040p0, 0x1.p-1
+  },
+  { // Entry 232
+    0x1.01bd1e77170b415e7626621eb5aaff61p0,
+    0x1.p-10, -0x1.p-10
+  },
+  { // Entry 233
+    0x1.fc8bc4866e8ad2b963e1828b0761cbc6p-1,
+    0x1.p-10, 0x1.p-10
+  },
+  { // Entry 234
+    0x1.ffffe0040055355844443df8680a8e05p-1,
+    0x1.0040p0, -0x1.p-10
+  },
+  { // Entry 235
+    0x1.00000ffe00d5256285340e4f3ad36287p0,
+    0x1.0040p0, 0x1.p-10
+  },
+  { // Entry 236
+    0x1.000001000001000001000001000001p-128,
+    0x1.fffffep127, -0x1.p0
+  },
+  { // Entry 237
+    0x1.fffffep127,
+    0x1.fffffep127, 0x1.p0
+  },
+  { // Entry 238
+    HUGE_VALF,
+    0x1.p-149, -0x1.e66666p-1
+  },
+  { // Entry 239
+    0x1.5db4ecab3e1cb942fc90a003e77da282p-142,
+    0x1.p-149, 0x1.e66666p-1
+  },
+  { // Entry 240
+    0.0f,
+    0x1.fffffep-7, 0x1.fffffep5
+  },
+  { // Entry 241
+    0.0f,
+    0x1.fffffep-7, 0x1.p6
+  },
+  { // Entry 242
+    0.0f,
+    0x1.fffffep-7, 0x1.000002p6
+  },
+  { // Entry 243
+    0.0f,
+    0x1.p-6, 0x1.fffffep5
+  },
+  { // Entry 244
+    0.0f,
+    0x1.p-6, 0x1.p6
+  },
+  { // Entry 245
+    0.0f,
+    0x1.p-6, 0x1.000002p6
+  },
+  { // Entry 246
+    0.0f,
+    0x1.000002p-6, 0x1.fffffep5
+  },
+  { // Entry 247
+    0.0f,
+    0x1.000002p-6, 0x1.p6
+  },
+  { // Entry 248
+    0.0f,
+    0x1.000002p-6, 0x1.000002p6
+  },
+  { // Entry 249
+    0.0f,
+    0x1.fffffep-6, 0x1.fffffep4
+  },
+  { // Entry 250
+    0.0f,
+    0x1.fffffep-6, 0x1.p5
+  },
+  { // Entry 251
+    0.0f,
+    0x1.fffffep-6, 0x1.000002p5
+  },
+  { // Entry 252
+    0.0f,
+    0x1.p-5, 0x1.fffffep4
+  },
+  { // Entry 253
+    0.0f,
+    0x1.p-5, 0x1.p5
+  },
+  { // Entry 254
+    0.0f,
+    0x1.p-5, 0x1.000002p5
+  },
+  { // Entry 255
+    0.0f,
+    0x1.000002p-5, 0x1.fffffep4
+  },
+  { // Entry 256
+    0.0f,
+    0x1.000002p-5, 0x1.p5
+  },
+  { // Entry 257
+    0.0f,
+    0x1.000002p-5, 0x1.000002p5
+  },
+  { // Entry 258
+    0x1.00001c5c879823e3af39baa221df84b0p-64,
+    0x1.fffffep-5, 0x1.fffffep3
+  },
+  { // Entry 259
+    0x1.ffffe00000effffba0000e37ffdde0p-65,
+    0x1.fffffep-5, 0x1.p4
+  },
+  { // Entry 260
+    0x1.ffff2e8e128f07f8aa95fb8b35d72ea4p-65,
+    0x1.fffffep-5, 0x1.000002p4
+  },
+  { // Entry 261
+    0x1.00002c5c89d5ec6ca4d7c8acc017b7c9p-64,
+    0x1.p-4, 0x1.fffffep3
+  },
+  { // Entry 262
+    0x1.p-64,
+    0x1.p-4, 0x1.p4
+  },
+  { // Entry 263
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p-65,
+    0x1.p-4, 0x1.000002p4
+  },
+  { // Entry 264
+    0x1.00004c5c91217e02a4592ba7ad5df32ep-64,
+    0x1.000002p-4, 0x1.fffffep3
+  },
+  { // Entry 265
+    0x1.0000200001e00011800071c002220007p-64,
+    0x1.000002p-4, 0x1.p4
+  },
+  { // Entry 266
+    0x1.ffff8e8df4d9a8351320c05d3d814f9fp-65,
+    0x1.000002p-4, 0x1.000002p4
+  },
+  { // Entry 267
+    0x1.000008a2b26884f1068b81889467d67fp-24,
+    0x1.fffffep-4, 0x1.fffffep2
+  },
+  { // Entry 268
+    0x1.fffff0000037ffff9000008bffff90p-25,
+    0x1.fffffep-4, 0x1.p3
+  },
+  { // Entry 269
+    0x1.ffffad753d825dfcdd65e4ea54ccceb5p-25,
+    0x1.fffffep-4, 0x1.000002p3
+  },
+  { // Entry 270
+    0x1.000010a2b2c99a85707e8f13dc648710p-24,
+    0x1.p-3, 0x1.fffffep2
+  },
+  { // Entry 271
+    0x1.p-24,
+    0x1.p-3, 0x1.p3
+  },
+  { // Entry 272
+    0x1.ffffbd753b5607da2c260064823b30a7p-25,
+    0x1.p-3, 0x1.000002p3
+  },
+  { // Entry 273
+    0x1.000020a2b433c5b91729fe0493321d3fp-24,
+    0x1.000002p-3, 0x1.fffffep2
+  },
+  { // Entry 274
+    0x1.0000100000700001c00004600007p-24,
+    0x1.000002p-3, 0x1.p3
+  },
+  { // Entry 275
+    0x1.ffffdd75384d5b715e9437699534883bp-25,
+    0x1.000002p-3, 0x1.000002p3
+  },
+  { // Entry 276
+    0x1.0000018b90c2f02a80f3bb82aa12e95dp-8,
+    0x1.fffffep-3, 0x1.fffffep1
+  },
+  { // Entry 277
+    0x1.fffff800000bfffff8000002p-9,
+    0x1.fffffep-3, 0x1.p2
+  },
+  { // Entry 278
+    0x1.ffffe1d1bdd0bdc6b46ea64a42b1bad2p-9,
+    0x1.fffffep-3, 0x1.000002p2
+  },
+  { // Entry 279
+    0x1.0000058b90cf1e6d97f9ca14dbcc1628p-8,
+    0x1.p-2, 0x1.fffffep1
+  },
+  { // Entry 280
+    0x1.p-8,
+    0x1.p-2, 0x1.p2
+  },
+  { // Entry 281
+    0x1.ffffe9d1bd7c04bc4825147a8c0e63e3p-9,
+    0x1.p-2, 0x1.000002p2
+  },
+  { // Entry 282
+    0x1.00000d8b910b7af451a642e6d0b66b06p-8,
+    0x1.000002p-2, 0x1.fffffep1
+  },
+  { // Entry 283
+    0x1.000008000018000020000010p-8,
+    0x1.000002p-2, 0x1.p2
+  },
+  { // Entry 284
+    0x1.fffff9d1bd1a92a5d11088ed17417f41p-9,
+    0x1.000002p-2, 0x1.000002p2
+  },
+  { // Entry 285
+    0x1.fffffec5c8623fb25d7d06ac61a3063fp-3,
+    0x1.fffffep-2, 0x1.fffffep0
+  },
+  { // Entry 286
+    0x1.fffffc000002p-3,
+    0x1.fffffep-2, 0x1.p1
+  },
+  { // Entry 287
+    0x1.fffff6746f4d088289b880fe02adbfdep-3,
+    0x1.fffffep-2, 0x1.000002p1
+  },
+  { // Entry 288
+    0x1.00000162e430e5a18f6119e3c02282a5p-2,
+    0x1.p-1, 0x1.fffffep0
+  },
+  { // Entry 289
+    0x1.p-2,
+    0x1.p-1, 0x1.p1
+  },
+  { // Entry 290
+    0x1.fffffa746f47f160fcf890e3b801aeddp-3,
+    0x1.p-1, 0x1.000002p1
+  },
+  { // Entry 291
+    0x1.00000562e436713246f7a0134c8287eap-2,
+    0x1.000002p-1, 0x1.fffffep0
+  },
+  { // Entry 292
+    0x1.000004000004p-2,
+    0x1.000002p-1, 0x1.p1
+  },
+  { // Entry 293
+    0x1.0000013a37a4e18f0519a603954a5b0bp-2,
+    0x1.000002p-1, 0x1.000002p1
+  },
+  { // Entry 294
+    0x1.fffffe000001ffffff000000aaaaaa80p-1,
+    0x1.fffffep-1, 0x1.fffffep-1
+  },
+  { // Entry 295
+    0x1.fffffep-1,
+    0x1.fffffep-1, 0x1.p0
+  },
+  { // Entry 296
+    0x1.fffffdfffffc000002000004aaaaaaffp-1,
+    0x1.fffffep-1, 0x1.000002p0
+  },
+  { // Entry 297
+    0x1.p0,
+    0x1.p0, 0x1.fffffep-1
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.p0, 0x1.p0
+  },
+  { // Entry 299
+    0x1.p0,
+    0x1.p0, 0x1.000002p0
+  },
+  { // Entry 300
+    0x1.000001fffffdfffffe000003555553ffp0,
+    0x1.000002p0, 0x1.fffffep-1
+  },
+  { // Entry 301
+    0x1.000002p0,
+    0x1.000002p0, 0x1.p0
+  },
+  { // Entry 302
+    0x1.000002000004000004000005555558p0,
+    0x1.000002p0, 0x1.000002p0
+  },
+  { // Entry 303
+    0x1.6a09e53575b123625cc1968a665581a4p0,
+    0x1.fffffep0, 0x1.fffffep-2
+  },
+  { // Entry 304
+    0x1.6a09e5b2eec967cd97b2eff75f471493p0,
+    0x1.fffffep0, 0x1.p-1
+  },
+  { // Entry 305
+    0x1.6a09e6ade0fa7319052c4948dea48a76p0,
+    0x1.fffffep0, 0x1.000002p-1
+  },
+  { // Entry 306
+    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
+    0x1.p1, 0x1.fffffep-2
+  },
+  { // Entry 307
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p1, 0x1.p-1
+  },
+  { // Entry 308
+    0x1.6a09e762e5efbbd7217018250a3ab194p0,
+    0x1.p1, 0x1.000002p-1
+  },
+  { // Entry 309
+    0x1.6a09e75484875c47c3cee01d9f348bd8p0,
+    0x1.000002p1, 0x1.fffffep-2
+  },
+  { // Entry 310
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp0,
+    0x1.000002p1, 0x1.p-1
+  },
+  { // Entry 311
+    0x1.6a09e8ccefd93dcbecf54d233ea8265bp0,
+    0x1.000002p1, 0x1.000002p-1
+  },
+  { // Entry 312
+    0x1.6a09e58ff82a4ecedb73f766d3d0758dp0,
+    0x1.fffffep1, 0x1.fffffep-3
+  },
+  { // Entry 313
+    0x1.6a09e60d71430d1ad61b45d5d1abdf15p0,
+    0x1.fffffep1, 0x1.p-2
+  },
+  { // Entry 314
+    0x1.6a09e70863750c27c3dd5c0ecdce5271p0,
+    0x1.fffffep1, 0x1.000002p-2
+  },
+  { // Entry 315
+    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
+    0x1.p2, 0x1.fffffep-3
+  },
+  { // Entry 316
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p2, 0x1.p-2
+  },
+  { // Entry 317
+    0x1.6a09e762e5efbbd7217018250a3ab194p0,
+    0x1.p2, 0x1.000002p-2
+  },
+  { // Entry 318
+    0x1.6a09e69f7f954950a1fce0a1b2c362d0p0,
+    0x1.000002p2, 0x1.fffffep-3
+  },
+  { // Entry 319
+    0x1.6a09e71cf8af753edb9700ad906c9cd9p0,
+    0x1.000002p2, 0x1.p-2
+  },
+  { // Entry 320
+    0x1.6a09e817eae44f9049d532cda2a90cb6p0,
+    0x1.000002p2, 0x1.000002p-2
+  },
+  { // Entry 321
+    0x1.4bfdacd3978adf9f3b64fe01f40593aep0,
+    0x1.fffffep2, 0x1.fffffep-4
+  },
+  { // Entry 322
+    0x1.4bfdad29e2ecb54005a6dbec67c5e413p0,
+    0x1.fffffep2, 0x1.p-3
+  },
+  { // Entry 323
+    0x1.4bfdadd679b0a3cc40ecb60afdc4a552p0,
+    0x1.fffffep2, 0x1.000002p-3
+  },
+  { // Entry 324
+    0x1.4bfdacfd174067ea4d43f8b09f974d86p0,
+    0x1.p3, 0x1.fffffep-4
+  },
+  { // Entry 325
+    0x1.4bfdad5362a271d4397afec42e20e036p0,
+    0x1.p3, 0x1.p-3
+  },
+  { // Entry 326
+    0x1.4bfdadfff966c8f2b8f44b137fbfaa96p0,
+    0x1.p3, 0x1.000002p-3
+  },
+  { // Entry 327
+    0x1.4bfdad5016ab0b9134e0574abca78b7ap0,
+    0x1.000002p3, 0x1.fffffep-4
+  },
+  { // Entry 328
+    0x1.4bfdada6620d7e0d6487fd9be64887a3p0,
+    0x1.000002p3, 0x1.p-3
+  },
+  { // Entry 329
+    0x1.4bfdae52f8d2a6506b74ce232fdcd291p0,
+    0x1.000002p3, 0x1.000002p-3
+  },
+  { // Entry 330
+    0x1.306fe05b533131c27612cfff7a0ffdb0p0,
+    0x1.fffffep3, 0x1.fffffep-5
+  },
+  { // Entry 331
+    0x1.306fe09014733fc18f2a8e5bc8a30cdcp0,
+    0x1.fffffep3, 0x1.p-4
+  },
+  { // Entry 332
+    0x1.306fe0f996f7772c9a94c16083446262p0,
+    0x1.fffffep3, 0x1.000002p-4
+  },
+  { // Entry 333
+    0x1.306fe06e5a2f2e8c620f7e55cc803dbap0,
+    0x1.p4, 0x1.fffffep-5
+  },
+  { // Entry 334
+    0x1.306fe0a31b7152de8d5a46305c85edecp0,
+    0x1.p4, 0x1.p-4
+  },
+  { // Entry 335
+    0x1.306fe10c9df5b6efbd400b7806005fa9p0,
+    0x1.p4, 0x1.000002p-4
+  },
+  { // Entry 336
+    0x1.306fe094682af29c8fe9f735fb1c4081p0,
+    0x1.000002p4, 0x1.fffffep-5
+  },
+  { // Entry 337
+    0x1.306fe0c9296d4394df5f99b9bd1a47d2p0,
+    0x1.000002p4, 0x1.p-4
+  },
+  { // Entry 338
+    0x1.306fe132abf200f257c612e07f149aa3p0,
+    0x1.000002p4, 0x1.000002p-4
+  },
+  { // Entry 339
+    0x1.1d4872eebb9da03bbac5af79b0cf9409p0,
+    0x1.fffffep4, 0x1.fffffep-6
+  },
+  { // Entry 340
+    0x1.1d48730da1570a7a85ea1fc1fcf88fddp0,
+    0x1.fffffep4, 0x1.p-5
+  },
+  { // Entry 341
+    0x1.1d48734b6cc9e902148fafcefa9eaa06p0,
+    0x1.fffffep4, 0x1.000002p-5
+  },
+  { // Entry 342
+    0x1.1d4872f7a5e133601ef3b495f3f89a12p0,
+    0x1.p5, 0x1.fffffep-6
+  },
+  { // Entry 343
+    0x1.1d4873168b9aa7805b8028990f07a98bp0,
+    0x1.p5, 0x1.p-5
+  },
+  { // Entry 344
+    0x1.1d487354570d99caccfbdb7e35ff0df1p0,
+    0x1.p5, 0x1.000002p-5
+  },
+  { // Entry 345
+    0x1.1d4873097a683fc01308d4a71615b820p0,
+    0x1.000002p5, 0x1.fffffep-6
+  },
+  { // Entry 346
+    0x1.1d4873286021c7a332496ee4ad91ade9p0,
+    0x1.000002p5, 0x1.p-5
+  },
+  { // Entry 347
+    0x1.1d4873662b94e1736939a503d83c5e42p0,
+    0x1.000002p5, 0x1.000002p-5
+  },
+  { // Entry 348
+    0x1.11301ceb20541ff3f655e3bd12271b3ep0,
+    0x1.fffffep5, 0x1.fffffep-7
+  },
+  { // Entry 349
+    0x1.11301cfce0f494304e630799fc8b181fp0,
+    0x1.fffffep5, 0x1.p-6
+  },
+  { // Entry 350
+    0x1.11301d206235801ef5580894354f900cp0,
+    0x1.fffffep5, 0x1.000002p-6
+  },
+  { // Entry 351
+    0x1.11301cef65149186a0ecb60713565b45p0,
+    0x1.p6, 0x1.fffffep-7
+  },
+  { // Entry 352
+    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
+    0x1.p6, 0x1.p-6
+  },
+  { // Entry 353
+    0x1.11301d24a6f5ff54e8d811a4b978b54fp0,
+    0x1.p6, 0x1.000002p-6
+  },
+  { // Entry 354
+    0x1.11301cf7ee956810edd94d1c7697f34bp0,
+    0x1.000002p6, 0x1.fffffep-7
+  },
+  { // Entry 355
+    0x1.11301d09af35e9f08ec0b6564cfd4d3ap0,
+    0x1.000002p6, 0x1.p-6
+  },
+  { // Entry 356
+    0x1.11301d2d3076f125c76f69bf107f4052p0,
+    0x1.000002p6, 0x1.000002p-6
+  },
+  { // Entry 357
+    0x1.fffc9d1eaff1e2bc708fbb9fc141d186p127,
+    0x1.fffffcp0, 0x1.fffffcp6
+  },
+  { // Entry 358
+    0x1.fffd4e8fb83933cbf5f827e2581f20dcp127,
+    0x1.fffffcp0, 0x1.fffffep6
+  },
+  { // Entry 359
+    0x1.fffe0000fdffaca81458f80ec301a2c8p127,
+    0x1.fffffcp0, 0x1.p7
+  },
+  { // Entry 360
+    0x1.ffff62e4420a6b06d702f4e2aaffa4e5p127,
+    0x1.fffffcp0, 0x1.000002p7
+  },
+  { // Entry 361
+    HUGE_VALF,
+    0x1.fffffcp0, 0x1.000004p7
+  },
+  { // Entry 362
+    0x1.fffd9d1d3e00d99bdfe3619f05f2ecc1p127,
+    0x1.fffffep0, 0x1.fffffcp6
+  },
+  { // Entry 363
+    0x1.fffe4e8ea000c3f99d84d886c03811fap127,
+    0x1.fffffep0, 0x1.fffffep6
+  },
+  { // Entry 364
+    0x1.ffff00003f7ff59501458fa07615868bp127,
+    0x1.fffffep0, 0x1.p7
+  },
+  { // Entry 365
+    HUGE_VALF,
+    0x1.fffffep0, 0x1.000002p7
+  },
+  { // Entry 366
+    HUGE_VALF,
+    0x1.fffffep0, 0x1.000004p7
+  },
+  { // Entry 367
+    0x1.fffe9d1c4b0f37f413d44c66c0481834p127,
+    0x1.p1, 0x1.fffffcp6
+  },
+  { // Entry 368
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p127,
+    0x1.p1, 0x1.fffffep6
+  },
+  { // Entry 369
+    HUGE_VALF,
+    0x1.p1, 0x1.p7
+  },
+  { // Entry 370
+    HUGE_VALF,
+    0x1.p1, 0x1.000002p7
+  },
+  { // Entry 371
+    HUGE_VALF,
+    0x1.p1, 0x1.000004p7
+  },
+  { // Entry 372
+    HUGE_VALF,
+    0x1.000002p1, 0x1.fffffcp6
+  },
+  { // Entry 373
+    HUGE_VALF,
+    0x1.000002p1, 0x1.fffffep6
+  },
+  { // Entry 374
+    HUGE_VALF,
+    0x1.000002p1, 0x1.p7
+  },
+  { // Entry 375
+    HUGE_VALF,
+    0x1.000002p1, 0x1.000002p7
+  },
+  { // Entry 376
+    HUGE_VALF,
+    0x1.000002p1, 0x1.000004p7
+  },
+  { // Entry 377
+    HUGE_VALF,
+    0x1.000004p1, 0x1.fffffcp6
+  },
+  { // Entry 378
+    HUGE_VALF,
+    0x1.000004p1, 0x1.fffffep6
+  },
+  { // Entry 379
+    HUGE_VALF,
+    0x1.000004p1, 0x1.p7
+  },
+  { // Entry 380
+    HUGE_VALF,
+    0x1.000004p1, 0x1.000002p7
+  },
+  { // Entry 381
+    HUGE_VALF,
+    0x1.000004p1, 0x1.000004p7
+  },
+  { // Entry 382
+    0.0f,
+    0x1.fffffcp0, -0x1.2c0004p7
+  },
+  { // Entry 383
+    0.0f,
+    0x1.fffffcp0, -0x1.2c0002p7
+  },
+  { // Entry 384
+    0.0f,
+    0x1.fffffcp0, -0x1.2cp7
+  },
+  { // Entry 385
+    0.0f,
+    0x1.fffffcp0, -0x1.2bfffep7
+  },
+  { // Entry 386
+    0.0f,
+    0x1.fffffcp0, -0x1.2bfffcp7
+  },
+  { // Entry 387
+    0.0f,
+    0x1.fffffep0, -0x1.2c0004p7
+  },
+  { // Entry 388
+    0.0f,
+    0x1.fffffep0, -0x1.2c0002p7
+  },
+  { // Entry 389
+    0.0f,
+    0x1.fffffep0, -0x1.2cp7
+  },
+  { // Entry 390
+    0.0f,
+    0x1.fffffep0, -0x1.2bfffep7
+  },
+  { // Entry 391
+    0.0f,
+    0x1.fffffep0, -0x1.2bfffcp7
+  },
+  { // Entry 392
+    0.0f,
+    0x1.p1, -0x1.2c0004p7
+  },
+  { // Entry 393
+    0.0f,
+    0x1.p1, -0x1.2c0002p7
+  },
+  { // Entry 394
+    0.0f,
+    0x1.p1, -0x1.2cp7
+  },
+  { // Entry 395
+    0.0f,
+    0x1.p1, -0x1.2bfffep7
+  },
+  { // Entry 396
+    0.0f,
+    0x1.p1, -0x1.2bfffcp7
+  },
+  { // Entry 397
+    0.0f,
+    0x1.000002p1, -0x1.2c0004p7
+  },
+  { // Entry 398
+    0.0f,
+    0x1.000002p1, -0x1.2c0002p7
+  },
+  { // Entry 399
+    0.0f,
+    0x1.000002p1, -0x1.2cp7
+  },
+  { // Entry 400
+    0.0f,
+    0x1.000002p1, -0x1.2bfffep7
+  },
+  { // Entry 401
+    0.0f,
+    0x1.000002p1, -0x1.2bfffcp7
+  },
+  { // Entry 402
+    0.0f,
+    0x1.000004p1, -0x1.2c0004p7
+  },
+  { // Entry 403
+    0.0f,
+    0x1.000004p1, -0x1.2c0002p7
+  },
+  { // Entry 404
+    0.0f,
+    0x1.000004p1, -0x1.2cp7
+  },
+  { // Entry 405
+    0.0f,
+    0x1.000004p1, -0x1.2bfffep7
+  },
+  { // Entry 406
+    0.0f,
+    0x1.000004p1, -0x1.2bfffcp7
+  },
+  { // Entry 407
+    0.0f,
+    0x1.db6db2p-2, 0x1.c30c2cp8
+  },
+  { // Entry 408
+    0.0f,
+    0x1.db6db2p-2, 0x1.c30c2ep8
+  },
+  { // Entry 409
+    0.0f,
+    0x1.db6db2p-2, 0x1.c30c30p8
+  },
+  { // Entry 410
+    0.0f,
+    0x1.db6db2p-2, 0x1.c30c32p8
+  },
+  { // Entry 411
+    0.0f,
+    0x1.db6db2p-2, 0x1.c30c34p8
+  },
+  { // Entry 412
+    0.0f,
+    0x1.db6db4p-2, 0x1.c30c2cp8
+  },
+  { // Entry 413
+    0.0f,
+    0x1.db6db4p-2, 0x1.c30c2ep8
+  },
+  { // Entry 414
+    0.0f,
+    0x1.db6db4p-2, 0x1.c30c30p8
+  },
+  { // Entry 415
+    0.0f,
+    0x1.db6db4p-2, 0x1.c30c32p8
+  },
+  { // Entry 416
+    0.0f,
+    0x1.db6db4p-2, 0x1.c30c34p8
+  },
+  { // Entry 417
+    0.0f,
+    0x1.db6db6p-2, 0x1.c30c2cp8
+  },
+  { // Entry 418
+    0.0f,
+    0x1.db6db6p-2, 0x1.c30c2ep8
+  },
+  { // Entry 419
+    0.0f,
+    0x1.db6db6p-2, 0x1.c30c30p8
+  },
+  { // Entry 420
+    0.0f,
+    0x1.db6db6p-2, 0x1.c30c32p8
+  },
+  { // Entry 421
+    0.0f,
+    0x1.db6db6p-2, 0x1.c30c34p8
+  },
+  { // Entry 422
+    0.0f,
+    0x1.db6db8p-2, 0x1.c30c2cp8
+  },
+  { // Entry 423
+    0.0f,
+    0x1.db6db8p-2, 0x1.c30c2ep8
+  },
+  { // Entry 424
+    0.0f,
+    0x1.db6db8p-2, 0x1.c30c30p8
+  },
+  { // Entry 425
+    0.0f,
+    0x1.db6db8p-2, 0x1.c30c32p8
+  },
+  { // Entry 426
+    0.0f,
+    0x1.db6db8p-2, 0x1.c30c34p8
+  },
+  { // Entry 427
+    0.0f,
+    0x1.db6dbap-2, 0x1.c30c2cp8
+  },
+  { // Entry 428
+    0.0f,
+    0x1.db6dbap-2, 0x1.c30c2ep8
+  },
+  { // Entry 429
+    0.0f,
+    0x1.db6dbap-2, 0x1.c30c30p8
+  },
+  { // Entry 430
+    0.0f,
+    0x1.db6dbap-2, 0x1.c30c32p8
+  },
+  { // Entry 431
+    0.0f,
+    0x1.db6dbap-2, 0x1.c30c34p8
+  },
+  { // Entry 432
+    -0x1.fffffc000007fffff000001fffffc0p-1,
+    -0x1.000002p0, -0x1.p0
+  },
+  { // Entry 433
+    -0x1.p0,
+    -0x1.p0, -0x1.p0
+  },
+  { // Entry 434
+    -0x1.000001000001000001000001000001p0,
+    -0x1.fffffep-1, -0x1.p0
+  },
+  { // Entry 435
+    HUGE_VALF,
+    0x1.p1, 0x1.p10
+  },
+  { // Entry 436
+    HUGE_VALF,
+    0x1.p2, 0x1.p9
+  },
+  { // Entry 437
+    0.0f,
+    0x1.fffffep-2, 0x1.fffffep9
+  },
+  { // Entry 438
+    0.0f,
+    0x1.fffffep-2, 0x1.p10
+  },
+  { // Entry 439
+    0.0f,
+    0x1.fffffep-2, 0x1.000002p10
+  },
+  { // Entry 440
+    0.0f,
+    0x1.p-1, 0x1.fffffep9
+  },
+  { // Entry 441
+    0.0f,
+    0x1.p-1, 0x1.p10
+  },
+  { // Entry 442
+    0.0f,
+    0x1.p-1, 0x1.000002p10
+  },
+  { // Entry 443
+    0.0f,
+    0x1.000002p-1, 0x1.fffffep9
+  },
+  { // Entry 444
+    0.0f,
+    0x1.000002p-1, 0x1.p10
+  },
+  { // Entry 445
+    0.0f,
+    0x1.000002p-1, 0x1.000002p10
+  },
+  { // Entry 446
+    0x1.00020467109547572fa8f3f653eda548p-149,
+    0x1.p-149, 0x1.fffff6p-1
+  },
+  { // Entry 447
+    0x1.00019d1eed21f448f2c6217eab3d9c55p-149,
+    0x1.p-149, 0x1.fffff8p-1
+  },
+  { // Entry 448
+    0x1.000135d6f3596e086d463376a9dbd1e2p-149,
+    0x1.p-149, 0x1.fffffap-1
+  },
+  { // Entry 449
+    0x1.0000ce8f233ba3c64adc5667a7b0b245p-149,
+    0x1.p-149, 0x1.fffffcp-1
+  },
+  { // Entry 450
+    0x1.000067477cc884b33e03d0bb77571150p-149,
+    0x1.p-149, 0x1.fffffep-1
+  },
+  { // Entry 451
+    0x1.p-149,
+    0x1.p-149, 0x1.p0
+  },
+  { // Entry 452
+    0.0f,
+    0x1.p-149, 0x1.000002p0
+  },
+  { // Entry 453
+    0.0f,
+    0x1.p-149, 0x1.000004p0
+  },
+  { // Entry 454
+    0.0f,
+    0x1.p-149, 0x1.000006p0
+  },
+  { // Entry 455
+    0.0f,
+    0x1.p-149, 0x1.000008p0
+  },
+  { // Entry 456
+    0.0f,
+    0x1.p-149, 0x1.00000ap0
+  },
+  { // Entry 457
+    0x1.000200efcf25bab1c7cd22827341ab63p-148,
+    0x1.p-148, 0x1.fffff6p-1
+  },
+  { // Entry 458
+    0x1.00019a59204c82fe060cf6d320f15433p-148,
+    0x1.p-148, 0x1.fffff8p-1
+  },
+  { // Entry 459
+    0x1.000133c29a8f64f204da13b72ebc56edp-148,
+    0x1.p-148, 0x1.fffffap-1
+  },
+  { // Entry 460
+    0x1.0000cd2c3dee501480729506593fd68bp-148,
+    0x1.p-148, 0x1.fffffcp-1
+  },
+  { // Entry 461
+    0x1.000066960a6933ec3bae8cab9ccfd543p-148,
+    0x1.p-148, 0x1.fffffep-1
+  },
+  { // Entry 462
+    0x1.p-148,
+    0x1.p-148, 0x1.p0
+  },
+  { // Entry 463
+    0x1.fffe65a8cd021dedd55a40c272dc8acap-149,
+    0x1.p-148, 0x1.000002p0
+  },
+  { // Entry 464
+    0x1.fffccb52e2e1f2602021820ab47036fep-149,
+    0x1.p-148, 0x1.000004p0
+  },
+  { // Entry 465
+    0x1.fffb30fe419e75c552c074b75e9e132dp-149,
+    0x1.p-148, 0x1.000006p0
+  },
+  { // Entry 466
+    0x1.fff996aae936a08cb2de3b831326836cp-149,
+    0x1.p-148, 0x1.000008p0
+  },
+  { // Entry 467
+    0x1.fff7fc58d9a96b26595dc1b91aab1065p-149,
+    0x1.p-148, 0x1.00000ap0
+  },
+  { // Entry 468
+    0x1.8002fe5d326e1910dcf5adadc4fb80bap-148,
+    0x1.80p-148, 0x1.fffff6p-1
+  },
+  { // Entry 469
+    0x1.80026516e130410cbc34d6be1f314af3p-148,
+    0x1.80p-148, 0x1.fffff8p-1
+  },
+  { // Entry 470
+    0x1.8001cbd0cd20048dc0041aae6853f414p-148,
+    0x1.80p-148, 0x1.fffffap-1
+  },
+  { // Entry 471
+    0x1.8001328af63d4b28b93bac168d323776p-148,
+    0x1.80p-148, 0x1.fffffcp-1
+  },
+  { // Entry 472
+    0x1.800099455c87fc728272d7993c3c0ed2p-148,
+    0x1.80p-148, 0x1.fffffep-1
+  },
+  { // Entry 473
+    0x1.80p-148,
+    0x1.80p-148, 0x1.p0
+  },
+  { // Entry 474
+    0x1.7ffecd75fe779c39da312a0ae6575aaep-148,
+    0x1.80p-148, 0x1.000002p0
+  },
+  { // Entry 475
+    0x1.7ffd9aecf1a35c7e2d6f67b9177b8bc8p-148,
+    0x1.80p-148, 0x1.000004p0
+  },
+  { // Entry 476
+    0x1.7ffc6864d9827d757b4b6001d0c80a9bp-148,
+    0x1.80p-148, 0x1.000006p0
+  },
+  { // Entry 477
+    0x1.7ffb35ddb6143bc8e145a6d616a1b551p-148,
+    0x1.80p-148, 0x1.000008p0
+  },
+  { // Entry 478
+    0x1.7ffa03578757d42218ce40a578c74476p-148,
+    0x1.80p-148, 0x1.00000ap0
+  },
+  { // Entry 479
+    0x1.000000a0cf65eb1817a7095d9a0443a7p0,
+    0x1.p-29, -0x1.p-29
+  },
+  { // Entry 480
+    0x1.ffffff5f309a60aad5c2309f81f90defp-1,
+    0x1.p-29, 0x1.p-30
+  },
+  { // Entry 481
+    0x1.fffffd9e07cf07767a55afbe9acae93ep-1,
+    0x1.p55, -0x1.p-29
+  },
+  { // Entry 482
+    0x1.000000987e0cc66344d89b494e1f43b3p0,
+    0x1.p55, 0x1.p-30
+  },
+  { // Entry 483
+    0x1.fffffd669427cf159515873887c17cf2p-1,
+    0x1.p60, -0x1.p-29
+  },
+  { // Entry 484
+    0x1.000000a65af6ae61be88ea2558790cd7p0,
+    0x1.p60, 0x1.p-30
+  },
+  { // Entry 485
+    0x1.ffc003ffb55aaa4cd34f3431ea5b77f1p-1,
+    0x1.fffffep-1, 0x1.p13
+  },
+  { // Entry 486
+    0x1.fe00ffa9c0fb3bf28c8a9b2b3d2d7daap-1,
+    0x1.fffffep-1, 0x1.p16
+  },
+  { // Entry 487
+    0x1.p0,
+    0x1.p0, 0x1.p13
+  },
+  { // Entry 488
+    0x1.p0,
+    0x1.p0, 0x1.p16
+  },
+  { // Entry 489
+    0x1.004008006aa554332b8fed09d8ed29f3p0,
+    0x1.000002p0, 0x1.p13
+  },
+  { // Entry 490
+    0x1.02020153fc405b123b33a73cb93a3648p0,
+    0x1.000002p0, 0x1.p16
+  },
+  { // Entry 491
+    0x1.2c15603269407006b8f35e8e4f1497bap-6,
+    -0x1.000002p0, -0x1.p25
+  },
+  { // Entry 492
+    0x1.c846887ee379c5af637c7349afc9f699p-47,
+    -0x1.000002p0, -0x1.p28
+  },
+  { // Entry 493
+    0x1.p0,
+    -0x1.p0, -0x1.p25
+  },
+  { // Entry 494
+    0x1.p0,
+    -0x1.p0, -0x1.p28
+  },
+  { // Entry 495
+    0x1.d8e64d66342891c86fb3c87d1ed6d5c5p2,
+    -0x1.fffffep-1, -0x1.p25
+  },
+  { // Entry 496
+    0x1.0f2ec583f611e4b8fc1cc7b50efbb738p23,
+    -0x1.fffffep-1, -0x1.p28
+  },
+  { // Entry 497
+    0x1.d8e64d66342891c86fb3c87d1ed6d5c5p2,
+    0x1.fffffep-1, -0x1.p25
+  },
+  { // Entry 498
+    0x1.0f2ec583f611e4b8fc1cc7b50efbb738p23,
+    0x1.fffffep-1, -0x1.p28
+  },
+  { // Entry 499
+    0x1.p0,
+    0x1.p0, -0x1.p25
+  },
+  { // Entry 500
+    0x1.p0,
+    0x1.p0, -0x1.p28
+  },
+  { // Entry 501
+    0x1.2c15603269407006b8f35e8e4f1497bap-6,
+    0x1.000002p0, -0x1.p25
+  },
+  { // Entry 502
+    0x1.c846887ee379c5af637c7349afc9f699p-47,
+    0x1.000002p0, -0x1.p28
+  },
+  { // Entry 503
+    HUGE_VALF,
+    -0x1.p15, 0x1.p63
+  },
+  { // Entry 504
+    HUGE_VALF,
+    0.0f, -0x1.80p1
+  },
+  { // Entry 505
+    -HUGE_VALF,
+    -0.0f, -0x1.80p1
+  },
+  { // Entry 506
+    HUGE_VALF,
+    0.0f, -0x1.p0
+  },
+  { // Entry 507
+    -HUGE_VALF,
+    -0.0f, -0x1.p0
+  },
+  { // Entry 508
+    HUGE_VALF,
+    0.0f, -0x1.fffffep127
+  },
+  { // Entry 509
+    HUGE_VALF,
+    0.0f, -0x1.80p2
+  },
+  { // Entry 510
+    HUGE_VALF,
+    0.0f, -0x1.p1
+  },
+  { // Entry 511
+    HUGE_VALF,
+    0.0f, -0x1.000002p0
+  },
+  { // Entry 512
+    HUGE_VALF,
+    0.0f, -0x1.fffffep-1
+  },
+  { // Entry 513
+    HUGE_VALF,
+    0.0f, -0x1.p-126
+  },
+  { // Entry 514
+    HUGE_VALF,
+    0.0f, -0x1.p-149
+  },
+  { // Entry 515
+    HUGE_VALF,
+    -0.0f, -0x1.fffffep127
+  },
+  { // Entry 516
+    HUGE_VALF,
+    -0.0f, -0x1.80p2
+  },
+  { // Entry 517
+    HUGE_VALF,
+    -0.0f, -0x1.p1
+  },
+  { // Entry 518
+    HUGE_VALF,
+    -0.0f, -0x1.000002p0
+  },
+  { // Entry 519
+    HUGE_VALF,
+    -0.0f, -0x1.fffffep-1
+  },
+  { // Entry 520
+    HUGE_VALF,
+    -0.0f, -0x1.p-126
+  },
+  { // Entry 521
+    HUGE_VALF,
+    -0.0f, -0x1.p-149
+  },
+  { // Entry 522
+    HUGE_VALF,
+    0.0f, -HUGE_VALF
+  },
+  { // Entry 523
+    HUGE_VALF,
+    -0.0f, -HUGE_VALF
+  },
+  { // Entry 524
+    0.0,
+    0.0f, 0x1.80p1
+  },
+  { // Entry 525
+    -0.0,
+    -0.0f, 0x1.80p1
+  },
+  { // Entry 526
+    0.0,
+    0.0f, 0x1.p0
+  },
+  { // Entry 527
+    -0.0,
+    -0.0f, 0x1.p0
+  },
+  { // Entry 528
+    0.0,
+    0.0f, HUGE_VALF
+  },
+  { // Entry 529
+    0.0,
+    0.0f, 0x1.fffffep127
+  },
+  { // Entry 530
+    0.0,
+    0.0f, 0x1.80p2
+  },
+  { // Entry 531
+    0.0,
+    0.0f, 0x1.p1
+  },
+  { // Entry 532
+    0.0,
+    0.0f, 0x1.000002p0
+  },
+  { // Entry 533
+    0.0,
+    0.0f, 0x1.fffffep-1
+  },
+  { // Entry 534
+    0.0,
+    0.0f, 0x1.p-126
+  },
+  { // Entry 535
+    0.0,
+    0.0f, 0x1.p-149
+  },
+  { // Entry 536
+    0.0,
+    -0.0f, HUGE_VALF
+  },
+  { // Entry 537
+    0.0,
+    -0.0f, 0x1.fffffep127
+  },
+  { // Entry 538
+    0.0,
+    -0.0f, 0x1.80p2
+  },
+  { // Entry 539
+    0.0,
+    -0.0f, 0x1.p1
+  },
+  { // Entry 540
+    0.0,
+    -0.0f, 0x1.000002p0
+  },
+  { // Entry 541
+    0.0,
+    -0.0f, 0x1.fffffep-1
+  },
+  { // Entry 542
+    0.0,
+    -0.0f, 0x1.p-126
+  },
+  { // Entry 543
+    0.0,
+    -0.0f, 0x1.p-149
+  },
+  { // Entry 544
+    0x1.p0,
+    -0x1.p0, HUGE_VALF
+  },
+  { // Entry 545
+    0x1.p0,
+    -0x1.p0, -HUGE_VALF
+  },
+  { // Entry 546
+    0x1.p0,
+    0x1.p0, HUGE_VALF
+  },
+  { // Entry 547
+    0x1.p0,
+    0x1.p0, -HUGE_VALF
+  },
+  { // Entry 548
+    0x1.p0,
+    0x1.p0, 0x1.fffffep127
+  },
+  { // Entry 549
+    0x1.p0,
+    0x1.p0, -0x1.fffffep127
+  },
+  { // Entry 550
+    0x1.p0,
+    -0x1.p0, 0x1.fffffep127
+  },
+  { // Entry 551
+    0x1.p0,
+    -0x1.p0, -0x1.fffffep127
+  },
+  { // Entry 552
+    0x1.p0,
+    0x1.p0, 0x1.p-1
+  },
+  { // Entry 553
+    0x1.p0,
+    0x1.p0, -0x1.p-1
+  },
+  { // Entry 554
+    0x1.p0,
+    0x1.p0, 0x1.p-126
+  },
+  { // Entry 555
+    0x1.p0,
+    0x1.p0, -0x1.p-126
+  },
+  { // Entry 556
+    0x1.p0,
+    0x1.p0, 0x1.fffffcp-127
+  },
+  { // Entry 557
+    0x1.p0,
+    0x1.p0, -0x1.fffffcp-127
+  },
+  { // Entry 558
+    0x1.p0,
+    0x1.p0, 0x1.p-149
+  },
+  { // Entry 559
+    0x1.p0,
+    0x1.p0, -0x1.p-149
+  },
+  { // Entry 560
+    0x1.p0,
+    0x1.p0, 0.0f
+  },
+  { // Entry 561
+    0x1.p0,
+    0x1.p0, -0.0f
+  },
+  { // Entry 562
+    0x1.p0,
+    HUGE_VALF, 0.0f
+  },
+  { // Entry 563
+    0x1.p0,
+    HUGE_VALF, -0.0f
+  },
+  { // Entry 564
+    0x1.p0,
+    0x1.fffffep127, 0.0f
+  },
+  { // Entry 565
+    0x1.p0,
+    0x1.fffffep127, -0.0f
+  },
+  { // Entry 566
+    0x1.p0,
+    0x1.p-126, 0.0f
+  },
+  { // Entry 567
+    0x1.p0,
+    0x1.p-126, -0.0f
+  },
+  { // Entry 568
+    0x1.p0,
+    0x1.p-149, 0.0f
+  },
+  { // Entry 569
+    0x1.p0,
+    0x1.p-149, -0.0f
+  },
+  { // Entry 570
+    0x1.p0,
+    0.0f, 0.0f
+  },
+  { // Entry 571
+    0x1.p0,
+    0.0f, -0.0f
+  },
+  { // Entry 572
+    0x1.p0,
+    -0.0f, 0.0f
+  },
+  { // Entry 573
+    0x1.p0,
+    -0.0f, -0.0f
+  },
+  { // Entry 574
+    0x1.p0,
+    -0x1.p-149, 0.0f
+  },
+  { // Entry 575
+    0x1.p0,
+    -0x1.p-149, -0.0f
+  },
+  { // Entry 576
+    0x1.p0,
+    -0x1.p-126, 0.0f
+  },
+  { // Entry 577
+    0x1.p0,
+    -0x1.p-126, -0.0f
+  },
+  { // Entry 578
+    0x1.p0,
+    -0x1.fffffep127, 0.0f
+  },
+  { // Entry 579
+    0x1.p0,
+    -0x1.fffffep127, -0.0f
+  },
+  { // Entry 580
+    0x1.p0,
+    -HUGE_VALF, 0.0f
+  },
+  { // Entry 581
+    0x1.p0,
+    -HUGE_VALF, -0.0f
+  },
+  { // Entry 582
+    HUGE_VALF,
+    0x1.p-126, -HUGE_VALF
+  },
+  { // Entry 583
+    HUGE_VALF,
+    0x1.p-149, -HUGE_VALF
+  },
+  { // Entry 584
+    HUGE_VALF,
+    -0x1.p-149, -HUGE_VALF
+  },
+  { // Entry 585
+    HUGE_VALF,
+    -0x1.p-126, -HUGE_VALF
+  },
+  { // Entry 586
+    0.0,
+    HUGE_VALF, -HUGE_VALF
+  },
+  { // Entry 587
+    0.0,
+    0x1.fffffep127, -HUGE_VALF
+  },
+  { // Entry 588
+    0.0,
+    0x1.80p0, -HUGE_VALF
+  },
+  { // Entry 589
+    0.0,
+    -0x1.80p0, -HUGE_VALF
+  },
+  { // Entry 590
+    0.0,
+    -0x1.fffffep127, -HUGE_VALF
+  },
+  { // Entry 591
+    0.0,
+    -HUGE_VALF, -HUGE_VALF
+  },
+  { // Entry 592
+    0.0,
+    0x1.p-126, HUGE_VALF
+  },
+  { // Entry 593
+    0.0,
+    0x1.p-149, HUGE_VALF
+  },
+  { // Entry 594
+    0.0,
+    0.0f, HUGE_VALF
+  },
+  { // Entry 595
+    0.0,
+    -0.0f, HUGE_VALF
+  },
+  { // Entry 596
+    0.0,
+    -0x1.p-149, HUGE_VALF
+  },
+  { // Entry 597
+    0.0,
+    -0x1.p-126, HUGE_VALF
+  },
+  { // Entry 598
+    HUGE_VALF,
+    HUGE_VALF, HUGE_VALF
+  },
+  { // Entry 599
+    HUGE_VALF,
+    0x1.fffffep127, HUGE_VALF
+  },
+  { // Entry 600
+    HUGE_VALF,
+    0x1.80p0, HUGE_VALF
+  },
+  { // Entry 601
+    HUGE_VALF,
+    -0x1.80p0, HUGE_VALF
+  },
+  { // Entry 602
+    HUGE_VALF,
+    -0x1.fffffep127, HUGE_VALF
+  },
+  { // Entry 603
+    HUGE_VALF,
+    -HUGE_VALF, HUGE_VALF
+  },
+  { // Entry 604
+    -0.0,
+    -HUGE_VALF, -0x1.80p1
+  },
+  { // Entry 605
+    -0.0,
+    -HUGE_VALF, -0x1.p0
+  },
+  { // Entry 606
+    0.0,
+    -HUGE_VALF, -HUGE_VALF
+  },
+  { // Entry 607
+    0.0,
+    -HUGE_VALF, -0x1.921fb6p1
+  },
+  { // Entry 608
+    0.0,
+    -HUGE_VALF, -0x1.921fb6p0
+  },
+  { // Entry 609
+    0.0,
+    -HUGE_VALF, -0x1.fffffep127
+  },
+  { // Entry 610
+    0.0,
+    -HUGE_VALF, -0x1.80p2
+  },
+  { // Entry 611
+    0.0,
+    -HUGE_VALF, -0x1.p1
+  },
+  { // Entry 612
+    0.0,
+    -HUGE_VALF, -0x1.p-126
+  },
+  { // Entry 613
+    0.0,
+    -HUGE_VALF, -0x1.p-149
+  },
+  { // Entry 614
+    -HUGE_VALF,
+    -HUGE_VALF, 0x1.80p1
+  },
+  { // Entry 615
+    -HUGE_VALF,
+    -HUGE_VALF, 0x1.40p2
+  },
+  { // Entry 616
+    HUGE_VALF,
+    -HUGE_VALF, HUGE_VALF
+  },
+  { // Entry 617
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.921fb6p1
+  },
+  { // Entry 618
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.921fb6p0
+  },
+  { // Entry 619
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.fffffep127
+  },
+  { // Entry 620
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.80p2
+  },
+  { // Entry 621
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.p1
+  },
+  { // Entry 622
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.p-126
+  },
+  { // Entry 623
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.p-149
+  },
+  { // Entry 624
+    0.0,
+    HUGE_VALF, -0x1.p-149
+  },
+  { // Entry 625
+    0.0,
+    HUGE_VALF, -0x1.p-126
+  },
+  { // Entry 626
+    0.0,
+    HUGE_VALF, -0x1.fffffep127
+  },
+  { // Entry 627
+    0.0,
+    HUGE_VALF, -HUGE_VALF
+  },
+  { // Entry 628
+    HUGE_VALF,
+    HUGE_VALF, HUGE_VALF
+  },
+  { // Entry 629
+    HUGE_VALF,
+    HUGE_VALF, 0x1.fffffep127
+  },
+  { // Entry 630
+    HUGE_VALF,
+    HUGE_VALF, 0x1.p-126
+  },
+  { // Entry 631
+    HUGE_VALF,
+    HUGE_VALF, 0x1.p-149
+  },
+  { // Entry 632
+    HUGE_VALF,
+    0x1.fffffep127, 0x1.fffffep127
+  },
+  { // Entry 633
+    0.0f,
+    0x1.p-126, 0x1.p1
+  },
+  { // Entry 634
+    0.0f,
+    -0x1.p-126, 0x1.p1
+  },
+  { // Entry 635
+    0.0f,
+    0x1.p-149, 0x1.p1
+  },
+  { // Entry 636
+    0.0f,
+    -0x1.p-149, 0x1.p1
+  },
+  { // Entry 637
+    HUGE_VALF,
+    HUGE_VALF, 0x1.p-1
+  },
+  { // Entry 638
+    0x1.fffffeffffffbfffffdfffffebfffff1p63,
+    0x1.fffffep127, 0x1.p-1
+  },
+  { // Entry 639
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.p-1, 0x1.p-1
+  },
+  { // Entry 640
+    0x1.p-63,
+    0x1.p-126, 0x1.p-1
+  },
+  { // Entry 641
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
+    0x1.p-149, 0x1.p-1
+  },
+  { // Entry 642
+    0.0,
+    0.0f, 0x1.p-1
+  },
+  { // Entry 643
+    0.0,
+    -0.0f, 0x1.p-1
+  },
+  { // Entry 644
+    HUGE_VALF,
+    -HUGE_VALF, 0x1.p-1
+  },
+  { // Entry 645
+    0.0,
+    HUGE_VALF, -0x1.p-1
+  },
+  { // Entry 646
+    0x1.0000008000006000005000004600003fp-64,
+    0x1.fffffep127, -0x1.p-1
+  },
+  { // Entry 647
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p-1, -0x1.p-1
+  },
+  { // Entry 648
+    0x1.p63,
+    0x1.p-126, -0x1.p-1
+  },
+  { // Entry 649
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep74,
+    0x1.p-149, -0x1.p-1
+  },
+  { // Entry 650
+    HUGE_VALF,
+    0.0f, -0x1.p-1
+  },
+  { // Entry 651
+    HUGE_VALF,
+    -0.0f, -0x1.p-1
+  },
+  { // Entry 652
+    0.0,
+    -HUGE_VALF, -0x1.p-1
+  },
+  { // Entry 653
+    0.0,
+    0x1.p-1, HUGE_VALF
+  },
+  { // Entry 654
+    0.0f,
+    0x1.p-1, 0x1.fffffep127
+  },
+  { // Entry 655
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.p-1, 0x1.p-1
+  },
+  { // Entry 656
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    0x1.p-1, 0x1.p-126
+  },
+  { // Entry 657
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-1, 0x1.p-149
+  },
+  { // Entry 658
+    0x1.p0,
+    0x1.p-1, 0.0f
+  },
+  { // Entry 659
+    0x1.p0,
+    0x1.p-1, -0.0f
+  },
+  { // Entry 660
+    0x1.p0,
+    0x1.p-1, -0x1.p-149
+  },
+  { // Entry 661
+    0x1.00000000000000000000000000000002p0,
+    0x1.p-1, -0x1.p-126
+  },
+  { // Entry 662
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p-1, -0x1.p-1
+  },
+  { // Entry 663
+    HUGE_VALF,
+    0x1.p-1, -0x1.fffffep127
+  },
+  { // Entry 664
+    HUGE_VALF,
+    0x1.p-1, -HUGE_VALF
+  },
+  { // Entry 665
+    0.0,
+    -0x1.p-1, HUGE_VALF
+  },
+  { // Entry 666
+    0.0f,
+    -0x1.p-1, 0x1.fffffep127
+  },
+  { // Entry 667
+    0x1.p0,
+    -0x1.p-1, 0.0f
+  },
+  { // Entry 668
+    0x1.p0,
+    -0x1.p-1, -0.0f
+  },
+  { // Entry 669
+    HUGE_VALF,
+    -0x1.p-1, -0x1.fffffep127
+  },
+  { // Entry 670
+    HUGE_VALF,
+    -0x1.p-1, -HUGE_VALF
+  },
+  { // Entry 671
+    0x1.p1,
+    0x1.p2, 0x1.p-1
+  },
+  { // Entry 672
+    0x1.80p1,
+    0x1.20p3, 0x1.p-1
+  },
+  { // Entry 673
+    0x1.p2,
+    0x1.p4, 0x1.p-1
+  },
+  { // Entry 674
+    0x1.p-1,
+    0x1.p2, -0x1.p-1
+  },
+  { // Entry 675
+    0x1.p-2,
+    0x1.p4, -0x1.p-1
+  },
+  { // Entry 676
+    0x1.p-3,
+    0x1.p6, -0x1.p-1
+  },
+  { // Entry 677
+    HUGE_VALF,
+    0x1.fffffep-1, -0x1.74910cp62
+  },
+  { // Entry 678
+    0.0f,
+    0x1.fffffep-1, 0x1.74910cp62
+  },
+  { // Entry 679
+    0x1.p2,
+    0x1.p1, 0x1.p1
+  },
+  { // Entry 680
+    0x1.p-2,
+    0x1.p1, -0x1.p1
+  },
+  { // Entry 681
+    0x1.p2,
+    -0x1.p1, 0x1.p1
+  },
+  { // Entry 682
+    0x1.p-2,
+    -0x1.p1, -0x1.p1
+  },
+  { // Entry 683
+    0x1.b0p4,
+    0x1.80p1, 0x1.80p1
+  },
+  { // Entry 684
+    0x1.86a0p11,
+    0x1.40p2, 0x1.40p2
+  },
+  { // Entry 685
+    0x1.921ee0p19,
+    0x1.c0p2, 0x1.c0p2
+  },
+  { // Entry 686
+    0x1.2a05f2p33,
+    0x1.40p3, 0x1.40p3
+  },
+};
diff --git a/tests/math_data/remainder_intel_data.h b/tests/math_data/remainder_intel_data.h
new file mode 100644
index 0000000..7219616
--- /dev/null
+++ b/tests/math_data/remainder_intel_data.h
@@ -0,0 +1,1308 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_remainder_intel_data[] = {
+  { // Entry 0
+    -0x1.p-51,
+    -0x1.4p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 1
+    0x1.c0p46,
+    -0x1.8888888888888p100,
+    -0x1.1111111111111p95
+  },
+  { // Entry 2
+    0x1.0c6f7a20p-16,
+    -0x1.b155555555555p9,
+    -0x1.b15555db8d126p9
+  },
+  { // Entry 3
+    -0.0,
+    -0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 4
+    -0.0,
+    -0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 7
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 8
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 9
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 10
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 11
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 12
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 13
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 14
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 15
+    0.0,
+    0x1.0p15,
+    -0x1.0p-117
+  },
+  { // Entry 16
+    0.0,
+    0x1.0p15,
+    0x1.0p-117
+  },
+  { // Entry 17
+    0.0,
+    0x1.0p16,
+    -0x1.0p-117
+  },
+  { // Entry 18
+    0.0,
+    0x1.0p16,
+    0x1.0p-117
+  },
+  { // Entry 19
+    0.0,
+    0x1.0p15,
+    0x1.0p15
+  },
+  { // Entry 20
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p16
+  },
+  { // Entry 21
+    0.0,
+    0x1.0p16,
+    0x1.0p15
+  },
+  { // Entry 22
+    0.0,
+    0x1.0p16,
+    0x1.0p16
+  },
+  { // Entry 23
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p117
+  },
+  { // Entry 24
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p118
+  },
+  { // Entry 25
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p117
+  },
+  { // Entry 26
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p118
+  },
+  { // Entry 27
+    0.0,
+    0x1.0p117,
+    -0x1.0p-117
+  },
+  { // Entry 28
+    0.0,
+    0x1.0p117,
+    0x1.0p-117
+  },
+  { // Entry 29
+    0.0,
+    0x1.0p118,
+    -0x1.0p-117
+  },
+  { // Entry 30
+    0.0,
+    0x1.0p118,
+    0x1.0p-117
+  },
+  { // Entry 31
+    0.0,
+    0x1.0p117,
+    0x1.0p15
+  },
+  { // Entry 32
+    0.0,
+    0x1.0p117,
+    0x1.0p16
+  },
+  { // Entry 33
+    0.0,
+    0x1.0p118,
+    0x1.0p15
+  },
+  { // Entry 34
+    0.0,
+    0x1.0p118,
+    0x1.0p16
+  },
+  { // Entry 35
+    0.0,
+    0x1.0p117,
+    0x1.0p117
+  },
+  { // Entry 36
+    0x1.p117,
+    0x1.0p117,
+    0x1.0p118
+  },
+  { // Entry 37
+    0.0,
+    0x1.0p118,
+    0x1.0p117
+  },
+  { // Entry 38
+    0.0,
+    0x1.0p118,
+    0x1.0p118
+  },
+  { // Entry 39
+    0.0,
+    0x1.9p6,
+    0x1.4p3
+  },
+  { // Entry 40
+    0x1.p0,
+    0x1.9p6,
+    0x1.6p3
+  },
+  { // Entry 41
+    0x1.p2,
+    0x1.9p6,
+    0x1.8p3
+  },
+  { // Entry 42
+    0x1.p0,
+    0x1.940p6,
+    0x1.4p3
+  },
+  { // Entry 43
+    0x1.p1,
+    0x1.940p6,
+    0x1.6p3
+  },
+  { // Entry 44
+    0x1.40p2,
+    0x1.940p6,
+    0x1.8p3
+  },
+  { // Entry 45
+    0x1.p1,
+    0x1.980p6,
+    0x1.4p3
+  },
+  { // Entry 46
+    0x1.80p1,
+    0x1.980p6,
+    0x1.6p3
+  },
+  { // Entry 47
+    0x1.80p2,
+    0x1.980p6,
+    0x1.8p3
+  },
+  { // Entry 48
+    0x1.80p1,
+    0x1.9c0p6,
+    0x1.4p3
+  },
+  { // Entry 49
+    0x1.p2,
+    0x1.9c0p6,
+    0x1.6p3
+  },
+  { // Entry 50
+    -0x1.40p2,
+    0x1.9c0p6,
+    0x1.8p3
+  },
+  { // Entry 51
+    0x1.p2,
+    0x1.ap6,
+    0x1.4p3
+  },
+  { // Entry 52
+    0x1.40p2,
+    0x1.ap6,
+    0x1.6p3
+  },
+  { // Entry 53
+    -0x1.p2,
+    0x1.ap6,
+    0x1.8p3
+  },
+  { // Entry 54
+    0x1.40p2,
+    0x1.a40p6,
+    0x1.4p3
+  },
+  { // Entry 55
+    -0x1.40p2,
+    0x1.a40p6,
+    0x1.6p3
+  },
+  { // Entry 56
+    -0x1.80p1,
+    0x1.a40p6,
+    0x1.8p3
+  },
+  { // Entry 57
+    -0x1.p2,
+    0x1.a80p6,
+    0x1.4p3
+  },
+  { // Entry 58
+    -0x1.p2,
+    0x1.a80p6,
+    0x1.6p3
+  },
+  { // Entry 59
+    -0x1.p1,
+    0x1.a80p6,
+    0x1.8p3
+  },
+  { // Entry 60
+    -0x1.80p1,
+    0x1.ac0p6,
+    0x1.4p3
+  },
+  { // Entry 61
+    -0x1.80p1,
+    0x1.ac0p6,
+    0x1.6p3
+  },
+  { // Entry 62
+    -0x1.p0,
+    0x1.ac0p6,
+    0x1.8p3
+  },
+  { // Entry 63
+    -0x1.p1,
+    0x1.bp6,
+    0x1.4p3
+  },
+  { // Entry 64
+    -0x1.p1,
+    0x1.bp6,
+    0x1.6p3
+  },
+  { // Entry 65
+    0.0,
+    0x1.bp6,
+    0x1.8p3
+  },
+  { // Entry 66
+    -0x1.p0,
+    0x1.b40p6,
+    0x1.4p3
+  },
+  { // Entry 67
+    -0x1.p0,
+    0x1.b40p6,
+    0x1.6p3
+  },
+  { // Entry 68
+    0x1.p0,
+    0x1.b40p6,
+    0x1.8p3
+  },
+  { // Entry 69
+    0.0,
+    0x1.b80p6,
+    0x1.4p3
+  },
+  { // Entry 70
+    0.0,
+    0x1.b80p6,
+    0x1.6p3
+  },
+  { // Entry 71
+    0x1.p1,
+    0x1.b80p6,
+    0x1.8p3
+  },
+  { // Entry 72
+    -0.0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 73
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 74
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 75
+    0x1.p-52,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0.0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.p-53,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    0x1.80p-52,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    0x1.p-53,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 82
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 84
+    -0x1.p-53,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 86
+    0x1.p-52,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 88
+    0x1.p-53,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 89
+    0x1.80p-52,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 90
+    -0x1.80p-52,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 91
+    -0x1.p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 92
+    0.0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 93
+    -0x1.p-52,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 94
+    0.0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 95
+    0x1.p-53,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 96
+    0.0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 97
+    0x1.p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 98
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 99
+    0.0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 100
+    -0x1.p-53,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 101
+    -0x1.80p-52,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 102
+    0x1.p-53,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0.0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 104
+    -0x1.p-52,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 105
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0x1.p-52,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 107
+    0.0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 108
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 109
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 110
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 112
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 113
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 115
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 116
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 117
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 119
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 120
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 122
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 123
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 125
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 126
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 128
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 129
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 130
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 131
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 132
+    0x1.ffffffffffffc0p-3,
+    -0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 133
+    -0x1.p-1,
+    -0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 134
+    -0.0,
+    -0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 135
+    -0x1.p-2,
+    -0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 136
+    -0.0,
+    -0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 137
+    0x1.p-1,
+    -0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 138
+    -0.0,
+    -0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    0x1.p-2,
+    -0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 140
+    -0x1.00000000000040p-2,
+    -0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 141
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 142
+    -0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 143
+    -0x1.ffffffffffffc0p-2,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 144
+    -0x1.ffffffffffffe0p-2,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 146
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 147
+    -0x1.ffffffffffffc0p-2,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 148
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 149
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 150
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 151
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 152
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 153
+    -0x1.p-53,
+    -0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 155
+    -0x1.p-51,
+    -0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 156
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 157
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 158
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 159
+    0.0,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 160
+    -0x1.p-2,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 161
+    0x1.00000000000040p-2,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 162
+    0x1.p-2,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    0.0,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 164
+    -0x1.p-1,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    -0x1.ffffffffffffc0p-3,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 166
+    0x1.p-1,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 167
+    0.0,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 168
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 169
+    -0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 170
+    -0x1.ffffffffffffc0p-2,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 171
+    -0x1.ffffffffffffe0p-2,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 172
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 173
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 174
+    -0x1.ffffffffffffc0p-2,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 175
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 176
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 177
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0p0
+  },
+  { // Entry 179
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 180
+    -0x1.p-51,
+    -0x1.0p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.0p53,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0x1.p-53,
+    -0x1.0p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 183
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    -0x1.0000000000001p0
+  },
+  { // Entry 184
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.0p0
+  },
+  { // Entry 185
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 187
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 188
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 189
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 190
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 191
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 192
+    0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 193
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 194
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 195
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 196
+    0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 198
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 199
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 200
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 202
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 203
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 204
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 205
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 207
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 208
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 211
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 212
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 213
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 214
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 215
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 216
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 217
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 227
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 228
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 230
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 233
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 234
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 235
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 236
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 237
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 238
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 239
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 240
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 241
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 242
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 243
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 244
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 245
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 246
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 247
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 248
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 249
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 250
+    -0x1.p0,
+    0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 251
+    0x1.p0,
+    -0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 252
+    -0x1.p0,
+    0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 253
+    0x1.p0,
+    -0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 254
+    0x1.p0,
+    0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 255
+    -0x1.p0,
+    -0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 256
+    0x1.p0,
+    0x1.4p2,
+    -0x1.0p1
+  },
+  { // Entry 257
+    -0x1.p0,
+    -0x1.4p2,
+    -0x1.0p1
+  }
+};
diff --git a/tests/math_data/remainderf_intel_data.h b/tests/math_data/remainderf_intel_data.h
new file mode 100644
index 0000000..94c4af5
--- /dev/null
+++ b/tests/math_data/remainderf_intel_data.h
@@ -0,0 +1,1293 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_remainderf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 3
+    0.0,
+    0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 4
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 5
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 6
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 7
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 8
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 9
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 10
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 11
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 12
+    0.0,
+    0x1.p15,
+    -0x1.p-117
+  },
+  { // Entry 13
+    0.0,
+    0x1.p15,
+    0x1.p-117
+  },
+  { // Entry 14
+    0.0,
+    0x1.p16,
+    -0x1.p-117
+  },
+  { // Entry 15
+    0.0,
+    0x1.p16,
+    0x1.p-117
+  },
+  { // Entry 16
+    0.0,
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 17
+    0x1.p15,
+    0x1.p15,
+    0x1.p16
+  },
+  { // Entry 18
+    0.0,
+    0x1.p16,
+    0x1.p15
+  },
+  { // Entry 19
+    0.0,
+    0x1.p16,
+    0x1.p16
+  },
+  { // Entry 20
+    0x1.p15,
+    0x1.p15,
+    0x1.p117
+  },
+  { // Entry 21
+    0x1.p15,
+    0x1.p15,
+    0x1.p118
+  },
+  { // Entry 22
+    0x1.p16,
+    0x1.p16,
+    0x1.p117
+  },
+  { // Entry 23
+    0x1.p16,
+    0x1.p16,
+    0x1.p118
+  },
+  { // Entry 24
+    0.0,
+    0x1.p117,
+    -0x1.p-117
+  },
+  { // Entry 25
+    0.0,
+    0x1.p117,
+    0x1.p-117
+  },
+  { // Entry 26
+    0.0,
+    0x1.p118,
+    -0x1.p-117
+  },
+  { // Entry 27
+    0.0,
+    0x1.p118,
+    0x1.p-117
+  },
+  { // Entry 28
+    0.0,
+    0x1.p117,
+    0x1.p15
+  },
+  { // Entry 29
+    0.0,
+    0x1.p117,
+    0x1.p16
+  },
+  { // Entry 30
+    0.0,
+    0x1.p118,
+    0x1.p15
+  },
+  { // Entry 31
+    0.0,
+    0x1.p118,
+    0x1.p16
+  },
+  { // Entry 32
+    0.0,
+    0x1.p117,
+    0x1.p117
+  },
+  { // Entry 33
+    0x1.p117,
+    0x1.p117,
+    0x1.p118
+  },
+  { // Entry 34
+    0.0,
+    0x1.p118,
+    0x1.p117
+  },
+  { // Entry 35
+    0.0,
+    0x1.p118,
+    0x1.p118
+  },
+  { // Entry 36
+    0.0,
+    0x1.90p6,
+    0x1.40p3
+  },
+  { // Entry 37
+    0x1.p0,
+    0x1.90p6,
+    0x1.60p3
+  },
+  { // Entry 38
+    0x1.p2,
+    0x1.90p6,
+    0x1.80p3
+  },
+  { // Entry 39
+    0x1.p0,
+    0x1.94p6,
+    0x1.40p3
+  },
+  { // Entry 40
+    0x1.p1,
+    0x1.94p6,
+    0x1.60p3
+  },
+  { // Entry 41
+    0x1.40p2,
+    0x1.94p6,
+    0x1.80p3
+  },
+  { // Entry 42
+    0x1.p1,
+    0x1.98p6,
+    0x1.40p3
+  },
+  { // Entry 43
+    0x1.80p1,
+    0x1.98p6,
+    0x1.60p3
+  },
+  { // Entry 44
+    0x1.80p2,
+    0x1.98p6,
+    0x1.80p3
+  },
+  { // Entry 45
+    0x1.80p1,
+    0x1.9cp6,
+    0x1.40p3
+  },
+  { // Entry 46
+    0x1.p2,
+    0x1.9cp6,
+    0x1.60p3
+  },
+  { // Entry 47
+    -0x1.40p2,
+    0x1.9cp6,
+    0x1.80p3
+  },
+  { // Entry 48
+    0x1.p2,
+    0x1.a0p6,
+    0x1.40p3
+  },
+  { // Entry 49
+    0x1.40p2,
+    0x1.a0p6,
+    0x1.60p3
+  },
+  { // Entry 50
+    -0x1.p2,
+    0x1.a0p6,
+    0x1.80p3
+  },
+  { // Entry 51
+    0x1.40p2,
+    0x1.a4p6,
+    0x1.40p3
+  },
+  { // Entry 52
+    -0x1.40p2,
+    0x1.a4p6,
+    0x1.60p3
+  },
+  { // Entry 53
+    -0x1.80p1,
+    0x1.a4p6,
+    0x1.80p3
+  },
+  { // Entry 54
+    -0x1.p2,
+    0x1.a8p6,
+    0x1.40p3
+  },
+  { // Entry 55
+    -0x1.p2,
+    0x1.a8p6,
+    0x1.60p3
+  },
+  { // Entry 56
+    -0x1.p1,
+    0x1.a8p6,
+    0x1.80p3
+  },
+  { // Entry 57
+    -0x1.80p1,
+    0x1.acp6,
+    0x1.40p3
+  },
+  { // Entry 58
+    -0x1.80p1,
+    0x1.acp6,
+    0x1.60p3
+  },
+  { // Entry 59
+    -0x1.p0,
+    0x1.acp6,
+    0x1.80p3
+  },
+  { // Entry 60
+    -0x1.p1,
+    0x1.b0p6,
+    0x1.40p3
+  },
+  { // Entry 61
+    -0x1.p1,
+    0x1.b0p6,
+    0x1.60p3
+  },
+  { // Entry 62
+    0.0,
+    0x1.b0p6,
+    0x1.80p3
+  },
+  { // Entry 63
+    -0x1.p0,
+    0x1.b4p6,
+    0x1.40p3
+  },
+  { // Entry 64
+    -0x1.p0,
+    0x1.b4p6,
+    0x1.60p3
+  },
+  { // Entry 65
+    0x1.p0,
+    0x1.b4p6,
+    0x1.80p3
+  },
+  { // Entry 66
+    0.0,
+    0x1.b8p6,
+    0x1.40p3
+  },
+  { // Entry 67
+    0.0,
+    0x1.b8p6,
+    0x1.60p3
+  },
+  { // Entry 68
+    0x1.p1,
+    0x1.b8p6,
+    0x1.80p3
+  },
+  { // Entry 69
+    -0.0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 70
+    -0x1.p-23,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 71
+    -0x1.80p-23,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 72
+    0x1.p-23,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 73
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 74
+    -0x1.p-24,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 75
+    0x1.80p-23,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 76
+    0x1.p-24,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 77
+    -0.0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 78
+    -0x1.80p-23,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 79
+    -0x1.p-23,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 81
+    -0x1.p-24,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 82
+    -0.0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 83
+    0x1.p-23,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 84
+    -0.0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 85
+    0x1.p-24,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 86
+    0x1.80p-23,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 87
+    -0x1.80p-23,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 88
+    -0x1.p-24,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 89
+    0.0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 90
+    -0x1.p-23,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 91
+    0.0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 92
+    0x1.p-24,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 93
+    0.0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 94
+    0x1.p-23,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 95
+    0x1.80p-23,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 96
+    0.0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 97
+    -0x1.p-24,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 98
+    -0x1.80p-23,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 99
+    0x1.p-24,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 100
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 101
+    -0x1.p-23,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 102
+    0x1.80p-23,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 103
+    0x1.p-23,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 104
+    0.0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 105
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 106
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 107
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 108
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 109
+    0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 110
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 111
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 112
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 113
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 114
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 115
+    0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 116
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 117
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 118
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 119
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 120
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 121
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 122
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 123
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 126
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 127
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 128
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 129
+    0x1.fffff8p-3,
+    -0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 130
+    -0x1.p-1,
+    -0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 131
+    -0.0,
+    -0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 132
+    -0x1.p-2,
+    -0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 133
+    -0.0,
+    -0x1.p22,
+    0x1.p0
+  },
+  { // Entry 134
+    0x1.p-1,
+    -0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 135
+    -0.0,
+    -0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 136
+    0x1.p-2,
+    -0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 137
+    -0x1.000008p-2,
+    -0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 138
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 139
+    -0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 140
+    -0x1.fffff8p-2,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 141
+    -0x1.fffffcp-2,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 142
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 143
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 144
+    -0x1.fffff8p-2,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 145
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 146
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 147
+    -0x1.80p-23,
+    -0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 148
+    -0.0,
+    -0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 149
+    -0.0,
+    -0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 150
+    -0x1.p-24,
+    -0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 151
+    -0.0,
+    -0x1.p24,
+    0x1.p0
+  },
+  { // Entry 152
+    -0x1.p-22,
+    -0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 153
+    -0.0,
+    -0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 155
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 156
+    0.0,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    -0x1.p-2,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 158
+    0x1.000008p-2,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 159
+    0x1.p-2,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 160
+    0.0,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 161
+    -0x1.p-1,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 162
+    -0x1.fffff8p-3,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 163
+    0x1.p-1,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 164
+    0.0,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 165
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 166
+    -0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 167
+    -0x1.fffff8p-2,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 168
+    -0x1.fffffcp-2,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 169
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 170
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 171
+    -0x1.fffff8p-2,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 172
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 173
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 174
+    -0.0,
+    -0x1.000002p24,
+    -0x1.000002p0
+  },
+  { // Entry 175
+    -0.0,
+    -0x1.000002p24,
+    -0x1.p0
+  },
+  { // Entry 176
+    -0x1.80p-23,
+    -0x1.000002p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 177
+    -0x1.p-22,
+    -0x1.p24,
+    -0x1.000002p0
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.p24,
+    -0x1.p0
+  },
+  { // Entry 179
+    -0x1.p-24,
+    -0x1.p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 180
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    -0x1.000002p0
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.p0
+  },
+  { // Entry 182
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.fffffep-1
+  },
+  { // Entry 183
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 184
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 185
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 186
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 187
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 188
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 189
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 190
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 191
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 192
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 193
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 194
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 195
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 196
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 197
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 198
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 201
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 202
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 203
+    0.0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 204
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 205
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 206
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 207
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 209
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 210
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 211
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 212
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 213
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 214
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 215
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 216
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 217
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 218
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 219
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 220
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 221
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 222
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    0.0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 224
+    0.0,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 225
+    -0.0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 227
+    0.0,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 228
+    0.0,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 230
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 231
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 232
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 233
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 234
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 235
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 236
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 237
+    0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 238
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 239
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 241
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 242
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 243
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 244
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 245
+    0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 246
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 247
+    -0x1.p0,
+    0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 248
+    0x1.p0,
+    -0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 249
+    -0x1.p0,
+    0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 250
+    0x1.p0,
+    -0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 251
+    0x1.p0,
+    0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 252
+    -0x1.p0,
+    -0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 253
+    0x1.p0,
+    0x1.40p2,
+    -0x1.p1
+  },
+  { // Entry 254
+    -0x1.p0,
+    -0x1.40p2,
+    -0x1.p1
+  }
+};
diff --git a/tests/math_data/remquo_intel_data.h b/tests/math_data/remquo_intel_data.h
new file mode 100644
index 0000000..153b6e6
--- /dev/null
+++ b/tests/math_data/remquo_intel_data.h
@@ -0,0 +1,1584 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_int_2_t<double, double, double> g_remquo_intel_data[] = {
+  { // Entry 0
+    0x1.42967268315ap-13,
+    (int)-0x1.p1,
+    -0x1.0p-10,
+    0x1.2852ce4d062b4p-11
+  },
+  { // Entry 1
+    0x1.1ab75504464440p14,
+    (int)0x1.6a3b3618p30,
+    0x1.0295fad40a57fp117,
+    0x1.45d1745d17465p15
+  },
+  { // Entry 2
+    -0x1.d1a777081861p18,
+    (int)-0x1.0f62d4b8p30,
+    0x1.11f783ee89b08p99,
+    -0x1.fd6ef47d96f1cp19
+  },
+  { // Entry 3
+    -0x1.b0p3,
+    (int)-0x1.afe501b0p29,
+    0x1.ffffffffffffbp1023,
+    -0x1.001p10
+  },
+  { // Entry 4
+    -0x1.7d9165c00024p9,
+    (int)0x1.dd000030p29,
+    0x1.ffffffffffffbp1023,
+    0x1.0000000000003p14
+  },
+  { // Entry 5
+    -0x1.p-17,
+    (int)0.0,
+    0x1.ffffffffffffdp1023,
+    0x1.ffffffffffffep-2
+  },
+  { // Entry 6
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 7
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 8
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 9
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 10
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 11
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 12
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 13
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 14
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 15
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 16
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 17
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 18
+    0.0,
+    (int)0.0,
+    0x1.0p15,
+    -0x1.0p-117
+  },
+  { // Entry 19
+    0.0,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p-117
+  },
+  { // Entry 20
+    0.0,
+    (int)0.0,
+    0x1.0p16,
+    -0x1.0p-117
+  },
+  { // Entry 21
+    0.0,
+    (int)0.0,
+    0x1.0p16,
+    0x1.0p-117
+  },
+  { // Entry 22
+    0.0,
+    (int)0x1.p0,
+    0x1.0p15,
+    0x1.0p15
+  },
+  { // Entry 23
+    0x1.p15,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p16
+  },
+  { // Entry 24
+    0.0,
+    (int)0x1.p1,
+    0x1.0p16,
+    0x1.0p15
+  },
+  { // Entry 25
+    0.0,
+    (int)0x1.p0,
+    0x1.0p16,
+    0x1.0p16
+  },
+  { // Entry 26
+    0x1.p15,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p117
+  },
+  { // Entry 27
+    0x1.p15,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p118
+  },
+  { // Entry 28
+    0x1.p16,
+    (int)0.0,
+    0x1.0p16,
+    0x1.0p117
+  },
+  { // Entry 29
+    0x1.p16,
+    (int)0.0,
+    0x1.0p16,
+    0x1.0p118
+  },
+  { // Entry 30
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    -0x1.0p-117
+  },
+  { // Entry 31
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p-117
+  },
+  { // Entry 32
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    -0x1.0p-117
+  },
+  { // Entry 33
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    0x1.0p-117
+  },
+  { // Entry 34
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p15
+  },
+  { // Entry 35
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p16
+  },
+  { // Entry 36
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    0x1.0p15
+  },
+  { // Entry 37
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    0x1.0p16
+  },
+  { // Entry 38
+    0.0,
+    (int)0x1.p0,
+    0x1.0p117,
+    0x1.0p117
+  },
+  { // Entry 39
+    0x1.p117,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p118
+  },
+  { // Entry 40
+    0.0,
+    (int)0x1.p1,
+    0x1.0p118,
+    0x1.0p117
+  },
+  { // Entry 41
+    0.0,
+    (int)0x1.p0,
+    0x1.0p118,
+    0x1.0p118
+  },
+  { // Entry 42
+    0.0,
+    (int)0x1.40p3,
+    0x1.9p6,
+    0x1.4p3
+  },
+  { // Entry 43
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.9p6,
+    0x1.6p3
+  },
+  { // Entry 44
+    0x1.p2,
+    (int)0x1.p3,
+    0x1.9p6,
+    0x1.8p3
+  },
+  { // Entry 45
+    0x1.p0,
+    (int)0x1.40p3,
+    0x1.940p6,
+    0x1.4p3
+  },
+  { // Entry 46
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.940p6,
+    0x1.6p3
+  },
+  { // Entry 47
+    0x1.40p2,
+    (int)0x1.p3,
+    0x1.940p6,
+    0x1.8p3
+  },
+  { // Entry 48
+    0x1.p1,
+    (int)0x1.40p3,
+    0x1.980p6,
+    0x1.4p3
+  },
+  { // Entry 49
+    0x1.80p1,
+    (int)0x1.20p3,
+    0x1.980p6,
+    0x1.6p3
+  },
+  { // Entry 50
+    0x1.80p2,
+    (int)0x1.p3,
+    0x1.980p6,
+    0x1.8p3
+  },
+  { // Entry 51
+    0x1.80p1,
+    (int)0x1.40p3,
+    0x1.9c0p6,
+    0x1.4p3
+  },
+  { // Entry 52
+    0x1.p2,
+    (int)0x1.20p3,
+    0x1.9c0p6,
+    0x1.6p3
+  },
+  { // Entry 53
+    -0x1.40p2,
+    (int)0x1.20p3,
+    0x1.9c0p6,
+    0x1.8p3
+  },
+  { // Entry 54
+    0x1.p2,
+    (int)0x1.40p3,
+    0x1.ap6,
+    0x1.4p3
+  },
+  { // Entry 55
+    0x1.40p2,
+    (int)0x1.20p3,
+    0x1.ap6,
+    0x1.6p3
+  },
+  { // Entry 56
+    -0x1.p2,
+    (int)0x1.20p3,
+    0x1.ap6,
+    0x1.8p3
+  },
+  { // Entry 57
+    0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a40p6,
+    0x1.4p3
+  },
+  { // Entry 58
+    -0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a40p6,
+    0x1.6p3
+  },
+  { // Entry 59
+    -0x1.80p1,
+    (int)0x1.20p3,
+    0x1.a40p6,
+    0x1.8p3
+  },
+  { // Entry 60
+    -0x1.p2,
+    (int)0x1.60p3,
+    0x1.a80p6,
+    0x1.4p3
+  },
+  { // Entry 61
+    -0x1.p2,
+    (int)0x1.40p3,
+    0x1.a80p6,
+    0x1.6p3
+  },
+  { // Entry 62
+    -0x1.p1,
+    (int)0x1.20p3,
+    0x1.a80p6,
+    0x1.8p3
+  },
+  { // Entry 63
+    -0x1.80p1,
+    (int)0x1.60p3,
+    0x1.ac0p6,
+    0x1.4p3
+  },
+  { // Entry 64
+    -0x1.80p1,
+    (int)0x1.40p3,
+    0x1.ac0p6,
+    0x1.6p3
+  },
+  { // Entry 65
+    -0x1.p0,
+    (int)0x1.20p3,
+    0x1.ac0p6,
+    0x1.8p3
+  },
+  { // Entry 66
+    -0x1.p1,
+    (int)0x1.60p3,
+    0x1.bp6,
+    0x1.4p3
+  },
+  { // Entry 67
+    -0x1.p1,
+    (int)0x1.40p3,
+    0x1.bp6,
+    0x1.6p3
+  },
+  { // Entry 68
+    0.0,
+    (int)0x1.20p3,
+    0x1.bp6,
+    0x1.8p3
+  },
+  { // Entry 69
+    -0x1.p0,
+    (int)0x1.60p3,
+    0x1.b40p6,
+    0x1.4p3
+  },
+  { // Entry 70
+    -0x1.p0,
+    (int)0x1.40p3,
+    0x1.b40p6,
+    0x1.6p3
+  },
+  { // Entry 71
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.b40p6,
+    0x1.8p3
+  },
+  { // Entry 72
+    0.0,
+    (int)0x1.60p3,
+    0x1.b80p6,
+    0x1.4p3
+  },
+  { // Entry 73
+    0.0,
+    (int)0x1.40p3,
+    0x1.b80p6,
+    0x1.6p3
+  },
+  { // Entry 74
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.b80p6,
+    0x1.8p3
+  },
+  { // Entry 75
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0x1.p-52,
+    (int)0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.80p-52,
+    (int)0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    0x1.p-52,
+    (int)0x1.p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0x1.p-53,
+    (int)0x1.p0,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    0x1.80p-52,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 82
+    0x1.p-53,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 83
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 84
+    -0x1.80p-52,
+    (int)-0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 85
+    -0x1.p-52,
+    (int)-0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 86
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 87
+    -0x1.p-53,
+    (int)-0x1.p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 88
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 89
+    0x1.p-52,
+    (int)-0x1.p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 90
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 91
+    0x1.p-53,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 92
+    0x1.80p-52,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 93
+    -0x1.80p-52,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 94
+    -0x1.p-53,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 95
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 96
+    -0x1.p-52,
+    (int)-0x1.p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 97
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 98
+    0x1.p-53,
+    (int)-0x1.p0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 99
+    0.0,
+    (int)-0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 100
+    0x1.p-52,
+    (int)-0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 101
+    0x1.80p-52,
+    (int)-0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 102
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    -0x1.p-53,
+    (int)0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 104
+    -0x1.80p-52,
+    (int)0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 105
+    0x1.p-53,
+    (int)0x1.p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0.0,
+    (int)0x1.p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 107
+    -0x1.p-52,
+    (int)0x1.p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 108
+    0x1.80p-52,
+    (int)0x1.p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 109
+    0x1.p-52,
+    (int)0x1.p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 110
+    0.0,
+    (int)0x1.p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 111
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 112
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 113
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 114
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 115
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 116
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 117
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 119
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 120
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 122
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 123
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 124
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 125
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 126
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 128
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 129
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 130
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 131
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 132
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 133
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 135
+    0x1.ffffffffffffc0p-3,
+    (int)-0x1.p0,
+    -0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 136
+    -0x1.p-1,
+    (int)0.0,
+    -0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 137
+    -0.0,
+    (int)0.0,
+    -0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 138
+    -0x1.p-2,
+    (int)0.0,
+    -0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    -0.0,
+    (int)0.0,
+    -0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 140
+    0x1.p-1,
+    (int)0.0,
+    -0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 141
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 142
+    0x1.p-2,
+    (int)0.0,
+    -0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 143
+    -0x1.00000000000040p-2,
+    (int)-0x1.fffffffcp30,
+    -0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 144
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 145
+    -0x1.p-1,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 146
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.fffffffcp30,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 147
+    -0x1.ffffffffffffe0p-2,
+    (int)0x1.p0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 148
+    0.0,
+    (int)0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 149
+    0x1.p-52,
+    (int)0x1.fffffffcp30,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 150
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.p1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 151
+    0.0,
+    (int)0x1.p0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 152
+    0.0,
+    (int)0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 153
+    -0x1.80p-52,
+    (int)-0x1.80p1,
+    -0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 154
+    -0.0,
+    (int)-0x1.p1,
+    -0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 155
+    -0.0,
+    (int)0.0,
+    -0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 156
+    -0x1.p-53,
+    (int)-0x1.p0,
+    -0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 157
+    -0.0,
+    (int)0.0,
+    -0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 158
+    -0x1.p-51,
+    (int)-0x1.fffffff8p30,
+    -0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 159
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 160
+    -0.0,
+    (int)-0x1.fffffffcp30,
+    -0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 161
+    -0x1.80p-51,
+    (int)-0x1.fffffff4p30,
+    -0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 162
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    -0x1.p-2,
+    (int)0.0,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.00000000000040p-2,
+    (int)0x1.fffffffcp30,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    0x1.p-2,
+    (int)0.0,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 166
+    0.0,
+    (int)0.0,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 167
+    -0x1.p-1,
+    (int)0.0,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 168
+    -0x1.ffffffffffffc0p-3,
+    (int)0x1.p0,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 169
+    0x1.p-1,
+    (int)0.0,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 170
+    0.0,
+    (int)0.0,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 171
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 172
+    -0x1.p-1,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 173
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.fffffffcp30,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 174
+    -0x1.ffffffffffffe0p-2,
+    (int)0x1.p0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 175
+    0.0,
+    (int)0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 176
+    0x1.p-52,
+    (int)0x1.fffffffcp30,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 177
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.p1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 178
+    0.0,
+    (int)0x1.p0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 179
+    0.0,
+    (int)0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 180
+    -0.0,
+    (int)0.0,
+    -0x1.0000000000001p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 181
+    -0.0,
+    (int)0x1.p1,
+    -0x1.0000000000001p53,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0x1.80p-52,
+    (int)0x1.80p1,
+    -0x1.0000000000001p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 183
+    -0x1.p-51,
+    (int)0x1.fffffff8p30,
+    -0x1.0p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 184
+    -0.0,
+    (int)0.0,
+    -0x1.0p53,
+    -0x1.0p0
+  },
+  { // Entry 185
+    -0x1.p-53,
+    (int)0x1.p0,
+    -0x1.0p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 186
+    -0x1.80p-51,
+    (int)0x1.fffffff4p30,
+    -0x1.fffffffffffffp52,
+    -0x1.0000000000001p0
+  },
+  { // Entry 187
+    -0.0,
+    (int)0x1.fffffffcp30,
+    -0x1.fffffffffffffp52,
+    -0x1.0p0
+  },
+  { // Entry 188
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 189
+    0x1.fffffffffffff0p1023,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 190
+    -0x1.fffffffffffff0p1023,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 191
+    0x1.fffffffffffff0p1023,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 192
+    -0x1.fffffffffffff0p1023,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 193
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 194
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 195
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 196
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 198
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 199
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 200
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    0.0,
+    (int)0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 202
+    -0.0,
+    (int)0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 203
+    0.0,
+    (int)0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 204
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 207
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 208
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 209
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 210
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 211
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 212
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 213
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 214
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 215
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 217
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 227
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 229
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 230
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 231
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 232
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 233
+    0.0,
+    (int)0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 234
+    0.0,
+    (int)0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 235
+    -0.0,
+    (int)0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 236
+    -0.0,
+    (int)0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 237
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 238
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 239
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 240
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 241
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 242
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 243
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 244
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 245
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 246
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 247
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 248
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 249
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 250
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 251
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 252
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 253
+    -0x1.p0,
+    (int)0x1.p1,
+    0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 254
+    0x1.p0,
+    (int)-0x1.p1,
+    -0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 255
+    -0x1.p0,
+    (int)-0x1.p1,
+    0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 256
+    0x1.p0,
+    (int)0x1.p1,
+    -0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 257
+    0x1.p0,
+    (int)0x1.p1,
+    0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 258
+    -0x1.p0,
+    (int)-0x1.p1,
+    -0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 259
+    0x1.p0,
+    (int)-0x1.p1,
+    0x1.4p2,
+    -0x1.0p1
+  },
+  { // Entry 260
+    -0x1.p0,
+    (int)0x1.p1,
+    -0x1.4p2,
+    -0x1.0p1
+  }
+};
diff --git a/tests/math_data/remquof_intel_data.h b/tests/math_data/remquof_intel_data.h
new file mode 100644
index 0000000..2eebbae
--- /dev/null
+++ b/tests/math_data/remquof_intel_data.h
@@ -0,0 +1,1578 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_int_2_t<float, float, float> g_remquof_intel_data[] = {
+  { // Entry 0
+    0x1.72c2c0p18,
+    (int)-0x1.b37d2b60p28,
+    -0x1.285308p99,
+    0x1.7a4110p19
+  },
+  { // Entry 1
+    -0x1.96dfb0p13,
+    (int)0x1.212d5d58p30,
+    0x1.0295fap117,
+    0x1.0cede2p15
+  },
+  { // Entry 2
+    0x1.fd0030p20,
+    (int)-0x1.007ff8p22,
+    0x1.ffffe6p127,
+    -0x1.000006p22
+  },
+  { // Entry 3
+    0x1.4782b0p2,
+    (int)0x1.4323c158p30,
+    0x1.fffff8p127,
+    0x1.dffffep4
+  },
+  { // Entry 4
+    -0x1.p-11,
+    (int)0x1.ffffc0p30,
+    0x1.fffffap127,
+    0x1.fffffcp-1
+  },
+  { // Entry 5
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 6
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 7
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 8
+    0.0,
+    (int)0x1.p0,
+    0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 9
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 10
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 11
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 12
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 13
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 14
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 15
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 16
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 17
+    0.0,
+    (int)0.0,
+    0x1.p15,
+    -0x1.p-117
+  },
+  { // Entry 18
+    0.0,
+    (int)0.0,
+    0x1.p15,
+    0x1.p-117
+  },
+  { // Entry 19
+    0.0,
+    (int)0.0,
+    0x1.p16,
+    -0x1.p-117
+  },
+  { // Entry 20
+    0.0,
+    (int)0.0,
+    0x1.p16,
+    0x1.p-117
+  },
+  { // Entry 21
+    0.0,
+    (int)0x1.p0,
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 22
+    0x1.p15,
+    (int)0.0,
+    0x1.p15,
+    0x1.p16
+  },
+  { // Entry 23
+    0.0,
+    (int)0x1.p1,
+    0x1.p16,
+    0x1.p15
+  },
+  { // Entry 24
+    0.0,
+    (int)0x1.p0,
+    0x1.p16,
+    0x1.p16
+  },
+  { // Entry 25
+    0x1.p15,
+    (int)0.0,
+    0x1.p15,
+    0x1.p117
+  },
+  { // Entry 26
+    0x1.p15,
+    (int)0.0,
+    0x1.p15,
+    0x1.p118
+  },
+  { // Entry 27
+    0x1.p16,
+    (int)0.0,
+    0x1.p16,
+    0x1.p117
+  },
+  { // Entry 28
+    0x1.p16,
+    (int)0.0,
+    0x1.p16,
+    0x1.p118
+  },
+  { // Entry 29
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    -0x1.p-117
+  },
+  { // Entry 30
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    0x1.p-117
+  },
+  { // Entry 31
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    -0x1.p-117
+  },
+  { // Entry 32
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    0x1.p-117
+  },
+  { // Entry 33
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    0x1.p15
+  },
+  { // Entry 34
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    0x1.p16
+  },
+  { // Entry 35
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    0x1.p15
+  },
+  { // Entry 36
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    0x1.p16
+  },
+  { // Entry 37
+    0.0,
+    (int)0x1.p0,
+    0x1.p117,
+    0x1.p117
+  },
+  { // Entry 38
+    0x1.p117,
+    (int)0.0,
+    0x1.p117,
+    0x1.p118
+  },
+  { // Entry 39
+    0.0,
+    (int)0x1.p1,
+    0x1.p118,
+    0x1.p117
+  },
+  { // Entry 40
+    0.0,
+    (int)0x1.p0,
+    0x1.p118,
+    0x1.p118
+  },
+  { // Entry 41
+    0.0,
+    (int)0x1.40p3,
+    0x1.90p6,
+    0x1.40p3
+  },
+  { // Entry 42
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.90p6,
+    0x1.60p3
+  },
+  { // Entry 43
+    0x1.p2,
+    (int)0x1.p3,
+    0x1.90p6,
+    0x1.80p3
+  },
+  { // Entry 44
+    0x1.p0,
+    (int)0x1.40p3,
+    0x1.94p6,
+    0x1.40p3
+  },
+  { // Entry 45
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.94p6,
+    0x1.60p3
+  },
+  { // Entry 46
+    0x1.40p2,
+    (int)0x1.p3,
+    0x1.94p6,
+    0x1.80p3
+  },
+  { // Entry 47
+    0x1.p1,
+    (int)0x1.40p3,
+    0x1.98p6,
+    0x1.40p3
+  },
+  { // Entry 48
+    0x1.80p1,
+    (int)0x1.20p3,
+    0x1.98p6,
+    0x1.60p3
+  },
+  { // Entry 49
+    0x1.80p2,
+    (int)0x1.p3,
+    0x1.98p6,
+    0x1.80p3
+  },
+  { // Entry 50
+    0x1.80p1,
+    (int)0x1.40p3,
+    0x1.9cp6,
+    0x1.40p3
+  },
+  { // Entry 51
+    0x1.p2,
+    (int)0x1.20p3,
+    0x1.9cp6,
+    0x1.60p3
+  },
+  { // Entry 52
+    -0x1.40p2,
+    (int)0x1.20p3,
+    0x1.9cp6,
+    0x1.80p3
+  },
+  { // Entry 53
+    0x1.p2,
+    (int)0x1.40p3,
+    0x1.a0p6,
+    0x1.40p3
+  },
+  { // Entry 54
+    0x1.40p2,
+    (int)0x1.20p3,
+    0x1.a0p6,
+    0x1.60p3
+  },
+  { // Entry 55
+    -0x1.p2,
+    (int)0x1.20p3,
+    0x1.a0p6,
+    0x1.80p3
+  },
+  { // Entry 56
+    0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a4p6,
+    0x1.40p3
+  },
+  { // Entry 57
+    -0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a4p6,
+    0x1.60p3
+  },
+  { // Entry 58
+    -0x1.80p1,
+    (int)0x1.20p3,
+    0x1.a4p6,
+    0x1.80p3
+  },
+  { // Entry 59
+    -0x1.p2,
+    (int)0x1.60p3,
+    0x1.a8p6,
+    0x1.40p3
+  },
+  { // Entry 60
+    -0x1.p2,
+    (int)0x1.40p3,
+    0x1.a8p6,
+    0x1.60p3
+  },
+  { // Entry 61
+    -0x1.p1,
+    (int)0x1.20p3,
+    0x1.a8p6,
+    0x1.80p3
+  },
+  { // Entry 62
+    -0x1.80p1,
+    (int)0x1.60p3,
+    0x1.acp6,
+    0x1.40p3
+  },
+  { // Entry 63
+    -0x1.80p1,
+    (int)0x1.40p3,
+    0x1.acp6,
+    0x1.60p3
+  },
+  { // Entry 64
+    -0x1.p0,
+    (int)0x1.20p3,
+    0x1.acp6,
+    0x1.80p3
+  },
+  { // Entry 65
+    -0x1.p1,
+    (int)0x1.60p3,
+    0x1.b0p6,
+    0x1.40p3
+  },
+  { // Entry 66
+    -0x1.p1,
+    (int)0x1.40p3,
+    0x1.b0p6,
+    0x1.60p3
+  },
+  { // Entry 67
+    0.0,
+    (int)0x1.20p3,
+    0x1.b0p6,
+    0x1.80p3
+  },
+  { // Entry 68
+    -0x1.p0,
+    (int)0x1.60p3,
+    0x1.b4p6,
+    0x1.40p3
+  },
+  { // Entry 69
+    -0x1.p0,
+    (int)0x1.40p3,
+    0x1.b4p6,
+    0x1.60p3
+  },
+  { // Entry 70
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.b4p6,
+    0x1.80p3
+  },
+  { // Entry 71
+    0.0,
+    (int)0x1.60p3,
+    0x1.b8p6,
+    0x1.40p3
+  },
+  { // Entry 72
+    0.0,
+    (int)0x1.40p3,
+    0x1.b8p6,
+    0x1.60p3
+  },
+  { // Entry 73
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.b8p6,
+    0x1.80p3
+  },
+  { // Entry 74
+    -0.0,
+    (int)0x1.p0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 75
+    -0x1.p-23,
+    (int)0x1.p0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 76
+    -0x1.80p-23,
+    (int)0x1.p0,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 77
+    0x1.p-23,
+    (int)0x1.p0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 78
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 79
+    -0x1.p-24,
+    (int)0x1.p0,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 80
+    0x1.80p-23,
+    (int)0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 81
+    0x1.p-24,
+    (int)0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 82
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 83
+    -0x1.80p-23,
+    (int)-0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 84
+    -0x1.p-23,
+    (int)-0x1.p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 85
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 86
+    -0x1.p-24,
+    (int)-0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 87
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 88
+    0x1.p-23,
+    (int)-0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 89
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    0x1.p-24,
+    (int)-0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 91
+    0x1.80p-23,
+    (int)-0x1.p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 92
+    -0x1.80p-23,
+    (int)-0x1.p0,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 93
+    -0x1.p-24,
+    (int)-0x1.p0,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 94
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 95
+    -0x1.p-23,
+    (int)-0x1.p0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 96
+    0.0,
+    (int)-0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 97
+    0x1.p-24,
+    (int)-0x1.p0,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 98
+    0.0,
+    (int)-0x1.p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 99
+    0x1.p-23,
+    (int)-0x1.p0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 100
+    0x1.80p-23,
+    (int)-0x1.p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 101
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 102
+    -0x1.p-24,
+    (int)0x1.p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 103
+    -0x1.80p-23,
+    (int)0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 104
+    0x1.p-24,
+    (int)0x1.p0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 105
+    0.0,
+    (int)0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 106
+    -0x1.p-23,
+    (int)0x1.p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 107
+    0x1.80p-23,
+    (int)0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 108
+    0x1.p-23,
+    (int)0x1.p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 109
+    0.0,
+    (int)0x1.p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 110
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 111
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 112
+    0.0,
+    (int)0x1.p0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 113
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 114
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 115
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 116
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 117
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 118
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 119
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 120
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 121
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 122
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 123
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 124
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 125
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 126
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 127
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 128
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 129
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 130
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 131
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 132
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 133
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 134
+    0x1.fffff8p-3,
+    (int)-0x1.000004p22,
+    -0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 135
+    -0x1.p-1,
+    (int)-0x1.p22,
+    -0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 136
+    -0.0,
+    (int)-0x1.p22,
+    -0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 137
+    -0x1.p-2,
+    (int)-0x1.p22,
+    -0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 138
+    -0.0,
+    (int)-0x1.p22,
+    -0x1.p22,
+    0x1.p0
+  },
+  { // Entry 139
+    0x1.p-1,
+    (int)-0x1.p22,
+    -0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 140
+    -0.0,
+    (int)-0x1.p22,
+    -0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 141
+    0x1.p-2,
+    (int)-0x1.p22,
+    -0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 142
+    -0x1.000008p-2,
+    (int)-0x1.fffff8p21,
+    -0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 143
+    0.0,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 144
+    -0x1.p-1,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 145
+    -0x1.fffff8p-2,
+    (int)0x1.fffffcp22,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 146
+    -0x1.fffffcp-2,
+    (int)0x1.000002p23,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 147
+    0.0,
+    (int)0x1.p23,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 148
+    0x1.p-23,
+    (int)0x1.fffffcp22,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 149
+    -0x1.fffff8p-2,
+    (int)0x1.000004p23,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 150
+    0.0,
+    (int)0x1.000002p23,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 151
+    0.0,
+    (int)0x1.p23,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 152
+    -0x1.80p-23,
+    (int)-0x1.000003p24,
+    -0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 153
+    -0.0,
+    (int)-0x1.000002p24,
+    -0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 154
+    -0.0,
+    (int)-0x1.p24,
+    -0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 155
+    -0x1.p-24,
+    (int)-0x1.000001p24,
+    -0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 156
+    -0.0,
+    (int)-0x1.p24,
+    -0x1.p24,
+    0x1.p0
+  },
+  { // Entry 157
+    -0x1.p-22,
+    (int)-0x1.fffffcp23,
+    -0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 158
+    -0.0,
+    (int)-0x1.p24,
+    -0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    -0.0,
+    (int)-0x1.fffffep23,
+    -0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 160
+    -0x1.80p-22,
+    (int)-0x1.fffffap23,
+    -0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 161
+    0.0,
+    (int)0x1.p22,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 162
+    -0x1.p-2,
+    (int)0x1.p22,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 163
+    0x1.000008p-2,
+    (int)0x1.fffff8p21,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 164
+    0x1.p-2,
+    (int)0x1.p22,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 165
+    0.0,
+    (int)0x1.p22,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 166
+    -0x1.p-1,
+    (int)0x1.p22,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 167
+    -0x1.fffff8p-3,
+    (int)0x1.000004p22,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 168
+    0x1.p-1,
+    (int)0x1.p22,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 169
+    0.0,
+    (int)0x1.p22,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 170
+    0.0,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 171
+    -0x1.p-1,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 172
+    -0x1.fffff8p-2,
+    (int)0x1.fffffcp22,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 173
+    -0x1.fffffcp-2,
+    (int)0x1.000002p23,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 174
+    0.0,
+    (int)0x1.p23,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 175
+    0x1.p-23,
+    (int)0x1.fffffcp22,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 176
+    -0x1.fffff8p-2,
+    (int)0x1.000004p23,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 177
+    0.0,
+    (int)0x1.000002p23,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 178
+    0.0,
+    (int)0x1.p23,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 179
+    -0.0,
+    (int)0x1.p24,
+    -0x1.000002p24,
+    -0x1.000002p0
+  },
+  { // Entry 180
+    -0.0,
+    (int)0x1.000002p24,
+    -0x1.000002p24,
+    -0x1.p0
+  },
+  { // Entry 181
+    -0x1.80p-23,
+    (int)0x1.000003p24,
+    -0x1.000002p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 182
+    -0x1.p-22,
+    (int)0x1.fffffcp23,
+    -0x1.p24,
+    -0x1.000002p0
+  },
+  { // Entry 183
+    -0.0,
+    (int)0x1.p24,
+    -0x1.p24,
+    -0x1.p0
+  },
+  { // Entry 184
+    -0x1.p-24,
+    (int)0x1.000001p24,
+    -0x1.p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 185
+    -0x1.80p-22,
+    (int)0x1.fffffap23,
+    -0x1.fffffep23,
+    -0x1.000002p0
+  },
+  { // Entry 186
+    -0.0,
+    (int)0x1.fffffep23,
+    -0x1.fffffep23,
+    -0x1.p0
+  },
+  { // Entry 187
+    -0.0,
+    (int)0x1.p24,
+    -0x1.fffffep23,
+    -0x1.fffffep-1
+  },
+  { // Entry 188
+    0x1.fffffep127,
+    (int)0.0,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 189
+    -0x1.fffffep127,
+    (int)0.0,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 190
+    0x1.fffffep127,
+    (int)0.0,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 191
+    -0x1.fffffep127,
+    (int)0.0,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 192
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 193
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 194
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 195
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 196
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 197
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 198
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 200
+    0.0,
+    (int)0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 201
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 202
+    0.0,
+    (int)0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 203
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 204
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 205
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 206
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 207
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 208
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 209
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 210
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 211
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 212
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 213
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 214
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 215
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 216
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 217
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 218
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 219
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 220
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 221
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 222
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 224
+    0.0,
+    (int)0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 225
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 226
+    0.0,
+    (int)0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 227
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 228
+    0.0,
+    (int)0x1.p0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 229
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 230
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 231
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 232
+    0.0,
+    (int)0x1.p23,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 233
+    0.0,
+    (int)-0x1.p23,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 234
+    -0.0,
+    (int)-0x1.p23,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 235
+    -0.0,
+    (int)0x1.p23,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 236
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 237
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 238
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 239
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 240
+    0.0,
+    (int)0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 241
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 242
+    0.0,
+    (int)0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 243
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 244
+    0.0,
+    (int)0x1.p0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 245
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 246
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 247
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 248
+    0.0,
+    (int)0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 249
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 250
+    0.0,
+    (int)0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 251
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 252
+    -0x1.p0,
+    (int)0x1.p1,
+    0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 253
+    0x1.p0,
+    (int)-0x1.p1,
+    -0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 254
+    -0x1.p0,
+    (int)-0x1.p1,
+    0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 255
+    0x1.p0,
+    (int)0x1.p1,
+    -0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 256
+    0x1.p0,
+    (int)0x1.p1,
+    0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 257
+    -0x1.p0,
+    (int)-0x1.p1,
+    -0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 258
+    0x1.p0,
+    (int)-0x1.p1,
+    0x1.40p2,
+    -0x1.p1
+  },
+  { // Entry 259
+    -0x1.p0,
+    (int)0x1.p1,
+    -0x1.40p2,
+    -0x1.p1
+  }
+};
diff --git a/tests/math_data/rint_intel_data.h b/tests/math_data/rint_intel_data.h
new file mode 100644
index 0000000..10abff3
--- /dev/null
+++ b/tests/math_data/rint_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_rint_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/rintf_intel_data.h b/tests/math_data/rintf_intel_data.h
new file mode 100644
index 0000000..aeca830
--- /dev/null
+++ b/tests/math_data/rintf_intel_data.h
@@ -0,0 +1,1358 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_rintf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.67e9d8p-2
+  },
+  { // Entry 1
+    0x1.000008p21,
+    0x1.000006p21
+  },
+  { // Entry 2
+    0x1.fffd48p21,
+    0x1.fffd46p21
+  },
+  { // Entry 3
+    0x1.fffff8p21,
+    0x1.fffff6p21
+  },
+  { // Entry 4
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 5
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 6
+    0.0,
+    0.0
+  },
+  { // Entry 7
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 8
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 9
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 14
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 18
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 19
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 20
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 21
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 22
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 24
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 25
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 26
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 27
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 28
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 30
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 31
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 32
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 33
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 34
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 35
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 36
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 37
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 38
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 39
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 40
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 41
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 42
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 43
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 44
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 45
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 46
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 47
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 48
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 49
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 50
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 52
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 53
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 55
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 56
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 59
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 61
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 62
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 63
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 64
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 65
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 67
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 68
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 69
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 70
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 71
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 73
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 74
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 75
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 76
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 77
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 78
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 79
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 80
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 81
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 82
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 83
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 84
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 85
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 86
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 87
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 88
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 89
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 90
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 91
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 92
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 93
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 94
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 95
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 96
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 123
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 126
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 133
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 134
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 135
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 136
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 137
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 138
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 139
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 166
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 169
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 176
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 177
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 178
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 179
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 180
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 181
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 182
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 183
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 184
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 185
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 186
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 187
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 188
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 189
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 190
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 191
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 192
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 193
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 194
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 195
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 196
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 197
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 198
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 199
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 200
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 201
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 202
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 203
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 204
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 205
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 206
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 207
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 208
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 209
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 210
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 211
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 212
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 213
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 214
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 215
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 216
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 217
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 218
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 219
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 220
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 221
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 222
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 223
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 224
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 225
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 226
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 227
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 228
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 229
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 230
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 231
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 232
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 233
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 234
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 235
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 236
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 237
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 238
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 239
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 240
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 241
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 242
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 243
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 244
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 245
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 246
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 247
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 248
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 249
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 250
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 251
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 252
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 253
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 254
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 255
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 256
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 257
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 258
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 259
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 260
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 261
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 262
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 263
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 264
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 265
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 266
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 267
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 268
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 269
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 270
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 271
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 272
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 273
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 274
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 275
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 276
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 277
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 278
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 279
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 280
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 281
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 282
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 283
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 284
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 285
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 286
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 287
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 288
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 289
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 290
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 291
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 292
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 293
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 294
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 295
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 296
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 297
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 298
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 299
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 300
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 301
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 302
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 303
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 304
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 305
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 306
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 307
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 308
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 309
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 310
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 311
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 313
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 314
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 315
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 316
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 317
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 318
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 319
+    0.0,
+    0.0f
+  },
+  { // Entry 320
+    -0.0,
+    -0.0f
+  },
+  { // Entry 321
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 322
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 323
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 324
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 325
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 326
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 328
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 329
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 330
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 331
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 332
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 333
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 334
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/round_intel_data.h b/tests/math_data/round_intel_data.h
new file mode 100644
index 0000000..f2b8502
--- /dev/null
+++ b/tests/math_data/round_intel_data.h
@@ -0,0 +1,1350 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_round_intel_data[] = {
+  { // Entry 0
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 1
+    0x1.0020p11,
+    0x1.001p11
+  },
+  { // Entry 2
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 3
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 4
+    -0.0,
+    -0.0
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 18
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 19
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 20
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 24
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 25
+    0x1.94p6,
+    0x1.920p6
+  },
+  { // Entry 26
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 30
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 31
+    0x1.f480p9,
+    0x1.f44p9
+  },
+  { // Entry 32
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 33
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 34
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 35
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 36
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 37
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 38
+    0x1.00000000000020p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 39
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 40
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 41
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 43
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 44
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 46
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 47
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 48
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 61
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 62
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 63
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 67
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 68
+    -0x1.94p6,
+    -0x1.920p6
+  },
+  { // Entry 69
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 73
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 74
+    -0x1.f480p9,
+    -0x1.f44p9
+  },
+  { // Entry 75
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 76
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 77
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 78
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 79
+    -0x1.00000000000020p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 80
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 81
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 82
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 83
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 84
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 85
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 86
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 88
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 89
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 90
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 91
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 92
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 93
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 94
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 100
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 101
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 109
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 110
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 111
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 120
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 121
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 122
+    0x1.00000002p31,
+    0x1.000000010p31
+  },
+  { // Entry 123
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 124
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 125
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 126
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 127
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 128
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 129
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 130
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 131
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 132
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 133
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 134
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 135
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 136
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 137
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 140
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 141
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 143
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 144
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 146
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 147
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 150
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 151
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 152
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 153
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 154
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 156
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 157
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 160
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 161
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 163
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 164
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 165
+    -0x1.00000002p31,
+    -0x1.000000010p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 176
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 177
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 178
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 179
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 180
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 181
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 182
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 183
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 184
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 185
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 186
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 187
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 188
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 189
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 190
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 191
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 192
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 193
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 194
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 195
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 196
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 197
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 198
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 199
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 200
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 201
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 202
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 203
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 204
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 205
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 206
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 207
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 208
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 209
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 210
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 211
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 212
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 213
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 214
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 215
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 216
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 217
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 218
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 219
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 220
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 221
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 222
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 223
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 224
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 225
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 226
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 227
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 228
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 229
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 230
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 231
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 232
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 233
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 234
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 235
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 236
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 237
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 238
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 239
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 240
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 241
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 242
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 243
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 244
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 245
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 246
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 247
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 248
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 249
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 250
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 251
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 252
+    0x1.40p2,
+    0x1.2p2
+  },
+  { // Entry 253
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 254
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 255
+    0x1.20p3,
+    0x1.1p3
+  },
+  { // Entry 256
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 257
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 258
+    0x1.10p4,
+    0x1.080p4
+  },
+  { // Entry 259
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 260
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 261
+    0x1.08p5,
+    0x1.040p5
+  },
+  { // Entry 262
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 263
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 264
+    0x1.04p6,
+    0x1.020p6
+  },
+  { // Entry 265
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 266
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 267
+    0x1.02p7,
+    0x1.010p7
+  },
+  { // Entry 268
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 269
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 270
+    0x1.01p8,
+    0x1.008p8
+  },
+  { // Entry 271
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 272
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 273
+    0x1.0080p9,
+    0x1.004p9
+  },
+  { // Entry 274
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 275
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.002p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 278
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 279
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 280
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 281
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 282
+    0x1.0020p11,
+    0x1.001p11
+  },
+  { // Entry 283
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 284
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 285
+    0x1.0010p12,
+    0x1.00080p12
+  },
+  { // Entry 286
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 287
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 288
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 289
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 290
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 291
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 292
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 293
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 294
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 295
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 296
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 297
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 298
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 299
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 300
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 301
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 302
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 303
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 304
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 305
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 306
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 307
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 308
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 309
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 310
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 311
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 313
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 314
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 315
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 316
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 317
+    0.0,
+    0.0
+  },
+  { // Entry 318
+    -0.0,
+    -0.0
+  },
+  { // Entry 319
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 320
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 321
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 322
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 323
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 324
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 325
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 326
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 327
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 329
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 330
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 331
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 332
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/roundf_intel_data.h b/tests/math_data/roundf_intel_data.h
new file mode 100644
index 0000000..467cdef
--- /dev/null
+++ b/tests/math_data/roundf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_roundf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.94p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f480p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.000004p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.94p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f480p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.000004p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.40p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.20p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.10p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.08p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.04p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.02p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.01p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.0080p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.0040p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.0020p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.0010p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/scalb_intel_data.h b/tests/math_data/scalb_intel_data.h
new file mode 100644
index 0000000..fd6c1f7
--- /dev/null
+++ b/tests/math_data/scalb_intel_data.h
@@ -0,0 +1,4628 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, double> g_scalb_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.4p3
+  },
+  { // Entry 1
+    -0x1.55555555555560p-1024,
+    -0x1.5555555555556p-2,
+    -0x1.ff0p9
+  },
+  { // Entry 2
+    -0x1.6db6db6db6db70p-1023,
+    -0x1.6db6db6db6db7p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 3
+    -0x1.8e38e38e38e390p-1023,
+    -0x1.8e38e38e38e39p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074,
+    -0x1.4p3
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    -0x1.780p5
+  },
+  { // Entry 7
+    0x1.p-51,
+    0x1.0p-1074,
+    0x1.ff8p9
+  },
+  { // Entry 8
+    0x1.5464a606112880p-1026,
+    0x1.5464a60611288p-2,
+    -0x1.0p10
+  },
+  { // Entry 9
+    HUGE_VAL,
+    0x1.8e147ae147ae1p0,
+    0x1.fffffffc0p30
+  },
+  { // Entry 10
+    0.0,
+    0x1.dddddddddddddp-2,
+    -0x1.0c4p10
+  },
+  { // Entry 11
+    0.0,
+    0x1.f7df7df7df7dfp-2,
+    -0x1.0c4p10
+  },
+  { // Entry 12
+    HUGE_VAL,
+    0x1.ffffffffffff6p30,
+    0x1.0p31
+  },
+  { // Entry 13
+    0x1.ffffffffffffc0p-1033,
+    0x1.ffffffffffffcp-1023,
+    -0x1.4p3
+  },
+  { // Entry 14
+    0x1.ffffffffffffc0p-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.0p0
+  },
+  { // Entry 15
+    0x1.ffffffffffffe0p-1070,
+    0x1.ffffffffffffep-1023,
+    -0x1.780p5
+  },
+  { // Entry 16
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p0
+  },
+  { // Entry 17
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffc0p30
+  },
+  { // Entry 18
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffc0p30
+  },
+  { // Entry 19
+    -0x1.p-10,
+    -0x1.0p0,
+    -0x1.4p3
+  },
+  { // Entry 20
+    -0x1.p-9,
+    -0x1.0p0,
+    -0x1.2p3
+  },
+  { // Entry 21
+    -0x1.p-8,
+    -0x1.0p0,
+    -0x1.0p3
+  },
+  { // Entry 22
+    -0x1.p-7,
+    -0x1.0p0,
+    -0x1.cp2
+  },
+  { // Entry 23
+    -0x1.p-6,
+    -0x1.0p0,
+    -0x1.8p2
+  },
+  { // Entry 24
+    -0x1.p-5,
+    -0x1.0p0,
+    -0x1.4p2
+  },
+  { // Entry 25
+    -0x1.p-4,
+    -0x1.0p0,
+    -0x1.0p2
+  },
+  { // Entry 26
+    -0x1.p-3,
+    -0x1.0p0,
+    -0x1.8p1
+  },
+  { // Entry 27
+    -0x1.p-2,
+    -0x1.0p0,
+    -0x1.0p1
+  },
+  { // Entry 28
+    -0x1.p-1,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 29
+    -0x1.p0,
+    -0x1.0p0,
+    0.0
+  },
+  { // Entry 30
+    -0x1.p1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 31
+    -0x1.p2,
+    -0x1.0p0,
+    0x1.0p1
+  },
+  { // Entry 32
+    -0x1.p3,
+    -0x1.0p0,
+    0x1.8p1
+  },
+  { // Entry 33
+    -0x1.p4,
+    -0x1.0p0,
+    0x1.0p2
+  },
+  { // Entry 34
+    -0x1.p5,
+    -0x1.0p0,
+    0x1.4p2
+  },
+  { // Entry 35
+    -0x1.p6,
+    -0x1.0p0,
+    0x1.8p2
+  },
+  { // Entry 36
+    -0x1.p7,
+    -0x1.0p0,
+    0x1.cp2
+  },
+  { // Entry 37
+    -0x1.p8,
+    -0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 38
+    -0x1.p9,
+    -0x1.0p0,
+    0x1.2p3
+  },
+  { // Entry 39
+    -0x1.p10,
+    -0x1.0p0,
+    0x1.4p3
+  },
+  { // Entry 40
+    -0x1.d1745d1745d170p-11,
+    -0x1.d1745d1745d17p-1,
+    -0x1.4p3
+  },
+  { // Entry 41
+    -0x1.d1745d1745d170p-10,
+    -0x1.d1745d1745d17p-1,
+    -0x1.2p3
+  },
+  { // Entry 42
+    -0x1.d1745d1745d170p-9,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p3
+  },
+  { // Entry 43
+    -0x1.d1745d1745d170p-8,
+    -0x1.d1745d1745d17p-1,
+    -0x1.cp2
+  },
+  { // Entry 44
+    -0x1.d1745d1745d170p-7,
+    -0x1.d1745d1745d17p-1,
+    -0x1.8p2
+  },
+  { // Entry 45
+    -0x1.d1745d1745d170p-6,
+    -0x1.d1745d1745d17p-1,
+    -0x1.4p2
+  },
+  { // Entry 46
+    -0x1.d1745d1745d170p-5,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p2
+  },
+  { // Entry 47
+    -0x1.d1745d1745d170p-4,
+    -0x1.d1745d1745d17p-1,
+    -0x1.8p1
+  },
+  { // Entry 48
+    -0x1.d1745d1745d170p-3,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p1
+  },
+  { // Entry 49
+    -0x1.d1745d1745d170p-2,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p0
+  },
+  { // Entry 50
+    -0x1.d1745d1745d170p-1,
+    -0x1.d1745d1745d17p-1,
+    0.0
+  },
+  { // Entry 51
+    -0x1.d1745d1745d170p0,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p0
+  },
+  { // Entry 52
+    -0x1.d1745d1745d170p1,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p1
+  },
+  { // Entry 53
+    -0x1.d1745d1745d170p2,
+    -0x1.d1745d1745d17p-1,
+    0x1.8p1
+  },
+  { // Entry 54
+    -0x1.d1745d1745d170p3,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p2
+  },
+  { // Entry 55
+    -0x1.d1745d1745d170p4,
+    -0x1.d1745d1745d17p-1,
+    0x1.4p2
+  },
+  { // Entry 56
+    -0x1.d1745d1745d170p5,
+    -0x1.d1745d1745d17p-1,
+    0x1.8p2
+  },
+  { // Entry 57
+    -0x1.d1745d1745d170p6,
+    -0x1.d1745d1745d17p-1,
+    0x1.cp2
+  },
+  { // Entry 58
+    -0x1.d1745d1745d170p7,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p3
+  },
+  { // Entry 59
+    -0x1.d1745d1745d170p8,
+    -0x1.d1745d1745d17p-1,
+    0x1.2p3
+  },
+  { // Entry 60
+    -0x1.d1745d1745d170p9,
+    -0x1.d1745d1745d17p-1,
+    0x1.4p3
+  },
+  { // Entry 61
+    -0x1.a2e8ba2e8ba2e0p-11,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.4p3
+  },
+  { // Entry 62
+    -0x1.a2e8ba2e8ba2e0p-10,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.2p3
+  },
+  { // Entry 63
+    -0x1.a2e8ba2e8ba2e0p-9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p3
+  },
+  { // Entry 64
+    -0x1.a2e8ba2e8ba2e0p-8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.cp2
+  },
+  { // Entry 65
+    -0x1.a2e8ba2e8ba2e0p-7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.8p2
+  },
+  { // Entry 66
+    -0x1.a2e8ba2e8ba2e0p-6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.4p2
+  },
+  { // Entry 67
+    -0x1.a2e8ba2e8ba2e0p-5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p2
+  },
+  { // Entry 68
+    -0x1.a2e8ba2e8ba2e0p-4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.8p1
+  },
+  { // Entry 69
+    -0x1.a2e8ba2e8ba2e0p-3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p1
+  },
+  { // Entry 70
+    -0x1.a2e8ba2e8ba2e0p-2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p0
+  },
+  { // Entry 71
+    -0x1.a2e8ba2e8ba2e0p-1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0.0
+  },
+  { // Entry 72
+    -0x1.a2e8ba2e8ba2e0p0,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p0
+  },
+  { // Entry 73
+    -0x1.a2e8ba2e8ba2e0p1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p1
+  },
+  { // Entry 74
+    -0x1.a2e8ba2e8ba2e0p2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.8p1
+  },
+  { // Entry 75
+    -0x1.a2e8ba2e8ba2e0p3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p2
+  },
+  { // Entry 76
+    -0x1.a2e8ba2e8ba2e0p4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.4p2
+  },
+  { // Entry 77
+    -0x1.a2e8ba2e8ba2e0p5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.8p2
+  },
+  { // Entry 78
+    -0x1.a2e8ba2e8ba2e0p6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.cp2
+  },
+  { // Entry 79
+    -0x1.a2e8ba2e8ba2e0p7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p3
+  },
+  { // Entry 80
+    -0x1.a2e8ba2e8ba2e0p8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.2p3
+  },
+  { // Entry 81
+    -0x1.a2e8ba2e8ba2e0p9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.4p3
+  },
+  { // Entry 82
+    -0x1.745d1745d17450p-11,
+    -0x1.745d1745d1745p-1,
+    -0x1.4p3
+  },
+  { // Entry 83
+    -0x1.745d1745d17450p-10,
+    -0x1.745d1745d1745p-1,
+    -0x1.2p3
+  },
+  { // Entry 84
+    -0x1.745d1745d17450p-9,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p3
+  },
+  { // Entry 85
+    -0x1.745d1745d17450p-8,
+    -0x1.745d1745d1745p-1,
+    -0x1.cp2
+  },
+  { // Entry 86
+    -0x1.745d1745d17450p-7,
+    -0x1.745d1745d1745p-1,
+    -0x1.8p2
+  },
+  { // Entry 87
+    -0x1.745d1745d17450p-6,
+    -0x1.745d1745d1745p-1,
+    -0x1.4p2
+  },
+  { // Entry 88
+    -0x1.745d1745d17450p-5,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p2
+  },
+  { // Entry 89
+    -0x1.745d1745d17450p-4,
+    -0x1.745d1745d1745p-1,
+    -0x1.8p1
+  },
+  { // Entry 90
+    -0x1.745d1745d17450p-3,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p1
+  },
+  { // Entry 91
+    -0x1.745d1745d17450p-2,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p0
+  },
+  { // Entry 92
+    -0x1.745d1745d17450p-1,
+    -0x1.745d1745d1745p-1,
+    0.0
+  },
+  { // Entry 93
+    -0x1.745d1745d17450p0,
+    -0x1.745d1745d1745p-1,
+    0x1.0p0
+  },
+  { // Entry 94
+    -0x1.745d1745d17450p1,
+    -0x1.745d1745d1745p-1,
+    0x1.0p1
+  },
+  { // Entry 95
+    -0x1.745d1745d17450p2,
+    -0x1.745d1745d1745p-1,
+    0x1.8p1
+  },
+  { // Entry 96
+    -0x1.745d1745d17450p3,
+    -0x1.745d1745d1745p-1,
+    0x1.0p2
+  },
+  { // Entry 97
+    -0x1.745d1745d17450p4,
+    -0x1.745d1745d1745p-1,
+    0x1.4p2
+  },
+  { // Entry 98
+    -0x1.745d1745d17450p5,
+    -0x1.745d1745d1745p-1,
+    0x1.8p2
+  },
+  { // Entry 99
+    -0x1.745d1745d17450p6,
+    -0x1.745d1745d1745p-1,
+    0x1.cp2
+  },
+  { // Entry 100
+    -0x1.745d1745d17450p7,
+    -0x1.745d1745d1745p-1,
+    0x1.0p3
+  },
+  { // Entry 101
+    -0x1.745d1745d17450p8,
+    -0x1.745d1745d1745p-1,
+    0x1.2p3
+  },
+  { // Entry 102
+    -0x1.745d1745d17450p9,
+    -0x1.745d1745d1745p-1,
+    0x1.4p3
+  },
+  { // Entry 103
+    -0x1.45d1745d1745c0p-11,
+    -0x1.45d1745d1745cp-1,
+    -0x1.4p3
+  },
+  { // Entry 104
+    -0x1.45d1745d1745c0p-10,
+    -0x1.45d1745d1745cp-1,
+    -0x1.2p3
+  },
+  { // Entry 105
+    -0x1.45d1745d1745c0p-9,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p3
+  },
+  { // Entry 106
+    -0x1.45d1745d1745c0p-8,
+    -0x1.45d1745d1745cp-1,
+    -0x1.cp2
+  },
+  { // Entry 107
+    -0x1.45d1745d1745c0p-7,
+    -0x1.45d1745d1745cp-1,
+    -0x1.8p2
+  },
+  { // Entry 108
+    -0x1.45d1745d1745c0p-6,
+    -0x1.45d1745d1745cp-1,
+    -0x1.4p2
+  },
+  { // Entry 109
+    -0x1.45d1745d1745c0p-5,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p2
+  },
+  { // Entry 110
+    -0x1.45d1745d1745c0p-4,
+    -0x1.45d1745d1745cp-1,
+    -0x1.8p1
+  },
+  { // Entry 111
+    -0x1.45d1745d1745c0p-3,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p1
+  },
+  { // Entry 112
+    -0x1.45d1745d1745c0p-2,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p0
+  },
+  { // Entry 113
+    -0x1.45d1745d1745c0p-1,
+    -0x1.45d1745d1745cp-1,
+    0.0
+  },
+  { // Entry 114
+    -0x1.45d1745d1745c0p0,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p0
+  },
+  { // Entry 115
+    -0x1.45d1745d1745c0p1,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p1
+  },
+  { // Entry 116
+    -0x1.45d1745d1745c0p2,
+    -0x1.45d1745d1745cp-1,
+    0x1.8p1
+  },
+  { // Entry 117
+    -0x1.45d1745d1745c0p3,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p2
+  },
+  { // Entry 118
+    -0x1.45d1745d1745c0p4,
+    -0x1.45d1745d1745cp-1,
+    0x1.4p2
+  },
+  { // Entry 119
+    -0x1.45d1745d1745c0p5,
+    -0x1.45d1745d1745cp-1,
+    0x1.8p2
+  },
+  { // Entry 120
+    -0x1.45d1745d1745c0p6,
+    -0x1.45d1745d1745cp-1,
+    0x1.cp2
+  },
+  { // Entry 121
+    -0x1.45d1745d1745c0p7,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p3
+  },
+  { // Entry 122
+    -0x1.45d1745d1745c0p8,
+    -0x1.45d1745d1745cp-1,
+    0x1.2p3
+  },
+  { // Entry 123
+    -0x1.45d1745d1745c0p9,
+    -0x1.45d1745d1745cp-1,
+    0x1.4p3
+  },
+  { // Entry 124
+    -0x1.1745d1745d1730p-11,
+    -0x1.1745d1745d173p-1,
+    -0x1.4p3
+  },
+  { // Entry 125
+    -0x1.1745d1745d1730p-10,
+    -0x1.1745d1745d173p-1,
+    -0x1.2p3
+  },
+  { // Entry 126
+    -0x1.1745d1745d1730p-9,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p3
+  },
+  { // Entry 127
+    -0x1.1745d1745d1730p-8,
+    -0x1.1745d1745d173p-1,
+    -0x1.cp2
+  },
+  { // Entry 128
+    -0x1.1745d1745d1730p-7,
+    -0x1.1745d1745d173p-1,
+    -0x1.8p2
+  },
+  { // Entry 129
+    -0x1.1745d1745d1730p-6,
+    -0x1.1745d1745d173p-1,
+    -0x1.4p2
+  },
+  { // Entry 130
+    -0x1.1745d1745d1730p-5,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p2
+  },
+  { // Entry 131
+    -0x1.1745d1745d1730p-4,
+    -0x1.1745d1745d173p-1,
+    -0x1.8p1
+  },
+  { // Entry 132
+    -0x1.1745d1745d1730p-3,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p1
+  },
+  { // Entry 133
+    -0x1.1745d1745d1730p-2,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p0
+  },
+  { // Entry 134
+    -0x1.1745d1745d1730p-1,
+    -0x1.1745d1745d173p-1,
+    0.0
+  },
+  { // Entry 135
+    -0x1.1745d1745d1730p0,
+    -0x1.1745d1745d173p-1,
+    0x1.0p0
+  },
+  { // Entry 136
+    -0x1.1745d1745d1730p1,
+    -0x1.1745d1745d173p-1,
+    0x1.0p1
+  },
+  { // Entry 137
+    -0x1.1745d1745d1730p2,
+    -0x1.1745d1745d173p-1,
+    0x1.8p1
+  },
+  { // Entry 138
+    -0x1.1745d1745d1730p3,
+    -0x1.1745d1745d173p-1,
+    0x1.0p2
+  },
+  { // Entry 139
+    -0x1.1745d1745d1730p4,
+    -0x1.1745d1745d173p-1,
+    0x1.4p2
+  },
+  { // Entry 140
+    -0x1.1745d1745d1730p5,
+    -0x1.1745d1745d173p-1,
+    0x1.8p2
+  },
+  { // Entry 141
+    -0x1.1745d1745d1730p6,
+    -0x1.1745d1745d173p-1,
+    0x1.cp2
+  },
+  { // Entry 142
+    -0x1.1745d1745d1730p7,
+    -0x1.1745d1745d173p-1,
+    0x1.0p3
+  },
+  { // Entry 143
+    -0x1.1745d1745d1730p8,
+    -0x1.1745d1745d173p-1,
+    0x1.2p3
+  },
+  { // Entry 144
+    -0x1.1745d1745d1730p9,
+    -0x1.1745d1745d173p-1,
+    0x1.4p3
+  },
+  { // Entry 145
+    -0x1.d1745d1745d140p-12,
+    -0x1.d1745d1745d14p-2,
+    -0x1.4p3
+  },
+  { // Entry 146
+    -0x1.d1745d1745d140p-11,
+    -0x1.d1745d1745d14p-2,
+    -0x1.2p3
+  },
+  { // Entry 147
+    -0x1.d1745d1745d140p-10,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p3
+  },
+  { // Entry 148
+    -0x1.d1745d1745d140p-9,
+    -0x1.d1745d1745d14p-2,
+    -0x1.cp2
+  },
+  { // Entry 149
+    -0x1.d1745d1745d140p-8,
+    -0x1.d1745d1745d14p-2,
+    -0x1.8p2
+  },
+  { // Entry 150
+    -0x1.d1745d1745d140p-7,
+    -0x1.d1745d1745d14p-2,
+    -0x1.4p2
+  },
+  { // Entry 151
+    -0x1.d1745d1745d140p-6,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p2
+  },
+  { // Entry 152
+    -0x1.d1745d1745d140p-5,
+    -0x1.d1745d1745d14p-2,
+    -0x1.8p1
+  },
+  { // Entry 153
+    -0x1.d1745d1745d140p-4,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p1
+  },
+  { // Entry 154
+    -0x1.d1745d1745d140p-3,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p0
+  },
+  { // Entry 155
+    -0x1.d1745d1745d140p-2,
+    -0x1.d1745d1745d14p-2,
+    0.0
+  },
+  { // Entry 156
+    -0x1.d1745d1745d140p-1,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p0
+  },
+  { // Entry 157
+    -0x1.d1745d1745d140p0,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p1
+  },
+  { // Entry 158
+    -0x1.d1745d1745d140p1,
+    -0x1.d1745d1745d14p-2,
+    0x1.8p1
+  },
+  { // Entry 159
+    -0x1.d1745d1745d140p2,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p2
+  },
+  { // Entry 160
+    -0x1.d1745d1745d140p3,
+    -0x1.d1745d1745d14p-2,
+    0x1.4p2
+  },
+  { // Entry 161
+    -0x1.d1745d1745d140p4,
+    -0x1.d1745d1745d14p-2,
+    0x1.8p2
+  },
+  { // Entry 162
+    -0x1.d1745d1745d140p5,
+    -0x1.d1745d1745d14p-2,
+    0x1.cp2
+  },
+  { // Entry 163
+    -0x1.d1745d1745d140p6,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p3
+  },
+  { // Entry 164
+    -0x1.d1745d1745d140p7,
+    -0x1.d1745d1745d14p-2,
+    0x1.2p3
+  },
+  { // Entry 165
+    -0x1.d1745d1745d140p8,
+    -0x1.d1745d1745d14p-2,
+    0x1.4p3
+  },
+  { // Entry 166
+    -0x1.745d1745d17420p-12,
+    -0x1.745d1745d1742p-2,
+    -0x1.4p3
+  },
+  { // Entry 167
+    -0x1.745d1745d17420p-11,
+    -0x1.745d1745d1742p-2,
+    -0x1.2p3
+  },
+  { // Entry 168
+    -0x1.745d1745d17420p-10,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p3
+  },
+  { // Entry 169
+    -0x1.745d1745d17420p-9,
+    -0x1.745d1745d1742p-2,
+    -0x1.cp2
+  },
+  { // Entry 170
+    -0x1.745d1745d17420p-8,
+    -0x1.745d1745d1742p-2,
+    -0x1.8p2
+  },
+  { // Entry 171
+    -0x1.745d1745d17420p-7,
+    -0x1.745d1745d1742p-2,
+    -0x1.4p2
+  },
+  { // Entry 172
+    -0x1.745d1745d17420p-6,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p2
+  },
+  { // Entry 173
+    -0x1.745d1745d17420p-5,
+    -0x1.745d1745d1742p-2,
+    -0x1.8p1
+  },
+  { // Entry 174
+    -0x1.745d1745d17420p-4,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p1
+  },
+  { // Entry 175
+    -0x1.745d1745d17420p-3,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p0
+  },
+  { // Entry 176
+    -0x1.745d1745d17420p-2,
+    -0x1.745d1745d1742p-2,
+    0.0
+  },
+  { // Entry 177
+    -0x1.745d1745d17420p-1,
+    -0x1.745d1745d1742p-2,
+    0x1.0p0
+  },
+  { // Entry 178
+    -0x1.745d1745d17420p0,
+    -0x1.745d1745d1742p-2,
+    0x1.0p1
+  },
+  { // Entry 179
+    -0x1.745d1745d17420p1,
+    -0x1.745d1745d1742p-2,
+    0x1.8p1
+  },
+  { // Entry 180
+    -0x1.745d1745d17420p2,
+    -0x1.745d1745d1742p-2,
+    0x1.0p2
+  },
+  { // Entry 181
+    -0x1.745d1745d17420p3,
+    -0x1.745d1745d1742p-2,
+    0x1.4p2
+  },
+  { // Entry 182
+    -0x1.745d1745d17420p4,
+    -0x1.745d1745d1742p-2,
+    0x1.8p2
+  },
+  { // Entry 183
+    -0x1.745d1745d17420p5,
+    -0x1.745d1745d1742p-2,
+    0x1.cp2
+  },
+  { // Entry 184
+    -0x1.745d1745d17420p6,
+    -0x1.745d1745d1742p-2,
+    0x1.0p3
+  },
+  { // Entry 185
+    -0x1.745d1745d17420p7,
+    -0x1.745d1745d1742p-2,
+    0x1.2p3
+  },
+  { // Entry 186
+    -0x1.745d1745d17420p8,
+    -0x1.745d1745d1742p-2,
+    0x1.4p3
+  },
+  { // Entry 187
+    -0x1.1745d1745d17p-12,
+    -0x1.1745d1745d170p-2,
+    -0x1.4p3
+  },
+  { // Entry 188
+    -0x1.1745d1745d17p-11,
+    -0x1.1745d1745d170p-2,
+    -0x1.2p3
+  },
+  { // Entry 189
+    -0x1.1745d1745d17p-10,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p3
+  },
+  { // Entry 190
+    -0x1.1745d1745d17p-9,
+    -0x1.1745d1745d170p-2,
+    -0x1.cp2
+  },
+  { // Entry 191
+    -0x1.1745d1745d17p-8,
+    -0x1.1745d1745d170p-2,
+    -0x1.8p2
+  },
+  { // Entry 192
+    -0x1.1745d1745d17p-7,
+    -0x1.1745d1745d170p-2,
+    -0x1.4p2
+  },
+  { // Entry 193
+    -0x1.1745d1745d17p-6,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p2
+  },
+  { // Entry 194
+    -0x1.1745d1745d17p-5,
+    -0x1.1745d1745d170p-2,
+    -0x1.8p1
+  },
+  { // Entry 195
+    -0x1.1745d1745d17p-4,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p1
+  },
+  { // Entry 196
+    -0x1.1745d1745d17p-3,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p0
+  },
+  { // Entry 197
+    -0x1.1745d1745d17p-2,
+    -0x1.1745d1745d170p-2,
+    0.0
+  },
+  { // Entry 198
+    -0x1.1745d1745d17p-1,
+    -0x1.1745d1745d170p-2,
+    0x1.0p0
+  },
+  { // Entry 199
+    -0x1.1745d1745d17p0,
+    -0x1.1745d1745d170p-2,
+    0x1.0p1
+  },
+  { // Entry 200
+    -0x1.1745d1745d17p1,
+    -0x1.1745d1745d170p-2,
+    0x1.8p1
+  },
+  { // Entry 201
+    -0x1.1745d1745d17p2,
+    -0x1.1745d1745d170p-2,
+    0x1.0p2
+  },
+  { // Entry 202
+    -0x1.1745d1745d17p3,
+    -0x1.1745d1745d170p-2,
+    0x1.4p2
+  },
+  { // Entry 203
+    -0x1.1745d1745d17p4,
+    -0x1.1745d1745d170p-2,
+    0x1.8p2
+  },
+  { // Entry 204
+    -0x1.1745d1745d17p5,
+    -0x1.1745d1745d170p-2,
+    0x1.cp2
+  },
+  { // Entry 205
+    -0x1.1745d1745d17p6,
+    -0x1.1745d1745d170p-2,
+    0x1.0p3
+  },
+  { // Entry 206
+    -0x1.1745d1745d17p7,
+    -0x1.1745d1745d170p-2,
+    0x1.2p3
+  },
+  { // Entry 207
+    -0x1.1745d1745d17p8,
+    -0x1.1745d1745d170p-2,
+    0x1.4p3
+  },
+  { // Entry 208
+    -0x1.745d1745d173d0p-13,
+    -0x1.745d1745d173dp-3,
+    -0x1.4p3
+  },
+  { // Entry 209
+    -0x1.745d1745d173d0p-12,
+    -0x1.745d1745d173dp-3,
+    -0x1.2p3
+  },
+  { // Entry 210
+    -0x1.745d1745d173d0p-11,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p3
+  },
+  { // Entry 211
+    -0x1.745d1745d173d0p-10,
+    -0x1.745d1745d173dp-3,
+    -0x1.cp2
+  },
+  { // Entry 212
+    -0x1.745d1745d173d0p-9,
+    -0x1.745d1745d173dp-3,
+    -0x1.8p2
+  },
+  { // Entry 213
+    -0x1.745d1745d173d0p-8,
+    -0x1.745d1745d173dp-3,
+    -0x1.4p2
+  },
+  { // Entry 214
+    -0x1.745d1745d173d0p-7,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p2
+  },
+  { // Entry 215
+    -0x1.745d1745d173d0p-6,
+    -0x1.745d1745d173dp-3,
+    -0x1.8p1
+  },
+  { // Entry 216
+    -0x1.745d1745d173d0p-5,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p1
+  },
+  { // Entry 217
+    -0x1.745d1745d173d0p-4,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p0
+  },
+  { // Entry 218
+    -0x1.745d1745d173d0p-3,
+    -0x1.745d1745d173dp-3,
+    0.0
+  },
+  { // Entry 219
+    -0x1.745d1745d173d0p-2,
+    -0x1.745d1745d173dp-3,
+    0x1.0p0
+  },
+  { // Entry 220
+    -0x1.745d1745d173d0p-1,
+    -0x1.745d1745d173dp-3,
+    0x1.0p1
+  },
+  { // Entry 221
+    -0x1.745d1745d173d0p0,
+    -0x1.745d1745d173dp-3,
+    0x1.8p1
+  },
+  { // Entry 222
+    -0x1.745d1745d173d0p1,
+    -0x1.745d1745d173dp-3,
+    0x1.0p2
+  },
+  { // Entry 223
+    -0x1.745d1745d173d0p2,
+    -0x1.745d1745d173dp-3,
+    0x1.4p2
+  },
+  { // Entry 224
+    -0x1.745d1745d173d0p3,
+    -0x1.745d1745d173dp-3,
+    0x1.8p2
+  },
+  { // Entry 225
+    -0x1.745d1745d173d0p4,
+    -0x1.745d1745d173dp-3,
+    0x1.cp2
+  },
+  { // Entry 226
+    -0x1.745d1745d173d0p5,
+    -0x1.745d1745d173dp-3,
+    0x1.0p3
+  },
+  { // Entry 227
+    -0x1.745d1745d173d0p6,
+    -0x1.745d1745d173dp-3,
+    0x1.2p3
+  },
+  { // Entry 228
+    -0x1.745d1745d173d0p7,
+    -0x1.745d1745d173dp-3,
+    0x1.4p3
+  },
+  { // Entry 229
+    -0x1.745d1745d17340p-14,
+    -0x1.745d1745d1734p-4,
+    -0x1.4p3
+  },
+  { // Entry 230
+    -0x1.745d1745d17340p-13,
+    -0x1.745d1745d1734p-4,
+    -0x1.2p3
+  },
+  { // Entry 231
+    -0x1.745d1745d17340p-12,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p3
+  },
+  { // Entry 232
+    -0x1.745d1745d17340p-11,
+    -0x1.745d1745d1734p-4,
+    -0x1.cp2
+  },
+  { // Entry 233
+    -0x1.745d1745d17340p-10,
+    -0x1.745d1745d1734p-4,
+    -0x1.8p2
+  },
+  { // Entry 234
+    -0x1.745d1745d17340p-9,
+    -0x1.745d1745d1734p-4,
+    -0x1.4p2
+  },
+  { // Entry 235
+    -0x1.745d1745d17340p-8,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p2
+  },
+  { // Entry 236
+    -0x1.745d1745d17340p-7,
+    -0x1.745d1745d1734p-4,
+    -0x1.8p1
+  },
+  { // Entry 237
+    -0x1.745d1745d17340p-6,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p1
+  },
+  { // Entry 238
+    -0x1.745d1745d17340p-5,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p0
+  },
+  { // Entry 239
+    -0x1.745d1745d17340p-4,
+    -0x1.745d1745d1734p-4,
+    0.0
+  },
+  { // Entry 240
+    -0x1.745d1745d17340p-3,
+    -0x1.745d1745d1734p-4,
+    0x1.0p0
+  },
+  { // Entry 241
+    -0x1.745d1745d17340p-2,
+    -0x1.745d1745d1734p-4,
+    0x1.0p1
+  },
+  { // Entry 242
+    -0x1.745d1745d17340p-1,
+    -0x1.745d1745d1734p-4,
+    0x1.8p1
+  },
+  { // Entry 243
+    -0x1.745d1745d17340p0,
+    -0x1.745d1745d1734p-4,
+    0x1.0p2
+  },
+  { // Entry 244
+    -0x1.745d1745d17340p1,
+    -0x1.745d1745d1734p-4,
+    0x1.4p2
+  },
+  { // Entry 245
+    -0x1.745d1745d17340p2,
+    -0x1.745d1745d1734p-4,
+    0x1.8p2
+  },
+  { // Entry 246
+    -0x1.745d1745d17340p3,
+    -0x1.745d1745d1734p-4,
+    0x1.cp2
+  },
+  { // Entry 247
+    -0x1.745d1745d17340p4,
+    -0x1.745d1745d1734p-4,
+    0x1.0p3
+  },
+  { // Entry 248
+    -0x1.745d1745d17340p5,
+    -0x1.745d1745d1734p-4,
+    0x1.2p3
+  },
+  { // Entry 249
+    -0x1.745d1745d17340p6,
+    -0x1.745d1745d1734p-4,
+    0x1.4p3
+  },
+  { // Entry 250
+    0x1.20p-62,
+    0x1.2p-52,
+    -0x1.4p3
+  },
+  { // Entry 251
+    0x1.20p-61,
+    0x1.2p-52,
+    -0x1.2p3
+  },
+  { // Entry 252
+    0x1.20p-60,
+    0x1.2p-52,
+    -0x1.0p3
+  },
+  { // Entry 253
+    0x1.20p-59,
+    0x1.2p-52,
+    -0x1.cp2
+  },
+  { // Entry 254
+    0x1.20p-58,
+    0x1.2p-52,
+    -0x1.8p2
+  },
+  { // Entry 255
+    0x1.20p-57,
+    0x1.2p-52,
+    -0x1.4p2
+  },
+  { // Entry 256
+    0x1.20p-56,
+    0x1.2p-52,
+    -0x1.0p2
+  },
+  { // Entry 257
+    0x1.20p-55,
+    0x1.2p-52,
+    -0x1.8p1
+  },
+  { // Entry 258
+    0x1.20p-54,
+    0x1.2p-52,
+    -0x1.0p1
+  },
+  { // Entry 259
+    0x1.20p-53,
+    0x1.2p-52,
+    -0x1.0p0
+  },
+  { // Entry 260
+    0x1.20p-52,
+    0x1.2p-52,
+    0.0
+  },
+  { // Entry 261
+    0x1.20p-51,
+    0x1.2p-52,
+    0x1.0p0
+  },
+  { // Entry 262
+    0x1.20p-50,
+    0x1.2p-52,
+    0x1.0p1
+  },
+  { // Entry 263
+    0x1.20p-49,
+    0x1.2p-52,
+    0x1.8p1
+  },
+  { // Entry 264
+    0x1.20p-48,
+    0x1.2p-52,
+    0x1.0p2
+  },
+  { // Entry 265
+    0x1.20p-47,
+    0x1.2p-52,
+    0x1.4p2
+  },
+  { // Entry 266
+    0x1.20p-46,
+    0x1.2p-52,
+    0x1.8p2
+  },
+  { // Entry 267
+    0x1.20p-45,
+    0x1.2p-52,
+    0x1.cp2
+  },
+  { // Entry 268
+    0x1.20p-44,
+    0x1.2p-52,
+    0x1.0p3
+  },
+  { // Entry 269
+    0x1.20p-43,
+    0x1.2p-52,
+    0x1.2p3
+  },
+  { // Entry 270
+    0x1.20p-42,
+    0x1.2p-52,
+    0x1.4p3
+  },
+  { // Entry 271
+    0x1.745d1745d17580p-14,
+    0x1.745d1745d1758p-4,
+    -0x1.4p3
+  },
+  { // Entry 272
+    0x1.745d1745d17580p-13,
+    0x1.745d1745d1758p-4,
+    -0x1.2p3
+  },
+  { // Entry 273
+    0x1.745d1745d17580p-12,
+    0x1.745d1745d1758p-4,
+    -0x1.0p3
+  },
+  { // Entry 274
+    0x1.745d1745d17580p-11,
+    0x1.745d1745d1758p-4,
+    -0x1.cp2
+  },
+  { // Entry 275
+    0x1.745d1745d17580p-10,
+    0x1.745d1745d1758p-4,
+    -0x1.8p2
+  },
+  { // Entry 276
+    0x1.745d1745d17580p-9,
+    0x1.745d1745d1758p-4,
+    -0x1.4p2
+  },
+  { // Entry 277
+    0x1.745d1745d17580p-8,
+    0x1.745d1745d1758p-4,
+    -0x1.0p2
+  },
+  { // Entry 278
+    0x1.745d1745d17580p-7,
+    0x1.745d1745d1758p-4,
+    -0x1.8p1
+  },
+  { // Entry 279
+    0x1.745d1745d17580p-6,
+    0x1.745d1745d1758p-4,
+    -0x1.0p1
+  },
+  { // Entry 280
+    0x1.745d1745d17580p-5,
+    0x1.745d1745d1758p-4,
+    -0x1.0p0
+  },
+  { // Entry 281
+    0x1.745d1745d17580p-4,
+    0x1.745d1745d1758p-4,
+    0.0
+  },
+  { // Entry 282
+    0x1.745d1745d17580p-3,
+    0x1.745d1745d1758p-4,
+    0x1.0p0
+  },
+  { // Entry 283
+    0x1.745d1745d17580p-2,
+    0x1.745d1745d1758p-4,
+    0x1.0p1
+  },
+  { // Entry 284
+    0x1.745d1745d17580p-1,
+    0x1.745d1745d1758p-4,
+    0x1.8p1
+  },
+  { // Entry 285
+    0x1.745d1745d17580p0,
+    0x1.745d1745d1758p-4,
+    0x1.0p2
+  },
+  { // Entry 286
+    0x1.745d1745d17580p1,
+    0x1.745d1745d1758p-4,
+    0x1.4p2
+  },
+  { // Entry 287
+    0x1.745d1745d17580p2,
+    0x1.745d1745d1758p-4,
+    0x1.8p2
+  },
+  { // Entry 288
+    0x1.745d1745d17580p3,
+    0x1.745d1745d1758p-4,
+    0x1.cp2
+  },
+  { // Entry 289
+    0x1.745d1745d17580p4,
+    0x1.745d1745d1758p-4,
+    0x1.0p3
+  },
+  { // Entry 290
+    0x1.745d1745d17580p5,
+    0x1.745d1745d1758p-4,
+    0x1.2p3
+  },
+  { // Entry 291
+    0x1.745d1745d17580p6,
+    0x1.745d1745d1758p-4,
+    0x1.4p3
+  },
+  { // Entry 292
+    0x1.745d1745d174f0p-13,
+    0x1.745d1745d174fp-3,
+    -0x1.4p3
+  },
+  { // Entry 293
+    0x1.745d1745d174f0p-12,
+    0x1.745d1745d174fp-3,
+    -0x1.2p3
+  },
+  { // Entry 294
+    0x1.745d1745d174f0p-11,
+    0x1.745d1745d174fp-3,
+    -0x1.0p3
+  },
+  { // Entry 295
+    0x1.745d1745d174f0p-10,
+    0x1.745d1745d174fp-3,
+    -0x1.cp2
+  },
+  { // Entry 296
+    0x1.745d1745d174f0p-9,
+    0x1.745d1745d174fp-3,
+    -0x1.8p2
+  },
+  { // Entry 297
+    0x1.745d1745d174f0p-8,
+    0x1.745d1745d174fp-3,
+    -0x1.4p2
+  },
+  { // Entry 298
+    0x1.745d1745d174f0p-7,
+    0x1.745d1745d174fp-3,
+    -0x1.0p2
+  },
+  { // Entry 299
+    0x1.745d1745d174f0p-6,
+    0x1.745d1745d174fp-3,
+    -0x1.8p1
+  },
+  { // Entry 300
+    0x1.745d1745d174f0p-5,
+    0x1.745d1745d174fp-3,
+    -0x1.0p1
+  },
+  { // Entry 301
+    0x1.745d1745d174f0p-4,
+    0x1.745d1745d174fp-3,
+    -0x1.0p0
+  },
+  { // Entry 302
+    0x1.745d1745d174f0p-3,
+    0x1.745d1745d174fp-3,
+    0.0
+  },
+  { // Entry 303
+    0x1.745d1745d174f0p-2,
+    0x1.745d1745d174fp-3,
+    0x1.0p0
+  },
+  { // Entry 304
+    0x1.745d1745d174f0p-1,
+    0x1.745d1745d174fp-3,
+    0x1.0p1
+  },
+  { // Entry 305
+    0x1.745d1745d174f0p0,
+    0x1.745d1745d174fp-3,
+    0x1.8p1
+  },
+  { // Entry 306
+    0x1.745d1745d174f0p1,
+    0x1.745d1745d174fp-3,
+    0x1.0p2
+  },
+  { // Entry 307
+    0x1.745d1745d174f0p2,
+    0x1.745d1745d174fp-3,
+    0x1.4p2
+  },
+  { // Entry 308
+    0x1.745d1745d174f0p3,
+    0x1.745d1745d174fp-3,
+    0x1.8p2
+  },
+  { // Entry 309
+    0x1.745d1745d174f0p4,
+    0x1.745d1745d174fp-3,
+    0x1.cp2
+  },
+  { // Entry 310
+    0x1.745d1745d174f0p5,
+    0x1.745d1745d174fp-3,
+    0x1.0p3
+  },
+  { // Entry 311
+    0x1.745d1745d174f0p6,
+    0x1.745d1745d174fp-3,
+    0x1.2p3
+  },
+  { // Entry 312
+    0x1.745d1745d174f0p7,
+    0x1.745d1745d174fp-3,
+    0x1.4p3
+  },
+  { // Entry 313
+    0x1.1745d1745d1790p-12,
+    0x1.1745d1745d179p-2,
+    -0x1.4p3
+  },
+  { // Entry 314
+    0x1.1745d1745d1790p-11,
+    0x1.1745d1745d179p-2,
+    -0x1.2p3
+  },
+  { // Entry 315
+    0x1.1745d1745d1790p-10,
+    0x1.1745d1745d179p-2,
+    -0x1.0p3
+  },
+  { // Entry 316
+    0x1.1745d1745d1790p-9,
+    0x1.1745d1745d179p-2,
+    -0x1.cp2
+  },
+  { // Entry 317
+    0x1.1745d1745d1790p-8,
+    0x1.1745d1745d179p-2,
+    -0x1.8p2
+  },
+  { // Entry 318
+    0x1.1745d1745d1790p-7,
+    0x1.1745d1745d179p-2,
+    -0x1.4p2
+  },
+  { // Entry 319
+    0x1.1745d1745d1790p-6,
+    0x1.1745d1745d179p-2,
+    -0x1.0p2
+  },
+  { // Entry 320
+    0x1.1745d1745d1790p-5,
+    0x1.1745d1745d179p-2,
+    -0x1.8p1
+  },
+  { // Entry 321
+    0x1.1745d1745d1790p-4,
+    0x1.1745d1745d179p-2,
+    -0x1.0p1
+  },
+  { // Entry 322
+    0x1.1745d1745d1790p-3,
+    0x1.1745d1745d179p-2,
+    -0x1.0p0
+  },
+  { // Entry 323
+    0x1.1745d1745d1790p-2,
+    0x1.1745d1745d179p-2,
+    0.0
+  },
+  { // Entry 324
+    0x1.1745d1745d1790p-1,
+    0x1.1745d1745d179p-2,
+    0x1.0p0
+  },
+  { // Entry 325
+    0x1.1745d1745d1790p0,
+    0x1.1745d1745d179p-2,
+    0x1.0p1
+  },
+  { // Entry 326
+    0x1.1745d1745d1790p1,
+    0x1.1745d1745d179p-2,
+    0x1.8p1
+  },
+  { // Entry 327
+    0x1.1745d1745d1790p2,
+    0x1.1745d1745d179p-2,
+    0x1.0p2
+  },
+  { // Entry 328
+    0x1.1745d1745d1790p3,
+    0x1.1745d1745d179p-2,
+    0x1.4p2
+  },
+  { // Entry 329
+    0x1.1745d1745d1790p4,
+    0x1.1745d1745d179p-2,
+    0x1.8p2
+  },
+  { // Entry 330
+    0x1.1745d1745d1790p5,
+    0x1.1745d1745d179p-2,
+    0x1.cp2
+  },
+  { // Entry 331
+    0x1.1745d1745d1790p6,
+    0x1.1745d1745d179p-2,
+    0x1.0p3
+  },
+  { // Entry 332
+    0x1.1745d1745d1790p7,
+    0x1.1745d1745d179p-2,
+    0x1.2p3
+  },
+  { // Entry 333
+    0x1.1745d1745d1790p8,
+    0x1.1745d1745d179p-2,
+    0x1.4p3
+  },
+  { // Entry 334
+    0x1.745d1745d174a0p-12,
+    0x1.745d1745d174ap-2,
+    -0x1.4p3
+  },
+  { // Entry 335
+    0x1.745d1745d174a0p-11,
+    0x1.745d1745d174ap-2,
+    -0x1.2p3
+  },
+  { // Entry 336
+    0x1.745d1745d174a0p-10,
+    0x1.745d1745d174ap-2,
+    -0x1.0p3
+  },
+  { // Entry 337
+    0x1.745d1745d174a0p-9,
+    0x1.745d1745d174ap-2,
+    -0x1.cp2
+  },
+  { // Entry 338
+    0x1.745d1745d174a0p-8,
+    0x1.745d1745d174ap-2,
+    -0x1.8p2
+  },
+  { // Entry 339
+    0x1.745d1745d174a0p-7,
+    0x1.745d1745d174ap-2,
+    -0x1.4p2
+  },
+  { // Entry 340
+    0x1.745d1745d174a0p-6,
+    0x1.745d1745d174ap-2,
+    -0x1.0p2
+  },
+  { // Entry 341
+    0x1.745d1745d174a0p-5,
+    0x1.745d1745d174ap-2,
+    -0x1.8p1
+  },
+  { // Entry 342
+    0x1.745d1745d174a0p-4,
+    0x1.745d1745d174ap-2,
+    -0x1.0p1
+  },
+  { // Entry 343
+    0x1.745d1745d174a0p-3,
+    0x1.745d1745d174ap-2,
+    -0x1.0p0
+  },
+  { // Entry 344
+    0x1.745d1745d174a0p-2,
+    0x1.745d1745d174ap-2,
+    0.0
+  },
+  { // Entry 345
+    0x1.745d1745d174a0p-1,
+    0x1.745d1745d174ap-2,
+    0x1.0p0
+  },
+  { // Entry 346
+    0x1.745d1745d174a0p0,
+    0x1.745d1745d174ap-2,
+    0x1.0p1
+  },
+  { // Entry 347
+    0x1.745d1745d174a0p1,
+    0x1.745d1745d174ap-2,
+    0x1.8p1
+  },
+  { // Entry 348
+    0x1.745d1745d174a0p2,
+    0x1.745d1745d174ap-2,
+    0x1.0p2
+  },
+  { // Entry 349
+    0x1.745d1745d174a0p3,
+    0x1.745d1745d174ap-2,
+    0x1.4p2
+  },
+  { // Entry 350
+    0x1.745d1745d174a0p4,
+    0x1.745d1745d174ap-2,
+    0x1.8p2
+  },
+  { // Entry 351
+    0x1.745d1745d174a0p5,
+    0x1.745d1745d174ap-2,
+    0x1.cp2
+  },
+  { // Entry 352
+    0x1.745d1745d174a0p6,
+    0x1.745d1745d174ap-2,
+    0x1.0p3
+  },
+  { // Entry 353
+    0x1.745d1745d174a0p7,
+    0x1.745d1745d174ap-2,
+    0x1.2p3
+  },
+  { // Entry 354
+    0x1.745d1745d174a0p8,
+    0x1.745d1745d174ap-2,
+    0x1.4p3
+  },
+  { // Entry 355
+    0x1.d1745d1745d1c0p-12,
+    0x1.d1745d1745d1cp-2,
+    -0x1.4p3
+  },
+  { // Entry 356
+    0x1.d1745d1745d1c0p-11,
+    0x1.d1745d1745d1cp-2,
+    -0x1.2p3
+  },
+  { // Entry 357
+    0x1.d1745d1745d1c0p-10,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p3
+  },
+  { // Entry 358
+    0x1.d1745d1745d1c0p-9,
+    0x1.d1745d1745d1cp-2,
+    -0x1.cp2
+  },
+  { // Entry 359
+    0x1.d1745d1745d1c0p-8,
+    0x1.d1745d1745d1cp-2,
+    -0x1.8p2
+  },
+  { // Entry 360
+    0x1.d1745d1745d1c0p-7,
+    0x1.d1745d1745d1cp-2,
+    -0x1.4p2
+  },
+  { // Entry 361
+    0x1.d1745d1745d1c0p-6,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p2
+  },
+  { // Entry 362
+    0x1.d1745d1745d1c0p-5,
+    0x1.d1745d1745d1cp-2,
+    -0x1.8p1
+  },
+  { // Entry 363
+    0x1.d1745d1745d1c0p-4,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p1
+  },
+  { // Entry 364
+    0x1.d1745d1745d1c0p-3,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p0
+  },
+  { // Entry 365
+    0x1.d1745d1745d1c0p-2,
+    0x1.d1745d1745d1cp-2,
+    0.0
+  },
+  { // Entry 366
+    0x1.d1745d1745d1c0p-1,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p0
+  },
+  { // Entry 367
+    0x1.d1745d1745d1c0p0,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p1
+  },
+  { // Entry 368
+    0x1.d1745d1745d1c0p1,
+    0x1.d1745d1745d1cp-2,
+    0x1.8p1
+  },
+  { // Entry 369
+    0x1.d1745d1745d1c0p2,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p2
+  },
+  { // Entry 370
+    0x1.d1745d1745d1c0p3,
+    0x1.d1745d1745d1cp-2,
+    0x1.4p2
+  },
+  { // Entry 371
+    0x1.d1745d1745d1c0p4,
+    0x1.d1745d1745d1cp-2,
+    0x1.8p2
+  },
+  { // Entry 372
+    0x1.d1745d1745d1c0p5,
+    0x1.d1745d1745d1cp-2,
+    0x1.cp2
+  },
+  { // Entry 373
+    0x1.d1745d1745d1c0p6,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p3
+  },
+  { // Entry 374
+    0x1.d1745d1745d1c0p7,
+    0x1.d1745d1745d1cp-2,
+    0x1.2p3
+  },
+  { // Entry 375
+    0x1.d1745d1745d1c0p8,
+    0x1.d1745d1745d1cp-2,
+    0x1.4p3
+  },
+  { // Entry 376
+    0x1.1745d1745d1770p-11,
+    0x1.1745d1745d177p-1,
+    -0x1.4p3
+  },
+  { // Entry 377
+    0x1.1745d1745d1770p-10,
+    0x1.1745d1745d177p-1,
+    -0x1.2p3
+  },
+  { // Entry 378
+    0x1.1745d1745d1770p-9,
+    0x1.1745d1745d177p-1,
+    -0x1.0p3
+  },
+  { // Entry 379
+    0x1.1745d1745d1770p-8,
+    0x1.1745d1745d177p-1,
+    -0x1.cp2
+  },
+  { // Entry 380
+    0x1.1745d1745d1770p-7,
+    0x1.1745d1745d177p-1,
+    -0x1.8p2
+  },
+  { // Entry 381
+    0x1.1745d1745d1770p-6,
+    0x1.1745d1745d177p-1,
+    -0x1.4p2
+  },
+  { // Entry 382
+    0x1.1745d1745d1770p-5,
+    0x1.1745d1745d177p-1,
+    -0x1.0p2
+  },
+  { // Entry 383
+    0x1.1745d1745d1770p-4,
+    0x1.1745d1745d177p-1,
+    -0x1.8p1
+  },
+  { // Entry 384
+    0x1.1745d1745d1770p-3,
+    0x1.1745d1745d177p-1,
+    -0x1.0p1
+  },
+  { // Entry 385
+    0x1.1745d1745d1770p-2,
+    0x1.1745d1745d177p-1,
+    -0x1.0p0
+  },
+  { // Entry 386
+    0x1.1745d1745d1770p-1,
+    0x1.1745d1745d177p-1,
+    0.0
+  },
+  { // Entry 387
+    0x1.1745d1745d1770p0,
+    0x1.1745d1745d177p-1,
+    0x1.0p0
+  },
+  { // Entry 388
+    0x1.1745d1745d1770p1,
+    0x1.1745d1745d177p-1,
+    0x1.0p1
+  },
+  { // Entry 389
+    0x1.1745d1745d1770p2,
+    0x1.1745d1745d177p-1,
+    0x1.8p1
+  },
+  { // Entry 390
+    0x1.1745d1745d1770p3,
+    0x1.1745d1745d177p-1,
+    0x1.0p2
+  },
+  { // Entry 391
+    0x1.1745d1745d1770p4,
+    0x1.1745d1745d177p-1,
+    0x1.4p2
+  },
+  { // Entry 392
+    0x1.1745d1745d1770p5,
+    0x1.1745d1745d177p-1,
+    0x1.8p2
+  },
+  { // Entry 393
+    0x1.1745d1745d1770p6,
+    0x1.1745d1745d177p-1,
+    0x1.cp2
+  },
+  { // Entry 394
+    0x1.1745d1745d1770p7,
+    0x1.1745d1745d177p-1,
+    0x1.0p3
+  },
+  { // Entry 395
+    0x1.1745d1745d1770p8,
+    0x1.1745d1745d177p-1,
+    0x1.2p3
+  },
+  { // Entry 396
+    0x1.1745d1745d1770p9,
+    0x1.1745d1745d177p-1,
+    0x1.4p3
+  },
+  { // Entry 397
+    0x1.45d1745d1746p-11,
+    0x1.45d1745d17460p-1,
+    -0x1.4p3
+  },
+  { // Entry 398
+    0x1.45d1745d1746p-10,
+    0x1.45d1745d17460p-1,
+    -0x1.2p3
+  },
+  { // Entry 399
+    0x1.45d1745d1746p-9,
+    0x1.45d1745d17460p-1,
+    -0x1.0p3
+  },
+  { // Entry 400
+    0x1.45d1745d1746p-8,
+    0x1.45d1745d17460p-1,
+    -0x1.cp2
+  },
+  { // Entry 401
+    0x1.45d1745d1746p-7,
+    0x1.45d1745d17460p-1,
+    -0x1.8p2
+  },
+  { // Entry 402
+    0x1.45d1745d1746p-6,
+    0x1.45d1745d17460p-1,
+    -0x1.4p2
+  },
+  { // Entry 403
+    0x1.45d1745d1746p-5,
+    0x1.45d1745d17460p-1,
+    -0x1.0p2
+  },
+  { // Entry 404
+    0x1.45d1745d1746p-4,
+    0x1.45d1745d17460p-1,
+    -0x1.8p1
+  },
+  { // Entry 405
+    0x1.45d1745d1746p-3,
+    0x1.45d1745d17460p-1,
+    -0x1.0p1
+  },
+  { // Entry 406
+    0x1.45d1745d1746p-2,
+    0x1.45d1745d17460p-1,
+    -0x1.0p0
+  },
+  { // Entry 407
+    0x1.45d1745d1746p-1,
+    0x1.45d1745d17460p-1,
+    0.0
+  },
+  { // Entry 408
+    0x1.45d1745d1746p0,
+    0x1.45d1745d17460p-1,
+    0x1.0p0
+  },
+  { // Entry 409
+    0x1.45d1745d1746p1,
+    0x1.45d1745d17460p-1,
+    0x1.0p1
+  },
+  { // Entry 410
+    0x1.45d1745d1746p2,
+    0x1.45d1745d17460p-1,
+    0x1.8p1
+  },
+  { // Entry 411
+    0x1.45d1745d1746p3,
+    0x1.45d1745d17460p-1,
+    0x1.0p2
+  },
+  { // Entry 412
+    0x1.45d1745d1746p4,
+    0x1.45d1745d17460p-1,
+    0x1.4p2
+  },
+  { // Entry 413
+    0x1.45d1745d1746p5,
+    0x1.45d1745d17460p-1,
+    0x1.8p2
+  },
+  { // Entry 414
+    0x1.45d1745d1746p6,
+    0x1.45d1745d17460p-1,
+    0x1.cp2
+  },
+  { // Entry 415
+    0x1.45d1745d1746p7,
+    0x1.45d1745d17460p-1,
+    0x1.0p3
+  },
+  { // Entry 416
+    0x1.45d1745d1746p8,
+    0x1.45d1745d17460p-1,
+    0x1.2p3
+  },
+  { // Entry 417
+    0x1.45d1745d1746p9,
+    0x1.45d1745d17460p-1,
+    0x1.4p3
+  },
+  { // Entry 418
+    0x1.745d1745d17490p-11,
+    0x1.745d1745d1749p-1,
+    -0x1.4p3
+  },
+  { // Entry 419
+    0x1.745d1745d17490p-10,
+    0x1.745d1745d1749p-1,
+    -0x1.2p3
+  },
+  { // Entry 420
+    0x1.745d1745d17490p-9,
+    0x1.745d1745d1749p-1,
+    -0x1.0p3
+  },
+  { // Entry 421
+    0x1.745d1745d17490p-8,
+    0x1.745d1745d1749p-1,
+    -0x1.cp2
+  },
+  { // Entry 422
+    0x1.745d1745d17490p-7,
+    0x1.745d1745d1749p-1,
+    -0x1.8p2
+  },
+  { // Entry 423
+    0x1.745d1745d17490p-6,
+    0x1.745d1745d1749p-1,
+    -0x1.4p2
+  },
+  { // Entry 424
+    0x1.745d1745d17490p-5,
+    0x1.745d1745d1749p-1,
+    -0x1.0p2
+  },
+  { // Entry 425
+    0x1.745d1745d17490p-4,
+    0x1.745d1745d1749p-1,
+    -0x1.8p1
+  },
+  { // Entry 426
+    0x1.745d1745d17490p-3,
+    0x1.745d1745d1749p-1,
+    -0x1.0p1
+  },
+  { // Entry 427
+    0x1.745d1745d17490p-2,
+    0x1.745d1745d1749p-1,
+    -0x1.0p0
+  },
+  { // Entry 428
+    0x1.745d1745d17490p-1,
+    0x1.745d1745d1749p-1,
+    0.0
+  },
+  { // Entry 429
+    0x1.745d1745d17490p0,
+    0x1.745d1745d1749p-1,
+    0x1.0p0
+  },
+  { // Entry 430
+    0x1.745d1745d17490p1,
+    0x1.745d1745d1749p-1,
+    0x1.0p1
+  },
+  { // Entry 431
+    0x1.745d1745d17490p2,
+    0x1.745d1745d1749p-1,
+    0x1.8p1
+  },
+  { // Entry 432
+    0x1.745d1745d17490p3,
+    0x1.745d1745d1749p-1,
+    0x1.0p2
+  },
+  { // Entry 433
+    0x1.745d1745d17490p4,
+    0x1.745d1745d1749p-1,
+    0x1.4p2
+  },
+  { // Entry 434
+    0x1.745d1745d17490p5,
+    0x1.745d1745d1749p-1,
+    0x1.8p2
+  },
+  { // Entry 435
+    0x1.745d1745d17490p6,
+    0x1.745d1745d1749p-1,
+    0x1.cp2
+  },
+  { // Entry 436
+    0x1.745d1745d17490p7,
+    0x1.745d1745d1749p-1,
+    0x1.0p3
+  },
+  { // Entry 437
+    0x1.745d1745d17490p8,
+    0x1.745d1745d1749p-1,
+    0x1.2p3
+  },
+  { // Entry 438
+    0x1.745d1745d17490p9,
+    0x1.745d1745d1749p-1,
+    0x1.4p3
+  },
+  { // Entry 439
+    0x1.a2e8ba2e8ba320p-11,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.4p3
+  },
+  { // Entry 440
+    0x1.a2e8ba2e8ba320p-10,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.2p3
+  },
+  { // Entry 441
+    0x1.a2e8ba2e8ba320p-9,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p3
+  },
+  { // Entry 442
+    0x1.a2e8ba2e8ba320p-8,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.cp2
+  },
+  { // Entry 443
+    0x1.a2e8ba2e8ba320p-7,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.8p2
+  },
+  { // Entry 444
+    0x1.a2e8ba2e8ba320p-6,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.4p2
+  },
+  { // Entry 445
+    0x1.a2e8ba2e8ba320p-5,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p2
+  },
+  { // Entry 446
+    0x1.a2e8ba2e8ba320p-4,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.8p1
+  },
+  { // Entry 447
+    0x1.a2e8ba2e8ba320p-3,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p1
+  },
+  { // Entry 448
+    0x1.a2e8ba2e8ba320p-2,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p0
+  },
+  { // Entry 449
+    0x1.a2e8ba2e8ba320p-1,
+    0x1.a2e8ba2e8ba32p-1,
+    0.0
+  },
+  { // Entry 450
+    0x1.a2e8ba2e8ba320p0,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p0
+  },
+  { // Entry 451
+    0x1.a2e8ba2e8ba320p1,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p1
+  },
+  { // Entry 452
+    0x1.a2e8ba2e8ba320p2,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.8p1
+  },
+  { // Entry 453
+    0x1.a2e8ba2e8ba320p3,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p2
+  },
+  { // Entry 454
+    0x1.a2e8ba2e8ba320p4,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.4p2
+  },
+  { // Entry 455
+    0x1.a2e8ba2e8ba320p5,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.8p2
+  },
+  { // Entry 456
+    0x1.a2e8ba2e8ba320p6,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.cp2
+  },
+  { // Entry 457
+    0x1.a2e8ba2e8ba320p7,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p3
+  },
+  { // Entry 458
+    0x1.a2e8ba2e8ba320p8,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.2p3
+  },
+  { // Entry 459
+    0x1.a2e8ba2e8ba320p9,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.4p3
+  },
+  { // Entry 460
+    0x1.d1745d1745d1b0p-11,
+    0x1.d1745d1745d1bp-1,
+    -0x1.4p3
+  },
+  { // Entry 461
+    0x1.d1745d1745d1b0p-10,
+    0x1.d1745d1745d1bp-1,
+    -0x1.2p3
+  },
+  { // Entry 462
+    0x1.d1745d1745d1b0p-9,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p3
+  },
+  { // Entry 463
+    0x1.d1745d1745d1b0p-8,
+    0x1.d1745d1745d1bp-1,
+    -0x1.cp2
+  },
+  { // Entry 464
+    0x1.d1745d1745d1b0p-7,
+    0x1.d1745d1745d1bp-1,
+    -0x1.8p2
+  },
+  { // Entry 465
+    0x1.d1745d1745d1b0p-6,
+    0x1.d1745d1745d1bp-1,
+    -0x1.4p2
+  },
+  { // Entry 466
+    0x1.d1745d1745d1b0p-5,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p2
+  },
+  { // Entry 467
+    0x1.d1745d1745d1b0p-4,
+    0x1.d1745d1745d1bp-1,
+    -0x1.8p1
+  },
+  { // Entry 468
+    0x1.d1745d1745d1b0p-3,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p1
+  },
+  { // Entry 469
+    0x1.d1745d1745d1b0p-2,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p0
+  },
+  { // Entry 470
+    0x1.d1745d1745d1b0p-1,
+    0x1.d1745d1745d1bp-1,
+    0.0
+  },
+  { // Entry 471
+    0x1.d1745d1745d1b0p0,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p0
+  },
+  { // Entry 472
+    0x1.d1745d1745d1b0p1,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p1
+  },
+  { // Entry 473
+    0x1.d1745d1745d1b0p2,
+    0x1.d1745d1745d1bp-1,
+    0x1.8p1
+  },
+  { // Entry 474
+    0x1.d1745d1745d1b0p3,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p2
+  },
+  { // Entry 475
+    0x1.d1745d1745d1b0p4,
+    0x1.d1745d1745d1bp-1,
+    0x1.4p2
+  },
+  { // Entry 476
+    0x1.d1745d1745d1b0p5,
+    0x1.d1745d1745d1bp-1,
+    0x1.8p2
+  },
+  { // Entry 477
+    0x1.d1745d1745d1b0p6,
+    0x1.d1745d1745d1bp-1,
+    0x1.cp2
+  },
+  { // Entry 478
+    0x1.d1745d1745d1b0p7,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p3
+  },
+  { // Entry 479
+    0x1.d1745d1745d1b0p8,
+    0x1.d1745d1745d1bp-1,
+    0x1.2p3
+  },
+  { // Entry 480
+    0x1.d1745d1745d1b0p9,
+    0x1.d1745d1745d1bp-1,
+    0x1.4p3
+  },
+  { // Entry 481
+    0x1.p-10,
+    0x1.0p0,
+    -0x1.4p3
+  },
+  { // Entry 482
+    0x1.p-9,
+    0x1.0p0,
+    -0x1.2p3
+  },
+  { // Entry 483
+    0x1.p-8,
+    0x1.0p0,
+    -0x1.0p3
+  },
+  { // Entry 484
+    0x1.p-7,
+    0x1.0p0,
+    -0x1.cp2
+  },
+  { // Entry 485
+    0x1.p-6,
+    0x1.0p0,
+    -0x1.8p2
+  },
+  { // Entry 486
+    0x1.p-5,
+    0x1.0p0,
+    -0x1.4p2
+  },
+  { // Entry 487
+    0x1.p-4,
+    0x1.0p0,
+    -0x1.0p2
+  },
+  { // Entry 488
+    0x1.p-3,
+    0x1.0p0,
+    -0x1.8p1
+  },
+  { // Entry 489
+    0x1.p-2,
+    0x1.0p0,
+    -0x1.0p1
+  },
+  { // Entry 490
+    0x1.p-1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 491
+    0x1.p0,
+    0x1.0p0,
+    0.0
+  },
+  { // Entry 492
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 493
+    0x1.p2,
+    0x1.0p0,
+    0x1.0p1
+  },
+  { // Entry 494
+    0x1.p3,
+    0x1.0p0,
+    0x1.8p1
+  },
+  { // Entry 495
+    0x1.p4,
+    0x1.0p0,
+    0x1.0p2
+  },
+  { // Entry 496
+    0x1.p5,
+    0x1.0p0,
+    0x1.4p2
+  },
+  { // Entry 497
+    0x1.p6,
+    0x1.0p0,
+    0x1.8p2
+  },
+  { // Entry 498
+    0x1.p7,
+    0x1.0p0,
+    0x1.cp2
+  },
+  { // Entry 499
+    0x1.p8,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 500
+    0x1.p9,
+    0x1.0p0,
+    0x1.2p3
+  },
+  { // Entry 501
+    0x1.p10,
+    0x1.0p0,
+    0x1.4p3
+  },
+  { // Entry 502
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023,
+    -0x1.ff8p9
+  },
+  { // Entry 503
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ff0p9
+  },
+  { // Entry 504
+    0x1.fffffffffffff0p23,
+    0x1.fffffffffffffp1023,
+    -0x1.f40p9
+  },
+  { // Entry 505
+    0x1.fffffffffffff0p24,
+    0x1.fffffffffffffp1023,
+    -0x1.f38p9
+  },
+  { // Entry 506
+    0x1.fffffffffffff0p1013,
+    0x1.fffffffffffffp1023,
+    -0x1.4p3
+  },
+  { // Entry 507
+    0x1.fffffffffffff0p1014,
+    0x1.fffffffffffffp1023,
+    -0x1.2p3
+  },
+  { // Entry 508
+    0x1.fffffffffffff0p1015,
+    0x1.fffffffffffffp1023,
+    -0x1.0p3
+  },
+  { // Entry 509
+    0x1.fffffffffffff0p1016,
+    0x1.fffffffffffffp1023,
+    -0x1.cp2
+  },
+  { // Entry 510
+    0x1.fffffffffffff0p1017,
+    0x1.fffffffffffffp1023,
+    -0x1.8p2
+  },
+  { // Entry 511
+    0x1.fffffffffffff0p1018,
+    0x1.fffffffffffffp1023,
+    -0x1.4p2
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1019,
+    0x1.fffffffffffffp1023,
+    -0x1.0p2
+  },
+  { // Entry 513
+    0x1.fffffffffffff0p1020,
+    0x1.fffffffffffffp1023,
+    -0x1.8p1
+  },
+  { // Entry 514
+    0x1.fffffffffffff0p1021,
+    0x1.fffffffffffffp1023,
+    -0x1.0p1
+  },
+  { // Entry 515
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 516
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 517
+    0x1.p-51,
+    0x1.0p-1074,
+    0x1.ff8p9
+  },
+  { // Entry 518
+    0x1.p-52,
+    0x1.0p-1074,
+    0x1.ff0p9
+  },
+  { // Entry 519
+    0x1.p-74,
+    0x1.0p-1074,
+    0x1.f40p9
+  },
+  { // Entry 520
+    0x1.p-75,
+    0x1.0p-1074,
+    0x1.f38p9
+  },
+  { // Entry 521
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 522
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 523
+    0x1.p-1072,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 524
+    0x1.p-1071,
+    0x1.0p-1074,
+    0x1.8p1
+  },
+  { // Entry 525
+    0x1.p-1070,
+    0x1.0p-1074,
+    0x1.0p2
+  },
+  { // Entry 526
+    0x1.p-1069,
+    0x1.0p-1074,
+    0x1.4p2
+  },
+  { // Entry 527
+    0x1.p-1068,
+    0x1.0p-1074,
+    0x1.8p2
+  },
+  { // Entry 528
+    0x1.p-1067,
+    0x1.0p-1074,
+    0x1.cp2
+  },
+  { // Entry 529
+    0x1.p-1066,
+    0x1.0p-1074,
+    0x1.0p3
+  },
+  { // Entry 530
+    0x1.p-1065,
+    0x1.0p-1074,
+    0x1.2p3
+  },
+  { // Entry 531
+    0x1.p-1064,
+    0x1.0p-1074,
+    0x1.4p3
+  },
+  { // Entry 532
+    0x1.p-1025,
+    0x1.0p-2,
+    -0x1.ff8p9
+  },
+  { // Entry 533
+    0x1.p-1024,
+    0x1.0p-2,
+    -0x1.ff0p9
+  },
+  { // Entry 534
+    0x1.p-1024,
+    0x1.0p-1,
+    -0x1.ff8p9
+  },
+  { // Entry 535
+    0x1.p-1023,
+    0x1.0p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 536
+    0x1.80p-1024,
+    0x1.8p-1,
+    -0x1.ff8p9
+  },
+  { // Entry 537
+    0x1.80p-1023,
+    0x1.8p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 538
+    0.0,
+    0x1.0p-2,
+    -0x1.0c8p10
+  },
+  { // Entry 539
+    0.0,
+    0x1.0p-2,
+    -0x1.0c4p10
+  },
+  { // Entry 540
+    0.0,
+    0x1.0p-1,
+    -0x1.0c8p10
+  },
+  { // Entry 541
+    0x1.p-1074,
+    0x1.0p-1,
+    -0x1.0c4p10
+  },
+  { // Entry 542
+    0.0,
+    0x1.8p-1,
+    -0x1.0c8p10
+  },
+  { // Entry 543
+    0x1.80p-1074,
+    0x1.8p-1,
+    -0x1.0c4p10
+  },
+  { // Entry 544
+    0x1.p1023,
+    0x1.0p0,
+    0x1.ff8p9
+  },
+  { // Entry 545
+    0x1.p1022,
+    0x1.0p0,
+    0x1.ff0p9
+  },
+  { // Entry 546
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 547
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 548
+    0x1.p-1072,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 549
+    0x1.p-1071,
+    0x1.0p-1074,
+    0x1.8p1
+  },
+  { // Entry 550
+    0x1.p-1070,
+    0x1.0p-1074,
+    0x1.0p2
+  },
+  { // Entry 551
+    0x1.p-1069,
+    0x1.0p-1074,
+    0x1.4p2
+  },
+  { // Entry 552
+    0x1.p-1068,
+    0x1.0p-1074,
+    0x1.8p2
+  },
+  { // Entry 553
+    0x1.p-1067,
+    0x1.0p-1074,
+    0x1.cp2
+  },
+  { // Entry 554
+    0x1.p-1066,
+    0x1.0p-1074,
+    0x1.0p3
+  },
+  { // Entry 555
+    0x1.p-1065,
+    0x1.0p-1074,
+    0x1.2p3
+  },
+  { // Entry 556
+    0x1.p-1064,
+    0x1.0p-1074,
+    0x1.4p3
+  },
+  { // Entry 557
+    0x1.p-1063,
+    0x1.0p-1074,
+    0x1.6p3
+  },
+  { // Entry 558
+    0x1.p-1062,
+    0x1.0p-1074,
+    0x1.8p3
+  },
+  { // Entry 559
+    0x1.p-1061,
+    0x1.0p-1074,
+    0x1.ap3
+  },
+  { // Entry 560
+    0x1.p-1060,
+    0x1.0p-1074,
+    0x1.cp3
+  },
+  { // Entry 561
+    0x1.p-1059,
+    0x1.0p-1074,
+    0x1.ep3
+  },
+  { // Entry 562
+    0x1.p-1058,
+    0x1.0p-1074,
+    0x1.0p4
+  },
+  { // Entry 563
+    0x1.p-1057,
+    0x1.0p-1074,
+    0x1.1p4
+  },
+  { // Entry 564
+    0x1.p-1056,
+    0x1.0p-1074,
+    0x1.2p4
+  },
+  { // Entry 565
+    0x1.p-1055,
+    0x1.0p-1074,
+    0x1.3p4
+  },
+  { // Entry 566
+    0x1.p-1054,
+    0x1.0p-1074,
+    0x1.4p4
+  },
+  { // Entry 567
+    0x1.p-1053,
+    0x1.0p-1074,
+    0x1.5p4
+  },
+  { // Entry 568
+    0x1.p-1052,
+    0x1.0p-1074,
+    0x1.6p4
+  },
+  { // Entry 569
+    0x1.p-1051,
+    0x1.0p-1074,
+    0x1.7p4
+  },
+  { // Entry 570
+    0x1.p-1050,
+    0x1.0p-1074,
+    0x1.8p4
+  },
+  { // Entry 571
+    0x1.p-1049,
+    0x1.0p-1074,
+    0x1.9p4
+  },
+  { // Entry 572
+    0x1.p-1048,
+    0x1.0p-1074,
+    0x1.ap4
+  },
+  { // Entry 573
+    0x1.p-1047,
+    0x1.0p-1074,
+    0x1.bp4
+  },
+  { // Entry 574
+    0x1.p-1046,
+    0x1.0p-1074,
+    0x1.cp4
+  },
+  { // Entry 575
+    0x1.p-1045,
+    0x1.0p-1074,
+    0x1.dp4
+  },
+  { // Entry 576
+    0x1.p-1044,
+    0x1.0p-1074,
+    0x1.ep4
+  },
+  { // Entry 577
+    0x1.p-1043,
+    0x1.0p-1074,
+    0x1.fp4
+  },
+  { // Entry 578
+    0x1.p-1042,
+    0x1.0p-1074,
+    0x1.0p5
+  },
+  { // Entry 579
+    0x1.p-1041,
+    0x1.0p-1074,
+    0x1.080p5
+  },
+  { // Entry 580
+    0x1.p-1040,
+    0x1.0p-1074,
+    0x1.1p5
+  },
+  { // Entry 581
+    0x1.p-1039,
+    0x1.0p-1074,
+    0x1.180p5
+  },
+  { // Entry 582
+    0x1.p-1038,
+    0x1.0p-1074,
+    0x1.2p5
+  },
+  { // Entry 583
+    0x1.p-1037,
+    0x1.0p-1074,
+    0x1.280p5
+  },
+  { // Entry 584
+    0x1.p-1036,
+    0x1.0p-1074,
+    0x1.3p5
+  },
+  { // Entry 585
+    0x1.p-1035,
+    0x1.0p-1074,
+    0x1.380p5
+  },
+  { // Entry 586
+    0x1.p-1034,
+    0x1.0p-1074,
+    0x1.4p5
+  },
+  { // Entry 587
+    0x1.p-1033,
+    0x1.0p-1074,
+    0x1.480p5
+  },
+  { // Entry 588
+    0x1.p-1032,
+    0x1.0p-1074,
+    0x1.5p5
+  },
+  { // Entry 589
+    0x1.p-1031,
+    0x1.0p-1074,
+    0x1.580p5
+  },
+  { // Entry 590
+    0x1.p-1030,
+    0x1.0p-1074,
+    0x1.6p5
+  },
+  { // Entry 591
+    0x1.p-1029,
+    0x1.0p-1074,
+    0x1.680p5
+  },
+  { // Entry 592
+    0x1.p-1028,
+    0x1.0p-1074,
+    0x1.7p5
+  },
+  { // Entry 593
+    0x1.p-1027,
+    0x1.0p-1074,
+    0x1.780p5
+  },
+  { // Entry 594
+    0x1.p-1026,
+    0x1.0p-1074,
+    0x1.8p5
+  },
+  { // Entry 595
+    0x1.p-1025,
+    0x1.0p-1074,
+    0x1.880p5
+  },
+  { // Entry 596
+    0x1.p-1024,
+    0x1.0p-1074,
+    0x1.9p5
+  },
+  { // Entry 597
+    0x1.p-1023,
+    0x1.0p-1074,
+    0x1.980p5
+  },
+  { // Entry 598
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.ap5
+  },
+  { // Entry 599
+    0x1.p-1021,
+    0x1.0p-1074,
+    0x1.a80p5
+  },
+  { // Entry 600
+    0x1.p-1020,
+    0x1.0p-1074,
+    0x1.bp5
+  },
+  { // Entry 601
+    0x1.p-1019,
+    0x1.0p-1074,
+    0x1.b80p5
+  },
+  { // Entry 602
+    0x1.p-1018,
+    0x1.0p-1074,
+    0x1.cp5
+  },
+  { // Entry 603
+    0x1.p-1017,
+    0x1.0p-1074,
+    0x1.c80p5
+  },
+  { // Entry 604
+    0x1.p-1016,
+    0x1.0p-1074,
+    0x1.dp5
+  },
+  { // Entry 605
+    0x1.p-1015,
+    0x1.0p-1074,
+    0x1.d80p5
+  },
+  { // Entry 606
+    0x1.p-1014,
+    0x1.0p-1074,
+    0x1.ep5
+  },
+  { // Entry 607
+    0x1.p-1013,
+    0x1.0p-1074,
+    0x1.e80p5
+  },
+  { // Entry 608
+    0x1.p-1012,
+    0x1.0p-1074,
+    0x1.fp5
+  },
+  { // Entry 609
+    0x1.p-1011,
+    0x1.0p-1074,
+    0x1.f80p5
+  },
+  { // Entry 610
+    0x1.p-1010,
+    0x1.0p-1074,
+    0x1.0p6
+  },
+  { // Entry 611
+    0x1.p-1009,
+    0x1.0p-1074,
+    0x1.040p6
+  },
+  { // Entry 612
+    0x1.p-1008,
+    0x1.0p-1074,
+    0x1.080p6
+  },
+  { // Entry 613
+    0x1.p-1007,
+    0x1.0p-1074,
+    0x1.0c0p6
+  },
+  { // Entry 614
+    0x1.p-1006,
+    0x1.0p-1074,
+    0x1.1p6
+  },
+  { // Entry 615
+    0x1.p-1005,
+    0x1.0p-1074,
+    0x1.140p6
+  },
+  { // Entry 616
+    0x1.p-1004,
+    0x1.0p-1074,
+    0x1.180p6
+  },
+  { // Entry 617
+    0x1.p-1003,
+    0x1.0p-1074,
+    0x1.1c0p6
+  },
+  { // Entry 618
+    0x1.p-1002,
+    0x1.0p-1074,
+    0x1.2p6
+  },
+  { // Entry 619
+    0x1.p-1001,
+    0x1.0p-1074,
+    0x1.240p6
+  },
+  { // Entry 620
+    0x1.p-1000,
+    0x1.0p-1074,
+    0x1.280p6
+  },
+  { // Entry 621
+    0x1.p-999,
+    0x1.0p-1074,
+    0x1.2c0p6
+  },
+  { // Entry 622
+    0x1.p-998,
+    0x1.0p-1074,
+    0x1.3p6
+  },
+  { // Entry 623
+    0x1.p-997,
+    0x1.0p-1074,
+    0x1.340p6
+  },
+  { // Entry 624
+    0x1.p-996,
+    0x1.0p-1074,
+    0x1.380p6
+  },
+  { // Entry 625
+    0x1.p-995,
+    0x1.0p-1074,
+    0x1.3c0p6
+  },
+  { // Entry 626
+    0x1.p-994,
+    0x1.0p-1074,
+    0x1.4p6
+  },
+  { // Entry 627
+    0x1.p-993,
+    0x1.0p-1074,
+    0x1.440p6
+  },
+  { // Entry 628
+    0x1.p-992,
+    0x1.0p-1074,
+    0x1.480p6
+  },
+  { // Entry 629
+    0x1.p-991,
+    0x1.0p-1074,
+    0x1.4c0p6
+  },
+  { // Entry 630
+    0x1.p-990,
+    0x1.0p-1074,
+    0x1.5p6
+  },
+  { // Entry 631
+    0x1.p-989,
+    0x1.0p-1074,
+    0x1.540p6
+  },
+  { // Entry 632
+    0x1.p-988,
+    0x1.0p-1074,
+    0x1.580p6
+  },
+  { // Entry 633
+    0x1.p-987,
+    0x1.0p-1074,
+    0x1.5c0p6
+  },
+  { // Entry 634
+    0x1.p-986,
+    0x1.0p-1074,
+    0x1.6p6
+  },
+  { // Entry 635
+    0x1.p-985,
+    0x1.0p-1074,
+    0x1.640p6
+  },
+  { // Entry 636
+    0x1.p-984,
+    0x1.0p-1074,
+    0x1.680p6
+  },
+  { // Entry 637
+    0x1.p-983,
+    0x1.0p-1074,
+    0x1.6c0p6
+  },
+  { // Entry 638
+    0x1.p-982,
+    0x1.0p-1074,
+    0x1.7p6
+  },
+  { // Entry 639
+    0x1.p-981,
+    0x1.0p-1074,
+    0x1.740p6
+  },
+  { // Entry 640
+    0x1.p-980,
+    0x1.0p-1074,
+    0x1.780p6
+  },
+  { // Entry 641
+    0x1.p-979,
+    0x1.0p-1074,
+    0x1.7c0p6
+  },
+  { // Entry 642
+    0x1.p-978,
+    0x1.0p-1074,
+    0x1.8p6
+  },
+  { // Entry 643
+    0x1.p-977,
+    0x1.0p-1074,
+    0x1.840p6
+  },
+  { // Entry 644
+    0x1.p-976,
+    0x1.0p-1074,
+    0x1.880p6
+  },
+  { // Entry 645
+    0x1.p-975,
+    0x1.0p-1074,
+    0x1.8c0p6
+  },
+  { // Entry 646
+    0x1.p-974,
+    0x1.0p-1074,
+    0x1.9p6
+  },
+  { // Entry 647
+    0x1.p-973,
+    0x1.0p-1074,
+    0x1.940p6
+  },
+  { // Entry 648
+    0x1.p-972,
+    0x1.0p-1074,
+    0x1.980p6
+  },
+  { // Entry 649
+    0x1.p-971,
+    0x1.0p-1074,
+    0x1.9c0p6
+  },
+  { // Entry 650
+    0x1.p-970,
+    0x1.0p-1074,
+    0x1.ap6
+  },
+  { // Entry 651
+    0x1.p-969,
+    0x1.0p-1074,
+    0x1.a40p6
+  },
+  { // Entry 652
+    0x1.p-968,
+    0x1.0p-1074,
+    0x1.a80p6
+  },
+  { // Entry 653
+    0x1.p-967,
+    0x1.0p-1074,
+    0x1.ac0p6
+  },
+  { // Entry 654
+    0x1.p-966,
+    0x1.0p-1074,
+    0x1.bp6
+  },
+  { // Entry 655
+    0x1.p-965,
+    0x1.0p-1074,
+    0x1.b40p6
+  },
+  { // Entry 656
+    0x1.p-964,
+    0x1.0p-1074,
+    0x1.b80p6
+  },
+  { // Entry 657
+    0x1.p-963,
+    0x1.0p-1074,
+    0x1.bc0p6
+  },
+  { // Entry 658
+    0x1.p-962,
+    0x1.0p-1074,
+    0x1.cp6
+  },
+  { // Entry 659
+    0x1.p-961,
+    0x1.0p-1074,
+    0x1.c40p6
+  },
+  { // Entry 660
+    0x1.p-960,
+    0x1.0p-1074,
+    0x1.c80p6
+  },
+  { // Entry 661
+    0x1.p-959,
+    0x1.0p-1074,
+    0x1.cc0p6
+  },
+  { // Entry 662
+    0x1.p-958,
+    0x1.0p-1074,
+    0x1.dp6
+  },
+  { // Entry 663
+    0x1.p-957,
+    0x1.0p-1074,
+    0x1.d40p6
+  },
+  { // Entry 664
+    0x1.p-956,
+    0x1.0p-1074,
+    0x1.d80p6
+  },
+  { // Entry 665
+    0x1.p-955,
+    0x1.0p-1074,
+    0x1.dc0p6
+  },
+  { // Entry 666
+    0x1.p-954,
+    0x1.0p-1074,
+    0x1.ep6
+  },
+  { // Entry 667
+    0x1.p-953,
+    0x1.0p-1074,
+    0x1.e40p6
+  },
+  { // Entry 668
+    0x1.p-952,
+    0x1.0p-1074,
+    0x1.e80p6
+  },
+  { // Entry 669
+    0x1.p-951,
+    0x1.0p-1074,
+    0x1.ec0p6
+  },
+  { // Entry 670
+    0x1.p-950,
+    0x1.0p-1074,
+    0x1.fp6
+  },
+  { // Entry 671
+    0x1.p-949,
+    0x1.0p-1074,
+    0x1.f40p6
+  },
+  { // Entry 672
+    0x1.p-948,
+    0x1.0p-1074,
+    0x1.f80p6
+  },
+  { // Entry 673
+    0x1.p-947,
+    0x1.0p-1074,
+    0x1.fc0p6
+  },
+  { // Entry 674
+    0x1.p-946,
+    0x1.0p-1074,
+    0x1.0p7
+  },
+  { // Entry 675
+    0x1.p-945,
+    0x1.0p-1074,
+    0x1.020p7
+  },
+  { // Entry 676
+    0x1.p-944,
+    0x1.0p-1074,
+    0x1.040p7
+  },
+  { // Entry 677
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 678
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p0
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1021,
+    0x1.ffffffffffffep-1023,
+    0x1.0p1
+  },
+  { // Entry 680
+    0x1.ffffffffffffe0p-1020,
+    0x1.ffffffffffffep-1023,
+    0x1.8p1
+  },
+  { // Entry 681
+    0x1.ffffffffffffe0p-1019,
+    0x1.ffffffffffffep-1023,
+    0x1.0p2
+  },
+  { // Entry 682
+    0x1.ffffffffffffe0p-1018,
+    0x1.ffffffffffffep-1023,
+    0x1.4p2
+  },
+  { // Entry 683
+    0x1.ffffffffffffe0p-1017,
+    0x1.ffffffffffffep-1023,
+    0x1.8p2
+  },
+  { // Entry 684
+    0x1.ffffffffffffe0p-1016,
+    0x1.ffffffffffffep-1023,
+    0x1.cp2
+  },
+  { // Entry 685
+    0x1.ffffffffffffe0p-1015,
+    0x1.ffffffffffffep-1023,
+    0x1.0p3
+  },
+  { // Entry 686
+    0x1.ffffffffffffe0p-1014,
+    0x1.ffffffffffffep-1023,
+    0x1.2p3
+  },
+  { // Entry 687
+    0x1.ffffffffffffe0p-1013,
+    0x1.ffffffffffffep-1023,
+    0x1.4p3
+  },
+  { // Entry 688
+    0x1.ffffffffffffe0p-1012,
+    0x1.ffffffffffffep-1023,
+    0x1.6p3
+  },
+  { // Entry 689
+    0x1.ffffffffffffe0p-1011,
+    0x1.ffffffffffffep-1023,
+    0x1.8p3
+  },
+  { // Entry 690
+    0x1.ffffffffffffe0p-1010,
+    0x1.ffffffffffffep-1023,
+    0x1.ap3
+  },
+  { // Entry 691
+    0x1.ffffffffffffe0p-1009,
+    0x1.ffffffffffffep-1023,
+    0x1.cp3
+  },
+  { // Entry 692
+    0x1.ffffffffffffe0p-1008,
+    0x1.ffffffffffffep-1023,
+    0x1.ep3
+  },
+  { // Entry 693
+    0x1.ffffffffffffe0p-1007,
+    0x1.ffffffffffffep-1023,
+    0x1.0p4
+  },
+  { // Entry 694
+    0x1.ffffffffffffe0p-1006,
+    0x1.ffffffffffffep-1023,
+    0x1.1p4
+  },
+  { // Entry 695
+    0x1.ffffffffffffe0p-1005,
+    0x1.ffffffffffffep-1023,
+    0x1.2p4
+  },
+  { // Entry 696
+    0x1.ffffffffffffe0p-1004,
+    0x1.ffffffffffffep-1023,
+    0x1.3p4
+  },
+  { // Entry 697
+    0x1.ffffffffffffe0p-1003,
+    0x1.ffffffffffffep-1023,
+    0x1.4p4
+  },
+  { // Entry 698
+    0x1.ffffffffffffe0p-1002,
+    0x1.ffffffffffffep-1023,
+    0x1.5p4
+  },
+  { // Entry 699
+    0x1.ffffffffffffe0p-1001,
+    0x1.ffffffffffffep-1023,
+    0x1.6p4
+  },
+  { // Entry 700
+    0x1.ffffffffffffe0p-1000,
+    0x1.ffffffffffffep-1023,
+    0x1.7p4
+  },
+  { // Entry 701
+    0x1.ffffffffffffe0p-999,
+    0x1.ffffffffffffep-1023,
+    0x1.8p4
+  },
+  { // Entry 702
+    0x1.ffffffffffffe0p-998,
+    0x1.ffffffffffffep-1023,
+    0x1.9p4
+  },
+  { // Entry 703
+    0x1.ffffffffffffe0p-997,
+    0x1.ffffffffffffep-1023,
+    0x1.ap4
+  },
+  { // Entry 704
+    0x1.ffffffffffffe0p-996,
+    0x1.ffffffffffffep-1023,
+    0x1.bp4
+  },
+  { // Entry 705
+    0x1.ffffffffffffe0p-995,
+    0x1.ffffffffffffep-1023,
+    0x1.cp4
+  },
+  { // Entry 706
+    0x1.ffffffffffffe0p-994,
+    0x1.ffffffffffffep-1023,
+    0x1.dp4
+  },
+  { // Entry 707
+    0x1.ffffffffffffe0p-993,
+    0x1.ffffffffffffep-1023,
+    0x1.ep4
+  },
+  { // Entry 708
+    0x1.ffffffffffffe0p-992,
+    0x1.ffffffffffffep-1023,
+    0x1.fp4
+  },
+  { // Entry 709
+    0x1.ffffffffffffe0p-991,
+    0x1.ffffffffffffep-1023,
+    0x1.0p5
+  },
+  { // Entry 710
+    0x1.ffffffffffffe0p-990,
+    0x1.ffffffffffffep-1023,
+    0x1.080p5
+  },
+  { // Entry 711
+    0x1.ffffffffffffe0p-989,
+    0x1.ffffffffffffep-1023,
+    0x1.1p5
+  },
+  { // Entry 712
+    0x1.ffffffffffffe0p-988,
+    0x1.ffffffffffffep-1023,
+    0x1.180p5
+  },
+  { // Entry 713
+    0x1.ffffffffffffe0p-987,
+    0x1.ffffffffffffep-1023,
+    0x1.2p5
+  },
+  { // Entry 714
+    0x1.ffffffffffffe0p-986,
+    0x1.ffffffffffffep-1023,
+    0x1.280p5
+  },
+  { // Entry 715
+    0x1.ffffffffffffe0p-985,
+    0x1.ffffffffffffep-1023,
+    0x1.3p5
+  },
+  { // Entry 716
+    0x1.ffffffffffffe0p-984,
+    0x1.ffffffffffffep-1023,
+    0x1.380p5
+  },
+  { // Entry 717
+    0x1.ffffffffffffe0p-983,
+    0x1.ffffffffffffep-1023,
+    0x1.4p5
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0p-982,
+    0x1.ffffffffffffep-1023,
+    0x1.480p5
+  },
+  { // Entry 719
+    0x1.ffffffffffffe0p-981,
+    0x1.ffffffffffffep-1023,
+    0x1.5p5
+  },
+  { // Entry 720
+    0x1.ffffffffffffe0p-980,
+    0x1.ffffffffffffep-1023,
+    0x1.580p5
+  },
+  { // Entry 721
+    0x1.ffffffffffffe0p-979,
+    0x1.ffffffffffffep-1023,
+    0x1.6p5
+  },
+  { // Entry 722
+    0x1.ffffffffffffe0p-978,
+    0x1.ffffffffffffep-1023,
+    0x1.680p5
+  },
+  { // Entry 723
+    0x1.ffffffffffffe0p-977,
+    0x1.ffffffffffffep-1023,
+    0x1.7p5
+  },
+  { // Entry 724
+    0x1.ffffffffffffe0p-976,
+    0x1.ffffffffffffep-1023,
+    0x1.780p5
+  },
+  { // Entry 725
+    0x1.ffffffffffffe0p-975,
+    0x1.ffffffffffffep-1023,
+    0x1.8p5
+  },
+  { // Entry 726
+    0x1.ffffffffffffe0p-974,
+    0x1.ffffffffffffep-1023,
+    0x1.880p5
+  },
+  { // Entry 727
+    0x1.ffffffffffffe0p-973,
+    0x1.ffffffffffffep-1023,
+    0x1.9p5
+  },
+  { // Entry 728
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    0x1.980p5
+  },
+  { // Entry 729
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    0x1.ap5
+  },
+  { // Entry 730
+    0x1.ffffffffffffe0p-970,
+    0x1.ffffffffffffep-1023,
+    0x1.a80p5
+  },
+  { // Entry 731
+    0x1.ffffffffffffe0p-969,
+    0x1.ffffffffffffep-1023,
+    0x1.bp5
+  },
+  { // Entry 732
+    0x1.ffffffffffffe0p-968,
+    0x1.ffffffffffffep-1023,
+    0x1.b80p5
+  },
+  { // Entry 733
+    0x1.ffffffffffffe0p-967,
+    0x1.ffffffffffffep-1023,
+    0x1.cp5
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-966,
+    0x1.ffffffffffffep-1023,
+    0x1.c80p5
+  },
+  { // Entry 735
+    0x1.ffffffffffffe0p-965,
+    0x1.ffffffffffffep-1023,
+    0x1.dp5
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0p-964,
+    0x1.ffffffffffffep-1023,
+    0x1.d80p5
+  },
+  { // Entry 737
+    0x1.ffffffffffffe0p-963,
+    0x1.ffffffffffffep-1023,
+    0x1.ep5
+  },
+  { // Entry 738
+    0x1.ffffffffffffe0p-962,
+    0x1.ffffffffffffep-1023,
+    0x1.e80p5
+  },
+  { // Entry 739
+    0x1.ffffffffffffe0p-961,
+    0x1.ffffffffffffep-1023,
+    0x1.fp5
+  },
+  { // Entry 740
+    0x1.ffffffffffffe0p-960,
+    0x1.ffffffffffffep-1023,
+    0x1.f80p5
+  },
+  { // Entry 741
+    0x1.ffffffffffffe0p-959,
+    0x1.ffffffffffffep-1023,
+    0x1.0p6
+  },
+  { // Entry 742
+    0x1.ffffffffffffe0p-958,
+    0x1.ffffffffffffep-1023,
+    0x1.040p6
+  },
+  { // Entry 743
+    0x1.ffffffffffffe0p-957,
+    0x1.ffffffffffffep-1023,
+    0x1.080p6
+  },
+  { // Entry 744
+    0x1.ffffffffffffe0p-956,
+    0x1.ffffffffffffep-1023,
+    0x1.0c0p6
+  },
+  { // Entry 745
+    0x1.ffffffffffffe0p-955,
+    0x1.ffffffffffffep-1023,
+    0x1.1p6
+  },
+  { // Entry 746
+    0x1.ffffffffffffe0p-954,
+    0x1.ffffffffffffep-1023,
+    0x1.140p6
+  },
+  { // Entry 747
+    0x1.ffffffffffffe0p-953,
+    0x1.ffffffffffffep-1023,
+    0x1.180p6
+  },
+  { // Entry 748
+    0x1.ffffffffffffe0p-952,
+    0x1.ffffffffffffep-1023,
+    0x1.1c0p6
+  },
+  { // Entry 749
+    0x1.ffffffffffffe0p-951,
+    0x1.ffffffffffffep-1023,
+    0x1.2p6
+  },
+  { // Entry 750
+    0x1.ffffffffffffe0p-950,
+    0x1.ffffffffffffep-1023,
+    0x1.240p6
+  },
+  { // Entry 751
+    0x1.ffffffffffffe0p-949,
+    0x1.ffffffffffffep-1023,
+    0x1.280p6
+  },
+  { // Entry 752
+    0x1.ffffffffffffe0p-948,
+    0x1.ffffffffffffep-1023,
+    0x1.2c0p6
+  },
+  { // Entry 753
+    0x1.ffffffffffffe0p-947,
+    0x1.ffffffffffffep-1023,
+    0x1.3p6
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0p-946,
+    0x1.ffffffffffffep-1023,
+    0x1.340p6
+  },
+  { // Entry 755
+    0x1.ffffffffffffe0p-945,
+    0x1.ffffffffffffep-1023,
+    0x1.380p6
+  },
+  { // Entry 756
+    0x1.ffffffffffffe0p-944,
+    0x1.ffffffffffffep-1023,
+    0x1.3c0p6
+  },
+  { // Entry 757
+    0x1.ffffffffffffe0p-943,
+    0x1.ffffffffffffep-1023,
+    0x1.4p6
+  },
+  { // Entry 758
+    0x1.ffffffffffffe0p-942,
+    0x1.ffffffffffffep-1023,
+    0x1.440p6
+  },
+  { // Entry 759
+    0x1.ffffffffffffe0p-941,
+    0x1.ffffffffffffep-1023,
+    0x1.480p6
+  },
+  { // Entry 760
+    0x1.ffffffffffffe0p-940,
+    0x1.ffffffffffffep-1023,
+    0x1.4c0p6
+  },
+  { // Entry 761
+    0x1.ffffffffffffe0p-939,
+    0x1.ffffffffffffep-1023,
+    0x1.5p6
+  },
+  { // Entry 762
+    0x1.ffffffffffffe0p-938,
+    0x1.ffffffffffffep-1023,
+    0x1.540p6
+  },
+  { // Entry 763
+    0x1.ffffffffffffe0p-937,
+    0x1.ffffffffffffep-1023,
+    0x1.580p6
+  },
+  { // Entry 764
+    0x1.ffffffffffffe0p-936,
+    0x1.ffffffffffffep-1023,
+    0x1.5c0p6
+  },
+  { // Entry 765
+    0x1.ffffffffffffe0p-935,
+    0x1.ffffffffffffep-1023,
+    0x1.6p6
+  },
+  { // Entry 766
+    0x1.ffffffffffffe0p-934,
+    0x1.ffffffffffffep-1023,
+    0x1.640p6
+  },
+  { // Entry 767
+    0x1.ffffffffffffe0p-933,
+    0x1.ffffffffffffep-1023,
+    0x1.680p6
+  },
+  { // Entry 768
+    0x1.ffffffffffffe0p-932,
+    0x1.ffffffffffffep-1023,
+    0x1.6c0p6
+  },
+  { // Entry 769
+    0x1.ffffffffffffe0p-931,
+    0x1.ffffffffffffep-1023,
+    0x1.7p6
+  },
+  { // Entry 770
+    0x1.ffffffffffffe0p-930,
+    0x1.ffffffffffffep-1023,
+    0x1.740p6
+  },
+  { // Entry 771
+    0x1.ffffffffffffe0p-929,
+    0x1.ffffffffffffep-1023,
+    0x1.780p6
+  },
+  { // Entry 772
+    0x1.ffffffffffffe0p-928,
+    0x1.ffffffffffffep-1023,
+    0x1.7c0p6
+  },
+  { // Entry 773
+    0x1.ffffffffffffe0p-927,
+    0x1.ffffffffffffep-1023,
+    0x1.8p6
+  },
+  { // Entry 774
+    0x1.ffffffffffffe0p-926,
+    0x1.ffffffffffffep-1023,
+    0x1.840p6
+  },
+  { // Entry 775
+    0x1.ffffffffffffe0p-925,
+    0x1.ffffffffffffep-1023,
+    0x1.880p6
+  },
+  { // Entry 776
+    0x1.ffffffffffffe0p-924,
+    0x1.ffffffffffffep-1023,
+    0x1.8c0p6
+  },
+  { // Entry 777
+    0x1.ffffffffffffe0p-923,
+    0x1.ffffffffffffep-1023,
+    0x1.9p6
+  },
+  { // Entry 778
+    0x1.ffffffffffffe0p-922,
+    0x1.ffffffffffffep-1023,
+    0x1.940p6
+  },
+  { // Entry 779
+    0x1.ffffffffffffe0p-921,
+    0x1.ffffffffffffep-1023,
+    0x1.980p6
+  },
+  { // Entry 780
+    0x1.ffffffffffffe0p-920,
+    0x1.ffffffffffffep-1023,
+    0x1.9c0p6
+  },
+  { // Entry 781
+    0x1.ffffffffffffe0p-919,
+    0x1.ffffffffffffep-1023,
+    0x1.ap6
+  },
+  { // Entry 782
+    0x1.ffffffffffffe0p-918,
+    0x1.ffffffffffffep-1023,
+    0x1.a40p6
+  },
+  { // Entry 783
+    0x1.ffffffffffffe0p-917,
+    0x1.ffffffffffffep-1023,
+    0x1.a80p6
+  },
+  { // Entry 784
+    0x1.ffffffffffffe0p-916,
+    0x1.ffffffffffffep-1023,
+    0x1.ac0p6
+  },
+  { // Entry 785
+    0x1.ffffffffffffe0p-915,
+    0x1.ffffffffffffep-1023,
+    0x1.bp6
+  },
+  { // Entry 786
+    0x1.ffffffffffffe0p-914,
+    0x1.ffffffffffffep-1023,
+    0x1.b40p6
+  },
+  { // Entry 787
+    0x1.ffffffffffffe0p-913,
+    0x1.ffffffffffffep-1023,
+    0x1.b80p6
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0p-912,
+    0x1.ffffffffffffep-1023,
+    0x1.bc0p6
+  },
+  { // Entry 789
+    0x1.ffffffffffffe0p-911,
+    0x1.ffffffffffffep-1023,
+    0x1.cp6
+  },
+  { // Entry 790
+    0x1.ffffffffffffe0p-910,
+    0x1.ffffffffffffep-1023,
+    0x1.c40p6
+  },
+  { // Entry 791
+    0x1.ffffffffffffe0p-909,
+    0x1.ffffffffffffep-1023,
+    0x1.c80p6
+  },
+  { // Entry 792
+    0x1.ffffffffffffe0p-908,
+    0x1.ffffffffffffep-1023,
+    0x1.cc0p6
+  },
+  { // Entry 793
+    0x1.ffffffffffffe0p-907,
+    0x1.ffffffffffffep-1023,
+    0x1.dp6
+  },
+  { // Entry 794
+    0x1.ffffffffffffe0p-906,
+    0x1.ffffffffffffep-1023,
+    0x1.d40p6
+  },
+  { // Entry 795
+    0x1.ffffffffffffe0p-905,
+    0x1.ffffffffffffep-1023,
+    0x1.d80p6
+  },
+  { // Entry 796
+    0x1.ffffffffffffe0p-904,
+    0x1.ffffffffffffep-1023,
+    0x1.dc0p6
+  },
+  { // Entry 797
+    0x1.ffffffffffffe0p-903,
+    0x1.ffffffffffffep-1023,
+    0x1.ep6
+  },
+  { // Entry 798
+    0x1.ffffffffffffe0p-902,
+    0x1.ffffffffffffep-1023,
+    0x1.e40p6
+  },
+  { // Entry 799
+    0x1.ffffffffffffe0p-901,
+    0x1.ffffffffffffep-1023,
+    0x1.e80p6
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0p-900,
+    0x1.ffffffffffffep-1023,
+    0x1.ec0p6
+  },
+  { // Entry 801
+    0x1.ffffffffffffe0p-899,
+    0x1.ffffffffffffep-1023,
+    0x1.fp6
+  },
+  { // Entry 802
+    0x1.ffffffffffffe0p-898,
+    0x1.ffffffffffffep-1023,
+    0x1.f40p6
+  },
+  { // Entry 803
+    0x1.ffffffffffffe0p-897,
+    0x1.ffffffffffffep-1023,
+    0x1.f80p6
+  },
+  { // Entry 804
+    0x1.ffffffffffffe0p-896,
+    0x1.ffffffffffffep-1023,
+    0x1.fc0p6
+  },
+  { // Entry 805
+    0x1.ffffffffffffe0p-895,
+    0x1.ffffffffffffep-1023,
+    0x1.0p7
+  },
+  { // Entry 806
+    0x1.ffffffffffffe0p-894,
+    0x1.ffffffffffffep-1023,
+    0x1.020p7
+  },
+  { // Entry 807
+    0x1.ffffffffffffe0p-893,
+    0x1.ffffffffffffep-1023,
+    0x1.040p7
+  },
+  { // Entry 808
+    0x1.p0,
+    0x1.0p-1074,
+    0x1.0c8p10
+  },
+  { // Entry 809
+    0x1.p-1,
+    0x1.0p-1074,
+    0x1.0c4p10
+  },
+  { // Entry 810
+    0x1.ffffffffffffe0p51,
+    0x1.ffffffffffffep-1023,
+    0x1.0c8p10
+  },
+  { // Entry 811
+    0x1.ffffffffffffe0p50,
+    0x1.ffffffffffffep-1023,
+    0x1.0c4p10
+  },
+  { // Entry 812
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.ap5
+  },
+  { // Entry 813
+    0x1.p-1023,
+    0x1.0p-1074,
+    0x1.980p5
+  },
+  { // Entry 814
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    0x1.ap5
+  },
+  { // Entry 815
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    0x1.980p5
+  },
+  { // Entry 816
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 817
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 818
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 819
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p0
+  },
+  { // Entry 820
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 821
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 822
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 823
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 824
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 825
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 826
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 827
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 828
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 829
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 830
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 831
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 832
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 833
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 834
+    0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 835
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 836
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 837
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 838
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 839
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 840
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 841
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 842
+    0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 843
+    0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 844
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 845
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 846
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 847
+    0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 848
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 849
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 850
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 851
+    -0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 852
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 853
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 854
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 855
+    -0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 856
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 857
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 858
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 859
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 860
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 861
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 862
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 863
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 864
+    0.0,
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 865
+    -0.0,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 866
+    0.0,
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 867
+    -0.0,
+    -0.0,
+    -0x1.0p0
+  },
+  { // Entry 868
+    0.0,
+    0.0,
+    0x1.fc0p6
+  },
+  { // Entry 869
+    -0.0,
+    -0.0,
+    0x1.fc0p6
+  },
+  { // Entry 870
+    0.0,
+    0.0,
+    -0x1.fc0p6
+  },
+  { // Entry 871
+    -0.0,
+    -0.0,
+    -0x1.fc0p6
+  },
+  { // Entry 872
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 873
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 874
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 875
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 876
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 877
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 878
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 879
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 880
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p0
+  },
+  { // Entry 881
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p0
+  },
+  { // Entry 882
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 883
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 884
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fc0p6
+  },
+  { // Entry 885
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fc0p6
+  },
+  { // Entry 886
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fc0p6
+  },
+  { // Entry 887
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fc0p6
+  },
+  { // Entry 888
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 889
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 890
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 891
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 892
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 893
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 894
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 895
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 896
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 897
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 898
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 899
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 900
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 901
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 902
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 903
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 904
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 905
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 906
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p0
+  },
+  { // Entry 907
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fc0p6
+  },
+  { // Entry 908
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p0
+  },
+  { // Entry 909
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fc0p6
+  },
+  { // Entry 910
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.388p15
+  },
+  { // Entry 911
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.388p15
+  },
+  { // Entry 912
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.388p15
+  },
+  { // Entry 913
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.388p15
+  },
+  { // Entry 914
+    0x1.p-1023,
+    0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 915
+    0x1.ffffffffffffe0p-1024,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 916
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 917
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 918
+    -0x1.ffffffffffffe0p-1024,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 919
+    -0x1.p-1023,
+    -0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 920
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.388p15
+  },
+  { // Entry 921
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.388p15
+  }
+};
diff --git a/tests/math_data/scalbf_intel_data.h b/tests/math_data/scalbf_intel_data.h
new file mode 100644
index 0000000..cd1d5ef
--- /dev/null
+++ b/tests/math_data/scalbf_intel_data.h
@@ -0,0 +1,4588 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, float> g_scalbf_intel_data[] = {
+  { // Entry 0
+    -0.0f,
+    -0x1.p-149,
+    -0x1.40p3
+  },
+  { // Entry 1
+    -0x1.555554p-128,
+    -0x1.555554p-2,
+    -0x1.f8p6
+  },
+  { // Entry 2
+    -0x1.6db6dcp-128,
+    -0x1.6db6dcp-1,
+    -0x1.fcp6
+  },
+  { // Entry 3
+    -0x1.8e38e4p-128,
+    -0x1.8e38e4p-1,
+    -0x1.fcp6
+  },
+  { // Entry 4
+    0.0f,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 5
+    0.0f,
+    0x1.p-149,
+    -0x1.40p3
+  },
+  { // Entry 6
+    0x1.5464b0p-130,
+    0x1.5464b0p-2,
+    -0x1.p7
+  },
+  { // Entry 7
+    0.0f,
+    0x1.dddddep-2,
+    -0x1.28p7
+  },
+  { // Entry 8
+    0x1.ecb7e8p-129,
+    0x1.ecb7e8p-1,
+    -0x1.p7
+  },
+  { // Entry 9
+    0.0f,
+    0x1.ffff60p-127,
+    -0x1.70p4
+  },
+  { // Entry 10
+    0.0f,
+    0x1.ffff84p-127,
+    -0x1.70p4
+  },
+  { // Entry 11
+    0x1.fffff8p-137,
+    0x1.fffff8p-127,
+    -0x1.40p3
+  },
+  { // Entry 12
+    0.0f,
+    0x1.fffffep127,
+    -0x1.p31
+  },
+  { // Entry 13
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p31
+  },
+  { // Entry 14
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p31
+  },
+  { // Entry 15
+    -0x1.p-10,
+    -0x1.p0,
+    -0x1.40p3
+  },
+  { // Entry 16
+    -0x1.p-9,
+    -0x1.p0,
+    -0x1.20p3
+  },
+  { // Entry 17
+    -0x1.p-8,
+    -0x1.p0,
+    -0x1.p3
+  },
+  { // Entry 18
+    -0x1.p-7,
+    -0x1.p0,
+    -0x1.c0p2
+  },
+  { // Entry 19
+    -0x1.p-6,
+    -0x1.p0,
+    -0x1.80p2
+  },
+  { // Entry 20
+    -0x1.p-5,
+    -0x1.p0,
+    -0x1.40p2
+  },
+  { // Entry 21
+    -0x1.p-4,
+    -0x1.p0,
+    -0x1.p2
+  },
+  { // Entry 22
+    -0x1.p-3,
+    -0x1.p0,
+    -0x1.80p1
+  },
+  { // Entry 23
+    -0x1.p-2,
+    -0x1.p0,
+    -0x1.p1
+  },
+  { // Entry 24
+    -0x1.p-1,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 25
+    -0x1.p0,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 26
+    -0x1.p1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 27
+    -0x1.p2,
+    -0x1.p0,
+    0x1.p1
+  },
+  { // Entry 28
+    -0x1.p3,
+    -0x1.p0,
+    0x1.80p1
+  },
+  { // Entry 29
+    -0x1.p4,
+    -0x1.p0,
+    0x1.p2
+  },
+  { // Entry 30
+    -0x1.p5,
+    -0x1.p0,
+    0x1.40p2
+  },
+  { // Entry 31
+    -0x1.p6,
+    -0x1.p0,
+    0x1.80p2
+  },
+  { // Entry 32
+    -0x1.p7,
+    -0x1.p0,
+    0x1.c0p2
+  },
+  { // Entry 33
+    -0x1.p8,
+    -0x1.p0,
+    0x1.p3
+  },
+  { // Entry 34
+    -0x1.p9,
+    -0x1.p0,
+    0x1.20p3
+  },
+  { // Entry 35
+    -0x1.p10,
+    -0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 36
+    -0x1.d1745cp-11,
+    -0x1.d1745cp-1,
+    -0x1.40p3
+  },
+  { // Entry 37
+    -0x1.d1745cp-10,
+    -0x1.d1745cp-1,
+    -0x1.20p3
+  },
+  { // Entry 38
+    -0x1.d1745cp-9,
+    -0x1.d1745cp-1,
+    -0x1.p3
+  },
+  { // Entry 39
+    -0x1.d1745cp-8,
+    -0x1.d1745cp-1,
+    -0x1.c0p2
+  },
+  { // Entry 40
+    -0x1.d1745cp-7,
+    -0x1.d1745cp-1,
+    -0x1.80p2
+  },
+  { // Entry 41
+    -0x1.d1745cp-6,
+    -0x1.d1745cp-1,
+    -0x1.40p2
+  },
+  { // Entry 42
+    -0x1.d1745cp-5,
+    -0x1.d1745cp-1,
+    -0x1.p2
+  },
+  { // Entry 43
+    -0x1.d1745cp-4,
+    -0x1.d1745cp-1,
+    -0x1.80p1
+  },
+  { // Entry 44
+    -0x1.d1745cp-3,
+    -0x1.d1745cp-1,
+    -0x1.p1
+  },
+  { // Entry 45
+    -0x1.d1745cp-2,
+    -0x1.d1745cp-1,
+    -0x1.p0
+  },
+  { // Entry 46
+    -0x1.d1745cp-1,
+    -0x1.d1745cp-1,
+    0.0
+  },
+  { // Entry 47
+    -0x1.d1745cp0,
+    -0x1.d1745cp-1,
+    0x1.p0
+  },
+  { // Entry 48
+    -0x1.d1745cp1,
+    -0x1.d1745cp-1,
+    0x1.p1
+  },
+  { // Entry 49
+    -0x1.d1745cp2,
+    -0x1.d1745cp-1,
+    0x1.80p1
+  },
+  { // Entry 50
+    -0x1.d1745cp3,
+    -0x1.d1745cp-1,
+    0x1.p2
+  },
+  { // Entry 51
+    -0x1.d1745cp4,
+    -0x1.d1745cp-1,
+    0x1.40p2
+  },
+  { // Entry 52
+    -0x1.d1745cp5,
+    -0x1.d1745cp-1,
+    0x1.80p2
+  },
+  { // Entry 53
+    -0x1.d1745cp6,
+    -0x1.d1745cp-1,
+    0x1.c0p2
+  },
+  { // Entry 54
+    -0x1.d1745cp7,
+    -0x1.d1745cp-1,
+    0x1.p3
+  },
+  { // Entry 55
+    -0x1.d1745cp8,
+    -0x1.d1745cp-1,
+    0x1.20p3
+  },
+  { // Entry 56
+    -0x1.d1745cp9,
+    -0x1.d1745cp-1,
+    0x1.40p3
+  },
+  { // Entry 57
+    -0x1.a2e8b8p-11,
+    -0x1.a2e8b8p-1,
+    -0x1.40p3
+  },
+  { // Entry 58
+    -0x1.a2e8b8p-10,
+    -0x1.a2e8b8p-1,
+    -0x1.20p3
+  },
+  { // Entry 59
+    -0x1.a2e8b8p-9,
+    -0x1.a2e8b8p-1,
+    -0x1.p3
+  },
+  { // Entry 60
+    -0x1.a2e8b8p-8,
+    -0x1.a2e8b8p-1,
+    -0x1.c0p2
+  },
+  { // Entry 61
+    -0x1.a2e8b8p-7,
+    -0x1.a2e8b8p-1,
+    -0x1.80p2
+  },
+  { // Entry 62
+    -0x1.a2e8b8p-6,
+    -0x1.a2e8b8p-1,
+    -0x1.40p2
+  },
+  { // Entry 63
+    -0x1.a2e8b8p-5,
+    -0x1.a2e8b8p-1,
+    -0x1.p2
+  },
+  { // Entry 64
+    -0x1.a2e8b8p-4,
+    -0x1.a2e8b8p-1,
+    -0x1.80p1
+  },
+  { // Entry 65
+    -0x1.a2e8b8p-3,
+    -0x1.a2e8b8p-1,
+    -0x1.p1
+  },
+  { // Entry 66
+    -0x1.a2e8b8p-2,
+    -0x1.a2e8b8p-1,
+    -0x1.p0
+  },
+  { // Entry 67
+    -0x1.a2e8b8p-1,
+    -0x1.a2e8b8p-1,
+    0.0
+  },
+  { // Entry 68
+    -0x1.a2e8b8p0,
+    -0x1.a2e8b8p-1,
+    0x1.p0
+  },
+  { // Entry 69
+    -0x1.a2e8b8p1,
+    -0x1.a2e8b8p-1,
+    0x1.p1
+  },
+  { // Entry 70
+    -0x1.a2e8b8p2,
+    -0x1.a2e8b8p-1,
+    0x1.80p1
+  },
+  { // Entry 71
+    -0x1.a2e8b8p3,
+    -0x1.a2e8b8p-1,
+    0x1.p2
+  },
+  { // Entry 72
+    -0x1.a2e8b8p4,
+    -0x1.a2e8b8p-1,
+    0x1.40p2
+  },
+  { // Entry 73
+    -0x1.a2e8b8p5,
+    -0x1.a2e8b8p-1,
+    0x1.80p2
+  },
+  { // Entry 74
+    -0x1.a2e8b8p6,
+    -0x1.a2e8b8p-1,
+    0x1.c0p2
+  },
+  { // Entry 75
+    -0x1.a2e8b8p7,
+    -0x1.a2e8b8p-1,
+    0x1.p3
+  },
+  { // Entry 76
+    -0x1.a2e8b8p8,
+    -0x1.a2e8b8p-1,
+    0x1.20p3
+  },
+  { // Entry 77
+    -0x1.a2e8b8p9,
+    -0x1.a2e8b8p-1,
+    0x1.40p3
+  },
+  { // Entry 78
+    -0x1.745d14p-11,
+    -0x1.745d14p-1,
+    -0x1.40p3
+  },
+  { // Entry 79
+    -0x1.745d14p-10,
+    -0x1.745d14p-1,
+    -0x1.20p3
+  },
+  { // Entry 80
+    -0x1.745d14p-9,
+    -0x1.745d14p-1,
+    -0x1.p3
+  },
+  { // Entry 81
+    -0x1.745d14p-8,
+    -0x1.745d14p-1,
+    -0x1.c0p2
+  },
+  { // Entry 82
+    -0x1.745d14p-7,
+    -0x1.745d14p-1,
+    -0x1.80p2
+  },
+  { // Entry 83
+    -0x1.745d14p-6,
+    -0x1.745d14p-1,
+    -0x1.40p2
+  },
+  { // Entry 84
+    -0x1.745d14p-5,
+    -0x1.745d14p-1,
+    -0x1.p2
+  },
+  { // Entry 85
+    -0x1.745d14p-4,
+    -0x1.745d14p-1,
+    -0x1.80p1
+  },
+  { // Entry 86
+    -0x1.745d14p-3,
+    -0x1.745d14p-1,
+    -0x1.p1
+  },
+  { // Entry 87
+    -0x1.745d14p-2,
+    -0x1.745d14p-1,
+    -0x1.p0
+  },
+  { // Entry 88
+    -0x1.745d14p-1,
+    -0x1.745d14p-1,
+    0.0
+  },
+  { // Entry 89
+    -0x1.745d14p0,
+    -0x1.745d14p-1,
+    0x1.p0
+  },
+  { // Entry 90
+    -0x1.745d14p1,
+    -0x1.745d14p-1,
+    0x1.p1
+  },
+  { // Entry 91
+    -0x1.745d14p2,
+    -0x1.745d14p-1,
+    0x1.80p1
+  },
+  { // Entry 92
+    -0x1.745d14p3,
+    -0x1.745d14p-1,
+    0x1.p2
+  },
+  { // Entry 93
+    -0x1.745d14p4,
+    -0x1.745d14p-1,
+    0x1.40p2
+  },
+  { // Entry 94
+    -0x1.745d14p5,
+    -0x1.745d14p-1,
+    0x1.80p2
+  },
+  { // Entry 95
+    -0x1.745d14p6,
+    -0x1.745d14p-1,
+    0x1.c0p2
+  },
+  { // Entry 96
+    -0x1.745d14p7,
+    -0x1.745d14p-1,
+    0x1.p3
+  },
+  { // Entry 97
+    -0x1.745d14p8,
+    -0x1.745d14p-1,
+    0x1.20p3
+  },
+  { // Entry 98
+    -0x1.745d14p9,
+    -0x1.745d14p-1,
+    0x1.40p3
+  },
+  { // Entry 99
+    -0x1.45d170p-11,
+    -0x1.45d170p-1,
+    -0x1.40p3
+  },
+  { // Entry 100
+    -0x1.45d170p-10,
+    -0x1.45d170p-1,
+    -0x1.20p3
+  },
+  { // Entry 101
+    -0x1.45d170p-9,
+    -0x1.45d170p-1,
+    -0x1.p3
+  },
+  { // Entry 102
+    -0x1.45d170p-8,
+    -0x1.45d170p-1,
+    -0x1.c0p2
+  },
+  { // Entry 103
+    -0x1.45d170p-7,
+    -0x1.45d170p-1,
+    -0x1.80p2
+  },
+  { // Entry 104
+    -0x1.45d170p-6,
+    -0x1.45d170p-1,
+    -0x1.40p2
+  },
+  { // Entry 105
+    -0x1.45d170p-5,
+    -0x1.45d170p-1,
+    -0x1.p2
+  },
+  { // Entry 106
+    -0x1.45d170p-4,
+    -0x1.45d170p-1,
+    -0x1.80p1
+  },
+  { // Entry 107
+    -0x1.45d170p-3,
+    -0x1.45d170p-1,
+    -0x1.p1
+  },
+  { // Entry 108
+    -0x1.45d170p-2,
+    -0x1.45d170p-1,
+    -0x1.p0
+  },
+  { // Entry 109
+    -0x1.45d170p-1,
+    -0x1.45d170p-1,
+    0.0
+  },
+  { // Entry 110
+    -0x1.45d170p0,
+    -0x1.45d170p-1,
+    0x1.p0
+  },
+  { // Entry 111
+    -0x1.45d170p1,
+    -0x1.45d170p-1,
+    0x1.p1
+  },
+  { // Entry 112
+    -0x1.45d170p2,
+    -0x1.45d170p-1,
+    0x1.80p1
+  },
+  { // Entry 113
+    -0x1.45d170p3,
+    -0x1.45d170p-1,
+    0x1.p2
+  },
+  { // Entry 114
+    -0x1.45d170p4,
+    -0x1.45d170p-1,
+    0x1.40p2
+  },
+  { // Entry 115
+    -0x1.45d170p5,
+    -0x1.45d170p-1,
+    0x1.80p2
+  },
+  { // Entry 116
+    -0x1.45d170p6,
+    -0x1.45d170p-1,
+    0x1.c0p2
+  },
+  { // Entry 117
+    -0x1.45d170p7,
+    -0x1.45d170p-1,
+    0x1.p3
+  },
+  { // Entry 118
+    -0x1.45d170p8,
+    -0x1.45d170p-1,
+    0x1.20p3
+  },
+  { // Entry 119
+    -0x1.45d170p9,
+    -0x1.45d170p-1,
+    0x1.40p3
+  },
+  { // Entry 120
+    -0x1.1745ccp-11,
+    -0x1.1745ccp-1,
+    -0x1.40p3
+  },
+  { // Entry 121
+    -0x1.1745ccp-10,
+    -0x1.1745ccp-1,
+    -0x1.20p3
+  },
+  { // Entry 122
+    -0x1.1745ccp-9,
+    -0x1.1745ccp-1,
+    -0x1.p3
+  },
+  { // Entry 123
+    -0x1.1745ccp-8,
+    -0x1.1745ccp-1,
+    -0x1.c0p2
+  },
+  { // Entry 124
+    -0x1.1745ccp-7,
+    -0x1.1745ccp-1,
+    -0x1.80p2
+  },
+  { // Entry 125
+    -0x1.1745ccp-6,
+    -0x1.1745ccp-1,
+    -0x1.40p2
+  },
+  { // Entry 126
+    -0x1.1745ccp-5,
+    -0x1.1745ccp-1,
+    -0x1.p2
+  },
+  { // Entry 127
+    -0x1.1745ccp-4,
+    -0x1.1745ccp-1,
+    -0x1.80p1
+  },
+  { // Entry 128
+    -0x1.1745ccp-3,
+    -0x1.1745ccp-1,
+    -0x1.p1
+  },
+  { // Entry 129
+    -0x1.1745ccp-2,
+    -0x1.1745ccp-1,
+    -0x1.p0
+  },
+  { // Entry 130
+    -0x1.1745ccp-1,
+    -0x1.1745ccp-1,
+    0.0
+  },
+  { // Entry 131
+    -0x1.1745ccp0,
+    -0x1.1745ccp-1,
+    0x1.p0
+  },
+  { // Entry 132
+    -0x1.1745ccp1,
+    -0x1.1745ccp-1,
+    0x1.p1
+  },
+  { // Entry 133
+    -0x1.1745ccp2,
+    -0x1.1745ccp-1,
+    0x1.80p1
+  },
+  { // Entry 134
+    -0x1.1745ccp3,
+    -0x1.1745ccp-1,
+    0x1.p2
+  },
+  { // Entry 135
+    -0x1.1745ccp4,
+    -0x1.1745ccp-1,
+    0x1.40p2
+  },
+  { // Entry 136
+    -0x1.1745ccp5,
+    -0x1.1745ccp-1,
+    0x1.80p2
+  },
+  { // Entry 137
+    -0x1.1745ccp6,
+    -0x1.1745ccp-1,
+    0x1.c0p2
+  },
+  { // Entry 138
+    -0x1.1745ccp7,
+    -0x1.1745ccp-1,
+    0x1.p3
+  },
+  { // Entry 139
+    -0x1.1745ccp8,
+    -0x1.1745ccp-1,
+    0x1.20p3
+  },
+  { // Entry 140
+    -0x1.1745ccp9,
+    -0x1.1745ccp-1,
+    0x1.40p3
+  },
+  { // Entry 141
+    -0x1.d17452p-12,
+    -0x1.d17452p-2,
+    -0x1.40p3
+  },
+  { // Entry 142
+    -0x1.d17452p-11,
+    -0x1.d17452p-2,
+    -0x1.20p3
+  },
+  { // Entry 143
+    -0x1.d17452p-10,
+    -0x1.d17452p-2,
+    -0x1.p3
+  },
+  { // Entry 144
+    -0x1.d17452p-9,
+    -0x1.d17452p-2,
+    -0x1.c0p2
+  },
+  { // Entry 145
+    -0x1.d17452p-8,
+    -0x1.d17452p-2,
+    -0x1.80p2
+  },
+  { // Entry 146
+    -0x1.d17452p-7,
+    -0x1.d17452p-2,
+    -0x1.40p2
+  },
+  { // Entry 147
+    -0x1.d17452p-6,
+    -0x1.d17452p-2,
+    -0x1.p2
+  },
+  { // Entry 148
+    -0x1.d17452p-5,
+    -0x1.d17452p-2,
+    -0x1.80p1
+  },
+  { // Entry 149
+    -0x1.d17452p-4,
+    -0x1.d17452p-2,
+    -0x1.p1
+  },
+  { // Entry 150
+    -0x1.d17452p-3,
+    -0x1.d17452p-2,
+    -0x1.p0
+  },
+  { // Entry 151
+    -0x1.d17452p-2,
+    -0x1.d17452p-2,
+    0.0
+  },
+  { // Entry 152
+    -0x1.d17452p-1,
+    -0x1.d17452p-2,
+    0x1.p0
+  },
+  { // Entry 153
+    -0x1.d17452p0,
+    -0x1.d17452p-2,
+    0x1.p1
+  },
+  { // Entry 154
+    -0x1.d17452p1,
+    -0x1.d17452p-2,
+    0x1.80p1
+  },
+  { // Entry 155
+    -0x1.d17452p2,
+    -0x1.d17452p-2,
+    0x1.p2
+  },
+  { // Entry 156
+    -0x1.d17452p3,
+    -0x1.d17452p-2,
+    0x1.40p2
+  },
+  { // Entry 157
+    -0x1.d17452p4,
+    -0x1.d17452p-2,
+    0x1.80p2
+  },
+  { // Entry 158
+    -0x1.d17452p5,
+    -0x1.d17452p-2,
+    0x1.c0p2
+  },
+  { // Entry 159
+    -0x1.d17452p6,
+    -0x1.d17452p-2,
+    0x1.p3
+  },
+  { // Entry 160
+    -0x1.d17452p7,
+    -0x1.d17452p-2,
+    0x1.20p3
+  },
+  { // Entry 161
+    -0x1.d17452p8,
+    -0x1.d17452p-2,
+    0x1.40p3
+  },
+  { // Entry 162
+    -0x1.745d0cp-12,
+    -0x1.745d0cp-2,
+    -0x1.40p3
+  },
+  { // Entry 163
+    -0x1.745d0cp-11,
+    -0x1.745d0cp-2,
+    -0x1.20p3
+  },
+  { // Entry 164
+    -0x1.745d0cp-10,
+    -0x1.745d0cp-2,
+    -0x1.p3
+  },
+  { // Entry 165
+    -0x1.745d0cp-9,
+    -0x1.745d0cp-2,
+    -0x1.c0p2
+  },
+  { // Entry 166
+    -0x1.745d0cp-8,
+    -0x1.745d0cp-2,
+    -0x1.80p2
+  },
+  { // Entry 167
+    -0x1.745d0cp-7,
+    -0x1.745d0cp-2,
+    -0x1.40p2
+  },
+  { // Entry 168
+    -0x1.745d0cp-6,
+    -0x1.745d0cp-2,
+    -0x1.p2
+  },
+  { // Entry 169
+    -0x1.745d0cp-5,
+    -0x1.745d0cp-2,
+    -0x1.80p1
+  },
+  { // Entry 170
+    -0x1.745d0cp-4,
+    -0x1.745d0cp-2,
+    -0x1.p1
+  },
+  { // Entry 171
+    -0x1.745d0cp-3,
+    -0x1.745d0cp-2,
+    -0x1.p0
+  },
+  { // Entry 172
+    -0x1.745d0cp-2,
+    -0x1.745d0cp-2,
+    0.0
+  },
+  { // Entry 173
+    -0x1.745d0cp-1,
+    -0x1.745d0cp-2,
+    0x1.p0
+  },
+  { // Entry 174
+    -0x1.745d0cp0,
+    -0x1.745d0cp-2,
+    0x1.p1
+  },
+  { // Entry 175
+    -0x1.745d0cp1,
+    -0x1.745d0cp-2,
+    0x1.80p1
+  },
+  { // Entry 176
+    -0x1.745d0cp2,
+    -0x1.745d0cp-2,
+    0x1.p2
+  },
+  { // Entry 177
+    -0x1.745d0cp3,
+    -0x1.745d0cp-2,
+    0x1.40p2
+  },
+  { // Entry 178
+    -0x1.745d0cp4,
+    -0x1.745d0cp-2,
+    0x1.80p2
+  },
+  { // Entry 179
+    -0x1.745d0cp5,
+    -0x1.745d0cp-2,
+    0x1.c0p2
+  },
+  { // Entry 180
+    -0x1.745d0cp6,
+    -0x1.745d0cp-2,
+    0x1.p3
+  },
+  { // Entry 181
+    -0x1.745d0cp7,
+    -0x1.745d0cp-2,
+    0x1.20p3
+  },
+  { // Entry 182
+    -0x1.745d0cp8,
+    -0x1.745d0cp-2,
+    0x1.40p3
+  },
+  { // Entry 183
+    -0x1.1745c6p-12,
+    -0x1.1745c6p-2,
+    -0x1.40p3
+  },
+  { // Entry 184
+    -0x1.1745c6p-11,
+    -0x1.1745c6p-2,
+    -0x1.20p3
+  },
+  { // Entry 185
+    -0x1.1745c6p-10,
+    -0x1.1745c6p-2,
+    -0x1.p3
+  },
+  { // Entry 186
+    -0x1.1745c6p-9,
+    -0x1.1745c6p-2,
+    -0x1.c0p2
+  },
+  { // Entry 187
+    -0x1.1745c6p-8,
+    -0x1.1745c6p-2,
+    -0x1.80p2
+  },
+  { // Entry 188
+    -0x1.1745c6p-7,
+    -0x1.1745c6p-2,
+    -0x1.40p2
+  },
+  { // Entry 189
+    -0x1.1745c6p-6,
+    -0x1.1745c6p-2,
+    -0x1.p2
+  },
+  { // Entry 190
+    -0x1.1745c6p-5,
+    -0x1.1745c6p-2,
+    -0x1.80p1
+  },
+  { // Entry 191
+    -0x1.1745c6p-4,
+    -0x1.1745c6p-2,
+    -0x1.p1
+  },
+  { // Entry 192
+    -0x1.1745c6p-3,
+    -0x1.1745c6p-2,
+    -0x1.p0
+  },
+  { // Entry 193
+    -0x1.1745c6p-2,
+    -0x1.1745c6p-2,
+    0.0
+  },
+  { // Entry 194
+    -0x1.1745c6p-1,
+    -0x1.1745c6p-2,
+    0x1.p0
+  },
+  { // Entry 195
+    -0x1.1745c6p0,
+    -0x1.1745c6p-2,
+    0x1.p1
+  },
+  { // Entry 196
+    -0x1.1745c6p1,
+    -0x1.1745c6p-2,
+    0x1.80p1
+  },
+  { // Entry 197
+    -0x1.1745c6p2,
+    -0x1.1745c6p-2,
+    0x1.p2
+  },
+  { // Entry 198
+    -0x1.1745c6p3,
+    -0x1.1745c6p-2,
+    0x1.40p2
+  },
+  { // Entry 199
+    -0x1.1745c6p4,
+    -0x1.1745c6p-2,
+    0x1.80p2
+  },
+  { // Entry 200
+    -0x1.1745c6p5,
+    -0x1.1745c6p-2,
+    0x1.c0p2
+  },
+  { // Entry 201
+    -0x1.1745c6p6,
+    -0x1.1745c6p-2,
+    0x1.p3
+  },
+  { // Entry 202
+    -0x1.1745c6p7,
+    -0x1.1745c6p-2,
+    0x1.20p3
+  },
+  { // Entry 203
+    -0x1.1745c6p8,
+    -0x1.1745c6p-2,
+    0x1.40p3
+  },
+  { // Entry 204
+    -0x1.745dp-13,
+    -0x1.745dp-3,
+    -0x1.40p3
+  },
+  { // Entry 205
+    -0x1.745dp-12,
+    -0x1.745dp-3,
+    -0x1.20p3
+  },
+  { // Entry 206
+    -0x1.745dp-11,
+    -0x1.745dp-3,
+    -0x1.p3
+  },
+  { // Entry 207
+    -0x1.745dp-10,
+    -0x1.745dp-3,
+    -0x1.c0p2
+  },
+  { // Entry 208
+    -0x1.745dp-9,
+    -0x1.745dp-3,
+    -0x1.80p2
+  },
+  { // Entry 209
+    -0x1.745dp-8,
+    -0x1.745dp-3,
+    -0x1.40p2
+  },
+  { // Entry 210
+    -0x1.745dp-7,
+    -0x1.745dp-3,
+    -0x1.p2
+  },
+  { // Entry 211
+    -0x1.745dp-6,
+    -0x1.745dp-3,
+    -0x1.80p1
+  },
+  { // Entry 212
+    -0x1.745dp-5,
+    -0x1.745dp-3,
+    -0x1.p1
+  },
+  { // Entry 213
+    -0x1.745dp-4,
+    -0x1.745dp-3,
+    -0x1.p0
+  },
+  { // Entry 214
+    -0x1.745dp-3,
+    -0x1.745dp-3,
+    0.0
+  },
+  { // Entry 215
+    -0x1.745dp-2,
+    -0x1.745dp-3,
+    0x1.p0
+  },
+  { // Entry 216
+    -0x1.745dp-1,
+    -0x1.745dp-3,
+    0x1.p1
+  },
+  { // Entry 217
+    -0x1.745dp0,
+    -0x1.745dp-3,
+    0x1.80p1
+  },
+  { // Entry 218
+    -0x1.745dp1,
+    -0x1.745dp-3,
+    0x1.p2
+  },
+  { // Entry 219
+    -0x1.745dp2,
+    -0x1.745dp-3,
+    0x1.40p2
+  },
+  { // Entry 220
+    -0x1.745dp3,
+    -0x1.745dp-3,
+    0x1.80p2
+  },
+  { // Entry 221
+    -0x1.745dp4,
+    -0x1.745dp-3,
+    0x1.c0p2
+  },
+  { // Entry 222
+    -0x1.745dp5,
+    -0x1.745dp-3,
+    0x1.p3
+  },
+  { // Entry 223
+    -0x1.745dp6,
+    -0x1.745dp-3,
+    0x1.20p3
+  },
+  { // Entry 224
+    -0x1.745dp7,
+    -0x1.745dp-3,
+    0x1.40p3
+  },
+  { // Entry 225
+    -0x1.745ce8p-14,
+    -0x1.745ce8p-4,
+    -0x1.40p3
+  },
+  { // Entry 226
+    -0x1.745ce8p-13,
+    -0x1.745ce8p-4,
+    -0x1.20p3
+  },
+  { // Entry 227
+    -0x1.745ce8p-12,
+    -0x1.745ce8p-4,
+    -0x1.p3
+  },
+  { // Entry 228
+    -0x1.745ce8p-11,
+    -0x1.745ce8p-4,
+    -0x1.c0p2
+  },
+  { // Entry 229
+    -0x1.745ce8p-10,
+    -0x1.745ce8p-4,
+    -0x1.80p2
+  },
+  { // Entry 230
+    -0x1.745ce8p-9,
+    -0x1.745ce8p-4,
+    -0x1.40p2
+  },
+  { // Entry 231
+    -0x1.745ce8p-8,
+    -0x1.745ce8p-4,
+    -0x1.p2
+  },
+  { // Entry 232
+    -0x1.745ce8p-7,
+    -0x1.745ce8p-4,
+    -0x1.80p1
+  },
+  { // Entry 233
+    -0x1.745ce8p-6,
+    -0x1.745ce8p-4,
+    -0x1.p1
+  },
+  { // Entry 234
+    -0x1.745ce8p-5,
+    -0x1.745ce8p-4,
+    -0x1.p0
+  },
+  { // Entry 235
+    -0x1.745ce8p-4,
+    -0x1.745ce8p-4,
+    0.0
+  },
+  { // Entry 236
+    -0x1.745ce8p-3,
+    -0x1.745ce8p-4,
+    0x1.p0
+  },
+  { // Entry 237
+    -0x1.745ce8p-2,
+    -0x1.745ce8p-4,
+    0x1.p1
+  },
+  { // Entry 238
+    -0x1.745ce8p-1,
+    -0x1.745ce8p-4,
+    0x1.80p1
+  },
+  { // Entry 239
+    -0x1.745ce8p0,
+    -0x1.745ce8p-4,
+    0x1.p2
+  },
+  { // Entry 240
+    -0x1.745ce8p1,
+    -0x1.745ce8p-4,
+    0x1.40p2
+  },
+  { // Entry 241
+    -0x1.745ce8p2,
+    -0x1.745ce8p-4,
+    0x1.80p2
+  },
+  { // Entry 242
+    -0x1.745ce8p3,
+    -0x1.745ce8p-4,
+    0x1.c0p2
+  },
+  { // Entry 243
+    -0x1.745ce8p4,
+    -0x1.745ce8p-4,
+    0x1.p3
+  },
+  { // Entry 244
+    -0x1.745ce8p5,
+    -0x1.745ce8p-4,
+    0x1.20p3
+  },
+  { // Entry 245
+    -0x1.745ce8p6,
+    -0x1.745ce8p-4,
+    0x1.40p3
+  },
+  { // Entry 246
+    0x1.80p-33,
+    0x1.80p-23,
+    -0x1.40p3
+  },
+  { // Entry 247
+    0x1.80p-32,
+    0x1.80p-23,
+    -0x1.20p3
+  },
+  { // Entry 248
+    0x1.80p-31,
+    0x1.80p-23,
+    -0x1.p3
+  },
+  { // Entry 249
+    0x1.80p-30,
+    0x1.80p-23,
+    -0x1.c0p2
+  },
+  { // Entry 250
+    0x1.80p-29,
+    0x1.80p-23,
+    -0x1.80p2
+  },
+  { // Entry 251
+    0x1.80p-28,
+    0x1.80p-23,
+    -0x1.40p2
+  },
+  { // Entry 252
+    0x1.80p-27,
+    0x1.80p-23,
+    -0x1.p2
+  },
+  { // Entry 253
+    0x1.80p-26,
+    0x1.80p-23,
+    -0x1.80p1
+  },
+  { // Entry 254
+    0x1.80p-25,
+    0x1.80p-23,
+    -0x1.p1
+  },
+  { // Entry 255
+    0x1.80p-24,
+    0x1.80p-23,
+    -0x1.p0
+  },
+  { // Entry 256
+    0x1.80p-23,
+    0x1.80p-23,
+    0.0
+  },
+  { // Entry 257
+    0x1.80p-22,
+    0x1.80p-23,
+    0x1.p0
+  },
+  { // Entry 258
+    0x1.80p-21,
+    0x1.80p-23,
+    0x1.p1
+  },
+  { // Entry 259
+    0x1.80p-20,
+    0x1.80p-23,
+    0x1.80p1
+  },
+  { // Entry 260
+    0x1.80p-19,
+    0x1.80p-23,
+    0x1.p2
+  },
+  { // Entry 261
+    0x1.80p-18,
+    0x1.80p-23,
+    0x1.40p2
+  },
+  { // Entry 262
+    0x1.80p-17,
+    0x1.80p-23,
+    0x1.80p2
+  },
+  { // Entry 263
+    0x1.80p-16,
+    0x1.80p-23,
+    0x1.c0p2
+  },
+  { // Entry 264
+    0x1.80p-15,
+    0x1.80p-23,
+    0x1.p3
+  },
+  { // Entry 265
+    0x1.80p-14,
+    0x1.80p-23,
+    0x1.20p3
+  },
+  { // Entry 266
+    0x1.80p-13,
+    0x1.80p-23,
+    0x1.40p3
+  },
+  { // Entry 267
+    0x1.745d48p-14,
+    0x1.745d48p-4,
+    -0x1.40p3
+  },
+  { // Entry 268
+    0x1.745d48p-13,
+    0x1.745d48p-4,
+    -0x1.20p3
+  },
+  { // Entry 269
+    0x1.745d48p-12,
+    0x1.745d48p-4,
+    -0x1.p3
+  },
+  { // Entry 270
+    0x1.745d48p-11,
+    0x1.745d48p-4,
+    -0x1.c0p2
+  },
+  { // Entry 271
+    0x1.745d48p-10,
+    0x1.745d48p-4,
+    -0x1.80p2
+  },
+  { // Entry 272
+    0x1.745d48p-9,
+    0x1.745d48p-4,
+    -0x1.40p2
+  },
+  { // Entry 273
+    0x1.745d48p-8,
+    0x1.745d48p-4,
+    -0x1.p2
+  },
+  { // Entry 274
+    0x1.745d48p-7,
+    0x1.745d48p-4,
+    -0x1.80p1
+  },
+  { // Entry 275
+    0x1.745d48p-6,
+    0x1.745d48p-4,
+    -0x1.p1
+  },
+  { // Entry 276
+    0x1.745d48p-5,
+    0x1.745d48p-4,
+    -0x1.p0
+  },
+  { // Entry 277
+    0x1.745d48p-4,
+    0x1.745d48p-4,
+    0.0
+  },
+  { // Entry 278
+    0x1.745d48p-3,
+    0x1.745d48p-4,
+    0x1.p0
+  },
+  { // Entry 279
+    0x1.745d48p-2,
+    0x1.745d48p-4,
+    0x1.p1
+  },
+  { // Entry 280
+    0x1.745d48p-1,
+    0x1.745d48p-4,
+    0x1.80p1
+  },
+  { // Entry 281
+    0x1.745d48p0,
+    0x1.745d48p-4,
+    0x1.p2
+  },
+  { // Entry 282
+    0x1.745d48p1,
+    0x1.745d48p-4,
+    0x1.40p2
+  },
+  { // Entry 283
+    0x1.745d48p2,
+    0x1.745d48p-4,
+    0x1.80p2
+  },
+  { // Entry 284
+    0x1.745d48p3,
+    0x1.745d48p-4,
+    0x1.c0p2
+  },
+  { // Entry 285
+    0x1.745d48p4,
+    0x1.745d48p-4,
+    0x1.p3
+  },
+  { // Entry 286
+    0x1.745d48p5,
+    0x1.745d48p-4,
+    0x1.20p3
+  },
+  { // Entry 287
+    0x1.745d48p6,
+    0x1.745d48p-4,
+    0x1.40p3
+  },
+  { // Entry 288
+    0x1.745d30p-13,
+    0x1.745d30p-3,
+    -0x1.40p3
+  },
+  { // Entry 289
+    0x1.745d30p-12,
+    0x1.745d30p-3,
+    -0x1.20p3
+  },
+  { // Entry 290
+    0x1.745d30p-11,
+    0x1.745d30p-3,
+    -0x1.p3
+  },
+  { // Entry 291
+    0x1.745d30p-10,
+    0x1.745d30p-3,
+    -0x1.c0p2
+  },
+  { // Entry 292
+    0x1.745d30p-9,
+    0x1.745d30p-3,
+    -0x1.80p2
+  },
+  { // Entry 293
+    0x1.745d30p-8,
+    0x1.745d30p-3,
+    -0x1.40p2
+  },
+  { // Entry 294
+    0x1.745d30p-7,
+    0x1.745d30p-3,
+    -0x1.p2
+  },
+  { // Entry 295
+    0x1.745d30p-6,
+    0x1.745d30p-3,
+    -0x1.80p1
+  },
+  { // Entry 296
+    0x1.745d30p-5,
+    0x1.745d30p-3,
+    -0x1.p1
+  },
+  { // Entry 297
+    0x1.745d30p-4,
+    0x1.745d30p-3,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.745d30p-3,
+    0x1.745d30p-3,
+    0.0
+  },
+  { // Entry 299
+    0x1.745d30p-2,
+    0x1.745d30p-3,
+    0x1.p0
+  },
+  { // Entry 300
+    0x1.745d30p-1,
+    0x1.745d30p-3,
+    0x1.p1
+  },
+  { // Entry 301
+    0x1.745d30p0,
+    0x1.745d30p-3,
+    0x1.80p1
+  },
+  { // Entry 302
+    0x1.745d30p1,
+    0x1.745d30p-3,
+    0x1.p2
+  },
+  { // Entry 303
+    0x1.745d30p2,
+    0x1.745d30p-3,
+    0x1.40p2
+  },
+  { // Entry 304
+    0x1.745d30p3,
+    0x1.745d30p-3,
+    0x1.80p2
+  },
+  { // Entry 305
+    0x1.745d30p4,
+    0x1.745d30p-3,
+    0x1.c0p2
+  },
+  { // Entry 306
+    0x1.745d30p5,
+    0x1.745d30p-3,
+    0x1.p3
+  },
+  { // Entry 307
+    0x1.745d30p6,
+    0x1.745d30p-3,
+    0x1.20p3
+  },
+  { // Entry 308
+    0x1.745d30p7,
+    0x1.745d30p-3,
+    0x1.40p3
+  },
+  { // Entry 309
+    0x1.1745dep-12,
+    0x1.1745dep-2,
+    -0x1.40p3
+  },
+  { // Entry 310
+    0x1.1745dep-11,
+    0x1.1745dep-2,
+    -0x1.20p3
+  },
+  { // Entry 311
+    0x1.1745dep-10,
+    0x1.1745dep-2,
+    -0x1.p3
+  },
+  { // Entry 312
+    0x1.1745dep-9,
+    0x1.1745dep-2,
+    -0x1.c0p2
+  },
+  { // Entry 313
+    0x1.1745dep-8,
+    0x1.1745dep-2,
+    -0x1.80p2
+  },
+  { // Entry 314
+    0x1.1745dep-7,
+    0x1.1745dep-2,
+    -0x1.40p2
+  },
+  { // Entry 315
+    0x1.1745dep-6,
+    0x1.1745dep-2,
+    -0x1.p2
+  },
+  { // Entry 316
+    0x1.1745dep-5,
+    0x1.1745dep-2,
+    -0x1.80p1
+  },
+  { // Entry 317
+    0x1.1745dep-4,
+    0x1.1745dep-2,
+    -0x1.p1
+  },
+  { // Entry 318
+    0x1.1745dep-3,
+    0x1.1745dep-2,
+    -0x1.p0
+  },
+  { // Entry 319
+    0x1.1745dep-2,
+    0x1.1745dep-2,
+    0.0
+  },
+  { // Entry 320
+    0x1.1745dep-1,
+    0x1.1745dep-2,
+    0x1.p0
+  },
+  { // Entry 321
+    0x1.1745dep0,
+    0x1.1745dep-2,
+    0x1.p1
+  },
+  { // Entry 322
+    0x1.1745dep1,
+    0x1.1745dep-2,
+    0x1.80p1
+  },
+  { // Entry 323
+    0x1.1745dep2,
+    0x1.1745dep-2,
+    0x1.p2
+  },
+  { // Entry 324
+    0x1.1745dep3,
+    0x1.1745dep-2,
+    0x1.40p2
+  },
+  { // Entry 325
+    0x1.1745dep4,
+    0x1.1745dep-2,
+    0x1.80p2
+  },
+  { // Entry 326
+    0x1.1745dep5,
+    0x1.1745dep-2,
+    0x1.c0p2
+  },
+  { // Entry 327
+    0x1.1745dep6,
+    0x1.1745dep-2,
+    0x1.p3
+  },
+  { // Entry 328
+    0x1.1745dep7,
+    0x1.1745dep-2,
+    0x1.20p3
+  },
+  { // Entry 329
+    0x1.1745dep8,
+    0x1.1745dep-2,
+    0x1.40p3
+  },
+  { // Entry 330
+    0x1.745d24p-12,
+    0x1.745d24p-2,
+    -0x1.40p3
+  },
+  { // Entry 331
+    0x1.745d24p-11,
+    0x1.745d24p-2,
+    -0x1.20p3
+  },
+  { // Entry 332
+    0x1.745d24p-10,
+    0x1.745d24p-2,
+    -0x1.p3
+  },
+  { // Entry 333
+    0x1.745d24p-9,
+    0x1.745d24p-2,
+    -0x1.c0p2
+  },
+  { // Entry 334
+    0x1.745d24p-8,
+    0x1.745d24p-2,
+    -0x1.80p2
+  },
+  { // Entry 335
+    0x1.745d24p-7,
+    0x1.745d24p-2,
+    -0x1.40p2
+  },
+  { // Entry 336
+    0x1.745d24p-6,
+    0x1.745d24p-2,
+    -0x1.p2
+  },
+  { // Entry 337
+    0x1.745d24p-5,
+    0x1.745d24p-2,
+    -0x1.80p1
+  },
+  { // Entry 338
+    0x1.745d24p-4,
+    0x1.745d24p-2,
+    -0x1.p1
+  },
+  { // Entry 339
+    0x1.745d24p-3,
+    0x1.745d24p-2,
+    -0x1.p0
+  },
+  { // Entry 340
+    0x1.745d24p-2,
+    0x1.745d24p-2,
+    0.0
+  },
+  { // Entry 341
+    0x1.745d24p-1,
+    0x1.745d24p-2,
+    0x1.p0
+  },
+  { // Entry 342
+    0x1.745d24p0,
+    0x1.745d24p-2,
+    0x1.p1
+  },
+  { // Entry 343
+    0x1.745d24p1,
+    0x1.745d24p-2,
+    0x1.80p1
+  },
+  { // Entry 344
+    0x1.745d24p2,
+    0x1.745d24p-2,
+    0x1.p2
+  },
+  { // Entry 345
+    0x1.745d24p3,
+    0x1.745d24p-2,
+    0x1.40p2
+  },
+  { // Entry 346
+    0x1.745d24p4,
+    0x1.745d24p-2,
+    0x1.80p2
+  },
+  { // Entry 347
+    0x1.745d24p5,
+    0x1.745d24p-2,
+    0x1.c0p2
+  },
+  { // Entry 348
+    0x1.745d24p6,
+    0x1.745d24p-2,
+    0x1.p3
+  },
+  { // Entry 349
+    0x1.745d24p7,
+    0x1.745d24p-2,
+    0x1.20p3
+  },
+  { // Entry 350
+    0x1.745d24p8,
+    0x1.745d24p-2,
+    0x1.40p3
+  },
+  { // Entry 351
+    0x1.d1746ap-12,
+    0x1.d1746ap-2,
+    -0x1.40p3
+  },
+  { // Entry 352
+    0x1.d1746ap-11,
+    0x1.d1746ap-2,
+    -0x1.20p3
+  },
+  { // Entry 353
+    0x1.d1746ap-10,
+    0x1.d1746ap-2,
+    -0x1.p3
+  },
+  { // Entry 354
+    0x1.d1746ap-9,
+    0x1.d1746ap-2,
+    -0x1.c0p2
+  },
+  { // Entry 355
+    0x1.d1746ap-8,
+    0x1.d1746ap-2,
+    -0x1.80p2
+  },
+  { // Entry 356
+    0x1.d1746ap-7,
+    0x1.d1746ap-2,
+    -0x1.40p2
+  },
+  { // Entry 357
+    0x1.d1746ap-6,
+    0x1.d1746ap-2,
+    -0x1.p2
+  },
+  { // Entry 358
+    0x1.d1746ap-5,
+    0x1.d1746ap-2,
+    -0x1.80p1
+  },
+  { // Entry 359
+    0x1.d1746ap-4,
+    0x1.d1746ap-2,
+    -0x1.p1
+  },
+  { // Entry 360
+    0x1.d1746ap-3,
+    0x1.d1746ap-2,
+    -0x1.p0
+  },
+  { // Entry 361
+    0x1.d1746ap-2,
+    0x1.d1746ap-2,
+    0.0
+  },
+  { // Entry 362
+    0x1.d1746ap-1,
+    0x1.d1746ap-2,
+    0x1.p0
+  },
+  { // Entry 363
+    0x1.d1746ap0,
+    0x1.d1746ap-2,
+    0x1.p1
+  },
+  { // Entry 364
+    0x1.d1746ap1,
+    0x1.d1746ap-2,
+    0x1.80p1
+  },
+  { // Entry 365
+    0x1.d1746ap2,
+    0x1.d1746ap-2,
+    0x1.p2
+  },
+  { // Entry 366
+    0x1.d1746ap3,
+    0x1.d1746ap-2,
+    0x1.40p2
+  },
+  { // Entry 367
+    0x1.d1746ap4,
+    0x1.d1746ap-2,
+    0x1.80p2
+  },
+  { // Entry 368
+    0x1.d1746ap5,
+    0x1.d1746ap-2,
+    0x1.c0p2
+  },
+  { // Entry 369
+    0x1.d1746ap6,
+    0x1.d1746ap-2,
+    0x1.p3
+  },
+  { // Entry 370
+    0x1.d1746ap7,
+    0x1.d1746ap-2,
+    0x1.20p3
+  },
+  { // Entry 371
+    0x1.d1746ap8,
+    0x1.d1746ap-2,
+    0x1.40p3
+  },
+  { // Entry 372
+    0x1.1745d8p-11,
+    0x1.1745d8p-1,
+    -0x1.40p3
+  },
+  { // Entry 373
+    0x1.1745d8p-10,
+    0x1.1745d8p-1,
+    -0x1.20p3
+  },
+  { // Entry 374
+    0x1.1745d8p-9,
+    0x1.1745d8p-1,
+    -0x1.p3
+  },
+  { // Entry 375
+    0x1.1745d8p-8,
+    0x1.1745d8p-1,
+    -0x1.c0p2
+  },
+  { // Entry 376
+    0x1.1745d8p-7,
+    0x1.1745d8p-1,
+    -0x1.80p2
+  },
+  { // Entry 377
+    0x1.1745d8p-6,
+    0x1.1745d8p-1,
+    -0x1.40p2
+  },
+  { // Entry 378
+    0x1.1745d8p-5,
+    0x1.1745d8p-1,
+    -0x1.p2
+  },
+  { // Entry 379
+    0x1.1745d8p-4,
+    0x1.1745d8p-1,
+    -0x1.80p1
+  },
+  { // Entry 380
+    0x1.1745d8p-3,
+    0x1.1745d8p-1,
+    -0x1.p1
+  },
+  { // Entry 381
+    0x1.1745d8p-2,
+    0x1.1745d8p-1,
+    -0x1.p0
+  },
+  { // Entry 382
+    0x1.1745d8p-1,
+    0x1.1745d8p-1,
+    0.0
+  },
+  { // Entry 383
+    0x1.1745d8p0,
+    0x1.1745d8p-1,
+    0x1.p0
+  },
+  { // Entry 384
+    0x1.1745d8p1,
+    0x1.1745d8p-1,
+    0x1.p1
+  },
+  { // Entry 385
+    0x1.1745d8p2,
+    0x1.1745d8p-1,
+    0x1.80p1
+  },
+  { // Entry 386
+    0x1.1745d8p3,
+    0x1.1745d8p-1,
+    0x1.p2
+  },
+  { // Entry 387
+    0x1.1745d8p4,
+    0x1.1745d8p-1,
+    0x1.40p2
+  },
+  { // Entry 388
+    0x1.1745d8p5,
+    0x1.1745d8p-1,
+    0x1.80p2
+  },
+  { // Entry 389
+    0x1.1745d8p6,
+    0x1.1745d8p-1,
+    0x1.c0p2
+  },
+  { // Entry 390
+    0x1.1745d8p7,
+    0x1.1745d8p-1,
+    0x1.p3
+  },
+  { // Entry 391
+    0x1.1745d8p8,
+    0x1.1745d8p-1,
+    0x1.20p3
+  },
+  { // Entry 392
+    0x1.1745d8p9,
+    0x1.1745d8p-1,
+    0x1.40p3
+  },
+  { // Entry 393
+    0x1.45d17cp-11,
+    0x1.45d17cp-1,
+    -0x1.40p3
+  },
+  { // Entry 394
+    0x1.45d17cp-10,
+    0x1.45d17cp-1,
+    -0x1.20p3
+  },
+  { // Entry 395
+    0x1.45d17cp-9,
+    0x1.45d17cp-1,
+    -0x1.p3
+  },
+  { // Entry 396
+    0x1.45d17cp-8,
+    0x1.45d17cp-1,
+    -0x1.c0p2
+  },
+  { // Entry 397
+    0x1.45d17cp-7,
+    0x1.45d17cp-1,
+    -0x1.80p2
+  },
+  { // Entry 398
+    0x1.45d17cp-6,
+    0x1.45d17cp-1,
+    -0x1.40p2
+  },
+  { // Entry 399
+    0x1.45d17cp-5,
+    0x1.45d17cp-1,
+    -0x1.p2
+  },
+  { // Entry 400
+    0x1.45d17cp-4,
+    0x1.45d17cp-1,
+    -0x1.80p1
+  },
+  { // Entry 401
+    0x1.45d17cp-3,
+    0x1.45d17cp-1,
+    -0x1.p1
+  },
+  { // Entry 402
+    0x1.45d17cp-2,
+    0x1.45d17cp-1,
+    -0x1.p0
+  },
+  { // Entry 403
+    0x1.45d17cp-1,
+    0x1.45d17cp-1,
+    0.0
+  },
+  { // Entry 404
+    0x1.45d17cp0,
+    0x1.45d17cp-1,
+    0x1.p0
+  },
+  { // Entry 405
+    0x1.45d17cp1,
+    0x1.45d17cp-1,
+    0x1.p1
+  },
+  { // Entry 406
+    0x1.45d17cp2,
+    0x1.45d17cp-1,
+    0x1.80p1
+  },
+  { // Entry 407
+    0x1.45d17cp3,
+    0x1.45d17cp-1,
+    0x1.p2
+  },
+  { // Entry 408
+    0x1.45d17cp4,
+    0x1.45d17cp-1,
+    0x1.40p2
+  },
+  { // Entry 409
+    0x1.45d17cp5,
+    0x1.45d17cp-1,
+    0x1.80p2
+  },
+  { // Entry 410
+    0x1.45d17cp6,
+    0x1.45d17cp-1,
+    0x1.c0p2
+  },
+  { // Entry 411
+    0x1.45d17cp7,
+    0x1.45d17cp-1,
+    0x1.p3
+  },
+  { // Entry 412
+    0x1.45d17cp8,
+    0x1.45d17cp-1,
+    0x1.20p3
+  },
+  { // Entry 413
+    0x1.45d17cp9,
+    0x1.45d17cp-1,
+    0x1.40p3
+  },
+  { // Entry 414
+    0x1.745d20p-11,
+    0x1.745d20p-1,
+    -0x1.40p3
+  },
+  { // Entry 415
+    0x1.745d20p-10,
+    0x1.745d20p-1,
+    -0x1.20p3
+  },
+  { // Entry 416
+    0x1.745d20p-9,
+    0x1.745d20p-1,
+    -0x1.p3
+  },
+  { // Entry 417
+    0x1.745d20p-8,
+    0x1.745d20p-1,
+    -0x1.c0p2
+  },
+  { // Entry 418
+    0x1.745d20p-7,
+    0x1.745d20p-1,
+    -0x1.80p2
+  },
+  { // Entry 419
+    0x1.745d20p-6,
+    0x1.745d20p-1,
+    -0x1.40p2
+  },
+  { // Entry 420
+    0x1.745d20p-5,
+    0x1.745d20p-1,
+    -0x1.p2
+  },
+  { // Entry 421
+    0x1.745d20p-4,
+    0x1.745d20p-1,
+    -0x1.80p1
+  },
+  { // Entry 422
+    0x1.745d20p-3,
+    0x1.745d20p-1,
+    -0x1.p1
+  },
+  { // Entry 423
+    0x1.745d20p-2,
+    0x1.745d20p-1,
+    -0x1.p0
+  },
+  { // Entry 424
+    0x1.745d20p-1,
+    0x1.745d20p-1,
+    0.0
+  },
+  { // Entry 425
+    0x1.745d20p0,
+    0x1.745d20p-1,
+    0x1.p0
+  },
+  { // Entry 426
+    0x1.745d20p1,
+    0x1.745d20p-1,
+    0x1.p1
+  },
+  { // Entry 427
+    0x1.745d20p2,
+    0x1.745d20p-1,
+    0x1.80p1
+  },
+  { // Entry 428
+    0x1.745d20p3,
+    0x1.745d20p-1,
+    0x1.p2
+  },
+  { // Entry 429
+    0x1.745d20p4,
+    0x1.745d20p-1,
+    0x1.40p2
+  },
+  { // Entry 430
+    0x1.745d20p5,
+    0x1.745d20p-1,
+    0x1.80p2
+  },
+  { // Entry 431
+    0x1.745d20p6,
+    0x1.745d20p-1,
+    0x1.c0p2
+  },
+  { // Entry 432
+    0x1.745d20p7,
+    0x1.745d20p-1,
+    0x1.p3
+  },
+  { // Entry 433
+    0x1.745d20p8,
+    0x1.745d20p-1,
+    0x1.20p3
+  },
+  { // Entry 434
+    0x1.745d20p9,
+    0x1.745d20p-1,
+    0x1.40p3
+  },
+  { // Entry 435
+    0x1.a2e8c4p-11,
+    0x1.a2e8c4p-1,
+    -0x1.40p3
+  },
+  { // Entry 436
+    0x1.a2e8c4p-10,
+    0x1.a2e8c4p-1,
+    -0x1.20p3
+  },
+  { // Entry 437
+    0x1.a2e8c4p-9,
+    0x1.a2e8c4p-1,
+    -0x1.p3
+  },
+  { // Entry 438
+    0x1.a2e8c4p-8,
+    0x1.a2e8c4p-1,
+    -0x1.c0p2
+  },
+  { // Entry 439
+    0x1.a2e8c4p-7,
+    0x1.a2e8c4p-1,
+    -0x1.80p2
+  },
+  { // Entry 440
+    0x1.a2e8c4p-6,
+    0x1.a2e8c4p-1,
+    -0x1.40p2
+  },
+  { // Entry 441
+    0x1.a2e8c4p-5,
+    0x1.a2e8c4p-1,
+    -0x1.p2
+  },
+  { // Entry 442
+    0x1.a2e8c4p-4,
+    0x1.a2e8c4p-1,
+    -0x1.80p1
+  },
+  { // Entry 443
+    0x1.a2e8c4p-3,
+    0x1.a2e8c4p-1,
+    -0x1.p1
+  },
+  { // Entry 444
+    0x1.a2e8c4p-2,
+    0x1.a2e8c4p-1,
+    -0x1.p0
+  },
+  { // Entry 445
+    0x1.a2e8c4p-1,
+    0x1.a2e8c4p-1,
+    0.0
+  },
+  { // Entry 446
+    0x1.a2e8c4p0,
+    0x1.a2e8c4p-1,
+    0x1.p0
+  },
+  { // Entry 447
+    0x1.a2e8c4p1,
+    0x1.a2e8c4p-1,
+    0x1.p1
+  },
+  { // Entry 448
+    0x1.a2e8c4p2,
+    0x1.a2e8c4p-1,
+    0x1.80p1
+  },
+  { // Entry 449
+    0x1.a2e8c4p3,
+    0x1.a2e8c4p-1,
+    0x1.p2
+  },
+  { // Entry 450
+    0x1.a2e8c4p4,
+    0x1.a2e8c4p-1,
+    0x1.40p2
+  },
+  { // Entry 451
+    0x1.a2e8c4p5,
+    0x1.a2e8c4p-1,
+    0x1.80p2
+  },
+  { // Entry 452
+    0x1.a2e8c4p6,
+    0x1.a2e8c4p-1,
+    0x1.c0p2
+  },
+  { // Entry 453
+    0x1.a2e8c4p7,
+    0x1.a2e8c4p-1,
+    0x1.p3
+  },
+  { // Entry 454
+    0x1.a2e8c4p8,
+    0x1.a2e8c4p-1,
+    0x1.20p3
+  },
+  { // Entry 455
+    0x1.a2e8c4p9,
+    0x1.a2e8c4p-1,
+    0x1.40p3
+  },
+  { // Entry 456
+    0x1.d17468p-11,
+    0x1.d17468p-1,
+    -0x1.40p3
+  },
+  { // Entry 457
+    0x1.d17468p-10,
+    0x1.d17468p-1,
+    -0x1.20p3
+  },
+  { // Entry 458
+    0x1.d17468p-9,
+    0x1.d17468p-1,
+    -0x1.p3
+  },
+  { // Entry 459
+    0x1.d17468p-8,
+    0x1.d17468p-1,
+    -0x1.c0p2
+  },
+  { // Entry 460
+    0x1.d17468p-7,
+    0x1.d17468p-1,
+    -0x1.80p2
+  },
+  { // Entry 461
+    0x1.d17468p-6,
+    0x1.d17468p-1,
+    -0x1.40p2
+  },
+  { // Entry 462
+    0x1.d17468p-5,
+    0x1.d17468p-1,
+    -0x1.p2
+  },
+  { // Entry 463
+    0x1.d17468p-4,
+    0x1.d17468p-1,
+    -0x1.80p1
+  },
+  { // Entry 464
+    0x1.d17468p-3,
+    0x1.d17468p-1,
+    -0x1.p1
+  },
+  { // Entry 465
+    0x1.d17468p-2,
+    0x1.d17468p-1,
+    -0x1.p0
+  },
+  { // Entry 466
+    0x1.d17468p-1,
+    0x1.d17468p-1,
+    0.0
+  },
+  { // Entry 467
+    0x1.d17468p0,
+    0x1.d17468p-1,
+    0x1.p0
+  },
+  { // Entry 468
+    0x1.d17468p1,
+    0x1.d17468p-1,
+    0x1.p1
+  },
+  { // Entry 469
+    0x1.d17468p2,
+    0x1.d17468p-1,
+    0x1.80p1
+  },
+  { // Entry 470
+    0x1.d17468p3,
+    0x1.d17468p-1,
+    0x1.p2
+  },
+  { // Entry 471
+    0x1.d17468p4,
+    0x1.d17468p-1,
+    0x1.40p2
+  },
+  { // Entry 472
+    0x1.d17468p5,
+    0x1.d17468p-1,
+    0x1.80p2
+  },
+  { // Entry 473
+    0x1.d17468p6,
+    0x1.d17468p-1,
+    0x1.c0p2
+  },
+  { // Entry 474
+    0x1.d17468p7,
+    0x1.d17468p-1,
+    0x1.p3
+  },
+  { // Entry 475
+    0x1.d17468p8,
+    0x1.d17468p-1,
+    0x1.20p3
+  },
+  { // Entry 476
+    0x1.d17468p9,
+    0x1.d17468p-1,
+    0x1.40p3
+  },
+  { // Entry 477
+    0x1.p-10,
+    0x1.p0,
+    -0x1.40p3
+  },
+  { // Entry 478
+    0x1.p-9,
+    0x1.p0,
+    -0x1.20p3
+  },
+  { // Entry 479
+    0x1.p-8,
+    0x1.p0,
+    -0x1.p3
+  },
+  { // Entry 480
+    0x1.p-7,
+    0x1.p0,
+    -0x1.c0p2
+  },
+  { // Entry 481
+    0x1.p-6,
+    0x1.p0,
+    -0x1.80p2
+  },
+  { // Entry 482
+    0x1.p-5,
+    0x1.p0,
+    -0x1.40p2
+  },
+  { // Entry 483
+    0x1.p-4,
+    0x1.p0,
+    -0x1.p2
+  },
+  { // Entry 484
+    0x1.p-3,
+    0x1.p0,
+    -0x1.80p1
+  },
+  { // Entry 485
+    0x1.p-2,
+    0x1.p0,
+    -0x1.p1
+  },
+  { // Entry 486
+    0x1.p-1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 487
+    0x1.p0,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 488
+    0x1.p1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 489
+    0x1.p2,
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 490
+    0x1.p3,
+    0x1.p0,
+    0x1.80p1
+  },
+  { // Entry 491
+    0x1.p4,
+    0x1.p0,
+    0x1.p2
+  },
+  { // Entry 492
+    0x1.p5,
+    0x1.p0,
+    0x1.40p2
+  },
+  { // Entry 493
+    0x1.p6,
+    0x1.p0,
+    0x1.80p2
+  },
+  { // Entry 494
+    0x1.p7,
+    0x1.p0,
+    0x1.c0p2
+  },
+  { // Entry 495
+    0x1.p8,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 496
+    0x1.p9,
+    0x1.p0,
+    0x1.20p3
+  },
+  { // Entry 497
+    0x1.p10,
+    0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 498
+    0x1.fffffep0,
+    0x1.fffffep127,
+    -0x1.fcp6
+  },
+  { // Entry 499
+    0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.f8p6
+  },
+  { // Entry 500
+    0x1.fffffep117,
+    0x1.fffffep127,
+    -0x1.40p3
+  },
+  { // Entry 501
+    0x1.fffffep118,
+    0x1.fffffep127,
+    -0x1.20p3
+  },
+  { // Entry 502
+    0x1.fffffep119,
+    0x1.fffffep127,
+    -0x1.p3
+  },
+  { // Entry 503
+    0x1.fffffep120,
+    0x1.fffffep127,
+    -0x1.c0p2
+  },
+  { // Entry 504
+    0x1.fffffep121,
+    0x1.fffffep127,
+    -0x1.80p2
+  },
+  { // Entry 505
+    0x1.fffffep122,
+    0x1.fffffep127,
+    -0x1.40p2
+  },
+  { // Entry 506
+    0x1.fffffep123,
+    0x1.fffffep127,
+    -0x1.p2
+  },
+  { // Entry 507
+    0x1.fffffep124,
+    0x1.fffffep127,
+    -0x1.80p1
+  },
+  { // Entry 508
+    0x1.fffffep125,
+    0x1.fffffep127,
+    -0x1.p1
+  },
+  { // Entry 509
+    0x1.fffffep126,
+    0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 510
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 511
+    0x1.p-22,
+    0x1.p-149,
+    0x1.fcp6
+  },
+  { // Entry 512
+    0x1.p-23,
+    0x1.p-149,
+    0x1.f8p6
+  },
+  { // Entry 513
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 514
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 515
+    0x1.p-147,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 516
+    0x1.p-146,
+    0x1.p-149,
+    0x1.80p1
+  },
+  { // Entry 517
+    0x1.p-145,
+    0x1.p-149,
+    0x1.p2
+  },
+  { // Entry 518
+    0x1.p-144,
+    0x1.p-149,
+    0x1.40p2
+  },
+  { // Entry 519
+    0x1.p-143,
+    0x1.p-149,
+    0x1.80p2
+  },
+  { // Entry 520
+    0x1.p-142,
+    0x1.p-149,
+    0x1.c0p2
+  },
+  { // Entry 521
+    0x1.p-141,
+    0x1.p-149,
+    0x1.p3
+  },
+  { // Entry 522
+    0x1.p-140,
+    0x1.p-149,
+    0x1.20p3
+  },
+  { // Entry 523
+    0x1.p-139,
+    0x1.p-149,
+    0x1.40p3
+  },
+  { // Entry 524
+    0x1.p-129,
+    0x1.p-2,
+    -0x1.fcp6
+  },
+  { // Entry 525
+    0x1.p-128,
+    0x1.p-2,
+    -0x1.f8p6
+  },
+  { // Entry 526
+    0x1.p-128,
+    0x1.p-1,
+    -0x1.fcp6
+  },
+  { // Entry 527
+    0x1.p-127,
+    0x1.p-1,
+    -0x1.f8p6
+  },
+  { // Entry 528
+    0x1.80p-128,
+    0x1.80p-1,
+    -0x1.fcp6
+  },
+  { // Entry 529
+    0x1.80p-127,
+    0x1.80p-1,
+    -0x1.f8p6
+  },
+  { // Entry 530
+    0.0f,
+    0x1.p-2,
+    -0x1.2ap7
+  },
+  { // Entry 531
+    0.0f,
+    0x1.p-2,
+    -0x1.28p7
+  },
+  { // Entry 532
+    0.0f,
+    0x1.p-1,
+    -0x1.2ap7
+  },
+  { // Entry 533
+    0x1.p-149,
+    0x1.p-1,
+    -0x1.28p7
+  },
+  { // Entry 534
+    0.0f,
+    0x1.80p-1,
+    -0x1.2ap7
+  },
+  { // Entry 535
+    0x1.80p-149,
+    0x1.80p-1,
+    -0x1.28p7
+  },
+  { // Entry 536
+    0x1.p127,
+    0x1.p0,
+    0x1.fcp6
+  },
+  { // Entry 537
+    0x1.p126,
+    0x1.p0,
+    0x1.f8p6
+  },
+  { // Entry 538
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 539
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 540
+    0x1.p-147,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 541
+    0x1.p-146,
+    0x1.p-149,
+    0x1.80p1
+  },
+  { // Entry 542
+    0x1.p-145,
+    0x1.p-149,
+    0x1.p2
+  },
+  { // Entry 543
+    0x1.p-144,
+    0x1.p-149,
+    0x1.40p2
+  },
+  { // Entry 544
+    0x1.p-143,
+    0x1.p-149,
+    0x1.80p2
+  },
+  { // Entry 545
+    0x1.p-142,
+    0x1.p-149,
+    0x1.c0p2
+  },
+  { // Entry 546
+    0x1.p-141,
+    0x1.p-149,
+    0x1.p3
+  },
+  { // Entry 547
+    0x1.p-140,
+    0x1.p-149,
+    0x1.20p3
+  },
+  { // Entry 548
+    0x1.p-139,
+    0x1.p-149,
+    0x1.40p3
+  },
+  { // Entry 549
+    0x1.p-138,
+    0x1.p-149,
+    0x1.60p3
+  },
+  { // Entry 550
+    0x1.p-137,
+    0x1.p-149,
+    0x1.80p3
+  },
+  { // Entry 551
+    0x1.p-136,
+    0x1.p-149,
+    0x1.a0p3
+  },
+  { // Entry 552
+    0x1.p-135,
+    0x1.p-149,
+    0x1.c0p3
+  },
+  { // Entry 553
+    0x1.p-134,
+    0x1.p-149,
+    0x1.e0p3
+  },
+  { // Entry 554
+    0x1.p-133,
+    0x1.p-149,
+    0x1.p4
+  },
+  { // Entry 555
+    0x1.p-132,
+    0x1.p-149,
+    0x1.10p4
+  },
+  { // Entry 556
+    0x1.p-131,
+    0x1.p-149,
+    0x1.20p4
+  },
+  { // Entry 557
+    0x1.p-130,
+    0x1.p-149,
+    0x1.30p4
+  },
+  { // Entry 558
+    0x1.p-129,
+    0x1.p-149,
+    0x1.40p4
+  },
+  { // Entry 559
+    0x1.p-128,
+    0x1.p-149,
+    0x1.50p4
+  },
+  { // Entry 560
+    0x1.p-127,
+    0x1.p-149,
+    0x1.60p4
+  },
+  { // Entry 561
+    0x1.p-126,
+    0x1.p-149,
+    0x1.70p4
+  },
+  { // Entry 562
+    0x1.p-125,
+    0x1.p-149,
+    0x1.80p4
+  },
+  { // Entry 563
+    0x1.p-124,
+    0x1.p-149,
+    0x1.90p4
+  },
+  { // Entry 564
+    0x1.p-123,
+    0x1.p-149,
+    0x1.a0p4
+  },
+  { // Entry 565
+    0x1.p-122,
+    0x1.p-149,
+    0x1.b0p4
+  },
+  { // Entry 566
+    0x1.p-121,
+    0x1.p-149,
+    0x1.c0p4
+  },
+  { // Entry 567
+    0x1.p-120,
+    0x1.p-149,
+    0x1.d0p4
+  },
+  { // Entry 568
+    0x1.p-119,
+    0x1.p-149,
+    0x1.e0p4
+  },
+  { // Entry 569
+    0x1.p-118,
+    0x1.p-149,
+    0x1.f0p4
+  },
+  { // Entry 570
+    0x1.p-117,
+    0x1.p-149,
+    0x1.p5
+  },
+  { // Entry 571
+    0x1.p-116,
+    0x1.p-149,
+    0x1.08p5
+  },
+  { // Entry 572
+    0x1.p-115,
+    0x1.p-149,
+    0x1.10p5
+  },
+  { // Entry 573
+    0x1.p-114,
+    0x1.p-149,
+    0x1.18p5
+  },
+  { // Entry 574
+    0x1.p-113,
+    0x1.p-149,
+    0x1.20p5
+  },
+  { // Entry 575
+    0x1.p-112,
+    0x1.p-149,
+    0x1.28p5
+  },
+  { // Entry 576
+    0x1.p-111,
+    0x1.p-149,
+    0x1.30p5
+  },
+  { // Entry 577
+    0x1.p-110,
+    0x1.p-149,
+    0x1.38p5
+  },
+  { // Entry 578
+    0x1.p-109,
+    0x1.p-149,
+    0x1.40p5
+  },
+  { // Entry 579
+    0x1.p-108,
+    0x1.p-149,
+    0x1.48p5
+  },
+  { // Entry 580
+    0x1.p-107,
+    0x1.p-149,
+    0x1.50p5
+  },
+  { // Entry 581
+    0x1.p-106,
+    0x1.p-149,
+    0x1.58p5
+  },
+  { // Entry 582
+    0x1.p-105,
+    0x1.p-149,
+    0x1.60p5
+  },
+  { // Entry 583
+    0x1.p-104,
+    0x1.p-149,
+    0x1.68p5
+  },
+  { // Entry 584
+    0x1.p-103,
+    0x1.p-149,
+    0x1.70p5
+  },
+  { // Entry 585
+    0x1.p-102,
+    0x1.p-149,
+    0x1.78p5
+  },
+  { // Entry 586
+    0x1.p-101,
+    0x1.p-149,
+    0x1.80p5
+  },
+  { // Entry 587
+    0x1.p-100,
+    0x1.p-149,
+    0x1.88p5
+  },
+  { // Entry 588
+    0x1.p-99,
+    0x1.p-149,
+    0x1.90p5
+  },
+  { // Entry 589
+    0x1.p-98,
+    0x1.p-149,
+    0x1.98p5
+  },
+  { // Entry 590
+    0x1.p-97,
+    0x1.p-149,
+    0x1.a0p5
+  },
+  { // Entry 591
+    0x1.p-96,
+    0x1.p-149,
+    0x1.a8p5
+  },
+  { // Entry 592
+    0x1.p-95,
+    0x1.p-149,
+    0x1.b0p5
+  },
+  { // Entry 593
+    0x1.p-94,
+    0x1.p-149,
+    0x1.b8p5
+  },
+  { // Entry 594
+    0x1.p-93,
+    0x1.p-149,
+    0x1.c0p5
+  },
+  { // Entry 595
+    0x1.p-92,
+    0x1.p-149,
+    0x1.c8p5
+  },
+  { // Entry 596
+    0x1.p-91,
+    0x1.p-149,
+    0x1.d0p5
+  },
+  { // Entry 597
+    0x1.p-90,
+    0x1.p-149,
+    0x1.d8p5
+  },
+  { // Entry 598
+    0x1.p-89,
+    0x1.p-149,
+    0x1.e0p5
+  },
+  { // Entry 599
+    0x1.p-88,
+    0x1.p-149,
+    0x1.e8p5
+  },
+  { // Entry 600
+    0x1.p-87,
+    0x1.p-149,
+    0x1.f0p5
+  },
+  { // Entry 601
+    0x1.p-86,
+    0x1.p-149,
+    0x1.f8p5
+  },
+  { // Entry 602
+    0x1.p-85,
+    0x1.p-149,
+    0x1.p6
+  },
+  { // Entry 603
+    0x1.p-84,
+    0x1.p-149,
+    0x1.04p6
+  },
+  { // Entry 604
+    0x1.p-83,
+    0x1.p-149,
+    0x1.08p6
+  },
+  { // Entry 605
+    0x1.p-82,
+    0x1.p-149,
+    0x1.0cp6
+  },
+  { // Entry 606
+    0x1.p-81,
+    0x1.p-149,
+    0x1.10p6
+  },
+  { // Entry 607
+    0x1.p-80,
+    0x1.p-149,
+    0x1.14p6
+  },
+  { // Entry 608
+    0x1.p-79,
+    0x1.p-149,
+    0x1.18p6
+  },
+  { // Entry 609
+    0x1.p-78,
+    0x1.p-149,
+    0x1.1cp6
+  },
+  { // Entry 610
+    0x1.p-77,
+    0x1.p-149,
+    0x1.20p6
+  },
+  { // Entry 611
+    0x1.p-76,
+    0x1.p-149,
+    0x1.24p6
+  },
+  { // Entry 612
+    0x1.p-75,
+    0x1.p-149,
+    0x1.28p6
+  },
+  { // Entry 613
+    0x1.p-74,
+    0x1.p-149,
+    0x1.2cp6
+  },
+  { // Entry 614
+    0x1.p-73,
+    0x1.p-149,
+    0x1.30p6
+  },
+  { // Entry 615
+    0x1.p-72,
+    0x1.p-149,
+    0x1.34p6
+  },
+  { // Entry 616
+    0x1.p-71,
+    0x1.p-149,
+    0x1.38p6
+  },
+  { // Entry 617
+    0x1.p-70,
+    0x1.p-149,
+    0x1.3cp6
+  },
+  { // Entry 618
+    0x1.p-69,
+    0x1.p-149,
+    0x1.40p6
+  },
+  { // Entry 619
+    0x1.p-68,
+    0x1.p-149,
+    0x1.44p6
+  },
+  { // Entry 620
+    0x1.p-67,
+    0x1.p-149,
+    0x1.48p6
+  },
+  { // Entry 621
+    0x1.p-66,
+    0x1.p-149,
+    0x1.4cp6
+  },
+  { // Entry 622
+    0x1.p-65,
+    0x1.p-149,
+    0x1.50p6
+  },
+  { // Entry 623
+    0x1.p-64,
+    0x1.p-149,
+    0x1.54p6
+  },
+  { // Entry 624
+    0x1.p-63,
+    0x1.p-149,
+    0x1.58p6
+  },
+  { // Entry 625
+    0x1.p-62,
+    0x1.p-149,
+    0x1.5cp6
+  },
+  { // Entry 626
+    0x1.p-61,
+    0x1.p-149,
+    0x1.60p6
+  },
+  { // Entry 627
+    0x1.p-60,
+    0x1.p-149,
+    0x1.64p6
+  },
+  { // Entry 628
+    0x1.p-59,
+    0x1.p-149,
+    0x1.68p6
+  },
+  { // Entry 629
+    0x1.p-58,
+    0x1.p-149,
+    0x1.6cp6
+  },
+  { // Entry 630
+    0x1.p-57,
+    0x1.p-149,
+    0x1.70p6
+  },
+  { // Entry 631
+    0x1.p-56,
+    0x1.p-149,
+    0x1.74p6
+  },
+  { // Entry 632
+    0x1.p-55,
+    0x1.p-149,
+    0x1.78p6
+  },
+  { // Entry 633
+    0x1.p-54,
+    0x1.p-149,
+    0x1.7cp6
+  },
+  { // Entry 634
+    0x1.p-53,
+    0x1.p-149,
+    0x1.80p6
+  },
+  { // Entry 635
+    0x1.p-52,
+    0x1.p-149,
+    0x1.84p6
+  },
+  { // Entry 636
+    0x1.p-51,
+    0x1.p-149,
+    0x1.88p6
+  },
+  { // Entry 637
+    0x1.p-50,
+    0x1.p-149,
+    0x1.8cp6
+  },
+  { // Entry 638
+    0x1.p-49,
+    0x1.p-149,
+    0x1.90p6
+  },
+  { // Entry 639
+    0x1.p-48,
+    0x1.p-149,
+    0x1.94p6
+  },
+  { // Entry 640
+    0x1.p-47,
+    0x1.p-149,
+    0x1.98p6
+  },
+  { // Entry 641
+    0x1.p-46,
+    0x1.p-149,
+    0x1.9cp6
+  },
+  { // Entry 642
+    0x1.p-45,
+    0x1.p-149,
+    0x1.a0p6
+  },
+  { // Entry 643
+    0x1.p-44,
+    0x1.p-149,
+    0x1.a4p6
+  },
+  { // Entry 644
+    0x1.p-43,
+    0x1.p-149,
+    0x1.a8p6
+  },
+  { // Entry 645
+    0x1.p-42,
+    0x1.p-149,
+    0x1.acp6
+  },
+  { // Entry 646
+    0x1.p-41,
+    0x1.p-149,
+    0x1.b0p6
+  },
+  { // Entry 647
+    0x1.p-40,
+    0x1.p-149,
+    0x1.b4p6
+  },
+  { // Entry 648
+    0x1.p-39,
+    0x1.p-149,
+    0x1.b8p6
+  },
+  { // Entry 649
+    0x1.p-38,
+    0x1.p-149,
+    0x1.bcp6
+  },
+  { // Entry 650
+    0x1.p-37,
+    0x1.p-149,
+    0x1.c0p6
+  },
+  { // Entry 651
+    0x1.p-36,
+    0x1.p-149,
+    0x1.c4p6
+  },
+  { // Entry 652
+    0x1.p-35,
+    0x1.p-149,
+    0x1.c8p6
+  },
+  { // Entry 653
+    0x1.p-34,
+    0x1.p-149,
+    0x1.ccp6
+  },
+  { // Entry 654
+    0x1.p-33,
+    0x1.p-149,
+    0x1.d0p6
+  },
+  { // Entry 655
+    0x1.p-32,
+    0x1.p-149,
+    0x1.d4p6
+  },
+  { // Entry 656
+    0x1.p-31,
+    0x1.p-149,
+    0x1.d8p6
+  },
+  { // Entry 657
+    0x1.p-30,
+    0x1.p-149,
+    0x1.dcp6
+  },
+  { // Entry 658
+    0x1.p-29,
+    0x1.p-149,
+    0x1.e0p6
+  },
+  { // Entry 659
+    0x1.p-28,
+    0x1.p-149,
+    0x1.e4p6
+  },
+  { // Entry 660
+    0x1.p-27,
+    0x1.p-149,
+    0x1.e8p6
+  },
+  { // Entry 661
+    0x1.p-26,
+    0x1.p-149,
+    0x1.ecp6
+  },
+  { // Entry 662
+    0x1.p-25,
+    0x1.p-149,
+    0x1.f0p6
+  },
+  { // Entry 663
+    0x1.p-24,
+    0x1.p-149,
+    0x1.f4p6
+  },
+  { // Entry 664
+    0x1.p-23,
+    0x1.p-149,
+    0x1.f8p6
+  },
+  { // Entry 665
+    0x1.p-22,
+    0x1.p-149,
+    0x1.fcp6
+  },
+  { // Entry 666
+    0x1.p-21,
+    0x1.p-149,
+    0x1.p7
+  },
+  { // Entry 667
+    0x1.p-20,
+    0x1.p-149,
+    0x1.02p7
+  },
+  { // Entry 668
+    0x1.p-19,
+    0x1.p-149,
+    0x1.04p7
+  },
+  { // Entry 669
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0
+  },
+  { // Entry 670
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    0x1.p0
+  },
+  { // Entry 671
+    0x1.fffffcp-125,
+    0x1.fffffcp-127,
+    0x1.p1
+  },
+  { // Entry 672
+    0x1.fffffcp-124,
+    0x1.fffffcp-127,
+    0x1.80p1
+  },
+  { // Entry 673
+    0x1.fffffcp-123,
+    0x1.fffffcp-127,
+    0x1.p2
+  },
+  { // Entry 674
+    0x1.fffffcp-122,
+    0x1.fffffcp-127,
+    0x1.40p2
+  },
+  { // Entry 675
+    0x1.fffffcp-121,
+    0x1.fffffcp-127,
+    0x1.80p2
+  },
+  { // Entry 676
+    0x1.fffffcp-120,
+    0x1.fffffcp-127,
+    0x1.c0p2
+  },
+  { // Entry 677
+    0x1.fffffcp-119,
+    0x1.fffffcp-127,
+    0x1.p3
+  },
+  { // Entry 678
+    0x1.fffffcp-118,
+    0x1.fffffcp-127,
+    0x1.20p3
+  },
+  { // Entry 679
+    0x1.fffffcp-117,
+    0x1.fffffcp-127,
+    0x1.40p3
+  },
+  { // Entry 680
+    0x1.fffffcp-116,
+    0x1.fffffcp-127,
+    0x1.60p3
+  },
+  { // Entry 681
+    0x1.fffffcp-115,
+    0x1.fffffcp-127,
+    0x1.80p3
+  },
+  { // Entry 682
+    0x1.fffffcp-114,
+    0x1.fffffcp-127,
+    0x1.a0p3
+  },
+  { // Entry 683
+    0x1.fffffcp-113,
+    0x1.fffffcp-127,
+    0x1.c0p3
+  },
+  { // Entry 684
+    0x1.fffffcp-112,
+    0x1.fffffcp-127,
+    0x1.e0p3
+  },
+  { // Entry 685
+    0x1.fffffcp-111,
+    0x1.fffffcp-127,
+    0x1.p4
+  },
+  { // Entry 686
+    0x1.fffffcp-110,
+    0x1.fffffcp-127,
+    0x1.10p4
+  },
+  { // Entry 687
+    0x1.fffffcp-109,
+    0x1.fffffcp-127,
+    0x1.20p4
+  },
+  { // Entry 688
+    0x1.fffffcp-108,
+    0x1.fffffcp-127,
+    0x1.30p4
+  },
+  { // Entry 689
+    0x1.fffffcp-107,
+    0x1.fffffcp-127,
+    0x1.40p4
+  },
+  { // Entry 690
+    0x1.fffffcp-106,
+    0x1.fffffcp-127,
+    0x1.50p4
+  },
+  { // Entry 691
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    0x1.60p4
+  },
+  { // Entry 692
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    0x1.70p4
+  },
+  { // Entry 693
+    0x1.fffffcp-103,
+    0x1.fffffcp-127,
+    0x1.80p4
+  },
+  { // Entry 694
+    0x1.fffffcp-102,
+    0x1.fffffcp-127,
+    0x1.90p4
+  },
+  { // Entry 695
+    0x1.fffffcp-101,
+    0x1.fffffcp-127,
+    0x1.a0p4
+  },
+  { // Entry 696
+    0x1.fffffcp-100,
+    0x1.fffffcp-127,
+    0x1.b0p4
+  },
+  { // Entry 697
+    0x1.fffffcp-99,
+    0x1.fffffcp-127,
+    0x1.c0p4
+  },
+  { // Entry 698
+    0x1.fffffcp-98,
+    0x1.fffffcp-127,
+    0x1.d0p4
+  },
+  { // Entry 699
+    0x1.fffffcp-97,
+    0x1.fffffcp-127,
+    0x1.e0p4
+  },
+  { // Entry 700
+    0x1.fffffcp-96,
+    0x1.fffffcp-127,
+    0x1.f0p4
+  },
+  { // Entry 701
+    0x1.fffffcp-95,
+    0x1.fffffcp-127,
+    0x1.p5
+  },
+  { // Entry 702
+    0x1.fffffcp-94,
+    0x1.fffffcp-127,
+    0x1.08p5
+  },
+  { // Entry 703
+    0x1.fffffcp-93,
+    0x1.fffffcp-127,
+    0x1.10p5
+  },
+  { // Entry 704
+    0x1.fffffcp-92,
+    0x1.fffffcp-127,
+    0x1.18p5
+  },
+  { // Entry 705
+    0x1.fffffcp-91,
+    0x1.fffffcp-127,
+    0x1.20p5
+  },
+  { // Entry 706
+    0x1.fffffcp-90,
+    0x1.fffffcp-127,
+    0x1.28p5
+  },
+  { // Entry 707
+    0x1.fffffcp-89,
+    0x1.fffffcp-127,
+    0x1.30p5
+  },
+  { // Entry 708
+    0x1.fffffcp-88,
+    0x1.fffffcp-127,
+    0x1.38p5
+  },
+  { // Entry 709
+    0x1.fffffcp-87,
+    0x1.fffffcp-127,
+    0x1.40p5
+  },
+  { // Entry 710
+    0x1.fffffcp-86,
+    0x1.fffffcp-127,
+    0x1.48p5
+  },
+  { // Entry 711
+    0x1.fffffcp-85,
+    0x1.fffffcp-127,
+    0x1.50p5
+  },
+  { // Entry 712
+    0x1.fffffcp-84,
+    0x1.fffffcp-127,
+    0x1.58p5
+  },
+  { // Entry 713
+    0x1.fffffcp-83,
+    0x1.fffffcp-127,
+    0x1.60p5
+  },
+  { // Entry 714
+    0x1.fffffcp-82,
+    0x1.fffffcp-127,
+    0x1.68p5
+  },
+  { // Entry 715
+    0x1.fffffcp-81,
+    0x1.fffffcp-127,
+    0x1.70p5
+  },
+  { // Entry 716
+    0x1.fffffcp-80,
+    0x1.fffffcp-127,
+    0x1.78p5
+  },
+  { // Entry 717
+    0x1.fffffcp-79,
+    0x1.fffffcp-127,
+    0x1.80p5
+  },
+  { // Entry 718
+    0x1.fffffcp-78,
+    0x1.fffffcp-127,
+    0x1.88p5
+  },
+  { // Entry 719
+    0x1.fffffcp-77,
+    0x1.fffffcp-127,
+    0x1.90p5
+  },
+  { // Entry 720
+    0x1.fffffcp-76,
+    0x1.fffffcp-127,
+    0x1.98p5
+  },
+  { // Entry 721
+    0x1.fffffcp-75,
+    0x1.fffffcp-127,
+    0x1.a0p5
+  },
+  { // Entry 722
+    0x1.fffffcp-74,
+    0x1.fffffcp-127,
+    0x1.a8p5
+  },
+  { // Entry 723
+    0x1.fffffcp-73,
+    0x1.fffffcp-127,
+    0x1.b0p5
+  },
+  { // Entry 724
+    0x1.fffffcp-72,
+    0x1.fffffcp-127,
+    0x1.b8p5
+  },
+  { // Entry 725
+    0x1.fffffcp-71,
+    0x1.fffffcp-127,
+    0x1.c0p5
+  },
+  { // Entry 726
+    0x1.fffffcp-70,
+    0x1.fffffcp-127,
+    0x1.c8p5
+  },
+  { // Entry 727
+    0x1.fffffcp-69,
+    0x1.fffffcp-127,
+    0x1.d0p5
+  },
+  { // Entry 728
+    0x1.fffffcp-68,
+    0x1.fffffcp-127,
+    0x1.d8p5
+  },
+  { // Entry 729
+    0x1.fffffcp-67,
+    0x1.fffffcp-127,
+    0x1.e0p5
+  },
+  { // Entry 730
+    0x1.fffffcp-66,
+    0x1.fffffcp-127,
+    0x1.e8p5
+  },
+  { // Entry 731
+    0x1.fffffcp-65,
+    0x1.fffffcp-127,
+    0x1.f0p5
+  },
+  { // Entry 732
+    0x1.fffffcp-64,
+    0x1.fffffcp-127,
+    0x1.f8p5
+  },
+  { // Entry 733
+    0x1.fffffcp-63,
+    0x1.fffffcp-127,
+    0x1.p6
+  },
+  { // Entry 734
+    0x1.fffffcp-62,
+    0x1.fffffcp-127,
+    0x1.04p6
+  },
+  { // Entry 735
+    0x1.fffffcp-61,
+    0x1.fffffcp-127,
+    0x1.08p6
+  },
+  { // Entry 736
+    0x1.fffffcp-60,
+    0x1.fffffcp-127,
+    0x1.0cp6
+  },
+  { // Entry 737
+    0x1.fffffcp-59,
+    0x1.fffffcp-127,
+    0x1.10p6
+  },
+  { // Entry 738
+    0x1.fffffcp-58,
+    0x1.fffffcp-127,
+    0x1.14p6
+  },
+  { // Entry 739
+    0x1.fffffcp-57,
+    0x1.fffffcp-127,
+    0x1.18p6
+  },
+  { // Entry 740
+    0x1.fffffcp-56,
+    0x1.fffffcp-127,
+    0x1.1cp6
+  },
+  { // Entry 741
+    0x1.fffffcp-55,
+    0x1.fffffcp-127,
+    0x1.20p6
+  },
+  { // Entry 742
+    0x1.fffffcp-54,
+    0x1.fffffcp-127,
+    0x1.24p6
+  },
+  { // Entry 743
+    0x1.fffffcp-53,
+    0x1.fffffcp-127,
+    0x1.28p6
+  },
+  { // Entry 744
+    0x1.fffffcp-52,
+    0x1.fffffcp-127,
+    0x1.2cp6
+  },
+  { // Entry 745
+    0x1.fffffcp-51,
+    0x1.fffffcp-127,
+    0x1.30p6
+  },
+  { // Entry 746
+    0x1.fffffcp-50,
+    0x1.fffffcp-127,
+    0x1.34p6
+  },
+  { // Entry 747
+    0x1.fffffcp-49,
+    0x1.fffffcp-127,
+    0x1.38p6
+  },
+  { // Entry 748
+    0x1.fffffcp-48,
+    0x1.fffffcp-127,
+    0x1.3cp6
+  },
+  { // Entry 749
+    0x1.fffffcp-47,
+    0x1.fffffcp-127,
+    0x1.40p6
+  },
+  { // Entry 750
+    0x1.fffffcp-46,
+    0x1.fffffcp-127,
+    0x1.44p6
+  },
+  { // Entry 751
+    0x1.fffffcp-45,
+    0x1.fffffcp-127,
+    0x1.48p6
+  },
+  { // Entry 752
+    0x1.fffffcp-44,
+    0x1.fffffcp-127,
+    0x1.4cp6
+  },
+  { // Entry 753
+    0x1.fffffcp-43,
+    0x1.fffffcp-127,
+    0x1.50p6
+  },
+  { // Entry 754
+    0x1.fffffcp-42,
+    0x1.fffffcp-127,
+    0x1.54p6
+  },
+  { // Entry 755
+    0x1.fffffcp-41,
+    0x1.fffffcp-127,
+    0x1.58p6
+  },
+  { // Entry 756
+    0x1.fffffcp-40,
+    0x1.fffffcp-127,
+    0x1.5cp6
+  },
+  { // Entry 757
+    0x1.fffffcp-39,
+    0x1.fffffcp-127,
+    0x1.60p6
+  },
+  { // Entry 758
+    0x1.fffffcp-38,
+    0x1.fffffcp-127,
+    0x1.64p6
+  },
+  { // Entry 759
+    0x1.fffffcp-37,
+    0x1.fffffcp-127,
+    0x1.68p6
+  },
+  { // Entry 760
+    0x1.fffffcp-36,
+    0x1.fffffcp-127,
+    0x1.6cp6
+  },
+  { // Entry 761
+    0x1.fffffcp-35,
+    0x1.fffffcp-127,
+    0x1.70p6
+  },
+  { // Entry 762
+    0x1.fffffcp-34,
+    0x1.fffffcp-127,
+    0x1.74p6
+  },
+  { // Entry 763
+    0x1.fffffcp-33,
+    0x1.fffffcp-127,
+    0x1.78p6
+  },
+  { // Entry 764
+    0x1.fffffcp-32,
+    0x1.fffffcp-127,
+    0x1.7cp6
+  },
+  { // Entry 765
+    0x1.fffffcp-31,
+    0x1.fffffcp-127,
+    0x1.80p6
+  },
+  { // Entry 766
+    0x1.fffffcp-30,
+    0x1.fffffcp-127,
+    0x1.84p6
+  },
+  { // Entry 767
+    0x1.fffffcp-29,
+    0x1.fffffcp-127,
+    0x1.88p6
+  },
+  { // Entry 768
+    0x1.fffffcp-28,
+    0x1.fffffcp-127,
+    0x1.8cp6
+  },
+  { // Entry 769
+    0x1.fffffcp-27,
+    0x1.fffffcp-127,
+    0x1.90p6
+  },
+  { // Entry 770
+    0x1.fffffcp-26,
+    0x1.fffffcp-127,
+    0x1.94p6
+  },
+  { // Entry 771
+    0x1.fffffcp-25,
+    0x1.fffffcp-127,
+    0x1.98p6
+  },
+  { // Entry 772
+    0x1.fffffcp-24,
+    0x1.fffffcp-127,
+    0x1.9cp6
+  },
+  { // Entry 773
+    0x1.fffffcp-23,
+    0x1.fffffcp-127,
+    0x1.a0p6
+  },
+  { // Entry 774
+    0x1.fffffcp-22,
+    0x1.fffffcp-127,
+    0x1.a4p6
+  },
+  { // Entry 775
+    0x1.fffffcp-21,
+    0x1.fffffcp-127,
+    0x1.a8p6
+  },
+  { // Entry 776
+    0x1.fffffcp-20,
+    0x1.fffffcp-127,
+    0x1.acp6
+  },
+  { // Entry 777
+    0x1.fffffcp-19,
+    0x1.fffffcp-127,
+    0x1.b0p6
+  },
+  { // Entry 778
+    0x1.fffffcp-18,
+    0x1.fffffcp-127,
+    0x1.b4p6
+  },
+  { // Entry 779
+    0x1.fffffcp-17,
+    0x1.fffffcp-127,
+    0x1.b8p6
+  },
+  { // Entry 780
+    0x1.fffffcp-16,
+    0x1.fffffcp-127,
+    0x1.bcp6
+  },
+  { // Entry 781
+    0x1.fffffcp-15,
+    0x1.fffffcp-127,
+    0x1.c0p6
+  },
+  { // Entry 782
+    0x1.fffffcp-14,
+    0x1.fffffcp-127,
+    0x1.c4p6
+  },
+  { // Entry 783
+    0x1.fffffcp-13,
+    0x1.fffffcp-127,
+    0x1.c8p6
+  },
+  { // Entry 784
+    0x1.fffffcp-12,
+    0x1.fffffcp-127,
+    0x1.ccp6
+  },
+  { // Entry 785
+    0x1.fffffcp-11,
+    0x1.fffffcp-127,
+    0x1.d0p6
+  },
+  { // Entry 786
+    0x1.fffffcp-10,
+    0x1.fffffcp-127,
+    0x1.d4p6
+  },
+  { // Entry 787
+    0x1.fffffcp-9,
+    0x1.fffffcp-127,
+    0x1.d8p6
+  },
+  { // Entry 788
+    0x1.fffffcp-8,
+    0x1.fffffcp-127,
+    0x1.dcp6
+  },
+  { // Entry 789
+    0x1.fffffcp-7,
+    0x1.fffffcp-127,
+    0x1.e0p6
+  },
+  { // Entry 790
+    0x1.fffffcp-6,
+    0x1.fffffcp-127,
+    0x1.e4p6
+  },
+  { // Entry 791
+    0x1.fffffcp-5,
+    0x1.fffffcp-127,
+    0x1.e8p6
+  },
+  { // Entry 792
+    0x1.fffffcp-4,
+    0x1.fffffcp-127,
+    0x1.ecp6
+  },
+  { // Entry 793
+    0x1.fffffcp-3,
+    0x1.fffffcp-127,
+    0x1.f0p6
+  },
+  { // Entry 794
+    0x1.fffffcp-2,
+    0x1.fffffcp-127,
+    0x1.f4p6
+  },
+  { // Entry 795
+    0x1.fffffcp-1,
+    0x1.fffffcp-127,
+    0x1.f8p6
+  },
+  { // Entry 796
+    0x1.fffffcp0,
+    0x1.fffffcp-127,
+    0x1.fcp6
+  },
+  { // Entry 797
+    0x1.fffffcp1,
+    0x1.fffffcp-127,
+    0x1.p7
+  },
+  { // Entry 798
+    0x1.fffffcp2,
+    0x1.fffffcp-127,
+    0x1.02p7
+  },
+  { // Entry 799
+    0x1.fffffcp3,
+    0x1.fffffcp-127,
+    0x1.04p7
+  },
+  { // Entry 800
+    0x1.p0,
+    0x1.p-149,
+    0x1.2ap7
+  },
+  { // Entry 801
+    0x1.p-1,
+    0x1.p-149,
+    0x1.28p7
+  },
+  { // Entry 802
+    0x1.fffffcp22,
+    0x1.fffffcp-127,
+    0x1.2ap7
+  },
+  { // Entry 803
+    0x1.fffffcp21,
+    0x1.fffffcp-127,
+    0x1.28p7
+  },
+  { // Entry 804
+    0x1.p-126,
+    0x1.p-149,
+    0x1.70p4
+  },
+  { // Entry 805
+    0x1.p-127,
+    0x1.p-149,
+    0x1.60p4
+  },
+  { // Entry 806
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    0x1.70p4
+  },
+  { // Entry 807
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    0x1.60p4
+  },
+  { // Entry 808
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 809
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 810
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0
+  },
+  { // Entry 811
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    0x1.p0
+  },
+  { // Entry 812
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 813
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 814
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 815
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 816
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 817
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 818
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 819
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 820
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 821
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 822
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 823
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 824
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 825
+    0.0f,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 826
+    0.0,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 827
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 828
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 829
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 830
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 831
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 832
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 833
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 834
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 835
+    0.0,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 836
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 837
+    0.0,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 838
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 839
+    0.0,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 840
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 841
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 842
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 843
+    -0.0,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 844
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 845
+    -0.0,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 846
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 847
+    -0.0,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 848
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 849
+    -0.0,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 850
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 851
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 852
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 853
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 854
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 855
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 856
+    0.0,
+    0.0f,
+    0x1.p0
+  },
+  { // Entry 857
+    -0.0,
+    -0.0f,
+    0x1.p0
+  },
+  { // Entry 858
+    0.0,
+    0.0f,
+    -0x1.p0
+  },
+  { // Entry 859
+    -0.0,
+    -0.0f,
+    -0x1.p0
+  },
+  { // Entry 860
+    0.0,
+    0.0f,
+    0x1.fcp6
+  },
+  { // Entry 861
+    -0.0,
+    -0.0f,
+    0x1.fcp6
+  },
+  { // Entry 862
+    0.0,
+    0.0f,
+    -0x1.fcp6
+  },
+  { // Entry 863
+    -0.0,
+    -0.0f,
+    -0x1.fcp6
+  },
+  { // Entry 864
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 865
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 866
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 867
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 868
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 869
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 870
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 871
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 872
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p0
+  },
+  { // Entry 873
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p0
+  },
+  { // Entry 874
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 875
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 876
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fcp6
+  },
+  { // Entry 877
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fcp6
+  },
+  { // Entry 878
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fcp6
+  },
+  { // Entry 879
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fcp6
+  },
+  { // Entry 880
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 881
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 882
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 883
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 884
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 885
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 886
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 887
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 888
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 889
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 890
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 891
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 892
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 893
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 894
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 895
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 896
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 897
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 898
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p0
+  },
+  { // Entry 899
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fcp6
+  },
+  { // Entry 900
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p0
+  },
+  { // Entry 901
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fcp6
+  },
+  { // Entry 902
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.3880p15
+  },
+  { // Entry 903
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.3880p15
+  },
+  { // Entry 904
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.3880p15
+  },
+  { // Entry 905
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.3880p15
+  },
+  { // Entry 906
+    0x1.p-127,
+    0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 907
+    0x1.fffffcp-128,
+    0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 908
+    0.0f,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 909
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 910
+    -0x1.fffffcp-128,
+    -0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 911
+    -0x1.p-127,
+    -0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 912
+    0.0f,
+    0x1.fffffep127,
+    -0x1.3880p15
+  },
+  { // Entry 913
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.3880p15
+  }
+};
diff --git a/tests/math_data/scalbn_intel_data.h b/tests/math_data/scalbn_intel_data.h
new file mode 100644
index 0000000..7b97530
--- /dev/null
+++ b/tests/math_data/scalbn_intel_data.h
@@ -0,0 +1,4333 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<double, double, int> g_scalbn_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.55555555555560p-1024,
+    -0x1.5555555555556p-2,
+    (int)-1022
+  },
+  { // Entry 2
+    -0x1.6db6db6db6db70p-1023,
+    -0x1.6db6db6db6db7p-1,
+    (int)-1022
+  },
+  { // Entry 3
+    -0x1.8e38e38e38e390p-1023,
+    -0x1.8e38e38e38e39p-1,
+    (int)-1022
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    (int)-47
+  },
+  { // Entry 7
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 8
+    0x1.29e4129e4129e0p-1024,
+    0x1.29e4129e4129ep-7,
+    (int)-1017
+  },
+  { // Entry 9
+    HUGE_VAL,
+    0x1.8e147ae147ae1p0,
+    (int)2147483647
+  },
+  { // Entry 10
+    0.0,
+    0x1.dddddddddddddp-2,
+    (int)-1073
+  },
+  { // Entry 11
+    0.0,
+    0x1.f7df7df7df7dfp-2,
+    (int)-1073
+  },
+  { // Entry 12
+    0x1.ffffffffffffc0p-1033,
+    0x1.ffffffffffffcp-1023,
+    (int)-10
+  },
+  { // Entry 13
+    0x1.ffffffffffffc0p-1022,
+    0x1.ffffffffffffcp-1023,
+    (int)1
+  },
+  { // Entry 14
+    0x1.ffffffffffffe0p-1070,
+    0x1.ffffffffffffep-1023,
+    (int)-47
+  },
+  { // Entry 15
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 16
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 17
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 18
+    -0x1.p-10,
+    -0x1.0p0,
+    (int)-10
+  },
+  { // Entry 19
+    -0x1.p-9,
+    -0x1.0p0,
+    (int)-9
+  },
+  { // Entry 20
+    -0x1.p-8,
+    -0x1.0p0,
+    (int)-8
+  },
+  { // Entry 21
+    -0x1.p-7,
+    -0x1.0p0,
+    (int)-7
+  },
+  { // Entry 22
+    -0x1.p-6,
+    -0x1.0p0,
+    (int)-6
+  },
+  { // Entry 23
+    -0x1.p-5,
+    -0x1.0p0,
+    (int)-5
+  },
+  { // Entry 24
+    -0x1.p-4,
+    -0x1.0p0,
+    (int)-4
+  },
+  { // Entry 25
+    -0x1.p-3,
+    -0x1.0p0,
+    (int)-3
+  },
+  { // Entry 26
+    -0x1.p-2,
+    -0x1.0p0,
+    (int)-2
+  },
+  { // Entry 27
+    -0x1.p-1,
+    -0x1.0p0,
+    (int)-1
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.0p0,
+    (int)0
+  },
+  { // Entry 29
+    -0x1.p1,
+    -0x1.0p0,
+    (int)1
+  },
+  { // Entry 30
+    -0x1.p2,
+    -0x1.0p0,
+    (int)2
+  },
+  { // Entry 31
+    -0x1.p3,
+    -0x1.0p0,
+    (int)3
+  },
+  { // Entry 32
+    -0x1.p4,
+    -0x1.0p0,
+    (int)4
+  },
+  { // Entry 33
+    -0x1.p5,
+    -0x1.0p0,
+    (int)5
+  },
+  { // Entry 34
+    -0x1.p6,
+    -0x1.0p0,
+    (int)6
+  },
+  { // Entry 35
+    -0x1.p7,
+    -0x1.0p0,
+    (int)7
+  },
+  { // Entry 36
+    -0x1.p8,
+    -0x1.0p0,
+    (int)8
+  },
+  { // Entry 37
+    -0x1.p9,
+    -0x1.0p0,
+    (int)9
+  },
+  { // Entry 38
+    -0x1.p10,
+    -0x1.0p0,
+    (int)10
+  },
+  { // Entry 39
+    -0x1.d1745d1745d170p-11,
+    -0x1.d1745d1745d17p-1,
+    (int)-10
+  },
+  { // Entry 40
+    -0x1.d1745d1745d170p-10,
+    -0x1.d1745d1745d17p-1,
+    (int)-9
+  },
+  { // Entry 41
+    -0x1.d1745d1745d170p-9,
+    -0x1.d1745d1745d17p-1,
+    (int)-8
+  },
+  { // Entry 42
+    -0x1.d1745d1745d170p-8,
+    -0x1.d1745d1745d17p-1,
+    (int)-7
+  },
+  { // Entry 43
+    -0x1.d1745d1745d170p-7,
+    -0x1.d1745d1745d17p-1,
+    (int)-6
+  },
+  { // Entry 44
+    -0x1.d1745d1745d170p-6,
+    -0x1.d1745d1745d17p-1,
+    (int)-5
+  },
+  { // Entry 45
+    -0x1.d1745d1745d170p-5,
+    -0x1.d1745d1745d17p-1,
+    (int)-4
+  },
+  { // Entry 46
+    -0x1.d1745d1745d170p-4,
+    -0x1.d1745d1745d17p-1,
+    (int)-3
+  },
+  { // Entry 47
+    -0x1.d1745d1745d170p-3,
+    -0x1.d1745d1745d17p-1,
+    (int)-2
+  },
+  { // Entry 48
+    -0x1.d1745d1745d170p-2,
+    -0x1.d1745d1745d17p-1,
+    (int)-1
+  },
+  { // Entry 49
+    -0x1.d1745d1745d170p-1,
+    -0x1.d1745d1745d17p-1,
+    (int)0
+  },
+  { // Entry 50
+    -0x1.d1745d1745d170p0,
+    -0x1.d1745d1745d17p-1,
+    (int)1
+  },
+  { // Entry 51
+    -0x1.d1745d1745d170p1,
+    -0x1.d1745d1745d17p-1,
+    (int)2
+  },
+  { // Entry 52
+    -0x1.d1745d1745d170p2,
+    -0x1.d1745d1745d17p-1,
+    (int)3
+  },
+  { // Entry 53
+    -0x1.d1745d1745d170p3,
+    -0x1.d1745d1745d17p-1,
+    (int)4
+  },
+  { // Entry 54
+    -0x1.d1745d1745d170p4,
+    -0x1.d1745d1745d17p-1,
+    (int)5
+  },
+  { // Entry 55
+    -0x1.d1745d1745d170p5,
+    -0x1.d1745d1745d17p-1,
+    (int)6
+  },
+  { // Entry 56
+    -0x1.d1745d1745d170p6,
+    -0x1.d1745d1745d17p-1,
+    (int)7
+  },
+  { // Entry 57
+    -0x1.d1745d1745d170p7,
+    -0x1.d1745d1745d17p-1,
+    (int)8
+  },
+  { // Entry 58
+    -0x1.d1745d1745d170p8,
+    -0x1.d1745d1745d17p-1,
+    (int)9
+  },
+  { // Entry 59
+    -0x1.d1745d1745d170p9,
+    -0x1.d1745d1745d17p-1,
+    (int)10
+  },
+  { // Entry 60
+    -0x1.a2e8ba2e8ba2e0p-11,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-10
+  },
+  { // Entry 61
+    -0x1.a2e8ba2e8ba2e0p-10,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-9
+  },
+  { // Entry 62
+    -0x1.a2e8ba2e8ba2e0p-9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-8
+  },
+  { // Entry 63
+    -0x1.a2e8ba2e8ba2e0p-8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-7
+  },
+  { // Entry 64
+    -0x1.a2e8ba2e8ba2e0p-7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-6
+  },
+  { // Entry 65
+    -0x1.a2e8ba2e8ba2e0p-6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-5
+  },
+  { // Entry 66
+    -0x1.a2e8ba2e8ba2e0p-5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-4
+  },
+  { // Entry 67
+    -0x1.a2e8ba2e8ba2e0p-4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-3
+  },
+  { // Entry 68
+    -0x1.a2e8ba2e8ba2e0p-3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-2
+  },
+  { // Entry 69
+    -0x1.a2e8ba2e8ba2e0p-2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-1
+  },
+  { // Entry 70
+    -0x1.a2e8ba2e8ba2e0p-1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)0
+  },
+  { // Entry 71
+    -0x1.a2e8ba2e8ba2e0p0,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)1
+  },
+  { // Entry 72
+    -0x1.a2e8ba2e8ba2e0p1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)2
+  },
+  { // Entry 73
+    -0x1.a2e8ba2e8ba2e0p2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)3
+  },
+  { // Entry 74
+    -0x1.a2e8ba2e8ba2e0p3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)4
+  },
+  { // Entry 75
+    -0x1.a2e8ba2e8ba2e0p4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)5
+  },
+  { // Entry 76
+    -0x1.a2e8ba2e8ba2e0p5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)6
+  },
+  { // Entry 77
+    -0x1.a2e8ba2e8ba2e0p6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)7
+  },
+  { // Entry 78
+    -0x1.a2e8ba2e8ba2e0p7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)8
+  },
+  { // Entry 79
+    -0x1.a2e8ba2e8ba2e0p8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)9
+  },
+  { // Entry 80
+    -0x1.a2e8ba2e8ba2e0p9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)10
+  },
+  { // Entry 81
+    -0x1.745d1745d17450p-11,
+    -0x1.745d1745d1745p-1,
+    (int)-10
+  },
+  { // Entry 82
+    -0x1.745d1745d17450p-10,
+    -0x1.745d1745d1745p-1,
+    (int)-9
+  },
+  { // Entry 83
+    -0x1.745d1745d17450p-9,
+    -0x1.745d1745d1745p-1,
+    (int)-8
+  },
+  { // Entry 84
+    -0x1.745d1745d17450p-8,
+    -0x1.745d1745d1745p-1,
+    (int)-7
+  },
+  { // Entry 85
+    -0x1.745d1745d17450p-7,
+    -0x1.745d1745d1745p-1,
+    (int)-6
+  },
+  { // Entry 86
+    -0x1.745d1745d17450p-6,
+    -0x1.745d1745d1745p-1,
+    (int)-5
+  },
+  { // Entry 87
+    -0x1.745d1745d17450p-5,
+    -0x1.745d1745d1745p-1,
+    (int)-4
+  },
+  { // Entry 88
+    -0x1.745d1745d17450p-4,
+    -0x1.745d1745d1745p-1,
+    (int)-3
+  },
+  { // Entry 89
+    -0x1.745d1745d17450p-3,
+    -0x1.745d1745d1745p-1,
+    (int)-2
+  },
+  { // Entry 90
+    -0x1.745d1745d17450p-2,
+    -0x1.745d1745d1745p-1,
+    (int)-1
+  },
+  { // Entry 91
+    -0x1.745d1745d17450p-1,
+    -0x1.745d1745d1745p-1,
+    (int)0
+  },
+  { // Entry 92
+    -0x1.745d1745d17450p0,
+    -0x1.745d1745d1745p-1,
+    (int)1
+  },
+  { // Entry 93
+    -0x1.745d1745d17450p1,
+    -0x1.745d1745d1745p-1,
+    (int)2
+  },
+  { // Entry 94
+    -0x1.745d1745d17450p2,
+    -0x1.745d1745d1745p-1,
+    (int)3
+  },
+  { // Entry 95
+    -0x1.745d1745d17450p3,
+    -0x1.745d1745d1745p-1,
+    (int)4
+  },
+  { // Entry 96
+    -0x1.745d1745d17450p4,
+    -0x1.745d1745d1745p-1,
+    (int)5
+  },
+  { // Entry 97
+    -0x1.745d1745d17450p5,
+    -0x1.745d1745d1745p-1,
+    (int)6
+  },
+  { // Entry 98
+    -0x1.745d1745d17450p6,
+    -0x1.745d1745d1745p-1,
+    (int)7
+  },
+  { // Entry 99
+    -0x1.745d1745d17450p7,
+    -0x1.745d1745d1745p-1,
+    (int)8
+  },
+  { // Entry 100
+    -0x1.745d1745d17450p8,
+    -0x1.745d1745d1745p-1,
+    (int)9
+  },
+  { // Entry 101
+    -0x1.745d1745d17450p9,
+    -0x1.745d1745d1745p-1,
+    (int)10
+  },
+  { // Entry 102
+    -0x1.45d1745d1745c0p-11,
+    -0x1.45d1745d1745cp-1,
+    (int)-10
+  },
+  { // Entry 103
+    -0x1.45d1745d1745c0p-10,
+    -0x1.45d1745d1745cp-1,
+    (int)-9
+  },
+  { // Entry 104
+    -0x1.45d1745d1745c0p-9,
+    -0x1.45d1745d1745cp-1,
+    (int)-8
+  },
+  { // Entry 105
+    -0x1.45d1745d1745c0p-8,
+    -0x1.45d1745d1745cp-1,
+    (int)-7
+  },
+  { // Entry 106
+    -0x1.45d1745d1745c0p-7,
+    -0x1.45d1745d1745cp-1,
+    (int)-6
+  },
+  { // Entry 107
+    -0x1.45d1745d1745c0p-6,
+    -0x1.45d1745d1745cp-1,
+    (int)-5
+  },
+  { // Entry 108
+    -0x1.45d1745d1745c0p-5,
+    -0x1.45d1745d1745cp-1,
+    (int)-4
+  },
+  { // Entry 109
+    -0x1.45d1745d1745c0p-4,
+    -0x1.45d1745d1745cp-1,
+    (int)-3
+  },
+  { // Entry 110
+    -0x1.45d1745d1745c0p-3,
+    -0x1.45d1745d1745cp-1,
+    (int)-2
+  },
+  { // Entry 111
+    -0x1.45d1745d1745c0p-2,
+    -0x1.45d1745d1745cp-1,
+    (int)-1
+  },
+  { // Entry 112
+    -0x1.45d1745d1745c0p-1,
+    -0x1.45d1745d1745cp-1,
+    (int)0
+  },
+  { // Entry 113
+    -0x1.45d1745d1745c0p0,
+    -0x1.45d1745d1745cp-1,
+    (int)1
+  },
+  { // Entry 114
+    -0x1.45d1745d1745c0p1,
+    -0x1.45d1745d1745cp-1,
+    (int)2
+  },
+  { // Entry 115
+    -0x1.45d1745d1745c0p2,
+    -0x1.45d1745d1745cp-1,
+    (int)3
+  },
+  { // Entry 116
+    -0x1.45d1745d1745c0p3,
+    -0x1.45d1745d1745cp-1,
+    (int)4
+  },
+  { // Entry 117
+    -0x1.45d1745d1745c0p4,
+    -0x1.45d1745d1745cp-1,
+    (int)5
+  },
+  { // Entry 118
+    -0x1.45d1745d1745c0p5,
+    -0x1.45d1745d1745cp-1,
+    (int)6
+  },
+  { // Entry 119
+    -0x1.45d1745d1745c0p6,
+    -0x1.45d1745d1745cp-1,
+    (int)7
+  },
+  { // Entry 120
+    -0x1.45d1745d1745c0p7,
+    -0x1.45d1745d1745cp-1,
+    (int)8
+  },
+  { // Entry 121
+    -0x1.45d1745d1745c0p8,
+    -0x1.45d1745d1745cp-1,
+    (int)9
+  },
+  { // Entry 122
+    -0x1.45d1745d1745c0p9,
+    -0x1.45d1745d1745cp-1,
+    (int)10
+  },
+  { // Entry 123
+    -0x1.1745d1745d1730p-11,
+    -0x1.1745d1745d173p-1,
+    (int)-10
+  },
+  { // Entry 124
+    -0x1.1745d1745d1730p-10,
+    -0x1.1745d1745d173p-1,
+    (int)-9
+  },
+  { // Entry 125
+    -0x1.1745d1745d1730p-9,
+    -0x1.1745d1745d173p-1,
+    (int)-8
+  },
+  { // Entry 126
+    -0x1.1745d1745d1730p-8,
+    -0x1.1745d1745d173p-1,
+    (int)-7
+  },
+  { // Entry 127
+    -0x1.1745d1745d1730p-7,
+    -0x1.1745d1745d173p-1,
+    (int)-6
+  },
+  { // Entry 128
+    -0x1.1745d1745d1730p-6,
+    -0x1.1745d1745d173p-1,
+    (int)-5
+  },
+  { // Entry 129
+    -0x1.1745d1745d1730p-5,
+    -0x1.1745d1745d173p-1,
+    (int)-4
+  },
+  { // Entry 130
+    -0x1.1745d1745d1730p-4,
+    -0x1.1745d1745d173p-1,
+    (int)-3
+  },
+  { // Entry 131
+    -0x1.1745d1745d1730p-3,
+    -0x1.1745d1745d173p-1,
+    (int)-2
+  },
+  { // Entry 132
+    -0x1.1745d1745d1730p-2,
+    -0x1.1745d1745d173p-1,
+    (int)-1
+  },
+  { // Entry 133
+    -0x1.1745d1745d1730p-1,
+    -0x1.1745d1745d173p-1,
+    (int)0
+  },
+  { // Entry 134
+    -0x1.1745d1745d1730p0,
+    -0x1.1745d1745d173p-1,
+    (int)1
+  },
+  { // Entry 135
+    -0x1.1745d1745d1730p1,
+    -0x1.1745d1745d173p-1,
+    (int)2
+  },
+  { // Entry 136
+    -0x1.1745d1745d1730p2,
+    -0x1.1745d1745d173p-1,
+    (int)3
+  },
+  { // Entry 137
+    -0x1.1745d1745d1730p3,
+    -0x1.1745d1745d173p-1,
+    (int)4
+  },
+  { // Entry 138
+    -0x1.1745d1745d1730p4,
+    -0x1.1745d1745d173p-1,
+    (int)5
+  },
+  { // Entry 139
+    -0x1.1745d1745d1730p5,
+    -0x1.1745d1745d173p-1,
+    (int)6
+  },
+  { // Entry 140
+    -0x1.1745d1745d1730p6,
+    -0x1.1745d1745d173p-1,
+    (int)7
+  },
+  { // Entry 141
+    -0x1.1745d1745d1730p7,
+    -0x1.1745d1745d173p-1,
+    (int)8
+  },
+  { // Entry 142
+    -0x1.1745d1745d1730p8,
+    -0x1.1745d1745d173p-1,
+    (int)9
+  },
+  { // Entry 143
+    -0x1.1745d1745d1730p9,
+    -0x1.1745d1745d173p-1,
+    (int)10
+  },
+  { // Entry 144
+    -0x1.d1745d1745d140p-12,
+    -0x1.d1745d1745d14p-2,
+    (int)-10
+  },
+  { // Entry 145
+    -0x1.d1745d1745d140p-11,
+    -0x1.d1745d1745d14p-2,
+    (int)-9
+  },
+  { // Entry 146
+    -0x1.d1745d1745d140p-10,
+    -0x1.d1745d1745d14p-2,
+    (int)-8
+  },
+  { // Entry 147
+    -0x1.d1745d1745d140p-9,
+    -0x1.d1745d1745d14p-2,
+    (int)-7
+  },
+  { // Entry 148
+    -0x1.d1745d1745d140p-8,
+    -0x1.d1745d1745d14p-2,
+    (int)-6
+  },
+  { // Entry 149
+    -0x1.d1745d1745d140p-7,
+    -0x1.d1745d1745d14p-2,
+    (int)-5
+  },
+  { // Entry 150
+    -0x1.d1745d1745d140p-6,
+    -0x1.d1745d1745d14p-2,
+    (int)-4
+  },
+  { // Entry 151
+    -0x1.d1745d1745d140p-5,
+    -0x1.d1745d1745d14p-2,
+    (int)-3
+  },
+  { // Entry 152
+    -0x1.d1745d1745d140p-4,
+    -0x1.d1745d1745d14p-2,
+    (int)-2
+  },
+  { // Entry 153
+    -0x1.d1745d1745d140p-3,
+    -0x1.d1745d1745d14p-2,
+    (int)-1
+  },
+  { // Entry 154
+    -0x1.d1745d1745d140p-2,
+    -0x1.d1745d1745d14p-2,
+    (int)0
+  },
+  { // Entry 155
+    -0x1.d1745d1745d140p-1,
+    -0x1.d1745d1745d14p-2,
+    (int)1
+  },
+  { // Entry 156
+    -0x1.d1745d1745d140p0,
+    -0x1.d1745d1745d14p-2,
+    (int)2
+  },
+  { // Entry 157
+    -0x1.d1745d1745d140p1,
+    -0x1.d1745d1745d14p-2,
+    (int)3
+  },
+  { // Entry 158
+    -0x1.d1745d1745d140p2,
+    -0x1.d1745d1745d14p-2,
+    (int)4
+  },
+  { // Entry 159
+    -0x1.d1745d1745d140p3,
+    -0x1.d1745d1745d14p-2,
+    (int)5
+  },
+  { // Entry 160
+    -0x1.d1745d1745d140p4,
+    -0x1.d1745d1745d14p-2,
+    (int)6
+  },
+  { // Entry 161
+    -0x1.d1745d1745d140p5,
+    -0x1.d1745d1745d14p-2,
+    (int)7
+  },
+  { // Entry 162
+    -0x1.d1745d1745d140p6,
+    -0x1.d1745d1745d14p-2,
+    (int)8
+  },
+  { // Entry 163
+    -0x1.d1745d1745d140p7,
+    -0x1.d1745d1745d14p-2,
+    (int)9
+  },
+  { // Entry 164
+    -0x1.d1745d1745d140p8,
+    -0x1.d1745d1745d14p-2,
+    (int)10
+  },
+  { // Entry 165
+    -0x1.745d1745d17420p-12,
+    -0x1.745d1745d1742p-2,
+    (int)-10
+  },
+  { // Entry 166
+    -0x1.745d1745d17420p-11,
+    -0x1.745d1745d1742p-2,
+    (int)-9
+  },
+  { // Entry 167
+    -0x1.745d1745d17420p-10,
+    -0x1.745d1745d1742p-2,
+    (int)-8
+  },
+  { // Entry 168
+    -0x1.745d1745d17420p-9,
+    -0x1.745d1745d1742p-2,
+    (int)-7
+  },
+  { // Entry 169
+    -0x1.745d1745d17420p-8,
+    -0x1.745d1745d1742p-2,
+    (int)-6
+  },
+  { // Entry 170
+    -0x1.745d1745d17420p-7,
+    -0x1.745d1745d1742p-2,
+    (int)-5
+  },
+  { // Entry 171
+    -0x1.745d1745d17420p-6,
+    -0x1.745d1745d1742p-2,
+    (int)-4
+  },
+  { // Entry 172
+    -0x1.745d1745d17420p-5,
+    -0x1.745d1745d1742p-2,
+    (int)-3
+  },
+  { // Entry 173
+    -0x1.745d1745d17420p-4,
+    -0x1.745d1745d1742p-2,
+    (int)-2
+  },
+  { // Entry 174
+    -0x1.745d1745d17420p-3,
+    -0x1.745d1745d1742p-2,
+    (int)-1
+  },
+  { // Entry 175
+    -0x1.745d1745d17420p-2,
+    -0x1.745d1745d1742p-2,
+    (int)0
+  },
+  { // Entry 176
+    -0x1.745d1745d17420p-1,
+    -0x1.745d1745d1742p-2,
+    (int)1
+  },
+  { // Entry 177
+    -0x1.745d1745d17420p0,
+    -0x1.745d1745d1742p-2,
+    (int)2
+  },
+  { // Entry 178
+    -0x1.745d1745d17420p1,
+    -0x1.745d1745d1742p-2,
+    (int)3
+  },
+  { // Entry 179
+    -0x1.745d1745d17420p2,
+    -0x1.745d1745d1742p-2,
+    (int)4
+  },
+  { // Entry 180
+    -0x1.745d1745d17420p3,
+    -0x1.745d1745d1742p-2,
+    (int)5
+  },
+  { // Entry 181
+    -0x1.745d1745d17420p4,
+    -0x1.745d1745d1742p-2,
+    (int)6
+  },
+  { // Entry 182
+    -0x1.745d1745d17420p5,
+    -0x1.745d1745d1742p-2,
+    (int)7
+  },
+  { // Entry 183
+    -0x1.745d1745d17420p6,
+    -0x1.745d1745d1742p-2,
+    (int)8
+  },
+  { // Entry 184
+    -0x1.745d1745d17420p7,
+    -0x1.745d1745d1742p-2,
+    (int)9
+  },
+  { // Entry 185
+    -0x1.745d1745d17420p8,
+    -0x1.745d1745d1742p-2,
+    (int)10
+  },
+  { // Entry 186
+    -0x1.1745d1745d17p-12,
+    -0x1.1745d1745d170p-2,
+    (int)-10
+  },
+  { // Entry 187
+    -0x1.1745d1745d17p-11,
+    -0x1.1745d1745d170p-2,
+    (int)-9
+  },
+  { // Entry 188
+    -0x1.1745d1745d17p-10,
+    -0x1.1745d1745d170p-2,
+    (int)-8
+  },
+  { // Entry 189
+    -0x1.1745d1745d17p-9,
+    -0x1.1745d1745d170p-2,
+    (int)-7
+  },
+  { // Entry 190
+    -0x1.1745d1745d17p-8,
+    -0x1.1745d1745d170p-2,
+    (int)-6
+  },
+  { // Entry 191
+    -0x1.1745d1745d17p-7,
+    -0x1.1745d1745d170p-2,
+    (int)-5
+  },
+  { // Entry 192
+    -0x1.1745d1745d17p-6,
+    -0x1.1745d1745d170p-2,
+    (int)-4
+  },
+  { // Entry 193
+    -0x1.1745d1745d17p-5,
+    -0x1.1745d1745d170p-2,
+    (int)-3
+  },
+  { // Entry 194
+    -0x1.1745d1745d17p-4,
+    -0x1.1745d1745d170p-2,
+    (int)-2
+  },
+  { // Entry 195
+    -0x1.1745d1745d17p-3,
+    -0x1.1745d1745d170p-2,
+    (int)-1
+  },
+  { // Entry 196
+    -0x1.1745d1745d17p-2,
+    -0x1.1745d1745d170p-2,
+    (int)0
+  },
+  { // Entry 197
+    -0x1.1745d1745d17p-1,
+    -0x1.1745d1745d170p-2,
+    (int)1
+  },
+  { // Entry 198
+    -0x1.1745d1745d17p0,
+    -0x1.1745d1745d170p-2,
+    (int)2
+  },
+  { // Entry 199
+    -0x1.1745d1745d17p1,
+    -0x1.1745d1745d170p-2,
+    (int)3
+  },
+  { // Entry 200
+    -0x1.1745d1745d17p2,
+    -0x1.1745d1745d170p-2,
+    (int)4
+  },
+  { // Entry 201
+    -0x1.1745d1745d17p3,
+    -0x1.1745d1745d170p-2,
+    (int)5
+  },
+  { // Entry 202
+    -0x1.1745d1745d17p4,
+    -0x1.1745d1745d170p-2,
+    (int)6
+  },
+  { // Entry 203
+    -0x1.1745d1745d17p5,
+    -0x1.1745d1745d170p-2,
+    (int)7
+  },
+  { // Entry 204
+    -0x1.1745d1745d17p6,
+    -0x1.1745d1745d170p-2,
+    (int)8
+  },
+  { // Entry 205
+    -0x1.1745d1745d17p7,
+    -0x1.1745d1745d170p-2,
+    (int)9
+  },
+  { // Entry 206
+    -0x1.1745d1745d17p8,
+    -0x1.1745d1745d170p-2,
+    (int)10
+  },
+  { // Entry 207
+    -0x1.745d1745d173d0p-13,
+    -0x1.745d1745d173dp-3,
+    (int)-10
+  },
+  { // Entry 208
+    -0x1.745d1745d173d0p-12,
+    -0x1.745d1745d173dp-3,
+    (int)-9
+  },
+  { // Entry 209
+    -0x1.745d1745d173d0p-11,
+    -0x1.745d1745d173dp-3,
+    (int)-8
+  },
+  { // Entry 210
+    -0x1.745d1745d173d0p-10,
+    -0x1.745d1745d173dp-3,
+    (int)-7
+  },
+  { // Entry 211
+    -0x1.745d1745d173d0p-9,
+    -0x1.745d1745d173dp-3,
+    (int)-6
+  },
+  { // Entry 212
+    -0x1.745d1745d173d0p-8,
+    -0x1.745d1745d173dp-3,
+    (int)-5
+  },
+  { // Entry 213
+    -0x1.745d1745d173d0p-7,
+    -0x1.745d1745d173dp-3,
+    (int)-4
+  },
+  { // Entry 214
+    -0x1.745d1745d173d0p-6,
+    -0x1.745d1745d173dp-3,
+    (int)-3
+  },
+  { // Entry 215
+    -0x1.745d1745d173d0p-5,
+    -0x1.745d1745d173dp-3,
+    (int)-2
+  },
+  { // Entry 216
+    -0x1.745d1745d173d0p-4,
+    -0x1.745d1745d173dp-3,
+    (int)-1
+  },
+  { // Entry 217
+    -0x1.745d1745d173d0p-3,
+    -0x1.745d1745d173dp-3,
+    (int)0
+  },
+  { // Entry 218
+    -0x1.745d1745d173d0p-2,
+    -0x1.745d1745d173dp-3,
+    (int)1
+  },
+  { // Entry 219
+    -0x1.745d1745d173d0p-1,
+    -0x1.745d1745d173dp-3,
+    (int)2
+  },
+  { // Entry 220
+    -0x1.745d1745d173d0p0,
+    -0x1.745d1745d173dp-3,
+    (int)3
+  },
+  { // Entry 221
+    -0x1.745d1745d173d0p1,
+    -0x1.745d1745d173dp-3,
+    (int)4
+  },
+  { // Entry 222
+    -0x1.745d1745d173d0p2,
+    -0x1.745d1745d173dp-3,
+    (int)5
+  },
+  { // Entry 223
+    -0x1.745d1745d173d0p3,
+    -0x1.745d1745d173dp-3,
+    (int)6
+  },
+  { // Entry 224
+    -0x1.745d1745d173d0p4,
+    -0x1.745d1745d173dp-3,
+    (int)7
+  },
+  { // Entry 225
+    -0x1.745d1745d173d0p5,
+    -0x1.745d1745d173dp-3,
+    (int)8
+  },
+  { // Entry 226
+    -0x1.745d1745d173d0p6,
+    -0x1.745d1745d173dp-3,
+    (int)9
+  },
+  { // Entry 227
+    -0x1.745d1745d173d0p7,
+    -0x1.745d1745d173dp-3,
+    (int)10
+  },
+  { // Entry 228
+    -0x1.745d1745d17340p-14,
+    -0x1.745d1745d1734p-4,
+    (int)-10
+  },
+  { // Entry 229
+    -0x1.745d1745d17340p-13,
+    -0x1.745d1745d1734p-4,
+    (int)-9
+  },
+  { // Entry 230
+    -0x1.745d1745d17340p-12,
+    -0x1.745d1745d1734p-4,
+    (int)-8
+  },
+  { // Entry 231
+    -0x1.745d1745d17340p-11,
+    -0x1.745d1745d1734p-4,
+    (int)-7
+  },
+  { // Entry 232
+    -0x1.745d1745d17340p-10,
+    -0x1.745d1745d1734p-4,
+    (int)-6
+  },
+  { // Entry 233
+    -0x1.745d1745d17340p-9,
+    -0x1.745d1745d1734p-4,
+    (int)-5
+  },
+  { // Entry 234
+    -0x1.745d1745d17340p-8,
+    -0x1.745d1745d1734p-4,
+    (int)-4
+  },
+  { // Entry 235
+    -0x1.745d1745d17340p-7,
+    -0x1.745d1745d1734p-4,
+    (int)-3
+  },
+  { // Entry 236
+    -0x1.745d1745d17340p-6,
+    -0x1.745d1745d1734p-4,
+    (int)-2
+  },
+  { // Entry 237
+    -0x1.745d1745d17340p-5,
+    -0x1.745d1745d1734p-4,
+    (int)-1
+  },
+  { // Entry 238
+    -0x1.745d1745d17340p-4,
+    -0x1.745d1745d1734p-4,
+    (int)0
+  },
+  { // Entry 239
+    -0x1.745d1745d17340p-3,
+    -0x1.745d1745d1734p-4,
+    (int)1
+  },
+  { // Entry 240
+    -0x1.745d1745d17340p-2,
+    -0x1.745d1745d1734p-4,
+    (int)2
+  },
+  { // Entry 241
+    -0x1.745d1745d17340p-1,
+    -0x1.745d1745d1734p-4,
+    (int)3
+  },
+  { // Entry 242
+    -0x1.745d1745d17340p0,
+    -0x1.745d1745d1734p-4,
+    (int)4
+  },
+  { // Entry 243
+    -0x1.745d1745d17340p1,
+    -0x1.745d1745d1734p-4,
+    (int)5
+  },
+  { // Entry 244
+    -0x1.745d1745d17340p2,
+    -0x1.745d1745d1734p-4,
+    (int)6
+  },
+  { // Entry 245
+    -0x1.745d1745d17340p3,
+    -0x1.745d1745d1734p-4,
+    (int)7
+  },
+  { // Entry 246
+    -0x1.745d1745d17340p4,
+    -0x1.745d1745d1734p-4,
+    (int)8
+  },
+  { // Entry 247
+    -0x1.745d1745d17340p5,
+    -0x1.745d1745d1734p-4,
+    (int)9
+  },
+  { // Entry 248
+    -0x1.745d1745d17340p6,
+    -0x1.745d1745d1734p-4,
+    (int)10
+  },
+  { // Entry 249
+    0x1.20p-62,
+    0x1.2p-52,
+    (int)-10
+  },
+  { // Entry 250
+    0x1.20p-61,
+    0x1.2p-52,
+    (int)-9
+  },
+  { // Entry 251
+    0x1.20p-60,
+    0x1.2p-52,
+    (int)-8
+  },
+  { // Entry 252
+    0x1.20p-59,
+    0x1.2p-52,
+    (int)-7
+  },
+  { // Entry 253
+    0x1.20p-58,
+    0x1.2p-52,
+    (int)-6
+  },
+  { // Entry 254
+    0x1.20p-57,
+    0x1.2p-52,
+    (int)-5
+  },
+  { // Entry 255
+    0x1.20p-56,
+    0x1.2p-52,
+    (int)-4
+  },
+  { // Entry 256
+    0x1.20p-55,
+    0x1.2p-52,
+    (int)-3
+  },
+  { // Entry 257
+    0x1.20p-54,
+    0x1.2p-52,
+    (int)-2
+  },
+  { // Entry 258
+    0x1.20p-53,
+    0x1.2p-52,
+    (int)-1
+  },
+  { // Entry 259
+    0x1.20p-52,
+    0x1.2p-52,
+    (int)0
+  },
+  { // Entry 260
+    0x1.20p-51,
+    0x1.2p-52,
+    (int)1
+  },
+  { // Entry 261
+    0x1.20p-50,
+    0x1.2p-52,
+    (int)2
+  },
+  { // Entry 262
+    0x1.20p-49,
+    0x1.2p-52,
+    (int)3
+  },
+  { // Entry 263
+    0x1.20p-48,
+    0x1.2p-52,
+    (int)4
+  },
+  { // Entry 264
+    0x1.20p-47,
+    0x1.2p-52,
+    (int)5
+  },
+  { // Entry 265
+    0x1.20p-46,
+    0x1.2p-52,
+    (int)6
+  },
+  { // Entry 266
+    0x1.20p-45,
+    0x1.2p-52,
+    (int)7
+  },
+  { // Entry 267
+    0x1.20p-44,
+    0x1.2p-52,
+    (int)8
+  },
+  { // Entry 268
+    0x1.20p-43,
+    0x1.2p-52,
+    (int)9
+  },
+  { // Entry 269
+    0x1.20p-42,
+    0x1.2p-52,
+    (int)10
+  },
+  { // Entry 270
+    0x1.745d1745d17580p-14,
+    0x1.745d1745d1758p-4,
+    (int)-10
+  },
+  { // Entry 271
+    0x1.745d1745d17580p-13,
+    0x1.745d1745d1758p-4,
+    (int)-9
+  },
+  { // Entry 272
+    0x1.745d1745d17580p-12,
+    0x1.745d1745d1758p-4,
+    (int)-8
+  },
+  { // Entry 273
+    0x1.745d1745d17580p-11,
+    0x1.745d1745d1758p-4,
+    (int)-7
+  },
+  { // Entry 274
+    0x1.745d1745d17580p-10,
+    0x1.745d1745d1758p-4,
+    (int)-6
+  },
+  { // Entry 275
+    0x1.745d1745d17580p-9,
+    0x1.745d1745d1758p-4,
+    (int)-5
+  },
+  { // Entry 276
+    0x1.745d1745d17580p-8,
+    0x1.745d1745d1758p-4,
+    (int)-4
+  },
+  { // Entry 277
+    0x1.745d1745d17580p-7,
+    0x1.745d1745d1758p-4,
+    (int)-3
+  },
+  { // Entry 278
+    0x1.745d1745d17580p-6,
+    0x1.745d1745d1758p-4,
+    (int)-2
+  },
+  { // Entry 279
+    0x1.745d1745d17580p-5,
+    0x1.745d1745d1758p-4,
+    (int)-1
+  },
+  { // Entry 280
+    0x1.745d1745d17580p-4,
+    0x1.745d1745d1758p-4,
+    (int)0
+  },
+  { // Entry 281
+    0x1.745d1745d17580p-3,
+    0x1.745d1745d1758p-4,
+    (int)1
+  },
+  { // Entry 282
+    0x1.745d1745d17580p-2,
+    0x1.745d1745d1758p-4,
+    (int)2
+  },
+  { // Entry 283
+    0x1.745d1745d17580p-1,
+    0x1.745d1745d1758p-4,
+    (int)3
+  },
+  { // Entry 284
+    0x1.745d1745d17580p0,
+    0x1.745d1745d1758p-4,
+    (int)4
+  },
+  { // Entry 285
+    0x1.745d1745d17580p1,
+    0x1.745d1745d1758p-4,
+    (int)5
+  },
+  { // Entry 286
+    0x1.745d1745d17580p2,
+    0x1.745d1745d1758p-4,
+    (int)6
+  },
+  { // Entry 287
+    0x1.745d1745d17580p3,
+    0x1.745d1745d1758p-4,
+    (int)7
+  },
+  { // Entry 288
+    0x1.745d1745d17580p4,
+    0x1.745d1745d1758p-4,
+    (int)8
+  },
+  { // Entry 289
+    0x1.745d1745d17580p5,
+    0x1.745d1745d1758p-4,
+    (int)9
+  },
+  { // Entry 290
+    0x1.745d1745d17580p6,
+    0x1.745d1745d1758p-4,
+    (int)10
+  },
+  { // Entry 291
+    0x1.745d1745d174f0p-13,
+    0x1.745d1745d174fp-3,
+    (int)-10
+  },
+  { // Entry 292
+    0x1.745d1745d174f0p-12,
+    0x1.745d1745d174fp-3,
+    (int)-9
+  },
+  { // Entry 293
+    0x1.745d1745d174f0p-11,
+    0x1.745d1745d174fp-3,
+    (int)-8
+  },
+  { // Entry 294
+    0x1.745d1745d174f0p-10,
+    0x1.745d1745d174fp-3,
+    (int)-7
+  },
+  { // Entry 295
+    0x1.745d1745d174f0p-9,
+    0x1.745d1745d174fp-3,
+    (int)-6
+  },
+  { // Entry 296
+    0x1.745d1745d174f0p-8,
+    0x1.745d1745d174fp-3,
+    (int)-5
+  },
+  { // Entry 297
+    0x1.745d1745d174f0p-7,
+    0x1.745d1745d174fp-3,
+    (int)-4
+  },
+  { // Entry 298
+    0x1.745d1745d174f0p-6,
+    0x1.745d1745d174fp-3,
+    (int)-3
+  },
+  { // Entry 299
+    0x1.745d1745d174f0p-5,
+    0x1.745d1745d174fp-3,
+    (int)-2
+  },
+  { // Entry 300
+    0x1.745d1745d174f0p-4,
+    0x1.745d1745d174fp-3,
+    (int)-1
+  },
+  { // Entry 301
+    0x1.745d1745d174f0p-3,
+    0x1.745d1745d174fp-3,
+    (int)0
+  },
+  { // Entry 302
+    0x1.745d1745d174f0p-2,
+    0x1.745d1745d174fp-3,
+    (int)1
+  },
+  { // Entry 303
+    0x1.745d1745d174f0p-1,
+    0x1.745d1745d174fp-3,
+    (int)2
+  },
+  { // Entry 304
+    0x1.745d1745d174f0p0,
+    0x1.745d1745d174fp-3,
+    (int)3
+  },
+  { // Entry 305
+    0x1.745d1745d174f0p1,
+    0x1.745d1745d174fp-3,
+    (int)4
+  },
+  { // Entry 306
+    0x1.745d1745d174f0p2,
+    0x1.745d1745d174fp-3,
+    (int)5
+  },
+  { // Entry 307
+    0x1.745d1745d174f0p3,
+    0x1.745d1745d174fp-3,
+    (int)6
+  },
+  { // Entry 308
+    0x1.745d1745d174f0p4,
+    0x1.745d1745d174fp-3,
+    (int)7
+  },
+  { // Entry 309
+    0x1.745d1745d174f0p5,
+    0x1.745d1745d174fp-3,
+    (int)8
+  },
+  { // Entry 310
+    0x1.745d1745d174f0p6,
+    0x1.745d1745d174fp-3,
+    (int)9
+  },
+  { // Entry 311
+    0x1.745d1745d174f0p7,
+    0x1.745d1745d174fp-3,
+    (int)10
+  },
+  { // Entry 312
+    0x1.1745d1745d1790p-12,
+    0x1.1745d1745d179p-2,
+    (int)-10
+  },
+  { // Entry 313
+    0x1.1745d1745d1790p-11,
+    0x1.1745d1745d179p-2,
+    (int)-9
+  },
+  { // Entry 314
+    0x1.1745d1745d1790p-10,
+    0x1.1745d1745d179p-2,
+    (int)-8
+  },
+  { // Entry 315
+    0x1.1745d1745d1790p-9,
+    0x1.1745d1745d179p-2,
+    (int)-7
+  },
+  { // Entry 316
+    0x1.1745d1745d1790p-8,
+    0x1.1745d1745d179p-2,
+    (int)-6
+  },
+  { // Entry 317
+    0x1.1745d1745d1790p-7,
+    0x1.1745d1745d179p-2,
+    (int)-5
+  },
+  { // Entry 318
+    0x1.1745d1745d1790p-6,
+    0x1.1745d1745d179p-2,
+    (int)-4
+  },
+  { // Entry 319
+    0x1.1745d1745d1790p-5,
+    0x1.1745d1745d179p-2,
+    (int)-3
+  },
+  { // Entry 320
+    0x1.1745d1745d1790p-4,
+    0x1.1745d1745d179p-2,
+    (int)-2
+  },
+  { // Entry 321
+    0x1.1745d1745d1790p-3,
+    0x1.1745d1745d179p-2,
+    (int)-1
+  },
+  { // Entry 322
+    0x1.1745d1745d1790p-2,
+    0x1.1745d1745d179p-2,
+    (int)0
+  },
+  { // Entry 323
+    0x1.1745d1745d1790p-1,
+    0x1.1745d1745d179p-2,
+    (int)1
+  },
+  { // Entry 324
+    0x1.1745d1745d1790p0,
+    0x1.1745d1745d179p-2,
+    (int)2
+  },
+  { // Entry 325
+    0x1.1745d1745d1790p1,
+    0x1.1745d1745d179p-2,
+    (int)3
+  },
+  { // Entry 326
+    0x1.1745d1745d1790p2,
+    0x1.1745d1745d179p-2,
+    (int)4
+  },
+  { // Entry 327
+    0x1.1745d1745d1790p3,
+    0x1.1745d1745d179p-2,
+    (int)5
+  },
+  { // Entry 328
+    0x1.1745d1745d1790p4,
+    0x1.1745d1745d179p-2,
+    (int)6
+  },
+  { // Entry 329
+    0x1.1745d1745d1790p5,
+    0x1.1745d1745d179p-2,
+    (int)7
+  },
+  { // Entry 330
+    0x1.1745d1745d1790p6,
+    0x1.1745d1745d179p-2,
+    (int)8
+  },
+  { // Entry 331
+    0x1.1745d1745d1790p7,
+    0x1.1745d1745d179p-2,
+    (int)9
+  },
+  { // Entry 332
+    0x1.1745d1745d1790p8,
+    0x1.1745d1745d179p-2,
+    (int)10
+  },
+  { // Entry 333
+    0x1.745d1745d174a0p-12,
+    0x1.745d1745d174ap-2,
+    (int)-10
+  },
+  { // Entry 334
+    0x1.745d1745d174a0p-11,
+    0x1.745d1745d174ap-2,
+    (int)-9
+  },
+  { // Entry 335
+    0x1.745d1745d174a0p-10,
+    0x1.745d1745d174ap-2,
+    (int)-8
+  },
+  { // Entry 336
+    0x1.745d1745d174a0p-9,
+    0x1.745d1745d174ap-2,
+    (int)-7
+  },
+  { // Entry 337
+    0x1.745d1745d174a0p-8,
+    0x1.745d1745d174ap-2,
+    (int)-6
+  },
+  { // Entry 338
+    0x1.745d1745d174a0p-7,
+    0x1.745d1745d174ap-2,
+    (int)-5
+  },
+  { // Entry 339
+    0x1.745d1745d174a0p-6,
+    0x1.745d1745d174ap-2,
+    (int)-4
+  },
+  { // Entry 340
+    0x1.745d1745d174a0p-5,
+    0x1.745d1745d174ap-2,
+    (int)-3
+  },
+  { // Entry 341
+    0x1.745d1745d174a0p-4,
+    0x1.745d1745d174ap-2,
+    (int)-2
+  },
+  { // Entry 342
+    0x1.745d1745d174a0p-3,
+    0x1.745d1745d174ap-2,
+    (int)-1
+  },
+  { // Entry 343
+    0x1.745d1745d174a0p-2,
+    0x1.745d1745d174ap-2,
+    (int)0
+  },
+  { // Entry 344
+    0x1.745d1745d174a0p-1,
+    0x1.745d1745d174ap-2,
+    (int)1
+  },
+  { // Entry 345
+    0x1.745d1745d174a0p0,
+    0x1.745d1745d174ap-2,
+    (int)2
+  },
+  { // Entry 346
+    0x1.745d1745d174a0p1,
+    0x1.745d1745d174ap-2,
+    (int)3
+  },
+  { // Entry 347
+    0x1.745d1745d174a0p2,
+    0x1.745d1745d174ap-2,
+    (int)4
+  },
+  { // Entry 348
+    0x1.745d1745d174a0p3,
+    0x1.745d1745d174ap-2,
+    (int)5
+  },
+  { // Entry 349
+    0x1.745d1745d174a0p4,
+    0x1.745d1745d174ap-2,
+    (int)6
+  },
+  { // Entry 350
+    0x1.745d1745d174a0p5,
+    0x1.745d1745d174ap-2,
+    (int)7
+  },
+  { // Entry 351
+    0x1.745d1745d174a0p6,
+    0x1.745d1745d174ap-2,
+    (int)8
+  },
+  { // Entry 352
+    0x1.745d1745d174a0p7,
+    0x1.745d1745d174ap-2,
+    (int)9
+  },
+  { // Entry 353
+    0x1.745d1745d174a0p8,
+    0x1.745d1745d174ap-2,
+    (int)10
+  },
+  { // Entry 354
+    0x1.d1745d1745d1c0p-12,
+    0x1.d1745d1745d1cp-2,
+    (int)-10
+  },
+  { // Entry 355
+    0x1.d1745d1745d1c0p-11,
+    0x1.d1745d1745d1cp-2,
+    (int)-9
+  },
+  { // Entry 356
+    0x1.d1745d1745d1c0p-10,
+    0x1.d1745d1745d1cp-2,
+    (int)-8
+  },
+  { // Entry 357
+    0x1.d1745d1745d1c0p-9,
+    0x1.d1745d1745d1cp-2,
+    (int)-7
+  },
+  { // Entry 358
+    0x1.d1745d1745d1c0p-8,
+    0x1.d1745d1745d1cp-2,
+    (int)-6
+  },
+  { // Entry 359
+    0x1.d1745d1745d1c0p-7,
+    0x1.d1745d1745d1cp-2,
+    (int)-5
+  },
+  { // Entry 360
+    0x1.d1745d1745d1c0p-6,
+    0x1.d1745d1745d1cp-2,
+    (int)-4
+  },
+  { // Entry 361
+    0x1.d1745d1745d1c0p-5,
+    0x1.d1745d1745d1cp-2,
+    (int)-3
+  },
+  { // Entry 362
+    0x1.d1745d1745d1c0p-4,
+    0x1.d1745d1745d1cp-2,
+    (int)-2
+  },
+  { // Entry 363
+    0x1.d1745d1745d1c0p-3,
+    0x1.d1745d1745d1cp-2,
+    (int)-1
+  },
+  { // Entry 364
+    0x1.d1745d1745d1c0p-2,
+    0x1.d1745d1745d1cp-2,
+    (int)0
+  },
+  { // Entry 365
+    0x1.d1745d1745d1c0p-1,
+    0x1.d1745d1745d1cp-2,
+    (int)1
+  },
+  { // Entry 366
+    0x1.d1745d1745d1c0p0,
+    0x1.d1745d1745d1cp-2,
+    (int)2
+  },
+  { // Entry 367
+    0x1.d1745d1745d1c0p1,
+    0x1.d1745d1745d1cp-2,
+    (int)3
+  },
+  { // Entry 368
+    0x1.d1745d1745d1c0p2,
+    0x1.d1745d1745d1cp-2,
+    (int)4
+  },
+  { // Entry 369
+    0x1.d1745d1745d1c0p3,
+    0x1.d1745d1745d1cp-2,
+    (int)5
+  },
+  { // Entry 370
+    0x1.d1745d1745d1c0p4,
+    0x1.d1745d1745d1cp-2,
+    (int)6
+  },
+  { // Entry 371
+    0x1.d1745d1745d1c0p5,
+    0x1.d1745d1745d1cp-2,
+    (int)7
+  },
+  { // Entry 372
+    0x1.d1745d1745d1c0p6,
+    0x1.d1745d1745d1cp-2,
+    (int)8
+  },
+  { // Entry 373
+    0x1.d1745d1745d1c0p7,
+    0x1.d1745d1745d1cp-2,
+    (int)9
+  },
+  { // Entry 374
+    0x1.d1745d1745d1c0p8,
+    0x1.d1745d1745d1cp-2,
+    (int)10
+  },
+  { // Entry 375
+    0x1.1745d1745d1770p-11,
+    0x1.1745d1745d177p-1,
+    (int)-10
+  },
+  { // Entry 376
+    0x1.1745d1745d1770p-10,
+    0x1.1745d1745d177p-1,
+    (int)-9
+  },
+  { // Entry 377
+    0x1.1745d1745d1770p-9,
+    0x1.1745d1745d177p-1,
+    (int)-8
+  },
+  { // Entry 378
+    0x1.1745d1745d1770p-8,
+    0x1.1745d1745d177p-1,
+    (int)-7
+  },
+  { // Entry 379
+    0x1.1745d1745d1770p-7,
+    0x1.1745d1745d177p-1,
+    (int)-6
+  },
+  { // Entry 380
+    0x1.1745d1745d1770p-6,
+    0x1.1745d1745d177p-1,
+    (int)-5
+  },
+  { // Entry 381
+    0x1.1745d1745d1770p-5,
+    0x1.1745d1745d177p-1,
+    (int)-4
+  },
+  { // Entry 382
+    0x1.1745d1745d1770p-4,
+    0x1.1745d1745d177p-1,
+    (int)-3
+  },
+  { // Entry 383
+    0x1.1745d1745d1770p-3,
+    0x1.1745d1745d177p-1,
+    (int)-2
+  },
+  { // Entry 384
+    0x1.1745d1745d1770p-2,
+    0x1.1745d1745d177p-1,
+    (int)-1
+  },
+  { // Entry 385
+    0x1.1745d1745d1770p-1,
+    0x1.1745d1745d177p-1,
+    (int)0
+  },
+  { // Entry 386
+    0x1.1745d1745d1770p0,
+    0x1.1745d1745d177p-1,
+    (int)1
+  },
+  { // Entry 387
+    0x1.1745d1745d1770p1,
+    0x1.1745d1745d177p-1,
+    (int)2
+  },
+  { // Entry 388
+    0x1.1745d1745d1770p2,
+    0x1.1745d1745d177p-1,
+    (int)3
+  },
+  { // Entry 389
+    0x1.1745d1745d1770p3,
+    0x1.1745d1745d177p-1,
+    (int)4
+  },
+  { // Entry 390
+    0x1.1745d1745d1770p4,
+    0x1.1745d1745d177p-1,
+    (int)5
+  },
+  { // Entry 391
+    0x1.1745d1745d1770p5,
+    0x1.1745d1745d177p-1,
+    (int)6
+  },
+  { // Entry 392
+    0x1.1745d1745d1770p6,
+    0x1.1745d1745d177p-1,
+    (int)7
+  },
+  { // Entry 393
+    0x1.1745d1745d1770p7,
+    0x1.1745d1745d177p-1,
+    (int)8
+  },
+  { // Entry 394
+    0x1.1745d1745d1770p8,
+    0x1.1745d1745d177p-1,
+    (int)9
+  },
+  { // Entry 395
+    0x1.1745d1745d1770p9,
+    0x1.1745d1745d177p-1,
+    (int)10
+  },
+  { // Entry 396
+    0x1.45d1745d1746p-11,
+    0x1.45d1745d17460p-1,
+    (int)-10
+  },
+  { // Entry 397
+    0x1.45d1745d1746p-10,
+    0x1.45d1745d17460p-1,
+    (int)-9
+  },
+  { // Entry 398
+    0x1.45d1745d1746p-9,
+    0x1.45d1745d17460p-1,
+    (int)-8
+  },
+  { // Entry 399
+    0x1.45d1745d1746p-8,
+    0x1.45d1745d17460p-1,
+    (int)-7
+  },
+  { // Entry 400
+    0x1.45d1745d1746p-7,
+    0x1.45d1745d17460p-1,
+    (int)-6
+  },
+  { // Entry 401
+    0x1.45d1745d1746p-6,
+    0x1.45d1745d17460p-1,
+    (int)-5
+  },
+  { // Entry 402
+    0x1.45d1745d1746p-5,
+    0x1.45d1745d17460p-1,
+    (int)-4
+  },
+  { // Entry 403
+    0x1.45d1745d1746p-4,
+    0x1.45d1745d17460p-1,
+    (int)-3
+  },
+  { // Entry 404
+    0x1.45d1745d1746p-3,
+    0x1.45d1745d17460p-1,
+    (int)-2
+  },
+  { // Entry 405
+    0x1.45d1745d1746p-2,
+    0x1.45d1745d17460p-1,
+    (int)-1
+  },
+  { // Entry 406
+    0x1.45d1745d1746p-1,
+    0x1.45d1745d17460p-1,
+    (int)0
+  },
+  { // Entry 407
+    0x1.45d1745d1746p0,
+    0x1.45d1745d17460p-1,
+    (int)1
+  },
+  { // Entry 408
+    0x1.45d1745d1746p1,
+    0x1.45d1745d17460p-1,
+    (int)2
+  },
+  { // Entry 409
+    0x1.45d1745d1746p2,
+    0x1.45d1745d17460p-1,
+    (int)3
+  },
+  { // Entry 410
+    0x1.45d1745d1746p3,
+    0x1.45d1745d17460p-1,
+    (int)4
+  },
+  { // Entry 411
+    0x1.45d1745d1746p4,
+    0x1.45d1745d17460p-1,
+    (int)5
+  },
+  { // Entry 412
+    0x1.45d1745d1746p5,
+    0x1.45d1745d17460p-1,
+    (int)6
+  },
+  { // Entry 413
+    0x1.45d1745d1746p6,
+    0x1.45d1745d17460p-1,
+    (int)7
+  },
+  { // Entry 414
+    0x1.45d1745d1746p7,
+    0x1.45d1745d17460p-1,
+    (int)8
+  },
+  { // Entry 415
+    0x1.45d1745d1746p8,
+    0x1.45d1745d17460p-1,
+    (int)9
+  },
+  { // Entry 416
+    0x1.45d1745d1746p9,
+    0x1.45d1745d17460p-1,
+    (int)10
+  },
+  { // Entry 417
+    0x1.745d1745d17490p-11,
+    0x1.745d1745d1749p-1,
+    (int)-10
+  },
+  { // Entry 418
+    0x1.745d1745d17490p-10,
+    0x1.745d1745d1749p-1,
+    (int)-9
+  },
+  { // Entry 419
+    0x1.745d1745d17490p-9,
+    0x1.745d1745d1749p-1,
+    (int)-8
+  },
+  { // Entry 420
+    0x1.745d1745d17490p-8,
+    0x1.745d1745d1749p-1,
+    (int)-7
+  },
+  { // Entry 421
+    0x1.745d1745d17490p-7,
+    0x1.745d1745d1749p-1,
+    (int)-6
+  },
+  { // Entry 422
+    0x1.745d1745d17490p-6,
+    0x1.745d1745d1749p-1,
+    (int)-5
+  },
+  { // Entry 423
+    0x1.745d1745d17490p-5,
+    0x1.745d1745d1749p-1,
+    (int)-4
+  },
+  { // Entry 424
+    0x1.745d1745d17490p-4,
+    0x1.745d1745d1749p-1,
+    (int)-3
+  },
+  { // Entry 425
+    0x1.745d1745d17490p-3,
+    0x1.745d1745d1749p-1,
+    (int)-2
+  },
+  { // Entry 426
+    0x1.745d1745d17490p-2,
+    0x1.745d1745d1749p-1,
+    (int)-1
+  },
+  { // Entry 427
+    0x1.745d1745d17490p-1,
+    0x1.745d1745d1749p-1,
+    (int)0
+  },
+  { // Entry 428
+    0x1.745d1745d17490p0,
+    0x1.745d1745d1749p-1,
+    (int)1
+  },
+  { // Entry 429
+    0x1.745d1745d17490p1,
+    0x1.745d1745d1749p-1,
+    (int)2
+  },
+  { // Entry 430
+    0x1.745d1745d17490p2,
+    0x1.745d1745d1749p-1,
+    (int)3
+  },
+  { // Entry 431
+    0x1.745d1745d17490p3,
+    0x1.745d1745d1749p-1,
+    (int)4
+  },
+  { // Entry 432
+    0x1.745d1745d17490p4,
+    0x1.745d1745d1749p-1,
+    (int)5
+  },
+  { // Entry 433
+    0x1.745d1745d17490p5,
+    0x1.745d1745d1749p-1,
+    (int)6
+  },
+  { // Entry 434
+    0x1.745d1745d17490p6,
+    0x1.745d1745d1749p-1,
+    (int)7
+  },
+  { // Entry 435
+    0x1.745d1745d17490p7,
+    0x1.745d1745d1749p-1,
+    (int)8
+  },
+  { // Entry 436
+    0x1.745d1745d17490p8,
+    0x1.745d1745d1749p-1,
+    (int)9
+  },
+  { // Entry 437
+    0x1.745d1745d17490p9,
+    0x1.745d1745d1749p-1,
+    (int)10
+  },
+  { // Entry 438
+    0x1.a2e8ba2e8ba320p-11,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-10
+  },
+  { // Entry 439
+    0x1.a2e8ba2e8ba320p-10,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-9
+  },
+  { // Entry 440
+    0x1.a2e8ba2e8ba320p-9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-8
+  },
+  { // Entry 441
+    0x1.a2e8ba2e8ba320p-8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-7
+  },
+  { // Entry 442
+    0x1.a2e8ba2e8ba320p-7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-6
+  },
+  { // Entry 443
+    0x1.a2e8ba2e8ba320p-6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-5
+  },
+  { // Entry 444
+    0x1.a2e8ba2e8ba320p-5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-4
+  },
+  { // Entry 445
+    0x1.a2e8ba2e8ba320p-4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-3
+  },
+  { // Entry 446
+    0x1.a2e8ba2e8ba320p-3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-2
+  },
+  { // Entry 447
+    0x1.a2e8ba2e8ba320p-2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-1
+  },
+  { // Entry 448
+    0x1.a2e8ba2e8ba320p-1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)0
+  },
+  { // Entry 449
+    0x1.a2e8ba2e8ba320p0,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)1
+  },
+  { // Entry 450
+    0x1.a2e8ba2e8ba320p1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)2
+  },
+  { // Entry 451
+    0x1.a2e8ba2e8ba320p2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)3
+  },
+  { // Entry 452
+    0x1.a2e8ba2e8ba320p3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)4
+  },
+  { // Entry 453
+    0x1.a2e8ba2e8ba320p4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)5
+  },
+  { // Entry 454
+    0x1.a2e8ba2e8ba320p5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)6
+  },
+  { // Entry 455
+    0x1.a2e8ba2e8ba320p6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)7
+  },
+  { // Entry 456
+    0x1.a2e8ba2e8ba320p7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)8
+  },
+  { // Entry 457
+    0x1.a2e8ba2e8ba320p8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)9
+  },
+  { // Entry 458
+    0x1.a2e8ba2e8ba320p9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)10
+  },
+  { // Entry 459
+    0x1.d1745d1745d1b0p-11,
+    0x1.d1745d1745d1bp-1,
+    (int)-10
+  },
+  { // Entry 460
+    0x1.d1745d1745d1b0p-10,
+    0x1.d1745d1745d1bp-1,
+    (int)-9
+  },
+  { // Entry 461
+    0x1.d1745d1745d1b0p-9,
+    0x1.d1745d1745d1bp-1,
+    (int)-8
+  },
+  { // Entry 462
+    0x1.d1745d1745d1b0p-8,
+    0x1.d1745d1745d1bp-1,
+    (int)-7
+  },
+  { // Entry 463
+    0x1.d1745d1745d1b0p-7,
+    0x1.d1745d1745d1bp-1,
+    (int)-6
+  },
+  { // Entry 464
+    0x1.d1745d1745d1b0p-6,
+    0x1.d1745d1745d1bp-1,
+    (int)-5
+  },
+  { // Entry 465
+    0x1.d1745d1745d1b0p-5,
+    0x1.d1745d1745d1bp-1,
+    (int)-4
+  },
+  { // Entry 466
+    0x1.d1745d1745d1b0p-4,
+    0x1.d1745d1745d1bp-1,
+    (int)-3
+  },
+  { // Entry 467
+    0x1.d1745d1745d1b0p-3,
+    0x1.d1745d1745d1bp-1,
+    (int)-2
+  },
+  { // Entry 468
+    0x1.d1745d1745d1b0p-2,
+    0x1.d1745d1745d1bp-1,
+    (int)-1
+  },
+  { // Entry 469
+    0x1.d1745d1745d1b0p-1,
+    0x1.d1745d1745d1bp-1,
+    (int)0
+  },
+  { // Entry 470
+    0x1.d1745d1745d1b0p0,
+    0x1.d1745d1745d1bp-1,
+    (int)1
+  },
+  { // Entry 471
+    0x1.d1745d1745d1b0p1,
+    0x1.d1745d1745d1bp-1,
+    (int)2
+  },
+  { // Entry 472
+    0x1.d1745d1745d1b0p2,
+    0x1.d1745d1745d1bp-1,
+    (int)3
+  },
+  { // Entry 473
+    0x1.d1745d1745d1b0p3,
+    0x1.d1745d1745d1bp-1,
+    (int)4
+  },
+  { // Entry 474
+    0x1.d1745d1745d1b0p4,
+    0x1.d1745d1745d1bp-1,
+    (int)5
+  },
+  { // Entry 475
+    0x1.d1745d1745d1b0p5,
+    0x1.d1745d1745d1bp-1,
+    (int)6
+  },
+  { // Entry 476
+    0x1.d1745d1745d1b0p6,
+    0x1.d1745d1745d1bp-1,
+    (int)7
+  },
+  { // Entry 477
+    0x1.d1745d1745d1b0p7,
+    0x1.d1745d1745d1bp-1,
+    (int)8
+  },
+  { // Entry 478
+    0x1.d1745d1745d1b0p8,
+    0x1.d1745d1745d1bp-1,
+    (int)9
+  },
+  { // Entry 479
+    0x1.d1745d1745d1b0p9,
+    0x1.d1745d1745d1bp-1,
+    (int)10
+  },
+  { // Entry 480
+    0x1.p-10,
+    0x1.0p0,
+    (int)-10
+  },
+  { // Entry 481
+    0x1.p-9,
+    0x1.0p0,
+    (int)-9
+  },
+  { // Entry 482
+    0x1.p-8,
+    0x1.0p0,
+    (int)-8
+  },
+  { // Entry 483
+    0x1.p-7,
+    0x1.0p0,
+    (int)-7
+  },
+  { // Entry 484
+    0x1.p-6,
+    0x1.0p0,
+    (int)-6
+  },
+  { // Entry 485
+    0x1.p-5,
+    0x1.0p0,
+    (int)-5
+  },
+  { // Entry 486
+    0x1.p-4,
+    0x1.0p0,
+    (int)-4
+  },
+  { // Entry 487
+    0x1.p-3,
+    0x1.0p0,
+    (int)-3
+  },
+  { // Entry 488
+    0x1.p-2,
+    0x1.0p0,
+    (int)-2
+  },
+  { // Entry 489
+    0x1.p-1,
+    0x1.0p0,
+    (int)-1
+  },
+  { // Entry 490
+    0x1.p0,
+    0x1.0p0,
+    (int)0
+  },
+  { // Entry 491
+    0x1.p1,
+    0x1.0p0,
+    (int)1
+  },
+  { // Entry 492
+    0x1.p2,
+    0x1.0p0,
+    (int)2
+  },
+  { // Entry 493
+    0x1.p3,
+    0x1.0p0,
+    (int)3
+  },
+  { // Entry 494
+    0x1.p4,
+    0x1.0p0,
+    (int)4
+  },
+  { // Entry 495
+    0x1.p5,
+    0x1.0p0,
+    (int)5
+  },
+  { // Entry 496
+    0x1.p6,
+    0x1.0p0,
+    (int)6
+  },
+  { // Entry 497
+    0x1.p7,
+    0x1.0p0,
+    (int)7
+  },
+  { // Entry 498
+    0x1.p8,
+    0x1.0p0,
+    (int)8
+  },
+  { // Entry 499
+    0x1.p9,
+    0x1.0p0,
+    (int)9
+  },
+  { // Entry 500
+    0x1.p10,
+    0x1.0p0,
+    (int)10
+  },
+  { // Entry 501
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023,
+    (int)-1023
+  },
+  { // Entry 502
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    (int)-1022
+  },
+  { // Entry 503
+    0x1.fffffffffffff0p23,
+    0x1.fffffffffffffp1023,
+    (int)-1000
+  },
+  { // Entry 504
+    0x1.fffffffffffff0p24,
+    0x1.fffffffffffffp1023,
+    (int)-999
+  },
+  { // Entry 505
+    0x1.fffffffffffff0p1013,
+    0x1.fffffffffffffp1023,
+    (int)-10
+  },
+  { // Entry 506
+    0x1.fffffffffffff0p1014,
+    0x1.fffffffffffffp1023,
+    (int)-9
+  },
+  { // Entry 507
+    0x1.fffffffffffff0p1015,
+    0x1.fffffffffffffp1023,
+    (int)-8
+  },
+  { // Entry 508
+    0x1.fffffffffffff0p1016,
+    0x1.fffffffffffffp1023,
+    (int)-7
+  },
+  { // Entry 509
+    0x1.fffffffffffff0p1017,
+    0x1.fffffffffffffp1023,
+    (int)-6
+  },
+  { // Entry 510
+    0x1.fffffffffffff0p1018,
+    0x1.fffffffffffffp1023,
+    (int)-5
+  },
+  { // Entry 511
+    0x1.fffffffffffff0p1019,
+    0x1.fffffffffffffp1023,
+    (int)-4
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1020,
+    0x1.fffffffffffffp1023,
+    (int)-3
+  },
+  { // Entry 513
+    0x1.fffffffffffff0p1021,
+    0x1.fffffffffffffp1023,
+    (int)-2
+  },
+  { // Entry 514
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1023,
+    (int)-1
+  },
+  { // Entry 515
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 516
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 517
+    0x1.p-52,
+    0x1.0p-1074,
+    (int)1022
+  },
+  { // Entry 518
+    0x1.p-74,
+    0x1.0p-1074,
+    (int)1000
+  },
+  { // Entry 519
+    0x1.p-75,
+    0x1.0p-1074,
+    (int)999
+  },
+  { // Entry 520
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 521
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 522
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 523
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 524
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 525
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 526
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 527
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 528
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 529
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 530
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 531
+    0x1.p-1025,
+    0x1.0p-2,
+    (int)-1023
+  },
+  { // Entry 532
+    0x1.p-1024,
+    0x1.0p-2,
+    (int)-1022
+  },
+  { // Entry 533
+    0x1.p-1024,
+    0x1.0p-1,
+    (int)-1023
+  },
+  { // Entry 534
+    0x1.p-1023,
+    0x1.0p-1,
+    (int)-1022
+  },
+  { // Entry 535
+    0x1.80p-1024,
+    0x1.8p-1,
+    (int)-1023
+  },
+  { // Entry 536
+    0x1.80p-1023,
+    0x1.8p-1,
+    (int)-1022
+  },
+  { // Entry 537
+    0.0,
+    0x1.0p-2,
+    (int)-1074
+  },
+  { // Entry 538
+    0.0,
+    0x1.0p-2,
+    (int)-1073
+  },
+  { // Entry 539
+    0.0,
+    0x1.0p-1,
+    (int)-1074
+  },
+  { // Entry 540
+    0x1.p-1074,
+    0x1.0p-1,
+    (int)-1073
+  },
+  { // Entry 541
+    0.0,
+    0x1.8p-1,
+    (int)-1074
+  },
+  { // Entry 542
+    0x1.80p-1074,
+    0x1.8p-1,
+    (int)-1073
+  },
+  { // Entry 543
+    0x1.p1023,
+    0x1.0p0,
+    (int)1023
+  },
+  { // Entry 544
+    0x1.p1022,
+    0x1.0p0,
+    (int)1022
+  },
+  { // Entry 545
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 546
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 547
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 548
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 549
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 550
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 551
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 552
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 553
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 554
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 555
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 556
+    0x1.p-1063,
+    0x1.0p-1074,
+    (int)11
+  },
+  { // Entry 557
+    0x1.p-1062,
+    0x1.0p-1074,
+    (int)12
+  },
+  { // Entry 558
+    0x1.p-1061,
+    0x1.0p-1074,
+    (int)13
+  },
+  { // Entry 559
+    0x1.p-1060,
+    0x1.0p-1074,
+    (int)14
+  },
+  { // Entry 560
+    0x1.p-1059,
+    0x1.0p-1074,
+    (int)15
+  },
+  { // Entry 561
+    0x1.p-1058,
+    0x1.0p-1074,
+    (int)16
+  },
+  { // Entry 562
+    0x1.p-1057,
+    0x1.0p-1074,
+    (int)17
+  },
+  { // Entry 563
+    0x1.p-1056,
+    0x1.0p-1074,
+    (int)18
+  },
+  { // Entry 564
+    0x1.p-1055,
+    0x1.0p-1074,
+    (int)19
+  },
+  { // Entry 565
+    0x1.p-1054,
+    0x1.0p-1074,
+    (int)20
+  },
+  { // Entry 566
+    0x1.p-1053,
+    0x1.0p-1074,
+    (int)21
+  },
+  { // Entry 567
+    0x1.p-1052,
+    0x1.0p-1074,
+    (int)22
+  },
+  { // Entry 568
+    0x1.p-1051,
+    0x1.0p-1074,
+    (int)23
+  },
+  { // Entry 569
+    0x1.p-1050,
+    0x1.0p-1074,
+    (int)24
+  },
+  { // Entry 570
+    0x1.p-1049,
+    0x1.0p-1074,
+    (int)25
+  },
+  { // Entry 571
+    0x1.p-1048,
+    0x1.0p-1074,
+    (int)26
+  },
+  { // Entry 572
+    0x1.p-1047,
+    0x1.0p-1074,
+    (int)27
+  },
+  { // Entry 573
+    0x1.p-1046,
+    0x1.0p-1074,
+    (int)28
+  },
+  { // Entry 574
+    0x1.p-1045,
+    0x1.0p-1074,
+    (int)29
+  },
+  { // Entry 575
+    0x1.p-1044,
+    0x1.0p-1074,
+    (int)30
+  },
+  { // Entry 576
+    0x1.p-1043,
+    0x1.0p-1074,
+    (int)31
+  },
+  { // Entry 577
+    0x1.p-1042,
+    0x1.0p-1074,
+    (int)32
+  },
+  { // Entry 578
+    0x1.p-1041,
+    0x1.0p-1074,
+    (int)33
+  },
+  { // Entry 579
+    0x1.p-1040,
+    0x1.0p-1074,
+    (int)34
+  },
+  { // Entry 580
+    0x1.p-1039,
+    0x1.0p-1074,
+    (int)35
+  },
+  { // Entry 581
+    0x1.p-1038,
+    0x1.0p-1074,
+    (int)36
+  },
+  { // Entry 582
+    0x1.p-1037,
+    0x1.0p-1074,
+    (int)37
+  },
+  { // Entry 583
+    0x1.p-1036,
+    0x1.0p-1074,
+    (int)38
+  },
+  { // Entry 584
+    0x1.p-1035,
+    0x1.0p-1074,
+    (int)39
+  },
+  { // Entry 585
+    0x1.p-1034,
+    0x1.0p-1074,
+    (int)40
+  },
+  { // Entry 586
+    0x1.p-1033,
+    0x1.0p-1074,
+    (int)41
+  },
+  { // Entry 587
+    0x1.p-1032,
+    0x1.0p-1074,
+    (int)42
+  },
+  { // Entry 588
+    0x1.p-1031,
+    0x1.0p-1074,
+    (int)43
+  },
+  { // Entry 589
+    0x1.p-1030,
+    0x1.0p-1074,
+    (int)44
+  },
+  { // Entry 590
+    0x1.p-1029,
+    0x1.0p-1074,
+    (int)45
+  },
+  { // Entry 591
+    0x1.p-1028,
+    0x1.0p-1074,
+    (int)46
+  },
+  { // Entry 592
+    0x1.p-1027,
+    0x1.0p-1074,
+    (int)47
+  },
+  { // Entry 593
+    0x1.p-1026,
+    0x1.0p-1074,
+    (int)48
+  },
+  { // Entry 594
+    0x1.p-1025,
+    0x1.0p-1074,
+    (int)49
+  },
+  { // Entry 595
+    0x1.p-1024,
+    0x1.0p-1074,
+    (int)50
+  },
+  { // Entry 596
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 597
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 598
+    0x1.p-1021,
+    0x1.0p-1074,
+    (int)53
+  },
+  { // Entry 599
+    0x1.p-1020,
+    0x1.0p-1074,
+    (int)54
+  },
+  { // Entry 600
+    0x1.p-1019,
+    0x1.0p-1074,
+    (int)55
+  },
+  { // Entry 601
+    0x1.p-1018,
+    0x1.0p-1074,
+    (int)56
+  },
+  { // Entry 602
+    0x1.p-1017,
+    0x1.0p-1074,
+    (int)57
+  },
+  { // Entry 603
+    0x1.p-1016,
+    0x1.0p-1074,
+    (int)58
+  },
+  { // Entry 604
+    0x1.p-1015,
+    0x1.0p-1074,
+    (int)59
+  },
+  { // Entry 605
+    0x1.p-1014,
+    0x1.0p-1074,
+    (int)60
+  },
+  { // Entry 606
+    0x1.p-1013,
+    0x1.0p-1074,
+    (int)61
+  },
+  { // Entry 607
+    0x1.p-1012,
+    0x1.0p-1074,
+    (int)62
+  },
+  { // Entry 608
+    0x1.p-1011,
+    0x1.0p-1074,
+    (int)63
+  },
+  { // Entry 609
+    0x1.p-1010,
+    0x1.0p-1074,
+    (int)64
+  },
+  { // Entry 610
+    0x1.p-1009,
+    0x1.0p-1074,
+    (int)65
+  },
+  { // Entry 611
+    0x1.p-1008,
+    0x1.0p-1074,
+    (int)66
+  },
+  { // Entry 612
+    0x1.p-1007,
+    0x1.0p-1074,
+    (int)67
+  },
+  { // Entry 613
+    0x1.p-1006,
+    0x1.0p-1074,
+    (int)68
+  },
+  { // Entry 614
+    0x1.p-1005,
+    0x1.0p-1074,
+    (int)69
+  },
+  { // Entry 615
+    0x1.p-1004,
+    0x1.0p-1074,
+    (int)70
+  },
+  { // Entry 616
+    0x1.p-1003,
+    0x1.0p-1074,
+    (int)71
+  },
+  { // Entry 617
+    0x1.p-1002,
+    0x1.0p-1074,
+    (int)72
+  },
+  { // Entry 618
+    0x1.p-1001,
+    0x1.0p-1074,
+    (int)73
+  },
+  { // Entry 619
+    0x1.p-1000,
+    0x1.0p-1074,
+    (int)74
+  },
+  { // Entry 620
+    0x1.p-999,
+    0x1.0p-1074,
+    (int)75
+  },
+  { // Entry 621
+    0x1.p-998,
+    0x1.0p-1074,
+    (int)76
+  },
+  { // Entry 622
+    0x1.p-997,
+    0x1.0p-1074,
+    (int)77
+  },
+  { // Entry 623
+    0x1.p-996,
+    0x1.0p-1074,
+    (int)78
+  },
+  { // Entry 624
+    0x1.p-995,
+    0x1.0p-1074,
+    (int)79
+  },
+  { // Entry 625
+    0x1.p-994,
+    0x1.0p-1074,
+    (int)80
+  },
+  { // Entry 626
+    0x1.p-993,
+    0x1.0p-1074,
+    (int)81
+  },
+  { // Entry 627
+    0x1.p-992,
+    0x1.0p-1074,
+    (int)82
+  },
+  { // Entry 628
+    0x1.p-991,
+    0x1.0p-1074,
+    (int)83
+  },
+  { // Entry 629
+    0x1.p-990,
+    0x1.0p-1074,
+    (int)84
+  },
+  { // Entry 630
+    0x1.p-989,
+    0x1.0p-1074,
+    (int)85
+  },
+  { // Entry 631
+    0x1.p-988,
+    0x1.0p-1074,
+    (int)86
+  },
+  { // Entry 632
+    0x1.p-987,
+    0x1.0p-1074,
+    (int)87
+  },
+  { // Entry 633
+    0x1.p-986,
+    0x1.0p-1074,
+    (int)88
+  },
+  { // Entry 634
+    0x1.p-985,
+    0x1.0p-1074,
+    (int)89
+  },
+  { // Entry 635
+    0x1.p-984,
+    0x1.0p-1074,
+    (int)90
+  },
+  { // Entry 636
+    0x1.p-983,
+    0x1.0p-1074,
+    (int)91
+  },
+  { // Entry 637
+    0x1.p-982,
+    0x1.0p-1074,
+    (int)92
+  },
+  { // Entry 638
+    0x1.p-981,
+    0x1.0p-1074,
+    (int)93
+  },
+  { // Entry 639
+    0x1.p-980,
+    0x1.0p-1074,
+    (int)94
+  },
+  { // Entry 640
+    0x1.p-979,
+    0x1.0p-1074,
+    (int)95
+  },
+  { // Entry 641
+    0x1.p-978,
+    0x1.0p-1074,
+    (int)96
+  },
+  { // Entry 642
+    0x1.p-977,
+    0x1.0p-1074,
+    (int)97
+  },
+  { // Entry 643
+    0x1.p-976,
+    0x1.0p-1074,
+    (int)98
+  },
+  { // Entry 644
+    0x1.p-975,
+    0x1.0p-1074,
+    (int)99
+  },
+  { // Entry 645
+    0x1.p-974,
+    0x1.0p-1074,
+    (int)100
+  },
+  { // Entry 646
+    0x1.p-973,
+    0x1.0p-1074,
+    (int)101
+  },
+  { // Entry 647
+    0x1.p-972,
+    0x1.0p-1074,
+    (int)102
+  },
+  { // Entry 648
+    0x1.p-971,
+    0x1.0p-1074,
+    (int)103
+  },
+  { // Entry 649
+    0x1.p-970,
+    0x1.0p-1074,
+    (int)104
+  },
+  { // Entry 650
+    0x1.p-969,
+    0x1.0p-1074,
+    (int)105
+  },
+  { // Entry 651
+    0x1.p-968,
+    0x1.0p-1074,
+    (int)106
+  },
+  { // Entry 652
+    0x1.p-967,
+    0x1.0p-1074,
+    (int)107
+  },
+  { // Entry 653
+    0x1.p-966,
+    0x1.0p-1074,
+    (int)108
+  },
+  { // Entry 654
+    0x1.p-965,
+    0x1.0p-1074,
+    (int)109
+  },
+  { // Entry 655
+    0x1.p-964,
+    0x1.0p-1074,
+    (int)110
+  },
+  { // Entry 656
+    0x1.p-963,
+    0x1.0p-1074,
+    (int)111
+  },
+  { // Entry 657
+    0x1.p-962,
+    0x1.0p-1074,
+    (int)112
+  },
+  { // Entry 658
+    0x1.p-961,
+    0x1.0p-1074,
+    (int)113
+  },
+  { // Entry 659
+    0x1.p-960,
+    0x1.0p-1074,
+    (int)114
+  },
+  { // Entry 660
+    0x1.p-959,
+    0x1.0p-1074,
+    (int)115
+  },
+  { // Entry 661
+    0x1.p-958,
+    0x1.0p-1074,
+    (int)116
+  },
+  { // Entry 662
+    0x1.p-957,
+    0x1.0p-1074,
+    (int)117
+  },
+  { // Entry 663
+    0x1.p-956,
+    0x1.0p-1074,
+    (int)118
+  },
+  { // Entry 664
+    0x1.p-955,
+    0x1.0p-1074,
+    (int)119
+  },
+  { // Entry 665
+    0x1.p-954,
+    0x1.0p-1074,
+    (int)120
+  },
+  { // Entry 666
+    0x1.p-953,
+    0x1.0p-1074,
+    (int)121
+  },
+  { // Entry 667
+    0x1.p-952,
+    0x1.0p-1074,
+    (int)122
+  },
+  { // Entry 668
+    0x1.p-951,
+    0x1.0p-1074,
+    (int)123
+  },
+  { // Entry 669
+    0x1.p-950,
+    0x1.0p-1074,
+    (int)124
+  },
+  { // Entry 670
+    0x1.p-949,
+    0x1.0p-1074,
+    (int)125
+  },
+  { // Entry 671
+    0x1.p-948,
+    0x1.0p-1074,
+    (int)126
+  },
+  { // Entry 672
+    0x1.p-947,
+    0x1.0p-1074,
+    (int)127
+  },
+  { // Entry 673
+    0x1.p-946,
+    0x1.0p-1074,
+    (int)128
+  },
+  { // Entry 674
+    0x1.p-945,
+    0x1.0p-1074,
+    (int)129
+  },
+  { // Entry 675
+    0x1.p-944,
+    0x1.0p-1074,
+    (int)130
+  },
+  { // Entry 676
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 677
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 678
+    0x1.ffffffffffffe0p-1021,
+    0x1.ffffffffffffep-1023,
+    (int)2
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1020,
+    0x1.ffffffffffffep-1023,
+    (int)3
+  },
+  { // Entry 680
+    0x1.ffffffffffffe0p-1019,
+    0x1.ffffffffffffep-1023,
+    (int)4
+  },
+  { // Entry 681
+    0x1.ffffffffffffe0p-1018,
+    0x1.ffffffffffffep-1023,
+    (int)5
+  },
+  { // Entry 682
+    0x1.ffffffffffffe0p-1017,
+    0x1.ffffffffffffep-1023,
+    (int)6
+  },
+  { // Entry 683
+    0x1.ffffffffffffe0p-1016,
+    0x1.ffffffffffffep-1023,
+    (int)7
+  },
+  { // Entry 684
+    0x1.ffffffffffffe0p-1015,
+    0x1.ffffffffffffep-1023,
+    (int)8
+  },
+  { // Entry 685
+    0x1.ffffffffffffe0p-1014,
+    0x1.ffffffffffffep-1023,
+    (int)9
+  },
+  { // Entry 686
+    0x1.ffffffffffffe0p-1013,
+    0x1.ffffffffffffep-1023,
+    (int)10
+  },
+  { // Entry 687
+    0x1.ffffffffffffe0p-1012,
+    0x1.ffffffffffffep-1023,
+    (int)11
+  },
+  { // Entry 688
+    0x1.ffffffffffffe0p-1011,
+    0x1.ffffffffffffep-1023,
+    (int)12
+  },
+  { // Entry 689
+    0x1.ffffffffffffe0p-1010,
+    0x1.ffffffffffffep-1023,
+    (int)13
+  },
+  { // Entry 690
+    0x1.ffffffffffffe0p-1009,
+    0x1.ffffffffffffep-1023,
+    (int)14
+  },
+  { // Entry 691
+    0x1.ffffffffffffe0p-1008,
+    0x1.ffffffffffffep-1023,
+    (int)15
+  },
+  { // Entry 692
+    0x1.ffffffffffffe0p-1007,
+    0x1.ffffffffffffep-1023,
+    (int)16
+  },
+  { // Entry 693
+    0x1.ffffffffffffe0p-1006,
+    0x1.ffffffffffffep-1023,
+    (int)17
+  },
+  { // Entry 694
+    0x1.ffffffffffffe0p-1005,
+    0x1.ffffffffffffep-1023,
+    (int)18
+  },
+  { // Entry 695
+    0x1.ffffffffffffe0p-1004,
+    0x1.ffffffffffffep-1023,
+    (int)19
+  },
+  { // Entry 696
+    0x1.ffffffffffffe0p-1003,
+    0x1.ffffffffffffep-1023,
+    (int)20
+  },
+  { // Entry 697
+    0x1.ffffffffffffe0p-1002,
+    0x1.ffffffffffffep-1023,
+    (int)21
+  },
+  { // Entry 698
+    0x1.ffffffffffffe0p-1001,
+    0x1.ffffffffffffep-1023,
+    (int)22
+  },
+  { // Entry 699
+    0x1.ffffffffffffe0p-1000,
+    0x1.ffffffffffffep-1023,
+    (int)23
+  },
+  { // Entry 700
+    0x1.ffffffffffffe0p-999,
+    0x1.ffffffffffffep-1023,
+    (int)24
+  },
+  { // Entry 701
+    0x1.ffffffffffffe0p-998,
+    0x1.ffffffffffffep-1023,
+    (int)25
+  },
+  { // Entry 702
+    0x1.ffffffffffffe0p-997,
+    0x1.ffffffffffffep-1023,
+    (int)26
+  },
+  { // Entry 703
+    0x1.ffffffffffffe0p-996,
+    0x1.ffffffffffffep-1023,
+    (int)27
+  },
+  { // Entry 704
+    0x1.ffffffffffffe0p-995,
+    0x1.ffffffffffffep-1023,
+    (int)28
+  },
+  { // Entry 705
+    0x1.ffffffffffffe0p-994,
+    0x1.ffffffffffffep-1023,
+    (int)29
+  },
+  { // Entry 706
+    0x1.ffffffffffffe0p-993,
+    0x1.ffffffffffffep-1023,
+    (int)30
+  },
+  { // Entry 707
+    0x1.ffffffffffffe0p-992,
+    0x1.ffffffffffffep-1023,
+    (int)31
+  },
+  { // Entry 708
+    0x1.ffffffffffffe0p-991,
+    0x1.ffffffffffffep-1023,
+    (int)32
+  },
+  { // Entry 709
+    0x1.ffffffffffffe0p-990,
+    0x1.ffffffffffffep-1023,
+    (int)33
+  },
+  { // Entry 710
+    0x1.ffffffffffffe0p-989,
+    0x1.ffffffffffffep-1023,
+    (int)34
+  },
+  { // Entry 711
+    0x1.ffffffffffffe0p-988,
+    0x1.ffffffffffffep-1023,
+    (int)35
+  },
+  { // Entry 712
+    0x1.ffffffffffffe0p-987,
+    0x1.ffffffffffffep-1023,
+    (int)36
+  },
+  { // Entry 713
+    0x1.ffffffffffffe0p-986,
+    0x1.ffffffffffffep-1023,
+    (int)37
+  },
+  { // Entry 714
+    0x1.ffffffffffffe0p-985,
+    0x1.ffffffffffffep-1023,
+    (int)38
+  },
+  { // Entry 715
+    0x1.ffffffffffffe0p-984,
+    0x1.ffffffffffffep-1023,
+    (int)39
+  },
+  { // Entry 716
+    0x1.ffffffffffffe0p-983,
+    0x1.ffffffffffffep-1023,
+    (int)40
+  },
+  { // Entry 717
+    0x1.ffffffffffffe0p-982,
+    0x1.ffffffffffffep-1023,
+    (int)41
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0p-981,
+    0x1.ffffffffffffep-1023,
+    (int)42
+  },
+  { // Entry 719
+    0x1.ffffffffffffe0p-980,
+    0x1.ffffffffffffep-1023,
+    (int)43
+  },
+  { // Entry 720
+    0x1.ffffffffffffe0p-979,
+    0x1.ffffffffffffep-1023,
+    (int)44
+  },
+  { // Entry 721
+    0x1.ffffffffffffe0p-978,
+    0x1.ffffffffffffep-1023,
+    (int)45
+  },
+  { // Entry 722
+    0x1.ffffffffffffe0p-977,
+    0x1.ffffffffffffep-1023,
+    (int)46
+  },
+  { // Entry 723
+    0x1.ffffffffffffe0p-976,
+    0x1.ffffffffffffep-1023,
+    (int)47
+  },
+  { // Entry 724
+    0x1.ffffffffffffe0p-975,
+    0x1.ffffffffffffep-1023,
+    (int)48
+  },
+  { // Entry 725
+    0x1.ffffffffffffe0p-974,
+    0x1.ffffffffffffep-1023,
+    (int)49
+  },
+  { // Entry 726
+    0x1.ffffffffffffe0p-973,
+    0x1.ffffffffffffep-1023,
+    (int)50
+  },
+  { // Entry 727
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 728
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 729
+    0x1.ffffffffffffe0p-970,
+    0x1.ffffffffffffep-1023,
+    (int)53
+  },
+  { // Entry 730
+    0x1.ffffffffffffe0p-969,
+    0x1.ffffffffffffep-1023,
+    (int)54
+  },
+  { // Entry 731
+    0x1.ffffffffffffe0p-968,
+    0x1.ffffffffffffep-1023,
+    (int)55
+  },
+  { // Entry 732
+    0x1.ffffffffffffe0p-967,
+    0x1.ffffffffffffep-1023,
+    (int)56
+  },
+  { // Entry 733
+    0x1.ffffffffffffe0p-966,
+    0x1.ffffffffffffep-1023,
+    (int)57
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-965,
+    0x1.ffffffffffffep-1023,
+    (int)58
+  },
+  { // Entry 735
+    0x1.ffffffffffffe0p-964,
+    0x1.ffffffffffffep-1023,
+    (int)59
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0p-963,
+    0x1.ffffffffffffep-1023,
+    (int)60
+  },
+  { // Entry 737
+    0x1.ffffffffffffe0p-962,
+    0x1.ffffffffffffep-1023,
+    (int)61
+  },
+  { // Entry 738
+    0x1.ffffffffffffe0p-961,
+    0x1.ffffffffffffep-1023,
+    (int)62
+  },
+  { // Entry 739
+    0x1.ffffffffffffe0p-960,
+    0x1.ffffffffffffep-1023,
+    (int)63
+  },
+  { // Entry 740
+    0x1.ffffffffffffe0p-959,
+    0x1.ffffffffffffep-1023,
+    (int)64
+  },
+  { // Entry 741
+    0x1.ffffffffffffe0p-958,
+    0x1.ffffffffffffep-1023,
+    (int)65
+  },
+  { // Entry 742
+    0x1.ffffffffffffe0p-957,
+    0x1.ffffffffffffep-1023,
+    (int)66
+  },
+  { // Entry 743
+    0x1.ffffffffffffe0p-956,
+    0x1.ffffffffffffep-1023,
+    (int)67
+  },
+  { // Entry 744
+    0x1.ffffffffffffe0p-955,
+    0x1.ffffffffffffep-1023,
+    (int)68
+  },
+  { // Entry 745
+    0x1.ffffffffffffe0p-954,
+    0x1.ffffffffffffep-1023,
+    (int)69
+  },
+  { // Entry 746
+    0x1.ffffffffffffe0p-953,
+    0x1.ffffffffffffep-1023,
+    (int)70
+  },
+  { // Entry 747
+    0x1.ffffffffffffe0p-952,
+    0x1.ffffffffffffep-1023,
+    (int)71
+  },
+  { // Entry 748
+    0x1.ffffffffffffe0p-951,
+    0x1.ffffffffffffep-1023,
+    (int)72
+  },
+  { // Entry 749
+    0x1.ffffffffffffe0p-950,
+    0x1.ffffffffffffep-1023,
+    (int)73
+  },
+  { // Entry 750
+    0x1.ffffffffffffe0p-949,
+    0x1.ffffffffffffep-1023,
+    (int)74
+  },
+  { // Entry 751
+    0x1.ffffffffffffe0p-948,
+    0x1.ffffffffffffep-1023,
+    (int)75
+  },
+  { // Entry 752
+    0x1.ffffffffffffe0p-947,
+    0x1.ffffffffffffep-1023,
+    (int)76
+  },
+  { // Entry 753
+    0x1.ffffffffffffe0p-946,
+    0x1.ffffffffffffep-1023,
+    (int)77
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0p-945,
+    0x1.ffffffffffffep-1023,
+    (int)78
+  },
+  { // Entry 755
+    0x1.ffffffffffffe0p-944,
+    0x1.ffffffffffffep-1023,
+    (int)79
+  },
+  { // Entry 756
+    0x1.ffffffffffffe0p-943,
+    0x1.ffffffffffffep-1023,
+    (int)80
+  },
+  { // Entry 757
+    0x1.ffffffffffffe0p-942,
+    0x1.ffffffffffffep-1023,
+    (int)81
+  },
+  { // Entry 758
+    0x1.ffffffffffffe0p-941,
+    0x1.ffffffffffffep-1023,
+    (int)82
+  },
+  { // Entry 759
+    0x1.ffffffffffffe0p-940,
+    0x1.ffffffffffffep-1023,
+    (int)83
+  },
+  { // Entry 760
+    0x1.ffffffffffffe0p-939,
+    0x1.ffffffffffffep-1023,
+    (int)84
+  },
+  { // Entry 761
+    0x1.ffffffffffffe0p-938,
+    0x1.ffffffffffffep-1023,
+    (int)85
+  },
+  { // Entry 762
+    0x1.ffffffffffffe0p-937,
+    0x1.ffffffffffffep-1023,
+    (int)86
+  },
+  { // Entry 763
+    0x1.ffffffffffffe0p-936,
+    0x1.ffffffffffffep-1023,
+    (int)87
+  },
+  { // Entry 764
+    0x1.ffffffffffffe0p-935,
+    0x1.ffffffffffffep-1023,
+    (int)88
+  },
+  { // Entry 765
+    0x1.ffffffffffffe0p-934,
+    0x1.ffffffffffffep-1023,
+    (int)89
+  },
+  { // Entry 766
+    0x1.ffffffffffffe0p-933,
+    0x1.ffffffffffffep-1023,
+    (int)90
+  },
+  { // Entry 767
+    0x1.ffffffffffffe0p-932,
+    0x1.ffffffffffffep-1023,
+    (int)91
+  },
+  { // Entry 768
+    0x1.ffffffffffffe0p-931,
+    0x1.ffffffffffffep-1023,
+    (int)92
+  },
+  { // Entry 769
+    0x1.ffffffffffffe0p-930,
+    0x1.ffffffffffffep-1023,
+    (int)93
+  },
+  { // Entry 770
+    0x1.ffffffffffffe0p-929,
+    0x1.ffffffffffffep-1023,
+    (int)94
+  },
+  { // Entry 771
+    0x1.ffffffffffffe0p-928,
+    0x1.ffffffffffffep-1023,
+    (int)95
+  },
+  { // Entry 772
+    0x1.ffffffffffffe0p-927,
+    0x1.ffffffffffffep-1023,
+    (int)96
+  },
+  { // Entry 773
+    0x1.ffffffffffffe0p-926,
+    0x1.ffffffffffffep-1023,
+    (int)97
+  },
+  { // Entry 774
+    0x1.ffffffffffffe0p-925,
+    0x1.ffffffffffffep-1023,
+    (int)98
+  },
+  { // Entry 775
+    0x1.ffffffffffffe0p-924,
+    0x1.ffffffffffffep-1023,
+    (int)99
+  },
+  { // Entry 776
+    0x1.ffffffffffffe0p-923,
+    0x1.ffffffffffffep-1023,
+    (int)100
+  },
+  { // Entry 777
+    0x1.ffffffffffffe0p-922,
+    0x1.ffffffffffffep-1023,
+    (int)101
+  },
+  { // Entry 778
+    0x1.ffffffffffffe0p-921,
+    0x1.ffffffffffffep-1023,
+    (int)102
+  },
+  { // Entry 779
+    0x1.ffffffffffffe0p-920,
+    0x1.ffffffffffffep-1023,
+    (int)103
+  },
+  { // Entry 780
+    0x1.ffffffffffffe0p-919,
+    0x1.ffffffffffffep-1023,
+    (int)104
+  },
+  { // Entry 781
+    0x1.ffffffffffffe0p-918,
+    0x1.ffffffffffffep-1023,
+    (int)105
+  },
+  { // Entry 782
+    0x1.ffffffffffffe0p-917,
+    0x1.ffffffffffffep-1023,
+    (int)106
+  },
+  { // Entry 783
+    0x1.ffffffffffffe0p-916,
+    0x1.ffffffffffffep-1023,
+    (int)107
+  },
+  { // Entry 784
+    0x1.ffffffffffffe0p-915,
+    0x1.ffffffffffffep-1023,
+    (int)108
+  },
+  { // Entry 785
+    0x1.ffffffffffffe0p-914,
+    0x1.ffffffffffffep-1023,
+    (int)109
+  },
+  { // Entry 786
+    0x1.ffffffffffffe0p-913,
+    0x1.ffffffffffffep-1023,
+    (int)110
+  },
+  { // Entry 787
+    0x1.ffffffffffffe0p-912,
+    0x1.ffffffffffffep-1023,
+    (int)111
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0p-911,
+    0x1.ffffffffffffep-1023,
+    (int)112
+  },
+  { // Entry 789
+    0x1.ffffffffffffe0p-910,
+    0x1.ffffffffffffep-1023,
+    (int)113
+  },
+  { // Entry 790
+    0x1.ffffffffffffe0p-909,
+    0x1.ffffffffffffep-1023,
+    (int)114
+  },
+  { // Entry 791
+    0x1.ffffffffffffe0p-908,
+    0x1.ffffffffffffep-1023,
+    (int)115
+  },
+  { // Entry 792
+    0x1.ffffffffffffe0p-907,
+    0x1.ffffffffffffep-1023,
+    (int)116
+  },
+  { // Entry 793
+    0x1.ffffffffffffe0p-906,
+    0x1.ffffffffffffep-1023,
+    (int)117
+  },
+  { // Entry 794
+    0x1.ffffffffffffe0p-905,
+    0x1.ffffffffffffep-1023,
+    (int)118
+  },
+  { // Entry 795
+    0x1.ffffffffffffe0p-904,
+    0x1.ffffffffffffep-1023,
+    (int)119
+  },
+  { // Entry 796
+    0x1.ffffffffffffe0p-903,
+    0x1.ffffffffffffep-1023,
+    (int)120
+  },
+  { // Entry 797
+    0x1.ffffffffffffe0p-902,
+    0x1.ffffffffffffep-1023,
+    (int)121
+  },
+  { // Entry 798
+    0x1.ffffffffffffe0p-901,
+    0x1.ffffffffffffep-1023,
+    (int)122
+  },
+  { // Entry 799
+    0x1.ffffffffffffe0p-900,
+    0x1.ffffffffffffep-1023,
+    (int)123
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0p-899,
+    0x1.ffffffffffffep-1023,
+    (int)124
+  },
+  { // Entry 801
+    0x1.ffffffffffffe0p-898,
+    0x1.ffffffffffffep-1023,
+    (int)125
+  },
+  { // Entry 802
+    0x1.ffffffffffffe0p-897,
+    0x1.ffffffffffffep-1023,
+    (int)126
+  },
+  { // Entry 803
+    0x1.ffffffffffffe0p-896,
+    0x1.ffffffffffffep-1023,
+    (int)127
+  },
+  { // Entry 804
+    0x1.ffffffffffffe0p-895,
+    0x1.ffffffffffffep-1023,
+    (int)128
+  },
+  { // Entry 805
+    0x1.ffffffffffffe0p-894,
+    0x1.ffffffffffffep-1023,
+    (int)129
+  },
+  { // Entry 806
+    0x1.ffffffffffffe0p-893,
+    0x1.ffffffffffffep-1023,
+    (int)130
+  },
+  { // Entry 807
+    0x1.p0,
+    0x1.0p-1074,
+    (int)1074
+  },
+  { // Entry 808
+    0x1.p-1,
+    0x1.0p-1074,
+    (int)1073
+  },
+  { // Entry 809
+    0x1.ffffffffffffe0p51,
+    0x1.ffffffffffffep-1023,
+    (int)1074
+  },
+  { // Entry 810
+    0x1.ffffffffffffe0p50,
+    0x1.ffffffffffffep-1023,
+    (int)1073
+  },
+  { // Entry 811
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 812
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 813
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 814
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 815
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 816
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 817
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 818
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 819
+    0.0,
+    0.0,
+    (int)0
+  },
+  { // Entry 820
+    -0.0,
+    -0.0,
+    (int)0
+  },
+  { // Entry 821
+    0.0,
+    0.0,
+    (int)1
+  },
+  { // Entry 822
+    -0.0,
+    -0.0,
+    (int)1
+  },
+  { // Entry 823
+    0.0,
+    0.0,
+    (int)-1
+  },
+  { // Entry 824
+    -0.0,
+    -0.0,
+    (int)-1
+  },
+  { // Entry 825
+    0.0,
+    0.0,
+    (int)127
+  },
+  { // Entry 826
+    -0.0,
+    -0.0,
+    (int)127
+  },
+  { // Entry 827
+    0.0,
+    0.0,
+    (int)-127
+  },
+  { // Entry 828
+    -0.0,
+    -0.0,
+    (int)-127
+  },
+  { // Entry 829
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)0
+  },
+  { // Entry 830
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 831
+    0x1.p-1022,
+    0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 832
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 833
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 834
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 835
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 836
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 837
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 838
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)0
+  },
+  { // Entry 839
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)1
+  },
+  { // Entry 840
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)1
+  },
+  { // Entry 841
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 842
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 843
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)127
+  },
+  { // Entry 844
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)127
+  },
+  { // Entry 845
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 846
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 847
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 848
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 849
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 850
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 851
+    HUGE_VAL,
+    0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 852
+    HUGE_VAL,
+    0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 853
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 854
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 855
+    0x1.p-1023,
+    0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 856
+    0x1.ffffffffffffe0p-1024,
+    0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 857
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 858
+    -0.0,
+    -0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 859
+    -0x1.ffffffffffffe0p-1024,
+    -0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 860
+    -0x1.p-1023,
+    -0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 861
+    0.0,
+    0x1.fffffffffffffp1023,
+    (int)-40000
+  },
+  { // Entry 862
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/scalbnf_intel_data.h b/tests/math_data/scalbnf_intel_data.h
new file mode 100644
index 0000000..a1ffec7
--- /dev/null
+++ b/tests/math_data/scalbnf_intel_data.h
@@ -0,0 +1,4288 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_2_t<float, float, int> g_scalbnf_intel_data[] = {
+  { // Entry 0
+    -0.0f,
+    -0x1.p-149,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.555554p-128,
+    -0x1.555554p-2,
+    (int)-126
+  },
+  { // Entry 2
+    -0x1.6db6dcp-128,
+    -0x1.6db6dcp-1,
+    (int)-127
+  },
+  { // Entry 3
+    -0x1.8e38e4p-128,
+    -0x1.8e38e4p-1,
+    (int)-127
+  },
+  { // Entry 4
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 5
+    0.0f,
+    0x1.p-149,
+    (int)-10
+  },
+  { // Entry 6
+    0x1.29e412p-127,
+    0x1.29e412p-7,
+    (int)-120
+  },
+  { // Entry 7
+    0.0f,
+    0x1.dddddep-2,
+    (int)-148
+  },
+  { // Entry 8
+    0.0f,
+    0x1.ffff60p-127,
+    (int)-23
+  },
+  { // Entry 9
+    0.0f,
+    0x1.ffff84p-127,
+    (int)-23
+  },
+  { // Entry 10
+    0x1.fffff8p-137,
+    0x1.fffff8p-127,
+    (int)-10
+  },
+  { // Entry 11
+    0.0f,
+    0x1.fffffep127,
+    (int)(-2147483647-1)
+  },
+  { // Entry 12
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)2147483647
+  },
+  { // Entry 13
+    -0x1.p-10,
+    -0x1.p0,
+    (int)-10
+  },
+  { // Entry 14
+    -0x1.p-9,
+    -0x1.p0,
+    (int)-9
+  },
+  { // Entry 15
+    -0x1.p-8,
+    -0x1.p0,
+    (int)-8
+  },
+  { // Entry 16
+    -0x1.p-7,
+    -0x1.p0,
+    (int)-7
+  },
+  { // Entry 17
+    -0x1.p-6,
+    -0x1.p0,
+    (int)-6
+  },
+  { // Entry 18
+    -0x1.p-5,
+    -0x1.p0,
+    (int)-5
+  },
+  { // Entry 19
+    -0x1.p-4,
+    -0x1.p0,
+    (int)-4
+  },
+  { // Entry 20
+    -0x1.p-3,
+    -0x1.p0,
+    (int)-3
+  },
+  { // Entry 21
+    -0x1.p-2,
+    -0x1.p0,
+    (int)-2
+  },
+  { // Entry 22
+    -0x1.p-1,
+    -0x1.p0,
+    (int)-1
+  },
+  { // Entry 23
+    -0x1.p0,
+    -0x1.p0,
+    (int)0
+  },
+  { // Entry 24
+    -0x1.p1,
+    -0x1.p0,
+    (int)1
+  },
+  { // Entry 25
+    -0x1.p2,
+    -0x1.p0,
+    (int)2
+  },
+  { // Entry 26
+    -0x1.p3,
+    -0x1.p0,
+    (int)3
+  },
+  { // Entry 27
+    -0x1.p4,
+    -0x1.p0,
+    (int)4
+  },
+  { // Entry 28
+    -0x1.p5,
+    -0x1.p0,
+    (int)5
+  },
+  { // Entry 29
+    -0x1.p6,
+    -0x1.p0,
+    (int)6
+  },
+  { // Entry 30
+    -0x1.p7,
+    -0x1.p0,
+    (int)7
+  },
+  { // Entry 31
+    -0x1.p8,
+    -0x1.p0,
+    (int)8
+  },
+  { // Entry 32
+    -0x1.p9,
+    -0x1.p0,
+    (int)9
+  },
+  { // Entry 33
+    -0x1.p10,
+    -0x1.p0,
+    (int)10
+  },
+  { // Entry 34
+    -0x1.d1745cp-11,
+    -0x1.d1745cp-1,
+    (int)-10
+  },
+  { // Entry 35
+    -0x1.d1745cp-10,
+    -0x1.d1745cp-1,
+    (int)-9
+  },
+  { // Entry 36
+    -0x1.d1745cp-9,
+    -0x1.d1745cp-1,
+    (int)-8
+  },
+  { // Entry 37
+    -0x1.d1745cp-8,
+    -0x1.d1745cp-1,
+    (int)-7
+  },
+  { // Entry 38
+    -0x1.d1745cp-7,
+    -0x1.d1745cp-1,
+    (int)-6
+  },
+  { // Entry 39
+    -0x1.d1745cp-6,
+    -0x1.d1745cp-1,
+    (int)-5
+  },
+  { // Entry 40
+    -0x1.d1745cp-5,
+    -0x1.d1745cp-1,
+    (int)-4
+  },
+  { // Entry 41
+    -0x1.d1745cp-4,
+    -0x1.d1745cp-1,
+    (int)-3
+  },
+  { // Entry 42
+    -0x1.d1745cp-3,
+    -0x1.d1745cp-1,
+    (int)-2
+  },
+  { // Entry 43
+    -0x1.d1745cp-2,
+    -0x1.d1745cp-1,
+    (int)-1
+  },
+  { // Entry 44
+    -0x1.d1745cp-1,
+    -0x1.d1745cp-1,
+    (int)0
+  },
+  { // Entry 45
+    -0x1.d1745cp0,
+    -0x1.d1745cp-1,
+    (int)1
+  },
+  { // Entry 46
+    -0x1.d1745cp1,
+    -0x1.d1745cp-1,
+    (int)2
+  },
+  { // Entry 47
+    -0x1.d1745cp2,
+    -0x1.d1745cp-1,
+    (int)3
+  },
+  { // Entry 48
+    -0x1.d1745cp3,
+    -0x1.d1745cp-1,
+    (int)4
+  },
+  { // Entry 49
+    -0x1.d1745cp4,
+    -0x1.d1745cp-1,
+    (int)5
+  },
+  { // Entry 50
+    -0x1.d1745cp5,
+    -0x1.d1745cp-1,
+    (int)6
+  },
+  { // Entry 51
+    -0x1.d1745cp6,
+    -0x1.d1745cp-1,
+    (int)7
+  },
+  { // Entry 52
+    -0x1.d1745cp7,
+    -0x1.d1745cp-1,
+    (int)8
+  },
+  { // Entry 53
+    -0x1.d1745cp8,
+    -0x1.d1745cp-1,
+    (int)9
+  },
+  { // Entry 54
+    -0x1.d1745cp9,
+    -0x1.d1745cp-1,
+    (int)10
+  },
+  { // Entry 55
+    -0x1.a2e8b8p-11,
+    -0x1.a2e8b8p-1,
+    (int)-10
+  },
+  { // Entry 56
+    -0x1.a2e8b8p-10,
+    -0x1.a2e8b8p-1,
+    (int)-9
+  },
+  { // Entry 57
+    -0x1.a2e8b8p-9,
+    -0x1.a2e8b8p-1,
+    (int)-8
+  },
+  { // Entry 58
+    -0x1.a2e8b8p-8,
+    -0x1.a2e8b8p-1,
+    (int)-7
+  },
+  { // Entry 59
+    -0x1.a2e8b8p-7,
+    -0x1.a2e8b8p-1,
+    (int)-6
+  },
+  { // Entry 60
+    -0x1.a2e8b8p-6,
+    -0x1.a2e8b8p-1,
+    (int)-5
+  },
+  { // Entry 61
+    -0x1.a2e8b8p-5,
+    -0x1.a2e8b8p-1,
+    (int)-4
+  },
+  { // Entry 62
+    -0x1.a2e8b8p-4,
+    -0x1.a2e8b8p-1,
+    (int)-3
+  },
+  { // Entry 63
+    -0x1.a2e8b8p-3,
+    -0x1.a2e8b8p-1,
+    (int)-2
+  },
+  { // Entry 64
+    -0x1.a2e8b8p-2,
+    -0x1.a2e8b8p-1,
+    (int)-1
+  },
+  { // Entry 65
+    -0x1.a2e8b8p-1,
+    -0x1.a2e8b8p-1,
+    (int)0
+  },
+  { // Entry 66
+    -0x1.a2e8b8p0,
+    -0x1.a2e8b8p-1,
+    (int)1
+  },
+  { // Entry 67
+    -0x1.a2e8b8p1,
+    -0x1.a2e8b8p-1,
+    (int)2
+  },
+  { // Entry 68
+    -0x1.a2e8b8p2,
+    -0x1.a2e8b8p-1,
+    (int)3
+  },
+  { // Entry 69
+    -0x1.a2e8b8p3,
+    -0x1.a2e8b8p-1,
+    (int)4
+  },
+  { // Entry 70
+    -0x1.a2e8b8p4,
+    -0x1.a2e8b8p-1,
+    (int)5
+  },
+  { // Entry 71
+    -0x1.a2e8b8p5,
+    -0x1.a2e8b8p-1,
+    (int)6
+  },
+  { // Entry 72
+    -0x1.a2e8b8p6,
+    -0x1.a2e8b8p-1,
+    (int)7
+  },
+  { // Entry 73
+    -0x1.a2e8b8p7,
+    -0x1.a2e8b8p-1,
+    (int)8
+  },
+  { // Entry 74
+    -0x1.a2e8b8p8,
+    -0x1.a2e8b8p-1,
+    (int)9
+  },
+  { // Entry 75
+    -0x1.a2e8b8p9,
+    -0x1.a2e8b8p-1,
+    (int)10
+  },
+  { // Entry 76
+    -0x1.745d14p-11,
+    -0x1.745d14p-1,
+    (int)-10
+  },
+  { // Entry 77
+    -0x1.745d14p-10,
+    -0x1.745d14p-1,
+    (int)-9
+  },
+  { // Entry 78
+    -0x1.745d14p-9,
+    -0x1.745d14p-1,
+    (int)-8
+  },
+  { // Entry 79
+    -0x1.745d14p-8,
+    -0x1.745d14p-1,
+    (int)-7
+  },
+  { // Entry 80
+    -0x1.745d14p-7,
+    -0x1.745d14p-1,
+    (int)-6
+  },
+  { // Entry 81
+    -0x1.745d14p-6,
+    -0x1.745d14p-1,
+    (int)-5
+  },
+  { // Entry 82
+    -0x1.745d14p-5,
+    -0x1.745d14p-1,
+    (int)-4
+  },
+  { // Entry 83
+    -0x1.745d14p-4,
+    -0x1.745d14p-1,
+    (int)-3
+  },
+  { // Entry 84
+    -0x1.745d14p-3,
+    -0x1.745d14p-1,
+    (int)-2
+  },
+  { // Entry 85
+    -0x1.745d14p-2,
+    -0x1.745d14p-1,
+    (int)-1
+  },
+  { // Entry 86
+    -0x1.745d14p-1,
+    -0x1.745d14p-1,
+    (int)0
+  },
+  { // Entry 87
+    -0x1.745d14p0,
+    -0x1.745d14p-1,
+    (int)1
+  },
+  { // Entry 88
+    -0x1.745d14p1,
+    -0x1.745d14p-1,
+    (int)2
+  },
+  { // Entry 89
+    -0x1.745d14p2,
+    -0x1.745d14p-1,
+    (int)3
+  },
+  { // Entry 90
+    -0x1.745d14p3,
+    -0x1.745d14p-1,
+    (int)4
+  },
+  { // Entry 91
+    -0x1.745d14p4,
+    -0x1.745d14p-1,
+    (int)5
+  },
+  { // Entry 92
+    -0x1.745d14p5,
+    -0x1.745d14p-1,
+    (int)6
+  },
+  { // Entry 93
+    -0x1.745d14p6,
+    -0x1.745d14p-1,
+    (int)7
+  },
+  { // Entry 94
+    -0x1.745d14p7,
+    -0x1.745d14p-1,
+    (int)8
+  },
+  { // Entry 95
+    -0x1.745d14p8,
+    -0x1.745d14p-1,
+    (int)9
+  },
+  { // Entry 96
+    -0x1.745d14p9,
+    -0x1.745d14p-1,
+    (int)10
+  },
+  { // Entry 97
+    -0x1.45d170p-11,
+    -0x1.45d170p-1,
+    (int)-10
+  },
+  { // Entry 98
+    -0x1.45d170p-10,
+    -0x1.45d170p-1,
+    (int)-9
+  },
+  { // Entry 99
+    -0x1.45d170p-9,
+    -0x1.45d170p-1,
+    (int)-8
+  },
+  { // Entry 100
+    -0x1.45d170p-8,
+    -0x1.45d170p-1,
+    (int)-7
+  },
+  { // Entry 101
+    -0x1.45d170p-7,
+    -0x1.45d170p-1,
+    (int)-6
+  },
+  { // Entry 102
+    -0x1.45d170p-6,
+    -0x1.45d170p-1,
+    (int)-5
+  },
+  { // Entry 103
+    -0x1.45d170p-5,
+    -0x1.45d170p-1,
+    (int)-4
+  },
+  { // Entry 104
+    -0x1.45d170p-4,
+    -0x1.45d170p-1,
+    (int)-3
+  },
+  { // Entry 105
+    -0x1.45d170p-3,
+    -0x1.45d170p-1,
+    (int)-2
+  },
+  { // Entry 106
+    -0x1.45d170p-2,
+    -0x1.45d170p-1,
+    (int)-1
+  },
+  { // Entry 107
+    -0x1.45d170p-1,
+    -0x1.45d170p-1,
+    (int)0
+  },
+  { // Entry 108
+    -0x1.45d170p0,
+    -0x1.45d170p-1,
+    (int)1
+  },
+  { // Entry 109
+    -0x1.45d170p1,
+    -0x1.45d170p-1,
+    (int)2
+  },
+  { // Entry 110
+    -0x1.45d170p2,
+    -0x1.45d170p-1,
+    (int)3
+  },
+  { // Entry 111
+    -0x1.45d170p3,
+    -0x1.45d170p-1,
+    (int)4
+  },
+  { // Entry 112
+    -0x1.45d170p4,
+    -0x1.45d170p-1,
+    (int)5
+  },
+  { // Entry 113
+    -0x1.45d170p5,
+    -0x1.45d170p-1,
+    (int)6
+  },
+  { // Entry 114
+    -0x1.45d170p6,
+    -0x1.45d170p-1,
+    (int)7
+  },
+  { // Entry 115
+    -0x1.45d170p7,
+    -0x1.45d170p-1,
+    (int)8
+  },
+  { // Entry 116
+    -0x1.45d170p8,
+    -0x1.45d170p-1,
+    (int)9
+  },
+  { // Entry 117
+    -0x1.45d170p9,
+    -0x1.45d170p-1,
+    (int)10
+  },
+  { // Entry 118
+    -0x1.1745ccp-11,
+    -0x1.1745ccp-1,
+    (int)-10
+  },
+  { // Entry 119
+    -0x1.1745ccp-10,
+    -0x1.1745ccp-1,
+    (int)-9
+  },
+  { // Entry 120
+    -0x1.1745ccp-9,
+    -0x1.1745ccp-1,
+    (int)-8
+  },
+  { // Entry 121
+    -0x1.1745ccp-8,
+    -0x1.1745ccp-1,
+    (int)-7
+  },
+  { // Entry 122
+    -0x1.1745ccp-7,
+    -0x1.1745ccp-1,
+    (int)-6
+  },
+  { // Entry 123
+    -0x1.1745ccp-6,
+    -0x1.1745ccp-1,
+    (int)-5
+  },
+  { // Entry 124
+    -0x1.1745ccp-5,
+    -0x1.1745ccp-1,
+    (int)-4
+  },
+  { // Entry 125
+    -0x1.1745ccp-4,
+    -0x1.1745ccp-1,
+    (int)-3
+  },
+  { // Entry 126
+    -0x1.1745ccp-3,
+    -0x1.1745ccp-1,
+    (int)-2
+  },
+  { // Entry 127
+    -0x1.1745ccp-2,
+    -0x1.1745ccp-1,
+    (int)-1
+  },
+  { // Entry 128
+    -0x1.1745ccp-1,
+    -0x1.1745ccp-1,
+    (int)0
+  },
+  { // Entry 129
+    -0x1.1745ccp0,
+    -0x1.1745ccp-1,
+    (int)1
+  },
+  { // Entry 130
+    -0x1.1745ccp1,
+    -0x1.1745ccp-1,
+    (int)2
+  },
+  { // Entry 131
+    -0x1.1745ccp2,
+    -0x1.1745ccp-1,
+    (int)3
+  },
+  { // Entry 132
+    -0x1.1745ccp3,
+    -0x1.1745ccp-1,
+    (int)4
+  },
+  { // Entry 133
+    -0x1.1745ccp4,
+    -0x1.1745ccp-1,
+    (int)5
+  },
+  { // Entry 134
+    -0x1.1745ccp5,
+    -0x1.1745ccp-1,
+    (int)6
+  },
+  { // Entry 135
+    -0x1.1745ccp6,
+    -0x1.1745ccp-1,
+    (int)7
+  },
+  { // Entry 136
+    -0x1.1745ccp7,
+    -0x1.1745ccp-1,
+    (int)8
+  },
+  { // Entry 137
+    -0x1.1745ccp8,
+    -0x1.1745ccp-1,
+    (int)9
+  },
+  { // Entry 138
+    -0x1.1745ccp9,
+    -0x1.1745ccp-1,
+    (int)10
+  },
+  { // Entry 139
+    -0x1.d17452p-12,
+    -0x1.d17452p-2,
+    (int)-10
+  },
+  { // Entry 140
+    -0x1.d17452p-11,
+    -0x1.d17452p-2,
+    (int)-9
+  },
+  { // Entry 141
+    -0x1.d17452p-10,
+    -0x1.d17452p-2,
+    (int)-8
+  },
+  { // Entry 142
+    -0x1.d17452p-9,
+    -0x1.d17452p-2,
+    (int)-7
+  },
+  { // Entry 143
+    -0x1.d17452p-8,
+    -0x1.d17452p-2,
+    (int)-6
+  },
+  { // Entry 144
+    -0x1.d17452p-7,
+    -0x1.d17452p-2,
+    (int)-5
+  },
+  { // Entry 145
+    -0x1.d17452p-6,
+    -0x1.d17452p-2,
+    (int)-4
+  },
+  { // Entry 146
+    -0x1.d17452p-5,
+    -0x1.d17452p-2,
+    (int)-3
+  },
+  { // Entry 147
+    -0x1.d17452p-4,
+    -0x1.d17452p-2,
+    (int)-2
+  },
+  { // Entry 148
+    -0x1.d17452p-3,
+    -0x1.d17452p-2,
+    (int)-1
+  },
+  { // Entry 149
+    -0x1.d17452p-2,
+    -0x1.d17452p-2,
+    (int)0
+  },
+  { // Entry 150
+    -0x1.d17452p-1,
+    -0x1.d17452p-2,
+    (int)1
+  },
+  { // Entry 151
+    -0x1.d17452p0,
+    -0x1.d17452p-2,
+    (int)2
+  },
+  { // Entry 152
+    -0x1.d17452p1,
+    -0x1.d17452p-2,
+    (int)3
+  },
+  { // Entry 153
+    -0x1.d17452p2,
+    -0x1.d17452p-2,
+    (int)4
+  },
+  { // Entry 154
+    -0x1.d17452p3,
+    -0x1.d17452p-2,
+    (int)5
+  },
+  { // Entry 155
+    -0x1.d17452p4,
+    -0x1.d17452p-2,
+    (int)6
+  },
+  { // Entry 156
+    -0x1.d17452p5,
+    -0x1.d17452p-2,
+    (int)7
+  },
+  { // Entry 157
+    -0x1.d17452p6,
+    -0x1.d17452p-2,
+    (int)8
+  },
+  { // Entry 158
+    -0x1.d17452p7,
+    -0x1.d17452p-2,
+    (int)9
+  },
+  { // Entry 159
+    -0x1.d17452p8,
+    -0x1.d17452p-2,
+    (int)10
+  },
+  { // Entry 160
+    -0x1.745d0cp-12,
+    -0x1.745d0cp-2,
+    (int)-10
+  },
+  { // Entry 161
+    -0x1.745d0cp-11,
+    -0x1.745d0cp-2,
+    (int)-9
+  },
+  { // Entry 162
+    -0x1.745d0cp-10,
+    -0x1.745d0cp-2,
+    (int)-8
+  },
+  { // Entry 163
+    -0x1.745d0cp-9,
+    -0x1.745d0cp-2,
+    (int)-7
+  },
+  { // Entry 164
+    -0x1.745d0cp-8,
+    -0x1.745d0cp-2,
+    (int)-6
+  },
+  { // Entry 165
+    -0x1.745d0cp-7,
+    -0x1.745d0cp-2,
+    (int)-5
+  },
+  { // Entry 166
+    -0x1.745d0cp-6,
+    -0x1.745d0cp-2,
+    (int)-4
+  },
+  { // Entry 167
+    -0x1.745d0cp-5,
+    -0x1.745d0cp-2,
+    (int)-3
+  },
+  { // Entry 168
+    -0x1.745d0cp-4,
+    -0x1.745d0cp-2,
+    (int)-2
+  },
+  { // Entry 169
+    -0x1.745d0cp-3,
+    -0x1.745d0cp-2,
+    (int)-1
+  },
+  { // Entry 170
+    -0x1.745d0cp-2,
+    -0x1.745d0cp-2,
+    (int)0
+  },
+  { // Entry 171
+    -0x1.745d0cp-1,
+    -0x1.745d0cp-2,
+    (int)1
+  },
+  { // Entry 172
+    -0x1.745d0cp0,
+    -0x1.745d0cp-2,
+    (int)2
+  },
+  { // Entry 173
+    -0x1.745d0cp1,
+    -0x1.745d0cp-2,
+    (int)3
+  },
+  { // Entry 174
+    -0x1.745d0cp2,
+    -0x1.745d0cp-2,
+    (int)4
+  },
+  { // Entry 175
+    -0x1.745d0cp3,
+    -0x1.745d0cp-2,
+    (int)5
+  },
+  { // Entry 176
+    -0x1.745d0cp4,
+    -0x1.745d0cp-2,
+    (int)6
+  },
+  { // Entry 177
+    -0x1.745d0cp5,
+    -0x1.745d0cp-2,
+    (int)7
+  },
+  { // Entry 178
+    -0x1.745d0cp6,
+    -0x1.745d0cp-2,
+    (int)8
+  },
+  { // Entry 179
+    -0x1.745d0cp7,
+    -0x1.745d0cp-2,
+    (int)9
+  },
+  { // Entry 180
+    -0x1.745d0cp8,
+    -0x1.745d0cp-2,
+    (int)10
+  },
+  { // Entry 181
+    -0x1.1745c6p-12,
+    -0x1.1745c6p-2,
+    (int)-10
+  },
+  { // Entry 182
+    -0x1.1745c6p-11,
+    -0x1.1745c6p-2,
+    (int)-9
+  },
+  { // Entry 183
+    -0x1.1745c6p-10,
+    -0x1.1745c6p-2,
+    (int)-8
+  },
+  { // Entry 184
+    -0x1.1745c6p-9,
+    -0x1.1745c6p-2,
+    (int)-7
+  },
+  { // Entry 185
+    -0x1.1745c6p-8,
+    -0x1.1745c6p-2,
+    (int)-6
+  },
+  { // Entry 186
+    -0x1.1745c6p-7,
+    -0x1.1745c6p-2,
+    (int)-5
+  },
+  { // Entry 187
+    -0x1.1745c6p-6,
+    -0x1.1745c6p-2,
+    (int)-4
+  },
+  { // Entry 188
+    -0x1.1745c6p-5,
+    -0x1.1745c6p-2,
+    (int)-3
+  },
+  { // Entry 189
+    -0x1.1745c6p-4,
+    -0x1.1745c6p-2,
+    (int)-2
+  },
+  { // Entry 190
+    -0x1.1745c6p-3,
+    -0x1.1745c6p-2,
+    (int)-1
+  },
+  { // Entry 191
+    -0x1.1745c6p-2,
+    -0x1.1745c6p-2,
+    (int)0
+  },
+  { // Entry 192
+    -0x1.1745c6p-1,
+    -0x1.1745c6p-2,
+    (int)1
+  },
+  { // Entry 193
+    -0x1.1745c6p0,
+    -0x1.1745c6p-2,
+    (int)2
+  },
+  { // Entry 194
+    -0x1.1745c6p1,
+    -0x1.1745c6p-2,
+    (int)3
+  },
+  { // Entry 195
+    -0x1.1745c6p2,
+    -0x1.1745c6p-2,
+    (int)4
+  },
+  { // Entry 196
+    -0x1.1745c6p3,
+    -0x1.1745c6p-2,
+    (int)5
+  },
+  { // Entry 197
+    -0x1.1745c6p4,
+    -0x1.1745c6p-2,
+    (int)6
+  },
+  { // Entry 198
+    -0x1.1745c6p5,
+    -0x1.1745c6p-2,
+    (int)7
+  },
+  { // Entry 199
+    -0x1.1745c6p6,
+    -0x1.1745c6p-2,
+    (int)8
+  },
+  { // Entry 200
+    -0x1.1745c6p7,
+    -0x1.1745c6p-2,
+    (int)9
+  },
+  { // Entry 201
+    -0x1.1745c6p8,
+    -0x1.1745c6p-2,
+    (int)10
+  },
+  { // Entry 202
+    -0x1.745dp-13,
+    -0x1.745dp-3,
+    (int)-10
+  },
+  { // Entry 203
+    -0x1.745dp-12,
+    -0x1.745dp-3,
+    (int)-9
+  },
+  { // Entry 204
+    -0x1.745dp-11,
+    -0x1.745dp-3,
+    (int)-8
+  },
+  { // Entry 205
+    -0x1.745dp-10,
+    -0x1.745dp-3,
+    (int)-7
+  },
+  { // Entry 206
+    -0x1.745dp-9,
+    -0x1.745dp-3,
+    (int)-6
+  },
+  { // Entry 207
+    -0x1.745dp-8,
+    -0x1.745dp-3,
+    (int)-5
+  },
+  { // Entry 208
+    -0x1.745dp-7,
+    -0x1.745dp-3,
+    (int)-4
+  },
+  { // Entry 209
+    -0x1.745dp-6,
+    -0x1.745dp-3,
+    (int)-3
+  },
+  { // Entry 210
+    -0x1.745dp-5,
+    -0x1.745dp-3,
+    (int)-2
+  },
+  { // Entry 211
+    -0x1.745dp-4,
+    -0x1.745dp-3,
+    (int)-1
+  },
+  { // Entry 212
+    -0x1.745dp-3,
+    -0x1.745dp-3,
+    (int)0
+  },
+  { // Entry 213
+    -0x1.745dp-2,
+    -0x1.745dp-3,
+    (int)1
+  },
+  { // Entry 214
+    -0x1.745dp-1,
+    -0x1.745dp-3,
+    (int)2
+  },
+  { // Entry 215
+    -0x1.745dp0,
+    -0x1.745dp-3,
+    (int)3
+  },
+  { // Entry 216
+    -0x1.745dp1,
+    -0x1.745dp-3,
+    (int)4
+  },
+  { // Entry 217
+    -0x1.745dp2,
+    -0x1.745dp-3,
+    (int)5
+  },
+  { // Entry 218
+    -0x1.745dp3,
+    -0x1.745dp-3,
+    (int)6
+  },
+  { // Entry 219
+    -0x1.745dp4,
+    -0x1.745dp-3,
+    (int)7
+  },
+  { // Entry 220
+    -0x1.745dp5,
+    -0x1.745dp-3,
+    (int)8
+  },
+  { // Entry 221
+    -0x1.745dp6,
+    -0x1.745dp-3,
+    (int)9
+  },
+  { // Entry 222
+    -0x1.745dp7,
+    -0x1.745dp-3,
+    (int)10
+  },
+  { // Entry 223
+    -0x1.745ce8p-14,
+    -0x1.745ce8p-4,
+    (int)-10
+  },
+  { // Entry 224
+    -0x1.745ce8p-13,
+    -0x1.745ce8p-4,
+    (int)-9
+  },
+  { // Entry 225
+    -0x1.745ce8p-12,
+    -0x1.745ce8p-4,
+    (int)-8
+  },
+  { // Entry 226
+    -0x1.745ce8p-11,
+    -0x1.745ce8p-4,
+    (int)-7
+  },
+  { // Entry 227
+    -0x1.745ce8p-10,
+    -0x1.745ce8p-4,
+    (int)-6
+  },
+  { // Entry 228
+    -0x1.745ce8p-9,
+    -0x1.745ce8p-4,
+    (int)-5
+  },
+  { // Entry 229
+    -0x1.745ce8p-8,
+    -0x1.745ce8p-4,
+    (int)-4
+  },
+  { // Entry 230
+    -0x1.745ce8p-7,
+    -0x1.745ce8p-4,
+    (int)-3
+  },
+  { // Entry 231
+    -0x1.745ce8p-6,
+    -0x1.745ce8p-4,
+    (int)-2
+  },
+  { // Entry 232
+    -0x1.745ce8p-5,
+    -0x1.745ce8p-4,
+    (int)-1
+  },
+  { // Entry 233
+    -0x1.745ce8p-4,
+    -0x1.745ce8p-4,
+    (int)0
+  },
+  { // Entry 234
+    -0x1.745ce8p-3,
+    -0x1.745ce8p-4,
+    (int)1
+  },
+  { // Entry 235
+    -0x1.745ce8p-2,
+    -0x1.745ce8p-4,
+    (int)2
+  },
+  { // Entry 236
+    -0x1.745ce8p-1,
+    -0x1.745ce8p-4,
+    (int)3
+  },
+  { // Entry 237
+    -0x1.745ce8p0,
+    -0x1.745ce8p-4,
+    (int)4
+  },
+  { // Entry 238
+    -0x1.745ce8p1,
+    -0x1.745ce8p-4,
+    (int)5
+  },
+  { // Entry 239
+    -0x1.745ce8p2,
+    -0x1.745ce8p-4,
+    (int)6
+  },
+  { // Entry 240
+    -0x1.745ce8p3,
+    -0x1.745ce8p-4,
+    (int)7
+  },
+  { // Entry 241
+    -0x1.745ce8p4,
+    -0x1.745ce8p-4,
+    (int)8
+  },
+  { // Entry 242
+    -0x1.745ce8p5,
+    -0x1.745ce8p-4,
+    (int)9
+  },
+  { // Entry 243
+    -0x1.745ce8p6,
+    -0x1.745ce8p-4,
+    (int)10
+  },
+  { // Entry 244
+    0x1.80p-33,
+    0x1.80p-23,
+    (int)-10
+  },
+  { // Entry 245
+    0x1.80p-32,
+    0x1.80p-23,
+    (int)-9
+  },
+  { // Entry 246
+    0x1.80p-31,
+    0x1.80p-23,
+    (int)-8
+  },
+  { // Entry 247
+    0x1.80p-30,
+    0x1.80p-23,
+    (int)-7
+  },
+  { // Entry 248
+    0x1.80p-29,
+    0x1.80p-23,
+    (int)-6
+  },
+  { // Entry 249
+    0x1.80p-28,
+    0x1.80p-23,
+    (int)-5
+  },
+  { // Entry 250
+    0x1.80p-27,
+    0x1.80p-23,
+    (int)-4
+  },
+  { // Entry 251
+    0x1.80p-26,
+    0x1.80p-23,
+    (int)-3
+  },
+  { // Entry 252
+    0x1.80p-25,
+    0x1.80p-23,
+    (int)-2
+  },
+  { // Entry 253
+    0x1.80p-24,
+    0x1.80p-23,
+    (int)-1
+  },
+  { // Entry 254
+    0x1.80p-23,
+    0x1.80p-23,
+    (int)0
+  },
+  { // Entry 255
+    0x1.80p-22,
+    0x1.80p-23,
+    (int)1
+  },
+  { // Entry 256
+    0x1.80p-21,
+    0x1.80p-23,
+    (int)2
+  },
+  { // Entry 257
+    0x1.80p-20,
+    0x1.80p-23,
+    (int)3
+  },
+  { // Entry 258
+    0x1.80p-19,
+    0x1.80p-23,
+    (int)4
+  },
+  { // Entry 259
+    0x1.80p-18,
+    0x1.80p-23,
+    (int)5
+  },
+  { // Entry 260
+    0x1.80p-17,
+    0x1.80p-23,
+    (int)6
+  },
+  { // Entry 261
+    0x1.80p-16,
+    0x1.80p-23,
+    (int)7
+  },
+  { // Entry 262
+    0x1.80p-15,
+    0x1.80p-23,
+    (int)8
+  },
+  { // Entry 263
+    0x1.80p-14,
+    0x1.80p-23,
+    (int)9
+  },
+  { // Entry 264
+    0x1.80p-13,
+    0x1.80p-23,
+    (int)10
+  },
+  { // Entry 265
+    0x1.745d48p-14,
+    0x1.745d48p-4,
+    (int)-10
+  },
+  { // Entry 266
+    0x1.745d48p-13,
+    0x1.745d48p-4,
+    (int)-9
+  },
+  { // Entry 267
+    0x1.745d48p-12,
+    0x1.745d48p-4,
+    (int)-8
+  },
+  { // Entry 268
+    0x1.745d48p-11,
+    0x1.745d48p-4,
+    (int)-7
+  },
+  { // Entry 269
+    0x1.745d48p-10,
+    0x1.745d48p-4,
+    (int)-6
+  },
+  { // Entry 270
+    0x1.745d48p-9,
+    0x1.745d48p-4,
+    (int)-5
+  },
+  { // Entry 271
+    0x1.745d48p-8,
+    0x1.745d48p-4,
+    (int)-4
+  },
+  { // Entry 272
+    0x1.745d48p-7,
+    0x1.745d48p-4,
+    (int)-3
+  },
+  { // Entry 273
+    0x1.745d48p-6,
+    0x1.745d48p-4,
+    (int)-2
+  },
+  { // Entry 274
+    0x1.745d48p-5,
+    0x1.745d48p-4,
+    (int)-1
+  },
+  { // Entry 275
+    0x1.745d48p-4,
+    0x1.745d48p-4,
+    (int)0
+  },
+  { // Entry 276
+    0x1.745d48p-3,
+    0x1.745d48p-4,
+    (int)1
+  },
+  { // Entry 277
+    0x1.745d48p-2,
+    0x1.745d48p-4,
+    (int)2
+  },
+  { // Entry 278
+    0x1.745d48p-1,
+    0x1.745d48p-4,
+    (int)3
+  },
+  { // Entry 279
+    0x1.745d48p0,
+    0x1.745d48p-4,
+    (int)4
+  },
+  { // Entry 280
+    0x1.745d48p1,
+    0x1.745d48p-4,
+    (int)5
+  },
+  { // Entry 281
+    0x1.745d48p2,
+    0x1.745d48p-4,
+    (int)6
+  },
+  { // Entry 282
+    0x1.745d48p3,
+    0x1.745d48p-4,
+    (int)7
+  },
+  { // Entry 283
+    0x1.745d48p4,
+    0x1.745d48p-4,
+    (int)8
+  },
+  { // Entry 284
+    0x1.745d48p5,
+    0x1.745d48p-4,
+    (int)9
+  },
+  { // Entry 285
+    0x1.745d48p6,
+    0x1.745d48p-4,
+    (int)10
+  },
+  { // Entry 286
+    0x1.745d30p-13,
+    0x1.745d30p-3,
+    (int)-10
+  },
+  { // Entry 287
+    0x1.745d30p-12,
+    0x1.745d30p-3,
+    (int)-9
+  },
+  { // Entry 288
+    0x1.745d30p-11,
+    0x1.745d30p-3,
+    (int)-8
+  },
+  { // Entry 289
+    0x1.745d30p-10,
+    0x1.745d30p-3,
+    (int)-7
+  },
+  { // Entry 290
+    0x1.745d30p-9,
+    0x1.745d30p-3,
+    (int)-6
+  },
+  { // Entry 291
+    0x1.745d30p-8,
+    0x1.745d30p-3,
+    (int)-5
+  },
+  { // Entry 292
+    0x1.745d30p-7,
+    0x1.745d30p-3,
+    (int)-4
+  },
+  { // Entry 293
+    0x1.745d30p-6,
+    0x1.745d30p-3,
+    (int)-3
+  },
+  { // Entry 294
+    0x1.745d30p-5,
+    0x1.745d30p-3,
+    (int)-2
+  },
+  { // Entry 295
+    0x1.745d30p-4,
+    0x1.745d30p-3,
+    (int)-1
+  },
+  { // Entry 296
+    0x1.745d30p-3,
+    0x1.745d30p-3,
+    (int)0
+  },
+  { // Entry 297
+    0x1.745d30p-2,
+    0x1.745d30p-3,
+    (int)1
+  },
+  { // Entry 298
+    0x1.745d30p-1,
+    0x1.745d30p-3,
+    (int)2
+  },
+  { // Entry 299
+    0x1.745d30p0,
+    0x1.745d30p-3,
+    (int)3
+  },
+  { // Entry 300
+    0x1.745d30p1,
+    0x1.745d30p-3,
+    (int)4
+  },
+  { // Entry 301
+    0x1.745d30p2,
+    0x1.745d30p-3,
+    (int)5
+  },
+  { // Entry 302
+    0x1.745d30p3,
+    0x1.745d30p-3,
+    (int)6
+  },
+  { // Entry 303
+    0x1.745d30p4,
+    0x1.745d30p-3,
+    (int)7
+  },
+  { // Entry 304
+    0x1.745d30p5,
+    0x1.745d30p-3,
+    (int)8
+  },
+  { // Entry 305
+    0x1.745d30p6,
+    0x1.745d30p-3,
+    (int)9
+  },
+  { // Entry 306
+    0x1.745d30p7,
+    0x1.745d30p-3,
+    (int)10
+  },
+  { // Entry 307
+    0x1.1745dep-12,
+    0x1.1745dep-2,
+    (int)-10
+  },
+  { // Entry 308
+    0x1.1745dep-11,
+    0x1.1745dep-2,
+    (int)-9
+  },
+  { // Entry 309
+    0x1.1745dep-10,
+    0x1.1745dep-2,
+    (int)-8
+  },
+  { // Entry 310
+    0x1.1745dep-9,
+    0x1.1745dep-2,
+    (int)-7
+  },
+  { // Entry 311
+    0x1.1745dep-8,
+    0x1.1745dep-2,
+    (int)-6
+  },
+  { // Entry 312
+    0x1.1745dep-7,
+    0x1.1745dep-2,
+    (int)-5
+  },
+  { // Entry 313
+    0x1.1745dep-6,
+    0x1.1745dep-2,
+    (int)-4
+  },
+  { // Entry 314
+    0x1.1745dep-5,
+    0x1.1745dep-2,
+    (int)-3
+  },
+  { // Entry 315
+    0x1.1745dep-4,
+    0x1.1745dep-2,
+    (int)-2
+  },
+  { // Entry 316
+    0x1.1745dep-3,
+    0x1.1745dep-2,
+    (int)-1
+  },
+  { // Entry 317
+    0x1.1745dep-2,
+    0x1.1745dep-2,
+    (int)0
+  },
+  { // Entry 318
+    0x1.1745dep-1,
+    0x1.1745dep-2,
+    (int)1
+  },
+  { // Entry 319
+    0x1.1745dep0,
+    0x1.1745dep-2,
+    (int)2
+  },
+  { // Entry 320
+    0x1.1745dep1,
+    0x1.1745dep-2,
+    (int)3
+  },
+  { // Entry 321
+    0x1.1745dep2,
+    0x1.1745dep-2,
+    (int)4
+  },
+  { // Entry 322
+    0x1.1745dep3,
+    0x1.1745dep-2,
+    (int)5
+  },
+  { // Entry 323
+    0x1.1745dep4,
+    0x1.1745dep-2,
+    (int)6
+  },
+  { // Entry 324
+    0x1.1745dep5,
+    0x1.1745dep-2,
+    (int)7
+  },
+  { // Entry 325
+    0x1.1745dep6,
+    0x1.1745dep-2,
+    (int)8
+  },
+  { // Entry 326
+    0x1.1745dep7,
+    0x1.1745dep-2,
+    (int)9
+  },
+  { // Entry 327
+    0x1.1745dep8,
+    0x1.1745dep-2,
+    (int)10
+  },
+  { // Entry 328
+    0x1.745d24p-12,
+    0x1.745d24p-2,
+    (int)-10
+  },
+  { // Entry 329
+    0x1.745d24p-11,
+    0x1.745d24p-2,
+    (int)-9
+  },
+  { // Entry 330
+    0x1.745d24p-10,
+    0x1.745d24p-2,
+    (int)-8
+  },
+  { // Entry 331
+    0x1.745d24p-9,
+    0x1.745d24p-2,
+    (int)-7
+  },
+  { // Entry 332
+    0x1.745d24p-8,
+    0x1.745d24p-2,
+    (int)-6
+  },
+  { // Entry 333
+    0x1.745d24p-7,
+    0x1.745d24p-2,
+    (int)-5
+  },
+  { // Entry 334
+    0x1.745d24p-6,
+    0x1.745d24p-2,
+    (int)-4
+  },
+  { // Entry 335
+    0x1.745d24p-5,
+    0x1.745d24p-2,
+    (int)-3
+  },
+  { // Entry 336
+    0x1.745d24p-4,
+    0x1.745d24p-2,
+    (int)-2
+  },
+  { // Entry 337
+    0x1.745d24p-3,
+    0x1.745d24p-2,
+    (int)-1
+  },
+  { // Entry 338
+    0x1.745d24p-2,
+    0x1.745d24p-2,
+    (int)0
+  },
+  { // Entry 339
+    0x1.745d24p-1,
+    0x1.745d24p-2,
+    (int)1
+  },
+  { // Entry 340
+    0x1.745d24p0,
+    0x1.745d24p-2,
+    (int)2
+  },
+  { // Entry 341
+    0x1.745d24p1,
+    0x1.745d24p-2,
+    (int)3
+  },
+  { // Entry 342
+    0x1.745d24p2,
+    0x1.745d24p-2,
+    (int)4
+  },
+  { // Entry 343
+    0x1.745d24p3,
+    0x1.745d24p-2,
+    (int)5
+  },
+  { // Entry 344
+    0x1.745d24p4,
+    0x1.745d24p-2,
+    (int)6
+  },
+  { // Entry 345
+    0x1.745d24p5,
+    0x1.745d24p-2,
+    (int)7
+  },
+  { // Entry 346
+    0x1.745d24p6,
+    0x1.745d24p-2,
+    (int)8
+  },
+  { // Entry 347
+    0x1.745d24p7,
+    0x1.745d24p-2,
+    (int)9
+  },
+  { // Entry 348
+    0x1.745d24p8,
+    0x1.745d24p-2,
+    (int)10
+  },
+  { // Entry 349
+    0x1.d1746ap-12,
+    0x1.d1746ap-2,
+    (int)-10
+  },
+  { // Entry 350
+    0x1.d1746ap-11,
+    0x1.d1746ap-2,
+    (int)-9
+  },
+  { // Entry 351
+    0x1.d1746ap-10,
+    0x1.d1746ap-2,
+    (int)-8
+  },
+  { // Entry 352
+    0x1.d1746ap-9,
+    0x1.d1746ap-2,
+    (int)-7
+  },
+  { // Entry 353
+    0x1.d1746ap-8,
+    0x1.d1746ap-2,
+    (int)-6
+  },
+  { // Entry 354
+    0x1.d1746ap-7,
+    0x1.d1746ap-2,
+    (int)-5
+  },
+  { // Entry 355
+    0x1.d1746ap-6,
+    0x1.d1746ap-2,
+    (int)-4
+  },
+  { // Entry 356
+    0x1.d1746ap-5,
+    0x1.d1746ap-2,
+    (int)-3
+  },
+  { // Entry 357
+    0x1.d1746ap-4,
+    0x1.d1746ap-2,
+    (int)-2
+  },
+  { // Entry 358
+    0x1.d1746ap-3,
+    0x1.d1746ap-2,
+    (int)-1
+  },
+  { // Entry 359
+    0x1.d1746ap-2,
+    0x1.d1746ap-2,
+    (int)0
+  },
+  { // Entry 360
+    0x1.d1746ap-1,
+    0x1.d1746ap-2,
+    (int)1
+  },
+  { // Entry 361
+    0x1.d1746ap0,
+    0x1.d1746ap-2,
+    (int)2
+  },
+  { // Entry 362
+    0x1.d1746ap1,
+    0x1.d1746ap-2,
+    (int)3
+  },
+  { // Entry 363
+    0x1.d1746ap2,
+    0x1.d1746ap-2,
+    (int)4
+  },
+  { // Entry 364
+    0x1.d1746ap3,
+    0x1.d1746ap-2,
+    (int)5
+  },
+  { // Entry 365
+    0x1.d1746ap4,
+    0x1.d1746ap-2,
+    (int)6
+  },
+  { // Entry 366
+    0x1.d1746ap5,
+    0x1.d1746ap-2,
+    (int)7
+  },
+  { // Entry 367
+    0x1.d1746ap6,
+    0x1.d1746ap-2,
+    (int)8
+  },
+  { // Entry 368
+    0x1.d1746ap7,
+    0x1.d1746ap-2,
+    (int)9
+  },
+  { // Entry 369
+    0x1.d1746ap8,
+    0x1.d1746ap-2,
+    (int)10
+  },
+  { // Entry 370
+    0x1.1745d8p-11,
+    0x1.1745d8p-1,
+    (int)-10
+  },
+  { // Entry 371
+    0x1.1745d8p-10,
+    0x1.1745d8p-1,
+    (int)-9
+  },
+  { // Entry 372
+    0x1.1745d8p-9,
+    0x1.1745d8p-1,
+    (int)-8
+  },
+  { // Entry 373
+    0x1.1745d8p-8,
+    0x1.1745d8p-1,
+    (int)-7
+  },
+  { // Entry 374
+    0x1.1745d8p-7,
+    0x1.1745d8p-1,
+    (int)-6
+  },
+  { // Entry 375
+    0x1.1745d8p-6,
+    0x1.1745d8p-1,
+    (int)-5
+  },
+  { // Entry 376
+    0x1.1745d8p-5,
+    0x1.1745d8p-1,
+    (int)-4
+  },
+  { // Entry 377
+    0x1.1745d8p-4,
+    0x1.1745d8p-1,
+    (int)-3
+  },
+  { // Entry 378
+    0x1.1745d8p-3,
+    0x1.1745d8p-1,
+    (int)-2
+  },
+  { // Entry 379
+    0x1.1745d8p-2,
+    0x1.1745d8p-1,
+    (int)-1
+  },
+  { // Entry 380
+    0x1.1745d8p-1,
+    0x1.1745d8p-1,
+    (int)0
+  },
+  { // Entry 381
+    0x1.1745d8p0,
+    0x1.1745d8p-1,
+    (int)1
+  },
+  { // Entry 382
+    0x1.1745d8p1,
+    0x1.1745d8p-1,
+    (int)2
+  },
+  { // Entry 383
+    0x1.1745d8p2,
+    0x1.1745d8p-1,
+    (int)3
+  },
+  { // Entry 384
+    0x1.1745d8p3,
+    0x1.1745d8p-1,
+    (int)4
+  },
+  { // Entry 385
+    0x1.1745d8p4,
+    0x1.1745d8p-1,
+    (int)5
+  },
+  { // Entry 386
+    0x1.1745d8p5,
+    0x1.1745d8p-1,
+    (int)6
+  },
+  { // Entry 387
+    0x1.1745d8p6,
+    0x1.1745d8p-1,
+    (int)7
+  },
+  { // Entry 388
+    0x1.1745d8p7,
+    0x1.1745d8p-1,
+    (int)8
+  },
+  { // Entry 389
+    0x1.1745d8p8,
+    0x1.1745d8p-1,
+    (int)9
+  },
+  { // Entry 390
+    0x1.1745d8p9,
+    0x1.1745d8p-1,
+    (int)10
+  },
+  { // Entry 391
+    0x1.45d17cp-11,
+    0x1.45d17cp-1,
+    (int)-10
+  },
+  { // Entry 392
+    0x1.45d17cp-10,
+    0x1.45d17cp-1,
+    (int)-9
+  },
+  { // Entry 393
+    0x1.45d17cp-9,
+    0x1.45d17cp-1,
+    (int)-8
+  },
+  { // Entry 394
+    0x1.45d17cp-8,
+    0x1.45d17cp-1,
+    (int)-7
+  },
+  { // Entry 395
+    0x1.45d17cp-7,
+    0x1.45d17cp-1,
+    (int)-6
+  },
+  { // Entry 396
+    0x1.45d17cp-6,
+    0x1.45d17cp-1,
+    (int)-5
+  },
+  { // Entry 397
+    0x1.45d17cp-5,
+    0x1.45d17cp-1,
+    (int)-4
+  },
+  { // Entry 398
+    0x1.45d17cp-4,
+    0x1.45d17cp-1,
+    (int)-3
+  },
+  { // Entry 399
+    0x1.45d17cp-3,
+    0x1.45d17cp-1,
+    (int)-2
+  },
+  { // Entry 400
+    0x1.45d17cp-2,
+    0x1.45d17cp-1,
+    (int)-1
+  },
+  { // Entry 401
+    0x1.45d17cp-1,
+    0x1.45d17cp-1,
+    (int)0
+  },
+  { // Entry 402
+    0x1.45d17cp0,
+    0x1.45d17cp-1,
+    (int)1
+  },
+  { // Entry 403
+    0x1.45d17cp1,
+    0x1.45d17cp-1,
+    (int)2
+  },
+  { // Entry 404
+    0x1.45d17cp2,
+    0x1.45d17cp-1,
+    (int)3
+  },
+  { // Entry 405
+    0x1.45d17cp3,
+    0x1.45d17cp-1,
+    (int)4
+  },
+  { // Entry 406
+    0x1.45d17cp4,
+    0x1.45d17cp-1,
+    (int)5
+  },
+  { // Entry 407
+    0x1.45d17cp5,
+    0x1.45d17cp-1,
+    (int)6
+  },
+  { // Entry 408
+    0x1.45d17cp6,
+    0x1.45d17cp-1,
+    (int)7
+  },
+  { // Entry 409
+    0x1.45d17cp7,
+    0x1.45d17cp-1,
+    (int)8
+  },
+  { // Entry 410
+    0x1.45d17cp8,
+    0x1.45d17cp-1,
+    (int)9
+  },
+  { // Entry 411
+    0x1.45d17cp9,
+    0x1.45d17cp-1,
+    (int)10
+  },
+  { // Entry 412
+    0x1.745d20p-11,
+    0x1.745d20p-1,
+    (int)-10
+  },
+  { // Entry 413
+    0x1.745d20p-10,
+    0x1.745d20p-1,
+    (int)-9
+  },
+  { // Entry 414
+    0x1.745d20p-9,
+    0x1.745d20p-1,
+    (int)-8
+  },
+  { // Entry 415
+    0x1.745d20p-8,
+    0x1.745d20p-1,
+    (int)-7
+  },
+  { // Entry 416
+    0x1.745d20p-7,
+    0x1.745d20p-1,
+    (int)-6
+  },
+  { // Entry 417
+    0x1.745d20p-6,
+    0x1.745d20p-1,
+    (int)-5
+  },
+  { // Entry 418
+    0x1.745d20p-5,
+    0x1.745d20p-1,
+    (int)-4
+  },
+  { // Entry 419
+    0x1.745d20p-4,
+    0x1.745d20p-1,
+    (int)-3
+  },
+  { // Entry 420
+    0x1.745d20p-3,
+    0x1.745d20p-1,
+    (int)-2
+  },
+  { // Entry 421
+    0x1.745d20p-2,
+    0x1.745d20p-1,
+    (int)-1
+  },
+  { // Entry 422
+    0x1.745d20p-1,
+    0x1.745d20p-1,
+    (int)0
+  },
+  { // Entry 423
+    0x1.745d20p0,
+    0x1.745d20p-1,
+    (int)1
+  },
+  { // Entry 424
+    0x1.745d20p1,
+    0x1.745d20p-1,
+    (int)2
+  },
+  { // Entry 425
+    0x1.745d20p2,
+    0x1.745d20p-1,
+    (int)3
+  },
+  { // Entry 426
+    0x1.745d20p3,
+    0x1.745d20p-1,
+    (int)4
+  },
+  { // Entry 427
+    0x1.745d20p4,
+    0x1.745d20p-1,
+    (int)5
+  },
+  { // Entry 428
+    0x1.745d20p5,
+    0x1.745d20p-1,
+    (int)6
+  },
+  { // Entry 429
+    0x1.745d20p6,
+    0x1.745d20p-1,
+    (int)7
+  },
+  { // Entry 430
+    0x1.745d20p7,
+    0x1.745d20p-1,
+    (int)8
+  },
+  { // Entry 431
+    0x1.745d20p8,
+    0x1.745d20p-1,
+    (int)9
+  },
+  { // Entry 432
+    0x1.745d20p9,
+    0x1.745d20p-1,
+    (int)10
+  },
+  { // Entry 433
+    0x1.a2e8c4p-11,
+    0x1.a2e8c4p-1,
+    (int)-10
+  },
+  { // Entry 434
+    0x1.a2e8c4p-10,
+    0x1.a2e8c4p-1,
+    (int)-9
+  },
+  { // Entry 435
+    0x1.a2e8c4p-9,
+    0x1.a2e8c4p-1,
+    (int)-8
+  },
+  { // Entry 436
+    0x1.a2e8c4p-8,
+    0x1.a2e8c4p-1,
+    (int)-7
+  },
+  { // Entry 437
+    0x1.a2e8c4p-7,
+    0x1.a2e8c4p-1,
+    (int)-6
+  },
+  { // Entry 438
+    0x1.a2e8c4p-6,
+    0x1.a2e8c4p-1,
+    (int)-5
+  },
+  { // Entry 439
+    0x1.a2e8c4p-5,
+    0x1.a2e8c4p-1,
+    (int)-4
+  },
+  { // Entry 440
+    0x1.a2e8c4p-4,
+    0x1.a2e8c4p-1,
+    (int)-3
+  },
+  { // Entry 441
+    0x1.a2e8c4p-3,
+    0x1.a2e8c4p-1,
+    (int)-2
+  },
+  { // Entry 442
+    0x1.a2e8c4p-2,
+    0x1.a2e8c4p-1,
+    (int)-1
+  },
+  { // Entry 443
+    0x1.a2e8c4p-1,
+    0x1.a2e8c4p-1,
+    (int)0
+  },
+  { // Entry 444
+    0x1.a2e8c4p0,
+    0x1.a2e8c4p-1,
+    (int)1
+  },
+  { // Entry 445
+    0x1.a2e8c4p1,
+    0x1.a2e8c4p-1,
+    (int)2
+  },
+  { // Entry 446
+    0x1.a2e8c4p2,
+    0x1.a2e8c4p-1,
+    (int)3
+  },
+  { // Entry 447
+    0x1.a2e8c4p3,
+    0x1.a2e8c4p-1,
+    (int)4
+  },
+  { // Entry 448
+    0x1.a2e8c4p4,
+    0x1.a2e8c4p-1,
+    (int)5
+  },
+  { // Entry 449
+    0x1.a2e8c4p5,
+    0x1.a2e8c4p-1,
+    (int)6
+  },
+  { // Entry 450
+    0x1.a2e8c4p6,
+    0x1.a2e8c4p-1,
+    (int)7
+  },
+  { // Entry 451
+    0x1.a2e8c4p7,
+    0x1.a2e8c4p-1,
+    (int)8
+  },
+  { // Entry 452
+    0x1.a2e8c4p8,
+    0x1.a2e8c4p-1,
+    (int)9
+  },
+  { // Entry 453
+    0x1.a2e8c4p9,
+    0x1.a2e8c4p-1,
+    (int)10
+  },
+  { // Entry 454
+    0x1.d17468p-11,
+    0x1.d17468p-1,
+    (int)-10
+  },
+  { // Entry 455
+    0x1.d17468p-10,
+    0x1.d17468p-1,
+    (int)-9
+  },
+  { // Entry 456
+    0x1.d17468p-9,
+    0x1.d17468p-1,
+    (int)-8
+  },
+  { // Entry 457
+    0x1.d17468p-8,
+    0x1.d17468p-1,
+    (int)-7
+  },
+  { // Entry 458
+    0x1.d17468p-7,
+    0x1.d17468p-1,
+    (int)-6
+  },
+  { // Entry 459
+    0x1.d17468p-6,
+    0x1.d17468p-1,
+    (int)-5
+  },
+  { // Entry 460
+    0x1.d17468p-5,
+    0x1.d17468p-1,
+    (int)-4
+  },
+  { // Entry 461
+    0x1.d17468p-4,
+    0x1.d17468p-1,
+    (int)-3
+  },
+  { // Entry 462
+    0x1.d17468p-3,
+    0x1.d17468p-1,
+    (int)-2
+  },
+  { // Entry 463
+    0x1.d17468p-2,
+    0x1.d17468p-1,
+    (int)-1
+  },
+  { // Entry 464
+    0x1.d17468p-1,
+    0x1.d17468p-1,
+    (int)0
+  },
+  { // Entry 465
+    0x1.d17468p0,
+    0x1.d17468p-1,
+    (int)1
+  },
+  { // Entry 466
+    0x1.d17468p1,
+    0x1.d17468p-1,
+    (int)2
+  },
+  { // Entry 467
+    0x1.d17468p2,
+    0x1.d17468p-1,
+    (int)3
+  },
+  { // Entry 468
+    0x1.d17468p3,
+    0x1.d17468p-1,
+    (int)4
+  },
+  { // Entry 469
+    0x1.d17468p4,
+    0x1.d17468p-1,
+    (int)5
+  },
+  { // Entry 470
+    0x1.d17468p5,
+    0x1.d17468p-1,
+    (int)6
+  },
+  { // Entry 471
+    0x1.d17468p6,
+    0x1.d17468p-1,
+    (int)7
+  },
+  { // Entry 472
+    0x1.d17468p7,
+    0x1.d17468p-1,
+    (int)8
+  },
+  { // Entry 473
+    0x1.d17468p8,
+    0x1.d17468p-1,
+    (int)9
+  },
+  { // Entry 474
+    0x1.d17468p9,
+    0x1.d17468p-1,
+    (int)10
+  },
+  { // Entry 475
+    0x1.p-10,
+    0x1.p0,
+    (int)-10
+  },
+  { // Entry 476
+    0x1.p-9,
+    0x1.p0,
+    (int)-9
+  },
+  { // Entry 477
+    0x1.p-8,
+    0x1.p0,
+    (int)-8
+  },
+  { // Entry 478
+    0x1.p-7,
+    0x1.p0,
+    (int)-7
+  },
+  { // Entry 479
+    0x1.p-6,
+    0x1.p0,
+    (int)-6
+  },
+  { // Entry 480
+    0x1.p-5,
+    0x1.p0,
+    (int)-5
+  },
+  { // Entry 481
+    0x1.p-4,
+    0x1.p0,
+    (int)-4
+  },
+  { // Entry 482
+    0x1.p-3,
+    0x1.p0,
+    (int)-3
+  },
+  { // Entry 483
+    0x1.p-2,
+    0x1.p0,
+    (int)-2
+  },
+  { // Entry 484
+    0x1.p-1,
+    0x1.p0,
+    (int)-1
+  },
+  { // Entry 485
+    0x1.p0,
+    0x1.p0,
+    (int)0
+  },
+  { // Entry 486
+    0x1.p1,
+    0x1.p0,
+    (int)1
+  },
+  { // Entry 487
+    0x1.p2,
+    0x1.p0,
+    (int)2
+  },
+  { // Entry 488
+    0x1.p3,
+    0x1.p0,
+    (int)3
+  },
+  { // Entry 489
+    0x1.p4,
+    0x1.p0,
+    (int)4
+  },
+  { // Entry 490
+    0x1.p5,
+    0x1.p0,
+    (int)5
+  },
+  { // Entry 491
+    0x1.p6,
+    0x1.p0,
+    (int)6
+  },
+  { // Entry 492
+    0x1.p7,
+    0x1.p0,
+    (int)7
+  },
+  { // Entry 493
+    0x1.p8,
+    0x1.p0,
+    (int)8
+  },
+  { // Entry 494
+    0x1.p9,
+    0x1.p0,
+    (int)9
+  },
+  { // Entry 495
+    0x1.p10,
+    0x1.p0,
+    (int)10
+  },
+  { // Entry 496
+    0x1.fffffep0,
+    0x1.fffffep127,
+    (int)-127
+  },
+  { // Entry 497
+    0x1.fffffep1,
+    0x1.fffffep127,
+    (int)-126
+  },
+  { // Entry 498
+    0x1.fffffep117,
+    0x1.fffffep127,
+    (int)-10
+  },
+  { // Entry 499
+    0x1.fffffep118,
+    0x1.fffffep127,
+    (int)-9
+  },
+  { // Entry 500
+    0x1.fffffep119,
+    0x1.fffffep127,
+    (int)-8
+  },
+  { // Entry 501
+    0x1.fffffep120,
+    0x1.fffffep127,
+    (int)-7
+  },
+  { // Entry 502
+    0x1.fffffep121,
+    0x1.fffffep127,
+    (int)-6
+  },
+  { // Entry 503
+    0x1.fffffep122,
+    0x1.fffffep127,
+    (int)-5
+  },
+  { // Entry 504
+    0x1.fffffep123,
+    0x1.fffffep127,
+    (int)-4
+  },
+  { // Entry 505
+    0x1.fffffep124,
+    0x1.fffffep127,
+    (int)-3
+  },
+  { // Entry 506
+    0x1.fffffep125,
+    0x1.fffffep127,
+    (int)-2
+  },
+  { // Entry 507
+    0x1.fffffep126,
+    0x1.fffffep127,
+    (int)-1
+  },
+  { // Entry 508
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 509
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 510
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 511
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 512
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 513
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 514
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 515
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 516
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 517
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 518
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 519
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 520
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 521
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 522
+    0x1.p-129,
+    0x1.p-2,
+    (int)-127
+  },
+  { // Entry 523
+    0x1.p-128,
+    0x1.p-2,
+    (int)-126
+  },
+  { // Entry 524
+    0x1.p-128,
+    0x1.p-1,
+    (int)-127
+  },
+  { // Entry 525
+    0x1.p-127,
+    0x1.p-1,
+    (int)-126
+  },
+  { // Entry 526
+    0x1.80p-128,
+    0x1.80p-1,
+    (int)-127
+  },
+  { // Entry 527
+    0x1.80p-127,
+    0x1.80p-1,
+    (int)-126
+  },
+  { // Entry 528
+    0.0f,
+    0x1.p-2,
+    (int)-149
+  },
+  { // Entry 529
+    0.0f,
+    0x1.p-2,
+    (int)-148
+  },
+  { // Entry 530
+    0.0f,
+    0x1.p-1,
+    (int)-149
+  },
+  { // Entry 531
+    0x1.p-149,
+    0x1.p-1,
+    (int)-148
+  },
+  { // Entry 532
+    0.0f,
+    0x1.80p-1,
+    (int)-149
+  },
+  { // Entry 533
+    0x1.80p-149,
+    0x1.80p-1,
+    (int)-148
+  },
+  { // Entry 534
+    0x1.p127,
+    0x1.p0,
+    (int)127
+  },
+  { // Entry 535
+    0x1.p126,
+    0x1.p0,
+    (int)126
+  },
+  { // Entry 536
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 537
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 538
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 539
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 540
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 541
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 542
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 543
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 544
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 545
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 546
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 547
+    0x1.p-138,
+    0x1.p-149,
+    (int)11
+  },
+  { // Entry 548
+    0x1.p-137,
+    0x1.p-149,
+    (int)12
+  },
+  { // Entry 549
+    0x1.p-136,
+    0x1.p-149,
+    (int)13
+  },
+  { // Entry 550
+    0x1.p-135,
+    0x1.p-149,
+    (int)14
+  },
+  { // Entry 551
+    0x1.p-134,
+    0x1.p-149,
+    (int)15
+  },
+  { // Entry 552
+    0x1.p-133,
+    0x1.p-149,
+    (int)16
+  },
+  { // Entry 553
+    0x1.p-132,
+    0x1.p-149,
+    (int)17
+  },
+  { // Entry 554
+    0x1.p-131,
+    0x1.p-149,
+    (int)18
+  },
+  { // Entry 555
+    0x1.p-130,
+    0x1.p-149,
+    (int)19
+  },
+  { // Entry 556
+    0x1.p-129,
+    0x1.p-149,
+    (int)20
+  },
+  { // Entry 557
+    0x1.p-128,
+    0x1.p-149,
+    (int)21
+  },
+  { // Entry 558
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 559
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 560
+    0x1.p-125,
+    0x1.p-149,
+    (int)24
+  },
+  { // Entry 561
+    0x1.p-124,
+    0x1.p-149,
+    (int)25
+  },
+  { // Entry 562
+    0x1.p-123,
+    0x1.p-149,
+    (int)26
+  },
+  { // Entry 563
+    0x1.p-122,
+    0x1.p-149,
+    (int)27
+  },
+  { // Entry 564
+    0x1.p-121,
+    0x1.p-149,
+    (int)28
+  },
+  { // Entry 565
+    0x1.p-120,
+    0x1.p-149,
+    (int)29
+  },
+  { // Entry 566
+    0x1.p-119,
+    0x1.p-149,
+    (int)30
+  },
+  { // Entry 567
+    0x1.p-118,
+    0x1.p-149,
+    (int)31
+  },
+  { // Entry 568
+    0x1.p-117,
+    0x1.p-149,
+    (int)32
+  },
+  { // Entry 569
+    0x1.p-116,
+    0x1.p-149,
+    (int)33
+  },
+  { // Entry 570
+    0x1.p-115,
+    0x1.p-149,
+    (int)34
+  },
+  { // Entry 571
+    0x1.p-114,
+    0x1.p-149,
+    (int)35
+  },
+  { // Entry 572
+    0x1.p-113,
+    0x1.p-149,
+    (int)36
+  },
+  { // Entry 573
+    0x1.p-112,
+    0x1.p-149,
+    (int)37
+  },
+  { // Entry 574
+    0x1.p-111,
+    0x1.p-149,
+    (int)38
+  },
+  { // Entry 575
+    0x1.p-110,
+    0x1.p-149,
+    (int)39
+  },
+  { // Entry 576
+    0x1.p-109,
+    0x1.p-149,
+    (int)40
+  },
+  { // Entry 577
+    0x1.p-108,
+    0x1.p-149,
+    (int)41
+  },
+  { // Entry 578
+    0x1.p-107,
+    0x1.p-149,
+    (int)42
+  },
+  { // Entry 579
+    0x1.p-106,
+    0x1.p-149,
+    (int)43
+  },
+  { // Entry 580
+    0x1.p-105,
+    0x1.p-149,
+    (int)44
+  },
+  { // Entry 581
+    0x1.p-104,
+    0x1.p-149,
+    (int)45
+  },
+  { // Entry 582
+    0x1.p-103,
+    0x1.p-149,
+    (int)46
+  },
+  { // Entry 583
+    0x1.p-102,
+    0x1.p-149,
+    (int)47
+  },
+  { // Entry 584
+    0x1.p-101,
+    0x1.p-149,
+    (int)48
+  },
+  { // Entry 585
+    0x1.p-100,
+    0x1.p-149,
+    (int)49
+  },
+  { // Entry 586
+    0x1.p-99,
+    0x1.p-149,
+    (int)50
+  },
+  { // Entry 587
+    0x1.p-98,
+    0x1.p-149,
+    (int)51
+  },
+  { // Entry 588
+    0x1.p-97,
+    0x1.p-149,
+    (int)52
+  },
+  { // Entry 589
+    0x1.p-96,
+    0x1.p-149,
+    (int)53
+  },
+  { // Entry 590
+    0x1.p-95,
+    0x1.p-149,
+    (int)54
+  },
+  { // Entry 591
+    0x1.p-94,
+    0x1.p-149,
+    (int)55
+  },
+  { // Entry 592
+    0x1.p-93,
+    0x1.p-149,
+    (int)56
+  },
+  { // Entry 593
+    0x1.p-92,
+    0x1.p-149,
+    (int)57
+  },
+  { // Entry 594
+    0x1.p-91,
+    0x1.p-149,
+    (int)58
+  },
+  { // Entry 595
+    0x1.p-90,
+    0x1.p-149,
+    (int)59
+  },
+  { // Entry 596
+    0x1.p-89,
+    0x1.p-149,
+    (int)60
+  },
+  { // Entry 597
+    0x1.p-88,
+    0x1.p-149,
+    (int)61
+  },
+  { // Entry 598
+    0x1.p-87,
+    0x1.p-149,
+    (int)62
+  },
+  { // Entry 599
+    0x1.p-86,
+    0x1.p-149,
+    (int)63
+  },
+  { // Entry 600
+    0x1.p-85,
+    0x1.p-149,
+    (int)64
+  },
+  { // Entry 601
+    0x1.p-84,
+    0x1.p-149,
+    (int)65
+  },
+  { // Entry 602
+    0x1.p-83,
+    0x1.p-149,
+    (int)66
+  },
+  { // Entry 603
+    0x1.p-82,
+    0x1.p-149,
+    (int)67
+  },
+  { // Entry 604
+    0x1.p-81,
+    0x1.p-149,
+    (int)68
+  },
+  { // Entry 605
+    0x1.p-80,
+    0x1.p-149,
+    (int)69
+  },
+  { // Entry 606
+    0x1.p-79,
+    0x1.p-149,
+    (int)70
+  },
+  { // Entry 607
+    0x1.p-78,
+    0x1.p-149,
+    (int)71
+  },
+  { // Entry 608
+    0x1.p-77,
+    0x1.p-149,
+    (int)72
+  },
+  { // Entry 609
+    0x1.p-76,
+    0x1.p-149,
+    (int)73
+  },
+  { // Entry 610
+    0x1.p-75,
+    0x1.p-149,
+    (int)74
+  },
+  { // Entry 611
+    0x1.p-74,
+    0x1.p-149,
+    (int)75
+  },
+  { // Entry 612
+    0x1.p-73,
+    0x1.p-149,
+    (int)76
+  },
+  { // Entry 613
+    0x1.p-72,
+    0x1.p-149,
+    (int)77
+  },
+  { // Entry 614
+    0x1.p-71,
+    0x1.p-149,
+    (int)78
+  },
+  { // Entry 615
+    0x1.p-70,
+    0x1.p-149,
+    (int)79
+  },
+  { // Entry 616
+    0x1.p-69,
+    0x1.p-149,
+    (int)80
+  },
+  { // Entry 617
+    0x1.p-68,
+    0x1.p-149,
+    (int)81
+  },
+  { // Entry 618
+    0x1.p-67,
+    0x1.p-149,
+    (int)82
+  },
+  { // Entry 619
+    0x1.p-66,
+    0x1.p-149,
+    (int)83
+  },
+  { // Entry 620
+    0x1.p-65,
+    0x1.p-149,
+    (int)84
+  },
+  { // Entry 621
+    0x1.p-64,
+    0x1.p-149,
+    (int)85
+  },
+  { // Entry 622
+    0x1.p-63,
+    0x1.p-149,
+    (int)86
+  },
+  { // Entry 623
+    0x1.p-62,
+    0x1.p-149,
+    (int)87
+  },
+  { // Entry 624
+    0x1.p-61,
+    0x1.p-149,
+    (int)88
+  },
+  { // Entry 625
+    0x1.p-60,
+    0x1.p-149,
+    (int)89
+  },
+  { // Entry 626
+    0x1.p-59,
+    0x1.p-149,
+    (int)90
+  },
+  { // Entry 627
+    0x1.p-58,
+    0x1.p-149,
+    (int)91
+  },
+  { // Entry 628
+    0x1.p-57,
+    0x1.p-149,
+    (int)92
+  },
+  { // Entry 629
+    0x1.p-56,
+    0x1.p-149,
+    (int)93
+  },
+  { // Entry 630
+    0x1.p-55,
+    0x1.p-149,
+    (int)94
+  },
+  { // Entry 631
+    0x1.p-54,
+    0x1.p-149,
+    (int)95
+  },
+  { // Entry 632
+    0x1.p-53,
+    0x1.p-149,
+    (int)96
+  },
+  { // Entry 633
+    0x1.p-52,
+    0x1.p-149,
+    (int)97
+  },
+  { // Entry 634
+    0x1.p-51,
+    0x1.p-149,
+    (int)98
+  },
+  { // Entry 635
+    0x1.p-50,
+    0x1.p-149,
+    (int)99
+  },
+  { // Entry 636
+    0x1.p-49,
+    0x1.p-149,
+    (int)100
+  },
+  { // Entry 637
+    0x1.p-48,
+    0x1.p-149,
+    (int)101
+  },
+  { // Entry 638
+    0x1.p-47,
+    0x1.p-149,
+    (int)102
+  },
+  { // Entry 639
+    0x1.p-46,
+    0x1.p-149,
+    (int)103
+  },
+  { // Entry 640
+    0x1.p-45,
+    0x1.p-149,
+    (int)104
+  },
+  { // Entry 641
+    0x1.p-44,
+    0x1.p-149,
+    (int)105
+  },
+  { // Entry 642
+    0x1.p-43,
+    0x1.p-149,
+    (int)106
+  },
+  { // Entry 643
+    0x1.p-42,
+    0x1.p-149,
+    (int)107
+  },
+  { // Entry 644
+    0x1.p-41,
+    0x1.p-149,
+    (int)108
+  },
+  { // Entry 645
+    0x1.p-40,
+    0x1.p-149,
+    (int)109
+  },
+  { // Entry 646
+    0x1.p-39,
+    0x1.p-149,
+    (int)110
+  },
+  { // Entry 647
+    0x1.p-38,
+    0x1.p-149,
+    (int)111
+  },
+  { // Entry 648
+    0x1.p-37,
+    0x1.p-149,
+    (int)112
+  },
+  { // Entry 649
+    0x1.p-36,
+    0x1.p-149,
+    (int)113
+  },
+  { // Entry 650
+    0x1.p-35,
+    0x1.p-149,
+    (int)114
+  },
+  { // Entry 651
+    0x1.p-34,
+    0x1.p-149,
+    (int)115
+  },
+  { // Entry 652
+    0x1.p-33,
+    0x1.p-149,
+    (int)116
+  },
+  { // Entry 653
+    0x1.p-32,
+    0x1.p-149,
+    (int)117
+  },
+  { // Entry 654
+    0x1.p-31,
+    0x1.p-149,
+    (int)118
+  },
+  { // Entry 655
+    0x1.p-30,
+    0x1.p-149,
+    (int)119
+  },
+  { // Entry 656
+    0x1.p-29,
+    0x1.p-149,
+    (int)120
+  },
+  { // Entry 657
+    0x1.p-28,
+    0x1.p-149,
+    (int)121
+  },
+  { // Entry 658
+    0x1.p-27,
+    0x1.p-149,
+    (int)122
+  },
+  { // Entry 659
+    0x1.p-26,
+    0x1.p-149,
+    (int)123
+  },
+  { // Entry 660
+    0x1.p-25,
+    0x1.p-149,
+    (int)124
+  },
+  { // Entry 661
+    0x1.p-24,
+    0x1.p-149,
+    (int)125
+  },
+  { // Entry 662
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 663
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 664
+    0x1.p-21,
+    0x1.p-149,
+    (int)128
+  },
+  { // Entry 665
+    0x1.p-20,
+    0x1.p-149,
+    (int)129
+  },
+  { // Entry 666
+    0x1.p-19,
+    0x1.p-149,
+    (int)130
+  },
+  { // Entry 667
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 668
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 669
+    0x1.fffffcp-125,
+    0x1.fffffcp-127,
+    (int)2
+  },
+  { // Entry 670
+    0x1.fffffcp-124,
+    0x1.fffffcp-127,
+    (int)3
+  },
+  { // Entry 671
+    0x1.fffffcp-123,
+    0x1.fffffcp-127,
+    (int)4
+  },
+  { // Entry 672
+    0x1.fffffcp-122,
+    0x1.fffffcp-127,
+    (int)5
+  },
+  { // Entry 673
+    0x1.fffffcp-121,
+    0x1.fffffcp-127,
+    (int)6
+  },
+  { // Entry 674
+    0x1.fffffcp-120,
+    0x1.fffffcp-127,
+    (int)7
+  },
+  { // Entry 675
+    0x1.fffffcp-119,
+    0x1.fffffcp-127,
+    (int)8
+  },
+  { // Entry 676
+    0x1.fffffcp-118,
+    0x1.fffffcp-127,
+    (int)9
+  },
+  { // Entry 677
+    0x1.fffffcp-117,
+    0x1.fffffcp-127,
+    (int)10
+  },
+  { // Entry 678
+    0x1.fffffcp-116,
+    0x1.fffffcp-127,
+    (int)11
+  },
+  { // Entry 679
+    0x1.fffffcp-115,
+    0x1.fffffcp-127,
+    (int)12
+  },
+  { // Entry 680
+    0x1.fffffcp-114,
+    0x1.fffffcp-127,
+    (int)13
+  },
+  { // Entry 681
+    0x1.fffffcp-113,
+    0x1.fffffcp-127,
+    (int)14
+  },
+  { // Entry 682
+    0x1.fffffcp-112,
+    0x1.fffffcp-127,
+    (int)15
+  },
+  { // Entry 683
+    0x1.fffffcp-111,
+    0x1.fffffcp-127,
+    (int)16
+  },
+  { // Entry 684
+    0x1.fffffcp-110,
+    0x1.fffffcp-127,
+    (int)17
+  },
+  { // Entry 685
+    0x1.fffffcp-109,
+    0x1.fffffcp-127,
+    (int)18
+  },
+  { // Entry 686
+    0x1.fffffcp-108,
+    0x1.fffffcp-127,
+    (int)19
+  },
+  { // Entry 687
+    0x1.fffffcp-107,
+    0x1.fffffcp-127,
+    (int)20
+  },
+  { // Entry 688
+    0x1.fffffcp-106,
+    0x1.fffffcp-127,
+    (int)21
+  },
+  { // Entry 689
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 690
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 691
+    0x1.fffffcp-103,
+    0x1.fffffcp-127,
+    (int)24
+  },
+  { // Entry 692
+    0x1.fffffcp-102,
+    0x1.fffffcp-127,
+    (int)25
+  },
+  { // Entry 693
+    0x1.fffffcp-101,
+    0x1.fffffcp-127,
+    (int)26
+  },
+  { // Entry 694
+    0x1.fffffcp-100,
+    0x1.fffffcp-127,
+    (int)27
+  },
+  { // Entry 695
+    0x1.fffffcp-99,
+    0x1.fffffcp-127,
+    (int)28
+  },
+  { // Entry 696
+    0x1.fffffcp-98,
+    0x1.fffffcp-127,
+    (int)29
+  },
+  { // Entry 697
+    0x1.fffffcp-97,
+    0x1.fffffcp-127,
+    (int)30
+  },
+  { // Entry 698
+    0x1.fffffcp-96,
+    0x1.fffffcp-127,
+    (int)31
+  },
+  { // Entry 699
+    0x1.fffffcp-95,
+    0x1.fffffcp-127,
+    (int)32
+  },
+  { // Entry 700
+    0x1.fffffcp-94,
+    0x1.fffffcp-127,
+    (int)33
+  },
+  { // Entry 701
+    0x1.fffffcp-93,
+    0x1.fffffcp-127,
+    (int)34
+  },
+  { // Entry 702
+    0x1.fffffcp-92,
+    0x1.fffffcp-127,
+    (int)35
+  },
+  { // Entry 703
+    0x1.fffffcp-91,
+    0x1.fffffcp-127,
+    (int)36
+  },
+  { // Entry 704
+    0x1.fffffcp-90,
+    0x1.fffffcp-127,
+    (int)37
+  },
+  { // Entry 705
+    0x1.fffffcp-89,
+    0x1.fffffcp-127,
+    (int)38
+  },
+  { // Entry 706
+    0x1.fffffcp-88,
+    0x1.fffffcp-127,
+    (int)39
+  },
+  { // Entry 707
+    0x1.fffffcp-87,
+    0x1.fffffcp-127,
+    (int)40
+  },
+  { // Entry 708
+    0x1.fffffcp-86,
+    0x1.fffffcp-127,
+    (int)41
+  },
+  { // Entry 709
+    0x1.fffffcp-85,
+    0x1.fffffcp-127,
+    (int)42
+  },
+  { // Entry 710
+    0x1.fffffcp-84,
+    0x1.fffffcp-127,
+    (int)43
+  },
+  { // Entry 711
+    0x1.fffffcp-83,
+    0x1.fffffcp-127,
+    (int)44
+  },
+  { // Entry 712
+    0x1.fffffcp-82,
+    0x1.fffffcp-127,
+    (int)45
+  },
+  { // Entry 713
+    0x1.fffffcp-81,
+    0x1.fffffcp-127,
+    (int)46
+  },
+  { // Entry 714
+    0x1.fffffcp-80,
+    0x1.fffffcp-127,
+    (int)47
+  },
+  { // Entry 715
+    0x1.fffffcp-79,
+    0x1.fffffcp-127,
+    (int)48
+  },
+  { // Entry 716
+    0x1.fffffcp-78,
+    0x1.fffffcp-127,
+    (int)49
+  },
+  { // Entry 717
+    0x1.fffffcp-77,
+    0x1.fffffcp-127,
+    (int)50
+  },
+  { // Entry 718
+    0x1.fffffcp-76,
+    0x1.fffffcp-127,
+    (int)51
+  },
+  { // Entry 719
+    0x1.fffffcp-75,
+    0x1.fffffcp-127,
+    (int)52
+  },
+  { // Entry 720
+    0x1.fffffcp-74,
+    0x1.fffffcp-127,
+    (int)53
+  },
+  { // Entry 721
+    0x1.fffffcp-73,
+    0x1.fffffcp-127,
+    (int)54
+  },
+  { // Entry 722
+    0x1.fffffcp-72,
+    0x1.fffffcp-127,
+    (int)55
+  },
+  { // Entry 723
+    0x1.fffffcp-71,
+    0x1.fffffcp-127,
+    (int)56
+  },
+  { // Entry 724
+    0x1.fffffcp-70,
+    0x1.fffffcp-127,
+    (int)57
+  },
+  { // Entry 725
+    0x1.fffffcp-69,
+    0x1.fffffcp-127,
+    (int)58
+  },
+  { // Entry 726
+    0x1.fffffcp-68,
+    0x1.fffffcp-127,
+    (int)59
+  },
+  { // Entry 727
+    0x1.fffffcp-67,
+    0x1.fffffcp-127,
+    (int)60
+  },
+  { // Entry 728
+    0x1.fffffcp-66,
+    0x1.fffffcp-127,
+    (int)61
+  },
+  { // Entry 729
+    0x1.fffffcp-65,
+    0x1.fffffcp-127,
+    (int)62
+  },
+  { // Entry 730
+    0x1.fffffcp-64,
+    0x1.fffffcp-127,
+    (int)63
+  },
+  { // Entry 731
+    0x1.fffffcp-63,
+    0x1.fffffcp-127,
+    (int)64
+  },
+  { // Entry 732
+    0x1.fffffcp-62,
+    0x1.fffffcp-127,
+    (int)65
+  },
+  { // Entry 733
+    0x1.fffffcp-61,
+    0x1.fffffcp-127,
+    (int)66
+  },
+  { // Entry 734
+    0x1.fffffcp-60,
+    0x1.fffffcp-127,
+    (int)67
+  },
+  { // Entry 735
+    0x1.fffffcp-59,
+    0x1.fffffcp-127,
+    (int)68
+  },
+  { // Entry 736
+    0x1.fffffcp-58,
+    0x1.fffffcp-127,
+    (int)69
+  },
+  { // Entry 737
+    0x1.fffffcp-57,
+    0x1.fffffcp-127,
+    (int)70
+  },
+  { // Entry 738
+    0x1.fffffcp-56,
+    0x1.fffffcp-127,
+    (int)71
+  },
+  { // Entry 739
+    0x1.fffffcp-55,
+    0x1.fffffcp-127,
+    (int)72
+  },
+  { // Entry 740
+    0x1.fffffcp-54,
+    0x1.fffffcp-127,
+    (int)73
+  },
+  { // Entry 741
+    0x1.fffffcp-53,
+    0x1.fffffcp-127,
+    (int)74
+  },
+  { // Entry 742
+    0x1.fffffcp-52,
+    0x1.fffffcp-127,
+    (int)75
+  },
+  { // Entry 743
+    0x1.fffffcp-51,
+    0x1.fffffcp-127,
+    (int)76
+  },
+  { // Entry 744
+    0x1.fffffcp-50,
+    0x1.fffffcp-127,
+    (int)77
+  },
+  { // Entry 745
+    0x1.fffffcp-49,
+    0x1.fffffcp-127,
+    (int)78
+  },
+  { // Entry 746
+    0x1.fffffcp-48,
+    0x1.fffffcp-127,
+    (int)79
+  },
+  { // Entry 747
+    0x1.fffffcp-47,
+    0x1.fffffcp-127,
+    (int)80
+  },
+  { // Entry 748
+    0x1.fffffcp-46,
+    0x1.fffffcp-127,
+    (int)81
+  },
+  { // Entry 749
+    0x1.fffffcp-45,
+    0x1.fffffcp-127,
+    (int)82
+  },
+  { // Entry 750
+    0x1.fffffcp-44,
+    0x1.fffffcp-127,
+    (int)83
+  },
+  { // Entry 751
+    0x1.fffffcp-43,
+    0x1.fffffcp-127,
+    (int)84
+  },
+  { // Entry 752
+    0x1.fffffcp-42,
+    0x1.fffffcp-127,
+    (int)85
+  },
+  { // Entry 753
+    0x1.fffffcp-41,
+    0x1.fffffcp-127,
+    (int)86
+  },
+  { // Entry 754
+    0x1.fffffcp-40,
+    0x1.fffffcp-127,
+    (int)87
+  },
+  { // Entry 755
+    0x1.fffffcp-39,
+    0x1.fffffcp-127,
+    (int)88
+  },
+  { // Entry 756
+    0x1.fffffcp-38,
+    0x1.fffffcp-127,
+    (int)89
+  },
+  { // Entry 757
+    0x1.fffffcp-37,
+    0x1.fffffcp-127,
+    (int)90
+  },
+  { // Entry 758
+    0x1.fffffcp-36,
+    0x1.fffffcp-127,
+    (int)91
+  },
+  { // Entry 759
+    0x1.fffffcp-35,
+    0x1.fffffcp-127,
+    (int)92
+  },
+  { // Entry 760
+    0x1.fffffcp-34,
+    0x1.fffffcp-127,
+    (int)93
+  },
+  { // Entry 761
+    0x1.fffffcp-33,
+    0x1.fffffcp-127,
+    (int)94
+  },
+  { // Entry 762
+    0x1.fffffcp-32,
+    0x1.fffffcp-127,
+    (int)95
+  },
+  { // Entry 763
+    0x1.fffffcp-31,
+    0x1.fffffcp-127,
+    (int)96
+  },
+  { // Entry 764
+    0x1.fffffcp-30,
+    0x1.fffffcp-127,
+    (int)97
+  },
+  { // Entry 765
+    0x1.fffffcp-29,
+    0x1.fffffcp-127,
+    (int)98
+  },
+  { // Entry 766
+    0x1.fffffcp-28,
+    0x1.fffffcp-127,
+    (int)99
+  },
+  { // Entry 767
+    0x1.fffffcp-27,
+    0x1.fffffcp-127,
+    (int)100
+  },
+  { // Entry 768
+    0x1.fffffcp-26,
+    0x1.fffffcp-127,
+    (int)101
+  },
+  { // Entry 769
+    0x1.fffffcp-25,
+    0x1.fffffcp-127,
+    (int)102
+  },
+  { // Entry 770
+    0x1.fffffcp-24,
+    0x1.fffffcp-127,
+    (int)103
+  },
+  { // Entry 771
+    0x1.fffffcp-23,
+    0x1.fffffcp-127,
+    (int)104
+  },
+  { // Entry 772
+    0x1.fffffcp-22,
+    0x1.fffffcp-127,
+    (int)105
+  },
+  { // Entry 773
+    0x1.fffffcp-21,
+    0x1.fffffcp-127,
+    (int)106
+  },
+  { // Entry 774
+    0x1.fffffcp-20,
+    0x1.fffffcp-127,
+    (int)107
+  },
+  { // Entry 775
+    0x1.fffffcp-19,
+    0x1.fffffcp-127,
+    (int)108
+  },
+  { // Entry 776
+    0x1.fffffcp-18,
+    0x1.fffffcp-127,
+    (int)109
+  },
+  { // Entry 777
+    0x1.fffffcp-17,
+    0x1.fffffcp-127,
+    (int)110
+  },
+  { // Entry 778
+    0x1.fffffcp-16,
+    0x1.fffffcp-127,
+    (int)111
+  },
+  { // Entry 779
+    0x1.fffffcp-15,
+    0x1.fffffcp-127,
+    (int)112
+  },
+  { // Entry 780
+    0x1.fffffcp-14,
+    0x1.fffffcp-127,
+    (int)113
+  },
+  { // Entry 781
+    0x1.fffffcp-13,
+    0x1.fffffcp-127,
+    (int)114
+  },
+  { // Entry 782
+    0x1.fffffcp-12,
+    0x1.fffffcp-127,
+    (int)115
+  },
+  { // Entry 783
+    0x1.fffffcp-11,
+    0x1.fffffcp-127,
+    (int)116
+  },
+  { // Entry 784
+    0x1.fffffcp-10,
+    0x1.fffffcp-127,
+    (int)117
+  },
+  { // Entry 785
+    0x1.fffffcp-9,
+    0x1.fffffcp-127,
+    (int)118
+  },
+  { // Entry 786
+    0x1.fffffcp-8,
+    0x1.fffffcp-127,
+    (int)119
+  },
+  { // Entry 787
+    0x1.fffffcp-7,
+    0x1.fffffcp-127,
+    (int)120
+  },
+  { // Entry 788
+    0x1.fffffcp-6,
+    0x1.fffffcp-127,
+    (int)121
+  },
+  { // Entry 789
+    0x1.fffffcp-5,
+    0x1.fffffcp-127,
+    (int)122
+  },
+  { // Entry 790
+    0x1.fffffcp-4,
+    0x1.fffffcp-127,
+    (int)123
+  },
+  { // Entry 791
+    0x1.fffffcp-3,
+    0x1.fffffcp-127,
+    (int)124
+  },
+  { // Entry 792
+    0x1.fffffcp-2,
+    0x1.fffffcp-127,
+    (int)125
+  },
+  { // Entry 793
+    0x1.fffffcp-1,
+    0x1.fffffcp-127,
+    (int)126
+  },
+  { // Entry 794
+    0x1.fffffcp0,
+    0x1.fffffcp-127,
+    (int)127
+  },
+  { // Entry 795
+    0x1.fffffcp1,
+    0x1.fffffcp-127,
+    (int)128
+  },
+  { // Entry 796
+    0x1.fffffcp2,
+    0x1.fffffcp-127,
+    (int)129
+  },
+  { // Entry 797
+    0x1.fffffcp3,
+    0x1.fffffcp-127,
+    (int)130
+  },
+  { // Entry 798
+    0x1.p0,
+    0x1.p-149,
+    (int)149
+  },
+  { // Entry 799
+    0x1.p-1,
+    0x1.p-149,
+    (int)148
+  },
+  { // Entry 800
+    0x1.fffffcp22,
+    0x1.fffffcp-127,
+    (int)149
+  },
+  { // Entry 801
+    0x1.fffffcp21,
+    0x1.fffffcp-127,
+    (int)148
+  },
+  { // Entry 802
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 803
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 804
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 805
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 806
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 807
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 808
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 809
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 810
+    0.0,
+    0.0f,
+    (int)0
+  },
+  { // Entry 811
+    -0.0,
+    -0.0f,
+    (int)0
+  },
+  { // Entry 812
+    0.0,
+    0.0f,
+    (int)1
+  },
+  { // Entry 813
+    -0.0,
+    -0.0f,
+    (int)1
+  },
+  { // Entry 814
+    0.0,
+    0.0f,
+    (int)-1
+  },
+  { // Entry 815
+    -0.0,
+    -0.0f,
+    (int)-1
+  },
+  { // Entry 816
+    0.0,
+    0.0f,
+    (int)127
+  },
+  { // Entry 817
+    -0.0,
+    -0.0f,
+    (int)127
+  },
+  { // Entry 818
+    0.0,
+    0.0f,
+    (int)-127
+  },
+  { // Entry 819
+    -0.0,
+    -0.0f,
+    (int)-127
+  },
+  { // Entry 820
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)0
+  },
+  { // Entry 821
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 822
+    0x1.p-126,
+    0x1.p-126,
+    (int)0
+  },
+  { // Entry 823
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 824
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 825
+    -0x1.p-149,
+    -0x1.p-149,
+    (int)0
+  },
+  { // Entry 826
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 827
+    -0x1.p-126,
+    -0x1.p-126,
+    (int)0
+  },
+  { // Entry 828
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 829
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)0
+  },
+  { // Entry 830
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)1
+  },
+  { // Entry 831
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)1
+  },
+  { // Entry 832
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 833
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 834
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)127
+  },
+  { // Entry 835
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)127
+  },
+  { // Entry 836
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 837
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 838
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 839
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 840
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 841
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 842
+    HUGE_VALF,
+    0x1.p-126,
+    (int)40000
+  },
+  { // Entry 843
+    HUGE_VALF,
+    0x1.p-149,
+    (int)40000
+  },
+  { // Entry 844
+    -HUGE_VALF,
+    -0x1.p-126,
+    (int)40000
+  },
+  { // Entry 845
+    -HUGE_VALF,
+    -0x1.p-149,
+    (int)40000
+  },
+  { // Entry 846
+    0x1.p-127,
+    0x1.p-126,
+    (int)-1
+  },
+  { // Entry 847
+    0x1.fffffcp-128,
+    0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 848
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 849
+    -0.0f,
+    -0x1.p-149,
+    (int)-1
+  },
+  { // Entry 850
+    -0x1.fffffcp-128,
+    -0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 851
+    -0x1.p-127,
+    -0x1.p-126,
+    (int)-1
+  },
+  { // Entry 852
+    0.0f,
+    0x1.fffffep127,
+    (int)-40000
+  },
+  { // Entry 853
+    -0.0f,
+    -0x1.fffffep127,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/significand_intel_data.h b/tests/math_data/significand_intel_data.h
new file mode 100644
index 0000000..1076272
--- /dev/null
+++ b/tests/math_data/significand_intel_data.h
@@ -0,0 +1,638 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_significand_intel_data[] = {
+  { // Entry 0
+    0x1.p0,
+    0x1.0p100
+  },
+  { // Entry 1
+    0x1.2aaaaaaaaaaab0p0,
+    0x1.2aaaaaaaaaaabp100
+  },
+  { // Entry 2
+    0x1.55555555555560p0,
+    0x1.5555555555556p100
+  },
+  { // Entry 3
+    0x1.80000000000010p0,
+    0x1.8000000000001p100
+  },
+  { // Entry 4
+    0x1.aaaaaaaaaaaac0p0,
+    0x1.aaaaaaaaaaaacp100
+  },
+  { // Entry 5
+    0x1.d5555555555570p0,
+    0x1.d555555555557p100
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.0p101
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p200
+  },
+  { // Entry 8
+    0x1.2aaaaaaaaaaab0p0,
+    0x1.2aaaaaaaaaaabp200
+  },
+  { // Entry 9
+    0x1.55555555555560p0,
+    0x1.5555555555556p200
+  },
+  { // Entry 10
+    0x1.80000000000010p0,
+    0x1.8000000000001p200
+  },
+  { // Entry 11
+    0x1.aaaaaaaaaaaac0p0,
+    0x1.aaaaaaaaaaaacp200
+  },
+  { // Entry 12
+    0x1.d5555555555570p0,
+    0x1.d555555555557p200
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.0p201
+  },
+  { // Entry 14
+    0x1.p0,
+    0x1.0p1000
+  },
+  { // Entry 15
+    0x1.2aaaaaaaaaaab0p0,
+    0x1.2aaaaaaaaaaabp1000
+  },
+  { // Entry 16
+    0x1.55555555555560p0,
+    0x1.5555555555556p1000
+  },
+  { // Entry 17
+    0x1.80000000000010p0,
+    0x1.8000000000001p1000
+  },
+  { // Entry 18
+    0x1.aaaaaaaaaaaac0p0,
+    0x1.aaaaaaaaaaaacp1000
+  },
+  { // Entry 19
+    0x1.d5555555555570p0,
+    0x1.d555555555557p1000
+  },
+  { // Entry 20
+    0x1.p0,
+    0x1.0p1001
+  },
+  { // Entry 21
+    -0x1.p0,
+    -0x1.0p101
+  },
+  { // Entry 22
+    -0x1.d5555555555550p0,
+    -0x1.d555555555555p100
+  },
+  { // Entry 23
+    -0x1.aaaaaaaaaaaaa0p0,
+    -0x1.aaaaaaaaaaaaap100
+  },
+  { // Entry 24
+    -0x1.7ffffffffffff0p0,
+    -0x1.7ffffffffffffp100
+  },
+  { // Entry 25
+    -0x1.55555555555540p0,
+    -0x1.5555555555554p100
+  },
+  { // Entry 26
+    -0x1.2aaaaaaaaaaa90p0,
+    -0x1.2aaaaaaaaaaa9p100
+  },
+  { // Entry 27
+    -0x1.p0,
+    -0x1.0p100
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.0p201
+  },
+  { // Entry 29
+    -0x1.d5555555555550p0,
+    -0x1.d555555555555p200
+  },
+  { // Entry 30
+    -0x1.aaaaaaaaaaaaa0p0,
+    -0x1.aaaaaaaaaaaaap200
+  },
+  { // Entry 31
+    -0x1.7ffffffffffff0p0,
+    -0x1.7ffffffffffffp200
+  },
+  { // Entry 32
+    -0x1.55555555555540p0,
+    -0x1.5555555555554p200
+  },
+  { // Entry 33
+    -0x1.2aaaaaaaaaaa90p0,
+    -0x1.2aaaaaaaaaaa9p200
+  },
+  { // Entry 34
+    -0x1.p0,
+    -0x1.0p200
+  },
+  { // Entry 35
+    -0x1.p0,
+    -0x1.0p1001
+  },
+  { // Entry 36
+    -0x1.d5555555555550p0,
+    -0x1.d555555555555p1000
+  },
+  { // Entry 37
+    -0x1.aaaaaaaaaaaaa0p0,
+    -0x1.aaaaaaaaaaaaap1000
+  },
+  { // Entry 38
+    -0x1.7ffffffffffff0p0,
+    -0x1.7ffffffffffffp1000
+  },
+  { // Entry 39
+    -0x1.55555555555540p0,
+    -0x1.5555555555554p1000
+  },
+  { // Entry 40
+    -0x1.2aaaaaaaaaaa90p0,
+    -0x1.2aaaaaaaaaaa9p1000
+  },
+  { // Entry 41
+    -0x1.p0,
+    -0x1.0p1000
+  },
+  { // Entry 42
+    0x1.p0,
+    0x1.0p50
+  },
+  { // Entry 43
+    0x1.p0,
+    0x1.0p51
+  },
+  { // Entry 44
+    0x1.p0,
+    0x1.0p52
+  },
+  { // Entry 45
+    0x1.p0,
+    0x1.0p53
+  },
+  { // Entry 46
+    0x1.p0,
+    0x1.0p-1026
+  },
+  { // Entry 47
+    0x1.ae8ba2e8ba2e80p0,
+    0x1.ae8ba2e8ba2e8p-1024
+  },
+  { // Entry 48
+    0x1.8e8ba2e8ba2e80p0,
+    0x1.8e8ba2e8ba2e8p-1023
+  },
+  { // Entry 49
+    0x1.22e8ba2e8ba2e0p0,
+    0x1.22e8ba2e8ba2ep-1022
+  },
+  { // Entry 50
+    0x1.7e8ba2e8ba2e80p0,
+    0x1.7e8ba2e8ba2e8p-1022
+  },
+  { // Entry 51
+    0x1.da2e8ba2e8ba20p0,
+    0x1.da2e8ba2e8ba2p-1022
+  },
+  { // Entry 52
+    0x1.1ae8ba2e8ba2e0p0,
+    0x1.1ae8ba2e8ba2ep-1021
+  },
+  { // Entry 53
+    0x1.48ba2e8ba2e8b0p0,
+    0x1.48ba2e8ba2e8bp-1021
+  },
+  { // Entry 54
+    0x1.768ba2e8ba2e80p0,
+    0x1.768ba2e8ba2e8p-1021
+  },
+  { // Entry 55
+    0x1.a45d1745d17450p0,
+    0x1.a45d1745d1745p-1021
+  },
+  { // Entry 56
+    0x1.d22e8ba2e8ba20p0,
+    0x1.d22e8ba2e8ba2p-1021
+  },
+  { // Entry 57
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1021
+  },
+  { // Entry 58
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 59
+    0x1.p0,
+    0x1.0p51
+  },
+  { // Entry 60
+    0x1.00000000000010p0,
+    0x1.0000000000001p51
+  },
+  { // Entry 61
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 62
+    0x1.p0,
+    0x1.0p52
+  },
+  { // Entry 63
+    0x1.00000000000010p0,
+    0x1.0000000000001p52
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 65
+    0x1.p0,
+    0x1.0p53
+  },
+  { // Entry 66
+    0x1.00000000000010p0,
+    0x1.0000000000001p53
+  },
+  { // Entry 67
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p51
+  },
+  { // Entry 68
+    -0x1.p0,
+    -0x1.0p51
+  },
+  { // Entry 69
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 70
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 71
+    -0x1.p0,
+    -0x1.0p52
+  },
+  { // Entry 72
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 73
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p53
+  },
+  { // Entry 74
+    -0x1.p0,
+    -0x1.0p53
+  },
+  { // Entry 75
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 76
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 77
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 78
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 79
+    0x1.p0,
+    0x1.0p-6
+  },
+  { // Entry 80
+    0x1.00000000000010p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 82
+    0x1.p0,
+    0x1.0p-5
+  },
+  { // Entry 83
+    0x1.00000000000010p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 84
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 85
+    0x1.p0,
+    0x1.0p-4
+  },
+  { // Entry 86
+    0x1.00000000000010p0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 87
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 88
+    0x1.p0,
+    0x1.0p-3
+  },
+  { // Entry 89
+    0x1.00000000000010p0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 90
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 91
+    0x1.p0,
+    0x1.0p-2
+  },
+  { // Entry 92
+    0x1.00000000000010p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 93
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 94
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 95
+    0x1.00000000000010p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 96
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 97
+    -0.0,
+    -0.0
+  },
+  { // Entry 98
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 99
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 100
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 101
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 102
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 103
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 104
+    0x1.00000000000010p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 105
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 106
+    0x1.p0,
+    0x1.0p2
+  },
+  { // Entry 107
+    0x1.00000000000010p0,
+    0x1.0000000000001p2
+  },
+  { // Entry 108
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 109
+    0x1.p0,
+    0x1.0p3
+  },
+  { // Entry 110
+    0x1.00000000000010p0,
+    0x1.0000000000001p3
+  },
+  { // Entry 111
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 112
+    0x1.p0,
+    0x1.0p4
+  },
+  { // Entry 113
+    0x1.00000000000010p0,
+    0x1.0000000000001p4
+  },
+  { // Entry 114
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 115
+    0x1.p0,
+    0x1.0p5
+  },
+  { // Entry 116
+    0x1.00000000000010p0,
+    0x1.0000000000001p5
+  },
+  { // Entry 117
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 118
+    0x1.p0,
+    0x1.0p6
+  },
+  { // Entry 119
+    0x1.00000000000010p0,
+    0x1.0000000000001p6
+  },
+  { // Entry 120
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 121
+    0x1.p0,
+    0x1.0p7
+  },
+  { // Entry 122
+    0x1.00000000000010p0,
+    0x1.0000000000001p7
+  },
+  { // Entry 123
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 124
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 125
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 126
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0x1.ffffffffffffe0p0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 128
+    -0x1.ffffffffffffe0p0,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 129
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 130
+    -0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 131
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 132
+    -0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 133
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 134
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 135
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 136
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 137
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 138
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 140
+    -0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 141
+    0x1.00000000000010p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 142
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 143
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 144
+    -0x1.p0,
+    -0x1.0p-1022
+  },
+  { // Entry 145
+    0x1.ffffffffffffe0p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 146
+    -0x1.ffffffffffffe0p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 147
+    0x1.ffffffffffffc0p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 148
+    -0x1.ffffffffffffc0p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 149
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 150
+    -0x1.p0,
+    -0x1.0p-1073
+  },
+  { // Entry 151
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 152
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 153
+    0.0,
+    0.0
+  },
+  { // Entry 154
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/significandf_intel_data.h b/tests/math_data/significandf_intel_data.h
new file mode 100644
index 0000000..47869b7
--- /dev/null
+++ b/tests/math_data/significandf_intel_data.h
@@ -0,0 +1,526 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_significandf_intel_data[] = {
+  { // Entry 0
+    0x1.p0,
+    0x1.p100
+  },
+  { // Entry 1
+    0x1.2aaaaap0,
+    0x1.2aaaaap100
+  },
+  { // Entry 2
+    0x1.555554p0,
+    0x1.555554p100
+  },
+  { // Entry 3
+    0x1.7ffffep0,
+    0x1.7ffffep100
+  },
+  { // Entry 4
+    0x1.aaaaa8p0,
+    0x1.aaaaa8p100
+  },
+  { // Entry 5
+    0x1.d55552p0,
+    0x1.d55552p100
+  },
+  { // Entry 6
+    0x1.fffffcp0,
+    0x1.fffffcp100
+  },
+  { // Entry 7
+    -0x1.p0,
+    -0x1.p101
+  },
+  { // Entry 8
+    -0x1.d55556p0,
+    -0x1.d55556p100
+  },
+  { // Entry 9
+    -0x1.aaaaacp0,
+    -0x1.aaaaacp100
+  },
+  { // Entry 10
+    -0x1.800002p0,
+    -0x1.800002p100
+  },
+  { // Entry 11
+    -0x1.555558p0,
+    -0x1.555558p100
+  },
+  { // Entry 12
+    -0x1.2aaaaep0,
+    -0x1.2aaaaep100
+  },
+  { // Entry 13
+    -0x1.000004p0,
+    -0x1.000004p100
+  },
+  { // Entry 14
+    0x1.p0,
+    0x1.p21
+  },
+  { // Entry 15
+    0x1.p0,
+    0x1.p22
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.p23
+  },
+  { // Entry 17
+    0x1.p0,
+    0x1.p24
+  },
+  { // Entry 18
+    0x1.p0,
+    0x1.p-130
+  },
+  { // Entry 19
+    0x1.ae8ba0p0,
+    0x1.ae8ba0p-128
+  },
+  { // Entry 20
+    0x1.8e8ba0p0,
+    0x1.8e8ba0p-127
+  },
+  { // Entry 21
+    0x1.22e8b8p0,
+    0x1.22e8b8p-126
+  },
+  { // Entry 22
+    0x1.7e8ba0p0,
+    0x1.7e8ba0p-126
+  },
+  { // Entry 23
+    0x1.da2e88p0,
+    0x1.da2e88p-126
+  },
+  { // Entry 24
+    0x1.1ae8b8p0,
+    0x1.1ae8b8p-125
+  },
+  { // Entry 25
+    0x1.48ba2cp0,
+    0x1.48ba2cp-125
+  },
+  { // Entry 26
+    0x1.768ba0p0,
+    0x1.768ba0p-125
+  },
+  { // Entry 27
+    0x1.a45d14p0,
+    0x1.a45d14p-125
+  },
+  { // Entry 28
+    0x1.d22e88p0,
+    0x1.d22e88p-125
+  },
+  { // Entry 29
+    0x1.fffffcp0,
+    0x1.fffffcp-125
+  },
+  { // Entry 30
+    0x1.fffffep0,
+    0x1.fffffep21
+  },
+  { // Entry 31
+    0x1.p0,
+    0x1.p22
+  },
+  { // Entry 32
+    0x1.000002p0,
+    0x1.000002p22
+  },
+  { // Entry 33
+    0x1.fffffep0,
+    0x1.fffffep22
+  },
+  { // Entry 34
+    0x1.p0,
+    0x1.p23
+  },
+  { // Entry 35
+    0x1.000002p0,
+    0x1.000002p23
+  },
+  { // Entry 36
+    0x1.fffffep0,
+    0x1.fffffep23
+  },
+  { // Entry 37
+    0x1.p0,
+    0x1.p24
+  },
+  { // Entry 38
+    0x1.000002p0,
+    0x1.000002p24
+  },
+  { // Entry 39
+    -0x1.000002p0,
+    -0x1.000002p22
+  },
+  { // Entry 40
+    -0x1.p0,
+    -0x1.p22
+  },
+  { // Entry 41
+    -0x1.fffffep0,
+    -0x1.fffffep21
+  },
+  { // Entry 42
+    -0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 43
+    -0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 44
+    -0x1.fffffep0,
+    -0x1.fffffep22
+  },
+  { // Entry 45
+    -0x1.000002p0,
+    -0x1.000002p24
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.p24
+  },
+  { // Entry 47
+    -0x1.fffffep0,
+    -0x1.fffffep23
+  },
+  { // Entry 48
+    0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 49
+    -0x1.fffffep0,
+    -0x1.fffffep127
+  },
+  { // Entry 50
+    0x1.fffffep0,
+    0x1.fffffep-7
+  },
+  { // Entry 51
+    0x1.p0,
+    0x1.p-6
+  },
+  { // Entry 52
+    0x1.000002p0,
+    0x1.000002p-6
+  },
+  { // Entry 53
+    0x1.fffffep0,
+    0x1.fffffep-6
+  },
+  { // Entry 54
+    0x1.p0,
+    0x1.p-5
+  },
+  { // Entry 55
+    0x1.000002p0,
+    0x1.000002p-5
+  },
+  { // Entry 56
+    0x1.fffffep0,
+    0x1.fffffep-5
+  },
+  { // Entry 57
+    0x1.p0,
+    0x1.p-4
+  },
+  { // Entry 58
+    0x1.000002p0,
+    0x1.000002p-4
+  },
+  { // Entry 59
+    0x1.fffffep0,
+    0x1.fffffep-4
+  },
+  { // Entry 60
+    0x1.p0,
+    0x1.p-3
+  },
+  { // Entry 61
+    0x1.000002p0,
+    0x1.000002p-3
+  },
+  { // Entry 62
+    0x1.fffffep0,
+    0x1.fffffep-3
+  },
+  { // Entry 63
+    0x1.p0,
+    0x1.p-2
+  },
+  { // Entry 64
+    0x1.000002p0,
+    0x1.000002p-2
+  },
+  { // Entry 65
+    0x1.fffffep0,
+    0x1.fffffep-2
+  },
+  { // Entry 66
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 67
+    0x1.000002p0,
+    0x1.000002p-1
+  },
+  { // Entry 68
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 69
+    0.0,
+    0.0
+  },
+  { // Entry 70
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 71
+    0x1.fffffep0,
+    0x1.fffffep-1
+  },
+  { // Entry 72
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 73
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 74
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 75
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 76
+    0x1.000002p0,
+    0x1.000002p1
+  },
+  { // Entry 77
+    0x1.fffffep0,
+    0x1.fffffep1
+  },
+  { // Entry 78
+    0x1.p0,
+    0x1.p2
+  },
+  { // Entry 79
+    0x1.000002p0,
+    0x1.000002p2
+  },
+  { // Entry 80
+    0x1.fffffep0,
+    0x1.fffffep2
+  },
+  { // Entry 81
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 82
+    0x1.000002p0,
+    0x1.000002p3
+  },
+  { // Entry 83
+    0x1.fffffep0,
+    0x1.fffffep3
+  },
+  { // Entry 84
+    0x1.p0,
+    0x1.p4
+  },
+  { // Entry 85
+    0x1.000002p0,
+    0x1.000002p4
+  },
+  { // Entry 86
+    0x1.fffffep0,
+    0x1.fffffep4
+  },
+  { // Entry 87
+    0x1.p0,
+    0x1.p5
+  },
+  { // Entry 88
+    0x1.000002p0,
+    0x1.000002p5
+  },
+  { // Entry 89
+    0x1.fffffep0,
+    0x1.fffffep5
+  },
+  { // Entry 90
+    0x1.p0,
+    0x1.p6
+  },
+  { // Entry 91
+    0x1.000002p0,
+    0x1.000002p6
+  },
+  { // Entry 92
+    0x1.fffffep0,
+    0x1.fffffep6
+  },
+  { // Entry 93
+    0x1.p0,
+    0x1.p7
+  },
+  { // Entry 94
+    0x1.000002p0,
+    0x1.000002p7
+  },
+  { // Entry 95
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 96
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 97
+    0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 98
+    -0x1.fffffep0,
+    -0x1.fffffep127
+  },
+  { // Entry 99
+    0x1.fffffcp0,
+    0x1.fffffcp127
+  },
+  { // Entry 100
+    -0x1.fffffcp0,
+    -0x1.fffffcp127
+  },
+  { // Entry 101
+    0x1.921fb6p0,
+    0x1.921fb6p1
+  },
+  { // Entry 102
+    -0x1.921fb6p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 103
+    0x1.921fb6p0,
+    0x1.921fb6p0
+  },
+  { // Entry 104
+    -0x1.921fb6p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 105
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 106
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 107
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 108
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 109
+    0x1.fffffep0,
+    0x1.fffffep-1
+  },
+  { // Entry 110
+    -0x1.fffffep0,
+    -0x1.fffffep-1
+  },
+  { // Entry 111
+    0x1.921fb6p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 112
+    -0x1.921fb6p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 113
+    0x1.000002p0,
+    0x1.000002p-126
+  },
+  { // Entry 114
+    -0x1.000002p0,
+    -0x1.000002p-126
+  },
+  { // Entry 115
+    0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 116
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 117
+    0x1.fffffcp0,
+    0x1.fffffcp-127
+  },
+  { // Entry 118
+    -0x1.fffffcp0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 119
+    0x1.fffff8p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 120
+    -0x1.fffff8p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 121
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 122
+    -0x1.p0,
+    -0x1.p-148
+  },
+  { // Entry 123
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 124
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 125
+    0.0,
+    0.0f
+  },
+  { // Entry 126
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/sin_intel_data.h b/tests/math_data/sin_intel_data.h
new file mode 100644
index 0000000..c341cfe
--- /dev/null
+++ b/tests/math_data/sin_intel_data.h
@@ -0,0 +1,5774 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_sin_intel_data[] = {
+  { // Entry 0
+    0x1.9259e3708bd39ffffffffffffff1bdbep-5,
+    0x1.9283586503fe0p-5
+  },
+  { // Entry 1
+    -0x1.9259e3708bd39ffffffffffffff1bdbep-5,
+    -0x1.9283586503fe0p-5
+  },
+  { // Entry 2
+    0x1.d77b117f230d5ffffffffffffff2adc7p-5,
+    0x1.d7bdcd778049fp-5
+  },
+  { // Entry 3
+    -0x1.d77b117f230d5ffffffffffffff2adc7p-5,
+    -0x1.d7bdcd778049fp-5
+  },
+  { // Entry 4
+    0x1.a1490c8c06ba6fffffffffffffa98611p-4,
+    0x1.a202b3fb84788p-4
+  },
+  { // Entry 5
+    -0x1.a1490c8c06ba6fffffffffffffa98611p-4,
+    -0x1.a202b3fb84788p-4
+  },
+  { // Entry 6
+    0x1.cc40c3805229a7ffffffffffff83e76bp-3,
+    0x1.d037cb27ee6dfp-3
+  },
+  { // Entry 7
+    -0x1.cc40c3805229a7ffffffffffff83e76bp-3,
+    -0x1.d037cb27ee6dfp-3
+  },
+  { // Entry 8
+    0x1.d0ef799001ba900000000000005ea4e9p-3,
+    0x1.d5064e6fe82c5p-3
+  },
+  { // Entry 9
+    -0x1.d0ef799001ba900000000000005ea4e9p-3,
+    -0x1.d5064e6fe82c5p-3
+  },
+  { // Entry 10
+    0x1.e9950730c4695ffffffffffffffffc2ep-2,
+    0x1.fe767739d0f6dp-2
+  },
+  { // Entry 11
+    -0x1.e9950730c4695ffffffffffffffffc2ep-2,
+    -0x1.fe767739d0f6dp-2
+  },
+  { // Entry 12
+    0x1.98dcd093377928000000000000167dc7p-1,
+    0x1.d98c4c612718dp-1
+  },
+  { // Entry 13
+    -0x1.98dcd093377928000000000000167dc7p-1,
+    -0x1.d98c4c612718dp-1
+  },
+  { // Entry 14
+    0x1.ffffffffffffffffffffffffffec8831p-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 15
+    -0x1.ffffffffffffffffffffffffffec8831p-1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 16
+    0x1.70a9d825b506400422155aecd519d54cp-1,
+    -0x1.0000001f8p500
+  },
+  { // Entry 17
+    -0x1.70a9d825b506400422155aecd519d54cp-1,
+    0x1.0000001f8p500
+  },
+  { // Entry 18
+    0x1.bf3980c6c1e9f4496795f4ce535016b6p-1,
+    -0x1.00c0bf8p700
+  },
+  { // Entry 19
+    -0x1.bf3980c6c1e9f4496795f4ce535016b6p-1,
+    0x1.00c0bf8p700
+  },
+  { // Entry 20
+    0x1.d62899d48b4397fb275ba44095971364p-4,
+    -0x1.13fffffffff80p6
+  },
+  { // Entry 21
+    -0x1.d62899d48b4397fb275ba44095971364p-4,
+    0x1.13fffffffff80p6
+  },
+  { // Entry 22
+    -0x1.17b7a60ce1f1485824711523ab0fd6d1p-5,
+    -0x1.17c5920767dfcp-5
+  },
+  { // Entry 23
+    0x1.17b7a60ce1f1485824711523ab0fd6d1p-5,
+    0x1.17c5920767dfcp-5
+  },
+  { // Entry 24
+    0x1.f0192b794fbbe030fe25edf65a5db9bfp-1,
+    -0x1.1d99be08713ccp2
+  },
+  { // Entry 25
+    -0x1.f0192b794fbbe030fe25edf65a5db9bfp-1,
+    0x1.1d99be08713ccp2
+  },
+  { // Entry 26
+    -0x1.5e61328c0034ec3a05d053b72e2d5945p-3,
+    -0x1.1ddbfd64fc0d3p81
+  },
+  { // Entry 27
+    0x1.5e61328c0034ec3a05d053b72e2d5945p-3,
+    0x1.1ddbfd64fc0d3p81
+  },
+  { // Entry 28
+    0x1.fb028c5df1db3eb32b0062c6cd4dea0bp-1,
+    -0x1.1e2a1563e068ep7
+  },
+  { // Entry 29
+    -0x1.fb028c5df1db3eb32b0062c6cd4dea0bp-1,
+    0x1.1e2a1563e068ep7
+  },
+  { // Entry 30
+    -0x1.2cefb196ba2077fffffd4bd650722bfbp-3,
+    -0x1.2e07a91314dp-3
+  },
+  { // Entry 31
+    0x1.2cefb196ba2077fffffd4bd650722bfbp-3,
+    0x1.2e07a91314dp-3
+  },
+  { // Entry 32
+    0x1.b80f489d3edf4835de7deeeb5bb38ad9p-2,
+    -0x1.3bcec270444e2p3
+  },
+  { // Entry 33
+    -0x1.b80f489d3edf4835de7deeeb5bb38ad9p-2,
+    0x1.3bcec270444e2p3
+  },
+  { // Entry 34
+    -0x1.4fffffffffa38800000004dd22ccccccp-20,
+    -0x1.5000000000040p-20
+  },
+  { // Entry 35
+    0x1.4fffffffffa38800000004dd22ccccccp-20,
+    0x1.5000000000040p-20
+  },
+  { // Entry 36
+    -0x1.d29da5b44f51b7fc019f183e1d3bd511p-2,
+    -0x1.559001a42d90cp1
+  },
+  { // Entry 37
+    0x1.d29da5b44f51b7fc019f183e1d3bd511p-2,
+    0x1.559001a42d90cp1
+  },
+  { // Entry 38
+    -0x1.f85f526147f787fffff15241e719734bp-1,
+    -0x1.597bf3e9776b7p99
+  },
+  { // Entry 39
+    0x1.f85f526147f787fffff15241e719734bp-1,
+    0x1.597bf3e9776b7p99
+  },
+  { // Entry 40
+    -0x1.6d61b58c99c42f1396af4a42148f73c6p-59,
+    -0x1.6c6cbc45dc8dep7
+  },
+  { // Entry 41
+    0x1.6d61b58c99c42f1396af4a42148f73c6p-59,
+    0x1.6c6cbc45dc8dep7
+  },
+  { // Entry 42
+    0x1.e5c3c08a258a77f1d12efa8c30166709p-1,
+    -0x1.73d8d173f90d0p4
+  },
+  { // Entry 43
+    -0x1.e5c3c08a258a77f1d12efa8c30166709p-1,
+    0x1.73d8d173f90d0p4
+  },
+  { // Entry 44
+    0x1.feb36806ca5fb7ea442119af41be0f4fp-1,
+    -0x1.8c202d3a31802p6
+  },
+  { // Entry 45
+    -0x1.feb36806ca5fb7ea442119af41be0f4fp-1,
+    0x1.8c202d3a31802p6
+  },
+  { // Entry 46
+    -0x1.7c6c7b01b98d947cd8add5e5d1ae11cap-1,
+    -0x1.acd538b1a6d5dp-1
+  },
+  { // Entry 47
+    0x1.7c6c7b01b98d947cd8add5e5d1ae11cap-1,
+    0x1.acd538b1a6d5dp-1
+  },
+  { // Entry 48
+    -0x1.191be2059dcb57fed86dd2cc62eb1a9fp-1,
+    -0x1.b7525ac97e0d2p2
+  },
+  { // Entry 49
+    0x1.191be2059dcb57fed86dd2cc62eb1a9fp-1,
+    0x1.b7525ac97e0d2p2
+  },
+  { // Entry 50
+    -0x1.f8305993a212c7fffffc15c2afa5e57ep-1,
+    -0x1.bee5fa8a84b02p0
+  },
+  { // Entry 51
+    0x1.f8305993a212c7fffffc15c2afa5e57ep-1,
+    0x1.bee5fa8a84b02p0
+  },
+  { // Entry 52
+    0x1.ff3b13530fd70e72b77f7c6721da1131p-1,
+    -0x1.c393979fe5921p9
+  },
+  { // Entry 53
+    -0x1.ff3b13530fd70e72b77f7c6721da1131p-1,
+    0x1.c393979fe5921p9
+  },
+  { // Entry 54
+    -0x1.f119da81a4da57ffd8bcc5a1247f5590p-1,
+    -0x1.c48ffc72563c8p18
+  },
+  { // Entry 55
+    0x1.f119da81a4da57ffd8bcc5a1247f5590p-1,
+    0x1.c48ffc72563c8p18
+  },
+  { // Entry 56
+    -0x1.fd73b81e04ccc7e9d764eca8bb085109p-1,
+    -0x1.c79548bc31856p3
+  },
+  { // Entry 57
+    0x1.fd73b81e04ccc7e9d764eca8bb085109p-1,
+    0x1.c79548bc31856p3
+  },
+  { // Entry 58
+    -0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
+    -0x1.cb6p-3
+  },
+  { // Entry 59
+    0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
+    0x1.cb6p-3
+  },
+  { // Entry 60
+    -0x1.e6494911eedd08d1650a4b5136c3e6d6p-7,
+    -0x1.e64ddaf7bd72fp-7
+  },
+  { // Entry 61
+    0x1.e6494911eedd08d1650a4b5136c3e6d6p-7,
+    0x1.e64ddaf7bd72fp-7
+  },
+  { // Entry 62
+    0x1.e180eef5b1c887fff585594949b46e6cp-1,
+    -0x1.ecdd0fbf07942p5
+  },
+  { // Entry 63
+    -0x1.e180eef5b1c887fff585594949b46e6cp-1,
+    0x1.ecdd0fbf07942p5
+  },
+  { // Entry 64
+    -0x1.fd98d20c1be4380000001ee51562d7a8p-1,
+    -0x1.f073a23292337p2
+  },
+  { // Entry 65
+    0x1.fd98d20c1be4380000001ee51562d7a8p-1,
+    0x1.f073a23292337p2
+  },
+  { // Entry 66
+    -0x1.7268c112297c87d17633bab722f31a3fp-5,
+    -0x1.f5e4c410f4ef8p15
+  },
+  { // Entry 67
+    0x1.7268c112297c87d17633bab722f31a3fp-5,
+    0x1.f5e4c410f4ef8p15
+  },
+  { // Entry 68
+    0x1.420796146070e628c19d38d1e90df228p-18,
+    -0x1.f8000000002p95
+  },
+  { // Entry 69
+    -0x1.420796146070e628c19d38d1e90df228p-18,
+    0x1.f8000000002p95
+  },
+  { // Entry 70
+    -0x1.e4f6dc499d9cc8035607fa3d76f9f4c5p-2,
+    -0x1.f9365d79546e1p-2
+  },
+  { // Entry 71
+    0x1.e4f6dc499d9cc8035607fa3d76f9f4c5p-2,
+    0x1.f9365d79546e1p-2
+  },
+  { // Entry 72
+    0x1.b2ef99b140d650468aed82fe0d442adap-14,
+    -0x1.ffffffffffe7ep1023
+  },
+  { // Entry 73
+    -0x1.b2ef99b140d650468aed82fe0d442adap-14,
+    0x1.ffffffffffe7ep1023
+  },
+  { // Entry 74
+    0x1.db0ffc3ecc6e3b8e37357ca002d5625bp-1,
+    0x1.0p15
+  },
+  { // Entry 75
+    -0x1.db0ffc3ecc6e3b8e37357ca002d5625bp-1,
+    -0x1.0p15
+  },
+  { // Entry 76
+    -0x1.e98f87098b62699ad16e0259b0e85b24p-1,
+    0x1.0000000000001p13
+  },
+  { // Entry 77
+    0x1.e98f87098b62699ad16e0259b0e85b24p-1,
+    -0x1.0000000000001p13
+  },
+  { // Entry 78
+    0x1.053c35068e10d45ee50f2d1ddcabcf3dp-4,
+    0x1.0000000000001p52
+  },
+  { // Entry 79
+    -0x1.053c35068e10d45ee50f2d1ddcabcf3dp-4,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    0x1.72d421b6884e500bbd3a9efc0f0ced92p-1,
+    0x1.0000000000001p228
+  },
+  { // Entry 81
+    -0x1.72d421b6884e500bbd3a9efc0f0ced92p-1,
+    -0x1.0000000000001p228
+  },
+  { // Entry 82
+    0x1.77fba987c56533a665e88e5a592ca10cp-1,
+    0x1.0000000000001p491
+  },
+  { // Entry 83
+    -0x1.77fba987c56533a665e88e5a592ca10cp-1,
+    -0x1.0000000000001p491
+  },
+  { // Entry 84
+    -0x1.723b2625331af2e79a9f07145a1e5731p-1,
+    0x1.0000000000003p215
+  },
+  { // Entry 85
+    0x1.723b2625331af2e79a9f07145a1e5731p-1,
+    -0x1.0000000000003p215
+  },
+  { // Entry 86
+    0x1.aed548f090cf47fe7e32103ab140caf8p-1,
+    0x1.0000000000006p0
+  },
+  { // Entry 87
+    -0x1.aed548f090cf47fe7e32103ab140caf8p-1,
+    -0x1.0000000000006p0
+  },
+  { // Entry 88
+    -0x1.ff983208c7dc978079174b461b3809f0p-1,
+    0x1.0000000000007p8
+  },
+  { // Entry 89
+    0x1.ff983208c7dc978079174b461b3809f0p-1,
+    -0x1.0000000000007p8
+  },
+  { // Entry 90
+    0x1.ffef29dc38452ffef4a779a1f86707dap-1,
+    0x1.0000000000007p275
+  },
+  { // Entry 91
+    -0x1.ffef29dc38452ffef4a779a1f86707dap-1,
+    -0x1.0000000000007p275
+  },
+  { // Entry 92
+    -0x1.fa88c375723c0d7ea1f2d08ebb2f9407p-8,
+    0x1.0000000000007p449
+  },
+  { // Entry 93
+    0x1.fa88c375723c0d7ea1f2d08ebb2f9407p-8,
+    -0x1.0000000000007p449
+  },
+  { // Entry 94
+    0x1.fff5322c94eae1b0b51086c08faa585cp-1,
+    0x1.0000000000011p644
+  },
+  { // Entry 95
+    -0x1.fff5322c94eae1b0b51086c08faa585cp-1,
+    -0x1.0000000000011p644
+  },
+  { // Entry 96
+    -0x1.a73630af8f15b8000054ddd950bba107p-1,
+    0x1.000000000001fp164
+  },
+  { // Entry 97
+    0x1.a73630af8f15b8000054ddd950bba107p-1,
+    -0x1.000000000001fp164
+  },
+  { // Entry 98
+    0x1.1c548f9249e4474988646b86894e9581p-2,
+    0x1.0000000000038p380
+  },
+  { // Entry 99
+    -0x1.1c548f9249e4474988646b86894e9581p-2,
+    -0x1.0000000000038p380
+  },
+  { // Entry 100
+    0x1.ca965bd2c4dfee4779ca8c797806292dp-3,
+    0x1.0000000000118p380
+  },
+  { // Entry 101
+    -0x1.ca965bd2c4dfee4779ca8c797806292dp-3,
+    -0x1.0000000000118p380
+  },
+  { // Entry 102
+    -0x1.837b9dddc24cf2f729a38147795b18d2p-1,
+    0x1.000000000012cp2
+  },
+  { // Entry 103
+    0x1.837b9dddc24cf2f729a38147795b18d2p-1,
+    -0x1.000000000012cp2
+  },
+  { // Entry 104
+    0x1.d82c1784c3ecbfefb02d7d6b585f73c4p-2,
+    0x1.00000000001f8p700
+  },
+  { // Entry 105
+    -0x1.d82c1784c3ecbfefb02d7d6b585f73c4p-2,
+    -0x1.00000000001f8p700
+  },
+  { // Entry 106
+    0x1.fffeaaaaef2ee7ee876f90b70b512475p-8,
+    0x1.00000000002p-7
+  },
+  { // Entry 107
+    -0x1.fffeaaaaef2ee7ee876f90b70b512475p-8,
+    -0x1.00000000002p-7
+  },
+  { // Entry 108
+    -0x1.0871bddd90fc5834034ee3f6f86b43a3p-1,
+    0x1.00000000002p40
+  },
+  { // Entry 109
+    0x1.0871bddd90fc5834034ee3f6f86b43a3p-1,
+    -0x1.00000000002p40
+  },
+  { // Entry 110
+    0x1.fffeaaaaef2f07ee476fa60c5dbe4886p-8,
+    0x1.0000000000201p-7
+  },
+  { // Entry 111
+    -0x1.fffeaaaaef2f07ee476fa60c5dbe4886p-8,
+    -0x1.0000000000201p-7
+  },
+  { // Entry 112
+    0x1.fffeaaaaef3307e6477250b6ab524ab7p-8,
+    0x1.0000000000221p-7
+  },
+  { // Entry 113
+    -0x1.fffeaaaaef3307e6477250b6ab524ab7p-8,
+    -0x1.0000000000221p-7
+  },
+  { // Entry 114
+    0x1.fffeaaaaef3627e00774660bb7d7a87cp-8,
+    0x1.000000000023ap-7
+  },
+  { // Entry 115
+    -0x1.fffeaaaaef3627e00774660bb7d7a87cp-8,
+    -0x1.000000000023ap-7
+  },
+  { // Entry 116
+    0x1.e0c6edfa9360159534def713925f126fp-9,
+    0x1.00000000040p45
+  },
+  { // Entry 117
+    -0x1.e0c6edfa9360159534def713925f126fp-9,
+    -0x1.00000000040p45
+  },
+  { // Entry 118
+    0x1.ea1f618356db0d3ab66d0ef6493bc93dp-5,
+    0x1.0000000c0p40
+  },
+  { // Entry 119
+    -0x1.ea1f618356db0d3ab66d0ef6493bc93dp-5,
+    -0x1.0000000c0p40
+  },
+  { // Entry 120
+    0x1.faaeed7587541fffff9922ba6690b8bap-3,
+    0x1.00000013c86f4p-2
+  },
+  { // Entry 121
+    -0x1.faaeed7587541fffff9922ba6690b8bap-3,
+    -0x1.00000013c86f4p-2
+  },
+  { // Entry 122
+    0x1.540bc7785680ac2ca169ff9e3cc4b152p-1,
+    0x1.001p13
+  },
+  { // Entry 123
+    -0x1.540bc7785680ac2ca169ff9e3cc4b152p-1,
+    -0x1.001p13
+  },
+  { // Entry 124
+    -0x1.37a7cb907a2e500106b04d9e3f0b1b8cp-1,
+    0x1.003p699
+  },
+  { // Entry 125
+    0x1.37a7cb907a2e500106b04d9e3f0b1b8cp-1,
+    -0x1.003p699
+  },
+  { // Entry 126
+    -0x1.29e5845fc54b580145273f2cafe73ab5p-1,
+    0x1.00380p40
+  },
+  { // Entry 127
+    0x1.29e5845fc54b580145273f2cafe73ab5p-1,
+    -0x1.00380p40
+  },
+  { // Entry 128
+    0x1.ffe5ca46564917a1e812aedd48fe107cp-1,
+    0x1.007p10
+  },
+  { // Entry 129
+    -0x1.ffe5ca46564917a1e812aedd48fe107cp-1,
+    -0x1.007p10
+  },
+  { // Entry 130
+    0x1.ea4df82db014ac0c913465da57b6a643p-1,
+    0x1.007p25
+  },
+  { // Entry 131
+    -0x1.ea4df82db014ac0c913465da57b6a643p-1,
+    -0x1.007p25
+  },
+  { // Entry 132
+    0x1.fe757aef1c80c7ec16003d3ae5f0ce15p-1,
+    0x1.007p41
+  },
+  { // Entry 133
+    -0x1.fe757aef1c80c7ec16003d3ae5f0ce15p-1,
+    -0x1.007p41
+  },
+  { // Entry 134
+    0x1.e9b71805ec0685d484f6270f6411dc36p-7,
+    0x1.00cp41
+  },
+  { // Entry 135
+    -0x1.e9b71805ec0685d484f6270f6411dc36p-7,
+    -0x1.00cp41
+  },
+  { // Entry 136
+    0x1.b0b6d0a54058280008e80488f8ab1bb7p-1,
+    0x1.01c00000001p0
+  },
+  { // Entry 137
+    -0x1.b0b6d0a54058280008e80488f8ab1bb7p-1,
+    -0x1.01c00000001p0
+  },
+  { // Entry 138
+    0x1.fef009262701280b92aaf925dda63bbap-3,
+    0x1.02322e46da919p-2
+  },
+  { // Entry 139
+    -0x1.fef009262701280b92aaf925dda63bbap-3,
+    -0x1.02322e46da919p-2
+  },
+  { // Entry 140
+    0x1.ffc90059804a082d9b3f46b77ee81932p-3,
+    0x1.02a236478p-2
+  },
+  { // Entry 141
+    -0x1.ffc90059804a082d9b3f46b77ee81932p-3,
+    -0x1.02a236478p-2
+  },
+  { // Entry 142
+    0x1.ffd10a6b5429e828bef4d9413eb9f6c0p-3,
+    0x1.02a65d08ca5e5p-2
+  },
+  { // Entry 143
+    -0x1.ffd10a6b5429e828bef4d9413eb9f6c0p-3,
+    -0x1.02a65d08ca5e5p-2
+  },
+  { // Entry 144
+    0x1.ffd10ab302a3f7e0a048db5861e7b20bp-3,
+    0x1.02a65d2dce49ap-2
+  },
+  { // Entry 145
+    -0x1.ffd10ab302a3f7e0a048db5861e7b20bp-3,
+    -0x1.02a65d2dce49ap-2
+  },
+  { // Entry 146
+    0x1.ffe0b1764ca4c7d2329433828cdc901cp-3,
+    0x1.02ae7238ap-2
+  },
+  { // Entry 147
+    -0x1.ffe0b1764ca4c7d2329433828cdc901cp-3,
+    -0x1.02ae7238ap-2
+  },
+  { // Entry 148
+    -0x1.f68f0e26c0f6ad44f7184d56be95e1aep-3,
+    0x1.0501d22221dacp621
+  },
+  { // Entry 149
+    0x1.f68f0e26c0f6ad44f7184d56be95e1aep-3,
+    -0x1.0501d22221dacp621
+  },
+  { // Entry 150
+    0x1.b63c41f09eb747f30c1af5f254340a4cp-1,
+    0x1.06ffffffffff8p0
+  },
+  { // Entry 151
+    -0x1.b63c41f09eb747f30c1af5f254340a4cp-1,
+    -0x1.06ffffffffff8p0
+  },
+  { // Entry 152
+    -0x1.ffdc173adabb1afd58fcb5643cd86562p-1,
+    0x1.07023d3d44215p12
+  },
+  { // Entry 153
+    0x1.ffdc173adabb1afd58fcb5643cd86562p-1,
+    -0x1.07023d3d44215p12
+  },
+  { // Entry 154
+    0x1.0889e11bef1357a88742ab3a7f180786p-5,
+    0x1.0895a7a3e8ae6p-5
+  },
+  { // Entry 155
+    -0x1.0889e11bef1357a88742ab3a7f180786p-5,
+    -0x1.0895a7a3e8ae6p-5
+  },
+  { // Entry 156
+    0x1.08ca077c764457aa6d968afc1d1b17b3p-5,
+    0x1.08d5d69840601p-5
+  },
+  { // Entry 157
+    -0x1.08ca077c764457aa6d968afc1d1b17b3p-5,
+    -0x1.08d5d69840601p-5
+  },
+  { // Entry 158
+    -0x1.ff7fbe518023e90b3f28f81ab93e872fp-1,
+    0x1.0e0p6
+  },
+  { // Entry 159
+    0x1.ff7fbe518023e90b3f28f81ab93e872fp-1,
+    -0x1.0e0p6
+  },
+  { // Entry 160
+    -0x1.fd6c68b877afe803aaab2bd30124ecdfp-1,
+    0x1.107ba49c346e4p9
+  },
+  { // Entry 161
+    0x1.fd6c68b877afe803aaab2bd30124ecdfp-1,
+    -0x1.107ba49c346e4p9
+  },
+  { // Entry 162
+    -0x1.a2ba6bc70bce4801ea4d1c85f116193dp-1,
+    0x1.1491544774440p745
+  },
+  { // Entry 163
+    0x1.a2ba6bc70bce4801ea4d1c85f116193dp-1,
+    -0x1.1491544774440p745
+  },
+  { // Entry 164
+    0x1.165609790f23484a4701b4439d4fe51fp-5,
+    0x1.1663c0e518180p-5
+  },
+  { // Entry 165
+    -0x1.165609790f23484a4701b4439d4fe51fp-5,
+    -0x1.1663c0e518180p-5
+  },
+  { // Entry 166
+    -0x1.fc0523ff94e44c01731e45963034cba8p-1,
+    0x1.1745d1745d176p238
+  },
+  { // Entry 167
+    0x1.fc0523ff94e44c01731e45963034cba8p-1,
+    -0x1.1745d1745d176p238
+  },
+  { // Entry 168
+    0x1.f34a729c584bcc9666402cfdb48839ffp-1,
+    0x1.17472a408a3e0p97
+  },
+  { // Entry 169
+    -0x1.f34a729c584bcc9666402cfdb48839ffp-1,
+    -0x1.17472a408a3e0p97
+  },
+  { // Entry 170
+    0x1.177fae169fdf0858b1d4e7bad69981dcp-5,
+    0x1.178d91b6b992dp-5
+  },
+  { // Entry 171
+    -0x1.177fae169fdf0858b1d4e7bad69981dcp-5,
+    -0x1.178d91b6b992dp-5
+  },
+  { // Entry 172
+    0x1.177fae16a120e85843d1dfef36726cecp-5,
+    0x1.178d91b6bad4ep-5
+  },
+  { // Entry 173
+    -0x1.177fae16a120e85843d1dfef36726cecp-5,
+    -0x1.178d91b6bad4ep-5
+  },
+  { // Entry 174
+    0x1.177fae16a1f78856637cc9da8aaf6439p-5,
+    0x1.178d91b6bbabap-5
+  },
+  { // Entry 175
+    -0x1.177fae16a1f78856637cc9da8aaf6439p-5,
+    -0x1.178d91b6bbabap-5
+  },
+  { // Entry 176
+    0x1.177fae16a40fe858da1ddcb583bb9f3bp-5,
+    0x1.178d91b6bdc45p-5
+  },
+  { // Entry 177
+    -0x1.177fae16a40fe858da1ddcb583bb9f3bp-5,
+    -0x1.178d91b6bdc45p-5
+  },
+  { // Entry 178
+    0x1.297c768f2413080002edcb9a905946afp-1,
+    0x1.19752dbee5f6ap933
+  },
+  { // Entry 179
+    -0x1.297c768f2413080002edcb9a905946afp-1,
+    -0x1.19752dbee5f6ap933
+  },
+  { // Entry 180
+    0x1.b826df5cafafa824779bb808d64de6fbp-2,
+    0x1.1b3009cfe4dbcp8
+  },
+  { // Entry 181
+    -0x1.b826df5cafafa824779bb808d64de6fbp-2,
+    -0x1.1b3009cfe4dbcp8
+  },
+  { // Entry 182
+    0x1.b7a5956250b6a83882133bbe14c847ccp-2,
+    0x1.1f6475d95bf18p3
+  },
+  { // Entry 183
+    -0x1.b7a5956250b6a83882133bbe14c847ccp-2,
+    -0x1.1f6475d95bf18p3
+  },
+  { // Entry 184
+    0x1.4db6566b645477ffea9faaf8bf463a1ep-1,
+    0x1.229148a452291p118
+  },
+  { // Entry 185
+    -0x1.4db6566b645477ffea9faaf8bf463a1ep-1,
+    -0x1.229148a452291p118
+  },
+  { // Entry 186
+    0x1.1686fee2c49a7fffb68df681b2da7e49p-1,
+    0x1.268p-1
+  },
+  { // Entry 187
+    -0x1.1686fee2c49a7fffb68df681b2da7e49p-1,
+    -0x1.268p-1
+  },
+  { // Entry 188
+    0x1.22eb21a44d62780000031ae43c448511p-2,
+    0x1.26fb3844dd190p-2
+  },
+  { // Entry 189
+    -0x1.22eb21a44d62780000031ae43c448511p-2,
+    -0x1.26fb3844dd190p-2
+  },
+  { // Entry 190
+    0x1.d4a216d89b2b37f40ff08753ed600e74p-1,
+    0x1.27fffffffe6b0p0
+  },
+  { // Entry 191
+    -0x1.d4a216d89b2b37f40ff08753ed600e74p-1,
+    -0x1.27fffffffe6b0p0
+  },
+  { // Entry 192
+    -0x1.76c9b0f3a22f73cfd4453fcf7b21e358p-1,
+    0x1.284b84048d481p204
+  },
+  { // Entry 193
+    0x1.76c9b0f3a22f73cfd4453fcf7b21e358p-1,
+    -0x1.284b84048d481p204
+  },
+  { // Entry 194
+    -0x1.ff01226f97d32d6b5c0d5e4a3a2f53c3p-1,
+    0x1.2999e3109cad4p2
+  },
+  { // Entry 195
+    0x1.ff01226f97d32d6b5c0d5e4a3a2f53c3p-1,
+    -0x1.2999e3109cad4p2
+  },
+  { // Entry 196
+    0x1.2a8f11e7ae82c0a374855b53b3605d3bp-5,
+    0x1.2aap-5
+  },
+  { // Entry 197
+    -0x1.2a8f11e7ae82c0a374855b53b3605d3bp-5,
+    -0x1.2aap-5
+  },
+  { // Entry 198
+    0x1.2b03d1bf773df7b697d8a97eccefec50p-5,
+    0x1.2b14d3be0c230p-5
+  },
+  { // Entry 199
+    -0x1.2b03d1bf773df7b697d8a97eccefec50p-5,
+    -0x1.2b14d3be0c230p-5
+  },
+  { // Entry 200
+    -0x1.ffb90ee641791e699aa7fc7139bf58b4p-1,
+    0x1.2b7cb44849981p2
+  },
+  { // Entry 201
+    0x1.ffb90ee641791e699aa7fc7139bf58b4p-1,
+    -0x1.2b7cb44849981p2
+  },
+  { // Entry 202
+    -0x1.ffffff79e71a3db22109c6bb87f9c237p-1,
+    0x1.2becc86852580p200
+  },
+  { // Entry 203
+    0x1.ffffff79e71a3db22109c6bb87f9c237p-1,
+    -0x1.2becc86852580p200
+  },
+  { // Entry 204
+    -0x1.fff9edaf85b76f6cbb2f5b7e384cbbc9p-1,
+    0x1.2cfa14ce27cd5p2
+  },
+  { // Entry 205
+    0x1.fff9edaf85b76f6cbb2f5b7e384cbbc9p-1,
+    -0x1.2cfa14ce27cd5p2
+  },
+  { // Entry 206
+    0x1.2cbaaa4cebb517fe7bd14f062afec390p-4,
+    0x1.2d0p-4
+  },
+  { // Entry 207
+    -0x1.2cbaaa4cebb517fe7bd14f062afec390p-4,
+    -0x1.2d0p-4
+  },
+  { // Entry 208
+    -0x1.ffffbc177e00ff89cbb4f49a0643da78p-1,
+    0x1.2d76d18721be8p2
+  },
+  { // Entry 209
+    0x1.ffffbc177e00ff89cbb4f49a0643da78p-1,
+    -0x1.2d76d18721be8p2
+  },
+  { // Entry 210
+    0x1.745843dfafefd1bf9656896a8fb5b0e3p-18,
+    0x1.302a494e09090p97
+  },
+  { // Entry 211
+    -0x1.745843dfafefd1bf9656896a8fb5b0e3p-18,
+    -0x1.302a494e09090p97
+  },
+  { // Entry 212
+    0x1.ffcc568d423766c92e9c175f9210f1f4p-1,
+    0x1.31cc731cc731cp1000
+  },
+  { // Entry 213
+    -0x1.ffcc568d423766c92e9c175f9210f1f4p-1,
+    -0x1.31cc731cc731cp1000
+  },
+  { // Entry 214
+    0x1.b676077d4faf7927da1f858539fad1ffp-1,
+    0x1.328463d4f8ca6p441
+  },
+  { // Entry 215
+    -0x1.b676077d4faf7927da1f858539fad1ffp-1,
+    -0x1.328463d4f8ca6p441
+  },
+  { // Entry 216
+    -0x1.fffffffffffffffff3471d8dc070d5e6p-1,
+    0x1.32ce90b32171ep18
+  },
+  { // Entry 217
+    0x1.fffffffffffffffff3471d8dc070d5e6p-1,
+    -0x1.32ce90b32171ep18
+  },
+  { // Entry 218
+    0x1.35cbd3240d148845d39ebd54b1556779p-5,
+    0x1.35debd7f020ecp-5
+  },
+  { // Entry 219
+    -0x1.35cbd3240d148845d39ebd54b1556779p-5,
+    -0x1.35debd7f020ecp-5
+  },
+  { // Entry 220
+    0x1.3bb2086559fa982e5c6da10d8d9ac931p-7,
+    0x1.3bb3487893405p-7
+  },
+  { // Entry 221
+    -0x1.3bb2086559fa982e5c6da10d8d9ac931p-7,
+    -0x1.3bb3487893405p-7
+  },
+  { // Entry 222
+    0x1.3bb2086559fab82dfb1925eac2ab8bc1p-7,
+    0x1.3bb3487893407p-7
+  },
+  { // Entry 223
+    -0x1.3bb2086559fab82dfb1925eac2ab8bc1p-7,
+    -0x1.3bb3487893407p-7
+  },
+  { // Entry 224
+    0x1.dff197edc51d235e4a4cc6e34bd1fd10p-16,
+    0x1.3bb681d65aa60p100
+  },
+  { // Entry 225
+    -0x1.dff197edc51d235e4a4cc6e34bd1fd10p-16,
+    -0x1.3bb681d65aa60p100
+  },
+  { // Entry 226
+    -0x1.5d08d3dbb41af80000053ba30e95e709p-3,
+    0x1.3f9aa8626042fp83
+  },
+  { // Entry 227
+    0x1.5d08d3dbb41af80000053ba30e95e709p-3,
+    -0x1.3f9aa8626042fp83
+  },
+  { // Entry 228
+    0x1.fb503983f94bb749fce9ccca56a35ec6p-3,
+    0x1.3fep19
+  },
+  { // Entry 229
+    -0x1.fb503983f94bb749fce9ccca56a35ec6p-3,
+    -0x1.3fep19
+  },
+  { // Entry 230
+    -0x1.d3876eacc9ee6ec5a93ea14e032f9b02p-1,
+    0x1.4285478f1e3c8p58
+  },
+  { // Entry 231
+    0x1.d3876eacc9ee6ec5a93ea14e032f9b02p-1,
+    -0x1.4285478f1e3c8p58
+  },
+  { // Entry 232
+    0x1.42b66d54f69c0fabe371d703a1d7d7c9p-5,
+    0x1.42cbcf45a169ep-5
+  },
+  { // Entry 233
+    -0x1.42b66d54f69c0fabe371d703a1d7d7c9p-5,
+    -0x1.42cbcf45a169ep-5
+  },
+  { // Entry 234
+    0x1.b45e9e942755380000015e1db0ce188dp-1,
+    0x1.43fffffffff6ap557
+  },
+  { // Entry 235
+    -0x1.b45e9e942755380000015e1db0ce188dp-1,
+    -0x1.43fffffffff6ap557
+  },
+  { // Entry 236
+    0x1.43ffffffea602800006ed7862b3224a6p-17,
+    0x1.440p-17
+  },
+  { // Entry 237
+    -0x1.43ffffffea602800006ed7862b3224a6p-17,
+    -0x1.440p-17
+  },
+  { // Entry 238
+    -0x1.6a4e98d2d8b1b7fb43fef1bc4e3245bbp-1,
+    0x1.4748c08dc0976p200
+  },
+  { // Entry 239
+    0x1.6a4e98d2d8b1b7fb43fef1bc4e3245bbp-1,
+    -0x1.4748c08dc0976p200
+  },
+  { // Entry 240
+    -0x1.b57ca8aacf2a937a269ccdfa8b38c8c1p-1,
+    0x1.478fc08p43
+  },
+  { // Entry 241
+    0x1.b57ca8aacf2a937a269ccdfa8b38c8c1p-1,
+    -0x1.478fc08p43
+  },
+  { // Entry 242
+    0x1.ffe38008ef6b4956b290202d414d59c3p-1,
+    0x1.4cf36d17c596ep200
+  },
+  { // Entry 243
+    -0x1.ffe38008ef6b4956b290202d414d59c3p-1,
+    -0x1.4cf36d17c596ep200
+  },
+  { // Entry 244
+    0x1.d6457a3f12e6c527a853470401d35d2dp-1,
+    0x1.4f0f308p488
+  },
+  { // Entry 245
+    -0x1.d6457a3f12e6c527a853470401d35d2dp-1,
+    -0x1.4f0f308p488
+  },
+  { // Entry 246
+    0x1.4fffffffff9f88000000084f22ccccccp-20,
+    0x1.5p-20
+  },
+  { // Entry 247
+    -0x1.4fffffffff9f88000000084f22ccccccp-20,
+    -0x1.5p-20
+  },
+  { // Entry 248
+    -0x1.cbad095f503a18019a7b27170f6a4acfp-1,
+    0x1.5143e25a488f1p3
+  },
+  { // Entry 249
+    0x1.cbad095f503a18019a7b27170f6a4acfp-1,
+    -0x1.5143e25a488f1p3
+  },
+  { // Entry 250
+    -0x1.f942d6262e82dd6834ded8c90d0f8212p-5,
+    0x1.51f0f44da4df4p200
+  },
+  { // Entry 251
+    0x1.f942d6262e82dd6834ded8c90d0f8212p-5,
+    -0x1.51f0f44da4df4p200
+  },
+  { // Entry 252
+    -0x1.fc466ccaece804aac14e79aaba4b5c1ep-3,
+    0x1.52ad6c5a3602fp16
+  },
+  { // Entry 253
+    0x1.fc466ccaece804aac14e79aaba4b5c1ep-3,
+    -0x1.52ad6c5a3602fp16
+  },
+  { // Entry 254
+    0x1.d69c3cf4eecdd9b43726a2a7fa405c31p-1,
+    0x1.52f00e0p793
+  },
+  { // Entry 255
+    -0x1.d69c3cf4eecdd9b43726a2a7fa405c31p-1,
+    -0x1.52f00e0p793
+  },
+  { // Entry 256
+    0x1.e120292f3d4956579f9c3164cd94bad6p-1,
+    0x1.5555555555556p239
+  },
+  { // Entry 257
+    -0x1.e120292f3d4956579f9c3164cd94bad6p-1,
+    -0x1.5555555555556p239
+  },
+  { // Entry 258
+    -0x1.fd1d85b7ef0037fc4b1d1763882085f1p-1,
+    0x1.5a0000008p6
+  },
+  { // Entry 259
+    0x1.fd1d85b7ef0037fc4b1d1763882085f1p-1,
+    -0x1.5a0000008p6
+  },
+  { // Entry 260
+    0x1.5aff9664b07e1a2e0f24b2572ddbff64p-6,
+    0x1.5b063ad2dd08fp-6
+  },
+  { // Entry 261
+    -0x1.5aff9664b07e1a2e0f24b2572ddbff64p-6,
+    -0x1.5b063ad2dd08fp-6
+  },
+  { // Entry 262
+    -0x1.83f8bbb59f2f8cd8ebbd44c459e4c493p-1,
+    0x1.5b179d75fa285p2
+  },
+  { // Entry 263
+    0x1.83f8bbb59f2f8cd8ebbd44c459e4c493p-1,
+    -0x1.5b179d75fa285p2
+  },
+  { // Entry 264
+    0x1.fa865b0d994968390f9480c9caf49cb1p-1,
+    0x1.5bb5967402f9cp79
+  },
+  { // Entry 265
+    -0x1.fa865b0d994968390f9480c9caf49cb1p-1,
+    -0x1.5bb5967402f9cp79
+  },
+  { // Entry 266
+    0x1.e8a523fce884d189bdb87c20ed615944p-2,
+    0x1.5bea010p468
+  },
+  { // Entry 267
+    -0x1.e8a523fce884d189bdb87c20ed615944p-2,
+    -0x1.5bea010p468
+  },
+  { // Entry 268
+    -0x1.ff2ad941f0a40ea3bc29e6dd9c339b63p-1,
+    0x1.5f19fbc507af6p9
+  },
+  { // Entry 269
+    0x1.ff2ad941f0a40ea3bc29e6dd9c339b63p-1,
+    -0x1.5f19fbc507af6p9
+  },
+  { // Entry 270
+    -0x1.75ce4a0d0bd037fd53042cab82404953p-1,
+    0x1.60a610a658da9p889
+  },
+  { // Entry 271
+    0x1.75ce4a0d0bd037fd53042cab82404953p-1,
+    -0x1.60a610a658da9p889
+  },
+  { // Entry 272
+    -0x1.721586594ab4818acd4cb41fafc99484p-1,
+    0x1.62ad7ce17143dp62
+  },
+  { // Entry 273
+    0x1.721586594ab4818acd4cb41fafc99484p-1,
+    -0x1.62ad7ce17143dp62
+  },
+  { // Entry 274
+    0x1.b8d27019d1b9e836b953613c87acf3a9p-2,
+    0x1.645926cc1132cp9
+  },
+  { // Entry 275
+    -0x1.b8d27019d1b9e836b953613c87acf3a9p-2,
+    -0x1.645926cc1132cp9
+  },
+  { // Entry 276
+    0x1.647e09059c1e98000013714cd0c6a43dp-9,
+    0x1.647e25d391f17p-9
+  },
+  { // Entry 277
+    -0x1.647e09059c1e98000013714cd0c6a43dp-9,
+    -0x1.647e25d391f17p-9
+  },
+  { // Entry 278
+    -0x1.8d3b53ff85a823d06537413901229e45p-1,
+    0x1.64ef438p142
+  },
+  { // Entry 279
+    0x1.8d3b53ff85a823d06537413901229e45p-1,
+    -0x1.64ef438p142
+  },
+  { // Entry 280
+    -0x1.f7c8630e62a01ffd4e02577956e5523ep-1,
+    0x1.6599665996658p3
+  },
+  { // Entry 281
+    0x1.f7c8630e62a01ffd4e02577956e5523ep-1,
+    -0x1.6599665996658p3
+  },
+  { // Entry 282
+    0x1.67028e3602034800f45a9158d20a340cp-5,
+    0x1.672p-5
+  },
+  { // Entry 283
+    -0x1.67028e3602034800f45a9158d20a340cp-5,
+    -0x1.672p-5
+  },
+  { // Entry 284
+    0x1.bc60c8c33cb5ebf693d71650cbf166f9p-2,
+    0x1.688ae6c138ea8p299
+  },
+  { // Entry 285
+    -0x1.bc60c8c33cb5ebf693d71650cbf166f9p-2,
+    -0x1.688ae6c138ea8p299
+  },
+  { // Entry 286
+    -0x1.fc3b4bb8b012e8042d3ebced12def0c9p-1,
+    0x1.6aa78p17
+  },
+  { // Entry 287
+    0x1.fc3b4bb8b012e8042d3ebced12def0c9p-1,
+    -0x1.6aa78p17
+  },
+  { // Entry 288
+    0x1.ffffffffffffffffffffffffffffffb5p-1,
+    0x1.6ac5b262ca1ffp849
+  },
+  { // Entry 289
+    -0x1.ffffffffffffffffffffffffffffffb5p-1,
+    -0x1.6ac5b262ca1ffp849
+  },
+  { // Entry 290
+    -0x1.82317836a97c8cea1cd2e3a4d0d48f29p-1,
+    0x1.6d88083749412p4
+  },
+  { // Entry 291
+    0x1.82317836a97c8cea1cd2e3a4d0d48f29p-1,
+    -0x1.6d88083749412p4
+  },
+  { // Entry 292
+    0x1.6f781c78cc82a7ffcd20ba801e6691b1p-6,
+    0x1.6f8p-6
+  },
+  { // Entry 293
+    -0x1.6f781c78cc82a7ffcd20ba801e6691b1p-6,
+    -0x1.6f8p-6
+  },
+  { // Entry 294
+    -0x1.fdbe5085494ae7fe47fa067aaea7fdf9p-1,
+    0x1.729aa6859d1f4p396
+  },
+  { // Entry 295
+    0x1.fdbe5085494ae7fe47fa067aaea7fdf9p-1,
+    -0x1.729aa6859d1f4p396
+  },
+  { // Entry 296
+    -0x1.fffffae862b4fec1c2f1712aa165807cp-1,
+    0x1.73e2dbe9a2f80p10
+  },
+  { // Entry 297
+    0x1.fffffae862b4fec1c2f1712aa165807cp-1,
+    -0x1.73e2dbe9a2f80p10
+  },
+  { // Entry 298
+    0x1.769ac74459b058456b333238833f1d1ap-7,
+    0x1.769cde0b90b80p-7
+  },
+  { // Entry 299
+    -0x1.769ac74459b058456b333238833f1d1ap-7,
+    -0x1.769cde0b90b80p-7
+  },
+  { // Entry 300
+    0x1.769e8afb6a4ebf99ade465d19be86ac0p-5,
+    0x1.76cp-5
+  },
+  { // Entry 301
+    -0x1.769e8afb6a4ebf99ade465d19be86ac0p-5,
+    -0x1.76cp-5
+  },
+  { // Entry 302
+    0x1.fd562611f5bd4800de503e4210cc7df4p-1,
+    0x1.78001p0
+  },
+  { // Entry 303
+    -0x1.fd562611f5bd4800de503e4210cc7df4p-1,
+    -0x1.78001p0
+  },
+  { // Entry 304
+    0x1.fdba784ca00f17ebcc2b5b1098e83bffp-1,
+    0x1.7a0p0
+  },
+  { // Entry 305
+    -0x1.fdba784ca00f17ebcc2b5b1098e83bffp-1,
+    -0x1.7a0p0
+  },
+  { // Entry 306
+    0x1.f930c222a8682d7d1920a12b68870c36p-5,
+    0x1.7abd870381c2dp38
+  },
+  { // Entry 307
+    -0x1.f930c222a8682d7d1920a12b68870c36p-5,
+    -0x1.7abd870381c2dp38
+  },
+  { // Entry 308
+    0x1.ffeb2ff2b692367bc5660dab6960b57dp-1,
+    0x1.7dc945c212480p95
+  },
+  { // Entry 309
+    -0x1.ffeb2ff2b692367bc5660dab6960b57dp-1,
+    -0x1.7dc945c212480p95
+  },
+  { // Entry 310
+    0x1.b279153c23fb180000ce3a0d47d8c476p-2,
+    0x1.7f73e1594b70cp98
+  },
+  { // Entry 311
+    -0x1.b279153c23fb180000ce3a0d47d8c476p-2,
+    -0x1.7f73e1594b70cp98
+  },
+  { // Entry 312
+    -0x1.599fad35cf60ad43760cf3a9da3d9c30p-41,
+    0x1.7f7ef77e83f1ap21
+  },
+  { // Entry 313
+    0x1.599fad35cf60ad43760cf3a9da3d9c30p-41,
+    -0x1.7f7ef77e83f1ap21
+  },
+  { // Entry 314
+    0x1.feb7a9b2c6d8ade6e17fdacaef4fd96cp-1,
+    0x1.8p0
+  },
+  { // Entry 315
+    -0x1.feb7a9b2c6d8ade6e17fdacaef4fd96cp-1,
+    -0x1.8p0
+  },
+  { // Entry 316
+    0x1.f798d01ec615b8ededa474e3c6cd0c92p-1,
+    0x1.8p6
+  },
+  { // Entry 317
+    -0x1.f798d01ec615b8ededa474e3c6cd0c92p-1,
+    -0x1.8p6
+  },
+  { // Entry 318
+    0x1.fee1a2a977bced179f8ab8455ada525fp-1,
+    0x1.8132ceb1c4f39p0
+  },
+  { // Entry 319
+    -0x1.fee1a2a977bced179f8ab8455ada525fp-1,
+    -0x1.8132ceb1c4f39p0
+  },
+  { // Entry 320
+    -0x1.24245af4cd994e9b3bba992d0f57fc3fp-52,
+    0x1.81ae0dffa3b33p959
+  },
+  { // Entry 321
+    0x1.24245af4cd994e9b3bba992d0f57fc3fp-52,
+    -0x1.81ae0dffa3b33p959
+  },
+  { // Entry 322
+    0x1.85d41b0bf30907fffff1913a5ced7645p-4,
+    0x1.85ec5a399a2e6p1
+  },
+  { // Entry 323
+    -0x1.85d41b0bf30907fffff1913a5ced7645p-4,
+    -0x1.85ec5a399a2e6p1
+  },
+  { // Entry 324
+    0x1.1e42ae3cfbdc60976884087f97a0fda9p-24,
+    0x1.86a0092754022p16
+  },
+  { // Entry 325
+    -0x1.1e42ae3cfbdc60976884087f97a0fda9p-24,
+    -0x1.86a0092754022p16
+  },
+  { // Entry 326
+    -0x1.dbf4e594cefe1548efc24098d631e950p-1,
+    0x1.8720588p392
+  },
+  { // Entry 327
+    0x1.dbf4e594cefe1548efc24098d631e950p-1,
+    -0x1.8720588p392
+  },
+  { // Entry 328
+    0x1.44302d6a82d403badf1f9b71420ccdcap-9,
+    0x1.8929354ebc6aap43
+  },
+  { // Entry 329
+    -0x1.44302d6a82d403badf1f9b71420ccdcap-9,
+    -0x1.8929354ebc6aap43
+  },
+  { // Entry 330
+    0x1.8a52189ec34877bb5944413e00ad52edp-5,
+    0x1.8a791e4791e75p-5
+  },
+  { // Entry 331
+    -0x1.8a52189ec34877bb5944413e00ad52edp-5,
+    -0x1.8a791e4791e75p-5
+  },
+  { // Entry 332
+    -0x1.fe8566e538122db33c17f13b83474a04p-1,
+    0x1.8ba761438f5edp11
+  },
+  { // Entry 333
+    0x1.fe8566e538122db33c17f13b83474a04p-1,
+    -0x1.8ba761438f5edp11
+  },
+  { // Entry 334
+    0x1.fff42aca4cb5a80000057f1a48af65dep-1,
+    0x1.8eaf16de63920p0
+  },
+  { // Entry 335
+    -0x1.fff42aca4cb5a80000057f1a48af65dep-1,
+    -0x1.8eaf16de63920p0
+  },
+  { // Entry 336
+    0x1.fffb7d3f3a252da56d96327c18627f57p-1,
+    0x1.9p0
+  },
+  { // Entry 337
+    -0x1.fffb7d3f3a252da56d96327c18627f57p-1,
+    -0x1.9p0
+  },
+  { // Entry 338
+    -0x1.e815770667fd87f9525154edc867605fp-4,
+    0x1.91a5657fb6a9ap6
+  },
+  { // Entry 339
+    0x1.e815770667fd87f9525154edc867605fp-4,
+    -0x1.91a5657fb6a9ap6
+  },
+  { // Entry 340
+    -0x1.fffffffd311dc7ec5d0ae5728a7960fdp-1,
+    0x1.921fb54468847p37
+  },
+  { // Entry 341
+    0x1.fffffffd311dc7ec5d0ae5728a7960fdp-1,
+    -0x1.921fb54468847p37
+  },
+  { // Entry 342
+    0x1.ffffffff875e5e4497dd0760336e63f3p-17,
+    0x1.921ff54442d18p2
+  },
+  { // Entry 343
+    -0x1.ffffffff875e5e4497dd0760336e63f3p-17,
+    -0x1.921ff54442d18p2
+  },
+  { // Entry 344
+    0x1.812a5da3777cd7f6e17288638b40aa09p-8,
+    0x1.928p2
+  },
+  { // Entry 345
+    -0x1.812a5da3777cd7f6e17288638b40aa09p-8,
+    -0x1.928p2
+  },
+  { // Entry 346
+    0x1.fff9be8d82572c746f944934bbf1b697p-1,
+    0x1.94ap0
+  },
+  { // Entry 347
+    -0x1.fff9be8d82572c746f944934bbf1b697p-1,
+    -0x1.94ap0
+  },
+  { // Entry 348
+    0x1.947b0ace235f2850b27b164c49102a49p-5,
+    0x1.94a5294a51bdep-5
+  },
+  { // Entry 349
+    -0x1.947b0ace235f2850b27b164c49102a49p-5,
+    -0x1.94a5294a51bdep-5
+  },
+  { // Entry 350
+    0x1.c34f70e55a707bbd053a70e749105174p-2,
+    0x1.94a5294a52948p100
+  },
+  { // Entry 351
+    -0x1.c34f70e55a707bbd053a70e749105174p-2,
+    -0x1.94a5294a52948p100
+  },
+  { // Entry 352
+    0x1.950bcfc0f3d50850941a41d66cfa3721p-5,
+    0x1.95361b8f7697dp-5
+  },
+  { // Entry 353
+    -0x1.950bcfc0f3d50850941a41d66cfa3721p-5,
+    -0x1.95361b8f7697dp-5
+  },
+  { // Entry 354
+    0x1.6c548bfcce6953f19a8d2dd480d9320cp-1,
+    0x1.956p-1
+  },
+  { // Entry 355
+    -0x1.6c548bfcce6953f19a8d2dd480d9320cp-1,
+    -0x1.956p-1
+  },
+  { // Entry 356
+    0x1.ffeffdbf67ca6711a57b7d82140093c6p-1,
+    0x1.962p0
+  },
+  { // Entry 357
+    -0x1.ffeffdbf67ca6711a57b7d82140093c6p-1,
+    -0x1.962p0
+  },
+  { // Entry 358
+    0x1.9708213bf67f4857135077d50826f588p-5,
+    0x1.97330d2ea16d9p-5
+  },
+  { // Entry 359
+    -0x1.9708213bf67f4857135077d50826f588p-5,
+    -0x1.97330d2ea16d9p-5
+  },
+  { // Entry 360
+    0x1.972bf92713d50858e64c1b9b26aeecd0p-5,
+    0x1.9756f073b6b61p-5
+  },
+  { // Entry 361
+    -0x1.972bf92713d50858e64c1b9b26aeecd0p-5,
+    -0x1.9756f073b6b61p-5
+  },
+  { // Entry 362
+    0x1.976845ebe71188580e468bad00ce23ecp-5,
+    0x1.97935055cec1bp-5
+  },
+  { // Entry 363
+    -0x1.976845ebe71188580e468bad00ce23ecp-5,
+    -0x1.97935055cec1bp-5
+  },
+  { // Entry 364
+    0x1.97535cee51a42806e15f6f878524e5b7p-4,
+    0x1.980p-4
+  },
+  { // Entry 365
+    -0x1.97535cee51a42806e15f6f878524e5b7p-4,
+    -0x1.980p-4
+  },
+  { // Entry 366
+    0x1.6f494c3356177000006502cdff975b08p-1,
+    0x1.999999a42160cp-1
+  },
+  { // Entry 367
+    -0x1.6f494c3356177000006502cdff975b08p-1,
+    -0x1.999999a42160cp-1
+  },
+  { // Entry 368
+    0x1.6f494c37edd6d800006dc76aee4cc8e4p-1,
+    0x1.999999aab8f50p-1
+  },
+  { // Entry 369
+    -0x1.6f494c37edd6d800006dc76aee4cc8e4p-1,
+    -0x1.999999aab8f50p-1
+  },
+  { // Entry 370
+    0x1.6fa912bdeaab280000164f16dd649356p-1,
+    0x1.9a2324b9c6326p-1
+  },
+  { // Entry 371
+    -0x1.6fa912bdeaab280000164f16dd649356p-1,
+    -0x1.9a2324b9c6326p-1
+  },
+  { // Entry 372
+    0x1.70c7ef4ef9b347ed234ca6131be1b786p-1,
+    0x1.9bcp-1
+  },
+  { // Entry 373
+    -0x1.70c7ef4ef9b347ed234ca6131be1b786p-1,
+    -0x1.9bcp-1
+  },
+  { // Entry 374
+    0x1.ff28176ad3163ea168c9991f155f875bp-1,
+    0x1.a0d1d817d6c4ap0
+  },
+  { // Entry 375
+    -0x1.ff28176ad3163ea168c9991f155f875bp-1,
+    -0x1.a0d1d817d6c4ap0
+  },
+  { // Entry 376
+    0x1.749468a7248dd26161e93d78928c66dep-1,
+    0x1.a141c9de12fdfp-1
+  },
+  { // Entry 377
+    -0x1.749468a7248dd26161e93d78928c66dep-1,
+    -0x1.a141c9de12fdfp-1
+  },
+  { // Entry 378
+    0x1.754ebb7e73f452ab49c615f0e8300d5cp-1,
+    0x1.a251bc6766f20p-1
+  },
+  { // Entry 379
+    -0x1.754ebb7e73f452ab49c615f0e8300d5cp-1,
+    -0x1.a251bc6766f20p-1
+  },
+  { // Entry 380
+    -0x1.7c3bfefa74bd07fe21336caac372a73ep-1,
+    0x1.a2689ae1b86ddp62
+  },
+  { // Entry 381
+    0x1.7c3bfefa74bd07fe21336caac372a73ep-1,
+    -0x1.a2689ae1b86ddp62
+  },
+  { // Entry 382
+    -0x1.ffff4f3648e02f9f494f42eb822f262bp-1,
+    0x1.a3f66180c4550p100
+  },
+  { // Entry 383
+    0x1.ffff4f3648e02f9f494f42eb822f262bp-1,
+    -0x1.a3f66180c4550p100
+  },
+  { // Entry 384
+    -0x1.1cf463983c0e28023161b7d0d2938e37p-3,
+    0x1.a3fdd2a5286c3p1
+  },
+  { // Entry 385
+    0x1.1cf463983c0e28023161b7d0d2938e37p-3,
+    -0x1.a3fdd2a5286c3p1
+  },
+  { // Entry 386
+    0x1.feb7948d224d7e759a7c9dd768ded727p-1,
+    0x1.a44p0
+  },
+  { // Entry 387
+    -0x1.feb7948d224d7e759a7c9dd768ded727p-1,
+    -0x1.a44p0
+  },
+  { // Entry 388
+    0x1.78801e3e1166482dce6208e98d3cc142p-1,
+    0x1.a701ef3c7d54bp-1
+  },
+  { // Entry 389
+    -0x1.78801e3e1166482dce6208e98d3cc142p-1,
+    -0x1.a701ef3c7d54bp-1
+  },
+  { // Entry 390
+    -0x1.fff11e871d59c3e1333db5475bb57e27p-1,
+    0x1.a8c01fd43c0p537
+  },
+  { // Entry 391
+    0x1.fff11e871d59c3e1333db5475bb57e27p-1,
+    -0x1.a8c01fd43c0p537
+  },
+  { // Entry 392
+    0x1.fdfa4366eb7337e6d973c4cb8f1a244ap-1,
+    0x1.a8e29b7602f3bp0
+  },
+  { // Entry 393
+    -0x1.fdfa4366eb7337e6d973c4cb8f1a244ap-1,
+    -0x1.a8e29b7602f3bp0
+  },
+  { // Entry 394
+    0x1.fde98b94e7947a04229d26eeb2bb4280p-1,
+    0x1.a94p0
+  },
+  { // Entry 395
+    -0x1.fde98b94e7947a04229d26eeb2bb4280p-1,
+    -0x1.a94p0
+  },
+  { // Entry 396
+    0x1.7931cba10000880000068f94098018a7p-2,
+    0x1.aa445fce93b82p2
+  },
+  { // Entry 397
+    -0x1.7931cba10000880000068f94098018a7p-2,
+    -0x1.aa445fce93b82p2
+  },
+  { // Entry 398
+    0x1.7af3f76c7a708834b4072f59ac71a0bap-1,
+    0x1.aaa3fbc359fbep-1
+  },
+  { // Entry 399
+    -0x1.7af3f76c7a708834b4072f59ac71a0bap-1,
+    -0x1.aaa3fbc359fbep-1
+  },
+  { // Entry 400
+    0x1.fd74e53ae32fcd8467bcf50da1d0f563p-6,
+    0x1.abdd3dbd4d860p119
+  },
+  { // Entry 401
+    -0x1.fd74e53ae32fcd8467bcf50da1d0f563p-6,
+    -0x1.abdd3dbd4d860p119
+  },
+  { // Entry 402
+    0x1.7d4a7bf183a3329ed434c0c4dd78b1d9p-1,
+    0x1.ae2165a0c9f8ep-1
+  },
+  { // Entry 403
+    -0x1.7d4a7bf183a3329ed434c0c4dd78b1d9p-1,
+    -0x1.ae2165a0c9f8ep-1
+  },
+  { // Entry 404
+    0x1.b81410edc79e0837507a3eef8d553bd6p-2,
+    0x1.ae8dfefcfe13bp2
+  },
+  { // Entry 405
+    -0x1.b81410edc79e0837507a3eef8d553bd6p-2,
+    -0x1.ae8dfefcfe13bp2
+  },
+  { // Entry 406
+    -0x1.ff751561dc5097fefe499301d034a0edp-2,
+    0x1.b5597f950ee8cp29
+  },
+  { // Entry 407
+    0x1.ff751561dc5097fefe499301d034a0edp-2,
+    -0x1.b5597f950ee8cp29
+  },
+  { // Entry 408
+    0x1.027d184afb1984ca1d21b1ac928d5391p-52,
+    0x1.bab62ed655019p970
+  },
+  { // Entry 409
+    -0x1.027d184afb1984ca1d21b1ac928d5391p-52,
+    -0x1.bab62ed655019p970
+  },
+  { // Entry 410
+    0x1.bc572e5e413e17fcb2246d40249a005fp-10,
+    0x1.bc573c4ffffffp-10
+  },
+  { // Entry 411
+    -0x1.bc572e5e413e17fcb2246d40249a005fp-10,
+    -0x1.bc573c4ffffffp-10
+  },
+  { // Entry 412
+    0x1.fb300f1e39afe80471f993abb8cfa428p-1,
+    0x1.bef5cd25ab1adp9
+  },
+  { // Entry 413
+    -0x1.fb300f1e39afe80471f993abb8cfa428p-1,
+    -0x1.bef5cd25ab1adp9
+  },
+  { // Entry 414
+    0x1.b1baaf622d3a27fd27d0716f7d08d992p-2,
+    0x1.bfdf6df2a24c1p-2
+  },
+  { // Entry 415
+    -0x1.b1baaf622d3a27fd27d0716f7d08d992p-2,
+    -0x1.bfdf6df2a24c1p-2
+  },
+  { // Entry 416
+    0x1.88fb762c35ce37fecbb4748d01feffcep-1,
+    0x1.bfffffdffffffp-1
+  },
+  { // Entry 417
+    -0x1.88fb762c35ce37fecbb4748d01feffcep-1,
+    -0x1.bfffffdffffffp-1
+  },
+  { // Entry 418
+    0x1.fe0ebff99ab8c80ce5939f1f072c2e91p-1,
+    0x1.c2b489520e376p920
+  },
+  { // Entry 419
+    -0x1.fe0ebff99ab8c80ce5939f1f072c2e91p-1,
+    -0x1.c2b489520e376p920
+  },
+  { // Entry 420
+    0x1.cf7f749f2a8357f7feab685ff6f8b624p-4,
+    0x1.c54beb0085470p5
+  },
+  { // Entry 421
+    -0x1.cf7f749f2a8357f7feab685ff6f8b624p-4,
+    -0x1.c54beb0085470p5
+  },
+  { // Entry 422
+    0x1.b6facf665891482ea8c61f5ca32f280dp-2,
+    0x1.c5ad34f5f472ap-2
+  },
+  { // Entry 423
+    -0x1.b6facf665891482ea8c61f5ca32f280dp-2,
+    -0x1.c5ad34f5f472ap-2
+  },
+  { // Entry 424
+    0x1.b851cd9b84ee683dc6bd3899ea81dbf9p-2,
+    0x1.c728fc2f34bd6p-2
+  },
+  { // Entry 425
+    -0x1.b851cd9b84ee683dc6bd3899ea81dbf9p-2,
+    -0x1.c728fc2f34bd6p-2
+  },
+  { // Entry 426
+    0x1.ba21b53cf2ff2832606f65eeeb4e3aafp-2,
+    0x1.c92b0f6105089p-2
+  },
+  { // Entry 427
+    -0x1.ba21b53cf2ff2832606f65eeeb4e3aafp-2,
+    -0x1.c92b0f6105089p-2
+  },
+  { // Entry 428
+    0x1.c9a2b68e30ec77c4e76c889704394a50p-5,
+    0x1.c9dfbbe9ec704p-5
+  },
+  { // Entry 429
+    -0x1.c9a2b68e30ec77c4e76c889704394a50p-5,
+    -0x1.c9dfbbe9ec704p-5
+  },
+  { // Entry 430
+    0x1.f370115c9ab35743e12217c6122e1a28p-1,
+    0x1.caf31bd7ee217p0
+  },
+  { // Entry 431
+    -0x1.f370115c9ab35743e12217c6122e1a28p-1,
+    -0x1.caf31bd7ee217p0
+  },
+  { // Entry 432
+    -0x1.dd38a1f1d289b6173115721bc58e298dp-54,
+    0x1.cb44e86bc192bp648
+  },
+  { // Entry 433
+    0x1.dd38a1f1d289b6173115721bc58e298dp-54,
+    -0x1.cb44e86bc192bp648
+  },
+  { // Entry 434
+    0x1.dd38a1f1d289b6173115721bc55a56a8p-53,
+    0x1.cb44e86bc192bp649
+  },
+  { // Entry 435
+    -0x1.dd38a1f1d289b6173115721bc55a56a8p-53,
+    -0x1.cb44e86bc192bp649
+  },
+  { // Entry 436
+    0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
+    0x1.cb6p-3
+  },
+  { // Entry 437
+    -0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
+    -0x1.cb6p-3
+  },
+  { // Entry 438
+    0x1.cd279aa6196b57f9be71cdffdd9f1919p-4,
+    0x1.ce2271d2f662fp-4
+  },
+  { // Entry 439
+    -0x1.cd279aa6196b57f9be71cdffdd9f1919p-4,
+    -0x1.ce2271d2f662fp-4
+  },
+  { // Entry 440
+    0x1.930b705f9fad17fb56813a45973a8d72p-1,
+    0x1.d0000000004p-1
+  },
+  { // Entry 441
+    -0x1.930b705f9fad17fb56813a45973a8d72p-1,
+    -0x1.d0000000004p-1
+  },
+  { // Entry 442
+    0x1.7ef24c8e67d9a8017a031f38e24cce06p-1,
+    0x1.d01p199
+  },
+  { // Entry 443
+    -0x1.7ef24c8e67d9a8017a031f38e24cce06p-1,
+    -0x1.d01p199
+  },
+  { // Entry 444
+    0x1.ffff124c001aafb1f175ccb531c053b0p-1,
+    0x1.d024ba6f953cfp1000
+  },
+  { // Entry 445
+    -0x1.ffff124c001aafb1f175ccb531c053b0p-1,
+    -0x1.d024ba6f953cfp1000
+  },
+  { // Entry 446
+    -0x1.f83a0983dd15d00301e2df21e3bee635p-2,
+    0x1.d4067c60f471ep1
+  },
+  { // Entry 447
+    0x1.f83a0983dd15d00301e2df21e3bee635p-2,
+    -0x1.d4067c60f471ep1
+  },
+  { // Entry 448
+    0x1.d79b9896ff55484d2591b677d54ea46fp-5,
+    0x1.d7de6263bcaabp-5
+  },
+  { // Entry 449
+    -0x1.d79b9896ff55484d2591b677d54ea46fp-5,
+    -0x1.d7de6263bcaabp-5
+  },
+  { // Entry 450
+    0x1.ed0b908a2982f7fd9c80bc1051dd4080p-1,
+    0x1.d800000002274p0
+  },
+  { // Entry 451
+    -0x1.ed0b908a2982f7fd9c80bc1051dd4080p-1,
+    -0x1.d800000002274p0
+  },
+  { // Entry 452
+    -0x1.f2c217cbc7dcc919243a7c434a209f9ap-1,
+    0x1.d96e058p488
+  },
+  { // Entry 453
+    0x1.f2c217cbc7dcc919243a7c434a209f9ap-1,
+    -0x1.d96e058p488
+  },
+  { // Entry 454
+    0x1.98dcd093377928000000000000167dc7p-1,
+    0x1.d98c4c612718dp-1
+  },
+  { // Entry 455
+    -0x1.98dcd093377928000000000000167dc7p-1,
+    -0x1.d98c4c612718dp-1
+  },
+  { // Entry 456
+    0x1.db3ba8775ca257da3bd5449d396a66e2p-5,
+    0x1.db8p-5
+  },
+  { // Entry 457
+    -0x1.db3ba8775ca257da3bd5449d396a66e2p-5,
+    -0x1.db8p-5
+  },
+  { // Entry 458
+    -0x1.9fee37697d5828031a6a2679c1433457p-2,
+    0x1.de386d6090303p200
+  },
+  { // Entry 459
+    0x1.9fee37697d5828031a6a2679c1433457p-2,
+    -0x1.de386d6090303p200
+  },
+  { // Entry 460
+    -0x1.5361ee6553188036e9dfcab428deb4e1p-53,
+    0x1.de5e5054e921bp35
+  },
+  { // Entry 461
+    0x1.5361ee6553188036e9dfcab428deb4e1p-53,
+    -0x1.de5e5054e921bp35
+  },
+  { // Entry 462
+    0x1.fec48d5e769ebe37448c10e0a7a0ecb1p-1,
+    0x1.df77ddf77ddf4p10
+  },
+  { // Entry 463
+    -0x1.fec48d5e769ebe37448c10e0a7a0ecb1p-1,
+    -0x1.df77ddf77ddf4p10
+  },
+  { // Entry 464
+    -0x1.2902a83d72632800003d1149b7e6c0fbp-1,
+    0x1.e1562b0448a86p1
+  },
+  { // Entry 465
+    0x1.2902a83d72632800003d1149b7e6c0fbp-1,
+    -0x1.e1562b0448a86p1
+  },
+  { // Entry 466
+    0x1.9e26c7bc96b68800000d4736ff132035p-1,
+    0x1.e2700cdc86635p-1
+  },
+  { // Entry 467
+    -0x1.9e26c7bc96b68800000d4736ff132035p-1,
+    -0x1.e2700cdc86635p-1
+  },
+  { // Entry 468
+    0x1.e6494911eedd18d0f1915fd4f6495469p-7,
+    0x1.e64ddaf7bd730p-7
+  },
+  { // Entry 469
+    -0x1.e6494911eedd18d0f1915fd4f6495469p-7,
+    -0x1.e64ddaf7bd730p-7
+  },
+  { // Entry 470
+    0x1.eb26c690bda2484a6c020a9c052ea846p-5,
+    0x1.eb7239bca8afap-5
+  },
+  { // Entry 471
+    -0x1.eb26c690bda2484a6c020a9c052ea846p-5,
+    -0x1.eb7239bca8afap-5
+  },
+  { // Entry 472
+    0x1.c73238790a4ce801e04107b2546b4ae3p-3,
+    0x1.ef7b83f7bdef4p3
+  },
+  { // Entry 473
+    -0x1.c73238790a4ce801e04107b2546b4ae3p-3,
+    -0x1.ef7b83f7bdef4p3
+  },
+  { // Entry 474
+    0x1.ed1b575acb8c881082ce315074a8a42ap-3,
+    0x1.f20000000109bp-3
+  },
+  { // Entry 475
+    -0x1.ed1b575acb8c881082ce315074a8a42ap-3,
+    -0x1.f20000000109bp-3
+  },
+  { // Entry 476
+    0x1.c1b50a56c8809800000282a516c13e25p-1,
+    0x1.f40ca67a9e8d7p9
+  },
+  { // Entry 477
+    -0x1.c1b50a56c8809800000282a516c13e25p-1,
+    -0x1.f40ca67a9e8d7p9
+  },
+  { // Entry 478
+    0x1.e321fea643a968083208768e9e2cd28ep-2,
+    0x1.f7224d2c77540p-2
+  },
+  { // Entry 479
+    -0x1.e321fea643a968083208768e9e2cd28ep-2,
+    -0x1.f7224d2c77540p-2
+  },
+  { // Entry 480
+    0x1.c1269b020a107ffc00612a563a919686p-3,
+    0x1.f78a0d05e60e2p6
+  },
+  { // Entry 481
+    -0x1.c1269b020a107ffc00612a563a919686p-3,
+    -0x1.f78a0d05e60e2p6
+  },
+  { // Entry 482
+    0x1.f76cae28a07747fffcd453a0142c2ec1p-5,
+    0x1.f7bdef7bdf073p-5
+  },
+  { // Entry 483
+    -0x1.f76cae28a07747fffcd453a0142c2ec1p-5,
+    -0x1.f7bdef7bdf073p-5
+  },
+  { // Entry 484
+    0x1.e42c139dc2053807b9440f1a28f7c9b9p-2,
+    0x1.f8502d5955443p-2
+  },
+  { // Entry 485
+    -0x1.e42c139dc2053807b9440f1a28f7c9b9p-2,
+    -0x1.f8502d5955443p-2
+  },
+  { // Entry 486
+    0x1.0fa749e07f63fc9d01c834de47654acbp-9,
+    0x1.f8fc824d2693bp61
+  },
+  { // Entry 487
+    -0x1.0fa749e07f63fc9d01c834de47654acbp-9,
+    -0x1.f8fc824d2693bp61
+  },
+  { // Entry 488
+    0x1.ffa80324e2d8ebc02f323ed49eb97a6cp-1,
+    0x1.f8fffffffffffp2
+  },
+  { // Entry 489
+    -0x1.ffa80324e2d8ebc02f323ed49eb97a6cp-1,
+    -0x1.f8fffffffffffp2
+  },
+  { // Entry 490
+    -0x1.7cdf79d5e37b8b212eff86d2ffe2044bp-1,
+    0x1.fd8p1
+  },
+  { // Entry 491
+    0x1.7cdf79d5e37b8b212eff86d2ffe2044bp-1,
+    -0x1.fd8p1
+  },
+  { // Entry 492
+    0x1.fd3f48847a1d10a8e5ff1d4db84ed26dp-5,
+    0x1.fd9364d936596p-5
+  },
+  { // Entry 493
+    -0x1.fd3f48847a1d10a8e5ff1d4db84ed26dp-5,
+    -0x1.fd9364d936596p-5
+  },
+  { // Entry 494
+    0x1.f93ad471d262f8032e92d596797f9d41p-3,
+    0x1.fe8p-3
+  },
+  { // Entry 495
+    -0x1.f93ad471d262f8032e92d596797f9d41p-3,
+    -0x1.fe8p-3
+  },
+  { // Entry 496
+    0x1.83b3062414973d92c4278507f0474d67p-1,
+    0x1.febb646e2ee57p13
+  },
+  { // Entry 497
+    -0x1.83b3062414973d92c4278507f0474d67p-1,
+    -0x1.febb646e2ee57p13
+  },
+  { // Entry 498
+    0x1.3b45bd744977547fa4673e42dfc99402p-1,
+    0x1.feeffffffffc6p995
+  },
+  { // Entry 499
+    -0x1.3b45bd744977547fa4673e42dfc99402p-1,
+    -0x1.feeffffffffc6p995
+  },
+  { // Entry 500
+    -0x1.eefb59d143645a40041bf726dc6f2fa0p-1,
+    0x1.ff8ffffffffffp7
+  },
+  { // Entry 501
+    0x1.eefb59d143645a40041bf726dc6f2fa0p-1,
+    -0x1.ff8ffffffffffp7
+  },
+  { // Entry 502
+    -0x1.56433f0c6bcee9848751611c6f5ade1fp-1,
+    0x1.ff8ffffffffffp870
+  },
+  { // Entry 503
+    0x1.56433f0c6bcee9848751611c6f5ade1fp-1,
+    -0x1.ff8ffffffffffp870
+  },
+  { // Entry 504
+    -0x1.930006246a6c05dab72ea697daaba69dp-2,
+    0x1.ffcfff8p19
+  },
+  { // Entry 505
+    0x1.930006246a6c05dab72ea697daaba69dp-2,
+    -0x1.ffcfff8p19
+  },
+  { // Entry 506
+    0x1.ded37a1f0aa6d05d782d6aab40cb8670p-1,
+    0x1.ffcfff8p365
+  },
+  { // Entry 507
+    -0x1.ded37a1f0aa6d05d782d6aab40cb8670p-1,
+    -0x1.ffcfff8p365
+  },
+  { // Entry 508
+    -0x1.93e4d96b621e07bca866c1a2e771881cp-1,
+    0x1.ffcffffffff6cp720
+  },
+  { // Entry 509
+    0x1.93e4d96b621e07bca866c1a2e771881cp-1,
+    -0x1.ffcffffffff6cp720
+  },
+  { // Entry 510
+    0x1.9068b90e42605e05010e147110688e52p-1,
+    0x1.ffcfffffffff9p320
+  },
+  { // Entry 511
+    -0x1.9068b90e42605e05010e147110688e52p-1,
+    -0x1.ffcfffffffff9p320
+  },
+  { // Entry 512
+    0x1.cf81642e7421c56507eb8187611c84dbp-1,
+    0x1.ffcffffffffffp12
+  },
+  { // Entry 513
+    -0x1.cf81642e7421c56507eb8187611c84dbp-1,
+    -0x1.ffcffffffffffp12
+  },
+  { // Entry 514
+    0x1.ffffffe61fe616b282c3a69ca225c2d2p-1,
+    0x1.ffcffffffffffp404
+  },
+  { // Entry 515
+    -0x1.ffffffe61fe616b282c3a69ca225c2d2p-1,
+    -0x1.ffcffffffffffp404
+  },
+  { // Entry 516
+    -0x1.406ee9ae91e16f1d58c96eb7165f595bp-1,
+    0x1.ffeffffffffccp995
+  },
+  { // Entry 517
+    0x1.406ee9ae91e16f1d58c96eb7165f595bp-1,
+    -0x1.ffeffffffffccp995
+  },
+  { // Entry 518
+    0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
+    0x1.ffeffffffffffp-3
+  },
+  { // Entry 519
+    -0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
+    -0x1.ffeffffffffffp-3
+  },
+  { // Entry 520
+    0x1.6b491db8b66d880121f830d8c755ae54p-4,
+    0x1.ffeffffffffffp55
+  },
+  { // Entry 521
+    -0x1.6b491db8b66d880121f830d8c755ae54p-4,
+    -0x1.ffeffffffffffp55
+  },
+  { // Entry 522
+    0x1.fb0ab102cb12fef9a4e4a869a299ed46p-1,
+    0x1.ffeffffffffffp180
+  },
+  { // Entry 523
+    -0x1.fb0ab102cb12fef9a4e4a869a299ed46p-1,
+    -0x1.ffeffffffffffp180
+  },
+  { // Entry 524
+    0x1.e4315ec04635cd34b3ef60370511281fp-3,
+    0x1.ffeffffffffffp706
+  },
+  { // Entry 525
+    -0x1.e4315ec04635cd34b3ef60370511281fp-3,
+    -0x1.ffeffffffffffp706
+  },
+  { // Entry 526
+    0x1.ffffc39997ef67d2b9c7e4efa8b77e50p-1,
+    0x1.fff1fffffffffp41
+  },
+  { // Entry 527
+    -0x1.ffffc39997ef67d2b9c7e4efa8b77e50p-1,
+    -0x1.fff1fffffffffp41
+  },
+  { // Entry 528
+    0x1.fff163992831e8c68b0234b42efa1d0ap-7,
+    0x1.fff6b89ffffffp-7
+  },
+  { // Entry 529
+    -0x1.fff163992831e8c68b0234b42efa1d0ap-7,
+    -0x1.fff6b89ffffffp-7
+  },
+  { // Entry 530
+    -0x1.d9757a05fcc42c664f3a66b5576a98e4p-1,
+    0x1.fffdffff0001fp105
+  },
+  { // Entry 531
+    0x1.d9757a05fcc42c664f3a66b5576a98e4p-1,
+    -0x1.fffdffff0001fp105
+  },
+  { // Entry 532
+    -0x1.83791fe63a17a80258f2c479c7e1d339p-1,
+    0x1.ffff0c0000002p1
+  },
+  { // Entry 533
+    0x1.83791fe63a17a80258f2c479c7e1d339p-1,
+    -0x1.ffff0c0000002p1
+  },
+  { // Entry 534
+    -0x1.d9d3a85acc50c8000005d13dd82f61b5p-1,
+    0x1.ffffc00000055p150
+  },
+  { // Entry 535
+    0x1.d9d3a85acc50c8000005d13dd82f61b5p-1,
+    -0x1.ffffc00000055p150
+  },
+  { // Entry 536
+    -0x1.f25d858dcdee7412cf0760e955cb8390p-3,
+    0x1.ffffe3fffffffp40
+  },
+  { // Entry 537
+    0x1.f25d858dcdee7412cf0760e955cb8390p-3,
+    -0x1.ffffe3fffffffp40
+  },
+  { // Entry 538
+    0x1.d18f7bfe557eb80001557142bda18baep-1,
+    0x1.ffffefffcffaep0
+  },
+  { // Entry 539
+    -0x1.d18f7bfe557eb80001557142bda18baep-1,
+    -0x1.ffffefffcffaep0
+  },
+  { // Entry 540
+    -0x1.bc14ebf6bfb51ffa5e6f5b0b0bf9e899p-4,
+    0x1.fffffbfffffffp228
+  },
+  { // Entry 541
+    0x1.bc14ebf6bfb51ffa5e6f5b0b0bf9e899p-4,
+    -0x1.fffffbfffffffp228
+  },
+  { // Entry 542
+    0x1.bb887a06f6c50fef0654d303c82f1a78p-3,
+    0x1.fffffbfffffffp735
+  },
+  { // Entry 543
+    -0x1.bb887a06f6c50fef0654d303c82f1a78p-3,
+    -0x1.fffffbfffffffp735
+  },
+  { // Entry 544
+    0x1.ffaaadef54e2f0c4081880b7b9e794dfp-5,
+    0x1.fffffefffffffp-5
+  },
+  { // Entry 545
+    -0x1.ffaaadef54e2f0c4081880b7b9e794dfp-5,
+    -0x1.fffffefffffffp-5
+  },
+  { // Entry 546
+    0x1.d4a3c62c5be08b123868e8a467eff0cep-1,
+    0x1.ffffff8p119
+  },
+  { // Entry 547
+    -0x1.d4a3c62c5be08b123868e8a467eff0cep-1,
+    -0x1.ffffff8p119
+  },
+  { // Entry 548
+    0x1.cec20f197703f4fd42048ddf889fe84ap-3,
+    0x1.ffffff8p192
+  },
+  { // Entry 549
+    -0x1.cec20f197703f4fd42048ddf889fe84ap-3,
+    -0x1.ffffff8p192
+  },
+  { // Entry 550
+    0x1.d37aadc7c8662501751dbf4e9e5701abp-2,
+    0x1.ffffff8p543
+  },
+  { // Entry 551
+    -0x1.d37aadc7c8662501751dbf4e9e5701abp-2,
+    -0x1.ffffff8p543
+  },
+  { // Entry 552
+    0x1.fa8d2a4d0a2027f0f74df3136cb78f72p-1,
+    0x1.ffffffc0018ffp2
+  },
+  { // Entry 553
+    -0x1.fa8d2a4d0a2027f0f74df3136cb78f72p-1,
+    -0x1.ffffffc0018ffp2
+  },
+  { // Entry 554
+    0x1.fa8d2a029f977ffe74cb14cb09df176dp-1,
+    0x1.ffffffffeffffp2
+  },
+  { // Entry 555
+    -0x1.fa8d2a029f977ffe74cb14cb09df176dp-1,
+    -0x1.ffffffffeffffp2
+  },
+  { // Entry 556
+    -0x1.2763f02a2d1e980000015dbf95d89ab2p-4,
+    0x1.fffffffff8250p943
+  },
+  { // Entry 557
+    0x1.2763f02a2d1e980000015dbf95d89ab2p-4,
+    -0x1.fffffffff8250p943
+  },
+  { // Entry 558
+    0x1.fcff128f77dda81c2a0ec03e4ed80422p-1,
+    0x1.fffffffffe09dp320
+  },
+  { // Entry 559
+    -0x1.fcff128f77dda81c2a0ec03e4ed80422p-1,
+    -0x1.fffffffffe09dp320
+  },
+  { // Entry 560
+    -0x1.fcc0bfedd84a5816d9596b8f9fbb9b41p-1,
+    0x1.fffffffffe6e3p720
+  },
+  { // Entry 561
+    0x1.fcc0bfedd84a5816d9596b8f9fbb9b41p-1,
+    -0x1.fffffffffe6e3p720
+  },
+  { // Entry 562
+    0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
+    0x1.ffffffffffe7fp-1
+  },
+  { // Entry 563
+    -0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
+    -0x1.ffffffffffe7fp-1
+  },
+  { // Entry 564
+    -0x1.f5e11def99d2b22098242ac9fb756adbp-1,
+    0x1.ffffffffffeffp250
+  },
+  { // Entry 565
+    0x1.f5e11def99d2b22098242ac9fb756adbp-1,
+    -0x1.ffffffffffeffp250
+  },
+  { // Entry 566
+    0x1.8a9cbf48fec9f2a0fde951f313b918ccp-1,
+    0x1.fffffffffff78p920
+  },
+  { // Entry 567
+    -0x1.8a9cbf48fec9f2a0fde951f313b918ccp-1,
+    -0x1.fffffffffff78p920
+  },
+  { // Entry 568
+    -0x1.7eba5894844cc00c88f39bd3d4197d14p-3,
+    0x1.fffffffffff83p150
+  },
+  { // Entry 569
+    0x1.7eba5894844cc00c88f39bd3d4197d14p-3,
+    -0x1.fffffffffff83p150
+  },
+  { // Entry 570
+    0x1.92c4f06d2cdd15d302609caa87882afap-1,
+    0x1.fffffffffffd5p995
+  },
+  { // Entry 571
+    -0x1.92c4f06d2cdd15d302609caa87882afap-1,
+    -0x1.fffffffffffd5p995
+  },
+  { // Entry 572
+    -0x1.3d5f7deb1d3bad63eb173b73e84110a0p-1,
+    0x1.fffffffffffe8p720
+  },
+  { // Entry 573
+    0x1.3d5f7deb1d3bad63eb173b73e84110a0p-1,
+    -0x1.fffffffffffe8p720
+  },
+  { // Entry 574
+    -0x1.91349b0ae90e5316539c07eea9b4e6b0p-1,
+    0x1.fffffffffffebp920
+  },
+  { // Entry 575
+    0x1.91349b0ae90e5316539c07eea9b4e6b0p-1,
+    -0x1.fffffffffffebp920
+  },
+  { // Entry 576
+    -0x1.837b9dddc1e8738d74b2a74fa42d802dp-1,
+    0x1.ffffffffffff1p1
+  },
+  { // Entry 577
+    0x1.837b9dddc1e8738d74b2a74fa42d802dp-1,
+    -0x1.ffffffffffff1p1
+  },
+  { // Entry 578
+    0x1.510e062e7fa2037d3842de993c9c5090p-1,
+    0x1.ffffffffffff1p245
+  },
+  { // Entry 579
+    -0x1.510e062e7fa2037d3842de993c9c5090p-1,
+    -0x1.ffffffffffff1p245
+  },
+  { // Entry 580
+    0x1.eaee8744b05e47fde092e3a14895d067p-2,
+    0x1.ffffffffffff3p-2
+  },
+  { // Entry 581
+    -0x1.eaee8744b05e47fde092e3a14895d067p-2,
+    -0x1.ffffffffffff3p-2
+  },
+  { // Entry 582
+    0x1.8a4dee8f4062791078766b0a01de360dp-1,
+    0x1.ffffffffffff4p845
+  },
+  { // Entry 583
+    -0x1.8a4dee8f4062791078766b0a01de360dp-1,
+    -0x1.ffffffffffff4p845
+  },
+  { // Entry 584
+    0x1.5118d6bbde07e4eebf2a11df4dc74d54p-1,
+    0x1.ffffffffffff4p1020
+  },
+  { // Entry 585
+    -0x1.5118d6bbde07e4eebf2a11df4dc74d54p-1,
+    -0x1.ffffffffffff4p1020
+  },
+  { // Entry 586
+    -0x1.5cd5c53cf30a97ff0e471d149c40955dp-1,
+    0x1.ffffffffffff8p616
+  },
+  { // Entry 587
+    0x1.5cd5c53cf30a97ff0e471d149c40955dp-1,
+    -0x1.ffffffffffff8p616
+  },
+  { // Entry 588
+    0x1.ffffa1f0d7daf693a80a2b817b16f277p-1,
+    0x1.ffffffffffffcp475
+  },
+  { // Entry 589
+    -0x1.ffffa1f0d7daf693a80a2b817b16f277p-1,
+    -0x1.ffffffffffffcp475
+  },
+  { // Entry 590
+    0x1.51e9d840106d73484d44a86f74c3d41dp-1,
+    0x1.ffffffffffffep970
+  },
+  { // Entry 591
+    -0x1.51e9d840106d73484d44a86f74c3d41dp-1,
+    -0x1.ffffffffffffep970
+  },
+  { // Entry 592
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 593
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 594
+    -0.0,
+    -0.0
+  },
+  { // Entry 595
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 596
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 597
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 598
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 599
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 600
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 601
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 602
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 603
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 604
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 605
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 606
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 607
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 608
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 609
+    0x1.9999996de8ca198c24ab9449beee16d5p-13,
+    0x1.999999999999ap-13
+  },
+  { // Entry 610
+    -0x1.9999996de8ca198c24ab9449beee16d5p-13,
+    -0x1.999999999999ap-13
+  },
+  { // Entry 611
+    0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
+    0x1.999999999999ap-12
+  },
+  { // Entry 612
+    -0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
+    -0x1.999999999999ap-12
+  },
+  { // Entry 613
+    0x1.3333320c49babff151b6d04290e2c3a2p-11,
+    0x1.3333333333334p-11
+  },
+  { // Entry 614
+    -0x1.3333320c49babff151b6d04290e2c3a2p-11,
+    -0x1.3333333333334p-11
+  },
+  { // Entry 615
+    0x1.999996de8ca2884da2f08f25bb024d08p-11,
+    0x1.999999999999ap-11
+  },
+  { // Entry 616
+    -0x1.999996de8ca2884da2f08f25bb024d08p-11,
+    -0x1.999999999999ap-11
+  },
+  { // Entry 617
+    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    0x1.0p-10
+  },
+  { // Entry 618
+    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    -0x1.0p-10
+  },
+  { // Entry 619
+    0x1.33332e978d552afc883bdb04751e3835p-10,
+    0x1.3333333333333p-10
+  },
+  { // Entry 620
+    -0x1.33332e978d552afc883bdb04751e3835p-10,
+    -0x1.3333333333333p-10
+  },
+  { // Entry 621
+    0x1.66665f1529aff8a3809246670a436c3cp-10,
+    0x1.6666666666666p-10
+  },
+  { // Entry 622
+    -0x1.66665f1529aff8a3809246670a436c3cp-10,
+    -0x1.6666666666666p-10
+  },
+  { // Entry 623
+    0x1.99998ead65cdf82e194c133997f2fb68p-10,
+    0x1.9999999999999p-10
+  },
+  { // Entry 624
+    -0x1.99998ead65cdf82e194c133997f2fb68p-10,
+    -0x1.9999999999999p-10
+  },
+  { // Entry 625
+    0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
+    0x1.cccccccccccccp-10
+  },
+  { // Entry 626
+    -0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
+    -0x1.cccccccccccccp-10
+  },
+  { // Entry 627
+    0x1.0665ae9c7b44ed280216be2104f28f02p-7,
+    0x1.0666666666666p-7
+  },
+  { // Entry 628
+    -0x1.0665ae9c7b44ed280216be2104f28f02p-7,
+    -0x1.0666666666666p-7
+  },
+  { // Entry 629
+    0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
+    0x1.cccccccccccccp-7
+  },
+  { // Entry 630
+    -0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
+    -0x1.cccccccccccccp-7
+  },
+  { // Entry 631
+    0x1.4993e8a8ff79b132046efa7856a97538p-6,
+    0x1.4999999999999p-6
+  },
+  { // Entry 632
+    -0x1.4993e8a8ff79b132046efa7856a97538p-6,
+    -0x1.4999999999999p-6
+  },
+  { // Entry 633
+    0x1.acc044c56db0e19f82c9c3cff246e201p-6,
+    0x1.accccccccccccp-6
+  },
+  { // Entry 634
+    -0x1.acc044c56db0e19f82c9c3cff246e201p-6,
+    -0x1.accccccccccccp-6
+  },
+  { // Entry 635
+    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    0x1.080p-5
+  },
+  { // Entry 636
+    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    -0x1.080p-5
+  },
+  { // Entry 637
+    0x1.3985fe46f1c8714eaa1418561963e89bp-5,
+    0x1.399999999999ap-5
+  },
+  { // Entry 638
+    -0x1.3985fe46f1c8714eaa1418561963e89bp-5,
+    -0x1.399999999999ap-5
+  },
+  { // Entry 639
+    0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
+    0x1.6b33333333334p-5
+  },
+  { // Entry 640
+    -0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
+    -0x1.6b33333333334p-5
+  },
+  { // Entry 641
+    0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
+    0x1.9cccccccccccep-5
+  },
+  { // Entry 642
+    -0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
+    -0x1.9cccccccccccep-5
+  },
+  { // Entry 643
+    0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
+    0x1.ce66666666666p-5
+  },
+  { // Entry 644
+    -0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
+    -0x1.ce66666666666p-5
+  },
+  { // Entry 645
+    0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
+    0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 646
+    -0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
+    -0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 647
+    0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
+    0x1.4e7fc4369bdadp0
+  },
+  { // Entry 648
+    -0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
+    -0x1.4e7fc4369bdadp0
+  },
+  { // Entry 649
+    0x1.df8e22ea809d65c6a69b96aca60be432p-1,
+    0x1.edbfa651e9c84p0
+  },
+  { // Entry 650
+    -0x1.df8e22ea809d65c6a69b96aca60be432p-1,
+    -0x1.edbfa651e9c84p0
+  },
+  { // Entry 651
+    0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
+    0x1.467fc4369bdadp1
+  },
+  { // Entry 652
+    -0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
+    -0x1.467fc4369bdadp1
+  },
+  { // Entry 653
+    -0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
+    0x1.961fb54442d18p1
+  },
+  { // Entry 654
+    0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
+    -0x1.961fb54442d18p1
+  },
+  { // Entry 655
+    -0x1.3734d32d49bd0b942772a7567d514140p-1,
+    0x1.e5bfa651e9c83p1
+  },
+  { // Entry 656
+    0x1.3734d32d49bd0b942772a7567d514140p-1,
+    -0x1.e5bfa651e9c83p1
+  },
+  { // Entry 657
+    -0x1.e9d25d19911e205b653521f42b9b864fp-1,
+    0x1.1aafcbafc85f7p2
+  },
+  { // Entry 658
+    0x1.e9d25d19911e205b653521f42b9b864fp-1,
+    -0x1.1aafcbafc85f7p2
+  },
+  { // Entry 659
+    -0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
+    0x1.427fc4369bdadp2
+  },
+  { // Entry 660
+    0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
+    -0x1.427fc4369bdadp2
+  },
+  { // Entry 661
+    -0x1.2a59f1034426197fa6eee22762967f25p-1,
+    0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 662
+    0x1.2a59f1034426197fa6eee22762967f25p-1,
+    -0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 663
+    -0x1.26312443bd35f19312eac0a1a6b5659ep-1,
+    0x1.6af2eff0a2896p2
+  },
+  { // Entry 664
+    0x1.26312443bd35f19312eac0a1a6b5659ep-1,
+    -0x1.6af2eff0a2896p2
+  },
+  { // Entry 665
+    -0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
+    0x1.43c62a9d02414p2
+  },
+  { // Entry 666
+    0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
+    -0x1.43c62a9d02414p2
+  },
+  { // Entry 667
+    -0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
+    0x1.1c99654961f92p2
+  },
+  { // Entry 668
+    0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
+    -0x1.1c99654961f92p2
+  },
+  { // Entry 669
+    -0x1.4727747338e4653616eadbd7ec3d02d3p-1,
+    0x1.ead93feb8361fp1
+  },
+  { // Entry 670
+    0x1.4727747338e4653616eadbd7ec3d02d3p-1,
+    -0x1.ead93feb8361fp1
+  },
+  { // Entry 671
+    -0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
+    0x1.9c7fb54442d1ap1
+  },
+  { // Entry 672
+    0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
+    -0x1.9c7fb54442d1ap1
+  },
+  { // Entry 673
+    0x1.034c4d633b4ef0a9089b43892a462a26p-1,
+    0x1.4e262a9d02415p1
+  },
+  { // Entry 674
+    -0x1.034c4d633b4ef0a9089b43892a462a26p-1,
+    -0x1.4e262a9d02415p1
+  },
+  { // Entry 675
+    0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
+    0x1.ff993feb83620p0
+  },
+  { // Entry 676
+    -0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
+    -0x1.ff993feb83620p0
+  },
+  { // Entry 677
+    0x1.f750235c949926c48c90e41a91474c06p-1,
+    0x1.62e62a9d02416p0
+  },
+  { // Entry 678
+    -0x1.f750235c949926c48c90e41a91474c06p-1,
+    -0x1.62e62a9d02416p0
+  },
+  { // Entry 679
+    0x1.65f7d571279b0b8005552fd47a2e77aep-1,
+    0x1.8c662a9d02419p-1
+  },
+  { // Entry 680
+    -0x1.65f7d571279b0b8005552fd47a2e77aep-1,
+    -0x1.8c662a9d02419p-1
+  },
+  { // Entry 681
+    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 682
+    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 683
+    -0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
+    -0x1.95ec8b9e03d54p0
+  },
+  { // Entry 684
+    0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
+    0x1.95ec8b9e03d54p0
+  },
+  { // Entry 685
+    -0x1.ff20d961624e7063a78203b811f579cap-1,
+    -0x1.832efa2a435a9p0
+  },
+  { // Entry 686
+    0x1.ff20d961624e7063a78203b811f579cap-1,
+    0x1.832efa2a435a9p0
+  },
+  { // Entry 687
+    -0x1.fb933c40107fd775185ac14918c8fbafp-1,
+    -0x1.707168b682dfep0
+  },
+  { // Entry 688
+    0x1.fb933c40107fd775185ac14918c8fbafp-1,
+    0x1.707168b682dfep0
+  },
+  { // Entry 689
+    -0x1.f54d971881ad685b782ef88e6350f7cdp-1,
+    -0x1.5db3d742c2653p0
+  },
+  { // Entry 690
+    0x1.f54d971881ad685b782ef88e6350f7cdp-1,
+    0x1.5db3d742c2653p0
+  },
+  { // Entry 691
+    -0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
+    -0x1.4af645cf01ea8p0
+  },
+  { // Entry 692
+    0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
+    0x1.4af645cf01ea8p0
+  },
+  { // Entry 693
+    -0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
+    -0x1.3838b45b416fdp0
+  },
+  { // Entry 694
+    0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
+    0x1.3838b45b416fdp0
+  },
+  { // Entry 695
+    -0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
+    -0x1.257b22e780f52p0
+  },
+  { // Entry 696
+    0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
+    0x1.257b22e780f52p0
+  },
+  { // Entry 697
+    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 698
+    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 699
+    -0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
+    -0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 700
+    0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
+    0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 701
+    -0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
+    -0x1.d4b87dab670a0p-1
+  },
+  { // Entry 702
+    0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
+    0x1.d4b87dab670a0p-1
+  },
+  { // Entry 703
+    -0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
+    -0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 704
+    0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
+    0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 705
+    -0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
+    -0x1.a970fb56ce140p-1
+  },
+  { // Entry 706
+    0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
+    0x1.a970fb56ce140p-1
+  },
+  { // Entry 707
+    -0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
+    -0x1.93cd3a2c81990p-1
+  },
+  { // Entry 708
+    0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
+    0x1.93cd3a2c81990p-1
+  },
+  { // Entry 709
+    -0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
+    -0x1.7e297902351e0p-1
+  },
+  { // Entry 710
+    0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
+    0x1.7e297902351e0p-1
+  },
+  { // Entry 711
+    -0x1.4b75ba096fa549eb93595d8194ab917fp-1,
+    -0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 712
+    0x1.4b75ba096fa549eb93595d8194ab917fp-1,
+    0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 713
+    -0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
+    -0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 714
+    0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
+    0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 715
+    -0x1.295463e769284a5aed17a443392f38f3p-1,
+    -0x1.3d3e35834fad0p-1
+  },
+  { // Entry 716
+    0x1.295463e769284a5aed17a443392f38f3p-1,
+    0x1.3d3e35834fad0p-1
+  },
+  { // Entry 717
+    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 718
+    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 719
+    -0x1.c853c78462de46b5743315612f8b5a7cp-2,
+    -0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 720
+    0x1.c853c78462de46b5743315612f8b5a7cp-2,
+    0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 721
+    -0x1.92aba90aaf27249de49c78fc643c8b72p-2,
+    -0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 722
+    0x1.92aba90aaf27249de49c78fc643c8b72p-2,
+    0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 723
+    -0x1.5bac064658f39460c83113c0a0097a0cp-2,
+    -0x1.62b9586ad0a20p-2
+  },
+  { // Entry 724
+    0x1.5bac064658f39460c83113c0a0097a0cp-2,
+    0x1.62b9586ad0a20p-2
+  },
+  { // Entry 725
+    -0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
+    -0x1.279a74590331ap-2
+  },
+  { // Entry 726
+    0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
+    0x1.279a74590331ap-2
+  },
+  { // Entry 727
+    -0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
+    -0x1.d8f7208e6b829p-3
+  },
+  { // Entry 728
+    0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
+    0x1.d8f7208e6b829p-3
+  },
+  { // Entry 729
+    -0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
+    -0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 730
+    0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
+    0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 731
+    -0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
+    -0x1.d8f7208e6b826p-4
+  },
+  { // Entry 732
+    0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
+    0x1.d8f7208e6b826p-4
+  },
+  { // Entry 733
+    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 734
+    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 735
+    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 736
+    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 737
+    0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
+    0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 738
+    -0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
+    -0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 739
+    0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
+    0x1.62b9586ad0a22p-3
+  },
+  { // Entry 740
+    -0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
+    -0x1.62b9586ad0a22p-3
+  },
+  { // Entry 741
+    0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
+    0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 742
+    -0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
+    -0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 743
+    0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
+    0x1.279a74590331cp-2
+  },
+  { // Entry 744
+    -0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
+    -0x1.279a74590331cp-2
+  },
+  { // Entry 745
+    0x1.5bac064658f3b27a28572bea256195efp-2,
+    0x1.62b9586ad0a22p-2
+  },
+  { // Entry 746
+    -0x1.5bac064658f3b27a28572bea256195efp-2,
+    -0x1.62b9586ad0a22p-2
+  },
+  { // Entry 747
+    0x1.92aba90aaf274209efaed08e34071e3bp-2,
+    0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 748
+    -0x1.92aba90aaf274209efaed08e34071e3bp-2,
+    -0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 749
+    0x1.c853c78462de635b10a2b93afd75da26p-2,
+    0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 750
+    -0x1.c853c78462de635b10a2b93afd75da26p-2,
+    -0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 751
+    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 752
+    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 753
+    0x1.295463e769281640ae026f50fc45e301p-1,
+    0x1.3d3e35834faccp-1
+  },
+  { // Entry 754
+    -0x1.295463e769281640ae026f50fc45e301p-1,
+    -0x1.3d3e35834faccp-1
+  },
+  { // Entry 755
+    0x1.3aacff95a311f899a0e279535e81c4ecp-1,
+    0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 756
+    -0x1.3aacff95a311f899a0e279535e81c4ecp-1,
+    -0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 757
+    0x1.4b75ba096fa5192442b7950f960f8006p-1,
+    0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 758
+    -0x1.4b75ba096fa5192442b7950f960f8006p-1,
+    -0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 759
+    0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
+    0x1.7e297902351dcp-1
+  },
+  { // Entry 760
+    -0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
+    -0x1.7e297902351dcp-1
+  },
+  { // Entry 761
+    0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
+    0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 762
+    -0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
+    -0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 763
+    0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
+    0x1.a970fb56ce13cp-1
+  },
+  { // Entry 764
+    -0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
+    -0x1.a970fb56ce13cp-1
+  },
+  { // Entry 765
+    0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
+    0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 766
+    -0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
+    -0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 767
+    0x1.95f05257dbcb384a5e326857376dd801p-1,
+    0x1.d4b87dab6709cp-1
+  },
+  { // Entry 768
+    -0x1.95f05257dbcb384a5e326857376dd801p-1,
+    -0x1.d4b87dab6709cp-1
+  },
+  { // Entry 769
+    0x1.a2c289d9d0558764921a4de355f9448cp-1,
+    0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 770
+    -0x1.a2c289d9d0558764921a4de355f9448cp-1,
+    -0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 771
+    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 772
+    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 773
+    0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
+    0x1.257b22e780f56p0
+  },
+  { // Entry 774
+    -0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
+    -0x1.257b22e780f56p0
+  },
+  { // Entry 775
+    0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
+    0x1.3838b45b41701p0
+  },
+  { // Entry 776
+    -0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
+    -0x1.3838b45b41701p0
+  },
+  { // Entry 777
+    0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
+    0x1.4af645cf01eacp0
+  },
+  { // Entry 778
+    -0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
+    -0x1.4af645cf01eacp0
+  },
+  { // Entry 779
+    0x1.f54d971881ad82629bd84d214194e8ddp-1,
+    0x1.5db3d742c2657p0
+  },
+  { // Entry 780
+    -0x1.f54d971881ad82629bd84d214194e8ddp-1,
+    -0x1.5db3d742c2657p0
+  },
+  { // Entry 781
+    0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
+    0x1.707168b682e02p0
+  },
+  { // Entry 782
+    -0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
+    -0x1.707168b682e02p0
+  },
+  { // Entry 783
+    0x1.ff20d961624e77daef329b4029c362dep-1,
+    0x1.832efa2a435adp0
+  },
+  { // Entry 784
+    -0x1.ff20d961624e77daef329b4029c362dep-1,
+    -0x1.832efa2a435adp0
+  },
+  { // Entry 785
+    0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
+    0x1.95ec8b9e03d58p0
+  },
+  { // Entry 786
+    -0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
+    -0x1.95ec8b9e03d58p0
+  },
+  { // Entry 787
+    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 788
+    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 789
+    0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
+    0x1.04aff6d330942p0
+  },
+  { // Entry 790
+    -0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
+    -0x1.04aff6d330942p0
+  },
+  { // Entry 791
+    0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
+    0x1.04b09e98dcdb4p0
+  },
+  { // Entry 792
+    -0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
+    -0x1.04b09e98dcdb4p0
+  },
+  { // Entry 793
+    0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
+    0x1.04b1465e89226p0
+  },
+  { // Entry 794
+    -0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
+    -0x1.04b1465e89226p0
+  },
+  { // Entry 795
+    0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
+    0x1.04b1ee2435698p0
+  },
+  { // Entry 796
+    -0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
+    -0x1.04b1ee2435698p0
+  },
+  { // Entry 797
+    0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
+    0x1.04b295e9e1b0ap0
+  },
+  { // Entry 798
+    -0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
+    -0x1.04b295e9e1b0ap0
+  },
+  { // Entry 799
+    0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
+    0x1.04b33daf8df7cp0
+  },
+  { // Entry 800
+    -0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
+    -0x1.04b33daf8df7cp0
+  },
+  { // Entry 801
+    0x1.b3d789e035e8948dab275dfe546c5b08p-1,
+    0x1.04b3e5753a3eep0
+  },
+  { // Entry 802
+    -0x1.b3d789e035e8948dab275dfe546c5b08p-1,
+    -0x1.04b3e5753a3eep0
+  },
+  { // Entry 803
+    0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
+    0x1.04b48d3ae6860p0
+  },
+  { // Entry 804
+    -0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
+    -0x1.04b48d3ae6860p0
+  },
+  { // Entry 805
+    0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
+    0x1.04b5350092ccfp0
+  },
+  { // Entry 806
+    -0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
+    -0x1.04b5350092ccfp0
+  },
+  { // Entry 807
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 808
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 809
+    -0.0,
+    -0.0
+  },
+  { // Entry 810
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 811
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 812
+    0x1.1773d561fd5065d0e9607a728a39eed2p-1,
+    0x1.279a74590331bp-1
+  },
+  { // Entry 813
+    -0x1.1773d561fd5065d0e9607a728a39eed2p-1,
+    -0x1.279a74590331bp-1
+  },
+  { // Entry 814
+    0x1.1773d561fd507338ff9c088d80c680dbp-1,
+    0x1.279a74590331cp-1
+  },
+  { // Entry 815
+    -0x1.1773d561fd507338ff9c088d80c680dbp-1,
+    -0x1.279a74590331cp-1
+  },
+  { // Entry 816
+    0x1.1773d561fd5080a115d796a8770d35efp-1,
+    0x1.279a74590331dp-1
+  },
+  { // Entry 817
+    -0x1.1773d561fd5080a115d796a8770d35efp-1,
+    -0x1.279a74590331dp-1
+  },
+  { // Entry 818
+    0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
+    0x1.bb67ae8584ca9p0
+  },
+  { // Entry 819
+    -0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
+    -0x1.bb67ae8584ca9p0
+  },
+  { // Entry 820
+    0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
+    0x1.bb67ae8584caap0
+  },
+  { // Entry 821
+    -0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
+    -0x1.bb67ae8584caap0
+  },
+  { // Entry 822
+    0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
+    0x1.bb67ae8584cabp0
+  },
+  { // Entry 823
+    -0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
+    -0x1.bb67ae8584cabp0
+  },
+  { // Entry 824
+    0x1.b1d8305321615ac938cff02be9f25085p-2,
+    0x1.bffffffffffffp-2
+  },
+  { // Entry 825
+    -0x1.b1d8305321615ac938cff02be9f25085p-2,
+    -0x1.bffffffffffffp-2
+  },
+  { // Entry 826
+    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    0x1.cp-2
+  },
+  { // Entry 827
+    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    -0x1.cp-2
+  },
+  { // Entry 828
+    0x1.b1d83053216177c5a5ca42d98955275ap-2,
+    0x1.c000000000001p-2
+  },
+  { // Entry 829
+    -0x1.b1d83053216177c5a5ca42d98955275ap-2,
+    -0x1.c000000000001p-2
+  },
+  { // Entry 830
+    0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
+    0x1.5ffffffffffffp-1
+  },
+  { // Entry 831
+    -0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
+    -0x1.5ffffffffffffp-1
+  },
+  { // Entry 832
+    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    0x1.6p-1
+  },
+  { // Entry 833
+    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    -0x1.6p-1
+  },
+  { // Entry 834
+    0x1.44eb381cf386b7622d25944f3eb035dcp-1,
+    0x1.6000000000001p-1
+  },
+  { // Entry 835
+    -0x1.44eb381cf386b7622d25944f3eb035dcp-1,
+    -0x1.6000000000001p-1
+  },
+  { // Entry 836
+    0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
+    0x1.2ffffffffffffp0
+  },
+  { // Entry 837
+    -0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
+    -0x1.2ffffffffffffp0
+  },
+  { // Entry 838
+    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    0x1.3p0
+  },
+  { // Entry 839
+    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    -0x1.3p0
+  },
+  { // Entry 840
+    0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
+    0x1.3000000000001p0
+  },
+  { // Entry 841
+    -0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
+    -0x1.3000000000001p0
+  },
+  { // Entry 842
+    0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
+    0x1.37fffffffffffp1
+  },
+  { // Entry 843
+    -0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
+    -0x1.37fffffffffffp1
+  },
+  { // Entry 844
+    0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    0x1.380p1
+  },
+  { // Entry 845
+    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    -0x1.380p1
+  },
+  { // Entry 846
+    0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
+    0x1.3800000000001p1
+  },
+  { // Entry 847
+    -0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
+    -0x1.3800000000001p1
+  },
+  { // Entry 848
+    0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
+    0x1.069c8b46b3792p-4
+  },
+  { // Entry 849
+    -0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
+    -0x1.069c8b46b3792p-4
+  },
+  { // Entry 850
+    0x1.05e4761ab8d8f0a7dba834000f236650p-3,
+    0x1.069c8b46b3792p-3
+  },
+  { // Entry 851
+    -0x1.05e4761ab8d8f0a7dba834000f236650p-3,
+    -0x1.069c8b46b3792p-3
+  },
+  { // Entry 852
+    0x1.877e2cd4f6fd9ba498e327053032734fp-3,
+    0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 853
+    -0x1.877e2cd4f6fd9ba498e327053032734fp-3,
+    -0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 854
+    0x1.03be06f97cbee47698539f977cadbe7ep-2,
+    0x1.069c8b46b3792p-2
+  },
+  { // Entry 855
+    -0x1.03be06f97cbee47698539f977cadbe7ep-2,
+    -0x1.069c8b46b3792p-2
+  },
+  { // Entry 856
+    0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
+    0x1.4843ae1860576p-2
+  },
+  { // Entry 857
+    -0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
+    -0x1.4843ae1860576p-2
+  },
+  { // Entry 858
+    0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
+    0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 859
+    -0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
+    -0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 860
+    0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
+    0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 861
+    -0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
+    -0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 862
+    0x1.f67ea975b86a01510e6bde3778138934p-2,
+    0x1.069c8b46b3791p-1
+  },
+  { // Entry 863
+    -0x1.f67ea975b86a01510e6bde3778138934p-2,
+    -0x1.069c8b46b3791p-1
+  },
+  { // Entry 864
+    0x1.175059bf0d42524ecb0bf4243b55973dp-1,
+    0x1.27701caf89e83p-1
+  },
+  { // Entry 865
+    -0x1.175059bf0d42524ecb0bf4243b55973dp-1,
+    -0x1.27701caf89e83p-1
+  },
+  { // Entry 866
+    0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
+    0x1.4843ae1860575p-1
+  },
+  { // Entry 867
+    -0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
+    -0x1.4843ae1860575p-1
+  },
+  { // Entry 868
+    0x1.4be4979c5efb306c1a77024032849b52p-1,
+    0x1.69173f8136c67p-1
+  },
+  { // Entry 869
+    -0x1.4be4979c5efb306c1a77024032849b52p-1,
+    -0x1.69173f8136c67p-1
+  },
+  { // Entry 870
+    0x1.643080d67acc1332c64a85612cacafb9p-1,
+    0x1.89ead0ea0d359p-1
+  },
+  { // Entry 871
+    -0x1.643080d67acc1332c64a85612cacafb9p-1,
+    -0x1.89ead0ea0d359p-1
+  },
+  { // Entry 872
+    0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
+    0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 873
+    -0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
+    -0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 874
+    0x1.904c37505de48fa8e76287960fd44594p-1,
+    0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 875
+    -0x1.904c37505de48fa8e76287960fd44594p-1,
+    -0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 876
+    0x1.a3ed9e252938a14c79c575639c15a91dp-1,
+    0x1.ec6585249082fp-1
+  },
+  { // Entry 877
+    -0x1.a3ed9e252938a14c79c575639c15a91dp-1,
+    -0x1.ec6585249082fp-1
+  },
+  { // Entry 878
+    0x1.b5d545b109bf935594036798cf40c9b0p-1,
+    0x1.069c8b46b3791p0
+  },
+  { // Entry 879
+    -0x1.b5d545b109bf935594036798cf40c9b0p-1,
+    -0x1.069c8b46b3791p0
+  },
+  { // Entry 880
+    0x1.c5f058230e7fd14d3e5e315349f699efp-1,
+    0x1.170653fb1eb0ap0
+  },
+  { // Entry 881
+    -0x1.c5f058230e7fd14d3e5e315349f699efp-1,
+    -0x1.170653fb1eb0ap0
+  },
+  { // Entry 882
+    0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
+    0x1.27701caf89e83p0
+  },
+  { // Entry 883
+    -0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
+    -0x1.27701caf89e83p0
+  },
+  { // Entry 884
+    0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
+    0x1.37d9e563f51fcp0
+  },
+  { // Entry 885
+    -0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
+    -0x1.37d9e563f51fcp0
+  },
+  { // Entry 886
+    0x1.ead6834909b93371faf3beaddbd60eddp-1,
+    0x1.4843ae1860575p0
+  },
+  { // Entry 887
+    -0x1.ead6834909b93371faf3beaddbd60eddp-1,
+    -0x1.4843ae1860575p0
+  },
+  { // Entry 888
+    0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
+    0x1.58ad76cccb8eep0
+  },
+  { // Entry 889
+    -0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
+    -0x1.58ad76cccb8eep0
+  },
+  { // Entry 890
+    0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
+    0x1.69173f8136c67p0
+  },
+  { // Entry 891
+    -0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
+    -0x1.69173f8136c67p0
+  },
+  { // Entry 892
+    0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
+    0x1.79810835a1fe0p0
+  },
+  { // Entry 893
+    -0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
+    -0x1.79810835a1fe0p0
+  },
+  { // Entry 894
+    0x1.ffbca846c4fc997f1a381420208884e0p-1,
+    0x1.89ead0ea0d359p0
+  },
+  { // Entry 895
+    -0x1.ffbca846c4fc997f1a381420208884e0p-1,
+    -0x1.89ead0ea0d359p0
+  },
+  { // Entry 896
+    0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
+    0x1.9a54999e786d2p0
+  },
+  { // Entry 897
+    -0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
+    -0x1.9a54999e786d2p0
+  },
+  { // Entry 898
+    0x1.fda254c27a0205875f271435f827160cp-1,
+    0x1.aabe6252e3a4bp0
+  },
+  { // Entry 899
+    -0x1.fda254c27a0205875f271435f827160cp-1,
+    -0x1.aabe6252e3a4bp0
+  },
+  { // Entry 900
+    0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
+    0x1.bb282b074edc4p0
+  },
+  { // Entry 901
+    -0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
+    -0x1.bb282b074edc4p0
+  },
+  { // Entry 902
+    0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
+    0x1.cb91f3bbba13dp0
+  },
+  { // Entry 903
+    -0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
+    -0x1.cb91f3bbba13dp0
+  },
+  { // Entry 904
+    0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
+    0x1.dbfbbc70254b6p0
+  },
+  { // Entry 905
+    -0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
+    -0x1.dbfbbc70254b6p0
+  },
+  { // Entry 906
+    0x1.e07eeeda109cf25f400cd5f46acec887p-1,
+    0x1.ec6585249082fp0
+  },
+  { // Entry 907
+    -0x1.e07eeeda109cf25f400cd5f46acec887p-1,
+    -0x1.ec6585249082fp0
+  },
+  { // Entry 908
+    0x1.d42de42dce138e890939e56c439ded90p-1,
+    0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 909
+    -0x1.d42de42dce138e890939e56c439ded90p-1,
+    -0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 910
+    0x1.c5f058230e8014ab83ece0c3a638c079p-1,
+    0x1.069c8b46b3791p1
+  },
+  { // Entry 911
+    -0x1.c5f058230e8014ab83ece0c3a638c079p-1,
+    -0x1.069c8b46b3791p1
+  },
+  { // Entry 912
+    0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
+    0x1.0ed16fa0e914ep1
+  },
+  { // Entry 913
+    -0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
+    -0x1.0ed16fa0e914ep1
+  },
+  { // Entry 914
+    0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
+    0x1.170653fb1eb0bp1
+  },
+  { // Entry 915
+    -0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
+    -0x1.170653fb1eb0bp1
+  },
+  { // Entry 916
+    0x1.904c37505de4b8975dd2730e196ddfc3p-1,
+    0x1.1f3b3855544c8p1
+  },
+  { // Entry 917
+    -0x1.904c37505de4b8975dd2730e196ddfc3p-1,
+    -0x1.1f3b3855544c8p1
+  },
+  { // Entry 918
+    0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
+    0x1.27701caf89e85p1
+  },
+  { // Entry 919
+    -0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
+    -0x1.27701caf89e85p1
+  },
+  { // Entry 920
+    0x1.643080d67acc14620672dda6241ea305p-1,
+    0x1.2fa50109bf842p1
+  },
+  { // Entry 921
+    -0x1.643080d67acc14620672dda6241ea305p-1,
+    -0x1.2fa50109bf842p1
+  },
+  { // Entry 922
+    0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
+    0x1.37d9e563f51ffp1
+  },
+  { // Entry 923
+    -0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
+    -0x1.37d9e563f51ffp1
+  },
+  { // Entry 924
+    0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
+    0x1.400ec9be2abbcp1
+  },
+  { // Entry 925
+    -0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
+    -0x1.400ec9be2abbcp1
+  },
+  { // Entry 926
+    0x1.175059bf0d42033bbcf598c88b176e61p-1,
+    0x1.4843ae1860579p1
+  },
+  { // Entry 927
+    -0x1.175059bf0d42033bbcf598c88b176e61p-1,
+    -0x1.4843ae1860579p1
+  },
+  { // Entry 928
+    0x1.f67ea975b8692521f77d6754b302c5c4p-2,
+    0x1.5078927295f36p1
+  },
+  { // Entry 929
+    -0x1.f67ea975b8692521f77d6754b302c5c4p-2,
+    -0x1.5078927295f36p1
+  },
+  { // Entry 930
+    0x1.bc4c04d71abad14efc29a66342ada723p-2,
+    0x1.58ad76cccb8f3p1
+  },
+  { // Entry 931
+    -0x1.bc4c04d71abad14efc29a66342ada723p-2,
+    -0x1.58ad76cccb8f3p1
+  },
+  { // Entry 932
+    0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
+    0x1.60e25b27012b0p1
+  },
+  { // Entry 933
+    -0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
+    -0x1.60e25b27012b0p1
+  },
+  { // Entry 934
+    0x1.42abba8c72fa12be920b316627512e41p-2,
+    0x1.69173f8136c6dp1
+  },
+  { // Entry 935
+    -0x1.42abba8c72fa12be920b316627512e41p-2,
+    -0x1.69173f8136c6dp1
+  },
+  { // Entry 936
+    0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
+    0x1.714c23db6c62ap1
+  },
+  { // Entry 937
+    -0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
+    -0x1.714c23db6c62ap1
+  },
+  { // Entry 938
+    0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
+    0x1.79810835a1fe7p1
+  },
+  { // Entry 939
+    -0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
+    -0x1.79810835a1fe7p1
+  },
+  { // Entry 940
+    0x1.05e4761ab8d421719567717f76712867p-3,
+    0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 941
+    -0x1.05e4761ab8d421719567717f76712867p-3,
+    -0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 942
+    0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
+    0x1.89ead0ea0d35bp1
+  },
+  { // Entry 943
+    -0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
+    -0x1.89ead0ea0d35bp1
+  },
+  { // Entry 944
+    0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
+    -0x1.81b5ec8fd799fp2
+  },
+  { // Entry 945
+    -0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
+    0x1.81b5ec8fd799fp2
+  },
+  { // Entry 946
+    0x1.f67ea975b86a22f2348778824f95d84ap-2,
+    -0x1.714c23db6c626p2
+  },
+  { // Entry 947
+    -0x1.f67ea975b86a22f2348778824f95d84ap-2,
+    0x1.714c23db6c626p2
+  },
+  { // Entry 948
+    0x1.643080d67acc210fa27e9247a8286220p-1,
+    -0x1.60e25b27012adp2
+  },
+  { // Entry 949
+    -0x1.643080d67acc210fa27e9247a8286220p-1,
+    0x1.60e25b27012adp2
+  },
+  { // Entry 950
+    0x1.b5d545b109bf950b419702972b94f8fap-1,
+    -0x1.5078927295f34p2
+  },
+  { // Entry 951
+    -0x1.b5d545b109bf950b419702972b94f8fap-1,
+    0x1.5078927295f34p2
+  },
+  { // Entry 952
+    0x1.ead6834909b9346234dbb601d0486cf2p-1,
+    -0x1.400ec9be2abbbp2
+  },
+  { // Entry 953
+    -0x1.ead6834909b9346234dbb601d0486cf2p-1,
+    0x1.400ec9be2abbbp2
+  },
+  { // Entry 954
+    0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
+    -0x1.2fa50109bf842p2
+  },
+  { // Entry 955
+    -0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
+    0x1.2fa50109bf842p2
+  },
+  { // Entry 956
+    0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
+    -0x1.1f3b3855544c9p2
+  },
+  { // Entry 957
+    -0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
+    0x1.1f3b3855544c9p2
+  },
+  { // Entry 958
+    0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
+    -0x1.0ed16fa0e9150p2
+  },
+  { // Entry 959
+    -0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
+    0x1.0ed16fa0e9150p2
+  },
+  { // Entry 960
+    0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
+    -0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 961
+    -0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
+    0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 962
+    0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
+    -0x1.dbfbbc70254bcp1
+  },
+  { // Entry 963
+    -0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
+    0x1.dbfbbc70254bcp1
+  },
+  { // Entry 964
+    0x1.42abba8c72fd22194793246b8d19960ap-2,
+    -0x1.bb282b074edcap1
+  },
+  { // Entry 965
+    -0x1.42abba8c72fd22194793246b8d19960ap-2,
+    0x1.bb282b074edcap1
+  },
+  { // Entry 966
+    0x1.066e7eb76f62b5f4563de26dca890017p-4,
+    -0x1.9a54999e786d8p1
+  },
+  { // Entry 967
+    -0x1.066e7eb76f62b5f4563de26dca890017p-4,
+    0x1.9a54999e786d8p1
+  },
+  { // Entry 968
+    -0x1.877e2cd4f6fa42586875c5250a169e48p-3,
+    -0x1.79810835a1fe6p1
+  },
+  { // Entry 969
+    0x1.877e2cd4f6fa42586875c5250a169e48p-3,
+    0x1.79810835a1fe6p1
+  },
+  { // Entry 970
+    -0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
+    -0x1.58ad76cccb8f4p1
+  },
+  { // Entry 971
+    0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
+    0x1.58ad76cccb8f4p1
+  },
+  { // Entry 972
+    -0x1.4be4979c5efa871d30ae1cfa66389199p-1,
+    -0x1.37d9e563f5202p1
+  },
+  { // Entry 973
+    0x1.4be4979c5efa871d30ae1cfa66389199p-1,
+    0x1.37d9e563f5202p1
+  },
+  { // Entry 974
+    -0x1.a3ed9e25293822168958cce1e09f7c11p-1,
+    -0x1.170653fb1eb10p1
+  },
+  { // Entry 975
+    0x1.a3ed9e25293822168958cce1e09f7c11p-1,
+    0x1.170653fb1eb10p1
+  },
+  { // Entry 976
+    -0x1.e07eeeda109c62b340dc36e92169648dp-1,
+    -0x1.ec6585249083cp0
+  },
+  { // Entry 977
+    0x1.e07eeeda109c62b340dc36e92169648dp-1,
+    0x1.ec6585249083cp0
+  },
+  { // Entry 978
+    -0x1.fda254c27a01dd954db3aea505e49453p-1,
+    -0x1.aabe6252e3a58p0
+  },
+  { // Entry 979
+    0x1.fda254c27a01dd954db3aea505e49453p-1,
+    0x1.aabe6252e3a58p0
+  },
+  { // Entry 980
+    -0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
+    -0x1.69173f8136c74p0
+  },
+  { // Entry 981
+    0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
+    0x1.69173f8136c74p0
+  },
+  { // Entry 982
+    -0x1.d42de42dce13ef040bb1040e3148d7dep-1,
+    -0x1.27701caf89e90p0
+  },
+  { // Entry 983
+    0x1.d42de42dce13ef040bb1040e3148d7dep-1,
+    0x1.27701caf89e90p0
+  },
+  { // Entry 984
+    -0x1.904c37505de5930812e3a2a94feaa51bp-1,
+    -0x1.cb91f3bbba157p-1
+  },
+  { // Entry 985
+    0x1.904c37505de5930812e3a2a94feaa51bp-1,
+    0x1.cb91f3bbba157p-1
+  },
+  { // Entry 986
+    -0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
+    -0x1.4843ae186058ep-1
+  },
+  { // Entry 987
+    0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
+    0x1.4843ae186058ep-1
+  },
+  { // Entry 988
+    -0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
+    -0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 989
+    0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
+    0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 990
+    -0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
+    -0x1.069c8b46b37f0p-3
+  },
+  { // Entry 991
+    0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
+    0x1.069c8b46b37f0p-3
+  },
+  { // Entry 992
+    0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
+    0x1.069c8b46b3734p-3
+  },
+  { // Entry 993
+    -0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
+    -0x1.069c8b46b3734p-3
+  },
+  { // Entry 994
+    0x1.8045fe64e62b19a094399502afb76e5cp-2,
+    0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 995
+    -0x1.8045fe64e62b19a094399502afb76e5cp-2,
+    -0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 996
+    0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
+    0x1.4843ae186055fp-1
+  },
+  { // Entry 997
+    -0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
+    -0x1.4843ae186055fp-1
+  },
+  { // Entry 998
+    0x1.904c37505de3be2ace17ca5487750231p-1,
+    0x1.cb91f3bbba128p-1
+  },
+  { // Entry 999
+    -0x1.904c37505de3be2ace17ca5487750231p-1,
+    -0x1.cb91f3bbba128p-1
+  },
+  { // Entry 1000
+    0x1.d42de42dce12b82466f2fcb63b294751p-1,
+    0x1.27701caf89e78p0
+  },
+  { // Entry 1001
+    -0x1.d42de42dce12b82466f2fcb63b294751p-1,
+    -0x1.27701caf89e78p0
+  },
+  { // Entry 1002
+    0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
+    0x1.69173f8136c5cp0
+  },
+  { // Entry 1003
+    -0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
+    -0x1.69173f8136c5cp0
+  },
+  { // Entry 1004
+    0x1.fda254c27a02275432d77dd6f9704644p-1,
+    0x1.aabe6252e3a40p0
+  },
+  { // Entry 1005
+    -0x1.fda254c27a02275432d77dd6f9704644p-1,
+    -0x1.aabe6252e3a40p0
+  },
+  { // Entry 1006
+    0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
+    0x1.ec65852490824p0
+  },
+  { // Entry 1007
+    -0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
+    -0x1.ec65852490824p0
+  },
+  { // Entry 1008
+    0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
+    0x1.170653fb1eb04p1
+  },
+  { // Entry 1009
+    -0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
+    -0x1.170653fb1eb04p1
+  },
+  { // Entry 1010
+    0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
+    0x1.37d9e563f51f6p1
+  },
+  { // Entry 1011
+    -0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
+    -0x1.37d9e563f51f6p1
+  },
+  { // Entry 1012
+    0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
+    0x1.58ad76cccb8e8p1
+  },
+  { // Entry 1013
+    -0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
+    -0x1.58ad76cccb8e8p1
+  },
+  { // Entry 1014
+    0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
+    0x1.79810835a1fdap1
+  },
+  { // Entry 1015
+    -0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
+    -0x1.79810835a1fdap1
+  },
+  { // Entry 1016
+    -0x1.066e7eb76f4ac293f46486dc328d450bp-4,
+    0x1.9a54999e786ccp1
+  },
+  { // Entry 1017
+    0x1.066e7eb76f4ac293f46486dc328d450bp-4,
+    -0x1.9a54999e786ccp1
+  },
+  { // Entry 1018
+    -0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
+    0x1.bb282b074edbep1
+  },
+  { // Entry 1019
+    0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
+    -0x1.bb282b074edbep1
+  },
+  { // Entry 1020
+    -0x1.175059bf0d406e2fe014e880dd29cfacp-1,
+    0x1.dbfbbc70254b0p1
+  },
+  { // Entry 1021
+    0x1.175059bf0d406e2fe014e880dd29cfacp-1,
+    -0x1.dbfbbc70254b0p1
+  },
+  { // Entry 1022
+    -0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
+    0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 1023
+    0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
+    -0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 1024
+    -0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
+    0x1.0ed16fa0e914ap2
+  },
+  { // Entry 1025
+    0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
+    -0x1.0ed16fa0e914ap2
+  },
+  { // Entry 1026
+    -0x1.f329c0558e95fa333d5d2d44d654777cp-1,
+    0x1.1f3b3855544c3p2
+  },
+  { // Entry 1027
+    0x1.f329c0558e95fa333d5d2d44d654777cp-1,
+    -0x1.1f3b3855544c3p2
+  },
+  { // Entry 1028
+    -0x1.ffbca846c4fcb237c2947b35b037a2p-1,
+    0x1.2fa50109bf83cp2
+  },
+  { // Entry 1029
+    0x1.ffbca846c4fcb237c2947b35b037a2p-1,
+    -0x1.2fa50109bf83cp2
+  },
+  { // Entry 1030
+    -0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
+    0x1.400ec9be2abb5p2
+  },
+  { // Entry 1031
+    0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
+    -0x1.400ec9be2abb5p2
+  },
+  { // Entry 1032
+    -0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
+    0x1.5078927295f2ep2
+  },
+  { // Entry 1033
+    0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
+    -0x1.5078927295f2ep2
+  },
+  { // Entry 1034
+    -0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
+    0x1.60e25b27012a7p2
+  },
+  { // Entry 1035
+    0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
+    -0x1.60e25b27012a7p2
+  },
+  { // Entry 1036
+    -0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
+    0x1.714c23db6c620p2
+  },
+  { // Entry 1037
+    0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
+    -0x1.714c23db6c620p2
+  },
+  { // Entry 1038
+    -0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
+    0x1.81b5ec8fd7999p2
+  },
+  { // Entry 1039
+    0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
+    -0x1.81b5ec8fd7999p2
+  },
+  { // Entry 1040
+    0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
+    0x1.effffffffffffp-5
+  },
+  { // Entry 1041
+    -0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
+    -0x1.effffffffffffp-5
+  },
+  { // Entry 1042
+    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    0x1.fp-5
+  },
+  { // Entry 1043
+    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    -0x1.fp-5
+  },
+  { // Entry 1044
+    0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
+    0x1.f000000000001p-5
+  },
+  { // Entry 1045
+    -0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
+    -0x1.f000000000001p-5
+  },
+  { // Entry 1046
+    0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
+    0x1.f7fffffffffffp-4
+  },
+  { // Entry 1047
+    -0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
+    -0x1.f7fffffffffffp-4
+  },
+  { // Entry 1048
+    0x1.f6baaa131de6438e5611279864fe7663p-4,
+    0x1.f80p-4
+  },
+  { // Entry 1049
+    -0x1.f6baaa131de6438e5611279864fe7663p-4,
+    -0x1.f80p-4
+  },
+  { // Entry 1050
+    0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
+    0x1.f800000000001p-4
+  },
+  { // Entry 1051
+    -0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
+    -0x1.f800000000001p-4
+  },
+  { // Entry 1052
+    0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
+    0x1.4bfffffffffffp-3
+  },
+  { // Entry 1053
+    -0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
+    -0x1.4bfffffffffffp-3
+  },
+  { // Entry 1054
+    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    0x1.4c0p-3
+  },
+  { // Entry 1055
+    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    -0x1.4c0p-3
+  },
+  { // Entry 1056
+    0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
+    0x1.4c00000000001p-3
+  },
+  { // Entry 1057
+    -0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
+    -0x1.4c00000000001p-3
+  },
+  { // Entry 1058
+    0x1.2e9cd95baba325fe6067233d4496aaacp-2,
+    0x1.3333333333332p-2
+  },
+  { // Entry 1059
+    -0x1.2e9cd95baba325fe6067233d4496aaacp-2,
+    -0x1.3333333333332p-2
+  },
+  { // Entry 1060
+    0x1.2e9cd95baba335476f513ac221d078c7p-2,
+    0x1.3333333333333p-2
+  },
+  { // Entry 1061
+    -0x1.2e9cd95baba335476f513ac221d078c7p-2,
+    -0x1.3333333333333p-2
+  },
+  { // Entry 1062
+    0x1.2e9cd95baba344907e3b5246fef75d15p-2,
+    0x1.3333333333334p-2
+  },
+  { // Entry 1063
+    -0x1.2e9cd95baba344907e3b5246fef75d15p-2,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 1064
+    0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
+    0x1.594317acc4ef8p-1
+  },
+  { // Entry 1065
+    -0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
+    -0x1.594317acc4ef8p-1
+  },
+  { // Entry 1066
+    0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
+    0x1.594317acc4ef9p-1
+  },
+  { // Entry 1067
+    -0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
+    -0x1.594317acc4ef9p-1
+  },
+  { // Entry 1068
+    0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
+    0x1.594317acc4efap-1
+  },
+  { // Entry 1069
+    -0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
+    -0x1.594317acc4efap-1
+  },
+  { // Entry 1070
+    0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
+    0x1.8ffffffffffffp-1
+  },
+  { // Entry 1071
+    -0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
+    -0x1.8ffffffffffffp-1
+  },
+  { // Entry 1072
+    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    0x1.9p-1
+  },
+  { // Entry 1073
+    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    -0x1.9p-1
+  },
+  { // Entry 1074
+    0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
+    0x1.9000000000001p-1
+  },
+  { // Entry 1075
+    -0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
+    -0x1.9000000000001p-1
+  },
+  { // Entry 1076
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1077
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1078
+    -0.0,
+    -0.0
+  },
+  { // Entry 1079
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1080
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1081
+    0x1.91f65f10dd812a0b95ff71871ab48207p-5,
+    0x1.921fb54442d17p-5
+  },
+  { // Entry 1082
+    -0x1.91f65f10dd812a0b95ff71871ab48207p-5,
+    -0x1.921fb54442d17p-5
+  },
+  { // Entry 1083
+    0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
+    0x1.921fb54442d18p-5
+  },
+  { // Entry 1084
+    -0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
+    -0x1.921fb54442d18p-5
+  },
+  { // Entry 1085
+    0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
+    0x1.921fb54442d19p-5
+  },
+  { // Entry 1086
+    -0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
+    -0x1.921fb54442d19p-5
+  },
+  { // Entry 1087
+    0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
+    0x1.921fb54442d17p-4
+  },
+  { // Entry 1088
+    -0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
+    -0x1.921fb54442d17p-4
+  },
+  { // Entry 1089
+    0x1.917a6bc29b42b9b9754a67729f79346bp-4,
+    0x1.921fb54442d18p-4
+  },
+  { // Entry 1090
+    -0x1.917a6bc29b42b9b9754a67729f79346bp-4,
+    -0x1.921fb54442d18p-4
+  },
+  { // Entry 1091
+    0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
+    0x1.921fb54442d19p-4
+  },
+  { // Entry 1092
+    -0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
+    -0x1.921fb54442d19p-4
+  },
+  { // Entry 1093
+    0x1.8f8b83c69a60975f98453886f953a0e5p-3,
+    0x1.921fb54442d17p-3
+  },
+  { // Entry 1094
+    -0x1.8f8b83c69a60975f98453886f953a0e5p-3,
+    -0x1.921fb54442d17p-3
+  },
+  { // Entry 1095
+    0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
+    0x1.921fb54442d18p-3
+  },
+  { // Entry 1096
+    -0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
+    -0x1.921fb54442d18p-3
+  },
+  { // Entry 1097
+    0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
+    0x1.921fb54442d19p-3
+  },
+  { // Entry 1098
+    -0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
+    -0x1.921fb54442d19p-3
+  },
+  { // Entry 1099
+    0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
+    0x1.921fb54442d17p-2
+  },
+  { // Entry 1100
+    -0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
+    -0x1.921fb54442d17p-2
+  },
+  { // Entry 1101
+    0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
+    0x1.921fb54442d18p-2
+  },
+  { // Entry 1102
+    -0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
+    -0x1.921fb54442d18p-2
+  },
+  { // Entry 1103
+    0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
+    0x1.921fb54442d19p-2
+  },
+  { // Entry 1104
+    -0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
+    -0x1.921fb54442d19p-2
+  },
+  { // Entry 1105
+    0x1.6a09e667f3bcba99afb0135729457874p-1,
+    0x1.921fb54442d17p-1
+  },
+  { // Entry 1106
+    -0x1.6a09e667f3bcba99afb0135729457874p-1,
+    -0x1.921fb54442d17p-1
+  },
+  { // Entry 1107
+    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 1108
+    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 1109
+    0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
+    0x1.921fb54442d19p-1
+  },
+  { // Entry 1110
+    -0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
+    -0x1.921fb54442d19p-1
+  },
+  { // Entry 1111
+    0x1.fffffffffffffffffffffffffe5f56ffp-1,
+    0x1.921fb54442d17p0
+  },
+  { // Entry 1112
+    -0x1.fffffffffffffffffffffffffe5f56ffp-1,
+    -0x1.921fb54442d17p0
+  },
+  { // Entry 1113
+    0x1.ffffffffffffffffffffffffffec8831p-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 1114
+    -0x1.ffffffffffffffffffffffffffec8831p-1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 1115
+    0x1.ffffffffffffffffffffffffff79b963p-1,
+    0x1.921fb54442d19p0
+  },
+  { // Entry 1116
+    -0x1.ffffffffffffffffffffffffff79b963p-1,
+    -0x1.921fb54442d19p0
+  },
+  { // Entry 1117
+    0x1.469898cc51701b839a252049bfaeed42p-51,
+    0x1.921fb54442d17p1
+  },
+  { // Entry 1118
+    -0x1.469898cc51701b839a252049bfaeed42p-51,
+    -0x1.921fb54442d17p1
+  },
+  { // Entry 1119
+    0x1.1a62633145c06e0e689481270436e2edp-53,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 1120
+    -0x1.1a62633145c06e0e689481270436e2edp-53,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 1121
+    -0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
+    0x1.921fb54442d19p1
+  },
+  { // Entry 1122
+    0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
+    -0x1.921fb54442d19p1
+  },
+  { // Entry 1123
+    -0x1.469898cc51701b839a252049bb87ce1bp-50,
+    0x1.921fb54442d17p2
+  },
+  { // Entry 1124
+    0x1.469898cc51701b839a252049bb87ce1bp-50,
+    -0x1.921fb54442d17p2
+  },
+  { // Entry 1125
+    -0x1.1a62633145c06e0e68948127040bf003p-52,
+    0x1.921fb54442d18p2
+  },
+  { // Entry 1126
+    0x1.1a62633145c06e0e68948127040bf003p-52,
+    -0x1.921fb54442d18p2
+  },
+  { // Entry 1127
+    0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
+    0x1.921fb54442d19p2
+  },
+  { // Entry 1128
+    -0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
+    -0x1.921fb54442d19p2
+  },
+  { // Entry 1129
+    -0x1.469898cc51701b839a252049aaeb5182p-49,
+    0x1.921fb54442d17p3
+  },
+  { // Entry 1130
+    0x1.469898cc51701b839a252049aaeb5182p-49,
+    -0x1.921fb54442d17p3
+  },
+  { // Entry 1131
+    -0x1.1a62633145c06e0e689481270360245cp-51,
+    0x1.921fb54442d18p3
+  },
+  { // Entry 1132
+    0x1.1a62633145c06e0e689481270360245cp-51,
+    -0x1.921fb54442d18p3
+  },
+  { // Entry 1133
+    0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
+    0x1.921fb54442d19p3
+  },
+  { // Entry 1134
+    -0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
+    -0x1.921fb54442d19p3
+  },
+  { // Entry 1135
+    -0x1.469898cc51701b839a25204968795f1cp-48,
+    0x1.921fb54442d17p4
+  },
+  { // Entry 1136
+    0x1.469898cc51701b839a25204968795f1cp-48,
+    -0x1.921fb54442d17p4
+  },
+  { // Entry 1137
+    -0x1.1a62633145c06e0e6894812700b0f5bfp-50,
+    0x1.921fb54442d18p4
+  },
+  { // Entry 1138
+    0x1.1a62633145c06e0e6894812700b0f5bfp-50,
+    -0x1.921fb54442d18p4
+  },
+  { // Entry 1139
+    0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
+    0x1.921fb54442d19p4
+  },
+  { // Entry 1140
+    -0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
+    -0x1.921fb54442d19p4
+  },
+  { // Entry 1141
+    -0x1.469898cc51701b839a2520485eb19584p-47,
+    0x1.921fb54442d17p5
+  },
+  { // Entry 1142
+    0x1.469898cc51701b839a2520485eb19584p-47,
+    -0x1.921fb54442d17p5
+  },
+  { // Entry 1143
+    -0x1.1a62633145c06e0e68948126f5f43b4cp-49,
+    0x1.921fb54442d18p5
+  },
+  { // Entry 1144
+    0x1.1a62633145c06e0e68948126f5f43b4cp-49,
+    -0x1.921fb54442d18p5
+  },
+  { // Entry 1145
+    0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
+    0x1.921fb54442d19p5
+  },
+  { // Entry 1146
+    -0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
+    -0x1.921fb54442d19p5
+  },
+  { // Entry 1147
+    -0x1.469898cc51701b839a25204437926f25p-46,
+    0x1.921fb54442d17p6
+  },
+  { // Entry 1148
+    0x1.469898cc51701b839a25204437926f25p-46,
+    -0x1.921fb54442d17p6
+  },
+  { // Entry 1149
+    -0x1.1a62633145c06e0e68948126cb01517dp-48,
+    0x1.921fb54442d18p6
+  },
+  { // Entry 1150
+    0x1.1a62633145c06e0e68948126cb01517dp-48,
+    -0x1.921fb54442d18p6
+  },
+  { // Entry 1151
+    0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
+    0x1.921fb54442d19p6
+  },
+  { // Entry 1152
+    -0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
+    -0x1.921fb54442d19p6
+  },
+  { // Entry 1153
+    -0x1.469898cc51701b839a2520339b15d5aap-45,
+    0x1.921fb54442d17p7
+  },
+  { // Entry 1154
+    0x1.469898cc51701b839a2520339b15d5aap-45,
+    -0x1.921fb54442d17p7
+  },
+  { // Entry 1155
+    -0x1.1a62633145c06e0e689481261f35aa43p-47,
+    0x1.921fb54442d18p7
+  },
+  { // Entry 1156
+    0x1.1a62633145c06e0e689481261f35aa43p-47,
+    -0x1.921fb54442d18p7
+  },
+  { // Entry 1157
+    0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
+    0x1.921fb54442d19p7
+  },
+  { // Entry 1158
+    -0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
+    -0x1.921fb54442d19p7
+  },
+  { // Entry 1159
+    0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
+    0x1.2d97c7f3321d1p1
+  },
+  { // Entry 1160
+    -0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
+    -0x1.2d97c7f3321d1p1
+  },
+  { // Entry 1161
+    0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
+    0x1.2d97c7f3321d2p1
+  },
+  { // Entry 1162
+    -0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
+    -0x1.2d97c7f3321d2p1
+  },
+  { // Entry 1163
+    0x1.6a09e667f3bca52392755644dfe72357p-1,
+    0x1.2d97c7f3321d3p1
+  },
+  { // Entry 1164
+    -0x1.6a09e667f3bca52392755644dfe72357p-1,
+    -0x1.2d97c7f3321d3p1
+  },
+  { // Entry 1165
+    -0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
+    0x1.f6a7a2955385dp1
+  },
+  { // Entry 1166
+    0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
+    -0x1.f6a7a2955385dp1
+  },
+  { // Entry 1167
+    -0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
+    0x1.f6a7a2955385ep1
+  },
+  { // Entry 1168
+    0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
+    -0x1.f6a7a2955385ep1
+  },
+  { // Entry 1169
+    -0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
+    0x1.f6a7a2955385fp1
+  },
+  { // Entry 1170
+    0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
+    -0x1.f6a7a2955385fp1
+  },
+  { // Entry 1171
+    -0x1.ffffffffffffffffffffffffe8b27b6ap-1,
+    0x1.2d97c7f3321d1p2
+  },
+  { // Entry 1172
+    0x1.ffffffffffffffffffffffffe8b27b6ap-1,
+    -0x1.2d97c7f3321d1p2
+  },
+  { // Entry 1173
+    -0x1.ffffffffffffffffffffffffff50c9bdp-1,
+    0x1.2d97c7f3321d2p2
+  },
+  { // Entry 1174
+    0x1.ffffffffffffffffffffffffff50c9bdp-1,
+    -0x1.2d97c7f3321d2p2
+  },
+  { // Entry 1175
+    -0x1.fffffffffffffffffffffffff5ef1810p-1,
+    0x1.2d97c7f3321d3p2
+  },
+  { // Entry 1176
+    0x1.fffffffffffffffffffffffff5ef1810p-1,
+    -0x1.2d97c7f3321d3p2
+  },
+  { // Entry 1177
+    -0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
+    0x1.5fdbbe9bba774p2
+  },
+  { // Entry 1178
+    0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
+    -0x1.5fdbbe9bba774p2
+  },
+  { // Entry 1179
+    -0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
+    0x1.5fdbbe9bba775p2
+  },
+  { // Entry 1180
+    0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
+    -0x1.5fdbbe9bba775p2
+  },
+  { // Entry 1181
+    -0x1.6a09e667f3bc845d26075994ad02bd98p-1,
+    0x1.5fdbbe9bba776p2
+  },
+  { // Entry 1182
+    0x1.6a09e667f3bc845d26075994ad02bd98p-1,
+    -0x1.5fdbbe9bba776p2
+  },
+  { // Entry 1183
+    0x1.6a09e667f3bc5271e48b5276f438579fp-1,
+    0x1.c463abeccb2bap2
+  },
+  { // Entry 1184
+    -0x1.6a09e667f3bc5271e48b5276f438579fp-1,
+    -0x1.c463abeccb2bap2
+  },
+  { // Entry 1185
+    0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
+    0x1.c463abeccb2bbp2
+  },
+  { // Entry 1186
+    -0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
+    -0x1.c463abeccb2bbp2
+  },
+  { // Entry 1187
+    0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
+    0x1.c463abeccb2bcp2
+  },
+  { // Entry 1188
+    -0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
+    -0x1.c463abeccb2bcp2
+  },
+  { // Entry 1189
+    0x1.ffffffffffffffffffffffffe31174f5p-1,
+    0x1.f6a7a2955385dp2
+  },
+  { // Entry 1190
+    -0x1.ffffffffffffffffffffffffe31174f5p-1,
+    -0x1.f6a7a2955385dp2
+  },
+  { // Entry 1191
+    0x1.fffffffffffffffffffffffffe194cd4p-1,
+    0x1.f6a7a2955385ep2
+  },
+  { // Entry 1192
+    -0x1.fffffffffffffffffffffffffe194cd4p-1,
+    -0x1.f6a7a2955385ep2
+  },
+  { // Entry 1193
+    0x1.fffffffffffffffffffffffff92124b4p-1,
+    0x1.f6a7a2955385fp2
+  },
+  { // Entry 1194
+    -0x1.fffffffffffffffffffffffff92124b4p-1,
+    -0x1.f6a7a2955385fp2
+  },
+  { // Entry 1195
+    0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
+    0x1.1475cc9eedeffp3
+  },
+  { // Entry 1196
+    -0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
+    -0x1.1475cc9eedeffp3
+  },
+  { // Entry 1197
+    0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
+    0x1.1475cc9eedfp3
+  },
+  { // Entry 1198
+    -0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
+    -0x1.1475cc9eedfp3
+  },
+  { // Entry 1199
+    0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
+    0x1.1475cc9eedf01p3
+  },
+  { // Entry 1200
+    -0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
+    -0x1.1475cc9eedf01p3
+  },
+  { // Entry 1201
+    0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
+    0x1.2d97c7f3321d1p3
+  },
+  { // Entry 1202
+    -0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
+    -0x1.2d97c7f3321d1p3
+  },
+  { // Entry 1203
+    0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
+    0x1.2d97c7f3321d2p3
+  },
+  { // Entry 1204
+    -0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
+    -0x1.2d97c7f3321d2p3
+  },
+  { // Entry 1205
+    -0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
+    0x1.2d97c7f3321d3p3
+  },
+  { // Entry 1206
+    0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
+    -0x1.2d97c7f3321d3p3
+  },
+  { // Entry 1207
+    -0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
+    0x1.46b9c347764a2p3
+  },
+  { // Entry 1208
+    0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
+    -0x1.46b9c347764a2p3
+  },
+  { // Entry 1209
+    -0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
+    0x1.46b9c347764a3p3
+  },
+  { // Entry 1210
+    0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
+    -0x1.46b9c347764a3p3
+  },
+  { // Entry 1211
+    -0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
+    0x1.46b9c347764a4p3
+  },
+  { // Entry 1212
+    0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
+    -0x1.46b9c347764a4p3
+  },
+  { // Entry 1213
+    -0x1.ffffffffffffffffffffffff9d634e9fp-1,
+    0x1.5fdbbe9bba774p3
+  },
+  { // Entry 1214
+    0x1.ffffffffffffffffffffffff9d634e9fp-1,
+    -0x1.5fdbbe9bba774p3
+  },
+  { // Entry 1215
+    -0x1.fffffffffffffffffffffffffc461178p-1,
+    0x1.5fdbbe9bba775p3
+  },
+  { // Entry 1216
+    0x1.fffffffffffffffffffffffffc461178p-1,
+    -0x1.5fdbbe9bba775p3
+  },
+  { // Entry 1217
+    -0x1.ffffffffffffffffffffffffdb28d451p-1,
+    0x1.5fdbbe9bba776p3
+  },
+  { // Entry 1218
+    0x1.ffffffffffffffffffffffffdb28d451p-1,
+    -0x1.5fdbbe9bba776p3
+  },
+  { // Entry 1219
+    -0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
+    0x1.78fdb9effea45p3
+  },
+  { // Entry 1220
+    0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
+    -0x1.78fdb9effea45p3
+  },
+  { // Entry 1221
+    -0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
+    0x1.78fdb9effea46p3
+  },
+  { // Entry 1222
+    0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
+    -0x1.78fdb9effea46p3
+  },
+  { // Entry 1223
+    -0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
+    0x1.78fdb9effea47p3
+  },
+  { // Entry 1224
+    0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
+    -0x1.78fdb9effea47p3
+  },
+  { // Entry 1225
+    0x1.6a09e667f3bb8477509955093bb292bep-1,
+    0x1.ab41b09886fe8p3
+  },
+  { // Entry 1226
+    -0x1.6a09e667f3bb8477509955093bb292bep-1,
+    -0x1.ab41b09886fe8p3
+  },
+  { // Entry 1227
+    0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
+    0x1.ab41b09886fe9p3
+  },
+  { // Entry 1228
+    -0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
+    -0x1.ab41b09886fe9p3
+  },
+  { // Entry 1229
+    0x1.6a09e667f3bcee81370148c69447b4e7p-1,
+    0x1.ab41b09886feap3
+  },
+  { // Entry 1230
+    -0x1.6a09e667f3bcee81370148c69447b4e7p-1,
+    -0x1.ab41b09886feap3
+  },
+  { // Entry 1231
+    0x1.ffffffffffffffffffffffff922141b4p-1,
+    0x1.c463abeccb2bap3
+  },
+  { // Entry 1232
+    -0x1.ffffffffffffffffffffffff922141b4p-1,
+    -0x1.c463abeccb2bap3
+  },
+  { // Entry 1233
+    0x1.fffffffffffffffffffffffff9d717a7p-1,
+    0x1.c463abeccb2bbp3
+  },
+  { // Entry 1234
+    -0x1.fffffffffffffffffffffffff9d717a7p-1,
+    -0x1.c463abeccb2bbp3
+  },
+  { // Entry 1235
+    0x1.ffffffffffffffffffffffffe18ced9ap-1,
+    0x1.c463abeccb2bcp3
+  },
+  { // Entry 1236
+    -0x1.ffffffffffffffffffffffffe18ced9ap-1,
+    -0x1.c463abeccb2bcp3
+  },
+  { // Entry 1237
+    0x1.6a09e667f3be13d77d8c52a726550eacp-1,
+    0x1.dd85a7410f58bp3
+  },
+  { // Entry 1238
+    -0x1.6a09e667f3be13d77d8c52a726550eacp-1,
+    -0x1.dd85a7410f58bp3
+  },
+  { // Entry 1239
+    0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
+    0x1.dd85a7410f58cp3
+  },
+  { // Entry 1240
+    -0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
+    -0x1.dd85a7410f58cp3
+  },
+  { // Entry 1241
+    0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
+    0x1.dd85a7410f58dp3
+  },
+  { // Entry 1242
+    -0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
+    -0x1.dd85a7410f58dp3
+  },
+  { // Entry 1243
+    0x1.583ebeff65cc226480ae685c1765dec1p-49,
+    0x1.f6a7a2955385dp3
+  },
+  { // Entry 1244
+    -0x1.583ebeff65cc226480ae685c1765dec1p-49,
+    -0x1.f6a7a2955385dp3
+  },
+  { // Entry 1245
+    0x1.60fafbfd9730899202b9a170c3971e86p-51,
+    0x1.f6a7a2955385ep3
+  },
+  { // Entry 1246
+    -0x1.60fafbfd9730899202b9a170c3971e86p-51,
+    -0x1.f6a7a2955385ep3
+  },
+  { // Entry 1247
+    -0x1.4f8282013467bb36fea32f479753fe7ap-50,
+    0x1.f6a7a2955385fp3
+  },
+  { // Entry 1248
+    0x1.4f8282013467bb36fea32f479753fe7ap-50,
+    -0x1.f6a7a2955385fp3
+  },
+  { // Entry 1249
+    -0x1.6a09e667f3ba0df299d25f82f639251fp-1,
+    0x1.07e4cef4cbd96p4
+  },
+  { // Entry 1250
+    0x1.6a09e667f3ba0df299d25f82f639251fp-1,
+    -0x1.07e4cef4cbd96p4
+  },
+  { // Entry 1251
+    -0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
+    0x1.07e4cef4cbd97p4
+  },
+  { // Entry 1252
+    0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
+    -0x1.07e4cef4cbd97p4
+  },
+  { // Entry 1253
+    -0x1.6a09e667f3bce20666a246ff2a62f097p-1,
+    0x1.07e4cef4cbd98p4
+  },
+  { // Entry 1254
+    0x1.6a09e667f3bce20666a246ff2a62f097p-1,
+    -0x1.07e4cef4cbd98p4
+  },
+  { // Entry 1255
+    -0x1.fffffffffffffffffffffffd2531a43dp-1,
+    0x1.1475cc9eedeffp4
+  },
+  { // Entry 1256
+    0x1.fffffffffffffffffffffffd2531a43dp-1,
+    -0x1.1475cc9eedeffp4
+  },
+  { // Entry 1257
+    -0x1.ffffffffffffffffffffffff86437656p-1,
+    0x1.1475cc9eedfp4
+  },
+  { // Entry 1258
+    0x1.ffffffffffffffffffffffff86437656p-1,
+    -0x1.1475cc9eedfp4
+  },
+  { // Entry 1259
+    -0x1.ffffffffffffffffffffffffe755486fp-1,
+    0x1.1475cc9eedf01p4
+  },
+  { // Entry 1260
+    0x1.ffffffffffffffffffffffffe755486fp-1,
+    -0x1.1475cc9eedf01p4
+  },
+  { // Entry 1261
+    -0x1.6a09e667f3bed557411f4e4c114d7357p-1,
+    0x1.2106ca4910068p4
+  },
+  { // Entry 1262
+    0x1.6a09e667f3bed557411f4e4c114d7357p-1,
+    -0x1.2106ca4910068p4
+  },
+  { // Entry 1263
+    -0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
+    0x1.2106ca4910069p4
+  },
+  { // Entry 1264
+    0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
+    -0x1.2106ca4910069p4
+  },
+  { // Entry 1265
+    -0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
+    0x1.2106ca491006ap4
+  },
+  { // Entry 1266
+    0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
+    -0x1.2106ca491006ap4
+  },
+  { // Entry 1267
+    -0x1.34f272993d1414a2b39bd83705cec120p-48,
+    0x1.2d97c7f3321d1p4
+  },
+  { // Entry 1268
+    0x1.34f272993d1414a2b39bd83705cec120p-48,
+    -0x1.2d97c7f3321d1p4
+  },
+  { // Entry 1269
+    -0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
+    0x1.2d97c7f3321d2p4
+  },
+  { // Entry 1270
+    0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
+    -0x1.2d97c7f3321d2p4
+  },
+  { // Entry 1271
+    0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
+    0x1.2d97c7f3321d3p4
+  },
+  { // Entry 1272
+    -0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
+    -0x1.2d97c7f3321d3p4
+  },
+  { // Entry 1273
+    0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
+    0x1.3a28c59d54339p4
+  },
+  { // Entry 1274
+    -0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
+    -0x1.3a28c59d54339p4
+  },
+  { // Entry 1275
+    0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
+    0x1.3a28c59d5433ap4
+  },
+  { // Entry 1276
+    -0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
+    -0x1.3a28c59d5433ap4
+  },
+  { // Entry 1277
+    0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
+    0x1.3a28c59d5433bp4
+  },
+  { // Entry 1278
+    -0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
+    -0x1.3a28c59d5433bp4
+  },
+  { // Entry 1279
+    0x1.fffffffffffffffffffffffd0711f437p-1,
+    0x1.46b9c347764a2p4
+  },
+  { // Entry 1280
+    -0x1.fffffffffffffffffffffffd0711f437p-1,
+    -0x1.46b9c347764a2p4
+  },
+  { // Entry 1281
+    0x1.ffffffffffffffffffffffff79c9ec83p-1,
+    0x1.46b9c347764a3p4
+  },
+  { // Entry 1282
+    -0x1.ffffffffffffffffffffffff79c9ec83p-1,
+    -0x1.46b9c347764a3p4
+  },
+  { // Entry 1283
+    0x1.ffffffffffffffffffffffffec81e4cfp-1,
+    0x1.46b9c347764a4p4
+  },
+  { // Entry 1284
+    -0x1.ffffffffffffffffffffffffec81e4cfp-1,
+    -0x1.46b9c347764a4p4
+  },
+  { // Entry 1285
+    0x1.6a09e667f3bee1d2117e501369fbffefp-1,
+    0x1.534ac0f19860bp4
+  },
+  { // Entry 1286
+    -0x1.6a09e667f3bee1d2117e501369fbffefp-1,
+    -0x1.534ac0f19860bp4
+  },
+  { // Entry 1287
+    0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
+    0x1.534ac0f19860cp4
+  },
+  { // Entry 1288
+    -0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
+    -0x1.534ac0f19860cp4
+  },
+  { // Entry 1289
+    0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
+    0x1.534ac0f19860dp4
+  },
+  { // Entry 1290
+    -0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
+    -0x1.534ac0f19860dp4
+  },
+  { // Entry 1291
+    0x1.3dc585b2c742181326e07c40375464dep-48,
+    0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1292
+    -0x1.3dc585b2c742181326e07c40375464dep-48,
+    -0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1293
+    0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
+    0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1294
+    -0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
+    -0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1295
+    -0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
+    0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1296
+    0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
+    -0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1297
+    -0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
+    0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1298
+    0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
+    -0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1299
+    -0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
+    0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1300
+    0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
+    -0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1301
+    -0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
+    0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1302
+    0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
+    -0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1303
+    -0x1.fffffffffffffffffffffffce85685bdp-1,
+    0x1.78fdb9effea45p4
+  },
+  { // Entry 1304
+    0x1.fffffffffffffffffffffffce85685bdp-1,
+    -0x1.78fdb9effea45p4
+  },
+  { // Entry 1305
+    -0x1.ffffffffffffffffffffffff6cb4a43dp-1,
+    0x1.78fdb9effea46p4
+  },
+  { // Entry 1306
+    0x1.ffffffffffffffffffffffff6cb4a43dp-1,
+    -0x1.78fdb9effea46p4
+  },
+  { // Entry 1307
+    -0x1.fffffffffffffffffffffffff112c2bcp-1,
+    0x1.78fdb9effea47p4
+  },
+  { // Entry 1308
+    0x1.fffffffffffffffffffffffff112c2bcp-1,
+    -0x1.78fdb9effea47p4
+  },
+  { // Entry 1309
+    -0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
+    0x1.858eb79a20baep4
+  },
+  { // Entry 1310
+    0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
+    -0x1.858eb79a20baep4
+  },
+  { // Entry 1311
+    -0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
+    0x1.858eb79a20bafp4
+  },
+  { // Entry 1312
+    0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
+    -0x1.858eb79a20bafp4
+  },
+  { // Entry 1313
+    -0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
+    0x1.858eb79a20bb0p4
+  },
+  { // Entry 1314
+    0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
+    -0x1.858eb79a20bb0p4
+  },
+  { // Entry 1315
+    0x1.fa7299b17573d373c615096572a0de04p-1,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 1316
+    -0x1.fa7299b17573d373c615096572a0de04p-1,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 1317
+    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    0x1.0p63
+  },
+  { // Entry 1318
+    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    -0x1.0p63
+  },
+  { // Entry 1319
+    0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
+    0x1.0000000000001p63
+  },
+  { // Entry 1320
+    -0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
+    -0x1.0000000000001p63
+  },
+  { // Entry 1321
+    -0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 1322
+    0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 1323
+    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    0x1.0p27
+  },
+  { // Entry 1324
+    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    -0x1.0p27
+  },
+  { // Entry 1325
+    -0x1.86dcc9155fe182d4515599426bb14b94p-1,
+    0x1.0000000000001p27
+  },
+  { // Entry 1326
+    0x1.86dcc9155fe182d4515599426bb14b94p-1,
+    -0x1.0000000000001p27
+  },
+  { // Entry 1327
+    -0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 1328
+    0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 1329
+    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    0x1.0p24
+  },
+  { // Entry 1330
+    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    -0x1.0p24
+  },
+  { // Entry 1331
+    -0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
+    0x1.0000000000001p24
+  },
+  { // Entry 1332
+    0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
+    -0x1.0000000000001p24
+  },
+  { // Entry 1333
+    -0x1.837b9dddc1eabd379d729f575fc1144cp-1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 1334
+    0x1.837b9dddc1eabd379d729f575fc1144cp-1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 1335
+    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    0x1.0p2
+  },
+  { // Entry 1336
+    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    -0x1.0p2
+  },
+  { // Entry 1337
+    -0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
+    0x1.0000000000001p2
+  },
+  { // Entry 1338
+    0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 1339
+    0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 1340
+    -0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 1341
+    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    0x1.0p1
+  },
+  { // Entry 1342
+    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    -0x1.0p1
+  },
+  { // Entry 1343
+    0x1.d18f6ead1b44435891f0c50e01826988p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 1344
+    -0x1.d18f6ead1b44435891f0c50e01826988p-1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 1345
+    0x1.aed548f090ced79c79cbf790441f8197p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1346
+    -0x1.aed548f090ced79c79cbf790441f8197p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1347
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.0p0
+  },
+  { // Entry 1348
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    -0x1.0p0
+  },
+  { // Entry 1349
+    0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1350
+    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1351
+    0x1.eaee8744b05ef07cd0b9089130598314p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 1352
+    -0x1.eaee8744b05ef07cd0b9089130598314p-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 1353
+    0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    0x1.0p-1
+  },
+  { // Entry 1354
+    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    -0x1.0p-1
+  },
+  { // Entry 1355
+    0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 1356
+    -0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 1357
+    0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 1358
+    -0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 1359
+    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    0x1.0p-2
+  },
+  { // Entry 1360
+    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    -0x1.0p-2
+  },
+  { // Entry 1361
+    0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 1362
+    -0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 1363
+    0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 1364
+    -0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 1365
+    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    0x1.0p-3
+  },
+  { // Entry 1366
+    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    -0x1.0p-3
+  },
+  { // Entry 1367
+    0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 1368
+    -0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 1369
+    0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 1370
+    -0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 1371
+    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    0x1.0p-4
+  },
+  { // Entry 1372
+    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    -0x1.0p-4
+  },
+  { // Entry 1373
+    0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 1374
+    -0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 1375
+    0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 1376
+    -0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 1377
+    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    0x1.0p-5
+  },
+  { // Entry 1378
+    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    -0x1.0p-5
+  },
+  { // Entry 1379
+    0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 1380
+    -0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 1381
+    0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 1382
+    -0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 1383
+    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    0x1.0p-6
+  },
+  { // Entry 1384
+    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    -0x1.0p-6
+  },
+  { // Entry 1385
+    0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 1386
+    -0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 1387
+    0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 1388
+    -0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 1389
+    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    0x1.0p-14
+  },
+  { // Entry 1390
+    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    -0x1.0p-14
+  },
+  { // Entry 1391
+    0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
+    0x1.0000000000001p-14
+  },
+  { // Entry 1392
+    -0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 1393
+    0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 1394
+    -0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 1395
+    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    0x1.0p-27
+  },
+  { // Entry 1396
+    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    -0x1.0p-27
+  },
+  { // Entry 1397
+    0x1.0000000000000f555555555555357777p-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 1398
+    -0x1.0000000000000f555555555555357777p-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 1399
+    0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 1400
+    -0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 1401
+    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    0x1.0p-30
+  },
+  { // Entry 1402
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    -0x1.0p-30
+  },
+  { // Entry 1403
+    0x1.0000000000000ffd555555555554d557p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 1404
+    -0x1.0000000000000ffd555555555554d557p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 1405
+    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1406
+    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1407
+    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1408
+    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1409
+    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1410
+    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1411
+    0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 1412
+    -0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 1413
+    0x1.1a62633145c06e0e689481270436e2edp-53,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 1414
+    -0x1.1a62633145c06e0e689481270436e2edp-53,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 1415
+    0x1.ffffffffffffffffffffffffffec8831p-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 1416
+    -0x1.ffffffffffffffffffffffffffec8831p-1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 1417
+    0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1418
+    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1419
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.0p0
+  },
+  { // Entry 1420
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    -0x1.0p0
+  },
+  { // Entry 1421
+    0x1.aed548f090ced79c79cbf790441f8197p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1422
+    -0x1.aed548f090ced79c79cbf790441f8197p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1423
+    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 1424
+    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 1425
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 1426
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1427
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1428
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1429
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1430
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1431
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1432
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1433
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 1434
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 1435
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1436
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1437
+    0.0,
+    0.0
+  },
+  { // Entry 1438
+    -0.0,
+    -0.0
+  },
+};
diff --git a/tests/math_data/sincos_intel_data.h b/tests/math_data/sincos_intel_data.h
new file mode 100644
index 0000000..71ba6b1
--- /dev/null
+++ b/tests/math_data/sincos_intel_data.h
@@ -0,0 +1,4763 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_2_1_t<double, double, double> g_sincos_intel_data[] = {
+  { // Entry 0
+    -0x1.ce9a94ea9c2ad95597b1193b2300d19ap-1,
+    -0x1.b6d3057776dc38335b16745f2d756ab6p-2,
+    -0x1.01c000003p1,
+  },
+  { // Entry 1
+    0x1.ce9a94ea9c2ad95597b1193b2300d19ap-1,
+    -0x1.b6d3057776dc38335b16745f2d756ab6p-2,
+    0x1.01c000003p1,
+  },
+  { // Entry 2
+    -0x1.ce2cad2f92157153b4a9e012e3461d0ap-1,
+    -0x1.b8a14c745bd4c832bae9785655c91b60p-2,
+    -0x1.01fffc080p1,
+  },
+  { // Entry 3
+    0x1.ce2cad2f92157153b4a9e012e3461d0ap-1,
+    -0x1.b8a14c745bd4c832bae9785655c91b60p-2,
+    0x1.01fffc080p1,
+  },
+  { // Entry 4
+    -0x1.1a7444726f5e9dc2ee069dc3e500ab4fp-2,
+    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
+    -0x1.1e2a1563e068ep-2,
+  },
+  { // Entry 5
+    0x1.1a7444726f5e9dc2ee069dc3e500ab4fp-2,
+    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
+    0x1.1e2a1563e068ep-2,
+  },
+  { // Entry 6
+    -0x1.efdab5e65c8fd550d4688b62791fe694p-1,
+    0x1.fe4123d266ca37faeee822138eb331d3p-3,
+    -0x1.83ef2196f92f0p87,
+  },
+  { // Entry 7
+    0x1.efdab5e65c8fd550d4688b62791fe694p-1,
+    0x1.fe4123d266ca37faeee822138eb331d3p-3,
+    0x1.83ef2196f92f0p87,
+  },
+  { // Entry 8
+    -0x1.eff5edb1ad416cb6ca3109f1c0dfc34ap-1,
+    0x1.fc9935a7481717fa8aeca7a9c5833084p-3,
+    -0x1.a486d79764fb8p86,
+  },
+  { // Entry 9
+    0x1.eff5edb1ad416cb6ca3109f1c0dfc34ap-1,
+    0x1.fc9935a7481717fa8aeca7a9c5833084p-3,
+    0x1.a486d79764fb8p86,
+  },
+  { // Entry 10
+    -0x1.b78f2c97c88028396ec94ba9ea58dd68p-2,
+    0x1.ce6dea6788fde425f68fe33b0ffcc244p-1,
+    -0x1.c65173556ccfbp-2,
+  },
+  { // Entry 11
+    0x1.b78f2c97c88028396ec94ba9ea58dd68p-2,
+    0x1.ce6dea6788fde425f68fe33b0ffcc244p-1,
+    0x1.c65173556ccfbp-2,
+  },
+  { // Entry 12
+    -0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
+    0x1.f32c8792006349b33b09fe57f80d9ed1p-1,
+    -0x1.cb6p-3,
+  },
+  { // Entry 13
+    0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
+    0x1.f32c8792006349b33b09fe57f80d9ed1p-1,
+    0x1.cb6p-3,
+  },
+  { // Entry 14
+    -0x1.f74a97abb47bc823e92eb9d66f1d8b54p-3,
+    0x1.f04c859e062b9202aa2b9bf0486b5afdp-1,
+    -0x1.fc7fffffffffep-3,
+  },
+  { // Entry 15
+    0x1.f74a97abb47bc823e92eb9d66f1d8b54p-3,
+    0x1.f04c859e062b9202aa2b9bf0486b5afdp-1,
+    0x1.fc7fffffffffep-3,
+  },
+  { // Entry 16
+    0x1.0000000000002fffd555555555553d55p-32,
+    0x1.fffffffffffffffeffffffffffffa0p-1,
+    0x1.0000000000003p-32,
+  },
+  { // Entry 17
+    -0x1.0000000000002fffd555555555553d55p-32,
+    0x1.fffffffffffffffeffffffffffffa0p-1,
+    -0x1.0000000000003p-32,
+  },
+  { // Entry 18
+    0x1.d18f6ead199a3b95430d5516e93c8d7bp-1,
+    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
+    0x1.00000000010p1,
+  },
+  { // Entry 19
+    -0x1.d18f6ead199a3b95430d5516e93c8d7bp-1,
+    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
+    -0x1.00000000010p1,
+  },
+  { // Entry 20
+    0x1.b64d59dd8a5249e01113f4cb37d13c40p-1,
+    -0x1.08a445ad4737e80060cf3a5ff94d3067p-1,
+    0x1.001p557,
+  },
+  { // Entry 21
+    -0x1.b64d59dd8a5249e01113f4cb37d13c40p-1,
+    -0x1.08a445ad4737e80060cf3a5ff94d3067p-1,
+    -0x1.001p557,
+  },
+  { // Entry 22
+    0x1.ce77f24fd4d9a790125ff5290a62b7f1p-1,
+    -0x1.b764f40c9716b834bb72589348cfa4b8p-2,
+    0x1.01d4313757482p1,
+  },
+  { // Entry 23
+    -0x1.ce77f24fd4d9a790125ff5290a62b7f1p-1,
+    -0x1.b764f40c9716b834bb72589348cfa4b8p-2,
+    -0x1.01d4313757482p1,
+  },
+  { // Entry 24
+    0x1.ce39b7df7f4acb81e37c532638f9bf49p-1,
+    -0x1.b86a908f05c0a839e19d4aa63156d32bp-2,
+    0x1.01f867d44bc82p1,
+  },
+  { // Entry 25
+    -0x1.ce39b7df7f4acb81e37c532638f9bf49p-1,
+    -0x1.b86a908f05c0a839e19d4aa63156d32bp-2,
+    -0x1.01f867d44bc82p1,
+  },
+  { // Entry 26
+    0x1.ce70046acb80de75e903468cea8ab427p-1,
+    -0x1.b78654766c76483ce90a0bc2ac957b59p-2,
+    0x1.09860e8ed1e90p3,
+  },
+  { // Entry 27
+    -0x1.ce70046acb80de75e903468cea8ab427p-1,
+    -0x1.b78654766c76483ce90a0bc2ac957b59p-2,
+    -0x1.09860e8ed1e90p3,
+  },
+  { // Entry 28
+    0x1.ce68564e251f16285d604e04657f30e6p-1,
+    -0x1.b7a6a56f5796683c58e01b5b7061c16cp-2,
+    0x1.09872cce51fbdp3,
+  },
+  { // Entry 29
+    -0x1.ce68564e251f16285d604e04657f30e6p-1,
+    -0x1.b7a6a56f5796683c58e01b5b7061c16cp-2,
+    -0x1.09872cce51fbdp3,
+  },
+  { // Entry 30
+    -0x1.ce8ab32f3b002065f2d99e57a1072705p-1,
+    -0x1.b715f769cf1e582e23a15e8b80a70486p-2,
+    0x1.113b13b13b224p2,
+  },
+  { // Entry 31
+    0x1.ce8ab32f3b002065f2d99e57a1072705p-1,
+    -0x1.b715f769cf1e582e23a15e8b80a70486p-2,
+    -0x1.113b13b13b224p2,
+  },
+  { // Entry 32
+    0x1.c2df57188d3099e1baf7f721d7318bd9p-1,
+    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
+    0x1.13cp0,
+  },
+  { // Entry 33
+    -0x1.c2df57188d3099e1baf7f721d7318bd9p-1,
+    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
+    -0x1.13cp0,
+  },
+  { // Entry 34
+    0x1.b7dcd7c85c820838eecfa53e52078b2bp-2,
+    -0x1.ce5b7372046eaa467f49e1debe3662dfp-1,
+    0x1.1f628c5610717p3,
+  },
+  { // Entry 35
+    -0x1.b7dcd7c85c820838eecfa53e52078b2bp-2,
+    -0x1.ce5b7372046eaa467f49e1debe3662dfp-1,
+    -0x1.1f628c5610717p3,
+  },
+  { // Entry 36
+    0x1.ff3466b1ec8bed978f7c27018bc09678p-1,
+    0x1.c86caa04929857c2816d30693fceab36p-5,
+    0x1.1f699d708d497p16,
+  },
+  { // Entry 37
+    -0x1.ff3466b1ec8bed978f7c27018bc09678p-1,
+    0x1.c86caa04929857c2816d30693fceab36p-5,
+    -0x1.1f699d708d497p16,
+  },
+  { // Entry 38
+    0x1.b61d6aff754c2835697b5aa5339b635cp-2,
+    -0x1.cec59b2d230a83a86804730afdf1becfp-1,
+    0x1.1f72064620ef4p3,
+  },
+  { // Entry 39
+    -0x1.b61d6aff754c2835697b5aa5339b635cp-2,
+    -0x1.cec59b2d230a83a86804730afdf1becfp-1,
+    -0x1.1f72064620ef4p3,
+  },
+  { // Entry 40
+    0x1.cdf604838e499bd5d9d2712397b23c07p-1,
+    0x1.b98656b85bc2683216a947335ea689fbp-2,
+    0x1.1fffffdcefe40p0,
+  },
+  { // Entry 41
+    -0x1.cdf604838e499bd5d9d2712397b23c07p-1,
+    0x1.b98656b85bc2683216a947335ea689fbp-2,
+    -0x1.1fffffdcefe40p0,
+  },
+  { // Entry 42
+    0x1.ce913329696cd3fa471c7b00891075d4p-1,
+    0x1.b6fa92e5f576c834fc15d8998fccc728p-2,
+    0x1.20b478c4aa9edp0,
+  },
+  { // Entry 43
+    -0x1.ce913329696cd3fa471c7b00891075d4p-1,
+    0x1.b6fa92e5f576c834fc15d8998fccc728p-2,
+    -0x1.20b478c4aa9edp0,
+  },
+  { // Entry 44
+    0x1.ceabc025ed3d57323fca51626d2bf28cp-1,
+    0x1.b68a988604a7e83cd382fdf329d0d76ep-2,
+    0x1.20d37456e7453p0,
+  },
+  { // Entry 45
+    -0x1.ceabc025ed3d57323fca51626d2bf28cp-1,
+    0x1.b68a988604a7e83cd382fdf329d0d76ep-2,
+    -0x1.20d37456e7453p0,
+  },
+  { // Entry 46
+    0x1.ceb022b6b5ae07a267f0e7dc6a14a214p-1,
+    0x1.b67816b80ed0a82d11aee7aaa8008fedp-2,
+    0x1.20d8930cdf602p0,
+  },
+  { // Entry 47
+    -0x1.ceb022b6b5ae07a267f0e7dc6a14a214p-1,
+    0x1.b67816b80ed0a82d11aee7aaa8008fedp-2,
+    -0x1.20d8930cdf602p0,
+  },
+  { // Entry 48
+    -0x1.9e62aca53c660801b62604018a9d19ddp-4,
+    -0x1.fd5f830f860f333de490a42c2f045012p-1,
+    0x1.30d5f8e54b6d8p3,
+  },
+  { // Entry 49
+    0x1.9e62aca53c660801b62604018a9d19ddp-4,
+    -0x1.fd5f830f860f333de490a42c2f045012p-1,
+    -0x1.30d5f8e54b6d8p3,
+  },
+  { // Entry 50
+    0x1.3ed2aeefeafc97f0ee0fb3fa4fb46052p-3,
+    0x1.f9c201e4eb65fd5e5dbd97662505ff6fp-1,
+    0x1.402p-3,
+  },
+  { // Entry 51
+    -0x1.3ed2aeefeafc97f0ee0fb3fa4fb46052p-3,
+    0x1.f9c201e4eb65fd5e5dbd97662505ff6fp-1,
+    -0x1.402p-3,
+  },
+  { // Entry 52
+    -0x1.ff65d2ff4a8cc41cb8bb6df306e07be7p-1,
+    -0x1.8d3822ef260a57b385611f08577b75d9p-5,
+    0x1.4a40ec149a66fp16,
+  },
+  { // Entry 53
+    0x1.ff65d2ff4a8cc41cb8bb6df306e07be7p-1,
+    -0x1.8d3822ef260a57b385611f08577b75d9p-5,
+    -0x1.4a40ec149a66fp16,
+  },
+  { // Entry 54
+    0x1.4fffffffff9f88000000084f22ccccccp-20,
+    0x1.fffffffffe47000000003f4ebffffffcp-1,
+    0x1.5p-20,
+  },
+  { // Entry 55
+    -0x1.4fffffffff9f88000000084f22ccccccp-20,
+    0x1.fffffffffe47000000003f4ebffffffcp-1,
+    -0x1.5p-20,
+  },
+  { // Entry 56
+    0x1.79c599e1e91af809f9e69771796cd507p-1,
+    -0x1.5997065cb9653702d4c9d9b6bc58f768p-1,
+    0x1.5294a5294a528p4,
+  },
+  { // Entry 57
+    -0x1.79c599e1e91af809f9e69771796cd507p-1,
+    -0x1.5997065cb9653702d4c9d9b6bc58f768p-1,
+    -0x1.5294a5294a528p4,
+  },
+  { // Entry 58
+    -0x1.ff7996073bba6c6ede46f52d445623c9p-1,
+    0x1.72e7437910cc083fac4f6f62a2eb38afp-5,
+    0x1.57431aacf5c58p16,
+  },
+  { // Entry 59
+    0x1.ff7996073bba6c6ede46f52d445623c9p-1,
+    0x1.72e7437910cc083fac4f6f62a2eb38afp-5,
+    -0x1.57431aacf5c58p16,
+  },
+  { // Entry 60
+    0x1.f81c4f9a5181462ae735e21222d498c4p-1,
+    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
+    0x1.652p0,
+  },
+  { // Entry 61
+    -0x1.f81c4f9a5181462ae735e21222d498c4p-1,
+    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
+    -0x1.652p0,
+  },
+  { // Entry 62
+    -0x1.c42a091026f45286d061085c5c9fddb7p-1,
+    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
+    0x1.6f7bdef7bdef4p3,
+  },
+  { // Entry 63
+    0x1.c42a091026f45286d061085c5c9fddb7p-1,
+    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
+    -0x1.6f7bdef7bdef4p3,
+  },
+  { // Entry 64
+    -0x1.f9c4364ba198f7e32b672366c34b8b7dp-2,
+    0x1.bd309f3dfcd489128e5ecbc31680c4a5p-1,
+    0x1.711p2,
+  },
+  { // Entry 65
+    0x1.f9c4364ba198f7e32b672366c34b8b7dp-2,
+    0x1.bd309f3dfcd489128e5ecbc31680c4a5p-1,
+    -0x1.711p2,
+  },
+  { // Entry 66
+    -0x1.be6e5bea1a4d88331fd8e460cd677245p-2,
+    0x1.ccc7d99b57ab54f04ed918ec14a2507dp-1,
+    0x1.7540aa5882dc2p2,
+  },
+  { // Entry 67
+    0x1.be6e5bea1a4d88331fd8e460cd677245p-2,
+    0x1.ccc7d99b57ab54f04ed918ec14a2507dp-1,
+    -0x1.7540aa5882dc2p2,
+  },
+  { // Entry 68
+    0x1.c90c841d1494c0757e8ebb16725d8718p-3,
+    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
+    0x1.7550d28ffccc4p1,
+  },
+  { // Entry 69
+    -0x1.c90c841d1494c0757e8ebb16725d8718p-3,
+    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
+    -0x1.7550d28ffccc4p1,
+  },
+  { // Entry 70
+    -0x1.b649d577e1b2a839d25d19807eb2c564p-2,
+    0x1.cebb175d36b934bc0995a0be35cde1eep-1,
+    0x1.75d11fa0d6242p2,
+  },
+  { // Entry 71
+    0x1.b649d577e1b2a839d25d19807eb2c564p-2,
+    0x1.cebb175d36b934bc0995a0be35cde1eep-1,
+    -0x1.75d11fa0d6242p2,
+  },
+  { // Entry 72
+    0x1.b78730d11d8408320d21ca6ad2be3368p-2,
+    -0x1.ce6fd00ed16501cb13b908477e102811p-1,
+    0x1.bc50444ee6286p9,
+  },
+  { // Entry 73
+    -0x1.b78730d11d8408320d21ca6ad2be3368p-2,
+    -0x1.ce6fd00ed16501cb13b908477e102811p-1,
+    -0x1.bc50444ee6286p9,
+  },
+  { // Entry 74
+    0x1.b6b0b0996e7e6835acdb36e55a08bf15p-2,
+    0x1.cea2b8cc552181d0b0aead27e94a9168p-1,
+    0x1.c55b2bf19ce54p-2,
+  },
+  { // Entry 75
+    -0x1.b6b0b0996e7e6835acdb36e55a08bf15p-2,
+    0x1.cea2b8cc552181d0b0aead27e94a9168p-1,
+    -0x1.c55b2bf19ce54p-2,
+  },
+  { // Entry 76
+    0x1.b6facf665891482ea8c61f5ca32f280dp-2,
+    0x1.ce9124cec4150559d947a526ad98f2f4p-1,
+    0x1.c5ad34f5f472ap-2,
+  },
+  { // Entry 77
+    -0x1.b6facf665891482ea8c61f5ca32f280dp-2,
+    0x1.ce9124cec4150559d947a526ad98f2f4p-1,
+    -0x1.c5ad34f5f472ap-2,
+  },
+  { // Entry 78
+    -0x1.f83a0983dd15d00301e2df21e3bee635p-2,
+    -0x1.bda0596df060004d579563ad8c67d151p-1,
+    0x1.d4067c60f471ep1,
+  },
+  { // Entry 79
+    0x1.f83a0983dd15d00301e2df21e3bee635p-2,
+    -0x1.bda0596df060004d579563ad8c67d151p-1,
+    -0x1.d4067c60f471ep1,
+  },
+  { // Entry 80
+    0x1.9cb6a9bbce64a3e97a7267fdec25c83bp-1,
+    0x1.2f011326420e5002172db245fd9063e2p-1,
+    0x1.dffffffffffffp-1,
+  },
+  { // Entry 81
+    -0x1.9cb6a9bbce64a3e97a7267fdec25c83bp-1,
+    0x1.2f011326420e5002172db245fd9063e2p-1,
+    -0x1.dffffffffffffp-1,
+  },
+  { // Entry 82
+    0x1.f5f0be28565c5ad763c103d981fc5c4ep-5,
+    0x1.ff09babb076e4803e57e68204570fd5bp-1,
+    0x1.f64147d8add84p-5,
+  },
+  { // Entry 83
+    -0x1.f5f0be28565c5ad763c103d981fc5c4ep-5,
+    0x1.ff09babb076e4803e57e68204570fd5bp-1,
+    -0x1.f64147d8add84p-5,
+  },
+  { // Entry 84
+    -0x1.d4da5f56888e200fda4ebac7db1cdbefp-1,
+    0x1.9b70cd3284e157fb84491d581cb86bd3p-2,
+    0x1.fe6183efa397cp83,
+  },
+  { // Entry 85
+    0x1.d4da5f56888e200fda4ebac7db1cdbefp-1,
+    0x1.9b70cd3284e157fb84491d581cb86bd3p-2,
+    -0x1.fe6183efa397cp83,
+  },
+  { // Entry 86
+    0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
+    0x1.f016474b75667424a050d79014fd2385p-1,
+    0x1.ffeffffffffffp-3,
+  },
+  { // Entry 87
+    -0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
+    0x1.f016474b75667424a050d79014fd2385p-1,
+    -0x1.ffeffffffffffp-3,
+  },
+  { // Entry 88
+    -0x1.ff4868ddaba6ba32c6b714aef99ff2f7p-1,
+    -0x1.b16f0eb25ae467c2a185e516f1188b20p-5,
+    0x1.fff7ff800001fp15,
+  },
+  { // Entry 89
+    0x1.ff4868ddaba6ba32c6b714aef99ff2f7p-1,
+    -0x1.b16f0eb25ae467c2a185e516f1188b20p-5,
+    -0x1.fff7ff800001fp15,
+  },
+  { // Entry 90
+    -0x1.ff4f1e9c248912648701818d075b3953p-1,
+    -0x1.a971e3b64d08d7c3f37d299b43616eb4p-5,
+    0x1.fff7ffffffcp15,
+  },
+  { // Entry 91
+    0x1.ff4f1e9c248912648701818d075b3953p-1,
+    -0x1.a971e3b64d08d7c3f37d299b43616eb4p-5,
+    -0x1.fff7ffffffcp15,
+  },
+  { // Entry 92
+    0x1.d19616fc7ee4605345c25606cfc93235p-1,
+    -0x1.aa054c4909384811a063273112604c31p-2,
+    0x1.fff80p0,
+  },
+  { // Entry 93
+    -0x1.d19616fc7ee4605345c25606cfc93235p-1,
+    -0x1.aa054c4909384811a063273112604c31p-2,
+    -0x1.fff80p0,
+  },
+  { // Entry 94
+    0x1.ce3509751c4614837fa4b34963c6f5d8p-1,
+    0x1.b87e37101654482144d71d04972267d8p-2,
+    0x1.ffffbffe3ffffp14,
+  },
+  { // Entry 95
+    -0x1.ce3509751c4614837fa4b34963c6f5d8p-1,
+    0x1.b87e37101654482144d71d04972267d8p-2,
+    -0x1.ffffbffe3ffffp14,
+  },
+  { // Entry 96
+    0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
+    -0x1.aa2241160227896c68ef17839f17dce5p-2,
+    0x1.fffff60p0,
+  },
+  { // Entry 97
+    -0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
+    -0x1.aa2241160227896c68ef17839f17dce5p-2,
+    -0x1.fffff60p0,
+  },
+  { // Entry 98
+    -0x1.837b994a6d8ff7f2750755df5843e84dp-1,
+    -0x1.4eaa65b9e2ecc308fd82f65e09d06be4p-1,
+    0x1.fffffe3ffffffp1,
+  },
+  { // Entry 99
+    0x1.837b994a6d8ff7f2750755df5843e84dp-1,
+    -0x1.4eaa65b9e2ecc308fd82f65e09d06be4p-1,
+    -0x1.fffffe3ffffffp1,
+  },
+  { // Entry 100
+    0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
+    0x1.14a280fb507cf8999a1b291995646152p-1,
+    0x1.ffffffffffe7fp-1,
+  },
+  { // Entry 101
+    -0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
+    0x1.14a280fb507cf8999a1b291995646152p-1,
+    -0x1.ffffffffffe7fp-1,
+  },
+  { // Entry 102
+    -0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+  },
+  { // Entry 103
+    0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074,
+  },
+  { // Entry 104
+    -0.0,
+    0x1.p0,
+    -0.0,
+  },
+  { // Entry 105
+    0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074,
+  },
+  { // Entry 106
+    -0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+  },
+  { // Entry 107
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022,
+  },
+  { // Entry 108
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p-1022,
+  },
+  { // Entry 109
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022,
+  },
+  { // Entry 110
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1022,
+  },
+  { // Entry 111
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023,
+  },
+  { // Entry 112
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep-1023,
+  },
+  { // Entry 113
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep-1023,
+  },
+  { // Entry 114
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023,
+  },
+  { // Entry 115
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1022,
+  },
+  { // Entry 116
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022,
+  },
+  { // Entry 117
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p-1022,
+  },
+  { // Entry 118
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022,
+  },
+  { // Entry 119
+    0x1.9999996de8ca198c24ab9449beee16d5p-13,
+    0x1.ffffff5c28f5cb4c5272061281211120p-1,
+    0x1.999999999999ap-13,
+  },
+  { // Entry 120
+    -0x1.9999996de8ca198c24ab9449beee16d5p-13,
+    0x1.ffffff5c28f5cb4c5272061281211120p-1,
+    -0x1.999999999999ap-13,
+  },
+  { // Entry 121
+    0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
+    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
+    0x1.999999999999ap-12,
+  },
+  { // Entry 122
+    -0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
+    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
+    -0x1.999999999999ap-12,
+  },
+  { // Entry 123
+    0x1.3333320c49babff151b6d04290e2c3a2p-11,
+    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
+    0x1.3333333333334p-11,
+  },
+  { // Entry 124
+    -0x1.3333320c49babff151b6d04290e2c3a2p-11,
+    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
+    -0x1.3333333333334p-11,
+  },
+  { // Entry 125
+    0x1.999996de8ca2884da2f08f25bb024d08p-11,
+    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
+    0x1.999999999999ap-11,
+  },
+  { // Entry 126
+    -0x1.999996de8ca2884da2f08f25bb024d08p-11,
+    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
+    -0x1.999999999999ap-11,
+  },
+  { // Entry 127
+    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    0x1.0p-10,
+  },
+  { // Entry 128
+    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    -0x1.0p-10,
+  },
+  { // Entry 129
+    0x1.33332e978d552afc883bdb04751e3835p-10,
+    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
+    0x1.3333333333333p-10,
+  },
+  { // Entry 130
+    -0x1.33332e978d552afc883bdb04751e3835p-10,
+    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
+    -0x1.3333333333333p-10,
+  },
+  { // Entry 131
+    0x1.66665f1529aff8a3809246670a436c3cp-10,
+    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
+    0x1.6666666666666p-10,
+  },
+  { // Entry 132
+    -0x1.66665f1529aff8a3809246670a436c3cp-10,
+    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
+    -0x1.6666666666666p-10,
+  },
+  { // Entry 133
+    0x1.99998ead65cdf82e194c133997f2fb68p-10,
+    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
+    0x1.9999999999999p-10,
+  },
+  { // Entry 134
+    -0x1.99998ead65cdf82e194c133997f2fb68p-10,
+    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
+    -0x1.9999999999999p-10,
+  },
+  { // Entry 135
+    0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
+    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
+    0x1.cccccccccccccp-10,
+  },
+  { // Entry 136
+    -0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
+    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
+    -0x1.cccccccccccccp-10,
+  },
+  { // Entry 137
+    0x1.0665ae9c7b44ed280216be2104f28f02p-7,
+    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
+    0x1.0666666666666p-7,
+  },
+  { // Entry 138
+    -0x1.0665ae9c7b44ed280216be2104f28f02p-7,
+    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
+    -0x1.0666666666666p-7,
+  },
+  { // Entry 139
+    0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
+    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
+    0x1.cccccccccccccp-7,
+  },
+  { // Entry 140
+    -0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
+    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
+    -0x1.cccccccccccccp-7,
+  },
+  { // Entry 141
+    0x1.4993e8a8ff79b132046efa7856a97538p-6,
+    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
+    0x1.4999999999999p-6,
+  },
+  { // Entry 142
+    -0x1.4993e8a8ff79b132046efa7856a97538p-6,
+    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
+    -0x1.4999999999999p-6,
+  },
+  { // Entry 143
+    0x1.acc044c56db0e19f82c9c3cff246e201p-6,
+    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
+    0x1.accccccccccccp-6,
+  },
+  { // Entry 144
+    -0x1.acc044c56db0e19f82c9c3cff246e201p-6,
+    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
+    -0x1.accccccccccccp-6,
+  },
+  { // Entry 145
+    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    0x1.080p-5,
+  },
+  { // Entry 146
+    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    -0x1.080p-5,
+  },
+  { // Entry 147
+    0x1.3985fe46f1c8714eaa1418561963e89bp-5,
+    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
+    0x1.399999999999ap-5,
+  },
+  { // Entry 148
+    -0x1.3985fe46f1c8714eaa1418561963e89bp-5,
+    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
+    -0x1.399999999999ap-5,
+  },
+  { // Entry 149
+    0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
+    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
+    0x1.6b33333333334p-5,
+  },
+  { // Entry 150
+    -0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
+    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
+    -0x1.6b33333333334p-5,
+  },
+  { // Entry 151
+    0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
+    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
+    0x1.9cccccccccccep-5,
+  },
+  { // Entry 152
+    -0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
+    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
+    -0x1.9cccccccccccep-5,
+  },
+  { // Entry 153
+    0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
+    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
+    0x1.ce66666666666p-5,
+  },
+  { // Entry 154
+    -0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
+    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
+    -0x1.ce66666666666p-5,
+  },
+  { // Entry 155
+    0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
+    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
+    0x1.5e7fc4369bdadp-1,
+  },
+  { // Entry 156
+    -0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
+    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
+    -0x1.5e7fc4369bdadp-1,
+  },
+  { // Entry 157
+    0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
+    0x1.0b5d3802fc7991140168f294eedd7904p-2,
+    0x1.4e7fc4369bdadp0,
+  },
+  { // Entry 158
+    -0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
+    0x1.0b5d3802fc7991140168f294eedd7904p-2,
+    -0x1.4e7fc4369bdadp0,
+  },
+  { // Entry 159
+    0x1.df8e22ea809d65c6a69b96aca60be432p-1,
+    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
+    0x1.edbfa651e9c84p0,
+  },
+  { // Entry 160
+    -0x1.df8e22ea809d65c6a69b96aca60be432p-1,
+    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
+    -0x1.edbfa651e9c84p0,
+  },
+  { // Entry 161
+    0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
+    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
+    0x1.467fc4369bdadp1,
+  },
+  { // Entry 162
+    -0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
+    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
+    -0x1.467fc4369bdadp1,
+  },
+  { // Entry 163
+    -0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
+    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
+    0x1.961fb54442d18p1,
+  },
+  { // Entry 164
+    0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
+    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
+    -0x1.961fb54442d18p1,
+  },
+  { // Entry 165
+    -0x1.3734d32d49bd0b942772a7567d514140p-1,
+    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
+    0x1.e5bfa651e9c83p1,
+  },
+  { // Entry 166
+    0x1.3734d32d49bd0b942772a7567d514140p-1,
+    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
+    -0x1.e5bfa651e9c83p1,
+  },
+  { // Entry 167
+    -0x1.e9d25d19911e205b653521f42b9b864fp-1,
+    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
+    0x1.1aafcbafc85f7p2,
+  },
+  { // Entry 168
+    0x1.e9d25d19911e205b653521f42b9b864fp-1,
+    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
+    -0x1.1aafcbafc85f7p2,
+  },
+  { // Entry 169
+    -0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
+    0x1.4894f695dc56bce8b273e5524f181264p-2,
+    0x1.427fc4369bdadp2,
+  },
+  { // Entry 170
+    0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
+    0x1.4894f695dc56bce8b273e5524f181264p-2,
+    -0x1.427fc4369bdadp2,
+  },
+  { // Entry 171
+    -0x1.2a59f1034426197fa6eee22762967f25p-1,
+    0x1.a016ea3a692ce0c321b77f168de39122p-1,
+    0x1.6a4fbcbd6f562p2,
+  },
+  { // Entry 172
+    0x1.2a59f1034426197fa6eee22762967f25p-1,
+    0x1.a016ea3a692ce0c321b77f168de39122p-1,
+    -0x1.6a4fbcbd6f562p2,
+  },
+  { // Entry 173
+    -0x1.26312443bd35f19312eac0a1a6b5659ep-1,
+    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
+    0x1.6af2eff0a2896p2,
+  },
+  { // Entry 174
+    0x1.26312443bd35f19312eac0a1a6b5659ep-1,
+    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
+    -0x1.6af2eff0a2896p2,
+  },
+  { // Entry 175
+    -0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
+    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
+    0x1.43c62a9d02414p2,
+  },
+  { // Entry 176
+    0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
+    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
+    -0x1.43c62a9d02414p2,
+  },
+  { // Entry 177
+    -0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
+    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
+    0x1.1c99654961f92p2,
+  },
+  { // Entry 178
+    0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
+    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
+    -0x1.1c99654961f92p2,
+  },
+  { // Entry 179
+    -0x1.4727747338e4653616eadbd7ec3d02d3p-1,
+    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
+    0x1.ead93feb8361fp1,
+  },
+  { // Entry 180
+    0x1.4727747338e4653616eadbd7ec3d02d3p-1,
+    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
+    -0x1.ead93feb8361fp1,
+  },
+  { // Entry 181
+    -0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
+    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
+    0x1.9c7fb54442d1ap1,
+  },
+  { // Entry 182
+    0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
+    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
+    -0x1.9c7fb54442d1ap1,
+  },
+  { // Entry 183
+    0x1.034c4d633b4ef0a9089b43892a462a26p-1,
+    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
+    0x1.4e262a9d02415p1,
+  },
+  { // Entry 184
+    -0x1.034c4d633b4ef0a9089b43892a462a26p-1,
+    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
+    -0x1.4e262a9d02415p1,
+  },
+  { // Entry 185
+    0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
+    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
+    0x1.ff993feb83620p0,
+  },
+  { // Entry 186
+    -0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
+    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
+    -0x1.ff993feb83620p0,
+  },
+  { // Entry 187
+    0x1.f750235c949926c48c90e41a91474c06p-1,
+    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
+    0x1.62e62a9d02416p0,
+  },
+  { // Entry 188
+    -0x1.f750235c949926c48c90e41a91474c06p-1,
+    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
+    -0x1.62e62a9d02416p0,
+  },
+  { // Entry 189
+    0x1.65f7d571279b0b8005552fd47a2e77aep-1,
+    0x1.6e1061205dd79051c112d30a05097c61p-1,
+    0x1.8c662a9d02419p-1,
+  },
+  { // Entry 190
+    -0x1.65f7d571279b0b8005552fd47a2e77aep-1,
+    0x1.6e1061205dd79051c112d30a05097c61p-1,
+    -0x1.8c662a9d02419p-1,
+  },
+  { // Entry 191
+    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    -0x1.a8aa1d11c44ffp0,
+  },
+  { // Entry 192
+    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    0x1.a8aa1d11c44ffp0,
+  },
+  { // Entry 193
+    -0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
+    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
+    -0x1.95ec8b9e03d54p0,
+  },
+  { // Entry 194
+    0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
+    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
+    0x1.95ec8b9e03d54p0,
+  },
+  { // Entry 195
+    -0x1.ff20d961624e7063a78203b811f579cap-1,
+    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
+    -0x1.832efa2a435a9p0,
+  },
+  { // Entry 196
+    0x1.ff20d961624e7063a78203b811f579cap-1,
+    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
+    0x1.832efa2a435a9p0,
+  },
+  { // Entry 197
+    -0x1.fb933c40107fd775185ac14918c8fbafp-1,
+    0x1.0cab9115640d993082a7343bb5affea2p-3,
+    -0x1.707168b682dfep0,
+  },
+  { // Entry 198
+    0x1.fb933c40107fd775185ac14918c8fbafp-1,
+    0x1.0cab9115640d993082a7343bb5affea2p-3,
+    0x1.707168b682dfep0,
+  },
+  { // Entry 199
+    -0x1.f54d971881ad685b782ef88e6350f7cdp-1,
+    0x1.a0723a95492edee5dc98394e45f96d88p-3,
+    -0x1.5db3d742c2653p0,
+  },
+  { // Entry 200
+    0x1.f54d971881ad685b782ef88e6350f7cdp-1,
+    0x1.a0723a95492edee5dc98394e45f96d88p-3,
+    0x1.5db3d742c2653p0,
+  },
+  { // Entry 201
+    -0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
+    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
+    -0x1.4af645cf01ea8p0,
+  },
+  { // Entry 202
+    0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
+    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
+    0x1.4af645cf01ea8p0,
+  },
+  { // Entry 203
+    -0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
+    0x1.6043621b13be2ff07085f8278598e566p-2,
+    -0x1.3838b45b416fdp0,
+  },
+  { // Entry 204
+    0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
+    0x1.6043621b13be2ff07085f8278598e566p-2,
+    0x1.3838b45b416fdp0,
+  },
+  { // Entry 205
+    -0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
+    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
+    -0x1.257b22e780f52p0,
+  },
+  { // Entry 206
+    0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
+    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
+    0x1.257b22e780f52p0,
+  },
+  { // Entry 207
+    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    -0x1.12bd9173c07abp0,
+  },
+  { // Entry 208
+    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    0x1.12bd9173c07abp0,
+  },
+  { // Entry 209
+    -0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
+    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
+    -0x1.ea5c3ed5b3850p-1,
+  },
+  { // Entry 210
+    0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
+    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
+    0x1.ea5c3ed5b3850p-1,
+  },
+  { // Entry 211
+    -0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
+    0x1.3805a1882009f2843da808e959f17861p-1,
+    -0x1.d4b87dab670a0p-1,
+  },
+  { // Entry 212
+    0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
+    0x1.3805a1882009f2843da808e959f17861p-1,
+    0x1.d4b87dab670a0p-1,
+  },
+  { // Entry 213
+    -0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
+    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
+    -0x1.bf14bc811a8f0p-1,
+  },
+  { // Entry 214
+    0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
+    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
+    0x1.bf14bc811a8f0p-1,
+  },
+  { // Entry 215
+    -0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
+    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
+    -0x1.a970fb56ce140p-1,
+  },
+  { // Entry 216
+    0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
+    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
+    0x1.a970fb56ce140p-1,
+  },
+  { // Entry 217
+    -0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
+    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
+    -0x1.93cd3a2c81990p-1,
+  },
+  { // Entry 218
+    0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
+    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
+    0x1.93cd3a2c81990p-1,
+  },
+  { // Entry 219
+    -0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
+    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
+    -0x1.7e297902351e0p-1,
+  },
+  { // Entry 220
+    0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
+    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
+    0x1.7e297902351e0p-1,
+  },
+  { // Entry 221
+    -0x1.4b75ba096fa549eb93595d8194ab917fp-1,
+    0x1.863a850e438fe029302aba0f5f127616p-1,
+    -0x1.6885b7d7e8a30p-1,
+  },
+  { // Entry 222
+    0x1.4b75ba096fa549eb93595d8194ab917fp-1,
+    0x1.863a850e438fe029302aba0f5f127616p-1,
+    0x1.6885b7d7e8a30p-1,
+  },
+  { // Entry 223
+    -0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
+    0x1.93e2948233fce814439ed51fd2548920p-1,
+    -0x1.52e1f6ad9c280p-1,
+  },
+  { // Entry 224
+    0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
+    0x1.93e2948233fce814439ed51fd2548920p-1,
+    0x1.52e1f6ad9c280p-1,
+  },
+  { // Entry 225
+    -0x1.295463e769284a5aed17a443392f38f3p-1,
+    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
+    -0x1.3d3e35834fad0p-1,
+  },
+  { // Entry 226
+    0x1.295463e769284a5aed17a443392f38f3p-1,
+    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
+    0x1.3d3e35834fad0p-1,
+  },
+  { // Entry 227
+    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    -0x1.0a0b02501c799p-1,
+  },
+  { // Entry 228
+    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    0x1.0a0b02501c799p-1,
+  },
+  { // Entry 229
+    -0x1.c853c78462de46b5743315612f8b5a7cp-2,
+    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
+    -0x1.d8f7208e6b82cp-2,
+  },
+  { // Entry 230
+    0x1.c853c78462de46b5743315612f8b5a7cp-2,
+    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
+    0x1.d8f7208e6b82cp-2,
+  },
+  { // Entry 231
+    -0x1.92aba90aaf27249de49c78fc643c8b72p-2,
+    0x1.d6c0b125791cffce83e32564712b78c6p-1,
+    -0x1.9dd83c7c9e126p-2,
+  },
+  { // Entry 232
+    0x1.92aba90aaf27249de49c78fc643c8b72p-2,
+    0x1.d6c0b125791cffce83e32564712b78c6p-1,
+    0x1.9dd83c7c9e126p-2,
+  },
+  { // Entry 233
+    -0x1.5bac064658f39460c83113c0a0097a0cp-2,
+    0x1.e1960261829858391645bbe12019e58ap-1,
+    -0x1.62b9586ad0a20p-2,
+  },
+  { // Entry 234
+    0x1.5bac064658f39460c83113c0a0097a0cp-2,
+    0x1.e1960261829858391645bbe12019e58ap-1,
+    0x1.62b9586ad0a20p-2,
+  },
+  { // Entry 235
+    -0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
+    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
+    -0x1.279a74590331ap-2,
+  },
+  { // Entry 236
+    0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
+    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
+    0x1.279a74590331ap-2,
+  },
+  { // Entry 237
+    -0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
+    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
+    -0x1.d8f7208e6b829p-3,
+  },
+  { // Entry 238
+    0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
+    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
+    0x1.d8f7208e6b829p-3,
+  },
+  { // Entry 239
+    -0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
+    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
+    -0x1.62b9586ad0a1ep-3,
+  },
+  { // Entry 240
+    0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
+    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
+    0x1.62b9586ad0a1ep-3,
+  },
+  { // Entry 241
+    -0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
+    0x1.fc97283a424797215f8a8d1967736c9bp-1,
+    -0x1.d8f7208e6b826p-4,
+  },
+  { // Entry 242
+    0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
+    0x1.fc97283a424797215f8a8d1967736c9bp-1,
+    0x1.d8f7208e6b826p-4,
+  },
+  { // Entry 243
+    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    -0x1.d8f7208e6b82dp-5,
+  },
+  { // Entry 244
+    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    0x1.d8f7208e6b82dp-5,
+  },
+  { // Entry 245
+    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    0x1.d8f7208e6b82dp-5,
+  },
+  { // Entry 246
+    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
+    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
+    -0x1.d8f7208e6b82dp-5,
+  },
+  { // Entry 247
+    0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
+    0x1.fc97283a424795847294654a1d8a08edp-1,
+    0x1.d8f7208e6b82dp-4,
+  },
+  { // Entry 248
+    -0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
+    0x1.fc97283a424795847294654a1d8a08edp-1,
+    -0x1.d8f7208e6b82dp-4,
+  },
+  { // Entry 249
+    0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
+    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
+    0x1.62b9586ad0a22p-3,
+  },
+  { // Entry 250
+    -0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
+    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
+    -0x1.62b9586ad0a22p-3,
+  },
+  { // Entry 251
+    0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
+    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
+    0x1.d8f7208e6b82dp-3,
+  },
+  { // Entry 252
+    -0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
+    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
+    -0x1.d8f7208e6b82dp-3,
+  },
+  { // Entry 253
+    0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
+    0x1.ead07cc6356960546ae634ef62621fb2p-1,
+    0x1.279a74590331cp-2,
+  },
+  { // Entry 254
+    -0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
+    0x1.ead07cc6356960546ae634ef62621fb2p-1,
+    -0x1.279a74590331cp-2,
+  },
+  { // Entry 255
+    0x1.5bac064658f3b27a28572bea256195efp-2,
+    0x1.e1960261829852ca662ca27d518c2fa9p-1,
+    0x1.62b9586ad0a22p-2,
+  },
+  { // Entry 256
+    -0x1.5bac064658f3b27a28572bea256195efp-2,
+    0x1.e1960261829852ca662ca27d518c2fa9p-1,
+    -0x1.62b9586ad0a22p-2,
+  },
+  { // Entry 257
+    0x1.92aba90aaf274209efaed08e34071e3bp-2,
+    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
+    0x1.9dd83c7c9e128p-2,
+  },
+  { // Entry 258
+    -0x1.92aba90aaf274209efaed08e34071e3bp-2,
+    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
+    -0x1.9dd83c7c9e128p-2,
+  },
+  { // Entry 259
+    0x1.c853c78462de635b10a2b93afd75da26p-2,
+    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
+    0x1.d8f7208e6b82ep-2,
+  },
+  { // Entry 260
+    -0x1.c853c78462de635b10a2b93afd75da26p-2,
+    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
+    -0x1.d8f7208e6b82ep-2,
+  },
+  { // Entry 261
+    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    0x1.0a0b02501c799p-1,
+  },
+  { // Entry 262
+    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
+    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
+    -0x1.0a0b02501c799p-1,
+  },
+  { // Entry 263
+    0x1.295463e769281640ae026f50fc45e301p-1,
+    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
+    0x1.3d3e35834faccp-1,
+  },
+  { // Entry 264
+    -0x1.295463e769281640ae026f50fc45e301p-1,
+    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
+    -0x1.3d3e35834faccp-1,
+  },
+  { // Entry 265
+    0x1.3aacff95a311f899a0e279535e81c4ecp-1,
+    0x1.93e2948233fd0f69e3918982148f8265p-1,
+    0x1.52e1f6ad9c27cp-1,
+  },
+  { // Entry 266
+    -0x1.3aacff95a311f899a0e279535e81c4ecp-1,
+    0x1.93e2948233fd0f69e3918982148f8265p-1,
+    -0x1.52e1f6ad9c27cp-1,
+  },
+  { // Entry 267
+    0x1.4b75ba096fa5192442b7950f960f8006p-1,
+    0x1.863a850e43900997e76be80405437377p-1,
+    0x1.6885b7d7e8a2cp-1,
+  },
+  { // Entry 268
+    -0x1.4b75ba096fa5192442b7950f960f8006p-1,
+    0x1.863a850e43900997e76be80405437377p-1,
+    -0x1.6885b7d7e8a2cp-1,
+  },
+  { // Entry 269
+    0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
+    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
+    0x1.7e297902351dcp-1,
+  },
+  { // Entry 270
+    -0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
+    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
+    -0x1.7e297902351dcp-1,
+  },
+  { // Entry 271
+    0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
+    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
+    0x1.93cd3a2c8198cp-1,
+  },
+  { // Entry 272
+    -0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
+    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
+    -0x1.93cd3a2c8198cp-1,
+  },
+  { // Entry 273
+    0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
+    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
+    0x1.a970fb56ce13cp-1,
+  },
+  { // Entry 274
+    -0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
+    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
+    -0x1.a970fb56ce13cp-1,
+  },
+  { // Entry 275
+    0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
+    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
+    0x1.bf14bc811a8ecp-1,
+  },
+  { // Entry 276
+    -0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
+    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
+    -0x1.bf14bc811a8ecp-1,
+  },
+  { // Entry 277
+    0x1.95f05257dbcb384a5e326857376dd801p-1,
+    0x1.3805a188200a254247f30462c36acf6ap-1,
+    0x1.d4b87dab6709cp-1,
+  },
+  { // Entry 278
+    -0x1.95f05257dbcb384a5e326857376dd801p-1,
+    0x1.3805a188200a254247f30462c36acf6ap-1,
+    -0x1.d4b87dab6709cp-1,
+  },
+  { // Entry 279
+    0x1.a2c289d9d0558764921a4de355f9448cp-1,
+    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
+    0x1.ea5c3ed5b384cp-1,
+  },
+  { // Entry 280
+    -0x1.a2c289d9d0558764921a4de355f9448cp-1,
+    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
+    -0x1.ea5c3ed5b384cp-1,
+  },
+  { // Entry 281
+    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    0x1.12bd9173c07abp0,
+  },
+  { // Entry 282
+    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
+    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
+    -0x1.12bd9173c07abp0,
+  },
+  { // Entry 283
+    0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
+    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
+    0x1.257b22e780f56p0,
+  },
+  { // Entry 284
+    -0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
+    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
+    -0x1.257b22e780f56p0,
+  },
+  { // Entry 285
+    0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
+    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
+    0x1.3838b45b41701p0,
+  },
+  { // Entry 286
+    -0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
+    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
+    -0x1.3838b45b41701p0,
+  },
+  { // Entry 287
+    0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
+    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
+    0x1.4af645cf01eacp0,
+  },
+  { // Entry 288
+    -0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
+    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
+    -0x1.4af645cf01eacp0,
+  },
+  { // Entry 289
+    0x1.f54d971881ad82629bd84d214194e8ddp-1,
+    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
+    0x1.5db3d742c2657p0,
+  },
+  { // Entry 290
+    -0x1.f54d971881ad82629bd84d214194e8ddp-1,
+    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
+    -0x1.5db3d742c2657p0,
+  },
+  { // Entry 291
+    0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
+    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
+    0x1.707168b682e02p0,
+  },
+  { // Entry 292
+    -0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
+    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
+    -0x1.707168b682e02p0,
+  },
+  { // Entry 293
+    0x1.ff20d961624e77daef329b4029c362dep-1,
+    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
+    0x1.832efa2a435adp0,
+  },
+  { // Entry 294
+    -0x1.ff20d961624e77daef329b4029c362dep-1,
+    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
+    -0x1.832efa2a435adp0,
+  },
+  { // Entry 295
+    0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
+    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
+    0x1.95ec8b9e03d58p0,
+  },
+  { // Entry 296
+    -0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
+    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
+    -0x1.95ec8b9e03d58p0,
+  },
+  { // Entry 297
+    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    0x1.a8aa1d11c44ffp0,
+  },
+  { // Entry 298
+    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
+    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
+    -0x1.a8aa1d11c44ffp0,
+  },
+  { // Entry 299
+    0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
+    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
+    0x1.04aff6d330942p0,
+  },
+  { // Entry 300
+    -0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
+    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
+    -0x1.04aff6d330942p0,
+  },
+  { // Entry 301
+    0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
+    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
+    0x1.04b09e98dcdb4p0,
+  },
+  { // Entry 302
+    -0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
+    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
+    -0x1.04b09e98dcdb4p0,
+  },
+  { // Entry 303
+    0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
+    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
+    0x1.04b1465e89226p0,
+  },
+  { // Entry 304
+    -0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
+    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
+    -0x1.04b1465e89226p0,
+  },
+  { // Entry 305
+    0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
+    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
+    0x1.04b1ee2435698p0,
+  },
+  { // Entry 306
+    -0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
+    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
+    -0x1.04b1ee2435698p0,
+  },
+  { // Entry 307
+    0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
+    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
+    0x1.04b295e9e1b0ap0,
+  },
+  { // Entry 308
+    -0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
+    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
+    -0x1.04b295e9e1b0ap0,
+  },
+  { // Entry 309
+    0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
+    0x1.0cadb27753d65785e06d0e464006149ep-1,
+    0x1.04b33daf8df7cp0,
+  },
+  { // Entry 310
+    -0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
+    0x1.0cadb27753d65785e06d0e464006149ep-1,
+    -0x1.04b33daf8df7cp0,
+  },
+  { // Entry 311
+    0x1.b3d789e035e8948dab275dfe546c5b08p-1,
+    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
+    0x1.04b3e5753a3eep0,
+  },
+  { // Entry 312
+    -0x1.b3d789e035e8948dab275dfe546c5b08p-1,
+    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
+    -0x1.04b3e5753a3eep0,
+  },
+  { // Entry 313
+    0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
+    0x1.0cab7733099df738645574cd482ef4b2p-1,
+    0x1.04b48d3ae6860p0,
+  },
+  { // Entry 314
+    -0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
+    0x1.0cab7733099df738645574cd482ef4b2p-1,
+    -0x1.04b48d3ae6860p0,
+  },
+  { // Entry 315
+    0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
+    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
+    0x1.04b5350092ccfp0,
+  },
+  { // Entry 316
+    -0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
+    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
+    -0x1.04b5350092ccfp0,
+  },
+  { // Entry 317
+    -0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+  },
+  { // Entry 318
+    0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074,
+  },
+  { // Entry 319
+    -0.0,
+    0x1.p0,
+    -0.0,
+  },
+  { // Entry 320
+    0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074,
+  },
+  { // Entry 321
+    -0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+  },
+  { // Entry 322
+    0x1.1773d561fd5065d0e9607a728a39eed2p-1,
+    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
+    0x1.279a74590331bp-1,
+  },
+  { // Entry 323
+    -0x1.1773d561fd5065d0e9607a728a39eed2p-1,
+    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
+    -0x1.279a74590331bp-1,
+  },
+  { // Entry 324
+    0x1.1773d561fd507338ff9c088d80c680dbp-1,
+    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
+    0x1.279a74590331cp-1,
+  },
+  { // Entry 325
+    -0x1.1773d561fd507338ff9c088d80c680dbp-1,
+    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
+    -0x1.279a74590331cp-1,
+  },
+  { // Entry 326
+    0x1.1773d561fd5080a115d796a8770d35efp-1,
+    0x1.ad02c771c35ec478d333803762f450d5p-1,
+    0x1.279a74590331dp-1,
+  },
+  { // Entry 327
+    -0x1.1773d561fd5080a115d796a8770d35efp-1,
+    0x1.ad02c771c35ec478d333803762f450d5p-1,
+    -0x1.279a74590331dp-1,
+  },
+  { // Entry 328
+    0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
+    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
+    0x1.bb67ae8584ca9p0,
+  },
+  { // Entry 329
+    -0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
+    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
+    -0x1.bb67ae8584ca9p0,
+  },
+  { // Entry 330
+    0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
+    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
+    0x1.bb67ae8584caap0,
+  },
+  { // Entry 331
+    -0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
+    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
+    -0x1.bb67ae8584caap0,
+  },
+  { // Entry 332
+    0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
+    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
+    0x1.bb67ae8584cabp0,
+  },
+  { // Entry 333
+    -0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
+    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
+    -0x1.bb67ae8584cabp0,
+  },
+  { // Entry 334
+    0x1.b1d8305321615ac938cff02be9f25085p-2,
+    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
+    0x1.bffffffffffffp-2,
+  },
+  { // Entry 335
+    -0x1.b1d8305321615ac938cff02be9f25085p-2,
+    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
+    -0x1.bffffffffffffp-2,
+  },
+  { // Entry 336
+    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    0x1.cp-2,
+  },
+  { // Entry 337
+    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    -0x1.cp-2,
+  },
+  { // Entry 338
+    0x1.b1d83053216177c5a5ca42d98955275ap-2,
+    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
+    0x1.c000000000001p-2,
+  },
+  { // Entry 339
+    -0x1.b1d83053216177c5a5ca42d98955275ap-2,
+    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
+    -0x1.c000000000001p-2,
+  },
+  { // Entry 340
+    0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
+    0x1.8bb105a5dc90104051d08cb965631807p-1,
+    0x1.5ffffffffffffp-1,
+  },
+  { // Entry 341
+    -0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
+    0x1.8bb105a5dc90104051d08cb965631807p-1,
+    -0x1.5ffffffffffffp-1,
+  },
+  { // Entry 342
+    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    0x1.6p-1,
+  },
+  { // Entry 343
+    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    -0x1.6p-1,
+  },
+  { // Entry 344
+    0x1.44eb381cf386b7622d25944f3eb035dcp-1,
+    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
+    0x1.6000000000001p-1,
+  },
+  { // Entry 345
+    -0x1.44eb381cf386b7622d25944f3eb035dcp-1,
+    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
+    -0x1.6000000000001p-1,
+  },
+  { // Entry 346
+    0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
+    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
+    0x1.2ffffffffffffp0,
+  },
+  { // Entry 347
+    -0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
+    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
+    -0x1.2ffffffffffffp0,
+  },
+  { // Entry 348
+    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    0x1.3p0,
+  },
+  { // Entry 349
+    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    -0x1.3p0,
+  },
+  { // Entry 350
+    0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
+    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
+    0x1.3000000000001p0,
+  },
+  { // Entry 351
+    -0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
+    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
+    -0x1.3000000000001p0,
+  },
+  { // Entry 352
+    0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
+    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
+    0x1.37fffffffffffp1,
+  },
+  { // Entry 353
+    -0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
+    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
+    -0x1.37fffffffffffp1,
+  },
+  { // Entry 354
+    0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    0x1.380p1,
+  },
+  { // Entry 355
+    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    -0x1.380p1,
+  },
+  { // Entry 356
+    0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
+    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
+    0x1.3800000000001p1,
+  },
+  { // Entry 357
+    -0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
+    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
+    -0x1.3800000000001p1,
+  },
+  { // Entry 358
+    0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
+    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
+    0x1.069c8b46b3792p-4,
+  },
+  { // Entry 359
+    -0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
+    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
+    -0x1.069c8b46b3792p-4,
+  },
+  { // Entry 360
+    0x1.05e4761ab8d8f0a7dba834000f236650p-3,
+    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
+    0x1.069c8b46b3792p-3,
+  },
+  { // Entry 361
+    -0x1.05e4761ab8d8f0a7dba834000f236650p-3,
+    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
+    -0x1.069c8b46b3792p-3,
+  },
+  { // Entry 362
+    0x1.877e2cd4f6fd9ba498e327053032734fp-3,
+    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
+    0x1.89ead0ea0d35bp-3,
+  },
+  { // Entry 363
+    -0x1.877e2cd4f6fd9ba498e327053032734fp-3,
+    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
+    -0x1.89ead0ea0d35bp-3,
+  },
+  { // Entry 364
+    0x1.03be06f97cbee47698539f977cadbe7ep-2,
+    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
+    0x1.069c8b46b3792p-2,
+  },
+  { // Entry 365
+    -0x1.03be06f97cbee47698539f977cadbe7ep-2,
+    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
+    -0x1.069c8b46b3792p-2,
+  },
+  { // Entry 366
+    0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
+    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
+    0x1.4843ae1860576p-2,
+  },
+  { // Entry 367
+    -0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
+    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
+    -0x1.4843ae1860576p-2,
+  },
+  { // Entry 368
+    0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
+    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
+    0x1.89ead0ea0d35ap-2,
+  },
+  { // Entry 369
+    -0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
+    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
+    -0x1.89ead0ea0d35ap-2,
+  },
+  { // Entry 370
+    0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
+    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
+    0x1.cb91f3bbba13ep-2,
+  },
+  { // Entry 371
+    -0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
+    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
+    -0x1.cb91f3bbba13ep-2,
+  },
+  { // Entry 372
+    0x1.f67ea975b86a01510e6bde3778138934p-2,
+    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
+    0x1.069c8b46b3791p-1,
+  },
+  { // Entry 373
+    -0x1.f67ea975b86a01510e6bde3778138934p-2,
+    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
+    -0x1.069c8b46b3791p-1,
+  },
+  { // Entry 374
+    0x1.175059bf0d42524ecb0bf4243b55973dp-1,
+    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
+    0x1.27701caf89e83p-1,
+  },
+  { // Entry 375
+    -0x1.175059bf0d42524ecb0bf4243b55973dp-1,
+    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
+    -0x1.27701caf89e83p-1,
+  },
+  { // Entry 376
+    0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
+    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
+    0x1.4843ae1860575p-1,
+  },
+  { // Entry 377
+    -0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
+    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
+    -0x1.4843ae1860575p-1,
+  },
+  { // Entry 378
+    0x1.4be4979c5efb306c1a77024032849b52p-1,
+    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
+    0x1.69173f8136c67p-1,
+  },
+  { // Entry 379
+    -0x1.4be4979c5efb306c1a77024032849b52p-1,
+    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
+    -0x1.69173f8136c67p-1,
+  },
+  { // Entry 380
+    0x1.643080d67acc1332c64a85612cacafb9p-1,
+    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
+    0x1.89ead0ea0d359p-1,
+  },
+  { // Entry 381
+    -0x1.643080d67acc1332c64a85612cacafb9p-1,
+    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
+    -0x1.89ead0ea0d359p-1,
+  },
+  { // Entry 382
+    0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
+    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
+    0x1.aabe6252e3a4bp-1,
+  },
+  { // Entry 383
+    -0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
+    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
+    -0x1.aabe6252e3a4bp-1,
+  },
+  { // Entry 384
+    0x1.904c37505de48fa8e76287960fd44594p-1,
+    0x1.3f3a0e28bedd40445858f823e150264bp-1,
+    0x1.cb91f3bbba13dp-1,
+  },
+  { // Entry 385
+    -0x1.904c37505de48fa8e76287960fd44594p-1,
+    0x1.3f3a0e28bedd40445858f823e150264bp-1,
+    -0x1.cb91f3bbba13dp-1,
+  },
+  { // Entry 386
+    0x1.a3ed9e252938a14c79c575639c15a91dp-1,
+    0x1.24ec799171642dbd24d259005822bd25p-1,
+    0x1.ec6585249082fp-1,
+  },
+  { // Entry 387
+    -0x1.a3ed9e252938a14c79c575639c15a91dp-1,
+    0x1.24ec799171642dbd24d259005822bd25p-1,
+    -0x1.ec6585249082fp-1,
+  },
+  { // Entry 388
+    0x1.b5d545b109bf935594036798cf40c9b0p-1,
+    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
+    0x1.069c8b46b3791p0,
+  },
+  { // Entry 389
+    -0x1.b5d545b109bf935594036798cf40c9b0p-1,
+    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
+    -0x1.069c8b46b3791p0,
+  },
+  { // Entry 390
+    0x1.c5f058230e7fd14d3e5e315349f699efp-1,
+    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
+    0x1.170653fb1eb0ap0,
+  },
+  { // Entry 391
+    -0x1.c5f058230e7fd14d3e5e315349f699efp-1,
+    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
+    -0x1.170653fb1eb0ap0,
+  },
+  { // Entry 392
+    0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
+    0x1.9e7f8652b47582afd29744293170c07cp-2,
+    0x1.27701caf89e83p0,
+  },
+  { // Entry 393
+    -0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
+    0x1.9e7f8652b47582afd29744293170c07cp-2,
+    -0x1.27701caf89e83p0,
+  },
+  { // Entry 394
+    0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
+    0x1.61a76077aee07bb349ca76cf700913d1p-2,
+    0x1.37d9e563f51fcp0,
+  },
+  { // Entry 395
+    -0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
+    0x1.61a76077aee07bb349ca76cf700913d1p-2,
+    -0x1.37d9e563f51fcp0,
+  },
+  { // Entry 396
+    0x1.ead6834909b93371faf3beaddbd60eddp-1,
+    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
+    0x1.4843ae1860575p0,
+  },
+  { // Entry 397
+    -0x1.ead6834909b93371faf3beaddbd60eddp-1,
+    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
+    -0x1.4843ae1860575p0,
+  },
+  { // Entry 398
+    0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
+    0x1.c7b90e3024593da8449963cfe08dde85p-3,
+    0x1.58ad76cccb8eep0,
+  },
+  { // Entry 399
+    -0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
+    0x1.c7b90e3024593da8449963cfe08dde85p-3,
+    -0x1.58ad76cccb8eep0,
+  },
+  { // Entry 400
+    0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
+    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
+    0x1.69173f8136c67p0,
+  },
+  { // Entry 401
+    -0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
+    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
+    -0x1.69173f8136c67p0,
+  },
+  { // Entry 402
+    0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
+    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
+    0x1.79810835a1fe0p0,
+  },
+  { // Entry 403
+    -0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
+    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
+    -0x1.79810835a1fe0p0,
+  },
+  { // Entry 404
+    0x1.ffbca846c4fc997f1a381420208884e0p-1,
+    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
+    0x1.89ead0ea0d359p0,
+  },
+  { // Entry 405
+    -0x1.ffbca846c4fc997f1a381420208884e0p-1,
+    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
+    -0x1.89ead0ea0d359p0,
+  },
+  { // Entry 406
+    0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
+    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
+    0x1.9a54999e786d2p0,
+  },
+  { // Entry 407
+    -0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
+    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
+    -0x1.9a54999e786d2p0,
+  },
+  { // Entry 408
+    0x1.fda254c27a0205875f271435f827160cp-1,
+    -0x1.894f70befbb41417dff843e81fac388bp-4,
+    0x1.aabe6252e3a4bp0,
+  },
+  { // Entry 409
+    -0x1.fda254c27a0205875f271435f827160cp-1,
+    -0x1.894f70befbb41417dff843e81fac388bp-4,
+    -0x1.aabe6252e3a4bp0,
+  },
+  { // Entry 410
+    0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
+    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
+    0x1.bb282b074edc4p0,
+  },
+  { // Entry 411
+    -0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
+    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
+    -0x1.bb282b074edc4p0,
+  },
+  { // Entry 412
+    0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
+    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
+    0x1.cb91f3bbba13dp0,
+  },
+  { // Entry 413
+    -0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
+    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
+    -0x1.cb91f3bbba13dp0,
+  },
+  { // Entry 414
+    0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
+    -0x1.235b331d8f7339841a517312d0d347fbp-2,
+    0x1.dbfbbc70254b6p0,
+  },
+  { // Entry 415
+    -0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
+    -0x1.235b331d8f7339841a517312d0d347fbp-2,
+    -0x1.dbfbbc70254b6p0,
+  },
+  { // Entry 416
+    0x1.e07eeeda109cf25f400cd5f46acec887p-1,
+    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
+    0x1.ec6585249082fp0,
+  },
+  { // Entry 417
+    -0x1.e07eeeda109cf25f400cd5f46acec887p-1,
+    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
+    -0x1.ec6585249082fp0,
+  },
+  { // Entry 418
+    0x1.d42de42dce138e890939e56c439ded90p-1,
+    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
+    0x1.fccf4dd8fbba8p0,
+  },
+  { // Entry 419
+    -0x1.d42de42dce138e890939e56c439ded90p-1,
+    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
+    -0x1.fccf4dd8fbba8p0,
+  },
+  { // Entry 420
+    0x1.c5f058230e8014ab83ece0c3a638c079p-1,
+    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
+    0x1.069c8b46b3791p1,
+  },
+  { // Entry 421
+    -0x1.c5f058230e8014ab83ece0c3a638c079p-1,
+    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
+    -0x1.069c8b46b3791p1,
+  },
+  { // Entry 422
+    0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
+    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
+    0x1.0ed16fa0e914ep1,
+  },
+  { // Entry 423
+    -0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
+    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
+    -0x1.0ed16fa0e914ep1,
+  },
+  { // Entry 424
+    0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
+    -0x1.24ec79917163dda65afd8109f59cb465p-1,
+    0x1.170653fb1eb0bp1,
+  },
+  { // Entry 425
+    -0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
+    -0x1.24ec79917163dda65afd8109f59cb465p-1,
+    -0x1.170653fb1eb0bp1,
+  },
+  { // Entry 426
+    0x1.904c37505de4b8975dd2730e196ddfc3p-1,
+    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
+    0x1.1f3b3855544c8p1,
+  },
+  { // Entry 427
+    -0x1.904c37505de4b8975dd2730e196ddfc3p-1,
+    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
+    -0x1.1f3b3855544c8p1,
+  },
+  { // Entry 428
+    0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
+    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
+    0x1.27701caf89e85p1,
+  },
+  { // Entry 429
+    -0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
+    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
+    -0x1.27701caf89e85p1,
+  },
+  { // Entry 430
+    0x1.643080d67acc14620672dda6241ea305p-1,
+    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
+    0x1.2fa50109bf842p1,
+  },
+  { // Entry 431
+    -0x1.643080d67acc14620672dda6241ea305p-1,
+    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
+    -0x1.2fa50109bf842p1,
+  },
+  { // Entry 432
+    0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
+    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
+    0x1.37d9e563f51ffp1,
+  },
+  { // Entry 433
+    -0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
+    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
+    -0x1.37d9e563f51ffp1,
+  },
+  { // Entry 434
+    0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
+    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
+    0x1.400ec9be2abbcp1,
+  },
+  { // Entry 435
+    -0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
+    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
+    -0x1.400ec9be2abbcp1,
+  },
+  { // Entry 436
+    0x1.175059bf0d42033bbcf598c88b176e61p-1,
+    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
+    0x1.4843ae1860579p1,
+  },
+  { // Entry 437
+    -0x1.175059bf0d42033bbcf598c88b176e61p-1,
+    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
+    -0x1.4843ae1860579p1,
+  },
+  { // Entry 438
+    0x1.f67ea975b8692521f77d6754b302c5c4p-2,
+    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
+    0x1.5078927295f36p1,
+  },
+  { // Entry 439
+    -0x1.f67ea975b8692521f77d6754b302c5c4p-2,
+    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
+    -0x1.5078927295f36p1,
+  },
+  { // Entry 440
+    0x1.bc4c04d71abad14efc29a66342ada723p-2,
+    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
+    0x1.58ad76cccb8f3p1,
+  },
+  { // Entry 441
+    -0x1.bc4c04d71abad14efc29a66342ada723p-2,
+    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
+    -0x1.58ad76cccb8f3p1,
+  },
+  { // Entry 442
+    0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
+    -0x1.da94d54dd4c0cedccd73684994422740p-1,
+    0x1.60e25b27012b0p1,
+  },
+  { // Entry 443
+    -0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
+    -0x1.da94d54dd4c0cedccd73684994422740p-1,
+    -0x1.60e25b27012b0p1,
+  },
+  { // Entry 444
+    0x1.42abba8c72fa12be920b316627512e41p-2,
+    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
+    0x1.69173f8136c6dp1,
+  },
+  { // Entry 445
+    -0x1.42abba8c72fa12be920b316627512e41p-2,
+    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
+    -0x1.69173f8136c6dp1,
+  },
+  { // Entry 446
+    0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
+    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
+    0x1.714c23db6c62ap1,
+  },
+  { // Entry 447
+    -0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
+    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
+    -0x1.714c23db6c62ap1,
+  },
+  { // Entry 448
+    0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
+    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
+    0x1.79810835a1fe7p1,
+  },
+  { // Entry 449
+    -0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
+    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
+    -0x1.79810835a1fe7p1,
+  },
+  { // Entry 450
+    0x1.05e4761ab8d421719567717f76712867p-3,
+    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
+    0x1.81b5ec8fd79a4p1,
+  },
+  { // Entry 451
+    -0x1.05e4761ab8d421719567717f76712867p-3,
+    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
+    -0x1.81b5ec8fd79a4p1,
+  },
+  { // Entry 452
+    0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
+    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
+    0x1.89ead0ea0d35bp1,
+  },
+  { // Entry 453
+    -0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
+    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
+    -0x1.89ead0ea0d35bp1,
+  },
+  { // Entry 454
+    0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
+    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
+    -0x1.81b5ec8fd799fp2,
+  },
+  { // Entry 455
+    -0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
+    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
+    0x1.81b5ec8fd799fp2,
+  },
+  { // Entry 456
+    0x1.f67ea975b86a22f2348778824f95d84ap-2,
+    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
+    -0x1.714c23db6c626p2,
+  },
+  { // Entry 457
+    -0x1.f67ea975b86a22f2348778824f95d84ap-2,
+    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
+    0x1.714c23db6c626p2,
+  },
+  { // Entry 458
+    0x1.643080d67acc210fa27e9247a8286220p-1,
+    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
+    -0x1.60e25b27012adp2,
+  },
+  { // Entry 459
+    -0x1.643080d67acc210fa27e9247a8286220p-1,
+    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
+    0x1.60e25b27012adp2,
+  },
+  { // Entry 460
+    0x1.b5d545b109bf950b419702972b94f8fap-1,
+    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
+    -0x1.5078927295f34p2,
+  },
+  { // Entry 461
+    -0x1.b5d545b109bf950b419702972b94f8fap-1,
+    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
+    0x1.5078927295f34p2,
+  },
+  { // Entry 462
+    0x1.ead6834909b9346234dbb601d0486cf2p-1,
+    0x1.235b331d8f7487ce2db97819fae7777cp-2,
+    -0x1.400ec9be2abbbp2,
+  },
+  { // Entry 463
+    -0x1.ead6834909b9346234dbb601d0486cf2p-1,
+    0x1.235b331d8f7487ce2db97819fae7777cp-2,
+    0x1.400ec9be2abbbp2,
+  },
+  { // Entry 464
+    0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
+    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
+    -0x1.2fa50109bf842p2,
+  },
+  { // Entry 465
+    -0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
+    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
+    0x1.2fa50109bf842p2,
+  },
+  { // Entry 466
+    0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
+    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
+    -0x1.1f3b3855544c9p2,
+  },
+  { // Entry 467
+    -0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
+    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
+    0x1.1f3b3855544c9p2,
+  },
+  { // Entry 468
+    0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
+    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
+    -0x1.0ed16fa0e9150p2,
+  },
+  { // Entry 469
+    -0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
+    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
+    0x1.0ed16fa0e9150p2,
+  },
+  { // Entry 470
+    0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
+    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
+    -0x1.fccf4dd8fbbaep1,
+  },
+  { // Entry 471
+    -0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
+    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
+    0x1.fccf4dd8fbbaep1,
+  },
+  { // Entry 472
+    0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
+    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
+    -0x1.dbfbbc70254bcp1,
+  },
+  { // Entry 473
+    -0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
+    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
+    0x1.dbfbbc70254bcp1,
+  },
+  { // Entry 474
+    0x1.42abba8c72fd22194793246b8d19960ap-2,
+    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
+    -0x1.bb282b074edcap1,
+  },
+  { // Entry 475
+    -0x1.42abba8c72fd22194793246b8d19960ap-2,
+    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
+    0x1.bb282b074edcap1,
+  },
+  { // Entry 476
+    0x1.066e7eb76f62b5f4563de26dca890017p-4,
+    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
+    -0x1.9a54999e786d8p1,
+  },
+  { // Entry 477
+    -0x1.066e7eb76f62b5f4563de26dca890017p-4,
+    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
+    0x1.9a54999e786d8p1,
+  },
+  { // Entry 478
+    -0x1.877e2cd4f6fa42586875c5250a169e48p-3,
+    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
+    -0x1.79810835a1fe6p1,
+  },
+  { // Entry 479
+    0x1.877e2cd4f6fa42586875c5250a169e48p-3,
+    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
+    0x1.79810835a1fe6p1,
+  },
+  { // Entry 480
+    -0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
+    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
+    -0x1.58ad76cccb8f4p1,
+  },
+  { // Entry 481
+    0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
+    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
+    0x1.58ad76cccb8f4p1,
+  },
+  { // Entry 482
+    -0x1.4be4979c5efa871d30ae1cfa66389199p-1,
+    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
+    -0x1.37d9e563f5202p1,
+  },
+  { // Entry 483
+    0x1.4be4979c5efa871d30ae1cfa66389199p-1,
+    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
+    0x1.37d9e563f5202p1,
+  },
+  { // Entry 484
+    -0x1.a3ed9e25293822168958cce1e09f7c11p-1,
+    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
+    -0x1.170653fb1eb10p1,
+  },
+  { // Entry 485
+    0x1.a3ed9e25293822168958cce1e09f7c11p-1,
+    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
+    0x1.170653fb1eb10p1,
+  },
+  { // Entry 486
+    -0x1.e07eeeda109c62b340dc36e92169648dp-1,
+    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
+    -0x1.ec6585249083cp0,
+  },
+  { // Entry 487
+    0x1.e07eeeda109c62b340dc36e92169648dp-1,
+    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
+    0x1.ec6585249083cp0,
+  },
+  { // Entry 488
+    -0x1.fda254c27a01dd954db3aea505e49453p-1,
+    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
+    -0x1.aabe6252e3a58p0,
+  },
+  { // Entry 489
+    0x1.fda254c27a01dd954db3aea505e49453p-1,
+    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
+    0x1.aabe6252e3a58p0,
+  },
+  { // Entry 490
+    -0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
+    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
+    -0x1.69173f8136c74p0,
+  },
+  { // Entry 491
+    0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
+    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
+    0x1.69173f8136c74p0,
+  },
+  { // Entry 492
+    -0x1.d42de42dce13ef040bb1040e3148d7dep-1,
+    0x1.9e7f8652b47289e53fccd54955db4552p-2,
+    -0x1.27701caf89e90p0,
+  },
+  { // Entry 493
+    0x1.d42de42dce13ef040bb1040e3148d7dep-1,
+    0x1.9e7f8652b47289e53fccd54955db4552p-2,
+    0x1.27701caf89e90p0,
+  },
+  { // Entry 494
+    -0x1.904c37505de5930812e3a2a94feaa51bp-1,
+    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
+    -0x1.cb91f3bbba157p-1,
+  },
+  { // Entry 495
+    0x1.904c37505de5930812e3a2a94feaa51bp-1,
+    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
+    0x1.cb91f3bbba157p-1,
+  },
+  { // Entry 496
+    -0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
+    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
+    -0x1.4843ae186058ep-1,
+  },
+  { // Entry 497
+    0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
+    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
+    0x1.4843ae186058ep-1,
+  },
+  { // Entry 498
+    -0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
+    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
+    -0x1.89ead0ea0d38ap-2,
+  },
+  { // Entry 499
+    0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
+    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
+    0x1.89ead0ea0d38ap-2,
+  },
+  { // Entry 500
+    -0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
+    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
+    -0x1.069c8b46b37f0p-3,
+  },
+  { // Entry 501
+    0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
+    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
+    0x1.069c8b46b37f0p-3,
+  },
+  { // Entry 502
+    0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
+    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
+    0x1.069c8b46b3734p-3,
+  },
+  { // Entry 503
+    -0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
+    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
+    -0x1.069c8b46b3734p-3,
+  },
+  { // Entry 504
+    0x1.8045fe64e62b19a094399502afb76e5cp-2,
+    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
+    0x1.89ead0ea0d32cp-2,
+  },
+  { // Entry 505
+    -0x1.8045fe64e62b19a094399502afb76e5cp-2,
+    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
+    -0x1.89ead0ea0d32cp-2,
+  },
+  { // Entry 506
+    0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
+    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
+    0x1.4843ae186055fp-1,
+  },
+  { // Entry 507
+    -0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
+    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
+    -0x1.4843ae186055fp-1,
+  },
+  { // Entry 508
+    0x1.904c37505de3be2ace17ca5487750231p-1,
+    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
+    0x1.cb91f3bbba128p-1,
+  },
+  { // Entry 509
+    -0x1.904c37505de3be2ace17ca5487750231p-1,
+    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
+    -0x1.cb91f3bbba128p-1,
+  },
+  { // Entry 510
+    0x1.d42de42dce12b82466f2fcb63b294751p-1,
+    0x1.9e7f8652b478066eec563f835097f148p-2,
+    0x1.27701caf89e78p0,
+  },
+  { // Entry 511
+    -0x1.d42de42dce12b82466f2fcb63b294751p-1,
+    0x1.9e7f8652b478066eec563f835097f148p-2,
+    -0x1.27701caf89e78p0,
+  },
+  { // Entry 512
+    0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
+    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
+    0x1.69173f8136c5cp0,
+  },
+  { // Entry 513
+    -0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
+    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
+    -0x1.69173f8136c5cp0,
+  },
+  { // Entry 514
+    0x1.fda254c27a02275432d77dd6f9704644p-1,
+    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
+    0x1.aabe6252e3a40p0,
+  },
+  { // Entry 515
+    -0x1.fda254c27a02275432d77dd6f9704644p-1,
+    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
+    -0x1.aabe6252e3a40p0,
+  },
+  { // Entry 516
+    0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
+    -0x1.61a76077aedc99952438421f820a2befp-2,
+    0x1.ec65852490824p0,
+  },
+  { // Entry 517
+    -0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
+    -0x1.61a76077aedc99952438421f820a2befp-2,
+    -0x1.ec65852490824p0,
+  },
+  { // Entry 518
+    0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
+    -0x1.24ec799171626e36709cfcf7c7752332p-1,
+    0x1.170653fb1eb04p1,
+  },
+  { // Entry 519
+    -0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
+    -0x1.24ec799171626e36709cfcf7c7752332p-1,
+    -0x1.170653fb1eb04p1,
+  },
+  { // Entry 520
+    0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
+    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
+    0x1.37d9e563f51f6p1,
+  },
+  { // Entry 521
+    -0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
+    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
+    -0x1.37d9e563f51f6p1,
+  },
+  { // Entry 522
+    0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
+    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
+    0x1.58ad76cccb8e8p1,
+  },
+  { // Entry 523
+    -0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
+    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
+    -0x1.58ad76cccb8e8p1,
+  },
+  { // Entry 524
+    0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
+    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
+    0x1.79810835a1fdap1,
+  },
+  { // Entry 525
+    -0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
+    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
+    -0x1.79810835a1fdap1,
+  },
+  { // Entry 526
+    -0x1.066e7eb76f4ac293f46486dc328d450bp-4,
+    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
+    0x1.9a54999e786ccp1,
+  },
+  { // Entry 527
+    0x1.066e7eb76f4ac293f46486dc328d450bp-4,
+    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
+    -0x1.9a54999e786ccp1,
+  },
+  { // Entry 528
+    -0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
+    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
+    0x1.bb282b074edbep1,
+  },
+  { // Entry 529
+    0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
+    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
+    -0x1.bb282b074edbep1,
+  },
+  { // Entry 530
+    -0x1.175059bf0d406e2fe014e880dd29cfacp-1,
+    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
+    0x1.dbfbbc70254b0p1,
+  },
+  { // Entry 531
+    0x1.175059bf0d406e2fe014e880dd29cfacp-1,
+    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
+    -0x1.dbfbbc70254b0p1,
+  },
+  { // Entry 532
+    -0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
+    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
+    0x1.fccf4dd8fbba2p1,
+  },
+  { // Entry 533
+    0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
+    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
+    -0x1.fccf4dd8fbba2p1,
+  },
+  { // Entry 534
+    -0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
+    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
+    0x1.0ed16fa0e914ap2,
+  },
+  { // Entry 535
+    0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
+    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
+    -0x1.0ed16fa0e914ap2,
+  },
+  { // Entry 536
+    -0x1.f329c0558e95fa333d5d2d44d654777cp-1,
+    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
+    0x1.1f3b3855544c3p2,
+  },
+  { // Entry 537
+    0x1.f329c0558e95fa333d5d2d44d654777cp-1,
+    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
+    -0x1.1f3b3855544c3p2,
+  },
+  { // Entry 538
+    -0x1.ffbca846c4fcb237c2947b35b037a2p-1,
+    0x1.069107ae9302caf2068b48842afdf051p-5,
+    0x1.2fa50109bf83cp2,
+  },
+  { // Entry 539
+    0x1.ffbca846c4fcb237c2947b35b037a2p-1,
+    0x1.069107ae9302caf2068b48842afdf051p-5,
+    -0x1.2fa50109bf83cp2,
+  },
+  { // Entry 540
+    -0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
+    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
+    0x1.400ec9be2abb5p2,
+  },
+  { // Entry 541
+    0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
+    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
+    -0x1.400ec9be2abb5p2,
+  },
+  { // Entry 542
+    -0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
+    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
+    0x1.5078927295f2ep2,
+  },
+  { // Entry 543
+    0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
+    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
+    -0x1.5078927295f2ep2,
+  },
+  { // Entry 544
+    -0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
+    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
+    0x1.60e25b27012a7p2,
+  },
+  { // Entry 545
+    0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
+    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
+    -0x1.60e25b27012a7p2,
+  },
+  { // Entry 546
+    -0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
+    0x1.be1d7c3534c280dab43dced670330b63p-1,
+    0x1.714c23db6c620p2,
+  },
+  { // Entry 547
+    0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
+    0x1.be1d7c3534c280dab43dced670330b63p-1,
+    -0x1.714c23db6c620p2,
+  },
+  { // Entry 548
+    -0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
+    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
+    0x1.81b5ec8fd7999p2,
+  },
+  { // Entry 549
+    0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
+    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
+    -0x1.81b5ec8fd7999p2,
+  },
+  { // Entry 550
+    0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
+    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
+    0x1.effffffffffffp-5,
+  },
+  { // Entry 551
+    -0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
+    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
+    -0x1.effffffffffffp-5,
+  },
+  { // Entry 552
+    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    0x1.fp-5,
+  },
+  { // Entry 553
+    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    -0x1.fp-5,
+  },
+  { // Entry 554
+    0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
+    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
+    0x1.f000000000001p-5,
+  },
+  { // Entry 555
+    -0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
+    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
+    -0x1.f000000000001p-5,
+  },
+  { // Entry 556
+    0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
+    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
+    0x1.f7fffffffffffp-4,
+  },
+  { // Entry 557
+    -0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
+    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
+    -0x1.f7fffffffffffp-4,
+  },
+  { // Entry 558
+    0x1.f6baaa131de6438e5611279864fe7663p-4,
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    0x1.f80p-4,
+  },
+  { // Entry 559
+    -0x1.f6baaa131de6438e5611279864fe7663p-4,
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    -0x1.f80p-4,
+  },
+  { // Entry 560
+    0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
+    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
+    0x1.f800000000001p-4,
+  },
+  { // Entry 561
+    -0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
+    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
+    -0x1.f800000000001p-4,
+  },
+  { // Entry 562
+    0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
+    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
+    0x1.4bfffffffffffp-3,
+  },
+  { // Entry 563
+    -0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
+    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
+    -0x1.4bfffffffffffp-3,
+  },
+  { // Entry 564
+    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    0x1.4c0p-3,
+  },
+  { // Entry 565
+    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    -0x1.4c0p-3,
+  },
+  { // Entry 566
+    0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
+    0x1.f94984b2552e189ca658c51c42e907cep-1,
+    0x1.4c00000000001p-3,
+  },
+  { // Entry 567
+    -0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
+    0x1.f94984b2552e189ca658c51c42e907cep-1,
+    -0x1.4c00000000001p-3,
+  },
+  { // Entry 568
+    0x1.2e9cd95baba325fe6067233d4496aaacp-2,
+    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
+    0x1.3333333333332p-2,
+  },
+  { // Entry 569
+    -0x1.2e9cd95baba325fe6067233d4496aaacp-2,
+    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
+    -0x1.3333333333332p-2,
+  },
+  { // Entry 570
+    0x1.2e9cd95baba335476f513ac221d078c7p-2,
+    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
+    0x1.3333333333333p-2,
+  },
+  { // Entry 571
+    -0x1.2e9cd95baba335476f513ac221d078c7p-2,
+    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
+    -0x1.3333333333333p-2,
+  },
+  { // Entry 572
+    0x1.2e9cd95baba344907e3b5246fef75d15p-2,
+    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
+    0x1.3333333333334p-2,
+  },
+  { // Entry 573
+    -0x1.2e9cd95baba344907e3b5246fef75d15p-2,
+    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
+    -0x1.3333333333334p-2,
+  },
+  { // Entry 574
+    0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
+    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
+    0x1.594317acc4ef8p-1,
+  },
+  { // Entry 575
+    -0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
+    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
+    -0x1.594317acc4ef8p-1,
+  },
+  { // Entry 576
+    0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
+    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
+    0x1.594317acc4ef9p-1,
+  },
+  { // Entry 577
+    -0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
+    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
+    -0x1.594317acc4ef9p-1,
+  },
+  { // Entry 578
+    0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
+    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
+    0x1.594317acc4efap-1,
+  },
+  { // Entry 579
+    -0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
+    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
+    -0x1.594317acc4efap-1,
+  },
+  { // Entry 580
+    0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
+    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
+    0x1.8ffffffffffffp-1,
+  },
+  { // Entry 581
+    -0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
+    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
+    -0x1.8ffffffffffffp-1,
+  },
+  { // Entry 582
+    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    0x1.9p-1,
+  },
+  { // Entry 583
+    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    -0x1.9p-1,
+  },
+  { // Entry 584
+    0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
+    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
+    0x1.9000000000001p-1,
+  },
+  { // Entry 585
+    -0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
+    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
+    -0x1.9000000000001p-1,
+  },
+  { // Entry 586
+    -0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+  },
+  { // Entry 587
+    0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074,
+  },
+  { // Entry 588
+    -0.0,
+    0x1.p0,
+    -0.0,
+  },
+  { // Entry 589
+    0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074,
+  },
+  { // Entry 590
+    -0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+  },
+  { // Entry 591
+    0x1.91f65f10dd812a0b95ff71871ab48207p-5,
+    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
+    0x1.921fb54442d17p-5,
+  },
+  { // Entry 592
+    -0x1.91f65f10dd812a0b95ff71871ab48207p-5,
+    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
+    -0x1.921fb54442d17p-5,
+  },
+  { // Entry 593
+    0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
+    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
+    0x1.921fb54442d18p-5,
+  },
+  { // Entry 594
+    -0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
+    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
+    -0x1.921fb54442d18p-5,
+  },
+  { // Entry 595
+    0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
+    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
+    0x1.921fb54442d19p-5,
+  },
+  { // Entry 596
+    -0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
+    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
+    -0x1.921fb54442d19p-5,
+  },
+  { // Entry 597
+    0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
+    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
+    0x1.921fb54442d17p-4,
+  },
+  { // Entry 598
+    -0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
+    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
+    -0x1.921fb54442d17p-4,
+  },
+  { // Entry 599
+    0x1.917a6bc29b42b9b9754a67729f79346bp-4,
+    0x1.fd88da3d125259ee594b5705767ab649p-1,
+    0x1.921fb54442d18p-4,
+  },
+  { // Entry 600
+    -0x1.917a6bc29b42b9b9754a67729f79346bp-4,
+    0x1.fd88da3d125259ee594b5705767ab649p-1,
+    -0x1.921fb54442d18p-4,
+  },
+  { // Entry 601
+    0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
+    0x1.fd88da3d125259bc29fddeb20e228056p-1,
+    0x1.921fb54442d19p-4,
+  },
+  { // Entry 602
+    -0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
+    0x1.fd88da3d125259bc29fddeb20e228056p-1,
+    -0x1.921fb54442d19p-4,
+  },
+  { // Entry 603
+    0x1.8f8b83c69a60975f98453886f953a0e5p-3,
+    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
+    0x1.921fb54442d17p-3,
+  },
+  { // Entry 604
+    -0x1.8f8b83c69a60975f98453886f953a0e5p-3,
+    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
+    -0x1.921fb54442d17p-3,
+  },
+  { // Entry 605
+    0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
+    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
+    0x1.921fb54442d18p-3,
+  },
+  { // Entry 606
+    -0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
+    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
+    -0x1.921fb54442d18p-3,
+  },
+  { // Entry 607
+    0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
+    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
+    0x1.921fb54442d19p-3,
+  },
+  { // Entry 608
+    -0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
+    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
+    -0x1.921fb54442d19p-3,
+  },
+  { // Entry 609
+    0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
+    0x1.d906bcf328d46672d9c1a865898e5966p-1,
+    0x1.921fb54442d17p-2,
+  },
+  { // Entry 610
+    -0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
+    0x1.d906bcf328d46672d9c1a865898e5966p-1,
+    -0x1.921fb54442d17p-2,
+  },
+  { // Entry 611
+    0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
+    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
+    0x1.921fb54442d18p-2,
+  },
+  { // Entry 612
+    -0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
+    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
+    -0x1.921fb54442d18p-2,
+  },
+  { // Entry 613
+    0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
+    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
+    0x1.921fb54442d19p-2,
+  },
+  { // Entry 614
+    -0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
+    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
+    -0x1.921fb54442d19p-2,
+  },
+  { // Entry 615
+    0x1.6a09e667f3bcba99afb0135729457874p-1,
+    0x1.6a09e667f3bcd777b6461376ab523242p-1,
+    0x1.921fb54442d17p-1,
+  },
+  { // Entry 616
+    -0x1.6a09e667f3bcba99afb0135729457874p-1,
+    0x1.6a09e667f3bcd777b6461376ab523242p-1,
+    -0x1.921fb54442d17p-1,
+  },
+  { // Entry 617
+    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    0x1.921fb54442d18p-1,
+  },
+  { // Entry 618
+    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    -0x1.921fb54442d18p-1,
+  },
+  { // Entry 619
+    0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
+    0x1.6a09e667f3bcc0d717df943adef39253p-1,
+    0x1.921fb54442d19p-1,
+  },
+  { // Entry 620
+    -0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
+    0x1.6a09e667f3bcc0d717df943adef39253p-1,
+    -0x1.921fb54442d19p-1,
+  },
+  { // Entry 621
+    0x1.fffffffffffffffffffffffffe5f56ffp-1,
+    0x1.469898cc51701b839a252049c0b8b50bp-52,
+    0x1.921fb54442d17p0,
+  },
+  { // Entry 622
+    -0x1.fffffffffffffffffffffffffe5f56ffp-1,
+    0x1.469898cc51701b839a252049c0b8b50bp-52,
+    -0x1.921fb54442d17p0,
+  },
+  { // Entry 623
+    0x1.ffffffffffffffffffffffffffec8831p-1,
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    0x1.921fb54442d18p0,
+  },
+  { // Entry 624
+    -0x1.ffffffffffffffffffffffffffec8831p-1,
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    -0x1.921fb54442d18p0,
+  },
+  { // Entry 625
+    0x1.ffffffffffffffffffffffffff79b963p-1,
+    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
+    0x1.921fb54442d19p0,
+  },
+  { // Entry 626
+    -0x1.ffffffffffffffffffffffffff79b963p-1,
+    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
+    -0x1.921fb54442d19p0,
+  },
+  { // Entry 627
+    0x1.469898cc51701b839a252049bfaeed42p-51,
+    -0x1.fffffffffffffffffffffffff97d5bffp-1,
+    0x1.921fb54442d17p1,
+  },
+  { // Entry 628
+    -0x1.469898cc51701b839a252049bfaeed42p-51,
+    -0x1.fffffffffffffffffffffffff97d5bffp-1,
+    -0x1.921fb54442d17p1,
+  },
+  { // Entry 629
+    0x1.1a62633145c06e0e689481270436e2edp-53,
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    0x1.921fb54442d18p1,
+  },
+  { // Entry 630
+    -0x1.1a62633145c06e0e689481270436e2edp-53,
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    -0x1.921fb54442d18p1,
+  },
+  { // Entry 631
+    -0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
+    -0x1.fffffffffffffffffffffffffde6e58cp-1,
+    0x1.921fb54442d19p1,
+  },
+  { // Entry 632
+    0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
+    -0x1.fffffffffffffffffffffffffde6e58cp-1,
+    -0x1.921fb54442d19p1,
+  },
+  { // Entry 633
+    -0x1.469898cc51701b839a252049bb87ce1bp-50,
+    0x1.ffffffffffffffffffffffffe5f56ffep-1,
+    0x1.921fb54442d17p2,
+  },
+  { // Entry 634
+    0x1.469898cc51701b839a252049bb87ce1bp-50,
+    0x1.ffffffffffffffffffffffffe5f56ffep-1,
+    -0x1.921fb54442d17p2,
+  },
+  { // Entry 635
+    -0x1.1a62633145c06e0e68948127040bf003p-52,
+    0x1.fffffffffffffffffffffffffec88317p-1,
+    0x1.921fb54442d18p2,
+  },
+  { // Entry 636
+    0x1.1a62633145c06e0e68948127040bf003p-52,
+    0x1.fffffffffffffffffffffffffec88317p-1,
+    -0x1.921fb54442d18p2,
+  },
+  { // Entry 637
+    0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
+    0x1.fffffffffffffffffffffffff79b9631p-1,
+    0x1.921fb54442d19p2,
+  },
+  { // Entry 638
+    -0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
+    0x1.fffffffffffffffffffffffff79b9631p-1,
+    -0x1.921fb54442d19p2,
+  },
+  { // Entry 639
+    -0x1.469898cc51701b839a252049aaeb5182p-49,
+    0x1.ffffffffffffffffffffffff97d5bff8p-1,
+    0x1.921fb54442d17p3,
+  },
+  { // Entry 640
+    0x1.469898cc51701b839a252049aaeb5182p-49,
+    0x1.ffffffffffffffffffffffff97d5bff8p-1,
+    -0x1.921fb54442d17p3,
+  },
+  { // Entry 641
+    -0x1.1a62633145c06e0e689481270360245cp-51,
+    0x1.fffffffffffffffffffffffffb220c5ep-1,
+    0x1.921fb54442d18p3,
+  },
+  { // Entry 642
+    0x1.1a62633145c06e0e689481270360245cp-51,
+    0x1.fffffffffffffffffffffffffb220c5ep-1,
+    -0x1.921fb54442d18p3,
+  },
+  { // Entry 643
+    0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
+    0x1.ffffffffffffffffffffffffde6e58c4p-1,
+    0x1.921fb54442d19p3,
+  },
+  { // Entry 644
+    -0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
+    0x1.ffffffffffffffffffffffffde6e58c4p-1,
+    -0x1.921fb54442d19p3,
+  },
+  { // Entry 645
+    -0x1.469898cc51701b839a25204968795f1cp-48,
+    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
+    0x1.921fb54442d17p4,
+  },
+  { // Entry 646
+    0x1.469898cc51701b839a25204968795f1cp-48,
+    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
+    -0x1.921fb54442d17p4,
+  },
+  { // Entry 647
+    -0x1.1a62633145c06e0e6894812700b0f5bfp-50,
+    0x1.ffffffffffffffffffffffffec88317ap-1,
+    0x1.921fb54442d18p4,
+  },
+  { // Entry 648
+    0x1.1a62633145c06e0e6894812700b0f5bfp-50,
+    0x1.ffffffffffffffffffffffffec88317ap-1,
+    -0x1.921fb54442d18p4,
+  },
+  { // Entry 649
+    0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
+    0x1.ffffffffffffffffffffffff79b96313p-1,
+    0x1.921fb54442d19p4,
+  },
+  { // Entry 650
+    -0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
+    0x1.ffffffffffffffffffffffff79b96313p-1,
+    -0x1.921fb54442d19p4,
+  },
+  { // Entry 651
+    -0x1.469898cc51701b839a2520485eb19584p-47,
+    0x1.fffffffffffffffffffffff97d5bff87p-1,
+    0x1.921fb54442d17p5,
+  },
+  { // Entry 652
+    0x1.469898cc51701b839a2520485eb19584p-47,
+    0x1.fffffffffffffffffffffff97d5bff87p-1,
+    -0x1.921fb54442d17p5,
+  },
+  { // Entry 653
+    -0x1.1a62633145c06e0e68948126f5f43b4cp-49,
+    0x1.ffffffffffffffffffffffffb220c5e9p-1,
+    0x1.921fb54442d18p5,
+  },
+  { // Entry 654
+    0x1.1a62633145c06e0e68948126f5f43b4cp-49,
+    0x1.ffffffffffffffffffffffffb220c5e9p-1,
+    -0x1.921fb54442d18p5,
+  },
+  { // Entry 655
+    0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
+    0x1.fffffffffffffffffffffffde6e58c4cp-1,
+    0x1.921fb54442d19p5,
+  },
+  { // Entry 656
+    -0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
+    0x1.fffffffffffffffffffffffde6e58c4cp-1,
+    -0x1.921fb54442d19p5,
+  },
+  { // Entry 657
+    -0x1.469898cc51701b839a25204437926f25p-46,
+    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
+    0x1.921fb54442d17p6,
+  },
+  { // Entry 658
+    0x1.469898cc51701b839a25204437926f25p-46,
+    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
+    -0x1.921fb54442d17p6,
+  },
+  { // Entry 659
+    -0x1.1a62633145c06e0e68948126cb01517dp-48,
+    0x1.fffffffffffffffffffffffec88317a7p-1,
+    0x1.921fb54442d18p6,
+  },
+  { // Entry 660
+    0x1.1a62633145c06e0e68948126cb01517dp-48,
+    0x1.fffffffffffffffffffffffec88317a7p-1,
+    -0x1.921fb54442d18p6,
+  },
+  { // Entry 661
+    0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
+    0x1.fffffffffffffffffffffff79b963131p-1,
+    0x1.921fb54442d19p6,
+  },
+  { // Entry 662
+    -0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
+    0x1.fffffffffffffffffffffff79b963131p-1,
+    -0x1.921fb54442d19p6,
+  },
+  { // Entry 663
+    -0x1.469898cc51701b839a2520339b15d5aap-45,
+    0x1.ffffffffffffffffffffff97d5bff874p-1,
+    0x1.921fb54442d17p7,
+  },
+  { // Entry 664
+    0x1.469898cc51701b839a2520339b15d5aap-45,
+    0x1.ffffffffffffffffffffff97d5bff874p-1,
+    -0x1.921fb54442d17p7,
+  },
+  { // Entry 665
+    -0x1.1a62633145c06e0e689481261f35aa43p-47,
+    0x1.fffffffffffffffffffffffb220c5e9dp-1,
+    0x1.921fb54442d18p7,
+  },
+  { // Entry 666
+    0x1.1a62633145c06e0e689481261f35aa43p-47,
+    0x1.fffffffffffffffffffffffb220c5e9dp-1,
+    -0x1.921fb54442d18p7,
+  },
+  { // Entry 667
+    0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
+    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
+    0x1.921fb54442d19p7,
+  },
+  { // Entry 668
+    -0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
+    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
+    -0x1.921fb54442d19p7,
+  },
+  { // Entry 669
+    0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
+    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
+    0x1.2d97c7f3321d1p1,
+  },
+  { // Entry 670
+    -0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
+    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
+    -0x1.2d97c7f3321d1p1,
+  },
+  { // Entry 671
+    0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
+    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
+    0x1.2d97c7f3321d2p1,
+  },
+  { // Entry 672
+    -0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
+    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
+    -0x1.2d97c7f3321d2p1,
+  },
+  { // Entry 673
+    0x1.6a09e667f3bca52392755644dfe72357p-1,
+    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
+    0x1.2d97c7f3321d3p1,
+  },
+  { // Entry 674
+    -0x1.6a09e667f3bca52392755644dfe72357p-1,
+    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
+    -0x1.2d97c7f3321d3p1,
+  },
+  { // Entry 675
+    -0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
+    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
+    0x1.f6a7a2955385dp1,
+  },
+  { // Entry 676
+    0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
+    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
+    -0x1.f6a7a2955385dp1,
+  },
+  { // Entry 677
+    -0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
+    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
+    0x1.f6a7a2955385ep1,
+  },
+  { // Entry 678
+    0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
+    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
+    -0x1.f6a7a2955385ep1,
+  },
+  { // Entry 679
+    -0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
+    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
+    0x1.f6a7a2955385fp1,
+  },
+  { // Entry 680
+    0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
+    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
+    -0x1.f6a7a2955385fp1,
+  },
+  { // Entry 681
+    -0x1.ffffffffffffffffffffffffe8b27b6ap-1,
+    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
+    0x1.2d97c7f3321d1p2,
+  },
+  { // Entry 682
+    0x1.ffffffffffffffffffffffffe8b27b6ap-1,
+    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
+    -0x1.2d97c7f3321d1p2,
+  },
+  { // Entry 683
+    -0x1.ffffffffffffffffffffffffff50c9bdp-1,
+    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
+    0x1.2d97c7f3321d2p2,
+  },
+  { // Entry 684
+    0x1.ffffffffffffffffffffffffff50c9bdp-1,
+    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
+    -0x1.2d97c7f3321d2p2,
+  },
+  { // Entry 685
+    -0x1.fffffffffffffffffffffffff5ef1810p-1,
+    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
+    0x1.2d97c7f3321d3p2,
+  },
+  { // Entry 686
+    0x1.fffffffffffffffffffffffff5ef1810p-1,
+    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
+    -0x1.2d97c7f3321d3p2,
+  },
+  { // Entry 687
+    -0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
+    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
+    0x1.5fdbbe9bba774p2,
+  },
+  { // Entry 688
+    0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
+    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
+    -0x1.5fdbbe9bba774p2,
+  },
+  { // Entry 689
+    -0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
+    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
+    0x1.5fdbbe9bba775p2,
+  },
+  { // Entry 690
+    0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
+    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
+    -0x1.5fdbbe9bba775p2,
+  },
+  { // Entry 691
+    -0x1.6a09e667f3bc845d26075994ad02bd98p-1,
+    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
+    0x1.5fdbbe9bba776p2,
+  },
+  { // Entry 692
+    0x1.6a09e667f3bc845d26075994ad02bd98p-1,
+    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
+    -0x1.5fdbbe9bba776p2,
+  },
+  { // Entry 693
+    0x1.6a09e667f3bc5271e48b5276f438579fp-1,
+    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
+    0x1.c463abeccb2bap2,
+  },
+  { // Entry 694
+    -0x1.6a09e667f3bc5271e48b5276f438579fp-1,
+    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
+    -0x1.c463abeccb2bap2,
+  },
+  { // Entry 695
+    0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
+    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
+    0x1.c463abeccb2bbp2,
+  },
+  { // Entry 696
+    -0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
+    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
+    -0x1.c463abeccb2bbp2,
+  },
+  { // Entry 697
+    0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
+    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
+    0x1.c463abeccb2bcp2,
+  },
+  { // Entry 698
+    -0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
+    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
+    -0x1.c463abeccb2bcp2,
+  },
+  { // Entry 699
+    0x1.ffffffffffffffffffffffffe31174f5p-1,
+    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
+    0x1.f6a7a2955385dp2,
+  },
+  { // Entry 700
+    -0x1.ffffffffffffffffffffffffe31174f5p-1,
+    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
+    -0x1.f6a7a2955385dp2,
+  },
+  { // Entry 701
+    0x1.fffffffffffffffffffffffffe194cd4p-1,
+    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
+    0x1.f6a7a2955385ep2,
+  },
+  { // Entry 702
+    -0x1.fffffffffffffffffffffffffe194cd4p-1,
+    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
+    -0x1.f6a7a2955385ep2,
+  },
+  { // Entry 703
+    0x1.fffffffffffffffffffffffff92124b4p-1,
+    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
+    0x1.f6a7a2955385fp2,
+  },
+  { // Entry 704
+    -0x1.fffffffffffffffffffffffff92124b4p-1,
+    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
+    -0x1.f6a7a2955385fp2,
+  },
+  { // Entry 705
+    0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
+    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
+    0x1.1475cc9eedeffp3,
+  },
+  { // Entry 706
+    -0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
+    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
+    -0x1.1475cc9eedeffp3,
+  },
+  { // Entry 707
+    0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
+    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
+    0x1.1475cc9eedfp3,
+  },
+  { // Entry 708
+    -0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
+    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
+    -0x1.1475cc9eedfp3,
+  },
+  { // Entry 709
+    0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
+    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
+    0x1.1475cc9eedf01p3,
+  },
+  { // Entry 710
+    -0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
+    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
+    -0x1.1475cc9eedf01p3,
+  },
+  { // Entry 711
+    0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
+    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
+    0x1.2d97c7f3321d1p3,
+  },
+  { // Entry 712
+    -0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
+    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
+    -0x1.2d97c7f3321d1p3,
+  },
+  { // Entry 713
+    0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
+    -0x1.fffffffffffffffffffffffffd4326f5p-1,
+    0x1.2d97c7f3321d2p3,
+  },
+  { // Entry 714
+    -0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
+    -0x1.fffffffffffffffffffffffffd4326f5p-1,
+    -0x1.2d97c7f3321d2p3,
+  },
+  { // Entry 715
+    -0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
+    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
+    0x1.2d97c7f3321d3p3,
+  },
+  { // Entry 716
+    0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
+    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
+    -0x1.2d97c7f3321d3p3,
+  },
+  { // Entry 717
+    -0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
+    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
+    0x1.46b9c347764a2p3,
+  },
+  { // Entry 718
+    0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
+    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
+    -0x1.46b9c347764a2p3,
+  },
+  { // Entry 719
+    -0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
+    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
+    0x1.46b9c347764a3p3,
+  },
+  { // Entry 720
+    0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
+    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
+    -0x1.46b9c347764a3p3,
+  },
+  { // Entry 721
+    -0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
+    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
+    0x1.46b9c347764a4p3,
+  },
+  { // Entry 722
+    0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
+    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
+    -0x1.46b9c347764a4p3,
+  },
+  { // Entry 723
+    -0x1.ffffffffffffffffffffffff9d634e9fp-1,
+    -0x1.3dc585b2c742181326e07c40748873bbp-49,
+    0x1.5fdbbe9bba774p3,
+  },
+  { // Entry 724
+    0x1.ffffffffffffffffffffffff9d634e9fp-1,
+    -0x1.3dc585b2c742181326e07c40748873bbp-49,
+    -0x1.5fdbbe9bba774p3,
+  },
+  { // Entry 725
+    -0x1.fffffffffffffffffffffffffc461178p-1,
+    -0x1.ee2c2d963a10c0993703e20446463301p-52,
+    0x1.5fdbbe9bba775p3,
+  },
+  { // Entry 726
+    0x1.fffffffffffffffffffffffffc461178p-1,
+    -0x1.ee2c2d963a10c0993703e20446463301p-52,
+    -0x1.5fdbbe9bba775p3,
+  },
+  { // Entry 727
+    -0x1.ffffffffffffffffffffffffdb28d451p-1,
+    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
+    0x1.5fdbbe9bba776p3,
+  },
+  { // Entry 728
+    0x1.ffffffffffffffffffffffffdb28d451p-1,
+    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
+    -0x1.5fdbbe9bba776p3,
+  },
+  { // Entry 729
+    -0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
+    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
+    0x1.78fdb9effea45p3,
+  },
+  { // Entry 730
+    0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
+    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
+    -0x1.78fdb9effea45p3,
+  },
+  { // Entry 731
+    -0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
+    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
+    0x1.78fdb9effea46p3,
+  },
+  { // Entry 732
+    0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
+    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
+    -0x1.78fdb9effea46p3,
+  },
+  { // Entry 733
+    -0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
+    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
+    0x1.78fdb9effea47p3,
+  },
+  { // Entry 734
+    0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
+    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
+    -0x1.78fdb9effea47p3,
+  },
+  { // Entry 735
+    0x1.6a09e667f3bb8477509955093bb292bep-1,
+    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
+    0x1.ab41b09886fe8p3,
+  },
+  { // Entry 736
+    -0x1.6a09e667f3bb8477509955093bb292bep-1,
+    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
+    -0x1.ab41b09886fe8p3,
+  },
+  { // Entry 737
+    0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
+    0x1.6a09e667f3bd58952228d7e58701d299p-1,
+    0x1.ab41b09886fe9p3,
+  },
+  { // Entry 738
+    -0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
+    0x1.6a09e667f3bd58952228d7e58701d299p-1,
+    -0x1.ab41b09886fe9p3,
+  },
+  { // Entry 739
+    0x1.6a09e667f3bcee81370148c69447b4e7p-1,
+    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
+    0x1.ab41b09886feap3,
+  },
+  { // Entry 740
+    -0x1.6a09e667f3bcee81370148c69447b4e7p-1,
+    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
+    -0x1.ab41b09886feap3,
+  },
+  { // Entry 741
+    0x1.ffffffffffffffffffffffff922141b4p-1,
+    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
+    0x1.c463abeccb2bap3,
+  },
+  { // Entry 742
+    -0x1.ffffffffffffffffffffffff922141b4p-1,
+    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
+    -0x1.c463abeccb2bap3,
+  },
+  { // Entry 743
+    0x1.fffffffffffffffffffffffff9d717a7p-1,
+    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
+    0x1.c463abeccb2bbp3,
+  },
+  { // Entry 744
+    -0x1.fffffffffffffffffffffffff9d717a7p-1,
+    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
+    -0x1.c463abeccb2bbp3,
+  },
+  { // Entry 745
+    0x1.ffffffffffffffffffffffffe18ced9ap-1,
+    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
+    0x1.c463abeccb2bcp3,
+  },
+  { // Entry 746
+    -0x1.ffffffffffffffffffffffffe18ced9ap-1,
+    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
+    -0x1.c463abeccb2bcp3,
+  },
+  { // Entry 747
+    0x1.6a09e667f3be13d77d8c52a726550eacp-1,
+    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
+    0x1.dd85a7410f58bp3,
+  },
+  { // Entry 748
+    -0x1.6a09e667f3be13d77d8c52a726550eacp-1,
+    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
+    -0x1.dd85a7410f58bp3,
+  },
+  { // Entry 749
+    0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
+    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
+    0x1.dd85a7410f58cp3,
+  },
+  { // Entry 750
+    -0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
+    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
+    -0x1.dd85a7410f58cp3,
+  },
+  { // Entry 751
+    0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
+    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
+    0x1.dd85a7410f58dp3,
+  },
+  { // Entry 752
+    -0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
+    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
+    -0x1.dd85a7410f58dp3,
+  },
+  { // Entry 753
+    0x1.583ebeff65cc226480ae685c1765dec1p-49,
+    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
+    0x1.f6a7a2955385dp3,
+  },
+  { // Entry 754
+    -0x1.583ebeff65cc226480ae685c1765dec1p-49,
+    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
+    -0x1.f6a7a2955385dp3,
+  },
+  { // Entry 755
+    0x1.60fafbfd9730899202b9a170c3971e86p-51,
+    -0x1.fffffffffffffffffffffffff8653353p-1,
+    0x1.f6a7a2955385ep3,
+  },
+  { // Entry 756
+    -0x1.60fafbfd9730899202b9a170c3971e86p-51,
+    -0x1.fffffffffffffffffffffffff8653353p-1,
+    -0x1.f6a7a2955385ep3,
+  },
+  { // Entry 757
+    -0x1.4f8282013467bb36fea32f479753fe7ap-50,
+    -0x1.ffffffffffffffffffffffffe48492d3p-1,
+    0x1.f6a7a2955385fp3,
+  },
+  { // Entry 758
+    0x1.4f8282013467bb36fea32f479753fe7ap-50,
+    -0x1.ffffffffffffffffffffffffe48492d3p-1,
+    -0x1.f6a7a2955385fp3,
+  },
+  { // Entry 759
+    -0x1.6a09e667f3ba0df299d25f82f639251fp-1,
+    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
+    0x1.07e4cef4cbd96p4,
+  },
+  { // Entry 760
+    0x1.6a09e667f3ba0df299d25f82f639251fp-1,
+    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
+    -0x1.07e4cef4cbd96p4,
+  },
+  { // Entry 761
+    -0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
+    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
+    0x1.07e4cef4cbd97p4,
+  },
+  { // Entry 762
+    0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
+    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
+    -0x1.07e4cef4cbd97p4,
+  },
+  { // Entry 763
+    -0x1.6a09e667f3bce20666a246ff2a62f097p-1,
+    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
+    0x1.07e4cef4cbd98p4,
+  },
+  { // Entry 764
+    0x1.6a09e667f3bce20666a246ff2a62f097p-1,
+    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
+    -0x1.07e4cef4cbd98p4,
+  },
+  { // Entry 765
+    -0x1.fffffffffffffffffffffffd2531a43dp-1,
+    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
+    0x1.1475cc9eedeffp4,
+  },
+  { // Entry 766
+    0x1.fffffffffffffffffffffffd2531a43dp-1,
+    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
+    -0x1.1475cc9eedeffp4,
+  },
+  { // Entry 767
+    -0x1.ffffffffffffffffffffffff86437656p-1,
+    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
+    0x1.1475cc9eedfp4,
+  },
+  { // Entry 768
+    0x1.ffffffffffffffffffffffff86437656p-1,
+    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
+    -0x1.1475cc9eedfp4,
+  },
+  { // Entry 769
+    -0x1.ffffffffffffffffffffffffe755486fp-1,
+    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
+    0x1.1475cc9eedf01p4,
+  },
+  { // Entry 770
+    0x1.ffffffffffffffffffffffffe755486fp-1,
+    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
+    -0x1.1475cc9eedf01p4,
+  },
+  { // Entry 771
+    -0x1.6a09e667f3bed557411f4e4c114d7357p-1,
+    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
+    0x1.2106ca4910068p4,
+  },
+  { // Entry 772
+    0x1.6a09e667f3bed557411f4e4c114d7357p-1,
+    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
+    -0x1.2106ca4910068p4,
+  },
+  { // Entry 773
+    -0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
+    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
+    0x1.2106ca4910069p4,
+  },
+  { // Entry 774
+    0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
+    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
+    -0x1.2106ca4910069p4,
+  },
+  { // Entry 775
+    -0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
+    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
+    0x1.2106ca491006ap4,
+  },
+  { // Entry 776
+    0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
+    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
+    -0x1.2106ca491006ap4,
+  },
+  { // Entry 777
+    -0x1.34f272993d1414a2b39bd83705cec120p-48,
+    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
+    0x1.2d97c7f3321d1p4,
+  },
+  { // Entry 778
+    0x1.34f272993d1414a2b39bd83705cec120p-48,
+    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
+    -0x1.2d97c7f3321d1p4,
+  },
+  { // Entry 779
+    -0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
+    0x1.fffffffffffffffffffffffff50c9bd4p-1,
+    0x1.2d97c7f3321d2p4,
+  },
+  { // Entry 780
+    0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
+    0x1.fffffffffffffffffffffffff50c9bd4p-1,
+    -0x1.2d97c7f3321d2p4,
+  },
+  { // Entry 781
+    0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
+    0x1.ffffffffffffffffffffffff5ef18107p-1,
+    0x1.2d97c7f3321d3p4,
+  },
+  { // Entry 782
+    -0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
+    0x1.ffffffffffffffffffffffff5ef18107p-1,
+    -0x1.2d97c7f3321d3p4,
+  },
+  { // Entry 783
+    0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
+    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
+    0x1.3a28c59d54339p4,
+  },
+  { // Entry 784
+    -0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
+    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
+    -0x1.3a28c59d54339p4,
+  },
+  { // Entry 785
+    0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
+    0x1.6a09e667f3be268fb61ad5523532e298p-1,
+    0x1.3a28c59d5433ap4,
+  },
+  { // Entry 786
+    -0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
+    0x1.6a09e667f3be268fb61ad5523532e298p-1,
+    -0x1.3a28c59d5433ap4,
+  },
+  { // Entry 787
+    0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
+    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
+    0x1.3a28c59d5433bp4,
+  },
+  { // Entry 788
+    -0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
+    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
+    -0x1.3a28c59d5433bp4,
+  },
+  { // Entry 789
+    0x1.fffffffffffffffffffffffd0711f437p-1,
+    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
+    0x1.46b9c347764a2p4,
+  },
+  { // Entry 790
+    -0x1.fffffffffffffffffffffffd0711f437p-1,
+    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
+    -0x1.46b9c347764a2p4,
+  },
+  { // Entry 791
+    0x1.ffffffffffffffffffffffff79c9ec83p-1,
+    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
+    0x1.46b9c347764a3p4,
+  },
+  { // Entry 792
+    -0x1.ffffffffffffffffffffffff79c9ec83p-1,
+    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
+    -0x1.46b9c347764a3p4,
+  },
+  { // Entry 793
+    0x1.ffffffffffffffffffffffffec81e4cfp-1,
+    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
+    0x1.46b9c347764a4p4,
+  },
+  { // Entry 794
+    -0x1.ffffffffffffffffffffffffec81e4cfp-1,
+    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
+    -0x1.46b9c347764a4p4,
+  },
+  { // Entry 795
+    0x1.6a09e667f3bee1d2117e501369fbffefp-1,
+    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
+    0x1.534ac0f19860bp4,
+  },
+  { // Entry 796
+    -0x1.6a09e667f3bee1d2117e501369fbffefp-1,
+    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
+    -0x1.534ac0f19860bp4,
+  },
+  { // Entry 797
+    0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
+    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
+    0x1.534ac0f19860cp4,
+  },
+  { // Entry 798
+    -0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
+    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
+    -0x1.534ac0f19860cp4,
+  },
+  { // Entry 799
+    0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
+    -0x1.6a09e667f3bd84532147be323eddac01p-1,
+    0x1.534ac0f19860dp4,
+  },
+  { // Entry 800
+    -0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
+    -0x1.6a09e667f3bd84532147be323eddac01p-1,
+    -0x1.534ac0f19860dp4,
+  },
+  { // Entry 801
+    0x1.3dc585b2c742181326e07c40375464dep-48,
+    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
+    0x1.5fdbbe9bba774p4,
+  },
+  { // Entry 802
+    -0x1.3dc585b2c742181326e07c40375464dep-48,
+    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
+    -0x1.5fdbbe9bba774p4,
+  },
+  { // Entry 803
+    0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
+    -0x1.fffffffffffffffffffffffff11845e1p-1,
+    0x1.5fdbbe9bba775p4,
+  },
+  { // Entry 804
+    -0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
+    -0x1.fffffffffffffffffffffffff11845e1p-1,
+    -0x1.5fdbbe9bba775p4,
+  },
+  { // Entry 805
+    -0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
+    -0x1.ffffffffffffffffffffffff6ca35147p-1,
+    0x1.5fdbbe9bba776p4,
+  },
+  { // Entry 806
+    0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
+    -0x1.ffffffffffffffffffffffff6ca35147p-1,
+    -0x1.5fdbbe9bba776p4,
+  },
+  { // Entry 807
+    -0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
+    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
+    0x1.6c6cbc45dc8dcp4,
+  },
+  { // Entry 808
+    0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
+    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
+    -0x1.6c6cbc45dc8dcp4,
+  },
+  { // Entry 809
+    -0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
+    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
+    0x1.6c6cbc45dc8ddp4,
+  },
+  { // Entry 810
+    0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
+    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
+    -0x1.6c6cbc45dc8ddp4,
+  },
+  { // Entry 811
+    -0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
+    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
+    0x1.6c6cbc45dc8dep4,
+  },
+  { // Entry 812
+    0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
+    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
+    -0x1.6c6cbc45dc8dep4,
+  },
+  { // Entry 813
+    -0x1.fffffffffffffffffffffffce85685bdp-1,
+    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
+    0x1.78fdb9effea45p4,
+  },
+  { // Entry 814
+    0x1.fffffffffffffffffffffffce85685bdp-1,
+    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
+    -0x1.78fdb9effea45p4,
+  },
+  { // Entry 815
+    -0x1.ffffffffffffffffffffffff6cb4a43dp-1,
+    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
+    0x1.78fdb9effea46p4,
+  },
+  { // Entry 816
+    0x1.ffffffffffffffffffffffff6cb4a43dp-1,
+    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
+    -0x1.78fdb9effea46p4,
+  },
+  { // Entry 817
+    -0x1.fffffffffffffffffffffffff112c2bcp-1,
+    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
+    0x1.78fdb9effea47p4,
+  },
+  { // Entry 818
+    0x1.fffffffffffffffffffffffff112c2bcp-1,
+    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
+    -0x1.78fdb9effea47p4,
+  },
+  { // Entry 819
+    -0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
+    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
+    0x1.858eb79a20baep4,
+  },
+  { // Entry 820
+    0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
+    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
+    -0x1.858eb79a20baep4,
+  },
+  { // Entry 821
+    -0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
+    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
+    0x1.858eb79a20bafp4,
+  },
+  { // Entry 822
+    0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
+    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
+    -0x1.858eb79a20bafp4,
+  },
+  { // Entry 823
+    -0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
+    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
+    0x1.858eb79a20bb0p4,
+  },
+  { // Entry 824
+    0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
+    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
+    -0x1.858eb79a20bb0p4,
+  },
+  { // Entry 825
+    0x1.fa7299b17573d373c615096572a0de04p-1,
+    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
+    0x1.fffffffffffffp62,
+  },
+  { // Entry 826
+    -0x1.fa7299b17573d373c615096572a0de04p-1,
+    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
+    -0x1.fffffffffffffp62,
+  },
+  { // Entry 827
+    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    0x1.0p63,
+  },
+  { // Entry 828
+    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    -0x1.0p63,
+  },
+  { // Entry 829
+    0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
+    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
+    0x1.0000000000001p63,
+  },
+  { // Entry 830
+    -0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
+    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
+    -0x1.0000000000001p63,
+  },
+  { // Entry 831
+    -0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
+    0x1.4ab650b8c60734385375e22603fcdb10p-1,
+    0x1.fffffffffffffp26,
+  },
+  { // Entry 832
+    0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
+    0x1.4ab650b8c60734385375e22603fcdb10p-1,
+    -0x1.fffffffffffffp26,
+  },
+  { // Entry 833
+    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    0x1.0p27,
+  },
+  { // Entry 834
+    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    -0x1.0p27,
+  },
+  { // Entry 835
+    -0x1.86dcc9155fe182d4515599426bb14b94p-1,
+    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
+    0x1.0000000000001p27,
+  },
+  { // Entry 836
+    0x1.86dcc9155fe182d4515599426bb14b94p-1,
+    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
+    -0x1.0000000000001p27,
+  },
+  { // Entry 837
+    -0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
+    0x1.40ad67e777b1df0195189f50a8c26345p-1,
+    0x1.fffffffffffffp23,
+  },
+  { // Entry 838
+    0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
+    0x1.40ad67e777b1df0195189f50a8c26345p-1,
+    -0x1.fffffffffffffp23,
+  },
+  { // Entry 839
+    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    0x1.0p24,
+  },
+  { // Entry 840
+    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    -0x1.0p24,
+  },
+  { // Entry 841
+    -0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
+    0x1.40ad680ce2f924d716769d1064bc8defp-1,
+    0x1.0000000000001p24,
+  },
+  { // Entry 842
+    0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
+    0x1.40ad680ce2f924d716769d1064bc8defp-1,
+    -0x1.0000000000001p24,
+  },
+  { // Entry 843
+    -0x1.837b9dddc1eabd379d729f575fc1144cp-1,
+    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
+    0x1.fffffffffffffp1,
+  },
+  { // Entry 844
+    0x1.837b9dddc1eabd379d729f575fc1144cp-1,
+    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
+    -0x1.fffffffffffffp1,
+  },
+  { // Entry 845
+    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    0x1.0p2,
+  },
+  { // Entry 846
+    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    -0x1.0p2,
+  },
+  { // Entry 847
+    -0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
+    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
+    0x1.0000000000001p2,
+  },
+  { // Entry 848
+    0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
+    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
+    -0x1.0000000000001p2,
+  },
+  { // Entry 849
+    0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
+    -0x1.aa2265753720101145230952e61c6f2cp-2,
+    0x1.fffffffffffffp0,
+  },
+  { // Entry 850
+    -0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
+    -0x1.aa2265753720101145230952e61c6f2cp-2,
+    -0x1.fffffffffffffp0,
+  },
+  { // Entry 851
+    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    0x1.0p1,
+  },
+  { // Entry 852
+    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    -0x1.0p1,
+  },
+  { // Entry 853
+    0x1.d18f6ead1b44435891f0c50e01826988p-1,
+    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
+    0x1.0000000000001p1,
+  },
+  { // Entry 854
+    -0x1.d18f6ead1b44435891f0c50e01826988p-1,
+    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
+    -0x1.0000000000001p1,
+  },
+  { // Entry 855
+    0x1.aed548f090ced79c79cbf790441f8197p-1,
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    0x1.fffffffffffffp-1,
+  },
+  { // Entry 856
+    -0x1.aed548f090ced79c79cbf790441f8197p-1,
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    -0x1.fffffffffffffp-1,
+  },
+  { // Entry 857
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.0p0,
+  },
+  { // Entry 858
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.0p0,
+  },
+  { // Entry 859
+    0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    0x1.0000000000001p0,
+  },
+  { // Entry 860
+    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    -0x1.0000000000001p0,
+  },
+  { // Entry 861
+    0x1.eaee8744b05ef07cd0b9089130598314p-2,
+    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
+    0x1.fffffffffffffp-2,
+  },
+  { // Entry 862
+    -0x1.eaee8744b05ef07cd0b9089130598314p-2,
+    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
+    -0x1.fffffffffffffp-2,
+  },
+  { // Entry 863
+    0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    0x1.0p-1,
+  },
+  { // Entry 864
+    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    -0x1.0p-1,
+  },
+  { // Entry 865
+    0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
+    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
+    0x1.0000000000001p-1,
+  },
+  { // Entry 866
+    -0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
+    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
+    -0x1.0000000000001p-1,
+  },
+  { // Entry 867
+    0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
+    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
+    0x1.fffffffffffffp-3,
+  },
+  { // Entry 868
+    -0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
+    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
+    -0x1.fffffffffffffp-3,
+  },
+  { // Entry 869
+    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    0x1.0p-2,
+  },
+  { // Entry 870
+    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    -0x1.0p-2,
+  },
+  { // Entry 871
+    0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
+    0x1.f01549f7deea155458b92a4167aec7ffp-1,
+    0x1.0000000000001p-2,
+  },
+  { // Entry 872
+    -0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
+    0x1.f01549f7deea155458b92a4167aec7ffp-1,
+    -0x1.0000000000001p-2,
+  },
+  { // Entry 873
+    0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
+    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
+    0x1.fffffffffffffp-4,
+  },
+  { // Entry 874
+    -0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
+    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
+    -0x1.fffffffffffffp-4,
+  },
+  { // Entry 875
+    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    0x1.0p-3,
+  },
+  { // Entry 876
+    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    -0x1.0p-3,
+  },
+  { // Entry 877
+    0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
+    0x1.fc015527d5bd365a92186b203507f9adp-1,
+    0x1.0000000000001p-3,
+  },
+  { // Entry 878
+    -0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
+    0x1.fc015527d5bd365a92186b203507f9adp-1,
+    -0x1.0000000000001p-3,
+  },
+  { // Entry 879
+    0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
+    0x1.ff0015549f4d34da0b745dc7433145efp-1,
+    0x1.fffffffffffffp-5,
+  },
+  { // Entry 880
+    -0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
+    0x1.ff0015549f4d34da0b745dc7433145efp-1,
+    -0x1.fffffffffffffp-5,
+  },
+  { // Entry 881
+    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    0x1.0p-4,
+  },
+  { // Entry 882
+    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    -0x1.0p-4,
+  },
+  { // Entry 883
+    0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
+    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
+    0x1.0000000000001p-4,
+  },
+  { // Entry 884
+    -0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
+    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
+    -0x1.0000000000001p-4,
+  },
+  { // Entry 885
+    0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
+    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
+    0x1.fffffffffffffp-6,
+  },
+  { // Entry 886
+    -0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
+    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
+    -0x1.fffffffffffffp-6,
+  },
+  { // Entry 887
+    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    0x1.0p-5,
+  },
+  { // Entry 888
+    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    -0x1.0p-5,
+  },
+  { // Entry 889
+    0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
+    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
+    0x1.0000000000001p-5,
+  },
+  { // Entry 890
+    -0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
+    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
+    -0x1.0000000000001p-5,
+  },
+  { // Entry 891
+    0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
+    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
+    0x1.fffffffffffffp-7,
+  },
+  { // Entry 892
+    -0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
+    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
+    -0x1.fffffffffffffp-7,
+  },
+  { // Entry 893
+    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    0x1.0p-6,
+  },
+  { // Entry 894
+    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    -0x1.0p-6,
+  },
+  { // Entry 895
+    0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
+    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
+    0x1.0000000000001p-6,
+  },
+  { // Entry 896
+    -0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
+    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
+    -0x1.0000000000001p-6,
+  },
+  { // Entry 897
+    0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
+    0x1.fffffff00000001555565549f49c9f4dp-1,
+    0x1.fffffffffffffp-15,
+  },
+  { // Entry 898
+    -0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
+    0x1.fffffff00000001555565549f49c9f4dp-1,
+    -0x1.fffffffffffffp-15,
+  },
+  { // Entry 899
+    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    0x1.0p-14,
+  },
+  { // Entry 900
+    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    -0x1.0p-14,
+  },
+  { // Entry 901
+    0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
+    0x1.fffffff00000001555535549f4a49f4dp-1,
+    0x1.0000000000001p-14,
+  },
+  { // Entry 902
+    -0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
+    0x1.fffffff00000001555535549f4a49f4dp-1,
+    -0x1.0000000000001p-14,
+  },
+  { // Entry 903
+    0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
+    0x1.fffffffffffffc000000000000415555p-1,
+    0x1.fffffffffffffp-28,
+  },
+  { // Entry 904
+    -0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
+    0x1.fffffffffffffc000000000000415555p-1,
+    -0x1.fffffffffffffp-28,
+  },
+  { // Entry 905
+    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    0x1.fffffffffffffc000000000000015555p-1,
+    0x1.0p-27,
+  },
+  { // Entry 906
+    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    0x1.fffffffffffffc000000000000015555p-1,
+    -0x1.0p-27,
+  },
+  { // Entry 907
+    0x1.0000000000000f555555555555357777p-27,
+    0x1.fffffffffffffbffffffffffff815555p-1,
+    0x1.0000000000001p-27,
+  },
+  { // Entry 908
+    -0x1.0000000000000f555555555555357777p-27,
+    0x1.fffffffffffffbffffffffffff815555p-1,
+    -0x1.0000000000001p-27,
+  },
+  { // Entry 909
+    0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
+    0x1.fffffffffffffff00000000000010015p-1,
+    0x1.fffffffffffffp-31,
+  },
+  { // Entry 910
+    -0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
+    0x1.fffffffffffffff00000000000010015p-1,
+    -0x1.fffffffffffffp-31,
+  },
+  { // Entry 911
+    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    0x1.fffffffffffffff00000000000000015p-1,
+    0x1.0p-30,
+  },
+  { // Entry 912
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    0x1.fffffffffffffff00000000000000015p-1,
+    -0x1.0p-30,
+  },
+  { // Entry 913
+    0x1.0000000000000ffd555555555554d557p-30,
+    0x1.ffffffffffffffeffffffffffffe0015p-1,
+    0x1.0000000000001p-30,
+  },
+  { // Entry 914
+    -0x1.0000000000000ffd555555555554d557p-30,
+    0x1.ffffffffffffffeffffffffffffe0015p-1,
+    -0x1.0000000000001p-30,
+  },
+  { // Entry 915
+    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    -0x1.fffffffffffffp1023,
+  },
+  { // Entry 916
+    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    0x1.fffffffffffffp1023,
+  },
+  { // Entry 917
+    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    0x1.fffffffffffffp1023,
+  },
+  { // Entry 918
+    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    -0x1.fffffffffffffp1023,
+  },
+  { // Entry 919
+    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    0x1.fffffffffffffp1023,
+  },
+  { // Entry 920
+    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
+    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
+    -0x1.fffffffffffffp1023,
+  },
+  { // Entry 921
+    0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
+    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
+    0x1.ffffffffffffep1023,
+  },
+  { // Entry 922
+    -0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
+    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
+    -0x1.ffffffffffffep1023,
+  },
+  { // Entry 923
+    0x1.1a62633145c06e0e689481270436e2edp-53,
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    0x1.921fb54442d18p1,
+  },
+  { // Entry 924
+    -0x1.1a62633145c06e0e689481270436e2edp-53,
+    -0x1.ffffffffffffffffffffffffffb220c5p-1,
+    -0x1.921fb54442d18p1,
+  },
+  { // Entry 925
+    0x1.ffffffffffffffffffffffffffec8831p-1,
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    0x1.921fb54442d18p0,
+  },
+  { // Entry 926
+    -0x1.ffffffffffffffffffffffffffec8831p-1,
+    0x1.1a62633145c06e0e6894812704419fa8p-54,
+    -0x1.921fb54442d18p0,
+  },
+  { // Entry 927
+    0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    0x1.0000000000001p0,
+  },
+  { // Entry 928
+    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
+    0x1.14a280fb50689e362ffdd221e2551035p-1,
+    -0x1.0000000000001p0,
+  },
+  { // Entry 929
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.0p0,
+  },
+  { // Entry 930
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.0p0,
+  },
+  { // Entry 931
+    0x1.aed548f090ced79c79cbf790441f8197p-1,
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    0x1.fffffffffffffp-1,
+  },
+  { // Entry 932
+    -0x1.aed548f090ced79c79cbf790441f8197p-1,
+    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
+    -0x1.fffffffffffffp-1,
+  },
+  { // Entry 933
+    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    0x1.921fb54442d18p-1,
+  },
+  { // Entry 934
+    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
+    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
+    -0x1.921fb54442d18p-1,
+  },
+  { // Entry 935
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p-1022,
+  },
+  { // Entry 936
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022,
+  },
+  { // Entry 937
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1022,
+  },
+  { // Entry 938
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022,
+  },
+  { // Entry 939
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep-1023,
+  },
+  { // Entry 940
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023,
+  },
+  { // Entry 941
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffcp-1023,
+  },
+  { // Entry 942
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffcp-1023,
+  },
+  { // Entry 943
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1073,
+  },
+  { // Entry 944
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1073,
+  },
+  { // Entry 945
+    0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p-1074,
+  },
+  { // Entry 946
+    -0.0,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+  },
+  { // Entry 947
+    0.0,
+    0x1.p0,
+    0.0,
+  },
+  { // Entry 948
+    -0.0,
+    0x1.p0,
+    -0.0,
+  },
+};
diff --git a/tests/math_data/sincosf_intel_data.h b/tests/math_data/sincosf_intel_data.h
new file mode 100644
index 0000000..5b1b535
--- /dev/null
+++ b/tests/math_data/sincosf_intel_data.h
@@ -0,0 +1,4633 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_2_1_t<float, float, float> g_sincosf_intel_data[] = {
+  { // Entry 0
+    -0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
+    0x1.080e74c116863cfab82a0fd59c71b363p-1,
+    -0x1.0768p0,
+  },
+  { // Entry 1
+    0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
+    0x1.080e74c116863cfab82a0fd59c71b363p-1,
+    0x1.0768p0,
+  },
+  { // Entry 2
+    0x1.762da6648fde00e398462e7163094d52p-2,
+    0x1.dc9802ffffffe0cbfc57ef287d3c83afp-1,
+    -0x1.8f219cp5,
+  },
+  { // Entry 3
+    -0x1.762da6648fde00e398462e7163094d52p-2,
+    0x1.dc9802ffffffe0cbfc57ef287d3c83afp-1,
+    0x1.8f219cp5,
+  },
+  { // Entry 4
+    -0x1.493b6a7d3f5b7bf66fa32a01515d6c43p-1,
+    -0x1.881c26fd25d0bf6d6ea38708a0976b35p-1,
+    -0x1.d3a51ap80,
+  },
+  { // Entry 5
+    0x1.493b6a7d3f5b7bf66fa32a01515d6c43p-1,
+    -0x1.881c26fd25d0bf6d6ea38708a0976b35p-1,
+    0x1.d3a51ap80,
+  },
+  { // Entry 6
+    -0x1.e0d1dc006e85835b0394abe97de77fbcp-4,
+    0x1.fc75ca6313ef766012db3ca99a1a52d1p-1,
+    -0x1.e1ee52p-4,
+  },
+  { // Entry 7
+    0x1.e0d1dc006e85835b0394abe97de77fbcp-4,
+    0x1.fc75ca6313ef766012db3ca99a1a52d1p-1,
+    0x1.e1ee52p-4,
+  },
+  { // Entry 8
+    -0x1.2b6a9ca3df622efe2aa3154a6352bc70p-1,
+    -0x1.9f52def55d89e92e7df20ec21161deb8p-1,
+    -0x1.f3ffe2p24,
+  },
+  { // Entry 9
+    0x1.2b6a9ca3df622efe2aa3154a6352bc70p-1,
+    -0x1.9f52def55d89e92e7df20ec21161deb8p-1,
+    0x1.f3ffe2p24,
+  },
+  { // Entry 10
+    0x1.a3422af13b2cfb78d0cc458d9ac6bde9p-1,
+    -0x1.25e1aa1d9383c1f27027cf69b69477fdp-1,
+    -0x1.ff211ep24,
+  },
+  { // Entry 11
+    -0x1.a3422af13b2cfb78d0cc458d9ac6bde9p-1,
+    -0x1.25e1aa1d9383c1f27027cf69b69477fdp-1,
+    0x1.ff211ep24,
+  },
+  { // Entry 12
+    0x1.ffffffaaaaaaaeeeeeeed4ed4ed549c6p-13,
+    0x1.ffffff000000155555549f49f4a28a28p-1,
+    0x1.p-12,
+  },
+  { // Entry 13
+    -0x1.ffffffaaaaaaaeeeeeeed4ed4ed549c6p-13,
+    0x1.ffffff000000155555549f49f4a28a28p-1,
+    -0x1.p-12,
+  },
+  { // Entry 14
+    0x1.000001d555545777758cbfcafc09ef7ep-12,
+    0x1.fffffefffffc155551ff49f696c4aecap-1,
+    0x1.000002p-12,
+  },
+  { // Entry 15
+    -0x1.000001d555545777758cbfcafc09ef7ep-12,
+    0x1.fffffefffffc155551ff49f696c4aecap-1,
+    -0x1.000002p-12,
+  },
+  { // Entry 16
+    0x1.000001ffffffffffd555545555535555p-32,
+    0x1.fffffffffffffffefffffbfffffcp-1,
+    0x1.000002p-32,
+  },
+  { // Entry 17
+    -0x1.000001ffffffffffd555545555535555p-32,
+    0x1.fffffffffffffffefffffbfffffcp-1,
+    -0x1.000002p-32,
+  },
+  { // Entry 18
+    0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
+    0x1.c151df4f12b197a665a2907e4933a1efp-1,
+    0x1.000150p-1,
+  },
+  { // Entry 19
+    -0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
+    0x1.c151df4f12b197a665a2907e4933a1efp-1,
+    -0x1.000150p-1,
+  },
+  { // Entry 20
+    0x1.eaf77efff659021bc827bbd5696ad19ep-2,
+    0x1.c1500d494ed2cc5002c27cc5ca3d96f8p-1,
+    0x1.00051cp-1,
+  },
+  { // Entry 21
+    -0x1.eaf77efff659021bc827bbd5696ad19ep-2,
+    0x1.c1500d494ed2cc5002c27cc5ca3d96f8p-1,
+    -0x1.00051cp-1,
+  },
+  { // Entry 22
+    -0x1.5aa53c1c1317f30b4c108722e2b64612p-1,
+    0x1.78cdb6ffa6bff899e1723ed0139c48cbp-1,
+    0x1.000fdep80,
+  },
+  { // Entry 23
+    0x1.5aa53c1c1317f30b4c108722e2b64612p-1,
+    0x1.78cdb6ffa6bff899e1723ed0139c48cbp-1,
+    -0x1.000fdep80,
+  },
+  { // Entry 24
+    0x1.aef38822e64311445545980fbc5b56fap-1,
+    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
+    0x1.001cp0,
+  },
+  { // Entry 25
+    -0x1.aef38822e64311445545980fbc5b56fap-1,
+    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
+    -0x1.001cp0,
+  },
+  { // Entry 26
+    -0x1.7e12aee0c862b1709bd50205bba32167p-1,
+    -0x1.54d4290010a68826a882e7c87d6694d2p-1,
+    0x1.0027b8p40,
+  },
+  { // Entry 27
+    0x1.7e12aee0c862b1709bd50205bba32167p-1,
+    -0x1.54d4290010a68826a882e7c87d6694d2p-1,
+    -0x1.0027b8p40,
+  },
+  { // Entry 28
+    -0x1.bd6944ef4dd1b43962e2d3480410fd87p-1,
+    0x1.f8fc8efff67d834f6878ab4e44fa89b5p-2,
+    0x1.004840p68,
+  },
+  { // Entry 29
+    0x1.bd6944ef4dd1b43962e2d3480410fd87p-1,
+    0x1.f8fc8efff67d834f6878ab4e44fa89b5p-2,
+    -0x1.004840p68,
+  },
+  { // Entry 30
+    0x1.f4e23e00165a4907a656a7cf532bbde4p-2,
+    0x1.be91601e47bed6d45e8372687b373c0cp-1,
+    0x1.05b0p-1,
+  },
+  { // Entry 31
+    -0x1.f4e23e00165a4907a656a7cf532bbde4p-2,
+    0x1.be91601e47bed6d45e8372687b373c0cp-1,
+    -0x1.05b0p-1,
+  },
+  { // Entry 32
+    0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
+    0x1.080e74c116863cfab82a0fd59c71b363p-1,
+    0x1.0768p0,
+  },
+  { // Entry 33
+    -0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
+    0x1.080e74c116863cfab82a0fd59c71b363p-1,
+    -0x1.0768p0,
+  },
+  { // Entry 34
+    0x1.bcb8aafffffd69d2865aaf3f4c5074e8p-1,
+    0x1.fb69a6dc513bcba59d5dc68d3d59a05cp-2,
+    0x1.0d67a4p0,
+  },
+  { // Entry 35
+    -0x1.bcb8aafffffd69d2865aaf3f4c5074e8p-1,
+    0x1.fb69a6dc513bcba59d5dc68d3d59a05cp-2,
+    -0x1.0d67a4p0,
+  },
+  { // Entry 36
+    0x1.bf683cffffec6e8672a49f08aae49c46p-1,
+    0x1.f1e0f653d695977ccd240ff6b9297393p-2,
+    0x1.1024p0,
+  },
+  { // Entry 37
+    -0x1.bf683cffffec6e8672a49f08aae49c46p-1,
+    0x1.f1e0f653d695977ccd240ff6b9297393p-2,
+    -0x1.1024p0,
+  },
+  { // Entry 38
+    0x1.8b1e8e1c16a8d970a78a2391eea6575cp-1,
+    -0x1.459d4500000092b4b8307c652ee639a7p-1,
+    0x1.21497ep1,
+  },
+  { // Entry 39
+    -0x1.8b1e8e1c16a8d970a78a2391eea6575cp-1,
+    -0x1.459d4500000092b4b8307c652ee639a7p-1,
+    -0x1.21497ep1,
+  },
+  { // Entry 40
+    0x1.6991e0ffe7f9c9b3ef7b3017d23639fap-1,
+    -0x1.6a81c4133db73e276c89e724c6fe975bp-1,
+    0x1.2dc230p1,
+  },
+  { // Entry 41
+    -0x1.6991e0ffe7f9c9b3ef7b3017d23639fap-1,
+    -0x1.6a81c4133db73e276c89e724c6fe975bp-1,
+    -0x1.2dc230p1,
+  },
+  { // Entry 42
+    0x1.41f6bd0000d13ba2bd7a63bf6d950865p-1,
+    -0x1.8e197fe4fac9901dc07a2878baf15c7ap-1,
+    0x1.344248p18,
+  },
+  { // Entry 43
+    -0x1.41f6bd0000d13ba2bd7a63bf6d950865p-1,
+    -0x1.8e197fe4fac9901dc07a2878baf15c7ap-1,
+    -0x1.344248p18,
+  },
+  { // Entry 44
+    0x1.37f8deffffff61ca15c366b3add8f373p-1,
+    -0x1.95fa20d230fdf9e8cccc5921e61f03adp-1,
+    0x1.3e42p1,
+  },
+  { // Entry 45
+    -0x1.37f8deffffff61ca15c366b3add8f373p-1,
+    -0x1.95fa20d230fdf9e8cccc5921e61f03adp-1,
+    -0x1.3e42p1,
+  },
+  { // Entry 46
+    0x1.2ed7ce518f4660cce49556856784970cp-1,
+    0x1.9cd4f3000002264af2b32ebe5d8243c0p-1,
+    0x1.440c3ap-1,
+  },
+  { // Entry 47
+    -0x1.2ed7ce518f4660cce49556856784970cp-1,
+    0x1.9cd4f3000002264af2b32ebe5d8243c0p-1,
+    -0x1.440c3ap-1,
+  },
+  { // Entry 48
+    0x1.475fc937750bdf2f704177612d31dc1fp-1,
+    0x1.89a999000012c047e4b24181d6158640p-1,
+    0x1.632f6ap-1,
+  },
+  { // Entry 49
+    -0x1.475fc937750bdf2f704177612d31dc1fp-1,
+    0x1.89a999000012c047e4b24181d6158640p-1,
+    -0x1.632f6ap-1,
+  },
+  { // Entry 50
+    -0x1.8ace1cfcc0a766b35d0e8f48f3169e8ap-1,
+    -0x1.45fec95a40619819e3307aebe0cb5e89p-1,
+    0x1.6e8f18p24,
+  },
+  { // Entry 51
+    0x1.8ace1cfcc0a766b35d0e8f48f3169e8ap-1,
+    -0x1.45fec95a40619819e3307aebe0cb5e89p-1,
+    -0x1.6e8f18p24,
+  },
+  { // Entry 52
+    0x1.7c6b92ff24ff028ea35c459e5ebeb2cdp-1,
+    0x1.56ac2ae54cc9a5210ae673ea1ce31d47p-1,
+    0x1.795840p23,
+  },
+  { // Entry 53
+    -0x1.7c6b92ff24ff028ea35c459e5ebeb2cdp-1,
+    0x1.56ac2ae54cc9a5210ae673ea1ce31d47p-1,
+    -0x1.795840p23,
+  },
+  { // Entry 54
+    0x1.697cf4ffea9244e85cea640d13c6fbb5p-1,
+    -0x1.6a96a106ace21610ab529c9047c7e6e2p-1,
+    0x1.7fe7fep35,
+  },
+  { // Entry 55
+    -0x1.697cf4ffea9244e85cea640d13c6fbb5p-1,
+    -0x1.6a96a106ace21610ab529c9047c7e6e2p-1,
+    -0x1.7fe7fep35,
+  },
+  { // Entry 56
+    0x1.9c6cf2fffffe8588512ea3c808b0fa9fp-1,
+    0x1.2f6560e0f14cd5d68920bec0e0c25354p-1,
+    0x1.ce1026p2,
+  },
+  { // Entry 57
+    -0x1.9c6cf2fffffe8588512ea3c808b0fa9fp-1,
+    0x1.2f6560e0f14cd5d68920bec0e0c25354p-1,
+    -0x1.ce1026p2,
+  },
+  { // Entry 58
+    -0x1.07fac04c6e73f485096bdaa3e65044d9p-1,
+    -0x1.b6b387ffceb67a18c15e868550b96462p-1,
+    0x1.d775d0p1,
+  },
+  { // Entry 59
+    0x1.07fac04c6e73f485096bdaa3e65044d9p-1,
+    -0x1.b6b387ffceb67a18c15e868550b96462p-1,
+    -0x1.d775d0p1,
+  },
+  { // Entry 60
+    0x1.9a8c62f4b2a949b06924662d9436bf17p-1,
+    0x1.31ee7074e3ebc5a30f0092ec6c5d8b80p-1,
+    0x1.dfeaaap108,
+  },
+  { // Entry 61
+    -0x1.9a8c62f4b2a949b06924662d9436bf17p-1,
+    0x1.31ee7074e3ebc5a30f0092ec6c5d8b80p-1,
+    -0x1.dfeaaap108,
+  },
+  { // Entry 62
+    0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
+    0x1.c72cd4e1d6c78547d31707be80b4b0aep-1,
+    0x1.e7061ep-2,
+  },
+  { // Entry 63
+    -0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
+    0x1.c72cd4e1d6c78547d31707be80b4b0aep-1,
+    -0x1.e7061ep-2,
+  },
+  { // Entry 64
+    -0x1.483445d4194813168a1ac63eee1943f9p-1,
+    0x1.88f882fcbc81ffdf720a4bb1b2fca71dp-1,
+    0x1.e89b2ap80,
+  },
+  { // Entry 65
+    0x1.483445d4194813168a1ac63eee1943f9p-1,
+    0x1.88f882fcbc81ffdf720a4bb1b2fca71dp-1,
+    -0x1.e89b2ap80,
+  },
+  { // Entry 66
+    0x1.565e410014916fa6550e606ed588c6b8p-1,
+    0x1.7cb1b34af85589bdaf7c0793af30b682p-1,
+    0x1.fe8270p18,
+  },
+  { // Entry 67
+    -0x1.565e410014916fa6550e606ed588c6b8p-1,
+    0x1.7cb1b34af85589bdaf7c0793af30b682p-1,
+    -0x1.fe8270p18,
+  },
+  { // Entry 68
+    -0x1.8356fbaea0454bce3983d9a0e0250c55p-1,
+    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
+    0x1.fff1fep1,
+  },
+  { // Entry 69
+    0x1.8356fbaea0454bce3983d9a0e0250c55p-1,
+    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
+    -0x1.fff1fep1,
+  },
+  { // Entry 70
+    0x1.fa9d6bfb33a77b2e3b3289168ced6dcap-1,
+    -0x1.28406a0025545c9a568dacd45518dd65p-3,
+    0x1.fff1fep2,
+  },
+  { // Entry 71
+    -0x1.fa9d6bfb33a77b2e3b3289168ced6dcap-1,
+    -0x1.28406a0025545c9a568dacd45518dd65p-3,
+    -0x1.fff1fep2,
+  },
+  { // Entry 72
+    0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
+    -0x1.aa2241160227896c68ef17839f17dce5p-2,
+    0x1.fffff6p0,
+  },
+  { // Entry 73
+    -0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
+    -0x1.aa2241160227896c68ef17839f17dce5p-2,
+    -0x1.fffff6p0,
+  },
+  { // Entry 74
+    0x1.fffffaaaaab2eeeedc3dc3f1ee7b41fep-12,
+    0x1.fffffc00001155553a7d27f4a289f319p-1,
+    0x1.fffffcp-12,
+  },
+  { // Entry 75
+    -0x1.fffffaaaaab2eeeedc3dc3f1ee7b41fep-12,
+    0x1.fffffc00001155553a7d27f4a289f319p-1,
+    -0x1.fffffcp-12,
+  },
+  { // Entry 76
+    -0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+  },
+  { // Entry 77
+    0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149,
+  },
+  { // Entry 78
+    0.0,
+    0x1.p0,
+    0.0,
+  },
+  { // Entry 79
+    0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149,
+  },
+  { // Entry 80
+    -0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+  },
+  { // Entry 81
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p-126,
+  },
+  { // Entry 82
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p-126,
+  },
+  { // Entry 83
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-126,
+  },
+  { // Entry 84
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-126,
+  },
+  { // Entry 85
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp-127,
+  },
+  { // Entry 86
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp-127,
+  },
+  { // Entry 87
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp-127,
+  },
+  { // Entry 88
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp-127,
+  },
+  { // Entry 89
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-126,
+  },
+  { // Entry 90
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-126,
+  },
+  { // Entry 91
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p-126,
+  },
+  { // Entry 92
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p-126,
+  },
+  { // Entry 93
+    0x1.999999d44f3058c789014b7d0e22fec3p-13,
+    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
+    0x1.99999ap-13,
+  },
+  { // Entry 94
+    -0x1.999999d44f3058c789014b7d0e22fec3p-13,
+    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
+    -0x1.99999ap-13,
+  },
+  { // Entry 95
+    0x1.999999513cc173e51bb9955b066f1db8p-12,
+    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
+    0x1.99999ap-12,
+  },
+  { // Entry 96
+    -0x1.999999513cc173e51bb9955b066f1db8p-12,
+    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
+    -0x1.99999ap-12,
+  },
+  { // Entry 97
+    0x1.333332d91685321e5fc397d20a5af1e6p-11,
+    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
+    0x1.333334p-11,
+  },
+  { // Entry 98
+    -0x1.333332d91685321e5fc397d20a5af1e6p-11,
+    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
+    -0x1.333334p-11,
+  },
+  { // Entry 99
+    0x1.99999744f306dc03e9ef70897f78299ep-11,
+    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
+    0x1.99999ap-11,
+  },
+  { // Entry 100
+    -0x1.99999744f306dc03e9ef70897f78299ep-11,
+    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
+    -0x1.99999ap-11,
+  },
+  { // Entry 101
+    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    0x1.p-10,
+  },
+  { // Entry 102
+    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    0x1.fffff0000015555549f49f4d34d34ca0p-1,
+    -0x1.p-10,
+  },
+  { // Entry 103
+    0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
+    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
+    0x1.333334p-10,
+  },
+  { // Entry 104
+    -0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
+    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
+    -0x1.333334p-10,
+  },
+  { // Entry 105
+    0x1.666660aec330821c7a100cf488c380ebp-10,
+    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
+    0x1.666668p-10,
+  },
+  { // Entry 106
+    -0x1.666660aec330821c7a100cf488c380ebp-10,
+    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
+    -0x1.666668p-10,
+  },
+  { // Entry 107
+    0x1.99999113cc034144fdbdc8a1dc713253p-10,
+    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
+    0x1.99999cp-10,
+  },
+  { // Entry 108
+    -0x1.99999113cc034144fdbdc8a1dc713253p-10,
+    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
+    -0x1.99999cp-10,
+  },
+  { // Entry 109
+    0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
+    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
+    0x1.ccccccp-10,
+  },
+  { // Entry 110
+    -0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
+    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
+    -0x1.ccccccp-10,
+  },
+  { // Entry 111
+    0x1.0665ae3615b5b7de52798064dfc59b29p-7,
+    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
+    0x1.066666p-7,
+  },
+  { // Entry 112
+    -0x1.0665ae3615b5b7de52798064dfc59b29p-7,
+    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
+    -0x1.066666p-7,
+  },
+  { // Entry 113
+    0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
+    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
+    0x1.ccccccp-7,
+  },
+  { // Entry 114
+    -0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
+    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
+    -0x1.ccccccp-7,
+  },
+  { // Entry 115
+    0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
+    0x1.ffe57a785123226c1e2efb411353edc9p-1,
+    0x1.499998p-6,
+  },
+  { // Entry 116
+    -0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
+    0x1.ffe57a785123226c1e2efb411353edc9p-1,
+    -0x1.499998p-6,
+  },
+  { // Entry 117
+    0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
+    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
+    0x1.acccccp-6,
+  },
+  { // Entry 118
+    -0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
+    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
+    -0x1.acccccp-6,
+  },
+  { // Entry 119
+    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    0x1.08p-5,
+  },
+  { // Entry 120
+    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
+    -0x1.08p-5,
+  },
+  { // Entry 121
+    0x1.3985fead44fa2b851e651acba369d769p-5,
+    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
+    0x1.39999ap-5,
+  },
+  { // Entry 122
+    -0x1.3985fead44fa2b851e651acba369d769p-5,
+    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
+    -0x1.39999ap-5,
+  },
+  { // Entry 123
+    0x1.6b14beb5d40d745096247e59b622828bp-5,
+    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
+    0x1.6b3334p-5,
+  },
+  { // Entry 124
+    -0x1.6b14beb5d40d745096247e59b622828bp-5,
+    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
+    -0x1.6b3334p-5,
+  },
+  { // Entry 125
+    0x1.9ca01671a7995fc97cebd69729cc4309p-5,
+    0x1.ff59a00cc4ad492ca2597495412998edp-1,
+    0x1.9ccccep-5,
+  },
+  { // Entry 126
+    -0x1.9ca01671a7995fc97cebd69729cc4309p-5,
+    0x1.ff59a00cc4ad492ca2597495412998edp-1,
+    -0x1.9ccccep-5,
+  },
+  { // Entry 127
+    0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
+    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
+    0x1.ce6666p-5,
+  },
+  { // Entry 128
+    -0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
+    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
+    -0x1.ce6666p-5,
+  },
+  { // Entry 129
+    0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
+    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
+    0x1.5e7fc4p-1,
+  },
+  { // Entry 130
+    -0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
+    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
+    -0x1.5e7fc4p-1,
+  },
+  { // Entry 131
+    0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
+    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
+    0x1.4e7fc4p0,
+  },
+  { // Entry 132
+    -0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
+    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
+    -0x1.4e7fc4p0,
+  },
+  { // Entry 133
+    0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
+    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
+    0x1.edbfa6p0,
+  },
+  { // Entry 134
+    -0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
+    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
+    -0x1.edbfa6p0,
+  },
+  { // Entry 135
+    0x1.1d347aa02feb3bb1750d25509435da88p-1,
+    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
+    0x1.467fc4p1,
+  },
+  { // Entry 136
+    -0x1.1d347aa02feb3bb1750d25509435da88p-1,
+    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
+    -0x1.467fc4p1,
+  },
+  { // Entry 137
+    -0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
+    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
+    0x1.961fb4p1,
+  },
+  { // Entry 138
+    0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
+    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
+    -0x1.961fb4p1,
+  },
+  { // Entry 139
+    -0x1.3734cbced9c0f484e5f762e00216e620p-1,
+    -0x1.969082007733d787f4c36ba0f9425694p-1,
+    0x1.e5bfa4p1,
+  },
+  { // Entry 140
+    0x1.3734cbced9c0f484e5f762e00216e620p-1,
+    -0x1.969082007733d787f4c36ba0f9425694p-1,
+    -0x1.e5bfa4p1,
+  },
+  { // Entry 141
+    -0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
+    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
+    0x1.1aafcap2,
+  },
+  { // Entry 142
+    0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
+    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
+    -0x1.1aafcap2,
+  },
+  { // Entry 143
+    -0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
+    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
+    0x1.427fc2p2,
+  },
+  { // Entry 144
+    0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
+    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
+    -0x1.427fc2p2,
+  },
+  { // Entry 145
+    -0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
+    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
+    0x1.6a4fbap2,
+  },
+  { // Entry 146
+    0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
+    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
+    -0x1.6a4fbap2,
+  },
+  { // Entry 147
+    -0x1.263123df22d13ed329c665c83c0e71e8p-1,
+    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
+    0x1.6af2f0p2,
+  },
+  { // Entry 148
+    0x1.263123df22d13ed329c665c83c0e71e8p-1,
+    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
+    -0x1.6af2f0p2,
+  },
+  { // Entry 149
+    -0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
+    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
+    0x1.43c62ap2,
+  },
+  { // Entry 150
+    0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
+    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
+    -0x1.43c62ap2,
+  },
+  { // Entry 151
+    -0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
+    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
+    0x1.1c9964p2,
+  },
+  { // Entry 152
+    0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
+    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
+    -0x1.1c9964p2,
+  },
+  { // Entry 153
+    -0x1.472768637ea8866a652098a43aa688a6p-1,
+    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
+    0x1.ead93cp1,
+  },
+  { // Entry 154
+    0x1.472768637ea8866a652098a43aa688a6p-1,
+    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
+    -0x1.ead93cp1,
+  },
+  { // Entry 155
+    -0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
+    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
+    0x1.9c7fb0p1,
+  },
+  { // Entry 156
+    0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
+    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
+    -0x1.9c7fb0p1,
+  },
+  { // Entry 157
+    0x1.034c643295153aaffe5d9a0f29e92844p-1,
+    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
+    0x1.4e2624p1,
+  },
+  { // Entry 158
+    -0x1.034c643295153aaffe5d9a0f29e92844p-1,
+    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
+    -0x1.4e2624p1,
+  },
+  { // Entry 159
+    0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
+    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
+    0x1.ff9932p0,
+  },
+  { // Entry 160
+    -0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
+    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
+    -0x1.ff9932p0,
+  },
+  { // Entry 161
+    0x1.f7501e002bcafb897f931931d3a57afdp-1,
+    0x1.77a92ca01bc79c195dda33736807f986p-3,
+    0x1.62e61cp0,
+  },
+  { // Entry 162
+    -0x1.f7501e002bcafb897f931931d3a57afdp-1,
+    0x1.77a92ca01bc79c195dda33736807f986p-3,
+    -0x1.62e61cp0,
+  },
+  { // Entry 163
+    0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
+    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
+    0x1.8c662cp-1,
+  },
+  { // Entry 164
+    -0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
+    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
+    -0x1.8c662cp-1,
+  },
+  { // Entry 165
+    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    -0x1.a8aa1cp0,
+  },
+  { // Entry 166
+    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    0x1.a8aa1cp0,
+  },
+  { // Entry 167
+    -0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
+    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
+    -0x1.95ec8ap0,
+  },
+  { // Entry 168
+    0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
+    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
+    0x1.95ec8ap0,
+  },
+  { // Entry 169
+    -0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
+    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
+    -0x1.832ef8p0,
+  },
+  { // Entry 170
+    0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
+    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
+    0x1.832ef8p0,
+  },
+  { // Entry 171
+    -0x1.fb933b89d7db3286eed0cfeabee98875p-1,
+    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
+    -0x1.707166p0,
+  },
+  { // Entry 172
+    0x1.fb933b89d7db3286eed0cfeabee98875p-1,
+    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
+    0x1.707166p0,
+  },
+  { // Entry 173
+    -0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
+    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
+    -0x1.5db3d4p0,
+  },
+  { // Entry 174
+    0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
+    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
+    0x1.5db3d4p0,
+  },
+  { // Entry 175
+    -0x1.ec5881a09c46aae020cd9036098a196ep-1,
+    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
+    -0x1.4af642p0,
+  },
+  { // Entry 176
+    0x1.ec5881a09c46aae020cd9036098a196ep-1,
+    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
+    0x1.4af642p0,
+  },
+  { // Entry 177
+    -0x1.e0c04795919d961a5e83e505df31c624p-1,
+    0x1.60437277d48067e85230bce1883eaabap-2,
+    -0x1.3838b0p0,
+  },
+  { // Entry 178
+    0x1.e0c04795919d961a5e83e505df31c624p-1,
+    0x1.60437277d48067e85230bce1883eaabap-2,
+    0x1.3838b0p0,
+  },
+  { // Entry 179
+    -0x1.d294cdef7cc161633a02d3e62058be0ep-1,
+    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
+    -0x1.257b1ep0,
+  },
+  { // Entry 180
+    0x1.d294cdef7cc161633a02d3e62058be0ep-1,
+    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
+    0x1.257b1ep0,
+  },
+  { // Entry 181
+    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    -0x1.12bd92p0,
+  },
+  { // Entry 182
+    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    0x1.12bd92p0,
+  },
+  { // Entry 183
+    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    -0x1.ea5c3ep-1,
+  },
+  { // Entry 184
+    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    0x1.ea5c3ep-1,
+  },
+  { // Entry 185
+    -0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
+    0x1.3805a2dafda7f8554aec65dab348a714p-1,
+    -0x1.d4b87cp-1,
+  },
+  { // Entry 186
+    0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
+    0x1.3805a2dafda7f8554aec65dab348a714p-1,
+    0x1.d4b87cp-1,
+  },
+  { // Entry 187
+    -0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
+    0x1.48e52ff5bbe794618b85190b86411824p-1,
+    -0x1.bf14bap-1,
+  },
+  { // Entry 188
+    0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
+    0x1.48e52ff5bbe794618b85190b86411824p-1,
+    0x1.bf14bap-1,
+  },
+  { // Entry 189
+    -0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
+    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
+    -0x1.a970f8p-1,
+  },
+  { // Entry 190
+    0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
+    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
+    0x1.a970f8p-1,
+  },
+  { // Entry 191
+    -0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
+    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
+    -0x1.93cd36p-1,
+  },
+  { // Entry 192
+    0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
+    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
+    0x1.93cd36p-1,
+  },
+  { // Entry 193
+    -0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
+    0x1.77e00c3718528c36f722e63096c2646bp-1,
+    -0x1.7e2974p-1,
+  },
+  { // Entry 194
+    0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
+    0x1.77e00c3718528c36f722e63096c2646bp-1,
+    0x1.7e2974p-1,
+  },
+  { // Entry 195
+    -0x1.4b75b5954e718020900719e25a7ea93bp-1,
+    0x1.863a88d6b064f36f34370722d361ce9fp-1,
+    -0x1.6885b2p-1,
+  },
+  { // Entry 196
+    0x1.4b75b5954e718020900719e25a7ea93bp-1,
+    0x1.863a88d6b064f36f34370722d361ce9fp-1,
+    0x1.6885b2p-1,
+  },
+  { // Entry 197
+    -0x1.3aacfa510810054c52ae0b67d116eb40p-1,
+    0x1.93e2989cee6084e34b533b1eb92746dap-1,
+    -0x1.52e1f0p-1,
+  },
+  { // Entry 198
+    0x1.3aacfa510810054c52ae0b67d116eb40p-1,
+    0x1.93e2989cee6084e34b533b1eb92746dap-1,
+    0x1.52e1f0p-1,
+  },
+  { // Entry 199
+    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    -0x1.3d3e36p-1,
+  },
+  { // Entry 200
+    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    0x1.3d3e36p-1,
+  },
+  { // Entry 201
+    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    -0x1.0a0b02p-1,
+  },
+  { // Entry 202
+    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    0x1.0a0b02p-1,
+  },
+  { // Entry 203
+    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    -0x1.d8f720p-2,
+  },
+  { // Entry 204
+    0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    0x1.d8f720p-2,
+  },
+  { // Entry 205
+    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    -0x1.9dd83cp-2,
+  },
+  { // Entry 206
+    0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    0x1.9dd83cp-2,
+  },
+  { // Entry 207
+    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    -0x1.62b958p-2,
+  },
+  { // Entry 208
+    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    0x1.62b958p-2,
+  },
+  { // Entry 209
+    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    -0x1.279a74p-2,
+  },
+  { // Entry 210
+    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    0x1.279a74p-2,
+  },
+  { // Entry 211
+    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    -0x1.d8f720p-3,
+  },
+  { // Entry 212
+    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    0x1.d8f720p-3,
+  },
+  { // Entry 213
+    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    -0x1.62b958p-3,
+  },
+  { // Entry 214
+    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    0x1.62b958p-3,
+  },
+  { // Entry 215
+    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    -0x1.d8f720p-4,
+  },
+  { // Entry 216
+    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    0x1.d8f720p-4,
+  },
+  { // Entry 217
+    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    -0x1.d8f720p-5,
+  },
+  { // Entry 218
+    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    0x1.d8f720p-5,
+  },
+  { // Entry 219
+    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    0x1.d8f720p-5,
+  },
+  { // Entry 220
+    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
+    -0x1.d8f720p-5,
+  },
+  { // Entry 221
+    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    0x1.d8f720p-4,
+  },
+  { // Entry 222
+    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
+    -0x1.d8f720p-4,
+  },
+  { // Entry 223
+    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    0x1.62b958p-3,
+  },
+  { // Entry 224
+    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    0x1.f856d49251bd37c54f0094270eecbd18p-1,
+    -0x1.62b958p-3,
+  },
+  { // Entry 225
+    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    0x1.d8f720p-3,
+  },
+  { // Entry 226
+    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
+    -0x1.d8f720p-3,
+  },
+  { // Entry 227
+    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    0x1.279a74p-2,
+  },
+  { // Entry 228
+    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
+    -0x1.279a74p-2,
+  },
+  { // Entry 229
+    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    0x1.62b958p-2,
+  },
+  { // Entry 230
+    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
+    -0x1.62b958p-2,
+  },
+  { // Entry 231
+    0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    0x1.9dd83cp-2,
+  },
+  { // Entry 232
+    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
+    -0x1.9dd83cp-2,
+  },
+  { // Entry 233
+    0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    0x1.d8f720p-2,
+  },
+  { // Entry 234
+    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
+    -0x1.d8f720p-2,
+  },
+  { // Entry 235
+    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    0x1.0a0b02p-1,
+  },
+  { // Entry 236
+    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
+    -0x1.0a0b02p-1,
+  },
+  { // Entry 237
+    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    0x1.3d3e36p-1,
+  },
+  { // Entry 238
+    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
+    -0x1.3d3e36p-1,
+  },
+  { // Entry 239
+    0x1.3aad00a09268a39df1653c70db91f157p-1,
+    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
+    0x1.52e1f8p-1,
+  },
+  { // Entry 240
+    -0x1.3aad00a09268a39df1653c70db91f157p-1,
+    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
+    -0x1.52e1f8p-1,
+  },
+  { // Entry 241
+    0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
+    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
+    0x1.6885bap-1,
+  },
+  { // Entry 242
+    -0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
+    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
+    -0x1.6885bap-1,
+  },
+  { // Entry 243
+    0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
+    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
+    0x1.7e297cp-1,
+  },
+  { // Entry 244
+    -0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
+    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
+    -0x1.7e297cp-1,
+  },
+  { // Entry 245
+    0x1.6b3920d8117828928fe10ac70ba69e76p-1,
+    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
+    0x1.93cd3ep-1,
+  },
+  { // Entry 246
+    -0x1.6b3920d8117828928fe10ac70ba69e76p-1,
+    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
+    -0x1.93cd3ep-1,
+  },
+  { // Entry 247
+    0x1.7a25450443098836c5202375db4b8462p-1,
+    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
+    0x1.a971p-1,
+  },
+  { // Entry 248
+    -0x1.7a25450443098836c5202375db4b8462p-1,
+    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
+    -0x1.a971p-1,
+  },
+  { // Entry 249
+    0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
+    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
+    0x1.bf14c2p-1,
+  },
+  { // Entry 250
+    -0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
+    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
+    -0x1.bf14c2p-1,
+  },
+  { // Entry 251
+    0x1.95f056337acc1d2d557525232e915467p-1,
+    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
+    0x1.d4b884p-1,
+  },
+  { // Entry 252
+    -0x1.95f056337acc1d2d557525232e915467p-1,
+    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
+    -0x1.d4b884p-1,
+  },
+  { // Entry 253
+    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    0x1.ea5c3ep-1,
+  },
+  { // Entry 254
+    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    0x1.26976b1b16d19091c09259765c4b3872p-1,
+    -0x1.ea5c3ep-1,
+  },
+  { // Entry 255
+    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    0x1.12bd92p0,
+  },
+  { // Entry 256
+    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
+    -0x1.12bd92p0,
+  },
+  { // Entry 257
+    0x1.d294d2e06b3d10a4de263172d50f4497p-1,
+    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
+    0x1.257b24p0,
+  },
+  { // Entry 258
+    -0x1.d294d2e06b3d10a4de263172d50f4497p-1,
+    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
+    -0x1.257b24p0,
+  },
+  { // Entry 259
+    0x1.e0c04bb65bd33012be72a340df2c044bp-1,
+    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
+    0x1.3838b6p0,
+  },
+  { // Entry 260
+    -0x1.e0c04bb65bd33012be72a340df2c044bp-1,
+    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
+    -0x1.3838b6p0,
+  },
+  { // Entry 261
+    0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
+    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
+    0x1.4af648p0,
+  },
+  { // Entry 262
+    -0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
+    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
+    -0x1.4af648p0,
+  },
+  { // Entry 263
+    0x1.f54d9835b0e66e17612160272521f3b0p-1,
+    0x1.a072252090c33828767aee3e040ccddfp-3,
+    0x1.5db3dap0,
+  },
+  { // Entry 264
+    -0x1.f54d9835b0e66e17612160272521f3b0p-1,
+    0x1.a072252090c33828767aee3e040ccddfp-3,
+    -0x1.5db3dap0,
+  },
+  { // Entry 265
+    0x1.fb933d1cd931685e902e403a1baaecfdp-1,
+    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
+    0x1.70716cp0,
+  },
+  { // Entry 266
+    -0x1.fb933d1cd931685e902e403a1baaecfdp-1,
+    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
+    -0x1.70716cp0,
+  },
+  { // Entry 267
+    0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
+    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
+    0x1.832efep0,
+  },
+  { // Entry 268
+    -0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
+    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
+    -0x1.832efep0,
+  },
+  { // Entry 269
+    0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
+    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
+    0x1.95ec90p0,
+  },
+  { // Entry 270
+    -0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
+    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
+    -0x1.95ec90p0,
+  },
+  { // Entry 271
+    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    0x1.a8aa1cp0,
+  },
+  { // Entry 272
+    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
+    -0x1.a8aa1cp0,
+  },
+  { // Entry 273
+    0x1.b3d36a96880cf69d9884a49f5381e917p-1,
+    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
+    0x1.04aff8p0,
+  },
+  { // Entry 274
+    -0x1.b3d36a96880cf69d9884a49f5381e917p-1,
+    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
+    -0x1.04aff8p0,
+  },
+  { // Entry 275
+    0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
+    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
+    0x1.04b0a0p0,
+  },
+  { // Entry 276
+    -0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
+    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
+    -0x1.04b0a0p0,
+  },
+  { // Entry 277
+    0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
+    0x1.0cb10893a9b5471a44356072cb33b395p-1,
+    0x1.04b148p0,
+  },
+  { // Entry 278
+    -0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
+    0x1.0cb10893a9b5471a44356072cb33b395p-1,
+    -0x1.04b148p0,
+  },
+  { // Entry 279
+    0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
+    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
+    0x1.04b1f0p0,
+  },
+  { // Entry 280
+    -0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
+    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
+    -0x1.04b1f0p0,
+  },
+  { // Entry 281
+    0x1.b3d62be73e8fc998c6c2df6590425613p-1,
+    0x1.0caecc8b7782f86827af92b0b2374510p-1,
+    0x1.04b298p0,
+  },
+  { // Entry 282
+    -0x1.b3d62be73e8fc998c6c2df6590425613p-1,
+    0x1.0caecc8b7782f86827af92b0b2374510p-1,
+    -0x1.04b298p0,
+  },
+  { // Entry 283
+    0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
+    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
+    0x1.04b340p0,
+  },
+  { // Entry 284
+    -0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
+    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
+    -0x1.04b340p0,
+  },
+  { // Entry 285
+    0x1.b3d78c8b33a07864b6a878573db34bcap-1,
+    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
+    0x1.04b3e8p0,
+  },
+  { // Entry 286
+    -0x1.b3d78c8b33a07864b6a878573db34bcap-1,
+    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
+    -0x1.04b3e8p0,
+  },
+  { // Entry 287
+    0x1.b3d83cdc149b9757df195ad885ab5201p-1,
+    0x1.0cab727bc8619d628361876e1f30a633p-1,
+    0x1.04b490p0,
+  },
+  { // Entry 288
+    -0x1.b3d83cdc149b9757df195ad885ab5201p-1,
+    0x1.0cab727bc8619d628361876e1f30a633p-1,
+    -0x1.04b490p0,
+  },
+  { // Entry 289
+    0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
+    0x1.0caa5b450a4324f204a556b072da124ap-1,
+    0x1.04b534p0,
+  },
+  { // Entry 290
+    -0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
+    0x1.0caa5b450a4324f204a556b072da124ap-1,
+    -0x1.04b534p0,
+  },
+  { // Entry 291
+    -0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+  },
+  { // Entry 292
+    0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149,
+  },
+  { // Entry 293
+    0.0,
+    0x1.p0,
+    0.0,
+  },
+  { // Entry 294
+    0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149,
+  },
+  { // Entry 295
+    -0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+  },
+  { // Entry 296
+    0x1.1773d36a64df61d6715e60af063559f4p-1,
+    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
+    0x1.279a72p-1,
+  },
+  { // Entry 297
+    -0x1.1773d36a64df61d6715e60af063559f4p-1,
+    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
+    -0x1.279a72p-1,
+  },
+  { // Entry 298
+    0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
+    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
+    0x1.279a74p-1,
+  },
+  { // Entry 299
+    -0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
+    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
+    -0x1.279a74p-1,
+  },
+  { // Entry 300
+    0x1.1773d6c46a6ea687f03625194d25bb52p-1,
+    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
+    0x1.279a76p-1,
+  },
+  { // Entry 301
+    -0x1.1773d6c46a6ea687f03625194d25bb52p-1,
+    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
+    -0x1.279a76p-1,
+  },
+  { // Entry 302
+    0x1.f95b8f40501057ac49acef13993b0c55p-1,
+    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
+    0x1.bb67acp0,
+  },
+  { // Entry 303
+    -0x1.f95b8f40501057ac49acef13993b0c55p-1,
+    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
+    -0x1.bb67acp0,
+  },
+  { // Entry 304
+    0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
+    -0x1.48d1d9b467e37955337311decd09fc74p-3,
+    0x1.bb67aep0,
+  },
+  { // Entry 305
+    -0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
+    -0x1.48d1d9b467e37955337311decd09fc74p-3,
+    -0x1.bb67aep0,
+  },
+  { // Entry 306
+    0x1.f95b8df77e36a344670ed07149191a58p-1,
+    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
+    0x1.bb67b0p0,
+  },
+  { // Entry 307
+    -0x1.f95b8df77e36a344670ed07149191a58p-1,
+    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
+    -0x1.bb67b0p0,
+  },
+  { // Entry 308
+    0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
+    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
+    0x1.bffffep-2,
+  },
+  { // Entry 309
+    -0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
+    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
+    -0x1.bffffep-2,
+  },
+  { // Entry 310
+    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    0x1.c0p-2,
+  },
+  { // Entry 311
+    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
+    -0x1.c0p-2,
+  },
+  { // Entry 312
+    0x1.b1d83222e830d83743258fd09040ee56p-2,
+    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
+    0x1.c00002p-2,
+  },
+  { // Entry 313
+    -0x1.b1d83222e830d83743258fd09040ee56p-2,
+    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
+    -0x1.c00002p-2,
+  },
+  { // Entry 314
+    0x1.44eb3691428062b27925c585ad59d62ap-1,
+    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
+    0x1.5ffffep-1,
+  },
+  { // Entry 315
+    -0x1.44eb3691428062b27925c585ad59d62ap-1,
+    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
+    -0x1.5ffffep-1,
+  },
+  { // Entry 316
+    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    0x1.60p-1,
+  },
+  { // Entry 317
+    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    0x1.8bb105a5dc900618f80fa51d303c69p-1,
+    -0x1.60p-1,
+  },
+  { // Entry 318
+    0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
+    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
+    0x1.600002p-1,
+  },
+  { // Entry 319
+    -0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
+    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
+    -0x1.600002p-1,
+  },
+  { // Entry 320
+    0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
+    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
+    0x1.2ffffep0,
+  },
+  { // Entry 321
+    -0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
+    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
+    -0x1.2ffffep0,
+  },
+  { // Entry 322
+    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    0x1.30p0,
+  },
+  { // Entry 323
+    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
+    -0x1.30p0,
+  },
+  { // Entry 324
+    0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
+    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
+    0x1.300002p0,
+  },
+  { // Entry 325
+    -0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
+    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
+    -0x1.300002p0,
+  },
+  { // Entry 326
+    0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
+    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
+    0x1.37fffep1,
+  },
+  { // Entry 327
+    -0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
+    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
+    -0x1.37fffep1,
+  },
+  { // Entry 328
+    0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    0x1.38p1,
+  },
+  { // Entry 329
+    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
+    -0x1.38p1,
+  },
+  { // Entry 330
+    0x1.4b707461d1f994476c677c5ad5ddb264p-1,
+    -0x1.863eff63dfa00bfc758baf469469d741p-1,
+    0x1.380002p1,
+  },
+  { // Entry 331
+    -0x1.4b707461d1f994476c677c5ad5ddb264p-1,
+    -0x1.863eff63dfa00bfc758baf469469d741p-1,
+    -0x1.380002p1,
+  },
+  { // Entry 332
+    0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
+    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
+    0x1.069c8cp-4,
+  },
+  { // Entry 333
+    -0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
+    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
+    -0x1.069c8cp-4,
+  },
+  { // Entry 334
+    0x1.05e476d27febc8b7e9690009b367c327p-3,
+    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
+    0x1.069c8cp-3,
+  },
+  { // Entry 335
+    -0x1.05e476d27febc8b7e9690009b367c327p-3,
+    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
+    -0x1.069c8cp-3,
+  },
+  { // Entry 336
+    0x1.877e2de5c9a066b8db595adc149af0c0p-3,
+    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
+    0x1.89ead2p-3,
+  },
+  { // Entry 337
+    -0x1.877e2de5c9a066b8db595adc149af0c0p-3,
+    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
+    -0x1.89ead2p-3,
+  },
+  { // Entry 338
+    0x1.03be07acb9dab719b4343a33b9fa6afep-2,
+    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
+    0x1.069c8cp-2,
+  },
+  { // Entry 339
+    -0x1.03be07acb9dab719b4343a33b9fa6afep-2,
+    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
+    -0x1.069c8cp-2,
+  },
+  { // Entry 340
+    0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
+    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
+    0x1.4843b0p-2,
+  },
+  { // Entry 341
+    -0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
+    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
+    -0x1.4843b0p-2,
+  },
+  { // Entry 342
+    0x1.804601411d93f4750919670061de07d9p-2,
+    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
+    0x1.89ead4p-2,
+  },
+  { // Entry 343
+    -0x1.804601411d93f4750919670061de07d9p-2,
+    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
+    -0x1.89ead4p-2,
+  },
+  { // Entry 344
+    0x1.bc4c08af356088b1694995bfaf8a297bp-2,
+    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
+    0x1.cb91f8p-2,
+  },
+  { // Entry 345
+    -0x1.bc4c08af356088b1694995bfaf8a297bp-2,
+    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
+    -0x1.cb91f8p-2,
+  },
+  { // Entry 346
+    0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
+    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
+    0x1.069c8ep-1,
+  },
+  { // Entry 347
+    -0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
+    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
+    -0x1.069c8ep-1,
+  },
+  { // Entry 348
+    0x1.17505c86231898fd86b18d2282d93eedp-1,
+    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
+    0x1.277020p-1,
+  },
+  { // Entry 349
+    -0x1.17505c86231898fd86b18d2282d93eedp-1,
+    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
+    -0x1.277020p-1,
+  },
+  { // Entry 350
+    0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
+    0x1.9a52e08b191bd55512c8365074f1987fp-1,
+    0x1.4843b2p-1,
+  },
+  { // Entry 351
+    -0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
+    0x1.9a52e08b191bd55512c8365074f1987fp-1,
+    -0x1.4843b2p-1,
+  },
+  { // Entry 352
+    0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
+    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
+    0x1.691744p-1,
+  },
+  { // Entry 353
+    -0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
+    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
+    -0x1.691744p-1,
+  },
+  { // Entry 354
+    0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
+    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
+    0x1.89ead6p-1,
+  },
+  { // Entry 355
+    -0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
+    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
+    -0x1.89ead6p-1,
+  },
+  { // Entry 356
+    0x1.7b05bb87b38844e56003c41ef804b273p-1,
+    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
+    0x1.aabe68p-1,
+  },
+  { // Entry 357
+    -0x1.7b05bb87b38844e56003c41ef804b273p-1,
+    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
+    -0x1.aabe68p-1,
+  },
+  { // Entry 358
+    0x1.904c3b389d55d3deddb39d05eb366571p-1,
+    0x1.3f3a09427966e9518802dee3bf443a95p-1,
+    0x1.cb91fap-1,
+  },
+  { // Entry 359
+    -0x1.904c3b389d55d3deddb39d05eb366571p-1,
+    0x1.3f3a09427966e9518802dee3bf443a95p-1,
+    -0x1.cb91fap-1,
+  },
+  { // Entry 360
+    0x1.a3eda211798a82697d62431f9ae46cc4p-1,
+    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
+    0x1.ec658cp-1,
+  },
+  { // Entry 361
+    -0x1.a3eda211798a82697d62431f9ae46cc4p-1,
+    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
+    -0x1.ec658cp-1,
+  },
+  { // Entry 362
+    0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
+    0x1.096abb862f9bd5515982c2818c332ff9p-1,
+    0x1.069c8ep0,
+  },
+  { // Entry 363
+    -0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
+    0x1.096abb862f9bd5515982c2818c332ff9p-1,
+    -0x1.069c8ep0,
+  },
+  { // Entry 364
+    0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
+    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
+    0x1.170656p0,
+  },
+  { // Entry 365
+    -0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
+    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
+    -0x1.170656p0,
+  },
+  { // Entry 366
+    0x1.d42de53e315c839ce188e201205e99dep-1,
+    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
+    0x1.27701ep0,
+  },
+  { // Entry 367
+    -0x1.d42de53e315c839ce188e201205e99dep-1,
+    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
+    -0x1.27701ep0,
+  },
+  { // Entry 368
+    0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
+    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
+    0x1.37d9e6p0,
+  },
+  { // Entry 369
+    -0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
+    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
+    -0x1.37d9e6p0,
+  },
+  { // Entry 370
+    0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
+    0x1.235b337b091cdd8ac06390abc6816b82p-2,
+    0x1.4843aep0,
+  },
+  { // Entry 371
+    -0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
+    0x1.235b337b091cdd8ac06390abc6816b82p-2,
+    -0x1.4843aep0,
+  },
+  { // Entry 372
+    0x1.f329bffa6a208591eecb6905d7594e3bp-1,
+    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
+    0x1.58ad76p0,
+  },
+  { // Entry 373
+    -0x1.f329bffa6a208591eecb6905d7594e3bp-1,
+    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
+    -0x1.58ad76p0,
+  },
+  { // Entry 374
+    0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
+    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
+    0x1.69173ep0,
+  },
+  { // Entry 375
+    -0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
+    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
+    -0x1.69173ep0,
+  },
+  { // Entry 376
+    0x1.fda25455d9567772f20f25d15efc6775p-1,
+    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
+    0x1.798106p0,
+  },
+  { // Entry 377
+    -0x1.fda25455d9567772f20f25d15efc6775p-1,
+    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
+    -0x1.798106p0,
+  },
+  { // Entry 378
+    0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
+    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
+    0x1.89eacep0,
+  },
+  { // Entry 379
+    -0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
+    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
+    -0x1.89eacep0,
+  },
+  { // Entry 380
+    0x1.ffbca88228b163189ab8d637db99bd2dp-1,
+    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
+    0x1.9a5496p0,
+  },
+  { // Entry 381
+    -0x1.ffbca88228b163189ab8d637db99bd2dp-1,
+    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
+    -0x1.9a5496p0,
+  },
+  { // Entry 382
+    0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
+    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
+    0x1.aabe5ep0,
+  },
+  { // Entry 383
+    -0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
+    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
+    -0x1.aabe5ep0,
+  },
+  { // Entry 384
+    0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
+    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
+    0x1.bb2826p0,
+  },
+  { // Entry 385
+    -0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
+    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
+    -0x1.bb2826p0,
+  },
+  { // Entry 386
+    0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
+    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
+    0x1.cb91eep0,
+  },
+  { // Entry 387
+    -0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
+    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
+    -0x1.cb91eep0,
+  },
+  { // Entry 388
+    0x1.ead686f2ec572c83ed34a01f764d193ep-1,
+    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
+    0x1.dbfbb6p0,
+  },
+  { // Entry 389
+    -0x1.ead686f2ec572c83ed34a01f764d193ep-1,
+    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
+    -0x1.dbfbb6p0,
+  },
+  { // Entry 390
+    0x1.e07ef3c91bd500a0de230ad573163163p-1,
+    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
+    0x1.ec657ep0,
+  },
+  { // Entry 391
+    -0x1.e07ef3c91bd500a0de230ad573163163p-1,
+    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
+    -0x1.ec657ep0,
+  },
+  { // Entry 392
+    0x1.d42dea8835c88adb9cde17347f934e25p-1,
+    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
+    0x1.fccf46p0,
+  },
+  { // Entry 393
+    -0x1.d42dea8835c88adb9cde17347f934e25p-1,
+    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
+    -0x1.fccf46p0,
+  },
+  { // Entry 394
+    0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
+    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
+    0x1.069c88p1,
+  },
+  { // Entry 395
+    -0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
+    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
+    -0x1.069c88p1,
+  },
+  { // Entry 396
+    0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
+    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
+    0x1.0ed16cp1,
+  },
+  { // Entry 397
+    -0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
+    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
+    -0x1.0ed16cp1,
+  },
+  { // Entry 398
+    0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
+    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
+    0x1.170650p1,
+  },
+  { // Entry 399
+    -0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
+    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
+    -0x1.170650p1,
+  },
+  { // Entry 400
+    0x1.904c421efce58f4e8170d36dcda8e02cp-1,
+    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
+    0x1.1f3b34p1,
+  },
+  { // Entry 401
+    -0x1.904c421efce58f4e8170d36dcda8e02cp-1,
+    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
+    -0x1.1f3b34p1,
+  },
+  { // Entry 402
+    0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
+    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
+    0x1.277018p1,
+  },
+  { // Entry 403
+    -0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
+    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
+    -0x1.277018p1,
+  },
+  { // Entry 404
+    0x1.64308f506ffdaf1326d10b3380278e98p-1,
+    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
+    0x1.2fa4fcp1,
+  },
+  { // Entry 405
+    -0x1.64308f506ffdaf1326d10b3380278e98p-1,
+    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
+    -0x1.2fa4fcp1,
+  },
+  { // Entry 406
+    0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
+    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
+    0x1.37d9e0p1,
+  },
+  { // Entry 407
+    -0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
+    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
+    -0x1.37d9e0p1,
+  },
+  { // Entry 408
+    0x1.323b9d888d4da77a610893735eeed1cbp-1,
+    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
+    0x1.400ec4p1,
+  },
+  { // Entry 409
+    -0x1.323b9d888d4da77a610893735eeed1cbp-1,
+    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
+    -0x1.400ec4p1,
+  },
+  { // Entry 410
+    0x1.17506e2dfb603d34b9af39b12c1db735p-1,
+    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
+    0x1.4843a8p1,
+  },
+  { // Entry 411
+    -0x1.17506e2dfb603d34b9af39b12c1db735p-1,
+    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
+    -0x1.4843a8p1,
+  },
+  { // Entry 412
+    0x1.f67ed667352d4827450013f15e321bfbp-2,
+    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
+    0x1.50788cp1,
+  },
+  { // Entry 413
+    -0x1.f67ed667352d4827450013f15e321bfbp-2,
+    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
+    -0x1.50788cp1,
+  },
+  { // Entry 414
+    0x1.bc4c35da51e34b776e5e04da58f23441p-2,
+    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
+    0x1.58ad70p1,
+  },
+  { // Entry 415
+    -0x1.bc4c35da51e34b776e5e04da58f23441p-2,
+    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
+    -0x1.58ad70p1,
+  },
+  { // Entry 416
+    0x1.8046336e68427cf756056d3f4edbb662p-2,
+    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
+    0x1.60e254p1,
+  },
+  { // Entry 417
+    -0x1.8046336e68427cf756056d3f4edbb662p-2,
+    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
+    -0x1.60e254p1,
+  },
+  { // Entry 418
+    0x1.42abf3872905e632f204c41b24af90b6p-2,
+    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
+    0x1.691738p1,
+  },
+  { // Entry 419
+    -0x1.42abf3872905e632f204c41b24af90b6p-2,
+    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
+    -0x1.691738p1,
+  },
+  { // Entry 420
+    0x1.03be43c699f3536990dcf5a6665ac239p-2,
+    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
+    0x1.714c1cp1,
+  },
+  { // Entry 421
+    -0x1.03be43c699f3536990dcf5a6665ac239p-2,
+    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
+    -0x1.714c1cp1,
+  },
+  { // Entry 422
+    0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
+    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
+    0x1.7981p1,
+  },
+  { // Entry 423
+    -0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
+    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
+    -0x1.7981p1,
+  },
+  { // Entry 424
+    0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
+    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
+    0x1.81b5e4p1,
+  },
+  { // Entry 425
+    -0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
+    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
+    -0x1.81b5e4p1,
+  },
+  { // Entry 426
+    0x1.066f9b630b72dff16450e89afdf7e048p-4,
+    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
+    0x1.89eac8p1,
+  },
+  { // Entry 427
+    -0x1.066f9b630b72dff16450e89afdf7e048p-4,
+    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
+    -0x1.89eac8p1,
+  },
+  { // Entry 428
+    0x1.03bdf0b79ccf739529d54d422861046cp-2,
+    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
+    -0x1.81b5eep2,
+  },
+  { // Entry 429
+    -0x1.03bdf0b79ccf739529d54d422861046cp-2,
+    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
+    0x1.81b5eep2,
+  },
+  { // Entry 430
+    0x1.f67e8b95f5460ea369a803837b721abdp-2,
+    0x1.be1d849ec649b797320e985d0b82ae85p-1,
+    -0x1.714c26p2,
+  },
+  { // Entry 431
+    -0x1.f67e8b95f5460ea369a803837b721abdp-2,
+    0x1.be1d849ec649b797320e985d0b82ae85p-1,
+    0x1.714c26p2,
+  },
+  { // Entry 432
+    0x1.643070791751dc0636d1854d2bdbc5d4p-1,
+    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
+    -0x1.60e25ep2,
+  },
+  { // Entry 433
+    -0x1.643070791751dc0636d1854d2bdbc5d4p-1,
+    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
+    0x1.60e25ep2,
+  },
+  { // Entry 434
+    0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
+    0x1.096ad87c326622c42de34f92814cfa84p-1,
+    -0x1.507896p2,
+  },
+  { // Entry 435
+    -0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
+    0x1.096ad87c326622c42de34f92814cfa84p-1,
+    0x1.507896p2,
+  },
+  { // Entry 436
+    0x1.ead679985549140318349f512dca7a6bp-1,
+    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
+    -0x1.400ecep2,
+  },
+  { // Entry 437
+    -0x1.ead679985549140318349f512dca7a6bp-1,
+    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
+    0x1.400ecep2,
+  },
+  { // Entry 438
+    0x1.ffbca7010e0b0452f56075cfd5982880p-1,
+    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
+    -0x1.2fa506p2,
+  },
+  { // Entry 439
+    -0x1.ffbca7010e0b0452f56075cfd5982880p-1,
+    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
+    0x1.2fa506p2,
+  },
+  { // Entry 440
+    0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
+    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
+    -0x1.1f3b3ep2,
+  },
+  { // Entry 441
+    -0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
+    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
+    0x1.1f3b3ep2,
+  },
+  { // Entry 442
+    0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
+    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
+    -0x1.0ed176p2,
+  },
+  { // Entry 443
+    -0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
+    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
+    0x1.0ed176p2,
+  },
+  { // Entry 444
+    0x1.7b05d864ec9802adbc4b5577c233836ap-1,
+    -0x1.5837ae8569c95846e6164d9636546120p-1,
+    -0x1.fccf5ap1,
+  },
+  { // Entry 445
+    -0x1.7b05d864ec9802adbc4b5577c233836ap-1,
+    -0x1.5837ae8569c95846e6164d9636546120p-1,
+    0x1.fccf5ap1,
+  },
+  { // Entry 446
+    0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
+    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
+    -0x1.dbfbc8p1,
+  },
+  { // Entry 447
+    -0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
+    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
+    0x1.dbfbc8p1,
+  },
+  { // Entry 448
+    0x1.42ac0dd9495211816bf04ca53bce4beap-2,
+    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
+    -0x1.bb2836p1,
+  },
+  { // Entry 449
+    -0x1.42ac0dd9495211816bf04ca53bce4beap-2,
+    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
+    0x1.bb2836p1,
+  },
+  { // Entry 450
+    0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
+    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
+    -0x1.9a54a4p1,
+  },
+  { // Entry 451
+    -0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
+    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
+    0x1.9a54a4p1,
+  },
+  { // Entry 452
+    -0x1.877d931298e6fbc654f065536cff2b54p-3,
+    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
+    -0x1.798112p1,
+  },
+  { // Entry 453
+    0x1.877d931298e6fbc654f065536cff2b54p-3,
+    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
+    0x1.798112p1,
+  },
+  { // Entry 454
+    -0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
+    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
+    -0x1.58ad80p1,
+  },
+  { // Entry 455
+    0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
+    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
+    0x1.58ad80p1,
+  },
+  { // Entry 456
+    -0x1.4be47d6354c4ced53780b1b519acdec2p-1,
+    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
+    -0x1.37d9eep1,
+  },
+  { // Entry 457
+    0x1.4be47d6354c4ced53780b1b519acdec2p-1,
+    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
+    0x1.37d9eep1,
+  },
+  { // Entry 458
+    -0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
+    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
+    -0x1.17065cp1,
+  },
+  { // Entry 459
+    0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
+    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
+    0x1.17065cp1,
+  },
+  { // Entry 460
+    -0x1.e07ee496ea109654c42e171fdc4537c4p-1,
+    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
+    -0x1.ec6594p0,
+  },
+  { // Entry 461
+    0x1.e07ee496ea109654c42e171fdc4537c4p-1,
+    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
+    0x1.ec6594p0,
+  },
+  { // Entry 462
+    -0x1.fda2522219689d0e8069d90f5c969b92p-1,
+    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
+    -0x1.aabe70p0,
+  },
+  { // Entry 463
+    0x1.fda2522219689d0e8069d90f5c969b92p-1,
+    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
+    0x1.aabe70p0,
+  },
+  { // Entry 464
+    -0x1.f96fe802fe570372d0fcb6e934b43061p-1,
+    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
+    -0x1.69174cp0,
+  },
+  { // Entry 465
+    0x1.f96fe802fe570372d0fcb6e934b43061p-1,
+    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
+    0x1.69174cp0,
+  },
+  { // Entry 466
+    -0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
+    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
+    -0x1.277028p0,
+  },
+  { // Entry 467
+    0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
+    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
+    0x1.277028p0,
+  },
+  { // Entry 468
+    -0x1.904c45326d6dde224381d1d590ada41cp-1,
+    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
+    -0x1.cb920ap-1,
+  },
+  { // Entry 469
+    0x1.904c45326d6dde224381d1d590ada41cp-1,
+    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
+    0x1.cb920ap-1,
+  },
+  { // Entry 470
+    -0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
+    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
+    -0x1.4843c4p-1,
+  },
+  { // Entry 471
+    0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
+    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
+    0x1.4843c4p-1,
+  },
+  { // Entry 472
+    -0x1.80462654bde766faf47f3140e290996dp-2,
+    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
+    -0x1.89eafcp-2,
+  },
+  { // Entry 473
+    0x1.80462654bde766faf47f3140e290996dp-2,
+    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
+    0x1.89eafcp-2,
+  },
+  { // Entry 474
+    -0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
+    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
+    -0x1.069ce0p-3,
+  },
+  { // Entry 475
+    0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
+    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
+    0x1.069ce0p-3,
+  },
+  { // Entry 476
+    0x1.05e423830be01f9fe3c57d06867e0056p-3,
+    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
+    0x1.069c38p-3,
+  },
+  { // Entry 477
+    -0x1.05e423830be01f9fe3c57d06867e0056p-3,
+    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
+    -0x1.069c38p-3,
+  },
+  { // Entry 478
+    0x1.8045d87852f1307fea6dc751c4d15992p-2,
+    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
+    0x1.89eaa8p-2,
+  },
+  { // Entry 479
+    -0x1.8045d87852f1307fea6dc751c4d15992p-2,
+    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
+    -0x1.89eaa8p-2,
+  },
+  { // Entry 480
+    0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
+    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
+    0x1.48439ap-1,
+  },
+  { // Entry 481
+    -0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
+    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
+    -0x1.48439ap-1,
+  },
+  { // Entry 482
+    0x1.904c2b02aa59528ce044bf2213c96859p-1,
+    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
+    0x1.cb91e0p-1,
+  },
+  { // Entry 483
+    -0x1.904c2b02aa59528ce044bf2213c96859p-1,
+    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
+    -0x1.cb91e0p-1,
+  },
+  { // Entry 484
+    0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
+    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
+    0x1.277014p0,
+  },
+  { // Entry 485
+    -0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
+    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
+    -0x1.277014p0,
+  },
+  { // Entry 486
+    0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
+    0x1.46dc8a919b27840cda6e18a079da459cp-3,
+    0x1.691738p0,
+  },
+  { // Entry 487
+    -0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
+    0x1.46dc8a919b27840cda6e18a079da459cp-3,
+    -0x1.691738p0,
+  },
+  { // Entry 488
+    0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
+    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
+    0x1.aabe5cp0,
+  },
+  { // Entry 489
+    -0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
+    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
+    -0x1.aabe5cp0,
+  },
+  { // Entry 490
+    0x1.e07ef267748b982778f8d50d2981bb3ap-1,
+    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
+    0x1.ec6580p0,
+  },
+  { // Entry 491
+    -0x1.e07ef267748b982778f8d50d2981bb3ap-1,
+    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
+    -0x1.ec6580p0,
+  },
+  { // Entry 492
+    0x1.a3eda2adb01143fb21453b20bd1748fep-1,
+    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
+    0x1.170652p1,
+  },
+  { // Entry 493
+    -0x1.a3eda2adb01143fb21453b20bd1748fep-1,
+    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
+    -0x1.170652p1,
+  },
+  { // Entry 494
+    0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
+    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
+    0x1.37d9e4p1,
+  },
+  { // Entry 495
+    -0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
+    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
+    -0x1.37d9e4p1,
+  },
+  { // Entry 496
+    0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
+    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
+    0x1.58ad76p1,
+  },
+  { // Entry 497
+    -0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
+    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
+    -0x1.58ad76p1,
+  },
+  { // Entry 498
+    0x1.877e301f43cafffe6644a8958f108729p-3,
+    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
+    0x1.798108p1,
+  },
+  { // Entry 499
+    -0x1.877e301f43cafffe6644a8958f108729p-3,
+    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
+    -0x1.798108p1,
+  },
+  { // Entry 500
+    -0x1.066e8ae1f824a69817e6a806e6317e28p-4,
+    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
+    0x1.9a549ap1,
+  },
+  { // Entry 501
+    0x1.066e8ae1f824a69817e6a806e6317e28p-4,
+    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
+    -0x1.9a549ap1,
+  },
+  { // Entry 502
+    -0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
+    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
+    0x1.bb282cp1,
+  },
+  { // Entry 503
+    0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
+    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
+    -0x1.bb282cp1,
+  },
+  { // Entry 504
+    -0x1.17505efb8119773c647468be1dfee45ep-1,
+    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
+    0x1.dbfbbep1,
+  },
+  { // Entry 505
+    0x1.17505efb8119773c647468be1dfee45ep-1,
+    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
+    -0x1.dbfbbep1,
+  },
+  { // Entry 506
+    -0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
+    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
+    0x1.fccf50p1,
+  },
+  { // Entry 507
+    0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
+    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
+    -0x1.fccf50p1,
+  },
+  { // Entry 508
+    -0x1.c5f05982eabf022748960961666d540dp-1,
+    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
+    0x1.0ed170p2,
+  },
+  { // Entry 509
+    0x1.c5f05982eabf022748960961666d540dp-1,
+    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
+    -0x1.0ed170p2,
+  },
+  { // Entry 510
+    -0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
+    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
+    0x1.1f3b38p2,
+  },
+  { // Entry 511
+    0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
+    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
+    -0x1.1f3b38p2,
+  },
+  { // Entry 512
+    -0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
+    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
+    0x1.2fa5p2,
+  },
+  { // Entry 513
+    0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
+    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
+    -0x1.2fa5p2,
+  },
+  { // Entry 514
+    -0x1.ead687409c95dcaf61af98513517f507p-1,
+    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
+    0x1.400ec8p2,
+  },
+  { // Entry 515
+    0x1.ead687409c95dcaf61af98513517f507p-1,
+    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
+    -0x1.400ec8p2,
+  },
+  { // Entry 516
+    -0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
+    0x1.096aaf70341485062f443c80a90a3be3p-1,
+    0x1.507890p2,
+  },
+  { // Entry 517
+    0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
+    0x1.096aaf70341485062f443c80a90a3be3p-1,
+    -0x1.507890p2,
+  },
+  { // Entry 518
+    -0x1.643092f42ae797375531420c005ca2cfp-1,
+    0x1.6fcb6ae03107be458d07361371efabb4p-1,
+    0x1.60e258p2,
+  },
+  { // Entry 519
+    0x1.643092f42ae797375531420c005ca2cfp-1,
+    0x1.6fcb6ae03107be458d07361371efabb4p-1,
+    -0x1.60e258p2,
+  },
+  { // Entry 520
+    -0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
+    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
+    0x1.714c20p2,
+  },
+  { // Entry 521
+    0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
+    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
+    -0x1.714c20p2,
+  },
+  { // Entry 522
+    -0x1.03be4d93d949325340b2f464201545a7p-2,
+    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
+    0x1.81b5e8p2,
+  },
+  { // Entry 523
+    0x1.03be4d93d949325340b2f464201545a7p-2,
+    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
+    -0x1.81b5e8p2,
+  },
+  { // Entry 524
+    0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
+    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
+    0x1.effffep-5,
+  },
+  { // Entry 525
+    -0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
+    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
+    -0x1.effffep-5,
+  },
+  { // Entry 526
+    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    0x1.f0p-5,
+  },
+  { // Entry 527
+    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
+    -0x1.f0p-5,
+  },
+  { // Entry 528
+    0x1.efb270f840979c65b75ee5c67016a866p-5,
+    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
+    0x1.f00002p-5,
+  },
+  { // Entry 529
+    -0x1.efb270f840979c65b75ee5c67016a866p-5,
+    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
+    -0x1.f00002p-5,
+  },
+  { // Entry 530
+    0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
+    0x1.fc21005d216a89de55b192096fc6b7bap-1,
+    0x1.f7fffep-4,
+  },
+  { // Entry 531
+    -0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
+    0x1.fc21005d216a89de55b192096fc6b7bap-1,
+    -0x1.f7fffep-4,
+  },
+  { // Entry 532
+    0x1.f6baaa131de6438e5611279864fe7663p-4,
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    0x1.f8p-4,
+  },
+  { // Entry 533
+    -0x1.f6baaa131de6438e5611279864fe7663p-4,
+    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
+    -0x1.f8p-4,
+  },
+  { // Entry 534
+    0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
+    0x1.fc21004d6b953945667f800ff81de0ebp-1,
+    0x1.f80002p-4,
+  },
+  { // Entry 535
+    -0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
+    0x1.fc21004d6b953945667f800ff81de0ebp-1,
+    -0x1.f80002p-4,
+  },
+  { // Entry 536
+    0x1.4a8c395552fb432af31780e883c98f71p-3,
+    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
+    0x1.4bfffep-3,
+  },
+  { // Entry 537
+    -0x1.4a8c395552fb432af31780e883c98f71p-3,
+    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
+    -0x1.4bfffep-3,
+  },
+  { // Entry 538
+    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    0x1.4cp-3,
+  },
+  { // Entry 539
+    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
+    -0x1.4cp-3,
+  },
+  { // Entry 540
+    0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
+    0x1.f949849dac6a548dd851139041106316p-1,
+    0x1.4c0002p-3,
+  },
+  { // Entry 541
+    -0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
+    0x1.f949849dac6a548dd851139041106316p-1,
+    -0x1.4c0002p-3,
+  },
+  { // Entry 542
+    0x1.2e9cd83630eb35c12efcfb8413583998p-2,
+    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
+    0x1.333332p-2,
+  },
+  { // Entry 543
+    -0x1.2e9cd83630eb35c12efcfb8413583998p-2,
+    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
+    -0x1.333332p-2,
+  },
+  { // Entry 544
+    0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
+    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
+    0x1.333334p-2,
+  },
+  { // Entry 545
+    -0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
+    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
+    -0x1.333334p-2,
+  },
+  { // Entry 546
+    0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
+    0x1.e921dcd906824da60e43c03a7774b171p-1,
+    0x1.333336p-2,
+  },
+  { // Entry 547
+    -0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
+    0x1.e921dcd906824da60e43c03a7774b171p-1,
+    -0x1.333336p-2,
+  },
+  { // Entry 548
+    0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
+    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
+    0x1.594316p-1,
+  },
+  { // Entry 549
+    -0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
+    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
+    -0x1.594316p-1,
+  },
+  { // Entry 550
+    0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
+    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
+    0x1.594318p-1,
+  },
+  { // Entry 551
+    -0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
+    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
+    -0x1.594318p-1,
+  },
+  { // Entry 552
+    0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
+    0x1.8feeda131852852d2fa7fe8847b05973p-1,
+    0x1.59431ap-1,
+  },
+  { // Entry 553
+    -0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
+    0x1.8feeda131852852d2fa7fe8847b05973p-1,
+    -0x1.59431ap-1,
+  },
+  { // Entry 554
+    0x1.6888a375ab228c1e031c4005769509f9p-1,
+    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
+    0x1.8ffffep-1,
+  },
+  { // Entry 555
+    -0x1.6888a375ab228c1e031c4005769509f9p-1,
+    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
+    -0x1.8ffffep-1,
+  },
+  { // Entry 556
+    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    0x1.90p-1,
+  },
+  { // Entry 557
+    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
+    -0x1.90p-1,
+  },
+  { // Entry 558
+    0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
+    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
+    0x1.900002p-1,
+  },
+  { // Entry 559
+    -0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
+    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
+    -0x1.900002p-1,
+  },
+  { // Entry 560
+    -0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+  },
+  { // Entry 561
+    0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149,
+  },
+  { // Entry 562
+    0.0,
+    0x1.p0,
+    0.0,
+  },
+  { // Entry 563
+    0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149,
+  },
+  { // Entry 564
+    -0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+  },
+  { // Entry 565
+    0x1.91f65dccfead353d8db9c32f12262730p-5,
+    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
+    0x1.921fb4p-5,
+  },
+  { // Entry 566
+    -0x1.91f65dccfead353d8db9c32f12262730p-5,
+    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
+    -0x1.921fb4p-5,
+  },
+  { // Entry 567
+    0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
+    0x1.ff621e370373dc6f3963d42896ede078p-1,
+    0x1.921fb6p-5,
+  },
+  { // Entry 568
+    -0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
+    0x1.ff621e370373dc6f3963d42896ede078p-1,
+    -0x1.921fb6p-5,
+  },
+  { // Entry 569
+    0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
+    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
+    0x1.921fb8p-5,
+  },
+  { // Entry 570
+    -0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
+    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
+    -0x1.921fb8p-5,
+  },
+  { // Entry 571
+    0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
+    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
+    0x1.921fb4p-4,
+  },
+  { // Entry 572
+    -0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
+    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
+    -0x1.921fb4p-4,
+  },
+  { // Entry 573
+    0x1.917a6c7d7103b9d90e09615164449c6bp-4,
+    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
+    0x1.921fb6p-4,
+  },
+  { // Entry 574
+    -0x1.917a6c7d7103b9d90e09615164449c6bp-4,
+    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
+    -0x1.921fb6p-4,
+  },
+  { // Entry 575
+    0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
+    0x1.fd88da347f8e696999ffd58060ba3569p-1,
+    0x1.921fb8p-4,
+  },
+  { // Entry 576
+    -0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
+    0x1.fd88da347f8e696999ffd58060ba3569p-1,
+    -0x1.921fb8p-4,
+  },
+  { // Entry 577
+    0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
+    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
+    0x1.921fb4p-3,
+  },
+  { // Entry 578
+    -0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
+    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
+    -0x1.921fb4p-3,
+  },
+  { // Entry 579
+    0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
+    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
+    0x1.921fb6p-3,
+  },
+  { // Entry 580
+    -0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
+    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
+    -0x1.921fb6p-3,
+  },
+  { // Entry 581
+    0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
+    0x1.f6297cdd55014a808b883fd183f318acp-1,
+    0x1.921fb8p-3,
+  },
+  { // Entry 582
+    -0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
+    0x1.f6297cdd55014a808b883fd183f318acp-1,
+    -0x1.921fb8p-3,
+  },
+  { // Entry 583
+    0x1.87de293f569717a42a3bdb01aeae2063p-2,
+    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
+    0x1.921fb4p-2,
+  },
+  { // Entry 584
+    -0x1.87de293f569717a42a3bdb01aeae2063p-2,
+    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
+    -0x1.921fb4p-2,
+  },
+  { // Entry 585
+    0x1.87de2b185d5417dca800b85ca1319043p-2,
+    0x1.d906bccf3cb875874da3da4c01104bafp-1,
+    0x1.921fb6p-2,
+  },
+  { // Entry 586
+    -0x1.87de2b185d5417dca800b85ca1319043p-2,
+    0x1.d906bccf3cb875874da3da4c01104bafp-1,
+    -0x1.921fb6p-2,
+  },
+  { // Entry 587
+    0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
+    0x1.d906bc6d452d744f210810861102f2dap-1,
+    0x1.921fb8p-2,
+  },
+  { // Entry 588
+    -0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
+    0x1.d906bc6d452d744f210810861102f2dap-1,
+    -0x1.921fb8p-2,
+  },
+  { // Entry 589
+    0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
+    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
+    0x1.921fb4p-1,
+  },
+  { // Entry 590
+    -0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
+    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
+    -0x1.921fb4p-1,
+  },
+  { // Entry 591
+    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    0x1.921fb6p-1,
+  },
+  { // Entry 592
+    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    -0x1.921fb6p-1,
+  },
+  { // Entry 593
+    0x1.6a09e856be050baccde9a76961e84aa7p-1,
+    0x1.6a09e4792971e22c9a00261aeac070dap-1,
+    0x1.921fb8p-1,
+  },
+  { // Entry 594
+    -0x1.6a09e856be050baccde9a76961e84aa7p-1,
+    0x1.6a09e4792971e22c9a00261aeac070dap-1,
+    -0x1.921fb8p-1,
+  },
+  { // Entry 595
+    0x1.fffffffffffe6546cc38211c26dabeebp-1,
+    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
+    0x1.921fb4p0,
+  },
+  { // Entry 596
+    -0x1.fffffffffffe6546cc38211c26dabeebp-1,
+    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
+    -0x1.921fb4p0,
+  },
+  { // Entry 597
+    0x1.ffffffffffff76521249c7422930ed82p-1,
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    0x1.921fb6p0,
+  },
+  { // Entry 598
+    -0x1.ffffffffffff76521249c7422930ed82p-1,
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    -0x1.921fb6p0,
+  },
+  { // Entry 599
+    0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
+    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
+    0x1.921fb8p0,
+  },
+  { // Entry 600
+    -0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
+    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
+    -0x1.921fb8p0,
+  },
+  { // Entry 601
+    0x1.4442d184698831f15b6315bfa6b5ae75p-23,
+    -0x1.fffffffffff9951b30e084732e60bb85p-1,
+    0x1.921fb4p1,
+  },
+  { // Entry 602
+    -0x1.4442d184698831f15b6315bfa6b5ae75p-23,
+    -0x1.fffffffffff9951b30e084732e60bb85p-1,
+    -0x1.921fb4p1,
+  },
+  { // Entry 603
+    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    0x1.921fb6p1,
+  },
+  { // Entry 604
+    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    -0x1.921fb6p1,
+  },
+  { // Entry 605
+    -0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
+    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
+    0x1.921fb8p1,
+  },
+  { // Entry 606
+    0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
+    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
+    -0x1.921fb8p1,
+  },
+  { // Entry 607
+    -0x1.4442d1846984217628872e56eb58b4c1p-22,
+    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
+    0x1.921fb4p2,
+  },
+  { // Entry 608
+    0x1.4442d1846984217628872e56eb58b4c1p-22,
+    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
+    -0x1.921fb4p2,
+  },
+  { // Entry 609
+    0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
+    0x1.fffffffffff76521249c74285bf73c07p-1,
+    0x1.921fb6p2,
+  },
+  { // Entry 610
+    -0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
+    0x1.fffffffffff76521249c74285bf73c07p-1,
+    -0x1.921fb6p2,
+  },
+  { // Entry 611
+    0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
+    0x1.ffffffffff8875d585b6db2c31711004p-1,
+    0x1.921fb8p2,
+  },
+  { // Entry 612
+    -0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
+    0x1.ffffffffff8875d585b6db2c31711004p-1,
+    -0x1.921fb8p2,
+  },
+  { // Entry 613
+    -0x1.4442d1846973df895d1791023ded513cp-21,
+    0x1.ffffffffff9951b30e084a6a993b8675p-1,
+    0x1.921fb4p3,
+  },
+  { // Entry 614
+    0x1.4442d1846973df895d1791023ded513cp-21,
+    0x1.ffffffffff9951b30e084a6a993b8675p-1,
+    -0x1.921fb4p3,
+  },
+  { // Entry 615
+    0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
+    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
+    0x1.921fb6p3,
+  },
+  { // Entry 616
+    -0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
+    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
+    -0x1.921fb6p3,
+  },
+  { // Entry 617
+    0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
+    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
+    0x1.921fb8p3,
+  },
+  { // Entry 618
+    -0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
+    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
+    -0x1.921fb8p3,
+  },
+  { // Entry 619
+    -0x1.4442d1846932d7d62f59209388c7f7cap-20,
+    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
+    0x1.921fb4p4,
+  },
+  { // Entry 620
+    0x1.4442d1846932d7d62f59209388c7f7cap-20,
+    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
+    -0x1.921fb4p4,
+  },
+  { // Entry 621
+    0x1.777a5cf72ccb3e87788b811229e725bcp-21,
+    0x1.ffffffffff76521249c7484ea7d7a409p-1,
+    0x1.921fb6p4,
+  },
+  { // Entry 622
+    -0x1.777a5cf72ccb3e87788b811229e725bcp-21,
+    0x1.ffffffffff76521249c7484ea7d7a409p-1,
+    -0x1.921fb6p4,
+  },
+  { // Entry 623
+    0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
+    0x1.fffffffff8875d585b720f25f0473943p-1,
+    0x1.921fb8p4,
+  },
+  { // Entry 624
+    -0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
+    0x1.fffffffff8875d585b720f25f0473943p-1,
+    -0x1.921fb8p4,
+  },
+  { // Entry 625
+    -0x1.4442d184682eb909785fad18bcb5dbfcp-19,
+    0x1.fffffffff9951b30e087de5cc38683b8p-1,
+    0x1.921fb4p5,
+  },
+  { // Entry 626
+    0x1.4442d184682eb909785fad18bcb5dbfcp-19,
+    0x1.fffffffff9951b30e087de5cc38683b8p-1,
+    -0x1.921fb4p5,
+  },
+  { // Entry 627
+    0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
+    0x1.fffffffffdd94849271d6b463df6bddfp-1,
+    0x1.921fb6p5,
+  },
+  { // Entry 628
+    -0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
+    0x1.fffffffffdd94849271d6b463df6bddfp-1,
+    -0x1.921fb6p5,
+  },
+  { // Entry 629
+    0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
+    0x1.ffffffffe21d75616e000e55d09f8757p-1,
+    0x1.921fb8p5,
+  },
+  { // Entry 630
+    -0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
+    0x1.ffffffffe21d75616e000e55d09f8757p-1,
+    -0x1.921fb8p5,
+  },
+  { // Entry 631
+    -0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
+    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
+    0x1.921fb4p6,
+  },
+  { // Entry 632
+    0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
+    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
+    -0x1.921fb4p6,
+  },
+  { // Entry 633
+    0x1.777a5cf72ad267903aec8118778b3b5ap-19,
+    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
+    0x1.921fb6p6,
+  },
+  { // Entry 634
+    -0x1.777a5cf72ad267903aec8118778b3b5ap-19,
+    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
+    -0x1.921fb6p6,
+  },
+  { // Entry 635
+    0x1.5dde973db000ace3f985a473ea1fc039p-17,
+    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
+    0x1.921fb8p6,
+  },
+  { // Entry 636
+    -0x1.5dde973db000ace3f985a473ea1fc039p-17,
+    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
+    -0x1.921fb8p6,
+  },
+  { // Entry 637
+    -0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
+    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
+    0x1.921fb4p7,
+  },
+  { // Entry 638
+    0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
+    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
+    -0x1.921fb4p7,
+  },
+  { // Entry 639
+    0x1.777a5cf72482eadf75c731f972507718p-18,
+    0x1.ffffffffdd948492723342ea1da49bacp-1,
+    0x1.921fb6p7,
+  },
+  { // Entry 640
+    -0x1.777a5cf72482eadf75c731f972507718p-18,
+    0x1.ffffffffdd948492723342ea1da49bacp-1,
+    -0x1.921fb6p7,
+  },
+  { // Entry 641
+    0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
+    0x1.fffffffe21d7561725c712f068fc9718p-1,
+    0x1.921fb8p7,
+  },
+  { // Entry 642
+    -0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
+    0x1.fffffffe21d7561725c712f068fc9718p-1,
+    -0x1.921fb8p7,
+  },
+  { // Entry 643
+    0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
+    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
+    0x1.2d97c4p1,
+  },
+  { // Entry 644
+    -0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
+    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
+    -0x1.2d97c4p1,
+  },
+  { // Entry 645
+    0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
+    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
+    0x1.2d97c6p1,
+  },
+  { // Entry 646
+    -0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
+    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
+    -0x1.2d97c6p1,
+  },
+  { // Entry 647
+    0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
+    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
+    0x1.2d97c8p1,
+  },
+  { // Entry 648
+    -0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
+    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
+    -0x1.2d97c8p1,
+  },
+  { // Entry 649
+    -0x1.6a09df19704cf14108e09000ff6374bfp-1,
+    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
+    0x1.f6a7a0p1,
+  },
+  { // Entry 650
+    0x1.6a09df19704cf14108e09000ff6374bfp-1,
+    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
+    -0x1.f6a7a0p1,
+  },
+  { // Entry 651
+    -0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
+    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
+    0x1.f6a7a2p1,
+  },
+  { // Entry 652
+    0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
+    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
+    -0x1.f6a7a2p1,
+  },
+  { // Entry 653
+    -0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
+    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
+    0x1.f6a7a4p1,
+  },
+  { // Entry 654
+    0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
+    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
+    -0x1.f6a7a4p1,
+  },
+  { // Entry 655
+    -0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
+    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
+    0x1.2d97c4p2,
+  },
+  { // Entry 656
+    0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
+    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
+    -0x1.2d97c4p2,
+  },
+  { // Entry 657
+    -0x1.ffffffffffc32939898f464aafc2e74ap-1,
+    -0x1.f3321d234f1363d187dd09528b67b215p-22,
+    0x1.2d97c6p2,
+  },
+  { // Entry 658
+    0x1.ffffffffffc32939898f464aafc2e74ap-1,
+    -0x1.f3321d234f1363d187dd09528b67b215p-22,
+    -0x1.2d97c6p2,
+  },
+  { // Entry 659
+    -0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
+    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
+    0x1.2d97c8p2,
+  },
+  { // Entry 660
+    0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
+    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
+    -0x1.2d97c8p2,
+  },
+  { // Entry 661
+    -0x1.6a09f529316cde5a190d235cc4ccb825p-1,
+    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
+    0x1.5fdbbcp2,
+  },
+  { // Entry 662
+    0x1.6a09f529316cde5a190d235cc4ccb825p-1,
+    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
+    -0x1.5fdbbcp2,
+  },
+  { // Entry 663
+    -0x1.6a09e9d8e2826770567ea818b2e89960p-1,
+    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
+    0x1.5fdbbep2,
+  },
+  { // Entry 664
+    0x1.6a09e9d8e2826770567ea818b2e89960p-1,
+    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
+    -0x1.5fdbbep2,
+  },
+  { // Entry 665
+    -0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
+    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
+    0x1.5fdbc0p2,
+  },
+  { // Entry 666
+    0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
+    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
+    -0x1.5fdbc0p2,
+  },
+  { // Entry 667
+    0x1.6a09d033fa715a407a6f03d01b91113fp-1,
+    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
+    0x1.c463a8p2,
+  },
+  { // Entry 668
+    -0x1.6a09d033fa715a407a6f03d01b91113fp-1,
+    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
+    -0x1.c463a8p2,
+  },
+  { // Entry 669
+    0x1.6a09db844a28f8635851fdf8818515efp-1,
+    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
+    0x1.c463aap2,
+  },
+  { // Entry 670
+    -0x1.6a09db844a28f8635851fdf8818515efp-1,
+    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
+    -0x1.c463aap2,
+  },
+  { // Entry 671
+    0x1.6a09e6d49986140f55226fc58672612cp-1,
+    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
+    0x1.c463acp2,
+  },
+  { // Entry 672
+    -0x1.6a09e6d49986140f55226fc58672612cp-1,
+    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
+    -0x1.c463acp2,
+  },
+  { // Entry 673
+    0x1.ffffffffff95397934cac1f28532d3d3p-1,
+    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
+    0x1.f6a7a0p2,
+  },
+  { // Entry 674
+    -0x1.ffffffffff95397934cac1f28532d3d3p-1,
+    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
+    -0x1.f6a7a0p2,
+  },
+  { // Entry 675
+    0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
+    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
+    0x1.f6a7a2p2,
+  },
+  { // Entry 676
+    -0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
+    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
+    -0x1.f6a7a2p2,
+  },
+  { // Entry 677
+    0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
+    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
+    0x1.f6a7a4p2,
+  },
+  { // Entry 678
+    -0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
+    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
+    -0x1.f6a7a4p2,
+  },
+  { // Entry 679
+    0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
+    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
+    0x1.1475cap3,
+  },
+  { // Entry 680
+    -0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
+    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
+    -0x1.1475cap3,
+  },
+  { // Entry 681
+    0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
+    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
+    0x1.1475ccp3,
+  },
+  { // Entry 682
+    -0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
+    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
+    -0x1.1475ccp3,
+  },
+  { // Entry 683
+    0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
+    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
+    0x1.1475cep3,
+  },
+  { // Entry 684
+    -0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
+    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
+    -0x1.1475cep3,
+  },
+  { // Entry 685
+    0x1.f9990e91a64ae486757878bdfee0f703p-20,
+    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
+    0x1.2d97c4p3,
+  },
+  { // Entry 686
+    -0x1.f9990e91a64ae486757878bdfee0f703p-20,
+    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
+    -0x1.2d97c4p3,
+  },
+  { // Entry 687
+    0x1.f3321d234ed8128aabb0499a43b4def2p-21,
+    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
+    0x1.2d97c6p3,
+  },
+  { // Entry 688
+    -0x1.f3321d234ed8128aabb0499a43b4def2p-21,
+    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
+    -0x1.2d97c6p3,
+  },
+  { // Entry 689
+    -0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
+    -0x1.ffffffffffffd703498c3b8288563915p-1,
+    0x1.2d97c8p3,
+  },
+  { // Entry 690
+    0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
+    -0x1.ffffffffffffd703498c3b8288563915p-1,
+    -0x1.2d97c8p3,
+  },
+  { // Entry 691
+    -0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
+    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
+    0x1.46b9c0p3,
+  },
+  { // Entry 692
+    0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
+    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
+    -0x1.46b9c0p3,
+  },
+  { // Entry 693
+    -0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
+    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
+    0x1.46b9c2p3,
+  },
+  { // Entry 694
+    0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
+    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
+    -0x1.46b9c2p3,
+  },
+  { // Entry 695
+    -0x1.6a09ee8fc294f35db3efce565365af89p-1,
+    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
+    0x1.46b9c4p3,
+  },
+  { // Entry 696
+    0x1.6a09ee8fc294f35db3efce565365af89p-1,
+    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
+    -0x1.46b9c4p3,
+  },
+  { // Entry 697
+    -0x1.fffffffffe4c96b397d951cb21861c95p-1,
+    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
+    0x1.5fdbbcp3,
+  },
+  { // Entry 698
+    0x1.fffffffffe4c96b397d951cb21861c95p-1,
+    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
+    -0x1.5fdbbcp3,
+  },
+  { // Entry 699
+    -0x1.ffffffffffe8512aebb56c9e75b41941p-1,
+    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
+    0x1.5fdbbep3,
+  },
+  { // Entry 700
+    0x1.ffffffffffe8512aebb56c9e75b41941p-1,
+    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
+    -0x1.5fdbbep3,
+  },
+  { // Entry 701
+    -0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
+    0x1.644588ac238ae493fa32435ba51329bfp-21,
+    0x1.5fdbc0p3,
+  },
+  { // Entry 702
+    0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
+    0x1.644588ac238ae493fa32435ba51329bfp-21,
+    -0x1.5fdbc0p3,
+  },
+  { // Entry 703
+    -0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
+    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
+    0x1.78fdb6p3,
+  },
+  { // Entry 704
+    0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
+    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
+    -0x1.78fdb6p3,
+  },
+  { // Entry 705
+    -0x1.6a09fc537d29cf131d6710991bebabedp-1,
+    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
+    0x1.78fdb8p3,
+  },
+  { // Entry 706
+    0x1.6a09fc537d29cf131d6710991bebabedp-1,
+    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
+    -0x1.78fdb8p3,
+  },
+  { // Entry 707
+    -0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
+    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
+    0x1.78fdbap3,
+  },
+  { // Entry 708
+    0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
+    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
+    -0x1.78fdbap3,
+  },
+  { // Entry 709
+    0x1.6a09c909add4dbf32253a39d5c306308p-1,
+    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
+    0x1.ab41aep3,
+  },
+  { // Entry 710
+    -0x1.6a09c909add4dbf32253a39d5c306308p-1,
+    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
+    -0x1.ab41aep3,
+  },
+  { // Entry 711
+    0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
+    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
+    0x1.ab41b0p3,
+  },
+  { // Entry 712
+    -0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
+    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
+    -0x1.ab41b0p3,
+  },
+  { // Entry 713
+    0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
+    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
+    0x1.ab41b2p3,
+  },
+  { // Entry 714
+    -0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
+    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
+    -0x1.ab41b2p3,
+  },
+  { // Entry 715
+    0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
+    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
+    0x1.c463a8p3,
+  },
+  { // Entry 716
+    -0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
+    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
+    -0x1.c463a8p3,
+  },
+  { // Entry 717
+    0x1.ffffffffff12d89bb084dd762848b3d6p-1,
+    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
+    0x1.c463aap3,
+  },
+  { // Entry 718
+    -0x1.ffffffffff12d89bb084dd762848b3d6p-1,
+    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
+    -0x1.c463aap3,
+  },
+  { // Entry 719
+    0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
+    -0x1.334d44b0945407b118b361ab78171f67p-25,
+    0x1.c463acp3,
+  },
+  { // Entry 720
+    -0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
+    -0x1.334d44b0945407b118b361ab78171f67p-25,
+    -0x1.c463acp3,
+  },
+  { // Entry 721
+    0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
+    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
+    0x1.dd85a4p3,
+  },
+  { // Entry 722
+    -0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
+    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
+    -0x1.dd85a4p3,
+  },
+  { // Entry 723
+    0x1.6a09f49854662eff1b35755a129044a7p-1,
+    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
+    0x1.dd85a6p3,
+  },
+  { // Entry 724
+    -0x1.6a09f49854662eff1b35755a129044a7p-1,
+    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
+    -0x1.dd85a6p3,
+  },
+  { // Entry 725
+    0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
+    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
+    0x1.dd85a8p3,
+  },
+  { // Entry 726
+    -0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
+    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
+    -0x1.dd85a8p3,
+  },
+  { // Entry 727
+    0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
+    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
+    0x1.f6a7a0p3,
+  },
+  { // Entry 728
+    -0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
+    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
+    -0x1.f6a7a0p3,
+  },
+  { // Entry 729
+    0x1.2aa70bcb07d3a40781510d213652e43ap-22,
+    -0x1.ffffffffffea396ab8aee509392c755dp-1,
+    0x1.f6a7a2p3,
+  },
+  { // Entry 730
+    -0x1.2aa70bcb07d3a40781510d213652e43ap-22,
+    -0x1.ffffffffffea396ab8aee509392c755dp-1,
+    -0x1.f6a7a2p3,
+  },
+  { // Entry 731
+    -0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
+    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
+    0x1.f6a7a4p3,
+  },
+  { // Entry 732
+    0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
+    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
+    -0x1.f6a7a4p3,
+  },
+  { // Entry 733
+    -0x1.6a09a383953124096898340f9168b9d5p-1,
+    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
+    0x1.07e4ccp4,
+  },
+  { // Entry 734
+    0x1.6a09a383953124096898340f9168b9d5p-1,
+    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
+    -0x1.07e4ccp4,
+  },
+  { // Entry 735
+    -0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
+    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
+    0x1.07e4cep4,
+  },
+  { // Entry 736
+    0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
+    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
+    -0x1.07e4cep4,
+  },
+  { // Entry 737
+    -0x1.6a09fe061433e7770d00ca59d5a56251p-1,
+    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
+    0x1.07e4d0p4,
+  },
+  { // Entry 738
+    0x1.6a09fe061433e7770d00ca59d5a56251p-1,
+    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
+    -0x1.07e4d0p4,
+  },
+  { // Entry 739
+    -0x1.fffffffff9219dae5feda1b539335803p-1,
+    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
+    0x1.1475cap4,
+  },
+  { // Entry 740
+    0x1.fffffffff9219dae5feda1b539335803p-1,
+    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
+    -0x1.1475cap4,
+  },
+  { // Entry 741
+    -0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
+    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
+    0x1.1475ccp4,
+  },
+  { // Entry 742
+    0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
+    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
+    -0x1.1475ccp4,
+  },
+  { // Entry 743
+    -0x1.fffffffffe190d2eb82e74efd2093215p-1,
+    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
+    0x1.1475cep4,
+  },
+  { // Entry 744
+    0x1.fffffffffe190d2eb82e74efd2093215p-1,
+    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
+    -0x1.1475cep4,
+  },
+  { // Entry 745
+    -0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
+    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
+    0x1.2106c8p4,
+  },
+  { // Entry 746
+    0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
+    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
+    -0x1.2106c8p4,
+  },
+  { // Entry 747
+    -0x1.6a09ecdd2b784b699034ee8102670e27p-1,
+    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
+    0x1.2106cap4,
+  },
+  { // Entry 748
+    0x1.6a09ecdd2b784b699034ee8102670e27p-1,
+    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
+    -0x1.2106cap4,
+  },
+  { // Entry 749
+    -0x1.6a09bf9beca5e03188301639c09ed574p-1,
+    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
+    0x1.2106ccp4,
+  },
+  { // Entry 750
+    0x1.6a09bf9beca5e03188301639c09ed574p-1,
+    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
+    -0x1.2106ccp4,
+  },
+  { // Entry 751
+    -0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
+    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
+    0x1.2d97c4p4,
+  },
+  { // Entry 752
+    0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
+    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
+    -0x1.2d97c4p4,
+  },
+  { // Entry 753
+    -0x1.f3321d234deacd6f3afd75039685012fp-20,
+    0x1.fffffffffc32939898f585d6948cf2d1p-1,
+    0x1.2d97c6p4,
+  },
+  { // Entry 754
+    0x1.f3321d234deacd6f3afd75039685012fp-20,
+    0x1.fffffffffc32939898f585d6948cf2d1p-1,
+    -0x1.2d97c6p4,
+  },
+  { // Entry 755
+    0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
+    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
+    0x1.2d97c8p4,
+  },
+  { // Entry 756
+    -0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
+    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
+    -0x1.2d97c8p4,
+  },
+  { // Entry 757
+    0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
+    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
+    0x1.3a28c2p4,
+  },
+  { // Entry 758
+    -0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
+    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
+    -0x1.3a28c2p4,
+  },
+  { // Entry 759
+    0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
+    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
+    0x1.3a28c4p4,
+  },
+  { // Entry 760
+    -0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
+    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
+    -0x1.3a28c4p4,
+  },
+  { // Entry 761
+    0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
+    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
+    0x1.3a28c6p4,
+  },
+  { // Entry 762
+    -0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
+    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
+    -0x1.3a28c6p4,
+  },
+  { // Entry 763
+    0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
+    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
+    0x1.46b9c0p4,
+  },
+  { // Entry 764
+    -0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
+    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
+    -0x1.46b9c0p4,
+  },
+  { // Entry 765
+    0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
+    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
+    0x1.46b9c2p4,
+  },
+  { // Entry 766
+    -0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
+    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
+    -0x1.46b9c2p4,
+  },
+  { // Entry 767
+    0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
+    -0x1.71136b88d4608490f2ddfe90101112aep-21,
+    0x1.46b9c4p4,
+  },
+  { // Entry 768
+    -0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
+    -0x1.71136b88d4608490f2ddfe90101112aep-21,
+    -0x1.46b9c4p4,
+  },
+  { // Entry 769
+    0x1.6a0a2903d773925b052fb006ac670c23p-1,
+    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
+    0x1.534abep4,
+  },
+  { // Entry 770
+    -0x1.6a0a2903d773925b052fb006ac670c23p-1,
+    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
+    -0x1.534abep4,
+  },
+  { // Entry 771
+    0x1.6a09fbc2a025fdae918466fa00142143p-1,
+    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
+    0x1.534ac0p4,
+  },
+  { // Entry 772
+    -0x1.6a09fbc2a025fdae918466fa00142143p-1,
+    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
+    -0x1.534ac0p4,
+  },
+  { // Entry 773
+    0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
+    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
+    0x1.534ac2p4,
+  },
+  { // Entry 774
+    -0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
+    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
+    -0x1.534ac2p4,
+  },
+  { // Entry 775
+    0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
+    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
+    0x1.5fdbbcp4,
+  },
+  { // Entry 776
+    -0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
+    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
+    -0x1.5fdbbcp4,
+  },
+  { // Entry 777
+    0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
+    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
+    0x1.5fdbbep4,
+  },
+  { // Entry 778
+    -0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
+    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
+    -0x1.5fdbbep4,
+  },
+  { // Entry 779
+    -0x1.644588ac2334a3d5452d9960282cf80dp-20,
+    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
+    0x1.5fdbc0p4,
+  },
+  { // Entry 780
+    0x1.644588ac2334a3d5452d9960282cf80dp-20,
+    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
+    -0x1.5fdbc0p4,
+  },
+  { // Entry 781
+    -0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
+    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
+    0x1.6c6cbap4,
+  },
+  { // Entry 782
+    0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
+    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
+    -0x1.6c6cbap4,
+  },
+  { // Entry 783
+    -0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
+    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
+    0x1.6c6cbcp4,
+  },
+  { // Entry 784
+    0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
+    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
+    -0x1.6c6cbcp4,
+  },
+  { // Entry 785
+    -0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
+    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
+    0x1.6c6cbep4,
+  },
+  { // Entry 786
+    0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
+    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
+    -0x1.6c6cbep4,
+  },
+  { // Entry 787
+    -0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
+    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
+    0x1.78fdb6p4,
+  },
+  { // Entry 788
+    0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
+    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
+    -0x1.78fdb6p4,
+  },
+  { // Entry 789
+    -0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
+    -0x1.effea46c21baa3da7c266c953a013598p-20,
+    0x1.78fdb8p4,
+  },
+  { // Entry 790
+    0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
+    -0x1.effea46c21baa3da7c266c953a013598p-20,
+    -0x1.78fdb8p4,
+  },
+  { // Entry 791
+    -0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
+    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
+    0x1.78fdbap4,
+  },
+  { // Entry 792
+    0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
+    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
+    -0x1.78fdbap4,
+  },
+  { // Entry 793
+    -0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
+    0x1.6a0994e68b787ee4fd6830b288225745p-1,
+    0x1.858eb4p4,
+  },
+  { // Entry 794
+    0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
+    0x1.6a0994e68b787ee4fd6830b288225745p-1,
+    -0x1.858eb4p4,
+  },
+  { // Entry 795
+    -0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
+    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
+    0x1.858eb6p4,
+  },
+  { // Entry 796
+    0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
+    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
+    -0x1.858eb6p4,
+  },
+  { // Entry 797
+    -0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
+    0x1.6a09ef690e2283b658509ed319483839p-1,
+    0x1.858eb8p4,
+  },
+  { // Entry 798
+    0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
+    0x1.6a09ef690e2283b658509ed319483839p-1,
+    -0x1.858eb8p4,
+  },
+  { // Entry 799
+    0x1.c048b38a8bbf59f414fec7079209926ep-3,
+    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
+    0x1.fffffep62,
+  },
+  { // Entry 800
+    -0x1.c048b38a8bbf59f414fec7079209926ep-3,
+    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
+    -0x1.fffffep62,
+  },
+  { // Entry 801
+    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    0x1.p63,
+  },
+  { // Entry 802
+    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
+    -0x1.p63,
+  },
+  { // Entry 803
+    -0x1.d6637d070347ee94e830445e76486727p-1,
+    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
+    0x1.000002p63,
+  },
+  { // Entry 804
+    0x1.d6637d070347ee94e830445e76486727p-1,
+    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
+    -0x1.000002p63,
+  },
+  { // Entry 805
+    -0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
+    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
+    0x1.fffffep26,
+  },
+  { // Entry 806
+    0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
+    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
+    -0x1.fffffep26,
+  },
+  { // Entry 807
+    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    0x1.p27,
+  },
+  { // Entry 808
+    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
+    -0x1.p27,
+  },
+  { // Entry 809
+    0x1.171999b629fd5b6357c6dff4d7827d95p-1,
+    -0x1.ad3d80c82f4452b076581de24648435bp-1,
+    0x1.000002p27,
+  },
+  { // Entry 810
+    -0x1.171999b629fd5b6357c6dff4d7827d95p-1,
+    -0x1.ad3d80c82f4452b076581de24648435bp-1,
+    -0x1.000002p27,
+  },
+  { // Entry 811
+    -0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
+    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
+    0x1.fffffep23,
+  },
+  { // Entry 812
+    0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
+    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
+    -0x1.fffffep23,
+  },
+  { // Entry 813
+    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    0x1.p24,
+  },
+  { // Entry 814
+    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
+    -0x1.p24,
+  },
+  { // Entry 815
+    0x1.c9b0c7265c543f80faf01741c6458560p-1,
+    0x1.caf8537c3e442ca8aca86c156773853ap-2,
+    0x1.000002p24,
+  },
+  { // Entry 816
+    -0x1.c9b0c7265c543f80faf01741c6458560p-1,
+    0x1.caf8537c3e442ca8aca86c156773853ap-2,
+    -0x1.000002p24,
+  },
+  { // Entry 817
+    -0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
+    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
+    0x1.fffffep1,
+  },
+  { // Entry 818
+    0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
+    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
+    -0x1.fffffep1,
+  },
+  { // Entry 819
+    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    0x1.p2,
+  },
+  { // Entry 820
+    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
+    -0x1.p2,
+  },
+  { // Entry 821
+    -0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
+    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
+    0x1.000002p2,
+  },
+  { // Entry 822
+    0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
+    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
+    -0x1.000002p2,
+  },
+  { // Entry 823
+    0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
+    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
+    0x1.fffffep0,
+  },
+  { // Entry 824
+    -0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
+    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
+    -0x1.fffffep0,
+  },
+  { // Entry 825
+    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    0x1.p1,
+  },
+  { // Entry 826
+    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
+    -0x1.p1,
+  },
+  { // Entry 827
+    0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
+    -0x1.aa227401b288620a0372d5a96084915dp-2,
+    0x1.000002p1,
+  },
+  { // Entry 828
+    -0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
+    -0x1.aa227401b288620a0372d5a96084915dp-2,
+    -0x1.000002p1,
+  },
+  { // Entry 829
+    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    0x1.fffffep-1,
+  },
+  { // Entry 830
+    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    -0x1.fffffep-1,
+  },
+  { // Entry 831
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.p0,
+  },
+  { // Entry 832
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.p0,
+  },
+  { // Entry 833
+    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    0x1.000002p0,
+  },
+  { // Entry 834
+    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    -0x1.000002p0,
+  },
+  { // Entry 835
+    0x1.eaee85835dde5b71beec7d8d98052112p-2,
+    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
+    0x1.fffffep-2,
+  },
+  { // Entry 836
+    -0x1.eaee85835dde5b71beec7d8d98052112p-2,
+    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
+    -0x1.fffffep-2,
+  },
+  { // Entry 837
+    0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    0x1.p-1,
+  },
+  { // Entry 838
+    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
+    -0x1.p-1,
+  },
+  { // Entry 839
+    0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
+    0x1.c1527f70409076da0c3204df1e099a83p-1,
+    0x1.000002p-1,
+  },
+  { // Entry 840
+    -0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
+    0x1.c1527f70409076da0c3204df1e099a83p-1,
+    -0x1.000002p-1,
+  },
+  { // Entry 841
+    0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
+    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
+    0x1.fffffep-3,
+  },
+  { // Entry 842
+    -0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
+    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
+    -0x1.fffffep-3,
+  },
+  { // Entry 843
+    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    0x1.p-2,
+  },
+  { // Entry 844
+    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    0x1.f01549f7deea174f07a67972bf29f148p-1,
+    -0x1.p-2,
+  },
+  { // Entry 845
+    0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
+    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
+    0x1.000002p-2,
+  },
+  { // Entry 846
+    -0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
+    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
+    -0x1.000002p-2,
+  },
+  { // Entry 847
+    0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
+    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
+    0x1.fffffep-4,
+  },
+  { // Entry 848
+    -0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
+    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
+    -0x1.fffffep-4,
+  },
+  { // Entry 849
+    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    0x1.p-3,
+  },
+  { // Entry 850
+    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    0x1.fc015527d5bd36da3cd4253bede319cap-1,
+    -0x1.p-3,
+  },
+  { // Entry 851
+    0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
+    0x1.fc015517e065afb6bb102c18f5919820p-1,
+    0x1.000002p-3,
+  },
+  { // Entry 852
+    -0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
+    0x1.fc015517e065afb6bb102c18f5919820p-1,
+    -0x1.000002p-3,
+  },
+  { // Entry 853
+    0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
+    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
+    0x1.fffffep-5,
+  },
+  { // Entry 854
+    -0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
+    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
+    -0x1.fffffep-5,
+  },
+  { // Entry 855
+    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    0x1.p-4,
+  },
+  { // Entry 856
+    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
+    -0x1.p-4,
+  },
+  { // Entry 857
+    0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
+    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
+    0x1.000002p-4,
+  },
+  { // Entry 858
+    -0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
+    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
+    -0x1.000002p-4,
+  },
+  { // Entry 859
+    0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
+    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
+    0x1.fffffep-6,
+  },
+  { // Entry 860
+    -0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
+    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
+    -0x1.fffffep-6,
+  },
+  { // Entry 861
+    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    0x1.p-5,
+  },
+  { // Entry 862
+    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    0x1.ffc00155527d2b12aedb49d92928df72p-1,
+    -0x1.p-5,
+  },
+  { // Entry 863
+    0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
+    0x1.ffc001545287d49b57972af5145663a0p-1,
+    0x1.000002p-5,
+  },
+  { // Entry 864
+    -0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
+    0x1.ffc001545287d49b57972af5145663a0p-1,
+    -0x1.000002p-5,
+  },
+  { // Entry 865
+    0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
+    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
+    0x1.fffffep-7,
+  },
+  { // Entry 866
+    -0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
+    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
+    -0x1.fffffep-7,
+  },
+  { // Entry 867
+    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    0x1.p-6,
+  },
+  { // Entry 868
+    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
+    -0x1.p-6,
+  },
+  { // Entry 869
+    0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
+    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
+    0x1.000002p-6,
+  },
+  { // Entry 870
+    -0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
+    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
+    -0x1.000002p-6,
+  },
+  { // Entry 871
+    0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
+    0x1.fffffff0000020155544fff49fca38e6p-1,
+    0x1.fffffep-15,
+  },
+  { // Entry 872
+    -0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
+    0x1.fffffff0000020155544fff49fca38e6p-1,
+    -0x1.fffffep-15,
+  },
+  { // Entry 873
+    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    0x1.p-14,
+  },
+  { // Entry 874
+    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    0x1.fffffff00000001555555549f49f49f7p-1,
+    -0x1.p-14,
+  },
+  { // Entry 875
+    0x1.000001fd5555455777578ccbe7bfc09cp-14,
+    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
+    0x1.000002p-14,
+  },
+  { // Entry 876
+    -0x1.000001fd5555455777578ccbe7bfc09cp-14,
+    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
+    -0x1.000002p-14,
+  },
+  { // Entry 877
+    0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
+    0x1.fffffffffffffc000007fffffc015555p-1,
+    0x1.fffffep-28,
+  },
+  { // Entry 878
+    -0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
+    0x1.fffffffffffffc000007fffffc015555p-1,
+    -0x1.fffffep-28,
+  },
+  { // Entry 879
+    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    0x1.fffffffffffffc000000000000015555p-1,
+    0x1.p-27,
+  },
+  { // Entry 880
+    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    0x1.fffffffffffffc000000000000015555p-1,
+    -0x1.p-27,
+  },
+  { // Entry 881
+    0x1.000001ffffffff55555155554d557772p-27,
+    0x1.fffffffffffffbffffeffffff0015555p-1,
+    0x1.000002p-27,
+  },
+  { // Entry 882
+    -0x1.000001ffffffff55555155554d557772p-27,
+    0x1.fffffffffffffbffffeffffff0015555p-1,
+    -0x1.000002p-27,
+  },
+  { // Entry 883
+    0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
+    0x1.fffffffffffffff000001ffffff00015p-1,
+    0x1.fffffep-31,
+  },
+  { // Entry 884
+    -0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
+    0x1.fffffffffffffff000001ffffff00015p-1,
+    -0x1.fffffep-31,
+  },
+  { // Entry 885
+    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    0x1.fffffffffffffff00000000000000015p-1,
+    0x1.p-30,
+  },
+  { // Entry 886
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    0x1.fffffffffffffff00000000000000015p-1,
+    -0x1.p-30,
+  },
+  { // Entry 887
+    0x1.000001fffffffffd5555455555355557p-30,
+    0x1.ffffffffffffffefffffbfffffc00015p-1,
+    0x1.000002p-30,
+  },
+  { // Entry 888
+    -0x1.000001fffffffffd5555455555355557p-30,
+    0x1.ffffffffffffffefffffbfffffc00015p-1,
+    -0x1.000002p-30,
+  },
+  { // Entry 889
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    -0x1.fffffep127,
+  },
+  { // Entry 890
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    0x1.fffffep127,
+  },
+  { // Entry 891
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    0x1.fffffep127,
+  },
+  { // Entry 892
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    -0x1.fffffep127,
+  },
+  { // Entry 893
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    0x1.fffffep127,
+  },
+  { // Entry 894
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
+    -0x1.fffffep127,
+  },
+  { // Entry 895
+    -0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
+    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
+    0x1.fffffcp127,
+  },
+  { // Entry 896
+    0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
+    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
+    -0x1.fffffcp127,
+  },
+  { // Entry 897
+    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    0x1.921fb6p1,
+  },
+  { // Entry 898
+    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
+    -0x1.921fb6p1,
+  },
+  { // Entry 899
+    0x1.ffffffffffff76521249c7422930ed82p-1,
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    0x1.921fb6p0,
+  },
+  { // Entry 900
+    -0x1.ffffffffffff76521249c7422930ed82p-1,
+    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
+    -0x1.921fb6p0,
+  },
+  { // Entry 901
+    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    0x1.000002p0,
+  },
+  { // Entry 902
+    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
+    -0x1.000002p0,
+  },
+  { // Entry 903
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    0x1.p0,
+  },
+  { // Entry 904
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
+    -0x1.p0,
+  },
+  { // Entry 905
+    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    0x1.fffffep-1,
+  },
+  { // Entry 906
+    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
+    -0x1.fffffep-1,
+  },
+  { // Entry 907
+    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    0x1.921fb6p-1,
+  },
+  { // Entry 908
+    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
+    -0x1.921fb6p-1,
+  },
+  { // Entry 909
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p-126,
+  },
+  { // Entry 910
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p-126,
+  },
+  { // Entry 911
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-126,
+  },
+  { // Entry 912
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-126,
+  },
+  { // Entry 913
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp-127,
+  },
+  { // Entry 914
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp-127,
+  },
+  { // Entry 915
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffff8p-127,
+  },
+  { // Entry 916
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffff8p-127,
+  },
+  { // Entry 917
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-148,
+  },
+  { // Entry 918
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-148,
+  },
+  { // Entry 919
+    0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p-149,
+  },
+  { // Entry 920
+    -0.0f,
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+  },
+  { // Entry 921
+    0.0,
+    0x1.p0,
+    0.0f,
+  },
+  { // Entry 922
+    -0.0,
+    0x1.p0,
+    -0.0f,
+  },
+};
diff --git a/tests/math_data/sinf_intel_data.h b/tests/math_data/sinf_intel_data.h
new file mode 100644
index 0000000..9cda0fd
--- /dev/null
+++ b/tests/math_data/sinf_intel_data.h
@@ -0,0 +1,4374 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_sinf_intel_data[] = {
+  { // Entry 0
+    -0x1.0003fffffff554d5535552cccf778ccdp-21,
+    -0x1.0004p-21
+  },
+  { // Entry 1
+    0x1.0003fffffff554d5535552cccf778ccdp-21,
+    0x1.0004p-21
+  },
+  { // Entry 2
+    -0x1.d30ca7008af24ef048a7a05eecde2120p-4,
+    -0x1.00cbf0p10
+  },
+  { // Entry 3
+    0x1.d30ca7008af24ef048a7a05eecde2120p-4,
+    0x1.00cbf0p10
+  },
+  { // Entry 4
+    0x1.8d665d0000200efc4478008658c617c7p-1,
+    -0x1.01ee34p2
+  },
+  { // Entry 5
+    -0x1.8d665d0000200efc4478008658c617c7p-1,
+    0x1.01ee34p2
+  },
+  { // Entry 6
+    0x1.ec042ff972e42c23f28f2da4fb75f851p-1,
+    -0x1.18f1f4p4
+  },
+  { // Entry 7
+    -0x1.ec042ff972e42c23f28f2da4fb75f851p-1,
+    0x1.18f1f4p4
+  },
+  { // Entry 8
+    0x1.f0d384240ad9f2dba47b96b08271b41fp-1,
+    -0x1.1df906p2
+  },
+  { // Entry 9
+    -0x1.f0d384240ad9f2dba47b96b08271b41fp-1,
+    0x1.1df906p2
+  },
+  { // Entry 10
+    -0x1.4616daf9cd3ce4e92186e7d8ec3d3ef0p-5,
+    -0x1.3ap6
+  },
+  { // Entry 11
+    0x1.4616daf9cd3ce4e92186e7d8ec3d3ef0p-5,
+    0x1.3ap6
+  },
+  { // Entry 12
+    0x1.df04c5f9de343235f4f8b1797286872bp-1,
+    -0x1.44b096p2
+  },
+  { // Entry 13
+    -0x1.df04c5f9de343235f4f8b1797286872bp-1,
+    0x1.44b096p2
+  },
+  { // Entry 14
+    -0x1.feffbd7334c7043b90a6bc2d76dda7c8p-1,
+    -0x1.821cf6p0
+  },
+  { // Entry 15
+    0x1.feffbd7334c7043b90a6bc2d76dda7c8p-1,
+    0x1.821cf6p0
+  },
+  { // Entry 16
+    0x1.ebac56ffe6f27893c69f68d1d7b4a448p-3,
+    -0x1.829b86p2
+  },
+  { // Entry 17
+    -0x1.ebac56ffe6f27893c69f68d1d7b4a448p-3,
+    0x1.829b86p2
+  },
+  { // Entry 18
+    0x1.b725ccef65b1390912a0f5eaab0e7202p-6,
+    -0x1.8580fep7
+  },
+  { // Entry 19
+    -0x1.b725ccef65b1390912a0f5eaab0e7202p-6,
+    0x1.8580fep7
+  },
+  { // Entry 20
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 21
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.fffffep127
+  },
+  { // Entry 22
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 23
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 24
+    -0x1.f83de7c0683d3bd90a769f62a41ac1c3p-1,
+    0x1.000002p52
+  },
+  { // Entry 25
+    0x1.f83de7c0683d3bd90a769f62a41ac1c3p-1,
+    -0x1.000002p52
+  },
+  { // Entry 26
+    -0x1.7dbd11ffde4c20dbb376019f1c654bb0p-2,
+    0x1.000022p62
+  },
+  { // Entry 27
+    0x1.7dbd11ffde4c20dbb376019f1c654bb0p-2,
+    -0x1.000022p62
+  },
+  { // Entry 28
+    0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
+    0x1.000150p-1
+  },
+  { // Entry 29
+    -0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
+    -0x1.000150p-1
+  },
+  { // Entry 30
+    0x1.ffae8cfefa813da87498df988c3d8f5ep-5,
+    0x1.0001f0p-4
+  },
+  { // Entry 31
+    -0x1.ffae8cfefa813da87498df988c3d8f5ep-5,
+    -0x1.0001f0p-4
+  },
+  { // Entry 32
+    0x1.89c7d6087a861bb6fe794148c3425348p-1,
+    0x1.0003p40
+  },
+  { // Entry 33
+    -0x1.89c7d6087a861bb6fe794148c3425348p-1,
+    -0x1.0003p40
+  },
+  { // Entry 34
+    -0x1.59e1f519ef8b722eae12a404cad937ebp-1,
+    0x1.000380p126
+  },
+  { // Entry 35
+    0x1.59e1f519ef8b722eae12a404cad937ebp-1,
+    -0x1.000380p126
+  },
+  { // Entry 36
+    0x1.0003fffffff554d5535552cccf778ccdp-21,
+    0x1.0004p-21
+  },
+  { // Entry 37
+    -0x1.0003fffffff554d5535552cccf778ccdp-21,
+    -0x1.0004p-21
+  },
+  { // Entry 38
+    0x1.383065027ec4f20ab1c0027d991b805ap-6,
+    0x1.0007c0p9
+  },
+  { // Entry 39
+    -0x1.383065027ec4f20ab1c0027d991b805ap-6,
+    -0x1.0007c0p9
+  },
+  { // Entry 40
+    0x1.eb0397002fdfbae226f069d6cd53c40fp-2,
+    0x1.000cp-1
+  },
+  { // Entry 41
+    -0x1.eb0397002fdfbae226f069d6cd53c40fp-2,
+    -0x1.000cp-1
+  },
+  { // Entry 42
+    0x1.fedc8b0001f7dacee090c5edc3bfa547p-4,
+    0x1.0019p-3
+  },
+  { // Entry 43
+    -0x1.fedc8b0001f7dacee090c5edc3bfa547p-4,
+    -0x1.0019p-3
+  },
+  { // Entry 44
+    0x1.ab471af26ffea23d7643cf614c860b18p-10,
+    0x1.003820p68
+  },
+  { // Entry 45
+    -0x1.ab471af26ffea23d7643cf614c860b18p-10,
+    -0x1.003820p68
+  },
+  { // Entry 46
+    0x1.ff29eefdde3041fc5c75a1f822a5421dp-4,
+    0x1.0040p-3
+  },
+  { // Entry 47
+    -0x1.ff29eefdde3041fc5c75a1f822a5421dp-4,
+    -0x1.0040p-3
+  },
+  { // Entry 48
+    0x1.29070175206b3f198c893e19b4bd6cb8p-13,
+    0x1.01f0p103
+  },
+  { // Entry 49
+    -0x1.29070175206b3f198c893e19b4bd6cb8p-13,
+    -0x1.01f0p103
+  },
+  { // Entry 50
+    -0x1.ffffffffffffaafbe53de74231954709p-1,
+    0x1.04ccbcp18
+  },
+  { // Entry 51
+    0x1.ffffffffffffaafbe53de74231954709p-1,
+    -0x1.04ccbcp18
+  },
+  { // Entry 52
+    0x1.f4f72cad5f5fb17ec608ec7ac1cbca8bp-2,
+    0x1.05bcp-1
+  },
+  { // Entry 53
+    -0x1.f4f72cad5f5fb17ec608ec7ac1cbca8bp-2,
+    -0x1.05bcp-1
+  },
+  { // Entry 54
+    0x1.f896c6689d7e75e351ecc85731254cd3p-1,
+    0x1.07c1f8p119
+  },
+  { // Entry 55
+    -0x1.f896c6689d7e75e351ecc85731254cd3p-1,
+    -0x1.07c1f8p119
+  },
+  { // Entry 56
+    -0x1.267593f4d59c7de6170090a6a084cdcap-14,
+    0x1.080180p23
+  },
+  { // Entry 57
+    0x1.267593f4d59c7de6170090a6a084cdcap-14,
+    -0x1.080180p23
+  },
+  { // Entry 58
+    0x1.fc86372a841549410c12dbec6fe80dc5p-2,
+    0x1.0a14p-1
+  },
+  { // Entry 59
+    -0x1.fc86372a841549410c12dbec6fe80dc5p-2,
+    -0x1.0a14p-1
+  },
+  { // Entry 60
+    0x1.bca28f0004316bae8df6a2352cca1382p-1,
+    0x1.0b770ap1
+  },
+  { // Entry 61
+    -0x1.bca28f0004316bae8df6a2352cca1382p-1,
+    -0x1.0b770ap1
+  },
+  { // Entry 62
+    -0x1.fade9abd67526d37189df004b51d9d5ap-1,
+    0x1.0ddcp96
+  },
+  { // Entry 63
+    0x1.fade9abd67526d37189df004b51d9d5ap-1,
+    -0x1.0ddcp96
+  },
+  { // Entry 64
+    0x1.bf683cffffec6e8672a49f08aae49c46p-1,
+    0x1.1024p0
+  },
+  { // Entry 65
+    -0x1.bf683cffffec6e8672a49f08aae49c46p-1,
+    -0x1.1024p0
+  },
+  { // Entry 66
+    -0x1.f14407f6441e92f480d2e22859d67a39p-1,
+    0x1.109cc4p4
+  },
+  { // Entry 67
+    0x1.f14407f6441e92f480d2e22859d67a39p-1,
+    -0x1.109cc4p4
+  },
+  { // Entry 68
+    -0x1.ff7e7b9983a7c2ebecfab1a0b0af3c4dp-1,
+    0x1.13bfb2p4
+  },
+  { // Entry 69
+    0x1.ff7e7b9983a7c2ebecfab1a0b0af3c4dp-1,
+    -0x1.13bfb2p4
+  },
+  { // Entry 70
+    0x1.c4942b1e9ec175aa7d3fd75f2e37e566p-1,
+    0x1.1590p0
+  },
+  { // Entry 71
+    -0x1.c4942b1e9ec175aa7d3fd75f2e37e566p-1,
+    -0x1.1590p0
+  },
+  { // Entry 72
+    0x1.fff8d36866faaac8c17e1267498bd132p-1,
+    0x1.18p85
+  },
+  { // Entry 73
+    -0x1.fff8d36866faaac8c17e1267498bd132p-1,
+    -0x1.18p85
+  },
+  { // Entry 74
+    0x1.c78d962546ce51b882c9054eccd829b1p-1,
+    0x1.18c8p0
+  },
+  { // Entry 75
+    -0x1.c78d962546ce51b882c9054eccd829b1p-1,
+    -0x1.18c8p0
+  },
+  { // Entry 76
+    0x1.c7cb99a111f26527b805734962fb12a0p-1,
+    0x1.190cp0
+  },
+  { // Entry 77
+    -0x1.c7cb99a111f26527b805734962fb12a0p-1,
+    -0x1.190cp0
+  },
+  { // Entry 78
+    -0x1.70898100055943898aa7053017ecba69p-1,
+    0x1.1e8f14p62
+  },
+  { // Entry 79
+    0x1.70898100055943898aa7053017ecba69p-1,
+    -0x1.1e8f14p62
+  },
+  { // Entry 80
+    0x1.cdef1e4eb37e9f2249656c27d62b1895p-1,
+    0x1.1ff8p0
+  },
+  { // Entry 81
+    -0x1.cdef1e4eb37e9f2249656c27d62b1895p-1,
+    -0x1.1ff8p0
+  },
+  { // Entry 82
+    -0x1.5df0dd60f122bf79d1ddcf295c34cb0ep-1,
+    0x1.2244a6p59
+  },
+  { // Entry 83
+    0x1.5df0dd60f122bf79d1ddcf295c34cb0ep-1,
+    -0x1.2244a6p59
+  },
+  { // Entry 84
+    -0x1.fb8dd74f1b091a7b0f9f9d44db84661cp-3,
+    0x1.287ae0p13
+  },
+  { // Entry 85
+    0x1.fb8dd74f1b091a7b0f9f9d44db84661cp-3,
+    -0x1.287ae0p13
+  },
+  { // Entry 86
+    -0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
+    0x1.2d97c8p2
+  },
+  { // Entry 87
+    0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
+    -0x1.2d97c8p2
+  },
+  { // Entry 88
+    -0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
+    0x1.2d97c8p3
+  },
+  { // Entry 89
+    0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
+    -0x1.2d97c8p3
+  },
+  { // Entry 90
+    0x1.ffd5158b81944ff6b4833fdf1faa9281p-1,
+    0x1.32cdc6p18
+  },
+  { // Entry 91
+    -0x1.ffd5158b81944ff6b4833fdf1faa9281p-1,
+    -0x1.32cdc6p18
+  },
+  { // Entry 92
+    0x1.e191e77f58f479b564ec538b671f98afp-14,
+    0x1.37efd8p100
+  },
+  { // Entry 93
+    -0x1.e191e77f58f479b564ec538b671f98afp-14,
+    -0x1.37efd8p100
+  },
+  { // Entry 94
+    0x1.fffe974dceb10d4877a75bc77870ffebp-1,
+    0x1.38p11
+  },
+  { // Entry 95
+    -0x1.fffe974dceb10d4877a75bc77870ffebp-1,
+    -0x1.38p11
+  },
+  { // Entry 96
+    -0x1.b63f2c3f537b10eec2fbf340e4898644p-18,
+    0x1.3d72b8p15
+  },
+  { // Entry 97
+    0x1.b63f2c3f537b10eec2fbf340e4898644p-18,
+    -0x1.3d72b8p15
+  },
+  { // Entry 98
+    -0x1.e0208cff17f9186218945af9256d736cp-1,
+    0x1.444b20p7
+  },
+  { // Entry 99
+    0x1.e0208cff17f9186218945af9256d736cp-1,
+    -0x1.444b20p7
+  },
+  { // Entry 100
+    0x1.fffff9002cf87dade6f62eb709dc2aa7p-1,
+    0x1.46b71ep4
+  },
+  { // Entry 101
+    -0x1.fffff9002cf87dade6f62eb709dc2aa7p-1,
+    -0x1.46b71ep4
+  },
+  { // Entry 102
+    0x1.c875581a762211dd5caaf9abde5cf656p-21,
+    0x1.4d0242p7
+  },
+  { // Entry 103
+    -0x1.c875581a762211dd5caaf9abde5cf656p-21,
+    -0x1.4d0242p7
+  },
+  { // Entry 104
+    -0x1.6a6f79000053a3842566f1e018d6359fp-1,
+    0x1.511e8ep28
+  },
+  { // Entry 105
+    0x1.6a6f79000053a3842566f1e018d6359fp-1,
+    -0x1.511e8ep28
+  },
+  { // Entry 106
+    0x1.fffe9ffa6b569dd8c720d68e80bd9a63p-1,
+    0x1.5354d0p100
+  },
+  { // Entry 107
+    -0x1.fffe9ffa6b569dd8c720d68e80bd9a63p-1,
+    -0x1.5354d0p100
+  },
+  { // Entry 108
+    0x1.3b4d58fffff29126460f258ec4423e9ap-1,
+    0x1.53ad5cp-1
+  },
+  { // Entry 109
+    -0x1.3b4d58fffff29126460f258ec4423e9ap-1,
+    -0x1.53ad5cp-1
+  },
+  { // Entry 110
+    -0x1.fffeb762e93ead5ac70f85064fc79cffp-1,
+    0x1.60p3
+  },
+  { // Entry 111
+    0x1.fffeb762e93ead5ac70f85064fc79cffp-1,
+    -0x1.60p3
+  },
+  { // Entry 112
+    0x1.1772377ffe5b1f436c0149e328446f74p-20,
+    0x1.6c6cbcp6
+  },
+  { // Entry 113
+    -0x1.1772377ffe5b1f436c0149e328446f74p-20,
+    -0x1.6c6cbcp6
+  },
+  { // Entry 114
+    0x1.77fffdfffffff78d0577d9552663ea3ep-26,
+    0x1.77fffep-26
+  },
+  { // Entry 115
+    -0x1.77fffdfffffff78d0577d9552663ea3ep-26,
+    -0x1.77fffep-26
+  },
+  { // Entry 116
+    -0x1.ff04979385946d0568c153bf9e125fccp-1,
+    0x1.77fffep4
+  },
+  { // Entry 117
+    0x1.ff04979385946d0568c153bf9e125fccp-1,
+    -0x1.77fffep4
+  },
+  { // Entry 118
+    0x1.feb7a96a577f715fa7ad8788294c045bp-1,
+    0x1.7ffffep0
+  },
+  { // Entry 119
+    -0x1.feb7a96a577f715fa7ad8788294c045bp-1,
+    -0x1.7ffffep0
+  },
+  { // Entry 120
+    0x1.feb7eb54653509617faf3268344437fcp-1,
+    0x1.8001d0p0
+  },
+  { // Entry 121
+    -0x1.feb7eb54653509617faf3268344437fcp-1,
+    -0x1.8001d0p0
+  },
+  { // Entry 122
+    0x1.ff6535998ea004d48763597b6df9cd65p-1,
+    0x1.807ffep13
+  },
+  { // Entry 123
+    -0x1.ff6535998ea004d48763597b6df9cd65p-1,
+    -0x1.807ffep13
+  },
+  { // Entry 124
+    0x1.ff76ed9a192e9a2126bcfc0f306240d4p-1,
+    0x1.866a42p0
+  },
+  { // Entry 125
+    -0x1.ff76ed9a192e9a2126bcfc0f306240d4p-1,
+    -0x1.866a42p0
+  },
+  { // Entry 126
+    0x1.ace844f1eb6c3077277929ff4ade3f41p-5,
+    0x1.8864p35
+  },
+  { // Entry 127
+    -0x1.ace844f1eb6c3077277929ff4ade3f41p-5,
+    -0x1.8864p35
+  },
+  { // Entry 128
+    0x1.e0d108f196fd3cbcb7c2c76aee738205p-5,
+    0x1.8a9b56p1
+  },
+  { // Entry 129
+    -0x1.e0d108f196fd3cbcb7c2c76aee738205p-5,
+    -0x1.8a9b56p1
+  },
+  { // Entry 130
+    -0x1.6a09af0006fe0b47c81d8695c017a8dfp-1,
+    0x1.8e96eep9
+  },
+  { // Entry 131
+    0x1.6a09af0006fe0b47c81d8695c017a8dfp-1,
+    -0x1.8e96eep9
+  },
+  { // Entry 132
+    -0x1.dd59dceecf3fbd015e9e29b37aaf511ap-9,
+    0x1.91e40ap2
+  },
+  { // Entry 133
+    0x1.dd59dceecf3fbd015e9e29b37aaf511ap-9,
+    -0x1.91e40ap2
+  },
+  { // Entry 134
+    -0x1.fb73f1187e5053bacb752b89c6a3de57p-9,
+    0x1.91fffep3
+  },
+  { // Entry 135
+    0x1.fb73f1187e5053bacb752b89c6a3de57p-9,
+    -0x1.91fffep3
+  },
+  { // Entry 136
+    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    0x1.921fb6p1
+  },
+  { // Entry 137
+    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    -0x1.921fb6p1
+  },
+  { // Entry 138
+    -0x1.ffffff79db917265e675574b8d83fa6ep-1,
+    0x1.94fd7cp100
+  },
+  { // Entry 139
+    0x1.ffffff79db917265e675574b8d83fa6ep-1,
+    -0x1.94fd7cp100
+  },
+  { // Entry 140
+    0x1.ffffffffffd7e83678a38329c1e093b5p-1,
+    0x1.986834p6
+  },
+  { // Entry 141
+    -0x1.ffffffffffd7e83678a38329c1e093b5p-1,
+    -0x1.986834p6
+  },
+  { // Entry 142
+    0x1.16ae29144d3aeb0ef741c3e2aba34078p-24,
+    0x1.9a48dep17
+  },
+  { // Entry 143
+    -0x1.16ae29144d3aeb0ef741c3e2aba34078p-24,
+    -0x1.9a48dep17
+  },
+  { // Entry 144
+    0x1.ff7ad398fd589528bb07db1e0bdd40f5p-1,
+    0x1.9daa38p0
+  },
+  { // Entry 145
+    -0x1.ff7ad398fd589528bb07db1e0bdd40f5p-1,
+    -0x1.9daa38p0
+  },
+  { // Entry 146
+    0x1.9df5f10000002f4b7421dfe9e955b60dp-4,
+    0x1.9eab2ep-4
+  },
+  { // Entry 147
+    -0x1.9df5f10000002f4b7421dfe9e955b60dp-4,
+    -0x1.9eab2ep-4
+  },
+  { // Entry 148
+    0x1.76dcf7000053c428e30ef99d9cf91accp-1,
+    0x1.a499p-1
+  },
+  { // Entry 149
+    -0x1.76dcf7000053c428e30ef99d9cf91accp-1,
+    -0x1.a499p-1
+  },
+  { // Entry 150
+    0x1.a9d4510000a2a82c391a9b36186ead65p-5,
+    0x1.aa0578p-5
+  },
+  { // Entry 151
+    -0x1.a9d4510000a2a82c391a9b36186ead65p-5,
+    -0x1.aa0578p-5
+  },
+  { // Entry 152
+    0x1.6a097dcc8b1356712fc20f82c4f87e4dp-1,
+    0x1.b4ae70p6
+  },
+  { // Entry 153
+    -0x1.6a097dcc8b1356712fc20f82c4f87e4dp-1,
+    -0x1.b4ae70p6
+  },
+  { // Entry 154
+    0x1.849926ffffeb95860262a99770a8c9c3p-1,
+    0x1.b936dap-1
+  },
+  { // Entry 155
+    -0x1.849926ffffeb95860262a99770a8c9c3p-1,
+    -0x1.b936dap-1
+  },
+  { // Entry 156
+    -0x1.dac40ef1e040315f07519a99c2034fffp-5,
+    0x1.ba2784p82
+  },
+  { // Entry 157
+    0x1.dac40ef1e040315f07519a99c2034fffp-5,
+    -0x1.ba2784p82
+  },
+  { // Entry 158
+    0x1.81074b0346f07390395b4ee2b50b3f94p-14,
+    0x1.bdb44ap107
+  },
+  { // Entry 159
+    -0x1.81074b0346f07390395b4ee2b50b3f94p-14,
+    -0x1.bdb44ap107
+  },
+  { // Entry 160
+    0x1.235debb727b95daaec183bfa4e728be1p-9,
+    0x1.bdbefep119
+  },
+  { // Entry 161
+    -0x1.235debb727b95daaec183bfa4e728be1p-9,
+    -0x1.bdbefep119
+  },
+  { // Entry 162
+    -0x1.99663da94db5290730b029513370e863p-23,
+    0x1.beeeeep80
+  },
+  { // Entry 163
+    0x1.99663da94db5290730b029513370e863p-23,
+    -0x1.beeeeep80
+  },
+  { // Entry 164
+    -0x1.62faa0ffdc55a4c54f1229fc0302bd5fp-2,
+    0x1.bf6fd0p1
+  },
+  { // Entry 165
+    0x1.62faa0ffdc55a4c54f1229fc0302bd5fp-2,
+    -0x1.bf6fd0p1
+  },
+  { // Entry 166
+    -0x1.c6d444de6b90c7b8b43402ef749a4c3dp-5,
+    0x1.bffffep45
+  },
+  { // Entry 167
+    0x1.c6d444de6b90c7b8b43402ef749a4c3dp-5,
+    -0x1.bffffep45
+  },
+  { // Entry 168
+    0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
+    0x1.c463acp3
+  },
+  { // Entry 169
+    -0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
+    -0x1.c463acp3
+  },
+  { // Entry 170
+    0x1.913648ffff9e23787f5ddb75dc55eec8p-1,
+    0x1.cd0a0cp-1
+  },
+  { // Entry 171
+    -0x1.913648ffff9e23787f5ddb75dc55eec8p-1,
+    -0x1.cd0a0cp-1
+  },
+  { // Entry 172
+    -0x1.a1d47cfd2825f1c3e2835e943b9669efp-5,
+    0x1.d41818p12
+  },
+  { // Entry 173
+    0x1.a1d47cfd2825f1c3e2835e943b9669efp-5,
+    -0x1.d41818p12
+  },
+  { // Entry 174
+    0x1.6a22db000036a9592db722e2d9be4869p-1,
+    0x1.e62944p8
+  },
+  { // Entry 175
+    -0x1.6a22db000036a9592db722e2d9be4869p-1,
+    -0x1.e62944p8
+  },
+  { // Entry 176
+    0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
+    0x1.e7061ep-2
+  },
+  { // Entry 177
+    -0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
+    -0x1.e7061ep-2
+  },
+  { // Entry 178
+    -0x1.e3ce04f1b94e1d82f0001cb99fed9275p-5,
+    0x1.e7fffep95
+  },
+  { // Entry 179
+    0x1.e3ce04f1b94e1d82f0001cb99fed9275p-5,
+    -0x1.e7fffep95
+  },
+  { // Entry 180
+    0x1.e97362ffff5d46e1e98c8a8c94478a44p-5,
+    0x1.e9be0ep-5
+  },
+  { // Entry 181
+    -0x1.e97362ffff5d46e1e98c8a8c94478a44p-5,
+    -0x1.e9be0ep-5
+  },
+  { // Entry 182
+    -0x1.57975cfefd7e705f3eb03a9e8e48a18cp-1,
+    0x1.eb1dbep12
+  },
+  { // Entry 183
+    0x1.57975cfefd7e705f3eb03a9e8e48a18cp-1,
+    -0x1.eb1dbep12
+  },
+  { // Entry 184
+    -0x1.6a1012e4b69b086c3dc0427aba80bc96p-1,
+    0x1.eb1e8ap12
+  },
+  { // Entry 185
+    0x1.6a1012e4b69b086c3dc0427aba80bc96p-1,
+    -0x1.eb1e8ap12
+  },
+  { // Entry 186
+    -0x1.9f42e4f467696ad36a70ac8b70e0cd32p-1,
+    0x1.effc8ap24
+  },
+  { // Entry 187
+    0x1.9f42e4f467696ad36a70ac8b70e0cd32p-1,
+    -0x1.effc8ap24
+  },
+  { // Entry 188
+    0x1.cbadb8ef8f3e358d2b8be493c11b57b1p-6,
+    0x1.f5c1c4p3
+  },
+  { // Entry 189
+    -0x1.cbadb8ef8f3e358d2b8be493c11b57b1p-6,
+    -0x1.f5c1c4p3
+  },
+  { // Entry 190
+    0x1.5aee2cfff087e59dfcd856cbfe4544dcp-2,
+    0x1.f7fffep111
+  },
+  { // Entry 191
+    -0x1.5aee2cfff087e59dfcd856cbfe4544dcp-2,
+    -0x1.f7fffep111
+  },
+  { // Entry 192
+    0x1.26db7d00bb06743fee581a888e2378f8p-1,
+    0x1.f92518p24
+  },
+  { // Entry 193
+    -0x1.26db7d00bb06743fee581a888e2378f8p-1,
+    -0x1.f92518p24
+  },
+  { // Entry 194
+    0x1.fffffffffffffebccf78a432a67858bbp-1,
+    0x1.f9cbe2p7
+  },
+  { // Entry 195
+    -0x1.fffffffffffffebccf78a432a67858bbp-1,
+    -0x1.f9cbe2p7
+  },
+  { // Entry 196
+    -0x1.1fa3bb9a07e77fd667f493622c9029ffp-27,
+    0x1.f9cbe2p8
+  },
+  { // Entry 197
+    0x1.1fa3bb9a07e77fd667f493622c9029ffp-27,
+    -0x1.f9cbe2p8
+  },
+  { // Entry 198
+    0x1.9ec29af1e15dd67f17e32047d9ff8db7p-1,
+    0x1.fad160p24
+  },
+  { // Entry 199
+    -0x1.9ec29af1e15dd67f17e32047d9ff8db7p-1,
+    -0x1.fad160p24
+  },
+  { // Entry 200
+    0x1.fbc2780f4bf8bc24d3fccc17f9e77f32p-1,
+    0x1.fee5bap2
+  },
+  { // Entry 201
+    -0x1.fbc2780f4bf8bc24d3fccc17f9e77f32p-1,
+    -0x1.fee5bap2
+  },
+  { // Entry 202
+    0x1.a8d7c10005ada8f7d4912bf603a315fep-1,
+    0x1.ff0caep10
+  },
+  { // Entry 203
+    -0x1.a8d7c10005ada8f7d4912bf603a315fep-1,
+    -0x1.ff0caep10
+  },
+  { // Entry 204
+    -0x1.56b02d00045da146e855d3770c9646fap-1,
+    0x1.ff8406p80
+  },
+  { // Entry 205
+    0x1.56b02d00045da146e855d3770c9646fap-1,
+    -0x1.ff8406p80
+  },
+  { // Entry 206
+    0x1.c02749ff4c4c8fcbb471610884d8e0bdp-3,
+    0x1.ff9ffep40
+  },
+  { // Entry 207
+    -0x1.c02749ff4c4c8fcbb471610884d8e0bdp-3,
+    -0x1.ff9ffep40
+  },
+  { // Entry 208
+    -0x1.388e710058342aa5b69afe3e2090a457p-1,
+    0x1.ffbd58p24
+  },
+  { // Entry 209
+    0x1.388e710058342aa5b69afe3e2090a457p-1,
+    -0x1.ffbd58p24
+  },
+  { // Entry 210
+    0x1.9e805aef3282d4ced40272702f174f53p-6,
+    0x1.ffdd7ep72
+  },
+  { // Entry 211
+    -0x1.9e805aef3282d4ced40272702f174f53p-6,
+    -0x1.ffdd7ep72
+  },
+  { // Entry 212
+    -0x1.fb3aef016b8ce66370ab61974e8ee0b2p-6,
+    0x1.ffdffep91
+  },
+  { // Entry 213
+    0x1.fb3aef016b8ce66370ab61974e8ee0b2p-6,
+    -0x1.ffdffep91
+  },
+  { // Entry 214
+    -0x1.e43148da53f422356edd3bdbaef3b2fap-3,
+    0x1.fff77ep23
+  },
+  { // Entry 215
+    0x1.e43148da53f422356edd3bdbaef3b2fap-3,
+    -0x1.fff77ep23
+  },
+  { // Entry 216
+    0x1.d6e1864764d24b4de18cb4c1903a7957p-1,
+    0x1.fffe3ep5
+  },
+  { // Entry 217
+    -0x1.d6e1864764d24b4de18cb4c1903a7957p-1,
+    -0x1.fffe3ep5
+  },
+  { // Entry 218
+    -0x1.ffff49c52f585e672d7185448d46e977p-1,
+    0x1.fffe3ep41
+  },
+  { // Entry 219
+    0x1.ffff49c52f585e672d7185448d46e977p-1,
+    -0x1.fffe3ep41
+  },
+  { // Entry 220
+    0x1.afc6a99cbade83b6be92b2ca45167988p-5,
+    0x1.fffe3ep45
+  },
+  { // Entry 221
+    -0x1.afc6a99cbade83b6be92b2ca45167988p-5,
+    -0x1.fffe3ep45
+  },
+  { // Entry 222
+    -0x1.53a29e54b4b142830dc796c9ed5fc59bp-9,
+    0x1.fffe7ep103
+  },
+  { // Entry 223
+    0x1.53a29e54b4b142830dc796c9ed5fc59bp-9,
+    -0x1.fffe7ep103
+  },
+  { // Entry 224
+    -0x1.47e89fd5047c4c94b5c0f61e375f2849p-11,
+    0x1.fffe7ep126
+  },
+  { // Entry 225
+    0x1.47e89fd5047c4c94b5c0f61e375f2849p-11,
+    -0x1.fffe7ep126
+  },
+  { // Entry 226
+    0x1.a4256c90c37410ce957c0b2501937618p-8,
+    0x1.ffff8ep40
+  },
+  { // Entry 227
+    -0x1.a4256c90c37410ce957c0b2501937618p-8,
+    -0x1.ffff8ep40
+  },
+  { // Entry 228
+    -0x1.d2bd84f5018f40c94c7f6e4552ef8e91p-3,
+    0x1.ffffa4p23
+  },
+  { // Entry 229
+    0x1.d2bd84f5018f40c94c7f6e4552ef8e91p-3,
+    -0x1.ffffa4p23
+  },
+  { // Entry 230
+    0x1.ffaa8cffd381ebe7b2d6a3e69bda3887p-5,
+    0x1.ffffdep-5
+  },
+  { // Entry 231
+    -0x1.ffaa8cffd381ebe7b2d6a3e69bda3887p-5,
+    -0x1.ffffdep-5
+  },
+  { // Entry 232
+    0x1.fa8d3ca23be2a84d37f0c04e97bab5e5p-1,
+    0x1.fffff0p2
+  },
+  { // Entry 233
+    -0x1.fa8d3ca23be2a84d37f0c04e97bab5e5p-1,
+    -0x1.fffff0p2
+  },
+  { // Entry 234
+    -0x1.ff978ecd320ad2d70c200824e4010843p-1,
+    0x1.fffff0p7
+  },
+  { // Entry 235
+    0x1.ff978ecd320ad2d70c200824e4010843p-1,
+    -0x1.fffff0p7
+  },
+  { // Entry 236
+    0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
+    0x1.fffff6p0
+  },
+  { // Entry 237
+    -0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
+    -0x1.fffff6p0
+  },
+  { // Entry 238
+    0x1.eaee8200b8dba5138f9ada42a22ab319p-2,
+    0x1.fffffap-2
+  },
+  { // Entry 239
+    -0x1.eaee8200b8dba5138f9ada42a22ab319p-2,
+    -0x1.fffffap-2
+  },
+  { // Entry 240
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.fffffep127
+  },
+  { // Entry 241
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 242
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 243
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 244
+    0.0,
+    0.0
+  },
+  { // Entry 245
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 246
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 247
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 248
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 249
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 250
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 251
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 252
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 253
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 254
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 255
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 256
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 257
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 258
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 259
+    0x1.999999d44f3058c789014b7d0e22fec3p-13,
+    0x1.99999ap-13
+  },
+  { // Entry 260
+    -0x1.999999d44f3058c789014b7d0e22fec3p-13,
+    -0x1.99999ap-13
+  },
+  { // Entry 261
+    0x1.999999513cc173e51bb9955b066f1db8p-12,
+    0x1.99999ap-12
+  },
+  { // Entry 262
+    -0x1.999999513cc173e51bb9955b066f1db8p-12,
+    -0x1.99999ap-12
+  },
+  { // Entry 263
+    0x1.333332d91685321e5fc397d20a5af1e6p-11,
+    0x1.333334p-11
+  },
+  { // Entry 264
+    -0x1.333332d91685321e5fc397d20a5af1e6p-11,
+    -0x1.333334p-11
+  },
+  { // Entry 265
+    0x1.99999744f306dc03e9ef70897f78299ep-11,
+    0x1.99999ap-11
+  },
+  { // Entry 266
+    -0x1.99999744f306dc03e9ef70897f78299ep-11,
+    -0x1.99999ap-11
+  },
+  { // Entry 267
+    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    0x1.p-10
+  },
+  { // Entry 268
+    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
+    -0x1.p-10
+  },
+  { // Entry 269
+    0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
+    0x1.333334p-10
+  },
+  { // Entry 270
+    -0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
+    -0x1.333334p-10
+  },
+  { // Entry 271
+    0x1.666660aec330821c7a100cf488c380ebp-10,
+    0x1.666668p-10
+  },
+  { // Entry 272
+    -0x1.666660aec330821c7a100cf488c380ebp-10,
+    -0x1.666668p-10
+  },
+  { // Entry 273
+    0x1.99999113cc034144fdbdc8a1dc713253p-10,
+    0x1.99999cp-10
+  },
+  { // Entry 274
+    -0x1.99999113cc034144fdbdc8a1dc713253p-10,
+    -0x1.99999cp-10
+  },
+  { // Entry 275
+    0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
+    0x1.ccccccp-10
+  },
+  { // Entry 276
+    -0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
+    -0x1.ccccccp-10
+  },
+  { // Entry 277
+    0x1.0665ae3615b5b7de52798064dfc59b29p-7,
+    0x1.066666p-7
+  },
+  { // Entry 278
+    -0x1.0665ae3615b5b7de52798064dfc59b29p-7,
+    -0x1.066666p-7
+  },
+  { // Entry 279
+    0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
+    0x1.ccccccp-7
+  },
+  { // Entry 280
+    -0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
+    -0x1.ccccccp-7
+  },
+  { // Entry 281
+    0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
+    0x1.499998p-6
+  },
+  { // Entry 282
+    -0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
+    -0x1.499998p-6
+  },
+  { // Entry 283
+    0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
+    0x1.acccccp-6
+  },
+  { // Entry 284
+    -0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
+    -0x1.acccccp-6
+  },
+  { // Entry 285
+    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    0x1.08p-5
+  },
+  { // Entry 286
+    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
+    -0x1.08p-5
+  },
+  { // Entry 287
+    0x1.3985fead44fa2b851e651acba369d769p-5,
+    0x1.39999ap-5
+  },
+  { // Entry 288
+    -0x1.3985fead44fa2b851e651acba369d769p-5,
+    -0x1.39999ap-5
+  },
+  { // Entry 289
+    0x1.6b14beb5d40d745096247e59b622828bp-5,
+    0x1.6b3334p-5
+  },
+  { // Entry 290
+    -0x1.6b14beb5d40d745096247e59b622828bp-5,
+    -0x1.6b3334p-5
+  },
+  { // Entry 291
+    0x1.9ca01671a7995fc97cebd69729cc4309p-5,
+    0x1.9ccccep-5
+  },
+  { // Entry 292
+    -0x1.9ca01671a7995fc97cebd69729cc4309p-5,
+    -0x1.9ccccep-5
+  },
+  { // Entry 293
+    0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
+    0x1.ce6666p-5
+  },
+  { // Entry 294
+    -0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
+    -0x1.ce6666p-5
+  },
+  { // Entry 295
+    0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
+    0x1.5e7fc4p-1
+  },
+  { // Entry 296
+    -0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
+    -0x1.5e7fc4p-1
+  },
+  { // Entry 297
+    0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
+    0x1.4e7fc4p0
+  },
+  { // Entry 298
+    -0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
+    -0x1.4e7fc4p0
+  },
+  { // Entry 299
+    0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
+    0x1.edbfa6p0
+  },
+  { // Entry 300
+    -0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
+    -0x1.edbfa6p0
+  },
+  { // Entry 301
+    0x1.1d347aa02feb3bb1750d25509435da88p-1,
+    0x1.467fc4p1
+  },
+  { // Entry 302
+    -0x1.1d347aa02feb3bb1750d25509435da88p-1,
+    -0x1.467fc4p1
+  },
+  { // Entry 303
+    -0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
+    0x1.961fb4p1
+  },
+  { // Entry 304
+    0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
+    -0x1.961fb4p1
+  },
+  { // Entry 305
+    -0x1.3734cbced9c0f484e5f762e00216e620p-1,
+    0x1.e5bfa4p1
+  },
+  { // Entry 306
+    0x1.3734cbced9c0f484e5f762e00216e620p-1,
+    -0x1.e5bfa4p1
+  },
+  { // Entry 307
+    -0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
+    0x1.1aafcap2
+  },
+  { // Entry 308
+    0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
+    -0x1.1aafcap2
+  },
+  { // Entry 309
+    -0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
+    0x1.427fc2p2
+  },
+  { // Entry 310
+    0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
+    -0x1.427fc2p2
+  },
+  { // Entry 311
+    -0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
+    0x1.6a4fbap2
+  },
+  { // Entry 312
+    0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
+    -0x1.6a4fbap2
+  },
+  { // Entry 313
+    -0x1.263123df22d13ed329c665c83c0e71e8p-1,
+    0x1.6af2f0p2
+  },
+  { // Entry 314
+    0x1.263123df22d13ed329c665c83c0e71e8p-1,
+    -0x1.6af2f0p2
+  },
+  { // Entry 315
+    -0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
+    0x1.43c62ap2
+  },
+  { // Entry 316
+    0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
+    -0x1.43c62ap2
+  },
+  { // Entry 317
+    -0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
+    0x1.1c9964p2
+  },
+  { // Entry 318
+    0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
+    -0x1.1c9964p2
+  },
+  { // Entry 319
+    -0x1.472768637ea8866a652098a43aa688a6p-1,
+    0x1.ead93cp1
+  },
+  { // Entry 320
+    0x1.472768637ea8866a652098a43aa688a6p-1,
+    -0x1.ead93cp1
+  },
+  { // Entry 321
+    -0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
+    0x1.9c7fb0p1
+  },
+  { // Entry 322
+    0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
+    -0x1.9c7fb0p1
+  },
+  { // Entry 323
+    0x1.034c643295153aaffe5d9a0f29e92844p-1,
+    0x1.4e2624p1
+  },
+  { // Entry 324
+    -0x1.034c643295153aaffe5d9a0f29e92844p-1,
+    -0x1.4e2624p1
+  },
+  { // Entry 325
+    0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
+    0x1.ff9932p0
+  },
+  { // Entry 326
+    -0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
+    -0x1.ff9932p0
+  },
+  { // Entry 327
+    0x1.f7501e002bcafb897f931931d3a57afdp-1,
+    0x1.62e61cp0
+  },
+  { // Entry 328
+    -0x1.f7501e002bcafb897f931931d3a57afdp-1,
+    -0x1.62e61cp0
+  },
+  { // Entry 329
+    0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
+    0x1.8c662cp-1
+  },
+  { // Entry 330
+    -0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
+    -0x1.8c662cp-1
+  },
+  { // Entry 331
+    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 332
+    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    0x1.a8aa1cp0
+  },
+  { // Entry 333
+    -0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
+    -0x1.95ec8ap0
+  },
+  { // Entry 334
+    0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
+    0x1.95ec8ap0
+  },
+  { // Entry 335
+    -0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
+    -0x1.832ef8p0
+  },
+  { // Entry 336
+    0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
+    0x1.832ef8p0
+  },
+  { // Entry 337
+    -0x1.fb933b89d7db3286eed0cfeabee98875p-1,
+    -0x1.707166p0
+  },
+  { // Entry 338
+    0x1.fb933b89d7db3286eed0cfeabee98875p-1,
+    0x1.707166p0
+  },
+  { // Entry 339
+    -0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
+    -0x1.5db3d4p0
+  },
+  { // Entry 340
+    0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
+    0x1.5db3d4p0
+  },
+  { // Entry 341
+    -0x1.ec5881a09c46aae020cd9036098a196ep-1,
+    -0x1.4af642p0
+  },
+  { // Entry 342
+    0x1.ec5881a09c46aae020cd9036098a196ep-1,
+    0x1.4af642p0
+  },
+  { // Entry 343
+    -0x1.e0c04795919d961a5e83e505df31c624p-1,
+    -0x1.3838b0p0
+  },
+  { // Entry 344
+    0x1.e0c04795919d961a5e83e505df31c624p-1,
+    0x1.3838b0p0
+  },
+  { // Entry 345
+    -0x1.d294cdef7cc161633a02d3e62058be0ep-1,
+    -0x1.257b1ep0
+  },
+  { // Entry 346
+    0x1.d294cdef7cc161633a02d3e62058be0ep-1,
+    0x1.257b1ep0
+  },
+  { // Entry 347
+    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    -0x1.12bd92p0
+  },
+  { // Entry 348
+    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    0x1.12bd92p0
+  },
+  { // Entry 349
+    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 350
+    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 351
+    -0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
+    -0x1.d4b87cp-1
+  },
+  { // Entry 352
+    0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
+    0x1.d4b87cp-1
+  },
+  { // Entry 353
+    -0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
+    -0x1.bf14bap-1
+  },
+  { // Entry 354
+    0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
+    0x1.bf14bap-1
+  },
+  { // Entry 355
+    -0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
+    -0x1.a970f8p-1
+  },
+  { // Entry 356
+    0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
+    0x1.a970f8p-1
+  },
+  { // Entry 357
+    -0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
+    -0x1.93cd36p-1
+  },
+  { // Entry 358
+    0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
+    0x1.93cd36p-1
+  },
+  { // Entry 359
+    -0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
+    -0x1.7e2974p-1
+  },
+  { // Entry 360
+    0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
+    0x1.7e2974p-1
+  },
+  { // Entry 361
+    -0x1.4b75b5954e718020900719e25a7ea93bp-1,
+    -0x1.6885b2p-1
+  },
+  { // Entry 362
+    0x1.4b75b5954e718020900719e25a7ea93bp-1,
+    0x1.6885b2p-1
+  },
+  { // Entry 363
+    -0x1.3aacfa510810054c52ae0b67d116eb40p-1,
+    -0x1.52e1f0p-1
+  },
+  { // Entry 364
+    0x1.3aacfa510810054c52ae0b67d116eb40p-1,
+    0x1.52e1f0p-1
+  },
+  { // Entry 365
+    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 366
+    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 367
+    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 368
+    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    0x1.0a0b02p-1
+  },
+  { // Entry 369
+    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 370
+    0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 371
+    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 372
+    0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 373
+    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 374
+    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    0x1.62b958p-2
+  },
+  { // Entry 375
+    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 376
+    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    0x1.279a74p-2
+  },
+  { // Entry 377
+    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 378
+    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 379
+    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 380
+    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 381
+    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 382
+    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 383
+    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 384
+    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 385
+    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 386
+    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 387
+    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 388
+    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 389
+    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 390
+    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 391
+    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 392
+    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 393
+    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    0x1.279a74p-2
+  },
+  { // Entry 394
+    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 395
+    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    0x1.62b958p-2
+  },
+  { // Entry 396
+    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 397
+    0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 398
+    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 399
+    0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 400
+    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 401
+    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    0x1.0a0b02p-1
+  },
+  { // Entry 402
+    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 403
+    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 404
+    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 405
+    0x1.3aad00a09268a39df1653c70db91f157p-1,
+    0x1.52e1f8p-1
+  },
+  { // Entry 406
+    -0x1.3aad00a09268a39df1653c70db91f157p-1,
+    -0x1.52e1f8p-1
+  },
+  { // Entry 407
+    0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
+    0x1.6885bap-1
+  },
+  { // Entry 408
+    -0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
+    -0x1.6885bap-1
+  },
+  { // Entry 409
+    0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
+    0x1.7e297cp-1
+  },
+  { // Entry 410
+    -0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
+    -0x1.7e297cp-1
+  },
+  { // Entry 411
+    0x1.6b3920d8117828928fe10ac70ba69e76p-1,
+    0x1.93cd3ep-1
+  },
+  { // Entry 412
+    -0x1.6b3920d8117828928fe10ac70ba69e76p-1,
+    -0x1.93cd3ep-1
+  },
+  { // Entry 413
+    0x1.7a25450443098836c5202375db4b8462p-1,
+    0x1.a971p-1
+  },
+  { // Entry 414
+    -0x1.7a25450443098836c5202375db4b8462p-1,
+    -0x1.a971p-1
+  },
+  { // Entry 415
+    0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
+    0x1.bf14c2p-1
+  },
+  { // Entry 416
+    -0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
+    -0x1.bf14c2p-1
+  },
+  { // Entry 417
+    0x1.95f056337acc1d2d557525232e915467p-1,
+    0x1.d4b884p-1
+  },
+  { // Entry 418
+    -0x1.95f056337acc1d2d557525232e915467p-1,
+    -0x1.d4b884p-1
+  },
+  { // Entry 419
+    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 420
+    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 421
+    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    0x1.12bd92p0
+  },
+  { // Entry 422
+    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
+    -0x1.12bd92p0
+  },
+  { // Entry 423
+    0x1.d294d2e06b3d10a4de263172d50f4497p-1,
+    0x1.257b24p0
+  },
+  { // Entry 424
+    -0x1.d294d2e06b3d10a4de263172d50f4497p-1,
+    -0x1.257b24p0
+  },
+  { // Entry 425
+    0x1.e0c04bb65bd33012be72a340df2c044bp-1,
+    0x1.3838b6p0
+  },
+  { // Entry 426
+    -0x1.e0c04bb65bd33012be72a340df2c044bp-1,
+    -0x1.3838b6p0
+  },
+  { // Entry 427
+    0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
+    0x1.4af648p0
+  },
+  { // Entry 428
+    -0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
+    -0x1.4af648p0
+  },
+  { // Entry 429
+    0x1.f54d9835b0e66e17612160272521f3b0p-1,
+    0x1.5db3dap0
+  },
+  { // Entry 430
+    -0x1.f54d9835b0e66e17612160272521f3b0p-1,
+    -0x1.5db3dap0
+  },
+  { // Entry 431
+    0x1.fb933d1cd931685e902e403a1baaecfdp-1,
+    0x1.70716cp0
+  },
+  { // Entry 432
+    -0x1.fb933d1cd931685e902e403a1baaecfdp-1,
+    -0x1.70716cp0
+  },
+  { // Entry 433
+    0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
+    0x1.832efep0
+  },
+  { // Entry 434
+    -0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
+    -0x1.832efep0
+  },
+  { // Entry 435
+    0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
+    0x1.95ec90p0
+  },
+  { // Entry 436
+    -0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
+    -0x1.95ec90p0
+  },
+  { // Entry 437
+    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    0x1.a8aa1cp0
+  },
+  { // Entry 438
+    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 439
+    0x1.b3d36a96880cf69d9884a49f5381e917p-1,
+    0x1.04aff8p0
+  },
+  { // Entry 440
+    -0x1.b3d36a96880cf69d9884a49f5381e917p-1,
+    -0x1.04aff8p0
+  },
+  { // Entry 441
+    0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
+    0x1.04b0a0p0
+  },
+  { // Entry 442
+    -0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
+    -0x1.04b0a0p0
+  },
+  { // Entry 443
+    0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
+    0x1.04b148p0
+  },
+  { // Entry 444
+    -0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
+    -0x1.04b148p0
+  },
+  { // Entry 445
+    0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
+    0x1.04b1f0p0
+  },
+  { // Entry 446
+    -0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
+    -0x1.04b1f0p0
+  },
+  { // Entry 447
+    0x1.b3d62be73e8fc998c6c2df6590425613p-1,
+    0x1.04b298p0
+  },
+  { // Entry 448
+    -0x1.b3d62be73e8fc998c6c2df6590425613p-1,
+    -0x1.04b298p0
+  },
+  { // Entry 449
+    0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
+    0x1.04b340p0
+  },
+  { // Entry 450
+    -0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
+    -0x1.04b340p0
+  },
+  { // Entry 451
+    0x1.b3d78c8b33a07864b6a878573db34bcap-1,
+    0x1.04b3e8p0
+  },
+  { // Entry 452
+    -0x1.b3d78c8b33a07864b6a878573db34bcap-1,
+    -0x1.04b3e8p0
+  },
+  { // Entry 453
+    0x1.b3d83cdc149b9757df195ad885ab5201p-1,
+    0x1.04b490p0
+  },
+  { // Entry 454
+    -0x1.b3d83cdc149b9757df195ad885ab5201p-1,
+    -0x1.04b490p0
+  },
+  { // Entry 455
+    0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
+    0x1.04b534p0
+  },
+  { // Entry 456
+    -0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
+    -0x1.04b534p0
+  },
+  { // Entry 457
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 458
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 459
+    0.0,
+    0.0
+  },
+  { // Entry 460
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 461
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 462
+    0x1.1773d36a64df61d6715e60af063559f4p-1,
+    0x1.279a72p-1
+  },
+  { // Entry 463
+    -0x1.1773d36a64df61d6715e60af063559f4p-1,
+    -0x1.279a72p-1
+  },
+  { // Entry 464
+    0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
+    0x1.279a74p-1
+  },
+  { // Entry 465
+    -0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
+    -0x1.279a74p-1
+  },
+  { // Entry 466
+    0x1.1773d6c46a6ea687f03625194d25bb52p-1,
+    0x1.279a76p-1
+  },
+  { // Entry 467
+    -0x1.1773d6c46a6ea687f03625194d25bb52p-1,
+    -0x1.279a76p-1
+  },
+  { // Entry 468
+    0x1.f95b8f40501057ac49acef13993b0c55p-1,
+    0x1.bb67acp0
+  },
+  { // Entry 469
+    -0x1.f95b8f40501057ac49acef13993b0c55p-1,
+    -0x1.bb67acp0
+  },
+  { // Entry 470
+    0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
+    0x1.bb67aep0
+  },
+  { // Entry 471
+    -0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
+    -0x1.bb67aep0
+  },
+  { // Entry 472
+    0x1.f95b8df77e36a344670ed07149191a58p-1,
+    0x1.bb67b0p0
+  },
+  { // Entry 473
+    -0x1.f95b8df77e36a344670ed07149191a58p-1,
+    -0x1.bb67b0p0
+  },
+  { // Entry 474
+    0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
+    0x1.bffffep-2
+  },
+  { // Entry 475
+    -0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
+    -0x1.bffffep-2
+  },
+  { // Entry 476
+    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    0x1.c0p-2
+  },
+  { // Entry 477
+    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
+    -0x1.c0p-2
+  },
+  { // Entry 478
+    0x1.b1d83222e830d83743258fd09040ee56p-2,
+    0x1.c00002p-2
+  },
+  { // Entry 479
+    -0x1.b1d83222e830d83743258fd09040ee56p-2,
+    -0x1.c00002p-2
+  },
+  { // Entry 480
+    0x1.44eb3691428062b27925c585ad59d62ap-1,
+    0x1.5ffffep-1
+  },
+  { // Entry 481
+    -0x1.44eb3691428062b27925c585ad59d62ap-1,
+    -0x1.5ffffep-1
+  },
+  { // Entry 482
+    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    0x1.60p-1
+  },
+  { // Entry 483
+    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
+    -0x1.60p-1
+  },
+  { // Entry 484
+    0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
+    0x1.600002p-1
+  },
+  { // Entry 485
+    -0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
+    -0x1.600002p-1
+  },
+  { // Entry 486
+    0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
+    0x1.2ffffep0
+  },
+  { // Entry 487
+    -0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
+    -0x1.2ffffep0
+  },
+  { // Entry 488
+    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    0x1.30p0
+  },
+  { // Entry 489
+    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
+    -0x1.30p0
+  },
+  { // Entry 490
+    0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
+    0x1.300002p0
+  },
+  { // Entry 491
+    -0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
+    -0x1.300002p0
+  },
+  { // Entry 492
+    0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
+    0x1.37fffep1
+  },
+  { // Entry 493
+    -0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
+    -0x1.37fffep1
+  },
+  { // Entry 494
+    0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    0x1.38p1
+  },
+  { // Entry 495
+    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
+    -0x1.38p1
+  },
+  { // Entry 496
+    0x1.4b707461d1f994476c677c5ad5ddb264p-1,
+    0x1.380002p1
+  },
+  { // Entry 497
+    -0x1.4b707461d1f994476c677c5ad5ddb264p-1,
+    -0x1.380002p1
+  },
+  { // Entry 498
+    0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
+    0x1.069c8cp-4
+  },
+  { // Entry 499
+    -0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
+    -0x1.069c8cp-4
+  },
+  { // Entry 500
+    0x1.05e476d27febc8b7e9690009b367c327p-3,
+    0x1.069c8cp-3
+  },
+  { // Entry 501
+    -0x1.05e476d27febc8b7e9690009b367c327p-3,
+    -0x1.069c8cp-3
+  },
+  { // Entry 502
+    0x1.877e2de5c9a066b8db595adc149af0c0p-3,
+    0x1.89ead2p-3
+  },
+  { // Entry 503
+    -0x1.877e2de5c9a066b8db595adc149af0c0p-3,
+    -0x1.89ead2p-3
+  },
+  { // Entry 504
+    0x1.03be07acb9dab719b4343a33b9fa6afep-2,
+    0x1.069c8cp-2
+  },
+  { // Entry 505
+    -0x1.03be07acb9dab719b4343a33b9fa6afep-2,
+    -0x1.069c8cp-2
+  },
+  { // Entry 506
+    0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
+    0x1.4843b0p-2
+  },
+  { // Entry 507
+    -0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
+    -0x1.4843b0p-2
+  },
+  { // Entry 508
+    0x1.804601411d93f4750919670061de07d9p-2,
+    0x1.89ead4p-2
+  },
+  { // Entry 509
+    -0x1.804601411d93f4750919670061de07d9p-2,
+    -0x1.89ead4p-2
+  },
+  { // Entry 510
+    0x1.bc4c08af356088b1694995bfaf8a297bp-2,
+    0x1.cb91f8p-2
+  },
+  { // Entry 511
+    -0x1.bc4c08af356088b1694995bfaf8a297bp-2,
+    -0x1.cb91f8p-2
+  },
+  { // Entry 512
+    0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
+    0x1.069c8ep-1
+  },
+  { // Entry 513
+    -0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
+    -0x1.069c8ep-1
+  },
+  { // Entry 514
+    0x1.17505c86231898fd86b18d2282d93eedp-1,
+    0x1.277020p-1
+  },
+  { // Entry 515
+    -0x1.17505c86231898fd86b18d2282d93eedp-1,
+    -0x1.277020p-1
+  },
+  { // Entry 516
+    0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
+    0x1.4843b2p-1
+  },
+  { // Entry 517
+    -0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
+    -0x1.4843b2p-1
+  },
+  { // Entry 518
+    0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
+    0x1.691744p-1
+  },
+  { // Entry 519
+    -0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
+    -0x1.691744p-1
+  },
+  { // Entry 520
+    0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
+    0x1.89ead6p-1
+  },
+  { // Entry 521
+    -0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
+    -0x1.89ead6p-1
+  },
+  { // Entry 522
+    0x1.7b05bb87b38844e56003c41ef804b273p-1,
+    0x1.aabe68p-1
+  },
+  { // Entry 523
+    -0x1.7b05bb87b38844e56003c41ef804b273p-1,
+    -0x1.aabe68p-1
+  },
+  { // Entry 524
+    0x1.904c3b389d55d3deddb39d05eb366571p-1,
+    0x1.cb91fap-1
+  },
+  { // Entry 525
+    -0x1.904c3b389d55d3deddb39d05eb366571p-1,
+    -0x1.cb91fap-1
+  },
+  { // Entry 526
+    0x1.a3eda211798a82697d62431f9ae46cc4p-1,
+    0x1.ec658cp-1
+  },
+  { // Entry 527
+    -0x1.a3eda211798a82697d62431f9ae46cc4p-1,
+    -0x1.ec658cp-1
+  },
+  { // Entry 528
+    0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
+    0x1.069c8ep0
+  },
+  { // Entry 529
+    -0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
+    -0x1.069c8ep0
+  },
+  { // Entry 530
+    0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
+    0x1.170656p0
+  },
+  { // Entry 531
+    -0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
+    -0x1.170656p0
+  },
+  { // Entry 532
+    0x1.d42de53e315c839ce188e201205e99dep-1,
+    0x1.27701ep0
+  },
+  { // Entry 533
+    -0x1.d42de53e315c839ce188e201205e99dep-1,
+    -0x1.27701ep0
+  },
+  { // Entry 534
+    0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
+    0x1.37d9e6p0
+  },
+  { // Entry 535
+    -0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
+    -0x1.37d9e6p0
+  },
+  { // Entry 536
+    0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
+    0x1.4843aep0
+  },
+  { // Entry 537
+    -0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
+    -0x1.4843aep0
+  },
+  { // Entry 538
+    0x1.f329bffa6a208591eecb6905d7594e3bp-1,
+    0x1.58ad76p0
+  },
+  { // Entry 539
+    -0x1.f329bffa6a208591eecb6905d7594e3bp-1,
+    -0x1.58ad76p0
+  },
+  { // Entry 540
+    0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
+    0x1.69173ep0
+  },
+  { // Entry 541
+    -0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
+    -0x1.69173ep0
+  },
+  { // Entry 542
+    0x1.fda25455d9567772f20f25d15efc6775p-1,
+    0x1.798106p0
+  },
+  { // Entry 543
+    -0x1.fda25455d9567772f20f25d15efc6775p-1,
+    -0x1.798106p0
+  },
+  { // Entry 544
+    0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
+    0x1.89eacep0
+  },
+  { // Entry 545
+    -0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
+    -0x1.89eacep0
+  },
+  { // Entry 546
+    0x1.ffbca88228b163189ab8d637db99bd2dp-1,
+    0x1.9a5496p0
+  },
+  { // Entry 547
+    -0x1.ffbca88228b163189ab8d637db99bd2dp-1,
+    -0x1.9a5496p0
+  },
+  { // Entry 548
+    0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
+    0x1.aabe5ep0
+  },
+  { // Entry 549
+    -0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
+    -0x1.aabe5ep0
+  },
+  { // Entry 550
+    0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
+    0x1.bb2826p0
+  },
+  { // Entry 551
+    -0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
+    -0x1.bb2826p0
+  },
+  { // Entry 552
+    0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
+    0x1.cb91eep0
+  },
+  { // Entry 553
+    -0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
+    -0x1.cb91eep0
+  },
+  { // Entry 554
+    0x1.ead686f2ec572c83ed34a01f764d193ep-1,
+    0x1.dbfbb6p0
+  },
+  { // Entry 555
+    -0x1.ead686f2ec572c83ed34a01f764d193ep-1,
+    -0x1.dbfbb6p0
+  },
+  { // Entry 556
+    0x1.e07ef3c91bd500a0de230ad573163163p-1,
+    0x1.ec657ep0
+  },
+  { // Entry 557
+    -0x1.e07ef3c91bd500a0de230ad573163163p-1,
+    -0x1.ec657ep0
+  },
+  { // Entry 558
+    0x1.d42dea8835c88adb9cde17347f934e25p-1,
+    0x1.fccf46p0
+  },
+  { // Entry 559
+    -0x1.d42dea8835c88adb9cde17347f934e25p-1,
+    -0x1.fccf46p0
+  },
+  { // Entry 560
+    0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
+    0x1.069c88p1
+  },
+  { // Entry 561
+    -0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
+    -0x1.069c88p1
+  },
+  { // Entry 562
+    0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
+    0x1.0ed16cp1
+  },
+  { // Entry 563
+    -0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
+    -0x1.0ed16cp1
+  },
+  { // Entry 564
+    0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
+    0x1.170650p1
+  },
+  { // Entry 565
+    -0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
+    -0x1.170650p1
+  },
+  { // Entry 566
+    0x1.904c421efce58f4e8170d36dcda8e02cp-1,
+    0x1.1f3b34p1
+  },
+  { // Entry 567
+    -0x1.904c421efce58f4e8170d36dcda8e02cp-1,
+    -0x1.1f3b34p1
+  },
+  { // Entry 568
+    0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
+    0x1.277018p1
+  },
+  { // Entry 569
+    -0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
+    -0x1.277018p1
+  },
+  { // Entry 570
+    0x1.64308f506ffdaf1326d10b3380278e98p-1,
+    0x1.2fa4fcp1
+  },
+  { // Entry 571
+    -0x1.64308f506ffdaf1326d10b3380278e98p-1,
+    -0x1.2fa4fcp1
+  },
+  { // Entry 572
+    0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
+    0x1.37d9e0p1
+  },
+  { // Entry 573
+    -0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
+    -0x1.37d9e0p1
+  },
+  { // Entry 574
+    0x1.323b9d888d4da77a610893735eeed1cbp-1,
+    0x1.400ec4p1
+  },
+  { // Entry 575
+    -0x1.323b9d888d4da77a610893735eeed1cbp-1,
+    -0x1.400ec4p1
+  },
+  { // Entry 576
+    0x1.17506e2dfb603d34b9af39b12c1db735p-1,
+    0x1.4843a8p1
+  },
+  { // Entry 577
+    -0x1.17506e2dfb603d34b9af39b12c1db735p-1,
+    -0x1.4843a8p1
+  },
+  { // Entry 578
+    0x1.f67ed667352d4827450013f15e321bfbp-2,
+    0x1.50788cp1
+  },
+  { // Entry 579
+    -0x1.f67ed667352d4827450013f15e321bfbp-2,
+    -0x1.50788cp1
+  },
+  { // Entry 580
+    0x1.bc4c35da51e34b776e5e04da58f23441p-2,
+    0x1.58ad70p1
+  },
+  { // Entry 581
+    -0x1.bc4c35da51e34b776e5e04da58f23441p-2,
+    -0x1.58ad70p1
+  },
+  { // Entry 582
+    0x1.8046336e68427cf756056d3f4edbb662p-2,
+    0x1.60e254p1
+  },
+  { // Entry 583
+    -0x1.8046336e68427cf756056d3f4edbb662p-2,
+    -0x1.60e254p1
+  },
+  { // Entry 584
+    0x1.42abf3872905e632f204c41b24af90b6p-2,
+    0x1.691738p1
+  },
+  { // Entry 585
+    -0x1.42abf3872905e632f204c41b24af90b6p-2,
+    -0x1.691738p1
+  },
+  { // Entry 586
+    0x1.03be43c699f3536990dcf5a6665ac239p-2,
+    0x1.714c1cp1
+  },
+  { // Entry 587
+    -0x1.03be43c699f3536990dcf5a6665ac239p-2,
+    -0x1.714c1cp1
+  },
+  { // Entry 588
+    0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
+    0x1.7981p1
+  },
+  { // Entry 589
+    -0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
+    -0x1.7981p1
+  },
+  { // Entry 590
+    0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
+    0x1.81b5e4p1
+  },
+  { // Entry 591
+    -0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
+    -0x1.81b5e4p1
+  },
+  { // Entry 592
+    0x1.066f9b630b72dff16450e89afdf7e048p-4,
+    0x1.89eac8p1
+  },
+  { // Entry 593
+    -0x1.066f9b630b72dff16450e89afdf7e048p-4,
+    -0x1.89eac8p1
+  },
+  { // Entry 594
+    0x1.03bdf0b79ccf739529d54d422861046cp-2,
+    -0x1.81b5eep2
+  },
+  { // Entry 595
+    -0x1.03bdf0b79ccf739529d54d422861046cp-2,
+    0x1.81b5eep2
+  },
+  { // Entry 596
+    0x1.f67e8b95f5460ea369a803837b721abdp-2,
+    -0x1.714c26p2
+  },
+  { // Entry 597
+    -0x1.f67e8b95f5460ea369a803837b721abdp-2,
+    0x1.714c26p2
+  },
+  { // Entry 598
+    0x1.643070791751dc0636d1854d2bdbc5d4p-1,
+    -0x1.60e25ep2
+  },
+  { // Entry 599
+    -0x1.643070791751dc0636d1854d2bdbc5d4p-1,
+    0x1.60e25ep2
+  },
+  { // Entry 600
+    0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
+    -0x1.507896p2
+  },
+  { // Entry 601
+    -0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
+    0x1.507896p2
+  },
+  { // Entry 602
+    0x1.ead679985549140318349f512dca7a6bp-1,
+    -0x1.400ecep2
+  },
+  { // Entry 603
+    -0x1.ead679985549140318349f512dca7a6bp-1,
+    0x1.400ecep2
+  },
+  { // Entry 604
+    0x1.ffbca7010e0b0452f56075cfd5982880p-1,
+    -0x1.2fa506p2
+  },
+  { // Entry 605
+    -0x1.ffbca7010e0b0452f56075cfd5982880p-1,
+    0x1.2fa506p2
+  },
+  { // Entry 606
+    0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
+    -0x1.1f3b3ep2
+  },
+  { // Entry 607
+    -0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
+    0x1.1f3b3ep2
+  },
+  { // Entry 608
+    0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
+    -0x1.0ed176p2
+  },
+  { // Entry 609
+    -0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
+    0x1.0ed176p2
+  },
+  { // Entry 610
+    0x1.7b05d864ec9802adbc4b5577c233836ap-1,
+    -0x1.fccf5ap1
+  },
+  { // Entry 611
+    -0x1.7b05d864ec9802adbc4b5577c233836ap-1,
+    0x1.fccf5ap1
+  },
+  { // Entry 612
+    0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
+    -0x1.dbfbc8p1
+  },
+  { // Entry 613
+    -0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
+    0x1.dbfbc8p1
+  },
+  { // Entry 614
+    0x1.42ac0dd9495211816bf04ca53bce4beap-2,
+    -0x1.bb2836p1
+  },
+  { // Entry 615
+    -0x1.42ac0dd9495211816bf04ca53bce4beap-2,
+    0x1.bb2836p1
+  },
+  { // Entry 616
+    0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
+    -0x1.9a54a4p1
+  },
+  { // Entry 617
+    -0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
+    0x1.9a54a4p1
+  },
+  { // Entry 618
+    -0x1.877d931298e6fbc654f065536cff2b54p-3,
+    -0x1.798112p1
+  },
+  { // Entry 619
+    0x1.877d931298e6fbc654f065536cff2b54p-3,
+    0x1.798112p1
+  },
+  { // Entry 620
+    -0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
+    -0x1.58ad80p1
+  },
+  { // Entry 621
+    0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
+    0x1.58ad80p1
+  },
+  { // Entry 622
+    -0x1.4be47d6354c4ced53780b1b519acdec2p-1,
+    -0x1.37d9eep1
+  },
+  { // Entry 623
+    0x1.4be47d6354c4ced53780b1b519acdec2p-1,
+    0x1.37d9eep1
+  },
+  { // Entry 624
+    -0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
+    -0x1.17065cp1
+  },
+  { // Entry 625
+    0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
+    0x1.17065cp1
+  },
+  { // Entry 626
+    -0x1.e07ee496ea109654c42e171fdc4537c4p-1,
+    -0x1.ec6594p0
+  },
+  { // Entry 627
+    0x1.e07ee496ea109654c42e171fdc4537c4p-1,
+    0x1.ec6594p0
+  },
+  { // Entry 628
+    -0x1.fda2522219689d0e8069d90f5c969b92p-1,
+    -0x1.aabe70p0
+  },
+  { // Entry 629
+    0x1.fda2522219689d0e8069d90f5c969b92p-1,
+    0x1.aabe70p0
+  },
+  { // Entry 630
+    -0x1.f96fe802fe570372d0fcb6e934b43061p-1,
+    -0x1.69174cp0
+  },
+  { // Entry 631
+    0x1.f96fe802fe570372d0fcb6e934b43061p-1,
+    0x1.69174cp0
+  },
+  { // Entry 632
+    -0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
+    -0x1.277028p0
+  },
+  { // Entry 633
+    0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
+    0x1.277028p0
+  },
+  { // Entry 634
+    -0x1.904c45326d6dde224381d1d590ada41cp-1,
+    -0x1.cb920ap-1
+  },
+  { // Entry 635
+    0x1.904c45326d6dde224381d1d590ada41cp-1,
+    0x1.cb920ap-1
+  },
+  { // Entry 636
+    -0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
+    -0x1.4843c4p-1
+  },
+  { // Entry 637
+    0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
+    0x1.4843c4p-1
+  },
+  { // Entry 638
+    -0x1.80462654bde766faf47f3140e290996dp-2,
+    -0x1.89eafcp-2
+  },
+  { // Entry 639
+    0x1.80462654bde766faf47f3140e290996dp-2,
+    0x1.89eafcp-2
+  },
+  { // Entry 640
+    -0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
+    -0x1.069ce0p-3
+  },
+  { // Entry 641
+    0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
+    0x1.069ce0p-3
+  },
+  { // Entry 642
+    0x1.05e423830be01f9fe3c57d06867e0056p-3,
+    0x1.069c38p-3
+  },
+  { // Entry 643
+    -0x1.05e423830be01f9fe3c57d06867e0056p-3,
+    -0x1.069c38p-3
+  },
+  { // Entry 644
+    0x1.8045d87852f1307fea6dc751c4d15992p-2,
+    0x1.89eaa8p-2
+  },
+  { // Entry 645
+    -0x1.8045d87852f1307fea6dc751c4d15992p-2,
+    -0x1.89eaa8p-2
+  },
+  { // Entry 646
+    0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
+    0x1.48439ap-1
+  },
+  { // Entry 647
+    -0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
+    -0x1.48439ap-1
+  },
+  { // Entry 648
+    0x1.904c2b02aa59528ce044bf2213c96859p-1,
+    0x1.cb91e0p-1
+  },
+  { // Entry 649
+    -0x1.904c2b02aa59528ce044bf2213c96859p-1,
+    -0x1.cb91e0p-1
+  },
+  { // Entry 650
+    0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
+    0x1.277014p0
+  },
+  { // Entry 651
+    -0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
+    -0x1.277014p0
+  },
+  { // Entry 652
+    0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
+    0x1.691738p0
+  },
+  { // Entry 653
+    -0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
+    -0x1.691738p0
+  },
+  { // Entry 654
+    0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
+    0x1.aabe5cp0
+  },
+  { // Entry 655
+    -0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
+    -0x1.aabe5cp0
+  },
+  { // Entry 656
+    0x1.e07ef267748b982778f8d50d2981bb3ap-1,
+    0x1.ec6580p0
+  },
+  { // Entry 657
+    -0x1.e07ef267748b982778f8d50d2981bb3ap-1,
+    -0x1.ec6580p0
+  },
+  { // Entry 658
+    0x1.a3eda2adb01143fb21453b20bd1748fep-1,
+    0x1.170652p1
+  },
+  { // Entry 659
+    -0x1.a3eda2adb01143fb21453b20bd1748fep-1,
+    -0x1.170652p1
+  },
+  { // Entry 660
+    0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
+    0x1.37d9e4p1
+  },
+  { // Entry 661
+    -0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
+    -0x1.37d9e4p1
+  },
+  { // Entry 662
+    0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
+    0x1.58ad76p1
+  },
+  { // Entry 663
+    -0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
+    -0x1.58ad76p1
+  },
+  { // Entry 664
+    0x1.877e301f43cafffe6644a8958f108729p-3,
+    0x1.798108p1
+  },
+  { // Entry 665
+    -0x1.877e301f43cafffe6644a8958f108729p-3,
+    -0x1.798108p1
+  },
+  { // Entry 666
+    -0x1.066e8ae1f824a69817e6a806e6317e28p-4,
+    0x1.9a549ap1
+  },
+  { // Entry 667
+    0x1.066e8ae1f824a69817e6a806e6317e28p-4,
+    -0x1.9a549ap1
+  },
+  { // Entry 668
+    -0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
+    0x1.bb282cp1
+  },
+  { // Entry 669
+    0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
+    -0x1.bb282cp1
+  },
+  { // Entry 670
+    -0x1.17505efb8119773c647468be1dfee45ep-1,
+    0x1.dbfbbep1
+  },
+  { // Entry 671
+    0x1.17505efb8119773c647468be1dfee45ep-1,
+    -0x1.dbfbbep1
+  },
+  { // Entry 672
+    -0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
+    0x1.fccf50p1
+  },
+  { // Entry 673
+    0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
+    -0x1.fccf50p1
+  },
+  { // Entry 674
+    -0x1.c5f05982eabf022748960961666d540dp-1,
+    0x1.0ed170p2
+  },
+  { // Entry 675
+    0x1.c5f05982eabf022748960961666d540dp-1,
+    -0x1.0ed170p2
+  },
+  { // Entry 676
+    -0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
+    0x1.1f3b38p2
+  },
+  { // Entry 677
+    0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
+    -0x1.1f3b38p2
+  },
+  { // Entry 678
+    -0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
+    0x1.2fa5p2
+  },
+  { // Entry 679
+    0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
+    -0x1.2fa5p2
+  },
+  { // Entry 680
+    -0x1.ead687409c95dcaf61af98513517f507p-1,
+    0x1.400ec8p2
+  },
+  { // Entry 681
+    0x1.ead687409c95dcaf61af98513517f507p-1,
+    -0x1.400ec8p2
+  },
+  { // Entry 682
+    -0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
+    0x1.507890p2
+  },
+  { // Entry 683
+    0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
+    -0x1.507890p2
+  },
+  { // Entry 684
+    -0x1.643092f42ae797375531420c005ca2cfp-1,
+    0x1.60e258p2
+  },
+  { // Entry 685
+    0x1.643092f42ae797375531420c005ca2cfp-1,
+    -0x1.60e258p2
+  },
+  { // Entry 686
+    -0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
+    0x1.714c20p2
+  },
+  { // Entry 687
+    0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
+    -0x1.714c20p2
+  },
+  { // Entry 688
+    -0x1.03be4d93d949325340b2f464201545a7p-2,
+    0x1.81b5e8p2
+  },
+  { // Entry 689
+    0x1.03be4d93d949325340b2f464201545a7p-2,
+    -0x1.81b5e8p2
+  },
+  { // Entry 690
+    0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
+    0x1.effffep-5
+  },
+  { // Entry 691
+    -0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
+    -0x1.effffep-5
+  },
+  { // Entry 692
+    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    0x1.f0p-5
+  },
+  { // Entry 693
+    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
+    -0x1.f0p-5
+  },
+  { // Entry 694
+    0x1.efb270f840979c65b75ee5c67016a866p-5,
+    0x1.f00002p-5
+  },
+  { // Entry 695
+    -0x1.efb270f840979c65b75ee5c67016a866p-5,
+    -0x1.f00002p-5
+  },
+  { // Entry 696
+    0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
+    0x1.f7fffep-4
+  },
+  { // Entry 697
+    -0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
+    -0x1.f7fffep-4
+  },
+  { // Entry 698
+    0x1.f6baaa131de6438e5611279864fe7663p-4,
+    0x1.f8p-4
+  },
+  { // Entry 699
+    -0x1.f6baaa131de6438e5611279864fe7663p-4,
+    -0x1.f8p-4
+  },
+  { // Entry 700
+    0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
+    0x1.f80002p-4
+  },
+  { // Entry 701
+    -0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
+    -0x1.f80002p-4
+  },
+  { // Entry 702
+    0x1.4a8c395552fb432af31780e883c98f71p-3,
+    0x1.4bfffep-3
+  },
+  { // Entry 703
+    -0x1.4a8c395552fb432af31780e883c98f71p-3,
+    -0x1.4bfffep-3
+  },
+  { // Entry 704
+    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    0x1.4cp-3
+  },
+  { // Entry 705
+    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
+    -0x1.4cp-3
+  },
+  { // Entry 706
+    0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
+    0x1.4c0002p-3
+  },
+  { // Entry 707
+    -0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
+    -0x1.4c0002p-3
+  },
+  { // Entry 708
+    0x1.2e9cd83630eb35c12efcfb8413583998p-2,
+    0x1.333332p-2
+  },
+  { // Entry 709
+    -0x1.2e9cd83630eb35c12efcfb8413583998p-2,
+    -0x1.333332p-2
+  },
+  { // Entry 710
+    0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
+    0x1.333334p-2
+  },
+  { // Entry 711
+    -0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
+    -0x1.333334p-2
+  },
+  { // Entry 712
+    0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
+    0x1.333336p-2
+  },
+  { // Entry 713
+    -0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
+    -0x1.333336p-2
+  },
+  { // Entry 714
+    0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
+    0x1.594316p-1
+  },
+  { // Entry 715
+    -0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
+    -0x1.594316p-1
+  },
+  { // Entry 716
+    0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
+    0x1.594318p-1
+  },
+  { // Entry 717
+    -0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
+    -0x1.594318p-1
+  },
+  { // Entry 718
+    0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
+    0x1.59431ap-1
+  },
+  { // Entry 719
+    -0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
+    -0x1.59431ap-1
+  },
+  { // Entry 720
+    0x1.6888a375ab228c1e031c4005769509f9p-1,
+    0x1.8ffffep-1
+  },
+  { // Entry 721
+    -0x1.6888a375ab228c1e031c4005769509f9p-1,
+    -0x1.8ffffep-1
+  },
+  { // Entry 722
+    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    0x1.90p-1
+  },
+  { // Entry 723
+    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
+    -0x1.90p-1
+  },
+  { // Entry 724
+    0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
+    0x1.900002p-1
+  },
+  { // Entry 725
+    -0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
+    -0x1.900002p-1
+  },
+  { // Entry 726
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 727
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 728
+    0.0,
+    0.0
+  },
+  { // Entry 729
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 730
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 731
+    0x1.91f65dccfead353d8db9c32f12262730p-5,
+    0x1.921fb4p-5
+  },
+  { // Entry 732
+    -0x1.91f65dccfead353d8db9c32f12262730p-5,
+    -0x1.921fb4p-5
+  },
+  { // Entry 733
+    0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
+    0x1.921fb6p-5
+  },
+  { // Entry 734
+    -0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
+    -0x1.921fb6p-5
+  },
+  { // Entry 735
+    0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
+    0x1.921fb8p-5
+  },
+  { // Entry 736
+    -0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
+    -0x1.921fb8p-5
+  },
+  { // Entry 737
+    0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
+    0x1.921fb4p-4
+  },
+  { // Entry 738
+    -0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
+    -0x1.921fb4p-4
+  },
+  { // Entry 739
+    0x1.917a6c7d7103b9d90e09615164449c6bp-4,
+    0x1.921fb6p-4
+  },
+  { // Entry 740
+    -0x1.917a6c7d7103b9d90e09615164449c6bp-4,
+    -0x1.921fb6p-4
+  },
+  { // Entry 741
+    0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
+    0x1.921fb8p-4
+  },
+  { // Entry 742
+    -0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
+    -0x1.921fb8p-4
+  },
+  { // Entry 743
+    0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
+    0x1.921fb4p-3
+  },
+  { // Entry 744
+    -0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
+    -0x1.921fb4p-3
+  },
+  { // Entry 745
+    0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
+    0x1.921fb6p-3
+  },
+  { // Entry 746
+    -0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
+    -0x1.921fb6p-3
+  },
+  { // Entry 747
+    0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
+    0x1.921fb8p-3
+  },
+  { // Entry 748
+    -0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
+    -0x1.921fb8p-3
+  },
+  { // Entry 749
+    0x1.87de293f569717a42a3bdb01aeae2063p-2,
+    0x1.921fb4p-2
+  },
+  { // Entry 750
+    -0x1.87de293f569717a42a3bdb01aeae2063p-2,
+    -0x1.921fb4p-2
+  },
+  { // Entry 751
+    0x1.87de2b185d5417dca800b85ca1319043p-2,
+    0x1.921fb6p-2
+  },
+  { // Entry 752
+    -0x1.87de2b185d5417dca800b85ca1319043p-2,
+    -0x1.921fb6p-2
+  },
+  { // Entry 753
+    0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
+    0x1.921fb8p-2
+  },
+  { // Entry 754
+    -0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
+    -0x1.921fb8p-2
+  },
+  { // Entry 755
+    0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
+    0x1.921fb4p-1
+  },
+  { // Entry 756
+    -0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
+    -0x1.921fb4p-1
+  },
+  { // Entry 757
+    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 758
+    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 759
+    0x1.6a09e856be050baccde9a76961e84aa7p-1,
+    0x1.921fb8p-1
+  },
+  { // Entry 760
+    -0x1.6a09e856be050baccde9a76961e84aa7p-1,
+    -0x1.921fb8p-1
+  },
+  { // Entry 761
+    0x1.fffffffffffe6546cc38211c26dabeebp-1,
+    0x1.921fb4p0
+  },
+  { // Entry 762
+    -0x1.fffffffffffe6546cc38211c26dabeebp-1,
+    -0x1.921fb4p0
+  },
+  { // Entry 763
+    0x1.ffffffffffff76521249c7422930ed82p-1,
+    0x1.921fb6p0
+  },
+  { // Entry 764
+    -0x1.ffffffffffff76521249c7422930ed82p-1,
+    -0x1.921fb6p0
+  },
+  { // Entry 765
+    0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
+    0x1.921fb8p0
+  },
+  { // Entry 766
+    -0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
+    -0x1.921fb8p0
+  },
+  { // Entry 767
+    0x1.4442d184698831f15b6315bfa6b5ae75p-23,
+    0x1.921fb4p1
+  },
+  { // Entry 768
+    -0x1.4442d184698831f15b6315bfa6b5ae75p-23,
+    -0x1.921fb4p1
+  },
+  { // Entry 769
+    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    0x1.921fb6p1
+  },
+  { // Entry 770
+    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    -0x1.921fb6p1
+  },
+  { // Entry 771
+    -0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
+    0x1.921fb8p1
+  },
+  { // Entry 772
+    0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
+    -0x1.921fb8p1
+  },
+  { // Entry 773
+    -0x1.4442d1846984217628872e56eb58b4c1p-22,
+    0x1.921fb4p2
+  },
+  { // Entry 774
+    0x1.4442d1846984217628872e56eb58b4c1p-22,
+    -0x1.921fb4p2
+  },
+  { // Entry 775
+    0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
+    0x1.921fb6p2
+  },
+  { // Entry 776
+    -0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
+    -0x1.921fb6p2
+  },
+  { // Entry 777
+    0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
+    0x1.921fb8p2
+  },
+  { // Entry 778
+    -0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
+    -0x1.921fb8p2
+  },
+  { // Entry 779
+    -0x1.4442d1846973df895d1791023ded513cp-21,
+    0x1.921fb4p3
+  },
+  { // Entry 780
+    0x1.4442d1846973df895d1791023ded513cp-21,
+    -0x1.921fb4p3
+  },
+  { // Entry 781
+    0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
+    0x1.921fb6p3
+  },
+  { // Entry 782
+    -0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
+    -0x1.921fb6p3
+  },
+  { // Entry 783
+    0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
+    0x1.921fb8p3
+  },
+  { // Entry 784
+    -0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
+    -0x1.921fb8p3
+  },
+  { // Entry 785
+    -0x1.4442d1846932d7d62f59209388c7f7cap-20,
+    0x1.921fb4p4
+  },
+  { // Entry 786
+    0x1.4442d1846932d7d62f59209388c7f7cap-20,
+    -0x1.921fb4p4
+  },
+  { // Entry 787
+    0x1.777a5cf72ccb3e87788b811229e725bcp-21,
+    0x1.921fb6p4
+  },
+  { // Entry 788
+    -0x1.777a5cf72ccb3e87788b811229e725bcp-21,
+    -0x1.921fb6p4
+  },
+  { // Entry 789
+    0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
+    0x1.921fb8p4
+  },
+  { // Entry 790
+    -0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
+    -0x1.921fb8p4
+  },
+  { // Entry 791
+    -0x1.4442d184682eb909785fad18bcb5dbfcp-19,
+    0x1.921fb4p5
+  },
+  { // Entry 792
+    0x1.4442d184682eb909785fad18bcb5dbfcp-19,
+    -0x1.921fb4p5
+  },
+  { // Entry 793
+    0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
+    0x1.921fb6p5
+  },
+  { // Entry 794
+    -0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
+    -0x1.921fb6p5
+  },
+  { // Entry 795
+    0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
+    0x1.921fb8p5
+  },
+  { // Entry 796
+    -0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
+    -0x1.921fb8p5
+  },
+  { // Entry 797
+    -0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
+    0x1.921fb4p6
+  },
+  { // Entry 798
+    0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
+    -0x1.921fb4p6
+  },
+  { // Entry 799
+    0x1.777a5cf72ad267903aec8118778b3b5ap-19,
+    0x1.921fb6p6
+  },
+  { // Entry 800
+    -0x1.777a5cf72ad267903aec8118778b3b5ap-19,
+    -0x1.921fb6p6
+  },
+  { // Entry 801
+    0x1.5dde973db000ace3f985a473ea1fc039p-17,
+    0x1.921fb8p6
+  },
+  { // Entry 802
+    -0x1.5dde973db000ace3f985a473ea1fc039p-17,
+    -0x1.921fb8p6
+  },
+  { // Entry 803
+    -0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
+    0x1.921fb4p7
+  },
+  { // Entry 804
+    0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
+    -0x1.921fb4p7
+  },
+  { // Entry 805
+    0x1.777a5cf72482eadf75c731f972507718p-18,
+    0x1.921fb6p7
+  },
+  { // Entry 806
+    -0x1.777a5cf72482eadf75c731f972507718p-18,
+    -0x1.921fb6p7
+  },
+  { // Entry 807
+    0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
+    0x1.921fb8p7
+  },
+  { // Entry 808
+    -0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
+    -0x1.921fb8p7
+  },
+  { // Entry 809
+    0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
+    0x1.2d97c4p1
+  },
+  { // Entry 810
+    -0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
+    -0x1.2d97c4p1
+  },
+  { // Entry 811
+    0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
+    0x1.2d97c6p1
+  },
+  { // Entry 812
+    -0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
+    -0x1.2d97c6p1
+  },
+  { // Entry 813
+    0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
+    0x1.2d97c8p1
+  },
+  { // Entry 814
+    -0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
+    -0x1.2d97c8p1
+  },
+  { // Entry 815
+    -0x1.6a09df19704cf14108e09000ff6374bfp-1,
+    0x1.f6a7a0p1
+  },
+  { // Entry 816
+    0x1.6a09df19704cf14108e09000ff6374bfp-1,
+    -0x1.f6a7a0p1
+  },
+  { // Entry 817
+    -0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
+    0x1.f6a7a2p1
+  },
+  { // Entry 818
+    0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
+    -0x1.f6a7a2p1
+  },
+  { // Entry 819
+    -0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
+    0x1.f6a7a4p1
+  },
+  { // Entry 820
+    0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
+    -0x1.f6a7a4p1
+  },
+  { // Entry 821
+    -0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
+    0x1.2d97c4p2
+  },
+  { // Entry 822
+    0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
+    -0x1.2d97c4p2
+  },
+  { // Entry 823
+    -0x1.ffffffffffc32939898f464aafc2e74ap-1,
+    0x1.2d97c6p2
+  },
+  { // Entry 824
+    0x1.ffffffffffc32939898f464aafc2e74ap-1,
+    -0x1.2d97c6p2
+  },
+  { // Entry 825
+    -0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
+    0x1.2d97c8p2
+  },
+  { // Entry 826
+    0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
+    -0x1.2d97c8p2
+  },
+  { // Entry 827
+    -0x1.6a09f529316cde5a190d235cc4ccb825p-1,
+    0x1.5fdbbcp2
+  },
+  { // Entry 828
+    0x1.6a09f529316cde5a190d235cc4ccb825p-1,
+    -0x1.5fdbbcp2
+  },
+  { // Entry 829
+    -0x1.6a09e9d8e2826770567ea818b2e89960p-1,
+    0x1.5fdbbep2
+  },
+  { // Entry 830
+    0x1.6a09e9d8e2826770567ea818b2e89960p-1,
+    -0x1.5fdbbep2
+  },
+  { // Entry 831
+    -0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
+    0x1.5fdbc0p2
+  },
+  { // Entry 832
+    0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
+    -0x1.5fdbc0p2
+  },
+  { // Entry 833
+    0x1.6a09d033fa715a407a6f03d01b91113fp-1,
+    0x1.c463a8p2
+  },
+  { // Entry 834
+    -0x1.6a09d033fa715a407a6f03d01b91113fp-1,
+    -0x1.c463a8p2
+  },
+  { // Entry 835
+    0x1.6a09db844a28f8635851fdf8818515efp-1,
+    0x1.c463aap2
+  },
+  { // Entry 836
+    -0x1.6a09db844a28f8635851fdf8818515efp-1,
+    -0x1.c463aap2
+  },
+  { // Entry 837
+    0x1.6a09e6d49986140f55226fc58672612cp-1,
+    0x1.c463acp2
+  },
+  { // Entry 838
+    -0x1.6a09e6d49986140f55226fc58672612cp-1,
+    -0x1.c463acp2
+  },
+  { // Entry 839
+    0x1.ffffffffff95397934cac1f28532d3d3p-1,
+    0x1.f6a7a0p2
+  },
+  { // Entry 840
+    -0x1.ffffffffff95397934cac1f28532d3d3p-1,
+    -0x1.f6a7a0p2
+  },
+  { // Entry 841
+    0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
+    0x1.f6a7a2p2
+  },
+  { // Entry 842
+    -0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
+    -0x1.f6a7a2p2
+  },
+  { // Entry 843
+    0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
+    0x1.f6a7a4p2
+  },
+  { // Entry 844
+    -0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
+    -0x1.f6a7a4p2
+  },
+  { // Entry 845
+    0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
+    0x1.1475cap3
+  },
+  { // Entry 846
+    -0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
+    -0x1.1475cap3
+  },
+  { // Entry 847
+    0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
+    0x1.1475ccp3
+  },
+  { // Entry 848
+    -0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
+    -0x1.1475ccp3
+  },
+  { // Entry 849
+    0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
+    0x1.1475cep3
+  },
+  { // Entry 850
+    -0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
+    -0x1.1475cep3
+  },
+  { // Entry 851
+    0x1.f9990e91a64ae486757878bdfee0f703p-20,
+    0x1.2d97c4p3
+  },
+  { // Entry 852
+    -0x1.f9990e91a64ae486757878bdfee0f703p-20,
+    -0x1.2d97c4p3
+  },
+  { // Entry 853
+    0x1.f3321d234ed8128aabb0499a43b4def2p-21,
+    0x1.2d97c6p3
+  },
+  { // Entry 854
+    -0x1.f3321d234ed8128aabb0499a43b4def2p-21,
+    -0x1.2d97c6p3
+  },
+  { // Entry 855
+    -0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
+    0x1.2d97c8p3
+  },
+  { // Entry 856
+    0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
+    -0x1.2d97c8p3
+  },
+  { // Entry 857
+    -0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
+    0x1.46b9c0p3
+  },
+  { // Entry 858
+    0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
+    -0x1.46b9c0p3
+  },
+  { // Entry 859
+    -0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
+    0x1.46b9c2p3
+  },
+  { // Entry 860
+    0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
+    -0x1.46b9c2p3
+  },
+  { // Entry 861
+    -0x1.6a09ee8fc294f35db3efce565365af89p-1,
+    0x1.46b9c4p3
+  },
+  { // Entry 862
+    0x1.6a09ee8fc294f35db3efce565365af89p-1,
+    -0x1.46b9c4p3
+  },
+  { // Entry 863
+    -0x1.fffffffffe4c96b397d951cb21861c95p-1,
+    0x1.5fdbbcp3
+  },
+  { // Entry 864
+    0x1.fffffffffe4c96b397d951cb21861c95p-1,
+    -0x1.5fdbbcp3
+  },
+  { // Entry 865
+    -0x1.ffffffffffe8512aebb56c9e75b41941p-1,
+    0x1.5fdbbep3
+  },
+  { // Entry 866
+    0x1.ffffffffffe8512aebb56c9e75b41941p-1,
+    -0x1.5fdbbep3
+  },
+  { // Entry 867
+    -0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
+    0x1.5fdbc0p3
+  },
+  { // Entry 868
+    0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
+    -0x1.5fdbc0p3
+  },
+  { // Entry 869
+    -0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
+    0x1.78fdb6p3
+  },
+  { // Entry 870
+    0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
+    -0x1.78fdb6p3
+  },
+  { // Entry 871
+    -0x1.6a09fc537d29cf131d6710991bebabedp-1,
+    0x1.78fdb8p3
+  },
+  { // Entry 872
+    0x1.6a09fc537d29cf131d6710991bebabedp-1,
+    -0x1.78fdb8p3
+  },
+  { // Entry 873
+    -0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
+    0x1.78fdbap3
+  },
+  { // Entry 874
+    0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
+    -0x1.78fdbap3
+  },
+  { // Entry 875
+    0x1.6a09c909add4dbf32253a39d5c306308p-1,
+    0x1.ab41aep3
+  },
+  { // Entry 876
+    -0x1.6a09c909add4dbf32253a39d5c306308p-1,
+    -0x1.ab41aep3
+  },
+  { // Entry 877
+    0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
+    0x1.ab41b0p3
+  },
+  { // Entry 878
+    -0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
+    -0x1.ab41b0p3
+  },
+  { // Entry 879
+    0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
+    0x1.ab41b2p3
+  },
+  { // Entry 880
+    -0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
+    -0x1.ab41b2p3
+  },
+  { // Entry 881
+    0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
+    0x1.c463a8p3
+  },
+  { // Entry 882
+    -0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
+    -0x1.c463a8p3
+  },
+  { // Entry 883
+    0x1.ffffffffff12d89bb084dd762848b3d6p-1,
+    0x1.c463aap3
+  },
+  { // Entry 884
+    -0x1.ffffffffff12d89bb084dd762848b3d6p-1,
+    -0x1.c463aap3
+  },
+  { // Entry 885
+    0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
+    0x1.c463acp3
+  },
+  { // Entry 886
+    -0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
+    -0x1.c463acp3
+  },
+  { // Entry 887
+    0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
+    0x1.dd85a4p3
+  },
+  { // Entry 888
+    -0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
+    -0x1.dd85a4p3
+  },
+  { // Entry 889
+    0x1.6a09f49854662eff1b35755a129044a7p-1,
+    0x1.dd85a6p3
+  },
+  { // Entry 890
+    -0x1.6a09f49854662eff1b35755a129044a7p-1,
+    -0x1.dd85a6p3
+  },
+  { // Entry 891
+    0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
+    0x1.dd85a8p3
+  },
+  { // Entry 892
+    -0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
+    -0x1.dd85a8p3
+  },
+  { // Entry 893
+    0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
+    0x1.f6a7a0p3
+  },
+  { // Entry 894
+    -0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
+    -0x1.f6a7a0p3
+  },
+  { // Entry 895
+    0x1.2aa70bcb07d3a40781510d213652e43ap-22,
+    0x1.f6a7a2p3
+  },
+  { // Entry 896
+    -0x1.2aa70bcb07d3a40781510d213652e43ap-22,
+    -0x1.f6a7a2p3
+  },
+  { // Entry 897
+    -0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
+    0x1.f6a7a4p3
+  },
+  { // Entry 898
+    0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
+    -0x1.f6a7a4p3
+  },
+  { // Entry 899
+    -0x1.6a09a383953124096898340f9168b9d5p-1,
+    0x1.07e4ccp4
+  },
+  { // Entry 900
+    0x1.6a09a383953124096898340f9168b9d5p-1,
+    -0x1.07e4ccp4
+  },
+  { // Entry 901
+    -0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
+    0x1.07e4cep4
+  },
+  { // Entry 902
+    0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
+    -0x1.07e4cep4
+  },
+  { // Entry 903
+    -0x1.6a09fe061433e7770d00ca59d5a56251p-1,
+    0x1.07e4d0p4
+  },
+  { // Entry 904
+    0x1.6a09fe061433e7770d00ca59d5a56251p-1,
+    -0x1.07e4d0p4
+  },
+  { // Entry 905
+    -0x1.fffffffff9219dae5feda1b539335803p-1,
+    0x1.1475cap4
+  },
+  { // Entry 906
+    0x1.fffffffff9219dae5feda1b539335803p-1,
+    -0x1.1475cap4
+  },
+  { // Entry 907
+    -0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
+    0x1.1475ccp4
+  },
+  { // Entry 908
+    0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
+    -0x1.1475ccp4
+  },
+  { // Entry 909
+    -0x1.fffffffffe190d2eb82e74efd2093215p-1,
+    0x1.1475cep4
+  },
+  { // Entry 910
+    0x1.fffffffffe190d2eb82e74efd2093215p-1,
+    -0x1.1475cep4
+  },
+  { // Entry 911
+    -0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
+    0x1.2106c8p4
+  },
+  { // Entry 912
+    0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
+    -0x1.2106c8p4
+  },
+  { // Entry 913
+    -0x1.6a09ecdd2b784b699034ee8102670e27p-1,
+    0x1.2106cap4
+  },
+  { // Entry 914
+    0x1.6a09ecdd2b784b699034ee8102670e27p-1,
+    -0x1.2106cap4
+  },
+  { // Entry 915
+    -0x1.6a09bf9beca5e03188301639c09ed574p-1,
+    0x1.2106ccp4
+  },
+  { // Entry 916
+    0x1.6a09bf9beca5e03188301639c09ed574p-1,
+    -0x1.2106ccp4
+  },
+  { // Entry 917
+    -0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
+    0x1.2d97c4p4
+  },
+  { // Entry 918
+    0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
+    -0x1.2d97c4p4
+  },
+  { // Entry 919
+    -0x1.f3321d234deacd6f3afd75039685012fp-20,
+    0x1.2d97c6p4
+  },
+  { // Entry 920
+    0x1.f3321d234deacd6f3afd75039685012fp-20,
+    -0x1.2d97c6p4
+  },
+  { // Entry 921
+    0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
+    0x1.2d97c8p4
+  },
+  { // Entry 922
+    -0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
+    -0x1.2d97c8p4
+  },
+  { // Entry 923
+    0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
+    0x1.3a28c2p4
+  },
+  { // Entry 924
+    -0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
+    -0x1.3a28c2p4
+  },
+  { // Entry 925
+    0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
+    0x1.3a28c4p4
+  },
+  { // Entry 926
+    -0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
+    -0x1.3a28c4p4
+  },
+  { // Entry 927
+    0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
+    0x1.3a28c6p4
+  },
+  { // Entry 928
+    -0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
+    -0x1.3a28c6p4
+  },
+  { // Entry 929
+    0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
+    0x1.46b9c0p4
+  },
+  { // Entry 930
+    -0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
+    -0x1.46b9c0p4
+  },
+  { // Entry 931
+    0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
+    0x1.46b9c2p4
+  },
+  { // Entry 932
+    -0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
+    -0x1.46b9c2p4
+  },
+  { // Entry 933
+    0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
+    0x1.46b9c4p4
+  },
+  { // Entry 934
+    -0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
+    -0x1.46b9c4p4
+  },
+  { // Entry 935
+    0x1.6a0a2903d773925b052fb006ac670c23p-1,
+    0x1.534abep4
+  },
+  { // Entry 936
+    -0x1.6a0a2903d773925b052fb006ac670c23p-1,
+    -0x1.534abep4
+  },
+  { // Entry 937
+    0x1.6a09fbc2a025fdae918466fa00142143p-1,
+    0x1.534ac0p4
+  },
+  { // Entry 938
+    -0x1.6a09fbc2a025fdae918466fa00142143p-1,
+    -0x1.534ac0p4
+  },
+  { // Entry 939
+    0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
+    0x1.534ac2p4
+  },
+  { // Entry 940
+    -0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
+    -0x1.534ac2p4
+  },
+  { // Entry 941
+    0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
+    0x1.5fdbbcp4
+  },
+  { // Entry 942
+    -0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
+    -0x1.5fdbbcp4
+  },
+  { // Entry 943
+    0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
+    0x1.5fdbbep4
+  },
+  { // Entry 944
+    -0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
+    -0x1.5fdbbep4
+  },
+  { // Entry 945
+    -0x1.644588ac2334a3d5452d9960282cf80dp-20,
+    0x1.5fdbc0p4
+  },
+  { // Entry 946
+    0x1.644588ac2334a3d5452d9960282cf80dp-20,
+    -0x1.5fdbc0p4
+  },
+  { // Entry 947
+    -0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
+    0x1.6c6cbap4
+  },
+  { // Entry 948
+    0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
+    -0x1.6c6cbap4
+  },
+  { // Entry 949
+    -0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
+    0x1.6c6cbcp4
+  },
+  { // Entry 950
+    0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
+    -0x1.6c6cbcp4
+  },
+  { // Entry 951
+    -0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
+    0x1.6c6cbep4
+  },
+  { // Entry 952
+    0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
+    -0x1.6c6cbep4
+  },
+  { // Entry 953
+    -0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
+    0x1.78fdb6p4
+  },
+  { // Entry 954
+    0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
+    -0x1.78fdb6p4
+  },
+  { // Entry 955
+    -0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
+    0x1.78fdb8p4
+  },
+  { // Entry 956
+    0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
+    -0x1.78fdb8p4
+  },
+  { // Entry 957
+    -0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
+    0x1.78fdbap4
+  },
+  { // Entry 958
+    0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
+    -0x1.78fdbap4
+  },
+  { // Entry 959
+    -0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
+    0x1.858eb4p4
+  },
+  { // Entry 960
+    0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
+    -0x1.858eb4p4
+  },
+  { // Entry 961
+    -0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
+    0x1.858eb6p4
+  },
+  { // Entry 962
+    0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
+    -0x1.858eb6p4
+  },
+  { // Entry 963
+    -0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
+    0x1.858eb8p4
+  },
+  { // Entry 964
+    0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
+    -0x1.858eb8p4
+  },
+  { // Entry 965
+    0x1.c048b38a8bbf59f414fec7079209926ep-3,
+    0x1.fffffep62
+  },
+  { // Entry 966
+    -0x1.c048b38a8bbf59f414fec7079209926ep-3,
+    -0x1.fffffep62
+  },
+  { // Entry 967
+    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    0x1.p63
+  },
+  { // Entry 968
+    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
+    -0x1.p63
+  },
+  { // Entry 969
+    -0x1.d6637d070347ee94e830445e76486727p-1,
+    0x1.000002p63
+  },
+  { // Entry 970
+    0x1.d6637d070347ee94e830445e76486727p-1,
+    -0x1.000002p63
+  },
+  { // Entry 971
+    -0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
+    0x1.fffffep26
+  },
+  { // Entry 972
+    0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
+    -0x1.fffffep26
+  },
+  { // Entry 973
+    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    0x1.p27
+  },
+  { // Entry 974
+    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
+    -0x1.p27
+  },
+  { // Entry 975
+    0x1.171999b629fd5b6357c6dff4d7827d95p-1,
+    0x1.000002p27
+  },
+  { // Entry 976
+    -0x1.171999b629fd5b6357c6dff4d7827d95p-1,
+    -0x1.000002p27
+  },
+  { // Entry 977
+    -0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
+    0x1.fffffep23
+  },
+  { // Entry 978
+    0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
+    -0x1.fffffep23
+  },
+  { // Entry 979
+    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    0x1.p24
+  },
+  { // Entry 980
+    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
+    -0x1.p24
+  },
+  { // Entry 981
+    0x1.c9b0c7265c543f80faf01741c6458560p-1,
+    0x1.000002p24
+  },
+  { // Entry 982
+    -0x1.c9b0c7265c543f80faf01741c6458560p-1,
+    -0x1.000002p24
+  },
+  { // Entry 983
+    -0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
+    0x1.fffffep1
+  },
+  { // Entry 984
+    0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
+    -0x1.fffffep1
+  },
+  { // Entry 985
+    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    0x1.p2
+  },
+  { // Entry 986
+    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
+    -0x1.p2
+  },
+  { // Entry 987
+    -0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
+    0x1.000002p2
+  },
+  { // Entry 988
+    0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
+    -0x1.000002p2
+  },
+  { // Entry 989
+    0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
+    0x1.fffffep0
+  },
+  { // Entry 990
+    -0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
+    -0x1.fffffep0
+  },
+  { // Entry 991
+    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    0x1.p1
+  },
+  { // Entry 992
+    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
+    -0x1.p1
+  },
+  { // Entry 993
+    0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
+    0x1.000002p1
+  },
+  { // Entry 994
+    -0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
+    -0x1.000002p1
+  },
+  { // Entry 995
+    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 996
+    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 997
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.p0
+  },
+  { // Entry 998
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    -0x1.p0
+  },
+  { // Entry 999
+    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    0x1.000002p0
+  },
+  { // Entry 1000
+    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    -0x1.000002p0
+  },
+  { // Entry 1001
+    0x1.eaee85835dde5b71beec7d8d98052112p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 1002
+    -0x1.eaee85835dde5b71beec7d8d98052112p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 1003
+    0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    0x1.p-1
+  },
+  { // Entry 1004
+    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
+    -0x1.p-1
+  },
+  { // Entry 1005
+    0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
+    0x1.000002p-1
+  },
+  { // Entry 1006
+    -0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 1007
+    0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
+    0x1.fffffep-3
+  },
+  { // Entry 1008
+    -0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 1009
+    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    0x1.p-2
+  },
+  { // Entry 1010
+    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
+    -0x1.p-2
+  },
+  { // Entry 1011
+    0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
+    0x1.000002p-2
+  },
+  { // Entry 1012
+    -0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
+    -0x1.000002p-2
+  },
+  { // Entry 1013
+    0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
+    0x1.fffffep-4
+  },
+  { // Entry 1014
+    -0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 1015
+    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    0x1.p-3
+  },
+  { // Entry 1016
+    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
+    -0x1.p-3
+  },
+  { // Entry 1017
+    0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
+    0x1.000002p-3
+  },
+  { // Entry 1018
+    -0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
+    -0x1.000002p-3
+  },
+  { // Entry 1019
+    0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
+    0x1.fffffep-5
+  },
+  { // Entry 1020
+    -0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 1021
+    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    0x1.p-4
+  },
+  { // Entry 1022
+    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
+    -0x1.p-4
+  },
+  { // Entry 1023
+    0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
+    0x1.000002p-4
+  },
+  { // Entry 1024
+    -0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
+    -0x1.000002p-4
+  },
+  { // Entry 1025
+    0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
+    0x1.fffffep-6
+  },
+  { // Entry 1026
+    -0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 1027
+    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    0x1.p-5
+  },
+  { // Entry 1028
+    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
+    -0x1.p-5
+  },
+  { // Entry 1029
+    0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
+    0x1.000002p-5
+  },
+  { // Entry 1030
+    -0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
+    -0x1.000002p-5
+  },
+  { // Entry 1031
+    0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
+    0x1.fffffep-7
+  },
+  { // Entry 1032
+    -0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 1033
+    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    0x1.p-6
+  },
+  { // Entry 1034
+    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
+    -0x1.p-6
+  },
+  { // Entry 1035
+    0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
+    0x1.000002p-6
+  },
+  { // Entry 1036
+    -0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
+    -0x1.000002p-6
+  },
+  { // Entry 1037
+    0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
+    0x1.fffffep-15
+  },
+  { // Entry 1038
+    -0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 1039
+    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    0x1.p-14
+  },
+  { // Entry 1040
+    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
+    -0x1.p-14
+  },
+  { // Entry 1041
+    0x1.000001fd5555455777578ccbe7bfc09cp-14,
+    0x1.000002p-14
+  },
+  { // Entry 1042
+    -0x1.000001fd5555455777578ccbe7bfc09cp-14,
+    -0x1.000002p-14
+  },
+  { // Entry 1043
+    0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
+    0x1.fffffep-28
+  },
+  { // Entry 1044
+    -0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 1045
+    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    0x1.p-27
+  },
+  { // Entry 1046
+    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
+    -0x1.p-27
+  },
+  { // Entry 1047
+    0x1.000001ffffffff55555155554d557772p-27,
+    0x1.000002p-27
+  },
+  { // Entry 1048
+    -0x1.000001ffffffff55555155554d557772p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 1049
+    0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
+    0x1.fffffep-31
+  },
+  { // Entry 1050
+    -0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 1051
+    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    0x1.p-30
+  },
+  { // Entry 1052
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
+    -0x1.p-30
+  },
+  { // Entry 1053
+    0x1.000001fffffffffd5555455555355557p-30,
+    0x1.000002p-30
+  },
+  { // Entry 1054
+    -0x1.000001fffffffffd5555455555355557p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 1055
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1056
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1057
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1058
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1059
+    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1060
+    0x1.0b3366508957520d9dc88d7c09337e24p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1061
+    -0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
+    0x1.fffffcp127
+  },
+  { // Entry 1062
+    0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
+    -0x1.fffffcp127
+  },
+  { // Entry 1063
+    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    0x1.921fb6p1
+  },
+  { // Entry 1064
+    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
+    -0x1.921fb6p1
+  },
+  { // Entry 1065
+    0x1.ffffffffffff76521249c7422930ed82p-1,
+    0x1.921fb6p0
+  },
+  { // Entry 1066
+    -0x1.ffffffffffff76521249c7422930ed82p-1,
+    -0x1.921fb6p0
+  },
+  { // Entry 1067
+    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    0x1.000002p0
+  },
+  { // Entry 1068
+    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
+    -0x1.000002p0
+  },
+  { // Entry 1069
+    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    0x1.p0
+  },
+  { // Entry 1070
+    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
+    -0x1.p0
+  },
+  { // Entry 1071
+    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 1072
+    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 1073
+    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 1074
+    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 1075
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 1076
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 1077
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 1078
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 1079
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1080
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1081
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 1082
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 1083
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 1084
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 1085
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1086
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1087
+    0.0,
+    0.0f
+  },
+  { // Entry 1088
+    -0.0,
+    -0.0f
+  },
+};
diff --git a/tests/math_data/sinh_intel_data.h b/tests/math_data/sinh_intel_data.h
new file mode 100644
index 0000000..bebc192
--- /dev/null
+++ b/tests/math_data/sinh_intel_data.h
@@ -0,0 +1,3054 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_sinh_intel_data[] = {
+  { // Entry 0
+    -0x1.20000000000f30000000003d82666666p-21,
+    -0x1.2p-21
+  },
+  { // Entry 1
+    0x1.20000000000f30000000003d82666666p-21,
+    0x1.2p-21
+  },
+  { // Entry 2
+    -0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    -0x1.20b0659d8a7e1p9
+  },
+  { // Entry 3
+    0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    0x1.20b0659d8a7e1p9
+  },
+  { // Entry 4
+    -0x1.653a9c0c08b00f3a2fd5ec9fb1093ff9p52,
+    -0x1.288f5c28f5c28p5
+  },
+  { // Entry 5
+    0x1.653a9c0c08b00f3a2fd5ec9fb1093ff9p52,
+    0x1.288f5c28f5c28p5
+  },
+  { // Entry 6
+    -0x1.45f775546a77d77fe6234ab5d4ab1036p-1,
+    -0x1.3333333333333p-1
+  },
+  { // Entry 7
+    0x1.45f775546a77d77fe6234ab5d4ab1036p-1,
+    0x1.3333333333333p-1
+  },
+  { // Entry 8
+    -0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    -0x1.3c640p9
+  },
+  { // Entry 9
+    0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    0x1.3c640p9
+  },
+  { // Entry 10
+    -0x1.41ab9d8bc0cbf81eac0e2bbbbbeab96cp-5,
+    -0x1.41967803312afp-5
+  },
+  { // Entry 11
+    0x1.41ab9d8bc0cbf81eac0e2bbbbbeab96cp-5,
+    0x1.41967803312afp-5
+  },
+  { // Entry 12
+    -0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    -0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 13
+    0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 14
+    -0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    -0x1.4aa0d96719fc6p9
+  },
+  { // Entry 15
+    0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    0x1.4aa0d96719fc6p9
+  },
+  { // Entry 16
+    -0x1.f7667599728a17ff07667fe41510ac6cp13,
+    -0x1.4c2b291cfadd2p3
+  },
+  { // Entry 17
+    0x1.f7667599728a17ff07667fe41510ac6cp13,
+    0x1.4c2b291cfadd2p3
+  },
+  { // Entry 18
+    -0x1.eb34f0a92ee7280128c114f07d355776p958,
+    -0x1.4cb09e65eb930p9
+  },
+  { // Entry 19
+    0x1.eb34f0a92ee7280128c114f07d355776p958,
+    0x1.4cb09e65eb930p9
+  },
+  { // Entry 20
+    -0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    -0x1.4d5b56d5b55acp9
+  },
+  { // Entry 21
+    0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    0x1.4d5b56d5b55acp9
+  },
+  { // Entry 22
+    -0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    -0x1.50dc3739dde8ep9
+  },
+  { // Entry 23
+    0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    0x1.50dc3739dde8ep9
+  },
+  { // Entry 24
+    -0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    -0x1.529994bb15795p9
+  },
+  { // Entry 25
+    0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    0x1.529994bb15795p9
+  },
+  { // Entry 26
+    -0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    -0x1.5cf9ace27d120p9
+  },
+  { // Entry 27
+    0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    0x1.5cf9ace27d120p9
+  },
+  { // Entry 28
+    -0x1.99d18edc5720a8018d0c8bfbf7d98f9ap1011,
+    -0x1.5ef7bdef7c2eep9
+  },
+  { // Entry 29
+    0x1.99d18edc5720a8018d0c8bfbf7d98f9ap1011,
+    0x1.5ef7bdef7c2eep9
+  },
+  { // Entry 30
+    -0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    -0x1.5fc2907bbfb53p9
+  },
+  { // Entry 31
+    0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    0x1.5fc2907bbfb53p9
+  },
+  { // Entry 32
+    -0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    -0x1.62e42fefa39eap9
+  },
+  { // Entry 33
+    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    0x1.62e42fefa39eap9
+  },
+  { // Entry 34
+    -0x1.94f8e42c219097ffbf5323a28f7d715cp-2,
+    -0x1.8b1896d9e5343p-2
+  },
+  { // Entry 35
+    0x1.94f8e42c219097ffbf5323a28f7d715cp-2,
+    0x1.8b1896d9e5343p-2
+  },
+  { // Entry 36
+    -0x1.90p-1069,
+    -0x1.9p-1069
+  },
+  { // Entry 37
+    0x1.90p-1069,
+    0x1.9p-1069
+  },
+  { // Entry 38
+    -0x1.a45c4bfc4132c8e8dd4e44e918fef502p-2,
+    -0x1.995e6ee493fe5p-2
+  },
+  { // Entry 39
+    0x1.a45c4bfc4132c8e8dd4e44e918fef502p-2,
+    0x1.995e6ee493fe5p-2
+  },
+  { // Entry 40
+    -0x1.c7a103379809b38132350ca766cba44bp-1,
+    -0x1.9a495ea447852p-1
+  },
+  { // Entry 41
+    0x1.c7a103379809b38132350ca766cba44bp-1,
+    0x1.9a495ea447852p-1
+  },
+  { // Entry 42
+    -0x1.9bfa3403f8d457fffa246d880ef814f1p-5,
+    -0x1.9bcdcc408ced3p-5
+  },
+  { // Entry 43
+    0x1.9bfa3403f8d457fffa246d880ef814f1p-5,
+    0x1.9bcdcc408ced3p-5
+  },
+  { // Entry 44
+    -0x1.aa8c3d4cb5bd9ffffe5e559c563d669cp-5,
+    -0x1.aa5af545ae880p-5
+  },
+  { // Entry 45
+    0x1.aa8c3d4cb5bd9ffffe5e559c563d669cp-5,
+    0x1.aa5af545ae880p-5
+  },
+  { // Entry 46
+    -0x1.e17e32eb8e6ce8f6dad6a738fa5f0b8ap-2,
+    -0x1.d15037f2ebe3cp-2
+  },
+  { // Entry 47
+    0x1.e17e32eb8e6ce8f6dad6a738fa5f0b8ap-2,
+    0x1.d15037f2ebe3cp-2
+  },
+  { // Entry 48
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 49
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 50
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 51
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 52
+    0x1.000000000000100000000aaaaaaaaaaap-41,
+    0x1.0000000000001p-41
+  },
+  { // Entry 53
+    -0x1.000000000000100000000aaaaaaaaaaap-41,
+    -0x1.0000000000001p-41
+  },
+  { // Entry 54
+    0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    0x1.0000000000007p8
+  },
+  { // Entry 55
+    -0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    -0x1.0000000000007p8
+  },
+  { // Entry 56
+    0x1.1f43febb6d5ed7f79073c9dea85050fep45,
+    0x1.0000000e0p5
+  },
+  { // Entry 57
+    -0x1.1f43febb6d5ed7f79073c9dea85050fep45,
+    -0x1.0000000e0p5
+  },
+  { // Entry 58
+    0x1.749ea5cf24c2a801014b24d9686ff306p10,
+    0x1.0000000ffe017p3
+  },
+  { // Entry 59
+    -0x1.749ea5cf24c2a801014b24d9686ff306p10,
+    -0x1.0000000ffe017p3
+  },
+  { // Entry 60
+    0x1.0f2ebe19aebbcffe11114fde20a8b25dp22,
+    0x1.0000001p4
+  },
+  { // Entry 61
+    -0x1.0f2ebe19aebbcffe11114fde20a8b25dp22,
+    -0x1.0000001p4
+  },
+  { // Entry 62
+    0x1.d03d0547eb5af7ff9287bfe9ef08d02cp1,
+    0x1.0000040p1
+  },
+  { // Entry 63
+    -0x1.d03d0547eb5af7ff9287bfe9ef08d02cp1,
+    -0x1.0000040p1
+  },
+  { // Entry 64
+    0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    0x1.0000202p9
+  },
+  { // Entry 65
+    -0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    -0x1.0000202p9
+  },
+  { // Entry 66
+    0x1.203fc65a034d07ffda891ef079ee632dp45,
+    0x1.00070p5
+  },
+  { // Entry 67
+    -0x1.203fc65a034d07ffda891ef079ee632dp45,
+    -0x1.00070p5
+  },
+  { // Entry 68
+    0x1.043203c63ca348000c2d50e004eab9dfp-3,
+    0x1.03801bba53d5fp-3
+  },
+  { // Entry 69
+    -0x1.043203c63ca348000c2d50e004eab9dfp-3,
+    -0x1.03801bba53d5fp-3
+  },
+  { // Entry 70
+    0x1.d9ceb6fb3af22800eba0709ab550eb83p4,
+    0x1.0539a9db00fb0p2
+  },
+  { // Entry 71
+    -0x1.d9ceb6fb3af22800eba0709ab550eb83p4,
+    -0x1.0539a9db00fb0p2
+  },
+  { // Entry 72
+    0x1.19d9db769b3073db5694464547980ab3p-1,
+    0x1.0d44121952313p-1
+  },
+  { // Entry 73
+    -0x1.19d9db769b3073db5694464547980ab3p-1,
+    -0x1.0d44121952313p-1
+  },
+  { // Entry 74
+    0x1.11aa874937f657fefeb22f10657675b2p-3,
+    0x1.10dbb163423cfp-3
+  },
+  { // Entry 75
+    -0x1.11aa874937f657fefeb22f10657675b2p-3,
+    -0x1.10dbb163423cfp-3
+  },
+  { // Entry 76
+    0x1.a4e4693413b9970755c15633af25f96bp399,
+    0x1.15c18de877563p8
+  },
+  { // Entry 77
+    -0x1.a4e4693413b9970755c15633af25f96bp399,
+    -0x1.15c18de877563p8
+  },
+  { // Entry 78
+    0x1.1fae3d9220dd280102c022b12bc3f6fep-2,
+    0x1.1c065802b26eap-2
+  },
+  { // Entry 79
+    -0x1.1fae3d9220dd280102c022b12bc3f6fep-2,
+    -0x1.1c065802b26eap-2
+  },
+  { // Entry 80
+    0x1.20000000000f30000000003d82666666p-21,
+    0x1.2p-21
+  },
+  { // Entry 81
+    -0x1.20000000000f30000000003d82666666p-21,
+    -0x1.2p-21
+  },
+  { // Entry 82
+    0x1.35a9257a5a1cb7fecfa291714fac9f89p-1,
+    0x1.25589e6453a79p-1
+  },
+  { // Entry 83
+    -0x1.35a9257a5a1cb7fecfa291714fac9f89p-1,
+    -0x1.25589e6453a79p-1
+  },
+  { // Entry 84
+    0x1.eaa521edf1bc28014602191ce618c05fp845,
+    0x1.2586ca9cf411bp9
+  },
+  { // Entry 85
+    -0x1.eaa521edf1bc28014602191ce618c05fp845,
+    -0x1.2586ca9cf411bp9
+  },
+  { // Entry 86
+    0x1.6a09e667f3bc9b61130bc056d478d834p25,
+    0x1.25e4f7b2737fap4
+  },
+  { // Entry 87
+    -0x1.6a09e667f3bc9b61130bc056d478d834p25,
+    -0x1.25e4f7b2737fap4
+  },
+  { // Entry 88
+    0x1.2a9bbf545f09f7fffc2fd473fc2f8a9ep-2,
+    0x1.2687ce7bd7353p-2
+  },
+  { // Entry 89
+    -0x1.2a9bbf545f09f7fffc2fd473fc2f8a9ep-2,
+    -0x1.2687ce7bd7353p-2
+  },
+  { // Entry 90
+    0x1.2e6ae008ae071731ab9829f451a64edcp-2,
+    0x1.2a2f795d6b514p-2
+  },
+  { // Entry 91
+    -0x1.2e6ae008ae071731ab9829f451a64edcp-2,
+    -0x1.2a2f795d6b514p-2
+  },
+  { // Entry 92
+    0x1.fffffffffff84dc369f81dfdbc383332p25,
+    0x1.2b708872320dep4
+  },
+  { // Entry 93
+    -0x1.fffffffffff84dc369f81dfdbc383332p25,
+    -0x1.2b708872320dep4
+  },
+  { // Entry 94
+    0x1.7c12b8d57fdcf7fffa9ce5e99a4163dep0,
+    0x1.2fac64a42ceefp0
+  },
+  { // Entry 95
+    -0x1.7c12b8d57fdcf7fffa9ce5e99a4163dep0,
+    -0x1.2fac64a42ceefp0
+  },
+  { // Entry 96
+    0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    0x1.2fe8bcd183299p9
+  },
+  { // Entry 97
+    -0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    -0x1.2fe8bcd183299p9
+  },
+  { // Entry 98
+    0x1.42546737e09d68014ec9badd9df8fee3p-1,
+    0x1.30208b74d1760p-1
+  },
+  { // Entry 99
+    -0x1.42546737e09d68014ec9badd9df8fee3p-1,
+    -0x1.30208b74d1760p-1
+  },
+  { // Entry 100
+    0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    0x1.30a324d6033b5p9
+  },
+  { // Entry 101
+    -0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    -0x1.30a324d6033b5p9
+  },
+  { // Entry 102
+    0x1.46c46118f79ad3e3a58cffe90ae6c228p-1,
+    0x1.33ep-1
+  },
+  { // Entry 103
+    -0x1.46c46118f79ad3e3a58cffe90ae6c228p-1,
+    -0x1.33ep-1
+  },
+  { // Entry 104
+    0x1.4715736c9497d3c2ba6fecc679c26499p-1,
+    0x1.342454787e0eap-1
+  },
+  { // Entry 105
+    -0x1.4715736c9497d3c2ba6fecc679c26499p-1,
+    -0x1.342454787e0eap-1
+  },
+  { // Entry 106
+    0x1.8b2e83486133082860f65d0b54a3ff4cp0,
+    0x1.380p0
+  },
+  { // Entry 107
+    -0x1.8b2e83486133082860f65d0b54a3ff4cp0,
+    -0x1.380p0
+  },
+  { // Entry 108
+    0x1.94743c1df51b480057352f3dbc3a206dp0,
+    0x1.3d0p0
+  },
+  { // Entry 109
+    -0x1.94743c1df51b480057352f3dbc3a206dp0,
+    -0x1.3d0p0
+  },
+  { // Entry 110
+    0x1.43f3767f52a3a8603144ec06b8fc89a2p-2,
+    0x1.3ec6f4738ef75p-2
+  },
+  { // Entry 111
+    -0x1.43f3767f52a3a8603144ec06b8fc89a2p-2,
+    -0x1.3ec6f4738ef75p-2
+  },
+  { // Entry 112
+    0x1.411bd68cf1f6682ad666958c437bc7d6p-5,
+    0x1.4106cd4f76086p-5
+  },
+  { // Entry 113
+    -0x1.411bd68cf1f6682ad666958c437bc7d6p-5,
+    -0x1.4106cd4f76086p-5
+  },
+  { // Entry 114
+    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    0x1.42a565e456e04p9
+  },
+  { // Entry 115
+    -0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    -0x1.42a565e456e04p9
+  },
+  { // Entry 116
+    0x1.59ae6cfb065053d12a7ee2829e50cbc0p-1,
+    0x1.43af5aa457830p-1
+  },
+  { // Entry 117
+    -0x1.59ae6cfb065053d12a7ee2829e50cbc0p-1,
+    -0x1.43af5aa457830p-1
+  },
+  { // Entry 118
+    0x1.5a16aa3594c9d3c64013364ec2c00447p-1,
+    0x1.4405baf340402p-1
+  },
+  { // Entry 119
+    -0x1.5a16aa3594c9d3c64013364ec2c00447p-1,
+    -0x1.4405baf340402p-1
+  },
+  { // Entry 120
+    0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    0x1.456bf23e02428p9
+  },
+  { // Entry 121
+    -0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    -0x1.456bf23e02428p9
+  },
+  { // Entry 122
+    0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    0x1.45c1feef8086cp9
+  },
+  { // Entry 123
+    -0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    -0x1.45c1feef8086cp9
+  },
+  { // Entry 124
+    0x1.5c98a49e6503ac198ec2bf98d4df0ce2p-1,
+    0x1.4618fe408b57ep-1
+  },
+  { // Entry 125
+    -0x1.5c98a49e6503ac198ec2bf98d4df0ce2p-1,
+    -0x1.4618fe408b57ep-1
+  },
+  { // Entry 126
+    0x1.4f14e08c88501827cbe80379c7e7c8c3p-2,
+    0x1.495f61b2c806cp-2
+  },
+  { // Entry 127
+    -0x1.4f14e08c88501827cbe80379c7e7c8c3p-2,
+    -0x1.495f61b2c806cp-2
+  },
+  { // Entry 128
+    0x1.50000000006078000000084f22cccccdp-20,
+    0x1.5p-20
+  },
+  { // Entry 129
+    -0x1.50000000006078000000084f22cccccdp-20,
+    -0x1.5p-20
+  },
+  { // Entry 130
+    0x1.6e81c7d17d1df3beb45414ca53bc3f28p-1,
+    0x1.54c834c39835cp-1
+  },
+  { // Entry 131
+    -0x1.6e81c7d17d1df3beb45414ca53bc3f28p-1,
+    -0x1.54c834c39835cp-1
+  },
+  { // Entry 132
+    0x1.9548e9688fb2e800c466e7d893328f68p991,
+    0x1.5807dc787a5d5p9
+  },
+  { // Entry 133
+    -0x1.9548e9688fb2e800c466e7d893328f68p991,
+    -0x1.5807dc787a5d5p9
+  },
+  { // Entry 134
+    0x1.85442a2969ace4a71757c1cdd6ab1b82p1007,
+    0x1.5d8e43cd6785dp9
+  },
+  { // Entry 135
+    -0x1.85442a2969ace4a71757c1cdd6ab1b82p1007,
+    -0x1.5d8e43cd6785dp9
+  },
+  { // Entry 136
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    0x1.5dadf5d1e452cp9
+  },
+  { // Entry 137
+    -0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    -0x1.5dadf5d1e452cp9
+  },
+  { // Entry 138
+    0x1.6487aa6e34cb57fefbc4f4ef7b7281efp-2,
+    0x1.5db17c4a60fe4p-2
+  },
+  { // Entry 139
+    -0x1.6487aa6e34cb57fefbc4f4ef7b7281efp-2,
+    -0x1.5db17c4a60fe4p-2
+  },
+  { // Entry 140
+    0x1.edcb14879613e80176087c1a76dec97cp1008,
+    0x1.5e056ed40e56ep9
+  },
+  { // Entry 141
+    -0x1.edcb14879613e80176087c1a76dec97cp1008,
+    -0x1.5e056ed40e56ep9
+  },
+  { // Entry 142
+    0x1.6093d5bf2580f00bcdc6c88ac35d2640p-6,
+    0x1.608cdeb3ec111p-6
+  },
+  { // Entry 143
+    -0x1.6093d5bf2580f00bcdc6c88ac35d2640p-6,
+    -0x1.608cdeb3ec111p-6
+  },
+  { // Entry 144
+    0x1.614e81af3113300dfbdf1ed60454760dp-6,
+    0x1.61477f8e69928p-6
+  },
+  { // Entry 145
+    -0x1.614e81af3113300dfbdf1ed60454760dp-6,
+    -0x1.61477f8e69928p-6
+  },
+  { // Entry 146
+    0x1.96faa872a06aa3003f5158de9c570302p1023,
+    0x1.631f86ac0611bp9
+  },
+  { // Entry 147
+    -0x1.96faa872a06aa3003f5158de9c570302p1023,
+    -0x1.631f86ac0611bp9
+  },
+  { // Entry 148
+    0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    0x1.632ba58eae071p9
+  },
+  { // Entry 149
+    -0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    -0x1.632ba58eae071p9
+  },
+  { // Entry 150
+    0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    0x1.633ce8fb9f771p9
+  },
+  { // Entry 151
+    -0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    -0x1.633ce8fb9f771p9
+  },
+  { // Entry 152
+    0x1.fffffffff093ae594ed7508a02429436p1023,
+    0x1.633ce8fb9f840p9
+  },
+  { // Entry 153
+    -0x1.fffffffff093ae594ed7508a02429436p1023,
+    -0x1.633ce8fb9f840p9
+  },
+  { // Entry 154
+    0x1.fffffffff713ae594eafc080a48289f9p1023,
+    0x1.633ce8fb9f85ap9
+  },
+  { // Entry 155
+    -0x1.fffffffff713ae594eafc080a48289f9p1023,
+    -0x1.633ce8fb9f85ap9
+  },
+  { // Entry 156
+    0x1.63ceae09cb498fefee897d9d09f0f101p-6,
+    0x1.63c7858c9e520p-6
+  },
+  { // Entry 157
+    -0x1.63ceae09cb498fefee897d9d09f0f101p-6,
+    -0x1.63c7858c9e520p-6
+  },
+  { // Entry 158
+    0x1.650506712af37ff54f81db8832a797e9p-6,
+    0x1.64fdcb29465a9p-6
+  },
+  { // Entry 159
+    -0x1.650506712af37ff54f81db8832a797e9p-6,
+    -0x1.64fdcb29465a9p-6
+  },
+  { // Entry 160
+    0x1.8465153de7c007fffdec1cebc40841f7p-1,
+    0x1.66666666d5da3p-1
+  },
+  { // Entry 161
+    -0x1.8465153de7c007fffdec1cebc40841f7p-1,
+    -0x1.66666666d5da3p-1
+  },
+  { // Entry 162
+    0x1.f2056a8752c0a54d0803a9f0c00baf5ep0,
+    0x1.6b4p0
+  },
+  { // Entry 163
+    -0x1.f2056a8752c0a54d0803a9f0c00baf5ep0,
+    -0x1.6b4p0
+  },
+  { // Entry 164
+    0x1.f54f8eaffc4348da8305aef164c3ba94p0,
+    0x1.6ccp0
+  },
+  { // Entry 165
+    -0x1.f54f8eaffc4348da8305aef164c3ba94p0,
+    -0x1.6ccp0
+  },
+  { // Entry 166
+    0x1.71e202c00c2319229a5b86f0f26cabb1p-7,
+    0x1.71ep-7
+  },
+  { // Entry 167
+    -0x1.71e202c00c2319229a5b86f0f26cabb1p-7,
+    -0x1.71ep-7
+  },
+  { // Entry 168
+    0x1.773253dd3f311874a2f0c80764abf42dp-8,
+    0x1.7731cd8b74641p-8
+  },
+  { // Entry 169
+    -0x1.773253dd3f311874a2f0c80764abf42dp-8,
+    -0x1.7731cd8b74641p-8
+  },
+  { // Entry 170
+    0x1.a08a89e90462985ff5cdbef5be2c143ep-1,
+    0x1.7c874423b4655p-1
+  },
+  { // Entry 171
+    -0x1.a08a89e90462985ff5cdbef5be2c143ep-1,
+    -0x1.7c874423b4655p-1
+  },
+  { // Entry 172
+    0x1.808fd7f5059e47fed3be0eaf1b9815bdp-4,
+    0x1.7fffc7fffffffp-4
+  },
+  { // Entry 173
+    -0x1.808fd7f5059e47fed3be0eaf1b9815bdp-4,
+    -0x1.7fffc7fffffffp-4
+  },
+  { // Entry 174
+    0x1.804bf5b40d34e7d143ae427670a1c115p-5,
+    0x1.8027e9757bf31p-5
+  },
+  { // Entry 175
+    -0x1.804bf5b40d34e7d143ae427670a1c115p-5,
+    -0x1.8027e9757bf31p-5
+  },
+  { // Entry 176
+    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    0x1.820d92fc4b42ap8
+  },
+  { // Entry 177
+    -0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    -0x1.820d92fc4b42ap8
+  },
+  { // Entry 178
+    0x1.88665ffaada937dd93491498f2ee9defp-5,
+    0x1.884p-5
+  },
+  { // Entry 179
+    -0x1.88665ffaada937dd93491498f2ee9defp-5,
+    -0x1.884p-5
+  },
+  { // Entry 180
+    0x1.b4698d92404057ff9724122622082863p-1,
+    0x1.8bcbf70469a4cp-1
+  },
+  { // Entry 181
+    -0x1.b4698d92404057ff9724122622082863p-1,
+    -0x1.8bcbf70469a4cp-1
+  },
+  { // Entry 182
+    0x1.f612c0c32a0c700d32addc4c6c2b76c3p7,
+    0x1.8e0p2
+  },
+  { // Entry 183
+    -0x1.f612c0c32a0c700d32addc4c6c2b76c3p7,
+    -0x1.8e0p2
+  },
+  { // Entry 184
+    0x1.bc98715aec56c731186b8ab8deb14510p-1,
+    0x1.920p-1
+  },
+  { // Entry 185
+    -0x1.bc98715aec56c731186b8ab8deb14510p-1,
+    -0x1.920p-1
+  },
+  { // Entry 186
+    0x1.94618fa9fe2ddce9a5820eacd73ea447p-8,
+    0x1.9460e77feba40p-8
+  },
+  { // Entry 187
+    -0x1.94618fa9fe2ddce9a5820eacd73ea447p-8,
+    -0x1.9460e77feba40p-8
+  },
+  { // Entry 188
+    0x1.c6b5d3ca60e64ffffe54e7a9d176a802p-1,
+    0x1.9999999a10d54p-1
+  },
+  { // Entry 189
+    -0x1.c6b5d3ca60e64ffffe54e7a9d176a802p-1,
+    -0x1.9999999a10d54p-1
+  },
+  { // Entry 190
+    0x1.9c560cd3fc44bffffe366df58ed96becp-3,
+    0x1.9999999a33ce2p-3
+  },
+  { // Entry 191
+    -0x1.9c560cd3fc44bffffe366df58ed96becp-3,
+    -0x1.9999999a33ce2p-3
+  },
+  { // Entry 192
+    0x1.9a48733871434800020cf29985e49f30p-4,
+    0x1.9999999a54528p-4
+  },
+  { // Entry 193
+    -0x1.9a48733871434800020cf29985e49f30p-4,
+    -0x1.9999999a54528p-4
+  },
+  { // Entry 194
+    0x1.c6b5d3cb11239800020efc8821633bdep-1,
+    0x1.9999999a949b7p-1
+  },
+  { // Entry 195
+    -0x1.c6b5d3cb11239800020efc8821633bdep-1,
+    -0x1.9999999a949b7p-1
+  },
+  { // Entry 196
+    0x1.9c560cd481e637fffe01fbfdad836d2fp-3,
+    0x1.9999999ab6ceap-3
+  },
+  { // Entry 197
+    -0x1.9c560cd481e637fffe01fbfdad836d2fp-3,
+    -0x1.9999999ab6ceap-3
+  },
+  { // Entry 198
+    0x1.9c560cd64ac02ffffe536624b3aa885fp-3,
+    0x1.9999999c76abep-3
+  },
+  { // Entry 199
+    -0x1.9c560cd64ac02ffffe536624b3aa885fp-3,
+    -0x1.9999999c76abep-3
+  },
+  { // Entry 200
+    0x1.9c560cd6ec5c70000171ee4afa616629p-3,
+    0x1.9999999d151a4p-3
+  },
+  { // Entry 201
+    -0x1.9c560cd6ec5c70000171ee4afa616629p-3,
+    -0x1.9999999d151a4p-3
+  },
+  { // Entry 202
+    0x1.a5573f0e20f1a905add879f99041019fp-2,
+    0x1.9a468b4ef44ffp-2
+  },
+  { // Entry 203
+    -0x1.a5573f0e20f1a905add879f99041019fp-2,
+    -0x1.9a468b4ef44ffp-2
+  },
+  { // Entry 204
+    0x1.ffffffffffed457a42e161456cf862b2p590,
+    0x1.9a57d76d152fcp8
+  },
+  { // Entry 205
+    -0x1.ffffffffffed457a42e161456cf862b2p590,
+    -0x1.9a57d76d152fcp8
+  },
+  { // Entry 206
+    0x1.aebdc6208c1248b2ffbba5f783b92a1bp-2,
+    0x1.a2f46ea5f9049p-2
+  },
+  { // Entry 207
+    -0x1.aebdc6208c1248b2ffbba5f783b92a1bp-2,
+    -0x1.a2f46ea5f9049p-2
+  },
+  { // Entry 208
+    0x1.d64a3c2bfdf088565dad6aa8d6e58f04p-1,
+    0x1.a5294a5294a50p-1
+  },
+  { // Entry 209
+    -0x1.d64a3c2bfdf088565dad6aa8d6e58f04p-1,
+    -0x1.a5294a5294a50p-1
+  },
+  { // Entry 210
+    0x1.b000000000cd080000001d316399999bp-20,
+    0x1.bp-20
+  },
+  { // Entry 211
+    -0x1.b000000000cd080000001d316399999bp-20,
+    -0x1.bp-20
+  },
+  { // Entry 212
+    0x1.b6206a36aff4e7f3be1967dee6c19c2dp-3,
+    0x1.b2da0d9913589p-3
+  },
+  { // Entry 213
+    -0x1.b6206a36aff4e7f3be1967dee6c19c2dp-3,
+    -0x1.b2da0d9913589p-3
+  },
+  { // Entry 214
+    0x1.bd28b272834a2ff3d79fb12e37a18714p-6,
+    0x1.bd1aae2323510p-6
+  },
+  { // Entry 215
+    -0x1.bd28b272834a2ff3d79fb12e37a18714p-6,
+    -0x1.bd1aae2323510p-6
+  },
+  { // Entry 216
+    0x1.f8c25081d25d19d0d73bf466555bef04p-1,
+    0x1.be2p-1
+  },
+  { // Entry 217
+    -0x1.f8c25081d25d19d0d73bf466555bef04p-1,
+    -0x1.be2p-1
+  },
+  { // Entry 218
+    0x1.cc8f25f94323284f6d6454d3f3699088p-2,
+    0x1.be4b949799901p-2
+  },
+  { // Entry 219
+    -0x1.cc8f25f94323284f6d6454d3f3699088p-2,
+    -0x1.be4b949799901p-2
+  },
+  { // Entry 220
+    0x1.068f1b6fd97a97ffc554f2db188f9117p4,
+    0x1.bef89775b5e88p1
+  },
+  { // Entry 221
+    -0x1.068f1b6fd97a97ffc554f2db188f9117p4,
+    -0x1.bef89775b5e88p1
+  },
+  { // Entry 222
+    0x1.ca73ad17d1f0afff8b6da0d520741b26p-4,
+    0x1.c98p-4
+  },
+  { // Entry 223
+    -0x1.ca73ad17d1f0afff8b6da0d520741b26p-4,
+    -0x1.c98p-4
+  },
+  { // Entry 224
+    0x1.742768cc82d3b80460f95c20f53171c3p1,
+    0x1.c9eca0f325b42p0
+  },
+  { // Entry 225
+    -0x1.742768cc82d3b80460f95c20f53171c3p1,
+    -0x1.c9eca0f325b42p0
+  },
+  { // Entry 226
+    0x1.dc0aa0025b62b7fe5b0c13b7cc65bbc6p-2,
+    0x1.cc6p-2
+  },
+  { // Entry 227
+    -0x1.dc0aa0025b62b7fe5b0c13b7cc65bbc6p-2,
+    -0x1.cc6p-2
+  },
+  { // Entry 228
+    0x1.06c9ccd626cd8800020eb9e544490f6ap0,
+    0x1.cccccccd69451p-1
+  },
+  { // Entry 229
+    -0x1.06c9ccd626cd8800020eb9e544490f6ap0,
+    -0x1.cccccccd69451p-1
+  },
+  { // Entry 230
+    0x1.d862eb5cde4b0800f5b46008a4384f2ep-5,
+    0x1.d82p-5
+  },
+  { // Entry 231
+    -0x1.d862eb5cde4b0800f5b46008a4384f2ep-5,
+    -0x1.d82p-5
+  },
+  { // Entry 232
+    0x1.7b150909141397ff00cd2cb5dcdfc798p344,
+    0x1.df0e8443492b4p7
+  },
+  { // Entry 233
+    -0x1.7b150909141397ff00cd2cb5dcdfc798p344,
+    -0x1.df0e8443492b4p7
+  },
+  { // Entry 234
+    0x1.f370cce952a62835ca29e12b2844ca82p-2,
+    0x1.e18p-2
+  },
+  { // Entry 235
+    -0x1.f370cce952a62835ca29e12b2844ca82p-2,
+    -0x1.e18p-2
+  },
+  { // Entry 236
+    0x1.e6123f12db92680282920746b67b9489p-6,
+    0x1.e60p-6
+  },
+  { // Entry 237
+    -0x1.e6123f12db92680282920746b67b9489p-6,
+    -0x1.e60p-6
+  },
+  { // Entry 238
+    0x1.fc59700f23fc880595b286d94cb1161dp-2,
+    0x1.e97e4ca09cde7p-2
+  },
+  { // Entry 239
+    -0x1.fc59700f23fc880595b286d94cb1161dp-2,
+    -0x1.e97e4ca09cde7p-2
+  },
+  { // Entry 240
+    0x1.a8a3582361d82800005ec0718a5e8e7cp1,
+    0x1.ea11b1afdc907p0
+  },
+  { // Entry 241
+    -0x1.a8a3582361d82800005ec0718a5e8e7cp1,
+    -0x1.ea11b1afdc907p0
+  },
+  { // Entry 242
+    0x1.f4592b2dde8cf3813b817358e271e980p-3,
+    0x1.ef8p-3
+  },
+  { // Entry 243
+    -0x1.f4592b2dde8cf3813b817358e271e980p-3,
+    -0x1.ef8p-3
+  },
+  { // Entry 244
+    0x1.48f609e7b6aecf059a4b8c484c3bc435p21,
+    0x1.effffffffffffp3
+  },
+  { // Entry 245
+    -0x1.48f609e7b6aecf059a4b8c484c3bc435p21,
+    -0x1.effffffffffffp3
+  },
+  { // Entry 246
+    0x1.dbca9263f840fca48450e408fa36b56bp177,
+    0x1.effffffffffffp6
+  },
+  { // Entry 247
+    -0x1.dbca9263f840fca48450e408fa36b56bp177,
+    -0x1.effffffffffffp6
+  },
+  { // Entry 248
+    0x1.d3764167d84c26146f109714eda9a19ep715,
+    0x1.f0e540ea02272p8
+  },
+  { // Entry 249
+    -0x1.d3764167d84c26146f109714eda9a19ep715,
+    -0x1.f0e540ea02272p8
+  },
+  { // Entry 250
+    0x1.f44f7cd78c0c8d0cfdd38268b4c1b21ap-5,
+    0x1.f3fffffffffffp-5
+  },
+  { // Entry 251
+    -0x1.f44f7cd78c0c8d0cfdd38268b4c1b21ap-5,
+    -0x1.f3fffffffffffp-5
+  },
+  { // Entry 252
+    0x1.f4e4fe44a20e73bbcddcba0e9c46e803p-7,
+    0x1.f4ep-7
+  },
+  { // Entry 253
+    -0x1.f4e4fe44a20e73bbcddcba0e9c46e803p-7,
+    -0x1.f4ep-7
+  },
+  { // Entry 254
+    0x1.f4fd444ef4c02273e0c0b56c3b6b18f4p-11,
+    0x1.f4fd3f4fd3f41p-11
+  },
+  { // Entry 255
+    -0x1.f4fd444ef4c02273e0c0b56c3b6b18f4p-11,
+    -0x1.f4fd3f4fd3f41p-11
+  },
+  { // Entry 256
+    0x1.f776c257a56b780187bf905e80418279p-9,
+    0x1.f7767134f4c72p-9
+  },
+  { // Entry 257
+    -0x1.f776c257a56b780187bf905e80418279p-9,
+    -0x1.f7767134f4c72p-9
+  },
+  { // Entry 258
+    0x1.f78e0512e112b1c915f33b6d0094cbdfp-11,
+    0x1.f78dfffffffffp-11
+  },
+  { // Entry 259
+    -0x1.f78e0512e112b1c915f33b6d0094cbdfp-11,
+    -0x1.f78dfffffffffp-11
+  },
+  { // Entry 260
+    0x1.fd1a4703ffc8e2c09ee2d3142d879d53p-3,
+    0x1.f7fffffffffffp-3
+  },
+  { // Entry 261
+    -0x1.fd1a4703ffc8e2c09ee2d3142d879d53p-3,
+    -0x1.f7fffffffffffp-3
+  },
+  { // Entry 262
+    0x1.fd2b1321689993d9e7a4f5cc42e417e0p-3,
+    0x1.f8104d180ef13p-3
+  },
+  { // Entry 263
+    -0x1.fd2b1321689993d9e7a4f5cc42e417e0p-3,
+    -0x1.f8104d180ef13p-3
+  },
+  { // Entry 264
+    0x1.fa8247c8342301fdbf919432600eef6bp-11,
+    0x1.fa82429e54867p-11
+  },
+  { // Entry 265
+    -0x1.fa8247c8342301fdbf919432600eef6bp-11,
+    -0x1.fa82429e54867p-11
+  },
+  { // Entry 266
+    0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    0x1.fdfffffffffffp5
+  },
+  { // Entry 267
+    -0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    -0x1.fdfffffffffffp5
+  },
+  { // Entry 268
+    0x1.fef54cde11851d4db7938ee57e080486p-7,
+    0x1.feeffffffffffp-7
+  },
+  { // Entry 269
+    -0x1.fef54cde11851d4db7938ee57e080486p-7,
+    -0x1.feeffffffffffp-7
+  },
+  { // Entry 270
+    0x1.0a8ddcf177d1eb7da9052d4b680c93e4p-1,
+    0x1.ff8ffffffffffp-2
+  },
+  { // Entry 271
+    -0x1.0a8ddcf177d1eb7da9052d4b680c93e4p-1,
+    -0x1.ff8ffffffffffp-2
+  },
+  { // Entry 272
+    0x1.ffb5499b99f503b876c9233146b88610p-6,
+    0x1.ff9ffffffffffp-6
+  },
+  { // Entry 273
+    -0x1.ffb5499b99f503b876c9233146b88610p-6,
+    -0x1.ff9ffffffffffp-6
+  },
+  { // Entry 274
+    0x1.ffd00553d57d8679faafbb417929037bp-11,
+    0x1.ffcffffffffffp-11
+  },
+  { // Entry 275
+    -0x1.ffd00553d57d8679faafbb417929037bp-11,
+    -0x1.ffcffffffffffp-11
+  },
+  { // Entry 276
+    0x1.738796c76ddd11a4fad67bda6a85c0a3p10,
+    0x1.ffcffffffffffp2
+  },
+  { // Entry 277
+    -0x1.738796c76ddd11a4fad67bda6a85c0a3p10,
+    -0x1.ffcffffffffffp2
+  },
+  { // Entry 278
+    0x1.3fd752cfca481ff79679f71c8aad6234p91,
+    0x1.ffeffffffffffp5
+  },
+  { // Entry 279
+    -0x1.3fd752cfca481ff79679f71c8aad6234p91,
+    -0x1.ffeffffffffffp5
+  },
+  { // Entry 280
+    0x1.fffc1154d51a88ed085860dce45cd0f6p-10,
+    0x1.fffbfbfffffffp-10
+  },
+  { // Entry 281
+    -0x1.fffc1154d51a88ed085860dce45cd0f6p-10,
+    -0x1.fffbfbfffffffp-10
+  },
+  { // Entry 282
+    0x1.0acb07d19f2eec122a06e05f2c4a0de4p-1,
+    0x1.fffc7ffffffffp-2
+  },
+  { // Entry 283
+    -0x1.0acb07d19f2eec122a06e05f2c4a0de4p-1,
+    -0x1.fffc7ffffffffp-2
+  },
+  { // Entry 284
+    0x1.00a9094ee88097ff3d5673552bc2eab6p-3,
+    0x1.fffc7ffffffffp-4
+  },
+  { // Entry 285
+    -0x1.00a9094ee88097ff3d5673552bc2eab6p-3,
+    -0x1.fffc7ffffffffp-4
+  },
+  { // Entry 286
+    0x1.7495e977202177ec68508f6f5a5b9165p10,
+    0x1.fffe7ffffffffp2
+  },
+  { // Entry 287
+    -0x1.7495e977202177ec68508f6f5a5b9165p10,
+    -0x1.fffe7ffffffffp2
+  },
+  { // Entry 288
+    0x1.b4a0165d618bc7fe4fd5aa6fcac302c1p4,
+    0x1.fffefffffffffp1
+  },
+  { // Entry 289
+    -0x1.b4a0165d618bc7fe4fd5aa6fcac302c1p4,
+    -0x1.fffefffffffffp1
+  },
+  { // Entry 290
+    0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    0x1.fffffdfffffffp6
+  },
+  { // Entry 291
+    -0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    -0x1.fffffdfffffffp6
+  },
+  { // Entry 292
+    0x1.1f43fcc441800800fcf1d836d2c62f72p45,
+    0x1.fffffffff97d6p4
+  },
+  { // Entry 293
+    -0x1.1f43fcc441800800fcf1d836d2c62f72p45,
+    -0x1.fffffffff97d6p4
+  },
+  { // Entry 294
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 295
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 296
+    0x1.9476504ba82057f69310608c30e76cebp737,
+    0x1.ffffffffffffep8
+  },
+  { // Entry 297
+    -0x1.9476504ba82057f69310608c30e76cebp737,
+    -0x1.ffffffffffffep8
+  },
+  { // Entry 298
+    0.0,
+    0.0
+  },
+  { // Entry 299
+    0x1.24d1fdb0fdc49fa1ed2d33be6d840c75p-4,
+    0x1.2492492492492p-4
+  },
+  { // Entry 300
+    -0x1.24d1fdb0fdc49fa1ed2d33be6d840c75p-4,
+    -0x1.2492492492492p-4
+  },
+  { // Entry 301
+    0x1.25914d4754aeca5885ba953dbac88d8fp-3,
+    0x1.2492492492492p-3
+  },
+  { // Entry 302
+    -0x1.25914d4754aeca5885ba953dbac88d8fp-3,
+    -0x1.2492492492492p-3
+  },
+  { // Entry 303
+    0x1.ba3934de293068e82220c3704c5750b7p-3,
+    0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 304
+    -0x1.ba3934de293068e82220c3704c5750b7p-3,
+    -0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 305
+    0x1.28917a35f59b8990911b05edbc6f6ba1p-2,
+    0x1.2492492492492p-2
+  },
+  { // Entry 306
+    -0x1.28917a35f59b8990911b05edbc6f6ba1p-2,
+    -0x1.2492492492492p-2
+  },
+  { // Entry 307
+    0x1.7589dee6de0a2ec648852490e9ae54e2p-2,
+    0x1.6db6db6db6db6p-2
+  },
+  { // Entry 308
+    -0x1.7589dee6de0a2ec648852490e9ae54e2p-2,
+    -0x1.6db6db6db6db6p-2
+  },
+  { // Entry 309
+    0x1.c46a5bcd3c2c368c2591b8bba7e24256p-2,
+    0x1.b6db6db6db6dap-2
+  },
+  { // Entry 310
+    -0x1.c46a5bcd3c2c368c2591b8bba7e24256p-2,
+    -0x1.b6db6db6db6dap-2
+  },
+  { // Entry 311
+    0x1.0acd00fe63b95a9896032c78de2323c6p-1,
+    0x1.ffffffffffffep-2
+  },
+  { // Entry 312
+    -0x1.0acd00fe63b95a9896032c78de2323c6p-1,
+    -0x1.ffffffffffffep-2
+  },
+  { // Entry 313
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.0p-1
+  },
+  { // Entry 314
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.0p-1
+  },
+  { // Entry 315
+    0x1.34c1737f26250058df17aa0da89aa5fcp-1,
+    0x1.2492492492492p-1
+  },
+  { // Entry 316
+    -0x1.34c1737f26250058df17aa0da89aa5fcp-1,
+    -0x1.2492492492492p-1
+  },
+  { // Entry 317
+    0x1.604957b6e9223ab9f0acd5cd087d9d4bp-1,
+    0x1.4924924924924p-1
+  },
+  { // Entry 318
+    -0x1.604957b6e9223ab9f0acd5cd087d9d4bp-1,
+    -0x1.4924924924924p-1
+  },
+  { // Entry 319
+    0x1.8d9d8f1f9ecb929e09103f190149433dp-1,
+    0x1.6db6db6db6db6p-1
+  },
+  { // Entry 320
+    -0x1.8d9d8f1f9ecb929e09103f190149433dp-1,
+    -0x1.6db6db6db6db6p-1
+  },
+  { // Entry 321
+    0x1.bcf954b2503820857f4dbefa036f8e5ep-1,
+    0x1.9249249249248p-1
+  },
+  { // Entry 322
+    -0x1.bcf954b2503820857f4dbefa036f8e5ep-1,
+    -0x1.9249249249248p-1
+  },
+  { // Entry 323
+    0x1.ee9a8a4c3c72bcabcb7b2924d314efa2p-1,
+    0x1.b6db6db6db6dap-1
+  },
+  { // Entry 324
+    -0x1.ee9a8a4c3c72bcabcb7b2924d314efa2p-1,
+    -0x1.b6db6db6db6dap-1
+  },
+  { // Entry 325
+    0x1.116104c5878d4cf53fe2c1f3896ec672p0,
+    0x1.db6db6db6db6cp-1
+  },
+  { // Entry 326
+    -0x1.116104c5878d4cf53fe2c1f3896ec672p0,
+    -0x1.db6db6db6db6cp-1
+  },
+  { // Entry 327
+    0x1.2cd9fc44eb980cf78cf76e89b69a3e88p0,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 328
+    -0x1.2cd9fc44eb980cf78cf76e89b69a3e88p0,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 329
+    0.0,
+    0.0
+  },
+  { // Entry 330
+    0x1.18e1e0472274e67654d0f855c36e861dp-6,
+    0x1.18de5ab277f45p-6
+  },
+  { // Entry 331
+    -0x1.18e1e0472274e67654d0f855c36e861dp-6,
+    -0x1.18de5ab277f45p-6
+  },
+  { // Entry 332
+    0x1.18ec712dd49a7583cfe81c5dccfd99b4p-5,
+    0x1.18de5ab277f45p-5
+  },
+  { // Entry 333
+    -0x1.18ec712dd49a7583cfe81c5dccfd99b4p-5,
+    -0x1.18de5ab277f45p-5
+  },
+  { // Entry 334
+    0x1.a57d14d0fcc06c297b511eb105c39b51p-5,
+    0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 335
+    -0x1.a57d14d0fcc06c297b511eb105c39b51p-5,
+    -0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 336
+    0x1.1916b72b2648d65f042e701b14a371ddp-4,
+    0x1.18de5ab277f45p-4
+  },
+  { // Entry 337
+    -0x1.1916b72b2648d65f042e701b14a371ddp-4,
+    -0x1.18de5ab277f45p-4
+  },
+  { // Entry 338
+    0x1.5f8409b4e2d18ada55848296f71484b2p-4,
+    0x1.5f15f15f15f16p-4
+  },
+  { // Entry 339
+    -0x1.5f8409b4e2d18ada55848296f71484b2p-4,
+    -0x1.5f15f15f15f16p-4
+  },
+  { // Entry 340
+    0x1.a60bce73024b0ef37175d31aa5a941e6p-4,
+    0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 341
+    -0x1.a60bce73024b0ef37175d31aa5a941e6p-4,
+    -0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 342
+    0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 343
+    -0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 344
+    0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 345
+    -0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 346
+    0x1.02243ce0549f980dc7c7d32c56687b61p-3,
+    0x1.01767dce434aap-3
+  },
+  { // Entry 347
+    -0x1.02243ce0549f980dc7c7d32c56687b61p-3,
+    -0x1.01767dce434aap-3
+  },
+  { // Entry 348
+    0x1.0df0f841fd4a69998703d2ffbf0e1544p-3,
+    0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 349
+    -0x1.0df0f841fd4a69998703d2ffbf0e1544p-3,
+    -0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 350
+    0x1.19bff54d4d1ca252438bfcad4485bbeep-3,
+    0x1.18de5ab277f46p-3
+  },
+  { // Entry 351
+    -0x1.19bff54d4d1ca252438bfcad4485bbeep-3,
+    -0x1.18de5ab277f46p-3
+  },
+  { // Entry 352
+    0x1.25914d4754aeeaac41a8543c0e5f84bfp-3,
+    0x1.2492492492494p-3
+  },
+  { // Entry 353
+    -0x1.25914d4754aeeaac41a8543c0e5f84bfp-3,
+    -0x1.2492492492494p-3
+  },
+  { // Entry 354
+    0x1.3165197a2ed9cb0dc90f9bb136a99057p-3,
+    0x1.30463796ac9e2p-3
+  },
+  { // Entry 355
+    -0x1.3165197a2ed9cb0dc90f9bb136a99057p-3,
+    -0x1.30463796ac9e2p-3
+  },
+  { // Entry 356
+    0x1.3d3b733536d3f9e48c1626776c18450fp-3,
+    0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 357
+    -0x1.3d3b733536d3f9e48c1626776c18450fp-3,
+    -0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 358
+    0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 359
+    -0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 360
+    0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 361
+    -0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 362
+    0x1.227b2f27e6efe03d72b2c311d29c7884p-2,
+    0x1.1eb851eb851ecp-2
+  },
+  { // Entry 363
+    -0x1.227b2f27e6efe03d72b2c311d29c7884p-2,
+    -0x1.1eb851eb851ecp-2
+  },
+  { // Entry 364
+    0x1.a49c41f850ed2680ee94da3183c89a52p-2,
+    0x1.999999999999ap-2
+  },
+  { // Entry 365
+    -0x1.a49c41f850ed2680ee94da3183c89a52p-2,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 366
+    0x1.1666dd8c17ac9986d3cd4018364fc2ecp-1,
+    0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 367
+    -0x1.1666dd8c17ac9986d3cd4018364fc2ecp-1,
+    -0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 368
+    0x1.5e832275691f29c754a69f08a0bda060p-1,
+    0x1.47ae147ae147bp-1
+  },
+  { // Entry 369
+    -0x1.5e832275691f29c754a69f08a0bda060p-1,
+    -0x1.47ae147ae147bp-1
+  },
+  { // Entry 370
+    0x1.abad155b6751a697130d8faafe9d512cp-1,
+    0x1.851eb851eb852p-1
+  },
+  { // Entry 371
+    -0x1.abad155b6751a697130d8faafe9d512cp-1,
+    -0x1.851eb851eb852p-1
+  },
+  { // Entry 372
+    0x1.ff0182a062c855926fe6373f9b3afd58p-1,
+    0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 373
+    -0x1.ff0182a062c855926fe6373f9b3afd58p-1,
+    -0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 374
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 375
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 376
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 377
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 378
+    0x1.c034a7cd6ce9ade4f611fdd05d109cf6p7,
+    0x1.86bc88cbf1b67p2
+  },
+  { // Entry 379
+    -0x1.c034a7cd6ce9ade4f611fdd05d109cf6p7,
+    -0x1.86bc88cbf1b67p2
+  },
+  { // Entry 380
+    0x1.20af6cb9859eb23e91e63c28d18b0d0ap15,
+    0x1.66bc88cbf1b67p3
+  },
+  { // Entry 381
+    -0x1.20af6cb9859eb23e91e63c28d18b0d0ap15,
+    -0x1.66bc88cbf1b67p3
+  },
+  { // Entry 382
+    0x1.73e096cf57afce7adf9f1b2a216a5db5p22,
+    0x1.050d6698f548dp4
+  },
+  { // Entry 383
+    -0x1.73e096cf57afce7adf9f1b2a216a5db5p22,
+    -0x1.050d6698f548dp4
+  },
+  { // Entry 384
+    0x1.df0b13a84513e2ceb180507c54c5b904p29,
+    0x1.56bc88cbf1b67p4
+  },
+  { // Entry 385
+    -0x1.df0b13a84513e2ceb180507c54c5b904p29,
+    -0x1.56bc88cbf1b67p4
+  },
+  { // Entry 386
+    0x1.348bc1e018bc593ce2f9d1bc0f37e14fp37,
+    0x1.a86baafeee241p4
+  },
+  { // Entry 387
+    -0x1.348bc1e018bc593ce2f9d1bc0f37e14fp37,
+    -0x1.a86baafeee241p4
+  },
+  { // Entry 388
+    0x1.8d761a3398942448ea796c65748a869ep44,
+    0x1.fa1acd31ea91bp4
+  },
+  { // Entry 389
+    -0x1.8d761a3398942448ea796c65748a869ep44,
+    -0x1.fa1acd31ea91bp4
+  },
+  { // Entry 390
+    0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 391
+    -0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 392
+    0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 393
+    -0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 394
+    0x1.fffffffdffffca86c389578647f59234p14,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 395
+    -0x1.fffffffdffffca86c389578647f59234p14,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 396
+    0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 397
+    -0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 398
+    0x1.fffdffffffff6542c70828449eb21cd0p6,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 399
+    -0x1.fffdffffffff6542c70828449eb21cd0p6,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 400
+    0x1.fffdffffffffe5434708284488030bf1p6,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 401
+    -0x1.fffdffffffffe5434708284488030bf1p6,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 402
+    0x1.fffe000000006543c70828449153db11p6,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 403
+    -0x1.fffe000000006543c70828449153db11p6,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 404
+    0x1.fdffffffffffb254529345a3261b51eep2,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 405
+    -0x1.fdffffffffffb254529345a3261b51eep2,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 406
+    0x1.fdfffffffffff294529345a3207533d4p2,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 407
+    -0x1.fdfffffffffff294529345a3207533d4p2,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 408
+    0x1.fe000000000032d4529345a322c715bap2,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 409
+    -0x1.fe000000000032d4529345a322c715bap2,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 410
+    0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 411
+    -0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 412
+    0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 413
+    -0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 414
+    0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 415
+    -0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 416
+    0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 417
+    -0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 418
+    0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 419
+    -0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 420
+    0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 421
+    -0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 422
+    0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 423
+    -0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 424
+    0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 425
+    -0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 426
+    0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 427
+    -0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 428
+    0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 429
+    -0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 430
+    0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 431
+    -0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 432
+    0x1.64ab8f61134fac828131bf352af58253p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 433
+    -0x1.64ab8f61134fac828131bf352af58253p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 434
+    0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 435
+    -0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 436
+    0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 437
+    -0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 438
+    0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 439
+    -0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 440
+    0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 441
+    -0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 442
+    0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 443
+    -0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 444
+    0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 445
+    -0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 446
+    0x1.62eb4abcc5a7fb2748b0114da83216c8p-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 447
+    -0x1.62eb4abcc5a7fb2748b0114da83216c8p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 448
+    0x1.62eb4abcc5a80b283eb077a1b2694ed2p-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 449
+    -0x1.62eb4abcc5a80b283eb077a1b2694ed2p-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 450
+    0x1.62eb4abcc5a81b2934b0ddf5bca09d0bp-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 451
+    -0x1.62eb4abcc5a81b2934b0ddf5bca09d0bp-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 452
+    -0x1.000000000000ca85c3898cffd1be6e61p31,
+    -0x1.62e42fefa39f0p4
+  },
+  { // Entry 453
+    0x1.000000000000ca85c3898cffd1be6e61p31,
+    0x1.62e42fefa39f0p4
+  },
+  { // Entry 454
+    -0x1.ffffffffffff950b871319ff0e6d55b0p30,
+    -0x1.62e42fefa39efp4
+  },
+  { // Entry 455
+    0x1.ffffffffffff950b871319ff0e6d55b0p30,
+    0x1.62e42fefa39efp4
+  },
+  { // Entry 456
+    -0x1.fffffffffffd950b87131a00795dce9dp30,
+    -0x1.62e42fefa39eep4
+  },
+  { // Entry 457
+    0x1.fffffffffffd950b87131a00795dce9dp30,
+    0x1.62e42fefa39eep4
+  },
+  { // Entry 458
+    -0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 459
+    0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 460
+    -0x1.fffffffdffffca86c389578647f59234p14,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 461
+    0x1.fffffffdffffca86c389578647f59234p14,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 462
+    -0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 463
+    0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 464
+    -0x1.fffe000000006543c70828449153db11p6,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 465
+    0x1.fffe000000006543c70828449153db11p6,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 466
+    -0x1.fffdffffffffe5434708284488030bf1p6,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 467
+    0x1.fffdffffffffe5434708284488030bf1p6,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 468
+    -0x1.fffdffffffff6542c70828449eb21cd0p6,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 469
+    0x1.fffdffffffff6542c70828449eb21cd0p6,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 470
+    -0x1.fe000000000032d4529345a322c715bap2,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 471
+    0x1.fe000000000032d4529345a322c715bap2,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 472
+    -0x1.fdfffffffffff294529345a3207533d4p2,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 473
+    0x1.fdfffffffffff294529345a3207533d4p2,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 474
+    -0x1.fdffffffffffb254529345a3261b51eep2,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 475
+    0x1.fdffffffffffb254529345a3261b51eep2,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 476
+    -0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 477
+    0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 478
+    -0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 479
+    0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 480
+    -0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 481
+    0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 482
+    -0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 483
+    0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 484
+    -0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 485
+    0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 486
+    -0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 487
+    0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 488
+    -0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 489
+    0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 490
+    -0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 491
+    0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 492
+    -0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 493
+    0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 494
+    -0x1.64ab8f61134fac828131bf352af58253p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 495
+    0x1.64ab8f61134fac828131bf352af58253p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 496
+    -0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 497
+    0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 498
+    -0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 499
+    0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 500
+    -0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 501
+    0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 502
+    -0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 503
+    0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 504
+    -0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 505
+    0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 506
+    -0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 507
+    0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 508
+    -0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 509
+    0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 510
+    -0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 511
+    0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 512
+    0x1.bfeb3206958461e0cd949b740397374bp262,
+    0x1.6db6db6db6db7p7
+  },
+  { // Entry 513
+    -0x1.bfeb3206958461e0cd949b740397374bp262,
+    -0x1.6db6db6db6db7p7
+  },
+  { // Entry 514
+    0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    0x1.db6db6db6db6ep7
+  },
+  { // Entry 515
+    -0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    -0x1.db6db6db6db6ep7
+  },
+  { // Entry 516
+    0x1.10bbd304e4d53317191db80168f41e88p421,
+    0x1.2492492492492p8
+  },
+  { // Entry 517
+    -0x1.10bbd304e4d53317191db80168f41e88p421,
+    -0x1.2492492492492p8
+  },
+  { // Entry 518
+    0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    0x1.5b6db6db6db6dp8
+  },
+  { // Entry 519
+    -0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    -0x1.5b6db6db6db6dp8
+  },
+  { // Entry 520
+    0x1.4c21539572c19b59fc629129d307d9b1p579,
+    0x1.9249249249248p8
+  },
+  { // Entry 521
+    -0x1.4c21539572c19b59fc629129d307d9b1p579,
+    -0x1.9249249249248p8
+  },
+  { // Entry 522
+    0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    0x1.c924924924923p8
+  },
+  { // Entry 523
+    -0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    -0x1.c924924924923p8
+  },
+  { // Entry 524
+    0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    0x1.4492492492492p9
+  },
+  { // Entry 525
+    -0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    -0x1.4492492492492p9
+  },
+  { // Entry 526
+    0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    0x1.4924924924924p9
+  },
+  { // Entry 527
+    -0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    -0x1.4924924924924p9
+  },
+  { // Entry 528
+    0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    0x1.4db6db6db6db6p9
+  },
+  { // Entry 529
+    -0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    -0x1.4db6db6db6db6p9
+  },
+  { // Entry 530
+    0x1.0fc53c727155d9dd001733d4258e3203p975,
+    0x1.5249249249248p9
+  },
+  { // Entry 531
+    -0x1.0fc53c727155d9dd001733d4258e3203p975,
+    -0x1.5249249249248p9
+  },
+  { // Entry 532
+    0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    0x1.56db6db6db6dap9
+  },
+  { // Entry 533
+    -0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    -0x1.56db6db6db6dap9
+  },
+  { // Entry 534
+    0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    0x1.5b6db6db6db6cp9
+  },
+  { // Entry 535
+    -0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    -0x1.5b6db6db6db6cp9
+  },
+  { // Entry 536
+    HUGE_VAL,
+    0x1.76db6db6db6dbp9
+  },
+  { // Entry 537
+    -HUGE_VAL,
+    -0x1.76db6db6db6dbp9
+  },
+  { // Entry 538
+    HUGE_VAL,
+    0x1.8db6db6db6db6p9
+  },
+  { // Entry 539
+    -HUGE_VAL,
+    -0x1.8db6db6db6db6p9
+  },
+  { // Entry 540
+    HUGE_VAL,
+    0x1.a492492492491p9
+  },
+  { // Entry 541
+    -HUGE_VAL,
+    -0x1.a492492492491p9
+  },
+  { // Entry 542
+    HUGE_VAL,
+    0x1.bb6db6db6db6cp9
+  },
+  { // Entry 543
+    -HUGE_VAL,
+    -0x1.bb6db6db6db6cp9
+  },
+  { // Entry 544
+    HUGE_VAL,
+    0x1.d249249249247p9
+  },
+  { // Entry 545
+    -HUGE_VAL,
+    -0x1.d249249249247p9
+  },
+  { // Entry 546
+    HUGE_VAL,
+    0x1.e924924924922p9
+  },
+  { // Entry 547
+    -HUGE_VAL,
+    -0x1.e924924924922p9
+  },
+  { // Entry 548
+    -0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    -0x1.6p9
+  },
+  { // Entry 549
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    0x1.6p9
+  },
+  { // Entry 550
+    -0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    -0x1.5b6db6db6db6ep9
+  },
+  { // Entry 551
+    0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    0x1.5b6db6db6db6ep9
+  },
+  { // Entry 552
+    -0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    -0x1.56db6db6db6dcp9
+  },
+  { // Entry 553
+    0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    0x1.56db6db6db6dcp9
+  },
+  { // Entry 554
+    -0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    -0x1.524924924924ap9
+  },
+  { // Entry 555
+    0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    0x1.524924924924ap9
+  },
+  { // Entry 556
+    -0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    -0x1.4db6db6db6db8p9
+  },
+  { // Entry 557
+    0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    0x1.4db6db6db6db8p9
+  },
+  { // Entry 558
+    -0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    -0x1.4924924924926p9
+  },
+  { // Entry 559
+    0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    0x1.4924924924926p9
+  },
+  { // Entry 560
+    -0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    -0x1.4492492492494p9
+  },
+  { // Entry 561
+    0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    0x1.4492492492494p9
+  },
+  { // Entry 562
+    -0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    -0x1.4000000000002p9
+  },
+  { // Entry 563
+    0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    0x1.4000000000002p9
+  },
+  { // Entry 564
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 565
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 566
+    -0.0,
+    -0.0
+  },
+  { // Entry 567
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 568
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 569
+    0x1.ecb353d02d5fb03947e320c5bccaac3fp-4,
+    0x1.eb851eb851eb7p-4
+  },
+  { // Entry 570
+    -0x1.ecb353d02d5fb03947e320c5bccaac3fp-4,
+    -0x1.eb851eb851eb7p-4
+  },
+  { // Entry 571
+    0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 572
+    -0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 573
+    0x1.ecb353d02d5fd07455827c7654a9321fp-4,
+    0x1.eb851eb851eb9p-4
+  },
+  { // Entry 574
+    -0x1.ecb353d02d5fd07455827c7654a9321fp-4,
+    -0x1.eb851eb851eb9p-4
+  },
+  { // Entry 575
+    0x1.0acd00fe63b9639df6c641ed463c4ca0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 576
+    -0x1.0acd00fe63b9639df6c641ed463c4ca0p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 577
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.0p-1
+  },
+  { // Entry 578
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.0p-1
+  },
+  { // Entry 579
+    0x1.0acd00fe63b97eae190f824a7eebd40dp-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 580
+    -0x1.0acd00fe63b97eae190f824a7eebd40dp-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 581
+    0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 582
+    -0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 583
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 584
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 585
+    0x1.2cd9fc44eb983e58779b22745732962dp0,
+    0x1.0000000000001p0
+  },
+  { // Entry 586
+    -0x1.2cd9fc44eb983e58779b22745732962dp0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 587
+    0x1.ab5adb9c435e4cbe72415713a64f66a1p30,
+    0x1.5ffffffffffffp4
+  },
+  { // Entry 588
+    -0x1.ab5adb9c435e4cbe72415713a64f66a1p30,
+    -0x1.5ffffffffffffp4
+  },
+  { // Entry 589
+    0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    0x1.6p4
+  },
+  { // Entry 590
+    -0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    -0x1.6p4
+  },
+  { // Entry 591
+    0x1.ab5adb9c4361a3742979ddd3968b9801p30,
+    0x1.6000000000001p4
+  },
+  { // Entry 592
+    -0x1.ab5adb9c4361a3742979ddd3968b9801p30,
+    -0x1.6000000000001p4
+  },
+  { // Entry 593
+    0x1.226af33b1fdae7ec593b8b45e80e54d2p32,
+    0x1.6ffffffffffffp4
+  },
+  { // Entry 594
+    -0x1.226af33b1fdae7ec593b8b45e80e54d2p32,
+    -0x1.6ffffffffffffp4
+  },
+  { // Entry 595
+    0x1.226af33b1fdc0a574c76ab2161309880p32,
+    0x1.7p4
+  },
+  { // Entry 596
+    -0x1.226af33b1fdc0a574c76ab2161309880p32,
+    -0x1.7p4
+  },
+  { // Entry 597
+    0x1.226af33b1fdd2cc23fb1cafdfcbdcf69p32,
+    0x1.7000000000001p4
+  },
+  { // Entry 598
+    -0x1.226af33b1fdd2cc23fb1cafdfcbdcf69p32,
+    -0x1.7000000000001p4
+  },
+  { // Entry 599
+    0x1.fffffffffffb9ede67b7a313285faa73p51,
+    0x1.25e4f7b2737f9p5
+  },
+  { // Entry 600
+    -0x1.fffffffffffb9ede67b7a313285faa73p51,
+    -0x1.25e4f7b2737f9p5
+  },
+  { // Entry 601
+    0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 602
+    -0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 603
+    0x1.000000000001cf6f33dbd188d1eca4a9p52,
+    0x1.25e4f7b2737fbp5
+  },
+  { // Entry 604
+    -0x1.000000000001cf6f33dbd188d1eca4a9p52,
+    -0x1.25e4f7b2737fbp5
+  },
+  { // Entry 605
+    0x1.6a09e667f3b73b2e9b132d5142f3e5b3p52,
+    0x1.28aac01252c6cp5
+  },
+  { // Entry 606
+    -0x1.6a09e667f3b73b2e9b132d5142f3e5b3p52,
+    -0x1.28aac01252c6cp5
+  },
+  { // Entry 607
+    0x1.6a09e667f3ba0f4267e314c28d64e8a9p52,
+    0x1.28aac01252c6dp5
+  },
+  { // Entry 608
+    -0x1.6a09e667f3ba0f4267e314c28d64e8a9p52,
+    -0x1.28aac01252c6dp5
+  },
+  { // Entry 609
+    0x1.6a09e667f3bce35634b2fc397ffd853fp52,
+    0x1.28aac01252c6ep5
+  },
+  { // Entry 610
+    -0x1.6a09e667f3bce35634b2fc397ffd853fp52,
+    -0x1.28aac01252c6ep5
+  },
+  { // Entry 611
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 612
+    -0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 613
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 614
+    -0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 615
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 616
+    -HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 617
+    -HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 618
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 619
+    -0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 620
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 621
+    -0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 622
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 623
+    0x1.fffffffffffff005555555555554d559p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 624
+    -0x1.fffffffffffff005555555555554d559p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 625
+    0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    0x1.0p-30
+  },
+  { // Entry 626
+    -0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    -0x1.0p-30
+  },
+  { // Entry 627
+    0x1.0000000000001002aaaaaaaaaaab2aacp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 628
+    -0x1.0000000000001002aaaaaaaaaaab2aacp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 629
+    0x1.00000000aaaaa2aaccccbcccd00cfb7ap-15,
+    0x1.fffffffffffffp-16
+  },
+  { // Entry 630
+    -0x1.00000000aaaaa2aaccccbcccd00cfb7ap-15,
+    -0x1.fffffffffffffp-16
+  },
+  { // Entry 631
+    0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    0x1.0p-15
+  },
+  { // Entry 632
+    -0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    -0x1.0p-15
+  },
+  { // Entry 633
+    0x1.00000000aaaabaaaccccecccd00d0b7ap-15,
+    0x1.0000000000001p-15
+  },
+  { // Entry 634
+    -0x1.00000000aaaabaaaccccecccd00d0b7ap-15,
+    -0x1.0000000000001p-15
+  },
+  { // Entry 635
+    0x1.0002aaaccccd94d9bbd8527c599a8bc7p-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 636
+    -0x1.0002aaaccccd94d9bbd8527c599a8bc7p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 637
+    0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    0x1.0p-6
+  },
+  { // Entry 638
+    -0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    -0x1.0p-6
+  },
+  { // Entry 639
+    0x1.0002aaaccccdacda7bd9527ce2234152p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 640
+    -0x1.0002aaaccccdacda7bd9527ce2234152p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 641
+    0x1.000aaacccd00c83a3cace89e1977724dp-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 642
+    -0x1.000aaacccd00c83a3cace89e1977724dp-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 643
+    0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    0x1.0p-5
+  },
+  { // Entry 644
+    -0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    -0x1.0p-5
+  },
+  { // Entry 645
+    0x1.000aaacccd00e03d3cbce8c03bc0aefcp-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 646
+    -0x1.000aaacccd00e03d3cbce8c03bc0aefcp-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 647
+    0x1.002aacccd9cdc312002bf56151115c11p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 648
+    -0x1.002aacccd9cdc312002bf56151115c11p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 649
+    0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    0x1.0p-4
+  },
+  { // Entry 650
+    -0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    -0x1.0p-4
+  },
+  { // Entry 651
+    0x1.002aacccd9cddb1e012bfdea009d23c7p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 652
+    -0x1.002aacccd9cddb1e012bfdea009d23c7p-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 653
+    0x1.00aaccd00d2f0572b58768290cca24c3p-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 654
+    -0x1.00aaccd00d2f0572b58768290cca24c3p-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 655
+    0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    0x1.0p-3
+  },
+  { // Entry 656
+    -0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    -0x1.0p-3
+  },
+  { // Entry 657
+    0x1.00aaccd00d2f1da2c5898a723319d3d5p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 658
+    -0x1.00aaccd00d2f1da2c5898a723319d3d5p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 659
+    0x1.02accd9d081016261f4b0ecbebb5dd8fp-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 660
+    -0x1.02accd9d081016261f4b0ecbebb5dd8fp-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 661
+    0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    0x1.0p-2
+  },
+  { // Entry 662
+    -0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    -0x1.0p-2
+  },
+  { // Entry 663
+    0x1.02accd9d08102ee71fd3be5dd4a0a27ap-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 664
+    -0x1.02accd9d08102ee71fd3be5dd4a0a27ap-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 665
+    0x1.d03cf63b6e19d8da527239bc64c85ceap1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 666
+    -0x1.d03cf63b6e19d8da527239bc64c85ceap1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 667
+    0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    0x1.0p1
+  },
+  { // Entry 668
+    -0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    -0x1.0p1
+  },
+  { // Entry 669
+    0x1.d03cf63b6e1a3325409c12499bfc4fdap1,
+    0x1.0000000000001p1
+  },
+  { // Entry 670
+    -0x1.d03cf63b6e1a3325409c12499bfc4fdap1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 671
+    0x1.b4a380370362d5f21650a55c31b348b4p4,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 672
+    -0x1.b4a380370362d5f21650a55c31b348b4p4,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 673
+    0x1.b4a3803703630c8fe70261d92e563a88p4,
+    0x1.0p2
+  },
+  { // Entry 674
+    -0x1.b4a3803703630c8fe70261d92e563a88p4,
+    -0x1.0p2
+  },
+  { // Entry 675
+    0x1.b4a38037036379cb8865dad33c13c833p4,
+    0x1.0000000000001p2
+  },
+  { // Entry 676
+    -0x1.b4a38037036379cb8865dad33c13c833p4,
+    -0x1.0000000000001p2
+  },
+  { // Entry 677
+    0x1.749ea514eca5ffdf3fd18b7627cdbdc8p10,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 678
+    -0x1.749ea514eca5ffdf3fd18b7627cdbdc8p10,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 679
+    0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    0x1.0p3
+  },
+  { // Entry 680
+    -0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    -0x1.0p3
+  },
+  { // Entry 681
+    0x1.749ea514eca717563fc08323d3893d7ep10,
+    0x1.0000000000001p3
+  },
+  { // Entry 682
+    -0x1.749ea514eca717563fc08323d3893d7ep10,
+    -0x1.0000000000001p3
+  },
+  { // Entry 683
+    0x1.0f2ebd0a7ffdb64f4e0e5fcc0c593101p22,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 684
+    -0x1.0f2ebd0a7ffdb64f4e0e5fcc0c593101p22,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 685
+    0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    0x1.0p4
+  },
+  { // Entry 686
+    -0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    -0x1.0p4
+  },
+  { // Entry 687
+    0x1.0f2ebd0a7fff4d15699e1fd522e720dcp22,
+    0x1.0000000000001p4
+  },
+  { // Entry 688
+    -0x1.0f2ebd0a7fff4d15699e1fd522e720dcp22,
+    -0x1.0000000000001p4
+  },
+  { // Entry 689
+    0x1.1f43fcc4b661a8944ac389a7c7ae7b9dp45,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 690
+    -0x1.1f43fcc4b661a8944ac389a7c7ae7b9dp45,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 691
+    0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    0x1.0p5
+  },
+  { // Entry 692
+    -0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    -0x1.0p5
+  },
+  { // Entry 693
+    0x1.1f43fcc4b66506604111acd1ce1d4d5dp45,
+    0x1.0000000000001p5
+  },
+  { // Entry 694
+    -0x1.1f43fcc4b66506604111acd1ce1d4d5dp45,
+    -0x1.0000000000001p5
+  },
+  { // Entry 695
+    0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 696
+    -0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 697
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.0p6
+  },
+  { // Entry 698
+    -0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.0p6
+  },
+  { // Entry 699
+    0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    0x1.0000000000001p6
+  },
+  { // Entry 700
+    -0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    -0x1.0000000000001p6
+  },
+  { // Entry 701
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 702
+    -0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 703
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    0x1.0p7
+  },
+  { // Entry 704
+    -0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    -0x1.0p7
+  },
+  { // Entry 705
+    0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    0x1.0000000000001p7
+  },
+  { // Entry 706
+    -0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    -0x1.0000000000001p7
+  },
+  { // Entry 707
+    0x1.41c7a8814be192a5df25b042af824efdp368,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 708
+    -0x1.41c7a8814be192a5df25b042af824efdp368,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 709
+    0x1.41c7a8814beba0e323300f777da65854p368,
+    0x1.0p8
+  },
+  { // Entry 710
+    -0x1.41c7a8814beba0e323300f777da65854p368,
+    -0x1.0p8
+  },
+  { // Entry 711
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    0x1.0000000000001p8
+  },
+  { // Entry 712
+    -0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    -0x1.0000000000001p8
+  },
+  { // Entry 713
+    0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 714
+    -0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 715
+    0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    0x1.0p9
+  },
+  { // Entry 716
+    -0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    -0x1.0p9
+  },
+  { // Entry 717
+    0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    0x1.0000000000001p9
+  },
+  { // Entry 718
+    -0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    -0x1.0000000000001p9
+  },
+  { // Entry 719
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 720
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 721
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 722
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 723
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 724
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 725
+    HUGE_VAL,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 726
+    0x1.718f45d72e67155cecb0017179d127e6p3,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 727
+    0x1.2690f661dd81ffd244e02b94a5c51d39p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 728
+    0x1.2cd9fc44eb983e58779b22745732962dp0,
+    0x1.0000000000001p0
+  },
+  { // Entry 729
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 730
+    0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 731
+    0x1.bcc270b5227365b85e43b36397224d94p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 732
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 733
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 735
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 736
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 737
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 738
+    0.0,
+    0.0
+  },
+  { // Entry 739
+    -0.0,
+    -0.0
+  },
+  { // Entry 740
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 741
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 742
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 743
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 744
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 745
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 746
+    -0x1.bcc270b5227365b85e43b36397224d94p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 747
+    -0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 748
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 749
+    -0x1.2cd9fc44eb983e58779b22745732962dp0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 750
+    -0x1.2690f661dd81ffd244e02b94a5c51d39p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 751
+    -0x1.718f45d72e67155cecb0017179d127e6p3,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 752
+    -HUGE_VAL,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 753
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 754
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 755
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 756
+    -0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 757
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 758
+    -HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  }
+};
diff --git a/tests/math_data/sinhf_intel_data.h b/tests/math_data/sinhf_intel_data.h
new file mode 100644
index 0000000..30afc1e
--- /dev/null
+++ b/tests/math_data/sinhf_intel_data.h
@@ -0,0 +1,2494 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_sinhf_intel_data[] = {
+  { // Entry 0
+    -0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    -0x1.p-21
+  },
+  { // Entry 1
+    0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    0x1.p-21
+  },
+  { // Entry 2
+    -0x1.1770c0fffee31db7a31664de401a57cdp-1,
+    -0x1.0b26eep-1
+  },
+  { // Entry 3
+    0x1.1770c0fffee31db7a31664de401a57cdp-1,
+    0x1.0b26eep-1
+  },
+  { // Entry 4
+    -0x1.204fd00000000000000f3ca3e81c03afp-37,
+    -0x1.204fd0p-37
+  },
+  { // Entry 5
+    0x1.204fd00000000000000f3ca3e81c03afp-37,
+    0x1.204fd0p-37
+  },
+  { // Entry 6
+    -0x1.43510055f383351ba9ec4cdf5b1b1fa5p-12,
+    -0x1.4351p-12
+  },
+  { // Entry 7
+    0x1.43510055f383351ba9ec4cdf5b1b1fa5p-12,
+    0x1.4351p-12
+  },
+  { // Entry 8
+    -0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    -0x1.561b10p6
+  },
+  { // Entry 9
+    0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    0x1.561b10p6
+  },
+  { // Entry 10
+    -0x1.76339d048c41010db95311bf38824f7fp-2,
+    -0x1.6e564ep-2
+  },
+  { // Entry 11
+    0x1.76339d048c41010db95311bf38824f7fp-2,
+    0x1.6e564ep-2
+  },
+  { // Entry 12
+    -0x1.a6399b00031ae7e2d10c4d5ca8b85bb6p-2,
+    -0x1.9b17d8p-2
+  },
+  { // Entry 13
+    0x1.a6399b00031ae7e2d10c4d5ca8b85bb6p-2,
+    0x1.9b17d8p-2
+  },
+  { // Entry 14
+    -0x1.ed9c6b045cf886a719553b239eced39ap-1,
+    -0x1.b62492p-1
+  },
+  { // Entry 15
+    0x1.ed9c6b045cf886a719553b239eced39ap-1,
+    0x1.b62492p-1
+  },
+  { // Entry 16
+    -0x1.ffb1b2f8d872ac8cb2c8ae78073874cep-1,
+    -0x1.c30c06p-1
+  },
+  { // Entry 17
+    0x1.ffb1b2f8d872ac8cb2c8ae78073874cep-1,
+    0x1.c30c06p-1
+  },
+  { // Entry 18
+    -0x1.490e3effd17cc5e5cebb7150a45530b0p9,
+    -0x1.cbae70p2
+  },
+  { // Entry 19
+    0x1.490e3effd17cc5e5cebb7150a45530b0p9,
+    0x1.cbae70p2
+  },
+  { // Entry 20
+    -0x1.d3735503c31601d8a231e42764dca76bp-12,
+    -0x1.d37354p-12
+  },
+  { // Entry 21
+    0x1.d3735503c31601d8a231e42764dca76bp-12,
+    0x1.d37354p-12
+  },
+  { // Entry 22
+    -0x1.d3750103c5df89146104862bc8eb9511p-12,
+    -0x1.d375p-12
+  },
+  { // Entry 23
+    0x1.d3750103c5df89146104862bc8eb9511p-12,
+    0x1.d375p-12
+  },
+  { // Entry 24
+    -0x1.d4bc08fe54522492a18ed763f5905a3cp-6,
+    -0x1.d4abacp-6
+  },
+  { // Entry 25
+    0x1.d4bc08fe54522492a18ed763f5905a3cp-6,
+    0x1.d4abacp-6
+  },
+  { // Entry 26
+    -0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    -0x1.fffcp1
+  },
+  { // Entry 27
+    0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    0x1.fffcp1
+  },
+  { // Entry 28
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 29
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 30
+    0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    0x1.p-21
+  },
+  { // Entry 31
+    -0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    -0x1.p-21
+  },
+  { // Entry 32
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 33
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 34
+    0x1.000002000000000000000aaaaaeaaaabp-41,
+    0x1.000002p-41
+  },
+  { // Entry 35
+    -0x1.000002000000000000000aaaaaeaaaabp-41,
+    -0x1.000002p-41
+  },
+  { // Entry 36
+    0x1.00aae5001d35b2cc9f1bf5024aad3fc7p-3,
+    0x1.000018p-3
+  },
+  { // Entry 37
+    -0x1.00aae5001d35b2cc9f1bf5024aad3fc7p-3,
+    -0x1.000018p-3
+  },
+  { // Entry 38
+    0x1.2cdc4cd13dbaaea971cf4c6df8d02db1p0,
+    0x1.000180p0
+  },
+  { // Entry 39
+    -0x1.2cdc4cd13dbaaea971cf4c6df8d02db1p0,
+    -0x1.000180p0
+  },
+  { // Entry 40
+    0x1.000220000000000000002aabbaacecacp-40,
+    0x1.000220p-40
+  },
+  { // Entry 41
+    -0x1.000220000000000000002aabbaacecacp-40,
+    -0x1.000220p-40
+  },
+  { // Entry 42
+    0x1.75b684fbb21e3fadfd76948a74ff619cp10,
+    0x1.0018p3
+  },
+  { // Entry 43
+    -0x1.75b684fbb21e3fadfd76948a74ff619cp10,
+    -0x1.0018p3
+  },
+  { // Entry 44
+    0x1.0af11706dc935e6b8d9889ffd9d7f9eep-1,
+    0x1.0020p-1
+  },
+  { // Entry 45
+    -0x1.0af11706dc935e6b8d9889ffd9d7f9eep-1,
+    -0x1.0020p-1
+  },
+  { // Entry 46
+    0x1.2de53500112b48b54416fd3ac0fd5d35p0,
+    0x1.00adp0
+  },
+  { // Entry 47
+    -0x1.2de53500112b48b54416fd3ac0fd5d35p0,
+    -0x1.00adp0
+  },
+  { // Entry 48
+    0x1.d311590094b7169257222f29159c5274p1,
+    0x1.00c0p1
+  },
+  { // Entry 49
+    -0x1.d311590094b7169257222f29159c5274p1,
+    -0x1.00c0p1
+  },
+  { // Entry 50
+    0x1.bb8be0f928fa482d264aec809030cb98p4,
+    0x1.0101p2
+  },
+  { // Entry 51
+    -0x1.bb8be0f928fa482d264aec809030cb98p4,
+    -0x1.0101p2
+  },
+  { // Entry 52
+    0x1.d6509cfff1b887cd50d3c7b33a490af5p1,
+    0x1.019bp1
+  },
+  { // Entry 53
+    -0x1.d6509cfff1b887cd50d3c7b33a490af5p1,
+    -0x1.019bp1
+  },
+  { // Entry 54
+    0x1.d99ef101df23c13de5368e55ebb4c952p45,
+    0x1.04p5
+  },
+  { // Entry 55
+    -0x1.d99ef101df23c13de5368e55ebb4c952p45,
+    -0x1.04p5
+  },
+  { // Entry 56
+    0x1.b61e5ca3a5e30b2f0a03f292f9ce0084p92,
+    0x1.04p6
+  },
+  { // Entry 57
+    -0x1.b61e5ca3a5e30b2f0a03f292f9ce0084p92,
+    -0x1.04p6
+  },
+  { // Entry 58
+    0x1.0f53c500dab3115ec83d0a87f389efa5p-1,
+    0x1.0401c0p-1
+  },
+  { // Entry 59
+    -0x1.0f53c500dab3115ec83d0a87f389efa5p-1,
+    -0x1.0401c0p-1
+  },
+  { // Entry 60
+    0x1.07a43d780cd02aa326997430cb72ec6ep-2,
+    0x1.04d0p-2
+  },
+  { // Entry 61
+    -0x1.07a43d780cd02aa326997430cb72ec6ep-2,
+    -0x1.04d0p-2
+  },
+  { // Entry 62
+    0x1.070b91000585e92eceba7f1d10686783p-5,
+    0x1.07p-5
+  },
+  { // Entry 63
+    -0x1.070b91000585e92eceba7f1d10686783p-5,
+    -0x1.07p-5
+  },
+  { // Entry 64
+    0x1.0aef2dfa6f09af758cfac3ec7bbe6580p-2,
+    0x1.08p-2
+  },
+  { // Entry 65
+    -0x1.0aef2dfa6f09af758cfac3ec7bbe6580p-2,
+    -0x1.08p-2
+  },
+  { // Entry 66
+    0x1.0ab8c103d210ecc999dea2fb1e601dffp-7,
+    0x1.0ab8p-7
+  },
+  { // Entry 67
+    -0x1.0ab8c103d210ecc999dea2fb1e601dffp-7,
+    -0x1.0ab8p-7
+  },
+  { // Entry 68
+    HUGE_VALF,
+    0x1.0bd822p85
+  },
+  { // Entry 69
+    -HUGE_VALF,
+    -0x1.0bd822p85
+  },
+  { // Entry 70
+    0x1.1b0bd9fff434fa99eb934f12cfcde40dp-1,
+    0x1.0e50p-1
+  },
+  { // Entry 71
+    -0x1.1b0bd9fff434fa99eb934f12cfcde40dp-1,
+    -0x1.0e50p-1
+  },
+  { // Entry 72
+    0x1.13a0d500d2f8e84e29cf7e0b47593d6bp-7,
+    0x1.13a0p-7
+  },
+  { // Entry 73
+    -0x1.13a0d500d2f8e84e29cf7e0b47593d6bp-7,
+    -0x1.13a0p-7
+  },
+  { // Entry 74
+    0x1.14635aff07928f6b82b6efd046d85611p-6,
+    0x1.1460p-6
+  },
+  { // Entry 75
+    -0x1.14635aff07928f6b82b6efd046d85611p-6,
+    -0x1.1460p-6
+  },
+  { // Entry 76
+    0x1.1837d7019c29ac4261d83dbdd9540770p-4,
+    0x1.18p-4
+  },
+  { // Entry 77
+    -0x1.1837d7019c29ac4261d83dbdd9540770p-4,
+    -0x1.18p-4
+  },
+  { // Entry 78
+    0x1.1e9a66ffff67888e2226adc979242050p-2,
+    0x1.1afcc0p-2
+  },
+  { // Entry 79
+    -0x1.1e9a66ffff67888e2226adc979242050p-2,
+    -0x1.1afcc0p-2
+  },
+  { // Entry 80
+    0x1.5851b581ab5774b6bc22fe804a609974p0,
+    0x1.1b08p0
+  },
+  { // Entry 81
+    -0x1.5851b581ab5774b6bc22fe804a609974p0,
+    -0x1.1b08p0
+  },
+  { // Entry 82
+    0x1.1fc09496b655ab5f571a14fc538740f3p-2,
+    0x1.1c18p-2
+  },
+  { // Entry 83
+    -0x1.1fc09496b655ab5f571a14fc538740f3p-2,
+    -0x1.1c18p-2
+  },
+  { // Entry 84
+    0x1.1c4fa6fffe2308d6059816c28ca68b93p-6,
+    0x1.1c4cp-6
+  },
+  { // Entry 85
+    -0x1.1c4fa6fffe2308d6059816c28ca68b93p-6,
+    -0x1.1c4cp-6
+  },
+  { // Entry 86
+    0x1.1ef0f05245d564eb621bc3580e810ecbp-7,
+    0x1.1ef0p-7
+  },
+  { // Entry 87
+    -0x1.1ef0f05245d564eb621bc3580e810ecbp-7,
+    -0x1.1ef0p-7
+  },
+  { // Entry 88
+    0x1.5ef59f4fb8454858c70cce0b76f0d1c1p0,
+    0x1.1ef8p0
+  },
+  { // Entry 89
+    -0x1.5ef59f4fb8454858c70cce0b76f0d1c1p0,
+    -0x1.1ef8p0
+  },
+  { // Entry 90
+    0x1.7922d2f6a620cc176196ee619e38cedep0,
+    0x1.2e073ap0
+  },
+  { // Entry 91
+    -0x1.7922d2f6a620cc176196ee619e38cedep0,
+    -0x1.2e073ap0
+  },
+  { // Entry 92
+    0x1.43b381fff77c0efbac7ee89fffb83db3p-1,
+    0x1.31497ep-1
+  },
+  { // Entry 93
+    -0x1.43b381fff77c0efbac7ee89fffb83db3p-1,
+    -0x1.31497ep-1
+  },
+  { // Entry 94
+    0x1.32b4320000022be269a7e0844e8fb427p-3,
+    0x1.3191a2p-3
+  },
+  { // Entry 95
+    -0x1.32b4320000022be269a7e0844e8fb427p-3,
+    -0x1.3191a2p-3
+  },
+  { // Entry 96
+    0x1.81e2b0f865f7d68960908dea8dbff652p0,
+    0x1.32e74cp0
+  },
+  { // Entry 97
+    -0x1.81e2b0f865f7d68960908dea8dbff652p0,
+    -0x1.32e74cp0
+  },
+  { // Entry 98
+    0x1.684f9300049996963e27553b525d785cp2,
+    0x1.36ea5cp1
+  },
+  { // Entry 99
+    -0x1.684f9300049996963e27553b525d785cp2,
+    -0x1.36ea5cp1
+  },
+  { // Entry 100
+    0x1.3e8c5a52344c5fc05de7cf393fd80bacp-12,
+    0x1.3e8c5ap-12
+  },
+  { // Entry 101
+    -0x1.3e8c5a52344c5fc05de7cf393fd80bacp-12,
+    -0x1.3e8c5ap-12
+  },
+  { // Entry 102
+    0x1.3ebc005259354f37ecfabafab164439dp-12,
+    0x1.3ebcp-12
+  },
+  { // Entry 103
+    -0x1.3ebc005259354f37ecfabafab164439dp-12,
+    -0x1.3ebcp-12
+  },
+  { // Entry 104
+    0x1.3ec66e52614b0b45d34f5458bd2b6d4ap-12,
+    0x1.3ec66ep-12
+  },
+  { // Entry 105
+    -0x1.3ec66e52614b0b45d34f5458bd2b6d4ap-12,
+    -0x1.3ec66ep-12
+  },
+  { // Entry 106
+    0x1.9a856d00436428754784f838aa53dcdep0,
+    0x1.403a42p0
+  },
+  { // Entry 107
+    -0x1.9a856d00436428754784f838aa53dcdep0,
+    -0x1.403a42p0
+  },
+  { // Entry 108
+    0x1.4674690003b5c33e7fd09a6bffacac02p-2,
+    0x1.4129d6p-2
+  },
+  { // Entry 109
+    -0x1.4674690003b5c33e7fd09a6bffacac02p-2,
+    -0x1.4129d6p-2
+  },
+  { // Entry 110
+    0x1.442556569d4a81e2d99f316cd704988bp-12,
+    0x1.442556p-12
+  },
+  { // Entry 111
+    -0x1.442556569d4a81e2d99f316cd704988bp-12,
+    -0x1.442556p-12
+  },
+  { // Entry 112
+    0x1.f897f07e50760e5213f6121940ce7277p115,
+    0x1.4455a8p6
+  },
+  { // Entry 113
+    -0x1.f897f07e50760e5213f6121940ce7277p115,
+    -0x1.4455a8p6
+  },
+  { // Entry 114
+    0x1.f7c601c26a0aab07acb3aed129529860p116,
+    0x1.4719c6p6
+  },
+  { // Entry 115
+    -0x1.f7c601c26a0aab07acb3aed129529860p116,
+    -0x1.4719c6p6
+  },
+  { // Entry 116
+    0x1.8fd142fffbf07bcd9c6607b02fc55b74p117,
+    0x1.48f2e4p6
+  },
+  { // Entry 117
+    -0x1.8fd142fffbf07bcd9c6607b02fc55b74p117,
+    -0x1.48f2e4p6
+  },
+  { // Entry 118
+    0x1.54e2c50008b73d8e4d7ed6ca4c155dbcp-3,
+    0x1.5354c2p-3
+  },
+  { // Entry 119
+    -0x1.54e2c50008b73d8e4d7ed6ca4c155dbcp-3,
+    -0x1.5354c2p-3
+  },
+  { // Entry 120
+    0x1.7ff7f6932445d2e31f1b7c20d7c7d875p125,
+    0x1.5ef7bcp6
+  },
+  { // Entry 121
+    -0x1.7ff7f6932445d2e31f1b7c20d7c7d875p125,
+    -0x1.5ef7bcp6
+  },
+  { // Entry 122
+    0x1.f13408794171d98e14f95245a340ab06p125,
+    0x1.600060p6
+  },
+  { // Entry 123
+    -0x1.f13408794171d98e14f95245a340ab06p125,
+    -0x1.600060p6
+  },
+  { // Entry 124
+    0x1.f916467349b058b9c38906911b856056p125,
+    0x1.60107cp6
+  },
+  { // Entry 125
+    -0x1.f916467349b058b9c38906911b856056p125,
+    -0x1.60107cp6
+  },
+  { // Entry 126
+    0x1.6918410000c5ae5656882e7cea64f25bp-2,
+    0x1.620054p-2
+  },
+  { // Entry 127
+    -0x1.6918410000c5ae5656882e7cea64f25bp-2,
+    -0x1.620054p-2
+  },
+  { // Entry 128
+    0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    0x1.62e4b4p6
+  },
+  { // Entry 129
+    -0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    -0x1.62e4b4p6
+  },
+  { // Entry 130
+    0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    0x1.6591c4p6
+  },
+  { // Entry 131
+    -0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    -0x1.6591c4p6
+  },
+  { // Entry 132
+    0x1.ff0714d44fc871ff0c086096f1bf0ae0p127,
+    0x1.65a806p6
+  },
+  { // Entry 133
+    -0x1.ff0714d44fc871ff0c086096f1bf0ae0p127,
+    -0x1.65a806p6
+  },
+  { // Entry 134
+    0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    0x1.65a8dap6
+  },
+  { // Entry 135
+    -0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    -0x1.65a8dap6
+  },
+  { // Entry 136
+    0x1.fff2d869d07d11d6c64d896f117f0094p127,
+    0x1.65a9dep6
+  },
+  { // Entry 137
+    -0x1.fff2d869d07d11d6c64d896f117f0094p127,
+    -0x1.65a9dep6
+  },
+  { // Entry 138
+    0x1.6e444103bc8945311358dde7a66bdb38p-2,
+    0x1.66dffap-2
+  },
+  { // Entry 139
+    -0x1.6e444103bc8945311358dde7a66bdb38p-2,
+    -0x1.66dffap-2
+  },
+  { // Entry 140
+    0x1.67cf01000052cb8c07fcbe6cb68dcc3dp-6,
+    0x1.67c79ap-6
+  },
+  { // Entry 141
+    -0x1.67cf01000052cb8c07fcbe6cb68dcc3dp-6,
+    -0x1.67c79ap-6
+  },
+  { // Entry 142
+    0x1.7800852fb7173f3c300caca6708f0d6fp-8,
+    0x1.77fffep-8
+  },
+  { // Entry 143
+    -0x1.7800852fb7173f3c300caca6708f0d6fp-8,
+    -0x1.77fffep-8
+  },
+  { // Entry 144
+    0x1.80000900001033334115f1660750774cp-10,
+    0x1.80p-10
+  },
+  { // Entry 145
+    -0x1.80000900001033334115f1660750774cp-10,
+    -0x1.80p-10
+  },
+  { // Entry 146
+    0x1.5df91cff9ace26df572d528a8d7e4d99p16,
+    0x1.8313eap3
+  },
+  { // Entry 147
+    -0x1.5df91cff9ace26df572d528a8d7e4d99p16,
+    -0x1.8313eap3
+  },
+  { // Entry 148
+    0x1.16c370fc40a0ef3180f8a61c8b25157cp1,
+    0x1.853c56p0
+  },
+  { // Entry 149
+    -0x1.16c370fc40a0ef3180f8a61c8b25157cp1,
+    -0x1.853c56p0
+  },
+  { // Entry 150
+    0x1.880000993055674ae98a9a44aa624509p-12,
+    0x1.88p-12
+  },
+  { // Entry 151
+    -0x1.880000993055674ae98a9a44aa624509p-12,
+    -0x1.88p-12
+  },
+  { // Entry 152
+    0x1.dab77d03d9ceea48387c7a3e5ebde612p16,
+    0x1.8cd558p3
+  },
+  { // Entry 153
+    -0x1.dab77d03d9ceea48387c7a3e5ebde612p16,
+    -0x1.8cd558p3
+  },
+  { // Entry 154
+    0x1.b36be4f606d0cd43778f0b56d6c78c69p3,
+    0x1.a70ca4p1
+  },
+  { // Entry 155
+    -0x1.b36be4f606d0cd43778f0b56d6c78c69p3,
+    -0x1.a70ca4p1
+  },
+  { // Entry 156
+    0x1.9fc768f63e2199d4161ad52c42c43993p8,
+    0x1.ae4a96p2
+  },
+  { // Entry 157
+    -0x1.9fc768f63e2199d4161ad52c42c43993p8,
+    -0x1.ae4a96p2
+  },
+  { // Entry 158
+    0x1.fddcb5028f3c5f2f9057b275fda963b5p-1,
+    0x1.c1c0p-1
+  },
+  { // Entry 159
+    -0x1.fddcb5028f3c5f2f9057b275fda963b5p-1,
+    -0x1.c1c0p-1
+  },
+  { // Entry 160
+    0x1.c9d78317aae58861bfa01747e05aaa21p-3,
+    0x1.c61c8ep-3
+  },
+  { // Entry 161
+    -0x1.c9d78317aae58861bfa01747e05aaa21p-3,
+    -0x1.c61c8ep-3
+  },
+  { // Entry 162
+    0x1.17d46d00e7aa2bd311c9d06faf31cd0fp4,
+    0x1.c71c78p1
+  },
+  { // Entry 163
+    -0x1.17d46d00e7aa2bd311c9d06faf31cd0fp4,
+    -0x1.c71c78p1
+  },
+  { // Entry 164
+    0x1.d00fdefedbdc86d82e34a1726ce6fd5ep-6,
+    0x1.cffffep-6
+  },
+  { // Entry 165
+    -0x1.d00fdefedbdc86d82e34a1726ce6fd5ep-6,
+    -0x1.cffffep-6
+  },
+  { // Entry 166
+    0x1.d12f11000068b29f1390f76019d191e9p-12,
+    0x1.d12f10p-12
+  },
+  { // Entry 167
+    -0x1.d12f11000068b29f1390f76019d191e9p-12,
+    -0x1.d12f10p-12
+  },
+  { // Entry 168
+    0x1.e161430003f635efa46c1b93b40d124ap-2,
+    0x1.d13608p-2
+  },
+  { // Entry 169
+    -0x1.e161430003f635efa46c1b93b40d124ap-2,
+    -0x1.d13608p-2
+  },
+  { // Entry 170
+    0x1.e518f10016d4233539a6a86b46de305dp9,
+    0x1.e48570p2
+  },
+  { // Entry 171
+    -0x1.e518f10016d4233539a6a86b46de305dp9,
+    -0x1.e48570p2
+  },
+  { // Entry 172
+    0x1.f882f8ffff8c2c97052fff77b0fe05cap-2,
+    0x1.e60da6p-2
+  },
+  { // Entry 173
+    -0x1.f882f8ffff8c2c97052fff77b0fe05cap-2,
+    -0x1.e60da6p-2
+  },
+  { // Entry 174
+    0x1.a6565af66cc00367cd4b44acef8fe3b4p1,
+    0x1.e8bce0p0
+  },
+  { // Entry 175
+    -0x1.a6565af66cc00367cd4b44acef8fe3b4p1,
+    -0x1.e8bce0p0
+  },
+  { // Entry 176
+    0x1.ee2fa5ffffffd478a109217059ddb3a9p-4,
+    0x1.ecfeb6p-4
+  },
+  { // Entry 177
+    -0x1.ee2fa5ffffffd478a109217059ddb3a9p-4,
+    -0x1.ecfeb6p-4
+  },
+  { // Entry 178
+    0x1.b54f74f65bab12830f959a3e2d7e1c61p1,
+    0x1.f14910p0
+  },
+  { // Entry 179
+    -0x1.b54f74f65bab12830f959a3e2d7e1c61p1,
+    -0x1.f14910p0
+  },
+  { // Entry 180
+    0x1.b56a96f6fbbb8045af62b07d5d56b656p1,
+    0x1.f1584ep0
+  },
+  { // Entry 181
+    -0x1.b56a96f6fbbb8045af62b07d5d56b656p1,
+    -0x1.f1584ep0
+  },
+  { // Entry 182
+    0x1.f6e42e000047623ec2a83a461e98dec7p-3,
+    0x1.f1f852p-3
+  },
+  { // Entry 183
+    -0x1.f6e42e000047623ec2a83a461e98dec7p-3,
+    -0x1.f1f852p-3
+  },
+  { // Entry 184
+    0x1.f6ec1458fb3487aac4bfeec4b6812670p-3,
+    0x1.f1fffep-3
+  },
+  { // Entry 185
+    -0x1.f6ec1458fb3487aac4bfeec4b6812670p-3,
+    -0x1.f1fffep-3
+  },
+  { // Entry 186
+    0x1.f2fda6fdfa98a35b66e5104fdacd2bd5p-9,
+    0x1.f2fd58p-9
+  },
+  { // Entry 187
+    -0x1.f2fda6fdfa98a35b66e5104fdacd2bd5p-9,
+    -0x1.f2fd58p-9
+  },
+  { // Entry 188
+    0x1.f8521dffffcd41462b0d73569b1d3819p-3,
+    0x1.f35bacp-3
+  },
+  { // Entry 189
+    -0x1.f8521dffffcd41462b0d73569b1d3819p-3,
+    -0x1.f35bacp-3
+  },
+  { // Entry 190
+    0x1.f4dda8fe2ec303fc7f7568475545139cp-11,
+    0x1.f4dda4p-11
+  },
+  { // Entry 191
+    -0x1.f4dda8fe2ec303fc7f7568475545139cp-11,
+    -0x1.f4dda4p-11
+  },
+  { // Entry 192
+    0x1.f51a7d0000ac50ad5402c949ba82e8a3p-11,
+    0x1.f51a78p-11
+  },
+  { // Entry 193
+    -0x1.f51a7d0000ac50ad5402c949ba82e8a3p-11,
+    -0x1.f51a78p-11
+  },
+  { // Entry 194
+    0x1.a664dced7cb98c68f2b973d65c676a35p21,
+    0x1.f7fffep3
+  },
+  { // Entry 195
+    -0x1.a664dced7cb98c68f2b973d65c676a35p21,
+    -0x1.f7fffep3
+  },
+  { // Entry 196
+    0x1.f9b658ffff3ce39965e1b291abc9efb8p-4,
+    0x1.f86facp-4
+  },
+  { // Entry 197
+    -0x1.f9b658ffff3ce39965e1b291abc9efb8p-4,
+    -0x1.f86facp-4
+  },
+  { // Entry 198
+    0x1.28c3fb0016be4fd802e83c9be0d9cad1p0,
+    0x1.faaee8p-1
+  },
+  { // Entry 199
+    -0x1.28c3fb0016be4fd802e83c9be0d9cad1p0,
+    -0x1.faaee8p-1
+  },
+  { // Entry 200
+    0x1.29b1530000004a3722ae1117c2787152p0,
+    0x1.fbe4b0p-1
+  },
+  { // Entry 201
+    -0x1.29b1530000004a3722ae1117c2787152p0,
+    -0x1.fbe4b0p-1
+  },
+  { // Entry 202
+    0x1.fc14d4961039dc857c796f56b34af3b3p-6,
+    0x1.fbfffep-6
+  },
+  { // Entry 203
+    -0x1.fc14d4961039dc857c796f56b34af3b3p-6,
+    -0x1.fbfffep-6
+  },
+  { // Entry 204
+    0x1.fc4d7fd2d8e70ecb66e028137da8ba9dp-7,
+    0x1.fc4848p-7
+  },
+  { // Entry 205
+    -0x1.fc4d7fd2d8e70ecb66e028137da8ba9dp-7,
+    -0x1.fc4848p-7
+  },
+  { // Entry 206
+    0x1.fce613caa0469e68c720c7696cf35c3dp-9,
+    0x1.fce5c0p-9
+  },
+  { // Entry 207
+    -0x1.fce613caa0469e68c720c7696cf35c3dp-9,
+    -0x1.fce5c0p-9
+  },
+  { // Entry 208
+    0x1.fdf50fe0194330cfcecb2935b09d09a3p-6,
+    0x1.fddffep-6
+  },
+  { // Entry 209
+    -0x1.fdf50fe0194330cfcecb2935b09d09a3p-6,
+    -0x1.fddffep-6
+  },
+  { // Entry 210
+    0x1.ff92198272299e9dd5a4315372947bb7p-4,
+    0x1.fe3ffep-4
+  },
+  { // Entry 211
+    -0x1.ff92198272299e9dd5a4315372947bb7p-4,
+    -0x1.fe3ffep-4
+  },
+  { // Entry 212
+    0x1.fed49818a86c9e5d357348cc86552ecfp-5,
+    0x1.fe7ffep-5
+  },
+  { // Entry 213
+    -0x1.fed49818a86c9e5d357348cc86552ecfp-5,
+    -0x1.fe7ffep-5
+  },
+  { // Entry 214
+    0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    0x1.ffdffep5
+  },
+  { // Entry 215
+    -0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    -0x1.ffdffep5
+  },
+  { // Entry 216
+    0x1.fff77f554451e1f58b2d5e1ecc407a66p-12,
+    0x1.fff77ep-12
+  },
+  { // Entry 217
+    -0x1.fff77f554451e1f58b2d5e1ecc407a66p-12,
+    -0x1.fff77ep-12
+  },
+  { // Entry 218
+    0x1.7474c2f9144f003acd66e60d58643f07p10,
+    0x1.fff8cep2
+  },
+  { // Entry 219
+    -0x1.7474c2f9144f003acd66e60d58643f07p10,
+    -0x1.fff8cep2
+  },
+  { // Entry 220
+    0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    0x1.fffcp1
+  },
+  { // Entry 221
+    -0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    -0x1.fffcp1
+  },
+  { // Entry 222
+    0x1.2cd7476ede0aac2c3be4d81efc1fae2bp0,
+    0x1.fffc7ep-1
+  },
+  { // Entry 223
+    -0x1.2cd7476ede0aac2c3be4d81efc1fae2bp0,
+    -0x1.fffc7ep-1
+  },
+  { // Entry 224
+    0x1.d03a90ffffa72affa30aae2126410fd3p1,
+    0x1.fffebap0
+  },
+  { // Entry 225
+    -0x1.d03a90ffffa72affa30aae2126410fd3p1,
+    -0x1.fffebap0
+  },
+  { // Entry 226
+    0x1.b4a0e9ff76786bf6ec2ea4f53a42a118p4,
+    0x1.ffff3ep1
+  },
+  { // Entry 227
+    -0x1.b4a0e9ff76786bf6ec2ea4f53a42a118p4,
+    -0x1.ffff3ep1
+  },
+  { // Entry 228
+    0.0,
+    0.0
+  },
+  { // Entry 229
+    0x1.24d1fe8cfad7f98fcdbea5882af8e32dp-4,
+    0x1.24924ap-4
+  },
+  { // Entry 230
+    -0x1.24d1fe8cfad7f98fcdbea5882af8e32dp-4,
+    -0x1.24924ap-4
+  },
+  { // Entry 231
+    0x1.25914e250092e5c3cddf2040afd79c65p-3,
+    0x1.24924ap-3
+  },
+  { // Entry 232
+    -0x1.25914e250092e5c3cddf2040afd79c65p-3,
+    -0x1.24924ap-3
+  },
+  { // Entry 233
+    0x1.ba393734ca25f6f4197cc41844ff6e7dp-3,
+    0x1.b6db70p-3
+  },
+  { // Entry 234
+    -0x1.ba393734ca25f6f4197cc41844ff6e7dp-3,
+    -0x1.b6db70p-3
+  },
+  { // Entry 235
+    0x1.28917b1a67c439ef2a28337ebef6dc3cp-2,
+    0x1.24924ap-2
+  },
+  { // Entry 236
+    -0x1.28917b1a67c439ef2a28337ebef6dc3cp-2,
+    -0x1.24924ap-2
+  },
+  { // Entry 237
+    0x1.7589df829503fa20ed8774c31e6a332cp-2,
+    0x1.6db6dcp-2
+  },
+  { // Entry 238
+    -0x1.7589df829503fa20ed8774c31e6a332cp-2,
+    -0x1.6db6dcp-2
+  },
+  { // Entry 239
+    0x1.c46a5c1d32d4860b81155aef808f7d0fp-2,
+    0x1.b6db6ep-2
+  },
+  { // Entry 240
+    -0x1.c46a5c1d32d4860b81155aef808f7d0fp-2,
+    -0x1.b6db6ep-2
+  },
+  { // Entry 241
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 242
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 243
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 244
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 245
+    0x1.34c1747f635dfc16c1d88e5910239fe8p-1,
+    0x1.24924ap-1
+  },
+  { // Entry 246
+    -0x1.34c1747f635dfc16c1d88e5910239fe8p-1,
+    -0x1.24924ap-1
+  },
+  { // Entry 247
+    0x1.604959cb9dca66a6c6b1d52214b88901p-1,
+    0x1.492494p-1
+  },
+  { // Entry 248
+    -0x1.604959cb9dca66a6c6b1d52214b88901p-1,
+    -0x1.492494p-1
+  },
+  { // Entry 249
+    0x1.8d9d92611935ee8bcc9e9c1bbcb4ec0dp-1,
+    0x1.6db6dep-1
+  },
+  { // Entry 250
+    -0x1.8d9d92611935ee8bcc9e9c1bbcb4ec0dp-1,
+    -0x1.6db6dep-1
+  },
+  { // Entry 251
+    0x1.bcf9593d2ecc12e3836d15a1067a7896p-1,
+    0x1.924928p-1
+  },
+  { // Entry 252
+    -0x1.bcf9593d2ecc12e3836d15a1067a7896p-1,
+    -0x1.924928p-1
+  },
+  { // Entry 253
+    0x1.ee9a9041b2e77dc8645b07cd35bf1333p-1,
+    0x1.b6db72p-1
+  },
+  { // Entry 254
+    -0x1.ee9a9041b2e77dc8645b07cd35bf1333p-1,
+    -0x1.b6db72p-1
+  },
+  { // Entry 255
+    0x1.116108889abd3fd6df9a909af5b4b3abp0,
+    0x1.db6dbcp-1
+  },
+  { // Entry 256
+    -0x1.116108889abd3fd6df9a909af5b4b3abp0,
+    -0x1.db6dbcp-1
+  },
+  { // Entry 257
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 258
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 259
+    0.0,
+    0.0
+  },
+  { // Entry 260
+    0x1.18e1df94a3c9eec616f3c33e116ff136p-6,
+    0x1.18de5ap-6
+  },
+  { // Entry 261
+    -0x1.18e1df94a3c9eec616f3c33e116ff136p-6,
+    -0x1.18de5ap-6
+  },
+  { // Entry 262
+    0x1.18ec707b41cb05757f702b2e7bc8168fp-5,
+    0x1.18de5ap-5
+  },
+  { // Entry 263
+    -0x1.18ec707b41cb05757f702b2e7bc8168fp-5,
+    -0x1.18de5ap-5
+  },
+  { // Entry 264
+    0x1.a57d14c544db6f79ccb29cf647ec3bd6p-5,
+    0x1.a54d88p-5
+  },
+  { // Entry 265
+    -0x1.a57d14c544db6f79ccb29cf647ec3bd6p-5,
+    -0x1.a54d88p-5
+  },
+  { // Entry 266
+    0x1.1916b67842dff1025e79e06864bad805p-4,
+    0x1.18de5ap-4
+  },
+  { // Entry 267
+    -0x1.1916b67842dff1025e79e06864bad805p-4,
+    -0x1.18de5ap-4
+  },
+  { // Entry 268
+    0x1.5f840854828275e07b52147a0b34cec2p-4,
+    0x1.5f15f0p-4
+  },
+  { // Entry 269
+    -0x1.5f840854828275e07b52147a0b34cec2p-4,
+    -0x1.5f15f0p-4
+  },
+  { // Entry 270
+    0x1.a60bcc64888b5d1a7338b1a0f9243f1ep-4,
+    0x1.a54d86p-4
+  },
+  { // Entry 271
+    -0x1.a60bcc64888b5d1a7338b1a0f9243f1ep-4,
+    -0x1.a54d86p-4
+  },
+  { // Entry 272
+    0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    0x1.eb851cp-4
+  },
+  { // Entry 273
+    -0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    -0x1.eb851cp-4
+  },
+  { // Entry 274
+    0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    0x1.eb851ep-4
+  },
+  { // Entry 275
+    -0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    -0x1.eb851ep-4
+  },
+  { // Entry 276
+    0x1.02243d1276143106404fa4cb3fcadf33p-3,
+    0x1.01767ep-3
+  },
+  { // Entry 277
+    -0x1.02243d1276143106404fa4cb3fcadf33p-3,
+    -0x1.01767ep-3
+  },
+  { // Entry 278
+    0x1.0df0f8011126593efedda045c8fa0e09p-3,
+    0x1.0d2a6cp-3
+  },
+  { // Entry 279
+    -0x1.0df0f8011126593efedda045c8fa0e09p-3,
+    -0x1.0d2a6cp-3
+  },
+  { // Entry 280
+    0x1.19bff49926d4870c4cae1f4076b8e37ap-3,
+    0x1.18de5ap-3
+  },
+  { // Entry 281
+    -0x1.19bff49926d4870c4cae1f4076b8e37ap-3,
+    -0x1.18de5ap-3
+  },
+  { // Entry 282
+    0x1.25914c1fc4d40b236a218f858c70fb53p-3,
+    0x1.249248p-3
+  },
+  { // Entry 283
+    -0x1.25914c1fc4d40b236a218f858c70fb53p-3,
+    -0x1.249248p-3
+  },
+  { // Entry 284
+    0x1.316517df03194e62cdc39c303b8105ffp-3,
+    0x1.304636p-3
+  },
+  { // Entry 285
+    -0x1.316517df03194e62cdc39c303b8105ffp-3,
+    -0x1.304636p-3
+  },
+  { // Entry 286
+    0x1.3d3b712639f615986771a910d344617ep-3,
+    0x1.3bfa24p-3
+  },
+  { // Entry 287
+    -0x1.3d3b712639f615986771a910d344617ep-3,
+    -0x1.3bfa24p-3
+  },
+  { // Entry 288
+    0x1.4914714a38430228edb55e7949c30a96p-3,
+    0x1.47ae12p-3
+  },
+  { // Entry 289
+    -0x1.4914714a38430228edb55e7949c30a96p-3,
+    -0x1.47ae12p-3
+  },
+  { // Entry 290
+    0x1.49147350c990b8731b5aa06b375e9ad0p-3,
+    0x1.47ae14p-3
+  },
+  { // Entry 291
+    -0x1.49147350c990b8731b5aa06b375e9ad0p-3,
+    -0x1.47ae14p-3
+  },
+  { // Entry 292
+    0x1.227b2f3d30af1d4e22444c8e7f338460p-2,
+    0x1.1eb852p-2
+  },
+  { // Entry 293
+    -0x1.227b2f3d30af1d4e22444c8e7f338460p-2,
+    -0x1.1eb852p-2
+  },
+  { // Entry 294
+    0x1.a49c42670497025996a8b3ff42a49c6fp-2,
+    0x1.99999ap-2
+  },
+  { // Entry 295
+    -0x1.a49c42670497025996a8b3ff42a49c6fp-2,
+    -0x1.99999ap-2
+  },
+  { // Entry 296
+    0x1.1666dcd198ff92b46da6bfab8aba56a0p-1,
+    0x1.0a3d70p-1
+  },
+  { // Entry 297
+    -0x1.1666dcd198ff92b46da6bfab8aba56a0p-1,
+    -0x1.0a3d70p-1
+  },
+  { // Entry 298
+    0x1.5e8321e07e76d08e1e985ab3cd7da5b6p-1,
+    0x1.47ae14p-1
+  },
+  { // Entry 299
+    -0x1.5e8321e07e76d08e1e985ab3cd7da5b6p-1,
+    -0x1.47ae14p-1
+  },
+  { // Entry 300
+    0x1.abad14f0aa07a2fd5cc86f6098a8cf80p-1,
+    0x1.851eb8p-1
+  },
+  { // Entry 301
+    -0x1.abad14f0aa07a2fd5cc86f6098a8cf80p-1,
+    -0x1.851eb8p-1
+  },
+  { // Entry 302
+    0x1.ff0182668411539d3db9b8fd9af11fd0p-1,
+    0x1.c28f5cp-1
+  },
+  { // Entry 303
+    -0x1.ff0182668411539d3db9b8fd9af11fd0p-1,
+    -0x1.c28f5cp-1
+  },
+  { // Entry 304
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 305
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 306
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 307
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 308
+    0x1.95525e4a2ef718eb0754642866b5a7d4p3,
+    0x1.9de826p1
+  },
+  { // Entry 309
+    -0x1.95525e4a2ef718eb0754642866b5a7d4p3,
+    -0x1.9de826p1
+  },
+  { // Entry 310
+    0x1.d9a0eee58bbd37706f9307edad7da7ecp6,
+    0x1.5de826p2
+  },
+  { // Entry 311
+    -0x1.d9a0eee58bbd37706f9307edad7da7ecp6,
+    -0x1.5de826p2
+  },
+  { // Entry 312
+    0x1.144da80a2e3513241fedacab70954631p10,
+    0x1.ecdc38p2
+  },
+  { // Entry 313
+    -0x1.144da80a2e3513241fedacab70954631p10,
+    -0x1.ecdc38p2
+  },
+  { // Entry 314
+    0x1.425f2a3eb0771d774c3e790cd0f40c63p13,
+    0x1.3de826p3
+  },
+  { // Entry 315
+    -0x1.425f2a3eb0771d774c3e790cd0f40c63p13,
+    -0x1.3de826p3
+  },
+  { // Entry 316
+    0x1.781f001b7cc45e8c057d098d300a73d1p16,
+    0x1.856230p3
+  },
+  { // Entry 317
+    -0x1.781f001b7cc45e8c057d098d300a73d1p16,
+    -0x1.856230p3
+  },
+  { // Entry 318
+    0x1.b6d506c59d8cbe5c54f7f8927c597f84p19,
+    0x1.ccdc3ap3
+  },
+  { // Entry 319
+    -0x1.b6d506c59d8cbe5c54f7f8927c597f84p19,
+    -0x1.ccdc3ap3
+  },
+  { // Entry 320
+    0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 321
+    -0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 322
+    0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    0x1.62e42cp3
+  },
+  { // Entry 323
+    -0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    -0x1.62e42cp3
+  },
+  { // Entry 324
+    0x1.ffffe103c7009212034b389759a93fddp14,
+    0x1.62e42ep3
+  },
+  { // Entry 325
+    -0x1.ffffe103c7009212034b389759a93fddp14,
+    -0x1.62e42ep3
+  },
+  { // Entry 326
+    0x1.00000081e308873bf3c21c42db0354c7p15,
+    0x1.62e430p3
+  },
+  { // Entry 327
+    -0x1.00000081e308873bf3c21c42db0354c7p15,
+    -0x1.62e430p3
+  },
+  { // Entry 328
+    0x1.fffde082c48329d920ae3d83c4008840p6,
+    0x1.62e42cp2
+  },
+  { // Entry 329
+    -0x1.fffde082c48329d920ae3d83c4008840p6,
+    -0x1.62e42cp2
+  },
+  { // Entry 330
+    0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    0x1.62e42ep2
+  },
+  { // Entry 331
+    -0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    -0x1.62e42ep2
+  },
+  { // Entry 332
+    0x1.fffe0082e38b59068dc66cd507e027edp6,
+    0x1.62e430p2
+  },
+  { // Entry 333
+    -0x1.fffe0082e38b59068dc66cd507e027edp6,
+    -0x1.62e430p2
+  },
+  { // Entry 334
+    0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    0x1.62e42cp1
+  },
+  { // Entry 335
+    -0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    -0x1.62e42cp1
+  },
+  { // Entry 336
+    0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    0x1.62e42ep1
+  },
+  { // Entry 337
+    -0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    -0x1.62e42ep1
+  },
+  { // Entry 338
+    0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    0x1.62e430p1
+  },
+  { // Entry 339
+    -0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    -0x1.62e430p1
+  },
+  { // Entry 340
+    0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    0x1.62e42cp0
+  },
+  { // Entry 341
+    -0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    -0x1.62e42cp0
+  },
+  { // Entry 342
+    0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    0x1.62e42ep0
+  },
+  { // Entry 343
+    -0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    -0x1.62e42ep0
+  },
+  { // Entry 344
+    0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    0x1.62e430p0
+  },
+  { // Entry 345
+    -0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    -0x1.62e430p0
+  },
+  { // Entry 346
+    0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 347
+    -0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 348
+    0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 349
+    -0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 350
+    0x1.8000001473795004b7cd26f5470cab89p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 351
+    -0x1.8000001473795004b7cd26f5470cab89p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 352
+    0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 353
+    -0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 354
+    0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 355
+    -0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 356
+    0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    0x1.62e430p-2
+  },
+  { // Entry 357
+    -0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 358
+    0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 359
+    -0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 360
+    0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 361
+    -0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 362
+    0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 363
+    -0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 364
+    0x1.6355e30c5322853739b87125ec22bdecp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 365
+    -0x1.6355e30c5322853739b87125ec22bdecp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 366
+    0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 367
+    -0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 368
+    0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    0x1.62e430p-4
+  },
+  { // Entry 369
+    -0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 370
+    0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 371
+    -0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 372
+    0x1.630099b725ee198cf48f439e2807bf07p-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 373
+    -0x1.630099b725ee198cf48f439e2807bf07p-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 374
+    0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 375
+    -0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 376
+    0x1.62eb46cce5848efc0a888499742bfd4cp-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 377
+    -0x1.62eb46cce5848efc0a888499742bfd4cp-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 378
+    0x1.62eb48cd04449b44496ceeff57490075p-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 379
+    -0x1.62eb48cd04449b44496ceeff57490075p-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 380
+    0x1.62eb4acd2304a7e543238ca64b8cd689p-6,
+    0x1.62e430p-6
+  },
+  { // Entry 381
+    -0x1.62eb4acd2304a7e543238ca64b8cd689p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 382
+    -0x1.00000105c611505c7f74a519f94171b0p31,
+    -0x1.62e430p4
+  },
+  { // Entry 383
+    0x1.00000105c611505c7f74a519f94171b0p31,
+    0x1.62e430p4
+  },
+  { // Entry 384
+    -0x1.ffffc20b8fe12f0e17406ea1dc598aa0p30,
+    -0x1.62e42ep4
+  },
+  { // Entry 385
+    0x1.ffffc20b8fe12f0e17406ea1dc598aa0p30,
+    0x1.62e42ep4
+  },
+  { // Entry 386
+    -0x1.ffff820b9b9fbc6b5dd9c276569c9e77p30,
+    -0x1.62e42cp4
+  },
+  { // Entry 387
+    0x1.ffff820b9b9fbc6b5dd9c276569c9e77p30,
+    0x1.62e42cp4
+  },
+  { // Entry 388
+    -0x1.00000081e308873bf3c21c42db0354c7p15,
+    -0x1.62e430p3
+  },
+  { // Entry 389
+    0x1.00000081e308873bf3c21c42db0354c7p15,
+    0x1.62e430p3
+  },
+  { // Entry 390
+    -0x1.ffffe103c7009212034b389759a93fddp14,
+    -0x1.62e42ep3
+  },
+  { // Entry 391
+    0x1.ffffe103c7009212034b389759a93fddp14,
+    0x1.62e42ep3
+  },
+  { // Entry 392
+    -0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    -0x1.62e42cp3
+  },
+  { // Entry 393
+    0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    0x1.62e42cp3
+  },
+  { // Entry 394
+    -0x1.fffe0082e38b59068dc66cd507e027edp6,
+    -0x1.62e430p2
+  },
+  { // Entry 395
+    0x1.fffe0082e38b59068dc66cd507e027edp6,
+    0x1.62e430p2
+  },
+  { // Entry 396
+    -0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    -0x1.62e42ep2
+  },
+  { // Entry 397
+    0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    0x1.62e42ep2
+  },
+  { // Entry 398
+    -0x1.fffde082c48329d920ae3d83c4008840p6,
+    -0x1.62e42cp2
+  },
+  { // Entry 399
+    0x1.fffde082c48329d920ae3d83c4008840p6,
+    0x1.62e42cp2
+  },
+  { // Entry 400
+    -0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    -0x1.62e430p1
+  },
+  { // Entry 401
+    0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    0x1.62e430p1
+  },
+  { // Entry 402
+    -0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    -0x1.62e42ep1
+  },
+  { // Entry 403
+    0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    0x1.62e42ep1
+  },
+  { // Entry 404
+    -0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    -0x1.62e42cp1
+  },
+  { // Entry 405
+    0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    0x1.62e42cp1
+  },
+  { // Entry 406
+    -0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    -0x1.62e430p0
+  },
+  { // Entry 407
+    0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    0x1.62e430p0
+  },
+  { // Entry 408
+    -0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    -0x1.62e42ep0
+  },
+  { // Entry 409
+    0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    0x1.62e42ep0
+  },
+  { // Entry 410
+    -0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    -0x1.62e42cp0
+  },
+  { // Entry 411
+    0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    0x1.62e42cp0
+  },
+  { // Entry 412
+    -0x1.8000001473795004b7cd26f5470cab89p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 413
+    0x1.8000001473795004b7cd26f5470cab89p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 414
+    -0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 415
+    0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 416
+    -0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 417
+    0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 418
+    -0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 419
+    0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    0x1.62e430p-2
+  },
+  { // Entry 420
+    -0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 421
+    0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 422
+    -0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 423
+    0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 424
+    -0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 425
+    0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 426
+    -0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 427
+    0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 428
+    -0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 429
+    0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 430
+    -0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 431
+    0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    0x1.62e430p-4
+  },
+  { // Entry 432
+    -0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 433
+    0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 434
+    -0x1.6355e30c5322853739b87125ec22bdecp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 435
+    0x1.6355e30c5322853739b87125ec22bdecp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 436
+    -0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 437
+    0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 438
+    -0x1.630099b725ee198cf48f439e2807bf07p-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 439
+    0x1.630099b725ee198cf48f439e2807bf07p-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 440
+    -0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 441
+    0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 442
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 443
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 444
+    0.0,
+    0.0
+  },
+  { // Entry 445
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 446
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 447
+    0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    0x1.eb851cp-4
+  },
+  { // Entry 448
+    -0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    -0x1.eb851cp-4
+  },
+  { // Entry 449
+    0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    0x1.eb851ep-4
+  },
+  { // Entry 450
+    -0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    -0x1.eb851ep-4
+  },
+  { // Entry 451
+    0x1.ecb3551a3828b6429eb2a33a17713014p-4,
+    0x1.eb8520p-4
+  },
+  { // Entry 452
+    -0x1.ecb3551a3828b6429eb2a33a17713014p-4,
+    -0x1.eb8520p-4
+  },
+  { // Entry 453
+    0x1.0accffddb7a12b4e6a96d72af3961f53p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 454
+    -0x1.0accffddb7a12b4e6a96d72af3961f53p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 455
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 456
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 457
+    0x1.0acd033fbbeab766f2754da05aade930p-1,
+    0x1.000002p-1
+  },
+  { // Entry 458
+    -0x1.0acd033fbbeab766f2754da05aade930p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 459
+    0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    0x1.fffffep-1
+  },
+  { // Entry 460
+    -0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 461
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 462
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 463
+    0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    0x1.000002p0
+  },
+  { // Entry 464
+    -0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    -0x1.000002p0
+  },
+  { // Entry 465
+    0x1.ab5aa630eb432540ea7a11d9455e5b65p30,
+    0x1.5ffffep4
+  },
+  { // Entry 466
+    -0x1.ab5aa630eb432540ea7a11d9455e5b65p30,
+    -0x1.5ffffep4
+  },
+  { // Entry 467
+    0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    0x1.60p4
+  },
+  { // Entry 468
+    -0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    -0x1.60p4
+  },
+  { // Entry 469
+    0x1.ab5b1107a22a36602250dcbb2b7eed81p30,
+    0x1.600002p4
+  },
+  { // Entry 470
+    -0x1.ab5b1107a22a36602250dcbb2b7eed81p30,
+    -0x1.600002p4
+  },
+  { // Entry 471
+    0x1.226aceedc3b97c2a0dd7e83bf16d5abdp32,
+    0x1.6ffffep4
+  },
+  { // Entry 472
+    -0x1.226aceedc3b97c2a0dd7e83bf16d5abdp32,
+    -0x1.6ffffep4
+  },
+  { // Entry 473
+    0x1.226af33b1fdc0a574c76ab2161309880p32,
+    0x1.70p4
+  },
+  { // Entry 474
+    -0x1.226af33b1fdc0a574c76ab2161309880p32,
+    -0x1.70p4
+  },
+  { // Entry 475
+    0x1.226b1788808844517796616972748648p32,
+    0x1.700002p4
+  },
+  { // Entry 476
+    -0x1.226b1788808844517796616972748648p32,
+    -0x1.700002p4
+  },
+  { // Entry 477
+    0x1.ffff8188b8b59acbb8a36c9f1de4adc7p22,
+    0x1.0a2b20p4
+  },
+  { // Entry 478
+    -0x1.ffff8188b8b59acbb8a36c9f1de4adc7p22,
+    -0x1.0a2b20p4
+  },
+  { // Entry 479
+    0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 480
+    -0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 481
+    0x1.000000c4548be32ddd1950fdd39f4c49p23,
+    0x1.0a2b24p4
+  },
+  { // Entry 482
+    -0x1.000000c4548be32ddd1950fdd39f4c49p23,
+    -0x1.0a2b24p4
+  },
+  { // Entry 483
+    0x1.ffffbec45834f71f62c471559658238ap10,
+    0x1.0a2b20p3
+  },
+  { // Entry 484
+    -0x1.ffffbec45834f71f62c471559658238ap10,
+    -0x1.0a2b20p3
+  },
+  { // Entry 485
+    0x1.ffffdec455613c8f512d34bec21133e4p10,
+    0x1.0a2b22p3
+  },
+  { // Entry 486
+    -0x1.ffffdec455613c8f512d34bec21133e4p10,
+    -0x1.0a2b22p3
+  },
+  { // Entry 487
+    0x1.fffffec4548d81de03eb840f2501233dp10,
+    0x1.0a2b24p3
+  },
+  { // Entry 488
+    -0x1.fffffec4548d81de03eb840f2501233dp10,
+    -0x1.0a2b24p3
+  },
+  { // Entry 489
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 490
+    -0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 491
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 492
+    -0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 493
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 494
+    -HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 495
+    -HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 496
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 497
+    -0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 498
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 499
+    -0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 500
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 501
+    0x1.fffffe00000000055555455555655559p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 502
+    -0x1.fffffe00000000055555455555655559p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 503
+    0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    0x1.p-30
+  },
+  { // Entry 504
+    -0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    -0x1.p-30
+  },
+  { // Entry 505
+    0x1.0000020000000002aaaabaaaaacaaaacp-30,
+    0x1.000002p-30
+  },
+  { // Entry 506
+    -0x1.0000020000000002aaaabaaaaacaaaacp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 507
+    0x1.fffffe0155555155999d984449720172p-16,
+    0x1.fffffep-16
+  },
+  { // Entry 508
+    -0x1.fffffe0155555155999d984449720172p-16,
+    -0x1.fffffep-16
+  },
+  { // Entry 509
+    0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    0x1.p-15
+  },
+  { // Entry 510
+    -0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    -0x1.p-15
+  },
+  { // Entry 511
+    0x1.00000200aaaaaeaaccd4ce222abd00fdp-15,
+    0x1.000002p-15
+  },
+  { // Entry 512
+    -0x1.00000200aaaaaeaaccd4ce222abd00fdp-15,
+    -0x1.000002p-15
+  },
+  { // Entry 513
+    0x1.0002a9acc4cd92374b92f33d0d8e44f7p-6,
+    0x1.fffffep-7
+  },
+  { // Entry 514
+    -0x1.0002a9acc4cd92374b92f33d0d8e44f7p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 515
+    0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    0x1.p-6
+  },
+  { // Entry 516
+    -0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    -0x1.p-6
+  },
+  { // Entry 517
+    0x1.0002acacdccdb24f5ce4216260c9d73ep-6,
+    0x1.000002p-6
+  },
+  { // Entry 518
+    -0x1.0002acacdccdb24f5ce4216260c9d73ep-6,
+    -0x1.000002p-6
+  },
+  { // Entry 519
+    0x1.000aa9ccad0025af274480ba84b0fbbcp-5,
+    0x1.fffffep-6
+  },
+  { // Entry 520
+    -0x1.000aa9ccad0025af274480ba84b0fbbcp-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 521
+    0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    0x1.p-5
+  },
+  { // Entry 522
+    -0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    -0x1.p-5
+  },
+  { // Entry 523
+    0x1.000aaccd0d0226136f8e122926144f90p-5,
+    0x1.000002p-5
+  },
+  { // Entry 524
+    -0x1.000aaccd0d0226136f8e122926144f90p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 525
+    0x1.002aabcc59c3209063dc64ea2e03bf70p-4,
+    0x1.fffffep-5
+  },
+  { // Entry 526
+    -0x1.002aabcc59c3209063dc64ea2e03bf70p-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 527
+    0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    0x1.p-4
+  },
+  { // Entry 528
+    -0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    -0x1.p-4
+  },
+  { // Entry 529
+    0x1.002aaecdd9e32321b9d285e5bac4a4bdp-4,
+    0x1.000002p-4
+  },
+  { // Entry 530
+    -0x1.002aaecdd9e32321b9d285e5bac4a4bdp-4,
+    -0x1.000002p-4
+  },
+  { // Entry 531
+    0x1.00aacbce0c844e1659887b1aa3a95e84p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 532
+    -0x1.00aacbce0c844e1659887b1aa3a95e84p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 533
+    0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    0x1.p-3
+  },
+  { // Entry 534
+    -0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    -0x1.p-3
+  },
+  { // Entry 535
+    0x1.00aaced40e8498637f252d2fe50c3df3p-3,
+    0x1.000002p-3
+  },
+  { // Entry 536
+    -0x1.00aaced40e8498637f252d2fe50c3df3p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 537
+    0x1.02accc94fd5fc9d5c6d93f41fe780d47p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 538
+    -0x1.02accc94fd5fc9d5c6d93f41fe780d47p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 539
+    0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    0x1.p-2
+  },
+  { // Entry 540
+    -0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    -0x1.p-2
+  },
+  { // Entry 541
+    0x1.02accfad1d70f80837554f9fbb4fbbb9p-2,
+    0x1.000002p-2
+  },
+  { // Entry 542
+    -0x1.02accfad1d70f80837554f9fbb4fbbb9p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 543
+    0x1.d03cf2784edbd911feefcda4d65799f9p1,
+    0x1.fffffep0
+  },
+  { // Entry 544
+    -0x1.d03cf2784edbd911feefcda4d65799f9p1,
+    -0x1.fffffep0
+  },
+  { // Entry 545
+    0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    0x1.p1
+  },
+  { // Entry 546
+    -0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    -0x1.p1
+  },
+  { // Entry 547
+    0x1.d03cfdc1acabf591817690cd031d2cc7p1,
+    0x1.000002p1
+  },
+  { // Entry 548
+    -0x1.d03cfdc1acabf591817690cd031d2cc7p1,
+    -0x1.000002p1
+  },
+  { // Entry 549
+    0x1.b4a37963495a7a1c36845b0346599916p4,
+    0x1.fffffep1
+  },
+  { // Entry 550
+    -0x1.b4a37963495a7a1c36845b0346599916p4,
+    -0x1.fffffep1
+  },
+  { // Entry 551
+    0x1.b4a3803703630c8fe70261d92e563a88p4,
+    0x1.p2
+  },
+  { // Entry 552
+    -0x1.b4a3803703630c8fe70261d92e563a88p4,
+    -0x1.p2
+  },
+  { // Entry 553
+    0x1.b4a38dde77c6101fbf8ab4c24ce6ac27p4,
+    0x1.000002p2
+  },
+  { // Entry 554
+    -0x1.b4a38dde77c6101fbf8ab4c24ce6ac27p4,
+    -0x1.000002p2
+  },
+  { // Entry 555
+    0x1.749e996ff7805133d5d6b4402bd52f34p10,
+    0x1.fffffep2
+  },
+  { // Entry 556
+    -0x1.749e996ff7805133d5d6b4402bd52f34p10,
+    -0x1.fffffep2
+  },
+  { // Entry 557
+    0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    0x1.p3
+  },
+  { // Entry 558
+    -0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    -0x1.p3
+  },
+  { // Entry 559
+    0x1.749ebc5ed809ebabcca514f4a486c5a8p10,
+    0x1.000002p3
+  },
+  { // Entry 560
+    -0x1.749ebc5ed809ebabcca514f4a486c5a8p10,
+    -0x1.000002p3
+  },
+  { // Entry 561
+    0x1.0f2eac1794b52d4201f8831417012cc1p22,
+    0x1.fffffep3
+  },
+  { // Entry 562
+    -0x1.0f2eac1794b52d4201f8831417012cc1p22,
+    -0x1.fffffep3
+  },
+  { // Entry 563
+    0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    0x1.p4
+  },
+  { // Entry 564
+    -0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    -0x1.p4
+  },
+  { // Entry 565
+    0x1.0f2edef059bdeb7814367009089b255ap22,
+    0x1.000002p4
+  },
+  { // Entry 566
+    -0x1.0f2edef059bdeb7814367009089b255ap22,
+    -0x1.000002p4
+  },
+  { // Entry 567
+    0x1.1f43d8dc3908b8ed87a5abc6c3ed2c73p45,
+    0x1.fffffep4
+  },
+  { // Entry 568
+    -0x1.1f43d8dc3908b8ed87a5abc6c3ed2c73p45,
+    -0x1.fffffep4
+  },
+  { // Entry 569
+    0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    0x1.p5
+  },
+  { // Entry 570
+    -0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    -0x1.p5
+  },
+  { // Entry 571
+    0x1.1f444495be8e1616a1e5e37a356cd622p45,
+    0x1.000002p5
+  },
+  { // Entry 572
+    -0x1.1f444495be8e1616a1e5e37a356cd622p45,
+    -0x1.000002p5
+  },
+  { // Entry 573
+    0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    0x1.fffffep5
+  },
+  { // Entry 574
+    -0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    -0x1.fffffep5
+  },
+  { // Entry 575
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.p6
+  },
+  { // Entry 576
+    -0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.p6
+  },
+  { // Entry 577
+    0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    0x1.000002p6
+  },
+  { // Entry 578
+    -0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    -0x1.000002p6
+  },
+  { // Entry 579
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 580
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 581
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 582
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 583
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 584
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 585
+    HUGE_VALF,
+    0x1.fffffcp127
+  },
+  { // Entry 586
+    0x1.718f47f73f26d7350c83f4c71e2d335ep3,
+    0x1.921fb6p1
+  },
+  { // Entry 587
+    0x1.2690f74d668ce2b3a755fcc5d03d001ap1,
+    0x1.921fb6p0
+  },
+  { // Entry 588
+    0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    0x1.000002p0
+  },
+  { // Entry 589
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 590
+    0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    0x1.fffffep-1
+  },
+  { // Entry 591
+    0x1.bcc271add0bab156a8d0a0df56b0db93p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 592
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 593
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 594
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 595
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 596
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 597
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 598
+    0.0,
+    0.0f
+  },
+  { // Entry 599
+    -0.0,
+    -0.0f
+  },
+  { // Entry 600
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 601
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 602
+    -0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 603
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 604
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 605
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 606
+    -0x1.bcc271add0bab156a8d0a0df56b0db93p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 607
+    -0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 608
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 609
+    -0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    -0x1.000002p0
+  },
+  { // Entry 610
+    -0x1.2690f74d668ce2b3a755fcc5d03d001ap1,
+    -0x1.921fb6p0
+  },
+  { // Entry 611
+    -0x1.718f47f73f26d7350c83f4c71e2d335ep3,
+    -0x1.921fb6p1
+  },
+  { // Entry 612
+    -HUGE_VALF,
+    -0x1.fffffcp127
+  },
+  { // Entry 613
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 614
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 615
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 616
+    -0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 617
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 618
+    -HUGE_VALF,
+    -0x1.65a9fap6
+  }
+};
diff --git a/tests/math_data/sqrt_intel_data.h b/tests/math_data/sqrt_intel_data.h
new file mode 100644
index 0000000..c3417b8
--- /dev/null
+++ b/tests/math_data/sqrt_intel_data.h
@@ -0,0 +1,718 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_sqrt_intel_data[] = {
+  { // Entry 0
+    0x1.00000000000007ffffffffffffe0p-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 1
+    0x1.00000000000007ffffffffffffe0p-5,
+    0x1.0000000000001p-10
+  },
+  { // Entry 2
+    0x1.00000000000007ffffffffffffe0p-20,
+    0x1.0000000000001p-40
+  },
+  { // Entry 3
+    0x1.6a09e667f3bcd459022e5304d0b08199p-511,
+    0x1.0000000000001p-1021
+  },
+  { // Entry 4
+    0x1.00000000000007ffffffffffffe0p-511,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 5
+    0x1.00000000000007ffffffffffffe0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 6
+    0x1.00000000000007ffffffffffffe0p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 7
+    0x1.0000000000000fffffffffffff80p0,
+    0x1.0000000000002p0
+  },
+  { // Entry 8
+    0x1.6a09e667f3bceaf9a094d2409bd702e2p-3,
+    0x1.0000000000003p-5
+  },
+  { // Entry 9
+    0x1.6a09e667f3bceaf9a094d2409bd702e2p-511,
+    0x1.0000000000003p-1021
+  },
+  { // Entry 10
+    0x1.00000000000017fffffffffffee0p-511,
+    0x1.0000000000003p-1022
+  },
+  { // Entry 11
+    0x1.6a09e667f3bceaf9a094d2409bd702e2p0,
+    0x1.0000000000003p1
+  },
+  { // Entry 12
+    0x1.00000000000037fffffffffff9e0p-3,
+    0x1.0000000000007p-6
+  },
+  { // Entry 13
+    0x1.00000000000037fffffffffff9e0p-511,
+    0x1.0000000000007p-1022
+  },
+  { // Entry 14
+    0x1.00000000000077ffffffffffe3e0p-1,
+    0x1.000000000000fp-2
+  },
+  { // Entry 15
+    0x1.6a09e667f40bfb3319b85c0967d96777p-21,
+    0x1.00000000007p-41
+  },
+  { // Entry 16
+    0x1.0000003ffffff8000001ffffff60p-10,
+    0x1.0000008p-20
+  },
+  { // Entry 17
+    0x1.0000007fffffe000000ffffff6000006p-20,
+    0x1.0000010p-40
+  },
+  { // Entry 18
+    0x1.000000ffffef78001087ff66d3e1aa74p-503,
+    0x1.000001ffffdffp-1006
+  },
+  { // Entry 19
+    0x1.000000ffffef8000107fff676001a8dfp-509,
+    0x1.000001ffffep-1018
+  },
+  { // Entry 20
+    0x1.000001fffffe000003fffff600001bffp50,
+    0x1.0000040p100
+  },
+  { // Entry 21
+    0x1.000001fffffe880002effff90be01238p-10,
+    0x1.0000040000011p-20
+  },
+  { // Entry 22
+    0x1.6a0a40db7d51f00038bb4d171626c123p-500,
+    0x1.00007feafp-999
+  },
+  { // Entry 23
+    0x1.6a2bd5be688300293f34c09a864348a7p-511,
+    0x1.003p-1021
+  },
+  { // Entry 24
+    0x1.6a6521b171386b3e9c9708c18094f81ep1,
+    0x1.0081159eb7531p3
+  },
+  { // Entry 25
+    0x1.6b20018577e83a548e15ae72516a45e5p1,
+    0x1.0189e42871b67p3
+  },
+  { // Entry 26
+    0x1.030dc4eb8784b800006b31393def4b78p-5,
+    0x1.0624dd322b9bdp-10
+  },
+  { // Entry 27
+    0x1.030dc4f1684a3000002a2118b9ff4fc3p-5,
+    0x1.0624dd3e110d4p-10
+  },
+  { // Entry 28
+    0x1.030dc4f1696f97ffffdbf85c70af7a32p-5,
+    0x1.0624dd3e135f1p-10
+  },
+  { // Entry 29
+    0x1.030dc4fce267800000008a6d267d447fp-5,
+    0x1.0624dd554b60ap-10
+  },
+  { // Entry 30
+    0x1.6e9b2675a66267ffc501a2a352d80cadp-11,
+    0x1.068p-21
+  },
+  { // Entry 31
+    0x1.6e9b2675a66267ffc501a2a352d80cadp-18,
+    0x1.068p-35
+  },
+  { // Entry 32
+    0x1.6ede29b025aaf0011c319ebac8dce9fap-11,
+    0x1.06ep-21
+  },
+  { // Entry 33
+    0x1.717983890b6a97fffff1c9e6db43dc37p48,
+    0x1.0a9fc36f5705dp97
+  },
+  { // Entry 34
+    0x1.752deb01e1aa48002dcf5a4f55adabf7p-4,
+    0x1.0fff6b87f90p-7
+  },
+  { // Entry 35
+    0x1.76356020885cca53989372a8049c6ccbp-11,
+    0x1.118p-21
+  },
+  { // Entry 36
+    0x1.7b63945a7c4cb40027ac4d7964bdfdffp-11,
+    0x1.192p-21
+  },
+  { // Entry 37
+    0x1.83821c9ec9b2a8003b649ec5754fa2e6p-6,
+    0x1.2549525495251p-11
+  },
+  { // Entry 38
+    0x1.8ac40868f92c17ff0ecf9e6c802c000ap-11,
+    0x1.306p-21
+  },
+  { // Entry 39
+    0x1.1a9dc8f6df10380eb98f9c8f8ada2dc3p-10,
+    0x1.380p-20
+  },
+  { // Entry 40
+    0x1.1a9dc8f6df10380eb98f9c8f8ada2dc3p-20,
+    0x1.380p-40
+  },
+  { // Entry 41
+    0x1.1d43ad1c267397ff000366e504ec0904p0,
+    0x1.3ddfc154bf689p0
+  },
+  { // Entry 42
+    0x1.2d4d2aa66779740440a7ac683ca92be7p0,
+    0x1.629e8d8dfe88ep0
+  },
+  { // Entry 43
+    0x1.ae89f995ad3ab3fed29f3cdde669565cp-1,
+    0x1.6a09e667f3bc9p-1
+  },
+  { // Entry 44
+    0x1.bb67ae8584caa73b25742d7078b83b89p-537,
+    0x1.8p-1073
+  },
+  { // Entry 45
+    0x1.bb67ae86abb307ffff9450222403ce3fp0,
+    0x1.80000001fecb9p1
+  },
+  { // Entry 46
+    0x1.404b92fd6a8120001cc2a21eb82dc383p-1,
+    0x1.90bd05c8ff254p-2
+  },
+  { // Entry 47
+    0x1.43d1363d61aec800006b07fe0fefdfa2p-2,
+    0x1.999999d880368p-4
+  },
+  { // Entry 48
+    0x1.4e78ac22c6f5e800ffc121b0def932c0p5,
+    0x1.b4ff1a0c9382fp10
+  },
+  { // Entry 49
+    0x1.50144b1c72dd17ff0012ebc586f4e10fp-519,
+    0x1.b93546c68p-1038
+  },
+  { // Entry 50
+    0x1.dfd052dbe76857ff0b1587ce79a18a73p7,
+    0x1.c1a69fccd6111p15
+  },
+  { // Entry 51
+    0x1.e4826468545d31f66cbd21db9f6249b7p-1,
+    0x1.ca7ea70a502bep-1
+  },
+  { // Entry 52
+    0x1.e96948d224f0585c0f7a85d30932126dp1,
+    0x1.d3d1b1bfd11bbp3
+  },
+  { // Entry 53
+    0x1.ee51da20312bfe8a4722b6c085901297p-512,
+    0x1.dd3fffffffffep-1023
+  },
+  { // Entry 54
+    0x1.5f744159f7e5efff106d1c5d5d64aa8dp-10,
+    0x1.e28p-20
+  },
+  { // Entry 55
+    0x1.fdcecc6f3d49e79e3d375b22e0b9f4b1p-11,
+    0x1.fbap-21
+  },
+  { // Entry 56
+    0x1.fe35a055fc4be7fc5f7d57d28e7bd1a7p0,
+    0x1.fc6cdb0930a24p1
+  },
+  { // Entry 57
+    0x1.feadd22799ac4801f8159ee8a6db5ef2p-1,
+    0x1.fd5c83adbf2a9p-1
+  },
+  { // Entry 58
+    0x1.ffbffbff80080000000200300a02205cp-5,
+    0x1.ff80000000380p-9
+  },
+  { // Entry 59
+    0x1.ffefffbffdffdbfe9fef7f2bf4ab6197p-512,
+    0x1.ffdfffffffffep-1023
+  },
+  { // Entry 60
+    0x1.ffff7fffeffff3fffcbffecfff75ffc0p-21,
+    0x1.fffefffffffffp-41
+  },
+  { // Entry 61
+    0x1.fffff3ffffdbf7ff27cff9aa4fbac71dp-21,
+    0x1.ffffe7fffffffp-41
+  },
+  { // Entry 62
+    0x1.fffff3ffffdbf7ff27cff9aa4fbac71dp-23,
+    0x1.ffffe7fffffffp-45
+  },
+  { // Entry 63
+    0x1.ffffff800000e0000037ffffdcffffdep-488,
+    0x1.ffffff000001ep-975
+  },
+  { // Entry 64
+    0x1.ffffff8000010000003fffffcfffffd4p-26,
+    0x1.ffffff0000022p-51
+  },
+  { // Entry 65
+    0x1.fffffff9fffff7f6ffffe7e4ffef939ap-21,
+    0x1.fffffff3fffffp-41
+  },
+  { // Entry 66
+    0x1.fffffffe000017ff000017feff7023fep-5,
+    0x1.fffffffc00003p-9
+  },
+  { // Entry 67
+    0x1.fffffffe000017ff000017feff7023fep-6,
+    0x1.fffffffc00003p-11
+  },
+  { // Entry 68
+    0x1.fffffffe000017ff000017feff7023fep-21,
+    0x1.fffffffc00003p-41
+  },
+  { // Entry 69
+    0x1.fffffffe000017ff000017feff7023fep-156,
+    0x1.fffffffc00003p-311
+  },
+  { // Entry 70
+    0x1.fffffffe000017ff000017feff7023fep-511,
+    0x1.fffffffc00003p-1021
+  },
+  { // Entry 71
+    0x1.fffffffe3ffff7ff3bfff8ff546ff6cfp-21,
+    0x1.fffffffc7ffffp-41
+  },
+  { // Entry 72
+    0x1.6a09e667f3b858019b5c99e309b9080ap-3,
+    0x1.fffffffffff37p-6
+  },
+  { // Entry 73
+    0x1.fffffffffffd77fffffffffe65efffffp-1,
+    0x1.fffffffffffafp-1
+  },
+  { // Entry 74
+    0x1.fffffffffffd77fffffffffe65efffffp-5,
+    0x1.fffffffffffafp-9
+  },
+  { // Entry 75
+    0x1.fffffffffffd77fffffffffe65efffffp-511,
+    0x1.fffffffffffafp-1021
+  },
+  { // Entry 76
+    0x1.ffffffffffff37ffffffffffd8efffffp1,
+    0x1.fffffffffffe7p3
+  },
+  { // Entry 77
+    0x1.ffffffffffffefffffffffffffbfffffp-4,
+    0x1.ffffffffffffep-7
+  },
+  { // Entry 78
+    0x1.ffffffffffffefffffffffffffbfffffp-21,
+    0x1.ffffffffffffep-41
+  },
+  { // Entry 79
+    0x1.ffffffffffffefffffffffffffbfffffp-511,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 80
+    0x1.fffffffffffff7ffffffffffffefffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    0x1.fffffffffffff7ffffffffffffefffffp-4,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 82
+    0x1.fffffffffffff7ffffffffffffefffffp-21,
+    0x1.fffffffffffffp-41
+  },
+  { // Entry 83
+    0x1.fffffffffffff7ffffffffffffefffffp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 84
+    0x1.306fe0a31b71419ddec788789fb4580ap-1,
+    0x1.6a09e667f3bcap-2
+  },
+  { // Entry 85
+    0x1.306fe0a31b71485806addf2d8b5a8b60p-1,
+    0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 86
+    0x1.306fe0a31b714f122e9435e276dab0b9p-1,
+    0x1.6a09e667f3bccp-2
+  },
+  { // Entry 87
+    0x1.306fe0a31b7155cc567a8c976234c817p-1,
+    0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 88
+    0x1.306fe0a31b715c867e60e34c4d68d179p-1,
+    0x1.6a09e667f3bcep-2
+  },
+  { // Entry 89
+    0x1.ae89f995ad3abd8251a455b971a538dbp-1,
+    0x1.6a09e667f3bcap-1
+  },
+  { // Entry 90
+    0x1.ae89f995ad3ac705d0a96e94fcab4a1ap-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 91
+    0x1.ae89f995ad3ad0894fae8770877b8a1bp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 92
+    0x1.ae89f995ad3ada0cceb3a04c1215f8ddp-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 93
+    0x1.ae89f995ad3ae3904db8b9279c7a965fp-1,
+    0x1.6a09e667f3bcep-1
+  },
+  { // Entry 94
+    0x1.306fe0a31b71419ddec788789fb4580ap0,
+    0x1.6a09e667f3bcap0
+  },
+  { // Entry 95
+    0x1.306fe0a31b71485806addf2d8b5a8b60p0,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 96
+    0x1.306fe0a31b714f122e9435e276dab0b9p0,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 97
+    0x1.306fe0a31b7155cc567a8c976234c817p0,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 98
+    0x1.306fe0a31b715c867e60e34c4d68d179p0,
+    0x1.6a09e667f3bcep0
+  },
+  { // Entry 99
+    0x1.ae89f995ad3abd8251a455b971a538dbp0,
+    0x1.6a09e667f3bcap1
+  },
+  { // Entry 100
+    0x1.ae89f995ad3ac705d0a96e94fcab4a1ap0,
+    0x1.6a09e667f3bcbp1
+  },
+  { // Entry 101
+    0x1.ae89f995ad3ad0894fae8770877b8a1bp0,
+    0x1.6a09e667f3bccp1
+  },
+  { // Entry 102
+    0x1.ae89f995ad3ada0cceb3a04c1215f8ddp0,
+    0x1.6a09e667f3bcdp1
+  },
+  { // Entry 103
+    0x1.ae89f995ad3ae3904db8b9279c7a965fp0,
+    0x1.6a09e667f3bcep1
+  },
+  { // Entry 104
+    0x1.fffffffffffff7ffffffffffffefffffp-4,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 105
+    0x1.p-3,
+    0x1.0p-6
+  },
+  { // Entry 106
+    0x1.00000000000007ffffffffffffe0p-3,
+    0x1.0000000000001p-6
+  },
+  { // Entry 107
+    0x1.6a09e667f3bcc3608b617397f7660a23p-3,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 108
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-3,
+    0x1.0p-5
+  },
+  { // Entry 109
+    0x1.6a09e667f3bcd459022e5304d0b08199p-3,
+    0x1.0000000000001p-5
+  },
+  { // Entry 110
+    0x1.fffffffffffff7ffffffffffffefffffp-3,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 111
+    0x1.p-2,
+    0x1.0p-4
+  },
+  { // Entry 112
+    0x1.00000000000007ffffffffffffe0p-2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 113
+    0x1.6a09e667f3bcc3608b617397f7660a23p-2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 114
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-2,
+    0x1.0p-3
+  },
+  { // Entry 115
+    0x1.6a09e667f3bcd459022e5304d0b08199p-2,
+    0x1.0000000000001p-3
+  },
+  { // Entry 116
+    0x1.fffffffffffff7ffffffffffffefffffp-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 117
+    0x1.p-1,
+    0x1.0p-2
+  },
+  { // Entry 118
+    0x1.00000000000007ffffffffffffe0p-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 119
+    0x1.6a09e667f3bcc3608b617397f7660a23p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 120
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.0p-1
+  },
+  { // Entry 121
+    0x1.6a09e667f3bcd459022e5304d0b08199p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 122
+    0x1.fffffffffffff7ffffffffffffefffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 123
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 124
+    0x1.00000000000007ffffffffffffe0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 125
+    0x1.6a09e667f3bcc3608b617397f7660a23p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 126
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p1
+  },
+  { // Entry 127
+    0x1.6a09e667f3bcd459022e5304d0b08199p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 128
+    0x1.fffffffffffff7ffffffffffffefffffp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 129
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 130
+    0x1.00000000000007ffffffffffffe0p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 131
+    -0.0,
+    -0.0
+  },
+  { // Entry 132
+    0x1.p-537,
+    0x1.0p-1074
+  },
+  { // Entry 133
+    0x1.ffffffffffffefffffffffffffbfffffp-512,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 134
+    0x1.p-511,
+    0x1.0p-1022
+  },
+  { // Entry 135
+    0x1.00000000000007ffffffffffffe0p-511,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 136
+    0x1.p-537,
+    0x1.0p-1074
+  },
+  { // Entry 137
+    0x1.279a74590331d74bc03dae7e16ded15bp-512,
+    0x1.5555555555558p-1024
+  },
+  { // Entry 138
+    0x1.a20bd700c2c3e64872281df887e3cbf1p-512,
+    0x1.5555555555556p-1023
+  },
+  { // Entry 139
+    0x1.ffffffffffffefffffffffffffbfffffp-512,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 140
+    0x1.ffffffffece09fffffa494f9e6fc95edp-1,
+    0x1.ffffffffd9c14p-1
+  },
+  { // Entry 141
+    0x1.ffffffffece0a7ffffa49546646c95f1p-1,
+    0x1.ffffffffd9c15p-1
+  },
+  { // Entry 142
+    0x1.ffffffffece0afffffa49592e1bc95f5p-1,
+    0x1.ffffffffd9c16p-1
+  },
+  { // Entry 143
+    0x1.ffffffffece0b7ffffa495df5eec95fap-1,
+    0x1.ffffffffd9c17p-1
+  },
+  { // Entry 144
+    0x1.ffffffffece0bfffffa4962bdbfc95fep-1,
+    0x1.ffffffffd9c18p-1
+  },
+  { // Entry 145
+    0x1.ffffffffeae35fffff9092a326fb67c8p-1,
+    0x1.ffffffffd5c6cp-1
+  },
+  { // Entry 146
+    0x1.ffffffffeae367ffff9092f7996b67cep-1,
+    0x1.ffffffffd5c6dp-1
+  },
+  { // Entry 147
+    0x1.ffffffffeae36fffff90934c0bbb67d3p-1,
+    0x1.ffffffffd5c6ep-1
+  },
+  { // Entry 148
+    0x1.ffffffffeae377ffff9093a07deb67d8p-1,
+    0x1.ffffffffd5c6fp-1
+  },
+  { // Entry 149
+    0x1.ffffffffeae37fffff9093f4effb67ddp-1,
+    0x1.ffffffffd5c70p-1
+  },
+  { // Entry 150
+    0x1.fffffffffffff7ffffffffffffefffffp511,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 151
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 152
+    0x1.fffffffffffff7ffffffffffffefffffp511,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 153
+    0x1.ffffffffffffefffffffffffffbfffffp511,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 154
+    0x1.c5bf891b4ef6a7fc7dc11ccf9559536ep0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 155
+    0x1.40d931ff627057a2dddf7c87edb63664p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 156
+    0x1.00000000000007ffffffffffffe0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 157
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 158
+    0x1.fffffffffffff7ffffffffffffefffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 159
+    0x1.c5bf891b4ef6a7fc7dc11ccf9559536ep-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 160
+    0x1.00000000000007ffffffffffffe0p-511,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 161
+    0x1.p-511,
+    0x1.0p-1022
+  },
+  { // Entry 162
+    0x1.ffffffffffffefffffffffffffbfffffp-512,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 163
+    0x1.ffffffffffffdffffffffffffeffffffp-512,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 164
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-537,
+    0x1.0p-1073
+  },
+  { // Entry 165
+    0x1.p-537,
+    0x1.0p-1074
+  },
+  { // Entry 166
+    0.0,
+    0.0
+  },
+  { // Entry 167
+    -0.0,
+    -0.0
+  },
+  { // Entry 168
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 169
+    0x1.p2,
+    0x1.0p4
+  },
+  { // Entry 170
+    0x1.80p1,
+    0x1.2p3
+  },
+  { // Entry 171
+    0x1.40p2,
+    0x1.9p4
+  },
+  { // Entry 172
+    0x1.p-1,
+    0x1.0p-2
+  },
+  { // Entry 173
+    0x1.c0p2,
+    0x1.880p5
+  },
+  { // Entry 174
+    0x1.40p3,
+    0x1.9p6
+  }
+};
diff --git a/tests/math_data/sqrtf_intel_data.h b/tests/math_data/sqrtf_intel_data.h
new file mode 100644
index 0000000..bd07143
--- /dev/null
+++ b/tests/math_data/sqrtf_intel_data.h
@@ -0,0 +1,710 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_sqrtf_intel_data[] = {
+  { // Entry 0
+    0x1.p-1,
+    0x1.p-2
+  },
+  { // Entry 1
+    0x1.p-10,
+    0x1.p-20
+  },
+  { // Entry 2
+    0x1.000000ffffff8000007fffff600000dfp-1,
+    0x1.000002p-2
+  },
+  { // Entry 3
+    0x1.000000ffffff8000007fffff600000dfp-20,
+    0x1.000002p-40
+  },
+  { // Entry 4
+    0x1.000000ffffff8000007fffff600000dfp-63,
+    0x1.000002p-126
+  },
+  { // Entry 5
+    0x1.6a09eaa61169a3b76f99ea0d364efd91p-63,
+    0x1.000006p-125
+  },
+  { // Entry 6
+    0x1.6a0a0584cc337abc8740253db45a12f6p-3,
+    0x1.00002cp-5
+  },
+  { // Entry 7
+    0x1.6a0a1ef97b51a8def43dbb5dc7f37ff0p-11,
+    0x1.000050p-21
+  },
+  { // Entry 8
+    0x1.6a0a1ef97b51a8def43dbb5dc7f37ff0p-18,
+    0x1.000050p-35
+  },
+  { // Entry 9
+    0x1.6a0a359a157a0b9bd4ff286a2eab2edfp-21,
+    0x1.000070p-41
+  },
+  { // Entry 10
+    0x1.6a0a9898a74a019a7cc18157814e39d9p-6,
+    0x1.0000fcp-11
+  },
+  { // Entry 11
+    0x1.6a0a9898a74a019a7cc18157814e39d9p-59,
+    0x1.0000fcp-117
+  },
+  { // Entry 12
+    0x1.6a0a9898a74a019a7cc18157814e39d9p-61,
+    0x1.0000fcp-121
+  },
+  { // Entry 13
+    0x1.6a0a9898a74a019a7cc18157814e39d9p1,
+    0x1.0000fcp3
+  },
+  { // Entry 14
+    0x1.6a0ab377552adf71413bdc5fdf2d3e0dp63,
+    0x1.000122p127
+  },
+  { // Entry 15
+    0x1.6a0b1d87f00e99851a9dcb6fb9c2d56ep-3,
+    0x1.0001b8p-5
+  },
+  { // Entry 16
+    0x1.6a0ba98930c5cb58722f06e15c330f95p-1,
+    0x1.00027ep-1
+  },
+  { // Entry 17
+    0x1.6a0bea96a144bf2a9c899380f11039d1p0,
+    0x1.0002dap1
+  },
+  { // Entry 18
+    0x1.6a0d3c935fb77764b4cc3f34e117a891p-49,
+    0x1.0004b8p-97
+  },
+  { // Entry 19
+    0x1.6a0d6700222327f1053e4a429adb015ep-3,
+    0x1.0004f4p-5
+  },
+  { // Entry 20
+    0x1.6a0dc893ce705ac35b85bb49e3aa1badp0,
+    0x1.00057ep1
+  },
+  { // Entry 21
+    0x1.001ffe003ff601bfac107ca6b29a0c31p-20,
+    0x1.0040p-40
+  },
+  { // Entry 22
+    0x1.6a3724d10762c86a71fe557d13336111p-21,
+    0x1.0040p-41
+  },
+  { // Entry 23
+    0x1.6a38a9884557da551f3ec21f785779d7p6,
+    0x1.004226p13
+  },
+  { // Entry 24
+    0x1.6abbeb82dbfd8f20f5923ab389eef7f3p-11,
+    0x1.00fcp-21
+  },
+  { // Entry 25
+    0x1.0085dd004f71f5362dd6a5e09a9cee74p-10,
+    0x1.010cp-20
+  },
+  { // Entry 26
+    0x1.0085dd004f71f5362dd6a5e09a9cee74p-20,
+    0x1.010cp-40
+  },
+  { // Entry 27
+    0x1.6cdb707e0273cc8e2a1d99aa3ad67b66p0,
+    0x1.040062p1
+  },
+  { // Entry 28
+    0x1.6e14fb33af5d199451a44c592d18f9e1p-11,
+    0x1.05c0p-21
+  },
+  { // Entry 29
+    0x1.6e3eedfff2f9d88cc837d36b17bce548p-11,
+    0x1.05fcp-21
+  },
+  { // Entry 30
+    0x1.708713bb31c17627489983a6397ff529p-1,
+    0x1.094250p-1
+  },
+  { // Entry 31
+    0x1.7214c125cb8b2284459daa230a47b9dfp-11,
+    0x1.0b80p-21
+  },
+  { // Entry 32
+    0x1.7528ce694c692ce6ecf340f96e7ac410p-9,
+    0x1.0ff7f8p-17
+  },
+  { // Entry 33
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-11,
+    0x1.0ffcp-21
+  },
+  { // Entry 34
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-49,
+    0x1.0ffcp-97
+  },
+  { // Entry 35
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-63,
+    0x1.0ffcp-125
+  },
+  { // Entry 36
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-68,
+    0x1.0ffcp-135
+  },
+  { // Entry 37
+    0x1.752bcd629c83e4378e77e8fb09e0dfb8p0,
+    0x1.0ffc56p1
+  },
+  { // Entry 38
+    0x1.752cdbac2ec6fddb69cc2e00bdf1fd02p4,
+    0x1.0ffde0p9
+  },
+  { // Entry 39
+    0x1.752cf45e665c37b7d77c8c9fb50cd678p-4,
+    0x1.0ffe04p-7
+  },
+  { // Entry 40
+    0x1.752cf45e665c37b7d77c8c9fb50cd678p-63,
+    0x1.0ffe04p-125
+  },
+  { // Entry 41
+    0x1.752cf45e665c37b7d77c8c9fb50cd678p1,
+    0x1.0ffe04p3
+  },
+  { // Entry 42
+    0x1.752d6a5c75cf3b16e5de9a228f3ef4dap1,
+    0x1.0ffeb0p3
+  },
+  { // Entry 43
+    0x1.752d6a5c75cf3b16e5de9a228f3ef4dap28,
+    0x1.0ffeb0p57
+  },
+  { // Entry 44
+    0x1.752e105f70189628b0d2d6e17ca2b9c5p1,
+    0x1.0fffa2p3
+  },
+  { // Entry 45
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-4,
+    0x1.0ffff8p-7
+  },
+  { // Entry 46
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-53,
+    0x1.0ffff8p-105
+  },
+  { // Entry 47
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-61,
+    0x1.0ffff8p-121
+  },
+  { // Entry 48
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-62,
+    0x1.0ffff8p-123
+  },
+  { // Entry 49
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p1,
+    0x1.0ffff8p3
+  },
+  { // Entry 50
+    0x1.784220501c1fc95d7e2043339d354588p-1,
+    0x1.148128p-1
+  },
+  { // Entry 51
+    0x1.78cc0a00054d7683165ea2815b6b8d14p-11,
+    0x1.154cp-21
+  },
+  { // Entry 52
+    0x1.7ea8336e0f268f6d05f0934a67b4840ap-32,
+    0x1.1dfd34p-63
+  },
+  { // Entry 53
+    0x1.0ec1270014d42e5424a7780b67b4974cp-10,
+    0x1.1e5cp-20
+  },
+  { // Entry 54
+    0x1.0f7a3974c0a036ead45a0017d4782e1ap-10,
+    0x1.1fe4p-20
+  },
+  { // Entry 55
+    0x1.10207f000077f1ab909fb7b5314f837fp-1,
+    0x1.214512p-2
+  },
+  { // Entry 56
+    0x1.8c4487000042dd2813dd730d1a7f3cabp1,
+    0x1.32b20ap3
+  },
+  { // Entry 57
+    0x1.8dc41537f0b639cb37aedfa8d531d4cfp-51,
+    0x1.3504e0p-101
+  },
+  { // Entry 58
+    0x1.8fae0c15ad389e24852497e80935e4b5p-63,
+    0x1.38p-125
+  },
+  { // Entry 59
+    0x1.95b8c0ffff868994f9ce14b11aa1cfd5p-2,
+    0x1.41810cp-3
+  },
+  { // Entry 60
+    0x1.a644fe00060ec83a5393c3c3cd39fc95p-1,
+    0x1.5c43c4p-1
+  },
+  { // Entry 61
+    0x1.b7070406a4527543e7e1a93c34a2d6f7p-1,
+    0x1.787488p-1
+  },
+  { // Entry 62
+    0x1.3836b2ffff863cbb58a0fb2bcad85474p-1,
+    0x1.7cc560p-2
+  },
+  { // Entry 63
+    0x1.bb67ad5dea55ebaf21faa9bb10eabdf1p-21,
+    0x1.7ffffep-41
+  },
+  { // Entry 64
+    0x1.ce7e96000007bfd0ed97130360c298ddp-1,
+    0x1.a1c692p-1
+  },
+  { // Entry 65
+    0x1.d10d73f80594d3d73fae1f2d6a130247p0,
+    0x1.a668f0p1
+  },
+  { // Entry 66
+    0x1.d94c090afeb02b92e741bb236186bc86p-1,
+    0x1.b58508p-1
+  },
+  { // Entry 67
+    0x1.de4315000013008bf12e454d672ffbdfp-2,
+    0x1.bebf4ap-3
+  },
+  { // Entry 68
+    0x1.e768d28cf1e3981570e875af113546c7p-21,
+    0x1.cffffep-41
+  },
+  { // Entry 69
+    0x1.e7f0cc5a77a783be336f9b5127709acep-1,
+    0x1.d10306p-1
+  },
+  { // Entry 70
+    0x1.f3169029c9867f10142750dc51d5843dp-1,
+    0x1.e6807cp-1
+  },
+  { // Entry 71
+    0x1.f6eb62d27730caff89a8d78c7314934ap-60,
+    0x1.eep-119
+  },
+  { // Entry 72
+    0x1.f8f3935d2ecc7256a14d7c8816275c60p-21,
+    0x1.f1fffep-41
+  },
+  { // Entry 73
+    0x1.f94a8e8524ece8623432ace75571785ep-1,
+    0x1.f2ab9ep-1
+  },
+  { // Entry 74
+    0x1.faa0p-1,
+    0x1.f54e72p-1
+  },
+  { // Entry 75
+    0x1.feefb698fc02e71c2377deb225837a87p-63,
+    0x1.fddffep-125
+  },
+  { // Entry 76
+    0x1.fffffcfffffdbffffc9ffff9abfff2b5p-1,
+    0x1.fffffap-1
+  },
+  { // Entry 77
+    0x1.fffffdfffffefffffefffffebffffe3fp-4,
+    0x1.fffffcp-7
+  },
+  { // Entry 78
+    0x1.fffffdfffffefffffefffffebffffe3fp-21,
+    0x1.fffffcp-41
+  },
+  { // Entry 79
+    0x1.fffffdfffffefffffefffffebffffe3fp-63,
+    0x1.fffffcp-125
+  },
+  { // Entry 80
+    0x1.fffffeffffffbfffffdfffffebfffff1p-4,
+    0x1.fffffep-7
+  },
+  { // Entry 81
+    0x1.fffffeffffffbfffffdfffffebfffff1p0,
+    0x1.fffffep1
+  },
+  { // Entry 82
+    0x1.306fdec8dc9ad32b551e92585b7094f3p-1,
+    0x1.6a09e2p-2
+  },
+  { // Entry 83
+    0x1.306fdfa02198a13d946ad818ec615547p-1,
+    0x1.6a09e4p-2
+  },
+  { // Entry 84
+    0x1.306fe0776695d717e1e11958d56541cfp-1,
+    0x1.6a09e6p-2
+  },
+  { // Entry 85
+    0x1.306fe14eab9274ba3ec43d966959f47cp-1,
+    0x1.6a09e8p-2
+  },
+  { // Entry 86
+    0x1.306fe225f08e7a24ac572c4b8579785fp-1,
+    0x1.6a09eap-2
+  },
+  { // Entry 87
+    0x1.ae89f6f6fe087ac302131f3840da7a90p-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 88
+    0x1.ae89f8276dea8c7accb82339973f2af9p-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 89
+    0x1.ae89f957ddcbc6ed986cf1a0e754d170p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 90
+    0x1.ae89fa884dac2a1b66fa324394d3c590p-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 91
+    0x1.ae89fbb8bd8bb6043a288cf0b4eef0aep-1,
+    0x1.6a09eap-1
+  },
+  { // Entry 92
+    0x1.306fdec8dc9ad32b551e92585b7094f3p0,
+    0x1.6a09e2p0
+  },
+  { // Entry 93
+    0x1.306fdfa02198a13d946ad818ec615547p0,
+    0x1.6a09e4p0
+  },
+  { // Entry 94
+    0x1.306fe0776695d717e1e11958d56541cfp0,
+    0x1.6a09e6p0
+  },
+  { // Entry 95
+    0x1.306fe14eab9274ba3ec43d966959f47cp0,
+    0x1.6a09e8p0
+  },
+  { // Entry 96
+    0x1.306fe225f08e7a24ac572c4b8579785fp0,
+    0x1.6a09eap0
+  },
+  { // Entry 97
+    0x1.ae89f6f6fe087ac302131f3840da7a90p0,
+    0x1.6a09e2p1
+  },
+  { // Entry 98
+    0x1.ae89f8276dea8c7accb82339973f2af9p0,
+    0x1.6a09e4p1
+  },
+  { // Entry 99
+    0x1.ae89f957ddcbc6ed986cf1a0e754d170p0,
+    0x1.6a09e6p1
+  },
+  { // Entry 100
+    0x1.ae89fa884dac2a1b66fa324394d3c590p0,
+    0x1.6a09e8p1
+  },
+  { // Entry 101
+    0x1.ae89fbb8bd8bb6043a288cf0b4eef0aep0,
+    0x1.6a09eap1
+  },
+  { // Entry 102
+    0x1.fffffeffffffbfffffdfffffebfffff1p-4,
+    0x1.fffffep-7
+  },
+  { // Entry 103
+    0x1.p-3,
+    0x1.p-6
+  },
+  { // Entry 104
+    0x1.000000ffffff8000007fffff600000dfp-3,
+    0x1.000002p-6
+  },
+  { // Entry 105
+    0x1.6a09e5b2eec967cd97b2eff75f471493p-3,
+    0x1.fffffep-6
+  },
+  { // Entry 106
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-3,
+    0x1.p-5
+  },
+  { // Entry 107
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp-3,
+    0x1.000002p-5
+  },
+  { // Entry 108
+    0x1.fffffeffffffbfffffdfffffebfffff1p-3,
+    0x1.fffffep-5
+  },
+  { // Entry 109
+    0x1.p-2,
+    0x1.p-4
+  },
+  { // Entry 110
+    0x1.000000ffffff8000007fffff600000dfp-2,
+    0x1.000002p-4
+  },
+  { // Entry 111
+    0x1.6a09e5b2eec967cd97b2eff75f471493p-2,
+    0x1.fffffep-4
+  },
+  { // Entry 112
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-2,
+    0x1.p-3
+  },
+  { // Entry 113
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp-2,
+    0x1.000002p-3
+  },
+  { // Entry 114
+    0x1.fffffeffffffbfffffdfffffebfffff1p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 115
+    0x1.p-1,
+    0x1.p-2
+  },
+  { // Entry 116
+    0x1.000000ffffff8000007fffff600000dfp-1,
+    0x1.000002p-2
+  },
+  { // Entry 117
+    0x1.6a09e5b2eec967cd97b2eff75f471493p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 118
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.p-1
+  },
+  { // Entry 119
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp-1,
+    0x1.000002p-1
+  },
+  { // Entry 120
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 121
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 122
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 123
+    0x1.6a09e5b2eec967cd97b2eff75f471493p0,
+    0x1.fffffep0
+  },
+  { // Entry 124
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p1
+  },
+  { // Entry 125
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp0,
+    0x1.000002p1
+  },
+  { // Entry 126
+    0x1.fffffeffffffbfffffdfffffebfffff1p0,
+    0x1.fffffep1
+  },
+  { // Entry 127
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 128
+    0x1.000000ffffff8000007fffff600000dfp1,
+    0x1.000002p2
+  },
+  { // Entry 129
+    0.0,
+    0.0
+  },
+  { // Entry 130
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
+    0x1.p-149
+  },
+  { // Entry 131
+    0x1.fffffdfffffefffffefffffebffffe3fp-64,
+    0x1.fffffcp-127
+  },
+  { // Entry 132
+    0x1.p-63,
+    0x1.p-126
+  },
+  { // Entry 133
+    0x1.000000ffffff8000007fffff600000dfp-63,
+    0x1.000002p-126
+  },
+  { // Entry 134
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
+    0x1.p-149
+  },
+  { // Entry 135
+    0x1.279a75809da58a0811243c04849bccb2p-64,
+    0x1.555558p-128
+  },
+  { // Entry 136
+    0x1.a20bd62fbcd82b1d65e201b6160bb97fp-64,
+    0x1.555554p-127
+  },
+  { // Entry 137
+    0x1.fffffdfffffefffffefffffebffffe3fp-64,
+    0x1.fffffcp-127
+  },
+  { // Entry 138
+    0x1.fffffcfffffdbffffc9ffff9abfff2b5p-1,
+    0x1.fffffap-1
+  },
+  { // Entry 139
+    0x1.fffffdfffffefffffefffffebffffe3fp-1,
+    0x1.fffffcp-1
+  },
+  { // Entry 140
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 141
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 142
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 143
+    0x1.fffffcfffffdbffffc9ffff9abfff2b5p-1,
+    0x1.fffffap-1
+  },
+  { // Entry 144
+    0x1.fffffdfffffefffffefffffebffffe3fp-1,
+    0x1.fffffcp-1
+  },
+  { // Entry 145
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 146
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 147
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 148
+    0x1.fffffeffffffbfffffdfffffebfffff1p63,
+    0x1.fffffep127
+  },
+  { // Entry 149
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 150
+    0x1.fffffeffffffbfffffdfffffebfffff1p63,
+    0x1.fffffep127
+  },
+  { // Entry 151
+    0x1.fffffdfffffefffffefffffebffffe3fp63,
+    0x1.fffffcp127
+  },
+  { // Entry 152
+    0x1.c5bf89853a94d473c88f0dc85f187a6ep0,
+    0x1.921fb6p1
+  },
+  { // Entry 153
+    0x1.40d9324a48137bb45e891e1bdffe64c2p0,
+    0x1.921fb6p0
+  },
+  { // Entry 154
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 155
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 156
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    0x1.c5bf89853a94d473c88f0dc85f187a6ep-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 158
+    0x1.000000ffffff8000007fffff600000dfp-63,
+    0x1.000002p-126
+  },
+  { // Entry 159
+    0x1.p-63,
+    0x1.p-126
+  },
+  { // Entry 160
+    0x1.fffffdfffffefffffefffffebffffe3fp-64,
+    0x1.fffffcp-127
+  },
+  { // Entry 161
+    0x1.fffffbfffffbfffff7ffffebffffc7ffp-64,
+    0x1.fffff8p-127
+  },
+  { // Entry 162
+    0x1.p-74,
+    0x1.p-148
+  },
+  { // Entry 163
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
+    0x1.p-149
+  },
+  { // Entry 164
+    0.0,
+    0.0f
+  },
+  { // Entry 165
+    -0.0,
+    -0.0f
+  },
+  { // Entry 166
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 167
+    0x1.p2,
+    0x1.p4
+  },
+  { // Entry 168
+    0x1.80p1,
+    0x1.20p3
+  },
+  { // Entry 169
+    0x1.40p2,
+    0x1.90p4
+  },
+  { // Entry 170
+    0x1.p-1,
+    0x1.p-2
+  },
+  { // Entry 171
+    0x1.c0p2,
+    0x1.88p5
+  },
+  { // Entry 172
+    0x1.40p3,
+    0x1.90p6
+  }
+};
diff --git a/tests/math_data/tan_intel_data.h b/tests/math_data/tan_intel_data.h
new file mode 100644
index 0000000..32d733e
--- /dev/null
+++ b/tests/math_data/tan_intel_data.h
@@ -0,0 +1,5182 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_tan_intel_data[] = {
+  { // Entry 0
+    0x1.5078cebff9c728000000000000024df8p-5,
+    0x1.50486b2f87014p-5
+  },
+  { // Entry 1
+    -0x1.5078cebff9c728000000000000024df8p-5,
+    -0x1.50486b2f87014p-5
+  },
+  { // Entry 2
+    0x1.5389e6df41978fffffffffffffc61f54p-4,
+    0x1.52c39ef070cadp-4
+  },
+  { // Entry 3
+    -0x1.5389e6df41978fffffffffffffc61f54p-4,
+    -0x1.52c39ef070cadp-4
+  },
+  { // Entry 4
+    0x1.a933fe176b37500000000000000a4065p-3,
+    0x1.a33f32ac5ceb5p-3
+  },
+  { // Entry 5
+    -0x1.a933fe176b37500000000000000a4065p-3,
+    -0x1.a33f32ac5ceb5p-3
+  },
+  { // Entry 6
+    0x1.fac71cd34eea680000000000009a0c10p-2,
+    0x1.d696bfa988db9p-2
+  },
+  { // Entry 7
+    -0x1.fac71cd34eea680000000000009a0c10p-2,
+    -0x1.d696bfa988db9p-2
+  },
+  { // Entry 8
+    0x1.7ba49f739829efffffffffffffe7e9bep-1,
+    0x1.46ac372243536p-1
+  },
+  { // Entry 9
+    -0x1.7ba49f739829efffffffffffffe7e9bep-1,
+    -0x1.46ac372243536p-1
+  },
+  { // Entry 10
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 11
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 12
+    -0x1.8f048832144b70021ccd7a5246cb0b20p0,
+    -0x1.00180p0
+  },
+  { // Entry 13
+    0x1.8f048832144b70021ccd7a5246cb0b20p0,
+    0x1.00180p0
+  },
+  { // Entry 14
+    -0x1.8e884b24313ae802db47899fad15a6c6p0,
+    -0x1.090cca18a5565p2
+  },
+  { // Entry 15
+    0x1.8e884b24313ae802db47899fad15a6c6p0,
+    0x1.090cca18a5565p2
+  },
+  { // Entry 16
+    -0x1.ca18654b356972967a4f1e8404b9f972p0,
+    -0x1.0faa7650df144p0
+  },
+  { // Entry 17
+    0x1.ca18654b356972967a4f1e8404b9f972p0,
+    0x1.0faa7650df144p0
+  },
+  { // Entry 18
+    -0x1.e52fafa22ef1481d437e7ed32cba03b1p-2,
+    -0x1.1800000000040p5
+  },
+  { // Entry 19
+    0x1.e52fafa22ef1481d437e7ed32cba03b1p-2,
+    0x1.1800000000040p5
+  },
+  { // Entry 20
+    -0x1.a3ca421dc30f1c5760a1ae07396fec33p-3,
+    -0x1.4000527aca388p99
+  },
+  { // Entry 21
+    0x1.a3ca421dc30f1c5760a1ae07396fec33p-3,
+    0x1.4000527aca388p99
+  },
+  { // Entry 22
+    0x1.1f3b7d1978609800a1628e1df9558df6p1,
+    -0x1.486c3634751ecp2
+  },
+  { // Entry 23
+    -0x1.1f3b7d1978609800a1628e1df9558df6p1,
+    0x1.486c3634751ecp2
+  },
+  { // Entry 24
+    -0x1.7eb873343fa7ab5d9ef9a78afd33d501p-1,
+    -0x1.48a71800b5713p-1
+  },
+  { // Entry 25
+    0x1.7eb873343fa7ab5d9ef9a78afd33d501p-1,
+    0x1.48a71800b5713p-1
+  },
+  { // Entry 26
+    0x1.be071572f64e88047c3939ba46626a25p-1,
+    -0x1.49af0314eea3cp299
+  },
+  { // Entry 27
+    -0x1.be071572f64e88047c3939ba46626a25p-1,
+    0x1.49af0314eea3cp299
+  },
+  { // Entry 28
+    0x1.ffbb2647f57a181bd1296faf33c04e3ep-1,
+    -0x1.5fe00c814ffd6p2
+  },
+  { // Entry 29
+    -0x1.ffbb2647f57a181bd1296faf33c04e3ep-1,
+    0x1.5fe00c814ffd6p2
+  },
+  { // Entry 30
+    -0x1.a8eb142b2f42756e6dedff09267a62c6p-1,
+    -0x1.62ac241f79439p-1
+  },
+  { // Entry 31
+    0x1.a8eb142b2f42756e6dedff09267a62c6p-1,
+    0x1.62ac241f79439p-1
+  },
+  { // Entry 32
+    -0x1.7d1d3559ddac885ee30632c760998c8ep-4,
+    -0x1.7c051b476ca8dp-4
+  },
+  { // Entry 33
+    0x1.7d1d3559ddac885ee30632c760998c8ep-4,
+    0x1.7c051b476ca8dp-4
+  },
+  { // Entry 34
+    -0x1.0e1d0305b7b727ff193d9d0b8eaff181p2,
+    -0x1.7e43c880074c6p996
+  },
+  { // Entry 35
+    0x1.0e1d0305b7b727ff193d9d0b8eaff181p2,
+    0x1.7e43c880074c6p996
+  },
+  { // Entry 36
+    -0x1.812bdfe0246bbf2a7ab6477a5cbb352bp-4,
+    -0x1.800ac363398c4p-4
+  },
+  { // Entry 37
+    0x1.812bdfe0246bbf2a7ab6477a5cbb352bp-4,
+    0x1.800ac363398c4p-4
+  },
+  { // Entry 38
+    -0x1.850e5544b0c797b36034c98e16f3fafbp-4,
+    -0x1.83e46aedbff36p-4
+  },
+  { // Entry 39
+    0x1.850e5544b0c797b36034c98e16f3fafbp-4,
+    0x1.83e46aedbff36p-4
+  },
+  { // Entry 40
+    0x1.e6b5d91bba9337fc0ceb686c60cd29bdp-2,
+    -0x1.83ecf42e9265ap3
+  },
+  { // Entry 41
+    -0x1.e6b5d91bba9337fc0ceb686c60cd29bdp-2,
+    0x1.83ecf42e9265ap3
+  },
+  { // Entry 42
+    -0x1.f3688bc2594e20102573cff48190ac28p-1,
+    -0x1.8bcp-1
+  },
+  { // Entry 43
+    0x1.f3688bc2594e20102573cff48190ac28p-1,
+    0x1.8bcp-1
+  },
+  { // Entry 44
+    0x1.ec0d0facdd08b773a1d93484e2d66c45p-2,
+    -0x1.8d2ffffffffd1p9
+  },
+  { // Entry 45
+    -0x1.ec0d0facdd08b773a1d93484e2d66c45p-2,
+    0x1.8d2ffffffffd1p9
+  },
+  { // Entry 46
+    0x1.ec0336d5392597689b640bf049227338p-2,
+    -0x1.8d3000fffffd1p9
+  },
+  { // Entry 47
+    -0x1.ec0336d5392597689b640bf049227338p-2,
+    0x1.8d3000fffffd1p9
+  },
+  { // Entry 48
+    -0x1.f8093a017021f81c01c131475e50e49bp-1,
+    -0x1.baeee6f6fa538p6
+  },
+  { // Entry 49
+    0x1.f8093a017021f81c01c131475e50e49bp-1,
+    0x1.baeee6f6fa538p6
+  },
+  { // Entry 50
+    0x1.deaf34994b7e77fd52a408f0c677eae1p3,
+    -0x1.c6867e07455eap3
+  },
+  { // Entry 51
+    -0x1.deaf34994b7e77fd52a408f0c677eae1p3,
+    0x1.c6867e07455eap3
+  },
+  { // Entry 52
+    -0x1.f29aa87d4e1dd81b7b69abe9790ee0abp-1,
+    -0x1.d27ffffffe0p7
+  },
+  { // Entry 53
+    0x1.f29aa87d4e1dd81b7b69abe9790ee0abp-1,
+    0x1.d27ffffffe0p7
+  },
+  { // Entry 54
+    0x1.762fb47a192597ffffffeeedb26fb978p-3,
+    -0x1.f0df38029c9efp3
+  },
+  { // Entry 55
+    -0x1.762fb47a192597ffffffeeedb26fb978p-3,
+    0x1.f0df38029c9efp3
+  },
+  { // Entry 56
+    -0x1.8eb23ef2126bb7fffd153c7ff90e9f6cp0,
+    -0x1.fffffc0000fffp-1
+  },
+  { // Entry 57
+    0x1.8eb23ef2126bb7fffd153c7ff90e9f6cp0,
+    0x1.fffffc0000fffp-1
+  },
+  { // Entry 58
+    -0x1.d299d285bf018423fbc14efc00ed5799p-2,
+    -0x1.ffffffffffffcp1023
+  },
+  { // Entry 59
+    0x1.d299d285bf018423fbc14efc00ed5799p-2,
+    0x1.ffffffffffffcp1023
+  },
+  { // Entry 60
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 61
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 62
+    -0x1.82bee572e2ac8c76d6909c66b282e962p-6,
+    0x1.0p64
+  },
+  { // Entry 63
+    0x1.82bee572e2ac8c76d6909c66b282e962p-6,
+    -0x1.0p64
+  },
+  { // Entry 64
+    0x1.f53a8d05afcf6c4bf2e1e5208b34d5c6p4,
+    0x1.0000000000001p51
+  },
+  { // Entry 65
+    -0x1.f53a8d05afcf6c4bf2e1e5208b34d5c6p4,
+    -0x1.0000000000001p51
+  },
+  { // Entry 66
+    -0x1.6b371df5980cd3db36768e36046a4a81p-1,
+    0x1.0000000000001p1017
+  },
+  { // Entry 67
+    0x1.6b371df5980cd3db36768e36046a4a81p-1,
+    -0x1.0000000000001p1017
+  },
+  { // Entry 68
+    -0x1.b32e78f49a0c83c7f60a3dc3ef8ecf1fp2,
+    0x1.0000000000003p3
+  },
+  { // Entry 69
+    0x1.b32e78f49a0c83c7f60a3dc3ef8ecf1fp2,
+    -0x1.0000000000003p3
+  },
+  { // Entry 70
+    0x1.98afbd24264bc3a9d1838074a3daa5e5p-1,
+    0x1.0000000000003p21
+  },
+  { // Entry 71
+    -0x1.98afbd24264bc3a9d1838074a3daa5e5p-1,
+    -0x1.0000000000003p21
+  },
+  { // Entry 72
+    0x1.b667a2abe36c280315c62a1f974e7611p0,
+    0x1.0000000000003p511
+  },
+  { // Entry 73
+    -0x1.b667a2abe36c280315c62a1f974e7611p0,
+    -0x1.0000000000003p511
+  },
+  { // Entry 74
+    0x1.204c26a427861ffefb73796bcf1fd724p-2,
+    0x1.0000000000003p716
+  },
+  { // Entry 75
+    -0x1.204c26a427861ffefb73796bcf1fd724p-2,
+    -0x1.0000000000003p716
+  },
+  { // Entry 76
+    0x1.91c8f2938262ce2e9ad99ab17e46abd6p4,
+    0x1.0000000000007p8
+  },
+  { // Entry 77
+    -0x1.91c8f2938262ce2e9ad99ab17e46abd6p4,
+    -0x1.0000000000007p8
+  },
+  { // Entry 78
+    -0x1.27f7f0880031fe42ed1d5fedc496d14ep-2,
+    0x1.0000000000038p380
+  },
+  { // Entry 79
+    0x1.27f7f0880031fe42ed1d5fedc496d14ep-2,
+    -0x1.0000000000038p380
+  },
+  { // Entry 80
+    -0x1.d6890cc32711d4b046903ad8851a41bbp-3,
+    0x1.0000000000118p380
+  },
+  { // Entry 81
+    0x1.d6890cc32711d4b046903ad8851a41bbp-3,
+    -0x1.0000000000118p380
+  },
+  { // Entry 82
+    0x1.9af0e6f72f9127ffffc0200ea7f406f4p-3,
+    0x1.0000000000908p500
+  },
+  { // Entry 83
+    -0x1.9af0e6f72f9127ffffc0200ea7f406f4p-3,
+    -0x1.0000000000908p500
+  },
+  { // Entry 84
+    0x1.17b4f5bf440978002d66f1bd37032532p-1,
+    0x1.000000000c0p-1
+  },
+  { // Entry 85
+    -0x1.17b4f5bf440978002d66f1bd37032532p-1,
+    -0x1.000000000c0p-1
+  },
+  { // Entry 86
+    -0x1.17eb22e4dba72800d2a000698263d582p0,
+    0x1.00000001cp40
+  },
+  { // Entry 87
+    0x1.17eb22e4dba72800d2a000698263d582p0,
+    -0x1.00000001cp40
+  },
+  { // Entry 88
+    0x1.f6f03ce5690a6e3880b95fd8b2c8363ep-1,
+    0x1.0000001p250
+  },
+  { // Entry 89
+    -0x1.f6f03ce5690a6e3880b95fd8b2c8363ep-1,
+    -0x1.0000001p250
+  },
+  { // Entry 90
+    0x1.e23b78282a75d0dd6da35692d142bc63p-1,
+    0x1.000000988p27
+  },
+  { // Entry 91
+    -0x1.e23b78282a75d0dd6da35692d142bc63p-1,
+    -0x1.000000988p27
+  },
+  { // Entry 92
+    -0x1.981b657e1ca27009d82d8e18314240b5p-3,
+    0x1.00000c0p429
+  },
+  { // Entry 93
+    0x1.981b657e1ca27009d82d8e18314240b5p-3,
+    -0x1.00000c0p429
+  },
+  { // Entry 94
+    -0x1.455a2184f4c3dffb0986919cece683a4p-1,
+    0x1.00000fcp1000
+  },
+  { // Entry 95
+    0x1.455a2184f4c3dffb0986919cece683a4p-1,
+    -0x1.00000fcp1000
+  },
+  { // Entry 96
+    0x1.8ee66962f210c800000568c7daad3a28p0,
+    0x1.000f371b7a006p0
+  },
+  { // Entry 97
+    -0x1.8ee66962f210c800000568c7daad3a28p0,
+    -0x1.000f371b7a006p0
+  },
+  { // Entry 98
+    -0x1.ecd75cf6d4663bee1c96f03184fae086p-3,
+    0x1.001p15
+  },
+  { // Entry 99
+    0x1.ecd75cf6d4663bee1c96f03184fae086p-3,
+    -0x1.001p15
+  },
+  { // Entry 100
+    0x1.17d42033277cc8244ccb6e5154482105p-1,
+    0x1.0017ffffffffdp-1
+  },
+  { // Entry 101
+    -0x1.17d42033277cc8244ccb6e5154482105p-1,
+    -0x1.0017ffffffffdp-1
+  },
+  { // Entry 102
+    0x1.8f048832144b70021ccd7a5246cb0b20p0,
+    0x1.00180p0
+  },
+  { // Entry 103
+    -0x1.8f048832144b70021ccd7a5246cb0b20p0,
+    -0x1.00180p0
+  },
+  { // Entry 104
+    -0x1.18273cc3e763900743704028cfb114a5p-2,
+    0x1.001fffep500
+  },
+  { // Entry 105
+    0x1.18273cc3e763900743704028cfb114a5p-2,
+    -0x1.001fffep500
+  },
+  { // Entry 106
+    -0x1.d8f90cad30546ce5b8268b330ce50a6fp-2,
+    0x1.018p40
+  },
+  { // Entry 107
+    0x1.d8f90cad30546ce5b8268b330ce50a6fp-2,
+    -0x1.018p40
+  },
+  { // Entry 108
+    0x1.b079ea0d14a4a7ffc04bd6fbf451bb34p-2,
+    0x1.01b8a484ac0b6p4
+  },
+  { // Entry 109
+    -0x1.b079ea0d14a4a7ffc04bd6fbf451bb34p-2,
+    -0x1.01b8a484ac0b6p4
+  },
+  { // Entry 110
+    -0x1.a40c262f6ab997fef43bf54af3c5a765p-1,
+    0x1.026ac0ef32d40p28
+  },
+  { // Entry 111
+    0x1.a40c262f6ab997fef43bf54af3c5a765p-1,
+    -0x1.026ac0ef32d40p28
+  },
+  { // Entry 112
+    0x1.03b8c1f3296657c651a13eb5b100fc78p-4,
+    0x1.035fdcd08a596p-4
+  },
+  { // Entry 113
+    -0x1.03b8c1f3296657c651a13eb5b100fc78p-4,
+    -0x1.035fdcd08a596p-4
+  },
+  { // Entry 114
+    0x1.044979d134ed97c78bfe58a9003bfac5p-4,
+    0x1.03fp-4
+  },
+  { // Entry 115
+    -0x1.044979d134ed97c78bfe58a9003bfac5p-4,
+    -0x1.03fp-4
+  },
+  { // Entry 116
+    -0x1.e717de7da2ce831066bad1df5e88a030p0,
+    0x1.070p1
+  },
+  { // Entry 117
+    0x1.e717de7da2ce831066bad1df5e88a030p0,
+    -0x1.070p1
+  },
+  { // Entry 118
+    -0x1.8c896f607ff52bbae86f63e19a988d2bp-1,
+    0x1.070p30
+  },
+  { // Entry 119
+    0x1.8c896f607ff52bbae86f63e19a988d2bp-1,
+    -0x1.070p30
+  },
+  { // Entry 120
+    0x1.fffffffff5d846af6f017262c9c81de4p-1,
+    0x1.07e4cef4cbb0ep4
+  },
+  { // Entry 121
+    -0x1.fffffffff5d846af6f017262c9c81de4p-1,
+    -0x1.07e4cef4cbb0ep4
+  },
+  { // Entry 122
+    0x1.b476d32c1b7457ffff66edb3f78a7003p0,
+    0x1.0a53a78b13ab2p0
+  },
+  { // Entry 123
+    -0x1.b476d32c1b7457ffff66edb3f78a7003p0,
+    -0x1.0a53a78b13ab2p0
+  },
+  { // Entry 124
+    0x1.f2df7c02d20cd81b33117c00545f7a6bp-1,
+    0x1.0afbc268b9848p6
+  },
+  { // Entry 125
+    -0x1.f2df7c02d20cd81b33117c00545f7a6bp-1,
+    -0x1.0afbc268b9848p6
+  },
+  { // Entry 126
+    -0x1.b571af562f08a5a03dd8493990b29db1p0,
+    0x1.0cd5d435bea6dp1
+  },
+  { // Entry 127
+    0x1.b571af562f08a5a03dd8493990b29db1p0,
+    -0x1.0cd5d435bea6dp1
+  },
+  { // Entry 128
+    -0x1.ac73d2920a7955336ab2a3436c77c276p0,
+    0x1.0e0p1
+  },
+  { // Entry 129
+    0x1.ac73d2920a7955336ab2a3436c77c276p0,
+    -0x1.0e0p1
+  },
+  { // Entry 130
+    -0x1.126dce8ac7c818000cfcf3df066a4a2dp-1,
+    0x1.1086210842108p5
+  },
+  { // Entry 131
+    0x1.126dce8ac7c818000cfcf3df066a4a2dp-1,
+    -0x1.1086210842108p5
+  },
+  { // Entry 132
+    -0x1.9680c02601046ca506c0e3f744db1d0ap0,
+    0x1.110p1
+  },
+  { // Entry 133
+    0x1.9680c02601046ca506c0e3f744db1d0ap0,
+    -0x1.110p1
+  },
+  { // Entry 134
+    0x1.d1e716934469b2bc02fa835ae0149f58p0,
+    0x1.118p0
+  },
+  { // Entry 135
+    -0x1.d1e716934469b2bc02fa835ae0149f58p0,
+    -0x1.118p0
+  },
+  { // Entry 136
+    -0x1.6aa73101430837fffffebaafd45f7efap-1,
+    0x1.19df389f39e0ap3
+  },
+  { // Entry 137
+    0x1.6aa73101430837fffffebaafd45f7efap-1,
+    -0x1.19df389f39e0ap3
+  },
+  { // Entry 138
+    0x1.cb9a99227bdc972cd4145969c3dc38c1p1,
+    0x1.1c3598211013ap2
+  },
+  { // Entry 139
+    -0x1.cb9a99227bdc972cd4145969c3dc38c1p1,
+    -0x1.1c3598211013ap2
+  },
+  { // Entry 140
+    -0x1.bc109c3e6172450a5308b4c6eb2898cap7,
+    0x1.1d65aa4224c30p118
+  },
+  { // Entry 141
+    0x1.bc109c3e6172450a5308b4c6eb2898cap7,
+    -0x1.1d65aa4224c30p118
+  },
+  { // Entry 142
+    -0x1.09b393f48b2c67ffff3bd559c6326e60p-1,
+    0x1.1e4658272dc6fp3
+  },
+  { // Entry 143
+    0x1.09b393f48b2c67ffff3bd559c6326e60p-1,
+    -0x1.1e4658272dc6fp3
+  },
+  { // Entry 144
+    0x1.20000000000798000000003d82666666p-22,
+    0x1.2p-22
+  },
+  { // Entry 145
+    -0x1.20000000000798000000003d82666666p-22,
+    -0x1.2p-22
+  },
+  { // Entry 146
+    -0x1.02a335b00707a7ffffbe455adab7e814p0,
+    0x1.2127409620cacp95
+  },
+  { // Entry 147
+    0x1.02a335b00707a7ffffbe455adab7e814p0,
+    -0x1.2127409620cacp95
+  },
+  { // Entry 148
+    0x1.2508b9c1273ac034c3c79c4088e2acfdp-4,
+    0x1.2489224892248p-4
+  },
+  { // Entry 149
+    -0x1.2508b9c1273ac034c3c79c4088e2acfdp-4,
+    -0x1.2489224892248p-4
+  },
+  { // Entry 150
+    0x1.fded5f53d132d26a8244a63f9bcdf153p2,
+    0x1.2a52d119da061p237
+  },
+  { // Entry 151
+    -0x1.fded5f53d132d26a8244a63f9bcdf153p2,
+    -0x1.2a52d119da061p237
+  },
+  { // Entry 152
+    0x1.2de56a6ef9c5d7e9c71030407530f1d7p-4,
+    0x1.2d59ebab8dae4p-4
+  },
+  { // Entry 153
+    -0x1.2de56a6ef9c5d7e9c71030407530f1d7p-4,
+    -0x1.2d59ebab8dae4p-4
+  },
+  { // Entry 154
+    0x1.31665eb191fba800b7e715fd11716c8cp-4,
+    0x1.30d5f8e54b6d8p-4
+  },
+  { // Entry 155
+    -0x1.31665eb191fba800b7e715fd11716c8cp-4,
+    -0x1.30d5f8e54b6d8p-4
+  },
+  { // Entry 156
+    0x1.3cc1d4d28bfd17fded9ae50407590f3fp-2,
+    0x1.333275d63ec50p-2
+  },
+  { // Entry 157
+    -0x1.3cc1d4d28bfd17fded9ae50407590f3fp-2,
+    -0x1.333275d63ec50p-2
+  },
+  { // Entry 158
+    0x1.3cc237c0c7dcbfff1046ad9a068af510p-2,
+    0x1.3332d020b6da9p-2
+  },
+  { // Entry 159
+    -0x1.3cc237c0c7dcbfff1046ad9a068af510p-2,
+    -0x1.3332d020b6da9p-2
+  },
+  { // Entry 160
+    0x1.5e472e16999df00000fc06ee474fbfc9p-1,
+    0x1.333333401e66bp-1
+  },
+  { // Entry 161
+    -0x1.5e472e16999df00000fc06ee474fbfc9p-1,
+    -0x1.333333401e66bp-1
+  },
+  { // Entry 162
+    0x1.b5ed1c2080a987fc84f26ec958b2ac47p-1,
+    0x1.38f137cb9dbfcp9
+  },
+  { // Entry 163
+    -0x1.b5ed1c2080a987fc84f26ec958b2ac47p-1,
+    -0x1.38f137cb9dbfcp9
+  },
+  { // Entry 164
+    0x1.01aa22e2133d37fffff2a0c08093358ep1,
+    0x1.39a383f3fa003p85
+  },
+  { // Entry 165
+    -0x1.01aa22e2133d37fffff2a0c08093358ep1,
+    -0x1.39a383f3fa003p85
+  },
+  { // Entry 166
+    0x1.ffffffffff58236322819d060eb67c3cp-1,
+    0x1.3a28c59d54311p4
+  },
+  { // Entry 167
+    -0x1.ffffffffff58236322819d060eb67c3cp-1,
+    -0x1.3a28c59d54311p4
+  },
+  { // Entry 168
+    0x1.7166689d4803e83d2b6b1d15f5aca26ep-1,
+    0x1.4000000003fffp-1
+  },
+  { // Entry 169
+    -0x1.7166689d4803e83d2b6b1d15f5aca26ep-1,
+    -0x1.4000000003fffp-1
+  },
+  { // Entry 170
+    -0x1.ff7d27b37eba0819199e533cc5016f0dp-1,
+    0x1.40724a44714cfp5
+  },
+  { // Entry 171
+    0x1.ff7d27b37eba0819199e533cc5016f0dp-1,
+    -0x1.40724a44714cfp5
+  },
+  { // Entry 172
+    0x1.453a7d29dadad7c0dda78a7398be0873p-4,
+    0x1.448c2d6e1e1afp-4
+  },
+  { // Entry 173
+    -0x1.453a7d29dadad7c0dda78a7398be0873p-4,
+    -0x1.448c2d6e1e1afp-4
+  },
+  { // Entry 174
+    -0x1.a50f7601413e53ab1c5a2f0d676c397cp0,
+    0x1.478fc08p43
+  },
+  { // Entry 175
+    0x1.a50f7601413e53ab1c5a2f0d676c397cp0,
+    -0x1.478fc08p43
+  },
+  { // Entry 176
+    -0x1.a9991acb7636beee5b1a5d35a8a89917p-4,
+    0x1.4e93bee72b565p62
+  },
+  { // Entry 177
+    0x1.a9991acb7636beee5b1a5d35a8a89917p-4,
+    -0x1.4e93bee72b565p62
+  },
+  { // Entry 178
+    0x1.2952396945947b726ebf025a8ba07093p1,
+    0x1.4f0f308p488
+  },
+  { // Entry 179
+    -0x1.2952396945947b726ebf025a8ba07093p1,
+    -0x1.4f0f308p488
+  },
+  { // Entry 180
+    0x1.5078cebff9c728000000000000024df8p-5,
+    0x1.50486b2f87014p-5
+  },
+  { // Entry 181
+    -0x1.5078cebff9c728000000000000024df8p-5,
+    -0x1.50486b2f87014p-5
+  },
+  { // Entry 182
+    -0x1.1c929b6ede9ee8000040a3d1ca90a9f4p-1,
+    0x1.5130d552f1036p1
+  },
+  { // Entry 183
+    0x1.1c929b6ede9ee8000040a3d1ca90a9f4p-1,
+    -0x1.5130d552f1036p1
+  },
+  { // Entry 184
+    0x1.2ab3189e2d4ae41c1aff3cc30cfedd30p1,
+    0x1.52f00e0p793
+  },
+  { // Entry 185
+    -0x1.2ab3189e2d4ae41c1aff3cc30cfedd30p1,
+    -0x1.52f00e0p793
+  },
+  { // Entry 186
+    -0x1.7d2e63fb988907a109091d130f9f20d1p0,
+    0x1.5371684e5fb34p2
+  },
+  { // Entry 187
+    0x1.7d2e63fb988907a109091d130f9f20d1p0,
+    -0x1.5371684e5fb34p2
+  },
+  { // Entry 188
+    -0x1.f9f4f0da4de54499283a8ac2f55f7258p-1,
+    0x1.54ef2208956p239
+  },
+  { // Entry 189
+    0x1.f9f4f0da4de54499283a8ac2f55f7258p-1,
+    -0x1.54ef2208956p239
+  },
+  { // Entry 190
+    0x1.1483073142e608008f8849daf5f8c58dp2,
+    0x1.57e590af09014p0
+  },
+  { // Entry 191
+    -0x1.1483073142e608008f8849daf5f8c58dp2,
+    -0x1.57e590af09014p0
+  },
+  { // Entry 192
+    0x1.9972d4021c971563936055d8c1eaae0ap-1,
+    0x1.596p-1
+  },
+  { // Entry 193
+    -0x1.9972d4021c971563936055d8c1eaae0ap-1,
+    -0x1.596p-1
+  },
+  { // Entry 194
+    -0x1.e501ffd3a68c38336d977f634326a342p-2,
+    0x1.5981293783e1fp1
+  },
+  { // Entry 195
+    0x1.e501ffd3a68c38336d977f634326a342p-2,
+    -0x1.5981293783e1fp1
+  },
+  { // Entry 196
+    0x1.1604cc3dfc4181c3e9481558467a85fep-1,
+    0x1.5bea010p468
+  },
+  { // Entry 197
+    -0x1.1604cc3dfc4181c3e9481558467a85fep-1,
+    -0x1.5bea010p468
+  },
+  { // Entry 198
+    -0x1.f76ca50bbbaeb012beade2a328e5fc03p-1,
+    0x1.60661c1969666p2
+  },
+  { // Entry 199
+    0x1.f76ca50bbbaeb012beade2a328e5fc03p-1,
+    -0x1.60661c1969666p2
+  },
+  { // Entry 200
+    0x1.cd8b73c9430fef75dc710ffdfe091b42p0,
+    0x1.62c5a850a142ap59
+  },
+  { // Entry 201
+    -0x1.cd8b73c9430fef75dc710ffdfe091b42p0,
+    -0x1.62c5a850a142ap59
+  },
+  { // Entry 202
+    0x1.3accfd453ee67296088378f582eacb02p0,
+    0x1.64ef438p142
+  },
+  { // Entry 203
+    -0x1.3accfd453ee67296088378f582eacb02p0,
+    -0x1.64ef438p142
+  },
+  { // Entry 204
+    -0x1.acd9302d72de4bd8dda8f5650b77e732p-1,
+    0x1.658p2
+  },
+  { // Entry 205
+    0x1.acd9302d72de4bd8dda8f5650b77e732p-1,
+    -0x1.658p2
+  },
+  { // Entry 206
+    0x1.f004f875c2e738159c7d75a3980cafd7p-1,
+    0x1.6603c65d348d2p5
+  },
+  { // Entry 207
+    -0x1.f004f875c2e738159c7d75a3980cafd7p-1,
+    -0x1.6603c65d348d2p5
+  },
+  { // Entry 208
+    0x1.f53496e6d7f7181a62fec4c8a710900ep-1,
+    0x1.660e6bf2e092ap5
+  },
+  { // Entry 209
+    -0x1.f53496e6d7f7181a62fec4c8a710900ep-1,
+    -0x1.660e6bf2e092ap5
+  },
+  { // Entry 210
+    0x1.b64ee24f0119c800d5d0bb10a39aca4ep-1,
+    0x1.6a8p-1
+  },
+  { // Entry 211
+    -0x1.b64ee24f0119c800d5d0bb10a39aca4ep-1,
+    -0x1.6a8p-1
+  },
+  { // Entry 212
+    -0x1.d9ba9a7975635a3acc324e6aeda45133p60,
+    0x1.6ac5b262ca1ffp849
+  },
+  { // Entry 213
+    0x1.d9ba9a7975635a3acc324e6aeda45133p60,
+    -0x1.6ac5b262ca1ffp849
+  },
+  { // Entry 214
+    0x1.b6f557b999e22e0db10a92b908e877f6p-1,
+    0x1.6aep-1
+  },
+  { // Entry 215
+    -0x1.b6f557b999e22e0db10a92b908e877f6p-1,
+    -0x1.6aep-1
+  },
+  { // Entry 216
+    0x1.c1e1d5c4c0f077fc871d4bd0a03c6431p-1,
+    0x1.6cdb36cdb36c9p239
+  },
+  { // Entry 217
+    -0x1.c1e1d5c4c0f077fc871d4bd0a03c6431p-1,
+    -0x1.6cdb36cdb36c9p239
+  },
+  { // Entry 218
+    0x1.95bce4f5786978078c310210dced6f3fp-1,
+    0x1.6f1af1612270ap6
+  },
+  { // Entry 219
+    -0x1.95bce4f5786978078c310210dced6f3fp-1,
+    -0x1.6f1af1612270ap6
+  },
+  { // Entry 220
+    0x1.711e8f5fffba1f599595fbaac5b70e0bp-4,
+    0x1.702p-4
+  },
+  { // Entry 221
+    -0x1.711e8f5fffba1f599595fbaac5b70e0bp-4,
+    -0x1.702p-4
+  },
+  { // Entry 222
+    0x1.fb5898f29bb257fda6f2bedfc491abaep2,
+    0x1.720p0
+  },
+  { // Entry 223
+    -0x1.fb5898f29bb257fda6f2bedfc491abaep2,
+    -0x1.720p0
+  },
+  { // Entry 224
+    -0x1.ff9b771284d23290cdd83717cc905773p1,
+    0x1.7348c347ddc20p239
+  },
+  { // Entry 225
+    0x1.ff9b771284d23290cdd83717cc905773p1,
+    -0x1.7348c347ddc20p239
+  },
+  { // Entry 226
+    0x1.f72d47a0080e2d3d040863d56dbb567ep-2,
+    0x1.739ce739ce738p100
+  },
+  { // Entry 227
+    -0x1.f72d47a0080e2d3d040863d56dbb567ep-2,
+    -0x1.739ce739ce738p100
+  },
+  { // Entry 228
+    0x1.76441e7f8ea5f8000001d1c5c84f104ep-4,
+    0x1.753acc3d3ff35p-4
+  },
+  { // Entry 229
+    -0x1.76441e7f8ea5f8000001d1c5c84f104ep-4,
+    -0x1.753acc3d3ff35p-4
+  },
+  { // Entry 230
+    0x1.ce3f642e15af3c921dd7129db5e39342p-1,
+    0x1.77fffffffffffp-1
+  },
+  { // Entry 231
+    -0x1.ce3f642e15af3c921dd7129db5e39342p-1,
+    -0x1.77fffffffffffp-1
+  },
+  { // Entry 232
+    0x1.f425002a548eb405450970a353d307f7p42,
+    0x1.78fdb9effea26p4
+  },
+  { // Entry 233
+    -0x1.f425002a548eb405450970a353d307f7p42,
+    -0x1.78fdb9effea26p4
+  },
+  { // Entry 234
+    -0x1.dbc80de7dd042a9371e1b45718e51babp-1,
+    0x1.7a5f74607e851p19
+  },
+  { // Entry 235
+    0x1.dbc80de7dd042a9371e1b45718e51babp-1,
+    -0x1.7a5f74607e851p19
+  },
+  { // Entry 236
+    0x1.7b3bb3d0b3ca42f13207842899e0ba71p42,
+    0x1.7f7ef77e83f1ap19
+  },
+  { // Entry 237
+    -0x1.7b3bb3d0b3ca42f13207842899e0ba71p42,
+    -0x1.7f7ef77e83f1ap19
+  },
+  { // Entry 238
+    0x1.e7f05b71cd2d0fb4df6a43375cd8f670p33,
+    0x1.7f7f10a07f45ep20
+  },
+  { // Entry 239
+    -0x1.e7f05b71cd2d0fb4df6a43375cd8f670p33,
+    -0x1.7f7f10a07f45ep20
+  },
+  { // Entry 240
+    0x1.80000000000038000000000007333333p-25,
+    0x1.7ffffffffffffp-25
+  },
+  { // Entry 241
+    -0x1.80000000000038000000000007333333p-25,
+    -0x1.7ffffffffffffp-25
+  },
+  { // Entry 242
+    0x1.80000000000068000000000022333333p-25,
+    0x1.8000000000002p-25
+  },
+  { // Entry 243
+    -0x1.80000000000068000000000022333333p-25,
+    -0x1.8000000000002p-25
+  },
+  { // Entry 244
+    0x1.24245af4cd994e9b3bba992d1016365bp-52,
+    0x1.81ae0dffa3b33p959
+  },
+  { // Entry 245
+    -0x1.24245af4cd994e9b3bba992d1016365bp-52,
+    -0x1.81ae0dffa3b33p959
+  },
+  { // Entry 246
+    0x1.d72261d98e26b7ffa300d89fd46fb775p-1,
+    0x1.846bd7a4dce55p698
+  },
+  { // Entry 247
+    -0x1.d72261d98e26b7ffa300d89fd46fb775p-1,
+    -0x1.846bd7a4dce55p698
+  },
+  { // Entry 248
+    0x1.42d8a1ba441ad4028ac7f1a6a5ee0c54p1,
+    0x1.8720588p392
+  },
+  { // Entry 249
+    -0x1.42d8a1ba441ad4028ac7f1a6a5ee0c54p1,
+    -0x1.8720588p392
+  },
+  { // Entry 250
+    0x1.ea7b444cd798d7faeeff093f1d9971adp-1,
+    0x1.8722a67ea14acp-1
+  },
+  { // Entry 251
+    -0x1.ea7b444cd798d7faeeff093f1d9971adp-1,
+    -0x1.8722a67ea14acp-1
+  },
+  { // Entry 252
+    -0x1.c7dc7f08dbba089f2d7e890021bedcb7p-1,
+    0x1.89936c8828d38p299
+  },
+  { // Entry 253
+    0x1.c7dc7f08dbba089f2d7e890021bedcb7p-1,
+    -0x1.89936c8828d38p299
+  },
+  { // Entry 254
+    0x1.569653e319bba800000c83632e43abdep1,
+    0x1.8a69106fb9798p6
+  },
+  { // Entry 255
+    -0x1.569653e319bba800000c83632e43abdep1,
+    -0x1.8a69106fb9798p6
+  },
+  { // Entry 256
+    0x1.f2db21469f3d5819fa9ba8dccbff914ap-1,
+    0x1.8b777e1d2308cp-1
+  },
+  { // Entry 257
+    -0x1.f2db21469f3d5819fa9ba8dccbff914ap-1,
+    -0x1.8b777e1d2308cp-1
+  },
+  { // Entry 258
+    0x1.f3688bc2594e20102573cff48190ac28p-1,
+    0x1.8bcp-1
+  },
+  { // Entry 259
+    -0x1.f3688bc2594e20102573cff48190ac28p-1,
+    -0x1.8bcp-1
+  },
+  { // Entry 260
+    0x1.8d3a2544566df7b559b4ac48e12eac71p-4,
+    0x1.8bfd2274d851ap-4
+  },
+  { // Entry 261
+    -0x1.8d3a2544566df7b559b4ac48e12eac71p-4,
+    -0x1.8bfd2274d851ap-4
+  },
+  { // Entry 262
+    0x1.f4575cc4e477f019dab5d0103aaf91cfp-1,
+    0x1.8c3a450071dd9p-1
+  },
+  { // Entry 263
+    -0x1.f4575cc4e477f019dab5d0103aaf91cfp-1,
+    -0x1.8c3a450071dd9p-1
+  },
+  { // Entry 264
+    -0x1.1e09f66c4250b94e9030cadd00851158p11,
+    0x1.8cc0dd2b0f4b8p200
+  },
+  { // Entry 265
+    0x1.1e09f66c4250b94e9030cadd00851158p11,
+    -0x1.8cc0dd2b0f4b8p200
+  },
+  { // Entry 266
+    0x1.f71496cb921e5a4d2f39046a628b6509p-1,
+    0x1.8dap-1
+  },
+  { // Entry 267
+    -0x1.f71496cb921e5a4d2f39046a628b6509p-1,
+    -0x1.8dap-1
+  },
+  { // Entry 268
+    0x1.f71b4a6591169819476e6b759c7aae52p-1,
+    0x1.8da368da368d8p-1
+  },
+  { // Entry 269
+    -0x1.f71b4a6591169819476e6b759c7aae52p-1,
+    -0x1.8da368da368d8p-1
+  },
+  { // Entry 270
+    0x1.ff9b68ccadb2ff62c26864288ed6a4dfp-1,
+    0x1.91ed64b977a9ap-1
+  },
+  { // Entry 271
+    -0x1.ff9b68ccadb2ff62c26864288ed6a4dfp-1,
+    -0x1.91ed64b977a9ap-1
+  },
+  { // Entry 272
+    0x1.00000000290484779fa491c728aef945p18,
+    0x1.921f754442d19p0
+  },
+  { // Entry 273
+    -0x1.00000000290484779fa491c728aef945p18,
+    -0x1.921f754442d19p0
+  },
+  { // Entry 274
+    0x1.eef067afd328f311ce2c7a1f420a5983p48,
+    0x1.921fb54442d10p0
+  },
+  { // Entry 275
+    -0x1.eef067afd328f311ce2c7a1f420a5983p48,
+    -0x1.921fb54442d10p0
+  },
+  { // Entry 276
+    0x1.0000000003af2f223eb1e709cba00ec3p-17,
+    0x1.921ff54442d18p1
+  },
+  { // Entry 277
+    -0x1.0000000003af2f223eb1e709cba00ec3p-17,
+    -0x1.921ff54442d18p1
+  },
+  { // Entry 278
+    -0x1.b6772cb667dc187b7d019d1d7232c9e7p17,
+    0x1.922p0
+  },
+  { // Entry 279
+    0x1.b6772cb667dc187b7d019d1d7232c9e7p17,
+    -0x1.922p0
+  },
+  { // Entry 280
+    -0x1.fffffffceeefe791be2074779fd1dd9ep-1,
+    0x1.922071c31fc99p20
+  },
+  { // Entry 281
+    0x1.fffffffceeefe791be2074779fd1dd9ep-1,
+    -0x1.922071c31fc99p20
+  },
+  { // Entry 282
+    0x1.9d7c1354ba6f781c8b04408094f45284p-3,
+    0x1.97fffffffffffp-3
+  },
+  { // Entry 283
+    -0x1.9d7c1354ba6f781c8b04408094f45284p-3,
+    -0x1.97fffffffffffp-3
+  },
+  { // Entry 284
+    0x1.9af8877bb45e47ffffe961084b2c0beap-4,
+    0x1.999999a10a13cp-4
+  },
+  { // Entry 285
+    -0x1.9af8877bb45e47ffffe961084b2c0beap-4,
+    -0x1.999999a10a13cp-4
+  },
+  { // Entry 286
+    -0x1.b6ce128587cd07ffff757abda294c151p4,
+    0x1.9b74446ed05dcp0
+  },
+  { // Entry 287
+    0x1.b6ce128587cd07ffff757abda294c151p4,
+    -0x1.9b74446ed05dcp0
+  },
+  { // Entry 288
+    0x1.ff65aef54c8fc8042841071b45b6d7d9p-1,
+    0x1.9eae494d2b275p4
+  },
+  { // Entry 289
+    -0x1.ff65aef54c8fc8042841071b45b6d7d9p-1,
+    -0x1.9eae494d2b275p4
+  },
+  { // Entry 290
+    0x1.61776aa407a437f617fcadb15c7f61c2p-3,
+    0x1.a80p1
+  },
+  { // Entry 291
+    -0x1.61776aa407a437f617fcadb15c7f61c2p-3,
+    -0x1.a80p1
+  },
+  { // Entry 292
+    0x1.b6001de13ad9580073acba4aa423e2d9p-3,
+    0x1.af8p-3
+  },
+  { // Entry 293
+    -0x1.b6001de13ad9580073acba4aa423e2d9p-3,
+    -0x1.af8p-3
+  },
+  { // Entry 294
+    0x1.b5a0503ae354b7a16f7c50f8b3bef2cap-4,
+    0x1.b3f8ea7b1f91bp-4
+  },
+  { // Entry 295
+    -0x1.b5a0503ae354b7a16f7c50f8b3bef2cap-4,
+    -0x1.b3f8ea7b1f91bp-4
+  },
+  { // Entry 296
+    0x1.b5a0503ae4c7b792537327f4245ac6fbp-4,
+    0x1.b3f8ea7b21008p-4
+  },
+  { // Entry 297
+    -0x1.b5a0503ae4c7b792537327f4245ac6fbp-4,
+    -0x1.b3f8ea7b21008p-4
+  },
+  { // Entry 298
+    0x1.057584c429b3a6ea0a65caff98634490p59,
+    0x1.b951f1572eba5p23
+  },
+  { // Entry 299
+    -0x1.057584c429b3a6ea0a65caff98634490p59,
+    -0x1.b951f1572eba5p23
+  },
+  { // Entry 300
+    -0x1.9a282fa1ff7d98039be3bf5b39cc6d89p2,
+    0x1.b9cp0
+  },
+  { // Entry 301
+    0x1.9a282fa1ff7d98039be3bf5b39cc6d89p2,
+    -0x1.b9cp0
+  },
+  { // Entry 302
+    -0x1.027d184afb1984ca1d21b1ac93111887p-52,
+    0x1.bab62ed655019p970
+  },
+  { // Entry 303
+    0x1.027d184afb1984ca1d21b1ac93111887p-52,
+    -0x1.bab62ed655019p970
+  },
+  { // Entry 304
+    0x1.ca6efdf845d6c7fffebaea1afbf7e961p2,
+    0x1.bea1b35f3cb6dp84
+  },
+  { // Entry 305
+    -0x1.ca6efdf845d6c7fffebaea1afbf7e961p2,
+    -0x1.bea1b35f3cb6dp84
+  },
+  { // Entry 306
+    0x1.fd87b34747b746b8b657cac797c0870dp42,
+    0x1.c463abeccb27bp3
+  },
+  { // Entry 307
+    -0x1.fd87b34747b746b8b657cac797c0870dp42,
+    -0x1.c463abeccb27bp3
+  },
+  { // Entry 308
+    0x1.ffffffffffffb094541a2461e734daeep-1,
+    0x1.c463abeccb2bbp2
+  },
+  { // Entry 309
+    -0x1.ffffffffffffb094541a2461e734daeep-1,
+    -0x1.c463abeccb2bbp2
+  },
+  { // Entry 310
+    0x1.fb057029acfd17fffffa5ac8204f0803p-1,
+    0x1.c6cbe26b7b45fp86
+  },
+  { // Entry 311
+    -0x1.fb057029acfd17fffffa5ac8204f0803p-1,
+    -0x1.c6cbe26b7b45fp86
+  },
+  { // Entry 312
+    0x1.c8d5a08be40c20p-117,
+    0x1.c8d5a08be40c2p-117
+  },
+  { // Entry 313
+    -0x1.c8d5a08be40c20p-117,
+    -0x1.c8d5a08be40c2p-117
+  },
+  { // Entry 314
+    0x1.e5dffd7f06cb3754933cea578deaad36p-2,
+    0x1.cad4e9827a2bep1
+  },
+  { // Entry 315
+    -0x1.e5dffd7f06cb3754933cea578deaad36p-2,
+    -0x1.cad4e9827a2bep1
+  },
+  { // Entry 316
+    0x1.e6be378b1b4eb7658e85ad0af33836a9p-2,
+    0x1.caeb940e4b997p1
+  },
+  { // Entry 317
+    -0x1.e6be378b1b4eb7658e85ad0af33836a9p-2,
+    -0x1.caeb940e4b997p1
+  },
+  { // Entry 318
+    0x1.e72bd025a1fd5765f853469a85ae7b7dp-2,
+    0x1.caf6c04ecd034p1
+  },
+  { // Entry 319
+    -0x1.e72bd025a1fd5765f853469a85ae7b7dp-2,
+    -0x1.caf6c04ecd034p1
+  },
+  { // Entry 320
+    0x1.e844b3d7cbe4375c28e322da6ba5d7d8p-2,
+    0x1.cb135ec1c956ep1
+  },
+  { // Entry 321
+    -0x1.e844b3d7cbe4375c28e322da6ba5d7d8p-2,
+    -0x1.cb135ec1c956ep1
+  },
+  { // Entry 322
+    0x1.dd38a1f1d289b6173115721bc5c1fc72p-54,
+    0x1.cb44e86bc192bp648
+  },
+  { // Entry 323
+    -0x1.dd38a1f1d289b6173115721bc5c1fc72p-54,
+    -0x1.cb44e86bc192bp648
+  },
+  { // Entry 324
+    0x1.dd38a1f1d289b6173115721bc629a23dp-53,
+    0x1.cb44e86bc192bp649
+  },
+  { // Entry 325
+    -0x1.dd38a1f1d289b6173115721bc629a23dp-53,
+    -0x1.cb44e86bc192bp649
+  },
+  { // Entry 326
+    -0x1.fff6e755320ed78db4d6eff4bf6a6b10p1,
+    0x1.cb61afedb2b3cp119
+  },
+  { // Entry 327
+    0x1.fff6e755320ed78db4d6eff4bf6a6b10p1,
+    -0x1.cb61afedb2b3cp119
+  },
+  { // Entry 328
+    0x1.ccdf4aa6c228f8041be91a142e0e271bp-7,
+    0x1.ccd7834ba3804p-7
+  },
+  { // Entry 329
+    -0x1.ccdf4aa6c228f8041be91a142e0e271bp-7,
+    -0x1.ccd7834ba3804p-7
+  },
+  { // Entry 330
+    0x1.cee50016fc2d8837286bf6fd431a7b3bp-4,
+    0x1.ccf0599da478ep-4
+  },
+  { // Entry 331
+    -0x1.cee50016fc2d8837286bf6fd431a7b3bp-4,
+    -0x1.ccf0599da478ep-4
+  },
+  { // Entry 332
+    0x1.44cf3ee8a75a87cc6657e62f94a93e6fp0,
+    0x1.ce8p-1
+  },
+  { // Entry 333
+    -0x1.44cf3ee8a75a87cc6657e62f94a93e6fp0,
+    -0x1.ce8p-1
+  },
+  { // Entry 334
+    0x1.45aa12ff98152800001fbd8799a96a2cp0,
+    0x1.cf276c9cb9af0p-1
+  },
+  { // Entry 335
+    -0x1.45aa12ff98152800001fbd8799a96a2cp0,
+    -0x1.cf276c9cb9af0p-1
+  },
+  { // Entry 336
+    0x1.f9bc744f61e0ed853829e2f765b8a12cp-4,
+    0x1.d2e979148a458p61
+  },
+  { // Entry 337
+    -0x1.f9bc744f61e0ed853829e2f765b8a12cp-4,
+    -0x1.d2e979148a458p61
+  },
+  { // Entry 338
+    0x1.6e70f9edbd1a082ae6f90c62ef4f31ddp-2,
+    0x1.d6b5ad6b5ab68p100
+  },
+  { // Entry 339
+    -0x1.6e70f9edbd1a082ae6f90c62ef4f31ddp-2,
+    -0x1.d6b5ad6b5ab68p100
+  },
+  { // Entry 340
+    0x1.13e9c6a348e4a7bede82724505269f68p2,
+    0x1.d96e058p488
+  },
+  { // Entry 341
+    -0x1.13e9c6a348e4a7bede82724505269f68p2,
+    -0x1.d96e058p488
+  },
+  { // Entry 342
+    -0x1.d355463c2303582fa31a3238dcbe560ep-5,
+    0x1.dd10f25171bc9p5
+  },
+  { // Entry 343
+    0x1.d355463c2303582fa31a3238dcbe560ep-5,
+    -0x1.dd10f25171bc9p5
+  },
+  { // Entry 344
+    0x1.ddf21ebf6fc927fffffbb3ecc0cff66ep-6,
+    0x1.ddcf6e56696a4p-6
+  },
+  { // Entry 345
+    -0x1.ddf21ebf6fc927fffffbb3ecc0cff66ep-6,
+    -0x1.ddcf6e56696a4p-6
+  },
+  { // Entry 346
+    0x1.5cb0bfc1558007e0c5d095f729e3427bp0,
+    0x1.ep-1
+  },
+  { // Entry 347
+    -0x1.5cb0bfc1558007e0c5d095f729e3427bp0,
+    -0x1.ep-1
+  },
+  { // Entry 348
+    -0x1.97b5e8ae9a21c7f4821922bc5b3782ccp1,
+    0x1.ep0
+  },
+  { // Entry 349
+    0x1.97b5e8ae9a21c7f4821922bc5b3782ccp1,
+    -0x1.ep0
+  },
+  { // Entry 350
+    -0x1.f8bf68d0c23f3741efb8bd99853bae8ap0,
+    0x1.e779de779de71p118
+  },
+  { // Entry 351
+    0x1.f8bf68d0c23f3741efb8bd99853bae8ap0,
+    -0x1.e779de779de71p118
+  },
+  { // Entry 352
+    -0x1.fffffffffd71cf934ef3e5df4008665fp-1,
+    0x1.eb0567bed1f71p12
+  },
+  { // Entry 353
+    0x1.fffffffffd71cf934ef3e5df4008665fp-1,
+    -0x1.eb0567bed1f71p12
+  },
+  { // Entry 354
+    0x1.ee788d1cc7954841878473aa5d2615a5p-4,
+    0x1.ec16f30a34fbcp-4
+  },
+  { // Entry 355
+    -0x1.ee788d1cc7954841878473aa5d2615a5p-4,
+    -0x1.ec16f30a34fbcp-4
+  },
+  { // Entry 356
+    0x1.efdad938b4b0e834014bf56a7084675dp-4,
+    0x1.ed7424ba2aa4ep-4
+  },
+  { // Entry 357
+    -0x1.efdad938b4b0e834014bf56a7084675dp-4,
+    -0x1.ed7424ba2aa4ep-4
+  },
+  { // Entry 358
+    0x1.da347607948f47ffef21697161fd3cddp-1,
+    0x1.ee9eda5890390p499
+  },
+  { // Entry 359
+    -0x1.da347607948f47ffef21697161fd3cddp-1,
+    -0x1.ee9eda5890390p499
+  },
+  { // Entry 360
+    0x1.f682d27a8be87f783d494857b6f30e05p0,
+    0x1.f4ff0d7b3ac10p100
+  },
+  { // Entry 361
+    -0x1.f682d27a8be87f783d494857b6f30e05p0,
+    -0x1.f4ff0d7b3ac10p100
+  },
+  { // Entry 362
+    -0x1.ffd36a753ced9027c93845adde046246p-1,
+    0x1.f5a814afd69f5p119
+  },
+  { // Entry 363
+    0x1.ffd36a753ced9027c93845adde046246p-1,
+    -0x1.f5a814afd69f5p119
+  },
+  { // Entry 364
+    -0x1.0fa7701d059b51de05df58ade26bec5cp-9,
+    0x1.f8fc824d2693bp61
+  },
+  { // Entry 365
+    0x1.0fa7701d059b51de05df58ade26bec5cp-9,
+    -0x1.f8fc824d2693bp61
+  },
+  { // Entry 366
+    -0x1.afe3875bd3afe801f149d0a9ad36f453p-4,
+    0x1.f9be6f9be6f98p9
+  },
+  { // Entry 367
+    0x1.afe3875bd3afe801f149d0a9ad36f453p-4,
+    -0x1.f9be6f9be6f98p9
+  },
+  { // Entry 368
+    0x1.fd1032e82deab7baba99c913dee10b9ap-4,
+    0x1.fa775cd264f43p-4
+  },
+  { // Entry 369
+    -0x1.fd1032e82deab7baba99c913dee10b9ap-4,
+    -0x1.fa775cd264f43p-4
+  },
+  { // Entry 370
+    0x1.fea8c67dd46ca83ca49ab9ecd0360739p-4,
+    0x1.fc09b47402d82p-4
+  },
+  { // Entry 371
+    -0x1.fea8c67dd46ca83ca49ab9ecd0360739p-4,
+    -0x1.fc09b47402d82p-4
+  },
+  { // Entry 372
+    -0x1.9020caf18a87438127a85d1f0a3d4205p-1,
+    0x1.feeffffffffc6p995
+  },
+  { // Entry 373
+    0x1.9020caf18a87438127a85d1f0a3d4205p-1,
+    -0x1.feeffffffffc6p995
+  },
+  { // Entry 374
+    0x1.af135beb0f2817fba77204a5b1b6766bp0,
+    0x1.ff01fffffffffp7
+  },
+  { // Entry 375
+    -0x1.af135beb0f2817fba77204a5b1b6766bp0,
+    -0x1.ff01fffffffffp7
+  },
+  { // Entry 376
+    -0x1.fd97532efd89b26bc294b27e0a1956b9p3,
+    0x1.ff8ffffffffffp540
+  },
+  { // Entry 377
+    0x1.fd97532efd89b26bc294b27e0a1956b9p3,
+    -0x1.ff8ffffffffffp540
+  },
+  { // Entry 378
+    -0x1.cc32cb933818111e6ddf00c5c79cbc88p-1,
+    0x1.ff8ffffffffffp870
+  },
+  { // Entry 379
+    0x1.cc32cb933818111e6ddf00c5c79cbc88p-1,
+    -0x1.ff8ffffffffffp870
+  },
+  { // Entry 380
+    -0x1.8659d3e2b52b880668ac8b4b9fae9538p-1,
+    0x1.ffc10p9
+  },
+  { // Entry 381
+    0x1.8659d3e2b52b880668ac8b4b9fae9538p-1,
+    -0x1.ffc10p9
+  },
+  { // Entry 382
+    -0x1.b66066fb812ee27dbb623a1a1353e062p-2,
+    0x1.ffcfff8p19
+  },
+  { // Entry 383
+    0x1.b66066fb812ee27dbb623a1a1353e062p-2,
+    -0x1.ffcfff8p19
+  },
+  { // Entry 384
+    -0x1.520ebd32e1d8ecd38bfcd6a57e1a377fp1,
+    0x1.ffcfff8p365
+  },
+  { // Entry 385
+    0x1.520ebd32e1d8ecd38bfcd6a57e1a377fp1,
+    -0x1.ffcfff8p365
+  },
+  { // Entry 386
+    0x1.489813c24d13b00ab69627d858bb63b5p0,
+    0x1.ffcffffffff6cp720
+  },
+  { // Entry 387
+    -0x1.489813c24d13b00ab69627d858bb63b5p0,
+    -0x1.ffcffffffff6cp720
+  },
+  { // Entry 388
+    0x1.413e63f7dd607ef3c8422a490af2dc30p0,
+    0x1.ffcfffffffff9p320
+  },
+  { // Entry 389
+    -0x1.413e63f7dd607ef3c8422a490af2dc30p0,
+    -0x1.ffcfffffffff9p320
+  },
+  { // Entry 390
+    -0x1.fc3928a39b65284d4c7ef3b6a2edc8f1p-2,
+    0x1.ffcffffffffffp990
+  },
+  { // Entry 391
+    0x1.fc3928a39b65284d4c7ef3b6a2edc8f1p-2,
+    -0x1.ffcffffffffffp990
+  },
+  { // Entry 392
+    -0x1.9ad70d284f16d59dcaa0ab9fb77d7490p-1,
+    0x1.ffeffffffffccp995
+  },
+  { // Entry 393
+    0x1.9ad70d284f16d59dcaa0ab9fb77d7490p-1,
+    -0x1.ffeffffffffccp995
+  },
+  { // Entry 394
+    0x1.aad6effcb6783826de7b24dba501c11cp-3,
+    0x1.ffefffffffffdp366
+  },
+  { // Entry 395
+    -0x1.aad6effcb6783826de7b24dba501c11cp-3,
+    -0x1.ffefffffffffdp366
+  },
+  { // Entry 396
+    0x1.c88645f9d119ec2030724a4ce4e6ebbap2,
+    0x1.ffeffffffffffp180
+  },
+  { // Entry 397
+    -0x1.c88645f9d119ec2030724a4ce4e6ebbap2,
+    -0x1.ffeffffffffffp180
+  },
+  { // Entry 398
+    0x1.131aa7b9d4aa07ff5840ac1e8fb42360p2,
+    0x1.ffeffffffffffp231
+  },
+  { // Entry 399
+    -0x1.131aa7b9d4aa07ff5840ac1e8fb42360p2,
+    -0x1.ffeffffffffffp231
+  },
+  { // Entry 400
+    0x1.f671719be50d1d4debe85c922e1e2913p-3,
+    0x1.ffeffffffffffp1019
+  },
+  { // Entry 401
+    -0x1.f671719be50d1d4debe85c922e1e2913p-3,
+    -0x1.ffeffffffffffp1019
+  },
+  { // Entry 402
+    0x1.ff078a2d2d871ac1f32765e9db644eb1p-1,
+    0x1.fff1fffffffffp40
+  },
+  { // Entry 403
+    -0x1.ff078a2d2d871ac1f32765e9db644eb1p-1,
+    -0x1.fff1fffffffffp40
+  },
+  { // Entry 404
+    0x1.0784b04fc42a59e77f85d9967da6775dp9,
+    0x1.fff1fffffffffp41
+  },
+  { // Entry 405
+    -0x1.0784b04fc42a59e77f85d9967da6775dp9,
+    -0x1.fff1fffffffffp41
+  },
+  { // Entry 406
+    0x1.8eb22dd167a37ad21ddf1e69734e9ce2p0,
+    0x1.fffff1fffffffp-1
+  },
+  { // Entry 407
+    -0x1.8eb22dd167a37ad21ddf1e69734e9ce2p0,
+    -0x1.fffff1fffffffp-1
+  },
+  { // Entry 408
+    -0x1.22e7346fd3dda553b146c37f61127a4cp1,
+    0x1.ffffff8p119
+  },
+  { // Entry 409
+    0x1.22e7346fd3dda553b146c37f61127a4cp1,
+    -0x1.ffffff8p119
+  },
+  { // Entry 410
+    -0x1.db0b3b019f175bed5bcf1a5602db00afp-3,
+    0x1.ffffff8p192
+  },
+  { // Entry 411
+    0x1.db0b3b019f175bed5bcf1a5602db00afp-3,
+    -0x1.ffffff8p192
+  },
+  { // Entry 412
+    0x1.06b6bede910257f315a5083a9ab2b650p-1,
+    0x1.ffffff8p543
+  },
+  { // Entry 413
+    -0x1.06b6bede910257f315a5083a9ab2b650p-1,
+    -0x1.ffffff8p543
+  },
+  { // Entry 414
+    -0x1.40f02a15dfa3d7ff3e2a4553f19cb2d0p1,
+    0x1.ffffffffbbfffp40
+  },
+  { // Entry 415
+    0x1.40f02a15dfa3d7ff3e2a4553f19cb2d0p1,
+    -0x1.ffffffffbbfffp40
+  },
+  { // Entry 416
+    0x1.ab60112ef4fddff3f5a2690c7d3ea6efp-2,
+    0x1.fffffffff7fffp231
+  },
+  { // Entry 417
+    -0x1.ab60112ef4fddff3f5a2690c7d3ea6efp-2,
+    -0x1.fffffffff7fffp231
+  },
+  { // Entry 418
+    0x1.35a9929eeafd70f0712abe2a511854a1p0,
+    0x1.fffffffffff78p920
+  },
+  { // Entry 419
+    -0x1.35a9929eeafd70f0712abe2a511854a1p0,
+    -0x1.fffffffffff78p920
+  },
+  { // Entry 420
+    0x1.4630298f3b993287205dc0b89b0601e0p0,
+    0x1.fffffffffffd5p995
+  },
+  { // Entry 421
+    -0x1.4630298f3b993287205dc0b89b0601e0p0,
+    -0x1.fffffffffffd5p995
+  },
+  { // Entry 422
+    -0x1.9472e045129fdba63791712416ec9613p-1,
+    0x1.fffffffffffe8p720
+  },
+  { // Entry 423
+    0x1.9472e045129fdba63791712416ec9613p-1,
+    -0x1.fffffffffffe8p720
+  },
+  { // Entry 424
+    0x1.42e586daa1b428fc0580888f2fc46893p0,
+    0x1.fffffffffffebp920
+  },
+  { // Entry 425
+    -0x1.42e586daa1b428fc0580888f2fc46893p0,
+    -0x1.fffffffffffebp920
+  },
+  { // Entry 426
+    -0x1.bfc436b94374b5f16b60ea69cd883992p-1,
+    0x1.ffffffffffff1p245
+  },
+  { // Entry 427
+    0x1.bfc436b94374b5f16b60ea69cd883992p-1,
+    -0x1.ffffffffffff1p245
+  },
+  { // Entry 428
+    0x1.35117d4a4f1e4bb22fdd03164a364ccfp0,
+    0x1.ffffffffffff4p845
+  },
+  { // Entry 429
+    -0x1.35117d4a4f1e4bb22fdd03164a364ccfp0,
+    -0x1.ffffffffffff4p845
+  },
+  { // Entry 430
+    -0x1.bfdd9292798aaa789c3df0df7729835ap-1,
+    0x1.ffffffffffff4p1020
+  },
+  { // Entry 431
+    0x1.bfdd9292798aaa789c3df0df7729835ap-1,
+    -0x1.ffffffffffff4p1020
+  },
+  { // Entry 432
+    -0x1.9b768ccdae6ebb70b45ac14e92b3d5c8p9,
+    0x1.ffffffffffffcp45
+  },
+  { // Entry 433
+    0x1.9b768ccdae6ebb70b45ac14e92b3d5c8p9,
+    -0x1.ffffffffffffcp45
+  },
+  { // Entry 434
+    0x1.feca047f2730f7395d95f469ccb5a5d3p-1,
+    0x1.ffffffffffffcp474
+  },
+  { // Entry 435
+    -0x1.feca047f2730f7395d95f469ccb5a5d3p-1,
+    -0x1.ffffffffffffcp474
+  },
+  { // Entry 436
+    -0x1.449f15cc945597ff58f2426acbff9c62p-2,
+    0x1.ffffffffffffcp976
+  },
+  { // Entry 437
+    0x1.449f15cc945597ff58f2426acbff9c62p-2,
+    -0x1.ffffffffffffcp976
+  },
+  { // Entry 438
+    0x1.fffc58da07951cbe22c96d73b1289e1ep-2,
+    0x1.ffffffffffffep881
+  },
+  { // Entry 439
+    -0x1.fffc58da07951cbe22c96d73b1289e1ep-2,
+    -0x1.ffffffffffffep881
+  },
+  { // Entry 440
+    -0x1.c1c9195ec23aa64df145dd269cd895e8p-1,
+    0x1.ffffffffffffep970
+  },
+  { // Entry 441
+    0x1.c1c9195ec23aa64df145dd269cd895e8p-1,
+    -0x1.ffffffffffffep970
+  },
+  { // Entry 442
+    0x1.3cc1ed3906d2f7fdd633cf4eb06f3f19p-2,
+    0x1.33328c1b37321p-2
+  },
+  { // Entry 443
+    -0x1.3cc1ed3906d2f7fdd633cf4eb06f3f19p-2,
+    -0x1.33328c1b37321p-2
+  },
+  { // Entry 444
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 445
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 446
+    -0.0,
+    -0.0
+  },
+  { // Entry 447
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 448
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 449
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 450
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 451
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 452
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 453
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 454
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 455
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 456
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 457
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 458
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 459
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 460
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 461
+    0x1.999999f0fb38c6122a1fa8e043bb07c2p-13,
+    0x1.999999999999ap-13
+  },
+  { // Entry 462
+    -0x1.999999f0fb38c6122a1fa8e043bb07c2p-13,
+    -0x1.999999999999ap-13
+  },
+  { // Entry 463
+    0x1.99999af7201744b823e5b270fd1aa39dp-12,
+    0x1.999999999999ap-12
+  },
+  { // Entry 464
+    -0x1.99999af7201744b823e5b270fd1aa39dp-12,
+    -0x1.999999999999ap-12
+  },
+  { // Entry 465
+    0x1.33333581062a38f04df024142ddaa05dp-11,
+    0x1.3333333333334p-11
+  },
+  { // Entry 466
+    -0x1.33333581062a38f04df024142ddaa05dp-11,
+    -0x1.3333333333334p-11
+  },
+  { // Entry 467
+    0x1.99999f0fb3a0f9d88738be2ff7af9aaap-11,
+    0x1.999999999999ap-11
+  },
+  { // Entry 468
+    -0x1.99999f0fb3a0f9d88738be2ff7af9aaap-11,
+    -0x1.999999999999ap-11
+  },
+  { // Entry 469
+    0x1.000005555577777854854dedc28ead51p-10,
+    0x1.0p-10
+  },
+  { // Entry 470
+    -0x1.000005555577777854854dedc28ead51p-10,
+    -0x1.0p-10
+  },
+  { // Entry 471
+    0x1.33333c6a7f4ec73853151cd76b79e135p-10,
+    0x1.3333333333333p-10
+  },
+  { // Entry 472
+    -0x1.33333c6a7f4ec73853151cd76b79e135p-10,
+    -0x1.3333333333333p-10
+  },
+  { // Entry 473
+    0x1.66667508e0a1b502287034d36bf4e3d5p-10,
+    0x1.6666666666666p-10
+  },
+  { // Entry 474
+    -0x1.66667508e0a1b502287034d36bf4e3d5p-10,
+    -0x1.6666666666666p-10
+  },
+  { // Entry 475
+    0x1.9999af7202c366f1e0b548a31c41d210p-10,
+    0x1.9999999999999p-10
+  },
+  { // Entry 476
+    -0x1.9999af7202c366f1e0b548a31c41d210p-10,
+    -0x1.9999999999999p-10
+  },
+  { // Entry 477
+    0x1.ccccebe76f102ff633c5f02a34076687p-10,
+    0x1.cccccccccccccp-10
+  },
+  { // Entry 478
+    -0x1.ccccebe76f102ff633c5f02a34076687p-10,
+    -0x1.cccccccccccccp-10
+  },
+  { // Entry 479
+    0x1.0667d5fcf3d078f940687eb974310fb9p-7,
+    0x1.0666666666666p-7
+  },
+  { // Entry 480
+    -0x1.0667d5fcf3d078f940687eb974310fb9p-7,
+    -0x1.0666666666666p-7
+  },
+  { // Entry 481
+    0x1.ccd4939d0ccd7646b3f81b7553675c23p-7,
+    0x1.cccccccccccccp-7
+  },
+  { // Entry 482
+    -0x1.ccd4939d0ccd7646b3f81b7553675c23p-7,
+    -0x1.cccccccccccccp-7
+  },
+  { // Entry 483
+    0x1.49a4fc02ad193e8e94c4b2429190b5b2p-6,
+    0x1.4999999999999p-6
+  },
+  { // Entry 484
+    -0x1.49a4fc02ad193e8e94c4b2429190b5b2p-6,
+    -0x1.4999999999999p-6
+  },
+  { // Entry 485
+    0x1.ace5ded5f6be698f56697ac761f3dc69p-6,
+    0x1.accccccccccccp-6
+  },
+  { // Entry 486
+    -0x1.ace5ded5f6be698f56697ac761f3dc69p-6,
+    -0x1.accccccccccccp-6
+  },
+  { // Entry 487
+    0x1.081767fd3cb685f7b069146ce3333851p-5,
+    0x1.080p-5
+  },
+  { // Entry 488
+    -0x1.081767fd3cb685f7b069146ce3333851p-5,
+    -0x1.080p-5
+  },
+  { // Entry 489
+    0x1.39c0d6dea66fb6d286d403c292527356p-5,
+    0x1.399999999999ap-5
+  },
+  { // Entry 490
+    -0x1.39c0d6dea66fb6d286d403c292527356p-5,
+    -0x1.399999999999ap-5
+  },
+  { // Entry 491
+    0x1.6b702b954bc1d583c4a46773c2c2a15dp-5,
+    0x1.6b33333333334p-5
+  },
+  { // Entry 492
+    -0x1.6b702b954bc1d583c4a46773c2c2a15dp-5,
+    -0x1.6b33333333334p-5
+  },
+  { // Entry 493
+    0x1.9d265618dd0c688e049c61090d3e3fe2p-5,
+    0x1.9cccccccccccep-5
+  },
+  { // Entry 494
+    -0x1.9d265618dd0c688e049c61090d3e3fe2p-5,
+    -0x1.9cccccccccccep-5
+  },
+  { // Entry 495
+    0x1.cee446e4cfd4be6900f4b906ca9725b1p-5,
+    0x1.ce66666666666p-5
+  },
+  { // Entry 496
+    -0x1.cee446e4cfd4be6900f4b906ca9725b1p-5,
+    -0x1.ce66666666666p-5
+  },
+  { // Entry 497
+    0x1.a1eaedd5a4313e9d08bc7bb17a22531fp-1,
+    0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 498
+    -0x1.a1eaedd5a4313e9d08bc7bb17a22531fp-1,
+    -0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 499
+    0x1.d93b8aad424de0e43fb04d6781be81a3p1,
+    0x1.4e7fc4369bdadp0
+  },
+  { // Entry 500
+    -0x1.d93b8aad424de0e43fb04d6781be81a3p1,
+    -0x1.4e7fc4369bdadp0
+  },
+  { // Entry 501
+    -0x1.563acf158c2eb678d71be31e0f34754dp1,
+    0x1.edbfa651e9c84p0
+  },
+  { // Entry 502
+    0x1.563acf158c2eb678d71be31e0f34754dp1,
+    -0x1.edbfa651e9c84p0
+  },
+  { // Entry 503
+    -0x1.576b77609f0890313c371a0a2c582145p-1,
+    0x1.467fc4369bdadp1
+  },
+  { // Entry 504
+    0x1.576b77609f0890313c371a0a2c582145p-1,
+    -0x1.467fc4369bdadp1
+  },
+  { // Entry 505
+    0x1.00155777aebf6ad41b39a808ed5c3384p-5,
+    0x1.961fb54442d18p1
+  },
+  { // Entry 506
+    -0x1.00155777aebf6ad41b39a808ed5c3384p-5,
+    -0x1.961fb54442d18p1
+  },
+  { // Entry 507
+    0x1.87e9966e7d22d348fec6c95f851775f4p-1,
+    0x1.e5bfa651e9c83p1
+  },
+  { // Entry 508
+    -0x1.87e9966e7d22d348fec6c95f851775f4p-1,
+    -0x1.e5bfa651e9c83p1
+  },
+  { // Entry 509
+    0x1.a49e7d8987850f9ca5b9332e39dcd88fp1,
+    0x1.1aafcbafc85f7p2
+  },
+  { // Entry 510
+    -0x1.a49e7d8987850f9ca5b9332e39dcd88fp1,
+    -0x1.1aafcbafc85f7p2
+  },
+  { // Entry 511
+    -0x1.79ced8156d040edde5a6ab62255e2261p1,
+    0x1.427fc4369bdadp2
+  },
+  { // Entry 512
+    0x1.79ced8156d040edde5a6ab62255e2261p1,
+    -0x1.427fc4369bdadp2
+  },
+  { // Entry 513
+    -0x1.6f1f65cd1e91b5e5ec1e120e9e0ddc0ap-1,
+    0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 514
+    0x1.6f1f65cd1e91b5e5ec1e120e9e0ddc0ap-1,
+    -0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 515
+    -0x1.67747d5f844e1b0c503d51e7ba032ffcp-1,
+    0x1.6af2eff0a2896p2
+  },
+  { // Entry 516
+    0x1.67747d5f844e1b0c503d51e7ba032ffcp-1,
+    -0x1.6af2eff0a2896p2
+  },
+  { // Entry 517
+    -0x1.626a258815d1823506d17069130eb9fbp1,
+    0x1.43c62a9d02414p2
+  },
+  { // Entry 518
+    0x1.626a258815d1823506d17069130eb9fbp1,
+    -0x1.43c62a9d02414p2
+  },
+  { // Entry 519
+    0x1.d6adaf80f8b051fbc7ab9f2e09e8e608p1,
+    0x1.1c99654961f92p2
+  },
+  { // Entry 520
+    -0x1.d6adaf80f8b051fbc7ab9f2e09e8e608p1,
+    -0x1.1c99654961f92p2
+  },
+  { // Entry 521
+    0x1.a94d1b21370d52bfcd9ec417e41d6e5bp-1,
+    0x1.ead93feb8361fp1
+  },
+  { // Entry 522
+    -0x1.a94d1b21370d52bfcd9ec417e41d6e5bp-1,
+    -0x1.ead93feb8361fp1
+  },
+  { // Entry 523
+    0x1.4cba9e78222340ca493f803bbc947659p-4,
+    0x1.9c7fb54442d1ap1
+  },
+  { // Entry 524
+    -0x1.4cba9e78222340ca493f803bbc947659p-4,
+    -0x1.9c7fb54442d1ap1
+  },
+  { // Entry 525
+    -0x1.2cb6d02634531a6839bf898cc1f918dep-1,
+    0x1.4e262a9d02415p1
+  },
+  { // Entry 526
+    0x1.2cb6d02634531a6839bf898cc1f918dep-1,
+    -0x1.4e262a9d02415p1
+  },
+  { // Entry 527
+    -0x1.18d9112308d5b897ba44cfc5c4437317p1,
+    0x1.ff993feb83620p0
+  },
+  { // Entry 528
+    0x1.18d9112308d5b897ba44cfc5c4437317p1,
+    -0x1.ff993feb83620p0
+  },
+  { // Entry 529
+    0x1.56fe0145cf2901975829ddc3fc786df0p2,
+    0x1.62e62a9d02416p0
+  },
+  { // Entry 530
+    -0x1.56fe0145cf2901975829ddc3fc786df0p2,
+    -0x1.62e62a9d02416p0
+  },
+  { // Entry 531
+    0x1.f4ad353aca453f62beae01cd5b13d50dp-1,
+    0x1.8c662a9d02419p-1
+  },
+  { // Entry 532
+    -0x1.f4ad353aca453f62beae01cd5b13d50dp-1,
+    -0x1.8c662a9d02419p-1
+  },
+  { // Entry 533
+    0x1.6a7e1f6407ee61397d016d691bb61d17p3,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 534
+    -0x1.6a7e1f6407ee61397d016d691bb61d17p3,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 535
+    0x1.0d718cfc82464536bfd621be419f007cp6,
+    -0x1.95ec8b9e03d54p0
+  },
+  { // Entry 536
+    -0x1.0d718cfc82464536bfd621be419f007cp6,
+    0x1.95ec8b9e03d54p0
+  },
+  { // Entry 537
+    -0x1.11d87146c2d5a1832c24f3d87052d7ebp4,
+    -0x1.832efa2a435a9p0
+  },
+  { // Entry 538
+    0x1.11d87146c2d5a1832c24f3d87052d7ebp4,
+    0x1.832efa2a435a9p0
+  },
+  { // Entry 539
+    -0x1.e3a3729b3e86e2221fa5f04abf699e6ep2,
+    -0x1.707168b682dfep0
+  },
+  { // Entry 540
+    0x1.e3a3729b3e86e2221fa5f04abf699e6ep2,
+    0x1.707168b682dfep0
+  },
+  { // Entry 541
+    -0x1.3429e61a5d1f2e80fbd1370d4a7c2b10p2,
+    -0x1.5db3d742c2653p0
+  },
+  { // Entry 542
+    0x1.3429e61a5d1f2e80fbd1370d4a7c2b10p2,
+    0x1.5db3d742c2653p0
+  },
+  { // Entry 543
+    -0x1.c08caec5cf99725e57c32766fb084c5fp1,
+    -0x1.4af645cf01ea8p0
+  },
+  { // Entry 544
+    0x1.c08caec5cf99725e57c32766fb084c5fp1,
+    0x1.4af645cf01ea8p0
+  },
+  { // Entry 545
+    -0x1.5d603d751767ee70e9a2ff54959fa4a7p1,
+    -0x1.3838b45b416fdp0
+  },
+  { // Entry 546
+    0x1.5d603d751767ee70e9a2ff54959fa4a7p1,
+    0x1.3838b45b416fdp0
+  },
+  { // Entry 547
+    -0x1.1b48a35b1b277effabd7278b525708edp1,
+    -0x1.257b22e780f52p0
+  },
+  { // Entry 548
+    0x1.1b48a35b1b277effabd7278b525708edp1,
+    0x1.257b22e780f52p0
+  },
+  { // Entry 549
+    -0x1.d74caf9912dc7d9669b00926aa1ade11p0,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 550
+    0x1.d74caf9912dc7d9669b00926aa1ade11p0,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 551
+    -0x1.6be702e1f6cd60bfd86ad86180d18490p0,
+    -0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 552
+    0x1.6be702e1f6cd60bfd86ad86180d18490p0,
+    0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 553
+    -0x1.4d0df1fc1d3484b027537d8117a395f4p0,
+    -0x1.d4b87dab670a0p-1
+  },
+  { // Entry 554
+    0x1.4d0df1fc1d3484b027537d8117a395f4p0,
+    0x1.d4b87dab670a0p-1
+  },
+  { // Entry 555
+    -0x1.316c8b068a7af257f1e5a51943834f3ep0,
+    -0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 556
+    0x1.316c8b068a7af257f1e5a51943834f3ep0,
+    0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 557
+    -0x1.1872a1aaa7e26cf417e6331617ea7dd0p0,
+    -0x1.a970fb56ce140p-1
+  },
+  { // Entry 558
+    0x1.1872a1aaa7e26cf417e6331617ea7dd0p0,
+    0x1.a970fb56ce140p-1
+  },
+  { // Entry 559
+    -0x1.01aeeed04cbb0dfacd1d00c657d08b19p0,
+    -0x1.93cd3a2c81990p-1
+  },
+  { // Entry 560
+    0x1.01aeeed04cbb0dfacd1d00c657d08b19p0,
+    0x1.93cd3a2c81990p-1
+  },
+  { // Entry 561
+    -0x1.d98e408ac2085c4e0588df10ba7fb023p-1,
+    -0x1.7e297902351e0p-1
+  },
+  { // Entry 562
+    0x1.d98e408ac2085c4e0588df10ba7fb023p-1,
+    0x1.7e297902351e0p-1
+  },
+  { // Entry 563
+    -0x1.b2e4750631c53c54f5830fd41753d427p-1,
+    -0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 564
+    0x1.b2e4750631c53c54f5830fd41753d427p-1,
+    0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 565
+    -0x1.8ee916392e04590ce988d82cc3959021p-1,
+    -0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 566
+    0x1.8ee916392e04590ce988d82cc3959021p-1,
+    0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 567
+    -0x1.6d395e495f77e709842592e226607b53p-1,
+    -0x1.3d3e35834fad0p-1
+  },
+  { // Entry 568
+    0x1.6d395e495f77e709842592e226607b53p-1,
+    0x1.3d3e35834fad0p-1
+  },
+  { // Entry 569
+    -0x1.24e3e017a098ecf4de48bceeb026743ap-1,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 570
+    0x1.24e3e017a098ecf4de48bceeb026743ap-1,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 571
+    -0x1.fdbd5f0596bdc6ef8da53ee652b57cf7p-2,
+    -0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 572
+    0x1.fdbd5f0596bdc6ef8da53ee652b57cf7p-2,
+    0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 573
+    -0x1.b5f3d6afbe6f259af37c4e633ab5fdfap-2,
+    -0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 574
+    0x1.b5f3d6afbe6f259af37c4e633ab5fdfap-2,
+    0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 575
+    -0x1.71a0f98081ea98b5f30a1593e3fc6373p-2,
+    -0x1.62b9586ad0a20p-2
+  },
+  { // Entry 576
+    0x1.71a0f98081ea98b5f30a1593e3fc6373p-2,
+    0x1.62b9586ad0a20p-2
+  },
+  { // Entry 577
+    -0x1.301909a2c36e89a67528a38c77ac9e43p-2,
+    -0x1.279a74590331ap-2
+  },
+  { // Entry 578
+    0x1.301909a2c36e89a67528a38c77ac9e43p-2,
+    0x1.279a74590331ap-2
+  },
+  { // Entry 579
+    -0x1.e18e941cc7fd519ecc40548a86d2a3edp-3,
+    -0x1.d8f7208e6b829p-3
+  },
+  { // Entry 580
+    0x1.e18e941cc7fd519ecc40548a86d2a3edp-3,
+    0x1.d8f7208e6b829p-3
+  },
+  { // Entry 581
+    -0x1.6650784bbdcc02f3390262cf68bad3c6p-3,
+    -0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 582
+    0x1.6650784bbdcc02f3390262cf68bad3c6p-3,
+    0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 583
+    -0x1.db142468cdafc56ecfdf8b1052b09e63p-4,
+    -0x1.d8f7208e6b826p-4
+  },
+  { // Entry 584
+    0x1.db142468cdafc56ecfdf8b1052b09e63p-4,
+    0x1.d8f7208e6b826p-4
+  },
+  { // Entry 585
+    -0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 586
+    0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 587
+    0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 588
+    -0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 589
+    0x1.db142468cdb036f08783d936b19348f6p-4,
+    0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 590
+    -0x1.db142468cdb036f08783d936b19348f6p-4,
+    -0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 591
+    0x1.6650784bbdcc44e8be2c220e1d673ffbp-3,
+    0x1.62b9586ad0a22p-3
+  },
+  { // Entry 592
+    -0x1.6650784bbdcc44e8be2c220e1d673ffbp-3,
+    -0x1.62b9586ad0a22p-3
+  },
+  { // Entry 593
+    0x1.e18e941cc7fd9528a5585157ac65e615p-3,
+    0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 594
+    -0x1.e18e941cc7fd9528a5585157ac65e615p-3,
+    -0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 595
+    0x1.301909a2c36eac78ec1b4e711316d0c4p-2,
+    0x1.279a74590331cp-2
+  },
+  { // Entry 596
+    -0x1.301909a2c36eac78ec1b4e711316d0c4p-2,
+    -0x1.279a74590331cp-2
+  },
+  { // Entry 597
+    0x1.71a0f98081eabce155f310288c4245eap-2,
+    0x1.62b9586ad0a22p-2
+  },
+  { // Entry 598
+    -0x1.71a0f98081eabce155f310288c4245eap-2,
+    -0x1.62b9586ad0a22p-2
+  },
+  { // Entry 599
+    0x1.b5f3d6afbe6f4b756842b8eee5c85a31p-2,
+    0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 600
+    -0x1.b5f3d6afbe6f4b756842b8eee5c85a31p-2,
+    -0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 601
+    0x1.fdbd5f0596bdeedd82d5223c3c1b1925p-2,
+    0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 602
+    -0x1.fdbd5f0596bdeedd82d5223c3c1b1925p-2,
+    -0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 603
+    0x1.24e3e017a098ecf4de48bceeb026743ap-1,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 604
+    -0x1.24e3e017a098ecf4de48bceeb026743ap-1,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 605
+    0x1.6d395e495f778678b9ea0d4808c7220ap-1,
+    0x1.3d3e35834faccp-1
+  },
+  { // Entry 606
+    -0x1.6d395e495f778678b9ea0d4808c7220ap-1,
+    -0x1.3d3e35834faccp-1
+  },
+  { // Entry 607
+    0x1.8ee916392e03f2335033a41b3b0206e4p-1,
+    0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 608
+    -0x1.8ee916392e03f2335033a41b3b0206e4p-1,
+    -0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 609
+    0x1.b2e4750631c4ce283ef8753fa1edf324p-1,
+    0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 610
+    -0x1.b2e4750631c4ce283ef8753fa1edf324p-1,
+    -0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 611
+    0x1.d98e408ac207e58e15f0185d4b10cf71p-1,
+    0x1.7e297902351dcp-1
+  },
+  { // Entry 612
+    -0x1.d98e408ac207e58e15f0185d4b10cf71p-1,
+    -0x1.7e297902351dcp-1
+  },
+  { // Entry 613
+    0x1.01aeeed04cbacd8eb6bc094664db7763p0,
+    0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 614
+    -0x1.01aeeed04cbacd8eb6bc094664db7763p0,
+    -0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 615
+    0x1.1872a1aaa7e2268cb946fceb83f0ea5ep0,
+    0x1.a970fb56ce13cp-1
+  },
+  { // Entry 616
+    -0x1.1872a1aaa7e2268cb946fceb83f0ea5ep0,
+    -0x1.a970fb56ce13cp-1
+  },
+  { // Entry 617
+    0x1.316c8b068a7aa4cb77bc3f39921c2c8dp0,
+    0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 618
+    -0x1.316c8b068a7aa4cb77bc3f39921c2c8dp0,
+    -0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 619
+    0x1.4d0df1fc1d342e867e49f1f6ddacedaap0,
+    0x1.d4b87dab6709cp-1
+  },
+  { // Entry 620
+    -0x1.4d0df1fc1d342e867e49f1f6ddacedaap0,
+    -0x1.d4b87dab6709cp-1
+  },
+  { // Entry 621
+    0x1.6be702e1f6cd0016ba1677a9cd33f139p0,
+    0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 622
+    -0x1.6be702e1f6cd0016ba1677a9cd33f139p0,
+    -0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 623
+    0x1.d74caf9912dc7d9669b00926aa1ade11p0,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 624
+    -0x1.d74caf9912dc7d9669b00926aa1ade11p0,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 625
+    0x1.1b48a35b1b283bbc82bb044e99c4d9b1p1,
+    0x1.257b22e780f56p0
+  },
+  { // Entry 626
+    -0x1.1b48a35b1b283bbc82bb044e99c4d9b1p1,
+    -0x1.257b22e780f56p0
+  },
+  { // Entry 627
+    0x1.5d603d751768fcd8af82b38746888530p1,
+    0x1.3838b45b41701p0
+  },
+  { // Entry 628
+    -0x1.5d603d751768fcd8af82b38746888530p1,
+    -0x1.3838b45b41701p0
+  },
+  { // Entry 629
+    0x1.c08caec5cf9b1b54b045228b3eeb2469p1,
+    0x1.4af645cf01eacp0
+  },
+  { // Entry 630
+    -0x1.c08caec5cf9b1b54b045228b3eeb2469p1,
+    -0x1.4af645cf01eacp0
+  },
+  { // Entry 631
+    0x1.3429e61a5d20b175d45c2a675a386ba3p2,
+    0x1.5db3d742c2657p0
+  },
+  { // Entry 632
+    -0x1.3429e61a5d20b175d45c2a675a386ba3p2,
+    -0x1.5db3d742c2657p0
+  },
+  { // Entry 633
+    0x1.e3a3729b3e8a83d44a76e342d6b3fcbfp2,
+    0x1.707168b682e02p0
+  },
+  { // Entry 634
+    -0x1.e3a3729b3e8a83d44a76e342d6b3fcbfp2,
+    -0x1.707168b682e02p0
+  },
+  { // Entry 635
+    0x1.11d87146c2da39408e86083bf1471c8bp4,
+    0x1.832efa2a435adp0
+  },
+  { // Entry 636
+    -0x1.11d87146c2da39408e86083bf1471c8bp4,
+    -0x1.832efa2a435adp0
+  },
+  { // Entry 637
+    -0x1.0d718cfc82348ab9754f3d6b5e0ea499p6,
+    0x1.95ec8b9e03d58p0
+  },
+  { // Entry 638
+    0x1.0d718cfc82348ab9754f3d6b5e0ea499p6,
+    -0x1.95ec8b9e03d58p0
+  },
+  { // Entry 639
+    -0x1.6a7e1f6407ee61397d016d691bb61d17p3,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 640
+    0x1.6a7e1f6407ee61397d016d691bb61d17p3,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 641
+    0x1.9f39ea5bbe4749e962a807c2dc11c825p0,
+    0x1.04aff6d330942p0
+  },
+  { // Entry 642
+    -0x1.9f39ea5bbe4749e962a807c2dc11c825p0,
+    -0x1.04aff6d330942p0
+  },
+  { // Entry 643
+    0x1.9f3c4b8469f853b8507455717327c311p0,
+    0x1.04b09e98dcdb4p0
+  },
+  { // Entry 644
+    -0x1.9f3c4b8469f853b8507455717327c311p0,
+    -0x1.04b09e98dcdb4p0
+  },
+  { // Entry 645
+    0x1.9f3eacb224c2086ef391b0dfad2f1010p0,
+    0x1.04b1465e89226p0
+  },
+  { // Entry 646
+    -0x1.9f3eacb224c2086ef391b0dfad2f1010p0,
+    -0x1.04b1465e89226p0
+  },
+  { // Entry 647
+    0x1.9f410de4eeb69590caee85e886f478a8p0,
+    0x1.04b1ee2435698p0
+  },
+  { // Entry 648
+    -0x1.9f410de4eeb69590caee85e886f478a8p0,
+    -0x1.04b1ee2435698p0
+  },
+  { // Entry 649
+    0x1.9f436f1cc7e828f752819af1e2f4b6a2p0,
+    0x1.04b295e9e1b0ap0
+  },
+  { // Entry 650
+    -0x1.9f436f1cc7e828f752819af1e2f4b6a2p0,
+    -0x1.04b295e9e1b0ap0
+  },
+  { // Entry 651
+    0x1.9f45d059b068f0d205485ad648223e6dp0,
+    0x1.04b33daf8df7cp0
+  },
+  { // Entry 652
+    -0x1.9f45d059b068f0d205485ad648223e6dp0,
+    -0x1.04b33daf8df7cp0
+  },
+  { // Entry 653
+    0x1.9f48319ba84b1ba65f452cfe65e02d0ep0,
+    0x1.04b3e5753a3eep0
+  },
+  { // Entry 654
+    -0x1.9f48319ba84b1ba65f452cfe65e02d0ep0,
+    -0x1.04b3e5753a3eep0
+  },
+  { // Entry 655
+    0x1.9f4a92e2afa0d84fdf7ddbaad302f150p0,
+    0x1.04b48d3ae6860p0
+  },
+  { // Entry 656
+    -0x1.9f4a92e2afa0d84fdf7ddbaad302f150p0,
+    -0x1.04b48d3ae6860p0
+  },
+  { // Entry 657
+    0x1.9f4cf42ec67ba7ad0db2be248a870bfep0,
+    0x1.04b5350092ccfp0
+  },
+  { // Entry 658
+    -0x1.9f4cf42ec67ba7ad0db2be248a870bfep0,
+    -0x1.04b5350092ccfp0
+  },
+  { // Entry 659
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 660
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 661
+    -0.0,
+    -0.0
+  },
+  { // Entry 662
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 663
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 664
+    0x1.4d82b68cac19e6d065c5f1aa7621c08cp-1,
+    0x1.279a74590331bp-1
+  },
+  { // Entry 665
+    -0x1.4d82b68cac19e6d065c5f1aa7621c08cp-1,
+    -0x1.279a74590331bp-1
+  },
+  { // Entry 666
+    0x1.4d82b68cac19fd9a5b0c912d9093aa4ap-1,
+    0x1.279a74590331cp-1
+  },
+  { // Entry 667
+    -0x1.4d82b68cac19fd9a5b0c912d9093aa4ap-1,
+    -0x1.279a74590331cp-1
+  },
+  { // Entry 668
+    0x1.4d82b68cac1a1464505330b0abf316bfp-1,
+    0x1.279a74590331dp-1
+  },
+  { // Entry 669
+    -0x1.4d82b68cac1a1464505330b0abf316bfp-1,
+    -0x1.279a74590331dp-1
+  },
+  { // Entry 670
+    -0x1.89712eeca32be97dba2ca3f9b8379154p2,
+    0x1.bb67ae8584ca9p0
+  },
+  { // Entry 671
+    0x1.89712eeca32be97dba2ca3f9b8379154p2,
+    -0x1.bb67ae8584ca9p0
+  },
+  { // Entry 672
+    -0x1.89712eeca32b4e528d25635a4293be1dp2,
+    0x1.bb67ae8584caap0
+  },
+  { // Entry 673
+    0x1.89712eeca32b4e528d25635a4293be1dp2,
+    -0x1.bb67ae8584caap0
+  },
+  { // Entry 674
+    -0x1.89712eeca32ab327601e22bb442cdc37p2,
+    0x1.bb67ae8584cabp0
+  },
+  { // Entry 675
+    0x1.89712eeca32ab327601e22bb442cdc37p2,
+    -0x1.bb67ae8584cabp0
+  },
+  { // Entry 676
+    0x1.def49eaab37a00f90cb4454710e4e545p-2,
+    0x1.bffffffffffffp-2
+  },
+  { // Entry 677
+    -0x1.def49eaab37a00f90cb4454710e4e545p-2,
+    -0x1.bffffffffffffp-2
+  },
+  { // Entry 678
+    0x1.def49eaab37a1479231e899509ecf26cp-2,
+    0x1.cp-2
+  },
+  { // Entry 679
+    -0x1.def49eaab37a1479231e899509ecf26cp-2,
+    -0x1.cp-2
+  },
+  { // Entry 680
+    0x1.def49eaab37a27f93988cde3033df72cp-2,
+    0x1.c000000000001p-2
+  },
+  { // Entry 681
+    -0x1.def49eaab37a27f93988cde3033df72cp-2,
+    -0x1.c000000000001p-2
+  },
+  { // Entry 682
+    0x1.a46cb2be6a0b02e2dfffc95e6dcb2842p-1,
+    0x1.5ffffffffffffp-1
+  },
+  { // Entry 683
+    -0x1.a46cb2be6a0b02e2dfffc95e6dcb2842p-1,
+    -0x1.5ffffffffffffp-1
+  },
+  { // Entry 684
+    0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
+    0x1.6p-1
+  },
+  { // Entry 685
+    -0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
+    -0x1.6p-1
+  },
+  { // Entry 686
+    0x1.a46cb2be6a0b387686c50a29c829ee42p-1,
+    0x1.6000000000001p-1
+  },
+  { // Entry 687
+    -0x1.a46cb2be6a0b387686c50a29c829ee42p-1,
+    -0x1.6000000000001p-1
+  },
+  { // Entry 688
+    0x1.3d6dc956eac79a85b47456fa0c946b13p1,
+    0x1.2ffffffffffffp0
+  },
+  { // Entry 689
+    -0x1.3d6dc956eac79a85b47456fa0c946b13p1,
+    -0x1.2ffffffffffffp0
+  },
+  { // Entry 690
+    0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
+    0x1.3p0
+  },
+  { // Entry 691
+    -0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
+    -0x1.3p0
+  },
+  { // Entry 692
+    0x1.3d6dc956eac80cebf961ebee274107p1,
+    0x1.3000000000001p0
+  },
+  { // Entry 693
+    -0x1.3d6dc956eac80cebf961ebee274107p1,
+    -0x1.3000000000001p0
+  },
+  { // Entry 694
+    -0x1.b2d89a93829536cc9283cfc7e01fe2a3p-1,
+    0x1.37fffffffffffp1
+  },
+  { // Entry 695
+    0x1.b2d89a93829536cc9283cfc7e01fe2a3p-1,
+    -0x1.37fffffffffffp1
+  },
+  { // Entry 696
+    -0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
+    0x1.380p1
+  },
+  { // Entry 697
+    0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
+    -0x1.380p1
+  },
+  { // Entry 698
+    -0x1.b2d89a9382945a782e17a4278bf17736p-1,
+    0x1.3800000000001p1
+  },
+  { // Entry 699
+    0x1.b2d89a9382945a782e17a4278bf17736p-1,
+    -0x1.3800000000001p1
+  },
+  { // Entry 700
+    0x1.06f8d014bf083cd36650e9466dc086dcp-4,
+    0x1.069c8b46b3792p-4
+  },
+  { // Entry 701
+    -0x1.06f8d014bf083cd36650e9466dc086dcp-4,
+    -0x1.069c8b46b3792p-4
+  },
+  { // Entry 702
+    0x1.080f73b07051e37b23da3337c0aed353p-3,
+    0x1.069c8b46b3792p-3
+  },
+  { // Entry 703
+    -0x1.080f73b07051e37b23da3337c0aed353p-3,
+    -0x1.069c8b46b3792p-3
+  },
+  { // Entry 704
+    0x1.8ed9142fc918888e294d3ff5d0149415p-3,
+    0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 705
+    -0x1.8ed9142fc918888e294d3ff5d0149415p-3,
+    -0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 706
+    0x1.0c864083d1e7ca5551bce24972878127p-2,
+    0x1.069c8b46b3792p-2
+  },
+  { // Entry 707
+    -0x1.0c864083d1e7ca5551bce24972878127p-2,
+    -0x1.069c8b46b3792p-2
+  },
+  { // Entry 708
+    0x1.53fdcdfd37f04375d9ffb6aebafe7df8p-2,
+    0x1.4843ae1860576p-2
+  },
+  { // Entry 709
+    -0x1.53fdcdfd37f04375d9ffb6aebafe7df8p-2,
+    -0x1.4843ae1860576p-2
+  },
+  { // Entry 710
+    0x1.9e9257e6b62a0a8de5650c837f7f6227p-2,
+    0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 711
+    -0x1.9e9257e6b62a0a8de5650c837f7f6227p-2,
+    -0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 712
+    0x1.ed21e59972b07c7053f4f35dd5502493p-2,
+    0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 713
+    -0x1.ed21e59972b07c7053f4f35dd5502493p-2,
+    -0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 714
+    0x1.205a6009d5e3dde25d6deb7d521ff140p-1,
+    0x1.069c8b46b3791p-1
+  },
+  { // Entry 715
+    -0x1.205a6009d5e3dde25d6deb7d521ff140p-1,
+    -0x1.069c8b46b3791p-1
+  },
+  { // Entry 716
+    0x1.4d466accad48dd958ab168f5cfc6c99cp-1,
+    0x1.27701caf89e83p-1
+  },
+  { // Entry 717
+    -0x1.4d466accad48dd958ab168f5cfc6c99cp-1,
+    -0x1.27701caf89e83p-1
+  },
+  { // Entry 718
+    0x1.7e1d936f4d6152fb74809595717fa06dp-1,
+    0x1.4843ae1860575p-1
+  },
+  { // Entry 719
+    -0x1.7e1d936f4d6152fb74809595717fa06dp-1,
+    -0x1.4843ae1860575p-1
+  },
+  { // Entry 720
+    0x1.b3df386f18227ebcee905fdc51cdcbe2p-1,
+    0x1.69173f8136c67p-1
+  },
+  { // Entry 721
+    -0x1.b3df386f18227ebcee905fdc51cdcbe2p-1,
+    -0x1.69173f8136c67p-1
+  },
+  { // Entry 722
+    0x1.efd82742d778c18a8c969be0cf0902b3p-1,
+    0x1.89ead0ea0d359p-1
+  },
+  { // Entry 723
+    -0x1.efd82742d778c18a8c969be0cf0902b3p-1,
+    -0x1.89ead0ea0d359p-1
+  },
+  { // Entry 724
+    0x1.19e26b5ecd5c040a1d80c1583f78f7d7p0,
+    0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 725
+    -0x1.19e26b5ecd5c040a1d80c1583f78f7d7p0,
+    -0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 726
+    0x1.41038b70be0fa1478f98a2e9f266550ap0,
+    0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 727
+    -0x1.41038b70be0fa1478f98a2e9f266550ap0,
+    -0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 728
+    0x1.6efec8c1e493b517efe5eb92464fdf42p0,
+    0x1.ec6585249082fp-1
+  },
+  { // Entry 729
+    -0x1.6efec8c1e493b517efe5eb92464fdf42p0,
+    -0x1.ec6585249082fp-1
+  },
+  { // Entry 730
+    0x1.a64c7c9d653462d8ded3e658fe4efbcbp0,
+    0x1.069c8b46b3791p0
+  },
+  { // Entry 731
+    -0x1.a64c7c9d653462d8ded3e658fe4efbcbp0,
+    -0x1.069c8b46b3791p0
+  },
+  { // Entry 732
+    0x1.eab43e0e5e87c26fd432e06301e19e15p0,
+    0x1.170653fb1eb0ap0
+  },
+  { // Entry 733
+    -0x1.eab43e0e5e87c26fd432e06301e19e15p0,
+    -0x1.170653fb1eb0ap0
+  },
+  { // Entry 734
+    0x1.21277b97c01376e361988250b56364cfp1,
+    0x1.27701caf89e83p0
+  },
+  { // Entry 735
+    -0x1.21277b97c01376e361988250b56364cfp1,
+    -0x1.27701caf89e83p0
+  },
+  { // Entry 736
+    0x1.5bd13dda077cce249db2794d69407504p1,
+    0x1.37d9e563f51fcp0
+  },
+  { // Entry 737
+    -0x1.5bd13dda077cce249db2794d69407504p1,
+    -0x1.37d9e563f51fcp0
+  },
+  { // Entry 738
+    0x1.af4643e9371f88e78c24d83bd6b8e23ep1,
+    0x1.4843ae1860575p0
+  },
+  { // Entry 739
+    -0x1.af4643e9371f88e78c24d83bd6b8e23ep1,
+    -0x1.4843ae1860575p0
+  },
+  { // Entry 740
+    0x1.1866fe845e759d14da478c6cf6f2be65p2,
+    0x1.58ad76cccb8eep0
+  },
+  { // Entry 741
+    -0x1.1866fe845e759d14da478c6cf6f2be65p2,
+    -0x1.58ad76cccb8eep0
+  },
+  { // Entry 742
+    0x1.8bdcd54bd5980b3a80cefc914c481475p2,
+    0x1.69173f8136c67p0
+  },
+  { // Entry 743
+    -0x1.8bdcd54bd5980b3a80cefc914c481475p2,
+    -0x1.69173f8136c67p0
+  },
+  { // Entry 744
+    0x1.4bb6a64e0625b974cded615056ffd61cp3,
+    0x1.79810835a1fe0p0
+  },
+  { // Entry 745
+    -0x1.4bb6a64e0625b974cded615056ffd61cp3,
+    -0x1.79810835a1fe0p0
+  },
+  { // Entry 746
+    0x1.f2f05cfb656a39f6f2a90f7911b24051p4,
+    0x1.89ead0ea0d359p0
+  },
+  { // Entry 747
+    -0x1.f2f05cfb656a39f6f2a90f7911b24051p4,
+    -0x1.89ead0ea0d359p0
+  },
+  { // Entry 748
+    -0x1.f2f05cfb657f55f2bc6d204377a68543p4,
+    0x1.9a54999e786d2p0
+  },
+  { // Entry 749
+    0x1.f2f05cfb657f55f2bc6d204377a68543p4,
+    -0x1.9a54999e786d2p0
+  },
+  { // Entry 750
+    -0x1.4bb6a64e062a6da35870cfb33595fbe6p3,
+    0x1.aabe6252e3a4bp0
+  },
+  { // Entry 751
+    0x1.4bb6a64e062a6da35870cfb33595fbe6p3,
+    -0x1.aabe6252e3a4bp0
+  },
+  { // Entry 752
+    -0x1.8bdcd54bd59b73028e5f27649ca67cbap2,
+    0x1.bb282b074edc4p0
+  },
+  { // Entry 753
+    0x1.8bdcd54bd59b73028e5f27649ca67cbap2,
+    -0x1.bb282b074edc4p0
+  },
+  { // Entry 754
+    -0x1.1866fe845e775d8c8f8bf9165647f6cbp2,
+    0x1.cb91f3bbba13dp0
+  },
+  { // Entry 755
+    0x1.1866fe845e775d8c8f8bf9165647f6cbp2,
+    -0x1.cb91f3bbba13dp0
+  },
+  { // Entry 756
+    -0x1.af4643e93721ad8095dd27f0827e13e0p1,
+    0x1.dbfbbc70254b6p0
+  },
+  { // Entry 757
+    0x1.af4643e93721ad8095dd27f0827e13e0p1,
+    -0x1.dbfbbc70254b6p0
+  },
+  { // Entry 758
+    -0x1.5bd13dda077e427d0c9dc6c0e5d3b1b5p1,
+    0x1.ec6585249082fp0
+  },
+  { // Entry 759
+    0x1.5bd13dda077e427d0c9dc6c0e5d3b1b5p1,
+    -0x1.ec6585249082fp0
+  },
+  { // Entry 760
+    -0x1.21277b97c01485f17bacdb804375ebcdp1,
+    0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 761
+    0x1.21277b97c01485f17bacdb804375ebcdp1,
+    -0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 762
+    -0x1.eab43e0e5e8916d4c08349abe9e2abd3p0,
+    0x1.069c8b46b3791p1
+  },
+  { // Entry 763
+    0x1.eab43e0e5e8916d4c08349abe9e2abd3p0,
+    -0x1.069c8b46b3791p1
+  },
+  { // Entry 764
+    -0x1.a64c7c9d6535364d605bb9e5315072ffp0,
+    0x1.0ed16fa0e914ep1
+  },
+  { // Entry 765
+    0x1.a64c7c9d6535364d605bb9e5315072ffp0,
+    -0x1.0ed16fa0e914ep1
+  },
+  { // Entry 766
+    -0x1.6efec8c1e4944a425541219364a15078p0,
+    0x1.170653fb1eb0bp1
+  },
+  { // Entry 767
+    0x1.6efec8c1e4944a425541219364a15078p0,
+    -0x1.170653fb1eb0bp1
+  },
+  { // Entry 768
+    -0x1.41038b70be0ff5b7c4d8f06b0d4cf525p0,
+    0x1.1f3b3855544c8p1
+  },
+  { // Entry 769
+    0x1.41038b70be0ff5b7c4d8f06b0d4cf525p0,
+    -0x1.1f3b3855544c8p1
+  },
+  { // Entry 770
+    -0x1.19e26b5ecd5c294348ba17fec5454792p0,
+    0x1.27701caf89e85p1
+  },
+  { // Entry 771
+    0x1.19e26b5ecd5c294348ba17fec5454792p0,
+    -0x1.27701caf89e85p1
+  },
+  { // Entry 772
+    -0x1.efd82742d778c4bca07e1e86cbc604b0p-1,
+    0x1.2fa50109bf842p1
+  },
+  { // Entry 773
+    0x1.efd82742d778c4bca07e1e86cbc604b0p-1,
+    -0x1.2fa50109bf842p1
+  },
+  { // Entry 774
+    -0x1.b3df386f18224a6403e55c16b36ef17fp-1,
+    0x1.37d9e563f51ffp1
+  },
+  { // Entry 775
+    0x1.b3df386f18224a6403e55c16b36ef17fp-1,
+    -0x1.37d9e563f51ffp1
+  },
+  { // Entry 776
+    -0x1.7e1d936f4d60f1e6f88b4a24df9c65f4p-1,
+    0x1.400ec9be2abbcp1
+  },
+  { // Entry 777
+    0x1.7e1d936f4d60f1e6f88b4a24df9c65f4p-1,
+    -0x1.400ec9be2abbcp1
+  },
+  { // Entry 778
+    -0x1.4d466accad48574188835130e68e9badp-1,
+    0x1.4843ae1860579p1
+  },
+  { // Entry 779
+    0x1.4d466accad48574188835130e68e9badp-1,
+    -0x1.4843ae1860579p1
+  },
+  { // Entry 780
+    -0x1.205a6009d5e33774fa98f9f616acc80fp-1,
+    0x1.5078927295f36p1
+  },
+  { // Entry 781
+    0x1.205a6009d5e33774fa98f9f616acc80fp-1,
+    -0x1.5078927295f36p1
+  },
+  { // Entry 782
+    -0x1.ed21e59972aef64a06e553f18d646093p-2,
+    0x1.58ad76cccb8f3p1
+  },
+  { // Entry 783
+    0x1.ed21e59972aef64a06e553f18d646093p-2,
+    -0x1.58ad76cccb8f3p1
+  },
+  { // Entry 784
+    -0x1.9e9257e6b6284f73cd1e2eae3220f313p-2,
+    0x1.60e25b27012b0p1
+  },
+  { // Entry 785
+    0x1.9e9257e6b6284f73cd1e2eae3220f313p-2,
+    -0x1.60e25b27012b0p1
+  },
+  { // Entry 786
+    -0x1.53fdcdfd37ee55bc1cd1604b6ab13b5fp-2,
+    0x1.69173f8136c6dp1
+  },
+  { // Entry 787
+    0x1.53fdcdfd37ee55bc1cd1604b6ab13b5fp-2,
+    -0x1.69173f8136c6dp1
+  },
+  { // Entry 788
+    -0x1.0c864083d1e5aaa6815a85e25c662e97p-2,
+    0x1.714c23db6c62ap1
+  },
+  { // Entry 789
+    0x1.0c864083d1e5aaa6815a85e25c662e97p-2,
+    -0x1.714c23db6c62ap1
+  },
+  { // Entry 790
+    -0x1.8ed9142fc913f450dccdbdd27ed11a40p-3,
+    0x1.79810835a1fe7p1
+  },
+  { // Entry 791
+    0x1.8ed9142fc913f450dccdbdd27ed11a40p-3,
+    -0x1.79810835a1fe7p1
+  },
+  { // Entry 792
+    -0x1.080f73b0704cf570818a65d1a12d5be1p-3,
+    0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 793
+    0x1.080f73b0704cf570818a65d1a12d5be1p-3,
+    -0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 794
+    -0x1.06f8d014bf09ab85f2a19d80da5a2c0bp-4,
+    0x1.89ead0ea0d35bp1
+  },
+  { // Entry 795
+    0x1.06f8d014bf09ab85f2a19d80da5a2c0bp-4,
+    -0x1.89ead0ea0d35bp1
+  },
+  { // Entry 796
+    0x1.0c864083d1e7f3955b12071e0644418bp-2,
+    -0x1.81b5ec8fd799fp2
+  },
+  { // Entry 797
+    -0x1.0c864083d1e7f3955b12071e0644418bp-2,
+    0x1.81b5ec8fd799fp2
+  },
+  { // Entry 798
+    0x1.205a6009d5e3f74da3a372ac15721ef6p-1,
+    -0x1.714c23db6c626p2
+  },
+  { // Entry 799
+    -0x1.205a6009d5e3f74da3a372ac15721ef6p-1,
+    0x1.714c23db6c626p2
+  },
+  { // Entry 800
+    0x1.efd82742d778e6f04adefc3d21f8be96p-1,
+    -0x1.60e25b27012adp2
+  },
+  { // Entry 801
+    -0x1.efd82742d778e6f04adefc3d21f8be96p-1,
+    0x1.60e25b27012adp2
+  },
+  { // Entry 802
+    0x1.a64c7c9d653468fbc5260dca501ddb81p0,
+    -0x1.5078927295f34p2
+  },
+  { // Entry 803
+    -0x1.a64c7c9d653468fbc5260dca501ddb81p0,
+    0x1.5078927295f34p2
+  },
+  { // Entry 804
+    0x1.af4643e9371f9316d3254b8619eda484p1,
+    -0x1.400ec9be2abbbp2
+  },
+  { // Entry 805
+    -0x1.af4643e9371f9316d3254b8619eda484p1,
+    0x1.400ec9be2abbbp2
+  },
+  { // Entry 806
+    0x1.f2f05cfb656a9e4a085b027d18603230p4,
+    -0x1.2fa50109bf842p2
+  },
+  { // Entry 807
+    -0x1.f2f05cfb656a9e4a085b027d18603230p4,
+    0x1.2fa50109bf842p2
+  },
+  { // Entry 808
+    -0x1.1866fe845e7755392a0adff56a688eaap2,
+    -0x1.1f3b3855544c9p2
+  },
+  { // Entry 809
+    0x1.1866fe845e7755392a0adff56a688eaap2,
+    0x1.1f3b3855544c9p2
+  },
+  { // Entry 810
+    -0x1.eab43e0e5e8959e8f5ac6c4f9d9a833bp0,
+    -0x1.0ed16fa0e9150p2
+  },
+  { // Entry 811
+    0x1.eab43e0e5e8959e8f5ac6c4f9d9a833bp0,
+    0x1.0ed16fa0e9150p2
+  },
+  { // Entry 812
+    -0x1.19e26b5ecd5cd69c30c3dc5d9ffde986p0,
+    -0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 813
+    0x1.19e26b5ecd5cd69c30c3dc5d9ffde986p0,
+    0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 814
+    -0x1.4d466accad49ec96935caa2a35e439f0p-1,
+    -0x1.dbfbbc70254bcp1
+  },
+  { // Entry 815
+    0x1.4d466accad49ec96935caa2a35e439f0p-1,
+    0x1.dbfbbc70254bcp1
+  },
+  { // Entry 816
+    -0x1.53fdcdfd37f1ea216e815758ed02a557p-2,
+    -0x1.bb282b074edcap1
+  },
+  { // Entry 817
+    0x1.53fdcdfd37f1ea216e815758ed02a557p-2,
+    0x1.bb282b074edcap1
+  },
+  { // Entry 818
+    -0x1.06f8d014bf0e964e634f37bcdbf64491p-4,
+    -0x1.9a54999e786d8p1
+  },
+  { // Entry 819
+    0x1.06f8d014bf0e964e634f37bcdbf64491p-4,
+    0x1.9a54999e786d8p1
+  },
+  { // Entry 820
+    0x1.8ed9142fc914fe067b991d11d70859b8p-3,
+    -0x1.79810835a1fe6p1
+  },
+  { // Entry 821
+    -0x1.8ed9142fc914fe067b991d11d70859b8p-3,
+    0x1.79810835a1fe6p1
+  },
+  { // Entry 822
+    0x1.ed21e59972ae589aaa4ee3d80c3b7defp-2,
+    -0x1.58ad76cccb8f4p1
+  },
+  { // Entry 823
+    -0x1.ed21e59972ae589aaa4ee3d80c3b7defp-2,
+    0x1.58ad76cccb8f4p1
+  },
+  { // Entry 824
+    0x1.b3df386f1820ff3df290f036db46f13bp-1,
+    -0x1.37d9e563f5202p1
+  },
+  { // Entry 825
+    -0x1.b3df386f1820ff3df290f036db46f13bp-1,
+    0x1.37d9e563f5202p1
+  },
+  { // Entry 826
+    0x1.6efec8c1e492616fe2fec0b764fa6eb4p0,
+    -0x1.170653fb1eb10p1
+  },
+  { // Entry 827
+    -0x1.6efec8c1e492616fe2fec0b764fa6eb4p0,
+    0x1.170653fb1eb10p1
+  },
+  { // Entry 828
+    0x1.5bd13dda077ada91927ab73cedaa828dp1,
+    -0x1.ec6585249083cp0
+  },
+  { // Entry 829
+    -0x1.5bd13dda077ada91927ab73cedaa828dp1,
+    0x1.ec6585249083cp0
+  },
+  { // Entry 830
+    0x1.4bb6a64e061f69cf7409931383cc80a1p3,
+    -0x1.aabe6252e3a58p0
+  },
+  { // Entry 831
+    -0x1.4bb6a64e061f69cf7409931383cc80a1p3,
+    0x1.aabe6252e3a58p0
+  },
+  { // Entry 832
+    -0x1.8bdcd54bd5a004acf922c49a8d5e28a2p2,
+    -0x1.69173f8136c74p0
+  },
+  { // Entry 833
+    0x1.8bdcd54bd5a004acf922c49a8d5e28a2p2,
+    0x1.69173f8136c74p0
+  },
+  { // Entry 834
+    -0x1.21277b97c015f19de7b238252e56e63fp1,
+    -0x1.27701caf89e90p0
+  },
+  { // Entry 835
+    0x1.21277b97c015f19de7b238252e56e63fp1,
+    0x1.27701caf89e90p0
+  },
+  { // Entry 836
+    -0x1.41038b70be11b85798a271ac3d209ea7p0,
+    -0x1.cb91f3bbba157p-1
+  },
+  { // Entry 837
+    0x1.41038b70be11b85798a271ac3d209ea7p0,
+    0x1.cb91f3bbba157p-1
+  },
+  { // Entry 838
+    -0x1.7e1d936f4d63c1c7806657d8b838836ep-1,
+    -0x1.4843ae186058ep-1
+  },
+  { // Entry 839
+    0x1.7e1d936f4d63c1c7806657d8b838836ep-1,
+    0x1.4843ae186058ep-1
+  },
+  { // Entry 840
+    -0x1.9e9257e6b62d886f74e348bdc142599cp-2,
+    -0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 841
+    0x1.9e9257e6b62d886f74e348bdc142599cp-2,
+    0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 842
+    -0x1.080f73b07057dc7bf0df6de1d3ae1a3bp-3,
+    -0x1.069c8b46b37f0p-3
+  },
+  { // Entry 843
+    0x1.080f73b07057dc7bf0df6de1d3ae1a3bp-3,
+    0x1.069c8b46b37f0p-3
+  },
+  { // Entry 844
+    0x1.080f73b0704bea7a56d4f88ecf3d5cd3p-3,
+    0x1.069c8b46b3734p-3
+  },
+  { // Entry 845
+    -0x1.080f73b0704bea7a56d4f88ecf3d5cd3p-3,
+    -0x1.069c8b46b3734p-3
+  },
+  { // Entry 846
+    0x1.9e9257e6b626b1eb1136bd7853311543p-2,
+    0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 847
+    -0x1.9e9257e6b626b1eb1136bd7853311543p-2,
+    -0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 848
+    0x1.7e1d936f4d5f2eebbbf3d62963106afap-1,
+    0x1.4843ae186055fp-1
+  },
+  { // Entry 849
+    -0x1.7e1d936f4d5f2eebbbf3d62963106afap-1,
+    -0x1.4843ae186055fp-1
+  },
+  { // Entry 850
+    0x1.41038b70be0df11d1224683c6f865584p0,
+    0x1.cb91f3bbba128p-1
+  },
+  { // Entry 851
+    -0x1.41038b70be0df11d1224683c6f865584p0,
+    -0x1.cb91f3bbba128p-1
+  },
+  { // Entry 852
+    0x1.21277b97c0115dcf6647ad68f4cb4ad0p1,
+    0x1.27701caf89e78p0
+  },
+  { // Entry 853
+    -0x1.21277b97c0115dcf6647ad68f4cb4ad0p1,
+    -0x1.27701caf89e78p0
+  },
+  { // Entry 854
+    0x1.8bdcd54bd5914bd9a4d6dd659c2f6606p2,
+    0x1.69173f8136c5cp0
+  },
+  { // Entry 855
+    -0x1.8bdcd54bd5914bd9a4d6dd659c2f6606p2,
+    -0x1.69173f8136c5cp0
+  },
+  { // Entry 856
+    -0x1.4bb6a64e0633bfa56879660655c38767p3,
+    0x1.aabe6252e3a40p0
+  },
+  { // Entry 857
+    0x1.4bb6a64e0633bfa56879660655c38767p3,
+    -0x1.aabe6252e3a40p0
+  },
+  { // Entry 858
+    -0x1.5bd13dda078124444c940f013be7c402p1,
+    0x1.ec65852490824p0
+  },
+  { // Entry 859
+    0x1.5bd13dda078124444c940f013be7c402p1,
+    -0x1.ec65852490824p0
+  },
+  { // Entry 860
+    -0x1.6efec8c1e496f69c286adc66bd586eafp0,
+    0x1.170653fb1eb04p1
+  },
+  { // Entry 861
+    0x1.6efec8c1e496f69c286adc66bd586eafp0,
+    -0x1.170653fb1eb04p1
+  },
+  { // Entry 862
+    -0x1.b3df386f18262bd637e29fbb30806b2cp-1,
+    0x1.37d9e563f51f6p1
+  },
+  { // Entry 863
+    0x1.b3df386f18262bd637e29fbb30806b2cp-1,
+    -0x1.37d9e563f51f6p1
+  },
+  { // Entry 864
+    -0x1.ed21e59972b5bcd3015c250eff1c69b9p-2,
+    0x1.58ad76cccb8e8p1
+  },
+  { // Entry 865
+    0x1.ed21e59972b5bcd3015c250eff1c69b9p-2,
+    -0x1.58ad76cccb8e8p1
+  },
+  { // Entry 866
+    -0x1.8ed9142fc9217289ed21940deaafe878p-3,
+    0x1.79810835a1fdap1
+  },
+  { // Entry 867
+    0x1.8ed9142fc9217289ed21940deaafe878p-3,
+    -0x1.79810835a1fdap1
+  },
+  { // Entry 868
+    0x1.06f8d014bef67cfb2db560f5a414c88bp-4,
+    0x1.9a54999e786ccp1
+  },
+  { // Entry 869
+    -0x1.06f8d014bef67cfb2db560f5a414c88bp-4,
+    -0x1.9a54999e786ccp1
+  },
+  { // Entry 870
+    0x1.53fdcdfd37eb40cd9e504df431b502d0p-2,
+    0x1.bb282b074edbep1
+  },
+  { // Entry 871
+    -0x1.53fdcdfd37eb40cd9e504df431b502d0p-2,
+    -0x1.bb282b074edbep1
+  },
+  { // Entry 872
+    0x1.4d466accad45a72e5f735eb2f6adf9ffp-1,
+    0x1.dbfbbc70254b0p1
+  },
+  { // Entry 873
+    -0x1.4d466accad45a72e5f735eb2f6adf9ffp-1,
+    -0x1.dbfbbc70254b0p1
+  },
+  { // Entry 874
+    0x1.19e26b5ecd598507ecd00d81ec775683p0,
+    0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 875
+    -0x1.19e26b5ecd598507ecd00d81ec775683p0,
+    -0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 876
+    0x1.eab43e0e5e8257073afaecab386154a1p0,
+    0x1.0ed16fa0e914ap2
+  },
+  { // Entry 877
+    -0x1.eab43e0e5e8257073afaecab386154a1p0,
+    -0x1.0ed16fa0e914ap2
+  },
+  { // Entry 878
+    0x1.1866fe845e6fc27064e2b123a7724e75p2,
+    0x1.1f3b3855544c3p2
+  },
+  { // Entry 879
+    -0x1.1866fe845e6fc27064e2b123a7724e75p2,
+    -0x1.1f3b3855544c3p2
+  },
+  { // Entry 880
+    -0x1.f2f05cfb65c5e06b1ae88c48b4b755cep4,
+    0x1.2fa50109bf83cp2
+  },
+  { // Entry 881
+    0x1.f2f05cfb65c5e06b1ae88c48b4b755cep4,
+    -0x1.2fa50109bf83cp2
+  },
+  { // Entry 882
+    -0x1.af4643e93728d6bfd702c33405dcce7dp1,
+    0x1.400ec9be2abb5p2
+  },
+  { // Entry 883
+    0x1.af4643e93728d6bfd702c33405dcce7dp1,
+    -0x1.400ec9be2abb5p2
+  },
+  { // Entry 884
+    -0x1.a64c7c9d6539fdec27afc380b9f752c0p0,
+    0x1.5078927295f2ep2
+  },
+  { // Entry 885
+    0x1.a64c7c9d6539fdec27afc380b9f752c0p0,
+    -0x1.5078927295f2ep2
+  },
+  { // Entry 886
+    -0x1.efd82742d77eb73c81a00f568621f63cp-1,
+    0x1.60e25b27012a7p2
+  },
+  { // Entry 887
+    0x1.efd82742d77eb73c81a00f568621f63cp-1,
+    -0x1.60e25b27012a7p2
+  },
+  { // Entry 888
+    -0x1.205a6009d5e7eae63da1cbd57129eeffp-1,
+    0x1.714c23db6c620p2
+  },
+  { // Entry 889
+    0x1.205a6009d5e7eae63da1cbd57129eeffp-1,
+    -0x1.714c23db6c620p2
+  },
+  { // Entry 890
+    -0x1.0c864083d1ee5d34de2060c8629d4951p-2,
+    0x1.81b5ec8fd7999p2
+  },
+  { // Entry 891
+    0x1.0c864083d1ee5d34de2060c8629d4951p-2,
+    -0x1.81b5ec8fd7999p2
+  },
+  { // Entry 892
+    0x1.f09b63aa81fc36da509c3e410607ffe7p-5,
+    0x1.effffffffffffp-5
+  },
+  { // Entry 893
+    -0x1.f09b63aa81fc36da509c3e410607ffe7p-5,
+    -0x1.effffffffffffp-5
+  },
+  { // Entry 894
+    0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
+    0x1.fp-5
+  },
+  { // Entry 895
+    -0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
+    -0x1.fp-5
+  },
+  { // Entry 896
+    0x1.f09b63aa81fc56f86b7042757dca62e8p-5,
+    0x1.f000000000001p-5
+  },
+  { // Entry 897
+    -0x1.f09b63aa81fc56f86b7042757dca62e8p-5,
+    -0x1.f000000000001p-5
+  },
+  { // Entry 898
+    0x1.fa8f21c8a33aecf4af77754ef90a67b8p-4,
+    0x1.f7fffffffffffp-4
+  },
+  { // Entry 899
+    -0x1.fa8f21c8a33aecf4af77754ef90a67b8p-4,
+    -0x1.f7fffffffffffp-4
+  },
+  { // Entry 900
+    0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
+    0x1.f80p-4
+  },
+  { // Entry 901
+    -0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
+    -0x1.f80p-4
+  },
+  { // Entry 902
+    0x1.fa8f21c8a33b0d71fabba7cbf526ed07p-4,
+    0x1.f800000000001p-4
+  },
+  { // Entry 903
+    -0x1.fa8f21c8a33b0d71fabba7cbf526ed07p-4,
+    -0x1.f800000000001p-4
+  },
+  { // Entry 904
+    0x1.4ef06cb4f0a869ef00df8ec5582dfa31p-3,
+    0x1.4bfffffffffffp-3
+  },
+  { // Entry 905
+    -0x1.4ef06cb4f0a869ef00df8ec5582dfa31p-3,
+    -0x1.4bfffffffffffp-3
+  },
+  { // Entry 906
+    0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
+    0x1.4c0p-3
+  },
+  { // Entry 907
+    -0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
+    -0x1.4c0p-3
+  },
+  { // Entry 908
+    0x1.4ef06cb4f0a88aca1cfe48d80a310a65p-3,
+    0x1.4c00000000001p-3
+  },
+  { // Entry 909
+    -0x1.4ef06cb4f0a88aca1cfe48d80a310a65p-3,
+    -0x1.4c00000000001p-3
+  },
+  { // Entry 910
+    0x1.3cc2a44e2999668cb092a09b73b2de50p-2,
+    0x1.3333333333332p-2
+  },
+  { // Entry 911
+    -0x1.3cc2a44e2999668cb092a09b73b2de50p-2,
+    -0x1.3333333333332p-2
+  },
+  { // Entry 912
+    0x1.3cc2a44e29997814a1ac3f0211c7641fp-2,
+    0x1.3333333333333p-2
+  },
+  { // Entry 913
+    -0x1.3cc2a44e29997814a1ac3f0211c7641fp-2,
+    -0x1.3333333333333p-2
+  },
+  { // Entry 914
+    0x1.3cc2a44e2999899c92c5dd68b0074c31p-2,
+    0x1.3333333333334p-2
+  },
+  { // Entry 915
+    -0x1.3cc2a44e2999899c92c5dd68b0074c31p-2,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 916
+    0x1.9943711dc2ce83d21cdb285aced817adp-1,
+    0x1.594317acc4ef8p-1
+  },
+  { // Entry 917
+    -0x1.9943711dc2ce83d21cdb285aced817adp-1,
+    -0x1.594317acc4ef8p-1
+  },
+  { // Entry 918
+    0x1.9943711dc2ce9e0b3f1ffe5aec0ac20dp-1,
+    0x1.594317acc4ef9p-1
+  },
+  { // Entry 919
+    -0x1.9943711dc2ce9e0b3f1ffe5aec0ac20dp-1,
+    -0x1.594317acc4ef9p-1
+  },
+  { // Entry 920
+    0x1.9943711dc2ceb8446164d45b0a8ccdeep-1,
+    0x1.594317acc4efap-1
+  },
+  { // Entry 921
+    -0x1.9943711dc2ceb8446164d45b0a8ccdeep-1,
+    -0x1.594317acc4efap-1
+  },
+  { // Entry 922
+    0x1.fbc511df5917d57d231d7ad434da5f94p-1,
+    0x1.8ffffffffffffp-1
+  },
+  { // Entry 923
+    -0x1.fbc511df5917d57d231d7ad434da5f94p-1,
+    -0x1.8ffffffffffffp-1
+  },
+  { // Entry 924
+    0x1.fbc511df5917f539bbcf778bc1a22249p-1,
+    0x1.9p-1
+  },
+  { // Entry 925
+    -0x1.fbc511df5917f539bbcf778bc1a22249p-1,
+    -0x1.9p-1
+  },
+  { // Entry 926
+    0x1.fbc511df591814f65481744350617c85p-1,
+    0x1.9000000000001p-1
+  },
+  { // Entry 927
+    -0x1.fbc511df591814f65481744350617c85p-1,
+    -0x1.9000000000001p-1
+  },
+  { // Entry 928
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 929
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 930
+    -0.0,
+    -0.0
+  },
+  { // Entry 931
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 932
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 933
+    0x1.927278a3b1160bbf8e0bb309da4247c5p-5,
+    0x1.921fb54442d17p-5
+  },
+  { // Entry 934
+    -0x1.927278a3b1160bbf8e0bb309da4247c5p-5,
+    -0x1.921fb54442d17p-5
+  },
+  { // Entry 935
+    0x1.927278a3b1161bc970ba8b50e575f97fp-5,
+    0x1.921fb54442d18p-5
+  },
+  { // Entry 936
+    -0x1.927278a3b1161bc970ba8b50e575f97fp-5,
+    -0x1.921fb54442d18p-5
+  },
+  { // Entry 937
+    0x1.927278a3b1162bd353696397f0aa74eep-5,
+    0x1.921fb54442d19p-5
+  },
+  { // Entry 938
+    -0x1.927278a3b1162bd353696397f0aa74eep-5,
+    -0x1.921fb54442d19p-5
+  },
+  { // Entry 939
+    0x1.936bb8c5b2da118306fa9b5d6d8ed2c1p-4,
+    0x1.921fb54442d17p-4
+  },
+  { // Entry 940
+    -0x1.936bb8c5b2da118306fa9b5d6d8ed2c1p-4,
+    -0x1.921fb54442d17p-4
+  },
+  { // Entry 941
+    0x1.936bb8c5b2da21aac2bfec84293e5d4dp-4,
+    0x1.921fb54442d18p-4
+  },
+  { // Entry 942
+    -0x1.936bb8c5b2da21aac2bfec84293e5d4dp-4,
+    -0x1.921fb54442d18p-4
+  },
+  { // Entry 943
+    0x1.936bb8c5b2da31d27e853daae4f11684p-4,
+    0x1.921fb54442d19p-4
+  },
+  { // Entry 944
+    -0x1.936bb8c5b2da31d27e853daae4f11684p-4,
+    -0x1.921fb54442d19p-4
+  },
+  { // Entry 945
+    0x1.975f5e0553156b438ca7d752d37d0873p-3,
+    0x1.921fb54442d17p-3
+  },
+  { // Entry 946
+    -0x1.975f5e0553156b438ca7d752d37d0873p-3,
+    -0x1.921fb54442d17p-3
+  },
+  { // Entry 947
+    0x1.975f5e0553157be59cbff648fdef2c08p-3,
+    0x1.921fb54442d18p-3
+  },
+  { // Entry 948
+    -0x1.975f5e0553157be59cbff648fdef2c08p-3,
+    -0x1.921fb54442d18p-3
+  },
+  { // Entry 949
+    0x1.975f5e0553158c87acd8153f286e8b8ap-3,
+    0x1.921fb54442d19p-3
+  },
+  { // Entry 950
+    -0x1.975f5e0553158c87acd8153f286e8b8ap-3,
+    -0x1.921fb54442d19p-3
+  },
+  { // Entry 951
+    0x1.a827999fcef30c38b2e5397ea7c10eadp-2,
+    0x1.921fb54442d17p-2
+  },
+  { // Entry 952
+    -0x1.a827999fcef30c38b2e5397ea7c10eadp-2,
+    -0x1.921fb54442d17p-2
+  },
+  { // Entry 953
+    0x1.a827999fcef31ef776183b070e6fc84ep-2,
+    0x1.921fb54442d18p-2
+  },
+  { // Entry 954
+    -0x1.a827999fcef31ef776183b070e6fc84ep-2,
+    -0x1.921fb54442d18p-2
+  },
+  { // Entry 955
+    0x1.a827999fcef331b6394b3c8f755c9fa3p-2,
+    0x1.921fb54442d19p-2
+  },
+  { // Entry 956
+    -0x1.a827999fcef331b6394b3c8f755c9fa3p-2,
+    -0x1.921fb54442d19p-2
+  },
+  { // Entry 957
+    0x1.ffffffffffffd72cece675d1fe3035bbp-1,
+    0x1.921fb54442d17p-1
+  },
+  { // Entry 958
+    -0x1.ffffffffffffd72cece675d1fe3035bbp-1,
+    -0x1.921fb54442d17p-1
+  },
+  { // Entry 959
+    0x1.fffffffffffff72cece675d1fca30489p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 960
+    -0x1.fffffffffffff72cece675d1fca30489p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 961
+    0x1.0000000000000b9676733ae8fe8ae9acp0,
+    0x1.921fb54442d19p-1
+  },
+  { // Entry 962
+    -0x1.0000000000000b9676733ae8fe8ae9acp0,
+    -0x1.921fb54442d19p-1
+  },
+  { // Entry 963
+    0x1.9153d9443ed0b3b43ddab6ae573aa23dp51,
+    0x1.921fb54442d17p0
+  },
+  { // Entry 964
+    -0x1.9153d9443ed0b3b43ddab6ae573aa23dp51,
+    -0x1.921fb54442d17p0
+  },
+  { // Entry 965
+    0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 966
+    -0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 967
+    -0x1.617a15494767a04882c320317f3e4cecp52,
+    0x1.921fb54442d19p0
+  },
+  { // Entry 968
+    0x1.617a15494767a04882c320317f3e4cecp52,
+    -0x1.921fb54442d19p0
+  },
+  { // Entry 969
+    -0x1.469898cc51701b839a252049c3d60c68p-51,
+    0x1.921fb54442d17p1
+  },
+  { // Entry 970
+    0x1.469898cc51701b839a252049c3d60c68p-51,
+    -0x1.921fb54442d17p1
+  },
+  { // Entry 971
+    -0x1.1a62633145c06e0e689481270461d5d7p-53,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 972
+    0x1.1a62633145c06e0e689481270461d5d7p-53,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 973
+    0x1.72cece675d1fc8f8cbb5bf6c7ee0b96cp-52,
+    0x1.921fb54442d19p1
+  },
+  { // Entry 974
+    -0x1.72cece675d1fc8f8cbb5bf6c7ee0b96cp-52,
+    -0x1.921fb54442d19p1
+  },
+  { // Entry 975
+    -0x1.469898cc51701b839a252049cc244ab5p-50,
+    0x1.921fb54442d17p2
+  },
+  { // Entry 976
+    0x1.469898cc51701b839a252049cc244ab5p-50,
+    -0x1.921fb54442d17p2
+  },
+  { // Entry 977
+    -0x1.1a62633145c06e0e6894812704b7bbabp-52,
+    0x1.921fb54442d18p2
+  },
+  { // Entry 978
+    0x1.1a62633145c06e0e6894812704b7bbabp-52,
+    -0x1.921fb54442d18p2
+  },
+  { // Entry 979
+    0x1.72cece675d1fc8f8cbb5bf6c81eab38cp-51,
+    0x1.921fb54442d19p2
+  },
+  { // Entry 980
+    -0x1.72cece675d1fc8f8cbb5bf6c81eab38cp-51,
+    -0x1.921fb54442d19p2
+  },
+  { // Entry 981
+    -0x1.469898cc51701b839a252049ed5d43e8p-49,
+    0x1.921fb54442d17p3
+  },
+  { // Entry 982
+    0x1.469898cc51701b839a252049ed5d43e8p-49,
+    -0x1.921fb54442d17p3
+  },
+  { // Entry 983
+    -0x1.1a62633145c06e0e68948127060f52f9p-51,
+    0x1.921fb54442d18p3
+  },
+  { // Entry 984
+    0x1.1a62633145c06e0e68948127060f52f9p-51,
+    -0x1.921fb54442d18p3
+  },
+  { // Entry 985
+    0x1.72cece675d1fc8f8cbb5bf6c8e129c0ap-50,
+    0x1.921fb54442d19p3
+  },
+  { // Entry 986
+    -0x1.72cece675d1fc8f8cbb5bf6c8e129c0ap-50,
+    -0x1.921fb54442d19p3
+  },
+  { // Entry 987
+    -0x1.469898cc51701b839a25204a724128b4p-48,
+    0x1.921fb54442d17p4
+  },
+  { // Entry 988
+    0x1.469898cc51701b839a25204a724128b4p-48,
+    -0x1.921fb54442d17p4
+  },
+  { // Entry 989
+    -0x1.1a62633145c06e0e689481270b6db033p-50,
+    0x1.921fb54442d18p4
+  },
+  { // Entry 990
+    0x1.1a62633145c06e0e689481270b6db033p-50,
+    -0x1.921fb54442d18p4
+  },
+  { // Entry 991
+    0x1.72cece675d1fc8f8cbb5bf6cbeb23e03p-49,
+    0x1.921fb54442d19p4
+  },
+  { // Entry 992
+    -0x1.72cece675d1fc8f8cbb5bf6cbeb23e03p-49,
+    -0x1.921fb54442d19p4
+  },
+  { // Entry 993
+    -0x1.469898cc51701b839a25204c85d0bbe3p-47,
+    0x1.921fb54442d17p5
+  },
+  { // Entry 994
+    0x1.469898cc51701b839a25204c85d0bbe3p-47,
+    -0x1.921fb54442d17p5
+  },
+  { // Entry 995
+    -0x1.1a62633145c06e0e6894812720e7251ap-49,
+    0x1.921fb54442d18p5
+  },
+  { // Entry 996
+    0x1.1a62633145c06e0e6894812720e7251ap-49,
+    -0x1.921fb54442d18p5
+  },
+  { // Entry 997
+    0x1.72cece675d1fc8f8cbb5bf6d8130c5e7p-48,
+    0x1.921fb54442d19p5
+  },
+  { // Entry 998
+    -0x1.72cece675d1fc8f8cbb5bf6d8130c5e7p-48,
+    -0x1.921fb54442d19p5
+  },
+  { // Entry 999
+    -0x1.469898cc51701b839a252054d40f08a0p-46,
+    0x1.921fb54442d17p6
+  },
+  { // Entry 1000
+    0x1.469898cc51701b839a252054d40f08a0p-46,
+    -0x1.921fb54442d17p6
+  },
+  { // Entry 1001
+    -0x1.1a62633145c06e0e6894812776ccf8b7p-48,
+    0x1.921fb54442d18p6
+  },
+  { // Entry 1002
+    0x1.1a62633145c06e0e6894812776ccf8b7p-48,
+    -0x1.921fb54442d18p6
+  },
+  { // Entry 1003
+    0x1.72cece675d1fc8f8cbb5bf708b2ae576p-47,
+    0x1.921fb54442d19p6
+  },
+  { // Entry 1004
+    -0x1.72cece675d1fc8f8cbb5bf708b2ae576p-47,
+    -0x1.921fb54442d19p6
+  },
+  { // Entry 1005
+    -0x1.469898cc51701b839a2520760d083b97p-45,
+    0x1.921fb54442d17p7
+  },
+  { // Entry 1006
+    0x1.469898cc51701b839a2520760d083b97p-45,
+    -0x1.921fb54442d17p7
+  },
+  { // Entry 1007
+    -0x1.1a62633145c06e0e68948128ce64472bp-47,
+    0x1.921fb54442d18p7
+  },
+  { // Entry 1008
+    0x1.1a62633145c06e0e68948128ce64472bp-47,
+    -0x1.921fb54442d18p7
+  },
+  { // Entry 1009
+    0x1.72cece675d1fc8f8cbb5bf7cb31363b1p-46,
+    0x1.921fb54442d19p7
+  },
+  { // Entry 1010
+    -0x1.72cece675d1fc8f8cbb5bf7cb31363b1p-46,
+    -0x1.921fb54442d19p7
+  },
+  { // Entry 1011
+    -0x1.0000000000004d3c9ca64f4510cf6f31p0,
+    0x1.2d97c7f3321d1p1
+  },
+  { // Entry 1012
+    0x1.0000000000004d3c9ca64f4510cf6f31p0,
+    -0x1.2d97c7f3321d1p1
+  },
+  { // Entry 1013
+    -0x1.0000000000000d3c9ca64f4505804808p0,
+    0x1.2d97c7f3321d2p1
+  },
+  { // Entry 1014
+    0x1.0000000000000d3c9ca64f4505804808p0,
+    -0x1.2d97c7f3321d2p1
+  },
+  { // Entry 1015
+    -0x1.ffffffffffff9a79394c9e8a146241bdp-1,
+    0x1.2d97c7f3321d3p1
+  },
+  { // Entry 1016
+    0x1.ffffffffffff9a79394c9e8a146241bdp-1,
+    -0x1.2d97c7f3321d3p1
+  },
+  { // Entry 1017
+    0x1.ffffffffffff53e0a0804d1a0bbc4ab3p-1,
+    0x1.f6a7a2955385dp1
+  },
+  { // Entry 1018
+    -0x1.ffffffffffff53e0a0804d1a0bbc4ab3p-1,
+    -0x1.f6a7a2955385dp1
+  },
+  { // Entry 1019
+    0x1.ffffffffffffd3e0a0804d19f0b472d3p-1,
+    0x1.f6a7a2955385ep1
+  },
+  { // Entry 1020
+    -0x1.ffffffffffffd3e0a0804d19f0b472d3p-1,
+    -0x1.f6a7a2955385ep1
+  },
+  { // Entry 1021
+    0x1.00000000000029f05040268cfad64d79p0,
+    0x1.f6a7a2955385fp1
+  },
+  { // Entry 1022
+    -0x1.00000000000029f05040268cfad64d79p0,
+    -0x1.f6a7a2955385fp1
+  },
+  { // Entry 1023
+    0x1.a8410087262e3f41859fa73567f9244dp49,
+    0x1.2d97c7f3321d1p2
+  },
+  { // Entry 1024
+    -0x1.a8410087262e3f41859fa73567f9244dp49,
+    -0x1.2d97c7f3321d1p2
+  },
+  { // Entry 1025
+    0x1.3570efd76892340825e0124393554697p52,
+    0x1.2d97c7f3321d2p2
+  },
+  { // Entry 1026
+    -0x1.3570efd76892340825e0124393554697p52,
+    -0x1.2d97c7f3321d2p2
+  },
+  { // Entry 1027
+    -0x1.42c0d64d5de5178afe06452a1a1b8667p50,
+    0x1.2d97c7f3321d3p2
+  },
+  { // Entry 1028
+    0x1.42c0d64d5de5178afe06452a1a1b8667p50,
+    -0x1.2d97c7f3321d3p2
+  },
+  { // Entry 1029
+    -0x1.0000000000009ee2c2d963a13d57ec20p0,
+    0x1.5fdbbe9bba774p2
+  },
+  { // Entry 1030
+    0x1.0000000000009ee2c2d963a13d57ec20p0,
+    -0x1.5fdbbe9bba774p2
+  },
+  { // Entry 1031
+    -0x1.0000000000001ee2c2d963a10de68ab4p0,
+    0x1.5fdbbe9bba775p2
+  },
+  { // Entry 1032
+    0x1.0000000000001ee2c2d963a10de68ab4p0,
+    -0x1.5fdbbe9bba775p2
+  },
+  { // Entry 1033
+    -0x1.ffffffffffff3dc585b2c7423cea528ep-1,
+    0x1.5fdbbe9bba776p2
+  },
+  { // Entry 1034
+    0x1.ffffffffffff3dc585b2c7423cea528ep-1,
+    -0x1.5fdbbe9bba776p2
+  },
+  { // Entry 1035
+    0x1.fffffffffffeb094541a24624eeab0e1p-1,
+    0x1.c463abeccb2bap2
+  },
+  { // Entry 1036
+    -0x1.fffffffffffeb094541a24624eeab0e1p-1,
+    -0x1.c463abeccb2bap2
+  },
+  { // Entry 1037
+    0x1.ffffffffffffb094541a2461e734daeep-1,
+    0x1.c463abeccb2bbp2
+  },
+  { // Entry 1038
+    -0x1.ffffffffffffb094541a2461e734daeep-1,
+    -0x1.c463abeccb2bbp2
+  },
+  { // Entry 1039
+    0x1.000000000000584a2a0d1230ffbf827dp0,
+    0x1.c463abeccb2bcp2
+  },
+  { // Entry 1040
+    -0x1.000000000000584a2a0d1230ffbf827dp0,
+    -0x1.c463abeccb2bcp2
+  },
+  { // Entry 1041
+    0x1.7cc080f8958567f05c40ac5f6d310de8p49,
+    0x1.f6a7a2955385dp2
+  },
+  { // Entry 1042
+    -0x1.7cc080f8958567f05c40ac5f6d310de8p49,
+    -0x1.f6a7a2955385dp2
+  },
+  { // Entry 1043
+    0x1.735453027d7c3e702d73491de369536fp51,
+    0x1.f6a7a2955385ep2
+  },
+  { // Entry 1044
+    -0x1.735453027d7c3e702d73491de369536fp51,
+    -0x1.f6a7a2955385ep2
+  },
+  { // Entry 1045
+    -0x1.86aa4a3a127a3add9a8e76993733b4a7p50,
+    0x1.f6a7a2955385fp2
+  },
+  { // Entry 1046
+    0x1.86aa4a3a127a3add9a8e76993733b4a7p50,
+    -0x1.f6a7a2955385fp2
+  },
+  { // Entry 1047
+    -0x1.000000000001b088e90c77fe8051a7dap0,
+    0x1.1475cc9eedeffp3
+  },
+  { // Entry 1048
+    0x1.000000000001b088e90c77fe8051a7dap0,
+    -0x1.1475cc9eedeffp3
+  },
+  { // Entry 1049
+    -0x1.000000000000b088e90c77fd4fc8becep0,
+    0x1.1475cc9eedfp3
+  },
+  { // Entry 1050
+    0x1.000000000000b088e90c77fd4fc8becep0,
+    -0x1.1475cc9eedfp3
+  },
+  { // Entry 1051
+    -0x1.ffffffffffff6111d218effa3e7fab83p-1,
+    0x1.1475cc9eedf01p3
+  },
+  { // Entry 1052
+    0x1.ffffffffffff6111d218effa3e7fab83p-1,
+    -0x1.1475cc9eedf01p3
+  },
+  { // Entry 1053
+    -0x1.34f272993d1414a2b39bd837764c1608p-49,
+    0x1.2d97c7f3321d1p3
+  },
+  { // Entry 1054
+    0x1.34f272993d1414a2b39bd837764c1608p-49,
+    -0x1.2d97c7f3321d1p3
+  },
+  { // Entry 1055
+    -0x1.a79394c9e8a0a5159cdec1ba87ea5811p-52,
+    0x1.2d97c7f3321d2p3
+  },
+  { // Entry 1056
+    0x1.a79394c9e8a0a5159cdec1ba87ea5811p-52,
+    -0x1.2d97c7f3321d2p3
+  },
+  { // Entry 1057
+    0x1.961b1acd85d7d6ba98c84f9173b08d6fp-50,
+    0x1.2d97c7f3321d3p3
+  },
+  { // Entry 1058
+    -0x1.961b1acd85d7d6ba98c84f9173b08d6fp-50,
+    -0x1.2d97c7f3321d3p3
+  },
+  { // Entry 1059
+    0x1.fffffffffffc8d4807b3fbaccc38314bp-1,
+    0x1.46b9c347764a2p3
+  },
+  { // Entry 1060
+    -0x1.fffffffffffc8d4807b3fbaccc38314bp-1,
+    -0x1.46b9c347764a2p3
+  },
+  { // Entry 1061
+    0x1.fffffffffffe8d4807b3fbaa598038ffp-1,
+    0x1.46b9c347764a3p3
+  },
+  { // Entry 1062
+    -0x1.fffffffffffe8d4807b3fbaa598038ffp-1,
+    -0x1.46b9c347764a3p3
+  },
+  { // Entry 1063
+    0x1.00000000000046a403d9fdd4f3642059p0,
+    0x1.46b9c347764a4p3
+  },
+  { // Entry 1064
+    -0x1.00000000000046a403d9fdd4f3642059p0,
+    -0x1.46b9c347764a4p3
+  },
+  { // Entry 1065
+    0x1.9c78eea78baa6e13eccc94c421c4f5acp48,
+    0x1.5fdbbe9bba774p3
+  },
+  { // Entry 1066
+    -0x1.9c78eea78baa6e13eccc94c421c4f5acp48,
+    -0x1.5fdbbe9bba774p3
+  },
+  { // Entry 1067
+    0x1.093c3b4aebeb0806fbe4a1f0c660ba3bp51,
+    0x1.5fdbbe9bba775p3
+  },
+  { // Entry 1068
+    -0x1.093c3b4aebeb0806fbe4a1f0c660ba3bp51,
+    -0x1.5fdbbe9bba775p3
+  },
+  { // Entry 1069
+    -0x1.516ac961421855fb759fc2facb4e9f5bp49,
+    0x1.5fdbbe9bba776p3
+  },
+  { // Entry 1070
+    0x1.516ac961421855fb759fc2facb4e9f5bp49,
+    -0x1.5fdbbe9bba776p3
+  },
+  { // Entry 1071
+    -0x1.000000000001c22f0f3f8c5aa5a01da3p0,
+    0x1.78fdb9effea45p3
+  },
+  { // Entry 1072
+    0x1.000000000001c22f0f3f8c5aa5a01da3p0,
+    -0x1.78fdb9effea45p3
+  },
+  { // Entry 1073
+    -0x1.000000000000c22f0f3f8c5963710e64p0,
+    0x1.78fdb9effea46p3
+  },
+  { // Entry 1074
+    0x1.000000000000c22f0f3f8c5963710e64p0,
+    -0x1.78fdb9effea46p3
+  },
+  { // Entry 1075
+    -0x1.ffffffffffff845e1e7f18b24283fe49p-1,
+    0x1.78fdb9effea47p3
+  },
+  { // Entry 1076
+    0x1.ffffffffffff845e1e7f18b24283fe49p-1,
+    -0x1.78fdb9effea47p3
+  },
+  { // Entry 1077
+    0x1.fffffffffffc69fbbb4dd2f4fc88ffa1p-1,
+    0x1.ab41b09886fe8p3
+  },
+  { // Entry 1078
+    -0x1.fffffffffffc69fbbb4dd2f4fc88ffa1p-1,
+    -0x1.ab41b09886fe8p3
+  },
+  { // Entry 1079
+    0x1.fffffffffffe69fbbb4dd2f26684baeep-1,
+    0x1.ab41b09886fe9p3
+  },
+  { // Entry 1080
+    -0x1.fffffffffffe69fbbb4dd2f26684baeep-1,
+    -0x1.ab41b09886fe9p3
+  },
+  { // Entry 1081
+    0x1.00000000000034fddda6e978e8403b1ep0,
+    0x1.ab41b09886feap3
+  },
+  { // Entry 1082
+    -0x1.00000000000034fddda6e978e8403b1ep0,
+    -0x1.ab41b09886feap3
+  },
+  { // Entry 1083
+    0x1.86c4e333b3c9f6273896aba201767912p48,
+    0x1.c463abeccb2bap3
+  },
+  { // Entry 1084
+    -0x1.86c4e333b3c9f6273896aba201767912p48,
+    -0x1.c463abeccb2bap3
+  },
+  { // Entry 1085
+    0x1.9c96951f361845603280185a16d6026cp50,
+    0x1.c463abeccb2bbp3
+  },
+  { // Entry 1086
+    -0x1.9c96951f361845603280185a16d6026cp50,
+    -0x1.c463abeccb2bbp3
+  },
+  { // Entry 1087
+    -0x1.73244d369e0b6eb2f5d73cca7344e87ap49,
+    0x1.c463abeccb2bcp3
+  },
+  { // Entry 1088
+    0x1.73244d369e0b6eb2f5d73cca7344e87ap49,
+    -0x1.c463abeccb2bcp3
+  },
+  { // Entry 1089
+    -0x1.000000000001d3d53572a0b6cc261055p0,
+    0x1.dd85a7410f58bp3
+  },
+  { // Entry 1090
+    0x1.000000000001d3d53572a0b6cc261055p0,
+    -0x1.dd85a7410f58bp3
+  },
+  { // Entry 1091
+    -0x1.000000000000d3d53572a0b57850dae2p0,
+    0x1.dd85a7410f58cp3
+  },
+  { // Entry 1092
+    0x1.000000000000d3d53572a0b57850dae2p0,
+    -0x1.dd85a7410f58cp3
+  },
+  { // Entry 1093
+    -0x1.ffffffffffffa7aa6ae5416a48f74adfp-1,
+    0x1.dd85a7410f58dp3
+  },
+  { // Entry 1094
+    0x1.ffffffffffffa7aa6ae5416a48f74adfp-1,
+    -0x1.dd85a7410f58dp3
+  },
+  { // Entry 1095
+    -0x1.583ebeff65cc226480ae685c65352325p-49,
+    0x1.f6a7a2955385dp3
+  },
+  { // Entry 1096
+    0x1.583ebeff65cc226480ae685c65352325p-49,
+    -0x1.f6a7a2955385dp3
+  },
+  { // Entry 1097
+    -0x1.60fafbfd9730899202b9a170c8d54591p-51,
+    0x1.f6a7a2955385ep3
+  },
+  { // Entry 1098
+    0x1.60fafbfd9730899202b9a170c8d54591p-51,
+    -0x1.f6a7a2955385ep3
+  },
+  { // Entry 1099
+    0x1.4f8282013467bb36fea32f47a95641bap-50,
+    0x1.f6a7a2955385fp3
+  },
+  { // Entry 1100
+    -0x1.4f8282013467bb36fea32f47a95641bap-50,
+    -0x1.f6a7a2955385fp3
+  },
+  { // Entry 1101
+    0x1.fffffffffff846af6ee7aa48a1e9e9f7p-1,
+    0x1.07e4cef4cbd96p4
+  },
+  { // Entry 1102
+    -0x1.fffffffffff846af6ee7aa48a1e9e9f7p-1,
+    -0x1.07e4cef4cbd96p4
+  },
+  { // Entry 1103
+    0x1.fffffffffffc46af6ee7aa3d2f48c7c7p-1,
+    0x1.07e4cef4cbd97p4
+  },
+  { // Entry 1104
+    -0x1.fffffffffffc46af6ee7aa3d2f48c7c7p-1,
+    -0x1.07e4cef4cbd97p4
+  },
+  { // Entry 1105
+    0x1.0000000000002357b773d51cde53d2cbp0,
+    0x1.07e4cef4cbd98p4
+  },
+  { // Entry 1106
+    -0x1.0000000000002357b773d51cde53d2cbp0,
+    -0x1.07e4cef4cbd98p4
+  },
+  { // Entry 1107
+    0x1.2f0842389e5bc014d0fbe843cca6ddf3p47,
+    0x1.1475cc9eedeffp4
+  },
+  { // Entry 1108
+    -0x1.2f0842389e5bc014d0fbe843cca6ddf3p47,
+    -0x1.1475cc9eedeffp4
+  },
+  { // Entry 1109
+    0x1.733c4e8ef9c50cb5929f6bb674bec67fp48,
+    0x1.1475cc9eedfp4
+  },
+  { // Entry 1110
+    -0x1.733c4e8ef9c50cb5929f6bb674bec67fp48,
+    -0x1.1475cc9eedfp4
+  },
+  { // Entry 1111
+    -0x1.9c5b4c728989891dfb8710adf387843cp49,
+    0x1.1475cc9eedf01p4
+  },
+  { // Entry 1112
+    0x1.9c5b4c728989891dfb8710adf387843cp49,
+    -0x1.1475cc9eedf01p4
+  },
+  { // Entry 1113
+    -0x1.000000000002e57b5ba5b515595edb94p0,
+    0x1.2106ca4910068p4
+  },
+  { // Entry 1114
+    0x1.000000000002e57b5ba5b515595edb94p0,
+    -0x1.2106ca4910068p4
+  },
+  { // Entry 1115
+    -0x1.000000000000e57b5ba5b5118e682449p0,
+    0x1.2106ca4910069p4
+  },
+  { // Entry 1116
+    0x1.000000000000e57b5ba5b5118e682449p0,
+    -0x1.2106ca4910069p4
+  },
+  { // Entry 1117
+    -0x1.fffffffffffdcaf6b74b6a2386e2d9fbp-1,
+    0x1.2106ca491006ap4
+  },
+  { // Entry 1118
+    0x1.fffffffffffdcaf6b74b6a2386e2d9fbp-1,
+    -0x1.2106ca491006ap4
+  },
+  { // Entry 1119
+    -0x1.34f272993d1414a2b39bd837e6c96af0p-48,
+    0x1.2d97c7f3321d1p4
+  },
+  { // Entry 1120
+    0x1.34f272993d1414a2b39bd837e6c96af0p-48,
+    -0x1.2d97c7f3321d1p4
+  },
+  { // Entry 1121
+    -0x1.a79394c9e8a0a5159cdec1ba8c71f6bap-51,
+    0x1.2d97c7f3321d2p4
+  },
+  { // Entry 1122
+    0x1.a79394c9e8a0a5159cdec1ba8c71f6bap-51,
+    -0x1.2d97c7f3321d2p4
+  },
+  { // Entry 1123
+    0x1.961b1acd85d7d6ba98c84f91b390101fp-49,
+    0x1.2d97c7f3321d3p4
+  },
+  { // Entry 1124
+    -0x1.961b1acd85d7d6ba98c84f91b390101fp-49,
+    -0x1.2d97c7f3321d3p4
+  },
+  { // Entry 1125
+    0x1.fffffffffff82363228181911db144bap-1,
+    0x1.3a28c59d54339p4
+  },
+  { // Entry 1126
+    -0x1.fffffffffff82363228181911db144bap-1,
+    -0x1.3a28c59d54339p4
+  },
+  { // Entry 1127
+    0x1.fffffffffffc236322818185647789bdp-1,
+    0x1.3a28c59d5433ap4
+  },
+  { // Entry 1128
+    -0x1.fffffffffffc236322818185647789bdp-1,
+    -0x1.3a28c59d5433ap4
+  },
+  { // Entry 1129
+    0x1.00000000000011b19140c0c0d59ee760p0,
+    0x1.3a28c59d5433bp4
+  },
+  { // Entry 1130
+    -0x1.00000000000011b19140c0c0d59ee760p0,
+    -0x1.3a28c59d5433bp4
+  },
+  { // Entry 1131
+    0x1.28f934315e5eb9b45a603a5f788de131p47,
+    0x1.46b9c347764a2p4
+  },
+  { // Entry 1132
+    -0x1.28f934315e5eb9b45a603a5f788de131p47,
+    -0x1.46b9c347764a2p4
+  },
+  { // Entry 1133
+    0x1.618fdb7f21c13c236a4c4551ff139f5dp48,
+    0x1.46b9c347764a3p4
+  },
+  { // Entry 1134
+    -0x1.618fdb7f21c13c236a4c4551ff139f5dp48,
+    -0x1.46b9c347764a3p4
+  },
+  { // Entry 1135
+    -0x1.cfde61218ab9e79ffe8f046afdf00de3p49,
+    0x1.46b9c347764a4p4
+  },
+  { // Entry 1136
+    0x1.cfde61218ab9e79ffe8f046afdf00de3p49,
+    -0x1.46b9c347764a4p4
+  },
+  { // Entry 1137
+    -0x1.000000000002f72181d8c97193f9ee49p0,
+    0x1.534ac0f19860bp4
+  },
+  { // Entry 1138
+    0x1.000000000002f72181d8c97193f9ee49p0,
+    -0x1.534ac0f19860bp4
+  },
+  { // Entry 1139
+    -0x1.000000000000f72181d8c96da5b6ea98p0,
+    0x1.534ac0f19860cp4
+  },
+  { // Entry 1140
+    0x1.000000000000f72181d8c96da5b6ea98p0,
+    -0x1.534ac0f19860cp4
+  },
+  { // Entry 1141
+    -0x1.fffffffffffdee4303b192db6ee7cdcdp-1,
+    0x1.534ac0f19860dp4
+  },
+  { // Entry 1142
+    0x1.fffffffffffdee4303b192db6ee7cdcdp-1,
+    -0x1.534ac0f19860dp4
+  },
+  { // Entry 1143
+    -0x1.3dc585b2c742181326e07c412c24a052p-48,
+    0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1144
+    0x1.3dc585b2c742181326e07c412c24a052p-48,
+    -0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1145
+    -0x1.ee2c2d963a10c0993703e2045110595ep-51,
+    0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1146
+    0x1.ee2c2d963a10c0993703e2045110595ep-51,
+    -0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1147
+    0x1.8474f49a717bcfd9b23f077f38aafd2ap-49,
+    0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1148
+    -0x1.8474f49a717bcfd9b23f077f38aafd2ap-49,
+    -0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1149
+    0x1.fffffffffff80016d61b58d99be7994ep-1,
+    0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1150
+    -0x1.fffffffffff80016d61b58d99be7994ep-1,
+    -0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1151
+    0x1.fffffffffffc0016d61b58cd9c154585p-1,
+    0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1152
+    -0x1.fffffffffffc0016d61b58cd9c154585p-1,
+    -0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1153
+    0x1.000000000000000b6b0dac64ce2178ddp0,
+    0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1154
+    -0x1.000000000000000b6b0dac64ce2178ddp0,
+    -0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1155
+    0x1.2326f4e8f2bb180e5bf0417d75ea5d9ep47,
+    0x1.78fdb9effea45p4
+  },
+  { // Entry 1156
+    -0x1.2326f4e8f2bb180e5bf0417d75ea5d9ep47,
+    -0x1.78fdb9effea45p4
+  },
+  { // Entry 1157
+    0x1.517ea08708ba69da333a8c85f3bc6609p48,
+    0x1.78fdb9effea46p4
+  },
+  { // Entry 1158
+    -0x1.517ea08708ba69da333a8c85f3bc6609p48,
+    -0x1.78fdb9effea46p4
+  },
+  { // Entry 1159
+    -0x1.090b3d5161785ac2d31663f7e5d6bed4p50,
+    0x1.78fdb9effea47p4
+  },
+  { // Entry 1160
+    0x1.090b3d5161785ac2d31663f7e5d6bed4p50,
+    -0x1.78fdb9effea47p4
+  },
+  { // Entry 1161
+    -0x1.00000000000308c7a80bddcdcfcc7de7p0,
+    0x1.858eb79a20baep4
+  },
+  { // Entry 1162
+    0x1.00000000000308c7a80bddcdcfcc7de7p0,
+    -0x1.858eb79a20baep4
+  },
+  { // Entry 1163
+    -0x1.00000000000108c7a80bddc9be3d2dcfp0,
+    0x1.858eb79a20bafp4
+  },
+  { // Entry 1164
+    0x1.00000000000108c7a80bddc9be3d2dcfp0,
+    -0x1.858eb79a20bafp4
+  },
+  { // Entry 1165
+    -0x1.fffffffffffe118f5017bb93595bbb6fp-1,
+    0x1.858eb79a20bb0p4
+  },
+  { // Entry 1166
+    0x1.fffffffffffe118f5017bb93595bbb6fp-1,
+    -0x1.858eb79a20bb0p4
+  },
+  { // Entry 1167
+    -0x1.af0792001f856335a38010a6a6832e6bp2,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 1168
+    0x1.af0792001f856335a38010a6a6832e6bp2,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 1169
+    0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
+    0x1.0p63
+  },
+  { // Entry 1170
+    -0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
+    -0x1.0p63
+  },
+  { // Entry 1171
+    0x1.7570667d032eca8ef780ad59d3e27e4bp1,
+    0x1.0000000000001p63
+  },
+  { // Entry 1172
+    -0x1.7570667d032eca8ef780ad59d3e27e4bp1,
+    -0x1.0000000000001p63
+  },
+  { // Entry 1173
+    -0x1.2e8fc248e7b854fe5c2dc9d287de0cd3p0,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 1174
+    0x1.2e8fc248e7b854fe5c2dc9d287de0cd3p0,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 1175
+    -0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
+    0x1.0p27
+  },
+  { // Entry 1176
+    0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
+    -0x1.0p27
+  },
+  { // Entry 1177
+    -0x1.2e8fc07cb61a95ef5e5d8d6416652c7ap0,
+    0x1.0000000000001p27
+  },
+  { // Entry 1178
+    0x1.2e8fc07cb61a95ef5e5d8d6416652c7ap0,
+    -0x1.0000000000001p27
+  },
+  { // Entry 1179
+    -0x1.3ea282860e7fbe1765607c2fdb32481fp0,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 1180
+    0x1.3ea282860e7fbe1765607c2fdb32481fp0,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 1181
+    -0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
+    0x1.0p24
+  },
+  { // Entry 1182
+    0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
+    -0x1.0p24
+  },
+  { // Entry 1183
+    -0x1.3ea28248e03c72def70e7efb4c43f03ep0,
+    0x1.0000000000001p24
+  },
+  { // Entry 1184
+    0x1.3ea28248e03c72def70e7efb4c43f03ep0,
+    -0x1.0000000000001p24
+  },
+  { // Entry 1185
+    0x1.2866f9be4de0ec27efa9049ab80bbd6cp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 1186
+    -0x1.2866f9be4de0ec27efa9049ab80bbd6cp0,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 1187
+    0x1.2866f9be4de1370db9078607012cb07bp0,
+    0x1.0p2
+  },
+  { // Entry 1188
+    -0x1.2866f9be4de1370db9078607012cb07bp0,
+    -0x1.0p2
+  },
+  { // Entry 1189
+    0x1.2866f9be4de1ccd94bc488dfd47873afp0,
+    0x1.0000000000001p2
+  },
+  { // Entry 1190
+    -0x1.2866f9be4de1ccd94bc488dfd47873afp0,
+    -0x1.0000000000001p2
+  },
+  { // Entry 1191
+    -0x1.17af62e0950fb1e701c642ef8737f516p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 1192
+    0x1.17af62e0950fb1e701c642ef8737f516p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 1193
+    -0x1.17af62e0950f83b5099087aaf67af9c1p1,
+    0x1.0p1
+  },
+  { // Entry 1194
+    0x1.17af62e0950f83b5099087aaf67af9c1p1,
+    -0x1.0p1
+  },
+  { // Entry 1195
+    -0x1.17af62e0950f275119251121fadb17bap1,
+    0x1.0000000000001p1
+  },
+  { // Entry 1196
+    0x1.17af62e0950f275119251121fadb17bap1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 1197
+    0x1.8eb245cbee3a40235613e7575020d30dp0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1198
+    -0x1.8eb245cbee3a40235613e7575020d30dp0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1199
+    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    0x1.0p0
+  },
+  { // Entry 1200
+    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    -0x1.0p0
+  },
+  { // Entry 1201
+    0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
+    0x1.0000000000001p0
+  },
+  { // Entry 1202
+    -0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1203
+    0x1.17b4f5bf347499ce41855dee4344bd1dp-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 1204
+    -0x1.17b4f5bf347499ce41855dee4344bd1dp-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 1205
+    0x1.17b4f5bf3474a4317964807882444cc8p-1,
+    0x1.0p-1
+  },
+  { // Entry 1206
+    -0x1.17b4f5bf3474a4317964807882444cc8p-1,
+    -0x1.0p-1
+  },
+  { // Entry 1207
+    0x1.17b4f5bf3474b8f7e922c58d00cb9dd2p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 1208
+    -0x1.17b4f5bf3474b8f7e922c58d00cb9dd2p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 1209
+    0x1.05785a43c4c555de0cb1371f10db31afp-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 1210
+    -0x1.05785a43c4c555de0cb1371f10db31afp-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 1211
+    0x1.05785a43c4c55e63940188965c28bd0fp-2,
+    0x1.0p-2
+  },
+  { // Entry 1212
+    -0x1.05785a43c4c55e63940188965c28bd0fp-2,
+    -0x1.0p-2
+  },
+  { // Entry 1213
+    0x1.05785a43c4c56f6ea2a22b84f2ddf03fp-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 1214
+    -0x1.05785a43c4c56f6ea2a22b84f2ddf03fp-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 1215
+    0x1.01577af1511a45e403dd60c8d82590d0p-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 1216
+    -0x1.01577af1511a45e403dd60c8d82590d0p-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 1217
+    0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
+    0x1.0p-3
+  },
+  { // Entry 1218
+    -0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
+    -0x1.0p-3
+  },
+  { // Entry 1219
+    0x1.01577af1511a5e45062667c6ceb89dc4p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 1220
+    -0x1.01577af1511a5e45062667c6ceb89dc4p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 1221
+    0x1.005577854df0002a8e6606f6c618d988p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 1222
+    -0x1.005577854df0002a8e6606f6c618d988p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 1223
+    0x1.005577854df0083293be639057b0c681p-4,
+    0x1.0p-4
+  },
+  { // Entry 1224
+    -0x1.005577854df0083293be639057b0c681p-4,
+    -0x1.0p-4
+  },
+  { // Entry 1225
+    0x1.005577854df018429e6f1cc37ae22274p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 1226
+    -0x1.005577854df018429e6f1cc37ae22274p-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 1227
+    0x1.00155777aec07d7b22741d12ee53a9fcp-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 1228
+    -0x1.00155777aec07d7b22741d12ee53a9fcp-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 1229
+    0x1.00155777aec0857d22c97e809860288dp-5,
+    0x1.0p-5
+  },
+  { // Entry 1230
+    -0x1.00155777aec0857d22c97e809860288dp-5,
+    -0x1.0p-5
+  },
+  { // Entry 1231
+    0x1.00155777aec095812374415bec7985cep-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 1232
+    -0x1.00155777aec095812374415bec7985cep-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 1233
+    0x1.00055577785482e135f0afeebe805adbp-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 1234
+    -0x1.00055577785482e135f0afeebe805adbp-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 1235
+    0x1.0005557778548ae1b5f60574706e8238p-6,
+    0x1.0p-6
+  },
+  { // Entry 1236
+    -0x1.0005557778548ae1b5f60574706e8238p-6,
+    -0x1.0p-6
+  },
+  { // Entry 1237
+    0x1.0005557778549ae2b600b07fd44ae8f3p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 1238
+    -0x1.0005557778549ae2b600b07fd44ae8f3p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 1239
+    0x1.0000000555554d777776f854854304c9p-14,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 1240
+    -0x1.0000000555554d777776f854854304c9p-14,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 1241
+    0x1.00000005555555777777785485485a1ep-14,
+    0x1.0p-14
+  },
+  { // Entry 1242
+    -0x1.00000005555555777777785485485a1ep-14,
+    -0x1.0p-14
+  },
+  { // Entry 1243
+    0x1.000000055555657777787854855304c9p-14,
+    0x1.0000000000001p-14
+  },
+  { // Entry 1244
+    -0x1.000000055555657777787854855304c9p-14,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 1245
+    0x1.fffffffffffff2aaaaaaaaaaaa6eeeeep-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 1246
+    -0x1.fffffffffffff2aaaaaaaaaaaa6eeeeep-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 1247
+    0x1.00000000000001555555555555577777p-27,
+    0x1.0p-27
+  },
+  { // Entry 1248
+    -0x1.00000000000001555555555555577777p-27,
+    -0x1.0p-27
+  },
+  { // Entry 1249
+    0x1.00000000000011555555555555977777p-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 1250
+    -0x1.00000000000011555555555555977777p-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 1251
+    0x1.fffffffffffff00aaaaaaaaaaaa9aaeep-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 1252
+    -0x1.fffffffffffff00aaaaaaaaaaaa9aaeep-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 1253
+    0x1.00000000000000055555555555555577p-30,
+    0x1.0p-30
+  },
+  { // Entry 1254
+    -0x1.00000000000000055555555555555577p-30,
+    -0x1.0p-30
+  },
+  { // Entry 1255
+    0x1.00000000000010055555555555565577p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 1256
+    -0x1.00000000000010055555555555565577p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 1257
+    0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1258
+    -0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1259
+    -0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1260
+    0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1261
+    -0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1262
+    0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1263
+    0x1.3c6e9970f78b84fc8227517fd521017bp1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 1264
+    -0x1.3c6e9970f78b84fc8227517fd521017bp1,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 1265
+    -0x1.1a62633145c06e0e689481270461d5d7p-53,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 1266
+    0x1.1a62633145c06e0e689481270461d5d7p-53,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 1267
+    0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 1268
+    -0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 1269
+    0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
+    0x1.0000000000001p0
+  },
+  { // Entry 1270
+    -0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1271
+    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    0x1.0p0
+  },
+  { // Entry 1272
+    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    -0x1.0p0
+  },
+  { // Entry 1273
+    0x1.8eb245cbee3a40235613e7575020d30dp0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1274
+    -0x1.8eb245cbee3a40235613e7575020d30dp0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1275
+    0x1.fffffffffffff72cece675d1fca30489p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 1276
+    -0x1.fffffffffffff72cece675d1fca30489p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 1277
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 1278
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1279
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1280
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1281
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1282
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1283
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1284
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1285
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 1286
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 1287
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1288
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1289
+    0.0,
+    0.0
+  },
+  { // Entry 1290
+    -0.0,
+    -0.0
+  },
+};
diff --git a/tests/math_data/tanf_intel_data.h b/tests/math_data/tanf_intel_data.h
new file mode 100644
index 0000000..0669115
--- /dev/null
+++ b/tests/math_data/tanf_intel_data.h
@@ -0,0 +1,4438 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_tanf_intel_data[] = {
+  { // Entry 0
+    -0x1.00000000001555555555577777777777p-21,
+    -0x1.p-21
+  },
+  { // Entry 1
+    0x1.00000000001555555555577777777777p-21,
+    0x1.p-21
+  },
+  { // Entry 2
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 3
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 4
+    -0x1.00000200000000000000155555d55556p-41,
+    -0x1.000002p-41
+  },
+  { // Entry 5
+    0x1.00000200000000000000155555d55556p-41,
+    0x1.000002p-41
+  },
+  { // Entry 6
+    -0x1.ffb7eb004b7e12b369388faaa0342f6cp-3,
+    -0x1.27cca6p7
+  },
+  { // Entry 7
+    0x1.ffb7eb004b7e12b369388faaa0342f6cp-3,
+    0x1.27cca6p7
+  },
+  { // Entry 8
+    -0x1.3b7ddaffdc9a2fad39f329743fbf49e5p4,
+    -0x1.2a5996p2
+  },
+  { // Entry 9
+    0x1.3b7ddaffdc9a2fad39f329743fbf49e5p4,
+    0x1.2a5996p2
+  },
+  { // Entry 10
+    0x1.819f32ffd97b1ed667bc143387037ddep-1,
+    -0x1.3f7f22p1
+  },
+  { // Entry 11
+    -0x1.819f32ffd97b1ed667bc143387037ddep-1,
+    0x1.3f7f22p1
+  },
+  { // Entry 12
+    -0x1.405f900000000000000a7402846583d0p-38,
+    -0x1.405f90p-38
+  },
+  { // Entry 13
+    0x1.405f900000000000000a7402846583d0p-38,
+    0x1.405f90p-38
+  },
+  { // Entry 14
+    -0x1.8cd79995344c7943c7b3e021607da3cbp-2,
+    -0x1.496e80p96
+  },
+  { // Entry 15
+    0x1.8cd79995344c7943c7b3e021607da3cbp-2,
+    0x1.496e80p96
+  },
+  { // Entry 16
+    0x1.e144471ea2b49b6c1fdceff8ccceea7bp10,
+    -0x1.5fe0p3
+  },
+  { // Entry 17
+    -0x1.e144471ea2b49b6c1fdceff8ccceea7bp10,
+    0x1.5fe0p3
+  },
+  { // Entry 18
+    -0x1.ca0f4c2315ab5a9729e6afa857677b3fp-1,
+    -0x1.75aef0p-1
+  },
+  { // Entry 19
+    0x1.ca0f4c2315ab5a9729e6afa857677b3fp-1,
+    0x1.75aef0p-1
+  },
+  { // Entry 20
+    -0x1.c33ed50b887775a5d613c08c488fbb9cp3,
+    -0x1.80p0
+  },
+  { // Entry 21
+    0x1.c33ed50b887775a5d613c08c488fbb9cp3,
+    0x1.80p0
+  },
+  { // Entry 22
+    -0x1.c34513ee7140fdb8217e83dc2d6d6f53p3,
+    -0x1.800040p0
+  },
+  { // Entry 23
+    0x1.c34513ee7140fdb8217e83dc2d6d6f53p3,
+    0x1.800040p0
+  },
+  { // Entry 24
+    0x1.4e6b8a48164b9e1d8175e4512ab22ff1p0,
+    -0x1.8e3560p98
+  },
+  { // Entry 25
+    -0x1.4e6b8a48164b9e1d8175e4512ab22ff1p0,
+    0x1.8e3560p98
+  },
+  { // Entry 26
+    -0x1.d017e0214a953265d8dd5c0a11ea61d1p-1,
+    -0x1.9de7d4p4
+  },
+  { // Entry 27
+    0x1.d017e0214a953265d8dd5c0a11ea61d1p-1,
+    0x1.9de7d4p4
+  },
+  { // Entry 28
+    -0x1.d0473f02270c0eec883e753e50800670p-1,
+    -0x1.9de8a4p4
+  },
+  { // Entry 29
+    0x1.d0473f02270c0eec883e753e50800670p-1,
+    0x1.9de8a4p4
+  },
+  { // Entry 30
+    0x1.d0aada22aa5e3dc35b5063c639047df5p-1,
+    -0x1.be7e5ap5
+  },
+  { // Entry 31
+    -0x1.d0aada22aa5e3dc35b5063c639047df5p-1,
+    0x1.be7e5ap5
+  },
+  { // Entry 32
+    -0x1.ee9495000a190cdb6db3e83d2c05ef38p-2,
+    -0x1.ccbeb0p-2
+  },
+  { // Entry 33
+    0x1.ee9495000a190cdb6db3e83d2c05ef38p-2,
+    0x1.ccbeb0p-2
+  },
+  { // Entry 34
+    0x1.dc32eba638d13458c7b29d96abffe1cap-7,
+    -0x1.fffep127
+  },
+  { // Entry 35
+    -0x1.dc32eba638d13458c7b29d96abffe1cap-7,
+    0x1.fffep127
+  },
+  { // Entry 36
+    0x1.00000000001555555555577777777777p-21,
+    0x1.p-21
+  },
+  { // Entry 37
+    -0x1.00000000001555555555577777777777p-21,
+    -0x1.p-21
+  },
+  { // Entry 38
+    0x1.p-131,
+    0x1.p-131
+  },
+  { // Entry 39
+    -0x1.p-131,
+    -0x1.p-131
+  },
+  { // Entry 40
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 41
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 42
+    0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
+    0x1.p63
+  },
+  { // Entry 43
+    -0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
+    -0x1.p63
+  },
+  { // Entry 44
+    0x1.00000200000000000000155555d55556p-41,
+    0x1.000002p-41
+  },
+  { // Entry 45
+    -0x1.00000200000000000000155555d55556p-41,
+    -0x1.000002p-41
+  },
+  { // Entry 46
+    -0x1.adb7eb6d8cebbe362f197dbeda5c113cp-1,
+    0x1.000002p51
+  },
+  { // Entry 47
+    0x1.adb7eb6d8cebbe362f197dbeda5c113cp-1,
+    -0x1.000002p51
+  },
+  { // Entry 48
+    0x1.f7762b752b006715d90c389a11826d6bp1,
+    0x1.000004p127
+  },
+  { // Entry 49
+    -0x1.f7762b752b006715d90c389a11826d6bp1,
+    -0x1.000004p127
+  },
+  { // Entry 50
+    -0x1.09cff10000671912c84762f18c285470p0,
+    0x1.000090p7
+  },
+  { // Entry 51
+    0x1.09cff10000671912c84762f18c285470p0,
+    -0x1.000090p7
+  },
+  { // Entry 52
+    0x1.015901017edb67aa7e52ae694e990a19p-3,
+    0x1.000180p-3
+  },
+  { // Entry 53
+    -0x1.015901017edb67aa7e52ae694e990a19p-3,
+    -0x1.000180p-3
+  },
+  { // Entry 54
+    0x1.0002200000000000000055577559d958p-40,
+    0x1.000220p-40
+  },
+  { // Entry 55
+    -0x1.0002200000000000000055577559d958p-40,
+    -0x1.000220p-40
+  },
+  { // Entry 56
+    0x1.6d53796cdd401e3ddc09e835b8ea660ap3,
+    0x1.000380p127
+  },
+  { // Entry 57
+    -0x1.6d53796cdd401e3ddc09e835b8ea660ap3,
+    -0x1.000380p127
+  },
+  { // Entry 58
+    -0x1.b070e3a6968463af6e9db922e7845524p-7,
+    0x1.000880p9
+  },
+  { // Entry 59
+    0x1.b070e3a6968463af6e9db922e7845524p-7,
+    -0x1.000880p9
+  },
+  { // Entry 60
+    -0x1.fa61dcffa3efe325b32704fc412462cfp1,
+    0x1.0020p62
+  },
+  { // Entry 61
+    0x1.fa61dcffa3efe325b32704fc412462cfp1,
+    -0x1.0020p62
+  },
+  { // Entry 62
+    0x1.fffd825a3f377f012209982a00c346f0p-2,
+    0x1.0060p90
+  },
+  { // Entry 63
+    -0x1.fffd825a3f377f012209982a00c346f0p-2,
+    -0x1.0060p90
+  },
+  { // Entry 64
+    0x1.013c68fff04b698165dfdf9d48444a95p-6,
+    0x1.0137p-6
+  },
+  { // Entry 65
+    -0x1.013c68fff04b698165dfdf9d48444a95p-6,
+    -0x1.0137p-6
+  },
+  { // Entry 66
+    0x1.932c994f61d804a084f20d975a617c50p0,
+    0x1.014cp0
+  },
+  { // Entry 67
+    -0x1.932c994f61d804a084f20d975a617c50p0,
+    -0x1.014cp0
+  },
+  { // Entry 68
+    -0x1.c34ec20533e760565cb762b15c18d6fcp1,
+    0x1.020446p58
+  },
+  { // Entry 69
+    0x1.c34ec20533e760565cb762b15c18d6fcp1,
+    -0x1.020446p58
+  },
+  { // Entry 70
+    0x1.9ff71767ea051e4e9cc0008922b11129p0,
+    0x1.04e4p0
+  },
+  { // Entry 71
+    -0x1.9ff71767ea051e4e9cc0008922b11129p0,
+    -0x1.04e4p0
+  },
+  { // Entry 72
+    0x1.07c9c5001659079722f8e9190ffe6ec6p-3,
+    0x1.0658p-3
+  },
+  { // Entry 73
+    -0x1.07c9c5001659079722f8e9190ffe6ec6p-3,
+    -0x1.0658p-3
+  },
+  { // Entry 74
+    0x1.fd611072a50357e6266768b2cdf0194cp-3,
+    0x1.0ac710p100
+  },
+  { // Entry 75
+    -0x1.fd611072a50357e6266768b2cdf0194cp-3,
+    -0x1.0ac710p100
+  },
+  { // Entry 76
+    0x1.0ddbb5000244c4fb972eb72de00896c0p-3,
+    0x1.0c50p-3
+  },
+  { // Entry 77
+    -0x1.0ddbb5000244c4fb972eb72de00896c0p-3,
+    -0x1.0c50p-3
+  },
+  { // Entry 78
+    -0x1.c0aeb5f84be95da5ab0716dfba205e28p2,
+    0x1.0ddcp96
+  },
+  { // Entry 79
+    0x1.c0aeb5f84be95da5ab0716dfba205e28p2,
+    -0x1.0ddcp96
+  },
+  { // Entry 80
+    0x1.340754fffffeb780761e86337f0c55efp1,
+    0x1.0e28a6p4
+  },
+  { // Entry 81
+    -0x1.340754fffffeb780761e86337f0c55efp1,
+    -0x1.0e28a6p4
+  },
+  { // Entry 82
+    0x1.349d95ffee472ec7c10934570d3ba486p-1,
+    0x1.15bcp-1
+  },
+  { // Entry 83
+    -0x1.349d95ffee472ec7c10934570d3ba486p-1,
+    -0x1.15bcp-1
+  },
+  { // Entry 84
+    0x1.eec72403a4fd24d0c9e2af088a05fb85p0,
+    0x1.17e4p0
+  },
+  { // Entry 85
+    -0x1.eec72403a4fd24d0c9e2af088a05fb85p0,
+    -0x1.17e4p0
+  },
+  { // Entry 86
+    0x1.ef4bd7a215237b3065d569fd4c5f5a47p0,
+    0x1.18p0
+  },
+  { // Entry 87
+    -0x1.ef4bd7a215237b3065d569fd4c5f5a47p0,
+    -0x1.18p0
+  },
+  { // Entry 88
+    -0x1.fe793900138c9941836b4fcbc9b2260dp-4,
+    0x1.18p64
+  },
+  { // Entry 89
+    0x1.fe793900138c9941836b4fcbc9b2260dp-4,
+    -0x1.18p64
+  },
+  { // Entry 90
+    0x1.f08f0873c5819a9f7cc6bbf3c5291cc0p0,
+    0x1.1844p0
+  },
+  { // Entry 91
+    -0x1.f08f0873c5819a9f7cc6bbf3c5291cc0p0,
+    -0x1.1844p0
+  },
+  { // Entry 92
+    0x1.5c51cc18f091bc4b54ee83623438c9a7p11,
+    0x1.18fffep19
+  },
+  { // Entry 93
+    -0x1.5c51cc18f091bc4b54ee83623438c9a7p11,
+    -0x1.18fffep19
+  },
+  { // Entry 94
+    0x1.2633567898e691eeb87ad026bd16a7e4p-2,
+    0x1.1e7cp-2
+  },
+  { // Entry 95
+    -0x1.2633567898e691eeb87ad026bd16a7e4p-2,
+    -0x1.1e7cp-2
+  },
+  { // Entry 96
+    0x1.ffffedf558bfb3100f61125f296b8badp1,
+    0x1.1ebep18
+  },
+  { // Entry 97
+    -0x1.ffffedf558bfb3100f61125f296b8badp1,
+    -0x1.1ebep18
+  },
+  { // Entry 98
+    0x1.0e551b00007fae17236421a76e861c75p1,
+    0x1.20ea9cp0
+  },
+  { // Entry 99
+    -0x1.0e551b00007fae17236421a76e861c75p1,
+    -0x1.20ea9cp0
+  },
+  { // Entry 100
+    0x1.c07dfb0552ba60b71c7df6bd7ca409d6p20,
+    0x1.2106cap5
+  },
+  { // Entry 101
+    -0x1.c07dfb0552ba60b71c7df6bd7ca409d6p20,
+    -0x1.2106cap5
+  },
+  { // Entry 102
+    -0x1.fd23fd64a4bfcfb597c46933649f5ae2p-2,
+    0x1.219dc6p119
+  },
+  { // Entry 103
+    0x1.fd23fd64a4bfcfb597c46933649f5ae2p-2,
+    -0x1.219dc6p119
+  },
+  { // Entry 104
+    -0x1.b93c13000d016d14e756c25e42302d9fp-3,
+    0x1.26cd6ap3
+  },
+  { // Entry 105
+    0x1.b93c13000d016d14e756c25e42302d9fp-3,
+    -0x1.26cd6ap3
+  },
+  { // Entry 106
+    -0x1.ebcbcb138b274cbcbe61af5113da83ecp-4,
+    0x1.29c4e0p3
+  },
+  { // Entry 107
+    0x1.ebcbcb138b274cbcbe61af5113da83ecp-4,
+    -0x1.29c4e0p3
+  },
+  { // Entry 108
+    0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
+    0x1.2d97c8p4
+  },
+  { // Entry 109
+    -0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
+    -0x1.2d97c8p4
+  },
+  { // Entry 110
+    -0x1.ed18af0b0ba80dfa6e8ee1b3b31dfc60p-1,
+    0x1.30p1
+  },
+  { // Entry 111
+    0x1.ed18af0b0ba80dfa6e8ee1b3b31dfc60p-1,
+    -0x1.30p1
+  },
+  { // Entry 112
+    0x1.9ab24111cfc62df4dbca320216b94651p-4,
+    0x1.30ca70p3
+  },
+  { // Entry 113
+    -0x1.9ab24111cfc62df4dbca320216b94651p-4,
+    -0x1.30ca70p3
+  },
+  { // Entry 114
+    0x1.337d8ffffffede62f050e98b3b9596e1p-3,
+    0x1.3135f0p-3
+  },
+  { // Entry 115
+    -0x1.337d8ffffffede62f050e98b3b9596e1p-3,
+    -0x1.3135f0p-3
+  },
+  { // Entry 116
+    0x1.348e650000002ef3a765b9416d12cf7ep-3,
+    0x1.3240bcp-3
+  },
+  { // Entry 117
+    -0x1.348e650000002ef3a765b9416d12cf7ep-3,
+    -0x1.3240bcp-3
+  },
+  { // Entry 118
+    -0x1.b9e58aec61a44ab533c2b83726367e17p-8,
+    0x1.32d53cp16
+  },
+  { // Entry 119
+    0x1.b9e58aec61a44ab533c2b83726367e17p-8,
+    -0x1.32d53cp16
+  },
+  { // Entry 120
+    -0x1.e1fd68edea44fb78780ed62e73c6e017p-6,
+    0x1.3a0aa8p6
+  },
+  { // Entry 121
+    0x1.e1fd68edea44fb78780ed62e73c6e017p-6,
+    -0x1.3a0aa8p6
+  },
+  { // Entry 122
+    -0x1.62a28100001393080f6733dfaf9c76fcp-1,
+    0x1.4495bap1
+  },
+  { // Entry 123
+    0x1.62a28100001393080f6733dfaf9c76fcp-1,
+    -0x1.4495bap1
+  },
+  { // Entry 124
+    0x1.b923c3ba0bc0c500ba4c245301bad207p1,
+    0x1.49d42ap0
+  },
+  { // Entry 125
+    -0x1.b923c3ba0bc0c500ba4c245301bad207p1,
+    -0x1.49d42ap0
+  },
+  { // Entry 126
+    0x1.541f3f00022ac25cc8a90855ab6bb808p-3,
+    0x1.510bbcp-3
+  },
+  { // Entry 127
+    -0x1.541f3f00022ac25cc8a90855ab6bb808p-3,
+    -0x1.510bbcp-3
+  },
+  { // Entry 128
+    0x1.76f3efffff3057122e6e7ce50d12cbcep-3,
+    0x1.549520p100
+  },
+  { // Entry 129
+    -0x1.76f3efffff3057122e6e7ce50d12cbcep-3,
+    -0x1.549520p100
+  },
+  { // Entry 130
+    0x1.4cac0300643e12c46203b47d3eeed4ffp-9,
+    0x1.54c4bap24
+  },
+  { // Entry 131
+    -0x1.4cac0300643e12c46203b47d3eeed4ffp-9,
+    -0x1.54c4bap24
+  },
+  { // Entry 132
+    -0x1.70d5450000058974c20b97ba96fdae03p-3,
+    0x1.5a757ep24
+  },
+  { // Entry 133
+    0x1.70d5450000058974c20b97ba96fdae03p-3,
+    -0x1.5a757ep24
+  },
+  { // Entry 134
+    -0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
+    0x1.5fdbc0p2
+  },
+  { // Entry 135
+    0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
+    -0x1.5fdbc0p2
+  },
+  { // Entry 136
+    -0x1.ffb68f0050dabe5ce719202610fcac2ep-1,
+    0x1.5fe056p2
+  },
+  { // Entry 137
+    0x1.ffb68f0050dabe5ce719202610fcac2ep-1,
+    -0x1.5fe056p2
+  },
+  { // Entry 138
+    -0x1.dabb46e3937e6c505ab2062232339a16p-7,
+    0x1.6493d4p95
+  },
+  { // Entry 139
+    0x1.dabb46e3937e6c505ab2062232339a16p-7,
+    -0x1.6493d4p95
+  },
+  { // Entry 140
+    0x1.c832162481e1ce4f01736bb97a3019b9p-1,
+    0x1.74a566p-1
+  },
+  { // Entry 141
+    -0x1.c832162481e1ce4f01736bb97a3019b9p-1,
+    -0x1.74a566p-1
+  },
+  { // Entry 142
+    0x1.7b2fa40000038d569226512c77976ff5p-3,
+    0x1.76f0b2p-3
+  },
+  { // Entry 143
+    -0x1.7b2fa40000038d569226512c77976ff5p-3,
+    -0x1.76f0b2p-3
+  },
+  { // Entry 144
+    -0x1.4f375ad9dee5fd604fb29435f32efe57p1,
+    0x1.78b3fap100
+  },
+  { // Entry 145
+    0x1.4f375ad9dee5fd604fb29435f32efe57p1,
+    -0x1.78b3fap100
+  },
+  { // Entry 146
+    -0x1.00005efffbe73e7bafeab7f76c8a93efp0,
+    0x1.78fdb4p3
+  },
+  { // Entry 147
+    0x1.00005efffbe73e7bafeab7f76c8a93efp0,
+    -0x1.78fdb4p3
+  },
+  { // Entry 148
+    -0x1.fc3ace000029c331692aa9fe4e42f004p-1,
+    0x1.791cp3
+  },
+  { // Entry 149
+    0x1.fc3ace000029c331692aa9fe4e42f004p-1,
+    -0x1.791cp3
+  },
+  { // Entry 150
+    0x1.dcfa3254b53b6a70cec4473abe850102p-1,
+    0x1.7ffffep-1
+  },
+  { // Entry 151
+    -0x1.dcfa3254b53b6a70cec4473abe850102p-1,
+    -0x1.7ffffep-1
+  },
+  { // Entry 152
+    0x1.c33ed50b887775a5d613c08c488fbb9cp3,
+    0x1.80p0
+  },
+  { // Entry 153
+    -0x1.c33ed50b887775a5d613c08c488fbb9cp3,
+    -0x1.80p0
+  },
+  { // Entry 154
+    0x1.8008p-130,
+    0x1.8008p-130
+  },
+  { // Entry 155
+    -0x1.8008p-130,
+    -0x1.8008p-130
+  },
+  { // Entry 156
+    -0x1.f96370ec482d2bb0eb8ea7a530139fcfp-5,
+    0x1.8180p83
+  },
+  { // Entry 157
+    0x1.f96370ec482d2bb0eb8ea7a530139fcfp-5,
+    -0x1.8180p83
+  },
+  { // Entry 158
+    -0x1.fff664faa6f86fa8b4e5e2719d2195cfp-1,
+    0x1.89e090p9
+  },
+  { // Entry 159
+    0x1.fff664faa6f86fa8b4e5e2719d2195cfp-1,
+    -0x1.89e090p9
+  },
+  { // Entry 160
+    0x1.1c051101643be740782fe0dfc9dcd1ccp0,
+    0x1.8c631ep15
+  },
+  { // Entry 161
+    -0x1.1c051101643be740782fe0dfc9dcd1ccp0,
+    -0x1.8c631ep15
+  },
+  { // Entry 162
+    0x1.bb2e88f26b9363f9a852665f3413d994p13,
+    0x1.8c67fep127
+  },
+  { // Entry 163
+    -0x1.bb2e88f26b9363f9a852665f3413d994p13,
+    -0x1.8c67fep127
+  },
+  { // Entry 164
+    -0x1.f0e4ec133585cb30e67cfcbb36faad8ep1,
+    0x1.91d858p12
+  },
+  { // Entry 165
+    0x1.f0e4ec133585cb30e67cfcbb36faad8ep1,
+    -0x1.91d858p12
+  },
+  { // Entry 166
+    -0x1.5d14946dc98975d6421a55284fe020a1p24,
+    0x1.921fb6p0
+  },
+  { // Entry 167
+    0x1.5d14946dc98975d6421a55284fe020a1p24,
+    -0x1.921fb6p0
+  },
+  { // Entry 168
+    0x1.980ee0cfbf0f1ebc9d4fd24cce3cdfe7p15,
+    0x1.922922p15
+  },
+  { // Entry 169
+    -0x1.980ee0cfbf0f1ebc9d4fd24cce3cdfe7p15,
+    -0x1.922922p15
+  },
+  { // Entry 170
+    -0x1.fd43f8e891e227ddad2fb2e5520d4ff2p-1,
+    0x1.9230fep15
+  },
+  { // Entry 171
+    0x1.fd43f8e891e227ddad2fb2e5520d4ff2p-1,
+    -0x1.9230fep15
+  },
+  { // Entry 172
+    0x1.cf38f6212e7e6276f4add54878f1a7dbp-1,
+    0x1.9510c8p6
+  },
+  { // Entry 173
+    -0x1.cf38f6212e7e6276f4add54878f1a7dbp-1,
+    -0x1.9510c8p6
+  },
+  { // Entry 174
+    0x1.d03d45024c3ca4a2c4e1a91856135046p-1,
+    0x1.9511e6p6
+  },
+  { // Entry 175
+    -0x1.d03d45024c3ca4a2c4e1a91856135046p-1,
+    -0x1.9511e6p6
+  },
+  { // Entry 176
+    0x1.0554eb5cbd393e4f0770c86528f39ee1p17,
+    0x1.979f24p9
+  },
+  { // Entry 177
+    -0x1.0554eb5cbd393e4f0770c86528f39ee1p17,
+    -0x1.979f24p9
+  },
+  { // Entry 178
+    0x1.fad5df93de3051cf018ab32c0b323571p-1,
+    0x1.a1e862p119
+  },
+  { // Entry 179
+    -0x1.fad5df93de3051cf018ab32c0b323571p-1,
+    -0x1.a1e862p119
+  },
+  { // Entry 180
+    0x1.ff981b1534f78016bea4d9588254e996p3,
+    0x1.ad1fp63
+  },
+  { // Entry 181
+    -0x1.ff981b1534f78016bea4d9588254e996p3,
+    -0x1.ad1fp63
+  },
+  { // Entry 182
+    -0x1.fff4a1db1e1e38c438ddd38bb94f6d31p1,
+    0x1.ada3dap39
+  },
+  { // Entry 183
+    0x1.fff4a1db1e1e38c438ddd38bb94f6d31p1,
+    -0x1.ada3dap39
+  },
+  { // Entry 184
+    0x1.d01529023d951390200a4252f038b4afp-1,
+    0x1.b125bap5
+  },
+  { // Entry 185
+    -0x1.d01529023d951390200a4252f038b4afp-1,
+    -0x1.b125bap5
+  },
+  { // Entry 186
+    0x1.d67fa105f76868612c84f74a1f38f0acp-2,
+    0x1.b90a02p-2
+  },
+  { // Entry 187
+    -0x1.d67fa105f76868612c84f74a1f38f0acp-2,
+    -0x1.b90a02p-2
+  },
+  { // Entry 188
+    0x1.99663da94dbd57199cb8e3dae7018358p-23,
+    0x1.beeeeep80
+  },
+  { // Entry 189
+    -0x1.99663da94dbd57199cb8e3dae7018358p-23,
+    -0x1.beeeeep80
+  },
+  { // Entry 190
+    0x1.eb96571eb9da1337e703cc20e41e9719p-13,
+    0x1.c3abf0p24
+  },
+  { // Entry 191
+    -0x1.eb96571eb9da1337e703cc20e41e9719p-13,
+    -0x1.c3abf0p24
+  },
+  { // Entry 192
+    0x1.e198c48bef954151ee075815d85c5363p0,
+    0x1.c71c74p116
+  },
+  { // Entry 193
+    -0x1.e198c48bef954151ee075815d85c5363p0,
+    -0x1.c71c74p116
+  },
+  { // Entry 194
+    -0x1.e50e524610728cfb239cc6305b212fd6p-1,
+    0x1.cc3252p18
+  },
+  { // Entry 195
+    0x1.e50e524610728cfb239cc6305b212fd6p-1,
+    -0x1.cc3252p18
+  },
+  { // Entry 196
+    -0x1.6a69e7bb21b52030964bc21ced077c71p19,
+    0x1.d38a2ap19
+  },
+  { // Entry 197
+    0x1.6a69e7bb21b52030964bc21ced077c71p19,
+    -0x1.d38a2ap19
+  },
+  { // Entry 198
+    0x1.6529bf81b958ca781cdaac7cec6e636ep0,
+    0x1.df0648p24
+  },
+  { // Entry 199
+    -0x1.6529bf81b958ca781cdaac7cec6e636ep0,
+    -0x1.df0648p24
+  },
+  { // Entry 200
+    0x1.659e43b4315f21ba5e7048b1d8d7815cp0,
+    0x1.df2204p24
+  },
+  { // Entry 201
+    -0x1.659e43b4315f21ba5e7048b1d8d7815cp0,
+    -0x1.df2204p24
+  },
+  { // Entry 202
+    -0x1.71a580ffc4e167ae0ef8b02d5d27c99dp-1,
+    0x1.df34p24
+  },
+  { // Entry 203
+    0x1.71a580ffc4e167ae0ef8b02d5d27c99dp-1,
+    -0x1.df34p24
+  },
+  { // Entry 204
+    0x1.ecf119000017a2caef4290b4d6c63785p-4,
+    0x1.ea951ap-4
+  },
+  { // Entry 205
+    -0x1.ecf119000017a2caef4290b4d6c63785p-4,
+    -0x1.ea951ap-4
+  },
+  { // Entry 206
+    0x1.ccd55821fad69755c2d824be2bfd4c64p-1,
+    0x1.efedc6p1
+  },
+  { // Entry 207
+    -0x1.ccd55821fad69755c2d824be2bfd4c64p-1,
+    -0x1.efedc6p1
+  },
+  { // Entry 208
+    0x1.d6981efffff2549634686a24dfda77cep-1,
+    0x1.f143a2p1
+  },
+  { // Entry 209
+    -0x1.d6981efffff2549634686a24dfda77cep-1,
+    -0x1.f143a2p1
+  },
+  { // Entry 210
+    0x1.dba4d1124a78a6803a0965af0ab79f88p3,
+    0x1.f25b06p2
+  },
+  { // Entry 211
+    -0x1.dba4d1124a78a6803a0965af0ab79f88p3,
+    -0x1.f25b06p2
+  },
+  { // Entry 212
+    -0x1.6dfcbaffd78023ecfabbf7ccf0a0e4b4p-1,
+    0x1.f32218p24
+  },
+  { // Entry 213
+    0x1.6dfcbaffd78023ecfabbf7ccf0a0e4b4p-1,
+    -0x1.f32218p24
+  },
+  { // Entry 214
+    -0x1.ec35cf000061079295ead714892db1cap1,
+    0x1.f44dbcp58
+  },
+  { // Entry 215
+    0x1.ec35cf000061079295ead714892db1cap1,
+    -0x1.f44dbcp58
+  },
+  { // Entry 216
+    0x1.db06c10d2a959715bc0a2e75e6da093bp4,
+    0x1.f47ffep2
+  },
+  { // Entry 217
+    -0x1.db06c10d2a959715bc0a2e75e6da093bp4,
+    -0x1.f47ffep2
+  },
+  { // Entry 218
+    0x1.ffffeb55643b9a648c2720bde1d22764p-1,
+    0x1.f6a7a0p1
+  },
+  { // Entry 219
+    -0x1.ffffeb55643b9a648c2720bde1d22764p-1,
+    -0x1.f6a7a0p1
+  },
+  { // Entry 220
+    0x1.c0a570ffffd379d0972ea78cd040c304p-3,
+    0x1.f6ded8p8
+  },
+  { // Entry 221
+    -0x1.c0a570ffffd379d0972ea78cd040c304p-3,
+    -0x1.f6ded8p8
+  },
+  { // Entry 222
+    -0x1.cdf18d01234809a6895315e9de59d864p-1,
+    0x1.f7ffbep15
+  },
+  { // Entry 223
+    0x1.cdf18d01234809a6895315e9de59d864p-1,
+    -0x1.f7ffbep15
+  },
+  { // Entry 224
+    -0x1.82f196fb60a81dc3b4dcbbc831ab8f85p-1,
+    0x1.f7fffep47
+  },
+  { // Entry 225
+    0x1.82f196fb60a81dc3b4dcbbc831ab8f85p-1,
+    -0x1.f7fffep47
+  },
+  { // Entry 226
+    0x1.6c03590f3fe3b7d29e89ee0e65fc9b1ep0,
+    0x1.f87d58p24
+  },
+  { // Entry 227
+    -0x1.6c03590f3fe3b7d29e89ee0e65fc9b1ep0,
+    -0x1.f87d58p24
+  },
+  { // Entry 228
+    -0x1.c7ae6e9c145b8d54f7719893fa03849fp27,
+    0x1.f9cbe2p7
+  },
+  { // Entry 229
+    0x1.c7ae6e9c145b8d54f7719893fa03849fp27,
+    -0x1.f9cbe2p7
+  },
+  { // Entry 230
+    0x1.6d2910005161b2bfa61134d0fbc9e9c0p0,
+    0x1.fd86bcp24
+  },
+  { // Entry 231
+    -0x1.6d2910005161b2bfa61134d0fbc9e9c0p0,
+    -0x1.fd86bcp24
+  },
+  { // Entry 232
+    0x1.6c8f8d0c3ad4bbb639a3f3a94237f69fp0,
+    0x1.fefa4ap24
+  },
+  { // Entry 233
+    -0x1.6c8f8d0c3ad4bbb639a3f3a94237f69fp0,
+    -0x1.fefa4ap24
+  },
+  { // Entry 234
+    0x1.00e5b5fffa13f7d9c4b0b52fe11a339bp-3,
+    0x1.ff1ffep-4
+  },
+  { // Entry 235
+    -0x1.00e5b5fffa13f7d9c4b0b52fe11a339bp-3,
+    -0x1.ff1ffep-4
+  },
+  { // Entry 236
+    0x1.ff3f41f01c5b360cce75b67877ffd677p0,
+    0x1.ff7ffep41
+  },
+  { // Entry 237
+    -0x1.ff3f41f01c5b360cce75b67877ffd677p0,
+    -0x1.ff7ffep41
+  },
+  { // Entry 238
+    -0x1.86dd5e00d7edc7266969bf5198438babp0,
+    0x1.ff9ffep12
+  },
+  { // Entry 239
+    0x1.86dd5e00d7edc7266969bf5198438babp0,
+    -0x1.ff9ffep12
+  },
+  { // Entry 240
+    -0x1.f8fe4579fdee2491c7d8572ea512fe93p5,
+    0x1.fffbfep45
+  },
+  { // Entry 241
+    0x1.f8fe4579fdee2491c7d8572ea512fe93p5,
+    -0x1.fffbfep45
+  },
+  { // Entry 242
+    -0x1.85ff462f0f86ff44641305da18ea8fc8p-13,
+    0x1.fffdf2p23
+  },
+  { // Entry 243
+    0x1.85ff462f0f86ff44641305da18ea8fc8p-13,
+    -0x1.fffdf2p23
+  },
+  { // Entry 244
+    0x1.3392e2ffbcb25fc1b016b9136e69c00bp-2,
+    0x1.fffdfep3
+  },
+  { // Entry 245
+    -0x1.3392e2ffbcb25fc1b016b9136e69c00bp-2,
+    -0x1.fffdfep3
+  },
+  { // Entry 246
+    -0x1.2f6c4bd2605f037f8609819f865a8dcbp8,
+    0x1.fffe3ep41
+  },
+  { // Entry 247
+    0x1.2f6c4bd2605f037f8609819f865a8dcbp8,
+    -0x1.fffe3ep41
+  },
+  { // Entry 248
+    -0x1.53a2e90e817727255e6ddf64e28c019cp-9,
+    0x1.fffe7ep103
+  },
+  { // Entry 249
+    0x1.53a2e90e817727255e6ddf64e28c019cp-9,
+    -0x1.fffe7ep103
+  },
+  { // Entry 250
+    -0x1.b34676f095b5b1a325426cdf42c04799p2,
+    0x1.ffff7ep2
+  },
+  { // Entry 251
+    0x1.b34676f095b5b1a325426cdf42c04799p2,
+    -0x1.ffff7ep2
+  },
+  { // Entry 252
+    0x1.f640d94e6241db4349e33bed67cbd3dbp-1,
+    0x1.ffff7ep119
+  },
+  { // Entry 253
+    -0x1.f640d94e6241db4349e33bed67cbd3dbp-1,
+    -0x1.ffff7ep119
+  },
+  { // Entry 254
+    0x1.526c269bdda8a89d90706870f3801eafp-1,
+    0x1.ffffeep4
+  },
+  { // Entry 255
+    -0x1.526c269bdda8a89d90706870f3801eafp-1,
+    -0x1.ffffeep4
+  },
+  { // Entry 256
+    -0x1.a37593c105e1462c2a37260603483da6p1,
+    0x1.fffffcp12
+  },
+  { // Entry 257
+    0x1.a37593c105e1462c2a37260603483da6p1,
+    -0x1.fffffcp12
+  },
+  { // Entry 258
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 259
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 260
+    0.0,
+    0.0
+  },
+  { // Entry 261
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 262
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 263
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 264
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 265
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 266
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 267
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 268
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 269
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 270
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 271
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 272
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 273
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 274
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 275
+    0x1.99999a57619f679b6193af8a0a7a8778p-13,
+    0x1.99999ap-13
+  },
+  { // Entry 276
+    -0x1.99999a57619f679b6193af8a0a7a8778p-13,
+    -0x1.99999ap-13
+  },
+  { // Entry 277
+    0x1.99999b5d867eaadd0305587399905311p-12,
+    0x1.99999ap-12
+  },
+  { // Entry 278
+    -0x1.99999b5d867eaadd0305587399905311p-12,
+    -0x1.99999ap-12
+  },
+  { // Entry 279
+    0x1.3333364dd2fb949645bea998cbc1ee72p-11,
+    0x1.333334p-11
+  },
+  { // Entry 280
+    -0x1.3333364dd2fb949645bea998cbc1ee72p-11,
+    -0x1.333334p-11
+  },
+  { // Entry 281
+    0x1.99999f761a0b726c18b00c6496cbe10dp-11,
+    0x1.99999ap-11
+  },
+  { // Entry 282
+    -0x1.99999f761a0b726c18b00c6496cbe10dp-11,
+    -0x1.99999ap-11
+  },
+  { // Entry 283
+    0x1.000005555577777854854dedc28ead51p-10,
+    0x1.p-10
+  },
+  { // Entry 284
+    -0x1.000005555577777854854dedc28ead51p-10,
+    -0x1.p-10
+  },
+  { // Entry 285
+    0x1.33333d374c2e05d108161378389fc84fp-10,
+    0x1.333334p-10
+  },
+  { // Entry 286
+    -0x1.33333d374c2e05d108161378389fc84fp-10,
+    -0x1.333334p-10
+  },
+  { // Entry 287
+    0x1.666676a27a6d8214d198b2321ef9a9dcp-10,
+    0x1.666668p-10
+  },
+  { // Entry 288
+    -0x1.666676a27a6d8214d198b2321ef9a9dcp-10,
+    -0x1.666668p-10
+  },
+  { // Entry 289
+    0x1.9999b1d8698c24cfe3b90ffd006ffdcap-10,
+    0x1.99999cp-10
+  },
+  { // Entry 290
+    -0x1.9999b1d8698c24cfe3b90ffd006ffdcap-10,
+    -0x1.99999cp-10
+  },
+  { // Entry 291
+    0x1.cccceb1aa219f71bb19208d74a739bb1p-10,
+    0x1.ccccccp-10
+  },
+  { // Entry 292
+    -0x1.cccceb1aa219f71bb19208d74a739bb1p-10,
+    -0x1.ccccccp-10
+  },
+  { // Entry 293
+    0x1.0667d5968bbbbe4037024b9c93f7b049p-7,
+    0x1.066666p-7
+  },
+  { // Entry 294
+    -0x1.0667d5968bbbbe4037024b9c93f7b049p-7,
+    -0x1.066666p-7
+  },
+  { // Entry 295
+    0x1.ccd492d035a227758b8c30d79b168826p-7,
+    0x1.ccccccp-7
+  },
+  { // Entry 296
+    -0x1.ccd492d035a227758b8c30d79b168826p-7,
+    -0x1.ccccccp-7
+  },
+  { // Entry 297
+    0x1.49a4fa68e90d228f445026eb29adcefdp-6,
+    0x1.499998p-6
+  },
+  { // Entry 298
+    -0x1.49a4fa68e90d228f445026eb29adcefdp-6,
+    -0x1.499998p-6
+  },
+  { // Entry 299
+    0x1.ace5de090603fda8f519afece05c17eap-6,
+    0x1.acccccp-6
+  },
+  { // Entry 300
+    -0x1.ace5de090603fda8f519afece05c17eap-6,
+    -0x1.acccccp-6
+  },
+  { // Entry 301
+    0x1.081767fd3cb685f7b069146ce3333851p-5,
+    0x1.08p-5
+  },
+  { // Entry 302
+    -0x1.081767fd3cb685f7b069146ce3333851p-5,
+    -0x1.08p-5
+  },
+  { // Entry 303
+    0x1.39c0d745334a3387d672e4a05624bca5p-5,
+    0x1.39999ap-5
+  },
+  { // Entry 304
+    -0x1.39c0d745334a3387d672e4a05624bca5p-5,
+    -0x1.39999ap-5
+  },
+  { // Entry 305
+    0x1.6b702c627fc00b777ea8661cce36061cp-5,
+    0x1.6b3334p-5
+  },
+  { // Entry 306
+    -0x1.6b702c627fc00b777ea8661cce36061cp-5,
+    -0x1.6b3334p-5
+  },
+  { // Entry 307
+    0x1.9d26574cd84759bfff51d8bb18538a0dp-5,
+    0x1.9ccccep-5
+  },
+  { // Entry 308
+    -0x1.9d26574cd84759bfff51d8bb18538a0dp-5,
+    -0x1.9ccccep-5
+  },
+  { // Entry 309
+    0x1.cee4467e15bb7ef59658a8eddc195167p-5,
+    0x1.ce6666p-5
+  },
+  { // Entry 310
+    -0x1.cee4467e15bb7ef59658a8eddc195167p-5,
+    -0x1.ce6666p-5
+  },
+  { // Entry 311
+    0x1.a1eaed7aa62a740c0b2e09bcd0f735b5p-1,
+    0x1.5e7fc4p-1
+  },
+  { // Entry 312
+    -0x1.a1eaed7aa62a740c0b2e09bcd0f735b5p-1,
+    -0x1.5e7fc4p-1
+  },
+  { // Entry 313
+    0x1.d93b891cbcb15aac8b5796a0a16bf29ep1,
+    0x1.4e7fc4p0
+  },
+  { // Entry 314
+    -0x1.d93b891cbcb15aac8b5796a0a16bf29ep1,
+    -0x1.4e7fc4p0
+  },
+  { // Entry 315
+    -0x1.563ad063486c797653a68955c0bb1c0bp1,
+    0x1.edbfa6p0
+  },
+  { // Entry 316
+    0x1.563ad063486c797653a68955c0bb1c0bp1,
+    -0x1.edbfa6p0
+  },
+  { // Entry 317
+    -0x1.576b789d544b6d037c3b7119fd6dd6p-1,
+    0x1.467fc4p1
+  },
+  { // Entry 318
+    0x1.576b789d544b6d037c3b7119fd6dd6p-1,
+    -0x1.467fc4p1
+  },
+  { // Entry 319
+    0x1.00150652b2d7931e0c878875b9f4ba82p-5,
+    0x1.961fb4p1
+  },
+  { // Entry 320
+    -0x1.00150652b2d7931e0c878875b9f4ba82p-5,
+    -0x1.961fb4p1
+  },
+  { // Entry 321
+    0x1.87e987b6e5071dbd3f755a76a27d8fc8p-1,
+    0x1.e5bfa4p1
+  },
+  { // Entry 322
+    -0x1.87e987b6e5071dbd3f755a76a27d8fc8p-1,
+    -0x1.e5bfa4p1
+  },
+  { // Entry 323
+    0x1.a49e55bce1c8991232387ecd1124698ap1,
+    0x1.1aafcap2
+  },
+  { // Entry 324
+    -0x1.a49e55bce1c8991232387ecd1124698ap1,
+    -0x1.1aafcap2
+  },
+  { // Entry 325
+    -0x1.79cf03135a93679d5aa2e1dcc5adedafp1,
+    0x1.427fc2p2
+  },
+  { // Entry 326
+    0x1.79cf03135a93679d5aa2e1dcc5adedafp1,
+    -0x1.427fc2p2
+  },
+  { // Entry 327
+    -0x1.6f1f86fdb20bc9923627b94d771f5388p-1,
+    0x1.6a4fbap2
+  },
+  { // Entry 328
+    0x1.6f1f86fdb20bc9923627b94d771f5388p-1,
+    -0x1.6a4fbap2
+  },
+  { // Entry 329
+    -0x1.67747ca802821c66c87a086638f28d36p-1,
+    0x1.6af2f0p2
+  },
+  { // Entry 330
+    0x1.67747ca802821c66c87a086638f28d36p-1,
+    -0x1.6af2f0p2
+  },
+  { // Entry 331
+    -0x1.626a30298df0c42c2cf7a8f9c166d55dp1,
+    0x1.43c62ap2
+  },
+  { // Entry 332
+    0x1.626a30298df0c42c2cf7a8f9c166d55dp1,
+    -0x1.43c62ap2
+  },
+  { // Entry 333
+    0x1.d6ad8a22a4407cc68df20cda1ea1c6aap1,
+    0x1.1c9964p2
+  },
+  { // Entry 334
+    -0x1.d6ad8a22a4407cc68df20cda1ea1c6aap1,
+    -0x1.1c9964p2
+  },
+  { // Entry 335
+    0x1.a94d00a1710d9bcc7b80481f42857d05p-1,
+    0x1.ead93cp1
+  },
+  { // Entry 336
+    -0x1.a94d00a1710d9bcc7b80481f42857d05p-1,
+    -0x1.ead93cp1
+  },
+  { // Entry 337
+    0x1.4cb9f4d315a995b28bfbd6e6a0905738p-4,
+    0x1.9c7fb0p1
+  },
+  { // Entry 338
+    -0x1.4cb9f4d315a995b28bfbd6e6a0905738p-4,
+    -0x1.9c7fb0p1
+  },
+  { // Entry 339
+    -0x1.2cb6f3ba51cd4ca385d7f4a7567c3a0bp-1,
+    0x1.4e2624p1
+  },
+  { // Entry 340
+    0x1.2cb6f3ba51cd4ca385d7f4a7567c3a0bp-1,
+    -0x1.4e2624p1
+  },
+  { // Entry 341
+    -0x1.18d9399a8290b3f8b42a4afc1f4b21dep1,
+    0x1.ff9932p0
+  },
+  { // Entry 342
+    0x1.18d9399a8290b3f8b42a4afc1f4b21dep1,
+    -0x1.ff9932p0
+  },
+  { // Entry 343
+    0x1.56fd94b0c0681613d3831608457f5bf6p2,
+    0x1.62e61cp0
+  },
+  { // Entry 344
+    -0x1.56fd94b0c0681613d3831608457f5bf6p2,
+    -0x1.62e61cp0
+  },
+  { // Entry 345
+    0x1.f4ad37f13e818641fc1555bf78e0e942p-1,
+    0x1.8c662cp-1
+  },
+  { // Entry 346
+    -0x1.f4ad37f13e818641fc1555bf78e0e942p-1,
+    -0x1.8c662cp-1
+  },
+  { // Entry 347
+    0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 348
+    -0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
+    0x1.a8aa1cp0
+  },
+  { // Entry 349
+    0x1.0d71ffac1d5e6aa753cf804a2a8c1f5bp6,
+    -0x1.95ec8ap0
+  },
+  { // Entry 350
+    -0x1.0d71ffac1d5e6aa753cf804a2a8c1f5bp6,
+    0x1.95ec8ap0
+  },
+  { // Entry 351
+    -0x1.11d8498073e1f4b776fe5672abb1f54ap4,
+    -0x1.832ef8p0
+  },
+  { // Entry 352
+    0x1.11d8498073e1f4b776fe5672abb1f54ap4,
+    0x1.832ef8p0
+  },
+  { // Entry 353
+    -0x1.e3a34b32708883a8578805f84ea03c6ap2,
+    -0x1.707166p0
+  },
+  { // Entry 354
+    0x1.e3a34b32708883a8578805f84ea03c6ap2,
+    0x1.707166p0
+  },
+  { // Entry 355
+    -0x1.3429d2634054eaae3bdbee94a6cec17fp2,
+    -0x1.5db3d4p0
+  },
+  { // Entry 356
+    0x1.3429d2634054eaae3bdbee94a6cec17fp2,
+    0x1.5db3d4p0
+  },
+  { // Entry 357
+    -0x1.c08c957bbb45acafa856bfd792cbf663p1,
+    -0x1.4af642p0
+  },
+  { // Entry 358
+    0x1.c08c957bbb45acafa856bfd792cbf663p1,
+    0x1.4af642p0
+  },
+  { // Entry 359
+    -0x1.5d602b0d0bdda825221a53369c5338d7p1,
+    -0x1.3838b0p0
+  },
+  { // Entry 360
+    0x1.5d602b0d0bdda825221a53369c5338d7p1,
+    0x1.3838b0p0
+  },
+  { // Entry 361
+    -0x1.1b4894e498720ec01735a02e55eefad8p1,
+    -0x1.257b1ep0
+  },
+  { // Entry 362
+    0x1.1b4894e498720ec01735a02e55eefad8p1,
+    0x1.257b1ep0
+  },
+  { // Entry 363
+    -0x1.d74cb200ab59040290627a9b2ffe29cfp0,
+    -0x1.12bd92p0
+  },
+  { // Entry 364
+    0x1.d74cb200ab59040290627a9b2ffe29cfp0,
+    0x1.12bd92p0
+  },
+  { // Entry 365
+    -0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 366
+    0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 367
+    -0x1.4d0defbcb48aa75ce13e1b82f1fcb049p0,
+    -0x1.d4b87cp-1
+  },
+  { // Entry 368
+    0x1.4d0defbcb48aa75ce13e1b82f1fcb049p0,
+    0x1.d4b87cp-1
+  },
+  { // Entry 369
+    -0x1.316c87fdb7599cb57354e4b99f38d7ffp0,
+    -0x1.bf14bap-1
+  },
+  { // Entry 370
+    0x1.316c87fdb7599cb57354e4b99f38d7ffp0,
+    0x1.bf14bap-1
+  },
+  { // Entry 371
+    -0x1.18729dfe51dfcf767f79f39b689ae95ep0,
+    -0x1.a970f8p-1
+  },
+  { // Entry 372
+    0x1.18729dfe51dfcf767f79f39b689ae95ep0,
+    0x1.a970f8p-1
+  },
+  { // Entry 373
+    -0x1.01aeea9cbe9a8fb4ccef99ad961b6ad8p0,
+    -0x1.93cd36p-1
+  },
+  { // Entry 374
+    0x1.01aeea9cbe9a8fb4ccef99ad961b6ad8p0,
+    0x1.93cd36p-1
+  },
+  { // Entry 375
+    -0x1.d98e373faad7da3d6c8865a7ff9ba7f3p-1,
+    -0x1.7e2974p-1
+  },
+  { // Entry 376
+    0x1.d98e373faad7da3d6c8865a7ff9ba7f3p-1,
+    0x1.7e2974p-1
+  },
+  { // Entry 377
+    -0x1.b2e46af704eb75d1fab0766afc74703fp-1,
+    -0x1.6885b2p-1
+  },
+  { // Entry 378
+    0x1.b2e46af704eb75d1fab0766afc74703fp-1,
+    0x1.6885b2p-1
+  },
+  { // Entry 379
+    -0x1.8ee90b7dc89b1f999ae6dbb41baceb0dp-1,
+    -0x1.52e1f0p-1
+  },
+  { // Entry 380
+    0x1.8ee90b7dc89b1f999ae6dbb41baceb0dp-1,
+    0x1.52e1f0p-1
+  },
+  { // Entry 381
+    -0x1.6d395f05820b42f51223dab884367e71p-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 382
+    0x1.6d395f05820b42f51223dab884367e71p-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 383
+    -0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 384
+    0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
+    0x1.0a0b02p-1
+  },
+  { // Entry 385
+    -0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 386
+    0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 387
+    -0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 388
+    0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 389
+    -0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 390
+    0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
+    0x1.62b958p-2
+  },
+  { // Entry 391
+    -0x1.30190941e699fdb2115a9ef6bf82d455p-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 392
+    0x1.30190941e699fdb2115a9ef6bf82d455p-2,
+    0x1.279a74p-2
+  },
+  { // Entry 393
+    -0x1.e18e93867caf67efcaa19821898d50cap-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 394
+    0x1.e18e93867caf67efcaa19821898d50cap-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 395
+    -0x1.665077dda822b189a56a02e15c04d5d4p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 396
+    0x1.665077dda822b189a56a02e15c04d5d4p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 397
+    -0x1.db1423d877b250af6ea5546960743d72p-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 398
+    0x1.db1423d877b250af6ea5546960743d72p-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 399
+    -0x1.d97dd643ffeef57d0a225051978ec8adp-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 400
+    0x1.d97dd643ffeef57d0a225051978ec8adp-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 401
+    0x1.d97dd643ffeef57d0a225051978ec8adp-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 402
+    -0x1.d97dd643ffeef57d0a225051978ec8adp-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 403
+    0x1.db1423d877b250af6ea5546960743d72p-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 404
+    -0x1.db1423d877b250af6ea5546960743d72p-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 405
+    0x1.665077dda822b189a56a02e15c04d5d4p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 406
+    -0x1.665077dda822b189a56a02e15c04d5d4p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 407
+    0x1.e18e93867caf67efcaa19821898d50cap-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 408
+    -0x1.e18e93867caf67efcaa19821898d50cap-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 409
+    0x1.30190941e699fdb2115a9ef6bf82d455p-2,
+    0x1.279a74p-2
+  },
+  { // Entry 410
+    -0x1.30190941e699fdb2115a9ef6bf82d455p-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 411
+    0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
+    0x1.62b958p-2
+  },
+  { // Entry 412
+    -0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 413
+    0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 414
+    -0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 415
+    0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 416
+    -0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 417
+    0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
+    0x1.0a0b02p-1
+  },
+  { // Entry 418
+    -0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 419
+    0x1.6d395f05820b42f51223dab884367e71p-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 420
+    -0x1.6d395f05820b42f51223dab884367e71p-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 421
+    0x1.8ee91858fbaaf2a34a32dd947fd7e076p-1,
+    0x1.52e1f8p-1
+  },
+  { // Entry 422
+    -0x1.8ee91858fbaaf2a34a32dd947fd7e076p-1,
+    -0x1.52e1f8p-1
+  },
+  { // Entry 423
+    0x1.b2e478bc9ba738db90b2a4bc294ecf4fp-1,
+    0x1.6885bap-1
+  },
+  { // Entry 424
+    -0x1.b2e478bc9ba738db90b2a4bc294ecf4fp-1,
+    -0x1.6885bap-1
+  },
+  { // Entry 425
+    0x1.d98e4617a8bd1a1bb9e2e989d8ad35ccp-1,
+    0x1.7e297cp-1
+  },
+  { // Entry 426
+    -0x1.d98e4617a8bd1a1bb9e2e989d8ad35ccp-1,
+    -0x1.7e297cp-1
+  },
+  { // Entry 427
+    0x1.01aef2aa416545e3900864f2b35d86a6p0,
+    0x1.93cd3ep-1
+  },
+  { // Entry 428
+    -0x1.01aef2aa416545e3900864f2b35d86a6p0,
+    -0x1.93cd3ep-1
+  },
+  { // Entry 429
+    0x1.1872a6cb3dba156db8dc784e95d96a46p0,
+    0x1.a971p-1
+  },
+  { // Entry 430
+    -0x1.1872a6cb3dba156db8dc784e95d96a46p0,
+    -0x1.a971p-1
+  },
+  { // Entry 431
+    0x1.316c91af46b015a9c931a816fed89092p0,
+    0x1.bf14c2p-1
+  },
+  { // Entry 432
+    -0x1.316c91af46b015a9c931a816fed89092p0,
+    -0x1.bf14c2p-1
+  },
+  { // Entry 433
+    0x1.4d0dfa81e9cc806c10194fba6b767761p0,
+    0x1.d4b884p-1
+  },
+  { // Entry 434
+    -0x1.4d0dfa81e9cc806c10194fba6b767761p0,
+    -0x1.d4b884p-1
+  },
+  { // Entry 435
+    0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 436
+    -0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 437
+    0x1.d74cb200ab59040290627a9b2ffe29cfp0,
+    0x1.12bd92p0
+  },
+  { // Entry 438
+    -0x1.d74cb200ab59040290627a9b2ffe29cfp0,
+    -0x1.12bd92p0
+  },
+  { // Entry 439
+    0x1.1b48a6964c024648f186bb6b1ebdeec2p1,
+    0x1.257b24p0
+  },
+  { // Entry 440
+    -0x1.1b48a6964c024648f186bb6b1ebdeec2p1,
+    -0x1.257b24p0
+  },
+  { // Entry 441
+    0x1.5d604466c5aee8f1a1d8470f7ff579cfp1,
+    0x1.3838b6p0
+  },
+  { // Entry 442
+    -0x1.5d604466c5aee8f1a1d8470f7ff579cfp1,
+    -0x1.3838b6p0
+  },
+  { // Entry 443
+    0x1.c08cbd52d2b012f0cb47bcb3ff513c6dp1,
+    0x1.4af648p0
+  },
+  { // Entry 444
+    -0x1.c08cbd52d2b012f0cb47bcb3ff513c6dp1,
+    -0x1.4af648p0
+  },
+  { // Entry 445
+    0x1.3429f6aa3446d703e6ef96e0b564fc0cp2,
+    0x1.5db3dap0
+  },
+  { // Entry 446
+    -0x1.3429f6aa3446d703e6ef96e0b564fc0cp2,
+    -0x1.5db3dap0
+  },
+  { // Entry 447
+    0x1.e3a3a25b2606418a13970971beef41d6p2,
+    0x1.70716cp0
+  },
+  { // Entry 448
+    -0x1.e3a3a25b2606418a13970971beef41d6p2,
+    -0x1.70716cp0
+  },
+  { // Entry 449
+    0x1.11d8b7ba41694658111af48925bbad68p4,
+    0x1.832efep0
+  },
+  { // Entry 450
+    -0x1.11d8b7ba41694658111af48925bbad68p4,
+    -0x1.832efep0
+  },
+  { // Entry 451
+    -0x1.0d70563193fe219f3fd31a285f4d6638p6,
+    0x1.95ec90p0
+  },
+  { // Entry 452
+    0x1.0d70563193fe219f3fd31a285f4d6638p6,
+    -0x1.95ec90p0
+  },
+  { // Entry 453
+    -0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
+    0x1.a8aa1cp0
+  },
+  { // Entry 454
+    0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 455
+    0x1.9f39ee9fedb2375ec05d6da7a288c6bdp0,
+    0x1.04aff8p0
+  },
+  { // Entry 456
+    -0x1.9f39ee9fedb2375ec05d6da7a288c6bdp0,
+    -0x1.04aff8p0
+  },
+  { // Entry 457
+    0x1.9f3c509c6a7d75e451088359c88def88p0,
+    0x1.04b0a0p0
+  },
+  { // Entry 458
+    -0x1.9f3c509c6a7d75e451088359c88def88p0,
+    -0x1.04b0a0p0
+  },
+  { // Entry 459
+    0x1.9f3eb29df9e6a20467474e24d8bf35bap0,
+    0x1.04b148p0
+  },
+  { // Entry 460
+    -0x1.9f3eb29df9e6a20467474e24d8bf35bap0,
+    -0x1.04b148p0
+  },
+  { // Entry 461
+    0x1.9f4114a49bfffc3f5a183d36000aa785p0,
+    0x1.04b1f0p0
+  },
+  { // Entry 462
+    -0x1.9f4114a49bfffc3f5a183d36000aa785p0,
+    -0x1.04b1f0p0
+  },
+  { // Entry 463
+    0x1.9f4376b050dbc56bf5596083192077b5p0,
+    0x1.04b298p0
+  },
+  { // Entry 464
+    -0x1.9f4376b050dbc56bf5596083192077b5p0,
+    -0x1.04b298p0
+  },
+  { // Entry 465
+    0x1.9f45d8c1188c3eb77bca2c4a84c7eaddp0,
+    0x1.04b340p0
+  },
+  { // Entry 466
+    -0x1.9f45d8c1188c3eb77bca2c4a84c7eaddp0,
+    -0x1.04b340p0
+  },
+  { // Entry 467
+    0x1.9f483ad6f323a9a5a90d4ae07a23d266p0,
+    0x1.04b3e8p0
+  },
+  { // Entry 468
+    -0x1.9f483ad6f323a9a5a90d4ae07a23d266p0,
+    -0x1.04b3e8p0
+  },
+  { // Entry 469
+    0x1.9f4a9cf1e0b44810b3aa7cca45d71cc9p0,
+    0x1.04b490p0
+  },
+  { // Entry 470
+    -0x1.9f4a9cf1e0b44810b3aa7cca45d71cc9p0,
+    -0x1.04b490p0
+  },
+  { // Entry 471
+    0x1.9f4cf08af6c60ed6e2badd5a7b5c1e87p0,
+    0x1.04b534p0
+  },
+  { // Entry 472
+    -0x1.9f4cf08af6c60ed6e2badd5a7b5c1e87p0,
+    -0x1.04b534p0
+  },
+  { // Entry 473
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 474
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 475
+    0.0,
+    0.0
+  },
+  { // Entry 476
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 477
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 478
+    0x1.4d82b334a582a56a802f96b3b96feb81p-1,
+    0x1.279a72p-1
+  },
+  { // Entry 479
+    -0x1.4d82b334a582a56a802f96b3b96feb81p-1,
+    -0x1.279a72p-1
+  },
+  { // Entry 480
+    0x1.4d82b60de428f92aa8c96a4a7fe88945p-1,
+    0x1.279a74p-1
+  },
+  { // Entry 481
+    -0x1.4d82b60de428f92aa8c96a4a7fe88945p-1,
+    -0x1.279a74p-1
+  },
+  { // Entry 482
+    0x1.4d82b8e722d302f5aa939a563b12b1a1p-1,
+    0x1.279a76p-1
+  },
+  { // Entry 483
+    -0x1.4d82b8e722d302f5aa939a563b12b1a1p-1,
+    -0x1.279a76p-1
+  },
+  { // Entry 484
+    -0x1.89714760e8fed9af03a91cf1527ceaadp2,
+    0x1.bb67acp0
+  },
+  { // Entry 485
+    0x1.89714760e8fed9af03a91cf1527ceaadp2,
+    -0x1.bb67acp0
+  },
+  { // Entry 486
+    -0x1.897133fb81f3169b3161d50b50ccc1a7p2,
+    0x1.bb67aep0
+  },
+  { // Entry 487
+    0x1.897133fb81f3169b3161d50b50ccc1a7p2,
+    -0x1.bb67aep0
+  },
+  { // Entry 488
+    -0x1.897120961cc4475eb3b8061df0409430p2,
+    0x1.bb67b0p0
+  },
+  { // Entry 489
+    0x1.897120961cc4475eb3b8061df0409430p2,
+    -0x1.bb67b0p0
+  },
+  { // Entry 490
+    0x1.def49c3ab0ad5dde93ba34c54db714c7p-2,
+    0x1.bffffep-2
+  },
+  { // Entry 491
+    -0x1.def49c3ab0ad5dde93ba34c54db714c7p-2,
+    -0x1.bffffep-2
+  },
+  { // Entry 492
+    0x1.def49eaab37a1479231e899509ecf26cp-2,
+    0x1.c0p-2
+  },
+  { // Entry 493
+    -0x1.def49eaab37a1479231e899509ecf26cp-2,
+    -0x1.c0p-2
+  },
+  { // Entry 494
+    0x1.def4a11ab647eef212b1997d3b51405ap-2,
+    0x1.c00002p-2
+  },
+  { // Entry 495
+    -0x1.def4a11ab647eef212b1997d3b51405ap-2,
+    -0x1.c00002p-2
+  },
+  { // Entry 496
+    0x1.a46caf652fa18987e4d0a79f8145dd5bp-1,
+    0x1.5ffffep-1
+  },
+  { // Entry 497
+    -0x1.a46caf652fa18987e4d0a79f8145dd5bp-1,
+    -0x1.5ffffep-1
+  },
+  { // Entry 498
+    0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
+    0x1.60p-1
+  },
+  { // Entry 499
+    -0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
+    -0x1.60p-1
+  },
+  { // Entry 500
+    0x1.a46cb617a47a31a156dc0005b4e6ebp-1,
+    0x1.600002p-1
+  },
+  { // Entry 501
+    -0x1.a46cb617a47a31a156dc0005b4e6ebp-1,
+    -0x1.600002p-1
+  },
+  { // Entry 502
+    0x1.3d6dc230869c70d5937fedc92d424df2p1,
+    0x1.2ffffep0
+  },
+  { // Entry 503
+    -0x1.3d6dc230869c70d5937fedc92d424df2p1,
+    -0x1.2ffffep0
+  },
+  { // Entry 504
+    0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
+    0x1.30p0
+  },
+  { // Entry 505
+    -0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
+    -0x1.30p0
+  },
+  { // Entry 506
+    0x1.3d6dd07d4f3a237589ad5c41c3801cb4p1,
+    0x1.300002p0
+  },
+  { // Entry 507
+    -0x1.3d6dd07d4f3a237589ad5c41c3801cb4p1,
+    -0x1.300002p0
+  },
+  { // Entry 508
+    -0x1.b2d8a858c90a538d1daad78040e69b98p-1,
+    0x1.37fffep1
+  },
+  { // Entry 509
+    0x1.b2d8a858c90a538d1daad78040e69b98p-1,
+    -0x1.37fffep1
+  },
+  { // Entry 510
+    -0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
+    0x1.38p1
+  },
+  { // Entry 511
+    0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
+    -0x1.38p1
+  },
+  { // Entry 512
+    -0x1.b2d88cce3c7cce174266439da309cf60p-1,
+    0x1.380002p1
+  },
+  { // Entry 513
+    0x1.b2d88cce3c7cce174266439da309cf60p-1,
+    -0x1.380002p1
+  },
+  { // Entry 514
+    0x1.06f8d0cecf169b06467e4aa036cf8279p-4,
+    0x1.069c8cp-4
+  },
+  { // Entry 515
+    -0x1.06f8d0cecf169b06467e4aa036cf8279p-4,
+    -0x1.069c8cp-4
+  },
+  { // Entry 516
+    0x1.080f746cd17397b60f908e2be01f7ba7p-3,
+    0x1.069c8cp-3
+  },
+  { // Entry 517
+    -0x1.080f746cd17397b60f908e2be01f7ba7p-3,
+    -0x1.069c8cp-3
+  },
+  { // Entry 518
+    0x1.8ed91550469d0eb08aae20658958043bp-3,
+    0x1.89ead2p-3
+  },
+  { // Entry 519
+    -0x1.8ed91550469d0eb08aae20658958043bp-3,
+    -0x1.89ead2p-3
+  },
+  { // Entry 520
+    0x1.0c864149dc68276df299282d04f69af6p-2,
+    0x1.069c8cp-2
+  },
+  { // Entry 521
+    -0x1.0c864149dc68276df299282d04f69af6p-2,
+    -0x1.069c8cp-2
+  },
+  { // Entry 522
+    0x1.53fdd01a98f07f208555cc644276ef2cp-2,
+    0x1.4843b0p-2
+  },
+  { // Entry 523
+    -0x1.53fdd01a98f07f208555cc644276ef2cp-2,
+    -0x1.4843b0p-2
+  },
+  { // Entry 524
+    0x1.9e925b7e237b88ac6098b513c371757cp-2,
+    0x1.89ead4p-2
+  },
+  { // Entry 525
+    -0x1.9e925b7e237b88ac6098b513c371757cp-2,
+    -0x1.89ead4p-2
+  },
+  { // Entry 526
+    0x1.ed21eadb08e47db8b2f11880fbb52879p-2,
+    0x1.cb91f8p-2
+  },
+  { // Entry 527
+    -0x1.ed21eadb08e47db8b2f11880fbb52879p-2,
+    -0x1.cb91f8p-2
+  },
+  { // Entry 528
+    0x1.205a63a04e31e1852af3da22e9f69a19p-1,
+    0x1.069c8ep-1
+  },
+  { // Entry 529
+    -0x1.205a63a04e31e1852af3da22e9f69a19p-1,
+    -0x1.069c8ep-1
+  },
+  { // Entry 530
+    0x1.4d466f84a3288515ab699dd1cec345d3p-1,
+    0x1.277020p-1
+  },
+  { // Entry 531
+    -0x1.4d466f84a3288515ab699dd1cec345d3p-1,
+    -0x1.277020p-1
+  },
+  { // Entry 532
+    0x1.7e1d9983b58754a29012e17a26f277d7p-1,
+    0x1.4843b2p-1
+  },
+  { // Entry 533
+    -0x1.7e1d9983b58754a29012e17a26f277d7p-1,
+    -0x1.4843b2p-1
+  },
+  { // Entry 534
+    0x1.b3df402fe49842a4164cf380ffa5dcp-1,
+    0x1.691744p-1
+  },
+  { // Entry 535
+    -0x1.b3df402fe49842a4164cf380ffa5dcp-1,
+    -0x1.691744p-1
+  },
+  { // Entry 536
+    0x1.efd8311ddf2cc393f20ea767c7b2264ap-1,
+    0x1.89ead6p-1
+  },
+  { // Entry 537
+    -0x1.efd8311ddf2cc393f20ea767c7b2264ap-1,
+    -0x1.89ead6p-1
+  },
+  { // Entry 538
+    0x1.19e271a6444ff34aa2f73c85014971c9p0,
+    0x1.aabe68p-1
+  },
+  { // Entry 539
+    -0x1.19e271a6444ff34aa2f73c85014971c9p0,
+    -0x1.aabe68p-1
+  },
+  { // Entry 540
+    0x1.410393802c1a22382914abf096afbee9p0,
+    0x1.cb91fap-1
+  },
+  { // Entry 541
+    -0x1.410393802c1a22382914abf096afbee9p0,
+    -0x1.cb91fap-1
+  },
+  { // Entry 542
+    0x1.6efed33b714045fe99cfa59471e1e9fdp0,
+    0x1.ec658cp-1
+  },
+  { // Entry 543
+    -0x1.6efed33b714045fe99cfa59471e1e9fdp0,
+    -0x1.ec658cp-1
+  },
+  { // Entry 544
+    0x1.a64c86c02e7a7d96e91f96a5584129f4p0,
+    0x1.069c8ep0
+  },
+  { // Entry 545
+    -0x1.a64c86c02e7a7d96e91f96a5584129f4p0,
+    -0x1.069c8ep0
+  },
+  { // Entry 546
+    0x1.eab4477e5b226dc5270bae9720ea13e3p0,
+    0x1.170656p0
+  },
+  { // Entry 547
+    -0x1.eab4477e5b226dc5270bae9720ea13e3p0,
+    -0x1.170656p0
+  },
+  { // Entry 548
+    0x1.21277f9a7d2f66bb131cff32f26629cdp1,
+    0x1.27701ep0
+  },
+  { // Entry 549
+    -0x1.21277f9a7d2f66bb131cff32f26629cdp1,
+    -0x1.27701ep0
+  },
+  { // Entry 550
+    0x1.5bd1406825b3ffeba48221ad6a8f5414p1,
+    0x1.37d9e6p0
+  },
+  { // Entry 551
+    -0x1.5bd1406825b3ffeba48221ad6a8f5414p1,
+    -0x1.37d9e6p0
+  },
+  { // Entry 552
+    0x1.af464352a989f802824152cad0afe8b7p1,
+    0x1.4843aep0
+  },
+  { // Entry 553
+    -0x1.af464352a989f802824152cad0afe8b7p1,
+    -0x1.4843aep0
+  },
+  { // Entry 554
+    0x1.1866fa7a601b87bb6f378b3438e3fc26p2,
+    0x1.58ad76p0
+  },
+  { // Entry 555
+    -0x1.1866fa7a601b87bb6f378b3438e3fc26p2,
+    -0x1.58ad76p0
+  },
+  { // Entry 556
+    0x1.8bdcc68718a70118860a1b945437fd90p2,
+    0x1.69173ep0
+  },
+  { // Entry 557
+    -0x1.8bdcc68718a70118860a1b945437fd90p2,
+    -0x1.69173ep0
+  },
+  { // Entry 558
+    0x1.4bb68859d3eafb2a130b73ba07e48e8ap3,
+    0x1.798106p0
+  },
+  { // Entry 559
+    -0x1.4bb68859d3eafb2a130b73ba07e48e8ap3,
+    -0x1.798106p0
+  },
+  { // Entry 560
+    0x1.f2efabaeb322ec5ca9d33869295c6063p4,
+    0x1.89eacep0
+  },
+  { // Entry 561
+    -0x1.f2efabaeb322ec5ca9d33869295c6063p4,
+    -0x1.89eacep0
+  },
+  { // Entry 562
+    -0x1.f2f13929323ef8f58db152143e65bcb7p4,
+    0x1.9a5496p0
+  },
+  { // Entry 563
+    0x1.f2f13929323ef8f58db152143e65bcb7p4,
+    -0x1.9a5496p0
+  },
+  { // Entry 564
+    -0x1.4bb6e0ec02cad5c110a4d70039db4d1cp3,
+    0x1.aabe5ep0
+  },
+  { // Entry 565
+    0x1.4bb6e0ec02cad5c110a4d70039db4d1cp3,
+    -0x1.aabe5ep0
+  },
+  { // Entry 566
+    -0x1.8bdd06a655dfa2f3195aca48798e5c86p2,
+    0x1.bb2826p0
+  },
+  { // Entry 567
+    0x1.8bdd06a655dfa2f3195aca48798e5c86p2,
+    -0x1.bb2826p0
+  },
+  { // Entry 568
+    -0x1.18671b76cfccf98a6edbc1fd5b8647b7p2,
+    0x1.cb91eep0
+  },
+  { // Entry 569
+    0x1.18671b76cfccf98a6edbc1fd5b8647b7p2,
+    -0x1.cb91eep0
+  },
+  { // Entry 570
+    -0x1.af466bac80dc9df668d1e0e9b442bf0ep1,
+    0x1.dbfbb6p0
+  },
+  { // Entry 571
+    0x1.af466bac80dc9df668d1e0e9b442bf0ep1,
+    -0x1.dbfbb6p0
+  },
+  { // Entry 572
+    -0x1.5bd15bcb3d06906cef5f3b2ec3ab4ab9p1,
+    0x1.ec657ep0
+  },
+  { // Entry 573
+    0x1.5bd15bcb3d06906cef5f3b2ec3ab4ab9p1,
+    -0x1.ec657ep0
+  },
+  { // Entry 574
+    -0x1.2127938a546d3c428292ba53ee6f67ccp1,
+    0x1.fccf46p0
+  },
+  { // Entry 575
+    0x1.2127938a546d3c428292ba53ee6f67ccp1,
+    -0x1.fccf46p0
+  },
+  { // Entry 576
+    -0x1.eab45caed706c4db622c90fe3e8d16c2p0,
+    0x1.069c88p1
+  },
+  { // Entry 577
+    0x1.eab45caed706c4db622c90fe3e8d16c2p0,
+    -0x1.069c88p1
+  },
+  { // Entry 578
+    -0x1.a64c979eb703d82cb4808044e8abf93fp0,
+    0x1.0ed16cp1
+  },
+  { // Entry 579
+    0x1.a64c979eb703d82cb4808044e8abf93fp0,
+    -0x1.0ed16cp1
+  },
+  { // Entry 580
+    -0x1.6efee11500263c10c1d1bb5904244de6p0,
+    0x1.170650p1
+  },
+  { // Entry 581
+    0x1.6efee11500263c10c1d1bb5904244de6p0,
+    -0x1.170650p1
+  },
+  { // Entry 582
+    -0x1.4103a1bc0f6576a760d49da3bfe55874p0,
+    0x1.1f3b34p1
+  },
+  { // Entry 583
+    0x1.4103a1bc0f6576a760d49da3bfe55874p0,
+    -0x1.1f3b34p1
+  },
+  { // Entry 584
+    -0x1.19e2801aa24ee0adcd9491e4d7af256fp0,
+    0x1.277018p1
+  },
+  { // Entry 585
+    0x1.19e2801aa24ee0adcd9491e4d7af256fp0,
+    -0x1.277018p1
+  },
+  { // Entry 586
+    -0x1.efd84e50652c1b7c71972ad8ee7c018ap-1,
+    0x1.2fa4fcp1
+  },
+  { // Entry 587
+    0x1.efd84e50652c1b7c71972ad8ee7c018ap-1,
+    -0x1.2fa4fcp1
+  },
+  { // Entry 588
+    -0x1.b3df5d9f54e2c748cf0227ee0974ea2ep-1,
+    0x1.37d9e0p1
+  },
+  { // Entry 589
+    0x1.b3df5d9f54e2c748cf0227ee0974ea2ep-1,
+    -0x1.37d9e0p1
+  },
+  { // Entry 590
+    -0x1.7e1db733769a1126a2b0ac7fa14a402cp-1,
+    0x1.400ec4p1
+  },
+  { // Entry 591
+    0x1.7e1db733769a1126a2b0ac7fa14a402cp-1,
+    -0x1.400ec4p1
+  },
+  { // Entry 592
+    -0x1.4d468d82c1a84fef7279fc5fb24419b2p-1,
+    0x1.4843a8p1
+  },
+  { // Entry 593
+    0x1.4d468d82c1a84fef7279fc5fb24419b2p-1,
+    -0x1.4843a8p1
+  },
+  { // Entry 594
+    -0x1.205a8202545202d891ce89bfa6cd1476p-1,
+    0x1.50788cp1
+  },
+  { // Entry 595
+    0x1.205a8202545202d891ce89bfa6cd1476p-1,
+    -0x1.50788cp1
+  },
+  { // Entry 596
+    -0x1.ed22289d891ed78cdc818a4cde6de918p-2,
+    0x1.58ad70p1
+  },
+  { // Entry 597
+    0x1.ed22289d891ed78cdc818a4cde6de918p-2,
+    -0x1.58ad70p1
+  },
+  { // Entry 598
+    -0x1.9e929a7fadf83b6f9e8fb851f512b44bp-2,
+    0x1.60e254p1
+  },
+  { // Entry 599
+    0x1.9e929a7fadf83b6f9e8fb851f512b44bp-2,
+    -0x1.60e254p1
+  },
+  { // Entry 600
+    -0x1.53fe10a547a6ecce5caddc2005db822bp-2,
+    0x1.691738p1
+  },
+  { // Entry 601
+    0x1.53fe10a547a6ecce5caddc2005db822bp-2,
+    -0x1.691738p1
+  },
+  { // Entry 602
+    -0x1.0c8683b1bc682759e28441ef97c8854bp-2,
+    0x1.714c1cp1
+  },
+  { // Entry 603
+    0x1.0c8683b1bc682759e28441ef97c8854bp-2,
+    -0x1.714c1cp1
+  },
+  { // Entry 604
+    -0x1.8ed99c8546008be46614ea66c7ddd7e6p-3,
+    0x1.7981p1
+  },
+  { // Entry 605
+    0x1.8ed99c8546008be46614ea66c7ddd7e6p-3,
+    -0x1.7981p1
+  },
+  { // Entry 606
+    -0x1.080ffef4eda0271d81658d58ae280792p-3,
+    0x1.81b5e4p1
+  },
+  { // Entry 607
+    0x1.080ffef4eda0271d81658d58ae280792p-3,
+    -0x1.81b5e4p1
+  },
+  { // Entry 608
+    -0x1.06f9ee83686aa6194c03de71a6b52f75p-4,
+    0x1.89eac8p1
+  },
+  { // Entry 609
+    0x1.06f9ee83686aa6194c03de71a6b52f75p-4,
+    -0x1.89eac8p1
+  },
+  { // Entry 610
+    0x1.0c8627ec3bc2e8f0e6df44f809f370fdp-2,
+    -0x1.81b5eep2
+  },
+  { // Entry 611
+    -0x1.0c8627ec3bc2e8f0e6df44f809f370fdp-2,
+    0x1.81b5eep2
+  },
+  { // Entry 612
+    0x1.205a49753bb89e8c971c6cd2842edaf0p-1,
+    -0x1.714c26p2
+  },
+  { // Entry 613
+    -0x1.205a49753bb89e8c971c6cd2842edaf0p-1,
+    0x1.714c26p2
+  },
+  { // Entry 614
+    0x1.efd7fb1d28b8a0602b25fadfe9e0277ap-1,
+    -0x1.60e25ep2
+  },
+  { // Entry 615
+    -0x1.efd7fb1d28b8a0602b25fadfe9e0277ap-1,
+    0x1.60e25ep2
+  },
+  { // Entry 616
+    0x1.a64c47bcfb5f9cbdb49360a65548fd6dp0,
+    -0x1.507896p2
+  },
+  { // Entry 617
+    -0x1.a64c47bcfb5f9cbdb49360a65548fd6dp0,
+    0x1.507896p2
+  },
+  { // Entry 618
+    0x1.af45dabd34b75597ff70079b3de986fdp1,
+    -0x1.400ecep2
+  },
+  { // Entry 619
+    -0x1.af45dabd34b75597ff70079b3de986fdp1,
+    0x1.400ecep2
+  },
+  { // Entry 620
+    0x1.f2eba583fff9f8df3693ffd969395de7p4,
+    -0x1.2fa506p2
+  },
+  { // Entry 621
+    -0x1.f2eba583fff9f8df3693ffd969395de7p4,
+    0x1.2fa506p2
+  },
+  { // Entry 622
+    -0x1.186770f5cef152a4ec75fe9a7031a56ap2,
+    -0x1.1f3b3ep2
+  },
+  { // Entry 623
+    0x1.186770f5cef152a4ec75fe9a7031a56ap2,
+    0x1.1f3b3ep2
+  },
+  { // Entry 624
+    -0x1.eab4b52e6cce160a5b9a23a4b929d01dp0,
+    -0x1.0ed176p2
+  },
+  { // Entry 625
+    0x1.eab4b52e6cce160a5b9a23a4b929d01dp0,
+    0x1.0ed176p2
+  },
+  { // Entry 626
+    -0x1.19e2a124bc3deef648338274627cc371p0,
+    -0x1.fccf5ap1
+  },
+  { // Entry 627
+    0x1.19e2a124bc3deef648338274627cc371p0,
+    0x1.fccf5ap1
+  },
+  { // Entry 628
+    -0x1.4d46aca48de47f5fd90c9000c15425d8p-1,
+    -0x1.dbfbc8p1
+  },
+  { // Entry 629
+    0x1.4d46aca48de47f5fd90c9000c15425d8p-1,
+    0x1.dbfbc8p1
+  },
+  { // Entry 630
+    -0x1.53fe2f6fc9d023774a2105c8213e4d5ep-2,
+    -0x1.bb2836p1
+  },
+  { // Entry 631
+    0x1.53fe2f6fc9d023774a2105c8213e4d5ep-2,
+    0x1.bb2836p1
+  },
+  { // Entry 632
+    -0x1.06fa1da43b26cd580ce5a5b89cf2eff3p-4,
+    -0x1.9a54a4p1
+  },
+  { // Entry 633
+    0x1.06fa1da43b26cd580ce5a5b89cf2eff3p-4,
+    0x1.9a54a4p1
+  },
+  { // Entry 634
+    0x1.8ed87198f413d3a122658287aa7fc33ep-3,
+    -0x1.798112p1
+  },
+  { // Entry 635
+    -0x1.8ed87198f413d3a122658287aa7fc33ep-3,
+    0x1.798112p1
+  },
+  { // Entry 636
+    0x1.ed218aee2df4e80e39340b0c4ec3b1d5p-2,
+    -0x1.58ad80p1
+  },
+  { // Entry 637
+    -0x1.ed218aee2df4e80e39340b0c4ec3b1d5p-2,
+    0x1.58ad80p1
+  },
+  { // Entry 638
+    0x1.b3defd0991e6315369dbd5e2de2d14fep-1,
+    -0x1.37d9eep1
+  },
+  { // Entry 639
+    -0x1.b3defd0991e6315369dbd5e2de2d14fep-1,
+    0x1.37d9eep1
+  },
+  { // Entry 640
+    0x1.6efe97c23f206826b4f0019f275d3a44p0,
+    -0x1.17065cp1
+  },
+  { // Entry 641
+    -0x1.6efe97c23f206826b4f0019f275d3a44p0,
+    0x1.17065cp1
+  },
+  { // Entry 642
+    0x1.5bd0ff925c94f7d608b88484f9081f2cp1,
+    -0x1.ec6594p0
+  },
+  { // Entry 643
+    -0x1.5bd0ff925c94f7d608b88484f9081f2cp1,
+    0x1.ec6594p0
+  },
+  { // Entry 644
+    0x1.4bb5ece657bee292a82a3fda6b812aadp3,
+    -0x1.aabe70p0
+  },
+  { // Entry 645
+    -0x1.4bb5ece657bee292a82a3fda6b812aadp3,
+    0x1.aabe70p0
+  },
+  { // Entry 646
+    -0x1.8bdd4feef18bfa8a6c23de6a721f2436p2,
+    -0x1.69174cp0
+  },
+  { // Entry 647
+    0x1.8bdd4feef18bfa8a6c23de6a721f2436p2,
+    0x1.69174cp0
+  },
+  { // Entry 648
+    -0x1.21279e1e8bf4bd3983a3677267e55809p1,
+    -0x1.277028p0
+  },
+  { // Entry 649
+    0x1.21279e1e8bf4bd3983a3677267e55809p1,
+    0x1.277028p0
+  },
+  { // Entry 650
+    -0x1.4103a8147ca836136cc98db9bc6ddf30p0,
+    -0x1.cb920ap-1
+  },
+  { // Entry 651
+    0x1.4103a8147ca836136cc98db9bc6ddf30p0,
+    0x1.cb920ap-1
+  },
+  { // Entry 652
+    -0x1.7e1db58a55d6a12a6457e3c5929ac2c7p-1,
+    -0x1.4843c4p-1
+  },
+  { // Entry 653
+    0x1.7e1db58a55d6a12a6457e3c5929ac2c7p-1,
+    0x1.4843c4p-1
+  },
+  { // Entry 654
+    -0x1.9e928a0c8e79023200164ed240caad05p-2,
+    -0x1.89eafcp-2
+  },
+  { // Entry 655
+    0x1.9e928a0c8e79023200164ed240caad05p-2,
+    0x1.89eafcp-2
+  },
+  { // Entry 656
+    -0x1.080fc9d24fbe9876b31b0aa29dd238eap-3,
+    -0x1.069ce0p-3
+  },
+  { // Entry 657
+    0x1.080fc9d24fbe9876b31b0aa29dd238eap-3,
+    0x1.069ce0p-3
+  },
+  { // Entry 658
+    0x1.080f1f07540fd03b82d4b370d237fa3dp-3,
+    0x1.069c38p-3
+  },
+  { // Entry 659
+    -0x1.080f1f07540fd03b82d4b370d237fa3dp-3,
+    -0x1.069c38p-3
+  },
+  { // Entry 660
+    0x1.9e922847e2b1b6a72d486700e18c05f2p-2,
+    0x1.89eaa8p-2
+  },
+  { // Entry 661
+    -0x1.9e922847e2b1b6a72d486700e18c05f2p-2,
+    -0x1.89eaa8p-2
+  },
+  { // Entry 662
+    0x1.7e1d74258cbc964b561d99c9a66f8c7ep-1,
+    0x1.48439ap-1
+  },
+  { // Entry 663
+    -0x1.7e1d74258cbc964b561d99c9a66f8c7ep-1,
+    -0x1.48439ap-1
+  },
+  { // Entry 664
+    0x1.4103720f2ca3e0580fba15849398a4e9p0,
+    0x1.cb91e0p-1
+  },
+  { // Entry 665
+    -0x1.4103720f2ca3e0580fba15849398a4e9p0,
+    -0x1.cb91e0p-1
+  },
+  { // Entry 666
+    0x1.2127611673ccc7531f5af5aeda3412c5p1,
+    0x1.277014p0
+  },
+  { // Entry 667
+    -0x1.2127611673ccc7531f5af5aeda3412c5p1,
+    -0x1.277014p0
+  },
+  { // Entry 668
+    0x1.8bdc8ba3d8277213c5b74ef806ef466bp2,
+    0x1.691738p0
+  },
+  { // Entry 669
+    -0x1.8bdc8ba3d8277213c5b74ef806ef466bp2,
+    -0x1.691738p0
+  },
+  { // Entry 670
+    -0x1.4bb6fc092bc16530216209a912aada37p3,
+    0x1.aabe5cp0
+  },
+  { // Entry 671
+    0x1.4bb6fc092bc16530216209a912aada37p3,
+    -0x1.aabe5cp0
+  },
+  { // Entry 672
+    -0x1.5bd15368f84be0bda8f135a5f79aeacbp1,
+    0x1.ec6580p0
+  },
+  { // Entry 673
+    0x1.5bd15368f84be0bda8f135a5f79aeacbp1,
+    -0x1.ec6580p0
+  },
+  { // Entry 674
+    -0x1.6efed4dc8946e1c3620d79bb0d654338p0,
+    0x1.170652p1
+  },
+  { // Entry 675
+    0x1.6efed4dc8946e1c3620d79bb0d654338p0,
+    -0x1.170652p1
+  },
+  { // Entry 676
+    -0x1.b3df4206d232794d5761992d88c5a394p-1,
+    0x1.37d9e4p1
+  },
+  { // Entry 677
+    0x1.b3df4206d232794d5761992d88c5a394p-1,
+    -0x1.37d9e4p1
+  },
+  { // Entry 678
+    -0x1.ed21ed7bc4b5968bdb0cd6da269cd55fp-2,
+    0x1.58ad76p1
+  },
+  { // Entry 679
+    0x1.ed21ed7bc4b5968bdb0cd6da269cd55fp-2,
+    -0x1.58ad76p1
+  },
+  { // Entry 680
+    -0x1.8ed917aa74e733b9194d537c8df33c64p-3,
+    0x1.798108p1
+  },
+  { // Entry 681
+    0x1.8ed917aa74e733b9194d537c8df33c64p-3,
+    -0x1.798108p1
+  },
+  { // Entry 682
+    0x1.06f8dc528ea01882064ee242f58a2b88p-4,
+    0x1.9a549ap1
+  },
+  { // Entry 683
+    -0x1.06f8dc528ea01882064ee242f58a2b88p-4,
+    -0x1.9a549ap1
+  },
+  { // Entry 684
+    0x1.53fdd69e1437db957c62e8cc55742beep-2,
+    0x1.bb282cp1
+  },
+  { // Entry 685
+    -0x1.53fdd69e1437db957c62e8cc55742beep-2,
+    -0x1.bb282cp1
+  },
+  { // Entry 686
+    0x1.4d4673b1c7635cc893e1c8d2ca57b3e9p-1,
+    0x1.dbfbbep1
+  },
+  { // Entry 687
+    -0x1.4d4673b1c7635cc893e1c8d2ca57b3e9p-1,
+    -0x1.dbfbbep1
+  },
+  { // Entry 688
+    0x1.19e274e4fdec9e78ef6872081b5572cfp0,
+    0x1.fccf50p1
+  },
+  { // Entry 689
+    -0x1.19e274e4fdec9e78ef6872081b5572cfp0,
+    -0x1.fccf50p1
+  },
+  { // Entry 690
+    0x1.eab445003a7b542a2d4d87a88793bb67p0,
+    0x1.0ed170p2
+  },
+  { // Entry 691
+    -0x1.eab445003a7b542a2d4d87a88793bb67p0,
+    -0x1.0ed170p2
+  },
+  { // Entry 692
+    0x1.1866f7c91660d9c9f4b2d14e91375732p2,
+    0x1.1f3b38p2
+  },
+  { // Entry 693
+    -0x1.1866f7c91660d9c9f4b2d14e91375732p2,
+    -0x1.1f3b38p2
+  },
+  { // Entry 694
+    -0x1.f2f1599b29a7de952b8ba1877d9f5e61p4,
+    0x1.2fa5p2
+  },
+  { // Entry 695
+    0x1.f2f1599b29a7de952b8ba1877d9f5e61p4,
+    -0x1.2fa5p2
+  },
+  { // Entry 696
+    -0x1.af466ef7b15645455e15fbbae6bb4bc6p1,
+    0x1.400ec8p2
+  },
+  { // Entry 697
+    0x1.af466ef7b15645455e15fbbae6bb4bc6p1,
+    -0x1.400ec8p2
+  },
+  { // Entry 698
+    -0x1.a64ca10bfefd2b04bb6a1bb708c28967p0,
+    0x1.507890p2
+  },
+  { // Entry 699
+    0x1.a64ca10bfefd2b04bb6a1bb708c28967p0,
+    -0x1.507890p2
+  },
+  { // Entry 700
+    -0x1.efd85821ec927f2a89ec41acee587230p-1,
+    0x1.60e258p2
+  },
+  { // Entry 701
+    0x1.efd85821ec927f2a89ec41acee587230p-1,
+    -0x1.60e258p2
+  },
+  { // Entry 702
+    -0x1.205a88aec64cad35d7752c73620c2139p-1,
+    0x1.714c20p2
+  },
+  { // Entry 703
+    0x1.205a88aec64cad35d7752c73620c2139p-1,
+    -0x1.714c20p2
+  },
+  { // Entry 704
+    -0x1.0c868e863543fd989476c8cdeffa93eap-2,
+    0x1.81b5e8p2
+  },
+  { // Entry 705
+    0x1.0c868e863543fd989476c8cdeffa93eap-2,
+    -0x1.81b5e8p2
+  },
+  { // Entry 706
+    0x1.f09b61a8a04f0898851f1d7604fa13c8p-5,
+    0x1.effffep-5
+  },
+  { // Entry 707
+    -0x1.f09b61a8a04f0898851f1d7604fa13c8p-5,
+    -0x1.effffep-5
+  },
+  { // Entry 708
+    0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
+    0x1.f0p-5
+  },
+  { // Entry 709
+    -0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
+    -0x1.f0p-5
+  },
+  { // Entry 710
+    0x1.f09b65ac63a9891f1418c4338c1e419ep-5,
+    0x1.f00002p-5
+  },
+  { // Entry 711
+    -0x1.f09b65ac63a9891f1418c4338c1e419ep-5,
+    -0x1.f00002p-5
+  },
+  { // Entry 712
+    0x1.fa8f1fc0ce86c214bf765fd59e8798a5p-4,
+    0x1.f7fffep-4
+  },
+  { // Entry 713
+    -0x1.fa8f1fc0ce86c214bf765fd59e8798a5p-4,
+    -0x1.f7fffep-4
+  },
+  { // Entry 714
+    0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
+    0x1.f8p-4
+  },
+  { // Entry 715
+    -0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
+    -0x1.f8p-4
+  },
+  { // Entry 716
+    0x1.fa8f23d077ef48645eff9a519628b3a9p-4,
+    0x1.f80002p-4
+  },
+  { // Entry 717
+    -0x1.fa8f23d077ef48645eff9a519628b3a9p-4,
+    -0x1.f80002p-4
+  },
+  { // Entry 718
+    0x1.4ef06aa73ee6a439c0c9f45046b25978p-3,
+    0x1.4bfffep-3
+  },
+  { // Entry 719
+    -0x1.4ef06aa73ee6a439c0c9f45046b25978p-3,
+    -0x1.4bfffep-3
+  },
+  { // Entry 720
+    0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
+    0x1.4cp-3
+  },
+  { // Entry 721
+    -0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
+    -0x1.4cp-3
+  },
+  { // Entry 722
+    0x1.4ef06ec2a26a7b7c1721ffafb93c0281p-3,
+    0x1.4c0002p-3
+  },
+  { // Entry 723
+    -0x1.4ef06ec2a26a7b7c1721ffafb93c0281p-3,
+    -0x1.4c0002p-3
+  },
+  { // Entry 724
+    0x1.3cc2a2fd911e1557d57b44abf28c4ccap-2,
+    0x1.333332p-2
+  },
+  { // Entry 725
+    -0x1.3cc2a2fd911e1557d57b44abf28c4ccap-2,
+    -0x1.333332p-2
+  },
+  { // Entry 726
+    0x1.3cc2a52e8f4137ca27d1dc0567195443p-2,
+    0x1.333334p-2
+  },
+  { // Entry 727
+    -0x1.3cc2a52e8f4137ca27d1dc0567195443p-2,
+    -0x1.333334p-2
+  },
+  { // Entry 728
+    0x1.3cc2a75f8d6507c589bf08e0371394bcp-2,
+    0x1.333336p-2
+  },
+  { // Entry 729
+    -0x1.3cc2a75f8d6507c589bf08e0371394bcp-2,
+    -0x1.333336p-2
+  },
+  { // Entry 730
+    0x1.99436e5f07b73dda1ef61a800aadfdd3p-1,
+    0x1.594316p-1
+  },
+  { // Entry 731
+    -0x1.99436e5f07b73dda1ef61a800aadfdd3p-1,
+    -0x1.594316p-1
+  },
+  { // Entry 732
+    0x1.994371a62bfe13eb1c755cb5be46f853p-1,
+    0x1.594318p-1
+  },
+  { // Entry 733
+    -0x1.994371a62bfe13eb1c755cb5be46f853p-1,
+    -0x1.594318p-1
+  },
+  { // Entry 734
+    0x1.994374ed504a278226573562b60eca9ap-1,
+    0x1.59431ap-1
+  },
+  { // Entry 735
+    -0x1.994374ed504a278226573562b60eca9ap-1,
+    -0x1.59431ap-1
+  },
+  { // Entry 736
+    0x1.fbc50de7c605a4d1d0f1119b1294b6f0p-1,
+    0x1.8ffffep-1
+  },
+  { // Entry 737
+    -0x1.fbc50de7c605a4d1d0f1119b1294b6f0p-1,
+    -0x1.8ffffep-1
+  },
+  { // Entry 738
+    0x1.fbc511df5917f539bbcf778bc1a22249p-1,
+    0x1.90p-1
+  },
+  { // Entry 739
+    -0x1.fbc511df5917f539bbcf778bc1a22249p-1,
+    -0x1.90p-1
+  },
+  { // Entry 740
+    0x1.fbc515d6ec3223ffbed4bb75154fda0fp-1,
+    0x1.900002p-1
+  },
+  { // Entry 741
+    -0x1.fbc515d6ec3223ffbed4bb75154fda0fp-1,
+    -0x1.900002p-1
+  },
+  { // Entry 742
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 743
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 744
+    0.0,
+    0.0
+  },
+  { // Entry 745
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 746
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 747
+    0x1.9272775ea5ecff4e43ecdef3d85ec226p-5,
+    0x1.921fb4p-5
+  },
+  { // Entry 748
+    -0x1.9272775ea5ecff4e43ecdef3d85ec226p-5,
+    -0x1.921fb4p-5
+  },
+  { // Entry 749
+    0x1.9272795fe242d9eb9393a7446620c394p-5,
+    0x1.921fb6p-5
+  },
+  { // Entry 750
+    -0x1.9272795fe242d9eb9393a7446620c394p-5,
+    -0x1.921fb6p-5
+  },
+  { // Entry 751
+    0x1.92727b611e98b7afb97977551d1c5f38p-5,
+    0x1.921fb8p-5
+  },
+  { // Entry 752
+    -0x1.92727b611e98b7afb97977551d1c5f38p-5,
+    -0x1.921fb8p-5
+  },
+  { // Entry 753
+    0x1.936bb77e4ac859bc69bc4abc9e91f025p-4,
+    0x1.921fb4p-4
+  },
+  { // Entry 754
+    -0x1.936bb77e4ac859bc69bc4abc9e91f025p-4,
+    -0x1.921fb4p-4
+  },
+  { // Entry 755
+    0x1.936bb9834241022ecd070b9064632721p-4,
+    0x1.921fb6p-4
+  },
+  { // Entry 756
+    -0x1.936bb9834241022ecd070b9064632721p-4,
+    -0x1.921fb6p-4
+  },
+  { // Entry 757
+    0x1.936bbb8839b9b75bdcc5f6870267a609p-4,
+    0x1.921fb8p-4
+  },
+  { // Entry 758
+    -0x1.936bbb8839b9b75bdcc5f6870267a609p-4,
+    -0x1.921fb8p-4
+  },
+  { // Entry 759
+    0x1.975f5cb43bd951aa2e89a05cbf5e70ffp-3,
+    0x1.921fb4p-3
+  },
+  { // Entry 760
+    -0x1.975f5cb43bd951aa2e89a05cbf5e70ffp-3,
+    -0x1.921fb4p-3
+  },
+  { // Entry 761
+    0x1.975f5ec87ddc4e7a357059f71a9f05b2p-3,
+    0x1.921fb6p-3
+  },
+  { // Entry 762
+    -0x1.975f5ec87ddc4e7a357059f71a9f05b2p-3,
+    -0x1.921fb6p-3
+  },
+  { // Entry 763
+    0x1.975f60dcbfdf8039f01eb7864bc09e13p-3,
+    0x1.921fb8p-3
+  },
+  { // Entry 764
+    -0x1.975f60dcbfdf8039f01eb7864bc09e13p-3,
+    -0x1.921fb8p-3
+  },
+  { // Entry 765
+    0x1.a8279823e9ba30ee623a5402a48590fcp-2,
+    0x1.921fb4p-2
+  },
+  { // Entry 766
+    -0x1.a8279823e9ba30ee623a5402a48590fcp-2,
+    -0x1.921fb4p-2
+  },
+  { // Entry 767
+    0x1.a8279a7bc2206fff3afa52f168c5f8f2p-2,
+    0x1.921fb6p-2
+  },
+  { // Entry 768
+    -0x1.a8279a7bc2206fff3afa52f168c5f8f2p-2,
+    -0x1.921fb6p-2
+  },
+  { // Entry 769
+    0x1.a8279cd39a87a786e140537db72ff334p-2,
+    0x1.921fb8p-2
+  },
+  { // Entry 770
+    -0x1.a8279cd39a87a786e140537db72ff334p-2,
+    -0x1.921fb8p-2
+  },
+  { // Entry 771
+    0x1.fffffd777a5e91e61f5380fb808d3272p-1,
+    0x1.921fb4p-1
+  },
+  { // Entry 772
+    -0x1.fffffd777a5e91e61f5380fb808d3272p-1,
+    -0x1.921fb4p-1
+  },
+  { // Entry 773
+    0x1.000000bbbd2ec06d6d6fff3655a346acp0,
+    0x1.921fb6p-1
+  },
+  { // Entry 774
+    -0x1.000000bbbd2ec06d6d6fff3655a346acp0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 775
+    0x1.000002bbbd3237e7d114276ed329af5bp0,
+    0x1.921fb8p-1
+  },
+  { // Entry 776
+    -0x1.000002bbbd3237e7d114276ed329af5bp0,
+    -0x1.921fb8p-1
+  },
+  { // Entry 777
+    0x1.9437b336b6b0c479b2280999b19575c7p23,
+    0x1.921fb4p0
+  },
+  { // Entry 778
+    -0x1.9437b336b6b0c479b2280999b19575c7p23,
+    -0x1.921fb4p0
+  },
+  { // Entry 779
+    -0x1.5d14946dc98975d6421a55284fe020a1p24,
+    0x1.921fb6p0
+  },
+  { // Entry 780
+    0x1.5d14946dc98975d6421a55284fe020a1p24,
+    -0x1.921fb6p0
+  },
+  { // Entry 781
+    -0x1.76a190eb2b0718d8db55f7d2abeb07d2p22,
+    0x1.921fb8p0
+  },
+  { // Entry 782
+    0x1.76a190eb2b0718d8db55f7d2abeb07d2p22,
+    -0x1.921fb8p0
+  },
+  { // Entry 783
+    -0x1.4442d184698c426c8e3efd356cbebe0ap-23,
+    0x1.921fb4p1
+  },
+  { // Entry 784
+    0x1.4442d184698c426c8e3efd356cbebe0ap-23,
+    -0x1.921fb4p1
+  },
+  { // Entry 785
+    0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
+    0x1.921fb6p1
+  },
+  { // Entry 786
+    -0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
+    -0x1.921fb6p1
+  },
+  { // Entry 787
+    0x1.5dde973dcb48d6e3d13cf2a51550e911p-22,
+    0x1.921fb8p1
+  },
+  { // Entry 788
+    -0x1.5dde973dcb48d6e3d13cf2a51550e911p-22,
+    -0x1.921fb8p1
+  },
+  { // Entry 789
+    -0x1.4442d18469946362f3f6cc7c43857661p-22,
+    0x1.921fb4p2
+  },
+  { // Entry 790
+    0x1.4442d18469946362f3f6cc7c43857661p-22,
+    -0x1.921fb4p2
+  },
+  { // Entry 791
+    0x1.777a5cf72cf11b739d2ab1877e81a9c7p-23,
+    0x1.921fb6p2
+  },
+  { // Entry 792
+    -0x1.777a5cf72cf11b739d2ab1877e81a9c7p-23,
+    -0x1.921fb6p2
+  },
+  { // Entry 793
+    0x1.5dde973dcb71aeb6e776668bbb3de253p-21,
+    0x1.921fb8p2
+  },
+  { // Entry 794
+    -0x1.5dde973dcb71aeb6e776668bbb3de253p-21,
+    -0x1.921fb8p2
+  },
+  { // Entry 795
+    -0x1.4442d18469b4e73c8ad60e7b9f288c5cp-21,
+    0x1.921fb4p3
+  },
+  { // Entry 796
+    0x1.4442d18469b4e73c8ad60e7b9f288c5cp-21,
+    -0x1.921fb4p3
+  },
+  { // Entry 797
+    0x1.777a5cf72cfdba6cfeb518258bcf263cp-22,
+    0x1.921fb6p3
+  },
+  { // Entry 798
+    -0x1.777a5cf72cfdba6cfeb518258bcf263cp-22,
+    -0x1.921fb6p3
+  },
+  { // Entry 799
+    0x1.5dde973dcc150e03405ca894886602c2p-20,
+    0x1.921fb8p3
+  },
+  { // Entry 800
+    -0x1.5dde973dcc150e03405ca894886602c2p-20,
+    -0x1.921fb8p3
+  },
+  { // Entry 801
+    -0x1.4442d1846a36f6a2e65364b916382e9bp-20,
+    0x1.921fb4p4
+  },
+  { // Entry 802
+    0x1.4442d1846a36f6a2e65364b916382e9bp-20,
+    -0x1.921fb4p4
+  },
+  { // Entry 803
+    0x1.777a5cf72d30365284debccc3aeeec17p-21,
+    0x1.921fb6p4
+  },
+  { // Entry 804
+    -0x1.777a5cf72d30365284debccc3aeeec17p-21,
+    -0x1.921fb6p4
+  },
+  { // Entry 805
+    0x1.5dde973dcea28b34a3fcd79b144a5050p-19,
+    0x1.921fb8p4
+  },
+  { // Entry 806
+    -0x1.5dde973dcea28b34a3fcd79b144a5050p-19,
+    -0x1.921fb8p4
+  },
+  { // Entry 807
+    -0x1.4442d1846c3f343c544da1af7aab690cp-19,
+    0x1.921fb4p5
+  },
+  { // Entry 808
+    0x1.4442d1846c3f343c544da1af7aab690cp-19,
+    -0x1.921fb4p5
+  },
+  { // Entry 809
+    0x1.777a5cf72dfa25e89d85f24e960b4455p-20,
+    0x1.921fb6p5
+  },
+  { // Entry 810
+    -0x1.777a5cf72dfa25e89d85f24e960b4455p-20,
+    -0x1.921fb6p5
+  },
+  { // Entry 811
+    0x1.5dde973dd8d87ffa32f001eab81d960cp-18,
+    0x1.921fb8p5
+  },
+  { // Entry 812
+    -0x1.5dde973dd8d87ffa32f001eab81d960cp-18,
+    -0x1.921fb8p5
+  },
+  { // Entry 813
+    -0x1.4442d18474602aa20c84d5918fc68a8ep-18,
+    0x1.921fb4p6
+  },
+  { // Entry 814
+    0x1.4442d18474602aa20c84d5918fc68a8ep-18,
+    -0x1.921fb4p6
+  },
+  { // Entry 815
+    0x1.777a5cf73121e441002cf6d1ec50d56dp-19,
+    0x1.921fb6p6
+  },
+  { // Entry 816
+    -0x1.777a5cf73121e441002cf6d1ec50d56dp-19,
+    -0x1.921fb6p6
+  },
+  { // Entry 817
+    0x1.5dde973e01b0531075e38e808ce048f2p-17,
+    0x1.921fb8p6
+  },
+  { // Entry 818
+    -0x1.5dde973e01b0531075e38e808ce048f2p-17,
+    -0x1.921fb8p6
+  },
+  { // Entry 819
+    -0x1.4442d18494e40438f245a5a219dea235p-17,
+    0x1.921fb4p7
+  },
+  { // Entry 820
+    0x1.4442d18494e40438f245a5a219dea235p-17,
+    -0x1.921fb4p7
+  },
+  { // Entry 821
+    0x1.777a5cf73dc0dda28b6bf07de2b2d5e6p-18,
+    0x1.921fb6p7
+  },
+  { // Entry 822
+    -0x1.777a5cf73dc0dda28b6bf07de2b2d5e6p-18,
+    -0x1.921fb6p7
+  },
+  { // Entry 823
+    0x1.5dde973ea50f9f69f41ff64c8c6db761p-16,
+    0x1.921fb8p7
+  },
+  { // Entry 824
+    -0x1.5dde973ea50f9f69f41ff64c8c6db761p-16,
+    -0x1.921fb8p7
+  },
+  { // Entry 825
+    -0x1.00000fccc8f15ee89f09d222e14c7292p0,
+    0x1.2d97c4p1
+  },
+  { // Entry 826
+    0x1.00000fccc8f15ee89f09d222e14c7292p0,
+    -0x1.2d97c4p1
+  },
+  { // Entry 827
+    -0x1.000007ccc892f8a0760cc20827ace476p0,
+    0x1.2d97c6p1
+  },
+  { // Entry 828
+    0x1.000007ccc892f8a0760cc20827ace476p0,
+    -0x1.2d97c6p1
+  },
+  { // Entry 829
+    -0x1.ffffff9990e924b866e831c9e9e639c7p-1,
+    0x1.2d97c8p1
+  },
+  { // Entry 830
+    0x1.ffffff9990e924b866e831c9e9e639c7p-1,
+    -0x1.2d97c8p1
+  },
+  { // Entry 831
+    0x1.ffffeb55643b9a648c2720bde1d22764p-1,
+    0x1.f6a7a0p1
+  },
+  { // Entry 832
+    -0x1.ffffeb55643b9a648c2720bde1d22764p-1,
+    -0x1.f6a7a0p1
+  },
+  { // Entry 833
+    0x1.fffffb5563d64585e9dcc97d74321461p-1,
+    0x1.f6a7a2p1
+  },
+  { // Entry 834
+    -0x1.fffffb5563d64585e9dcc97d74321461p-1,
+    -0x1.f6a7a2p1
+  },
+  { // Entry 835
+    0x1.000005aab1f87852792237652d34b1cep0,
+    0x1.f6a7a4p1
+  },
+  { // Entry 836
+    -0x1.000005aab1f87852792237652d34b1cep0,
+    -0x1.f6a7a4p1
+  },
+  { // Entry 837
+    0x1.033dd91c1035861ae455e0f8dc274b0dp20,
+    0x1.2d97c4p2
+  },
+  { // Entry 838
+    -0x1.033dd91c1035861ae455e0f8dc274b0dp20,
+    -0x1.2d97c4p2
+  },
+  { // Entry 839
+    0x1.0690fb4774ab80ccddc9ef5ad0fcc237p21,
+    0x1.2d97c6p2
+  },
+  { // Entry 840
+    -0x1.0690fb4774ab80ccddc9ef5ad0fcc237p21,
+    -0x1.2d97c6p2
+  },
+  { // Entry 841
+    -0x1.3fe4dac06d830837f6c584af6f8d9399p26,
+    0x1.2d97c8p2
+  },
+  { // Entry 842
+    0x1.3fe4dac06d830837f6c584af6f8d9399p26,
+    -0x1.2d97c8p2
+  },
+  { // Entry 843
+    -0x1.000014ddd4945394cb6ec7f87debc7a5p0,
+    0x1.5fdbbcp2
+  },
+  { // Entry 844
+    0x1.000014ddd4945394cb6ec7f87debc7a5p0,
+    -0x1.5fdbbcp2
+  },
+  { // Entry 845
+    -0x1.000004ddd3c6764d7369a0be61a630e7p0,
+    0x1.5fdbbep2
+  },
+  { // Entry 846
+    0x1.000004ddd3c6764d7369a0be61a630e7p0,
+    -0x1.5fdbbep2
+  },
+  { // Entry 847
+    -0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
+    0x1.5fdbc0p2
+  },
+  { // Entry 848
+    0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
+    -0x1.5fdbc0p2
+  },
+  { // Entry 849
+    0x1.ffffc133511ea2d3b988bf85316d4e05p-1,
+    0x1.c463a8p2
+  },
+  { // Entry 850
+    -0x1.ffffc133511ea2d3b988bf85316d4e05p-1,
+    -0x1.c463a8p2
+  },
+  { // Entry 851
+    0x1.ffffe1334e31d7ef20d6220c65dd2f9bp-1,
+    0x1.c463aap2
+  },
+  { // Entry 852
+    -0x1.ffffe1334e31d7ef20d6220c65dd2f9bp-1,
+    -0x1.c463aap2
+  },
+  { // Entry 853
+    0x1.00000099a6a286667761c2874c5890aep0,
+    0x1.c463acp2
+  },
+  { // Entry 854
+    -0x1.00000099a6a286667761c2874c5890aep0,
+    -0x1.c463acp2
+  },
+  { // Entry 855
+    0x1.8c642e8cc56a9b233450d6b635a6266dp20,
+    0x1.f6a7a0p2
+  },
+  { // Entry 856
+    -0x1.8c642e8cc56a9b233450d6b635a6266dp20,
+    -0x1.f6a7a0p2
+  },
+  { // Entry 857
+    0x1.b6e0bfb728e42363cd5fb26b31c366c2p22,
+    0x1.f6a7a2p2
+  },
+  { // Entry 858
+    -0x1.b6e0bfb728e42363cd5fb26b31c366c2p22,
+    -0x1.f6a7a2p2
+  },
+  { // Entry 859
+    -0x1.69679b966acc43dfdb28383aa976f5c1p21,
+    0x1.f6a7a4p2
+  },
+  { // Entry 860
+    0x1.69679b966acc43dfdb28383aa976f5c1p21,
+    -0x1.f6a7a4p2
+  },
+  { // Entry 861
+    -0x1.000029eee26fe211bb4a2f8e23a0a9e9p0,
+    0x1.1475cap3
+  },
+  { // Entry 862
+    0x1.000029eee26fe211bb4a2f8e23a0a9e9p0,
+    -0x1.1475cap3
+  },
+  { // Entry 863
+    -0x1.000009eedf3205d2e9b66a3783e02f05p0,
+    0x1.1475ccp3
+  },
+  { // Entry 864
+    0x1.000009eedf3205d2e9b66a3783e02f05p0,
+    -0x1.1475ccp3
+  },
+  { // Entry 865
+    -0x1.ffffd3ddbfe853c71e4a5f7502b09c4ep-1,
+    0x1.1475cep3
+  },
+  { // Entry 866
+    0x1.ffffd3ddbfe853c71e4a5f7502b09c4ep-1,
+    -0x1.1475cep3
+  },
+  { // Entry 867
+    -0x1.f9990e91aa24f550cef57fa4106c56ebp-20,
+    0x1.2d97c4p3
+  },
+  { // Entry 868
+    0x1.f9990e91aa24f550cef57fa4106c56ebp-20,
+    -0x1.2d97c4p3
+  },
+  { // Entry 869
+    -0x1.f3321d234fc557a61c638ef7752de43fp-21,
+    0x1.2d97c6p3
+  },
+  { // Entry 870
+    0x1.f3321d234fc557a61c638ef7752de43fp-21,
+    -0x1.2d97c6p3
+  },
+  { // Entry 871
+    0x1.99bc5b961b1ae363cfc0ffaab4f0e505p-26,
+    0x1.2d97c8p3
+  },
+  { // Entry 872
+    -0x1.99bc5b961b1ae363cfc0ffaab4f0e505p-26,
+    -0x1.2d97c8p3
+  },
+  { // Entry 873
+    0x1.ffff971141794461276f342bd29c5a1fp-1,
+    0x1.46b9c0p3
+  },
+  { // Entry 874
+    -0x1.ffff971141794461276f342bd29c5a1fp-1,
+    -0x1.46b9c0p3
+  },
+  { // Entry 875
+    0x1.ffffd711385b6c9a013dabe9b7254665p-1,
+    0x1.46b9c2p3
+  },
+  { // Entry 876
+    -0x1.ffffd711385b6c9a013dabe9b7254665p-1,
+    -0x1.46b9c2p3
+  },
+  { // Entry 877
+    0x1.00000b889b9ec9c5b277fb6a91cf5f49p0,
+    0x1.46b9c4p3
+  },
+  { // Entry 878
+    -0x1.00000b889b9ec9c5b277fb6a91cf5f49p0,
+    -0x1.46b9c4p3
+  },
+  { // Entry 879
+    0x1.88973cb02a0eea2cfe1a281ca7f04663p19,
+    0x1.5fdbbcp3
+  },
+  { // Entry 880
+    -0x1.88973cb02a0eea2cfe1a281ca7f04663p19,
+    -0x1.5fdbbcp3
+  },
+  { // Entry 881
+    0x1.a4d5d5d753841c89cfe71c25abc8d645p21,
+    0x1.5fdbbep3
+  },
+  { // Entry 882
+    -0x1.a4d5d5d753841c89cfe71c25abc8d645p21,
+    -0x1.5fdbbep3
+  },
+  { // Entry 883
+    -0x1.6fe62a1a9a12b70b1fbb952801f99801p20,
+    0x1.5fdbc0p3
+  },
+  { // Entry 884
+    0x1.6fe62a1a9a12b70b1fbb952801f99801p20,
+    -0x1.5fdbc0p3
+  },
+  { // Entry 885
+    -0x1.00003efff2073e1c0dd65d3b83e5e589p0,
+    0x1.78fdb6p3
+  },
+  { // Entry 886
+    0x1.00003efff2073e1c0dd65d3b83e5e589p0,
+    -0x1.78fdb6p3
+  },
+  { // Entry 887
+    -0x1.00001effec273fb46bb5ecfec53c3105p0,
+    0x1.78fdb8p3
+  },
+  { // Entry 888
+    0x1.00001effec273fb46bb5ecfec53c3105p0,
+    -0x1.78fdb8p3
+  },
+  { // Entry 889
+    -0x1.fffffdffd48e84899227cea1f77a1cf7p-1,
+    0x1.78fdbap3
+  },
+  { // Entry 890
+    0x1.fffffdffd48e84899227cea1f77a1cf7p-1,
+    -0x1.78fdbap3
+  },
+  { // Entry 891
+    0x1.ffffacef26e965d1253424fbbc9ff354p-1,
+    0x1.ab41aep3
+  },
+  { // Entry 892
+    -0x1.ffffacef26e965d1253424fbbc9ff354p-1,
+    -0x1.ab41aep3
+  },
+  { // Entry 893
+    0x1.ffffecef20874a8f035ac4dc1a6029f8p-1,
+    0x1.ab41b0p3
+  },
+  { // Entry 894
+    -0x1.ffffecef20874a8f035ac4dc1a6029f8p-1,
+    -0x1.ab41b0p3
+  },
+  { // Entry 895
+    0x1.000016779112975a2d4b9b75bd90b3c1p0,
+    0x1.ab41b2p3
+  },
+  { // Entry 896
+    -0x1.000016779112975a2d4b9b75bd90b3c1p0,
+    -0x1.ab41b2p3
+  },
+  { // Entry 897
+    0x1.04e4b40acdf9439feccd49bbeb37da0fp19,
+    0x1.c463a8p3
+  },
+  { // Entry 898
+    -0x1.04e4b40acdf9439feccd49bbeb37da0fp19,
+    -0x1.c463a8p3
+  },
+  { // Entry 899
+    0x1.09fa3ae1f4913d1b3764ff9a9678ef68p20,
+    0x1.c463aap3
+  },
+  { // Entry 900
+    -0x1.09fa3ae1f4913d1b3764ff9a9678ef68p20,
+    -0x1.c463aap3
+  },
+  { // Entry 901
+    -0x1.aa8679009203dd6e942f9175275a7461p24,
+    0x1.c463acp3
+  },
+  { // Entry 902
+    0x1.aa8679009203dd6e942f9175275a7461p24,
+    -0x1.c463acp3
+  },
+  { // Entry 903
+    -0x1.00003410fad846fd67d35e0c0d983628p0,
+    0x1.dd85a4p3
+  },
+  { // Entry 904
+    0x1.00003410fad846fd67d35e0c0d983628p0,
+    -0x1.dd85a4p3
+  },
+  { // Entry 905
+    -0x1.00001410f656279e89d14cf4054f6c56p0,
+    0x1.dd85a6p3
+  },
+  { // Entry 906
+    0x1.00001410f656279e89d14cf4054f6c56p0,
+    -0x1.dd85a6p3
+  },
+  { // Entry 907
+    -0x1.ffffe821eba811c067240f666c904371p-1,
+    0x1.dd85a8p3
+  },
+  { // Entry 908
+    0x1.ffffe821eba811c067240f666c904371p-1,
+    -0x1.dd85a8p3
+  },
+  { // Entry 909
+    -0x1.4aa9c2f2c2addb9b59e39401239761e2p-20,
+    0x1.f6a7a0p3
+  },
+  { // Entry 910
+    0x1.4aa9c2f2c2addb9b59e39401239761e2p-20,
+    -0x1.f6a7a0p3
+  },
+  { // Entry 911
+    -0x1.2aa70bcb07e057b729eacbc0cf17cbbfp-22,
+    0x1.f6a7a2p3
+  },
+  { // Entry 912
+    0x1.2aa70bcb07e057b729eacbc0cf17cbbfp-22,
+    -0x1.f6a7a2p3
+  },
+  { // Entry 913
+    0x1.6aac7a1a7c50b873bed39b6859bf2934p-21,
+    0x1.f6a7a4p3
+  },
+  { // Entry 914
+    -0x1.6aac7a1a7c50b873bed39b6859bf2934p-21,
+    -0x1.f6a7a4p3
+  },
+  { // Entry 915
+    0x1.ffff42cd2c95508e700ab76956dd04cfp-1,
+    0x1.07e4ccp4
+  },
+  { // Entry 916
+    -0x1.ffff42cd2c95508e700ab76956dd04cfp-1,
+    -0x1.07e4ccp4
+  },
+  { // Entry 917
+    0x1.ffffc2cd0d489b48844179c594356e0dp-1,
+    0x1.07e4cep4
+  },
+  { // Entry 918
+    -0x1.ffffc2cd0d489b48844179c594356e0dp-1,
+    -0x1.07e4cep4
+  },
+  { // Entry 919
+    0x1.0000216686fdef2e1dd31a2eaa6a1cd4p0,
+    0x1.07e4d0p4
+  },
+  { // Entry 920
+    -0x1.0000216686fdef2e1dd31a2eaa6a1cd4p0,
+    -0x1.07e4d0p4
+  },
+  { // Entry 921
+    0x1.86b7ba4923bcf157dcc33291871e88d4p18,
+    0x1.1475cap4
+  },
+  { // Entry 922
+    -0x1.86b7ba4923bcf157dcc33291871e88d4p18,
+    -0x1.1475cap4
+  },
+  { // Entry 923
+    0x1.9c5becf2873eed369afdc3159a7f797cp20,
+    0x1.1475ccp4
+  },
+  { // Entry 924
+    -0x1.9c5becf2873eed369afdc3159a7f797cp20,
+    -0x1.1475ccp4
+  },
+  { // Entry 925
+    -0x1.733c0d84332fa606d1bd207a491e4371p19,
+    0x1.1475cep4
+  },
+  { // Entry 926
+    0x1.733c0d84332fa606d1bd207a491e4371p19,
+    -0x1.1475cep4
+  },
+  { // Entry 927
+    -0x1.000049220b451bf6e8e605550c88602fp0,
+    0x1.2106c8p4
+  },
+  { // Entry 928
+    0x1.000049220b451bf6e8e605550c88602fp0,
+    -0x1.2106c8p4
+  },
+  { // Entry 929
+    -0x1.0000092200fc99c5dfa4fe18085cf7cdp0,
+    0x1.2106cap4
+  },
+  { // Entry 930
+    0x1.0000092200fc99c5dfa4fe18085cf7cdp0,
+    -0x1.2106cap4
+  },
+  { // Entry 931
+    -0x1.ffff92440d6831722dec0d31810d8fc7p-1,
+    0x1.2106ccp4
+  },
+  { // Entry 932
+    0x1.ffff92440d6831722dec0d31810d8fc7p-1,
+    -0x1.2106ccp4
+  },
+  { // Entry 933
+    -0x1.f9990e91b1d916e582242347112ba1d6p-19,
+    0x1.2d97c4p4
+  },
+  { // Entry 934
+    0x1.f9990e91b1d916e582242347112ba1d6p-19,
+    -0x1.2d97c4p4
+  },
+  { // Entry 935
+    -0x1.f3321d23519fe1dcfdcd2f1f762008a4p-20,
+    0x1.2d97c6p4
+  },
+  { // Entry 936
+    0x1.f3321d23519fe1dcfdcd2f1f762008a4p-20,
+    -0x1.2d97c6p4
+  },
+  { // Entry 937
+    0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
+    0x1.2d97c8p4
+  },
+  { // Entry 938
+    -0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
+    -0x1.2d97c8p4
+  },
+  { // Entry 939
+    0x1.ffff18ab2756ba0a20aaf4392b0a8019p-1,
+    0x1.3a28c2p4
+  },
+  { // Entry 940
+    -0x1.ffff18ab2756ba0a20aaf4392b0a8019p-1,
+    -0x1.3a28c2p4
+  },
+  { // Entry 941
+    0x1.ffff98aafd818525d24d664ef962ef14p-1,
+    0x1.3a28c4p4
+  },
+  { // Entry 942
+    -0x1.ffff98aafd818525d24d664ef962ef14p-1,
+    -0x1.3a28c4p4
+  },
+  { // Entry 943
+    0x1.00000c5579d621ab7334eff31d23cf2cp0,
+    0x1.3a28c6p4
+  },
+  { // Entry 944
+    -0x1.00000c5579d621ab7334eff31d23cf2cp0,
+    -0x1.3a28c6p4
+  },
+  { // Entry 945
+    0x1.3846b310de7c796adb3ea2ea22b108e2p18,
+    0x1.46b9c0p4
+  },
+  { // Entry 946
+    -0x1.3846b310de7c796adb3ea2ea22b108e2p18,
+    -0x1.46b9c0p4
+  },
+  { // Entry 947
+    0x1.904425fc92eab0abfe96aeeb6ffb2dc8p19,
+    0x1.46b9c2p4
+  },
+  { // Entry 948
+    -0x1.904425fc92eab0abfe96aeeb6ffb2dc8p19,
+    -0x1.46b9c2p4
+  },
+  { // Entry 949
+    -0x1.6322bacb22de6af00228d2ea4d6d2799p20,
+    0x1.46b9c4p4
+  },
+  { // Entry 950
+    0x1.6322bacb22de6af00228d2ea4d6d2799p20,
+    -0x1.46b9c4p4
+  },
+  { // Entry 951
+    -0x1.00005e331d6dbee9f9d431b49ea7b723p0,
+    0x1.534abep4
+  },
+  { // Entry 952
+    0x1.00005e331d6dbee9f9d431b49ea7b723p0,
+    -0x1.534abep4
+  },
+  { // Entry 953
+    -0x1.00001e330de0f7c734bc57a4c6650327p0,
+    0x1.534ac0p4
+  },
+  { // Entry 954
+    0x1.00001e330de0f7c734bc57a4c6650327p0,
+    -0x1.534ac0p4
+  },
+  { // Entry 955
+    -0x1.ffffbc661ca868d5a4418f0d1cd7c22fp-1,
+    0x1.534ac2p4
+  },
+  { // Entry 956
+    0x1.ffffbc661ca868d5a4418f0d1cd7c22fp-1,
+    -0x1.534ac2p4
+  },
+  { // Entry 957
+    -0x1.4ddd3ba9f1214deb40672397d6f191bcp-19,
+    0x1.5fdbbcp4
+  },
+  { // Entry 958
+    0x1.4ddd3ba9f1214deb40672397d6f191bcp-19,
+    -0x1.5fdbbcp4
+  },
+  { // Entry 959
+    -0x1.3774eea7b8d7214bc89b11532f82d323p-21,
+    0x1.5fdbbep4
+  },
+  { // Entry 960
+    0x1.3774eea7b8d7214bc89b11532f82d323p-21,
+    -0x1.5fdbbep4
+  },
+  { // Entry 961
+    0x1.644588ac248da6d01941121f50673b3fp-20,
+    0x1.5fdbc0p4
+  },
+  { // Entry 962
+    -0x1.644588ac248da6d01941121f50673b3fp-20,
+    -0x1.5fdbc0p4
+  },
+  { // Entry 963
+    0x1.ffff6e88f1320794d845e8e0fe1fd8bdp-1,
+    0x1.6c6cbap4
+  },
+  { // Entry 964
+    -0x1.ffff6e88f1320794d845e8e0fe1fd8bdp-1,
+    -0x1.6c6cbap4
+  },
+  { // Entry 965
+    0x1.ffffee88dcd4429f15c0e4a95b9ba0e6p-1,
+    0x1.6c6cbcp4
+  },
+  { // Entry 966
+    -0x1.ffffee88dcd4429f15c0e4a95b9ba0e6p-1,
+    -0x1.6c6cbcp4
+  },
+  { // Entry 967
+    0x1.00003744743b3dbd37dd053e702bd754p0,
+    0x1.6c6cbep4
+  },
+  { // Entry 968
+    -0x1.00003744743b3dbd37dd053e702bd754p0,
+    -0x1.6c6cbep4
+  },
+  { // Entry 969
+    0x1.04109ab0ec78f827ee95cea746b38c20p18,
+    0x1.78fdb6p4
+  },
+  { // Entry 970
+    -0x1.04109ab0ec78f827ee95cea746b38c20p18,
+    -0x1.78fdb6p4
+  },
+  { // Entry 971
+    0x1.0842c9b32d2125dbf5c20d70c46b17a5p19,
+    0x1.78fdb8p4
+  },
+  { // Entry 972
+    -0x1.0842c9b32d2125dbf5c20d70c46b17a5p19,
+    -0x1.78fdb8p4
+  },
+  { // Entry 973
+    -0x1.ffd49133e26a9c749966630dee813ddep23,
+    0x1.78fdbap4
+  },
+  { // Entry 974
+    0x1.ffd49133e26a9c749966630dee813ddep23,
+    -0x1.78fdbap4
+  },
+  { // Entry 975
+    -0x1.000073443152301fa59338eec29c3778p0,
+    0x1.858eb4p4
+  },
+  { // Entry 976
+    0x1.000073443152301fa59338eec29c3778p0,
+    -0x1.858eb4p4
+  },
+  { // Entry 977
+    -0x1.000033441c81232d3d9fc34bea81fb7cp0,
+    0x1.858eb6p4
+  },
+  { // Entry 978
+    0x1.000033441c81232d3d9fc34bea81fb7cp0,
+    -0x1.858eb6p4
+  },
+  { // Entry 979
+    -0x1.ffffe6882f603946b53b042361aec82cp-1,
+    0x1.858eb8p4
+  },
+  { // Entry 980
+    0x1.ffffe6882f603946b53b042361aec82cp-1,
+    -0x1.858eb8p4
+  },
+  { // Entry 981
+    -0x1.cb6cd4cb82a91dfc4af9a499a575e4a4p-3,
+    0x1.fffffep62
+  },
+  { // Entry 982
+    0x1.cb6cd4cb82a91dfc4af9a499a575e4a4p-3,
+    -0x1.fffffep62
+  },
+  { // Entry 983
+    0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
+    0x1.p63
+  },
+  { // Entry 984
+    -0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
+    -0x1.p63
+  },
+  { // Entry 985
+    -0x1.29cbd12821b399c9ee4f265da51881a8p1,
+    0x1.000002p63
+  },
+  { // Entry 986
+    0x1.29cbd12821b399c9ee4f265da51881a8p1,
+    -0x1.000002p63
+  },
+  { // Entry 987
+    0x1.3e4d9148d7086727da944e1c052b68afp-1,
+    0x1.fffffep26
+  },
+  { // Entry 988
+    -0x1.3e4d9148d7086727da944e1c052b68afp-1,
+    -0x1.fffffep26
+  },
+  { // Entry 989
+    -0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
+    0x1.p27
+  },
+  { // Entry 990
+    0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
+    -0x1.p27
+  },
+  { // Entry 991
+    -0x1.4ce9748e524f77ad85735c7f7d668cf1p-1,
+    0x1.000002p27
+  },
+  { // Entry 992
+    0x1.4ce9748e524f77ad85735c7f7d668cf1p-1,
+    -0x1.000002p27
+  },
+  { // Entry 993
+    0x1.7e3005d57ed93ae45b1bea3e3615bb67p1,
+    0x1.fffffep23
+  },
+  { // Entry 994
+    -0x1.7e3005d57ed93ae45b1bea3e3615bb67p1,
+    -0x1.fffffep23
+  },
+  { // Entry 995
+    -0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
+    0x1.p24
+  },
+  { // Entry 996
+    0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
+    -0x1.p24
+  },
+  { // Entry 997
+    0x1.fe929b4282105a160a9be2731df20a6cp0,
+    0x1.000002p24
+  },
+  { // Entry 998
+    -0x1.fe929b4282105a160a9be2731df20a6cp0,
+    -0x1.000002p24
+  },
+  { // Entry 999
+    0x1.2866f06194e0c2c7ee22ee9f8f9dcaeep0,
+    0x1.fffffep1
+  },
+  { // Entry 1000
+    -0x1.2866f06194e0c2c7ee22ee9f8f9dcaeep0,
+    -0x1.fffffep1
+  },
+  { // Entry 1001
+    0x1.2866f9be4de1370db9078607012cb07bp0,
+    0x1.p2
+  },
+  { // Entry 1002
+    -0x1.2866f9be4de1370db9078607012cb07bp0,
+    -0x1.p2
+  },
+  { // Entry 1003
+    0x1.28670c77c0e647138d4fc7181ef9b61fp0,
+    0x1.000002p2
+  },
+  { // Entry 1004
+    -0x1.28670c77c0e647138d4fc7181ef9b61fp0,
+    -0x1.000002p2
+  },
+  { // Entry 1005
+    -0x1.17af68a6d42f772bd249f5d692afa4e7p1,
+    0x1.fffffep0
+  },
+  { // Entry 1006
+    0x1.17af68a6d42f772bd249f5d692afa4e7p1,
+    -0x1.fffffep0
+  },
+  { // Entry 1007
+    -0x1.17af62e0950f83b5099087aaf67af9c1p1,
+    0x1.p1
+  },
+  { // Entry 1008
+    0x1.17af62e0950f83b5099087aaf67af9c1p1,
+    -0x1.p1
+  },
+  { // Entry 1009
+    -0x1.17af5754176705173cec89d01381f553p1,
+    0x1.000002p1
+  },
+  { // Entry 1010
+    0x1.17af5754176705173cec89d01381f553p1,
+    -0x1.000002p1
+  },
+  { // Entry 1011
+    0x1.8eb2425eff72860d56d61056db54ef67p0,
+    0x1.fffffep-1
+  },
+  { // Entry 1012
+    -0x1.8eb2425eff72860d56d61056db54ef67p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 1013
+    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    0x1.p0
+  },
+  { // Entry 1014
+    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    -0x1.p0
+  },
+  { // Entry 1015
+    0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
+    0x1.000002p0
+  },
+  { // Entry 1016
+    -0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
+    -0x1.000002p0
+  },
+  { // Entry 1017
+    0x1.17b4f472cd791aabfe4ea91afb5e79e7p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 1018
+    -0x1.17b4f472cd791aabfe4ea91afb5e79e7p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 1019
+    0x1.17b4f5bf3474a4317964807882444cc8p-1,
+    0x1.p-1
+  },
+  { // Entry 1020
+    -0x1.17b4f5bf3474a4317964807882444cc8p-1,
+    -0x1.p-1
+  },
+  { // Entry 1021
+    0x1.17b4f858026dd8033ed3d8d6d5350ca9p-1,
+    0x1.000002p-1
+  },
+  { // Entry 1022
+    -0x1.17b4f858026dd8033ed3d8d6d5350ca9p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 1023
+    0x1.0578593313db659cf3ab88a235218456p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 1024
+    -0x1.0578593313db659cf3ab88a235218456p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 1025
+    0x1.05785a43c4c55e63940188965c28bd0fp-2,
+    0x1.p-2
+  },
+  { // Entry 1026
+    -0x1.05785a43c4c55e63940188965c28bd0fp-2,
+    -0x1.p-2
+  },
+  { // Entry 1027
+    0x1.05785c652699b8628b7876b7bd83c0ccp-2,
+    0x1.000002p-2
+  },
+  { // Entry 1028
+    -0x1.05785c652699b8628b7876b7bd83c0ccp-2,
+    -0x1.000002p-2
+  },
+  { // Entry 1029
+    0x1.015779ed46574724b9025a4472a1ae0ap-3,
+    0x1.fffffep-4
+  },
+  { // Entry 1030
+    -0x1.015779ed46574724b9025a4472a1ae0ap-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 1031
+    0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
+    0x1.p-3
+  },
+  { // Entry 1032
+    -0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
+    -0x1.p-3
+  },
+  { // Entry 1033
+    0x1.01577cf966a0744553dd44a994f0bbd1p-3,
+    0x1.000002p-3
+  },
+  { // Entry 1034
+    -0x1.01577cf966a0744553dd44a994f0bbd1p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 1035
+    0x1.005576844d44fda0b80348bb17498aa1p-4,
+    0x1.fffffep-5
+  },
+  { // Entry 1036
+    -0x1.005576844d44fda0b80348bb17498aa1p-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 1037
+    0x1.005577854df0083293be639057b0c681p-4,
+    0x1.p-4
+  },
+  { // Entry 1038
+    -0x1.005577854df0083293be639057b0c681p-4,
+    -0x1.p-4
+  },
+  { // Entry 1039
+    0x1.005579874f46235e52082a4d0ddfc6e1p-4,
+    0x1.000002p-4
+  },
+  { // Entry 1040
+    -0x1.005579874f46235e52082a4d0ddfc6e1p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 1041
+    0x1.001556776eb5d98f82e1b5eab28c6b5fp-5,
+    0x1.fffffep-6
+  },
+  { // Entry 1042
+    -0x1.001556776eb5d98f82e1b5eab28c6b5fp-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 1043
+    0x1.00155777aec0857d22c97e809860288dp-5,
+    0x1.p-5
+  },
+  { // Entry 1044
+    -0x1.00155777aec0857d22c97e809860288dp-5,
+    -0x1.p-5
+  },
+  { // Entry 1045
+    0x1.001559782ed5ded8e2b4c819cb7c9f11p-5,
+    0x1.000002p-5
+  },
+  { // Entry 1046
+    -0x1.001559782ed5ded8e2b4c819cb7c9f11p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 1047
+    0x1.000554776853e041010da22a656f8267p-6,
+    0x1.fffffep-7
+  },
+  { // Entry 1048
+    -0x1.000554776853e041010da22a656f8267p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 1049
+    0x1.0005557778548ae1b5f60574706e8238p-6,
+    0x1.p-6
+  },
+  { // Entry 1050
+    -0x1.0005557778548ae1b5f60574706e8238p-6,
+    -0x1.p-6
+  },
+  { // Entry 1051
+    0x1.000557779855e08327c758e20d691dadp-6,
+    0x1.000002p-6
+  },
+  { // Entry 1052
+    -0x1.000557779855e08327c758e20d691dadp-6,
+    -0x1.000002p-6
+  },
+  { // Entry 1053
+    0x1.fffffe0aaaaa8aeeef0d9b53ad2f4823p-15,
+    0x1.fffffep-15
+  },
+  { // Entry 1054
+    -0x1.fffffe0aaaaa8aeeef0d9b53ad2f4823p-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 1055
+    0x1.00000005555555777777785485485a1ep-14,
+    0x1.p-14
+  },
+  { // Entry 1056
+    -0x1.00000005555555777777785485485a1ep-14,
+    -0x1.p-14
+  },
+  { // Entry 1057
+    0x1.000002055555757777b8cdaa0aa9c640p-14,
+    0x1.000002p-14
+  },
+  { // Entry 1058
+    -0x1.000002055555757777b8cdaa0aa9c640p-14,
+    -0x1.000002p-14
+  },
+  { // Entry 1059
+    0x1.fffffe00000002aaaaa2aaaab2aeeeecp-28,
+    0x1.fffffep-28
+  },
+  { // Entry 1060
+    -0x1.fffffe00000002aaaaa2aaaab2aeeeecp-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 1061
+    0x1.00000000000001555555555555577777p-27,
+    0x1.p-27
+  },
+  { // Entry 1062
+    -0x1.00000000000001555555555555577777p-27,
+    -0x1.p-27
+  },
+  { // Entry 1063
+    0x1.0000020000000155555d555565577782p-27,
+    0x1.000002p-27
+  },
+  { // Entry 1064
+    -0x1.0000020000000155555d555565577782p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 1065
+    0x1.fffffe000000000aaaaa8aaaaacaaaeep-31,
+    0x1.fffffep-31
+  },
+  { // Entry 1066
+    -0x1.fffffe000000000aaaaa8aaaaacaaaeep-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 1067
+    0x1.00000000000000055555555555555577p-30,
+    0x1.p-30
+  },
+  { // Entry 1068
+    -0x1.00000000000000055555555555555577p-30,
+    -0x1.p-30
+  },
+  { // Entry 1069
+    0x1.00000200000000055555755555955577p-30,
+    0x1.000002p-30
+  },
+  { // Entry 1070
+    -0x1.00000200000000055555755555955577p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 1071
+    0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1072
+    -0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1073
+    -0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1074
+    0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1075
+    -0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
+    0x1.fffffep127
+  },
+  { // Entry 1076
+    0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
+    -0x1.fffffep127
+  },
+  { // Entry 1077
+    0x1.acf315a87aa5da8654c844b917d14745p-1,
+    0x1.fffffcp127
+  },
+  { // Entry 1078
+    -0x1.acf315a87aa5da8654c844b917d14745p-1,
+    -0x1.fffffcp127
+  },
+  { // Entry 1079
+    0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
+    0x1.921fb6p1
+  },
+  { // Entry 1080
+    -0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
+    -0x1.921fb6p1
+  },
+  { // Entry 1081
+    -0x1.5d14946dc98975d6421a55284fe020a1p24,
+    0x1.921fb6p0
+  },
+  { // Entry 1082
+    0x1.5d14946dc98975d6421a55284fe020a1p24,
+    -0x1.921fb6p0
+  },
+  { // Entry 1083
+    0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
+    0x1.000002p0
+  },
+  { // Entry 1084
+    -0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
+    -0x1.000002p0
+  },
+  { // Entry 1085
+    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    0x1.p0
+  },
+  { // Entry 1086
+    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
+    -0x1.p0
+  },
+  { // Entry 1087
+    0x1.8eb2425eff72860d56d61056db54ef67p0,
+    0x1.fffffep-1
+  },
+  { // Entry 1088
+    -0x1.8eb2425eff72860d56d61056db54ef67p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 1089
+    0x1.000000bbbd2ec06d6d6fff3655a346acp0,
+    0x1.921fb6p-1
+  },
+  { // Entry 1090
+    -0x1.000000bbbd2ec06d6d6fff3655a346acp0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 1091
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 1092
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 1093
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1094
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1095
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1096
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1097
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 1098
+    -0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 1099
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 1100
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 1101
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1102
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1103
+    0.0,
+    0.0f
+  },
+  { // Entry 1104
+    -0.0,
+    -0.0f
+  },
+};
diff --git a/tests/math_data/tanh_intel_data.h b/tests/math_data/tanh_intel_data.h
new file mode 100644
index 0000000..2e433ca
--- /dev/null
+++ b/tests/math_data/tanh_intel_data.h
@@ -0,0 +1,2938 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_tanh_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p40
+  },
+  { // Entry 1
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p40
+  },
+  { // Entry 2
+    -0x1.fff5559997e1091212284e477e6b601bp-7,
+    -0x1.000000000000cp-6
+  },
+  { // Entry 3
+    0x1.fff5559997e1091212284e477e6b601bp-7,
+    0x1.000000000000cp-6
+  },
+  { // Entry 4
+    -0x1.fffffffffff4e7ff9444b603d6dd765cp-1,
+    -0x1.02020p4
+  },
+  { // Entry 5
+    0x1.fffffffffff4e7ff9444b603d6dd765cp-1,
+    0x1.02020p4
+  },
+  { // Entry 6
+    -0x1.fbae8ebca20d4c5880046e52256af91ep-3,
+    -0x1.033db279cac50p-2
+  },
+  { // Entry 7
+    0x1.fbae8ebca20d4c5880046e52256af91ep-3,
+    0x1.033db279cac50p-2
+  },
+  { // Entry 8
+    -0x1.ef865be1ef42880100008a5e4e4190c5p-1,
+    -0x1.0741ea37759d0p1
+  },
+  { // Entry 9
+    0x1.ef865be1ef42880100008a5e4e4190c5p-1,
+    0x1.0741ea37759d0p1
+  },
+  { // Entry 10
+    -0x1.fffffe4130884001624e28693fd77976p-1,
+    -0x1.17701b3bf0502p3
+  },
+  { // Entry 11
+    0x1.fffffe4130884001624e28693fd77976p-1,
+    0x1.17701b3bf0502p3
+  },
+  { // Entry 12
+    -0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    -0x1.5a6p0
+  },
+  { // Entry 13
+    0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    0x1.5a6p0
+  },
+  { // Entry 14
+    -0x1.4597c2c7089a5296d1b38cc8fc3b35b2p-1,
+    -0x1.80aa4dee35c52p-1
+  },
+  { // Entry 15
+    0x1.4597c2c7089a5296d1b38cc8fc3b35b2p-1,
+    0x1.80aa4dee35c52p-1
+  },
+  { // Entry 16
+    -0x1.8535183c81bec818a4482b6aa562704ap-4,
+    -0x1.86629b25ad139p-4
+  },
+  { // Entry 17
+    0x1.8535183c81bec818a4482b6aa562704ap-4,
+    0x1.86629b25ad139p-4
+  },
+  { // Entry 18
+    -0x1.49914b1c7a6a3040d7a1246b5c9a7223p-1,
+    -0x1.8765183af0bf8p-1
+  },
+  { // Entry 19
+    0x1.49914b1c7a6a3040d7a1246b5c9a7223p-1,
+    0x1.8765183af0bf8p-1
+  },
+  { // Entry 20
+    -0x1.9070fe4e6f41f7e2e1d3a8d017f0997ep-4,
+    -0x1.91b97a94248cep-4
+  },
+  { // Entry 21
+    0x1.9070fe4e6f41f7e2e1d3a8d017f0997ep-4,
+    0x1.91b97a94248cep-4
+  },
+  { // Entry 22
+    -0x1.53fca0a748a40b956f64ea48ae26ceb7p-1,
+    -0x1.999999999999ap-1
+  },
+  { // Entry 23
+    0x1.53fca0a748a40b956f64ea48ae26ceb7p-1,
+    0x1.999999999999ap-1
+  },
+  { // Entry 24
+    -0x1.afbec6429aad794d7f2a775b8759d621p-8,
+    -0x1.afc05f9bb3e19p-8
+  },
+  { // Entry 25
+    0x1.afbec6429aad794d7f2a775b8759d621p-8,
+    0x1.afc05f9bb3e19p-8
+  },
+  { // Entry 26
+    -0x1.ff142eecd1b15800cdeb0f526da78623p-1,
+    -0x1.c0cffc79a8e7ap1
+  },
+  { // Entry 27
+    0x1.ff142eecd1b15800cdeb0f526da78623p-1,
+    0x1.c0cffc79a8e7ap1
+  },
+  { // Entry 28
+    -0x1.69ee34427443cf9fe259a9bb2567fcc0p-1,
+    -0x1.c30c0608de324p-1
+  },
+  { // Entry 29
+    0x1.69ee34427443cf9fe259a9bb2567fcc0p-1,
+    0x1.c30c0608de324p-1
+  },
+  { // Entry 30
+    -0x1.78d4ef748dd52801170d542b2b0cb210p-1,
+    -0x1.e225b5b8fe514p-1
+  },
+  { // Entry 31
+    0x1.78d4ef748dd52801170d542b2b0cb210p-1,
+    0x1.e225b5b8fe514p-1
+  },
+  { // Entry 32
+    -0x1.ce716dc85f4f601568694f24eb23ca3cp-2,
+    -0x1.f2652ecbdc0f1p-2
+  },
+  { // Entry 33
+    0x1.ce716dc85f4f601568694f24eb23ca3cp-2,
+    0x1.f2652ecbdc0f1p-2
+  },
+  { // Entry 34
+    -0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    -0x1.ffffffff7ffffp-2
+  },
+  { // Entry 35
+    0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    0x1.ffffffff7ffffp-2
+  },
+  { // Entry 36
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep6
+  },
+  { // Entry 37
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep6
+  },
+  { // Entry 38
+    0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 39
+    -0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 40
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p40
+  },
+  { // Entry 41
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p40
+  },
+  { // Entry 42
+    0x1.d9353d7568afe67b37fb989f559be834p-2,
+    0x1.0000000000007p-1
+  },
+  { // Entry 43
+    -0x1.d9353d7568afe67b37fb989f559be834p-2,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 44
+    0x1.ffff5555999b9df5cab1d843ba27b16bp-9,
+    0x1.0000000000011p-8
+  },
+  { // Entry 45
+    -0x1.ffff5555999b9df5cab1d843ba27b16bp-9,
+    -0x1.0000000000011p-8
+  },
+  { // Entry 46
+    0x1.fff5559997e1e90412bd9e530b1bb1c8p-7,
+    0x1.0000000000013p-6
+  },
+  { // Entry 47
+    -0x1.fff5559997e1e90412bd9e530b1bb1c8p-7,
+    -0x1.0000000000013p-6
+  },
+  { // Entry 48
+    0x1.fd5992bc4b8938001f85b833d16495fap-4,
+    0x1.0000000000030p-3
+  },
+  { // Entry 49
+    -0x1.fd5992bc4b8938001f85b833d16495fap-4,
+    -0x1.0000000000030p-3
+  },
+  { // Entry 50
+    0x1.fff5559997f228001d929172a4eb85d4p-7,
+    0x1.0000000000095p-6
+  },
+  { // Entry 51
+    -0x1.fff5559997f228001d929172a4eb85d4p-7,
+    -0x1.0000000000095p-6
+  },
+  { // Entry 52
+    0x1.ed9505e1bc464849d749fc9de18202c2p-1,
+    0x1.00000000002p1
+  },
+  { // Entry 53
+    -0x1.ed9505e1bc464849d749fc9de18202c2p-1,
+    -0x1.00000000002p1
+  },
+  { // Entry 54
+    0x1.ff55997e035588295a0fea71abc3cb2ep-5,
+    0x1.0000000000243p-4
+  },
+  { // Entry 55
+    -0x1.ff55997e035588295a0fea71abc3cb2ep-5,
+    -0x1.0000000000243p-4
+  },
+  { // Entry 56
+    0x1.f597ea69a231a72e6af16bc1c1566108p-3,
+    0x1.0000000000380p-2
+  },
+  { // Entry 57
+    -0x1.f597ea69a231a72e6af16bc1c1566108p-3,
+    -0x1.0000000000380p-2
+  },
+  { // Entry 58
+    0x1.f597ea69a58af253fe597fddbebb43e2p-3,
+    0x1.00000000020p-2
+  },
+  { // Entry 59
+    -0x1.f597ea69a58af253fe597fddbebb43e2p-3,
+    -0x1.00000000020p-2
+  },
+  { // Entry 60
+    0x1.fffd55599de69fe673438a43e4e4e8f0p-8,
+    0x1.00000000022a0p-7
+  },
+  { // Entry 61
+    -0x1.fffd55599de69fe673438a43e4e4e8f0p-8,
+    -0x1.00000000022a0p-7
+  },
+  { // Entry 62
+    0x1.fffff872a91f87faf5806a50e5c4b91bp-1,
+    0x1.0000000002ff0p3
+  },
+  { // Entry 63
+    -0x1.fffff872a91f87faf5806a50e5c4b91bp-1,
+    -0x1.0000000002ff0p3
+  },
+  { // Entry 64
+    0x1.fffff872a91f87fb6e55d77442ed3d29p-1,
+    0x1.00000000030p3
+  },
+  { // Entry 65
+    -0x1.fffff872a91f87fb6e55d77442ed3d29p-1,
+    -0x1.00000000030p3
+  },
+  { // Entry 66
+    0x1.85efab5178d6d000016b608b6d73768fp-1,
+    0x1.00000000318b9p0
+  },
+  { // Entry 67
+    -0x1.85efab5178d6d000016b608b6d73768fp-1,
+    -0x1.00000000318b9p0
+  },
+  { // Entry 68
+    0x1.d9353d75bd3167fffe0ca38b641c896fp-2,
+    0x1.0000000035ba6p-1
+  },
+  { // Entry 69
+    -0x1.d9353d75bd3167fffe0ca38b641c896fp-2,
+    -0x1.0000000035ba6p-1
+  },
+  { // Entry 70
+    0x1.d9353d771617800000a9a580e469340ep-2,
+    0x1.0000000111012p-1
+  },
+  { // Entry 71
+    -0x1.d9353d771617800000a9a580e469340ep-2,
+    -0x1.0000000111012p-1
+  },
+  { // Entry 72
+    0x1.fd5992bf3fa307ce156b9614980779ecp-4,
+    0x1.000000018p-3
+  },
+  { // Entry 73
+    -0x1.fd5992bf3fa307ce156b9614980779ecp-4,
+    -0x1.000000018p-3
+  },
+  { // Entry 74
+    0x1.fff57197d7f21aad8cde741e0c0ad7fap-7,
+    0x1.00000e0p-6
+  },
+  { // Entry 75
+    -0x1.fff57197d7f21aad8cde741e0c0ad7fap-7,
+    -0x1.00000e0p-6
+  },
+  { // Entry 76
+    0x1.ff55b95e1854b7dec3a51ba27b39be8bp-5,
+    0x1.00001p-4
+  },
+  { // Entry 77
+    -0x1.ff55b95e1854b7dec3a51ba27b39be8bp-5,
+    -0x1.00001p-4
+  },
+  { // Entry 78
+    0x1.ff55ed7fe5192835b5778c9d03720c56p-5,
+    0x1.00002a2b0p-4
+  },
+  { // Entry 79
+    -0x1.ff55ed7fe5192835b5778c9d03720c56p-5,
+    -0x1.00002a2b0p-4
+  },
+  { // Entry 80
+    0x1.ffd9589953c32bc8da7c0ed0baa544b3p-6,
+    0x1.00020p-5
+  },
+  { // Entry 81
+    -0x1.ffd9589953c32bc8da7c0ed0baa544b3p-6,
+    -0x1.00020p-5
+  },
+  { // Entry 82
+    0x1.85fd1b1b96f55c651875290b2d7f494cp-1,
+    0x1.001p0
+  },
+  { // Entry 83
+    -0x1.85fd1b1b96f55c651875290b2d7f494cp-1,
+    -0x1.001p0
+  },
+  { // Entry 84
+    0x1.fdb8166cc3ed2817c1f59dbd8b23b2abp-4,
+    0x1.003p-3
+  },
+  { // Entry 85
+    -0x1.fdb8166cc3ed2817c1f59dbd8b23b2abp-4,
+    -0x1.003p-3
+  },
+  { // Entry 86
+    0x1.ffe8933bc5a6d7be8a7316e43ce9c6cdp-5,
+    0x1.0049c689802d0p-4
+  },
+  { // Entry 87
+    -0x1.ffe8933bc5a6d7be8a7316e43ce9c6cdp-5,
+    -0x1.0049c689802d0p-4
+  },
+  { // Entry 88
+    0x1.fa73af7a658375ff4348367f3830a567p-3,
+    0x1.0295fad40a580p-2
+  },
+  { // Entry 89
+    -0x1.fa73af7a658375ff4348367f3830a567p-3,
+    -0x1.0295fad40a580p-2
+  },
+  { // Entry 90
+    0x1.0624d77c51e6880001f9be17000b9cf1p-10,
+    0x1.0624dd3655b8ap-10
+  },
+  { // Entry 91
+    -0x1.0624d77c51e6880001f9be17000b9cf1p-10,
+    -0x1.0624dd3655b8ap-10
+  },
+  { // Entry 92
+    0x1.0624d79f9b19f7fffe0a9d21eca99d7cp-10,
+    0x1.0624dd599eee6p-10
+  },
+  { // Entry 93
+    -0x1.0624d79f9b19f7fffe0a9d21eca99d7cp-10,
+    -0x1.0624dd599eee6p-10
+  },
+  { // Entry 94
+    0x1.e429309abfffd2ddfd82de658136eba5p-2,
+    0x1.07020e041c084p-1
+  },
+  { // Entry 95
+    -0x1.e429309abfffd2ddfd82de658136eba5p-2,
+    -0x1.07020e041c084p-1
+  },
+  { // Entry 96
+    0x1.8c7f5c6b80f69a39323c4db93a0f72b0p-1,
+    0x1.080p0
+  },
+  { // Entry 97
+    -0x1.8c7f5c6b80f69a39323c4db93a0f72b0p-1,
+    -0x1.080p0
+  },
+  { // Entry 98
+    0x1.8d012ee7bd86f7ff002853771d7f8bf3p-1,
+    0x1.08a278c042d05p0
+  },
+  { // Entry 99
+    -0x1.8d012ee7bd86f7ff002853771d7f8bf3p-1,
+    -0x1.08a278c042d05p0
+  },
+  { // Entry 100
+    0x1.fffffe4130884001a9dd6277c63796bap-1,
+    0x1.17701b3bf052bp3
+  },
+  { // Entry 101
+    -0x1.fffffe4130884001a9dd6277c63796bap-1,
+    -0x1.17701b3bf052bp3
+  },
+  { // Entry 102
+    0x1.fdbcb70e1a79f7fae20bb105bc7b5a09p-2,
+    0x1.17bd082f7494ap-1
+  },
+  { // Entry 103
+    -0x1.fdbcb70e1a79f7fae20bb105bc7b5a09p-2,
+    -0x1.17bd082f7494ap-1
+  },
+  { // Entry 104
+    0x1.ff97efd9e06bae1b16cedbdb4a92304ep-2,
+    0x1.18f94c43e4254p-1
+  },
+  { // Entry 105
+    -0x1.ff97efd9e06bae1b16cedbdb4a92304ep-2,
+    -0x1.18f94c43e4254p-1
+  },
+  { // Entry 106
+    0x1.1abe341c3a920fff94d356d6f5ffbc8dp-7,
+    0x1.1acp-7
+  },
+  { // Entry 107
+    -0x1.1abe341c3a920fff94d356d6f5ffbc8dp-7,
+    -0x1.1acp-7
+  },
+  { // Entry 108
+    0x1.02e1e2b14b97c6a35cbdc397873184d2p-1,
+    0x1.1d1a3a347468fp-1
+  },
+  { // Entry 109
+    -0x1.02e1e2b14b97c6a35cbdc397873184d2p-1,
+    -0x1.1d1a3a347468fp-1
+  },
+  { // Entry 110
+    0x1.9d8d4198958f6f11c41090ab7e3accb0p-1,
+    0x1.1ed47ae8419b9p0
+  },
+  { // Entry 111
+    -0x1.9d8d4198958f6f11c41090ab7e3accb0p-1,
+    -0x1.1ed47ae8419b9p0
+  },
+  { // Entry 112
+    0x1.182d330b3abd2a2e07d69cfdde7a8e36p-2,
+    0x1.1f8p-2
+  },
+  { // Entry 113
+    -0x1.182d330b3abd2a2e07d69cfdde7a8e36p-2,
+    -0x1.1f8p-2
+  },
+  { // Entry 114
+    0x1.ffe0482ef94fe800fb76431a7260ec18p-1,
+    0x1.20a0ea0ea0f75p2
+  },
+  { // Entry 115
+    -0x1.ffe0482ef94fe800fb76431a7260ec18p-1,
+    -0x1.20a0ea0ea0f75p2
+  },
+  { // Entry 116
+    0x1.268f1d822590680082a05be831e4854ap-6,
+    0x1.26973dc7c5be6p-6
+  },
+  { // Entry 117
+    -0x1.268f1d822590680082a05be831e4854ap-6,
+    -0x1.26973dc7c5be6p-6
+  },
+  { // Entry 118
+    0x1.218ab0574162d800d421fdb840145675p-2,
+    0x1.29a69bd13ee87p-2
+  },
+  { // Entry 119
+    -0x1.218ab0574162d800d421fdb840145675p-2,
+    -0x1.29a69bd13ee87p-2
+  },
+  { // Entry 120
+    0x1.2a4dda7de0017fffffbc7994f1ba04a0p-2,
+    0x1.3333333389314p-2
+  },
+  { // Entry 121
+    -0x1.2a4dda7de0017fffffbc7994f1ba04a0p-2,
+    -0x1.3333333389314p-2
+  },
+  { // Entry 122
+    0x1.3588dea53e3e48000186808c28c507e0p-3,
+    0x1.37eca6a41e727p-3
+  },
+  { // Entry 123
+    -0x1.3588dea53e3e48000186808c28c507e0p-3,
+    -0x1.37eca6a41e727p-3
+  },
+  { // Entry 124
+    0x1.adc58b27626030403b9dea1c7eee05c0p-1,
+    0x1.3818fe847da14p0
+  },
+  { // Entry 125
+    -0x1.adc58b27626030403b9dea1c7eee05c0p-1,
+    -0x1.3818fe847da14p0
+  },
+  { // Entry 126
+    0x1.39e670f864e06800916b322435b7bc9ap-6,
+    0x1.39f046957a2f6p-6
+  },
+  { // Entry 127
+    -0x1.39e670f864e06800916b322435b7bc9ap-6,
+    -0x1.39f046957a2f6p-6
+  },
+  { // Entry 128
+    0x1.afb03526b454afc4fd8fbb37ba979691p-1,
+    0x1.3b6071d1f7484p0
+  },
+  { // Entry 129
+    -0x1.afb03526b454afc4fd8fbb37ba979691p-1,
+    -0x1.3b6071d1f7484p0
+  },
+  { // Entry 130
+    0x1.fff71a538fb237ffaecdafac07098ecdp-1,
+    0x1.494ee9ac8da60p2
+  },
+  { // Entry 131
+    -0x1.fff71a538fb237ffaecdafac07098ecdp-1,
+    -0x1.494ee9ac8da60p2
+  },
+  { // Entry 132
+    0x1.b8af4dc2536ea800f3619a37dabd112ep-1,
+    0x1.4bcc5e389c6a2p0
+  },
+  { // Entry 133
+    -0x1.b8af4dc2536ea800f3619a37dabd112ep-1,
+    -0x1.4bcc5e389c6a2p0
+  },
+  { // Entry 134
+    0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    0x1.5a6p0
+  },
+  { // Entry 135
+    -0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    -0x1.5a6p0
+  },
+  { // Entry 136
+    0x1.31e258b9d59417ff0172bc482ad0836bp-1,
+    0x1.60d71db63fc38p-1
+  },
+  { // Entry 137
+    -0x1.31e258b9d59417ff0172bc482ad0836bp-1,
+    -0x1.60d71db63fc38p-1
+  },
+  { // Entry 138
+    0x1.62fd595702658ff6ef9857182535c62fp-6,
+    0x1.630b92e7f0f77p-6
+  },
+  { // Entry 139
+    -0x1.62fd595702658ff6ef9857182535c62fp-6,
+    -0x1.630b92e7f0f77p-6
+  },
+  { // Entry 140
+    0x1.33ea141cebb6430c668ffce962626636p-1,
+    0x1.64024f4a3b070p-1
+  },
+  { // Entry 141
+    -0x1.33ea141cebb6430c668ffce962626636p-1,
+    -0x1.64024f4a3b070p-1
+  },
+  { // Entry 142
+    0x1.64c8407c232917fafcc3fa7256f65979p-13,
+    0x1.64c840b5e30aap-13
+  },
+  { // Entry 143
+    -0x1.64c8407c232917fafcc3fa7256f65979p-13,
+    -0x1.64c840b5e30aap-13
+  },
+  { // Entry 144
+    0x1.35061c5e8c503500e45460954fc60ba0p-1,
+    0x1.65c0300548991p-1
+  },
+  { // Entry 145
+    -0x1.35061c5e8c503500e45460954fc60ba0p-1,
+    -0x1.65c0300548991p-1
+  },
+  { // Entry 146
+    0x1.fc659d3ccb3ad0f406e5741895bf529bp-1,
+    0x1.695ab3124e6f3p1
+  },
+  { // Entry 147
+    -0x1.fc659d3ccb3ad0f406e5741895bf529bp-1,
+    -0x1.695ab3124e6f3p1
+  },
+  { // Entry 148
+    0x1.698e7945aa772812eb8246c066fe12cep-4,
+    0x1.6a8p-4
+  },
+  { // Entry 149
+    -0x1.698e7945aa772812eb8246c066fe12cep-4,
+    -0x1.6a8p-4
+  },
+  { // Entry 150
+    0x1.c9a96d9b25e257fef42254a09c5a8e89p-1,
+    0x1.70dc370dc370cp0
+  },
+  { // Entry 151
+    -0x1.c9a96d9b25e257fef42254a09c5a8e89p-1,
+    -0x1.70dc370dc370cp0
+  },
+  { // Entry 152
+    0x1.729b0b53891cd8029a198f346aded3c6p-5,
+    0x1.72dbd9697a31ap-5
+  },
+  { // Entry 153
+    -0x1.729b0b53891cd8029a198f346aded3c6p-5,
+    -0x1.72dbd9697a31ap-5
+  },
+  { // Entry 154
+    0x1.42dfc90ce7990801849a792e4b568e22p-1,
+    0x1.7c2055eedea83p-1
+  },
+  { // Entry 155
+    -0x1.42dfc90ce7990801849a792e4b568e22p-1,
+    -0x1.7c2055eedea83p-1
+  },
+  { // Entry 156
+    0x1.445fe311097e8b509753e0bbd4d8de8ap-1,
+    0x1.7eap-1
+  },
+  { // Entry 157
+    -0x1.445fe311097e8b509753e0bbd4d8de8ap-1,
+    -0x1.7eap-1
+  },
+  { // Entry 158
+    0x1.7e9dcb8e6272f7ff7aebf989fc716171p-6,
+    0x1.7eaf9b6ae4ee3p-6
+  },
+  { // Entry 159
+    -0x1.7e9dcb8e6272f7ff7aebf989fc716171p-6,
+    -0x1.7eaf9b6ae4ee3p-6
+  },
+  { // Entry 160
+    0x1.459f0dcdb1b2522b5637d303656306dep-1,
+    0x1.80b68cceb89c4p-1
+  },
+  { // Entry 161
+    -0x1.459f0dcdb1b2522b5637d303656306dep-1,
+    -0x1.80b68cceb89c4p-1
+  },
+  { // Entry 162
+    0x1.45b3111d091a910621ec7f399ccdb8c2p-1,
+    0x1.80d82924ec44dp-1
+  },
+  { // Entry 163
+    -0x1.45b3111d091a910621ec7f399ccdb8c2p-1,
+    -0x1.80d82924ec44dp-1
+  },
+  { // Entry 164
+    0x1.49009c6556eed1e5e07615b5b4c368ecp-1,
+    0x1.866e5ae84b0e8p-1
+  },
+  { // Entry 165
+    -0x1.49009c6556eed1e5e07615b5b4c368ecp-1,
+    -0x1.866e5ae84b0e8p-1
+  },
+  { // Entry 166
+    0x1.49a2006d9598d0564979f87ef81c5b1cp-1,
+    0x1.8781a092a0f52p-1
+  },
+  { // Entry 167
+    -0x1.49a2006d9598d0564979f87ef81c5b1cp-1,
+    -0x1.8781a092a0f52p-1
+  },
+  { // Entry 168
+    0x1.862c8470e675a07e123ea879f8baebb3p-3,
+    0x1.8b0p-3
+  },
+  { // Entry 169
+    -0x1.862c8470e675a07e123ea879f8baebb3p-3,
+    -0x1.8b0p-3
+  },
+  { // Entry 170
+    0x1.8f77d5d8932c9ff9095e8f77fddd070dp-6,
+    0x1.8f8c1b47ec114p-6
+  },
+  { // Entry 171
+    -0x1.8f77d5d8932c9ff9095e8f77fddd070dp-6,
+    -0x1.8f8c1b47ec114p-6
+  },
+  { // Entry 172
+    0x1.830e23e04e0347fe78663f1c44eb84fbp-2,
+    0x1.974p-2
+  },
+  { // Entry 173
+    -0x1.830e23e04e0347fe78663f1c44eb84fbp-2,
+    -0x1.974p-2
+  },
+  { // Entry 174
+    0x1.536c6d4bc8352db7986656026697f1a9p-1,
+    0x1.98980p-1
+  },
+  { // Entry 175
+    -0x1.536c6d4bc8352db7986656026697f1a9p-1,
+    -0x1.98980p-1
+  },
+  { // Entry 176
+    0x1.53ca8372b3cf0800c109372ef0258556p-1,
+    0x1.994p-1
+  },
+  { // Entry 177
+    -0x1.53ca8372b3cf0800c109372ef0258556p-1,
+    -0x1.994p-1
+  },
+  { // Entry 178
+    0x1.94022794ca0f90111cd01b7fcb8cf9b6p-3,
+    0x1.996p-3
+  },
+  { // Entry 179
+    -0x1.94022794ca0f90111cd01b7fcb8cf9b6p-3,
+    -0x1.996p-3
+  },
+  { // Entry 180
+    0x1.9439830b85ad100001b86875e3435678p-3,
+    0x1.99999999e7fb6p-3
+  },
+  { // Entry 181
+    -0x1.9439830b85ad100001b86875e3435678p-3,
+    -0x1.99999999e7fb6p-3
+  },
+  { // Entry 182
+    0x1.8511573d83e2980001dfb476af7fd902p-2,
+    0x1.9999999b34a5bp-2
+  },
+  { // Entry 183
+    -0x1.8511573d83e2980001dfb476af7fd902p-2,
+    -0x1.9999999b34a5bp-2
+  },
+  { // Entry 184
+    0x1.9439830d887d0800010c022856ad8045p-3,
+    0x1.9999999bffa9bp-3
+  },
+  { // Entry 185
+    -0x1.9439830d887d0800010c022856ad8045p-3,
+    -0x1.9999999bffa9bp-3
+  },
+  { // Entry 186
+    0x1.983d7799ce1f6ffffe2004e393d95329p-4,
+    0x1.9999999d7d8a2p-4
+  },
+  { // Entry 187
+    -0x1.983d7799ce1f6ffffe2004e393d95329p-4,
+    -0x1.9999999d7d8a2p-4
+  },
+  { // Entry 188
+    0x1.983d779b6c85f7fffe2905fb22397b60p-4,
+    0x1.9999999f20191p-4
+  },
+  { // Entry 189
+    -0x1.983d779b6c85f7fffe2905fb22397b60p-4,
+    -0x1.9999999f20191p-4
+  },
+  { // Entry 190
+    0x1.dcba660c6fece80d4553119effdd5c2ep-1,
+    0x1.aaaaaaaaaaaacp0
+  },
+  { // Entry 191
+    -0x1.dcba660c6fece80d4553119effdd5c2ep-1,
+    -0x1.aaaaaaaaaaaacp0
+  },
+  { // Entry 192
+    0x1.ad59b59465b065170605cbf13988832ap-7,
+    0x1.ad6p-7
+  },
+  { // Entry 193
+    -0x1.ad59b59465b065170605cbf13988832ap-7,
+    -0x1.ad6p-7
+  },
+  { // Entry 194
+    0x1.6010ea0ed51797ff8b6ca7fede1b8d31p-1,
+    0x1.afd7ebf5faf80p-1
+  },
+  { // Entry 195
+    -0x1.6010ea0ed51797ff8b6ca7fede1b8d31p-1,
+    -0x1.afd7ebf5faf80p-1
+  },
+  { // Entry 196
+    0x1.9b46310eb4e6d7fcfcd6e280870e9b65p-2,
+    0x1.b3cfa6c7643acp-2
+  },
+  { // Entry 197
+    -0x1.9b46310eb4e6d7fcfcd6e280870e9b65p-2,
+    -0x1.b3cfa6c7643acp-2
+  },
+  { // Entry 198
+    0x1.630edae8786c8eac4ae4fc2ca2fa0dbep-1,
+    0x1.b590150dcf8bfp-1
+  },
+  { // Entry 199
+    -0x1.630edae8786c8eac4ae4fc2ca2fa0dbep-1,
+    -0x1.b590150dcf8bfp-1
+  },
+  { // Entry 200
+    0x1.657a4f7f260d4f26d7f76db01c856ac3p-1,
+    0x1.ba4108b264c6ap-1
+  },
+  { // Entry 201
+    -0x1.657a4f7f260d4f26d7f76db01c856ac3p-1,
+    -0x1.ba4108b264c6ap-1
+  },
+  { // Entry 202
+    0x1.ba73ec4f0359a005d109ed3d8245363fp-6,
+    0x1.ba8f78449f0b8p-6
+  },
+  { // Entry 203
+    -0x1.ba73ec4f0359a005d109ed3d8245363fp-6,
+    -0x1.ba8f78449f0b8p-6
+  },
+  { // Entry 204
+    0x1.b42aa86fc0c0afc4c48569cd92293a6fp-3,
+    0x1.baf2501e20528p-3
+  },
+  { // Entry 205
+    -0x1.b42aa86fc0c0afc4c48569cd92293a6fp-3,
+    -0x1.baf2501e20528p-3
+  },
+  { // Entry 206
+    0x1.e0eb93e911bfd7ffc1cbb555f083546ap-1,
+    0x1.bb6766c1a2624p0
+  },
+  { // Entry 207
+    -0x1.e0eb93e911bfd7ffc1cbb555f083546ap-1,
+    -0x1.bb6766c1a2624p0
+  },
+  { // Entry 208
+    0x1.bc9c90043f5afff80b989f92cea4b087p-6,
+    0x1.bcb883bb4a1d2p-6
+  },
+  { // Entry 209
+    -0x1.bc9c90043f5afff80b989f92cea4b087p-6,
+    -0x1.bcb883bb4a1d2p-6
+  },
+  { // Entry 210
+    0x1.66de0bef230e8802075b728fcffdea9ep-1,
+    0x1.bcf9b5e552e46p-1
+  },
+  { // Entry 211
+    -0x1.66de0bef230e8802075b728fcffdea9ep-1,
+    -0x1.bcf9b5e552e46p-1
+  },
+  { // Entry 212
+    0x1.c761f75b6966c8015bc19070f6ab5006p-6,
+    0x1.c78p-6
+  },
+  { // Entry 213
+    -0x1.c761f75b6966c8015bc19070f6ab5006p-6,
+    -0x1.c78p-6
+  },
+  { // Entry 214
+    0x1.71421350a064b0b3b168c6e13a942da1p-1,
+    0x1.d20p-1
+  },
+  { // Entry 215
+    -0x1.71421350a064b0b3b168c6e13a942da1p-1,
+    -0x1.d20p-1
+  },
+  { // Entry 216
+    0x1.ca9adc00daadf21de2f8e2a3b667acc3p-3,
+    0x1.d2827155cd7f2p-3
+  },
+  { // Entry 217
+    -0x1.ca9adc00daadf21de2f8e2a3b667acc3p-3,
+    -0x1.d2827155cd7f2p-3
+  },
+  { // Entry 218
+    0x1.d3af0b409493d80f16690d417a020954p-5,
+    0x1.d4315fde0fd60p-5
+  },
+  { // Entry 219
+    -0x1.d3af0b409493d80f16690d417a020954p-5,
+    -0x1.d4315fde0fd60p-5
+  },
+  { // Entry 220
+    0x1.ff53ef909a53c7ff46ae6492b249f914p-1,
+    0x1.d50p1
+  },
+  { // Entry 221
+    -0x1.ff53ef909a53c7ff46ae6492b249f914p-1,
+    -0x1.d50p1
+  },
+  { // Entry 222
+    0x1.d4c6dbdd6204b7fdaefa65c2de6c3bc1p-5,
+    0x1.d54a1b43f2119p-5
+  },
+  { // Entry 223
+    -0x1.d4c6dbdd6204b7fdaefa65c2de6c3bc1p-5,
+    -0x1.d54a1b43f2119p-5
+  },
+  { // Entry 224
+    0x1.d60c056eebcb57ea94de726e86f49ee6p-4,
+    0x1.d82076d07e0cap-4
+  },
+  { // Entry 225
+    -0x1.d60c056eebcb57ea94de726e86f49ee6p-4,
+    -0x1.d82076d07e0cap-4
+  },
+  { // Entry 226
+    0x1.745a81f5485b0dad83d3ad761f034d17p-1,
+    0x1.d8829d48d5ccap-1
+  },
+  { // Entry 227
+    -0x1.745a81f5485b0dad83d3ad761f034d17p-1,
+    -0x1.d8829d48d5ccap-1
+  },
+  { // Entry 228
+    0x1.dab77f34d301c900e13d05b912fca596p-7,
+    0x1.dacp-7
+  },
+  { // Entry 229
+    -0x1.dab77f34d301c900e13d05b912fca596p-7,
+    -0x1.dacp-7
+  },
+  { // Entry 230
+    0x1.d59fb2c4927767ffaf038b5b533e17b8p-3,
+    0x1.de2p-3
+  },
+  { // Entry 231
+    -0x1.d59fb2c4927767ffaf038b5b533e17b8p-3,
+    -0x1.de2p-3
+  },
+  { // Entry 232
+    0x1.bebc593435695f3e5d9dfdce8ac65911p-2,
+    0x1.ded4e157ebb5ap-2
+  },
+  { // Entry 233
+    -0x1.bebc593435695f3e5d9dfdce8ac65911p-2,
+    -0x1.ded4e157ebb5ap-2
+  },
+  { // Entry 234
+    0x1.d7665cf9bb8287f53cfd2d51f28dbc87p-3,
+    0x1.ep-3
+  },
+  { // Entry 235
+    -0x1.d7665cf9bb8287f53cfd2d51f28dbc87p-3,
+    -0x1.ep-3
+  },
+  { // Entry 236
+    0x1.e1839a63361cd36a2077ec3be46fb31cp-6,
+    0x1.e1a71c88d42abp-6
+  },
+  { // Entry 237
+    -0x1.e1839a63361cd36a2077ec3be46fb31cp-6,
+    -0x1.e1a71c88d42abp-6
+  },
+  { // Entry 238
+    0x1.e94414bfb8b1c926487a611c3e9c82fep-1,
+    0x1.e48p0
+  },
+  { // Entry 239
+    -0x1.e94414bfb8b1c926487a611c3e9c82fep-1,
+    -0x1.e48p0
+  },
+  { // Entry 240
+    0x1.e47ecb0b519ed4c405e6925c6189b4d5p-6,
+    0x1.e4a2f72376d83p-6
+  },
+  { // Entry 241
+    -0x1.e47ecb0b519ed4c405e6925c6189b4d5p-6,
+    -0x1.e4a2f72376d83p-6
+  },
+  { // Entry 242
+    0x1.e94fc93631c7e9191f4973a0d807d78ap-1,
+    0x1.e4c377153ca9ap0
+  },
+  { // Entry 243
+    -0x1.e94fc93631c7e9191f4973a0d807d78ap-1,
+    -0x1.e4c377153ca9ap0
+  },
+  { // Entry 244
+    0x1.c4cc03a3d0c237fdcf5623b5615bbe1dp-2,
+    0x1.e6577536d43e7p-2
+  },
+  { // Entry 245
+    -0x1.c4cc03a3d0c237fdcf5623b5615bbe1dp-2,
+    -0x1.e6577536d43e7p-2
+  },
+  { // Entry 246
+    0x1.c6214d5944547e0b684eaf0557117675p-2,
+    0x1.e80p-2
+  },
+  { // Entry 247
+    -0x1.c6214d5944547e0b684eaf0557117675p-2,
+    -0x1.e80p-2
+  },
+  { // Entry 248
+    0x1.7cd8fa892ecf17fe5da6a217f1e8d441p-1,
+    0x1.eb05b226cd194p-1
+  },
+  { // Entry 249
+    -0x1.7cd8fa892ecf17fe5da6a217f1e8d441p-1,
+    -0x1.eb05b226cd194p-1
+  },
+  { // Entry 250
+    0x1.fb638c376c8fa8010dbbb805d349366ep-6,
+    0x1.fb8d188a84c37p-6
+  },
+  { // Entry 251
+    -0x1.fb638c376c8fa8010dbbb805d349366ep-6,
+    -0x1.fb8d188a84c37p-6
+  },
+  { // Entry 252
+    0x1.ed02211fde846895e3a231ab4b15fc07p-1,
+    0x1.fbfffffffffffp0
+  },
+  { // Entry 253
+    -0x1.ed02211fde846895e3a231ab4b15fc07p-1,
+    -0x1.fbfffffffffffp0
+  },
+  { // Entry 254
+    0x1.85558570498f17fd9281ca9c45bffb5ep-1,
+    0x1.fe91bd20c2fa7p-1
+  },
+  { // Entry 255
+    -0x1.85558570498f17fd9281ca9c45bffb5ep-1,
+    -0x1.fe91bd20c2fa7p-1
+  },
+  { // Entry 256
+    0x1.ff8f55c580d0ad705f464b9e36c04624p-9,
+    0x1.ff8ffffffffffp-9
+  },
+  { // Entry 257
+    -0x1.ff8f55c580d0ad705f464b9e36c04624p-9,
+    -0x1.ff8ffffffffffp-9
+  },
+  { // Entry 258
+    0x1.ffcf558594f9980987b40863efca6716p-9,
+    0x1.ffcffffffffffp-9
+  },
+  { // Entry 259
+    -0x1.ffcf558594f9980987b40863efca6716p-9,
+    -0x1.ffcffffffffffp-9
+  },
+  { // Entry 260
+    0x1.ffb5619756262b83f716223082574b9bp-6,
+    0x1.ffep-6
+  },
+  { // Entry 261
+    -0x1.ffb5619756262b83f716223082574b9bp-6,
+    -0x1.ffep-6
+  },
+  { // Entry 262
+    0x1.ffe14573a7c18e0b1e2b616408b023d0p-9,
+    0x1.ffe1effffffffp-9
+  },
+  { // Entry 263
+    -0x1.ffe14573a7c18e0b1e2b616408b023d0p-9,
+    -0x1.ffe1effffffffp-9
+  },
+  { // Entry 264
+    0x1.ffed559996e8080e35db4ddd5c5067b7p-8,
+    0x1.ffeffffffffffp-8
+  },
+  { // Entry 265
+    -0x1.ffed559996e8080e35db4ddd5c5067b7p-8,
+    -0x1.ffeffffffffffp-8
+  },
+  { // Entry 266
+    0x1.fd595b1bf5ffd7fd760222476204a3c8p-4,
+    0x1.ffffc77ffff47p-4
+  },
+  { // Entry 267
+    -0x1.fd595b1bf5ffd7fd760222476204a3c8p-4,
+    -0x1.ffffc77ffff47p-4
+  },
+  { // Entry 268
+    0x1.85efa37cbe334800fffc63002c8c03eep-1,
+    0x1.ffffed5aeedc7p-1
+  },
+  { // Entry 269
+    -0x1.85efa37cbe334800fffc63002c8c03eep-1,
+    -0x1.ffffed5aeedc7p-1
+  },
+  { // Entry 270
+    0x1.85efa9d9032e6ebb257c9dc7befcea9cp-1,
+    0x1.fffffc7ffffffp-1
+  },
+  { // Entry 271
+    -0x1.85efa9d9032e6ebb257c9dc7befcea9cp-1,
+    -0x1.fffffc7ffffffp-1
+  },
+  { // Entry 272
+    0x1.f597ea2d3c6b112fb996697ab9d730f8p-3,
+    0x1.ffffffbfbffffp-3
+  },
+  { // Entry 273
+    -0x1.f597ea2d3c6b112fb996697ab9d730f8p-3,
+    -0x1.ffffffbfbffffp-3
+  },
+  { // Entry 274
+    0x1.f597ea3c82e148049b81276747b22a43p-3,
+    0x1.ffffffcffffffp-3
+  },
+  { // Entry 275
+    -0x1.f597ea3c82e148049b81276747b22a43p-3,
+    -0x1.ffffffcffffffp-3
+  },
+  { // Entry 276
+    0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    0x1.ffffffff7ffffp-2
+  },
+  { // Entry 277
+    -0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    -0x1.ffffffff7ffffp-2
+  },
+  { // Entry 278
+    0x1.85efab514f10ed5614c26425b952b2a6p-1,
+    0x1.ffffffffff9ffp-1
+  },
+  { // Entry 279
+    -0x1.85efab514f10ed5614c26425b952b2a6p-1,
+    -0x1.ffffffffff9ffp-1
+  },
+  { // Entry 280
+    0x1.ffd559992af86be17634ba8180eb56e3p-6,
+    0x1.ffffffffffda8p-6
+  },
+  { // Entry 281
+    -0x1.ffd559992af86be17634ba8180eb56e3p-6,
+    -0x1.ffffffffffda8p-6
+  },
+  { // Entry 282
+    0x1.ff55997e02f5d7f9739cb079aec68ef1p-5,
+    0x1.ffffffffffe85p-5
+  },
+  { // Entry 283
+    -0x1.ff55997e02f5d7f9739cb079aec68ef1p-5,
+    -0x1.ffffffffffe85p-5
+  },
+  { // Entry 284
+    0x1.85efab514f38edfd97f9312bc98e2889p-1,
+    0x1.ffffffffffff3p-1
+  },
+  { // Entry 285
+    -0x1.85efab514f38edfd97f9312bc98e2889p-1,
+    -0x1.ffffffffffff3p-1
+  },
+  { // Entry 286
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep6
+  },
+  { // Entry 287
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep6
+  },
+  { // Entry 288
+    0.0,
+    0.0
+  },
+  { // Entry 289
+    0x1.1a5eeff27cc84e29675f038f1aba6042p-5,
+    0x1.1a7b9611a7b96p-5
+  },
+  { // Entry 290
+    -0x1.1a5eeff27cc84e29675f038f1aba6042p-5,
+    -0x1.1a7b9611a7b96p-5
+  },
+  { // Entry 291
+    0x1.1a09275c594348d69d3aa6bc5a6d3eacp-4,
+    0x1.1a7b9611a7b96p-4
+  },
+  { // Entry 292
+    -0x1.1a09275c594348d69d3aa6bc5a6d3eacp-4,
+    -0x1.1a7b9611a7b96p-4
+  },
+  { // Entry 293
+    0x1.a63815915c3db32a3543202f310ededbp-4,
+    0x1.a7b9611a7b961p-4
+  },
+  { // Entry 294
+    -0x1.a63815915c3db32a3543202f310ededbp-4,
+    -0x1.a7b9611a7b961p-4
+  },
+  { // Entry 295
+    0x1.18b472e84eb8a189e113a261ae412556p-3,
+    0x1.1a7b9611a7b96p-3
+  },
+  { // Entry 296
+    -0x1.18b472e84eb8a189e113a261ae412556p-3,
+    -0x1.1a7b9611a7b96p-3
+  },
+  { // Entry 297
+    0x1.5da54d60a7195c8adb545802f1bfc594p-3,
+    0x1.611a7b9611a7cp-3
+  },
+  { // Entry 298
+    -0x1.5da54d60a7195c8adb545802f1bfc594p-3,
+    -0x1.611a7b9611a7cp-3
+  },
+  { // Entry 299
+    0x1.a1c7a7122df5863ada1156ab3e6900a0p-3,
+    0x1.a7b9611a7b962p-3
+  },
+  { // Entry 300
+    -0x1.a1c7a7122df5863ada1156ab3e6900a0p-3,
+    -0x1.a7b9611a7b962p-3
+  },
+  { // Entry 301
+    0x1.e4f66c98ea9387f84c4b3ac494f670b7p-3,
+    0x1.ee58469ee5848p-3
+  },
+  { // Entry 302
+    -0x1.e4f66c98ea9387f84c4b3ac494f670b7p-3,
+    -0x1.ee58469ee5848p-3
+  },
+  { // Entry 303
+    0x1.13875ab3cead807903e1f1f3e8e5643ep-2,
+    0x1.1a7b9611a7b97p-2
+  },
+  { // Entry 304
+    -0x1.13875ab3cead807903e1f1f3e8e5643ep-2,
+    -0x1.1a7b9611a7b97p-2
+  },
+  { // Entry 305
+    0x1.33f8025638e0d966877007ff4292fc49p-2,
+    0x1.3dcb08d3dcb0ap-2
+  },
+  { // Entry 306
+    -0x1.33f8025638e0d966877007ff4292fc49p-2,
+    -0x1.3dcb08d3dcb0ap-2
+  },
+  { // Entry 307
+    0x1.53be3f9638299cc1042cd3014eb611a5p-2,
+    0x1.611a7b9611a7dp-2
+  },
+  { // Entry 308
+    -0x1.53be3f9638299cc1042cd3014eb611a5p-2,
+    -0x1.611a7b9611a7dp-2
+  },
+  { // Entry 309
+    0x1.72cc8acad74a0554ceab8f673d8fd9c1p-2,
+    0x1.8469ee58469f0p-2
+  },
+  { // Entry 310
+    -0x1.72cc8acad74a0554ceab8f673d8fd9c1p-2,
+    -0x1.8469ee58469f0p-2
+  },
+  { // Entry 311
+    0x1.9116d18d0f897a8cd0329175c1761056p-2,
+    0x1.a7b9611a7b963p-2
+  },
+  { // Entry 312
+    -0x1.9116d18d0f897a8cd0329175c1761056p-2,
+    -0x1.a7b9611a7b963p-2
+  },
+  { // Entry 313
+    0x1.ae92803956bf8fe7960fe047c58fe2cep-2,
+    0x1.cb08d3dcb08d6p-2
+  },
+  { // Entry 314
+    -0x1.ae92803956bf8fe7960fe047c58fe2cep-2,
+    -0x1.cb08d3dcb08d6p-2
+  },
+  { // Entry 315
+    0x1.cb3685d89f9d9f9f4ed38442b61bb2a8p-2,
+    0x1.ee58469ee5849p-2
+  },
+  { // Entry 316
+    -0x1.cb3685d89f9d9f9f4ed38442b61bb2a8p-2,
+    -0x1.ee58469ee5849p-2
+  },
+  { // Entry 317
+    0x1.e6fb52c30980e5f495d12b6477845637p-2,
+    0x1.08d3dcb08d3dep-1
+  },
+  { // Entry 318
+    -0x1.e6fb52c30980e5f495d12b6477845637p-2,
+    -0x1.08d3dcb08d3dep-1
+  },
+  { // Entry 319
+    0x1.00ed69341225491fa94ea8dd2d1c04adp-1,
+    0x1.1a7b9611a7b97p-1
+  },
+  { // Entry 320
+    -0x1.00ed69341225491fa94ea8dd2d1c04adp-1,
+    -0x1.1a7b9611a7b97p-1
+  },
+  { // Entry 321
+    0x1.0de8305e4cc3d5001e5239e63b8dbed5p-1,
+    0x1.2c234f72c2350p-1
+  },
+  { // Entry 322
+    -0x1.0de8305e4cc3d5001e5239e63b8dbed5p-1,
+    -0x1.2c234f72c2350p-1
+  },
+  { // Entry 323
+    0x1.1a6c5ded8f162aadbb0149b498cb1b24p-1,
+    0x1.3dcb08d3dcb09p-1
+  },
+  { // Entry 324
+    -0x1.1a6c5ded8f162aadbb0149b498cb1b24p-1,
+    -0x1.3dcb08d3dcb09p-1
+  },
+  { // Entry 325
+    0x1.2678f93777439d5d9ad904ba063ecb5ep-1,
+    0x1.4f72c234f72c2p-1
+  },
+  { // Entry 326
+    -0x1.2678f93777439d5d9ad904ba063ecb5ep-1,
+    -0x1.4f72c234f72c2p-1
+  },
+  { // Entry 327
+    0x1.320da7c091ef4552ae755c643a3b4933p-1,
+    0x1.611a7b9611a7bp-1
+  },
+  { // Entry 328
+    -0x1.320da7c091ef4552ae755c643a3b4933p-1,
+    -0x1.611a7b9611a7bp-1
+  },
+  { // Entry 329
+    0x1.3d2aa22040bdd68238402204b98c4e93p-1,
+    0x1.72c234f72c234p-1
+  },
+  { // Entry 330
+    -0x1.3d2aa22040bdd68238402204b98c4e93p-1,
+    -0x1.72c234f72c234p-1
+  },
+  { // Entry 331
+    0x1.47d0a82acb4267d301a5dffb3c9a40b2p-1,
+    0x1.8469ee58469edp-1
+  },
+  { // Entry 332
+    -0x1.47d0a82acb4267d301a5dffb3c9a40b2p-1,
+    -0x1.8469ee58469edp-1
+  },
+  { // Entry 333
+    0x1.5200f4a602b2eebb2c2d9b4d031da2b3p-1,
+    0x1.9611a7b9611a6p-1
+  },
+  { // Entry 334
+    -0x1.5200f4a602b2eebb2c2d9b4d031da2b3p-1,
+    -0x1.9611a7b9611a6p-1
+  },
+  { // Entry 335
+    0x1.5bbd30c7183021dd4ae1af94efeb7351p-1,
+    0x1.a7b9611a7b95fp-1
+  },
+  { // Entry 336
+    -0x1.5bbd30c7183021dd4ae1af94efeb7351p-1,
+    -0x1.a7b9611a7b95fp-1
+  },
+  { // Entry 337
+    0x1.650767b19bab5c9a85115d59c1bbbbecp-1,
+    0x1.b9611a7b96118p-1
+  },
+  { // Entry 338
+    -0x1.650767b19bab5c9a85115d59c1bbbbecp-1,
+    -0x1.b9611a7b96118p-1
+  },
+  { // Entry 339
+    0x1.6de1fa2868b7da01452d1e472d0223d9p-1,
+    0x1.cb08d3dcb08d1p-1
+  },
+  { // Entry 340
+    -0x1.6de1fa2868b7da01452d1e472d0223d9p-1,
+    -0x1.cb08d3dcb08d1p-1
+  },
+  { // Entry 341
+    0x1.764f9299df20114d026ebd244b4e904ap-1,
+    0x1.dcb08d3dcb08ap-1
+  },
+  { // Entry 342
+    -0x1.764f9299df20114d026ebd244b4e904ap-1,
+    -0x1.dcb08d3dcb08ap-1
+  },
+  { // Entry 343
+    0x1.7e5319a96b6639eb0ade7fa028ee0d3bp-1,
+    0x1.ee58469ee5843p-1
+  },
+  { // Entry 344
+    -0x1.7e5319a96b6639eb0ade7fa028ee0d3bp-1,
+    -0x1.ee58469ee5843p-1
+  },
+  { // Entry 345
+    0x1.85efab514f392a77871c49877ccdbfbep-1,
+    0x1.ffffffffffffcp-1
+  },
+  { // Entry 346
+    -0x1.85efab514f392a77871c49877ccdbfbep-1,
+    -0x1.ffffffffffffcp-1
+  },
+  { // Entry 347
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p100
+  },
+  { // Entry 348
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p100
+  },
+  { // Entry 349
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d79435e50d79p100
+  },
+  { // Entry 350
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d79435e50d79p100
+  },
+  { // Entry 351
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af286bca1af2p100
+  },
+  { // Entry 352
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af286bca1af2p100
+  },
+  { // Entry 353
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bca1af286bp100
+  },
+  { // Entry 354
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bca1af286bp100
+  },
+  { // Entry 355
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e50d79435e4p100
+  },
+  { // Entry 356
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e50d79435e4p100
+  },
+  { // Entry 357
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e50d79435dp100
+  },
+  { // Entry 358
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e50d79435dp100
+  },
+  { // Entry 359
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d79435e50d6p100
+  },
+  { // Entry 360
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d79435e50d6p100
+  },
+  { // Entry 361
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50d79435e4fp100
+  },
+  { // Entry 362
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50d79435e4fp100
+  },
+  { // Entry 363
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca1af286bc8p100
+  },
+  { // Entry 364
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca1af286bc8p100
+  },
+  { // Entry 365
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.79435e50d7941p100
+  },
+  { // Entry 366
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.79435e50d7941p100
+  },
+  { // Entry 367
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca1af286bap100
+  },
+  { // Entry 368
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca1af286bap100
+  },
+  { // Entry 369
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435e50d79433p100
+  },
+  { // Entry 370
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435e50d79433p100
+  },
+  { // Entry 371
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af286bca1acp100
+  },
+  { // Entry 372
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af286bca1acp100
+  },
+  { // Entry 373
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af286bca1af25p100
+  },
+  { // Entry 374
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af286bca1af25p100
+  },
+  { // Entry 375
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1af286bc9ep100
+  },
+  { // Entry 376
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1af286bc9ep100
+  },
+  { // Entry 377
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1af286bca17p100
+  },
+  { // Entry 378
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1af286bca17p100
+  },
+  { // Entry 379
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79435e50d790p100
+  },
+  { // Entry 380
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79435e50d790p100
+  },
+  { // Entry 381
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d79435e509p100
+  },
+  { // Entry 382
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d79435e509p100
+  },
+  { // Entry 383
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286bca1af282p100
+  },
+  { // Entry 384
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286bca1af282p100
+  },
+  { // Entry 385
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffbp100
+  },
+  { // Entry 386
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffbp100
+  },
+  { // Entry 387
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p200
+  },
+  { // Entry 388
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p200
+  },
+  { // Entry 389
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d79435e50d79p200
+  },
+  { // Entry 390
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d79435e50d79p200
+  },
+  { // Entry 391
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af286bca1af2p200
+  },
+  { // Entry 392
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af286bca1af2p200
+  },
+  { // Entry 393
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bca1af286bp200
+  },
+  { // Entry 394
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bca1af286bp200
+  },
+  { // Entry 395
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e50d79435e4p200
+  },
+  { // Entry 396
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e50d79435e4p200
+  },
+  { // Entry 397
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e50d79435dp200
+  },
+  { // Entry 398
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e50d79435dp200
+  },
+  { // Entry 399
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d79435e50d6p200
+  },
+  { // Entry 400
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d79435e50d6p200
+  },
+  { // Entry 401
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50d79435e4fp200
+  },
+  { // Entry 402
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50d79435e4fp200
+  },
+  { // Entry 403
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca1af286bc8p200
+  },
+  { // Entry 404
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca1af286bc8p200
+  },
+  { // Entry 405
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.79435e50d7941p200
+  },
+  { // Entry 406
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.79435e50d7941p200
+  },
+  { // Entry 407
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca1af286bap200
+  },
+  { // Entry 408
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca1af286bap200
+  },
+  { // Entry 409
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435e50d79433p200
+  },
+  { // Entry 410
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435e50d79433p200
+  },
+  { // Entry 411
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af286bca1acp200
+  },
+  { // Entry 412
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af286bca1acp200
+  },
+  { // Entry 413
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af286bca1af25p200
+  },
+  { // Entry 414
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af286bca1af25p200
+  },
+  { // Entry 415
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1af286bc9ep200
+  },
+  { // Entry 416
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1af286bc9ep200
+  },
+  { // Entry 417
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1af286bca17p200
+  },
+  { // Entry 418
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1af286bca17p200
+  },
+  { // Entry 419
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79435e50d790p200
+  },
+  { // Entry 420
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79435e50d790p200
+  },
+  { // Entry 421
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d79435e509p200
+  },
+  { // Entry 422
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d79435e509p200
+  },
+  { // Entry 423
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286bca1af282p200
+  },
+  { // Entry 424
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286bca1af282p200
+  },
+  { // Entry 425
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffbp200
+  },
+  { // Entry 426
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffbp200
+  },
+  { // Entry 427
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p1000
+  },
+  { // Entry 428
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p1000
+  },
+  { // Entry 429
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d79435e50d79p1000
+  },
+  { // Entry 430
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d79435e50d79p1000
+  },
+  { // Entry 431
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af286bca1af2p1000
+  },
+  { // Entry 432
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af286bca1af2p1000
+  },
+  { // Entry 433
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bca1af286bp1000
+  },
+  { // Entry 434
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bca1af286bp1000
+  },
+  { // Entry 435
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e50d79435e4p1000
+  },
+  { // Entry 436
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e50d79435e4p1000
+  },
+  { // Entry 437
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e50d79435dp1000
+  },
+  { // Entry 438
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e50d79435dp1000
+  },
+  { // Entry 439
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d79435e50d6p1000
+  },
+  { // Entry 440
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d79435e50d6p1000
+  },
+  { // Entry 441
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50d79435e4fp1000
+  },
+  { // Entry 442
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50d79435e4fp1000
+  },
+  { // Entry 443
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca1af286bc8p1000
+  },
+  { // Entry 444
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca1af286bc8p1000
+  },
+  { // Entry 445
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.79435e50d7941p1000
+  },
+  { // Entry 446
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.79435e50d7941p1000
+  },
+  { // Entry 447
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca1af286bap1000
+  },
+  { // Entry 448
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca1af286bap1000
+  },
+  { // Entry 449
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435e50d79433p1000
+  },
+  { // Entry 450
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435e50d79433p1000
+  },
+  { // Entry 451
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af286bca1acp1000
+  },
+  { // Entry 452
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af286bca1acp1000
+  },
+  { // Entry 453
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af286bca1af25p1000
+  },
+  { // Entry 454
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af286bca1af25p1000
+  },
+  { // Entry 455
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1af286bc9ep1000
+  },
+  { // Entry 456
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1af286bc9ep1000
+  },
+  { // Entry 457
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1af286bca17p1000
+  },
+  { // Entry 458
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1af286bca17p1000
+  },
+  { // Entry 459
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79435e50d790p1000
+  },
+  { // Entry 460
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79435e50d790p1000
+  },
+  { // Entry 461
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d79435e509p1000
+  },
+  { // Entry 462
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d79435e509p1000
+  },
+  { // Entry 463
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286bca1af282p1000
+  },
+  { // Entry 464
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286bca1af282p1000
+  },
+  { // Entry 465
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffbp1000
+  },
+  { // Entry 466
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffbp1000
+  },
+  { // Entry 467
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 468
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 469
+    -0.0,
+    -0.0
+  },
+  { // Entry 470
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 471
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 472
+    0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 473
+    -0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 474
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.0p-1
+  },
+  { // Entry 475
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.0p-1
+  },
+  { // Entry 476
+    0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 477
+    -0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 478
+    0x1.ffffffffffffd9ce09d9ac0077339fccp-2,
+    0x1.193ea7aad0309p-1
+  },
+  { // Entry 479
+    -0x1.ffffffffffffd9ce09d9ac0077339fccp-2,
+    -0x1.193ea7aad0309p-1
+  },
+  { // Entry 480
+    0x1.fffffffffffff1ce09d9ac0078052f7dp-2,
+    0x1.193ea7aad030ap-1
+  },
+  { // Entry 481
+    -0x1.fffffffffffff1ce09d9ac0078052f7dp-2,
+    -0x1.193ea7aad030ap-1
+  },
+  { // Entry 482
+    0x1.00000000000004e704ecd6003c0b5f97p-1,
+    0x1.193ea7aad030bp-1
+  },
+  { // Entry 483
+    -0x1.00000000000004e704ecd6003c0b5f97p-1,
+    -0x1.193ea7aad030bp-1
+  },
+  { // Entry 484
+    0x1.fffffffffffffffa422f887a2db9896bp-1,
+    0x1.5ffffffffffffp4
+  },
+  { // Entry 485
+    -0x1.fffffffffffffffa422f887a2db9896bp-1,
+    -0x1.5ffffffffffffp4
+  },
+  { // Entry 486
+    0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    0x1.6p4
+  },
+  { // Entry 487
+    -0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    -0x1.6p4
+  },
+  { // Entry 488
+    0x1.fffffffffffffffa422f887a2dd080adp-1,
+    0x1.6000000000001p4
+  },
+  { // Entry 489
+    -0x1.fffffffffffffffa422f887a2dd080adp-1,
+    -0x1.6000000000001p4
+  },
+  { // Entry 490
+    -0x1.3333333333333b4d120fbdf5bd629059p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 491
+    0x1.3333333333333b4d120fbdf5bd629059p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 492
+    -0x1.333333333333310fa16be6eb800e8ac1p-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 493
+    0x1.333333333333310fa16be6eb800e8ac1p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 494
+    -0x1.33333333333326d230c80fe142583755p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 495
+    0x1.33333333333326d230c80fe142583755p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 496
+    -0x1.5555555555556095b587a4471560a40bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 497
+    0x1.5555555555556095b587a4471560a40bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 498
+    -0x1.555555555555525cd1f96b638732caf9p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 499
+    0x1.555555555555525cd1f96b638732caf9p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 500
+    -0x1.5555555555554423ee6b327ff8df04ddp-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 501
+    0x1.5555555555554423ee6b327ff8df04ddp-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 502
+    -0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 503
+    0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 504
+    -0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 505
+    0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 506
+    -0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 507
+    0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 508
+    -0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 509
+    0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 510
+    -0x1.620185e5621404e51abfd52a9fb35582p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 511
+    0x1.620185e5621404e51abfd52a9fb35582p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 512
+    -0x1.620185e56213f503b3433a35f0d66857p-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 513
+    0x1.620185e56213f503b3433a35f0d66857p-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 514
+    -0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 515
+    0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 516
+    -0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 517
+    0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 518
+    -0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 519
+    0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 520
+    -0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 521
+    0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 522
+    -0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 523
+    0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 524
+    -0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 525
+    0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 526
+    0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 527
+    -0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 528
+    0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 529
+    -0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 530
+    0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 531
+    -0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 532
+    0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 533
+    -0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 534
+    0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 535
+    -0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 536
+    0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 537
+    -0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 538
+    0x1.620185e56213f503b3433a35f0d66857p-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 539
+    -0x1.620185e56213f503b3433a35f0d66857p-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 540
+    0x1.620185e5621404e51abfd52a9fb35582p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 541
+    -0x1.620185e5621404e51abfd52a9fb35582p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 542
+    0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 543
+    -0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 544
+    0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 545
+    -0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 546
+    0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 547
+    -0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 548
+    0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 549
+    -0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 550
+    0x1.5555555555554423ee6b327ff8df04ddp-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 551
+    -0x1.5555555555554423ee6b327ff8df04ddp-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 552
+    0x1.555555555555525cd1f96b638732caf9p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 553
+    -0x1.555555555555525cd1f96b638732caf9p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 554
+    0x1.5555555555556095b587a4471560a40bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 555
+    -0x1.5555555555556095b587a4471560a40bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 556
+    0x1.33333333333326d230c80fe142583755p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 557
+    -0x1.33333333333326d230c80fe142583755p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 558
+    0x1.333333333333310fa16be6eb800e8ac1p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 559
+    -0x1.333333333333310fa16be6eb800e8ac1p-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 560
+    0x1.3333333333333b4d120fbdf5bd629059p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 561
+    -0x1.3333333333333b4d120fbdf5bd629059p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 562
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39eep9
+  },
+  { // Entry 563
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39eep9
+  },
+  { // Entry 564
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 565
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39efp9
+  },
+  { // Entry 566
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 567
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39f0p9
+  },
+  { // Entry 568
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39f0p9
+  },
+  { // Entry 569
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.72e42fefa39f0p9
+  },
+  { // Entry 570
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39efp9
+  },
+  { // Entry 571
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.72e42fefa39efp9
+  },
+  { // Entry 572
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39eep9
+  },
+  { // Entry 573
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.72e42fefa39eep9
+  },
+  { // Entry 574
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 575
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 576
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 577
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 578
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 579
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 580
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39f0p9
+  },
+  { // Entry 581
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 582
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39efp9
+  },
+  { // Entry 583
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 584
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39eep9
+  },
+  { // Entry 585
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39eep9
+  },
+  { // Entry 586
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 587
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 588
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p63
+  },
+  { // Entry 589
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p63
+  },
+  { // Entry 590
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p63
+  },
+  { // Entry 591
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p63
+  },
+  { // Entry 592
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 593
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 594
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p27
+  },
+  { // Entry 595
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p27
+  },
+  { // Entry 596
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p27
+  },
+  { // Entry 597
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p27
+  },
+  { // Entry 598
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 599
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 600
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p24
+  },
+  { // Entry 601
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p24
+  },
+  { // Entry 602
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p24
+  },
+  { // Entry 603
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p24
+  },
+  { // Entry 604
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 605
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 606
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.0p5
+  },
+  { // Entry 607
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.0p5
+  },
+  { // Entry 608
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.0000000000001p5
+  },
+  { // Entry 609
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.0000000000001p5
+  },
+  { // Entry 610
+    0x1.fffffffffff1bdcd844f4df082619d92p-1,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 611
+    -0x1.fffffffffff1bdcd844f4df082619d92p-1,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 612
+    0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    0x1.0p4
+  },
+  { // Entry 613
+    -0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    -0x1.0p4
+  },
+  { // Entry 614
+    0x1.fffffffffff1bdcd844f4e1b48f910a4p-1,
+    0x1.0000000000001p4
+  },
+  { // Entry 615
+    -0x1.fffffffffff1bdcd844f4e1b48f910a4p-1,
+    -0x1.0000000000001p4
+  },
+  { // Entry 616
+    0x1.fffff872a91f8690ea47c1d1bd107d6ep-1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 617
+    -0x1.fffff872a91f8690ea47c1d1bd107d6ep-1,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 618
+    0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    0x1.0p3
+  },
+  { // Entry 619
+    -0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    -0x1.0p3
+  },
+  { // Entry 620
+    0x1.fffff872a91f8690f59bc40d0febacbdp-1,
+    0x1.0000000000001p3
+  },
+  { // Entry 621
+    -0x1.fffff872a91f8690f59bc40d0febacbdp-1,
+    -0x1.0000000000001p3
+  },
+  { // Entry 622
+    0x1.ffa81708a0b421525ec9970925cd4155p-1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 623
+    -0x1.ffa81708a0b421525ec9970925cd4155p-1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 624
+    0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    0x1.0p2
+  },
+  { // Entry 625
+    -0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    -0x1.0p2
+  },
+  { // Entry 626
+    0x1.ffa81708a0b4219447da163b49770c0ep-1,
+    0x1.0000000000001p2
+  },
+  { // Entry 627
+    -0x1.ffa81708a0b4219447da163b49770c0ep-1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 628
+    0x1.ed9505e1bc3d3af0feae367ddede350ep-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 629
+    -0x1.ed9505e1bc3d3af0feae367ddede350ep-1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 630
+    0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    0x1.0p1
+  },
+  { // Entry 631
+    -0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    -0x1.0p1
+  },
+  { // Entry 632
+    0x1.ed9505e1bc3d41b94f3c87bfc873b4a6p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 633
+    -0x1.ed9505e1bc3d41b94f3c87bfc873b4a6p-1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 634
+    0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 635
+    -0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 636
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.0p0
+  },
+  { // Entry 637
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.0p0
+  },
+  { // Entry 638
+    0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 639
+    -0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 640
+    0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 641
+    -0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 642
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.0p-1
+  },
+  { // Entry 643
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.0p-1
+  },
+  { // Entry 644
+    0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 645
+    -0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 646
+    0x1.f597ea69a1c850090bd4877911ae9956p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 647
+    -0x1.f597ea69a1c850090bd4877911ae9956p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 648
+    0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    0x1.0p-2
+  },
+  { // Entry 649
+    -0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    -0x1.0p-2
+  },
+  { // Entry 650
+    0x1.f597ea69a1c87d27f2dc499b344c1b8cp-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 651
+    -0x1.f597ea69a1c87d27f2dc499b344c1b8cp-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 652
+    0x1.fd5992bc4b834000063fd671ecd5ebeep-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 653
+    -0x1.fd5992bc4b834000063fd671ecd5ebeep-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 654
+    0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    0x1.0p-3
+  },
+  { // Entry 655
+    -0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    -0x1.0p-3
+  },
+  { // Entry 656
+    0x1.fd5992bc4b836f4201c0adec0dd0980dp-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 657
+    -0x1.fd5992bc4b836f4201c0adec0dd0980dp-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 658
+    0x1.ff55997e030d60692ab487c7d22013f6p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 659
+    -0x1.ff55997e030d60692ab487c7d22013f6p-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 660
+    0x1.ff55997e030d705935592a366a8a66d4p-5,
+    0x1.0p-4
+  },
+  { // Entry 661
+    -0x1.ff55997e030d705935592a366a8a66d4p-5,
+    -0x1.0p-4
+  },
+  { // Entry 662
+    0x1.ff55997e030d90394aa26f139b5c108ep-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 663
+    -0x1.ff55997e030d90394aa26f139b5c108ep-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 664
+    0x1.ffd559992b1dd287055184b7d46402dap-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 665
+    -0x1.ffd559992b1dd287055184b7d46402dap-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 666
+    0x1.ffd559992b1de28305fc17382205392ep-6,
+    0x1.0p-5
+  },
+  { // Entry 667
+    -0x1.ffd559992b1de28305fc17382205392ep-6,
+    -0x1.0p-5
+  },
+  { // Entry 668
+    0x1.ffd559992b1e027b07513c38bd46e616p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 669
+    -0x1.ffd559992b1e027b07513c38bd46e616p-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 670
+    0x1.fff5559997df792b111dad0e4c36a1efp-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 671
+    -0x1.fff5559997df792b111dad0e4c36a1efp-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 672
+    0x1.fff5559997df892a1128575843fc0d52p-7,
+    0x1.0p-6
+  },
+  { // Entry 673
+    -0x1.fff5559997df892a1128575843fc0d52p-7,
+    -0x1.0p-6
+  },
+  { // Entry 674
+    0x1.fff5559997dfa928113dabec3386b41bp-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 675
+    -0x1.fff5559997dfa928113dabec3386b41bp-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 676
+    0x1.fffffff555554599999a97df7ded4005p-15,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 677
+    -0x1.fffffff555554599999a97df7ded4005p-15,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 678
+    0x1.fffffff555555599999997df7df7eab0p-15,
+    0x1.0p-14
+  },
+  { // Entry 679
+    -0x1.fffffff555555599999997df7df7eab0p-15,
+    -0x1.0p-14
+  },
+  { // Entry 680
+    0x1.fffffff555557599999797df7e0d4005p-15,
+    0x1.0000000000001p-14
+  },
+  { // Entry 681
+    -0x1.fffffff555557599999797df7e0d4005p-15,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 682
+    0x1.ffffffffffffeff55555555555565599p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 683
+    -0x1.ffffffffffffeff55555555555565599p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 684
+    0x1.fffffffffffffff55555555555555599p-31,
+    0x1.0p-30
+  },
+  { // Entry 685
+    -0x1.fffffffffffffff55555555555555599p-31,
+    -0x1.0p-30
+  },
+  { // Entry 686
+    0x1.0000000000000ffaaaaaaaaaaaa9aaccp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 687
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaccp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 688
+    0x1.ffffffffffffeffffffffffffffd5555p-56,
+    0x1.fffffffffffffp-56
+  },
+  { // Entry 689
+    -0x1.ffffffffffffeffffffffffffffd5555p-56,
+    -0x1.fffffffffffffp-56
+  },
+  { // Entry 690
+    0x1.fffffffffffffffffffffffffffd5555p-56,
+    0x1.0p-55
+  },
+  { // Entry 691
+    -0x1.fffffffffffffffffffffffffffd5555p-56,
+    -0x1.0p-55
+  },
+  { // Entry 692
+    0x1.0000000000000ffffffffffffffeaaaap-55,
+    0x1.0000000000001p-55
+  },
+  { // Entry 693
+    -0x1.0000000000000ffffffffffffffeaaaap-55,
+    -0x1.0000000000001p-55
+  },
+  { // Entry 694
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 695
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 696
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 697
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 698
+    0x1.p0,
+    HUGE_VAL
+  },
+  { // Entry 699
+    -0x1.p0,
+    -HUGE_VAL
+  },
+  { // Entry 700
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 701
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 702
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 703
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 704
+    0x1.fe175fa29280faada6e2c93ea708789ep-1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 705
+    -0x1.fe175fa29280faada6e2c93ea708789ep-1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 706
+    0x1.d594fdae482b98a703d473d9a8cd44cdp-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 707
+    -0x1.d594fdae482b98a703d473d9a8cd44cdp-1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 708
+    0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 709
+    -0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 710
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.0p0
+  },
+  { // Entry 711
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.0p0
+  },
+  { // Entry 712
+    0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 713
+    -0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 714
+    0x1.4fc441fa6d6d6195ca63f8eb92d312a4p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 715
+    -0x1.4fc441fa6d6d6195ca63f8eb92d312a4p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 716
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 717
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 718
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 719
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 720
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 721
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 722
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 723
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 724
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 725
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 726
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 727
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 728
+    0.0,
+    0.0
+  },
+  { // Entry 729
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/tanhf_intel_data.h b/tests/math_data/tanhf_intel_data.h
new file mode 100644
index 0000000..be1cd9f
--- /dev/null
+++ b/tests/math_data/tanhf_intel_data.h
@@ -0,0 +1,2274 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_tanhf_intel_data[] = {
+  { // Entry 0
+    -0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    -0x1.0000c0p-4
+  },
+  { // Entry 1
+    0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    0x1.0000c0p-4
+  },
+  { // Entry 2
+    -0x1.fffffc0001871106009b5aaf55c49116p-1,
+    -0x1.0a2b2ap3
+  },
+  { // Entry 3
+    0x1.fffffc0001871106009b5aaf55c49116p-1,
+    0x1.0a2b2ap3
+  },
+  { // Entry 4
+    -0x1.f2c4e0c5399bd4c3248a88570584900dp-2,
+    -0x1.107fa4p-1
+  },
+  { // Entry 5
+    0x1.f2c4e0c5399bd4c3248a88570584900dp-2,
+    0x1.107fa4p-1
+  },
+  { // Entry 6
+    -0x1.968428ffd872ecb6c9fd8e70df8a8bfep-1,
+    -0x1.150498p0
+  },
+  { // Entry 7
+    0x1.968428ffd872ecb6c9fd8e70df8a8bfep-1,
+    0x1.150498p0
+  },
+  { // Entry 8
+    -0x1.fffffdfd7b7e46383ce8fadc5f8ea7eap-1,
+    -0x1.152e2ep3
+  },
+  { // Entry 9
+    0x1.fffffdfd7b7e46383ce8fadc5f8ea7eap-1,
+    0x1.152e2ep3
+  },
+  { // Entry 10
+    -0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    -0x1.1908p-4
+  },
+  { // Entry 11
+    0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    0x1.1908p-4
+  },
+  { // Entry 12
+    -0x1.fffffef20b998e5904f90043100cd5d3p-1,
+    -0x1.1f80p3
+  },
+  { // Entry 13
+    0x1.fffffef20b998e5904f90043100cd5d3p-1,
+    0x1.1f80p3
+  },
+  { // Entry 14
+    -0x1.fff9f601c71a50ea8042b6e535d99676p-1,
+    -0x1.55b54ep2
+  },
+  { // Entry 15
+    0x1.fff9f601c71a50ea8042b6e535d99676p-1,
+    0x1.55b54ep2
+  },
+  { // Entry 16
+    -0x1.35fec061664b9cf1b7b1484307f84259p-1,
+    -0x1.674804p-1
+  },
+  { // Entry 17
+    0x1.35fec061664b9cf1b7b1484307f84259p-1,
+    0x1.674804p-1
+  },
+  { // Entry 18
+    -0x1.8d9b1b0128196f89d9531df123a40ff4p-11,
+    -0x1.8d9b20p-11
+  },
+  { // Entry 19
+    0x1.8d9b1b0128196f89d9531df123a40ff4p-11,
+    0x1.8d9b20p-11
+  },
+  { // Entry 20
+    -0x1.e3b21701a09ce46bedfb3f6e4f5f9a30p-11,
+    -0x1.e3b220p-11
+  },
+  { // Entry 21
+    0x1.e3b21701a09ce46bedfb3f6e4f5f9a30p-11,
+    0x1.e3b220p-11
+  },
+  { // Entry 22
+    -0x1.fb070301e5b46bfdaf1d2a7bd9573b3cp-8,
+    -0x1.fb099ap-8
+  },
+  { // Entry 23
+    0x1.fb070301e5b46bfdaf1d2a7bd9573b3cp-8,
+    0x1.fb099ap-8
+  },
+  { // Entry 24
+    -0x1.ff85d977c45b8a463709fc31915c04bap-6,
+    -0x1.ffb06cp-6
+  },
+  { // Entry 25
+    0x1.ff85d977c45b8a463709fc31915c04bap-6,
+    0x1.ffb06cp-6
+  },
+  { // Entry 26
+    -0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    -0x1.ffff7ep-5
+  },
+  { // Entry 27
+    0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    0x1.ffff7ep-5
+  },
+  { // Entry 28
+    0x1.85efacff5cf7afdba442be92190b551bp-1,
+    0x1.000002p0
+  },
+  { // Entry 29
+    -0x1.85efacff5cf7afdba442be92190b551bp-1,
+    -0x1.000002p0
+  },
+  { // Entry 30
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p8
+  },
+  { // Entry 31
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p8
+  },
+  { // Entry 32
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p40
+  },
+  { // Entry 33
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p40
+  },
+  { // Entry 34
+    0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    0x1.0000c0p-4
+  },
+  { // Entry 35
+    -0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    -0x1.0000c0p-4
+  },
+  { // Entry 36
+    0x1.ffd7b90143bb5d654465fbf6eb08db94p-6,
+    0x1.000130p-5
+  },
+  { // Entry 37
+    -0x1.ffd7b90143bb5d654465fbf6eb08db94p-6,
+    -0x1.000130p-5
+  },
+  { // Entry 38
+    0x1.ff5816ffa9aaf77b52ddf52d862ee085p-5,
+    0x1.000140p-4
+  },
+  { // Entry 39
+    -0x1.ff5816ffa9aaf77b52ddf52d862ee085p-5,
+    -0x1.000140p-4
+  },
+  { // Entry 40
+    0x1.fd5c86dbf1ef7c0b7c17b5a5fc9384bap-4,
+    0x1.000180p-3
+  },
+  { // Entry 41
+    -0x1.fd5c86dbf1ef7c0b7c17b5a5fc9384bap-4,
+    -0x1.000180p-3
+  },
+  { // Entry 42
+    0x1.fff8d56199d2d1496393498af57a65c5p-7,
+    0x1.0001c0p-6
+  },
+  { // Entry 43
+    -0x1.fff8d56199d2d1496393498af57a65c5p-7,
+    -0x1.0001c0p-6
+  },
+  { // Entry 44
+    0x1.ff5a1500f7488c88a28967ef3279598bp-5,
+    0x1.000240p-4
+  },
+  { // Entry 45
+    -0x1.ff5a1500f7488c88a28967ef3279598bp-5,
+    -0x1.000240p-4
+  },
+  { // Entry 46
+    0x1.ffdd57997869c223859da246115830a8p-6,
+    0x1.0004p-5
+  },
+  { // Entry 47
+    -0x1.ffdd57997869c223859da246115830a8p-6,
+    -0x1.0004p-5
+  },
+  { // Entry 48
+    0x1.0003ffffffeaa9aaa6aaa777a223777cp-21,
+    0x1.0004p-21
+  },
+  { // Entry 49
+    -0x1.0003ffffffeaa9aaa6aaa777a223777cp-21,
+    -0x1.0004p-21
+  },
+  { // Entry 50
+    0x1.fffed101db6291871ee5b1f184662c14p-7,
+    0x1.0004bep-6
+  },
+  { // Entry 51
+    -0x1.fffed101db6291871ee5b1f184662c14p-7,
+    -0x1.0004bep-6
+  },
+  { // Entry 52
+    0x1.ffa82cfe3d3102474919a811a60807b3p-1,
+    0x1.0008p2
+  },
+  { // Entry 53
+    -0x1.ffa82cfe3d3102474919a811a60807b3p-1,
+    -0x1.0008p2
+  },
+  { // Entry 54
+    0x1.00718b006b52c2ab11702de3389d77dep-5,
+    0x1.0087p-5
+  },
+  { // Entry 55
+    -0x1.00718b006b52c2ab11702de3389d77dep-5,
+    -0x1.0087p-5
+  },
+  { // Entry 56
+    0x1.ffaacb36b2dfa869b4fddee9c98dc067p-1,
+    0x1.01p2
+  },
+  { // Entry 57
+    -0x1.ffaacb36b2dfa869b4fddee9c98dc067p-1,
+    -0x1.01p2
+  },
+  { // Entry 58
+    0x1.fffff900052e44ea345da5965f4d110ep-1,
+    0x1.0137p3
+  },
+  { // Entry 59
+    -0x1.fffff900052e44ea345da5965f4d110ep-1,
+    -0x1.0137p3
+  },
+  { // Entry 60
+    0x1.fc32f80000dd7b300750a0078a9054c1p-3,
+    0x1.03843ep-2
+  },
+  { // Entry 61
+    -0x1.fc32f80000dd7b300750a0078a9054c1p-3,
+    -0x1.03843ep-2
+  },
+  { // Entry 62
+    0x1.fd19570002093df94b65683f9a00917fp-3,
+    0x1.03ffp-2
+  },
+  { // Entry 63
+    -0x1.fd19570002093df94b65683f9a00917fp-3,
+    -0x1.03ffp-2
+  },
+  { // Entry 64
+    0x1.fde5d8ffff80b927d4d76ae1dce6f59bp-3,
+    0x1.046cp-2
+  },
+  { // Entry 65
+    -0x1.fde5d8ffff80b927d4d76ae1dce6f59bp-3,
+    -0x1.046cp-2
+  },
+  { // Entry 66
+    0x1.feb06fff85b879ae19eb2bc5cf70e031p-3,
+    0x1.04d8p-2
+  },
+  { // Entry 67
+    -0x1.feb06fff85b879ae19eb2bc5cf70e031p-3,
+    -0x1.04d8p-2
+  },
+  { // Entry 68
+    0x1.e6c426ed700f503e6583df7694a4979bp-2,
+    0x1.08b038p-1
+  },
+  { // Entry 69
+    -0x1.e6c426ed700f503e6583df7694a4979bp-2,
+    -0x1.08b038p-1
+  },
+  { // Entry 70
+    0x1.fffffc0001871106009b5aaf55c49116p-1,
+    0x1.0a2b2ap3
+  },
+  { // Entry 71
+    -0x1.fffffc0001871106009b5aaf55c49116p-1,
+    -0x1.0a2b2ap3
+  },
+  { // Entry 72
+    0x1.ffc392f4ab8d534aa69f7c5166cf0366p-1,
+    0x1.0cp2
+  },
+  { // Entry 73
+    -0x1.ffc392f4ab8d534aa69f7c5166cf0366p-1,
+    -0x1.0cp2
+  },
+  { // Entry 74
+    0x1.0acd33000032a880878690d403afbcbep-3,
+    0x1.0c5392p-3
+  },
+  { // Entry 75
+    -0x1.0acd33000032a880878690d403afbcbep-3,
+    -0x1.0c5392p-3
+  },
+  { // Entry 76
+    0x1.fffffcfb1bf37b0f791d7a17eb6b0a15p-1,
+    0x1.0eab7cp3
+  },
+  { // Entry 77
+    -0x1.fffffcfb1bf37b0f791d7a17eb6b0a15p-1,
+    -0x1.0eab7cp3
+  },
+  { // Entry 78
+    0x1.fffffcfb1e37253dc76193d1e1aed817p-1,
+    0x1.0eab88p3
+  },
+  { // Entry 79
+    -0x1.fffffcfb1e37253dc76193d1e1aed817p-1,
+    -0x1.0eab88p3
+  },
+  { // Entry 80
+    0x1.fffffcfb3902021b406b1ea187844f4bp-1,
+    0x1.0eac16p3
+  },
+  { // Entry 81
+    -0x1.fffffcfb3902021b406b1ea187844f4bp-1,
+    -0x1.0eac16p3
+  },
+  { // Entry 82
+    0x1.f5443f00c7ad11ba27b4800bc8cff692p-2,
+    0x1.12236ap-1
+  },
+  { // Entry 83
+    -0x1.f5443f00c7ad11ba27b4800bc8cff692p-2,
+    -0x1.12236ap-1
+  },
+  { // Entry 84
+    0x1.0db18affff41c0dc320851eef3614bffp-2,
+    0x1.1433d2p-2
+  },
+  { // Entry 85
+    -0x1.0db18affff41c0dc320851eef3614bffp-2,
+    -0x1.1433d2p-2
+  },
+  { // Entry 86
+    0x1.fffffdfdabb86f8672c461c08d04046fp-1,
+    0x1.152faep3
+  },
+  { // Entry 87
+    -0x1.fffffdfdabb86f8672c461c08d04046fp-1,
+    -0x1.152faep3
+  },
+  { // Entry 88
+    0x1.fa265d240155e5013f12a3b41500189ep-2,
+    0x1.155cp-1
+  },
+  { // Entry 89
+    -0x1.fa265d240155e5013f12a3b41500189ep-2,
+    -0x1.155cp-1
+  },
+  { // Entry 90
+    0x1.fc9a1a5f9c32905aaf97cba3f8aafaf0p-2,
+    0x1.16fcp-1
+  },
+  { // Entry 91
+    -0x1.fc9a1a5f9c32905aaf97cba3f8aafaf0p-2,
+    -0x1.16fcp-1
+  },
+  { // Entry 92
+    0x1.155868ffff4152df457a24ad6f413bdfp-3,
+    0x1.170f48p-3
+  },
+  { // Entry 93
+    -0x1.155868ffff4152df457a24ad6f413bdfp-3,
+    -0x1.170f48p-3
+  },
+  { // Entry 94
+    0x1.177d0f00f641d1e96c79c7abd75269b1p-6,
+    0x1.1784p-6
+  },
+  { // Entry 95
+    -0x1.177d0f00f641d1e96c79c7abd75269b1p-6,
+    -0x1.1784p-6
+  },
+  { // Entry 96
+    0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    0x1.1908p-4
+  },
+  { // Entry 97
+    -0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    -0x1.1908p-4
+  },
+  { // Entry 98
+    0x1.1dce250138c3f920efea001b064975a3p-7,
+    0x1.1dd0p-7
+  },
+  { // Entry 99
+    -0x1.1dce250138c3f920efea001b064975a3p-7,
+    -0x1.1dd0p-7
+  },
+  { // Entry 100
+    0x1.1dda24c562621a0640fe0b86641cd64bp-7,
+    0x1.1ddcp-7
+  },
+  { // Entry 101
+    -0x1.1dda24c562621a0640fe0b86641cd64bp-7,
+    -0x1.1ddcp-7
+  },
+  { // Entry 102
+    0x1.1fa86e8f695d32c4d8d874744814444dp-6,
+    0x1.1fb0p-6
+  },
+  { // Entry 103
+    -0x1.1fa86e8f695d32c4d8d874744814444dp-6,
+    -0x1.1fb0p-6
+  },
+  { // Entry 104
+    0x1.a01401001045019528db07ebeec35ef9p-1,
+    0x1.2281aap0
+  },
+  { // Entry 105
+    -0x1.a01401001045019528db07ebeec35ef9p-1,
+    -0x1.2281aap0
+  },
+  { // Entry 106
+    0x1.aeea270075d91da2ac1928b5d795a866p-1,
+    0x1.3a0b6cp0
+  },
+  { // Entry 107
+    -0x1.aeea270075d91da2ac1928b5d795a866p-1,
+    -0x1.3a0b6cp0
+  },
+  { // Entry 108
+    0x1.58840500489a56042910d82b4425107cp-10,
+    0x1.588412p-10
+  },
+  { // Entry 109
+    -0x1.58840500489a56042910d82b4425107cp-10,
+    -0x1.588412p-10
+  },
+  { // Entry 110
+    0x1.fffc48bea6ea7bca9e3cc76637bfbfcep-1,
+    0x1.653fbcp2
+  },
+  { // Entry 111
+    -0x1.fffc48bea6ea7bca9e3cc76637bfbfcep-1,
+    -0x1.653fbcp2
+  },
+  { // Entry 112
+    0x1.fffc48d5dfe4c3c0ebf5fc4e969507bap-1,
+    0x1.654084p2
+  },
+  { // Entry 113
+    -0x1.fffc48d5dfe4c3c0ebf5fc4e969507bap-1,
+    -0x1.654084p2
+  },
+  { // Entry 114
+    0x1.fffc5933b716ebf93b846ed2d0629240p-1,
+    0x1.65ceb4p2
+  },
+  { // Entry 115
+    -0x1.fffc5933b716ebf93b846ed2d0629240p-1,
+    -0x1.65ceb4p2
+  },
+  { // Entry 116
+    0x1.6cc3070142cab25a8a3556c9810da1e8p-5,
+    0x1.6d00d0p-5
+  },
+  { // Entry 117
+    -0x1.6cc3070142cab25a8a3556c9810da1e8p-5,
+    -0x1.6d00d0p-5
+  },
+  { // Entry 118
+    0x1.6cc309003eed18aedf499413fadb462fp-5,
+    0x1.6d00d2p-5
+  },
+  { // Entry 119
+    -0x1.6cc309003eed18aedf499413fadb462fp-5,
+    -0x1.6d00d2p-5
+  },
+  { // Entry 120
+    0x1.fd3f72ffe427753610423980d1d05fedp-1,
+    0x1.7aa642p1
+  },
+  { // Entry 121
+    -0x1.fd3f72ffe427753610423980d1d05fedp-1,
+    -0x1.7aa642p1
+  },
+  { // Entry 122
+    0x1.7c2f60ffff4224b41b98aa2e87d40e93p-3,
+    0x1.80a516p-3
+  },
+  { // Entry 123
+    -0x1.7c2f60ffff4224b41b98aa2e87d40e93p-3,
+    -0x1.80a516p-3
+  },
+  { // Entry 124
+    0x1.fffec68f7d9cae8cb2022d2f6e1cb483p-1,
+    0x1.88c660p2
+  },
+  { // Entry 125
+    -0x1.fffec68f7d9cae8cb2022d2f6e1cb483p-1,
+    -0x1.88c660p2
+  },
+  { // Entry 126
+    0x1.8959449ca3adfa7d322370460455a902p-9,
+    0x1.895992p-9
+  },
+  { // Entry 127
+    -0x1.8959449ca3adfa7d322370460455a902p-9,
+    -0x1.895992p-9
+  },
+  { // Entry 128
+    0x1.fffecc86683d8ef8a1fb2cafaea1545fp-1,
+    0x1.8963c4p2
+  },
+  { // Entry 129
+    -0x1.fffecc86683d8ef8a1fb2cafaea1545fp-1,
+    -0x1.8963c4p2
+  },
+  { // Entry 130
+    0x1.79b6110000baefbe3999a6dff4c4acdbp-2,
+    0x1.8c6448p-2
+  },
+  { // Entry 131
+    -0x1.79b6110000baefbe3999a6dff4c4acdbp-2,
+    -0x1.8c6448p-2
+  },
+  { // Entry 132
+    0x1.9556a2f5d933a6a7c7cf78568bb7249ap-7,
+    0x1.955beep-7
+  },
+  { // Entry 133
+    -0x1.9556a2f5d933a6a7c7cf78568bb7249ap-7,
+    -0x1.955beep-7
+  },
+  { // Entry 134
+    0x1.a6460901ad2d3a62ccc87319783ddde8p-8,
+    0x1.a64788p-8
+  },
+  { // Entry 135
+    -0x1.a6460901ad2d3a62ccc87319783ddde8p-8,
+    -0x1.a64788p-8
+  },
+  { // Entry 136
+    0x1.62faf5001c03bf4b64fe9125b3ecbd72p-1,
+    0x1.b569c2p-1
+  },
+  { // Entry 137
+    -0x1.62faf5001c03bf4b64fe9125b3ecbd72p-1,
+    -0x1.b569c2p-1
+  },
+  { // Entry 138
+    0x1.ffffb2f40c1a3456b2931f183789727dp-1,
+    0x1.b5ad60p2
+  },
+  { // Entry 139
+    -0x1.ffffb2f40c1a3456b2931f183789727dp-1,
+    -0x1.b5ad60p2
+  },
+  { // Entry 140
+    0x1.b855a8c8313c4cd13e0f00b884857ca3p-7,
+    0x1.b85c72p-7
+  },
+  { // Entry 141
+    -0x1.b855a8c8313c4cd13e0f00b884857ca3p-7,
+    -0x1.b85c72p-7
+  },
+  { // Entry 142
+    0x1.af0793000035655bbe779d897c9f5d4ep-2,
+    0x1.cb9714p-2
+  },
+  { // Entry 143
+    -0x1.af0793000035655bbe779d897c9f5d4ep-2,
+    -0x1.cb9714p-2
+  },
+  { // Entry 144
+    0x1.cf812104022313677123e2625c6cb00bp-5,
+    0x1.cffffep-5
+  },
+  { // Entry 145
+    -0x1.cf812104022313677123e2625c6cb00bp-5,
+    -0x1.cffffep-5
+  },
+  { // Entry 146
+    0x1.d5132b00e44b3c951c3d25000110a656p-4,
+    0x1.d7244cp-4
+  },
+  { // Entry 147
+    -0x1.d5132b00e44b3c951c3d25000110a656p-4,
+    -0x1.d7244cp-4
+  },
+  { // Entry 148
+    0x1.bc797cffffff6db7359d1c595930bc63p-2,
+    0x1.dc0accp-2
+  },
+  { // Entry 149
+    -0x1.bc797cffffff6db7359d1c595930bc63p-2,
+    -0x1.dc0accp-2
+  },
+  { // Entry 150
+    0x1.dd556501c8476b8826b0d4995a3e0054p-7,
+    0x1.dd5e0ap-7
+  },
+  { // Entry 151
+    -0x1.dd556501c8476b8826b0d4995a3e0054p-7,
+    -0x1.dd5e0ap-7
+  },
+  { // Entry 152
+    0x1.dfe86501ca363c2f1da356d0632fe6c8p-7,
+    0x1.dff12ep-7
+  },
+  { // Entry 153
+    -0x1.dfe86501ca363c2f1da356d0632fe6c8p-7,
+    -0x1.dff12ep-7
+  },
+  { // Entry 154
+    0x1.d9d7000000930fc88ef47c6e1ada9a2ep-3,
+    0x1.e293c6p-3
+  },
+  { // Entry 155
+    -0x1.d9d7000000930fc88ef47c6e1ada9a2ep-3,
+    -0x1.e293c6p-3
+  },
+  { // Entry 156
+    0x1.e3871b0406361c77ff3262df09e8c737p-11,
+    0x1.e38724p-11
+  },
+  { // Entry 157
+    -0x1.e3871b0406361c77ff3262df09e8c737p-11,
+    -0x1.e38724p-11
+  },
+  { // Entry 158
+    0x1.e7f6c1d323d9985457500cf721006947p-7,
+    0x1.e7fffep-7
+  },
+  { // Entry 159
+    -0x1.e7f6c1d323d9985457500cf721006947p-7,
+    -0x1.e7fffep-7
+  },
+  { // Entry 160
+    0x1.7c54ecfffa1859038ca17969c97fe5dep-1,
+    0x1.e9de92p-1
+  },
+  { // Entry 161
+    -0x1.7c54ecfffa1859038ca17969c97fe5dep-1,
+    -0x1.e9de92p-1
+  },
+  { // Entry 162
+    0x1.f34e86fff858026738196409a11a9d77p-4,
+    0x1.f5cd60p-4
+  },
+  { // Entry 163
+    -0x1.f34e86fff858026738196409a11a9d77p-4,
+    -0x1.f5cd60p-4
+  },
+  { // Entry 164
+    0x1.f650cd01dd1dd3b74d4170b58162d604p-7,
+    0x1.f65ae0p-7
+  },
+  { // Entry 165
+    -0x1.f650cd01dd1dd3b74d4170b58162d604p-7,
+    -0x1.f65ae0p-7
+  },
+  { // Entry 166
+    0x1.f7f5d19736651657bb4a908bb6ce6f3cp-7,
+    0x1.f7fffep-7
+  },
+  { // Entry 167
+    -0x1.f7f5d19736651657bb4a908bb6ce6f3cp-7,
+    -0x1.f7fffep-7
+  },
+  { // Entry 168
+    0x1.f936b301e75e5596ad5b43deb4061c2cp-10,
+    0x1.f936dcp-10
+  },
+  { // Entry 169
+    -0x1.f936b301e75e5596ad5b43deb4061c2cp-10,
+    -0x1.f936dcp-10
+  },
+  { // Entry 170
+    0x1.fb5c247b97361255c41f765d4cbab28ep-10,
+    0x1.fb5c4ep-10
+  },
+  { // Entry 171
+    -0x1.fb5c247b97361255c41f765d4cbab28ep-10,
+    -0x1.fb5c4ep-10
+  },
+  { // Entry 172
+    0x1.fb60ee7a6a3af79f5ce57fd612d65a22p-10,
+    0x1.fb6118p-10
+  },
+  { // Entry 173
+    -0x1.fb60ee7a6a3af79f5ce57fd612d65a22p-10,
+    -0x1.fb6118p-10
+  },
+  { // Entry 174
+    0x1.fb61507a522ba9573e82098c0792ba25p-10,
+    0x1.fb617ap-10
+  },
+  { // Entry 175
+    -0x1.fb61507a522ba9573e82098c0792ba25p-10,
+    -0x1.fb617ap-10
+  },
+  { // Entry 176
+    0x1.fb896701df3450ee4bc970f28fb75445p-8,
+    0x1.fb8cp-8
+  },
+  { // Entry 177
+    -0x1.fb896701df3450ee4bc970f28fb75445p-8,
+    -0x1.fb8cp-8
+  },
+  { // Entry 178
+    0x1.fc3c1bffffc9f2bffbd43471548806fcp-4,
+    0x1.fede10p-4
+  },
+  { // Entry 179
+    -0x1.fc3c1bffffc9f2bffbd43471548806fcp-4,
+    -0x1.fede10p-4
+  },
+  { // Entry 180
+    0x1.fed5976f11593f5d7e4b3836da802317p-6,
+    0x1.fefffep-6
+  },
+  { // Entry 181
+    -0x1.fed5976f11593f5d7e4b3836da802317p-6,
+    -0x1.fefffep-6
+  },
+  { // Entry 182
+    0x1.ff1d56d81077af007425dda32d1f0031p-8,
+    0x1.ff1ffep-8
+  },
+  { // Entry 183
+    -0x1.ff1d56d81077af007425dda32d1f0031p-8,
+    -0x1.ff1ffep-8
+  },
+  { // Entry 184
+    0x1.fff1d3d1b5268bffb0a21ac78411370bp-7,
+    0x1.fffc7ep-7
+  },
+  { // Entry 185
+    -0x1.fff1d3d1b5268bffb0a21ac78411370bp-7,
+    -0x1.fffc7ep-7
+  },
+  { // Entry 186
+    0x1.fd580cdbebec6f60e3365d17ed60414ap-4,
+    0x1.fffe74p-4
+  },
+  { // Entry 187
+    -0x1.fd580cdbebec6f60e3365d17ed60414ap-4,
+    -0x1.fffe74p-4
+  },
+  { // Entry 188
+    0x1.f596b7f7b4c13c155c3efd93f5dfe6d2p-3,
+    0x1.fffebap-3
+  },
+  { // Entry 189
+    -0x1.f596b7f7b4c13c155c3efd93f5dfe6d2p-3,
+    -0x1.fffebap-3
+  },
+  { // Entry 190
+    0x1.f597340cb7cde9ab8349aed17bf234d0p-3,
+    0x1.ffff3ep-3
+  },
+  { // Entry 191
+    -0x1.f597340cb7cde9ab8349aed17bf234d0p-3,
+    -0x1.ffff3ep-3
+  },
+  { // Entry 192
+    0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    0x1.ffff7ep-5
+  },
+  { // Entry 193
+    -0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    -0x1.ffff7ep-5
+  },
+  { // Entry 194
+    0x1.85ef82ffff600101847e4b0f9e445356p-1,
+    0x1.ffffa0p-1
+  },
+  { // Entry 195
+    -0x1.85ef82ffff600101847e4b0f9e445356p-1,
+    -0x1.ffffa0p-1
+  },
+  { // Entry 196
+    0x1.d9352125813bde3aa9ea505b2809fca3p-2,
+    0x1.ffffdcp-2
+  },
+  { // Entry 197
+    -0x1.d9352125813bde3aa9ea505b2809fca3p-2,
+    -0x1.ffffdcp-2
+  },
+  { // Entry 198
+    0x1.ffa817006391aeb5707dac7212cf73d5p-1,
+    0x1.fffffap1
+  },
+  { // Entry 199
+    -0x1.ffa817006391aeb5707dac7212cf73d5p-1,
+    -0x1.fffffap1
+  },
+  { // Entry 200
+    0x1.a86c170000be8e7f4d04a063da24860ep-3,
+    0x1.aea8e2p-3
+  },
+  { // Entry 201
+    -0x1.a86c170000be8e7f4d04a063da24860ep-3,
+    -0x1.aea8e2p-3
+  },
+  { // Entry 202
+    0.0,
+    0.0
+  },
+  { // Entry 203
+    0x1.1a5eefe0da6da46ea6f171425810e4dfp-5,
+    0x1.1a7b96p-5
+  },
+  { // Entry 204
+    -0x1.1a5eefe0da6da46ea6f171425810e4dfp-5,
+    -0x1.1a7b96p-5
+  },
+  { // Entry 205
+    0x1.1a09274ac6f7b6d4b727690be74eb0ddp-4,
+    0x1.1a7b96p-4
+  },
+  { // Entry 206
+    -0x1.1a09274ac6f7b6d4b727690be74eb0ddp-4,
+    -0x1.1a7b96p-4
+  },
+  { // Entry 207
+    0x1.a6381479e10e322568c693ec4f279989p-4,
+    0x1.a7b960p-4
+  },
+  { // Entry 208
+    -0x1.a6381479e10e322568c693ec4f279989p-4,
+    -0x1.a7b960p-4
+  },
+  { // Entry 209
+    0x1.18b472d6fbe7dee4499ec16056fea055p-3,
+    0x1.1a7b96p-3
+  },
+  { // Entry 210
+    -0x1.18b472d6fbe7dee4499ec16056fea055p-3,
+    -0x1.1a7b96p-3
+  },
+  { // Entry 211
+    0x1.5da54dc77f05440705ed9d5be3f9e9d8p-3,
+    0x1.611a7cp-3
+  },
+  { // Entry 212
+    -0x1.5da54dc77f05440705ed9d5be3f9e9d8p-3,
+    -0x1.611a7cp-3
+  },
+  { // Entry 213
+    0x1.a1c7a7ee254eb0b79612d120102ce9cdp-3,
+    0x1.a7b962p-3
+  },
+  { // Entry 214
+    -0x1.a1c7a7ee254eb0b79612d120102ce9cdp-3,
+    -0x1.a7b962p-3
+  },
+  { // Entry 215
+    0x1.e4f66de638560e22d3726a77da8f160fp-3,
+    0x1.ee5848p-3
+  },
+  { // Entry 216
+    -0x1.e4f66de638560e22d3726a77da8f160fp-3,
+    -0x1.ee5848p-3
+  },
+  { // Entry 217
+    0x1.13875aa36e2d8920626dbd412fff0a19p-2,
+    0x1.1a7b96p-2
+  },
+  { // Entry 218
+    -0x1.13875aa36e2d8920626dbd412fff0a19p-2,
+    -0x1.1a7b96p-2
+  },
+  { // Entry 219
+    0x1.33f8019585f3cc502e91eecf50e70e1ep-2,
+    0x1.3dcb08p-2
+  },
+  { // Entry 220
+    -0x1.33f8019585f3cc502e91eecf50e70e1ep-2,
+    -0x1.3dcb08p-2
+  },
+  { // Entry 221
+    0x1.53be3e2cd98b021967b9bd31e58b5176p-2,
+    0x1.611a7ap-2
+  },
+  { // Entry 222
+    -0x1.53be3e2cd98b021967b9bd31e58b5176p-2,
+    -0x1.611a7ap-2
+  },
+  { // Entry 223
+    0x1.72cc88c146572445dafcbe755d41bcabp-2,
+    0x1.8469ecp-2
+  },
+  { // Entry 224
+    -0x1.72cc88c146572445dafcbe755d41bcabp-2,
+    -0x1.8469ecp-2
+  },
+  { // Entry 225
+    0x1.9116ceec77a9f298abf6b13437746b97p-2,
+    0x1.a7b95ep-2
+  },
+  { // Entry 226
+    -0x1.9116ceec77a9f298abf6b13437746b97p-2,
+    -0x1.a7b95ep-2
+  },
+  { // Entry 227
+    0x1.ae927d0b74198b988ccf700a98369717p-2,
+    0x1.cb08d0p-2
+  },
+  { // Entry 228
+    -0x1.ae927d0b74198b988ccf700a98369717p-2,
+    -0x1.cb08d0p-2
+  },
+  { // Entry 229
+    0x1.cb3682279dc978565aefc3dbd264dc6bp-2,
+    0x1.ee5842p-2
+  },
+  { // Entry 230
+    -0x1.cb3682279dc978565aefc3dbd264dc6bp-2,
+    -0x1.ee5842p-2
+  },
+  { // Entry 231
+    0x1.e6fb4e9962e192a0d5bde52d580d91p-2,
+    0x1.08d3dap-1
+  },
+  { // Entry 232
+    -0x1.e6fb4e9962e192a0d5bde52d580d91p-2,
+    -0x1.08d3dap-1
+  },
+  { // Entry 233
+    0x1.00ed67a7ca644147f7f84f1f3f68eb4ep-1,
+    0x1.1a7b94p-1
+  },
+  { // Entry 234
+    -0x1.00ed67a7ca644147f7f84f1f3f68eb4ep-1,
+    -0x1.1a7b94p-1
+  },
+  { // Entry 235
+    0x1.0de82f529333a223ff587747d148653cp-1,
+    0x1.2c234ep-1
+  },
+  { // Entry 236
+    -0x1.0de82f529333a223ff587747d148653cp-1,
+    -0x1.2c234ep-1
+  },
+  { // Entry 237
+    0x1.1a6c5d5a29120e952b1038e517a86a7ap-1,
+    0x1.3dcb08p-1
+  },
+  { // Entry 238
+    -0x1.1a6c5d5a29120e952b1038e517a86a7ap-1,
+    -0x1.3dcb08p-1
+  },
+  { // Entry 239
+    0x1.2678f914054d8f29392b6e43daa2fe82p-1,
+    0x1.4f72c2p-1
+  },
+  { // Entry 240
+    -0x1.2678f914054d8f29392b6e43daa2fe82p-1,
+    -0x1.4f72c2p-1
+  },
+  { // Entry 241
+    0x1.320da804a66b5aea0e2572fe3978eac8p-1,
+    0x1.611a7cp-1
+  },
+  { // Entry 242
+    -0x1.320da804a66b5aea0e2572fe3978eac8p-1,
+    -0x1.611a7cp-1
+  },
+  { // Entry 243
+    0x1.3d2aa2c374c14e0b68b69e1f2aad8daep-1,
+    0x1.72c236p-1
+  },
+  { // Entry 244
+    -0x1.3d2aa2c374c14e0b68b69e1f2aad8daep-1,
+    -0x1.72c236p-1
+  },
+  { // Entry 245
+    0x1.47d0a924d14e34db0ec4761b0df7646dp-1,
+    0x1.8469f0p-1
+  },
+  { // Entry 246
+    -0x1.47d0a924d14e34db0ec4761b0df7646dp-1,
+    -0x1.8469f0p-1
+  },
+  { // Entry 247
+    0x1.5200f5eeb74275fa79657708d5b078b6p-1,
+    0x1.9611aap-1
+  },
+  { // Entry 248
+    -0x1.5200f5eeb74275fa79657708d5b078b6p-1,
+    -0x1.9611aap-1
+  },
+  { // Entry 249
+    0x1.5bbd32569013f13f86d8a0f1ef604c1dp-1,
+    0x1.a7b964p-1
+  },
+  { // Entry 250
+    -0x1.5bbd32569013f13f86d8a0f1ef604c1dp-1,
+    -0x1.a7b964p-1
+  },
+  { // Entry 251
+    0x1.650769803034e7d79ffaa44b0cc39437p-1,
+    0x1.b9611ep-1
+  },
+  { // Entry 252
+    -0x1.650769803034e7d79ffaa44b0cc39437p-1,
+    -0x1.b9611ep-1
+  },
+  { // Entry 253
+    0x1.6de1fc2ec1c6722f9de045bb1a94b919p-1,
+    0x1.cb08d8p-1
+  },
+  { // Entry 254
+    -0x1.6de1fc2ec1c6722f9de045bb1a94b919p-1,
+    -0x1.cb08d8p-1
+  },
+  { // Entry 255
+    0x1.764f94d0fb2866129f770f308fa0ba85p-1,
+    0x1.dcb092p-1
+  },
+  { // Entry 256
+    -0x1.764f94d0fb2866129f770f308fa0ba85p-1,
+    -0x1.dcb092p-1
+  },
+  { // Entry 257
+    0x1.7e531c0aa594c275df30c5b8451bba53p-1,
+    0x1.ee584cp-1
+  },
+  { // Entry 258
+    -0x1.7e531c0aa594c275df30c5b8451bba53p-1,
+    -0x1.ee584cp-1
+  },
+  { // Entry 259
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.p0
+  },
+  { // Entry 260
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.p0
+  },
+  { // Entry 261
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p100
+  },
+  { // Entry 262
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p100
+  },
+  { // Entry 263
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d7944p100
+  },
+  { // Entry 264
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d7944p100
+  },
+  { // Entry 265
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af288p100
+  },
+  { // Entry 266
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af288p100
+  },
+  { // Entry 267
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bccp100
+  },
+  { // Entry 268
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bccp100
+  },
+  { // Entry 269
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e510p100
+  },
+  { // Entry 270
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e510p100
+  },
+  { // Entry 271
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e54p100
+  },
+  { // Entry 272
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e54p100
+  },
+  { // Entry 273
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d798p100
+  },
+  { // Entry 274
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d798p100
+  },
+  { // Entry 275
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50dcp100
+  },
+  { // Entry 276
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50dcp100
+  },
+  { // Entry 277
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca20p100
+  },
+  { // Entry 278
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca20p100
+  },
+  { // Entry 279
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.794364p100
+  },
+  { // Entry 280
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.794364p100
+  },
+  { // Entry 281
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca8p100
+  },
+  { // Entry 282
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca8p100
+  },
+  { // Entry 283
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435ecp100
+  },
+  { // Entry 284
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435ecp100
+  },
+  { // Entry 285
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af30p100
+  },
+  { // Entry 286
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af30p100
+  },
+  { // Entry 287
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af2874p100
+  },
+  { // Entry 288
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af2874p100
+  },
+  { // Entry 289
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1b8p100
+  },
+  { // Entry 290
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1b8p100
+  },
+  { // Entry 291
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1afcp100
+  },
+  { // Entry 292
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1afcp100
+  },
+  { // Entry 293
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79440p100
+  },
+  { // Entry 294
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79440p100
+  },
+  { // Entry 295
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d84p100
+  },
+  { // Entry 296
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d84p100
+  },
+  { // Entry 297
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286c8p100
+  },
+  { // Entry 298
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286c8p100
+  },
+  { // Entry 299
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p101
+  },
+  { // Entry 300
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p101
+  },
+  { // Entry 301
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 302
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 303
+    0.0,
+    0.0
+  },
+  { // Entry 304
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 305
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 306
+    0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 307
+    -0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 308
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.p-1
+  },
+  { // Entry 309
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.p-1
+  },
+  { // Entry 310
+    0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    0x1.000002p-1
+  },
+  { // Entry 311
+    -0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 312
+    0x1.fffffa7fc7b1f6bc2e2cdde1540f0470p-2,
+    0x1.193ea4p-1
+  },
+  { // Entry 313
+    -0x1.fffffa7fc7b1f6bc2e2cdde1540f0470p-2,
+    -0x1.193ea4p-1
+  },
+  { // Entry 314
+    0x1.fffffd7fc7b5f6f475c594f45adc9be5p-2,
+    0x1.193ea6p-1
+  },
+  { // Entry 315
+    -0x1.fffffd7fc7b5f6f475c594f45adc9be5p-2,
+    -0x1.193ea6p-1
+  },
+  { // Entry 316
+    0x1.0000003fe3db7b965f4f34192b818b64p-1,
+    0x1.193ea8p-1
+  },
+  { // Entry 317
+    -0x1.0000003fe3db7b965f4f34192b818b64p-1,
+    -0x1.193ea8p-1
+  },
+  { // Entry 318
+    0x1.fffffffffffffffa422e1905e1f508eep-1,
+    0x1.5ffffep4
+  },
+  { // Entry 319
+    -0x1.fffffffffffffffa422e1905e1f508eep-1,
+    -0x1.5ffffep4
+  },
+  { // Entry 320
+    0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    0x1.60p4
+  },
+  { // Entry 321
+    -0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    -0x1.60p4
+  },
+  { // Entry 322
+    0x1.fffffffffffffffa4230f7ee1db7f9b3p-1,
+    0x1.600002p4
+  },
+  { // Entry 323
+    -0x1.fffffffffffffffa4230f7ee1db7f9b3p-1,
+    -0x1.600002p4
+  },
+  { // Entry 324
+    -0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 325
+    0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 326
+    -0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 327
+    0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 328
+    -0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 329
+    0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 330
+    -0x1.55555563e05644101a754f1b989bf5e0p-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 331
+    0x1.55555563e05644101a754f1b989bf5e0p-2,
+    0x1.62e430p-2
+  },
+  { // Entry 332
+    -0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 333
+    0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 334
+    -0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 335
+    0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 336
+    -0x1.5f619990a5492052ffe57497a9abd298p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 337
+    0x1.5f619990a5492052ffe57497a9abd298p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 338
+    -0x1.5f61979fb7af4d856def98ede8520596p-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 339
+    0x1.5f61979fb7af4d856def98ede8520596p-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 340
+    -0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 341
+    0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 342
+    -0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 343
+    0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    0x1.62e430p-4
+  },
+  { // Entry 344
+    -0x1.620183f9723c526db01581b03289e0f8p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 345
+    0x1.620183f9723c526db01581b03289e0f8p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 346
+    -0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 347
+    0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 348
+    -0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 349
+    0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 350
+    -0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 351
+    0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 352
+    -0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 353
+    0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 354
+    -0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 355
+    0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    0x1.62e430p-6
+  },
+  { // Entry 356
+    -0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 357
+    0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 358
+    -0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 359
+    0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 360
+    0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 361
+    -0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 362
+    0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 363
+    -0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 364
+    0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    0x1.62e430p-6
+  },
+  { // Entry 365
+    -0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 366
+    0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 367
+    -0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 368
+    0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 369
+    -0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 370
+    0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 371
+    -0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 372
+    0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 373
+    -0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 374
+    0x1.620183f9723c526db01581b03289e0f8p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 375
+    -0x1.620183f9723c526db01581b03289e0f8p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 376
+    0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    0x1.62e430p-4
+  },
+  { // Entry 377
+    -0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 378
+    0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 379
+    -0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 380
+    0x1.5f61979fb7af4d856def98ede8520596p-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 381
+    -0x1.5f61979fb7af4d856def98ede8520596p-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 382
+    0x1.5f619990a5492052ffe57497a9abd298p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 383
+    -0x1.5f619990a5492052ffe57497a9abd298p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 384
+    0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 385
+    -0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 386
+    0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 387
+    -0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 388
+    0x1.55555563e05644101a754f1b989bf5e0p-2,
+    0x1.62e430p-2
+  },
+  { // Entry 389
+    -0x1.55555563e05644101a754f1b989bf5e0p-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 390
+    0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 391
+    -0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 392
+    0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 393
+    -0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 394
+    0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 395
+    -0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 396
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42cp6
+  },
+  { // Entry 397
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42cp6
+  },
+  { // Entry 398
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42ep6
+  },
+  { // Entry 399
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42ep6
+  },
+  { // Entry 400
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e430p6
+  },
+  { // Entry 401
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e430p6
+  },
+  { // Entry 402
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da2p6
+  },
+  { // Entry 403
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9d1da2p6
+  },
+  { // Entry 404
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da0p6
+  },
+  { // Entry 405
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9d1da0p6
+  },
+  { // Entry 406
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1d9ep6
+  },
+  { // Entry 407
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9d1d9ep6
+  },
+  { // Entry 408
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.65a9f6p6
+  },
+  { // Entry 409
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.65a9f6p6
+  },
+  { // Entry 410
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.65a9f8p6
+  },
+  { // Entry 411
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.65a9f8p6
+  },
+  { // Entry 412
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.65a9fap6
+  },
+  { // Entry 413
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.65a9fap6
+  },
+  { // Entry 414
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e430p6
+  },
+  { // Entry 415
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e430p6
+  },
+  { // Entry 416
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42ep6
+  },
+  { // Entry 417
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42ep6
+  },
+  { // Entry 418
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42cp6
+  },
+  { // Entry 419
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42cp6
+  },
+  { // Entry 420
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep62
+  },
+  { // Entry 421
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep62
+  },
+  { // Entry 422
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p63
+  },
+  { // Entry 423
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p63
+  },
+  { // Entry 424
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p63
+  },
+  { // Entry 425
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p63
+  },
+  { // Entry 426
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep26
+  },
+  { // Entry 427
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep26
+  },
+  { // Entry 428
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p27
+  },
+  { // Entry 429
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p27
+  },
+  { // Entry 430
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p27
+  },
+  { // Entry 431
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p27
+  },
+  { // Entry 432
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep23
+  },
+  { // Entry 433
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep23
+  },
+  { // Entry 434
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p24
+  },
+  { // Entry 435
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p24
+  },
+  { // Entry 436
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p24
+  },
+  { // Entry 437
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p24
+  },
+  { // Entry 438
+    0x1.ffffffffffffffffffffffcd2c4a64d0p-1,
+    0x1.fffffep4
+  },
+  { // Entry 439
+    -0x1.ffffffffffffffffffffffcd2c4a64d0p-1,
+    -0x1.fffffep4
+  },
+  { // Entry 440
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.p5
+  },
+  { // Entry 441
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.p5
+  },
+  { // Entry 442
+    0x1.ffffffffffffffffffffffcd2c70838ap-1,
+    0x1.000002p5
+  },
+  { // Entry 443
+    -0x1.ffffffffffffffffffffffcd2c70838ap-1,
+    -0x1.000002p5
+  },
+  { // Entry 444
+    0x1.fffffffffff1bdcbbc08e2044832bbfep-1,
+    0x1.fffffep3
+  },
+  { // Entry 445
+    -0x1.fffffffffff1bdcbbc08e2044832bbfep-1,
+    -0x1.fffffep3
+  },
+  { // Entry 446
+    0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    0x1.p4
+  },
+  { // Entry 447
+    -0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    -0x1.p4
+  },
+  { // Entry 448
+    0x1.fffffffffff1bdd114db7ad966aba40dp-1,
+    0x1.000002p4
+  },
+  { // Entry 449
+    -0x1.fffffffffff1bdd114db7ad966aba40dp-1,
+    -0x1.000002p4
+  },
+  { // Entry 450
+    0x1.fffff872a8a6b12003ef317c57617676p-1,
+    0x1.fffffep2
+  },
+  { // Entry 451
+    -0x1.fffff872a8a6b12003ef317c57617676p-1,
+    -0x1.fffffep2
+  },
+  { // Entry 452
+    0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    0x1.p3
+  },
+  { // Entry 453
+    -0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    -0x1.p3
+  },
+  { // Entry 454
+    0x1.fffff872aa11315c1a493c74b407aa6ep-1,
+    0x1.000002p3
+  },
+  { // Entry 455
+    -0x1.fffff872aa11315c1a493c74b407aa6ep-1,
+    -0x1.000002p3
+  },
+  { // Entry 456
+    0x1.ffa81705e1a8bbcbf5a3dcf7cb937ef6p-1,
+    0x1.fffffep1
+  },
+  { // Entry 457
+    -0x1.ffa81705e1a8bbcbf5a3dcf7cb937ef6p-1,
+    -0x1.fffffep1
+  },
+  { // Entry 458
+    0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    0x1.p2
+  },
+  { // Entry 459
+    -0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    -0x1.p2
+  },
+  { // Entry 460
+    0x1.ffa8170e1ecaaac35b6d81d682891126p-1,
+    0x1.000002p2
+  },
+  { // Entry 461
+    -0x1.ffa8170e1ecaaac35b6d81d682891126p-1,
+    -0x1.000002p2
+  },
+  { // Entry 462
+    0x1.ed950599638c18fec5bd8135b3976fafp-1,
+    0x1.fffffep0
+  },
+  { // Entry 463
+    -0x1.ed950599638c18fec5bd8135b3976fafp-1,
+    -0x1.fffffep0
+  },
+  { // Entry 464
+    0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    0x1.p1
+  },
+  { // Entry 465
+    -0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    -0x1.p1
+  },
+  { // Entry 466
+    0x1.ed9506726d9c40b04cf2556073e90aecp-1,
+    0x1.000002p1
+  },
+  { // Entry 467
+    -0x1.ed9506726d9c40b04cf2556073e90aecp-1,
+    -0x1.000002p1
+  },
+  { // Entry 468
+    0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 469
+    -0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 470
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.p0
+  },
+  { // Entry 471
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.p0
+  },
+  { // Entry 472
+    0x1.85efacff5cf7afdba442be92190b551bp-1,
+    0x1.000002p0
+  },
+  { // Entry 473
+    -0x1.85efacff5cf7afdba442be92190b551bp-1,
+    -0x1.000002p0
+  },
+  { // Entry 474
+    0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 475
+    -0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 476
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.p-1
+  },
+  { // Entry 477
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.p-1
+  },
+  { // Entry 478
+    0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    0x1.000002p-1
+  },
+  { // Entry 479
+    -0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 480
+    0x1.f597e8885827eed9d73369feec84841dp-3,
+    0x1.fffffep-3
+  },
+  { // Entry 481
+    -0x1.f597e8885827eed9d73369feec84841dp-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 482
+    0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    0x1.p-2
+  },
+  { // Entry 483
+    -0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    -0x1.p-2
+  },
+  { // Entry 484
+    0x1.f597ee2c35088eb5da928b278522fdc0p-3,
+    0x1.000002p-2
+  },
+  { // Entry 485
+    -0x1.f597ee2c35088eb5da928b278522fdc0p-3,
+    -0x1.000002p-2
+  },
+  { // Entry 486
+    0x1.fd5990c4365de99b093619573aed5eefp-4,
+    0x1.fffffep-4
+  },
+  { // Entry 487
+    -0x1.fd5990c4365de99b093619573aed5eefp-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 488
+    0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    0x1.p-3
+  },
+  { // Entry 489
+    -0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    -0x1.p-3
+  },
+  { // Entry 490
+    0x1.fd5996ac75cded089eba2285d0035a24p-4,
+    0x1.000002p-3
+  },
+  { // Entry 491
+    -0x1.fd5996ac75cded089eba2285d0035a24p-4,
+    -0x1.000002p-3
+  },
+  { // Entry 492
+    0x1.ff55978001b8da0e0ab4904fa64b8d32p-5,
+    0x1.fffffep-5
+  },
+  { // Entry 493
+    -0x1.ff55978001b8da0e0ab4904fa64b8d32p-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 494
+    0x1.ff55997e030d705935592a366a8a66d4p-5,
+    0x1.p-4
+  },
+  { // Entry 495
+    -0x1.ff55997e030d705935592a366a8a66d4p-5,
+    -0x1.p-4
+  },
+  { // Entry 496
+    0x1.ff559d7a05b690ff7d0e4114c0eb72c1p-5,
+    0x1.000002p-4
+  },
+  { // Entry 497
+    -0x1.ff559d7a05b690ff7d0e4114c0eb72c1p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 498
+    0x1.ffd55799ab088fb326e9ba18d0997203p-6,
+    0x1.fffffep-6
+  },
+  { // Entry 499
+    -0x1.ffd55799ab088fb326e9ba18d0997203p-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 500
+    0x1.ffd559992b1de28305fc17382205392ep-6,
+    0x1.p-5
+  },
+  { // Entry 501
+    -0x1.ffd559992b1de28305fc17382205392ep-6,
+    -0x1.p-5
+  },
+  { // Entry 502
+    0x1.ffd55d982b488523c3e9758124e0628bp-6,
+    0x1.000002p-5
+  },
+  { // Entry 503
+    -0x1.ffd55d982b488523c3e9758124e0628bp-6,
+    -0x1.000002p-5
+  },
+  { // Entry 504
+    0x1.fff55399b7de33c0d4da3bfbdc23a5d4p-7,
+    0x1.fffffep-7
+  },
+  { // Entry 505
+    -0x1.fff55399b7de33c0d4da3bfbdc23a5d4p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 506
+    0x1.fff5559997df892a1128575843fc0d52p-7,
+    0x1.p-6
+  },
+  { // Entry 507
+    -0x1.fff5559997df892a1128575843fc0d52p-7,
+    -0x1.p-6
+  },
+  { // Entry 508
+    0x1.fff5599957e2333c99c37490eae25a5ap-7,
+    0x1.000002p-6
+  },
+  { // Entry 509
+    -0x1.fff5599957e2333c99c37490eae25a5ap-7,
+    -0x1.000002p-6
+  },
+  { // Entry 510
+    0x1.fffffdf5555575999978428a3604016fp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 511
+    -0x1.fffffdf5555575999978428a3604016fp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 512
+    0x1.fffffff555555599999997df7df7eab0p-15,
+    0x1.p-14
+  },
+  { // Entry 513
+    -0x1.fffffff555555599999997df7df7eab0p-15,
+    -0x1.p-14
+  },
+  { // Entry 514
+    0x1.000001faaaaa8acccc8e2144eeefdea1p-14,
+    0x1.000002p-14
+  },
+  { // Entry 515
+    -0x1.000001faaaaa8acccc8e2144eeefdea1p-14,
+    -0x1.000002p-14
+  },
+  { // Entry 516
+    0x1.fffffdfffffffff55555755555355599p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 517
+    -0x1.fffffdfffffffff55555755555355599p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 518
+    0x1.fffffffffffffff55555555555555599p-31,
+    0x1.p-30
+  },
+  { // Entry 519
+    -0x1.fffffffffffffff55555555555555599p-31,
+    -0x1.p-30
+  },
+  { // Entry 520
+    0x1.000001fffffffffaaaaa8aaaaa6aaaccp-30,
+    0x1.000002p-30
+  },
+  { // Entry 521
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaccp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 522
+    0x1.fffffdfffffffffffffffffffffd5555p-56,
+    0x1.fffffep-56
+  },
+  { // Entry 523
+    -0x1.fffffdfffffffffffffffffffffd5555p-56,
+    -0x1.fffffep-56
+  },
+  { // Entry 524
+    0x1.fffffffffffffffffffffffffffd5555p-56,
+    0x1.p-55
+  },
+  { // Entry 525
+    -0x1.fffffffffffffffffffffffffffd5555p-56,
+    -0x1.p-55
+  },
+  { // Entry 526
+    0x1.000001fffffffffffffffffffffeaaaap-55,
+    0x1.000002p-55
+  },
+  { // Entry 527
+    -0x1.000001fffffffffffffffffffffeaaaap-55,
+    -0x1.000002p-55
+  },
+  { // Entry 528
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 529
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep127
+  },
+  { // Entry 530
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep127
+  },
+  { // Entry 531
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 532
+    0x1.p0,
+    HUGE_VALF
+  },
+  { // Entry 533
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 534
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep127
+  },
+  { // Entry 535
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 536
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp127
+  },
+  { // Entry 537
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp127
+  },
+  { // Entry 538
+    0x1.fe175fa8292deb3d8c41deec7c2ee47cp-1,
+    0x1.921fb6p1
+  },
+  { // Entry 539
+    -0x1.fe175fa8292deb3d8c41deec7c2ee47cp-1,
+    -0x1.921fb6p1
+  },
+  { // Entry 540
+    0x1.d594fde9eb7012c121b429007ea7884ap-1,
+    0x1.921fb6p0
+  },
+  { // Entry 541
+    -0x1.d594fde9eb7012c121b429007ea7884ap-1,
+    -0x1.921fb6p0
+  },
+  { // Entry 542
+    0x1.85efacff5cf7afdba442be92190b551bp-1,
+    0x1.000002p0
+  },
+  { // Entry 543
+    -0x1.85efacff5cf7afdba442be92190b551bp-1,
+    -0x1.000002p0
+  },
+  { // Entry 544
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.p0
+  },
+  { // Entry 545
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.p0
+  },
+  { // Entry 546
+    0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 547
+    -0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 548
+    0x1.4fc442656d206b21f6dcd108d6a88ad7p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 549
+    -0x1.4fc442656d206b21f6dcd108d6a88ad7p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 550
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 551
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 552
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 553
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 554
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 555
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 556
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 557
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 558
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 559
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 560
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 561
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 562
+    0.0,
+    0.0f
+  },
+  { // Entry 563
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/trunc_intel_data.h b/tests/math_data/trunc_intel_data.h
new file mode 100644
index 0000000..4d3a2d8
--- /dev/null
+++ b/tests/math_data/trunc_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<double, double> g_trunc_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.ffffffffffff80p49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.ffffffffffffc0p50,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.ffffffffffffe0p51,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.ffffffffffff80p49,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.ffffffffffffc0p50,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.ffffffffffffe0p51,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.fffffff8p29,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff4p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffff8p30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffff8p30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffff8p30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.fffffffcp30,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.fffffffcp30,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.fffffffcp30,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.fffffffcp30,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.fffffffcp30,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.fffffff8p29,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff4p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffff8p30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.fffffffcp30,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/truncf_intel_data.h b/tests/math_data/truncf_intel_data.h
new file mode 100644
index 0000000..1f1a447
--- /dev/null
+++ b/tests/math_data/truncf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+static data_1_1_t<float, float> g_truncf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.fffff0p20,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.fffff8p21,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.fffffcp22,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.fffff0p20,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.fffff8p21,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.fffffcp22,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data_test.h b/tests/math_data_test.h
new file mode 100644
index 0000000..8aa2bf1
--- /dev/null
+++ b/tests/math_data_test.h
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <fenv.h>
+
+template <typename RT, typename T1>
+struct data_1_1_t {
+  RT expected;
+  T1 input;
+};
+
+template <typename T1>
+struct data_int_1_t {
+  int expected;
+  T1 input;
+};
+
+template <typename RT, typename T1, typename T2>
+struct data_1_2_t {
+  RT expected;
+  T1 input1;
+  T2 input2;
+};
+
+template <typename RT1, typename RT2, typename T>
+struct data_2_1_t {
+  RT1 expected1;
+  RT2 expected2;
+  T input;
+};
+
+template <typename RT1, typename T>
+struct data_1_int_1_t {
+  RT1 expected1;
+  int expected2;
+  T input;
+};
+
+template <typename RT1, typename T1, typename T2>
+struct data_1_int_2_t {
+  RT1 expected1;
+  int expected2;
+  T1 input1;
+  T2 input2;
+};
+
+template <typename RT, typename T1, typename T2, typename T3>
+struct data_1_3_t {
+  RT expected;
+  T1 input1;
+  T2 input2;
+  T3 input3;
+};
+
+template <typename T> union fp_u;
+
+template <> union fp_u<float> {
+  float value;
+  struct {
+    unsigned frac:23;
+    unsigned exp:8;
+    unsigned sign:1;
+  } bits;
+  uint32_t sign_magnitude;
+};
+
+template <> union fp_u<double> {
+  double value;
+  struct {
+    unsigned fracl;
+    unsigned frach:20;
+    unsigned exp:11;
+    unsigned sign:1;
+  } bits;
+  uint64_t sign_magnitude;
+};
+
+// TODO: long double.
+
+template <typename T>
+static inline auto SignAndMagnitudeToBiased(const T& value) -> decltype(fp_u<T>::sign_magnitude) {
+  fp_u<T> u;
+  u.value = value;
+  if (u.bits.sign) {
+    return ~u.sign_magnitude + 1;
+  } else {
+    u.bits.sign = 1;
+    return u.sign_magnitude;
+  }
+}
+
+// Based on the existing googletest implementation, which uses a fixed 4 ulp bound.
+template <typename T>
+size_t UlpDistance(T lhs, T rhs) {
+  const auto biased1 = SignAndMagnitudeToBiased(lhs);
+  const auto biased2 = SignAndMagnitudeToBiased(rhs);
+  return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
+}
+
+template <size_t ULP, typename T>
+struct FpUlpEq {
+  ::testing::AssertionResult operator()(const char* /* expected_expression */,
+                                        const char* /* actual_expression */,
+                                        T expected,
+                                        T actual) {
+    if (!isnan(expected) && !isnan(actual) && UlpDistance(expected, actual) <= ULP) {
+      return ::testing::AssertionSuccess();
+    }
+
+    // Output the actual and expected values as hex floating point.
+    char expected_str[64];
+    char actual_str[64];
+    snprintf(expected_str, sizeof(expected_str), "%a", expected);
+    snprintf(actual_str, sizeof(actual_str), "%a", actual);
+
+    return ::testing::AssertionFailure()
+        << "expected (" << expected_str << ") != actual (" << actual_str << ")";
+  }
+};
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the result is within ULP ulps of the expected value.
+// For testing a (double) -> double function like sin(3).
+template <size_t ULP, typename RT, typename T, size_t N>
+void DoMathDataTest(data_1_1_t<RT, T> (&data)[N], RT f(T)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT> predicate;
+  for (size_t i = 0; i < N; ++i) {
+    EXPECT_PRED_FORMAT2(predicate,
+                        data[i].expected, f(data[i].input)) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the result is within ULP ulps of the expected value.
+// For testing a (double) -> int function like ilogb(3).
+template <size_t ULP, typename T, size_t N>
+void DoMathDataTest(data_int_1_t<T> (&data)[N], int f(T)) {
+  fesetenv(FE_DFL_ENV);
+  for (size_t i = 0; i < N; ++i) {
+    EXPECT_EQ(data[i].expected, f(data[i].input)) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the pairs of input values
+// and asserting that the result is within ULP ulps of the expected value.
+// For testing a (double, double) -> double function like pow(3).
+template <size_t ULP, typename RT, typename T1, typename T2, size_t N>
+void DoMathDataTest(data_1_2_t<RT, T1, T2> (&data)[N], RT f(T1, T2)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT> predicate;
+  for (size_t i = 0; i < N; ++i) {
+    EXPECT_PRED_FORMAT2(predicate,
+                        data[i].expected, f(data[i].input1, data[i].input2)) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the results are within ULP ulps of the expected values.
+// For testing a (double, double*, double*) -> void function like sincos(3).
+template <size_t ULP, typename RT1, typename RT2, typename T1, size_t N>
+void DoMathDataTest(data_2_1_t<RT1, RT2, T1> (&data)[N], void f(T1, RT1*, RT2*)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT1> predicate1;
+  FpUlpEq<ULP, RT2> predicate2;
+  for (size_t i = 0; i < N; ++i) {
+    RT1 out1;
+    RT2 out2;
+    f(data[i].input, &out1, &out2);
+    EXPECT_PRED_FORMAT2(predicate1, data[i].expected1, out1) << "Failed on element " << i;
+    EXPECT_PRED_FORMAT2(predicate2, data[i].expected2, out2) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the results are within ULP ulps of the expected values.
+// For testing a (double, double*) -> double function like modf(3).
+template <size_t ULP, typename RT1, typename RT2, typename T1, size_t N>
+void DoMathDataTest(data_2_1_t<RT1, RT2, T1> (&data)[N], RT1 f(T1, RT2*)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT1> predicate1;
+  FpUlpEq<ULP, RT2> predicate2;
+  for (size_t i = 0; i < N; ++i) {
+    RT1 out1;
+    RT2 out2;
+    out1 = f(data[i].input, &out2);
+    EXPECT_PRED_FORMAT2(predicate1, data[i].expected1, out1) << "Failed on element " << i;
+    EXPECT_PRED_FORMAT2(predicate2, data[i].expected2, out2) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the results are within ULP ulps of the expected values.
+// For testing a (double, int*) -> double function like frexp(3).
+template <size_t ULP, typename RT1, typename T1, size_t N>
+void DoMathDataTest(data_1_int_1_t<RT1, T1> (&data)[N], RT1 f(T1, int*)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT1> predicate1;
+  for (size_t i = 0; i < N; ++i) {
+    RT1 out1;
+    int out2;
+    out1 = f(data[i].input, &out2);
+    EXPECT_PRED_FORMAT2(predicate1, data[i].expected1, out1) << "Failed on element " << i;
+    EXPECT_EQ(data[i].expected2, out2) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the results are within ULP ulps of the expected values.
+// For testing a (double, double, int*) -> double function like remquo(3).
+template <size_t ULP, typename RT1, typename T1, typename T2, size_t N>
+void DoMathDataTest(data_1_int_2_t<RT1, T1, T2> (&data)[N], RT1 f(T1, T2, int*)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT1> predicate1;
+  for (size_t i = 0; i < N; ++i) {
+    RT1 out1;
+    int out2;
+    out1 = f(data[i].input1, data[i].input2, &out2);
+    EXPECT_PRED_FORMAT2(predicate1, data[i].expected1, out1) << "Failed on element " << i;
+    EXPECT_EQ(data[i].expected2, out2) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the pairs of input values
+// and asserting that the result is within ULP ulps of the expected value.
+// For testing a (double, double, double) -> double function like fma(3).
+template <size_t ULP, typename RT, typename T1, typename T2, typename T3, size_t N>
+void DoMathDataTest(data_1_3_t<RT, T1, T2, T3> (&data)[N], RT f(T1, T2, T3)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT> predicate;
+  for (size_t i = 0; i < N; ++i) {
+    EXPECT_PRED_FORMAT2(predicate,
+                        data[i].expected, f(data[i].input1, data[i].input2, data[i].input3)) << "Failed on element " << i;
+  }
+}
+
diff --git a/tests/math_exp_test.cpp b/tests/math_exp_test.cpp
deleted file mode 100644
index beb2584..0000000
--- a/tests/math_exp_test.cpp
+++ /dev/null
@@ -1,1975 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  double expected;
-  double call_data;
-} exp_intel_data_t;
-
-static exp_intel_data_t g_exp_intel_data[] = {
-  { // Entry 0
-    0x1.0000000000001fffffffffffffffffffp0,
-    0x1.ffffffffffffep-52
-  },
-  { // Entry 1
-    0x1.000000000011ffffffffffffffffffffp0,
-    0x1.1ffffffffff5ep-44
-  },
-  { // Entry 2
-    0x1.000000000207fffffffffffffffffd34p0,
-    0x1.03fffffffef7fp-39
-  },
-  { // Entry 3
-    0x1.00000000c1b59800000000000027a7d5p0,
-    0x1.836b2fff6d6cbp-33
-  },
-  { // Entry 4
-    0x1.000000033d397800000000000002a51dp0,
-    0x1.9e9cbbfd6080bp-31
-  },
-  { // Entry 5
-    0x1.003af6c37c1d3000000000000009446ep0,
-    0x1.d77fd13d27fffp-11
-  },
-  { // Entry 6
-    0x1.016b4df3299d77ffffffffffffe83e10p0,
-    0x1.6a4d1af9cc989p-8
-  },
-  { // Entry 7
-    0x1.0ca4a41663fe07ffffffffffffdab235p0,
-    0x1.8ae823850230bp-5
-  },
-  { // Entry 8
-    0x1.1538ea18a4585000000000000039e054p0,
-    0x1.46370d915991bp-4
-  },
-  { // Entry 9
-    0x1.47408cb9583ce00000000000002c896fp0,
-    0x1.f6e4c3ced7c72p-3
-  },
-  { // Entry 10
-    0x1.27c2e4bc1ee707ffffffffffffeb0c2dp1,
-    0x1.accfbe46b4ef0p-1
-  },
-  { // Entry 11
-    0x1.557d4acd7e5568000000000000202c86p2,
-    0x1.aca7ae8da5a7bp0
-  },
-  { // Entry 12
-    0x1.91a8dff540ff700000000000002f1e33p2,
-    0x1.d6336a88077aap0
-  },
-  { // Entry 13
-    0x1.8ede492d96071fffffffffffff0aecd2p3,
-    0x1.42ee3c7dc4946p1
-  },
-  { // Entry 14
-    0x1.ac50b409c8aee0000000000000022ce3p8,
-    0x1.83d4bcdebb3f4p2
-  },
-  { // Entry 15
-    0x1.f3e558cf4de5400000000000001f5808p-23,
-    -0x1.e8bdbfcd9144ep3
-  },
-  { // Entry 16
-    0x1.951c6dc5d24e27ffffffffffffb6e0c3p-9,
-    -0x1.71e0b869b5e79p2
-  },
-  { // Entry 17
-    0x1.1064b2c103dda80000000000003eb5d7p-3,
-    -0x1.02393d5976769p1
-  },
-  { // Entry 18
-    0x1.3ef1e9b3a81c7fffffffffffffc315p-2,
-    -0x1.2a9cad9998262p0
-  },
-  { // Entry 19
-    0x1.534d4de87071300000000000003c6fb7p-3,
-    -0x1.cc37ef7de7501p0
-  },
-  { // Entry 20
-    0x1.2217147b85ea980000000000007745a3p-1,
-    -0x1.22e24fa3d5cf9p-1
-  },
-  { // Entry 21
-    0x1.9403fd0ee51c800000000000007720f1p-2,
-    -0x1.dc2b5df1f7d3dp-1
-  },
-  { // Entry 22
-    0x1.baded30cbf1c3ffffffffffffffbd904p-1,
-    -0x1.290ea09e36479p-3
-  },
-  { // Entry 23
-    0x1.ffe5d0bb7eabf0000000000000030320p-1,
-    -0x1.a2fefefd580dfp-13
-  },
-  { // Entry 24
-    0x1.ffffff84b39c4fffffffffffffff17f4p-1,
-    -0x1.ed318efb627eap-27
-  },
-  { // Entry 25
-    0x1.fffffffad0ae6800000000000009f1a8p-1,
-    -0x1.4bd46601ae1efp-31
-  },
-  { // Entry 26
-    0x1.ffffffffff7000000000000000000003p-1,
-    -0x1.2000000000288p-42
-  },
-  { // Entry 27
-    0x1.fffffffffffdp-1,
-    -0x1.8000000000012p-48
-  },
-  { // Entry 28
-    0x1.ffffffffffffc0p-1,
-    -0x1.0000000000001p-51
-  },
-  { // Entry 29
-    0x1.0000000000000fffffffffffffffffffp0,
-    0x1.fffffffffffffp-53
-  },
-  { // Entry 30
-    0x1.000000000001ffffffffffffffffffffp0,
-    0x1.fffffffffffe0p-48
-  },
-  { // Entry 31
-    0x1.000000017ffe80000000000000035ffdp0,
-    0x1.7ffe7ffee0024p-32
-  },
-  { // Entry 32
-    0x1.0000000180017ffffffffffffffc9ffdp0,
-    0x1.80017ffedffdcp-32
-  },
-  { // Entry 33
-    0x1.00000075e9f6400000000000000b1e80p0,
-    0x1.d7a7d893609e5p-26
-  },
-  { // Entry 34
-    0x1.0006e83736f8c80000000000000aa0afp0,
-    0x1.ba07d73250de7p-14
-  },
-  { // Entry 35
-    0x1.de7cd6751029a0000000000000e8bb2fp16,
-    0x1.76e7e5d7b6eacp3
-  },
-  { // Entry 36
-    0x1.1d71965f516ad80000000000009f7e97p19,
-    0x1.a8ead058bc6b8p3
-  },
-  { // Entry 37
-    0x1.a8c02e974c314fffffffffffffe21f03p25,
-    0x1.1d5c2daebe367p4
-  },
-  { // Entry 38
-    0x1.b890ca8637ae1fffffffffffffe42161p40,
-    0x1.c44ce0d716a1ap4
-  },
-  { // Entry 39
-    0x1.f03f56a88b5d781c905f6b51c76ae981p-1,
-    -0x1.0000000000001p-5
-  },
-  { // Entry 40
-    0x1.ff003ff556aa87ebb06e0eb57287567fp-1,
-    -0x1.000000000000ap-9
-  },
-  { // Entry 41
-    0x1.8ebef9eac81fc8001a3dbd88248efe13p-1,
-    -0x1.0000000000025p-2
-  },
-  { // Entry 42
-    0x1.fc03fd56a469b800008bcdfe018dbc74p-1,
-    -0x1.0000000171051p-7
-  },
-  { // Entry 43
-    0x1.78b5612dbee010008d3bc0735c80f7a8p-2,
-    -0x1.0000018p0
-  },
-  { // Entry 44
-    0x1.969c870ea9f5a801ddc1ff08a008db09p-93,
-    -0x1.000001e3ep6
-  },
-  { // Entry 45
-    0x1.78af867bc511d321cd454dbddaf806bcp-2,
-    -0x1.0003fc0p0
-  },
-  { // Entry 46
-    0x1.fffffffffefff8000000000400100015p-1,
-    -0x1.00080000004p-41
-  },
-  { // Entry 47
-    0x1.789214093c81d3b65fac659fb3fc8249p-2,
-    -0x1.00180p0
-  },
-  { // Entry 48
-    0x1.8e298e52fcce88014ad95c4f3bd88765p-1,
-    -0x1.018p-2
-  },
-  { // Entry 49
-    0x1.aa6ffb0ba519f801f9c3e146a15dc02cp-24,
-    -0x1.02010p4
-  },
-  { // Entry 50
-    0x1.dd7a46b8d85d67d67359337109c25168p-376,
-    -0x1.040p8
-  },
-  { // Entry 51
-    0x1.33e96ca3bcf3e801f9b3f6126fc60699p-1,
-    -0x1.045b948724130p-1
-  },
-  { // Entry 52
-    0x1.ef2f652dc26057fffc98aa54d4c33c16p-1,
-    -0x1.118e05cfa3e80p-5
-  },
-  { // Entry 53
-    0x1.a5d2ce977bbe28048b316927f970c201p-7,
-    -0x1.169156e17b9b9p2
-  },
-  { // Entry 54
-    0x1.a0207cf4190f700452282b04fa390407p-7,
-    -0x1.17701b3bf0502p2
-  },
-  { // Entry 55
-    0x1.fb97e1ff8cbba7adf16f3fbd6878f560p-1,
-    -0x1.1b4p-7
-  },
-  { // Entry 56
-    0x1.bcff09ae30c46804a6fafd550766eed2p-1,
-    -0x1.1f4p-3
-  },
-  { // Entry 57
-    0x1.fee70cf5e86ef4e54d0b1fa2701a346fp-833,
-    -0x1.2059ad42c3cf7p9
-  },
-  { // Entry 58
-    0x1.7ccd3f33407458011470b3f67197a9c8p-1,
-    -0x1.2f269d2ca38d2p-2
-  },
-  { // Entry 59
-    0x1.09cdb36e977bc7ffffe6d4ddbb18d553p-14,
-    -0x1.3553cf1828b0bp3
-  },
-  { // Entry 60
-    0x1.f9dc5cd546d9b800dc3d95519dc67ee8p-449,
-    -0x1.368ac083128fcp8
-  },
-  { // Entry 61
-    0x1.f1c53c907f6f576e62e401315bafc69ep-15,
-    -0x1.376e8f679ae16p3
-  },
-  { // Entry 62
-    0x1.f24595954e6618028965a9d67edeaf7bp-8,
-    -0x1.3844f67495f7dp2
-  },
-  { // Entry 63
-    0x1.fb56521290a222527d1d3c3638265f46p-905,
-    -0x1.394e9e1b089d7p9
-  },
-  { // Entry 64
-    0x1.dc1658ff6e0707fafd2fd8306c4b1897p-114,
-    -0x1.3997ea51e5271p6
-  },
-  { // Entry 65
-    0x1.ec8b3c090f8b97716a3d38de46d68a1ep-1,
-    -0x1.3d5de560e1906p-5
-  },
-  { // Entry 66
-    0x1.af411bf985220b562909c652c087fef4p-951,
-    -0x1.4954aa552a960p9
-  },
-  { // Entry 67
-    0x1.e1b71d238d5077fe3bea222fcba15608p-957,
-    -0x1.4b5ad6a9ad6adp9
-  },
-  { // Entry 68
-    0x1.cc666a3519ca080f1daef57f92b41d29p-973,
-    -0x1.50ec32686a834p9
-  },
-  { // Entry 69
-    0x1.22462bd5f72b0fffa6085b04427fdf5dp-976,
-    -0x1.52316872b0222p9
-  },
-  { // Entry 70
-    0x1.c1ebc18610301fff2424bc3936260dd2p-981,
-    -0x1.53b4ed3b4ec77p9
-  },
-  { // Entry 71
-    0x1.8d015bcaf9e18b57fdf057239d94f586p-981,
-    -0x1.53c4f13c4f079p9
-  },
-  { // Entry 72
-    0x1.fd5835460ed48c4e14207309a1237f90p-989,
-    -0x1.566ad4a41bec0p9
-  },
-  { // Entry 73
-    0x1.58733fbc088ef7ff38e15f94166c022cp-994,
-    -0x1.585883e7b3b38p9
-  },
-  { // Entry 74
-    0x1.b052090690481802acf0169f62bf32c9p-32,
-    -0x1.5a81ecf68beccp4
-  },
-  { // Entry 75
-    0x1.df6154bc644dac0f9e3a56646948b7c5p-1015,
-    -0x1.5f75629af4eb7p9
-  },
-  { // Entry 76
-    0x1.ff4b0da37083502c114a7ac56ac0498fp-1023,
-    -0x1.6232eb1c432f2p9
-  },
-  { // Entry 77
-    0x1.625edd4c7513e842f27a931c2bbe007cp-1023,
-    -0x1.6261d7dbf48ccp9
-  },
-  { // Entry 78
-    0x1.d572d24973be20006bad92e29bcba984p-1,
-    -0x1.6364b8f747e32p-4
-  },
-  { // Entry 79
-    0x1.ee4dd792245778020250f8981d1a0ad1p-9,
-    -0x1.6524796b40895p2
-  },
-  { // Entry 80
-    0x1.f660c59b294505d8989f85f8ed2a1878p-5,
-    -0x1.6551daae369cep1
-  },
-  { // Entry 81
-    0x1.aa070449efffe9b910657898cdc0ccddp-1037,
-    -0x1.672463f141607p9
-  },
-  { // Entry 82
-    0x1.d4e7fc331b7327ffccf4ee0c59aa7b22p-1,
-    -0x1.6820c99c1dc16p-4
-  },
-  { // Entry 83
-    0x1.fcc448acf476575c66ee396912dbaacdp-528,
-    -0x1.6d4b7e82c3f02p8
-  },
-  { // Entry 84
-    0x1.7fff5a1bffcb2062c9aaa5b07d097255p-529,
-    -0x1.6e44f765fda76p8
-  },
-  { // Entry 85
-    0x1.fa4ecd8ae57187fffffff9910c476c64p-1,
-    -0x1.6e56e725b8304p-7
-  },
-  { // Entry 86
-    0x1.e8d2dafd017ce8032bcb89459464fe7dp-3,
-    -0x1.6ecp0
-  },
-  { // Entry 87
-    0x1.214e34caac9e67139688ad1632dd2055p-1062,
-    -0x1.7p9
-  },
-  { // Entry 88
-    0x1.c87f21775a482a09a44af59c3c3ae44bp-1071,
-    -0x1.72e42p9
-  },
-  { // Entry 89
-    0x1.a349b2329c6777ffce65934b3b6203a7p-273,
-    -0x1.7978bac71121cp7
-  },
-  { // Entry 90
-    0x1.d2a6d5ea995c17ab448132e1e0453805p-1,
-    -0x1.7bde79e0f970cp-4
-  },
-  { // Entry 91
-    0x1.b776dc64c76d197e8c644dc8cb509c4ap-3,
-    -0x1.8a0p0
-  },
-  { // Entry 92
-    0x1.4446fcf7da689802d8c725db8c1145afp-72,
-    -0x1.8d5c84f0bac8cp5
-  },
-  { // Entry 93
-    0x1.e72a0b68bb82b78ce0524d1abb6f7abep-73,
-    -0x1.8fa68b4447230p5
-  },
-  { // Entry 94
-    0x1.fc33d5e1ca6df7d5069b03dc5a683e4fp-75,
-    -0x1.9a671693b946bp5
-  },
-  { // Entry 95
-    0x1.e6981fd6ef79c7fffffcc7201f82fd49p-1,
-    -0x1.a0ec89f897a75p-5
-  },
-  { // Entry 96
-    0x1.f2b9d3b6cf2277a1283f8e00743a0669p-1,
-    -0x1.ae6p-6
-  },
-  { // Entry 97
-    0x1.e5034c8d191bbfff719f2098e33c0577p-1,
-    -0x1.bb9706e2f1bb4p-5
-  },
-  { // Entry 98
-    0x1.f24dc90f9fbeb8028fbcaeebabc7e9fcp-1,
-    -0x1.bc3edad2e1efbp-6
-  },
-  { // Entry 99
-    0x1.71f237d64a6eb46aa154476fd0fc3886p-11,
-    -0x1.d0697edbe0052p2
-  },
-  { // Entry 100
-    0x1.f12c0d3addaa48004b23516d2a113804p-1,
-    -0x1.e18p-6
-  },
-  { // Entry 101
-    0x1.f110dd9073d71800bb4056830b517b08p-1,
-    -0x1.e50p-6
-  },
-  { // Entry 102
-    0x1.f3aa7a860574c2b0783061fe1fd1df2ep-705,
-    -0x1.e7fffffffffffp8
-  },
-  { // Entry 103
-    0x1.f0f898d55117081fc3b8792205e4e130p-1,
-    -0x1.e82p-6
-  },
-  { // Entry 104
-    0x1.ff814fff18dac854185d019b0f8ead36p-1,
-    -0x1.fafebfafebfb0p-11
-  },
-  { // Entry 105
-    0x1.ffffffff01c0701c46208c5416d943adp-1,
-    -0x1.fc7f1fc7f20p-34
-  },
-  { // Entry 106
-    0x1.7907d4148bd91687a1b50f26e8830775p-2,
-    -0x1.ff8ffffffffffp-1
-  },
-  { // Entry 107
-    0x1.ffffffffffff801c0000000013f900c3p-1,
-    -0x1.ff8ffffffffffp-51
-  },
-  { // Entry 108
-    0x1.e0fbb03a0c27d7e84804cadec377bdf9p-1,
-    -0x1.ffeffffffffffp-5
-  },
-  { // Entry 109
-    0x1.ffffffffff00080000004004000ffff5p-1,
-    -0x1.ffeffffffffffp-42
-  },
-  { // Entry 110
-    0x1.ffffffffff0007fffffffffc00100015p-1,
-    -0x1.fff00000008p-42
-  },
-  { // Entry 111
-    0x1.ffffffffffffffffffffffffe000719ep-1,
-    -0x1.fff8e61eadd48p-101
-  },
-  { // Entry 112
-    0x1.fffffffffc00080000040010000ffd55p-1,
-    -0x1.fffbfffffffffp-40
-  },
-  { // Entry 113
-    0x1.fffffffffc00001c0004001fc7fffe19p-1,
-    -0x1.fffff1fffffffp-40
-  },
-  { // Entry 114
-    0x1.ff800ffeaac008589f9a96af73eaff67p-1,
-    -0x1.ffffffffffda5p-11
-  },
-  { // Entry 115
-    0x1.e355bbaee8d85815e4b476b704d0f4f1p-24,
-    -0x1.fffffffffff7dp3
-  },
-  { // Entry 116
-    0x1.78b56362cef3da984453d1c72c344a31p-2,
-    -0x1.ffffffffffff8p-1
-  },
-  { // Entry 117
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffcp-1023
-  },
-  { // Entry 118
-    0x1.42eb9f39afbac7e5e73c32a21e853f26p-185,
-    -0x1.ffffffffffffep6
-  },
-  { // Entry 119
-    0x1.0000000000000800000000000020p0,
-    0x1.0p-53
-  },
-  { // Entry 120
-    0x1.95e54c5dd42177f53f4d5219df11ca3bp184,
-    0x1.0p7
-  },
-  { // Entry 121
-    0x1.9476504ba885758aa5fa7545e10e8e46p738,
-    0x1.0000000000001p9
-  },
-  { // Entry 122
-    0x1.0100802ab5577802ba424ad46b106a66p0,
-    0x1.0000000000003p-8
-  },
-  { // Entry 123
-    0x1.0000004000000800001caaaab1b55556p0,
-    0x1.0000000000007p-26
-  },
-  { // Entry 124
-    0x1.d8e64b8f26c128517489a490e684d8a8p2,
-    0x1.000000008p1
-  },
-  { // Entry 125
-    0x1.749ea7e015bc1dddfa19fbb3cf8bded4p11,
-    0x1.000000010p3
-  },
-  { // Entry 126
-    0x1.0f2ebd2c65d9a80081ac2e65e8025ab1p23,
-    0x1.000000020p4
-  },
-  { // Entry 127
-    0x1.0f2ec1473afea8081fa4566927a4cfd3p23,
-    0x1.0000004p4
-  },
-  { // Entry 128
-    0x1.0000000001000800000080080020002ap0,
-    0x1.00080p-40
-  },
-  { // Entry 129
-    0x1.00000000008008000000200400200005p0,
-    0x1.001p-41
-  },
-  { // Entry 130
-    0x1.000000000000080080000000002004p0,
-    0x1.001p-53
-  },
-  { // Entry 131
-    0x1.a8bf81a597edd223f2db6ebfe2eb1cc1p184,
-    0x1.00173eab3623ap7
-  },
-  { // Entry 132
-    0x1.75e54175aabb37fff5e5b44ba0f101b7p11,
-    0x1.001c0p3
-  },
-  { // Entry 133
-    0x1.60008fbed6c5280206e79909321d09c8p1,
-    0x1.02f8af8af8affp0
-  },
-  { // Entry 134
-    0x1.04184bb80ff43fffc89c53f1ee04ce04p0,
-    0x1.040p-6
-  },
-  { // Entry 135
-    0x1.00000840002208005d9600c105613e7cp0,
-    0x1.080p-21
-  },
-  { // Entry 136
-    0x1.2338ab9b7432080000000973938bacb0p0,
-    0x1.08000001d0fc8p-3
-  },
-  { // Entry 137
-    0x1.acc91bfa7c54c8036548c968b36e5750p0,
-    0x1.0814419d6a65ap-1
-  },
-  { // Entry 138
-    0x1.a4e4693413b9970755c15633af25f96bp400,
-    0x1.15c18de877563p8
-  },
-  { // Entry 139
-    0x1.000000000000480000000000061fffffp0,
-    0x1.1ffffffffffffp-50
-  },
-  { // Entry 140
-    0x1.eaa521edf1bc28014602191ce618c05fp846,
-    0x1.2586ca9cf411bp9
-  },
-  { // Entry 141
-    0x1.fca9c47016cb17617b275b298cf9f894p26,
-    0x1.2b55c037ebb9dp4
-  },
-  { // Entry 142
-    0x1.fcbb1e5c8d53575abc78726f5cea6f51p26,
-    0x1.2b564bee0a6cap4
-  },
-  { // Entry 143
-    0x1.cc0f9d911f1d1002cf0af382fdf62f02p0,
-    0x1.2c2p-1
-  },
-  { // Entry 144
-    0x1.b68a28b09fe947fdf00104f6d8c24801p6,
-    0x1.2c9e33f794769p2
-  },
-  { // Entry 145
-    0x1.d2e035b1892d6802a9c9e288d8e97c98p0,
-    0x1.33a74ff06fb66p-1
-  },
-  { // Entry 146
-    0x1.6acde844356c921fa99313aa18670593p3,
-    0x1.36cce3c3925p1
-  },
-  { // Entry 147
-    0x1.06dadee28c11c800fb9094435c1de727p7,
-    0x1.38389c48b0fcep2
-  },
-  { // Entry 148
-    0x1.c78f37f07cea6426ed5548b4a31d4ac2p904,
-    0x1.3997381d7d94fp9
-  },
-  { // Entry 149
-    0x1.bfe0c519166c47fe3a4b34e6c34b5ae4p1,
-    0x1.40a339c81cecbp0
-  },
-  { // Entry 150
-    0x1.fbc9c30603087488a3d92265b53c2a65p927,
-    0x1.419dbcc486770p9
-  },
-  { // Entry 151
-    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p930,
-    0x1.42a565e456e04p9
-  },
-  { // Entry 152
-    0x1.da134d5a4d1e1800c436544994058ce6p934,
-    0x1.44020100804p9
-  },
-  { // Entry 153
-    0x1.f4ec44194b642801a4afd4c50633e8aap938,
-    0x1.456bf23e02428p9
-  },
-  { // Entry 154
-    0x1.ea91d9533b394801bf3d3ec8f88de568p939,
-    0x1.45c1feef8086cp9
-  },
-  { // Entry 155
-    0x1.cb419b9279b35763d113e6c5db79dc54p943,
-    0x1.471c71c71c71cp9
-  },
-  { // Entry 156
-    0x1.6d14308828321de6fe67a4136f17d1f8p29,
-    0x1.474c9cc44cc25p4
-  },
-  { // Entry 157
-    0x1.c0194b4186e2780120b873d72456ecddp956,
-    0x1.4b9ab17812030p9
-  },
-  { // Entry 158
-    0x1.15c605853476b80008cabc4b207ffd1fp0,
-    0x1.4e59dc7e2b053p-4
-  },
-  { // Entry 159
-    0x1.6dee38735a6d3800d8ec117683275f3ap972,
-    0x1.510c5465d984bp9
-  },
-  { // Entry 160
-    0x1.f1e96be2a52cd777e8cf54184ed7ae48p0,
-    0x1.549b0f5742382p-1
-  },
-  { // Entry 161
-    0x1.f253c5990aad2800004db615b1148476p0,
-    0x1.55085fb86501ap-1
-  },
-  { // Entry 162
-    0x1.279b1c43a26617ff4c7508c35e562b22p993,
-    0x1.58383126e94bfp9
-  },
-  { // Entry 163
-    0x1.6fd5ab59153f32a4a383710a3419f57dp996,
-    0x1.595e5795e592bp9
-  },
-  { // Entry 164
-    0x1.5ecf1876539547ffd612e5c4b715c8adp1004,
-    0x1.5c1e0f0783c10p9
-  },
-  { // Entry 165
-    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1008,
-    0x1.5dadf5d1e452cp9
-  },
-  { // Entry 166
-    0x1.edcb14879613e80176087c1a76dec97cp1009,
-    0x1.5e056ed40e56ep9
-  },
-  { // Entry 167
-    0x1.fcc7e5ca80b1f75c14d762f846bc1669p0,
-    0x1.5fa97bb4e9060p-1
-  },
-  { // Entry 168
-    0x1.f8b5c987a3d877e18bfcada50f1c54b0p3,
-    0x1.610e47e1325dcp1
-  },
-  { // Entry 169
-    0x1.f1e9d8cf24fcd8025127877a738eb2d1p7,
-    0x1.611b19dcc53e4p2
-  },
-  { // Entry 170
-    0x1.ffc045692e8a039c5622b8219f19c619p1023,
-    0x1.62e41fffffffap9
-  },
-  { // Entry 171
-    0x1.ffc045693009d3d065062f9267dff55ep1023,
-    0x1.62e42p9
-  },
-  { // Entry 172
-    0x1.ffc04569a2fb83679239091df068997ep1023,
-    0x1.62e42000001ccp9
-  },
-  { // Entry 173
-    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1023,
-    0x1.62e42fefa39eap9
-  },
-  { // Entry 174
-    0x1.00000b40003f4800ed4e029b6b65ddb1p0,
-    0x1.680p-21
-  },
-  { // Entry 175
-    0x1.17e62f70bec99801a2936e89b54c5256p8,
-    0x1.689a7dc5921b8p2
-  },
-  { // Entry 176
-    0x1.6daaa1336a31500174ca0be569806fdep264,
-    0x1.6eb1de69ace32p7
-  },
-  { // Entry 177
-    0x1.72a9dadea7498c95a514c01d5403e5d0p0,
-    0x1.7b0p-2
-  },
-  { // Entry 178
-    0x1.1ed3fe64fc539800f9cd34ec4c83d9d1p2,
-    0x1.7fffffffffff9p0
-  },
-  { // Entry 179
-    0x1.000000000000180000000000001fffffp0,
-    0x1.7ffffffffffffp-52
-  },
-  { // Entry 180
-    0x1.fe31152b7ef6b1e0a8b9fec7ecdd85a4p553,
-    0x1.8p8
-  },
-  { // Entry 181
-    0x1.74d77b76d95163226caf84760a346abbp0,
-    0x1.810p-2
-  },
-  { // Entry 182
-    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp556,
-    0x1.820d92fc4b42ap8
-  },
-  { // Entry 183
-    0x1.00000000c1b59800000000000027a7d5p0,
-    0x1.836b2fff6d6cbp-33
-  },
-  { // Entry 184
-    0x1.78b69d690db792b574f904d2bb1e9ebep570,
-    0x1.8b7aee631f489p8
-  },
-  { // Entry 185
-    0x1.4dad95877ae078000012827fac891535p144,
-    0x1.905011e0df629p6
-  },
-  { // Entry 186
-    0x1.fcbb8778f61217665a6e6f2119880b29p144,
-    0x1.91fffp6
-  },
-  { // Entry 187
-    0x1.7a5b2771e0a16ce6ecd6de8573c11192p4,
-    0x1.94e54738fb4b7p1
-  },
-  { // Entry 188
-    0x1.7d676a26fe5caccea59b023540bec80fp0,
-    0x1.984p-2
-  },
-  { // Entry 189
-    0x1.698764128a4448010e251b55f37a7b6ep147,
-    0x1.98f381d7db44fp6
-  },
-  { // Entry 190
-    0x1.44e5a752f9e1efffb31481484aa7692ap9,
-    0x1.9e8186b267a28p2
-  },
-  { // Entry 191
-    0x1.8023d298e372f8020ec8cf4a70affa87p0,
-    0x1.9f91c1449c421p-2
-  },
-  { // Entry 192
-    0x1.df9bd06daf8ce7b123df43bb50109938p299,
-    0x1.9fc1f212d70f6p7
-  },
-  { // Entry 193
-    0x1.81a4fbca9dcdb800000ae068bc21c4f5p0,
-    0x1.a392789eafce9p-2
-  },
-  { // Entry 194
-    0x1.825f354ccf6f2fffab7e9eb828fbc67dp0,
-    0x1.a5807ca1392b2p-2
-  },
-  { // Entry 195
-    0x1.3c1e2876834aa7fa46011e98abeadf76p0,
-    0x1.bp-3
-  },
-  { // Entry 196
-    0x1.1c7e1aca53795fff54a5fdf5529261cap0,
-    0x1.b04p-4
-  },
-  { // Entry 197
-    0x1.a2d50b8b2880e801a27a34d1954dab50p331,
-    0x1.cbd917ccad096p7
-  },
-  { // Entry 198
-    0x1.419c8a8da1b79802e20296e5f9279626p1,
-    0x1.d7b677e333d38p-1
-  },
-  { // Entry 199
-    0x1.41d1b8b4649eb8000023f9776da9d645p1,
-    0x1.d80b1a6330bebp-1
-  },
-  { // Entry 200
-    0x1.bf3447921fd397fd6db462cd2fbb39fep10,
-    0x1.df50d9af9e410p2
-  },
-  { // Entry 201
-    0x1.9919794bc86298020a19588552ceae5cp0,
-    0x1.e0081ebc3264ep-2
-  },
-  { // Entry 202
-    0x1.76a62bad715b4800daadb6fc2b6e6166p5,
-    0x1.ec5bb209e5707p1
-  },
-  { // Entry 203
-    0x1.c701554c761aa80eedf2a49ef60e562cp2,
-    0x1.f62p0
-  },
-  { // Entry 204
-    0x1.c3dda3c952b918012fd79fbb8ea38f69p727,
-    0x1.f87c7820d8446p8
-  },
-  { // Entry 205
-    0x1.d28c6097b9d5578835e6cff1b19464cdp2,
-    0x1.fc89dc1aa909cp0
-  },
-  { // Entry 206
-    0x1.4231178c2348f5f77eedb27dc404f616p734,
-    0x1.fcfffffffffffp8
-  },
-  { // Entry 207
-    0x1.04034591911e77ff1834fd70d0bbb4b0p0,
-    0x1.fda6dfe27ffffp-7
-  },
-  { // Entry 208
-    0x1.a5b5691c4b0ef803cab2bad4a2013f14p0,
-    0x1.ff1dd1fffffffp-2
-  },
-  { // Entry 209
-    0x1.0000000000003ff20000000005fc8062p0,
-    0x1.ff8ffffffffffp-51
-  },
-  { // Entry 210
-    0x1.6d4fd9ab47c9200073aa8127a2419ac8p738,
-    0x1.ffe5effffffffp8
-  },
-  { // Entry 211
-    0x1.0000000000fff80000000000001fffaap0,
-    0x1.ffefffffff001p-41
-  },
-  { // Entry 212
-    0x1.74418bce788eb46746b38b578759ecc0p11,
-    0x1.ffeffffffffffp2
-  },
-  { // Entry 213
-    0x1.0000000000fff80000007ff80020002ap0,
-    0x1.fffp-41
-  },
-  { // Entry 214
-    0x1.0000000000fffff200007ff7f200008cp0,
-    0x1.ffffe3fffffffp-41
-  },
-  { // Entry 215
-    0x1.d8e64b8d2185281f984a4e51148dadecp2,
-    0x1.ffffffffe7fffp0
-  },
-  { // Entry 216
-    0x1.p0,
-    0x1.ffffffffffffcp-1023
-  },
-  { // Entry 217
-    0x1.00000000000007ffffffffffff9fffffp0,
-    0x1.ffffffffffffep-54
-  },
-  { // Entry 218
-    0x1.00000000000007ffffffffffffdfffffp0,
-    0x1.fffffffffffffp-54
-  },
-  { // Entry 219
-    0x1.304d6aeca252531475ec9182369ba415p69,
-    0x1.7ffffffffffffp5
-  },
-  { // Entry 220
-    0x1.304d6aeca254b3af4bc5d6293d5f65c7p69,
-    0x1.8p5
-  },
-  { // Entry 221
-    0x1.304d6aeca257144a219f1ad50558d32cp69,
-    0x1.8000000000001p5
-  },
-  { // Entry 222
-    0x1.f8e6c24b558ef174995bcfad495149f5p-76,
-    -0x1.a000000000001p5
-  },
-  { // Entry 223
-    0x1.f8e6c24b5592e3421df27acf1e080144p-76,
-    -0x1.ap5
-  },
-  { // Entry 224
-    0x1.f8e6c24b5596d50fa28925f8d659c1bfp-76,
-    -0x1.9ffffffffffffp5
-  },
-  { // Entry 225
-    0x1.55779b984f395dea36a277b8bee2e64cp115,
-    0x1.3ffffffffffffp6
-  },
-  { // Entry 226
-    0x1.55779b984f3eb3c8a503b4a8e2489d98p115,
-    0x1.4p6
-  },
-  { // Entry 227
-    0x1.55779b984f4409a71364f1ae5d280e69p115,
-    0x1.4000000000001p6
-  },
-  { // Entry 228
-    0x1.07b7112bc1fbc2c0f9c1365330930310p-127,
-    -0x1.6000000000001p6
-  },
-  { // Entry 229
-    0x1.07b7112bc1ffe19d3e703e4a794f7372p-127,
-    -0x1.6p6
-  },
-  { // Entry 230
-    0x1.07b7112bc2040079831f46523d7cf692p-127,
-    -0x1.5ffffffffffffp6
-  },
-  { // Entry 231
-    0x1.40a4b9c27150866176d22f2139d1d40fp923,
-    0x1.3ffffffffffffp9
-  },
-  { // Entry 232
-    0x1.40a4b9c271789af8af205bb34f743337p923,
-    0x1.4p9
-  },
-  { // Entry 233
-    0x1.40a4b9c271a0af8fe76e8d47f7fd9c26p923,
-    0x1.4000000000001p9
-  },
-  { // Entry 234
-    0x1.44a3824e525d56fc3f02f886375ec876p-1016,
-    -0x1.6000000000001p9
-  },
-  { // Entry 235
-    0x1.44a3824e5285eb6c88cd46ba5deb457ap-1016,
-    -0x1.6p9
-  },
-  { // Entry 236
-    0x1.44a3824e52ae7fdcd2979a011280fbc8p-1016,
-    -0x1.5ffffffffffffp9
-  },
-  { // Entry 237
-    0x1.03996528e072b78a332480884c79baf7p75,
-    0x1.9ffffffffffffp5
-  },
-  { // Entry 238
-    0x1.03996528e074bebcfd76416fc2c0eb92p75,
-    0x1.ap5
-  },
-  { // Entry 239
-    0x1.03996528e076c5efc7c8025b476db0d0p75,
-    0x1.a000000000001p5
-  },
-  { // Entry 240
-    0x1.aebabae3a417ee6e7faf9ecfc951040cp-70,
-    -0x1.8000000000001p5
-  },
-  { // Entry 241
-    0x1.aebabae3a41b4be3f576e70303a37932p-70,
-    -0x1.8p5
-  },
-  { // Entry 242
-    0x1.aebabae3a41ea9596b3e2f3cf8e0d9e7p-70,
-    -0x1.7ffffffffffffp5
-  },
-  { // Entry 243
-    0x1.f1056dc7bf1b0fc857b67999f5035273p126,
-    0x1.5ffffffffffffp6
-  },
-  { // Entry 244
-    0x1.f1056dc7bf22d3de0ed57615bc501f8bp126,
-    0x1.6p6
-  },
-  { // Entry 245
-    0x1.f1056dc7bf2a97f3c5f472b093f3c91fp126,
-    0x1.6000000000001p6
-  },
-  { // Entry 246
-    0x1.7fd974d372de49099ee7bf48ae346eaap-116,
-    -0x1.4000000000001p6
-  },
-  { // Entry 247
-    0x1.7fd974d372e4486f72358acdd12690e5p-116,
-    -0x1.4p6
-  },
-  { // Entry 248
-    0x1.7fd974d372ea47d54583566af1b00056p-116,
-    -0x1.3ffffffffffffp6
-  },
-  { // Entry 249
-    0x1.93bf4ec282bd3b36cd2f4011488a8364p1015,
-    0x1.5ffffffffffffp9
-  },
-  { // Entry 250
-    0x1.93bf4ec282efb320a57f9ae02e01ae51p1015,
-    0x1.6p9
-  },
-  { // Entry 251
-    0x1.93bf4ec283222b0a7dcffbfe10b3e34ap1015,
-    0x1.6000000000001p9
-  },
-  { // Entry 252
-    0x1.98c72ca0cab14eda5aca97bee0fdd48fp-924,
-    -0x1.4000000000001p9
-  },
-  { // Entry 253
-    0x1.98c72ca0cae467bfeee3f11a4aa26f77p-924,
-    -0x1.4p9
-  },
-  { // Entry 254
-    0x1.98c72ca0cb1780a582fd50d8d0f98d8bp-924,
-    -0x1.3ffffffffffffp9
-  },
-  { // Entry 255
-    0x1.61013a44a981c910f20f80756007120ap-822,
-    -0x1.1cb90bfbe8e7cp9
-  },
-  { // Entry 256
-    0x1.8087717a7f08a7251210e71d47acc5e3p-905,
-    -0x1.397217f7d1cf8p9
-  },
-  { // Entry 257
-    0x1.a2de59d85452109f34165fa55f9e4e7bp-988,
-    -0x1.562b23f3bab73p9
-  },
-  { // Entry 258
-    0x1.fffffffffffff35793c76730080dfb9bp-2,
-    -0x1.62e42fefa39f0p-1
-  },
-  { // Entry 259
-    0x1.00000000000001abc9e3b39803f45c1cp-1,
-    -0x1.62e42fefa39efp-1
-  },
-  { // Entry 260
-    0x1.00000000000009abc9e3b3980421ba6bp-1,
-    -0x1.62e42fefa39eep-1
-  },
-  { // Entry 261
-    0x1.6a09e667f3bcc48f0965009f2778df91p-1,
-    -0x1.62e42fefa39f0p-2
-  },
-  { // Entry 262
-    0x1.6a09e667f3bcca3730fea06e1a966c06p-1,
-    -0x1.62e42fefa39efp-2
-  },
-  { // Entry 263
-    0x1.6a09e667f3bccfdf5898403d0dca9919p-1,
-    -0x1.62e42fefa39eep-2
-  },
-  { // Entry 264
-    0x1.ae89f995ad3ad33f3c451118e4ad74c5p-1,
-    -0x1.62e42fefa39f0p-3
-  },
-  { // Entry 265
-    0x1.ae89f995ad3ad69c50383c735a575052p-1,
-    -0x1.62e42fefa39efp-3
-  },
-  { // Entry 266
-    0x1.ae89f995ad3ad9f9642b67cdd007e606p-1,
-    -0x1.62e42fefa39eep-3
-  },
-  { // Entry 267
-    0x1.d5818dcfba4870ea30f8974f369eab8cp-1,
-    -0x1.62e42fefa39f0p-4
-  },
-  { // Entry 268
-    0x1.d5818dcfba4872bfb28667097f10807ep-1,
-    -0x1.62e42fefa39efp-4
-  },
-  { // Entry 269
-    0x1.d5818dcfba487495341436c3c7842af1p-1,
-    -0x1.62e42fefa39eep-4
-  },
-  { // Entry 270
-    0x1.ea4afa2a490d9797069887879b7c974ep-1,
-    -0x1.62e42fefa39f0p-5
-  },
-  { // Entry 271
-    0x1.ea4afa2a490d988c2c159cac2248a01bp-1,
-    -0x1.62e42fefa39efp-5
-  },
-  { // Entry 272
-    0x1.ea4afa2a490d99815192b1d0a915237bp-1,
-    -0x1.62e42fefa39eep-5
-  },
-  { // Entry 273
-    0x1.f50765b6e4540611e065c14f105024cep-1,
-    -0x1.62e42fefa39f0p-6
-  },
-  { // Entry 274
-    0x1.f50765b6e454068f223f2f082551b8efp-1,
-    -0x1.62e42fefa39efp-6
-  },
-  { // Entry 275
-    0x1.f50765b6e454070c64189cc13a536c5fp-1,
-    -0x1.62e42fefa39eep-6
-  },
-  { // Entry 276
-    0x1.059b0d315857435f6c51ceeb0a6b46e6p0,
-    0x1.62e42fefa39eep-6
-  },
-  { // Entry 277
-    0x1.059b0d31585743a0d3151b41203c26eep0,
-    0x1.62e42fefa39efp-6
-  },
-  { // Entry 278
-    0x1.059b0d31585743e239d86797360d174fp0,
-    0x1.62e42fefa39f0p-6
-  },
-  { // Entry 279
-    0x1.0b5586cf9890f587f5279294114165a2p0,
-    0x1.62e42fefa39eep-5
-  },
-  { // Entry 280
-    0x1.0b5586cf9890f60d9feafa6059bc4b08p0,
-    0x1.62e42fefa39efp-5
-  },
-  { // Entry 281
-    0x1.0b5586cf9890f6934aae622ca2377342p0,
-    0x1.62e42fefa39f0p-5
-  },
-  { // Entry 282
-    0x1.172b83c7d517ac7c7c0d3432ad543afap0,
-    0x1.62e42fefa39eep-4
-  },
-  { // Entry 283
-    0x1.172b83c7d517ad93a790fc07c501430cp0,
-    0x1.62e42fefa39efp-4
-  },
-  { // Entry 284
-    0x1.172b83c7d517aeaad314c3dcdcaf6249p0,
-    0x1.62e42fefa39f0p-4
-  },
-  { // Entry 285
-    0x1.306fe0a31b714ffe7eec6bebf7ca9d7dp0,
-    0x1.62e42fefa39eep-3
-  },
-  { // Entry 286
-    0x1.306fe0a31b71525f5eadb222da6cfb5ap0,
-    0x1.62e42fefa39efp-3
-  },
-  { // Entry 287
-    0x1.306fe0a31b7154c03e6ef859bd141af7p0,
-    0x1.62e42fefa39f0p-3
-  },
-  { // Entry 288
-    0x1.6a09e667f3bcc2320d5de690c78172aep0,
-    0x1.62e42fefa39eep-2
-  },
-  { // Entry 289
-    0x1.6a09e667f3bcc7da34f7865fba958b33p0,
-    0x1.62e42fefa39efp-2
-  },
-  { // Entry 290
-    0x1.6a09e667f3bccd825c91262eadc04456p0,
-    0x1.62e42fefa39f0p-2
-  },
-  { // Entry 291
-    0x1.ffffffffffffeca86c3898cff8779a1ap0,
-    0x1.62e42fefa39eep-1
-  },
-  { // Entry 292
-    0x1.fffffffffffffca86c3898cff81cdd7cp0,
-    0x1.62e42fefa39efp-1
-  },
-  { // Entry 293
-    0x1.0000000000000654361c4c67fc21106fp1,
-    0x1.62e42fefa39f0p-1
-  },
-  { // Entry 294
-    0x1.ffffffffffffd950d871319ff1aa4328p1,
-    0x1.62e42fefa39eep0
-  },
-  { // Entry 295
-    0x1.fffffffffffff950d871319ff03f50afp1,
-    0x1.62e42fefa39efp0
-  },
-  { // Entry 296
-    0x1.0000000000000ca86c3898cff86a2f1bp2,
-    0x1.62e42fefa39f0p0
-  },
-  { // Entry 297
-    0x1.ffffffffffffb2a1b0e2633fe640c21bp3,
-    0x1.62e42fefa39eep1
-  },
-  { // Entry 298
-    0x1.fffffffffffff2a1b0e2633fe094f837p3,
-    0x1.62e42fefa39efp1
-  },
-  { // Entry 299
-    0x1.0000000000001950d871319ff174972ap4,
-    0x1.62e42fefa39f0p1
-  },
-  { // Entry 300
-    0x1.ffffffffffff654361c4c67fd8327361p7,
-    0x1.62e42fefa39eep2
-  },
-  { // Entry 301
-    0x1.ffffffffffffe54361c4c67fc1834bd3p7,
-    0x1.62e42fefa39efp2
-  },
-  { // Entry 302
-    0x1.00000000000032a1b0e2633fe56a1222p8,
-    0x1.62e42fefa39f0p2
-  },
-  { // Entry 303
-    0x1.fffffffffffeca86c3898cffdf28a36fp15,
-    0x1.62e42fefa39eep3
-  },
-  { // Entry 304
-    0x1.ffffffffffffca86c3898cff846c0534p15,
-    0x1.62e42fefa39efp3
-  },
-  { // Entry 305
-    0x1.000000000000654361c4c67fd4d7b37cp16,
-    0x1.62e42fefa39f0p3
-  },
-  { // Entry 306
-    0x1.fffffffffffd950d87131a007960398fp31,
-    0x1.62e42fefa39eep4
-  },
-  { // Entry 307
-    0x1.ffffffffffff950d871319ff0e6dc0a3p31,
-    0x1.62e42fefa39efp4
-  },
-  { // Entry 308
-    0x1.000000000000ca86c3898cffd1bda3dbp32,
-    0x1.62e42fefa39f0p4
-  },
-  { // Entry 309
-    0x1.ffffffffffb2a1b0e26345b8dfe00697p1023,
-    0x1.62e42fefa39eep9
-  },
-  { // Entry 310
-    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
-    0x1.62e42fefa39efp9
-  },
-  { // Entry 311
-    HUGE_VAL,
-    0x1.62e42fefa39f0p9
-  },
-  { // Entry 312
-    0x1.c8464f76161962ed1930796c0794254ap-1071,
-    -0x1.72e42fefa39f0p9
-  },
-  { // Entry 313
-    0x1.c8464f7616526bb707f34028f1d63786p-1071,
-    -0x1.72e42fefa39efp9
-  },
-  { // Entry 314
-    0x1.c8464f76168b7480f6b60e06f556221bp-1071,
-    -0x1.72e42fefa39eep9
-  },
-  { // Entry 315
-    0x1.8ebef9eac820a84b86d1ce1a4424435fp-1,
-    -0x1.0000000000001p-2
-  },
-  { // Entry 316
-    0x1.8ebef9eac820ae8682b9793ac6d1e772p-1,
-    -0x1.0p-2
-  },
-  { // Entry 317
-    0x1.8ebef9eac820b1a400ad4ecb083211f6p-1,
-    -0x1.fffffffffffffp-3
-  },
-  { // Entry 318
-    0x1.c3d6a24ed82214f0d01daf8e1a8d2ca7p-1,
-    -0x1.0000000000001p-3
-  },
-  { // Entry 319
-    0x1.c3d6a24ed82218787d624d3e5eba95f5p-1,
-    -0x1.0p-3
-  },
-  { // Entry 320
-    0x1.c3d6a24ed8221a3c54049c1680d3f05ep-1,
-    -0x1.fffffffffffffp-4
-  },
-  { // Entry 321
-    0x1.e0fabfbc702a3b04e86023f0691cc597p-1,
-    -0x1.0000000000001p-4
-  },
-  { // Entry 322
-    0x1.e0fabfbc702a3ce5e31fe0609358bafdp-1,
-    -0x1.0p-4
-  },
-  { // Entry 323
-    0x1.e0fabfbc702a3dd6607fbe98a8776a0ep-1,
-    -0x1.fffffffffffffp-5
-  },
-  { // Entry 324
-    0x1.f03f56a88b5d781c905f6b51c76ae981p-1,
-    -0x1.0000000000001p-5
-  },
-  { // Entry 325
-    0x1.f03f56a88b5d7914b00abf97762735d1p-1,
-    -0x1.0p-5
-  },
-  { // Entry 326
-    0x1.f03f56a88b5d7990bfe069ba4d858a7fp-1,
-    -0x1.fffffffffffffp-6
-  },
-  { // Entry 327
-    0x1.f80feabfeefa48a9cd112d592c437012p-1,
-    -0x1.0000000000001p-6
-  },
-  { // Entry 328
-    0x1.f80feabfeefa4927d10bdd54ead5aa46p-1,
-    -0x1.0p-6
-  },
-  { // Entry 329
-    0x1.f80feabfeefa4966d3093552ca1ed330p-1,
-    -0x1.fffffffffffffp-7
-  },
-  { // Entry 330
-    0x1.fc03fd56aa224f587c3f685d543e53d7p-1,
-    -0x1.0000000000001p-7
-  },
-  { // Entry 331
-    0x1.fc03fd56aa224f97fcbf1332988842dep-1,
-    -0x1.0p-7
-  },
-  { // Entry 332
-    0x1.fc03fd56aa224fb7bcfee89d3aad3d5cp-1,
-    -0x1.fffffffffffffp-8
-  },
-  { // Entry 333
-    0x1.fe00ffaabffbbc51cd0e16d8b005d662p-1,
-    -0x1.0000000000001p-8
-  },
-  { // Entry 334
-    0x1.fe00ffaabffbbc71ad1e1184afc19c7ep-1,
-    -0x1.0p-8
-  },
-  { // Entry 335
-    0x1.fe00ffaabffbbc819d260edaaf9f804bp-1,
-    -0x1.fffffffffffffp-9
-  },
-  { // Entry 336
-    0x1.ff003ff556aa887b68800bb5d27da4ffp-1,
-    -0x1.0000000000001p-9
-  },
-  { // Entry 337
-    0x1.ff003ff556aa888b60820b6087d1e91ap-1,
-    -0x1.0p-9
-  },
-  { // Entry 338
-    0x1.ff003ff556aa88935c830b35e27c0b57p-1,
-    -0x1.fffffffffffffp-10
-  },
-  { // Entry 339
-    0x1.ff800ffeaabffee6fc4efcfc6459de13p-1,
-    -0x1.0000000000001p-10
-  },
-  { // Entry 340
-    0x1.ff800ffeaabffeeefa4f3cf70f59d9bfp-1,
-    -0x1.0p-10
-  },
-  { // Entry 341
-    0x1.ff800ffeaabffef2f94f5cf464d9d7a1p-1,
-    -0x1.fffffffffffffp-11
-  },
-  { // Entry 342
-    0x1.fff0003fff5556a9a8908b40b320849dp-1,
-    -0x1.0000000000001p-13
-  },
-  { // Entry 343
-    0x1.fff0003fff5556aaa8888b60b2cb2ff2p-1,
-    -0x1.0p-13
-  },
-  { // Entry 344
-    0x1.fff0003fff5556ab28848b70b2a0859dp-1,
-    -0x1.fffffffffffffp-14
-  },
-  { // Entry 345
-    0x1.48b5e3c3e81863e50ffc2ecb79f3f7c3p0,
-    0x1.fffffffffffffp-3
-  },
-  { // Entry 346
-    0x1.48b5e3c3e81866767bc3b69baabe534ep0,
-    0x1.0p-2
-  },
-  { // Entry 347
-    0x1.48b5e3c3e8186b995352c63c0c6272ecp0,
-    0x1.0000000000001p-2
-  },
-  { // Entry 348
-    0x1.2216045b6f5cce7ad7642815839c8160p0,
-    0x1.fffffffffffffp-4
-  },
-  { // Entry 349
-    0x1.2216045b6f5ccf9ced688384e06b8d42p0,
-    0x1.0p-3
-  },
-  { // Entry 350
-    0x1.2216045b6f5cd1e119713a639a0d0b49p0,
-    0x1.0000000000001p-3
-  },
-  { // Entry 351
-    0x1.1082b577d34ed74d70455df87e5de089p0,
-    0x1.fffffffffffffp-5
-  },
-  { // Entry 352
-    0x1.1082b577d34ed7d5b1a019e225c9a951p0,
-    0x1.0p-4
-  },
-  { // Entry 353
-    0x1.1082b577d34ed8e6345591b574a20744p0,
-    0x1.0000000000001p-4
-  },
-  { // Entry 354
-    0x1.08205601127ec94c03bb0367085a3c64p0,
-    0x1.fffffffffffffp-6
-  },
-  { // Entry 355
-    0x1.08205601127ec98e0bd083aba80c97a6p0,
-    0x1.0p-5
-  },
-  { // Entry 356
-    0x1.08205601127eca121bfb8434e7717fb0p0,
-    0x1.0000000000001p-5
-  },
-  { // Entry 357
-    0x1.04080ab55de3915a37635d3d47dc3df6p0,
-    0x1.fffffffffffffp-7
-  },
-  { // Entry 358
-    0x1.04080ab55de3917ab864b3e9044e6b45p0,
-    0x1.0p-6
-  },
-  { // Entry 359
-    0x1.04080ab55de391bbba6761407d32d213p0,
-    0x1.0000000000001p-6
-  },
-  { // Entry 360
-    0x1.0202015600445afc12436d5c6f22ecf0p0,
-    0x1.fffffffffffffp-8
-  },
-  { // Entry 361
-    0x1.0202015600445b0c326382bc73689d32p0,
-    0x1.0p-7
-  },
-  { // Entry 362
-    0x1.0202015600445b2c72a3ad7c7bf400bcp0,
-    0x1.0000000000001p-7
-  },
-  { // Entry 363
-    0x1.0100802ab55777ca8226417cbfee2ff3p0,
-    0x1.fffffffffffffp-9
-  },
-  { // Entry 364
-    0x1.0100802ab55777d28a2a42d26aa9ee67p0,
-    0x1.0p-8
-  },
-  { // Entry 365
-    0x1.0100802ab55777e29a32457dc0216c10p0,
-    0x1.0000000000001p-8
-  },
-  { // Entry 366
-    0x1.008020055600110e7b4155a81af484b1p0,
-    0x1.fffffffffffffp-10
-  },
-  { // Entry 367
-    0x1.00802005560011127d41d5bd72f4c8f3p0,
-    0x1.0p-9
-  },
-  { // Entry 368
-    0x1.008020055600111a8142d5e822f551a7p0,
-    0x1.0000000000001p-9
-  },
-  { // Entry 369
-    0x1.00400800aab555dbe30e5ce71927cbf0p0,
-    0x1.fffffffffffffp-11
-  },
-  { // Entry 370
-    0x1.00400800aab555dde38e6ce86e9277aap0,
-    0x1.0p-10
-  },
-  { // Entry 371
-    0x1.00400800aab555e1e48e8ceb1967cf29p0,
-    0x1.0000000000001p-10
-  },
-  { // Entry 372
-    0x1.00080020005555ffc10f1275295d4349p0,
-    0x1.fffffffffffffp-14
-  },
-  { // Entry 373
-    0x1.00080020005556000111127d297298c9p0,
-    0x1.0p-13
-  },
-  { // Entry 374
-    0x1.00080020005556008115128d299d43c9p0,
-    0x1.0000000000001p-13
-  },
-  { // Entry 375
-    0x1.44109edb206a938fad670b68ab99b768p-739,
-    -0x1.0000000000001p9
-  },
-  { // Entry 376
-    0x1.44109edb209315a388cb1b433ecd1a8ap-739,
-    -0x1.0p9
-  },
-  { // Entry 377
-    0x1.44109edb20a756ad767d2516a15514ccp-739,
-    -0x1.fffffffffffffp8
-  },
-  { // Entry 378
-    0x1.9755956ad4d04a606a8cd9ddfb368effp-370,
-    -0x1.0000000000001p8
-  },
-  { // Entry 379
-    0x1.9755956ad4e9bfb9c13a27ae4c07ed37p-370,
-    -0x1.0p8
-  },
-  { // Entry 380
-    0x1.9755956ad4f67a666c90cf2f3488a463p-370,
-    -0x1.fffffffffffffp7
-  },
-  { // Entry 381
-    0x1.42eb9f39afa6992bf3a1379715f6683bp-185,
-    -0x1.0000000000001p7
-  },
-  { // Entry 382
-    0x1.42eb9f39afb0b088ed6eb4f43cc9ec7bp-185,
-    -0x1.0p7
-  },
-  { // Entry 383
-    0x1.42eb9f39afb5bc376a5573c1164a9c03p-185,
-    -0x1.fffffffffffffp6
-  },
-  { // Entry 384
-    0x1.969d47321e46604a105f8de32d9dc685p-93,
-    -0x1.0000000000001p6
-  },
-  { // Entry 385
-    0x1.969d47321e4cbabf2d28070963b04194p-93,
-    -0x1.0p6
-  },
-  { // Entry 386
-    0x1.969d47321e4fe7f9bb8c43a606692a48p-93,
-    -0x1.fffffffffffffp5
-  },
-  { // Entry 387
-    0x1.c8464f761642f155fab3e5bb144fb910p-47,
-    -0x1.0000000000001p5
-  },
-  { // Entry 388
-    0x1.c8464f76164681e299a0124487884d64p-47,
-    -0x1.0p5
-  },
-  { // Entry 389
-    0x1.c8464f7616484a28e916288bed8e0ebfp-47,
-    -0x1.fffffffffffffp4
-  },
-  { // Entry 390
-    0x1.e355bbaee85aca50a3c50ad2ccffbb29p-24,
-    -0x1.0000000000001p4
-  },
-  { // Entry 391
-    0x1.e355bbaee85cada65f73f32e88fb3cc6p-24,
-    -0x1.0p4
-  },
-  { // Entry 392
-    0x1.e355bbaee85d9f513d4b675d1c3923f6p-24,
-    -0x1.fffffffffffffp3
-  },
-  { // Entry 393
-    0x1.5fc21041027a1bdec525f6d2b48a4637p-12,
-    -0x1.0000000000001p3
-  },
-  { // Entry 394
-    0x1.5fc21041027acbbfcd46780fee71ead2p-12,
-    -0x1.0p3
-  },
-  { // Entry 395
-    0x1.5fc21041027b23b05156b8aeac5feea5p-12,
-    -0x1.fffffffffffffp2
-  },
-  { // Entry 396
-    0x1.2c155b8213cefc79340f8e386263456ap-6,
-    -0x1.0000000000001p2
-  },
-  { // Entry 397
-    0x1.2c155b8213cf477e8af0132c2ae23d4ap-6,
-    -0x1.0p2
-  },
-  { // Entry 398
-    0x1.2c155b8213cf6d01366055a6162a395fp-6,
-    -0x1.fffffffffffffp1
-  },
-  { // Entry 399
-    0x1.152aaa3bf81c975862272f0f3b13f586p-3,
-    -0x1.0000000000001p1
-  },
-  { // Entry 400
-    0x1.152aaa3bf81cb9fdb76eae12d029571fp-3,
-    -0x1.0p1
-  },
-  { // Entry 401
-    0x1.152aaa3bf81ccb5062126d949c53c7ebp-3,
-    -0x1.fffffffffffffp0
-  },
-  { // Entry 402
-    0x1.78b56362cef364df9544f11b0a499031p-2,
-    -0x1.0000000000001p0
-  },
-  { // Entry 403
-    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
-    -0x1.0p0
-  },
-  { // Entry 404
-    0x1.78b56362cef3883096963481dd66523fp-2,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 405
-    0x1.9476504ba8399f5b97cae35beb78c3c5p738,
-    0x1.fffffffffffffp8
-  },
-  { // Entry 406
-    0x1.9476504ba852e6c09c8567c01c5a6648p738,
-    0x1.0p9
-  },
-  { // Entry 407
-    0x1.9476504ba885758aa5fa7545e10e8e46p738,
-    0x1.0000000000001p9
-  },
-  { // Entry 408
-    0x1.41c7a8814be192a5df25b042af824efdp369,
-    0x1.fffffffffffffp7
-  },
-  { // Entry 409
-    0x1.41c7a8814beba0e323300f777da65854p369,
-    0x1.0p8
-  },
-  { // Entry 410
-    0x1.41c7a8814bffbd5dab44ced26faccbfbp369,
-    0x1.0000000000001p8
-  },
-  { // Entry 411
-    0x1.95e54c5dd41b20600dd601a0ae672ff4p184,
-    0x1.fffffffffffffp6
-  },
-  { // Entry 412
-    0x1.95e54c5dd42177f53f4d5219df11ca3bp184,
-    0x1.0p7
-  },
-  { // Entry 413
-    0x1.95e54c5dd42e271fa23bf3585b655060p184,
-    0x1.0000000000001p7
-  },
-  { // Entry 414
-    0x1.425982cf597a4d52c89ea857bbaa807ap92,
-    0x1.fffffffffffffp5
-  },
-  { // Entry 415
-    0x1.425982cf597cd205ce3d5b4edb031756p92,
-    0x1.0p6
-  },
-  { // Entry 416
-    0x1.425982cf5981db6bd97ac14c35e666c6p92,
-    0x1.0000000000001p6
-  },
-  { // Entry 417
-    0x1.1f43fcc4b661a8944ac389b609e0f74ep46,
-    0x1.fffffffffffffp4
-  },
-  { // Entry 418
-    0x1.1f43fcc4b662c7d84788401842174074p46,
-    0x1.0p5
-  },
-  { // Entry 419
-    0x1.1f43fcc4b66506604111ace0104fc90ep46,
-    0x1.0000000000001p5
-  },
-  { // Entry 420
-    0x1.0f2ebd0a80017cfac56c30874afbab98p23,
-    0x1.fffffffffffffp3
-  },
-  { // Entry 421
-    0x1.0f2ebd0a8002049223f170882b5ee5efp23,
-    0x1.0p4
-  },
-  { // Entry 422
-    0x1.0f2ebd0a800313c0e0fbf08ab7886866p23,
-    0x1.0000000000001p4
-  },
-  { // Entry 423
-    0x1.749ea7d470c681e43618ec18d53f1b21p11,
-    0x1.fffffffffffffp2
-  },
-  { // Entry 424
-    0x1.749ea7d470c6df0be00e084a815d1de6p11,
-    0x1.0p3
-  },
-  { // Entry 425
-    0x1.749ea7d470c7995b33f840ae1f76e2e7p11,
-    0x1.0000000000001p3
-  },
-  { // Entry 426
-    0x1.b4c902e273a54fdfb6777166e6760dfbp5,
-    0x1.fffffffffffffp1
-  },
-  { // Entry 427
-    0x1.b4c902e273a58678d6d3bfdb93db96d0p5,
-    0x1.0p2
-  },
-  { // Entry 428
-    0x1.b4c902e273a5f3ab178c5cc50320149cp5,
-    0x1.0000000000001p2
-  },
-  { // Entry 429
-    0x1.d8e64b8d4ddabf34d582cd2909aafb2ap2,
-    0x1.fffffffffffffp0
-  },
-  { // Entry 430
-    0x1.d8e64b8d4ddadcc33a3ba206b68abba8p2,
-    0x1.0p1
-  },
-  { // Entry 431
-    0x1.d8e64b8d4ddb17e003ad4bc215d4ef86p2,
-    0x1.0000000000001p1
-  },
-  { // Entry 432
-    0x1.5bf0a8b145768a55da73221499fc4cfbp1,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 433
-    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
-    0x1.0p0
-  },
-  { // Entry 434
-    0x1.5bf0a8b14576aaf46a43c097b87bc833p1,
-    0x1.0000000000001p0
-  },
-  { // Entry 435
-    0x1.ffc045692fc9dbc7b7e032576e5e26f8p1023,
-    0x1.62e41ffffffffp9
-  },
-  { // Entry 436
-    0x1.ffc045693009d3d065062f9267dff55ep1023,
-    0x1.62e42p9
-  },
-  { // Entry 437
-    0x1.ffc045693049cbd9122c34cc62776884p1023,
-    0x1.62e4200000001p9
-  },
-  { // Entry 438
-    0x1.c87f21775a0f1a25755fb027f94949a1p-1071,
-    -0x1.72e4200000001p9
-  },
-  { // Entry 439
-    0x1.c87f21775a482a09a44af59c3c3ae44bp-1071,
-    -0x1.72e42p9
-  },
-  { // Entry 440
-    0x1.c87f21775a8139edd33642327bb25c5fp-1071,
-    -0x1.72e41ffffffffp9
-  },
-  { // Entry 441
-    HUGE_VAL,
-    0x1.0p1020
-  },
-  { // Entry 442
-    HUGE_VAL,
-    0x1.999999999999ap1020
-  },
-  { // Entry 443
-    HUGE_VAL,
-    0x1.199999999999ap1021
-  },
-  { // Entry 444
-    HUGE_VAL,
-    0x1.6666666666667p1021
-  },
-  { // Entry 445
-    HUGE_VAL,
-    0x1.b333333333334p1021
-  },
-  { // Entry 446
-    HUGE_VAL,
-    0x1.0p1022
-  },
-  { // Entry 447
-    HUGE_VAL,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 448
-    HUGE_VAL,
-    HUGE_VAL
-  },
-  { // Entry 449
-    HUGE_VAL,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 450
-    HUGE_VAL,
-    0x1.ffffffffffffep1023
-  },
-  { // Entry 451
-    0x1.724046eb09338d2991a30893e7f4108dp4,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 452
-    0x1.33dedc855935efaaaf578ced3f821f96p2,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 453
-    0x1.5bf0a8b14576aaf46a43c097b87bc833p1,
-    0x1.0000000000001p0
-  },
-  { // Entry 454
-    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
-    0x1.0p0
-  },
-  { // Entry 455
-    0x1.5bf0a8b145768a55da73221499fc4cfbp1,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 456
-    0x1.18bd669471caa5585c71cc32a792ac85p1,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 457
-    0x1.p0,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 458
-    0x1.p0,
-    0x1.0p-1022
-  },
-  { // Entry 459
-    0x1.p0,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 460
-    0x1.p0,
-    0x1.ffffffffffffcp-1023
-  },
-  { // Entry 461
-    0x1.p0,
-    0x1.0p-1073
-  },
-  { // Entry 462
-    0x1.p0,
-    0x1.0p-1074
-  },
-  { // Entry 463
-    0x1.p0,
-    0.0
-  },
-  { // Entry 464
-    0x1.p0,
-    -0.0
-  },
-  { // Entry 465
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074
-  },
-  { // Entry 466
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1073
-  },
-  { // Entry 467
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffcp-1023
-  },
-  { // Entry 468
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 469
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1022
-  },
-  { // Entry 470
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 471
-    0x1.d2e171cf048793e16a7f9406e00c2dd9p-2,
-    -0x1.921fb54442d18p-1
-  },
-  { // Entry 472
-    0x1.78b56362cef3883096963481dd66523fp-2,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 473
-    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
-    -0x1.0p0
-  },
-  { // Entry 474
-    0x1.78b56362cef364df9544f11b0a499031p-2,
-    -0x1.0000000000001p0
-  },
-  { // Entry 475
-    0x1.a9bcc46f767dfb0d4eec2b1337a04b9ap-3,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 476
-    0x1.620227b598ef9949e60e44dc45d14d0cp-5,
-    -0x1.921fb54442d18p1
-  },
-  { // Entry 477
-    0.0,
-    -0x1.ffffffffffffep1023
-  },
-  { // Entry 478
-    0.0,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 479
-    0.0,
-    -HUGE_VAL
-  },
-  { // Entry 480
-    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
-    0x1.62e42fefa39efp9
-  },
-  { // Entry 481
-    HUGE_VAL,
-    0x1.62e42fefa39f0p9
-  },
-  { // Entry 482
-    0x1.000000000007bbcffb06f8fdab896db0p-1022,
-    -0x1.6232bdd7abcd2p9
-  },
-  { // Entry 483
-    0x1.ffffffffffcf779ff60df40c631419a2p-1023,
-    -0x1.6232bdd7abcd3p9
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_exp, exp_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_exp_intel_data)/sizeof(exp_intel_data_t); i++) {
-    EXPECT_DOUBLE_EQ(g_exp_intel_data[i].expected, exp(g_exp_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_expf_test.cpp b/tests/math_expf_test.cpp
deleted file mode 100644
index 257aa26..0000000
--- a/tests/math_expf_test.cpp
+++ /dev/null
@@ -1,1439 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  float expected;
-  float call_data;
-} expf_intel_data_t;
-
-static expf_intel_data_t g_expf_intel_data[] = {
-  { // Entry 0
-    0x1.e0fabf081222780d74c00fda30aa3943p-1,
-    -0x1.000006p-4
-  },
-  { // Entry 1
-    0x1.e0fabecbf2ca9acd25eef63af858ed60p-1,
-    -0x1.000008p-4
-  },
-  { // Entry 2
-    0x1.fc03fccfb913167ecfa84f48f5b7205bp-1,
-    -0x1.000022p-7
-  },
-  { // Entry 3
-    0x1.c3d642ff9bf2d294c0ce088e8bad27b3p-1,
-    -0x1.0001b0p-3
-  },
-  { // Entry 4
-    0x1.ff800efaebb8218fc5d491b9868689aap-1,
-    -0x1.000208p-10
-  },
-  { // Entry 5
-    0x1.8ebd9d0446182e9056f60489fcd002cdp-1,
-    -0x1.000380p-2
-  },
-  { // Entry 6
-    0x1.e0f995010fd96d3f294c3ffe0e512426p-1,
-    -0x1.0009f0p-4
-  },
-  { // Entry 7
-    0x1.78a3bb4c17adf5b2d40e6ee3dbd4866fp-2,
-    -0x1.000cp0
-  },
-  { // Entry 8
-    0x1.ffdffd003aacbfca6591e7a38368b94cp-1,
-    -0x1.0020p-12
-  },
-  { // Entry 9
-    0x1.fdff416aa3827d6335a1ffa43d440562p-1,
-    -0x1.00e0p-8
-  },
-  { // Entry 10
-    0x1.99007ffbdffac31dff90da5ee46a16fap-47,
-    -0x1.00e0p5
-  },
-  { // Entry 11
-    0x1.35c0dcfffb4419dc29555c232f3cdca7p-1,
-    -0x1.014ep-1
-  },
-  { // Entry 12
-    0x1.fbed9ac7ed032abfc76306a3e1dc816bp-1,
-    -0x1.05a4p-7
-  },
-  { // Entry 13
-    0x1.efddb9cccd73f71a4b2b8c01a57ae75fp-1,
-    -0x1.064cp-5
-  },
-  { // Entry 14
-    0x1.fffdf1010f37e2f1f5fca8b9c13aff70p-1,
-    -0x1.0780p-16
-  },
-  { // Entry 15
-    0x1.efc35653912fade6a17a8f8ef4109679p-1,
-    -0x1.08p-5
-  },
-  { // Entry 16
-    0x1.8b3096fffcbe737961f8c61cdf9d7137p-1,
-    -0x1.092c68p-2
-  },
-  { // Entry 17
-    0x1.fbdd1ce561f9d0a689812e5bea089f9cp-1,
-    -0x1.09ccp-7
-  },
-  { // Entry 18
-    0x1.efa1ef8a19d40bb22c5d3c315991e15fp-1,
-    -0x1.0a28p-5
-  },
-  { // Entry 19
-    0x1.ffffef09ce47ecc03d1d11f9491e6519p-1,
-    -0x1.0f6320p-21
-  },
-  { // Entry 20
-    0x1.ffffef09c047ed36f8aa1a7e67e26528p-1,
-    -0x1.0f64p-21
-  },
-  { // Entry 21
-    0x1.8890636e31f543b3853b1b305daeb933p-1,
-    -0x1.10p-2
-  },
-  { // Entry 22
-    0x1.ffffef0000483fff334aac5dabfd1c7dp-1,
-    -0x1.10p-21
-  },
-  { // Entry 23
-    0x1.ef1c2d002f7639d4d82edc01eaad1dedp-1,
-    -0x1.12ccp-5
-  },
-  { // Entry 24
-    0x1.de7f010d1c6494139b0531bd5b8f108bp-1,
-    -0x1.1534p-4
-  },
-  { // Entry 25
-    0x1.02057d1245ceaf62a21099d4441a36dbp-101,
-    -0x1.18p6
-  },
-  { // Entry 26
-    0x1.e9040734a16333567cf6f31bc90d4355p-27,
-    -0x1.211588p4
-  },
-  { // Entry 27
-    0x1.8d03f8ffffb1a2622bba81d6ab4a92ffp-14,
-    -0x1.287d08p3
-  },
-  { // Entry 28
-    0x1.e97e430257e75f497f6a3efe51ff5054p-112,
-    -0x1.33efeap6
-  },
-  { // Entry 29
-    0x1.c69c518ea7c58842c178fbd9e8cf536ep-117,
-    -0x1.421888p6
-  },
-  { // Entry 30
-    0x1.df2a0f92c17e9ff0bfb77b7abbe637a6p-126,
-    -0x1.5ad6b6p6
-  },
-  { // Entry 31
-    0x1.782f23068c10b1c5513dc3b0192d30d4p-127,
-    -0x1.5e9444p6
-  },
-  { // Entry 32
-    0x1.710602f9f4288348cc8348472a24f93dp-127,
-    -0x1.5ea7f2p6
-  },
-  { // Entry 33
-    0x1.65ab7994ff3440dcd3ee7f9b9a02423ap-127,
-    -0x1.5ec7f2p6
-  },
-  { // Entry 34
-    0x1.6031cc454f1c3e0126b71bf21e903d20p-127,
-    -0x1.5ed7bep6
-  },
-  { // Entry 35
-    0x1.b78f6800030fb7ec7984a3e7419d6fc2p-129,
-    -0x1.638066p6
-  },
-  { // Entry 36
-    0x1.f9363f3583279ac24e757eeb7654910cp-3,
-    -0x1.664ee0p0
-  },
-  { // Entry 37
-    0x1.d617f10e63adfcd67414c08dc6f9d010p-9,
-    -0x1.685b44p2
-  },
-  { // Entry 38
-    0x1.cf8c4503bf17d8c7647e93a153af37b6p-9,
-    -0x1.6941p2
-  },
-  { // Entry 39
-    0x1.d470b70e90d5097e87b925c5f63fee7dp-1,
-    -0x1.6c3328p-4
-  },
-  { // Entry 40
-    0x1.a9c0a5010de85f9a60c8104f37fc597fp-1,
-    -0x1.79c984p-3
-  },
-  { // Entry 41
-    0x1.dff126fffcdde3436322ba09db4556e1p-2,
-    -0x1.83ff38p-1
-  },
-  { // Entry 42
-    0x1.da1b8301af81384b8e495c9a4f97497fp-72,
-    -0x1.8a529ep5
-  },
-  { // Entry 43
-    0x1.babaf4ffffe29025ce751094aecf9b03p-19,
-    -0x1.93e788p3
-  },
-  { // Entry 44
-    0x1.6e953afffec7fc3b5dda17c820678821p-43,
-    -0x1.d723f8p4
-  },
-  { // Entry 45
-    0x1.ff0ff6f3d9f493ed610364861a995664p-1,
-    -0x1.e082c4p-10
-  },
-  { // Entry 46
-    0x1.ff38a40a3bc33f65f4bed5de0bdfc397p-45,
-    -0x1.e7fffep4
-  },
-  { // Entry 47
-    0x1.8028990034fcc8f33443321db08c6de8p-2,
-    -0x1.f5f922p-1
-  },
-  { // Entry 48
-    0x1.ff0248f1a17418e63d4711f3e66b7c25p-1,
-    -0x1.fbecp-10
-  },
-  { // Entry 49
-    0x1.ff0246f29f2c26c5ed51d16498d1d68ep-1,
-    -0x1.fbf0p-10
-  },
-  { // Entry 50
-    0x1.fa87f66f812849292290a9f6268ef2f9p-24,
-    -0x1.fe7ffep3
-  },
-  { // Entry 51
-    0x1.ff0046f2d716c095770d849e182a3bb2p-1,
-    -0x1.fff1fep-10
-  },
-  { // Entry 52
-    0x1.e0fb2911655006422a15c3c03f8ce847p-1,
-    -0x1.fff8fep-5
-  },
-  { // Entry 53
-    0x1.ff0040f4d6cac316bdcfa13cc5af7e7cp-1,
-    -0x1.fffep-10
-  },
-  { // Entry 54
-    0x1.ffe001081a28c420260a161b12fbb97dp-1,
-    -0x1.ffff7ep-13
-  },
-  { // Entry 55
-    0x1.0000010000008000002aaaaab5555557p0,
-    0x1.p-24
-  },
-  { // Entry 56
-    0x1.426436f5aec1c313a6d2bbcd58a388dep92,
-    0x1.000022p6
-  },
-  { // Entry 57
-    0x1.a615e50a5e54e1f2f7e57c3f0ff90c61p0,
-    0x1.0004p-1
-  },
-  { // Entry 58
-    0x1.d95d63014ce5cdcd113fee0a4be67902p2,
-    0x1.002038p1
-  },
-  { // Entry 59
-    0x1.762b6304e19f3518e90348b5d9dc544ep11,
-    0x1.0022p3
-  },
-  { // Entry 60
-    0x1.a636e00a0cd5b85262756d50b95ccc88p0,
-    0x1.002cp-1
-  },
-  { // Entry 61
-    0x1.8ca6d30587af504a6f69d3a57bf3e6a8p11,
-    0x1.02p3
-  },
-  { // Entry 62
-    0x1.dfa2d701da98a148063c3ca6d13f1bcep93,
-    0x1.045cb6p6
-  },
-  { // Entry 63
-    0x1.6340e70000e296e79073670ef9c0915dp1,
-    0x1.05533ep0
-  },
-  { // Entry 64
-    0x1.ef595b018549442ec73e3d5161768d16p5,
-    0x1.080d74p2
-  },
-  { // Entry 65
-    0x1.89acdf26f99012ec527c5e9e7c47117fp47,
-    0x1.0810eep5
-  },
-  { // Entry 66
-    0x1.f33bef00003ab93a467c94fc95deed30p5,
-    0x1.088d74p2
-  },
-  { // Entry 67
-    0x1.b0f34affff9dc2430b31c2ea04f9df90p95,
-    0x1.097f6ap6
-  },
-  { // Entry 68
-    0x1.6b4ae5522604e10273283efbf9f626c9p1,
-    0x1.0b0dbap0
-  },
-  { // Entry 69
-    0x1.000011000090800332d562ed602e3824p0,
-    0x1.10p-20
-  },
-  { // Entry 70
-    0x1.b380b0f6a12fa19df391f5034b8ae31bp0,
-    0x1.1009a4p-1
-  },
-  { // Entry 71
-    0x1.b5d293f5bfa20416721999c6be03a195p0,
-    0x1.12c1fep-1
-  },
-  { // Entry 72
-    0x1.b6609ff785a04630531354d1924f8d11p0,
-    0x1.1368p-1
-  },
-  { // Entry 73
-    0x1.78241affffd1cf967a9eec663f45677ep1,
-    0x1.13f37ap0
-  },
-  { // Entry 74
-    0x1.b77660f58bcb1ee2d757a97f82c8223dp0,
-    0x1.14acp-1
-  },
-  { // Entry 75
-    0x1.7b4d6f06cf0fbd1fbc05d50908352075p1,
-    0x1.1618p0
-  },
-  { // Entry 76
-    0x1.2765810002c2eb4265308ac8b12afa3bp0,
-    0x1.252726p-3
-  },
-  { // Entry 77
-    0x1.92b0acffff1c8646d4075976f62dfbc2p1,
-    0x1.25693ep0
-  },
-  { // Entry 78
-    0x1.fbd224c7e1970bed868fadc8012c85aep13,
-    0x1.364486p3
-  },
-  { // Entry 79
-    0x1.06007d00084349f9491104f20c89f2f9p28,
-    0x1.36e696p4
-  },
-  { // Entry 80
-    0x1.5ec18400003419ad3815b41c45384dccp0,
-    0x1.427898p-2
-  },
-  { // Entry 81
-    0x1.b23fdacfa3e0d9d21b342983e159fedcp118,
-    0x1.49477cp6
-  },
-  { // Entry 82
-    0x1.fea000e2438214ca9155d4c91bd29e9ap119,
-    0x1.4cb32cp6
-  },
-  { // Entry 83
-    0x1.f67176c19fee0c9a8d1c9cbb2d73b617p120,
-    0x1.4f686ap6
-  },
-  { // Entry 84
-    0x1.d1c241024d841bd52972be6182633733p121,
-    0x1.51e090p6
-  },
-  { // Entry 85
-    0x1.cde2dd070c7de9cb58c0caed927145d8p3,
-    0x1.55b4e2p1
-  },
-  { // Entry 86
-    0x1.f7109009cd3494af526c18af019055eep0,
-    0x1.59e08ep-1
-  },
-  { // Entry 87
-    0x1.fa7c26c12afb87b5b2b151e654f6eb90p0,
-    0x1.5d58aep-1
-  },
-  { // Entry 88
-    0x1.cf3d46cb98a571871f6dee1a80581a52p126,
-    0x1.5fb7ecp6
-  },
-  { // Entry 89
-    0x1.fd8718f3d3ed8f4a5d8dec6ae7327159p7,
-    0x1.6294e2p2
-  },
-  { // Entry 90
-    0x1.feaffef3e736b71569a474042054e8b7p7,
-    0x1.62ba22p2
-  },
-  { // Entry 91
-    0x1.f76ba46733f4146a0f94b3d1311494bcp127,
-    0x1.62d2e2p6
-  },
-  { // Entry 92
-    0x1.fd7b9f01b4df08855feb29023232fd99p127,
-    0x1.62df24p6
-  },
-  { // Entry 93
-    0x1.ff691e6dd71bc8cb1f1fcffcc32cb982p127,
-    0x1.62e302p6
-  },
-  { // Entry 94
-    0x1.ffce0a9e4fc6762c91f1a0ce358a8487p127,
-    0x1.62e3ccp6
-  },
-  { // Entry 95
-    0x1.fffc0109c402d8b23bfea3a14835831bp15,
-    0x1.62e3f0p3
-  },
-  { // Entry 96
-    0x1.fff1086632b0e9b93bc5be44d9c1dea7p127,
-    0x1.62e412p6
-  },
-  { // Entry 97
-    0x1.fff608470786d7e47ef11662f1790c2ap127,
-    0x1.62e41cp6
-  },
-  { // Entry 98
-    0x1.232b96ffec147bb31695595878ba4f9dp4,
-    0x1.735e70p1
-  },
-  { // Entry 99
-    0x1.8d2c990317660e21a64ba7723f5e0ed3p8,
-    0x1.7fp2
-  },
-  { // Entry 100
-    0x1.ed379f025781ddca240c83375ee496abp70,
-    0x1.89689ap5
-  },
-  { // Entry 101
-    0x1.3687410000e2c9f8732208c97919fb0ep0,
-    0x1.8b76d0p-3
-  },
-  { // Entry 102
-    0x1.312e79ff522af71b9e2e837bf8872972p2,
-    0x1.8fe0cap0
-  },
-  { // Entry 103
-    0x1.7008f10020226e4f59b5afd8c117c096p4,
-    0x1.915afcp1
-  },
-  { // Entry 104
-    0x1.de75e90225ec6da2cfb39dca6440b688p75,
-    0x1.a4e438p5
-  },
-  { // Entry 105
-    0x1.79f0650095fd426dce8aa803e9a4fc98p9,
-    0x1.a82f30p2
-  },
-  { // Entry 106
-    0x1.2e02d6fffffed97f27dcc3742472ffa4p1,
-    0x1.b78498p-1
-  },
-  { // Entry 107
-    0x1.fa2b60fffffeea1c7bd1c78bb5c46b17p9,
-    0x1.bae196p2
-  },
-  { // Entry 108
-    0x1.000734ffffffbaba4820a2b79d296d63p0,
-    0x1.cd3982p-14
-  },
-  { // Entry 109
-    0x1.d54158f5434edb2a234359befb2209bcp10,
-    0x1.e26570p2
-  },
-  { // Entry 110
-    0x1.99fb290176ec010d068c5f888a18d847p87,
-    0x1.e632aap5
-  },
-  { // Entry 111
-    0x1.bc8e5300003e12eaf0ea04b8c5076474p2,
-    0x1.f02d68p0
-  },
-  { // Entry 112
-    0x1.565672ffffe78168cea9ed1deed2c472p1,
-    0x1.f7b05cp-1
-  },
-  { // Entry 113
-    0x1.a664dced7cc33ede965392722b0d87bfp22,
-    0x1.f7fffep3
-  },
-  { // Entry 114
-    0x1.fe8bfd38762490c7f68e80a4bdf3a17dp90,
-    0x1.f896a2p5
-  },
-  { // Entry 115
-    0x1.cc24d50c16500084754fbddc60e7276cp2,
-    0x1.f8fffep0
-  },
-  { // Entry 116
-    0x1.72151c69ff0e9850b88cbd9a600fea50p11,
-    0x1.ff900ep2
-  },
-  { // Entry 117
-    0x1.3d59d2d8b22b41c2bb6334c9be7be902p92,
-    0x1.ffdffep5
-  },
-  { // Entry 118
-    0x1.74875300042b943ba368994eec8dcb0ep11,
-    0x1.fffbfep2
-  },
-  { // Entry 119
-    0x1.d8e6090cefe80487948c01efe3cf4c5ap2,
-    0x1.ffffdcp0
-  },
-  { // Entry 120
-    0x1.000000fffffe7ffffe2aaaabb5555702p0,
-    0x1.fffffcp-25
-  },
-  { // Entry 121
-    0x1.304d1ed9511bf5a6a5b20e4cdbf6d8ffp69,
-    0x1.7ffffep5
-  },
-  { // Entry 122
-    0x1.304d6aeca254b3af4bc5d6293d5f65c7p69,
-    0x1.80p5
-  },
-  { // Entry 123
-    0x1.304db70006924866bc1845097c91e488p69,
-    0x1.800002p5
-  },
-  { // Entry 124
-    0x1.f8e64411b4c7429f260cb72539880919p-76,
-    -0x1.a00002p5
-  },
-  { // Entry 125
-    0x1.f8e6c24b5592e3421df27acf1e080144p-76,
-    -0x1.a0p5
-  },
-  { // Entry 126
-    0x1.f8e7408515ecf009cb5b7fe80003ae74p-76,
-    -0x1.9ffffep5
-  },
-  { // Entry 127
-    0x1.5576f0dcac21787f2d57b14a700224e3p115,
-    0x1.3ffffep6
-  },
-  { // Entry 128
-    0x1.55779b984f3eb3c8a503b4a8e2489d98p115,
-    0x1.40p6
-  },
-  { // Entry 129
-    0x1.5578465447b9d5f83246af1e48e8225bp115,
-    0x1.400002p6
-  },
-  { // Entry 130
-    0x1.07b68d505a60dd444b8b2bdfe06038cfp-127,
-    -0x1.600002p6
-  },
-  { // Entry 131
-    0x1.07b7112bc1ffe19d3e703e4a794f7372p-127,
-    -0x1.60p6
-  },
-  { // Entry 132
-    0x1.07b795076b8caa412334e7ddf18b00f5p-127,
-    -0x1.5ffffep6
-  },
-  { // Entry 133
-    0x1.039924428f47511c03e75dd623bc47e1p75,
-    0x1.9ffffep5
-  },
-  { // Entry 134
-    0x1.03996528e074bebcfd76416fc2c0eb92p75,
-    0x1.a0p5
-  },
-  { // Entry 135
-    0x1.0399a60f41dbc2b085221312f505089dp75,
-    0x1.a00002p5
-  },
-  { // Entry 136
-    0x1.aeba4f3502d837951889740890747609p-70,
-    -0x1.800002p5
-  },
-  { // Entry 137
-    0x1.aebabae3a41b4be3f576e70303a37932p-70,
-    -0x1.80p5
-  },
-  { // Entry 138
-    0x1.aebb2692604a0be10cc9f3a09e77aae1p-70,
-    -0x1.7ffffep5
-  },
-  { // Entry 139
-    0x1.f1047545465f97aad6774dfe16b960e2p126,
-    0x1.5ffffep6
-  },
-  { // Entry 140
-    0x1.f1056dc7bf22d3de0ed57615bc501f8bp126,
-    0x1.60p6
-  },
-  { // Entry 141
-    0x1.f106664ab4276b833993050c9aa09a95p126,
-    0x1.600002p6
-  },
-  { // Entry 142
-    0x1.7fd8b4e6e875b5988aeb2e9083caf791p-116,
-    -0x1.400002p6
-  },
-  { // Entry 143
-    0x1.7fd974d372e4486f72358acdd12690e5p-116,
-    -0x1.40p6
-  },
-  { // Entry 144
-    0x1.7fda34c05d49387b3838c5c2bfad0123p-116,
-    -0x1.3ffffep6
-  },
-  { // Entry 145
-    0x1.6a32e160645dc5364da93c123215c591p-107,
-    -0x1.274768p6
-  },
-  { // Entry 146
-    0x1.42a280b47f1e50e7307c9599e94975dap-121,
-    -0x1.4e8ed0p6
-  },
-  { // Entry 147
-    0x1.1f6479d6e79d924759c7f44160ad30e3p-135,
-    -0x1.75d638p6
-  },
-  { // Entry 148
-    0x1.ffffffefa39ef39a7f254535d935142bp-2,
-    -0x1.62e430p-1
-  },
-  { // Entry 149
-    0x1.000000f7d1cff19f0f33036cf01c120cp-1,
-    -0x1.62e42ep-1
-  },
-  { // Entry 150
-    0x1.000001f7d1d16970dfcb360efa91fea0p-1,
-    -0x1.62e42cp-1
-  },
-  { // Entry 151
-    0x1.6a09e6622aebfbd7a4a03777223c604fp-1,
-    -0x1.62e430p-2
-  },
-  { // Entry 152
-    0x1.6a09e7172fdf5a2e5771f3866a25514ep-1,
-    -0x1.62e42ep-2
-  },
-  { // Entry 153
-    0x1.6a09e7cc34d3130784097b8d8a7c9008p-1,
-    -0x1.62e42cp-2
-  },
-  { // Entry 154
-    0x1.ae89f9923cbb49183aabb33b9de1bc82p-1,
-    -0x1.62e430p-3
-  },
-  { // Entry 155
-    0x1.ae89f9fddf39bb1bb94baa36c98abb7bp-1,
-    -0x1.62e42ep-3
-  },
-  { // Entry 156
-    0x1.ae89fa6981b84807d78b7f25910956dep-1,
-    -0x1.62e42cp-3
-  },
-  { // Entry 157
-    0x1.d5818dcdda301bca95fbcc530ab9b938p-1,
-    -0x1.62e430p-4
-  },
-  { // Entry 158
-    0x1.d5818e088a61d930df1b087a4b928ea0p-1,
-    -0x1.62e42ep-4
-  },
-  { // Entry 159
-    0x1.d5818e433a939ded2e7266cb13d29986p-1,
-    -0x1.62e42cp-4
-  },
-  { // Entry 160
-    0x1.ea4afa294e60b4bfa24494610e75261cp-1,
-    -0x1.62e430p-5
-  },
-  { // Entry 161
-    0x1.ea4afa47f3105849adccfa1dd5b3f93dp-1,
-    -0x1.62e42ep-5
-  },
-  { // Entry 162
-    0x1.ea4afa6697bffdbe044fa7cdad4b3ee7p-1,
-    -0x1.62e42cp-5
-  },
-  { // Entry 163
-    0x1.f50765b6643efaa2ca9e6690933e5c37p-1,
-    -0x1.62e430p-6
-  },
-  { // Entry 164
-    0x1.f50765c60c7a28948d82f31a7288232fp-1,
-    -0x1.62e42ep-6
-  },
-  { // Entry 165
-    0x1.f50765d5b4b557039240f127705c11e7p-1,
-    -0x1.62e42cp-6
-  },
-  { // Entry 166
-    0x1.059b0d214186cff9a974bcb883cf68dep0,
-    0x1.62e42cp-6
-  },
-  { // Entry 167
-    0x1.059b0d296e5f3924690ce10533fe599bp0,
-    0x1.62e42ep-6
-  },
-  { // Entry 168
-    0x1.059b0d319b37a2908f684fad7bfb94d0p0,
-    0x1.62e430p-6
-  },
-  { // Entry 169
-    0x1.0b5586aeb68ea24c9281f25b79d84f83p0,
-    0x1.62e42cp-5
-  },
-  { // Entry 170
-    0x1.0b5586bf6be70dbda62f7148cd5a788fp0,
-    0x1.62e42ep-5
-  },
-  { // Entry 171
-    0x1.0b5586d0213f7a3a0f63afa207ea7587p0,
-    0x1.62e430p-5
-  },
-  { // Entry 172
-    0x1.172b838327ae1f9d7e70418a476da480p0,
-    0x1.62e42cp-4
-  },
-  { // Entry 173
-    0x1.172b83a60d1e9230cb3b52cd1200b8dcp0,
-    0x1.62e42ep-4
-  },
-  { // Entry 174
-    0x1.172b83c8f28f0920c614fc4456de049fp0,
-    0x1.62e430p-4
-  },
-  { // Entry 175
-    0x1.306fe00d521c5b35bf373738b0a12e1ap0,
-    0x1.62e42cp-3
-  },
-  { // Entry 176
-    0x1.306fe0596e14680dc54f3a2ea15e3afcp0,
-    0x1.62e42ep-3
-  },
-  { // Entry 177
-    0x1.306fe0a58a0c87ecc96cd405d8b582dbp0,
-    0x1.62e430p-3
-  },
-  { // Entry 178
-    0x1.6a09e503b2a7dd99cf9474b115a73ecep0,
-    0x1.62e42cp-2
-  },
-  { // Entry 179
-    0x1.6a09e5b8b79a8cb4602b42cd4c99e60ep0,
-    0x1.62e42ep-2
-  },
-  { // Entry 180
-    0x1.6a09e66dbc8d96516a303ed0289c5d36p0,
-    0x1.62e430p-2
-  },
-  { // Entry 181
-    0x1.fffffc105c64ec3292f2afac3f1a430dp0,
-    0x1.62e42cp-1
-  },
-  { // Entry 182
-    0x1.fffffe105c61fc8ef63c65c66a9d4971p0,
-    0x1.62e42ep-1
-  },
-  { // Entry 183
-    0x1.000000082e308675abcb3c215eacf84ap1,
-    0x1.62e430p-1
-  },
-  { // Entry 184
-    0x1.fffff820b8d19779692fb0fcc0281246p1,
-    0x1.62e42cp0
-  },
-  { // Entry 185
-    0x1.fffffc20b8c5d8eaff4ac013cf734639p1,
-    0x1.62e42ep0
-  },
-  { // Entry 186
-    0x1.000000105c610d2e42f45922768a8e6cp2,
-    0x1.62e430p0
-  },
-  { // Entry 187
-    0x1.fffff04171c22b43a28d8088c347bf1fp3,
-    0x1.62e42cp1
-  },
-  { // Entry 188
-    0x1.fffff8417193310a429b71e70d792186p3,
-    0x1.62e42ep1
-  },
-  { // Entry 189
-    0x1.00000020b8c21b6833603e51897c598cp4,
-    0x1.62e430p1
-  },
-  { // Entry 190
-    0x1.ffffe082e40047c89dfa41d09c1e1ef8p7,
-    0x1.62e42cp2
-  },
-  { // Entry 191
-    0x1.fffff082e3445ee55b3fa84a5dd849c9p7,
-    0x1.62e42ep2
-  },
-  { // Entry 192
-    0x1.0000004171843aff1c9ef14341bfa42ep8,
-    0x1.62e430p2
-  },
-  { // Entry 193
-    0x1.ffffc105c9f0548760a823b0dfdaeb66p15,
-    0x1.62e42cp3
-  },
-  { // Entry 194
-    0x1.ffffe105c700b10c3e2a549fbdebb0dap15,
-    0x1.62e42ep3
-  },
-  { // Entry 195
-    0x1.00000082e30886b910b9d8752828389dp16,
-    0x1.62e430p3
-  },
-  { // Entry 196
-    0x1.ffff820b9b9fbc6d5dda406ad9f93354p31,
-    0x1.62e42cp4
-  },
-  { // Entry 197
-    0x1.ffffc20b8fe12f101740ac9653f78fe3p31,
-    0x1.62e42ep4
-  },
-  { // Entry 198
-    0x1.00000105c611505d7f74a41433312dp32,
-    0x1.62e430p4
-  },
-  { // Entry 199
-    0x1.fffe082f28688d3872ab8aa69f3dc358p127,
-    0x1.62e42cp6
-  },
-  { // Entry 200
-    0x1.ffff082e6c7fed1d3fd5cff7e1f60591p127,
-    0x1.62e42ep6
-  },
-  { // Entry 201
-    HUGE_VALF,
-    0x1.62e430p6
-  },
-  { // Entry 202
-    0.0f,
-    -0x1.9d1da2p6
-  },
-  { // Entry 203
-    0.0f,
-    -0x1.9d1da0p6
-  },
-  { // Entry 204
-    0x1.0000733d37b1d08a80d7f5b45a57b888p-149,
-    -0x1.9d1d9ep6
-  },
-  { // Entry 205
-    0x1.8ebef92368a3eafa519740584c0bc3b4p-1,
-    -0x1.000002p-2
-  },
-  { // Entry 206
-    0x1.8ebef9eac820ae8682b9793ac6d1e772p-1,
-    -0x1.p-2
-  },
-  { // Entry 207
-    0x1.8ebefa4e77df35ae82b57af121518cefp-1,
-    -0x1.fffffep-3
-  },
-  { // Entry 208
-    0x1.c3d6a1dde27992e129ed78a65573f878p-1,
-    -0x1.000002p-3
-  },
-  { // Entry 209
-    0x1.c3d6a24ed82218787d624d3e5eba95f5p-1,
-    -0x1.p-3
-  },
-  { // Entry 210
-    0x1.c3d6a28752f665db2eea1fa5876798a3p-1,
-    -0x1.fffffep-4
-  },
-  { // Entry 211
-    0x1.e0fabf8050d24919d357946f9e880754p-1,
-    -0x1.000002p-4
-  },
-  { // Entry 212
-    0x1.e0fabfbc702a3ce5e31fe0609358bafdp-1,
-    -0x1.p-4
-  },
-  { // Entry 213
-    0x1.e0fabfda7fd6399d632391f9771f3e82p-1,
-    -0x1.fffffep-5
-  },
-  { // Entry 214
-    0x1.f03f568987680f8419de7d66d0a619ecp-1,
-    -0x1.000002p-5
-  },
-  { // Entry 215
-    0x1.f03f56a88b5d7914b00abf97762735d1p-1,
-    -0x1.p-5
-  },
-  { // Entry 216
-    0x1.f03f56b80d582e9712e15df3cc9e8e9cp-1,
-    -0x1.fffffep-6
-  },
-  { // Entry 217
-    0x1.f80feab02e7af3675b36eb6c3c71a5eep-1,
-    -0x1.000002p-6
-  },
-  { // Entry 218
-    0x1.f80feabfeefa4927d10bdd54ead5aa46p-1,
-    -0x1.p-6
-  },
-  { // Entry 219
-    0x1.f80feac7cf39f4374d745808a78130ecp-1,
-    -0x1.fffffep-7
-  },
-  { // Entry 220
-    0x1.fc03fd4eba125a4d3455bf72cbc939f7p-1,
-    -0x1.000002p-7
-  },
-  { // Entry 221
-    0x1.fc03fd56aa224f97fcbf1332988842dep-1,
-    -0x1.p-7
-  },
-  { // Entry 222
-    0x1.fc03fd5aa22a4a49490bad128ba5af93p-1,
-    -0x1.fffffep-8
-  },
-  { // Entry 223
-    0x1.fe00ffa6c3f9bd20292897f42d7b9d76p-1,
-    -0x1.000002p-8
-  },
-  { // Entry 224
-    0x1.fe00ffaabffbbc71ad1e1184afc19c7ep-1,
-    -0x1.p-8
-  },
-  { // Entry 225
-    0x1.fe00ffacbdfcbc1d6c1a4dcc11ddb6d8p-1,
-    -0x1.fffffep-9
-  },
-  { // Entry 226
-    0x1.ff003ff357aa48970957a2cf7d7a6cacp-1,
-    -0x1.000002p-9
-  },
-  { // Entry 227
-    0x1.ff003ff556aa888b60820b6087d1e91ap-1,
-    -0x1.p-9
-  },
-  { // Entry 228
-    0x1.ff003ff6562aa8864bb757a4ed8d9686p-1,
-    -0x1.fffffep-10
-  },
-  { // Entry 229
-    0x1.ff800ffdaafff6efe4df3f7f5ce23accp-1,
-    -0x1.000002p-10
-  },
-  { // Entry 230
-    0x1.ff800ffeaabffeeefa4f3cf70f59d9bfp-1,
-    -0x1.p-10
-  },
-  { // Entry 231
-    0x1.ff800fff2aa002eeb4fb3d32c498a8ffp-1,
-    -0x1.fffffep-11
-  },
-  { // Entry 232
-    0x1.fff0003fdf5656a6a9932df6283cfcbdp-1,
-    -0x1.000002p-13
-  },
-  { // Entry 233
-    0x1.fff0003fff5556aaa8888b60b2cb2ff2p-1,
-    -0x1.p-13
-  },
-  { // Entry 234
-    0x1.fff000400f54d6aca8c334161010099ep-1,
-    -0x1.fffffep-14
-  },
-  { // Entry 235
-    0x1.48b5e371ba9f7fc224c75d198fe4cd1bp0,
-    0x1.fffffep-3
-  },
-  { // Entry 236
-    0x1.48b5e3c3e81866767bc3b69baabe534ep0,
-    0x1.p-2
-  },
-  { // Entry 237
-    0x1.48b5e468430a7181447647fc03adbfb6p0,
-    0x1.000002p-2
-  },
-  { // Entry 238
-    0x1.221604372c9c46732dd72e996c9e23f2p0,
-    0x1.fffffep-4
-  },
-  { // Entry 239
-    0x1.2216045b6f5ccf9ced688384e06b8d42p0,
-    0x1.p-3
-  },
-  { // Entry 240
-    0x1.221604a3f4ddef8974c0079f23fd0bb9p0,
-    0x1.000002p-3
-  },
-  { // Entry 241
-    0x1.1082b566cb2380e0be0d559a0150172fp0,
-    0x1.fffffep-5
-  },
-  { // Entry 242
-    0x1.1082b577d34ed7d5b1a019e225c9a951p0,
-    0x1.p-4
-  },
-  { // Entry 243
-    0x1.1082b599e3a588f120e61af4869c9842p0,
-    0x1.000002p-4
-  },
-  { // Entry 244
-    0x1.082055f8d17c19a67be4f7058e9a570ap0,
-    0x1.fffffep-6
-  },
-  { // Entry 245
-    0x1.08205601127ec98e0bd083aba80c97a6p0,
-    0x1.p-5
-  },
-  { // Entry 246
-    0x1.0820561194842a2343e81fd5fab451efp0,
-    0x1.000002p-5
-  },
-  { // Entry 247
-    0x1.04080ab14dc366ad6116c39e3c2d0a9ep0,
-    0x1.fffffep-7
-  },
-  { // Entry 248
-    0x1.04080ab55de3917ab864b3e9044e6b45p0,
-    0x1.p-6
-  },
-  { // Entry 249
-    0x1.04080abd7e23e746288296c1313f21b1p0,
-    0x1.000002p-6
-  },
-  { // Entry 250
-    0x1.02020153fc40586235decf4eb727a15fp0,
-    0x1.fffffep-8
-  },
-  { // Entry 251
-    0x1.0202015600445b0c326382bc73689d32p0,
-    0x1.p-7
-  },
-  { // Entry 252
-    0x1.0202015a084c606c4384f9a7ff2ee425p0,
-    0x1.000002p-7
-  },
-  { // Entry 253
-    0x1.01008029b456f7a855530b151055fcccp0,
-    0x1.fffffep-9
-  },
-  { // Entry 254
-    0x1.0100802ab55777d28a2a42d26aa9ee67p0,
-    0x1.p-8
-  },
-  { // Entry 255
-    0x1.0100802cb7587829f6da32ce4058b940p0,
-    0x1.000002p-8
-  },
-  { // Entry 256
-    0x1.00802004d5c0010ff251d134d9bbdf8cp0,
-    0x1.fffffep-10
-  },
-  { // Entry 257
-    0x1.00802005560011127d41d5bd72f4c8f3p0,
-    0x1.p-9
-  },
-  { // Entry 258
-    0x1.00802006568031185381f6d2c5f6ac90p0,
-    0x1.000002p-9
-  },
-  { // Entry 259
-    0x1.004008006aa553ddc0e317b0fa59b1c4p0,
-    0x1.fffffep-11
-  },
-  { // Entry 260
-    0x1.00400800aab555dde38e6ce86e9277aap0,
-    0x1.p-10
-  },
-  { // Entry 261
-    0x1.004008012ad559de58f118d77b0703afp0,
-    0x1.000002p-10
-  },
-  { // Entry 262
-    0x1.0008001ff85515ff012e68cd2d69c588p0,
-    0x1.fffffep-14
-  },
-  { // Entry 263
-    0x1.00080020005556000111127d297298c9p0,
-    0x1.p-13
-  },
-  { // Entry 264
-    0x1.000800201055d60201966bdd39867f5cp0,
-    0x1.000002p-13
-  },
-  { // Entry 265
-    0x1.969c7be3ad874c06787aba955d206d83p-93,
-    -0x1.000002p6
-  },
-  { // Entry 266
-    0x1.969d47321e4cbabf2d28070963b04194p-93,
-    -0x1.p6
-  },
-  { // Entry 267
-    0x1.969dacd97cce2d9b005ff576b7a0bb4fp-93,
-    -0x1.fffffep5
-  },
-  { // Entry 268
-    0x1.c845dd6490ab2d9c7b0cfec9c5008483p-47,
-    -0x1.000002p5
-  },
-  { // Entry 269
-    0x1.c8464f76164681e299a0124487884d64p-47,
-    -0x1.p5
-  },
-  { // Entry 270
-    0x1.c846887ee3c5d1705be6172d117870a0p-47,
-    -0x1.fffffep4
-  },
-  { // Entry 271
-    0x1.e3557f4434ad7be9e06c29966f56e62bp-24,
-    -0x1.000002p4
-  },
-  { // Entry 272
-    0x1.e355bbaee85cada65f73f32e88fb3cc6p-24,
-    -0x1.p4
-  },
-  { // Entry 273
-    0x1.e355d9e44509470f0aa73ac7ef12148fp-24,
-    -0x1.fffffep3
-  },
-  { // Entry 274
-    0x1.5fc1fa44e2269c9c9706469c20b93e95p-12,
-    -0x1.000002p3
-  },
-  { // Entry 275
-    0x1.5fc21041027acbbfcd46780fee71ead2p-12,
-    -0x1.p3
-  },
-  { // Entry 276
-    0x1.5fc21b3f1328cc16210576d3c70bf98bp-12,
-    -0x1.fffffep2
-  },
-  { // Entry 277
-    0x1.2c1552216918b98b1cef7b04f710e36cp-6,
-    -0x1.000002p2
-  },
-  { // Entry 278
-    0x1.2c155b8213cf477e8af0132c2ae23d4ap-6,
-    -0x1.p2
-  },
-  { // Entry 279
-    0x1.2c1560326946b078b09f8faebe2fc287p-6,
-    -0x1.fffffep1
-  },
-  { // Entry 280
-    0x1.152aa5e74d7c73728ada0663f224a381p-3,
-    -0x1.000002p1
-  },
-  { // Entry 281
-    0x1.152aaa3bf81cb9fdb76eae12d029571fp-3,
-    -0x1.p1
-  },
-  { // Entry 282
-    0x1.152aac664d735c4346cc27f42a3d83b1p-3,
-    -0x1.fffffep0
-  },
-  { // Entry 283
-    0x1.78b56071642fa837c9519eec10a7f937p-2,
-    -0x1.000002p0
-  },
-  { // Entry 284
-    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
-    -0x1.p0
-  },
-  { // Entry 285
-    0x1.78b564db84579b9490e7b9557026c647p-2,
-    -0x1.fffffep-1
-  },
-  { // Entry 286
-    0x1.4259323902dbc6e62e3e07ce26cd904cp92,
-    0x1.fffffep5
-  },
-  { // Entry 287
-    0x1.425982cf597cd205ce3d5b4edb031756p92,
-    0x1.p6
-  },
-  { // Entry 288
-    0x1.425a23fc432fb5d556006a4d8e7ee11bp92,
-    0x1.000002p6
-  },
-  { // Entry 289
-    0x1.1f43d8dc3908b8ed87a5abd50621706ap46,
-    0x1.fffffep4
-  },
-  { // Entry 290
-    0x1.1f43fcc4b662c7d84788401842174074p46,
-    0x1.p5
-  },
-  { // Entry 291
-    0x1.1f444495be8e1616a1e5e388779bc146p46,
-    0x1.000002p5
-  },
-  { // Entry 292
-    0x1.0f2eac1794b8f3edb5c10d26a51f420fp23,
-    0x1.fffffep3
-  },
-  { // Entry 293
-    0x1.0f2ebd0a8002049223f170882b5ee5efp23,
-    0x1.p4
-  },
-  { // Entry 294
-    0x1.0f2edef059c1b22312bed964006ee633p23,
-    0x1.000002p4
-  },
-  { // Entry 295
-    0x1.749e9c2f7bb6cf5a276ee08236c2d6c3p11,
-    0x1.fffffep2
-  },
-  { // Entry 296
-    0x1.749ea7d470c6df0be00e084a815d1de6p11,
-    0x1.p3
-  },
-  { // Entry 297
-    0x1.749ebf1e5bfe757019de4e22b113fde9p11,
-    0x1.000002p3
-  },
-  { // Entry 298
-    0x1.b4c8fc0f4fa7a2f2459a6ef53c315f0fp5,
-    0x1.fffffep1
-  },
-  { // Entry 299
-    0x1.b4c902e273a58678d6d3bfdb93db96d0p5,
-    0x1.p2
-  },
-  { // Entry 300
-    0x1.b4c91088bbf33336f0ee52b1ad858e43p5,
-    0x1.000002p2
-  },
-  { // Entry 301
-    0x1.d8e647db814773f419262ee477a98616p2,
-    0x1.fffffep0
-  },
-  { // Entry 302
-    0x1.d8e64b8d4ddadcc33a3ba206b68abba8p2,
-    0x1.p1
-  },
-  { // Entry 303
-    0x1.d8e652f0e717d92d15cd610022ae51e3p2,
-    0x1.000002p1
-  },
-  { // Entry 304
-    0x1.5bf0a75554ce91e83d421c2a7c075cb2p1,
-    0x1.fffffep-1
-  },
-  { // Entry 305
-    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
-    0x1.p0
-  },
-  { // Entry 306
-    0x1.5bf0ab6926caafa1a0158d79693ac8e1p1,
-    0x1.000002p0
-  },
-  { // Entry 307
-    HUGE_VALF,
-    0x1.p124
-  },
-  { // Entry 308
-    HUGE_VALF,
-    0x1.99999ap124
-  },
-  { // Entry 309
-    HUGE_VALF,
-    0x1.19999ap125
-  },
-  { // Entry 310
-    HUGE_VALF,
-    0x1.666668p125
-  },
-  { // Entry 311
-    HUGE_VALF,
-    0x1.b33334p125
-  },
-  { // Entry 312
-    HUGE_VALF,
-    0x1.p126
-  },
-  { // Entry 313
-    HUGE_VALF,
-    0x1.fffffep127
-  },
-  { // Entry 314
-    HUGE_VALF,
-    HUGE_VALF
-  },
-  { // Entry 315
-    HUGE_VALF,
-    0x1.fffffep127
-  },
-  { // Entry 316
-    HUGE_VALF,
-    0x1.fffffcp127
-  },
-  { // Entry 317
-    0x1.7240490a165620d9b922aaa22a8e4c09p4,
-    0x1.921fb6p1
-  },
-  { // Entry 318
-    0x1.33dedd672084cca612aab2b9a3e817bbp2,
-    0x1.921fb6p0
-  },
-  { // Entry 319
-    0x1.5bf0ab6926caafa1a0158d79693ac8e1p1,
-    0x1.000002p0
-  },
-  { // Entry 320
-    0x1.5bf0a8b1457695355fb8ac404e7a79e3p1,
-    0x1.p0
-  },
-  { // Entry 321
-    0x1.5bf0a75554ce91e83d421c2a7c075cb2p1,
-    0x1.fffffep-1
-  },
-  { // Entry 322
-    0x1.18bd66fb62b31900cc07634deba43456p1,
-    0x1.921fb6p-1
-  },
-  { // Entry 323
-    0x1.00000000000000000000000000000004p0,
-    0x1.000002p-126
-  },
-  { // Entry 324
-    0x1.00000000000000000000000000000004p0,
-    0x1.p-126
-  },
-  { // Entry 325
-    0x1.00000000000000000000000000000003p0,
-    0x1.fffffcp-127
-  },
-  { // Entry 326
-    0x1.00000000000000000000000000000003p0,
-    0x1.fffff8p-127
-  },
-  { // Entry 327
-    0x1.p0,
-    0x1.p-148
-  },
-  { // Entry 328
-    0x1.p0,
-    0x1.p-149
-  },
-  { // Entry 329
-    0x1.p0,
-    0.0f
-  },
-  { // Entry 330
-    0x1.p0,
-    -0.0f
-  },
-  { // Entry 331
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149
-  },
-  { // Entry 332
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-148
-  },
-  { // Entry 333
-    0x1.fffffffffffffffffffffffffffffff8p-1,
-    -0x1.fffff8p-127
-  },
-  { // Entry 334
-    0x1.fffffffffffffffffffffffffffffff8p-1,
-    -0x1.fffffcp-127
-  },
-  { // Entry 335
-    0x1.fffffffffffffffffffffffffffffff8p-1,
-    -0x1.p-126
-  },
-  { // Entry 336
-    0x1.fffffffffffffffffffffffffffffff7p-1,
-    -0x1.000002p-126
-  },
-  { // Entry 337
-    0x1.d2e17123d2ae02abbcf896f2025e3463p-2,
-    -0x1.921fb6p-1
-  },
-  { // Entry 338
-    0x1.78b564db84579b9490e7b9557026c647p-2,
-    -0x1.fffffep-1
-  },
-  { // Entry 339
-    0x1.78b56362cef37c6aeb7b1e0a4153e437p-2,
-    -0x1.p0
-  },
-  { // Entry 340
-    0x1.78b56071642fa837c9519eec10a7f937p-2,
-    -0x1.000002p0
-  },
-  { // Entry 341
-    0x1.a9bcc3373efd3e4d6a96be7a7562f428p-3,
-    -0x1.921fb6p0
-  },
-  { // Entry 342
-    0x1.620225ae5e9349593d6bb618c231545ep-5,
-    -0x1.921fb6p1
-  },
-  { // Entry 343
-    0.0f,
-    -0x1.fffffcp127
-  },
-  { // Entry 344
-    0.0f,
-    -0x1.fffffep127
-  },
-  { // Entry 345
-    0.0,
-    -HUGE_VALF
-  },
-  { // Entry 346
-    0x1.ffff082e6c7fed1d3fd5cff7e1f60591p127,
-    0x1.62e42ep6
-  },
-  { // Entry 347
-    HUGE_VALF,
-    0x1.62e430p6
-  },
-  { // Entry 348
-    0x1.00004bf94f63e3fa686222148f1293c4p-126,
-    -0x1.5d589ep6
-  },
-  { // Entry 349
-    0x1.ffff97f292ce80e494231c6496e9cbf5p-127,
-    -0x1.5d58a0p6
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_expf, expf_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_expf_intel_data)/sizeof(expf_intel_data_t); i++) {
-    EXPECT_FLOAT_EQ(g_expf_intel_data[i].expected, expf(g_expf_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_log_test.cpp b/tests/math_log_test.cpp
deleted file mode 100644
index da2a848..0000000
--- a/tests/math_log_test.cpp
+++ /dev/null
@@ -1,1675 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  double expected;
-  double call_data;
-} log_intel_data_t;
-
-static log_intel_data_t g_log_intel_data[] = {
-  { // Entry 0
-    0x1.d77fd13d27ffefffffffffffb5ed9843p-11,
-    0x1.003af6c37c1d3p0
-  },
-  { // Entry 1
-    0x1.411efd297c7808000000000016d615b2p-6,
-    0x1.05112792934b3p0
-  },
-  { // Entry 2
-    0x1.d4840664446fb800000000001f574ffcp-6,
-    0x1.076d1d8c75ea6p0
-  },
-  { // Entry 3
-    0x1.f6e4c3ced7c71ffffffffffffee947dap-3,
-    0x1.47408cb9583cep0
-  },
-  { // Entry 4
-    0x1.1a0408712e009ffffffffffffee46012p-2,
-    0x1.512b3126454f3p0
-  },
-  { // Entry 5
-    0x1.8b52c15ea9c237fffffffffffe61395cp-2,
-    0x1.789e95b11578cp0
-  },
-  { // Entry 6
-    0x1.d707029bb59d8ffffffffffffecf6ef6p-2,
-    0x1.958497f7b353fp0
-  },
-  { // Entry 7
-    0x1.0727af5fee8f5ffffffffffffec7021fp-1,
-    0x1.ac032a8d2ec23p0
-  },
-  { // Entry 8
-    0x1.12fcce02efb320000000000001435b90p-1,
-    0x1.b604e1942098dp0
-  },
-  { // Entry 9
-    0x1.178e6d3ecace98000000000001300accp-1,
-    0x1.b9f1fa4587967p0
-  },
-  { // Entry 10
-    0x1.62f71c4656b60fffffffffffff7f168ep-1,
-    0x1.000976581ce4ep1
-  },
-  { // Entry 11
-    0x1.d6336a88077a9fffffffffffffe1f817p0,
-    0x1.91a8dff540ff7p2
-  },
-  { // Entry 12
-    0x1.016e82ceda358fffffffffffffacbf62p1,
-    0x1.de37fb31fd5fcp2
-  },
-  { // Entry 13
-    0x1.1e126f5d95f3880000000000005d3761p1,
-    0x1.2b1199e497739p3
-  },
-  { // Entry 14
-    0x1.2f3832cad3d5f000000000000078801cp1,
-    0x1.55f0eaa1b2fc8p3
-  },
-  { // Entry 15
-    0x1.42ee3c7dc494600000000000004ea57fp1,
-    0x1.8ede492d96072p3
-  },
-  { // Entry 16
-    0x1.6b5df7e3cd421800000000000044613bp1,
-    0x1.11867637cbd03p4
-  },
-  { // Entry 17
-    0x1.7e7f095703eee7ffffffffffffacdc06p1,
-    0x1.3d9d7d597a9ddp4
-  },
-  { // Entry 18
-    0x1.9687c83faf0067ffffffffffffb9cf3fp1,
-    0x1.7f3825778aaafp4
-  },
-  { // Entry 19
-    0x1.83d4bcdebb3f3fffffffffffffffacc9p2,
-    0x1.ac50b409c8aeep8
-  },
-  { // Entry 20
-    0x1.fffffffffffff0000000000000aaaaaap-53,
-    0x1.0000000000001p0
-  },
-  { // Entry 21
-    0x1.76e7e5d7b6eabffffffffffffff06f80p3,
-    0x1.de7cd6751029ap16
-  },
-  { // Entry 22
-    0x1.fffffffffffff0000000000000aaaaaap-53,
-    0x1.0000000000001p0
-  },
-  { // Entry 23
-    -0x1.91550c357f883fff899dff30d0f303eep8,
-    0x1.0000000000003p-579
-  },
-  { // Entry 24
-    0x1.7fffffffffffb8000000000011ffffffp-50,
-    0x1.0000000000006p0
-  },
-  { // Entry 25
-    0x1.bffffffffffe780000000001c9555555p-48,
-    0x1.000000000001cp0
-  },
-  { // Entry 26
-    0x1.7fdfffffff7017ff000047ee017ff52cp-41,
-    0x1.0000000000bffp0
-  },
-  { // Entry 27
-    0x1.0fffffffedf0000001996aaaaa81e28ap-35,
-    0x1.00000000220p0
-  },
-  { // Entry 28
-    0x1.ffffffff00000000aaaaaaaa2aaaaaabp-33,
-    0x1.000000010p0
-  },
-  { // Entry 29
-    0x1.7fffff70000047ffffd78000184cccbdp-25,
-    0x1.000000cp0
-  },
-  { // Entry 30
-    0x1.0a2ea3e77af060004010c4f6b437fb45p1,
-    0x1.00070p3
-  },
-  { // Entry 31
-    0x1.90412094d367f99f3c615231ad98bf3dp-13,
-    0x1.000c82573f5f9p0
-  },
-  { // Entry 32
-    0x1.ffe002aa6ab1106678ad8b318cb38545p-12,
-    0x1.002p0
-  },
-  { // Entry 33
-    0x1.bfcf07242969d15db4d2b3efe1c037e0p-11,
-    0x1.00380p0
-  },
-  { // Entry 34
-    0x1.d77fd13d27ffefffffffffffb5ed9843p-11,
-    0x1.003af6c37c1d3p0
-  },
-  { // Entry 35
-    0x1.ea054ce8508e4874442e95e41718b0dep-10,
-    0x1.007a9ea7a9e80p0
-  },
-  { // Entry 36
-    0x1.ff004a7ab9083f9e1717d3a4aaec8657p-10,
-    0x1.007fdff7fdfe0p0
-  },
-  { // Entry 37
-    0x1.ffda65d44dccc889115a4a4ff75c5a77p-10,
-    0x1.0080169a16cd5p0
-  },
-  { // Entry 38
-    0x1.b956989d2589d7fd6838e57a702f38acp-9,
-    0x1.00dd0a8317176p0
-  },
-  { // Entry 39
-    0x1.fd0816d97152c7fead7b849f7614fb48p-9,
-    0x1.00ff02ba8a543p0
-  },
-  { // Entry 40
-    -0x1.37915555785b07fc19dd2632088a1e7fp9,
-    0x1.00fffffffffffp-899
-  },
-  { // Entry 41
-    0x1.64a2a9b6a40588010102807138dff50cp0,
-    0x1.01c00000000dcp2
-  },
-  { // Entry 42
-    0x1.d465957106bd286bae67c08297163ea3p-8,
-    0x1.01d6131d09dc5p0
-  },
-  { // Entry 43
-    0x1.fdf639bea5ad3762df24a208e2a1cbe8p-8,
-    0x1.01fff37a34084p0
-  },
-  { // Entry 44
-    0x1.fdf6e4fcf456977205228530acd57155p-8,
-    0x1.01fff426c8cb6p0
-  },
-  { // Entry 45
-    0x1.fdf6e4fd0426f76d6d7b839b5f6c8bafp-8,
-    0x1.01fff426c8db5p0
-  },
-  { // Entry 46
-    0x1.fdfe9c57debe1760fe4ff0899bf9e6dcp-8,
-    0x1.01fffbed922e3p0
-  },
-  { // Entry 47
-    -0x1.d17be2451229ffff11e851804e97cdd7p3,
-    0x1.028p-21
-  },
-  { // Entry 48
-    0x1.6dcb2fed7f25d3f286707230be190760p-7,
-    0x1.02dfafa07df6dp0
-  },
-  { // Entry 49
-    0x1.ff092a85ee02f7fe7fc5dc1d417184c0p-7,
-    0x1.040615461f6cap0
-  },
-  { // Entry 50
-    0x1.0aa53cea3f1abfff1ddfb5af4ac49aaep-6,
-    0x1.04334eec5a65dp0
-  },
-  { // Entry 51
-    0x1.6ea07021c133480174835d142a4b831ep-6,
-    0x1.05cb09bb9fed7p0
-  },
-  { // Entry 52
-    0x1.7199f984f560800135ff3aec3a0796a8p-6,
-    0x1.05d735184261cp0
-  },
-  { // Entry 53
-    0x1.7788bc9c08318801546c035cbd9a269ap-6,
-    0x1.05ef7bdee7be0p0
-  },
-  { // Entry 54
-    0x1.c2688e952a7237fdd8563297de625acfp-6,
-    0x1.0722a05711778p0
-  },
-  { // Entry 55
-    0x1.e02151352512f7c230cc4b895dc68dd1p-6,
-    0x1.079cf00fe24f9p0
-  },
-  { // Entry 56
-    -0x1.3e1fee699c6bc7fc001a359e0efe2db7p8,
-    0x1.07cp-459
-  },
-  { // Entry 57
-    0x1.f31b56b8b6f1a2862582f528b33c4de2p-6,
-    0x1.07eb259ee01b5p0
-  },
-  { // Entry 58
-    -0x1.d0819095fcd6c800924ecd0308ebe218p3,
-    0x1.0a8551f8fc7f8p-21
-  },
-  { // Entry 59
-    -0x1.0268d40000c718005da0249ebb0a3024p1,
-    0x1.0fff8p-3
-  },
-  { // Entry 60
-    0x1.6b5df7e3cd421800000000000044613bp1,
-    0x1.11867637cbd03p4
-  },
-  { // Entry 61
-    0x1.6b96cb66f55c2800172d81c1cef357b1p1,
-    0x1.11ffffffffff8p4
-  },
-  { // Entry 62
-    -0x1.f7a213a7cd380fffde498c453f12553dp0,
-    0x1.1e6p-3
-  },
-  { // Entry 63
-    -0x1.a0765853dec06ffedf49002b5d3008bep8,
-    0x1.206658d9b0f05p-601
-  },
-  { // Entry 64
-    0x1.0d7b6ff6e3a247fffffefb9449faf8e6p6,
-    0x1.2514738e6dcadp97
-  },
-  { // Entry 65
-    0x1.1ee3899f6818e7ffffd09e6eb4879725p1,
-    0x1.2cfbb9e4a1599p3
-  },
-  { // Entry 66
-    -0x1.33153336792897fd38f4af7ab5c00769p6,
-    0x1.2f0617037e590p-111
-  },
-  { // Entry 67
-    -0x1.04c1e6cec96377febe1183e3bd373c3ep3,
-    0x1.2f29fd4b42515p-12
-  },
-  { // Entry 68
-    -0x1.0578bc4a143d699806f945d1356d06a2p-1,
-    0x1.333e1f03af55ep-1
-  },
-  { // Entry 69
-    -0x1.fd2a1d4dcf23d7fe75f7eef9498fdaa2p-2,
-    0x1.3767a0aaf1452p-1
-  },
-  { // Entry 70
-    -0x1.fb0ce0ec79bc97fe95141ce227ed47d2p-2,
-    0x1.380c640e6246cp-1
-  },
-  { // Entry 71
-    -0x1.ee693caa501a93f30062e2a3c445ac9cp-2,
-    0x1.3bec837d601c1p-1
-  },
-  { // Entry 72
-    -0x1.ed67b9b0f2f8d420adcdf51f432817fap-2,
-    0x1.3c3c0p-1
-  },
-  { // Entry 73
-    0x1.25397dc9f85bd800000a3d55bd6d8e50p1,
-    0x1.3c419b9db662ap3
-  },
-  { // Entry 74
-    0x1.9c041f7ed8d329e312aad8493a3a79a2p0,
-    0x1.3ffffffffffffp2
-  },
-  { // Entry 75
-    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
-    0x1.4p0
-  },
-  { // Entry 76
-    0x1.d42adfec35d147fe04ff7b1b027c5fdap-3,
-    0x1.41cp0
-  },
-  { // Entry 77
-    0x1.d7577477b9ead7fe9b2bc6960a766303p-3,
-    0x1.423fc24d04fc6p0
-  },
-  { // Entry 78
-    -0x1.d360e90c3850b36d61103f575b991880p-2,
-    0x1.446p-1
-  },
-  { // Entry 79
-    -0x1.cdeabe01a86b2d50c8ea3bb030c66bbcp-2,
-    0x1.461c159a76d4bp-1
-  },
-  { // Entry 80
-    0x1.fb9186d5e3e244ee4e28531563b69a2cp-3,
-    0x1.47fffffffffffp0
-  },
-  { // Entry 81
-    0x1.fb9186d5e3e2a8d55466c3794d2ca092p-3,
-    0x1.480p0
-  },
-  { // Entry 82
-    0x1.fb920464f5fc777f3cb0d8448c30e701p-3,
-    0x1.4800141bea83fp0
-  },
-  { // Entry 83
-    0x1.fb9c2792045e9e82eff43ef1ce0bee02p-3,
-    0x1.4801b3bf42a4ap0
-  },
-  { // Entry 84
-    0x1.fc46718a2dc22ddbfabb2598a137baa7p-3,
-    0x1.481cfade8a64dp0
-  },
-  { // Entry 85
-    0x1.ff9bd7855aaeab815fd85d2cb0694231p-3,
-    0x1.48a5d0c7ac5b5p0
-  },
-  { // Entry 86
-    0x1.ffd65f29bfd4edf98ec849c90032f302p-3,
-    0x1.48af356081ca1p0
-  },
-  { // Entry 87
-    0x1.e737cb23865c6b921552ad81d572b729p-1,
-    0x1.4b8p1
-  },
-  { // Entry 88
-    0x1.90ed52d1a23c4ffed8ee7725c53035d6p8,
-    0x1.556ee611fa309p578
-  },
-  { // Entry 89
-    -0x1.b25b8d863b3b4800fcec4eb5c14a7c2ep3,
-    0x1.55ep-20
-  },
-  { // Entry 90
-    0x1.16758a93d29af7ff100a0c107fb0c9e7p6,
-    0x1.5996659966598p100
-  },
-  { // Entry 91
-    -0x1.7e3a93bf3540d81e3dbbb57585ec1674p-2,
-    0x1.608054de74582p-1
-  },
-  { // Entry 92
-    0x1.583a417be2216cb936610ca9843511dbp-2,
-    0x1.6649bb515354fp0
-  },
-  { // Entry 93
-    -0x1.4f7dac3f1d7f3fffffdf521ccfc9dbcdp5,
-    0x1.69b109377f7p-61
-  },
-  { // Entry 94
-    0x1.62e42fefa383734a769bb41258319c1ap-2,
-    0x1.6a09e667f3b31p0
-  },
-  { // Entry 95
-    -0x1.e7a2dd016daa87ffa79528e89b610c0ap1,
-    0x1.6b0p-6
-  },
-  { // Entry 96
-    0x1.739d7f6bbd0069ce24c53fad3ef796abp-2,
-    0x1.7p0
-  },
-  { // Entry 97
-    -0x1.4c3af4797206280013c4d45af696d7cbp-2,
-    0x1.7223cef78e25dp-1
-  },
-  { // Entry 98
-    -0x1.48e65fe2c23057fdeb25c7f7c4859e9cp-2,
-    0x1.73587ce753680p-1
-  },
-  { // Entry 99
-    -0x1.4057b02bfdd097fe57379888740d8103p-2,
-    0x1.76764087395fcp-1
-  },
-  { // Entry 100
-    0x1.4a5f12ed407a400083645efcc658eda6p8,
-    0x1.8ad934b838bdap476
-  },
-  { // Entry 101
-    -0x1.83d0f90690d0f7ff207b1f007f7a3917p1,
-    0x1.8bep-5
-  },
-  { // Entry 102
-    -0x1.e387545735931400edb47ee4265d728ep-1,
-    0x1.8e4p-2
-  },
-  { // Entry 103
-    -0x1.fcc59e01369768243eca599e59e6a909p-3,
-    0x1.8f6p-1
-  },
-  { // Entry 104
-    -0x1.edd6149b33156828750bb3a608c4ddc1p-3,
-    0x1.924c57d629082p-1
-  },
-  { // Entry 105
-    0x1.cfbe6164a73f1361604926a0a90f519fp-2,
-    0x1.92a4cb798664bp0
-  },
-  { // Entry 106
-    -0x1.b428216a5c1587fdbf2f97d4c27148ccp4,
-    0x1.980p-40
-  },
-  { // Entry 107
-    -0x1.d081f0f25d66380027d59b6ebdb9bac9p-3,
-    0x1.9819d0255be60p-1
-  },
-  { // Entry 108
-    -0x1.cc0d6a92b79157fe82bfad0addd085a5p-1,
-    0x1.a0ef883be2177p-2
-  },
-  { // Entry 109
-    -0x1.8f62e2cb658638000030eb1a289f78e3p-3,
-    0x1.a549336310e6fp-1
-  },
-  { // Entry 110
-    -0x1.3651d0de2368d7fee3d1d6ee2b227744p-3,
-    0x1.b80300c030118p-1
-  },
-  { // Entry 111
-    0x1.20f25e686e7f97feceff9a7299fcd1edp-1,
-    0x1.c22024dc8289cp0
-  },
-  { // Entry 112
-    -0x1.9e327eb6ac2c37f7a39af2c988abe2b6p-1,
-    0x1.c80p-2
-  },
-  { // Entry 113
-    -0x1.b76f3d0aaf0c97fadefb4f5332d365a9p-4,
-    0x1.cbea22c8a9a16p-1
-  },
-  { // Entry 114
-    -0x1.9335e5d59499181fa0f312a9854d3042p-4,
-    0x1.cffffffffffffp-1
-  },
-  { // Entry 115
-    0x1.b6cc2b05c90a77fe9a0bb3019d8a9aedp2,
-    0x1.dae1894a2dbedp9
-  },
-  { // Entry 116
-    -0x1.fc702b8d96d0d7d4794fd56c9bec2ce2p-5,
-    0x1.e1304c1304c13p-1
-  },
-  { // Entry 117
-    -0x1.f6c7f7d0b03557d1c2690fc214b3ef43p-5,
-    0x1.e185646bc7856p-1
-  },
-  { // Entry 118
-    -0x1.eb8dcb764e07e7d4f0ef36c6ee88eacap-5,
-    0x1.e22e7349f6e97p-1
-  },
-  { // Entry 119
-    -0x1.d94a9c323e77c7fd43e2e13f541141cbp-5,
-    0x1.e341f0592c2abp-1
-  },
-  { // Entry 120
-    -0x1.ccb106085394f7a05e03df8ac23eae5dp-5,
-    0x1.e4005dfd66c32p-1
-  },
-  { // Entry 121
-    -0x1.a9bd8afc6d84b7ec7bbc80cc6f2983f8p-5,
-    0x1.e61222241ca7fp-1
-  },
-  { // Entry 122
-    -0x1.787392a45888d8006bb538c724c45f7ep-5,
-    0x1.e901133e161e4p-1
-  },
-  { // Entry 123
-    -0x1.79a634cdfb255800008607b0c2c01570p4,
-    0x1.eddc0821c76c1p-35
-  },
-  { // Entry 124
-    0x1.5172153d5fe9b7ff0f26a87c085b87d7p-1,
-    0x1.eed9208a6a349p0
-  },
-  { // Entry 125
-    -0x1.12b227244ff977d878e1166c29f76aa5p-5,
-    0x1.ef1dbcea195cdp-1
-  },
-  { // Entry 126
-    -0x1.f8a34d2505f817d848f4e8959713fb76p-6,
-    0x1.f0786fa48bd9cp-1
-  },
-  { // Entry 127
-    0x1.06885d03c19c38000002f99205a60b54p1,
-    0x1.f1a945a457d96p2
-  },
-  { // Entry 128
-    0x1.a28cccb9c6f0d7fedd89e9c4d4b9f68bp6,
-    0x1.f1fffffffffffp150
-  },
-  { // Entry 129
-    -0x1.b032da095671e7c8d427eb42292764d2p-6,
-    0x1.f2ab9dee841b5p-1
-  },
-  { // Entry 130
-    -0x1.9d66ada69056485326194e3f1c7b170cp-6,
-    0x1.f33e2a944ac96p-1
-  },
-  { // Entry 131
-    -0x1.88e7a6bf1b5b97fdbf4dd5e05467c25dp-6,
-    0x1.f3de268394e8dp-1
-  },
-  { // Entry 132
-    -0x1.84e362ad217017fe7ee6c5e9580aa1ddp-6,
-    0x1.f3fd86b392884p-1
-  },
-  { // Entry 133
-    -0x1.744eff6d77dde7d2a179669e225699e3p-6,
-    0x1.f47f1e1f53f24p-1
-  },
-  { // Entry 134
-    -0x1.68b4f86497a0a7fe24c5fba78bf17a88p0,
-    0x1.f48p-3
-  },
-  { // Entry 135
-    -0x1.6f51e68fcd7cd7fa1e6acd9f4b979341p-6,
-    0x1.f4a622df760c9p-1
-  },
-  { // Entry 136
-    -0x1.6bab4f93a37207d2376593e12e890d80p-6,
-    0x1.f4c2b2a5a5c1dp-1
-  },
-  { // Entry 137
-    -0x1.65ae4deeda7b77fe9c5dac2c0c0dedf4p-6,
-    0x1.f4f18fab5c3b8p-1
-  },
-  { // Entry 138
-    -0x1.4c2a64cb22441fe74e2f868934e9e491p-6,
-    0x1.f5b96e5b96eb7p-1
-  },
-  { // Entry 139
-    -0x1.43ae6c44b9f767f34ebf8a2cc3744c94p-6,
-    0x1.f5fbf5cedc480p-1
-  },
-  { // Entry 140
-    -0x1.41f7812310c9b0015ca3978caea2af49p-6,
-    0x1.f60968a5952d9p-1
-  },
-  { // Entry 141
-    -0x1.3b0cb0b1469db800b20aa116988cb6f2p-6,
-    0x1.f63fae6bae321p-1
-  },
-  { // Entry 142
-    -0x1.311e67575b4f5006994df3158c7316ccp-6,
-    0x1.f68da368da368p-1
-  },
-  { // Entry 143
-    -0x1.020da703f2f9d7d88c2361f9312c8382p-6,
-    0x1.f7ffbefc5d9d8p-1
-  },
-  { // Entry 144
-    -0x1.0205658935b947ec5874530468145ae7p-6,
-    0x1.f7fffffffffe6p-1
-  },
-  { // Entry 145
-    -0x1.ae825fe2eb6707f96a6e4c1dd535f9ccp-7,
-    0x1.f95139c561139p-1
-  },
-  { // Entry 146
-    -0x1.23851c80dddf27fb847cdd237db32e86p-7,
-    0x1.fb77177fb5d35p-1
-  },
-  { // Entry 147
-    -0x1.7c498eb87ed687f5ab6d00e39946d3bfp-8,
-    0x1.fd09a0b5b17f0p-1
-  },
-  { // Entry 148
-    -0x1.50dd41aeb4865700c68f5df4a8438e0dp-8,
-    0x1.fd6p-1
-  },
-  { // Entry 149
-    -0x1.08b8bba5db3a85b4e252ed1003e3481fp-8,
-    0x1.fdef9fe7f9fe3p-1
-  },
-  { // Entry 150
-    -0x1.07c989add9f585e65c78fe912c1a8cp-8,
-    0x1.fdf17c5f17cp-1
-  },
-  { // Entry 151
-    -0x1.008055958e10b542f640a94ed45f9bc0p-8,
-    0x1.fdfffffffff55p-1
-  },
-  { // Entry 152
-    -0x1.1f3e47178f97c75334a62a2f7aa66bc5p-9,
-    0x1.fee1123d05c1bp-1
-  },
-  { // Entry 153
-    -0x1.ff7faa9ab136778a743baa4f52803c4ep-10,
-    0x1.ff007ffffffffp-1
-  },
-  { // Entry 154
-    -0x1.ff39ecbe26759778f8bbf67f1e4a7e0ap-10,
-    0x1.ff00a2cd88b55p-1
-  },
-  { // Entry 155
-    -0x1.6363477698d257fc17522b50ff55553cp0,
-    0x1.ff020ffffffffp-3
-  },
-  { // Entry 156
-    -0x1.f7a248bf22fa97facadb946630e3967cp-10,
-    0x1.ff046cbe6cbddp-1
-  },
-  { // Entry 157
-    -0x1.dae60fee9fa9f7e341fe9059ccf60974p-10,
-    0x1.ff12c3ff12c30p-1
-  },
-  { // Entry 158
-    -0x1.d208bc8587776791c38a76a675c1ea45p-10,
-    0x1.ff17309fefcd2p-1
-  },
-  { // Entry 159
-    -0x1.babff263eabf87ac216ead65574acf01p-12,
-    0x1.ffc8aaff534d4p-1
-  },
-  { // Entry 160
-    -0x1.c00c40725b0617de17d7b74e49091d74p-13,
-    0x1.ffe3fffffffffp-1
-  },
-  { // Entry 161
-    -0x1.78bfa5004153173f2f5226cd23948518p-13,
-    0x1.ffe874904abd0p-1
-  },
-  { // Entry 162
-    -0x1.1148dff957e7c74564229e9cb9c4b83cp-13,
-    0x1.ffeeebbaeebb8p-1
-  },
-  { // Entry 163
-    -0x1.4aa196aae1ef97ff1730897799ee4f02p8,
-    0x1.fffffbbffffffp-478
-  },
-  { // Entry 164
-    0x1.8e8f43d38040fffeda732c8d164c1eb5p8,
-    0x1.fffffbbffffffp574
-  },
-  { // Entry 165
-    -0x1.00000401000008015565655755957558p-31,
-    0x1.fffffffbfffffp-1
-  },
-  { // Entry 166
-    -0x1.ff8040007fc027f82c8ac2a212ef8e0ep-34,
-    0x1.ffffffff003fep-1
-  },
-  { // Entry 167
-    0x1.86ef5ccdfa1b17fe78c886a9d8b2faaep7,
-    0x1.ffffffffddfffp281
-  },
-  { // Entry 168
-    -0x1.00080000008008002000555d55955640p-40,
-    0x1.fffffffffdfffp-1
-  },
-  { // Entry 169
-    -0x1.00200000002008008000055755955801p-42,
-    0x1.ffffffffff7ffp-1
-  },
-  { // Entry 170
-    -0x1.00400000001008010000015655955aaap-43,
-    0x1.ffffffffffbffp-1
-  },
-  { // Entry 171
-    0x1.30fc1931f09c97ff42ff5cad467897fdp7,
-    0x1.fffffffffffeep219
-  },
-  { // Entry 172
-    -0x1.00000000000010000000000001555555p-51,
-    0x1.ffffffffffffcp-1
-  },
-  { // Entry 173
-    -0x1.00000000000008000000000000555555p-52,
-    0x1.ffffffffffffep-1
-  },
-  { // Entry 174
-    -0x1.03fe55a061c757fed6a1da317da50b1ap-1,
-    0x1.342185798f6d6p-1
-  },
-  { // Entry 175
-    -0x1.62e42fefa39f0ce4e0d5078578892721p-2,
-    0x1.6a09e667f3bccp-1
-  },
-  { // Entry 176
-    -0x1.da391c9043a0f16abe056e384bf07f29p-3,
-    0x1.962b5f9438d25p-1
-  },
-  { // Entry 177
-    -0x1.06fbec52082bd253e20210b58868e521p-3,
-    0x1.c24cd8c07de7ep-1
-  },
-  { // Entry 178
-    -0x1.1e0a8f670c50ad172b2608e4a78b5e60p-5,
-    0x1.ee6e51ecc2fd7p-1
-  },
-  { // Entry 179
-    0x1.9e548e7e3dde7b0f34385f075e850106p-5,
-    0x1.0d47e58c84098p0
-  },
-  { // Entry 180
-    0x1.08e0bae73ac238d5d0d1fd9a04579630p-3,
-    0x1.2358a222a6944p0
-  },
-  { // Entry 181
-    0x1.9e6462187c36a8ddeed899c4e3596896p-3,
-    0x1.39695eb8c91f0p0
-  },
-  { // Entry 182
-    0x1.14dd6b0af939ac9fd1cf8d8a3a630a07p-2,
-    0x1.4f7a1b4eeba9cp0
-  },
-  { // Entry 183
-    0x1.56181f19d7198035cf7c5df02d166026p-2,
-    0x1.658ad7e50e348p0
-  },
-  { // Entry 184
-    0x1.936a82fadcd85a768a1655a807a5c5fdp-2,
-    0x1.7b9b947b30bf4p0
-  },
-  { // Entry 185
-    0x1.cd45b0a9f25021e4c6ab876e541defc9p-2,
-    0x1.91ac5111534a0p0
-  },
-  { // Entry 186
-    0x1.02044c9b70627350f5c613ba3eff7f14p-1,
-    0x1.a7bd0da775d4cp0
-  },
-  { // Entry 187
-    0x1.1c01dad59e72fa047b61ac26c51f4c17p-1,
-    0x1.bdcdca3d985f8p0
-  },
-  { // Entry 188
-    0x1.34bde9b821fe31136e67453dfecf9e34p-1,
-    0x1.d3de86d3baea4p0
-  },
-  { // Entry 189
-    0x1.4c561dbbb21d9a8faab44f6777f929f7p-1,
-    0x1.e9ef4369dd750p0
-  },
-  { // Entry 190
-    0x1.62e42fefa39eb35793c7673003e5ed5ep-1,
-    0x1.ffffffffffffcp0
-  },
-  { // Entry 191
-    -0x1.62e42fefa39f0ce4e0d5078578892721p-2,
-    0x1.6a09e667f3bccp-1
-  },
-  { // Entry 192
-    -0x1.24cfce6f80d9b57bf711e8c7ba21def9p-2,
-    0x1.80aa84ce72f89p-1
-  },
-  { // Entry 193
-    -0x1.d490246defa6c24070421157c8bdbac4p-3,
-    0x1.974b2334f2346p-1
-  },
-  { // Entry 194
-    -0x1.65d558d4ce00a4188793f7452a41c9d3p-3,
-    0x1.adebc19b71703p-1
-  },
-  { // Entry 195
-    -0x1.f991c6cb3b376d3e05c0449d9978b9bbp-4,
-    0x1.c48c6001f0ac0p-1
-  },
-  { // Entry 196
-    -0x1.31b994d3a4f80646146a3561e1668213p-4,
-    0x1.db2cfe686fe7dp-1
-  },
-  { // Entry 197
-    -0x1.ccb73cdddb2b3b5b841eb150a3d5e34dp-6,
-    0x1.f1cd9cceef23ap-1
-  },
-  { // Entry 198
-    0x1.0b94f7c19617485bcb4375b0b82ed7aap-6,
-    0x1.04371d9ab72fbp0
-  },
-  { // Entry 199
-    0x1.e27076e2af2d92344012fb7464c787c6p-5,
-    0x1.0f876ccdf6cd9p0
-  },
-  { // Entry 200
-    0x1.986d3228180be0924ac3a19b72870e79p-4,
-    0x1.1ad7bc01366b7p0
-  },
-  { // Entry 201
-    0x1.1c898c16999f2915ad51a005b68ddcc4p-3,
-    0x1.26280b3476095p0
-  },
-  { // Entry 202
-    0x1.69d4592a03621b2e6cccc2036f3931ffp-3,
-    0x1.31785a67b5a73p0
-  },
-  { // Entry 203
-    0x1.b44f77bcc8f55a888449bc53e9d9bf3ep-3,
-    0x1.3cc8a99af5451p0
-  },
-  { // Entry 204
-    0x1.fc2d6cf47cf0b2e0b88f48832402408cp-3,
-    0x1.4818f8ce34e2fp0
-  },
-  { // Entry 205
-    0x1.20cdcd192ab6530b24d75ab4459e3bc3p-2,
-    0x1.536948017480dp0
-  },
-  { // Entry 206
-    0x1.426174dbd515d649d69984816e68940dp-2,
-    0x1.5eb99734b41ebp0
-  },
-  { // Entry 207
-    0x1.62e42fefa39e52069052cb73bf7c2d5fp-2,
-    0x1.6a09e667f3bc9p0
-  },
-  { // Entry 208
-    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
-    0x1.8p-1
-  },
-  { // Entry 209
-    -0x1.89fa465cb93c39302d7a43bf8a8345c8p-3,
-    0x1.a666666666666p-1
-  },
-  { // Entry 210
-    -0x1.af8e8210a41648ad2ef5a75c80ae9b02p-4,
-    0x1.cccccccccccccp-1
-  },
-  { // Entry 211
-    -0x1.9ece955321b91119b64b048613dbc07dp-6,
-    0x1.f333333333332p-1
-  },
-  { // Entry 212
-    0x1.8fb063ef2c7d10ac8c5ce361f3a59a73p-5,
-    0x1.0ccccccccccccp0
-  },
-  { // Entry 213
-    0x1.e27076e2af2d7b106f9c6fe70000f0b8p-4,
-    0x1.1ffffffffffffp0
-  },
-  { // Entry 214
-    0x1.7565011e4966e394742cdeb80aaa0b85p-3,
-    0x1.3333333333332p0
-  },
-  { // Entry 215
-    0x1.f18dc41e8ef1708ddac617e72a16a351p-3,
-    0x1.4666666666665p0
-  },
-  { // Entry 216
-    0x1.334e9e47d07efd97d13fea265dcec2d1p-2,
-    0x1.5999999999998p0
-  },
-  { // Entry 217
-    0x1.6aac04146151ff3644f0da8793fe911fp-2,
-    0x1.6cccccccccccbp0
-  },
-  { // Entry 218
-    0x1.9f323ecbf98469d61382119eac3e89e1p-2,
-    0x1.7fffffffffffep0
-  },
-  { // Entry 219
-    0.0,
-    0x1.0p0
-  },
-  { // Entry 220
-    0x1.8663f793c46cc6d5699b82cc3bd3be38p-4,
-    0x1.199999999999ap0
-  },
-  { // Entry 221
-    0x1.7565011e4967b8e9c982340d62384469p-3,
-    0x1.3333333333334p0
-  },
-  { // Entry 222
-    0x1.0ca937be1b9df8e84ab52d4b0aefd012p-2,
-    0x1.4cccccccccccep0
-  },
-  { // Entry 223
-    0x1.588c2d9133494380eebceb76c1928f7cp-2,
-    0x1.6666666666668p0
-  },
-  { // Entry 224
-    0x1.9f323ecbf9851480be2cbc4956e9348bp-2,
-    0x1.8000000000002p0
-  },
-  { // Entry 225
-    0x1.e148a1a2726d394df8cdd6c80d7ec865p-2,
-    0x1.999999999999cp0
-  },
-  { // Entry 226
-    0x1.0fae81914a9947bd2de51187a6308fdbp-1,
-    0x1.b333333333336p0
-  },
-  { // Entry 227
-    0x1.2cf25fad8f1c715e5fafceb63bf60707p-1,
-    0x1.cccccccccccd0p0
-  },
-  { // Entry 228
-    0x1.48a11293d785f86a7b177f4aa4e9cadbp-1,
-    0x1.e66666666666ap0
-  },
-  { // Entry 229
-    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.0p1
-  },
-  { // Entry 230
-    0x1.1542457337d42e1c6b73c89d862ba171p6,
-    0x1.0p100
-  },
-  { // Entry 231
-    0x1.15a3de711cc5494e20ce2f7e393a9661p6,
-    0x1.199999999999ap100
-  },
-  { // Entry 232
-    0x1.15fcf7f3c6f8e1f8e05889b78cdcbd94p6,
-    0x1.3333333333334p100
-  },
-  { // Entry 233
-    0x1.164eeeaaf5efcc1553be7dcad1369141p6,
-    0x1.4cccccccccccep100
-  },
-  { // Entry 234
-    0x1.169ad1a0c907775fec628588fced3401p6,
-    0x1.6666666666668p100
-  },
-  { // Entry 235
-    0x1.16e177b203cdb330ec31f559cf828aa6p6,
-    0x1.8000000000002p100
-  },
-  { // Entry 236
-    0x1.17238e14da469b55b96c96744e39203ap6,
-    0x1.999999999999cp100
-  },
-  { // Entry 237
-    0x1.1761a2765a6960abe5cf92c095780291p6,
-    0x1.b333333333336p100
-  },
-  { // Entry 238
-    0x1.179c2a3292f266ff2833283af2a38d7fp6,
-    0x1.cccccccccccd0p100
-  },
-  { // Entry 239
-    0x1.17d387985f833a0d4069f79c1b757507p6,
-    0x1.e66666666666ap100
-  },
-  { // Entry 240
-    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
-    0x1.0p101
-  },
-  { // Entry 241
-    0x1.1542457337d42e1c6b73c89d862ba171p7,
-    0x1.0p200
-  },
-  { // Entry 242
-    0x1.157311f22a4cbbb54620fc0ddfb31be9p7,
-    0x1.199999999999ap200
-  },
-  { // Entry 243
-    0x1.159f9eb37f66880aa5e6292a89842f82p7,
-    0x1.3333333333334p200
-  },
-  { // Entry 244
-    0x1.15c89a0f16e1fd18df9923342bb11959p7,
-    0x1.4cccccccccccep200
-  },
-  { // Entry 245
-    0x1.15ee8b8a006dd2be2beb2713418c6ab9p7,
-    0x1.6666666666668p200
-  },
-  { // Entry 246
-    0x1.1611de929dd0f0a6abd2defbaad7160cp7,
-    0x1.8000000000002p200
-  },
-  { // Entry 247
-    0x1.1632e9c4090d64b912702f88ea3260d6p7,
-    0x1.999999999999cp200
-  },
-  { // Entry 248
-    0x1.1651f3f4c91ec76428a1adaf0dd1d201p7,
-    0x1.b333333333336p200
-  },
-  { // Entry 249
-    0x1.166f37d2e5634a8dc9d3786c3c679778p7,
-    0x1.cccccccccccd0p200
-  },
-  { // Entry 250
-    0x1.168ae685cbabb414d5eee01cd0d08b3cp7,
-    0x1.e66666666666ap200
-  },
-  { // Entry 251
-    0x1.16a529a32777cd0fc3079004b633875fp7,
-    0x1.0p201
-  },
-  { // Entry 252
-    0x1.5a92d6d005c939a38650bac4e7b689cep9,
-    0x1.0p1000
-  },
-  { // Entry 253
-    -0x1.0000080000555559555588888b333357p-20,
-    0x1.ffffep-1
-  },
-  { // Entry 254
-    -0x1.0000040000155555d5555888889ddddep-21,
-    0x1.fffffp-1
-  },
-  { // Entry 255
-    0.0,
-    0x1.0p0
-  },
-  { // Entry 256
-    0x1.fffff800002aaaa9aaaab11110e66667p-22,
-    0x1.0000080p0
-  },
-  { // Entry 257
-    0x1.fffff00000aaaaa2aaab11110bbbbc04p-21,
-    0x1.00001p0
-  },
-  { // Entry 258
-    -0x1.00000002000000055555556555555588p-30,
-    0x1.fffffff80p-1
-  },
-  { // Entry 259
-    -0x1.00000001000000015555555755555558p-31,
-    0x1.fffffffc0p-1
-  },
-  { // Entry 260
-    0.0,
-    0x1.0p0
-  },
-  { // Entry 261
-    0x1.fffffffe00000002aaaaaaa6aaaaaab1p-32,
-    0x1.000000020p0
-  },
-  { // Entry 262
-    0x1.fffffffc0000000aaaaaaa8aaaaaab11p-31,
-    0x1.000000040p0
-  },
-  { // Entry 263
-    -0x1.00000000008000000000555555555595p-40,
-    0x1.fffffffffe0p-1
-  },
-  { // Entry 264
-    -0x1.0000000000400000000015555555555dp-41,
-    0x1.ffffffffff0p-1
-  },
-  { // Entry 265
-    0.0,
-    0x1.0p0
-  },
-  { // Entry 266
-    0x1.ffffffffff80000000002aaaaaaaaa9ap-42,
-    0x1.00000000008p0
-  },
-  { // Entry 267
-    0x1.ffffffffff0000000000aaaaaaaaaa2ap-41,
-    0x1.00000000010p0
-  },
-  { // Entry 268
-    -0x1.00000000000020000000000005555555p-50,
-    0x1.ffffffffffff8p-1
-  },
-  { // Entry 269
-    -0x1.00000000000010000000000001555555p-51,
-    0x1.ffffffffffffcp-1
-  },
-  { // Entry 270
-    0.0,
-    0x1.0p0
-  },
-  { // Entry 271
-    0x1.ffffffffffffe0000000000002aaaaaap-52,
-    0x1.0000000000002p0
-  },
-  { // Entry 272
-    0x1.ffffffffffffc000000000000aaaaaaap-51,
-    0x1.0000000000004p0
-  },
-  { // Entry 273
-    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 274
-    -0x1.74385446d71c36395a7ea3b9e048a775p9,
-    0x1.0p-1074
-  },
-  { // Entry 275
-    -0x1.62e42fefa39f3a261da205fd13cb53dfp-2,
-    0x1.6a09e667f3bcbp-1
-  },
-  { // Entry 276
-    -0x1.62e42fefa39f0ce4e0d5078578892721p-2,
-    0x1.6a09e667f3bccp-1
-  },
-  { // Entry 277
-    -0x1.62e42fefa39edfa3a408090ddf46fa62p-2,
-    0x1.6a09e667f3bcdp-1
-  },
-  { // Entry 278
-    0x1.62e42fefa39eac8909ecc862fc0086ddp-2,
-    0x1.6a09e667f3bcbp0
-  },
-  { // Entry 279
-    0x1.62e42fefa39ed9ca46b9c6da9742b39bp-2,
-    0x1.6a09e667f3bccp0
-  },
-  { // Entry 280
-    0x1.62e42fefa39f070b8386c5523084e05ap-2,
-    0x1.6a09e667f3bcdp0
-  },
-  { // Entry 281
-    -0x1.62e42fefa39f035793c767300825ed5ep-1,
-    0x1.fffffffffffffp-2
-  },
-  { // Entry 282
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.0p-1
-  },
-  { // Entry 283
-    -0x1.62e42fefa39ed35793c7673008e5ed5ep-1,
-    0x1.0000000000001p-1
-  },
-  { // Entry 284
-    -0x1.269621134db9522e69621216b637fb86p-2,
-    0x1.7ffffffffffffp-1
-  },
-  { // Entry 285
-    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
-    0x1.8p-1
-  },
-  { // Entry 286
-    -0x1.269621134db8fcd9140cbcc160e2a631p-2,
-    0x1.8000000000001p-1
-  },
-  { // Entry 287
-    0x1.9f323ecbf9849480be2cbc495993df36p-2,
-    0x1.7ffffffffffffp0
-  },
-  { // Entry 288
-    0x1.9f323ecbf984bf2b68d766f405221819p-2,
-    0x1.8p0
-  },
-  { // Entry 289
-    0x1.9f323ecbf984e9d61382119eaee9348bp-2,
-    0x1.8000000000001p0
-  },
-  { // Entry 290
-    0x1.54e3c0b10a36434abac277160311ccb4p-9,
-    0x1.00aaaaaaaaaaap0
-  },
-  { // Entry 291
-    0x1.54e3c0b10a562e0394dbbb9359f477ddp-9,
-    0x1.00aaaaaaaaaabp0
-  },
-  { // Entry 292
-    0x1.54e3c0b10a7618bc6ef5000eb37f2563p-9,
-    0x1.00aaaaaaaaaacp0
-  },
-  { // Entry 293
-    0x1.62e42fefa39eeb5793c7673007c5ed5ep0,
-    0x1.fffffffffffffp1
-  },
-  { // Entry 294
-    0x1.62e42fefa39ef35793c7673007e5ed5ep0,
-    0x1.0p2
-  },
-  { // Entry 295
-    0x1.62e42fefa39f035793c767300765ed5ep0,
-    0x1.0000000000001p2
-  },
-  { // Entry 296
-    0x1.62e42fefa39ee35793c7673007a5ed5ep-1,
-    0x1.fffffffffffffp0
-  },
-  { // Entry 297
-    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.0p1
-  },
-  { // Entry 298
-    0x1.62e42fefa39f135793c7673006e5ed5ep-1,
-    0x1.0000000000001p1
-  },
-  { // Entry 299
-    -0x1.00000000000004000000000000155555p-53,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 300
-    0.0,
-    0x1.0p0
-  },
-  { // Entry 301
-    0x1.fffffffffffff0000000000000aaaaaap-53,
-    0x1.0000000000001p0
-  },
-  { // Entry 302
-    -0x1.62e42fefa39f035793c767300825ed5ep-1,
-    0x1.fffffffffffffp-2
-  },
-  { // Entry 303
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.0p-1
-  },
-  { // Entry 304
-    -0x1.62e42fefa39ed35793c7673008e5ed5ep-1,
-    0x1.0000000000001p-1
-  },
-  { // Entry 305
-    -0x1.62e42fefa39efb5793c767300805ed5ep0,
-    0x1.fffffffffffffp-3
-  },
-  { // Entry 306
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
-    0x1.0p-2
-  },
-  { // Entry 307
-    -0x1.62e42fefa39ee35793c767300865ed5ep0,
-    0x1.0000000000001p-2
-  },
-  { // Entry 308
-    -0x1.0a2b23f3bab73a81aed58d6405fc7206p1,
-    0x1.fffffffffffffp-4
-  },
-  { // Entry 309
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
-    0x1.0p-3
-  },
-  { // Entry 310
-    -0x1.0a2b23f3bab72e81aed58d64062c7206p1,
-    0x1.0000000000001p-3
-  },
-  { // Entry 311
-    -0x1.62e42fefa39ef75793c7673007f5ed5ep1,
-    0x1.fffffffffffffp-5
-  },
-  { // Entry 312
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
-    0x1.0p-4
-  },
-  { // Entry 313
-    -0x1.62e42fefa39eeb5793c767300825ed5ep1,
-    0x1.0000000000001p-4
-  },
-  { // Entry 314
-    -0x1.bb9d3beb8c86b42d78b940fc09ef68b6p1,
-    0x1.fffffffffffffp-6
-  },
-  { // Entry 315
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
-    0x1.0p-5
-  },
-  { // Entry 316
-    -0x1.bb9d3beb8c86a82d78b940fc0a1f68b6p1,
-    0x1.0000000000001p-5
-  },
-  { // Entry 317
-    -0x1.0a2b23f3bab73881aed58d6405f47206p2,
-    0x1.fffffffffffffp-7
-  },
-  { // Entry 318
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
-    0x1.0p-6
-  },
-  { // Entry 319
-    -0x1.0a2b23f3bab73281aed58d64060c7206p2,
-    0x1.0000000000001p-6
-  },
-  { // Entry 320
-    -0x1.3687a9f1af2b16eca14e7a4a06f12fb2p2,
-    0x1.fffffffffffffp-8
-  },
-  { // Entry 321
-    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
-    0x1.0p-7
-  },
-  { // Entry 322
-    -0x1.3687a9f1af2b10eca14e7a4a07092fb2p2,
-    0x1.0000000000001p-7
-  },
-  { // Entry 323
-    -0x1.62e42fefa39ef55793c7673007eded5ep2,
-    0x1.fffffffffffffp-9
-  },
-  { // Entry 324
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
-    0x1.0p-8
-  },
-  { // Entry 325
-    -0x1.62e42fefa39eef5793c767300805ed5ep2,
-    0x1.0000000000001p-8
-  },
-  { // Entry 326
-    -0x1.8f40b5ed9812d3c28640541608eaab0ap2,
-    0x1.fffffffffffffp-10
-  },
-  { // Entry 327
-    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
-    0x1.0p-9
-  },
-  { // Entry 328
-    -0x1.8f40b5ed9812cdc2864054160902ab0ap2,
-    0x1.0000000000001p-9
-  },
-  { // Entry 329
-    -0x1.bb9d3beb8c86b22d78b940fc09e768b6p2,
-    0x1.fffffffffffffp-11
-  },
-  { // Entry 330
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
-    0x1.0p-10
-  },
-  { // Entry 331
-    -0x1.bb9d3beb8c86ac2d78b940fc09ff68b6p2,
-    0x1.0000000000001p-10
-  },
-  { // Entry 332
-    -0x1.205966f2b4f126b7281203d7066ed0dcp3,
-    0x1.fffffffffffffp-14
-  },
-  { // Entry 333
-    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
-    0x1.0p-13
-  },
-  { // Entry 334
-    -0x1.205966f2b4f123b7281203d7067ad0dcp3,
-    0x1.0000000000001p-13
-  },
-  { // Entry 335
-    -0x1.205966f2b4f126b7281203d7066ed0dcp3,
-    0x1.fffffffffffffp-14
-  },
-  { // Entry 336
-    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
-    0x1.0p-13
-  },
-  { // Entry 337
-    -0x1.205966f2b4f123b7281203d7067ad0dcp3,
-    0x1.0000000000001p-13
-  },
-  { // Entry 338
-    -0x1.0a2b23f3bab73a81aed58d6405fc7206p1,
-    0x1.fffffffffffffp-4
-  },
-  { // Entry 339
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
-    0x1.0p-3
-  },
-  { // Entry 340
-    -0x1.0a2b23f3bab72e81aed58d64062c7206p1,
-    0x1.0000000000001p-3
-  },
-  { // Entry 341
-    -0x1.1178e8227e480707cafd4459785b0e8fp-3,
-    0x1.bffffffffffffp-1
-  },
-  { // Entry 342
-    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
-    0x1.cp-1
-  },
-  { // Entry 343
-    -0x1.1178e8227e4774bea66afb34e611e9fdp-3,
-    0x1.c000000000001p-1
-  },
-  { // Entry 344
-    -0x1.62e42fefa39ef75793c7673007f5ed5ep1,
-    0x1.fffffffffffffp-5
-  },
-  { // Entry 345
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
-    0x1.0p-4
-  },
-  { // Entry 346
-    -0x1.62e42fefa39eeb5793c767300825ed5ep1,
-    0x1.0000000000001p-4
-  },
-  { // Entry 347
-    -0x1.08598b59e3a0f112c86247d8be41d487p-4,
-    0x1.dffffffffffffp-1
-  },
-  { // Entry 348
-    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
-    0x1.ep-1
-  },
-  { // Entry 349
-    -0x1.08598b59e39fe001b75136c7ad30c376p-4,
-    0x1.e000000000001p-1
-  },
-  { // Entry 350
-    -0x1.bb9d3beb8c86b42d78b940fc09ef68b6p1,
-    0x1.fffffffffffffp-6
-  },
-  { // Entry 351
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
-    0x1.0p-5
-  },
-  { // Entry 352
-    -0x1.bb9d3beb8c86a82d78b940fc0a1f68b6p1,
-    0x1.0000000000001p-5
-  },
-  { // Entry 353
-    -0x1.0415d89e74454f43844b7e55cedd837bp-5,
-    0x1.effffffffffffp-1
-  },
-  { // Entry 354
-    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
-    0x1.fp-1
-  },
-  { // Entry 355
-    -0x1.0415d89e74433ebf63433c454abc7b39p-5,
-    0x1.f000000000001p-1
-  },
-  { // Entry 356
-    -0x1.0a2b23f3bab73881aed58d6405f47206p2,
-    0x1.fffffffffffffp-7
-  },
-  { // Entry 357
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
-    0x1.0p-6
-  },
-  { // Entry 358
-    -0x1.0a2b23f3bab73281aed58d64060c7206p2,
-    0x1.0000000000001p-6
-  },
-  { // Entry 359
-    -0x1.0205658935867cbfa5a9263bd81da4a0p-6,
-    0x1.f7fffffffffffp-1
-  },
-  { // Entry 360
-    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
-    0x1.f80p-1
-  },
-  { // Entry 361
-    -0x1.0205658935826c7ea198e537c7dca08fp-6,
-    0x1.f800000000001p-1
-  },
-  { // Entry 362
-    -0x1.3687a9f1af2b16eca14e7a4a06f12fb2p2,
-    0x1.fffffffffffffp-8
-  },
-  { // Entry 363
-    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
-    0x1.0p-7
-  },
-  { // Entry 364
-    -0x1.3687a9f1af2b10eca14e7a4a07092fb2p2,
-    0x1.0000000000001p-7
-  },
-  { // Entry 365
-    -0x1.010157588deb1a9cec9b03fbee49c6b0p-7,
-    0x1.fbfffffffffffp-1
-  },
-  { // Entry 366
-    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
-    0x1.fc0p-1
-  },
-  { // Entry 367
-    -0x1.010157588de30a7cac1a01f7e639a670p-7,
-    0x1.fc00000000001p-1
-  },
-  { // Entry 368
-    -0x1.62e42fefa39ef55793c7673007eded5ep2,
-    0x1.fffffffffffffp-9
-  },
-  { // Entry 369
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
-    0x1.0p-8
-  },
-  { // Entry 370
-    -0x1.62e42fefa39eef5793c767300805ed5ep2,
-    0x1.0000000000001p-8
-  },
-  { // Entry 371
-    -0x1.0080559588bb5feda0eb4595c5fbe2b1p-8,
-    0x1.fdfffffffffffp-1
-  },
-  { // Entry 372
-    -0x1.0080559588b357e598e33d8d9db37a29p-8,
-    0x1.fe0p-1
-  },
-  { // Entry 373
-    -0x1.0080559588ab4fdd90db3585b5ebd2a1p-8,
-    0x1.fe00000000001p-1
-  },
-  { // Entry 374
-    -0x1.8f40b5ed9812d3c28640541608eaab0ap2,
-    0x1.fffffffffffffp-10
-  },
-  { // Entry 375
-    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
-    0x1.0p-9
-  },
-  { // Entry 376
-    -0x1.8f40b5ed9812cdc2864054160902ab0ap2,
-    0x1.0000000000001p-9
-  },
-  { // Entry 377
-    -0x1.0040155d5899e674691fef41402f3e7bp-9,
-    0x1.fefffffffffffp-1
-  },
-  { // Entry 378
-    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
-    0x1.ff0p-1
-  },
-  { // Entry 379
-    -0x1.0040155d5879d66c651dee40bfef1e6bp-9,
-    0x1.ff00000000001p-1
-  },
-  { // Entry 380
-    -0x1.bb9d3beb8c86b22d78b940fc09e768b6p2,
-    0x1.fffffffffffffp-11
-  },
-  { // Entry 381
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
-    0x1.0p-10
-  },
-  { // Entry 382
-    -0x1.bb9d3beb8c86ac2d78b940fc09ff68b6p2,
-    0x1.0000000000001p-10
-  },
-  { // Entry 383
-    -0x1.0020055655a89b377d5801fd08fd9f2dp-10,
-    0x1.ff7ffffffffffp-1
-  },
-  { // Entry 384
-    -0x1.00200556558893357cd7e1f486bd0705p-10,
-    0x1.ff8p-1
-  },
-  { // Entry 385
-    -0x1.0020055655688b337c57c1ed04fc9eedp-10,
-    0x1.ff80000000001p-1
-  },
-  { // Entry 386
-    -0x1.205966f2b4f126b7281203d7066ed0dcp3,
-    0x1.fffffffffffffp-14
-  },
-  { // Entry 387
-    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
-    0x1.0p-13
-  },
-  { // Entry 388
-    -0x1.205966f2b4f123b7281203d7067ad0dcp3,
-    0x1.0000000000001p-13
-  },
-  { // Entry 389
-    -0x1.0004001556d56088dde0703f034ca096p-13,
-    0x1.ffeffffffffffp-1
-  },
-  { // Entry 390
-    -0x1.0004001555d558889dde702b028c9996p-13,
-    0x1.fffp-1
-  },
-  { // Entry 391
-    -0x1.0004001554d550885ddc701f024c9896p-13,
-    0x1.fff0000000001p-1
-  },
-  { // Entry 392
-    HUGE_VAL,
-    HUGE_VAL
-  },
-  { // Entry 393
-    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 394
-    0x1.62e42fefa39ef34f93c7673007e5ad5ep9,
-    0x1.ffffffffffffep1023
-  },
-  { // Entry 395
-    0x1.250d048e7a1bcdee499fa5b0ca1dd243p0,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 396
-    0x1.ce6bb25aa1315109feefc86318ab6e52p-2,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 397
-    0x1.fffffffffffff0000000000000aaaaaap-53,
-    0x1.0000000000001p0
-  },
-  { // Entry 398
-    0.0,
-    0x1.0p0
-  },
-  { // Entry 399
-    -0x1.00000000000004000000000000155555p-53,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 400
-    -0x1.eeb95b094c192b4a513e0bf9ee40d8d4p-3,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 401
-    -0x1.6232bdd7abcd23d5e7fd837c6fe23a67p9,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 402
-    -0x1.6232bdd7abcd23dde7fd837c6fe1fa67p9,
-    0x1.0p-1022
-  },
-  { // Entry 403
-    -0x1.6232bdd7abcd23e5e7fd837c6fe23a67p9,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 404
-    -0x1.6232bdd7abcd23ede7fd837c6fe2fa67p9,
-    0x1.ffffffffffffcp-1023
-  },
-  { // Entry 405
-    -0x1.73df9b3adb334e7c8499b1e01446adfap9,
-    0x1.0p-1073
-  },
-  { // Entry 406
-    -0x1.74385446d71c36395a7ea3b9e048a775p9,
-    0x1.0p-1074
-  },
-  { // Entry 407
-    -HUGE_VAL,
-    0.0
-  },
-  { // Entry 408
-    -HUGE_VAL,
-    -0.0
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_log, log_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_log_intel_data)/sizeof(log_intel_data_t); i++) {
-    EXPECT_DOUBLE_EQ(g_log_intel_data[i].expected, log(g_log_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_logf_test.cpp b/tests/math_logf_test.cpp
deleted file mode 100644
index e5d0921..0000000
--- a/tests/math_logf_test.cpp
+++ /dev/null
@@ -1,1327 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  float expected;
-  float call_data;
-} logf_intel_data_t;
-
-static logf_intel_data_t g_logf_intel_data[] = {
-  { // Entry 0
-    -0x1.bb9d3aeb8c87b02d7763eba8b48a102dp1,
-    0x1.000002p-5
-  },
-  { // Entry 1
-    0x1.fffffe000002aaaaa6aaaab111110666p-24,
-    0x1.000002p0
-  },
-  { // Entry 2
-    -0x1.c6b45ceb09a5a7c82aacd1cadf7253dcp4,
-    0x1.000008p-41
-  },
-  { // Entry 3
-    -0x1.d1cb7cea86d09f62474b14c45f4cb680p3,
-    0x1.000010p-21
-  },
-  { // Entry 4
-    -0x1.fe2800e87c347d788f394ef2e93db868p5,
-    0x1.000080p-92
-  },
-  { // Entry 5
-    0x1.1fffaf001e5ff32f85c436e59fe73b1ep-17,
-    0x1.000090p0
-  },
-  { // Entry 6
-    -0x1.0a27a3fffa7e0d031d9a55d157a0e8c8p1,
-    0x1.0007p-3
-  },
-  { // Entry 7
-    0x1.54de6ee78989a9acfc875c1d45e16490p-9,
-    0x1.00aaa8p0
-  },
-  { // Entry 8
-    0x1.8f4826fff787c58fab520e505952bb55p-9,
-    0x1.00c7f2p0
-  },
-  { // Entry 9
-    -0x1.6150cefffc83ba2da43d8d7455ef2fdep-1,
-    0x1.00cap-1
-  },
-  { // Entry 10
-    0x1.cf2e3eb0928bdf5cbf064a27c6422c85p-9,
-    0x1.00e8p0
-  },
-  { // Entry 11
-    0x1.f0ee8a9a67ab36597ffd3c93304d0cc5p-9,
-    0x1.00f8f0p0
-  },
-  { // Entry 12
-    0x1.fbdfc897d239fb49dc1c31afeaea1ea5p-9,
-    0x1.00fe6ep0
-  },
-  { // Entry 13
-    0x1.fdc5e48f893e8f48967ee4ff1e895dd5p-9,
-    0x1.00ff62p0
-  },
-  { // Entry 14
-    0x1.be79c70058ec8f9a6c04043f52763c30p-8,
-    0x1.01c0p0
-  },
-  { // Entry 15
-    0x1.e3afef036c442bea46d105f6864ea6f3p-8,
-    0x1.01e57ap0
-  },
-  { // Entry 16
-    0x1.eb92db03d89f25719af908ebb6e7e510p-8,
-    0x1.01ed6cp0
-  },
-  { // Entry 17
-    0x1.f873b502f9427cb1a14872267ffae2f8p-8,
-    0x1.01fa66p0
-  },
-  { // Entry 18
-    0x1.fc108903fcd4cd445800cb06c164d0b0p-8,
-    0x1.01fe0ap0
-  },
-  { // Entry 19
-    0x1.fea168fad6274232ad3998c3e39e43d9p-8,
-    0x1.0200a0p0
-  },
-  { // Entry 20
-    0x1.0ce4c9fe3edd7f45dc38d30f76305931p-7,
-    0x1.021cp0
-  },
-  { // Entry 21
-    0x1.0ee096e2764f9f1e64840607436cc093p-7,
-    0x1.0220p0
-  },
-  { // Entry 22
-    0x1.fc098efffe49fe32c3576def6f303335p-7,
-    0x1.03fffep0
-  },
-  { // Entry 23
-    -0x1.58fed400015fff94ac3bb9ebbc81c8aep-1,
-    0x1.04ffp-1
-  },
-  { // Entry 24
-    -0x1.58b1f1ffffa56b55b6a722e0ab2c5ae6p-1,
-    0x1.052634p-1
-  },
-  { // Entry 25
-    0x1.e720a3003d099731c85ce6d689546a76p-6,
-    0x1.07b9c4p0
-  },
-  { // Entry 26
-    0x1.f5a4cb00353937ad8b1e07a6a469189fp-6,
-    0x1.07f59cp0
-  },
-  { // Entry 27
-    -0x1.b0080fffd588ec91883715736aae0f50p4,
-    0x1.08p-39
-  },
-  { // Entry 28
-    0x1.7f64a700002b54d6fb5d69bc35c5e2cap-1,
-    0x1.0ea7b0p1
-  },
-  { // Entry 29
-    0x1.cf2825078d8bd21f5b5543342e66b54dp-5,
-    0x1.0ee4p0
-  },
-  { // Entry 30
-    0x1.845657000391f340da745d9e5d283165p-1,
-    0x1.1148p1
-  },
-  { // Entry 31
-    -0x1.b959420004b51fb80d8329172d8922f6p3,
-    0x1.12c8p-20
-  },
-  { // Entry 32
-    -0x1.3cb226cef9a610cf77dc0067902b4099p-1,
-    0x1.13d4p-1
-  },
-  { // Entry 33
-    0x1.5e1a22fccd87d40b6e7ebc0226374d61p-4,
-    0x1.16d8p0
-  },
-  { // Entry 34
-    -0x1.35fb76dd8c7a211f33842af42c599114p-1,
-    0x1.1778p-1
-  },
-  { // Entry 35
-    -0x1.35028ad9d8c85c1fca93f355d4796bc1p-1,
-    0x1.18p-1
-  },
-  { // Entry 36
-    0x1.a3f71cff14b8111aded976c26d18960ep-4,
-    0x1.1ba4p0
-  },
-  { // Entry 37
-    -0x1.55a061fff90fa6df755f7aef5ab9f978p1,
-    0x1.1bf4p-4
-  },
-  { // Entry 38
-    -0x1.ce5ffde66a9af783b86443209ecec164p3,
-    0x1.1ce0p-21
-  },
-  { // Entry 39
-    -0x1.ce3a55ea5d47322bdbbe0fff5479ca1ep3,
-    0x1.1e30p-21
-  },
-  { // Entry 40
-    0x1.e23792ef52971fd6c72a99f598a0fbacp-4,
-    0x1.1ffcp0
-  },
-  { // Entry 41
-    0x1.8fe0c85314ba5e09e115528c02ef6e31p0,
-    0x1.312e78p2
-  },
-  { // Entry 42
-    -0x1.fdedfade465d57336a9b8a3562d3b176p-2,
-    0x1.372c16p-1
-  },
-  { // Entry 43
-    -0x1.fd9c98de7d89b9e29546a9b7692cacddp-2,
-    0x1.3744d2p-1
-  },
-  { // Entry 44
-    -0x1.fd5656de0c66d47b7b9cf4fa68b356e4p-2,
-    0x1.375a2ep-1
-  },
-  { // Entry 45
-    -0x1.fca98cde0ceb18d6d7bab7705d14de17p-2,
-    0x1.378ebcp-1
-  },
-  { // Entry 46
-    -0x1.fc0a58de4ea7c9432ac00ff0adb6db7ep-2,
-    0x1.37bf30p-1
-  },
-  { // Entry 47
-    -0x1.ebdede51de7d7b359acc23ec312af2d4p-2,
-    0x1.3cb56ap-1
-  },
-  { // Entry 48
-    -0x1.dae0dedfdda2569379630abffcaffff2p-2,
-    0x1.420208p-1
-  },
-  { // Entry 49
-    -0x1.d930ca53ae8e0695d14e48376b584668p-2,
-    0x1.428a04p-1
-  },
-  { // Entry 50
-    0x1.ec3649c72c05a069c2d000090851c639p-3,
-    0x1.458cbep0
-  },
-  { // Entry 51
-    0x1.f3e63257ecd12b0d9ccc9ff34c3f3d6ep-3,
-    0x1.46c626p0
-  },
-  { // Entry 52
-    -0x1.693cfa30b633b1d03f4ecd88a750ac79p-2,
-    0x1.67cd3ap-1
-  },
-  { // Entry 53
-    -0x1.692b5e42108b73d7599518074ce8670ap-2,
-    0x1.67d36ap-1
-  },
-  { // Entry 54
-    -0x1.63bbba1771b8208d851ab36cd6d93f38p-2,
-    0x1.69bdbap-1
-  },
-  { // Entry 55
-    0x1.62e25eec85781e60cb49b4f21becabdfp-2,
-    0x1.6a0942p0
-  },
-  { // Entry 56
-    0x1.62e3ce9ef86f6524351edd87310e8743p-2,
-    0x1.6a09c4p0
-  },
-  { // Entry 57
-    -0x1.3c607adedb168d9d89c6b2265b4dd0a4p-2,
-    0x1.77ea38p-1
-  },
-  { // Entry 58
-    -0x1.194432fffcb092d891670b7f8f628fc4p6,
-    0x1.77fffep-102
-  },
-  { // Entry 59
-    0x1.193ea500258270930f8e7d7af244dcffp0,
-    0x1.7ffffcp1
-  },
-  { // Entry 60
-    -0x1.dac08de1d26b0f69e1ed58bd3d9fd82bp3,
-    0x1.82fe92p-22
-  },
-  { // Entry 61
-    0x1.c8d70de117cb2fe459ed64cc67e5abc9p3,
-    0x1.830608p20
-  },
-  { // Entry 62
-    0x1.f2272ae325a57546f69496cf261be046p1,
-    0x1.88p5
-  },
-  { // Entry 63
-    0x1.c9c5ade34763c0b9a180d863bfc7f106p3,
-    0x1.8e7686p20
-  },
-  { // Entry 64
-    -0x1.f991d108abe1fc9c91e91ae7f707bd4fp-3,
-    0x1.8ffffep-1
-  },
-  { // Entry 65
-    -0x1.827d4d002e5d13215ce5f8de87566933p1,
-    0x1.8ffffep-5
-  },
-  { // Entry 66
-    -0x1.f305bd058b3c9e64101476e5de911d83p-3,
-    0x1.9147e0p-1
-  },
-  { // Entry 67
-    -0x1.ee7ee50650878a84e97f4cec96736bc5p-3,
-    0x1.922b30p-1
-  },
-  { // Entry 68
-    0x1.dc0391005bf0fccb92c262eeb6a300e4p0,
-    0x1.9ae278p2
-  },
-  { // Entry 69
-    -0x1.2650b600000be0c5902c7a15495161c5p1,
-    0x1.9aeea0p-4
-  },
-  { // Entry 70
-    -0x1.7ba9b7ffff3d189f5a17149697c12ce2p1,
-    0x1.a5e970p-5
-  },
-  { // Entry 71
-    -0x1.206170fffc9e8a93c1986e21787bed5ap1,
-    0x1.ae6ef0p-4
-  },
-  { // Entry 72
-    -0x1.d73d7ffc1e7abc4225e39878828f8666p3,
-    0x1.afe26cp-22
-  },
-  { // Entry 73
-    -0x1.25174700000008ddbe755739d626364fp3,
-    0x1.b97c70p-14
-  },
-  { // Entry 74
-    -0x1.1ca5b500035fc07c389a9e5cbfd78edbp1,
-    0x1.bb2c2cp-4
-  },
-  { // Entry 75
-    -0x1.24b0ebfffcc32ee1b9b739e2a4c7d059p3,
-    0x1.bf0970p-14
-  },
-  { // Entry 76
-    -0x1.669915000230d74fa2da2f40bbdf4469p3,
-    0x1.c7fffep-17
-  },
-  { // Entry 77
-    -0x1.954aeedf4d5f5fb7c474a35723b4e707p-1,
-    0x1.cffffep-2
-  },
-  { // Entry 78
-    -0x1.92e76afffcd449b3ac5d412b622f78a8p-4,
-    0x1.d008e4p-1
-  },
-  { // Entry 79
-    -0x1.ffa24f1c1233a9f8e8ae684edf89313fp-5,
-    0x1.e10040p-1
-  },
-  { // Entry 80
-    -0x1.117889fffffbdf8a5cd7c34f7246f3cfp1,
-    0x1.e39bb4p-4
-  },
-  { // Entry 81
-    -0x1.894ac2dcdde549d0d0922b5b4f54e028p-5,
-    0x1.e7fffep-1
-  },
-  { // Entry 82
-    -0x1.381d36ffe60eb1dfb0686574074223e7p-5,
-    0x1.ecdc1cp-1
-  },
-  { // Entry 83
-    0x1.d14973edb3656c771e18eca84bc94c76p4,
-    0x1.effffep41
-  },
-  { // Entry 84
-    -0x1.efea18fff1115e81636f53b65665e16ep-6,
-    0x1.f0bc20p-1
-  },
-  { // Entry 85
-    -0x1.a5b584ffdad31147d1140b1694740ad7p-6,
-    0x1.f2fd60p-1
-  },
-  { // Entry 86
-    -0x1.62b35affdf0a2429284b006b680bd1bep-6,
-    0x1.f508e4p-1
-  },
-  { // Entry 87
-    -0x1.0cb140ffff9f8f1e06e7f9af0a531a5bp1,
-    0x1.f600dcp-4
-  },
-  { // Entry 88
-    -0x1.0bfe70eb451ad09a7cb75c1eedfa6150p1,
-    0x1.f8c010p-4
-  },
-  { // Entry 89
-    -0x1.70c8c50dce246dd6bcb0461e7dc4937ep-7,
-    0x1.fa4522p-1
-  },
-  { // Entry 90
-    -0x1.416a71b773a2c3e3980b11efd1a197b5p-8,
-    0x1.fd7ebep-1
-  },
-  { // Entry 91
-    -0x1.c0c674621c5b474a430e13570c580388p-9,
-    0x1.fe3ffep-1
-  },
-  { // Entry 92
-    -0x1.04863cfffbbf7edb167cb60df3f3d599p-9,
-    0x1.fefbbcp-1
-  },
-  { // Entry 93
-    -0x1.0a5ddf00004ebf2a6feee99d5bddde34p1,
-    0x1.ff353cp-4
-  },
-  { // Entry 94
-    -0x1.d80366485b747247a45bb9a470179df1p-15,
-    0x1.fff8a0p-1
-  },
-  { // Entry 95
-    -0x1.d1cb7fea86c49f63074b0d445fb65014p3,
-    0x1.fffff0p-22
-  },
-  { // Entry 96
-    0x1.d1cb7dea86bc9f62dca06199b5053f03p3,
-    0x1.fffff0p20
-  },
-  { // Entry 97
-    -0x1.00000200000555556555558888893333p-22,
-    0x1.fffff8p-1
-  },
-  { // Entry 98
-    -0x1.00000100000155555755555888888dddp-23,
-    0x1.fffffcp-1
-  },
-  { // Entry 99
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 100
-    -0x1.62e43115a8fb47c3a7c2e76a80cca9a5p-2,
-    0x1.6a09e6p-1
-  },
-  { // Entry 101
-    -0x1.da391a70d28a24641626f5e9155324b5p-3,
-    0x1.962b60p-1
-  },
-  { // Entry 102
-    -0x1.06fbe6a4e25295f80fb2274afe6d3bacp-3,
-    0x1.c24cdap-1
-  },
-  { // Entry 103
-    -0x1.1e0a6d053425d3d6528aa717ecc9a578p-5,
-    0x1.ee6e54p-1
-  },
-  { // Entry 104
-    0x1.9e549c3779f093451892a1fe4e67b50ep-5,
-    0x1.0d47e6p0
-  },
-  { // Entry 105
-    0x1.08e0b9f3a7944bab3ecb56d6a7ff03b5p-3,
-    0x1.2358a2p0
-  },
-  { // Entry 106
-    0x1.9e645d60ff198986479346d164ecad7ep-3,
-    0x1.39695ep0
-  },
-  { // Entry 107
-    0x1.14dd670cac0212506bf72fb762d8a7dbp-2,
-    0x1.4f7a1ap0
-  },
-  { // Entry 108
-    0x1.561819aca49de6b1d1ccda1095c74502p-2,
-    0x1.658ad6p0
-  },
-  { // Entry 109
-    0x1.936a7c496c3e21406af9f4ac9beac6a5p-2,
-    0x1.7b9b92p0
-  },
-  { // Entry 110
-    0x1.cd45a8d7e3403f5278d5e3d566349f75p-2,
-    0x1.91ac4ep0
-  },
-  { // Entry 111
-    0x1.02044831211ed0068efa4c2a8b9870bfp-1,
-    0x1.a7bd0ap0
-  },
-  { // Entry 112
-    0x1.1c01d5f6d3a50d31c45cbfddd0272765p-1,
-    0x1.bdcdc6p0
-  },
-  { // Entry 113
-    0x1.34bde46fd84fca43ba3f4799acab10ffp-1,
-    0x1.d3de82p0
-  },
-  { // Entry 114
-    0x1.4c5618136a3221d84476b78353fabc80p-1,
-    0x1.e9ef3ep0
-  },
-  { // Entry 115
-    0x1.62e429efa395f35781c7670787e58c2bp-1,
-    0x1.fffffap0
-  },
-  { // Entry 116
-    -0x1.62e43115a8fb47c3a7c2e76a80cca9a5p-2,
-    0x1.6a09e6p-1
-  },
-  { // Entry 117
-    -0x1.24cfd09514bae9e21501d1a28c37d51ep-2,
-    0x1.80aa84p-1
-  },
-  { // Entry 118
-    -0x1.d4902a7f6a1d18da241dffb42a0818edp-3,
-    0x1.974b22p-1
-  },
-  { // Entry 119
-    -0x1.65d5607cc85baba26e2faf78865dc991p-3,
-    0x1.adebc0p-1
-  },
-  { // Entry 120
-    -0x1.f991d8f6e2f011943d5a6a60cd646002p-4,
-    0x1.c48c5ep-1
-  },
-  { // Entry 121
-    -0x1.31b9a995502d59241500cd1ce955f5c4p-4,
-    0x1.db2cfcp-1
-  },
-  { // Entry 122
-    -0x1.ccb7994bda818c26cc15fca660f364ecp-6,
-    0x1.f1cd9ap-1
-  },
-  { // Entry 123
-    0x1.0b9492bd99570e8a2a2f5a7f59644b42p-6,
-    0x1.04371cp0
-  },
-  { // Entry 124
-    0x1.e2705e9cc554d8b565433c8fad2db164p-5,
-    0x1.0f876cp0
-  },
-  { // Entry 125
-    0x1.986d321688b074a21eb26b41679ee309p-4,
-    0x1.1ad7bcp0
-  },
-  { // Entry 126
-    0x1.1c89919fb208ebda275d6fee75577a43p-3,
-    0x1.26280cp0
-  },
-  { // Entry 127
-    0x1.69d463db5d0d8cbc5da8bd2c1f5d2953p-3,
-    0x1.31785cp0
-  },
-  { // Entry 128
-    0x1.b44f87381611ab2806d6f00d213de2cfp-3,
-    0x1.3cc8acp0
-  },
-  { // Entry 129
-    0x1.fc2d80e5311b3f7e05f26b963044ea08p-3,
-    0x1.4818fcp0
-  },
-  { // Entry 130
-    0x1.20cdd9262c59a7726689f4fe5ffa58fep-2,
-    0x1.53694cp0
-  },
-  { // Entry 131
-    0x1.426182db20e23d0b473ae1c2d1975c3fp-2,
-    0x1.5eb99cp0
-  },
-  { // Entry 132
-    0x1.62e42ec99e429eeb7fcbe6f58eff3117p-2,
-    0x1.6a09e6p0
-  },
-  { // Entry 133
-    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
-    0x1.80p-1
-  },
-  { // Entry 134
-    -0x1.89fa484d355b5e186f5662b3da3e745bp-3,
-    0x1.a66666p-1
-  },
-  { // Entry 135
-    -0x1.af8e892d15de87e2e9e59dff5c0633bep-4,
-    0x1.ccccccp-1
-  },
-  { // Entry 136
-    -0x1.9ecebcb597ea1bb43d896f584759744ap-6,
-    0x1.f33332p-1
-  },
-  { // Entry 137
-    0x1.8fb04b8da65ceb85a2edb7d0ff0ad2d3p-5,
-    0x1.0cccccp0
-  },
-  { // Entry 138
-    0x1.e27076e2af2e5e9ea87ffe1fe9e155dbp-4,
-    0x1.20p0
-  },
-  { // Entry 139
-    0x1.756506739ebaf1cd58855d231e777a59p-3,
-    0x1.333334p0
-  },
-  { // Entry 140
-    0x1.f18dce2898f5ba919d825d9696c6c774p-3,
-    0x1.466668p0
-  },
-  { // Entry 141
-    0x1.334ea564424013b7739afbc9478741b5p-2,
-    0x1.59999cp0
-  },
-  { // Entry 142
-    0x1.6aac0d0fe3871ab60d70d41e954c2bd3p-2,
-    0x1.6cccd0p0
-  },
-  { // Entry 143
-    0x1.9f323ecbf984bf2b68d766f405221819p-2,
-    0x1.80p0
-  },
-  { // Entry 144
-    0.0,
-    0x1.p0
-  },
-  { // Entry 145
-    0x1.8663fd6538c872349ec1a85e05ec5fb5p-4,
-    0x1.19999ap0
-  },
-  { // Entry 146
-    0x1.756506739ebaf1cd58855d231e777a59p-3,
-    0x1.333334p0
-  },
-  { // Entry 147
-    0x1.0ca93b6f56afbacd07973b0a3c67fc47p-2,
-    0x1.4ccccep0
-  },
-  { // Entry 148
-    0x1.588c32237c6aefe96e1db27c46710d39p-2,
-    0x1.666668p0
-  },
-  { // Entry 149
-    0x1.9f3244214ed68647ddc799823e05a9b1p-2,
-    0x1.800002p0
-  },
-  { // Entry 150
-    0x1.e148a7a27268594dfd4dd6c301fece79p-2,
-    0x1.99999cp0
-  },
-  { // Entry 151
-    0x1.0fae84dc95e1a7d9897472d55a7563e8p-1,
-    0x1.b33336p0
-  },
-  { // Entry 152
-    0x1.2cf2633bc7fc9d9d9929319aa918822cp-1,
-    0x1.ccccd0p0
-  },
-  { // Entry 153
-    0x1.48a1165df274ab7963f8550dcbfb6aebp-1,
-    0x1.e6666ap0
-  },
-  { // Entry 154
-    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.p1
-  },
-  { // Entry 155
-    0x1.1542457337d42e1c6b73c89d862ba171p6,
-    0x1.p100
-  },
-  { // Entry 156
-    0x1.15a3de7291226038f89b79079dad1c89p6,
-    0x1.19999ap100
-  },
-  { // Entry 157
-    0x1.15fcf7f671a38b9552200b4c17badd2fp6,
-    0x1.333334p100
-  },
-  { // Entry 158
-    0x1.164eeeaea72addd7387b5fd89068096ep6,
-    0x1.4ccccep100
-  },
-  { // Entry 159
-    0x1.169ad1a55b50990c54e1e6500272127fp6,
-    0x1.666668p100
-  },
-  { // Entry 160
-    0x1.16e177b7592304a2b35190370869a71bp6,
-    0x1.800002p100
-  },
-  { // Entry 161
-    0x1.17238e1ada469675b9711674492da040p6,
-    0x1.99999cp100
-  },
-  { // Entry 162
-    0x1.1761a27cf0fff16c1e86b18330e08c39p6,
-    0x1.b33336p100
-  },
-  { // Entry 163
-    0x1.179c2a39af642757a6a61b00bb7dd276p6,
-    0x1.ccccd0p100
-  },
-  { // Entry 164
-    0x1.17d3879ff3b917735e3bb947a1c39847p6,
-    0x1.e6666ap100
-  },
-  { // Entry 165
-    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
-    0x1.p101
-  },
-  { // Entry 166
-    -0x1.0000080000555559555588888b333357p-20,
-    0x1.ffffe0p-1
-  },
-  { // Entry 167
-    -0x1.0000040000155555d5555888889ddddep-21,
-    0x1.fffff0p-1
-  },
-  { // Entry 168
-    0.0,
-    0x1.p0
-  },
-  { // Entry 169
-    0x1.fffff800002aaaa9aaaab11110e66667p-22,
-    0x1.000008p0
-  },
-  { // Entry 170
-    0x1.fffff00000aaaaa2aaab11110bbbbc04p-21,
-    0x1.000010p0
-  },
-  { // Entry 171
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 172
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 173
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 174
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 175
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 176
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 177
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 178
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 179
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 180
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 181
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 182
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 183
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 184
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 185
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 186
-    0x1.62e42feba39ef15793c611dab1909808p6,
-    0x1.fffffep127
-  },
-  { // Entry 187
-    -0x1.9d1d9fccf4770743f2061e1de931a650p6,
-    0x1.p-149
-  },
-  { // Entry 188
-    -0x1.62e436bdd09a876194940b96cb28fd7fp-2,
-    0x1.6a09e4p-1
-  },
-  { // Entry 189
-    -0x1.62e43115a8fb47c3a7c2e76a80cca9a5p-2,
-    0x1.6a09e6p-1
-  },
-  { // Entry 190
-    -0x1.62e42b6d81640825bf89d8b8d9d0ff58p-2,
-    0x1.6a09e8p-1
-  },
-  { // Entry 191
-    0x1.62e4292176a35f4d92fac2c944a2dd3dp-2,
-    0x1.6a09e4p0
-  },
-  { // Entry 192
-    0x1.62e42ec99e429eeb7fcbe6f58eff3117p-2,
-    0x1.6a09e6p0
-  },
-  { // Entry 193
-    0x1.62e43471c5d9de896804f5a735fadb65p-2,
-    0x1.6a09e8p0
-  },
-  { // Entry 194
-    -0x1.62e431efa39ff357947211db3290986fp-1,
-    0x1.fffffep-2
-  },
-  { // Entry 195
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.p-1
-  },
-  { // Entry 196
-    -0x1.62e42befa3a2f3578e7211e2b2908b3cp-1,
-    0x1.000002p-1
-  },
-  { // Entry 197
-    -0x1.26962668a3120b11fac40bc7b22b5a8dp-2,
-    0x1.7ffffep-1
-  },
-  { // Entry 198
-    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
-    0x1.80p-1
-  },
-  { // Entry 199
-    -0x1.26961bbdf867606749c734ddd1c6310bp-2,
-    0x1.800002p-1
-  },
-  { // Entry 200
-    0x1.9f323976a42bdb9d2ccac2985da0802fp-2,
-    0x1.7ffffep0
-  },
-  { // Entry 201
-    0x1.9f323ecbf984bf2b68d766f405221819p-2,
-    0x1.80p0
-  },
-  { // Entry 202
-    0x1.9f3244214ed68647ddc799823e05a9b1p-2,
-    0x1.800002p0
-  },
-  { // Entry 203
-    0x1.54de6ee78989a9acfc875c1d45e16490p-9,
-    0x1.00aaa8p0
-  },
-  { // Entry 204
-    0x1.54e26c3eab6ea24115a4ecbc6c21c3dep-9,
-    0x1.00aaaap0
-  },
-  { // Entry 205
-    0x1.54e66995c55e3ad40cb2b01d77b8b63fp-9,
-    0x1.00aaacp0
-  },
-  { // Entry 206
-    0x1.62e42eefa39e7357937211da729097d5p0,
-    0x1.fffffep1
-  },
-  { // Entry 207
-    0x1.62e42fefa39ef35793c7673007e5ed5ep0,
-    0x1.p2
-  },
-  { // Entry 208
-    0x1.62e431efa39cf357967211d6b2909e6fp0,
-    0x1.000002p2
-  },
-  { // Entry 209
-    0x1.62e42defa39df357931cbc84dd3b424dp-1,
-    0x1.fffffep0
-  },
-  { // Entry 210
-    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.p1
-  },
-  { // Entry 211
-    0x1.62e433efa39af357991cbc7d5d3b4f80p-1,
-    0x1.000002p1
-  },
-  { // Entry 212
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 213
-    0.0,
-    0x1.p0
-  },
-  { // Entry 214
-    0x1.fffffe000002aaaaa6aaaab111110666p-24,
-    0x1.000002p0
-  },
-  { // Entry 215
-    -0x1.62e431efa39ff357947211db3290986fp-1,
-    0x1.fffffep-2
-  },
-  { // Entry 216
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
-    0x1.p-1
-  },
-  { // Entry 217
-    -0x1.62e42befa3a2f3578e7211e2b2908b3cp-1,
-    0x1.000002p-1
-  },
-  { // Entry 218
-    -0x1.62e430efa39f7357941cbc859d3b42e7p0,
-    0x1.fffffep-3
-  },
-  { // Entry 219
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
-    0x1.p-2
-  },
-  { // Entry 220
-    -0x1.62e42defa3a0f357911cbc895d3b3c4dp0,
-    0x1.000002p-2
-  },
-  { // Entry 221
-    -0x1.0a2b2473bab77681af00380ed0971ccbp1,
-    0x1.fffffep-4
-  },
-  { // Entry 222
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
-    0x1.p-3
-  },
-  { // Entry 223
-    -0x1.0a2b22f3bab83681ad803810b097197ep1,
-    0x1.000002p-3
-  },
-  { // Entry 224
-    -0x1.62e4306fa39f335793f211dad2909822p1,
-    0x1.fffffep-5
-  },
-  { // Entry 225
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
-    0x1.p-4
-  },
-  { // Entry 226
-    -0x1.62e42eefa39ff357927211dcb29094d5p1,
-    0x1.000002p-4
-  },
-  { // Entry 227
-    -0x1.bb9d3c6b8c86f02d78e3eba6d48a137ap1,
-    0x1.fffffep-6
-  },
-  { // Entry 228
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
-    0x1.p-5
-  },
-  { // Entry 229
-    -0x1.bb9d3aeb8c87b02d7763eba8b48a102dp1,
-    0x1.000002p-5
-  },
-  { // Entry 230
-    -0x1.0a2b2433bab75681aeeae2b96b41c769p2,
-    0x1.fffffep-7
-  },
-  { // Entry 231
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
-    0x1.p-6
-  },
-  { // Entry 232
-    -0x1.0a2b2373bab7b681ae2ae2ba5b41c5c2p2,
-    0x1.000002p-6
-  },
-  { // Entry 233
-    -0x1.3687aa31af2b34eca163cf9f6c3e8514p2,
-    0x1.fffffep-8
-  },
-  { // Entry 234
-    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
-    0x1.p-7
-  },
-  { // Entry 235
-    -0x1.3687a971af2b94eca0a3cfa05c3e836ep2,
-    0x1.000002p-7
-  },
-  { // Entry 236
-    -0x1.62e4302fa39f135793dcbc856d3b42c0p2,
-    0x1.fffffep-9
-  },
-  { // Entry 237
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
-    0x1.p-8
-  },
-  { // Entry 238
-    -0x1.62e42f6fa39f7357931cbc865d3b411ap2,
-    0x1.000002p-8
-  },
-  { // Entry 239
-    -0x1.8f40b62d9812f1c28655a96b6e38006cp2,
-    0x1.fffffep-10
-  },
-  { // Entry 240
-    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
-    0x1.p-9
-  },
-  { // Entry 241
-    -0x1.8f40b56d981351c28595a96c5e37fec6p2,
-    0x1.000002p-9
-  },
-  { // Entry 242
-    -0x1.bb9d3c2b8c86d02d78ce96516f34be18p2,
-    0x1.fffffep-11
-  },
-  { // Entry 243
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
-    0x1.p-10
-  },
-  { // Entry 244
-    -0x1.bb9d3b6b8c87302d780e96525f34bc71p2,
-    0x1.000002p-10
-  },
-  { // Entry 245
-    -0x1.20596712b4f135b7281cae81b9157b8dp3,
-    0x1.fffffep-14
-  },
-  { // Entry 246
-    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
-    0x1.p-13
-  },
-  { // Entry 247
-    -0x1.205966b2b4f165b727bcae8231157abap3,
-    0x1.000002p-13
-  },
-  { // Entry 248
-    -0x1.20596712b4f135b7281cae81b9157b8dp3,
-    0x1.fffffep-14
-  },
-  { // Entry 249
-    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
-    0x1.p-13
-  },
-  { // Entry 250
-    -0x1.205966b2b4f165b727bcae8231157abap3,
-    0x1.000002p-13
-  },
-  { // Entry 251
-    -0x1.0a2b2473bab77681af00380ed0971ccbp1,
-    0x1.fffffep-4
-  },
-  { // Entry 252
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p1,
-    0x1.p-3
-  },
-  { // Entry 253
-    -0x1.0a2b22f3bab83681ad803810b097197ep1,
-    0x1.000002p-3
-  },
-  { // Entry 254
-    -0x1.1178f14710961bedaf9f799a53afc33dp-3,
-    0x1.bffffep-1
-  },
-  { // Entry 255
-    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
-    0x1.c0p-1
-  },
-  { // Entry 256
-    -0x1.1178defdec03d2c915604897971b7658p-3,
-    0x1.c00002p-1
-  },
-  { // Entry 257
-    -0x1.62e4306fa39f335793f211dad2909822p1,
-    0x1.fffffep-5
-  },
-  { // Entry 258
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep1,
-    0x1.p-4
-  },
-  { // Entry 259
-    -0x1.62e42eefa39ff357927211dcb29094d5p1,
-    0x1.000002p-4
-  },
-  { // Entry 260
-    -0x1.08599c6af4ba93c693b13122f6824a8bp-4,
-    0x1.dffffep-1
-  },
-  { // Entry 261
-    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
-    0x1.e0p-1
-  },
-  { // Entry 262
-    -0x1.08597a48d29871a4649d0a66ccbd5edbp-4,
-    0x1.e00002p-1
-  },
-  { // Entry 263
-    -0x1.bb9d3c6b8c86f02d78e3eba6d48a137ap1,
-    0x1.fffffep-6
-  },
-  { // Entry 264
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p1,
-    0x1.p-5
-  },
-  { // Entry 265
-    -0x1.bb9d3aeb8c87b02d7763eba8b48a102dp1,
-    0x1.000002p-5
-  },
-  { // Entry 266
-    -0x1.0415f9a6b665d7a7b9958d7d28f62a74p-5,
-    0x1.effffep-1
-  },
-  { // Entry 267
-    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
-    0x1.f0p-1
-  },
-  { // Entry 268
-    -0x1.0415b7963244cf65919a578b2daa29d5p-5,
-    0x1.f00002p-1
-  },
-  { // Entry 269
-    -0x1.0a2b2433bab75681aeeae2b96b41c769p2,
-    0x1.fffffep-7
-  },
-  { // Entry 270
-    -0x1.0a2b23f3bab73681aed58d6405ec7206p2,
-    0x1.p-6
-  },
-  { // Entry 271
-    -0x1.0a2b2373bab7b681ae2ae2ba5b41c5c2p2,
-    0x1.000002p-6
-  },
-  { // Entry 272
-    -0x1.0205a68d45e67ed01e10e322bd43a170p-6,
-    0x1.f7fffep-1
-  },
-  { // Entry 273
-    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
-    0x1.f8p-1
-  },
-  { // Entry 274
-    -0x1.02052485256476af6f4daabd139b5e57p-6,
-    0x1.f80002p-1
-  },
-  { // Entry 275
-    -0x1.3687aa31af2b34eca163cf9f6c3e8514p2,
-    0x1.fffffep-8
-  },
-  { // Entry 276
-    -0x1.3687a9f1af2b14eca14e7a4a06e92fb2p2,
-    0x1.p-7
-  },
-  { // Entry 277
-    -0x1.3687a971af2b94eca0a3cfa05c3e836ep2,
-    0x1.000002p-7
-  },
-  { // Entry 278
-    -0x1.0101d85a923025b54cbaae499d5e40bfp-7,
-    0x1.fbfffep-1
-  },
-  { // Entry 279
-    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
-    0x1.fcp-1
-  },
-  { // Entry 280
-    -0x1.0100d6568a200574745b39f0aae26685p-7,
-    0x1.fc0002p-1
-  },
-  { // Entry 281
-    -0x1.62e4302fa39f135793dcbc856d3b42c0p2,
-    0x1.fffffep-9
-  },
-  { // Entry 282
-    -0x1.62e42fefa39ef35793c7673007e5ed5ep2,
-    0x1.p-8
-  },
-  { // Entry 283
-    -0x1.62e42f6fa39f7357931cbc865d3b411ap2,
-    0x1.000002p-8
-  },
-  { // Entry 284
-    -0x1.008156968a355a68f2be9b035772c9c3p-8,
-    0x1.fdfffep-1
-  },
-  { // Entry 285
-    -0x1.0080559588b357e598e33d8d9db37a29p-8,
-    0x1.fep-1
-  },
-  { // Entry 286
-    -0x1.007f549488335866440de7a1f2084736p-8,
-    0x1.fe0002p-1
-  },
-  { // Entry 287
-    -0x1.8f40b62d9812f1c28655a96b6e38006cp2,
-    0x1.fffffep-10
-  },
-  { // Entry 288
-    -0x1.8f40b5ed9812d1c28640541608e2ab0ap2,
-    0x1.p-9
-  },
-  { // Entry 289
-    -0x1.8f40b56d981351c28595a96c5e37fec6p2,
-    0x1.000002p-9
-  },
-  { // Entry 290
-    -0x1.0042165dd9caff419b1eccdf720a36d2p-9,
-    0x1.fefffep-1
-  },
-  { // Entry 291
-    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
-    0x1.ffp-1
-  },
-  { // Entry 292
-    -0x1.003e145cd94abf2033bf71dc3028520cp-9,
-    0x1.ff0002p-1
-  },
-  { // Entry 293
-    -0x1.bb9d3c2b8c86d02d78ce96516f34be18p2,
-    0x1.fffffep-11
-  },
-  { // Entry 294
-    -0x1.bb9d3beb8c86b02d78b940fc09df68b6p2,
-    0x1.p-10
-  },
-  { // Entry 295
-    -0x1.bb9d3b6b8c87302d780e96525f34bc71p2,
-    0x1.000002p-10
-  },
-  { // Entry 296
-    -0x1.0024065697999797f377cb852750240bp-10,
-    0x1.ff7ffep-1
-  },
-  { // Entry 297
-    -0x1.00200556558893357cd7e1f486bd0705p-10,
-    0x1.ff80p-1
-  },
-  { // Entry 298
-    -0x1.001c045617798f93464c0067a7eaae4fp-10,
-    0x1.ff8002p-1
-  },
-  { // Entry 299
-    -0x1.20596712b4f135b7281cae81b9157b8dp3,
-    0x1.fffffep-14
-  },
-  { // Entry 300
-    -0x1.205966f2b4f125b7281203d7066ad0dcp3,
-    0x1.p-13
-  },
-  { // Entry 301
-    -0x1.205966b2b4f165b727bcae8231157abap3,
-    0x1.000002p-13
-  },
-  { // Entry 302
-    -0x1.002401156dd698a14a193857b6b2e2bdp-13,
-    0x1.ffeffep-1
-  },
-  { // Entry 303
-    -0x1.0004001555d558889dde702b028c9996p-13,
-    0x1.fff0p-1
-  },
-  { // Entry 304
-    -0x1.ffc7fe2abbac310fe54784015d23a61dp-14,
-    0x1.fff002p-1
-  },
-  { // Entry 305
-    HUGE_VALF,
-    HUGE_VALF
-  },
-  { // Entry 306
-    0x1.62e42feba39ef15793c611dab1909808p6,
-    0x1.fffffep127
-  },
-  { // Entry 307
-    0x1.62e42fe7a39eeb5793bcbc854d3b429ap6,
-    0x1.fffffcp127
-  },
-  { // Entry 308
-    0x1.250d0505fece83f5f3328cc322f65153p0,
-    0x1.921fb6p1
-  },
-  { // Entry 309
-    0x1.ce6bb438b3fc2928a53b64ac7c0d6a91p-2,
-    0x1.921fb6p0
-  },
-  { // Entry 310
-    0x1.fffffe000002aaaaa6aaaab111110666p-24,
-    0x1.000002p0
-  },
-  { // Entry 311
-    0.0,
-    0x1.p0
-  },
-  { // Entry 312
-    -0x1.000000800000555555955555888888b3p-24,
-    0x1.fffffep-1
-  },
-  { // Entry 313
-    -0x1.eeb9574d26837b0d04a6d367277ce056p-3,
-    0x1.921fb6p-1
-  },
-  { // Entry 314
-    -0x1.5d589f27e5107f8a356d9ee8ad1baae4p6,
-    0x1.000002p-126
-  },
-  { // Entry 315
-    -0x1.5d589f2fe510778a3578499347c655a9p6,
-    0x1.p-126
-  },
-  { // Entry 316
-    -0x1.5d589f37e5107f8a3582f43e0271006dp6,
-    0x1.fffffcp-127
-  },
-  { // Entry 317
-    -0x1.5d589f3fe510978a35cd9ee99d1bae31p6,
-    0x1.fffff8p-127
-  },
-  { // Entry 318
-    -0x1.9a57d76d152fc95d42de8f4f8921da75p6,
-    0x1.p-148
-  },
-  { // Entry 319
-    -0x1.9d1d9fccf4770743f2061e1de931a650p6,
-    0x1.p-149
-  },
-  { // Entry 320
-    -HUGE_VALF,
-    0.0f
-  },
-  { // Entry 321
-    -HUGE_VALF,
-    -0.0f
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_logf, logf_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_logf_intel_data)/sizeof(logf_intel_data_t); i++) {
-    EXPECT_FLOAT_EQ(g_logf_intel_data[i].expected, logf(g_logf_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_pow_test.cpp b/tests/math_pow_test.cpp
deleted file mode 100644
index c185424..0000000
--- a/tests/math_pow_test.cpp
+++ /dev/null
@@ -1,3300 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  double expected;
-  double x_call_data;
-  double y_call_data;
-} pow_intel_data_t;
-
-static pow_intel_data_t g_pow_intel_data[] = {
-  { // Entry 0
-    0x1.p0,
-    -0x1.0p-10, 0.0
-  },
-  { // Entry 1
-    0x1.p0,
-    -0x1.0p-20, 0.0
-  },
-  { // Entry 2
-    -HUGE_VAL,
-    -HUGE_VAL, 0x1.0000000000001p52
-  },
-  { // Entry 3
-    -0x1.ffffffffffffe0000000000001ffffffp20,
-    -0x1.0000000000001p-21, -0x1.0p0
-  },
-  { // Entry 4
-    0x1.p0,
-    -0x1.0000000000001p-41, 0.0
-  },
-  { // Entry 5
-    0x1.000000000000a000000000002dp-410,
-    -0x1.0000000000001p-41, 0x1.4p3
-  },
-  { // Entry 6
-    0x1.9241b707f6dadff955fd89193b67d331p-76,
-    -0x1.0000000000009p0, -0x1.7364d9364d93ep54
-  },
-  { // Entry 7
-    0x1.ffffe00000fffffabaaabeffffc3b111p-1,
-    -0x1.0000000000010p0, -0x1.0p28
-  },
-  { // Entry 8
-    -0x1.fffffeffac00403b0c6d424acd900953p964,
-    -0x1.00000000220p-1, -0x1.e28p9
-  },
-  { // Entry 9
-    0x1.ffe88f898fad6805ef5425ca3572f1e8p705,
-    -0x1.0000044p-1, -0x1.610p9
-  },
-  { // Entry 10
-    -0x1.fff0007ffc001fff0007ffc001fff0p40,
-    -0x1.00080p-41, -0x1.0p0
-  },
-  { // Entry 11
-    0x1.ff601b7c9059582e9c5cd4bde021f462p409,
-    -0x1.00080p-41, -0x1.4p3
-  },
-  { // Entry 12
-    -0x1.002802801400500080p200,
-    -0x1.00080p40, 0x1.4p2
-  },
-  { // Entry 13
-    0x1.ffa00a7f14c337fcecffc107244f96dfp245,
-    -0x1.0008000000f14p-41, -0x1.8p2
-  },
-  { // Entry 14
-    0x1.ff8011fd3be577fec85ffc5d60b0334ep-321,
-    -0x1.000800000e484p40, -0x1.0p3
-  },
-  { // Entry 15
-    0x1.6b3c46415430c004e9fd0b35f8ec6fd5p-1,
-    -0x1.046e8bfffffc2p0, -0x1.4p4
-  },
-  { // Entry 16
-    0.0,
-    -0x1.518p-1065, 0x1.0p1023
-  },
-  { // Entry 17
-    0x1.20000060000008p-81,
-    -0x1.8000004p-41, 0x1.0p1
-  },
-  { // Entry 18
-    0x1.c3d6a2157b623407e8c821289ebac2b6p-1,
-    -0x1.fffffbfffffffp-1, 0x1.0p20
-  },
-  { // Entry 19
-    -0x1.00000060000030000011000006300002p0,
-    -0x1.ffffffbffffffp-1, -0x1.8p1
-  },
-  { // Entry 20
-    -0x1.000000e00000a8000062000033a00018p35,
-    -0x1.ffffffbffffffp-6, -0x1.cp2
-  },
-  { // Entry 21
-    -0x1.000000e00000a8000062000033a00018p280,
-    -0x1.ffffffbffffffp-41, -0x1.cp2
-  },
-  { // Entry 22
-    -0x1.000000e00000a8000062000033a00018p-287,
-    -0x1.ffffffbffffffp40, -0x1.cp2
-  },
-  { // Entry 23
-    -0x1.fffffe40000038000030fffff49ffffdp286,
-    -0x1.ffffffbffffffp40, 0x1.cp2
-  },
-  { // Entry 24
-    0x1.ffffff80000008p-21,
-    -0x1.ffffffcp-11, 0x1.0p1
-  },
-  { // Entry 25
-    -0x1.000000000100080000010010004001p40,
-    -0x1.fffffffffdfffp-41, -0x1.0p0
-  },
-  { // Entry 26
-    -0x1.00000000000c98000000009e9a40p40,
-    -0x1.ffffffffffe6dp-41, -0x1.0p0
-  },
-  { // Entry 27
-    -0x1.fffffffdffffe00100000fffaaaaaaaap-1,
-    -0x1.ffffffffffffep-1, 0x1.00001p20
-  },
-  { // Entry 28
-    -0x1.0000000000000800000000000040p0,
-    -0x1.fffffffffffffp-1, -0x1.0p0
-  },
-  { // Entry 29
-    -HUGE_VAL,
-    -0x1.fffffffffffffp1023, 0x1.0000000000001p52
-  },
-  { // Entry 30
-    0x1.fda6a1be3e9d47fc84293281e77aa21ap-1,
-    0x1.0p-2, 0x1.b2cb2cb2cb2d0p-9
-  },
-  { // Entry 31
-    0.0,
-    0x1.0p-512, 0x1.0ccp1
-  },
-  { // Entry 32
-    0x1.f9b3a3820980938687e8bf7ff06bc42cp-914,
-    0x1.0p-1035, 0x1.c3a83a83a83a5p-1
-  },
-  { // Entry 33
-    0.0,
-    0x1.0p-1074, 0x1.0p1023
-  },
-  { // Entry 34
-    0.0,
-    0x1.0p-1074, 0x1.0000000000001p0
-  },
-  { // Entry 35
-    0x1.51cb453b954f5305fd8d61e650e8d0d5p-967,
-    0x1.0p-1074, 0x1.cccccccccccccp-1
-  },
-  { // Entry 36
-    0x1.fffffffd3a37a022a4bdf9482171d56fp1023,
-    0x1.0p1, 0x1.ffffffffff0p9
-  },
-  { // Entry 37
-    0x1.00000000000007ffffffffffffe0p-5,
-    0x1.0000000000001p-10, 0x1.0p-1
-  },
-  { // Entry 38
-    0x1.ae89f995ad5887ff46dd2362be6a8f23p-204,
-    0x1.0000000000001p-271, 0x1.7fffffffffffdp-1
-  },
-  { // Entry 39
-    0x1.2611186bae6a380002e6202c31b04d13p-38,
-    0x1.0000000000001p-462, 0x1.4f2094f2094f0p-4
-  },
-  { // Entry 40
-    0x1.6a09e667f3ecd2adb67223f9564b3422p-392,
-    0x1.0000000000001p-522, 0x1.7fffffffffffdp-1
-  },
-  { // Entry 41
-    0x1.9fdf8bcce543547d611ef13904022b8bp-493,
-    0x1.0000000000001p-547, 0x1.cccccccccccccp-1
-  },
-  { // Entry 42
-    0x1.91b501c2db5c8ffe81cc3effffe282e8p-290,
-    0x1.0000000000001p-643, 0x1.ccccccccccccap-2
-  },
-  { // Entry 43
-    0x1.a830fd0547202479c70c80b72a325d2fp-408,
-    0x1.0000000000001p-731, 0x1.1d41d41d41d44p-1
-  },
-  { // Entry 44
-    0x1.a9335df38e6e64cbdaa57750a0cfd5eep-291,
-    0x1.0000000000001p-733, 0x1.95810624dd2f7p-2
-  },
-  { // Entry 45
-    0x1.6a09e667f3d192a27b73577484a86dcdp-761,
-    0x1.0000000000001p-845, 0x1.cccccccccccccp-1
-  },
-  { // Entry 46
-    0x1.bdb8cdadbe60a56dd61c4e04350cfa9ap-569,
-    0x1.0000000000001p-947, 0x1.3333333333331p-1
-  },
-  { // Entry 47
-    0x1.6a09e66d72c9c801840532577e605e07p904,
-    0x1.0000000000001p-1005, -0x1.cccccccccfa81p-1
-  },
-  { // Entry 48
-    0x1.fffffffffffaea6e0622a45b3589d771p1023,
-    0x1.0000000000001p1, 0x1.ffffffffffffdp9
-  },
-  { // Entry 49
-    0x1.e6102ba465044814b28a0a49216ef667p-349,
-    0x1.0000000000001p663, -0x1.0cccccccccccfp-1
-  },
-  { // Entry 50
-    0x1.ffffffffffd75b6d85de8fb3a7e2e826p-703,
-    0x1.0000000000001p936, -0x1.8000000000001p-1
-  },
-  { // Entry 51
-    0x1.ffffffffffffe0000000000001ffffffp-1024,
-    0x1.0000000000001p1023, -0x1.0p0
-  },
-  { // Entry 52
-    0x1.fffffffffffaea6e0622a4573589d771p1023,
-    0x1.0000000000002p2, 0x1.ffffffffffffdp8
-  },
-  { // Entry 53
-    0x1.000000000000080000000000029fffffp0,
-    0x1.0000000000004p0, 0x1.0000000000007p-3
-  },
-  { // Entry 54
-    0x1.00000000000007ffffffffff3920p0,
-    0x1.0000000000004p0, 0x1.ffffffffffce8p-4
-  },
-  { // Entry 55
-    0x1.fffffffffffaea6e0622a44f3589d771p1023,
-    0x1.0000000000004p4, 0x1.ffffffffffffdp7
-  },
-  { // Entry 56
-    0x1.fb9540d99258a80f86b71925aaf4421ep80,
-    0x1.0000000000007p1023, 0x1.4444444444430p-4
-  },
-  { // Entry 57
-    0x1.df905ef8e2507fd852712ed6cea98963p833,
-    0x1.0000000000011p1, 0x1.a0f3ea0697a0bp9
-  },
-  { // Entry 58
-    0x1.00000000000097ffffffffffd2e0p3,
-    0x1.0000000000013p6, 0x1.0p-1
-  },
-  { // Entry 59
-    0x1.000000000000d7ffffffffff77e0p0,
-    0x1.0000000000021p0, 0x1.a2e8ba2e8ba2ep-2
-  },
-  { // Entry 60
-    0x1.9476504b9baf343e3f75a2bd2e4caddbp738,
-    0x1.0000000000080p0, 0x1.0p54
-  },
-  { // Entry 61
-    0x1.fffff4e95e1f3fdcdd5e3d928f3a47f5p1023,
-    0x1.00000000000ffp1, 0x1.fffffffc0p9
-  },
-  { // Entry 62
-    0x1.ffffffff8e4de8083ac63f95bcb525fcp1023,
-    0x1.00000000000ffp2, 0x1.ffffffffffcp8
-  },
-  { // Entry 63
-    0x1.9476504b433552adbf253ad5a9e61e68p738,
-    0x1.00000000004p0, 0x1.0p51
-  },
-  { // Entry 64
-    0x1.6247eb03578637ff2cb93c93fe2f2473p-129,
-    0x1.00000000007p1, -0x1.011p7
-  },
-  { // Entry 65
-    0x1.87cea2e506d2ea9b21823d7557663fbap427,
-    0x1.00000000020p1023, 0x1.ac083126e978cp-2
-  },
-  { // Entry 66
-    0x1.ffffff2b0338080b257df31bb02ff70ap767,
-    0x1.000000000ffffp-1, -0x1.7fffffffd5ce2p9
-  },
-  { // Entry 67
-    0x1.ffd931035b394087164501473df23095p1023,
-    0x1.000000001p1, 0x1.fffff1fffffffp9
-  },
-  { // Entry 68
-    0x1.912b6dd6652df7fa0fbaffbc7b32d62ap953,
-    0x1.000000001b1efp-1, -0x1.dcd2f3ea06995p9
-  },
-  { // Entry 69
-    0x1.fffffff800000020c0003f7b7ffe8216p-1,
-    0x1.000000040p0, -0x1.ffffffffcffffp-1
-  },
-  { // Entry 70
-    0x1.ffffffc0000027fffff70000039ffffep-1024,
-    0x1.0000001ffffffp1023, -0x1.0p0
-  },
-  { // Entry 71
-    0x1.705df34f84e31387148153c7cf783a53p-1,
-    0x1.0000004p1, -0x1.e66666666666bp-2
-  },
-  { // Entry 72
-    0x1.1a16744c2ec0d8042410bf3e3a9014acp1,
-    0x1.0000004p2, 0x1.23d70a3d70a3bp-1
-  },
-  { // Entry 73
-    0x1.fff8001002b417ef588e21c5092e20c7p1023,
-    0x1.0000010p-1, -0x1.ffffffffffff9p9
-  },
-  { // Entry 74
-    0x1.a12f806c39105800d5ac38f6cb88d374p-2,
-    0x1.000001cp3, -0x1.ba2e8ba2e8ba2p-2
-  },
-  { // Entry 75
-    0x1.d72f7f354d86d0206ad7c9be9b478c7cp-885,
-    0x1.0000044p-1, 0x1.ba0f61c9107c9p9
-  },
-  { // Entry 76
-    0x1.915d1955b15fc08191e000bc8a9c8262p738,
-    0x1.00020p0, 0x1.0000040p24
-  },
-  { // Entry 77
-    0x1.ffc0043cbc5db7fed905ea267724cd86p47,
-    0x1.000200000c0e4p-3, -0x1.fffffffff3fffp3
-  },
-  { // Entry 78
-    0x1.03861c0f25f0b7fdd7db988fc50e8ac5p896,
-    0x1.00070p7, 0x1.00000000880p7
-  },
-  { // Entry 79
-    0x1.735f4cae6fd5e7ec9ec93923f339e951p-242,
-    0x1.0007fdep0, -0x1.4f1b77c278dc0p20
-  },
-  { // Entry 80
-    0x1.b6bdcdafd5582823b4d361cb7bf02f0bp0,
-    0x1.0007ffffff18cp-3, -0x1.094f2094f2094p-2
-  },
-  { // Entry 81
-    0x1.ee9de3815589f8020429c850502a73cep0,
-    0x1.00080p1, 0x1.e666666666666p-1
-  },
-  { // Entry 82
-    0x1.fc4e957ad3cff80df14d5383bd09a83ap1023,
-    0x1.001febebccd42p0, 0x1.63d8aa986a9eap20
-  },
-  { // Entry 83
-    0x1.fbddf46d6b62882b4c4e659bf0212df4p1023,
-    0x1.001fef1cc4193p0, 0x1.63b500c83689dp20
-  },
-  { // Entry 84
-    0x1.fba7f9318c5dc81b1e178865147202f3p1023,
-    0x1.001ff069d2a6bp0, 0x1.63a676c8493e8p20
-  },
-  { // Entry 85
-    0x1.f61661b7000d32d1f698e0fa2f889d35p69,
-    0x1.00804025213dep-7, -0x1.4p3
-  },
-  { // Entry 86
-    0x1.e109bdcca01fb7ffbbe4f50c82d0ec62p15,
-    0x1.010p-1, -0x1.ffffffff9ffffp3
-  },
-  { // Entry 87
-    0x1.1e49c51473ff37dc1ad27264312c37b5p-1011,
-    0x1.021eeaa6d270dp1, -0x1.f37971758e257p9
-  },
-  { // Entry 88
-    0x1.eb41321e136b37fffbb99027ffc8514bp-21,
-    0x1.02f178bc5e2c1p3, -0x1.a99999999999ap2
-  },
-  { // Entry 89
-    0x1.080ffffff79cb800d4fa4351d8e63171p-2,
-    0x1.040p-1, 0x1.00000000060p1
-  },
-  { // Entry 90
-    0x1.cf2b19acfd538820cd62b9762fbd07d8p-1018,
-    0x1.0493cda7be452p1, -0x1.efe4b242071abp9
-  },
-  { // Entry 91
-    0x1.6692c05b09baba2ea48d785ad4a4575dp135,
-    0x1.05ebf8248a734p99, 0x1.5e3b32a2a9fb0p0
-  },
-  { // Entry 92
-    0x1.810f2f53980577f6663abfa1f774291bp70,
-    0x1.0aaaaaaaaaaabp7, 0x1.4p3
-  },
-  { // Entry 93
-    0x1.fffee335368ea0008aa6b3b006354625p-1,
-    0x1.0e4f938c0e0bbp-482, 0x1.b4838aa70d025p-26
-  },
-  { // Entry 94
-    0x1.cfc470cc939227fa970b58b91572f724p-40,
-    0x1.13bd11bcfaa50p-5, 0x1.0p3
-  },
-  { // Entry 95
-    0x1.ec33ea55afd33ad219aa2aec083397dfp-1,
-    0x1.1501f44659e54p0, -0x1.0p-1
-  },
-  { // Entry 96
-    0x1.f648a0ead82f6001daf0d46abd018b77p-1,
-    0x1.1555555555555p-1, 0x1.0000000000007p-5
-  },
-  { // Entry 97
-    0x1.fe7eb68734b5e825e94d6de454cde18ep6,
-    0x1.1745d1745da71p-1, -0x1.0000000000007p3
-  },
-  { // Entry 98
-    0x1.a5a00c77c65bf5b0592a61407b2bc79fp-39,
-    0x1.1973b102ffddbp-6, 0x1.a1d84f6a3b934p2
-  },
-  { // Entry 99
-    0x1.e7e26745f50fe800d14145ff80133761p-2,
-    0x1.19eedeb102d84p2, -0x1.0p-1
-  },
-  { // Entry 100
-    0x1.a73f9acbf4125a89020110a29c39bbd2p103,
-    0x1.24765a0cdd454p7, 0x1.cd81edfd6d5b8p3
-  },
-  { // Entry 101
-    0x1.445ae390f4b5369c1426f9fe8b8a1751p615,
-    0x1.2492492492492p-5, -0x1.ffffffffffff8p6
-  },
-  { // Entry 102
-    0x1.e4e045205527f33f0c9768dcb7f13fabp-616,
-    0x1.2492492492492p-5, 0x1.ffc7fffffffffp6
-  },
-  { // Entry 103
-    0x1.2dd17dc7293dc8001e1986a14875be95p122,
-    0x1.3150a12f25c8dp-41, -0x1.8p1
-  },
-  { // Entry 104
-    0x1.52c58cdbac4cb7feb761e24bbde99b85p-534,
-    0x1.3333333333333p-2, 0x1.333333333ce97p8
-  },
-  { // Entry 105
-    0x1.bc7f056ec71ff0000104808c9990ae9fp-2,
-    0x1.33333346cf8bap-2, 0x1.62e42fefa39efp-1
-  },
-  { // Entry 106
-    0x1.a2c9dc7bb2e724ae746c7a0a076b129bp-291,
-    0x1.38abf82ee6986p-1, 0x1.980p8
-  },
-  { // Entry 107
-    0x1.b4f60e5795b5e8088c1865ab9e0e2694p0,
-    0x1.3ec984cb36701p0, 0x1.38018879b2ba8p1
-  },
-  { // Entry 108
-    0x1.8fcf301c2b46532fffb6a06cc43dec91p-667,
-    0x1.4p-1070, 0x1.3ef368eb04327p-1
-  },
-  { // Entry 109
-    0x1.00003f65cce8080000ffef6e02bfe509p0,
-    0x1.4p4, 0x1.529a1574c0c72p-20
-  },
-  { // Entry 110
-    0x1.90000000000028000000000001p4,
-    0x1.4000000000001p2, 0x1.0p1
-  },
-  { // Entry 111
-    0x1.43015cf74d6e07ff3666305ddffb5f4ep1,
-    0x1.43e743ba79c41p-1, -0x1.02c30b80eb514p1
-  },
-  { // Entry 112
-    0x1.a36e1c3c700b7a416fad641bfc031adbp-10,
-    0x1.47ae147ae147bp-5, 0x1.000001cp1
-  },
-  { // Entry 113
-    0x1.e5eccf1b3a05dcf7adca8d47f937dac7p-985,
-    0x1.4e91b0e91b0f1p-1, 0x1.90c9714fbcd9bp10
-  },
-  { // Entry 114
-    0x1.95335bfb76c6c7fe38526cde1c16edbdp-3,
-    0x1.5152b7c373368p-22, 0x1.bb38288a0a6p-4
-  },
-  { // Entry 115
-    0x1.ffffffffffffb01e21a404429e88cfd6p-1,
-    0x1.51758790b4181p-4, 0x1.0p-52
-  },
-  { // Entry 116
-    0x1.702ebfa1ff2013f2438cfd1935b73099p101,
-    0x1.5555555555555p-2, -0x1.00380p6
-  },
-  { // Entry 117
-    0x1.ba30a127f6dd5fd9c60a7f010d9ca125p202,
-    0x1.5555555555555p-2, -0x1.ffc7fffffffffp6
-  },
-  { // Entry 118
-    0x1.7ffffe8eddc49a0bb74c9b3942e5eb0bp1,
-    0x1.5555555555555p-2, -0x1.fffffe3ffffffp-1
-  },
-  { // Entry 119
-    0x1.8aa8808647d07b8819b686a448174076p586,
-    0x1.5555555555555p-5, -0x1.ffc7fffffffffp6
-  },
-  { // Entry 120
-    0x1.7a0a9108e1d1884c584a9ab81fc3f3d1p-294,
-    0x1.5555555555555p-5, 0x1.000000000e0p6
-  },
-  { // Entry 121
-    0x1.ad3d5033217a047c2602ed9b3c0a9644p-461,
-    0x1.58a26121f46f6p-2, 0x1.24f45f5fd4f79p8
-  },
-  { // Entry 122
-    0x1.1104fb8cf786c800ffc735889a531fa3p0,
-    0x1.6130984c02017p0, 0x1.999999999999ap-3
-  },
-  { // Entry 123
-    0x1.1e952b19cc33672f1cdd3ec50e0b3df2p-1023,
-    0x1.622e8ba2e8b9dp-1, 0x1.e0f83e0f83e0cp10
-  },
-  { // Entry 124
-    0x1.ceafd8c0385bd8abbd5744704bf13d4ep-1023,
-    0x1.671111111110cp-1, 0x1.f333333333324p10
-  },
-  { // Entry 125
-    0x1.6a09e667f3ba12f93247a76d74374418p-1,
-    0x1.6a09e667f3b9ep-1, 0x1.ffffffffffff3p-1
-  },
-  { // Entry 126
-    0x1.a887293fd6f30a11e9f3aab161b0d41fp0,
-    0x1.745d1745d1746p-2, -0x1.ffffffffffff8p-2
-  },
-  { // Entry 127
-    0x1.917499900fda07fed49796d8256cbeadp-40,
-    0x1.745d1745d1746p-3, 0x1.fffffe3ffffffp3
-  },
-  { // Entry 128
-    0x1.f46e967980e048c59fd0fbea1e57781cp967,
-    0x1.7a0p7, 0x1.fffffffefffffp6
-  },
-  { // Entry 129
-    0x1.99ce45b7e28fc7ff2d3cfb4617742d7ap-1,
-    0x1.7bf0b2348b0a8p2, -0x1.0p-3
-  },
-  { // Entry 130
-    0x1.fe9d3facecdb482e52a2026f0d0fcbabp0,
-    0x1.8p-1, -0x1.33333333333c0p1
-  },
-  { // Entry 131
-    0x1.96c3a864d92cc8242fa6a056bb08b3cfp-1,
-    0x1.85e85e85e85eap-1, 0x1.b073ecade3053p-1
-  },
-  { // Entry 132
-    0x1.f2d80cf8cc08b7ffffeea79f95c3a9bap-1,
-    0x1.87d872441eabbp9, -0x1.fffffffffffeep-9
-  },
-  { // Entry 133
-    0x1.ffffffffffff701f8afb9aa06bad33c1p-1,
-    0x1.89e36ef84f19dp1, -0x1.0000000000011p-50
-  },
-  { // Entry 134
-    0x1.0000000000000fffb750f07593ac0fefp0,
-    0x1.8d600b7696862p-96, -0x1.efae61f60f6e8p-59
-  },
-  { // Entry 135
-    0x1.e8f15565ed43a82e052236ac3f8a1f09p77,
-    0x1.98d2fe5c53f34p-39, -0x1.044a002d50ad8p1
-  },
-  { // Entry 136
-    0x1.0f4b118a10e49fffff00ae7357d87c94p-1,
-    0x1.999999a637f10p-2, 0x1.62e42fefa39efp-1
-  },
-  { // Entry 137
-    0x1.d2515c49d64157fef62efe37aa7d4e57p-44,
-    0x1.9c0133cdb0856p-5, 0x1.4p3
-  },
-  { // Entry 138
-    0x1.fb85e9f13f076753450e315695d239e9p-1023,
-    0x1.9f0ed4f930522p-1, 0x1.a5db8a1755e9cp11
-  },
-  { // Entry 139
-    0x1.01ab8f2671b6e8000096349ab8974ec5p0,
-    0x1.9fcfe7f3fa181p-1, -0x1.0p-5
-  },
-  { // Entry 140
-    0x1.69c73824fbabf8066c0f38487c600c72p9,
-    0x1.a043274b705cep3, 0x1.487e31cce6468p1
-  },
-  { // Entry 141
-    0x1.d20088f4eeb8a52ff029ff7e476e3b67p-582,
-    0x1.a5d1745d1746ep-1, 0x1.03e0f83e0f83cp11
-  },
-  { // Entry 142
-    0x1.c4beedf3151e2803e049bb5161d1272dp-272,
-    0x1.aa4ce8ed526b1p-1, 0x1.00880p10
-  },
-  { // Entry 143
-    0x1.7173062b74c217fea6b41e6a7fb48dd6p-711,
-    0x1.ab99d36091bc0p97, -0x1.d136ee8e59573p2
-  },
-  { // Entry 144
-    0x1.86c1b49a551097fe78399c00d0157d92p-2,
-    0x1.b782218c3fdb4p2, -0x1.0p-1
-  },
-  { // Entry 145
-    0x1.5b6a74499d637804b9aa28f9b766c3ccp-1,
-    0x1.bceb771a02bdep2, -0x1.999999999999ap-3
-  },
-  { // Entry 146
-    0x1.fdde6d7d992d4ffcd0a2446a9572b791p-1,
-    0x1.bfffffffffffdp-1, 0x1.ffc7fffffffffp-6
-  },
-  { // Entry 147
-    0x1.2492492492492f05397829cbc1ade69fp-1023,
-    0x1.bffffffffffffp1022, -0x1.0p0
-  },
-  { // Entry 148
-    0x1.cca34d8d609542352dfeaace528cb7a1p-818,
-    0x1.cp-1033, 0x1.9555555555552p-1
-  },
-  { // Entry 149
-    0x1.55cb805d3b6ab5c7675ce288db179f2bp-981,
-    0x1.cp-1033, 0x1.e666666666662p-1
-  },
-  { // Entry 150
-    0x1.97a3fcbacebe5d86d4f9675d3b8208f8p861,
-    0x1.cp-1059, -0x1.a0ea0ea0ea0eap-1
-  },
-  { // Entry 151
-    0x1.e926f3342729d100beab22b5029fa692p-956,
-    0x1.cp-1071, 0x1.c8ebd48ebd498p-1
-  },
-  { // Entry 152
-    0x1.f1668a877c3020c8505c45ae994bd358p-1002,
-    0x1.cp-1071, 0x1.deeabb7884549p-1
-  },
-  { // Entry 153
-    0x1.24924924924597829cbc14f0e93c746ep-1023,
-    0x1.c000000000057p1022, -0x1.0p0
-  },
-  { // Entry 154
-    0x1.c65c2cf3962da8013d40ee8c3b46bf1dp96,
-    0x1.c25c268491610p-44, -0x1.1efeff5a273ecp1
-  },
-  { // Entry 155
-    0x1.970c10d6b0a59a7fadf1e21e5ab677bep77,
-    0x1.c25c268497682p-44, -0x1.cc6b93abbb074p0
-  },
-  { // Entry 156
-    0x1.8583c2489a50380006c9c7205b5a54fep-1,
-    0x1.c2e170b85c994p-2, 0x1.5555555555555p-2
-  },
-  { // Entry 157
-    0x1.7e4573015bc63bd267679aab2cd89f66p-1,
-    0x1.cb3c9484e2ad0p0, -0x1.0p-1
-  },
-  { // Entry 158
-    0x1.7e3e719ce5b797fe885815bc3b2457f2p-1,
-    0x1.cb4d69eb4f4b9p0, -0x1.0p-1
-  },
-  { // Entry 159
-    0x1.fd4250a871c7fe00d5f51039c57dde6fp-624,
-    0x1.ccc4c0fd63cb6p-1, 0x1.0p12
-  },
-  { // Entry 160
-    0x1.5dc285d5b5f16800f6d7dc5ffdcf8d16p-1,
-    0x1.d1745d1749883p-1, 0x1.ffc7fffffffffp1
-  },
-  { // Entry 161
-    0x1.fea595d5c04f881438f7f5f10dbb0297p-2,
-    0x1.d555555555552p-1, 0x1.ffc7fffffffffp2
-  },
-  { // Entry 162
-    0x1.0000000000007ff04a26678b633a133ep0,
-    0x1.d872441ec3905p2, 0x1.0000000000011p-50
-  },
-  { // Entry 163
-    0x1.a63f4bd797f82805919b09d2b62da1e1p-1,
-    0x1.da60a1f2ec608p-2, 0x1.007cd9524d3f4p-2
-  },
-  { // Entry 164
-    0x1.a82e1469025c850c1448a19c2af67fe4p-500,
-    0x1.db6db6db6db72p-2, 0x1.c30c30c30c3p8
-  },
-  { // Entry 165
-    0x1.779a06bc3880e2c39dfc679749e470a5p-2,
-    0x1.dbb0e0aa2dd0ep2, -0x1.0p-1
-  },
-  { // Entry 166
-    0x1.f55b41ab4a675405b542703d9b037ae7p-408,
-    0x1.dda95a95a95b1p-1, 0x1.fc0p11
-  },
-  { // Entry 167
-    0x1.767fbad219a208018d6b81f7f3a2051bp2,
-    0x1.de7f154838537p-6, -0x1.0p-1
-  },
-  { // Entry 168
-    0x1.711d602ffb27f80209043d6d8f283cf8p-10,
-    0x1.e66666666666bp-1, 0x1.ffffffffffff8p6
-  },
-  { // Entry 169
-    0x1.ff5697396af157ffead748859ae3c9cbp1,
-    0x1.eeeeeeeeeeeeep2, 0x1.5aaaaaaaaaaabp-1
-  },
-  { // Entry 170
-    0x1.fe961a3ccd3c281ad0333d6806927b2bp-1,
-    0x1.f07c1f07c1f07p-14, 0x1.40a57eb50296dp-12
-  },
-  { // Entry 171
-    0x1.dac0c7cfbef05bd65a0e6ea2477f47fap778,
-    0x1.f1a17d079e24fp-3, -0x1.7d9c0b5f3a960p8
-  },
-  { // Entry 172
-    0x1.6ea69bd85b67cc85be83fa977dc123cap-1,
-    0x1.f333333333324p0, -0x1.0p-1
-  },
-  { // Entry 173
-    0x1.715bf92f43f00b403049e0c3e51153f8p-16,
-    0x1.f664984b8a152p-21, 0x1.8b852ce2219f0p-1
-  },
-  { // Entry 174
-    0x1.74368094efbfb380bb2df2e20e2a7a17p-85,
-    0x1.f6ded8bc3fa43p-7, 0x1.c083595c2b1bcp3
-  },
-  { // Entry 175
-    0x1.b0ef556006207718d3da08a90136726dp721,
-    0x1.f83e0f83e0b8ap-1, -0x1.00000002b658ep15
-  },
-  { // Entry 176
-    0x1.b0ef4cd94f8f8a8e603ff658f61fefb1p721,
-    0x1.f83e0f83e0ba5p-1, -0x1.00000000221efp15
-  },
-  { // Entry 177
-    0x1.b0ef4cd82f1387d76580a9eeaba656f6p721,
-    0x1.f83e0f83e0bcfp-1, -0x1.00000000221efp15
-  },
-  { // Entry 178
-    0x1.b0ef4cfb1cec37d64f37ea375597b740p721,
-    0x1.f83e0f83e0bcfp-1, -0x1.000000002cb09p15
-  },
-  { // Entry 179
-    0x1.b0ef555e269c6774a18b56af36947d82p721,
-    0x1.f83e0f83e0bcfp-1, -0x1.00000002b6573p15
-  },
-  { // Entry 180
-    0x1.b1c3042fe76ec74eb631776ea90c3cc6p721,
-    0x1.f83e0f83e0bcfp-1, -0x1.00004000221efp15
-  },
-  { // Entry 181
-    0x1.f2e92477d64c86fa54f6215ec8de5896p827,
-    0x1.f83e0f83e0bcfp-1, -0x1.25ab6f7bced93p15
-  },
-  { // Entry 182
-    0x1.b0ef4c04ab6f97a529350915504c0074p721,
-    0x1.f83e0f83e0bcfp-1, -0x1.ffffffffc43dep14
-  },
-  { // Entry 183
-    0x1.b0ef555b1dbe97d276d196306ba00051p721,
-    0x1.f83e0f83e0c26p-1, -0x1.00000002b620fp15
-  },
-  { // Entry 184
-    0x1.b0ef4cbe6dee68f697fc5885e43a3545p721,
-    0x1.f83e0f83e0f80p-1, -0x1.00000000220p15
-  },
-  { // Entry 185
-    0x1.661db242e13f78760f3385c48de6e14dp-716,
-    0x1.f84f1b77aa61ep-1, 0x1.0000044p15
-  },
-  { // Entry 186
-    0x1.6cc056593b1897fe7294556e85a7fccap-1,
-    0x1.f869b10e1646ep0, -0x1.0p-1
-  },
-  { // Entry 187
-    0x1.96ec199c8283280dcde1bf0a6bdf18ddp-33,
-    0x1.f86d6f63aa049p-1, 0x1.780p10
-  },
-  { // Entry 188
-    0x1.8d3575c5a08217e96d2baccd92102101p612,
-    0x1.f96860afcb452p-1, -0x1.0000043fffeedp15
-  },
-  { // Entry 189
-    0x1.8d3575c52ea31fea3d0799f8cf8523e3p612,
-    0x1.f96860afcb468p-1, -0x1.0000043ffff85p15
-  },
-  { // Entry 190
-    0x1.8d3575c472f0c863c06a976e22a25c6dp612,
-    0x1.f96860afcb489p-1, -0x1.0000044p15
-  },
-  { // Entry 191
-    0x1.8d3575c35aacefea95c885439d49bd99p612,
-    0x1.f96860afcb4bbp-1, -0x1.00000440000d4p15
-  },
-  { // Entry 192
-    0x1.8d3575c0cfc461bbe5ee3644cc6d77c2p612,
-    0x1.f96860afcb506p-1, -0x1.0000043fffc79p15
-  },
-  { // Entry 193
-    0x1.8d3575c1667df1163979824d863cc571p612,
-    0x1.f96860afcb506p-1, -0x1.0000044000022p15
-  },
-  { // Entry 194
-    0x1.8d3575b4fec588e56f1ba4bb2cde3d37p612,
-    0x1.f96860afcb714p-1, -0x1.0000044000353p15
-  },
-  { // Entry 195
-    0x1.8d3575ac3ff49ee0044041951d20706bp612,
-    0x1.f96860afcb858p-1, -0x1.0000043fffe6dp15
-  },
-  { // Entry 196
-    0x1.671986dbe53f56acd36ddaeec97277aap-46,
-    0x1.f985f7cbf0059p-7, 0x1.e3fa3018bde08p2
-  },
-  { // Entry 197
-    0x1.eec73eb3ed9247940e87750e7fc49479p1019,
-    0x1.fa81a5e7d412cp-1, -0x1.000007ffef0p16
-  },
-  { // Entry 198
-    0x1.6afc2b3669cafd8b04be07637cb8ce5ep-1,
-    0x1.fd557019f1cd0p0, -0x1.0p-1
-  },
-  { // Entry 199
-    0x1.c4f91d24e5c3e86f73ea68132bda4b8ap1002,
-    0x1.fdfffffffffffp-3, -0x1.f3fffffffffffp8
-  },
-  { // Entry 200
-    0x1.6a93b7f04694ad66b9aa64f76ba1fa38p-2,
-    0x1.fe7b0ee6afa3cp2, -0x1.0p-1
-  },
-  { // Entry 201
-    0x1.e1776bde16643808a38caf050f5cb630p-966,
-    0x1.ff3e9ae3033aep-1, 0x1.ba6c13bf005ecp18
-  },
-  { // Entry 202
-    0x1.d4ef5ecd754cd7f6e7016453994c21d5p-943,
-    0x1.ff433a02ec964p-1, 0x1.ba7a347cdffebp18
-  },
-  { // Entry 203
-    0x1.fe9bbdc161abd7fd9b32dbbc2d748438p-915,
-    0x1.ff48e2b4a5d7ep-1, 0x1.ba8b810f5507fp18
-  },
-  { // Entry 204
-    0x1.de52aa6a5ecaf8067797c9e2a281b23ep-905,
-    0x1.ff4ae0e440fb6p-1, 0x1.ba9198ab03cd4p18
-  },
-  { // Entry 205
-    0x1.76bc52dc7431f800000536a94bc3d305p133,
-    0x1.ff77fffffffffp15, 0x1.0b1fdcd7590abp3
-  },
-  { // Entry 206
-    0x1.5c1c2ded7213d991836fd2aa8dff4df7p-1023,
-    0x1.ff7ffffffffffp0, -0x1.00000000cp10
-  },
-  { // Entry 207
-    0x1.7a2b4d72ccfab7febb68ab3ac422cda7p-613,
-    0x1.ff85796e4f063p-1, 0x1.bb44b86ca0928p18
-  },
-  { // Entry 208
-    0x1.18a2faf8b5f6e8032837e7d87abcfa58p-410,
-    0x1.ffae13ebf1872p-1, 0x1.bbc0d7c3a882cp18
-  },
-  { // Entry 209
-    0x1.39e7d84a8958282053666d8c41938466p-739,
-    0x1.fff0000006071p-1, 0x1.0000140p22
-  },
-  { // Entry 210
-    0x1.e6ce6f49ea6028016050f5f38aefc204p795,
-    0x1.fff800000e483p1023, 0x1.8df6b0df6b0e0p-1
-  },
-  { // Entry 211
-    0x1.9aaa3cdd12dc05e246b234654b8dc76fp-442,
-    0x1.fffffe7fffffep-1023, 0x1.ba2e8ba2e8ba4p-2
-  },
-  { // Entry 212
-    0x1.f663278f73044832a2c1c5820c51cde7p-1,
-    0x1.ffffff3ffffffp-8, 0x1.000000ep-8
-  },
-  { // Entry 213
-    0x1.ffffffcd55554801c722bf7f371564d7p-1,
-    0x1.ffffffbffffffp-1, 0x1.9555555555552p-1
-  },
-  { // Entry 214
-    0x1.61c50ac8e0257000ca0d8b938dfe79abp567,
-    0x1.ffffffbffffffp1023, 0x1.1bbbbbbbbbbb9p-1
-  },
-  { // Entry 215
-    0x1.ffffff80000008p-199,
-    0x1.ffffffcp-100, 0x1.0p1
-  },
-  { // Entry 216
-    0x1.ffffff85291c6803b8547332d01f63b1p1023,
-    0x1.ffffffff8ffffp7, 0x1.ffffffffe7e49p6
-  },
-  { // Entry 217
-    0x1.ffffffc7fff45f951f3a78dcb59a7fa5p-897,
-    0x1.ffffffffeffffp-2, 0x1.bffffffffffffp9
-  },
-  { // Entry 218
-    0x1.7b29358d45f41a2f23ee22f80bb6fd08p508,
-    0x1.fffffffff3ffep-1023, -0x1.fd8fd8fd8fd8ep-2
-  },
-  { // Entry 219
-    0x1.e3437e70fec24558c1079cade561e276p-810,
-    0x1.fffffffffbffep-1023, 0x1.9555555555552p-1
-  },
-  { // Entry 220
-    0x1.fffffffffdfff7fffffeff97fe6ffeffp-1,
-    0x1.fffffffffbfffp-1, 0x1.0000000000003p-1
-  },
-  { // Entry 221
-    0x1.f6697c7afa0ac827d45b428b9c13ea46p77,
-    0x1.ffffffffff0d6p952, 0x1.4f2094f2094f0p-4
-  },
-  { // Entry 222
-    0x1.ffffffffffbc37ffffffff82436fffffp-1,
-    0x1.ffffffffffb4bp-1, 0x1.cccccccccccccp-1
-  },
-  { // Entry 223
-    0x1.ffffffffffcfe7ffffffffe232cfffffp-1,
-    0x1.ffffffffffcd6p-1, 0x1.e666666666666p-1
-  },
-  { // Entry 224
-    0x1.fffffffffff377ffffffffdbdfefffffp-1,
-    0x1.ffffffffffe6fp-1, 0x1.ffffffffffff8p-2
-  },
-  { // Entry 225
-    0x1.000000000003c7ffffffffeb431fffffp0,
-    0x1.fffffffffff0ep-1, -0x1.ffffffffffe9bp-2
-  },
-  { // Entry 226
-    0x1.000000000012d800000000ecb980p-3,
-    0x1.fffffffffff37p0, -0x1.8p1
-  },
-  { // Entry 227
-    0x1.ae89f995aaa93b8abea2c7b7cbcdc5e2p378,
-    0x1.fffffffffff9fp2, 0x1.f8fffffffffffp6
-  },
-  { // Entry 228
-    0x1.000000000193480000013fd6b24000aap-1015,
-    0x1.fffffffffffa7p6, -0x1.220p7
-  },
-  { // Entry 229
-    0x1.fffffffffffd07ffffffffffec4fffffp-1,
-    0x1.fffffffffffcep-1, 0x1.e666666666666p-1
-  },
-  { // Entry 230
-    0x1.ffffffffff1ce485fdf4a5fd3e671ea9p-1023,
-    0x1.fffffffffffefp-5, 0x1.fefffffffffffp7
-  },
-  { // Entry 231
-    0x1.00000000000047ffffffffffffffffffp0,
-    0x1.ffffffffffff7p-1, -0x1.ffffffffffff7p-1
-  },
-  { // Entry 232
-    0x1.0000000000002800000000000640p-1023,
-    0x1.ffffffffffffbp1022, -0x1.0p0
-  },
-  { // Entry 233
-    0x1.fffffffffffff8000006ffffffd0p-1,
-    0x1.ffffffffffffcp-1, 0x1.fffffe3ffffffp-4
-  },
-  { // Entry 234
-    0x1.fffffffffff17217f7d1cf8da0cc77cbp1023,
-    0x1.ffffffffffffdp0, 0x1.0000000000002p10
-  },
-  { // Entry 235
-    0x1.fffffffffff8b90bfbe8e7bf932596dfp1023,
-    0x1.ffffffffffffdp1, 0x1.0000000000001p9
-  },
-  { // Entry 236
-    0x1.00000000000007ffffffffffffdfffffp0,
-    0x1.ffffffffffffep-1, -0x1.ffffffffffffep-2
-  },
-  { // Entry 237
-    0x1.9fdf8bcce5346004c5f8fe1fe52b1115p56,
-    0x1.ffffffffffffep-64, -0x1.ccccccccccccdp-1
-  },
-  { // Entry 238
-    0x1.3354053613975801e1f18c607d9f7c96p-55,
-    0x1.ffffffffffffep-224, 0x1.f6b0df6b0df6ap-3
-  },
-  { // Entry 239
-    0x1.4337cd6b11bd77ff1dfb16e77447ef8ep157,
-    0x1.ffffffffffffep-642, -0x1.f6b0df6b0df6cp-3
-  },
-  { // Entry 240
-    0x1.9fdf8bcce571fb3c9561f337c9c427d4p278,
-    0x1.ffffffffffffep-930, -0x1.3333333333337p-2
-  },
-  { // Entry 241
-    0x1.ddb680117ab968057796e81914e78595p909,
-    0x1.ffffffffffffep-1012, -0x1.ccccccccccccdp-1
-  },
-  { // Entry 242
-    0x1.2387a6e756233000b49c3b0bf9c54982p1,
-    0x1.ffffffffffffep4, 0x1.e66666666665cp-3
-  },
-  { // Entry 243
-    0x1.a5adb8c8e32c1807a7da92b43f7cc90cp54,
-    0x1.ffffffffffffep75, 0x1.70a3d70a3d70fp-1
-  },
-  { // Entry 244
-    0x1.ec1deabbe3a9eae29bde56f88e8ef4eep627,
-    0x1.ffffffffffffep813, 0x1.8af8af8af8af8p-1
-  },
-  { // Entry 245
-    0x1.ffffffffff8f9dccd52d470a882669c3p647,
-    0x1.ffffffffffffep863, 0x1.7fffffffffffdp-1
-  },
-  { // Entry 246
-    0x1.00000004da20a7d2821cdfd4f6347dd0p128,
-    0x1.fffffffffffffp-3, -0x1.000000000e0p6
-  },
-  { // Entry 247
-    0x1.44ce541b60346c98094443b9faa84abdp10,
-    0x1.fffffffffffffp1023, 0x1.4afd6a052c0e2p-7
-  },
-  { // Entry 248
-    0x1.cb720dcef90691503cbd1e949db761d9p-1,
-    0x1.0p-5, 0x1.0p-5
-  },
-  { // Entry 249
-    0x1.p-5,
-    0x1.0p-5, 0x1.0p0
-  },
-  { // Entry 250
-    0x1.p0,
-    0x1.0p0, 0x1.0p-5
-  },
-  { // Entry 251
-    0x1.p0,
-    0x1.0p0, 0x1.0p0
-  },
-  { // Entry 252
-    0x1.p-40,
-    0x1.0p-5, 0x1.0p3
-  },
-  { // Entry 253
-    0x1.p-160,
-    0x1.0p-5, 0x1.0p5
-  },
-  { // Entry 254
-    0x1.p0,
-    0x1.0p0, 0x1.0p3
-  },
-  { // Entry 255
-    0x1.p0,
-    0x1.0p0, 0x1.0p5
-  },
-  { // Entry 256
-    0.0,
-    0x1.0p-5, 0x1.0p10
-  },
-  { // Entry 257
-    0.0,
-    0x1.0p-5, 0x1.0p12
-  },
-  { // Entry 258
-    0x1.p0,
-    0x1.0p0, 0x1.0p10
-  },
-  { // Entry 259
-    0x1.p0,
-    0x1.0p0, 0x1.0p12
-  },
-  { // Entry 260
-    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
-    0x1.0p3, 0x1.0p-5
-  },
-  { // Entry 261
-    0x1.p3,
-    0x1.0p3, 0x1.0p0
-  },
-  { // Entry 262
-    0x1.1d4873168b9aa7805b8028990f07a98bp0,
-    0x1.0p5, 0x1.0p-5
-  },
-  { // Entry 263
-    0x1.p5,
-    0x1.0p5, 0x1.0p0
-  },
-  { // Entry 264
-    0x1.p24,
-    0x1.0p3, 0x1.0p3
-  },
-  { // Entry 265
-    0x1.p96,
-    0x1.0p3, 0x1.0p5
-  },
-  { // Entry 266
-    0x1.p40,
-    0x1.0p5, 0x1.0p3
-  },
-  { // Entry 267
-    0x1.p160,
-    0x1.0p5, 0x1.0p5
-  },
-  { // Entry 268
-    HUGE_VAL,
-    0x1.0p3, 0x1.0p10
-  },
-  { // Entry 269
-    HUGE_VAL,
-    0x1.0p3, 0x1.0p12
-  },
-  { // Entry 270
-    HUGE_VAL,
-    0x1.0p5, 0x1.0p10
-  },
-  { // Entry 271
-    HUGE_VAL,
-    0x1.0p5, 0x1.0p12
-  },
-  { // Entry 272
-    0x1.3dea64c12342235b41223e13d773fba2p0,
-    0x1.0p10, 0x1.0p-5
-  },
-  { // Entry 273
-    0x1.p10,
-    0x1.0p10, 0x1.0p0
-  },
-  { // Entry 274
-    0x1.4bfdad5362a271d4397afec42e20e036p0,
-    0x1.0p12, 0x1.0p-5
-  },
-  { // Entry 275
-    0x1.p12,
-    0x1.0p12, 0x1.0p0
-  },
-  { // Entry 276
-    0x1.p80,
-    0x1.0p10, 0x1.0p3
-  },
-  { // Entry 277
-    0x1.p320,
-    0x1.0p10, 0x1.0p5
-  },
-  { // Entry 278
-    0x1.p96,
-    0x1.0p12, 0x1.0p3
-  },
-  { // Entry 279
-    0x1.p384,
-    0x1.0p12, 0x1.0p5
-  },
-  { // Entry 280
-    0x1.000000000000198d4d0da05571e9ad47p2,
-    0x1.6a09e667f3bccp-1, -0x1.0p2
-  },
-  { // Entry 281
-    0x1.ffffffffffffcce565e4bf5521467385p-3,
-    0x1.6a09e667f3bccp-1, 0x1.0p2
-  },
-  { // Entry 282
-    0x1.000000000000198d4d0da05571e9ad47p-2,
-    0x1.6a09e667f3bccp0, -0x1.0p2
-  },
-  { // Entry 283
-    0x1.ffffffffffffcce565e4bf5521467385p1,
-    0x1.6a09e667f3bccp0, 0x1.0p2
-  },
-  { // Entry 284
-    0x1.000000000000198d4d0da05571e9ad47p2,
-    0x1.6a09e667f3bccp-1, -0x1.0p2
-  },
-  { // Entry 285
-    0x1.ffffffffffffcce565e4bf5521467385p-3,
-    0x1.6a09e667f3bccp-1, 0x1.0p2
-  },
-  { // Entry 286
-    0x1.000000000000198d4d0da05571e9ad47p-2,
-    0x1.6a09e667f3bccp0, -0x1.0p2
-  },
-  { // Entry 287
-    0x1.ffffffffffffcce565e4bf5521467385p1,
-    0x1.6a09e667f3bccp0, 0x1.0p2
-  },
-  { // Entry 288
-    0x1.00162f3904051fa2c1b4e853746b6f04p0,
-    0x1.6a09e667f3bccp-1, -0x1.0p-10
-  },
-  { // Entry 289
-    0x1.ffd3a565efb64ea88a80d8a52554a3a0p-1,
-    0x1.6a09e667f3bccp-1, 0x1.0p-10
-  },
-  { // Entry 290
-    0x1.ffd3a565efb64eaeed467183b8d46a96p-1,
-    0x1.6a09e667f3bccp0, -0x1.0p-10
-  },
-  { // Entry 291
-    0x1.00162f3904051f9f8fc46b3743f85cbep0,
-    0x1.6a09e667f3bccp0, 0x1.0p-10
-  },
-  { // Entry 292
-    0x1.948b0fcd6e9e06522c3f35ba781948b0p1,
-    0x1.8p-1, -0x1.0p2
-  },
-  { // Entry 293
-    0x1.44p-2,
-    0x1.8p-1, 0x1.0p2
-  },
-  { // Entry 294
-    0x1.948b0fcd6e9e06522c3f35ba781948b0p-3,
-    0x1.8p0, -0x1.0p2
-  },
-  { // Entry 295
-    0x1.44p2,
-    0x1.8p0, 0x1.0p2
-  },
-  { // Entry 296
-    0x1.279a74590331c4d218f81e4afb257d06p0,
-    0x1.8p-1, -0x1.0p-1
-  },
-  { // Entry 297
-    0x1.bb67ae8584caa73b25742d7078b83b89p-1,
-    0x1.8p-1, 0x1.0p-1
-  },
-  { // Entry 298
-    0x1.a20bd700c2c3dfc042cc1aed7871db45p-1,
-    0x1.8p0, -0x1.0p-1
-  },
-  { // Entry 299
-    0x1.3988e1409212e7d0321914321a556473p0,
-    0x1.8p0, 0x1.0p-1
-  },
-  { // Entry 300
-    0x1.00126a0b93db294cabe33da735437f51p0,
-    0x1.8p-1, -0x1.0p-10
-  },
-  { // Entry 301
-    0x1.ffdb2e8ed2a1fe71bd59fdd610313046p-1,
-    0x1.8p-1, 0x1.0p-10
-  },
-  { // Entry 302
-    0x1.ffcc1c5973b2129a5b1424e0c88786b8p-1,
-    0x1.8p0, -0x1.0p-10
-  },
-  { // Entry 303
-    0x1.0019f474aa190038c6af775d92f1d725p0,
-    0x1.8p0, 0x1.0p-10
-  },
-  { // Entry 304
-    0x1.p0,
-    0x1.0p0, -0x1.0p2
-  },
-  { // Entry 305
-    0x1.p0,
-    0x1.0p0, 0x1.0p2
-  },
-  { // Entry 306
-    0x1.p-4,
-    0x1.0p1, -0x1.0p2
-  },
-  { // Entry 307
-    0x1.p4,
-    0x1.0p1, 0x1.0p2
-  },
-  { // Entry 308
-    0x1.p0,
-    0x1.0p0, -0x1.0p-1
-  },
-  { // Entry 309
-    0x1.p0,
-    0x1.0p0, 0x1.0p-1
-  },
-  { // Entry 310
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
-    0x1.0p1, -0x1.0p-1
-  },
-  { // Entry 311
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.0p1, 0x1.0p-1
-  },
-  { // Entry 312
-    0x1.p0,
-    0x1.0p0, -0x1.0p-10
-  },
-  { // Entry 313
-    0x1.p0,
-    0x1.0p0, 0x1.0p-10
-  },
-  { // Entry 314
-    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
-    0x1.0p1, -0x1.0p-10
-  },
-  { // Entry 315
-    0x1.002c605e2e8cec506d21bfc89a23a010p0,
-    0x1.0p1, 0x1.0p-10
-  },
-  { // Entry 316
-    0x1.p40,
-    0x1.0p-10, -0x1.0p2
-  },
-  { // Entry 317
-    0x1.p-40,
-    0x1.0p-10, 0x1.0p2
-  },
-  { // Entry 318
-    0x1.fe013f6045e40a7c41499223b4a38ce8p-1,
-    0x1.004p0, -0x1.0p2
-  },
-  { // Entry 319
-    0x1.0100601001p0,
-    0x1.004p0, 0x1.0p2
-  },
-  { // Entry 320
-    0x1.p5,
-    0x1.0p-10, -0x1.0p-1
-  },
-  { // Entry 321
-    0x1.p-5,
-    0x1.0p-10, 0x1.0p-1
-  },
-  { // Entry 322
-    0x1.ffc00bfd808be0873653647448220fdfp-1,
-    0x1.004p0, -0x1.0p-1
-  },
-  { // Entry 323
-    0x1.001ffe003ff601bfac107ca6b29a0c31p0,
-    0x1.004p0, 0x1.0p-1
-  },
-  { // Entry 324
-    0x1.01bd1e77170b415e7626621eb5aaff61p0,
-    0x1.0p-10, -0x1.0p-10
-  },
-  { // Entry 325
-    0x1.fc8bc4866e8ad2b963e1828b0761cbc6p-1,
-    0x1.0p-10, 0x1.0p-10
-  },
-  { // Entry 326
-    0x1.ffffe0040055355844443df8680a8e05p-1,
-    0x1.004p0, -0x1.0p-10
-  },
-  { // Entry 327
-    0x1.00000ffe00d5256285340e4f3ad36287p0,
-    0x1.004p0, 0x1.0p-10
-  },
-  { // Entry 328
-    0x1.0000000000000800000000000040p-1024,
-    0x1.fffffffffffffp1023, -0x1.0p0
-  },
-  { // Entry 329
-    0x1.fffffffffffff0p1023,
-    0x1.fffffffffffffp1023, 0x1.0p0
-  },
-  { // Entry 330
-    0x1.3b2c47bff827194425605a92311acceep1020,
-    0x1.0p-1074, -0x1.e666666666666p-1
-  },
-  { // Entry 331
-    0x1.9fdf8bcce542f50814057837677baf82p-1021,
-    0x1.0p-1074, 0x1.e666666666666p-1
-  },
-  { // Entry 332
-    0x1.00000000000651591f9dd5cdb110f6e3p-384,
-    0x1.fffffffffffffp-7, 0x1.fffffffffffffp5
-  },
-  { // Entry 333
-    0x1.fffffffffffc000000000003efffffffp-385,
-    0x1.fffffffffffffp-7, 0x1.0p6
-  },
-  { // Entry 334
-    0x1.ffffffffffdaba9b8188aa7428411dd5p-385,
-    0x1.fffffffffffffp-7, 0x1.0000000000001p6
-  },
-  { // Entry 335
-    0x1.00000000000851591f9dd5dc4bc3361fp-384,
-    0x1.0p-6, 0x1.fffffffffffffp5
-  },
-  { // Entry 336
-    0x1.p-384,
-    0x1.0p-6, 0x1.0p6
-  },
-  { // Entry 337
-    0x1.ffffffffffdeba9b8188aa2ded7820e7p-385,
-    0x1.0p-6, 0x1.0000000000001p6
-  },
-  { // Entry 338
-    0x1.00000000000c51591f9dd6055127b496p-384,
-    0x1.0000000000001p-6, 0x1.fffffffffffffp5
-  },
-  { // Entry 339
-    0x1.000000000004000000000007e0p-384,
-    0x1.0000000000001p-6, 0x1.0p6
-  },
-  { // Entry 340
-    0x1.ffffffffffe6ba9b8188a9b917e62709p-385,
-    0x1.0000000000001p-6, 0x1.0000000000001p6
-  },
-  { // Entry 341
-    0x1.000000000002773a77d719106e939582p-160,
-    0x1.fffffffffffffp-6, 0x1.fffffffffffffp4
-  },
-  { // Entry 342
-    0x1.fffffffffffe000000000000f7ffffffp-161,
-    0x1.fffffffffffffp-6, 0x1.0p5
-  },
-  { // Entry 343
-    0x1.fffffffffff0231620a39c093f16f8cep-161,
-    0x1.fffffffffffffp-6, 0x1.0000000000001p5
-  },
-  { // Entry 344
-    0x1.000000000003773a77d7191361ce0d5ap-160,
-    0x1.0p-5, 0x1.fffffffffffffp4
-  },
-  { // Entry 345
-    0x1.p-160,
-    0x1.0p-5, 0x1.0p5
-  },
-  { // Entry 346
-    0x1.fffffffffff2231620a39bfa8a2d1972p-161,
-    0x1.0p-5, 0x1.0000000000001p5
-  },
-  { // Entry 347
-    0x1.000000000005773a77d7191c3042fd08p-160,
-    0x1.0000000000001p-5, 0x1.fffffffffffffp4
-  },
-  { // Entry 348
-    0x1.000000000002000000000001f0p-160,
-    0x1.0000000000001p-5, 0x1.0p5
-  },
-  { // Entry 349
-    0x1.fffffffffff6231620a39be2f0595ab9p-161,
-    0x1.0000000000001p-5, 0x1.0000000000001p5
-  },
-  { // Entry 350
-    0x1.000000000000e2e42fefa39f59e36bcbp-64,
-    0x1.fffffffffffffp-5, 0x1.fffffffffffffp3
-  },
-  { // Entry 351
-    0x1.ffffffffffff0000000000003bffffffp-65,
-    0x1.fffffffffffffp-5, 0x1.0p4
-  },
-  { // Entry 352
-    0x1.fffffffffff9746f4041718ed45990a2p-65,
-    0x1.fffffffffffffp-5, 0x1.0000000000001p4
-  },
-  { // Entry 353
-    0x1.00000000000162e42fefa39fe95583c3p-64,
-    0x1.0p-4, 0x1.fffffffffffffp3
-  },
-  { // Entry 354
-    0x1.p-64,
-    0x1.0p-4, 0x1.0p4
-  },
-  { // Entry 355
-    0x1.fffffffffffa746f4041718be29130c3p-65,
-    0x1.0p-4, 0x1.0000000000001p4
-  },
-  { // Entry 356
-    0x1.00000000000262e42fefa3a1bc39b3b3p-64,
-    0x1.0000000000001p-4, 0x1.fffffffffffffp3
-  },
-  { // Entry 357
-    0x1.00000000000100000000000078p-64,
-    0x1.0000000000001p-4, 0x1.0p4
-  },
-  { // Entry 358
-    0x1.fffffffffffc746f4041718767007104p-65,
-    0x1.0000000000001p-4, 0x1.0000000000001p4
-  },
-  { // Entry 359
-    0x1.000000000000451591f9dd5ba59328abp-24,
-    0x1.fffffffffffffp-4, 0x1.fffffffffffffp2
-  },
-  { // Entry 360
-    0x1.ffffffffffff8000000000000dffffffp-25,
-    0x1.fffffffffffffp-4, 0x1.0p3
-  },
-  { // Entry 361
-    0x1.fffffffffffd6ba9b8188a9332cfe24ap-25,
-    0x1.fffffffffffffp-4, 0x1.0000000000001p3
-  },
-  { // Entry 362
-    0x1.000000000000851591f9dd5bbdd88d2ap-24,
-    0x1.0p-3, 0x1.fffffffffffffp2
-  },
-  { // Entry 363
-    0x1.p-24,
-    0x1.0p-3, 0x1.0p3
-  },
-  { // Entry 364
-    0x1.fffffffffffdeba9b8188a92a7ba5050p-25,
-    0x1.0p-3, 0x1.0000000000001p3
-  },
-  { // Entry 365
-    0x1.000000000001051591f9dd5c18635627p-24,
-    0x1.0000000000001p-3, 0x1.fffffffffffffp2
-  },
-  { // Entry 366
-    0x1.0000000000008000000000001cp-24,
-    0x1.0000000000001p-3, 0x1.0p3
-  },
-  { // Entry 367
-    0x1.fffffffffffeeba9b8188a91e58f2c5cp-25,
-    0x1.0000000000001p-3, 0x1.0000000000001p3
-  },
-  { // Entry 368
-    0x1.0000000000000c5c85fdf473df375979p-8,
-    0x1.fffffffffffffp-3, 0x1.fffffffffffffp1
-  },
-  { // Entry 369
-    0x1.ffffffffffffc0000000000002ffffffp-9,
-    0x1.fffffffffffffp-3, 0x1.0p2
-  },
-  { // Entry 370
-    0x1.ffffffffffff0e8de8082e30ba42371ap-9,
-    0x1.fffffffffffffp-3, 0x1.0000000000001p2
-  },
-  { // Entry 371
-    0x1.0000000000002c5c85fdf473e242ea38p-8,
-    0x1.0p-2, 0x1.fffffffffffffp1
-  },
-  { // Entry 372
-    0x1.p-8,
-    0x1.0p-2, 0x1.0p2
-  },
-  { // Entry 373
-    0x1.ffffffffffff4e8de8082e30a513f41bp-9,
-    0x1.0p-2, 0x1.0000000000001p2
-  },
-  { // Entry 374
-    0x1.0000000000006c5c85fdf473f15a0bb8p-8,
-    0x1.0000000000001p-2, 0x1.fffffffffffffp1
-  },
-  { // Entry 375
-    0x1.00000000000040000000000006p-8,
-    0x1.0000000000001p-2, 0x1.0p2
-  },
-  { // Entry 376
-    0x1.ffffffffffffce8de8082e308cb76e1dp-9,
-    0x1.0000000000001p-2, 0x1.0000000000001p2
-  },
-  { // Entry 377
-    0x1.fffffffffffff62e42fefa39efcd9404p-3,
-    0x1.fffffffffffffp-2, 0x1.fffffffffffffp0
-  },
-  { // Entry 378
-    0x1.ffffffffffffe000000000000080p-3,
-    0x1.fffffffffffffp-2, 0x1.0p1
-  },
-  { // Entry 379
-    0x1.ffffffffffffb3a37a020b8c24c6d1c6p-3,
-    0x1.fffffffffffffp-2, 0x1.0000000000001p1
-  },
-  { // Entry 380
-    0x1.0000000000000b17217f7d1cf7d83c1ap-2,
-    0x1.0p-1, 0x1.fffffffffffffp0
-  },
-  { // Entry 381
-    0x1.p-2,
-    0x1.0p-1, 0x1.0p1
-  },
-  { // Entry 382
-    0x1.ffffffffffffd3a37a020b8c23810967p-3,
-    0x1.0p-1, 0x1.0000000000001p1
-  },
-  { // Entry 383
-    0x1.0000000000002b17217f7d1cf93b204ap-2,
-    0x1.0000000000001p-1, 0x1.fffffffffffffp0
-  },
-  { // Entry 384
-    0x1.00000000000020000000000001p-2,
-    0x1.0000000000001p-1, 0x1.0p1
-  },
-  { // Entry 385
-    0x1.00000000000009d1bd0105c611fabc53p-2,
-    0x1.0000000000001p-1, 0x1.0000000000001p1
-  },
-  { // Entry 386
-    0x1.fffffffffffff00000000000007fffffp-1,
-    0x1.fffffffffffffp-1, 0x1.fffffffffffffp-1
-  },
-  { // Entry 387
-    0x1.fffffffffffff0p-1,
-    0x1.fffffffffffffp-1, 0x1.0p0
-  },
-  { // Entry 388
-    0x1.ffffffffffffefffffffffffffp-1,
-    0x1.fffffffffffffp-1, 0x1.0000000000001p0
-  },
-  { // Entry 389
-    0x1.p0,
-    0x1.0p0, 0x1.fffffffffffffp-1
-  },
-  { // Entry 390
-    0x1.p0,
-    0x1.0p0, 0x1.0p0
-  },
-  { // Entry 391
-    0x1.p0,
-    0x1.0p0, 0x1.0000000000001p0
-  },
-  { // Entry 392
-    0x1.0000000000000fffffffffffff7fffffp0,
-    0x1.0000000000001p0, 0x1.fffffffffffffp-1
-  },
-  { // Entry 393
-    0x1.00000000000010p0,
-    0x1.0000000000001p0, 0x1.0p0
-  },
-  { // Entry 394
-    0x1.00000000000010000000000001p0,
-    0x1.0000000000001p0, 0x1.0000000000001p0
-  },
-  { // Entry 395
-    0x1.6a09e667f3bcbf74c2970440d6d2a831p0,
-    0x1.fffffffffffffp0, 0x1.fffffffffffffp-2
-  },
-  { // Entry 396
-    0x1.6a09e667f3bcc3608b617397f7660a23p0,
-    0x1.fffffffffffffp0, 0x1.0p-1
-  },
-  { // Entry 397
-    0x1.6a09e667f3bccb381cf6524638ad6b43p0,
-    0x1.fffffffffffffp0, 0x1.0000000000001p-1
-  },
-  { // Entry 398
-    0x1.6a09e667f3bcc51cea30a40fc9c52aecp0,
-    0x1.0p1, 0x1.fffffffffffffp-2
-  },
-  { // Entry 399
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.0p1, 0x1.0p-1
-  },
-  { // Entry 400
-    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
-    0x1.0p1, 0x1.0000000000001p-1
-  },
-  { // Entry 401
-    0x1.6a09e667f3bcd06d3963e3adaf664e88p0,
-    0x1.0000000000001p1, 0x1.fffffffffffffp-2
-  },
-  { // Entry 402
-    0x1.6a09e667f3bcd459022e5304d0b08199p0,
-    0x1.0000000000001p1, 0x1.0p-1
-  },
-  { // Entry 403
-    0x1.6a09e667f3bcdc3093c331b3136584f9p0,
-    0x1.0000000000001p1, 0x1.0000000000001p-1
-  },
-  { // Entry 404
-    0x1.6a09e667f3bcc248d663d4285049157bp0,
-    0x1.fffffffffffffp1, 0x1.fffffffffffffp-3
-  },
-  { // Entry 405
-    0x1.6a09e667f3bcc6349f2e437f70faef9cp0,
-    0x1.fffffffffffffp1, 0x1.0p-2
-  },
-  { // Entry 406
-    0x1.6a09e667f3bcce0c30c3222db27f411dp0,
-    0x1.fffffffffffffp1, 0x1.0000000000001p-2
-  },
-  { // Entry 407
-    0x1.6a09e667f3bcc51cea30a40fc9c52aecp0,
-    0x1.0p2, 0x1.fffffffffffffp-3
-  },
-  { // Entry 408
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.0p2, 0x1.0p-2
-  },
-  { // Entry 409
-    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
-    0x1.0p2, 0x1.0000000000001p-2
-  },
-  { // Entry 410
-    0x1.6a09e667f3bccac511ca43debc8a6c6bp0,
-    0x1.0000000000001p2, 0x1.fffffffffffffp-3
-  },
-  { // Entry 411
-    0x1.6a09e667f3bcceb0da94b335dd97af1cp0,
-    0x1.0000000000001p2, 0x1.0p-2
-  },
-  { // Entry 412
-    0x1.6a09e667f3bcd6886c2991e41fd2d1bdp0,
-    0x1.0000000000001p2, 0x1.0000000000001p-2
-  },
-  { // Entry 413
-    0x1.4bfdad5362a26dd5e0bd02594b5812cbp0,
-    0x1.fffffffffffffp2, 0x1.fffffffffffffp-4
-  },
-  { // Entry 414
-    0x1.4bfdad5362a270883bcdab618baa8204p0,
-    0x1.fffffffffffffp2, 0x1.0p-3
-  },
-  { // Entry 415
-    0x1.4bfdad5362a275ecf1eefd720c603321p0,
-    0x1.fffffffffffffp2, 0x1.0000000000001p-3
-  },
-  { // Entry 416
-    0x1.4bfdad5362a26f21de6a55bbedc15eb4p0,
-    0x1.0p3, 0x1.fffffffffffffp-4
-  },
-  { // Entry 417
-    0x1.4bfdad5362a271d4397afec42e20e036p0,
-    0x1.0p3, 0x1.0p-3
-  },
-  { // Entry 418
-    0x1.4bfdad5362a27738ef9c50d4aef0b5e4p0,
-    0x1.0p3, 0x1.0000000000001p-3
-  },
-  { // Entry 419
-    0x1.4bfdad5362a271b9d9c4fc813278bab6p0,
-    0x1.0000000000001p3, 0x1.fffffffffffffp-4
-  },
-  { // Entry 420
-    0x1.4bfdad5362a2746c34d5a58972f260c9p0,
-    0x1.0000000000001p3, 0x1.0p-3
-  },
-  { // Entry 421
-    0x1.4bfdad5362a279d0eaf6f799f3f67f99p0,
-    0x1.0000000000001p3, 0x1.0000000000001p-3
-  },
-  { // Entry 422
-    0x1.306fe0a31b7150a04b58ad8027ceb050p0,
-    0x1.fffffffffffffp3, 0x1.fffffffffffffp-5
-  },
-  { // Entry 423
-    0x1.306fe0a31b7152465569f4a2a3da43d4p0,
-    0x1.fffffffffffffp3, 0x1.0p-4
-  },
-  { // Entry 424
-    0x1.306fe0a31b715592698c82e79bf84613p0,
-    0x1.fffffffffffffp3, 0x1.0000000000001p-4
-  },
-  { // Entry 425
-    0x1.306fe0a31b7151388348ff0de074c5a3p0,
-    0x1.0p4, 0x1.fffffffffffffp-5
-  },
-  { // Entry 426
-    0x1.306fe0a31b7152de8d5a46305c85edecp0,
-    0x1.0p4, 0x1.0p-4
-  },
-  { // Entry 427
-    0x1.306fe0a31b71562aa17cd47554af19b4p0,
-    0x1.0p4, 0x1.0000000000001p-4
-  },
-  { // Entry 428
-    0x1.306fe0a31b715268f329a22951b38f61p0,
-    0x1.0000000000001p4, 0x1.fffffffffffffp-5
-  },
-  { // Entry 429
-    0x1.306fe0a31b71540efd3ae94bcdcfe133p0,
-    0x1.0000000000001p4, 0x1.0p-4
-  },
-  { // Entry 430
-    0x1.306fe0a31b71575b115d7790c60f600dp0,
-    0x1.0000000000001p4, 0x1.0000000000001p-4
-  },
-  { // Entry 431
-    0x1.1d4873168b9aa641db97b491a37936aep0,
-    0x1.fffffffffffffp4, 0x1.fffffffffffffp-6
-  },
-  { // Entry 432
-    0x1.1d4873168b9aa739096362f6285cb516p0,
-    0x1.fffffffffffffp4, 0x1.0p-5
-  },
-  { // Entry 433
-    0x1.1d4873168b9aa92764fabfbf32263462p0,
-    0x1.fffffffffffffp4, 0x1.0000000000001p-5
-  },
-  { // Entry 434
-    0x1.1d4873168b9aa6892db47a348a21b2c7p0,
-    0x1.0p5, 0x1.fffffffffffffp-6
-  },
-  { // Entry 435
-    0x1.1d4873168b9aa7805b8028990f07a98bp0,
-    0x1.0p5, 0x1.0p-5
-  },
-  { // Entry 436
-    0x1.1d4873168b9aa96eb717856218d61990p0,
-    0x1.0p5, 0x1.0000000000001p-5
-  },
-  { // Entry 437
-    0x1.1d4873168b9aa717d1ee057a576c30c4p0,
-    0x1.0000000000001p5, 0x1.fffffffffffffp-6
-  },
-  { // Entry 438
-    0x1.1d4873168b9aa80effb9b3dedc571840p0,
-    0x1.0000000000001p5, 0x1.0p-5
-  },
-  { // Entry 439
-    0x1.1d4873168b9aa9fd5b5110a7e62f69b6p0,
-    0x1.0000000000001p5, 0x1.0000000000001p-5
-  },
-  { // Entry 440
-    0x1.11301d0125b5099e90ea43d6599ee2bbp0,
-    0x1.fffffffffffffp5, 0x1.fffffffffffffp-7
-  },
-  { // Entry 441
-    0x1.11301d0125b50a2c95ee0eb47aeb1a78p0,
-    0x1.fffffffffffffp5, 0x1.0p-6
-  },
-  { // Entry 442
-    0x1.11301d0125b50b489ff5a470bd846771p0,
-    0x1.fffffffffffffp5, 0x1.0000000000001p-6
-  },
-  { // Entry 443
-    0x1.11301d0125b509c0b6ede3fb103f9017p0,
-    0x1.0p6, 0x1.fffffffffffffp-7
-  },
-  { // Entry 444
-    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
-    0x1.0p6, 0x1.0p-6
-  },
-  { // Entry 445
-    0x1.11301d0125b50b6ac5f9449574287d9fp0,
-    0x1.0p6, 0x1.0000000000001p-6
-  },
-  { // Entry 446
-    0x1.11301d0125b50a0502f524447d7dc40ep0,
-    0x1.0000000000001p6, 0x1.fffffffffffffp-7
-  },
-  { // Entry 447
-    0x1.11301d0125b50a9307f8ef229ecd649ep0,
-    0x1.0000000000001p6, 0x1.0p-6
-  },
-  { // Entry 448
-    0x1.11301d0125b50baf120084dee16d833bp0,
-    0x1.0000000000001p6, 0x1.0000000000001p-6
-  },
-  { // Entry 449
-    0x1.ffffffffff2746f4041746255c99e90bp1023,
-    0x1.ffffffffffffep0, 0x1.ffffffffffffep9
-  },
-  { // Entry 450
-    0x1.ffffffffff53a37a020ba924b26cfc59p1023,
-    0x1.ffffffffffffep0, 0x1.fffffffffffffp9
-  },
-  { // Entry 451
-    0x1.ffffffffff80000000000ffbfffffffep1023,
-    0x1.ffffffffffffep0, 0x1.0p10
-  },
-  { // Entry 452
-    0x1.ffffffffffd8b90bfbe8e9328265d851p1023,
-    0x1.ffffffffffffep0, 0x1.0000000000001p10
-  },
-  { // Entry 453
-    HUGE_VAL,
-    0x1.ffffffffffffep0, 0x1.0000000000002p10
-  },
-  { // Entry 454
-    0x1.ffffffffff6746f404172f0d3b1a6bf2p1023,
-    0x1.fffffffffffffp0, 0x1.ffffffffffffep9
-  },
-  { // Entry 455
-    0x1.ffffffffff93a37a020b979a21ad3dcdp1023,
-    0x1.fffffffffffffp0, 0x1.fffffffffffffp9
-  },
-  { // Entry 456
-    0x1.ffffffffffc00000000003feffffffffp1023,
-    0x1.fffffffffffffp0, 0x1.0p10
-  },
-  { // Entry 457
-    HUGE_VAL,
-    0x1.fffffffffffffp0, 0x1.0000000000001p10
-  },
-  { // Entry 458
-    HUGE_VAL,
-    0x1.fffffffffffffp0, 0x1.0000000000002p10
-  },
-  { // Entry 459
-    0x1.ffffffffffa746f404171ff3199aeed7p1023,
-    0x1.0p1, 0x1.ffffffffffffep9
-  },
-  { // Entry 460
-    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp1023,
-    0x1.0p1, 0x1.fffffffffffffp9
-  },
-  { // Entry 461
-    HUGE_VAL,
-    0x1.0p1, 0x1.0p10
-  },
-  { // Entry 462
-    HUGE_VAL,
-    0x1.0p1, 0x1.0000000000001p10
-  },
-  { // Entry 463
-    HUGE_VAL,
-    0x1.0p1, 0x1.0000000000002p10
-  },
-  { // Entry 464
-    HUGE_VAL,
-    0x1.0000000000001p1, 0x1.ffffffffffffep9
-  },
-  { // Entry 465
-    HUGE_VAL,
-    0x1.0000000000001p1, 0x1.fffffffffffffp9
-  },
-  { // Entry 466
-    HUGE_VAL,
-    0x1.0000000000001p1, 0x1.0p10
-  },
-  { // Entry 467
-    HUGE_VAL,
-    0x1.0000000000001p1, 0x1.0000000000001p10
-  },
-  { // Entry 468
-    HUGE_VAL,
-    0x1.0000000000001p1, 0x1.0000000000002p10
-  },
-  { // Entry 469
-    HUGE_VAL,
-    0x1.0000000000002p1, 0x1.ffffffffffffep9
-  },
-  { // Entry 470
-    HUGE_VAL,
-    0x1.0000000000002p1, 0x1.fffffffffffffp9
-  },
-  { // Entry 471
-    HUGE_VAL,
-    0x1.0000000000002p1, 0x1.0p10
-  },
-  { // Entry 472
-    HUGE_VAL,
-    0x1.0000000000002p1, 0x1.0000000000001p10
-  },
-  { // Entry 473
-    HUGE_VAL,
-    0x1.0000000000002p1, 0x1.0000000000002p10
-  },
-  { // Entry 474
-    0.0,
-    0x1.ffffffffffffep0, -0x1.0cc0000000002p10
-  },
-  { // Entry 475
-    0.0,
-    0x1.ffffffffffffep0, -0x1.0cc0000000001p10
-  },
-  { // Entry 476
-    0.0,
-    0x1.ffffffffffffep0, -0x1.0ccp10
-  },
-  { // Entry 477
-    0.0,
-    0x1.ffffffffffffep0, -0x1.0cbffffffffffp10
-  },
-  { // Entry 478
-    0.0,
-    0x1.ffffffffffffep0, -0x1.0cbfffffffffep10
-  },
-  { // Entry 479
-    0.0,
-    0x1.fffffffffffffp0, -0x1.0cc0000000002p10
-  },
-  { // Entry 480
-    0.0,
-    0x1.fffffffffffffp0, -0x1.0cc0000000001p10
-  },
-  { // Entry 481
-    0.0,
-    0x1.fffffffffffffp0, -0x1.0ccp10
-  },
-  { // Entry 482
-    0.0,
-    0x1.fffffffffffffp0, -0x1.0cbffffffffffp10
-  },
-  { // Entry 483
-    0.0,
-    0x1.fffffffffffffp0, -0x1.0cbfffffffffep10
-  },
-  { // Entry 484
-    0.0,
-    0x1.0p1, -0x1.0cc0000000002p10
-  },
-  { // Entry 485
-    0.0,
-    0x1.0p1, -0x1.0cc0000000001p10
-  },
-  { // Entry 486
-    0.0,
-    0x1.0p1, -0x1.0ccp10
-  },
-  { // Entry 487
-    0.0,
-    0x1.0p1, -0x1.0cbffffffffffp10
-  },
-  { // Entry 488
-    0.0,
-    0x1.0p1, -0x1.0cbfffffffffep10
-  },
-  { // Entry 489
-    0.0,
-    0x1.0000000000001p1, -0x1.0cc0000000002p10
-  },
-  { // Entry 490
-    0.0,
-    0x1.0000000000001p1, -0x1.0cc0000000001p10
-  },
-  { // Entry 491
-    0.0,
-    0x1.0000000000001p1, -0x1.0ccp10
-  },
-  { // Entry 492
-    0.0,
-    0x1.0000000000001p1, -0x1.0cbffffffffffp10
-  },
-  { // Entry 493
-    0.0,
-    0x1.0000000000001p1, -0x1.0cbfffffffffep10
-  },
-  { // Entry 494
-    0.0,
-    0x1.0000000000002p1, -0x1.0cc0000000002p10
-  },
-  { // Entry 495
-    0.0,
-    0x1.0000000000002p1, -0x1.0cc0000000001p10
-  },
-  { // Entry 496
-    0.0,
-    0x1.0000000000002p1, -0x1.0ccp10
-  },
-  { // Entry 497
-    0.0,
-    0x1.0000000000002p1, -0x1.0cbffffffffffp10
-  },
-  { // Entry 498
-    0.0,
-    0x1.0000000000002p1, -0x1.0cbfffffffffep10
-  },
-  { // Entry 499
-    0x1.a82e14690252e5ea2cfa30b25e947cedp-500,
-    0x1.db6db6db6db70p-2, 0x1.c30c30c30c2fep8
-  },
-  { // Entry 500
-    0x1.a82e1469023e8ea567883fcd2742e4b7p-500,
-    0x1.db6db6db6db70p-2, 0x1.c30c30c30c2ffp8
-  },
-  { // Entry 501
-    0x1.a82e1469022a3760a2164fe1a4cd3aa2p-500,
-    0x1.db6db6db6db70p-2, 0x1.c30c30c30c3p8
-  },
-  { // Entry 502
-    0x1.a82e14690215e01bdca460efd7337eaep-500,
-    0x1.db6db6db6db70p-2, 0x1.c30c30c30c301p8
-  },
-  { // Entry 503
-    0x1.a82e1469020188d7173272f7be75b0dcp-500,
-    0x1.db6db6db6db70p-2, 0x1.c30c30c30c302p8
-  },
-  { // Entry 504
-    0x1.a82e1469026c0cbfe6135b38e76d3a47p-500,
-    0x1.db6db6db6db71p-2, 0x1.c30c30c30c2fep8
-  },
-  { // Entry 505
-    0x1.a82e14690257b57b20a1691fd0d853d6p-500,
-    0x1.db6db6db6db71p-2, 0x1.c30c30c30c2ffp8
-  },
-  { // Entry 506
-    0x1.a82e146902435e365b2f78006f1f5b87p-500,
-    0x1.db6db6db6db71p-2, 0x1.c30c30c30c3p8
-  },
-  { // Entry 507
-    0x1.a82e1469022f06f195bd87dac2425159p-500,
-    0x1.db6db6db6db71p-2, 0x1.c30c30c30c301p8
-  },
-  { // Entry 508
-    0x1.a82e1469021aafacd04b98aeca41354dp-500,
-    0x1.db6db6db6db71p-2, 0x1.c30c30c30c302p8
-  },
-  { // Entry 509
-    0x1.a82e1469028533959f2c873c61cafb18p-500,
-    0x1.db6db6db6db72p-2, 0x1.c30c30c30c2fep8
-  },
-  { // Entry 510
-    0x1.a82e14690270dc50d9ba93ef6bf2c66dp-500,
-    0x1.db6db6db6db72p-2, 0x1.c30c30c30c2ffp8
-  },
-  { // Entry 511
-    0x1.a82e1469025c850c1448a19c2af67fe4p-500,
-    0x1.db6db6db6db72p-2, 0x1.c30c30c30c3p8
-  },
-  { // Entry 512
-    0x1.a82e146902482dc74ed6b0429ed6277cp-500,
-    0x1.db6db6db6db72p-2, 0x1.c30c30c30c301p8
-  },
-  { // Entry 513
-    0x1.a82e14690233d6828964bfe2c791bd35p-500,
-    0x1.db6db6db6db72p-2, 0x1.c30c30c30c302p8
-  },
-  { // Entry 514
-    0x1.a82e1469029e5a6b5845b4bccdadbf62p-500,
-    0x1.db6db6db6db73p-2, 0x1.c30c30c30c2fep8
-  },
-  { // Entry 515
-    0x1.a82e1469028a032692d3c03bf8923c7cp-500,
-    0x1.db6db6db6db73p-2, 0x1.c30c30c30c2ffp8
-  },
-  { // Entry 516
-    0x1.a82e14690275abe1cd61ccb4d852a7b9p-500,
-    0x1.db6db6db6db73p-2, 0x1.c30c30c30c3p8
-  },
-  { // Entry 517
-    0x1.a82e14690261549d07efda276cef0116p-500,
-    0x1.db6db6db6db73p-2, 0x1.c30c30c30c301p8
-  },
-  { // Entry 518
-    0x1.a82e1469024cfd58427de893b6674895p-500,
-    0x1.db6db6db6db73p-2, 0x1.c30c30c30c302p8
-  },
-  { // Entry 519
-    0x1.a82e146902b78141115ee3ba2b158723p-500,
-    0x1.db6db6db6db74p-2, 0x1.c30c30c30c2fep8
-  },
-  { // Entry 520
-    0x1.a82e146902a329fc4becee0576b6b603p-500,
-    0x1.db6db6db6db74p-2, 0x1.c30c30c30c2ffp8
-  },
-  { // Entry 521
-    0x1.a82e1469028ed2b7867af94a7733d305p-500,
-    0x1.db6db6db6db74p-2, 0x1.c30c30c30c3p8
-  },
-  { // Entry 522
-    0x1.a82e1469027a7b72c10905892c8cde29p-500,
-    0x1.db6db6db6db74p-2, 0x1.c30c30c30c301p8
-  },
-  { // Entry 523
-    0x1.a82e14690266242dfb9712c196c1d76dp-500,
-    0x1.db6db6db6db74p-2, 0x1.c30c30c30c302p8
-  },
-  { // Entry 524
-    -0x1.ffffffffffffe0000000000001ffffffp-1,
-    -0x1.0000000000001p0, -0x1.0p0
-  },
-  { // Entry 525
-    -0x1.p0,
-    -0x1.0p0, -0x1.0p0
-  },
-  { // Entry 526
-    -0x1.0000000000000800000000000040p0,
-    -0x1.fffffffffffffp-1, -0x1.0p0
-  },
-  { // Entry 527
-    HUGE_VAL,
-    0x1.0p1, 0x1.0p10
-  },
-  { // Entry 528
-    HUGE_VAL,
-    0x1.0p2, 0x1.0p9
-  },
-  { // Entry 529
-    0x1.ffffffffffec5c85fdf4743fd612b28ap-1025,
-    0x1.fffffffffffffp-2, 0x1.fffffffffffffp9
-  },
-  { // Entry 530
-    0x1.ffffffffffc00000000003feffffffffp-1025,
-    0x1.fffffffffffffp-2, 0x1.0p10
-  },
-  { // Entry 531
-    0x1.ffffffffff6746f404172f053b1a6bf2p-1025,
-    0x1.fffffffffffffp-2, 0x1.0000000000001p10
-  },
-  { // Entry 532
-    0x1.0000000000162e42fefa3ae53369388cp-1024,
-    0x1.0p-1, 0x1.fffffffffffffp9
-  },
-  { // Entry 533
-    0x1.p-1024,
-    0x1.0p-1, 0x1.0p10
-  },
-  { // Entry 534
-    0x1.ffffffffffa746f404171ff3199aeed7p-1025,
-    0x1.0p-1, 0x1.0000000000001p10
-  },
-  { // Entry 535
-    0x1.0000000000562e42fefa486cc428f71cp-1024,
-    0x1.0000000000001p-1, 0x1.fffffffffffffp9
-  },
-  { // Entry 536
-    0x1.0000000000400000000007fep-1024,
-    0x1.0000000000001p-1, 0x1.0p10
-  },
-  { // Entry 537
-    0x1.000000000013a37a020b8ce46b4dfa4ep-1024,
-    0x1.0000000000001p-1, 0x1.0000000000001p10
-  },
-  { // Entry 538
-    0x1.000000000074519a5623533df8dcd353p-1074,
-    0x1.0p-1074, 0x1.ffffffffffffbp-1
-  },
-  { // Entry 539
-    0x1.00000000005d0e1511b5d7f72c61368ap-1074,
-    0x1.0p-1074, 0x1.ffffffffffffcp-1
-  },
-  { // Entry 540
-    0x1.000000000045ca8fcd485ecd93a6ec9dp-1074,
-    0x1.0p-1074, 0x1.ffffffffffffdp-1
-  },
-  { // Entry 541
-    0x1.00000000002e870a88dae7c12eadf58cp-1074,
-    0x1.0p-1074, 0x1.ffffffffffffep-1
-  },
-  { // Entry 542
-    0x1.0000000000174385446d72d1fd765158p-1074,
-    0x1.0p-1074, 0x1.fffffffffffffp-1
-  },
-  { // Entry 543
-    0x1.p-1074,
-    0x1.0p-1074, 0x1.0p0
-  },
-  { // Entry 544
-    0.0,
-    0x1.0p-1074, 0x1.0000000000001p0
-  },
-  { // Entry 545
-    0.0,
-    0x1.0p-1074, 0x1.0000000000002p0
-  },
-  { // Entry 546
-    0.0,
-    0x1.0p-1074, 0x1.0000000000003p0
-  },
-  { // Entry 547
-    0.0,
-    0x1.0p-1074, 0x1.0000000000004p0
-  },
-  { // Entry 548
-    0.0,
-    0x1.0p-1074, 0x1.0000000000005p0
-  },
-  { // Entry 549
-    0x1.00000000007435e082649a68f64fe306p-1073,
-    0x1.0p-1073, 0x1.ffffffffffffbp-1
-  },
-  { // Entry 550
-    0x1.00000000005cf7e6ceb6ddb52e1b099ep-1073,
-    0x1.0p-1073, 0x1.ffffffffffffcp-1
-  },
-  { // Entry 551
-    0x1.000000000045b9ed1b09231d97c56c9dp-1073,
-    0x1.0p-1073, 0x1.ffffffffffffdp-1
-  },
-  { // Entry 552
-    0x1.00000000002e7bf3675b6aa2334f0c02p-1073,
-    0x1.0p-1073, 0x1.ffffffffffffep-1
-  },
-  { // Entry 553
-    0x1.0000000000173df9b3adb44300b7e7cep-1073,
-    0x1.0p-1073, 0x1.fffffffffffffp-1
-  },
-  { // Entry 554
-    0x1.p-1073,
-    0x1.0p-1073, 0x1.0p0
-  },
-  { // Entry 555
-    0x1.ffffffffffa3081931493b9d285bcb2bp-1074,
-    0x1.0p-1073, 0x1.0000000000001p0
-  },
-  { // Entry 556
-    0x1.ffffffffff4610326292881bdfb17983p-1074,
-    0x1.0p-1073, 0x1.0000000000002p0
-  },
-  { // Entry 557
-    0x1.fffffffffee9184b93dbe57c26010b04p-1074,
-    0x1.0p-1073, 0x1.0000000000003p0
-  },
-  { // Entry 558
-    0x1.fffffffffe8c2064c52553bdfb4a7fadp-1074,
-    0x1.0p-1073, 0x1.0000000000004p0
-  },
-  { // Entry 559
-    0x1.fffffffffe2f287df66ed2e15f8dd77ap-1074,
-    0x1.0p-1073, 0x1.0000000000005p0
-  },
-  { // Entry 560
-    0x1.8000000000ae387cd1e8f3f39fe157f9p-1073,
-    0x1.8p-1073, 0x1.ffffffffffffbp-1
-  },
-  { // Entry 561
-    0x1.80000000008b6063db20bcd67b4f5ba5p-1073,
-    0x1.8p-1073, 0x1.ffffffffffffcp-1
-  },
-  { // Entry 562
-    0x1.800000000068884ae45888e2bf6fd4afp-1073,
-    0x1.8p-1073, 0x1.ffffffffffffdp-1
-  },
-  { // Entry 563
-    0x1.800000000045b031ed9058186c42c317p-1073,
-    0x1.8p-1073, 0x1.ffffffffffffep-1
-  },
-  { // Entry 564
-    0x1.800000000022d818f6c82a7781c826dcp-1073,
-    0x1.8p-1073, 0x1.fffffffffffffp-1
-  },
-  { // Entry 565
-    0x1.80p-1073,
-    0x1.8p-1073, 0x1.0p0
-  },
-  { // Entry 566
-    0x1.7fffffffffba4fce126fb48d3687125dp-1073,
-    0x1.8p-1073, 0x1.0000000000001p0
-  },
-  { // Entry 567
-    0x1.7fffffffff749f9c24df75c00fd7fa2ep-1073,
-    0x1.8p-1073, 0x1.0000000000002p0
-  },
-  { // Entry 568
-    0x1.7fffffffff2eef6a374f43988bf2b76ep-1073,
-    0x1.8p-1073, 0x1.0000000000003p0
-  },
-  { // Entry 569
-    0x1.7ffffffffee93f3849bf1e16aad74a1dp-1073,
-    0x1.8p-1073, 0x1.0000000000004p0
-  },
-  { // Entry 570
-    0x1.7ffffffffea38f065c2f053a6c85b237p-1073,
-    0x1.8p-1073, 0x1.0000000000005p0
-  },
-  { // Entry 571
-    0x1.000000a0cf65eb1817a7095d9a0443a7p0,
-    0x1.0p-29, -0x1.0p-29
-  },
-  { // Entry 572
-    0x1.ffffff5f309a60aad5c2309f81f90defp-1,
-    0x1.0p-29, 0x1.0p-30
-  },
-  { // Entry 573
-    0x1.fffffd9e07cf07767a55afbe9acae93ep-1,
-    0x1.0p55, -0x1.0p-29
-  },
-  { // Entry 574
-    0x1.000000987e0cc66344d89b494e1f43b3p0,
-    0x1.0p55, 0x1.0p-30
-  },
-  { // Entry 575
-    0x1.fffffd669427cf159515873887c17cf2p-1,
-    0x1.0p60, -0x1.0p-29
-  },
-  { // Entry 576
-    0x1.000000a65af6ae61be88ea2558790cd7p0,
-    0x1.0p60, 0x1.0p-30
-  },
-  { // Entry 577
-    0x1.fffffffffe0000000000fff7ffffffaap-1,
-    0x1.fffffffffffffp-1, 0x1.0p13
-  },
-  { // Entry 578
-    0x1.fffffffff0000000003fffbfffff5557p-1,
-    0x1.fffffffffffffp-1, 0x1.0p16
-  },
-  { // Entry 579
-    0x1.p0,
-    0x1.0p0, 0x1.0p13
-  },
-  { // Entry 580
-    0x1.p0,
-    0x1.0p0, 0x1.0p16
-  },
-  { // Entry 581
-    0x1.00000000020000000001fff000000155p0,
-    0x1.0000000000001p0, 0x1.0p13
-  },
-  { // Entry 582
-    0x1.0000000010000000007fff800002aaa2p0,
-    0x1.0000000000001p0, 0x1.0p16
-  },
-  { // Entry 583
-    0x1.ffffffc0000004000001d5555516aaaap-1,
-    -0x1.0000000000001p0, -0x1.0p25
-  },
-  { // Entry 584
-    0x1.fffffe000000ffffffbaaaaab0000003p-1,
-    -0x1.0000000000001p0, -0x1.0p28
-  },
-  { // Entry 585
-    0x1.p0,
-    -0x1.0p0, -0x1.0p25
-  },
-  { // Entry 586
-    0x1.p0,
-    -0x1.0p0, -0x1.0p28
-  },
-  { // Entry 587
-    0x1.0000001000000080000042aaaaaeb555p0,
-    -0x1.fffffffffffffp-1, -0x1.0p25
-  },
-  { // Entry 588
-    0x1.00000080000020000007555557p0,
-    -0x1.fffffffffffffp-1, -0x1.0p28
-  },
-  { // Entry 589
-    0x1.368b2fc6f960a4c1d9aa628fe3f13fffp-1,
-    -0x1.0000000000001p0, -0x1.0p51
-  },
-  { // Entry 590
-    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
-    -0x1.0000000000001p0, -0x1.0p55
-  },
-  { // Entry 591
-    0x1.p0,
-    -0x1.0p0, -0x1.0p51
-  },
-  { // Entry 592
-    0x1.p0,
-    -0x1.0p0, -0x1.0p55
-  },
-  { // Entry 593
-    0x1.48b5e3c3e81867bf31a77a83c32c4744p0,
-    -0x1.fffffffffffffp-1, -0x1.0p51
-  },
-  { // Entry 594
-    0x1.b4c902e273a5a1c56701e715edaf2115p5,
-    -0x1.fffffffffffffp-1, -0x1.0p55
-  },
-  { // Entry 595
-    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
-    -0x1.0000000000001p0, -0x1.0p55
-  },
-  { // Entry 596
-    0x1.969d47321e4fe7f9bb8c43a5e486b9aep-93,
-    -0x1.0000000000001p0, -0x1.0p58
-  },
-  { // Entry 597
-    0x1.p0,
-    -0x1.0p0, -0x1.0p55
-  },
-  { // Entry 598
-    0x1.p0,
-    -0x1.0p0, -0x1.0p58
-  },
-  { // Entry 599
-    0x1.b4c902e273a5a1c56701e715edaf2115p5,
-    -0x1.fffffffffffffp-1, -0x1.0p55
-  },
-  { // Entry 600
-    0x1.1f43fcc4b663577a45ea9b49cce9ee73p46,
-    -0x1.fffffffffffffp-1, -0x1.0p58
-  },
-  { // Entry 601
-    0x1.44109edb20a756ad767d2515c94a003ap-739,
-    -0x1.0000000000001p0, -0x1.0p61
-  },
-  { // Entry 602
-    0.0,
-    -0x1.0000000000001p0, -0x1.0p64
-  },
-  { // Entry 603
-    0x1.p0,
-    -0x1.0p0, -0x1.0p61
-  },
-  { // Entry 604
-    0x1.p0,
-    -0x1.0p0, -0x1.0p64
-  },
-  { // Entry 605
-    0x1.41c7a8814bf0a801c5353f302a40cc7fp369,
-    -0x1.fffffffffffffp-1, -0x1.0p61
-  },
-  { // Entry 606
-    HUGE_VAL,
-    -0x1.fffffffffffffp-1, -0x1.0p64
-  },
-  { // Entry 607
-    0x1.0000001000000080000042aaaaaeb555p0,
-    0x1.fffffffffffffp-1, -0x1.0p25
-  },
-  { // Entry 608
-    0x1.00000080000020000007555557p0,
-    0x1.fffffffffffffp-1, -0x1.0p28
-  },
-  { // Entry 609
-    0x1.p0,
-    0x1.0p0, -0x1.0p25
-  },
-  { // Entry 610
-    0x1.p0,
-    0x1.0p0, -0x1.0p28
-  },
-  { // Entry 611
-    0x1.ffffffc0000004000001d5555516aaaap-1,
-    0x1.0000000000001p0, -0x1.0p25
-  },
-  { // Entry 612
-    0x1.fffffe000000ffffffbaaaaab0000003p-1,
-    0x1.0000000000001p0, -0x1.0p28
-  },
-  { // Entry 613
-    0x1.48b5e3c3e81867bf31a77a83c32c4744p0,
-    0x1.fffffffffffffp-1, -0x1.0p51
-  },
-  { // Entry 614
-    0x1.b4c902e273a5a1c56701e715edaf2115p5,
-    0x1.fffffffffffffp-1, -0x1.0p55
-  },
-  { // Entry 615
-    0x1.p0,
-    0x1.0p0, -0x1.0p51
-  },
-  { // Entry 616
-    0x1.p0,
-    0x1.0p0, -0x1.0p55
-  },
-  { // Entry 617
-    0x1.368b2fc6f960a4c1d9aa628fe3f13fffp-1,
-    0x1.0000000000001p0, -0x1.0p51
-  },
-  { // Entry 618
-    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
-    0x1.0000000000001p0, -0x1.0p55
-  },
-  { // Entry 619
-    0x1.b4c902e273a5a1c56701e715edaf2115p5,
-    0x1.fffffffffffffp-1, -0x1.0p55
-  },
-  { // Entry 620
-    0x1.1f43fcc4b663577a45ea9b49cce9ee73p46,
-    0x1.fffffffffffffp-1, -0x1.0p58
-  },
-  { // Entry 621
-    0x1.p0,
-    0x1.0p0, -0x1.0p55
-  },
-  { // Entry 622
-    0x1.p0,
-    0x1.0p0, -0x1.0p58
-  },
-  { // Entry 623
-    0x1.5fc21041027b23b05156b8aea8b5e925p-12,
-    0x1.0000000000001p0, -0x1.0p55
-  },
-  { // Entry 624
-    0x1.969d47321e4fe7f9bb8c43a5e486b9aep-93,
-    0x1.0000000000001p0, -0x1.0p58
-  },
-  { // Entry 625
-    0x1.41c7a8814bf0a801c5353f302a40cc7fp369,
-    0x1.fffffffffffffp-1, -0x1.0p61
-  },
-  { // Entry 626
-    HUGE_VAL,
-    0x1.fffffffffffffp-1, -0x1.0p64
-  },
-  { // Entry 627
-    0x1.p0,
-    0x1.0p0, -0x1.0p61
-  },
-  { // Entry 628
-    0x1.p0,
-    0x1.0p0, -0x1.0p64
-  },
-  { // Entry 629
-    0x1.44109edb20a756ad767d2515c94a003ap-739,
-    0x1.0000000000001p0, -0x1.0p61
-  },
-  { // Entry 630
-    0.0,
-    0x1.0000000000001p0, -0x1.0p64
-  },
-  { // Entry 631
-    HUGE_VAL,
-    -0x1.0p15, 0x1.0p63
-  },
-  { // Entry 632
-    HUGE_VAL,
-    0.0, -0x1.8p1
-  },
-  { // Entry 633
-    -HUGE_VAL,
-    -0.0, -0x1.8p1
-  },
-  { // Entry 634
-    HUGE_VAL,
-    0.0, -0x1.0p0
-  },
-  { // Entry 635
-    -HUGE_VAL,
-    -0.0, -0x1.0p0
-  },
-  { // Entry 636
-    HUGE_VAL,
-    0.0, -0x1.fffffffffffffp1023
-  },
-  { // Entry 637
-    HUGE_VAL,
-    0.0, -0x1.8p2
-  },
-  { // Entry 638
-    HUGE_VAL,
-    0.0, -0x1.0p1
-  },
-  { // Entry 639
-    HUGE_VAL,
-    0.0, -0x1.0000000000001p0
-  },
-  { // Entry 640
-    HUGE_VAL,
-    0.0, -0x1.fffffffffffffp-1
-  },
-  { // Entry 641
-    HUGE_VAL,
-    0.0, -0x1.0p-1022
-  },
-  { // Entry 642
-    HUGE_VAL,
-    0.0, -0x1.0p-1074
-  },
-  { // Entry 643
-    HUGE_VAL,
-    -0.0, -0x1.fffffffffffffp1023
-  },
-  { // Entry 644
-    HUGE_VAL,
-    -0.0, -0x1.8p2
-  },
-  { // Entry 645
-    HUGE_VAL,
-    -0.0, -0x1.0p1
-  },
-  { // Entry 646
-    HUGE_VAL,
-    -0.0, -0x1.0000000000001p0
-  },
-  { // Entry 647
-    HUGE_VAL,
-    -0.0, -0x1.fffffffffffffp-1
-  },
-  { // Entry 648
-    HUGE_VAL,
-    -0.0, -0x1.0p-1022
-  },
-  { // Entry 649
-    HUGE_VAL,
-    -0.0, -0x1.0p-1074
-  },
-  { // Entry 650
-    HUGE_VAL,
-    0.0, -HUGE_VAL
-  },
-  { // Entry 651
-    HUGE_VAL,
-    -0.0, -HUGE_VAL
-  },
-  { // Entry 652
-    0.0,
-    0.0, 0x1.8p1
-  },
-  { // Entry 653
-    -0.0,
-    -0.0, 0x1.8p1
-  },
-  { // Entry 654
-    0.0,
-    0.0, 0x1.0p0
-  },
-  { // Entry 655
-    -0.0,
-    -0.0, 0x1.0p0
-  },
-  { // Entry 656
-    0.0,
-    0.0, HUGE_VAL
-  },
-  { // Entry 657
-    0.0,
-    0.0, 0x1.fffffffffffffp1023
-  },
-  { // Entry 658
-    0.0,
-    0.0, 0x1.8p2
-  },
-  { // Entry 659
-    0.0,
-    0.0, 0x1.0p1
-  },
-  { // Entry 660
-    0.0,
-    0.0, 0x1.0000000000001p0
-  },
-  { // Entry 661
-    0.0,
-    0.0, 0x1.fffffffffffffp-1
-  },
-  { // Entry 662
-    0.0,
-    0.0, 0x1.0p-1022
-  },
-  { // Entry 663
-    0.0,
-    0.0, 0x1.0p-1074
-  },
-  { // Entry 664
-    0.0,
-    -0.0, HUGE_VAL
-  },
-  { // Entry 665
-    0.0,
-    -0.0, 0x1.fffffffffffffp1023
-  },
-  { // Entry 666
-    0.0,
-    -0.0, 0x1.8p2
-  },
-  { // Entry 667
-    0.0,
-    -0.0, 0x1.0p1
-  },
-  { // Entry 668
-    0.0,
-    -0.0, 0x1.0000000000001p0
-  },
-  { // Entry 669
-    0.0,
-    -0.0, 0x1.fffffffffffffp-1
-  },
-  { // Entry 670
-    0.0,
-    -0.0, 0x1.0p-1022
-  },
-  { // Entry 671
-    0.0,
-    -0.0, 0x1.0p-1074
-  },
-  { // Entry 672
-    0x1.p0,
-    -0x1.0p0, HUGE_VAL
-  },
-  { // Entry 673
-    0x1.p0,
-    -0x1.0p0, -HUGE_VAL
-  },
-  { // Entry 674
-    0x1.p0,
-    0x1.0p0, HUGE_VAL
-  },
-  { // Entry 675
-    0x1.p0,
-    0x1.0p0, -HUGE_VAL
-  },
-  { // Entry 676
-    0x1.p0,
-    0x1.0p0, 0x1.fffffffffffffp1023
-  },
-  { // Entry 677
-    0x1.p0,
-    0x1.0p0, -0x1.fffffffffffffp1023
-  },
-  { // Entry 678
-    0x1.p0,
-    -0x1.0p0, 0x1.fffffffffffffp1023
-  },
-  { // Entry 679
-    0x1.p0,
-    -0x1.0p0, -0x1.fffffffffffffp1023
-  },
-  { // Entry 680
-    0x1.p0,
-    0x1.0p0, 0x1.0p-1
-  },
-  { // Entry 681
-    0x1.p0,
-    0x1.0p0, -0x1.0p-1
-  },
-  { // Entry 682
-    0x1.p0,
-    0x1.0p0, 0x1.0p-1022
-  },
-  { // Entry 683
-    0x1.p0,
-    0x1.0p0, -0x1.0p-1022
-  },
-  { // Entry 684
-    0x1.p0,
-    0x1.0p0, 0x1.ffffffffffffep-1023
-  },
-  { // Entry 685
-    0x1.p0,
-    0x1.0p0, -0x1.ffffffffffffep-1023
-  },
-  { // Entry 686
-    0x1.p0,
-    0x1.0p0, 0x1.0p-1074
-  },
-  { // Entry 687
-    0x1.p0,
-    0x1.0p0, -0x1.0p-1074
-  },
-  { // Entry 688
-    0x1.p0,
-    0x1.0p0, 0.0
-  },
-  { // Entry 689
-    0x1.p0,
-    0x1.0p0, -0.0
-  },
-  { // Entry 690
-    0x1.p0,
-    HUGE_VAL, 0.0
-  },
-  { // Entry 691
-    0x1.p0,
-    HUGE_VAL, -0.0
-  },
-  { // Entry 692
-    0x1.p0,
-    0x1.fffffffffffffp1023, 0.0
-  },
-  { // Entry 693
-    0x1.p0,
-    0x1.fffffffffffffp1023, -0.0
-  },
-  { // Entry 694
-    0x1.p0,
-    0x1.0p-1022, 0.0
-  },
-  { // Entry 695
-    0x1.p0,
-    0x1.0p-1022, -0.0
-  },
-  { // Entry 696
-    0x1.p0,
-    0x1.0p-1074, 0.0
-  },
-  { // Entry 697
-    0x1.p0,
-    0x1.0p-1074, -0.0
-  },
-  { // Entry 698
-    0x1.p0,
-    0.0, 0.0
-  },
-  { // Entry 699
-    0x1.p0,
-    0.0, -0.0
-  },
-  { // Entry 700
-    0x1.p0,
-    -0.0, 0.0
-  },
-  { // Entry 701
-    0x1.p0,
-    -0.0, -0.0
-  },
-  { // Entry 702
-    0x1.p0,
-    -0x1.0p-1074, 0.0
-  },
-  { // Entry 703
-    0x1.p0,
-    -0x1.0p-1074, -0.0
-  },
-  { // Entry 704
-    0x1.p0,
-    -0x1.0p-1022, 0.0
-  },
-  { // Entry 705
-    0x1.p0,
-    -0x1.0p-1022, -0.0
-  },
-  { // Entry 706
-    0x1.p0,
-    -0x1.fffffffffffffp1023, 0.0
-  },
-  { // Entry 707
-    0x1.p0,
-    -0x1.fffffffffffffp1023, -0.0
-  },
-  { // Entry 708
-    0x1.p0,
-    -HUGE_VAL, 0.0
-  },
-  { // Entry 709
-    0x1.p0,
-    -HUGE_VAL, -0.0
-  },
-  { // Entry 710
-    HUGE_VAL,
-    0x1.0p-1022, -HUGE_VAL
-  },
-  { // Entry 711
-    HUGE_VAL,
-    0x1.0p-1074, -HUGE_VAL
-  },
-  { // Entry 712
-    HUGE_VAL,
-    -0x1.0p-1074, -HUGE_VAL
-  },
-  { // Entry 713
-    HUGE_VAL,
-    -0x1.0p-1022, -HUGE_VAL
-  },
-  { // Entry 714
-    0.0,
-    HUGE_VAL, -HUGE_VAL
-  },
-  { // Entry 715
-    0.0,
-    0x1.fffffffffffffp1023, -HUGE_VAL
-  },
-  { // Entry 716
-    0.0,
-    0x1.8p0, -HUGE_VAL
-  },
-  { // Entry 717
-    0.0,
-    -0x1.8p0, -HUGE_VAL
-  },
-  { // Entry 718
-    0.0,
-    -0x1.fffffffffffffp1023, -HUGE_VAL
-  },
-  { // Entry 719
-    0.0,
-    -HUGE_VAL, -HUGE_VAL
-  },
-  { // Entry 720
-    0.0,
-    0x1.0p-1022, HUGE_VAL
-  },
-  { // Entry 721
-    0.0,
-    0x1.0p-1074, HUGE_VAL
-  },
-  { // Entry 722
-    0.0,
-    0.0, HUGE_VAL
-  },
-  { // Entry 723
-    0.0,
-    -0.0, HUGE_VAL
-  },
-  { // Entry 724
-    0.0,
-    -0x1.0p-1074, HUGE_VAL
-  },
-  { // Entry 725
-    0.0,
-    -0x1.0p-1022, HUGE_VAL
-  },
-  { // Entry 726
-    HUGE_VAL,
-    HUGE_VAL, HUGE_VAL
-  },
-  { // Entry 727
-    HUGE_VAL,
-    0x1.fffffffffffffp1023, HUGE_VAL
-  },
-  { // Entry 728
-    HUGE_VAL,
-    0x1.8p0, HUGE_VAL
-  },
-  { // Entry 729
-    HUGE_VAL,
-    -0x1.8p0, HUGE_VAL
-  },
-  { // Entry 730
-    HUGE_VAL,
-    -0x1.fffffffffffffp1023, HUGE_VAL
-  },
-  { // Entry 731
-    HUGE_VAL,
-    -HUGE_VAL, HUGE_VAL
-  },
-  { // Entry 732
-    -0.0,
-    -HUGE_VAL, -0x1.8p1
-  },
-  { // Entry 733
-    -0.0,
-    -HUGE_VAL, -0x1.0p0
-  },
-  { // Entry 734
-    0.0,
-    -HUGE_VAL, -HUGE_VAL
-  },
-  { // Entry 735
-    0.0,
-    -HUGE_VAL, -0x1.921fb54442d18p1
-  },
-  { // Entry 736
-    0.0,
-    -HUGE_VAL, -0x1.921fb54442d18p0
-  },
-  { // Entry 737
-    0.0,
-    -HUGE_VAL, -0x1.fffffffffffffp1023
-  },
-  { // Entry 738
-    0.0,
-    -HUGE_VAL, -0x1.8p2
-  },
-  { // Entry 739
-    0.0,
-    -HUGE_VAL, -0x1.0p1
-  },
-  { // Entry 740
-    0.0,
-    -HUGE_VAL, -0x1.0p-1022
-  },
-  { // Entry 741
-    0.0,
-    -HUGE_VAL, -0x1.0p-1074
-  },
-  { // Entry 742
-    -HUGE_VAL,
-    -HUGE_VAL, 0x1.8p1
-  },
-  { // Entry 743
-    -HUGE_VAL,
-    -HUGE_VAL, 0x1.4p2
-  },
-  { // Entry 744
-    HUGE_VAL,
-    -HUGE_VAL, HUGE_VAL
-  },
-  { // Entry 745
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.921fb54442d18p1
-  },
-  { // Entry 746
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.921fb54442d18p0
-  },
-  { // Entry 747
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.fffffffffffffp1023
-  },
-  { // Entry 748
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.8p2
-  },
-  { // Entry 749
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.0p1
-  },
-  { // Entry 750
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.0p-1022
-  },
-  { // Entry 751
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.0p-1074
-  },
-  { // Entry 752
-    0.0,
-    HUGE_VAL, -0x1.0p-1074
-  },
-  { // Entry 753
-    0.0,
-    HUGE_VAL, -0x1.0p-1022
-  },
-  { // Entry 754
-    0.0,
-    HUGE_VAL, -0x1.fffffffffffffp1023
-  },
-  { // Entry 755
-    0.0,
-    HUGE_VAL, -HUGE_VAL
-  },
-  { // Entry 756
-    HUGE_VAL,
-    HUGE_VAL, HUGE_VAL
-  },
-  { // Entry 757
-    HUGE_VAL,
-    HUGE_VAL, 0x1.fffffffffffffp1023
-  },
-  { // Entry 758
-    HUGE_VAL,
-    HUGE_VAL, 0x1.0p-1022
-  },
-  { // Entry 759
-    HUGE_VAL,
-    HUGE_VAL, 0x1.0p-1074
-  },
-  { // Entry 760
-    HUGE_VAL,
-    0x1.fffffffffffffp1023, 0x1.fffffffffffffp1023
-  },
-  { // Entry 761
-    0.0,
-    0x1.0p-1022, 0x1.0p1
-  },
-  { // Entry 762
-    0.0,
-    -0x1.0p-1022, 0x1.0p1
-  },
-  { // Entry 763
-    0.0,
-    0x1.0p-1074, 0x1.0p1
-  },
-  { // Entry 764
-    0.0,
-    -0x1.0p-1074, 0x1.0p1
-  },
-  { // Entry 765
-    HUGE_VAL,
-    HUGE_VAL, 0x1.0p-1
-  },
-  { // Entry 766
-    0x1.fffffffffffff7ffffffffffffefffffp511,
-    0x1.fffffffffffffp1023, 0x1.0p-1
-  },
-  { // Entry 767
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
-    0x1.0p-1, 0x1.0p-1
-  },
-  { // Entry 768
-    0x1.p-511,
-    0x1.0p-1022, 0x1.0p-1
-  },
-  { // Entry 769
-    0x1.p-537,
-    0x1.0p-1074, 0x1.0p-1
-  },
-  { // Entry 770
-    0.0,
-    0.0, 0x1.0p-1
-  },
-  { // Entry 771
-    0.0,
-    -0.0, 0x1.0p-1
-  },
-  { // Entry 772
-    HUGE_VAL,
-    -HUGE_VAL, 0x1.0p-1
-  },
-  { // Entry 773
-    0.0,
-    HUGE_VAL, -0x1.0p-1
-  },
-  { // Entry 774
-    0x1.0000000000000400000000000018p-512,
-    0x1.fffffffffffffp1023, -0x1.0p-1
-  },
-  { // Entry 775
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.0p-1, -0x1.0p-1
-  },
-  { // Entry 776
-    0x1.p511,
-    0x1.0p-1022, -0x1.0p-1
-  },
-  { // Entry 777
-    0x1.p537,
-    0x1.0p-1074, -0x1.0p-1
-  },
-  { // Entry 778
-    HUGE_VAL,
-    0.0, -0x1.0p-1
-  },
-  { // Entry 779
-    HUGE_VAL,
-    -0.0, -0x1.0p-1
-  },
-  { // Entry 780
-    0.0,
-    -HUGE_VAL, -0x1.0p-1
-  },
-  { // Entry 781
-    0.0,
-    0x1.0p-1, HUGE_VAL
-  },
-  { // Entry 782
-    0.0,
-    0x1.0p-1, 0x1.fffffffffffffp1023
-  },
-  { // Entry 783
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
-    0x1.0p-1, 0x1.0p-1
-  },
-  { // Entry 784
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1, 0x1.0p-1022
-  },
-  { // Entry 785
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1, 0x1.0p-1074
-  },
-  { // Entry 786
-    0x1.p0,
-    0x1.0p-1, 0.0
-  },
-  { // Entry 787
-    0x1.p0,
-    0x1.0p-1, -0.0
-  },
-  { // Entry 788
-    0x1.p0,
-    0x1.0p-1, -0x1.0p-1074
-  },
-  { // Entry 789
-    0x1.p0,
-    0x1.0p-1, -0x1.0p-1022
-  },
-  { // Entry 790
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.0p-1, -0x1.0p-1
-  },
-  { // Entry 791
-    HUGE_VAL,
-    0x1.0p-1, -0x1.fffffffffffffp1023
-  },
-  { // Entry 792
-    HUGE_VAL,
-    0x1.0p-1, -HUGE_VAL
-  },
-  { // Entry 793
-    0.0,
-    -0x1.0p-1, HUGE_VAL
-  },
-  { // Entry 794
-    0.0,
-    -0x1.0p-1, 0x1.fffffffffffffp1023
-  },
-  { // Entry 795
-    0x1.p0,
-    -0x1.0p-1, 0.0
-  },
-  { // Entry 796
-    0x1.p0,
-    -0x1.0p-1, -0.0
-  },
-  { // Entry 797
-    HUGE_VAL,
-    -0x1.0p-1, -0x1.fffffffffffffp1023
-  },
-  { // Entry 798
-    HUGE_VAL,
-    -0x1.0p-1, -HUGE_VAL
-  },
-  { // Entry 799
-    0x1.p1,
-    0x1.0p2, 0x1.0p-1
-  },
-  { // Entry 800
-    0x1.80p1,
-    0x1.2p3, 0x1.0p-1
-  },
-  { // Entry 801
-    0x1.p2,
-    0x1.0p4, 0x1.0p-1
-  },
-  { // Entry 802
-    0x1.p-1,
-    0x1.0p2, -0x1.0p-1
-  },
-  { // Entry 803
-    0x1.p-2,
-    0x1.0p4, -0x1.0p-1
-  },
-  { // Entry 804
-    0x1.p-3,
-    0x1.0p6, -0x1.0p-1
-  },
-  { // Entry 805
-    HUGE_VAL,
-    0x1.fffffffffffffp-1, -0x1.74910d52d3052p62
-  },
-  { // Entry 806
-    0.0,
-    0x1.fffffffffffffp-1, 0x1.74910d52d3052p62
-  },
-  { // Entry 807
-    0x1.p2,
-    0x1.0p1, 0x1.0p1
-  },
-  { // Entry 808
-    0x1.p-2,
-    0x1.0p1, -0x1.0p1
-  },
-  { // Entry 809
-    0x1.p2,
-    -0x1.0p1, 0x1.0p1
-  },
-  { // Entry 810
-    0x1.p-2,
-    -0x1.0p1, -0x1.0p1
-  },
-  { // Entry 811
-    0x1.b0p4,
-    0x1.8p1, 0x1.8p1
-  },
-  { // Entry 812
-    0x1.86a0p11,
-    0x1.4p2, 0x1.4p2
-  },
-  { // Entry 813
-    0x1.921ee0p19,
-    0x1.cp2, 0x1.cp2
-  },
-  { // Entry 814
-    0x1.2a05f2p33,
-    0x1.4p3, 0x1.4p3
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_pow, pow_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_pow_intel_data)/sizeof(pow_intel_data_t); i++) {
-    EXPECT_DOUBLE_EQ(g_pow_intel_data[i].expected, pow(g_pow_intel_data[i].x_call_data, g_pow_intel_data[i].y_call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_powf_test.cpp b/tests/math_powf_test.cpp
deleted file mode 100644
index f77b23a..0000000
--- a/tests/math_powf_test.cpp
+++ /dev/null
@@ -1,2788 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  float expected;
-  float x_call_data;
-  float y_call_data;
-} powf_intel_data_t;
-
-static powf_intel_data_t g_powf_intel_data[] = {
-  { // Entry 0
-    HUGE_VALF,
-    -0.0, -0x1.000002p-1
-  },
-  { // Entry 1
-    0.0f,
-    -0x1.p-5, 0x1.e0p4
-  },
-  { // Entry 2
-    -0.0f,
-    -0x1.p-30, 0x1.40p2
-  },
-  { // Entry 3
-    0x1.p0,
-    -0x1.p0, 0x1.000002p32
-  },
-  { // Entry 4
-    0x1.p0,
-    -0x1.000002p-41, 0.0
-  },
-  { // Entry 5
-    0x1.d1a029128778fca3f9a261be1cb86be7p-121,
-    -0x1.000006p0, -0x1.bc1ee2p27
-  },
-  { // Entry 6
-    0x1.da6e3ff202da752de523f9846303c0b5p-124,
-    -0x1.00000ap0, -0x1.111112p27
-  },
-  { // Entry 7
-    0x1.eb70a2fbb8b2489b8d838eb65ed676acp-91,
-    -0x1.00000ap0, -0x1.8f83e4p26
-  },
-  { // Entry 8
-    HUGE_VALF,
-    -0x1.000028p0, 0x1.20p44
-  },
-  { // Entry 9
-    0x1.002001p-4,
-    -0x1.0010p-2, 0x1.p1
-  },
-  { // Entry 10
-    0x1.002001p-82,
-    -0x1.0010p-41, 0x1.p1
-  },
-  { // Entry 11
-    0x1.004004p-82,
-    -0x1.0020p-41, 0x1.p1
-  },
-  { // Entry 12
-    0x1.006009p-12,
-    -0x1.0030p-6, 0x1.p1
-  },
-  { // Entry 13
-    -0x1.fb859adbdb7df6974c5c9a5489e6972ap53,
-    -0x1.0040p-6, -0x1.20p3
-  },
-  { // Entry 14
-    0x1.008010p-82,
-    -0x1.0040p-41, 0x1.p1
-  },
-  { // Entry 15
-    0x1.00e031p-40,
-    -0x1.0070p-20, 0x1.p1
-  },
-  { // Entry 16
-    0x1.31e452ffffec96a3d5a882fe244f8c63p-1,
-    -0x1.046ef4p0, -0x1.e0p4
-  },
-  { // Entry 17
-    0x1.33e8f304p-36,
-    -0x1.08p-6, 0x1.80p2
-  },
-  { // Entry 18
-    0x1.d82001fe9d6bdbba98638def8d37e50bp-124,
-    -0x1.1ec38cp0, -0x1.78p9
-  },
-  { // Entry 19
-    -0x1.45f3bdeaa5f60d121c3fa751dbd758adp36,
-    -0x1.bffffep-6, -0x1.c0p2
-  },
-  { // Entry 20
-    0x1.df41ae7ef4e15e8ad45c7293ddc3fe7dp61,
-    -0x1.fffffap-1, -0x1.c9b244p27
-  },
-  { // Entry 21
-    0x1.df46f26f1f129a54922022f9b653a99fp61,
-    -0x1.fffffap-1, -0x1.c9b262p27
-  },
-  { // Entry 22
-    -0x1.00000300000900001b0000510000f3p21,
-    -0x1.fffffap-22, -0x1.p0
-  },
-  { // Entry 23
-    -0x1.00000300000900001b0000510000f3p-99,
-    -0x1.fffffap98, -0x1.p0
-  },
-  { // Entry 24
-    -0x1.78b55ef8aecb0b7c5b8865e27157d824p-2,
-    -0x1.fffffcp-1, 0x1.000002p23
-  },
-  { // Entry 25
-    -0x1.fffffep-41,
-    -0x1.fffffep-41, 0x1.p0
-  },
-  { // Entry 26
-    0x1.p71,
-    0x1.p-2, -0x1.1cp5
-  },
-  { // Entry 27
-    0x1.d580710e38463c3dd62fce98f203b471p-1,
-    0x1.p-2, 0x1.0007p-4
-  },
-  { // Entry 28
-    0x1.p-15,
-    0x1.p-2, 0x1.e0p2
-  },
-  { // Entry 29
-    0.0f,
-    0x1.p-3, 0x1.8ffffep5
-  },
-  { // Entry 30
-    0x1.p-40,
-    0x1.p-5, 0x1.p3
-  },
-  { // Entry 31
-    0x1.p40,
-    0x1.p-10, -0x1.p2
-  },
-  { // Entry 32
-    0x1.ecfff0b449d7c9a5d494c884c717f9cdp-88,
-    0x1.p-144, 0x1.3586fep-1
-  },
-  { // Entry 33
-    0x1.ecfff0b449d7c9a5d494c884c717f9cdp-106,
-    0x1.p-144, 0x1.7586fep-1
-  },
-  { // Entry 34
-    HUGE_VALF,
-    0x1.p-149, -0x1.ccacccp-1
-  },
-  { // Entry 35
-    HUGE_VALF,
-    0x1.p-149, -0x1.e6e666p-1
-  },
-  { // Entry 36
-    0x1.e8e101355bd975bfec3fb5ed3757777dp-1,
-    0x1.000002p-2, 0x1.1111p-5
-  },
-  { // Entry 37
-    0x1.ddb64347a55e452ed04d6a173ca5b56cp99,
-    0x1.000002p-111, -0x1.ccccccp-1
-  },
-  { // Entry 38
-    0x1.558e990004a8ebb3e8176275ba9f1052p52,
-    0x1.000002p-112, -0x1.df3b5ap-2
-  },
-  { // Entry 39
-    0x1.fffffd0000053ffff66000120bffddb6p92,
-    0x1.000002p-124, -0x1.80p-1
-  },
-  { // Entry 40
-    0x1.fffffffffff800000800000555554555p-1,
-    0x1.000002p0, -0x1.p-23
-  },
-  { // Entry 41
-    0x1.fffffffffff9000007000002eaaaa02ap-1,
-    0x1.000002p0, -0x1.c0p-24
-  },
-  { // Entry 42
-    0x1.ddb6530d485b7badb441a4460ca54c62p9,
-    0x1.000002p11, 0x1.ccccc6p-1
-  },
-  { // Entry 43
-    0x1.d901790cd9d1b9d8cdf616296479022fp-14,
-    0x1.000002p17, -0x1.8af8b0p-1
-  },
-  { // Entry 44
-    0x1.e6d3f90d414447b2f2467d4c214496bdp30,
-    0x1.000002p42, 0x1.7904a4p-1
-  },
-  { // Entry 45
-    0x1.000012ffffd68004fa7fb159108ec97dp0,
-    0x1.00001cp0, 0x1.5b6dbap-1
-  },
-  { // Entry 46
-    0x1.d174810e1e4527f011547dfc4dc6b48cp-3,
-    0x1.00001cp3, -0x1.6ccccep-1
-  },
-  { // Entry 47
-    0x1.d581970e8b4ccc9dbc28899bd1848e24p-1,
-    0x1.00002ep-2, 0x1.ffffcep-5
-  },
-  { // Entry 48
-    0x1.000455000312cc6e79ced653c38d7e2ap0,
-    0x1.000038p-50, -0x1.fff77ep-20
-  },
-  { // Entry 49
-    0x1.00480900a807e03f01500480090008p-81,
-    0x1.0008p-9, 0x1.20p3
-  },
-  { // Entry 50
-    0x1.ffc004ffb0045fc8029fe20149f2408ep39,
-    0x1.0008p-10, -0x1.p2
-  },
-  { // Entry 51
-    0x1.fec1bb35b5a826526101adab0695d1d3p-1,
-    0x1.00e0p0, -0x1.6ccccep-1
-  },
-  { // Entry 52
-    0x1.fadbde187acba5b3a6c4cde78e1bbb4ap45,
-    0x1.01fffcp0, 0x1.p12
-  },
-  { // Entry 53
-    0x1.ff1fb6ff79a5e0391b1d7dfb14de7de6p22,
-    0x1.01fffep0, 0x1.000cb6p11
-  },
-  { // Entry 54
-    0x1.6cbbc2fff64c73aab0033df757f3808dp11,
-    0x1.0220p0, 0x1.e295f2p9
-  },
-  { // Entry 55
-    0x1.f81f5312ba449421bd9393ad8df53aaep-1,
-    0x1.04p0, -0x1.0006p0
-  },
-  { // Entry 56
-    0x1.ffe88affffff33e933cfaad5f0ee2678p-1,
-    0x1.08c7eep-16, 0x1.0f94b2p-16
-  },
-  { // Entry 57
-    0x1.0000dcffffc6fee7e4aac09a3d9fb9a1p0,
-    0x1.0ep-20, -0x1.000cdcp-20
-  },
-  { // Entry 58
-    0x1.70ce05e629803c0ca47482392a882debp-3,
-    0x1.0ep3, -0x1.9b91bap-1
-  },
-  { // Entry 59
-    0x1.5a8926e473f6148a5a383bfa1ed0b335p-90,
-    0x1.0ffffep0, -0x1.0000fep10
-  },
-  { // Entry 60
-    0x1.8ec5b2e1606728f21cf2c90c2e4d2a9bp-93,
-    0x1.0ffffep0, -0x1.07fffep10
-  },
-  { // Entry 61
-    0x1.a47dd4ffffe25486314351413837b2fdp4,
-    0x1.1624p-4, -0x1.3720c0p0
-  },
-  { // Entry 62
-    0x1.442401p0,
-    0x1.2010p0, 0x1.p1
-  },
-  { // Entry 63
-    0x1.e7aaf2ffffbce86a4fd2cf9cb53d7e55p-1,
-    0x1.253264p0, -0x1.6f826ep-2
-  },
-  { // Entry 64
-    0x1.4d63290052d4d2d894b4635cb9b98130p-39,
-    0x1.2711c8p-6, 0x1.aa804ep2
-  },
-  { // Entry 65
-    0x1.b20168da0fc1fca6d3c1b8c23fdcaf39p49,
-    0x1.2aaaaap-1, -0x1.fff1fep5
-  },
-  { // Entry 66
-    0x1.ee26c12ebf5b649bef95484ece113007p2,
-    0x1.2f7dc0p-23, -0x1.0967c0p-3
-  },
-  { // Entry 67
-    0x1.bc90590000002ee11763c6fe2418730cp-2,
-    0x1.334478p-2, 0x1.62e42ep-1
-  },
-  { // Entry 68
-    0x1.8c8c8300308cee7c1a41b09294323cfbp-82,
-    0x1.3ffffep-1, 0x1.e0p6
-  },
-  { // Entry 69
-    0x1.643d4efffe606e056e4035b0becc20fdp-5,
-    0x1.3ffffep-40, 0x1.d2f190p-4
-  },
-  { // Entry 70
-    0x1.f8148914d4ea3af94ee724572f2ee8ffp-1,
-    0x1.41d420p20, -0x1.22p-10
-  },
-  { // Entry 71
-    0x1.cd6e9100038c93a7dce72a113ca56c70p-2,
-    0x1.443a42p-2, 0x1.62e42ep-1
-  },
-  { // Entry 72
-    0x1.f895910f392f3b8fcc641ae87164d684p-1,
-    0x1.45a2a8p1, -0x1.p-6
-  },
-  { // Entry 73
-    0x1.e3dff8fff6e9efd4f167a7b91eb882afp-1,
-    0x1.45d174p-1, 0x1.00001cp-3
-  },
-  { // Entry 74
-    0x1.d332f0fffc83128a7fc7bd56be27e755p-2,
-    0x1.4a1704p-2, 0x1.62e42ep-1
-  },
-  { // Entry 75
-    0x1.d5ae790003cb17cf83deb5e2cc0ea01cp-2,
-    0x1.4c9f94p-2, 0x1.62e42ep-1
-  },
-  { // Entry 76
-    0x1.ca8ec6ed5df39f991f808d94dd5c8834p88,
-    0x1.4e9cc2p-30, -0x1.80p1
-  },
-  { // Entry 77
-    0x1.d9b648fffc167ed8b917b64f747e6270p-2,
-    0x1.50bfc8p-2, 0x1.62e42ep-1
-  },
-  { // Entry 78
-    0x1.da95070001a3799fee02ea034357a8c2p-2,
-    0x1.51a450p-2, 0x1.62e42ep-1
-  },
-  { // Entry 79
-    0x1.fe957b38c5b6959bb0ea80e43c709ecap-1,
-    0x1.679286p-11, 0x1.8ea824p-12
-  },
-  { // Entry 80
-    0x1.aca91b5f3882f36dcdab2a8d641c0ab5p-56,
-    0x1.745d18p-4, 0x1.ff1ffep3
-  },
-  { // Entry 81
-    0x1.f82eb711ff0066ee591658258b692331p-1,
-    0x1.77fffep-120, 0x1.85bc7ap-13
-  },
-  { // Entry 82
-    0x1.d98c8300003e83fd25b95381f702161cp-1,
-    0x1.7a3d0ep0, -0x1.99999ap-3
-  },
-  { // Entry 83
-    0x1.f82cef13a11a5f5a0562fe52c88207bdp-1,
-    0x1.7c9a16p-2, 0x1.fddffep-7
-  },
-  { // Entry 84
-    0x1.d0d014fffe715e2732b6d1ced96adb76p19,
-    0x1.7e9bb0p-8, -0x1.569828p1
-  },
-  { // Entry 85
-    0x1.8518e2fffdea301062ac6a29c6e53df6p-1,
-    0x1.851ebap-1, 0x1.000ep0
-  },
-  { // Entry 86
-    0x1.2da1e8fffe1350e4daf5553e75dca020p-4,
-    0x1.861862p-4, 0x1.1cp0
-  },
-  { // Entry 87
-    0x1.dd037a2c561bfe1824p-11,
-    0x1.8ce632p-4, 0x1.80p1
-  },
-  { // Entry 88
-    0x1.f81fa713d2b23eac52a36f4b3a33023ep-1,
-    0x1.8f86aap-1, 0x1.0000e0p-4
-  },
-  { // Entry 89
-    0x1.03f14b095ae687525a7e377e3505e587p0,
-    0x1.90p5, 0x1.0008p-8
-  },
-  { // Entry 90
-    0x1.36395100005cc4113b220d6ce672e165p0,
-    0x1.95578ep1, 0x1.555556p-3
-  },
-  { // Entry 91
-    0x1.f83249134e77a21bf811350c6a931beep-1,
-    0x1.98p5, -0x1.000002p-8
-  },
-  { // Entry 92
-    0x1.9f628b3cfd06f417f86e1ca8edc1469ep117,
-    0x1.99999cp3, 0x1.p5
-  },
-  { // Entry 93
-    0x1.d4851ccedafdd1cbc79a6a6b3dbb1cbep119,
-    0x1.9a66d0p-14, -0x1.20p3
-  },
-  { // Entry 94
-    0x1.2536270001fab70a29d68e60feb11211p-11,
-    0x1.9ffffep41, -0x1.094f1cp-2
-  },
-  { // Entry 95
-    0x1.d08ae8fffdc7029e0bd02c871606a01cp0,
-    0x1.a57becp1, 0x1.p-1
-  },
-  { // Entry 96
-    0x1.b83638ffb21561a23ec9b8a7b0ba7b52p15,
-    0x1.aaaaaep-1, -0x1.e0p5
-  },
-  { // Entry 97
-    0x1.c198860000001c1cee146e451365eae1p-10,
-    0x1.ad1d1cp-14, 0x1.62e42ep-1
-  },
-  { // Entry 98
-    0x1.cd0c6eefc33dfc2ef3d2beb81ad568cap30,
-    0x1.b13b1cp-1, -0x1.ffff1ep6
-  },
-  { // Entry 99
-    0x1.6228e4fef882769ba040164fc4bca0cbp-81,
-    0x1.b7ffd8p-1, 0x1.705394p8
-  },
-  { // Entry 100
-    0x1.ae9d756c84b4063f238dd151bec30e0bp-99,
-    0x1.be0d7cp-1, 0x1.ede448p8
-  },
-  { // Entry 101
-    0x1.913f68f101ebe490d29d873d1e0fd828p-85,
-    0x1.be0f70p-1, 0x1.a8147ap8
-  },
-  { // Entry 102
-    0x1.b1e7215c128082aab49edab1641919a8p-99,
-    0x1.be0f70p-1, 0x1.ede5d8p8
-  },
-  { // Entry 103
-    0x1.dc574183f03d7a333c18fc6916daa859p-96,
-    0x1.bff0d0p-1, 0x1.ed2fb4p8
-  },
-  { // Entry 104
-    0x1.da6fcd00020da659e4a50ba993a71d92p6,
-    0x1.bffffep1, 0x1.e7f782p1
-  },
-  { // Entry 105
-    HUGE_VALF,
-    0x1.c25c26p-44, -0x1.40p3
-  },
-  { // Entry 106
-    0x1.951dfaf0d0341097e50f8d51fb5b0b2ap-72,
-    0x1.c4ec74p-1, 0x1.935234p8
-  },
-  { // Entry 107
-    0x1.fb1c6cfffef199884e78c26fef057fc3p4,
-    0x1.c76380p0, 0x1.80087cp2
-  },
-  { // Entry 108
-    0x1.d82d7dffffefc26e1f09e6d73a276d81p-10,
-    0x1.cc8d06p-14, 0x1.62e42ep-1
-  },
-  { // Entry 109
-    0x1.997e0eef7bb3d4eda40dc43c72a53167p-70,
-    0x1.d1cdccp-1, 0x1.fc2640p8
-  },
-  { // Entry 110
-    0x1.fe82dd381a8d3056a4c554f1e1764f9dp-1,
-    0x1.d40a66p-3, 0x1.02964cp-9
-  },
-  { // Entry 111
-    0x1.f3ab1937169c9ab7aac67b94894ede10p-1,
-    0x1.d55552p-2, 0x1.000038p-5
-  },
-  { // Entry 112
-    0x1.fe805f37b89bc0c8b0163db7c11f48f2p-1,
-    0x1.da12f0p-1, 0x1.38p-5
-  },
-  { // Entry 113
-    0x1.c27937000f6c15a86f8eb042a0895566p-73,
-    0x1.df0a82p-1, 0x1.77fbc0p9
-  },
-  { // Entry 114
-    0x1.c64b0d000027dbefa1e3233ef53619b7p105,
-    0x1.dffffep52, 0x1.00087cp1
-  },
-  { // Entry 115
-    0x1.0847b080e10a3f33ba599a218b630ffbp0,
-    0x1.e06b8cp-1, -0x1.p-1
-  },
-  { // Entry 116
-    0x1.eff5716fa057c0db02972e5b51a95899p-1,
-    0x1.e06b8cp-1, 0x1.p-1
-  },
-  { // Entry 117
-    0x1.083f7f587cdb6cc005ee70abb128067cp0,
-    0x1.e08956p-1, -0x1.p-1
-  },
-  { // Entry 118
-    0x1.f004d186653df746f46ac1da51e68817p-1,
-    0x1.e08956p-1, 0x1.p-1
-  },
-  { // Entry 119
-    0x1.2e78986ce71690689a17b09e2fd01256p0,
-    0x1.e0ee8ap-1, -0x1.5515p1
-  },
-  { // Entry 120
-    0x1.34e306ebdacb3fb249efb92c5df50a30p0,
-    0x1.e0ee8ap-1, -0x1.80p1
-  },
-  { // Entry 121
-    0x1.1a22a2b284843cef729aa7923200616bp0,
-    0x1.e0ee8ap-1, -0x1.8d89d8p0
-  },
-  { // Entry 122
-    0x1.1d8befed03f9ed8d628e72acfd5846f2p0,
-    0x1.e0ee8ap-1, -0x1.beb050p0
-  },
-  { // Entry 123
-    0x1.e9e518fb1617eceb976b420930a3ce51p-1,
-    0x1.e0ee8ap-1, 0x1.68f880p-1
-  },
-  { // Entry 124
-    0x1.a0bdbae7d1b95d1adb05939aefcd35f2p-93,
-    0x1.e13d0ep-1, 0x1.0220p10
-  },
-  { // Entry 125
-    0x1.8789269c3d7361f6464f369baecd358fp-90,
-    0x1.e1f07ep-1, 0x1.p10
-  },
-  { // Entry 126
-    0x1.f67dcb0d034ec28a4309c4415565f9ecp1,
-    0x1.e4000ep5, 0x1.55555ap-2
-  },
-  { // Entry 127
-    0x1.e65785986fb7af1219234980dca4ef34p-93,
-    0x1.e6f314p-1, 0x1.3e0f80p10
-  },
-  { // Entry 128
-    0x1.e9a57691f06acbd3893901e376830537p-125,
-    0x1.e97470p-1, 0x1.dd67c0p10
-  },
-  { // Entry 129
-    0x1.866ec900017d689ca5deb18c4769effbp-2,
-    0x1.f040c8p-1, 0x1.eddbacp4
-  },
-  { // Entry 130
-    0x1.f839d5101bcf305e04c187afb53a6c53p-1,
-    0x1.f091e2p-1, 0x1.p-1
-  },
-  { // Entry 131
-    0x1.a374c2b00b62172cd4678df5e503b6f1p-13,
-    0x1.f60c04p-14, 0x1.e2e42ep-1
-  },
-  { // Entry 132
-    0x1.f8479b115561f17028b236fb8f2c173fp-1,
-    0x1.ff174ap-1, 0x1.119996p3
-  },
-  { // Entry 133
-    0x1.f947cf0debb3f5149df66e08396f65c5p3,
-    0x1.ff1ffep3, 0x1.fddffep-1
-  },
-  { // Entry 134
-    0x1.f3ae6b36c3163cd2d42f1eddf4e95886p-1,
-    0x1.ff7ffep0, -0x1.203c88p-5
-  },
-  { // Entry 135
-    0x1.f842b5127e562bf4cc2fb2aa30312393p-1,
-    0x1.ffbffep-10, 0x1.3ffffep-9
-  },
-  { // Entry 136
-    0x1.fc042cfcabd3d00c3fd7e9d168a20182p-1,
-    0x1.ffc0p-1, 0x1.ffc7fep3
-  },
-  { // Entry 137
-    0x1.f836cd12927fe3ea2eb9810462c208dcp-1,
-    0x1.fff77ep100, -0x1.cb0968p-13
-  },
-  { // Entry 138
-    0x1.fff3fd0c0608c60d8c3c9f07648607d5p14,
-    0x1.fff7fep9, 0x1.80p0
-  },
-  { // Entry 139
-    0x1.f811d3140d17296dc633cd00bfd96387p-1,
-    0x1.fff8p-1, 0x1.ff80p7
-  },
-  { // Entry 140
-    0x1.fe9d9738d0ca9f11f97a71b1a366145ap-1,
-    0x1.fffefep1, -0x1.fffff8p-10
-  },
-  { // Entry 141
-    0x1.f202b300003069a7a886e44fbf6073c2p72,
-    0x1.ffff3ep127, 0x1.23d714p-1
-  },
-  { // Entry 142
-    0x1.b834a192875d72ac81b7915cf8979690p-96,
-    0x1.ffffbep-1, 0x1.p25
-  },
-  { // Entry 143
-    0x1.ffffed000029bffddef5495e5603ce3bp-1,
-    0x1.ffffe2p-1, 0x1.44443ep-1
-  },
-  { // Entry 144
-    0x1.d6ab5d0e7ae03433ad824616d0db8b03p15,
-    0x1.ffffeep-40, -0x1.a0ea0cp-2
-  },
-  { // Entry 145
-    0x1.000002fffffffffff27fffe4ffffebc0p0,
-    0x1.fffffap-1, -0x1.fffffap-1
-  },
-  { // Entry 146
-    0x1.00000000000400000400000d55556d55p0,
-    0x1.fffffcp-1, -0x1.p-23
-  },
-  { // Entry 147
-    0x1.00000000000380000380000acaaabdeap0,
-    0x1.fffffcp-1, -0x1.c0p-24
-  },
-  { // Entry 148
-    0x1.ee8fc930954d29b3e28c5c1eafb9f7fdp4,
-    0x1.fffffcp-67, -0x1.33334ep-4
-  },
-  { // Entry 149
-    0x1.6a0a0cfff3ffa00e753af84c0100fbf0p13,
-    0x1.fffffcp-106, -0x1.075078p-3
-  },
-  { // Entry 150
-    0x1.9aaabcfff2ae3e7c84e87085640355e4p48,
-    0x1.fffffcp-120, -0x1.a2e8bep-2
-  },
-  { // Entry 151
-    0x1.f5777afffe2b46a4da98759043de4862p-52,
-    0x1.fffffcp80, -0x1.428f58p-1
-  },
-  { // Entry 152
-    0x1.73d3321e7f247def1ed4c816c824c77dp-67,
-    0x1.fffffcp119, -0x1.1b91b4p-1
-  },
-  { // Entry 153
-    0x1.000001000001000001000001000001p10,
-    0x1.fffffep-11, -0x1.p0
-  },
-  { // Entry 154
-    0x1.fffffeffffffbfffffdfffffebfffff1p0,
-    0x1.fffffep1, 0x1.p-1
-  },
-  { // Entry 155
-    0x1.cb5a0d0002f5169a13de39863bb5f91dp-2,
-    0x1.421efap-2, 0x1.62e42ep-1
-  },
-  { // Entry 156
-    0x1.cb720dcef90691503cbd1e949db761d9p-1,
-    0x1.p-5, 0x1.p-5
-  },
-  { // Entry 157
-    0x1.p-5,
-    0x1.p-5, 0x1.p0
-  },
-  { // Entry 158
-    0x1.p0,
-    0x1.p0, 0x1.p-5
-  },
-  { // Entry 159
-    0x1.p0,
-    0x1.p0, 0x1.p0
-  },
-  { // Entry 160
-    0x1.p-40,
-    0x1.p-5, 0x1.p3
-  },
-  { // Entry 161
-    0.0f,
-    0x1.p-5, 0x1.p5
-  },
-  { // Entry 162
-    0x1.p0,
-    0x1.p0, 0x1.p3
-  },
-  { // Entry 163
-    0x1.p0,
-    0x1.p0, 0x1.p5
-  },
-  { // Entry 164
-    0.0f,
-    0x1.p-5, 0x1.p10
-  },
-  { // Entry 165
-    0.0f,
-    0x1.p-5, 0x1.p12
-  },
-  { // Entry 166
-    0x1.p0,
-    0x1.p0, 0x1.p10
-  },
-  { // Entry 167
-    0x1.p0,
-    0x1.p0, 0x1.p12
-  },
-  { // Entry 168
-    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
-    0x1.p3, 0x1.p-5
-  },
-  { // Entry 169
-    0x1.p3,
-    0x1.p3, 0x1.p0
-  },
-  { // Entry 170
-    0x1.1d4873168b9aa7805b8028990f07a98bp0,
-    0x1.p5, 0x1.p-5
-  },
-  { // Entry 171
-    0x1.p5,
-    0x1.p5, 0x1.p0
-  },
-  { // Entry 172
-    0x1.p24,
-    0x1.p3, 0x1.p3
-  },
-  { // Entry 173
-    0x1.p96,
-    0x1.p3, 0x1.p5
-  },
-  { // Entry 174
-    0x1.p40,
-    0x1.p5, 0x1.p3
-  },
-  { // Entry 175
-    HUGE_VALF,
-    0x1.p5, 0x1.p5
-  },
-  { // Entry 176
-    HUGE_VALF,
-    0x1.p3, 0x1.p10
-  },
-  { // Entry 177
-    HUGE_VALF,
-    0x1.p3, 0x1.p12
-  },
-  { // Entry 178
-    HUGE_VALF,
-    0x1.p5, 0x1.p10
-  },
-  { // Entry 179
-    HUGE_VALF,
-    0x1.p5, 0x1.p12
-  },
-  { // Entry 180
-    0x1.3dea64c12342235b41223e13d773fba2p0,
-    0x1.p10, 0x1.p-5
-  },
-  { // Entry 181
-    0x1.p10,
-    0x1.p10, 0x1.p0
-  },
-  { // Entry 182
-    0x1.4bfdad5362a271d4397afec42e20e036p0,
-    0x1.p12, 0x1.p-5
-  },
-  { // Entry 183
-    0x1.p12,
-    0x1.p12, 0x1.p0
-  },
-  { // Entry 184
-    0x1.p80,
-    0x1.p10, 0x1.p3
-  },
-  { // Entry 185
-    HUGE_VALF,
-    0x1.p10, 0x1.p5
-  },
-  { // Entry 186
-    0x1.p96,
-    0x1.p12, 0x1.p3
-  },
-  { // Entry 187
-    HUGE_VALF,
-    0x1.p12, 0x1.p5
-  },
-  { // Entry 188
-    0x1.00000126055cfd443c5376930d169f32p2,
-    0x1.6a09e6p-1, -0x1.p2
-  },
-  { // Entry 189
-    0x1.fffffdb3f548a8d827b65c88p-3,
-    0x1.6a09e6p-1, 0x1.p2
-  },
-  { // Entry 190
-    0x1.00000126055cfd443c5376930d169f32p-2,
-    0x1.6a09e6p0, -0x1.p2
-  },
-  { // Entry 191
-    0x1.fffffdb3f548a8d827b65c88p1,
-    0x1.6a09e6p0, 0x1.p2
-  },
-  { // Entry 192
-    0x1.00000126055cfd443c5376930d169f32p2,
-    0x1.6a09e6p-1, -0x1.p2
-  },
-  { // Entry 193
-    0x1.fffffdb3f548a8d827b65c88p-3,
-    0x1.6a09e6p-1, 0x1.p2
-  },
-  { // Entry 194
-    0x1.00000126055cfd443c5376930d169f32p-2,
-    0x1.6a09e6p0, -0x1.p2
-  },
-  { // Entry 195
-    0x1.fffffdb3f548a8d827b65c88p1,
-    0x1.6a09e6p0, 0x1.p2
-  },
-  { // Entry 196
-    0x1.00162f3916670d119697154ae3512c2dp0,
-    0x1.6a09e6p-1, -0x1.p-10
-  },
-  { // Entry 197
-    0x1.ffd3a565caf8d230dae1250693a55f23p-1,
-    0x1.6a09e6p-1, 0x1.p-10
-  },
-  { // Entry 198
-    0x1.ffd3a5661473cb269f894b40d6cf9bacp-1,
-    0x1.6a09e6p0, -0x1.p-10
-  },
-  { // Entry 199
-    0x1.00162f38f1a33230bc340bd3752fc094p0,
-    0x1.6a09e6p0, 0x1.p-10
-  },
-  { // Entry 200
-    0x1.948b0fcd6e9e06522c3f35ba781948b0p1,
-    0x1.80p-1, -0x1.p2
-  },
-  { // Entry 201
-    0x1.44p-2,
-    0x1.80p-1, 0x1.p2
-  },
-  { // Entry 202
-    0x1.948b0fcd6e9e06522c3f35ba781948b0p-3,
-    0x1.80p0, -0x1.p2
-  },
-  { // Entry 203
-    0x1.44p2,
-    0x1.80p0, 0x1.p2
-  },
-  { // Entry 204
-    0x1.279a74590331c4d218f81e4afb257d06p0,
-    0x1.80p-1, -0x1.p-1
-  },
-  { // Entry 205
-    0x1.bb67ae8584caa73b25742d7078b83b89p-1,
-    0x1.80p-1, 0x1.p-1
-  },
-  { // Entry 206
-    0x1.a20bd700c2c3dfc042cc1aed7871db45p-1,
-    0x1.80p0, -0x1.p-1
-  },
-  { // Entry 207
-    0x1.3988e1409212e7d0321914321a556473p0,
-    0x1.80p0, 0x1.p-1
-  },
-  { // Entry 208
-    0x1.00126a0b93db294cabe33da735437f51p0,
-    0x1.80p-1, -0x1.p-10
-  },
-  { // Entry 209
-    0x1.ffdb2e8ed2a1fe71bd59fdd610313046p-1,
-    0x1.80p-1, 0x1.p-10
-  },
-  { // Entry 210
-    0x1.ffcc1c5973b2129a5b1424e0c88786b8p-1,
-    0x1.80p0, -0x1.p-10
-  },
-  { // Entry 211
-    0x1.0019f474aa190038c6af775d92f1d725p0,
-    0x1.80p0, 0x1.p-10
-  },
-  { // Entry 212
-    0x1.p0,
-    0x1.p0, -0x1.p2
-  },
-  { // Entry 213
-    0x1.p0,
-    0x1.p0, 0x1.p2
-  },
-  { // Entry 214
-    0x1.p-4,
-    0x1.p1, -0x1.p2
-  },
-  { // Entry 215
-    0x1.p4,
-    0x1.p1, 0x1.p2
-  },
-  { // Entry 216
-    0x1.p0,
-    0x1.p0, -0x1.p-1
-  },
-  { // Entry 217
-    0x1.p0,
-    0x1.p0, 0x1.p-1
-  },
-  { // Entry 218
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
-    0x1.p1, -0x1.p-1
-  },
-  { // Entry 219
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.p1, 0x1.p-1
-  },
-  { // Entry 220
-    0x1.p0,
-    0x1.p0, -0x1.p-10
-  },
-  { // Entry 221
-    0x1.p0,
-    0x1.p0, 0x1.p-10
-  },
-  { // Entry 222
-    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
-    0x1.p1, -0x1.p-10
-  },
-  { // Entry 223
-    0x1.002c605e2e8cec506d21bfc89a23a010p0,
-    0x1.p1, 0x1.p-10
-  },
-  { // Entry 224
-    0x1.p40,
-    0x1.p-10, -0x1.p2
-  },
-  { // Entry 225
-    0x1.p-40,
-    0x1.p-10, 0x1.p2
-  },
-  { // Entry 226
-    0x1.fe013f6045e40a7c41499223b4a38ce8p-1,
-    0x1.0040p0, -0x1.p2
-  },
-  { // Entry 227
-    0x1.0100601001p0,
-    0x1.0040p0, 0x1.p2
-  },
-  { // Entry 228
-    0x1.p5,
-    0x1.p-10, -0x1.p-1
-  },
-  { // Entry 229
-    0x1.p-5,
-    0x1.p-10, 0x1.p-1
-  },
-  { // Entry 230
-    0x1.ffc00bfd808be0873653647448220fdfp-1,
-    0x1.0040p0, -0x1.p-1
-  },
-  { // Entry 231
-    0x1.001ffe003ff601bfac107ca6b29a0c31p0,
-    0x1.0040p0, 0x1.p-1
-  },
-  { // Entry 232
-    0x1.01bd1e77170b415e7626621eb5aaff61p0,
-    0x1.p-10, -0x1.p-10
-  },
-  { // Entry 233
-    0x1.fc8bc4866e8ad2b963e1828b0761cbc6p-1,
-    0x1.p-10, 0x1.p-10
-  },
-  { // Entry 234
-    0x1.ffffe0040055355844443df8680a8e05p-1,
-    0x1.0040p0, -0x1.p-10
-  },
-  { // Entry 235
-    0x1.00000ffe00d5256285340e4f3ad36287p0,
-    0x1.0040p0, 0x1.p-10
-  },
-  { // Entry 236
-    0x1.000001000001000001000001000001p-128,
-    0x1.fffffep127, -0x1.p0
-  },
-  { // Entry 237
-    0x1.fffffep127,
-    0x1.fffffep127, 0x1.p0
-  },
-  { // Entry 238
-    HUGE_VALF,
-    0x1.p-149, -0x1.e66666p-1
-  },
-  { // Entry 239
-    0x1.5db4ecab3e1cb942fc90a003e77da282p-142,
-    0x1.p-149, 0x1.e66666p-1
-  },
-  { // Entry 240
-    0.0f,
-    0x1.fffffep-7, 0x1.fffffep5
-  },
-  { // Entry 241
-    0.0f,
-    0x1.fffffep-7, 0x1.p6
-  },
-  { // Entry 242
-    0.0f,
-    0x1.fffffep-7, 0x1.000002p6
-  },
-  { // Entry 243
-    0.0f,
-    0x1.p-6, 0x1.fffffep5
-  },
-  { // Entry 244
-    0.0f,
-    0x1.p-6, 0x1.p6
-  },
-  { // Entry 245
-    0.0f,
-    0x1.p-6, 0x1.000002p6
-  },
-  { // Entry 246
-    0.0f,
-    0x1.000002p-6, 0x1.fffffep5
-  },
-  { // Entry 247
-    0.0f,
-    0x1.000002p-6, 0x1.p6
-  },
-  { // Entry 248
-    0.0f,
-    0x1.000002p-6, 0x1.000002p6
-  },
-  { // Entry 249
-    0.0f,
-    0x1.fffffep-6, 0x1.fffffep4
-  },
-  { // Entry 250
-    0.0f,
-    0x1.fffffep-6, 0x1.p5
-  },
-  { // Entry 251
-    0.0f,
-    0x1.fffffep-6, 0x1.000002p5
-  },
-  { // Entry 252
-    0.0f,
-    0x1.p-5, 0x1.fffffep4
-  },
-  { // Entry 253
-    0.0f,
-    0x1.p-5, 0x1.p5
-  },
-  { // Entry 254
-    0.0f,
-    0x1.p-5, 0x1.000002p5
-  },
-  { // Entry 255
-    0.0f,
-    0x1.000002p-5, 0x1.fffffep4
-  },
-  { // Entry 256
-    0.0f,
-    0x1.000002p-5, 0x1.p5
-  },
-  { // Entry 257
-    0.0f,
-    0x1.000002p-5, 0x1.000002p5
-  },
-  { // Entry 258
-    0x1.00001c5c879823e3af39baa221df84b0p-64,
-    0x1.fffffep-5, 0x1.fffffep3
-  },
-  { // Entry 259
-    0x1.ffffe00000effffba0000e37ffdde0p-65,
-    0x1.fffffep-5, 0x1.p4
-  },
-  { // Entry 260
-    0x1.ffff2e8e128f07f8aa95fb8b35d72ea4p-65,
-    0x1.fffffep-5, 0x1.000002p4
-  },
-  { // Entry 261
-    0x1.00002c5c89d5ec6ca4d7c8acc017b7c9p-64,
-    0x1.p-4, 0x1.fffffep3
-  },
-  { // Entry 262
-    0x1.p-64,
-    0x1.p-4, 0x1.p4
-  },
-  { // Entry 263
-    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p-65,
-    0x1.p-4, 0x1.000002p4
-  },
-  { // Entry 264
-    0x1.00004c5c91217e02a4592ba7ad5df32ep-64,
-    0x1.000002p-4, 0x1.fffffep3
-  },
-  { // Entry 265
-    0x1.0000200001e00011800071c002220007p-64,
-    0x1.000002p-4, 0x1.p4
-  },
-  { // Entry 266
-    0x1.ffff8e8df4d9a8351320c05d3d814f9fp-65,
-    0x1.000002p-4, 0x1.000002p4
-  },
-  { // Entry 267
-    0x1.000008a2b26884f1068b81889467d67fp-24,
-    0x1.fffffep-4, 0x1.fffffep2
-  },
-  { // Entry 268
-    0x1.fffff0000037ffff9000008bffff90p-25,
-    0x1.fffffep-4, 0x1.p3
-  },
-  { // Entry 269
-    0x1.ffffad753d825dfcdd65e4ea54ccceb5p-25,
-    0x1.fffffep-4, 0x1.000002p3
-  },
-  { // Entry 270
-    0x1.000010a2b2c99a85707e8f13dc648710p-24,
-    0x1.p-3, 0x1.fffffep2
-  },
-  { // Entry 271
-    0x1.p-24,
-    0x1.p-3, 0x1.p3
-  },
-  { // Entry 272
-    0x1.ffffbd753b5607da2c260064823b30a7p-25,
-    0x1.p-3, 0x1.000002p3
-  },
-  { // Entry 273
-    0x1.000020a2b433c5b91729fe0493321d3fp-24,
-    0x1.000002p-3, 0x1.fffffep2
-  },
-  { // Entry 274
-    0x1.0000100000700001c00004600007p-24,
-    0x1.000002p-3, 0x1.p3
-  },
-  { // Entry 275
-    0x1.ffffdd75384d5b715e9437699534883bp-25,
-    0x1.000002p-3, 0x1.000002p3
-  },
-  { // Entry 276
-    0x1.0000018b90c2f02a80f3bb82aa12e95dp-8,
-    0x1.fffffep-3, 0x1.fffffep1
-  },
-  { // Entry 277
-    0x1.fffff800000bfffff8000002p-9,
-    0x1.fffffep-3, 0x1.p2
-  },
-  { // Entry 278
-    0x1.ffffe1d1bdd0bdc6b46ea64a42b1bad2p-9,
-    0x1.fffffep-3, 0x1.000002p2
-  },
-  { // Entry 279
-    0x1.0000058b90cf1e6d97f9ca14dbcc1628p-8,
-    0x1.p-2, 0x1.fffffep1
-  },
-  { // Entry 280
-    0x1.p-8,
-    0x1.p-2, 0x1.p2
-  },
-  { // Entry 281
-    0x1.ffffe9d1bd7c04bc4825147a8c0e63e3p-9,
-    0x1.p-2, 0x1.000002p2
-  },
-  { // Entry 282
-    0x1.00000d8b910b7af451a642e6d0b66b06p-8,
-    0x1.000002p-2, 0x1.fffffep1
-  },
-  { // Entry 283
-    0x1.000008000018000020000010p-8,
-    0x1.000002p-2, 0x1.p2
-  },
-  { // Entry 284
-    0x1.fffff9d1bd1a92a5d11088ed17417f41p-9,
-    0x1.000002p-2, 0x1.000002p2
-  },
-  { // Entry 285
-    0x1.fffffec5c8623fb25d7d06ac61a3063fp-3,
-    0x1.fffffep-2, 0x1.fffffep0
-  },
-  { // Entry 286
-    0x1.fffffc000002p-3,
-    0x1.fffffep-2, 0x1.p1
-  },
-  { // Entry 287
-    0x1.fffff6746f4d088289b880fe02adbfdep-3,
-    0x1.fffffep-2, 0x1.000002p1
-  },
-  { // Entry 288
-    0x1.00000162e430e5a18f6119e3c02282a5p-2,
-    0x1.p-1, 0x1.fffffep0
-  },
-  { // Entry 289
-    0x1.p-2,
-    0x1.p-1, 0x1.p1
-  },
-  { // Entry 290
-    0x1.fffffa746f47f160fcf890e3b801aeddp-3,
-    0x1.p-1, 0x1.000002p1
-  },
-  { // Entry 291
-    0x1.00000562e436713246f7a0134c8287eap-2,
-    0x1.000002p-1, 0x1.fffffep0
-  },
-  { // Entry 292
-    0x1.000004000004p-2,
-    0x1.000002p-1, 0x1.p1
-  },
-  { // Entry 293
-    0x1.0000013a37a4e18f0519a603954a5b0bp-2,
-    0x1.000002p-1, 0x1.000002p1
-  },
-  { // Entry 294
-    0x1.fffffe000001ffffff000000aaaaaa80p-1,
-    0x1.fffffep-1, 0x1.fffffep-1
-  },
-  { // Entry 295
-    0x1.fffffep-1,
-    0x1.fffffep-1, 0x1.p0
-  },
-  { // Entry 296
-    0x1.fffffdfffffc000002000004aaaaaaffp-1,
-    0x1.fffffep-1, 0x1.000002p0
-  },
-  { // Entry 297
-    0x1.p0,
-    0x1.p0, 0x1.fffffep-1
-  },
-  { // Entry 298
-    0x1.p0,
-    0x1.p0, 0x1.p0
-  },
-  { // Entry 299
-    0x1.p0,
-    0x1.p0, 0x1.000002p0
-  },
-  { // Entry 300
-    0x1.000001fffffdfffffe000003555553ffp0,
-    0x1.000002p0, 0x1.fffffep-1
-  },
-  { // Entry 301
-    0x1.000002p0,
-    0x1.000002p0, 0x1.p0
-  },
-  { // Entry 302
-    0x1.000002000004000004000005555558p0,
-    0x1.000002p0, 0x1.000002p0
-  },
-  { // Entry 303
-    0x1.6a09e53575b123625cc1968a665581a4p0,
-    0x1.fffffep0, 0x1.fffffep-2
-  },
-  { // Entry 304
-    0x1.6a09e5b2eec967cd97b2eff75f471493p0,
-    0x1.fffffep0, 0x1.p-1
-  },
-  { // Entry 305
-    0x1.6a09e6ade0fa7319052c4948dea48a76p0,
-    0x1.fffffep0, 0x1.000002p-1
-  },
-  { // Entry 306
-    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
-    0x1.p1, 0x1.fffffep-2
-  },
-  { // Entry 307
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.p1, 0x1.p-1
-  },
-  { // Entry 308
-    0x1.6a09e762e5efbbd7217018250a3ab194p0,
-    0x1.p1, 0x1.000002p-1
-  },
-  { // Entry 309
-    0x1.6a09e75484875c47c3cee01d9f348bd8p0,
-    0x1.000002p1, 0x1.fffffep-2
-  },
-  { // Entry 310
-    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp0,
-    0x1.000002p1, 0x1.p-1
-  },
-  { // Entry 311
-    0x1.6a09e8ccefd93dcbecf54d233ea8265bp0,
-    0x1.000002p1, 0x1.000002p-1
-  },
-  { // Entry 312
-    0x1.6a09e58ff82a4ecedb73f766d3d0758dp0,
-    0x1.fffffep1, 0x1.fffffep-3
-  },
-  { // Entry 313
-    0x1.6a09e60d71430d1ad61b45d5d1abdf15p0,
-    0x1.fffffep1, 0x1.p-2
-  },
-  { // Entry 314
-    0x1.6a09e70863750c27c3dd5c0ecdce5271p0,
-    0x1.fffffep1, 0x1.000002p-2
-  },
-  { // Entry 315
-    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
-    0x1.p2, 0x1.fffffep-3
-  },
-  { // Entry 316
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.p2, 0x1.p-2
-  },
-  { // Entry 317
-    0x1.6a09e762e5efbbd7217018250a3ab194p0,
-    0x1.p2, 0x1.000002p-2
-  },
-  { // Entry 318
-    0x1.6a09e69f7f954950a1fce0a1b2c362d0p0,
-    0x1.000002p2, 0x1.fffffep-3
-  },
-  { // Entry 319
-    0x1.6a09e71cf8af753edb9700ad906c9cd9p0,
-    0x1.000002p2, 0x1.p-2
-  },
-  { // Entry 320
-    0x1.6a09e817eae44f9049d532cda2a90cb6p0,
-    0x1.000002p2, 0x1.000002p-2
-  },
-  { // Entry 321
-    0x1.4bfdacd3978adf9f3b64fe01f40593aep0,
-    0x1.fffffep2, 0x1.fffffep-4
-  },
-  { // Entry 322
-    0x1.4bfdad29e2ecb54005a6dbec67c5e413p0,
-    0x1.fffffep2, 0x1.p-3
-  },
-  { // Entry 323
-    0x1.4bfdadd679b0a3cc40ecb60afdc4a552p0,
-    0x1.fffffep2, 0x1.000002p-3
-  },
-  { // Entry 324
-    0x1.4bfdacfd174067ea4d43f8b09f974d86p0,
-    0x1.p3, 0x1.fffffep-4
-  },
-  { // Entry 325
-    0x1.4bfdad5362a271d4397afec42e20e036p0,
-    0x1.p3, 0x1.p-3
-  },
-  { // Entry 326
-    0x1.4bfdadfff966c8f2b8f44b137fbfaa96p0,
-    0x1.p3, 0x1.000002p-3
-  },
-  { // Entry 327
-    0x1.4bfdad5016ab0b9134e0574abca78b7ap0,
-    0x1.000002p3, 0x1.fffffep-4
-  },
-  { // Entry 328
-    0x1.4bfdada6620d7e0d6487fd9be64887a3p0,
-    0x1.000002p3, 0x1.p-3
-  },
-  { // Entry 329
-    0x1.4bfdae52f8d2a6506b74ce232fdcd291p0,
-    0x1.000002p3, 0x1.000002p-3
-  },
-  { // Entry 330
-    0x1.306fe05b533131c27612cfff7a0ffdb0p0,
-    0x1.fffffep3, 0x1.fffffep-5
-  },
-  { // Entry 331
-    0x1.306fe09014733fc18f2a8e5bc8a30cdcp0,
-    0x1.fffffep3, 0x1.p-4
-  },
-  { // Entry 332
-    0x1.306fe0f996f7772c9a94c16083446262p0,
-    0x1.fffffep3, 0x1.000002p-4
-  },
-  { // Entry 333
-    0x1.306fe06e5a2f2e8c620f7e55cc803dbap0,
-    0x1.p4, 0x1.fffffep-5
-  },
-  { // Entry 334
-    0x1.306fe0a31b7152de8d5a46305c85edecp0,
-    0x1.p4, 0x1.p-4
-  },
-  { // Entry 335
-    0x1.306fe10c9df5b6efbd400b7806005fa9p0,
-    0x1.p4, 0x1.000002p-4
-  },
-  { // Entry 336
-    0x1.306fe094682af29c8fe9f735fb1c4081p0,
-    0x1.000002p4, 0x1.fffffep-5
-  },
-  { // Entry 337
-    0x1.306fe0c9296d4394df5f99b9bd1a47d2p0,
-    0x1.000002p4, 0x1.p-4
-  },
-  { // Entry 338
-    0x1.306fe132abf200f257c612e07f149aa3p0,
-    0x1.000002p4, 0x1.000002p-4
-  },
-  { // Entry 339
-    0x1.1d4872eebb9da03bbac5af79b0cf9409p0,
-    0x1.fffffep4, 0x1.fffffep-6
-  },
-  { // Entry 340
-    0x1.1d48730da1570a7a85ea1fc1fcf88fddp0,
-    0x1.fffffep4, 0x1.p-5
-  },
-  { // Entry 341
-    0x1.1d48734b6cc9e902148fafcefa9eaa06p0,
-    0x1.fffffep4, 0x1.000002p-5
-  },
-  { // Entry 342
-    0x1.1d4872f7a5e133601ef3b495f3f89a12p0,
-    0x1.p5, 0x1.fffffep-6
-  },
-  { // Entry 343
-    0x1.1d4873168b9aa7805b8028990f07a98bp0,
-    0x1.p5, 0x1.p-5
-  },
-  { // Entry 344
-    0x1.1d487354570d99caccfbdb7e35ff0df1p0,
-    0x1.p5, 0x1.000002p-5
-  },
-  { // Entry 345
-    0x1.1d4873097a683fc01308d4a71615b820p0,
-    0x1.000002p5, 0x1.fffffep-6
-  },
-  { // Entry 346
-    0x1.1d4873286021c7a332496ee4ad91ade9p0,
-    0x1.000002p5, 0x1.p-5
-  },
-  { // Entry 347
-    0x1.1d4873662b94e1736939a503d83c5e42p0,
-    0x1.000002p5, 0x1.000002p-5
-  },
-  { // Entry 348
-    0x1.11301ceb20541ff3f655e3bd12271b3ep0,
-    0x1.fffffep5, 0x1.fffffep-7
-  },
-  { // Entry 349
-    0x1.11301cfce0f494304e630799fc8b181fp0,
-    0x1.fffffep5, 0x1.p-6
-  },
-  { // Entry 350
-    0x1.11301d206235801ef5580894354f900cp0,
-    0x1.fffffep5, 0x1.000002p-6
-  },
-  { // Entry 351
-    0x1.11301cef65149186a0ecb60713565b45p0,
-    0x1.p6, 0x1.fffffep-7
-  },
-  { // Entry 352
-    0x1.11301d0125b50a4ebbf1aed9318ceac5p0,
-    0x1.p6, 0x1.p-6
-  },
-  { // Entry 353
-    0x1.11301d24a6f5ff54e8d811a4b978b54fp0,
-    0x1.p6, 0x1.000002p-6
-  },
-  { // Entry 354
-    0x1.11301cf7ee956810edd94d1c7697f34bp0,
-    0x1.000002p6, 0x1.fffffep-7
-  },
-  { // Entry 355
-    0x1.11301d09af35e9f08ec0b6564cfd4d3ap0,
-    0x1.000002p6, 0x1.p-6
-  },
-  { // Entry 356
-    0x1.11301d2d3076f125c76f69bf107f4052p0,
-    0x1.000002p6, 0x1.000002p-6
-  },
-  { // Entry 357
-    0x1.fffc9d1eaff1e2bc708fbb9fc141d186p127,
-    0x1.fffffcp0, 0x1.fffffcp6
-  },
-  { // Entry 358
-    0x1.fffd4e8fb83933cbf5f827e2581f20dcp127,
-    0x1.fffffcp0, 0x1.fffffep6
-  },
-  { // Entry 359
-    0x1.fffe0000fdffaca81458f80ec301a2c8p127,
-    0x1.fffffcp0, 0x1.p7
-  },
-  { // Entry 360
-    0x1.ffff62e4420a6b06d702f4e2aaffa4e5p127,
-    0x1.fffffcp0, 0x1.000002p7
-  },
-  { // Entry 361
-    HUGE_VALF,
-    0x1.fffffcp0, 0x1.000004p7
-  },
-  { // Entry 362
-    0x1.fffd9d1d3e00d99bdfe3619f05f2ecc1p127,
-    0x1.fffffep0, 0x1.fffffcp6
-  },
-  { // Entry 363
-    0x1.fffe4e8ea000c3f99d84d886c03811fap127,
-    0x1.fffffep0, 0x1.fffffep6
-  },
-  { // Entry 364
-    0x1.ffff00003f7ff59501458fa07615868bp127,
-    0x1.fffffep0, 0x1.p7
-  },
-  { // Entry 365
-    HUGE_VALF,
-    0x1.fffffep0, 0x1.000002p7
-  },
-  { // Entry 366
-    HUGE_VALF,
-    0x1.fffffep0, 0x1.000004p7
-  },
-  { // Entry 367
-    0x1.fffe9d1c4b0f37f413d44c66c0481834p127,
-    0x1.p1, 0x1.fffffcp6
-  },
-  { // Entry 368
-    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p127,
-    0x1.p1, 0x1.fffffep6
-  },
-  { // Entry 369
-    HUGE_VALF,
-    0x1.p1, 0x1.p7
-  },
-  { // Entry 370
-    HUGE_VALF,
-    0x1.p1, 0x1.000002p7
-  },
-  { // Entry 371
-    HUGE_VALF,
-    0x1.p1, 0x1.000004p7
-  },
-  { // Entry 372
-    HUGE_VALF,
-    0x1.000002p1, 0x1.fffffcp6
-  },
-  { // Entry 373
-    HUGE_VALF,
-    0x1.000002p1, 0x1.fffffep6
-  },
-  { // Entry 374
-    HUGE_VALF,
-    0x1.000002p1, 0x1.p7
-  },
-  { // Entry 375
-    HUGE_VALF,
-    0x1.000002p1, 0x1.000002p7
-  },
-  { // Entry 376
-    HUGE_VALF,
-    0x1.000002p1, 0x1.000004p7
-  },
-  { // Entry 377
-    HUGE_VALF,
-    0x1.000004p1, 0x1.fffffcp6
-  },
-  { // Entry 378
-    HUGE_VALF,
-    0x1.000004p1, 0x1.fffffep6
-  },
-  { // Entry 379
-    HUGE_VALF,
-    0x1.000004p1, 0x1.p7
-  },
-  { // Entry 380
-    HUGE_VALF,
-    0x1.000004p1, 0x1.000002p7
-  },
-  { // Entry 381
-    HUGE_VALF,
-    0x1.000004p1, 0x1.000004p7
-  },
-  { // Entry 382
-    0.0f,
-    0x1.fffffcp0, -0x1.2c0004p7
-  },
-  { // Entry 383
-    0.0f,
-    0x1.fffffcp0, -0x1.2c0002p7
-  },
-  { // Entry 384
-    0.0f,
-    0x1.fffffcp0, -0x1.2cp7
-  },
-  { // Entry 385
-    0.0f,
-    0x1.fffffcp0, -0x1.2bfffep7
-  },
-  { // Entry 386
-    0.0f,
-    0x1.fffffcp0, -0x1.2bfffcp7
-  },
-  { // Entry 387
-    0.0f,
-    0x1.fffffep0, -0x1.2c0004p7
-  },
-  { // Entry 388
-    0.0f,
-    0x1.fffffep0, -0x1.2c0002p7
-  },
-  { // Entry 389
-    0.0f,
-    0x1.fffffep0, -0x1.2cp7
-  },
-  { // Entry 390
-    0.0f,
-    0x1.fffffep0, -0x1.2bfffep7
-  },
-  { // Entry 391
-    0.0f,
-    0x1.fffffep0, -0x1.2bfffcp7
-  },
-  { // Entry 392
-    0.0f,
-    0x1.p1, -0x1.2c0004p7
-  },
-  { // Entry 393
-    0.0f,
-    0x1.p1, -0x1.2c0002p7
-  },
-  { // Entry 394
-    0.0f,
-    0x1.p1, -0x1.2cp7
-  },
-  { // Entry 395
-    0.0f,
-    0x1.p1, -0x1.2bfffep7
-  },
-  { // Entry 396
-    0.0f,
-    0x1.p1, -0x1.2bfffcp7
-  },
-  { // Entry 397
-    0.0f,
-    0x1.000002p1, -0x1.2c0004p7
-  },
-  { // Entry 398
-    0.0f,
-    0x1.000002p1, -0x1.2c0002p7
-  },
-  { // Entry 399
-    0.0f,
-    0x1.000002p1, -0x1.2cp7
-  },
-  { // Entry 400
-    0.0f,
-    0x1.000002p1, -0x1.2bfffep7
-  },
-  { // Entry 401
-    0.0f,
-    0x1.000002p1, -0x1.2bfffcp7
-  },
-  { // Entry 402
-    0.0f,
-    0x1.000004p1, -0x1.2c0004p7
-  },
-  { // Entry 403
-    0.0f,
-    0x1.000004p1, -0x1.2c0002p7
-  },
-  { // Entry 404
-    0.0f,
-    0x1.000004p1, -0x1.2cp7
-  },
-  { // Entry 405
-    0.0f,
-    0x1.000004p1, -0x1.2bfffep7
-  },
-  { // Entry 406
-    0.0f,
-    0x1.000004p1, -0x1.2bfffcp7
-  },
-  { // Entry 407
-    0.0f,
-    0x1.db6db2p-2, 0x1.c30c2cp8
-  },
-  { // Entry 408
-    0.0f,
-    0x1.db6db2p-2, 0x1.c30c2ep8
-  },
-  { // Entry 409
-    0.0f,
-    0x1.db6db2p-2, 0x1.c30c30p8
-  },
-  { // Entry 410
-    0.0f,
-    0x1.db6db2p-2, 0x1.c30c32p8
-  },
-  { // Entry 411
-    0.0f,
-    0x1.db6db2p-2, 0x1.c30c34p8
-  },
-  { // Entry 412
-    0.0f,
-    0x1.db6db4p-2, 0x1.c30c2cp8
-  },
-  { // Entry 413
-    0.0f,
-    0x1.db6db4p-2, 0x1.c30c2ep8
-  },
-  { // Entry 414
-    0.0f,
-    0x1.db6db4p-2, 0x1.c30c30p8
-  },
-  { // Entry 415
-    0.0f,
-    0x1.db6db4p-2, 0x1.c30c32p8
-  },
-  { // Entry 416
-    0.0f,
-    0x1.db6db4p-2, 0x1.c30c34p8
-  },
-  { // Entry 417
-    0.0f,
-    0x1.db6db6p-2, 0x1.c30c2cp8
-  },
-  { // Entry 418
-    0.0f,
-    0x1.db6db6p-2, 0x1.c30c2ep8
-  },
-  { // Entry 419
-    0.0f,
-    0x1.db6db6p-2, 0x1.c30c30p8
-  },
-  { // Entry 420
-    0.0f,
-    0x1.db6db6p-2, 0x1.c30c32p8
-  },
-  { // Entry 421
-    0.0f,
-    0x1.db6db6p-2, 0x1.c30c34p8
-  },
-  { // Entry 422
-    0.0f,
-    0x1.db6db8p-2, 0x1.c30c2cp8
-  },
-  { // Entry 423
-    0.0f,
-    0x1.db6db8p-2, 0x1.c30c2ep8
-  },
-  { // Entry 424
-    0.0f,
-    0x1.db6db8p-2, 0x1.c30c30p8
-  },
-  { // Entry 425
-    0.0f,
-    0x1.db6db8p-2, 0x1.c30c32p8
-  },
-  { // Entry 426
-    0.0f,
-    0x1.db6db8p-2, 0x1.c30c34p8
-  },
-  { // Entry 427
-    0.0f,
-    0x1.db6dbap-2, 0x1.c30c2cp8
-  },
-  { // Entry 428
-    0.0f,
-    0x1.db6dbap-2, 0x1.c30c2ep8
-  },
-  { // Entry 429
-    0.0f,
-    0x1.db6dbap-2, 0x1.c30c30p8
-  },
-  { // Entry 430
-    0.0f,
-    0x1.db6dbap-2, 0x1.c30c32p8
-  },
-  { // Entry 431
-    0.0f,
-    0x1.db6dbap-2, 0x1.c30c34p8
-  },
-  { // Entry 432
-    -0x1.fffffc000007fffff000001fffffc0p-1,
-    -0x1.000002p0, -0x1.p0
-  },
-  { // Entry 433
-    -0x1.p0,
-    -0x1.p0, -0x1.p0
-  },
-  { // Entry 434
-    -0x1.000001000001000001000001000001p0,
-    -0x1.fffffep-1, -0x1.p0
-  },
-  { // Entry 435
-    HUGE_VALF,
-    0x1.p1, 0x1.p10
-  },
-  { // Entry 436
-    HUGE_VALF,
-    0x1.p2, 0x1.p9
-  },
-  { // Entry 437
-    0.0f,
-    0x1.fffffep-2, 0x1.fffffep9
-  },
-  { // Entry 438
-    0.0f,
-    0x1.fffffep-2, 0x1.p10
-  },
-  { // Entry 439
-    0.0f,
-    0x1.fffffep-2, 0x1.000002p10
-  },
-  { // Entry 440
-    0.0f,
-    0x1.p-1, 0x1.fffffep9
-  },
-  { // Entry 441
-    0.0f,
-    0x1.p-1, 0x1.p10
-  },
-  { // Entry 442
-    0.0f,
-    0x1.p-1, 0x1.000002p10
-  },
-  { // Entry 443
-    0.0f,
-    0x1.000002p-1, 0x1.fffffep9
-  },
-  { // Entry 444
-    0.0f,
-    0x1.000002p-1, 0x1.p10
-  },
-  { // Entry 445
-    0.0f,
-    0x1.000002p-1, 0x1.000002p10
-  },
-  { // Entry 446
-    0x1.00020467109547572fa8f3f653eda548p-149,
-    0x1.p-149, 0x1.fffff6p-1
-  },
-  { // Entry 447
-    0x1.00019d1eed21f448f2c6217eab3d9c55p-149,
-    0x1.p-149, 0x1.fffff8p-1
-  },
-  { // Entry 448
-    0x1.000135d6f3596e086d463376a9dbd1e2p-149,
-    0x1.p-149, 0x1.fffffap-1
-  },
-  { // Entry 449
-    0x1.0000ce8f233ba3c64adc5667a7b0b245p-149,
-    0x1.p-149, 0x1.fffffcp-1
-  },
-  { // Entry 450
-    0x1.000067477cc884b33e03d0bb77571150p-149,
-    0x1.p-149, 0x1.fffffep-1
-  },
-  { // Entry 451
-    0x1.p-149,
-    0x1.p-149, 0x1.p0
-  },
-  { // Entry 452
-    0.0f,
-    0x1.p-149, 0x1.000002p0
-  },
-  { // Entry 453
-    0.0f,
-    0x1.p-149, 0x1.000004p0
-  },
-  { // Entry 454
-    0.0f,
-    0x1.p-149, 0x1.000006p0
-  },
-  { // Entry 455
-    0.0f,
-    0x1.p-149, 0x1.000008p0
-  },
-  { // Entry 456
-    0.0f,
-    0x1.p-149, 0x1.00000ap0
-  },
-  { // Entry 457
-    0x1.000200efcf25bab1c7cd22827341ab63p-148,
-    0x1.p-148, 0x1.fffff6p-1
-  },
-  { // Entry 458
-    0x1.00019a59204c82fe060cf6d320f15433p-148,
-    0x1.p-148, 0x1.fffff8p-1
-  },
-  { // Entry 459
-    0x1.000133c29a8f64f204da13b72ebc56edp-148,
-    0x1.p-148, 0x1.fffffap-1
-  },
-  { // Entry 460
-    0x1.0000cd2c3dee501480729506593fd68bp-148,
-    0x1.p-148, 0x1.fffffcp-1
-  },
-  { // Entry 461
-    0x1.000066960a6933ec3bae8cab9ccfd543p-148,
-    0x1.p-148, 0x1.fffffep-1
-  },
-  { // Entry 462
-    0x1.p-148,
-    0x1.p-148, 0x1.p0
-  },
-  { // Entry 463
-    0x1.fffe65a8cd021dedd55a40c272dc8acap-149,
-    0x1.p-148, 0x1.000002p0
-  },
-  { // Entry 464
-    0x1.fffccb52e2e1f2602021820ab47036fep-149,
-    0x1.p-148, 0x1.000004p0
-  },
-  { // Entry 465
-    0x1.fffb30fe419e75c552c074b75e9e132dp-149,
-    0x1.p-148, 0x1.000006p0
-  },
-  { // Entry 466
-    0x1.fff996aae936a08cb2de3b831326836cp-149,
-    0x1.p-148, 0x1.000008p0
-  },
-  { // Entry 467
-    0x1.fff7fc58d9a96b26595dc1b91aab1065p-149,
-    0x1.p-148, 0x1.00000ap0
-  },
-  { // Entry 468
-    0x1.8002fe5d326e1910dcf5adadc4fb80bap-148,
-    0x1.80p-148, 0x1.fffff6p-1
-  },
-  { // Entry 469
-    0x1.80026516e130410cbc34d6be1f314af3p-148,
-    0x1.80p-148, 0x1.fffff8p-1
-  },
-  { // Entry 470
-    0x1.8001cbd0cd20048dc0041aae6853f414p-148,
-    0x1.80p-148, 0x1.fffffap-1
-  },
-  { // Entry 471
-    0x1.8001328af63d4b28b93bac168d323776p-148,
-    0x1.80p-148, 0x1.fffffcp-1
-  },
-  { // Entry 472
-    0x1.800099455c87fc728272d7993c3c0ed2p-148,
-    0x1.80p-148, 0x1.fffffep-1
-  },
-  { // Entry 473
-    0x1.80p-148,
-    0x1.80p-148, 0x1.p0
-  },
-  { // Entry 474
-    0x1.7ffecd75fe779c39da312a0ae6575aaep-148,
-    0x1.80p-148, 0x1.000002p0
-  },
-  { // Entry 475
-    0x1.7ffd9aecf1a35c7e2d6f67b9177b8bc8p-148,
-    0x1.80p-148, 0x1.000004p0
-  },
-  { // Entry 476
-    0x1.7ffc6864d9827d757b4b6001d0c80a9bp-148,
-    0x1.80p-148, 0x1.000006p0
-  },
-  { // Entry 477
-    0x1.7ffb35ddb6143bc8e145a6d616a1b551p-148,
-    0x1.80p-148, 0x1.000008p0
-  },
-  { // Entry 478
-    0x1.7ffa03578757d42218ce40a578c74476p-148,
-    0x1.80p-148, 0x1.00000ap0
-  },
-  { // Entry 479
-    0x1.000000a0cf65eb1817a7095d9a0443a7p0,
-    0x1.p-29, -0x1.p-29
-  },
-  { // Entry 480
-    0x1.ffffff5f309a60aad5c2309f81f90defp-1,
-    0x1.p-29, 0x1.p-30
-  },
-  { // Entry 481
-    0x1.fffffd9e07cf07767a55afbe9acae93ep-1,
-    0x1.p55, -0x1.p-29
-  },
-  { // Entry 482
-    0x1.000000987e0cc66344d89b494e1f43b3p0,
-    0x1.p55, 0x1.p-30
-  },
-  { // Entry 483
-    0x1.fffffd669427cf159515873887c17cf2p-1,
-    0x1.p60, -0x1.p-29
-  },
-  { // Entry 484
-    0x1.000000a65af6ae61be88ea2558790cd7p0,
-    0x1.p60, 0x1.p-30
-  },
-  { // Entry 485
-    0x1.ffc003ffb55aaa4cd34f3431ea5b77f1p-1,
-    0x1.fffffep-1, 0x1.p13
-  },
-  { // Entry 486
-    0x1.fe00ffa9c0fb3bf28c8a9b2b3d2d7daap-1,
-    0x1.fffffep-1, 0x1.p16
-  },
-  { // Entry 487
-    0x1.p0,
-    0x1.p0, 0x1.p13
-  },
-  { // Entry 488
-    0x1.p0,
-    0x1.p0, 0x1.p16
-  },
-  { // Entry 489
-    0x1.004008006aa554332b8fed09d8ed29f3p0,
-    0x1.000002p0, 0x1.p13
-  },
-  { // Entry 490
-    0x1.02020153fc405b123b33a73cb93a3648p0,
-    0x1.000002p0, 0x1.p16
-  },
-  { // Entry 491
-    0x1.2c15603269407006b8f35e8e4f1497bap-6,
-    -0x1.000002p0, -0x1.p25
-  },
-  { // Entry 492
-    0x1.c846887ee379c5af637c7349afc9f699p-47,
-    -0x1.000002p0, -0x1.p28
-  },
-  { // Entry 493
-    0x1.p0,
-    -0x1.p0, -0x1.p25
-  },
-  { // Entry 494
-    0x1.p0,
-    -0x1.p0, -0x1.p28
-  },
-  { // Entry 495
-    0x1.d8e64d66342891c86fb3c87d1ed6d5c5p2,
-    -0x1.fffffep-1, -0x1.p25
-  },
-  { // Entry 496
-    0x1.0f2ec583f611e4b8fc1cc7b50efbb738p23,
-    -0x1.fffffep-1, -0x1.p28
-  },
-  { // Entry 497
-    0x1.d8e64d66342891c86fb3c87d1ed6d5c5p2,
-    0x1.fffffep-1, -0x1.p25
-  },
-  { // Entry 498
-    0x1.0f2ec583f611e4b8fc1cc7b50efbb738p23,
-    0x1.fffffep-1, -0x1.p28
-  },
-  { // Entry 499
-    0x1.p0,
-    0x1.p0, -0x1.p25
-  },
-  { // Entry 500
-    0x1.p0,
-    0x1.p0, -0x1.p28
-  },
-  { // Entry 501
-    0x1.2c15603269407006b8f35e8e4f1497bap-6,
-    0x1.000002p0, -0x1.p25
-  },
-  { // Entry 502
-    0x1.c846887ee379c5af637c7349afc9f699p-47,
-    0x1.000002p0, -0x1.p28
-  },
-  { // Entry 503
-    HUGE_VALF,
-    -0x1.p15, 0x1.p63
-  },
-  { // Entry 504
-    HUGE_VALF,
-    0.0f, -0x1.80p1
-  },
-  { // Entry 505
-    -HUGE_VALF,
-    -0.0f, -0x1.80p1
-  },
-  { // Entry 506
-    HUGE_VALF,
-    0.0f, -0x1.p0
-  },
-  { // Entry 507
-    -HUGE_VALF,
-    -0.0f, -0x1.p0
-  },
-  { // Entry 508
-    HUGE_VALF,
-    0.0f, -0x1.fffffep127
-  },
-  { // Entry 509
-    HUGE_VALF,
-    0.0f, -0x1.80p2
-  },
-  { // Entry 510
-    HUGE_VALF,
-    0.0f, -0x1.p1
-  },
-  { // Entry 511
-    HUGE_VALF,
-    0.0f, -0x1.000002p0
-  },
-  { // Entry 512
-    HUGE_VALF,
-    0.0f, -0x1.fffffep-1
-  },
-  { // Entry 513
-    HUGE_VALF,
-    0.0f, -0x1.p-126
-  },
-  { // Entry 514
-    HUGE_VALF,
-    0.0f, -0x1.p-149
-  },
-  { // Entry 515
-    HUGE_VALF,
-    -0.0f, -0x1.fffffep127
-  },
-  { // Entry 516
-    HUGE_VALF,
-    -0.0f, -0x1.80p2
-  },
-  { // Entry 517
-    HUGE_VALF,
-    -0.0f, -0x1.p1
-  },
-  { // Entry 518
-    HUGE_VALF,
-    -0.0f, -0x1.000002p0
-  },
-  { // Entry 519
-    HUGE_VALF,
-    -0.0f, -0x1.fffffep-1
-  },
-  { // Entry 520
-    HUGE_VALF,
-    -0.0f, -0x1.p-126
-  },
-  { // Entry 521
-    HUGE_VALF,
-    -0.0f, -0x1.p-149
-  },
-  { // Entry 522
-    HUGE_VALF,
-    0.0f, -HUGE_VALF
-  },
-  { // Entry 523
-    HUGE_VALF,
-    -0.0f, -HUGE_VALF
-  },
-  { // Entry 524
-    0.0,
-    0.0f, 0x1.80p1
-  },
-  { // Entry 525
-    -0.0,
-    -0.0f, 0x1.80p1
-  },
-  { // Entry 526
-    0.0,
-    0.0f, 0x1.p0
-  },
-  { // Entry 527
-    -0.0,
-    -0.0f, 0x1.p0
-  },
-  { // Entry 528
-    0.0,
-    0.0f, HUGE_VALF
-  },
-  { // Entry 529
-    0.0,
-    0.0f, 0x1.fffffep127
-  },
-  { // Entry 530
-    0.0,
-    0.0f, 0x1.80p2
-  },
-  { // Entry 531
-    0.0,
-    0.0f, 0x1.p1
-  },
-  { // Entry 532
-    0.0,
-    0.0f, 0x1.000002p0
-  },
-  { // Entry 533
-    0.0,
-    0.0f, 0x1.fffffep-1
-  },
-  { // Entry 534
-    0.0,
-    0.0f, 0x1.p-126
-  },
-  { // Entry 535
-    0.0,
-    0.0f, 0x1.p-149
-  },
-  { // Entry 536
-    0.0,
-    -0.0f, HUGE_VALF
-  },
-  { // Entry 537
-    0.0,
-    -0.0f, 0x1.fffffep127
-  },
-  { // Entry 538
-    0.0,
-    -0.0f, 0x1.80p2
-  },
-  { // Entry 539
-    0.0,
-    -0.0f, 0x1.p1
-  },
-  { // Entry 540
-    0.0,
-    -0.0f, 0x1.000002p0
-  },
-  { // Entry 541
-    0.0,
-    -0.0f, 0x1.fffffep-1
-  },
-  { // Entry 542
-    0.0,
-    -0.0f, 0x1.p-126
-  },
-  { // Entry 543
-    0.0,
-    -0.0f, 0x1.p-149
-  },
-  { // Entry 544
-    0x1.p0,
-    -0x1.p0, HUGE_VALF
-  },
-  { // Entry 545
-    0x1.p0,
-    -0x1.p0, -HUGE_VALF
-  },
-  { // Entry 546
-    0x1.p0,
-    0x1.p0, HUGE_VALF
-  },
-  { // Entry 547
-    0x1.p0,
-    0x1.p0, -HUGE_VALF
-  },
-  { // Entry 548
-    0x1.p0,
-    0x1.p0, 0x1.fffffep127
-  },
-  { // Entry 549
-    0x1.p0,
-    0x1.p0, -0x1.fffffep127
-  },
-  { // Entry 550
-    0x1.p0,
-    -0x1.p0, 0x1.fffffep127
-  },
-  { // Entry 551
-    0x1.p0,
-    -0x1.p0, -0x1.fffffep127
-  },
-  { // Entry 552
-    0x1.p0,
-    0x1.p0, 0x1.p-1
-  },
-  { // Entry 553
-    0x1.p0,
-    0x1.p0, -0x1.p-1
-  },
-  { // Entry 554
-    0x1.p0,
-    0x1.p0, 0x1.p-126
-  },
-  { // Entry 555
-    0x1.p0,
-    0x1.p0, -0x1.p-126
-  },
-  { // Entry 556
-    0x1.p0,
-    0x1.p0, 0x1.fffffcp-127
-  },
-  { // Entry 557
-    0x1.p0,
-    0x1.p0, -0x1.fffffcp-127
-  },
-  { // Entry 558
-    0x1.p0,
-    0x1.p0, 0x1.p-149
-  },
-  { // Entry 559
-    0x1.p0,
-    0x1.p0, -0x1.p-149
-  },
-  { // Entry 560
-    0x1.p0,
-    0x1.p0, 0.0f
-  },
-  { // Entry 561
-    0x1.p0,
-    0x1.p0, -0.0f
-  },
-  { // Entry 562
-    0x1.p0,
-    HUGE_VALF, 0.0f
-  },
-  { // Entry 563
-    0x1.p0,
-    HUGE_VALF, -0.0f
-  },
-  { // Entry 564
-    0x1.p0,
-    0x1.fffffep127, 0.0f
-  },
-  { // Entry 565
-    0x1.p0,
-    0x1.fffffep127, -0.0f
-  },
-  { // Entry 566
-    0x1.p0,
-    0x1.p-126, 0.0f
-  },
-  { // Entry 567
-    0x1.p0,
-    0x1.p-126, -0.0f
-  },
-  { // Entry 568
-    0x1.p0,
-    0x1.p-149, 0.0f
-  },
-  { // Entry 569
-    0x1.p0,
-    0x1.p-149, -0.0f
-  },
-  { // Entry 570
-    0x1.p0,
-    0.0f, 0.0f
-  },
-  { // Entry 571
-    0x1.p0,
-    0.0f, -0.0f
-  },
-  { // Entry 572
-    0x1.p0,
-    -0.0f, 0.0f
-  },
-  { // Entry 573
-    0x1.p0,
-    -0.0f, -0.0f
-  },
-  { // Entry 574
-    0x1.p0,
-    -0x1.p-149, 0.0f
-  },
-  { // Entry 575
-    0x1.p0,
-    -0x1.p-149, -0.0f
-  },
-  { // Entry 576
-    0x1.p0,
-    -0x1.p-126, 0.0f
-  },
-  { // Entry 577
-    0x1.p0,
-    -0x1.p-126, -0.0f
-  },
-  { // Entry 578
-    0x1.p0,
-    -0x1.fffffep127, 0.0f
-  },
-  { // Entry 579
-    0x1.p0,
-    -0x1.fffffep127, -0.0f
-  },
-  { // Entry 580
-    0x1.p0,
-    -HUGE_VALF, 0.0f
-  },
-  { // Entry 581
-    0x1.p0,
-    -HUGE_VALF, -0.0f
-  },
-  { // Entry 582
-    HUGE_VALF,
-    0x1.p-126, -HUGE_VALF
-  },
-  { // Entry 583
-    HUGE_VALF,
-    0x1.p-149, -HUGE_VALF
-  },
-  { // Entry 584
-    HUGE_VALF,
-    -0x1.p-149, -HUGE_VALF
-  },
-  { // Entry 585
-    HUGE_VALF,
-    -0x1.p-126, -HUGE_VALF
-  },
-  { // Entry 586
-    0.0,
-    HUGE_VALF, -HUGE_VALF
-  },
-  { // Entry 587
-    0.0,
-    0x1.fffffep127, -HUGE_VALF
-  },
-  { // Entry 588
-    0.0,
-    0x1.80p0, -HUGE_VALF
-  },
-  { // Entry 589
-    0.0,
-    -0x1.80p0, -HUGE_VALF
-  },
-  { // Entry 590
-    0.0,
-    -0x1.fffffep127, -HUGE_VALF
-  },
-  { // Entry 591
-    0.0,
-    -HUGE_VALF, -HUGE_VALF
-  },
-  { // Entry 592
-    0.0,
-    0x1.p-126, HUGE_VALF
-  },
-  { // Entry 593
-    0.0,
-    0x1.p-149, HUGE_VALF
-  },
-  { // Entry 594
-    0.0,
-    0.0f, HUGE_VALF
-  },
-  { // Entry 595
-    0.0,
-    -0.0f, HUGE_VALF
-  },
-  { // Entry 596
-    0.0,
-    -0x1.p-149, HUGE_VALF
-  },
-  { // Entry 597
-    0.0,
-    -0x1.p-126, HUGE_VALF
-  },
-  { // Entry 598
-    HUGE_VALF,
-    HUGE_VALF, HUGE_VALF
-  },
-  { // Entry 599
-    HUGE_VALF,
-    0x1.fffffep127, HUGE_VALF
-  },
-  { // Entry 600
-    HUGE_VALF,
-    0x1.80p0, HUGE_VALF
-  },
-  { // Entry 601
-    HUGE_VALF,
-    -0x1.80p0, HUGE_VALF
-  },
-  { // Entry 602
-    HUGE_VALF,
-    -0x1.fffffep127, HUGE_VALF
-  },
-  { // Entry 603
-    HUGE_VALF,
-    -HUGE_VALF, HUGE_VALF
-  },
-  { // Entry 604
-    -0.0,
-    -HUGE_VALF, -0x1.80p1
-  },
-  { // Entry 605
-    -0.0,
-    -HUGE_VALF, -0x1.p0
-  },
-  { // Entry 606
-    0.0,
-    -HUGE_VALF, -HUGE_VALF
-  },
-  { // Entry 607
-    0.0,
-    -HUGE_VALF, -0x1.921fb6p1
-  },
-  { // Entry 608
-    0.0,
-    -HUGE_VALF, -0x1.921fb6p0
-  },
-  { // Entry 609
-    0.0,
-    -HUGE_VALF, -0x1.fffffep127
-  },
-  { // Entry 610
-    0.0,
-    -HUGE_VALF, -0x1.80p2
-  },
-  { // Entry 611
-    0.0,
-    -HUGE_VALF, -0x1.p1
-  },
-  { // Entry 612
-    0.0,
-    -HUGE_VALF, -0x1.p-126
-  },
-  { // Entry 613
-    0.0,
-    -HUGE_VALF, -0x1.p-149
-  },
-  { // Entry 614
-    -HUGE_VALF,
-    -HUGE_VALF, 0x1.80p1
-  },
-  { // Entry 615
-    -HUGE_VALF,
-    -HUGE_VALF, 0x1.40p2
-  },
-  { // Entry 616
-    HUGE_VALF,
-    -HUGE_VALF, HUGE_VALF
-  },
-  { // Entry 617
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.921fb6p1
-  },
-  { // Entry 618
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.921fb6p0
-  },
-  { // Entry 619
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.fffffep127
-  },
-  { // Entry 620
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.80p2
-  },
-  { // Entry 621
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.p1
-  },
-  { // Entry 622
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.p-126
-  },
-  { // Entry 623
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.p-149
-  },
-  { // Entry 624
-    0.0,
-    HUGE_VALF, -0x1.p-149
-  },
-  { // Entry 625
-    0.0,
-    HUGE_VALF, -0x1.p-126
-  },
-  { // Entry 626
-    0.0,
-    HUGE_VALF, -0x1.fffffep127
-  },
-  { // Entry 627
-    0.0,
-    HUGE_VALF, -HUGE_VALF
-  },
-  { // Entry 628
-    HUGE_VALF,
-    HUGE_VALF, HUGE_VALF
-  },
-  { // Entry 629
-    HUGE_VALF,
-    HUGE_VALF, 0x1.fffffep127
-  },
-  { // Entry 630
-    HUGE_VALF,
-    HUGE_VALF, 0x1.p-126
-  },
-  { // Entry 631
-    HUGE_VALF,
-    HUGE_VALF, 0x1.p-149
-  },
-  { // Entry 632
-    HUGE_VALF,
-    0x1.fffffep127, 0x1.fffffep127
-  },
-  { // Entry 633
-    0.0f,
-    0x1.p-126, 0x1.p1
-  },
-  { // Entry 634
-    0.0f,
-    -0x1.p-126, 0x1.p1
-  },
-  { // Entry 635
-    0.0f,
-    0x1.p-149, 0x1.p1
-  },
-  { // Entry 636
-    0.0f,
-    -0x1.p-149, 0x1.p1
-  },
-  { // Entry 637
-    HUGE_VALF,
-    HUGE_VALF, 0x1.p-1
-  },
-  { // Entry 638
-    0x1.fffffeffffffbfffffdfffffebfffff1p63,
-    0x1.fffffep127, 0x1.p-1
-  },
-  { // Entry 639
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
-    0x1.p-1, 0x1.p-1
-  },
-  { // Entry 640
-    0x1.p-63,
-    0x1.p-126, 0x1.p-1
-  },
-  { // Entry 641
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
-    0x1.p-149, 0x1.p-1
-  },
-  { // Entry 642
-    0.0,
-    0.0f, 0x1.p-1
-  },
-  { // Entry 643
-    0.0,
-    -0.0f, 0x1.p-1
-  },
-  { // Entry 644
-    HUGE_VALF,
-    -HUGE_VALF, 0x1.p-1
-  },
-  { // Entry 645
-    0.0,
-    HUGE_VALF, -0x1.p-1
-  },
-  { // Entry 646
-    0x1.0000008000006000005000004600003fp-64,
-    0x1.fffffep127, -0x1.p-1
-  },
-  { // Entry 647
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.p-1, -0x1.p-1
-  },
-  { // Entry 648
-    0x1.p63,
-    0x1.p-126, -0x1.p-1
-  },
-  { // Entry 649
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep74,
-    0x1.p-149, -0x1.p-1
-  },
-  { // Entry 650
-    HUGE_VALF,
-    0.0f, -0x1.p-1
-  },
-  { // Entry 651
-    HUGE_VALF,
-    -0.0f, -0x1.p-1
-  },
-  { // Entry 652
-    0.0,
-    -HUGE_VALF, -0x1.p-1
-  },
-  { // Entry 653
-    0.0,
-    0x1.p-1, HUGE_VALF
-  },
-  { // Entry 654
-    0.0f,
-    0x1.p-1, 0x1.fffffep127
-  },
-  { // Entry 655
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
-    0x1.p-1, 0x1.p-1
-  },
-  { // Entry 656
-    0x1.fffffffffffffffffffffffffffffffap-1,
-    0x1.p-1, 0x1.p-126
-  },
-  { // Entry 657
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-1, 0x1.p-149
-  },
-  { // Entry 658
-    0x1.p0,
-    0x1.p-1, 0.0f
-  },
-  { // Entry 659
-    0x1.p0,
-    0x1.p-1, -0.0f
-  },
-  { // Entry 660
-    0x1.p0,
-    0x1.p-1, -0x1.p-149
-  },
-  { // Entry 661
-    0x1.00000000000000000000000000000002p0,
-    0x1.p-1, -0x1.p-126
-  },
-  { // Entry 662
-    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
-    0x1.p-1, -0x1.p-1
-  },
-  { // Entry 663
-    HUGE_VALF,
-    0x1.p-1, -0x1.fffffep127
-  },
-  { // Entry 664
-    HUGE_VALF,
-    0x1.p-1, -HUGE_VALF
-  },
-  { // Entry 665
-    0.0,
-    -0x1.p-1, HUGE_VALF
-  },
-  { // Entry 666
-    0.0f,
-    -0x1.p-1, 0x1.fffffep127
-  },
-  { // Entry 667
-    0x1.p0,
-    -0x1.p-1, 0.0f
-  },
-  { // Entry 668
-    0x1.p0,
-    -0x1.p-1, -0.0f
-  },
-  { // Entry 669
-    HUGE_VALF,
-    -0x1.p-1, -0x1.fffffep127
-  },
-  { // Entry 670
-    HUGE_VALF,
-    -0x1.p-1, -HUGE_VALF
-  },
-  { // Entry 671
-    0x1.p1,
-    0x1.p2, 0x1.p-1
-  },
-  { // Entry 672
-    0x1.80p1,
-    0x1.20p3, 0x1.p-1
-  },
-  { // Entry 673
-    0x1.p2,
-    0x1.p4, 0x1.p-1
-  },
-  { // Entry 674
-    0x1.p-1,
-    0x1.p2, -0x1.p-1
-  },
-  { // Entry 675
-    0x1.p-2,
-    0x1.p4, -0x1.p-1
-  },
-  { // Entry 676
-    0x1.p-3,
-    0x1.p6, -0x1.p-1
-  },
-  { // Entry 677
-    HUGE_VALF,
-    0x1.fffffep-1, -0x1.74910cp62
-  },
-  { // Entry 678
-    0.0f,
-    0x1.fffffep-1, 0x1.74910cp62
-  },
-  { // Entry 679
-    0x1.p2,
-    0x1.p1, 0x1.p1
-  },
-  { // Entry 680
-    0x1.p-2,
-    0x1.p1, -0x1.p1
-  },
-  { // Entry 681
-    0x1.p2,
-    -0x1.p1, 0x1.p1
-  },
-  { // Entry 682
-    0x1.p-2,
-    -0x1.p1, -0x1.p1
-  },
-  { // Entry 683
-    0x1.b0p4,
-    0x1.80p1, 0x1.80p1
-  },
-  { // Entry 684
-    0x1.86a0p11,
-    0x1.40p2, 0x1.40p2
-  },
-  { // Entry 685
-    0x1.921ee0p19,
-    0x1.c0p2, 0x1.c0p2
-  },
-  { // Entry 686
-    0x1.2a05f2p33,
-    0x1.40p3, 0x1.40p3
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_powf, powf_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_powf_intel_data)/sizeof(powf_intel_data_t); i++) {
-    EXPECT_FLOAT_EQ(g_powf_intel_data[i].expected, powf(g_powf_intel_data[i].x_call_data, g_powf_intel_data[i].y_call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_sin_test.cpp b/tests/math_sin_test.cpp
deleted file mode 100644
index ffa4340..0000000
--- a/tests/math_sin_test.cpp
+++ /dev/null
@@ -1,5795 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  double expected;
-  double call_data;
-} sin_intel_data_t;
-
-static sin_intel_data_t g_sin_intel_data[] = {
-  { // Entry 0
-    0x1.9259e3708bd39ffffffffffffff1bdbep-5,
-    0x1.9283586503fe0p-5
-  },
-  { // Entry 1
-    -0x1.9259e3708bd39ffffffffffffff1bdbep-5,
-    -0x1.9283586503fe0p-5
-  },
-  { // Entry 2
-    0x1.d77b117f230d5ffffffffffffff2adc7p-5,
-    0x1.d7bdcd778049fp-5
-  },
-  { // Entry 3
-    -0x1.d77b117f230d5ffffffffffffff2adc7p-5,
-    -0x1.d7bdcd778049fp-5
-  },
-  { // Entry 4
-    0x1.a1490c8c06ba6fffffffffffffa98611p-4,
-    0x1.a202b3fb84788p-4
-  },
-  { // Entry 5
-    -0x1.a1490c8c06ba6fffffffffffffa98611p-4,
-    -0x1.a202b3fb84788p-4
-  },
-  { // Entry 6
-    0x1.cc40c3805229a7ffffffffffff83e76bp-3,
-    0x1.d037cb27ee6dfp-3
-  },
-  { // Entry 7
-    -0x1.cc40c3805229a7ffffffffffff83e76bp-3,
-    -0x1.d037cb27ee6dfp-3
-  },
-  { // Entry 8
-    0x1.d0ef799001ba900000000000005ea4e9p-3,
-    0x1.d5064e6fe82c5p-3
-  },
-  { // Entry 9
-    -0x1.d0ef799001ba900000000000005ea4e9p-3,
-    -0x1.d5064e6fe82c5p-3
-  },
-  { // Entry 10
-    0x1.e9950730c4695ffffffffffffffffc2ep-2,
-    0x1.fe767739d0f6dp-2
-  },
-  { // Entry 11
-    -0x1.e9950730c4695ffffffffffffffffc2ep-2,
-    -0x1.fe767739d0f6dp-2
-  },
-  { // Entry 12
-    0x1.98dcd093377928000000000000167dc7p-1,
-    0x1.d98c4c612718dp-1
-  },
-  { // Entry 13
-    -0x1.98dcd093377928000000000000167dc7p-1,
-    -0x1.d98c4c612718dp-1
-  },
-  { // Entry 14
-    0x1.ffffffffffffffffffffffffffec8831p-1,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 15
-    -0x1.ffffffffffffffffffffffffffec8831p-1,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 16
-    0x1.70a9d825b506400422155aecd519d54cp-1,
-    -0x1.0000001f8p500
-  },
-  { // Entry 17
-    -0x1.70a9d825b506400422155aecd519d54cp-1,
-    0x1.0000001f8p500
-  },
-  { // Entry 18
-    0x1.bf3980c6c1e9f4496795f4ce535016b6p-1,
-    -0x1.00c0bf8p700
-  },
-  { // Entry 19
-    -0x1.bf3980c6c1e9f4496795f4ce535016b6p-1,
-    0x1.00c0bf8p700
-  },
-  { // Entry 20
-    0x1.d62899d48b4397fb275ba44095971364p-4,
-    -0x1.13fffffffff80p6
-  },
-  { // Entry 21
-    -0x1.d62899d48b4397fb275ba44095971364p-4,
-    0x1.13fffffffff80p6
-  },
-  { // Entry 22
-    -0x1.17b7a60ce1f1485824711523ab0fd6d1p-5,
-    -0x1.17c5920767dfcp-5
-  },
-  { // Entry 23
-    0x1.17b7a60ce1f1485824711523ab0fd6d1p-5,
-    0x1.17c5920767dfcp-5
-  },
-  { // Entry 24
-    0x1.f0192b794fbbe030fe25edf65a5db9bfp-1,
-    -0x1.1d99be08713ccp2
-  },
-  { // Entry 25
-    -0x1.f0192b794fbbe030fe25edf65a5db9bfp-1,
-    0x1.1d99be08713ccp2
-  },
-  { // Entry 26
-    -0x1.5e61328c0034ec3a05d053b72e2d5945p-3,
-    -0x1.1ddbfd64fc0d3p81
-  },
-  { // Entry 27
-    0x1.5e61328c0034ec3a05d053b72e2d5945p-3,
-    0x1.1ddbfd64fc0d3p81
-  },
-  { // Entry 28
-    0x1.fb028c5df1db3eb32b0062c6cd4dea0bp-1,
-    -0x1.1e2a1563e068ep7
-  },
-  { // Entry 29
-    -0x1.fb028c5df1db3eb32b0062c6cd4dea0bp-1,
-    0x1.1e2a1563e068ep7
-  },
-  { // Entry 30
-    -0x1.2cefb196ba2077fffffd4bd650722bfbp-3,
-    -0x1.2e07a91314dp-3
-  },
-  { // Entry 31
-    0x1.2cefb196ba2077fffffd4bd650722bfbp-3,
-    0x1.2e07a91314dp-3
-  },
-  { // Entry 32
-    0x1.b80f489d3edf4835de7deeeb5bb38ad9p-2,
-    -0x1.3bcec270444e2p3
-  },
-  { // Entry 33
-    -0x1.b80f489d3edf4835de7deeeb5bb38ad9p-2,
-    0x1.3bcec270444e2p3
-  },
-  { // Entry 34
-    -0x1.4fffffffffa38800000004dd22ccccccp-20,
-    -0x1.5000000000040p-20
-  },
-  { // Entry 35
-    0x1.4fffffffffa38800000004dd22ccccccp-20,
-    0x1.5000000000040p-20
-  },
-  { // Entry 36
-    -0x1.d29da5b44f51b7fc019f183e1d3bd511p-2,
-    -0x1.559001a42d90cp1
-  },
-  { // Entry 37
-    0x1.d29da5b44f51b7fc019f183e1d3bd511p-2,
-    0x1.559001a42d90cp1
-  },
-  { // Entry 38
-    -0x1.f85f526147f787fffff15241e719734bp-1,
-    -0x1.597bf3e9776b7p99
-  },
-  { // Entry 39
-    0x1.f85f526147f787fffff15241e719734bp-1,
-    0x1.597bf3e9776b7p99
-  },
-  { // Entry 40
-    -0x1.6d61b58c99c42f1396af4a42148f73c6p-59,
-    -0x1.6c6cbc45dc8dep7
-  },
-  { // Entry 41
-    0x1.6d61b58c99c42f1396af4a42148f73c6p-59,
-    0x1.6c6cbc45dc8dep7
-  },
-  { // Entry 42
-    0x1.e5c3c08a258a77f1d12efa8c30166709p-1,
-    -0x1.73d8d173f90d0p4
-  },
-  { // Entry 43
-    -0x1.e5c3c08a258a77f1d12efa8c30166709p-1,
-    0x1.73d8d173f90d0p4
-  },
-  { // Entry 44
-    0x1.feb36806ca5fb7ea442119af41be0f4fp-1,
-    -0x1.8c202d3a31802p6
-  },
-  { // Entry 45
-    -0x1.feb36806ca5fb7ea442119af41be0f4fp-1,
-    0x1.8c202d3a31802p6
-  },
-  { // Entry 46
-    -0x1.7c6c7b01b98d947cd8add5e5d1ae11cap-1,
-    -0x1.acd538b1a6d5dp-1
-  },
-  { // Entry 47
-    0x1.7c6c7b01b98d947cd8add5e5d1ae11cap-1,
-    0x1.acd538b1a6d5dp-1
-  },
-  { // Entry 48
-    -0x1.191be2059dcb57fed86dd2cc62eb1a9fp-1,
-    -0x1.b7525ac97e0d2p2
-  },
-  { // Entry 49
-    0x1.191be2059dcb57fed86dd2cc62eb1a9fp-1,
-    0x1.b7525ac97e0d2p2
-  },
-  { // Entry 50
-    -0x1.f8305993a212c7fffffc15c2afa5e57ep-1,
-    -0x1.bee5fa8a84b02p0
-  },
-  { // Entry 51
-    0x1.f8305993a212c7fffffc15c2afa5e57ep-1,
-    0x1.bee5fa8a84b02p0
-  },
-  { // Entry 52
-    0x1.ff3b13530fd70e72b77f7c6721da1131p-1,
-    -0x1.c393979fe5921p9
-  },
-  { // Entry 53
-    -0x1.ff3b13530fd70e72b77f7c6721da1131p-1,
-    0x1.c393979fe5921p9
-  },
-  { // Entry 54
-    -0x1.f119da81a4da57ffd8bcc5a1247f5590p-1,
-    -0x1.c48ffc72563c8p18
-  },
-  { // Entry 55
-    0x1.f119da81a4da57ffd8bcc5a1247f5590p-1,
-    0x1.c48ffc72563c8p18
-  },
-  { // Entry 56
-    -0x1.fd73b81e04ccc7e9d764eca8bb085109p-1,
-    -0x1.c79548bc31856p3
-  },
-  { // Entry 57
-    0x1.fd73b81e04ccc7e9d764eca8bb085109p-1,
-    0x1.c79548bc31856p3
-  },
-  { // Entry 58
-    -0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
-    -0x1.cb6p-3
-  },
-  { // Entry 59
-    0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
-    0x1.cb6p-3
-  },
-  { // Entry 60
-    -0x1.e6494911eedd08d1650a4b5136c3e6d6p-7,
-    -0x1.e64ddaf7bd72fp-7
-  },
-  { // Entry 61
-    0x1.e6494911eedd08d1650a4b5136c3e6d6p-7,
-    0x1.e64ddaf7bd72fp-7
-  },
-  { // Entry 62
-    0x1.e180eef5b1c887fff585594949b46e6cp-1,
-    -0x1.ecdd0fbf07942p5
-  },
-  { // Entry 63
-    -0x1.e180eef5b1c887fff585594949b46e6cp-1,
-    0x1.ecdd0fbf07942p5
-  },
-  { // Entry 64
-    -0x1.fd98d20c1be4380000001ee51562d7a8p-1,
-    -0x1.f073a23292337p2
-  },
-  { // Entry 65
-    0x1.fd98d20c1be4380000001ee51562d7a8p-1,
-    0x1.f073a23292337p2
-  },
-  { // Entry 66
-    -0x1.7268c112297c87d17633bab722f31a3fp-5,
-    -0x1.f5e4c410f4ef8p15
-  },
-  { // Entry 67
-    0x1.7268c112297c87d17633bab722f31a3fp-5,
-    0x1.f5e4c410f4ef8p15
-  },
-  { // Entry 68
-    0x1.420796146070e628c19d38d1e90df228p-18,
-    -0x1.f8000000002p95
-  },
-  { // Entry 69
-    -0x1.420796146070e628c19d38d1e90df228p-18,
-    0x1.f8000000002p95
-  },
-  { // Entry 70
-    -0x1.e4f6dc499d9cc8035607fa3d76f9f4c5p-2,
-    -0x1.f9365d79546e1p-2
-  },
-  { // Entry 71
-    0x1.e4f6dc499d9cc8035607fa3d76f9f4c5p-2,
-    0x1.f9365d79546e1p-2
-  },
-  { // Entry 72
-    0x1.b2ef99b140d650468aed82fe0d442adap-14,
-    -0x1.ffffffffffe7ep1023
-  },
-  { // Entry 73
-    -0x1.b2ef99b140d650468aed82fe0d442adap-14,
-    0x1.ffffffffffe7ep1023
-  },
-  { // Entry 74
-    0x1.db0ffc3ecc6e3b8e37357ca002d5625bp-1,
-    0x1.0p15
-  },
-  { // Entry 75
-    -0x1.db0ffc3ecc6e3b8e37357ca002d5625bp-1,
-    -0x1.0p15
-  },
-  { // Entry 76
-    -0x1.e98f87098b62699ad16e0259b0e85b24p-1,
-    0x1.0000000000001p13
-  },
-  { // Entry 77
-    0x1.e98f87098b62699ad16e0259b0e85b24p-1,
-    -0x1.0000000000001p13
-  },
-  { // Entry 78
-    0x1.053c35068e10d45ee50f2d1ddcabcf3dp-4,
-    0x1.0000000000001p52
-  },
-  { // Entry 79
-    -0x1.053c35068e10d45ee50f2d1ddcabcf3dp-4,
-    -0x1.0000000000001p52
-  },
-  { // Entry 80
-    0x1.72d421b6884e500bbd3a9efc0f0ced92p-1,
-    0x1.0000000000001p228
-  },
-  { // Entry 81
-    -0x1.72d421b6884e500bbd3a9efc0f0ced92p-1,
-    -0x1.0000000000001p228
-  },
-  { // Entry 82
-    0x1.77fba987c56533a665e88e5a592ca10cp-1,
-    0x1.0000000000001p491
-  },
-  { // Entry 83
-    -0x1.77fba987c56533a665e88e5a592ca10cp-1,
-    -0x1.0000000000001p491
-  },
-  { // Entry 84
-    -0x1.723b2625331af2e79a9f07145a1e5731p-1,
-    0x1.0000000000003p215
-  },
-  { // Entry 85
-    0x1.723b2625331af2e79a9f07145a1e5731p-1,
-    -0x1.0000000000003p215
-  },
-  { // Entry 86
-    0x1.aed548f090cf47fe7e32103ab140caf8p-1,
-    0x1.0000000000006p0
-  },
-  { // Entry 87
-    -0x1.aed548f090cf47fe7e32103ab140caf8p-1,
-    -0x1.0000000000006p0
-  },
-  { // Entry 88
-    -0x1.ff983208c7dc978079174b461b3809f0p-1,
-    0x1.0000000000007p8
-  },
-  { // Entry 89
-    0x1.ff983208c7dc978079174b461b3809f0p-1,
-    -0x1.0000000000007p8
-  },
-  { // Entry 90
-    0x1.ffef29dc38452ffef4a779a1f86707dap-1,
-    0x1.0000000000007p275
-  },
-  { // Entry 91
-    -0x1.ffef29dc38452ffef4a779a1f86707dap-1,
-    -0x1.0000000000007p275
-  },
-  { // Entry 92
-    -0x1.fa88c375723c0d7ea1f2d08ebb2f9407p-8,
-    0x1.0000000000007p449
-  },
-  { // Entry 93
-    0x1.fa88c375723c0d7ea1f2d08ebb2f9407p-8,
-    -0x1.0000000000007p449
-  },
-  { // Entry 94
-    0x1.fff5322c94eae1b0b51086c08faa585cp-1,
-    0x1.0000000000011p644
-  },
-  { // Entry 95
-    -0x1.fff5322c94eae1b0b51086c08faa585cp-1,
-    -0x1.0000000000011p644
-  },
-  { // Entry 96
-    -0x1.a73630af8f15b8000054ddd950bba107p-1,
-    0x1.000000000001fp164
-  },
-  { // Entry 97
-    0x1.a73630af8f15b8000054ddd950bba107p-1,
-    -0x1.000000000001fp164
-  },
-  { // Entry 98
-    0x1.1c548f9249e4474988646b86894e9581p-2,
-    0x1.0000000000038p380
-  },
-  { // Entry 99
-    -0x1.1c548f9249e4474988646b86894e9581p-2,
-    -0x1.0000000000038p380
-  },
-  { // Entry 100
-    0x1.ca965bd2c4dfee4779ca8c797806292dp-3,
-    0x1.0000000000118p380
-  },
-  { // Entry 101
-    -0x1.ca965bd2c4dfee4779ca8c797806292dp-3,
-    -0x1.0000000000118p380
-  },
-  { // Entry 102
-    -0x1.837b9dddc24cf2f729a38147795b18d2p-1,
-    0x1.000000000012cp2
-  },
-  { // Entry 103
-    0x1.837b9dddc24cf2f729a38147795b18d2p-1,
-    -0x1.000000000012cp2
-  },
-  { // Entry 104
-    0x1.d82c1784c3ecbfefb02d7d6b585f73c4p-2,
-    0x1.00000000001f8p700
-  },
-  { // Entry 105
-    -0x1.d82c1784c3ecbfefb02d7d6b585f73c4p-2,
-    -0x1.00000000001f8p700
-  },
-  { // Entry 106
-    0x1.fffeaaaaef2ee7ee876f90b70b512475p-8,
-    0x1.00000000002p-7
-  },
-  { // Entry 107
-    -0x1.fffeaaaaef2ee7ee876f90b70b512475p-8,
-    -0x1.00000000002p-7
-  },
-  { // Entry 108
-    -0x1.0871bddd90fc5834034ee3f6f86b43a3p-1,
-    0x1.00000000002p40
-  },
-  { // Entry 109
-    0x1.0871bddd90fc5834034ee3f6f86b43a3p-1,
-    -0x1.00000000002p40
-  },
-  { // Entry 110
-    0x1.fffeaaaaef2f07ee476fa60c5dbe4886p-8,
-    0x1.0000000000201p-7
-  },
-  { // Entry 111
-    -0x1.fffeaaaaef2f07ee476fa60c5dbe4886p-8,
-    -0x1.0000000000201p-7
-  },
-  { // Entry 112
-    0x1.fffeaaaaef3307e6477250b6ab524ab7p-8,
-    0x1.0000000000221p-7
-  },
-  { // Entry 113
-    -0x1.fffeaaaaef3307e6477250b6ab524ab7p-8,
-    -0x1.0000000000221p-7
-  },
-  { // Entry 114
-    0x1.fffeaaaaef3627e00774660bb7d7a87cp-8,
-    0x1.000000000023ap-7
-  },
-  { // Entry 115
-    -0x1.fffeaaaaef3627e00774660bb7d7a87cp-8,
-    -0x1.000000000023ap-7
-  },
-  { // Entry 116
-    0x1.e0c6edfa9360159534def713925f126fp-9,
-    0x1.00000000040p45
-  },
-  { // Entry 117
-    -0x1.e0c6edfa9360159534def713925f126fp-9,
-    -0x1.00000000040p45
-  },
-  { // Entry 118
-    0x1.ea1f618356db0d3ab66d0ef6493bc93dp-5,
-    0x1.0000000c0p40
-  },
-  { // Entry 119
-    -0x1.ea1f618356db0d3ab66d0ef6493bc93dp-5,
-    -0x1.0000000c0p40
-  },
-  { // Entry 120
-    0x1.faaeed7587541fffff9922ba6690b8bap-3,
-    0x1.00000013c86f4p-2
-  },
-  { // Entry 121
-    -0x1.faaeed7587541fffff9922ba6690b8bap-3,
-    -0x1.00000013c86f4p-2
-  },
-  { // Entry 122
-    0x1.540bc7785680ac2ca169ff9e3cc4b152p-1,
-    0x1.001p13
-  },
-  { // Entry 123
-    -0x1.540bc7785680ac2ca169ff9e3cc4b152p-1,
-    -0x1.001p13
-  },
-  { // Entry 124
-    -0x1.37a7cb907a2e500106b04d9e3f0b1b8cp-1,
-    0x1.003p699
-  },
-  { // Entry 125
-    0x1.37a7cb907a2e500106b04d9e3f0b1b8cp-1,
-    -0x1.003p699
-  },
-  { // Entry 126
-    -0x1.29e5845fc54b580145273f2cafe73ab5p-1,
-    0x1.00380p40
-  },
-  { // Entry 127
-    0x1.29e5845fc54b580145273f2cafe73ab5p-1,
-    -0x1.00380p40
-  },
-  { // Entry 128
-    0x1.ffe5ca46564917a1e812aedd48fe107cp-1,
-    0x1.007p10
-  },
-  { // Entry 129
-    -0x1.ffe5ca46564917a1e812aedd48fe107cp-1,
-    -0x1.007p10
-  },
-  { // Entry 130
-    0x1.ea4df82db014ac0c913465da57b6a643p-1,
-    0x1.007p25
-  },
-  { // Entry 131
-    -0x1.ea4df82db014ac0c913465da57b6a643p-1,
-    -0x1.007p25
-  },
-  { // Entry 132
-    0x1.fe757aef1c80c7ec16003d3ae5f0ce15p-1,
-    0x1.007p41
-  },
-  { // Entry 133
-    -0x1.fe757aef1c80c7ec16003d3ae5f0ce15p-1,
-    -0x1.007p41
-  },
-  { // Entry 134
-    0x1.e9b71805ec0685d484f6270f6411dc36p-7,
-    0x1.00cp41
-  },
-  { // Entry 135
-    -0x1.e9b71805ec0685d484f6270f6411dc36p-7,
-    -0x1.00cp41
-  },
-  { // Entry 136
-    0x1.b0b6d0a54058280008e80488f8ab1bb7p-1,
-    0x1.01c00000001p0
-  },
-  { // Entry 137
-    -0x1.b0b6d0a54058280008e80488f8ab1bb7p-1,
-    -0x1.01c00000001p0
-  },
-  { // Entry 138
-    0x1.fef009262701280b92aaf925dda63bbap-3,
-    0x1.02322e46da919p-2
-  },
-  { // Entry 139
-    -0x1.fef009262701280b92aaf925dda63bbap-3,
-    -0x1.02322e46da919p-2
-  },
-  { // Entry 140
-    0x1.ffc90059804a082d9b3f46b77ee81932p-3,
-    0x1.02a236478p-2
-  },
-  { // Entry 141
-    -0x1.ffc90059804a082d9b3f46b77ee81932p-3,
-    -0x1.02a236478p-2
-  },
-  { // Entry 142
-    0x1.ffd10a6b5429e828bef4d9413eb9f6c0p-3,
-    0x1.02a65d08ca5e5p-2
-  },
-  { // Entry 143
-    -0x1.ffd10a6b5429e828bef4d9413eb9f6c0p-3,
-    -0x1.02a65d08ca5e5p-2
-  },
-  { // Entry 144
-    0x1.ffd10ab302a3f7e0a048db5861e7b20bp-3,
-    0x1.02a65d2dce49ap-2
-  },
-  { // Entry 145
-    -0x1.ffd10ab302a3f7e0a048db5861e7b20bp-3,
-    -0x1.02a65d2dce49ap-2
-  },
-  { // Entry 146
-    0x1.ffe0b1764ca4c7d2329433828cdc901cp-3,
-    0x1.02ae7238ap-2
-  },
-  { // Entry 147
-    -0x1.ffe0b1764ca4c7d2329433828cdc901cp-3,
-    -0x1.02ae7238ap-2
-  },
-  { // Entry 148
-    -0x1.f68f0e26c0f6ad44f7184d56be95e1aep-3,
-    0x1.0501d22221dacp621
-  },
-  { // Entry 149
-    0x1.f68f0e26c0f6ad44f7184d56be95e1aep-3,
-    -0x1.0501d22221dacp621
-  },
-  { // Entry 150
-    0x1.b63c41f09eb747f30c1af5f254340a4cp-1,
-    0x1.06ffffffffff8p0
-  },
-  { // Entry 151
-    -0x1.b63c41f09eb747f30c1af5f254340a4cp-1,
-    -0x1.06ffffffffff8p0
-  },
-  { // Entry 152
-    -0x1.ffdc173adabb1afd58fcb5643cd86562p-1,
-    0x1.07023d3d44215p12
-  },
-  { // Entry 153
-    0x1.ffdc173adabb1afd58fcb5643cd86562p-1,
-    -0x1.07023d3d44215p12
-  },
-  { // Entry 154
-    0x1.0889e11bef1357a88742ab3a7f180786p-5,
-    0x1.0895a7a3e8ae6p-5
-  },
-  { // Entry 155
-    -0x1.0889e11bef1357a88742ab3a7f180786p-5,
-    -0x1.0895a7a3e8ae6p-5
-  },
-  { // Entry 156
-    0x1.08ca077c764457aa6d968afc1d1b17b3p-5,
-    0x1.08d5d69840601p-5
-  },
-  { // Entry 157
-    -0x1.08ca077c764457aa6d968afc1d1b17b3p-5,
-    -0x1.08d5d69840601p-5
-  },
-  { // Entry 158
-    -0x1.ff7fbe518023e90b3f28f81ab93e872fp-1,
-    0x1.0e0p6
-  },
-  { // Entry 159
-    0x1.ff7fbe518023e90b3f28f81ab93e872fp-1,
-    -0x1.0e0p6
-  },
-  { // Entry 160
-    -0x1.fd6c68b877afe803aaab2bd30124ecdfp-1,
-    0x1.107ba49c346e4p9
-  },
-  { // Entry 161
-    0x1.fd6c68b877afe803aaab2bd30124ecdfp-1,
-    -0x1.107ba49c346e4p9
-  },
-  { // Entry 162
-    -0x1.a2ba6bc70bce4801ea4d1c85f116193dp-1,
-    0x1.1491544774440p745
-  },
-  { // Entry 163
-    0x1.a2ba6bc70bce4801ea4d1c85f116193dp-1,
-    -0x1.1491544774440p745
-  },
-  { // Entry 164
-    0x1.165609790f23484a4701b4439d4fe51fp-5,
-    0x1.1663c0e518180p-5
-  },
-  { // Entry 165
-    -0x1.165609790f23484a4701b4439d4fe51fp-5,
-    -0x1.1663c0e518180p-5
-  },
-  { // Entry 166
-    -0x1.fc0523ff94e44c01731e45963034cba8p-1,
-    0x1.1745d1745d176p238
-  },
-  { // Entry 167
-    0x1.fc0523ff94e44c01731e45963034cba8p-1,
-    -0x1.1745d1745d176p238
-  },
-  { // Entry 168
-    0x1.f34a729c584bcc9666402cfdb48839ffp-1,
-    0x1.17472a408a3e0p97
-  },
-  { // Entry 169
-    -0x1.f34a729c584bcc9666402cfdb48839ffp-1,
-    -0x1.17472a408a3e0p97
-  },
-  { // Entry 170
-    0x1.177fae169fdf0858b1d4e7bad69981dcp-5,
-    0x1.178d91b6b992dp-5
-  },
-  { // Entry 171
-    -0x1.177fae169fdf0858b1d4e7bad69981dcp-5,
-    -0x1.178d91b6b992dp-5
-  },
-  { // Entry 172
-    0x1.177fae16a120e85843d1dfef36726cecp-5,
-    0x1.178d91b6bad4ep-5
-  },
-  { // Entry 173
-    -0x1.177fae16a120e85843d1dfef36726cecp-5,
-    -0x1.178d91b6bad4ep-5
-  },
-  { // Entry 174
-    0x1.177fae16a1f78856637cc9da8aaf6439p-5,
-    0x1.178d91b6bbabap-5
-  },
-  { // Entry 175
-    -0x1.177fae16a1f78856637cc9da8aaf6439p-5,
-    -0x1.178d91b6bbabap-5
-  },
-  { // Entry 176
-    0x1.177fae16a40fe858da1ddcb583bb9f3bp-5,
-    0x1.178d91b6bdc45p-5
-  },
-  { // Entry 177
-    -0x1.177fae16a40fe858da1ddcb583bb9f3bp-5,
-    -0x1.178d91b6bdc45p-5
-  },
-  { // Entry 178
-    0x1.297c768f2413080002edcb9a905946afp-1,
-    0x1.19752dbee5f6ap933
-  },
-  { // Entry 179
-    -0x1.297c768f2413080002edcb9a905946afp-1,
-    -0x1.19752dbee5f6ap933
-  },
-  { // Entry 180
-    0x1.b826df5cafafa824779bb808d64de6fbp-2,
-    0x1.1b3009cfe4dbcp8
-  },
-  { // Entry 181
-    -0x1.b826df5cafafa824779bb808d64de6fbp-2,
-    -0x1.1b3009cfe4dbcp8
-  },
-  { // Entry 182
-    0x1.b7a5956250b6a83882133bbe14c847ccp-2,
-    0x1.1f6475d95bf18p3
-  },
-  { // Entry 183
-    -0x1.b7a5956250b6a83882133bbe14c847ccp-2,
-    -0x1.1f6475d95bf18p3
-  },
-  { // Entry 184
-    0x1.4db6566b645477ffea9faaf8bf463a1ep-1,
-    0x1.229148a452291p118
-  },
-  { // Entry 185
-    -0x1.4db6566b645477ffea9faaf8bf463a1ep-1,
-    -0x1.229148a452291p118
-  },
-  { // Entry 186
-    0x1.1686fee2c49a7fffb68df681b2da7e49p-1,
-    0x1.268p-1
-  },
-  { // Entry 187
-    -0x1.1686fee2c49a7fffb68df681b2da7e49p-1,
-    -0x1.268p-1
-  },
-  { // Entry 188
-    0x1.22eb21a44d62780000031ae43c448511p-2,
-    0x1.26fb3844dd190p-2
-  },
-  { // Entry 189
-    -0x1.22eb21a44d62780000031ae43c448511p-2,
-    -0x1.26fb3844dd190p-2
-  },
-  { // Entry 190
-    0x1.d4a216d89b2b37f40ff08753ed600e74p-1,
-    0x1.27fffffffe6b0p0
-  },
-  { // Entry 191
-    -0x1.d4a216d89b2b37f40ff08753ed600e74p-1,
-    -0x1.27fffffffe6b0p0
-  },
-  { // Entry 192
-    -0x1.76c9b0f3a22f73cfd4453fcf7b21e358p-1,
-    0x1.284b84048d481p204
-  },
-  { // Entry 193
-    0x1.76c9b0f3a22f73cfd4453fcf7b21e358p-1,
-    -0x1.284b84048d481p204
-  },
-  { // Entry 194
-    -0x1.ff01226f97d32d6b5c0d5e4a3a2f53c3p-1,
-    0x1.2999e3109cad4p2
-  },
-  { // Entry 195
-    0x1.ff01226f97d32d6b5c0d5e4a3a2f53c3p-1,
-    -0x1.2999e3109cad4p2
-  },
-  { // Entry 196
-    0x1.2a8f11e7ae82c0a374855b53b3605d3bp-5,
-    0x1.2aap-5
-  },
-  { // Entry 197
-    -0x1.2a8f11e7ae82c0a374855b53b3605d3bp-5,
-    -0x1.2aap-5
-  },
-  { // Entry 198
-    0x1.2b03d1bf773df7b697d8a97eccefec50p-5,
-    0x1.2b14d3be0c230p-5
-  },
-  { // Entry 199
-    -0x1.2b03d1bf773df7b697d8a97eccefec50p-5,
-    -0x1.2b14d3be0c230p-5
-  },
-  { // Entry 200
-    -0x1.ffb90ee641791e699aa7fc7139bf58b4p-1,
-    0x1.2b7cb44849981p2
-  },
-  { // Entry 201
-    0x1.ffb90ee641791e699aa7fc7139bf58b4p-1,
-    -0x1.2b7cb44849981p2
-  },
-  { // Entry 202
-    -0x1.ffffff79e71a3db22109c6bb87f9c237p-1,
-    0x1.2becc86852580p200
-  },
-  { // Entry 203
-    0x1.ffffff79e71a3db22109c6bb87f9c237p-1,
-    -0x1.2becc86852580p200
-  },
-  { // Entry 204
-    -0x1.fff9edaf85b76f6cbb2f5b7e384cbbc9p-1,
-    0x1.2cfa14ce27cd5p2
-  },
-  { // Entry 205
-    0x1.fff9edaf85b76f6cbb2f5b7e384cbbc9p-1,
-    -0x1.2cfa14ce27cd5p2
-  },
-  { // Entry 206
-    0x1.2cbaaa4cebb517fe7bd14f062afec390p-4,
-    0x1.2d0p-4
-  },
-  { // Entry 207
-    -0x1.2cbaaa4cebb517fe7bd14f062afec390p-4,
-    -0x1.2d0p-4
-  },
-  { // Entry 208
-    -0x1.ffffbc177e00ff89cbb4f49a0643da78p-1,
-    0x1.2d76d18721be8p2
-  },
-  { // Entry 209
-    0x1.ffffbc177e00ff89cbb4f49a0643da78p-1,
-    -0x1.2d76d18721be8p2
-  },
-  { // Entry 210
-    0x1.745843dfafefd1bf9656896a8fb5b0e3p-18,
-    0x1.302a494e09090p97
-  },
-  { // Entry 211
-    -0x1.745843dfafefd1bf9656896a8fb5b0e3p-18,
-    -0x1.302a494e09090p97
-  },
-  { // Entry 212
-    0x1.ffcc568d423766c92e9c175f9210f1f4p-1,
-    0x1.31cc731cc731cp1000
-  },
-  { // Entry 213
-    -0x1.ffcc568d423766c92e9c175f9210f1f4p-1,
-    -0x1.31cc731cc731cp1000
-  },
-  { // Entry 214
-    0x1.b676077d4faf7927da1f858539fad1ffp-1,
-    0x1.328463d4f8ca6p441
-  },
-  { // Entry 215
-    -0x1.b676077d4faf7927da1f858539fad1ffp-1,
-    -0x1.328463d4f8ca6p441
-  },
-  { // Entry 216
-    -0x1.fffffffffffffffff3471d8dc070d5e6p-1,
-    0x1.32ce90b32171ep18
-  },
-  { // Entry 217
-    0x1.fffffffffffffffff3471d8dc070d5e6p-1,
-    -0x1.32ce90b32171ep18
-  },
-  { // Entry 218
-    0x1.35cbd3240d148845d39ebd54b1556779p-5,
-    0x1.35debd7f020ecp-5
-  },
-  { // Entry 219
-    -0x1.35cbd3240d148845d39ebd54b1556779p-5,
-    -0x1.35debd7f020ecp-5
-  },
-  { // Entry 220
-    0x1.3bb2086559fa982e5c6da10d8d9ac931p-7,
-    0x1.3bb3487893405p-7
-  },
-  { // Entry 221
-    -0x1.3bb2086559fa982e5c6da10d8d9ac931p-7,
-    -0x1.3bb3487893405p-7
-  },
-  { // Entry 222
-    0x1.3bb2086559fab82dfb1925eac2ab8bc1p-7,
-    0x1.3bb3487893407p-7
-  },
-  { // Entry 223
-    -0x1.3bb2086559fab82dfb1925eac2ab8bc1p-7,
-    -0x1.3bb3487893407p-7
-  },
-  { // Entry 224
-    0x1.dff197edc51d235e4a4cc6e34bd1fd10p-16,
-    0x1.3bb681d65aa60p100
-  },
-  { // Entry 225
-    -0x1.dff197edc51d235e4a4cc6e34bd1fd10p-16,
-    -0x1.3bb681d65aa60p100
-  },
-  { // Entry 226
-    -0x1.5d08d3dbb41af80000053ba30e95e709p-3,
-    0x1.3f9aa8626042fp83
-  },
-  { // Entry 227
-    0x1.5d08d3dbb41af80000053ba30e95e709p-3,
-    -0x1.3f9aa8626042fp83
-  },
-  { // Entry 228
-    0x1.fb503983f94bb749fce9ccca56a35ec6p-3,
-    0x1.3fep19
-  },
-  { // Entry 229
-    -0x1.fb503983f94bb749fce9ccca56a35ec6p-3,
-    -0x1.3fep19
-  },
-  { // Entry 230
-    -0x1.d3876eacc9ee6ec5a93ea14e032f9b02p-1,
-    0x1.4285478f1e3c8p58
-  },
-  { // Entry 231
-    0x1.d3876eacc9ee6ec5a93ea14e032f9b02p-1,
-    -0x1.4285478f1e3c8p58
-  },
-  { // Entry 232
-    0x1.42b66d54f69c0fabe371d703a1d7d7c9p-5,
-    0x1.42cbcf45a169ep-5
-  },
-  { // Entry 233
-    -0x1.42b66d54f69c0fabe371d703a1d7d7c9p-5,
-    -0x1.42cbcf45a169ep-5
-  },
-  { // Entry 234
-    0x1.b45e9e942755380000015e1db0ce188dp-1,
-    0x1.43fffffffff6ap557
-  },
-  { // Entry 235
-    -0x1.b45e9e942755380000015e1db0ce188dp-1,
-    -0x1.43fffffffff6ap557
-  },
-  { // Entry 236
-    0x1.43ffffffea602800006ed7862b3224a6p-17,
-    0x1.440p-17
-  },
-  { // Entry 237
-    -0x1.43ffffffea602800006ed7862b3224a6p-17,
-    -0x1.440p-17
-  },
-  { // Entry 238
-    -0x1.6a4e98d2d8b1b7fb43fef1bc4e3245bbp-1,
-    0x1.4748c08dc0976p200
-  },
-  { // Entry 239
-    0x1.6a4e98d2d8b1b7fb43fef1bc4e3245bbp-1,
-    -0x1.4748c08dc0976p200
-  },
-  { // Entry 240
-    -0x1.b57ca8aacf2a937a269ccdfa8b38c8c1p-1,
-    0x1.478fc08p43
-  },
-  { // Entry 241
-    0x1.b57ca8aacf2a937a269ccdfa8b38c8c1p-1,
-    -0x1.478fc08p43
-  },
-  { // Entry 242
-    0x1.ffe38008ef6b4956b290202d414d59c3p-1,
-    0x1.4cf36d17c596ep200
-  },
-  { // Entry 243
-    -0x1.ffe38008ef6b4956b290202d414d59c3p-1,
-    -0x1.4cf36d17c596ep200
-  },
-  { // Entry 244
-    0x1.d6457a3f12e6c527a853470401d35d2dp-1,
-    0x1.4f0f308p488
-  },
-  { // Entry 245
-    -0x1.d6457a3f12e6c527a853470401d35d2dp-1,
-    -0x1.4f0f308p488
-  },
-  { // Entry 246
-    0x1.4fffffffff9f88000000084f22ccccccp-20,
-    0x1.5p-20
-  },
-  { // Entry 247
-    -0x1.4fffffffff9f88000000084f22ccccccp-20,
-    -0x1.5p-20
-  },
-  { // Entry 248
-    -0x1.cbad095f503a18019a7b27170f6a4acfp-1,
-    0x1.5143e25a488f1p3
-  },
-  { // Entry 249
-    0x1.cbad095f503a18019a7b27170f6a4acfp-1,
-    -0x1.5143e25a488f1p3
-  },
-  { // Entry 250
-    -0x1.f942d6262e82dd6834ded8c90d0f8212p-5,
-    0x1.51f0f44da4df4p200
-  },
-  { // Entry 251
-    0x1.f942d6262e82dd6834ded8c90d0f8212p-5,
-    -0x1.51f0f44da4df4p200
-  },
-  { // Entry 252
-    -0x1.fc466ccaece804aac14e79aaba4b5c1ep-3,
-    0x1.52ad6c5a3602fp16
-  },
-  { // Entry 253
-    0x1.fc466ccaece804aac14e79aaba4b5c1ep-3,
-    -0x1.52ad6c5a3602fp16
-  },
-  { // Entry 254
-    0x1.d69c3cf4eecdd9b43726a2a7fa405c31p-1,
-    0x1.52f00e0p793
-  },
-  { // Entry 255
-    -0x1.d69c3cf4eecdd9b43726a2a7fa405c31p-1,
-    -0x1.52f00e0p793
-  },
-  { // Entry 256
-    0x1.e120292f3d4956579f9c3164cd94bad6p-1,
-    0x1.5555555555556p239
-  },
-  { // Entry 257
-    -0x1.e120292f3d4956579f9c3164cd94bad6p-1,
-    -0x1.5555555555556p239
-  },
-  { // Entry 258
-    -0x1.fd1d85b7ef0037fc4b1d1763882085f1p-1,
-    0x1.5a0000008p6
-  },
-  { // Entry 259
-    0x1.fd1d85b7ef0037fc4b1d1763882085f1p-1,
-    -0x1.5a0000008p6
-  },
-  { // Entry 260
-    0x1.5aff9664b07e1a2e0f24b2572ddbff64p-6,
-    0x1.5b063ad2dd08fp-6
-  },
-  { // Entry 261
-    -0x1.5aff9664b07e1a2e0f24b2572ddbff64p-6,
-    -0x1.5b063ad2dd08fp-6
-  },
-  { // Entry 262
-    -0x1.83f8bbb59f2f8cd8ebbd44c459e4c493p-1,
-    0x1.5b179d75fa285p2
-  },
-  { // Entry 263
-    0x1.83f8bbb59f2f8cd8ebbd44c459e4c493p-1,
-    -0x1.5b179d75fa285p2
-  },
-  { // Entry 264
-    0x1.fa865b0d994968390f9480c9caf49cb1p-1,
-    0x1.5bb5967402f9cp79
-  },
-  { // Entry 265
-    -0x1.fa865b0d994968390f9480c9caf49cb1p-1,
-    -0x1.5bb5967402f9cp79
-  },
-  { // Entry 266
-    0x1.e8a523fce884d189bdb87c20ed615944p-2,
-    0x1.5bea010p468
-  },
-  { // Entry 267
-    -0x1.e8a523fce884d189bdb87c20ed615944p-2,
-    -0x1.5bea010p468
-  },
-  { // Entry 268
-    -0x1.ff2ad941f0a40ea3bc29e6dd9c339b63p-1,
-    0x1.5f19fbc507af6p9
-  },
-  { // Entry 269
-    0x1.ff2ad941f0a40ea3bc29e6dd9c339b63p-1,
-    -0x1.5f19fbc507af6p9
-  },
-  { // Entry 270
-    -0x1.75ce4a0d0bd037fd53042cab82404953p-1,
-    0x1.60a610a658da9p889
-  },
-  { // Entry 271
-    0x1.75ce4a0d0bd037fd53042cab82404953p-1,
-    -0x1.60a610a658da9p889
-  },
-  { // Entry 272
-    -0x1.721586594ab4818acd4cb41fafc99484p-1,
-    0x1.62ad7ce17143dp62
-  },
-  { // Entry 273
-    0x1.721586594ab4818acd4cb41fafc99484p-1,
-    -0x1.62ad7ce17143dp62
-  },
-  { // Entry 274
-    0x1.b8d27019d1b9e836b953613c87acf3a9p-2,
-    0x1.645926cc1132cp9
-  },
-  { // Entry 275
-    -0x1.b8d27019d1b9e836b953613c87acf3a9p-2,
-    -0x1.645926cc1132cp9
-  },
-  { // Entry 276
-    0x1.647e09059c1e98000013714cd0c6a43dp-9,
-    0x1.647e25d391f17p-9
-  },
-  { // Entry 277
-    -0x1.647e09059c1e98000013714cd0c6a43dp-9,
-    -0x1.647e25d391f17p-9
-  },
-  { // Entry 278
-    -0x1.8d3b53ff85a823d06537413901229e45p-1,
-    0x1.64ef438p142
-  },
-  { // Entry 279
-    0x1.8d3b53ff85a823d06537413901229e45p-1,
-    -0x1.64ef438p142
-  },
-  { // Entry 280
-    -0x1.f7c8630e62a01ffd4e02577956e5523ep-1,
-    0x1.6599665996658p3
-  },
-  { // Entry 281
-    0x1.f7c8630e62a01ffd4e02577956e5523ep-1,
-    -0x1.6599665996658p3
-  },
-  { // Entry 282
-    0x1.67028e3602034800f45a9158d20a340cp-5,
-    0x1.672p-5
-  },
-  { // Entry 283
-    -0x1.67028e3602034800f45a9158d20a340cp-5,
-    -0x1.672p-5
-  },
-  { // Entry 284
-    0x1.bc60c8c33cb5ebf693d71650cbf166f9p-2,
-    0x1.688ae6c138ea8p299
-  },
-  { // Entry 285
-    -0x1.bc60c8c33cb5ebf693d71650cbf166f9p-2,
-    -0x1.688ae6c138ea8p299
-  },
-  { // Entry 286
-    -0x1.fc3b4bb8b012e8042d3ebced12def0c9p-1,
-    0x1.6aa78p17
-  },
-  { // Entry 287
-    0x1.fc3b4bb8b012e8042d3ebced12def0c9p-1,
-    -0x1.6aa78p17
-  },
-  { // Entry 288
-    0x1.ffffffffffffffffffffffffffffffb5p-1,
-    0x1.6ac5b262ca1ffp849
-  },
-  { // Entry 289
-    -0x1.ffffffffffffffffffffffffffffffb5p-1,
-    -0x1.6ac5b262ca1ffp849
-  },
-  { // Entry 290
-    -0x1.82317836a97c8cea1cd2e3a4d0d48f29p-1,
-    0x1.6d88083749412p4
-  },
-  { // Entry 291
-    0x1.82317836a97c8cea1cd2e3a4d0d48f29p-1,
-    -0x1.6d88083749412p4
-  },
-  { // Entry 292
-    0x1.6f781c78cc82a7ffcd20ba801e6691b1p-6,
-    0x1.6f8p-6
-  },
-  { // Entry 293
-    -0x1.6f781c78cc82a7ffcd20ba801e6691b1p-6,
-    -0x1.6f8p-6
-  },
-  { // Entry 294
-    -0x1.fdbe5085494ae7fe47fa067aaea7fdf9p-1,
-    0x1.729aa6859d1f4p396
-  },
-  { // Entry 295
-    0x1.fdbe5085494ae7fe47fa067aaea7fdf9p-1,
-    -0x1.729aa6859d1f4p396
-  },
-  { // Entry 296
-    -0x1.fffffae862b4fec1c2f1712aa165807cp-1,
-    0x1.73e2dbe9a2f80p10
-  },
-  { // Entry 297
-    0x1.fffffae862b4fec1c2f1712aa165807cp-1,
-    -0x1.73e2dbe9a2f80p10
-  },
-  { // Entry 298
-    0x1.769ac74459b058456b333238833f1d1ap-7,
-    0x1.769cde0b90b80p-7
-  },
-  { // Entry 299
-    -0x1.769ac74459b058456b333238833f1d1ap-7,
-    -0x1.769cde0b90b80p-7
-  },
-  { // Entry 300
-    0x1.769e8afb6a4ebf99ade465d19be86ac0p-5,
-    0x1.76cp-5
-  },
-  { // Entry 301
-    -0x1.769e8afb6a4ebf99ade465d19be86ac0p-5,
-    -0x1.76cp-5
-  },
-  { // Entry 302
-    0x1.fd562611f5bd4800de503e4210cc7df4p-1,
-    0x1.78001p0
-  },
-  { // Entry 303
-    -0x1.fd562611f5bd4800de503e4210cc7df4p-1,
-    -0x1.78001p0
-  },
-  { // Entry 304
-    0x1.fdba784ca00f17ebcc2b5b1098e83bffp-1,
-    0x1.7a0p0
-  },
-  { // Entry 305
-    -0x1.fdba784ca00f17ebcc2b5b1098e83bffp-1,
-    -0x1.7a0p0
-  },
-  { // Entry 306
-    0x1.f930c222a8682d7d1920a12b68870c36p-5,
-    0x1.7abd870381c2dp38
-  },
-  { // Entry 307
-    -0x1.f930c222a8682d7d1920a12b68870c36p-5,
-    -0x1.7abd870381c2dp38
-  },
-  { // Entry 308
-    0x1.ffeb2ff2b692367bc5660dab6960b57dp-1,
-    0x1.7dc945c212480p95
-  },
-  { // Entry 309
-    -0x1.ffeb2ff2b692367bc5660dab6960b57dp-1,
-    -0x1.7dc945c212480p95
-  },
-  { // Entry 310
-    0x1.b279153c23fb180000ce3a0d47d8c476p-2,
-    0x1.7f73e1594b70cp98
-  },
-  { // Entry 311
-    -0x1.b279153c23fb180000ce3a0d47d8c476p-2,
-    -0x1.7f73e1594b70cp98
-  },
-  { // Entry 312
-    -0x1.599fad35cf60ad43760cf3a9da3d9c30p-41,
-    0x1.7f7ef77e83f1ap21
-  },
-  { // Entry 313
-    0x1.599fad35cf60ad43760cf3a9da3d9c30p-41,
-    -0x1.7f7ef77e83f1ap21
-  },
-  { // Entry 314
-    0x1.feb7a9b2c6d8ade6e17fdacaef4fd96cp-1,
-    0x1.8p0
-  },
-  { // Entry 315
-    -0x1.feb7a9b2c6d8ade6e17fdacaef4fd96cp-1,
-    -0x1.8p0
-  },
-  { // Entry 316
-    0x1.f798d01ec615b8ededa474e3c6cd0c92p-1,
-    0x1.8p6
-  },
-  { // Entry 317
-    -0x1.f798d01ec615b8ededa474e3c6cd0c92p-1,
-    -0x1.8p6
-  },
-  { // Entry 318
-    0x1.fee1a2a977bced179f8ab8455ada525fp-1,
-    0x1.8132ceb1c4f39p0
-  },
-  { // Entry 319
-    -0x1.fee1a2a977bced179f8ab8455ada525fp-1,
-    -0x1.8132ceb1c4f39p0
-  },
-  { // Entry 320
-    -0x1.24245af4cd994e9b3bba992d0f57fc3fp-52,
-    0x1.81ae0dffa3b33p959
-  },
-  { // Entry 321
-    0x1.24245af4cd994e9b3bba992d0f57fc3fp-52,
-    -0x1.81ae0dffa3b33p959
-  },
-  { // Entry 322
-    0x1.85d41b0bf30907fffff1913a5ced7645p-4,
-    0x1.85ec5a399a2e6p1
-  },
-  { // Entry 323
-    -0x1.85d41b0bf30907fffff1913a5ced7645p-4,
-    -0x1.85ec5a399a2e6p1
-  },
-  { // Entry 324
-    0x1.1e42ae3cfbdc60976884087f97a0fda9p-24,
-    0x1.86a0092754022p16
-  },
-  { // Entry 325
-    -0x1.1e42ae3cfbdc60976884087f97a0fda9p-24,
-    -0x1.86a0092754022p16
-  },
-  { // Entry 326
-    -0x1.dbf4e594cefe1548efc24098d631e950p-1,
-    0x1.8720588p392
-  },
-  { // Entry 327
-    0x1.dbf4e594cefe1548efc24098d631e950p-1,
-    -0x1.8720588p392
-  },
-  { // Entry 328
-    0x1.44302d6a82d403badf1f9b71420ccdcap-9,
-    0x1.8929354ebc6aap43
-  },
-  { // Entry 329
-    -0x1.44302d6a82d403badf1f9b71420ccdcap-9,
-    -0x1.8929354ebc6aap43
-  },
-  { // Entry 330
-    0x1.8a52189ec34877bb5944413e00ad52edp-5,
-    0x1.8a791e4791e75p-5
-  },
-  { // Entry 331
-    -0x1.8a52189ec34877bb5944413e00ad52edp-5,
-    -0x1.8a791e4791e75p-5
-  },
-  { // Entry 332
-    -0x1.fe8566e538122db33c17f13b83474a04p-1,
-    0x1.8ba761438f5edp11
-  },
-  { // Entry 333
-    0x1.fe8566e538122db33c17f13b83474a04p-1,
-    -0x1.8ba761438f5edp11
-  },
-  { // Entry 334
-    0x1.fff42aca4cb5a80000057f1a48af65dep-1,
-    0x1.8eaf16de63920p0
-  },
-  { // Entry 335
-    -0x1.fff42aca4cb5a80000057f1a48af65dep-1,
-    -0x1.8eaf16de63920p0
-  },
-  { // Entry 336
-    0x1.fffb7d3f3a252da56d96327c18627f57p-1,
-    0x1.9p0
-  },
-  { // Entry 337
-    -0x1.fffb7d3f3a252da56d96327c18627f57p-1,
-    -0x1.9p0
-  },
-  { // Entry 338
-    -0x1.e815770667fd87f9525154edc867605fp-4,
-    0x1.91a5657fb6a9ap6
-  },
-  { // Entry 339
-    0x1.e815770667fd87f9525154edc867605fp-4,
-    -0x1.91a5657fb6a9ap6
-  },
-  { // Entry 340
-    -0x1.fffffffd311dc7ec5d0ae5728a7960fdp-1,
-    0x1.921fb54468847p37
-  },
-  { // Entry 341
-    0x1.fffffffd311dc7ec5d0ae5728a7960fdp-1,
-    -0x1.921fb54468847p37
-  },
-  { // Entry 342
-    0x1.ffffffff875e5e4497dd0760336e63f3p-17,
-    0x1.921ff54442d18p2
-  },
-  { // Entry 343
-    -0x1.ffffffff875e5e4497dd0760336e63f3p-17,
-    -0x1.921ff54442d18p2
-  },
-  { // Entry 344
-    0x1.812a5da3777cd7f6e17288638b40aa09p-8,
-    0x1.928p2
-  },
-  { // Entry 345
-    -0x1.812a5da3777cd7f6e17288638b40aa09p-8,
-    -0x1.928p2
-  },
-  { // Entry 346
-    0x1.fff9be8d82572c746f944934bbf1b697p-1,
-    0x1.94ap0
-  },
-  { // Entry 347
-    -0x1.fff9be8d82572c746f944934bbf1b697p-1,
-    -0x1.94ap0
-  },
-  { // Entry 348
-    0x1.947b0ace235f2850b27b164c49102a49p-5,
-    0x1.94a5294a51bdep-5
-  },
-  { // Entry 349
-    -0x1.947b0ace235f2850b27b164c49102a49p-5,
-    -0x1.94a5294a51bdep-5
-  },
-  { // Entry 350
-    0x1.c34f70e55a707bbd053a70e749105174p-2,
-    0x1.94a5294a52948p100
-  },
-  { // Entry 351
-    -0x1.c34f70e55a707bbd053a70e749105174p-2,
-    -0x1.94a5294a52948p100
-  },
-  { // Entry 352
-    0x1.950bcfc0f3d50850941a41d66cfa3721p-5,
-    0x1.95361b8f7697dp-5
-  },
-  { // Entry 353
-    -0x1.950bcfc0f3d50850941a41d66cfa3721p-5,
-    -0x1.95361b8f7697dp-5
-  },
-  { // Entry 354
-    0x1.6c548bfcce6953f19a8d2dd480d9320cp-1,
-    0x1.956p-1
-  },
-  { // Entry 355
-    -0x1.6c548bfcce6953f19a8d2dd480d9320cp-1,
-    -0x1.956p-1
-  },
-  { // Entry 356
-    0x1.ffeffdbf67ca6711a57b7d82140093c6p-1,
-    0x1.962p0
-  },
-  { // Entry 357
-    -0x1.ffeffdbf67ca6711a57b7d82140093c6p-1,
-    -0x1.962p0
-  },
-  { // Entry 358
-    0x1.9708213bf67f4857135077d50826f588p-5,
-    0x1.97330d2ea16d9p-5
-  },
-  { // Entry 359
-    -0x1.9708213bf67f4857135077d50826f588p-5,
-    -0x1.97330d2ea16d9p-5
-  },
-  { // Entry 360
-    0x1.972bf92713d50858e64c1b9b26aeecd0p-5,
-    0x1.9756f073b6b61p-5
-  },
-  { // Entry 361
-    -0x1.972bf92713d50858e64c1b9b26aeecd0p-5,
-    -0x1.9756f073b6b61p-5
-  },
-  { // Entry 362
-    0x1.976845ebe71188580e468bad00ce23ecp-5,
-    0x1.97935055cec1bp-5
-  },
-  { // Entry 363
-    -0x1.976845ebe71188580e468bad00ce23ecp-5,
-    -0x1.97935055cec1bp-5
-  },
-  { // Entry 364
-    0x1.97535cee51a42806e15f6f878524e5b7p-4,
-    0x1.980p-4
-  },
-  { // Entry 365
-    -0x1.97535cee51a42806e15f6f878524e5b7p-4,
-    -0x1.980p-4
-  },
-  { // Entry 366
-    0x1.6f494c3356177000006502cdff975b08p-1,
-    0x1.999999a42160cp-1
-  },
-  { // Entry 367
-    -0x1.6f494c3356177000006502cdff975b08p-1,
-    -0x1.999999a42160cp-1
-  },
-  { // Entry 368
-    0x1.6f494c37edd6d800006dc76aee4cc8e4p-1,
-    0x1.999999aab8f50p-1
-  },
-  { // Entry 369
-    -0x1.6f494c37edd6d800006dc76aee4cc8e4p-1,
-    -0x1.999999aab8f50p-1
-  },
-  { // Entry 370
-    0x1.6fa912bdeaab280000164f16dd649356p-1,
-    0x1.9a2324b9c6326p-1
-  },
-  { // Entry 371
-    -0x1.6fa912bdeaab280000164f16dd649356p-1,
-    -0x1.9a2324b9c6326p-1
-  },
-  { // Entry 372
-    0x1.70c7ef4ef9b347ed234ca6131be1b786p-1,
-    0x1.9bcp-1
-  },
-  { // Entry 373
-    -0x1.70c7ef4ef9b347ed234ca6131be1b786p-1,
-    -0x1.9bcp-1
-  },
-  { // Entry 374
-    0x1.ff28176ad3163ea168c9991f155f875bp-1,
-    0x1.a0d1d817d6c4ap0
-  },
-  { // Entry 375
-    -0x1.ff28176ad3163ea168c9991f155f875bp-1,
-    -0x1.a0d1d817d6c4ap0
-  },
-  { // Entry 376
-    0x1.749468a7248dd26161e93d78928c66dep-1,
-    0x1.a141c9de12fdfp-1
-  },
-  { // Entry 377
-    -0x1.749468a7248dd26161e93d78928c66dep-1,
-    -0x1.a141c9de12fdfp-1
-  },
-  { // Entry 378
-    0x1.754ebb7e73f452ab49c615f0e8300d5cp-1,
-    0x1.a251bc6766f20p-1
-  },
-  { // Entry 379
-    -0x1.754ebb7e73f452ab49c615f0e8300d5cp-1,
-    -0x1.a251bc6766f20p-1
-  },
-  { // Entry 380
-    -0x1.7c3bfefa74bd07fe21336caac372a73ep-1,
-    0x1.a2689ae1b86ddp62
-  },
-  { // Entry 381
-    0x1.7c3bfefa74bd07fe21336caac372a73ep-1,
-    -0x1.a2689ae1b86ddp62
-  },
-  { // Entry 382
-    -0x1.ffff4f3648e02f9f494f42eb822f262bp-1,
-    0x1.a3f66180c4550p100
-  },
-  { // Entry 383
-    0x1.ffff4f3648e02f9f494f42eb822f262bp-1,
-    -0x1.a3f66180c4550p100
-  },
-  { // Entry 384
-    -0x1.1cf463983c0e28023161b7d0d2938e37p-3,
-    0x1.a3fdd2a5286c3p1
-  },
-  { // Entry 385
-    0x1.1cf463983c0e28023161b7d0d2938e37p-3,
-    -0x1.a3fdd2a5286c3p1
-  },
-  { // Entry 386
-    0x1.feb7948d224d7e759a7c9dd768ded727p-1,
-    0x1.a44p0
-  },
-  { // Entry 387
-    -0x1.feb7948d224d7e759a7c9dd768ded727p-1,
-    -0x1.a44p0
-  },
-  { // Entry 388
-    0x1.78801e3e1166482dce6208e98d3cc142p-1,
-    0x1.a701ef3c7d54bp-1
-  },
-  { // Entry 389
-    -0x1.78801e3e1166482dce6208e98d3cc142p-1,
-    -0x1.a701ef3c7d54bp-1
-  },
-  { // Entry 390
-    -0x1.fff11e871d59c3e1333db5475bb57e27p-1,
-    0x1.a8c01fd43c0p537
-  },
-  { // Entry 391
-    0x1.fff11e871d59c3e1333db5475bb57e27p-1,
-    -0x1.a8c01fd43c0p537
-  },
-  { // Entry 392
-    0x1.fdfa4366eb7337e6d973c4cb8f1a244ap-1,
-    0x1.a8e29b7602f3bp0
-  },
-  { // Entry 393
-    -0x1.fdfa4366eb7337e6d973c4cb8f1a244ap-1,
-    -0x1.a8e29b7602f3bp0
-  },
-  { // Entry 394
-    0x1.fde98b94e7947a04229d26eeb2bb4280p-1,
-    0x1.a94p0
-  },
-  { // Entry 395
-    -0x1.fde98b94e7947a04229d26eeb2bb4280p-1,
-    -0x1.a94p0
-  },
-  { // Entry 396
-    0x1.7931cba10000880000068f94098018a7p-2,
-    0x1.aa445fce93b82p2
-  },
-  { // Entry 397
-    -0x1.7931cba10000880000068f94098018a7p-2,
-    -0x1.aa445fce93b82p2
-  },
-  { // Entry 398
-    0x1.7af3f76c7a708834b4072f59ac71a0bap-1,
-    0x1.aaa3fbc359fbep-1
-  },
-  { // Entry 399
-    -0x1.7af3f76c7a708834b4072f59ac71a0bap-1,
-    -0x1.aaa3fbc359fbep-1
-  },
-  { // Entry 400
-    0x1.fd74e53ae32fcd8467bcf50da1d0f563p-6,
-    0x1.abdd3dbd4d860p119
-  },
-  { // Entry 401
-    -0x1.fd74e53ae32fcd8467bcf50da1d0f563p-6,
-    -0x1.abdd3dbd4d860p119
-  },
-  { // Entry 402
-    0x1.7d4a7bf183a3329ed434c0c4dd78b1d9p-1,
-    0x1.ae2165a0c9f8ep-1
-  },
-  { // Entry 403
-    -0x1.7d4a7bf183a3329ed434c0c4dd78b1d9p-1,
-    -0x1.ae2165a0c9f8ep-1
-  },
-  { // Entry 404
-    0x1.b81410edc79e0837507a3eef8d553bd6p-2,
-    0x1.ae8dfefcfe13bp2
-  },
-  { // Entry 405
-    -0x1.b81410edc79e0837507a3eef8d553bd6p-2,
-    -0x1.ae8dfefcfe13bp2
-  },
-  { // Entry 406
-    -0x1.ff751561dc5097fefe499301d034a0edp-2,
-    0x1.b5597f950ee8cp29
-  },
-  { // Entry 407
-    0x1.ff751561dc5097fefe499301d034a0edp-2,
-    -0x1.b5597f950ee8cp29
-  },
-  { // Entry 408
-    0x1.027d184afb1984ca1d21b1ac928d5391p-52,
-    0x1.bab62ed655019p970
-  },
-  { // Entry 409
-    -0x1.027d184afb1984ca1d21b1ac928d5391p-52,
-    -0x1.bab62ed655019p970
-  },
-  { // Entry 410
-    0x1.bc572e5e413e17fcb2246d40249a005fp-10,
-    0x1.bc573c4ffffffp-10
-  },
-  { // Entry 411
-    -0x1.bc572e5e413e17fcb2246d40249a005fp-10,
-    -0x1.bc573c4ffffffp-10
-  },
-  { // Entry 412
-    0x1.fb300f1e39afe80471f993abb8cfa428p-1,
-    0x1.bef5cd25ab1adp9
-  },
-  { // Entry 413
-    -0x1.fb300f1e39afe80471f993abb8cfa428p-1,
-    -0x1.bef5cd25ab1adp9
-  },
-  { // Entry 414
-    0x1.b1baaf622d3a27fd27d0716f7d08d992p-2,
-    0x1.bfdf6df2a24c1p-2
-  },
-  { // Entry 415
-    -0x1.b1baaf622d3a27fd27d0716f7d08d992p-2,
-    -0x1.bfdf6df2a24c1p-2
-  },
-  { // Entry 416
-    0x1.88fb762c35ce37fecbb4748d01feffcep-1,
-    0x1.bfffffdffffffp-1
-  },
-  { // Entry 417
-    -0x1.88fb762c35ce37fecbb4748d01feffcep-1,
-    -0x1.bfffffdffffffp-1
-  },
-  { // Entry 418
-    0x1.fe0ebff99ab8c80ce5939f1f072c2e91p-1,
-    0x1.c2b489520e376p920
-  },
-  { // Entry 419
-    -0x1.fe0ebff99ab8c80ce5939f1f072c2e91p-1,
-    -0x1.c2b489520e376p920
-  },
-  { // Entry 420
-    0x1.cf7f749f2a8357f7feab685ff6f8b624p-4,
-    0x1.c54beb0085470p5
-  },
-  { // Entry 421
-    -0x1.cf7f749f2a8357f7feab685ff6f8b624p-4,
-    -0x1.c54beb0085470p5
-  },
-  { // Entry 422
-    0x1.b6facf665891482ea8c61f5ca32f280dp-2,
-    0x1.c5ad34f5f472ap-2
-  },
-  { // Entry 423
-    -0x1.b6facf665891482ea8c61f5ca32f280dp-2,
-    -0x1.c5ad34f5f472ap-2
-  },
-  { // Entry 424
-    0x1.b851cd9b84ee683dc6bd3899ea81dbf9p-2,
-    0x1.c728fc2f34bd6p-2
-  },
-  { // Entry 425
-    -0x1.b851cd9b84ee683dc6bd3899ea81dbf9p-2,
-    -0x1.c728fc2f34bd6p-2
-  },
-  { // Entry 426
-    0x1.ba21b53cf2ff2832606f65eeeb4e3aafp-2,
-    0x1.c92b0f6105089p-2
-  },
-  { // Entry 427
-    -0x1.ba21b53cf2ff2832606f65eeeb4e3aafp-2,
-    -0x1.c92b0f6105089p-2
-  },
-  { // Entry 428
-    0x1.c9a2b68e30ec77c4e76c889704394a50p-5,
-    0x1.c9dfbbe9ec704p-5
-  },
-  { // Entry 429
-    -0x1.c9a2b68e30ec77c4e76c889704394a50p-5,
-    -0x1.c9dfbbe9ec704p-5
-  },
-  { // Entry 430
-    0x1.f370115c9ab35743e12217c6122e1a28p-1,
-    0x1.caf31bd7ee217p0
-  },
-  { // Entry 431
-    -0x1.f370115c9ab35743e12217c6122e1a28p-1,
-    -0x1.caf31bd7ee217p0
-  },
-  { // Entry 432
-    -0x1.dd38a1f1d289b6173115721bc58e298dp-54,
-    0x1.cb44e86bc192bp648
-  },
-  { // Entry 433
-    0x1.dd38a1f1d289b6173115721bc58e298dp-54,
-    -0x1.cb44e86bc192bp648
-  },
-  { // Entry 434
-    0x1.dd38a1f1d289b6173115721bc55a56a8p-53,
-    0x1.cb44e86bc192bp649
-  },
-  { // Entry 435
-    -0x1.dd38a1f1d289b6173115721bc55a56a8p-53,
-    -0x1.cb44e86bc192bp649
-  },
-  { // Entry 436
-    0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
-    0x1.cb6p-3
-  },
-  { // Entry 437
-    -0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
-    -0x1.cb6p-3
-  },
-  { // Entry 438
-    0x1.cd279aa6196b57f9be71cdffdd9f1919p-4,
-    0x1.ce2271d2f662fp-4
-  },
-  { // Entry 439
-    -0x1.cd279aa6196b57f9be71cdffdd9f1919p-4,
-    -0x1.ce2271d2f662fp-4
-  },
-  { // Entry 440
-    0x1.930b705f9fad17fb56813a45973a8d72p-1,
-    0x1.d0000000004p-1
-  },
-  { // Entry 441
-    -0x1.930b705f9fad17fb56813a45973a8d72p-1,
-    -0x1.d0000000004p-1
-  },
-  { // Entry 442
-    0x1.7ef24c8e67d9a8017a031f38e24cce06p-1,
-    0x1.d01p199
-  },
-  { // Entry 443
-    -0x1.7ef24c8e67d9a8017a031f38e24cce06p-1,
-    -0x1.d01p199
-  },
-  { // Entry 444
-    0x1.ffff124c001aafb1f175ccb531c053b0p-1,
-    0x1.d024ba6f953cfp1000
-  },
-  { // Entry 445
-    -0x1.ffff124c001aafb1f175ccb531c053b0p-1,
-    -0x1.d024ba6f953cfp1000
-  },
-  { // Entry 446
-    -0x1.f83a0983dd15d00301e2df21e3bee635p-2,
-    0x1.d4067c60f471ep1
-  },
-  { // Entry 447
-    0x1.f83a0983dd15d00301e2df21e3bee635p-2,
-    -0x1.d4067c60f471ep1
-  },
-  { // Entry 448
-    0x1.d79b9896ff55484d2591b677d54ea46fp-5,
-    0x1.d7de6263bcaabp-5
-  },
-  { // Entry 449
-    -0x1.d79b9896ff55484d2591b677d54ea46fp-5,
-    -0x1.d7de6263bcaabp-5
-  },
-  { // Entry 450
-    0x1.ed0b908a2982f7fd9c80bc1051dd4080p-1,
-    0x1.d800000002274p0
-  },
-  { // Entry 451
-    -0x1.ed0b908a2982f7fd9c80bc1051dd4080p-1,
-    -0x1.d800000002274p0
-  },
-  { // Entry 452
-    -0x1.f2c217cbc7dcc919243a7c434a209f9ap-1,
-    0x1.d96e058p488
-  },
-  { // Entry 453
-    0x1.f2c217cbc7dcc919243a7c434a209f9ap-1,
-    -0x1.d96e058p488
-  },
-  { // Entry 454
-    0x1.98dcd093377928000000000000167dc7p-1,
-    0x1.d98c4c612718dp-1
-  },
-  { // Entry 455
-    -0x1.98dcd093377928000000000000167dc7p-1,
-    -0x1.d98c4c612718dp-1
-  },
-  { // Entry 456
-    0x1.db3ba8775ca257da3bd5449d396a66e2p-5,
-    0x1.db8p-5
-  },
-  { // Entry 457
-    -0x1.db3ba8775ca257da3bd5449d396a66e2p-5,
-    -0x1.db8p-5
-  },
-  { // Entry 458
-    -0x1.9fee37697d5828031a6a2679c1433457p-2,
-    0x1.de386d6090303p200
-  },
-  { // Entry 459
-    0x1.9fee37697d5828031a6a2679c1433457p-2,
-    -0x1.de386d6090303p200
-  },
-  { // Entry 460
-    -0x1.5361ee6553188036e9dfcab428deb4e1p-53,
-    0x1.de5e5054e921bp35
-  },
-  { // Entry 461
-    0x1.5361ee6553188036e9dfcab428deb4e1p-53,
-    -0x1.de5e5054e921bp35
-  },
-  { // Entry 462
-    0x1.fec48d5e769ebe37448c10e0a7a0ecb1p-1,
-    0x1.df77ddf77ddf4p10
-  },
-  { // Entry 463
-    -0x1.fec48d5e769ebe37448c10e0a7a0ecb1p-1,
-    -0x1.df77ddf77ddf4p10
-  },
-  { // Entry 464
-    -0x1.2902a83d72632800003d1149b7e6c0fbp-1,
-    0x1.e1562b0448a86p1
-  },
-  { // Entry 465
-    0x1.2902a83d72632800003d1149b7e6c0fbp-1,
-    -0x1.e1562b0448a86p1
-  },
-  { // Entry 466
-    0x1.9e26c7bc96b68800000d4736ff132035p-1,
-    0x1.e2700cdc86635p-1
-  },
-  { // Entry 467
-    -0x1.9e26c7bc96b68800000d4736ff132035p-1,
-    -0x1.e2700cdc86635p-1
-  },
-  { // Entry 468
-    0x1.e6494911eedd18d0f1915fd4f6495469p-7,
-    0x1.e64ddaf7bd730p-7
-  },
-  { // Entry 469
-    -0x1.e6494911eedd18d0f1915fd4f6495469p-7,
-    -0x1.e64ddaf7bd730p-7
-  },
-  { // Entry 470
-    0x1.eb26c690bda2484a6c020a9c052ea846p-5,
-    0x1.eb7239bca8afap-5
-  },
-  { // Entry 471
-    -0x1.eb26c690bda2484a6c020a9c052ea846p-5,
-    -0x1.eb7239bca8afap-5
-  },
-  { // Entry 472
-    0x1.c73238790a4ce801e04107b2546b4ae3p-3,
-    0x1.ef7b83f7bdef4p3
-  },
-  { // Entry 473
-    -0x1.c73238790a4ce801e04107b2546b4ae3p-3,
-    -0x1.ef7b83f7bdef4p3
-  },
-  { // Entry 474
-    0x1.ed1b575acb8c881082ce315074a8a42ap-3,
-    0x1.f20000000109bp-3
-  },
-  { // Entry 475
-    -0x1.ed1b575acb8c881082ce315074a8a42ap-3,
-    -0x1.f20000000109bp-3
-  },
-  { // Entry 476
-    0x1.c1b50a56c8809800000282a516c13e25p-1,
-    0x1.f40ca67a9e8d7p9
-  },
-  { // Entry 477
-    -0x1.c1b50a56c8809800000282a516c13e25p-1,
-    -0x1.f40ca67a9e8d7p9
-  },
-  { // Entry 478
-    0x1.e321fea643a968083208768e9e2cd28ep-2,
-    0x1.f7224d2c77540p-2
-  },
-  { // Entry 479
-    -0x1.e321fea643a968083208768e9e2cd28ep-2,
-    -0x1.f7224d2c77540p-2
-  },
-  { // Entry 480
-    0x1.c1269b020a107ffc00612a563a919686p-3,
-    0x1.f78a0d05e60e2p6
-  },
-  { // Entry 481
-    -0x1.c1269b020a107ffc00612a563a919686p-3,
-    -0x1.f78a0d05e60e2p6
-  },
-  { // Entry 482
-    0x1.f76cae28a07747fffcd453a0142c2ec1p-5,
-    0x1.f7bdef7bdf073p-5
-  },
-  { // Entry 483
-    -0x1.f76cae28a07747fffcd453a0142c2ec1p-5,
-    -0x1.f7bdef7bdf073p-5
-  },
-  { // Entry 484
-    0x1.e42c139dc2053807b9440f1a28f7c9b9p-2,
-    0x1.f8502d5955443p-2
-  },
-  { // Entry 485
-    -0x1.e42c139dc2053807b9440f1a28f7c9b9p-2,
-    -0x1.f8502d5955443p-2
-  },
-  { // Entry 486
-    0x1.0fa749e07f63fc9d01c834de47654acbp-9,
-    0x1.f8fc824d2693bp61
-  },
-  { // Entry 487
-    -0x1.0fa749e07f63fc9d01c834de47654acbp-9,
-    -0x1.f8fc824d2693bp61
-  },
-  { // Entry 488
-    0x1.ffa80324e2d8ebc02f323ed49eb97a6cp-1,
-    0x1.f8fffffffffffp2
-  },
-  { // Entry 489
-    -0x1.ffa80324e2d8ebc02f323ed49eb97a6cp-1,
-    -0x1.f8fffffffffffp2
-  },
-  { // Entry 490
-    -0x1.7cdf79d5e37b8b212eff86d2ffe2044bp-1,
-    0x1.fd8p1
-  },
-  { // Entry 491
-    0x1.7cdf79d5e37b8b212eff86d2ffe2044bp-1,
-    -0x1.fd8p1
-  },
-  { // Entry 492
-    0x1.fd3f48847a1d10a8e5ff1d4db84ed26dp-5,
-    0x1.fd9364d936596p-5
-  },
-  { // Entry 493
-    -0x1.fd3f48847a1d10a8e5ff1d4db84ed26dp-5,
-    -0x1.fd9364d936596p-5
-  },
-  { // Entry 494
-    0x1.f93ad471d262f8032e92d596797f9d41p-3,
-    0x1.fe8p-3
-  },
-  { // Entry 495
-    -0x1.f93ad471d262f8032e92d596797f9d41p-3,
-    -0x1.fe8p-3
-  },
-  { // Entry 496
-    0x1.83b3062414973d92c4278507f0474d67p-1,
-    0x1.febb646e2ee57p13
-  },
-  { // Entry 497
-    -0x1.83b3062414973d92c4278507f0474d67p-1,
-    -0x1.febb646e2ee57p13
-  },
-  { // Entry 498
-    0x1.3b45bd744977547fa4673e42dfc99402p-1,
-    0x1.feeffffffffc6p995
-  },
-  { // Entry 499
-    -0x1.3b45bd744977547fa4673e42dfc99402p-1,
-    -0x1.feeffffffffc6p995
-  },
-  { // Entry 500
-    -0x1.eefb59d143645a40041bf726dc6f2fa0p-1,
-    0x1.ff8ffffffffffp7
-  },
-  { // Entry 501
-    0x1.eefb59d143645a40041bf726dc6f2fa0p-1,
-    -0x1.ff8ffffffffffp7
-  },
-  { // Entry 502
-    -0x1.56433f0c6bcee9848751611c6f5ade1fp-1,
-    0x1.ff8ffffffffffp870
-  },
-  { // Entry 503
-    0x1.56433f0c6bcee9848751611c6f5ade1fp-1,
-    -0x1.ff8ffffffffffp870
-  },
-  { // Entry 504
-    -0x1.930006246a6c05dab72ea697daaba69dp-2,
-    0x1.ffcfff8p19
-  },
-  { // Entry 505
-    0x1.930006246a6c05dab72ea697daaba69dp-2,
-    -0x1.ffcfff8p19
-  },
-  { // Entry 506
-    0x1.ded37a1f0aa6d05d782d6aab40cb8670p-1,
-    0x1.ffcfff8p365
-  },
-  { // Entry 507
-    -0x1.ded37a1f0aa6d05d782d6aab40cb8670p-1,
-    -0x1.ffcfff8p365
-  },
-  { // Entry 508
-    -0x1.93e4d96b621e07bca866c1a2e771881cp-1,
-    0x1.ffcffffffff6cp720
-  },
-  { // Entry 509
-    0x1.93e4d96b621e07bca866c1a2e771881cp-1,
-    -0x1.ffcffffffff6cp720
-  },
-  { // Entry 510
-    0x1.9068b90e42605e05010e147110688e52p-1,
-    0x1.ffcfffffffff9p320
-  },
-  { // Entry 511
-    -0x1.9068b90e42605e05010e147110688e52p-1,
-    -0x1.ffcfffffffff9p320
-  },
-  { // Entry 512
-    0x1.cf81642e7421c56507eb8187611c84dbp-1,
-    0x1.ffcffffffffffp12
-  },
-  { // Entry 513
-    -0x1.cf81642e7421c56507eb8187611c84dbp-1,
-    -0x1.ffcffffffffffp12
-  },
-  { // Entry 514
-    0x1.ffffffe61fe616b282c3a69ca225c2d2p-1,
-    0x1.ffcffffffffffp404
-  },
-  { // Entry 515
-    -0x1.ffffffe61fe616b282c3a69ca225c2d2p-1,
-    -0x1.ffcffffffffffp404
-  },
-  { // Entry 516
-    -0x1.406ee9ae91e16f1d58c96eb7165f595bp-1,
-    0x1.ffeffffffffccp995
-  },
-  { // Entry 517
-    0x1.406ee9ae91e16f1d58c96eb7165f595bp-1,
-    -0x1.ffeffffffffccp995
-  },
-  { // Entry 518
-    0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
-    0x1.ffeffffffffffp-3
-  },
-  { // Entry 519
-    -0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
-    -0x1.ffeffffffffffp-3
-  },
-  { // Entry 520
-    0x1.6b491db8b66d880121f830d8c755ae54p-4,
-    0x1.ffeffffffffffp55
-  },
-  { // Entry 521
-    -0x1.6b491db8b66d880121f830d8c755ae54p-4,
-    -0x1.ffeffffffffffp55
-  },
-  { // Entry 522
-    0x1.fb0ab102cb12fef9a4e4a869a299ed46p-1,
-    0x1.ffeffffffffffp180
-  },
-  { // Entry 523
-    -0x1.fb0ab102cb12fef9a4e4a869a299ed46p-1,
-    -0x1.ffeffffffffffp180
-  },
-  { // Entry 524
-    0x1.e4315ec04635cd34b3ef60370511281fp-3,
-    0x1.ffeffffffffffp706
-  },
-  { // Entry 525
-    -0x1.e4315ec04635cd34b3ef60370511281fp-3,
-    -0x1.ffeffffffffffp706
-  },
-  { // Entry 526
-    0x1.ffffc39997ef67d2b9c7e4efa8b77e50p-1,
-    0x1.fff1fffffffffp41
-  },
-  { // Entry 527
-    -0x1.ffffc39997ef67d2b9c7e4efa8b77e50p-1,
-    -0x1.fff1fffffffffp41
-  },
-  { // Entry 528
-    0x1.fff163992831e8c68b0234b42efa1d0ap-7,
-    0x1.fff6b89ffffffp-7
-  },
-  { // Entry 529
-    -0x1.fff163992831e8c68b0234b42efa1d0ap-7,
-    -0x1.fff6b89ffffffp-7
-  },
-  { // Entry 530
-    -0x1.d9757a05fcc42c664f3a66b5576a98e4p-1,
-    0x1.fffdffff0001fp105
-  },
-  { // Entry 531
-    0x1.d9757a05fcc42c664f3a66b5576a98e4p-1,
-    -0x1.fffdffff0001fp105
-  },
-  { // Entry 532
-    -0x1.83791fe63a17a80258f2c479c7e1d339p-1,
-    0x1.ffff0c0000002p1
-  },
-  { // Entry 533
-    0x1.83791fe63a17a80258f2c479c7e1d339p-1,
-    -0x1.ffff0c0000002p1
-  },
-  { // Entry 534
-    -0x1.d9d3a85acc50c8000005d13dd82f61b5p-1,
-    0x1.ffffc00000055p150
-  },
-  { // Entry 535
-    0x1.d9d3a85acc50c8000005d13dd82f61b5p-1,
-    -0x1.ffffc00000055p150
-  },
-  { // Entry 536
-    -0x1.f25d858dcdee7412cf0760e955cb8390p-3,
-    0x1.ffffe3fffffffp40
-  },
-  { // Entry 537
-    0x1.f25d858dcdee7412cf0760e955cb8390p-3,
-    -0x1.ffffe3fffffffp40
-  },
-  { // Entry 538
-    0x1.d18f7bfe557eb80001557142bda18baep-1,
-    0x1.ffffefffcffaep0
-  },
-  { // Entry 539
-    -0x1.d18f7bfe557eb80001557142bda18baep-1,
-    -0x1.ffffefffcffaep0
-  },
-  { // Entry 540
-    -0x1.bc14ebf6bfb51ffa5e6f5b0b0bf9e899p-4,
-    0x1.fffffbfffffffp228
-  },
-  { // Entry 541
-    0x1.bc14ebf6bfb51ffa5e6f5b0b0bf9e899p-4,
-    -0x1.fffffbfffffffp228
-  },
-  { // Entry 542
-    0x1.bb887a06f6c50fef0654d303c82f1a78p-3,
-    0x1.fffffbfffffffp735
-  },
-  { // Entry 543
-    -0x1.bb887a06f6c50fef0654d303c82f1a78p-3,
-    -0x1.fffffbfffffffp735
-  },
-  { // Entry 544
-    0x1.ffaaadef54e2f0c4081880b7b9e794dfp-5,
-    0x1.fffffefffffffp-5
-  },
-  { // Entry 545
-    -0x1.ffaaadef54e2f0c4081880b7b9e794dfp-5,
-    -0x1.fffffefffffffp-5
-  },
-  { // Entry 546
-    0x1.d4a3c62c5be08b123868e8a467eff0cep-1,
-    0x1.ffffff8p119
-  },
-  { // Entry 547
-    -0x1.d4a3c62c5be08b123868e8a467eff0cep-1,
-    -0x1.ffffff8p119
-  },
-  { // Entry 548
-    0x1.cec20f197703f4fd42048ddf889fe84ap-3,
-    0x1.ffffff8p192
-  },
-  { // Entry 549
-    -0x1.cec20f197703f4fd42048ddf889fe84ap-3,
-    -0x1.ffffff8p192
-  },
-  { // Entry 550
-    0x1.d37aadc7c8662501751dbf4e9e5701abp-2,
-    0x1.ffffff8p543
-  },
-  { // Entry 551
-    -0x1.d37aadc7c8662501751dbf4e9e5701abp-2,
-    -0x1.ffffff8p543
-  },
-  { // Entry 552
-    0x1.fa8d2a4d0a2027f0f74df3136cb78f72p-1,
-    0x1.ffffffc0018ffp2
-  },
-  { // Entry 553
-    -0x1.fa8d2a4d0a2027f0f74df3136cb78f72p-1,
-    -0x1.ffffffc0018ffp2
-  },
-  { // Entry 554
-    0x1.fa8d2a029f977ffe74cb14cb09df176dp-1,
-    0x1.ffffffffeffffp2
-  },
-  { // Entry 555
-    -0x1.fa8d2a029f977ffe74cb14cb09df176dp-1,
-    -0x1.ffffffffeffffp2
-  },
-  { // Entry 556
-    -0x1.2763f02a2d1e980000015dbf95d89ab2p-4,
-    0x1.fffffffff8250p943
-  },
-  { // Entry 557
-    0x1.2763f02a2d1e980000015dbf95d89ab2p-4,
-    -0x1.fffffffff8250p943
-  },
-  { // Entry 558
-    0x1.fcff128f77dda81c2a0ec03e4ed80422p-1,
-    0x1.fffffffffe09dp320
-  },
-  { // Entry 559
-    -0x1.fcff128f77dda81c2a0ec03e4ed80422p-1,
-    -0x1.fffffffffe09dp320
-  },
-  { // Entry 560
-    -0x1.fcc0bfedd84a5816d9596b8f9fbb9b41p-1,
-    0x1.fffffffffe6e3p720
-  },
-  { // Entry 561
-    0x1.fcc0bfedd84a5816d9596b8f9fbb9b41p-1,
-    -0x1.fffffffffe6e3p720
-  },
-  { // Entry 562
-    0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
-    0x1.ffffffffffe7fp-1
-  },
-  { // Entry 563
-    -0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
-    -0x1.ffffffffffe7fp-1
-  },
-  { // Entry 564
-    -0x1.f5e11def99d2b22098242ac9fb756adbp-1,
-    0x1.ffffffffffeffp250
-  },
-  { // Entry 565
-    0x1.f5e11def99d2b22098242ac9fb756adbp-1,
-    -0x1.ffffffffffeffp250
-  },
-  { // Entry 566
-    0x1.8a9cbf48fec9f2a0fde951f313b918ccp-1,
-    0x1.fffffffffff78p920
-  },
-  { // Entry 567
-    -0x1.8a9cbf48fec9f2a0fde951f313b918ccp-1,
-    -0x1.fffffffffff78p920
-  },
-  { // Entry 568
-    -0x1.7eba5894844cc00c88f39bd3d4197d14p-3,
-    0x1.fffffffffff83p150
-  },
-  { // Entry 569
-    0x1.7eba5894844cc00c88f39bd3d4197d14p-3,
-    -0x1.fffffffffff83p150
-  },
-  { // Entry 570
-    0x1.92c4f06d2cdd15d302609caa87882afap-1,
-    0x1.fffffffffffd5p995
-  },
-  { // Entry 571
-    -0x1.92c4f06d2cdd15d302609caa87882afap-1,
-    -0x1.fffffffffffd5p995
-  },
-  { // Entry 572
-    -0x1.3d5f7deb1d3bad63eb173b73e84110a0p-1,
-    0x1.fffffffffffe8p720
-  },
-  { // Entry 573
-    0x1.3d5f7deb1d3bad63eb173b73e84110a0p-1,
-    -0x1.fffffffffffe8p720
-  },
-  { // Entry 574
-    -0x1.91349b0ae90e5316539c07eea9b4e6b0p-1,
-    0x1.fffffffffffebp920
-  },
-  { // Entry 575
-    0x1.91349b0ae90e5316539c07eea9b4e6b0p-1,
-    -0x1.fffffffffffebp920
-  },
-  { // Entry 576
-    -0x1.837b9dddc1e8738d74b2a74fa42d802dp-1,
-    0x1.ffffffffffff1p1
-  },
-  { // Entry 577
-    0x1.837b9dddc1e8738d74b2a74fa42d802dp-1,
-    -0x1.ffffffffffff1p1
-  },
-  { // Entry 578
-    0x1.510e062e7fa2037d3842de993c9c5090p-1,
-    0x1.ffffffffffff1p245
-  },
-  { // Entry 579
-    -0x1.510e062e7fa2037d3842de993c9c5090p-1,
-    -0x1.ffffffffffff1p245
-  },
-  { // Entry 580
-    0x1.eaee8744b05e47fde092e3a14895d067p-2,
-    0x1.ffffffffffff3p-2
-  },
-  { // Entry 581
-    -0x1.eaee8744b05e47fde092e3a14895d067p-2,
-    -0x1.ffffffffffff3p-2
-  },
-  { // Entry 582
-    0x1.8a4dee8f4062791078766b0a01de360dp-1,
-    0x1.ffffffffffff4p845
-  },
-  { // Entry 583
-    -0x1.8a4dee8f4062791078766b0a01de360dp-1,
-    -0x1.ffffffffffff4p845
-  },
-  { // Entry 584
-    0x1.5118d6bbde07e4eebf2a11df4dc74d54p-1,
-    0x1.ffffffffffff4p1020
-  },
-  { // Entry 585
-    -0x1.5118d6bbde07e4eebf2a11df4dc74d54p-1,
-    -0x1.ffffffffffff4p1020
-  },
-  { // Entry 586
-    -0x1.5cd5c53cf30a97ff0e471d149c40955dp-1,
-    0x1.ffffffffffff8p616
-  },
-  { // Entry 587
-    0x1.5cd5c53cf30a97ff0e471d149c40955dp-1,
-    -0x1.ffffffffffff8p616
-  },
-  { // Entry 588
-    0x1.ffffa1f0d7daf693a80a2b817b16f277p-1,
-    0x1.ffffffffffffcp475
-  },
-  { // Entry 589
-    -0x1.ffffa1f0d7daf693a80a2b817b16f277p-1,
-    -0x1.ffffffffffffcp475
-  },
-  { // Entry 590
-    0x1.51e9d840106d73484d44a86f74c3d41dp-1,
-    0x1.ffffffffffffep970
-  },
-  { // Entry 591
-    -0x1.51e9d840106d73484d44a86f74c3d41dp-1,
-    -0x1.ffffffffffffep970
-  },
-  { // Entry 592
-    -0.0,
-    -0x1.0p-1074
-  },
-  { // Entry 593
-    0.0,
-    0x1.0p-1074
-  },
-  { // Entry 594
-    -0.0,
-    -0.0
-  },
-  { // Entry 595
-    0.0,
-    0x1.0p-1074
-  },
-  { // Entry 596
-    -0.0,
-    -0x1.0p-1074
-  },
-  { // Entry 597
-    -0x1.0000000000000fffffffffffffffffffp-1022,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 598
-    0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 599
-    -0x1.ffffffffffffffffffffffffffffffffp-1023,
-    -0x1.0p-1022
-  },
-  { // Entry 600
-    0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.0p-1022
-  },
-  { // Entry 601
-    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 602
-    0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 603
-    0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 604
-    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 605
-    0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.0p-1022
-  },
-  { // Entry 606
-    -0x1.ffffffffffffffffffffffffffffffffp-1023,
-    -0x1.0p-1022
-  },
-  { // Entry 607
-    0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 608
-    -0x1.0000000000000fffffffffffffffffffp-1022,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 609
-    0x1.9999996de8ca198c24ab9449beee16d5p-13,
-    0x1.999999999999ap-13
-  },
-  { // Entry 610
-    -0x1.9999996de8ca198c24ab9449beee16d5p-13,
-    -0x1.999999999999ap-13
-  },
-  { // Entry 611
-    0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
-    0x1.999999999999ap-12
-  },
-  { // Entry 612
-    -0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
-    -0x1.999999999999ap-12
-  },
-  { // Entry 613
-    0x1.3333320c49babff151b6d04290e2c3a2p-11,
-    0x1.3333333333334p-11
-  },
-  { // Entry 614
-    -0x1.3333320c49babff151b6d04290e2c3a2p-11,
-    -0x1.3333333333334p-11
-  },
-  { // Entry 615
-    0x1.999996de8ca2884da2f08f25bb024d08p-11,
-    0x1.999999999999ap-11
-  },
-  { // Entry 616
-    -0x1.999996de8ca2884da2f08f25bb024d08p-11,
-    -0x1.999999999999ap-11
-  },
-  { // Entry 617
-    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    0x1.0p-10
-  },
-  { // Entry 618
-    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    -0x1.0p-10
-  },
-  { // Entry 619
-    0x1.33332e978d552afc883bdb04751e3835p-10,
-    0x1.3333333333333p-10
-  },
-  { // Entry 620
-    -0x1.33332e978d552afc883bdb04751e3835p-10,
-    -0x1.3333333333333p-10
-  },
-  { // Entry 621
-    0x1.66665f1529aff8a3809246670a436c3cp-10,
-    0x1.6666666666666p-10
-  },
-  { // Entry 622
-    -0x1.66665f1529aff8a3809246670a436c3cp-10,
-    -0x1.6666666666666p-10
-  },
-  { // Entry 623
-    0x1.99998ead65cdf82e194c133997f2fb68p-10,
-    0x1.9999999999999p-10
-  },
-  { // Entry 624
-    -0x1.99998ead65cdf82e194c133997f2fb68p-10,
-    -0x1.9999999999999p-10
-  },
-  { // Entry 625
-    0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
-    0x1.cccccccccccccp-10
-  },
-  { // Entry 626
-    -0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
-    -0x1.cccccccccccccp-10
-  },
-  { // Entry 627
-    0x1.0665ae9c7b44ed280216be2104f28f02p-7,
-    0x1.0666666666666p-7
-  },
-  { // Entry 628
-    -0x1.0665ae9c7b44ed280216be2104f28f02p-7,
-    -0x1.0666666666666p-7
-  },
-  { // Entry 629
-    0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
-    0x1.cccccccccccccp-7
-  },
-  { // Entry 630
-    -0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
-    -0x1.cccccccccccccp-7
-  },
-  { // Entry 631
-    0x1.4993e8a8ff79b132046efa7856a97538p-6,
-    0x1.4999999999999p-6
-  },
-  { // Entry 632
-    -0x1.4993e8a8ff79b132046efa7856a97538p-6,
-    -0x1.4999999999999p-6
-  },
-  { // Entry 633
-    0x1.acc044c56db0e19f82c9c3cff246e201p-6,
-    0x1.accccccccccccp-6
-  },
-  { // Entry 634
-    -0x1.acc044c56db0e19f82c9c3cff246e201p-6,
-    -0x1.accccccccccccp-6
-  },
-  { // Entry 635
-    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    0x1.080p-5
-  },
-  { // Entry 636
-    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    -0x1.080p-5
-  },
-  { // Entry 637
-    0x1.3985fe46f1c8714eaa1418561963e89bp-5,
-    0x1.399999999999ap-5
-  },
-  { // Entry 638
-    -0x1.3985fe46f1c8714eaa1418561963e89bp-5,
-    -0x1.399999999999ap-5
-  },
-  { // Entry 639
-    0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
-    0x1.6b33333333334p-5
-  },
-  { // Entry 640
-    -0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
-    -0x1.6b33333333334p-5
-  },
-  { // Entry 641
-    0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
-    0x1.9cccccccccccep-5
-  },
-  { // Entry 642
-    -0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
-    -0x1.9cccccccccccep-5
-  },
-  { // Entry 643
-    0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
-    0x1.ce66666666666p-5
-  },
-  { // Entry 644
-    -0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
-    -0x1.ce66666666666p-5
-  },
-  { // Entry 645
-    0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
-    0x1.5e7fc4369bdadp-1
-  },
-  { // Entry 646
-    -0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
-    -0x1.5e7fc4369bdadp-1
-  },
-  { // Entry 647
-    0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
-    0x1.4e7fc4369bdadp0
-  },
-  { // Entry 648
-    -0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
-    -0x1.4e7fc4369bdadp0
-  },
-  { // Entry 649
-    0x1.df8e22ea809d65c6a69b96aca60be432p-1,
-    0x1.edbfa651e9c84p0
-  },
-  { // Entry 650
-    -0x1.df8e22ea809d65c6a69b96aca60be432p-1,
-    -0x1.edbfa651e9c84p0
-  },
-  { // Entry 651
-    0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
-    0x1.467fc4369bdadp1
-  },
-  { // Entry 652
-    -0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
-    -0x1.467fc4369bdadp1
-  },
-  { // Entry 653
-    -0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
-    0x1.961fb54442d18p1
-  },
-  { // Entry 654
-    0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
-    -0x1.961fb54442d18p1
-  },
-  { // Entry 655
-    -0x1.3734d32d49bd0b942772a7567d514140p-1,
-    0x1.e5bfa651e9c83p1
-  },
-  { // Entry 656
-    0x1.3734d32d49bd0b942772a7567d514140p-1,
-    -0x1.e5bfa651e9c83p1
-  },
-  { // Entry 657
-    -0x1.e9d25d19911e205b653521f42b9b864fp-1,
-    0x1.1aafcbafc85f7p2
-  },
-  { // Entry 658
-    0x1.e9d25d19911e205b653521f42b9b864fp-1,
-    -0x1.1aafcbafc85f7p2
-  },
-  { // Entry 659
-    -0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
-    0x1.427fc4369bdadp2
-  },
-  { // Entry 660
-    0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
-    -0x1.427fc4369bdadp2
-  },
-  { // Entry 661
-    -0x1.2a59f1034426197fa6eee22762967f25p-1,
-    0x1.6a4fbcbd6f562p2
-  },
-  { // Entry 662
-    0x1.2a59f1034426197fa6eee22762967f25p-1,
-    -0x1.6a4fbcbd6f562p2
-  },
-  { // Entry 663
-    -0x1.26312443bd35f19312eac0a1a6b5659ep-1,
-    0x1.6af2eff0a2896p2
-  },
-  { // Entry 664
-    0x1.26312443bd35f19312eac0a1a6b5659ep-1,
-    -0x1.6af2eff0a2896p2
-  },
-  { // Entry 665
-    -0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
-    0x1.43c62a9d02414p2
-  },
-  { // Entry 666
-    0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
-    -0x1.43c62a9d02414p2
-  },
-  { // Entry 667
-    -0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
-    0x1.1c99654961f92p2
-  },
-  { // Entry 668
-    0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
-    -0x1.1c99654961f92p2
-  },
-  { // Entry 669
-    -0x1.4727747338e4653616eadbd7ec3d02d3p-1,
-    0x1.ead93feb8361fp1
-  },
-  { // Entry 670
-    0x1.4727747338e4653616eadbd7ec3d02d3p-1,
-    -0x1.ead93feb8361fp1
-  },
-  { // Entry 671
-    -0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
-    0x1.9c7fb54442d1ap1
-  },
-  { // Entry 672
-    0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
-    -0x1.9c7fb54442d1ap1
-  },
-  { // Entry 673
-    0x1.034c4d633b4ef0a9089b43892a462a26p-1,
-    0x1.4e262a9d02415p1
-  },
-  { // Entry 674
-    -0x1.034c4d633b4ef0a9089b43892a462a26p-1,
-    -0x1.4e262a9d02415p1
-  },
-  { // Entry 675
-    0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
-    0x1.ff993feb83620p0
-  },
-  { // Entry 676
-    -0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
-    -0x1.ff993feb83620p0
-  },
-  { // Entry 677
-    0x1.f750235c949926c48c90e41a91474c06p-1,
-    0x1.62e62a9d02416p0
-  },
-  { // Entry 678
-    -0x1.f750235c949926c48c90e41a91474c06p-1,
-    -0x1.62e62a9d02416p0
-  },
-  { // Entry 679
-    0x1.65f7d571279b0b8005552fd47a2e77aep-1,
-    0x1.8c662a9d02419p-1
-  },
-  { // Entry 680
-    -0x1.65f7d571279b0b8005552fd47a2e77aep-1,
-    -0x1.8c662a9d02419p-1
-  },
-  { // Entry 681
-    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    -0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 682
-    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 683
-    -0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
-    -0x1.95ec8b9e03d54p0
-  },
-  { // Entry 684
-    0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
-    0x1.95ec8b9e03d54p0
-  },
-  { // Entry 685
-    -0x1.ff20d961624e7063a78203b811f579cap-1,
-    -0x1.832efa2a435a9p0
-  },
-  { // Entry 686
-    0x1.ff20d961624e7063a78203b811f579cap-1,
-    0x1.832efa2a435a9p0
-  },
-  { // Entry 687
-    -0x1.fb933c40107fd775185ac14918c8fbafp-1,
-    -0x1.707168b682dfep0
-  },
-  { // Entry 688
-    0x1.fb933c40107fd775185ac14918c8fbafp-1,
-    0x1.707168b682dfep0
-  },
-  { // Entry 689
-    -0x1.f54d971881ad685b782ef88e6350f7cdp-1,
-    -0x1.5db3d742c2653p0
-  },
-  { // Entry 690
-    0x1.f54d971881ad685b782ef88e6350f7cdp-1,
-    0x1.5db3d742c2653p0
-  },
-  { // Entry 691
-    -0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
-    -0x1.4af645cf01ea8p0
-  },
-  { // Entry 692
-    0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
-    0x1.4af645cf01ea8p0
-  },
-  { // Entry 693
-    -0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
-    -0x1.3838b45b416fdp0
-  },
-  { // Entry 694
-    0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
-    0x1.3838b45b416fdp0
-  },
-  { // Entry 695
-    -0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
-    -0x1.257b22e780f52p0
-  },
-  { // Entry 696
-    0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
-    0x1.257b22e780f52p0
-  },
-  { // Entry 697
-    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    -0x1.12bd9173c07abp0
-  },
-  { // Entry 698
-    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    0x1.12bd9173c07abp0
-  },
-  { // Entry 699
-    -0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
-    -0x1.ea5c3ed5b3850p-1
-  },
-  { // Entry 700
-    0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
-    0x1.ea5c3ed5b3850p-1
-  },
-  { // Entry 701
-    -0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
-    -0x1.d4b87dab670a0p-1
-  },
-  { // Entry 702
-    0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
-    0x1.d4b87dab670a0p-1
-  },
-  { // Entry 703
-    -0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
-    -0x1.bf14bc811a8f0p-1
-  },
-  { // Entry 704
-    0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
-    0x1.bf14bc811a8f0p-1
-  },
-  { // Entry 705
-    -0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
-    -0x1.a970fb56ce140p-1
-  },
-  { // Entry 706
-    0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
-    0x1.a970fb56ce140p-1
-  },
-  { // Entry 707
-    -0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
-    -0x1.93cd3a2c81990p-1
-  },
-  { // Entry 708
-    0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
-    0x1.93cd3a2c81990p-1
-  },
-  { // Entry 709
-    -0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
-    -0x1.7e297902351e0p-1
-  },
-  { // Entry 710
-    0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
-    0x1.7e297902351e0p-1
-  },
-  { // Entry 711
-    -0x1.4b75ba096fa549eb93595d8194ab917fp-1,
-    -0x1.6885b7d7e8a30p-1
-  },
-  { // Entry 712
-    0x1.4b75ba096fa549eb93595d8194ab917fp-1,
-    0x1.6885b7d7e8a30p-1
-  },
-  { // Entry 713
-    -0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
-    -0x1.52e1f6ad9c280p-1
-  },
-  { // Entry 714
-    0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
-    0x1.52e1f6ad9c280p-1
-  },
-  { // Entry 715
-    -0x1.295463e769284a5aed17a443392f38f3p-1,
-    -0x1.3d3e35834fad0p-1
-  },
-  { // Entry 716
-    0x1.295463e769284a5aed17a443392f38f3p-1,
-    0x1.3d3e35834fad0p-1
-  },
-  { // Entry 717
-    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    -0x1.0a0b02501c799p-1
-  },
-  { // Entry 718
-    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    0x1.0a0b02501c799p-1
-  },
-  { // Entry 719
-    -0x1.c853c78462de46b5743315612f8b5a7cp-2,
-    -0x1.d8f7208e6b82cp-2
-  },
-  { // Entry 720
-    0x1.c853c78462de46b5743315612f8b5a7cp-2,
-    0x1.d8f7208e6b82cp-2
-  },
-  { // Entry 721
-    -0x1.92aba90aaf27249de49c78fc643c8b72p-2,
-    -0x1.9dd83c7c9e126p-2
-  },
-  { // Entry 722
-    0x1.92aba90aaf27249de49c78fc643c8b72p-2,
-    0x1.9dd83c7c9e126p-2
-  },
-  { // Entry 723
-    -0x1.5bac064658f39460c83113c0a0097a0cp-2,
-    -0x1.62b9586ad0a20p-2
-  },
-  { // Entry 724
-    0x1.5bac064658f39460c83113c0a0097a0cp-2,
-    0x1.62b9586ad0a20p-2
-  },
-  { // Entry 725
-    -0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
-    -0x1.279a74590331ap-2
-  },
-  { // Entry 726
-    0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
-    0x1.279a74590331ap-2
-  },
-  { // Entry 727
-    -0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
-    -0x1.d8f7208e6b829p-3
-  },
-  { // Entry 728
-    0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
-    0x1.d8f7208e6b829p-3
-  },
-  { // Entry 729
-    -0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
-    -0x1.62b9586ad0a1ep-3
-  },
-  { // Entry 730
-    0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
-    0x1.62b9586ad0a1ep-3
-  },
-  { // Entry 731
-    -0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
-    -0x1.d8f7208e6b826p-4
-  },
-  { // Entry 732
-    0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
-    0x1.d8f7208e6b826p-4
-  },
-  { // Entry 733
-    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    -0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 734
-    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 735
-    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 736
-    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    -0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 737
-    0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
-    0x1.d8f7208e6b82dp-4
-  },
-  { // Entry 738
-    -0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
-    -0x1.d8f7208e6b82dp-4
-  },
-  { // Entry 739
-    0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
-    0x1.62b9586ad0a22p-3
-  },
-  { // Entry 740
-    -0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
-    -0x1.62b9586ad0a22p-3
-  },
-  { // Entry 741
-    0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
-    0x1.d8f7208e6b82dp-3
-  },
-  { // Entry 742
-    -0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
-    -0x1.d8f7208e6b82dp-3
-  },
-  { // Entry 743
-    0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
-    0x1.279a74590331cp-2
-  },
-  { // Entry 744
-    -0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
-    -0x1.279a74590331cp-2
-  },
-  { // Entry 745
-    0x1.5bac064658f3b27a28572bea256195efp-2,
-    0x1.62b9586ad0a22p-2
-  },
-  { // Entry 746
-    -0x1.5bac064658f3b27a28572bea256195efp-2,
-    -0x1.62b9586ad0a22p-2
-  },
-  { // Entry 747
-    0x1.92aba90aaf274209efaed08e34071e3bp-2,
-    0x1.9dd83c7c9e128p-2
-  },
-  { // Entry 748
-    -0x1.92aba90aaf274209efaed08e34071e3bp-2,
-    -0x1.9dd83c7c9e128p-2
-  },
-  { // Entry 749
-    0x1.c853c78462de635b10a2b93afd75da26p-2,
-    0x1.d8f7208e6b82ep-2
-  },
-  { // Entry 750
-    -0x1.c853c78462de635b10a2b93afd75da26p-2,
-    -0x1.d8f7208e6b82ep-2
-  },
-  { // Entry 751
-    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    0x1.0a0b02501c799p-1
-  },
-  { // Entry 752
-    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    -0x1.0a0b02501c799p-1
-  },
-  { // Entry 753
-    0x1.295463e769281640ae026f50fc45e301p-1,
-    0x1.3d3e35834faccp-1
-  },
-  { // Entry 754
-    -0x1.295463e769281640ae026f50fc45e301p-1,
-    -0x1.3d3e35834faccp-1
-  },
-  { // Entry 755
-    0x1.3aacff95a311f899a0e279535e81c4ecp-1,
-    0x1.52e1f6ad9c27cp-1
-  },
-  { // Entry 756
-    -0x1.3aacff95a311f899a0e279535e81c4ecp-1,
-    -0x1.52e1f6ad9c27cp-1
-  },
-  { // Entry 757
-    0x1.4b75ba096fa5192442b7950f960f8006p-1,
-    0x1.6885b7d7e8a2cp-1
-  },
-  { // Entry 758
-    -0x1.4b75ba096fa5192442b7950f960f8006p-1,
-    -0x1.6885b7d7e8a2cp-1
-  },
-  { // Entry 759
-    0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
-    0x1.7e297902351dcp-1
-  },
-  { // Entry 760
-    -0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
-    -0x1.7e297902351dcp-1
-  },
-  { // Entry 761
-    0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
-    0x1.93cd3a2c8198cp-1
-  },
-  { // Entry 762
-    -0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
-    -0x1.93cd3a2c8198cp-1
-  },
-  { // Entry 763
-    0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
-    0x1.a970fb56ce13cp-1
-  },
-  { // Entry 764
-    -0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
-    -0x1.a970fb56ce13cp-1
-  },
-  { // Entry 765
-    0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
-    0x1.bf14bc811a8ecp-1
-  },
-  { // Entry 766
-    -0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
-    -0x1.bf14bc811a8ecp-1
-  },
-  { // Entry 767
-    0x1.95f05257dbcb384a5e326857376dd801p-1,
-    0x1.d4b87dab6709cp-1
-  },
-  { // Entry 768
-    -0x1.95f05257dbcb384a5e326857376dd801p-1,
-    -0x1.d4b87dab6709cp-1
-  },
-  { // Entry 769
-    0x1.a2c289d9d0558764921a4de355f9448cp-1,
-    0x1.ea5c3ed5b384cp-1
-  },
-  { // Entry 770
-    -0x1.a2c289d9d0558764921a4de355f9448cp-1,
-    -0x1.ea5c3ed5b384cp-1
-  },
-  { // Entry 771
-    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    0x1.12bd9173c07abp0
-  },
-  { // Entry 772
-    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    -0x1.12bd9173c07abp0
-  },
-  { // Entry 773
-    0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
-    0x1.257b22e780f56p0
-  },
-  { // Entry 774
-    -0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
-    -0x1.257b22e780f56p0
-  },
-  { // Entry 775
-    0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
-    0x1.3838b45b41701p0
-  },
-  { // Entry 776
-    -0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
-    -0x1.3838b45b41701p0
-  },
-  { // Entry 777
-    0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
-    0x1.4af645cf01eacp0
-  },
-  { // Entry 778
-    -0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
-    -0x1.4af645cf01eacp0
-  },
-  { // Entry 779
-    0x1.f54d971881ad82629bd84d214194e8ddp-1,
-    0x1.5db3d742c2657p0
-  },
-  { // Entry 780
-    -0x1.f54d971881ad82629bd84d214194e8ddp-1,
-    -0x1.5db3d742c2657p0
-  },
-  { // Entry 781
-    0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
-    0x1.707168b682e02p0
-  },
-  { // Entry 782
-    -0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
-    -0x1.707168b682e02p0
-  },
-  { // Entry 783
-    0x1.ff20d961624e77daef329b4029c362dep-1,
-    0x1.832efa2a435adp0
-  },
-  { // Entry 784
-    -0x1.ff20d961624e77daef329b4029c362dep-1,
-    -0x1.832efa2a435adp0
-  },
-  { // Entry 785
-    0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
-    0x1.95ec8b9e03d58p0
-  },
-  { // Entry 786
-    -0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
-    -0x1.95ec8b9e03d58p0
-  },
-  { // Entry 787
-    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 788
-    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    -0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 789
-    0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
-    0x1.04aff6d330942p0
-  },
-  { // Entry 790
-    -0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
-    -0x1.04aff6d330942p0
-  },
-  { // Entry 791
-    0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
-    0x1.04b09e98dcdb4p0
-  },
-  { // Entry 792
-    -0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
-    -0x1.04b09e98dcdb4p0
-  },
-  { // Entry 793
-    0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
-    0x1.04b1465e89226p0
-  },
-  { // Entry 794
-    -0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
-    -0x1.04b1465e89226p0
-  },
-  { // Entry 795
-    0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
-    0x1.04b1ee2435698p0
-  },
-  { // Entry 796
-    -0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
-    -0x1.04b1ee2435698p0
-  },
-  { // Entry 797
-    0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
-    0x1.04b295e9e1b0ap0
-  },
-  { // Entry 798
-    -0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
-    -0x1.04b295e9e1b0ap0
-  },
-  { // Entry 799
-    0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
-    0x1.04b33daf8df7cp0
-  },
-  { // Entry 800
-    -0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
-    -0x1.04b33daf8df7cp0
-  },
-  { // Entry 801
-    0x1.b3d789e035e8948dab275dfe546c5b08p-1,
-    0x1.04b3e5753a3eep0
-  },
-  { // Entry 802
-    -0x1.b3d789e035e8948dab275dfe546c5b08p-1,
-    -0x1.04b3e5753a3eep0
-  },
-  { // Entry 803
-    0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
-    0x1.04b48d3ae6860p0
-  },
-  { // Entry 804
-    -0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
-    -0x1.04b48d3ae6860p0
-  },
-  { // Entry 805
-    0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
-    0x1.04b5350092ccfp0
-  },
-  { // Entry 806
-    -0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
-    -0x1.04b5350092ccfp0
-  },
-  { // Entry 807
-    -0.0,
-    -0x1.0p-1074
-  },
-  { // Entry 808
-    0.0,
-    0x1.0p-1074
-  },
-  { // Entry 809
-    -0.0,
-    -0.0
-  },
-  { // Entry 810
-    0.0,
-    0x1.0p-1074
-  },
-  { // Entry 811
-    -0.0,
-    -0x1.0p-1074
-  },
-  { // Entry 812
-    0x1.1773d561fd5065d0e9607a728a39eed2p-1,
-    0x1.279a74590331bp-1
-  },
-  { // Entry 813
-    -0x1.1773d561fd5065d0e9607a728a39eed2p-1,
-    -0x1.279a74590331bp-1
-  },
-  { // Entry 814
-    0x1.1773d561fd507338ff9c088d80c680dbp-1,
-    0x1.279a74590331cp-1
-  },
-  { // Entry 815
-    -0x1.1773d561fd507338ff9c088d80c680dbp-1,
-    -0x1.279a74590331cp-1
-  },
-  { // Entry 816
-    0x1.1773d561fd5080a115d796a8770d35efp-1,
-    0x1.279a74590331dp-1
-  },
-  { // Entry 817
-    -0x1.1773d561fd5080a115d796a8770d35efp-1,
-    -0x1.279a74590331dp-1
-  },
-  { // Entry 818
-    0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
-    0x1.bb67ae8584ca9p0
-  },
-  { // Entry 819
-    -0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
-    -0x1.bb67ae8584ca9p0
-  },
-  { // Entry 820
-    0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
-    0x1.bb67ae8584caap0
-  },
-  { // Entry 821
-    -0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
-    -0x1.bb67ae8584caap0
-  },
-  { // Entry 822
-    0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
-    0x1.bb67ae8584cabp0
-  },
-  { // Entry 823
-    -0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
-    -0x1.bb67ae8584cabp0
-  },
-  { // Entry 824
-    0x1.b1d8305321615ac938cff02be9f25085p-2,
-    0x1.bffffffffffffp-2
-  },
-  { // Entry 825
-    -0x1.b1d8305321615ac938cff02be9f25085p-2,
-    -0x1.bffffffffffffp-2
-  },
-  { // Entry 826
-    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    0x1.cp-2
-  },
-  { // Entry 827
-    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    -0x1.cp-2
-  },
-  { // Entry 828
-    0x1.b1d83053216177c5a5ca42d98955275ap-2,
-    0x1.c000000000001p-2
-  },
-  { // Entry 829
-    -0x1.b1d83053216177c5a5ca42d98955275ap-2,
-    -0x1.c000000000001p-2
-  },
-  { // Entry 830
-    0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
-    0x1.5ffffffffffffp-1
-  },
-  { // Entry 831
-    -0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
-    -0x1.5ffffffffffffp-1
-  },
-  { // Entry 832
-    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    0x1.6p-1
-  },
-  { // Entry 833
-    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    -0x1.6p-1
-  },
-  { // Entry 834
-    0x1.44eb381cf386b7622d25944f3eb035dcp-1,
-    0x1.6000000000001p-1
-  },
-  { // Entry 835
-    -0x1.44eb381cf386b7622d25944f3eb035dcp-1,
-    -0x1.6000000000001p-1
-  },
-  { // Entry 836
-    0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
-    0x1.2ffffffffffffp0
-  },
-  { // Entry 837
-    -0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
-    -0x1.2ffffffffffffp0
-  },
-  { // Entry 838
-    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    0x1.3p0
-  },
-  { // Entry 839
-    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    -0x1.3p0
-  },
-  { // Entry 840
-    0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
-    0x1.3000000000001p0
-  },
-  { // Entry 841
-    -0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
-    -0x1.3000000000001p0
-  },
-  { // Entry 842
-    0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
-    0x1.37fffffffffffp1
-  },
-  { // Entry 843
-    -0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
-    -0x1.37fffffffffffp1
-  },
-  { // Entry 844
-    0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    0x1.380p1
-  },
-  { // Entry 845
-    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    -0x1.380p1
-  },
-  { // Entry 846
-    0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
-    0x1.3800000000001p1
-  },
-  { // Entry 847
-    -0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
-    -0x1.3800000000001p1
-  },
-  { // Entry 848
-    0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
-    0x1.069c8b46b3792p-4
-  },
-  { // Entry 849
-    -0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
-    -0x1.069c8b46b3792p-4
-  },
-  { // Entry 850
-    0x1.05e4761ab8d8f0a7dba834000f236650p-3,
-    0x1.069c8b46b3792p-3
-  },
-  { // Entry 851
-    -0x1.05e4761ab8d8f0a7dba834000f236650p-3,
-    -0x1.069c8b46b3792p-3
-  },
-  { // Entry 852
-    0x1.877e2cd4f6fd9ba498e327053032734fp-3,
-    0x1.89ead0ea0d35bp-3
-  },
-  { // Entry 853
-    -0x1.877e2cd4f6fd9ba498e327053032734fp-3,
-    -0x1.89ead0ea0d35bp-3
-  },
-  { // Entry 854
-    0x1.03be06f97cbee47698539f977cadbe7ep-2,
-    0x1.069c8b46b3792p-2
-  },
-  { // Entry 855
-    -0x1.03be06f97cbee47698539f977cadbe7ep-2,
-    -0x1.069c8b46b3792p-2
-  },
-  { // Entry 856
-    0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
-    0x1.4843ae1860576p-2
-  },
-  { // Entry 857
-    -0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
-    -0x1.4843ae1860576p-2
-  },
-  { // Entry 858
-    0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
-    0x1.89ead0ea0d35ap-2
-  },
-  { // Entry 859
-    -0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
-    -0x1.89ead0ea0d35ap-2
-  },
-  { // Entry 860
-    0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
-    0x1.cb91f3bbba13ep-2
-  },
-  { // Entry 861
-    -0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
-    -0x1.cb91f3bbba13ep-2
-  },
-  { // Entry 862
-    0x1.f67ea975b86a01510e6bde3778138934p-2,
-    0x1.069c8b46b3791p-1
-  },
-  { // Entry 863
-    -0x1.f67ea975b86a01510e6bde3778138934p-2,
-    -0x1.069c8b46b3791p-1
-  },
-  { // Entry 864
-    0x1.175059bf0d42524ecb0bf4243b55973dp-1,
-    0x1.27701caf89e83p-1
-  },
-  { // Entry 865
-    -0x1.175059bf0d42524ecb0bf4243b55973dp-1,
-    -0x1.27701caf89e83p-1
-  },
-  { // Entry 866
-    0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
-    0x1.4843ae1860575p-1
-  },
-  { // Entry 867
-    -0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
-    -0x1.4843ae1860575p-1
-  },
-  { // Entry 868
-    0x1.4be4979c5efb306c1a77024032849b52p-1,
-    0x1.69173f8136c67p-1
-  },
-  { // Entry 869
-    -0x1.4be4979c5efb306c1a77024032849b52p-1,
-    -0x1.69173f8136c67p-1
-  },
-  { // Entry 870
-    0x1.643080d67acc1332c64a85612cacafb9p-1,
-    0x1.89ead0ea0d359p-1
-  },
-  { // Entry 871
-    -0x1.643080d67acc1332c64a85612cacafb9p-1,
-    -0x1.89ead0ea0d359p-1
-  },
-  { // Entry 872
-    0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
-    0x1.aabe6252e3a4bp-1
-  },
-  { // Entry 873
-    -0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
-    -0x1.aabe6252e3a4bp-1
-  },
-  { // Entry 874
-    0x1.904c37505de48fa8e76287960fd44594p-1,
-    0x1.cb91f3bbba13dp-1
-  },
-  { // Entry 875
-    -0x1.904c37505de48fa8e76287960fd44594p-1,
-    -0x1.cb91f3bbba13dp-1
-  },
-  { // Entry 876
-    0x1.a3ed9e252938a14c79c575639c15a91dp-1,
-    0x1.ec6585249082fp-1
-  },
-  { // Entry 877
-    -0x1.a3ed9e252938a14c79c575639c15a91dp-1,
-    -0x1.ec6585249082fp-1
-  },
-  { // Entry 878
-    0x1.b5d545b109bf935594036798cf40c9b0p-1,
-    0x1.069c8b46b3791p0
-  },
-  { // Entry 879
-    -0x1.b5d545b109bf935594036798cf40c9b0p-1,
-    -0x1.069c8b46b3791p0
-  },
-  { // Entry 880
-    0x1.c5f058230e7fd14d3e5e315349f699efp-1,
-    0x1.170653fb1eb0ap0
-  },
-  { // Entry 881
-    -0x1.c5f058230e7fd14d3e5e315349f699efp-1,
-    -0x1.170653fb1eb0ap0
-  },
-  { // Entry 882
-    0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
-    0x1.27701caf89e83p0
-  },
-  { // Entry 883
-    -0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
-    -0x1.27701caf89e83p0
-  },
-  { // Entry 884
-    0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
-    0x1.37d9e563f51fcp0
-  },
-  { // Entry 885
-    -0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
-    -0x1.37d9e563f51fcp0
-  },
-  { // Entry 886
-    0x1.ead6834909b93371faf3beaddbd60eddp-1,
-    0x1.4843ae1860575p0
-  },
-  { // Entry 887
-    -0x1.ead6834909b93371faf3beaddbd60eddp-1,
-    -0x1.4843ae1860575p0
-  },
-  { // Entry 888
-    0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
-    0x1.58ad76cccb8eep0
-  },
-  { // Entry 889
-    -0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
-    -0x1.58ad76cccb8eep0
-  },
-  { // Entry 890
-    0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
-    0x1.69173f8136c67p0
-  },
-  { // Entry 891
-    -0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
-    -0x1.69173f8136c67p0
-  },
-  { // Entry 892
-    0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
-    0x1.79810835a1fe0p0
-  },
-  { // Entry 893
-    -0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
-    -0x1.79810835a1fe0p0
-  },
-  { // Entry 894
-    0x1.ffbca846c4fc997f1a381420208884e0p-1,
-    0x1.89ead0ea0d359p0
-  },
-  { // Entry 895
-    -0x1.ffbca846c4fc997f1a381420208884e0p-1,
-    -0x1.89ead0ea0d359p0
-  },
-  { // Entry 896
-    0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
-    0x1.9a54999e786d2p0
-  },
-  { // Entry 897
-    -0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
-    -0x1.9a54999e786d2p0
-  },
-  { // Entry 898
-    0x1.fda254c27a0205875f271435f827160cp-1,
-    0x1.aabe6252e3a4bp0
-  },
-  { // Entry 899
-    -0x1.fda254c27a0205875f271435f827160cp-1,
-    -0x1.aabe6252e3a4bp0
-  },
-  { // Entry 900
-    0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
-    0x1.bb282b074edc4p0
-  },
-  { // Entry 901
-    -0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
-    -0x1.bb282b074edc4p0
-  },
-  { // Entry 902
-    0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
-    0x1.cb91f3bbba13dp0
-  },
-  { // Entry 903
-    -0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
-    -0x1.cb91f3bbba13dp0
-  },
-  { // Entry 904
-    0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
-    0x1.dbfbbc70254b6p0
-  },
-  { // Entry 905
-    -0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
-    -0x1.dbfbbc70254b6p0
-  },
-  { // Entry 906
-    0x1.e07eeeda109cf25f400cd5f46acec887p-1,
-    0x1.ec6585249082fp0
-  },
-  { // Entry 907
-    -0x1.e07eeeda109cf25f400cd5f46acec887p-1,
-    -0x1.ec6585249082fp0
-  },
-  { // Entry 908
-    0x1.d42de42dce138e890939e56c439ded90p-1,
-    0x1.fccf4dd8fbba8p0
-  },
-  { // Entry 909
-    -0x1.d42de42dce138e890939e56c439ded90p-1,
-    -0x1.fccf4dd8fbba8p0
-  },
-  { // Entry 910
-    0x1.c5f058230e8014ab83ece0c3a638c079p-1,
-    0x1.069c8b46b3791p1
-  },
-  { // Entry 911
-    -0x1.c5f058230e8014ab83ece0c3a638c079p-1,
-    -0x1.069c8b46b3791p1
-  },
-  { // Entry 912
-    0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
-    0x1.0ed16fa0e914ep1
-  },
-  { // Entry 913
-    -0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
-    -0x1.0ed16fa0e914ep1
-  },
-  { // Entry 914
-    0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
-    0x1.170653fb1eb0bp1
-  },
-  { // Entry 915
-    -0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
-    -0x1.170653fb1eb0bp1
-  },
-  { // Entry 916
-    0x1.904c37505de4b8975dd2730e196ddfc3p-1,
-    0x1.1f3b3855544c8p1
-  },
-  { // Entry 917
-    -0x1.904c37505de4b8975dd2730e196ddfc3p-1,
-    -0x1.1f3b3855544c8p1
-  },
-  { // Entry 918
-    0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
-    0x1.27701caf89e85p1
-  },
-  { // Entry 919
-    -0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
-    -0x1.27701caf89e85p1
-  },
-  { // Entry 920
-    0x1.643080d67acc14620672dda6241ea305p-1,
-    0x1.2fa50109bf842p1
-  },
-  { // Entry 921
-    -0x1.643080d67acc14620672dda6241ea305p-1,
-    -0x1.2fa50109bf842p1
-  },
-  { // Entry 922
-    0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
-    0x1.37d9e563f51ffp1
-  },
-  { // Entry 923
-    -0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
-    -0x1.37d9e563f51ffp1
-  },
-  { // Entry 924
-    0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
-    0x1.400ec9be2abbcp1
-  },
-  { // Entry 925
-    -0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
-    -0x1.400ec9be2abbcp1
-  },
-  { // Entry 926
-    0x1.175059bf0d42033bbcf598c88b176e61p-1,
-    0x1.4843ae1860579p1
-  },
-  { // Entry 927
-    -0x1.175059bf0d42033bbcf598c88b176e61p-1,
-    -0x1.4843ae1860579p1
-  },
-  { // Entry 928
-    0x1.f67ea975b8692521f77d6754b302c5c4p-2,
-    0x1.5078927295f36p1
-  },
-  { // Entry 929
-    -0x1.f67ea975b8692521f77d6754b302c5c4p-2,
-    -0x1.5078927295f36p1
-  },
-  { // Entry 930
-    0x1.bc4c04d71abad14efc29a66342ada723p-2,
-    0x1.58ad76cccb8f3p1
-  },
-  { // Entry 931
-    -0x1.bc4c04d71abad14efc29a66342ada723p-2,
-    -0x1.58ad76cccb8f3p1
-  },
-  { // Entry 932
-    0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
-    0x1.60e25b27012b0p1
-  },
-  { // Entry 933
-    -0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
-    -0x1.60e25b27012b0p1
-  },
-  { // Entry 934
-    0x1.42abba8c72fa12be920b316627512e41p-2,
-    0x1.69173f8136c6dp1
-  },
-  { // Entry 935
-    -0x1.42abba8c72fa12be920b316627512e41p-2,
-    -0x1.69173f8136c6dp1
-  },
-  { // Entry 936
-    0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
-    0x1.714c23db6c62ap1
-  },
-  { // Entry 937
-    -0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
-    -0x1.714c23db6c62ap1
-  },
-  { // Entry 938
-    0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
-    0x1.79810835a1fe7p1
-  },
-  { // Entry 939
-    -0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
-    -0x1.79810835a1fe7p1
-  },
-  { // Entry 940
-    0x1.05e4761ab8d421719567717f76712867p-3,
-    0x1.81b5ec8fd79a4p1
-  },
-  { // Entry 941
-    -0x1.05e4761ab8d421719567717f76712867p-3,
-    -0x1.81b5ec8fd79a4p1
-  },
-  { // Entry 942
-    0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
-    0x1.89ead0ea0d35bp1
-  },
-  { // Entry 943
-    -0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
-    -0x1.89ead0ea0d35bp1
-  },
-  { // Entry 944
-    0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
-    -0x1.81b5ec8fd799fp2
-  },
-  { // Entry 945
-    -0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
-    0x1.81b5ec8fd799fp2
-  },
-  { // Entry 946
-    0x1.f67ea975b86a22f2348778824f95d84ap-2,
-    -0x1.714c23db6c626p2
-  },
-  { // Entry 947
-    -0x1.f67ea975b86a22f2348778824f95d84ap-2,
-    0x1.714c23db6c626p2
-  },
-  { // Entry 948
-    0x1.643080d67acc210fa27e9247a8286220p-1,
-    -0x1.60e25b27012adp2
-  },
-  { // Entry 949
-    -0x1.643080d67acc210fa27e9247a8286220p-1,
-    0x1.60e25b27012adp2
-  },
-  { // Entry 950
-    0x1.b5d545b109bf950b419702972b94f8fap-1,
-    -0x1.5078927295f34p2
-  },
-  { // Entry 951
-    -0x1.b5d545b109bf950b419702972b94f8fap-1,
-    0x1.5078927295f34p2
-  },
-  { // Entry 952
-    0x1.ead6834909b9346234dbb601d0486cf2p-1,
-    -0x1.400ec9be2abbbp2
-  },
-  { // Entry 953
-    -0x1.ead6834909b9346234dbb601d0486cf2p-1,
-    0x1.400ec9be2abbbp2
-  },
-  { // Entry 954
-    0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
-    -0x1.2fa50109bf842p2
-  },
-  { // Entry 955
-    -0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
-    0x1.2fa50109bf842p2
-  },
-  { // Entry 956
-    0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
-    -0x1.1f3b3855544c9p2
-  },
-  { // Entry 957
-    -0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
-    0x1.1f3b3855544c9p2
-  },
-  { // Entry 958
-    0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
-    -0x1.0ed16fa0e9150p2
-  },
-  { // Entry 959
-    -0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
-    0x1.0ed16fa0e9150p2
-  },
-  { // Entry 960
-    0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
-    -0x1.fccf4dd8fbbaep1
-  },
-  { // Entry 961
-    -0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
-    0x1.fccf4dd8fbbaep1
-  },
-  { // Entry 962
-    0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
-    -0x1.dbfbbc70254bcp1
-  },
-  { // Entry 963
-    -0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
-    0x1.dbfbbc70254bcp1
-  },
-  { // Entry 964
-    0x1.42abba8c72fd22194793246b8d19960ap-2,
-    -0x1.bb282b074edcap1
-  },
-  { // Entry 965
-    -0x1.42abba8c72fd22194793246b8d19960ap-2,
-    0x1.bb282b074edcap1
-  },
-  { // Entry 966
-    0x1.066e7eb76f62b5f4563de26dca890017p-4,
-    -0x1.9a54999e786d8p1
-  },
-  { // Entry 967
-    -0x1.066e7eb76f62b5f4563de26dca890017p-4,
-    0x1.9a54999e786d8p1
-  },
-  { // Entry 968
-    -0x1.877e2cd4f6fa42586875c5250a169e48p-3,
-    -0x1.79810835a1fe6p1
-  },
-  { // Entry 969
-    0x1.877e2cd4f6fa42586875c5250a169e48p-3,
-    0x1.79810835a1fe6p1
-  },
-  { // Entry 970
-    -0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
-    -0x1.58ad76cccb8f4p1
-  },
-  { // Entry 971
-    0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
-    0x1.58ad76cccb8f4p1
-  },
-  { // Entry 972
-    -0x1.4be4979c5efa871d30ae1cfa66389199p-1,
-    -0x1.37d9e563f5202p1
-  },
-  { // Entry 973
-    0x1.4be4979c5efa871d30ae1cfa66389199p-1,
-    0x1.37d9e563f5202p1
-  },
-  { // Entry 974
-    -0x1.a3ed9e25293822168958cce1e09f7c11p-1,
-    -0x1.170653fb1eb10p1
-  },
-  { // Entry 975
-    0x1.a3ed9e25293822168958cce1e09f7c11p-1,
-    0x1.170653fb1eb10p1
-  },
-  { // Entry 976
-    -0x1.e07eeeda109c62b340dc36e92169648dp-1,
-    -0x1.ec6585249083cp0
-  },
-  { // Entry 977
-    0x1.e07eeeda109c62b340dc36e92169648dp-1,
-    0x1.ec6585249083cp0
-  },
-  { // Entry 978
-    -0x1.fda254c27a01dd954db3aea505e49453p-1,
-    -0x1.aabe6252e3a58p0
-  },
-  { // Entry 979
-    0x1.fda254c27a01dd954db3aea505e49453p-1,
-    0x1.aabe6252e3a58p0
-  },
-  { // Entry 980
-    -0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
-    -0x1.69173f8136c74p0
-  },
-  { // Entry 981
-    0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
-    0x1.69173f8136c74p0
-  },
-  { // Entry 982
-    -0x1.d42de42dce13ef040bb1040e3148d7dep-1,
-    -0x1.27701caf89e90p0
-  },
-  { // Entry 983
-    0x1.d42de42dce13ef040bb1040e3148d7dep-1,
-    0x1.27701caf89e90p0
-  },
-  { // Entry 984
-    -0x1.904c37505de5930812e3a2a94feaa51bp-1,
-    -0x1.cb91f3bbba157p-1
-  },
-  { // Entry 985
-    0x1.904c37505de5930812e3a2a94feaa51bp-1,
-    0x1.cb91f3bbba157p-1
-  },
-  { // Entry 986
-    -0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
-    -0x1.4843ae186058ep-1
-  },
-  { // Entry 987
-    0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
-    0x1.4843ae186058ep-1
-  },
-  { // Entry 988
-    -0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
-    -0x1.89ead0ea0d38ap-2
-  },
-  { // Entry 989
-    0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
-    0x1.89ead0ea0d38ap-2
-  },
-  { // Entry 990
-    -0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
-    -0x1.069c8b46b37f0p-3
-  },
-  { // Entry 991
-    0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
-    0x1.069c8b46b37f0p-3
-  },
-  { // Entry 992
-    0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
-    0x1.069c8b46b3734p-3
-  },
-  { // Entry 993
-    -0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
-    -0x1.069c8b46b3734p-3
-  },
-  { // Entry 994
-    0x1.8045fe64e62b19a094399502afb76e5cp-2,
-    0x1.89ead0ea0d32cp-2
-  },
-  { // Entry 995
-    -0x1.8045fe64e62b19a094399502afb76e5cp-2,
-    -0x1.89ead0ea0d32cp-2
-  },
-  { // Entry 996
-    0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
-    0x1.4843ae186055fp-1
-  },
-  { // Entry 997
-    -0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
-    -0x1.4843ae186055fp-1
-  },
-  { // Entry 998
-    0x1.904c37505de3be2ace17ca5487750231p-1,
-    0x1.cb91f3bbba128p-1
-  },
-  { // Entry 999
-    -0x1.904c37505de3be2ace17ca5487750231p-1,
-    -0x1.cb91f3bbba128p-1
-  },
-  { // Entry 1000
-    0x1.d42de42dce12b82466f2fcb63b294751p-1,
-    0x1.27701caf89e78p0
-  },
-  { // Entry 1001
-    -0x1.d42de42dce12b82466f2fcb63b294751p-1,
-    -0x1.27701caf89e78p0
-  },
-  { // Entry 1002
-    0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
-    0x1.69173f8136c5cp0
-  },
-  { // Entry 1003
-    -0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
-    -0x1.69173f8136c5cp0
-  },
-  { // Entry 1004
-    0x1.fda254c27a02275432d77dd6f9704644p-1,
-    0x1.aabe6252e3a40p0
-  },
-  { // Entry 1005
-    -0x1.fda254c27a02275432d77dd6f9704644p-1,
-    -0x1.aabe6252e3a40p0
-  },
-  { // Entry 1006
-    0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
-    0x1.ec65852490824p0
-  },
-  { // Entry 1007
-    -0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
-    -0x1.ec65852490824p0
-  },
-  { // Entry 1008
-    0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
-    0x1.170653fb1eb04p1
-  },
-  { // Entry 1009
-    -0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
-    -0x1.170653fb1eb04p1
-  },
-  { // Entry 1010
-    0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
-    0x1.37d9e563f51f6p1
-  },
-  { // Entry 1011
-    -0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
-    -0x1.37d9e563f51f6p1
-  },
-  { // Entry 1012
-    0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
-    0x1.58ad76cccb8e8p1
-  },
-  { // Entry 1013
-    -0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
-    -0x1.58ad76cccb8e8p1
-  },
-  { // Entry 1014
-    0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
-    0x1.79810835a1fdap1
-  },
-  { // Entry 1015
-    -0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
-    -0x1.79810835a1fdap1
-  },
-  { // Entry 1016
-    -0x1.066e7eb76f4ac293f46486dc328d450bp-4,
-    0x1.9a54999e786ccp1
-  },
-  { // Entry 1017
-    0x1.066e7eb76f4ac293f46486dc328d450bp-4,
-    -0x1.9a54999e786ccp1
-  },
-  { // Entry 1018
-    -0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
-    0x1.bb282b074edbep1
-  },
-  { // Entry 1019
-    0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
-    -0x1.bb282b074edbep1
-  },
-  { // Entry 1020
-    -0x1.175059bf0d406e2fe014e880dd29cfacp-1,
-    0x1.dbfbbc70254b0p1
-  },
-  { // Entry 1021
-    0x1.175059bf0d406e2fe014e880dd29cfacp-1,
-    -0x1.dbfbbc70254b0p1
-  },
-  { // Entry 1022
-    -0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
-    0x1.fccf4dd8fbba2p1
-  },
-  { // Entry 1023
-    0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
-    -0x1.fccf4dd8fbba2p1
-  },
-  { // Entry 1024
-    -0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
-    0x1.0ed16fa0e914ap2
-  },
-  { // Entry 1025
-    0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
-    -0x1.0ed16fa0e914ap2
-  },
-  { // Entry 1026
-    -0x1.f329c0558e95fa333d5d2d44d654777cp-1,
-    0x1.1f3b3855544c3p2
-  },
-  { // Entry 1027
-    0x1.f329c0558e95fa333d5d2d44d654777cp-1,
-    -0x1.1f3b3855544c3p2
-  },
-  { // Entry 1028
-    -0x1.ffbca846c4fcb237c2947b35b037a2p-1,
-    0x1.2fa50109bf83cp2
-  },
-  { // Entry 1029
-    0x1.ffbca846c4fcb237c2947b35b037a2p-1,
-    -0x1.2fa50109bf83cp2
-  },
-  { // Entry 1030
-    -0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
-    0x1.400ec9be2abb5p2
-  },
-  { // Entry 1031
-    0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
-    -0x1.400ec9be2abb5p2
-  },
-  { // Entry 1032
-    -0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
-    0x1.5078927295f2ep2
-  },
-  { // Entry 1033
-    0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
-    -0x1.5078927295f2ep2
-  },
-  { // Entry 1034
-    -0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
-    0x1.60e25b27012a7p2
-  },
-  { // Entry 1035
-    0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
-    -0x1.60e25b27012a7p2
-  },
-  { // Entry 1036
-    -0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
-    0x1.714c23db6c620p2
-  },
-  { // Entry 1037
-    0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
-    -0x1.714c23db6c620p2
-  },
-  { // Entry 1038
-    -0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
-    0x1.81b5ec8fd7999p2
-  },
-  { // Entry 1039
-    0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
-    -0x1.81b5ec8fd7999p2
-  },
-  { // Entry 1040
-    0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
-    0x1.effffffffffffp-5
-  },
-  { // Entry 1041
-    -0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
-    -0x1.effffffffffffp-5
-  },
-  { // Entry 1042
-    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    0x1.fp-5
-  },
-  { // Entry 1043
-    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    -0x1.fp-5
-  },
-  { // Entry 1044
-    0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
-    0x1.f000000000001p-5
-  },
-  { // Entry 1045
-    -0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
-    -0x1.f000000000001p-5
-  },
-  { // Entry 1046
-    0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
-    0x1.f7fffffffffffp-4
-  },
-  { // Entry 1047
-    -0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
-    -0x1.f7fffffffffffp-4
-  },
-  { // Entry 1048
-    0x1.f6baaa131de6438e5611279864fe7663p-4,
-    0x1.f80p-4
-  },
-  { // Entry 1049
-    -0x1.f6baaa131de6438e5611279864fe7663p-4,
-    -0x1.f80p-4
-  },
-  { // Entry 1050
-    0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
-    0x1.f800000000001p-4
-  },
-  { // Entry 1051
-    -0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
-    -0x1.f800000000001p-4
-  },
-  { // Entry 1052
-    0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
-    0x1.4bfffffffffffp-3
-  },
-  { // Entry 1053
-    -0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
-    -0x1.4bfffffffffffp-3
-  },
-  { // Entry 1054
-    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    0x1.4c0p-3
-  },
-  { // Entry 1055
-    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    -0x1.4c0p-3
-  },
-  { // Entry 1056
-    0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
-    0x1.4c00000000001p-3
-  },
-  { // Entry 1057
-    -0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
-    -0x1.4c00000000001p-3
-  },
-  { // Entry 1058
-    0x1.2e9cd95baba325fe6067233d4496aaacp-2,
-    0x1.3333333333332p-2
-  },
-  { // Entry 1059
-    -0x1.2e9cd95baba325fe6067233d4496aaacp-2,
-    -0x1.3333333333332p-2
-  },
-  { // Entry 1060
-    0x1.2e9cd95baba335476f513ac221d078c7p-2,
-    0x1.3333333333333p-2
-  },
-  { // Entry 1061
-    -0x1.2e9cd95baba335476f513ac221d078c7p-2,
-    -0x1.3333333333333p-2
-  },
-  { // Entry 1062
-    0x1.2e9cd95baba344907e3b5246fef75d15p-2,
-    0x1.3333333333334p-2
-  },
-  { // Entry 1063
-    -0x1.2e9cd95baba344907e3b5246fef75d15p-2,
-    -0x1.3333333333334p-2
-  },
-  { // Entry 1064
-    0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
-    0x1.594317acc4ef8p-1
-  },
-  { // Entry 1065
-    -0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
-    -0x1.594317acc4ef8p-1
-  },
-  { // Entry 1066
-    0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
-    0x1.594317acc4ef9p-1
-  },
-  { // Entry 1067
-    -0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
-    -0x1.594317acc4ef9p-1
-  },
-  { // Entry 1068
-    0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
-    0x1.594317acc4efap-1
-  },
-  { // Entry 1069
-    -0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
-    -0x1.594317acc4efap-1
-  },
-  { // Entry 1070
-    0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
-    0x1.8ffffffffffffp-1
-  },
-  { // Entry 1071
-    -0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
-    -0x1.8ffffffffffffp-1
-  },
-  { // Entry 1072
-    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    0x1.9p-1
-  },
-  { // Entry 1073
-    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    -0x1.9p-1
-  },
-  { // Entry 1074
-    0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
-    0x1.9000000000001p-1
-  },
-  { // Entry 1075
-    -0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
-    -0x1.9000000000001p-1
-  },
-  { // Entry 1076
-    -0.0,
-    -0x1.0p-1074
-  },
-  { // Entry 1077
-    0.0,
-    0x1.0p-1074
-  },
-  { // Entry 1078
-    -0.0,
-    -0.0
-  },
-  { // Entry 1079
-    0.0,
-    0x1.0p-1074
-  },
-  { // Entry 1080
-    -0.0,
-    -0x1.0p-1074
-  },
-  { // Entry 1081
-    0x1.91f65f10dd812a0b95ff71871ab48207p-5,
-    0x1.921fb54442d17p-5
-  },
-  { // Entry 1082
-    -0x1.91f65f10dd812a0b95ff71871ab48207p-5,
-    -0x1.921fb54442d17p-5
-  },
-  { // Entry 1083
-    0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
-    0x1.921fb54442d18p-5
-  },
-  { // Entry 1084
-    -0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
-    -0x1.921fb54442d18p-5
-  },
-  { // Entry 1085
-    0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
-    0x1.921fb54442d19p-5
-  },
-  { // Entry 1086
-    -0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
-    -0x1.921fb54442d19p-5
-  },
-  { // Entry 1087
-    0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
-    0x1.921fb54442d17p-4
-  },
-  { // Entry 1088
-    -0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
-    -0x1.921fb54442d17p-4
-  },
-  { // Entry 1089
-    0x1.917a6bc29b42b9b9754a67729f79346bp-4,
-    0x1.921fb54442d18p-4
-  },
-  { // Entry 1090
-    -0x1.917a6bc29b42b9b9754a67729f79346bp-4,
-    -0x1.921fb54442d18p-4
-  },
-  { // Entry 1091
-    0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
-    0x1.921fb54442d19p-4
-  },
-  { // Entry 1092
-    -0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
-    -0x1.921fb54442d19p-4
-  },
-  { // Entry 1093
-    0x1.8f8b83c69a60975f98453886f953a0e5p-3,
-    0x1.921fb54442d17p-3
-  },
-  { // Entry 1094
-    -0x1.8f8b83c69a60975f98453886f953a0e5p-3,
-    -0x1.921fb54442d17p-3
-  },
-  { // Entry 1095
-    0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
-    0x1.921fb54442d18p-3
-  },
-  { // Entry 1096
-    -0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
-    -0x1.921fb54442d18p-3
-  },
-  { // Entry 1097
-    0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
-    0x1.921fb54442d19p-3
-  },
-  { // Entry 1098
-    -0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
-    -0x1.921fb54442d19p-3
-  },
-  { // Entry 1099
-    0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
-    0x1.921fb54442d17p-2
-  },
-  { // Entry 1100
-    -0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
-    -0x1.921fb54442d17p-2
-  },
-  { // Entry 1101
-    0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
-    0x1.921fb54442d18p-2
-  },
-  { // Entry 1102
-    -0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
-    -0x1.921fb54442d18p-2
-  },
-  { // Entry 1103
-    0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
-    0x1.921fb54442d19p-2
-  },
-  { // Entry 1104
-    -0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
-    -0x1.921fb54442d19p-2
-  },
-  { // Entry 1105
-    0x1.6a09e667f3bcba99afb0135729457874p-1,
-    0x1.921fb54442d17p-1
-  },
-  { // Entry 1106
-    -0x1.6a09e667f3bcba99afb0135729457874p-1,
-    -0x1.921fb54442d17p-1
-  },
-  { // Entry 1107
-    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 1108
-    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    -0x1.921fb54442d18p-1
-  },
-  { // Entry 1109
-    0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
-    0x1.921fb54442d19p-1
-  },
-  { // Entry 1110
-    -0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
-    -0x1.921fb54442d19p-1
-  },
-  { // Entry 1111
-    0x1.fffffffffffffffffffffffffe5f56ffp-1,
-    0x1.921fb54442d17p0
-  },
-  { // Entry 1112
-    -0x1.fffffffffffffffffffffffffe5f56ffp-1,
-    -0x1.921fb54442d17p0
-  },
-  { // Entry 1113
-    0x1.ffffffffffffffffffffffffffec8831p-1,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 1114
-    -0x1.ffffffffffffffffffffffffffec8831p-1,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 1115
-    0x1.ffffffffffffffffffffffffff79b963p-1,
-    0x1.921fb54442d19p0
-  },
-  { // Entry 1116
-    -0x1.ffffffffffffffffffffffffff79b963p-1,
-    -0x1.921fb54442d19p0
-  },
-  { // Entry 1117
-    0x1.469898cc51701b839a252049bfaeed42p-51,
-    0x1.921fb54442d17p1
-  },
-  { // Entry 1118
-    -0x1.469898cc51701b839a252049bfaeed42p-51,
-    -0x1.921fb54442d17p1
-  },
-  { // Entry 1119
-    0x1.1a62633145c06e0e689481270436e2edp-53,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 1120
-    -0x1.1a62633145c06e0e689481270436e2edp-53,
-    -0x1.921fb54442d18p1
-  },
-  { // Entry 1121
-    -0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
-    0x1.921fb54442d19p1
-  },
-  { // Entry 1122
-    0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
-    -0x1.921fb54442d19p1
-  },
-  { // Entry 1123
-    -0x1.469898cc51701b839a252049bb87ce1bp-50,
-    0x1.921fb54442d17p2
-  },
-  { // Entry 1124
-    0x1.469898cc51701b839a252049bb87ce1bp-50,
-    -0x1.921fb54442d17p2
-  },
-  { // Entry 1125
-    -0x1.1a62633145c06e0e68948127040bf003p-52,
-    0x1.921fb54442d18p2
-  },
-  { // Entry 1126
-    0x1.1a62633145c06e0e68948127040bf003p-52,
-    -0x1.921fb54442d18p2
-  },
-  { // Entry 1127
-    0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
-    0x1.921fb54442d19p2
-  },
-  { // Entry 1128
-    -0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
-    -0x1.921fb54442d19p2
-  },
-  { // Entry 1129
-    -0x1.469898cc51701b839a252049aaeb5182p-49,
-    0x1.921fb54442d17p3
-  },
-  { // Entry 1130
-    0x1.469898cc51701b839a252049aaeb5182p-49,
-    -0x1.921fb54442d17p3
-  },
-  { // Entry 1131
-    -0x1.1a62633145c06e0e689481270360245cp-51,
-    0x1.921fb54442d18p3
-  },
-  { // Entry 1132
-    0x1.1a62633145c06e0e689481270360245cp-51,
-    -0x1.921fb54442d18p3
-  },
-  { // Entry 1133
-    0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
-    0x1.921fb54442d19p3
-  },
-  { // Entry 1134
-    -0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
-    -0x1.921fb54442d19p3
-  },
-  { // Entry 1135
-    -0x1.469898cc51701b839a25204968795f1cp-48,
-    0x1.921fb54442d17p4
-  },
-  { // Entry 1136
-    0x1.469898cc51701b839a25204968795f1cp-48,
-    -0x1.921fb54442d17p4
-  },
-  { // Entry 1137
-    -0x1.1a62633145c06e0e6894812700b0f5bfp-50,
-    0x1.921fb54442d18p4
-  },
-  { // Entry 1138
-    0x1.1a62633145c06e0e6894812700b0f5bfp-50,
-    -0x1.921fb54442d18p4
-  },
-  { // Entry 1139
-    0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
-    0x1.921fb54442d19p4
-  },
-  { // Entry 1140
-    -0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
-    -0x1.921fb54442d19p4
-  },
-  { // Entry 1141
-    -0x1.469898cc51701b839a2520485eb19584p-47,
-    0x1.921fb54442d17p5
-  },
-  { // Entry 1142
-    0x1.469898cc51701b839a2520485eb19584p-47,
-    -0x1.921fb54442d17p5
-  },
-  { // Entry 1143
-    -0x1.1a62633145c06e0e68948126f5f43b4cp-49,
-    0x1.921fb54442d18p5
-  },
-  { // Entry 1144
-    0x1.1a62633145c06e0e68948126f5f43b4cp-49,
-    -0x1.921fb54442d18p5
-  },
-  { // Entry 1145
-    0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
-    0x1.921fb54442d19p5
-  },
-  { // Entry 1146
-    -0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
-    -0x1.921fb54442d19p5
-  },
-  { // Entry 1147
-    -0x1.469898cc51701b839a25204437926f25p-46,
-    0x1.921fb54442d17p6
-  },
-  { // Entry 1148
-    0x1.469898cc51701b839a25204437926f25p-46,
-    -0x1.921fb54442d17p6
-  },
-  { // Entry 1149
-    -0x1.1a62633145c06e0e68948126cb01517dp-48,
-    0x1.921fb54442d18p6
-  },
-  { // Entry 1150
-    0x1.1a62633145c06e0e68948126cb01517dp-48,
-    -0x1.921fb54442d18p6
-  },
-  { // Entry 1151
-    0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
-    0x1.921fb54442d19p6
-  },
-  { // Entry 1152
-    -0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
-    -0x1.921fb54442d19p6
-  },
-  { // Entry 1153
-    -0x1.469898cc51701b839a2520339b15d5aap-45,
-    0x1.921fb54442d17p7
-  },
-  { // Entry 1154
-    0x1.469898cc51701b839a2520339b15d5aap-45,
-    -0x1.921fb54442d17p7
-  },
-  { // Entry 1155
-    -0x1.1a62633145c06e0e689481261f35aa43p-47,
-    0x1.921fb54442d18p7
-  },
-  { // Entry 1156
-    0x1.1a62633145c06e0e689481261f35aa43p-47,
-    -0x1.921fb54442d18p7
-  },
-  { // Entry 1157
-    0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
-    0x1.921fb54442d19p7
-  },
-  { // Entry 1158
-    -0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
-    -0x1.921fb54442d19p7
-  },
-  { // Entry 1159
-    0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
-    0x1.2d97c7f3321d1p1
-  },
-  { // Entry 1160
-    -0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
-    -0x1.2d97c7f3321d1p1
-  },
-  { // Entry 1161
-    0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
-    0x1.2d97c7f3321d2p1
-  },
-  { // Entry 1162
-    -0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
-    -0x1.2d97c7f3321d2p1
-  },
-  { // Entry 1163
-    0x1.6a09e667f3bca52392755644dfe72357p-1,
-    0x1.2d97c7f3321d3p1
-  },
-  { // Entry 1164
-    -0x1.6a09e667f3bca52392755644dfe72357p-1,
-    -0x1.2d97c7f3321d3p1
-  },
-  { // Entry 1165
-    -0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
-    0x1.f6a7a2955385dp1
-  },
-  { // Entry 1166
-    0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
-    -0x1.f6a7a2955385dp1
-  },
-  { // Entry 1167
-    -0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
-    0x1.f6a7a2955385ep1
-  },
-  { // Entry 1168
-    0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
-    -0x1.f6a7a2955385ep1
-  },
-  { // Entry 1169
-    -0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
-    0x1.f6a7a2955385fp1
-  },
-  { // Entry 1170
-    0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
-    -0x1.f6a7a2955385fp1
-  },
-  { // Entry 1171
-    -0x1.ffffffffffffffffffffffffe8b27b6ap-1,
-    0x1.2d97c7f3321d1p2
-  },
-  { // Entry 1172
-    0x1.ffffffffffffffffffffffffe8b27b6ap-1,
-    -0x1.2d97c7f3321d1p2
-  },
-  { // Entry 1173
-    -0x1.ffffffffffffffffffffffffff50c9bdp-1,
-    0x1.2d97c7f3321d2p2
-  },
-  { // Entry 1174
-    0x1.ffffffffffffffffffffffffff50c9bdp-1,
-    -0x1.2d97c7f3321d2p2
-  },
-  { // Entry 1175
-    -0x1.fffffffffffffffffffffffff5ef1810p-1,
-    0x1.2d97c7f3321d3p2
-  },
-  { // Entry 1176
-    0x1.fffffffffffffffffffffffff5ef1810p-1,
-    -0x1.2d97c7f3321d3p2
-  },
-  { // Entry 1177
-    -0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
-    0x1.5fdbbe9bba774p2
-  },
-  { // Entry 1178
-    0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
-    -0x1.5fdbbe9bba774p2
-  },
-  { // Entry 1179
-    -0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
-    0x1.5fdbbe9bba775p2
-  },
-  { // Entry 1180
-    0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
-    -0x1.5fdbbe9bba775p2
-  },
-  { // Entry 1181
-    -0x1.6a09e667f3bc845d26075994ad02bd98p-1,
-    0x1.5fdbbe9bba776p2
-  },
-  { // Entry 1182
-    0x1.6a09e667f3bc845d26075994ad02bd98p-1,
-    -0x1.5fdbbe9bba776p2
-  },
-  { // Entry 1183
-    0x1.6a09e667f3bc5271e48b5276f438579fp-1,
-    0x1.c463abeccb2bap2
-  },
-  { // Entry 1184
-    -0x1.6a09e667f3bc5271e48b5276f438579fp-1,
-    -0x1.c463abeccb2bap2
-  },
-  { // Entry 1185
-    0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
-    0x1.c463abeccb2bbp2
-  },
-  { // Entry 1186
-    -0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
-    -0x1.c463abeccb2bbp2
-  },
-  { // Entry 1187
-    0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
-    0x1.c463abeccb2bcp2
-  },
-  { // Entry 1188
-    -0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
-    -0x1.c463abeccb2bcp2
-  },
-  { // Entry 1189
-    0x1.ffffffffffffffffffffffffe31174f5p-1,
-    0x1.f6a7a2955385dp2
-  },
-  { // Entry 1190
-    -0x1.ffffffffffffffffffffffffe31174f5p-1,
-    -0x1.f6a7a2955385dp2
-  },
-  { // Entry 1191
-    0x1.fffffffffffffffffffffffffe194cd4p-1,
-    0x1.f6a7a2955385ep2
-  },
-  { // Entry 1192
-    -0x1.fffffffffffffffffffffffffe194cd4p-1,
-    -0x1.f6a7a2955385ep2
-  },
-  { // Entry 1193
-    0x1.fffffffffffffffffffffffff92124b4p-1,
-    0x1.f6a7a2955385fp2
-  },
-  { // Entry 1194
-    -0x1.fffffffffffffffffffffffff92124b4p-1,
-    -0x1.f6a7a2955385fp2
-  },
-  { // Entry 1195
-    0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
-    0x1.1475cc9eedeffp3
-  },
-  { // Entry 1196
-    -0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
-    -0x1.1475cc9eedeffp3
-  },
-  { // Entry 1197
-    0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
-    0x1.1475cc9eedfp3
-  },
-  { // Entry 1198
-    -0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
-    -0x1.1475cc9eedfp3
-  },
-  { // Entry 1199
-    0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
-    0x1.1475cc9eedf01p3
-  },
-  { // Entry 1200
-    -0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
-    -0x1.1475cc9eedf01p3
-  },
-  { // Entry 1201
-    0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
-    0x1.2d97c7f3321d1p3
-  },
-  { // Entry 1202
-    -0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
-    -0x1.2d97c7f3321d1p3
-  },
-  { // Entry 1203
-    0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
-    0x1.2d97c7f3321d2p3
-  },
-  { // Entry 1204
-    -0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
-    -0x1.2d97c7f3321d2p3
-  },
-  { // Entry 1205
-    -0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
-    0x1.2d97c7f3321d3p3
-  },
-  { // Entry 1206
-    0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
-    -0x1.2d97c7f3321d3p3
-  },
-  { // Entry 1207
-    -0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
-    0x1.46b9c347764a2p3
-  },
-  { // Entry 1208
-    0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
-    -0x1.46b9c347764a2p3
-  },
-  { // Entry 1209
-    -0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
-    0x1.46b9c347764a3p3
-  },
-  { // Entry 1210
-    0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
-    -0x1.46b9c347764a3p3
-  },
-  { // Entry 1211
-    -0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
-    0x1.46b9c347764a4p3
-  },
-  { // Entry 1212
-    0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
-    -0x1.46b9c347764a4p3
-  },
-  { // Entry 1213
-    -0x1.ffffffffffffffffffffffff9d634e9fp-1,
-    0x1.5fdbbe9bba774p3
-  },
-  { // Entry 1214
-    0x1.ffffffffffffffffffffffff9d634e9fp-1,
-    -0x1.5fdbbe9bba774p3
-  },
-  { // Entry 1215
-    -0x1.fffffffffffffffffffffffffc461178p-1,
-    0x1.5fdbbe9bba775p3
-  },
-  { // Entry 1216
-    0x1.fffffffffffffffffffffffffc461178p-1,
-    -0x1.5fdbbe9bba775p3
-  },
-  { // Entry 1217
-    -0x1.ffffffffffffffffffffffffdb28d451p-1,
-    0x1.5fdbbe9bba776p3
-  },
-  { // Entry 1218
-    0x1.ffffffffffffffffffffffffdb28d451p-1,
-    -0x1.5fdbbe9bba776p3
-  },
-  { // Entry 1219
-    -0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
-    0x1.78fdb9effea45p3
-  },
-  { // Entry 1220
-    0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
-    -0x1.78fdb9effea45p3
-  },
-  { // Entry 1221
-    -0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
-    0x1.78fdb9effea46p3
-  },
-  { // Entry 1222
-    0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
-    -0x1.78fdb9effea46p3
-  },
-  { // Entry 1223
-    -0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
-    0x1.78fdb9effea47p3
-  },
-  { // Entry 1224
-    0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
-    -0x1.78fdb9effea47p3
-  },
-  { // Entry 1225
-    0x1.6a09e667f3bb8477509955093bb292bep-1,
-    0x1.ab41b09886fe8p3
-  },
-  { // Entry 1226
-    -0x1.6a09e667f3bb8477509955093bb292bep-1,
-    -0x1.ab41b09886fe8p3
-  },
-  { // Entry 1227
-    0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
-    0x1.ab41b09886fe9p3
-  },
-  { // Entry 1228
-    -0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
-    -0x1.ab41b09886fe9p3
-  },
-  { // Entry 1229
-    0x1.6a09e667f3bcee81370148c69447b4e7p-1,
-    0x1.ab41b09886feap3
-  },
-  { // Entry 1230
-    -0x1.6a09e667f3bcee81370148c69447b4e7p-1,
-    -0x1.ab41b09886feap3
-  },
-  { // Entry 1231
-    0x1.ffffffffffffffffffffffff922141b4p-1,
-    0x1.c463abeccb2bap3
-  },
-  { // Entry 1232
-    -0x1.ffffffffffffffffffffffff922141b4p-1,
-    -0x1.c463abeccb2bap3
-  },
-  { // Entry 1233
-    0x1.fffffffffffffffffffffffff9d717a7p-1,
-    0x1.c463abeccb2bbp3
-  },
-  { // Entry 1234
-    -0x1.fffffffffffffffffffffffff9d717a7p-1,
-    -0x1.c463abeccb2bbp3
-  },
-  { // Entry 1235
-    0x1.ffffffffffffffffffffffffe18ced9ap-1,
-    0x1.c463abeccb2bcp3
-  },
-  { // Entry 1236
-    -0x1.ffffffffffffffffffffffffe18ced9ap-1,
-    -0x1.c463abeccb2bcp3
-  },
-  { // Entry 1237
-    0x1.6a09e667f3be13d77d8c52a726550eacp-1,
-    0x1.dd85a7410f58bp3
-  },
-  { // Entry 1238
-    -0x1.6a09e667f3be13d77d8c52a726550eacp-1,
-    -0x1.dd85a7410f58bp3
-  },
-  { // Entry 1239
-    0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
-    0x1.dd85a7410f58cp3
-  },
-  { // Entry 1240
-    -0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
-    -0x1.dd85a7410f58cp3
-  },
-  { // Entry 1241
-    0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
-    0x1.dd85a7410f58dp3
-  },
-  { // Entry 1242
-    -0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
-    -0x1.dd85a7410f58dp3
-  },
-  { // Entry 1243
-    0x1.583ebeff65cc226480ae685c1765dec1p-49,
-    0x1.f6a7a2955385dp3
-  },
-  { // Entry 1244
-    -0x1.583ebeff65cc226480ae685c1765dec1p-49,
-    -0x1.f6a7a2955385dp3
-  },
-  { // Entry 1245
-    0x1.60fafbfd9730899202b9a170c3971e86p-51,
-    0x1.f6a7a2955385ep3
-  },
-  { // Entry 1246
-    -0x1.60fafbfd9730899202b9a170c3971e86p-51,
-    -0x1.f6a7a2955385ep3
-  },
-  { // Entry 1247
-    -0x1.4f8282013467bb36fea32f479753fe7ap-50,
-    0x1.f6a7a2955385fp3
-  },
-  { // Entry 1248
-    0x1.4f8282013467bb36fea32f479753fe7ap-50,
-    -0x1.f6a7a2955385fp3
-  },
-  { // Entry 1249
-    -0x1.6a09e667f3ba0df299d25f82f639251fp-1,
-    0x1.07e4cef4cbd96p4
-  },
-  { // Entry 1250
-    0x1.6a09e667f3ba0df299d25f82f639251fp-1,
-    -0x1.07e4cef4cbd96p4
-  },
-  { // Entry 1251
-    -0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
-    0x1.07e4cef4cbd97p4
-  },
-  { // Entry 1252
-    0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
-    -0x1.07e4cef4cbd97p4
-  },
-  { // Entry 1253
-    -0x1.6a09e667f3bce20666a246ff2a62f097p-1,
-    0x1.07e4cef4cbd98p4
-  },
-  { // Entry 1254
-    0x1.6a09e667f3bce20666a246ff2a62f097p-1,
-    -0x1.07e4cef4cbd98p4
-  },
-  { // Entry 1255
-    -0x1.fffffffffffffffffffffffd2531a43dp-1,
-    0x1.1475cc9eedeffp4
-  },
-  { // Entry 1256
-    0x1.fffffffffffffffffffffffd2531a43dp-1,
-    -0x1.1475cc9eedeffp4
-  },
-  { // Entry 1257
-    -0x1.ffffffffffffffffffffffff86437656p-1,
-    0x1.1475cc9eedfp4
-  },
-  { // Entry 1258
-    0x1.ffffffffffffffffffffffff86437656p-1,
-    -0x1.1475cc9eedfp4
-  },
-  { // Entry 1259
-    -0x1.ffffffffffffffffffffffffe755486fp-1,
-    0x1.1475cc9eedf01p4
-  },
-  { // Entry 1260
-    0x1.ffffffffffffffffffffffffe755486fp-1,
-    -0x1.1475cc9eedf01p4
-  },
-  { // Entry 1261
-    -0x1.6a09e667f3bed557411f4e4c114d7357p-1,
-    0x1.2106ca4910068p4
-  },
-  { // Entry 1262
-    0x1.6a09e667f3bed557411f4e4c114d7357p-1,
-    -0x1.2106ca4910068p4
-  },
-  { // Entry 1263
-    -0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
-    0x1.2106ca4910069p4
-  },
-  { // Entry 1264
-    0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
-    -0x1.2106ca4910069p4
-  },
-  { // Entry 1265
-    -0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
-    0x1.2106ca491006ap4
-  },
-  { // Entry 1266
-    0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
-    -0x1.2106ca491006ap4
-  },
-  { // Entry 1267
-    -0x1.34f272993d1414a2b39bd83705cec120p-48,
-    0x1.2d97c7f3321d1p4
-  },
-  { // Entry 1268
-    0x1.34f272993d1414a2b39bd83705cec120p-48,
-    -0x1.2d97c7f3321d1p4
-  },
-  { // Entry 1269
-    -0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
-    0x1.2d97c7f3321d2p4
-  },
-  { // Entry 1270
-    0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
-    -0x1.2d97c7f3321d2p4
-  },
-  { // Entry 1271
-    0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
-    0x1.2d97c7f3321d3p4
-  },
-  { // Entry 1272
-    -0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
-    -0x1.2d97c7f3321d3p4
-  },
-  { // Entry 1273
-    0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
-    0x1.3a28c59d54339p4
-  },
-  { // Entry 1274
-    -0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
-    -0x1.3a28c59d54339p4
-  },
-  { // Entry 1275
-    0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
-    0x1.3a28c59d5433ap4
-  },
-  { // Entry 1276
-    -0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
-    -0x1.3a28c59d5433ap4
-  },
-  { // Entry 1277
-    0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
-    0x1.3a28c59d5433bp4
-  },
-  { // Entry 1278
-    -0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
-    -0x1.3a28c59d5433bp4
-  },
-  { // Entry 1279
-    0x1.fffffffffffffffffffffffd0711f437p-1,
-    0x1.46b9c347764a2p4
-  },
-  { // Entry 1280
-    -0x1.fffffffffffffffffffffffd0711f437p-1,
-    -0x1.46b9c347764a2p4
-  },
-  { // Entry 1281
-    0x1.ffffffffffffffffffffffff79c9ec83p-1,
-    0x1.46b9c347764a3p4
-  },
-  { // Entry 1282
-    -0x1.ffffffffffffffffffffffff79c9ec83p-1,
-    -0x1.46b9c347764a3p4
-  },
-  { // Entry 1283
-    0x1.ffffffffffffffffffffffffec81e4cfp-1,
-    0x1.46b9c347764a4p4
-  },
-  { // Entry 1284
-    -0x1.ffffffffffffffffffffffffec81e4cfp-1,
-    -0x1.46b9c347764a4p4
-  },
-  { // Entry 1285
-    0x1.6a09e667f3bee1d2117e501369fbffefp-1,
-    0x1.534ac0f19860bp4
-  },
-  { // Entry 1286
-    -0x1.6a09e667f3bee1d2117e501369fbffefp-1,
-    -0x1.534ac0f19860bp4
-  },
-  { // Entry 1287
-    0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
-    0x1.534ac0f19860cp4
-  },
-  { // Entry 1288
-    -0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
-    -0x1.534ac0f19860cp4
-  },
-  { // Entry 1289
-    0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
-    0x1.534ac0f19860dp4
-  },
-  { // Entry 1290
-    -0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
-    -0x1.534ac0f19860dp4
-  },
-  { // Entry 1291
-    0x1.3dc585b2c742181326e07c40375464dep-48,
-    0x1.5fdbbe9bba774p4
-  },
-  { // Entry 1292
-    -0x1.3dc585b2c742181326e07c40375464dep-48,
-    -0x1.5fdbbe9bba774p4
-  },
-  { // Entry 1293
-    0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
-    0x1.5fdbbe9bba775p4
-  },
-  { // Entry 1294
-    -0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
-    -0x1.5fdbbe9bba775p4
-  },
-  { // Entry 1295
-    -0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
-    0x1.5fdbbe9bba776p4
-  },
-  { // Entry 1296
-    0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
-    -0x1.5fdbbe9bba776p4
-  },
-  { // Entry 1297
-    -0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
-    0x1.6c6cbc45dc8dcp4
-  },
-  { // Entry 1298
-    0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
-    -0x1.6c6cbc45dc8dcp4
-  },
-  { // Entry 1299
-    -0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
-    0x1.6c6cbc45dc8ddp4
-  },
-  { // Entry 1300
-    0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
-    -0x1.6c6cbc45dc8ddp4
-  },
-  { // Entry 1301
-    -0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
-    0x1.6c6cbc45dc8dep4
-  },
-  { // Entry 1302
-    0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
-    -0x1.6c6cbc45dc8dep4
-  },
-  { // Entry 1303
-    -0x1.fffffffffffffffffffffffce85685bdp-1,
-    0x1.78fdb9effea45p4
-  },
-  { // Entry 1304
-    0x1.fffffffffffffffffffffffce85685bdp-1,
-    -0x1.78fdb9effea45p4
-  },
-  { // Entry 1305
-    -0x1.ffffffffffffffffffffffff6cb4a43dp-1,
-    0x1.78fdb9effea46p4
-  },
-  { // Entry 1306
-    0x1.ffffffffffffffffffffffff6cb4a43dp-1,
-    -0x1.78fdb9effea46p4
-  },
-  { // Entry 1307
-    -0x1.fffffffffffffffffffffffff112c2bcp-1,
-    0x1.78fdb9effea47p4
-  },
-  { // Entry 1308
-    0x1.fffffffffffffffffffffffff112c2bcp-1,
-    -0x1.78fdb9effea47p4
-  },
-  { // Entry 1309
-    -0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
-    0x1.858eb79a20baep4
-  },
-  { // Entry 1310
-    0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
-    -0x1.858eb79a20baep4
-  },
-  { // Entry 1311
-    -0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
-    0x1.858eb79a20bafp4
-  },
-  { // Entry 1312
-    0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
-    -0x1.858eb79a20bafp4
-  },
-  { // Entry 1313
-    -0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
-    0x1.858eb79a20bb0p4
-  },
-  { // Entry 1314
-    0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
-    -0x1.858eb79a20bb0p4
-  },
-  { // Entry 1315
-    0x1.fa7299b17573d373c615096572a0de04p-1,
-    0x1.fffffffffffffp62
-  },
-  { // Entry 1316
-    -0x1.fa7299b17573d373c615096572a0de04p-1,
-    -0x1.fffffffffffffp62
-  },
-  { // Entry 1317
-    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    0x1.0p63
-  },
-  { // Entry 1318
-    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    -0x1.0p63
-  },
-  { // Entry 1319
-    0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
-    0x1.0000000000001p63
-  },
-  { // Entry 1320
-    -0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
-    -0x1.0000000000001p63
-  },
-  { // Entry 1321
-    -0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
-    0x1.fffffffffffffp26
-  },
-  { // Entry 1322
-    0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
-    -0x1.fffffffffffffp26
-  },
-  { // Entry 1323
-    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    0x1.0p27
-  },
-  { // Entry 1324
-    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    -0x1.0p27
-  },
-  { // Entry 1325
-    -0x1.86dcc9155fe182d4515599426bb14b94p-1,
-    0x1.0000000000001p27
-  },
-  { // Entry 1326
-    0x1.86dcc9155fe182d4515599426bb14b94p-1,
-    -0x1.0000000000001p27
-  },
-  { // Entry 1327
-    -0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
-    0x1.fffffffffffffp23
-  },
-  { // Entry 1328
-    0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
-    -0x1.fffffffffffffp23
-  },
-  { // Entry 1329
-    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    0x1.0p24
-  },
-  { // Entry 1330
-    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    -0x1.0p24
-  },
-  { // Entry 1331
-    -0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
-    0x1.0000000000001p24
-  },
-  { // Entry 1332
-    0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
-    -0x1.0000000000001p24
-  },
-  { // Entry 1333
-    -0x1.837b9dddc1eabd379d729f575fc1144cp-1,
-    0x1.fffffffffffffp1
-  },
-  { // Entry 1334
-    0x1.837b9dddc1eabd379d729f575fc1144cp-1,
-    -0x1.fffffffffffffp1
-  },
-  { // Entry 1335
-    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    0x1.0p2
-  },
-  { // Entry 1336
-    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    -0x1.0p2
-  },
-  { // Entry 1337
-    -0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
-    0x1.0000000000001p2
-  },
-  { // Entry 1338
-    0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
-    -0x1.0000000000001p2
-  },
-  { // Entry 1339
-    0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
-    0x1.fffffffffffffp0
-  },
-  { // Entry 1340
-    -0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
-    -0x1.fffffffffffffp0
-  },
-  { // Entry 1341
-    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    0x1.0p1
-  },
-  { // Entry 1342
-    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    -0x1.0p1
-  },
-  { // Entry 1343
-    0x1.d18f6ead1b44435891f0c50e01826988p-1,
-    0x1.0000000000001p1
-  },
-  { // Entry 1344
-    -0x1.d18f6ead1b44435891f0c50e01826988p-1,
-    -0x1.0000000000001p1
-  },
-  { // Entry 1345
-    0x1.aed548f090ced79c79cbf790441f8197p-1,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 1346
-    -0x1.aed548f090ced79c79cbf790441f8197p-1,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 1347
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.0p0
-  },
-  { // Entry 1348
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    -0x1.0p0
-  },
-  { // Entry 1349
-    0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    0x1.0000000000001p0
-  },
-  { // Entry 1350
-    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    -0x1.0000000000001p0
-  },
-  { // Entry 1351
-    0x1.eaee8744b05ef07cd0b9089130598314p-2,
-    0x1.fffffffffffffp-2
-  },
-  { // Entry 1352
-    -0x1.eaee8744b05ef07cd0b9089130598314p-2,
-    -0x1.fffffffffffffp-2
-  },
-  { // Entry 1353
-    0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    0x1.0p-1
-  },
-  { // Entry 1354
-    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    -0x1.0p-1
-  },
-  { // Entry 1355
-    0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
-    0x1.0000000000001p-1
-  },
-  { // Entry 1356
-    -0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
-    -0x1.0000000000001p-1
-  },
-  { // Entry 1357
-    0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
-    0x1.fffffffffffffp-3
-  },
-  { // Entry 1358
-    -0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
-    -0x1.fffffffffffffp-3
-  },
-  { // Entry 1359
-    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    0x1.0p-2
-  },
-  { // Entry 1360
-    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    -0x1.0p-2
-  },
-  { // Entry 1361
-    0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
-    0x1.0000000000001p-2
-  },
-  { // Entry 1362
-    -0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
-    -0x1.0000000000001p-2
-  },
-  { // Entry 1363
-    0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
-    0x1.fffffffffffffp-4
-  },
-  { // Entry 1364
-    -0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
-    -0x1.fffffffffffffp-4
-  },
-  { // Entry 1365
-    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    0x1.0p-3
-  },
-  { // Entry 1366
-    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    -0x1.0p-3
-  },
-  { // Entry 1367
-    0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
-    0x1.0000000000001p-3
-  },
-  { // Entry 1368
-    -0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
-    -0x1.0000000000001p-3
-  },
-  { // Entry 1369
-    0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
-    0x1.fffffffffffffp-5
-  },
-  { // Entry 1370
-    -0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
-    -0x1.fffffffffffffp-5
-  },
-  { // Entry 1371
-    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    0x1.0p-4
-  },
-  { // Entry 1372
-    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    -0x1.0p-4
-  },
-  { // Entry 1373
-    0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
-    0x1.0000000000001p-4
-  },
-  { // Entry 1374
-    -0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
-    -0x1.0000000000001p-4
-  },
-  { // Entry 1375
-    0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
-    0x1.fffffffffffffp-6
-  },
-  { // Entry 1376
-    -0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
-    -0x1.fffffffffffffp-6
-  },
-  { // Entry 1377
-    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    0x1.0p-5
-  },
-  { // Entry 1378
-    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    -0x1.0p-5
-  },
-  { // Entry 1379
-    0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
-    0x1.0000000000001p-5
-  },
-  { // Entry 1380
-    -0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
-    -0x1.0000000000001p-5
-  },
-  { // Entry 1381
-    0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
-    0x1.fffffffffffffp-7
-  },
-  { // Entry 1382
-    -0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
-    -0x1.fffffffffffffp-7
-  },
-  { // Entry 1383
-    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    0x1.0p-6
-  },
-  { // Entry 1384
-    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    -0x1.0p-6
-  },
-  { // Entry 1385
-    0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
-    0x1.0000000000001p-6
-  },
-  { // Entry 1386
-    -0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
-    -0x1.0000000000001p-6
-  },
-  { // Entry 1387
-    0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
-    0x1.fffffffffffffp-15
-  },
-  { // Entry 1388
-    -0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
-    -0x1.fffffffffffffp-15
-  },
-  { // Entry 1389
-    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    0x1.0p-14
-  },
-  { // Entry 1390
-    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    -0x1.0p-14
-  },
-  { // Entry 1391
-    0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
-    0x1.0000000000001p-14
-  },
-  { // Entry 1392
-    -0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
-    -0x1.0000000000001p-14
-  },
-  { // Entry 1393
-    0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
-    0x1.fffffffffffffp-28
-  },
-  { // Entry 1394
-    -0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
-    -0x1.fffffffffffffp-28
-  },
-  { // Entry 1395
-    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    0x1.0p-27
-  },
-  { // Entry 1396
-    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    -0x1.0p-27
-  },
-  { // Entry 1397
-    0x1.0000000000000f555555555555357777p-27,
-    0x1.0000000000001p-27
-  },
-  { // Entry 1398
-    -0x1.0000000000000f555555555555357777p-27,
-    -0x1.0000000000001p-27
-  },
-  { // Entry 1399
-    0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
-    0x1.fffffffffffffp-31
-  },
-  { // Entry 1400
-    -0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
-    -0x1.fffffffffffffp-31
-  },
-  { // Entry 1401
-    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    0x1.0p-30
-  },
-  { // Entry 1402
-    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    -0x1.0p-30
-  },
-  { // Entry 1403
-    0x1.0000000000000ffd555555555554d557p-30,
-    0x1.0000000000001p-30
-  },
-  { // Entry 1404
-    -0x1.0000000000000ffd555555555554d557p-30,
-    -0x1.0000000000001p-30
-  },
-  { // Entry 1405
-    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1406
-    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1407
-    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1408
-    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1409
-    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1410
-    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1411
-    0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
-    0x1.ffffffffffffep1023
-  },
-  { // Entry 1412
-    -0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
-    -0x1.ffffffffffffep1023
-  },
-  { // Entry 1413
-    0x1.1a62633145c06e0e689481270436e2edp-53,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 1414
-    -0x1.1a62633145c06e0e689481270436e2edp-53,
-    -0x1.921fb54442d18p1
-  },
-  { // Entry 1415
-    0x1.ffffffffffffffffffffffffffec8831p-1,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 1416
-    -0x1.ffffffffffffffffffffffffffec8831p-1,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 1417
-    0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    0x1.0000000000001p0
-  },
-  { // Entry 1418
-    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    -0x1.0000000000001p0
-  },
-  { // Entry 1419
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.0p0
-  },
-  { // Entry 1420
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    -0x1.0p0
-  },
-  { // Entry 1421
-    0x1.aed548f090ced79c79cbf790441f8197p-1,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 1422
-    -0x1.aed548f090ced79c79cbf790441f8197p-1,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 1423
-    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 1424
-    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    -0x1.921fb54442d18p-1
-  },
-  { // Entry 1425
-    0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 1426
-    -0x1.0000000000000fffffffffffffffffffp-1022,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 1427
-    0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.0p-1022
-  },
-  { // Entry 1428
-    -0x1.ffffffffffffffffffffffffffffffffp-1023,
-    -0x1.0p-1022
-  },
-  { // Entry 1429
-    0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 1430
-    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 1431
-    0x1.ffffffffffffbfffffffffffffffffffp-1023,
-    0x1.ffffffffffffcp-1023
-  },
-  { // Entry 1432
-    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
-    -0x1.ffffffffffffcp-1023
-  },
-  { // Entry 1433
-    0x1.ffffffffffffffffffffffffffffffffp-1074,
-    0x1.0p-1073
-  },
-  { // Entry 1434
-    -0x1.ffffffffffffffffffffffffffffffffp-1074,
-    -0x1.0p-1073
-  },
-  { // Entry 1435
-    0.0,
-    0x1.0p-1074
-  },
-  { // Entry 1436
-    -0.0,
-    -0x1.0p-1074
-  },
-  { // Entry 1437
-    0.0,
-    0.0
-  },
-  { // Entry 1438
-    -0.0,
-    -0.0
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_sin, sin_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_sin_intel_data)/sizeof(sin_intel_data_t); i++) {
-    EXPECT_DOUBLE_EQ(g_sin_intel_data[i].expected, sin(g_sin_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_sincos_test.cpp b/tests/math_sincos_test.cpp
deleted file mode 100644
index 0fab2c2..0000000
--- a/tests/math_sincos_test.cpp
+++ /dev/null
@@ -1,4788 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  double sin_expected;
-  double cos_expected;
-  double call_data;
-} sincos_intel_data_t;
-
-static sincos_intel_data_t g_sincos_intel_data[] = {
-  { // Entry 0
-    -0x1.ce9a94ea9c2ad95597b1193b2300d19ap-1,
-    -0x1.b6d3057776dc38335b16745f2d756ab6p-2,
-    -0x1.01c000003p1,
-  },
-  { // Entry 1
-    0x1.ce9a94ea9c2ad95597b1193b2300d19ap-1,
-    -0x1.b6d3057776dc38335b16745f2d756ab6p-2,
-    0x1.01c000003p1,
-  },
-  { // Entry 2
-    -0x1.ce2cad2f92157153b4a9e012e3461d0ap-1,
-    -0x1.b8a14c745bd4c832bae9785655c91b60p-2,
-    -0x1.01fffc080p1,
-  },
-  { // Entry 3
-    0x1.ce2cad2f92157153b4a9e012e3461d0ap-1,
-    -0x1.b8a14c745bd4c832bae9785655c91b60p-2,
-    0x1.01fffc080p1,
-  },
-  { // Entry 4
-    -0x1.1a7444726f5e9dc2ee069dc3e500ab4fp-2,
-    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
-    -0x1.1e2a1563e068ep-2,
-  },
-  { // Entry 5
-    0x1.1a7444726f5e9dc2ee069dc3e500ab4fp-2,
-    0x1.ec231802917bdffa627ab6a59abe3f7dp-1,
-    0x1.1e2a1563e068ep-2,
-  },
-  { // Entry 6
-    -0x1.efdab5e65c8fd550d4688b62791fe694p-1,
-    0x1.fe4123d266ca37faeee822138eb331d3p-3,
-    -0x1.83ef2196f92f0p87,
-  },
-  { // Entry 7
-    0x1.efdab5e65c8fd550d4688b62791fe694p-1,
-    0x1.fe4123d266ca37faeee822138eb331d3p-3,
-    0x1.83ef2196f92f0p87,
-  },
-  { // Entry 8
-    -0x1.eff5edb1ad416cb6ca3109f1c0dfc34ap-1,
-    0x1.fc9935a7481717fa8aeca7a9c5833084p-3,
-    -0x1.a486d79764fb8p86,
-  },
-  { // Entry 9
-    0x1.eff5edb1ad416cb6ca3109f1c0dfc34ap-1,
-    0x1.fc9935a7481717fa8aeca7a9c5833084p-3,
-    0x1.a486d79764fb8p86,
-  },
-  { // Entry 10
-    -0x1.b78f2c97c88028396ec94ba9ea58dd68p-2,
-    0x1.ce6dea6788fde425f68fe33b0ffcc244p-1,
-    -0x1.c65173556ccfbp-2,
-  },
-  { // Entry 11
-    0x1.b78f2c97c88028396ec94ba9ea58dd68p-2,
-    0x1.ce6dea6788fde425f68fe33b0ffcc244p-1,
-    0x1.c65173556ccfbp-2,
-  },
-  { // Entry 12
-    -0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
-    0x1.f32c8792006349b33b09fe57f80d9ed1p-1,
-    -0x1.cb6p-3,
-  },
-  { // Entry 13
-    0x1.c7885aef33a94ffc5ae06be9444efad5p-3,
-    0x1.f32c8792006349b33b09fe57f80d9ed1p-1,
-    0x1.cb6p-3,
-  },
-  { // Entry 14
-    -0x1.f74a97abb47bc823e92eb9d66f1d8b54p-3,
-    0x1.f04c859e062b9202aa2b9bf0486b5afdp-1,
-    -0x1.fc7fffffffffep-3,
-  },
-  { // Entry 15
-    0x1.f74a97abb47bc823e92eb9d66f1d8b54p-3,
-    0x1.f04c859e062b9202aa2b9bf0486b5afdp-1,
-    0x1.fc7fffffffffep-3,
-  },
-  { // Entry 16
-    0x1.0000000000002fffd555555555553d55p-32,
-    0x1.fffffffffffffffeffffffffffffa0p-1,
-    0x1.0000000000003p-32,
-  },
-  { // Entry 17
-    -0x1.0000000000002fffd555555555553d55p-32,
-    0x1.fffffffffffffffeffffffffffffa0p-1,
-    -0x1.0000000000003p-32,
-  },
-  { // Entry 18
-    0x1.d18f6ead199a3b95430d5516e93c8d7bp-1,
-    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
-    0x1.00000000010p1,
-  },
-  { // Entry 19
-    -0x1.d18f6ead199a3b95430d5516e93c8d7bp-1,
-    -0x1.aa2265753e6687fde76269ee92a784b0p-2,
-    -0x1.00000000010p1,
-  },
-  { // Entry 20
-    0x1.b64d59dd8a5249e01113f4cb37d13c40p-1,
-    -0x1.08a445ad4737e80060cf3a5ff94d3067p-1,
-    0x1.001p557,
-  },
-  { // Entry 21
-    -0x1.b64d59dd8a5249e01113f4cb37d13c40p-1,
-    -0x1.08a445ad4737e80060cf3a5ff94d3067p-1,
-    -0x1.001p557,
-  },
-  { // Entry 22
-    0x1.ce77f24fd4d9a790125ff5290a62b7f1p-1,
-    -0x1.b764f40c9716b834bb72589348cfa4b8p-2,
-    0x1.01d4313757482p1,
-  },
-  { // Entry 23
-    -0x1.ce77f24fd4d9a790125ff5290a62b7f1p-1,
-    -0x1.b764f40c9716b834bb72589348cfa4b8p-2,
-    -0x1.01d4313757482p1,
-  },
-  { // Entry 24
-    0x1.ce39b7df7f4acb81e37c532638f9bf49p-1,
-    -0x1.b86a908f05c0a839e19d4aa63156d32bp-2,
-    0x1.01f867d44bc82p1,
-  },
-  { // Entry 25
-    -0x1.ce39b7df7f4acb81e37c532638f9bf49p-1,
-    -0x1.b86a908f05c0a839e19d4aa63156d32bp-2,
-    -0x1.01f867d44bc82p1,
-  },
-  { // Entry 26
-    0x1.ce70046acb80de75e903468cea8ab427p-1,
-    -0x1.b78654766c76483ce90a0bc2ac957b59p-2,
-    0x1.09860e8ed1e90p3,
-  },
-  { // Entry 27
-    -0x1.ce70046acb80de75e903468cea8ab427p-1,
-    -0x1.b78654766c76483ce90a0bc2ac957b59p-2,
-    -0x1.09860e8ed1e90p3,
-  },
-  { // Entry 28
-    0x1.ce68564e251f16285d604e04657f30e6p-1,
-    -0x1.b7a6a56f5796683c58e01b5b7061c16cp-2,
-    0x1.09872cce51fbdp3,
-  },
-  { // Entry 29
-    -0x1.ce68564e251f16285d604e04657f30e6p-1,
-    -0x1.b7a6a56f5796683c58e01b5b7061c16cp-2,
-    -0x1.09872cce51fbdp3,
-  },
-  { // Entry 30
-    -0x1.ce8ab32f3b002065f2d99e57a1072705p-1,
-    -0x1.b715f769cf1e582e23a15e8b80a70486p-2,
-    0x1.113b13b13b224p2,
-  },
-  { // Entry 31
-    0x1.ce8ab32f3b002065f2d99e57a1072705p-1,
-    -0x1.b715f769cf1e582e23a15e8b80a70486p-2,
-    -0x1.113b13b13b224p2,
-  },
-  { // Entry 32
-    0x1.c2df57188d3099e1baf7f721d7318bd9p-1,
-    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
-    0x1.13cp0,
-  },
-  { // Entry 33
-    -0x1.c2df57188d3099e1baf7f721d7318bd9p-1,
-    0x1.e536ae395dfce001457970c8aaac3b1fp-2,
-    -0x1.13cp0,
-  },
-  { // Entry 34
-    0x1.b7dcd7c85c820838eecfa53e52078b2bp-2,
-    -0x1.ce5b7372046eaa467f49e1debe3662dfp-1,
-    0x1.1f628c5610717p3,
-  },
-  { // Entry 35
-    -0x1.b7dcd7c85c820838eecfa53e52078b2bp-2,
-    -0x1.ce5b7372046eaa467f49e1debe3662dfp-1,
-    -0x1.1f628c5610717p3,
-  },
-  { // Entry 36
-    0x1.ff3466b1ec8bed978f7c27018bc09678p-1,
-    0x1.c86caa04929857c2816d30693fceab36p-5,
-    0x1.1f699d708d497p16,
-  },
-  { // Entry 37
-    -0x1.ff3466b1ec8bed978f7c27018bc09678p-1,
-    0x1.c86caa04929857c2816d30693fceab36p-5,
-    -0x1.1f699d708d497p16,
-  },
-  { // Entry 38
-    0x1.b61d6aff754c2835697b5aa5339b635cp-2,
-    -0x1.cec59b2d230a83a86804730afdf1becfp-1,
-    0x1.1f72064620ef4p3,
-  },
-  { // Entry 39
-    -0x1.b61d6aff754c2835697b5aa5339b635cp-2,
-    -0x1.cec59b2d230a83a86804730afdf1becfp-1,
-    -0x1.1f72064620ef4p3,
-  },
-  { // Entry 40
-    0x1.cdf604838e499bd5d9d2712397b23c07p-1,
-    0x1.b98656b85bc2683216a947335ea689fbp-2,
-    0x1.1fffffdcefe40p0,
-  },
-  { // Entry 41
-    -0x1.cdf604838e499bd5d9d2712397b23c07p-1,
-    0x1.b98656b85bc2683216a947335ea689fbp-2,
-    -0x1.1fffffdcefe40p0,
-  },
-  { // Entry 42
-    0x1.ce913329696cd3fa471c7b00891075d4p-1,
-    0x1.b6fa92e5f576c834fc15d8998fccc728p-2,
-    0x1.20b478c4aa9edp0,
-  },
-  { // Entry 43
-    -0x1.ce913329696cd3fa471c7b00891075d4p-1,
-    0x1.b6fa92e5f576c834fc15d8998fccc728p-2,
-    -0x1.20b478c4aa9edp0,
-  },
-  { // Entry 44
-    0x1.ceabc025ed3d57323fca51626d2bf28cp-1,
-    0x1.b68a988604a7e83cd382fdf329d0d76ep-2,
-    0x1.20d37456e7453p0,
-  },
-  { // Entry 45
-    -0x1.ceabc025ed3d57323fca51626d2bf28cp-1,
-    0x1.b68a988604a7e83cd382fdf329d0d76ep-2,
-    -0x1.20d37456e7453p0,
-  },
-  { // Entry 46
-    0x1.ceb022b6b5ae07a267f0e7dc6a14a214p-1,
-    0x1.b67816b80ed0a82d11aee7aaa8008fedp-2,
-    0x1.20d8930cdf602p0,
-  },
-  { // Entry 47
-    -0x1.ceb022b6b5ae07a267f0e7dc6a14a214p-1,
-    0x1.b67816b80ed0a82d11aee7aaa8008fedp-2,
-    -0x1.20d8930cdf602p0,
-  },
-  { // Entry 48
-    -0x1.9e62aca53c660801b62604018a9d19ddp-4,
-    -0x1.fd5f830f860f333de490a42c2f045012p-1,
-    0x1.30d5f8e54b6d8p3,
-  },
-  { // Entry 49
-    0x1.9e62aca53c660801b62604018a9d19ddp-4,
-    -0x1.fd5f830f860f333de490a42c2f045012p-1,
-    -0x1.30d5f8e54b6d8p3,
-  },
-  { // Entry 50
-    0x1.3ed2aeefeafc97f0ee0fb3fa4fb46052p-3,
-    0x1.f9c201e4eb65fd5e5dbd97662505ff6fp-1,
-    0x1.402p-3,
-  },
-  { // Entry 51
-    -0x1.3ed2aeefeafc97f0ee0fb3fa4fb46052p-3,
-    0x1.f9c201e4eb65fd5e5dbd97662505ff6fp-1,
-    -0x1.402p-3,
-  },
-  { // Entry 52
-    -0x1.ff65d2ff4a8cc41cb8bb6df306e07be7p-1,
-    -0x1.8d3822ef260a57b385611f08577b75d9p-5,
-    0x1.4a40ec149a66fp16,
-  },
-  { // Entry 53
-    0x1.ff65d2ff4a8cc41cb8bb6df306e07be7p-1,
-    -0x1.8d3822ef260a57b385611f08577b75d9p-5,
-    -0x1.4a40ec149a66fp16,
-  },
-  { // Entry 54
-    0x1.4fffffffff9f88000000084f22ccccccp-20,
-    0x1.fffffffffe47000000003f4ebffffffcp-1,
-    0x1.5p-20,
-  },
-  { // Entry 55
-    -0x1.4fffffffff9f88000000084f22ccccccp-20,
-    0x1.fffffffffe47000000003f4ebffffffcp-1,
-    -0x1.5p-20,
-  },
-  { // Entry 56
-    0x1.79c599e1e91af809f9e69771796cd507p-1,
-    -0x1.5997065cb9653702d4c9d9b6bc58f768p-1,
-    0x1.5294a5294a528p4,
-  },
-  { // Entry 57
-    -0x1.79c599e1e91af809f9e69771796cd507p-1,
-    -0x1.5997065cb9653702d4c9d9b6bc58f768p-1,
-    -0x1.5294a5294a528p4,
-  },
-  { // Entry 58
-    -0x1.ff7996073bba6c6ede46f52d445623c9p-1,
-    0x1.72e7437910cc083fac4f6f62a2eb38afp-5,
-    0x1.57431aacf5c58p16,
-  },
-  { // Entry 59
-    0x1.ff7996073bba6c6ede46f52d445623c9p-1,
-    0x1.72e7437910cc083fac4f6f62a2eb38afp-5,
-    -0x1.57431aacf5c58p16,
-  },
-  { // Entry 60
-    0x1.f81c4f9a5181462ae735e21222d498c4p-1,
-    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
-    0x1.652p0,
-  },
-  { // Entry 61
-    -0x1.f81c4f9a5181462ae735e21222d498c4p-1,
-    0x1.6623d2eb6add1ffc398a3c20447f9d06p-3,
-    -0x1.652p0,
-  },
-  { // Entry 62
-    -0x1.c42a091026f45286d061085c5c9fddb7p-1,
-    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
-    0x1.6f7bdef7bdef4p3,
-  },
-  { // Entry 63
-    0x1.c42a091026f45286d061085c5c9fddb7p-1,
-    0x1.e0619960a11c6801e80ab0c9e25f89d0p-2,
-    -0x1.6f7bdef7bdef4p3,
-  },
-  { // Entry 64
-    -0x1.f9c4364ba198f7e32b672366c34b8b7dp-2,
-    0x1.bd309f3dfcd489128e5ecbc31680c4a5p-1,
-    0x1.711p2,
-  },
-  { // Entry 65
-    0x1.f9c4364ba198f7e32b672366c34b8b7dp-2,
-    0x1.bd309f3dfcd489128e5ecbc31680c4a5p-1,
-    -0x1.711p2,
-  },
-  { // Entry 66
-    -0x1.be6e5bea1a4d88331fd8e460cd677245p-2,
-    0x1.ccc7d99b57ab54f04ed918ec14a2507dp-1,
-    0x1.7540aa5882dc2p2,
-  },
-  { // Entry 67
-    0x1.be6e5bea1a4d88331fd8e460cd677245p-2,
-    0x1.ccc7d99b57ab54f04ed918ec14a2507dp-1,
-    -0x1.7540aa5882dc2p2,
-  },
-  { // Entry 68
-    0x1.c90c841d1494c0757e8ebb16725d8718p-3,
-    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
-    0x1.7550d28ffccc4p1,
-  },
-  { // Entry 69
-    -0x1.c90c841d1494c0757e8ebb16725d8718p-3,
-    -0x1.f3165a0b306b1ffcf8d11909fffba167p-1,
-    -0x1.7550d28ffccc4p1,
-  },
-  { // Entry 70
-    -0x1.b649d577e1b2a839d25d19807eb2c564p-2,
-    0x1.cebb175d36b934bc0995a0be35cde1eep-1,
-    0x1.75d11fa0d6242p2,
-  },
-  { // Entry 71
-    0x1.b649d577e1b2a839d25d19807eb2c564p-2,
-    0x1.cebb175d36b934bc0995a0be35cde1eep-1,
-    -0x1.75d11fa0d6242p2,
-  },
-  { // Entry 72
-    0x1.b78730d11d8408320d21ca6ad2be3368p-2,
-    -0x1.ce6fd00ed16501cb13b908477e102811p-1,
-    0x1.bc50444ee6286p9,
-  },
-  { // Entry 73
-    -0x1.b78730d11d8408320d21ca6ad2be3368p-2,
-    -0x1.ce6fd00ed16501cb13b908477e102811p-1,
-    -0x1.bc50444ee6286p9,
-  },
-  { // Entry 74
-    0x1.b6b0b0996e7e6835acdb36e55a08bf15p-2,
-    0x1.cea2b8cc552181d0b0aead27e94a9168p-1,
-    0x1.c55b2bf19ce54p-2,
-  },
-  { // Entry 75
-    -0x1.b6b0b0996e7e6835acdb36e55a08bf15p-2,
-    0x1.cea2b8cc552181d0b0aead27e94a9168p-1,
-    -0x1.c55b2bf19ce54p-2,
-  },
-  { // Entry 76
-    0x1.b6facf665891482ea8c61f5ca32f280dp-2,
-    0x1.ce9124cec4150559d947a526ad98f2f4p-1,
-    0x1.c5ad34f5f472ap-2,
-  },
-  { // Entry 77
-    -0x1.b6facf665891482ea8c61f5ca32f280dp-2,
-    0x1.ce9124cec4150559d947a526ad98f2f4p-1,
-    -0x1.c5ad34f5f472ap-2,
-  },
-  { // Entry 78
-    -0x1.f83a0983dd15d00301e2df21e3bee635p-2,
-    -0x1.bda0596df060004d579563ad8c67d151p-1,
-    0x1.d4067c60f471ep1,
-  },
-  { // Entry 79
-    0x1.f83a0983dd15d00301e2df21e3bee635p-2,
-    -0x1.bda0596df060004d579563ad8c67d151p-1,
-    -0x1.d4067c60f471ep1,
-  },
-  { // Entry 80
-    0x1.9cb6a9bbce64a3e97a7267fdec25c83bp-1,
-    0x1.2f011326420e5002172db245fd9063e2p-1,
-    0x1.dffffffffffffp-1,
-  },
-  { // Entry 81
-    -0x1.9cb6a9bbce64a3e97a7267fdec25c83bp-1,
-    0x1.2f011326420e5002172db245fd9063e2p-1,
-    -0x1.dffffffffffffp-1,
-  },
-  { // Entry 82
-    0x1.f5f0be28565c5ad763c103d981fc5c4ep-5,
-    0x1.ff09babb076e4803e57e68204570fd5bp-1,
-    0x1.f64147d8add84p-5,
-  },
-  { // Entry 83
-    -0x1.f5f0be28565c5ad763c103d981fc5c4ep-5,
-    0x1.ff09babb076e4803e57e68204570fd5bp-1,
-    -0x1.f64147d8add84p-5,
-  },
-  { // Entry 84
-    -0x1.d4da5f56888e200fda4ebac7db1cdbefp-1,
-    0x1.9b70cd3284e157fb84491d581cb86bd3p-2,
-    0x1.fe6183efa397cp83,
-  },
-  { // Entry 85
-    0x1.d4da5f56888e200fda4ebac7db1cdbefp-1,
-    0x1.9b70cd3284e157fb84491d581cb86bd3p-2,
-    -0x1.fe6183efa397cp83,
-  },
-  { // Entry 86
-    0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
-    0x1.f016474b75667424a050d79014fd2385p-1,
-    0x1.ffeffffffffffp-3,
-  },
-  { // Entry 87
-    -0x1.fa9f6ca0ec44e0010026f385c0ab8690p-3,
-    0x1.f016474b75667424a050d79014fd2385p-1,
-    -0x1.ffeffffffffffp-3,
-  },
-  { // Entry 88
-    -0x1.ff4868ddaba6ba32c6b714aef99ff2f7p-1,
-    -0x1.b16f0eb25ae467c2a185e516f1188b20p-5,
-    0x1.fff7ff800001fp15,
-  },
-  { // Entry 89
-    0x1.ff4868ddaba6ba32c6b714aef99ff2f7p-1,
-    -0x1.b16f0eb25ae467c2a185e516f1188b20p-5,
-    -0x1.fff7ff800001fp15,
-  },
-  { // Entry 90
-    -0x1.ff4f1e9c248912648701818d075b3953p-1,
-    -0x1.a971e3b64d08d7c3f37d299b43616eb4p-5,
-    0x1.fff7ffffffcp15,
-  },
-  { // Entry 91
-    0x1.ff4f1e9c248912648701818d075b3953p-1,
-    -0x1.a971e3b64d08d7c3f37d299b43616eb4p-5,
-    -0x1.fff7ffffffcp15,
-  },
-  { // Entry 92
-    0x1.d19616fc7ee4605345c25606cfc93235p-1,
-    -0x1.aa054c4909384811a063273112604c31p-2,
-    0x1.fff80p0,
-  },
-  { // Entry 93
-    -0x1.d19616fc7ee4605345c25606cfc93235p-1,
-    -0x1.aa054c4909384811a063273112604c31p-2,
-    -0x1.fff80p0,
-  },
-  { // Entry 94
-    0x1.ce3509751c4614837fa4b34963c6f5d8p-1,
-    0x1.b87e37101654482144d71d04972267d8p-2,
-    0x1.ffffbffe3ffffp14,
-  },
-  { // Entry 95
-    -0x1.ce3509751c4614837fa4b34963c6f5d8p-1,
-    0x1.b87e37101654482144d71d04972267d8p-2,
-    -0x1.ffffbffe3ffffp14,
-  },
-  { // Entry 96
-    0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
-    -0x1.aa2241160227896c68ef17839f17dce5p-2,
-    0x1.fffff60p0,
-  },
-  { // Entry 97
-    -0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
-    -0x1.aa2241160227896c68ef17839f17dce5p-2,
-    -0x1.fffff60p0,
-  },
-  { // Entry 98
-    -0x1.837b994a6d8ff7f2750755df5843e84dp-1,
-    -0x1.4eaa65b9e2ecc308fd82f65e09d06be4p-1,
-    0x1.fffffe3ffffffp1,
-  },
-  { // Entry 99
-    0x1.837b994a6d8ff7f2750755df5843e84dp-1,
-    -0x1.4eaa65b9e2ecc308fd82f65e09d06be4p-1,
-    -0x1.fffffe3ffffffp1,
-  },
-  { // Entry 100
-    0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
-    0x1.14a280fb507cf8999a1b291995646152p-1,
-    0x1.ffffffffffe7fp-1,
-  },
-  { // Entry 101
-    -0x1.aed548f090c1dffe6e04322dc8e8cbfap-1,
-    0x1.14a280fb507cf8999a1b291995646152p-1,
-    -0x1.ffffffffffe7fp-1,
-  },
-  { // Entry 102
-    -0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074,
-  },
-  { // Entry 103
-    0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074,
-  },
-  { // Entry 104
-    -0.0,
-    0x1.p0,
-    -0.0,
-  },
-  { // Entry 105
-    0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074,
-  },
-  { // Entry 106
-    -0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074,
-  },
-  { // Entry 107
-    -0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0000000000001p-1022,
-  },
-  { // Entry 108
-    0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0000000000001p-1022,
-  },
-  { // Entry 109
-    -0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1022,
-  },
-  { // Entry 110
-    0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1022,
-  },
-  { // Entry 111
-    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffep-1023,
-  },
-  { // Entry 112
-    0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffep-1023,
-  },
-  { // Entry 113
-    0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffep-1023,
-  },
-  { // Entry 114
-    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffep-1023,
-  },
-  { // Entry 115
-    0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1022,
-  },
-  { // Entry 116
-    -0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1022,
-  },
-  { // Entry 117
-    0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0000000000001p-1022,
-  },
-  { // Entry 118
-    -0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0000000000001p-1022,
-  },
-  { // Entry 119
-    0x1.9999996de8ca198c24ab9449beee16d5p-13,
-    0x1.ffffff5c28f5cb4c5272061281211120p-1,
-    0x1.999999999999ap-13,
-  },
-  { // Entry 120
-    -0x1.9999996de8ca198c24ab9449beee16d5p-13,
-    0x1.ffffff5c28f5cb4c5272061281211120p-1,
-    -0x1.999999999999ap-13,
-  },
-  { // Entry 121
-    0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
-    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
-    0x1.999999999999ap-12,
-  },
-  { // Entry 122
-    -0x1.999998ead65b96f78a4dbfd839c7ef2ep-12,
-    0x1.fffffd70a3d7960cd5695a06fdb80e74p-1,
-    -0x1.999999999999ap-12,
-  },
-  { // Entry 123
-    0x1.3333320c49babff151b6d04290e2c3a2p-11,
-    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
-    0x1.3333333333334p-11,
-  },
-  { // Entry 124
-    -0x1.3333320c49babff151b6d04290e2c3a2p-11,
-    0x1.fffffa3d70a69ad42b39d8696632f856p-1,
-    -0x1.3333333333334p-11,
-  },
-  { // Entry 125
-    0x1.999996de8ca2884da2f08f25bb024d08p-11,
-    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
-    0x1.999999999999ap-11,
-  },
-  { // Entry 126
-    -0x1.999996de8ca2884da2f08f25bb024d08p-11,
-    0x1.fffff5c28f64e5ec0da0a4f7f4388052p-1,
-    -0x1.999999999999ap-11,
-  },
-  { // Entry 127
-    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    0x1.0p-10,
-  },
-  { // Entry 128
-    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    -0x1.0p-10,
-  },
-  { // Entry 129
-    0x1.33332e978d552afc883bdb04751e3835p-10,
-    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
-    0x1.3333333333333p-10,
-  },
-  { // Entry 130
-    -0x1.33332e978d552afc883bdb04751e3835p-10,
-    0x1.ffffe8f5c2bb98c7c103d2ff79f15d6ap-1,
-    -0x1.3333333333333p-10,
-  },
-  { // Entry 131
-    0x1.66665f1529aff8a3809246670a436c3cp-10,
-    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
-    0x1.6666666666666p-10,
-  },
-  { // Entry 132
-    -0x1.66665f1529aff8a3809246670a436c3cp-10,
-    0x1.ffffe0a3d75c31b26451166d6f398abdp-1,
-    -0x1.6666666666666p-10,
-  },
-  { // Entry 133
-    0x1.99998ead65cdf82e194c133997f2fb68p-10,
-    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
-    0x1.9999999999999p-10,
-  },
-  { // Entry 134
-    -0x1.99998ead65cdf82e194c133997f2fb68p-10,
-    0x1.ffffd70a3dfc733b3331d8382b1e9df5p-1,
-    -0x1.9999999999999p-10,
-  },
-  { // Entry 135
-    0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
-    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
-    0x1.cccccccccccccp-10,
-  },
-  { // Entry 136
-    -0x1.ccccbd3f7d15d42affb9f02bf1dc257bp-10,
-    0x1.ffffcc28f6a2823f3765b50659ecb0e2p-1,
-    -0x1.cccccccccccccp-10,
-  },
-  { // Entry 137
-    0x1.0665ae9c7b44ed280216be2104f28f02p-7,
-    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
-    0x1.0666666666666p-7,
-  },
-  { // Entry 138
-    -0x1.0665ae9c7b44ed280216be2104f28f02p-7,
-    0x1.fffbcc2a6e86fef7d2af1580bd8e6699p-1,
-    -0x1.0666666666666p-7,
-  },
-  { // Entry 139
-    0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
-    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
-    0x1.cccccccccccccp-7,
-  },
-  { // Entry 140
-    -0x1.ccc8e97b59f618898c4ac3a0aeddf709p-7,
-    0x1.fff30a4b6fcc1405e18fbf7335d2f789p-1,
-    -0x1.cccccccccccccp-7,
-  },
-  { // Entry 141
-    0x1.4993e8a8ff79b132046efa7856a97538p-6,
-    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
-    0x1.4999999999999p-6,
-  },
-  { // Entry 142
-    -0x1.4993e8a8ff79b132046efa7856a97538p-6,
-    0x1.ffe57a780f38c0db37051fa8c8d60fbcp-1,
-    -0x1.4999999999999p-6,
-  },
-  { // Entry 143
-    0x1.acc044c56db0e19f82c9c3cff246e201p-6,
-    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
-    0x1.accccccccccccp-6,
-  },
-  { // Entry 144
-    -0x1.acc044c56db0e19f82c9c3cff246e201p-6,
-    0x1.ffd31cd0e1d62c05d2cded21add8bd33p-1,
-    -0x1.accccccccccccp-6,
-  },
-  { // Entry 145
-    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    0x1.080p-5,
-  },
-  { // Entry 146
-    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    -0x1.080p-5,
-  },
-  { // Entry 147
-    0x1.3985fe46f1c8714eaa1418561963e89bp-5,
-    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
-    0x1.399999999999ap-5,
-  },
-  { // Entry 148
-    -0x1.3985fe46f1c8714eaa1418561963e89bp-5,
-    0x1.ff9ff8c3299f54457bbaf8c12173b46bp-1,
-    -0x1.399999999999ap-5,
-  },
-  { // Entry 149
-    0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
-    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
-    0x1.6b33333333334p-5,
-  },
-  { // Entry 150
-    -0x1.6b14bde93ac5f7d24544d0ecf8be7aeep-5,
-    0x1.ff7f32d77c5b1c42f1660c9b6f2ef64fp-1,
-    -0x1.6b33333333334p-5,
-  },
-  { // Entry 151
-    0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
-    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
-    0x1.9cccccccccccep-5,
-  },
-  { // Entry 152
-    -0x1.9ca0153ed8396b02f8605219a5fe5917p-5,
-    0x1.ff59a00dbc40896bb5e4ac8ad293afb4p-1,
-    -0x1.9cccccccccccep-5,
-  },
-  { // Entry 153
-    0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
-    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
-    0x1.ce66666666666p-5,
-  },
-  { // Entry 154
-    -0x1.ce278d4027d34387f184d4ab2aaf545fp-5,
-    0x1.ff2f40c02e60f61d6dcfc39b6c2be087p-1,
-    -0x1.ce66666666666p-5,
-  },
-  { // Entry 155
-    0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
-    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
-    0x1.5e7fc4369bdadp-1,
-  },
-  { // Entry 156
-    -0x1.43c1e9c171a667a0b92519a04fa5a91cp-1,
-    0x1.8ca46c7d8975e57a1484f05c3738d83bp-1,
-    -0x1.5e7fc4369bdadp-1,
-  },
-  { // Entry 157
-    0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
-    0x1.0b5d3802fc7991140168f294eedd7904p-2,
-    0x1.4e7fc4369bdadp0,
-  },
-  { // Entry 158
-    -0x1.ee3d6bcea09ca18b1d1ce7ee04fd886fp-1,
-    0x1.0b5d3802fc7991140168f294eedd7904p-2,
-    -0x1.4e7fc4369bdadp0,
-  },
-  { // Entry 159
-    0x1.df8e22ea809d65c6a69b96aca60be432p-1,
-    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
-    0x1.edbfa651e9c84p0,
-  },
-  { // Entry 160
-    -0x1.df8e22ea809d65c6a69b96aca60be432p-1,
-    -0x1.66b96f53323af1d7e31a7162ab18a75bp-2,
-    -0x1.edbfa651e9c84p0,
-  },
-  { // Entry 161
-    0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
-    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
-    0x1.467fc4369bdadp1,
-  },
-  { // Entry 162
-    -0x1.1d3479eac7ae35e2fbea0ae696434692p-1,
-    -0x1.a93554888c32fa57f22a9529a320c1cbp-1,
-    -0x1.467fc4369bdadp1,
-  },
-  { // Entry 163
-    -0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
-    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
-    0x1.961fb54442d18p1,
-  },
-  { // Entry 164
-    0x1.ffeaaaeeee84b44ccefef832254d28c0p-6,
-    -0x1.ffc00155527d2b9fda2ae89396e09727p-1,
-    -0x1.961fb54442d18p1,
-  },
-  { // Entry 165
-    -0x1.3734d32d49bd0b942772a7567d514140p-1,
-    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
-    0x1.e5bfa651e9c83p1,
-  },
-  { // Entry 166
-    0x1.3734d32d49bd0b942772a7567d514140p-1,
-    -0x1.96907c5c7c25b88e34addff1fbef66e4p-1,
-    -0x1.e5bfa651e9c83p1,
-  },
-  { // Entry 167
-    -0x1.e9d25d19911e205b653521f42b9b864fp-1,
-    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
-    0x1.1aafcbafc85f7p2,
-  },
-  { // Entry 168
-    0x1.e9d25d19911e205b653521f42b9b864fp-1,
-    -0x1.2a1e5a50f948cd487c5309682b110a53p-2,
-    -0x1.1aafcbafc85f7p2,
-  },
-  { // Entry 169
-    -0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
-    0x1.4894f695dc56bce8b273e5524f181264p-2,
-    0x1.427fc4369bdadp2,
-  },
-  { // Entry 170
-    0x1.e4ecdc5a4e465899928eb9fc95829d48p-1,
-    0x1.4894f695dc56bce8b273e5524f181264p-2,
-    -0x1.427fc4369bdadp2,
-  },
-  { // Entry 171
-    -0x1.2a59f1034426197fa6eee22762967f25p-1,
-    0x1.a016ea3a692ce0c321b77f168de39122p-1,
-    0x1.6a4fbcbd6f562p2,
-  },
-  { // Entry 172
-    0x1.2a59f1034426197fa6eee22762967f25p-1,
-    0x1.a016ea3a692ce0c321b77f168de39122p-1,
-    -0x1.6a4fbcbd6f562p2,
-  },
-  { // Entry 173
-    -0x1.26312443bd35f19312eac0a1a6b5659ep-1,
-    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
-    0x1.6af2eff0a2896p2,
-  },
-  { // Entry 174
-    0x1.26312443bd35f19312eac0a1a6b5659ep-1,
-    0x1.a30a69f5537ebc22f0870c2bd26ef284p-1,
-    -0x1.6af2eff0a2896p2,
-  },
-  { // Entry 175
-    -0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
-    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
-    0x1.43c62a9d02414p2,
-  },
-  { // Entry 176
-    0x1.e18e660a5e2fb316ecbb9ed70122eff5p-1,
-    0x1.5bd62e8b04ad5915e66242349b756e11p-2,
-    -0x1.43c62a9d02414p2,
-  },
-  { // Entry 177
-    -0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
-    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
-    0x1.1c99654961f92p2,
-  },
-  { // Entry 178
-    0x1.ee0e83a0198b6e2ef7c48e6625291a0ap-1,
-    -0x1.0cb71f671e63410966e78d2009c0616fp-2,
-    -0x1.1c99654961f92p2,
-  },
-  { // Entry 179
-    -0x1.4727747338e4653616eadbd7ec3d02d3p-1,
-    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
-    0x1.ead93feb8361fp1,
-  },
-  { // Entry 180
-    0x1.4727747338e4653616eadbd7ec3d02d3p-1,
-    -0x1.89d86aa8521c11b74f8b1954c08f9b36p-1,
-    -0x1.ead93feb8361fp1,
-  },
-  { // Entry 181
-    -0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
-    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
-    0x1.9c7fb54442d1ap1,
-  },
-  { // Entry 182
-    0x1.4ba2f75dda5fe434320905a7184ff1afp-4,
-    -0x1.fe51ac554a16ad8194f181085f8a17f2p-1,
-    -0x1.9c7fb54442d1ap1,
-  },
-  { // Entry 183
-    0x1.034c4d633b4ef0a9089b43892a462a26p-1,
-    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
-    0x1.4e262a9d02415p1,
-  },
-  { // Entry 184
-    -0x1.034c4d633b4ef0a9089b43892a462a26p-1,
-    -0x1.b97c04d08bc5d765b341a22b2c720b6fp-1,
-    -0x1.4e262a9d02415p1,
-  },
-  { // Entry 185
-    0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
-    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
-    0x1.ff993feb83620p0,
-  },
-  { // Entry 186
-    -0x1.d1e4cde2f3944f4c134c05cc4e5339a3p-1,
-    -0x1.a8ac8a3e58f6ca952390299d2e8b187fp-2,
-    -0x1.ff993feb83620p0,
-  },
-  { // Entry 187
-    0x1.f750235c949926c48c90e41a91474c06p-1,
-    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
-    0x1.62e62a9d02416p0,
-  },
-  { // Entry 188
-    -0x1.f750235c949926c48c90e41a91474c06p-1,
-    0x1.77a8b9b3d254a9e39d02b3eb3e2390e7p-3,
-    -0x1.62e62a9d02416p0,
-  },
-  { // Entry 189
-    0x1.65f7d571279b0b8005552fd47a2e77aep-1,
-    0x1.6e1061205dd79051c112d30a05097c61p-1,
-    0x1.8c662a9d02419p-1,
-  },
-  { // Entry 190
-    -0x1.65f7d571279b0b8005552fd47a2e77aep-1,
-    0x1.6e1061205dd79051c112d30a05097c61p-1,
-    -0x1.8c662a9d02419p-1,
-  },
-  { // Entry 191
-    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    -0x1.a8aa1d11c44ffp0,
-  },
-  { // Entry 192
-    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    0x1.a8aa1d11c44ffp0,
-  },
-  { // Entry 193
-    -0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
-    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
-    -0x1.95ec8b9e03d54p0,
-  },
-  { // Entry 194
-    0x1.fff18f24f3e4b87bf8c3762cb44f46d6p-1,
-    -0x1.e6669a270c36d4879b428ddba96cd87bp-7,
-    0x1.95ec8b9e03d54p0,
-  },
-  { // Entry 195
-    -0x1.ff20d961624e7063a78203b811f579cap-1,
-    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
-    -0x1.832efa2a435a9p0,
-  },
-  { // Entry 196
-    0x1.ff20d961624e7063a78203b811f579cap-1,
-    0x1.ddd1ec25e209f1bbf7e17ef6c8450cd7p-5,
-    0x1.832efa2a435a9p0,
-  },
-  { // Entry 197
-    -0x1.fb933c40107fd775185ac14918c8fbafp-1,
-    0x1.0cab9115640d993082a7343bb5affea2p-3,
-    -0x1.707168b682dfep0,
-  },
-  { // Entry 198
-    0x1.fb933c40107fd775185ac14918c8fbafp-1,
-    0x1.0cab9115640d993082a7343bb5affea2p-3,
-    0x1.707168b682dfep0,
-  },
-  { // Entry 199
-    -0x1.f54d971881ad685b782ef88e6350f7cdp-1,
-    0x1.a0723a95492edee5dc98394e45f96d88p-3,
-    -0x1.5db3d742c2653p0,
-  },
-  { // Entry 200
-    0x1.f54d971881ad685b782ef88e6350f7cdp-1,
-    0x1.a0723a95492edee5dc98394e45f96d88p-3,
-    0x1.5db3d742c2653p0,
-  },
-  { // Entry 201
-    -0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
-    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
-    -0x1.4af645cf01ea8p0,
-  },
-  { // Entry 202
-    0x1.ec5883b7b6cf4d859ab04e15d53698c9p-1,
-    0x1.18fee96a1a585928a94cda7e3d916fe1p-2,
-    0x1.4af645cf01ea8p0,
-  },
-  { // Entry 203
-    -0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
-    0x1.6043621b13be2ff07085f8278598e566p-2,
-    -0x1.3838b45b416fdp0,
-  },
-  { // Entry 204
-    0x1.e0c04a94e17309c806c1c78bddc1d607p-1,
-    0x1.6043621b13be2ff07085f8278598e566p-2,
-    0x1.3838b45b416fdp0,
-  },
-  { // Entry 205
-    -0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
-    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
-    -0x1.257b22e780f52p0,
-  },
-  { // Entry 206
-    0x1.d294d1f96c7ebdb9869dd97cf574ddb9p-1,
-    0x1.a5a4ccf40d9d9ba97faa4e23ecce9e3ap-2,
-    0x1.257b22e780f52p0,
-  },
-  { // Entry 207
-    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    -0x1.12bd9173c07abp0,
-  },
-  { // Entry 208
-    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    0x1.12bd9173c07abp0,
-  },
-  { // Entry 209
-    -0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
-    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
-    -0x1.ea5c3ed5b3850p-1,
-  },
-  { // Entry 210
-    0x1.a2c289d9d055ac377f67d7a54a0b3005p-1,
-    0x1.26976a6c4e0f86633327f1ceecb508aep-1,
-    0x1.ea5c3ed5b3850p-1,
-  },
-  { // Entry 211
-    -0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
-    0x1.3805a1882009f2843da808e959f17861p-1,
-    -0x1.d4b87dab670a0p-1,
-  },
-  { // Entry 212
-    0x1.95f05257dbcb5f4b12636c5878ea405ap-1,
-    0x1.3805a1882009f2843da808e959f17861p-1,
-    0x1.d4b87dab670a0p-1,
-  },
-  { // Entry 213
-    -0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
-    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
-    -0x1.bf14bc811a8f0p-1,
-  },
-  { // Entry 214
-    0x1.88647f26a6e0f6b2715a6c3797ec11f5p-1,
-    0x1.48e52e0a65bcb3cd46455c4d2338bdf2p-1,
-    0x1.bf14bc811a8f0p-1,
-  },
-  { // Entry 215
-    -0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
-    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
-    -0x1.a970fb56ce140p-1,
-  },
-  { // Entry 216
-    0x1.7a2541dfd4e752de38f04aba21fc9d9fp-1,
-    0x1.592e58ea0a9eec0b357eb4e9a83b0ea5p-1,
-    0x1.a970fb56ce140p-1,
-  },
-  { // Entry 217
-    -0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
-    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
-    -0x1.93cd3a2c81990p-1,
-  },
-  { // Entry 218
-    0x1.6b391e25bc26cbbcf7a0184070af9c39p-1,
-    0x1.68d9afe052d1f0e9324ae876961bcdb1p-1,
-    0x1.93cd3a2c81990p-1,
-  },
-  { // Entry 219
-    -0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
-    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
-    -0x1.7e297902351e0p-1,
-  },
-  { // Entry 220
-    0x1.5ba6e6a8e706535b98fc99dfaef824f1p-1,
-    0x1.77e008d0775e744eb16a2c4ec7184c43p-1,
-    0x1.7e297902351e0p-1,
-  },
-  { // Entry 221
-    -0x1.4b75ba096fa549eb93595d8194ab917fp-1,
-    0x1.863a850e438fe029302aba0f5f127616p-1,
-    -0x1.6885b7d7e8a30p-1,
-  },
-  { // Entry 222
-    0x1.4b75ba096fa549eb93595d8194ab917fp-1,
-    0x1.863a850e438fe029302aba0f5f127616p-1,
-    0x1.6885b7d7e8a30p-1,
-  },
-  { // Entry 223
-    -0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
-    0x1.93e2948233fce814439ed51fd2548920p-1,
-    -0x1.52e1f6ad9c280p-1,
-  },
-  { // Entry 224
-    0x1.3aacff95a3122b15f372bfd2fdf9a75fp-1,
-    0x1.93e2948233fce814439ed51fd2548920p-1,
-    0x1.52e1f6ad9c280p-1,
-  },
-  { // Entry 225
-    -0x1.295463e769284a5aed17a443392f38f3p-1,
-    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
-    -0x1.3d3e35834fad0p-1,
-  },
-  { // Entry 226
-    0x1.295463e769284a5aed17a443392f38f3p-1,
-    0x1.a0d1f8a9a791d4b5694ca68a42fe6c9bp-1,
-    0x1.3d3e35834fad0p-1,
-  },
-  { // Entry 227
-    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    -0x1.0a0b02501c799p-1,
-  },
-  { // Entry 228
-    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    0x1.0a0b02501c799p-1,
-  },
-  { // Entry 229
-    -0x1.c853c78462de46b5743315612f8b5a7cp-2,
-    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
-    -0x1.d8f7208e6b82cp-2,
-  },
-  { // Entry 230
-    0x1.c853c78462de46b5743315612f8b5a7cp-2,
-    0x1.ca59c6fa3d9ce238a227393b6b075bc5p-1,
-    0x1.d8f7208e6b82cp-2,
-  },
-  { // Entry 231
-    -0x1.92aba90aaf27249de49c78fc643c8b72p-2,
-    0x1.d6c0b125791cffce83e32564712b78c6p-1,
-    -0x1.9dd83c7c9e126p-2,
-  },
-  { // Entry 232
-    0x1.92aba90aaf27249de49c78fc643c8b72p-2,
-    0x1.d6c0b125791cffce83e32564712b78c6p-1,
-    0x1.9dd83c7c9e126p-2,
-  },
-  { // Entry 233
-    -0x1.5bac064658f39460c83113c0a0097a0cp-2,
-    0x1.e1960261829858391645bbe12019e58ap-1,
-    -0x1.62b9586ad0a20p-2,
-  },
-  { // Entry 234
-    0x1.5bac064658f39460c83113c0a0097a0cp-2,
-    0x1.e1960261829858391645bbe12019e58ap-1,
-    0x1.62b9586ad0a20p-2,
-  },
-  { // Entry 235
-    -0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
-    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
-    -0x1.279a74590331ap-2,
-  },
-  { // Entry 236
-    0x1.2383ca8078e58477cd5fb1d9de031dcep-2,
-    0x1.ead07cc6356964e27a1036d2f8b158f7p-1,
-    0x1.279a74590331ap-2,
-  },
-  { // Entry 237
-    -0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
-    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
-    -0x1.d8f7208e6b829p-3,
-  },
-  { // Entry 238
-    0x1.d4c5bc11d2371af2fe25ef5ede2766a3p-3,
-    0x1.f26840e7b2188f7a0cc661a0ede3728bp-1,
-    0x1.d8f7208e6b829p-3,
-  },
-  { // Entry 239
-    -0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
-    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
-    -0x1.62b9586ad0a1ep-3,
-  },
-  { // Entry 240
-    0x1.60f3faaf43023d3c7863ae06d4d59774p-3,
-    0x1.f856d48db797dec0b79e1353409dc3f2p-1,
-    0x1.62b9586ad0a1ep-3,
-  },
-  { // Entry 241
-    -0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
-    0x1.fc97283a424797215f8a8d1967736c9bp-1,
-    -0x1.d8f7208e6b826p-4,
-  },
-  { // Entry 242
-    0x1.d7ea3de45a9d6563ac005c0c5bad8c50p-4,
-    0x1.fc97283a424797215f8a8d1967736c9bp-1,
-    0x1.d8f7208e6b826p-4,
-  },
-  { // Entry 243
-    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    -0x1.d8f7208e6b82dp-5,
-  },
-  { // Entry 244
-    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    0x1.d8f7208e6b82dp-5,
-  },
-  { // Entry 245
-    0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    0x1.d8f7208e6b82dp-5,
-  },
-  { // Entry 246
-    -0x1.d8b3df489987a6fe0eead008e720aa22p-5,
-    0x1.ff259b7ab9f4f9a8cb9f1c333272e409p-1,
-    -0x1.d8f7208e6b82dp-5,
-  },
-  { // Entry 247
-    0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
-    0x1.fc97283a424795847294654a1d8a08edp-1,
-    0x1.d8f7208e6b82dp-4,
-  },
-  { // Entry 248
-    -0x1.d7ea3de45a9dd4a4bccd1a8c048faf4cp-4,
-    0x1.fc97283a424795847294654a1d8a08edp-1,
-    -0x1.d8f7208e6b82dp-4,
-  },
-  { // Entry 249
-    0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
-    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
-    0x1.62b9586ad0a22p-3,
-  },
-  { // Entry 250
-    -0x1.60f3faaf43027c4752f564f9d0818fe8p-3,
-    0x1.f856d48db797dbfecfa8b4cd3be44027p-1,
-    -0x1.62b9586ad0a22p-3,
-  },
-  { // Entry 251
-    0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
-    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
-    0x1.d8f7208e6b82dp-3,
-  },
-  { // Entry 252
-    -0x1.d4c5bc11d23759400642e5a1efdc0f85p-3,
-    0x1.f26840e7b2188bd0814e3dfc7f6f3f87p-1,
-    -0x1.d8f7208e6b82dp-3,
-  },
-  { // Entry 253
-    0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
-    0x1.ead07cc6356960546ae634ef62621fb2p-1,
-    0x1.279a74590331cp-2,
-  },
-  { // Entry 254
-    -0x1.2383ca8078e5a324d52c1530742cd4f5p-2,
-    0x1.ead07cc6356960546ae634ef62621fb2p-1,
-    -0x1.279a74590331cp-2,
-  },
-  { // Entry 255
-    0x1.5bac064658f3b27a28572bea256195efp-2,
-    0x1.e1960261829852ca662ca27d518c2fa9p-1,
-    0x1.62b9586ad0a22p-2,
-  },
-  { // Entry 256
-    -0x1.5bac064658f3b27a28572bea256195efp-2,
-    0x1.e1960261829852ca662ca27d518c2fa9p-1,
-    -0x1.62b9586ad0a22p-2,
-  },
-  { // Entry 257
-    0x1.92aba90aaf274209efaed08e34071e3bp-2,
-    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
-    0x1.9dd83c7c9e128p-2,
-  },
-  { // Entry 258
-    -0x1.92aba90aaf274209efaed08e34071e3bp-2,
-    0x1.d6c0b125791cf983d53efaa7d45e291ep-1,
-    -0x1.9dd83c7c9e128p-2,
-  },
-  { // Entry 259
-    0x1.c853c78462de635b10a2b93afd75da26p-2,
-    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
-    0x1.d8f7208e6b82ep-2,
-  },
-  { // Entry 260
-    -0x1.c853c78462de635b10a2b93afd75da26p-2,
-    0x1.ca59c6fa3d9cdb17530927aff1b33abbp-1,
-    -0x1.d8f7208e6b82ep-2,
-  },
-  { // Entry 261
-    0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    0x1.0a0b02501c799p-1,
-  },
-  { // Entry 262
-    -0x1.fc769b77e588495a6f642ca24e4ed3fcp-2,
-    0x1.bc6bd861e13de309428e00f7bef6c3ecp-1,
-    -0x1.0a0b02501c799p-1,
-  },
-  { // Entry 263
-    0x1.295463e769281640ae026f50fc45e301p-1,
-    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
-    0x1.3d3e35834faccp-1,
-  },
-  { // Entry 264
-    -0x1.295463e769281640ae026f50fc45e301p-1,
-    0x1.a0d1f8a9a791f9dff5c993af4908264dp-1,
-    -0x1.3d3e35834faccp-1,
-  },
-  { // Entry 265
-    0x1.3aacff95a311f899a0e279535e81c4ecp-1,
-    0x1.93e2948233fd0f69e3918982148f8265p-1,
-    0x1.52e1f6ad9c27cp-1,
-  },
-  { // Entry 266
-    -0x1.3aacff95a311f899a0e279535e81c4ecp-1,
-    0x1.93e2948233fd0f69e3918982148f8265p-1,
-    -0x1.52e1f6ad9c27cp-1,
-  },
-  { // Entry 267
-    0x1.4b75ba096fa5192442b7950f960f8006p-1,
-    0x1.863a850e43900997e76be80405437377p-1,
-    0x1.6885b7d7e8a2cp-1,
-  },
-  { // Entry 268
-    -0x1.4b75ba096fa5192442b7950f960f8006p-1,
-    0x1.863a850e43900997e76be80405437377p-1,
-    -0x1.6885b7d7e8a2cp-1,
-  },
-  { // Entry 269
-    0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
-    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
-    0x1.7e297902351dcp-1,
-  },
-  { // Entry 270
-    -0x1.5ba6e6a8e706245f97e28af3ddb700f6p-1,
-    0x1.77e008d0775e9fc38e3f492f8e93ff51p-1,
-    -0x1.7e297902351dcp-1,
-  },
-  { // Entry 271
-    0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
-    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
-    0x1.93cd3a2c8198cp-1,
-  },
-  { // Entry 272
-    -0x1.6b391e25bc269ea1c1a40de62fbc03b4p-1,
-    0x1.68d9afe052d21e50560f9ffb6cc1b945p-1,
-    -0x1.93cd3a2c8198cp-1,
-  },
-  { // Entry 273
-    0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
-    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
-    0x1.a970fb56ce13cp-1,
-  },
-  { // Entry 274
-    -0x1.7a2541dfd4e727b86dd309664186ec6bp-1,
-    0x1.592e58ea0a9f1b4fddbaaf868fe47911p-1,
-    -0x1.a970fb56ce13cp-1,
-  },
-  { // Entry 275
-    0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
-    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
-    0x1.bf14bc811a8ecp-1,
-  },
-  { // Entry 276
-    -0x1.88647f26a6e0cd95cb991f7ffe61a02ep-1,
-    0x1.48e52e0a65bce4d9d62a31293f7d41c1p-1,
-    -0x1.bf14bc811a8ecp-1,
-  },
-  { // Entry 277
-    0x1.95f05257dbcb384a5e326857376dd801p-1,
-    0x1.3805a188200a254247f30462c36acf6ap-1,
-    0x1.d4b87dab6709cp-1,
-  },
-  { // Entry 278
-    -0x1.95f05257dbcb384a5e326857376dd801p-1,
-    0x1.3805a188200a254247f30462c36acf6ap-1,
-    -0x1.d4b87dab6709cp-1,
-  },
-  { // Entry 279
-    0x1.a2c289d9d0558764921a4de355f9448cp-1,
-    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
-    0x1.ea5c3ed5b384cp-1,
-  },
-  { // Entry 280
-    -0x1.a2c289d9d0558764921a4de355f9448cp-1,
-    0x1.26976a6c4e0fbabb84632bd99feec9c6p-1,
-    -0x1.ea5c3ed5b384cp-1,
-  },
-  { // Entry 281
-    0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    0x1.12bd9173c07abp0,
-  },
-  { // Entry 282
-    -0x1.c1e9883373d7ecc48c92dc8875505f7ep-1,
-    0x1.e8c405f36f85b7f5d6a38dfd4a692341p-2,
-    -0x1.12bd9173c07abp0,
-  },
-  { // Entry 283
-    0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
-    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
-    0x1.257b22e780f56p0,
-  },
-  { // Entry 284
-    -0x1.d294d1f96c7ef26e203c5b309a55671fp-1,
-    0x1.a5a4ccf40d9cb25f16ad97e480c4b483p-2,
-    -0x1.257b22e780f56p0,
-  },
-  { // Entry 285
-    0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
-    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
-    0x1.3838b45b41701p0,
-  },
-  { // Entry 286
-    -0x1.e0c04a94e17335d073052a0394b9e1c3p-1,
-    0x1.6043621b13bd3f904b3b876df5b2c6f4p-2,
-    -0x1.3838b45b41701p0,
-  },
-  { // Entry 287
-    0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
-    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
-    0x1.4af645cf01eacp0,
-  },
-  { // Entry 288
-    -0x1.ec5883b7b6cf70a577dd9160d0f8e9d5p-1,
-    0x1.18fee96a1a5762fc6770ff168e06ab3ep-2,
-    -0x1.4af645cf01eacp0,
-  },
-  { // Entry 289
-    0x1.f54d971881ad82629bd84d214194e8ddp-1,
-    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
-    0x1.5db3d742c2657p0,
-  },
-  { // Entry 290
-    -0x1.f54d971881ad82629bd84d214194e8ddp-1,
-    0x1.a0723a95492ce998457fb7a0d09a6385p-3,
-    -0x1.5db3d742c2657p0,
-  },
-  { // Entry 291
-    0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
-    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
-    0x1.707168b682e02p0,
-  },
-  { // Entry 292
-    -0x1.fb933c40107fe83fd16c1789e27f69f7p-1,
-    0x1.0cab9115640b9d9d466723bbd5d589bep-3,
-    -0x1.707168b682e02p0,
-  },
-  { // Entry 293
-    0x1.ff20d961624e77daef329b4029c362dep-1,
-    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
-    0x1.832efa2a435adp0,
-  },
-  { // Entry 294
-    -0x1.ff20d961624e77daef329b4029c362dep-1,
-    0x1.ddd1ec25e201f538925bf5bcf7c7df6ep-5,
-    -0x1.832efa2a435adp0,
-  },
-  { // Entry 295
-    0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
-    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
-    0x1.95ec8b9e03d58p0,
-  },
-  { // Entry 296
-    -0x1.fff18f24f3e4b69592294f206d7b32c2p-1,
-    -0x1.e6669a270c56d3a08d91cc2721f92fe1p-7,
-    -0x1.95ec8b9e03d58p0,
-  },
-  { // Entry 297
-    0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    0x1.a8aa1d11c44ffp0,
-  },
-  { // Entry 298
-    -0x1.fe043f57369d6a52fa33f0119ec4da19p-1,
-    -0x1.682f3cc3c7a08da2ce02a41cdc7bed86p-4,
-    -0x1.a8aa1d11c44ffp0,
-  },
-  { // Entry 299
-    0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
-    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
-    0x1.04aff6d330942p0,
-  },
-  { // Entry 300
-    -0x1.b3d3695acc4136b2d44714f9b38419b4p-1,
-    0x1.0cb3469a29ea66d4031be769702aad5cp-1,
-    -0x1.04aff6d330942p0,
-  },
-  { // Entry 301
-    0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
-    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
-    0x1.04b09e98dcdb4p0,
-  },
-  { // Entry 302
-    -0x1.b3d41972dc8063994f63413d5e4d8e4bp-1,
-    0x1.0cb228fa7f8117c82e61cf5393341c64p-1,
-    -0x1.04b09e98dcdb4p0,
-  },
-  { // Entry 303
-    0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
-    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
-    0x1.04b1465e89226p0,
-  },
-  { // Entry 304
-    -0x1.b3d4c98a318fb66f821d7286ae7dce7bp-1,
-    0x1.0cb10b5a61b05a73e78a3e4447baf514p-1,
-    -0x1.04b1465e89226p0,
-  },
-  { // Entry 305
-    0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
-    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
-    0x1.04b1ee2435698p0,
-  },
-  { // Entry 306
-    -0x1.b3d579a0cb6ee393ff75b58ffe16d13fp-1,
-    0x1.0cafedb9d078a984086928aa40d2e4a5p-1,
-    -0x1.04b1ee2435698p0,
-  },
-  { // Entry 307
-    0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
-    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
-    0x1.04b295e9e1b0ap0,
-  },
-  { // Entry 308
-    -0x1.b3d629b6aa1d9f65aad1a2fc932c8bcbp-1,
-    0x1.0caed018cbda7fa59c631cd55b31aa8dp-1,
-    -0x1.04b295e9e1b0ap0,
-  },
-  { // Entry 309
-    0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
-    0x1.0cadb27753d65785e06d0e464006149ep-1,
-    0x1.04b33daf8df7cp0,
-  },
-  { // Entry 310
-    -0x1.b3d6d9cbcd9b9e43b7fc7fd428a44dd8p-1,
-    0x1.0cadb27753d65785e06d0e464006149ep-1,
-    -0x1.04b33daf8df7cp0,
-  },
-  { // Entry 311
-    0x1.b3d789e035e8948dab275dfe546c5b08p-1,
-    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
-    0x1.04b3e5753a3eep0,
-  },
-  { // Entry 312
-    -0x1.b3d789e035e8948dab275dfe546c5b08p-1,
-    0x1.0cac94d5686cabd2430c20fdf2855b47p-1,
-    -0x1.04b3e5753a3eep0,
-  },
-  { // Entry 313
-    0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
-    0x1.0cab7733099df738645574cd482ef4b2p-1,
-    0x1.04b48d3ae6860p0,
-  },
-  { // Entry 314
-    -0x1.b3d839f3e30436a358e93cbdcb2bb367p-1,
-    0x1.0cab7733099df738645574cd482ef4b2p-1,
-    -0x1.04b48d3ae6860p0,
-  },
-  { // Entry 315
-    0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
-    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
-    0x1.04b5350092ccfp0,
-  },
-  { // Entry 316
-    -0x1.b3d8ea06d4ee0684f5741ec777ed88e0p-1,
-    0x1.0caa5990376b061ec1cf3890f1b8e1e3p-1,
-    -0x1.04b5350092ccfp0,
-  },
-  { // Entry 317
-    -0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074,
-  },
-  { // Entry 318
-    0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074,
-  },
-  { // Entry 319
-    -0.0,
-    0x1.p0,
-    -0.0,
-  },
-  { // Entry 320
-    0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074,
-  },
-  { // Entry 321
-    -0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074,
-  },
-  { // Entry 322
-    0x1.1773d561fd5065d0e9607a728a39eed2p-1,
-    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
-    0x1.279a74590331bp-1,
-  },
-  { // Entry 323
-    -0x1.1773d561fd5065d0e9607a728a39eed2p-1,
-    0x1.ad02c771c35ed5f01089a00c6a27e0cfp-1,
-    -0x1.279a74590331bp-1,
-  },
-  { // Entry 324
-    0x1.1773d561fd507338ff9c088d80c680dbp-1,
-    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
-    0x1.279a74590331cp-1,
-  },
-  { // Entry 325
-    -0x1.1773d561fd507338ff9c088d80c680dbp-1,
-    0x1.ad02c771c35ecd3471de9021e6c3b92bp-1,
-    -0x1.279a74590331cp-1,
-  },
-  { // Entry 326
-    0x1.1773d561fd5080a115d796a8770d35efp-1,
-    0x1.ad02c771c35ec478d333803762f450d5p-1,
-    0x1.279a74590331dp-1,
-  },
-  { // Entry 327
-    -0x1.1773d561fd5080a115d796a8770d35efp-1,
-    0x1.ad02c771c35ec478d333803762f450d5p-1,
-    -0x1.279a74590331dp-1,
-  },
-  { // Entry 328
-    0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
-    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
-    0x1.bb67ae8584ca9p0,
-  },
-  { // Entry 329
-    -0x1.f95b8e7107418c11c94d4a54a9da9b7ap-1,
-    -0x1.48d1ddd2b2b3f8c21b9421e65b380735p-3,
-    -0x1.bb67ae8584ca9p0,
-  },
-  { // Entry 330
-    0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
-    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
-    0x1.bb67ae8584caap0,
-  },
-  { // Entry 331
-    -0x1.f95b8e71074186ee81d5ff89d8fae545p-1,
-    -0x1.48d1ddd2b2b47718ff3063b6bd981099p-3,
-    -0x1.bb67ae8584caap0,
-  },
-  { // Entry 332
-    0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
-    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
-    0x1.bb67ae8584cabp0,
-  },
-  { // Entry 333
-    -0x1.f95b8e71074181cb3a5eb4bf0621d381p-1,
-    -0x1.48d1ddd2b2b4f56fe2cca5871eaf4820p-3,
-    -0x1.bb67ae8584cabp0,
-  },
-  { // Entry 334
-    0x1.b1d8305321615ac938cff02be9f25085p-2,
-    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
-    0x1.bffffffffffffp-2,
-  },
-  { // Entry 335
-    -0x1.b1d8305321615ac938cff02be9f25085p-2,
-    0x1.cfc6cfa52ad9f9911db4ca0d45fdb0b3p-1,
-    -0x1.bffffffffffffp-2,
-  },
-  { // Entry 336
-    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    0x1.cp-2,
-  },
-  { // Entry 337
-    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    -0x1.cp-2,
-  },
-  { // Entry 338
-    0x1.b1d83053216177c5a5ca42d98955275ap-2,
-    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
-    0x1.c000000000001p-2,
-  },
-  { // Entry 339
-    -0x1.b1d83053216177c5a5ca42d98955275ap-2,
-    0x1.cfc6cfa52ad9f2c9bcf37d87c05892f5p-1,
-    -0x1.c000000000001p-2,
-  },
-  { // Entry 340
-    0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
-    0x1.8bb105a5dc90104051d08cb965631807p-1,
-    0x1.5ffffffffffffp-1,
-  },
-  { // Entry 341
-    -0x1.44eb381cf3869ea71ccb36863e4ea65bp-1,
-    0x1.8bb105a5dc90104051d08cb965631807p-1,
-    -0x1.5ffffffffffffp-1,
-  },
-  { // Entry 342
-    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    0x1.6p-1,
-  },
-  { // Entry 343
-    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    -0x1.6p-1,
-  },
-  { // Entry 344
-    0x1.44eb381cf386b7622d25944f3eb035dcp-1,
-    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
-    0x1.6000000000001p-1,
-  },
-  { // Entry 345
-    -0x1.44eb381cf386b7622d25944f3eb035dcp-1,
-    0x1.8bb105a5dc8ffbf19e4ebd80fab2cdb8p-1,
-    -0x1.6000000000001p-1,
-  },
-  { // Entry 346
-    0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
-    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
-    0x1.2ffffffffffffp0,
-  },
-  { // Entry 347
-    -0x1.dad902fa8ac864fd8afa0bdc609ded19p-1,
-    0x1.7ef4842f0bcd11686aaf6f21c9aa8354p-2,
-    -0x1.2ffffffffffffp0,
-  },
-  { // Entry 348
-    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    0x1.3p0,
-  },
-  { // Entry 349
-    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    -0x1.3p0,
-  },
-  { // Entry 350
-    0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
-    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
-    0x1.3000000000001p0,
-  },
-  { // Entry 351
-    -0x1.dad902fa8ac87cecd33cfc992dfec1bep-1,
-    0x1.7ef4842f0bcc9ab229f0cc6fad6d378dp-2,
-    -0x1.3000000000001p0,
-  },
-  { // Entry 352
-    0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
-    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
-    0x1.37fffffffffffp1,
-  },
-  { // Entry 353
-    -0x1.4b707a7acdecf90a188d0230fad3ad58p-1,
-    -0x1.863efa361dc2294e929b9515fb34f9bap-1,
-    -0x1.37fffffffffffp1,
-  },
-  { // Entry 354
-    0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    0x1.380p1,
-  },
-  { // Entry 355
-    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    -0x1.380p1,
-  },
-  { // Entry 356
-    0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
-    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
-    0x1.3800000000001p1,
-  },
-  { // Entry 357
-    -0x1.4b707a7acdec977a59ff7ac0662484ddp-1,
-    -0x1.863efa361dc27c2ab13a48912d45880bp-1,
-    -0x1.3800000000001p1,
-  },
-  { // Entry 358
-    0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
-    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
-    0x1.069c8b46b3792p-4,
-  },
-  { // Entry 359
-    -0x1.066e7eb76f5c6678fd8325a81f1925c6p-4,
-    0x1.fef2b2d21cf6c106e86ff9395f8204a0p-1,
-    -0x1.069c8b46b3792p-4,
-  },
-  { // Entry 360
-    0x1.05e4761ab8d8f0a7dba834000f236650p-3,
-    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
-    0x1.069c8b46b3792p-3,
-  },
-  { // Entry 361
-    -0x1.05e4761ab8d8f0a7dba834000f236650p-3,
-    0x1.fbcbe693bd8ec85723b6cb55e4f5e78fp-1,
-    -0x1.069c8b46b3792p-3,
-  },
-  { // Entry 362
-    0x1.877e2cd4f6fd9ba498e327053032734fp-3,
-    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
-    0x1.89ead0ea0d35bp-3,
-  },
-  { // Entry 363
-    -0x1.877e2cd4f6fd9ba498e327053032734fp-3,
-    0x1.f68eebfcbb5e841900e2542f7c24bab0p-1,
-    -0x1.89ead0ea0d35bp-3,
-  },
-  { // Entry 364
-    0x1.03be06f97cbee47698539f977cadbe7ep-2,
-    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
-    0x1.069c8b46b3792p-2,
-  },
-  { // Entry 365
-    -0x1.03be06f97cbee47698539f977cadbe7ep-2,
-    0x1.ef4145b4aecffbdaaffb78ffb49ac9bdp-1,
-    -0x1.069c8b46b3792p-2,
-  },
-  { // Entry 366
-    0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
-    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
-    0x1.4843ae1860576p-2,
-  },
-  { // Entry 367
-    -0x1.42abba8c72fbb8ca96f79aa4bb03584ep-2,
-    0x1.e5eaa286fbbc670dbf6392d7c98ab0a0p-1,
-    -0x1.4843ae1860576p-2,
-  },
-  { // Entry 368
-    0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
-    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
-    0x1.89ead0ea0d35ap-2,
-  },
-  { // Entry 369
-    -0x1.8045fe64e62dc3d686d976d7d5a7c689p-2,
-    0x1.da94d54dd4c0876e18ee97c70d1a4a94p-1,
-    -0x1.89ead0ea0d35ap-2,
-  },
-  { // Entry 370
-    0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
-    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
-    0x1.cb91f3bbba13ep-2,
-  },
-  { // Entry 371
-    -0x1.bc4c04d71abbeea5ab064ecfbf54c613p-2,
-    0x1.cd4bca9cb5c715302001e446cc93a7bcp-1,
-    -0x1.cb91f3bbba13ep-2,
-  },
-  { // Entry 372
-    0x1.f67ea975b86a01510e6bde3778138934p-2,
-    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
-    0x1.069c8b46b3791p-1,
-  },
-  { // Entry 373
-    -0x1.f67ea975b86a01510e6bde3778138934p-2,
-    0x1.be1d7c3534c40331fddf243d8a0a56b0p-1,
-    -0x1.069c8b46b3791p-1,
-  },
-  { // Entry 374
-    0x1.175059bf0d42524ecb0bf4243b55973dp-1,
-    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
-    0x1.27701caf89e83p-1,
-  },
-  { // Entry 375
-    -0x1.175059bf0d42524ecb0bf4243b55973dp-1,
-    0x1.ad19e2535aa9678bd5fdafc68817700bp-1,
-    -0x1.27701caf89e83p-1,
-  },
-  { // Entry 376
-    0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
-    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
-    0x1.4843ae1860575p-1,
-  },
-  { // Entry 377
-    -0x1.323b8b1fb4ba21dd12cce820e156a4fcp-1,
-    0x1.9a52e2e0fbcb3a3f4bde6f6ec27767a9p-1,
-    -0x1.4843ae1860575p-1,
-  },
-  { // Entry 378
-    0x1.4be4979c5efb306c1a77024032849b52p-1,
-    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
-    0x1.69173f8136c67p-1,
-  },
-  { // Entry 379
-    -0x1.4be4979c5efb306c1a77024032849b52p-1,
-    0x1.85dc3ea1bbce9a8085f66593a87b7e2ep-1,
-    -0x1.69173f8136c67p-1,
-  },
-  { // Entry 380
-    0x1.643080d67acc1332c64a85612cacafb9p-1,
-    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
-    0x1.89ead0ea0d359p-1,
-  },
-  { // Entry 381
-    -0x1.643080d67acc1332c64a85612cacafb9p-1,
-    0x1.6fcb7c6b8b919af3dda53094c9a27aabp-1,
-    -0x1.89ead0ea0d359p-1,
-  },
-  { // Entry 382
-    0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
-    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
-    0x1.aabe6252e3a4bp-1,
-  },
-  { // Entry 383
-    -0x1.7b05b7b6c612e5b08d5efe49a46e21a1p-1,
-    0x1.5837d2817cf303ef6dae69faeb0f015ep-1,
-    -0x1.aabe6252e3a4bp-1,
-  },
-  { // Entry 384
-    0x1.904c37505de48fa8e76287960fd44594p-1,
-    0x1.3f3a0e28bedd40445858f823e150264bp-1,
-    0x1.cb91f3bbba13dp-1,
-  },
-  { // Entry 385
-    -0x1.904c37505de48fa8e76287960fd44594p-1,
-    0x1.3f3a0e28bedd40445858f823e150264bp-1,
-    -0x1.cb91f3bbba13dp-1,
-  },
-  { // Entry 386
-    0x1.a3ed9e252938a14c79c575639c15a91dp-1,
-    0x1.24ec799171642dbd24d259005822bd25p-1,
-    0x1.ec6585249082fp-1,
-  },
-  { // Entry 387
-    -0x1.a3ed9e252938a14c79c575639c15a91dp-1,
-    0x1.24ec799171642dbd24d259005822bd25p-1,
-    -0x1.ec6585249082fp-1,
-  },
-  { // Entry 388
-    0x1.b5d545b109bf935594036798cf40c9b0p-1,
-    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
-    0x1.069c8b46b3791p0,
-  },
-  { // Entry 389
-    -0x1.b5d545b109bf935594036798cf40c9b0p-1,
-    0x1.096ac02ec42c85b7b10afed9202785b9p-1,
-    -0x1.069c8b46b3791p0,
-  },
-  { // Entry 390
-    0x1.c5f058230e7fd14d3e5e315349f699efp-1,
-    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
-    0x1.170653fb1eb0ap0,
-  },
-  { // Entry 391
-    -0x1.c5f058230e7fd14d3e5e315349f699efp-1,
-    0x1.d9a3a336edb7613df062e86a32d09fe1p-2,
-    -0x1.170653fb1eb0ap0,
-  },
-  { // Entry 392
-    0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
-    0x1.9e7f8652b47582afd29744293170c07cp-2,
-    0x1.27701caf89e83p0,
-  },
-  { // Entry 393
-    -0x1.d42de42dce1346a03d1f6abf0eba9022p-1,
-    0x1.9e7f8652b47582afd29744293170c07cp-2,
-    -0x1.27701caf89e83p0,
-  },
-  { // Entry 394
-    0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
-    0x1.61a76077aee07bb349ca76cf700913d1p-2,
-    0x1.37d9e563f51fcp0,
-  },
-  { // Entry 395
-    -0x1.e07eeeda109cb504afcca860d4b5dd32p-1,
-    0x1.61a76077aee07bb349ca76cf700913d1p-2,
-    -0x1.37d9e563f51fcp0,
-  },
-  { // Entry 396
-    0x1.ead6834909b93371faf3beaddbd60eddp-1,
-    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
-    0x1.4843ae1860575p0,
-  },
-  { // Entry 397
-    -0x1.ead6834909b93371faf3beaddbd60eddp-1,
-    0x1.235b331d8f748e20fb6ddb6a708dba10p-2,
-    -0x1.4843ae1860575p0,
-  },
-  { // Entry 398
-    0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
-    0x1.c7b90e3024593da8449963cfe08dde85p-3,
-    0x1.58ad76cccb8eep0,
-  },
-  { // Entry 399
-    -0x1.f329c0558e967e4cab58d0fa572d62d2p-1,
-    0x1.c7b90e3024593da8449963cfe08dde85p-3,
-    -0x1.58ad76cccb8eep0,
-  },
-  { // Entry 400
-    0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
-    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
-    0x1.69173f8136c67p0,
-  },
-  { // Entry 401
-    -0x1.f96fe405f1ac5dc9cf343508067bfcaep-1,
-    0x1.46dc4f4ce83da727ea048cc7d2f276d1p-3,
-    -0x1.69173f8136c67p0,
-  },
-  { // Entry 402
-    0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
-    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
-    0x1.79810835a1fe0p0,
-  },
-  { // Entry 403
-    -0x1.fda254c27a01f4786c149d6a7779cc3ap-1,
-    0x1.894f70befbb99ab7df9d1790a28f48adp-4,
-    -0x1.79810835a1fe0p0,
-  },
-  { // Entry 404
-    0x1.ffbca846c4fc997f1a381420208884e0p-1,
-    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
-    0x1.89ead0ea0d359p0,
-  },
-  { // Entry 405
-    -0x1.ffbca846c4fc997f1a381420208884e0p-1,
-    0x1.069107ae9332f95fa2c5ceeadfb29f77p-5,
-    -0x1.89ead0ea0d359p0,
-  },
-  { // Entry 406
-    0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
-    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
-    0x1.9a54999e786d2p0,
-  },
-  { // Entry 407
-    -0x1.ffbca846c4fc9f30bfb458ef2091c8eep-1,
-    -0x1.069107ae9327e0731a748c21f03b5efcp-5,
-    -0x1.9a54999e786d2p0,
-  },
-  { // Entry 408
-    0x1.fda254c27a0205875f271435f827160cp-1,
-    -0x1.894f70befbb41417dff843e81fac388bp-4,
-    0x1.aabe6252e3a4bp0,
-  },
-  { // Entry 409
-    -0x1.fda254c27a0205875f271435f827160cp-1,
-    -0x1.894f70befbb41417dff843e81fac388bp-4,
-    -0x1.aabe6252e3a4bp0,
-  },
-  { // Entry 410
-    0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
-    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
-    0x1.bb282b074edc4p0,
-  },
-  { // Entry 411
-    -0x1.f96fe405f1ac7a241e02e58b0cbf3ae7p-1,
-    -0x1.46dc4f4ce83ae9ab1cc1b2367cb753ebp-3,
-    -0x1.bb282b074edc4p0,
-  },
-  { // Entry 412
-    0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
-    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
-    0x1.cb91f3bbba13dp0,
-  },
-  { // Entry 413
-    -0x1.f329c0558e96a5d48272ad4c49ec53b8p-1,
-    -0x1.c7b90e30245688e099860e8d4fff601cp-3,
-    -0x1.cb91f3bbba13dp0,
-  },
-  { // Entry 414
-    0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
-    -0x1.235b331d8f7339841a517312d0d347fbp-2,
-    0x1.dbfbbc70254b6p0,
-  },
-  { // Entry 415
-    -0x1.ead6834909b965fdc4b0ceffc0f285c6p-1,
-    -0x1.235b331d8f7339841a517312d0d347fbp-2,
-    -0x1.dbfbbc70254b6p0,
-  },
-  { // Entry 416
-    0x1.e07eeeda109cf25f400cd5f46acec887p-1,
-    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
-    0x1.ec6585249082fp0,
-  },
-  { // Entry 417
-    -0x1.e07eeeda109cf25f400cd5f46acec887p-1,
-    -0x1.61a76077aedf2e43aca418f7a2e1324dp-2,
-    -0x1.ec6585249082fp0,
-  },
-  { // Entry 418
-    0x1.d42de42dce138e890939e56c439ded90p-1,
-    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
-    0x1.fccf4dd8fbba8p0,
-  },
-  { // Entry 419
-    -0x1.d42de42dce138e890939e56c439ded90p-1,
-    -0x1.9e7f8652b4743dcc3c3568baff8bf9ebp-2,
-    -0x1.fccf4dd8fbba8p0,
-  },
-  { // Entry 420
-    0x1.c5f058230e8014ab83ece0c3a638c079p-1,
-    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
-    0x1.069c8b46b3791p1,
-  },
-  { // Entry 421
-    -0x1.c5f058230e8014ab83ece0c3a638c079p-1,
-    -0x1.d9a3a336edb65efa30e1a6679aa064c2p-2,
-    -0x1.069c8b46b3791p1,
-  },
-  { // Entry 422
-    0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
-    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
-    0x1.0ed16fa0e914ep1,
-  },
-  { // Entry 423
-    -0x1.b5d545b109bfce3fc4d77001afe2f2b6p-1,
-    -0x1.096ac02ec42c24880a5951788cb383c8p-1,
-    -0x1.0ed16fa0e914ep1,
-  },
-  { // Entry 424
-    0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
-    -0x1.24ec79917163dda65afd8109f59cb465p-1,
-    0x1.170653fb1eb0bp1,
-  },
-  { // Entry 425
-    -0x1.a3ed9e252938d92a5553b3c09d2bddd3p-1,
-    -0x1.24ec79917163dda65afd8109f59cb465p-1,
-    -0x1.170653fb1eb0bp1,
-  },
-  { // Entry 426
-    0x1.904c37505de4b8975dd2730e196ddfc3p-1,
-    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
-    0x1.1f3b3855544c8p1,
-  },
-  { // Entry 427
-    -0x1.904c37505de4b8975dd2730e196ddfc3p-1,
-    -0x1.3f3a0e28bedd0cf0c4bfbd8c82a3baafp-1,
-    -0x1.1f3b3855544c8p1,
-  },
-  { // Entry 428
-    0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
-    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
-    0x1.27701caf89e85p1,
-  },
-  { // Entry 429
-    -0x1.7b05b7b6c612fc4fda3812b1f1348389p-1,
-    -0x1.5837d2817cf2eb069035552dc3ae834cp-1,
-    -0x1.27701caf89e85p1,
-  },
-  { // Entry 430
-    0x1.643080d67acc14620672dda6241ea305p-1,
-    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
-    0x1.2fa50109bf842p1,
-  },
-  { // Entry 431
-    -0x1.643080d67acc14620672dda6241ea305p-1,
-    -0x1.6fcb7c6b8b9199ce2f17dd3ee86b3b9ap-1,
-    -0x1.2fa50109bf842p1,
-  },
-  { // Entry 432
-    0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
-    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
-    0x1.37d9e563f51ffp1,
-  },
-  { // Entry 433
-    -0x1.4be4979c5efb194fc82ac367fedf93bcp-1,
-    -0x1.85dc3ea1bbceae2d294421e8c7350f8cp-1,
-    -0x1.37d9e563f51ffp1,
-  },
-  { // Entry 434
-    0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
-    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
-    0x1.400ec9be2abbcp1,
-  },
-  { // Entry 435
-    -0x1.323b8b1fb4b9efe5075ede8049a85c3dp-1,
-    -0x1.9a52e2e0fbcb5f8a3f55c274f9ec754bp-1,
-    -0x1.400ec9be2abbcp1,
-  },
-  { // Entry 436
-    0x1.175059bf0d42033bbcf598c88b176e61p-1,
-    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
-    0x1.4843ae1860579p1,
-  },
-  { // Entry 437
-    -0x1.175059bf0d42033bbcf598c88b176e61p-1,
-    -0x1.ad19e2535aa99b049ac0b5858c5d381fp-1,
-    -0x1.4843ae1860579p1,
-  },
-  { // Entry 438
-    0x1.f67ea975b8692521f77d6754b302c5c4p-2,
-    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
-    0x1.5078927295f36p1,
-  },
-  { // Entry 439
-    -0x1.f67ea975b8692521f77d6754b302c5c4p-2,
-    -0x1.be1d7c3534c44132ab1c4130cbe9dfa0p-1,
-    -0x1.5078927295f36p1,
-  },
-  { // Entry 440
-    0x1.bc4c04d71abad14efc29a66342ada723p-2,
-    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
-    0x1.58ad76cccb8f3p1,
-  },
-  { // Entry 441
-    -0x1.bc4c04d71abad14efc29a66342ada723p-2,
-    -0x1.cd4bca9cb5c759e4d6dc8601ec3d84b6p-1,
-    -0x1.58ad76cccb8f3p1,
-  },
-  { // Entry 442
-    0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
-    -0x1.da94d54dd4c0cedccd73684994422740p-1,
-    0x1.60e25b27012b0p1,
-  },
-  { // Entry 443
-    -0x1.8045fe64e62c62f57f077ea251e2f2dcp-2,
-    -0x1.da94d54dd4c0cedccd73684994422740p-1,
-    -0x1.60e25b27012b0p1,
-  },
-  { // Entry 444
-    0x1.42abba8c72fa12be920b316627512e41p-2,
-    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
-    0x1.69173f8136c6dp1,
-  },
-  { // Entry 445
-    -0x1.42abba8c72fa12be920b316627512e41p-2,
-    -0x1.e5eaa286fbbcad1e4a6373392e679669p-1,
-    -0x1.69173f8136c6dp1,
-  },
-  { // Entry 446
-    0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
-    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
-    0x1.714c23db6c62ap1,
-  },
-  { // Entry 447
-    -0x1.03be06f97cbcf866021e5a5c62c6b07ep-2,
-    -0x1.ef4145b4aed03c5f1d39763b1eee6ed8p-1,
-    -0x1.714c23db6c62ap1,
-  },
-  { // Entry 448
-    0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
-    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
-    0x1.79810835a1fe7p1,
-  },
-  { // Entry 449
-    -0x1.877e2cd4f6f94710f2776775b01c73dbp-3,
-    -0x1.f68eebfcbb5eba124d8cc48fd1beb04dp-1,
-    -0x1.79810835a1fe7p1,
-  },
-  { // Entry 450
-    0x1.05e4761ab8d421719567717f76712867p-3,
-    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
-    0x1.81b5ec8fd79a4p1,
-  },
-  { // Entry 451
-    -0x1.05e4761ab8d421719567717f76712867p-3,
-    -0x1.fbcbe693bd8ef006f5ff02210dfe0619p-1,
-    -0x1.81b5ec8fd79a4p1,
-  },
-  { // Entry 452
-    0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
-    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
-    0x1.89ead0ea0d35bp1,
-  },
-  { // Entry 453
-    -0x1.066e7eb76f5dd2ea19b6991e8a1a3634p-4,
-    -0x1.fef2b2d21cf6be1a2c7ea665ef1f874ep-1,
-    -0x1.89ead0ea0d35bp1,
-  },
-  { // Entry 454
-    0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
-    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
-    -0x1.81b5ec8fd799fp2,
-  },
-  { // Entry 455
-    -0x1.03be06f97cbf09cc0badbdae803d7b4ep-2,
-    0x1.ef4145b4aecff6f58edecf24955428c1p-1,
-    0x1.81b5ec8fd799fp2,
-  },
-  { // Entry 456
-    0x1.f67ea975b86a22f2348778824f95d84ap-2,
-    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
-    -0x1.714c23db6c626p2,
-  },
-  { // Entry 457
-    -0x1.f67ea975b86a22f2348778824f95d84ap-2,
-    0x1.be1d7c3534c3f9b9b35619280049de85p-1,
-    0x1.714c23db6c626p2,
-  },
-  { // Entry 458
-    0x1.643080d67acc210fa27e9247a8286220p-1,
-    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
-    -0x1.60e25b27012adp2,
-  },
-  { // Entry 459
-    -0x1.643080d67acc210fa27e9247a8286220p-1,
-    0x1.6fcb7c6b8b918d86fc83d612a6587eddp-1,
-    0x1.60e25b27012adp2,
-  },
-  { // Entry 460
-    0x1.b5d545b109bf950b419702972b94f8fap-1,
-    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
-    -0x1.5078927295f34p2,
-  },
-  { // Entry 461
-    -0x1.b5d545b109bf950b419702972b94f8fap-1,
-    0x1.096ac02ec42c82e5b225185bd6c757d5p-1,
-    0x1.5078927295f34p2,
-  },
-  { // Entry 462
-    0x1.ead6834909b9346234dbb601d0486cf2p-1,
-    0x1.235b331d8f7487ce2db97819fae7777cp-2,
-    -0x1.400ec9be2abbbp2,
-  },
-  { // Entry 463
-    -0x1.ead6834909b9346234dbb601d0486cf2p-1,
-    0x1.235b331d8f7487ce2db97819fae7777cp-2,
-    0x1.400ec9be2abbbp2,
-  },
-  { // Entry 464
-    0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
-    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
-    -0x1.2fa50109bf842p2,
-  },
-  { // Entry 465
-    -0x1.ffbca846c4fc999a29dc1d6b2d7cb413p-1,
-    0x1.069107ae9332c4a1cd2dc033b8d50598p-5,
-    0x1.2fa50109bf842p2,
-  },
-  { // Entry 466
-    0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
-    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
-    -0x1.1f3b3855544c9p2,
-  },
-  { // Entry 467
-    -0x1.f329c0558e96a518a2af3ae7800a5b65p-1,
-    -0x1.c7b90e30245695bd1ec170f45feeb1ffp-3,
-    0x1.1f3b3855544c9p2,
-  },
-  { // Entry 468
-    0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
-    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
-    -0x1.0ed16fa0e9150p2,
-  },
-  { // Entry 469
-    -0x1.c5f058230e8021f21bd0ac2c0f6809a9p-1,
-    -0x1.d9a3a336edb62c1541b8584cd6c00f87p-2,
-    0x1.0ed16fa0e9150p2,
-  },
-  { // Entry 470
-    0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
-    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
-    -0x1.fccf4dd8fbbaep1,
-  },
-  { // Entry 471
-    -0x1.7b05b7b6c61365a9ac9e908b8e5d3ce4p-1,
-    -0x1.5837d2817cf27705cac7881fb569ffc7p-1,
-    0x1.fccf4dd8fbbaep1,
-  },
-  { // Entry 472
-    0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
-    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
-    -0x1.dbfbbc70254bcp1,
-  },
-  { // Entry 473
-    -0x1.175059bf0d42f1d6b391f07f96f2353dp-1,
-    -0x1.ad19e2535aa8ffb40066d78aef71fabdp-1,
-    0x1.dbfbbc70254bcp1,
-  },
-  { // Entry 474
-    0x1.42abba8c72fd22194793246b8d19960ap-2,
-    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
-    -0x1.bb282b074edcap1,
-  },
-  { // Entry 475
-    -0x1.42abba8c72fd22194793246b8d19960ap-2,
-    -0x1.e5eaa286fbbc2b129238160df30ce704p-1,
-    0x1.bb282b074edcap1,
-  },
-  { // Entry 476
-    0x1.066e7eb76f62b5f4563de26dca890017p-4,
-    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
-    -0x1.9a54999e786d8p1,
-  },
-  { // Entry 477
-    -0x1.066e7eb76f62b5f4563de26dca890017p-4,
-    -0x1.fef2b2d21cf6b40ff3b530ce8dc0d8a7p-1,
-    0x1.9a54999e786d8p1,
-  },
-  { // Entry 478
-    -0x1.877e2cd4f6fa42586875c5250a169e48p-3,
-    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
-    -0x1.79810835a1fe6p1,
-  },
-  { // Entry 479
-    0x1.877e2cd4f6fa42586875c5250a169e48p-3,
-    -0x1.f68eebfcbb5eadd65c261cd803990ae1p-1,
-    0x1.79810835a1fe6p1,
-  },
-  { // Entry 480
-    -0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
-    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
-    -0x1.58ad76cccb8f4p1,
-  },
-  { // Entry 481
-    0x1.bc4c04d71aba5dfc098278f168bbd962p-2,
-    -0x1.cd4bca9cb5c775a99729f7ad95b7dce3p-1,
-    0x1.58ad76cccb8f4p1,
-  },
-  { // Entry 482
-    -0x1.4be4979c5efa871d30ae1cfa66389199p-1,
-    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
-    -0x1.37d9e563f5202p1,
-  },
-  { // Entry 483
-    0x1.4be4979c5efa871d30ae1cfa66389199p-1,
-    -0x1.85dc3ea1bbcf2aa2e21ec586d5497e35p-1,
-    0x1.37d9e563f5202p1,
-  },
-  { // Entry 484
-    -0x1.a3ed9e25293822168958cce1e09f7c11p-1,
-    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
-    -0x1.170653fb1eb10p1,
-  },
-  { // Entry 485
-    0x1.a3ed9e25293822168958cce1e09f7c11p-1,
-    -0x1.24ec79917164e41addd4bacd4420f9fbp-1,
-    0x1.170653fb1eb10p1,
-  },
-  { // Entry 486
-    -0x1.e07eeeda109c62b340dc36e92169648dp-1,
-    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
-    -0x1.ec6585249083cp0,
-  },
-  { // Entry 487
-    0x1.e07eeeda109c62b340dc36e92169648dp-1,
-    -0x1.61a76077aee23b11f0c673f638003b0ap-2,
-    0x1.ec6585249083cp0,
-  },
-  { // Entry 488
-    -0x1.fda254c27a01dd954db3aea505e49453p-1,
-    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
-    -0x1.aabe6252e3a58p0,
-  },
-  { // Entry 489
-    0x1.fda254c27a01dd954db3aea505e49453p-1,
-    -0x1.894f70befbc104b706e85cf4c1c96a52p-4,
-    0x1.aabe6252e3a58p0,
-  },
-  { // Entry 490
-    -0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
-    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
-    -0x1.69173f8136c74p0,
-  },
-  { // Entry 491
-    0x1.f96fe405f1aca02e8f4fd433e59aa973p-1,
-    0x1.46dc4f4ce8373c7c44f13b57363edd3bp-3,
-    0x1.69173f8136c74p0,
-  },
-  { // Entry 492
-    -0x1.d42de42dce13ef040bb1040e3148d7dep-1,
-    0x1.9e7f8652b47289e53fccd54955db4552p-2,
-    -0x1.27701caf89e90p0,
-  },
-  { // Entry 493
-    0x1.d42de42dce13ef040bb1040e3148d7dep-1,
-    0x1.9e7f8652b47289e53fccd54955db4552p-2,
-    0x1.27701caf89e90p0,
-  },
-  { // Entry 494
-    -0x1.904c37505de5930812e3a2a94feaa51bp-1,
-    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
-    -0x1.cb91f3bbba157p-1,
-  },
-  { // Entry 495
-    0x1.904c37505de5930812e3a2a94feaa51bp-1,
-    0x1.3f3a0e28bedbfb066b67abd9c338409ep-1,
-    0x1.cb91f3bbba157p-1,
-  },
-  { // Entry 496
-    -0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
-    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
-    -0x1.4843ae186058ep-1,
-  },
-  { // Entry 497
-    0x1.323b8b1fb4bb626dd40cacd74963ac6cp-1,
-    0x1.9a52e2e0fbca4b00c72daa3cdaca257cp-1,
-    0x1.4843ae186058ep-1,
-  },
-  { // Entry 498
-    -0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
-    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
-    -0x1.89ead0ea0d38ap-2,
-  },
-  { // Entry 499
-    0x1.8045fe64e6308bb5c6ce35f834b93c63p-2,
-    0x1.da94d54dd4bff753d988c1755e2ffc04p-1,
-    0x1.89ead0ea0d38ap-2,
-  },
-  { // Entry 500
-    -0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
-    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
-    -0x1.069c8b46b37f0p-3,
-  },
-  { // Entry 501
-    0x1.05e4761ab8dec44ed0fa30d335049c40p-3,
-    0x1.fbcbe693bd8e98423207e36587d942b7p-1,
-    0x1.069c8b46b37f0p-3,
-  },
-  { // Entry 502
-    0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
-    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
-    0x1.069c8b46b3734p-3,
-  },
-  { // Entry 503
-    -0x1.05e4761ab8d31d00e656372c5c04aa6ep-3,
-    0x1.fbcbe693bd8ef86c1565b3453036e55ep-1,
-    -0x1.069c8b46b3734p-3,
-  },
-  { // Entry 504
-    0x1.8045fe64e62b19a094399502afb76e5cp-2,
-    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
-    0x1.89ead0ea0d32cp-2,
-  },
-  { // Entry 505
-    -0x1.8045fe64e62b19a094399502afb76e5cp-2,
-    0x1.da94d54dd4c11187405ada7f04e5b171p-1,
-    -0x1.89ead0ea0d32cp-2,
-  },
-  { // Entry 506
-    0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
-    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
-    0x1.4843ae186055fp-1,
-  },
-  { // Entry 507
-    -0x1.323b8b1fb4b907c416d23b04e0ec0e72p-1,
-    0x1.9a52e2e0fbcc0cc83b843bae58c6cdf8p-1,
-    -0x1.4843ae186055fp-1,
-  },
-  { // Entry 508
-    0x1.904c37505de3be2ace17ca5487750231p-1,
-    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
-    0x1.cb91f3bbba128p-1,
-  },
-  { // Entry 509
-    -0x1.904c37505de3be2ace17ca5487750231p-1,
-    0x1.3f3a0e28bede46f65ca5b5c19ad99dd7p-1,
-    -0x1.cb91f3bbba128p-1,
-  },
-  { // Entry 510
-    0x1.d42de42dce12b82466f2fcb63b294751p-1,
-    0x1.9e7f8652b478066eec563f835097f148p-2,
-    0x1.27701caf89e78p0,
-  },
-  { // Entry 511
-    -0x1.d42de42dce12b82466f2fcb63b294751p-1,
-    0x1.9e7f8652b478066eec563f835097f148p-2,
-    -0x1.27701caf89e78p0,
-  },
-  { // Entry 512
-    0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
-    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
-    0x1.69173f8136c5cp0,
-  },
-  { // Entry 513
-    -0x1.f96fe405f1ac259bf192fd1cf64e2f12p-1,
-    0x1.46dc4f4ce843151b9d14e561879e5fe3p-3,
-    -0x1.69173f8136c5cp0,
-  },
-  { // Entry 514
-    0x1.fda254c27a02275432d77dd6f9704644p-1,
-    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
-    0x1.aabe6252e3a40p0,
-  },
-  { // Entry 515
-    -0x1.fda254c27a02275432d77dd6f9704644p-1,
-    -0x1.894f70befba9211b0dcaa4dca450670fp-4,
-    -0x1.aabe6252e3a40p0,
-  },
-  { // Entry 516
-    0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
-    -0x1.61a76077aedc99952438421f820a2befp-2,
-    0x1.ec65852490824p0,
-  },
-  { // Entry 517
-    -0x1.e07eeeda109d6bf0c935fa10b1280c6dp-1,
-    -0x1.61a76077aedc99952438421f820a2befp-2,
-    -0x1.ec65852490824p0,
-  },
-  { // Entry 518
-    0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
-    -0x1.24ec799171626e36709cfcf7c7752332p-1,
-    0x1.170653fb1eb04p1,
-  },
-  { // Entry 519
-    -0x1.a3ed9e252939d9793fb2f6f75e5c76e7p-1,
-    -0x1.24ec799171626e36709cfcf7c7752332p-1,
-    -0x1.170653fb1eb04p1,
-  },
-  { // Entry 520
-    0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
-    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
-    0x1.37d9e563f51f6p1,
-  },
-  { // Entry 521
-    -0x1.4be4979c5efccfe78ea0b6afb0cbba37p-1,
-    -0x1.85dc3ea1bbcd38cbfeb4370d5405eebap-1,
-    -0x1.37d9e563f51f6p1,
-  },
-  { // Entry 522
-    0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
-    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
-    0x1.58ad76cccb8e8p1,
-  },
-  { // Entry 523
-    -0x1.bc4c04d71abfc5df69589a45d5e3196ep-2,
-    -0x1.cd4bca9cb5c628709388a39fc84591d1p-1,
-    -0x1.58ad76cccb8e8p1,
-  },
-  { // Entry 524
-    0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
-    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
-    0x1.79810835a1fdap1,
-  },
-  { // Entry 525
-    -0x1.877e2cd4f70609b1f062295b64aed4bdp-3,
-    -0x1.f68eebfcbb5e1b070b564037f5571a39p-1,
-    -0x1.79810835a1fdap1,
-  },
-  { // Entry 526
-    -0x1.066e7eb76f4ac293f46486dc328d450bp-4,
-    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
-    0x1.9a54999e786ccp1,
-  },
-  { // Entry 527
-    0x1.066e7eb76f4ac293f46486dc328d450bp-4,
-    -0x1.fef2b2d21cf6e544ab7795aed10d9fa7p-1,
-    -0x1.9a54999e786ccp1,
-  },
-  { // Entry 528
-    -0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
-    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
-    0x1.bb282b074edbep1,
-  },
-  { // Entry 529
-    0x1.42abba8c72f770595ffe3135a0e0ad83p-2,
-    -0x1.e5eaa286fbbd1d135e216c49a9f7e5dap-1,
-    -0x1.bb282b074edbep1,
-  },
-  { // Entry 530
-    -0x1.175059bf0d406e2fe014e880dd29cfacp-1,
-    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
-    0x1.dbfbbc70254b0p1,
-  },
-  { // Entry 531
-    0x1.175059bf0d406e2fe014e880dd29cfacp-1,
-    -0x1.ad19e2535aaaa2ac87056b6d7776e97ap-1,
-    -0x1.dbfbbc70254b0p1,
-  },
-  { // Entry 532
-    -0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
-    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
-    0x1.fccf4dd8fbba2p1,
-  },
-  { // Entry 533
-    0x1.7b05b7b6c6116155f0dc551e316e1e0bp-1,
-    -0x1.5837d2817cf4af8e5e59b13b4aa9b5e3p-1,
-    -0x1.fccf4dd8fbba2p1,
-  },
-  { // Entry 534
-    -0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
-    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
-    0x1.0ed16fa0e914ap2,
-  },
-  { // Entry 535
-    0x1.c5f058230e7ebeb7616779e16fa9b537p-1,
-    -0x1.d9a3a336edbb7de64a2183cb27be4b5bp-2,
-    -0x1.0ed16fa0e914ap2,
-  },
-  { // Entry 536
-    -0x1.f329c0558e95fa333d5d2d44d654777cp-1,
-    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
-    0x1.1f3b3855544c3p2,
-  },
-  { // Entry 537
-    0x1.f329c0558e95fa333d5d2d44d654777cp-1,
-    -0x1.c7b90e30246248b7a0c2c87a3dd25224p-3,
-    -0x1.1f3b3855544c3p2,
-  },
-  { // Entry 538
-    -0x1.ffbca846c4fcb237c2947b35b037a2p-1,
-    0x1.069107ae9302caf2068b48842afdf051p-5,
-    0x1.2fa50109bf83cp2,
-  },
-  { // Entry 539
-    0x1.ffbca846c4fcb237c2947b35b037a2p-1,
-    0x1.069107ae9302caf2068b48842afdf051p-5,
-    -0x1.2fa50109bf83cp2,
-  },
-  { // Entry 540
-    -0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
-    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
-    0x1.400ec9be2abb5p2,
-  },
-  { // Entry 541
-    0x1.ead6834909ba0ee69b31e1970df1bb8bp-1,
-    0x1.235b331d8f6ec74aa3de5aed15fa3f68p-2,
-    -0x1.400ec9be2abb5p2,
-  },
-  { // Entry 542
-    -0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
-    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
-    0x1.5078927295f2ep2,
-  },
-  { // Entry 543
-    0x1.b5d545b109c1232b61dd28d8035d95cbp-1,
-    0x1.096ac02ec429f225c99b89bb4c9e5d3ep-1,
-    -0x1.5078927295f2ep2,
-  },
-  { // Entry 544
-    -0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
-    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
-    0x1.60e25b27012a7p2,
-  },
-  { // Entry 545
-    0x1.643080d67ace48c0dd1fe3a06bbc4bf5p-1,
-    0x1.6fcb7c6b8b8f773e3b421dded6fc1f26p-1,
-    -0x1.60e25b27012a7p2,
-  },
-  { // Entry 546
-    -0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
-    0x1.be1d7c3534c280dab43dced670330b63p-1,
-    0x1.714c23db6c620p2,
-  },
-  { // Entry 547
-    0x1.f67ea975b86f5d4aa92716cc077473a7p-2,
-    0x1.be1d7c3534c280dab43dced670330b63p-1,
-    -0x1.714c23db6c620p2,
-  },
-  { // Entry 548
-    -0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
-    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
-    0x1.81b5ec8fd7999p2,
-  },
-  { // Entry 549
-    0x1.03be06f97cc4d78fdccbca1d40e86011p-2,
-    0x1.ef4145b4aecf342709a3b19320d1b194p-1,
-    -0x1.81b5ec8fd7999p2,
-  },
-  { // Entry 550
-    0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
-    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
-    0x1.effffffffffffp-5,
-  },
-  { // Entry 551
-    -0x1.efb26ef930c4c3fa3245963c1dcec0a6p-5,
-    0x1.ff0fd2c96adfbae576981ee4b34769dep-1,
-    -0x1.effffffffffffp-5,
-  },
-  { // Entry 552
-    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    0x1.fp-5,
-  },
-  { // Entry 553
-    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    -0x1.fp-5,
-  },
-  { // Entry 554
-    0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
-    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
-    0x1.f000000000001p-5,
-  },
-  { // Entry 555
-    -0x1.efb26ef930c4e3eb2f722cea197c2036p-5,
-    0x1.ff0fd2c96adfbac67b712f51a6fa2ab3p-1,
-    -0x1.f000000000001p-5,
-  },
-  { // Entry 556
-    0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
-    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
-    0x1.f7fffffffffffp-4,
-  },
-  { // Entry 557
-    -0x1.f6baaa131de633ad4e0e7d6465d12a05p-4,
-    0x1.fc210055467fe5c8f76e75fd7083818cp-1,
-    -0x1.f7fffffffffffp-4,
-  },
-  { // Entry 558
-    0x1.f6baaa131de6438e5611279864fe7663p-4,
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    0x1.f80p-4,
-  },
-  { // Entry 559
-    -0x1.f6baaa131de6438e5611279864fe7663p-4,
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    -0x1.f80p-4,
-  },
-  { // Entry 560
-    0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
-    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
-    0x1.f800000000001p-4,
-  },
-  { // Entry 561
-    -0x1.f6baaa131de6536f5e13d1cc6429cc07p-4,
-    0x1.fc210055467fe54b48c3f135f6f29df7p-1,
-    -0x1.f800000000001p-4,
-  },
-  { // Entry 562
-    0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
-    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
-    0x1.4bfffffffffffp-3,
-  },
-  { // Entry 563
-    -0x1.4a8c3b4e9c7ff00a36e061a0d2295093p-3,
-    0x1.f94984b2552e19e7329413b8c2e8dc51p-1,
-    -0x1.4bfffffffffffp-3,
-  },
-  { // Entry 564
-    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    0x1.4c0p-3,
-  },
-  { // Entry 565
-    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    -0x1.4c0p-3,
-  },
-  { // Entry 566
-    0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
-    0x1.f94984b2552e189ca658c51c42e907cep-1,
-    0x1.4c00000000001p-3,
-  },
-  { // Entry 567
-    -0x1.4a8c3b4e9c800f9ecf2b86f3b3bd6f5ap-3,
-    0x1.f94984b2552e189ca658c51c42e907cep-1,
-    -0x1.4c00000000001p-3,
-  },
-  { // Entry 568
-    0x1.2e9cd95baba325fe6067233d4496aaacp-2,
-    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
-    0x1.3333333333332p-2,
-  },
-  { // Entry 569
-    -0x1.2e9cd95baba325fe6067233d4496aaacp-2,
-    0x1.e921dd42f09ba868603ea376f6e2d012p-1,
-    -0x1.3333333333332p-2,
-  },
-  { // Entry 570
-    0x1.2e9cd95baba335476f513ac221d078c7p-2,
-    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
-    0x1.3333333333333p-2,
-  },
-  { // Entry 571
-    -0x1.2e9cd95baba335476f513ac221d078c7p-2,
-    0x1.e921dd42f09ba60b268bec1fb0878a42p-1,
-    -0x1.3333333333333p-2,
-  },
-  { // Entry 572
-    0x1.2e9cd95baba344907e3b5246fef75d15p-2,
-    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
-    0x1.3333333333334p-2,
-  },
-  { // Entry 573
-    -0x1.2e9cd95baba344907e3b5246fef75d15p-2,
-    0x1.e921dd42f09ba3adecd934c86a0db254p-1,
-    -0x1.3333333333334p-2,
-  },
-  { // Entry 574
-    0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
-    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
-    0x1.594317acc4ef8p-1,
-  },
-  { // Entry 575
-    -0x1.3faefc7a5466ef3045c3f1be716ad568p-1,
-    0x1.8feedb86bf0ef3158f8a1dcbef49d123p-1,
-    -0x1.594317acc4ef8p-1,
-  },
-  { // Entry 576
-    0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
-    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
-    0x1.594317acc4ef9p-1,
-  },
-  { // Entry 577
-    -0x1.3faefc7a5466fbafbca027b6e8db8c04p-1,
-    0x1.8feedb86bf0ee91817a64b28b79e5119p-1,
-    -0x1.594317acc4ef9p-1,
-  },
-  { // Entry 578
-    0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
-    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
-    0x1.594317acc4efap-1,
-  },
-  { // Entry 579
-    -0x1.3faefc7a5467082f337c5daf5ffc56e2p-1,
-    0x1.8feedb86bf0edf1a9fc278857f8ed559p-1,
-    -0x1.594317acc4efap-1,
-  },
-  { // Entry 580
-    0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
-    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
-    0x1.8ffffffffffffp-1,
-  },
-  { // Entry 581
-    -0x1.6888a4e134b2def5bea51f4cd7d647c6p-1,
-    0x1.6b898fa9efb5dd6f9e17e3442d59b241p-1,
-    -0x1.8ffffffffffffp-1,
-  },
-  { // Entry 582
-    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    0x1.9p-1,
-  },
-  { // Entry 583
-    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    -0x1.9p-1,
-  },
-  { // Entry 584
-    0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
-    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
-    0x1.9000000000001p-1,
-  },
-  { // Entry 585
-    -0x1.6888a4e134b2f5ae579fbe4834f8fd55p-1,
-    0x1.6b898fa9efb5c6e713c9cff8feb4918fp-1,
-    -0x1.9000000000001p-1,
-  },
-  { // Entry 586
-    -0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074,
-  },
-  { // Entry 587
-    0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074,
-  },
-  { // Entry 588
-    -0.0,
-    0x1.p0,
-    -0.0,
-  },
-  { // Entry 589
-    0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074,
-  },
-  { // Entry 590
-    -0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074,
-  },
-  { // Entry 591
-    0x1.91f65f10dd812a0b95ff71871ab48207p-5,
-    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
-    0x1.921fb54442d17p-5,
-  },
-  { // Entry 592
-    -0x1.91f65f10dd812a0b95ff71871ab48207p-5,
-    0x1.ff621e3796d7de4a8ab7d7cd8488f499p-1,
-    -0x1.921fb54442d17p-5,
-  },
-  { // Entry 593
-    0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
-    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
-    0x1.921fb54442d18p-5,
-  },
-  { // Entry 594
-    -0x1.91f65f10dd813a06a6f12e3dd9a6a41ep-5,
-    0x1.ff621e3796d7de3dfb04df46987f6450p-1,
-    -0x1.921fb54442d18p-5,
-  },
-  { // Entry 595
-    0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
-    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
-    0x1.921fb54442d19p-5,
-  },
-  { // Entry 596
-    -0x1.91f65f10dd814a01b7e2eaf4989861b7p-5,
-    0x1.ff621e3796d7de316b51e6bfac75542fp-1,
-    -0x1.921fb54442d19p-5,
-  },
-  { // Entry 597
-    0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
-    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
-    0x1.921fb54442d17p-4,
-  },
-  { // Entry 598
-    -0x1.917a6bc29b42a9cd2e787ee00ca8f8e3p-4,
-    0x1.fd88da3d12525a208898cf58ded0eeb3p-1,
-    -0x1.921fb54442d17p-4,
-  },
-  { // Entry 599
-    0x1.917a6bc29b42b9b9754a67729f79346bp-4,
-    0x1.fd88da3d125259ee594b5705767ab649p-1,
-    0x1.921fb54442d18p-4,
-  },
-  { // Entry 600
-    -0x1.917a6bc29b42b9b9754a67729f79346bp-4,
-    0x1.fd88da3d125259ee594b5705767ab649p-1,
-    -0x1.921fb54442d18p-4,
-  },
-  { // Entry 601
-    0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
-    0x1.fd88da3d125259bc29fddeb20e228056p-1,
-    0x1.921fb54442d19p-4,
-  },
-  { // Entry 602
-    -0x1.917a6bc29b42c9a5bc1c50053247de78p-4,
-    0x1.fd88da3d125259bc29fddeb20e228056p-1,
-    -0x1.921fb54442d19p-4,
-  },
-  { // Entry 603
-    0x1.8f8b83c69a60975f98453886f953a0e5p-3,
-    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
-    0x1.921fb54442d17p-3,
-  },
-  { // Entry 604
-    -0x1.8f8b83c69a60975f98453886f953a0e5p-3,
-    0x1.f6297cff75cb03ab1fced6337e35a245p-1,
-    -0x1.921fb54442d17p-3,
-  },
-  { // Entry 605
-    0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
-    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
-    0x1.921fb54442d18p-3,
-  },
-  { // Entry 606
-    -0x1.8f8b83c69a60a710e42d3435516ddaccp-3,
-    0x1.f6297cff75cb02e35a0cf2e64de60626p-1,
-    -0x1.921fb54442d18p-3,
-  },
-  { // Entry 607
-    0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
-    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
-    0x1.921fb54442d19p-3,
-  },
-  { // Entry 608
-    -0x1.8f8b83c69a60b6c230152fe3a981d686p-3,
-    0x1.f6297cff75cb021b944b0f991d8e9161p-1,
-    -0x1.921fb54442d19p-3,
-  },
-  { // Entry 609
-    0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
-    0x1.d906bcf328d46672d9c1a865898e5966p-1,
-    0x1.921fb54442d17p-2,
-  },
-  { // Entry 610
-    -0x1.87de2a6aea961a3e9dedea57fe7e6514p-2,
-    0x1.d906bcf328d46672d9c1a865898e5966p-1,
-    -0x1.921fb54442d17p-2,
-  },
-  { // Entry 611
-    0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
-    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
-    0x1.921fb54442d18p-2,
-  },
-  { // Entry 612
-    -0x1.87de2a6aea962906d3d5839ea1a5bcf0p-2,
-    0x1.d906bcf328d463631d6cd2905d4b13f5p-1,
-    -0x1.921fb54442d18p-2,
-  },
-  { // Entry 613
-    0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
-    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
-    0x1.921fb54442d19p-2,
-  },
-  { // Entry 614
-    -0x1.87de2a6aea9637cf09bd1ce544b496eap-2,
-    0x1.d906bcf328d460536117fcbb30ea3e17p-1,
-    -0x1.921fb54442d19p-2,
-  },
-  { // Entry 615
-    0x1.6a09e667f3bcba99afb0135729457874p-1,
-    0x1.6a09e667f3bcd777b6461376ab523242p-1,
-    0x1.921fb54442d17p-1,
-  },
-  { // Entry 616
-    -0x1.6a09e667f3bcba99afb0135729457874p-1,
-    0x1.6a09e667f3bcd777b6461376ab523242p-1,
-    -0x1.921fb54442d17p-1,
-  },
-  { // Entry 617
-    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    0x1.921fb54442d18p-1,
-  },
-  { // Entry 618
-    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    -0x1.921fb54442d18p-1,
-  },
-  { // Entry 619
-    0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
-    0x1.6a09e667f3bcc0d717df943adef39253p-1,
-    0x1.921fb54442d19p-1,
-  },
-  { // Entry 620
-    -0x1.6a09e667f3bcd13a4e169292f607eee5p-1,
-    0x1.6a09e667f3bcc0d717df943adef39253p-1,
-    -0x1.921fb54442d19p-1,
-  },
-  { // Entry 621
-    0x1.fffffffffffffffffffffffffe5f56ffp-1,
-    0x1.469898cc51701b839a252049c0b8b50bp-52,
-    0x1.921fb54442d17p0,
-  },
-  { // Entry 622
-    -0x1.fffffffffffffffffffffffffe5f56ffp-1,
-    0x1.469898cc51701b839a252049c0b8b50bp-52,
-    -0x1.921fb54442d17p0,
-  },
-  { // Entry 623
-    0x1.ffffffffffffffffffffffffffec8831p-1,
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    0x1.921fb54442d18p0,
-  },
-  { // Entry 624
-    -0x1.ffffffffffffffffffffffffffec8831p-1,
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    -0x1.921fb54442d18p0,
-  },
-  { // Entry 625
-    0x1.ffffffffffffffffffffffffff79b963p-1,
-    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
-    0x1.921fb54442d19p0,
-  },
-  { // Entry 626
-    -0x1.ffffffffffffffffffffffffff79b963p-1,
-    -0x1.72cece675d1fc8f8cbb5bf6c7dbcfba0p-53,
-    -0x1.921fb54442d19p0,
-  },
-  { // Entry 627
-    0x1.469898cc51701b839a252049bfaeed42p-51,
-    -0x1.fffffffffffffffffffffffff97d5bffp-1,
-    0x1.921fb54442d17p1,
-  },
-  { // Entry 628
-    -0x1.469898cc51701b839a252049bfaeed42p-51,
-    -0x1.fffffffffffffffffffffffff97d5bffp-1,
-    -0x1.921fb54442d17p1,
-  },
-  { // Entry 629
-    0x1.1a62633145c06e0e689481270436e2edp-53,
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    0x1.921fb54442d18p1,
-  },
-  { // Entry 630
-    -0x1.1a62633145c06e0e689481270436e2edp-53,
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    -0x1.921fb54442d18p1,
-  },
-  { // Entry 631
-    -0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
-    -0x1.fffffffffffffffffffffffffde6e58cp-1,
-    0x1.921fb54442d19p1,
-  },
-  { // Entry 632
-    0x1.72cece675d1fc8f8cbb5bf6c7d5bbc5cp-52,
-    -0x1.fffffffffffffffffffffffffde6e58cp-1,
-    -0x1.921fb54442d19p1,
-  },
-  { // Entry 633
-    -0x1.469898cc51701b839a252049bb87ce1bp-50,
-    0x1.ffffffffffffffffffffffffe5f56ffep-1,
-    0x1.921fb54442d17p2,
-  },
-  { // Entry 634
-    0x1.469898cc51701b839a252049bb87ce1bp-50,
-    0x1.ffffffffffffffffffffffffe5f56ffep-1,
-    -0x1.921fb54442d17p2,
-  },
-  { // Entry 635
-    -0x1.1a62633145c06e0e68948127040bf003p-52,
-    0x1.fffffffffffffffffffffffffec88317p-1,
-    0x1.921fb54442d18p2,
-  },
-  { // Entry 636
-    0x1.1a62633145c06e0e68948127040bf003p-52,
-    0x1.fffffffffffffffffffffffffec88317p-1,
-    -0x1.921fb54442d18p2,
-  },
-  { // Entry 637
-    0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
-    0x1.fffffffffffffffffffffffff79b9631p-1,
-    0x1.921fb54442d19p2,
-  },
-  { // Entry 638
-    -0x1.72cece675d1fc8f8cbb5bf6c7bd6bf4dp-51,
-    0x1.fffffffffffffffffffffffff79b9631p-1,
-    -0x1.921fb54442d19p2,
-  },
-  { // Entry 639
-    -0x1.469898cc51701b839a252049aaeb5182p-49,
-    0x1.ffffffffffffffffffffffff97d5bff8p-1,
-    0x1.921fb54442d17p3,
-  },
-  { // Entry 640
-    0x1.469898cc51701b839a252049aaeb5182p-49,
-    0x1.ffffffffffffffffffffffff97d5bff8p-1,
-    -0x1.921fb54442d17p3,
-  },
-  { // Entry 641
-    -0x1.1a62633145c06e0e689481270360245cp-51,
-    0x1.fffffffffffffffffffffffffb220c5ep-1,
-    0x1.921fb54442d18p3,
-  },
-  { // Entry 642
-    0x1.1a62633145c06e0e689481270360245cp-51,
-    0x1.fffffffffffffffffffffffffb220c5ep-1,
-    -0x1.921fb54442d18p3,
-  },
-  { // Entry 643
-    0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
-    0x1.ffffffffffffffffffffffffde6e58c4p-1,
-    0x1.921fb54442d19p3,
-  },
-  { // Entry 644
-    -0x1.72cece675d1fc8f8cbb5bf6c75c2cb0ep-50,
-    0x1.ffffffffffffffffffffffffde6e58c4p-1,
-    -0x1.921fb54442d19p3,
-  },
-  { // Entry 645
-    -0x1.469898cc51701b839a25204968795f1cp-48,
-    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
-    0x1.921fb54442d17p4,
-  },
-  { // Entry 646
-    0x1.469898cc51701b839a25204968795f1cp-48,
-    0x1.fffffffffffffffffffffffe5f56ffe1p-1,
-    -0x1.921fb54442d17p4,
-  },
-  { // Entry 647
-    -0x1.1a62633145c06e0e6894812700b0f5bfp-50,
-    0x1.ffffffffffffffffffffffffec88317ap-1,
-    0x1.921fb54442d18p4,
-  },
-  { // Entry 648
-    0x1.1a62633145c06e0e6894812700b0f5bfp-50,
-    0x1.ffffffffffffffffffffffffec88317ap-1,
-    -0x1.921fb54442d18p4,
-  },
-  { // Entry 649
-    0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
-    0x1.ffffffffffffffffffffffff79b96313p-1,
-    0x1.921fb54442d19p4,
-  },
-  { // Entry 650
-    -0x1.72cece675d1fc8f8cbb5bf6c5d72fa11p-49,
-    0x1.ffffffffffffffffffffffff79b96313p-1,
-    -0x1.921fb54442d19p4,
-  },
-  { // Entry 651
-    -0x1.469898cc51701b839a2520485eb19584p-47,
-    0x1.fffffffffffffffffffffff97d5bff87p-1,
-    0x1.921fb54442d17p5,
-  },
-  { // Entry 652
-    0x1.469898cc51701b839a2520485eb19584p-47,
-    0x1.fffffffffffffffffffffff97d5bff87p-1,
-    -0x1.921fb54442d17p5,
-  },
-  { // Entry 653
-    -0x1.1a62633145c06e0e68948126f5f43b4cp-49,
-    0x1.ffffffffffffffffffffffffb220c5e9p-1,
-    0x1.921fb54442d18p5,
-  },
-  { // Entry 654
-    0x1.1a62633145c06e0e68948126f5f43b4cp-49,
-    0x1.ffffffffffffffffffffffffb220c5e9p-1,
-    -0x1.921fb54442d18p5,
-  },
-  { // Entry 655
-    0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
-    0x1.fffffffffffffffffffffffde6e58c4cp-1,
-    0x1.921fb54442d19p5,
-  },
-  { // Entry 656
-    -0x1.72cece675d1fc8f8cbb5bf6bfc33b61fp-48,
-    0x1.fffffffffffffffffffffffde6e58c4cp-1,
-    -0x1.921fb54442d19p5,
-  },
-  { // Entry 657
-    -0x1.469898cc51701b839a25204437926f25p-46,
-    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
-    0x1.921fb54442d17p6,
-  },
-  { // Entry 658
-    0x1.469898cc51701b839a25204437926f25p-46,
-    0x1.ffffffffffffffffffffffe5f56ffe1dp-1,
-    -0x1.921fb54442d17p6,
-  },
-  { // Entry 659
-    -0x1.1a62633145c06e0e68948126cb01517dp-48,
-    0x1.fffffffffffffffffffffffec88317a7p-1,
-    0x1.921fb54442d18p6,
-  },
-  { // Entry 660
-    0x1.1a62633145c06e0e68948126cb01517dp-48,
-    0x1.fffffffffffffffffffffffec88317a7p-1,
-    -0x1.921fb54442d18p6,
-  },
-  { // Entry 661
-    0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
-    0x1.fffffffffffffffffffffff79b963131p-1,
-    0x1.921fb54442d19p6,
-  },
-  { // Entry 662
-    -0x1.72cece675d1fc8f8cbb5bf6a7736a658p-47,
-    0x1.fffffffffffffffffffffff79b963131p-1,
-    -0x1.921fb54442d19p6,
-  },
-  { // Entry 663
-    -0x1.469898cc51701b839a2520339b15d5aap-45,
-    0x1.ffffffffffffffffffffff97d5bff874p-1,
-    0x1.921fb54442d17p7,
-  },
-  { // Entry 664
-    0x1.469898cc51701b839a2520339b15d5aap-45,
-    0x1.ffffffffffffffffffffff97d5bff874p-1,
-    -0x1.921fb54442d17p7,
-  },
-  { // Entry 665
-    -0x1.1a62633145c06e0e689481261f35aa43p-47,
-    0x1.fffffffffffffffffffffffb220c5e9dp-1,
-    0x1.921fb54442d18p7,
-  },
-  { // Entry 666
-    0x1.1a62633145c06e0e689481261f35aa43p-47,
-    0x1.fffffffffffffffffffffffb220c5e9dp-1,
-    -0x1.921fb54442d18p7,
-  },
-  { // Entry 667
-    0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
-    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
-    0x1.921fb54442d19p7,
-  },
-  { // Entry 668
-    -0x1.72cece675d1fc8f8cbb5bf646342673ap-46,
-    0x1.ffffffffffffffffffffffde6e58c4c6p-1,
-    -0x1.921fb54442d19p7,
-  },
-  { // Entry 669
-    0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
-    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
-    0x1.2d97c7f3321d1p1,
-  },
-  { // Entry 670
-    -0x1.6a09e667f3bcffa60c0f53340fd24904p-1,
-    -0x1.6a09e667f3bc926b59e6d399bd1b906cp-1,
-    -0x1.2d97c7f3321d1p1,
-  },
-  { // Entry 671
-    0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
-    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
-    0x1.2d97c7f3321d2p1,
-  },
-  { // Entry 672
-    -0x1.6a09e667f3bcd264cf4254bc7ab0c9fap-1,
-    -0x1.6a09e667f3bcbfac96b3d2115a3c3e21p-1,
-    -0x1.2d97c7f3321d2p1,
-  },
-  { // Entry 673
-    0x1.6a09e667f3bca52392755644dfe72357p-1,
-    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
-    0x1.2d97c7f3321d3p1,
-  },
-  { // Entry 674
-    -0x1.6a09e667f3bca52392755644dfe72357p-1,
-    -0x1.6a09e667f3bcecedd380d088f1b4c43cp-1,
-    -0x1.2d97c7f3321d3p1,
-  },
-  { // Entry 675
-    -0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
-    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
-    0x1.f6a7a2955385dp1,
-  },
-  { // Entry 676
-    0x1.6a09e667f3bc8c2df1b752b606a0a472p-1,
-    -0x1.6a09e667f3bd05e3743ed417c44fba46p-1,
-    -0x1.f6a7a2955385dp1,
-  },
-  { // Entry 677
-    -0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
-    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
-    0x1.f6a7a2955385ep1,
-  },
-  { // Entry 678
-    0x1.6a09e667f3bcb96f2e84512da488ff2dp-1,
-    -0x1.6a09e667f3bcd8a23771d5a02ff5e843p-1,
-    -0x1.f6a7a2955385ep1,
-  },
-  { // Entry 679
-    -0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
-    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
-    0x1.f6a7a2955385fp1,
-  },
-  { // Entry 680
-    0x1.6a09e667f3bce6b06b514fa53cc9324fp-1,
-    -0x1.6a09e667f3bcab60faa4d72895f3eea5p-1,
-    -0x1.f6a7a2955385fp1,
-  },
-  { // Entry 681
-    -0x1.ffffffffffffffffffffffffe8b27b6ap-1,
-    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
-    0x1.2d97c7f3321d1p2,
-  },
-  { // Entry 682
-    0x1.ffffffffffffffffffffffffe8b27b6ap-1,
-    -0x1.34f272993d1414a2b39bd8374c1d1631p-50,
-    -0x1.2d97c7f3321d1p2,
-  },
-  { // Entry 683
-    -0x1.ffffffffffffffffffffffffff50c9bdp-1,
-    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
-    0x1.2d97c7f3321d2p2,
-  },
-  { // Entry 684
-    0x1.ffffffffffffffffffffffffff50c9bdp-1,
-    -0x1.a79394c9e8a0a5159cdec1ba86377c92p-53,
-    -0x1.2d97c7f3321d2p2,
-  },
-  { // Entry 685
-    -0x1.fffffffffffffffffffffffff5ef1810p-1,
-    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
-    0x1.2d97c7f3321d3p2,
-  },
-  { // Entry 686
-    0x1.fffffffffffffffffffffffff5ef1810p-1,
-    0x1.961b1acd85d7d6ba98c84f915bbcbc6cp-51,
-    -0x1.2d97c7f3321d3p2,
-  },
-  { // Entry 687
-    -0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
-    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
-    0x1.5fdbbe9bba774p2,
-  },
-  { // Entry 688
-    0x1.6a09e667f3bd3962193b5373069ba0c2p-1,
-    0x1.6a09e667f3bc58af4cbad35aabb200f4p-1,
-    -0x1.5fdbbe9bba774p2,
-  },
-  { // Entry 689
-    -0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
-    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
-    0x1.5fdbbe9bba775p2,
-  },
-  { // Entry 690
-    0x1.6a09e667f3bcdedf9fa15683e51f7e60p-1,
-    0x1.6a09e667f3bcb331c654d049eeba380fp-1,
-    -0x1.5fdbbe9bba775p2,
-  },
-  { // Entry 691
-    -0x1.6a09e667f3bc845d26075994ad02bd98p-1,
-    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
-    0x1.5fdbbe9bba776p2,
-  },
-  { // Entry 692
-    0x1.6a09e667f3bc845d26075994ad02bd98p-1,
-    0x1.6a09e667f3bd0db43feecd391b21d0c4p-1,
-    -0x1.5fdbbe9bba776p2,
-  },
-  { // Entry 693
-    0x1.6a09e667f3bc5271e48b5276f438579fp-1,
-    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
-    0x1.c463abeccb2bap2,
-  },
-  { // Entry 694
-    -0x1.6a09e667f3bc5271e48b5276f438579fp-1,
-    0x1.6a09e667f3bd3f9f816ad456ba1a54a9p-1,
-    -0x1.c463abeccb2bap2,
-  },
-  { // Entry 695
-    0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
-    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
-    0x1.c463abeccb2bbp2,
-  },
-  { // Entry 696
-    -0x1.6a09e667f3bcacf45e254f6638cfe8c6p-1,
-    0x1.6a09e667f3bce51d07d0d7679a2d8c53p-1,
-    -0x1.c463abeccb2bbp2,
-  },
-  { // Entry 697
-    0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
-    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
-    0x1.c463abeccb2bcp2,
-  },
-  { // Entry 698
-    -0x1.6a09e667f3bd0776d7bf4c5566c6db87p-1,
-    0x1.6a09e667f3bc8a9a8e36da7863a02597p-1,
-    -0x1.c463abeccb2bcp2,
-  },
-  { // Entry 699
-    0x1.ffffffffffffffffffffffffe31174f5p-1,
-    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
-    0x1.f6a7a2955385dp2,
-  },
-  { // Entry 700
-    -0x1.ffffffffffffffffffffffffe31174f5p-1,
-    0x1.583ebeff65cc226480ae685c2ad9afdap-50,
-    -0x1.f6a7a2955385dp2,
-  },
-  { // Entry 701
-    0x1.fffffffffffffffffffffffffe194cd4p-1,
-    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
-    0x1.f6a7a2955385ep2,
-  },
-  { // Entry 702
-    -0x1.fffffffffffffffffffffffffe194cd4p-1,
-    0x1.60fafbfd9730899202b9a170c4e6a849p-52,
-    -0x1.f6a7a2955385ep2,
-  },
-  { // Entry 703
-    0x1.fffffffffffffffffffffffff92124b4p-1,
-    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
-    0x1.f6a7a2955385fp2,
-  },
-  { // Entry 704
-    -0x1.fffffffffffffffffffffffff92124b4p-1,
-    -0x1.4f8282013467bb36fea32f479bd48f4ap-51,
-    -0x1.f6a7a2955385fp2,
-  },
-  { // Entry 705
-    0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
-    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
-    0x1.1475cc9eedeffp3,
-  },
-  { // Entry 706
-    -0x1.6a09e667f3bdfae1dcce4f18665681c6p-1,
-    -0x1.6a09e667f3bb972f8927d7b46c737485p-1,
-    -0x1.1475cc9eedeffp3,
-  },
-  { // Entry 707
-    0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
-    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
-    0x1.1475cc9eedfp3,
-  },
-  { // Entry 708
-    -0x1.6a09e667f3bd45dce99a553a6d7d8065p-1,
-    -0x1.6a09e667f3bc4c347c5bd1933ca3261fp-1,
-    -0x1.1475cc9eedfp3,
-  },
-  { // Entry 709
-    0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
-    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
-    0x1.1475cc9eedf01p3,
-  },
-  { // Entry 710
-    -0x1.6a09e667f3bc90d7f6665b5c1a22056ap-1,
-    -0x1.6a09e667f3bd01396f8fcb71b2505e1fp-1,
-    -0x1.1475cc9eedf01p3,
-  },
-  { // Entry 711
-    0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
-    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
-    0x1.2d97c7f3321d1p3,
-  },
-  { // Entry 712
-    -0x1.34f272993d1414a2b39bd8373e0d6b94p-49,
-    -0x1.ffffffffffffffffffffffffa2c9eda8p-1,
-    -0x1.2d97c7f3321d1p3,
-  },
-  { // Entry 713
-    0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
-    -0x1.fffffffffffffffffffffffffd4326f5p-1,
-    0x1.2d97c7f3321d2p3,
-  },
-  { // Entry 714
-    -0x1.a79394c9e8a0a5159cdec1ba85a688bdp-52,
-    -0x1.fffffffffffffffffffffffffd4326f5p-1,
-    -0x1.2d97c7f3321d2p3,
-  },
-  { // Entry 715
-    -0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
-    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
-    0x1.2d97c7f3321d3p3,
-  },
-  { // Entry 716
-    0x1.961b1acd85d7d6ba98c84f9153c0cc16p-50,
-    -0x1.ffffffffffffffffffffffffd7bc6041p-1,
-    -0x1.2d97c7f3321d3p3,
-  },
-  { // Entry 717
-    -0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
-    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
-    0x1.46b9c347764a2p3,
-  },
-  { // Entry 718
-    0x1.6a09e667f3bb90f220f856d0b1a406c3p-1,
-    -0x1.6a09e667f3be011f44fdcffc167f7140p-1,
-    -0x1.46b9c347764a2p3,
-  },
-  { // Entry 719
-    -0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
-    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
-    0x1.46b9c347764a3p3,
-  },
-  { // Entry 720
-    0x1.6a09e667f3bc45f7142c50af84f26c75p-1,
-    -0x1.6a09e667f3bd4c1a51c9d61e20c523f7p-1,
-    -0x1.46b9c347764a3p3,
-  },
-  { // Entry 721
-    -0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
-    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
-    0x1.46b9c347764a4p3,
-  },
-  { // Entry 722
-    0x1.6a09e667f3bcfafc07604a8dfdbe588dp-1,
-    -0x1.6a09e667f3bc97155e95dc3fd0885d14p-1,
-    -0x1.46b9c347764a4p3,
-  },
-  { // Entry 723
-    -0x1.ffffffffffffffffffffffff9d634e9fp-1,
-    -0x1.3dc585b2c742181326e07c40748873bbp-49,
-    0x1.5fdbbe9bba774p3,
-  },
-  { // Entry 724
-    0x1.ffffffffffffffffffffffff9d634e9fp-1,
-    -0x1.3dc585b2c742181326e07c40748873bbp-49,
-    -0x1.5fdbbe9bba774p3,
-  },
-  { // Entry 725
-    -0x1.fffffffffffffffffffffffffc461178p-1,
-    -0x1.ee2c2d963a10c0993703e20446463301p-52,
-    0x1.5fdbbe9bba775p3,
-  },
-  { // Entry 726
-    0x1.fffffffffffffffffffffffffc461178p-1,
-    -0x1.ee2c2d963a10c0993703e20446463301p-52,
-    -0x1.5fdbbe9bba775p3,
-  },
-  { // Entry 727
-    -0x1.ffffffffffffffffffffffffdb28d451p-1,
-    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
-    0x1.5fdbbe9bba776p3,
-  },
-  { // Entry 728
-    0x1.ffffffffffffffffffffffffdb28d451p-1,
-    0x1.8474f49a717bcfd9b23f077ee4d090cfp-50,
-    -0x1.5fdbbe9bba776p3,
-  },
-  { // Entry 729
-    -0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
-    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
-    0x1.78fdb9effea45p3,
-  },
-  { // Entry 730
-    0x1.6a09e667f3be075cad2d50dfc68cd88fp-1,
-    0x1.6a09e667f3bb8ab4b8c8d5ecf6b910d6p-1,
-    -0x1.78fdb9effea45p3,
-  },
-  { // Entry 731
-    -0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
-    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
-    0x1.78fdb9effea46p3,
-  },
-  { // Entry 732
-    0x1.6a09e667f3bd5257b9f95701d3f13f5dp-1,
-    0x1.6a09e667f3bc3fb9abfccfcbcd262aa0p-1,
-    -0x1.78fdb9effea46p3,
-  },
-  { // Entry 733
-    -0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
-    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
-    0x1.78fdb9effea47p3,
-  },
-  { // Entry 734
-    0x1.6a09e667f3bc9d52c6c55d2386d32c92p-1,
-    0x1.6a09e667f3bcf4be9f30c9aa4910cacfp-1,
-    -0x1.78fdb9effea47p3,
-  },
-  { // Entry 735
-    0x1.6a09e667f3bb8477509955093bb292bep-1,
-    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
-    0x1.ab41b09886fe8p3,
-  },
-  { // Entry 736
-    -0x1.6a09e667f3bb8477509955093bb292bep-1,
-    0x1.6a09e667f3be0d9a155cd1c3767eb7b3p-1,
-    -0x1.ab41b09886fe8p3,
-  },
-  { // Entry 737
-    0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
-    0x1.6a09e667f3bd58952228d7e58701d299p-1,
-    0x1.ab41b09886fe9p3,
-  },
-  { // Entry 738
-    -0x1.6a09e667f3bc397c43cd4ee8153e60a0p-1,
-    0x1.6a09e667f3bd58952228d7e58701d299p-1,
-    -0x1.ab41b09886fe9p3,
-  },
-  { // Entry 739
-    0x1.6a09e667f3bcee81370148c69447b4e7p-1,
-    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
-    0x1.ab41b09886feap3,
-  },
-  { // Entry 740
-    -0x1.6a09e667f3bcee81370148c69447b4e7p-1,
-    0x1.6a09e667f3bca3902ef4de073d0273e6p-1,
-    -0x1.ab41b09886feap3,
-  },
-  { // Entry 741
-    0x1.ffffffffffffffffffffffff922141b4p-1,
-    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
-    0x1.c463abeccb2bap3,
-  },
-  { // Entry 742
-    -0x1.ffffffffffffffffffffffff922141b4p-1,
-    0x1.4f6babe5db9e1ef40d69c452e135591dp-49,
-    -0x1.c463abeccb2bap3,
-  },
-  { // Entry 743
-    0x1.fffffffffffffffffffffffff9d717a7p-1,
-    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
-    0x1.c463abeccb2bbp3,
-  },
-  { // Entry 744
-    -0x1.fffffffffffffffffffffffff9d717a7p-1,
-    0x1.3daeaf976e787bd035a7114be387b5c3p-51,
-    -0x1.c463abeccb2bbp3,
-  },
-  { // Entry 745
-    0x1.ffffffffffffffffffffffffe18ced9ap-1,
-    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
-    0x1.c463abeccb2bcp3,
-  },
-  { // Entry 746
-    -0x1.ffffffffffffffffffffffffe18ced9ap-1,
-    -0x1.6128a83448c3c217e52c775a0698d26ap-50,
-    -0x1.c463abeccb2bcp3,
-  },
-  { // Entry 747
-    0x1.6a09e667f3be13d77d8c52a726550eacp-1,
-    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
-    0x1.dd85a7410f58bp3,
-  },
-  { // Entry 748
-    -0x1.6a09e667f3be13d77d8c52a726550eacp-1,
-    -0x1.6a09e667f3bb7e39e869d42580908c7cp-1,
-    -0x1.dd85a7410f58bp3,
-  },
-  { // Entry 749
-    0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
-    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
-    0x1.dd85a7410f58cp3,
-  },
-  { // Entry 750
-    -0x1.6a09e667f3bd5ed28a5858c939f6ddaap-1,
-    -0x1.6a09e667f3bc333edb9dce045d3b0e75p-1,
-    -0x1.dd85a7410f58cp3,
-  },
-  { // Entry 751
-    0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
-    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
-    0x1.dd85a7410f58dp3,
-  },
-  { // Entry 752
-    -0x1.6a09e667f3bca9cd97245eeaf316330ep-1,
-    -0x1.6a09e667f3bce843ced1c7e2df6316d4p-1,
-    -0x1.dd85a7410f58dp3,
-  },
-  { // Entry 753
-    0x1.583ebeff65cc226480ae685c1765dec1p-49,
-    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
-    0x1.f6a7a2955385dp3,
-  },
-  { // Entry 754
-    -0x1.583ebeff65cc226480ae685c1765dec1p-49,
-    -0x1.ffffffffffffffffffffffff8c45d3d4p-1,
-    -0x1.f6a7a2955385dp3,
-  },
-  { // Entry 755
-    0x1.60fafbfd9730899202b9a170c3971e86p-51,
-    -0x1.fffffffffffffffffffffffff8653353p-1,
-    0x1.f6a7a2955385ep3,
-  },
-  { // Entry 756
-    -0x1.60fafbfd9730899202b9a170c3971e86p-51,
-    -0x1.fffffffffffffffffffffffff8653353p-1,
-    -0x1.f6a7a2955385ep3,
-  },
-  { // Entry 757
-    -0x1.4f8282013467bb36fea32f479753fe7ap-50,
-    -0x1.ffffffffffffffffffffffffe48492d3p-1,
-    0x1.f6a7a2955385fp3,
-  },
-  { // Entry 758
-    0x1.4f8282013467bb36fea32f479753fe7ap-50,
-    -0x1.ffffffffffffffffffffffffe48492d3p-1,
-    -0x1.f6a7a2955385fp3,
-  },
-  { // Entry 759
-    -0x1.6a09e667f3ba0df299d25f82f639251fp-1,
-    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
-    0x1.07e4cef4cbd96p4,
-  },
-  { // Entry 760
-    0x1.6a09e667f3ba0df299d25f82f639251fp-1,
-    -0x1.6a09e667f3bf841ecc23c74599076a81p-1,
-    -0x1.07e4cef4cbd96p4,
-  },
-  { // Entry 761
-    -0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
-    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
-    0x1.07e4cef4cbd97p4,
-  },
-  { // Entry 762
-    0x1.6a09e667f3bb77fc803a5341c552fe0fp-1,
-    -0x1.6a09e667f3be1a14e5bbd38ad60fdd7bp-1,
-    -0x1.07e4cef4cbd97p4,
-  },
-  { // Entry 763
-    -0x1.6a09e667f3bce20666a246ff2a62f097p-1,
-    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
-    0x1.07e4cef4cbd98p4,
-  },
-  { // Entry 764
-    0x1.6a09e667f3bce20666a246ff2a62f097p-1,
-    -0x1.6a09e667f3bcb00aff53dfcea90e6a0cp-1,
-    -0x1.07e4cef4cbd98p4,
-  },
-  { // Entry 765
-    -0x1.fffffffffffffffffffffffd2531a43dp-1,
-    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
-    0x1.1475cc9eedeffp4,
-  },
-  { // Entry 766
-    0x1.fffffffffffffffffffffffd2531a43dp-1,
-    -0x1.b088e90c77fd12ea79f98631e6f0b74bp-48,
-    -0x1.1475cc9eedeffp4,
-  },
-  { // Entry 767
-    -0x1.ffffffffffffffffffffffff86437656p-1,
-    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
-    0x1.1475cc9eedfp4,
-  },
-  { // Entry 768
-    0x1.ffffffffffffffffffffffff86437656p-1,
-    -0x1.6111d218effa25d4f3f30c654d7c36a1p-49,
-    -0x1.1475cc9eedfp4,
-  },
-  { // Entry 769
-    -0x1.ffffffffffffffffffffffffe755486fp-1,
-    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
-    0x1.1475cc9eedf01p4,
-  },
-  { // Entry 770
-    0x1.ffffffffffffffffffffffffe755486fp-1,
-    0x1.3ddc5bce200bb4561819e73527f5a6d7p-50,
-    -0x1.1475cc9eedf01p4,
-  },
-  { // Entry 771
-    -0x1.6a09e667f3bed557411f4e4c114d7357p-1,
-    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
-    0x1.2106ca4910068p4,
-  },
-  { // Entry 772
-    0x1.6a09e667f3bed557411f4e4c114d7357p-1,
-    0x1.6a09e667f3babcba24d6d87ecc8f83b4p-1,
-    -0x1.2106ca4910068p4,
-  },
-  { // Entry 773
-    -0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
-    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
-    0x1.2106ca4910069p4,
-  },
-  { // Entry 774
-    0x1.6a09e667f3bd6b4d5ab75a909f8e5b4cp-1,
-    0x1.6a09e667f3bc26c40b3ecc3cece1d1a0p-1,
-    -0x1.2106ca4910069p4,
-  },
-  { // Entry 775
-    -0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
-    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
-    0x1.2106ca491006ap4,
-  },
-  { // Entry 776
-    0x1.6a09e667f3bc0143744f66d3c3c55cd9p-1,
-    0x1.6a09e667f3bd90cdf1a6bff9a32a3923p-1,
-    -0x1.2106ca491006ap4,
-  },
-  { // Entry 777
-    -0x1.34f272993d1414a2b39bd83705cec120p-48,
-    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
-    0x1.2d97c7f3321d1p4,
-  },
-  { // Entry 778
-    0x1.34f272993d1414a2b39bd83705cec120p-48,
-    0x1.fffffffffffffffffffffffe8b27b6a2p-1,
-    -0x1.2d97c7f3321d1p4,
-  },
-  { // Entry 779
-    -0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
-    0x1.fffffffffffffffffffffffff50c9bd4p-1,
-    0x1.2d97c7f3321d2p4,
-  },
-  { // Entry 780
-    0x1.a79394c9e8a0a5159cdec1ba8362b968p-51,
-    0x1.fffffffffffffffffffffffff50c9bd4p-1,
-    -0x1.2d97c7f3321d2p4,
-  },
-  { // Entry 781
-    0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
-    0x1.ffffffffffffffffffffffff5ef18107p-1,
-    0x1.2d97c7f3321d3p4,
-  },
-  { // Entry 782
-    -0x1.961b1acd85d7d6ba98c84f9133d10abep-49,
-    0x1.ffffffffffffffffffffffff5ef18107p-1,
-    -0x1.2d97c7f3321d3p4,
-  },
-  { // Entry 783
-    0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
-    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
-    0x1.3a28c59d54339p4,
-  },
-  { // Entry 784
-    -0x1.6a09e667f3ba0177c9735dbb72f09f65p-1,
-    0x1.6a09e667f3bf90999c82c90cebaf9f3fp-1,
-    -0x1.3a28c59d54339p4,
-  },
-  { // Entry 785
-    0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
-    0x1.6a09e667f3be268fb61ad5523532e298p-1,
-    0x1.3a28c59d5433ap4,
-  },
-  { // Entry 786
-    -0x1.6a09e667f3bb6b81afdb517a4e8548b4p-1,
-    0x1.6a09e667f3be268fb61ad5523532e298p-1,
-    -0x1.3a28c59d5433ap4,
-  },
-  { // Entry 787
-    0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
-    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
-    0x1.3a28c59d5433bp4,
-  },
-  { // Entry 788
-    -0x1.6a09e667f3bcd58b96434537c0100b9bp-1,
-    0x1.6a09e667f3bcbc85cfb2e19614ac3f88p-1,
-    -0x1.3a28c59d5433bp4,
-  },
-  { // Entry 789
-    0x1.fffffffffffffffffffffffd0711f437p-1,
-    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
-    0x1.46b9c347764a2p4,
-  },
-  { // Entry 790
-    -0x1.fffffffffffffffffffffffd0711f437p-1,
-    0x1.b95bfc26022b165aed3e2a3b12382479p-48,
-    -0x1.46b9c347764a2p4,
-  },
-  { // Entry 791
-    0x1.ffffffffffffffffffffffff79c9ec83p-1,
-    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
-    0x1.46b9c347764a3p4,
-  },
-  { // Entry 792
-    -0x1.ffffffffffffffffffffffff79c9ec83p-1,
-    0x1.72b7f84c04562cb5da7c5477b957adebp-49,
-    -0x1.46b9c347764a3p4,
-  },
-  { // Entry 793
-    0x1.ffffffffffffffffffffffffec81e4cfp-1,
-    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
-    0x1.46b9c347764a4p4,
-  },
-  { // Entry 794
-    -0x1.ffffffffffffffffffffffffec81e4cfp-1,
-    -0x1.1a900f67f753a6944b07571048f1cad2p-50,
-    -0x1.46b9c347764a4p4,
-  },
-  { // Entry 795
-    0x1.6a09e667f3bee1d2117e501369fbffefp-1,
-    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
-    0x1.534ac0f19860bp4,
-  },
-  { // Entry 796
-    -0x1.6a09e667f3bee1d2117e501369fbffefp-1,
-    -0x1.6a09e667f3bab03f5477d6b74f4d55d5p-1,
-    -0x1.534ac0f19860bp4,
-  },
-  { // Entry 797
-    0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
-    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
-    0x1.534ac0f19860cp4,
-  },
-  { // Entry 798
-    -0x1.6a09e667f3bd77c82b165c5804b7b843p-1,
-    -0x1.6a09e667f3bc1a493adfca757c1a741fp-1,
-    -0x1.534ac0f19860cp4,
-  },
-  { // Entry 799
-    0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
-    -0x1.6a09e667f3bd84532147be323eddac01p-1,
-    0x1.534ac0f19860dp4,
-  },
-  { // Entry 800
-    -0x1.6a09e667f3bc0dbe44ae689b35698a2fp-1,
-    -0x1.6a09e667f3bd84532147be323eddac01p-1,
-    -0x1.534ac0f19860dp4,
-  },
-  { // Entry 801
-    0x1.3dc585b2c742181326e07c40375464dep-48,
-    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
-    0x1.5fdbbe9bba774p4,
-  },
-  { // Entry 802
-    -0x1.3dc585b2c742181326e07c40375464dep-48,
-    -0x1.fffffffffffffffffffffffe758d3a7cp-1,
-    -0x1.5fdbbe9bba774p4,
-  },
-  { // Entry 803
-    0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
-    -0x1.fffffffffffffffffffffffff11845e1p-1,
-    0x1.5fdbbe9bba775p4,
-  },
-  { // Entry 804
-    -0x1.ee2c2d963a10c0993703e20442ad7b8dp-51,
-    -0x1.fffffffffffffffffffffffff11845e1p-1,
-    -0x1.5fdbbe9bba775p4,
-  },
-  { // Entry 805
-    -0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
-    -0x1.ffffffffffffffffffffffff6ca35147p-1,
-    0x1.5fdbbe9bba776p4,
-  },
-  { // Entry 806
-    0x1.8474f49a717bcfd9b23f077ec8dd175bp-49,
-    -0x1.ffffffffffffffffffffffff6ca35147p-1,
-    -0x1.5fdbbe9bba776p4,
-  },
-  { // Entry 807
-    -0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
-    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
-    0x1.6c6cbc45dc8dcp4,
-  },
-  { // Entry 808
-    0x1.6a09e667f3b9f4fcf9145bf3ef39f901p-1,
-    -0x1.6a09e667f3bf9d146ce1cad43de9b352p-1,
-    -0x1.6c6cbc45dc8dcp4,
-  },
-  { // Entry 809
-    -0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
-    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
-    0x1.6c6cbc45dc8ddp4,
-  },
-  { // Entry 810
-    0x1.6a09e667f3bb5f06df7c4fb2d74972aep-1,
-    -0x1.6a09e667f3be330a8679d71993e7c709p-1,
-    -0x1.6c6cbc45dc8ddp4,
-  },
-  { // Entry 811
-    -0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
-    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
-    0x1.6c6cbc45dc8dep4,
-  },
-  { // Entry 812
-    0x1.6a09e667f3bcc910c5e44370554f05f4p-1,
-    -0x1.6a09e667f3bcc900a011e35d7fdbf459p-1,
-    -0x1.6c6cbc45dc8dep4,
-  },
-  { // Entry 813
-    -0x1.fffffffffffffffffffffffce85685bdp-1,
-    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
-    0x1.78fdb9effea45p4,
-  },
-  { // Entry 814
-    0x1.fffffffffffffffffffffffce85685bdp-1,
-    -0x1.c22f0f3f8c5919cb6082ce443cf95022p-48,
-    -0x1.78fdb9effea45p4,
-  },
-  { // Entry 815
-    -0x1.ffffffffffffffffffffffff6cb4a43dp-1,
-    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
-    0x1.78fdb9effea46p4,
-  },
-  { // Entry 816
-    0x1.ffffffffffffffffffffffff6cb4a43dp-1,
-    -0x1.845e1e7f18b23396c1059c8a24c2609cp-49,
-    -0x1.78fdb9effea46p4,
-  },
-  { // Entry 817
-    -0x1.fffffffffffffffffffffffff112c2bcp-1,
-    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
-    0x1.78fdb9effea47p4,
-  },
-  { // Entry 818
-    0x1.fffffffffffffffffffffffff112c2bcp-1,
-    0x1.ee8786039d3731a4fbe98dd6d32ff62ap-51,
-    -0x1.78fdb9effea47p4,
-  },
-  { // Entry 819
-    -0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
-    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
-    0x1.858eb79a20baep4,
-  },
-  { // Entry 820
-    0x1.6a09e667f3beee4ce1dd51dac23c6bdcp-1,
-    0x1.6a09e667f3baa3c48418d4efd19d074ap-1,
-    -0x1.858eb79a20baep4,
-  },
-  { // Entry 821
-    -0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
-    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
-    0x1.858eb79a20bafp4,
-  },
-  { // Entry 822
-    0x1.6a09e667f3bd8442fb755e1f6972f48fp-1,
-    0x1.6a09e667f3bc0dce6a80c8ae0ae4f5f3p-1,
-    -0x1.858eb79a20bafp4,
-  },
-  { // Entry 823
-    -0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
-    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
-    0x1.858eb79a20bb0p4,
-  },
-  { // Entry 824
-    0x1.6a09e667f3bc1a39150d6a62a69f96dap-1,
-    0x1.6a09e667f3bd77d850e8bc6ada22fe34p-1,
-    -0x1.858eb79a20bb0p4,
-  },
-  { // Entry 825
-    0x1.fa7299b17573d373c615096572a0de04p-1,
-    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
-    0x1.fffffffffffffp62,
-  },
-  { // Entry 826
-    -0x1.fa7299b17573d373c615096572a0de04p-1,
-    -0x1.2ccaf641d4261ea3ccd8d2a102dc3066p-3,
-    -0x1.fffffffffffffp62,
-  },
-  { // Entry 827
-    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    0x1.0p63,
-  },
-  { // Entry 828
-    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    -0x1.0p63,
-  },
-  { // Entry 829
-    0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
-    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
-    0x1.0000000000001p63,
-  },
-  { // Entry 830
-    -0x1.e456b818e7396b45989978d4b7ebf7b3p-1,
-    0x1.4c0622a6e35ddefd5f2b7700716a581fp-2,
-    -0x1.0000000000001p63,
-  },
-  { // Entry 831
-    -0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
-    0x1.4ab650b8c60734385375e22603fcdb10p-1,
-    0x1.fffffffffffffp26,
-  },
-  { // Entry 832
-    0x1.86dcca0d689e7b56ef79481be4a645c6p-1,
-    0x1.4ab650b8c60734385375e22603fcdb10p-1,
-    -0x1.fffffffffffffp26,
-  },
-  { // Entry 833
-    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    0x1.0p27,
-  },
-  { // Entry 834
-    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    -0x1.0p27,
-  },
-  { // Entry 835
-    -0x1.86dcc9155fe182d4515599426bb14b94p-1,
-    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
-    0x1.0000000000001p27,
-  },
-  { // Entry 836
-    0x1.86dcc9155fe182d4515599426bb14b94p-1,
-    0x1.4ab651ddeb9e61438382f02167ade4afp-1,
-    -0x1.0000000000001p27,
-  },
-  { // Entry 837
-    -0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
-    0x1.40ad67e777b1df0195189f50a8c26345p-1,
-    0x1.fffffffffffffp23,
-  },
-  { // Entry 838
-    0x1.8f22f84d42da1f57469dfaac44a8b73ap-1,
-    0x1.40ad67e777b1df0195189f50a8c26345p-1,
-    -0x1.fffffffffffffp23,
-  },
-  { // Entry 839
-    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    0x1.0p24,
-  },
-  { // Entry 840
-    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    -0x1.0p24,
-  },
-  { // Entry 841
-    -0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
-    0x1.40ad680ce2f924d716769d1064bc8defp-1,
-    0x1.0000000000001p24,
-  },
-  { // Entry 842
-    0x1.8f22f82f32985fe30699c6e12d9dfce2p-1,
-    0x1.40ad680ce2f924d716769d1064bc8defp-1,
-    -0x1.0000000000001p24,
-  },
-  { // Entry 843
-    -0x1.837b9dddc1eabd379d729f575fc1144cp-1,
-    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
-    0x1.fffffffffffffp1,
-  },
-  { // Entry 844
-    0x1.837b9dddc1eabd379d729f575fc1144cp-1,
-    -0x1.4eaa606db24c3cb5e15d7b19d5ee73a1p-1,
-    -0x1.fffffffffffffp1,
-  },
-  { // Entry 845
-    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    0x1.0p2,
-  },
-  { // Entry 846
-    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    -0x1.0p2,
-  },
-  { // Entry 847
-    -0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
-    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
-    0x1.0000000000001p2,
-  },
-  { // Entry 848
-    0x1.837b9dddc1eb3ab7819bc233db4697b5p-1,
-    -0x1.4eaa606db24bab67862a5261b7719dcfp-1,
-    -0x1.0000000000001p2,
-  },
-  { // Entry 849
-    0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
-    -0x1.aa2265753720101145230952e61c6f2cp-2,
-    0x1.fffffffffffffp0,
-  },
-  { // Entry 850
-    -0x1.d18f6ead1b446b4bcb73c2390b330d75p-1,
-    -0x1.aa2265753720101145230952e61c6f2cp-2,
-    -0x1.fffffffffffffp0,
-  },
-  { // Entry 851
-    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    0x1.0p1,
-  },
-  { // Entry 852
-    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    -0x1.0p1,
-  },
-  { // Entry 853
-    0x1.d18f6ead1b44435891f0c50e01826988p-1,
-    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
-    0x1.0000000000001p1,
-  },
-  { // Entry 854
-    -0x1.d18f6ead1b44435891f0c50e01826988p-1,
-    -0x1.aa2265753720bea70ea3f38c86db40afp-2,
-    -0x1.0000000000001p1,
-  },
-  { // Entry 855
-    0x1.aed548f090ced79c79cbf790441f8197p-1,
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    0x1.fffffffffffffp-1,
-  },
-  { // Entry 856
-    -0x1.aed548f090ced79c79cbf790441f8197p-1,
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    -0x1.fffffffffffffp-1,
-  },
-  { // Entry 857
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.0p0,
-  },
-  { // Entry 858
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.0p0,
-  },
-  { // Entry 859
-    0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    0x1.0000000000001p0,
-  },
-  { // Entry 860
-    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    -0x1.0000000000001p0,
-  },
-  { // Entry 861
-    0x1.eaee8744b05ef07cd0b9089130598314p-2,
-    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
-    0x1.fffffffffffffp-2,
-  },
-  { // Entry 862
-    -0x1.eaee8744b05ef07cd0b9089130598314p-2,
-    0x1.c1528065b7d4fdb158c9c4a6b3e4b740p-1,
-    -0x1.fffffffffffffp-2,
-  },
-  { // Entry 863
-    0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    0x1.0p-1,
-  },
-  { // Entry 864
-    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    -0x1.0p-1,
-  },
-  { // Entry 865
-    0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
-    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
-    0x1.0000000000001p-1,
-  },
-  { // Entry 866
-    -0x1.eaee8744b05f1a9c8cc291cd27981051p-2,
-    0x1.c1528065b7d4f22fc19e288479c36b27p-1,
-    -0x1.0000000000001p-1,
-  },
-  { // Entry 867
-    0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
-    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
-    0x1.fffffffffffffp-3,
-  },
-  { // Entry 868
-    -0x1.faaeed4f31575c27f39c1d7c012a4413p-3,
-    0x1.f01549f7deea184c5f1d210b6adbe56cp-1,
-    -0x1.fffffffffffffp-3,
-  },
-  { // Entry 869
-    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    0x1.0p-2,
-  },
-  { // Entry 870
-    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    -0x1.0p-2,
-  },
-  { // Entry 871
-    0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
-    0x1.f01549f7deea155458b92a4167aec7ffp-1,
-    0x1.0000000000001p-2,
-  },
-  { // Entry 872
-    -0x1.faaeed4f31578aa9f28b5a61f34dccb1p-3,
-    0x1.f01549f7deea155458b92a4167aec7ffp-1,
-    -0x1.0000000000001p-2,
-  },
-  { // Entry 873
-    0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
-    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
-    0x1.fffffffffffffp-4,
-  },
-  { // Entry 874
-    -0x1.feaaeee86ee34cc05eff28740ee7b469p-4,
-    0x1.fc015527d5bd371a12320249ca4dafd7p-1,
-    -0x1.fffffffffffffp-4,
-  },
-  { // Entry 875
-    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    0x1.0p-3,
-  },
-  { // Entry 876
-    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    -0x1.0p-3,
-  },
-  { // Entry 877
-    0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
-    0x1.fc015527d5bd365a92186b203507f9adp-1,
-    0x1.0000000000001p-3,
-  },
-  { // Entry 878
-    -0x1.feaaeee86ee37c607efae47dcc092c1cp-4,
-    0x1.fc015527d5bd365a92186b203507f9adp-1,
-    -0x1.0000000000001p-3,
-  },
-  { // Entry 879
-    0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
-    0x1.ff0015549f4d34da0b745dc7433145efp-1,
-    0x1.fffffffffffffp-5,
-  },
-  { // Entry 880
-    -0x1.ffaaaeeed4ed9b53a408c0f2bc02c8f9p-5,
-    0x1.ff0015549f4d34da0b745dc7433145efp-1,
-    -0x1.fffffffffffffp-5,
-  },
-  { // Entry 881
-    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    0x1.0p-4,
-  },
-  { // Entry 882
-    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    -0x1.0p-4,
-  },
-  { // Entry 883
-    0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
-    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
-    0x1.0000000000001p-4,
-  },
-  { // Entry 884
-    -0x1.ffaaaeeed4edcb3ba608afe1f8f4fa6bp-5,
-    0x1.ff0015549f4d34aa1373f7634ce87737p-1,
-    -0x1.0000000000001p-4,
-  },
-  { // Entry 885
-    0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
-    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
-    0x1.fffffffffffffp-6,
-  },
-  { // Entry 886
-    -0x1.ffeaaaeeee86d8ccfe368cd95e38f003p-6,
-    0x1.ffc00155527d2b16aeb09fb70636a10ap-1,
-    -0x1.fffffffffffffp-6,
-  },
-  { // Entry 887
-    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    0x1.0p-5,
-  },
-  { // Entry 888
-    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    -0x1.0p-5,
-  },
-  { // Entry 889
-    0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
-    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
-    0x1.0000000000001p-5,
-  },
-  { // Entry 890
-    -0x1.ffeaaaeeee8708c6fe568c951a428069p-6,
-    0x1.ffc00155527d2b0aaf309e1d6f0cfc4ep-1,
-    -0x1.0000000000001p-5,
-  },
-  { // Entry 891
-    0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
-    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
-    0x1.fffffffffffffp-7,
-  },
-  { // Entry 892
-    -0x1.fffaaaaeeeed3ed5c9c5ab6538f9cce0p-7,
-    0x1.fff000155549f4a38a2563ef344c3ff4p-1,
-    -0x1.fffffffffffffp-7,
-  },
-  { // Entry 893
-    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    0x1.0p-6,
-  },
-  { // Entry 894
-    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    -0x1.0p-6,
-  },
-  { // Entry 895
-    0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
-    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
-    0x1.0000000000001p-6,
-  },
-  { // Entry 896
-    -0x1.fffaaaaeeeed6ed449c7ab6427e8fdd4p-7,
-    0x1.fff000155549f4a08a2d63e8cde83db5p-1,
-    -0x1.0000000000001p-6,
-  },
-  { // Entry 897
-    0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
-    0x1.fffffff00000001555565549f49c9f4dp-1,
-    0x1.fffffffffffffp-15,
-  },
-  { // Entry 898
-    -0x1.fffffffaaaaa9aaeeeef6eed4ed442a4p-15,
-    0x1.fffffff00000001555565549f49c9f4dp-1,
-    -0x1.fffffffffffffp-15,
-  },
-  { // Entry 899
-    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    0x1.0p-14,
-  },
-  { // Entry 900
-    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    -0x1.0p-14,
-  },
-  { // Entry 901
-    0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
-    0x1.fffffff00000001555535549f4a49f4dp-1,
-    0x1.0000000000001p-14,
-  },
-  { // Entry 902
-    -0x1.fffffffaaaaacaaeeeedeeed4ed642a4p-15,
-    0x1.fffffff00000001555535549f4a49f4dp-1,
-    -0x1.0000000000001p-14,
-  },
-  { // Entry 903
-    0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
-    0x1.fffffffffffffc000000000000415555p-1,
-    0x1.fffffffffffffp-28,
-  },
-  { // Entry 904
-    -0x1.ffffffffffffeeaaaaaaaaaaaacaeeeep-28,
-    0x1.fffffffffffffc000000000000415555p-1,
-    -0x1.fffffffffffffp-28,
-  },
-  { // Entry 905
-    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    0x1.fffffffffffffc000000000000015555p-1,
-    0x1.0p-27,
-  },
-  { // Entry 906
-    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    0x1.fffffffffffffc000000000000015555p-1,
-    -0x1.0p-27,
-  },
-  { // Entry 907
-    0x1.0000000000000f555555555555357777p-27,
-    0x1.fffffffffffffbffffffffffff815555p-1,
-    0x1.0000000000001p-27,
-  },
-  { // Entry 908
-    -0x1.0000000000000f555555555555357777p-27,
-    0x1.fffffffffffffbffffffffffff815555p-1,
-    -0x1.0000000000001p-27,
-  },
-  { // Entry 909
-    0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
-    0x1.fffffffffffffff00000000000010015p-1,
-    0x1.fffffffffffffp-31,
-  },
-  { // Entry 910
-    -0x1.ffffffffffffeffaaaaaaaaaaaab2aaep-31,
-    0x1.fffffffffffffff00000000000010015p-1,
-    -0x1.fffffffffffffp-31,
-  },
-  { // Entry 911
-    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    0x1.fffffffffffffff00000000000000015p-1,
-    0x1.0p-30,
-  },
-  { // Entry 912
-    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    0x1.fffffffffffffff00000000000000015p-1,
-    -0x1.0p-30,
-  },
-  { // Entry 913
-    0x1.0000000000000ffd555555555554d557p-30,
-    0x1.ffffffffffffffeffffffffffffe0015p-1,
-    0x1.0000000000001p-30,
-  },
-  { // Entry 914
-    -0x1.0000000000000ffd555555555554d557p-30,
-    0x1.ffffffffffffffeffffffffffffe0015p-1,
-    -0x1.0000000000001p-30,
-  },
-  { // Entry 915
-    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    -0x1.fffffffffffffp1023,
-  },
-  { // Entry 916
-    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    0x1.fffffffffffffp1023,
-  },
-  { // Entry 917
-    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    0x1.fffffffffffffp1023,
-  },
-  { // Entry 918
-    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    -0x1.fffffffffffffp1023,
-  },
-  { // Entry 919
-    0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    0x1.fffffffffffffp1023,
-  },
-  { // Entry 920
-    -0x1.452fc98b34e96b61139b09a7c84a44bdp-8,
-    -0x1.fffe62ecfab753c071b2680e1e26bbcep-1,
-    -0x1.fffffffffffffp1023,
-  },
-  { // Entry 921
-    0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
-    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
-    0x1.ffffffffffffep1023,
-  },
-  { // Entry 922
-    -0x1.daa3677c6ee8a22eb6c4b12ca10ce021p-1,
-    0x1.7ffdfb4c5308f777cf774c733b256695p-2,
-    -0x1.ffffffffffffep1023,
-  },
-  { // Entry 923
-    0x1.1a62633145c06e0e689481270436e2edp-53,
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    0x1.921fb54442d18p1,
-  },
-  { // Entry 924
-    -0x1.1a62633145c06e0e689481270436e2edp-53,
-    -0x1.ffffffffffffffffffffffffffb220c5p-1,
-    -0x1.921fb54442d18p1,
-  },
-  { // Entry 925
-    0x1.ffffffffffffffffffffffffffec8831p-1,
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    0x1.921fb54442d18p0,
-  },
-  { // Entry 926
-    -0x1.ffffffffffffffffffffffffffec8831p-1,
-    0x1.1a62633145c06e0e6894812704419fa8p-54,
-    -0x1.921fb54442d18p0,
-  },
-  { // Entry 927
-    0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    0x1.0000000000001p0,
-  },
-  { // Entry 928
-    -0x1.aed548f090cef18bb5e3871a14d94609p-1,
-    0x1.14a280fb50689e362ffdd221e2551035p-1,
-    -0x1.0000000000001p0,
-  },
-  { // Entry 929
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.0p0,
-  },
-  { // Entry 930
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.0p0,
-  },
-  { // Entry 931
-    0x1.aed548f090ced79c79cbf790441f8197p-1,
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    0x1.fffffffffffffp-1,
-  },
-  { // Entry 932
-    -0x1.aed548f090ced79c79cbf790441f8197p-1,
-    0x1.14a280fb5068c69a2ed45fb547c2f271p-1,
-    -0x1.fffffffffffffp-1,
-  },
-  { // Entry 933
-    0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    0x1.921fb54442d18p-1,
-  },
-  { // Entry 934
-    -0x1.6a09e667f3bcc5e9fee352f50fd3f4e9p-1,
-    0x1.6a09e667f3bccc276712d3d8c5502387p-1,
-    -0x1.921fb54442d18p-1,
-  },
-  { // Entry 935
-    0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0000000000001p-1022,
-  },
-  { // Entry 936
-    -0x1.0000000000000fffffffffffffffffffp-1022,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0000000000001p-1022,
-  },
-  { // Entry 937
-    0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1022,
-  },
-  { // Entry 938
-    -0x1.ffffffffffffffffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1022,
-  },
-  { // Entry 939
-    0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffep-1023,
-  },
-  { // Entry 940
-    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffep-1023,
-  },
-  { // Entry 941
-    0x1.ffffffffffffbfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.ffffffffffffcp-1023,
-  },
-  { // Entry 942
-    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.ffffffffffffcp-1023,
-  },
-  { // Entry 943
-    0x1.ffffffffffffffffffffffffffffffffp-1074,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1073,
-  },
-  { // Entry 944
-    -0x1.ffffffffffffffffffffffffffffffffp-1074,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1073,
-  },
-  { // Entry 945
-    0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.0p-1074,
-  },
-  { // Entry 946
-    -0.0,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.0p-1074,
-  },
-  { // Entry 947
-    0.0,
-    0x1.p0,
-    0.0,
-  },
-  { // Entry 948
-    -0.0,
-    0x1.p0,
-    -0.0,
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_sincos, sincos_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_sincos_intel_data)/sizeof(sincos_intel_data_t); i++) {
-   double dsin, dcos;
-   sincos(g_sincos_intel_data[i].call_data, &dsin, &dcos);
-   EXPECT_DOUBLE_EQ(g_sincos_intel_data[i].sin_expected, dsin) << "Failed on element " << i;
-   EXPECT_DOUBLE_EQ(g_sincos_intel_data[i].cos_expected, dcos) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_sincosf_test.cpp b/tests/math_sincosf_test.cpp
deleted file mode 100644
index c1a32c9..0000000
--- a/tests/math_sincosf_test.cpp
+++ /dev/null
@@ -1,4658 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  float sin_expected;
-  float cos_expected;
-  float call_data;
-} sincosf_intel_data_t;
-
-static sincosf_intel_data_t g_sincosf_intel_data[] = {
-  { // Entry 0
-    -0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
-    0x1.080e74c116863cfab82a0fd59c71b363p-1,
-    -0x1.0768p0,
-  },
-  { // Entry 1
-    0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
-    0x1.080e74c116863cfab82a0fd59c71b363p-1,
-    0x1.0768p0,
-  },
-  { // Entry 2
-    0x1.762da6648fde00e398462e7163094d52p-2,
-    0x1.dc9802ffffffe0cbfc57ef287d3c83afp-1,
-    -0x1.8f219cp5,
-  },
-  { // Entry 3
-    -0x1.762da6648fde00e398462e7163094d52p-2,
-    0x1.dc9802ffffffe0cbfc57ef287d3c83afp-1,
-    0x1.8f219cp5,
-  },
-  { // Entry 4
-    -0x1.493b6a7d3f5b7bf66fa32a01515d6c43p-1,
-    -0x1.881c26fd25d0bf6d6ea38708a0976b35p-1,
-    -0x1.d3a51ap80,
-  },
-  { // Entry 5
-    0x1.493b6a7d3f5b7bf66fa32a01515d6c43p-1,
-    -0x1.881c26fd25d0bf6d6ea38708a0976b35p-1,
-    0x1.d3a51ap80,
-  },
-  { // Entry 6
-    -0x1.e0d1dc006e85835b0394abe97de77fbcp-4,
-    0x1.fc75ca6313ef766012db3ca99a1a52d1p-1,
-    -0x1.e1ee52p-4,
-  },
-  { // Entry 7
-    0x1.e0d1dc006e85835b0394abe97de77fbcp-4,
-    0x1.fc75ca6313ef766012db3ca99a1a52d1p-1,
-    0x1.e1ee52p-4,
-  },
-  { // Entry 8
-    -0x1.2b6a9ca3df622efe2aa3154a6352bc70p-1,
-    -0x1.9f52def55d89e92e7df20ec21161deb8p-1,
-    -0x1.f3ffe2p24,
-  },
-  { // Entry 9
-    0x1.2b6a9ca3df622efe2aa3154a6352bc70p-1,
-    -0x1.9f52def55d89e92e7df20ec21161deb8p-1,
-    0x1.f3ffe2p24,
-  },
-  { // Entry 10
-    0x1.a3422af13b2cfb78d0cc458d9ac6bde9p-1,
-    -0x1.25e1aa1d9383c1f27027cf69b69477fdp-1,
-    -0x1.ff211ep24,
-  },
-  { // Entry 11
-    -0x1.a3422af13b2cfb78d0cc458d9ac6bde9p-1,
-    -0x1.25e1aa1d9383c1f27027cf69b69477fdp-1,
-    0x1.ff211ep24,
-  },
-  { // Entry 12
-    0x1.ffffffaaaaaaaeeeeeeed4ed4ed549c6p-13,
-    0x1.ffffff000000155555549f49f4a28a28p-1,
-    0x1.p-12,
-  },
-  { // Entry 13
-    -0x1.ffffffaaaaaaaeeeeeeed4ed4ed549c6p-13,
-    0x1.ffffff000000155555549f49f4a28a28p-1,
-    -0x1.p-12,
-  },
-  { // Entry 14
-    0x1.000001d555545777758cbfcafc09ef7ep-12,
-    0x1.fffffefffffc155551ff49f696c4aecap-1,
-    0x1.000002p-12,
-  },
-  { // Entry 15
-    -0x1.000001d555545777758cbfcafc09ef7ep-12,
-    0x1.fffffefffffc155551ff49f696c4aecap-1,
-    -0x1.000002p-12,
-  },
-  { // Entry 16
-    0x1.000001ffffffffffd555545555535555p-32,
-    0x1.fffffffffffffffefffffbfffffcp-1,
-    0x1.000002p-32,
-  },
-  { // Entry 17
-    -0x1.000001ffffffffffd555545555535555p-32,
-    0x1.fffffffffffffffefffffbfffffcp-1,
-    -0x1.000002p-32,
-  },
-  { // Entry 18
-    0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
-    0x1.c151df4f12b197a665a2907e4933a1efp-1,
-    0x1.000150p-1,
-  },
-  { // Entry 19
-    -0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
-    0x1.c151df4f12b197a665a2907e4933a1efp-1,
-    -0x1.000150p-1,
-  },
-  { // Entry 20
-    0x1.eaf77efff659021bc827bbd5696ad19ep-2,
-    0x1.c1500d494ed2cc5002c27cc5ca3d96f8p-1,
-    0x1.00051cp-1,
-  },
-  { // Entry 21
-    -0x1.eaf77efff659021bc827bbd5696ad19ep-2,
-    0x1.c1500d494ed2cc5002c27cc5ca3d96f8p-1,
-    -0x1.00051cp-1,
-  },
-  { // Entry 22
-    -0x1.5aa53c1c1317f30b4c108722e2b64612p-1,
-    0x1.78cdb6ffa6bff899e1723ed0139c48cbp-1,
-    0x1.000fdep80,
-  },
-  { // Entry 23
-    0x1.5aa53c1c1317f30b4c108722e2b64612p-1,
-    0x1.78cdb6ffa6bff899e1723ed0139c48cbp-1,
-    -0x1.000fdep80,
-  },
-  { // Entry 24
-    0x1.aef38822e64311445545980fbc5b56fap-1,
-    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
-    0x1.001cp0,
-  },
-  { // Entry 25
-    -0x1.aef38822e64311445545980fbc5b56fap-1,
-    0x1.14735fffd55120a4480b7c91a1d78d6ep-1,
-    -0x1.001cp0,
-  },
-  { // Entry 26
-    -0x1.7e12aee0c862b1709bd50205bba32167p-1,
-    -0x1.54d4290010a68826a882e7c87d6694d2p-1,
-    0x1.0027b8p40,
-  },
-  { // Entry 27
-    0x1.7e12aee0c862b1709bd50205bba32167p-1,
-    -0x1.54d4290010a68826a882e7c87d6694d2p-1,
-    -0x1.0027b8p40,
-  },
-  { // Entry 28
-    -0x1.bd6944ef4dd1b43962e2d3480410fd87p-1,
-    0x1.f8fc8efff67d834f6878ab4e44fa89b5p-2,
-    0x1.004840p68,
-  },
-  { // Entry 29
-    0x1.bd6944ef4dd1b43962e2d3480410fd87p-1,
-    0x1.f8fc8efff67d834f6878ab4e44fa89b5p-2,
-    -0x1.004840p68,
-  },
-  { // Entry 30
-    0x1.f4e23e00165a4907a656a7cf532bbde4p-2,
-    0x1.be91601e47bed6d45e8372687b373c0cp-1,
-    0x1.05b0p-1,
-  },
-  { // Entry 31
-    -0x1.f4e23e00165a4907a656a7cf532bbde4p-2,
-    0x1.be91601e47bed6d45e8372687b373c0cp-1,
-    -0x1.05b0p-1,
-  },
-  { // Entry 32
-    0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
-    0x1.080e74c116863cfab82a0fd59c71b363p-1,
-    0x1.0768p0,
-  },
-  { // Entry 33
-    -0x1.b6a7abffaf59a5ac181e3e1abf961698p-1,
-    0x1.080e74c116863cfab82a0fd59c71b363p-1,
-    -0x1.0768p0,
-  },
-  { // Entry 34
-    0x1.bcb8aafffffd69d2865aaf3f4c5074e8p-1,
-    0x1.fb69a6dc513bcba59d5dc68d3d59a05cp-2,
-    0x1.0d67a4p0,
-  },
-  { // Entry 35
-    -0x1.bcb8aafffffd69d2865aaf3f4c5074e8p-1,
-    0x1.fb69a6dc513bcba59d5dc68d3d59a05cp-2,
-    -0x1.0d67a4p0,
-  },
-  { // Entry 36
-    0x1.bf683cffffec6e8672a49f08aae49c46p-1,
-    0x1.f1e0f653d695977ccd240ff6b9297393p-2,
-    0x1.1024p0,
-  },
-  { // Entry 37
-    -0x1.bf683cffffec6e8672a49f08aae49c46p-1,
-    0x1.f1e0f653d695977ccd240ff6b9297393p-2,
-    -0x1.1024p0,
-  },
-  { // Entry 38
-    0x1.8b1e8e1c16a8d970a78a2391eea6575cp-1,
-    -0x1.459d4500000092b4b8307c652ee639a7p-1,
-    0x1.21497ep1,
-  },
-  { // Entry 39
-    -0x1.8b1e8e1c16a8d970a78a2391eea6575cp-1,
-    -0x1.459d4500000092b4b8307c652ee639a7p-1,
-    -0x1.21497ep1,
-  },
-  { // Entry 40
-    0x1.6991e0ffe7f9c9b3ef7b3017d23639fap-1,
-    -0x1.6a81c4133db73e276c89e724c6fe975bp-1,
-    0x1.2dc230p1,
-  },
-  { // Entry 41
-    -0x1.6991e0ffe7f9c9b3ef7b3017d23639fap-1,
-    -0x1.6a81c4133db73e276c89e724c6fe975bp-1,
-    -0x1.2dc230p1,
-  },
-  { // Entry 42
-    0x1.41f6bd0000d13ba2bd7a63bf6d950865p-1,
-    -0x1.8e197fe4fac9901dc07a2878baf15c7ap-1,
-    0x1.344248p18,
-  },
-  { // Entry 43
-    -0x1.41f6bd0000d13ba2bd7a63bf6d950865p-1,
-    -0x1.8e197fe4fac9901dc07a2878baf15c7ap-1,
-    -0x1.344248p18,
-  },
-  { // Entry 44
-    0x1.37f8deffffff61ca15c366b3add8f373p-1,
-    -0x1.95fa20d230fdf9e8cccc5921e61f03adp-1,
-    0x1.3e42p1,
-  },
-  { // Entry 45
-    -0x1.37f8deffffff61ca15c366b3add8f373p-1,
-    -0x1.95fa20d230fdf9e8cccc5921e61f03adp-1,
-    -0x1.3e42p1,
-  },
-  { // Entry 46
-    0x1.2ed7ce518f4660cce49556856784970cp-1,
-    0x1.9cd4f3000002264af2b32ebe5d8243c0p-1,
-    0x1.440c3ap-1,
-  },
-  { // Entry 47
-    -0x1.2ed7ce518f4660cce49556856784970cp-1,
-    0x1.9cd4f3000002264af2b32ebe5d8243c0p-1,
-    -0x1.440c3ap-1,
-  },
-  { // Entry 48
-    0x1.475fc937750bdf2f704177612d31dc1fp-1,
-    0x1.89a999000012c047e4b24181d6158640p-1,
-    0x1.632f6ap-1,
-  },
-  { // Entry 49
-    -0x1.475fc937750bdf2f704177612d31dc1fp-1,
-    0x1.89a999000012c047e4b24181d6158640p-1,
-    -0x1.632f6ap-1,
-  },
-  { // Entry 50
-    -0x1.8ace1cfcc0a766b35d0e8f48f3169e8ap-1,
-    -0x1.45fec95a40619819e3307aebe0cb5e89p-1,
-    0x1.6e8f18p24,
-  },
-  { // Entry 51
-    0x1.8ace1cfcc0a766b35d0e8f48f3169e8ap-1,
-    -0x1.45fec95a40619819e3307aebe0cb5e89p-1,
-    -0x1.6e8f18p24,
-  },
-  { // Entry 52
-    0x1.7c6b92ff24ff028ea35c459e5ebeb2cdp-1,
-    0x1.56ac2ae54cc9a5210ae673ea1ce31d47p-1,
-    0x1.795840p23,
-  },
-  { // Entry 53
-    -0x1.7c6b92ff24ff028ea35c459e5ebeb2cdp-1,
-    0x1.56ac2ae54cc9a5210ae673ea1ce31d47p-1,
-    -0x1.795840p23,
-  },
-  { // Entry 54
-    0x1.697cf4ffea9244e85cea640d13c6fbb5p-1,
-    -0x1.6a96a106ace21610ab529c9047c7e6e2p-1,
-    0x1.7fe7fep35,
-  },
-  { // Entry 55
-    -0x1.697cf4ffea9244e85cea640d13c6fbb5p-1,
-    -0x1.6a96a106ace21610ab529c9047c7e6e2p-1,
-    -0x1.7fe7fep35,
-  },
-  { // Entry 56
-    0x1.9c6cf2fffffe8588512ea3c808b0fa9fp-1,
-    0x1.2f6560e0f14cd5d68920bec0e0c25354p-1,
-    0x1.ce1026p2,
-  },
-  { // Entry 57
-    -0x1.9c6cf2fffffe8588512ea3c808b0fa9fp-1,
-    0x1.2f6560e0f14cd5d68920bec0e0c25354p-1,
-    -0x1.ce1026p2,
-  },
-  { // Entry 58
-    -0x1.07fac04c6e73f485096bdaa3e65044d9p-1,
-    -0x1.b6b387ffceb67a18c15e868550b96462p-1,
-    0x1.d775d0p1,
-  },
-  { // Entry 59
-    0x1.07fac04c6e73f485096bdaa3e65044d9p-1,
-    -0x1.b6b387ffceb67a18c15e868550b96462p-1,
-    -0x1.d775d0p1,
-  },
-  { // Entry 60
-    0x1.9a8c62f4b2a949b06924662d9436bf17p-1,
-    0x1.31ee7074e3ebc5a30f0092ec6c5d8b80p-1,
-    0x1.dfeaaap108,
-  },
-  { // Entry 61
-    -0x1.9a8c62f4b2a949b06924662d9436bf17p-1,
-    0x1.31ee7074e3ebc5a30f0092ec6c5d8b80p-1,
-    -0x1.dfeaaap108,
-  },
-  { // Entry 62
-    0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
-    0x1.c72cd4e1d6c78547d31707be80b4b0aep-1,
-    0x1.e7061ep-2,
-  },
-  { // Entry 63
-    -0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
-    0x1.c72cd4e1d6c78547d31707be80b4b0aep-1,
-    -0x1.e7061ep-2,
-  },
-  { // Entry 64
-    -0x1.483445d4194813168a1ac63eee1943f9p-1,
-    0x1.88f882fcbc81ffdf720a4bb1b2fca71dp-1,
-    0x1.e89b2ap80,
-  },
-  { // Entry 65
-    0x1.483445d4194813168a1ac63eee1943f9p-1,
-    0x1.88f882fcbc81ffdf720a4bb1b2fca71dp-1,
-    -0x1.e89b2ap80,
-  },
-  { // Entry 66
-    0x1.565e410014916fa6550e606ed588c6b8p-1,
-    0x1.7cb1b34af85589bdaf7c0793af30b682p-1,
-    0x1.fe8270p18,
-  },
-  { // Entry 67
-    -0x1.565e410014916fa6550e606ed588c6b8p-1,
-    0x1.7cb1b34af85589bdaf7c0793af30b682p-1,
-    -0x1.fe8270p18,
-  },
-  { // Entry 68
-    -0x1.8356fbaea0454bce3983d9a0e0250c55p-1,
-    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
-    0x1.fff1fep1,
-  },
-  { // Entry 69
-    0x1.8356fbaea0454bce3983d9a0e0250c55p-1,
-    -0x1.4ed4c5ffc8018741870949767ff8dafap-1,
-    -0x1.fff1fep1,
-  },
-  { // Entry 70
-    0x1.fa9d6bfb33a77b2e3b3289168ced6dcap-1,
-    -0x1.28406a0025545c9a568dacd45518dd65p-3,
-    0x1.fff1fep2,
-  },
-  { // Entry 71
-    -0x1.fa9d6bfb33a77b2e3b3289168ced6dcap-1,
-    -0x1.28406a0025545c9a568dacd45518dd65p-3,
-    -0x1.fff1fep2,
-  },
-  { // Entry 72
-    0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
-    -0x1.aa2241160227896c68ef17839f17dce5p-2,
-    0x1.fffff6p0,
-  },
-  { // Entry 73
-    -0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
-    -0x1.aa2241160227896c68ef17839f17dce5p-2,
-    -0x1.fffff6p0,
-  },
-  { // Entry 74
-    0x1.fffffaaaaab2eeeedc3dc3f1ee7b41fep-12,
-    0x1.fffffc00001155553a7d27f4a289f319p-1,
-    0x1.fffffcp-12,
-  },
-  { // Entry 75
-    -0x1.fffffaaaaab2eeeedc3dc3f1ee7b41fep-12,
-    0x1.fffffc00001155553a7d27f4a289f319p-1,
-    -0x1.fffffcp-12,
-  },
-  { // Entry 76
-    -0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149,
-  },
-  { // Entry 77
-    0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149,
-  },
-  { // Entry 78
-    0.0,
-    0x1.p0,
-    0.0,
-  },
-  { // Entry 79
-    0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149,
-  },
-  { // Entry 80
-    -0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149,
-  },
-  { // Entry 81
-    -0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.000002p-126,
-  },
-  { // Entry 82
-    0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.000002p-126,
-  },
-  { // Entry 83
-    -0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-126,
-  },
-  { // Entry 84
-    0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-126,
-  },
-  { // Entry 85
-    -0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffffcp-127,
-  },
-  { // Entry 86
-    0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffffcp-127,
-  },
-  { // Entry 87
-    0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffffcp-127,
-  },
-  { // Entry 88
-    -0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffffcp-127,
-  },
-  { // Entry 89
-    0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-126,
-  },
-  { // Entry 90
-    -0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-126,
-  },
-  { // Entry 91
-    0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.000002p-126,
-  },
-  { // Entry 92
-    -0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.000002p-126,
-  },
-  { // Entry 93
-    0x1.999999d44f3058c789014b7d0e22fec3p-13,
-    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
-    0x1.99999ap-13,
-  },
-  { // Entry 94
-    -0x1.999999d44f3058c789014b7d0e22fec3p-13,
-    0x1.ffffff5c28f57960cd56ebfe9482a61fp-1,
-    -0x1.99999ap-13,
-  },
-  { // Entry 95
-    0x1.999999513cc173e51bb9955b066f1db8p-12,
-    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
-    0x1.99999ap-12,
-  },
-  { // Entry 96
-    -0x1.999999513cc173e51bb9955b066f1db8p-12,
-    0x1.fffffd70a3d64e5ec165cd4307ad1326p-1,
-    -0x1.99999ap-12,
-  },
-  { // Entry 97
-    0x1.333332d91685321e5fc397d20a5af1e6p-11,
-    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
-    0x1.333334p-11,
-  },
-  { // Entry 98
-    -0x1.333332d91685321e5fc397d20a5af1e6p-11,
-    0x1.fffffa3d709eecbfb5a385b0f3e0cb8fp-1,
-    -0x1.333334p-11,
-  },
-  { // Entry 99
-    0x1.99999744f306dc03e9ef70897f78299ep-11,
-    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
-    0x1.99999ap-11,
-  },
-  { // Entry 100
-    -0x1.99999744f306dc03e9ef70897f78299ep-11,
-    0x1.fffff5c28f5fc733c4202aa0bda92f97p-1,
-    -0x1.99999ap-11,
-  },
-  { // Entry 101
-    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    0x1.p-10,
-  },
-  { // Entry 102
-    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    0x1.fffff0000015555549f49f4d34d34ca0p-1,
-    -0x1.p-10,
-  },
-  { // Entry 103
-    0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
-    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
-    0x1.333334p-10,
-  },
-  { // Entry 104
-    -0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
-    0x1.ffffe8f5c29ce07640bd5f6d8bb1ea6bp-1,
-    -0x1.333334p-10,
-  },
-  { // Entry 105
-    0x1.666660aec330821c7a100cf488c380ebp-10,
-    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
-    0x1.666668p-10,
-  },
-  { // Entry 106
-    -0x1.666660aec330821c7a100cf488c380ebp-10,
-    0x1.ffffe0a3d714839f3601147ada73f8d9p-1,
-    -0x1.666668p-10,
-  },
-  { // Entry 107
-    0x1.99999113cc034144fdbdc8a1dc713253p-10,
-    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
-    0x1.99999cp-10,
-  },
-  { // Entry 108
-    -0x1.99999113cc034144fdbdc8a1dc713253p-10,
-    0x1.ffffd70a3d8191f66de5408fb2b995a0p-1,
-    -0x1.99999cp-10,
-  },
-  { // Entry 109
-    0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
-    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
-    0x1.ccccccp-10,
-  },
-  { // Entry 110
-    -0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
-    0x1.ffffcc28f6d096b87d6d19a06e96999bp-1,
-    -0x1.ccccccp-10,
-  },
-  { // Entry 111
-    0x1.0665ae3615b5b7de52798064dfc59b29p-7,
-    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
-    0x1.066666p-7,
-  },
-  { // Entry 112
-    -0x1.0665ae3615b5b7de52798064dfc59b29p-7,
-    0x1.fffbcc2a71ceaabf5582b6da1fc30531p-1,
-    -0x1.066666p-7,
-  },
-  { // Entry 113
-    0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
-    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
-    0x1.ccccccp-7,
-  },
-  { // Entry 114
-    -0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
-    0x1.fff30a4b7b5119d8e299f717ec0ece16p-1,
-    -0x1.ccccccp-7,
-  },
-  { // Entry 115
-    0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
-    0x1.ffe57a785123226c1e2efb411353edc9p-1,
-    0x1.499998p-6,
-  },
-  { // Entry 116
-    -0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
-    0x1.ffe57a785123226c1e2efb411353edc9p-1,
-    -0x1.499998p-6,
-  },
-  { // Entry 117
-    0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
-    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
-    0x1.acccccp-6,
-  },
-  { // Entry 118
-    -0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
-    0x1.ffd31cd10cb632d9733ac5f5f327a5f9p-1,
-    -0x1.acccccp-6,
-  },
-  { // Entry 119
-    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    0x1.08p-5,
-  },
-  { // Entry 120
-    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    0x1.ffbbf18207542ef81390d73c3ba89c1ap-1,
-    -0x1.08p-5,
-  },
-  { // Entry 121
-    0x1.3985fead44fa2b851e651acba369d769p-5,
-    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
-    0x1.39999ap-5,
-  },
-  { // Entry 122
-    -0x1.3985fead44fa2b851e651acba369d769p-5,
-    0x1.ff9ff8c2eaeaee30fb211765af835171p-1,
-    -0x1.39999ap-5,
-  },
-  { // Entry 123
-    0x1.6b14beb5d40d745096247e59b622828bp-5,
-    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
-    0x1.6b3334p-5,
-  },
-  { // Entry 124
-    -0x1.6b14beb5d40d745096247e59b622828bp-5,
-    0x1.ff7f32d6eb1f9cf90226ec291c9e0922p-1,
-    -0x1.6b3334p-5,
-  },
-  { // Entry 125
-    0x1.9ca01671a7995fc97cebd69729cc4309p-5,
-    0x1.ff59a00cc4ad492ca2597495412998edp-1,
-    0x1.9ccccep-5,
-  },
-  { // Entry 126
-    -0x1.9ca01671a7995fc97cebd69729cc4309p-5,
-    0x1.ff59a00cc4ad492ca2597495412998edp-1,
-    -0x1.9ccccep-5,
-  },
-  { // Entry 127
-    0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
-    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
-    0x1.ce6666p-5,
-  },
-  { // Entry 128
-    -0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
-    0x1.ff2f40c08acf4580a8d13380d9073398p-1,
-    -0x1.ce6666p-5,
-  },
-  { // Entry 129
-    0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
-    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
-    0x1.5e7fc4p-1,
-  },
-  { // Entry 130
-    -0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
-    0x1.8ca46ca011771bfae0d9edbf1dacb402p-1,
-    -0x1.5e7fc4p-1,
-  },
-  { // Entry 131
-    0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
-    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
-    0x1.4e7fc4p0,
-  },
-  { // Entry 132
-    -0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
-    0x1.0b5d38d5d82e4a7624dac4e10ce159c2p-2,
-    -0x1.4e7fc4p0,
-  },
-  { // Entry 133
-    0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
-    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
-    0x1.edbfa6p0,
-  },
-  { // Entry 134
-    -0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
-    -0x1.66b96e204e69cda8e9cf50996432539ep-2,
-    -0x1.edbfa6p0,
-  },
-  { // Entry 135
-    0x1.1d347aa02feb3bb1750d25509435da88p-1,
-    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
-    0x1.467fc4p1,
-  },
-  { // Entry 136
-    -0x1.1d347aa02feb3bb1750d25509435da88p-1,
-    -0x1.a935540edeca4c220ed91dc5481e4d9bp-1,
-    -0x1.467fc4p1,
-  },
-  { // Entry 137
-    -0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
-    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
-    0x1.961fb4p1,
-  },
-  { // Entry 138
-    0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
-    -0x1.ffc0017dd9209dd8891f17fe4c9eee46p-1,
-    -0x1.961fb4p1,
-  },
-  { // Entry 139
-    -0x1.3734cbced9c0f484e5f762e00216e620p-1,
-    -0x1.969082007733d787f4c36ba0f9425694p-1,
-    0x1.e5bfa4p1,
-  },
-  { // Entry 140
-    0x1.3734cbced9c0f484e5f762e00216e620p-1,
-    -0x1.969082007733d787f4c36ba0f9425694p-1,
-    -0x1.e5bfa4p1,
-  },
-  { // Entry 141
-    -0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
-    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
-    0x1.1aafcap2,
-  },
-  { // Entry 142
-    0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
-    -0x1.2a1e74223d9bddb7db59f781f96b65ecp-2,
-    -0x1.1aafcap2,
-  },
-  { // Entry 143
-    -0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
-    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
-    0x1.427fc2p2,
-  },
-  { // Entry 144
-    0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
-    0x1.4894d50b84dbc981134a591ac4165d9ep-2,
-    -0x1.427fc2p2,
-  },
-  { // Entry 145
-    -0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
-    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
-    0x1.6a4fbap2,
-  },
-  { // Entry 146
-    0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
-    0x1.a016dd7480a1eea4d49efb585fa49c86p-1,
-    -0x1.6a4fbap2,
-  },
-  { // Entry 147
-    -0x1.263123df22d13ed329c665c83c0e71e8p-1,
-    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
-    0x1.6af2f0p2,
-  },
-  { // Entry 148
-    0x1.263123df22d13ed329c665c83c0e71e8p-1,
-    0x1.a30a6a3bf4a3e2b7e27666d3a9c3b74bp-1,
-    -0x1.6af2f0p2,
-  },
-  { // Entry 149
-    -0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
-    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
-    0x1.43c62ap2,
-  },
-  { // Entry 150
-    0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
-    0x1.5bd625504015ccc101e4f4340d4b762bp-2,
-    -0x1.43c62ap2,
-  },
-  { // Entry 151
-    -0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
-    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
-    0x1.1c9964p2,
-  },
-  { // Entry 152
-    0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
-    -0x1.0cb733448c30ee3ddffb4da69f0b3842p-2,
-    -0x1.1c9964p2,
-  },
-  { // Entry 153
-    -0x1.472768637ea8866a652098a43aa688a6p-1,
-    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
-    0x1.ead93cp1,
-  },
-  { // Entry 154
-    0x1.472768637ea8866a652098a43aa688a6p-1,
-    -0x1.89d874ad30e3fb46244daa24451690d7p-1,
-    -0x1.ead93cp1,
-  },
-  { // Entry 155
-    -0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
-    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
-    0x1.9c7fb0p1,
-  },
-  { // Entry 156
-    0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
-    -0x1.fe51ae09f0d39ed554e68bef3e2f8a03p-1,
-    -0x1.9c7fb0p1,
-  },
-  { // Entry 157
-    0x1.034c643295153aaffe5d9a0f29e92844p-1,
-    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
-    0x1.4e2624p1,
-  },
-  { // Entry 158
-    -0x1.034c643295153aaffe5d9a0f29e92844p-1,
-    -0x1.b97bf76ae765eb69cf55e80aae977303p-1,
-    -0x1.4e2624p1,
-  },
-  { // Entry 159
-    0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
-    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
-    0x1.ff9932p0,
-  },
-  { // Entry 160
-    -0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
-    -0x1.a8ac5793e32629b131984ecffd2d0f31p-2,
-    -0x1.ff9932p0,
-  },
-  { // Entry 161
-    0x1.f7501e002bcafb897f931931d3a57afdp-1,
-    0x1.77a92ca01bc79c195dda33736807f986p-3,
-    0x1.62e61cp0,
-  },
-  { // Entry 162
-    -0x1.f7501e002bcafb897f931931d3a57afdp-1,
-    0x1.77a92ca01bc79c195dda33736807f986p-3,
-    -0x1.62e61cp0,
-  },
-  { // Entry 163
-    0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
-    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
-    0x1.8c662cp-1,
-  },
-  { // Entry 164
-    -0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
-    0x1.6e1060282c1488d9abd83da1d68cd0f7p-1,
-    -0x1.8c662cp-1,
-  },
-  { // Entry 165
-    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    -0x1.a8aa1cp0,
-  },
-  { // Entry 166
-    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    0x1.a8aa1cp0,
-  },
-  { // Entry 167
-    -0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
-    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
-    -0x1.95ec8ap0,
-  },
-  { // Entry 168
-    0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
-    -0x1.e665cb2af842be5ba5f65960599a97ecp-7,
-    0x1.95ec8ap0,
-  },
-  { // Entry 169
-    -0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
-    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
-    -0x1.832ef8p0,
-  },
-  { // Entry 170
-    0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
-    0x1.ddd231501b12fcf2bc20633be4d51e51p-5,
-    0x1.832ef8p0,
-  },
-  { // Entry 171
-    -0x1.fb933b89d7db3286eed0cfeabee98875p-1,
-    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
-    -0x1.707166p0,
-  },
-  { // Entry 172
-    0x1.fb933b89d7db3286eed0cfeabee98875p-1,
-    0x1.0caba6997691ab1970d43c7419ed51e1p-3,
-    0x1.707166p0,
-  },
-  { // Entry 173
-    -0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
-    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
-    -0x1.5db3d4p0,
-  },
-  { // Entry 174
-    0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
-    0x1.a072541fd6eaf8b65a874c58d6cc5739p-3,
-    0x1.5db3d4p0,
-  },
-  { // Entry 175
-    -0x1.ec5881a09c46aae020cd9036098a196ep-1,
-    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
-    -0x1.4af642p0,
-  },
-  { // Entry 176
-    0x1.ec5881a09c46aae020cd9036098a196ep-1,
-    0x1.18fef8106bea63b9e96a7adf538c6194p-2,
-    0x1.4af642p0,
-  },
-  { // Entry 177
-    -0x1.e0c04795919d961a5e83e505df31c624p-1,
-    0x1.60437277d48067e85230bce1883eaabap-2,
-    -0x1.3838b0p0,
-  },
-  { // Entry 178
-    0x1.e0c04795919d961a5e83e505df31c624p-1,
-    0x1.60437277d48067e85230bce1883eaabap-2,
-    0x1.3838b0p0,
-  },
-  { // Entry 179
-    -0x1.d294cdef7cc161633a02d3e62058be0ep-1,
-    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
-    -0x1.257b1ep0,
-  },
-  { // Entry 180
-    0x1.d294cdef7cc161633a02d3e62058be0ep-1,
-    0x1.a5a4ded492bedfe8cf5c34cadd78df75p-2,
-    0x1.257b1ep0,
-  },
-  { // Entry 181
-    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    -0x1.12bd92p0,
-  },
-  { // Entry 182
-    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    0x1.12bd92p0,
-  },
-  { // Entry 183
-    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    -0x1.ea5c3ep-1,
-  },
-  { // Entry 184
-    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    0x1.ea5c3ep-1,
-  },
-  { // Entry 185
-    -0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
-    0x1.3805a2dafda7f8554aec65dab348a714p-1,
-    -0x1.d4b87cp-1,
-  },
-  { // Entry 186
-    0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
-    0x1.3805a2dafda7f8554aec65dab348a714p-1,
-    0x1.d4b87cp-1,
-  },
-  { // Entry 187
-    -0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
-    0x1.48e52ff5bbe794618b85190b86411824p-1,
-    -0x1.bf14bap-1,
-  },
-  { // Entry 188
-    0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
-    0x1.48e52ff5bbe794618b85190b86411824p-1,
-    0x1.bf14bap-1,
-  },
-  { // Entry 189
-    -0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
-    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
-    -0x1.a970f8p-1,
-  },
-  { // Entry 190
-    0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
-    0x1.592e5b615ef5ae463976d31141dbacf0p-1,
-    0x1.a970f8p-1,
-  },
-  { // Entry 191
-    -0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
-    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
-    -0x1.93cd36p-1,
-  },
-  { // Entry 192
-    0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
-    0x1.68d9b2d657e4307d331eb7bd35ee1879p-1,
-    0x1.93cd36p-1,
-  },
-  { // Entry 193
-    -0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
-    0x1.77e00c3718528c36f722e63096c2646bp-1,
-    -0x1.7e2974p-1,
-  },
-  { // Entry 194
-    0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
-    0x1.77e00c3718528c36f722e63096c2646bp-1,
-    0x1.7e2974p-1,
-  },
-  { // Entry 195
-    -0x1.4b75b5954e718020900719e25a7ea93bp-1,
-    0x1.863a88d6b064f36f34370722d361ce9fp-1,
-    -0x1.6885b2p-1,
-  },
-  { // Entry 196
-    0x1.4b75b5954e718020900719e25a7ea93bp-1,
-    0x1.863a88d6b064f36f34370722d361ce9fp-1,
-    0x1.6885b2p-1,
-  },
-  { // Entry 197
-    -0x1.3aacfa510810054c52ae0b67d116eb40p-1,
-    0x1.93e2989cee6084e34b533b1eb92746dap-1,
-    -0x1.52e1f0p-1,
-  },
-  { // Entry 198
-    0x1.3aacfa510810054c52ae0b67d116eb40p-1,
-    0x1.93e2989cee6084e34b533b1eb92746dap-1,
-    0x1.52e1f0p-1,
-  },
-  { // Entry 199
-    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    -0x1.3d3e36p-1,
-  },
-  { // Entry 200
-    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    0x1.3d3e36p-1,
-  },
-  { // Entry 201
-    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    -0x1.0a0b02p-1,
-  },
-  { // Entry 202
-    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    0x1.0a0b02p-1,
-  },
-  { // Entry 203
-    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    -0x1.d8f720p-2,
-  },
-  { // Entry 204
-    0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    0x1.d8f720p-2,
-  },
-  { // Entry 205
-    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    -0x1.9dd83cp-2,
-  },
-  { // Entry 206
-    0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    0x1.9dd83cp-2,
-  },
-  { // Entry 207
-    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    -0x1.62b958p-2,
-  },
-  { // Entry 208
-    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    0x1.62b958p-2,
-  },
-  { // Entry 209
-    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    -0x1.279a74p-2,
-  },
-  { // Entry 210
-    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    0x1.279a74p-2,
-  },
-  { // Entry 211
-    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    -0x1.d8f720p-3,
-  },
-  { // Entry 212
-    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    0x1.d8f720p-3,
-  },
-  { // Entry 213
-    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    -0x1.62b958p-3,
-  },
-  { // Entry 214
-    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    0x1.62b958p-3,
-  },
-  { // Entry 215
-    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    -0x1.d8f720p-4,
-  },
-  { // Entry 216
-    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    0x1.d8f720p-4,
-  },
-  { // Entry 217
-    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    -0x1.d8f720p-5,
-  },
-  { // Entry 218
-    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    0x1.d8f720p-5,
-  },
-  { // Entry 219
-    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    0x1.d8f720p-5,
-  },
-  { // Entry 220
-    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    0x1.ff259b7b3d721edf063a5bf6e7a1f93cp-1,
-    -0x1.d8f720p-5,
-  },
-  { // Entry 221
-    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    0x1.d8f720p-4,
-  },
-  { // Entry 222
-    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    0x1.fc97283c4f5bd1f793201972b8db551fp-1,
-    -0x1.d8f720p-4,
-  },
-  { // Entry 223
-    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    0x1.62b958p-3,
-  },
-  { // Entry 224
-    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    0x1.f856d49251bd37c54f0094270eecbd18p-1,
-    -0x1.62b958p-3,
-  },
-  { // Entry 225
-    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    0x1.d8f720p-3,
-  },
-  { // Entry 226
-    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    0x1.f26840efd86ceea23f388b6a1102ea4dp-1,
-    -0x1.d8f720p-3,
-  },
-  { // Entry 227
-    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    0x1.279a74p-2,
-  },
-  { // Entry 228
-    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    0x1.ead07cd2e0f7f19679646362bbc0eb80p-1,
-    -0x1.279a74p-2,
-  },
-  { // Entry 229
-    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    0x1.62b958p-2,
-  },
-  { // Entry 230
-    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    0x1.e1960273a4aaa1bd19ef0ccaa8874183p-1,
-    -0x1.62b958p-2,
-  },
-  { // Entry 231
-    0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    0x1.9dd83cp-2,
-  },
-  { // Entry 232
-    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    0x1.d6c0b13df99613a49306b4dc6c57aa03p-1,
-    -0x1.9dd83cp-2,
-  },
-  { // Entry 233
-    0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    0x1.d8f720p-2,
-  },
-  { // Entry 234
-    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    0x1.ca59c719f96075dd6b7a0ff443ad59dcp-1,
-    -0x1.d8f720p-2,
-  },
-  { // Entry 235
-    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    0x1.0a0b02p-1,
-  },
-  { // Entry 236
-    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    0x1.bc6bd889a8a59dbb56e546a37ae798f5p-1,
-    -0x1.0a0b02p-1,
-  },
-  { // Entry 237
-    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    0x1.3d3e36p-1,
-  },
-  { // Entry 238
-    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    0x1.a0d1f8613ebc60c7ee6502ee183c89e7p-1,
-    -0x1.3d3e36p-1,
-  },
-  { // Entry 239
-    0x1.3aad00a09268a39df1653c70db91f157p-1,
-    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
-    0x1.52e1f8p-1,
-  },
-  { // Entry 240
-    -0x1.3aad00a09268a39df1653c70db91f157p-1,
-    0x1.93e293b23a6aa1ae5373214eb8fb9e96p-1,
-    -0x1.52e1f8p-1,
-  },
-  { // Entry 241
-    0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
-    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
-    0x1.6885bap-1,
-  },
-  { // Entry 242
-    -0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
-    0x1.863a83a8d9826c6135509406ebe05c0fp-1,
-    -0x1.6885bap-1,
-  },
-  { // Entry 243
-    0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
-    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
-    0x1.7e297cp-1,
-  },
-  { // Entry 244
-    -0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
-    0x1.77e006c87cbaded66ec5b960c93c568ap-1,
-    -0x1.7e297cp-1,
-  },
-  { // Entry 245
-    0x1.6b3920d8117828928fe10ac70ba69e76p-1,
-    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
-    0x1.93cd3ep-1,
-  },
-  { // Entry 246
-    -0x1.6b3920d8117828928fe10ac70ba69e76p-1,
-    0x1.68d9ad29736c1704caea6a2db6e71223p-1,
-    -0x1.93cd3ep-1,
-  },
-  { // Entry 247
-    0x1.7a25450443098836c5202375db4b8462p-1,
-    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
-    0x1.a971p-1,
-  },
-  { // Entry 248
-    -0x1.7a25450443098836c5202375db4b8462p-1,
-    0x1.592e5578c9ec66acceddd4dc6ce66b26p-1,
-    -0x1.a971p-1,
-  },
-  { // Entry 249
-    0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
-    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
-    0x1.bf14c2p-1,
-  },
-  { // Entry 250
-    -0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
-    0x1.48e529d429e721ec8bb1e014f94d48f1p-1,
-    -0x1.bf14c2p-1,
-  },
-  { // Entry 251
-    0x1.95f056337acc1d2d557525232e915467p-1,
-    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
-    0x1.d4b884p-1,
-  },
-  { // Entry 252
-    -0x1.95f056337acc1d2d557525232e915467p-1,
-    0x1.38059c833c58ea970f7b96d6ada3d9c4p-1,
-    -0x1.d4b884p-1,
-  },
-  { // Entry 253
-    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    0x1.ea5c3ep-1,
-  },
-  { // Entry 254
-    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    0x1.26976b1b16d19091c09259765c4b3872p-1,
-    -0x1.ea5c3ep-1,
-  },
-  { // Entry 255
-    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    0x1.12bd92p0,
-  },
-  { // Entry 256
-    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    0x1.e8c4040678d2ef736333a4537a1113a1p-2,
-    -0x1.12bd92p0,
-  },
-  { // Entry 257
-    0x1.d294d2e06b3d10a4de263172d50f4497p-1,
-    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
-    0x1.257b24p0,
-  },
-  { // Entry 258
-    -0x1.d294d2e06b3d10a4de263172d50f4497p-1,
-    0x1.a5a4c8f598fa0078971316eb4907f97bp-2,
-    -0x1.257b24p0,
-  },
-  { // Entry 259
-    0x1.e0c04bb65bd33012be72a340df2c044bp-1,
-    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
-    0x1.3838b6p0,
-  },
-  { // Entry 260
-    -0x1.e0c04bb65bd33012be72a340df2c044bp-1,
-    0x1.60435beed10ca05769f0a3d86a5a20f3p-2,
-    -0x1.3838b6p0,
-  },
-  { // Entry 261
-    0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
-    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
-    0x1.4af648p0,
-  },
-  { // Entry 262
-    -0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
-    0x1.18fee0fc45c31a79b2b9478b1f72a9ebp-2,
-    -0x1.4af648p0,
-  },
-  { // Entry 263
-    0x1.f54d9835b0e66e17612160272521f3b0p-1,
-    0x1.a072252090c33828767aee3e040ccddfp-3,
-    0x1.5db3dap0,
-  },
-  { // Entry 264
-    -0x1.f54d9835b0e66e17612160272521f3b0p-1,
-    0x1.a072252090c33828767aee3e040ccddfp-3,
-    -0x1.5db3dap0,
-  },
-  { // Entry 265
-    0x1.fb933d1cd931685e902e403a1baaecfdp-1,
-    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
-    0x1.70716cp0,
-  },
-  { // Entry 266
-    -0x1.fb933d1cd931685e902e403a1baaecfdp-1,
-    0x1.0cab7703a8e9dacc4ad01188b443cfeep-3,
-    -0x1.70716cp0,
-  },
-  { // Entry 267
-    0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
-    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
-    0x1.832efep0,
-  },
-  { // Entry 268
-    -0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
-    0x1.ddd171a3c9851e7819b5e4f6f90e763dp-5,
-    -0x1.832efep0,
-  },
-  { // Entry 269
-    0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
-    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
-    0x1.95ec90p0,
-  },
-  { // Entry 270
-    -0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
-    -0x1.e668cb154eea68bbc7f8154f46b2e536p-7,
-    -0x1.95ec90p0,
-  },
-  { // Entry 271
-    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    0x1.a8aa1cp0,
-  },
-  { // Entry 272
-    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    -0x1.682f2bb87a8f5011735094176c9b6dacp-4,
-    -0x1.a8aa1cp0,
-  },
-  { // Entry 273
-    0x1.b3d36a96880cf69d9884a49f5381e917p-1,
-    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
-    0x1.04aff8p0,
-  },
-  { // Entry 274
-    -0x1.b3d36a96880cf69d9884a49f5381e917p-1,
-    0x1.0cb3449a0d0a9e0643d41f4a5b0f7db7p-1,
-    -0x1.04aff8p0,
-  },
-  { // Entry 275
-    0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
-    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
-    0x1.04b0a0p0,
-  },
-  { // Entry 276
-    -0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
-    0x1.0cb22697153bcf1f8a63acddd96c54cbp-1,
-    -0x1.04b0a0p0,
-  },
-  { // Entry 277
-    0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
-    0x1.0cb10893a9b5471a44356072cb33b395p-1,
-    0x1.04b148p0,
-  },
-  { // Entry 278
-    -0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
-    0x1.0cb10893a9b5471a44356072cb33b395p-1,
-    -0x1.04b148p0,
-  },
-  { // Entry 279
-    0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
-    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
-    0x1.04b1f0p0,
-  },
-  { // Entry 280
-    -0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
-    0x1.0cafea8fca7781236a57e5b1c8aed39cp-1,
-    -0x1.04b1f0p0,
-  },
-  { // Entry 281
-    0x1.b3d62be73e8fc998c6c2df6590425613p-1,
-    0x1.0caecc8b7782f86827af92b0b2374510p-1,
-    0x1.04b298p0,
-  },
-  { // Entry 282
-    -0x1.b3d62be73e8fc998c6c2df6590425613p-1,
-    0x1.0caecc8b7782f86827af92b0b2374510p-1,
-    -0x1.04b298p0,
-  },
-  { // Entry 283
-    0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
-    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
-    0x1.04b340p0,
-  },
-  { // Entry 284
-    -0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
-    0x1.0cadae86b0d82815d8f632e67c7e1a99p-1,
-    -0x1.04b340p0,
-  },
-  { // Entry 285
-    0x1.b3d78c8b33a07864b6a878573db34bcap-1,
-    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
-    0x1.04b3e8p0,
-  },
-  { // Entry 286
-    -0x1.b3d78c8b33a07864b6a878573db34bcap-1,
-    0x1.0cac908176778b5a0cbad21ee75ce765p-1,
-    -0x1.04b3e8p0,
-  },
-  { // Entry 287
-    0x1.b3d83cdc149b9757df195ad885ab5201p-1,
-    0x1.0cab727bc8619d628361876e1f30a633p-1,
-    0x1.04b490p0,
-  },
-  { // Entry 288
-    -0x1.b3d83cdc149b9757df195ad885ab5201p-1,
-    0x1.0cab727bc8619d628361876e1f30a633p-1,
-    -0x1.04b490p0,
-  },
-  { // Entry 289
-    0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
-    0x1.0caa5b450a4324f204a556b072da124ap-1,
-    0x1.04b534p0,
-  },
-  { // Entry 290
-    -0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
-    0x1.0caa5b450a4324f204a556b072da124ap-1,
-    -0x1.04b534p0,
-  },
-  { // Entry 291
-    -0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149,
-  },
-  { // Entry 292
-    0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149,
-  },
-  { // Entry 293
-    0.0,
-    0x1.p0,
-    0.0,
-  },
-  { // Entry 294
-    0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149,
-  },
-  { // Entry 295
-    -0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149,
-  },
-  { // Entry 296
-    0x1.1773d36a64df61d6715e60af063559f4p-1,
-    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
-    0x1.279a72p-1,
-  },
-  { // Entry 297
-    -0x1.1773d36a64df61d6715e60af063559f4p-1,
-    0x1.ad02c8b9cc93f448ef4eb068a88922a3p-1,
-    -0x1.279a72p-1,
-  },
-  { // Entry 298
-    0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
-    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
-    0x1.279a74p-1,
-  },
-  { // Entry 299
-    -0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
-    0x1.ad02c7a258bfb362abbe86fb48f4e98bp-1,
-    -0x1.279a74p-1,
-  },
-  { // Entry 300
-    0x1.1773d6c46a6ea687f03625194d25bb52p-1,
-    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
-    0x1.279a76p-1,
-  },
-  { // Entry 301
-    -0x1.1773d6c46a6ea687f03625194d25bb52p-1,
-    0x1.ad02c68ae4e9c579a08c04ce59be4002p-1,
-    -0x1.279a76p-1,
-  },
-  { // Entry 302
-    0x1.f95b8f40501057ac49acef13993b0c55p-1,
-    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
-    0x1.bb67acp0,
-  },
-  { // Entry 303
-    -0x1.f95b8f40501057ac49acef13993b0c55p-1,
-    -0x1.48d1c9e98b6c08784f10040f47a12191p-3,
-    -0x1.bb67acp0,
-  },
-  { // Entry 304
-    0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
-    -0x1.48d1d9b467e37955337311decd09fc74p-3,
-    0x1.bb67aep0,
-  },
-  { // Entry 305
-    -0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
-    -0x1.48d1d9b467e37955337311decd09fc74p-3,
-    -0x1.bb67aep0,
-  },
-  { // Entry 306
-    0x1.f95b8df77e36a344670ed07149191a58p-1,
-    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
-    0x1.bb67b0p0,
-  },
-  { // Entry 307
-    -0x1.f95b8df77e36a344670ed07149191a58p-1,
-    -0x1.48d1e97f4455c6eab1048022238b2bd0p-3,
-    -0x1.bb67b0p0,
-  },
-  { // Entry 308
-    0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
-    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
-    0x1.bffffep-2,
-  },
-  { // Entry 309
-    -0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
-    0x1.cfc6d011a0e5d0fcebb54b5fed672940p-1,
-    -0x1.bffffep-2,
-  },
-  { // Entry 310
-    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    0x1.c0p-2,
-  },
-  { // Entry 311
-    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    0x1.cfc6cfa52ad9f62d6d5423ca8339a00ap-1,
-    -0x1.c0p-2,
-  },
-  { // Entry 312
-    0x1.b1d83222e830d83743258fd09040ee56p-2,
-    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
-    0x1.c00002p-2,
-  },
-  { // Entry 313
-    -0x1.b1d83222e830d83743258fd09040ee56p-2,
-    0x1.cfc6cf38b4cda76c3b09b17e9deb19eap-1,
-    -0x1.c00002p-2,
-  },
-  { // Entry 314
-    0x1.44eb3691428062b27925c585ad59d62ap-1,
-    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
-    0x1.5ffffep-1,
-  },
-  { // Entry 315
-    -0x1.44eb3691428062b27925c585ad59d62ap-1,
-    0x1.8bb106eac7c75d33fbb19446313ecc2fp-1,
-    -0x1.5ffffep-1,
-  },
-  { // Entry 316
-    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    0x1.60p-1,
-  },
-  { // Entry 317
-    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    0x1.8bb105a5dc900618f80fa51d303c69p-1,
-    -0x1.60p-1,
-  },
-  { // Entry 318
-    0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
-    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
-    0x1.600002p-1,
-  },
-  { // Entry 319
-    -0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
-    0x1.8bb10460f157234ceec7d9644a1a78e5p-1,
-    -0x1.600002p-1,
-  },
-  { // Entry 320
-    0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
-    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
-    0x1.2ffffep0,
-  },
-  { // Entry 321
-    -0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
-    0x1.7ef48b9a6fd5c24f5ec39839e1729b78p-2,
-    -0x1.2ffffep0,
-  },
-  { // Entry 322
-    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    0x1.30p0,
-  },
-  { // Entry 323
-    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    0x1.7ef4842f0bccd60d4a501dc8bc4b57b3p-2,
-    -0x1.30p0,
-  },
-  { // Entry 324
-    0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
-    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
-    0x1.300002p0,
-  },
-  { // Entry 325
-    -0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
-    0x1.7ef47cc3a7bdedf9252074263d8a4596p-2,
-    -0x1.300002p0,
-  },
-  { // Entry 326
-    0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
-    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
-    0x1.37fffep1,
-  },
-  { // Entry 327
-    -0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
-    -0x1.863ef5085bcc358d2ae8525bf39f0c40p-1,
-    -0x1.37fffep1,
-  },
-  { // Entry 328
-    0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    0x1.38p1,
-  },
-  { // Entry 329
-    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    -0x1.863efa361dc252bca1eaeed39749bed7p-1,
-    -0x1.38p1,
-  },
-  { // Entry 330
-    0x1.4b707461d1f994476c677c5ad5ddb264p-1,
-    -0x1.863eff63dfa00bfc758baf469469d741p-1,
-    0x1.380002p1,
-  },
-  { // Entry 331
-    -0x1.4b707461d1f994476c677c5ad5ddb264p-1,
-    -0x1.863eff63dfa00bfc758baf469469d741p-1,
-    -0x1.380002p1,
-  },
-  { // Entry 332
-    0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
-    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
-    0x1.069c8cp-4,
-  },
-  { // Entry 333
-    -0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
-    0x1.fef2b2d0a10e2739c566936480a1479bp-1,
-    -0x1.069c8cp-4,
-  },
-  { // Entry 334
-    0x1.05e476d27febc8b7e9690009b367c327p-3,
-    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
-    0x1.069c8cp-3,
-  },
-  { // Entry 335
-    -0x1.05e476d27febc8b7e9690009b367c327p-3,
-    0x1.fbcbe68dd10bad0a229ccbb580cc5436p-1,
-    -0x1.069c8cp-3,
-  },
-  { // Entry 336
-    0x1.877e2de5c9a066b8db595adc149af0c0p-3,
-    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
-    0x1.89ead2p-3,
-  },
-  { // Entry 337
-    -0x1.877e2de5c9a066b8db595adc149af0c0p-3,
-    0x1.f68eebef72e7f6126b3f3dde646a755cp-1,
-    -0x1.89ead2p-3,
-  },
-  { // Entry 338
-    0x1.03be07acb9dab719b4343a33b9fa6afep-2,
-    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
-    0x1.069c8cp-2,
-  },
-  { // Entry 339
-    -0x1.03be07acb9dab719b4343a33b9fa6afep-2,
-    0x1.ef41459d2e90ea1b7faad7fabd1fd444p-1,
-    -0x1.069c8cp-2,
-  },
-  { // Entry 340
-    0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
-    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
-    0x1.4843b0p-2,
-  },
-  { // Entry 341
-    -0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
-    0x1.e5eaa23a27fe8d6890a3edace1c61998p-1,
-    -0x1.4843b0p-2,
-  },
-  { // Entry 342
-    0x1.804601411d93f4750919670061de07d9p-2,
-    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
-    0x1.89ead4p-2,
-  },
-  { // Entry 343
-    -0x1.804601411d93f4750919670061de07d9p-2,
-    0x1.da94d4b99c3a9a5e0d1fc86d53369a84p-1,
-    -0x1.89ead4p-2,
-  },
-  { // Entry 344
-    0x1.bc4c08af356088b1694995bfaf8a297bp-2,
-    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
-    0x1.cb91f8p-2,
-  },
-  { // Entry 345
-    -0x1.bc4c08af356088b1694995bfaf8a297bp-2,
-    0x1.cd4bc9afc01230b2f982f6968dab7f05p-1,
-    -0x1.cb91f8p-2,
-  },
-  { // Entry 346
-    0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
-    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
-    0x1.069c8ep-1,
-  },
-  { // Entry 347
-    -0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
-    0x1.be1d7adf077def2a360fec23dbbcef09p-1,
-    -0x1.069c8ep-1,
-  },
-  { // Entry 348
-    0x1.17505c86231898fd86b18d2282d93eedp-1,
-    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
-    0x1.277020p-1,
-  },
-  { // Entry 349
-    -0x1.17505c86231898fd86b18d2282d93eedp-1,
-    0x1.ad19e0847d25f3aa142289dab557bf96p-1,
-    -0x1.277020p-1,
-  },
-  { // Entry 350
-    0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
-    0x1.9a52e08b191bd55512c8365074f1987fp-1,
-    0x1.4843b2p-1,
-  },
-  { // Entry 351
-    -0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
-    0x1.9a52e08b191bd55512c8365074f1987fp-1,
-    -0x1.4843b2p-1,
-  },
-  { // Entry 352
-    0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
-    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
-    0x1.691744p-1,
-  },
-  { // Entry 353
-    -0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
-    0x1.85dc3bb7c2e9abb5cccb6d96d12d39c4p-1,
-    -0x1.691744p-1,
-  },
-  { // Entry 354
-    0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
-    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
-    0x1.89ead6p-1,
-  },
-  { // Entry 355
-    -0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
-    0x1.6fcb78e1cd65d2e4fde7118caac79d6dp-1,
-    -0x1.89ead6p-1,
-  },
-  { // Entry 356
-    0x1.7b05bb87b38844e56003c41ef804b273p-1,
-    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
-    0x1.aabe68p-1,
-  },
-  { // Entry 357
-    -0x1.7b05bb87b38844e56003c41ef804b273p-1,
-    0x1.5837ce4dc835d4a5454ec0a1bb394081p-1,
-    -0x1.aabe68p-1,
-  },
-  { // Entry 358
-    0x1.904c3b389d55d3deddb39d05eb366571p-1,
-    0x1.3f3a09427966e9518802dee3bf443a95p-1,
-    0x1.cb91fap-1,
-  },
-  { // Entry 359
-    -0x1.904c3b389d55d3deddb39d05eb366571p-1,
-    0x1.3f3a09427966e9518802dee3bf443a95p-1,
-    -0x1.cb91fap-1,
-  },
-  { // Entry 360
-    0x1.a3eda211798a82697d62431f9ae46cc4p-1,
-    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
-    0x1.ec658cp-1,
-  },
-  { // Entry 361
-    -0x1.a3eda211798a82697d62431f9ae46cc4p-1,
-    0x1.24ec73f1aeef4940bb8da19a82bbc49fp-1,
-    -0x1.ec658cp-1,
-  },
-  { // Entry 362
-    0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
-    0x1.096abb862f9bd5515982c2818c332ff9p-1,
-    0x1.069c8ep0,
-  },
-  { // Entry 363
-    -0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
-    0x1.096abb862f9bd5515982c2818c332ff9p-1,
-    -0x1.069c8ep0,
-  },
-  { // Entry 364
-    0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
-    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
-    0x1.170656p0,
-  },
-  { // Entry 365
-    -0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
-    0x1.d9a39c0dddc654c717e3036da5dd685cp-2,
-    -0x1.170656p0,
-  },
-  { // Entry 366
-    0x1.d42de53e315c839ce188e201205e99dep-1,
-    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
-    0x1.27701ep0,
-  },
-  { // Entry 367
-    -0x1.d42de53e315c839ce188e201205e99dep-1,
-    0x1.9e7f81840c0bbd0f1b13733061062d34p-2,
-    -0x1.27701ep0,
-  },
-  { // Entry 368
-    0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
-    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
-    0x1.37d9e6p0,
-  },
-  { // Entry 369
-    -0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
-    0x1.61a75e2deb596731c8cd45e3d9794526p-2,
-    -0x1.37d9e6p0,
-  },
-  { // Entry 370
-    0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
-    0x1.235b337b091cdd8ac06390abc6816b82p-2,
-    0x1.4843aep0,
-  },
-  { // Entry 371
-    -0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
-    0x1.235b337b091cdd8ac06390abc6816b82p-2,
-    -0x1.4843aep0,
-  },
-  { // Entry 372
-    0x1.f329bffa6a208591eecb6905d7594e3bp-1,
-    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
-    0x1.58ad76p0,
-  },
-  { // Entry 373
-    -0x1.f329bffa6a208591eecb6905d7594e3bp-1,
-    0x1.c7b9146d6d10824ff652dc390ba2d7f9p-3,
-    -0x1.58ad76p0,
-  },
-  { // Entry 374
-    0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
-    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
-    0x1.69173ep0,
-  },
-  { // Entry 375
-    -0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
-    0x1.46dc5b2f1de977efff7c278b5adb2a75p-3,
-    -0x1.69173ep0,
-  },
-  { // Entry 376
-    0x1.fda25455d9567772f20f25d15efc6775p-1,
-    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
-    0x1.798106p0,
-  },
-  { // Entry 377
-    -0x1.fda25455d9567772f20f25d15efc6775p-1,
-    0x1.894f93ef49c4575800bbd646a3a31d2ap-4,
-    -0x1.798106p0,
-  },
-  { // Entry 378
-    0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
-    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
-    0x1.89eacep0,
-  },
-  { // Entry 379
-    -0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
-    0x1.069164e3f5cee94d865fb52e316dff6bp-5,
-    -0x1.89eacep0,
-  },
-  { // Entry 380
-    0x1.ffbca88228b163189ab8d637db99bd2dp-1,
-    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
-    0x1.9a5496p0,
-  },
-  { // Entry 381
-    -0x1.ffbca88228b163189ab8d637db99bd2dp-1,
-    -0x1.069093eec0ed066ec83dd034498ef8bfp-5,
-    -0x1.9a5496p0,
-  },
-  { // Entry 382
-    0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
-    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
-    0x1.aabe5ep0,
-  },
-  { // Entry 383
-    -0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
-    -0x1.894f2be2979dd9ced83ccc60cf49cd44p-4,
-    -0x1.aabe5ep0,
-  },
-  { // Entry 384
-    0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
-    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
-    0x1.bb2826p0,
-  },
-  { // Entry 385
-    -0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
-    -0x1.46dc2796735195a15c80e5b719e2fc42p-3,
-    -0x1.bb2826p0,
-  },
-  { // Entry 386
-    0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
-    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
-    0x1.cb91eep0,
-  },
-  { // Entry 387
-    -0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
-    -0x1.c7b8e178b7e8c01d9f320466cc7a68d4p-3,
-    -0x1.cb91eep0,
-  },
-  { // Entry 388
-    0x1.ead686f2ec572c83ed34a01f764d193ep-1,
-    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
-    0x1.dbfbb6p0,
-  },
-  { // Entry 389
-    -0x1.ead686f2ec572c83ed34a01f764d193ep-1,
-    -0x1.235b1a6d767e4b362c64571ac97b4a1cp-2,
-    -0x1.dbfbb6p0,
-  },
-  { // Entry 390
-    0x1.e07ef3c91bd500a0de230ad573163163p-1,
-    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
-    0x1.ec657ep0,
-  },
-  { // Entry 391
-    -0x1.e07ef3c91bd500a0de230ad573163163p-1,
-    -0x1.61a745a77b7e83c2f8a2f9b091e89aaap-2,
-    -0x1.ec657ep0,
-  },
-  { // Entry 392
-    0x1.d42dea8835c88adb9cde17347f934e25p-1,
-    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
-    0x1.fccf46p0,
-  },
-  { // Entry 393
-    -0x1.d42dea8835c88adb9cde17347f934e25p-1,
-    -0x1.9e7f699e8b9aaf8ed51c71c8f73b0b74p-2,
-    -0x1.fccf46p0,
-  },
-  { // Entry 394
-    0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
-    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
-    0x1.069c88p1,
-  },
-  { // Entry 395
-    -0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
-    -0x1.d9a38bfa3195ba1caa7fb69bc1d04e42p-2,
-    -0x1.069c88p1,
-  },
-  { // Entry 396
-    0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
-    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
-    0x1.0ed16cp1,
-  },
-  { // Entry 397
-    -0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
-    -0x1.096ab3c55c91f36e2359ed1c5a8342dfp-1,
-    -0x1.0ed16cp1,
-  },
-  { // Entry 398
-    0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
-    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
-    0x1.170650p1,
-  },
-  { // Entry 399
-    -0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
-    -0x1.24ec6c8206e744322d99f47e9e41becep-1,
-    -0x1.170650p1,
-  },
-  { // Entry 400
-    0x1.904c421efce58f4e8170d36dcda8e02cp-1,
-    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
-    0x1.1f3b34p1,
-  },
-  { // Entry 401
-    -0x1.904c421efce58f4e8170d36dcda8e02cp-1,
-    -0x1.3f3a009b82b5b8234e1296dd73cff49dp-1,
-    -0x1.1f3b34p1,
-  },
-  { // Entry 402
-    0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
-    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
-    0x1.277018p1,
-  },
-  { // Entry 403
-    -0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
-    -0x1.5837c4a184ccf7ed57c189f2addf32c5p-1,
-    -0x1.277018p1,
-  },
-  { // Entry 404
-    0x1.64308f506ffdaf1326d10b3380278e98p-1,
-    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
-    0x1.2fa4fcp1,
-  },
-  { // Entry 405
-    -0x1.64308f506ffdaf1326d10b3380278e98p-1,
-    -0x1.6fcb6e6685e72fb4074e70cd3162d3bap-1,
-    -0x1.2fa4fcp1,
-  },
-  { // Entry 406
-    0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
-    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
-    0x1.37d9e0p1,
-  },
-  { // Entry 407
-    -0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
-    -0x1.85dc30a79f26754ab1370338ee7bfd11p-1,
-    -0x1.37d9e0p1,
-  },
-  { // Entry 408
-    0x1.323b9d888d4da77a610893735eeed1cbp-1,
-    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
-    0x1.400ec4p1,
-  },
-  { // Entry 409
-    -0x1.323b9d888d4da77a610893735eeed1cbp-1,
-    -0x1.9a52d523b1532e4ed477e27dc6051c12p-1,
-    -0x1.400ec4p1,
-  },
-  { // Entry 410
-    0x1.17506e2dfb603d34b9af39b12c1db735p-1,
-    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
-    0x1.4843a8p1,
-  },
-  { // Entry 411
-    -0x1.17506e2dfb603d34b9af39b12c1db735p-1,
-    -0x1.ad19d50664abf0c0141137d2ca509f21p-1,
-    -0x1.4843a8p1,
-  },
-  { // Entry 412
-    0x1.f67ed667352d4827450013f15e321bfbp-2,
-    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
-    0x1.50788cp1,
-  },
-  { // Entry 413
-    -0x1.f67ed667352d4827450013f15e321bfbp-2,
-    -0x1.be1d6f8d517db5c2cf7de0faf0808d30p-1,
-    -0x1.50788cp1,
-  },
-  { // Entry 414
-    0x1.bc4c35da51e34b776e5e04da58f23441p-2,
-    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
-    0x1.58ad70p1,
-  },
-  { // Entry 415
-    -0x1.bc4c35da51e34b776e5e04da58f23441p-2,
-    -0x1.cd4bbecf7f2705d4fd00dd463780f45ep-1,
-    -0x1.58ad70p1,
-  },
-  { // Entry 416
-    0x1.8046336e68427cf756056d3f4edbb662p-2,
-    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
-    0x1.60e254p1,
-  },
-  { // Entry 417
-    -0x1.8046336e68427cf756056d3f4edbb662p-2,
-    -0x1.da94ca915da3cdd1fff839d85eec39e2p-1,
-    -0x1.60e254p1,
-  },
-  { // Entry 418
-    0x1.42abf3872905e632f204c41b24af90b6p-2,
-    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
-    0x1.691738p1,
-  },
-  { // Entry 419
-    -0x1.42abf3872905e632f204c41b24af90b6p-2,
-    -0x1.e5ea99116b39361ac926dd9fdc2089d1p-1,
-    -0x1.691738p1,
-  },
-  { // Entry 420
-    0x1.03be43c699f3536990dcf5a6665ac239p-2,
-    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
-    0x1.714c1cp1,
-  },
-  { // Entry 421
-    -0x1.03be43c699f3536990dcf5a6665ac239p-2,
-    -0x1.ef413dbbda2859ffb0d1ab84342fd235p-1,
-    -0x1.714c1cp1,
-  },
-  { // Entry 422
-    0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
-    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
-    0x1.7981p1,
-  },
-  { // Entry 423
-    -0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
-    -0x1.f68ee5b5bf356b10230944a18e70925cp-1,
-    -0x1.7981p1,
-  },
-  { // Entry 424
-    0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
-    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
-    0x1.81b5e4p1,
-  },
-  { // Entry 425
-    -0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
-    -0x1.fbcbe23296fc61b96f382f35ea15c768p-1,
-    -0x1.81b5e4p1,
-  },
-  { // Entry 426
-    0x1.066f9b630b72dff16450e89afdf7e048p-4,
-    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
-    0x1.89eac8p1,
-  },
-  { // Entry 427
-    -0x1.066f9b630b72dff16450e89afdf7e048p-4,
-    -0x1.fef2b08943197cd3a8ba861095227c48p-1,
-    -0x1.89eac8p1,
-  },
-  { // Entry 428
-    0x1.03bdf0b79ccf739529d54d422861046cp-2,
-    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
-    -0x1.81b5eep2,
-  },
-  { // Entry 429
-    -0x1.03bdf0b79ccf739529d54d422861046cp-2,
-    0x1.ef41489fc2fe801a6fc8ae791438eb78p-1,
-    0x1.81b5eep2,
-  },
-  { // Entry 430
-    0x1.f67e8b95f5460ea369a803837b721abdp-2,
-    0x1.be1d849ec649b797320e985d0b82ae85p-1,
-    -0x1.714c26p2,
-  },
-  { // Entry 431
-    -0x1.f67e8b95f5460ea369a803837b721abdp-2,
-    0x1.be1d849ec649b797320e985d0b82ae85p-1,
-    0x1.714c26p2,
-  },
-  { // Entry 432
-    0x1.643070791751dc0636d1854d2bdbc5d4p-1,
-    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
-    -0x1.60e25ep2,
-  },
-  { // Entry 433
-    -0x1.643070791751dc0636d1854d2bdbc5d4p-1,
-    0x1.6fcb8c44bd30dd668148605969b1c161p-1,
-    0x1.60e25ep2,
-  },
-  { // Entry 434
-    0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
-    0x1.096ad87c326622c42de34f92814cfa84p-1,
-    -0x1.507896p2,
-  },
-  { // Entry 435
-    -0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
-    0x1.096ad87c326622c42de34f92814cfa84p-1,
-    0x1.507896p2,
-  },
-  { // Entry 436
-    0x1.ead679985549140318349f512dca7a6bp-1,
-    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
-    -0x1.400ecep2,
-  },
-  { // Entry 437
-    -0x1.ead679985549140318349f512dca7a6bp-1,
-    0x1.235b746a2a2eff2bf640dd8c04d35a5bp-2,
-    0x1.400ecep2,
-  },
-  { // Entry 438
-    0x1.ffbca7010e0b0452f56075cfd5982880p-1,
-    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
-    -0x1.2fa506p2,
-  },
-  { // Entry 439
-    -0x1.ffbca7010e0b0452f56075cfd5982880p-1,
-    0x1.0693827b46cee3b661ac17114b5fe0fbp-5,
-    0x1.2fa506p2,
-  },
-  { // Entry 440
-    0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
-    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
-    -0x1.1f3b3ep2,
-  },
-  { // Entry 441
-    -0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
-    -0x1.c7b85d668e2abcc46542ca8527f0b801p-3,
-    0x1.1f3b3ep2,
-  },
-  { // Entry 442
-    0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
-    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
-    -0x1.0ed176p2,
-  },
-  { // Entry 443
-    -0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
-    -0x1.d9a348d4f4363ba4562110db01ee84e8p-2,
-    0x1.0ed176p2,
-  },
-  { // Entry 444
-    0x1.7b05d864ec9802adbc4b5577c233836ap-1,
-    -0x1.5837ae8569c95846e6164d9636546120p-1,
-    -0x1.fccf5ap1,
-  },
-  { // Entry 445
-    -0x1.7b05d864ec9802adbc4b5577c233836ap-1,
-    -0x1.5837ae8569c95846e6164d9636546120p-1,
-    0x1.fccf5ap1,
-  },
-  { // Entry 446
-    0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
-    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
-    -0x1.dbfbc8p1,
-  },
-  { // Entry 447
-    -0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
-    -0x1.ad19c918883000b0b702ec080cf0122ep-1,
-    0x1.dbfbc8p1,
-  },
-  { // Entry 448
-    0x1.42ac0dd9495211816bf04ca53bce4beap-2,
-    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
-    -0x1.bb2836p1,
-  },
-  { // Entry 449
-    -0x1.42ac0dd9495211816bf04ca53bce4beap-2,
-    -0x1.e5ea94b2cf07add3d0d95ab3a30ad4abp-1,
-    0x1.bb2836p1,
-  },
-  { // Entry 450
-    0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
-    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
-    -0x1.9a54a4p1,
-  },
-  { // Entry 451
-    -0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
-    -0x1.fef2b02908559f92de892d240a2b0b49p-1,
-    0x1.9a54a4p1,
-  },
-  { // Entry 452
-    -0x1.877d931298e6fbc654f065536cff2b54p-3,
-    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
-    -0x1.798112p1,
-  },
-  { // Entry 453
-    0x1.877d931298e6fbc654f065536cff2b54p-3,
-    -0x1.f68ef3792e592c3cefbce1d5ded64a92p-1,
-    0x1.798112p1,
-  },
-  { // Entry 454
-    -0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
-    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
-    -0x1.58ad80p1,
-  },
-  { // Entry 455
-    0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
-    -0x1.cd4bda943eea13630f8e508f8744f2f2p-1,
-    0x1.58ad80p1,
-  },
-  { // Entry 456
-    -0x1.4be47d6354c4ced53780b1b519acdec2p-1,
-    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
-    -0x1.37d9eep1,
-  },
-  { // Entry 457
-    0x1.4be47d6354c4ced53780b1b519acdec2p-1,
-    -0x1.85dc54f49f324bdfc71d5749483b3318p-1,
-    0x1.37d9eep1,
-  },
-  { // Entry 458
-    -0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
-    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
-    -0x1.17065cp1,
-  },
-  { // Entry 459
-    0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
-    -0x1.24ec93e04d4bdb54e20beaf383519af8p-1,
-    0x1.17065cp1,
-  },
-  { // Entry 460
-    -0x1.e07ee496ea109654c42e171fdc4537c4p-1,
-    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
-    -0x1.ec6594p0,
-  },
-  { // Entry 461
-    0x1.e07ee496ea109654c42e171fdc4537c4p-1,
-    -0x1.61a7983d4c16c451b68bf2f5b70f3b6ap-2,
-    0x1.ec6594p0,
-  },
-  { // Entry 462
-    -0x1.fda2522219689d0e8069d90f5c969b92p-1,
-    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
-    -0x1.aabe70p0,
-  },
-  { // Entry 463
-    0x1.fda2522219689d0e8069d90f5c969b92p-1,
-    -0x1.89504a8de6c9ecac663e67583cab47e8p-4,
-    0x1.aabe70p0,
-  },
-  { // Entry 464
-    -0x1.f96fe802fe570372d0fcb6e934b43061p-1,
-    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
-    -0x1.69174cp0,
-  },
-  { // Entry 465
-    0x1.f96fe802fe570372d0fcb6e934b43061p-1,
-    0x1.46dbec9ea3a5f08ba73aa69e7e22de1cp-3,
-    0x1.69174cp0,
-  },
-  { // Entry 466
-    -0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
-    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
-    -0x1.277028p0,
-  },
-  { // Entry 467
-    0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
-    0x1.9e7f5cf075d1ec4ef69c9c67b62c27cbp-2,
-    0x1.277028p0,
-  },
-  { // Entry 468
-    -0x1.904c45326d6dde224381d1d590ada41cp-1,
-    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
-    -0x1.cb920ap-1,
-  },
-  { // Entry 469
-    0x1.904c45326d6dde224381d1d590ada41cp-1,
-    0x1.3f39fcc017653d2636837a55fdf6d2d4p-1,
-    0x1.cb920ap-1,
-  },
-  { // Entry 470
-    -0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
-    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
-    -0x1.4843c4p-1,
-  },
-  { // Entry 471
-    0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
-    0x1.9a52d5c700daa3dc8cf8f5a71f2df289p-1,
-    0x1.4843c4p-1,
-  },
-  { // Entry 472
-    -0x1.80462654bde766faf47f3140e290996dp-2,
-    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
-    -0x1.89eafcp-2,
-  },
-  { // Entry 473
-    0x1.80462654bde766faf47f3140e290996dp-2,
-    0x1.da94cd383dd7a3b91a2fc88ff905a6a0p-1,
-    0x1.89eafcp-2,
-  },
-  { // Entry 474
-    -0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
-    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
-    -0x1.069ce0p-3,
-  },
-  { // Entry 475
-    0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
-    0x1.fbcbe3de58e66c3283bc810d16c45833p-1,
-    0x1.069ce0p-3,
-  },
-  { // Entry 476
-    0x1.05e423830be01f9fe3c57d06867e0056p-3,
-    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
-    0x1.069c38p-3,
-  },
-  { // Entry 477
-    -0x1.05e423830be01f9fe3c57d06867e0056p-3,
-    0x1.fbcbe93d48563d51b6e9d6efdb62495cp-1,
-    -0x1.069c38p-3,
-  },
-  { // Entry 478
-    0x1.8045d87852f1307fea6dc751c4d15992p-2,
-    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
-    0x1.89eaa8p-2,
-  },
-  { // Entry 479
-    -0x1.8045d87852f1307fea6dc751c4d15992p-2,
-    0x1.da94dcfb1cd15853ce848ffb0264ad08p-1,
-    -0x1.89eaa8p-2,
-  },
-  { // Entry 480
-    0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
-    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
-    0x1.48439ap-1,
-  },
-  { // Entry 481
-    -0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
-    0x1.9a52eee5e35377d554ace881bdc4725bp-1,
-    -0x1.48439ap-1,
-  },
-  { // Entry 482
-    0x1.904c2b02aa59528ce044bf2213c96859p-1,
-    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
-    0x1.cb91e0p-1,
-  },
-  { // Entry 483
-    -0x1.904c2b02aa59528ce044bf2213c96859p-1,
-    0x1.3f3a1d9657ff6aa498c46f6faaf03b90p-1,
-    -0x1.cb91e0p-1,
-  },
-  { // Entry 484
-    0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
-    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
-    0x1.277014p0,
-  },
-  { // Entry 485
-    -0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
-    0x1.9e7fa617a1a3a400a7f59aa879088e31p-2,
-    -0x1.277014p0,
-  },
-  { // Entry 486
-    0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
-    0x1.46dc8a919b27840cda6e18a079da459cp-3,
-    0x1.691738p0,
-  },
-  { // Entry 487
-    -0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
-    0x1.46dc8a919b27840cda6e18a079da459cp-3,
-    -0x1.691738p0,
-  },
-  { // Entry 488
-    0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
-    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
-    0x1.aabe5cp0,
-  },
-  { // Entry 489
-    -0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
-    -0x1.894f0c0872415663b7f9e4e4801deaf0p-4,
-    -0x1.aabe5cp0,
-  },
-  { // Entry 490
-    0x1.e07ef267748b982778f8d50d2981bb3ap-1,
-    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
-    0x1.ec6580p0,
-  },
-  { // Entry 491
-    -0x1.e07ef267748b982778f8d50d2981bb3ap-1,
-    -0x1.61a74d29774ae4e3bc5533a2ea08a14ap-2,
-    -0x1.ec6580p0,
-  },
-  { // Entry 492
-    0x1.a3eda2adb01143fb21453b20bd1748fep-1,
-    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
-    0x1.170652p1,
-  },
-  { // Entry 493
-    -0x1.a3eda2adb01143fb21453b20bd1748fep-1,
-    -0x1.24ec7311bd7b2255f9b890b3ff5899f4p-1,
-    -0x1.170652p1,
-  },
-  { // Entry 494
-    0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
-    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
-    0x1.37d9e4p1,
-  },
-  { // Entry 495
-    -0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
-    -0x1.85dc3b06c435f524c873d9b5eba3def8p-1,
-    -0x1.37d9e4p1,
-  },
-  { // Entry 496
-    0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
-    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
-    0x1.58ad76p1,
-  },
-  { // Entry 497
-    -0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
-    -0x1.cd4bc93947e86671ac7f0eacd9521377p-1,
-    -0x1.58ad76p1,
-  },
-  { // Entry 498
-    0x1.877e301f43cafffe6644a8958f108729p-3,
-    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
-    0x1.798108p1,
-  },
-  { // Entry 499
-    -0x1.877e301f43cafffe6644a8958f108729p-3,
-    -0x1.f68eebd3b8f12f9433e6d7224989c10ep-1,
-    -0x1.798108p1,
-  },
-  { // Entry 500
-    -0x1.066e8ae1f824a69817e6a806e6317e28p-4,
-    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
-    0x1.9a549ap1,
-  },
-  { // Entry 501
-    0x1.066e8ae1f824a69817e6a806e6317e28p-4,
-    -0x1.fef2b2b91e40021a2fee74fc61812157p-1,
-    -0x1.9a549ap1,
-  },
-  { // Entry 502
-    -0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
-    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
-    0x1.bb282cp1,
-  },
-  { // Entry 503
-    0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
-    -0x1.e5eaa14d86168b69918c22f3716a67eap-1,
-    -0x1.bb282cp1,
-  },
-  { // Entry 504
-    -0x1.17505efb8119773c647468be1dfee45ep-1,
-    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
-    0x1.dbfbbep1,
-  },
-  { // Entry 505
-    0x1.17505efb8119773c647468be1dfee45ep-1,
-    -0x1.ad19deead0eae2f72d04165e09e4a43dp-1,
-    -0x1.dbfbbep1,
-  },
-  { // Entry 506
-    -0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
-    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
-    0x1.fccf50p1,
-  },
-  { // Entry 507
-    0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
-    -0x1.5837cc21dda44f3ab7fd96f57c014e19p-1,
-    -0x1.fccf50p1,
-  },
-  { // Entry 508
-    -0x1.c5f05982eabf022748960961666d540dp-1,
-    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
-    0x1.0ed170p2,
-  },
-  { // Entry 509
-    0x1.c5f05982eabf022748960961666d540dp-1,
-    -0x1.d9a39df207139f99ebe9b56dafb234b7p-2,
-    -0x1.0ed170p2,
-  },
-  { // Entry 510
-    -0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
-    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
-    0x1.1f3b38p2,
-  },
-  { // Entry 511
-    0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
-    -0x1.c7b9189638128bc0ae33fdf2729cc987p-3,
-    -0x1.1f3b38p2,
-  },
-  { // Entry 512
-    -0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
-    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
-    0x1.2fa5p2,
-  },
-  { // Entry 513
-    0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
-    0x1.069082e04b25e9d2ea9e263b50d08b34p-5,
-    -0x1.2fa5p2,
-  },
-  { // Entry 514
-    -0x1.ead687409c95dcaf61af98513517f507p-1,
-    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
-    0x1.400ec8p2,
-  },
-  { // Entry 515
-    0x1.ead687409c95dcaf61af98513517f507p-1,
-    0x1.235b1861f21aa86dce259e4e5b4ef395p-2,
-    -0x1.400ec8p2,
-  },
-  { // Entry 516
-    -0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
-    0x1.096aaf70341485062f443c80a90a3be3p-1,
-    0x1.507890p2,
-  },
-  { // Entry 517
-    0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
-    0x1.096aaf70341485062f443c80a90a3be3p-1,
-    -0x1.507890p2,
-  },
-  { // Entry 518
-    -0x1.643092f42ae797375531420c005ca2cfp-1,
-    0x1.6fcb6ae03107be458d07361371efabb4p-1,
-    0x1.60e258p2,
-  },
-  { // Entry 519
-    0x1.643092f42ae797375531420c005ca2cfp-1,
-    0x1.6fcb6ae03107be458d07361371efabb4p-1,
-    -0x1.60e258p2,
-  },
-  { // Entry 520
-    -0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
-    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
-    0x1.714c20p2,
-  },
-  { // Entry 521
-    0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
-    0x1.be1d6d10d5c8ceeb8bf9aeb7a9f690b9p-1,
-    -0x1.714c20p2,
-  },
-  { // Entry 522
-    -0x1.03be4d93d949325340b2f464201545a7p-2,
-    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
-    0x1.81b5e8p2,
-  },
-  { // Entry 523
-    0x1.03be4d93d949325340b2f464201545a7p-2,
-    0x1.ef413c72d988bb53937975e4fd4fcc7ap-1,
-    -0x1.81b5e8p2,
-  },
-  { // Entry 524
-    0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
-    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
-    0x1.effffep-5,
-  },
-  { // Entry 525
-    -0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
-    0x1.ff0fd2cb5a9228cfa1e01605d0626c84p-1,
-    -0x1.effffep-5,
-  },
-  { // Entry 526
-    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    0x1.f0p-5,
-  },
-  { // Entry 527
-    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    0x1.ff0fd2c96adfbad5f904a71b2d210a2ap-1,
-    -0x1.f0p-5,
-  },
-  { // Entry 528
-    0x1.efb270f840979c65b75ee5c67016a866p-5,
-    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
-    0x1.f00002p-5,
-  },
-  { // Entry 529
-    -0x1.efb270f840979c65b75ee5c67016a866p-5,
-    0x1.ff0fd2c77b2d4add40566ec5aa24fc6ep-1,
-    -0x1.f00002p-5,
-  },
-  { // Entry 530
-    0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
-    0x1.fc21005d216a89de55b192096fc6b7bap-1,
-    0x1.f7fffep-4,
-  },
-  { // Entry 531
-    -0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
-    0x1.fc21005d216a89de55b192096fc6b7bap-1,
-    -0x1.f7fffep-4,
-  },
-  { // Entry 532
-    0x1.f6baaa131de6438e5611279864fe7663p-4,
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    0x1.f8p-4,
-  },
-  { // Entry 533
-    -0x1.f6baaa131de6438e5611279864fe7663p-4,
-    0x1.fc210055467fe58a20193399b3bc0dd2p-1,
-    -0x1.f8p-4,
-  },
-  { // Entry 534
-    0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
-    0x1.fc21004d6b953945667f800ff81de0ebp-1,
-    0x1.f80002p-4,
-  },
-  { // Entry 535
-    -0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
-    0x1.fc21004d6b953945667f800ff81de0ebp-1,
-    -0x1.f80002p-4,
-  },
-  { // Entry 536
-    0x1.4a8c395552fb432af31780e883c98f71p-3,
-    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
-    0x1.4bfffep-3,
-  },
-  { // Entry 537
-    -0x1.4a8c395552fb432af31780e883c98f71p-3,
-    0x1.f94984c6fdf1be6168509ff1e35f62dep-1,
-    -0x1.4bfffep-3,
-  },
-  { // Entry 538
-    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    0x1.4cp-3,
-  },
-  { // Entry 539
-    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    0x1.f94984b2552e1941ec766c6a82ece4a3p-1,
-    -0x1.4cp-3,
-  },
-  { // Entry 540
-    0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
-    0x1.f949849dac6a548dd851139041106316p-1,
-    0x1.4c0002p-3,
-  },
-  { // Entry 541
-    -0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
-    0x1.f949849dac6a548dd851139041106316p-1,
-    -0x1.4c0002p-3,
-  },
-  { // Entry 542
-    0x1.2e9cd83630eb35c12efcfb8413583998p-2,
-    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
-    0x1.333332p-2,
-  },
-  { // Entry 543
-    -0x1.2e9cd83630eb35c12efcfb8413583998p-2,
-    0x1.e921dd7054ef5d4f727d938ce10a053cp-1,
-    -0x1.333332p-2,
-  },
-  { // Entry 544
-    0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
-    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
-    0x1.333334p-2,
-  },
-  { // Entry 545
-    -0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
-    0x1.e921dd24adb9129efc053f9acd4d2444p-1,
-    -0x1.333334p-2,
-  },
-  { // Entry 546
-    0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
-    0x1.e921dcd906824da60e43c03a7774b171p-1,
-    0x1.333336p-2,
-  },
-  { // Entry 547
-    -0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
-    0x1.e921dcd906824da60e43c03a7774b171p-1,
-    -0x1.333336p-2,
-  },
-  { // Entry 548
-    0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
-    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
-    0x1.594316p-1,
-  },
-  { // Entry 549
-    -0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
-    0x1.8feedc92764bfbdcb41389e82063ed6ep-1,
-    -0x1.594316p-1,
-  },
-  { // Entry 550
-    0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
-    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
-    0x1.594318p-1,
-  },
-  { // Entry 551
-    -0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
-    0x1.8feedb52c750087c5f8727e0279e5f66p-1,
-    -0x1.594318p-1,
-  },
-  { // Entry 552
-    0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
-    0x1.8feeda131852852d2fa7fe8847b05973p-1,
-    0x1.59431ap-1,
-  },
-  { // Entry 553
-    -0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
-    0x1.8feeda131852852d2fa7fe8847b05973p-1,
-    -0x1.59431ap-1,
-  },
-  { // Entry 554
-    0x1.6888a375ab228c1e031c4005769509f9p-1,
-    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
-    0x1.8ffffep-1,
-  },
-  { // Entry 555
-    -0x1.6888a375ab228c1e031c4005769509f9p-1,
-    0x1.6b8991127859fd9b43ca1d08b92aa401p-1,
-    -0x1.8ffffep-1,
-  },
-  { // Entry 556
-    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    0x1.90p-1,
-  },
-  { // Entry 557
-    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    0x1.6b898fa9efb5d22b58f0d99e9634931ap-1,
-    -0x1.90p-1,
-  },
-  { // Entry 558
-    0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
-    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
-    0x1.900002p-1,
-  },
-  { // Entry 559
-    -0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
-    0x1.6b898e4167103b31de6da67ebf5e9fe6p-1,
-    -0x1.900002p-1,
-  },
-  { // Entry 560
-    -0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149,
-  },
-  { // Entry 561
-    0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149,
-  },
-  { // Entry 562
-    0.0,
-    0x1.p0,
-    0.0,
-  },
-  { // Entry 563
-    0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149,
-  },
-  { // Entry 564
-    -0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149,
-  },
-  { // Entry 565
-    0x1.91f65dccfead353d8db9c32f12262730p-5,
-    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
-    0x1.921fb4p-5,
-  },
-  { // Entry 566
-    -0x1.91f65dccfead353d8db9c32f12262730p-5,
-    0x1.ff621e38956a3b3be920256ddb6034cdp-1,
-    -0x1.921fb4p-5,
-  },
-  { // Entry 567
-    0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
-    0x1.ff621e370373dc6f3963d42896ede078p-1,
-    0x1.921fb6p-5,
-  },
-  { // Entry 568
-    -0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
-    0x1.ff621e370373dc6f3963d42896ede078p-1,
-    -0x1.921fb6p-5,
-  },
-  { // Entry 569
-    0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
-    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
-    0x1.921fb8p-5,
-  },
-  { // Entry 570
-    -0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
-    0x1.ff621e35717d7ba327894bdfde9f4787p-1,
-    -0x1.921fb8p-5,
-  },
-  { // Entry 571
-    0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
-    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
-    0x1.921fb4p-4,
-  },
-  { // Entry 572
-    -0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
-    0x1.fd88da410b61cd55221d9beb996d4d99p-1,
-    -0x1.921fb4p-4,
-  },
-  { // Entry 573
-    0x1.917a6c7d7103b9d90e09615164449c6bp-4,
-    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
-    0x1.921fb6p-4,
-  },
-  { // Entry 574
-    -0x1.917a6c7d7103b9d90e09615164449c6bp-4,
-    0x1.fd88da3ac5781f5a6fc32e40ed5122b0p-1,
-    -0x1.921fb6p-4,
-  },
-  { // Entry 575
-    0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
-    0x1.fd88da347f8e696999ffd58060ba3569p-1,
-    0x1.921fb8p-4,
-  },
-  { // Entry 576
-    -0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
-    0x1.fd88da347f8e696999ffd58060ba3569p-1,
-    -0x1.921fb8p-4,
-  },
-  { // Entry 577
-    0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
-    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
-    0x1.921fb4p-3,
-  },
-  { // Entry 578
-    -0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
-    0x1.f6297d0f4671da580dfecdd4db29f473p-1,
-    -0x1.921fb4p-3,
-  },
-  { // Entry 579
-    0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
-    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
-    0x1.921fb6p-3,
-  },
-  { // Entry 580
-    -0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
-    0x1.f6297cf64db9a21d98ab3940fc8a86f0p-1,
-    -0x1.921fb6p-3,
-  },
-  { // Entry 581
-    0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
-    0x1.f6297cdd55014a808b883fd183f318acp-1,
-    0x1.921fb8p-3,
-  },
-  { // Entry 582
-    -0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
-    0x1.f6297cdd55014a808b883fd183f318acp-1,
-    -0x1.921fb8p-3,
-  },
-  { // Entry 583
-    0x1.87de293f569717a42a3bdb01aeae2063p-2,
-    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
-    0x1.921fb4p-2,
-  },
-  { // Entry 584
-    -0x1.87de293f569717a42a3bdb01aeae2063p-2,
-    0x1.d906bd313443007dcb0bd4e3d63284c0p-1,
-    -0x1.921fb4p-2,
-  },
-  { // Entry 585
-    0x1.87de2b185d5417dca800b85ca1319043p-2,
-    0x1.d906bccf3cb875874da3da4c01104bafp-1,
-    0x1.921fb6p-2,
-  },
-  { // Entry 586
-    -0x1.87de2b185d5417dca800b85ca1319043p-2,
-    0x1.d906bccf3cb875874da3da4c01104bafp-1,
-    -0x1.921fb6p-2,
-  },
-  { // Entry 587
-    0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
-    0x1.d906bc6d452d744f210810861102f2dap-1,
-    0x1.921fb8p-2,
-  },
-  { // Entry 588
-    -0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
-    0x1.d906bc6d452d744f210810861102f2dap-1,
-    -0x1.921fb8p-2,
-  },
-  { // Entry 589
-    0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
-    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
-    0x1.921fb4p-1,
-  },
-  { // Entry 590
-    -0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
-    0x1.6a09e74d3d3fbb94d94274f37769f6eap-1,
-    -0x1.921fb4p-1,
-  },
-  { // Entry 591
-    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    0x1.921fb6p-1,
-  },
-  { // Entry 592
-    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    -0x1.921fb6p-1,
-  },
-  { // Entry 593
-    0x1.6a09e856be050baccde9a76961e84aa7p-1,
-    0x1.6a09e4792971e22c9a00261aeac070dap-1,
-    0x1.921fb8p-1,
-  },
-  { // Entry 594
-    -0x1.6a09e856be050baccde9a76961e84aa7p-1,
-    0x1.6a09e4792971e22c9a00261aeac070dap-1,
-    -0x1.921fb8p-1,
-  },
-  { // Entry 595
-    0x1.fffffffffffe6546cc38211c26dabeebp-1,
-    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
-    0x1.921fb4p0,
-  },
-  { // Entry 596
-    -0x1.fffffffffffe6546cc38211c26dabeebp-1,
-    0x1.4442d18469893610281a0f9b0e8d0eefp-24,
-    -0x1.921fb4p0,
-  },
-  { // Entry 597
-    0x1.ffffffffffff76521249c7422930ed82p-1,
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    0x1.921fb6p0,
-  },
-  { // Entry 598
-    -0x1.ffffffffffff76521249c7422930ed82p-1,
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    -0x1.921fb6p0,
-  },
-  { // Entry 599
-    0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
-    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
-    0x1.921fb8p0,
-  },
-  { // Entry 600
-    -0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
-    -0x1.5dde973dcb3985f4a8e76a1feca29e1dp-23,
-    -0x1.921fb8p0,
-  },
-  { // Entry 601
-    0x1.4442d184698831f15b6315bfa6b5ae75p-23,
-    -0x1.fffffffffff9951b30e084732e60bb85p-1,
-    0x1.921fb4p1,
-  },
-  { // Entry 602
-    -0x1.4442d184698831f15b6315bfa6b5ae75p-23,
-    -0x1.fffffffffff9951b30e084732e60bb85p-1,
-    -0x1.921fb4p1,
-  },
-  { // Entry 603
-    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    0x1.921fb6p1,
-  },
-  { // Entry 604
-    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    -0x1.921fb6p1,
-  },
-  { // Entry 605
-    -0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
-    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
-    0x1.921fb8p1,
-  },
-  { // Entry 606
-    0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
-    -0x1.ffffffffffe21d75616db5ebc56405f5p-1,
-    -0x1.921fb8p1,
-  },
-  { // Entry 607
-    -0x1.4442d1846984217628872e56eb58b4c1p-22,
-    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
-    0x1.921fb4p2,
-  },
-  { // Entry 608
-    0x1.4442d1846984217628872e56eb58b4c1p-22,
-    0x1.ffffffffffe6546cc38211f5e8deeb97p-1,
-    -0x1.921fb4p2,
-  },
-  { // Entry 609
-    0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
-    0x1.fffffffffff76521249c74285bf73c07p-1,
-    0x1.921fb6p2,
-  },
-  { // Entry 610
-    -0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
-    0x1.fffffffffff76521249c74285bf73c07p-1,
-    -0x1.921fb6p2,
-  },
-  { // Entry 611
-    0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
-    0x1.ffffffffff8875d585b6db2c31711004p-1,
-    0x1.921fb8p2,
-  },
-  { // Entry 612
-    -0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
-    0x1.ffffffffff8875d585b6db2c31711004p-1,
-    -0x1.921fb8p2,
-  },
-  { // Entry 613
-    -0x1.4442d1846973df895d1791023ded513cp-21,
-    0x1.ffffffffff9951b30e084a6a993b8675p-1,
-    0x1.921fb4p3,
-  },
-  { // Entry 614
-    0x1.4442d1846973df895d1791023ded513cp-21,
-    0x1.ffffffffff9951b30e084a6a993b8675p-1,
-    -0x1.921fb4p3,
-  },
-  { // Entry 615
-    0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
-    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
-    0x1.921fb6p3,
-  },
-  { // Entry 616
-    -0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
-    0x1.ffffffffffdd94849271d0eb7b7b884bp-1,
-    -0x1.921fb6p3,
-  },
-  { // Entry 617
-    0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
-    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
-    0x1.921fb8p3,
-  },
-  { // Entry 618
-    -0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
-    0x1.fffffffffe21d75616dba48283d3c2f7p-1,
-    -0x1.921fb8p3,
-  },
-  { // Entry 619
-    -0x1.4442d1846932d7d62f59209388c7f7cap-20,
-    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
-    0x1.921fb4p4,
-  },
-  { // Entry 620
-    0x1.4442d1846932d7d62f59209388c7f7cap-20,
-    0x1.fffffffffe6546cc382152d9c0eb9b47p-1,
-    -0x1.921fb4p4,
-  },
-  { // Entry 621
-    0x1.777a5cf72ccb3e87788b811229e725bcp-21,
-    0x1.ffffffffff76521249c7484ea7d7a409p-1,
-    0x1.921fb6p4,
-  },
-  { // Entry 622
-    -0x1.777a5cf72ccb3e87788b811229e725bcp-21,
-    0x1.ffffffffff76521249c7484ea7d7a409p-1,
-    -0x1.921fb6p4,
-  },
-  { // Entry 623
-    0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
-    0x1.fffffffff8875d585b720f25f0473943p-1,
-    0x1.921fb8p4,
-  },
-  { // Entry 624
-    -0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
-    0x1.fffffffff8875d585b720f25f0473943p-1,
-    -0x1.921fb8p4,
-  },
-  { // Entry 625
-    -0x1.4442d184682eb909785fad18bcb5dbfcp-19,
-    0x1.fffffffff9951b30e087de5cc38683b8p-1,
-    0x1.921fb4p5,
-  },
-  { // Entry 626
-    0x1.4442d184682eb909785fad18bcb5dbfcp-19,
-    0x1.fffffffff9951b30e087de5cc38683b8p-1,
-    -0x1.921fb4p5,
-  },
-  { // Entry 627
-    0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
-    0x1.fffffffffdd94849271d6b463df6bddfp-1,
-    0x1.921fb6p5,
-  },
-  { // Entry 628
-    -0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
-    0x1.fffffffffdd94849271d6b463df6bddfp-1,
-    -0x1.921fb6p5,
-  },
-  { // Entry 629
-    0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
-    0x1.ffffffffe21d75616e000e55d09f8757p-1,
-    0x1.921fb8p5,
-  },
-  { // Entry 630
-    -0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
-    0x1.ffffffffe21d75616e000e55d09f8757p-1,
-    -0x1.921fb8p5,
-  },
-  { // Entry 631
-    -0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
-    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
-    0x1.921fb4p6,
-  },
-  { // Entry 632
-    0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
-    0x1.ffffffffe6546cc38248a8cf0b9b5795p-1,
-    -0x1.921fb4p6,
-  },
-  { // Entry 633
-    0x1.777a5cf72ad267903aec8118778b3b5ap-19,
-    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
-    0x1.921fb6p6,
-  },
-  { // Entry 634
-    -0x1.777a5cf72ad267903aec8118778b3b5ap-19,
-    0x1.fffffffff76521249c7a4dd2e15dd1c4p-1,
-    -0x1.921fb6p6,
-  },
-  { // Entry 635
-    0x1.5dde973db000ace3f985a473ea1fc039p-17,
-    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
-    0x1.921fb8p6,
-  },
-  { // Entry 636
-    -0x1.5dde973db000ace3f985a473ea1fc039p-17,
-    0x1.ffffffff8875d585bb7d55383a9b39a4p-1,
-    -0x1.921fb8p6,
-  },
-  { // Entry 637
-    -0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
-    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
-    0x1.921fb4p7,
-  },
-  { // Entry 638
-    0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
-    0x1.ffffffff9951b30e0bb598fc0679a6f7p-1,
-    -0x1.921fb4p7,
-  },
-  { // Entry 639
-    0x1.777a5cf72482eadf75c731f972507718p-18,
-    0x1.ffffffffdd948492723342ea1da49bacp-1,
-    0x1.921fb6p7,
-  },
-  { // Entry 640
-    -0x1.777a5cf72482eadf75c731f972507718p-18,
-    0x1.ffffffffdd948492723342ea1da49bacp-1,
-    -0x1.921fb6p7,
-  },
-  { // Entry 641
-    0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
-    0x1.fffffffe21d7561725c712f068fc9718p-1,
-    0x1.921fb8p7,
-  },
-  { // Entry 642
-    -0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
-    0x1.fffffffe21d7561725c712f068fc9718p-1,
-    -0x1.921fb8p7,
-  },
-  { // Entry 643
-    0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
-    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
-    0x1.2d97c4p1,
-  },
-  { // Entry 644
-    -0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
-    -0x1.6a09db3bdba0868a31e766359a8406cap-1,
-    -0x1.2d97c4p1,
-  },
-  { // Entry 645
-    0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
-    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
-    0x1.2d97c6p1,
-  },
-  { // Entry 646
-    -0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
-    -0x1.6a09e0e4035b86694c16534e42fbe111p-1,
-    -0x1.2d97c6p1,
-  },
-  { // Entry 647
-    0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
-    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
-    0x1.2d97c8p1,
-  },
-  { // Entry 648
-    -0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
-    -0x1.6a09e68c2affe5aa58050accb05c6248p-1,
-    -0x1.2d97c8p1,
-  },
-  { // Entry 649
-    -0x1.6a09df19704cf14108e09000ff6374bfp-1,
-    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
-    0x1.f6a7a0p1,
-  },
-  { // Entry 650
-    0x1.6a09df19704cf14108e09000ff6374bfp-1,
-    -0x1.6a09edb67706e0997121d12a0c87bae8p-1,
-    -0x1.f6a7a0p1,
-  },
-  { // Entry 651
-    -0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
-    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
-    0x1.f6a7a2p1,
-  },
-  { // Entry 652
-    0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
-    -0x1.6a09e80e4f7f2a88debed37faa93e8c8p-1,
-    -0x1.f6a7a2p1,
-  },
-  { // Entry 653
-    -0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
-    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
-    0x1.f6a7a4p1,
-  },
-  { // Entry 654
-    0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
-    -0x1.6a09e26627e0d3d9cb76de00cb902becp-1,
-    -0x1.f6a7a4p1,
-  },
-  { // Entry 655
-    -0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
-    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
-    0x1.2d97c4p2,
-  },
-  { // Entry 656
-    0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
-    -0x1.f9990e91a74168b90bd68dfab775c9cap-21,
-    -0x1.2d97c4p2,
-  },
-  { // Entry 657
-    -0x1.ffffffffffc32939898f464aafc2e74ap-1,
-    -0x1.f3321d234f1363d187dd09528b67b215p-22,
-    0x1.2d97c6p2,
-  },
-  { // Entry 658
-    0x1.ffffffffffc32939898f464aafc2e74ap-1,
-    -0x1.f3321d234f1363d187dd09528b67b215p-22,
-    -0x1.2d97c6p2,
-  },
-  { // Entry 659
-    -0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
-    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
-    0x1.2d97c8p2,
-  },
-  { // Entry 660
-    0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
-    0x1.99bc5b961b1acaca18d971f68ae99da9p-27,
-    -0x1.2d97c8p2,
-  },
-  { // Entry 661
-    -0x1.6a09f529316cde5a190d235cc4ccb825p-1,
-    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
-    0x1.5fdbbcp2,
-  },
-  { // Entry 662
-    0x1.6a09f529316cde5a190d235cc4ccb825p-1,
-    0x1.6a09d7a6b572c2c824d137d0405d8188p-1,
-    -0x1.5fdbbcp2,
-  },
-  { // Entry 663
-    -0x1.6a09e9d8e2826770567ea818b2e89960p-1,
-    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
-    0x1.5fdbbep2,
-  },
-  { // Entry 664
-    0x1.6a09e9d8e2826770567ea818b2e89960p-1,
-    0x1.6a09e2f704eecb181e3f5ece9be0ca0fp-1,
-    -0x1.5fdbbep2,
-  },
-  { // Entry 665
-    -0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
-    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
-    0x1.5fdbc0p2,
-  },
-  { // Entry 666
-    0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
-    0x1.6a09ee47541050ef59ec4bfce935cc1ap-1,
-    -0x1.5fdbc0p2,
-  },
-  { // Entry 667
-    0x1.6a09d033fa715a407a6f03d01b91113fp-1,
-    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
-    0x1.c463a8p2,
-  },
-  { // Entry 668
-    -0x1.6a09d033fa715a407a6f03d01b91113fp-1,
-    0x1.6a09fc9bebaba208c81ec0b1cd307589p-1,
-    -0x1.c463a8p2,
-  },
-  { // Entry 669
-    0x1.6a09db844a28f8635851fdf8818515efp-1,
-    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
-    0x1.c463aap2,
-  },
-  { // Entry 670
-    -0x1.6a09db844a28f8635851fdf8818515efp-1,
-    0x1.6a09f14b9cfcc0f6227d386cc3704a05p-1,
-    -0x1.c463aap2,
-  },
-  { // Entry 671
-    0x1.6a09e6d49986140f55226fc58672612cp-1,
-    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
-    0x1.c463acp2,
-  },
-  { // Entry 672
-    -0x1.6a09e6d49986140f55226fc58672612cp-1,
-    0x1.6a09e5fb4df35d6729f472da3413e404p-1,
-    -0x1.c463acp2,
-  },
-  { // Entry 673
-    0x1.ffffffffff95397934cac1f28532d3d3p-1,
-    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
-    0x1.f6a7a0p2,
-  },
-  { // Entry 674
-    -0x1.ffffffffff95397934cac1f28532d3d3p-1,
-    0x1.4aa9c2f2c1defb8728f0d2da1217aae1p-21,
-    -0x1.f6a7a0p2,
-  },
-  { // Entry 675
-    0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
-    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
-    0x1.f6a7a2p2,
-  },
-  { // Entry 676
-    -0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
-    0x1.2aa70bcb07d6d0f36b777cb380a845d9p-23,
-    -0x1.f6a7a2p2,
-  },
-  { // Entry 677
-    0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
-    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
-    0x1.f6a7a4p2,
-  },
-  { // Entry 678
-    -0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
-    -0x1.6aac7a1a7c0c7afc5fcb2313a7eca229p-22,
-    -0x1.f6a7a4p2,
-  },
-  { // Entry 679
-    0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
-    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
-    0x1.1475cap3,
-  },
-  { // Entry 680
-    -0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
-    -0x1.6a09c8c13f48b7aad851f9d6474bcb31p-1,
-    -0x1.1475cap3,
-  },
-  { // Entry 681
-    0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
-    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
-    0x1.1475ccp3,
-  },
-  { // Entry 682
-    -0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
-    -0x1.6a09df61ded49d1ee4fca4ba6140d179p-1,
-    -0x1.1475ccp3,
-  },
-  { // Entry 683
-    0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
-    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
-    0x1.1475cep3,
-  },
-  { // Entry 684
-    -0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
-    -0x1.6a09f6027cf678b38fc8992cd9990302p-1,
-    -0x1.1475cep3,
-  },
-  { // Entry 685
-    0x1.f9990e91a64ae486757878bdfee0f703p-20,
-    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
-    0x1.2d97c4p3,
-  },
-  { // Entry 686
-    -0x1.f9990e91a64ae486757878bdfee0f703p-20,
-    -0x1.fffffffffc1972c902ef31c37cb54817p-1,
-    -0x1.2d97c4p3,
-  },
-  { // Entry 687
-    0x1.f3321d234ed8128aabb0499a43b4def2p-21,
-    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
-    0x1.2d97c6p3,
-  },
-  { // Entry 688
-    -0x1.f3321d234ed8128aabb0499a43b4def2p-21,
-    -0x1.ffffffffff0ca4e6263d27a0204389dfp-1,
-    -0x1.2d97c6p3,
-  },
-  { // Entry 689
-    -0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
-    -0x1.ffffffffffffd703498c3b8288563915p-1,
-    0x1.2d97c8p3,
-  },
-  { // Entry 690
-    0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
-    -0x1.ffffffffffffd703498c3b8288563915p-1,
-    -0x1.2d97c8p3,
-  },
-  { // Entry 691
-    -0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
-    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
-    0x1.46b9c0p3,
-  },
-  { // Entry 692
-    0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
-    -0x1.6a0a0b815fb37b2d01551e07cb3009d1p-1,
-    -0x1.46b9c0p3,
-  },
-  { // Entry 693
-    -0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
-    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
-    0x1.46b9c2p3,
-  },
-  { // Entry 694
-    0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
-    -0x1.6a09f4e0c2e98deb78642b6032a73d46p-1,
-    -0x1.46b9c2p3,
-  },
-  { // Entry 695
-    -0x1.6a09ee8fc294f35db3efce565365af89p-1,
-    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
-    0x1.46b9c4p3,
-  },
-  { // Entry 696
-    0x1.6a09ee8fc294f35db3efce565365af89p-1,
-    -0x1.6a09de4024b596b50eb06d562db8c777p-1,
-    -0x1.46b9c4p3,
-  },
-  { // Entry 697
-    -0x1.fffffffffe4c96b397d951cb21861c95p-1,
-    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
-    0x1.5fdbbcp3,
-  },
-  { // Entry 698
-    0x1.fffffffffe4c96b397d951cb21861c95p-1,
-    -0x1.4ddd3ba9edcd898b9946fdd20af22a68p-20,
-    -0x1.5fdbbcp3,
-  },
-  { // Entry 699
-    -0x1.ffffffffffe8512aebb56c9e75b41941p-1,
-    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
-    0x1.5fdbbep3,
-  },
-  { // Entry 700
-    0x1.ffffffffffe8512aebb56c9e75b41941p-1,
-    -0x1.3774eea7b8abe8fa8c380142b97af4b6p-22,
-    -0x1.5fdbbep3,
-  },
-  { // Entry 701
-    -0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
-    0x1.644588ac238ae493fa32435ba51329bfp-21,
-    0x1.5fdbc0p3,
-  },
-  { // Entry 702
-    0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
-    0x1.644588ac238ae493fa32435ba51329bfp-21,
-    -0x1.5fdbc0p3,
-  },
-  { // Entry 703
-    -0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
-    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
-    0x1.78fdb6p3,
-  },
-  { // Entry 704
-    0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
-    0x1.6a09b9dbc881c458e747908caf2aa5e1p-1,
-    -0x1.78fdb6p3,
-  },
-  { // Entry 705
-    -0x1.6a09fc537d29cf131d6710991bebabedp-1,
-    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
-    0x1.78fdb8p3,
-  },
-  { // Entry 706
-    0x1.6a09fc537d29cf131d6710991bebabedp-1,
-    0x1.6a09d07c68fc010ffcfd3b19f1ee4f44p-1,
-    -0x1.78fdb8p3,
-  },
-  { // Entry 707
-    -0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
-    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
-    0x1.78fdbap3,
-  },
-  { // Entry 708
-    0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
-    0x1.6a09e71d080c33f6964a07d1a0bf5980p-1,
-    -0x1.78fdbap3,
-  },
-  { // Entry 709
-    0x1.6a09c909add4dbf32253a39d5c306308p-1,
-    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
-    0x1.ab41aep3,
-  },
-  { // Entry 710
-    -0x1.6a09c909add4dbf32253a39d5c306308p-1,
-    0x1.6a0a03c63742d62802d163d5cfb3b7d5p-1,
-    -0x1.ab41aep3,
-  },
-  { // Entry 711
-    0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
-    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
-    0x1.ab41b0p3,
-  },
-  { // Entry 712
-    -0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
-    0x1.6a09ed2599fd364c97660cca6652c0a3p-1,
-    -0x1.ab41b0p3,
-  },
-  { // Entry 713
-    0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
-    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
-    0x1.ab41b2p3,
-  },
-  { // Entry 714
-    -0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
-    0x1.6a09d684fb4d8c840660d6b42ec83039p-1,
-    -0x1.ab41b2p3,
-  },
-  { // Entry 715
-    0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
-    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
-    0x1.c463a8p3,
-  },
-  { // Entry 716
-    -0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
-    0x1.f66595da7a1ae308d26a18de4c2ed3a3p-20,
-    -0x1.c463a8p3,
-  },
-  { // Entry 717
-    0x1.ffffffffff12d89bb084dd762848b3d6p-1,
-    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
-    0x1.c463aap3,
-  },
-  { // Entry 718
-    -0x1.ffffffffff12d89bb084dd762848b3d6p-1,
-    0x1.eccb2bb4f66ea861241fa09ca9d8a034p-21,
-    -0x1.c463aap3,
-  },
-  { // Entry 719
-    0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
-    -0x1.334d44b0945407b118b361ab78171f67p-25,
-    0x1.c463acp3,
-  },
-  { // Entry 720
-    -0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
-    -0x1.334d44b0945407b118b361ab78171f67p-25,
-    -0x1.c463acp3,
-  },
-  { // Entry 721
-    0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
-    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
-    0x1.dd85a4p3,
-  },
-  { // Entry 722
-    -0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
-    -0x1.6a09c196f2867cc916ae2b7e6c9d99c1p-1,
-    -0x1.dd85a4p3,
-  },
-  { // Entry 723
-    0x1.6a09f49854662eff1b35755a129044a7p-1,
-    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
-    0x1.dd85a6p3,
-  },
-  { // Entry 724
-    -0x1.6a09f49854662eff1b35755a129044a7p-1,
-    -0x1.6a09d837928506f7cff76f094b4e0377p-1,
-    -0x1.dd85a6p3,
-  },
-  { // Entry 725
-    0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
-    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
-    0x1.dd85a8p3,
-  },
-  { // Entry 726
-    -0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
-    -0x1.6a09eed83119874e51ae4bb8aeddc1f2p-1,
-    -0x1.dd85a8p3,
-  },
-  { // Entry 727
-    0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
-    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
-    0x1.f6a7a0p3,
-  },
-  { // Entry 728
-    -0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
-    -0x1.fffffffffe54e5e4d32b3453166060b3p-1,
-    -0x1.f6a7a0p3,
-  },
-  { // Entry 729
-    0x1.2aa70bcb07d3a40781510d213652e43ap-22,
-    -0x1.ffffffffffea396ab8aee509392c755dp-1,
-    0x1.f6a7a2p3,
-  },
-  { // Entry 730
-    -0x1.2aa70bcb07d3a40781510d213652e43ap-22,
-    -0x1.ffffffffffea396ab8aee509392c755dp-1,
-    -0x1.f6a7a2p3,
-  },
-  { // Entry 731
-    -0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
-    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
-    0x1.f6a7a4p3,
-  },
-  { // Entry 732
-    0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
-    -0x1.ffffffffff7f8cf09e32d6309bea85cap-1,
-    -0x1.f6a7a4p3,
-  },
-  { // Entry 733
-    -0x1.6a09a383953124096898340f9168b9d5p-1,
-    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
-    0x1.07e4ccp4,
-  },
-  { // Entry 734
-    0x1.6a09a383953124096898340f9168b9d5p-1,
-    -0x1.6a0a294c45ec747a47711a4994d2c5e4p-1,
-    -0x1.07e4ccp4,
-  },
-  { // Entry 735
-    -0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
-    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
-    0x1.07e4cep4,
-  },
-  { // Entry 736
-    0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
-    -0x1.6a09fc0b0ea7ed9fb5dd50a0c8af19cbp-1,
-    -0x1.07e4cep4,
-  },
-  { // Entry 737
-    -0x1.6a09fe061433e7770d00ca59d5a56251p-1,
-    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
-    0x1.07e4d0p4,
-  },
-  { // Entry 738
-    0x1.6a09fe061433e7770d00ca59d5a56251p-1,
-    -0x1.6a09cec9d1bb3ed4f810c9f9786d610ep-1,
-    -0x1.07e4d0p4,
-  },
-  { // Entry 739
-    -0x1.fffffffff9219dae5feda1b539335803p-1,
-    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
-    0x1.1475cap4,
-  },
-  { // Entry 740
-    0x1.fffffffff9219dae5feda1b539335803p-1,
-    -0x1.4f76f80582c73fc0cc0903ed8ca7d6b3p-19,
-    -0x1.1475cap4,
-  },
-  { // Entry 741
-    -0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
-    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
-    0x1.1475ccp4,
-  },
-  { // Entry 742
-    0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
-    -0x1.3ddbe0161108b690eed70a7f59de751cp-21,
-    -0x1.1475ccp4,
-  },
-  { // Entry 743
-    -0x1.fffffffffe190d2eb82e74efd2093215p-1,
-    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
-    0x1.1475cep4,
-  },
-  { // Entry 744
-    0x1.fffffffffe190d2eb82e74efd2093215p-1,
-    0x1.61120ff4f70180b0d55c3ae0f69585cap-20,
-    -0x1.1475cep4,
-  },
-  { // Entry 745
-    -0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
-    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
-    0x1.2106c8p4,
-  },
-  { // Entry 746
-    0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
-    0x1.6a09b2b17b741050a6cfd64b81c76485p-1,
-    -0x1.2106c8p4,
-  },
-  { // Entry 747
-    -0x1.6a09ecdd2b784b699034ee8102670e27p-1,
-    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
-    0x1.2106cap4,
-  },
-  { // Entry 748
-    0x1.6a09ecdd2b784b699034ee8102670e27p-1,
-    0x1.6a09dff2bbe3c9616a3576c55e773207p-1,
-    -0x1.2106cap4,
-  },
-  { // Entry 749
-    -0x1.6a09bf9beca5e03188301639c09ed574p-1,
-    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
-    0x1.2106ccp4,
-  },
-  { // Entry 750
-    0x1.6a09bf9beca5e03188301639c09ed574p-1,
-    0x1.6a0a0d33f6ab5af262ad6ad18ac1ce9fp-1,
-    -0x1.2106ccp4,
-  },
-  { // Entry 751
-    -0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
-    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
-    0x1.2d97c4p4,
-  },
-  { // Entry 752
-    0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
-    0x1.fffffffff065cb240bcbfdff4977ddf8p-1,
-    -0x1.2d97c4p4,
-  },
-  { // Entry 753
-    -0x1.f3321d234deacd6f3afd75039685012fp-20,
-    0x1.fffffffffc32939898f585d6948cf2d1p-1,
-    0x1.2d97c6p4,
-  },
-  { // Entry 754
-    0x1.f3321d234deacd6f3afd75039685012fp-20,
-    0x1.fffffffffc32939898f585d6948cf2d1p-1,
-    -0x1.2d97c6p4,
-  },
-  { // Entry 755
-    0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
-    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
-    0x1.2d97c8p4,
-  },
-  { // Entry 756
-    -0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
-    0x1.ffffffffffff5c0d2630ee0a27e8d6d1p-1,
-    -0x1.2d97c8p4,
-  },
-  { // Entry 757
-    0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
-    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
-    0x1.3a28c2p4,
-  },
-  { // Entry 758
-    -0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
-    0x1.6a0a3831b81d94966ad8df4d378824f9p-1,
-    -0x1.3a28c2p4,
-  },
-  { // Entry 759
-    0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
-    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
-    0x1.3a28c4p4,
-  },
-  { // Entry 760
-    -0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
-    0x1.6a0a0af082b5bca7f5569f4da6883f64p-1,
-    -0x1.3a28c4p4,
-  },
-  { // Entry 761
-    0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
-    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
-    0x1.3a28c6p4,
-  },
-  { // Entry 762
-    -0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
-    0x1.6a09ddaf47a5bc8dbdcb6b13844902aep-1,
-    -0x1.3a28c6p4,
-  },
-  { // Entry 763
-    0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
-    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
-    0x1.46b9c0p4,
-  },
-  { // Entry 764
-    -0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
-    0x1.a3bb251dc7efaa1e2137bb37ed6654dbp-19,
-    -0x1.46b9c0p4,
-  },
-  { // Entry 765
-    0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
-    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
-    0x1.46b9c2p4,
-  },
-  { // Entry 766
-    -0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
-    0x1.47764a3b9566758e5baa2e3029f1abbap-20,
-    -0x1.46b9c2p4,
-  },
-  { // Entry 767
-    0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
-    -0x1.71136b88d4608490f2ddfe90101112aep-21,
-    0x1.46b9c4p4,
-  },
-  { // Entry 768
-    -0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
-    -0x1.71136b88d4608490f2ddfe90101112aep-21,
-    -0x1.46b9c4p4,
-  },
-  { // Entry 769
-    0x1.6a0a2903d773925b052fb006ac670c23p-1,
-    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
-    0x1.534abep4,
-  },
-  { // Entry 770
-    -0x1.6a0a2903d773925b052fb006ac670c23p-1,
-    -0x1.6a09a3cc03c4bbad2222dfe5be317565p-1,
-    -0x1.534abep4,
-  },
-  { // Entry 771
-    0x1.6a09fbc2a025fdae918466fa00142143p-1,
-    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
-    0x1.534ac0p4,
-  },
-  { // Entry 772
-    -0x1.6a09fbc2a025fdae918466fa00142143p-1,
-    -0x1.6a09d10d46112335d0e43d738387de8cp-1,
-    -0x1.534ac0p4,
-  },
-  { // Entry 773
-    0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
-    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
-    0x1.534ac2p4,
-  },
-  { // Entry 774
-    -0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
-    -0x1.6a09fe4e82b5637a4a8f392c3301be94p-1,
-    -0x1.534ac2p4,
-  },
-  { // Entry 775
-    0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
-    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
-    0x1.5fdbbcp4,
-  },
-  { // Entry 776
-    -0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
-    -0x1.fffffffff9325ace5f682bbb8b122a09p-1,
-    -0x1.5fdbbcp4,
-  },
-  { // Entry 777
-    0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
-    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
-    0x1.5fdbbep4,
-  },
-  { // Entry 778
-    -0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
-    -0x1.ffffffffffa144abaed5b4aab880635dp-1,
-    -0x1.5fdbbep4,
-  },
-  { // Entry 779
-    -0x1.644588ac2334a3d5452d9960282cf80dp-20,
-    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
-    0x1.5fdbc0p4,
-  },
-  { // Entry 780
-    0x1.644588ac2334a3d5452d9960282cf80dp-20,
-    -0x1.fffffffffe102e88fe476331e1ddefafp-1,
-    -0x1.5fdbc0p4,
-  },
-  { // Entry 781
-    -0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
-    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
-    0x1.6c6cbap4,
-  },
-  { // Entry 782
-    0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
-    -0x1.6a0a19d5f626a35ee112a34638e07808p-1,
-    -0x1.6c6cbap4,
-  },
-  { // Entry 783
-    -0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
-    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
-    0x1.6c6cbcp4,
-  },
-  { // Entry 784
-    0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
-    -0x1.6a09ec94bcf35208ccd030684d5ddd9cp-1,
-    -0x1.6c6cbcp4,
-  },
-  { // Entry 785
-    -0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
-    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
-    0x1.6c6cbep4,
-  },
-  { // Entry 786
-    0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
-    -0x1.6a09bf537e17d900659bd2fa24c3a8c8p-1,
-    -0x1.6c6cbep4,
-  },
-  { // Entry 787
-    -0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
-    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
-    0x1.78fdb6p4,
-  },
-  { // Entry 788
-    0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
-    -0x1.f7ff52360c622b3f94d9c7250bfad8d4p-19,
-    -0x1.78fdb6p4,
-  },
-  { // Entry 789
-    -0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
-    -0x1.effea46c21baa3da7c266c953a013598p-20,
-    0x1.78fdb8p4,
-  },
-  { // Entry 790
-    0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
-    -0x1.effea46c21baa3da7c266c953a013598p-20,
-    -0x1.78fdb8p4,
-  },
-  { // Entry 791
-    -0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
-    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
-    0x1.78fdbap4,
-  },
-  { // Entry 792
-    0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
-    0x1.0015b93dd0f095be1eb0a5b87fe5e33ep-24,
-    -0x1.78fdbap4,
-  },
-  { // Entry 793
-    -0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
-    0x1.6a0994e68b787ee4fd6830b288225745p-1,
-    0x1.858eb4p4,
-  },
-  { // Entry 794
-    0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
-    0x1.6a0994e68b787ee4fd6830b288225745p-1,
-    -0x1.858eb4p4,
-  },
-  { // Entry 795
-    -0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
-    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
-    0x1.858eb6p4,
-  },
-  { // Entry 796
-    0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
-    0x1.6a09c227cfa194d1fa7ab9909de5083cp-1,
-    -0x1.858eb6p4,
-  },
-  { // Entry 797
-    -0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
-    0x1.6a09ef690e2283b658509ed319483839p-1,
-    0x1.858eb8p4,
-  },
-  { // Entry 798
-    0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
-    0x1.6a09ef690e2283b658509ed319483839p-1,
-    -0x1.858eb8p4,
-  },
-  { // Entry 799
-    0x1.c048b38a8bbf59f414fec7079209926ep-3,
-    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
-    0x1.fffffep62,
-  },
-  { // Entry 800
-    -0x1.c048b38a8bbf59f414fec7079209926ep-3,
-    -0x1.f3957bad70e0741f1d3d6751246ce21ap-1,
-    -0x1.fffffep62,
-  },
-  { // Entry 801
-    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    0x1.p63,
-  },
-  { // Entry 802
-    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    0x1.82aa375b3c33e70663731bab4beb6ed3p-7,
-    -0x1.p63,
-  },
-  { // Entry 803
-    -0x1.d6637d070347ee94e830445e76486727p-1,
-    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
-    0x1.000002p63,
-  },
-  { // Entry 804
-    0x1.d6637d070347ee94e830445e76486727p-1,
-    0x1.945e6c69a580fb7bb27d02c0fe0f8a71p-2,
-    -0x1.000002p63,
-  },
-  { // Entry 805
-    -0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
-    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
-    0x1.fffffep26,
-  },
-  { // Entry 806
-    0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
-    -0x1.b2d255f2bd0423e29e2a548728f034abp-1,
-    -0x1.fffffep26,
-  },
-  { // Entry 807
-    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    0x1.p27,
-  },
-  { // Entry 808
-    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    0x1.4ab6511a7d39ad3cc88ded1e775ca147p-1,
-    -0x1.p27,
-  },
-  { // Entry 809
-    0x1.171999b629fd5b6357c6dff4d7827d95p-1,
-    -0x1.ad3d80c82f4452b076581de24648435bp-1,
-    0x1.000002p27,
-  },
-  { // Entry 810
-    -0x1.171999b629fd5b6357c6dff4d7827d95p-1,
-    -0x1.ad3d80c82f4452b076581de24648435bp-1,
-    -0x1.000002p27,
-  },
-  { // Entry 811
-    -0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
-    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
-    0x1.fffffep23,
-  },
-  { // Entry 812
-    0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
-    -0x1.4532c3721ed4343ad88eea8908a988cbp-2,
-    -0x1.fffffep23,
-  },
-  { // Entry 813
-    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    0x1.p24,
-  },
-  { // Entry 814
-    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    0x1.40ad67f3f0c9a143963c9c96dbce3f8ap-1,
-    -0x1.p24,
-  },
-  { // Entry 815
-    0x1.c9b0c7265c543f80faf01741c6458560p-1,
-    0x1.caf8537c3e442ca8aca86c156773853ap-2,
-    0x1.000002p24,
-  },
-  { // Entry 816
-    -0x1.c9b0c7265c543f80faf01741c6458560p-1,
-    0x1.caf8537c3e442ca8aca86c156773853ap-2,
-    -0x1.000002p24,
-  },
-  { // Entry 817
-    -0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
-    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
-    0x1.fffffep1,
-  },
-  { // Entry 818
-    0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
-    -0x1.4eaa667ba0b90dfb05ab3d9c247cdee7p-1,
-    -0x1.fffffep1,
-  },
-  { // Entry 819
-    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    0x1.p2,
-  },
-  { // Entry 820
-    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    -0x1.4eaa606db24c0c466da1c2dc7baa2b32p-1,
-    -0x1.p2,
-  },
-  { // Entry 821
-    -0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
-    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
-    0x1.000002p2,
-  },
-  { // Entry 822
-    0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
-    -0x1.4eaa5451d53348eb89dc478d4d11be02p-1,
-    -0x1.000002p2,
-  },
-  { // Entry 823
-    0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
-    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
-    0x1.fffffep0,
-  },
-  { // Entry 824
-    -0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
-    -0x1.aa225e2ef96241915b6fd217522814f5p-2,
-    -0x1.fffffep0,
-  },
-  { // Entry 825
-    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    0x1.p1,
-  },
-  { // Entry 826
-    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    -0x1.aa22657537204a4332f8acbb72b0d768p-2,
-    -0x1.p1,
-  },
-  { // Entry 827
-    0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
-    -0x1.aa227401b288620a0372d5a96084915dp-2,
-    0x1.000002p1,
-  },
-  { // Entry 828
-    -0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
-    -0x1.aa227401b288620a0372d5a96084915dp-2,
-    -0x1.000002p1,
-  },
-  { // Entry 829
-    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    0x1.fffffep-1,
-  },
-  { // Entry 830
-    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    -0x1.fffffep-1,
-  },
-  { // Entry 831
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.p0,
-  },
-  { // Entry 832
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.p0,
-  },
-  { // Entry 833
-    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    0x1.000002p0,
-  },
-  { // Entry 834
-    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    -0x1.000002p0,
-  },
-  { // Entry 835
-    0x1.eaee85835dde5b71beec7d8d98052112p-2,
-    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
-    0x1.fffffep-2,
-  },
-  { // Entry 836
-    -0x1.eaee85835dde5b71beec7d8d98052112p-2,
-    0x1.c15280e0737692dd436908fdc8e6e2e1p-1,
-    -0x1.fffffep-2,
-  },
-  { // Entry 837
-    0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    0x1.p-1,
-  },
-  { // Entry 838
-    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    0x1.c1528065b7d4f9db7bbb3b45f5f5b30ap-1,
-    -0x1.p-1,
-  },
-  { // Entry 839
-    0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
-    0x1.c1527f70409076da0c3204df1e099a83p-1,
-    0x1.000002p-1,
-  },
-  { // Entry 840
-    -0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
-    0x1.c1527f70409076da0c3204df1e099a83p-1,
-    -0x1.000002p-1,
-  },
-  { // Entry 841
-    0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
-    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
-    0x1.fffffep-3,
-  },
-  { // Entry 842
-    -0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
-    0x1.f0154a1789d8dcc172cd2092d05f6394p-1,
-    -0x1.fffffep-3,
-  },
-  { // Entry 843
-    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    0x1.p-2,
-  },
-  { // Entry 844
-    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    0x1.f01549f7deea174f07a67972bf29f148p-1,
-    -0x1.p-2,
-  },
-  { // Entry 845
-    0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
-    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
-    0x1.000002p-2,
-  },
-  { // Entry 846
-    -0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
-    0x1.f01549b8890c2f66337cac15a7237c8ep-1,
-    -0x1.000002p-2,
-  },
-  { // Entry 847
-    0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
-    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
-    0x1.fffffep-4,
-  },
-  { // Entry 848
-    -0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
-    0x1.fc01552fd068ee83f5b742c05245e8b2p-1,
-    -0x1.fffffep-4,
-  },
-  { // Entry 849
-    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    0x1.p-3,
-  },
-  { // Entry 850
-    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    0x1.fc015527d5bd36da3cd4253bede319cap-1,
-    -0x1.p-3,
-  },
-  { // Entry 851
-    0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
-    0x1.fc015517e065afb6bb102c18f5919820p-1,
-    0x1.000002p-3,
-  },
-  { // Entry 852
-    -0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
-    0x1.fc015517e065afb6bb102c18f5919820p-1,
-    -0x1.000002p-3,
-  },
-  { // Entry 853
-    0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
-    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
-    0x1.fffffep-5,
-  },
-  { // Entry 854
-    -0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
-    0x1.ff0015569ef7e2b96301e6f752c019d4p-1,
-    -0x1.fffffep-5,
-  },
-  { // Entry 855
-    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    0x1.p-4,
-  },
-  { // Entry 856
-    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    0x1.ff0015549f4d34ca0e1ee6509bc42b71p-1,
-    -0x1.p-4,
-  },
-  { // Entry 857
-    0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
-    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
-    0x1.000002p-4,
-  },
-  { // Entry 858
-    -0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
-    0x1.ff0015509ff7d2ee6418e924f0de5e97p-1,
-    -0x1.000002p-4,
-  },
-  { // Entry 859
-    0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
-    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
-    0x1.fffffep-6,
-  },
-  { // Entry 860
-    -0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
-    0x1.ffc00155d277d58e727cd95c43f759cfp-1,
-    -0x1.fffffep-6,
-  },
-  { // Entry 861
-    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    0x1.p-5,
-  },
-  { // Entry 862
-    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    0x1.ffc00155527d2b12aedb49d92928df72p-1,
-    -0x1.p-5,
-  },
-  { // Entry 863
-    0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
-    0x1.ffc001545287d49b57972af5145663a0p-1,
-    0x1.000002p-5,
-  },
-  { // Entry 864
-    -0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
-    0x1.ffc001545287d49b57972af5145663a0p-1,
-    -0x1.000002p-5,
-  },
-  { // Entry 865
-    0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
-    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
-    0x1.fffffep-7,
-  },
-  { // Entry 866
-    -0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
-    0x1.fff0001575499f3d7996e2da11cdeb24p-1,
-    -0x1.fffffep-7,
-  },
-  { // Entry 867
-    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    0x1.p-6,
-  },
-  { // Entry 868
-    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    0x1.fff000155549f4a28a280e97bcd59c8ap-1,
-    -0x1.p-6,
-  },
-  { // Entry 869
-    0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
-    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
-    0x1.000002p-6,
-  },
-  { // Entry 870
-    -0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
-    0x1.fff00015154a9f0cae4a62151501cd0ap-1,
-    -0x1.000002p-6,
-  },
-  { // Entry 871
-    0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
-    0x1.fffffff0000020155544fff49fca38e6p-1,
-    0x1.fffffep-15,
-  },
-  { // Entry 872
-    -0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
-    0x1.fffffff0000020155544fff49fca38e6p-1,
-    -0x1.fffffep-15,
-  },
-  { // Entry 873
-    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    0x1.p-14,
-  },
-  { // Entry 874
-    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    0x1.fffffff00000001555555549f49f49f7p-1,
-    -0x1.p-14,
-  },
-  { // Entry 875
-    0x1.000001fd5555455777578ccbe7bfc09cp-14,
-    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
-    0x1.000002p-14,
-  },
-  { // Entry 876
-    -0x1.000001fd5555455777578ccbe7bfc09cp-14,
-    0x1.ffffffefffffc0155515fff4a1496c1cp-1,
-    -0x1.000002p-14,
-  },
-  { // Entry 877
-    0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
-    0x1.fffffffffffffc000007fffffc015555p-1,
-    0x1.fffffep-28,
-  },
-  { // Entry 878
-    -0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
-    0x1.fffffffffffffc000007fffffc015555p-1,
-    -0x1.fffffep-28,
-  },
-  { // Entry 879
-    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    0x1.fffffffffffffc000000000000015555p-1,
-    0x1.p-27,
-  },
-  { // Entry 880
-    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    0x1.fffffffffffffc000000000000015555p-1,
-    -0x1.p-27,
-  },
-  { // Entry 881
-    0x1.000001ffffffff55555155554d557772p-27,
-    0x1.fffffffffffffbffffeffffff0015555p-1,
-    0x1.000002p-27,
-  },
-  { // Entry 882
-    -0x1.000001ffffffff55555155554d557772p-27,
-    0x1.fffffffffffffbffffeffffff0015555p-1,
-    -0x1.000002p-27,
-  },
-  { // Entry 883
-    0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
-    0x1.fffffffffffffff000001ffffff00015p-1,
-    0x1.fffffep-31,
-  },
-  { // Entry 884
-    -0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
-    0x1.fffffffffffffff000001ffffff00015p-1,
-    -0x1.fffffep-31,
-  },
-  { // Entry 885
-    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    0x1.fffffffffffffff00000000000000015p-1,
-    0x1.p-30,
-  },
-  { // Entry 886
-    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    0x1.fffffffffffffff00000000000000015p-1,
-    -0x1.p-30,
-  },
-  { // Entry 887
-    0x1.000001fffffffffd5555455555355557p-30,
-    0x1.ffffffffffffffefffffbfffffc00015p-1,
-    0x1.000002p-30,
-  },
-  { // Entry 888
-    -0x1.000001fffffffffd5555455555355557p-30,
-    0x1.ffffffffffffffefffffbfffffc00015p-1,
-    -0x1.000002p-30,
-  },
-  { // Entry 889
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    -0x1.fffffep127,
-  },
-  { // Entry 890
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    0x1.fffffep127,
-  },
-  { // Entry 891
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    0x1.fffffep127,
-  },
-  { // Entry 892
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    -0x1.fffffep127,
-  },
-  { // Entry 893
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    0x1.fffffep127,
-  },
-  { // Entry 894
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.b4bf2c79bdfcdaa53ed6c013f65e0963p-1,
-    -0x1.fffffep127,
-  },
-  { // Entry 895
-    -0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
-    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
-    0x1.fffffcp127,
-  },
-  { // Entry 896
-    0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
-    -0x1.8877a29e3d7b6defcb528e86f4c3e09ap-1,
-    -0x1.fffffcp127,
-  },
-  { // Entry 897
-    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    0x1.921fb6p1,
-  },
-  { // Entry 898
-    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    -0x1.fffffffffffdd94849271d08eecf54a1p-1,
-    -0x1.921fb6p1,
-  },
-  { // Entry 899
-    0x1.ffffffffffff76521249c7422930ed82p-1,
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    0x1.921fb6p0,
-  },
-  { // Entry 900
-    -0x1.ffffffffffff76521249c7422930ed82p-1,
-    -0x1.777a5cf72cecc4cde3a31e7d5a026142p-25,
-    -0x1.921fb6p0,
-  },
-  { // Entry 901
-    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    0x1.000002p0,
-  },
-  { // Entry 902
-    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    0x1.14a27d9da5d4aebce71428f9057b08dap-1,
-    -0x1.000002p0,
-  },
-  { // Entry 903
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    0x1.p0,
-  },
-  { // Entry 904
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.14a280fb5068b923848cdb2ed0e37a53p-1,
-    -0x1.p0,
-  },
-  { // Entry 905
-    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    0x1.fffffep-1,
-  },
-  { // Entry 906
-    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    0x1.14a282aa25b11f6312a7a65180e7c3d4p-1,
-    -0x1.fffffep-1,
-  },
-  { // Entry 907
-    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    0x1.921fb6p-1,
-  },
-  { // Entry 908
-    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    0x1.6a09e5e3335983e5ac92e733e3f24b42p-1,
-    -0x1.921fb6p-1,
-  },
-  { // Entry 909
-    0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.000002p-126,
-  },
-  { // Entry 910
-    -0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.000002p-126,
-  },
-  { // Entry 911
-    0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-126,
-  },
-  { // Entry 912
-    -0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-126,
-  },
-  { // Entry 913
-    0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffffcp-127,
-  },
-  { // Entry 914
-    -0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffffcp-127,
-  },
-  { // Entry 915
-    0x1.fffff7ffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.fffff8p-127,
-  },
-  { // Entry 916
-    -0x1.fffff7ffffffffffffffffffffffffffp-127,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.fffff8p-127,
-  },
-  { // Entry 917
-    0x1.ffffffffffffffffffffffffffffffffp-149,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-148,
-  },
-  { // Entry 918
-    -0x1.ffffffffffffffffffffffffffffffffp-149,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-148,
-  },
-  { // Entry 919
-    0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    0x1.p-149,
-  },
-  { // Entry 920
-    -0.0f,
-    0x1.ffffffffffffffffffffffffffffffffp-1,
-    -0x1.p-149,
-  },
-  { // Entry 921
-    0.0,
-    0x1.p0,
-    0.0f,
-  },
-  { // Entry 922
-    -0.0,
-    0x1.p0,
-    -0.0f,
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_sincosf, sincosf_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_sincosf_intel_data)/sizeof(sincosf_intel_data_t); i++) {
-   float fsin, fcos;
-   sincosf(g_sincosf_intel_data[i].call_data, &fsin, &fcos);
-   EXPECT_FLOAT_EQ(g_sincosf_intel_data[i].sin_expected, fsin) << "Failed on element " << i;
-   EXPECT_FLOAT_EQ(g_sincosf_intel_data[i].cos_expected, fcos) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_sinf_test.cpp b/tests/math_sinf_test.cpp
deleted file mode 100644
index bb1e2c9..0000000
--- a/tests/math_sinf_test.cpp
+++ /dev/null
@@ -1,4395 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  float expected;
-  float call_data;
-} sinf_intel_data_t;
-
-static sinf_intel_data_t g_sinf_intel_data[] = {
-  { // Entry 0
-    -0x1.0003fffffff554d5535552cccf778ccdp-21,
-    -0x1.0004p-21
-  },
-  { // Entry 1
-    0x1.0003fffffff554d5535552cccf778ccdp-21,
-    0x1.0004p-21
-  },
-  { // Entry 2
-    -0x1.d30ca7008af24ef048a7a05eecde2120p-4,
-    -0x1.00cbf0p10
-  },
-  { // Entry 3
-    0x1.d30ca7008af24ef048a7a05eecde2120p-4,
-    0x1.00cbf0p10
-  },
-  { // Entry 4
-    0x1.8d665d0000200efc4478008658c617c7p-1,
-    -0x1.01ee34p2
-  },
-  { // Entry 5
-    -0x1.8d665d0000200efc4478008658c617c7p-1,
-    0x1.01ee34p2
-  },
-  { // Entry 6
-    0x1.ec042ff972e42c23f28f2da4fb75f851p-1,
-    -0x1.18f1f4p4
-  },
-  { // Entry 7
-    -0x1.ec042ff972e42c23f28f2da4fb75f851p-1,
-    0x1.18f1f4p4
-  },
-  { // Entry 8
-    0x1.f0d384240ad9f2dba47b96b08271b41fp-1,
-    -0x1.1df906p2
-  },
-  { // Entry 9
-    -0x1.f0d384240ad9f2dba47b96b08271b41fp-1,
-    0x1.1df906p2
-  },
-  { // Entry 10
-    -0x1.4616daf9cd3ce4e92186e7d8ec3d3ef0p-5,
-    -0x1.3ap6
-  },
-  { // Entry 11
-    0x1.4616daf9cd3ce4e92186e7d8ec3d3ef0p-5,
-    0x1.3ap6
-  },
-  { // Entry 12
-    0x1.df04c5f9de343235f4f8b1797286872bp-1,
-    -0x1.44b096p2
-  },
-  { // Entry 13
-    -0x1.df04c5f9de343235f4f8b1797286872bp-1,
-    0x1.44b096p2
-  },
-  { // Entry 14
-    -0x1.feffbd7334c7043b90a6bc2d76dda7c8p-1,
-    -0x1.821cf6p0
-  },
-  { // Entry 15
-    0x1.feffbd7334c7043b90a6bc2d76dda7c8p-1,
-    0x1.821cf6p0
-  },
-  { // Entry 16
-    0x1.ebac56ffe6f27893c69f68d1d7b4a448p-3,
-    -0x1.829b86p2
-  },
-  { // Entry 17
-    -0x1.ebac56ffe6f27893c69f68d1d7b4a448p-3,
-    0x1.829b86p2
-  },
-  { // Entry 18
-    0x1.b725ccef65b1390912a0f5eaab0e7202p-6,
-    -0x1.8580fep7
-  },
-  { // Entry 19
-    -0x1.b725ccef65b1390912a0f5eaab0e7202p-6,
-    0x1.8580fep7
-  },
-  { // Entry 20
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 21
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.fffffep127
-  },
-  { // Entry 22
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 23
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 24
-    -0x1.f83de7c0683d3bd90a769f62a41ac1c3p-1,
-    0x1.000002p52
-  },
-  { // Entry 25
-    0x1.f83de7c0683d3bd90a769f62a41ac1c3p-1,
-    -0x1.000002p52
-  },
-  { // Entry 26
-    -0x1.7dbd11ffde4c20dbb376019f1c654bb0p-2,
-    0x1.000022p62
-  },
-  { // Entry 27
-    0x1.7dbd11ffde4c20dbb376019f1c654bb0p-2,
-    -0x1.000022p62
-  },
-  { // Entry 28
-    0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
-    0x1.000150p-1
-  },
-  { // Entry 29
-    -0x1.eaf0d5008f2db899e2487da9d3b9cde7p-2,
-    -0x1.000150p-1
-  },
-  { // Entry 30
-    0x1.ffae8cfefa813da87498df988c3d8f5ep-5,
-    0x1.0001f0p-4
-  },
-  { // Entry 31
-    -0x1.ffae8cfefa813da87498df988c3d8f5ep-5,
-    -0x1.0001f0p-4
-  },
-  { // Entry 32
-    0x1.89c7d6087a861bb6fe794148c3425348p-1,
-    0x1.0003p40
-  },
-  { // Entry 33
-    -0x1.89c7d6087a861bb6fe794148c3425348p-1,
-    -0x1.0003p40
-  },
-  { // Entry 34
-    -0x1.59e1f519ef8b722eae12a404cad937ebp-1,
-    0x1.000380p126
-  },
-  { // Entry 35
-    0x1.59e1f519ef8b722eae12a404cad937ebp-1,
-    -0x1.000380p126
-  },
-  { // Entry 36
-    0x1.0003fffffff554d5535552cccf778ccdp-21,
-    0x1.0004p-21
-  },
-  { // Entry 37
-    -0x1.0003fffffff554d5535552cccf778ccdp-21,
-    -0x1.0004p-21
-  },
-  { // Entry 38
-    0x1.383065027ec4f20ab1c0027d991b805ap-6,
-    0x1.0007c0p9
-  },
-  { // Entry 39
-    -0x1.383065027ec4f20ab1c0027d991b805ap-6,
-    -0x1.0007c0p9
-  },
-  { // Entry 40
-    0x1.eb0397002fdfbae226f069d6cd53c40fp-2,
-    0x1.000cp-1
-  },
-  { // Entry 41
-    -0x1.eb0397002fdfbae226f069d6cd53c40fp-2,
-    -0x1.000cp-1
-  },
-  { // Entry 42
-    0x1.fedc8b0001f7dacee090c5edc3bfa547p-4,
-    0x1.0019p-3
-  },
-  { // Entry 43
-    -0x1.fedc8b0001f7dacee090c5edc3bfa547p-4,
-    -0x1.0019p-3
-  },
-  { // Entry 44
-    0x1.ab471af26ffea23d7643cf614c860b18p-10,
-    0x1.003820p68
-  },
-  { // Entry 45
-    -0x1.ab471af26ffea23d7643cf614c860b18p-10,
-    -0x1.003820p68
-  },
-  { // Entry 46
-    0x1.ff29eefdde3041fc5c75a1f822a5421dp-4,
-    0x1.0040p-3
-  },
-  { // Entry 47
-    -0x1.ff29eefdde3041fc5c75a1f822a5421dp-4,
-    -0x1.0040p-3
-  },
-  { // Entry 48
-    0x1.29070175206b3f198c893e19b4bd6cb8p-13,
-    0x1.01f0p103
-  },
-  { // Entry 49
-    -0x1.29070175206b3f198c893e19b4bd6cb8p-13,
-    -0x1.01f0p103
-  },
-  { // Entry 50
-    -0x1.ffffffffffffaafbe53de74231954709p-1,
-    0x1.04ccbcp18
-  },
-  { // Entry 51
-    0x1.ffffffffffffaafbe53de74231954709p-1,
-    -0x1.04ccbcp18
-  },
-  { // Entry 52
-    0x1.f4f72cad5f5fb17ec608ec7ac1cbca8bp-2,
-    0x1.05bcp-1
-  },
-  { // Entry 53
-    -0x1.f4f72cad5f5fb17ec608ec7ac1cbca8bp-2,
-    -0x1.05bcp-1
-  },
-  { // Entry 54
-    0x1.f896c6689d7e75e351ecc85731254cd3p-1,
-    0x1.07c1f8p119
-  },
-  { // Entry 55
-    -0x1.f896c6689d7e75e351ecc85731254cd3p-1,
-    -0x1.07c1f8p119
-  },
-  { // Entry 56
-    -0x1.267593f4d59c7de6170090a6a084cdcap-14,
-    0x1.080180p23
-  },
-  { // Entry 57
-    0x1.267593f4d59c7de6170090a6a084cdcap-14,
-    -0x1.080180p23
-  },
-  { // Entry 58
-    0x1.fc86372a841549410c12dbec6fe80dc5p-2,
-    0x1.0a14p-1
-  },
-  { // Entry 59
-    -0x1.fc86372a841549410c12dbec6fe80dc5p-2,
-    -0x1.0a14p-1
-  },
-  { // Entry 60
-    0x1.bca28f0004316bae8df6a2352cca1382p-1,
-    0x1.0b770ap1
-  },
-  { // Entry 61
-    -0x1.bca28f0004316bae8df6a2352cca1382p-1,
-    -0x1.0b770ap1
-  },
-  { // Entry 62
-    -0x1.fade9abd67526d37189df004b51d9d5ap-1,
-    0x1.0ddcp96
-  },
-  { // Entry 63
-    0x1.fade9abd67526d37189df004b51d9d5ap-1,
-    -0x1.0ddcp96
-  },
-  { // Entry 64
-    0x1.bf683cffffec6e8672a49f08aae49c46p-1,
-    0x1.1024p0
-  },
-  { // Entry 65
-    -0x1.bf683cffffec6e8672a49f08aae49c46p-1,
-    -0x1.1024p0
-  },
-  { // Entry 66
-    -0x1.f14407f6441e92f480d2e22859d67a39p-1,
-    0x1.109cc4p4
-  },
-  { // Entry 67
-    0x1.f14407f6441e92f480d2e22859d67a39p-1,
-    -0x1.109cc4p4
-  },
-  { // Entry 68
-    -0x1.ff7e7b9983a7c2ebecfab1a0b0af3c4dp-1,
-    0x1.13bfb2p4
-  },
-  { // Entry 69
-    0x1.ff7e7b9983a7c2ebecfab1a0b0af3c4dp-1,
-    -0x1.13bfb2p4
-  },
-  { // Entry 70
-    0x1.c4942b1e9ec175aa7d3fd75f2e37e566p-1,
-    0x1.1590p0
-  },
-  { // Entry 71
-    -0x1.c4942b1e9ec175aa7d3fd75f2e37e566p-1,
-    -0x1.1590p0
-  },
-  { // Entry 72
-    0x1.fff8d36866faaac8c17e1267498bd132p-1,
-    0x1.18p85
-  },
-  { // Entry 73
-    -0x1.fff8d36866faaac8c17e1267498bd132p-1,
-    -0x1.18p85
-  },
-  { // Entry 74
-    0x1.c78d962546ce51b882c9054eccd829b1p-1,
-    0x1.18c8p0
-  },
-  { // Entry 75
-    -0x1.c78d962546ce51b882c9054eccd829b1p-1,
-    -0x1.18c8p0
-  },
-  { // Entry 76
-    0x1.c7cb99a111f26527b805734962fb12a0p-1,
-    0x1.190cp0
-  },
-  { // Entry 77
-    -0x1.c7cb99a111f26527b805734962fb12a0p-1,
-    -0x1.190cp0
-  },
-  { // Entry 78
-    -0x1.70898100055943898aa7053017ecba69p-1,
-    0x1.1e8f14p62
-  },
-  { // Entry 79
-    0x1.70898100055943898aa7053017ecba69p-1,
-    -0x1.1e8f14p62
-  },
-  { // Entry 80
-    0x1.cdef1e4eb37e9f2249656c27d62b1895p-1,
-    0x1.1ff8p0
-  },
-  { // Entry 81
-    -0x1.cdef1e4eb37e9f2249656c27d62b1895p-1,
-    -0x1.1ff8p0
-  },
-  { // Entry 82
-    -0x1.5df0dd60f122bf79d1ddcf295c34cb0ep-1,
-    0x1.2244a6p59
-  },
-  { // Entry 83
-    0x1.5df0dd60f122bf79d1ddcf295c34cb0ep-1,
-    -0x1.2244a6p59
-  },
-  { // Entry 84
-    -0x1.fb8dd74f1b091a7b0f9f9d44db84661cp-3,
-    0x1.287ae0p13
-  },
-  { // Entry 85
-    0x1.fb8dd74f1b091a7b0f9f9d44db84661cp-3,
-    -0x1.287ae0p13
-  },
-  { // Entry 86
-    -0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
-    0x1.2d97c8p2
-  },
-  { // Entry 87
-    0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
-    -0x1.2d97c8p2
-  },
-  { // Entry 88
-    -0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
-    0x1.2d97c8p3
-  },
-  { // Entry 89
-    0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
-    -0x1.2d97c8p3
-  },
-  { // Entry 90
-    0x1.ffd5158b81944ff6b4833fdf1faa9281p-1,
-    0x1.32cdc6p18
-  },
-  { // Entry 91
-    -0x1.ffd5158b81944ff6b4833fdf1faa9281p-1,
-    -0x1.32cdc6p18
-  },
-  { // Entry 92
-    0x1.e191e77f58f479b564ec538b671f98afp-14,
-    0x1.37efd8p100
-  },
-  { // Entry 93
-    -0x1.e191e77f58f479b564ec538b671f98afp-14,
-    -0x1.37efd8p100
-  },
-  { // Entry 94
-    0x1.fffe974dceb10d4877a75bc77870ffebp-1,
-    0x1.38p11
-  },
-  { // Entry 95
-    -0x1.fffe974dceb10d4877a75bc77870ffebp-1,
-    -0x1.38p11
-  },
-  { // Entry 96
-    -0x1.b63f2c3f537b10eec2fbf340e4898644p-18,
-    0x1.3d72b8p15
-  },
-  { // Entry 97
-    0x1.b63f2c3f537b10eec2fbf340e4898644p-18,
-    -0x1.3d72b8p15
-  },
-  { // Entry 98
-    -0x1.e0208cff17f9186218945af9256d736cp-1,
-    0x1.444b20p7
-  },
-  { // Entry 99
-    0x1.e0208cff17f9186218945af9256d736cp-1,
-    -0x1.444b20p7
-  },
-  { // Entry 100
-    0x1.fffff9002cf87dade6f62eb709dc2aa7p-1,
-    0x1.46b71ep4
-  },
-  { // Entry 101
-    -0x1.fffff9002cf87dade6f62eb709dc2aa7p-1,
-    -0x1.46b71ep4
-  },
-  { // Entry 102
-    0x1.c875581a762211dd5caaf9abde5cf656p-21,
-    0x1.4d0242p7
-  },
-  { // Entry 103
-    -0x1.c875581a762211dd5caaf9abde5cf656p-21,
-    -0x1.4d0242p7
-  },
-  { // Entry 104
-    -0x1.6a6f79000053a3842566f1e018d6359fp-1,
-    0x1.511e8ep28
-  },
-  { // Entry 105
-    0x1.6a6f79000053a3842566f1e018d6359fp-1,
-    -0x1.511e8ep28
-  },
-  { // Entry 106
-    0x1.fffe9ffa6b569dd8c720d68e80bd9a63p-1,
-    0x1.5354d0p100
-  },
-  { // Entry 107
-    -0x1.fffe9ffa6b569dd8c720d68e80bd9a63p-1,
-    -0x1.5354d0p100
-  },
-  { // Entry 108
-    0x1.3b4d58fffff29126460f258ec4423e9ap-1,
-    0x1.53ad5cp-1
-  },
-  { // Entry 109
-    -0x1.3b4d58fffff29126460f258ec4423e9ap-1,
-    -0x1.53ad5cp-1
-  },
-  { // Entry 110
-    -0x1.fffeb762e93ead5ac70f85064fc79cffp-1,
-    0x1.60p3
-  },
-  { // Entry 111
-    0x1.fffeb762e93ead5ac70f85064fc79cffp-1,
-    -0x1.60p3
-  },
-  { // Entry 112
-    0x1.1772377ffe5b1f436c0149e328446f74p-20,
-    0x1.6c6cbcp6
-  },
-  { // Entry 113
-    -0x1.1772377ffe5b1f436c0149e328446f74p-20,
-    -0x1.6c6cbcp6
-  },
-  { // Entry 114
-    0x1.77fffdfffffff78d0577d9552663ea3ep-26,
-    0x1.77fffep-26
-  },
-  { // Entry 115
-    -0x1.77fffdfffffff78d0577d9552663ea3ep-26,
-    -0x1.77fffep-26
-  },
-  { // Entry 116
-    -0x1.ff04979385946d0568c153bf9e125fccp-1,
-    0x1.77fffep4
-  },
-  { // Entry 117
-    0x1.ff04979385946d0568c153bf9e125fccp-1,
-    -0x1.77fffep4
-  },
-  { // Entry 118
-    0x1.feb7a96a577f715fa7ad8788294c045bp-1,
-    0x1.7ffffep0
-  },
-  { // Entry 119
-    -0x1.feb7a96a577f715fa7ad8788294c045bp-1,
-    -0x1.7ffffep0
-  },
-  { // Entry 120
-    0x1.feb7eb54653509617faf3268344437fcp-1,
-    0x1.8001d0p0
-  },
-  { // Entry 121
-    -0x1.feb7eb54653509617faf3268344437fcp-1,
-    -0x1.8001d0p0
-  },
-  { // Entry 122
-    0x1.ff6535998ea004d48763597b6df9cd65p-1,
-    0x1.807ffep13
-  },
-  { // Entry 123
-    -0x1.ff6535998ea004d48763597b6df9cd65p-1,
-    -0x1.807ffep13
-  },
-  { // Entry 124
-    0x1.ff76ed9a192e9a2126bcfc0f306240d4p-1,
-    0x1.866a42p0
-  },
-  { // Entry 125
-    -0x1.ff76ed9a192e9a2126bcfc0f306240d4p-1,
-    -0x1.866a42p0
-  },
-  { // Entry 126
-    0x1.ace844f1eb6c3077277929ff4ade3f41p-5,
-    0x1.8864p35
-  },
-  { // Entry 127
-    -0x1.ace844f1eb6c3077277929ff4ade3f41p-5,
-    -0x1.8864p35
-  },
-  { // Entry 128
-    0x1.e0d108f196fd3cbcb7c2c76aee738205p-5,
-    0x1.8a9b56p1
-  },
-  { // Entry 129
-    -0x1.e0d108f196fd3cbcb7c2c76aee738205p-5,
-    -0x1.8a9b56p1
-  },
-  { // Entry 130
-    -0x1.6a09af0006fe0b47c81d8695c017a8dfp-1,
-    0x1.8e96eep9
-  },
-  { // Entry 131
-    0x1.6a09af0006fe0b47c81d8695c017a8dfp-1,
-    -0x1.8e96eep9
-  },
-  { // Entry 132
-    -0x1.dd59dceecf3fbd015e9e29b37aaf511ap-9,
-    0x1.91e40ap2
-  },
-  { // Entry 133
-    0x1.dd59dceecf3fbd015e9e29b37aaf511ap-9,
-    -0x1.91e40ap2
-  },
-  { // Entry 134
-    -0x1.fb73f1187e5053bacb752b89c6a3de57p-9,
-    0x1.91fffep3
-  },
-  { // Entry 135
-    0x1.fb73f1187e5053bacb752b89c6a3de57p-9,
-    -0x1.91fffep3
-  },
-  { // Entry 136
-    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    0x1.921fb6p1
-  },
-  { // Entry 137
-    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    -0x1.921fb6p1
-  },
-  { // Entry 138
-    -0x1.ffffff79db917265e675574b8d83fa6ep-1,
-    0x1.94fd7cp100
-  },
-  { // Entry 139
-    0x1.ffffff79db917265e675574b8d83fa6ep-1,
-    -0x1.94fd7cp100
-  },
-  { // Entry 140
-    0x1.ffffffffffd7e83678a38329c1e093b5p-1,
-    0x1.986834p6
-  },
-  { // Entry 141
-    -0x1.ffffffffffd7e83678a38329c1e093b5p-1,
-    -0x1.986834p6
-  },
-  { // Entry 142
-    0x1.16ae29144d3aeb0ef741c3e2aba34078p-24,
-    0x1.9a48dep17
-  },
-  { // Entry 143
-    -0x1.16ae29144d3aeb0ef741c3e2aba34078p-24,
-    -0x1.9a48dep17
-  },
-  { // Entry 144
-    0x1.ff7ad398fd589528bb07db1e0bdd40f5p-1,
-    0x1.9daa38p0
-  },
-  { // Entry 145
-    -0x1.ff7ad398fd589528bb07db1e0bdd40f5p-1,
-    -0x1.9daa38p0
-  },
-  { // Entry 146
-    0x1.9df5f10000002f4b7421dfe9e955b60dp-4,
-    0x1.9eab2ep-4
-  },
-  { // Entry 147
-    -0x1.9df5f10000002f4b7421dfe9e955b60dp-4,
-    -0x1.9eab2ep-4
-  },
-  { // Entry 148
-    0x1.76dcf7000053c428e30ef99d9cf91accp-1,
-    0x1.a499p-1
-  },
-  { // Entry 149
-    -0x1.76dcf7000053c428e30ef99d9cf91accp-1,
-    -0x1.a499p-1
-  },
-  { // Entry 150
-    0x1.a9d4510000a2a82c391a9b36186ead65p-5,
-    0x1.aa0578p-5
-  },
-  { // Entry 151
-    -0x1.a9d4510000a2a82c391a9b36186ead65p-5,
-    -0x1.aa0578p-5
-  },
-  { // Entry 152
-    0x1.6a097dcc8b1356712fc20f82c4f87e4dp-1,
-    0x1.b4ae70p6
-  },
-  { // Entry 153
-    -0x1.6a097dcc8b1356712fc20f82c4f87e4dp-1,
-    -0x1.b4ae70p6
-  },
-  { // Entry 154
-    0x1.849926ffffeb95860262a99770a8c9c3p-1,
-    0x1.b936dap-1
-  },
-  { // Entry 155
-    -0x1.849926ffffeb95860262a99770a8c9c3p-1,
-    -0x1.b936dap-1
-  },
-  { // Entry 156
-    -0x1.dac40ef1e040315f07519a99c2034fffp-5,
-    0x1.ba2784p82
-  },
-  { // Entry 157
-    0x1.dac40ef1e040315f07519a99c2034fffp-5,
-    -0x1.ba2784p82
-  },
-  { // Entry 158
-    0x1.81074b0346f07390395b4ee2b50b3f94p-14,
-    0x1.bdb44ap107
-  },
-  { // Entry 159
-    -0x1.81074b0346f07390395b4ee2b50b3f94p-14,
-    -0x1.bdb44ap107
-  },
-  { // Entry 160
-    0x1.235debb727b95daaec183bfa4e728be1p-9,
-    0x1.bdbefep119
-  },
-  { // Entry 161
-    -0x1.235debb727b95daaec183bfa4e728be1p-9,
-    -0x1.bdbefep119
-  },
-  { // Entry 162
-    -0x1.99663da94db5290730b029513370e863p-23,
-    0x1.beeeeep80
-  },
-  { // Entry 163
-    0x1.99663da94db5290730b029513370e863p-23,
-    -0x1.beeeeep80
-  },
-  { // Entry 164
-    -0x1.62faa0ffdc55a4c54f1229fc0302bd5fp-2,
-    0x1.bf6fd0p1
-  },
-  { // Entry 165
-    0x1.62faa0ffdc55a4c54f1229fc0302bd5fp-2,
-    -0x1.bf6fd0p1
-  },
-  { // Entry 166
-    -0x1.c6d444de6b90c7b8b43402ef749a4c3dp-5,
-    0x1.bffffep45
-  },
-  { // Entry 167
-    0x1.c6d444de6b90c7b8b43402ef749a4c3dp-5,
-    -0x1.bffffep45
-  },
-  { // Entry 168
-    0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
-    0x1.c463acp3
-  },
-  { // Entry 169
-    -0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
-    -0x1.c463acp3
-  },
-  { // Entry 170
-    0x1.913648ffff9e23787f5ddb75dc55eec8p-1,
-    0x1.cd0a0cp-1
-  },
-  { // Entry 171
-    -0x1.913648ffff9e23787f5ddb75dc55eec8p-1,
-    -0x1.cd0a0cp-1
-  },
-  { // Entry 172
-    -0x1.a1d47cfd2825f1c3e2835e943b9669efp-5,
-    0x1.d41818p12
-  },
-  { // Entry 173
-    0x1.a1d47cfd2825f1c3e2835e943b9669efp-5,
-    -0x1.d41818p12
-  },
-  { // Entry 174
-    0x1.6a22db000036a9592db722e2d9be4869p-1,
-    0x1.e62944p8
-  },
-  { // Entry 175
-    -0x1.6a22db000036a9592db722e2d9be4869p-1,
-    -0x1.e62944p8
-  },
-  { // Entry 176
-    0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
-    0x1.e7061ep-2
-  },
-  { // Entry 177
-    -0x1.d4de8affffffd96f83ba442fdf2f7101p-2,
-    -0x1.e7061ep-2
-  },
-  { // Entry 178
-    -0x1.e3ce04f1b94e1d82f0001cb99fed9275p-5,
-    0x1.e7fffep95
-  },
-  { // Entry 179
-    0x1.e3ce04f1b94e1d82f0001cb99fed9275p-5,
-    -0x1.e7fffep95
-  },
-  { // Entry 180
-    0x1.e97362ffff5d46e1e98c8a8c94478a44p-5,
-    0x1.e9be0ep-5
-  },
-  { // Entry 181
-    -0x1.e97362ffff5d46e1e98c8a8c94478a44p-5,
-    -0x1.e9be0ep-5
-  },
-  { // Entry 182
-    -0x1.57975cfefd7e705f3eb03a9e8e48a18cp-1,
-    0x1.eb1dbep12
-  },
-  { // Entry 183
-    0x1.57975cfefd7e705f3eb03a9e8e48a18cp-1,
-    -0x1.eb1dbep12
-  },
-  { // Entry 184
-    -0x1.6a1012e4b69b086c3dc0427aba80bc96p-1,
-    0x1.eb1e8ap12
-  },
-  { // Entry 185
-    0x1.6a1012e4b69b086c3dc0427aba80bc96p-1,
-    -0x1.eb1e8ap12
-  },
-  { // Entry 186
-    -0x1.9f42e4f467696ad36a70ac8b70e0cd32p-1,
-    0x1.effc8ap24
-  },
-  { // Entry 187
-    0x1.9f42e4f467696ad36a70ac8b70e0cd32p-1,
-    -0x1.effc8ap24
-  },
-  { // Entry 188
-    0x1.cbadb8ef8f3e358d2b8be493c11b57b1p-6,
-    0x1.f5c1c4p3
-  },
-  { // Entry 189
-    -0x1.cbadb8ef8f3e358d2b8be493c11b57b1p-6,
-    -0x1.f5c1c4p3
-  },
-  { // Entry 190
-    0x1.5aee2cfff087e59dfcd856cbfe4544dcp-2,
-    0x1.f7fffep111
-  },
-  { // Entry 191
-    -0x1.5aee2cfff087e59dfcd856cbfe4544dcp-2,
-    -0x1.f7fffep111
-  },
-  { // Entry 192
-    0x1.26db7d00bb06743fee581a888e2378f8p-1,
-    0x1.f92518p24
-  },
-  { // Entry 193
-    -0x1.26db7d00bb06743fee581a888e2378f8p-1,
-    -0x1.f92518p24
-  },
-  { // Entry 194
-    0x1.fffffffffffffebccf78a432a67858bbp-1,
-    0x1.f9cbe2p7
-  },
-  { // Entry 195
-    -0x1.fffffffffffffebccf78a432a67858bbp-1,
-    -0x1.f9cbe2p7
-  },
-  { // Entry 196
-    -0x1.1fa3bb9a07e77fd667f493622c9029ffp-27,
-    0x1.f9cbe2p8
-  },
-  { // Entry 197
-    0x1.1fa3bb9a07e77fd667f493622c9029ffp-27,
-    -0x1.f9cbe2p8
-  },
-  { // Entry 198
-    0x1.9ec29af1e15dd67f17e32047d9ff8db7p-1,
-    0x1.fad160p24
-  },
-  { // Entry 199
-    -0x1.9ec29af1e15dd67f17e32047d9ff8db7p-1,
-    -0x1.fad160p24
-  },
-  { // Entry 200
-    0x1.fbc2780f4bf8bc24d3fccc17f9e77f32p-1,
-    0x1.fee5bap2
-  },
-  { // Entry 201
-    -0x1.fbc2780f4bf8bc24d3fccc17f9e77f32p-1,
-    -0x1.fee5bap2
-  },
-  { // Entry 202
-    0x1.a8d7c10005ada8f7d4912bf603a315fep-1,
-    0x1.ff0caep10
-  },
-  { // Entry 203
-    -0x1.a8d7c10005ada8f7d4912bf603a315fep-1,
-    -0x1.ff0caep10
-  },
-  { // Entry 204
-    -0x1.56b02d00045da146e855d3770c9646fap-1,
-    0x1.ff8406p80
-  },
-  { // Entry 205
-    0x1.56b02d00045da146e855d3770c9646fap-1,
-    -0x1.ff8406p80
-  },
-  { // Entry 206
-    0x1.c02749ff4c4c8fcbb471610884d8e0bdp-3,
-    0x1.ff9ffep40
-  },
-  { // Entry 207
-    -0x1.c02749ff4c4c8fcbb471610884d8e0bdp-3,
-    -0x1.ff9ffep40
-  },
-  { // Entry 208
-    -0x1.388e710058342aa5b69afe3e2090a457p-1,
-    0x1.ffbd58p24
-  },
-  { // Entry 209
-    0x1.388e710058342aa5b69afe3e2090a457p-1,
-    -0x1.ffbd58p24
-  },
-  { // Entry 210
-    0x1.9e805aef3282d4ced40272702f174f53p-6,
-    0x1.ffdd7ep72
-  },
-  { // Entry 211
-    -0x1.9e805aef3282d4ced40272702f174f53p-6,
-    -0x1.ffdd7ep72
-  },
-  { // Entry 212
-    -0x1.fb3aef016b8ce66370ab61974e8ee0b2p-6,
-    0x1.ffdffep91
-  },
-  { // Entry 213
-    0x1.fb3aef016b8ce66370ab61974e8ee0b2p-6,
-    -0x1.ffdffep91
-  },
-  { // Entry 214
-    -0x1.e43148da53f422356edd3bdbaef3b2fap-3,
-    0x1.fff77ep23
-  },
-  { // Entry 215
-    0x1.e43148da53f422356edd3bdbaef3b2fap-3,
-    -0x1.fff77ep23
-  },
-  { // Entry 216
-    0x1.d6e1864764d24b4de18cb4c1903a7957p-1,
-    0x1.fffe3ep5
-  },
-  { // Entry 217
-    -0x1.d6e1864764d24b4de18cb4c1903a7957p-1,
-    -0x1.fffe3ep5
-  },
-  { // Entry 218
-    -0x1.ffff49c52f585e672d7185448d46e977p-1,
-    0x1.fffe3ep41
-  },
-  { // Entry 219
-    0x1.ffff49c52f585e672d7185448d46e977p-1,
-    -0x1.fffe3ep41
-  },
-  { // Entry 220
-    0x1.afc6a99cbade83b6be92b2ca45167988p-5,
-    0x1.fffe3ep45
-  },
-  { // Entry 221
-    -0x1.afc6a99cbade83b6be92b2ca45167988p-5,
-    -0x1.fffe3ep45
-  },
-  { // Entry 222
-    -0x1.53a29e54b4b142830dc796c9ed5fc59bp-9,
-    0x1.fffe7ep103
-  },
-  { // Entry 223
-    0x1.53a29e54b4b142830dc796c9ed5fc59bp-9,
-    -0x1.fffe7ep103
-  },
-  { // Entry 224
-    -0x1.47e89fd5047c4c94b5c0f61e375f2849p-11,
-    0x1.fffe7ep126
-  },
-  { // Entry 225
-    0x1.47e89fd5047c4c94b5c0f61e375f2849p-11,
-    -0x1.fffe7ep126
-  },
-  { // Entry 226
-    0x1.a4256c90c37410ce957c0b2501937618p-8,
-    0x1.ffff8ep40
-  },
-  { // Entry 227
-    -0x1.a4256c90c37410ce957c0b2501937618p-8,
-    -0x1.ffff8ep40
-  },
-  { // Entry 228
-    -0x1.d2bd84f5018f40c94c7f6e4552ef8e91p-3,
-    0x1.ffffa4p23
-  },
-  { // Entry 229
-    0x1.d2bd84f5018f40c94c7f6e4552ef8e91p-3,
-    -0x1.ffffa4p23
-  },
-  { // Entry 230
-    0x1.ffaa8cffd381ebe7b2d6a3e69bda3887p-5,
-    0x1.ffffdep-5
-  },
-  { // Entry 231
-    -0x1.ffaa8cffd381ebe7b2d6a3e69bda3887p-5,
-    -0x1.ffffdep-5
-  },
-  { // Entry 232
-    0x1.fa8d3ca23be2a84d37f0c04e97bab5e5p-1,
-    0x1.fffff0p2
-  },
-  { // Entry 233
-    -0x1.fa8d3ca23be2a84d37f0c04e97bab5e5p-1,
-    -0x1.fffff0p2
-  },
-  { // Entry 234
-    -0x1.ff978ecd320ad2d70c200824e4010843p-1,
-    0x1.fffff0p7
-  },
-  { // Entry 235
-    0x1.ff978ecd320ad2d70c200824e4010843p-1,
-    -0x1.fffff0p7
-  },
-  { // Entry 236
-    0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
-    0x1.fffff6p0
-  },
-  { // Entry 237
-    -0x1.d18f76ffc6e4ba0a3134e5be21b5bc8fp-1,
-    -0x1.fffff6p0
-  },
-  { // Entry 238
-    0x1.eaee8200b8dba5138f9ada42a22ab319p-2,
-    0x1.fffffap-2
-  },
-  { // Entry 239
-    -0x1.eaee8200b8dba5138f9ada42a22ab319p-2,
-    -0x1.fffffap-2
-  },
-  { // Entry 240
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.fffffep127
-  },
-  { // Entry 241
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 242
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 243
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 244
-    0.0,
-    0.0
-  },
-  { // Entry 245
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 246
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 247
-    -0x1.000001ffffffffffffffffffffffffffp-126,
-    -0x1.000002p-126
-  },
-  { // Entry 248
-    0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.000002p-126
-  },
-  { // Entry 249
-    -0x1.ffffffffffffffffffffffffffffffffp-127,
-    -0x1.p-126
-  },
-  { // Entry 250
-    0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.p-126
-  },
-  { // Entry 251
-    -0x1.fffffbffffffffffffffffffffffffffp-127,
-    -0x1.fffffcp-127
-  },
-  { // Entry 252
-    0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.fffffcp-127
-  },
-  { // Entry 253
-    0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.fffffcp-127
-  },
-  { // Entry 254
-    -0x1.fffffbffffffffffffffffffffffffffp-127,
-    -0x1.fffffcp-127
-  },
-  { // Entry 255
-    0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.p-126
-  },
-  { // Entry 256
-    -0x1.ffffffffffffffffffffffffffffffffp-127,
-    -0x1.p-126
-  },
-  { // Entry 257
-    0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.000002p-126
-  },
-  { // Entry 258
-    -0x1.000001ffffffffffffffffffffffffffp-126,
-    -0x1.000002p-126
-  },
-  { // Entry 259
-    0x1.999999d44f3058c789014b7d0e22fec3p-13,
-    0x1.99999ap-13
-  },
-  { // Entry 260
-    -0x1.999999d44f3058c789014b7d0e22fec3p-13,
-    -0x1.99999ap-13
-  },
-  { // Entry 261
-    0x1.999999513cc173e51bb9955b066f1db8p-12,
-    0x1.99999ap-12
-  },
-  { // Entry 262
-    -0x1.999999513cc173e51bb9955b066f1db8p-12,
-    -0x1.99999ap-12
-  },
-  { // Entry 263
-    0x1.333332d91685321e5fc397d20a5af1e6p-11,
-    0x1.333334p-11
-  },
-  { // Entry 264
-    -0x1.333332d91685321e5fc397d20a5af1e6p-11,
-    -0x1.333334p-11
-  },
-  { // Entry 265
-    0x1.99999744f306dc03e9ef70897f78299ep-11,
-    0x1.99999ap-11
-  },
-  { // Entry 266
-    -0x1.99999744f306dc03e9ef70897f78299ep-11,
-    -0x1.99999ap-11
-  },
-  { // Entry 267
-    0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    0x1.p-10
-  },
-  { // Entry 268
-    -0x1.fffffaaaaaaeeeeeed4ed4edab4c7bd6p-11,
-    -0x1.p-10
-  },
-  { // Entry 269
-    0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
-    0x1.333334p-10
-  },
-  { // Entry 270
-    -0x1.33332f645a18c3b0ccfc0a3cf7b2e91bp-10,
-    -0x1.333334p-10
-  },
-  { // Entry 271
-    0x1.666660aec330821c7a100cf488c380ebp-10,
-    0x1.666668p-10
-  },
-  { // Entry 272
-    -0x1.666660aec330821c7a100cf488c380ebp-10,
-    -0x1.666668p-10
-  },
-  { // Entry 273
-    0x1.99999113cc034144fdbdc8a1dc713253p-10,
-    0x1.99999cp-10
-  },
-  { // Entry 274
-    -0x1.99999113cc034144fdbdc8a1dc713253p-10,
-    -0x1.99999cp-10
-  },
-  { // Entry 275
-    0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
-    0x1.ccccccp-10
-  },
-  { // Entry 276
-    -0x1.ccccbc72b05dd0951a9c5e65560c56e3p-10,
-    -0x1.ccccccp-10
-  },
-  { // Entry 277
-    0x1.0665ae3615b5b7de52798064dfc59b29p-7,
-    0x1.066666p-7
-  },
-  { // Entry 278
-    -0x1.0665ae3615b5b7de52798064dfc59b29p-7,
-    -0x1.066666p-7
-  },
-  { // Entry 279
-    0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
-    0x1.ccccccp-7
-  },
-  { // Entry 280
-    -0x1.ccc8e8ae92586d8d66b6ad0aedcb0d94p-7,
-    -0x1.ccccccp-7
-  },
-  { // Entry 281
-    0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
-    0x1.499998p-6
-  },
-  { // Entry 282
-    -0x1.4993e70f7b17c10af9f97fc7b33b822bp-6,
-    -0x1.499998p-6
-  },
-  { // Entry 283
-    0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
-    0x1.acccccp-6
-  },
-  { // Entry 284
-    -0x1.acc043f8b2d89ad5143c030e9766fc11p-6,
-    -0x1.acccccp-6
-  },
-  { // Entry 285
-    0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    0x1.08p-5
-  },
-  { // Entry 286
-    -0x1.07f44d67cf41afbc0c95108b99f91b01p-5,
-    -0x1.08p-5
-  },
-  { // Entry 287
-    0x1.3985fead44fa2b851e651acba369d769p-5,
-    0x1.39999ap-5
-  },
-  { // Entry 288
-    -0x1.3985fead44fa2b851e651acba369d769p-5,
-    -0x1.39999ap-5
-  },
-  { // Entry 289
-    0x1.6b14beb5d40d745096247e59b622828bp-5,
-    0x1.6b3334p-5
-  },
-  { // Entry 290
-    -0x1.6b14beb5d40d745096247e59b622828bp-5,
-    -0x1.6b3334p-5
-  },
-  { // Entry 291
-    0x1.9ca01671a7995fc97cebd69729cc4309p-5,
-    0x1.9ccccep-5
-  },
-  { // Entry 292
-    -0x1.9ca01671a7995fc97cebd69729cc4309p-5,
-    -0x1.9ccccep-5
-  },
-  { // Entry 293
-    0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
-    0x1.ce6666p-5
-  },
-  { // Entry 294
-    -0x1.ce278cd9eb2cbd0c6a4e1279f690e856p-5,
-    -0x1.ce6666p-5
-  },
-  { // Entry 295
-    0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
-    0x1.5e7fc4p-1
-  },
-  { // Entry 296
-    -0x1.43c1e9972391aa8ecd8a9ccba907920ap-1,
-    -0x1.5e7fc4p-1
-  },
-  { // Entry 297
-    0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
-    0x1.4e7fc4p0
-  },
-  { // Entry 298
-    -0x1.ee3d6bb21c64b2382efcff0cdf30ce0bp-1,
-    -0x1.4e7fc4p0
-  },
-  { // Entry 299
-    0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
-    0x1.edbfa6p0
-  },
-  { // Entry 300
-    -0x1.df8e2323e4bf1a538a100ec1bf3494a9p-1,
-    -0x1.edbfa6p0
-  },
-  { // Entry 301
-    0x1.1d347aa02feb3bb1750d25509435da88p-1,
-    0x1.467fc4p1
-  },
-  { // Entry 302
-    -0x1.1d347aa02feb3bb1750d25509435da88p-1,
-    -0x1.467fc4p1
-  },
-  { // Entry 303
-    -0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
-    0x1.961fb4p1
-  },
-  { // Entry 304
-    0x1.ffea08e1c97f4c4de01961cc3e7b04dcp-6,
-    -0x1.961fb4p1
-  },
-  { // Entry 305
-    -0x1.3734cbced9c0f484e5f762e00216e620p-1,
-    0x1.e5bfa4p1
-  },
-  { // Entry 306
-    0x1.3734cbced9c0f484e5f762e00216e620p-1,
-    -0x1.e5bfa4p1
-  },
-  { // Entry 307
-    -0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
-    0x1.1aafcap2
-  },
-  { // Entry 308
-    0x1.e9d2592bec10c3acb15c5852239a2aa8p-1,
-    -0x1.1aafcap2
-  },
-  { // Entry 309
-    -0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
-    0x1.427fc2p2
-  },
-  { // Entry 310
-    0x1.e4ece208d0c4913ab019cab0ce9c785ep-1,
-    -0x1.427fc2p2
-  },
-  { // Entry 311
-    -0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
-    0x1.6a4fbap2
-  },
-  { // Entry 312
-    0x1.2a5a02d392b54f641a0d88bd4ac6c2e1p-1,
-    -0x1.6a4fbap2
-  },
-  { // Entry 313
-    -0x1.263123df22d13ed329c665c83c0e71e8p-1,
-    0x1.6af2f0p2
-  },
-  { // Entry 314
-    0x1.263123df22d13ed329c665c83c0e71e8p-1,
-    -0x1.6af2f0p2
-  },
-  { // Entry 315
-    -0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
-    0x1.43c62ap2
-  },
-  { // Entry 316
-    0x1.e18e67b508ffc9e42f6c9e72f8e545f3p-1,
-    -0x1.43c62ap2
-  },
-  { // Entry 317
-    -0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
-    0x1.1c9964p2
-  },
-  { // Entry 318
-    0x1.ee0e80ec9d1562c17a6cf608af9b0ed4p-1,
-    -0x1.1c9964p2
-  },
-  { // Entry 319
-    -0x1.472768637ea8866a652098a43aa688a6p-1,
-    0x1.ead93cp1
-  },
-  { // Entry 320
-    0x1.472768637ea8866a652098a43aa688a6p-1,
-    -0x1.ead93cp1
-  },
-  { // Entry 321
-    -0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
-    0x1.9c7fb0p1
-  },
-  { // Entry 322
-    0x1.4ba24f6325f21420e7c48d4f91e28064p-4,
-    -0x1.9c7fb0p1
-  },
-  { // Entry 323
-    0x1.034c643295153aaffe5d9a0f29e92844p-1,
-    0x1.4e2624p1
-  },
-  { // Entry 324
-    -0x1.034c643295153aaffe5d9a0f29e92844p-1,
-    -0x1.4e2624p1
-  },
-  { // Entry 325
-    0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
-    0x1.ff9932p0
-  },
-  { // Entry 326
-    -0x1.d1e4d96eac917574b948e4ea9e37b36dp-1,
-    -0x1.ff9932p0
-  },
-  { // Entry 327
-    0x1.f7501e002bcafb897f931931d3a57afdp-1,
-    0x1.62e61cp0
-  },
-  { // Entry 328
-    -0x1.f7501e002bcafb897f931931d3a57afdp-1,
-    -0x1.62e61cp0
-  },
-  { // Entry 329
-    0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
-    0x1.8c662cp-1
-  },
-  { // Entry 330
-    -0x1.65f7d66ef6591cfc51ab29dc2086d3e7p-1,
-    -0x1.8c662cp-1
-  },
-  { // Entry 331
-    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    -0x1.a8aa1cp0
-  },
-  { // Entry 332
-    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    0x1.a8aa1cp0
-  },
-  { // Entry 333
-    -0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
-    -0x1.95ec8ap0
-  },
-  { // Entry 334
-    0x1.fff18f313e66f1ae25f89a5f7a1f84c4p-1,
-    0x1.95ec8ap0
-  },
-  { // Entry 335
-    -0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
-    -0x1.832ef8p0
-  },
-  { // Entry 336
-    0x1.ff20d920b9e9c23154f97e2f342a2884p-1,
-    0x1.832ef8p0
-  },
-  { // Entry 337
-    -0x1.fb933b89d7db3286eed0cfeabee98875p-1,
-    -0x1.707166p0
-  },
-  { // Entry 338
-    0x1.fb933b89d7db3286eed0cfeabee98875p-1,
-    0x1.707166p0
-  },
-  { // Entry 339
-    -0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
-    -0x1.5db3d4p0
-  },
-  { // Entry 340
-    0x1.f54d95c5058b7dc9972ab6f9928ca043p-1,
-    0x1.5db3d4p0
-  },
-  { // Entry 341
-    -0x1.ec5881a09c46aae020cd9036098a196ep-1,
-    -0x1.4af642p0
-  },
-  { // Entry 342
-    0x1.ec5881a09c46aae020cd9036098a196ep-1,
-    0x1.4af642p0
-  },
-  { // Entry 343
-    -0x1.e0c04795919d961a5e83e505df31c624p-1,
-    -0x1.3838b0p0
-  },
-  { // Entry 344
-    0x1.e0c04795919d961a5e83e505df31c624p-1,
-    0x1.3838b0p0
-  },
-  { // Entry 345
-    -0x1.d294cdef7cc161633a02d3e62058be0ep-1,
-    -0x1.257b1ep0
-  },
-  { // Entry 346
-    0x1.d294cdef7cc161633a02d3e62058be0ep-1,
-    0x1.257b1ep0
-  },
-  { // Entry 347
-    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    -0x1.12bd92p0
-  },
-  { // Entry 348
-    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    0x1.12bd92p0
-  },
-  { // Entry 349
-    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    -0x1.ea5c3ep-1
-  },
-  { // Entry 350
-    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    0x1.ea5c3ep-1
-  },
-  { // Entry 351
-    -0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
-    -0x1.d4b87cp-1
-  },
-  { // Entry 352
-    0x1.95f05153644d60b94d2f2e700dfd3a37p-1,
-    0x1.d4b87cp-1
-  },
-  { // Entry 353
-    -0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
-    -0x1.bf14bap-1
-  },
-  { // Entry 354
-    0x1.88647d8ad2e41fb7c0af0f64614c9993p-1,
-    0x1.bf14bap-1
-  },
-  { // Entry 355
-    -0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
-    -0x1.a970f8p-1
-  },
-  { // Entry 356
-    0x1.7a253f9f89a7d3e4f9c54638418e97f6p-1,
-    0x1.a970f8p-1
-  },
-  { // Entry 357
-    -0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
-    -0x1.93cd36p-1
-  },
-  { // Entry 358
-    0x1.6b391b34aab828fbe7cd7dcaf9ef3bd6p-1,
-    0x1.93cd36p-1
-  },
-  { // Entry 359
-    -0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
-    -0x1.7e2974p-1
-  },
-  { // Entry 360
-    0x1.5ba6e2fb980d482cf00ede80f5597fb2p-1,
-    0x1.7e2974p-1
-  },
-  { // Entry 361
-    -0x1.4b75b5954e718020900719e25a7ea93bp-1,
-    -0x1.6885b2p-1
-  },
-  { // Entry 362
-    0x1.4b75b5954e718020900719e25a7ea93bp-1,
-    0x1.6885b2p-1
-  },
-  { // Entry 363
-    -0x1.3aacfa510810054c52ae0b67d116eb40p-1,
-    -0x1.52e1f0p-1
-  },
-  { // Entry 364
-    0x1.3aacfa510810054c52ae0b67d116eb40p-1,
-    0x1.52e1f0p-1
-  },
-  { // Entry 365
-    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    -0x1.3d3e36p-1
-  },
-  { // Entry 366
-    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    0x1.3d3e36p-1
-  },
-  { // Entry 367
-    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    -0x1.0a0b02p-1
-  },
-  { // Entry 368
-    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    0x1.0a0b02p-1
-  },
-  { // Entry 369
-    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    -0x1.d8f720p-2
-  },
-  { // Entry 370
-    0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    0x1.d8f720p-2
-  },
-  { // Entry 371
-    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    -0x1.9dd83cp-2
-  },
-  { // Entry 372
-    0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    0x1.9dd83cp-2
-  },
-  { // Entry 373
-    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    -0x1.62b958p-2
-  },
-  { // Entry 374
-    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    0x1.62b958p-2
-  },
-  { // Entry 375
-    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    -0x1.279a74p-2
-  },
-  { // Entry 376
-    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    0x1.279a74p-2
-  },
-  { // Entry 377
-    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    -0x1.d8f720p-3
-  },
-  { // Entry 378
-    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    0x1.d8f720p-3
-  },
-  { // Entry 379
-    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    -0x1.62b958p-3
-  },
-  { // Entry 380
-    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    0x1.62b958p-3
-  },
-  { // Entry 381
-    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    -0x1.d8f720p-4
-  },
-  { // Entry 382
-    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    0x1.d8f720p-4
-  },
-  { // Entry 383
-    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    -0x1.d8f720p-5
-  },
-  { // Entry 384
-    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    0x1.d8f720p-5
-  },
-  { // Entry 385
-    0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    0x1.d8f720p-5
-  },
-  { // Entry 386
-    -0x1.d8b3deba6ac493b04b2103a0dbaef02fp-5,
-    -0x1.d8f720p-5
-  },
-  { // Entry 387
-    0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    0x1.d8f720p-4
-  },
-  { // Entry 388
-    -0x1.d7ea3d56e1e6244c8786d74f189d98acp-4,
-    -0x1.d8f720p-4
-  },
-  { // Entry 389
-    0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    0x1.62b958p-3
-  },
-  { // Entry 390
-    -0x1.60f3fa460b85811d2ae710cd69ec3690p-3,
-    -0x1.62b958p-3
-  },
-  { // Entry 391
-    0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    0x1.d8f720p-3
-  },
-  { // Entry 392
-    -0x1.d4c5bb872ea5375834ca0bca088d1d75p-3,
-    -0x1.d8f720p-3
-  },
-  { // Entry 393
-    0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    0x1.279a74p-2
-  },
-  { // Entry 394
-    -0x1.2383ca2b249807d95005d96cfdaecd6cp-2,
-    -0x1.279a74p-2
-  },
-  { // Entry 395
-    0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    0x1.62b958p-2
-  },
-  { // Entry 396
-    -0x1.5bac05e1e0a7c2de280fcb93be67a4dap-2,
-    -0x1.62b958p-2
-  },
-  { // Entry 397
-    0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    0x1.9dd83cp-2
-  },
-  { // Entry 398
-    -0x1.92aba8981b25deda4cc1817251723a1bp-2,
-    -0x1.9dd83cp-2
-  },
-  { // Entry 399
-    0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    0x1.d8f720p-2
-  },
-  { // Entry 400
-    -0x1.c853c704e3b94322031d6b47aef853c9p-2,
-    -0x1.d8f720p-2
-  },
-  { // Entry 401
-    0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    0x1.0a0b02p-1
-  },
-  { // Entry 402
-    -0x1.fc769aecd265cfea08e0ff30c2fbcacdp-2,
-    -0x1.0a0b02p-1
-  },
-  { // Entry 403
-    0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    0x1.3d3e36p-1
-  },
-  { // Entry 404
-    -0x1.2954644ceb8e3a2479c83ae84af57d3ep-1,
-    -0x1.3d3e36p-1
-  },
-  { // Entry 405
-    0x1.3aad00a09268a39df1653c70db91f157p-1,
-    0x1.52e1f8p-1
-  },
-  { // Entry 406
-    -0x1.3aad00a09268a39df1653c70db91f157p-1,
-    -0x1.52e1f8p-1
-  },
-  { // Entry 407
-    0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
-    0x1.6885bap-1
-  },
-  { // Entry 408
-    -0x1.4b75bbae388a7f3466e7f2d6bdcf72bbp-1,
-    -0x1.6885bap-1
-  },
-  { // Entry 409
-    0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
-    0x1.7e297cp-1
-  },
-  { // Entry 410
-    -0x1.5ba6e8db1833475712b9a42a1ad0d2c2p-1,
-    -0x1.7e297cp-1
-  },
-  { // Entry 411
-    0x1.6b3920d8117828928fe10ac70ba69e76p-1,
-    0x1.93cd3ep-1
-  },
-  { // Entry 412
-    -0x1.6b3920d8117828928fe10ac70ba69e76p-1,
-    -0x1.93cd3ep-1
-  },
-  { // Entry 413
-    0x1.7a25450443098836c5202375db4b8462p-1,
-    0x1.a971p-1
-  },
-  { // Entry 414
-    -0x1.7a25450443098836c5202375db4b8462p-1,
-    -0x1.a971p-1
-  },
-  { // Entry 415
-    0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
-    0x1.bf14c2p-1
-  },
-  { // Entry 416
-    -0x1.886482ae6797b38364f5c72ce9a3b76fp-1,
-    -0x1.bf14c2p-1
-  },
-  { // Entry 417
-    0x1.95f056337acc1d2d557525232e915467p-1,
-    0x1.d4b884p-1
-  },
-  { // Entry 418
-    -0x1.95f056337acc1d2d557525232e915467p-1,
-    -0x1.d4b884p-1
-  },
-  { // Entry 419
-    0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    0x1.ea5c3ep-1
-  },
-  { // Entry 420
-    -0x1.a2c2895edb0d4ba51cdbd5390cac468fp-1,
-    -0x1.ea5c3ep-1
-  },
-  { // Entry 421
-    0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    0x1.12bd92p0
-  },
-  { // Entry 422
-    -0x1.c1e988b95614abd65d3d811f5c88039bp-1,
-    -0x1.12bd92p0
-  },
-  { // Entry 423
-    0x1.d294d2e06b3d10a4de263172d50f4497p-1,
-    0x1.257b24p0
-  },
-  { // Entry 424
-    -0x1.d294d2e06b3d10a4de263172d50f4497p-1,
-    -0x1.257b24p0
-  },
-  { // Entry 425
-    0x1.e0c04bb65bd33012be72a340df2c044bp-1,
-    0x1.3838b6p0
-  },
-  { // Entry 426
-    -0x1.e0c04bb65bd33012be72a340df2c044bp-1,
-    -0x1.3838b6p0
-  },
-  { // Entry 427
-    0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
-    0x1.4af648p0
-  },
-  { // Entry 428
-    -0x1.ec5884eb990c3deaaeebd3f0f84d6962p-1,
-    -0x1.4af648p0
-  },
-  { // Entry 429
-    0x1.f54d9835b0e66e17612160272521f3b0p-1,
-    0x1.5db3dap0
-  },
-  { // Entry 430
-    -0x1.f54d9835b0e66e17612160272521f3b0p-1,
-    -0x1.5db3dap0
-  },
-  { // Entry 431
-    0x1.fb933d1cd931685e902e403a1baaecfdp-1,
-    0x1.70716cp0
-  },
-  { // Entry 432
-    -0x1.fb933d1cd931685e902e403a1baaecfdp-1,
-    -0x1.70716cp0
-  },
-  { // Entry 433
-    0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
-    0x1.832efep0
-  },
-  { // Entry 434
-    -0x1.ff20d9d3e8984fec33982e42f5884f2cp-1,
-    -0x1.832efep0
-  },
-  { // Entry 435
-    0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
-    0x1.95ec90p0
-  },
-  { // Entry 436
-    -0x1.fff18f03a4b7e6aacf51f83931e85042p-1,
-    -0x1.95ec90p0
-  },
-  { // Entry 437
-    0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    0x1.a8aa1cp0
-  },
-  { // Entry 438
-    -0x1.fe043f875c6ed4a2c1b8d69a09fcf578p-1,
-    -0x1.a8aa1cp0
-  },
-  { // Entry 439
-    0x1.b3d36a96880cf69d9884a49f5381e917p-1,
-    0x1.04aff8p0
-  },
-  { // Entry 440
-    -0x1.b3d36a96880cf69d9884a49f5381e917p-1,
-    -0x1.04aff8p0
-  },
-  { // Entry 441
-    0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
-    0x1.04b0a0p0
-  },
-  { // Entry 442
-    -0x1.b3d41aebcf391c30c3d2f1ee7b79710cp-1,
-    -0x1.04b0a0p0
-  },
-  { // Entry 443
-    0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
-    0x1.04b148p0
-  },
-  { // Entry 444
-    -0x1.b3d4cb405ab3292be7df5b1b98032fbep-1,
-    -0x1.04b148p0
-  },
-  { // Entry 445
-    0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
-    0x1.04b1f0p0
-  },
-  { // Entry 446
-    -0x1.b3d57b942a7ad19e9b9892c9319e1be6p-1,
-    -0x1.04b1f0p0
-  },
-  { // Entry 447
-    0x1.b3d62be73e8fc998c6c2df6590425613p-1,
-    0x1.04b298p0
-  },
-  { // Entry 448
-    -0x1.b3d62be73e8fc998c6c2df6590425613p-1,
-    -0x1.04b298p0
-  },
-  { // Entry 449
-    0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
-    0x1.04b340p0
-  },
-  { // Entry 450
-    -0x1.b3d6dc3996f1c52aa1f83bdee1d0e023p-1,
-    -0x1.04b340p0
-  },
-  { // Entry 451
-    0x1.b3d78c8b33a07864b6a878573db34bcap-1,
-    0x1.04b3e8p0
-  },
-  { // Entry 452
-    -0x1.b3d78c8b33a07864b6a878573db34bcap-1,
-    -0x1.04b3e8p0
-  },
-  { // Entry 453
-    0x1.b3d83cdc149b9757df195ad885ab5201p-1,
-    0x1.04b490p0
-  },
-  { // Entry 454
-    -0x1.b3d83cdc149b9757df195ad885ab5201p-1,
-    -0x1.04b490p0
-  },
-  { // Entry 455
-    0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
-    0x1.04b534p0
-  },
-  { // Entry 456
-    -0x1.b3d8e8f9908360b38cd13fcbf6224d93p-1,
-    -0x1.04b534p0
-  },
-  { // Entry 457
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 458
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 459
-    0.0,
-    0.0
-  },
-  { // Entry 460
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 461
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 462
-    0x1.1773d36a64df61d6715e60af063559f4p-1,
-    0x1.279a72p-1
-  },
-  { // Entry 463
-    -0x1.1773d36a64df61d6715e60af063559f4p-1,
-    -0x1.279a72p-1
-  },
-  { // Entry 464
-    0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
-    0x1.279a74p-1
-  },
-  { // Entry 465
-    -0x1.1773d51767a78fe91b55f6b7e5fd44c2p-1,
-    -0x1.279a74p-1
-  },
-  { // Entry 466
-    0x1.1773d6c46a6ea687f03625194d25bb52p-1,
-    0x1.279a76p-1
-  },
-  { // Entry 467
-    -0x1.1773d6c46a6ea687f03625194d25bb52p-1,
-    -0x1.279a76p-1
-  },
-  { // Entry 468
-    0x1.f95b8f40501057ac49acef13993b0c55p-1,
-    0x1.bb67acp0
-  },
-  { // Entry 469
-    -0x1.f95b8f40501057ac49acef13993b0c55p-1,
-    -0x1.bb67acp0
-  },
-  { // Entry 470
-    0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
-    0x1.bb67aep0
-  },
-  { // Entry 471
-    -0x1.f95b8e9be727702f7595ae1000a14a1ap-1,
-    -0x1.bb67aep0
-  },
-  { // Entry 472
-    0x1.f95b8df77e36a344670ed07149191a58p-1,
-    0x1.bb67b0p0
-  },
-  { // Entry 473
-    -0x1.f95b8df77e36a344670ed07149191a58p-1,
-    -0x1.bb67b0p0
-  },
-  { // Entry 474
-    0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
-    0x1.bffffep-2
-  },
-  { // Entry 475
-    -0x1.b1d82e835a918de18f5fdadc8b1240cfp-2,
-    -0x1.bffffep-2
-  },
-  { // Entry 476
-    0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    0x1.c0p-2
-  },
-  { // Entry 477
-    -0x1.b1d83053216169476f4d1982b9b14ab1p-2,
-    -0x1.c0p-2
-  },
-  { // Entry 478
-    0x1.b1d83222e830d83743258fd09040ee56p-2,
-    0x1.c00002p-2
-  },
-  { // Entry 479
-    -0x1.b1d83222e830d83743258fd09040ee56p-2,
-    -0x1.c00002p-2
-  },
-  { // Entry 480
-    0x1.44eb3691428062b27925c585ad59d62ap-1,
-    0x1.5ffffep-1
-  },
-  { // Entry 481
-    -0x1.44eb3691428062b27925c585ad59d62ap-1,
-    -0x1.5ffffep-1
-  },
-  { // Entry 482
-    0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    0x1.60p-1
-  },
-  { // Entry 483
-    -0x1.44eb381cf386ab04a4f8656abea80b83p-1,
-    -0x1.60p-1
-  },
-  { // Entry 484
-    0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
-    0x1.600002p-1
-  },
-  { // Entry 485
-    -0x1.44eb39a8a48bae6b98ae11c9400535e5p-1,
-    -0x1.600002p-1
-  },
-  { // Entry 486
-    0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
-    0x1.2ffffep0
-  },
-  { // Entry 487
-    -0x1.dad9017b96408c375d4faf0e4776d1fcp-1,
-    -0x1.2ffffep0
-  },
-  { // Entry 488
-    0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    0x1.30p0
-  },
-  { // Entry 489
-    -0x1.dad902fa8ac870f52f1b843ac83bc3edp-1,
-    -0x1.30p0
-  },
-  { // Entry 490
-    0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
-    0x1.300002p0
-  },
-  { // Entry 491
-    -0x1.dad904797f48ea4ef4fd2e47fe4d52bdp-1,
-    -0x1.300002p0
-  },
-  { // Entry 492
-    0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
-    0x1.37fffep1
-  },
-  { // Entry 493
-    -0x1.4b708093c9cb45355e7821e5aad98ce8p-1,
-    -0x1.37fffep1
-  },
-  { // Entry 494
-    0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    0x1.38p1
-  },
-  { // Entry 495
-    -0x1.4b707a7acdecc84239463e78b312fa10p-1,
-    -0x1.38p1
-  },
-  { // Entry 496
-    0x1.4b707461d1f994476c677c5ad5ddb264p-1,
-    0x1.380002p1
-  },
-  { // Entry 497
-    -0x1.4b707461d1f994476c677c5ad5ddb264p-1,
-    -0x1.380002p1
-  },
-  { // Entry 498
-    0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
-    0x1.069c8cp-4
-  },
-  { // Entry 499
-    -0x1.066e7f705a6ca2b9e107f7dc9f3b26e6p-4,
-    -0x1.069c8cp-4
-  },
-  { // Entry 500
-    0x1.05e476d27febc8b7e9690009b367c327p-3,
-    0x1.069c8cp-3
-  },
-  { // Entry 501
-    -0x1.05e476d27febc8b7e9690009b367c327p-3,
-    -0x1.069c8cp-3
-  },
-  { // Entry 502
-    0x1.877e2de5c9a066b8db595adc149af0c0p-3,
-    0x1.89ead2p-3
-  },
-  { // Entry 503
-    -0x1.877e2de5c9a066b8db595adc149af0c0p-3,
-    -0x1.89ead2p-3
-  },
-  { // Entry 504
-    0x1.03be07acb9dab719b4343a33b9fa6afep-2,
-    0x1.069c8cp-2
-  },
-  { // Entry 505
-    -0x1.03be07acb9dab719b4343a33b9fa6afep-2,
-    -0x1.069c8cp-2
-  },
-  { // Entry 506
-    0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
-    0x1.4843b0p-2
-  },
-  { // Entry 507
-    -0x1.42abbc5b3b2f91e8ece46e5effd28369p-2,
-    -0x1.4843b0p-2
-  },
-  { // Entry 508
-    0x1.804601411d93f4750919670061de07d9p-2,
-    0x1.89ead4p-2
-  },
-  { // Entry 509
-    -0x1.804601411d93f4750919670061de07d9p-2,
-    -0x1.89ead4p-2
-  },
-  { // Entry 510
-    0x1.bc4c08af356088b1694995bfaf8a297bp-2,
-    0x1.cb91f8p-2
-  },
-  { // Entry 511
-    -0x1.bc4c08af356088b1694995bfaf8a297bp-2,
-    -0x1.cb91f8p-2
-  },
-  { // Entry 512
-    0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
-    0x1.069c8ep-1
-  },
-  { // Entry 513
-    -0x1.f67eae34dc0b42b465fd2a3fb07564a4p-2,
-    -0x1.069c8ep-1
-  },
-  { // Entry 514
-    0x1.17505c86231898fd86b18d2282d93eedp-1,
-    0x1.277020p-1
-  },
-  { // Entry 515
-    -0x1.17505c86231898fd86b18d2282d93eedp-1,
-    -0x1.277020p-1
-  },
-  { // Entry 516
-    0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
-    0x1.4843b2p-1
-  },
-  { // Entry 517
-    -0x1.323b8e40d16575e50dc7b6e567bb5084p-1,
-    -0x1.4843b2p-1
-  },
-  { // Entry 518
-    0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
-    0x1.691744p-1
-  },
-  { // Entry 519
-    -0x1.4be49b08a1e1629cbdaa507e18255cd8p-1,
-    -0x1.691744p-1
-  },
-  { // Entry 520
-    0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
-    0x1.89ead6p-1
-  },
-  { // Entry 521
-    -0x1.6430847dbbbfd46cbebbc6d5f51c7c49p-1,
-    -0x1.89ead6p-1
-  },
-  { // Entry 522
-    0x1.7b05bb87b38844e56003c41ef804b273p-1,
-    0x1.aabe68p-1
-  },
-  { // Entry 523
-    -0x1.7b05bb87b38844e56003c41ef804b273p-1,
-    -0x1.aabe68p-1
-  },
-  { // Entry 524
-    0x1.904c3b389d55d3deddb39d05eb366571p-1,
-    0x1.cb91fap-1
-  },
-  { // Entry 525
-    -0x1.904c3b389d55d3deddb39d05eb366571p-1,
-    -0x1.cb91fap-1
-  },
-  { // Entry 526
-    0x1.a3eda211798a82697d62431f9ae46cc4p-1,
-    0x1.ec658cp-1
-  },
-  { // Entry 527
-    -0x1.a3eda211798a82697d62431f9ae46cc4p-1,
-    -0x1.ec658cp-1
-  },
-  { // Entry 528
-    0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
-    0x1.069c8ep0
-  },
-  { // Entry 529
-    -0x1.b5d54883fcb6123bc28aac91f085e4eep-1,
-    -0x1.069c8ep0
-  },
-  { // Entry 530
-    0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
-    0x1.170656p0
-  },
-  { // Entry 531
-    -0x1.c5f05a0135d4882c768cdf18e2e1112cp-1,
-    -0x1.170656p0
-  },
-  { // Entry 532
-    0x1.d42de53e315c839ce188e201205e99dep-1,
-    0x1.27701ep0
-  },
-  { // Entry 533
-    -0x1.d42de53e315c839ce188e201205e99dep-1,
-    -0x1.27701ep0
-  },
-  { // Entry 534
-    0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
-    0x1.37d9e6p0
-  },
-  { // Entry 535
-    -0x1.e07eef45d91eea8a6cc7369aa0e55388p-1,
-    -0x1.37d9e6p0
-  },
-  { // Entry 536
-    0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
-    0x1.4843aep0
-  },
-  { // Entry 537
-    -0x1.ead6833b2aa002baa1c2b19a38dc9b79p-1,
-    -0x1.4843aep0
-  },
-  { // Entry 538
-    0x1.f329bffa6a208591eecb6905d7594e3bp-1,
-    0x1.58ad76p0
-  },
-  { // Entry 539
-    -0x1.f329bffa6a208591eecb6905d7594e3bp-1,
-    -0x1.58ad76p0
-  },
-  { // Entry 540
-    0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
-    0x1.69173ep0
-  },
-  { // Entry 541
-    -0x1.f96fe38afbd95b5fcd08608110e9381fp-1,
-    -0x1.69173ep0
-  },
-  { // Entry 542
-    0x1.fda25455d9567772f20f25d15efc6775p-1,
-    0x1.798106p0
-  },
-  { // Entry 543
-    -0x1.fda25455d9567772f20f25d15efc6775p-1,
-    -0x1.798106p0
-  },
-  { // Entry 544
-    0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
-    0x1.89eacep0
-  },
-  { // Entry 545
-    -0x1.ffbca816f1f1516ec5d757b0db54ae34p-1,
-    -0x1.89eacep0
-  },
-  { // Entry 546
-    0x1.ffbca88228b163189ab8d637db99bd2dp-1,
-    0x1.9a5496p0
-  },
-  { // Entry 547
-    -0x1.ffbca88228b163189ab8d637db99bd2dp-1,
-    -0x1.9a5496p0
-  },
-  { // Entry 548
-    0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
-    0x1.aabe5ep0
-  },
-  { // Entry 549
-    -0x1.fda255970ccddb9d127ecf63403c2bf7p-1,
-    -0x1.aabe5ep0
-  },
-  { // Entry 550
-    0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
-    0x1.bb2826p0
-  },
-  { // Entry 551
-    -0x1.f96fe5a0da244489fb2f4b97b3e48757p-1,
-    -0x1.bb2826p0
-  },
-  { // Entry 552
-    0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
-    0x1.cb91eep0
-  },
-  { // Entry 553
-    -0x1.f329c2e2c1a39bad8ecdcb87961ba44ap-1,
-    -0x1.cb91eep0
-  },
-  { // Entry 554
-    0x1.ead686f2ec572c83ed34a01f764d193ep-1,
-    0x1.dbfbb6p0
-  },
-  { // Entry 555
-    -0x1.ead686f2ec572c83ed34a01f764d193ep-1,
-    -0x1.dbfbb6p0
-  },
-  { // Entry 556
-    0x1.e07ef3c91bd500a0de230ad573163163p-1,
-    0x1.ec657ep0
-  },
-  { // Entry 557
-    -0x1.e07ef3c91bd500a0de230ad573163163p-1,
-    -0x1.ec657ep0
-  },
-  { // Entry 558
-    0x1.d42dea8835c88adb9cde17347f934e25p-1,
-    0x1.fccf46p0
-  },
-  { // Entry 559
-    -0x1.d42dea8835c88adb9cde17347f934e25p-1,
-    -0x1.fccf46p0
-  },
-  { // Entry 560
-    0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
-    0x1.069c88p1
-  },
-  { // Entry 561
-    -0x1.c5f05e32c80fb0fe603033ec028a4c32p-1,
-    -0x1.069c88p1
-  },
-  { // Entry 562
-    0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
-    0x1.0ed16cp1
-  },
-  { // Entry 563
-    -0x1.b5d54d3732d3b2e79d4907e115401ddap-1,
-    -0x1.0ed16cp1
-  },
-  { // Entry 564
-    0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
-    0x1.170650p1
-  },
-  { // Entry 565
-    -0x1.a3eda74161d06b83ec2c8dc396d813b9p-1,
-    -0x1.170650p1
-  },
-  { // Entry 566
-    0x1.904c421efce58f4e8170d36dcda8e02cp-1,
-    0x1.1f3b34p1
-  },
-  { // Entry 567
-    -0x1.904c421efce58f4e8170d36dcda8e02cp-1,
-    -0x1.1f3b34p1
-  },
-  { // Entry 568
-    0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
-    0x1.277018p1
-  },
-  { // Entry 569
-    -0x1.7b05c45093944d6afb0c90d2f9cb217fp-1,
-    -0x1.277018p1
-  },
-  { // Entry 570
-    0x1.64308f506ffdaf1326d10b3380278e98p-1,
-    0x1.2fa4fcp1
-  },
-  { // Entry 571
-    -0x1.64308f506ffdaf1326d10b3380278e98p-1,
-    -0x1.2fa4fcp1
-  },
-  { // Entry 572
-    0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
-    0x1.37d9e0p1
-  },
-  { // Entry 573
-    -0x1.4be4a8076c135a48f3f1a1aaa362475fp-1,
-    -0x1.37d9e0p1
-  },
-  { // Entry 574
-    0x1.323b9d888d4da77a610893735eeed1cbp-1,
-    0x1.400ec4p1
-  },
-  { // Entry 575
-    -0x1.323b9d888d4da77a610893735eeed1cbp-1,
-    -0x1.400ec4p1
-  },
-  { // Entry 576
-    0x1.17506e2dfb603d34b9af39b12c1db735p-1,
-    0x1.4843a8p1
-  },
-  { // Entry 577
-    -0x1.17506e2dfb603d34b9af39b12c1db735p-1,
-    -0x1.4843a8p1
-  },
-  { // Entry 578
-    0x1.f67ed667352d4827450013f15e321bfbp-2,
-    0x1.50788cp1
-  },
-  { // Entry 579
-    -0x1.f67ed667352d4827450013f15e321bfbp-2,
-    -0x1.50788cp1
-  },
-  { // Entry 580
-    0x1.bc4c35da51e34b776e5e04da58f23441p-2,
-    0x1.58ad70p1
-  },
-  { // Entry 581
-    -0x1.bc4c35da51e34b776e5e04da58f23441p-2,
-    -0x1.58ad70p1
-  },
-  { // Entry 582
-    0x1.8046336e68427cf756056d3f4edbb662p-2,
-    0x1.60e254p1
-  },
-  { // Entry 583
-    -0x1.8046336e68427cf756056d3f4edbb662p-2,
-    -0x1.60e254p1
-  },
-  { // Entry 584
-    0x1.42abf3872905e632f204c41b24af90b6p-2,
-    0x1.691738p1
-  },
-  { // Entry 585
-    -0x1.42abf3872905e632f204c41b24af90b6p-2,
-    -0x1.691738p1
-  },
-  { // Entry 586
-    0x1.03be43c699f3536990dcf5a6665ac239p-2,
-    0x1.714c1cp1
-  },
-  { // Entry 587
-    -0x1.03be43c699f3536990dcf5a6665ac239p-2,
-    -0x1.714c1cp1
-  },
-  { // Entry 588
-    0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
-    0x1.7981p1
-  },
-  { // Entry 589
-    -0x1.877eadc2fdfc2f0db1e8b78cd3fbfbd2p-3,
-    -0x1.7981p1
-  },
-  { // Entry 590
-    0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
-    0x1.81b5e4p1
-  },
-  { // Entry 591
-    -0x1.05e4fdf846632a8208d90de72d3a6da8p-3,
-    -0x1.81b5e4p1
-  },
-  { // Entry 592
-    0x1.066f9b630b72dff16450e89afdf7e048p-4,
-    0x1.89eac8p1
-  },
-  { // Entry 593
-    -0x1.066f9b630b72dff16450e89afdf7e048p-4,
-    -0x1.89eac8p1
-  },
-  { // Entry 594
-    0x1.03bdf0b79ccf739529d54d422861046cp-2,
-    -0x1.81b5eep2
-  },
-  { // Entry 595
-    -0x1.03bdf0b79ccf739529d54d422861046cp-2,
-    0x1.81b5eep2
-  },
-  { // Entry 596
-    0x1.f67e8b95f5460ea369a803837b721abdp-2,
-    -0x1.714c26p2
-  },
-  { // Entry 597
-    -0x1.f67e8b95f5460ea369a803837b721abdp-2,
-    0x1.714c26p2
-  },
-  { // Entry 598
-    0x1.643070791751dc0636d1854d2bdbc5d4p-1,
-    -0x1.60e25ep2
-  },
-  { // Entry 599
-    -0x1.643070791751dc0636d1854d2bdbc5d4p-1,
-    0x1.60e25ep2
-  },
-  { // Entry 600
-    0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
-    -0x1.507896p2
-  },
-  { // Entry 601
-    -0x1.b5d536f59113a43af30e8c9db8a951a5p-1,
-    0x1.507896p2
-  },
-  { // Entry 602
-    0x1.ead679985549140318349f512dca7a6bp-1,
-    -0x1.400ecep2
-  },
-  { // Entry 603
-    -0x1.ead679985549140318349f512dca7a6bp-1,
-    0x1.400ecep2
-  },
-  { // Entry 604
-    0x1.ffbca7010e0b0452f56075cfd5982880p-1,
-    -0x1.2fa506p2
-  },
-  { // Entry 605
-    -0x1.ffbca7010e0b0452f56075cfd5982880p-1,
-    0x1.2fa506p2
-  },
-  { // Entry 606
-    0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
-    -0x1.1f3b3ep2
-  },
-  { // Entry 607
-    -0x1.f329ca6bfc7425d89c2b4b9ad73ab108p-1,
-    0x1.1f3b3ep2
-  },
-  { // Entry 608
-    0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
-    -0x1.0ed176p2
-  },
-  { // Entry 609
-    -0x1.c5f06fb69427ac0f2d69428d82b5e669p-1,
-    0x1.0ed176p2
-  },
-  { // Entry 610
-    0x1.7b05d864ec9802adbc4b5577c233836ap-1,
-    -0x1.fccf5ap1
-  },
-  { // Entry 611
-    -0x1.7b05d864ec9802adbc4b5577c233836ap-1,
-    0x1.fccf5ap1
-  },
-  { // Entry 612
-    0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
-    -0x1.dbfbc8p1
-  },
-  { // Entry 613
-    -0x1.1750808185a998bbcecc3a6ac0cb2907p-1,
-    0x1.dbfbc8p1
-  },
-  { // Entry 614
-    0x1.42ac0dd9495211816bf04ca53bce4beap-2,
-    -0x1.bb2836p1
-  },
-  { // Entry 615
-    -0x1.42ac0dd9495211816bf04ca53bce4beap-2,
-    0x1.bb2836p1
-  },
-  { // Entry 616
-    0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
-    -0x1.9a54a4p1
-  },
-  { // Entry 617
-    -0x1.066fca39a70b52d06f2cd7eab69c31f2p-4,
-    0x1.9a54a4p1
-  },
-  { // Entry 618
-    -0x1.877d931298e6fbc654f065536cff2b54p-3,
-    -0x1.798112p1
-  },
-  { // Entry 619
-    0x1.877d931298e6fbc654f065536cff2b54p-3,
-    0x1.798112p1
-  },
-  { // Entry 620
-    -0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
-    -0x1.58ad80p1
-  },
-  { // Entry 621
-    0x1.bc4bc2875eb6d38eda3b49cb2320b561p-2,
-    0x1.58ad80p1
-  },
-  { // Entry 622
-    -0x1.4be47d6354c4ced53780b1b519acdec2p-1,
-    -0x1.37d9eep1
-  },
-  { // Entry 623
-    0x1.4be47d6354c4ced53780b1b519acdec2p-1,
-    0x1.37d9eep1
-  },
-  { // Entry 624
-    -0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
-    -0x1.17065cp1
-  },
-  { // Entry 625
-    0x1.a3ed8bcb35cbcf8c6089f82a91c31d5bp-1,
-    0x1.17065cp1
-  },
-  { // Entry 626
-    -0x1.e07ee496ea109654c42e171fdc4537c4p-1,
-    -0x1.ec6594p0
-  },
-  { // Entry 627
-    0x1.e07ee496ea109654c42e171fdc4537c4p-1,
-    0x1.ec6594p0
-  },
-  { // Entry 628
-    -0x1.fda2522219689d0e8069d90f5c969b92p-1,
-    -0x1.aabe70p0
-  },
-  { // Entry 629
-    0x1.fda2522219689d0e8069d90f5c969b92p-1,
-    0x1.aabe70p0
-  },
-  { // Entry 630
-    -0x1.f96fe802fe570372d0fcb6e934b43061p-1,
-    -0x1.69174cp0
-  },
-  { // Entry 631
-    0x1.f96fe802fe570372d0fcb6e934b43061p-1,
-    0x1.69174cp0
-  },
-  { // Entry 632
-    -0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
-    -0x1.277028p0
-  },
-  { // Entry 633
-    0x1.d42ded56ae88a6e1cf270af27e6f1804p-1,
-    0x1.277028p0
-  },
-  { // Entry 634
-    -0x1.904c45326d6dde224381d1d590ada41cp-1,
-    -0x1.cb920ap-1
-  },
-  { // Entry 635
-    0x1.904c45326d6dde224381d1d590ada41cp-1,
-    0x1.cb920ap-1
-  },
-  { // Entry 636
-    -0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
-    -0x1.4843c4p-1
-  },
-  { // Entry 637
-    0x1.323b9cadbb19e75a44483fb64ad8ddf6p-1,
-    0x1.4843c4p-1
-  },
-  { // Entry 638
-    -0x1.80462654bde766faf47f3140e290996dp-2,
-    -0x1.89eafcp-2
-  },
-  { // Entry 639
-    0x1.80462654bde766faf47f3140e290996dp-2,
-    0x1.89eafcp-2
-  },
-  { // Entry 640
-    -0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
-    -0x1.069ce0p-3
-  },
-  { // Entry 641
-    0x1.05e4ca21f386a82bc2e4efcdebb1962bp-3,
-    0x1.069ce0p-3
-  },
-  { // Entry 642
-    0x1.05e423830be01f9fe3c57d06867e0056p-3,
-    0x1.069c38p-3
-  },
-  { // Entry 643
-    -0x1.05e423830be01f9fe3c57d06867e0056p-3,
-    -0x1.069c38p-3
-  },
-  { // Entry 644
-    0x1.8045d87852f1307fea6dc751c4d15992p-2,
-    0x1.89eaa8p-2
-  },
-  { // Entry 645
-    -0x1.8045d87852f1307fea6dc751c4d15992p-2,
-    -0x1.89eaa8p-2
-  },
-  { // Entry 646
-    0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
-    0x1.48439ap-1
-  },
-  { // Entry 647
-    -0x1.323b7b04ee88cff98b2a1620e1f61a01p-1,
-    -0x1.48439ap-1
-  },
-  { // Entry 648
-    0x1.904c2b02aa59528ce044bf2213c96859p-1,
-    0x1.cb91e0p-1
-  },
-  { // Entry 649
-    -0x1.904c2b02aa59528ce044bf2213c96859p-1,
-    -0x1.cb91e0p-1
-  },
-  { // Entry 650
-    0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
-    0x1.277014p0
-  },
-  { // Entry 651
-    -0x1.d42ddd25b3797e6a679f76e05e6c3e08p-1,
-    -0x1.277014p0
-  },
-  { // Entry 652
-    0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
-    0x1.691738p0
-  },
-  { // Entry 653
-    -0x1.f96fe1a0b12d0ad4fa8c82d8af989c5ap-1,
-    -0x1.691738p0
-  },
-  { // Entry 654
-    0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
-    0x1.aabe5cp0
-  },
-  { // Entry 655
-    -0x1.fda255f96094d8fe4e859c4cf0dd68a5p-1,
-    -0x1.aabe5cp0
-  },
-  { // Entry 656
-    0x1.e07ef267748b982778f8d50d2981bb3ap-1,
-    0x1.ec6580p0
-  },
-  { // Entry 657
-    -0x1.e07ef267748b982778f8d50d2981bb3ap-1,
-    -0x1.ec6580p0
-  },
-  { // Entry 658
-    0x1.a3eda2adb01143fb21453b20bd1748fep-1,
-    0x1.170652p1
-  },
-  { // Entry 659
-    -0x1.a3eda2adb01143fb21453b20bd1748fep-1,
-    -0x1.170652p1
-  },
-  { // Entry 660
-    0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
-    0x1.37d9e4p1
-  },
-  { // Entry 661
-    -0x1.4be49bd88a64a0bb414ddacac4fa8de9p-1,
-    -0x1.37d9e4p1
-  },
-  { // Entry 662
-    0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
-    0x1.58ad76p1
-  },
-  { // Entry 663
-    -0x1.bc4c0a9b3782e220ae55786369ccf190p-2,
-    -0x1.58ad76p1
-  },
-  { // Entry 664
-    0x1.877e301f43cafffe6644a8958f108729p-3,
-    0x1.798108p1
-  },
-  { // Entry 665
-    -0x1.877e301f43cafffe6644a8958f108729p-3,
-    -0x1.798108p1
-  },
-  { // Entry 666
-    -0x1.066e8ae1f824a69817e6a806e6317e28p-4,
-    0x1.9a549ap1
-  },
-  { // Entry 667
-    0x1.066e8ae1f824a69817e6a806e6317e28p-4,
-    -0x1.9a549ap1
-  },
-  { // Entry 668
-    -0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
-    0x1.bb282cp1
-  },
-  { // Entry 669
-    0x1.42abc1eca11a0ad12ca6eeff197318aap-2,
-    -0x1.bb282cp1
-  },
-  { // Entry 670
-    -0x1.17505efb8119773c647468be1dfee45ep-1,
-    0x1.dbfbbep1
-  },
-  { // Entry 671
-    0x1.17505efb8119773c647468be1dfee45ep-1,
-    -0x1.dbfbbep1
-  },
-  { // Entry 672
-    -0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
-    0x1.fccf50p1
-  },
-  { // Entry 673
-    0x1.7b05bd8091cd79dff359c8412b0de1a9p-1,
-    -0x1.fccf50p1
-  },
-  { // Entry 674
-    -0x1.c5f05982eabf022748960961666d540dp-1,
-    0x1.0ed170p2
-  },
-  { // Entry 675
-    0x1.c5f05982eabf022748960961666d540dp-1,
-    -0x1.0ed170p2
-  },
-  { // Entry 676
-    -0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
-    0x1.1f3b38p2
-  },
-  { // Entry 677
-    0x1.f329bfbda8122f83e3a1ea0242eb76aap-1,
-    -0x1.1f3b38p2
-  },
-  { // Entry 678
-    -0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
-    0x1.2fa5p2
-  },
-  { // Entry 679
-    0x1.ffbca88ae90f0900b6d3ad89eddd2c80p-1,
-    -0x1.2fa5p2
-  },
-  { // Entry 680
-    -0x1.ead687409c95dcaf61af98513517f507p-1,
-    0x1.400ec8p2
-  },
-  { // Entry 681
-    0x1.ead687409c95dcaf61af98513517f507p-1,
-    -0x1.400ec8p2
-  },
-  { // Entry 682
-    -0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
-    0x1.507890p2
-  },
-  { // Entry 683
-    0x1.b5d54fd79372b90d5d4c7acf7adaed42p-1,
-    -0x1.507890p2
-  },
-  { // Entry 684
-    -0x1.643092f42ae797375531420c005ca2cfp-1,
-    0x1.60e258p2
-  },
-  { // Entry 685
-    0x1.643092f42ae797375531420c005ca2cfp-1,
-    -0x1.60e258p2
-  },
-  { // Entry 686
-    -0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
-    0x1.714c20p2
-  },
-  { // Entry 687
-    0x1.f67edf3b7bee8554d54d84ea83f6cb21p-2,
-    -0x1.714c20p2
-  },
-  { // Entry 688
-    -0x1.03be4d93d949325340b2f464201545a7p-2,
-    0x1.81b5e8p2
-  },
-  { // Entry 689
-    0x1.03be4d93d949325340b2f464201545a7p-2,
-    -0x1.81b5e8p2
-  },
-  { // Entry 690
-    0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
-    0x1.effffep-5
-  },
-  { // Entry 691
-    -0x1.efb26cfa20f2098ff7e9e42f0260eb01p-5,
-    -0x1.effffep-5
-  },
-  { // Entry 692
-    0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    0x1.f0p-5
-  },
-  { // Entry 693
-    -0x1.efb26ef930c4d3f2b0dbe1931ba5ae64p-5,
-    -0x1.f0p-5
-  },
-  { // Entry 694
-    0x1.efb270f840979c65b75ee5c67016a866p-5,
-    0x1.f00002p-5
-  },
-  { // Entry 695
-    -0x1.efb270f840979c65b75ee5c67016a866p-5,
-    -0x1.f00002p-5
-  },
-  { // Entry 696
-    0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
-    0x1.f7fffep-4
-  },
-  { // Entry 697
-    -0x1.f6baa816fce5ea5a60d8c9fd2a289380p-4,
-    -0x1.f7fffep-4
-  },
-  { // Entry 698
-    0x1.f6baaa131de6438e5611279864fe7663p-4,
-    0x1.f8p-4
-  },
-  { // Entry 699
-    -0x1.f6baaa131de6438e5611279864fe7663p-4,
-    -0x1.f8p-4
-  },
-  { // Entry 700
-    0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
-    0x1.f80002p-4
-  },
-  { // Entry 701
-    -0x1.f6baac0f3ee694e760a138bc06c8be3dp-4,
-    -0x1.f80002p-4
-  },
-  { // Entry 702
-    0x1.4a8c395552fb432af31780e883c98f71p-3,
-    0x1.4bfffep-3
-  },
-  { // Entry 703
-    -0x1.4a8c395552fb432af31780e883c98f71p-3,
-    -0x1.4bfffep-3
-  },
-  { // Entry 704
-    0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    0x1.4cp-3
-  },
-  { // Entry 705
-    -0x1.4a8c3b4e9c7fffd48305f44a42f5f50fp-3,
-    -0x1.4cp-3
-  },
-  { // Entry 706
-    0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
-    0x1.4c0002p-3
-  },
-  { // Entry 707
-    -0x1.4a8c3d47e604a7d54f3f7de402409e2cp-3,
-    -0x1.4c0002p-3
-  },
-  { // Entry 708
-    0x1.2e9cd83630eb35c12efcfb8413583998p-2,
-    0x1.333332p-2
-  },
-  { // Entry 709
-    -0x1.2e9cd83630eb35c12efcfb8413583998p-2,
-    -0x1.333332p-2
-  },
-  { // Entry 710
-    0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
-    0x1.333334p-2
-  },
-  { // Entry 711
-    -0x1.2e9cda1f52c88042833f236ff0f9d486p-2,
-    -0x1.333334p-2
-  },
-  { // Entry 712
-    0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
-    0x1.333336p-2
-  },
-  { // Entry 713
-    -0x1.2e9cdc0874a57f1ca0f976a9b01e4a71p-2,
-    -0x1.333336p-2
-  },
-  { // Entry 714
-    0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
-    0x1.594316p-1
-  },
-  { // Entry 715
-    -0x1.3faefb2b68e6786eb692bd4e4045213ep-1,
-    -0x1.594316p-1
-  },
-  { // Entry 716
-    0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
-    0x1.594318p-1
-  },
-  { // Entry 717
-    -0x1.3faefcbb57c26b0d84b63dbfb72b413bp-1,
-    -0x1.594318p-1
-  },
-  { // Entry 718
-    0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
-    0x1.59431ap-1
-  },
-  { // Entry 719
-    -0x1.3faefe4b469d1dfd561e666edda7c6e6p-1,
-    -0x1.59431ap-1
-  },
-  { // Entry 720
-    0x1.6888a375ab228c1e031c4005769509f9p-1,
-    0x1.8ffffep-1
-  },
-  { // Entry 721
-    -0x1.6888a375ab228c1e031c4005769509f9p-1,
-    -0x1.8ffffep-1
-  },
-  { // Entry 722
-    0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    0x1.90p-1
-  },
-  { // Entry 723
-    -0x1.6888a4e134b2ea520b226eca8694b3a2p-1,
-    -0x1.90p-1
-  },
-  { // Entry 724
-    0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
-    0x1.900002p-1
-  },
-  { // Entry 725
-    -0x1.6888a64cbe41dffd6e4768dcca4db53bp-1,
-    -0x1.900002p-1
-  },
-  { // Entry 726
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 727
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 728
-    0.0,
-    0.0
-  },
-  { // Entry 729
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 730
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 731
-    0x1.91f65dccfead353d8db9c32f12262730p-5,
-    0x1.921fb4p-5
-  },
-  { // Entry 732
-    -0x1.91f65dccfead353d8db9c32f12262730p-5,
-    -0x1.921fb4p-5
-  },
-  { // Entry 733
-    0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
-    0x1.921fb6p-5
-  },
-  { // Entry 734
-    -0x1.91f65fcc60cb6d09fcc5c35dd6a798c8p-5,
-    -0x1.921fb6p-5
-  },
-  { // Entry 735
-    0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
-    0x1.921fb8p-5
-  },
-  { // Entry 736
-    -0x1.91f661cbc2e9a3447571f72bcfbc21e2p-5,
-    -0x1.921fb8p-5
-  },
-  { // Entry 737
-    0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
-    0x1.921fb4p-4
-  },
-  { // Entry 738
-    -0x1.917a6a7fe8297bf0a1125fb02b2038aep-4,
-    -0x1.921fb4p-4
-  },
-  { // Entry 739
-    0x1.917a6c7d7103b9d90e09615164449c6bp-4,
-    0x1.921fb6p-4
-  },
-  { // Entry 740
-    -0x1.917a6c7d7103b9d90e09615164449c6bp-4,
-    -0x1.921fb6p-4
-  },
-  { // Entry 741
-    0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
-    0x1.921fb8p-4
-  },
-  { // Entry 742
-    -0x1.917a6e7af9ddf17b914e6d2e8e83b33ep-4,
-    -0x1.921fb8p-4
-  },
-  { // Entry 743
-    0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
-    0x1.921fb4p-3
-  },
-  { // Entry 744
-    -0x1.8f8b82889296b5cf7904db1e74b3466bp-3,
-    -0x1.921fb4p-3
-  },
-  { // Entry 745
-    0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
-    0x1.921fb6p-3
-  },
-  { // Entry 746
-    -0x1.8f8b847ebc13b8998ec5b37e7065341ep-3,
-    -0x1.921fb6p-3
-  },
-  { // Entry 747
-    0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
-    0x1.921fb8p-3
-  },
-  { // Entry 748
-    -0x1.8f8b8674e590a26aec3ea01d30aed486p-3,
-    -0x1.921fb8p-3
-  },
-  { // Entry 749
-    0x1.87de293f569717a42a3bdb01aeae2063p-2,
-    0x1.921fb4p-2
-  },
-  { // Entry 750
-    -0x1.87de293f569717a42a3bdb01aeae2063p-2,
-    -0x1.921fb4p-2
-  },
-  { // Entry 751
-    0x1.87de2b185d5417dca800b85ca1319043p-2,
-    0x1.921fb6p-2
-  },
-  { // Entry 752
-    -0x1.87de2b185d5417dca800b85ca1319043p-2,
-    -0x1.921fb6p-2
-  },
-  { // Entry 753
-    0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
-    0x1.921fb8p-2
-  },
-  { // Entry 754
-    -0x1.87de2cf16410b61d9aff7e628fc853b2p-2,
-    -0x1.921fb8p-2
-  },
-  { // Entry 755
-    0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
-    0x1.921fb4p-1
-  },
-  { // Entry 756
-    -0x1.6a09e582aa3945461b5a8a0787d5ab5bp-1,
-    -0x1.921fb4p-1
-  },
-  { // Entry 757
-    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    0x1.921fb6p-1
-  },
-  { // Entry 758
-    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    -0x1.921fb6p-1
-  },
-  { // Entry 759
-    0x1.6a09e856be050baccde9a76961e84aa7p-1,
-    0x1.921fb8p-1
-  },
-  { // Entry 760
-    -0x1.6a09e856be050baccde9a76961e84aa7p-1,
-    -0x1.921fb8p-1
-  },
-  { // Entry 761
-    0x1.fffffffffffe6546cc38211c26dabeebp-1,
-    0x1.921fb4p0
-  },
-  { // Entry 762
-    -0x1.fffffffffffe6546cc38211c26dabeebp-1,
-    -0x1.921fb4p0
-  },
-  { // Entry 763
-    0x1.ffffffffffff76521249c7422930ed82p-1,
-    0x1.921fb6p0
-  },
-  { // Entry 764
-    -0x1.ffffffffffff76521249c7422930ed82p-1,
-    -0x1.921fb6p0
-  },
-  { // Entry 765
-    0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
-    0x1.921fb8p0
-  },
-  { // Entry 766
-    -0x1.fffffffffff8875d585b6d6cfce97d9cp-1,
-    -0x1.921fb8p0
-  },
-  { // Entry 767
-    0x1.4442d184698831f15b6315bfa6b5ae75p-23,
-    0x1.921fb4p1
-  },
-  { // Entry 768
-    -0x1.4442d184698831f15b6315bfa6b5ae75p-23,
-    -0x1.921fb4p1
-  },
-  { // Entry 769
-    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    0x1.921fb6p1
-  },
-  { // Entry 770
-    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    -0x1.921fb6p1
-  },
-  { // Entry 771
-    -0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
-    0x1.921fb8p1
-  },
-  { // Entry 772
-    0x1.5dde973dcb346afa46203cddc6f7fe97p-22,
-    -0x1.921fb8p1
-  },
-  { // Entry 773
-    -0x1.4442d1846984217628872e56eb58b4c1p-22,
-    0x1.921fb4p2
-  },
-  { // Entry 774
-    0x1.4442d1846984217628872e56eb58b4c1p-22,
-    -0x1.921fb4p2
-  },
-  { // Entry 775
-    0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
-    0x1.921fb6p2
-  },
-  { // Entry 776
-    -0x1.777a5cf72ceacbf6ec657e977ef771f1p-23,
-    -0x1.921fb6p2
-  },
-  { // Entry 777
-    0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
-    0x1.921fb8p2
-  },
-  { // Entry 778
-    -0x1.5dde973dcb1fff10bb0388479e82f4bbp-21,
-    -0x1.921fb8p2
-  },
-  { // Entry 779
-    -0x1.4442d1846973df895d1791023ded513cp-21,
-    0x1.921fb4p3
-  },
-  { // Entry 780
-    0x1.4442d1846973df895d1791023ded513cp-21,
-    -0x1.921fb4p3
-  },
-  { // Entry 781
-    0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
-    0x1.921fb6p3
-  },
-  { // Entry 782
-    -0x1.777a5cf72ce47c7a3ba04bc2a607a9a7p-22,
-    -0x1.921fb6p3
-  },
-  { // Entry 783
-    0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
-    0x1.921fb8p3
-  },
-  { // Entry 784
-    -0x1.5dde973dcace4f6a8e90bd15e00610f8p-20,
-    -0x1.921fb8p3
-  },
-  { // Entry 785
-    -0x1.4442d1846932d7d62f59209388c7f7cap-20,
-    0x1.921fb4p4
-  },
-  { // Entry 786
-    0x1.4442d1846932d7d62f59209388c7f7cap-20,
-    -0x1.921fb4p4
-  },
-  { // Entry 787
-    0x1.777a5cf72ccb3e87788b811229e725bcp-21,
-    0x1.921fb6p4
-  },
-  { // Entry 788
-    -0x1.777a5cf72ccb3e87788b811229e725bcp-21,
-    -0x1.921fb6p4
-  },
-  { // Entry 789
-    0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
-    0x1.921fb8p4
-  },
-  { // Entry 790
-    -0x1.5dde973dc98790d1dcc602bd1b86bccap-19,
-    -0x1.921fb8p4
-  },
-  { // Entry 791
-    -0x1.4442d184682eb909785fad18bcb5dbfcp-19,
-    0x1.921fb4p5
-  },
-  { // Entry 792
-    0x1.4442d184682eb909785fad18bcb5dbfcp-19,
-    -0x1.921fb4p5
-  },
-  { // Entry 793
-    0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
-    0x1.921fb6p5
-  },
-  { // Entry 794
-    -0x1.777a5cf72c6646bc6c38607eb34eea13p-20,
-    -0x1.921fb6p5
-  },
-  { // Entry 795
-    0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
-    0x1.921fb8p5
-  },
-  { // Entry 796
-    -0x1.5dde973dc46c966f15a2403d60cd14d0p-18,
-    -0x1.921fb8p5
-  },
-  { // Entry 797
-    -0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
-    0x1.921fb4p6
-  },
-  { // Entry 798
-    0x1.4442d184641e3dd69c7ec32e14a209a5p-18,
-    -0x1.921fb4p6
-  },
-  { // Entry 799
-    0x1.777a5cf72ad267903aec8118778b3b5ap-19,
-    0x1.921fb6p6
-  },
-  { // Entry 800
-    -0x1.777a5cf72ad267903aec8118778b3b5ap-19,
-    -0x1.921fb6p6
-  },
-  { // Entry 801
-    0x1.5dde973db000ace3f985a473ea1fc039p-17,
-    0x1.921fb8p6
-  },
-  { // Entry 802
-    -0x1.5dde973db000ace3f985a473ea1fc039p-17,
-    -0x1.921fb8p6
-  },
-  { // Entry 803
-    -0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
-    0x1.921fb4p7
-  },
-  { // Entry 804
-    0x1.4442d18453dc510b2d495b8bf79bd1cep-17,
-    -0x1.921fb4p7
-  },
-  { // Entry 805
-    0x1.777a5cf72482eadf75c731f972507718p-18,
-    0x1.921fb6p7
-  },
-  { // Entry 806
-    -0x1.777a5cf72482eadf75c731f972507718p-18,
-    -0x1.921fb6p7
-  },
-  { // Entry 807
-    0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
-    0x1.921fb8p7
-  },
-  { // Entry 808
-    -0x1.5dde973d5e5106b7903a18a552aefc6ep-16,
-    -0x1.921fb8p7
-  },
-  { // Entry 809
-    0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
-    0x1.2d97c4p1
-  },
-  { // Entry 810
-    -0x1.6a09f1940b80c8e25cfc8c10d42576c6p-1,
-    -0x1.2d97c4p1
-  },
-  { // Entry 811
-    0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
-    0x1.2d97c6p1
-  },
-  { // Entry 812
-    -0x1.6a09ebebe40889245d57c5c9d90a6d82p-1,
-    -0x1.2d97c6p1
-  },
-  { // Entry 813
-    0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
-    0x1.2d97c8p1
-  },
-  { // Entry 814
-    -0x1.6a09e643bc79a8c79ef4bf187727e269p-1,
-    -0x1.2d97c8p1
-  },
-  { // Entry 815
-    -0x1.6a09df19704cf14108e09000ff6374bfp-1,
-    0x1.f6a7a0p1
-  },
-  { // Entry 816
-    0x1.6a09df19704cf14108e09000ff6374bfp-1,
-    -0x1.f6a7a0p1
-  },
-  { // Entry 817
-    -0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
-    0x1.f6a7a2p1
-  },
-  { // Entry 818
-    0x1.6a09e4c197f87ace1c81b43022be39b1p-1,
-    -0x1.f6a7a2p1
-  },
-  { // Entry 819
-    -0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
-    0x1.f6a7a4p1
-  },
-  { // Entry 820
-    0x1.6a09ea69bf8d63bce40958f5c4b4f155p-1,
-    -0x1.f6a7a4p1
-  },
-  { // Entry 821
-    -0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
-    0x1.2d97c4p2
-  },
-  { // Entry 822
-    0x1.ffffffffff065cb240bb8f9519d2c6f1p-1,
-    -0x1.2d97c4p2
-  },
-  { // Entry 823
-    -0x1.ffffffffffc32939898f464aafc2e74ap-1,
-    0x1.2d97c6p2
-  },
-  { // Entry 824
-    0x1.ffffffffffc32939898f464aafc2e74ap-1,
-    -0x1.2d97c6p2
-  },
-  { // Entry 825
-    -0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
-    0x1.2d97c8p2
-  },
-  { // Entry 826
-    0x1.fffffffffffff5c0d2630ee0a1fb4e7bp-1,
-    -0x1.2d97c8p2
-  },
-  { // Entry 827
-    -0x1.6a09f529316cde5a190d235cc4ccb825p-1,
-    0x1.5fdbbcp2
-  },
-  { // Entry 828
-    0x1.6a09f529316cde5a190d235cc4ccb825p-1,
-    -0x1.5fdbbcp2
-  },
-  { // Entry 829
-    -0x1.6a09e9d8e2826770567ea818b2e89960p-1,
-    0x1.5fdbbep2
-  },
-  { // Entry 830
-    0x1.6a09e9d8e2826770567ea818b2e89960p-1,
-    -0x1.5fdbbep2
-  },
-  { // Entry 831
-    -0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
-    0x1.5fdbc0p2
-  },
-  { // Entry 832
-    0x1.6a09de88933d6e0c1db78e1d7cd15173p-1,
-    -0x1.5fdbc0p2
-  },
-  { // Entry 833
-    0x1.6a09d033fa715a407a6f03d01b91113fp-1,
-    0x1.c463a8p2
-  },
-  { // Entry 834
-    -0x1.6a09d033fa715a407a6f03d01b91113fp-1,
-    -0x1.c463a8p2
-  },
-  { // Entry 835
-    0x1.6a09db844a28f8635851fdf8818515efp-1,
-    0x1.c463aap2
-  },
-  { // Entry 836
-    -0x1.6a09db844a28f8635851fdf8818515efp-1,
-    -0x1.c463aap2
-  },
-  { // Entry 837
-    0x1.6a09e6d49986140f55226fc58672612cp-1,
-    0x1.c463acp2
-  },
-  { // Entry 838
-    -0x1.6a09e6d49986140f55226fc58672612cp-1,
-    -0x1.c463acp2
-  },
-  { // Entry 839
-    0x1.ffffffffff95397934cac1f28532d3d3p-1,
-    0x1.f6a7a0p2
-  },
-  { // Entry 840
-    -0x1.ffffffffff95397934cac1f28532d3d3p-1,
-    -0x1.f6a7a0p2
-  },
-  { // Entry 841
-    0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
-    0x1.f6a7a2p2
-  },
-  { // Entry 842
-    -0x1.fffffffffffa8e5aae2bb93ae590f984p-1,
-    -0x1.f6a7a2p2
-  },
-  { // Entry 843
-    0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
-    0x1.f6a7a4p2
-  },
-  { // Entry 844
-    -0x1.ffffffffffdfe33c278cb48a59ee3ef2p-1,
-    -0x1.f6a7a4p2
-  },
-  { // Entry 845
-    0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
-    0x1.1475cap3
-  },
-  { // Entry 846
-    -0x1.6a0a040ea5c32ba4afbeb86a614c5d16p-1,
-    -0x1.1475cap3
-  },
-  { // Entry 847
-    0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
-    0x1.1475ccp3
-  },
-  { // Entry 848
-    -0x1.6a09ed6e088212b1e260a5132d6959b7p-1,
-    -0x1.1475ccp3
-  },
-  { // Entry 849
-    0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
-    0x1.1475cep3
-  },
-  { // Entry 850
-    -0x1.6a09d6cd69d6efd1a6fa2dd4c617cbbep-1,
-    -0x1.1475cep3
-  },
-  { // Entry 851
-    0x1.f9990e91a64ae486757878bdfee0f703p-20,
-    0x1.2d97c4p3
-  },
-  { // Entry 852
-    -0x1.f9990e91a64ae486757878bdfee0f703p-20,
-    -0x1.2d97c4p3
-  },
-  { // Entry 853
-    0x1.f3321d234ed8128aabb0499a43b4def2p-21,
-    0x1.2d97c6p3
-  },
-  { // Entry 854
-    -0x1.f3321d234ed8128aabb0499a43b4def2p-21,
-    -0x1.2d97c6p3
-  },
-  { // Entry 855
-    -0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
-    0x1.2d97c8p3
-  },
-  { // Entry 856
-    0x1.99bc5b961b1ac296dbe1980fd2c890a0p-26,
-    -0x1.2d97c8p3
-  },
-  { // Entry 857
-    -0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
-    0x1.46b9c0p3
-  },
-  { // Entry 858
-    0x1.6a09c14e83f8db080d1223f887cc12ecp-1,
-    -0x1.46b9c0p3
-  },
-  { // Entry 859
-    -0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
-    0x1.46b9c2p3
-  },
-  { // Entry 860
-    0x1.6a09d7ef23fbec1ed812e807beb0492fp-1,
-    -0x1.46b9c2p3
-  },
-  { // Entry 861
-    -0x1.6a09ee8fc294f35db3efce565365af89p-1,
-    0x1.46b9c4p3
-  },
-  { // Entry 862
-    0x1.6a09ee8fc294f35db3efce565365af89p-1,
-    -0x1.46b9c4p3
-  },
-  { // Entry 863
-    -0x1.fffffffffe4c96b397d951cb21861c95p-1,
-    0x1.5fdbbcp3
-  },
-  { // Entry 864
-    0x1.fffffffffe4c96b397d951cb21861c95p-1,
-    -0x1.5fdbbcp3
-  },
-  { // Entry 865
-    -0x1.ffffffffffe8512aebb56c9e75b41941p-1,
-    0x1.5fdbbep3
-  },
-  { // Entry 866
-    0x1.ffffffffffe8512aebb56c9e75b41941p-1,
-    -0x1.5fdbbep3
-  },
-  { // Entry 867
-    -0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
-    0x1.5fdbc0p3
-  },
-  { // Entry 868
-    0x1.ffffffffff840ba23f91c9cb49a10b27p-1,
-    -0x1.5fdbc0p3
-  },
-  { // Entry 869
-    -0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
-    0x1.78fdb6p3
-  },
-  { // Entry 870
-    0x1.6a0a12f4197c90a0ee4a094b6377aa23p-1,
-    -0x1.78fdb6p3
-  },
-  { // Entry 871
-    -0x1.6a09fc537d29cf131d6710991bebabedp-1,
-    0x1.78fdb8p3
-  },
-  { // Entry 872
-    0x1.6a09fc537d29cf131d6710991bebabedp-1,
-    -0x1.78fdb8p3
-  },
-  { // Entry 873
-    -0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
-    0x1.78fdbap3
-  },
-  { // Entry 874
-    0x1.6a09e5b2df6d0388f9070c4340f3e669p-1,
-    -0x1.78fdbap3
-  },
-  { // Entry 875
-    0x1.6a09c909add4dbf32253a39d5c306308p-1,
-    0x1.ab41aep3
-  },
-  { // Entry 876
-    -0x1.6a09c909add4dbf32253a39d5c306308p-1,
-    -0x1.ab41aep3
-  },
-  { // Entry 877
-    0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
-    0x1.ab41b0p3
-  },
-  { // Entry 878
-    -0x1.6a09dfaa4d5c3a7f056f3e61a365b29ep-1,
-    -0x1.ab41b0p3
-  },
-  { // Entry 879
-    0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
-    0x1.ab41b2p3
-  },
-  { // Entry 880
-    -0x1.6a09f64aeb798f2b3e3d9b16e8e3c412p-1,
-    -0x1.ab41b2p3
-  },
-  { // Entry 881
-    0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
-    0x1.c463a8p3
-  },
-  { // Entry 882
-    -0x1.fffffffffc260d6ffb8f4cd8ab3fd020p-1,
-    -0x1.c463a8p3
-  },
-  { // Entry 883
-    0x1.ffffffffff12d89bb084dd762848b3d6p-1,
-    0x1.c463aap3
-  },
-  { // Entry 884
-    -0x1.ffffffffff12d89bb084dd762848b3d6p-1,
-    -0x1.c463aap3
-  },
-  { // Entry 885
-    0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
-    0x1.c463acp3
-  },
-  { // Entry 886
-    -0x1.ffffffffffffa3c7657b85e5b44bbd44p-1,
-    -0x1.c463acp3
-  },
-  { // Entry 887
-    0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
-    0x1.dd85a4p3
-  },
-  { // Entry 888
-    -0x1.6a0a0b38f134a3295a0b386e42f1ca7ap-1,
-    -0x1.dd85a4p3
-  },
-  { // Entry 889
-    0x1.6a09f49854662eff1b35755a129044a7p-1,
-    0x1.dd85a6p3
-  },
-  { // Entry 890
-    -0x1.6a09f49854662eff1b35755a129044a7p-1,
-    -0x1.dd85a6p3
-  },
-  { // Entry 891
-    0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
-    0x1.dd85a8p3
-  },
-  { // Entry 892
-    -0x1.6a09ddf7b62db0e0440b6a4262203b11p-1,
-    -0x1.dd85a8p3
-  },
-  { // Entry 893
-    0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
-    0x1.f6a7a0p3
-  },
-  { // Entry 894
-    -0x1.4aa9c2f2c19a062b18a017bcd5424feap-20,
-    -0x1.f6a7a0p3
-  },
-  { // Entry 895
-    0x1.2aa70bcb07d3a40781510d213652e43ap-22,
-    0x1.f6a7a2p3
-  },
-  { // Entry 896
-    -0x1.2aa70bcb07d3a40781510d213652e43ap-22,
-    -0x1.f6a7a2p3
-  },
-  { // Entry 897
-    -0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
-    0x1.f6a7a4p3
-  },
-  { // Entry 898
-    0x1.6aac7a1a7bf5bbd49572ffb8d7749922p-21,
-    -0x1.f6a7a4p3
-  },
-  { // Entry 899
-    -0x1.6a09a383953124096898340f9168b9d5p-1,
-    0x1.07e4ccp4
-  },
-  { // Entry 900
-    0x1.6a09a383953124096898340f9168b9d5p-1,
-    -0x1.07e4ccp4
-  },
-  { // Entry 901
-    -0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
-    0x1.07e4cep4
-  },
-  { // Entry 902
-    0x1.6a09d0c4d7869961c47a9b0b968cc910p-1,
-    -0x1.07e4cep4
-  },
-  { // Entry 903
-    -0x1.6a09fe061433e7770d00ca59d5a56251p-1,
-    0x1.07e4d0p4
-  },
-  { // Entry 904
-    0x1.6a09fe061433e7770d00ca59d5a56251p-1,
-    -0x1.07e4d0p4
-  },
-  { // Entry 905
-    -0x1.fffffffff9219dae5feda1b539335803p-1,
-    0x1.1475cap4
-  },
-  { // Entry 906
-    0x1.fffffffff9219dae5feda1b539335803p-1,
-    -0x1.1475cap4
-  },
-  { // Entry 907
-    -0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
-    0x1.1475ccp4
-  },
-  { // Entry 908
-    0x1.ffffffffff9d556e8c0bf0a80d610808p-1,
-    -0x1.1475ccp4
-  },
-  { // Entry 909
-    -0x1.fffffffffe190d2eb82e74efd2093215p-1,
-    0x1.1475cep4
-  },
-  { // Entry 910
-    0x1.fffffffffe190d2eb82e74efd2093215p-1,
-    -0x1.1475cep4
-  },
-  { // Entry 911
-    -0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
-    0x1.2106c8p4
-  },
-  { // Entry 912
-    0x1.6a0a1a1e64a28eee238dc852846aacd5p-1,
-    -0x1.2106c8p4
-  },
-  { // Entry 913
-    -0x1.6a09ecdd2b784b699034ee8102670e27p-1,
-    0x1.2106cap4
-  },
-  { // Entry 914
-    0x1.6a09ecdd2b784b699034ee8102670e27p-1,
-    -0x1.2106cap4
-  },
-  { // Entry 915
-    -0x1.6a09bf9beca5e03188301639c09ed574p-1,
-    0x1.2106ccp4
-  },
-  { // Entry 916
-    0x1.6a09bf9beca5e03188301639c09ed574p-1,
-    -0x1.2106ccp4
-  },
-  { // Entry 917
-    -0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
-    0x1.2d97c4p4
-  },
-  { // Entry 918
-    0x1.f9990e91a270d3bc1c02f4f69f48e675p-19,
-    -0x1.2d97c4p4
-  },
-  { // Entry 919
-    -0x1.f3321d234deacd6f3afd75039685012fp-20,
-    0x1.2d97c6p4
-  },
-  { // Entry 920
-    0x1.f3321d234deacd6f3afd75039685012fp-20,
-    -0x1.2d97c6p4
-  },
-  { // Entry 921
-    0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
-    0x1.2d97c8p4
-  },
-  { // Entry 922
-    -0x1.99bc5b961b1aa1c9e8023074f3406fd9p-25,
-    -0x1.2d97c8p4
-  },
-  { // Entry 923
-    0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
-    0x1.3a28c2p4
-  },
-  { // Entry 924
-    -0x1.6a09949e1ce1ec501afcb35d731bf62cp-1,
-    -0x1.3a28c2p4
-  },
-  { // Entry 925
-    0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
-    0x1.3a28c4p4
-  },
-  { // Entry 926
-    -0x1.6a09c1df6114100c65d1ff6c55755e72p-1,
-    -0x1.3a28c4p4
-  },
-  { // Entry 927
-    0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
-    0x1.3a28c6p4
-  },
-  { // Entry 928
-    -0x1.6a09ef209f9e0cc13324ddf2b361553fp-1,
-    -0x1.3a28c6p4
-  },
-  { // Entry 929
-    0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
-    0x1.46b9c0p4
-  },
-  { // Entry 930
-    -0x1.fffffffff53f476ec4f59f26c4bcdfa0p-1,
-    -0x1.46b9c0p4
-  },
-  { // Entry 931
-    0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
-    0x1.46b9c2p4
-  },
-  { // Entry 932
-    -0x1.fffffffffe5d2097b34334ad679dd7a4p-1,
-    -0x1.46b9c2p4
-  },
-  { // Entry 933
-    0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
-    0x1.46b9c4p4
-  },
-  { // Entry 934
-    -0x1.ffffffffff7af9c0a19a005c565c6af7p-1,
-    -0x1.46b9c4p4
-  },
-  { // Entry 935
-    0x1.6a0a2903d773925b052fb006ac670c23p-1,
-    0x1.534abep4
-  },
-  { // Entry 936
-    -0x1.6a0a2903d773925b052fb006ac670c23p-1,
-    -0x1.534abep4
-  },
-  { // Entry 937
-    0x1.6a09fbc2a025fdae918466fa00142143p-1,
-    0x1.534ac0p4
-  },
-  { // Entry 938
-    -0x1.6a09fbc2a025fdae918466fa00142143p-1,
-    -0x1.534ac0p4
-  },
-  { // Entry 939
-    0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
-    0x1.534ac2p4
-  },
-  { // Entry 940
-    -0x1.6a09ce8163304113135a68ae93d3fa0ep-1,
-    -0x1.534ac2p4
-  },
-  { // Entry 941
-    0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
-    0x1.5fdbbcp4
-  },
-  { // Entry 942
-    -0x1.4ddd3ba9ecb19d6bb6ea161120e447b9p-19,
-    -0x1.5fdbbcp4
-  },
-  { // Entry 943
-    0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
-    0x1.5fdbbep4
-  },
-  { // Entry 944
-    -0x1.3774eea7b89d80df7816fe208ec69fc0p-21,
-    -0x1.5fdbbep4
-  },
-  { // Entry 945
-    -0x1.644588ac2334a3d5452d9960282cf80dp-20,
-    0x1.5fdbc0p4
-  },
-  { // Entry 946
-    0x1.644588ac2334a3d5452d9960282cf80dp-20,
-    -0x1.5fdbc0p4
-  },
-  { // Entry 947
-    -0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
-    0x1.6c6cbap4
-  },
-  { // Entry 948
-    0x1.6a09b2f9ea049e855e35ca9ce7e0d89ap-1,
-    -0x1.6c6cbap4
-  },
-  { // Entry 949
-    -0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
-    0x1.6c6cbcp4
-  },
-  { // Entry 950
-    0x1.6a09e03b2a6b49c6134c67b42baee668p-1,
-    -0x1.6c6cbcp4
-  },
-  { // Entry 951
-    -0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
-    0x1.6c6cbep4
-  },
-  { // Entry 952
-    0x1.6a0a0d7c6529cd85dbbb3a5c2cd3fae5p-1,
-    -0x1.6c6cbep4
-  },
-  { // Entry 953
-    -0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
-    0x1.78fdb6p4
-  },
-  { // Entry 954
-    0x1.fffffffff07f0ab12aa8f41f29c15392p-1,
-    -0x1.78fdb6p4
-  },
-  { // Entry 955
-    -0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
-    0x1.78fdb8p4
-  },
-  { // Entry 956
-    0x1.fffffffffc3f0542db21dcbcb847dac3p-1,
-    -0x1.78fdb8p4
-  },
-  { // Entry 957
-    -0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
-    0x1.78fdbap4
-  },
-  { // Entry 958
-    0x1.fffffffffffeffd48bac73efe60c7fcfp-1,
-    -0x1.78fdbap4
-  },
-  { // Entry 959
-    -0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
-    0x1.858eb4p4
-  },
-  { // Entry 960
-    0x1.6a0a37e949a7ad698a32234c73e5afbap-1,
-    -0x1.858eb4p4
-  },
-  { // Entry 961
-    -0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
-    0x1.858eb6p4
-  },
-  { // Entry 962
-    0x1.6a0a0aa81436c7a8d33a38d704030d14p-1,
-    -0x1.858eb6p4
-  },
-  { // Entry 963
-    -0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
-    0x1.858eb8p4
-  },
-  { // Entry 964
-    0x1.6a09dd66d91db9bd7bf355faff08f194p-1,
-    -0x1.858eb8p4
-  },
-  { // Entry 965
-    0x1.c048b38a8bbf59f414fec7079209926ep-3,
-    0x1.fffffep62
-  },
-  { // Entry 966
-    -0x1.c048b38a8bbf59f414fec7079209926ep-3,
-    -0x1.fffffep62
-  },
-  { // Entry 967
-    0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    0x1.p63
-  },
-  { // Entry 968
-    -0x1.fff6dfd42dc54430bc0576b00a88bd94p-1,
-    -0x1.p63
-  },
-  { // Entry 969
-    -0x1.d6637d070347ee94e830445e76486727p-1,
-    0x1.000002p63
-  },
-  { // Entry 970
-    0x1.d6637d070347ee94e830445e76486727p-1,
-    -0x1.000002p63
-  },
-  { // Entry 971
-    -0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
-    0x1.fffffep26
-  },
-  { // Entry 972
-    0x1.0e5283661df0ca0f55ab6167e14514a1p-1,
-    -0x1.fffffep26
-  },
-  { // Entry 973
-    -0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    0x1.p27
-  },
-  { // Entry 974
-    0x1.86dcc9babb0a40ee875cab3b9e892757p-1,
-    -0x1.p27
-  },
-  { // Entry 975
-    0x1.171999b629fd5b6357c6dff4d7827d95p-1,
-    0x1.000002p27
-  },
-  { // Entry 976
-    -0x1.171999b629fd5b6357c6dff4d7827d95p-1,
-    -0x1.000002p27
-  },
-  { // Entry 977
-    -0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
-    0x1.fffffep23
-  },
-  { // Entry 978
-    0x1.e57ec09221973550d1e5798dcf0cd25dp-1,
-    -0x1.fffffep23
-  },
-  { // Entry 979
-    -0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    0x1.p24
-  },
-  { // Entry 980
-    0x1.8f22f8433d6edfe9a4aff9622517caa9p-1,
-    -0x1.p24
-  },
-  { // Entry 981
-    0x1.c9b0c7265c543f80faf01741c6458560p-1,
-    0x1.000002p24
-  },
-  { // Entry 982
-    -0x1.c9b0c7265c543f80faf01741c6458560p-1,
-    -0x1.000002p24
-  },
-  { // Entry 983
-    -0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
-    0x1.fffffep1
-  },
-  { // Entry 984
-    0x1.837b98a3185d1466d852f0a7dc1d248ep-1,
-    -0x1.fffffep1
-  },
-  { // Entry 985
-    -0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    0x1.p2
-  },
-  { // Entry 986
-    0x1.837b9dddc1eae70ce98055a0e450d93cp-1,
-    -0x1.p2
-  },
-  { // Entry 987
-    -0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
-    0x1.000002p2
-  },
-  { // Entry 988
-    0x1.837ba85314bde52b1e9c2c8ed2712c72p-1,
-    -0x1.000002p2
-  },
-  { // Entry 989
-    0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
-    0x1.fffffep0
-  },
-  { // Entry 990
-    -0x1.d18f70573da63012fa1c0e3d2ebbe59cp-1,
-    -0x1.fffffep0
-  },
-  { // Entry 991
-    0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    0x1.p1
-  },
-  { // Entry 992
-    -0x1.d18f6ead1b445dfab848188009c9bb95p-1,
-    -0x1.p1
-  },
-  { // Entry 993
-    0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
-    0x1.000002p1
-  },
-  { // Entry 994
-    -0x1.d18f6b58d66ae7110b2b6f7cffba6ec1p-1,
-    -0x1.000002p1
-  },
-  { // Entry 995
-    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    0x1.fffffep-1
-  },
-  { // Entry 996
-    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    -0x1.fffffep-1
-  },
-  { // Entry 997
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.p0
-  },
-  { // Entry 998
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    -0x1.p0
-  },
-  { // Entry 999
-    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    0x1.000002p0
-  },
-  { // Entry 1000
-    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    -0x1.000002p0
-  },
-  { // Entry 1001
-    0x1.eaee85835dde5b71beec7d8d98052112p-2,
-    0x1.fffffep-2
-  },
-  { // Entry 1002
-    -0x1.eaee85835dde5b71beec7d8d98052112p-2,
-    -0x1.fffffep-2
-  },
-  { // Entry 1003
-    0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    0x1.p-1
-  },
-  { // Entry 1004
-    -0x1.eaee8744b05efe8764bc364fd837b666p-2,
-    -0x1.p-1
-  },
-  { // Entry 1005
-    0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
-    0x1.000002p-1
-  },
-  { // Entry 1006
-    -0x1.eaee8ac7555ed47fca77ceed174c8ea0p-2,
-    -0x1.000002p-1
-  },
-  { // Entry 1007
-    0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
-    0x1.fffffep-3
-  },
-  { // Entry 1008
-    -0x1.faaeeb5f1c0d63f43c6f3ec46011690fp-3,
-    -0x1.fffffep-3
-  },
-  { // Entry 1009
-    0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    0x1.p-2
-  },
-  { // Entry 1010
-    -0x1.faaeed4f31576ba89debdc7351e8b1aep-3,
-    -0x1.p-2
-  },
-  { // Entry 1011
-    0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
-    0x1.000002p-2
-  },
-  { // Entry 1012
-    -0x1.faaef12f5beb1c1094473d3c3365b9e1p-3,
-    -0x1.000002p-2
-  },
-  { // Entry 1013
-    0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
-    0x1.fffffep-4
-  },
-  { // Entry 1014
-    -0x1.feaaecec6d8e30cd56950eb2ebdcebd4p-4,
-    -0x1.fffffep-4
-  },
-  { // Entry 1015
-    0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    0x1.p-3
-  },
-  { // Entry 1016
-    -0x1.feaaeee86ee35ca069a86721f89f85a5p-4,
-    -0x1.p-3
-  },
-  { // Entry 1017
-    0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
-    0x1.000002p-3
-  },
-  { // Entry 1018
-    -0x1.feaaf2e0718d9c568c9442c81545cd62p-4,
-    -0x1.000002p-3
-  },
-  { // Entry 1019
-    0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
-    0x1.fffffep-5
-  },
-  { // Entry 1020
-    -0x1.ffaaacefd4d855ac8227799f3e263d7ap-5,
-    -0x1.fffffep-5
-  },
-  { // Entry 1021
-    0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    0x1.p-4
-  },
-  { // Entry 1022
-    -0x1.ffaaaeeed4edab4ba4b365ed25a9595fp-5,
-    -0x1.p-4
-  },
-  { // Entry 1023
-    0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
-    0x1.000002p-4
-  },
-  { // Entry 1024
-    -0x1.ffaab2ecd518508ae9bc730a165a8eadp-5,
-    -0x1.000002p-4
-  },
-  { // Entry 1025
-    0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
-    0x1.fffffep-6
-  },
-  { // Entry 1026
-    -0x1.ffeaa8ef2e85933883c0dc33462387b5p-6,
-    -0x1.fffffep-6
-  },
-  { // Entry 1027
-    0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    0x1.p-5
-  },
-  { // Entry 1028
-    -0x1.ffeaaaeeee86e8cafe41376d47919579p-6,
-    -0x1.p-5
-  },
-  { // Entry 1029
-    0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
-    0x1.000002p-5
-  },
-  { // Entry 1030
-    -0x1.ffeaaeee6e89927003413abe64e9dc21p-6,
-    -0x1.000002p-5
-  },
-  { // Entry 1031
-    0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
-    0x1.fffffep-7
-  },
-  { // Entry 1032
-    -0x1.fffaa8aefeed396ffffc636313d0ba6dp-7,
-    -0x1.fffffep-7
-  },
-  { // Entry 1033
-    0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    0x1.p-6
-  },
-  { // Entry 1034
-    -0x1.fffaaaaeeeed4ed549c6560f889ee531p-7,
-    -0x1.p-6
-  },
-  { // Entry 1035
-    0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
-    0x1.000002p-6
-  },
-  { // Entry 1036
-    -0x1.fffaaeaeceed793fde5a1a9ca5bb1ee6p-7,
-    -0x1.000002p-6
-  },
-  { // Entry 1037
-    0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
-    0x1.fffffep-15
-  },
-  { // Entry 1038
-    -0x1.fffffdfaaaaabaaeeeded997feffa35ap-15,
-    -0x1.fffffep-15
-  },
-  { // Entry 1039
-    0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    0x1.p-14
-  },
-  { // Entry 1040
-    -0x1.fffffffaaaaaaaaeeeeeeeed4ed4ed4fp-15,
-    -0x1.p-14
-  },
-  { // Entry 1041
-    0x1.000001fd5555455777578ccbe7bfc09cp-14,
-    0x1.000002p-14
-  },
-  { // Entry 1042
-    -0x1.000001fd5555455777578ccbe7bfc09cp-14,
-    -0x1.000002p-14
-  },
-  { // Entry 1043
-    0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
-    0x1.fffffep-28
-  },
-  { // Entry 1044
-    -0x1.fffffdfffffffeaaaaaeaaaaa6aaeef0p-28,
-    -0x1.fffffep-28
-  },
-  { // Entry 1045
-    0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    0x1.p-27
-  },
-  { // Entry 1046
-    -0x1.fffffffffffffeaaaaaaaaaaaaaaeeeep-28,
-    -0x1.p-27
-  },
-  { // Entry 1047
-    0x1.000001ffffffff55555155554d557772p-27,
-    0x1.000002p-27
-  },
-  { // Entry 1048
-    -0x1.000001ffffffff55555155554d557772p-27,
-    -0x1.000002p-27
-  },
-  { // Entry 1049
-    0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
-    0x1.fffffep-31
-  },
-  { // Entry 1050
-    -0x1.fffffdfffffffffaaaaabaaaaa9aaaaep-31,
-    -0x1.fffffep-31
-  },
-  { // Entry 1051
-    0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    0x1.p-30
-  },
-  { // Entry 1052
-    -0x1.fffffffffffffffaaaaaaaaaaaaaaaaep-31,
-    -0x1.p-30
-  },
-  { // Entry 1053
-    0x1.000001fffffffffd5555455555355557p-30,
-    0x1.000002p-30
-  },
-  { // Entry 1054
-    -0x1.000001fffffffffd5555455555355557p-30,
-    -0x1.000002p-30
-  },
-  { // Entry 1055
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1056
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1057
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1058
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1059
-    -0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1060
-    0x1.0b3366508957520d9dc88d7c09337e24p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1061
-    -0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
-    0x1.fffffcp127
-  },
-  { // Entry 1062
-    0x1.48ce575202efd93c62f7b88106ea1d4dp-1,
-    -0x1.fffffcp127
-  },
-  { // Entry 1063
-    -0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    0x1.921fb6p1
-  },
-  { // Entry 1064
-    0x1.777a5cf72cec5fd61896cb4f40d1de79p-24,
-    -0x1.921fb6p1
-  },
-  { // Entry 1065
-    0x1.ffffffffffff76521249c7422930ed82p-1,
-    0x1.921fb6p0
-  },
-  { // Entry 1066
-    -0x1.ffffffffffff76521249c7422930ed82p-1,
-    -0x1.921fb6p0
-  },
-  { // Entry 1067
-    0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    0x1.000002p0
-  },
-  { // Entry 1068
-    -0x1.aed54b19d5cd7937cbf41ed408ca0a52p-1,
-    -0x1.000002p0
-  },
-  { // Entry 1069
-    0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    0x1.p0
-  },
-  { // Entry 1070
-    -0x1.aed548f090cee0418dd3d2138a1e7865p-1,
-    -0x1.p0
-  },
-  { // Entry 1071
-    0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    0x1.fffffep-1
-  },
-  { // Entry 1072
-    -0x1.aed547dbee4d0d8680d0813d1e4e21d0p-1,
-    -0x1.fffffep-1
-  },
-  { // Entry 1073
-    0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    0x1.921fb6p-1
-  },
-  { // Entry 1074
-    -0x1.6a09e6ecb41fdd7e681872c854887019p-1,
-    -0x1.921fb6p-1
-  },
-  { // Entry 1075
-    0x1.000001ffffffffffffffffffffffffffp-126,
-    0x1.000002p-126
-  },
-  { // Entry 1076
-    -0x1.000001ffffffffffffffffffffffffffp-126,
-    -0x1.000002p-126
-  },
-  { // Entry 1077
-    0x1.ffffffffffffffffffffffffffffffffp-127,
-    0x1.p-126
-  },
-  { // Entry 1078
-    -0x1.ffffffffffffffffffffffffffffffffp-127,
-    -0x1.p-126
-  },
-  { // Entry 1079
-    0x1.fffffbffffffffffffffffffffffffffp-127,
-    0x1.fffffcp-127
-  },
-  { // Entry 1080
-    -0x1.fffffbffffffffffffffffffffffffffp-127,
-    -0x1.fffffcp-127
-  },
-  { // Entry 1081
-    0x1.fffff7ffffffffffffffffffffffffffp-127,
-    0x1.fffff8p-127
-  },
-  { // Entry 1082
-    -0x1.fffff7ffffffffffffffffffffffffffp-127,
-    -0x1.fffff8p-127
-  },
-  { // Entry 1083
-    0x1.ffffffffffffffffffffffffffffffffp-149,
-    0x1.p-148
-  },
-  { // Entry 1084
-    -0x1.ffffffffffffffffffffffffffffffffp-149,
-    -0x1.p-148
-  },
-  { // Entry 1085
-    0.0f,
-    0x1.p-149
-  },
-  { // Entry 1086
-    -0.0f,
-    -0x1.p-149
-  },
-  { // Entry 1087
-    0.0,
-    0.0f
-  },
-  { // Entry 1088
-    -0.0,
-    -0.0f
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_sinf, sinf_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_sinf_intel_data)/sizeof(sinf_intel_data_t); i++) {
-    EXPECT_FLOAT_EQ(g_sinf_intel_data[i].expected, sinf(g_sinf_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_tan_test.cpp b/tests/math_tan_test.cpp
deleted file mode 100644
index 6862019..0000000
--- a/tests/math_tan_test.cpp
+++ /dev/null
@@ -1,5203 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  double expected;
-  double call_data;
-} tan_intel_data_t;
-
-static tan_intel_data_t g_tan_intel_data[] = {
-  { // Entry 0
-    0x1.5078cebff9c728000000000000024df8p-5,
-    0x1.50486b2f87014p-5
-  },
-  { // Entry 1
-    -0x1.5078cebff9c728000000000000024df8p-5,
-    -0x1.50486b2f87014p-5
-  },
-  { // Entry 2
-    0x1.5389e6df41978fffffffffffffc61f54p-4,
-    0x1.52c39ef070cadp-4
-  },
-  { // Entry 3
-    -0x1.5389e6df41978fffffffffffffc61f54p-4,
-    -0x1.52c39ef070cadp-4
-  },
-  { // Entry 4
-    0x1.a933fe176b37500000000000000a4065p-3,
-    0x1.a33f32ac5ceb5p-3
-  },
-  { // Entry 5
-    -0x1.a933fe176b37500000000000000a4065p-3,
-    -0x1.a33f32ac5ceb5p-3
-  },
-  { // Entry 6
-    0x1.fac71cd34eea680000000000009a0c10p-2,
-    0x1.d696bfa988db9p-2
-  },
-  { // Entry 7
-    -0x1.fac71cd34eea680000000000009a0c10p-2,
-    -0x1.d696bfa988db9p-2
-  },
-  { // Entry 8
-    0x1.7ba49f739829efffffffffffffe7e9bep-1,
-    0x1.46ac372243536p-1
-  },
-  { // Entry 9
-    -0x1.7ba49f739829efffffffffffffe7e9bep-1,
-    -0x1.46ac372243536p-1
-  },
-  { // Entry 10
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 11
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 12
-    -0x1.8f048832144b70021ccd7a5246cb0b20p0,
-    -0x1.00180p0
-  },
-  { // Entry 13
-    0x1.8f048832144b70021ccd7a5246cb0b20p0,
-    0x1.00180p0
-  },
-  { // Entry 14
-    -0x1.8e884b24313ae802db47899fad15a6c6p0,
-    -0x1.090cca18a5565p2
-  },
-  { // Entry 15
-    0x1.8e884b24313ae802db47899fad15a6c6p0,
-    0x1.090cca18a5565p2
-  },
-  { // Entry 16
-    -0x1.ca18654b356972967a4f1e8404b9f972p0,
-    -0x1.0faa7650df144p0
-  },
-  { // Entry 17
-    0x1.ca18654b356972967a4f1e8404b9f972p0,
-    0x1.0faa7650df144p0
-  },
-  { // Entry 18
-    -0x1.e52fafa22ef1481d437e7ed32cba03b1p-2,
-    -0x1.1800000000040p5
-  },
-  { // Entry 19
-    0x1.e52fafa22ef1481d437e7ed32cba03b1p-2,
-    0x1.1800000000040p5
-  },
-  { // Entry 20
-    -0x1.a3ca421dc30f1c5760a1ae07396fec33p-3,
-    -0x1.4000527aca388p99
-  },
-  { // Entry 21
-    0x1.a3ca421dc30f1c5760a1ae07396fec33p-3,
-    0x1.4000527aca388p99
-  },
-  { // Entry 22
-    0x1.1f3b7d1978609800a1628e1df9558df6p1,
-    -0x1.486c3634751ecp2
-  },
-  { // Entry 23
-    -0x1.1f3b7d1978609800a1628e1df9558df6p1,
-    0x1.486c3634751ecp2
-  },
-  { // Entry 24
-    -0x1.7eb873343fa7ab5d9ef9a78afd33d501p-1,
-    -0x1.48a71800b5713p-1
-  },
-  { // Entry 25
-    0x1.7eb873343fa7ab5d9ef9a78afd33d501p-1,
-    0x1.48a71800b5713p-1
-  },
-  { // Entry 26
-    0x1.be071572f64e88047c3939ba46626a25p-1,
-    -0x1.49af0314eea3cp299
-  },
-  { // Entry 27
-    -0x1.be071572f64e88047c3939ba46626a25p-1,
-    0x1.49af0314eea3cp299
-  },
-  { // Entry 28
-    0x1.ffbb2647f57a181bd1296faf33c04e3ep-1,
-    -0x1.5fe00c814ffd6p2
-  },
-  { // Entry 29
-    -0x1.ffbb2647f57a181bd1296faf33c04e3ep-1,
-    0x1.5fe00c814ffd6p2
-  },
-  { // Entry 30
-    -0x1.a8eb142b2f42756e6dedff09267a62c6p-1,
-    -0x1.62ac241f79439p-1
-  },
-  { // Entry 31
-    0x1.a8eb142b2f42756e6dedff09267a62c6p-1,
-    0x1.62ac241f79439p-1
-  },
-  { // Entry 32
-    -0x1.7d1d3559ddac885ee30632c760998c8ep-4,
-    -0x1.7c051b476ca8dp-4
-  },
-  { // Entry 33
-    0x1.7d1d3559ddac885ee30632c760998c8ep-4,
-    0x1.7c051b476ca8dp-4
-  },
-  { // Entry 34
-    -0x1.0e1d0305b7b727ff193d9d0b8eaff181p2,
-    -0x1.7e43c880074c6p996
-  },
-  { // Entry 35
-    0x1.0e1d0305b7b727ff193d9d0b8eaff181p2,
-    0x1.7e43c880074c6p996
-  },
-  { // Entry 36
-    -0x1.812bdfe0246bbf2a7ab6477a5cbb352bp-4,
-    -0x1.800ac363398c4p-4
-  },
-  { // Entry 37
-    0x1.812bdfe0246bbf2a7ab6477a5cbb352bp-4,
-    0x1.800ac363398c4p-4
-  },
-  { // Entry 38
-    -0x1.850e5544b0c797b36034c98e16f3fafbp-4,
-    -0x1.83e46aedbff36p-4
-  },
-  { // Entry 39
-    0x1.850e5544b0c797b36034c98e16f3fafbp-4,
-    0x1.83e46aedbff36p-4
-  },
-  { // Entry 40
-    0x1.e6b5d91bba9337fc0ceb686c60cd29bdp-2,
-    -0x1.83ecf42e9265ap3
-  },
-  { // Entry 41
-    -0x1.e6b5d91bba9337fc0ceb686c60cd29bdp-2,
-    0x1.83ecf42e9265ap3
-  },
-  { // Entry 42
-    -0x1.f3688bc2594e20102573cff48190ac28p-1,
-    -0x1.8bcp-1
-  },
-  { // Entry 43
-    0x1.f3688bc2594e20102573cff48190ac28p-1,
-    0x1.8bcp-1
-  },
-  { // Entry 44
-    0x1.ec0d0facdd08b773a1d93484e2d66c45p-2,
-    -0x1.8d2ffffffffd1p9
-  },
-  { // Entry 45
-    -0x1.ec0d0facdd08b773a1d93484e2d66c45p-2,
-    0x1.8d2ffffffffd1p9
-  },
-  { // Entry 46
-    0x1.ec0336d5392597689b640bf049227338p-2,
-    -0x1.8d3000fffffd1p9
-  },
-  { // Entry 47
-    -0x1.ec0336d5392597689b640bf049227338p-2,
-    0x1.8d3000fffffd1p9
-  },
-  { // Entry 48
-    -0x1.f8093a017021f81c01c131475e50e49bp-1,
-    -0x1.baeee6f6fa538p6
-  },
-  { // Entry 49
-    0x1.f8093a017021f81c01c131475e50e49bp-1,
-    0x1.baeee6f6fa538p6
-  },
-  { // Entry 50
-    0x1.deaf34994b7e77fd52a408f0c677eae1p3,
-    -0x1.c6867e07455eap3
-  },
-  { // Entry 51
-    -0x1.deaf34994b7e77fd52a408f0c677eae1p3,
-    0x1.c6867e07455eap3
-  },
-  { // Entry 52
-    -0x1.f29aa87d4e1dd81b7b69abe9790ee0abp-1,
-    -0x1.d27ffffffe0p7
-  },
-  { // Entry 53
-    0x1.f29aa87d4e1dd81b7b69abe9790ee0abp-1,
-    0x1.d27ffffffe0p7
-  },
-  { // Entry 54
-    0x1.762fb47a192597ffffffeeedb26fb978p-3,
-    -0x1.f0df38029c9efp3
-  },
-  { // Entry 55
-    -0x1.762fb47a192597ffffffeeedb26fb978p-3,
-    0x1.f0df38029c9efp3
-  },
-  { // Entry 56
-    -0x1.8eb23ef2126bb7fffd153c7ff90e9f6cp0,
-    -0x1.fffffc0000fffp-1
-  },
-  { // Entry 57
-    0x1.8eb23ef2126bb7fffd153c7ff90e9f6cp0,
-    0x1.fffffc0000fffp-1
-  },
-  { // Entry 58
-    -0x1.d299d285bf018423fbc14efc00ed5799p-2,
-    -0x1.ffffffffffffcp1023
-  },
-  { // Entry 59
-    0x1.d299d285bf018423fbc14efc00ed5799p-2,
-    0x1.ffffffffffffcp1023
-  },
-  { // Entry 60
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 61
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 62
-    -0x1.82bee572e2ac8c76d6909c66b282e962p-6,
-    0x1.0p64
-  },
-  { // Entry 63
-    0x1.82bee572e2ac8c76d6909c66b282e962p-6,
-    -0x1.0p64
-  },
-  { // Entry 64
-    0x1.f53a8d05afcf6c4bf2e1e5208b34d5c6p4,
-    0x1.0000000000001p51
-  },
-  { // Entry 65
-    -0x1.f53a8d05afcf6c4bf2e1e5208b34d5c6p4,
-    -0x1.0000000000001p51
-  },
-  { // Entry 66
-    -0x1.6b371df5980cd3db36768e36046a4a81p-1,
-    0x1.0000000000001p1017
-  },
-  { // Entry 67
-    0x1.6b371df5980cd3db36768e36046a4a81p-1,
-    -0x1.0000000000001p1017
-  },
-  { // Entry 68
-    -0x1.b32e78f49a0c83c7f60a3dc3ef8ecf1fp2,
-    0x1.0000000000003p3
-  },
-  { // Entry 69
-    0x1.b32e78f49a0c83c7f60a3dc3ef8ecf1fp2,
-    -0x1.0000000000003p3
-  },
-  { // Entry 70
-    0x1.98afbd24264bc3a9d1838074a3daa5e5p-1,
-    0x1.0000000000003p21
-  },
-  { // Entry 71
-    -0x1.98afbd24264bc3a9d1838074a3daa5e5p-1,
-    -0x1.0000000000003p21
-  },
-  { // Entry 72
-    0x1.b667a2abe36c280315c62a1f974e7611p0,
-    0x1.0000000000003p511
-  },
-  { // Entry 73
-    -0x1.b667a2abe36c280315c62a1f974e7611p0,
-    -0x1.0000000000003p511
-  },
-  { // Entry 74
-    0x1.204c26a427861ffefb73796bcf1fd724p-2,
-    0x1.0000000000003p716
-  },
-  { // Entry 75
-    -0x1.204c26a427861ffefb73796bcf1fd724p-2,
-    -0x1.0000000000003p716
-  },
-  { // Entry 76
-    0x1.91c8f2938262ce2e9ad99ab17e46abd6p4,
-    0x1.0000000000007p8
-  },
-  { // Entry 77
-    -0x1.91c8f2938262ce2e9ad99ab17e46abd6p4,
-    -0x1.0000000000007p8
-  },
-  { // Entry 78
-    -0x1.27f7f0880031fe42ed1d5fedc496d14ep-2,
-    0x1.0000000000038p380
-  },
-  { // Entry 79
-    0x1.27f7f0880031fe42ed1d5fedc496d14ep-2,
-    -0x1.0000000000038p380
-  },
-  { // Entry 80
-    -0x1.d6890cc32711d4b046903ad8851a41bbp-3,
-    0x1.0000000000118p380
-  },
-  { // Entry 81
-    0x1.d6890cc32711d4b046903ad8851a41bbp-3,
-    -0x1.0000000000118p380
-  },
-  { // Entry 82
-    0x1.9af0e6f72f9127ffffc0200ea7f406f4p-3,
-    0x1.0000000000908p500
-  },
-  { // Entry 83
-    -0x1.9af0e6f72f9127ffffc0200ea7f406f4p-3,
-    -0x1.0000000000908p500
-  },
-  { // Entry 84
-    0x1.17b4f5bf440978002d66f1bd37032532p-1,
-    0x1.000000000c0p-1
-  },
-  { // Entry 85
-    -0x1.17b4f5bf440978002d66f1bd37032532p-1,
-    -0x1.000000000c0p-1
-  },
-  { // Entry 86
-    -0x1.17eb22e4dba72800d2a000698263d582p0,
-    0x1.00000001cp40
-  },
-  { // Entry 87
-    0x1.17eb22e4dba72800d2a000698263d582p0,
-    -0x1.00000001cp40
-  },
-  { // Entry 88
-    0x1.f6f03ce5690a6e3880b95fd8b2c8363ep-1,
-    0x1.0000001p250
-  },
-  { // Entry 89
-    -0x1.f6f03ce5690a6e3880b95fd8b2c8363ep-1,
-    -0x1.0000001p250
-  },
-  { // Entry 90
-    0x1.e23b78282a75d0dd6da35692d142bc63p-1,
-    0x1.000000988p27
-  },
-  { // Entry 91
-    -0x1.e23b78282a75d0dd6da35692d142bc63p-1,
-    -0x1.000000988p27
-  },
-  { // Entry 92
-    -0x1.981b657e1ca27009d82d8e18314240b5p-3,
-    0x1.00000c0p429
-  },
-  { // Entry 93
-    0x1.981b657e1ca27009d82d8e18314240b5p-3,
-    -0x1.00000c0p429
-  },
-  { // Entry 94
-    -0x1.455a2184f4c3dffb0986919cece683a4p-1,
-    0x1.00000fcp1000
-  },
-  { // Entry 95
-    0x1.455a2184f4c3dffb0986919cece683a4p-1,
-    -0x1.00000fcp1000
-  },
-  { // Entry 96
-    0x1.8ee66962f210c800000568c7daad3a28p0,
-    0x1.000f371b7a006p0
-  },
-  { // Entry 97
-    -0x1.8ee66962f210c800000568c7daad3a28p0,
-    -0x1.000f371b7a006p0
-  },
-  { // Entry 98
-    -0x1.ecd75cf6d4663bee1c96f03184fae086p-3,
-    0x1.001p15
-  },
-  { // Entry 99
-    0x1.ecd75cf6d4663bee1c96f03184fae086p-3,
-    -0x1.001p15
-  },
-  { // Entry 100
-    0x1.17d42033277cc8244ccb6e5154482105p-1,
-    0x1.0017ffffffffdp-1
-  },
-  { // Entry 101
-    -0x1.17d42033277cc8244ccb6e5154482105p-1,
-    -0x1.0017ffffffffdp-1
-  },
-  { // Entry 102
-    0x1.8f048832144b70021ccd7a5246cb0b20p0,
-    0x1.00180p0
-  },
-  { // Entry 103
-    -0x1.8f048832144b70021ccd7a5246cb0b20p0,
-    -0x1.00180p0
-  },
-  { // Entry 104
-    -0x1.18273cc3e763900743704028cfb114a5p-2,
-    0x1.001fffep500
-  },
-  { // Entry 105
-    0x1.18273cc3e763900743704028cfb114a5p-2,
-    -0x1.001fffep500
-  },
-  { // Entry 106
-    -0x1.d8f90cad30546ce5b8268b330ce50a6fp-2,
-    0x1.018p40
-  },
-  { // Entry 107
-    0x1.d8f90cad30546ce5b8268b330ce50a6fp-2,
-    -0x1.018p40
-  },
-  { // Entry 108
-    0x1.b079ea0d14a4a7ffc04bd6fbf451bb34p-2,
-    0x1.01b8a484ac0b6p4
-  },
-  { // Entry 109
-    -0x1.b079ea0d14a4a7ffc04bd6fbf451bb34p-2,
-    -0x1.01b8a484ac0b6p4
-  },
-  { // Entry 110
-    -0x1.a40c262f6ab997fef43bf54af3c5a765p-1,
-    0x1.026ac0ef32d40p28
-  },
-  { // Entry 111
-    0x1.a40c262f6ab997fef43bf54af3c5a765p-1,
-    -0x1.026ac0ef32d40p28
-  },
-  { // Entry 112
-    0x1.03b8c1f3296657c651a13eb5b100fc78p-4,
-    0x1.035fdcd08a596p-4
-  },
-  { // Entry 113
-    -0x1.03b8c1f3296657c651a13eb5b100fc78p-4,
-    -0x1.035fdcd08a596p-4
-  },
-  { // Entry 114
-    0x1.044979d134ed97c78bfe58a9003bfac5p-4,
-    0x1.03fp-4
-  },
-  { // Entry 115
-    -0x1.044979d134ed97c78bfe58a9003bfac5p-4,
-    -0x1.03fp-4
-  },
-  { // Entry 116
-    -0x1.e717de7da2ce831066bad1df5e88a030p0,
-    0x1.070p1
-  },
-  { // Entry 117
-    0x1.e717de7da2ce831066bad1df5e88a030p0,
-    -0x1.070p1
-  },
-  { // Entry 118
-    -0x1.8c896f607ff52bbae86f63e19a988d2bp-1,
-    0x1.070p30
-  },
-  { // Entry 119
-    0x1.8c896f607ff52bbae86f63e19a988d2bp-1,
-    -0x1.070p30
-  },
-  { // Entry 120
-    0x1.fffffffff5d846af6f017262c9c81de4p-1,
-    0x1.07e4cef4cbb0ep4
-  },
-  { // Entry 121
-    -0x1.fffffffff5d846af6f017262c9c81de4p-1,
-    -0x1.07e4cef4cbb0ep4
-  },
-  { // Entry 122
-    0x1.b476d32c1b7457ffff66edb3f78a7003p0,
-    0x1.0a53a78b13ab2p0
-  },
-  { // Entry 123
-    -0x1.b476d32c1b7457ffff66edb3f78a7003p0,
-    -0x1.0a53a78b13ab2p0
-  },
-  { // Entry 124
-    0x1.f2df7c02d20cd81b33117c00545f7a6bp-1,
-    0x1.0afbc268b9848p6
-  },
-  { // Entry 125
-    -0x1.f2df7c02d20cd81b33117c00545f7a6bp-1,
-    -0x1.0afbc268b9848p6
-  },
-  { // Entry 126
-    -0x1.b571af562f08a5a03dd8493990b29db1p0,
-    0x1.0cd5d435bea6dp1
-  },
-  { // Entry 127
-    0x1.b571af562f08a5a03dd8493990b29db1p0,
-    -0x1.0cd5d435bea6dp1
-  },
-  { // Entry 128
-    -0x1.ac73d2920a7955336ab2a3436c77c276p0,
-    0x1.0e0p1
-  },
-  { // Entry 129
-    0x1.ac73d2920a7955336ab2a3436c77c276p0,
-    -0x1.0e0p1
-  },
-  { // Entry 130
-    -0x1.126dce8ac7c818000cfcf3df066a4a2dp-1,
-    0x1.1086210842108p5
-  },
-  { // Entry 131
-    0x1.126dce8ac7c818000cfcf3df066a4a2dp-1,
-    -0x1.1086210842108p5
-  },
-  { // Entry 132
-    -0x1.9680c02601046ca506c0e3f744db1d0ap0,
-    0x1.110p1
-  },
-  { // Entry 133
-    0x1.9680c02601046ca506c0e3f744db1d0ap0,
-    -0x1.110p1
-  },
-  { // Entry 134
-    0x1.d1e716934469b2bc02fa835ae0149f58p0,
-    0x1.118p0
-  },
-  { // Entry 135
-    -0x1.d1e716934469b2bc02fa835ae0149f58p0,
-    -0x1.118p0
-  },
-  { // Entry 136
-    -0x1.6aa73101430837fffffebaafd45f7efap-1,
-    0x1.19df389f39e0ap3
-  },
-  { // Entry 137
-    0x1.6aa73101430837fffffebaafd45f7efap-1,
-    -0x1.19df389f39e0ap3
-  },
-  { // Entry 138
-    0x1.cb9a99227bdc972cd4145969c3dc38c1p1,
-    0x1.1c3598211013ap2
-  },
-  { // Entry 139
-    -0x1.cb9a99227bdc972cd4145969c3dc38c1p1,
-    -0x1.1c3598211013ap2
-  },
-  { // Entry 140
-    -0x1.bc109c3e6172450a5308b4c6eb2898cap7,
-    0x1.1d65aa4224c30p118
-  },
-  { // Entry 141
-    0x1.bc109c3e6172450a5308b4c6eb2898cap7,
-    -0x1.1d65aa4224c30p118
-  },
-  { // Entry 142
-    -0x1.09b393f48b2c67ffff3bd559c6326e60p-1,
-    0x1.1e4658272dc6fp3
-  },
-  { // Entry 143
-    0x1.09b393f48b2c67ffff3bd559c6326e60p-1,
-    -0x1.1e4658272dc6fp3
-  },
-  { // Entry 144
-    0x1.20000000000798000000003d82666666p-22,
-    0x1.2p-22
-  },
-  { // Entry 145
-    -0x1.20000000000798000000003d82666666p-22,
-    -0x1.2p-22
-  },
-  { // Entry 146
-    -0x1.02a335b00707a7ffffbe455adab7e814p0,
-    0x1.2127409620cacp95
-  },
-  { // Entry 147
-    0x1.02a335b00707a7ffffbe455adab7e814p0,
-    -0x1.2127409620cacp95
-  },
-  { // Entry 148
-    0x1.2508b9c1273ac034c3c79c4088e2acfdp-4,
-    0x1.2489224892248p-4
-  },
-  { // Entry 149
-    -0x1.2508b9c1273ac034c3c79c4088e2acfdp-4,
-    -0x1.2489224892248p-4
-  },
-  { // Entry 150
-    0x1.fded5f53d132d26a8244a63f9bcdf153p2,
-    0x1.2a52d119da061p237
-  },
-  { // Entry 151
-    -0x1.fded5f53d132d26a8244a63f9bcdf153p2,
-    -0x1.2a52d119da061p237
-  },
-  { // Entry 152
-    0x1.2de56a6ef9c5d7e9c71030407530f1d7p-4,
-    0x1.2d59ebab8dae4p-4
-  },
-  { // Entry 153
-    -0x1.2de56a6ef9c5d7e9c71030407530f1d7p-4,
-    -0x1.2d59ebab8dae4p-4
-  },
-  { // Entry 154
-    0x1.31665eb191fba800b7e715fd11716c8cp-4,
-    0x1.30d5f8e54b6d8p-4
-  },
-  { // Entry 155
-    -0x1.31665eb191fba800b7e715fd11716c8cp-4,
-    -0x1.30d5f8e54b6d8p-4
-  },
-  { // Entry 156
-    0x1.3cc1d4d28bfd17fded9ae50407590f3fp-2,
-    0x1.333275d63ec50p-2
-  },
-  { // Entry 157
-    -0x1.3cc1d4d28bfd17fded9ae50407590f3fp-2,
-    -0x1.333275d63ec50p-2
-  },
-  { // Entry 158
-    0x1.3cc237c0c7dcbfff1046ad9a068af510p-2,
-    0x1.3332d020b6da9p-2
-  },
-  { // Entry 159
-    -0x1.3cc237c0c7dcbfff1046ad9a068af510p-2,
-    -0x1.3332d020b6da9p-2
-  },
-  { // Entry 160
-    0x1.5e472e16999df00000fc06ee474fbfc9p-1,
-    0x1.333333401e66bp-1
-  },
-  { // Entry 161
-    -0x1.5e472e16999df00000fc06ee474fbfc9p-1,
-    -0x1.333333401e66bp-1
-  },
-  { // Entry 162
-    0x1.b5ed1c2080a987fc84f26ec958b2ac47p-1,
-    0x1.38f137cb9dbfcp9
-  },
-  { // Entry 163
-    -0x1.b5ed1c2080a987fc84f26ec958b2ac47p-1,
-    -0x1.38f137cb9dbfcp9
-  },
-  { // Entry 164
-    0x1.01aa22e2133d37fffff2a0c08093358ep1,
-    0x1.39a383f3fa003p85
-  },
-  { // Entry 165
-    -0x1.01aa22e2133d37fffff2a0c08093358ep1,
-    -0x1.39a383f3fa003p85
-  },
-  { // Entry 166
-    0x1.ffffffffff58236322819d060eb67c3cp-1,
-    0x1.3a28c59d54311p4
-  },
-  { // Entry 167
-    -0x1.ffffffffff58236322819d060eb67c3cp-1,
-    -0x1.3a28c59d54311p4
-  },
-  { // Entry 168
-    0x1.7166689d4803e83d2b6b1d15f5aca26ep-1,
-    0x1.4000000003fffp-1
-  },
-  { // Entry 169
-    -0x1.7166689d4803e83d2b6b1d15f5aca26ep-1,
-    -0x1.4000000003fffp-1
-  },
-  { // Entry 170
-    -0x1.ff7d27b37eba0819199e533cc5016f0dp-1,
-    0x1.40724a44714cfp5
-  },
-  { // Entry 171
-    0x1.ff7d27b37eba0819199e533cc5016f0dp-1,
-    -0x1.40724a44714cfp5
-  },
-  { // Entry 172
-    0x1.453a7d29dadad7c0dda78a7398be0873p-4,
-    0x1.448c2d6e1e1afp-4
-  },
-  { // Entry 173
-    -0x1.453a7d29dadad7c0dda78a7398be0873p-4,
-    -0x1.448c2d6e1e1afp-4
-  },
-  { // Entry 174
-    -0x1.a50f7601413e53ab1c5a2f0d676c397cp0,
-    0x1.478fc08p43
-  },
-  { // Entry 175
-    0x1.a50f7601413e53ab1c5a2f0d676c397cp0,
-    -0x1.478fc08p43
-  },
-  { // Entry 176
-    -0x1.a9991acb7636beee5b1a5d35a8a89917p-4,
-    0x1.4e93bee72b565p62
-  },
-  { // Entry 177
-    0x1.a9991acb7636beee5b1a5d35a8a89917p-4,
-    -0x1.4e93bee72b565p62
-  },
-  { // Entry 178
-    0x1.2952396945947b726ebf025a8ba07093p1,
-    0x1.4f0f308p488
-  },
-  { // Entry 179
-    -0x1.2952396945947b726ebf025a8ba07093p1,
-    -0x1.4f0f308p488
-  },
-  { // Entry 180
-    0x1.5078cebff9c728000000000000024df8p-5,
-    0x1.50486b2f87014p-5
-  },
-  { // Entry 181
-    -0x1.5078cebff9c728000000000000024df8p-5,
-    -0x1.50486b2f87014p-5
-  },
-  { // Entry 182
-    -0x1.1c929b6ede9ee8000040a3d1ca90a9f4p-1,
-    0x1.5130d552f1036p1
-  },
-  { // Entry 183
-    0x1.1c929b6ede9ee8000040a3d1ca90a9f4p-1,
-    -0x1.5130d552f1036p1
-  },
-  { // Entry 184
-    0x1.2ab3189e2d4ae41c1aff3cc30cfedd30p1,
-    0x1.52f00e0p793
-  },
-  { // Entry 185
-    -0x1.2ab3189e2d4ae41c1aff3cc30cfedd30p1,
-    -0x1.52f00e0p793
-  },
-  { // Entry 186
-    -0x1.7d2e63fb988907a109091d130f9f20d1p0,
-    0x1.5371684e5fb34p2
-  },
-  { // Entry 187
-    0x1.7d2e63fb988907a109091d130f9f20d1p0,
-    -0x1.5371684e5fb34p2
-  },
-  { // Entry 188
-    -0x1.f9f4f0da4de54499283a8ac2f55f7258p-1,
-    0x1.54ef2208956p239
-  },
-  { // Entry 189
-    0x1.f9f4f0da4de54499283a8ac2f55f7258p-1,
-    -0x1.54ef2208956p239
-  },
-  { // Entry 190
-    0x1.1483073142e608008f8849daf5f8c58dp2,
-    0x1.57e590af09014p0
-  },
-  { // Entry 191
-    -0x1.1483073142e608008f8849daf5f8c58dp2,
-    -0x1.57e590af09014p0
-  },
-  { // Entry 192
-    0x1.9972d4021c971563936055d8c1eaae0ap-1,
-    0x1.596p-1
-  },
-  { // Entry 193
-    -0x1.9972d4021c971563936055d8c1eaae0ap-1,
-    -0x1.596p-1
-  },
-  { // Entry 194
-    -0x1.e501ffd3a68c38336d977f634326a342p-2,
-    0x1.5981293783e1fp1
-  },
-  { // Entry 195
-    0x1.e501ffd3a68c38336d977f634326a342p-2,
-    -0x1.5981293783e1fp1
-  },
-  { // Entry 196
-    0x1.1604cc3dfc4181c3e9481558467a85fep-1,
-    0x1.5bea010p468
-  },
-  { // Entry 197
-    -0x1.1604cc3dfc4181c3e9481558467a85fep-1,
-    -0x1.5bea010p468
-  },
-  { // Entry 198
-    -0x1.f76ca50bbbaeb012beade2a328e5fc03p-1,
-    0x1.60661c1969666p2
-  },
-  { // Entry 199
-    0x1.f76ca50bbbaeb012beade2a328e5fc03p-1,
-    -0x1.60661c1969666p2
-  },
-  { // Entry 200
-    0x1.cd8b73c9430fef75dc710ffdfe091b42p0,
-    0x1.62c5a850a142ap59
-  },
-  { // Entry 201
-    -0x1.cd8b73c9430fef75dc710ffdfe091b42p0,
-    -0x1.62c5a850a142ap59
-  },
-  { // Entry 202
-    0x1.3accfd453ee67296088378f582eacb02p0,
-    0x1.64ef438p142
-  },
-  { // Entry 203
-    -0x1.3accfd453ee67296088378f582eacb02p0,
-    -0x1.64ef438p142
-  },
-  { // Entry 204
-    -0x1.acd9302d72de4bd8dda8f5650b77e732p-1,
-    0x1.658p2
-  },
-  { // Entry 205
-    0x1.acd9302d72de4bd8dda8f5650b77e732p-1,
-    -0x1.658p2
-  },
-  { // Entry 206
-    0x1.f004f875c2e738159c7d75a3980cafd7p-1,
-    0x1.6603c65d348d2p5
-  },
-  { // Entry 207
-    -0x1.f004f875c2e738159c7d75a3980cafd7p-1,
-    -0x1.6603c65d348d2p5
-  },
-  { // Entry 208
-    0x1.f53496e6d7f7181a62fec4c8a710900ep-1,
-    0x1.660e6bf2e092ap5
-  },
-  { // Entry 209
-    -0x1.f53496e6d7f7181a62fec4c8a710900ep-1,
-    -0x1.660e6bf2e092ap5
-  },
-  { // Entry 210
-    0x1.b64ee24f0119c800d5d0bb10a39aca4ep-1,
-    0x1.6a8p-1
-  },
-  { // Entry 211
-    -0x1.b64ee24f0119c800d5d0bb10a39aca4ep-1,
-    -0x1.6a8p-1
-  },
-  { // Entry 212
-    -0x1.d9ba9a7975635a3acc324e6aeda45133p60,
-    0x1.6ac5b262ca1ffp849
-  },
-  { // Entry 213
-    0x1.d9ba9a7975635a3acc324e6aeda45133p60,
-    -0x1.6ac5b262ca1ffp849
-  },
-  { // Entry 214
-    0x1.b6f557b999e22e0db10a92b908e877f6p-1,
-    0x1.6aep-1
-  },
-  { // Entry 215
-    -0x1.b6f557b999e22e0db10a92b908e877f6p-1,
-    -0x1.6aep-1
-  },
-  { // Entry 216
-    0x1.c1e1d5c4c0f077fc871d4bd0a03c6431p-1,
-    0x1.6cdb36cdb36c9p239
-  },
-  { // Entry 217
-    -0x1.c1e1d5c4c0f077fc871d4bd0a03c6431p-1,
-    -0x1.6cdb36cdb36c9p239
-  },
-  { // Entry 218
-    0x1.95bce4f5786978078c310210dced6f3fp-1,
-    0x1.6f1af1612270ap6
-  },
-  { // Entry 219
-    -0x1.95bce4f5786978078c310210dced6f3fp-1,
-    -0x1.6f1af1612270ap6
-  },
-  { // Entry 220
-    0x1.711e8f5fffba1f599595fbaac5b70e0bp-4,
-    0x1.702p-4
-  },
-  { // Entry 221
-    -0x1.711e8f5fffba1f599595fbaac5b70e0bp-4,
-    -0x1.702p-4
-  },
-  { // Entry 222
-    0x1.fb5898f29bb257fda6f2bedfc491abaep2,
-    0x1.720p0
-  },
-  { // Entry 223
-    -0x1.fb5898f29bb257fda6f2bedfc491abaep2,
-    -0x1.720p0
-  },
-  { // Entry 224
-    -0x1.ff9b771284d23290cdd83717cc905773p1,
-    0x1.7348c347ddc20p239
-  },
-  { // Entry 225
-    0x1.ff9b771284d23290cdd83717cc905773p1,
-    -0x1.7348c347ddc20p239
-  },
-  { // Entry 226
-    0x1.f72d47a0080e2d3d040863d56dbb567ep-2,
-    0x1.739ce739ce738p100
-  },
-  { // Entry 227
-    -0x1.f72d47a0080e2d3d040863d56dbb567ep-2,
-    -0x1.739ce739ce738p100
-  },
-  { // Entry 228
-    0x1.76441e7f8ea5f8000001d1c5c84f104ep-4,
-    0x1.753acc3d3ff35p-4
-  },
-  { // Entry 229
-    -0x1.76441e7f8ea5f8000001d1c5c84f104ep-4,
-    -0x1.753acc3d3ff35p-4
-  },
-  { // Entry 230
-    0x1.ce3f642e15af3c921dd7129db5e39342p-1,
-    0x1.77fffffffffffp-1
-  },
-  { // Entry 231
-    -0x1.ce3f642e15af3c921dd7129db5e39342p-1,
-    -0x1.77fffffffffffp-1
-  },
-  { // Entry 232
-    0x1.f425002a548eb405450970a353d307f7p42,
-    0x1.78fdb9effea26p4
-  },
-  { // Entry 233
-    -0x1.f425002a548eb405450970a353d307f7p42,
-    -0x1.78fdb9effea26p4
-  },
-  { // Entry 234
-    -0x1.dbc80de7dd042a9371e1b45718e51babp-1,
-    0x1.7a5f74607e851p19
-  },
-  { // Entry 235
-    0x1.dbc80de7dd042a9371e1b45718e51babp-1,
-    -0x1.7a5f74607e851p19
-  },
-  { // Entry 236
-    0x1.7b3bb3d0b3ca42f13207842899e0ba71p42,
-    0x1.7f7ef77e83f1ap19
-  },
-  { // Entry 237
-    -0x1.7b3bb3d0b3ca42f13207842899e0ba71p42,
-    -0x1.7f7ef77e83f1ap19
-  },
-  { // Entry 238
-    0x1.e7f05b71cd2d0fb4df6a43375cd8f670p33,
-    0x1.7f7f10a07f45ep20
-  },
-  { // Entry 239
-    -0x1.e7f05b71cd2d0fb4df6a43375cd8f670p33,
-    -0x1.7f7f10a07f45ep20
-  },
-  { // Entry 240
-    0x1.80000000000038000000000007333333p-25,
-    0x1.7ffffffffffffp-25
-  },
-  { // Entry 241
-    -0x1.80000000000038000000000007333333p-25,
-    -0x1.7ffffffffffffp-25
-  },
-  { // Entry 242
-    0x1.80000000000068000000000022333333p-25,
-    0x1.8000000000002p-25
-  },
-  { // Entry 243
-    -0x1.80000000000068000000000022333333p-25,
-    -0x1.8000000000002p-25
-  },
-  { // Entry 244
-    0x1.24245af4cd994e9b3bba992d1016365bp-52,
-    0x1.81ae0dffa3b33p959
-  },
-  { // Entry 245
-    -0x1.24245af4cd994e9b3bba992d1016365bp-52,
-    -0x1.81ae0dffa3b33p959
-  },
-  { // Entry 246
-    0x1.d72261d98e26b7ffa300d89fd46fb775p-1,
-    0x1.846bd7a4dce55p698
-  },
-  { // Entry 247
-    -0x1.d72261d98e26b7ffa300d89fd46fb775p-1,
-    -0x1.846bd7a4dce55p698
-  },
-  { // Entry 248
-    0x1.42d8a1ba441ad4028ac7f1a6a5ee0c54p1,
-    0x1.8720588p392
-  },
-  { // Entry 249
-    -0x1.42d8a1ba441ad4028ac7f1a6a5ee0c54p1,
-    -0x1.8720588p392
-  },
-  { // Entry 250
-    0x1.ea7b444cd798d7faeeff093f1d9971adp-1,
-    0x1.8722a67ea14acp-1
-  },
-  { // Entry 251
-    -0x1.ea7b444cd798d7faeeff093f1d9971adp-1,
-    -0x1.8722a67ea14acp-1
-  },
-  { // Entry 252
-    -0x1.c7dc7f08dbba089f2d7e890021bedcb7p-1,
-    0x1.89936c8828d38p299
-  },
-  { // Entry 253
-    0x1.c7dc7f08dbba089f2d7e890021bedcb7p-1,
-    -0x1.89936c8828d38p299
-  },
-  { // Entry 254
-    0x1.569653e319bba800000c83632e43abdep1,
-    0x1.8a69106fb9798p6
-  },
-  { // Entry 255
-    -0x1.569653e319bba800000c83632e43abdep1,
-    -0x1.8a69106fb9798p6
-  },
-  { // Entry 256
-    0x1.f2db21469f3d5819fa9ba8dccbff914ap-1,
-    0x1.8b777e1d2308cp-1
-  },
-  { // Entry 257
-    -0x1.f2db21469f3d5819fa9ba8dccbff914ap-1,
-    -0x1.8b777e1d2308cp-1
-  },
-  { // Entry 258
-    0x1.f3688bc2594e20102573cff48190ac28p-1,
-    0x1.8bcp-1
-  },
-  { // Entry 259
-    -0x1.f3688bc2594e20102573cff48190ac28p-1,
-    -0x1.8bcp-1
-  },
-  { // Entry 260
-    0x1.8d3a2544566df7b559b4ac48e12eac71p-4,
-    0x1.8bfd2274d851ap-4
-  },
-  { // Entry 261
-    -0x1.8d3a2544566df7b559b4ac48e12eac71p-4,
-    -0x1.8bfd2274d851ap-4
-  },
-  { // Entry 262
-    0x1.f4575cc4e477f019dab5d0103aaf91cfp-1,
-    0x1.8c3a450071dd9p-1
-  },
-  { // Entry 263
-    -0x1.f4575cc4e477f019dab5d0103aaf91cfp-1,
-    -0x1.8c3a450071dd9p-1
-  },
-  { // Entry 264
-    -0x1.1e09f66c4250b94e9030cadd00851158p11,
-    0x1.8cc0dd2b0f4b8p200
-  },
-  { // Entry 265
-    0x1.1e09f66c4250b94e9030cadd00851158p11,
-    -0x1.8cc0dd2b0f4b8p200
-  },
-  { // Entry 266
-    0x1.f71496cb921e5a4d2f39046a628b6509p-1,
-    0x1.8dap-1
-  },
-  { // Entry 267
-    -0x1.f71496cb921e5a4d2f39046a628b6509p-1,
-    -0x1.8dap-1
-  },
-  { // Entry 268
-    0x1.f71b4a6591169819476e6b759c7aae52p-1,
-    0x1.8da368da368d8p-1
-  },
-  { // Entry 269
-    -0x1.f71b4a6591169819476e6b759c7aae52p-1,
-    -0x1.8da368da368d8p-1
-  },
-  { // Entry 270
-    0x1.ff9b68ccadb2ff62c26864288ed6a4dfp-1,
-    0x1.91ed64b977a9ap-1
-  },
-  { // Entry 271
-    -0x1.ff9b68ccadb2ff62c26864288ed6a4dfp-1,
-    -0x1.91ed64b977a9ap-1
-  },
-  { // Entry 272
-    0x1.00000000290484779fa491c728aef945p18,
-    0x1.921f754442d19p0
-  },
-  { // Entry 273
-    -0x1.00000000290484779fa491c728aef945p18,
-    -0x1.921f754442d19p0
-  },
-  { // Entry 274
-    0x1.eef067afd328f311ce2c7a1f420a5983p48,
-    0x1.921fb54442d10p0
-  },
-  { // Entry 275
-    -0x1.eef067afd328f311ce2c7a1f420a5983p48,
-    -0x1.921fb54442d10p0
-  },
-  { // Entry 276
-    0x1.0000000003af2f223eb1e709cba00ec3p-17,
-    0x1.921ff54442d18p1
-  },
-  { // Entry 277
-    -0x1.0000000003af2f223eb1e709cba00ec3p-17,
-    -0x1.921ff54442d18p1
-  },
-  { // Entry 278
-    -0x1.b6772cb667dc187b7d019d1d7232c9e7p17,
-    0x1.922p0
-  },
-  { // Entry 279
-    0x1.b6772cb667dc187b7d019d1d7232c9e7p17,
-    -0x1.922p0
-  },
-  { // Entry 280
-    -0x1.fffffffceeefe791be2074779fd1dd9ep-1,
-    0x1.922071c31fc99p20
-  },
-  { // Entry 281
-    0x1.fffffffceeefe791be2074779fd1dd9ep-1,
-    -0x1.922071c31fc99p20
-  },
-  { // Entry 282
-    0x1.9d7c1354ba6f781c8b04408094f45284p-3,
-    0x1.97fffffffffffp-3
-  },
-  { // Entry 283
-    -0x1.9d7c1354ba6f781c8b04408094f45284p-3,
-    -0x1.97fffffffffffp-3
-  },
-  { // Entry 284
-    0x1.9af8877bb45e47ffffe961084b2c0beap-4,
-    0x1.999999a10a13cp-4
-  },
-  { // Entry 285
-    -0x1.9af8877bb45e47ffffe961084b2c0beap-4,
-    -0x1.999999a10a13cp-4
-  },
-  { // Entry 286
-    -0x1.b6ce128587cd07ffff757abda294c151p4,
-    0x1.9b74446ed05dcp0
-  },
-  { // Entry 287
-    0x1.b6ce128587cd07ffff757abda294c151p4,
-    -0x1.9b74446ed05dcp0
-  },
-  { // Entry 288
-    0x1.ff65aef54c8fc8042841071b45b6d7d9p-1,
-    0x1.9eae494d2b275p4
-  },
-  { // Entry 289
-    -0x1.ff65aef54c8fc8042841071b45b6d7d9p-1,
-    -0x1.9eae494d2b275p4
-  },
-  { // Entry 290
-    0x1.61776aa407a437f617fcadb15c7f61c2p-3,
-    0x1.a80p1
-  },
-  { // Entry 291
-    -0x1.61776aa407a437f617fcadb15c7f61c2p-3,
-    -0x1.a80p1
-  },
-  { // Entry 292
-    0x1.b6001de13ad9580073acba4aa423e2d9p-3,
-    0x1.af8p-3
-  },
-  { // Entry 293
-    -0x1.b6001de13ad9580073acba4aa423e2d9p-3,
-    -0x1.af8p-3
-  },
-  { // Entry 294
-    0x1.b5a0503ae354b7a16f7c50f8b3bef2cap-4,
-    0x1.b3f8ea7b1f91bp-4
-  },
-  { // Entry 295
-    -0x1.b5a0503ae354b7a16f7c50f8b3bef2cap-4,
-    -0x1.b3f8ea7b1f91bp-4
-  },
-  { // Entry 296
-    0x1.b5a0503ae4c7b792537327f4245ac6fbp-4,
-    0x1.b3f8ea7b21008p-4
-  },
-  { // Entry 297
-    -0x1.b5a0503ae4c7b792537327f4245ac6fbp-4,
-    -0x1.b3f8ea7b21008p-4
-  },
-  { // Entry 298
-    0x1.057584c429b3a6ea0a65caff98634490p59,
-    0x1.b951f1572eba5p23
-  },
-  { // Entry 299
-    -0x1.057584c429b3a6ea0a65caff98634490p59,
-    -0x1.b951f1572eba5p23
-  },
-  { // Entry 300
-    -0x1.9a282fa1ff7d98039be3bf5b39cc6d89p2,
-    0x1.b9cp0
-  },
-  { // Entry 301
-    0x1.9a282fa1ff7d98039be3bf5b39cc6d89p2,
-    -0x1.b9cp0
-  },
-  { // Entry 302
-    -0x1.027d184afb1984ca1d21b1ac93111887p-52,
-    0x1.bab62ed655019p970
-  },
-  { // Entry 303
-    0x1.027d184afb1984ca1d21b1ac93111887p-52,
-    -0x1.bab62ed655019p970
-  },
-  { // Entry 304
-    0x1.ca6efdf845d6c7fffebaea1afbf7e961p2,
-    0x1.bea1b35f3cb6dp84
-  },
-  { // Entry 305
-    -0x1.ca6efdf845d6c7fffebaea1afbf7e961p2,
-    -0x1.bea1b35f3cb6dp84
-  },
-  { // Entry 306
-    0x1.fd87b34747b746b8b657cac797c0870dp42,
-    0x1.c463abeccb27bp3
-  },
-  { // Entry 307
-    -0x1.fd87b34747b746b8b657cac797c0870dp42,
-    -0x1.c463abeccb27bp3
-  },
-  { // Entry 308
-    0x1.ffffffffffffb094541a2461e734daeep-1,
-    0x1.c463abeccb2bbp2
-  },
-  { // Entry 309
-    -0x1.ffffffffffffb094541a2461e734daeep-1,
-    -0x1.c463abeccb2bbp2
-  },
-  { // Entry 310
-    0x1.fb057029acfd17fffffa5ac8204f0803p-1,
-    0x1.c6cbe26b7b45fp86
-  },
-  { // Entry 311
-    -0x1.fb057029acfd17fffffa5ac8204f0803p-1,
-    -0x1.c6cbe26b7b45fp86
-  },
-  { // Entry 312
-    0x1.c8d5a08be40c20p-117,
-    0x1.c8d5a08be40c2p-117
-  },
-  { // Entry 313
-    -0x1.c8d5a08be40c20p-117,
-    -0x1.c8d5a08be40c2p-117
-  },
-  { // Entry 314
-    0x1.e5dffd7f06cb3754933cea578deaad36p-2,
-    0x1.cad4e9827a2bep1
-  },
-  { // Entry 315
-    -0x1.e5dffd7f06cb3754933cea578deaad36p-2,
-    -0x1.cad4e9827a2bep1
-  },
-  { // Entry 316
-    0x1.e6be378b1b4eb7658e85ad0af33836a9p-2,
-    0x1.caeb940e4b997p1
-  },
-  { // Entry 317
-    -0x1.e6be378b1b4eb7658e85ad0af33836a9p-2,
-    -0x1.caeb940e4b997p1
-  },
-  { // Entry 318
-    0x1.e72bd025a1fd5765f853469a85ae7b7dp-2,
-    0x1.caf6c04ecd034p1
-  },
-  { // Entry 319
-    -0x1.e72bd025a1fd5765f853469a85ae7b7dp-2,
-    -0x1.caf6c04ecd034p1
-  },
-  { // Entry 320
-    0x1.e844b3d7cbe4375c28e322da6ba5d7d8p-2,
-    0x1.cb135ec1c956ep1
-  },
-  { // Entry 321
-    -0x1.e844b3d7cbe4375c28e322da6ba5d7d8p-2,
-    -0x1.cb135ec1c956ep1
-  },
-  { // Entry 322
-    0x1.dd38a1f1d289b6173115721bc5c1fc72p-54,
-    0x1.cb44e86bc192bp648
-  },
-  { // Entry 323
-    -0x1.dd38a1f1d289b6173115721bc5c1fc72p-54,
-    -0x1.cb44e86bc192bp648
-  },
-  { // Entry 324
-    0x1.dd38a1f1d289b6173115721bc629a23dp-53,
-    0x1.cb44e86bc192bp649
-  },
-  { // Entry 325
-    -0x1.dd38a1f1d289b6173115721bc629a23dp-53,
-    -0x1.cb44e86bc192bp649
-  },
-  { // Entry 326
-    -0x1.fff6e755320ed78db4d6eff4bf6a6b10p1,
-    0x1.cb61afedb2b3cp119
-  },
-  { // Entry 327
-    0x1.fff6e755320ed78db4d6eff4bf6a6b10p1,
-    -0x1.cb61afedb2b3cp119
-  },
-  { // Entry 328
-    0x1.ccdf4aa6c228f8041be91a142e0e271bp-7,
-    0x1.ccd7834ba3804p-7
-  },
-  { // Entry 329
-    -0x1.ccdf4aa6c228f8041be91a142e0e271bp-7,
-    -0x1.ccd7834ba3804p-7
-  },
-  { // Entry 330
-    0x1.cee50016fc2d8837286bf6fd431a7b3bp-4,
-    0x1.ccf0599da478ep-4
-  },
-  { // Entry 331
-    -0x1.cee50016fc2d8837286bf6fd431a7b3bp-4,
-    -0x1.ccf0599da478ep-4
-  },
-  { // Entry 332
-    0x1.44cf3ee8a75a87cc6657e62f94a93e6fp0,
-    0x1.ce8p-1
-  },
-  { // Entry 333
-    -0x1.44cf3ee8a75a87cc6657e62f94a93e6fp0,
-    -0x1.ce8p-1
-  },
-  { // Entry 334
-    0x1.45aa12ff98152800001fbd8799a96a2cp0,
-    0x1.cf276c9cb9af0p-1
-  },
-  { // Entry 335
-    -0x1.45aa12ff98152800001fbd8799a96a2cp0,
-    -0x1.cf276c9cb9af0p-1
-  },
-  { // Entry 336
-    0x1.f9bc744f61e0ed853829e2f765b8a12cp-4,
-    0x1.d2e979148a458p61
-  },
-  { // Entry 337
-    -0x1.f9bc744f61e0ed853829e2f765b8a12cp-4,
-    -0x1.d2e979148a458p61
-  },
-  { // Entry 338
-    0x1.6e70f9edbd1a082ae6f90c62ef4f31ddp-2,
-    0x1.d6b5ad6b5ab68p100
-  },
-  { // Entry 339
-    -0x1.6e70f9edbd1a082ae6f90c62ef4f31ddp-2,
-    -0x1.d6b5ad6b5ab68p100
-  },
-  { // Entry 340
-    0x1.13e9c6a348e4a7bede82724505269f68p2,
-    0x1.d96e058p488
-  },
-  { // Entry 341
-    -0x1.13e9c6a348e4a7bede82724505269f68p2,
-    -0x1.d96e058p488
-  },
-  { // Entry 342
-    -0x1.d355463c2303582fa31a3238dcbe560ep-5,
-    0x1.dd10f25171bc9p5
-  },
-  { // Entry 343
-    0x1.d355463c2303582fa31a3238dcbe560ep-5,
-    -0x1.dd10f25171bc9p5
-  },
-  { // Entry 344
-    0x1.ddf21ebf6fc927fffffbb3ecc0cff66ep-6,
-    0x1.ddcf6e56696a4p-6
-  },
-  { // Entry 345
-    -0x1.ddf21ebf6fc927fffffbb3ecc0cff66ep-6,
-    -0x1.ddcf6e56696a4p-6
-  },
-  { // Entry 346
-    0x1.5cb0bfc1558007e0c5d095f729e3427bp0,
-    0x1.ep-1
-  },
-  { // Entry 347
-    -0x1.5cb0bfc1558007e0c5d095f729e3427bp0,
-    -0x1.ep-1
-  },
-  { // Entry 348
-    -0x1.97b5e8ae9a21c7f4821922bc5b3782ccp1,
-    0x1.ep0
-  },
-  { // Entry 349
-    0x1.97b5e8ae9a21c7f4821922bc5b3782ccp1,
-    -0x1.ep0
-  },
-  { // Entry 350
-    -0x1.f8bf68d0c23f3741efb8bd99853bae8ap0,
-    0x1.e779de779de71p118
-  },
-  { // Entry 351
-    0x1.f8bf68d0c23f3741efb8bd99853bae8ap0,
-    -0x1.e779de779de71p118
-  },
-  { // Entry 352
-    -0x1.fffffffffd71cf934ef3e5df4008665fp-1,
-    0x1.eb0567bed1f71p12
-  },
-  { // Entry 353
-    0x1.fffffffffd71cf934ef3e5df4008665fp-1,
-    -0x1.eb0567bed1f71p12
-  },
-  { // Entry 354
-    0x1.ee788d1cc7954841878473aa5d2615a5p-4,
-    0x1.ec16f30a34fbcp-4
-  },
-  { // Entry 355
-    -0x1.ee788d1cc7954841878473aa5d2615a5p-4,
-    -0x1.ec16f30a34fbcp-4
-  },
-  { // Entry 356
-    0x1.efdad938b4b0e834014bf56a7084675dp-4,
-    0x1.ed7424ba2aa4ep-4
-  },
-  { // Entry 357
-    -0x1.efdad938b4b0e834014bf56a7084675dp-4,
-    -0x1.ed7424ba2aa4ep-4
-  },
-  { // Entry 358
-    0x1.da347607948f47ffef21697161fd3cddp-1,
-    0x1.ee9eda5890390p499
-  },
-  { // Entry 359
-    -0x1.da347607948f47ffef21697161fd3cddp-1,
-    -0x1.ee9eda5890390p499
-  },
-  { // Entry 360
-    0x1.f682d27a8be87f783d494857b6f30e05p0,
-    0x1.f4ff0d7b3ac10p100
-  },
-  { // Entry 361
-    -0x1.f682d27a8be87f783d494857b6f30e05p0,
-    -0x1.f4ff0d7b3ac10p100
-  },
-  { // Entry 362
-    -0x1.ffd36a753ced9027c93845adde046246p-1,
-    0x1.f5a814afd69f5p119
-  },
-  { // Entry 363
-    0x1.ffd36a753ced9027c93845adde046246p-1,
-    -0x1.f5a814afd69f5p119
-  },
-  { // Entry 364
-    -0x1.0fa7701d059b51de05df58ade26bec5cp-9,
-    0x1.f8fc824d2693bp61
-  },
-  { // Entry 365
-    0x1.0fa7701d059b51de05df58ade26bec5cp-9,
-    -0x1.f8fc824d2693bp61
-  },
-  { // Entry 366
-    -0x1.afe3875bd3afe801f149d0a9ad36f453p-4,
-    0x1.f9be6f9be6f98p9
-  },
-  { // Entry 367
-    0x1.afe3875bd3afe801f149d0a9ad36f453p-4,
-    -0x1.f9be6f9be6f98p9
-  },
-  { // Entry 368
-    0x1.fd1032e82deab7baba99c913dee10b9ap-4,
-    0x1.fa775cd264f43p-4
-  },
-  { // Entry 369
-    -0x1.fd1032e82deab7baba99c913dee10b9ap-4,
-    -0x1.fa775cd264f43p-4
-  },
-  { // Entry 370
-    0x1.fea8c67dd46ca83ca49ab9ecd0360739p-4,
-    0x1.fc09b47402d82p-4
-  },
-  { // Entry 371
-    -0x1.fea8c67dd46ca83ca49ab9ecd0360739p-4,
-    -0x1.fc09b47402d82p-4
-  },
-  { // Entry 372
-    -0x1.9020caf18a87438127a85d1f0a3d4205p-1,
-    0x1.feeffffffffc6p995
-  },
-  { // Entry 373
-    0x1.9020caf18a87438127a85d1f0a3d4205p-1,
-    -0x1.feeffffffffc6p995
-  },
-  { // Entry 374
-    0x1.af135beb0f2817fba77204a5b1b6766bp0,
-    0x1.ff01fffffffffp7
-  },
-  { // Entry 375
-    -0x1.af135beb0f2817fba77204a5b1b6766bp0,
-    -0x1.ff01fffffffffp7
-  },
-  { // Entry 376
-    -0x1.fd97532efd89b26bc294b27e0a1956b9p3,
-    0x1.ff8ffffffffffp540
-  },
-  { // Entry 377
-    0x1.fd97532efd89b26bc294b27e0a1956b9p3,
-    -0x1.ff8ffffffffffp540
-  },
-  { // Entry 378
-    -0x1.cc32cb933818111e6ddf00c5c79cbc88p-1,
-    0x1.ff8ffffffffffp870
-  },
-  { // Entry 379
-    0x1.cc32cb933818111e6ddf00c5c79cbc88p-1,
-    -0x1.ff8ffffffffffp870
-  },
-  { // Entry 380
-    -0x1.8659d3e2b52b880668ac8b4b9fae9538p-1,
-    0x1.ffc10p9
-  },
-  { // Entry 381
-    0x1.8659d3e2b52b880668ac8b4b9fae9538p-1,
-    -0x1.ffc10p9
-  },
-  { // Entry 382
-    -0x1.b66066fb812ee27dbb623a1a1353e062p-2,
-    0x1.ffcfff8p19
-  },
-  { // Entry 383
-    0x1.b66066fb812ee27dbb623a1a1353e062p-2,
-    -0x1.ffcfff8p19
-  },
-  { // Entry 384
-    -0x1.520ebd32e1d8ecd38bfcd6a57e1a377fp1,
-    0x1.ffcfff8p365
-  },
-  { // Entry 385
-    0x1.520ebd32e1d8ecd38bfcd6a57e1a377fp1,
-    -0x1.ffcfff8p365
-  },
-  { // Entry 386
-    0x1.489813c24d13b00ab69627d858bb63b5p0,
-    0x1.ffcffffffff6cp720
-  },
-  { // Entry 387
-    -0x1.489813c24d13b00ab69627d858bb63b5p0,
-    -0x1.ffcffffffff6cp720
-  },
-  { // Entry 388
-    0x1.413e63f7dd607ef3c8422a490af2dc30p0,
-    0x1.ffcfffffffff9p320
-  },
-  { // Entry 389
-    -0x1.413e63f7dd607ef3c8422a490af2dc30p0,
-    -0x1.ffcfffffffff9p320
-  },
-  { // Entry 390
-    -0x1.fc3928a39b65284d4c7ef3b6a2edc8f1p-2,
-    0x1.ffcffffffffffp990
-  },
-  { // Entry 391
-    0x1.fc3928a39b65284d4c7ef3b6a2edc8f1p-2,
-    -0x1.ffcffffffffffp990
-  },
-  { // Entry 392
-    -0x1.9ad70d284f16d59dcaa0ab9fb77d7490p-1,
-    0x1.ffeffffffffccp995
-  },
-  { // Entry 393
-    0x1.9ad70d284f16d59dcaa0ab9fb77d7490p-1,
-    -0x1.ffeffffffffccp995
-  },
-  { // Entry 394
-    0x1.aad6effcb6783826de7b24dba501c11cp-3,
-    0x1.ffefffffffffdp366
-  },
-  { // Entry 395
-    -0x1.aad6effcb6783826de7b24dba501c11cp-3,
-    -0x1.ffefffffffffdp366
-  },
-  { // Entry 396
-    0x1.c88645f9d119ec2030724a4ce4e6ebbap2,
-    0x1.ffeffffffffffp180
-  },
-  { // Entry 397
-    -0x1.c88645f9d119ec2030724a4ce4e6ebbap2,
-    -0x1.ffeffffffffffp180
-  },
-  { // Entry 398
-    0x1.131aa7b9d4aa07ff5840ac1e8fb42360p2,
-    0x1.ffeffffffffffp231
-  },
-  { // Entry 399
-    -0x1.131aa7b9d4aa07ff5840ac1e8fb42360p2,
-    -0x1.ffeffffffffffp231
-  },
-  { // Entry 400
-    0x1.f671719be50d1d4debe85c922e1e2913p-3,
-    0x1.ffeffffffffffp1019
-  },
-  { // Entry 401
-    -0x1.f671719be50d1d4debe85c922e1e2913p-3,
-    -0x1.ffeffffffffffp1019
-  },
-  { // Entry 402
-    0x1.ff078a2d2d871ac1f32765e9db644eb1p-1,
-    0x1.fff1fffffffffp40
-  },
-  { // Entry 403
-    -0x1.ff078a2d2d871ac1f32765e9db644eb1p-1,
-    -0x1.fff1fffffffffp40
-  },
-  { // Entry 404
-    0x1.0784b04fc42a59e77f85d9967da6775dp9,
-    0x1.fff1fffffffffp41
-  },
-  { // Entry 405
-    -0x1.0784b04fc42a59e77f85d9967da6775dp9,
-    -0x1.fff1fffffffffp41
-  },
-  { // Entry 406
-    0x1.8eb22dd167a37ad21ddf1e69734e9ce2p0,
-    0x1.fffff1fffffffp-1
-  },
-  { // Entry 407
-    -0x1.8eb22dd167a37ad21ddf1e69734e9ce2p0,
-    -0x1.fffff1fffffffp-1
-  },
-  { // Entry 408
-    -0x1.22e7346fd3dda553b146c37f61127a4cp1,
-    0x1.ffffff8p119
-  },
-  { // Entry 409
-    0x1.22e7346fd3dda553b146c37f61127a4cp1,
-    -0x1.ffffff8p119
-  },
-  { // Entry 410
-    -0x1.db0b3b019f175bed5bcf1a5602db00afp-3,
-    0x1.ffffff8p192
-  },
-  { // Entry 411
-    0x1.db0b3b019f175bed5bcf1a5602db00afp-3,
-    -0x1.ffffff8p192
-  },
-  { // Entry 412
-    0x1.06b6bede910257f315a5083a9ab2b650p-1,
-    0x1.ffffff8p543
-  },
-  { // Entry 413
-    -0x1.06b6bede910257f315a5083a9ab2b650p-1,
-    -0x1.ffffff8p543
-  },
-  { // Entry 414
-    -0x1.40f02a15dfa3d7ff3e2a4553f19cb2d0p1,
-    0x1.ffffffffbbfffp40
-  },
-  { // Entry 415
-    0x1.40f02a15dfa3d7ff3e2a4553f19cb2d0p1,
-    -0x1.ffffffffbbfffp40
-  },
-  { // Entry 416
-    0x1.ab60112ef4fddff3f5a2690c7d3ea6efp-2,
-    0x1.fffffffff7fffp231
-  },
-  { // Entry 417
-    -0x1.ab60112ef4fddff3f5a2690c7d3ea6efp-2,
-    -0x1.fffffffff7fffp231
-  },
-  { // Entry 418
-    0x1.35a9929eeafd70f0712abe2a511854a1p0,
-    0x1.fffffffffff78p920
-  },
-  { // Entry 419
-    -0x1.35a9929eeafd70f0712abe2a511854a1p0,
-    -0x1.fffffffffff78p920
-  },
-  { // Entry 420
-    0x1.4630298f3b993287205dc0b89b0601e0p0,
-    0x1.fffffffffffd5p995
-  },
-  { // Entry 421
-    -0x1.4630298f3b993287205dc0b89b0601e0p0,
-    -0x1.fffffffffffd5p995
-  },
-  { // Entry 422
-    -0x1.9472e045129fdba63791712416ec9613p-1,
-    0x1.fffffffffffe8p720
-  },
-  { // Entry 423
-    0x1.9472e045129fdba63791712416ec9613p-1,
-    -0x1.fffffffffffe8p720
-  },
-  { // Entry 424
-    0x1.42e586daa1b428fc0580888f2fc46893p0,
-    0x1.fffffffffffebp920
-  },
-  { // Entry 425
-    -0x1.42e586daa1b428fc0580888f2fc46893p0,
-    -0x1.fffffffffffebp920
-  },
-  { // Entry 426
-    -0x1.bfc436b94374b5f16b60ea69cd883992p-1,
-    0x1.ffffffffffff1p245
-  },
-  { // Entry 427
-    0x1.bfc436b94374b5f16b60ea69cd883992p-1,
-    -0x1.ffffffffffff1p245
-  },
-  { // Entry 428
-    0x1.35117d4a4f1e4bb22fdd03164a364ccfp0,
-    0x1.ffffffffffff4p845
-  },
-  { // Entry 429
-    -0x1.35117d4a4f1e4bb22fdd03164a364ccfp0,
-    -0x1.ffffffffffff4p845
-  },
-  { // Entry 430
-    -0x1.bfdd9292798aaa789c3df0df7729835ap-1,
-    0x1.ffffffffffff4p1020
-  },
-  { // Entry 431
-    0x1.bfdd9292798aaa789c3df0df7729835ap-1,
-    -0x1.ffffffffffff4p1020
-  },
-  { // Entry 432
-    -0x1.9b768ccdae6ebb70b45ac14e92b3d5c8p9,
-    0x1.ffffffffffffcp45
-  },
-  { // Entry 433
-    0x1.9b768ccdae6ebb70b45ac14e92b3d5c8p9,
-    -0x1.ffffffffffffcp45
-  },
-  { // Entry 434
-    0x1.feca047f2730f7395d95f469ccb5a5d3p-1,
-    0x1.ffffffffffffcp474
-  },
-  { // Entry 435
-    -0x1.feca047f2730f7395d95f469ccb5a5d3p-1,
-    -0x1.ffffffffffffcp474
-  },
-  { // Entry 436
-    -0x1.449f15cc945597ff58f2426acbff9c62p-2,
-    0x1.ffffffffffffcp976
-  },
-  { // Entry 437
-    0x1.449f15cc945597ff58f2426acbff9c62p-2,
-    -0x1.ffffffffffffcp976
-  },
-  { // Entry 438
-    0x1.fffc58da07951cbe22c96d73b1289e1ep-2,
-    0x1.ffffffffffffep881
-  },
-  { // Entry 439
-    -0x1.fffc58da07951cbe22c96d73b1289e1ep-2,
-    -0x1.ffffffffffffep881
-  },
-  { // Entry 440
-    -0x1.c1c9195ec23aa64df145dd269cd895e8p-1,
-    0x1.ffffffffffffep970
-  },
-  { // Entry 441
-    0x1.c1c9195ec23aa64df145dd269cd895e8p-1,
-    -0x1.ffffffffffffep970
-  },
-  { // Entry 442
-    0x1.3cc1ed3906d2f7fdd633cf4eb06f3f19p-2,
-    0x1.33328c1b37321p-2
-  },
-  { // Entry 443
-    -0x1.3cc1ed3906d2f7fdd633cf4eb06f3f19p-2,
-    -0x1.33328c1b37321p-2
-  },
-  { // Entry 444
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 445
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 446
-    -0.0,
-    -0.0
-  },
-  { // Entry 447
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 448
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 449
-    -0x1.00000000000010p-1022,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 450
-    0x1.00000000000010p-1022,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 451
-    -0x1.p-1022,
-    -0x1.0p-1022
-  },
-  { // Entry 452
-    0x1.p-1022,
-    0x1.0p-1022
-  },
-  { // Entry 453
-    -0x1.ffffffffffffe0p-1023,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 454
-    0x1.ffffffffffffe0p-1023,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 455
-    0x1.ffffffffffffe0p-1023,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 456
-    -0x1.ffffffffffffe0p-1023,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 457
-    0x1.p-1022,
-    0x1.0p-1022
-  },
-  { // Entry 458
-    -0x1.p-1022,
-    -0x1.0p-1022
-  },
-  { // Entry 459
-    0x1.00000000000010p-1022,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 460
-    -0x1.00000000000010p-1022,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 461
-    0x1.999999f0fb38c6122a1fa8e043bb07c2p-13,
-    0x1.999999999999ap-13
-  },
-  { // Entry 462
-    -0x1.999999f0fb38c6122a1fa8e043bb07c2p-13,
-    -0x1.999999999999ap-13
-  },
-  { // Entry 463
-    0x1.99999af7201744b823e5b270fd1aa39dp-12,
-    0x1.999999999999ap-12
-  },
-  { // Entry 464
-    -0x1.99999af7201744b823e5b270fd1aa39dp-12,
-    -0x1.999999999999ap-12
-  },
-  { // Entry 465
-    0x1.33333581062a38f04df024142ddaa05dp-11,
-    0x1.3333333333334p-11
-  },
-  { // Entry 466
-    -0x1.33333581062a38f04df024142ddaa05dp-11,
-    -0x1.3333333333334p-11
-  },
-  { // Entry 467
-    0x1.99999f0fb3a0f9d88738be2ff7af9aaap-11,
-    0x1.999999999999ap-11
-  },
-  { // Entry 468
-    -0x1.99999f0fb3a0f9d88738be2ff7af9aaap-11,
-    -0x1.999999999999ap-11
-  },
-  { // Entry 469
-    0x1.000005555577777854854dedc28ead51p-10,
-    0x1.0p-10
-  },
-  { // Entry 470
-    -0x1.000005555577777854854dedc28ead51p-10,
-    -0x1.0p-10
-  },
-  { // Entry 471
-    0x1.33333c6a7f4ec73853151cd76b79e135p-10,
-    0x1.3333333333333p-10
-  },
-  { // Entry 472
-    -0x1.33333c6a7f4ec73853151cd76b79e135p-10,
-    -0x1.3333333333333p-10
-  },
-  { // Entry 473
-    0x1.66667508e0a1b502287034d36bf4e3d5p-10,
-    0x1.6666666666666p-10
-  },
-  { // Entry 474
-    -0x1.66667508e0a1b502287034d36bf4e3d5p-10,
-    -0x1.6666666666666p-10
-  },
-  { // Entry 475
-    0x1.9999af7202c366f1e0b548a31c41d210p-10,
-    0x1.9999999999999p-10
-  },
-  { // Entry 476
-    -0x1.9999af7202c366f1e0b548a31c41d210p-10,
-    -0x1.9999999999999p-10
-  },
-  { // Entry 477
-    0x1.ccccebe76f102ff633c5f02a34076687p-10,
-    0x1.cccccccccccccp-10
-  },
-  { // Entry 478
-    -0x1.ccccebe76f102ff633c5f02a34076687p-10,
-    -0x1.cccccccccccccp-10
-  },
-  { // Entry 479
-    0x1.0667d5fcf3d078f940687eb974310fb9p-7,
-    0x1.0666666666666p-7
-  },
-  { // Entry 480
-    -0x1.0667d5fcf3d078f940687eb974310fb9p-7,
-    -0x1.0666666666666p-7
-  },
-  { // Entry 481
-    0x1.ccd4939d0ccd7646b3f81b7553675c23p-7,
-    0x1.cccccccccccccp-7
-  },
-  { // Entry 482
-    -0x1.ccd4939d0ccd7646b3f81b7553675c23p-7,
-    -0x1.cccccccccccccp-7
-  },
-  { // Entry 483
-    0x1.49a4fc02ad193e8e94c4b2429190b5b2p-6,
-    0x1.4999999999999p-6
-  },
-  { // Entry 484
-    -0x1.49a4fc02ad193e8e94c4b2429190b5b2p-6,
-    -0x1.4999999999999p-6
-  },
-  { // Entry 485
-    0x1.ace5ded5f6be698f56697ac761f3dc69p-6,
-    0x1.accccccccccccp-6
-  },
-  { // Entry 486
-    -0x1.ace5ded5f6be698f56697ac761f3dc69p-6,
-    -0x1.accccccccccccp-6
-  },
-  { // Entry 487
-    0x1.081767fd3cb685f7b069146ce3333851p-5,
-    0x1.080p-5
-  },
-  { // Entry 488
-    -0x1.081767fd3cb685f7b069146ce3333851p-5,
-    -0x1.080p-5
-  },
-  { // Entry 489
-    0x1.39c0d6dea66fb6d286d403c292527356p-5,
-    0x1.399999999999ap-5
-  },
-  { // Entry 490
-    -0x1.39c0d6dea66fb6d286d403c292527356p-5,
-    -0x1.399999999999ap-5
-  },
-  { // Entry 491
-    0x1.6b702b954bc1d583c4a46773c2c2a15dp-5,
-    0x1.6b33333333334p-5
-  },
-  { // Entry 492
-    -0x1.6b702b954bc1d583c4a46773c2c2a15dp-5,
-    -0x1.6b33333333334p-5
-  },
-  { // Entry 493
-    0x1.9d265618dd0c688e049c61090d3e3fe2p-5,
-    0x1.9cccccccccccep-5
-  },
-  { // Entry 494
-    -0x1.9d265618dd0c688e049c61090d3e3fe2p-5,
-    -0x1.9cccccccccccep-5
-  },
-  { // Entry 495
-    0x1.cee446e4cfd4be6900f4b906ca9725b1p-5,
-    0x1.ce66666666666p-5
-  },
-  { // Entry 496
-    -0x1.cee446e4cfd4be6900f4b906ca9725b1p-5,
-    -0x1.ce66666666666p-5
-  },
-  { // Entry 497
-    0x1.a1eaedd5a4313e9d08bc7bb17a22531fp-1,
-    0x1.5e7fc4369bdadp-1
-  },
-  { // Entry 498
-    -0x1.a1eaedd5a4313e9d08bc7bb17a22531fp-1,
-    -0x1.5e7fc4369bdadp-1
-  },
-  { // Entry 499
-    0x1.d93b8aad424de0e43fb04d6781be81a3p1,
-    0x1.4e7fc4369bdadp0
-  },
-  { // Entry 500
-    -0x1.d93b8aad424de0e43fb04d6781be81a3p1,
-    -0x1.4e7fc4369bdadp0
-  },
-  { // Entry 501
-    -0x1.563acf158c2eb678d71be31e0f34754dp1,
-    0x1.edbfa651e9c84p0
-  },
-  { // Entry 502
-    0x1.563acf158c2eb678d71be31e0f34754dp1,
-    -0x1.edbfa651e9c84p0
-  },
-  { // Entry 503
-    -0x1.576b77609f0890313c371a0a2c582145p-1,
-    0x1.467fc4369bdadp1
-  },
-  { // Entry 504
-    0x1.576b77609f0890313c371a0a2c582145p-1,
-    -0x1.467fc4369bdadp1
-  },
-  { // Entry 505
-    0x1.00155777aebf6ad41b39a808ed5c3384p-5,
-    0x1.961fb54442d18p1
-  },
-  { // Entry 506
-    -0x1.00155777aebf6ad41b39a808ed5c3384p-5,
-    -0x1.961fb54442d18p1
-  },
-  { // Entry 507
-    0x1.87e9966e7d22d348fec6c95f851775f4p-1,
-    0x1.e5bfa651e9c83p1
-  },
-  { // Entry 508
-    -0x1.87e9966e7d22d348fec6c95f851775f4p-1,
-    -0x1.e5bfa651e9c83p1
-  },
-  { // Entry 509
-    0x1.a49e7d8987850f9ca5b9332e39dcd88fp1,
-    0x1.1aafcbafc85f7p2
-  },
-  { // Entry 510
-    -0x1.a49e7d8987850f9ca5b9332e39dcd88fp1,
-    -0x1.1aafcbafc85f7p2
-  },
-  { // Entry 511
-    -0x1.79ced8156d040edde5a6ab62255e2261p1,
-    0x1.427fc4369bdadp2
-  },
-  { // Entry 512
-    0x1.79ced8156d040edde5a6ab62255e2261p1,
-    -0x1.427fc4369bdadp2
-  },
-  { // Entry 513
-    -0x1.6f1f65cd1e91b5e5ec1e120e9e0ddc0ap-1,
-    0x1.6a4fbcbd6f562p2
-  },
-  { // Entry 514
-    0x1.6f1f65cd1e91b5e5ec1e120e9e0ddc0ap-1,
-    -0x1.6a4fbcbd6f562p2
-  },
-  { // Entry 515
-    -0x1.67747d5f844e1b0c503d51e7ba032ffcp-1,
-    0x1.6af2eff0a2896p2
-  },
-  { // Entry 516
-    0x1.67747d5f844e1b0c503d51e7ba032ffcp-1,
-    -0x1.6af2eff0a2896p2
-  },
-  { // Entry 517
-    -0x1.626a258815d1823506d17069130eb9fbp1,
-    0x1.43c62a9d02414p2
-  },
-  { // Entry 518
-    0x1.626a258815d1823506d17069130eb9fbp1,
-    -0x1.43c62a9d02414p2
-  },
-  { // Entry 519
-    0x1.d6adaf80f8b051fbc7ab9f2e09e8e608p1,
-    0x1.1c99654961f92p2
-  },
-  { // Entry 520
-    -0x1.d6adaf80f8b051fbc7ab9f2e09e8e608p1,
-    -0x1.1c99654961f92p2
-  },
-  { // Entry 521
-    0x1.a94d1b21370d52bfcd9ec417e41d6e5bp-1,
-    0x1.ead93feb8361fp1
-  },
-  { // Entry 522
-    -0x1.a94d1b21370d52bfcd9ec417e41d6e5bp-1,
-    -0x1.ead93feb8361fp1
-  },
-  { // Entry 523
-    0x1.4cba9e78222340ca493f803bbc947659p-4,
-    0x1.9c7fb54442d1ap1
-  },
-  { // Entry 524
-    -0x1.4cba9e78222340ca493f803bbc947659p-4,
-    -0x1.9c7fb54442d1ap1
-  },
-  { // Entry 525
-    -0x1.2cb6d02634531a6839bf898cc1f918dep-1,
-    0x1.4e262a9d02415p1
-  },
-  { // Entry 526
-    0x1.2cb6d02634531a6839bf898cc1f918dep-1,
-    -0x1.4e262a9d02415p1
-  },
-  { // Entry 527
-    -0x1.18d9112308d5b897ba44cfc5c4437317p1,
-    0x1.ff993feb83620p0
-  },
-  { // Entry 528
-    0x1.18d9112308d5b897ba44cfc5c4437317p1,
-    -0x1.ff993feb83620p0
-  },
-  { // Entry 529
-    0x1.56fe0145cf2901975829ddc3fc786df0p2,
-    0x1.62e62a9d02416p0
-  },
-  { // Entry 530
-    -0x1.56fe0145cf2901975829ddc3fc786df0p2,
-    -0x1.62e62a9d02416p0
-  },
-  { // Entry 531
-    0x1.f4ad353aca453f62beae01cd5b13d50dp-1,
-    0x1.8c662a9d02419p-1
-  },
-  { // Entry 532
-    -0x1.f4ad353aca453f62beae01cd5b13d50dp-1,
-    -0x1.8c662a9d02419p-1
-  },
-  { // Entry 533
-    0x1.6a7e1f6407ee61397d016d691bb61d17p3,
-    -0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 534
-    -0x1.6a7e1f6407ee61397d016d691bb61d17p3,
-    0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 535
-    0x1.0d718cfc82464536bfd621be419f007cp6,
-    -0x1.95ec8b9e03d54p0
-  },
-  { // Entry 536
-    -0x1.0d718cfc82464536bfd621be419f007cp6,
-    0x1.95ec8b9e03d54p0
-  },
-  { // Entry 537
-    -0x1.11d87146c2d5a1832c24f3d87052d7ebp4,
-    -0x1.832efa2a435a9p0
-  },
-  { // Entry 538
-    0x1.11d87146c2d5a1832c24f3d87052d7ebp4,
-    0x1.832efa2a435a9p0
-  },
-  { // Entry 539
-    -0x1.e3a3729b3e86e2221fa5f04abf699e6ep2,
-    -0x1.707168b682dfep0
-  },
-  { // Entry 540
-    0x1.e3a3729b3e86e2221fa5f04abf699e6ep2,
-    0x1.707168b682dfep0
-  },
-  { // Entry 541
-    -0x1.3429e61a5d1f2e80fbd1370d4a7c2b10p2,
-    -0x1.5db3d742c2653p0
-  },
-  { // Entry 542
-    0x1.3429e61a5d1f2e80fbd1370d4a7c2b10p2,
-    0x1.5db3d742c2653p0
-  },
-  { // Entry 543
-    -0x1.c08caec5cf99725e57c32766fb084c5fp1,
-    -0x1.4af645cf01ea8p0
-  },
-  { // Entry 544
-    0x1.c08caec5cf99725e57c32766fb084c5fp1,
-    0x1.4af645cf01ea8p0
-  },
-  { // Entry 545
-    -0x1.5d603d751767ee70e9a2ff54959fa4a7p1,
-    -0x1.3838b45b416fdp0
-  },
-  { // Entry 546
-    0x1.5d603d751767ee70e9a2ff54959fa4a7p1,
-    0x1.3838b45b416fdp0
-  },
-  { // Entry 547
-    -0x1.1b48a35b1b277effabd7278b525708edp1,
-    -0x1.257b22e780f52p0
-  },
-  { // Entry 548
-    0x1.1b48a35b1b277effabd7278b525708edp1,
-    0x1.257b22e780f52p0
-  },
-  { // Entry 549
-    -0x1.d74caf9912dc7d9669b00926aa1ade11p0,
-    -0x1.12bd9173c07abp0
-  },
-  { // Entry 550
-    0x1.d74caf9912dc7d9669b00926aa1ade11p0,
-    0x1.12bd9173c07abp0
-  },
-  { // Entry 551
-    -0x1.6be702e1f6cd60bfd86ad86180d18490p0,
-    -0x1.ea5c3ed5b3850p-1
-  },
-  { // Entry 552
-    0x1.6be702e1f6cd60bfd86ad86180d18490p0,
-    0x1.ea5c3ed5b3850p-1
-  },
-  { // Entry 553
-    -0x1.4d0df1fc1d3484b027537d8117a395f4p0,
-    -0x1.d4b87dab670a0p-1
-  },
-  { // Entry 554
-    0x1.4d0df1fc1d3484b027537d8117a395f4p0,
-    0x1.d4b87dab670a0p-1
-  },
-  { // Entry 555
-    -0x1.316c8b068a7af257f1e5a51943834f3ep0,
-    -0x1.bf14bc811a8f0p-1
-  },
-  { // Entry 556
-    0x1.316c8b068a7af257f1e5a51943834f3ep0,
-    0x1.bf14bc811a8f0p-1
-  },
-  { // Entry 557
-    -0x1.1872a1aaa7e26cf417e6331617ea7dd0p0,
-    -0x1.a970fb56ce140p-1
-  },
-  { // Entry 558
-    0x1.1872a1aaa7e26cf417e6331617ea7dd0p0,
-    0x1.a970fb56ce140p-1
-  },
-  { // Entry 559
-    -0x1.01aeeed04cbb0dfacd1d00c657d08b19p0,
-    -0x1.93cd3a2c81990p-1
-  },
-  { // Entry 560
-    0x1.01aeeed04cbb0dfacd1d00c657d08b19p0,
-    0x1.93cd3a2c81990p-1
-  },
-  { // Entry 561
-    -0x1.d98e408ac2085c4e0588df10ba7fb023p-1,
-    -0x1.7e297902351e0p-1
-  },
-  { // Entry 562
-    0x1.d98e408ac2085c4e0588df10ba7fb023p-1,
-    0x1.7e297902351e0p-1
-  },
-  { // Entry 563
-    -0x1.b2e4750631c53c54f5830fd41753d427p-1,
-    -0x1.6885b7d7e8a30p-1
-  },
-  { // Entry 564
-    0x1.b2e4750631c53c54f5830fd41753d427p-1,
-    0x1.6885b7d7e8a30p-1
-  },
-  { // Entry 565
-    -0x1.8ee916392e04590ce988d82cc3959021p-1,
-    -0x1.52e1f6ad9c280p-1
-  },
-  { // Entry 566
-    0x1.8ee916392e04590ce988d82cc3959021p-1,
-    0x1.52e1f6ad9c280p-1
-  },
-  { // Entry 567
-    -0x1.6d395e495f77e709842592e226607b53p-1,
-    -0x1.3d3e35834fad0p-1
-  },
-  { // Entry 568
-    0x1.6d395e495f77e709842592e226607b53p-1,
-    0x1.3d3e35834fad0p-1
-  },
-  { // Entry 569
-    -0x1.24e3e017a098ecf4de48bceeb026743ap-1,
-    -0x1.0a0b02501c799p-1
-  },
-  { // Entry 570
-    0x1.24e3e017a098ecf4de48bceeb026743ap-1,
-    0x1.0a0b02501c799p-1
-  },
-  { // Entry 571
-    -0x1.fdbd5f0596bdc6ef8da53ee652b57cf7p-2,
-    -0x1.d8f7208e6b82cp-2
-  },
-  { // Entry 572
-    0x1.fdbd5f0596bdc6ef8da53ee652b57cf7p-2,
-    0x1.d8f7208e6b82cp-2
-  },
-  { // Entry 573
-    -0x1.b5f3d6afbe6f259af37c4e633ab5fdfap-2,
-    -0x1.9dd83c7c9e126p-2
-  },
-  { // Entry 574
-    0x1.b5f3d6afbe6f259af37c4e633ab5fdfap-2,
-    0x1.9dd83c7c9e126p-2
-  },
-  { // Entry 575
-    -0x1.71a0f98081ea98b5f30a1593e3fc6373p-2,
-    -0x1.62b9586ad0a20p-2
-  },
-  { // Entry 576
-    0x1.71a0f98081ea98b5f30a1593e3fc6373p-2,
-    0x1.62b9586ad0a20p-2
-  },
-  { // Entry 577
-    -0x1.301909a2c36e89a67528a38c77ac9e43p-2,
-    -0x1.279a74590331ap-2
-  },
-  { // Entry 578
-    0x1.301909a2c36e89a67528a38c77ac9e43p-2,
-    0x1.279a74590331ap-2
-  },
-  { // Entry 579
-    -0x1.e18e941cc7fd519ecc40548a86d2a3edp-3,
-    -0x1.d8f7208e6b829p-3
-  },
-  { // Entry 580
-    0x1.e18e941cc7fd519ecc40548a86d2a3edp-3,
-    0x1.d8f7208e6b829p-3
-  },
-  { // Entry 581
-    -0x1.6650784bbdcc02f3390262cf68bad3c6p-3,
-    -0x1.62b9586ad0a1ep-3
-  },
-  { // Entry 582
-    0x1.6650784bbdcc02f3390262cf68bad3c6p-3,
-    0x1.62b9586ad0a1ep-3
-  },
-  { // Entry 583
-    -0x1.db142468cdafc56ecfdf8b1052b09e63p-4,
-    -0x1.d8f7208e6b826p-4
-  },
-  { // Entry 584
-    0x1.db142468cdafc56ecfdf8b1052b09e63p-4,
-    0x1.d8f7208e6b826p-4
-  },
-  { // Entry 585
-    -0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
-    -0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 586
-    0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
-    0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 587
-    0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
-    0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 588
-    -0x1.d97dd6d2e53f27e0fe1f3bd2b035662ap-5,
-    -0x1.d8f7208e6b82dp-5
-  },
-  { // Entry 589
-    0x1.db142468cdb036f08783d936b19348f6p-4,
-    0x1.d8f7208e6b82dp-4
-  },
-  { // Entry 590
-    -0x1.db142468cdb036f08783d936b19348f6p-4,
-    -0x1.d8f7208e6b82dp-4
-  },
-  { // Entry 591
-    0x1.6650784bbdcc44e8be2c220e1d673ffbp-3,
-    0x1.62b9586ad0a22p-3
-  },
-  { // Entry 592
-    -0x1.6650784bbdcc44e8be2c220e1d673ffbp-3,
-    -0x1.62b9586ad0a22p-3
-  },
-  { // Entry 593
-    0x1.e18e941cc7fd9528a5585157ac65e615p-3,
-    0x1.d8f7208e6b82dp-3
-  },
-  { // Entry 594
-    -0x1.e18e941cc7fd9528a5585157ac65e615p-3,
-    -0x1.d8f7208e6b82dp-3
-  },
-  { // Entry 595
-    0x1.301909a2c36eac78ec1b4e711316d0c4p-2,
-    0x1.279a74590331cp-2
-  },
-  { // Entry 596
-    -0x1.301909a2c36eac78ec1b4e711316d0c4p-2,
-    -0x1.279a74590331cp-2
-  },
-  { // Entry 597
-    0x1.71a0f98081eabce155f310288c4245eap-2,
-    0x1.62b9586ad0a22p-2
-  },
-  { // Entry 598
-    -0x1.71a0f98081eabce155f310288c4245eap-2,
-    -0x1.62b9586ad0a22p-2
-  },
-  { // Entry 599
-    0x1.b5f3d6afbe6f4b756842b8eee5c85a31p-2,
-    0x1.9dd83c7c9e128p-2
-  },
-  { // Entry 600
-    -0x1.b5f3d6afbe6f4b756842b8eee5c85a31p-2,
-    -0x1.9dd83c7c9e128p-2
-  },
-  { // Entry 601
-    0x1.fdbd5f0596bdeedd82d5223c3c1b1925p-2,
-    0x1.d8f7208e6b82ep-2
-  },
-  { // Entry 602
-    -0x1.fdbd5f0596bdeedd82d5223c3c1b1925p-2,
-    -0x1.d8f7208e6b82ep-2
-  },
-  { // Entry 603
-    0x1.24e3e017a098ecf4de48bceeb026743ap-1,
-    0x1.0a0b02501c799p-1
-  },
-  { // Entry 604
-    -0x1.24e3e017a098ecf4de48bceeb026743ap-1,
-    -0x1.0a0b02501c799p-1
-  },
-  { // Entry 605
-    0x1.6d395e495f778678b9ea0d4808c7220ap-1,
-    0x1.3d3e35834faccp-1
-  },
-  { // Entry 606
-    -0x1.6d395e495f778678b9ea0d4808c7220ap-1,
-    -0x1.3d3e35834faccp-1
-  },
-  { // Entry 607
-    0x1.8ee916392e03f2335033a41b3b0206e4p-1,
-    0x1.52e1f6ad9c27cp-1
-  },
-  { // Entry 608
-    -0x1.8ee916392e03f2335033a41b3b0206e4p-1,
-    -0x1.52e1f6ad9c27cp-1
-  },
-  { // Entry 609
-    0x1.b2e4750631c4ce283ef8753fa1edf324p-1,
-    0x1.6885b7d7e8a2cp-1
-  },
-  { // Entry 610
-    -0x1.b2e4750631c4ce283ef8753fa1edf324p-1,
-    -0x1.6885b7d7e8a2cp-1
-  },
-  { // Entry 611
-    0x1.d98e408ac207e58e15f0185d4b10cf71p-1,
-    0x1.7e297902351dcp-1
-  },
-  { // Entry 612
-    -0x1.d98e408ac207e58e15f0185d4b10cf71p-1,
-    -0x1.7e297902351dcp-1
-  },
-  { // Entry 613
-    0x1.01aeeed04cbacd8eb6bc094664db7763p0,
-    0x1.93cd3a2c8198cp-1
-  },
-  { // Entry 614
-    -0x1.01aeeed04cbacd8eb6bc094664db7763p0,
-    -0x1.93cd3a2c8198cp-1
-  },
-  { // Entry 615
-    0x1.1872a1aaa7e2268cb946fceb83f0ea5ep0,
-    0x1.a970fb56ce13cp-1
-  },
-  { // Entry 616
-    -0x1.1872a1aaa7e2268cb946fceb83f0ea5ep0,
-    -0x1.a970fb56ce13cp-1
-  },
-  { // Entry 617
-    0x1.316c8b068a7aa4cb77bc3f39921c2c8dp0,
-    0x1.bf14bc811a8ecp-1
-  },
-  { // Entry 618
-    -0x1.316c8b068a7aa4cb77bc3f39921c2c8dp0,
-    -0x1.bf14bc811a8ecp-1
-  },
-  { // Entry 619
-    0x1.4d0df1fc1d342e867e49f1f6ddacedaap0,
-    0x1.d4b87dab6709cp-1
-  },
-  { // Entry 620
-    -0x1.4d0df1fc1d342e867e49f1f6ddacedaap0,
-    -0x1.d4b87dab6709cp-1
-  },
-  { // Entry 621
-    0x1.6be702e1f6cd0016ba1677a9cd33f139p0,
-    0x1.ea5c3ed5b384cp-1
-  },
-  { // Entry 622
-    -0x1.6be702e1f6cd0016ba1677a9cd33f139p0,
-    -0x1.ea5c3ed5b384cp-1
-  },
-  { // Entry 623
-    0x1.d74caf9912dc7d9669b00926aa1ade11p0,
-    0x1.12bd9173c07abp0
-  },
-  { // Entry 624
-    -0x1.d74caf9912dc7d9669b00926aa1ade11p0,
-    -0x1.12bd9173c07abp0
-  },
-  { // Entry 625
-    0x1.1b48a35b1b283bbc82bb044e99c4d9b1p1,
-    0x1.257b22e780f56p0
-  },
-  { // Entry 626
-    -0x1.1b48a35b1b283bbc82bb044e99c4d9b1p1,
-    -0x1.257b22e780f56p0
-  },
-  { // Entry 627
-    0x1.5d603d751768fcd8af82b38746888530p1,
-    0x1.3838b45b41701p0
-  },
-  { // Entry 628
-    -0x1.5d603d751768fcd8af82b38746888530p1,
-    -0x1.3838b45b41701p0
-  },
-  { // Entry 629
-    0x1.c08caec5cf9b1b54b045228b3eeb2469p1,
-    0x1.4af645cf01eacp0
-  },
-  { // Entry 630
-    -0x1.c08caec5cf9b1b54b045228b3eeb2469p1,
-    -0x1.4af645cf01eacp0
-  },
-  { // Entry 631
-    0x1.3429e61a5d20b175d45c2a675a386ba3p2,
-    0x1.5db3d742c2657p0
-  },
-  { // Entry 632
-    -0x1.3429e61a5d20b175d45c2a675a386ba3p2,
-    -0x1.5db3d742c2657p0
-  },
-  { // Entry 633
-    0x1.e3a3729b3e8a83d44a76e342d6b3fcbfp2,
-    0x1.707168b682e02p0
-  },
-  { // Entry 634
-    -0x1.e3a3729b3e8a83d44a76e342d6b3fcbfp2,
-    -0x1.707168b682e02p0
-  },
-  { // Entry 635
-    0x1.11d87146c2da39408e86083bf1471c8bp4,
-    0x1.832efa2a435adp0
-  },
-  { // Entry 636
-    -0x1.11d87146c2da39408e86083bf1471c8bp4,
-    -0x1.832efa2a435adp0
-  },
-  { // Entry 637
-    -0x1.0d718cfc82348ab9754f3d6b5e0ea499p6,
-    0x1.95ec8b9e03d58p0
-  },
-  { // Entry 638
-    0x1.0d718cfc82348ab9754f3d6b5e0ea499p6,
-    -0x1.95ec8b9e03d58p0
-  },
-  { // Entry 639
-    -0x1.6a7e1f6407ee61397d016d691bb61d17p3,
-    0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 640
-    0x1.6a7e1f6407ee61397d016d691bb61d17p3,
-    -0x1.a8aa1d11c44ffp0
-  },
-  { // Entry 641
-    0x1.9f39ea5bbe4749e962a807c2dc11c825p0,
-    0x1.04aff6d330942p0
-  },
-  { // Entry 642
-    -0x1.9f39ea5bbe4749e962a807c2dc11c825p0,
-    -0x1.04aff6d330942p0
-  },
-  { // Entry 643
-    0x1.9f3c4b8469f853b8507455717327c311p0,
-    0x1.04b09e98dcdb4p0
-  },
-  { // Entry 644
-    -0x1.9f3c4b8469f853b8507455717327c311p0,
-    -0x1.04b09e98dcdb4p0
-  },
-  { // Entry 645
-    0x1.9f3eacb224c2086ef391b0dfad2f1010p0,
-    0x1.04b1465e89226p0
-  },
-  { // Entry 646
-    -0x1.9f3eacb224c2086ef391b0dfad2f1010p0,
-    -0x1.04b1465e89226p0
-  },
-  { // Entry 647
-    0x1.9f410de4eeb69590caee85e886f478a8p0,
-    0x1.04b1ee2435698p0
-  },
-  { // Entry 648
-    -0x1.9f410de4eeb69590caee85e886f478a8p0,
-    -0x1.04b1ee2435698p0
-  },
-  { // Entry 649
-    0x1.9f436f1cc7e828f752819af1e2f4b6a2p0,
-    0x1.04b295e9e1b0ap0
-  },
-  { // Entry 650
-    -0x1.9f436f1cc7e828f752819af1e2f4b6a2p0,
-    -0x1.04b295e9e1b0ap0
-  },
-  { // Entry 651
-    0x1.9f45d059b068f0d205485ad648223e6dp0,
-    0x1.04b33daf8df7cp0
-  },
-  { // Entry 652
-    -0x1.9f45d059b068f0d205485ad648223e6dp0,
-    -0x1.04b33daf8df7cp0
-  },
-  { // Entry 653
-    0x1.9f48319ba84b1ba65f452cfe65e02d0ep0,
-    0x1.04b3e5753a3eep0
-  },
-  { // Entry 654
-    -0x1.9f48319ba84b1ba65f452cfe65e02d0ep0,
-    -0x1.04b3e5753a3eep0
-  },
-  { // Entry 655
-    0x1.9f4a92e2afa0d84fdf7ddbaad302f150p0,
-    0x1.04b48d3ae6860p0
-  },
-  { // Entry 656
-    -0x1.9f4a92e2afa0d84fdf7ddbaad302f150p0,
-    -0x1.04b48d3ae6860p0
-  },
-  { // Entry 657
-    0x1.9f4cf42ec67ba7ad0db2be248a870bfep0,
-    0x1.04b5350092ccfp0
-  },
-  { // Entry 658
-    -0x1.9f4cf42ec67ba7ad0db2be248a870bfep0,
-    -0x1.04b5350092ccfp0
-  },
-  { // Entry 659
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 660
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 661
-    -0.0,
-    -0.0
-  },
-  { // Entry 662
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 663
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 664
-    0x1.4d82b68cac19e6d065c5f1aa7621c08cp-1,
-    0x1.279a74590331bp-1
-  },
-  { // Entry 665
-    -0x1.4d82b68cac19e6d065c5f1aa7621c08cp-1,
-    -0x1.279a74590331bp-1
-  },
-  { // Entry 666
-    0x1.4d82b68cac19fd9a5b0c912d9093aa4ap-1,
-    0x1.279a74590331cp-1
-  },
-  { // Entry 667
-    -0x1.4d82b68cac19fd9a5b0c912d9093aa4ap-1,
-    -0x1.279a74590331cp-1
-  },
-  { // Entry 668
-    0x1.4d82b68cac1a1464505330b0abf316bfp-1,
-    0x1.279a74590331dp-1
-  },
-  { // Entry 669
-    -0x1.4d82b68cac1a1464505330b0abf316bfp-1,
-    -0x1.279a74590331dp-1
-  },
-  { // Entry 670
-    -0x1.89712eeca32be97dba2ca3f9b8379154p2,
-    0x1.bb67ae8584ca9p0
-  },
-  { // Entry 671
-    0x1.89712eeca32be97dba2ca3f9b8379154p2,
-    -0x1.bb67ae8584ca9p0
-  },
-  { // Entry 672
-    -0x1.89712eeca32b4e528d25635a4293be1dp2,
-    0x1.bb67ae8584caap0
-  },
-  { // Entry 673
-    0x1.89712eeca32b4e528d25635a4293be1dp2,
-    -0x1.bb67ae8584caap0
-  },
-  { // Entry 674
-    -0x1.89712eeca32ab327601e22bb442cdc37p2,
-    0x1.bb67ae8584cabp0
-  },
-  { // Entry 675
-    0x1.89712eeca32ab327601e22bb442cdc37p2,
-    -0x1.bb67ae8584cabp0
-  },
-  { // Entry 676
-    0x1.def49eaab37a00f90cb4454710e4e545p-2,
-    0x1.bffffffffffffp-2
-  },
-  { // Entry 677
-    -0x1.def49eaab37a00f90cb4454710e4e545p-2,
-    -0x1.bffffffffffffp-2
-  },
-  { // Entry 678
-    0x1.def49eaab37a1479231e899509ecf26cp-2,
-    0x1.cp-2
-  },
-  { // Entry 679
-    -0x1.def49eaab37a1479231e899509ecf26cp-2,
-    -0x1.cp-2
-  },
-  { // Entry 680
-    0x1.def49eaab37a27f93988cde3033df72cp-2,
-    0x1.c000000000001p-2
-  },
-  { // Entry 681
-    -0x1.def49eaab37a27f93988cde3033df72cp-2,
-    -0x1.c000000000001p-2
-  },
-  { // Entry 682
-    0x1.a46cb2be6a0b02e2dfffc95e6dcb2842p-1,
-    0x1.5ffffffffffffp-1
-  },
-  { // Entry 683
-    -0x1.a46cb2be6a0b02e2dfffc95e6dcb2842p-1,
-    -0x1.5ffffffffffffp-1
-  },
-  { // Entry 684
-    0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
-    0x1.6p-1
-  },
-  { // Entry 685
-    -0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
-    -0x1.6p-1
-  },
-  { // Entry 686
-    0x1.a46cb2be6a0b387686c50a29c829ee42p-1,
-    0x1.6000000000001p-1
-  },
-  { // Entry 687
-    -0x1.a46cb2be6a0b387686c50a29c829ee42p-1,
-    -0x1.6000000000001p-1
-  },
-  { // Entry 688
-    0x1.3d6dc956eac79a85b47456fa0c946b13p1,
-    0x1.2ffffffffffffp0
-  },
-  { // Entry 689
-    -0x1.3d6dc956eac79a85b47456fa0c946b13p1,
-    -0x1.2ffffffffffffp0
-  },
-  { // Entry 690
-    0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
-    0x1.3p0
-  },
-  { // Entry 691
-    -0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
-    -0x1.3p0
-  },
-  { // Entry 692
-    0x1.3d6dc956eac80cebf961ebee274107p1,
-    0x1.3000000000001p0
-  },
-  { // Entry 693
-    -0x1.3d6dc956eac80cebf961ebee274107p1,
-    -0x1.3000000000001p0
-  },
-  { // Entry 694
-    -0x1.b2d89a93829536cc9283cfc7e01fe2a3p-1,
-    0x1.37fffffffffffp1
-  },
-  { // Entry 695
-    0x1.b2d89a93829536cc9283cfc7e01fe2a3p-1,
-    -0x1.37fffffffffffp1
-  },
-  { // Entry 696
-    -0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
-    0x1.380p1
-  },
-  { // Entry 697
-    0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
-    -0x1.380p1
-  },
-  { // Entry 698
-    -0x1.b2d89a9382945a782e17a4278bf17736p-1,
-    0x1.3800000000001p1
-  },
-  { // Entry 699
-    0x1.b2d89a9382945a782e17a4278bf17736p-1,
-    -0x1.3800000000001p1
-  },
-  { // Entry 700
-    0x1.06f8d014bf083cd36650e9466dc086dcp-4,
-    0x1.069c8b46b3792p-4
-  },
-  { // Entry 701
-    -0x1.06f8d014bf083cd36650e9466dc086dcp-4,
-    -0x1.069c8b46b3792p-4
-  },
-  { // Entry 702
-    0x1.080f73b07051e37b23da3337c0aed353p-3,
-    0x1.069c8b46b3792p-3
-  },
-  { // Entry 703
-    -0x1.080f73b07051e37b23da3337c0aed353p-3,
-    -0x1.069c8b46b3792p-3
-  },
-  { // Entry 704
-    0x1.8ed9142fc918888e294d3ff5d0149415p-3,
-    0x1.89ead0ea0d35bp-3
-  },
-  { // Entry 705
-    -0x1.8ed9142fc918888e294d3ff5d0149415p-3,
-    -0x1.89ead0ea0d35bp-3
-  },
-  { // Entry 706
-    0x1.0c864083d1e7ca5551bce24972878127p-2,
-    0x1.069c8b46b3792p-2
-  },
-  { // Entry 707
-    -0x1.0c864083d1e7ca5551bce24972878127p-2,
-    -0x1.069c8b46b3792p-2
-  },
-  { // Entry 708
-    0x1.53fdcdfd37f04375d9ffb6aebafe7df8p-2,
-    0x1.4843ae1860576p-2
-  },
-  { // Entry 709
-    -0x1.53fdcdfd37f04375d9ffb6aebafe7df8p-2,
-    -0x1.4843ae1860576p-2
-  },
-  { // Entry 710
-    0x1.9e9257e6b62a0a8de5650c837f7f6227p-2,
-    0x1.89ead0ea0d35ap-2
-  },
-  { // Entry 711
-    -0x1.9e9257e6b62a0a8de5650c837f7f6227p-2,
-    -0x1.89ead0ea0d35ap-2
-  },
-  { // Entry 712
-    0x1.ed21e59972b07c7053f4f35dd5502493p-2,
-    0x1.cb91f3bbba13ep-2
-  },
-  { // Entry 713
-    -0x1.ed21e59972b07c7053f4f35dd5502493p-2,
-    -0x1.cb91f3bbba13ep-2
-  },
-  { // Entry 714
-    0x1.205a6009d5e3dde25d6deb7d521ff140p-1,
-    0x1.069c8b46b3791p-1
-  },
-  { // Entry 715
-    -0x1.205a6009d5e3dde25d6deb7d521ff140p-1,
-    -0x1.069c8b46b3791p-1
-  },
-  { // Entry 716
-    0x1.4d466accad48dd958ab168f5cfc6c99cp-1,
-    0x1.27701caf89e83p-1
-  },
-  { // Entry 717
-    -0x1.4d466accad48dd958ab168f5cfc6c99cp-1,
-    -0x1.27701caf89e83p-1
-  },
-  { // Entry 718
-    0x1.7e1d936f4d6152fb74809595717fa06dp-1,
-    0x1.4843ae1860575p-1
-  },
-  { // Entry 719
-    -0x1.7e1d936f4d6152fb74809595717fa06dp-1,
-    -0x1.4843ae1860575p-1
-  },
-  { // Entry 720
-    0x1.b3df386f18227ebcee905fdc51cdcbe2p-1,
-    0x1.69173f8136c67p-1
-  },
-  { // Entry 721
-    -0x1.b3df386f18227ebcee905fdc51cdcbe2p-1,
-    -0x1.69173f8136c67p-1
-  },
-  { // Entry 722
-    0x1.efd82742d778c18a8c969be0cf0902b3p-1,
-    0x1.89ead0ea0d359p-1
-  },
-  { // Entry 723
-    -0x1.efd82742d778c18a8c969be0cf0902b3p-1,
-    -0x1.89ead0ea0d359p-1
-  },
-  { // Entry 724
-    0x1.19e26b5ecd5c040a1d80c1583f78f7d7p0,
-    0x1.aabe6252e3a4bp-1
-  },
-  { // Entry 725
-    -0x1.19e26b5ecd5c040a1d80c1583f78f7d7p0,
-    -0x1.aabe6252e3a4bp-1
-  },
-  { // Entry 726
-    0x1.41038b70be0fa1478f98a2e9f266550ap0,
-    0x1.cb91f3bbba13dp-1
-  },
-  { // Entry 727
-    -0x1.41038b70be0fa1478f98a2e9f266550ap0,
-    -0x1.cb91f3bbba13dp-1
-  },
-  { // Entry 728
-    0x1.6efec8c1e493b517efe5eb92464fdf42p0,
-    0x1.ec6585249082fp-1
-  },
-  { // Entry 729
-    -0x1.6efec8c1e493b517efe5eb92464fdf42p0,
-    -0x1.ec6585249082fp-1
-  },
-  { // Entry 730
-    0x1.a64c7c9d653462d8ded3e658fe4efbcbp0,
-    0x1.069c8b46b3791p0
-  },
-  { // Entry 731
-    -0x1.a64c7c9d653462d8ded3e658fe4efbcbp0,
-    -0x1.069c8b46b3791p0
-  },
-  { // Entry 732
-    0x1.eab43e0e5e87c26fd432e06301e19e15p0,
-    0x1.170653fb1eb0ap0
-  },
-  { // Entry 733
-    -0x1.eab43e0e5e87c26fd432e06301e19e15p0,
-    -0x1.170653fb1eb0ap0
-  },
-  { // Entry 734
-    0x1.21277b97c01376e361988250b56364cfp1,
-    0x1.27701caf89e83p0
-  },
-  { // Entry 735
-    -0x1.21277b97c01376e361988250b56364cfp1,
-    -0x1.27701caf89e83p0
-  },
-  { // Entry 736
-    0x1.5bd13dda077cce249db2794d69407504p1,
-    0x1.37d9e563f51fcp0
-  },
-  { // Entry 737
-    -0x1.5bd13dda077cce249db2794d69407504p1,
-    -0x1.37d9e563f51fcp0
-  },
-  { // Entry 738
-    0x1.af4643e9371f88e78c24d83bd6b8e23ep1,
-    0x1.4843ae1860575p0
-  },
-  { // Entry 739
-    -0x1.af4643e9371f88e78c24d83bd6b8e23ep1,
-    -0x1.4843ae1860575p0
-  },
-  { // Entry 740
-    0x1.1866fe845e759d14da478c6cf6f2be65p2,
-    0x1.58ad76cccb8eep0
-  },
-  { // Entry 741
-    -0x1.1866fe845e759d14da478c6cf6f2be65p2,
-    -0x1.58ad76cccb8eep0
-  },
-  { // Entry 742
-    0x1.8bdcd54bd5980b3a80cefc914c481475p2,
-    0x1.69173f8136c67p0
-  },
-  { // Entry 743
-    -0x1.8bdcd54bd5980b3a80cefc914c481475p2,
-    -0x1.69173f8136c67p0
-  },
-  { // Entry 744
-    0x1.4bb6a64e0625b974cded615056ffd61cp3,
-    0x1.79810835a1fe0p0
-  },
-  { // Entry 745
-    -0x1.4bb6a64e0625b974cded615056ffd61cp3,
-    -0x1.79810835a1fe0p0
-  },
-  { // Entry 746
-    0x1.f2f05cfb656a39f6f2a90f7911b24051p4,
-    0x1.89ead0ea0d359p0
-  },
-  { // Entry 747
-    -0x1.f2f05cfb656a39f6f2a90f7911b24051p4,
-    -0x1.89ead0ea0d359p0
-  },
-  { // Entry 748
-    -0x1.f2f05cfb657f55f2bc6d204377a68543p4,
-    0x1.9a54999e786d2p0
-  },
-  { // Entry 749
-    0x1.f2f05cfb657f55f2bc6d204377a68543p4,
-    -0x1.9a54999e786d2p0
-  },
-  { // Entry 750
-    -0x1.4bb6a64e062a6da35870cfb33595fbe6p3,
-    0x1.aabe6252e3a4bp0
-  },
-  { // Entry 751
-    0x1.4bb6a64e062a6da35870cfb33595fbe6p3,
-    -0x1.aabe6252e3a4bp0
-  },
-  { // Entry 752
-    -0x1.8bdcd54bd59b73028e5f27649ca67cbap2,
-    0x1.bb282b074edc4p0
-  },
-  { // Entry 753
-    0x1.8bdcd54bd59b73028e5f27649ca67cbap2,
-    -0x1.bb282b074edc4p0
-  },
-  { // Entry 754
-    -0x1.1866fe845e775d8c8f8bf9165647f6cbp2,
-    0x1.cb91f3bbba13dp0
-  },
-  { // Entry 755
-    0x1.1866fe845e775d8c8f8bf9165647f6cbp2,
-    -0x1.cb91f3bbba13dp0
-  },
-  { // Entry 756
-    -0x1.af4643e93721ad8095dd27f0827e13e0p1,
-    0x1.dbfbbc70254b6p0
-  },
-  { // Entry 757
-    0x1.af4643e93721ad8095dd27f0827e13e0p1,
-    -0x1.dbfbbc70254b6p0
-  },
-  { // Entry 758
-    -0x1.5bd13dda077e427d0c9dc6c0e5d3b1b5p1,
-    0x1.ec6585249082fp0
-  },
-  { // Entry 759
-    0x1.5bd13dda077e427d0c9dc6c0e5d3b1b5p1,
-    -0x1.ec6585249082fp0
-  },
-  { // Entry 760
-    -0x1.21277b97c01485f17bacdb804375ebcdp1,
-    0x1.fccf4dd8fbba8p0
-  },
-  { // Entry 761
-    0x1.21277b97c01485f17bacdb804375ebcdp1,
-    -0x1.fccf4dd8fbba8p0
-  },
-  { // Entry 762
-    -0x1.eab43e0e5e8916d4c08349abe9e2abd3p0,
-    0x1.069c8b46b3791p1
-  },
-  { // Entry 763
-    0x1.eab43e0e5e8916d4c08349abe9e2abd3p0,
-    -0x1.069c8b46b3791p1
-  },
-  { // Entry 764
-    -0x1.a64c7c9d6535364d605bb9e5315072ffp0,
-    0x1.0ed16fa0e914ep1
-  },
-  { // Entry 765
-    0x1.a64c7c9d6535364d605bb9e5315072ffp0,
-    -0x1.0ed16fa0e914ep1
-  },
-  { // Entry 766
-    -0x1.6efec8c1e4944a425541219364a15078p0,
-    0x1.170653fb1eb0bp1
-  },
-  { // Entry 767
-    0x1.6efec8c1e4944a425541219364a15078p0,
-    -0x1.170653fb1eb0bp1
-  },
-  { // Entry 768
-    -0x1.41038b70be0ff5b7c4d8f06b0d4cf525p0,
-    0x1.1f3b3855544c8p1
-  },
-  { // Entry 769
-    0x1.41038b70be0ff5b7c4d8f06b0d4cf525p0,
-    -0x1.1f3b3855544c8p1
-  },
-  { // Entry 770
-    -0x1.19e26b5ecd5c294348ba17fec5454792p0,
-    0x1.27701caf89e85p1
-  },
-  { // Entry 771
-    0x1.19e26b5ecd5c294348ba17fec5454792p0,
-    -0x1.27701caf89e85p1
-  },
-  { // Entry 772
-    -0x1.efd82742d778c4bca07e1e86cbc604b0p-1,
-    0x1.2fa50109bf842p1
-  },
-  { // Entry 773
-    0x1.efd82742d778c4bca07e1e86cbc604b0p-1,
-    -0x1.2fa50109bf842p1
-  },
-  { // Entry 774
-    -0x1.b3df386f18224a6403e55c16b36ef17fp-1,
-    0x1.37d9e563f51ffp1
-  },
-  { // Entry 775
-    0x1.b3df386f18224a6403e55c16b36ef17fp-1,
-    -0x1.37d9e563f51ffp1
-  },
-  { // Entry 776
-    -0x1.7e1d936f4d60f1e6f88b4a24df9c65f4p-1,
-    0x1.400ec9be2abbcp1
-  },
-  { // Entry 777
-    0x1.7e1d936f4d60f1e6f88b4a24df9c65f4p-1,
-    -0x1.400ec9be2abbcp1
-  },
-  { // Entry 778
-    -0x1.4d466accad48574188835130e68e9badp-1,
-    0x1.4843ae1860579p1
-  },
-  { // Entry 779
-    0x1.4d466accad48574188835130e68e9badp-1,
-    -0x1.4843ae1860579p1
-  },
-  { // Entry 780
-    -0x1.205a6009d5e33774fa98f9f616acc80fp-1,
-    0x1.5078927295f36p1
-  },
-  { // Entry 781
-    0x1.205a6009d5e33774fa98f9f616acc80fp-1,
-    -0x1.5078927295f36p1
-  },
-  { // Entry 782
-    -0x1.ed21e59972aef64a06e553f18d646093p-2,
-    0x1.58ad76cccb8f3p1
-  },
-  { // Entry 783
-    0x1.ed21e59972aef64a06e553f18d646093p-2,
-    -0x1.58ad76cccb8f3p1
-  },
-  { // Entry 784
-    -0x1.9e9257e6b6284f73cd1e2eae3220f313p-2,
-    0x1.60e25b27012b0p1
-  },
-  { // Entry 785
-    0x1.9e9257e6b6284f73cd1e2eae3220f313p-2,
-    -0x1.60e25b27012b0p1
-  },
-  { // Entry 786
-    -0x1.53fdcdfd37ee55bc1cd1604b6ab13b5fp-2,
-    0x1.69173f8136c6dp1
-  },
-  { // Entry 787
-    0x1.53fdcdfd37ee55bc1cd1604b6ab13b5fp-2,
-    -0x1.69173f8136c6dp1
-  },
-  { // Entry 788
-    -0x1.0c864083d1e5aaa6815a85e25c662e97p-2,
-    0x1.714c23db6c62ap1
-  },
-  { // Entry 789
-    0x1.0c864083d1e5aaa6815a85e25c662e97p-2,
-    -0x1.714c23db6c62ap1
-  },
-  { // Entry 790
-    -0x1.8ed9142fc913f450dccdbdd27ed11a40p-3,
-    0x1.79810835a1fe7p1
-  },
-  { // Entry 791
-    0x1.8ed9142fc913f450dccdbdd27ed11a40p-3,
-    -0x1.79810835a1fe7p1
-  },
-  { // Entry 792
-    -0x1.080f73b0704cf570818a65d1a12d5be1p-3,
-    0x1.81b5ec8fd79a4p1
-  },
-  { // Entry 793
-    0x1.080f73b0704cf570818a65d1a12d5be1p-3,
-    -0x1.81b5ec8fd79a4p1
-  },
-  { // Entry 794
-    -0x1.06f8d014bf09ab85f2a19d80da5a2c0bp-4,
-    0x1.89ead0ea0d35bp1
-  },
-  { // Entry 795
-    0x1.06f8d014bf09ab85f2a19d80da5a2c0bp-4,
-    -0x1.89ead0ea0d35bp1
-  },
-  { // Entry 796
-    0x1.0c864083d1e7f3955b12071e0644418bp-2,
-    -0x1.81b5ec8fd799fp2
-  },
-  { // Entry 797
-    -0x1.0c864083d1e7f3955b12071e0644418bp-2,
-    0x1.81b5ec8fd799fp2
-  },
-  { // Entry 798
-    0x1.205a6009d5e3f74da3a372ac15721ef6p-1,
-    -0x1.714c23db6c626p2
-  },
-  { // Entry 799
-    -0x1.205a6009d5e3f74da3a372ac15721ef6p-1,
-    0x1.714c23db6c626p2
-  },
-  { // Entry 800
-    0x1.efd82742d778e6f04adefc3d21f8be96p-1,
-    -0x1.60e25b27012adp2
-  },
-  { // Entry 801
-    -0x1.efd82742d778e6f04adefc3d21f8be96p-1,
-    0x1.60e25b27012adp2
-  },
-  { // Entry 802
-    0x1.a64c7c9d653468fbc5260dca501ddb81p0,
-    -0x1.5078927295f34p2
-  },
-  { // Entry 803
-    -0x1.a64c7c9d653468fbc5260dca501ddb81p0,
-    0x1.5078927295f34p2
-  },
-  { // Entry 804
-    0x1.af4643e9371f9316d3254b8619eda484p1,
-    -0x1.400ec9be2abbbp2
-  },
-  { // Entry 805
-    -0x1.af4643e9371f9316d3254b8619eda484p1,
-    0x1.400ec9be2abbbp2
-  },
-  { // Entry 806
-    0x1.f2f05cfb656a9e4a085b027d18603230p4,
-    -0x1.2fa50109bf842p2
-  },
-  { // Entry 807
-    -0x1.f2f05cfb656a9e4a085b027d18603230p4,
-    0x1.2fa50109bf842p2
-  },
-  { // Entry 808
-    -0x1.1866fe845e7755392a0adff56a688eaap2,
-    -0x1.1f3b3855544c9p2
-  },
-  { // Entry 809
-    0x1.1866fe845e7755392a0adff56a688eaap2,
-    0x1.1f3b3855544c9p2
-  },
-  { // Entry 810
-    -0x1.eab43e0e5e8959e8f5ac6c4f9d9a833bp0,
-    -0x1.0ed16fa0e9150p2
-  },
-  { // Entry 811
-    0x1.eab43e0e5e8959e8f5ac6c4f9d9a833bp0,
-    0x1.0ed16fa0e9150p2
-  },
-  { // Entry 812
-    -0x1.19e26b5ecd5cd69c30c3dc5d9ffde986p0,
-    -0x1.fccf4dd8fbbaep1
-  },
-  { // Entry 813
-    0x1.19e26b5ecd5cd69c30c3dc5d9ffde986p0,
-    0x1.fccf4dd8fbbaep1
-  },
-  { // Entry 814
-    -0x1.4d466accad49ec96935caa2a35e439f0p-1,
-    -0x1.dbfbbc70254bcp1
-  },
-  { // Entry 815
-    0x1.4d466accad49ec96935caa2a35e439f0p-1,
-    0x1.dbfbbc70254bcp1
-  },
-  { // Entry 816
-    -0x1.53fdcdfd37f1ea216e815758ed02a557p-2,
-    -0x1.bb282b074edcap1
-  },
-  { // Entry 817
-    0x1.53fdcdfd37f1ea216e815758ed02a557p-2,
-    0x1.bb282b074edcap1
-  },
-  { // Entry 818
-    -0x1.06f8d014bf0e964e634f37bcdbf64491p-4,
-    -0x1.9a54999e786d8p1
-  },
-  { // Entry 819
-    0x1.06f8d014bf0e964e634f37bcdbf64491p-4,
-    0x1.9a54999e786d8p1
-  },
-  { // Entry 820
-    0x1.8ed9142fc914fe067b991d11d70859b8p-3,
-    -0x1.79810835a1fe6p1
-  },
-  { // Entry 821
-    -0x1.8ed9142fc914fe067b991d11d70859b8p-3,
-    0x1.79810835a1fe6p1
-  },
-  { // Entry 822
-    0x1.ed21e59972ae589aaa4ee3d80c3b7defp-2,
-    -0x1.58ad76cccb8f4p1
-  },
-  { // Entry 823
-    -0x1.ed21e59972ae589aaa4ee3d80c3b7defp-2,
-    0x1.58ad76cccb8f4p1
-  },
-  { // Entry 824
-    0x1.b3df386f1820ff3df290f036db46f13bp-1,
-    -0x1.37d9e563f5202p1
-  },
-  { // Entry 825
-    -0x1.b3df386f1820ff3df290f036db46f13bp-1,
-    0x1.37d9e563f5202p1
-  },
-  { // Entry 826
-    0x1.6efec8c1e492616fe2fec0b764fa6eb4p0,
-    -0x1.170653fb1eb10p1
-  },
-  { // Entry 827
-    -0x1.6efec8c1e492616fe2fec0b764fa6eb4p0,
-    0x1.170653fb1eb10p1
-  },
-  { // Entry 828
-    0x1.5bd13dda077ada91927ab73cedaa828dp1,
-    -0x1.ec6585249083cp0
-  },
-  { // Entry 829
-    -0x1.5bd13dda077ada91927ab73cedaa828dp1,
-    0x1.ec6585249083cp0
-  },
-  { // Entry 830
-    0x1.4bb6a64e061f69cf7409931383cc80a1p3,
-    -0x1.aabe6252e3a58p0
-  },
-  { // Entry 831
-    -0x1.4bb6a64e061f69cf7409931383cc80a1p3,
-    0x1.aabe6252e3a58p0
-  },
-  { // Entry 832
-    -0x1.8bdcd54bd5a004acf922c49a8d5e28a2p2,
-    -0x1.69173f8136c74p0
-  },
-  { // Entry 833
-    0x1.8bdcd54bd5a004acf922c49a8d5e28a2p2,
-    0x1.69173f8136c74p0
-  },
-  { // Entry 834
-    -0x1.21277b97c015f19de7b238252e56e63fp1,
-    -0x1.27701caf89e90p0
-  },
-  { // Entry 835
-    0x1.21277b97c015f19de7b238252e56e63fp1,
-    0x1.27701caf89e90p0
-  },
-  { // Entry 836
-    -0x1.41038b70be11b85798a271ac3d209ea7p0,
-    -0x1.cb91f3bbba157p-1
-  },
-  { // Entry 837
-    0x1.41038b70be11b85798a271ac3d209ea7p0,
-    0x1.cb91f3bbba157p-1
-  },
-  { // Entry 838
-    -0x1.7e1d936f4d63c1c7806657d8b838836ep-1,
-    -0x1.4843ae186058ep-1
-  },
-  { // Entry 839
-    0x1.7e1d936f4d63c1c7806657d8b838836ep-1,
-    0x1.4843ae186058ep-1
-  },
-  { // Entry 840
-    -0x1.9e9257e6b62d886f74e348bdc142599cp-2,
-    -0x1.89ead0ea0d38ap-2
-  },
-  { // Entry 841
-    0x1.9e9257e6b62d886f74e348bdc142599cp-2,
-    0x1.89ead0ea0d38ap-2
-  },
-  { // Entry 842
-    -0x1.080f73b07057dc7bf0df6de1d3ae1a3bp-3,
-    -0x1.069c8b46b37f0p-3
-  },
-  { // Entry 843
-    0x1.080f73b07057dc7bf0df6de1d3ae1a3bp-3,
-    0x1.069c8b46b37f0p-3
-  },
-  { // Entry 844
-    0x1.080f73b0704bea7a56d4f88ecf3d5cd3p-3,
-    0x1.069c8b46b3734p-3
-  },
-  { // Entry 845
-    -0x1.080f73b0704bea7a56d4f88ecf3d5cd3p-3,
-    -0x1.069c8b46b3734p-3
-  },
-  { // Entry 846
-    0x1.9e9257e6b626b1eb1136bd7853311543p-2,
-    0x1.89ead0ea0d32cp-2
-  },
-  { // Entry 847
-    -0x1.9e9257e6b626b1eb1136bd7853311543p-2,
-    -0x1.89ead0ea0d32cp-2
-  },
-  { // Entry 848
-    0x1.7e1d936f4d5f2eebbbf3d62963106afap-1,
-    0x1.4843ae186055fp-1
-  },
-  { // Entry 849
-    -0x1.7e1d936f4d5f2eebbbf3d62963106afap-1,
-    -0x1.4843ae186055fp-1
-  },
-  { // Entry 850
-    0x1.41038b70be0df11d1224683c6f865584p0,
-    0x1.cb91f3bbba128p-1
-  },
-  { // Entry 851
-    -0x1.41038b70be0df11d1224683c6f865584p0,
-    -0x1.cb91f3bbba128p-1
-  },
-  { // Entry 852
-    0x1.21277b97c0115dcf6647ad68f4cb4ad0p1,
-    0x1.27701caf89e78p0
-  },
-  { // Entry 853
-    -0x1.21277b97c0115dcf6647ad68f4cb4ad0p1,
-    -0x1.27701caf89e78p0
-  },
-  { // Entry 854
-    0x1.8bdcd54bd5914bd9a4d6dd659c2f6606p2,
-    0x1.69173f8136c5cp0
-  },
-  { // Entry 855
-    -0x1.8bdcd54bd5914bd9a4d6dd659c2f6606p2,
-    -0x1.69173f8136c5cp0
-  },
-  { // Entry 856
-    -0x1.4bb6a64e0633bfa56879660655c38767p3,
-    0x1.aabe6252e3a40p0
-  },
-  { // Entry 857
-    0x1.4bb6a64e0633bfa56879660655c38767p3,
-    -0x1.aabe6252e3a40p0
-  },
-  { // Entry 858
-    -0x1.5bd13dda078124444c940f013be7c402p1,
-    0x1.ec65852490824p0
-  },
-  { // Entry 859
-    0x1.5bd13dda078124444c940f013be7c402p1,
-    -0x1.ec65852490824p0
-  },
-  { // Entry 860
-    -0x1.6efec8c1e496f69c286adc66bd586eafp0,
-    0x1.170653fb1eb04p1
-  },
-  { // Entry 861
-    0x1.6efec8c1e496f69c286adc66bd586eafp0,
-    -0x1.170653fb1eb04p1
-  },
-  { // Entry 862
-    -0x1.b3df386f18262bd637e29fbb30806b2cp-1,
-    0x1.37d9e563f51f6p1
-  },
-  { // Entry 863
-    0x1.b3df386f18262bd637e29fbb30806b2cp-1,
-    -0x1.37d9e563f51f6p1
-  },
-  { // Entry 864
-    -0x1.ed21e59972b5bcd3015c250eff1c69b9p-2,
-    0x1.58ad76cccb8e8p1
-  },
-  { // Entry 865
-    0x1.ed21e59972b5bcd3015c250eff1c69b9p-2,
-    -0x1.58ad76cccb8e8p1
-  },
-  { // Entry 866
-    -0x1.8ed9142fc9217289ed21940deaafe878p-3,
-    0x1.79810835a1fdap1
-  },
-  { // Entry 867
-    0x1.8ed9142fc9217289ed21940deaafe878p-3,
-    -0x1.79810835a1fdap1
-  },
-  { // Entry 868
-    0x1.06f8d014bef67cfb2db560f5a414c88bp-4,
-    0x1.9a54999e786ccp1
-  },
-  { // Entry 869
-    -0x1.06f8d014bef67cfb2db560f5a414c88bp-4,
-    -0x1.9a54999e786ccp1
-  },
-  { // Entry 870
-    0x1.53fdcdfd37eb40cd9e504df431b502d0p-2,
-    0x1.bb282b074edbep1
-  },
-  { // Entry 871
-    -0x1.53fdcdfd37eb40cd9e504df431b502d0p-2,
-    -0x1.bb282b074edbep1
-  },
-  { // Entry 872
-    0x1.4d466accad45a72e5f735eb2f6adf9ffp-1,
-    0x1.dbfbbc70254b0p1
-  },
-  { // Entry 873
-    -0x1.4d466accad45a72e5f735eb2f6adf9ffp-1,
-    -0x1.dbfbbc70254b0p1
-  },
-  { // Entry 874
-    0x1.19e26b5ecd598507ecd00d81ec775683p0,
-    0x1.fccf4dd8fbba2p1
-  },
-  { // Entry 875
-    -0x1.19e26b5ecd598507ecd00d81ec775683p0,
-    -0x1.fccf4dd8fbba2p1
-  },
-  { // Entry 876
-    0x1.eab43e0e5e8257073afaecab386154a1p0,
-    0x1.0ed16fa0e914ap2
-  },
-  { // Entry 877
-    -0x1.eab43e0e5e8257073afaecab386154a1p0,
-    -0x1.0ed16fa0e914ap2
-  },
-  { // Entry 878
-    0x1.1866fe845e6fc27064e2b123a7724e75p2,
-    0x1.1f3b3855544c3p2
-  },
-  { // Entry 879
-    -0x1.1866fe845e6fc27064e2b123a7724e75p2,
-    -0x1.1f3b3855544c3p2
-  },
-  { // Entry 880
-    -0x1.f2f05cfb65c5e06b1ae88c48b4b755cep4,
-    0x1.2fa50109bf83cp2
-  },
-  { // Entry 881
-    0x1.f2f05cfb65c5e06b1ae88c48b4b755cep4,
-    -0x1.2fa50109bf83cp2
-  },
-  { // Entry 882
-    -0x1.af4643e93728d6bfd702c33405dcce7dp1,
-    0x1.400ec9be2abb5p2
-  },
-  { // Entry 883
-    0x1.af4643e93728d6bfd702c33405dcce7dp1,
-    -0x1.400ec9be2abb5p2
-  },
-  { // Entry 884
-    -0x1.a64c7c9d6539fdec27afc380b9f752c0p0,
-    0x1.5078927295f2ep2
-  },
-  { // Entry 885
-    0x1.a64c7c9d6539fdec27afc380b9f752c0p0,
-    -0x1.5078927295f2ep2
-  },
-  { // Entry 886
-    -0x1.efd82742d77eb73c81a00f568621f63cp-1,
-    0x1.60e25b27012a7p2
-  },
-  { // Entry 887
-    0x1.efd82742d77eb73c81a00f568621f63cp-1,
-    -0x1.60e25b27012a7p2
-  },
-  { // Entry 888
-    -0x1.205a6009d5e7eae63da1cbd57129eeffp-1,
-    0x1.714c23db6c620p2
-  },
-  { // Entry 889
-    0x1.205a6009d5e7eae63da1cbd57129eeffp-1,
-    -0x1.714c23db6c620p2
-  },
-  { // Entry 890
-    -0x1.0c864083d1ee5d34de2060c8629d4951p-2,
-    0x1.81b5ec8fd7999p2
-  },
-  { // Entry 891
-    0x1.0c864083d1ee5d34de2060c8629d4951p-2,
-    -0x1.81b5ec8fd7999p2
-  },
-  { // Entry 892
-    0x1.f09b63aa81fc36da509c3e410607ffe7p-5,
-    0x1.effffffffffffp-5
-  },
-  { // Entry 893
-    -0x1.f09b63aa81fc36da509c3e410607ffe7p-5,
-    -0x1.effffffffffffp-5
-  },
-  { // Entry 894
-    0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
-    0x1.fp-5
-  },
-  { // Entry 895
-    -0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
-    -0x1.fp-5
-  },
-  { // Entry 896
-    0x1.f09b63aa81fc56f86b7042757dca62e8p-5,
-    0x1.f000000000001p-5
-  },
-  { // Entry 897
-    -0x1.f09b63aa81fc56f86b7042757dca62e8p-5,
-    -0x1.f000000000001p-5
-  },
-  { // Entry 898
-    0x1.fa8f21c8a33aecf4af77754ef90a67b8p-4,
-    0x1.f7fffffffffffp-4
-  },
-  { // Entry 899
-    -0x1.fa8f21c8a33aecf4af77754ef90a67b8p-4,
-    -0x1.f7fffffffffffp-4
-  },
-  { // Entry 900
-    0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
-    0x1.f80p-4
-  },
-  { // Entry 901
-    -0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
-    -0x1.f80p-4
-  },
-  { // Entry 902
-    0x1.fa8f21c8a33b0d71fabba7cbf526ed07p-4,
-    0x1.f800000000001p-4
-  },
-  { // Entry 903
-    -0x1.fa8f21c8a33b0d71fabba7cbf526ed07p-4,
-    -0x1.f800000000001p-4
-  },
-  { // Entry 904
-    0x1.4ef06cb4f0a869ef00df8ec5582dfa31p-3,
-    0x1.4bfffffffffffp-3
-  },
-  { // Entry 905
-    -0x1.4ef06cb4f0a869ef00df8ec5582dfa31p-3,
-    -0x1.4bfffffffffffp-3
-  },
-  { // Entry 906
-    0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
-    0x1.4c0p-3
-  },
-  { // Entry 907
-    -0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
-    -0x1.4c0p-3
-  },
-  { // Entry 908
-    0x1.4ef06cb4f0a88aca1cfe48d80a310a65p-3,
-    0x1.4c00000000001p-3
-  },
-  { // Entry 909
-    -0x1.4ef06cb4f0a88aca1cfe48d80a310a65p-3,
-    -0x1.4c00000000001p-3
-  },
-  { // Entry 910
-    0x1.3cc2a44e2999668cb092a09b73b2de50p-2,
-    0x1.3333333333332p-2
-  },
-  { // Entry 911
-    -0x1.3cc2a44e2999668cb092a09b73b2de50p-2,
-    -0x1.3333333333332p-2
-  },
-  { // Entry 912
-    0x1.3cc2a44e29997814a1ac3f0211c7641fp-2,
-    0x1.3333333333333p-2
-  },
-  { // Entry 913
-    -0x1.3cc2a44e29997814a1ac3f0211c7641fp-2,
-    -0x1.3333333333333p-2
-  },
-  { // Entry 914
-    0x1.3cc2a44e2999899c92c5dd68b0074c31p-2,
-    0x1.3333333333334p-2
-  },
-  { // Entry 915
-    -0x1.3cc2a44e2999899c92c5dd68b0074c31p-2,
-    -0x1.3333333333334p-2
-  },
-  { // Entry 916
-    0x1.9943711dc2ce83d21cdb285aced817adp-1,
-    0x1.594317acc4ef8p-1
-  },
-  { // Entry 917
-    -0x1.9943711dc2ce83d21cdb285aced817adp-1,
-    -0x1.594317acc4ef8p-1
-  },
-  { // Entry 918
-    0x1.9943711dc2ce9e0b3f1ffe5aec0ac20dp-1,
-    0x1.594317acc4ef9p-1
-  },
-  { // Entry 919
-    -0x1.9943711dc2ce9e0b3f1ffe5aec0ac20dp-1,
-    -0x1.594317acc4ef9p-1
-  },
-  { // Entry 920
-    0x1.9943711dc2ceb8446164d45b0a8ccdeep-1,
-    0x1.594317acc4efap-1
-  },
-  { // Entry 921
-    -0x1.9943711dc2ceb8446164d45b0a8ccdeep-1,
-    -0x1.594317acc4efap-1
-  },
-  { // Entry 922
-    0x1.fbc511df5917d57d231d7ad434da5f94p-1,
-    0x1.8ffffffffffffp-1
-  },
-  { // Entry 923
-    -0x1.fbc511df5917d57d231d7ad434da5f94p-1,
-    -0x1.8ffffffffffffp-1
-  },
-  { // Entry 924
-    0x1.fbc511df5917f539bbcf778bc1a22249p-1,
-    0x1.9p-1
-  },
-  { // Entry 925
-    -0x1.fbc511df5917f539bbcf778bc1a22249p-1,
-    -0x1.9p-1
-  },
-  { // Entry 926
-    0x1.fbc511df591814f65481744350617c85p-1,
-    0x1.9000000000001p-1
-  },
-  { // Entry 927
-    -0x1.fbc511df591814f65481744350617c85p-1,
-    -0x1.9000000000001p-1
-  },
-  { // Entry 928
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 929
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 930
-    -0.0,
-    -0.0
-  },
-  { // Entry 931
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 932
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 933
-    0x1.927278a3b1160bbf8e0bb309da4247c5p-5,
-    0x1.921fb54442d17p-5
-  },
-  { // Entry 934
-    -0x1.927278a3b1160bbf8e0bb309da4247c5p-5,
-    -0x1.921fb54442d17p-5
-  },
-  { // Entry 935
-    0x1.927278a3b1161bc970ba8b50e575f97fp-5,
-    0x1.921fb54442d18p-5
-  },
-  { // Entry 936
-    -0x1.927278a3b1161bc970ba8b50e575f97fp-5,
-    -0x1.921fb54442d18p-5
-  },
-  { // Entry 937
-    0x1.927278a3b1162bd353696397f0aa74eep-5,
-    0x1.921fb54442d19p-5
-  },
-  { // Entry 938
-    -0x1.927278a3b1162bd353696397f0aa74eep-5,
-    -0x1.921fb54442d19p-5
-  },
-  { // Entry 939
-    0x1.936bb8c5b2da118306fa9b5d6d8ed2c1p-4,
-    0x1.921fb54442d17p-4
-  },
-  { // Entry 940
-    -0x1.936bb8c5b2da118306fa9b5d6d8ed2c1p-4,
-    -0x1.921fb54442d17p-4
-  },
-  { // Entry 941
-    0x1.936bb8c5b2da21aac2bfec84293e5d4dp-4,
-    0x1.921fb54442d18p-4
-  },
-  { // Entry 942
-    -0x1.936bb8c5b2da21aac2bfec84293e5d4dp-4,
-    -0x1.921fb54442d18p-4
-  },
-  { // Entry 943
-    0x1.936bb8c5b2da31d27e853daae4f11684p-4,
-    0x1.921fb54442d19p-4
-  },
-  { // Entry 944
-    -0x1.936bb8c5b2da31d27e853daae4f11684p-4,
-    -0x1.921fb54442d19p-4
-  },
-  { // Entry 945
-    0x1.975f5e0553156b438ca7d752d37d0873p-3,
-    0x1.921fb54442d17p-3
-  },
-  { // Entry 946
-    -0x1.975f5e0553156b438ca7d752d37d0873p-3,
-    -0x1.921fb54442d17p-3
-  },
-  { // Entry 947
-    0x1.975f5e0553157be59cbff648fdef2c08p-3,
-    0x1.921fb54442d18p-3
-  },
-  { // Entry 948
-    -0x1.975f5e0553157be59cbff648fdef2c08p-3,
-    -0x1.921fb54442d18p-3
-  },
-  { // Entry 949
-    0x1.975f5e0553158c87acd8153f286e8b8ap-3,
-    0x1.921fb54442d19p-3
-  },
-  { // Entry 950
-    -0x1.975f5e0553158c87acd8153f286e8b8ap-3,
-    -0x1.921fb54442d19p-3
-  },
-  { // Entry 951
-    0x1.a827999fcef30c38b2e5397ea7c10eadp-2,
-    0x1.921fb54442d17p-2
-  },
-  { // Entry 952
-    -0x1.a827999fcef30c38b2e5397ea7c10eadp-2,
-    -0x1.921fb54442d17p-2
-  },
-  { // Entry 953
-    0x1.a827999fcef31ef776183b070e6fc84ep-2,
-    0x1.921fb54442d18p-2
-  },
-  { // Entry 954
-    -0x1.a827999fcef31ef776183b070e6fc84ep-2,
-    -0x1.921fb54442d18p-2
-  },
-  { // Entry 955
-    0x1.a827999fcef331b6394b3c8f755c9fa3p-2,
-    0x1.921fb54442d19p-2
-  },
-  { // Entry 956
-    -0x1.a827999fcef331b6394b3c8f755c9fa3p-2,
-    -0x1.921fb54442d19p-2
-  },
-  { // Entry 957
-    0x1.ffffffffffffd72cece675d1fe3035bbp-1,
-    0x1.921fb54442d17p-1
-  },
-  { // Entry 958
-    -0x1.ffffffffffffd72cece675d1fe3035bbp-1,
-    -0x1.921fb54442d17p-1
-  },
-  { // Entry 959
-    0x1.fffffffffffff72cece675d1fca30489p-1,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 960
-    -0x1.fffffffffffff72cece675d1fca30489p-1,
-    -0x1.921fb54442d18p-1
-  },
-  { // Entry 961
-    0x1.0000000000000b9676733ae8fe8ae9acp0,
-    0x1.921fb54442d19p-1
-  },
-  { // Entry 962
-    -0x1.0000000000000b9676733ae8fe8ae9acp0,
-    -0x1.921fb54442d19p-1
-  },
-  { // Entry 963
-    0x1.9153d9443ed0b3b43ddab6ae573aa23dp51,
-    0x1.921fb54442d17p0
-  },
-  { // Entry 964
-    -0x1.9153d9443ed0b3b43ddab6ae573aa23dp51,
-    -0x1.921fb54442d17p0
-  },
-  { // Entry 965
-    0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 966
-    -0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 967
-    -0x1.617a15494767a04882c320317f3e4cecp52,
-    0x1.921fb54442d19p0
-  },
-  { // Entry 968
-    0x1.617a15494767a04882c320317f3e4cecp52,
-    -0x1.921fb54442d19p0
-  },
-  { // Entry 969
-    -0x1.469898cc51701b839a252049c3d60c68p-51,
-    0x1.921fb54442d17p1
-  },
-  { // Entry 970
-    0x1.469898cc51701b839a252049c3d60c68p-51,
-    -0x1.921fb54442d17p1
-  },
-  { // Entry 971
-    -0x1.1a62633145c06e0e689481270461d5d7p-53,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 972
-    0x1.1a62633145c06e0e689481270461d5d7p-53,
-    -0x1.921fb54442d18p1
-  },
-  { // Entry 973
-    0x1.72cece675d1fc8f8cbb5bf6c7ee0b96cp-52,
-    0x1.921fb54442d19p1
-  },
-  { // Entry 974
-    -0x1.72cece675d1fc8f8cbb5bf6c7ee0b96cp-52,
-    -0x1.921fb54442d19p1
-  },
-  { // Entry 975
-    -0x1.469898cc51701b839a252049cc244ab5p-50,
-    0x1.921fb54442d17p2
-  },
-  { // Entry 976
-    0x1.469898cc51701b839a252049cc244ab5p-50,
-    -0x1.921fb54442d17p2
-  },
-  { // Entry 977
-    -0x1.1a62633145c06e0e6894812704b7bbabp-52,
-    0x1.921fb54442d18p2
-  },
-  { // Entry 978
-    0x1.1a62633145c06e0e6894812704b7bbabp-52,
-    -0x1.921fb54442d18p2
-  },
-  { // Entry 979
-    0x1.72cece675d1fc8f8cbb5bf6c81eab38cp-51,
-    0x1.921fb54442d19p2
-  },
-  { // Entry 980
-    -0x1.72cece675d1fc8f8cbb5bf6c81eab38cp-51,
-    -0x1.921fb54442d19p2
-  },
-  { // Entry 981
-    -0x1.469898cc51701b839a252049ed5d43e8p-49,
-    0x1.921fb54442d17p3
-  },
-  { // Entry 982
-    0x1.469898cc51701b839a252049ed5d43e8p-49,
-    -0x1.921fb54442d17p3
-  },
-  { // Entry 983
-    -0x1.1a62633145c06e0e68948127060f52f9p-51,
-    0x1.921fb54442d18p3
-  },
-  { // Entry 984
-    0x1.1a62633145c06e0e68948127060f52f9p-51,
-    -0x1.921fb54442d18p3
-  },
-  { // Entry 985
-    0x1.72cece675d1fc8f8cbb5bf6c8e129c0ap-50,
-    0x1.921fb54442d19p3
-  },
-  { // Entry 986
-    -0x1.72cece675d1fc8f8cbb5bf6c8e129c0ap-50,
-    -0x1.921fb54442d19p3
-  },
-  { // Entry 987
-    -0x1.469898cc51701b839a25204a724128b4p-48,
-    0x1.921fb54442d17p4
-  },
-  { // Entry 988
-    0x1.469898cc51701b839a25204a724128b4p-48,
-    -0x1.921fb54442d17p4
-  },
-  { // Entry 989
-    -0x1.1a62633145c06e0e689481270b6db033p-50,
-    0x1.921fb54442d18p4
-  },
-  { // Entry 990
-    0x1.1a62633145c06e0e689481270b6db033p-50,
-    -0x1.921fb54442d18p4
-  },
-  { // Entry 991
-    0x1.72cece675d1fc8f8cbb5bf6cbeb23e03p-49,
-    0x1.921fb54442d19p4
-  },
-  { // Entry 992
-    -0x1.72cece675d1fc8f8cbb5bf6cbeb23e03p-49,
-    -0x1.921fb54442d19p4
-  },
-  { // Entry 993
-    -0x1.469898cc51701b839a25204c85d0bbe3p-47,
-    0x1.921fb54442d17p5
-  },
-  { // Entry 994
-    0x1.469898cc51701b839a25204c85d0bbe3p-47,
-    -0x1.921fb54442d17p5
-  },
-  { // Entry 995
-    -0x1.1a62633145c06e0e6894812720e7251ap-49,
-    0x1.921fb54442d18p5
-  },
-  { // Entry 996
-    0x1.1a62633145c06e0e6894812720e7251ap-49,
-    -0x1.921fb54442d18p5
-  },
-  { // Entry 997
-    0x1.72cece675d1fc8f8cbb5bf6d8130c5e7p-48,
-    0x1.921fb54442d19p5
-  },
-  { // Entry 998
-    -0x1.72cece675d1fc8f8cbb5bf6d8130c5e7p-48,
-    -0x1.921fb54442d19p5
-  },
-  { // Entry 999
-    -0x1.469898cc51701b839a252054d40f08a0p-46,
-    0x1.921fb54442d17p6
-  },
-  { // Entry 1000
-    0x1.469898cc51701b839a252054d40f08a0p-46,
-    -0x1.921fb54442d17p6
-  },
-  { // Entry 1001
-    -0x1.1a62633145c06e0e6894812776ccf8b7p-48,
-    0x1.921fb54442d18p6
-  },
-  { // Entry 1002
-    0x1.1a62633145c06e0e6894812776ccf8b7p-48,
-    -0x1.921fb54442d18p6
-  },
-  { // Entry 1003
-    0x1.72cece675d1fc8f8cbb5bf708b2ae576p-47,
-    0x1.921fb54442d19p6
-  },
-  { // Entry 1004
-    -0x1.72cece675d1fc8f8cbb5bf708b2ae576p-47,
-    -0x1.921fb54442d19p6
-  },
-  { // Entry 1005
-    -0x1.469898cc51701b839a2520760d083b97p-45,
-    0x1.921fb54442d17p7
-  },
-  { // Entry 1006
-    0x1.469898cc51701b839a2520760d083b97p-45,
-    -0x1.921fb54442d17p7
-  },
-  { // Entry 1007
-    -0x1.1a62633145c06e0e68948128ce64472bp-47,
-    0x1.921fb54442d18p7
-  },
-  { // Entry 1008
-    0x1.1a62633145c06e0e68948128ce64472bp-47,
-    -0x1.921fb54442d18p7
-  },
-  { // Entry 1009
-    0x1.72cece675d1fc8f8cbb5bf7cb31363b1p-46,
-    0x1.921fb54442d19p7
-  },
-  { // Entry 1010
-    -0x1.72cece675d1fc8f8cbb5bf7cb31363b1p-46,
-    -0x1.921fb54442d19p7
-  },
-  { // Entry 1011
-    -0x1.0000000000004d3c9ca64f4510cf6f31p0,
-    0x1.2d97c7f3321d1p1
-  },
-  { // Entry 1012
-    0x1.0000000000004d3c9ca64f4510cf6f31p0,
-    -0x1.2d97c7f3321d1p1
-  },
-  { // Entry 1013
-    -0x1.0000000000000d3c9ca64f4505804808p0,
-    0x1.2d97c7f3321d2p1
-  },
-  { // Entry 1014
-    0x1.0000000000000d3c9ca64f4505804808p0,
-    -0x1.2d97c7f3321d2p1
-  },
-  { // Entry 1015
-    -0x1.ffffffffffff9a79394c9e8a146241bdp-1,
-    0x1.2d97c7f3321d3p1
-  },
-  { // Entry 1016
-    0x1.ffffffffffff9a79394c9e8a146241bdp-1,
-    -0x1.2d97c7f3321d3p1
-  },
-  { // Entry 1017
-    0x1.ffffffffffff53e0a0804d1a0bbc4ab3p-1,
-    0x1.f6a7a2955385dp1
-  },
-  { // Entry 1018
-    -0x1.ffffffffffff53e0a0804d1a0bbc4ab3p-1,
-    -0x1.f6a7a2955385dp1
-  },
-  { // Entry 1019
-    0x1.ffffffffffffd3e0a0804d19f0b472d3p-1,
-    0x1.f6a7a2955385ep1
-  },
-  { // Entry 1020
-    -0x1.ffffffffffffd3e0a0804d19f0b472d3p-1,
-    -0x1.f6a7a2955385ep1
-  },
-  { // Entry 1021
-    0x1.00000000000029f05040268cfad64d79p0,
-    0x1.f6a7a2955385fp1
-  },
-  { // Entry 1022
-    -0x1.00000000000029f05040268cfad64d79p0,
-    -0x1.f6a7a2955385fp1
-  },
-  { // Entry 1023
-    0x1.a8410087262e3f41859fa73567f9244dp49,
-    0x1.2d97c7f3321d1p2
-  },
-  { // Entry 1024
-    -0x1.a8410087262e3f41859fa73567f9244dp49,
-    -0x1.2d97c7f3321d1p2
-  },
-  { // Entry 1025
-    0x1.3570efd76892340825e0124393554697p52,
-    0x1.2d97c7f3321d2p2
-  },
-  { // Entry 1026
-    -0x1.3570efd76892340825e0124393554697p52,
-    -0x1.2d97c7f3321d2p2
-  },
-  { // Entry 1027
-    -0x1.42c0d64d5de5178afe06452a1a1b8667p50,
-    0x1.2d97c7f3321d3p2
-  },
-  { // Entry 1028
-    0x1.42c0d64d5de5178afe06452a1a1b8667p50,
-    -0x1.2d97c7f3321d3p2
-  },
-  { // Entry 1029
-    -0x1.0000000000009ee2c2d963a13d57ec20p0,
-    0x1.5fdbbe9bba774p2
-  },
-  { // Entry 1030
-    0x1.0000000000009ee2c2d963a13d57ec20p0,
-    -0x1.5fdbbe9bba774p2
-  },
-  { // Entry 1031
-    -0x1.0000000000001ee2c2d963a10de68ab4p0,
-    0x1.5fdbbe9bba775p2
-  },
-  { // Entry 1032
-    0x1.0000000000001ee2c2d963a10de68ab4p0,
-    -0x1.5fdbbe9bba775p2
-  },
-  { // Entry 1033
-    -0x1.ffffffffffff3dc585b2c7423cea528ep-1,
-    0x1.5fdbbe9bba776p2
-  },
-  { // Entry 1034
-    0x1.ffffffffffff3dc585b2c7423cea528ep-1,
-    -0x1.5fdbbe9bba776p2
-  },
-  { // Entry 1035
-    0x1.fffffffffffeb094541a24624eeab0e1p-1,
-    0x1.c463abeccb2bap2
-  },
-  { // Entry 1036
-    -0x1.fffffffffffeb094541a24624eeab0e1p-1,
-    -0x1.c463abeccb2bap2
-  },
-  { // Entry 1037
-    0x1.ffffffffffffb094541a2461e734daeep-1,
-    0x1.c463abeccb2bbp2
-  },
-  { // Entry 1038
-    -0x1.ffffffffffffb094541a2461e734daeep-1,
-    -0x1.c463abeccb2bbp2
-  },
-  { // Entry 1039
-    0x1.000000000000584a2a0d1230ffbf827dp0,
-    0x1.c463abeccb2bcp2
-  },
-  { // Entry 1040
-    -0x1.000000000000584a2a0d1230ffbf827dp0,
-    -0x1.c463abeccb2bcp2
-  },
-  { // Entry 1041
-    0x1.7cc080f8958567f05c40ac5f6d310de8p49,
-    0x1.f6a7a2955385dp2
-  },
-  { // Entry 1042
-    -0x1.7cc080f8958567f05c40ac5f6d310de8p49,
-    -0x1.f6a7a2955385dp2
-  },
-  { // Entry 1043
-    0x1.735453027d7c3e702d73491de369536fp51,
-    0x1.f6a7a2955385ep2
-  },
-  { // Entry 1044
-    -0x1.735453027d7c3e702d73491de369536fp51,
-    -0x1.f6a7a2955385ep2
-  },
-  { // Entry 1045
-    -0x1.86aa4a3a127a3add9a8e76993733b4a7p50,
-    0x1.f6a7a2955385fp2
-  },
-  { // Entry 1046
-    0x1.86aa4a3a127a3add9a8e76993733b4a7p50,
-    -0x1.f6a7a2955385fp2
-  },
-  { // Entry 1047
-    -0x1.000000000001b088e90c77fe8051a7dap0,
-    0x1.1475cc9eedeffp3
-  },
-  { // Entry 1048
-    0x1.000000000001b088e90c77fe8051a7dap0,
-    -0x1.1475cc9eedeffp3
-  },
-  { // Entry 1049
-    -0x1.000000000000b088e90c77fd4fc8becep0,
-    0x1.1475cc9eedfp3
-  },
-  { // Entry 1050
-    0x1.000000000000b088e90c77fd4fc8becep0,
-    -0x1.1475cc9eedfp3
-  },
-  { // Entry 1051
-    -0x1.ffffffffffff6111d218effa3e7fab83p-1,
-    0x1.1475cc9eedf01p3
-  },
-  { // Entry 1052
-    0x1.ffffffffffff6111d218effa3e7fab83p-1,
-    -0x1.1475cc9eedf01p3
-  },
-  { // Entry 1053
-    -0x1.34f272993d1414a2b39bd837764c1608p-49,
-    0x1.2d97c7f3321d1p3
-  },
-  { // Entry 1054
-    0x1.34f272993d1414a2b39bd837764c1608p-49,
-    -0x1.2d97c7f3321d1p3
-  },
-  { // Entry 1055
-    -0x1.a79394c9e8a0a5159cdec1ba87ea5811p-52,
-    0x1.2d97c7f3321d2p3
-  },
-  { // Entry 1056
-    0x1.a79394c9e8a0a5159cdec1ba87ea5811p-52,
-    -0x1.2d97c7f3321d2p3
-  },
-  { // Entry 1057
-    0x1.961b1acd85d7d6ba98c84f9173b08d6fp-50,
-    0x1.2d97c7f3321d3p3
-  },
-  { // Entry 1058
-    -0x1.961b1acd85d7d6ba98c84f9173b08d6fp-50,
-    -0x1.2d97c7f3321d3p3
-  },
-  { // Entry 1059
-    0x1.fffffffffffc8d4807b3fbaccc38314bp-1,
-    0x1.46b9c347764a2p3
-  },
-  { // Entry 1060
-    -0x1.fffffffffffc8d4807b3fbaccc38314bp-1,
-    -0x1.46b9c347764a2p3
-  },
-  { // Entry 1061
-    0x1.fffffffffffe8d4807b3fbaa598038ffp-1,
-    0x1.46b9c347764a3p3
-  },
-  { // Entry 1062
-    -0x1.fffffffffffe8d4807b3fbaa598038ffp-1,
-    -0x1.46b9c347764a3p3
-  },
-  { // Entry 1063
-    0x1.00000000000046a403d9fdd4f3642059p0,
-    0x1.46b9c347764a4p3
-  },
-  { // Entry 1064
-    -0x1.00000000000046a403d9fdd4f3642059p0,
-    -0x1.46b9c347764a4p3
-  },
-  { // Entry 1065
-    0x1.9c78eea78baa6e13eccc94c421c4f5acp48,
-    0x1.5fdbbe9bba774p3
-  },
-  { // Entry 1066
-    -0x1.9c78eea78baa6e13eccc94c421c4f5acp48,
-    -0x1.5fdbbe9bba774p3
-  },
-  { // Entry 1067
-    0x1.093c3b4aebeb0806fbe4a1f0c660ba3bp51,
-    0x1.5fdbbe9bba775p3
-  },
-  { // Entry 1068
-    -0x1.093c3b4aebeb0806fbe4a1f0c660ba3bp51,
-    -0x1.5fdbbe9bba775p3
-  },
-  { // Entry 1069
-    -0x1.516ac961421855fb759fc2facb4e9f5bp49,
-    0x1.5fdbbe9bba776p3
-  },
-  { // Entry 1070
-    0x1.516ac961421855fb759fc2facb4e9f5bp49,
-    -0x1.5fdbbe9bba776p3
-  },
-  { // Entry 1071
-    -0x1.000000000001c22f0f3f8c5aa5a01da3p0,
-    0x1.78fdb9effea45p3
-  },
-  { // Entry 1072
-    0x1.000000000001c22f0f3f8c5aa5a01da3p0,
-    -0x1.78fdb9effea45p3
-  },
-  { // Entry 1073
-    -0x1.000000000000c22f0f3f8c5963710e64p0,
-    0x1.78fdb9effea46p3
-  },
-  { // Entry 1074
-    0x1.000000000000c22f0f3f8c5963710e64p0,
-    -0x1.78fdb9effea46p3
-  },
-  { // Entry 1075
-    -0x1.ffffffffffff845e1e7f18b24283fe49p-1,
-    0x1.78fdb9effea47p3
-  },
-  { // Entry 1076
-    0x1.ffffffffffff845e1e7f18b24283fe49p-1,
-    -0x1.78fdb9effea47p3
-  },
-  { // Entry 1077
-    0x1.fffffffffffc69fbbb4dd2f4fc88ffa1p-1,
-    0x1.ab41b09886fe8p3
-  },
-  { // Entry 1078
-    -0x1.fffffffffffc69fbbb4dd2f4fc88ffa1p-1,
-    -0x1.ab41b09886fe8p3
-  },
-  { // Entry 1079
-    0x1.fffffffffffe69fbbb4dd2f26684baeep-1,
-    0x1.ab41b09886fe9p3
-  },
-  { // Entry 1080
-    -0x1.fffffffffffe69fbbb4dd2f26684baeep-1,
-    -0x1.ab41b09886fe9p3
-  },
-  { // Entry 1081
-    0x1.00000000000034fddda6e978e8403b1ep0,
-    0x1.ab41b09886feap3
-  },
-  { // Entry 1082
-    -0x1.00000000000034fddda6e978e8403b1ep0,
-    -0x1.ab41b09886feap3
-  },
-  { // Entry 1083
-    0x1.86c4e333b3c9f6273896aba201767912p48,
-    0x1.c463abeccb2bap3
-  },
-  { // Entry 1084
-    -0x1.86c4e333b3c9f6273896aba201767912p48,
-    -0x1.c463abeccb2bap3
-  },
-  { // Entry 1085
-    0x1.9c96951f361845603280185a16d6026cp50,
-    0x1.c463abeccb2bbp3
-  },
-  { // Entry 1086
-    -0x1.9c96951f361845603280185a16d6026cp50,
-    -0x1.c463abeccb2bbp3
-  },
-  { // Entry 1087
-    -0x1.73244d369e0b6eb2f5d73cca7344e87ap49,
-    0x1.c463abeccb2bcp3
-  },
-  { // Entry 1088
-    0x1.73244d369e0b6eb2f5d73cca7344e87ap49,
-    -0x1.c463abeccb2bcp3
-  },
-  { // Entry 1089
-    -0x1.000000000001d3d53572a0b6cc261055p0,
-    0x1.dd85a7410f58bp3
-  },
-  { // Entry 1090
-    0x1.000000000001d3d53572a0b6cc261055p0,
-    -0x1.dd85a7410f58bp3
-  },
-  { // Entry 1091
-    -0x1.000000000000d3d53572a0b57850dae2p0,
-    0x1.dd85a7410f58cp3
-  },
-  { // Entry 1092
-    0x1.000000000000d3d53572a0b57850dae2p0,
-    -0x1.dd85a7410f58cp3
-  },
-  { // Entry 1093
-    -0x1.ffffffffffffa7aa6ae5416a48f74adfp-1,
-    0x1.dd85a7410f58dp3
-  },
-  { // Entry 1094
-    0x1.ffffffffffffa7aa6ae5416a48f74adfp-1,
-    -0x1.dd85a7410f58dp3
-  },
-  { // Entry 1095
-    -0x1.583ebeff65cc226480ae685c65352325p-49,
-    0x1.f6a7a2955385dp3
-  },
-  { // Entry 1096
-    0x1.583ebeff65cc226480ae685c65352325p-49,
-    -0x1.f6a7a2955385dp3
-  },
-  { // Entry 1097
-    -0x1.60fafbfd9730899202b9a170c8d54591p-51,
-    0x1.f6a7a2955385ep3
-  },
-  { // Entry 1098
-    0x1.60fafbfd9730899202b9a170c8d54591p-51,
-    -0x1.f6a7a2955385ep3
-  },
-  { // Entry 1099
-    0x1.4f8282013467bb36fea32f47a95641bap-50,
-    0x1.f6a7a2955385fp3
-  },
-  { // Entry 1100
-    -0x1.4f8282013467bb36fea32f47a95641bap-50,
-    -0x1.f6a7a2955385fp3
-  },
-  { // Entry 1101
-    0x1.fffffffffff846af6ee7aa48a1e9e9f7p-1,
-    0x1.07e4cef4cbd96p4
-  },
-  { // Entry 1102
-    -0x1.fffffffffff846af6ee7aa48a1e9e9f7p-1,
-    -0x1.07e4cef4cbd96p4
-  },
-  { // Entry 1103
-    0x1.fffffffffffc46af6ee7aa3d2f48c7c7p-1,
-    0x1.07e4cef4cbd97p4
-  },
-  { // Entry 1104
-    -0x1.fffffffffffc46af6ee7aa3d2f48c7c7p-1,
-    -0x1.07e4cef4cbd97p4
-  },
-  { // Entry 1105
-    0x1.0000000000002357b773d51cde53d2cbp0,
-    0x1.07e4cef4cbd98p4
-  },
-  { // Entry 1106
-    -0x1.0000000000002357b773d51cde53d2cbp0,
-    -0x1.07e4cef4cbd98p4
-  },
-  { // Entry 1107
-    0x1.2f0842389e5bc014d0fbe843cca6ddf3p47,
-    0x1.1475cc9eedeffp4
-  },
-  { // Entry 1108
-    -0x1.2f0842389e5bc014d0fbe843cca6ddf3p47,
-    -0x1.1475cc9eedeffp4
-  },
-  { // Entry 1109
-    0x1.733c4e8ef9c50cb5929f6bb674bec67fp48,
-    0x1.1475cc9eedfp4
-  },
-  { // Entry 1110
-    -0x1.733c4e8ef9c50cb5929f6bb674bec67fp48,
-    -0x1.1475cc9eedfp4
-  },
-  { // Entry 1111
-    -0x1.9c5b4c728989891dfb8710adf387843cp49,
-    0x1.1475cc9eedf01p4
-  },
-  { // Entry 1112
-    0x1.9c5b4c728989891dfb8710adf387843cp49,
-    -0x1.1475cc9eedf01p4
-  },
-  { // Entry 1113
-    -0x1.000000000002e57b5ba5b515595edb94p0,
-    0x1.2106ca4910068p4
-  },
-  { // Entry 1114
-    0x1.000000000002e57b5ba5b515595edb94p0,
-    -0x1.2106ca4910068p4
-  },
-  { // Entry 1115
-    -0x1.000000000000e57b5ba5b5118e682449p0,
-    0x1.2106ca4910069p4
-  },
-  { // Entry 1116
-    0x1.000000000000e57b5ba5b5118e682449p0,
-    -0x1.2106ca4910069p4
-  },
-  { // Entry 1117
-    -0x1.fffffffffffdcaf6b74b6a2386e2d9fbp-1,
-    0x1.2106ca491006ap4
-  },
-  { // Entry 1118
-    0x1.fffffffffffdcaf6b74b6a2386e2d9fbp-1,
-    -0x1.2106ca491006ap4
-  },
-  { // Entry 1119
-    -0x1.34f272993d1414a2b39bd837e6c96af0p-48,
-    0x1.2d97c7f3321d1p4
-  },
-  { // Entry 1120
-    0x1.34f272993d1414a2b39bd837e6c96af0p-48,
-    -0x1.2d97c7f3321d1p4
-  },
-  { // Entry 1121
-    -0x1.a79394c9e8a0a5159cdec1ba8c71f6bap-51,
-    0x1.2d97c7f3321d2p4
-  },
-  { // Entry 1122
-    0x1.a79394c9e8a0a5159cdec1ba8c71f6bap-51,
-    -0x1.2d97c7f3321d2p4
-  },
-  { // Entry 1123
-    0x1.961b1acd85d7d6ba98c84f91b390101fp-49,
-    0x1.2d97c7f3321d3p4
-  },
-  { // Entry 1124
-    -0x1.961b1acd85d7d6ba98c84f91b390101fp-49,
-    -0x1.2d97c7f3321d3p4
-  },
-  { // Entry 1125
-    0x1.fffffffffff82363228181911db144bap-1,
-    0x1.3a28c59d54339p4
-  },
-  { // Entry 1126
-    -0x1.fffffffffff82363228181911db144bap-1,
-    -0x1.3a28c59d54339p4
-  },
-  { // Entry 1127
-    0x1.fffffffffffc236322818185647789bdp-1,
-    0x1.3a28c59d5433ap4
-  },
-  { // Entry 1128
-    -0x1.fffffffffffc236322818185647789bdp-1,
-    -0x1.3a28c59d5433ap4
-  },
-  { // Entry 1129
-    0x1.00000000000011b19140c0c0d59ee760p0,
-    0x1.3a28c59d5433bp4
-  },
-  { // Entry 1130
-    -0x1.00000000000011b19140c0c0d59ee760p0,
-    -0x1.3a28c59d5433bp4
-  },
-  { // Entry 1131
-    0x1.28f934315e5eb9b45a603a5f788de131p47,
-    0x1.46b9c347764a2p4
-  },
-  { // Entry 1132
-    -0x1.28f934315e5eb9b45a603a5f788de131p47,
-    -0x1.46b9c347764a2p4
-  },
-  { // Entry 1133
-    0x1.618fdb7f21c13c236a4c4551ff139f5dp48,
-    0x1.46b9c347764a3p4
-  },
-  { // Entry 1134
-    -0x1.618fdb7f21c13c236a4c4551ff139f5dp48,
-    -0x1.46b9c347764a3p4
-  },
-  { // Entry 1135
-    -0x1.cfde61218ab9e79ffe8f046afdf00de3p49,
-    0x1.46b9c347764a4p4
-  },
-  { // Entry 1136
-    0x1.cfde61218ab9e79ffe8f046afdf00de3p49,
-    -0x1.46b9c347764a4p4
-  },
-  { // Entry 1137
-    -0x1.000000000002f72181d8c97193f9ee49p0,
-    0x1.534ac0f19860bp4
-  },
-  { // Entry 1138
-    0x1.000000000002f72181d8c97193f9ee49p0,
-    -0x1.534ac0f19860bp4
-  },
-  { // Entry 1139
-    -0x1.000000000000f72181d8c96da5b6ea98p0,
-    0x1.534ac0f19860cp4
-  },
-  { // Entry 1140
-    0x1.000000000000f72181d8c96da5b6ea98p0,
-    -0x1.534ac0f19860cp4
-  },
-  { // Entry 1141
-    -0x1.fffffffffffdee4303b192db6ee7cdcdp-1,
-    0x1.534ac0f19860dp4
-  },
-  { // Entry 1142
-    0x1.fffffffffffdee4303b192db6ee7cdcdp-1,
-    -0x1.534ac0f19860dp4
-  },
-  { // Entry 1143
-    -0x1.3dc585b2c742181326e07c412c24a052p-48,
-    0x1.5fdbbe9bba774p4
-  },
-  { // Entry 1144
-    0x1.3dc585b2c742181326e07c412c24a052p-48,
-    -0x1.5fdbbe9bba774p4
-  },
-  { // Entry 1145
-    -0x1.ee2c2d963a10c0993703e2045110595ep-51,
-    0x1.5fdbbe9bba775p4
-  },
-  { // Entry 1146
-    0x1.ee2c2d963a10c0993703e2045110595ep-51,
-    -0x1.5fdbbe9bba775p4
-  },
-  { // Entry 1147
-    0x1.8474f49a717bcfd9b23f077f38aafd2ap-49,
-    0x1.5fdbbe9bba776p4
-  },
-  { // Entry 1148
-    -0x1.8474f49a717bcfd9b23f077f38aafd2ap-49,
-    -0x1.5fdbbe9bba776p4
-  },
-  { // Entry 1149
-    0x1.fffffffffff80016d61b58d99be7994ep-1,
-    0x1.6c6cbc45dc8dcp4
-  },
-  { // Entry 1150
-    -0x1.fffffffffff80016d61b58d99be7994ep-1,
-    -0x1.6c6cbc45dc8dcp4
-  },
-  { // Entry 1151
-    0x1.fffffffffffc0016d61b58cd9c154585p-1,
-    0x1.6c6cbc45dc8ddp4
-  },
-  { // Entry 1152
-    -0x1.fffffffffffc0016d61b58cd9c154585p-1,
-    -0x1.6c6cbc45dc8ddp4
-  },
-  { // Entry 1153
-    0x1.000000000000000b6b0dac64ce2178ddp0,
-    0x1.6c6cbc45dc8dep4
-  },
-  { // Entry 1154
-    -0x1.000000000000000b6b0dac64ce2178ddp0,
-    -0x1.6c6cbc45dc8dep4
-  },
-  { // Entry 1155
-    0x1.2326f4e8f2bb180e5bf0417d75ea5d9ep47,
-    0x1.78fdb9effea45p4
-  },
-  { // Entry 1156
-    -0x1.2326f4e8f2bb180e5bf0417d75ea5d9ep47,
-    -0x1.78fdb9effea45p4
-  },
-  { // Entry 1157
-    0x1.517ea08708ba69da333a8c85f3bc6609p48,
-    0x1.78fdb9effea46p4
-  },
-  { // Entry 1158
-    -0x1.517ea08708ba69da333a8c85f3bc6609p48,
-    -0x1.78fdb9effea46p4
-  },
-  { // Entry 1159
-    -0x1.090b3d5161785ac2d31663f7e5d6bed4p50,
-    0x1.78fdb9effea47p4
-  },
-  { // Entry 1160
-    0x1.090b3d5161785ac2d31663f7e5d6bed4p50,
-    -0x1.78fdb9effea47p4
-  },
-  { // Entry 1161
-    -0x1.00000000000308c7a80bddcdcfcc7de7p0,
-    0x1.858eb79a20baep4
-  },
-  { // Entry 1162
-    0x1.00000000000308c7a80bddcdcfcc7de7p0,
-    -0x1.858eb79a20baep4
-  },
-  { // Entry 1163
-    -0x1.00000000000108c7a80bddc9be3d2dcfp0,
-    0x1.858eb79a20bafp4
-  },
-  { // Entry 1164
-    0x1.00000000000108c7a80bddc9be3d2dcfp0,
-    -0x1.858eb79a20bafp4
-  },
-  { // Entry 1165
-    -0x1.fffffffffffe118f5017bb93595bbb6fp-1,
-    0x1.858eb79a20bb0p4
-  },
-  { // Entry 1166
-    0x1.fffffffffffe118f5017bb93595bbb6fp-1,
-    -0x1.858eb79a20bb0p4
-  },
-  { // Entry 1167
-    -0x1.af0792001f856335a38010a6a6832e6bp2,
-    0x1.fffffffffffffp62
-  },
-  { // Entry 1168
-    0x1.af0792001f856335a38010a6a6832e6bp2,
-    -0x1.fffffffffffffp62
-  },
-  { // Entry 1169
-    0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
-    0x1.0p63
-  },
-  { // Entry 1170
-    -0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
-    -0x1.0p63
-  },
-  { // Entry 1171
-    0x1.7570667d032eca8ef780ad59d3e27e4bp1,
-    0x1.0000000000001p63
-  },
-  { // Entry 1172
-    -0x1.7570667d032eca8ef780ad59d3e27e4bp1,
-    -0x1.0000000000001p63
-  },
-  { // Entry 1173
-    -0x1.2e8fc248e7b854fe5c2dc9d287de0cd3p0,
-    0x1.fffffffffffffp26
-  },
-  { // Entry 1174
-    0x1.2e8fc248e7b854fe5c2dc9d287de0cd3p0,
-    -0x1.fffffffffffffp26
-  },
-  { // Entry 1175
-    -0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
-    0x1.0p27
-  },
-  { // Entry 1176
-    0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
-    -0x1.0p27
-  },
-  { // Entry 1177
-    -0x1.2e8fc07cb61a95ef5e5d8d6416652c7ap0,
-    0x1.0000000000001p27
-  },
-  { // Entry 1178
-    0x1.2e8fc07cb61a95ef5e5d8d6416652c7ap0,
-    -0x1.0000000000001p27
-  },
-  { // Entry 1179
-    -0x1.3ea282860e7fbe1765607c2fdb32481fp0,
-    0x1.fffffffffffffp23
-  },
-  { // Entry 1180
-    0x1.3ea282860e7fbe1765607c2fdb32481fp0,
-    -0x1.fffffffffffffp23
-  },
-  { // Entry 1181
-    -0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
-    0x1.0p24
-  },
-  { // Entry 1182
-    0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
-    -0x1.0p24
-  },
-  { // Entry 1183
-    -0x1.3ea28248e03c72def70e7efb4c43f03ep0,
-    0x1.0000000000001p24
-  },
-  { // Entry 1184
-    0x1.3ea28248e03c72def70e7efb4c43f03ep0,
-    -0x1.0000000000001p24
-  },
-  { // Entry 1185
-    0x1.2866f9be4de0ec27efa9049ab80bbd6cp0,
-    0x1.fffffffffffffp1
-  },
-  { // Entry 1186
-    -0x1.2866f9be4de0ec27efa9049ab80bbd6cp0,
-    -0x1.fffffffffffffp1
-  },
-  { // Entry 1187
-    0x1.2866f9be4de1370db9078607012cb07bp0,
-    0x1.0p2
-  },
-  { // Entry 1188
-    -0x1.2866f9be4de1370db9078607012cb07bp0,
-    -0x1.0p2
-  },
-  { // Entry 1189
-    0x1.2866f9be4de1ccd94bc488dfd47873afp0,
-    0x1.0000000000001p2
-  },
-  { // Entry 1190
-    -0x1.2866f9be4de1ccd94bc488dfd47873afp0,
-    -0x1.0000000000001p2
-  },
-  { // Entry 1191
-    -0x1.17af62e0950fb1e701c642ef8737f516p1,
-    0x1.fffffffffffffp0
-  },
-  { // Entry 1192
-    0x1.17af62e0950fb1e701c642ef8737f516p1,
-    -0x1.fffffffffffffp0
-  },
-  { // Entry 1193
-    -0x1.17af62e0950f83b5099087aaf67af9c1p1,
-    0x1.0p1
-  },
-  { // Entry 1194
-    0x1.17af62e0950f83b5099087aaf67af9c1p1,
-    -0x1.0p1
-  },
-  { // Entry 1195
-    -0x1.17af62e0950f275119251121fadb17bap1,
-    0x1.0000000000001p1
-  },
-  { // Entry 1196
-    0x1.17af62e0950f275119251121fadb17bap1,
-    -0x1.0000000000001p1
-  },
-  { // Entry 1197
-    0x1.8eb245cbee3a40235613e7575020d30dp0,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 1198
-    -0x1.8eb245cbee3a40235613e7575020d30dp0,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 1199
-    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    0x1.0p0
-  },
-  { // Entry 1200
-    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    -0x1.0p0
-  },
-  { // Entry 1201
-    0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
-    0x1.0000000000001p0
-  },
-  { // Entry 1202
-    -0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
-    -0x1.0000000000001p0
-  },
-  { // Entry 1203
-    0x1.17b4f5bf347499ce41855dee4344bd1dp-1,
-    0x1.fffffffffffffp-2
-  },
-  { // Entry 1204
-    -0x1.17b4f5bf347499ce41855dee4344bd1dp-1,
-    -0x1.fffffffffffffp-2
-  },
-  { // Entry 1205
-    0x1.17b4f5bf3474a4317964807882444cc8p-1,
-    0x1.0p-1
-  },
-  { // Entry 1206
-    -0x1.17b4f5bf3474a4317964807882444cc8p-1,
-    -0x1.0p-1
-  },
-  { // Entry 1207
-    0x1.17b4f5bf3474b8f7e922c58d00cb9dd2p-1,
-    0x1.0000000000001p-1
-  },
-  { // Entry 1208
-    -0x1.17b4f5bf3474b8f7e922c58d00cb9dd2p-1,
-    -0x1.0000000000001p-1
-  },
-  { // Entry 1209
-    0x1.05785a43c4c555de0cb1371f10db31afp-2,
-    0x1.fffffffffffffp-3
-  },
-  { // Entry 1210
-    -0x1.05785a43c4c555de0cb1371f10db31afp-2,
-    -0x1.fffffffffffffp-3
-  },
-  { // Entry 1211
-    0x1.05785a43c4c55e63940188965c28bd0fp-2,
-    0x1.0p-2
-  },
-  { // Entry 1212
-    -0x1.05785a43c4c55e63940188965c28bd0fp-2,
-    -0x1.0p-2
-  },
-  { // Entry 1213
-    0x1.05785a43c4c56f6ea2a22b84f2ddf03fp-2,
-    0x1.0000000000001p-2
-  },
-  { // Entry 1214
-    -0x1.05785a43c4c56f6ea2a22b84f2ddf03fp-2,
-    -0x1.0000000000001p-2
-  },
-  { // Entry 1215
-    0x1.01577af1511a45e403dd60c8d82590d0p-3,
-    0x1.fffffffffffffp-4
-  },
-  { // Entry 1216
-    -0x1.01577af1511a45e403dd60c8d82590d0p-3,
-    -0x1.fffffffffffffp-4
-  },
-  { // Entry 1217
-    0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
-    0x1.0p-3
-  },
-  { // Entry 1218
-    -0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
-    -0x1.0p-3
-  },
-  { // Entry 1219
-    0x1.01577af1511a5e45062667c6ceb89dc4p-3,
-    0x1.0000000000001p-3
-  },
-  { // Entry 1220
-    -0x1.01577af1511a5e45062667c6ceb89dc4p-3,
-    -0x1.0000000000001p-3
-  },
-  { // Entry 1221
-    0x1.005577854df0002a8e6606f6c618d988p-4,
-    0x1.fffffffffffffp-5
-  },
-  { // Entry 1222
-    -0x1.005577854df0002a8e6606f6c618d988p-4,
-    -0x1.fffffffffffffp-5
-  },
-  { // Entry 1223
-    0x1.005577854df0083293be639057b0c681p-4,
-    0x1.0p-4
-  },
-  { // Entry 1224
-    -0x1.005577854df0083293be639057b0c681p-4,
-    -0x1.0p-4
-  },
-  { // Entry 1225
-    0x1.005577854df018429e6f1cc37ae22274p-4,
-    0x1.0000000000001p-4
-  },
-  { // Entry 1226
-    -0x1.005577854df018429e6f1cc37ae22274p-4,
-    -0x1.0000000000001p-4
-  },
-  { // Entry 1227
-    0x1.00155777aec07d7b22741d12ee53a9fcp-5,
-    0x1.fffffffffffffp-6
-  },
-  { // Entry 1228
-    -0x1.00155777aec07d7b22741d12ee53a9fcp-5,
-    -0x1.fffffffffffffp-6
-  },
-  { // Entry 1229
-    0x1.00155777aec0857d22c97e809860288dp-5,
-    0x1.0p-5
-  },
-  { // Entry 1230
-    -0x1.00155777aec0857d22c97e809860288dp-5,
-    -0x1.0p-5
-  },
-  { // Entry 1231
-    0x1.00155777aec095812374415bec7985cep-5,
-    0x1.0000000000001p-5
-  },
-  { // Entry 1232
-    -0x1.00155777aec095812374415bec7985cep-5,
-    -0x1.0000000000001p-5
-  },
-  { // Entry 1233
-    0x1.00055577785482e135f0afeebe805adbp-6,
-    0x1.fffffffffffffp-7
-  },
-  { // Entry 1234
-    -0x1.00055577785482e135f0afeebe805adbp-6,
-    -0x1.fffffffffffffp-7
-  },
-  { // Entry 1235
-    0x1.0005557778548ae1b5f60574706e8238p-6,
-    0x1.0p-6
-  },
-  { // Entry 1236
-    -0x1.0005557778548ae1b5f60574706e8238p-6,
-    -0x1.0p-6
-  },
-  { // Entry 1237
-    0x1.0005557778549ae2b600b07fd44ae8f3p-6,
-    0x1.0000000000001p-6
-  },
-  { // Entry 1238
-    -0x1.0005557778549ae2b600b07fd44ae8f3p-6,
-    -0x1.0000000000001p-6
-  },
-  { // Entry 1239
-    0x1.0000000555554d777776f854854304c9p-14,
-    0x1.fffffffffffffp-15
-  },
-  { // Entry 1240
-    -0x1.0000000555554d777776f854854304c9p-14,
-    -0x1.fffffffffffffp-15
-  },
-  { // Entry 1241
-    0x1.00000005555555777777785485485a1ep-14,
-    0x1.0p-14
-  },
-  { // Entry 1242
-    -0x1.00000005555555777777785485485a1ep-14,
-    -0x1.0p-14
-  },
-  { // Entry 1243
-    0x1.000000055555657777787854855304c9p-14,
-    0x1.0000000000001p-14
-  },
-  { // Entry 1244
-    -0x1.000000055555657777787854855304c9p-14,
-    -0x1.0000000000001p-14
-  },
-  { // Entry 1245
-    0x1.fffffffffffff2aaaaaaaaaaaa6eeeeep-28,
-    0x1.fffffffffffffp-28
-  },
-  { // Entry 1246
-    -0x1.fffffffffffff2aaaaaaaaaaaa6eeeeep-28,
-    -0x1.fffffffffffffp-28
-  },
-  { // Entry 1247
-    0x1.00000000000001555555555555577777p-27,
-    0x1.0p-27
-  },
-  { // Entry 1248
-    -0x1.00000000000001555555555555577777p-27,
-    -0x1.0p-27
-  },
-  { // Entry 1249
-    0x1.00000000000011555555555555977777p-27,
-    0x1.0000000000001p-27
-  },
-  { // Entry 1250
-    -0x1.00000000000011555555555555977777p-27,
-    -0x1.0000000000001p-27
-  },
-  { // Entry 1251
-    0x1.fffffffffffff00aaaaaaaaaaaa9aaeep-31,
-    0x1.fffffffffffffp-31
-  },
-  { // Entry 1252
-    -0x1.fffffffffffff00aaaaaaaaaaaa9aaeep-31,
-    -0x1.fffffffffffffp-31
-  },
-  { // Entry 1253
-    0x1.00000000000000055555555555555577p-30,
-    0x1.0p-30
-  },
-  { // Entry 1254
-    -0x1.00000000000000055555555555555577p-30,
-    -0x1.0p-30
-  },
-  { // Entry 1255
-    0x1.00000000000010055555555555565577p-30,
-    0x1.0000000000001p-30
-  },
-  { // Entry 1256
-    -0x1.00000000000010055555555555565577p-30,
-    -0x1.0000000000001p-30
-  },
-  { // Entry 1257
-    0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1258
-    -0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1259
-    -0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1260
-    0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1261
-    -0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
-    0x1.fffffffffffffp1023
-  },
-  { // Entry 1262
-    0x1.4530cfe729483b8da1f7101e16cd74b7p-8,
-    -0x1.fffffffffffffp1023
-  },
-  { // Entry 1263
-    0x1.3c6e9970f78b84fc8227517fd521017bp1,
-    0x1.ffffffffffffep1023
-  },
-  { // Entry 1264
-    -0x1.3c6e9970f78b84fc8227517fd521017bp1,
-    -0x1.ffffffffffffep1023
-  },
-  { // Entry 1265
-    -0x1.1a62633145c06e0e689481270461d5d7p-53,
-    0x1.921fb54442d18p1
-  },
-  { // Entry 1266
-    0x1.1a62633145c06e0e689481270461d5d7p-53,
-    -0x1.921fb54442d18p1
-  },
-  { // Entry 1267
-    0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
-    0x1.921fb54442d18p0
-  },
-  { // Entry 1268
-    -0x1.d02967c31cdb4e0c38d01b655d5e0aafp53,
-    -0x1.921fb54442d18p0
-  },
-  { // Entry 1269
-    0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
-    0x1.0000000000001p0
-  },
-  { // Entry 1270
-    -0x1.8eb245cbee3a9259b94ff4e7fb8111ecp0,
-    -0x1.0000000000001p0
-  },
-  { // Entry 1271
-    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    0x1.0p0
-  },
-  { // Entry 1272
-    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    -0x1.0p0
-  },
-  { // Entry 1273
-    0x1.8eb245cbee3a40235613e7575020d30dp0,
-    0x1.fffffffffffffp-1
-  },
-  { // Entry 1274
-    -0x1.8eb245cbee3a40235613e7575020d30dp0,
-    -0x1.fffffffffffffp-1
-  },
-  { // Entry 1275
-    0x1.fffffffffffff72cece675d1fca30489p-1,
-    0x1.921fb54442d18p-1
-  },
-  { // Entry 1276
-    -0x1.fffffffffffff72cece675d1fca30489p-1,
-    -0x1.921fb54442d18p-1
-  },
-  { // Entry 1277
-    0x1.00000000000010p-1022,
-    0x1.0000000000001p-1022
-  },
-  { // Entry 1278
-    -0x1.00000000000010p-1022,
-    -0x1.0000000000001p-1022
-  },
-  { // Entry 1279
-    0x1.p-1022,
-    0x1.0p-1022
-  },
-  { // Entry 1280
-    -0x1.p-1022,
-    -0x1.0p-1022
-  },
-  { // Entry 1281
-    0x1.ffffffffffffe0p-1023,
-    0x1.ffffffffffffep-1023
-  },
-  { // Entry 1282
-    -0x1.ffffffffffffe0p-1023,
-    -0x1.ffffffffffffep-1023
-  },
-  { // Entry 1283
-    0x1.ffffffffffffc0p-1023,
-    0x1.ffffffffffffcp-1023
-  },
-  { // Entry 1284
-    -0x1.ffffffffffffc0p-1023,
-    -0x1.ffffffffffffcp-1023
-  },
-  { // Entry 1285
-    0x1.p-1073,
-    0x1.0p-1073
-  },
-  { // Entry 1286
-    -0x1.p-1073,
-    -0x1.0p-1073
-  },
-  { // Entry 1287
-    0x1.p-1074,
-    0x1.0p-1074
-  },
-  { // Entry 1288
-    -0x1.p-1074,
-    -0x1.0p-1074
-  },
-  { // Entry 1289
-    0.0,
-    0.0
-  },
-  { // Entry 1290
-    -0.0,
-    -0.0
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_tan, tan_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_tan_intel_data)/sizeof(tan_intel_data_t); i++) {
-    EXPECT_DOUBLE_EQ(g_tan_intel_data[i].expected, tan(g_tan_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_tanf_test.cpp b/tests/math_tanf_test.cpp
deleted file mode 100644
index 9319046..0000000
--- a/tests/math_tanf_test.cpp
+++ /dev/null
@@ -1,4459 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-#include <math.h>
-
-#include <gtest/gtest.h>
-
-#if defined(__BIONIC__)
-typedef struct {
-  float expected;
-  float call_data;
-} tanf_intel_data_t;
-
-static tanf_intel_data_t g_tanf_intel_data[] = {
-  { // Entry 0
-    -0x1.00000000001555555555577777777777p-21,
-    -0x1.p-21
-  },
-  { // Entry 1
-    0x1.00000000001555555555577777777777p-21,
-    0x1.p-21
-  },
-  { // Entry 2
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 3
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 4
-    -0x1.00000200000000000000155555d55556p-41,
-    -0x1.000002p-41
-  },
-  { // Entry 5
-    0x1.00000200000000000000155555d55556p-41,
-    0x1.000002p-41
-  },
-  { // Entry 6
-    -0x1.ffb7eb004b7e12b369388faaa0342f6cp-3,
-    -0x1.27cca6p7
-  },
-  { // Entry 7
-    0x1.ffb7eb004b7e12b369388faaa0342f6cp-3,
-    0x1.27cca6p7
-  },
-  { // Entry 8
-    -0x1.3b7ddaffdc9a2fad39f329743fbf49e5p4,
-    -0x1.2a5996p2
-  },
-  { // Entry 9
-    0x1.3b7ddaffdc9a2fad39f329743fbf49e5p4,
-    0x1.2a5996p2
-  },
-  { // Entry 10
-    0x1.819f32ffd97b1ed667bc143387037ddep-1,
-    -0x1.3f7f22p1
-  },
-  { // Entry 11
-    -0x1.819f32ffd97b1ed667bc143387037ddep-1,
-    0x1.3f7f22p1
-  },
-  { // Entry 12
-    -0x1.405f900000000000000a7402846583d0p-38,
-    -0x1.405f90p-38
-  },
-  { // Entry 13
-    0x1.405f900000000000000a7402846583d0p-38,
-    0x1.405f90p-38
-  },
-  { // Entry 14
-    -0x1.8cd79995344c7943c7b3e021607da3cbp-2,
-    -0x1.496e80p96
-  },
-  { // Entry 15
-    0x1.8cd79995344c7943c7b3e021607da3cbp-2,
-    0x1.496e80p96
-  },
-  { // Entry 16
-    0x1.e144471ea2b49b6c1fdceff8ccceea7bp10,
-    -0x1.5fe0p3
-  },
-  { // Entry 17
-    -0x1.e144471ea2b49b6c1fdceff8ccceea7bp10,
-    0x1.5fe0p3
-  },
-  { // Entry 18
-    -0x1.ca0f4c2315ab5a9729e6afa857677b3fp-1,
-    -0x1.75aef0p-1
-  },
-  { // Entry 19
-    0x1.ca0f4c2315ab5a9729e6afa857677b3fp-1,
-    0x1.75aef0p-1
-  },
-  { // Entry 20
-    -0x1.c33ed50b887775a5d613c08c488fbb9cp3,
-    -0x1.80p0
-  },
-  { // Entry 21
-    0x1.c33ed50b887775a5d613c08c488fbb9cp3,
-    0x1.80p0
-  },
-  { // Entry 22
-    -0x1.c34513ee7140fdb8217e83dc2d6d6f53p3,
-    -0x1.800040p0
-  },
-  { // Entry 23
-    0x1.c34513ee7140fdb8217e83dc2d6d6f53p3,
-    0x1.800040p0
-  },
-  { // Entry 24
-    0x1.4e6b8a48164b9e1d8175e4512ab22ff1p0,
-    -0x1.8e3560p98
-  },
-  { // Entry 25
-    -0x1.4e6b8a48164b9e1d8175e4512ab22ff1p0,
-    0x1.8e3560p98
-  },
-  { // Entry 26
-    -0x1.d017e0214a953265d8dd5c0a11ea61d1p-1,
-    -0x1.9de7d4p4
-  },
-  { // Entry 27
-    0x1.d017e0214a953265d8dd5c0a11ea61d1p-1,
-    0x1.9de7d4p4
-  },
-  { // Entry 28
-    -0x1.d0473f02270c0eec883e753e50800670p-1,
-    -0x1.9de8a4p4
-  },
-  { // Entry 29
-    0x1.d0473f02270c0eec883e753e50800670p-1,
-    0x1.9de8a4p4
-  },
-  { // Entry 30
-    0x1.d0aada22aa5e3dc35b5063c639047df5p-1,
-    -0x1.be7e5ap5
-  },
-  { // Entry 31
-    -0x1.d0aada22aa5e3dc35b5063c639047df5p-1,
-    0x1.be7e5ap5
-  },
-  { // Entry 32
-    -0x1.ee9495000a190cdb6db3e83d2c05ef38p-2,
-    -0x1.ccbeb0p-2
-  },
-  { // Entry 33
-    0x1.ee9495000a190cdb6db3e83d2c05ef38p-2,
-    0x1.ccbeb0p-2
-  },
-  { // Entry 34
-    0x1.dc32eba638d13458c7b29d96abffe1cap-7,
-    -0x1.fffep127
-  },
-  { // Entry 35
-    -0x1.dc32eba638d13458c7b29d96abffe1cap-7,
-    0x1.fffep127
-  },
-  { // Entry 36
-    0x1.00000000001555555555577777777777p-21,
-    0x1.p-21
-  },
-  { // Entry 37
-    -0x1.00000000001555555555577777777777p-21,
-    -0x1.p-21
-  },
-  { // Entry 38
-    0x1.p-131,
-    0x1.p-131
-  },
-  { // Entry 39
-    -0x1.p-131,
-    -0x1.p-131
-  },
-  { // Entry 40
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 41
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 42
-    0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
-    0x1.p63
-  },
-  { // Entry 43
-    -0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
-    -0x1.p63
-  },
-  { // Entry 44
-    0x1.00000200000000000000155555d55556p-41,
-    0x1.000002p-41
-  },
-  { // Entry 45
-    -0x1.00000200000000000000155555d55556p-41,
-    -0x1.000002p-41
-  },
-  { // Entry 46
-    -0x1.adb7eb6d8cebbe362f197dbeda5c113cp-1,
-    0x1.000002p51
-  },
-  { // Entry 47
-    0x1.adb7eb6d8cebbe362f197dbeda5c113cp-1,
-    -0x1.000002p51
-  },
-  { // Entry 48
-    0x1.f7762b752b006715d90c389a11826d6bp1,
-    0x1.000004p127
-  },
-  { // Entry 49
-    -0x1.f7762b752b006715d90c389a11826d6bp1,
-    -0x1.000004p127
-  },
-  { // Entry 50
-    -0x1.09cff10000671912c84762f18c285470p0,
-    0x1.000090p7
-  },
-  { // Entry 51
-    0x1.09cff10000671912c84762f18c285470p0,
-    -0x1.000090p7
-  },
-  { // Entry 52
-    0x1.015901017edb67aa7e52ae694e990a19p-3,
-    0x1.000180p-3
-  },
-  { // Entry 53
-    -0x1.015901017edb67aa7e52ae694e990a19p-3,
-    -0x1.000180p-3
-  },
-  { // Entry 54
-    0x1.0002200000000000000055577559d958p-40,
-    0x1.000220p-40
-  },
-  { // Entry 55
-    -0x1.0002200000000000000055577559d958p-40,
-    -0x1.000220p-40
-  },
-  { // Entry 56
-    0x1.6d53796cdd401e3ddc09e835b8ea660ap3,
-    0x1.000380p127
-  },
-  { // Entry 57
-    -0x1.6d53796cdd401e3ddc09e835b8ea660ap3,
-    -0x1.000380p127
-  },
-  { // Entry 58
-    -0x1.b070e3a6968463af6e9db922e7845524p-7,
-    0x1.000880p9
-  },
-  { // Entry 59
-    0x1.b070e3a6968463af6e9db922e7845524p-7,
-    -0x1.000880p9
-  },
-  { // Entry 60
-    -0x1.fa61dcffa3efe325b32704fc412462cfp1,
-    0x1.0020p62
-  },
-  { // Entry 61
-    0x1.fa61dcffa3efe325b32704fc412462cfp1,
-    -0x1.0020p62
-  },
-  { // Entry 62
-    0x1.fffd825a3f377f012209982a00c346f0p-2,
-    0x1.0060p90
-  },
-  { // Entry 63
-    -0x1.fffd825a3f377f012209982a00c346f0p-2,
-    -0x1.0060p90
-  },
-  { // Entry 64
-    0x1.013c68fff04b698165dfdf9d48444a95p-6,
-    0x1.0137p-6
-  },
-  { // Entry 65
-    -0x1.013c68fff04b698165dfdf9d48444a95p-6,
-    -0x1.0137p-6
-  },
-  { // Entry 66
-    0x1.932c994f61d804a084f20d975a617c50p0,
-    0x1.014cp0
-  },
-  { // Entry 67
-    -0x1.932c994f61d804a084f20d975a617c50p0,
-    -0x1.014cp0
-  },
-  { // Entry 68
-    -0x1.c34ec20533e760565cb762b15c18d6fcp1,
-    0x1.020446p58
-  },
-  { // Entry 69
-    0x1.c34ec20533e760565cb762b15c18d6fcp1,
-    -0x1.020446p58
-  },
-  { // Entry 70
-    0x1.9ff71767ea051e4e9cc0008922b11129p0,
-    0x1.04e4p0
-  },
-  { // Entry 71
-    -0x1.9ff71767ea051e4e9cc0008922b11129p0,
-    -0x1.04e4p0
-  },
-  { // Entry 72
-    0x1.07c9c5001659079722f8e9190ffe6ec6p-3,
-    0x1.0658p-3
-  },
-  { // Entry 73
-    -0x1.07c9c5001659079722f8e9190ffe6ec6p-3,
-    -0x1.0658p-3
-  },
-  { // Entry 74
-    0x1.fd611072a50357e6266768b2cdf0194cp-3,
-    0x1.0ac710p100
-  },
-  { // Entry 75
-    -0x1.fd611072a50357e6266768b2cdf0194cp-3,
-    -0x1.0ac710p100
-  },
-  { // Entry 76
-    0x1.0ddbb5000244c4fb972eb72de00896c0p-3,
-    0x1.0c50p-3
-  },
-  { // Entry 77
-    -0x1.0ddbb5000244c4fb972eb72de00896c0p-3,
-    -0x1.0c50p-3
-  },
-  { // Entry 78
-    -0x1.c0aeb5f84be95da5ab0716dfba205e28p2,
-    0x1.0ddcp96
-  },
-  { // Entry 79
-    0x1.c0aeb5f84be95da5ab0716dfba205e28p2,
-    -0x1.0ddcp96
-  },
-  { // Entry 80
-    0x1.340754fffffeb780761e86337f0c55efp1,
-    0x1.0e28a6p4
-  },
-  { // Entry 81
-    -0x1.340754fffffeb780761e86337f0c55efp1,
-    -0x1.0e28a6p4
-  },
-  { // Entry 82
-    0x1.349d95ffee472ec7c10934570d3ba486p-1,
-    0x1.15bcp-1
-  },
-  { // Entry 83
-    -0x1.349d95ffee472ec7c10934570d3ba486p-1,
-    -0x1.15bcp-1
-  },
-  { // Entry 84
-    0x1.eec72403a4fd24d0c9e2af088a05fb85p0,
-    0x1.17e4p0
-  },
-  { // Entry 85
-    -0x1.eec72403a4fd24d0c9e2af088a05fb85p0,
-    -0x1.17e4p0
-  },
-  { // Entry 86
-    0x1.ef4bd7a215237b3065d569fd4c5f5a47p0,
-    0x1.18p0
-  },
-  { // Entry 87
-    -0x1.ef4bd7a215237b3065d569fd4c5f5a47p0,
-    -0x1.18p0
-  },
-  { // Entry 88
-    -0x1.fe793900138c9941836b4fcbc9b2260dp-4,
-    0x1.18p64
-  },
-  { // Entry 89
-    0x1.fe793900138c9941836b4fcbc9b2260dp-4,
-    -0x1.18p64
-  },
-  { // Entry 90
-    0x1.f08f0873c5819a9f7cc6bbf3c5291cc0p0,
-    0x1.1844p0
-  },
-  { // Entry 91
-    -0x1.f08f0873c5819a9f7cc6bbf3c5291cc0p0,
-    -0x1.1844p0
-  },
-  { // Entry 92
-    0x1.5c51cc18f091bc4b54ee83623438c9a7p11,
-    0x1.18fffep19
-  },
-  { // Entry 93
-    -0x1.5c51cc18f091bc4b54ee83623438c9a7p11,
-    -0x1.18fffep19
-  },
-  { // Entry 94
-    0x1.2633567898e691eeb87ad026bd16a7e4p-2,
-    0x1.1e7cp-2
-  },
-  { // Entry 95
-    -0x1.2633567898e691eeb87ad026bd16a7e4p-2,
-    -0x1.1e7cp-2
-  },
-  { // Entry 96
-    0x1.ffffedf558bfb3100f61125f296b8badp1,
-    0x1.1ebep18
-  },
-  { // Entry 97
-    -0x1.ffffedf558bfb3100f61125f296b8badp1,
-    -0x1.1ebep18
-  },
-  { // Entry 98
-    0x1.0e551b00007fae17236421a76e861c75p1,
-    0x1.20ea9cp0
-  },
-  { // Entry 99
-    -0x1.0e551b00007fae17236421a76e861c75p1,
-    -0x1.20ea9cp0
-  },
-  { // Entry 100
-    0x1.c07dfb0552ba60b71c7df6bd7ca409d6p20,
-    0x1.2106cap5
-  },
-  { // Entry 101
-    -0x1.c07dfb0552ba60b71c7df6bd7ca409d6p20,
-    -0x1.2106cap5
-  },
-  { // Entry 102
-    -0x1.fd23fd64a4bfcfb597c46933649f5ae2p-2,
-    0x1.219dc6p119
-  },
-  { // Entry 103
-    0x1.fd23fd64a4bfcfb597c46933649f5ae2p-2,
-    -0x1.219dc6p119
-  },
-  { // Entry 104
-    -0x1.b93c13000d016d14e756c25e42302d9fp-3,
-    0x1.26cd6ap3
-  },
-  { // Entry 105
-    0x1.b93c13000d016d14e756c25e42302d9fp-3,
-    -0x1.26cd6ap3
-  },
-  { // Entry 106
-    -0x1.ebcbcb138b274cbcbe61af5113da83ecp-4,
-    0x1.29c4e0p3
-  },
-  { // Entry 107
-    0x1.ebcbcb138b274cbcbe61af5113da83ecp-4,
-    -0x1.29c4e0p3
-  },
-  { // Entry 108
-    0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
-    0x1.2d97c8p4
-  },
-  { // Entry 109
-    -0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
-    -0x1.2d97c8p4
-  },
-  { // Entry 110
-    -0x1.ed18af0b0ba80dfa6e8ee1b3b31dfc60p-1,
-    0x1.30p1
-  },
-  { // Entry 111
-    0x1.ed18af0b0ba80dfa6e8ee1b3b31dfc60p-1,
-    -0x1.30p1
-  },
-  { // Entry 112
-    0x1.9ab24111cfc62df4dbca320216b94651p-4,
-    0x1.30ca70p3
-  },
-  { // Entry 113
-    -0x1.9ab24111cfc62df4dbca320216b94651p-4,
-    -0x1.30ca70p3
-  },
-  { // Entry 114
-    0x1.337d8ffffffede62f050e98b3b9596e1p-3,
-    0x1.3135f0p-3
-  },
-  { // Entry 115
-    -0x1.337d8ffffffede62f050e98b3b9596e1p-3,
-    -0x1.3135f0p-3
-  },
-  { // Entry 116
-    0x1.348e650000002ef3a765b9416d12cf7ep-3,
-    0x1.3240bcp-3
-  },
-  { // Entry 117
-    -0x1.348e650000002ef3a765b9416d12cf7ep-3,
-    -0x1.3240bcp-3
-  },
-  { // Entry 118
-    -0x1.b9e58aec61a44ab533c2b83726367e17p-8,
-    0x1.32d53cp16
-  },
-  { // Entry 119
-    0x1.b9e58aec61a44ab533c2b83726367e17p-8,
-    -0x1.32d53cp16
-  },
-  { // Entry 120
-    -0x1.e1fd68edea44fb78780ed62e73c6e017p-6,
-    0x1.3a0aa8p6
-  },
-  { // Entry 121
-    0x1.e1fd68edea44fb78780ed62e73c6e017p-6,
-    -0x1.3a0aa8p6
-  },
-  { // Entry 122
-    -0x1.62a28100001393080f6733dfaf9c76fcp-1,
-    0x1.4495bap1
-  },
-  { // Entry 123
-    0x1.62a28100001393080f6733dfaf9c76fcp-1,
-    -0x1.4495bap1
-  },
-  { // Entry 124
-    0x1.b923c3ba0bc0c500ba4c245301bad207p1,
-    0x1.49d42ap0
-  },
-  { // Entry 125
-    -0x1.b923c3ba0bc0c500ba4c245301bad207p1,
-    -0x1.49d42ap0
-  },
-  { // Entry 126
-    0x1.541f3f00022ac25cc8a90855ab6bb808p-3,
-    0x1.510bbcp-3
-  },
-  { // Entry 127
-    -0x1.541f3f00022ac25cc8a90855ab6bb808p-3,
-    -0x1.510bbcp-3
-  },
-  { // Entry 128
-    0x1.76f3efffff3057122e6e7ce50d12cbcep-3,
-    0x1.549520p100
-  },
-  { // Entry 129
-    -0x1.76f3efffff3057122e6e7ce50d12cbcep-3,
-    -0x1.549520p100
-  },
-  { // Entry 130
-    0x1.4cac0300643e12c46203b47d3eeed4ffp-9,
-    0x1.54c4bap24
-  },
-  { // Entry 131
-    -0x1.4cac0300643e12c46203b47d3eeed4ffp-9,
-    -0x1.54c4bap24
-  },
-  { // Entry 132
-    -0x1.70d5450000058974c20b97ba96fdae03p-3,
-    0x1.5a757ep24
-  },
-  { // Entry 133
-    0x1.70d5450000058974c20b97ba96fdae03p-3,
-    -0x1.5a757ep24
-  },
-  { // Entry 134
-    -0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
-    0x1.5fdbc0p2
-  },
-  { // Entry 135
-    0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
-    -0x1.5fdbc0p2
-  },
-  { // Entry 136
-    -0x1.ffb68f0050dabe5ce719202610fcac2ep-1,
-    0x1.5fe056p2
-  },
-  { // Entry 137
-    0x1.ffb68f0050dabe5ce719202610fcac2ep-1,
-    -0x1.5fe056p2
-  },
-  { // Entry 138
-    -0x1.dabb46e3937e6c505ab2062232339a16p-7,
-    0x1.6493d4p95
-  },
-  { // Entry 139
-    0x1.dabb46e3937e6c505ab2062232339a16p-7,
-    -0x1.6493d4p95
-  },
-  { // Entry 140
-    0x1.c832162481e1ce4f01736bb97a3019b9p-1,
-    0x1.74a566p-1
-  },
-  { // Entry 141
-    -0x1.c832162481e1ce4f01736bb97a3019b9p-1,
-    -0x1.74a566p-1
-  },
-  { // Entry 142
-    0x1.7b2fa40000038d569226512c77976ff5p-3,
-    0x1.76f0b2p-3
-  },
-  { // Entry 143
-    -0x1.7b2fa40000038d569226512c77976ff5p-3,
-    -0x1.76f0b2p-3
-  },
-  { // Entry 144
-    -0x1.4f375ad9dee5fd604fb29435f32efe57p1,
-    0x1.78b3fap100
-  },
-  { // Entry 145
-    0x1.4f375ad9dee5fd604fb29435f32efe57p1,
-    -0x1.78b3fap100
-  },
-  { // Entry 146
-    -0x1.00005efffbe73e7bafeab7f76c8a93efp0,
-    0x1.78fdb4p3
-  },
-  { // Entry 147
-    0x1.00005efffbe73e7bafeab7f76c8a93efp0,
-    -0x1.78fdb4p3
-  },
-  { // Entry 148
-    -0x1.fc3ace000029c331692aa9fe4e42f004p-1,
-    0x1.791cp3
-  },
-  { // Entry 149
-    0x1.fc3ace000029c331692aa9fe4e42f004p-1,
-    -0x1.791cp3
-  },
-  { // Entry 150
-    0x1.dcfa3254b53b6a70cec4473abe850102p-1,
-    0x1.7ffffep-1
-  },
-  { // Entry 151
-    -0x1.dcfa3254b53b6a70cec4473abe850102p-1,
-    -0x1.7ffffep-1
-  },
-  { // Entry 152
-    0x1.c33ed50b887775a5d613c08c488fbb9cp3,
-    0x1.80p0
-  },
-  { // Entry 153
-    -0x1.c33ed50b887775a5d613c08c488fbb9cp3,
-    -0x1.80p0
-  },
-  { // Entry 154
-    0x1.8008p-130,
-    0x1.8008p-130
-  },
-  { // Entry 155
-    -0x1.8008p-130,
-    -0x1.8008p-130
-  },
-  { // Entry 156
-    -0x1.f96370ec482d2bb0eb8ea7a530139fcfp-5,
-    0x1.8180p83
-  },
-  { // Entry 157
-    0x1.f96370ec482d2bb0eb8ea7a530139fcfp-5,
-    -0x1.8180p83
-  },
-  { // Entry 158
-    -0x1.fff664faa6f86fa8b4e5e2719d2195cfp-1,
-    0x1.89e090p9
-  },
-  { // Entry 159
-    0x1.fff664faa6f86fa8b4e5e2719d2195cfp-1,
-    -0x1.89e090p9
-  },
-  { // Entry 160
-    0x1.1c051101643be740782fe0dfc9dcd1ccp0,
-    0x1.8c631ep15
-  },
-  { // Entry 161
-    -0x1.1c051101643be740782fe0dfc9dcd1ccp0,
-    -0x1.8c631ep15
-  },
-  { // Entry 162
-    0x1.bb2e88f26b9363f9a852665f3413d994p13,
-    0x1.8c67fep127
-  },
-  { // Entry 163
-    -0x1.bb2e88f26b9363f9a852665f3413d994p13,
-    -0x1.8c67fep127
-  },
-  { // Entry 164
-    -0x1.f0e4ec133585cb30e67cfcbb36faad8ep1,
-    0x1.91d858p12
-  },
-  { // Entry 165
-    0x1.f0e4ec133585cb30e67cfcbb36faad8ep1,
-    -0x1.91d858p12
-  },
-  { // Entry 166
-    -0x1.5d14946dc98975d6421a55284fe020a1p24,
-    0x1.921fb6p0
-  },
-  { // Entry 167
-    0x1.5d14946dc98975d6421a55284fe020a1p24,
-    -0x1.921fb6p0
-  },
-  { // Entry 168
-    0x1.980ee0cfbf0f1ebc9d4fd24cce3cdfe7p15,
-    0x1.922922p15
-  },
-  { // Entry 169
-    -0x1.980ee0cfbf0f1ebc9d4fd24cce3cdfe7p15,
-    -0x1.922922p15
-  },
-  { // Entry 170
-    -0x1.fd43f8e891e227ddad2fb2e5520d4ff2p-1,
-    0x1.9230fep15
-  },
-  { // Entry 171
-    0x1.fd43f8e891e227ddad2fb2e5520d4ff2p-1,
-    -0x1.9230fep15
-  },
-  { // Entry 172
-    0x1.cf38f6212e7e6276f4add54878f1a7dbp-1,
-    0x1.9510c8p6
-  },
-  { // Entry 173
-    -0x1.cf38f6212e7e6276f4add54878f1a7dbp-1,
-    -0x1.9510c8p6
-  },
-  { // Entry 174
-    0x1.d03d45024c3ca4a2c4e1a91856135046p-1,
-    0x1.9511e6p6
-  },
-  { // Entry 175
-    -0x1.d03d45024c3ca4a2c4e1a91856135046p-1,
-    -0x1.9511e6p6
-  },
-  { // Entry 176
-    0x1.0554eb5cbd393e4f0770c86528f39ee1p17,
-    0x1.979f24p9
-  },
-  { // Entry 177
-    -0x1.0554eb5cbd393e4f0770c86528f39ee1p17,
-    -0x1.979f24p9
-  },
-  { // Entry 178
-    0x1.fad5df93de3051cf018ab32c0b323571p-1,
-    0x1.a1e862p119
-  },
-  { // Entry 179
-    -0x1.fad5df93de3051cf018ab32c0b323571p-1,
-    -0x1.a1e862p119
-  },
-  { // Entry 180
-    0x1.ff981b1534f78016bea4d9588254e996p3,
-    0x1.ad1fp63
-  },
-  { // Entry 181
-    -0x1.ff981b1534f78016bea4d9588254e996p3,
-    -0x1.ad1fp63
-  },
-  { // Entry 182
-    -0x1.fff4a1db1e1e38c438ddd38bb94f6d31p1,
-    0x1.ada3dap39
-  },
-  { // Entry 183
-    0x1.fff4a1db1e1e38c438ddd38bb94f6d31p1,
-    -0x1.ada3dap39
-  },
-  { // Entry 184
-    0x1.d01529023d951390200a4252f038b4afp-1,
-    0x1.b125bap5
-  },
-  { // Entry 185
-    -0x1.d01529023d951390200a4252f038b4afp-1,
-    -0x1.b125bap5
-  },
-  { // Entry 186
-    0x1.d67fa105f76868612c84f74a1f38f0acp-2,
-    0x1.b90a02p-2
-  },
-  { // Entry 187
-    -0x1.d67fa105f76868612c84f74a1f38f0acp-2,
-    -0x1.b90a02p-2
-  },
-  { // Entry 188
-    0x1.99663da94dbd57199cb8e3dae7018358p-23,
-    0x1.beeeeep80
-  },
-  { // Entry 189
-    -0x1.99663da94dbd57199cb8e3dae7018358p-23,
-    -0x1.beeeeep80
-  },
-  { // Entry 190
-    0x1.eb96571eb9da1337e703cc20e41e9719p-13,
-    0x1.c3abf0p24
-  },
-  { // Entry 191
-    -0x1.eb96571eb9da1337e703cc20e41e9719p-13,
-    -0x1.c3abf0p24
-  },
-  { // Entry 192
-    0x1.e198c48bef954151ee075815d85c5363p0,
-    0x1.c71c74p116
-  },
-  { // Entry 193
-    -0x1.e198c48bef954151ee075815d85c5363p0,
-    -0x1.c71c74p116
-  },
-  { // Entry 194
-    -0x1.e50e524610728cfb239cc6305b212fd6p-1,
-    0x1.cc3252p18
-  },
-  { // Entry 195
-    0x1.e50e524610728cfb239cc6305b212fd6p-1,
-    -0x1.cc3252p18
-  },
-  { // Entry 196
-    -0x1.6a69e7bb21b52030964bc21ced077c71p19,
-    0x1.d38a2ap19
-  },
-  { // Entry 197
-    0x1.6a69e7bb21b52030964bc21ced077c71p19,
-    -0x1.d38a2ap19
-  },
-  { // Entry 198
-    0x1.6529bf81b958ca781cdaac7cec6e636ep0,
-    0x1.df0648p24
-  },
-  { // Entry 199
-    -0x1.6529bf81b958ca781cdaac7cec6e636ep0,
-    -0x1.df0648p24
-  },
-  { // Entry 200
-    0x1.659e43b4315f21ba5e7048b1d8d7815cp0,
-    0x1.df2204p24
-  },
-  { // Entry 201
-    -0x1.659e43b4315f21ba5e7048b1d8d7815cp0,
-    -0x1.df2204p24
-  },
-  { // Entry 202
-    -0x1.71a580ffc4e167ae0ef8b02d5d27c99dp-1,
-    0x1.df34p24
-  },
-  { // Entry 203
-    0x1.71a580ffc4e167ae0ef8b02d5d27c99dp-1,
-    -0x1.df34p24
-  },
-  { // Entry 204
-    0x1.ecf119000017a2caef4290b4d6c63785p-4,
-    0x1.ea951ap-4
-  },
-  { // Entry 205
-    -0x1.ecf119000017a2caef4290b4d6c63785p-4,
-    -0x1.ea951ap-4
-  },
-  { // Entry 206
-    0x1.ccd55821fad69755c2d824be2bfd4c64p-1,
-    0x1.efedc6p1
-  },
-  { // Entry 207
-    -0x1.ccd55821fad69755c2d824be2bfd4c64p-1,
-    -0x1.efedc6p1
-  },
-  { // Entry 208
-    0x1.d6981efffff2549634686a24dfda77cep-1,
-    0x1.f143a2p1
-  },
-  { // Entry 209
-    -0x1.d6981efffff2549634686a24dfda77cep-1,
-    -0x1.f143a2p1
-  },
-  { // Entry 210
-    0x1.dba4d1124a78a6803a0965af0ab79f88p3,
-    0x1.f25b06p2
-  },
-  { // Entry 211
-    -0x1.dba4d1124a78a6803a0965af0ab79f88p3,
-    -0x1.f25b06p2
-  },
-  { // Entry 212
-    -0x1.6dfcbaffd78023ecfabbf7ccf0a0e4b4p-1,
-    0x1.f32218p24
-  },
-  { // Entry 213
-    0x1.6dfcbaffd78023ecfabbf7ccf0a0e4b4p-1,
-    -0x1.f32218p24
-  },
-  { // Entry 214
-    -0x1.ec35cf000061079295ead714892db1cap1,
-    0x1.f44dbcp58
-  },
-  { // Entry 215
-    0x1.ec35cf000061079295ead714892db1cap1,
-    -0x1.f44dbcp58
-  },
-  { // Entry 216
-    0x1.db06c10d2a959715bc0a2e75e6da093bp4,
-    0x1.f47ffep2
-  },
-  { // Entry 217
-    -0x1.db06c10d2a959715bc0a2e75e6da093bp4,
-    -0x1.f47ffep2
-  },
-  { // Entry 218
-    0x1.ffffeb55643b9a648c2720bde1d22764p-1,
-    0x1.f6a7a0p1
-  },
-  { // Entry 219
-    -0x1.ffffeb55643b9a648c2720bde1d22764p-1,
-    -0x1.f6a7a0p1
-  },
-  { // Entry 220
-    0x1.c0a570ffffd379d0972ea78cd040c304p-3,
-    0x1.f6ded8p8
-  },
-  { // Entry 221
-    -0x1.c0a570ffffd379d0972ea78cd040c304p-3,
-    -0x1.f6ded8p8
-  },
-  { // Entry 222
-    -0x1.cdf18d01234809a6895315e9de59d864p-1,
-    0x1.f7ffbep15
-  },
-  { // Entry 223
-    0x1.cdf18d01234809a6895315e9de59d864p-1,
-    -0x1.f7ffbep15
-  },
-  { // Entry 224
-    -0x1.82f196fb60a81dc3b4dcbbc831ab8f85p-1,
-    0x1.f7fffep47
-  },
-  { // Entry 225
-    0x1.82f196fb60a81dc3b4dcbbc831ab8f85p-1,
-    -0x1.f7fffep47
-  },
-  { // Entry 226
-    0x1.6c03590f3fe3b7d29e89ee0e65fc9b1ep0,
-    0x1.f87d58p24
-  },
-  { // Entry 227
-    -0x1.6c03590f3fe3b7d29e89ee0e65fc9b1ep0,
-    -0x1.f87d58p24
-  },
-  { // Entry 228
-    -0x1.c7ae6e9c145b8d54f7719893fa03849fp27,
-    0x1.f9cbe2p7
-  },
-  { // Entry 229
-    0x1.c7ae6e9c145b8d54f7719893fa03849fp27,
-    -0x1.f9cbe2p7
-  },
-  { // Entry 230
-    0x1.6d2910005161b2bfa61134d0fbc9e9c0p0,
-    0x1.fd86bcp24
-  },
-  { // Entry 231
-    -0x1.6d2910005161b2bfa61134d0fbc9e9c0p0,
-    -0x1.fd86bcp24
-  },
-  { // Entry 232
-    0x1.6c8f8d0c3ad4bbb639a3f3a94237f69fp0,
-    0x1.fefa4ap24
-  },
-  { // Entry 233
-    -0x1.6c8f8d0c3ad4bbb639a3f3a94237f69fp0,
-    -0x1.fefa4ap24
-  },
-  { // Entry 234
-    0x1.00e5b5fffa13f7d9c4b0b52fe11a339bp-3,
-    0x1.ff1ffep-4
-  },
-  { // Entry 235
-    -0x1.00e5b5fffa13f7d9c4b0b52fe11a339bp-3,
-    -0x1.ff1ffep-4
-  },
-  { // Entry 236
-    0x1.ff3f41f01c5b360cce75b67877ffd677p0,
-    0x1.ff7ffep41
-  },
-  { // Entry 237
-    -0x1.ff3f41f01c5b360cce75b67877ffd677p0,
-    -0x1.ff7ffep41
-  },
-  { // Entry 238
-    -0x1.86dd5e00d7edc7266969bf5198438babp0,
-    0x1.ff9ffep12
-  },
-  { // Entry 239
-    0x1.86dd5e00d7edc7266969bf5198438babp0,
-    -0x1.ff9ffep12
-  },
-  { // Entry 240
-    -0x1.f8fe4579fdee2491c7d8572ea512fe93p5,
-    0x1.fffbfep45
-  },
-  { // Entry 241
-    0x1.f8fe4579fdee2491c7d8572ea512fe93p5,
-    -0x1.fffbfep45
-  },
-  { // Entry 242
-    -0x1.85ff462f0f86ff44641305da18ea8fc8p-13,
-    0x1.fffdf2p23
-  },
-  { // Entry 243
-    0x1.85ff462f0f86ff44641305da18ea8fc8p-13,
-    -0x1.fffdf2p23
-  },
-  { // Entry 244
-    0x1.3392e2ffbcb25fc1b016b9136e69c00bp-2,
-    0x1.fffdfep3
-  },
-  { // Entry 245
-    -0x1.3392e2ffbcb25fc1b016b9136e69c00bp-2,
-    -0x1.fffdfep3
-  },
-  { // Entry 246
-    -0x1.2f6c4bd2605f037f8609819f865a8dcbp8,
-    0x1.fffe3ep41
-  },
-  { // Entry 247
-    0x1.2f6c4bd2605f037f8609819f865a8dcbp8,
-    -0x1.fffe3ep41
-  },
-  { // Entry 248
-    -0x1.53a2e90e817727255e6ddf64e28c019cp-9,
-    0x1.fffe7ep103
-  },
-  { // Entry 249
-    0x1.53a2e90e817727255e6ddf64e28c019cp-9,
-    -0x1.fffe7ep103
-  },
-  { // Entry 250
-    -0x1.b34676f095b5b1a325426cdf42c04799p2,
-    0x1.ffff7ep2
-  },
-  { // Entry 251
-    0x1.b34676f095b5b1a325426cdf42c04799p2,
-    -0x1.ffff7ep2
-  },
-  { // Entry 252
-    0x1.f640d94e6241db4349e33bed67cbd3dbp-1,
-    0x1.ffff7ep119
-  },
-  { // Entry 253
-    -0x1.f640d94e6241db4349e33bed67cbd3dbp-1,
-    -0x1.ffff7ep119
-  },
-  { // Entry 254
-    0x1.526c269bdda8a89d90706870f3801eafp-1,
-    0x1.ffffeep4
-  },
-  { // Entry 255
-    -0x1.526c269bdda8a89d90706870f3801eafp-1,
-    -0x1.ffffeep4
-  },
-  { // Entry 256
-    -0x1.a37593c105e1462c2a37260603483da6p1,
-    0x1.fffffcp12
-  },
-  { // Entry 257
-    0x1.a37593c105e1462c2a37260603483da6p1,
-    -0x1.fffffcp12
-  },
-  { // Entry 258
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 259
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 260
-    0.0,
-    0.0
-  },
-  { // Entry 261
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 262
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 263
-    -0x1.000002p-126,
-    -0x1.000002p-126
-  },
-  { // Entry 264
-    0x1.000002p-126,
-    0x1.000002p-126
-  },
-  { // Entry 265
-    -0x1.p-126,
-    -0x1.p-126
-  },
-  { // Entry 266
-    0x1.p-126,
-    0x1.p-126
-  },
-  { // Entry 267
-    -0x1.fffffcp-127,
-    -0x1.fffffcp-127
-  },
-  { // Entry 268
-    0x1.fffffcp-127,
-    0x1.fffffcp-127
-  },
-  { // Entry 269
-    0x1.fffffcp-127,
-    0x1.fffffcp-127
-  },
-  { // Entry 270
-    -0x1.fffffcp-127,
-    -0x1.fffffcp-127
-  },
-  { // Entry 271
-    0x1.p-126,
-    0x1.p-126
-  },
-  { // Entry 272
-    -0x1.p-126,
-    -0x1.p-126
-  },
-  { // Entry 273
-    0x1.000002p-126,
-    0x1.000002p-126
-  },
-  { // Entry 274
-    -0x1.000002p-126,
-    -0x1.000002p-126
-  },
-  { // Entry 275
-    0x1.99999a57619f679b6193af8a0a7a8778p-13,
-    0x1.99999ap-13
-  },
-  { // Entry 276
-    -0x1.99999a57619f679b6193af8a0a7a8778p-13,
-    -0x1.99999ap-13
-  },
-  { // Entry 277
-    0x1.99999b5d867eaadd0305587399905311p-12,
-    0x1.99999ap-12
-  },
-  { // Entry 278
-    -0x1.99999b5d867eaadd0305587399905311p-12,
-    -0x1.99999ap-12
-  },
-  { // Entry 279
-    0x1.3333364dd2fb949645bea998cbc1ee72p-11,
-    0x1.333334p-11
-  },
-  { // Entry 280
-    -0x1.3333364dd2fb949645bea998cbc1ee72p-11,
-    -0x1.333334p-11
-  },
-  { // Entry 281
-    0x1.99999f761a0b726c18b00c6496cbe10dp-11,
-    0x1.99999ap-11
-  },
-  { // Entry 282
-    -0x1.99999f761a0b726c18b00c6496cbe10dp-11,
-    -0x1.99999ap-11
-  },
-  { // Entry 283
-    0x1.000005555577777854854dedc28ead51p-10,
-    0x1.p-10
-  },
-  { // Entry 284
-    -0x1.000005555577777854854dedc28ead51p-10,
-    -0x1.p-10
-  },
-  { // Entry 285
-    0x1.33333d374c2e05d108161378389fc84fp-10,
-    0x1.333334p-10
-  },
-  { // Entry 286
-    -0x1.33333d374c2e05d108161378389fc84fp-10,
-    -0x1.333334p-10
-  },
-  { // Entry 287
-    0x1.666676a27a6d8214d198b2321ef9a9dcp-10,
-    0x1.666668p-10
-  },
-  { // Entry 288
-    -0x1.666676a27a6d8214d198b2321ef9a9dcp-10,
-    -0x1.666668p-10
-  },
-  { // Entry 289
-    0x1.9999b1d8698c24cfe3b90ffd006ffdcap-10,
-    0x1.99999cp-10
-  },
-  { // Entry 290
-    -0x1.9999b1d8698c24cfe3b90ffd006ffdcap-10,
-    -0x1.99999cp-10
-  },
-  { // Entry 291
-    0x1.cccceb1aa219f71bb19208d74a739bb1p-10,
-    0x1.ccccccp-10
-  },
-  { // Entry 292
-    -0x1.cccceb1aa219f71bb19208d74a739bb1p-10,
-    -0x1.ccccccp-10
-  },
-  { // Entry 293
-    0x1.0667d5968bbbbe4037024b9c93f7b049p-7,
-    0x1.066666p-7
-  },
-  { // Entry 294
-    -0x1.0667d5968bbbbe4037024b9c93f7b049p-7,
-    -0x1.066666p-7
-  },
-  { // Entry 295
-    0x1.ccd492d035a227758b8c30d79b168826p-7,
-    0x1.ccccccp-7
-  },
-  { // Entry 296
-    -0x1.ccd492d035a227758b8c30d79b168826p-7,
-    -0x1.ccccccp-7
-  },
-  { // Entry 297
-    0x1.49a4fa68e90d228f445026eb29adcefdp-6,
-    0x1.499998p-6
-  },
-  { // Entry 298
-    -0x1.49a4fa68e90d228f445026eb29adcefdp-6,
-    -0x1.499998p-6
-  },
-  { // Entry 299
-    0x1.ace5de090603fda8f519afece05c17eap-6,
-    0x1.acccccp-6
-  },
-  { // Entry 300
-    -0x1.ace5de090603fda8f519afece05c17eap-6,
-    -0x1.acccccp-6
-  },
-  { // Entry 301
-    0x1.081767fd3cb685f7b069146ce3333851p-5,
-    0x1.08p-5
-  },
-  { // Entry 302
-    -0x1.081767fd3cb685f7b069146ce3333851p-5,
-    -0x1.08p-5
-  },
-  { // Entry 303
-    0x1.39c0d745334a3387d672e4a05624bca5p-5,
-    0x1.39999ap-5
-  },
-  { // Entry 304
-    -0x1.39c0d745334a3387d672e4a05624bca5p-5,
-    -0x1.39999ap-5
-  },
-  { // Entry 305
-    0x1.6b702c627fc00b777ea8661cce36061cp-5,
-    0x1.6b3334p-5
-  },
-  { // Entry 306
-    -0x1.6b702c627fc00b777ea8661cce36061cp-5,
-    -0x1.6b3334p-5
-  },
-  { // Entry 307
-    0x1.9d26574cd84759bfff51d8bb18538a0dp-5,
-    0x1.9ccccep-5
-  },
-  { // Entry 308
-    -0x1.9d26574cd84759bfff51d8bb18538a0dp-5,
-    -0x1.9ccccep-5
-  },
-  { // Entry 309
-    0x1.cee4467e15bb7ef59658a8eddc195167p-5,
-    0x1.ce6666p-5
-  },
-  { // Entry 310
-    -0x1.cee4467e15bb7ef59658a8eddc195167p-5,
-    -0x1.ce6666p-5
-  },
-  { // Entry 311
-    0x1.a1eaed7aa62a740c0b2e09bcd0f735b5p-1,
-    0x1.5e7fc4p-1
-  },
-  { // Entry 312
-    -0x1.a1eaed7aa62a740c0b2e09bcd0f735b5p-1,
-    -0x1.5e7fc4p-1
-  },
-  { // Entry 313
-    0x1.d93b891cbcb15aac8b5796a0a16bf29ep1,
-    0x1.4e7fc4p0
-  },
-  { // Entry 314
-    -0x1.d93b891cbcb15aac8b5796a0a16bf29ep1,
-    -0x1.4e7fc4p0
-  },
-  { // Entry 315
-    -0x1.563ad063486c797653a68955c0bb1c0bp1,
-    0x1.edbfa6p0
-  },
-  { // Entry 316
-    0x1.563ad063486c797653a68955c0bb1c0bp1,
-    -0x1.edbfa6p0
-  },
-  { // Entry 317
-    -0x1.576b789d544b6d037c3b7119fd6dd6p-1,
-    0x1.467fc4p1
-  },
-  { // Entry 318
-    0x1.576b789d544b6d037c3b7119fd6dd6p-1,
-    -0x1.467fc4p1
-  },
-  { // Entry 319
-    0x1.00150652b2d7931e0c878875b9f4ba82p-5,
-    0x1.961fb4p1
-  },
-  { // Entry 320
-    -0x1.00150652b2d7931e0c878875b9f4ba82p-5,
-    -0x1.961fb4p1
-  },
-  { // Entry 321
-    0x1.87e987b6e5071dbd3f755a76a27d8fc8p-1,
-    0x1.e5bfa4p1
-  },
-  { // Entry 322
-    -0x1.87e987b6e5071dbd3f755a76a27d8fc8p-1,
-    -0x1.e5bfa4p1
-  },
-  { // Entry 323
-    0x1.a49e55bce1c8991232387ecd1124698ap1,
-    0x1.1aafcap2
-  },
-  { // Entry 324
-    -0x1.a49e55bce1c8991232387ecd1124698ap1,
-    -0x1.1aafcap2
-  },
-  { // Entry 325
-    -0x1.79cf03135a93679d5aa2e1dcc5adedafp1,
-    0x1.427fc2p2
-  },
-  { // Entry 326
-    0x1.79cf03135a93679d5aa2e1dcc5adedafp1,
-    -0x1.427fc2p2
-  },
-  { // Entry 327
-    -0x1.6f1f86fdb20bc9923627b94d771f5388p-1,
-    0x1.6a4fbap2
-  },
-  { // Entry 328
-    0x1.6f1f86fdb20bc9923627b94d771f5388p-1,
-    -0x1.6a4fbap2
-  },
-  { // Entry 329
-    -0x1.67747ca802821c66c87a086638f28d36p-1,
-    0x1.6af2f0p2
-  },
-  { // Entry 330
-    0x1.67747ca802821c66c87a086638f28d36p-1,
-    -0x1.6af2f0p2
-  },
-  { // Entry 331
-    -0x1.626a30298df0c42c2cf7a8f9c166d55dp1,
-    0x1.43c62ap2
-  },
-  { // Entry 332
-    0x1.626a30298df0c42c2cf7a8f9c166d55dp1,
-    -0x1.43c62ap2
-  },
-  { // Entry 333
-    0x1.d6ad8a22a4407cc68df20cda1ea1c6aap1,
-    0x1.1c9964p2
-  },
-  { // Entry 334
-    -0x1.d6ad8a22a4407cc68df20cda1ea1c6aap1,
-    -0x1.1c9964p2
-  },
-  { // Entry 335
-    0x1.a94d00a1710d9bcc7b80481f42857d05p-1,
-    0x1.ead93cp1
-  },
-  { // Entry 336
-    -0x1.a94d00a1710d9bcc7b80481f42857d05p-1,
-    -0x1.ead93cp1
-  },
-  { // Entry 337
-    0x1.4cb9f4d315a995b28bfbd6e6a0905738p-4,
-    0x1.9c7fb0p1
-  },
-  { // Entry 338
-    -0x1.4cb9f4d315a995b28bfbd6e6a0905738p-4,
-    -0x1.9c7fb0p1
-  },
-  { // Entry 339
-    -0x1.2cb6f3ba51cd4ca385d7f4a7567c3a0bp-1,
-    0x1.4e2624p1
-  },
-  { // Entry 340
-    0x1.2cb6f3ba51cd4ca385d7f4a7567c3a0bp-1,
-    -0x1.4e2624p1
-  },
-  { // Entry 341
-    -0x1.18d9399a8290b3f8b42a4afc1f4b21dep1,
-    0x1.ff9932p0
-  },
-  { // Entry 342
-    0x1.18d9399a8290b3f8b42a4afc1f4b21dep1,
-    -0x1.ff9932p0
-  },
-  { // Entry 343
-    0x1.56fd94b0c0681613d3831608457f5bf6p2,
-    0x1.62e61cp0
-  },
-  { // Entry 344
-    -0x1.56fd94b0c0681613d3831608457f5bf6p2,
-    -0x1.62e61cp0
-  },
-  { // Entry 345
-    0x1.f4ad37f13e818641fc1555bf78e0e942p-1,
-    0x1.8c662cp-1
-  },
-  { // Entry 346
-    -0x1.f4ad37f13e818641fc1555bf78e0e942p-1,
-    -0x1.8c662cp-1
-  },
-  { // Entry 347
-    0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
-    -0x1.a8aa1cp0
-  },
-  { // Entry 348
-    -0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
-    0x1.a8aa1cp0
-  },
-  { // Entry 349
-    0x1.0d71ffac1d5e6aa753cf804a2a8c1f5bp6,
-    -0x1.95ec8ap0
-  },
-  { // Entry 350
-    -0x1.0d71ffac1d5e6aa753cf804a2a8c1f5bp6,
-    0x1.95ec8ap0
-  },
-  { // Entry 351
-    -0x1.11d8498073e1f4b776fe5672abb1f54ap4,
-    -0x1.832ef8p0
-  },
-  { // Entry 352
-    0x1.11d8498073e1f4b776fe5672abb1f54ap4,
-    0x1.832ef8p0
-  },
-  { // Entry 353
-    -0x1.e3a34b32708883a8578805f84ea03c6ap2,
-    -0x1.707166p0
-  },
-  { // Entry 354
-    0x1.e3a34b32708883a8578805f84ea03c6ap2,
-    0x1.707166p0
-  },
-  { // Entry 355
-    -0x1.3429d2634054eaae3bdbee94a6cec17fp2,
-    -0x1.5db3d4p0
-  },
-  { // Entry 356
-    0x1.3429d2634054eaae3bdbee94a6cec17fp2,
-    0x1.5db3d4p0
-  },
-  { // Entry 357
-    -0x1.c08c957bbb45acafa856bfd792cbf663p1,
-    -0x1.4af642p0
-  },
-  { // Entry 358
-    0x1.c08c957bbb45acafa856bfd792cbf663p1,
-    0x1.4af642p0
-  },
-  { // Entry 359
-    -0x1.5d602b0d0bdda825221a53369c5338d7p1,
-    -0x1.3838b0p0
-  },
-  { // Entry 360
-    0x1.5d602b0d0bdda825221a53369c5338d7p1,
-    0x1.3838b0p0
-  },
-  { // Entry 361
-    -0x1.1b4894e498720ec01735a02e55eefad8p1,
-    -0x1.257b1ep0
-  },
-  { // Entry 362
-    0x1.1b4894e498720ec01735a02e55eefad8p1,
-    0x1.257b1ep0
-  },
-  { // Entry 363
-    -0x1.d74cb200ab59040290627a9b2ffe29cfp0,
-    -0x1.12bd92p0
-  },
-  { // Entry 364
-    0x1.d74cb200ab59040290627a9b2ffe29cfp0,
-    0x1.12bd92p0
-  },
-  { // Entry 365
-    -0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
-    -0x1.ea5c3ep-1
-  },
-  { // Entry 366
-    0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
-    0x1.ea5c3ep-1
-  },
-  { // Entry 367
-    -0x1.4d0defbcb48aa75ce13e1b82f1fcb049p0,
-    -0x1.d4b87cp-1
-  },
-  { // Entry 368
-    0x1.4d0defbcb48aa75ce13e1b82f1fcb049p0,
-    0x1.d4b87cp-1
-  },
-  { // Entry 369
-    -0x1.316c87fdb7599cb57354e4b99f38d7ffp0,
-    -0x1.bf14bap-1
-  },
-  { // Entry 370
-    0x1.316c87fdb7599cb57354e4b99f38d7ffp0,
-    0x1.bf14bap-1
-  },
-  { // Entry 371
-    -0x1.18729dfe51dfcf767f79f39b689ae95ep0,
-    -0x1.a970f8p-1
-  },
-  { // Entry 372
-    0x1.18729dfe51dfcf767f79f39b689ae95ep0,
-    0x1.a970f8p-1
-  },
-  { // Entry 373
-    -0x1.01aeea9cbe9a8fb4ccef99ad961b6ad8p0,
-    -0x1.93cd36p-1
-  },
-  { // Entry 374
-    0x1.01aeea9cbe9a8fb4ccef99ad961b6ad8p0,
-    0x1.93cd36p-1
-  },
-  { // Entry 375
-    -0x1.d98e373faad7da3d6c8865a7ff9ba7f3p-1,
-    -0x1.7e2974p-1
-  },
-  { // Entry 376
-    0x1.d98e373faad7da3d6c8865a7ff9ba7f3p-1,
-    0x1.7e2974p-1
-  },
-  { // Entry 377
-    -0x1.b2e46af704eb75d1fab0766afc74703fp-1,
-    -0x1.6885b2p-1
-  },
-  { // Entry 378
-    0x1.b2e46af704eb75d1fab0766afc74703fp-1,
-    0x1.6885b2p-1
-  },
-  { // Entry 379
-    -0x1.8ee90b7dc89b1f999ae6dbb41baceb0dp-1,
-    -0x1.52e1f0p-1
-  },
-  { // Entry 380
-    0x1.8ee90b7dc89b1f999ae6dbb41baceb0dp-1,
-    0x1.52e1f0p-1
-  },
-  { // Entry 381
-    -0x1.6d395f05820b42f51223dab884367e71p-1,
-    -0x1.3d3e36p-1
-  },
-  { // Entry 382
-    0x1.6d395f05820b42f51223dab884367e71p-1,
-    0x1.3d3e36p-1
-  },
-  { // Entry 383
-    -0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
-    -0x1.0a0b02p-1
-  },
-  { // Entry 384
-    0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
-    0x1.0a0b02p-1
-  },
-  { // Entry 385
-    -0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
-    -0x1.d8f720p-2
-  },
-  { // Entry 386
-    0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
-    0x1.d8f720p-2
-  },
-  { // Entry 387
-    -0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
-    -0x1.9dd83cp-2
-  },
-  { // Entry 388
-    0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
-    0x1.9dd83cp-2
-  },
-  { // Entry 389
-    -0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
-    -0x1.62b958p-2
-  },
-  { // Entry 390
-    0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
-    0x1.62b958p-2
-  },
-  { // Entry 391
-    -0x1.30190941e699fdb2115a9ef6bf82d455p-2,
-    -0x1.279a74p-2
-  },
-  { // Entry 392
-    0x1.30190941e699fdb2115a9ef6bf82d455p-2,
-    0x1.279a74p-2
-  },
-  { // Entry 393
-    -0x1.e18e93867caf67efcaa19821898d50cap-3,
-    -0x1.d8f720p-3
-  },
-  { // Entry 394
-    0x1.e18e93867caf67efcaa19821898d50cap-3,
-    0x1.d8f720p-3
-  },
-  { // Entry 395
-    -0x1.665077dda822b189a56a02e15c04d5d4p-3,
-    -0x1.62b958p-3
-  },
-  { // Entry 396
-    0x1.665077dda822b189a56a02e15c04d5d4p-3,
-    0x1.62b958p-3
-  },
-  { // Entry 397
-    -0x1.db1423d877b250af6ea5546960743d72p-4,
-    -0x1.d8f720p-4
-  },
-  { // Entry 398
-    0x1.db1423d877b250af6ea5546960743d72p-4,
-    0x1.d8f720p-4
-  },
-  { // Entry 399
-    -0x1.d97dd643ffeef57d0a225051978ec8adp-5,
-    -0x1.d8f720p-5
-  },
-  { // Entry 400
-    0x1.d97dd643ffeef57d0a225051978ec8adp-5,
-    0x1.d8f720p-5
-  },
-  { // Entry 401
-    0x1.d97dd643ffeef57d0a225051978ec8adp-5,
-    0x1.d8f720p-5
-  },
-  { // Entry 402
-    -0x1.d97dd643ffeef57d0a225051978ec8adp-5,
-    -0x1.d8f720p-5
-  },
-  { // Entry 403
-    0x1.db1423d877b250af6ea5546960743d72p-4,
-    0x1.d8f720p-4
-  },
-  { // Entry 404
-    -0x1.db1423d877b250af6ea5546960743d72p-4,
-    -0x1.d8f720p-4
-  },
-  { // Entry 405
-    0x1.665077dda822b189a56a02e15c04d5d4p-3,
-    0x1.62b958p-3
-  },
-  { // Entry 406
-    -0x1.665077dda822b189a56a02e15c04d5d4p-3,
-    -0x1.62b958p-3
-  },
-  { // Entry 407
-    0x1.e18e93867caf67efcaa19821898d50cap-3,
-    0x1.d8f720p-3
-  },
-  { // Entry 408
-    -0x1.e18e93867caf67efcaa19821898d50cap-3,
-    -0x1.d8f720p-3
-  },
-  { // Entry 409
-    0x1.30190941e699fdb2115a9ef6bf82d455p-2,
-    0x1.279a74p-2
-  },
-  { // Entry 410
-    -0x1.30190941e699fdb2115a9ef6bf82d455p-2,
-    -0x1.279a74p-2
-  },
-  { // Entry 411
-    0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
-    0x1.62b958p-2
-  },
-  { // Entry 412
-    -0x1.71a0f907c661daf4903b7bbc015c5c14p-2,
-    -0x1.62b958p-2
-  },
-  { // Entry 413
-    0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
-    0x1.9dd83cp-2
-  },
-  { // Entry 414
-    -0x1.b5f3d61c54ee4f6585e9bff489c00182p-2,
-    -0x1.9dd83cp-2
-  },
-  { // Entry 415
-    0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
-    0x1.d8f720p-2
-  },
-  { // Entry 416
-    -0x1.fdbd5e53e0a6fc9c8b803289f1c3dbb7p-2,
-    -0x1.d8f720p-2
-  },
-  { // Entry 417
-    0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
-    0x1.0a0b02p-1
-  },
-  { // Entry 418
-    -0x1.24e3dfad4ce1493caa123864cb4f45d3p-1,
-    -0x1.0a0b02p-1
-  },
-  { // Entry 419
-    0x1.6d395f05820b42f51223dab884367e71p-1,
-    0x1.3d3e36p-1
-  },
-  { // Entry 420
-    -0x1.6d395f05820b42f51223dab884367e71p-1,
-    -0x1.3d3e36p-1
-  },
-  { // Entry 421
-    0x1.8ee91858fbaaf2a34a32dd947fd7e076p-1,
-    0x1.52e1f8p-1
-  },
-  { // Entry 422
-    -0x1.8ee91858fbaaf2a34a32dd947fd7e076p-1,
-    -0x1.52e1f8p-1
-  },
-  { // Entry 423
-    0x1.b2e478bc9ba738db90b2a4bc294ecf4fp-1,
-    0x1.6885bap-1
-  },
-  { // Entry 424
-    -0x1.b2e478bc9ba738db90b2a4bc294ecf4fp-1,
-    -0x1.6885bap-1
-  },
-  { // Entry 425
-    0x1.d98e4617a8bd1a1bb9e2e989d8ad35ccp-1,
-    0x1.7e297cp-1
-  },
-  { // Entry 426
-    -0x1.d98e4617a8bd1a1bb9e2e989d8ad35ccp-1,
-    -0x1.7e297cp-1
-  },
-  { // Entry 427
-    0x1.01aef2aa416545e3900864f2b35d86a6p0,
-    0x1.93cd3ep-1
-  },
-  { // Entry 428
-    -0x1.01aef2aa416545e3900864f2b35d86a6p0,
-    -0x1.93cd3ep-1
-  },
-  { // Entry 429
-    0x1.1872a6cb3dba156db8dc784e95d96a46p0,
-    0x1.a971p-1
-  },
-  { // Entry 430
-    -0x1.1872a6cb3dba156db8dc784e95d96a46p0,
-    -0x1.a971p-1
-  },
-  { // Entry 431
-    0x1.316c91af46b015a9c931a816fed89092p0,
-    0x1.bf14c2p-1
-  },
-  { // Entry 432
-    -0x1.316c91af46b015a9c931a816fed89092p0,
-    -0x1.bf14c2p-1
-  },
-  { // Entry 433
-    0x1.4d0dfa81e9cc806c10194fba6b767761p0,
-    0x1.d4b884p-1
-  },
-  { // Entry 434
-    -0x1.4d0dfa81e9cc806c10194fba6b767761p0,
-    -0x1.d4b884p-1
-  },
-  { // Entry 435
-    0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
-    0x1.ea5c3ep-1
-  },
-  { // Entry 436
-    -0x1.6be7019f34d34f25cb0c14d0c7bc7b32p0,
-    -0x1.ea5c3ep-1
-  },
-  { // Entry 437
-    0x1.d74cb200ab59040290627a9b2ffe29cfp0,
-    0x1.12bd92p0
-  },
-  { // Entry 438
-    -0x1.d74cb200ab59040290627a9b2ffe29cfp0,
-    -0x1.12bd92p0
-  },
-  { // Entry 439
-    0x1.1b48a6964c024648f186bb6b1ebdeec2p1,
-    0x1.257b24p0
-  },
-  { // Entry 440
-    -0x1.1b48a6964c024648f186bb6b1ebdeec2p1,
-    -0x1.257b24p0
-  },
-  { // Entry 441
-    0x1.5d604466c5aee8f1a1d8470f7ff579cfp1,
-    0x1.3838b6p0
-  },
-  { // Entry 442
-    -0x1.5d604466c5aee8f1a1d8470f7ff579cfp1,
-    -0x1.3838b6p0
-  },
-  { // Entry 443
-    0x1.c08cbd52d2b012f0cb47bcb3ff513c6dp1,
-    0x1.4af648p0
-  },
-  { // Entry 444
-    -0x1.c08cbd52d2b012f0cb47bcb3ff513c6dp1,
-    -0x1.4af648p0
-  },
-  { // Entry 445
-    0x1.3429f6aa3446d703e6ef96e0b564fc0cp2,
-    0x1.5db3dap0
-  },
-  { // Entry 446
-    -0x1.3429f6aa3446d703e6ef96e0b564fc0cp2,
-    -0x1.5db3dap0
-  },
-  { // Entry 447
-    0x1.e3a3a25b2606418a13970971beef41d6p2,
-    0x1.70716cp0
-  },
-  { // Entry 448
-    -0x1.e3a3a25b2606418a13970971beef41d6p2,
-    -0x1.70716cp0
-  },
-  { // Entry 449
-    0x1.11d8b7ba41694658111af48925bbad68p4,
-    0x1.832efep0
-  },
-  { // Entry 450
-    -0x1.11d8b7ba41694658111af48925bbad68p4,
-    -0x1.832efep0
-  },
-  { // Entry 451
-    -0x1.0d70563193fe219f3fd31a285f4d6638p6,
-    0x1.95ec90p0
-  },
-  { // Entry 452
-    0x1.0d70563193fe219f3fd31a285f4d6638p6,
-    -0x1.95ec90p0
-  },
-  { // Entry 453
-    -0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
-    0x1.a8aa1cp0
-  },
-  { // Entry 454
-    0x1.6a7e30ad8460f1a710479e2db9495c9cp3,
-    -0x1.a8aa1cp0
-  },
-  { // Entry 455
-    0x1.9f39ee9fedb2375ec05d6da7a288c6bdp0,
-    0x1.04aff8p0
-  },
-  { // Entry 456
-    -0x1.9f39ee9fedb2375ec05d6da7a288c6bdp0,
-    -0x1.04aff8p0
-  },
-  { // Entry 457
-    0x1.9f3c509c6a7d75e451088359c88def88p0,
-    0x1.04b0a0p0
-  },
-  { // Entry 458
-    -0x1.9f3c509c6a7d75e451088359c88def88p0,
-    -0x1.04b0a0p0
-  },
-  { // Entry 459
-    0x1.9f3eb29df9e6a20467474e24d8bf35bap0,
-    0x1.04b148p0
-  },
-  { // Entry 460
-    -0x1.9f3eb29df9e6a20467474e24d8bf35bap0,
-    -0x1.04b148p0
-  },
-  { // Entry 461
-    0x1.9f4114a49bfffc3f5a183d36000aa785p0,
-    0x1.04b1f0p0
-  },
-  { // Entry 462
-    -0x1.9f4114a49bfffc3f5a183d36000aa785p0,
-    -0x1.04b1f0p0
-  },
-  { // Entry 463
-    0x1.9f4376b050dbc56bf5596083192077b5p0,
-    0x1.04b298p0
-  },
-  { // Entry 464
-    -0x1.9f4376b050dbc56bf5596083192077b5p0,
-    -0x1.04b298p0
-  },
-  { // Entry 465
-    0x1.9f45d8c1188c3eb77bca2c4a84c7eaddp0,
-    0x1.04b340p0
-  },
-  { // Entry 466
-    -0x1.9f45d8c1188c3eb77bca2c4a84c7eaddp0,
-    -0x1.04b340p0
-  },
-  { // Entry 467
-    0x1.9f483ad6f323a9a5a90d4ae07a23d266p0,
-    0x1.04b3e8p0
-  },
-  { // Entry 468
-    -0x1.9f483ad6f323a9a5a90d4ae07a23d266p0,
-    -0x1.04b3e8p0
-  },
-  { // Entry 469
-    0x1.9f4a9cf1e0b44810b3aa7cca45d71cc9p0,
-    0x1.04b490p0
-  },
-  { // Entry 470
-    -0x1.9f4a9cf1e0b44810b3aa7cca45d71cc9p0,
-    -0x1.04b490p0
-  },
-  { // Entry 471
-    0x1.9f4cf08af6c60ed6e2badd5a7b5c1e87p0,
-    0x1.04b534p0
-  },
-  { // Entry 472
-    -0x1.9f4cf08af6c60ed6e2badd5a7b5c1e87p0,
-    -0x1.04b534p0
-  },
-  { // Entry 473
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 474
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 475
-    0.0,
-    0.0
-  },
-  { // Entry 476
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 477
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 478
-    0x1.4d82b334a582a56a802f96b3b96feb81p-1,
-    0x1.279a72p-1
-  },
-  { // Entry 479
-    -0x1.4d82b334a582a56a802f96b3b96feb81p-1,
-    -0x1.279a72p-1
-  },
-  { // Entry 480
-    0x1.4d82b60de428f92aa8c96a4a7fe88945p-1,
-    0x1.279a74p-1
-  },
-  { // Entry 481
-    -0x1.4d82b60de428f92aa8c96a4a7fe88945p-1,
-    -0x1.279a74p-1
-  },
-  { // Entry 482
-    0x1.4d82b8e722d302f5aa939a563b12b1a1p-1,
-    0x1.279a76p-1
-  },
-  { // Entry 483
-    -0x1.4d82b8e722d302f5aa939a563b12b1a1p-1,
-    -0x1.279a76p-1
-  },
-  { // Entry 484
-    -0x1.89714760e8fed9af03a91cf1527ceaadp2,
-    0x1.bb67acp0
-  },
-  { // Entry 485
-    0x1.89714760e8fed9af03a91cf1527ceaadp2,
-    -0x1.bb67acp0
-  },
-  { // Entry 486
-    -0x1.897133fb81f3169b3161d50b50ccc1a7p2,
-    0x1.bb67aep0
-  },
-  { // Entry 487
-    0x1.897133fb81f3169b3161d50b50ccc1a7p2,
-    -0x1.bb67aep0
-  },
-  { // Entry 488
-    -0x1.897120961cc4475eb3b8061df0409430p2,
-    0x1.bb67b0p0
-  },
-  { // Entry 489
-    0x1.897120961cc4475eb3b8061df0409430p2,
-    -0x1.bb67b0p0
-  },
-  { // Entry 490
-    0x1.def49c3ab0ad5dde93ba34c54db714c7p-2,
-    0x1.bffffep-2
-  },
-  { // Entry 491
-    -0x1.def49c3ab0ad5dde93ba34c54db714c7p-2,
-    -0x1.bffffep-2
-  },
-  { // Entry 492
-    0x1.def49eaab37a1479231e899509ecf26cp-2,
-    0x1.c0p-2
-  },
-  { // Entry 493
-    -0x1.def49eaab37a1479231e899509ecf26cp-2,
-    -0x1.c0p-2
-  },
-  { // Entry 494
-    0x1.def4a11ab647eef212b1997d3b51405ap-2,
-    0x1.c00002p-2
-  },
-  { // Entry 495
-    -0x1.def4a11ab647eef212b1997d3b51405ap-2,
-    -0x1.c00002p-2
-  },
-  { // Entry 496
-    0x1.a46caf652fa18987e4d0a79f8145dd5bp-1,
-    0x1.5ffffep-1
-  },
-  { // Entry 497
-    -0x1.a46caf652fa18987e4d0a79f8145dd5bp-1,
-    -0x1.5ffffep-1
-  },
-  { // Entry 498
-    0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
-    0x1.60p-1
-  },
-  { // Entry 499
-    -0x1.a46cb2be6a0b1dacb36269c41a4a9147p-1,
-    -0x1.60p-1
-  },
-  { // Entry 500
-    0x1.a46cb617a47a31a156dc0005b4e6ebp-1,
-    0x1.600002p-1
-  },
-  { // Entry 501
-    -0x1.a46cb617a47a31a156dc0005b4e6ebp-1,
-    -0x1.600002p-1
-  },
-  { // Entry 502
-    0x1.3d6dc230869c70d5937fedc92d424df2p1,
-    0x1.2ffffep0
-  },
-  { // Entry 503
-    -0x1.3d6dc230869c70d5937fedc92d424df2p1,
-    -0x1.2ffffep0
-  },
-  { // Entry 504
-    0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
-    0x1.30p0
-  },
-  { // Entry 505
-    -0x1.3d6dc956eac7d3b8d6eb2174110d1ddcp1,
-    -0x1.30p0
-  },
-  { // Entry 506
-    0x1.3d6dd07d4f3a237589ad5c41c3801cb4p1,
-    0x1.300002p0
-  },
-  { // Entry 507
-    -0x1.3d6dd07d4f3a237589ad5c41c3801cb4p1,
-    -0x1.300002p0
-  },
-  { // Entry 508
-    -0x1.b2d8a858c90a538d1daad78040e69b98p-1,
-    0x1.37fffep1
-  },
-  { // Entry 509
-    0x1.b2d8a858c90a538d1daad78040e69b98p-1,
-    -0x1.37fffep1
-  },
-  { // Entry 510
-    -0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
-    0x1.38p1
-  },
-  { // Entry 511
-    0x1.b2d89a938294c8a2604db9f7aa56a0f8p-1,
-    -0x1.38p1
-  },
-  { // Entry 512
-    -0x1.b2d88cce3c7cce174266439da309cf60p-1,
-    0x1.380002p1
-  },
-  { // Entry 513
-    0x1.b2d88cce3c7cce174266439da309cf60p-1,
-    -0x1.380002p1
-  },
-  { // Entry 514
-    0x1.06f8d0cecf169b06467e4aa036cf8279p-4,
-    0x1.069c8cp-4
-  },
-  { // Entry 515
-    -0x1.06f8d0cecf169b06467e4aa036cf8279p-4,
-    -0x1.069c8cp-4
-  },
-  { // Entry 516
-    0x1.080f746cd17397b60f908e2be01f7ba7p-3,
-    0x1.069c8cp-3
-  },
-  { // Entry 517
-    -0x1.080f746cd17397b60f908e2be01f7ba7p-3,
-    -0x1.069c8cp-3
-  },
-  { // Entry 518
-    0x1.8ed91550469d0eb08aae20658958043bp-3,
-    0x1.89ead2p-3
-  },
-  { // Entry 519
-    -0x1.8ed91550469d0eb08aae20658958043bp-3,
-    -0x1.89ead2p-3
-  },
-  { // Entry 520
-    0x1.0c864149dc68276df299282d04f69af6p-2,
-    0x1.069c8cp-2
-  },
-  { // Entry 521
-    -0x1.0c864149dc68276df299282d04f69af6p-2,
-    -0x1.069c8cp-2
-  },
-  { // Entry 522
-    0x1.53fdd01a98f07f208555cc644276ef2cp-2,
-    0x1.4843b0p-2
-  },
-  { // Entry 523
-    -0x1.53fdd01a98f07f208555cc644276ef2cp-2,
-    -0x1.4843b0p-2
-  },
-  { // Entry 524
-    0x1.9e925b7e237b88ac6098b513c371757cp-2,
-    0x1.89ead4p-2
-  },
-  { // Entry 525
-    -0x1.9e925b7e237b88ac6098b513c371757cp-2,
-    -0x1.89ead4p-2
-  },
-  { // Entry 526
-    0x1.ed21eadb08e47db8b2f11880fbb52879p-2,
-    0x1.cb91f8p-2
-  },
-  { // Entry 527
-    -0x1.ed21eadb08e47db8b2f11880fbb52879p-2,
-    -0x1.cb91f8p-2
-  },
-  { // Entry 528
-    0x1.205a63a04e31e1852af3da22e9f69a19p-1,
-    0x1.069c8ep-1
-  },
-  { // Entry 529
-    -0x1.205a63a04e31e1852af3da22e9f69a19p-1,
-    -0x1.069c8ep-1
-  },
-  { // Entry 530
-    0x1.4d466f84a3288515ab699dd1cec345d3p-1,
-    0x1.277020p-1
-  },
-  { // Entry 531
-    -0x1.4d466f84a3288515ab699dd1cec345d3p-1,
-    -0x1.277020p-1
-  },
-  { // Entry 532
-    0x1.7e1d9983b58754a29012e17a26f277d7p-1,
-    0x1.4843b2p-1
-  },
-  { // Entry 533
-    -0x1.7e1d9983b58754a29012e17a26f277d7p-1,
-    -0x1.4843b2p-1
-  },
-  { // Entry 534
-    0x1.b3df402fe49842a4164cf380ffa5dcp-1,
-    0x1.691744p-1
-  },
-  { // Entry 535
-    -0x1.b3df402fe49842a4164cf380ffa5dcp-1,
-    -0x1.691744p-1
-  },
-  { // Entry 536
-    0x1.efd8311ddf2cc393f20ea767c7b2264ap-1,
-    0x1.89ead6p-1
-  },
-  { // Entry 537
-    -0x1.efd8311ddf2cc393f20ea767c7b2264ap-1,
-    -0x1.89ead6p-1
-  },
-  { // Entry 538
-    0x1.19e271a6444ff34aa2f73c85014971c9p0,
-    0x1.aabe68p-1
-  },
-  { // Entry 539
-    -0x1.19e271a6444ff34aa2f73c85014971c9p0,
-    -0x1.aabe68p-1
-  },
-  { // Entry 540
-    0x1.410393802c1a22382914abf096afbee9p0,
-    0x1.cb91fap-1
-  },
-  { // Entry 541
-    -0x1.410393802c1a22382914abf096afbee9p0,
-    -0x1.cb91fap-1
-  },
-  { // Entry 542
-    0x1.6efed33b714045fe99cfa59471e1e9fdp0,
-    0x1.ec658cp-1
-  },
-  { // Entry 543
-    -0x1.6efed33b714045fe99cfa59471e1e9fdp0,
-    -0x1.ec658cp-1
-  },
-  { // Entry 544
-    0x1.a64c86c02e7a7d96e91f96a5584129f4p0,
-    0x1.069c8ep0
-  },
-  { // Entry 545
-    -0x1.a64c86c02e7a7d96e91f96a5584129f4p0,
-    -0x1.069c8ep0
-  },
-  { // Entry 546
-    0x1.eab4477e5b226dc5270bae9720ea13e3p0,
-    0x1.170656p0
-  },
-  { // Entry 547
-    -0x1.eab4477e5b226dc5270bae9720ea13e3p0,
-    -0x1.170656p0
-  },
-  { // Entry 548
-    0x1.21277f9a7d2f66bb131cff32f26629cdp1,
-    0x1.27701ep0
-  },
-  { // Entry 549
-    -0x1.21277f9a7d2f66bb131cff32f26629cdp1,
-    -0x1.27701ep0
-  },
-  { // Entry 550
-    0x1.5bd1406825b3ffeba48221ad6a8f5414p1,
-    0x1.37d9e6p0
-  },
-  { // Entry 551
-    -0x1.5bd1406825b3ffeba48221ad6a8f5414p1,
-    -0x1.37d9e6p0
-  },
-  { // Entry 552
-    0x1.af464352a989f802824152cad0afe8b7p1,
-    0x1.4843aep0
-  },
-  { // Entry 553
-    -0x1.af464352a989f802824152cad0afe8b7p1,
-    -0x1.4843aep0
-  },
-  { // Entry 554
-    0x1.1866fa7a601b87bb6f378b3438e3fc26p2,
-    0x1.58ad76p0
-  },
-  { // Entry 555
-    -0x1.1866fa7a601b87bb6f378b3438e3fc26p2,
-    -0x1.58ad76p0
-  },
-  { // Entry 556
-    0x1.8bdcc68718a70118860a1b945437fd90p2,
-    0x1.69173ep0
-  },
-  { // Entry 557
-    -0x1.8bdcc68718a70118860a1b945437fd90p2,
-    -0x1.69173ep0
-  },
-  { // Entry 558
-    0x1.4bb68859d3eafb2a130b73ba07e48e8ap3,
-    0x1.798106p0
-  },
-  { // Entry 559
-    -0x1.4bb68859d3eafb2a130b73ba07e48e8ap3,
-    -0x1.798106p0
-  },
-  { // Entry 560
-    0x1.f2efabaeb322ec5ca9d33869295c6063p4,
-    0x1.89eacep0
-  },
-  { // Entry 561
-    -0x1.f2efabaeb322ec5ca9d33869295c6063p4,
-    -0x1.89eacep0
-  },
-  { // Entry 562
-    -0x1.f2f13929323ef8f58db152143e65bcb7p4,
-    0x1.9a5496p0
-  },
-  { // Entry 563
-    0x1.f2f13929323ef8f58db152143e65bcb7p4,
-    -0x1.9a5496p0
-  },
-  { // Entry 564
-    -0x1.4bb6e0ec02cad5c110a4d70039db4d1cp3,
-    0x1.aabe5ep0
-  },
-  { // Entry 565
-    0x1.4bb6e0ec02cad5c110a4d70039db4d1cp3,
-    -0x1.aabe5ep0
-  },
-  { // Entry 566
-    -0x1.8bdd06a655dfa2f3195aca48798e5c86p2,
-    0x1.bb2826p0
-  },
-  { // Entry 567
-    0x1.8bdd06a655dfa2f3195aca48798e5c86p2,
-    -0x1.bb2826p0
-  },
-  { // Entry 568
-    -0x1.18671b76cfccf98a6edbc1fd5b8647b7p2,
-    0x1.cb91eep0
-  },
-  { // Entry 569
-    0x1.18671b76cfccf98a6edbc1fd5b8647b7p2,
-    -0x1.cb91eep0
-  },
-  { // Entry 570
-    -0x1.af466bac80dc9df668d1e0e9b442bf0ep1,
-    0x1.dbfbb6p0
-  },
-  { // Entry 571
-    0x1.af466bac80dc9df668d1e0e9b442bf0ep1,
-    -0x1.dbfbb6p0
-  },
-  { // Entry 572
-    -0x1.5bd15bcb3d06906cef5f3b2ec3ab4ab9p1,
-    0x1.ec657ep0
-  },
-  { // Entry 573
-    0x1.5bd15bcb3d06906cef5f3b2ec3ab4ab9p1,
-    -0x1.ec657ep0
-  },
-  { // Entry 574
-    -0x1.2127938a546d3c428292ba53ee6f67ccp1,
-    0x1.fccf46p0
-  },
-  { // Entry 575
-    0x1.2127938a546d3c428292ba53ee6f67ccp1,
-    -0x1.fccf46p0
-  },
-  { // Entry 576
-    -0x1.eab45caed706c4db622c90fe3e8d16c2p0,
-    0x1.069c88p1
-  },
-  { // Entry 577
-    0x1.eab45caed706c4db622c90fe3e8d16c2p0,
-    -0x1.069c88p1
-  },
-  { // Entry 578
-    -0x1.a64c979eb703d82cb4808044e8abf93fp0,
-    0x1.0ed16cp1
-  },
-  { // Entry 579
-    0x1.a64c979eb703d82cb4808044e8abf93fp0,
-    -0x1.0ed16cp1
-  },
-  { // Entry 580
-    -0x1.6efee11500263c10c1d1bb5904244de6p0,
-    0x1.170650p1
-  },
-  { // Entry 581
-    0x1.6efee11500263c10c1d1bb5904244de6p0,
-    -0x1.170650p1
-  },
-  { // Entry 582
-    -0x1.4103a1bc0f6576a760d49da3bfe55874p0,
-    0x1.1f3b34p1
-  },
-  { // Entry 583
-    0x1.4103a1bc0f6576a760d49da3bfe55874p0,
-    -0x1.1f3b34p1
-  },
-  { // Entry 584
-    -0x1.19e2801aa24ee0adcd9491e4d7af256fp0,
-    0x1.277018p1
-  },
-  { // Entry 585
-    0x1.19e2801aa24ee0adcd9491e4d7af256fp0,
-    -0x1.277018p1
-  },
-  { // Entry 586
-    -0x1.efd84e50652c1b7c71972ad8ee7c018ap-1,
-    0x1.2fa4fcp1
-  },
-  { // Entry 587
-    0x1.efd84e50652c1b7c71972ad8ee7c018ap-1,
-    -0x1.2fa4fcp1
-  },
-  { // Entry 588
-    -0x1.b3df5d9f54e2c748cf0227ee0974ea2ep-1,
-    0x1.37d9e0p1
-  },
-  { // Entry 589
-    0x1.b3df5d9f54e2c748cf0227ee0974ea2ep-1,
-    -0x1.37d9e0p1
-  },
-  { // Entry 590
-    -0x1.7e1db733769a1126a2b0ac7fa14a402cp-1,
-    0x1.400ec4p1
-  },
-  { // Entry 591
-    0x1.7e1db733769a1126a2b0ac7fa14a402cp-1,
-    -0x1.400ec4p1
-  },
-  { // Entry 592
-    -0x1.4d468d82c1a84fef7279fc5fb24419b2p-1,
-    0x1.4843a8p1
-  },
-  { // Entry 593
-    0x1.4d468d82c1a84fef7279fc5fb24419b2p-1,
-    -0x1.4843a8p1
-  },
-  { // Entry 594
-    -0x1.205a8202545202d891ce89bfa6cd1476p-1,
-    0x1.50788cp1
-  },
-  { // Entry 595
-    0x1.205a8202545202d891ce89bfa6cd1476p-1,
-    -0x1.50788cp1
-  },
-  { // Entry 596
-    -0x1.ed22289d891ed78cdc818a4cde6de918p-2,
-    0x1.58ad70p1
-  },
-  { // Entry 597
-    0x1.ed22289d891ed78cdc818a4cde6de918p-2,
-    -0x1.58ad70p1
-  },
-  { // Entry 598
-    -0x1.9e929a7fadf83b6f9e8fb851f512b44bp-2,
-    0x1.60e254p1
-  },
-  { // Entry 599
-    0x1.9e929a7fadf83b6f9e8fb851f512b44bp-2,
-    -0x1.60e254p1
-  },
-  { // Entry 600
-    -0x1.53fe10a547a6ecce5caddc2005db822bp-2,
-    0x1.691738p1
-  },
-  { // Entry 601
-    0x1.53fe10a547a6ecce5caddc2005db822bp-2,
-    -0x1.691738p1
-  },
-  { // Entry 602
-    -0x1.0c8683b1bc682759e28441ef97c8854bp-2,
-    0x1.714c1cp1
-  },
-  { // Entry 603
-    0x1.0c8683b1bc682759e28441ef97c8854bp-2,
-    -0x1.714c1cp1
-  },
-  { // Entry 604
-    -0x1.8ed99c8546008be46614ea66c7ddd7e6p-3,
-    0x1.7981p1
-  },
-  { // Entry 605
-    0x1.8ed99c8546008be46614ea66c7ddd7e6p-3,
-    -0x1.7981p1
-  },
-  { // Entry 606
-    -0x1.080ffef4eda0271d81658d58ae280792p-3,
-    0x1.81b5e4p1
-  },
-  { // Entry 607
-    0x1.080ffef4eda0271d81658d58ae280792p-3,
-    -0x1.81b5e4p1
-  },
-  { // Entry 608
-    -0x1.06f9ee83686aa6194c03de71a6b52f75p-4,
-    0x1.89eac8p1
-  },
-  { // Entry 609
-    0x1.06f9ee83686aa6194c03de71a6b52f75p-4,
-    -0x1.89eac8p1
-  },
-  { // Entry 610
-    0x1.0c8627ec3bc2e8f0e6df44f809f370fdp-2,
-    -0x1.81b5eep2
-  },
-  { // Entry 611
-    -0x1.0c8627ec3bc2e8f0e6df44f809f370fdp-2,
-    0x1.81b5eep2
-  },
-  { // Entry 612
-    0x1.205a49753bb89e8c971c6cd2842edaf0p-1,
-    -0x1.714c26p2
-  },
-  { // Entry 613
-    -0x1.205a49753bb89e8c971c6cd2842edaf0p-1,
-    0x1.714c26p2
-  },
-  { // Entry 614
-    0x1.efd7fb1d28b8a0602b25fadfe9e0277ap-1,
-    -0x1.60e25ep2
-  },
-  { // Entry 615
-    -0x1.efd7fb1d28b8a0602b25fadfe9e0277ap-1,
-    0x1.60e25ep2
-  },
-  { // Entry 616
-    0x1.a64c47bcfb5f9cbdb49360a65548fd6dp0,
-    -0x1.507896p2
-  },
-  { // Entry 617
-    -0x1.a64c47bcfb5f9cbdb49360a65548fd6dp0,
-    0x1.507896p2
-  },
-  { // Entry 618
-    0x1.af45dabd34b75597ff70079b3de986fdp1,
-    -0x1.400ecep2
-  },
-  { // Entry 619
-    -0x1.af45dabd34b75597ff70079b3de986fdp1,
-    0x1.400ecep2
-  },
-  { // Entry 620
-    0x1.f2eba583fff9f8df3693ffd969395de7p4,
-    -0x1.2fa506p2
-  },
-  { // Entry 621
-    -0x1.f2eba583fff9f8df3693ffd969395de7p4,
-    0x1.2fa506p2
-  },
-  { // Entry 622
-    -0x1.186770f5cef152a4ec75fe9a7031a56ap2,
-    -0x1.1f3b3ep2
-  },
-  { // Entry 623
-    0x1.186770f5cef152a4ec75fe9a7031a56ap2,
-    0x1.1f3b3ep2
-  },
-  { // Entry 624
-    -0x1.eab4b52e6cce160a5b9a23a4b929d01dp0,
-    -0x1.0ed176p2
-  },
-  { // Entry 625
-    0x1.eab4b52e6cce160a5b9a23a4b929d01dp0,
-    0x1.0ed176p2
-  },
-  { // Entry 626
-    -0x1.19e2a124bc3deef648338274627cc371p0,
-    -0x1.fccf5ap1
-  },
-  { // Entry 627
-    0x1.19e2a124bc3deef648338274627cc371p0,
-    0x1.fccf5ap1
-  },
-  { // Entry 628
-    -0x1.4d46aca48de47f5fd90c9000c15425d8p-1,
-    -0x1.dbfbc8p1
-  },
-  { // Entry 629
-    0x1.4d46aca48de47f5fd90c9000c15425d8p-1,
-    0x1.dbfbc8p1
-  },
-  { // Entry 630
-    -0x1.53fe2f6fc9d023774a2105c8213e4d5ep-2,
-    -0x1.bb2836p1
-  },
-  { // Entry 631
-    0x1.53fe2f6fc9d023774a2105c8213e4d5ep-2,
-    0x1.bb2836p1
-  },
-  { // Entry 632
-    -0x1.06fa1da43b26cd580ce5a5b89cf2eff3p-4,
-    -0x1.9a54a4p1
-  },
-  { // Entry 633
-    0x1.06fa1da43b26cd580ce5a5b89cf2eff3p-4,
-    0x1.9a54a4p1
-  },
-  { // Entry 634
-    0x1.8ed87198f413d3a122658287aa7fc33ep-3,
-    -0x1.798112p1
-  },
-  { // Entry 635
-    -0x1.8ed87198f413d3a122658287aa7fc33ep-3,
-    0x1.798112p1
-  },
-  { // Entry 636
-    0x1.ed218aee2df4e80e39340b0c4ec3b1d5p-2,
-    -0x1.58ad80p1
-  },
-  { // Entry 637
-    -0x1.ed218aee2df4e80e39340b0c4ec3b1d5p-2,
-    0x1.58ad80p1
-  },
-  { // Entry 638
-    0x1.b3defd0991e6315369dbd5e2de2d14fep-1,
-    -0x1.37d9eep1
-  },
-  { // Entry 639
-    -0x1.b3defd0991e6315369dbd5e2de2d14fep-1,
-    0x1.37d9eep1
-  },
-  { // Entry 640
-    0x1.6efe97c23f206826b4f0019f275d3a44p0,
-    -0x1.17065cp1
-  },
-  { // Entry 641
-    -0x1.6efe97c23f206826b4f0019f275d3a44p0,
-    0x1.17065cp1
-  },
-  { // Entry 642
-    0x1.5bd0ff925c94f7d608b88484f9081f2cp1,
-    -0x1.ec6594p0
-  },
-  { // Entry 643
-    -0x1.5bd0ff925c94f7d608b88484f9081f2cp1,
-    0x1.ec6594p0
-  },
-  { // Entry 644
-    0x1.4bb5ece657bee292a82a3fda6b812aadp3,
-    -0x1.aabe70p0
-  },
-  { // Entry 645
-    -0x1.4bb5ece657bee292a82a3fda6b812aadp3,
-    0x1.aabe70p0
-  },
-  { // Entry 646
-    -0x1.8bdd4feef18bfa8a6c23de6a721f2436p2,
-    -0x1.69174cp0
-  },
-  { // Entry 647
-    0x1.8bdd4feef18bfa8a6c23de6a721f2436p2,
-    0x1.69174cp0
-  },
-  { // Entry 648
-    -0x1.21279e1e8bf4bd3983a3677267e55809p1,
-    -0x1.277028p0
-  },
-  { // Entry 649
-    0x1.21279e1e8bf4bd3983a3677267e55809p1,
-    0x1.277028p0
-  },
-  { // Entry 650
-    -0x1.4103a8147ca836136cc98db9bc6ddf30p0,
-    -0x1.cb920ap-1
-  },
-  { // Entry 651
-    0x1.4103a8147ca836136cc98db9bc6ddf30p0,
-    0x1.cb920ap-1
-  },
-  { // Entry 652
-    -0x1.7e1db58a55d6a12a6457e3c5929ac2c7p-1,
-    -0x1.4843c4p-1
-  },
-  { // Entry 653
-    0x1.7e1db58a55d6a12a6457e3c5929ac2c7p-1,
-    0x1.4843c4p-1
-  },
-  { // Entry 654
-    -0x1.9e928a0c8e79023200164ed240caad05p-2,
-    -0x1.89eafcp-2
-  },
-  { // Entry 655
-    0x1.9e928a0c8e79023200164ed240caad05p-2,
-    0x1.89eafcp-2
-  },
-  { // Entry 656
-    -0x1.080fc9d24fbe9876b31b0aa29dd238eap-3,
-    -0x1.069ce0p-3
-  },
-  { // Entry 657
-    0x1.080fc9d24fbe9876b31b0aa29dd238eap-3,
-    0x1.069ce0p-3
-  },
-  { // Entry 658
-    0x1.080f1f07540fd03b82d4b370d237fa3dp-3,
-    0x1.069c38p-3
-  },
-  { // Entry 659
-    -0x1.080f1f07540fd03b82d4b370d237fa3dp-3,
-    -0x1.069c38p-3
-  },
-  { // Entry 660
-    0x1.9e922847e2b1b6a72d486700e18c05f2p-2,
-    0x1.89eaa8p-2
-  },
-  { // Entry 661
-    -0x1.9e922847e2b1b6a72d486700e18c05f2p-2,
-    -0x1.89eaa8p-2
-  },
-  { // Entry 662
-    0x1.7e1d74258cbc964b561d99c9a66f8c7ep-1,
-    0x1.48439ap-1
-  },
-  { // Entry 663
-    -0x1.7e1d74258cbc964b561d99c9a66f8c7ep-1,
-    -0x1.48439ap-1
-  },
-  { // Entry 664
-    0x1.4103720f2ca3e0580fba15849398a4e9p0,
-    0x1.cb91e0p-1
-  },
-  { // Entry 665
-    -0x1.4103720f2ca3e0580fba15849398a4e9p0,
-    -0x1.cb91e0p-1
-  },
-  { // Entry 666
-    0x1.2127611673ccc7531f5af5aeda3412c5p1,
-    0x1.277014p0
-  },
-  { // Entry 667
-    -0x1.2127611673ccc7531f5af5aeda3412c5p1,
-    -0x1.277014p0
-  },
-  { // Entry 668
-    0x1.8bdc8ba3d8277213c5b74ef806ef466bp2,
-    0x1.691738p0
-  },
-  { // Entry 669
-    -0x1.8bdc8ba3d8277213c5b74ef806ef466bp2,
-    -0x1.691738p0
-  },
-  { // Entry 670
-    -0x1.4bb6fc092bc16530216209a912aada37p3,
-    0x1.aabe5cp0
-  },
-  { // Entry 671
-    0x1.4bb6fc092bc16530216209a912aada37p3,
-    -0x1.aabe5cp0
-  },
-  { // Entry 672
-    -0x1.5bd15368f84be0bda8f135a5f79aeacbp1,
-    0x1.ec6580p0
-  },
-  { // Entry 673
-    0x1.5bd15368f84be0bda8f135a5f79aeacbp1,
-    -0x1.ec6580p0
-  },
-  { // Entry 674
-    -0x1.6efed4dc8946e1c3620d79bb0d654338p0,
-    0x1.170652p1
-  },
-  { // Entry 675
-    0x1.6efed4dc8946e1c3620d79bb0d654338p0,
-    -0x1.170652p1
-  },
-  { // Entry 676
-    -0x1.b3df4206d232794d5761992d88c5a394p-1,
-    0x1.37d9e4p1
-  },
-  { // Entry 677
-    0x1.b3df4206d232794d5761992d88c5a394p-1,
-    -0x1.37d9e4p1
-  },
-  { // Entry 678
-    -0x1.ed21ed7bc4b5968bdb0cd6da269cd55fp-2,
-    0x1.58ad76p1
-  },
-  { // Entry 679
-    0x1.ed21ed7bc4b5968bdb0cd6da269cd55fp-2,
-    -0x1.58ad76p1
-  },
-  { // Entry 680
-    -0x1.8ed917aa74e733b9194d537c8df33c64p-3,
-    0x1.798108p1
-  },
-  { // Entry 681
-    0x1.8ed917aa74e733b9194d537c8df33c64p-3,
-    -0x1.798108p1
-  },
-  { // Entry 682
-    0x1.06f8dc528ea01882064ee242f58a2b88p-4,
-    0x1.9a549ap1
-  },
-  { // Entry 683
-    -0x1.06f8dc528ea01882064ee242f58a2b88p-4,
-    -0x1.9a549ap1
-  },
-  { // Entry 684
-    0x1.53fdd69e1437db957c62e8cc55742beep-2,
-    0x1.bb282cp1
-  },
-  { // Entry 685
-    -0x1.53fdd69e1437db957c62e8cc55742beep-2,
-    -0x1.bb282cp1
-  },
-  { // Entry 686
-    0x1.4d4673b1c7635cc893e1c8d2ca57b3e9p-1,
-    0x1.dbfbbep1
-  },
-  { // Entry 687
-    -0x1.4d4673b1c7635cc893e1c8d2ca57b3e9p-1,
-    -0x1.dbfbbep1
-  },
-  { // Entry 688
-    0x1.19e274e4fdec9e78ef6872081b5572cfp0,
-    0x1.fccf50p1
-  },
-  { // Entry 689
-    -0x1.19e274e4fdec9e78ef6872081b5572cfp0,
-    -0x1.fccf50p1
-  },
-  { // Entry 690
-    0x1.eab445003a7b542a2d4d87a88793bb67p0,
-    0x1.0ed170p2
-  },
-  { // Entry 691
-    -0x1.eab445003a7b542a2d4d87a88793bb67p0,
-    -0x1.0ed170p2
-  },
-  { // Entry 692
-    0x1.1866f7c91660d9c9f4b2d14e91375732p2,
-    0x1.1f3b38p2
-  },
-  { // Entry 693
-    -0x1.1866f7c91660d9c9f4b2d14e91375732p2,
-    -0x1.1f3b38p2
-  },
-  { // Entry 694
-    -0x1.f2f1599b29a7de952b8ba1877d9f5e61p4,
-    0x1.2fa5p2
-  },
-  { // Entry 695
-    0x1.f2f1599b29a7de952b8ba1877d9f5e61p4,
-    -0x1.2fa5p2
-  },
-  { // Entry 696
-    -0x1.af466ef7b15645455e15fbbae6bb4bc6p1,
-    0x1.400ec8p2
-  },
-  { // Entry 697
-    0x1.af466ef7b15645455e15fbbae6bb4bc6p1,
-    -0x1.400ec8p2
-  },
-  { // Entry 698
-    -0x1.a64ca10bfefd2b04bb6a1bb708c28967p0,
-    0x1.507890p2
-  },
-  { // Entry 699
-    0x1.a64ca10bfefd2b04bb6a1bb708c28967p0,
-    -0x1.507890p2
-  },
-  { // Entry 700
-    -0x1.efd85821ec927f2a89ec41acee587230p-1,
-    0x1.60e258p2
-  },
-  { // Entry 701
-    0x1.efd85821ec927f2a89ec41acee587230p-1,
-    -0x1.60e258p2
-  },
-  { // Entry 702
-    -0x1.205a88aec64cad35d7752c73620c2139p-1,
-    0x1.714c20p2
-  },
-  { // Entry 703
-    0x1.205a88aec64cad35d7752c73620c2139p-1,
-    -0x1.714c20p2
-  },
-  { // Entry 704
-    -0x1.0c868e863543fd989476c8cdeffa93eap-2,
-    0x1.81b5e8p2
-  },
-  { // Entry 705
-    0x1.0c868e863543fd989476c8cdeffa93eap-2,
-    -0x1.81b5e8p2
-  },
-  { // Entry 706
-    0x1.f09b61a8a04f0898851f1d7604fa13c8p-5,
-    0x1.effffep-5
-  },
-  { // Entry 707
-    -0x1.f09b61a8a04f0898851f1d7604fa13c8p-5,
-    -0x1.effffep-5
-  },
-  { // Entry 708
-    0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
-    0x1.f0p-5
-  },
-  { // Entry 709
-    -0x1.f09b63aa81fc46e95e06405b41e8b4ccp-5,
-    -0x1.f0p-5
-  },
-  { // Entry 710
-    0x1.f09b65ac63a9891f1418c4338c1e419ep-5,
-    0x1.f00002p-5
-  },
-  { // Entry 711
-    -0x1.f09b65ac63a9891f1418c4338c1e419ep-5,
-    -0x1.f00002p-5
-  },
-  { // Entry 712
-    0x1.fa8f1fc0ce86c214bf765fd59e8798a5p-4,
-    0x1.f7fffep-4
-  },
-  { // Entry 713
-    -0x1.fa8f1fc0ce86c214bf765fd59e8798a5p-4,
-    -0x1.f7fffep-4
-  },
-  { // Entry 714
-    0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
-    0x1.f8p-4
-  },
-  { // Entry 715
-    -0x1.fa8f21c8a33afd3355198e8d7716a811p-4,
-    -0x1.f8p-4
-  },
-  { // Entry 716
-    0x1.fa8f23d077ef48645eff9a519628b3a9p-4,
-    0x1.f80002p-4
-  },
-  { // Entry 717
-    -0x1.fa8f23d077ef48645eff9a519628b3a9p-4,
-    -0x1.f80002p-4
-  },
-  { // Entry 718
-    0x1.4ef06aa73ee6a439c0c9f45046b25978p-3,
-    0x1.4bfffep-3
-  },
-  { // Entry 719
-    -0x1.4ef06aa73ee6a439c0c9f45046b25978p-3,
-    -0x1.4bfffep-3
-  },
-  { // Entry 720
-    0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
-    0x1.4cp-3
-  },
-  { // Entry 721
-    -0x1.4ef06cb4f0a87a5c8eeeebceb12a22b4p-3,
-    -0x1.4cp-3
-  },
-  { // Entry 722
-    0x1.4ef06ec2a26a7b7c1721ffafb93c0281p-3,
-    0x1.4c0002p-3
-  },
-  { // Entry 723
-    -0x1.4ef06ec2a26a7b7c1721ffafb93c0281p-3,
-    -0x1.4c0002p-3
-  },
-  { // Entry 724
-    0x1.3cc2a2fd911e1557d57b44abf28c4ccap-2,
-    0x1.333332p-2
-  },
-  { // Entry 725
-    -0x1.3cc2a2fd911e1557d57b44abf28c4ccap-2,
-    -0x1.333332p-2
-  },
-  { // Entry 726
-    0x1.3cc2a52e8f4137ca27d1dc0567195443p-2,
-    0x1.333334p-2
-  },
-  { // Entry 727
-    -0x1.3cc2a52e8f4137ca27d1dc0567195443p-2,
-    -0x1.333334p-2
-  },
-  { // Entry 728
-    0x1.3cc2a75f8d6507c589bf08e0371394bcp-2,
-    0x1.333336p-2
-  },
-  { // Entry 729
-    -0x1.3cc2a75f8d6507c589bf08e0371394bcp-2,
-    -0x1.333336p-2
-  },
-  { // Entry 730
-    0x1.99436e5f07b73dda1ef61a800aadfdd3p-1,
-    0x1.594316p-1
-  },
-  { // Entry 731
-    -0x1.99436e5f07b73dda1ef61a800aadfdd3p-1,
-    -0x1.594316p-1
-  },
-  { // Entry 732
-    0x1.994371a62bfe13eb1c755cb5be46f853p-1,
-    0x1.594318p-1
-  },
-  { // Entry 733
-    -0x1.994371a62bfe13eb1c755cb5be46f853p-1,
-    -0x1.594318p-1
-  },
-  { // Entry 734
-    0x1.994374ed504a278226573562b60eca9ap-1,
-    0x1.59431ap-1
-  },
-  { // Entry 735
-    -0x1.994374ed504a278226573562b60eca9ap-1,
-    -0x1.59431ap-1
-  },
-  { // Entry 736
-    0x1.fbc50de7c605a4d1d0f1119b1294b6f0p-1,
-    0x1.8ffffep-1
-  },
-  { // Entry 737
-    -0x1.fbc50de7c605a4d1d0f1119b1294b6f0p-1,
-    -0x1.8ffffep-1
-  },
-  { // Entry 738
-    0x1.fbc511df5917f539bbcf778bc1a22249p-1,
-    0x1.90p-1
-  },
-  { // Entry 739
-    -0x1.fbc511df5917f539bbcf778bc1a22249p-1,
-    -0x1.90p-1
-  },
-  { // Entry 740
-    0x1.fbc515d6ec3223ffbed4bb75154fda0fp-1,
-    0x1.900002p-1
-  },
-  { // Entry 741
-    -0x1.fbc515d6ec3223ffbed4bb75154fda0fp-1,
-    -0x1.900002p-1
-  },
-  { // Entry 742
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 743
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 744
-    0.0,
-    0.0
-  },
-  { // Entry 745
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 746
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 747
-    0x1.9272775ea5ecff4e43ecdef3d85ec226p-5,
-    0x1.921fb4p-5
-  },
-  { // Entry 748
-    -0x1.9272775ea5ecff4e43ecdef3d85ec226p-5,
-    -0x1.921fb4p-5
-  },
-  { // Entry 749
-    0x1.9272795fe242d9eb9393a7446620c394p-5,
-    0x1.921fb6p-5
-  },
-  { // Entry 750
-    -0x1.9272795fe242d9eb9393a7446620c394p-5,
-    -0x1.921fb6p-5
-  },
-  { // Entry 751
-    0x1.92727b611e98b7afb97977551d1c5f38p-5,
-    0x1.921fb8p-5
-  },
-  { // Entry 752
-    -0x1.92727b611e98b7afb97977551d1c5f38p-5,
-    -0x1.921fb8p-5
-  },
-  { // Entry 753
-    0x1.936bb77e4ac859bc69bc4abc9e91f025p-4,
-    0x1.921fb4p-4
-  },
-  { // Entry 754
-    -0x1.936bb77e4ac859bc69bc4abc9e91f025p-4,
-    -0x1.921fb4p-4
-  },
-  { // Entry 755
-    0x1.936bb9834241022ecd070b9064632721p-4,
-    0x1.921fb6p-4
-  },
-  { // Entry 756
-    -0x1.936bb9834241022ecd070b9064632721p-4,
-    -0x1.921fb6p-4
-  },
-  { // Entry 757
-    0x1.936bbb8839b9b75bdcc5f6870267a609p-4,
-    0x1.921fb8p-4
-  },
-  { // Entry 758
-    -0x1.936bbb8839b9b75bdcc5f6870267a609p-4,
-    -0x1.921fb8p-4
-  },
-  { // Entry 759
-    0x1.975f5cb43bd951aa2e89a05cbf5e70ffp-3,
-    0x1.921fb4p-3
-  },
-  { // Entry 760
-    -0x1.975f5cb43bd951aa2e89a05cbf5e70ffp-3,
-    -0x1.921fb4p-3
-  },
-  { // Entry 761
-    0x1.975f5ec87ddc4e7a357059f71a9f05b2p-3,
-    0x1.921fb6p-3
-  },
-  { // Entry 762
-    -0x1.975f5ec87ddc4e7a357059f71a9f05b2p-3,
-    -0x1.921fb6p-3
-  },
-  { // Entry 763
-    0x1.975f60dcbfdf8039f01eb7864bc09e13p-3,
-    0x1.921fb8p-3
-  },
-  { // Entry 764
-    -0x1.975f60dcbfdf8039f01eb7864bc09e13p-3,
-    -0x1.921fb8p-3
-  },
-  { // Entry 765
-    0x1.a8279823e9ba30ee623a5402a48590fcp-2,
-    0x1.921fb4p-2
-  },
-  { // Entry 766
-    -0x1.a8279823e9ba30ee623a5402a48590fcp-2,
-    -0x1.921fb4p-2
-  },
-  { // Entry 767
-    0x1.a8279a7bc2206fff3afa52f168c5f8f2p-2,
-    0x1.921fb6p-2
-  },
-  { // Entry 768
-    -0x1.a8279a7bc2206fff3afa52f168c5f8f2p-2,
-    -0x1.921fb6p-2
-  },
-  { // Entry 769
-    0x1.a8279cd39a87a786e140537db72ff334p-2,
-    0x1.921fb8p-2
-  },
-  { // Entry 770
-    -0x1.a8279cd39a87a786e140537db72ff334p-2,
-    -0x1.921fb8p-2
-  },
-  { // Entry 771
-    0x1.fffffd777a5e91e61f5380fb808d3272p-1,
-    0x1.921fb4p-1
-  },
-  { // Entry 772
-    -0x1.fffffd777a5e91e61f5380fb808d3272p-1,
-    -0x1.921fb4p-1
-  },
-  { // Entry 773
-    0x1.000000bbbd2ec06d6d6fff3655a346acp0,
-    0x1.921fb6p-1
-  },
-  { // Entry 774
-    -0x1.000000bbbd2ec06d6d6fff3655a346acp0,
-    -0x1.921fb6p-1
-  },
-  { // Entry 775
-    0x1.000002bbbd3237e7d114276ed329af5bp0,
-    0x1.921fb8p-1
-  },
-  { // Entry 776
-    -0x1.000002bbbd3237e7d114276ed329af5bp0,
-    -0x1.921fb8p-1
-  },
-  { // Entry 777
-    0x1.9437b336b6b0c479b2280999b19575c7p23,
-    0x1.921fb4p0
-  },
-  { // Entry 778
-    -0x1.9437b336b6b0c479b2280999b19575c7p23,
-    -0x1.921fb4p0
-  },
-  { // Entry 779
-    -0x1.5d14946dc98975d6421a55284fe020a1p24,
-    0x1.921fb6p0
-  },
-  { // Entry 780
-    0x1.5d14946dc98975d6421a55284fe020a1p24,
-    -0x1.921fb6p0
-  },
-  { // Entry 781
-    -0x1.76a190eb2b0718d8db55f7d2abeb07d2p22,
-    0x1.921fb8p0
-  },
-  { // Entry 782
-    0x1.76a190eb2b0718d8db55f7d2abeb07d2p22,
-    -0x1.921fb8p0
-  },
-  { // Entry 783
-    -0x1.4442d184698c426c8e3efd356cbebe0ap-23,
-    0x1.921fb4p1
-  },
-  { // Entry 784
-    0x1.4442d184698c426c8e3efd356cbebe0ap-23,
-    -0x1.921fb4p1
-  },
-  { // Entry 785
-    0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
-    0x1.921fb6p1
-  },
-  { // Entry 786
-    -0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
-    -0x1.921fb6p1
-  },
-  { // Entry 787
-    0x1.5dde973dcb48d6e3d13cf2a51550e911p-22,
-    0x1.921fb8p1
-  },
-  { // Entry 788
-    -0x1.5dde973dcb48d6e3d13cf2a51550e911p-22,
-    -0x1.921fb8p1
-  },
-  { // Entry 789
-    -0x1.4442d18469946362f3f6cc7c43857661p-22,
-    0x1.921fb4p2
-  },
-  { // Entry 790
-    0x1.4442d18469946362f3f6cc7c43857661p-22,
-    -0x1.921fb4p2
-  },
-  { // Entry 791
-    0x1.777a5cf72cf11b739d2ab1877e81a9c7p-23,
-    0x1.921fb6p2
-  },
-  { // Entry 792
-    -0x1.777a5cf72cf11b739d2ab1877e81a9c7p-23,
-    -0x1.921fb6p2
-  },
-  { // Entry 793
-    0x1.5dde973dcb71aeb6e776668bbb3de253p-21,
-    0x1.921fb8p2
-  },
-  { // Entry 794
-    -0x1.5dde973dcb71aeb6e776668bbb3de253p-21,
-    -0x1.921fb8p2
-  },
-  { // Entry 795
-    -0x1.4442d18469b4e73c8ad60e7b9f288c5cp-21,
-    0x1.921fb4p3
-  },
-  { // Entry 796
-    0x1.4442d18469b4e73c8ad60e7b9f288c5cp-21,
-    -0x1.921fb4p3
-  },
-  { // Entry 797
-    0x1.777a5cf72cfdba6cfeb518258bcf263cp-22,
-    0x1.921fb6p3
-  },
-  { // Entry 798
-    -0x1.777a5cf72cfdba6cfeb518258bcf263cp-22,
-    -0x1.921fb6p3
-  },
-  { // Entry 799
-    0x1.5dde973dcc150e03405ca894886602c2p-20,
-    0x1.921fb8p3
-  },
-  { // Entry 800
-    -0x1.5dde973dcc150e03405ca894886602c2p-20,
-    -0x1.921fb8p3
-  },
-  { // Entry 801
-    -0x1.4442d1846a36f6a2e65364b916382e9bp-20,
-    0x1.921fb4p4
-  },
-  { // Entry 802
-    0x1.4442d1846a36f6a2e65364b916382e9bp-20,
-    -0x1.921fb4p4
-  },
-  { // Entry 803
-    0x1.777a5cf72d30365284debccc3aeeec17p-21,
-    0x1.921fb6p4
-  },
-  { // Entry 804
-    -0x1.777a5cf72d30365284debccc3aeeec17p-21,
-    -0x1.921fb6p4
-  },
-  { // Entry 805
-    0x1.5dde973dcea28b34a3fcd79b144a5050p-19,
-    0x1.921fb8p4
-  },
-  { // Entry 806
-    -0x1.5dde973dcea28b34a3fcd79b144a5050p-19,
-    -0x1.921fb8p4
-  },
-  { // Entry 807
-    -0x1.4442d1846c3f343c544da1af7aab690cp-19,
-    0x1.921fb4p5
-  },
-  { // Entry 808
-    0x1.4442d1846c3f343c544da1af7aab690cp-19,
-    -0x1.921fb4p5
-  },
-  { // Entry 809
-    0x1.777a5cf72dfa25e89d85f24e960b4455p-20,
-    0x1.921fb6p5
-  },
-  { // Entry 810
-    -0x1.777a5cf72dfa25e89d85f24e960b4455p-20,
-    -0x1.921fb6p5
-  },
-  { // Entry 811
-    0x1.5dde973dd8d87ffa32f001eab81d960cp-18,
-    0x1.921fb8p5
-  },
-  { // Entry 812
-    -0x1.5dde973dd8d87ffa32f001eab81d960cp-18,
-    -0x1.921fb8p5
-  },
-  { // Entry 813
-    -0x1.4442d18474602aa20c84d5918fc68a8ep-18,
-    0x1.921fb4p6
-  },
-  { // Entry 814
-    0x1.4442d18474602aa20c84d5918fc68a8ep-18,
-    -0x1.921fb4p6
-  },
-  { // Entry 815
-    0x1.777a5cf73121e441002cf6d1ec50d56dp-19,
-    0x1.921fb6p6
-  },
-  { // Entry 816
-    -0x1.777a5cf73121e441002cf6d1ec50d56dp-19,
-    -0x1.921fb6p6
-  },
-  { // Entry 817
-    0x1.5dde973e01b0531075e38e808ce048f2p-17,
-    0x1.921fb8p6
-  },
-  { // Entry 818
-    -0x1.5dde973e01b0531075e38e808ce048f2p-17,
-    -0x1.921fb8p6
-  },
-  { // Entry 819
-    -0x1.4442d18494e40438f245a5a219dea235p-17,
-    0x1.921fb4p7
-  },
-  { // Entry 820
-    0x1.4442d18494e40438f245a5a219dea235p-17,
-    -0x1.921fb4p7
-  },
-  { // Entry 821
-    0x1.777a5cf73dc0dda28b6bf07de2b2d5e6p-18,
-    0x1.921fb6p7
-  },
-  { // Entry 822
-    -0x1.777a5cf73dc0dda28b6bf07de2b2d5e6p-18,
-    -0x1.921fb6p7
-  },
-  { // Entry 823
-    0x1.5dde973ea50f9f69f41ff64c8c6db761p-16,
-    0x1.921fb8p7
-  },
-  { // Entry 824
-    -0x1.5dde973ea50f9f69f41ff64c8c6db761p-16,
-    -0x1.921fb8p7
-  },
-  { // Entry 825
-    -0x1.00000fccc8f15ee89f09d222e14c7292p0,
-    0x1.2d97c4p1
-  },
-  { // Entry 826
-    0x1.00000fccc8f15ee89f09d222e14c7292p0,
-    -0x1.2d97c4p1
-  },
-  { // Entry 827
-    -0x1.000007ccc892f8a0760cc20827ace476p0,
-    0x1.2d97c6p1
-  },
-  { // Entry 828
-    0x1.000007ccc892f8a0760cc20827ace476p0,
-    -0x1.2d97c6p1
-  },
-  { // Entry 829
-    -0x1.ffffff9990e924b866e831c9e9e639c7p-1,
-    0x1.2d97c8p1
-  },
-  { // Entry 830
-    0x1.ffffff9990e924b866e831c9e9e639c7p-1,
-    -0x1.2d97c8p1
-  },
-  { // Entry 831
-    0x1.ffffeb55643b9a648c2720bde1d22764p-1,
-    0x1.f6a7a0p1
-  },
-  { // Entry 832
-    -0x1.ffffeb55643b9a648c2720bde1d22764p-1,
-    -0x1.f6a7a0p1
-  },
-  { // Entry 833
-    0x1.fffffb5563d64585e9dcc97d74321461p-1,
-    0x1.f6a7a2p1
-  },
-  { // Entry 834
-    -0x1.fffffb5563d64585e9dcc97d74321461p-1,
-    -0x1.f6a7a2p1
-  },
-  { // Entry 835
-    0x1.000005aab1f87852792237652d34b1cep0,
-    0x1.f6a7a4p1
-  },
-  { // Entry 836
-    -0x1.000005aab1f87852792237652d34b1cep0,
-    -0x1.f6a7a4p1
-  },
-  { // Entry 837
-    0x1.033dd91c1035861ae455e0f8dc274b0dp20,
-    0x1.2d97c4p2
-  },
-  { // Entry 838
-    -0x1.033dd91c1035861ae455e0f8dc274b0dp20,
-    -0x1.2d97c4p2
-  },
-  { // Entry 839
-    0x1.0690fb4774ab80ccddc9ef5ad0fcc237p21,
-    0x1.2d97c6p2
-  },
-  { // Entry 840
-    -0x1.0690fb4774ab80ccddc9ef5ad0fcc237p21,
-    -0x1.2d97c6p2
-  },
-  { // Entry 841
-    -0x1.3fe4dac06d830837f6c584af6f8d9399p26,
-    0x1.2d97c8p2
-  },
-  { // Entry 842
-    0x1.3fe4dac06d830837f6c584af6f8d9399p26,
-    -0x1.2d97c8p2
-  },
-  { // Entry 843
-    -0x1.000014ddd4945394cb6ec7f87debc7a5p0,
-    0x1.5fdbbcp2
-  },
-  { // Entry 844
-    0x1.000014ddd4945394cb6ec7f87debc7a5p0,
-    -0x1.5fdbbcp2
-  },
-  { // Entry 845
-    -0x1.000004ddd3c6764d7369a0be61a630e7p0,
-    0x1.5fdbbep2
-  },
-  { // Entry 846
-    0x1.000004ddd3c6764d7369a0be61a630e7p0,
-    -0x1.5fdbbep2
-  },
-  { // Entry 847
-    -0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
-    0x1.5fdbc0p2
-  },
-  { // Entry 848
-    0x1.ffffe9bba7f1321fae192943a3e848c0p-1,
-    -0x1.5fdbc0p2
-  },
-  { // Entry 849
-    0x1.ffffc133511ea2d3b988bf85316d4e05p-1,
-    0x1.c463a8p2
-  },
-  { // Entry 850
-    -0x1.ffffc133511ea2d3b988bf85316d4e05p-1,
-    -0x1.c463a8p2
-  },
-  { // Entry 851
-    0x1.ffffe1334e31d7ef20d6220c65dd2f9bp-1,
-    0x1.c463aap2
-  },
-  { // Entry 852
-    -0x1.ffffe1334e31d7ef20d6220c65dd2f9bp-1,
-    -0x1.c463aap2
-  },
-  { // Entry 853
-    0x1.00000099a6a286667761c2874c5890aep0,
-    0x1.c463acp2
-  },
-  { // Entry 854
-    -0x1.00000099a6a286667761c2874c5890aep0,
-    -0x1.c463acp2
-  },
-  { // Entry 855
-    0x1.8c642e8cc56a9b233450d6b635a6266dp20,
-    0x1.f6a7a0p2
-  },
-  { // Entry 856
-    -0x1.8c642e8cc56a9b233450d6b635a6266dp20,
-    -0x1.f6a7a0p2
-  },
-  { // Entry 857
-    0x1.b6e0bfb728e42363cd5fb26b31c366c2p22,
-    0x1.f6a7a2p2
-  },
-  { // Entry 858
-    -0x1.b6e0bfb728e42363cd5fb26b31c366c2p22,
-    -0x1.f6a7a2p2
-  },
-  { // Entry 859
-    -0x1.69679b966acc43dfdb28383aa976f5c1p21,
-    0x1.f6a7a4p2
-  },
-  { // Entry 860
-    0x1.69679b966acc43dfdb28383aa976f5c1p21,
-    -0x1.f6a7a4p2
-  },
-  { // Entry 861
-    -0x1.000029eee26fe211bb4a2f8e23a0a9e9p0,
-    0x1.1475cap3
-  },
-  { // Entry 862
-    0x1.000029eee26fe211bb4a2f8e23a0a9e9p0,
-    -0x1.1475cap3
-  },
-  { // Entry 863
-    -0x1.000009eedf3205d2e9b66a3783e02f05p0,
-    0x1.1475ccp3
-  },
-  { // Entry 864
-    0x1.000009eedf3205d2e9b66a3783e02f05p0,
-    -0x1.1475ccp3
-  },
-  { // Entry 865
-    -0x1.ffffd3ddbfe853c71e4a5f7502b09c4ep-1,
-    0x1.1475cep3
-  },
-  { // Entry 866
-    0x1.ffffd3ddbfe853c71e4a5f7502b09c4ep-1,
-    -0x1.1475cep3
-  },
-  { // Entry 867
-    -0x1.f9990e91aa24f550cef57fa4106c56ebp-20,
-    0x1.2d97c4p3
-  },
-  { // Entry 868
-    0x1.f9990e91aa24f550cef57fa4106c56ebp-20,
-    -0x1.2d97c4p3
-  },
-  { // Entry 869
-    -0x1.f3321d234fc557a61c638ef7752de43fp-21,
-    0x1.2d97c6p3
-  },
-  { // Entry 870
-    0x1.f3321d234fc557a61c638ef7752de43fp-21,
-    -0x1.2d97c6p3
-  },
-  { // Entry 871
-    0x1.99bc5b961b1ae363cfc0ffaab4f0e505p-26,
-    0x1.2d97c8p3
-  },
-  { // Entry 872
-    -0x1.99bc5b961b1ae363cfc0ffaab4f0e505p-26,
-    -0x1.2d97c8p3
-  },
-  { // Entry 873
-    0x1.ffff971141794461276f342bd29c5a1fp-1,
-    0x1.46b9c0p3
-  },
-  { // Entry 874
-    -0x1.ffff971141794461276f342bd29c5a1fp-1,
-    -0x1.46b9c0p3
-  },
-  { // Entry 875
-    0x1.ffffd711385b6c9a013dabe9b7254665p-1,
-    0x1.46b9c2p3
-  },
-  { // Entry 876
-    -0x1.ffffd711385b6c9a013dabe9b7254665p-1,
-    -0x1.46b9c2p3
-  },
-  { // Entry 877
-    0x1.00000b889b9ec9c5b277fb6a91cf5f49p0,
-    0x1.46b9c4p3
-  },
-  { // Entry 878
-    -0x1.00000b889b9ec9c5b277fb6a91cf5f49p0,
-    -0x1.46b9c4p3
-  },
-  { // Entry 879
-    0x1.88973cb02a0eea2cfe1a281ca7f04663p19,
-    0x1.5fdbbcp3
-  },
-  { // Entry 880
-    -0x1.88973cb02a0eea2cfe1a281ca7f04663p19,
-    -0x1.5fdbbcp3
-  },
-  { // Entry 881
-    0x1.a4d5d5d753841c89cfe71c25abc8d645p21,
-    0x1.5fdbbep3
-  },
-  { // Entry 882
-    -0x1.a4d5d5d753841c89cfe71c25abc8d645p21,
-    -0x1.5fdbbep3
-  },
-  { // Entry 883
-    -0x1.6fe62a1a9a12b70b1fbb952801f99801p20,
-    0x1.5fdbc0p3
-  },
-  { // Entry 884
-    0x1.6fe62a1a9a12b70b1fbb952801f99801p20,
-    -0x1.5fdbc0p3
-  },
-  { // Entry 885
-    -0x1.00003efff2073e1c0dd65d3b83e5e589p0,
-    0x1.78fdb6p3
-  },
-  { // Entry 886
-    0x1.00003efff2073e1c0dd65d3b83e5e589p0,
-    -0x1.78fdb6p3
-  },
-  { // Entry 887
-    -0x1.00001effec273fb46bb5ecfec53c3105p0,
-    0x1.78fdb8p3
-  },
-  { // Entry 888
-    0x1.00001effec273fb46bb5ecfec53c3105p0,
-    -0x1.78fdb8p3
-  },
-  { // Entry 889
-    -0x1.fffffdffd48e84899227cea1f77a1cf7p-1,
-    0x1.78fdbap3
-  },
-  { // Entry 890
-    0x1.fffffdffd48e84899227cea1f77a1cf7p-1,
-    -0x1.78fdbap3
-  },
-  { // Entry 891
-    0x1.ffffacef26e965d1253424fbbc9ff354p-1,
-    0x1.ab41aep3
-  },
-  { // Entry 892
-    -0x1.ffffacef26e965d1253424fbbc9ff354p-1,
-    -0x1.ab41aep3
-  },
-  { // Entry 893
-    0x1.ffffecef20874a8f035ac4dc1a6029f8p-1,
-    0x1.ab41b0p3
-  },
-  { // Entry 894
-    -0x1.ffffecef20874a8f035ac4dc1a6029f8p-1,
-    -0x1.ab41b0p3
-  },
-  { // Entry 895
-    0x1.000016779112975a2d4b9b75bd90b3c1p0,
-    0x1.ab41b2p3
-  },
-  { // Entry 896
-    -0x1.000016779112975a2d4b9b75bd90b3c1p0,
-    -0x1.ab41b2p3
-  },
-  { // Entry 897
-    0x1.04e4b40acdf9439feccd49bbeb37da0fp19,
-    0x1.c463a8p3
-  },
-  { // Entry 898
-    -0x1.04e4b40acdf9439feccd49bbeb37da0fp19,
-    -0x1.c463a8p3
-  },
-  { // Entry 899
-    0x1.09fa3ae1f4913d1b3764ff9a9678ef68p20,
-    0x1.c463aap3
-  },
-  { // Entry 900
-    -0x1.09fa3ae1f4913d1b3764ff9a9678ef68p20,
-    -0x1.c463aap3
-  },
-  { // Entry 901
-    -0x1.aa8679009203dd6e942f9175275a7461p24,
-    0x1.c463acp3
-  },
-  { // Entry 902
-    0x1.aa8679009203dd6e942f9175275a7461p24,
-    -0x1.c463acp3
-  },
-  { // Entry 903
-    -0x1.00003410fad846fd67d35e0c0d983628p0,
-    0x1.dd85a4p3
-  },
-  { // Entry 904
-    0x1.00003410fad846fd67d35e0c0d983628p0,
-    -0x1.dd85a4p3
-  },
-  { // Entry 905
-    -0x1.00001410f656279e89d14cf4054f6c56p0,
-    0x1.dd85a6p3
-  },
-  { // Entry 906
-    0x1.00001410f656279e89d14cf4054f6c56p0,
-    -0x1.dd85a6p3
-  },
-  { // Entry 907
-    -0x1.ffffe821eba811c067240f666c904371p-1,
-    0x1.dd85a8p3
-  },
-  { // Entry 908
-    0x1.ffffe821eba811c067240f666c904371p-1,
-    -0x1.dd85a8p3
-  },
-  { // Entry 909
-    -0x1.4aa9c2f2c2addb9b59e39401239761e2p-20,
-    0x1.f6a7a0p3
-  },
-  { // Entry 910
-    0x1.4aa9c2f2c2addb9b59e39401239761e2p-20,
-    -0x1.f6a7a0p3
-  },
-  { // Entry 911
-    -0x1.2aa70bcb07e057b729eacbc0cf17cbbfp-22,
-    0x1.f6a7a2p3
-  },
-  { // Entry 912
-    0x1.2aa70bcb07e057b729eacbc0cf17cbbfp-22,
-    -0x1.f6a7a2p3
-  },
-  { // Entry 913
-    0x1.6aac7a1a7c50b873bed39b6859bf2934p-21,
-    0x1.f6a7a4p3
-  },
-  { // Entry 914
-    -0x1.6aac7a1a7c50b873bed39b6859bf2934p-21,
-    -0x1.f6a7a4p3
-  },
-  { // Entry 915
-    0x1.ffff42cd2c95508e700ab76956dd04cfp-1,
-    0x1.07e4ccp4
-  },
-  { // Entry 916
-    -0x1.ffff42cd2c95508e700ab76956dd04cfp-1,
-    -0x1.07e4ccp4
-  },
-  { // Entry 917
-    0x1.ffffc2cd0d489b48844179c594356e0dp-1,
-    0x1.07e4cep4
-  },
-  { // Entry 918
-    -0x1.ffffc2cd0d489b48844179c594356e0dp-1,
-    -0x1.07e4cep4
-  },
-  { // Entry 919
-    0x1.0000216686fdef2e1dd31a2eaa6a1cd4p0,
-    0x1.07e4d0p4
-  },
-  { // Entry 920
-    -0x1.0000216686fdef2e1dd31a2eaa6a1cd4p0,
-    -0x1.07e4d0p4
-  },
-  { // Entry 921
-    0x1.86b7ba4923bcf157dcc33291871e88d4p18,
-    0x1.1475cap4
-  },
-  { // Entry 922
-    -0x1.86b7ba4923bcf157dcc33291871e88d4p18,
-    -0x1.1475cap4
-  },
-  { // Entry 923
-    0x1.9c5becf2873eed369afdc3159a7f797cp20,
-    0x1.1475ccp4
-  },
-  { // Entry 924
-    -0x1.9c5becf2873eed369afdc3159a7f797cp20,
-    -0x1.1475ccp4
-  },
-  { // Entry 925
-    -0x1.733c0d84332fa606d1bd207a491e4371p19,
-    0x1.1475cep4
-  },
-  { // Entry 926
-    0x1.733c0d84332fa606d1bd207a491e4371p19,
-    -0x1.1475cep4
-  },
-  { // Entry 927
-    -0x1.000049220b451bf6e8e605550c88602fp0,
-    0x1.2106c8p4
-  },
-  { // Entry 928
-    0x1.000049220b451bf6e8e605550c88602fp0,
-    -0x1.2106c8p4
-  },
-  { // Entry 929
-    -0x1.0000092200fc99c5dfa4fe18085cf7cdp0,
-    0x1.2106cap4
-  },
-  { // Entry 930
-    0x1.0000092200fc99c5dfa4fe18085cf7cdp0,
-    -0x1.2106cap4
-  },
-  { // Entry 931
-    -0x1.ffff92440d6831722dec0d31810d8fc7p-1,
-    0x1.2106ccp4
-  },
-  { // Entry 932
-    0x1.ffff92440d6831722dec0d31810d8fc7p-1,
-    -0x1.2106ccp4
-  },
-  { // Entry 933
-    -0x1.f9990e91b1d916e582242347112ba1d6p-19,
-    0x1.2d97c4p4
-  },
-  { // Entry 934
-    0x1.f9990e91b1d916e582242347112ba1d6p-19,
-    -0x1.2d97c4p4
-  },
-  { // Entry 935
-    -0x1.f3321d23519fe1dcfdcd2f1f762008a4p-20,
-    0x1.2d97c6p4
-  },
-  { // Entry 936
-    0x1.f3321d23519fe1dcfdcd2f1f762008a4p-20,
-    -0x1.2d97c6p4
-  },
-  { // Entry 937
-    0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
-    0x1.2d97c8p4
-  },
-  { // Entry 938
-    -0x1.99bc5b961b1b24fdb77fcee08ba2f720p-25,
-    -0x1.2d97c8p4
-  },
-  { // Entry 939
-    0x1.ffff18ab2756ba0a20aaf4392b0a8019p-1,
-    0x1.3a28c2p4
-  },
-  { // Entry 940
-    -0x1.ffff18ab2756ba0a20aaf4392b0a8019p-1,
-    -0x1.3a28c2p4
-  },
-  { // Entry 941
-    0x1.ffff98aafd818525d24d664ef962ef14p-1,
-    0x1.3a28c4p4
-  },
-  { // Entry 942
-    -0x1.ffff98aafd818525d24d664ef962ef14p-1,
-    -0x1.3a28c4p4
-  },
-  { // Entry 943
-    0x1.00000c5579d621ab7334eff31d23cf2cp0,
-    0x1.3a28c6p4
-  },
-  { // Entry 944
-    -0x1.00000c5579d621ab7334eff31d23cf2cp0,
-    -0x1.3a28c6p4
-  },
-  { // Entry 945
-    0x1.3846b310de7c796adb3ea2ea22b108e2p18,
-    0x1.46b9c0p4
-  },
-  { // Entry 946
-    -0x1.3846b310de7c796adb3ea2ea22b108e2p18,
-    -0x1.46b9c0p4
-  },
-  { // Entry 947
-    0x1.904425fc92eab0abfe96aeeb6ffb2dc8p19,
-    0x1.46b9c2p4
-  },
-  { // Entry 948
-    -0x1.904425fc92eab0abfe96aeeb6ffb2dc8p19,
-    -0x1.46b9c2p4
-  },
-  { // Entry 949
-    -0x1.6322bacb22de6af00228d2ea4d6d2799p20,
-    0x1.46b9c4p4
-  },
-  { // Entry 950
-    0x1.6322bacb22de6af00228d2ea4d6d2799p20,
-    -0x1.46b9c4p4
-  },
-  { // Entry 951
-    -0x1.00005e331d6dbee9f9d431b49ea7b723p0,
-    0x1.534abep4
-  },
-  { // Entry 952
-    0x1.00005e331d6dbee9f9d431b49ea7b723p0,
-    -0x1.534abep4
-  },
-  { // Entry 953
-    -0x1.00001e330de0f7c734bc57a4c6650327p0,
-    0x1.534ac0p4
-  },
-  { // Entry 954
-    0x1.00001e330de0f7c734bc57a4c6650327p0,
-    -0x1.534ac0p4
-  },
-  { // Entry 955
-    -0x1.ffffbc661ca868d5a4418f0d1cd7c22fp-1,
-    0x1.534ac2p4
-  },
-  { // Entry 956
-    0x1.ffffbc661ca868d5a4418f0d1cd7c22fp-1,
-    -0x1.534ac2p4
-  },
-  { // Entry 957
-    -0x1.4ddd3ba9f1214deb40672397d6f191bcp-19,
-    0x1.5fdbbcp4
-  },
-  { // Entry 958
-    0x1.4ddd3ba9f1214deb40672397d6f191bcp-19,
-    -0x1.5fdbbcp4
-  },
-  { // Entry 959
-    -0x1.3774eea7b8d7214bc89b11532f82d323p-21,
-    0x1.5fdbbep4
-  },
-  { // Entry 960
-    0x1.3774eea7b8d7214bc89b11532f82d323p-21,
-    -0x1.5fdbbep4
-  },
-  { // Entry 961
-    0x1.644588ac248da6d01941121f50673b3fp-20,
-    0x1.5fdbc0p4
-  },
-  { // Entry 962
-    -0x1.644588ac248da6d01941121f50673b3fp-20,
-    -0x1.5fdbc0p4
-  },
-  { // Entry 963
-    0x1.ffff6e88f1320794d845e8e0fe1fd8bdp-1,
-    0x1.6c6cbap4
-  },
-  { // Entry 964
-    -0x1.ffff6e88f1320794d845e8e0fe1fd8bdp-1,
-    -0x1.6c6cbap4
-  },
-  { // Entry 965
-    0x1.ffffee88dcd4429f15c0e4a95b9ba0e6p-1,
-    0x1.6c6cbcp4
-  },
-  { // Entry 966
-    -0x1.ffffee88dcd4429f15c0e4a95b9ba0e6p-1,
-    -0x1.6c6cbcp4
-  },
-  { // Entry 967
-    0x1.00003744743b3dbd37dd053e702bd754p0,
-    0x1.6c6cbep4
-  },
-  { // Entry 968
-    -0x1.00003744743b3dbd37dd053e702bd754p0,
-    -0x1.6c6cbep4
-  },
-  { // Entry 969
-    0x1.04109ab0ec78f827ee95cea746b38c20p18,
-    0x1.78fdb6p4
-  },
-  { // Entry 970
-    -0x1.04109ab0ec78f827ee95cea746b38c20p18,
-    -0x1.78fdb6p4
-  },
-  { // Entry 971
-    0x1.0842c9b32d2125dbf5c20d70c46b17a5p19,
-    0x1.78fdb8p4
-  },
-  { // Entry 972
-    -0x1.0842c9b32d2125dbf5c20d70c46b17a5p19,
-    -0x1.78fdb8p4
-  },
-  { // Entry 973
-    -0x1.ffd49133e26a9c749966630dee813ddep23,
-    0x1.78fdbap4
-  },
-  { // Entry 974
-    0x1.ffd49133e26a9c749966630dee813ddep23,
-    -0x1.78fdbap4
-  },
-  { // Entry 975
-    -0x1.000073443152301fa59338eec29c3778p0,
-    0x1.858eb4p4
-  },
-  { // Entry 976
-    0x1.000073443152301fa59338eec29c3778p0,
-    -0x1.858eb4p4
-  },
-  { // Entry 977
-    -0x1.000033441c81232d3d9fc34bea81fb7cp0,
-    0x1.858eb6p4
-  },
-  { // Entry 978
-    0x1.000033441c81232d3d9fc34bea81fb7cp0,
-    -0x1.858eb6p4
-  },
-  { // Entry 979
-    -0x1.ffffe6882f603946b53b042361aec82cp-1,
-    0x1.858eb8p4
-  },
-  { // Entry 980
-    0x1.ffffe6882f603946b53b042361aec82cp-1,
-    -0x1.858eb8p4
-  },
-  { // Entry 981
-    -0x1.cb6cd4cb82a91dfc4af9a499a575e4a4p-3,
-    0x1.fffffep62
-  },
-  { // Entry 982
-    0x1.cb6cd4cb82a91dfc4af9a499a575e4a4p-3,
-    -0x1.fffffep62
-  },
-  { // Entry 983
-    0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
-    0x1.p63
-  },
-  { // Entry 984
-    -0x1.52f50e757941cbff5b7c2e06a1ab7e9dp6,
-    -0x1.p63
-  },
-  { // Entry 985
-    -0x1.29cbd12821b399c9ee4f265da51881a8p1,
-    0x1.000002p63
-  },
-  { // Entry 986
-    0x1.29cbd12821b399c9ee4f265da51881a8p1,
-    -0x1.000002p63
-  },
-  { // Entry 987
-    0x1.3e4d9148d7086727da944e1c052b68afp-1,
-    0x1.fffffep26
-  },
-  { // Entry 988
-    -0x1.3e4d9148d7086727da944e1c052b68afp-1,
-    -0x1.fffffep26
-  },
-  { // Entry 989
-    -0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
-    0x1.p27
-  },
-  { // Entry 990
-    0x1.2e8fc1af81d8baa8899a3325200c0dcbp0,
-    -0x1.p27
-  },
-  { // Entry 991
-    -0x1.4ce9748e524f77ad85735c7f7d668cf1p-1,
-    0x1.000002p27
-  },
-  { // Entry 992
-    0x1.4ce9748e524f77ad85735c7f7d668cf1p-1,
-    -0x1.000002p27
-  },
-  { // Entry 993
-    0x1.7e3005d57ed93ae45b1bea3e3615bb67p1,
-    0x1.fffffep23
-  },
-  { // Entry 994
-    -0x1.7e3005d57ed93ae45b1bea3e3615bb67p1,
-    -0x1.fffffep23
-  },
-  { // Entry 995
-    -0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
-    0x1.p24
-  },
-  { // Entry 996
-    0x1.3ea28271a9bea36e744f9ce537ba4b59p0,
-    -0x1.p24
-  },
-  { // Entry 997
-    0x1.fe929b4282105a160a9be2731df20a6cp0,
-    0x1.000002p24
-  },
-  { // Entry 998
-    -0x1.fe929b4282105a160a9be2731df20a6cp0,
-    -0x1.000002p24
-  },
-  { // Entry 999
-    0x1.2866f06194e0c2c7ee22ee9f8f9dcaeep0,
-    0x1.fffffep1
-  },
-  { // Entry 1000
-    -0x1.2866f06194e0c2c7ee22ee9f8f9dcaeep0,
-    -0x1.fffffep1
-  },
-  { // Entry 1001
-    0x1.2866f9be4de1370db9078607012cb07bp0,
-    0x1.p2
-  },
-  { // Entry 1002
-    -0x1.2866f9be4de1370db9078607012cb07bp0,
-    -0x1.p2
-  },
-  { // Entry 1003
-    0x1.28670c77c0e647138d4fc7181ef9b61fp0,
-    0x1.000002p2
-  },
-  { // Entry 1004
-    -0x1.28670c77c0e647138d4fc7181ef9b61fp0,
-    -0x1.000002p2
-  },
-  { // Entry 1005
-    -0x1.17af68a6d42f772bd249f5d692afa4e7p1,
-    0x1.fffffep0
-  },
-  { // Entry 1006
-    0x1.17af68a6d42f772bd249f5d692afa4e7p1,
-    -0x1.fffffep0
-  },
-  { // Entry 1007
-    -0x1.17af62e0950f83b5099087aaf67af9c1p1,
-    0x1.p1
-  },
-  { // Entry 1008
-    0x1.17af62e0950f83b5099087aaf67af9c1p1,
-    -0x1.p1
-  },
-  { // Entry 1009
-    -0x1.17af5754176705173cec89d01381f553p1,
-    0x1.000002p1
-  },
-  { // Entry 1010
-    0x1.17af5754176705173cec89d01381f553p1,
-    -0x1.000002p1
-  },
-  { // Entry 1011
-    0x1.8eb2425eff72860d56d61056db54ef67p0,
-    0x1.fffffep-1
-  },
-  { // Entry 1012
-    -0x1.8eb2425eff72860d56d61056db54ef67p0,
-    -0x1.fffffep-1
-  },
-  { // Entry 1013
-    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    0x1.p0
-  },
-  { // Entry 1014
-    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    -0x1.p0
-  },
-  { // Entry 1015
-    0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
-    0x1.000002p0
-  },
-  { // Entry 1016
-    -0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
-    -0x1.000002p0
-  },
-  { // Entry 1017
-    0x1.17b4f472cd791aabfe4ea91afb5e79e7p-1,
-    0x1.fffffep-2
-  },
-  { // Entry 1018
-    -0x1.17b4f472cd791aabfe4ea91afb5e79e7p-1,
-    -0x1.fffffep-2
-  },
-  { // Entry 1019
-    0x1.17b4f5bf3474a4317964807882444cc8p-1,
-    0x1.p-1
-  },
-  { // Entry 1020
-    -0x1.17b4f5bf3474a4317964807882444cc8p-1,
-    -0x1.p-1
-  },
-  { // Entry 1021
-    0x1.17b4f858026dd8033ed3d8d6d5350ca9p-1,
-    0x1.000002p-1
-  },
-  { // Entry 1022
-    -0x1.17b4f858026dd8033ed3d8d6d5350ca9p-1,
-    -0x1.000002p-1
-  },
-  { // Entry 1023
-    0x1.0578593313db659cf3ab88a235218456p-2,
-    0x1.fffffep-3
-  },
-  { // Entry 1024
-    -0x1.0578593313db659cf3ab88a235218456p-2,
-    -0x1.fffffep-3
-  },
-  { // Entry 1025
-    0x1.05785a43c4c55e63940188965c28bd0fp-2,
-    0x1.p-2
-  },
-  { // Entry 1026
-    -0x1.05785a43c4c55e63940188965c28bd0fp-2,
-    -0x1.p-2
-  },
-  { // Entry 1027
-    0x1.05785c652699b8628b7876b7bd83c0ccp-2,
-    0x1.000002p-2
-  },
-  { // Entry 1028
-    -0x1.05785c652699b8628b7876b7bd83c0ccp-2,
-    -0x1.000002p-2
-  },
-  { // Entry 1029
-    0x1.015779ed46574724b9025a4472a1ae0ap-3,
-    0x1.fffffep-4
-  },
-  { // Entry 1030
-    -0x1.015779ed46574724b9025a4472a1ae0ap-3,
-    -0x1.fffffep-4
-  },
-  { // Entry 1031
-    0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
-    0x1.p-3
-  },
-  { // Entry 1032
-    -0x1.01577af1511a4e0459f5b872d4ff34fdp-3,
-    -0x1.p-3
-  },
-  { // Entry 1033
-    0x1.01577cf966a0744553dd44a994f0bbd1p-3,
-    0x1.000002p-3
-  },
-  { // Entry 1034
-    -0x1.01577cf966a0744553dd44a994f0bbd1p-3,
-    -0x1.000002p-3
-  },
-  { // Entry 1035
-    0x1.005576844d44fda0b80348bb17498aa1p-4,
-    0x1.fffffep-5
-  },
-  { // Entry 1036
-    -0x1.005576844d44fda0b80348bb17498aa1p-4,
-    -0x1.fffffep-5
-  },
-  { // Entry 1037
-    0x1.005577854df0083293be639057b0c681p-4,
-    0x1.p-4
-  },
-  { // Entry 1038
-    -0x1.005577854df0083293be639057b0c681p-4,
-    -0x1.p-4
-  },
-  { // Entry 1039
-    0x1.005579874f46235e52082a4d0ddfc6e1p-4,
-    0x1.000002p-4
-  },
-  { // Entry 1040
-    -0x1.005579874f46235e52082a4d0ddfc6e1p-4,
-    -0x1.000002p-4
-  },
-  { // Entry 1041
-    0x1.001556776eb5d98f82e1b5eab28c6b5fp-5,
-    0x1.fffffep-6
-  },
-  { // Entry 1042
-    -0x1.001556776eb5d98f82e1b5eab28c6b5fp-5,
-    -0x1.fffffep-6
-  },
-  { // Entry 1043
-    0x1.00155777aec0857d22c97e809860288dp-5,
-    0x1.p-5
-  },
-  { // Entry 1044
-    -0x1.00155777aec0857d22c97e809860288dp-5,
-    -0x1.p-5
-  },
-  { // Entry 1045
-    0x1.001559782ed5ded8e2b4c819cb7c9f11p-5,
-    0x1.000002p-5
-  },
-  { // Entry 1046
-    -0x1.001559782ed5ded8e2b4c819cb7c9f11p-5,
-    -0x1.000002p-5
-  },
-  { // Entry 1047
-    0x1.000554776853e041010da22a656f8267p-6,
-    0x1.fffffep-7
-  },
-  { // Entry 1048
-    -0x1.000554776853e041010da22a656f8267p-6,
-    -0x1.fffffep-7
-  },
-  { // Entry 1049
-    0x1.0005557778548ae1b5f60574706e8238p-6,
-    0x1.p-6
-  },
-  { // Entry 1050
-    -0x1.0005557778548ae1b5f60574706e8238p-6,
-    -0x1.p-6
-  },
-  { // Entry 1051
-    0x1.000557779855e08327c758e20d691dadp-6,
-    0x1.000002p-6
-  },
-  { // Entry 1052
-    -0x1.000557779855e08327c758e20d691dadp-6,
-    -0x1.000002p-6
-  },
-  { // Entry 1053
-    0x1.fffffe0aaaaa8aeeef0d9b53ad2f4823p-15,
-    0x1.fffffep-15
-  },
-  { // Entry 1054
-    -0x1.fffffe0aaaaa8aeeef0d9b53ad2f4823p-15,
-    -0x1.fffffep-15
-  },
-  { // Entry 1055
-    0x1.00000005555555777777785485485a1ep-14,
-    0x1.p-14
-  },
-  { // Entry 1056
-    -0x1.00000005555555777777785485485a1ep-14,
-    -0x1.p-14
-  },
-  { // Entry 1057
-    0x1.000002055555757777b8cdaa0aa9c640p-14,
-    0x1.000002p-14
-  },
-  { // Entry 1058
-    -0x1.000002055555757777b8cdaa0aa9c640p-14,
-    -0x1.000002p-14
-  },
-  { // Entry 1059
-    0x1.fffffe00000002aaaaa2aaaab2aeeeecp-28,
-    0x1.fffffep-28
-  },
-  { // Entry 1060
-    -0x1.fffffe00000002aaaaa2aaaab2aeeeecp-28,
-    -0x1.fffffep-28
-  },
-  { // Entry 1061
-    0x1.00000000000001555555555555577777p-27,
-    0x1.p-27
-  },
-  { // Entry 1062
-    -0x1.00000000000001555555555555577777p-27,
-    -0x1.p-27
-  },
-  { // Entry 1063
-    0x1.0000020000000155555d555565577782p-27,
-    0x1.000002p-27
-  },
-  { // Entry 1064
-    -0x1.0000020000000155555d555565577782p-27,
-    -0x1.000002p-27
-  },
-  { // Entry 1065
-    0x1.fffffe000000000aaaaa8aaaaacaaaeep-31,
-    0x1.fffffep-31
-  },
-  { // Entry 1066
-    -0x1.fffffe000000000aaaaa8aaaaacaaaeep-31,
-    -0x1.fffffep-31
-  },
-  { // Entry 1067
-    0x1.00000000000000055555555555555577p-30,
-    0x1.p-30
-  },
-  { // Entry 1068
-    -0x1.00000000000000055555555555555577p-30,
-    -0x1.p-30
-  },
-  { // Entry 1069
-    0x1.00000200000000055555755555955577p-30,
-    0x1.000002p-30
-  },
-  { // Entry 1070
-    -0x1.00000200000000055555755555955577p-30,
-    -0x1.000002p-30
-  },
-  { // Entry 1071
-    0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1072
-    -0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1073
-    -0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1074
-    0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1075
-    -0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
-    0x1.fffffep127
-  },
-  { // Entry 1076
-    0x1.393d94b4988c1f254345c9f7d9ea0c03p-1,
-    -0x1.fffffep127
-  },
-  { // Entry 1077
-    0x1.acf315a87aa5da8654c844b917d14745p-1,
-    0x1.fffffcp127
-  },
-  { // Entry 1078
-    -0x1.acf315a87aa5da8654c844b917d14745p-1,
-    -0x1.fffffcp127
-  },
-  { // Entry 1079
-    0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
-    0x1.921fb6p1
-  },
-  { // Entry 1080
-    -0x1.777a5cf72cedf3b544c81808b515f1f9p-24,
-    -0x1.921fb6p1
-  },
-  { // Entry 1081
-    -0x1.5d14946dc98975d6421a55284fe020a1p24,
-    0x1.921fb6p0
-  },
-  { // Entry 1082
-    0x1.5d14946dc98975d6421a55284fe020a1p24,
-    -0x1.921fb6p0
-  },
-  { // Entry 1083
-    0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
-    0x1.000002p0
-  },
-  { // Entry 1084
-    -0x1.8eb24ca5cbea08f991206a3eaf93ab98p0,
-    -0x1.000002p0
-  },
-  { // Entry 1085
-    0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    0x1.p0
-  },
-  { // Entry 1086
-    -0x1.8eb245cbee3a5b8acc7d41323140b3b5p0,
-    -0x1.p0
-  },
-  { // Entry 1087
-    0x1.8eb2425eff72860d56d61056db54ef67p0,
-    0x1.fffffep-1
-  },
-  { // Entry 1088
-    -0x1.8eb2425eff72860d56d61056db54ef67p0,
-    -0x1.fffffep-1
-  },
-  { // Entry 1089
-    0x1.000000bbbd2ec06d6d6fff3655a346acp0,
-    0x1.921fb6p-1
-  },
-  { // Entry 1090
-    -0x1.000000bbbd2ec06d6d6fff3655a346acp0,
-    -0x1.921fb6p-1
-  },
-  { // Entry 1091
-    0x1.000002p-126,
-    0x1.000002p-126
-  },
-  { // Entry 1092
-    -0x1.000002p-126,
-    -0x1.000002p-126
-  },
-  { // Entry 1093
-    0x1.p-126,
-    0x1.p-126
-  },
-  { // Entry 1094
-    -0x1.p-126,
-    -0x1.p-126
-  },
-  { // Entry 1095
-    0x1.fffffcp-127,
-    0x1.fffffcp-127
-  },
-  { // Entry 1096
-    -0x1.fffffcp-127,
-    -0x1.fffffcp-127
-  },
-  { // Entry 1097
-    0x1.fffff8p-127,
-    0x1.fffff8p-127
-  },
-  { // Entry 1098
-    -0x1.fffff8p-127,
-    -0x1.fffff8p-127
-  },
-  { // Entry 1099
-    0x1.p-148,
-    0x1.p-148
-  },
-  { // Entry 1100
-    -0x1.p-148,
-    -0x1.p-148
-  },
-  { // Entry 1101
-    0x1.p-149,
-    0x1.p-149
-  },
-  { // Entry 1102
-    -0x1.p-149,
-    -0x1.p-149
-  },
-  { // Entry 1103
-    0.0,
-    0.0f
-  },
-  { // Entry 1104
-    -0.0,
-    -0.0f
-  },
-};
-#endif // __BIONIC__
-
-TEST(math_tanf, tanf_intel) {
-#if defined(__BIONIC__)
-  for (size_t i = 0; i < sizeof(g_tanf_intel_data)/sizeof(tanf_intel_data_t); i++) {
-    EXPECT_FLOAT_EQ(g_tanf_intel_data[i].expected, tanf(g_tanf_intel_data[i].call_data)) << "Failed on element " << i;
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.";
-#endif // __BIONIC__
-}
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index 2203db9..e616e9b 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -14,6 +14,9 @@
  * limitations under the License.
  */
 
+#define _GNU_SOURCE 1
+#include <math.h>
+
 // This include (and the associated definition of __test_capture_signbit)
 // must be placed before any files that include <cmath> (gtest.h in this case).
 //
@@ -29,7 +32,6 @@
 // sure that we're testing the bionic version of signbit. The C++ libraries
 // are free to reimplement signbit or delegate to compiler builtins if they
 // please.
-#include <math.h>
 
 namespace {
 template<typename T> inline int test_capture_signbit(const T in) {
@@ -46,6 +48,8 @@
 }
 }
 
+#include "math_data_test.h"
+
 #include <gtest/gtest.h>
 
 #include <fenv.h>
@@ -167,39 +171,30 @@
 }
 
 TEST(math, __fpclassifyd) {
-#if defined(__BIONIC__)
+#if defined(__GLIBC__)
+#define __fpclassifyd __fpclassify
+#endif
   ASSERT_EQ(FP_INFINITE, __fpclassifyd(HUGE_VAL));
   ASSERT_EQ(FP_NAN, __fpclassifyd(nan("")));
   ASSERT_EQ(FP_NORMAL, __fpclassifyd(1.0));
   ASSERT_EQ(FP_SUBNORMAL, __fpclassifyd(double_subnormal()));
   ASSERT_EQ(FP_ZERO, __fpclassifyd(0.0));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
 }
 
 TEST(math, __fpclassifyf) {
-#if defined(__BIONIC__)
   ASSERT_EQ(FP_INFINITE, __fpclassifyf(HUGE_VALF));
   ASSERT_EQ(FP_NAN, __fpclassifyf(nanf("")));
   ASSERT_EQ(FP_NORMAL, __fpclassifyf(1.0f));
   ASSERT_EQ(FP_SUBNORMAL, __fpclassifyf(float_subnormal()));
   ASSERT_EQ(FP_ZERO, __fpclassifyf(0.0f));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
 }
 
 TEST(math, __fpclassifyl) {
-#if defined(__BIONIC__)
   EXPECT_EQ(FP_INFINITE, __fpclassifyl(HUGE_VALL));
   EXPECT_EQ(FP_NAN, __fpclassifyl(nanl("")));
   EXPECT_EQ(FP_NORMAL, __fpclassifyl(1.0L));
   EXPECT_EQ(FP_SUBNORMAL, __fpclassifyl(ldouble_subnormal()));
   EXPECT_EQ(FP_ZERO, __fpclassifyl(0.0L));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
 }
 
 TEST(math, finitef) {
@@ -208,30 +203,27 @@
 }
 
 TEST(math, __isfinite) {
-#if defined(__BIONIC__)
+#if defined(__GLIBC__)
+#define __isfinite __finite
+#endif
   ASSERT_TRUE(__isfinite(123.0));
   ASSERT_FALSE(__isfinite(HUGE_VAL));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
 }
 
 TEST(math, __isfinitef) {
-#if defined(__BIONIC__)
+#if defined(__GLIBC__)
+#define __isfinitef __finitef
+#endif
   ASSERT_TRUE(__isfinitef(123.0f));
   ASSERT_FALSE(__isfinitef(HUGE_VALF));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
 }
 
 TEST(math, __isfinitel) {
-#if defined(__BIONIC__)
+#if defined(__GLIBC__)
+#define __isfinitel __finitel
+#endif
   ASSERT_TRUE(__isfinitel(123.0L));
   ASSERT_FALSE(__isfinitel(HUGE_VALL));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
 }
 
 TEST(math, finite) {
@@ -281,7 +273,7 @@
   ASSERT_TRUE(__isnormal(123.0));
   ASSERT_FALSE(__isnormal(double_subnormal()));
 #else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
+  GTEST_LOG_(INFO) << "glibc doesn't have __isnormal.\n";
 #endif // __BIONIC__
 }
 
@@ -290,7 +282,7 @@
   ASSERT_TRUE(__isnormalf(123.0f));
   ASSERT_FALSE(__isnormalf(float_subnormal()));
 #else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
+  GTEST_LOG_(INFO) << "glibc doesn't have __isnormalf.\n";
 #endif // __BIONIC__
 }
 
@@ -299,7 +291,7 @@
   ASSERT_TRUE(__isnormall(123.0L));
   ASSERT_FALSE(__isnormall(ldouble_subnormal()));
 #else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
+  GTEST_LOG_(INFO) << "glibc doesn't have __isnormall.\n";
 #endif // __BIONIC__
 }
 
@@ -1032,13 +1024,13 @@
 TEST(math, nextafter) {
   ASSERT_DOUBLE_EQ(0.0, nextafter(0.0, 0.0));
   ASSERT_DOUBLE_EQ(4.9406564584124654e-324, nextafter(0.0, 1.0));
-  ASSERT_DOUBLE_EQ(0.0, nextafter(0.0, -1.0));
+  ASSERT_DOUBLE_EQ(-4.9406564584124654e-324, nextafter(0.0, -1.0));
 }
 
 TEST(math, nextafterf) {
   ASSERT_FLOAT_EQ(0.0f, nextafterf(0.0f, 0.0f));
   ASSERT_FLOAT_EQ(1.4012985e-45f, nextafterf(0.0f, 1.0f));
-  ASSERT_FLOAT_EQ(0.0f, nextafterf(0.0f, -1.0f));
+  ASSERT_FLOAT_EQ(-1.4012985e-45f, nextafterf(0.0f, -1.0f));
 }
 
 TEST(math, nextafterl) {
@@ -1047,19 +1039,19 @@
   // sizeof(double) == sizeof(long double)
   long double smallest_positive = ldexpl(1.0L, LDBL_MIN_EXP - LDBL_MANT_DIG);
   ASSERT_DOUBLE_EQ(smallest_positive, nextafterl(0.0L, 1.0L));
-  ASSERT_DOUBLE_EQ(0.0L, nextafterl(0.0L, -1.0L));
+  ASSERT_DOUBLE_EQ(-smallest_positive, nextafterl(0.0L, -1.0L));
 }
 
 TEST(math, nexttoward) {
   ASSERT_DOUBLE_EQ(0.0, nexttoward(0.0, 0.0L));
   ASSERT_DOUBLE_EQ(4.9406564584124654e-324, nexttoward(0.0, 1.0L));
-  ASSERT_DOUBLE_EQ(0.0, nexttoward(0.0, -1.0L));
+  ASSERT_DOUBLE_EQ(-4.9406564584124654e-324, nexttoward(0.0, -1.0L));
 }
 
 TEST(math, nexttowardf) {
   ASSERT_FLOAT_EQ(0.0f, nexttowardf(0.0f, 0.0L));
   ASSERT_FLOAT_EQ(1.4012985e-45f, nexttowardf(0.0f, 1.0L));
-  ASSERT_FLOAT_EQ(0.0f, nexttowardf(0.0f, -1.0L));
+  ASSERT_FLOAT_EQ(-1.4012985e-45f, nexttowardf(0.0f, -1.0L));
 }
 
 TEST(math, nexttowardl) {
@@ -1068,7 +1060,7 @@
   // sizeof(double) == sizeof(long double)
   long double smallest_positive = ldexpl(1.0L, LDBL_MIN_EXP - LDBL_MANT_DIG);
   ASSERT_DOUBLE_EQ(smallest_positive, nexttowardl(0.0L, 1.0L));
-  ASSERT_DOUBLE_EQ(0.0L, nexttowardl(0.0L, -1.0L));
+  ASSERT_DOUBLE_EQ(-smallest_positive, nexttowardl(0.0L, -1.0L));
 }
 
 TEST(math, copysign) {
@@ -1095,19 +1087,19 @@
 TEST(math, significand) {
   ASSERT_DOUBLE_EQ(0.0, significand(0.0));
   ASSERT_DOUBLE_EQ(1.2, significand(1.2));
-  ASSERT_DOUBLE_EQ(1.5375, significand(12.3));
+  ASSERT_DOUBLE_EQ(1.53125, significand(12.25));
 }
 
 TEST(math, significandf) {
   ASSERT_FLOAT_EQ(0.0f, significandf(0.0f));
   ASSERT_FLOAT_EQ(1.2f, significandf(1.2f));
-  ASSERT_FLOAT_EQ(1.5375f, significandf(12.3f));
+  ASSERT_FLOAT_EQ(1.53125f, significandf(12.25f));
 }
 
 TEST(math, significandl) {
   ASSERT_DOUBLE_EQ(0.0L, significandl(0.0L));
   ASSERT_DOUBLE_EQ(1.2L, significandl(1.2L));
-  ASSERT_DOUBLE_EQ(1.5375L, significandl(12.3L));
+  ASSERT_DOUBLE_EQ(1.53125L, significandl(12.25L));
 }
 
 TEST(math, scalb) {
@@ -1156,7 +1148,7 @@
   ASSERT_DOUBLE_EQ(log(24.0), gamma_r(5.0, &sign));
   ASSERT_EQ(1, sign);
 #else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
+  GTEST_LOG_(INFO) << "glibc doesn't have gamma_r.\n";
 #endif // __BIONIC__
 }
 
@@ -1166,7 +1158,7 @@
   ASSERT_FLOAT_EQ(logf(24.0f), gammaf_r(5.0f, &sign));
   ASSERT_EQ(1, sign);
 #else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
+  GTEST_LOG_(INFO) << "glibc doesn't have gammaf_r.\n";
 #endif // __BIONIC__
 }
 
@@ -1188,12 +1180,51 @@
   ASSERT_EQ(1, sign);
 }
 
+TEST(math, lgamma_r_17471883) {
+  int sign;
+
+  sign = 0;
+  ASSERT_DOUBLE_EQ(HUGE_VAL, lgamma_r(0.0, &sign));
+  ASSERT_EQ(1, sign);
+  sign = 0;
+  ASSERT_DOUBLE_EQ(HUGE_VAL, lgamma_r(-0.0, &sign));
+  ASSERT_EQ(-1, sign);
+}
+
 TEST(math, lgammaf_r) {
   int sign;
   ASSERT_FLOAT_EQ(logf(24.0f), lgammaf_r(5.0f, &sign));
   ASSERT_EQ(1, sign);
 }
 
+TEST(math, lgammaf_r_17471883) {
+  int sign;
+
+  sign = 0;
+  ASSERT_FLOAT_EQ(HUGE_VALF, lgammaf_r(0.0f, &sign));
+  ASSERT_EQ(1, sign);
+  sign = 0;
+  ASSERT_FLOAT_EQ(HUGE_VALF, lgammaf_r(-0.0f, &sign));
+  ASSERT_EQ(-1, sign);
+}
+
+TEST(math, lgammal_r) {
+  int sign;
+  ASSERT_DOUBLE_EQ(log(24.0L), lgamma_r(5.0L, &sign));
+  ASSERT_EQ(1, sign);
+}
+
+TEST(math, lgammal_r_17471883) {
+  int sign;
+
+  sign = 0;
+  ASSERT_DOUBLE_EQ(HUGE_VAL, lgammal_r(0.0L, &sign));
+  ASSERT_EQ(1, sign);
+  sign = 0;
+  ASSERT_DOUBLE_EQ(HUGE_VAL, lgammal_r(-0.0L, &sign));
+  ASSERT_EQ(-1, sign);
+}
+
 TEST(math, tgamma) {
   ASSERT_DOUBLE_EQ(24.0, tgamma(5.0));
 }
@@ -1347,3 +1378,493 @@
   ASSERT_TRUE(nextafterf(1.0f, 0.0f) - 1.0f < 0.0f);
   ASSERT_TRUE(nextafterl(1.0L, 0.0L) - 1.0L < 0.0L);
 }
+
+#include "math_data/acos_intel_data.h"
+TEST(math, acos_intel) {
+  DoMathDataTest<1>(g_acos_intel_data, acos);
+}
+
+#include "math_data/acosf_intel_data.h"
+TEST(math, acosf_intel) {
+  DoMathDataTest<1>(g_acosf_intel_data, acosf);
+}
+
+#include "math_data/acosh_intel_data.h"
+TEST(math, acosh_intel) {
+  DoMathDataTest<2>(g_acosh_intel_data, acosh);
+}
+
+#include "math_data/acoshf_intel_data.h"
+TEST(math, acoshf_intel) {
+  DoMathDataTest<2>(g_acoshf_intel_data, acoshf);
+}
+
+#include "math_data/asin_intel_data.h"
+TEST(math, asin_intel) {
+  DoMathDataTest<1>(g_asin_intel_data, asin);
+}
+
+#include "math_data/asinf_intel_data.h"
+TEST(math, asinf_intel) {
+  DoMathDataTest<1>(g_asinf_intel_data, asinf);
+}
+
+#include "math_data/asinh_intel_data.h"
+TEST(math, asinh_intel) {
+  DoMathDataTest<2>(g_asinh_intel_data, asinh);
+}
+
+#include "math_data/asinhf_intel_data.h"
+TEST(math, asinhf_intel) {
+  DoMathDataTest<2>(g_asinhf_intel_data, asinhf);
+}
+
+#include "math_data/atan2_intel_data.h"
+TEST(math, atan2_intel) {
+  DoMathDataTest<2>(g_atan2_intel_data, atan2);
+}
+
+#include "math_data/atan2f_intel_data.h"
+TEST(math, atan2f_intel) {
+  DoMathDataTest<2>(g_atan2f_intel_data, atan2f);
+}
+
+#include "math_data/atan_intel_data.h"
+TEST(math, atan_intel) {
+  DoMathDataTest<1>(g_atan_intel_data, atan);
+}
+
+#include "math_data/atanf_intel_data.h"
+TEST(math, atanf_intel) {
+  DoMathDataTest<1>(g_atanf_intel_data, atanf);
+}
+
+#include "math_data/atanh_intel_data.h"
+TEST(math, atanh_intel) {
+  DoMathDataTest<2>(g_atanh_intel_data, atanh);
+}
+
+#include "math_data/atanhf_intel_data.h"
+TEST(math, atanhf_intel) {
+  DoMathDataTest<2>(g_atanhf_intel_data, atanhf);
+}
+
+#include "math_data/cbrt_intel_data.h"
+TEST(math, cbrt_intel) {
+  DoMathDataTest<1>(g_cbrt_intel_data, cbrt);
+}
+
+#include "math_data/cbrtf_intel_data.h"
+TEST(math, cbrtf_intel) {
+  DoMathDataTest<1>(g_cbrtf_intel_data, cbrtf);
+}
+
+#include "math_data/ceil_intel_data.h"
+TEST(math, ceil_intel) {
+  DoMathDataTest<1>(g_ceil_intel_data, ceil);
+}
+
+#include "math_data/ceilf_intel_data.h"
+TEST(math, ceilf_intel) {
+  DoMathDataTest<1>(g_ceilf_intel_data, ceilf);
+}
+
+#include "math_data/copysign_intel_data.h"
+TEST(math, copysign_intel) {
+  DoMathDataTest<1>(g_copysign_intel_data, copysign);
+}
+
+#include "math_data/copysignf_intel_data.h"
+TEST(math, copysignf_intel) {
+  DoMathDataTest<1>(g_copysignf_intel_data, copysignf);
+}
+
+#include "math_data/cos_intel_data.h"
+TEST(math, cos_intel) {
+  DoMathDataTest<1>(g_cos_intel_data, cos);
+}
+
+#include "math_data/cosf_intel_data.h"
+TEST(math, cosf_intel) {
+  DoMathDataTest<1>(g_cosf_intel_data, cosf);
+}
+
+#include "math_data/cosh_intel_data.h"
+TEST(math, cosh_intel) {
+  DoMathDataTest<2>(g_cosh_intel_data, cosh);
+}
+
+#include "math_data/coshf_intel_data.h"
+TEST(math, coshf_intel) {
+  DoMathDataTest<2>(g_coshf_intel_data, coshf);
+}
+
+#include "math_data/exp_intel_data.h"
+TEST(math, exp_intel) {
+  DoMathDataTest<1>(g_exp_intel_data, exp);
+}
+
+#include "math_data/expf_intel_data.h"
+TEST(math, expf_intel) {
+  DoMathDataTest<1>(g_expf_intel_data, expf);
+}
+
+#include "math_data/exp2_intel_data.h"
+TEST(math, exp2_intel) {
+  DoMathDataTest<1>(g_exp2_intel_data, exp2);
+}
+
+#include "math_data/exp2f_intel_data.h"
+TEST(math, exp2f_intel) {
+  DoMathDataTest<1>(g_exp2f_intel_data, exp2f);
+}
+
+#include "math_data/expm1_intel_data.h"
+TEST(math, expm1_intel) {
+  DoMathDataTest<1>(g_expm1_intel_data, expm1);
+}
+
+#include "math_data/expm1f_intel_data.h"
+TEST(math, expm1f_intel) {
+  DoMathDataTest<1>(g_expm1f_intel_data, expm1f);
+}
+
+#include "math_data/fabs_intel_data.h"
+TEST(math, fabs_intel) {
+  DoMathDataTest<1>(g_fabs_intel_data, fabs);
+}
+
+#include "math_data/fabsf_intel_data.h"
+TEST(math, fabsf_intel) {
+  DoMathDataTest<1>(g_fabsf_intel_data, fabsf);
+}
+
+#include "math_data/fdim_intel_data.h"
+TEST(math, fdim_intel) {
+  DoMathDataTest<1>(g_fdim_intel_data, fdim);
+}
+
+#include "math_data/fdimf_intel_data.h"
+TEST(math, fdimf_intel) {
+  DoMathDataTest<1>(g_fdimf_intel_data, fdimf);
+}
+
+#include "math_data/floor_intel_data.h"
+TEST(math, floor_intel) {
+  DoMathDataTest<1>(g_floor_intel_data, floor);
+}
+
+#include "math_data/floorf_intel_data.h"
+TEST(math, floorf_intel) {
+  DoMathDataTest<1>(g_floorf_intel_data, floorf);
+}
+
+#include "math_data/fma_intel_data.h"
+TEST(math, fma_intel) {
+  DoMathDataTest<1>(g_fma_intel_data, fma);
+}
+
+#include "math_data/fmaf_intel_data.h"
+TEST(math, fmaf_intel) {
+  DoMathDataTest<1>(g_fmaf_intel_data, fmaf);
+}
+
+#include "math_data/fmax_intel_data.h"
+TEST(math, fmax_intel) {
+  DoMathDataTest<1>(g_fmax_intel_data, fmax);
+}
+
+#include "math_data/fmaxf_intel_data.h"
+TEST(math, fmaxf_intel) {
+  DoMathDataTest<1>(g_fmaxf_intel_data, fmaxf);
+}
+
+#include "math_data/fmin_intel_data.h"
+TEST(math, fmin_intel) {
+  DoMathDataTest<1>(g_fmin_intel_data, fmin);
+}
+
+#include "math_data/fminf_intel_data.h"
+TEST(math, fminf_intel) {
+  DoMathDataTest<1>(g_fminf_intel_data, fminf);
+}
+
+#include "math_data/fmod_intel_data.h"
+TEST(math, fmod_intel) {
+  DoMathDataTest<1>(g_fmod_intel_data, fmod);
+}
+
+#include "math_data/fmodf_intel_data.h"
+TEST(math, fmodf_intel) {
+  DoMathDataTest<1>(g_fmodf_intel_data, fmodf);
+}
+
+#include "math_data/frexp_intel_data.h"
+TEST(math, frexp_intel) {
+  DoMathDataTest<1>(g_frexp_intel_data, frexp);
+}
+
+#include "math_data/frexpf_intel_data.h"
+TEST(math, frexpf_intel) {
+  DoMathDataTest<1>(g_frexpf_intel_data, frexpf);
+}
+
+#include "math_data/hypot_intel_data.h"
+TEST(math, hypot_intel) {
+  DoMathDataTest<1>(g_hypot_intel_data, hypot);
+}
+
+#include "math_data/hypotf_intel_data.h"
+TEST(math, hypotf_intel) {
+  DoMathDataTest<1>(g_hypotf_intel_data, hypotf);
+}
+
+#include "math_data/ilogb_intel_data.h"
+TEST(math, ilogb_intel) {
+  DoMathDataTest<1>(g_ilogb_intel_data, ilogb);
+}
+
+#include "math_data/ilogbf_intel_data.h"
+TEST(math, ilogbf_intel) {
+  DoMathDataTest<1>(g_ilogbf_intel_data, ilogbf);
+}
+
+#include "math_data/ldexp_intel_data.h"
+TEST(math, ldexp_intel) {
+  DoMathDataTest<1>(g_ldexp_intel_data, ldexp);
+}
+
+#include "math_data/ldexpf_intel_data.h"
+TEST(math, ldexpf_intel) {
+  DoMathDataTest<1>(g_ldexpf_intel_data, ldexpf);
+}
+
+#include "math_data/log_intel_data.h"
+TEST(math, log_intel) {
+  DoMathDataTest<1>(g_log_intel_data, log);
+}
+
+#include "math_data/logf_intel_data.h"
+TEST(math, logf_intel) {
+  DoMathDataTest<1>(g_logf_intel_data, logf);
+}
+
+#include "math_data/log10_intel_data.h"
+TEST(math, log10_intel) {
+  DoMathDataTest<1>(g_log10_intel_data, log10);
+}
+
+#include "math_data/log10f_intel_data.h"
+TEST(math, log10f_intel) {
+  DoMathDataTest<1>(g_log10f_intel_data, log10f);
+}
+
+#include "math_data/log1p_intel_data.h"
+TEST(math, log1p_intel) {
+  DoMathDataTest<1>(g_log1p_intel_data, log1p);
+}
+
+#include "math_data/log1pf_intel_data.h"
+TEST(math, log1pf_intel) {
+  DoMathDataTest<1>(g_log1pf_intel_data, log1pf);
+}
+
+#include "math_data/log2_intel_data.h"
+TEST(math, log2_intel) {
+  DoMathDataTest<1>(g_log2_intel_data, log2);
+}
+
+#include "math_data/log2f_intel_data.h"
+TEST(math, log2f_intel) {
+  DoMathDataTest<1>(g_log2f_intel_data, log2f);
+}
+
+#include "math_data/logb_intel_data.h"
+TEST(math, logb_intel) {
+  DoMathDataTest<1>(g_logb_intel_data, logb);
+}
+
+#include "math_data/logbf_intel_data.h"
+TEST(math, logbf_intel) {
+  DoMathDataTest<1>(g_logbf_intel_data, logbf);
+}
+
+#include "math_data/modf_intel_data.h"
+TEST(math, modf_intel) {
+  DoMathDataTest<1>(g_modf_intel_data, modf);
+}
+
+#include "math_data/modff_intel_data.h"
+TEST(math, modff_intel) {
+  DoMathDataTest<1>(g_modff_intel_data, modff);
+}
+
+#include "math_data/nearbyint_intel_data.h"
+TEST(math, nearbyint_intel) {
+  DoMathDataTest<1>(g_nearbyint_intel_data, nearbyint);
+}
+
+#include "math_data/nearbyintf_intel_data.h"
+TEST(math, nearbyintf_intel) {
+  DoMathDataTest<1>(g_nearbyintf_intel_data, nearbyintf);
+}
+
+#include "math_data/nextafter_intel_data.h"
+TEST(math, nextafter_intel) {
+  DoMathDataTest<1>(g_nextafter_intel_data, nextafter);
+}
+
+#include "math_data/nextafterf_intel_data.h"
+TEST(math, nextafterf_intel) {
+  DoMathDataTest<1>(g_nextafterf_intel_data, nextafterf);
+}
+
+#include "math_data/pow_intel_data.h"
+TEST(math, pow_intel) {
+  DoMathDataTest<1>(g_pow_intel_data, pow);
+}
+
+#include "math_data/powf_intel_data.h"
+TEST(math, powf_intel) {
+  DoMathDataTest<1>(g_powf_intel_data, powf);
+}
+
+#include "math_data/remainder_intel_data.h"
+TEST(math, remainder_intel) {
+  DoMathDataTest<1>(g_remainder_intel_data, remainder);
+}
+
+#include "math_data/remainderf_intel_data.h"
+TEST(math, remainderf_intel) {
+  DoMathDataTest<1>(g_remainderf_intel_data, remainderf);
+}
+
+#include "math_data/remquo_intel_data.h"
+TEST(math, remquo_intel) {
+  DoMathDataTest<1>(g_remquo_intel_data, remquo);
+}
+
+#include "math_data/remquof_intel_data.h"
+TEST(math, remquof_intel) {
+  DoMathDataTest<1>(g_remquof_intel_data, remquof);
+}
+
+#include "math_data/rint_intel_data.h"
+TEST(math, rint_intel) {
+  DoMathDataTest<1>(g_rint_intel_data, rint);
+}
+
+#include "math_data/rintf_intel_data.h"
+TEST(math, rintf_intel) {
+  DoMathDataTest<1>(g_rintf_intel_data, rintf);
+}
+
+#include "math_data/round_intel_data.h"
+TEST(math, round_intel) {
+  DoMathDataTest<1>(g_round_intel_data, round);
+}
+
+#include "math_data/roundf_intel_data.h"
+TEST(math, roundf_intel) {
+  DoMathDataTest<1>(g_roundf_intel_data, roundf);
+}
+
+#include "math_data/scalb_intel_data.h"
+TEST(math, scalb_intel) {
+  DoMathDataTest<1>(g_scalb_intel_data, scalb);
+}
+
+#include "math_data/scalbf_intel_data.h"
+TEST(math, scalbf_intel) {
+  DoMathDataTest<1>(g_scalbf_intel_data, scalbf);
+}
+
+#include "math_data/scalbn_intel_data.h"
+TEST(math, scalbn_intel) {
+  DoMathDataTest<1>(g_scalbn_intel_data, scalbn);
+}
+
+#include "math_data/scalbnf_intel_data.h"
+TEST(math, scalbnf_intel) {
+  DoMathDataTest<1>(g_scalbnf_intel_data, scalbnf);
+}
+
+#include "math_data/significand_intel_data.h"
+TEST(math, significand_intel) {
+  DoMathDataTest<1>(g_significand_intel_data, significand);
+}
+
+#include "math_data/significandf_intel_data.h"
+TEST(math, significandf_intel) {
+  DoMathDataTest<1>(g_significandf_intel_data, significandf);
+}
+
+#include "math_data/sin_intel_data.h"
+TEST(math, sin_intel) {
+  DoMathDataTest<1>(g_sin_intel_data, sin);
+}
+
+#include "math_data/sinf_intel_data.h"
+TEST(math, sinf_intel) {
+  DoMathDataTest<1>(g_sinf_intel_data, sinf);
+}
+
+#include "math_data/sinh_intel_data.h"
+TEST(math, sinh_intel) {
+  DoMathDataTest<2>(g_sinh_intel_data, sinh);
+}
+
+#include "math_data/sinhf_intel_data.h"
+TEST(math, sinhf_intel) {
+  DoMathDataTest<2>(g_sinhf_intel_data, sinhf);
+}
+
+#include "math_data/sincos_intel_data.h"
+TEST(math, sincos_intel) {
+  DoMathDataTest<1>(g_sincos_intel_data, sincos);
+}
+
+#include "math_data/sincosf_intel_data.h"
+TEST(math, sincosf_intel) {
+  DoMathDataTest<1>(g_sincosf_intel_data, sincosf);
+}
+
+#include "math_data/sqrt_intel_data.h"
+TEST(math, sqrt_intel) {
+  DoMathDataTest<1>(g_sqrt_intel_data, sqrt);
+}
+
+#include "math_data/sqrtf_intel_data.h"
+TEST(math, sqrtf_intel) {
+  DoMathDataTest<1>(g_sqrtf_intel_data, sqrtf);
+}
+
+#include "math_data/tan_intel_data.h"
+TEST(math, tan_intel) {
+  DoMathDataTest<1>(g_tan_intel_data, tan);
+}
+
+#include "math_data/tanf_intel_data.h"
+TEST(math, tanf_intel) {
+  DoMathDataTest<1>(g_tanf_intel_data, tanf);
+}
+
+#include "math_data/tanh_intel_data.h"
+TEST(math, tanh_intel) {
+  DoMathDataTest<2>(g_tanh_intel_data, tanh);
+}
+
+#include "math_data/tanhf_intel_data.h"
+TEST(math, tanhf_intel) {
+  DoMathDataTest<2>(g_tanhf_intel_data, tanhf);
+}
+
+#include "math_data/trunc_intel_data.h"
+TEST(math, trunc_intel) {
+  DoMathDataTest<1>(g_trunc_intel_data, trunc);
+}
+
+#include "math_data/truncf_intel_data.h"
+TEST(math, truncf_intel) {
+  DoMathDataTest<1>(g_truncf_intel_data, truncf);
+}
diff --git a/tests/mntent_test.cpp b/tests/mntent_test.cpp
index 637cb52..a102849 100644
--- a/tests/mntent_test.cpp
+++ b/tests/mntent_test.cpp
@@ -19,16 +19,22 @@
 #include <mntent.h>
 
 TEST(mntent, mntent_smoke) {
-  FILE* fp = setmntent("/no/mnt/tab/on/android", "r");
-  ASSERT_TRUE(fp == NULL);
+  FILE* fp = setmntent("/proc/mounts", "r");
+  ASSERT_TRUE(fp != NULL);
 
-#if __BIONIC__ // glibc doesn't let you call getmntent/getmntent_r with a NULL FILE*.
-  ASSERT_TRUE(getmntent(fp) == NULL);
+  ASSERT_TRUE(getmntent(fp) != NULL);
 
-  struct mntent mbuf;
-  char cbuf[32];
-  ASSERT_TRUE(getmntent_r(fp, &mbuf, cbuf, sizeof(cbuf)) == NULL);
-#endif
+  bool saw_proc = false;
+
+  struct mntent entry;
+  char buf[BUFSIZ];
+  while (getmntent_r(fp, &entry, buf, sizeof(buf)) != NULL) {
+    if (strcmp(entry.mnt_fsname, "proc") == 0 && strcmp(entry.mnt_dir, "/proc") == 0) {
+      saw_proc = true;
+    }
+  }
+
+  ASSERT_TRUE(saw_proc);
 
   ASSERT_EQ(1, endmntent(fp));
 }
diff --git a/tests/netdb_test.cpp b/tests/netdb_test.cpp
index 33f6c01..a35f703 100644
--- a/tests/netdb_test.cpp
+++ b/tests/netdb_test.cpp
@@ -14,16 +14,100 @@
  * limitations under the License.
  */
 
+#include <netdb.h>
+
 #include <gtest/gtest.h>
 
+#include <arpa/inet.h>
+#include <string.h>
 #include <sys/types.h>
 #include <sys/socket.h>
-#include <netdb.h>
 #include <netinet/in.h>
 
+// https://code.google.com/p/android/issues/detail?id=13228
+TEST(netdb, freeaddrinfo_NULL) {
+  freeaddrinfo(NULL);
+}
+
+TEST(netdb, getaddrinfo_NULL_host) {
+  // It's okay for the host argument to be NULL, as long as service isn't.
+  addrinfo* ai = NULL;
+  ASSERT_EQ(0, getaddrinfo(NULL, "smtp", NULL, &ai));
+  // (sockaddr_in::sin_port and sockaddr_in6::sin6_port overlap.)
+  ASSERT_EQ(25U, ntohs(reinterpret_cast<sockaddr_in*>(ai->ai_addr)->sin_port));
+  freeaddrinfo(ai);
+}
+
+TEST(netdb, getaddrinfo_NULL_service) {
+  // It's okay for the service argument to be NULL, as long as host isn't.
+  addrinfo* ai = NULL;
+  ASSERT_EQ(0, getaddrinfo("localhost", NULL, NULL, &ai));
+  ASSERT_TRUE(ai != NULL);
+  freeaddrinfo(ai);
+}
+
 TEST(netdb, getaddrinfo_NULL_hints) {
   addrinfo* ai = NULL;
   ASSERT_EQ(0, getaddrinfo("localhost", "9999", NULL, &ai));
+
+  bool saw_tcp = false;
+  bool saw_udp = false;
+  for (addrinfo* p = ai; p != NULL; p = p->ai_next) {
+    ASSERT_TRUE(p->ai_family == AF_INET || p->ai_family == AF_INET6);
+    if (p->ai_socktype == SOCK_STREAM) {
+      ASSERT_EQ(IPPROTO_TCP, p->ai_protocol);
+      saw_tcp = true;
+    } else if (p->ai_socktype == SOCK_DGRAM) {
+      ASSERT_EQ(IPPROTO_UDP, p->ai_protocol);
+      saw_udp = true;
+    }
+  }
+  ASSERT_TRUE(saw_tcp);
+  ASSERT_TRUE(saw_udp);
+
+  freeaddrinfo(ai);
+}
+
+TEST(netdb, getaddrinfo_service_lookup) {
+  addrinfo* ai = NULL;
+  ASSERT_EQ(0, getaddrinfo("localhost", "smtp", NULL, &ai));
+  ASSERT_EQ(SOCK_STREAM, ai->ai_socktype);
+  ASSERT_EQ(IPPROTO_TCP, ai->ai_protocol);
+  ASSERT_EQ(25, ntohs(reinterpret_cast<sockaddr_in*>(ai->ai_addr)->sin_port));
+  freeaddrinfo(ai);
+}
+
+TEST(netdb, getaddrinfo_hints) {
+  addrinfo hints;
+  memset(&hints, 0, sizeof(hints));
+  hints.ai_family = AF_INET;
+  hints.ai_socktype = SOCK_STREAM;
+  hints.ai_protocol = IPPROTO_TCP;
+
+  addrinfo* ai = NULL;
+  ASSERT_EQ(0, getaddrinfo( "localhost", "9999", &hints, &ai));
+  ASSERT_TRUE(ai != NULL);
+  // In glibc, getaddrinfo() converts ::1 to 127.0.0.1 for localhost,
+  // so one or two addrinfo may be returned.
+  addrinfo* tai = ai;
+  while (tai != NULL) {
+    ASSERT_EQ(AF_INET, tai->ai_family);
+    ASSERT_EQ(SOCK_STREAM, tai->ai_socktype);
+    ASSERT_EQ(IPPROTO_TCP, tai->ai_protocol);
+    tai = tai->ai_next;
+  }
+  freeaddrinfo(ai);
+}
+
+TEST(netdb, getaddrinfo_ip6_localhost) {
+  addrinfo* ai = NULL;
+  ASSERT_EQ(0, getaddrinfo("ip6-localhost", NULL, NULL, &ai));
+  ASSERT_TRUE(ai != NULL);
+  ASSERT_GE(ai->ai_addrlen, static_cast<socklen_t>(sizeof(sockaddr_in6)));
+  ASSERT_TRUE(ai->ai_addr != NULL);
+  sockaddr_in6 *addr = reinterpret_cast<sockaddr_in6*>(ai->ai_addr);
+  ASSERT_EQ(addr->sin6_family, AF_INET6);
+  ASSERT_EQ(0, memcmp(&addr->sin6_addr, &in6addr_loopback, sizeof(in6_addr)));
   freeaddrinfo(ai);
 }
 
@@ -55,3 +139,183 @@
   ASSERT_STREQ("::", tmp);
   ASSERT_EQ(EAI_FAMILY, getnameinfo(sa, too_little, tmp, sizeof(tmp), NULL, 0, NI_NUMERICHOST));
 }
+
+TEST(netdb, getnameinfo_localhost) {
+  sockaddr_in addr;
+  char host[NI_MAXHOST];
+  memset(&addr, 0, sizeof(sockaddr_in));
+  addr.sin_family = AF_INET;
+  addr.sin_addr.s_addr = htonl(0x7f000001);
+  ASSERT_EQ(0, getnameinfo(reinterpret_cast<sockaddr*>(&addr), sizeof(addr),
+                           host, sizeof(host), NULL, 0, 0));
+  ASSERT_STREQ(host, "localhost");
+}
+
+static void VerifyLocalhostName(const char* name) {
+  // Test possible localhost name and aliases, which depend on /etc/hosts or /system/etc/hosts.
+  ASSERT_TRUE(strcmp(name, "localhost") == 0 ||
+              strcmp(name, "ip6-localhost") == 0 ||
+              strcmp(name, "ip6-loopback") == 0) << name;
+}
+
+TEST(netdb, getnameinfo_ip6_localhost) {
+  sockaddr_in6 addr;
+  char host[NI_MAXHOST];
+  memset(&addr, 0, sizeof(sockaddr_in6));
+  addr.sin6_family = AF_INET6;
+  addr.sin6_addr = in6addr_loopback;
+  ASSERT_EQ(0, getnameinfo(reinterpret_cast<sockaddr*>(&addr), sizeof(addr),
+                           host, sizeof(host), NULL, 0, 0));
+  VerifyLocalhostName(host);
+}
+
+static void VerifyLocalhost(hostent *hent) {
+  ASSERT_TRUE(hent != NULL);
+  VerifyLocalhostName(hent->h_name);
+  for (size_t i = 0; hent->h_aliases[i] != NULL; ++i) {
+    VerifyLocalhostName(hent->h_aliases[i]);
+  }
+  ASSERT_EQ(hent->h_addrtype, AF_INET);
+  ASSERT_EQ(hent->h_addr[0], 127);
+  ASSERT_EQ(hent->h_addr[1], 0);
+  ASSERT_EQ(hent->h_addr[2], 0);
+  ASSERT_EQ(hent->h_addr[3], 1);
+}
+
+TEST(netdb, gethostbyname) {
+  hostent* hp = gethostbyname("localhost");
+  VerifyLocalhost(hp);
+}
+
+TEST(netdb, gethostbyname2) {
+  hostent* hp = gethostbyname2("localhost", AF_INET);
+  VerifyLocalhost(hp);
+}
+
+TEST(netdb, gethostbyname_r) {
+  hostent hent;
+  hostent *hp;
+  char buf[512];
+  int err;
+  int result = gethostbyname_r("localhost", &hent, buf, sizeof(buf), &hp, &err);
+  ASSERT_EQ(0, result);
+  VerifyLocalhost(hp);
+
+  // Change hp->h_addr to test reentrancy.
+  hp->h_addr[0] = 0;
+
+  hostent hent2;
+  hostent *hp2;
+  char buf2[512];
+  result = gethostbyname_r("localhost", &hent2, buf2, sizeof(buf2), &hp2, &err);
+  ASSERT_EQ(0, result);
+  VerifyLocalhost(hp2);
+
+  ASSERT_EQ(0, hp->h_addr[0]);
+}
+
+TEST(netdb, gethostbyname2_r) {
+  hostent hent;
+  hostent *hp;
+  char buf[512];
+  int err;
+  int result = gethostbyname2_r("localhost", AF_INET, &hent, buf, sizeof(buf), &hp, &err);
+  ASSERT_EQ(0, result);
+  VerifyLocalhost(hp);
+
+  // Change hp->h_addr to test reentrancy.
+  hp->h_addr[0] = 0;
+
+  hostent hent2;
+  hostent *hp2;
+  char buf2[512];
+  result = gethostbyname2_r("localhost", AF_INET, &hent2, buf2, sizeof(buf2), &hp2, &err);
+  ASSERT_EQ(0, result);
+  VerifyLocalhost(hp2);
+
+  ASSERT_EQ(0, hp->h_addr[0]);
+}
+
+TEST(netdb, gethostbyaddr) {
+  in_addr addr = { htonl(0x7f000001) };
+  hostent *hp = gethostbyaddr(&addr, sizeof(addr), AF_INET);
+  VerifyLocalhost(hp);
+}
+
+TEST(netdb, gethostbyaddr_r) {
+  in_addr addr = { htonl(0x7f000001) };
+  hostent hent;
+  hostent *hp;
+  char buf[512];
+  int err;
+  int result = gethostbyaddr_r(&addr, sizeof(addr), AF_INET, &hent, buf, sizeof(buf), &hp, &err);
+  ASSERT_EQ(0, result);
+  VerifyLocalhost(hp);
+
+  // Change hp->h_addr to test reentrancy.
+  hp->h_addr[0] = 0;
+
+  hostent hent2;
+  hostent *hp2;
+  char buf2[512];
+  result = gethostbyaddr_r(&addr, sizeof(addr), AF_INET, &hent2, buf2, sizeof(buf2), &hp2, &err);
+  ASSERT_EQ(0, result);
+  VerifyLocalhost(hp2);
+
+  ASSERT_EQ(0, hp->h_addr[0]);
+}
+
+TEST(netdb, gethostbyname_r_ERANGE) {
+  hostent hent;
+  hostent *hp;
+  char buf[4]; // Use too small buffer.
+  int err;
+  int result = gethostbyname_r("localhost", &hent, buf, sizeof(buf), &hp, &err);
+  ASSERT_EQ(ERANGE, result);
+  ASSERT_EQ(NULL, hp);
+}
+
+TEST(netdb, gethostbyname2_r_ERANGE) {
+  hostent hent;
+  hostent *hp;
+  char buf[4]; // Use too small buffer.
+  int err;
+  int result = gethostbyname2_r("localhost", AF_INET, &hent, buf, sizeof(buf), &hp, &err);
+  ASSERT_EQ(ERANGE, result);
+  ASSERT_EQ(NULL, hp);
+}
+
+TEST(netdb, gethostbyaddr_r_ERANGE) {
+  in_addr addr = { htonl(0x7f000001) };
+  hostent hent;
+  hostent *hp;
+  char buf[4]; // Use too small buffer.
+  int err;
+  int result = gethostbyaddr_r(&addr, sizeof(addr), AF_INET, &hent, buf, sizeof(buf), &hp, &err);
+  ASSERT_EQ(ERANGE, result);
+  ASSERT_EQ(NULL, hp);
+}
+
+TEST(netdb, getservbyname) {
+  // smtp is TCP-only, so we know we'll get 25/tcp back.
+  servent* s = getservbyname("smtp", NULL);
+  ASSERT_TRUE(s != NULL);
+  ASSERT_EQ(25, ntohs(s->s_port));
+  ASSERT_STREQ("tcp", s->s_proto);
+
+  // We get the same result by explicitly asking for tcp.
+  s = getservbyname("smtp", "tcp");
+  ASSERT_TRUE(s != NULL);
+  ASSERT_EQ(25, ntohs(s->s_port));
+  ASSERT_STREQ("tcp", s->s_proto);
+
+  // And we get a failure if we explicitly ask for udp.
+  s = getservbyname("smtp", "udp");
+  ASSERT_TRUE(s == NULL);
+
+  // But there are actually udp services.
+  s = getservbyname("echo", "udp");
+  ASSERT_TRUE(s != NULL);
+  ASSERT_EQ(7, ntohs(s->s_port));
+  ASSERT_STREQ("udp", s->s_proto);
+}
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 32bb54c..cb5e818 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -16,20 +16,33 @@
 
 #include <gtest/gtest.h>
 
+#include <dlfcn.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <limits.h>
 #include <malloc.h>
 #include <pthread.h>
 #include <signal.h>
+#include <stdio.h>
 #include <sys/mman.h>
 #include <sys/syscall.h>
 #include <time.h>
 #include <unistd.h>
 
+#include <atomic>
+#include <regex>
+#include <vector>
+
+#include <base/file.h>
+#include <base/stringprintf.h>
+
+#include "private/bionic_macros.h"
 #include "private/ScopeGuard.h"
+#include "BionicDeathTest.h"
 #include "ScopedSignalHandler.h"
 
+extern "C" pid_t gettid();
+
 TEST(pthread, pthread_key_create) {
   pthread_key_t key;
   ASSERT_EQ(0, pthread_key_create(&key, NULL));
@@ -38,37 +51,69 @@
   ASSERT_EQ(EINVAL, pthread_key_delete(key));
 }
 
-TEST(pthread, pthread_key_create_lots) {
-#if defined(__BIONIC__) // glibc uses keys internally that its sysconf value doesn't account for.
-  // POSIX says PTHREAD_KEYS_MAX should be at least 128.
-  ASSERT_GE(PTHREAD_KEYS_MAX, 128);
+TEST(pthread, pthread_keys_max) {
+  // POSIX says PTHREAD_KEYS_MAX should be at least _POSIX_THREAD_KEYS_MAX.
+  ASSERT_GE(PTHREAD_KEYS_MAX, _POSIX_THREAD_KEYS_MAX);
+}
 
+TEST(pthread, sysconf_SC_THREAD_KEYS_MAX_eq_PTHREAD_KEYS_MAX) {
   int sysconf_max = sysconf(_SC_THREAD_KEYS_MAX);
+  ASSERT_EQ(sysconf_max, PTHREAD_KEYS_MAX);
+}
 
-  // sysconf shouldn't return a smaller value.
-  ASSERT_GE(sysconf_max, PTHREAD_KEYS_MAX);
-
-  // We can allocate _SC_THREAD_KEYS_MAX keys.
-  sysconf_max -= 2; // (Except that gtest takes two for itself.)
+TEST(pthread, pthread_key_many_distinct) {
+  // As gtest uses pthread keys, we can't allocate exactly PTHREAD_KEYS_MAX
+  // pthread keys, but We should be able to allocate at least this many keys.
+  int nkeys = PTHREAD_KEYS_MAX / 2;
   std::vector<pthread_key_t> keys;
-  for (int i = 0; i < sysconf_max; ++i) {
+
+  auto scope_guard = make_scope_guard([&keys]{
+    for (auto key : keys) {
+      EXPECT_EQ(0, pthread_key_delete(key));
+    }
+  });
+
+  for (int i = 0; i < nkeys; ++i) {
     pthread_key_t key;
-    // If this fails, it's likely that GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT is wrong.
-    ASSERT_EQ(0, pthread_key_create(&key, NULL)) << i << " of " << sysconf_max;
+    // If this fails, it's likely that LIBC_PTHREAD_KEY_RESERVED_COUNT is wrong.
+    ASSERT_EQ(0, pthread_key_create(&key, NULL)) << i << " of " << nkeys;
+    keys.push_back(key);
+    ASSERT_EQ(0, pthread_setspecific(key, reinterpret_cast<void*>(i)));
+  }
+
+  for (int i = keys.size() - 1; i >= 0; --i) {
+    ASSERT_EQ(reinterpret_cast<void*>(i), pthread_getspecific(keys.back()));
+    pthread_key_t key = keys.back();
+    keys.pop_back();
+    ASSERT_EQ(0, pthread_key_delete(key));
+  }
+}
+
+TEST(pthread, pthread_key_not_exceed_PTHREAD_KEYS_MAX) {
+  std::vector<pthread_key_t> keys;
+  int rv = 0;
+
+  // Pthread keys are used by gtest, so PTHREAD_KEYS_MAX should
+  // be more than we are allowed to allocate now.
+  for (int i = 0; i < PTHREAD_KEYS_MAX; i++) {
+    pthread_key_t key;
+    rv = pthread_key_create(&key, NULL);
+    if (rv == EAGAIN) {
+      break;
+    }
+    EXPECT_EQ(0, rv);
     keys.push_back(key);
   }
 
-  // ...and that really is the maximum.
-  pthread_key_t key;
-  ASSERT_EQ(EAGAIN, pthread_key_create(&key, NULL));
-
-  // (Don't leak all those keys!)
-  for (size_t i = 0; i < keys.size(); ++i) {
-    ASSERT_EQ(0, pthread_key_delete(keys[i]));
+  // Don't leak keys.
+  for (auto key : keys) {
+    EXPECT_EQ(0, pthread_key_delete(key));
   }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+  keys.clear();
+
+  // We should have eventually reached the maximum number of keys and received
+  // EAGAIN.
+  ASSERT_EQ(EAGAIN, rv);
 }
 
 TEST(pthread, pthread_key_delete) {
@@ -106,6 +151,7 @@
   ASSERT_EQ(99, WEXITSTATUS(status));
 
   ASSERT_EQ(expected, pthread_getspecific(key));
+  ASSERT_EQ(0, pthread_key_delete(key));
 }
 
 static void* DirtyKeyFn(void* key) {
@@ -133,23 +179,54 @@
   ASSERT_EQ(nullptr, result); // Not ~0!
 
   ASSERT_EQ(0, munmap(stack, stack_size));
+  ASSERT_EQ(0, pthread_key_delete(key));
+}
+
+TEST(pthread, static_pthread_key_used_before_creation) {
+#if defined(__BIONIC__)
+  // See http://b/19625804. The bug is about a static/global pthread key being used before creation.
+  // So here tests if the static/global default value 0 can be detected as invalid key.
+  static pthread_key_t key;
+  ASSERT_EQ(nullptr, pthread_getspecific(key));
+  ASSERT_EQ(EINVAL, pthread_setspecific(key, nullptr));
+  ASSERT_EQ(EINVAL, pthread_key_delete(key));
+#else
+  GTEST_LOG_(INFO) << "This test tests bionic pthread key implementation detail.\n";
+#endif
 }
 
 static void* IdFn(void* arg) {
   return arg;
 }
 
-static void* SleepFn(void* arg) {
-  sleep(reinterpret_cast<uintptr_t>(arg));
-  return NULL;
-}
-
-static void* SpinFn(void* arg) {
-  volatile bool* b = reinterpret_cast<volatile bool*>(arg);
-  while (!*b) {
+class SpinFunctionHelper {
+ public:
+  SpinFunctionHelper() {
+    SpinFunctionHelper::spin_flag_ = true;
   }
-  return NULL;
-}
+  ~SpinFunctionHelper() {
+    UnSpin();
+  }
+  auto GetFunction() -> void* (*)(void*) {
+    return SpinFunctionHelper::SpinFn;
+  }
+
+  void UnSpin() {
+    SpinFunctionHelper::spin_flag_ = false;
+  }
+
+ private:
+  static void* SpinFn(void*) {
+    while (spin_flag_) {}
+    return NULL;
+  }
+  static volatile bool spin_flag_;
+};
+
+// It doesn't matter if spin_flag_ is used in several tests,
+// because it is always set to false after each test. Each thread
+// loops on spin_flag_ can find it becomes false at some time.
+volatile bool SpinFunctionHelper::spin_flag_ = false;
 
 static void* JoinFn(void* arg) {
   return reinterpret_cast<void*>(pthread_join(reinterpret_cast<pthread_t>(arg), NULL));
@@ -166,8 +243,7 @@
 
 static void MakeDeadThread(pthread_t& t) {
   ASSERT_EQ(0, pthread_create(&t, NULL, IdFn, NULL));
-  void* result;
-  ASSERT_EQ(0, pthread_join(t, &result));
+  ASSERT_EQ(0, pthread_join(t, NULL));
 }
 
 TEST(pthread, pthread_create) {
@@ -191,23 +267,24 @@
 }
 
 TEST(pthread, pthread_no_join_after_detach) {
+  SpinFunctionHelper spinhelper;
+
   pthread_t t1;
-  ASSERT_EQ(0, pthread_create(&t1, NULL, SleepFn, reinterpret_cast<void*>(5)));
+  ASSERT_EQ(0, pthread_create(&t1, NULL, spinhelper.GetFunction(), NULL));
 
   // After a pthread_detach...
   ASSERT_EQ(0, pthread_detach(t1));
   AssertDetached(t1, true);
 
   // ...pthread_join should fail.
-  void* result;
-  ASSERT_EQ(EINVAL, pthread_join(t1, &result));
+  ASSERT_EQ(EINVAL, pthread_join(t1, NULL));
 }
 
 TEST(pthread, pthread_no_op_detach_after_join) {
-  bool done = false;
+  SpinFunctionHelper spinhelper;
 
   pthread_t t1;
-  ASSERT_EQ(0, pthread_create(&t1, NULL, SpinFn, &done));
+  ASSERT_EQ(0, pthread_create(&t1, NULL, spinhelper.GetFunction(), NULL));
 
   // If thread 2 is already waiting to join thread 1...
   pthread_t t2;
@@ -215,11 +292,14 @@
 
   sleep(1); // (Give t2 a chance to call pthread_join.)
 
-  // ...a call to pthread_detach on thread 1 will "succeed" (silently fail)...
+#if defined(__BIONIC__)
+  ASSERT_EQ(EINVAL, pthread_detach(t1));
+#else
   ASSERT_EQ(0, pthread_detach(t1));
+#endif
   AssertDetached(t1, false);
 
-  done = true;
+  spinhelper.UnSpin();
 
   // ...but t2's join on t1 still goes ahead (which we can tell because our join on t2 finishes).
   void* join_result;
@@ -228,8 +308,7 @@
 }
 
 TEST(pthread, pthread_join_self) {
-  void* result;
-  ASSERT_EQ(EDEADLK, pthread_join(pthread_self(), &result));
+  ASSERT_EQ(EDEADLK, pthread_join(pthread_self(), NULL));
 }
 
 struct TestBug37410 {
@@ -269,9 +348,11 @@
 
 // Even though this isn't really a death test, we have to say "DeathTest" here so gtest knows to
 // run this test (which exits normally) in its own process.
-TEST(pthread_DeathTest, pthread_bug_37410) {
+
+class pthread_DeathTest : public BionicDeathTest {};
+
+TEST_F(pthread_DeathTest, pthread_bug_37410) {
   // http://code.google.com/p/android/issues/detail?id=37410
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   ASSERT_EXIT(TestBug37410::main(), ::testing::ExitedWithCode(0), "");
 }
 
@@ -323,52 +404,29 @@
 }
 
 TEST(pthread, pthread_setname_np__too_long) {
-#if defined(__BIONIC__) // Not all build servers have a new enough glibc? TODO: remove when they're on gprecise.
-  ASSERT_EQ(ERANGE, pthread_setname_np(pthread_self(), "this name is far too long for linux"));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+  // The limit is 15 characters --- the kernel's buffer is 16, but includes a NUL.
+  ASSERT_EQ(0, pthread_setname_np(pthread_self(), "123456789012345"));
+  ASSERT_EQ(ERANGE, pthread_setname_np(pthread_self(), "1234567890123456"));
 }
 
 TEST(pthread, pthread_setname_np__self) {
-#if defined(__BIONIC__) // Not all build servers have a new enough glibc? TODO: remove when they're on gprecise.
   ASSERT_EQ(0, pthread_setname_np(pthread_self(), "short 1"));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
 }
 
 TEST(pthread, pthread_setname_np__other) {
-#if defined(__BIONIC__) // Not all build servers have a new enough glibc? TODO: remove when they're on gprecise.
-  // Emulator kernels don't currently support setting the name of other threads.
-  char* filename = NULL;
-  asprintf(&filename, "/proc/self/task/%d/comm", gettid());
-  struct stat sb;
-  bool has_comm = (stat(filename, &sb) != -1);
-  free(filename);
+  SpinFunctionHelper spinhelper;
 
-  if (has_comm) {
-    pthread_t t1;
-    ASSERT_EQ(0, pthread_create(&t1, NULL, SleepFn, reinterpret_cast<void*>(5)));
-    ASSERT_EQ(0, pthread_setname_np(t1, "short 2"));
-  } else {
-    fprintf(stderr, "skipping test: this kernel doesn't have /proc/self/task/tid/comm files!\n");
-  }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+  pthread_t t1;
+  ASSERT_EQ(0, pthread_create(&t1, NULL, spinhelper.GetFunction(), NULL));
+  ASSERT_EQ(0, pthread_setname_np(t1, "short 2"));
 }
 
 TEST(pthread, pthread_setname_np__no_such_thread) {
-#if defined(__BIONIC__) // Not all build servers have a new enough glibc? TODO: remove when they're on gprecise.
   pthread_t dead_thread;
   MakeDeadThread(dead_thread);
 
   // Call pthread_setname_np after thread has already exited.
-  ASSERT_EQ(ESRCH, pthread_setname_np(dead_thread, "short 3"));
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+  ASSERT_EQ(ENOENT, pthread_setname_np(dead_thread, "short 3"));
 }
 
 TEST(pthread, pthread_kill__0) {
@@ -401,7 +459,7 @@
   ASSERT_EQ(ESRCH, pthread_detach(dead_thread));
 }
 
-TEST(pthread, pthread_detach__leak) {
+TEST(pthread, pthread_detach_no_leak) {
   size_t initial_bytes = 0;
   // Run this loop more than once since the first loop causes some memory
   // to be allocated permenantly. Run an extra loop to help catch any subtle
@@ -434,14 +492,14 @@
   size_t final_bytes = mallinfo().uordblks;
   int leaked_bytes = (final_bytes - initial_bytes);
 
-  // User code (like this test) doesn't know how large pthread_internal_t is.
-  // We can be pretty sure it's more than 128 bytes.
-  ASSERT_LT(leaked_bytes, 32 /*threads*/ * 128 /*bytes*/);
+  ASSERT_EQ(0, leaked_bytes);
 }
 
 TEST(pthread, pthread_getcpuclockid__clock_gettime) {
+  SpinFunctionHelper spinhelper;
+
   pthread_t t;
-  ASSERT_EQ(0, pthread_create(&t, NULL, SleepFn, reinterpret_cast<void*>(5)));
+  ASSERT_EQ(0, pthread_create(&t, NULL, spinhelper.GetFunction(), NULL));
 
   clockid_t c;
   ASSERT_EQ(0, pthread_getcpuclockid(t, &c));
@@ -479,8 +537,7 @@
   pthread_t dead_thread;
   MakeDeadThread(dead_thread);
 
-  void* result;
-  ASSERT_EQ(ESRCH, pthread_join(dead_thread, &result));
+  ASSERT_EQ(ESRCH, pthread_join(dead_thread, NULL));
 }
 
 TEST(pthread, pthread_kill__no_such_thread) {
@@ -491,10 +548,10 @@
 }
 
 TEST(pthread, pthread_join__multijoin) {
-  bool done = false;
+  SpinFunctionHelper spinhelper;
 
   pthread_t t1;
-  ASSERT_EQ(0, pthread_create(&t1, NULL, SpinFn, &done));
+  ASSERT_EQ(0, pthread_create(&t1, NULL, spinhelper.GetFunction(), NULL));
 
   pthread_t t2;
   ASSERT_EQ(0, pthread_create(&t2, NULL, JoinFn, reinterpret_cast<void*>(t1)));
@@ -504,7 +561,7 @@
   // Multiple joins to the same thread should fail.
   ASSERT_EQ(EINVAL, pthread_join(t1, NULL));
 
-  done = true;
+  spinhelper.UnSpin();
 
   // ...but t2's join on t1 still goes ahead (which we can tell because our join on t2 finishes).
   void* join_result;
@@ -541,8 +598,7 @@
   size_t result;
   pthread_t t;
   pthread_create(&t, &attributes, GetActualGuardSizeFn, &result);
-  void* join_result;
-  pthread_join(t, &join_result);
+  pthread_join(t, NULL);
   return result;
 }
 
@@ -557,8 +613,7 @@
   size_t result;
   pthread_t t;
   pthread_create(&t, &attributes, GetActualStackSizeFn, &result);
-  void* join_result;
-  pthread_join(t, &join_result);
+  pthread_join(t, NULL);
   return result;
 }
 
@@ -603,25 +658,55 @@
   ASSERT_EQ(default_stack_size, stack_size);
   ASSERT_GE(GetActualStackSize(attributes), default_stack_size);
 
-  // Large enough and a multiple of the page size.
+  // Large enough and a multiple of the page size; may be rounded up by pthread_create.
   ASSERT_EQ(0, pthread_attr_setstacksize(&attributes, 32*1024));
   ASSERT_EQ(0, pthread_attr_getstacksize(&attributes, &stack_size));
   ASSERT_EQ(32*1024U, stack_size);
-  ASSERT_EQ(GetActualStackSize(attributes), 32*1024U);
+  ASSERT_GE(GetActualStackSize(attributes), 32*1024U);
 
-  // Large enough but not a multiple of the page size; will be rounded up by pthread_create.
+  // Large enough but not aligned; will be rounded up by pthread_create.
   ASSERT_EQ(0, pthread_attr_setstacksize(&attributes, 32*1024 + 1));
   ASSERT_EQ(0, pthread_attr_getstacksize(&attributes, &stack_size));
   ASSERT_EQ(32*1024U + 1, stack_size);
 #if defined(__BIONIC__)
-  // Bionic rounds up, which is what POSIX allows.
-  ASSERT_EQ(GetActualStackSize(attributes), (32 + 4)*1024U);
+  ASSERT_GT(GetActualStackSize(attributes), 32*1024U + 1);
 #else // __BIONIC__
   // glibc rounds down, in violation of POSIX. They document this in their BUGS section.
   ASSERT_EQ(GetActualStackSize(attributes), 32*1024U);
 #endif // __BIONIC__
 }
 
+TEST(pthread, pthread_rwlockattr_smoke) {
+  pthread_rwlockattr_t attr;
+  ASSERT_EQ(0, pthread_rwlockattr_init(&attr));
+
+  int pshared_value_array[] = {PTHREAD_PROCESS_PRIVATE, PTHREAD_PROCESS_SHARED};
+  for (size_t i = 0; i < sizeof(pshared_value_array) / sizeof(pshared_value_array[0]); ++i) {
+    ASSERT_EQ(0, pthread_rwlockattr_setpshared(&attr, pshared_value_array[i]));
+    int pshared;
+    ASSERT_EQ(0, pthread_rwlockattr_getpshared(&attr, &pshared));
+    ASSERT_EQ(pshared_value_array[i], pshared);
+  }
+
+  int kind_array[] = {PTHREAD_RWLOCK_PREFER_READER_NP,
+                      PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP};
+  for (size_t i = 0; i < sizeof(kind_array) / sizeof(kind_array[0]); ++i) {
+    ASSERT_EQ(0, pthread_rwlockattr_setkind_np(&attr, kind_array[i]));
+    int kind;
+    ASSERT_EQ(0, pthread_rwlockattr_getkind_np(&attr, &kind));
+    ASSERT_EQ(kind_array[i], kind);
+  }
+
+  ASSERT_EQ(0, pthread_rwlockattr_destroy(&attr));
+}
+
+TEST(pthread, pthread_rwlock_init_same_as_PTHREAD_RWLOCK_INITIALIZER) {
+  pthread_rwlock_t lock1 = PTHREAD_RWLOCK_INITIALIZER;
+  pthread_rwlock_t lock2;
+  ASSERT_EQ(0, pthread_rwlock_init(&lock2, NULL));
+  ASSERT_EQ(0, memcmp(&lock1, &lock2, sizeof(lock1)));
+}
+
 TEST(pthread, pthread_rwlock_smoke) {
   pthread_rwlock_t l;
   ASSERT_EQ(0, pthread_rwlock_init(&l, NULL));
@@ -657,7 +742,6 @@
   ASSERT_EQ(0, pthread_rwlock_wrlock(&l));
   ASSERT_EQ(0, pthread_rwlock_unlock(&l));
 
-#ifdef __BIONIC__
   // EDEADLK in "read after write"
   ASSERT_EQ(0, pthread_rwlock_wrlock(&l));
   ASSERT_EQ(EDEADLK, pthread_rwlock_rdlock(&l));
@@ -667,11 +751,212 @@
   ASSERT_EQ(0, pthread_rwlock_wrlock(&l));
   ASSERT_EQ(EDEADLK, pthread_rwlock_wrlock(&l));
   ASSERT_EQ(0, pthread_rwlock_unlock(&l));
-#endif
 
   ASSERT_EQ(0, pthread_rwlock_destroy(&l));
 }
 
+static void WaitUntilThreadSleep(std::atomic<pid_t>& pid) {
+  while (pid == 0) {
+    usleep(1000);
+  }
+  std::string filename = android::base::StringPrintf("/proc/%d/stat", pid.load());
+  std::regex regex {R"(\s+S\s+)"};
+
+  while (true) {
+    std::string content;
+    ASSERT_TRUE(android::base::ReadFileToString(filename, &content));
+    if (std::regex_search(content, regex)) {
+      break;
+    }
+    usleep(1000);
+  }
+}
+
+struct RwlockWakeupHelperArg {
+  pthread_rwlock_t lock;
+  enum Progress {
+    LOCK_INITIALIZED,
+    LOCK_WAITING,
+    LOCK_RELEASED,
+    LOCK_ACCESSED
+  };
+  std::atomic<Progress> progress;
+  std::atomic<pid_t> tid;
+};
+
+static void pthread_rwlock_reader_wakeup_writer_helper(RwlockWakeupHelperArg* arg) {
+  arg->tid = gettid();
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_INITIALIZED, arg->progress);
+  arg->progress = RwlockWakeupHelperArg::LOCK_WAITING;
+
+  ASSERT_EQ(EBUSY, pthread_rwlock_trywrlock(&arg->lock));
+  ASSERT_EQ(0, pthread_rwlock_wrlock(&arg->lock));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_RELEASED, arg->progress);
+  ASSERT_EQ(0, pthread_rwlock_unlock(&arg->lock));
+
+  arg->progress = RwlockWakeupHelperArg::LOCK_ACCESSED;
+}
+
+TEST(pthread, pthread_rwlock_reader_wakeup_writer) {
+  RwlockWakeupHelperArg wakeup_arg;
+  ASSERT_EQ(0, pthread_rwlock_init(&wakeup_arg.lock, NULL));
+  ASSERT_EQ(0, pthread_rwlock_rdlock(&wakeup_arg.lock));
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_INITIALIZED;
+  wakeup_arg.tid = 0;
+
+  pthread_t thread;
+  ASSERT_EQ(0, pthread_create(&thread, NULL,
+    reinterpret_cast<void* (*)(void*)>(pthread_rwlock_reader_wakeup_writer_helper), &wakeup_arg));
+  WaitUntilThreadSleep(wakeup_arg.tid);
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_WAITING, wakeup_arg.progress);
+
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_RELEASED;
+  ASSERT_EQ(0, pthread_rwlock_unlock(&wakeup_arg.lock));
+
+  ASSERT_EQ(0, pthread_join(thread, NULL));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_ACCESSED, wakeup_arg.progress);
+  ASSERT_EQ(0, pthread_rwlock_destroy(&wakeup_arg.lock));
+}
+
+static void pthread_rwlock_writer_wakeup_reader_helper(RwlockWakeupHelperArg* arg) {
+  arg->tid = gettid();
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_INITIALIZED, arg->progress);
+  arg->progress = RwlockWakeupHelperArg::LOCK_WAITING;
+
+  ASSERT_EQ(EBUSY, pthread_rwlock_tryrdlock(&arg->lock));
+  ASSERT_EQ(0, pthread_rwlock_rdlock(&arg->lock));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_RELEASED, arg->progress);
+  ASSERT_EQ(0, pthread_rwlock_unlock(&arg->lock));
+
+  arg->progress = RwlockWakeupHelperArg::LOCK_ACCESSED;
+}
+
+TEST(pthread, pthread_rwlock_writer_wakeup_reader) {
+  RwlockWakeupHelperArg wakeup_arg;
+  ASSERT_EQ(0, pthread_rwlock_init(&wakeup_arg.lock, NULL));
+  ASSERT_EQ(0, pthread_rwlock_wrlock(&wakeup_arg.lock));
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_INITIALIZED;
+  wakeup_arg.tid = 0;
+
+  pthread_t thread;
+  ASSERT_EQ(0, pthread_create(&thread, NULL,
+    reinterpret_cast<void* (*)(void*)>(pthread_rwlock_writer_wakeup_reader_helper), &wakeup_arg));
+  WaitUntilThreadSleep(wakeup_arg.tid);
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_WAITING, wakeup_arg.progress);
+
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_RELEASED;
+  ASSERT_EQ(0, pthread_rwlock_unlock(&wakeup_arg.lock));
+
+  ASSERT_EQ(0, pthread_join(thread, NULL));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_ACCESSED, wakeup_arg.progress);
+  ASSERT_EQ(0, pthread_rwlock_destroy(&wakeup_arg.lock));
+}
+
+class RwlockKindTestHelper {
+ private:
+  struct ThreadArg {
+    RwlockKindTestHelper* helper;
+    std::atomic<pid_t>& tid;
+
+    ThreadArg(RwlockKindTestHelper* helper, std::atomic<pid_t>& tid)
+      : helper(helper), tid(tid) { }
+  };
+
+ public:
+  pthread_rwlock_t lock;
+
+ public:
+  RwlockKindTestHelper(int kind_type) {
+    InitRwlock(kind_type);
+  }
+
+  ~RwlockKindTestHelper() {
+    DestroyRwlock();
+  }
+
+  void CreateWriterThread(pthread_t& thread, std::atomic<pid_t>& tid) {
+    tid = 0;
+    ThreadArg* arg = new ThreadArg(this, tid);
+    ASSERT_EQ(0, pthread_create(&thread, NULL,
+                                reinterpret_cast<void* (*)(void*)>(WriterThreadFn), arg));
+  }
+
+  void CreateReaderThread(pthread_t& thread, std::atomic<pid_t>& tid) {
+    tid = 0;
+    ThreadArg* arg = new ThreadArg(this, tid);
+    ASSERT_EQ(0, pthread_create(&thread, NULL,
+                                reinterpret_cast<void* (*)(void*)>(ReaderThreadFn), arg));
+  }
+
+ private:
+  void InitRwlock(int kind_type) {
+    pthread_rwlockattr_t attr;
+    ASSERT_EQ(0, pthread_rwlockattr_init(&attr));
+    ASSERT_EQ(0, pthread_rwlockattr_setkind_np(&attr, kind_type));
+    ASSERT_EQ(0, pthread_rwlock_init(&lock, &attr));
+    ASSERT_EQ(0, pthread_rwlockattr_destroy(&attr));
+  }
+
+  void DestroyRwlock() {
+    ASSERT_EQ(0, pthread_rwlock_destroy(&lock));
+  }
+
+  static void WriterThreadFn(ThreadArg* arg) {
+    arg->tid = gettid();
+
+    RwlockKindTestHelper* helper = arg->helper;
+    ASSERT_EQ(0, pthread_rwlock_wrlock(&helper->lock));
+    ASSERT_EQ(0, pthread_rwlock_unlock(&helper->lock));
+    delete arg;
+  }
+
+  static void ReaderThreadFn(ThreadArg* arg) {
+    arg->tid = gettid();
+
+    RwlockKindTestHelper* helper = arg->helper;
+    ASSERT_EQ(0, pthread_rwlock_rdlock(&helper->lock));
+    ASSERT_EQ(0, pthread_rwlock_unlock(&helper->lock));
+    delete arg;
+  }
+};
+
+TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_READER_NP) {
+  RwlockKindTestHelper helper(PTHREAD_RWLOCK_PREFER_READER_NP);
+  ASSERT_EQ(0, pthread_rwlock_rdlock(&helper.lock));
+
+  pthread_t writer_thread;
+  std::atomic<pid_t> writer_tid;
+  helper.CreateWriterThread(writer_thread, writer_tid);
+  WaitUntilThreadSleep(writer_tid);
+
+  pthread_t reader_thread;
+  std::atomic<pid_t> reader_tid;
+  helper.CreateReaderThread(reader_thread, reader_tid);
+  ASSERT_EQ(0, pthread_join(reader_thread, NULL));
+
+  ASSERT_EQ(0, pthread_rwlock_unlock(&helper.lock));
+  ASSERT_EQ(0, pthread_join(writer_thread, NULL));
+}
+
+TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) {
+  RwlockKindTestHelper helper(PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
+  ASSERT_EQ(0, pthread_rwlock_rdlock(&helper.lock));
+
+  pthread_t writer_thread;
+  std::atomic<pid_t> writer_tid;
+  helper.CreateWriterThread(writer_thread, writer_tid);
+  WaitUntilThreadSleep(writer_tid);
+
+  pthread_t reader_thread;
+  std::atomic<pid_t> reader_tid;
+  helper.CreateReaderThread(reader_thread, reader_tid);
+  WaitUntilThreadSleep(reader_tid);
+
+  ASSERT_EQ(0, pthread_rwlock_unlock(&helper.lock));
+  ASSERT_EQ(0, pthread_join(writer_thread, NULL));
+  ASSERT_EQ(0, pthread_join(reader_thread, NULL));
+}
+
 static int g_once_fn_call_count = 0;
 static void OnceFn() {
   ++g_once_fn_call_count;
@@ -705,16 +990,16 @@
 }
 
 static int g_atfork_prepare_calls = 0;
-static void AtForkPrepare1() { g_atfork_prepare_calls = (g_atfork_prepare_calls << 4) | 1; }
-static void AtForkPrepare2() { g_atfork_prepare_calls = (g_atfork_prepare_calls << 4) | 2; }
+static void AtForkPrepare1() { g_atfork_prepare_calls = (g_atfork_prepare_calls * 10) + 1; }
+static void AtForkPrepare2() { g_atfork_prepare_calls = (g_atfork_prepare_calls * 10) + 2; }
 static int g_atfork_parent_calls = 0;
-static void AtForkParent1() { g_atfork_parent_calls = (g_atfork_parent_calls << 4) | 1; }
-static void AtForkParent2() { g_atfork_parent_calls = (g_atfork_parent_calls << 4) | 2; }
+static void AtForkParent1() { g_atfork_parent_calls = (g_atfork_parent_calls * 10) + 1; }
+static void AtForkParent2() { g_atfork_parent_calls = (g_atfork_parent_calls * 10) + 2; }
 static int g_atfork_child_calls = 0;
-static void AtForkChild1() { g_atfork_child_calls = (g_atfork_child_calls << 4) | 1; }
-static void AtForkChild2() { g_atfork_child_calls = (g_atfork_child_calls << 4) | 2; }
+static void AtForkChild1() { g_atfork_child_calls = (g_atfork_child_calls * 10) + 1; }
+static void AtForkChild2() { g_atfork_child_calls = (g_atfork_child_calls * 10) + 2; }
 
-TEST(pthread, pthread_atfork) {
+TEST(pthread, pthread_atfork_smoke) {
   ASSERT_EQ(0, pthread_atfork(AtForkPrepare1, AtForkParent1, AtForkChild1));
   ASSERT_EQ(0, pthread_atfork(AtForkPrepare2, AtForkParent2, AtForkChild2));
 
@@ -723,13 +1008,71 @@
 
   // Child and parent calls are made in the order they were registered.
   if (pid == 0) {
-    ASSERT_EQ(0x12, g_atfork_child_calls);
+    ASSERT_EQ(12, g_atfork_child_calls);
     _exit(0);
   }
-  ASSERT_EQ(0x12, g_atfork_parent_calls);
+  ASSERT_EQ(12, g_atfork_parent_calls);
 
   // Prepare calls are made in the reverse order.
-  ASSERT_EQ(0x21, g_atfork_prepare_calls);
+  ASSERT_EQ(21, g_atfork_prepare_calls);
+  int status;
+  ASSERT_EQ(pid, waitpid(pid, &status, 0));
+}
+
+static void AtForkPrepare3() { g_atfork_prepare_calls = (g_atfork_prepare_calls * 10) + 3; }
+static void AtForkPrepare4() { g_atfork_prepare_calls = (g_atfork_prepare_calls * 10) + 4; }
+
+static void AtForkParent3() { g_atfork_parent_calls = (g_atfork_parent_calls * 10) + 3; }
+static void AtForkParent4() { g_atfork_parent_calls = (g_atfork_parent_calls * 10) + 4; }
+
+static void AtForkChild3() { g_atfork_child_calls = (g_atfork_child_calls * 10) + 3; }
+static void AtForkChild4() { g_atfork_child_calls = (g_atfork_child_calls * 10) + 4; }
+
+TEST(pthread, pthread_atfork_with_dlclose) {
+  ASSERT_EQ(0, pthread_atfork(AtForkPrepare1, AtForkParent1, AtForkChild1));
+
+  void* handle = dlopen("libtest_pthread_atfork.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  typedef int (*fn_t)(void (*)(void), void (*)(void), void (*)(void));
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "proxy_pthread_atfork"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  // the library registers 2 additional atfork handlers in a constructor
+  ASSERT_EQ(0, fn(AtForkPrepare2, AtForkParent2, AtForkChild2));
+  ASSERT_EQ(0, fn(AtForkPrepare3, AtForkParent3, AtForkChild3));
+
+  ASSERT_EQ(0, pthread_atfork(AtForkPrepare4, AtForkParent4, AtForkChild4));
+
+  int pid = fork();
+
+  ASSERT_NE(-1, pid) << strerror(errno);
+
+  if (pid == 0) {
+    ASSERT_EQ(1234, g_atfork_child_calls);
+    _exit(0);
+  }
+
+  ASSERT_EQ(1234, g_atfork_parent_calls);
+  ASSERT_EQ(4321, g_atfork_prepare_calls);
+
+  EXPECT_EQ(0, dlclose(handle));
+  g_atfork_prepare_calls = g_atfork_parent_calls = g_atfork_child_calls = 0;
+
+  int status;
+  ASSERT_EQ(pid, waitpid(pid, &status, 0));
+
+  pid = fork();
+
+  ASSERT_NE(-1, pid) << strerror(errno);
+
+  if (pid == 0) {
+    ASSERT_EQ(14, g_atfork_child_calls);
+    _exit(0);
+  }
+
+  ASSERT_EQ(14, g_atfork_parent_calls);
+  ASSERT_EQ(41, g_atfork_prepare_calls);
+
+  ASSERT_EQ(pid, waitpid(pid, &status, 0));
 }
 
 TEST(pthread, pthread_attr_getscope) {
@@ -771,7 +1114,7 @@
 }
 
 TEST(pthread, pthread_cond_broadcast__preserves_condattr_flags) {
-#if defined(__BIONIC__) // This tests a bionic implementation detail.
+#if defined(__BIONIC__)
   pthread_condattr_t attr;
   pthread_condattr_init(&attr);
 
@@ -784,16 +1127,78 @@
   ASSERT_EQ(0, pthread_cond_signal(&cond_var));
   ASSERT_EQ(0, pthread_cond_broadcast(&cond_var));
 
-  attr = static_cast<pthread_condattr_t>(cond_var.value);
+  attr = static_cast<pthread_condattr_t>(*reinterpret_cast<uint32_t*>(cond_var.__private));
   clockid_t clock;
   ASSERT_EQ(0, pthread_condattr_getclock(&attr, &clock));
   ASSERT_EQ(CLOCK_MONOTONIC, clock);
   int pshared;
   ASSERT_EQ(0, pthread_condattr_getpshared(&attr, &pshared));
   ASSERT_EQ(PTHREAD_PROCESS_SHARED, pshared);
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+#else  // !defined(__BIONIC__)
+  GTEST_LOG_(INFO) << "This tests a bionic implementation detail.\n";
+#endif  // !defined(__BIONIC__)
+}
+
+class pthread_CondWakeupTest : public ::testing::Test {
+ protected:
+  pthread_mutex_t mutex;
+  pthread_cond_t cond;
+
+  enum Progress {
+    INITIALIZED,
+    WAITING,
+    SIGNALED,
+    FINISHED,
+  };
+  std::atomic<Progress> progress;
+  pthread_t thread;
+
+ protected:
+  virtual void SetUp() {
+    ASSERT_EQ(0, pthread_mutex_init(&mutex, NULL));
+    ASSERT_EQ(0, pthread_cond_init(&cond, NULL));
+    progress = INITIALIZED;
+    ASSERT_EQ(0,
+      pthread_create(&thread, NULL, reinterpret_cast<void* (*)(void*)>(WaitThreadFn), this));
+  }
+
+  virtual void TearDown() {
+    ASSERT_EQ(0, pthread_join(thread, NULL));
+    ASSERT_EQ(FINISHED, progress);
+    ASSERT_EQ(0, pthread_cond_destroy(&cond));
+    ASSERT_EQ(0, pthread_mutex_destroy(&mutex));
+  }
+
+  void SleepUntilProgress(Progress expected_progress) {
+    while (progress != expected_progress) {
+      usleep(5000);
+    }
+    usleep(5000);
+  }
+
+ private:
+  static void WaitThreadFn(pthread_CondWakeupTest* test) {
+    ASSERT_EQ(0, pthread_mutex_lock(&test->mutex));
+    test->progress = WAITING;
+    while (test->progress == WAITING) {
+      ASSERT_EQ(0, pthread_cond_wait(&test->cond, &test->mutex));
+    }
+    ASSERT_EQ(SIGNALED, test->progress);
+    test->progress = FINISHED;
+    ASSERT_EQ(0, pthread_mutex_unlock(&test->mutex));
+  }
+};
+
+TEST_F(pthread_CondWakeupTest, signal) {
+  SleepUntilProgress(WAITING);
+  progress = SIGNALED;
+  pthread_cond_signal(&cond);
+}
+
+TEST_F(pthread_CondWakeupTest, broadcast) {
+  SleepUntilProgress(WAITING);
+  progress = SIGNALED;
+  pthread_cond_broadcast(&cond);
 }
 
 TEST(pthread, pthread_mutex_timedlock) {
@@ -907,3 +1312,321 @@
   EXPECT_EQ(stack_size, stack_size2);
   ASSERT_EQ(6666U, stack_size);
 }
+
+static void pthread_attr_getstack_18908062_helper(void*) {
+  char local_variable;
+  pthread_attr_t attributes;
+  pthread_getattr_np(pthread_self(), &attributes);
+  void* stack_base;
+  size_t stack_size;
+  pthread_attr_getstack(&attributes, &stack_base, &stack_size);
+
+  // Test whether &local_variable is in [stack_base, stack_base + stack_size).
+  ASSERT_LE(reinterpret_cast<char*>(stack_base), &local_variable);
+  ASSERT_LT(&local_variable, reinterpret_cast<char*>(stack_base) + stack_size);
+}
+
+// Check whether something on stack is in the range of
+// [stack_base, stack_base + stack_size). see b/18908062.
+TEST(pthread, pthread_attr_getstack_18908062) {
+  pthread_t t;
+  ASSERT_EQ(0, pthread_create(&t, NULL,
+            reinterpret_cast<void* (*)(void*)>(pthread_attr_getstack_18908062_helper),
+            NULL));
+  pthread_join(t, NULL);
+}
+
+#if defined(__BIONIC__)
+static void* pthread_gettid_np_helper(void* arg) {
+  *reinterpret_cast<pid_t*>(arg) = gettid();
+  return NULL;
+}
+#endif
+
+TEST(pthread, pthread_gettid_np) {
+#if defined(__BIONIC__)
+  ASSERT_EQ(gettid(), pthread_gettid_np(pthread_self()));
+
+  pid_t t_gettid_result;
+  pthread_t t;
+  pthread_create(&t, NULL, pthread_gettid_np_helper, &t_gettid_result);
+
+  pid_t t_pthread_gettid_np_result = pthread_gettid_np(t);
+
+  pthread_join(t, NULL);
+
+  ASSERT_EQ(t_gettid_result, t_pthread_gettid_np_result);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing.\n";
+#endif
+}
+
+static size_t cleanup_counter = 0;
+
+static void AbortCleanupRoutine(void*) {
+  abort();
+}
+
+static void CountCleanupRoutine(void*) {
+  ++cleanup_counter;
+}
+
+static void PthreadCleanupTester() {
+  pthread_cleanup_push(CountCleanupRoutine, NULL);
+  pthread_cleanup_push(CountCleanupRoutine, NULL);
+  pthread_cleanup_push(AbortCleanupRoutine, NULL);
+
+  pthread_cleanup_pop(0); // Pop the abort without executing it.
+  pthread_cleanup_pop(1); // Pop one count while executing it.
+  ASSERT_EQ(1U, cleanup_counter);
+  // Exit while the other count is still on the cleanup stack.
+  pthread_exit(NULL);
+
+  // Calls to pthread_cleanup_pop/pthread_cleanup_push must always be balanced.
+  pthread_cleanup_pop(0);
+}
+
+static void* PthreadCleanupStartRoutine(void*) {
+  PthreadCleanupTester();
+  return NULL;
+}
+
+TEST(pthread, pthread_cleanup_push__pthread_cleanup_pop) {
+  pthread_t t;
+  ASSERT_EQ(0, pthread_create(&t, NULL, PthreadCleanupStartRoutine, NULL));
+  pthread_join(t, NULL);
+  ASSERT_EQ(2U, cleanup_counter);
+}
+
+TEST(pthread, PTHREAD_MUTEX_DEFAULT_is_PTHREAD_MUTEX_NORMAL) {
+  ASSERT_EQ(PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_DEFAULT);
+}
+
+TEST(pthread, pthread_mutexattr_gettype) {
+  pthread_mutexattr_t attr;
+  ASSERT_EQ(0, pthread_mutexattr_init(&attr));
+
+  int attr_type;
+
+  ASSERT_EQ(0, pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL));
+  ASSERT_EQ(0, pthread_mutexattr_gettype(&attr, &attr_type));
+  ASSERT_EQ(PTHREAD_MUTEX_NORMAL, attr_type);
+
+  ASSERT_EQ(0, pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK));
+  ASSERT_EQ(0, pthread_mutexattr_gettype(&attr, &attr_type));
+  ASSERT_EQ(PTHREAD_MUTEX_ERRORCHECK, attr_type);
+
+  ASSERT_EQ(0, pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE));
+  ASSERT_EQ(0, pthread_mutexattr_gettype(&attr, &attr_type));
+  ASSERT_EQ(PTHREAD_MUTEX_RECURSIVE, attr_type);
+
+  ASSERT_EQ(0, pthread_mutexattr_destroy(&attr));
+}
+
+struct PthreadMutex {
+  pthread_mutex_t lock;
+
+  PthreadMutex(int mutex_type) {
+    init(mutex_type);
+  }
+
+  ~PthreadMutex() {
+    destroy();
+  }
+
+ private:
+  void init(int mutex_type) {
+    pthread_mutexattr_t attr;
+    ASSERT_EQ(0, pthread_mutexattr_init(&attr));
+    ASSERT_EQ(0, pthread_mutexattr_settype(&attr, mutex_type));
+    ASSERT_EQ(0, pthread_mutex_init(&lock, &attr));
+    ASSERT_EQ(0, pthread_mutexattr_destroy(&attr));
+  }
+
+  void destroy() {
+    ASSERT_EQ(0, pthread_mutex_destroy(&lock));
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(PthreadMutex);
+};
+
+TEST(pthread, pthread_mutex_lock_NORMAL) {
+  PthreadMutex m(PTHREAD_MUTEX_NORMAL);
+
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+}
+
+TEST(pthread, pthread_mutex_lock_ERRORCHECK) {
+  PthreadMutex m(PTHREAD_MUTEX_ERRORCHECK);
+
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(EDEADLK, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_trylock(&m.lock));
+  ASSERT_EQ(EBUSY, pthread_mutex_trylock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(EPERM, pthread_mutex_unlock(&m.lock));
+}
+
+TEST(pthread, pthread_mutex_lock_RECURSIVE) {
+  PthreadMutex m(PTHREAD_MUTEX_RECURSIVE);
+
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_trylock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(EPERM, pthread_mutex_unlock(&m.lock));
+}
+
+TEST(pthread, pthread_mutex_init_same_as_static_initializers) {
+  pthread_mutex_t lock_normal = PTHREAD_MUTEX_INITIALIZER;
+  PthreadMutex m1(PTHREAD_MUTEX_NORMAL);
+  ASSERT_EQ(0, memcmp(&lock_normal, &m1.lock, sizeof(pthread_mutex_t)));
+  pthread_mutex_destroy(&lock_normal);
+
+  pthread_mutex_t lock_errorcheck = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
+  PthreadMutex m2(PTHREAD_MUTEX_ERRORCHECK);
+  ASSERT_EQ(0, memcmp(&lock_errorcheck, &m2.lock, sizeof(pthread_mutex_t)));
+  pthread_mutex_destroy(&lock_errorcheck);
+
+  pthread_mutex_t lock_recursive = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+  PthreadMutex m3(PTHREAD_MUTEX_RECURSIVE);
+  ASSERT_EQ(0, memcmp(&lock_recursive, &m3.lock, sizeof(pthread_mutex_t)));
+  ASSERT_EQ(0, pthread_mutex_destroy(&lock_recursive));
+}
+class MutexWakeupHelper {
+ private:
+  PthreadMutex m;
+  enum Progress {
+    LOCK_INITIALIZED,
+    LOCK_WAITING,
+    LOCK_RELEASED,
+    LOCK_ACCESSED
+  };
+  std::atomic<Progress> progress;
+  std::atomic<pid_t> tid;
+
+  static void thread_fn(MutexWakeupHelper* helper) {
+    helper->tid = gettid();
+    ASSERT_EQ(LOCK_INITIALIZED, helper->progress);
+    helper->progress = LOCK_WAITING;
+
+    ASSERT_EQ(0, pthread_mutex_lock(&helper->m.lock));
+    ASSERT_EQ(LOCK_RELEASED, helper->progress);
+    ASSERT_EQ(0, pthread_mutex_unlock(&helper->m.lock));
+
+    helper->progress = LOCK_ACCESSED;
+  }
+
+ public:
+  MutexWakeupHelper(int mutex_type) : m(mutex_type) {
+  }
+
+  void test() {
+    ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+    progress = LOCK_INITIALIZED;
+    tid = 0;
+
+    pthread_t thread;
+    ASSERT_EQ(0, pthread_create(&thread, NULL,
+      reinterpret_cast<void* (*)(void*)>(MutexWakeupHelper::thread_fn), this));
+
+    WaitUntilThreadSleep(tid);
+    ASSERT_EQ(LOCK_WAITING, progress);
+
+    progress = LOCK_RELEASED;
+    ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+
+    ASSERT_EQ(0, pthread_join(thread, NULL));
+    ASSERT_EQ(LOCK_ACCESSED, progress);
+  }
+};
+
+TEST(pthread, pthread_mutex_NORMAL_wakeup) {
+  MutexWakeupHelper helper(PTHREAD_MUTEX_NORMAL);
+  helper.test();
+}
+
+TEST(pthread, pthread_mutex_ERRORCHECK_wakeup) {
+  MutexWakeupHelper helper(PTHREAD_MUTEX_ERRORCHECK);
+  helper.test();
+}
+
+TEST(pthread, pthread_mutex_RECURSIVE_wakeup) {
+  MutexWakeupHelper helper(PTHREAD_MUTEX_RECURSIVE);
+  helper.test();
+}
+
+TEST(pthread, pthread_mutex_owner_tid_limit) {
+#if defined(__BIONIC__) && !defined(__LP64__)
+  FILE* fp = fopen("/proc/sys/kernel/pid_max", "r");
+  ASSERT_TRUE(fp != NULL);
+  long pid_max;
+  ASSERT_EQ(1, fscanf(fp, "%ld", &pid_max));
+  fclose(fp);
+  // Bionic's pthread_mutex implementation on 32-bit devices uses 16 bits to represent owner tid.
+  ASSERT_LE(pid_max, 65536);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing as 32-bit tid is supported by pthread_mutex.\n";
+#endif
+}
+
+class StrictAlignmentAllocator {
+ public:
+  void* allocate(size_t size, size_t alignment) {
+    char* p = new char[size + alignment * 2];
+    allocated_array.push_back(p);
+    while (!is_strict_aligned(p, alignment)) {
+      ++p;
+    }
+    return p;
+  }
+
+  ~StrictAlignmentAllocator() {
+    for (auto& p : allocated_array) {
+      delete [] p;
+    }
+  }
+
+ private:
+  bool is_strict_aligned(char* p, size_t alignment) {
+    return (reinterpret_cast<uintptr_t>(p) % (alignment * 2)) == alignment;
+  }
+
+  std::vector<char*> allocated_array;
+};
+
+TEST(pthread, pthread_types_allow_four_bytes_alignment) {
+#if defined(__BIONIC__)
+  // For binary compatibility with old version, we need to allow 4-byte aligned data for pthread types.
+  StrictAlignmentAllocator allocator;
+  pthread_mutex_t* mutex = reinterpret_cast<pthread_mutex_t*>(
+                             allocator.allocate(sizeof(pthread_mutex_t), 4));
+  ASSERT_EQ(0, pthread_mutex_init(mutex, NULL));
+  ASSERT_EQ(0, pthread_mutex_lock(mutex));
+  ASSERT_EQ(0, pthread_mutex_unlock(mutex));
+  ASSERT_EQ(0, pthread_mutex_destroy(mutex));
+
+  pthread_cond_t* cond = reinterpret_cast<pthread_cond_t*>(
+                           allocator.allocate(sizeof(pthread_cond_t), 4));
+  ASSERT_EQ(0, pthread_cond_init(cond, NULL));
+  ASSERT_EQ(0, pthread_cond_signal(cond));
+  ASSERT_EQ(0, pthread_cond_broadcast(cond));
+  ASSERT_EQ(0, pthread_cond_destroy(cond));
+
+  pthread_rwlock_t* rwlock = reinterpret_cast<pthread_rwlock_t*>(
+                               allocator.allocate(sizeof(pthread_rwlock_t), 4));
+  ASSERT_EQ(0, pthread_rwlock_init(rwlock, NULL));
+  ASSERT_EQ(0, pthread_rwlock_rdlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_unlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_wrlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_unlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_destroy(rwlock));
+
+#else
+  GTEST_LOG_(INFO) << "This test tests bionic implementation details.";
+#endif
+}
diff --git a/tests/pty_test.cpp b/tests/pty_test.cpp
new file mode 100644
index 0000000..7fe97e9
--- /dev/null
+++ b/tests/pty_test.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <pty.h>
+#include <sys/ioctl.h>
+
+TEST(pty, openpty) {
+  int master, slave;
+  char name[32];
+  struct winsize w = { 123, 456, 9999, 999 };
+  ASSERT_EQ(0, openpty(&master, &slave, name, NULL, &w));
+  ASSERT_NE(-1, master);
+  ASSERT_NE(-1, slave);
+  ASSERT_NE(master, slave);
+
+  char tty_name[32];
+  ASSERT_EQ(0, ttyname_r(slave, tty_name, sizeof(tty_name)));
+  ASSERT_STREQ(tty_name, name);
+
+  struct winsize w_actual;
+  ASSERT_EQ(0, ioctl(slave, TIOCGWINSZ, &w_actual));
+  ASSERT_EQ(w_actual.ws_row, w.ws_row);
+  ASSERT_EQ(w_actual.ws_col, w.ws_col);
+  ASSERT_EQ(w_actual.ws_xpixel, w.ws_xpixel);
+  ASSERT_EQ(w_actual.ws_ypixel, w.ws_ypixel);
+
+  close(master);
+  close(slave);
+}
+
+TEST(pty, forkpty) {
+  pid_t sid = getsid(0);
+
+  int master;
+  pid_t pid = forkpty(&master, NULL, NULL, NULL);
+  ASSERT_NE(-1, pid);
+
+  if (pid == 0) {
+    // We're the child.
+    ASSERT_NE(sid, getsid(0));
+    _exit(0);
+  }
+
+  ASSERT_EQ(sid, getsid(0));
+
+  int status;
+  ASSERT_EQ(pid, waitpid(pid, &status, 0));
+  ASSERT_TRUE(WIFEXITED(status));
+  ASSERT_EQ(0, WEXITSTATUS(status));
+
+  close(master);
+}
diff --git a/tests/semaphore_test.cpp b/tests/semaphore_test.cpp
new file mode 100644
index 0000000..e517f81
--- /dev/null
+++ b/tests/semaphore_test.cpp
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <semaphore.h>
+
+#include <errno.h>
+#include <gtest/gtest.h>
+#include <limits.h>
+#include <pthread.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "private/bionic_constants.h"
+
+TEST(semaphore, sem_init) {
+  sem_t s;
+
+  // Perfectly fine initial values.
+  ASSERT_EQ(0, sem_init(&s, 0, 0));
+  ASSERT_EQ(0, sem_init(&s, 0, 1));
+  ASSERT_EQ(0, sem_init(&s, 0, 123));
+
+  // Too small an initial value.
+  errno = 0;
+  ASSERT_EQ(-1, sem_init(&s, 0, -1));
+  ASSERT_EQ(EINVAL, errno);
+
+  ASSERT_EQ(SEM_VALUE_MAX, sysconf(_SC_SEM_VALUE_MAX));
+
+  // The largest initial value.
+  ASSERT_EQ(0, sem_init(&s, 0, SEM_VALUE_MAX));
+
+  // Too large an initial value.
+  errno = 0;
+  ASSERT_EQ(-1, sem_init(&s, 0, SEM_VALUE_MAX + 1));
+  ASSERT_EQ(EINVAL, errno);
+
+  ASSERT_EQ(0, sem_destroy(&s));
+}
+
+TEST(semaphore, sem_trywait) {
+  sem_t s;
+  ASSERT_EQ(0, sem_init(&s, 0, 3));
+  ASSERT_EQ(0, sem_trywait(&s));
+  ASSERT_EQ(0, sem_trywait(&s));
+  ASSERT_EQ(0, sem_trywait(&s));
+  errno = 0;
+  ASSERT_EQ(-1, sem_trywait(&s));
+  ASSERT_EQ(EAGAIN, errno);
+  ASSERT_EQ(0, sem_destroy(&s));
+}
+
+static void SemWaitThreadTestFn(sem_t& sem) {
+  ASSERT_EQ(0, sem_wait(&sem));
+}
+
+static void* SemWaitThreadFn(void* arg) {
+  SemWaitThreadTestFn(*reinterpret_cast<sem_t*>(arg));
+  return nullptr;
+}
+
+TEST(semaphore, sem_wait__sem_post) {
+  sem_t s;
+  ASSERT_EQ(0, sem_init(&s, 0, 0));
+
+  pthread_t t1, t2, t3;
+  ASSERT_EQ(0, pthread_create(&t1, NULL, SemWaitThreadFn, &s));
+  ASSERT_EQ(0, pthread_create(&t2, NULL, SemWaitThreadFn, &s));
+  ASSERT_EQ(0, pthread_create(&t3, NULL, SemWaitThreadFn, &s));
+
+  ASSERT_EQ(0, sem_post(&s));
+  ASSERT_EQ(0, sem_post(&s));
+  ASSERT_EQ(0, sem_post(&s));
+
+  void* result;
+  ASSERT_EQ(0, pthread_join(t1, &result));
+  ASSERT_EQ(0, pthread_join(t2, &result));
+  ASSERT_EQ(0, pthread_join(t3, &result));
+}
+
+static inline void timespec_add_ms(timespec& ts, size_t ms) {
+  ts.tv_sec  += ms / 1000;
+  ts.tv_nsec += (ms % 1000) * 1000000;
+  if (ts.tv_nsec >= NS_PER_S) {
+    ts.tv_sec++;
+    ts.tv_nsec -= NS_PER_S;
+  }
+}
+
+TEST(semaphore, sem_timedwait) {
+  sem_t s;
+  ASSERT_EQ(0, sem_init(&s, 0, 0));
+
+  timespec ts;
+  ASSERT_EQ(0, clock_gettime(CLOCK_REALTIME, &ts));
+  timespec_add_ms(ts, 100);
+
+  errno = 0;
+  ASSERT_EQ(-1, sem_timedwait(&s, &ts));
+  ASSERT_EQ(ETIMEDOUT, errno);
+
+  // A negative timeout is an error.
+  errno = 0;
+  ts.tv_nsec = -1;
+  ASSERT_EQ(-1, sem_timedwait(&s, &ts));
+  ASSERT_EQ(EINVAL, errno);
+
+  ASSERT_EQ(0, sem_destroy(&s));
+}
+
+TEST(semaphore, sem_getvalue) {
+  sem_t s;
+  ASSERT_EQ(0, sem_init(&s, 0, 0));
+
+  int i;
+  ASSERT_EQ(0, sem_getvalue(&s, &i));
+  ASSERT_EQ(0, i);
+
+  ASSERT_EQ(0, sem_post(&s));
+  ASSERT_EQ(0, sem_getvalue(&s, &i));
+  ASSERT_EQ(1, i);
+
+  ASSERT_EQ(0, sem_post(&s));
+  ASSERT_EQ(0, sem_getvalue(&s, &i));
+  ASSERT_EQ(2, i);
+
+  ASSERT_EQ(0, sem_wait(&s));
+  ASSERT_EQ(0, sem_getvalue(&s, &i));
+  ASSERT_EQ(1, i);
+}
diff --git a/tests/setjmp_test.cpp b/tests/setjmp_test.cpp
new file mode 100644
index 0000000..a3b5885
--- /dev/null
+++ b/tests/setjmp_test.cpp
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <setjmp.h>
+#include <stdlib.h>
+
+TEST(setjmp, setjmp_smoke) {
+  int value;
+  jmp_buf jb;
+  if ((value = setjmp(jb)) == 0) {
+    longjmp(jb, 123);
+    FAIL(); // Unreachable.
+  } else {
+    ASSERT_EQ(123, value);
+  }
+}
+
+TEST(setjmp, _setjmp_smoke) {
+  int value;
+  jmp_buf jb;
+  if ((value = _setjmp(jb)) == 0) {
+    _longjmp(jb, 456);
+    FAIL(); // Unreachable.
+  } else {
+    ASSERT_EQ(456, value);
+  }
+}
+
+TEST(setjmp, sigsetjmp_0_smoke) {
+  int value;
+  sigjmp_buf jb;
+  if ((value = sigsetjmp(jb, 0)) == 0) {
+    siglongjmp(jb, 789);
+    FAIL(); // Unreachable.
+  } else {
+    ASSERT_EQ(789, value);
+  }
+}
+
+TEST(setjmp, sigsetjmp_1_smoke) {
+  int value;
+  sigjmp_buf jb;
+  if ((value = sigsetjmp(jb, 0)) == 0) {
+    siglongjmp(jb, 0xabc);
+    FAIL(); // Unreachable.
+  } else {
+    ASSERT_EQ(0xabc, value);
+  }
+}
+
+// Two distinct signal sets, pipu
+struct SigSets {
+  SigSets() : one(MakeSigSet(0)), two(MakeSigSet(1)) {
+  }
+
+  static sigset_t MakeSigSet(int offset) {
+    sigset_t ss;
+    sigemptyset(&ss);
+    sigaddset(&ss, SIGUSR1 + offset);
+#if defined(__LP64__)
+    // For arm and x86, sigset_t was too small for the RT signals.
+    // For mips, sigset_t was large enough but jmp_buf wasn't.
+    sigaddset(&ss, SIGRTMIN + offset);
+#endif
+    return ss;
+  }
+
+  sigset_t one;
+  sigset_t two;
+  sigset_t original;
+};
+
+void AssertSigmaskEquals(const sigset_t& expected) {
+  sigset_t actual;
+  sigprocmask(0 /* ignored */, NULL, &actual);
+  size_t end = sizeof(sigset_t) * 8;
+  for (size_t i = 1; i <= end; ++i) {
+    EXPECT_EQ(sigismember(&expected, i), sigismember(&actual, i)) << i;
+  }
+}
+
+TEST(setjmp, _setjmp_signal_mask) {
+  // _setjmp/_longjmp do not save/restore the signal mask.
+  SigSets ss;
+  sigprocmask(SIG_SETMASK, &ss.one, &ss.original);
+  jmp_buf jb;
+  if (_setjmp(jb) == 0) {
+    sigprocmask(SIG_SETMASK, &ss.two, NULL);
+    _longjmp(jb, 1);
+    FAIL(); // Unreachable.
+  } else {
+    AssertSigmaskEquals(ss.two);
+  }
+  sigprocmask(SIG_SETMASK, &ss.original, NULL);
+}
+
+TEST(setjmp, setjmp_signal_mask) {
+  // setjmp/longjmp do save/restore the signal mask on bionic, but not on glibc.
+  // This is a BSD versus System V historical accident. POSIX leaves the
+  // behavior unspecified, so any code that cares needs to use sigsetjmp.
+  SigSets ss;
+  sigprocmask(SIG_SETMASK, &ss.one, &ss.original);
+  jmp_buf jb;
+  if (setjmp(jb) == 0) {
+    sigprocmask(SIG_SETMASK, &ss.two, NULL);
+    longjmp(jb, 1);
+    FAIL(); // Unreachable.
+  } else {
+#if defined(__BIONIC__)
+    // bionic behaves like BSD and does save/restore the signal mask.
+    AssertSigmaskEquals(ss.one);
+#else
+    // glibc behaves like System V and doesn't save/restore the signal mask.
+    AssertSigmaskEquals(ss.two);
+#endif
+  }
+  sigprocmask(SIG_SETMASK, &ss.original, NULL);
+}
+
+TEST(setjmp, sigsetjmp_0_signal_mask) {
+  // sigsetjmp(0)/siglongjmp do not save/restore the signal mask.
+  SigSets ss;
+  sigprocmask(SIG_SETMASK, &ss.one, &ss.original);
+  sigjmp_buf sjb;
+  if (sigsetjmp(sjb, 0) == 0) {
+    sigprocmask(SIG_SETMASK, &ss.two, NULL);
+    siglongjmp(sjb, 1);
+    FAIL(); // Unreachable.
+  } else {
+    AssertSigmaskEquals(ss.two);
+  }
+  sigprocmask(SIG_SETMASK, &ss.original, NULL);
+}
+
+TEST(setjmp, sigsetjmp_1_signal_mask) {
+  // sigsetjmp(1)/siglongjmp does save/restore the signal mask.
+  SigSets ss;
+  sigprocmask(SIG_SETMASK, &ss.one, &ss.original);
+  sigjmp_buf sjb;
+  if (sigsetjmp(sjb, 1) == 0) {
+    sigprocmask(SIG_SETMASK, &ss.two, NULL);
+    siglongjmp(sjb, 1);
+    FAIL(); // Unreachable.
+  } else {
+    AssertSigmaskEquals(ss.one);
+  }
+  sigprocmask(SIG_SETMASK, &ss.original, NULL);
+}
+
+#if defined(__aarch64__)
+#define SET_FREG(n, v) asm volatile("fmov d"#n ", "#v : : : "d"#n)
+#define CLEAR_FREG(n) asm volatile("fmov d"#n ", xzr" : : : "d"#n)
+#define SET_FREGS \
+  SET_FREG(8, 8.0); SET_FREG(9, 9.0); SET_FREG(10, 10.0); SET_FREG(11, 11.0); \
+  SET_FREG(12, 12.0); SET_FREG(13, 13.0); SET_FREG(14, 14.0); SET_FREG(15, 15.0);
+#define CLEAR_FREGS \
+  CLEAR_FREG(8); CLEAR_FREG(9); CLEAR_FREG(10); CLEAR_FREG(11); \
+  CLEAR_FREG(12); CLEAR_FREG(13); CLEAR_FREG(14); CLEAR_FREG(15);
+#define GET_FREG(n) ({ double _r; asm volatile("fmov %0, d"#n : "=r"(_r) : :); _r; })
+#define CHECK_FREGS \
+    EXPECT_EQ(8.0, GET_FREG(8)); EXPECT_EQ(9.0, GET_FREG(9)); \
+    EXPECT_EQ(10.0, GET_FREG(10)); EXPECT_EQ(11.0, GET_FREG(11)); \
+    EXPECT_EQ(12.0, GET_FREG(12)); EXPECT_EQ(13.0, GET_FREG(13)); \
+    EXPECT_EQ(14.0, GET_FREG(14)); EXPECT_EQ(15.0, GET_FREG(15));
+#elif defined(__arm__)
+#define SET_FREG(n, v) \
+  ({ const double _v{v}; asm volatile("fcpyd d"#n ", %P0" : : "w"(_v) : "d"#n); })
+#define SET_FREGS \
+  SET_FREG(8, 8); SET_FREG(9, 9); SET_FREG(10, 10); SET_FREG(11, 11); \
+  SET_FREG(12, 12); SET_FREG(13, 13); SET_FREG(14, 14); SET_FREG(15, 15);
+#define CLEAR_FREGS \
+  SET_FREG(8, 0); SET_FREG(9, 0); SET_FREG(10, 0); SET_FREG(11, 0); \
+  SET_FREG(12, 0); SET_FREG(13, 0); SET_FREG(14, 0); SET_FREG(15, 0);
+#define GET_FREG(n) ({ double _r; asm volatile("fcpyd %P0, d"#n : "=w"(_r) : :); _r;})
+#define CHECK_FREGS \
+    EXPECT_EQ(8.0, GET_FREG(8)); EXPECT_EQ(9.0, GET_FREG(9)); \
+    EXPECT_EQ(10.0, GET_FREG(10)); EXPECT_EQ(11.0, GET_FREG(11)); \
+    EXPECT_EQ(12.0, GET_FREG(12)); EXPECT_EQ(13.0, GET_FREG(13)); \
+    EXPECT_EQ(14.0, GET_FREG(14)); EXPECT_EQ(15.0, GET_FREG(15));
+#else
+/* The other architectures don't save/restore fp registers. */
+#define SET_FREGS
+#define CLEAR_FREGS
+#define CHECK_FREGS
+#endif
+
+TEST(setjmp, setjmp_fp_registers) {
+  int value;
+  jmp_buf jb;
+  SET_FREGS;
+  if ((value = setjmp(jb)) == 0) {
+    CLEAR_FREGS;
+    longjmp(jb, 123);
+    FAIL(); // Unreachable.
+  } else {
+    ASSERT_EQ(123, value);
+    CHECK_FREGS;
+  }
+}
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 8fd8b72..f8fdc3f 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -16,9 +16,10 @@
 
 #include <signal.h>
 
-#include <errno.h>
 #include <gtest/gtest.h>
 
+#include <errno.h>
+
 #include "ScopedSignalHandler.h"
 
 static size_t SIGNAL_MIN() {
@@ -276,3 +277,101 @@
   // We don't currently reserve any at the top.
   ASSERT_EQ(SIGRTMAX, __SIGRTMAX);
 }
+
+static int g_sigqueue_signal_handler_call_count = 0;
+
+static void SigqueueSignalHandler(int signum, siginfo_t* info, void*) {
+  ASSERT_EQ(SIGALRM, signum);
+  ASSERT_EQ(SIGALRM, info->si_signo);
+  ASSERT_EQ(SI_QUEUE, info->si_code);
+  ASSERT_EQ(1, info->si_value.sival_int);
+  ++g_sigqueue_signal_handler_call_count;
+}
+
+TEST(signal, sigqueue) {
+  ScopedSignalHandler ssh(SIGALRM, SigqueueSignalHandler, SA_SIGINFO);
+  sigval_t sigval;
+  sigval.sival_int = 1;
+  errno = 0;
+  ASSERT_EQ(0, sigqueue(getpid(), SIGALRM, sigval));
+  ASSERT_EQ(0, errno);
+  ASSERT_EQ(1, g_sigqueue_signal_handler_call_count);
+}
+
+TEST(signal, sigwaitinfo) {
+  // Block SIGALRM.
+  sigset_t just_SIGALRM;
+  sigemptyset(&just_SIGALRM);
+  sigaddset(&just_SIGALRM, SIGALRM);
+  sigset_t original_set;
+  ASSERT_EQ(0, sigprocmask(SIG_BLOCK, &just_SIGALRM, &original_set));
+
+  // Raise SIGALRM.
+  sigval_t sigval;
+  sigval.sival_int = 1;
+  ASSERT_EQ(0, sigqueue(getpid(), SIGALRM, sigval));
+
+  // Get pending SIGALRM.
+  siginfo_t info;
+  errno = 0;
+  ASSERT_EQ(SIGALRM, sigwaitinfo(&just_SIGALRM, &info));
+  ASSERT_EQ(0, errno);
+  ASSERT_EQ(SIGALRM, info.si_signo);
+  ASSERT_EQ(1, info.si_value.sival_int);
+
+  ASSERT_EQ(0, sigprocmask(SIG_SETMASK, &original_set, NULL));
+}
+
+TEST(signal, sigtimedwait) {
+  // Block SIGALRM.
+  sigset_t just_SIGALRM;
+  sigemptyset(&just_SIGALRM);
+  sigaddset(&just_SIGALRM, SIGALRM);
+  sigset_t original_set;
+  ASSERT_EQ(0, sigprocmask(SIG_BLOCK, &just_SIGALRM, &original_set));
+
+  // Raise SIGALRM.
+  sigval_t sigval;
+  sigval.sival_int = 1;
+  ASSERT_EQ(0, sigqueue(getpid(), SIGALRM, sigval));
+
+  // Get pending SIGALRM.
+  siginfo_t info;
+  struct timespec timeout;
+  timeout.tv_sec = 2;
+  timeout.tv_nsec = 0;
+  errno = 0;
+  ASSERT_EQ(SIGALRM, sigtimedwait(&just_SIGALRM, &info, &timeout));
+  ASSERT_EQ(0, errno);
+
+  ASSERT_EQ(0, sigprocmask(SIG_SETMASK, &original_set, NULL));
+}
+
+static int64_t NanoTime() {
+  struct timespec t;
+  t.tv_sec = t.tv_nsec = 0;
+  clock_gettime(CLOCK_MONOTONIC, &t);
+  return static_cast<int64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec;
+}
+
+TEST(signal, sigtimedwait_timeout) {
+  // Block SIGALRM.
+  sigset_t just_SIGALRM;
+  sigemptyset(&just_SIGALRM);
+  sigaddset(&just_SIGALRM, SIGALRM);
+  sigset_t original_set;
+  ASSERT_EQ(0, sigprocmask(SIG_BLOCK, &just_SIGALRM, &original_set));
+
+  // Wait timeout.
+  int64_t start_time = NanoTime();
+  siginfo_t info;
+  struct timespec timeout;
+  timeout.tv_sec = 0;
+  timeout.tv_nsec = 1000000;
+  errno = 0;
+  ASSERT_EQ(-1, sigtimedwait(&just_SIGALRM, &info, &timeout));
+  ASSERT_EQ(EAGAIN, errno);
+  ASSERT_GE(NanoTime() - start_time, 1000000);
+
+  ASSERT_EQ(0, sigprocmask(SIG_SETMASK, &original_set, NULL));
+}
diff --git a/tests/stack_protector_test.cpp b/tests/stack_protector_test.cpp
index fea24d8..22285d1 100644
--- a/tests/stack_protector_test.cpp
+++ b/tests/stack_protector_test.cpp
@@ -19,18 +19,15 @@
  */
 
 #include <gtest/gtest.h>
+#include "BionicDeathTest.h"
 
 #include <pthread.h>
 #include <stdint.h>
 #include <stdio.h>
-#include <sys/syscall.h>
 #include <unistd.h>
 #include <set>
 
-#if defined(__GLIBC__)
-// glibc doesn't expose gettid(2).
-pid_t gettid() { return syscall(__NR_gettid); }
-#endif // __GLIBC__
+extern "C" pid_t gettid();
 
 // For x86, bionic and glibc have per-thread stack guard values (all identical).
 #if defined(__i386__)
@@ -105,10 +102,16 @@
  * This must be marked with "__attribute__ ((noinline))", to ensure the
  * compiler generates the proper stack guards around this function.
  */
+static char* dummy_buf;
+
 __attribute__ ((noinline))
 static void do_modify_stack_chk_guard() {
+  char buf[128];
+  // Store local array's address to global variable to force compiler to generate stack guards.
+  dummy_buf = buf;
   __stack_chk_guard = 0x12345678;
 }
+
 #endif
 
 TEST(stack_protector, global_guard) {
@@ -120,9 +123,10 @@
 #endif // TEST_STACK_CHK_GUARD
 }
 
-TEST(stack_protector_DeathTest, modify_stack_protector) {
+class stack_protector_DeathTest : public BionicDeathTest {};
+
+TEST_F(stack_protector_DeathTest, modify_stack_protector) {
 #if defined(TEST_STACK_CHK_GUARD)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   ASSERT_EXIT(do_modify_stack_chk_guard(), testing::KilledBySignal(SIGABRT), "");
 #else // TEST_STACK_CHK_GUARD
   GTEST_LOG_(INFO) << "This test does nothing.\n";
diff --git a/tests/stack_unwinding_test.cpp b/tests/stack_unwinding_test.cpp
index 3fc45c5..d1b3402 100644
--- a/tests/stack_unwinding_test.cpp
+++ b/tests/stack_unwinding_test.cpp
@@ -73,33 +73,47 @@
   ASSERT_EQ(count + 1, deeper_count);
 }
 
-static int killer_count = 0;
-static int handler_count = 0;
-static int handler_one_deeper_count = 0;
+struct UnwindData {
+  volatile bool signal_handler_complete = false;
+  int expected_frame_count = 0;
+  int handler_frame_count = 0;
+  int handler_one_deeper_frame_count = 0;
+};
+
+static UnwindData g_unwind_data;
 
 static void noinline UnwindSignalHandler(int) {
-  _Unwind_Backtrace(FrameCounter, &handler_count);
-  ASSERT_GT(handler_count, killer_count);
+  _Unwind_Backtrace(FrameCounter, &g_unwind_data.handler_frame_count);
 
-  handler_one_deeper_count = unwind_one_frame_deeper();
-  ASSERT_EQ(handler_count + 1, handler_one_deeper_count);
+  g_unwind_data.handler_one_deeper_frame_count = unwind_one_frame_deeper();
+  g_unwind_data.signal_handler_complete = true;
+}
+
+static void verify_unwind_data(const UnwindData& unwind_data) {
+  EXPECT_GT(unwind_data.handler_frame_count, unwind_data.expected_frame_count);
+  EXPECT_EQ(unwind_data.handler_frame_count + 1, unwind_data.handler_one_deeper_frame_count);
 }
 
 TEST(stack_unwinding, unwind_through_signal_frame) {
-  killer_count = handler_count = handler_one_deeper_count = 0;
+  g_unwind_data = {};
   ScopedSignalHandler ssh(SIGUSR1, UnwindSignalHandler);
 
-  _Unwind_Backtrace(FrameCounter, &killer_count);
+  _Unwind_Backtrace(FrameCounter, &g_unwind_data.expected_frame_count);
 
   ASSERT_EQ(0, kill(getpid(), SIGUSR1));
+  while (!g_unwind_data.signal_handler_complete) {}
+
+  verify_unwind_data(g_unwind_data);
 }
 
 // On LP32, the SA_SIGINFO flag gets you __restore_rt instead of __restore.
 TEST(stack_unwinding, unwind_through_signal_frame_SA_SIGINFO) {
-  killer_count = handler_count = handler_one_deeper_count = 0;
+  g_unwind_data = {};
   ScopedSignalHandler ssh(SIGUSR1, UnwindSignalHandler, SA_SIGINFO);
 
-  _Unwind_Backtrace(FrameCounter, &killer_count);
-
+  _Unwind_Backtrace(FrameCounter, &g_unwind_data.expected_frame_count);
   ASSERT_EQ(0, kill(getpid(), SIGUSR1));
+  while (!g_unwind_data.signal_handler_complete) {}
+
+  verify_unwind_data(g_unwind_data);
 }
diff --git a/tests/stdatomic_test.cpp b/tests/stdatomic_test.cpp
index b7fb19b..eb030bf 100644
--- a/tests/stdatomic_test.cpp
+++ b/tests/stdatomic_test.cpp
@@ -14,8 +14,10 @@
  * limitations under the License.
  */
 
-#include <stdatomic.h>
 #include <gtest/gtest.h>
+// Fool stdatomic.h into not using <atomic>.
+#undef _USING_LIBCXX
+#include <stdatomic.h>
 #include <pthread.h>
 #include <stdint.h>
 
diff --git a/tests/stdio_ext_test.cpp b/tests/stdio_ext_test.cpp
new file mode 100644
index 0000000..c95cbbd
--- /dev/null
+++ b/tests/stdio_ext_test.cpp
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <stdio_ext.h>
+
+#include <gtest/gtest.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <wchar.h>
+#include <locale.h>
+
+#include "TemporaryFile.h"
+
+TEST(stdio_ext, __fbufsize) {
+  FILE* fp = fopen("/proc/version", "r");
+
+  // Initially, there's no buffer in case the first thing you do is disable buffering.
+  ASSERT_EQ(0U, __fbufsize(fp));
+
+  // A read forces a buffer to be created.
+  char buf[128];
+  fgets(buf, sizeof(buf), fp);
+  ASSERT_EQ(1024U, __fbufsize(fp));
+
+  ASSERT_EQ(0, setvbuf(fp, buf, _IOFBF, 1));
+  ASSERT_EQ(1U, __fbufsize(fp));
+
+  ASSERT_EQ(0, setvbuf(fp, buf, _IOFBF, 8));
+  ASSERT_EQ(8U, __fbufsize(fp));
+
+  fclose(fp);
+}
+
+TEST(stdio_ext, __flbf) {
+  FILE* fp = fopen("/proc/version", "r");
+
+  ASSERT_FALSE(__flbf(fp));
+
+  char buf[128];
+  ASSERT_EQ(0, setvbuf(fp, buf, _IOLBF, sizeof(buf)));
+
+  ASSERT_TRUE(__flbf(fp));
+
+  fclose(fp);
+}
+
+TEST(stdio_ext, __fpending) {
+  FILE* fp = fopen("/dev/null", "w");
+  ASSERT_EQ(0U, __fpending(fp));
+  ASSERT_EQ('x', fputc('x', fp));
+  ASSERT_EQ(1U, __fpending(fp));
+  ASSERT_EQ('y', fputc('y', fp));
+  ASSERT_EQ(2U, __fpending(fp));
+  fflush(fp);
+  ASSERT_EQ(0U, __fpending(fp));
+  fclose(fp);
+}
+
+TEST(stdio_ext, __fpurge) {
+  FILE* fp = tmpfile();
+
+  ASSERT_EQ('a', fputc('a', fp));
+  ASSERT_EQ(1U, __fpending(fp));
+  __fpurge(fp);
+  ASSERT_EQ(0U, __fpending(fp));
+
+  ASSERT_EQ('b', fputc('b', fp));
+  ASSERT_EQ('\n', fputc('\n', fp));
+  ASSERT_EQ(2U, __fpending(fp));
+
+  rewind(fp);
+
+  char buf[16];
+  char* s = fgets(buf, sizeof(buf), fp);
+  ASSERT_TRUE(s != NULL);
+  ASSERT_STREQ("b\n", s);
+
+  fclose(fp);
+}
+
+TEST(stdio_ext, _flushlbf) {
+  FILE* fp = fopen("/dev/null", "w");
+
+  char buf[128];
+  ASSERT_EQ(0, setvbuf(fp, buf, _IOLBF, sizeof(buf)));
+
+  ASSERT_EQ('a', fputc('a', fp));
+  ASSERT_EQ(1U, __fpending(fp));
+
+  _flushlbf();
+
+  ASSERT_EQ(0U, __fpending(fp));
+
+  fclose(fp);
+}
+
+TEST(stdio_ext, __freadable__fwritable) {
+  FILE* fp = fopen("/dev/null", "r");
+  ASSERT_TRUE(__freadable(fp));
+  ASSERT_FALSE(__fwritable(fp));
+  fclose(fp);
+
+  fp = fopen("/dev/null", "w");
+  ASSERT_FALSE(__freadable(fp));
+  ASSERT_TRUE(__fwritable(fp));
+  fclose(fp);
+
+  fp = fopen("/dev/null", "w+");
+  ASSERT_TRUE(__freadable(fp));
+  ASSERT_TRUE(__fwritable(fp));
+  fclose(fp);
+}
+
+TEST(stdio_ext, __fsetlocking) {
+  FILE* fp = fopen("/proc/version", "r");
+  ASSERT_EQ(FSETLOCKING_INTERNAL, __fsetlocking(fp, FSETLOCKING_QUERY));
+  ASSERT_EQ(FSETLOCKING_INTERNAL, __fsetlocking(fp, FSETLOCKING_BYCALLER));
+  ASSERT_EQ(FSETLOCKING_BYCALLER, __fsetlocking(fp, FSETLOCKING_QUERY));
+  ASSERT_EQ(FSETLOCKING_BYCALLER, __fsetlocking(fp, FSETLOCKING_INTERNAL));
+  ASSERT_EQ(FSETLOCKING_INTERNAL, __fsetlocking(fp, FSETLOCKING_QUERY));
+  fclose(fp);
+}
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index bba744a..62677cd 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -27,6 +27,8 @@
 #include <wchar.h>
 #include <locale.h>
 
+#include <vector>
+
 #include "TemporaryFile.h"
 
 TEST(stdio, flockfile_18208568_stderr) {
@@ -77,7 +79,7 @@
   int rc = dprintf(tf.fd, "hello\n");
   ASSERT_EQ(rc, 6);
 
-  lseek(tf.fd, SEEK_SET, 0);
+  lseek(tf.fd, 0, SEEK_SET);
   FILE* tfile = fdopen(tf.fd, "r");
   ASSERT_TRUE(tfile != NULL);
 
@@ -107,7 +109,7 @@
     ASSERT_FALSE(feof(fp));
     ASSERT_EQ(getdelim(&word_read, &allocated_length, ' ', fp), static_cast<int>(strlen(expected[i])));
     ASSERT_GE(allocated_length, strlen(expected[i]));
-    ASSERT_STREQ(word_read, expected[i]);
+    ASSERT_STREQ(expected[i], word_read);
   }
   // The last read should have set the end-of-file indicator for the stream.
   ASSERT_TRUE(feof(fp));
@@ -149,6 +151,15 @@
   fclose(fp);
 }
 
+TEST(stdio, getdelim_directory) {
+  FILE* fp = fopen("/proc", "r");
+  ASSERT_TRUE(fp != NULL);
+  char* word_read;
+  size_t allocated_length;
+  ASSERT_EQ(-1, getdelim(&word_read, &allocated_length, ' ', fp));
+  fclose(fp);
+}
+
 TEST(stdio, getline) {
   FILE* fp = tmpfile();
   ASSERT_TRUE(fp != NULL);
@@ -171,7 +182,7 @@
   while ((read_char_count = getline(&line_read, &allocated_length, fp)) != -1) {
     ASSERT_EQ(read_char_count, static_cast<int>(strlen(line_written)));
     ASSERT_GE(allocated_length, strlen(line_written));
-    ASSERT_STREQ(line_read, line_written);
+    ASSERT_STREQ(line_written, line_read);
     ++read_line_count;
   }
   ASSERT_EQ(read_line_count, line_count);
@@ -364,22 +375,52 @@
   EXPECT_STREQ("print_me_twice print_me_twice", buf);
 }
 
-TEST(stdio, snprintf_f_special) {
-  char buf[BUFSIZ];
-  snprintf(buf, sizeof(buf), "%f", nanf(""));
-  EXPECT_STRCASEEQ("NaN", buf);
+template <typename T>
+void CheckInfNan(int snprintf_fn(T*, size_t, const T*, ...),
+                 const T* fmt, const T* fmt_plus,
+                 const T* minus_inf, const T* inf_, const T* plus_inf,
+                 const T* minus_nan, const T* nan_, const T* plus_nan) {
+  T buf[BUFSIZ];
 
-  snprintf(buf, sizeof(buf), "%f", HUGE_VALF);
-  EXPECT_STRCASEEQ("Inf", buf);
+  snprintf_fn(buf, sizeof(buf), fmt, nan(""));
+  EXPECT_STREQ(nan_, buf) << fmt;
+  snprintf_fn(buf, sizeof(buf), fmt, -nan(""));
+  EXPECT_STREQ(minus_nan, buf) << fmt;
+  snprintf_fn(buf, sizeof(buf), fmt_plus, nan(""));
+  EXPECT_STREQ(plus_nan, buf) << fmt_plus;
+  snprintf_fn(buf, sizeof(buf), fmt_plus, -nan(""));
+  EXPECT_STREQ(minus_nan, buf) << fmt_plus;
+
+  snprintf_fn(buf, sizeof(buf), fmt, HUGE_VAL);
+  EXPECT_STREQ(inf_, buf) << fmt;
+  snprintf_fn(buf, sizeof(buf), fmt, -HUGE_VAL);
+  EXPECT_STREQ(minus_inf, buf) << fmt;
+  snprintf_fn(buf, sizeof(buf), fmt_plus, HUGE_VAL);
+  EXPECT_STREQ(plus_inf, buf) << fmt_plus;
+  snprintf_fn(buf, sizeof(buf), fmt_plus, -HUGE_VAL);
+  EXPECT_STREQ(minus_inf, buf) << fmt_plus;
 }
 
-TEST(stdio, snprintf_g_special) {
-  char buf[BUFSIZ];
-  snprintf(buf, sizeof(buf), "%g", nan(""));
-  EXPECT_STRCASEEQ("NaN", buf);
+TEST(stdio, snprintf_inf_nan) {
+  CheckInfNan(snprintf, "%a", "%+a", "-inf", "inf", "+inf", "-nan", "nan", "+nan");
+  CheckInfNan(snprintf, "%A", "%+A", "-INF", "INF", "+INF", "-NAN", "NAN", "+NAN");
+  CheckInfNan(snprintf, "%e", "%+e", "-inf", "inf", "+inf", "-nan", "nan", "+nan");
+  CheckInfNan(snprintf, "%E", "%+E", "-INF", "INF", "+INF", "-NAN", "NAN", "+NAN");
+  CheckInfNan(snprintf, "%f", "%+f", "-inf", "inf", "+inf", "-nan", "nan", "+nan");
+  CheckInfNan(snprintf, "%F", "%+F", "-INF", "INF", "+INF", "-NAN", "NAN", "+NAN");
+  CheckInfNan(snprintf, "%g", "%+g", "-inf", "inf", "+inf", "-nan", "nan", "+nan");
+  CheckInfNan(snprintf, "%G", "%+G", "-INF", "INF", "+INF", "-NAN", "NAN", "+NAN");
+}
 
-  snprintf(buf, sizeof(buf), "%g", HUGE_VAL);
-  EXPECT_STRCASEEQ("Inf", buf);
+TEST(stdio, wsprintf_inf_nan) {
+  CheckInfNan(swprintf, L"%a", L"%+a", L"-inf", L"inf", L"+inf", L"-nan", L"nan", L"+nan");
+  CheckInfNan(swprintf, L"%A", L"%+A", L"-INF", L"INF", L"+INF", L"-NAN", L"NAN", L"+NAN");
+  CheckInfNan(swprintf, L"%e", L"%+e", L"-inf", L"inf", L"+inf", L"-nan", L"nan", L"+nan");
+  CheckInfNan(swprintf, L"%E", L"%+E", L"-INF", L"INF", L"+INF", L"-NAN", L"NAN", L"+NAN");
+  CheckInfNan(swprintf, L"%f", L"%+f", L"-inf", L"inf", L"+inf", L"-nan", L"nan", L"+nan");
+  CheckInfNan(swprintf, L"%F", L"%+F", L"-INF", L"INF", L"+INF", L"-NAN", L"NAN", L"+NAN");
+  CheckInfNan(swprintf, L"%g", L"%+g", L"-inf", L"inf", L"+inf", L"-nan", L"nan", L"+nan");
+  CheckInfNan(swprintf, L"%G", L"%+G", L"-INF", L"INF", L"+INF", L"-NAN", L"NAN", L"+NAN");
 }
 
 TEST(stdio, snprintf_d_INT_MAX) {
@@ -439,8 +480,22 @@
 TEST(stdio, snprintf_negative_zero_5084292) {
   char buf[BUFSIZ];
 
+  snprintf(buf, sizeof(buf), "%e", -0.0);
+  EXPECT_STREQ("-0.000000e+00", buf);
+  snprintf(buf, sizeof(buf), "%E", -0.0);
+  EXPECT_STREQ("-0.000000E+00", buf);
   snprintf(buf, sizeof(buf), "%f", -0.0);
   EXPECT_STREQ("-0.000000", buf);
+  snprintf(buf, sizeof(buf), "%F", -0.0);
+  EXPECT_STREQ("-0.000000", buf);
+  snprintf(buf, sizeof(buf), "%g", -0.0);
+  EXPECT_STREQ("-0", buf);
+  snprintf(buf, sizeof(buf), "%G", -0.0);
+  EXPECT_STREQ("-0", buf);
+  snprintf(buf, sizeof(buf), "%a", -0.0);
+  EXPECT_STREQ("-0x0p+0", buf);
+  snprintf(buf, sizeof(buf), "%A", -0.0);
+  EXPECT_STREQ("-0X0P+0", buf);
 }
 
 TEST(stdio, snprintf_utf8_15439554) {
@@ -695,6 +750,125 @@
   fclose(fp);
 }
 
+TEST(stdio, fmemopen) {
+  char buf[16];
+  memset(buf, 0, sizeof(buf));
+  FILE* fp = fmemopen(buf, sizeof(buf), "r+");
+  ASSERT_EQ('<', fputc('<', fp));
+  ASSERT_NE(EOF, fputs("abc>\n", fp));
+  fflush(fp);
+
+  ASSERT_STREQ("<abc>\n", buf);
+
+  rewind(fp);
+
+  char line[16];
+  char* s = fgets(line, sizeof(line), fp);
+  ASSERT_TRUE(s != NULL);
+  ASSERT_STREQ("<abc>\n", s);
+
+  fclose(fp);
+}
+
+TEST(stdio, fmemopen_NULL) {
+  FILE* fp = fmemopen(nullptr, 128, "r+");
+  ASSERT_NE(EOF, fputs("xyz\n", fp));
+
+  rewind(fp);
+
+  char line[16];
+  char* s = fgets(line, sizeof(line), fp);
+  ASSERT_TRUE(s != NULL);
+  ASSERT_STREQ("xyz\n", s);
+
+  fclose(fp);
+}
+
+TEST(stdio, fmemopen_EINVAL) {
+  char buf[16];
+
+  // Invalid size.
+  errno = 0;
+  ASSERT_EQ(nullptr, fmemopen(buf, 0, "r+"));
+  ASSERT_EQ(EINVAL, errno);
+
+  // No '+' with NULL buffer.
+  errno = 0;
+  ASSERT_EQ(nullptr, fmemopen(nullptr, 0, "r"));
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(stdio, open_memstream) {
+  char* p = nullptr;
+  size_t size = 0;
+  FILE* fp = open_memstream(&p, &size);
+  ASSERT_NE(EOF, fputs("hello, world!", fp));
+  fclose(fp);
+
+  ASSERT_STREQ("hello, world!", p);
+  ASSERT_EQ(strlen("hello, world!"), size);
+  free(p);
+}
+
+TEST(stdio, open_memstream_EINVAL) {
+#if defined(__BIONIC__)
+  char* p;
+  size_t size;
+
+  // Invalid buffer.
+  errno = 0;
+  ASSERT_EQ(nullptr, open_memstream(nullptr, &size));
+  ASSERT_EQ(EINVAL, errno);
+
+  // Invalid size.
+  errno = 0;
+  ASSERT_EQ(nullptr, open_memstream(&p, nullptr));
+  ASSERT_EQ(EINVAL, errno);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing.\n";
+#endif
+}
+
+TEST(stdio, fdopen_CLOEXEC) {
+  int fd = open("/proc/version", O_RDONLY);
+  ASSERT_TRUE(fd != -1);
+
+  // This fd doesn't have O_CLOEXEC...
+  int flags = fcntl(fd, F_GETFD);
+  ASSERT_TRUE(flags != -1);
+  ASSERT_EQ(0, flags & FD_CLOEXEC);
+
+  FILE* fp = fdopen(fd, "re");
+  ASSERT_TRUE(fp != NULL);
+
+  // ...but the new one does.
+  flags = fcntl(fileno(fp), F_GETFD);
+  ASSERT_TRUE(flags != -1);
+  ASSERT_EQ(FD_CLOEXEC, flags & FD_CLOEXEC);
+
+  fclose(fp);
+  close(fd);
+}
+
+TEST(stdio, freopen_CLOEXEC) {
+  FILE* fp = fopen("/proc/version", "r");
+  ASSERT_TRUE(fp != NULL);
+
+  // This FILE* doesn't have O_CLOEXEC...
+  int flags = fcntl(fileno(fp), F_GETFD);
+  ASSERT_TRUE(flags != -1);
+  ASSERT_EQ(0, flags & FD_CLOEXEC);
+
+  fp = freopen("/proc/version", "re", fp);
+
+  // ...but the new one does.
+  flags = fcntl(fileno(fp), F_GETFD);
+  ASSERT_TRUE(flags != -1);
+  ASSERT_EQ(FD_CLOEXEC, flags & FD_CLOEXEC);
+
+  fclose(fp);
+}
+
 // https://code.google.com/p/android/issues/detail?id=81155
 // http://b/18556607
 TEST(stdio, fread_unbuffered_pathological_performance) {
@@ -709,7 +883,7 @@
 
   time_t t0 = time(NULL);
   for (size_t i = 0; i < 1024; ++i) {
-    fread(buf, 64*1024, 1, fp);
+    ASSERT_EQ(1U, fread(buf, 64*1024, 1, fp));
   }
   time_t t1 = time(NULL);
 
@@ -725,3 +899,116 @@
     ASSERT_EQ('\xff', buf[i]);
   }
 }
+
+TEST(stdio, fread_EOF) {
+  std::string digits("0123456789");
+  FILE* fp = fmemopen(&digits[0], digits.size(), "r");
+
+  // Try to read too much, but little enough that it still fits in the FILE's internal buffer.
+  char buf1[4 * 4];
+  memset(buf1, 0, sizeof(buf1));
+  ASSERT_EQ(2U, fread(buf1, 4, 4, fp));
+  ASSERT_STREQ("0123456789", buf1);
+  ASSERT_TRUE(feof(fp));
+
+  rewind(fp);
+
+  // Try to read way too much so stdio tries to read more direct from the stream.
+  char buf2[4 * 4096];
+  memset(buf2, 0, sizeof(buf2));
+  ASSERT_EQ(2U, fread(buf2, 4, 4096, fp));
+  ASSERT_STREQ("0123456789", buf2);
+  ASSERT_TRUE(feof(fp));
+
+  fclose(fp);
+}
+
+static void test_fread_from_write_only_stream(size_t n) {
+  FILE* fp = fopen("/dev/null", "w");
+  std::vector<char> buf(n, 0);
+  errno = 0;
+  ASSERT_EQ(0U, fread(&buf[0], n, 1, fp));
+  ASSERT_EQ(EBADF, errno);
+  ASSERT_TRUE(ferror(fp));
+  ASSERT_FALSE(feof(fp));
+  fclose(fp);
+}
+
+TEST(stdio, fread_from_write_only_stream_slow_path) {
+  test_fread_from_write_only_stream(1);
+}
+
+TEST(stdio, fread_from_write_only_stream_fast_path) {
+  test_fread_from_write_only_stream(64*1024);
+}
+
+static void test_fwrite_after_fread(size_t n) {
+  TemporaryFile tf;
+
+  FILE* fp = fdopen(tf.fd, "w+");
+  ASSERT_EQ(1U, fwrite("1", 1, 1, fp));
+  fflush(fp);
+
+  // We've flushed but not rewound, so there's nothing to read.
+  std::vector<char> buf(n, 0);
+  ASSERT_EQ(0U, fread(&buf[0], 1, buf.size(), fp));
+  ASSERT_TRUE(feof(fp));
+
+  // But hitting EOF doesn't prevent us from writing...
+  errno = 0;
+  ASSERT_EQ(1U, fwrite("2", 1, 1, fp)) << errno;
+
+  // And if we rewind, everything's there.
+  rewind(fp);
+  ASSERT_EQ(2U, fread(&buf[0], 1, buf.size(), fp));
+  ASSERT_EQ('1', buf[0]);
+  ASSERT_EQ('2', buf[1]);
+
+  fclose(fp);
+}
+
+TEST(stdio, fwrite_after_fread_slow_path) {
+  test_fwrite_after_fread(16);
+}
+
+TEST(stdio, fwrite_after_fread_fast_path) {
+  test_fwrite_after_fread(64*1024);
+}
+
+// http://b/19172514
+TEST(stdio, fread_after_fseek) {
+  TemporaryFile tf;
+
+  FILE* fp = fopen(tf.filename, "w+");
+  ASSERT_TRUE(fp != nullptr);
+
+  char file_data[12288];
+  for (size_t i = 0; i < 12288; i++) {
+    file_data[i] = i;
+  }
+  ASSERT_EQ(12288U, fwrite(file_data, 1, 12288, fp));
+  fclose(fp);
+
+  fp = fopen(tf.filename, "r");
+  ASSERT_TRUE(fp != nullptr);
+
+  char buffer[8192];
+  size_t cur_location = 0;
+  // Small read to populate internal buffer.
+  ASSERT_EQ(100U, fread(buffer, 1, 100, fp));
+  ASSERT_EQ(memcmp(file_data, buffer, 100), 0);
+
+  cur_location = static_cast<size_t>(ftell(fp));
+  // Large read to force reading into the user supplied buffer and bypassing
+  // the internal buffer.
+  ASSERT_EQ(8192U, fread(buffer, 1, 8192, fp));
+  ASSERT_EQ(memcmp(file_data+cur_location, buffer, 8192), 0);
+
+  // Small backwards seek to verify fseek does not reuse the internal buffer.
+  ASSERT_EQ(0, fseek(fp, -22, SEEK_CUR));
+  cur_location = static_cast<size_t>(ftell(fp));
+  ASSERT_EQ(22U, fread(buffer, 1, 22, fp));
+  ASSERT_EQ(memcmp(file_data+cur_location, buffer, 22), 0);
+
+  fclose(fp);
+}
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index 553f018..050f5a7 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -15,6 +15,7 @@
  */
 
 #include <gtest/gtest.h>
+#include "BionicDeathTest.h"
 #include "TemporaryFile.h"
 
 #include <errno.h>
@@ -27,12 +28,54 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
+// The random number generator tests all set the seed, get four values, reset the seed and check
+// that they get the first two values repeated, and then reset the seed and check two more values
+// to rule out the possibility that we're just going round a cycle of four values.
+// TODO: factor this out.
+
 TEST(stdlib, drand48) {
   srand48(0x01020304);
   EXPECT_DOUBLE_EQ(0.65619299195623526, drand48());
   EXPECT_DOUBLE_EQ(0.18522597229772941, drand48());
   EXPECT_DOUBLE_EQ(0.42015087072844537, drand48());
   EXPECT_DOUBLE_EQ(0.061637783047395089, drand48());
+  srand48(0x01020304);
+  EXPECT_DOUBLE_EQ(0.65619299195623526, drand48());
+  EXPECT_DOUBLE_EQ(0.18522597229772941, drand48());
+  srand48(0x01020304);
+  EXPECT_DOUBLE_EQ(0.65619299195623526, drand48());
+  EXPECT_DOUBLE_EQ(0.18522597229772941, drand48());
+}
+
+TEST(stdlib, erand48) {
+  const unsigned short seed[3] = { 0x330e, 0xabcd, 0x1234 };
+  unsigned short xsubi[3];
+  memcpy(xsubi, seed, sizeof(seed));
+  EXPECT_DOUBLE_EQ(0.39646477376027534, erand48(xsubi));
+  EXPECT_DOUBLE_EQ(0.84048536941142515, erand48(xsubi));
+  EXPECT_DOUBLE_EQ(0.35333609724524351, erand48(xsubi));
+  EXPECT_DOUBLE_EQ(0.44658343479654405, erand48(xsubi));
+  memcpy(xsubi, seed, sizeof(seed));
+  EXPECT_DOUBLE_EQ(0.39646477376027534, erand48(xsubi));
+  EXPECT_DOUBLE_EQ(0.84048536941142515, erand48(xsubi));
+  memcpy(xsubi, seed, sizeof(seed));
+  EXPECT_DOUBLE_EQ(0.39646477376027534, erand48(xsubi));
+  EXPECT_DOUBLE_EQ(0.84048536941142515, erand48(xsubi));
+}
+
+TEST(stdlib, lcong48) {
+  unsigned short p[7] = { 0x0102, 0x0304, 0x0506, 0x0708, 0x090a, 0x0b0c, 0x0d0e };
+  lcong48(p);
+  EXPECT_EQ(1531389981, lrand48());
+  EXPECT_EQ(1598801533, lrand48());
+  EXPECT_EQ(2080534853, lrand48());
+  EXPECT_EQ(1102488897, lrand48());
+  lcong48(p);
+  EXPECT_EQ(1531389981, lrand48());
+  EXPECT_EQ(1598801533, lrand48());
+  lcong48(p);
+  EXPECT_EQ(1531389981, lrand48());
+  EXPECT_EQ(1598801533, lrand48());
 }
 
 TEST(stdlib, lrand48) {
@@ -41,6 +84,12 @@
   EXPECT_EQ(397769746, lrand48());
   EXPECT_EQ(902267124, lrand48());
   EXPECT_EQ(132366131, lrand48());
+  srand48(0x01020304);
+  EXPECT_EQ(1409163720, lrand48());
+  EXPECT_EQ(397769746, lrand48());
+  srand48(0x01020304);
+  EXPECT_EQ(1409163720, lrand48());
+  EXPECT_EQ(397769746, lrand48());
 }
 
 TEST(stdlib, random) {
@@ -49,6 +98,12 @@
   EXPECT_EQ(1399865117, random());
   EXPECT_EQ(2032643283, random());
   EXPECT_EQ(571329216, random());
+  srandom(0x01020304);
+  EXPECT_EQ(55436735, random());
+  EXPECT_EQ(1399865117, random());
+  srandom(0x01020304);
+  EXPECT_EQ(55436735, random());
+  EXPECT_EQ(1399865117, random());
 }
 
 TEST(stdlib, rand) {
@@ -57,6 +112,12 @@
   EXPECT_EQ(1399865117, rand());
   EXPECT_EQ(2032643283, rand());
   EXPECT_EQ(571329216, rand());
+  srand(0x01020304);
+  EXPECT_EQ(55436735, rand());
+  EXPECT_EQ(1399865117, rand());
+  srand(0x01020304);
+  EXPECT_EQ(55436735, rand());
+  EXPECT_EQ(1399865117, rand());
 }
 
 TEST(stdlib, mrand48) {
@@ -65,6 +126,12 @@
   EXPECT_EQ(795539493, mrand48());
   EXPECT_EQ(1804534249, mrand48());
   EXPECT_EQ(264732262, mrand48());
+  srand48(0x01020304);
+  EXPECT_EQ(-1476639856, mrand48());
+  EXPECT_EQ(795539493, mrand48());
+  srand48(0x01020304);
+  EXPECT_EQ(-1476639856, mrand48());
+  EXPECT_EQ(795539493, mrand48());
 }
 
 TEST(stdlib, posix_memalign) {
@@ -99,6 +166,18 @@
   ASSERT_EQ(ENOENT, errno);
 }
 
+TEST(stdlib, realpath__component_after_non_directory) {
+  errno = 0;
+  char* p = realpath("/dev/null/.", NULL);
+  ASSERT_TRUE(p == NULL);
+  ASSERT_EQ(ENOTDIR, errno);
+
+  errno = 0;
+  p = realpath("/dev/null/..", NULL);
+  ASSERT_TRUE(p == NULL);
+  ASSERT_EQ(ENOTDIR, errno);
+}
+
 TEST(stdlib, realpath) {
   // Get the name of this executable.
   char executable_path[PATH_MAX];
@@ -156,25 +235,41 @@
 
 // Even though this isn't really a death test, we have to say "DeathTest" here so gtest knows to
 // run this test (which exits normally) in its own process.
-TEST(stdlib_DeathTest, getenv_after_main_thread_exits) {
+
+class stdlib_DeathTest : public BionicDeathTest {};
+
+TEST_F(stdlib_DeathTest, getenv_after_main_thread_exits) {
   // https://code.google.com/p/android/issues/detail?id=57421
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   ASSERT_EXIT(TestBug57421_main(), ::testing::ExitedWithCode(0), "");
 }
 
+TEST(stdlib, mkostemp64) {
+  TemporaryFile tf([](char* path) { return mkostemp64(path, O_CLOEXEC); });
+  int flags = fcntl(tf.fd, F_GETFD);
+  ASSERT_TRUE(flags != -1);
+  ASSERT_EQ(FD_CLOEXEC, flags & FD_CLOEXEC);
+}
+
+TEST(stdlib, mkostemp) {
+  TemporaryFile tf([](char* path) { return mkostemp(path, O_CLOEXEC); });
+  int flags = fcntl(tf.fd, F_GETFD);
+  ASSERT_TRUE(flags != -1);
+  ASSERT_EQ(FD_CLOEXEC, flags & FD_CLOEXEC);
+}
+
+TEST(stdlib, mkstemp64) {
+  TemporaryFile tf(mkstemp64);
+  struct stat64 sb;
+  ASSERT_EQ(0, fstat64(tf.fd, &sb));
+  ASSERT_EQ(O_LARGEFILE, fcntl(tf.fd, F_GETFL) & O_LARGEFILE);
+}
+
 TEST(stdlib, mkstemp) {
   TemporaryFile tf;
   struct stat sb;
   ASSERT_EQ(0, fstat(tf.fd, &sb));
 }
 
-TEST(stdlib, mkstemp64) {
-  GenericTemporaryFile<mkstemp64> tf;
-  struct stat64 sb;
-  ASSERT_EQ(0, fstat64(tf.fd, &sb));
-  ASSERT_EQ(O_LARGEFILE, fcntl(tf.fd, F_GETFL) & O_LARGEFILE);
-}
-
 TEST(stdlib, system) {
   int status;
 
@@ -203,6 +298,23 @@
   ASSERT_DOUBLE_EQ(1.23, strtold("1.23", NULL));
 }
 
+TEST(stdlib, strtof_2206701) {
+  ASSERT_EQ(0.0f, strtof("7.0064923216240853546186479164495e-46", NULL));
+  ASSERT_EQ(1.4e-45f, strtof("7.0064923216240853546186479164496e-46", NULL));
+}
+
+TEST(stdlib, strtod_largest_subnormal) {
+  // This value has been known to cause javac and java to infinite loop.
+  // http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
+  ASSERT_EQ(2.2250738585072014e-308, strtod("2.2250738585072012e-308", NULL));
+  ASSERT_EQ(2.2250738585072014e-308, strtod("0.00022250738585072012e-304", NULL));
+  ASSERT_EQ(2.2250738585072014e-308, strtod("00000002.2250738585072012e-308", NULL));
+  ASSERT_EQ(2.2250738585072014e-308, strtod("2.225073858507201200000e-308", NULL));
+  ASSERT_EQ(2.2250738585072014e-308, strtod("2.2250738585072012e-00308", NULL));
+  ASSERT_EQ(2.2250738585072014e-308, strtod("2.22507385850720129978001e-308", NULL));
+  ASSERT_EQ(-2.2250738585072014e-308, strtod("-2.2250738585072012e-308", NULL));
+}
+
 TEST(stdlib, quick_exit) {
   pid_t pid = fork();
   ASSERT_NE(-1, pid) << strerror(errno);
@@ -361,3 +473,51 @@
   ASSERT_EQ(ENOTTY, errno);
   close(fd);
 }
+
+TEST(stdlib, strtol_EINVAL) {
+  errno = 0;
+  strtol("123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtol("123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtol("123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(stdlib, strtoll_EINVAL) {
+  errno = 0;
+  strtoll("123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoll("123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoll("123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(stdlib, strtoul_EINVAL) {
+  errno = 0;
+  strtoul("123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoul("123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoul("123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(stdlib, strtoull_EINVAL) {
+  errno = 0;
+  strtoull("123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoull("123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  strtoull("123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
diff --git a/tests/string_posix_strerror_r_test.cpp b/tests/string_posix_strerror_r_test.cpp
new file mode 100644
index 0000000..ae3b41a
--- /dev/null
+++ b/tests/string_posix_strerror_r_test.cpp
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#undef _GNU_SOURCE
+#include <features.h> // Get __BIONIC__ or __GLIBC__ so we can tell what we're using.
+
+#if defined(__GLIBC__)
+
+// At the time of writing, libcxx -- which is dragged in by gtest -- assumes
+// declarations from glibc of things that aren't available without __USE_GNU.
+// This means we can't even build this test (which is a problem because that
+// means it doesn't get included in CTS).
+// For glibc 2.15, the symbols in question are:
+//   at_quick_exit, quick_exit, vasprintf, strtoll_l, strtoull_l, and strtold_l.
+
+# if __GLIBC_PREREQ(2, 19)
+#  error check whether we can build this now...
+# endif
+
+#else
+
+#include <string.h>
+
+#include <errno.h>
+#include <gtest/gtest.h>
+
+TEST(string, posix_strerror_r) {
+  char buf[256];
+
+  // Valid.
+  ASSERT_EQ(0, strerror_r(0, buf, sizeof(buf)));
+  ASSERT_STREQ("Success", buf);
+  ASSERT_EQ(0, strerror_r(1, buf, sizeof(buf)));
+  ASSERT_STREQ("Operation not permitted", buf);
+
+  // Invalid.
+  ASSERT_EQ(0, strerror_r(-1, buf, sizeof(buf)));
+  ASSERT_STREQ("Unknown error -1", buf);
+  ASSERT_EQ(0, strerror_r(1234, buf, sizeof(buf)));
+  ASSERT_STREQ("Unknown error 1234", buf);
+
+  // Buffer too small.
+  errno = 0;
+  memset(buf, 0, sizeof(buf));
+  ASSERT_EQ(-1, strerror_r(4567, buf, 2));
+  ASSERT_STREQ("U", buf);
+  // The POSIX strerror_r sets errno to ERANGE (the GNU one doesn't).
+  ASSERT_EQ(ERANGE, errno);
+}
+
+#endif
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index f1ac9dd..1d63c76 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -14,15 +14,22 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
+#define _GNU_SOURCE 1
 
-#include <errno.h>
-#include <malloc.h>
-#include <math.h>
 #include <string.h>
 
+#include <errno.h>
+#include <gtest/gtest.h>
+#include <malloc.h>
+#include <math.h>
+
 #include "buffer_tests.h"
 
+#if defined(__BIONIC__)
+#define STRLCPY_SUPPORTED
+#define STRLCAT_SUPPORTED
+#endif
+
 #define KB 1024
 #define SMALL 1*KB
 #define MEDIUM 4*KB
@@ -68,32 +75,38 @@
 
   ASSERT_STREQ("Unknown error 1001", strerror1001);
 #else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
+  GTEST_LOG_(INFO) << "Skipping test, requires a thread safe strerror.";
 #endif // __BIONIC__
 }
 
-TEST(string, strerror_r) {
-#if defined(__BIONIC__) // glibc's strerror_r doesn't even have the same signature as the POSIX one.
+TEST(string, gnu_strerror_r) {
   char buf[256];
 
+  // Note that glibc doesn't necessarily write into the buffer.
+
   // Valid.
-  ASSERT_EQ(0, strerror_r(0, buf, sizeof(buf)));
+  ASSERT_STREQ("Success", strerror_r(0, buf, sizeof(buf)));
+#if defined(__BIONIC__)
   ASSERT_STREQ("Success", buf);
-  ASSERT_EQ(0, strerror_r(1, buf, sizeof(buf)));
+#endif
+  ASSERT_STREQ("Operation not permitted", strerror_r(1, buf, sizeof(buf)));
+#if defined(__BIONIC__)
   ASSERT_STREQ("Operation not permitted", buf);
+#endif
 
   // Invalid.
-  ASSERT_EQ(0, strerror_r(-1, buf, sizeof(buf)));
+  ASSERT_STREQ("Unknown error -1", strerror_r(-1, buf, sizeof(buf)));
   ASSERT_STREQ("Unknown error -1", buf);
-  ASSERT_EQ(0, strerror_r(1234, buf, sizeof(buf)));
+  ASSERT_STREQ("Unknown error 1234", strerror_r(1234, buf, sizeof(buf)));
   ASSERT_STREQ("Unknown error 1234", buf);
 
   // Buffer too small.
-  ASSERT_EQ(-1, strerror_r(0, buf, 2));
-  ASSERT_EQ(ERANGE, errno);
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+  errno = 0;
+  memset(buf, 0, sizeof(buf));
+  ASSERT_EQ(buf, strerror_r(4567, buf, 2));
+  ASSERT_STREQ("U", buf);
+  // The GNU strerror_r doesn't set errno (the POSIX one sets it to ERANGE).
+  ASSERT_EQ(0, errno);
 }
 
 TEST(string, strsignal) {
@@ -129,8 +142,7 @@
   ASSERT_STREQ("Unknown signal 1001", strsignal1001);
 }
 
-// TODO: where did these numbers come from?
-#define POS_ITER    10
+// TODO: where did this number come from?
 #define ITER        500
 
 // For every length we want to test, vary and change alignment
@@ -139,8 +151,9 @@
 // These tests contributed by Intel Corporation.
 // TODO: make these tests more intention-revealing and less random.
 template<class Character>
-struct StringTestState {
-  StringTestState(size_t MAX_LEN) : MAX_LEN(MAX_LEN) {
+class StringTestState {
+ public:
+  StringTestState(size_t MAX_LEN) : MAX_LEN(MAX_LEN), align1_index_(0), align2_index_(0) {
     int max_alignment = 64;
 
     // TODO: fix the tests to not sometimes use twice their specified "MAX_LEN".
@@ -159,15 +172,30 @@
     free(glob_ptr2);
   }
 
-  void NewIteration() {
-    int alignments[] = { 24, 32, 16, 48, 1, 2, 3, 0, 5, 11 };
-    int usable_alignments = 10;
-    int align1 = alignments[random() % (usable_alignments - 1)];
-    int align2 = alignments[random() % (usable_alignments - 1)];
+  void BeginIterations() {
+    align1_index_ = 0;
+    align2_index_ = 0;
 
-    ptr = glob_ptr + align1;
-    ptr1 = glob_ptr1 + align1;
-    ptr2 = glob_ptr2 + align2;
+    ResetPointers();
+  }
+
+  bool HasNextIteration() {
+    return (align1_index_ != (alignments_size - 1) || align2_index_ != (alignments_size - 1));
+  }
+
+  void NextIteration() {
+    if (align1_index_ == (alignments_size - 1) && align2_index_ == (alignments_size - 1)) {
+      return;
+    }
+
+    if (align1_index_ == (alignments_size - 1)) {
+      align1_index_ = 0;
+      align2_index_++;
+    } else {
+      align1_index_++;
+    }
+
+    ResetPointers();
   }
 
   const size_t MAX_LEN;
@@ -176,7 +204,10 @@
   size_t len[ITER + 1];
 
  private:
+  static size_t alignments[];
+  static size_t alignments_size;
   Character *glob_ptr, *glob_ptr1, *glob_ptr2;
+  size_t align1_index_, align2_index_;
 
   // Calculate input lengths and fill state.len with them.
   // Test small lengths with more density than big ones. Manually push
@@ -193,19 +224,33 @@
     }
     len[n++] = MAX_LEN;
   }
+
+  void ResetPointers() {
+    if (align1_index_ == alignments_size || align2_index_ == alignments_size) {
+      ptr = ptr1 = ptr2 = nullptr;
+    } else {
+      ptr = glob_ptr + alignments[align1_index_];
+      ptr1 = glob_ptr1 + alignments[align1_index_];
+      ptr2 = glob_ptr2 + alignments[align2_index_];
+    }
+  }
 };
 
+template<class Character>
+size_t StringTestState<Character>::alignments[] = { 24, 32, 16, 48, 0, 1, 2, 3, 4, 5, 6, 7, 11 };
+
+template<class Character>
+size_t StringTestState<Character>::alignments_size = sizeof(alignments)/sizeof(size_t);
+
 TEST(string, strcat) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr2, '\2', state.MAX_LEN);
       state.ptr2[state.MAX_LEN - 1] = '\0';
       memcpy(state.ptr, state.ptr2, 2 * state.MAX_LEN);
 
-      memset(state.ptr1, random() & 255, state.len[i]);
+      memset(state.ptr1, 'L', state.len[i]);
       state.ptr1[random() % state.len[i]] = '\0';
       state.ptr1[state.len[i] - 1] = '\0';
 
@@ -378,13 +423,11 @@
 }
 
 TEST(string, strchr) {
-  int seek_char = random() & 255;
+  int seek_char = 'R';
 
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       if (~seek_char > 0) {
         memset(state.ptr1, ~seek_char, state.len[i]);
       } else {
@@ -413,9 +456,7 @@
 TEST(string, strcmp) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr1, 'v', state.MAX_LEN);
       memset(state.ptr2, 'n', state.MAX_LEN);
       state.ptr1[state.len[i] - 1] = '\0';
@@ -449,9 +490,7 @@
 
 TEST(string, stpcpy) {
   StringTestState<char> state(SMALL);
-  for (size_t j = 0; j < POS_ITER; j++) {
-    state.NewIteration();
-
+  for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     size_t pos = random() % state.MAX_LEN;
 
     memset(state.ptr1, '\2', pos);
@@ -475,9 +514,7 @@
 
 TEST(string, strcpy) {
   StringTestState<char> state(SMALL);
-  for (size_t j = 0; j < POS_ITER; j++) {
-    state.NewIteration();
-
+  for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     size_t pos = random() % state.MAX_LEN;
 
     memset(state.ptr1, '\2', pos);
@@ -500,12 +537,10 @@
 }
 
 TEST(string, strlcat) {
-#if defined(__BIONIC__)
+#if defined(STRLCAT_SUPPORTED)
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr2, '\2', state.MAX_LEN + state.len[i]);
       state.ptr2[state.MAX_LEN - 1] = '\0';
       memcpy(state.ptr, state.ptr2, state.MAX_LEN + state.len[i]);
@@ -525,21 +560,16 @@
       ASSERT_TRUE(memcmp(state.ptr, state.ptr2, state.MAX_LEN + state.len[i]) == 0);
     }
   }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+#else
+  GTEST_LOG_(INFO) << "Skipping test, strlcat not supported on this platform.";
+#endif
 }
 
 TEST(string, strlcpy) {
-#if defined(__BIONIC__)
+#if defined(STRLCPY_SUPPORTED)
   StringTestState<char> state(SMALL);
-  for (size_t j = 0; j < POS_ITER; j++) {
-    state.NewIteration();
-
-    int rand = random() & 255;
-    if (rand < 1) {
-      rand = 1;
-    }
+  for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+    int rand = 'O';
     memset(state.ptr1, rand, state.MAX_LEN);
 
     size_t pos = random() % state.MAX_LEN;
@@ -548,7 +578,7 @@
     }
     memcpy(state.ptr, state.ptr1, state.MAX_LEN);
 
-    memset(state.ptr2, random() & 255, state.MAX_LEN);
+    memset(state.ptr2, 'I', state.MAX_LEN);
     memcpy(state.ptr + state.MAX_LEN, state.ptr2, state.MAX_LEN);
 
     if (pos > state.MAX_LEN - 1) {
@@ -562,22 +592,20 @@
     ASSERT_FALSE((memcmp(state.ptr1, state.ptr, state.MAX_LEN) != 0) ||
                  (memcmp(state.ptr2, state.ptr + state.MAX_LEN, state.MAX_LEN) != 0));
   }
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+#else
+  GTEST_LOG_(INFO) << "Skipping test, strlcpy not supported on this platform.";
+#endif
 }
 
 TEST(string, strncat) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr2, '\2', state.MAX_LEN);
       state.ptr2[state.MAX_LEN - 1] = '\0';
       memcpy(state.ptr, state.ptr2, 2 * state.MAX_LEN);
 
-      memset(state.ptr1, random() & 255, state.len[i]);
+      memset(state.ptr1, 'I', state.len[i]);
       state.ptr1[random() % state.len[i]] = '\0';
       state.ptr1[state.len[i] - 1] = '\0';
 
@@ -596,9 +624,7 @@
 TEST(string, strncmp) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr1, 'v', state.MAX_LEN);
       memset(state.ptr2, 'n', state.MAX_LEN);
       state.ptr1[state.len[i] - 1] = '\0';
@@ -632,12 +658,8 @@
 
 TEST(string, stpncpy) {
   StringTestState<char> state(SMALL);
-  for (size_t j = 0; j < ITER; j++) {
-    state.NewIteration();
-
-    // Choose a random value to fill the string, except \0 (string terminator),
-    // or \1 (guarantees it's different from anything in ptr2).
-    memset(state.ptr1, (random() % 254) + 2, state.MAX_LEN);
+  for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+    memset(state.ptr1, 'J', state.MAX_LEN);
     // Choose a random size for our src buffer.
     size_t ptr1_len = random() % state.MAX_LEN;
     state.ptr1[ptr1_len] = '\0';
@@ -671,12 +693,10 @@
 
 TEST(string, strncpy) {
   StringTestState<char> state(SMALL);
-  for (size_t j = 0; j < ITER; j++) {
-    state.NewIteration();
-
+  for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     // Choose a random value to fill the string, except \0 (string terminator),
     // or \1 (guarantees it's different from anything in ptr2).
-    memset(state.ptr1, (random() % 254) + 2, state.MAX_LEN);
+    memset(state.ptr1, 'K', state.MAX_LEN);
     // Choose a random size for our src buffer.
     size_t ptr1_len = random() % state.MAX_LEN;
     state.ptr1[ptr1_len] = '\0';
@@ -709,12 +729,10 @@
 }
 
 TEST(string, strrchr) {
-  int seek_char = random() & 255;
+  int seek_char = 'M';
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       if (~seek_char > 0) {
         memset(state.ptr1, ~seek_char, state.len[i]);
       } else {
@@ -741,12 +759,10 @@
 }
 
 TEST(string, memchr) {
-  int seek_char = random() & 255;
+  int seek_char = 'N';
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr1, ~seek_char, state.len[i]);
 
       size_t pos = random() % state.MAX_LEN;
@@ -772,12 +788,10 @@
 }
 
 TEST(string, memrchr) {
-  int seek_char = random() & 255;
+  int seek_char = 'P';
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr1, ~seek_char, state.len[i]);
 
       size_t pos = random() % state.MAX_LEN;
@@ -797,11 +811,9 @@
 TEST(string, memcmp) {
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
-      int c1 = random() & 0xff;
-      int c2 = random() & 0xff;
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+      int c1 = 'A';
+      int c2 = 'N';
       memset(state.ptr1, c1, state.MAX_LEN);
       memset(state.ptr2, c1, state.MAX_LEN);
 
@@ -820,9 +832,7 @@
   StringTestState<wchar_t> state(SMALL);
 
   for (size_t i = 0; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       long long mask = ((long long) 1 << 8 * sizeof(wchar_t)) - 1;
       int c1 = rand() & mask;
       int c2 = rand() & mask;
@@ -842,11 +852,9 @@
 
 TEST(string, memcpy) {
   StringTestState<char> state(LARGE);
-  int rand = random() & 255;
+  int rand = 4;
   for (size_t i = 0; i < state.n - 1; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       size_t pos = random() % (state.MAX_LEN - state.len[i]);
 
       memset(state.ptr1, rand, state.len[i]);
@@ -864,11 +872,9 @@
 
 TEST(string, memset) {
   StringTestState<char> state(LARGE);
-  char ch = random () & 255;
+  char ch = 'P';
   for (size_t i = 0; i < state.n - 1; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
       memset(state.ptr1, ~ch, state.MAX_LEN);
       memcpy(state.ptr2, state.ptr1, state.MAX_LEN);
 
@@ -887,14 +893,12 @@
 TEST(string, memmove) {
   StringTestState<char> state(LARGE);
   for (size_t i = 0; i < state.n - 1; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
-      memset(state.ptr1, random() & 255, 2 * state.MAX_LEN);
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+      memset(state.ptr1, 'Q', 2 * state.MAX_LEN);
 
       size_t pos = random() % (state.MAX_LEN - state.len[i]);
 
-      memset(state.ptr1, random() & 255, state.len[i]);
+      memset(state.ptr1, 'R', state.len[i]);
       memcpy(state.ptr2, state.ptr1, 2 * state.MAX_LEN);
       memcpy(state.ptr, state.ptr1, state.len[i]);
       memcpy(state.ptr1 + pos, state.ptr, state.len[i]);
@@ -920,8 +924,8 @@
 
   for (int i = 0; i < 5; i++) {
     char* ptr2 = glob_ptr2 + alignments[i];
-    memset(ptr1, random() & 255, 2 * len);
-    memset(ptr1, random() & 255, len);
+    memset(ptr1, 'S', 2 * len);
+    memset(ptr1, 'T', len);
     memcpy(ptr2, ptr1, 2 * len);
     memcpy(ptr, ptr1, len);
     memcpy(ptr1 + pos, ptr, len);
@@ -987,11 +991,9 @@
 TEST(string, bcopy) {
   StringTestState<char> state(LARGE);
   for (size_t i = 0; i < state.n; i++) {
-    for (size_t j = 0; j < POS_ITER; j++) {
-      state.NewIteration();
-
-      memset(state.ptr1, random() & 255, state.MAX_LEN);
-      memset(state.ptr1 + state.MAX_LEN, random() & 255, state.MAX_LEN);
+    for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+      memset(state.ptr1, '4', state.MAX_LEN);
+      memset(state.ptr1 + state.MAX_LEN, 'a', state.MAX_LEN);
       memcpy(state.ptr2, state.ptr1, 2 * state.MAX_LEN);
 
       size_t start = random() % (2 * state.MAX_LEN - state.len[i]);
@@ -1005,10 +1007,8 @@
 
 TEST(string, bzero) {
   StringTestState<char> state(LARGE);
-  for (size_t j = 0; j < ITER; j++) {
-    state.NewIteration();
-
-    memset(state.ptr1, random() & 255, state.MAX_LEN);
+  for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+    memset(state.ptr1, 'R', state.MAX_LEN);
 
     size_t start = random() % state.MAX_LEN;
     size_t end = start + random() % (state.MAX_LEN - start);
@@ -1105,6 +1105,36 @@
   RunSrcDstBufferOverreadTest(DoStrcpyTest);
 }
 
+#if defined(STRLCPY_SUPPORTED)
+static void DoStrlcpyTest(uint8_t* src, uint8_t* dst, size_t len) {
+  if (len >= 1) {
+    memset(src, (32 + (len % 96)), len - 1);
+    src[len-1] = '\0';
+    memset(dst, 0, len);
+    ASSERT_EQ(len-1, strlcpy(reinterpret_cast<char*>(dst),
+                             reinterpret_cast<char*>(src), len));
+    ASSERT_TRUE(memcmp(src, dst, len) == 0);
+  }
+}
+#endif
+
+TEST(string, strlcpy_align) {
+#if defined(STRLCPY_SUPPORTED)
+  RunSrcDstBufferAlignTest(LARGE, DoStrlcpyTest);
+#else
+  GTEST_LOG_(INFO) << "Skipping test, strlcpy not supported on this platform.";
+#endif
+}
+
+TEST(string, strlcpy_overread) {
+#if defined(STRLCPY_SUPPORTED)
+  RunSrcDstBufferOverreadTest(DoStrlcpyTest);
+#else
+  GTEST_LOG_(INFO) << "Skipping test, strlcpy not supported on this platform.";
+#endif
+}
+
+
 static void DoStpcpyTest(uint8_t* src, uint8_t* dst, size_t len) {
   if (len >= 1) {
     memset(src, (32 + (len % 96)), len - 1);
@@ -1177,6 +1207,55 @@
   RunSrcDstBufferOverreadTest(DoStrcatTest);
 }
 
+#if defined(STRLCAT_SUPPORTED)
+static void DoStrlcatTest(uint8_t* src, uint8_t* dst, size_t len) {
+  if (len >= 1) {
+    int value = 32 + (len % 96);
+    memset(src, value, len - 1);
+    src[len-1] = '\0';
+
+    if (len >= STRCAT_DST_LEN) {
+      // Create a small buffer for doing quick compares in each loop.
+      uint8_t cmp_buf[STRCAT_DST_LEN];
+      // Make sure dst string contains a different value then the src string.
+      int value2 = 32 + (value + 2) % 96;
+      memset(cmp_buf, value2, sizeof(cmp_buf));
+
+      for (size_t i = 1; i <= STRCAT_DST_LEN; i++) {
+        memset(dst, value2, i-1);
+        memset(dst+i-1, 0, len-i);
+        src[len-i] = '\0';
+        ASSERT_EQ(len-1, strlcat(reinterpret_cast<char*>(dst),
+                                 reinterpret_cast<char*>(src), len));
+        ASSERT_TRUE(memcmp(dst, cmp_buf, i-1) == 0);
+        ASSERT_TRUE(memcmp(src, dst+i-1, len-i+1) == 0);
+      }
+    } else {
+      dst[0] = '\0';
+      ASSERT_EQ(len-1, strlcat(reinterpret_cast<char*>(dst),
+                               reinterpret_cast<char*>(src), len));
+      ASSERT_TRUE(memcmp(src, dst, len) == 0);
+    }
+  }
+}
+#endif
+
+TEST(string, strlcat_align) {
+#if defined(STRLCAT_SUPPORTED)
+  RunSrcDstBufferAlignTest(MEDIUM, DoStrlcatTest, LargeSetIncrement);
+#else
+  GTEST_LOG_(INFO) << "Skipping test, strlcat not supported on this platform.";
+#endif
+}
+
+TEST(string, strlcat_overread) {
+#if defined(STRLCAT_SUPPORTED)
+  RunSrcDstBufferOverreadTest(DoStrlcatTest);
+#else
+  GTEST_LOG_(INFO) << "Skipping test, strlcat not supported on this platform.";
+#endif
+}
+
 static void DoStrcmpTest(uint8_t* buf1, uint8_t* buf2, size_t len) {
   if (len >= 1) {
     memset(buf1, (32 + (len % 96)), len - 1);
@@ -1287,3 +1366,37 @@
 TEST(string, strchr_overread) {
   RunSingleBufferOverreadTest(DoStrchrTest);
 }
+
+static void TestBasename(const char* in, const char* expected_out) {
+  errno = 0;
+  const char* out = basename(in);
+  ASSERT_STREQ(expected_out, out) << in;
+  ASSERT_EQ(0, errno) << in;
+}
+
+TEST(string, __gnu_basename) {
+  TestBasename("", "");
+  TestBasename("/usr/lib", "lib");
+  TestBasename("/usr/", "");
+  TestBasename("usr", "usr");
+  TestBasename("/", "");
+  TestBasename(".", ".");
+  TestBasename("..", "..");
+  TestBasename("///", "");
+  TestBasename("//usr//lib//", "");
+}
+
+TEST(string, strnlen_147048) {
+  // https://code.google.com/p/android/issues/detail?id=147048
+  char stack_src[64] = {0};
+  EXPECT_EQ(0U, strnlen(stack_src, 1024*1024*1024));
+  char* heap_src = new char[1];
+  *heap_src = '\0';
+  EXPECT_EQ(0U, strnlen(heap_src, 1024*1024*1024));
+  delete[] heap_src;
+}
+
+TEST(string, mempcpy) {
+  char dst[6];
+  ASSERT_EQ(&dst[4], reinterpret_cast<char*>(mempcpy(dst, "hello", 4)));
+}
diff --git a/tests/strings_test.cpp b/tests/strings_test.cpp
index 5200859..823aa4f 100644
--- a/tests/strings_test.cpp
+++ b/tests/strings_test.cpp
@@ -17,6 +17,7 @@
 #include <gtest/gtest.h>
 
 #include <errno.h>
+#include <locale.h>
 #include <strings.h>
 
 TEST(strings, ffs) {
@@ -30,3 +31,33 @@
   ASSERT_EQ(27, ffs(0x04000000));
   ASSERT_EQ(32, ffs(0x80000000));
 }
+
+TEST(strings, strcasecmp) {
+  ASSERT_EQ(0, strcasecmp("hello", "HELLO"));
+  ASSERT_LT(strcasecmp("hello1", "hello2"), 0);
+  ASSERT_GT(strcasecmp("hello2", "hello1"), 0);
+}
+
+TEST(strings, strcasecmp_l) {
+  locale_t l = newlocale(LC_ALL, "C", 0);
+  ASSERT_EQ(0, strcasecmp_l("hello", "HELLO", l));
+  ASSERT_LT(strcasecmp_l("hello1", "hello2", l), 0);
+  ASSERT_GT(strcasecmp_l("hello2", "hello1", l), 0);
+  freelocale(l);
+}
+
+TEST(strings, strncasecmp) {
+  ASSERT_EQ(0, strncasecmp("hello", "HELLO", 3));
+  ASSERT_EQ(0, strncasecmp("abcXX", "ABCYY", 3));
+  ASSERT_LT(strncasecmp("hello1", "hello2", 6), 0);
+  ASSERT_GT(strncasecmp("hello2", "hello1", 6), 0);
+}
+
+TEST(strings, strncasecmp_l) {
+  locale_t l = newlocale(LC_ALL, "C", 0);
+  ASSERT_EQ(0, strncasecmp_l("hello", "HELLO", 3, l));
+  ASSERT_EQ(0, strncasecmp_l("abcXX", "ABCYY", 3, l));
+  ASSERT_LT(strncasecmp_l("hello1", "hello2", 6, l), 0);
+  ASSERT_GT(strncasecmp_l("hello2", "hello1", 6, l), 0);
+  freelocale(l);
+}
diff --git a/tests/stubs_test.cpp b/tests/stubs_test.cpp
index 9b0c231..89d67cb 100644
--- a/tests/stubs_test.cpp
+++ b/tests/stubs_test.cpp
@@ -16,98 +16,246 @@
 
 #include <gtest/gtest.h>
 
-#include <sys/types.h>
-#include <sys/cdefs.h>
+// Below are the header files we want to test.
+#include <grp.h>
 #include <pwd.h>
+
 #include <errno.h>
 #include <limits.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
 #include <unistd.h>
 
-#if defined(__BIONIC__)
-#define CHECK_GETPWNAM_FOR(username, uid, uid_type) \
-    SCOPED_TRACE(username); \
-    ASSERT_NO_FATAL_FAILURE(check_getpwnam(username, uid, uid_type));
-
-typedef enum {
+enum uid_type_t {
   TYPE_SYSTEM,
   TYPE_APP
-} uid_type_t;
+};
 
-static void check_getpwnam(const char* username, uid_t uid, uid_type_t uid_type) {
-  errno = 0;
-  passwd* pwd = getpwuid(uid);
+#if defined(__BIONIC__)
+
+static void check_passwd(const passwd* pwd, const char* username, uid_t uid, uid_type_t uid_type) {
   ASSERT_TRUE(pwd != NULL);
-  ASSERT_EQ(0, errno);
-  EXPECT_STREQ(username, pwd->pw_name);
-  EXPECT_EQ(uid, pwd->pw_uid);
-  EXPECT_EQ(uid, pwd->pw_gid);
+  ASSERT_STREQ(username, pwd->pw_name);
+  ASSERT_EQ(uid, pwd->pw_uid);
+  ASSERT_EQ(uid, pwd->pw_gid);
   ASSERT_EQ(NULL, pwd->pw_passwd);
 #ifdef __LP64__
   ASSERT_EQ(NULL, pwd->pw_gecos);
 #endif
 
   if (uid_type == TYPE_SYSTEM) {
-    EXPECT_STREQ("/", pwd->pw_dir);
-  } else if (uid_type == TYPE_APP) {
-    EXPECT_STREQ("/data", pwd->pw_dir);
+    ASSERT_STREQ("/", pwd->pw_dir);
+  } else {
+    ASSERT_STREQ("/data", pwd->pw_dir);
   }
-
-  EXPECT_STREQ("/system/bin/sh", pwd->pw_shell);
+  ASSERT_STREQ("/system/bin/sh", pwd->pw_shell);
 }
-#else
-#define CHECK_GETPWNAM_FOR(username, uid, uid_type) \
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
+
+static void check_getpwuid(const char* username, uid_t uid, uid_type_t uid_type) {
+  errno = 0;
+  passwd* pwd = getpwuid(uid);
+  ASSERT_EQ(0, errno);
+  SCOPED_TRACE("getpwuid");
+  check_passwd(pwd, username, uid, uid_type);
+}
+
+static void check_getpwnam(const char* username, uid_t uid, uid_type_t uid_type) {
+  errno = 0;
+  passwd* pwd = getpwnam(username);
+  ASSERT_EQ(0, errno);
+  SCOPED_TRACE("getpwnam");
+  check_passwd(pwd, username, uid, uid_type);
+}
+
+static void check_getpwuid_r(const char* username, uid_t uid, uid_type_t uid_type) {
+  passwd pwd_storage;
+  char buf[512];
+  int result;
+
+  errno = 0;
+  passwd* pwd = NULL;
+  result = getpwuid_r(uid, &pwd_storage, buf, sizeof(buf), &pwd);
+  ASSERT_EQ(0, result);
+  ASSERT_EQ(0, errno);
+  SCOPED_TRACE("getpwuid_r");
+  check_passwd(pwd, username, uid, uid_type);
+}
+
+static void check_getpwnam_r(const char* username, uid_t uid, uid_type_t uid_type) {
+  passwd pwd_storage;
+  char buf[512];
+  int result;
+
+  errno = 0;
+  passwd* pwd = NULL;
+  result = getpwnam_r(username, &pwd_storage, buf, sizeof(buf), &pwd);
+  ASSERT_EQ(0, result);
+  ASSERT_EQ(0, errno);
+  SCOPED_TRACE("getpwnam_r");
+  check_passwd(pwd, username, uid, uid_type);
+}
+
+static void check_get_passwd(const char* username, uid_t uid, uid_type_t uid_type) {
+  check_getpwuid(username, uid, uid_type);
+  check_getpwnam(username, uid, uid_type);
+  check_getpwuid_r(username, uid, uid_type);
+  check_getpwnam_r(username, uid, uid_type);
+}
+
+#else // !defined(__BIONIC__)
+
+static void check_get_passwd(const char* /* username */, uid_t /* uid */, uid_type_t /* uid_type */) {
+  GTEST_LOG_(INFO) << "This test is about uid/username translation for Android, which does nothing on libc other than bionic.\n";
+}
+
 #endif
 
 TEST(getpwnam, system_id_root) {
-  CHECK_GETPWNAM_FOR("root", 0, TYPE_SYSTEM);
+  check_get_passwd("root", 0, TYPE_SYSTEM);
 }
 
 TEST(getpwnam, system_id_system) {
-  CHECK_GETPWNAM_FOR("system", 1000, TYPE_SYSTEM);
+  check_get_passwd("system", 1000, TYPE_SYSTEM);
 }
 
 TEST(getpwnam, app_id_radio) {
-  CHECK_GETPWNAM_FOR("radio", 1001, TYPE_SYSTEM);
+  check_get_passwd("radio", 1001, TYPE_SYSTEM);
 }
 
 TEST(getpwnam, app_id_nobody) {
-  CHECK_GETPWNAM_FOR("nobody", 9999, TYPE_SYSTEM);
-}
-
-TEST(getpwnam, app_id_all_a0) {
-  CHECK_GETPWNAM_FOR("all_a0", 50000, TYPE_APP);
-}
-
-TEST(getpwnam, app_id_u1_a40000) {
-  CHECK_GETPWNAM_FOR("u1_a40000", 150000, TYPE_APP);
+  check_get_passwd("nobody", 9999, TYPE_SYSTEM);
 }
 
 TEST(getpwnam, app_id_u0_a0) {
-  CHECK_GETPWNAM_FOR("u0_a0", 10000, TYPE_APP);
+  check_get_passwd("u0_a0", 10000, TYPE_APP);
 }
 
 TEST(getpwnam, app_id_u0_a1234) {
-  CHECK_GETPWNAM_FOR("u0_a1234", 11234, TYPE_APP);
+  check_get_passwd("u0_a1234", 11234, TYPE_APP);
 }
 
-TEST(getpwnam, app_id_u0_a9999) {
-  CHECK_GETPWNAM_FOR("u0_a9999", 19999, TYPE_APP);
+// Test the difference between uid and shared gid.
+TEST(getpwnam, app_id_u0_a49999) {
+  check_get_passwd("u0_a49999", 59999, TYPE_APP);
 }
 
-// nonsensical, but expected
+TEST(getpwnam, app_id_u0_i1) {
+  check_get_passwd("u0_i1", 99001, TYPE_APP);
+}
+
 TEST(getpwnam, app_id_u1_root) {
-  CHECK_GETPWNAM_FOR("u1_root", 100000, TYPE_SYSTEM);
+  check_get_passwd("u1_root", 100000, TYPE_SYSTEM);
 }
 
 TEST(getpwnam, app_id_u1_radio) {
-  CHECK_GETPWNAM_FOR("u1_radio", 101001, TYPE_SYSTEM);
+  check_get_passwd("u1_radio", 101001, TYPE_SYSTEM);
 }
 
 TEST(getpwnam, app_id_u1_a0) {
-  CHECK_GETPWNAM_FOR("u1_a0", 110000, TYPE_APP);
+  check_get_passwd("u1_a0", 110000, TYPE_APP);
+}
+
+TEST(getpwnam, app_id_u1_a40000) {
+  check_get_passwd("u1_a40000", 150000, TYPE_APP);
 }
 
 TEST(getpwnam, app_id_u1_i0) {
-  CHECK_GETPWNAM_FOR("u1_i0", 199000, TYPE_APP);
+  check_get_passwd("u1_i0", 199000, TYPE_APP);
+}
+
+#if defined(__BIONIC__)
+
+static void check_group(const group* grp, const char* group_name, gid_t gid) {
+  ASSERT_TRUE(grp != NULL);
+  ASSERT_STREQ(group_name, grp->gr_name);
+  ASSERT_EQ(gid, grp->gr_gid);
+  ASSERT_TRUE(grp->gr_mem != NULL);
+  ASSERT_STREQ(group_name, grp->gr_mem[0]);
+  ASSERT_TRUE(grp->gr_mem[1] == NULL);
+}
+
+static void check_getgrgid(const char* group_name, gid_t gid) {
+  errno = 0;
+  group* grp = getgrgid(gid);
+  ASSERT_EQ(0, errno);
+  SCOPED_TRACE("getgrgid");
+  check_group(grp, group_name, gid);
+}
+
+static void check_getgrnam(const char* group_name, gid_t gid) {
+  errno = 0;
+  group* grp = getgrnam(group_name);
+  ASSERT_EQ(0, errno);
+  SCOPED_TRACE("getgrnam");
+  check_group(grp, group_name, gid);
+}
+
+static void check_get_group(const char* group_name, gid_t gid) {
+  check_getgrgid(group_name, gid);
+  check_getgrnam(group_name, gid);
+}
+
+#else // !defined(__BIONIC__)
+
+static void check_get_group(const char* /* group_name */, gid_t /* gid */) {
+  GTEST_LOG_(INFO) << "This test is about gid/group_name translation for Android, which does nothing on libc other than bionic.\n";
+}
+
+#endif
+
+TEST(getgrnam, system_id_root) {
+  check_get_group("root", 0);
+}
+
+TEST(getgrnam, system_id_system) {
+  check_get_group("system", 1000);
+}
+
+TEST(getgrnam, app_id_radio) {
+  check_get_group("radio", 1001);
+}
+
+TEST(getgrnam, app_id_nobody) {
+  check_get_group("nobody", 9999);
+}
+
+TEST(getgrnam, app_id_u0_a0) {
+  check_get_group("u0_a0", 10000);
+}
+
+TEST(getgrnam, app_id_u0_a1234) {
+  check_get_group("u0_a1234", 11234);
+}
+
+TEST(getgrnam, app_id_u0_a9999) {
+  check_get_group("u0_a9999", 19999);
+}
+
+// Test the difference between uid and shared gid.
+TEST(getgrnam, app_id_all_a9999) {
+  check_get_group("all_a9999", 59999);
+}
+
+TEST(getgrnam, app_id_u0_i1) {
+  check_get_group("u0_i1", 99001);
+}
+
+TEST(getgrnam, app_id_u1_root) {
+  check_get_group("u1_root", 100000);
+}
+
+TEST(getgrnam, app_id_u1_radio) {
+  check_get_group("u1_radio", 101001);
+}
+
+TEST(getgrnam, app_id_u1_a0) {
+  check_get_group("u1_a0", 110000);
+}
+
+TEST(getgrnam, app_id_u1_a40000) {
+  check_get_group("u1_a40000", 150000);
+}
+
+TEST(getgrnam, app_id_u1_i0) {
+  check_get_group("u1_i0", 199000);
 }
diff --git a/tests/sys_mman_test.cpp b/tests/sys_mman_test.cpp
index 75ccfa3..b0e40fd 100644
--- a/tests/sys_mman_test.cpp
+++ b/tests/sys_mman_test.cpp
@@ -172,3 +172,46 @@
   ASSERT_STREQ(NEWPAGE2_MSG, buf);
   ASSERT_STREQ(END_MSG, buf+pagesize-sizeof(END_MSG));
 }
+
+TEST(sys_mman, posix_madvise) {
+  TemporaryFile tempfile;
+  size_t pagesize = sysconf(_SC_PAGESIZE);
+  char buf[pagesize];
+
+  // Prepare environment.
+  ASSERT_EQ(static_cast<ssize_t>(pagesize), write(tempfile.fd, buf, pagesize));
+  void* map = mmap(NULL, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, tempfile.fd, 0);
+  ASSERT_NE(MAP_FAILED, map);
+
+  // Verify different options of posix_madvise.
+  ASSERT_EQ(0, posix_madvise(map, pagesize, POSIX_MADV_NORMAL));
+  ASSERT_EQ(0, posix_madvise(map, pagesize, POSIX_MADV_SEQUENTIAL));
+  ASSERT_EQ(0, posix_madvise(map, pagesize, POSIX_MADV_RANDOM));
+  ASSERT_EQ(0, posix_madvise(map, pagesize, POSIX_MADV_WILLNEED));
+
+  ASSERT_EQ(0, munmap(map, pagesize));
+}
+
+// Verify that memory can still access after posix_madvise(POSIX_MADV_DONTNEED).
+// We should test on MAP_ANONYMOUS memory to verify whether the memory is discarded,
+// because the content of non MAP_ANONYMOUS memory can be reread from file.
+TEST(sys_mman, posix_madvise_POSIX_MADV_DONTNEED) {
+  size_t pagesize = sysconf(_SC_PAGESIZE);
+
+  void* map = mmap(NULL, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  ASSERT_NE(MAP_FAILED, map);
+
+  int* int_ptr = reinterpret_cast<int*>(map);
+  for (int i = 0; i < static_cast<int>(pagesize / sizeof(int)); ++i) {
+    *int_ptr++ = i;
+  }
+
+  ASSERT_EQ(0, posix_madvise(map, pagesize, POSIX_MADV_DONTNEED));
+
+  int_ptr = reinterpret_cast<int*>(map);
+  for (int i = 0; i < static_cast<int>(pagesize / sizeof(int)); ++i) {
+    ASSERT_EQ(i, *int_ptr++);
+  }
+
+  ASSERT_EQ(0, munmap(map, pagesize));
+}
diff --git a/tests/sys_personality_test.cpp b/tests/sys_personality_test.cpp
new file mode 100644
index 0000000..55a023d
--- /dev/null
+++ b/tests/sys_personality_test.cpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <sys/personality.h>
+
+TEST(sys_personality, current_persona) {
+  int persona = personality(0xffffffff);
+#if defined(__BIONIC__)
+#if defined(__LP64__)
+  ASSERT_EQ(PER_LINUX, persona);
+#else
+  ASSERT_EQ(PER_LINUX32, persona);
+#endif
+#else
+  // GLIBC does not set persona prior process startup - it is always PER_LINUX;
+  ASSERT_EQ(PER_LINUX, persona);
+#endif
+}
diff --git a/tests/sys_resource_test.cpp b/tests/sys_resource_test.cpp
index d6d99a0..8cefc65 100644
--- a/tests/sys_resource_test.cpp
+++ b/tests/sys_resource_test.cpp
@@ -14,22 +14,11 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
-
 #include <sys/resource.h>
 
-#if defined(__GLIBC__)
-/* The host glibc we're currently building with doesn't have prlimit64 yet. */
-static int prlimit64(pid_t, int resource, const struct rlimit64* new_limit, struct rlimit64* old_limit) {
-  if (new_limit != NULL) {
-    return setrlimit64(resource, new_limit);
-  } else {
-    return getrlimit64(resource, old_limit);
-  }
-}
-#endif
+#include <gtest/gtest.h>
 
-TEST(sys_resource, smoke) {
+TEST(sys_resource, rlimit_struct_size) {
 #if defined(__LP64__) || defined(__GLIBC__)
   ASSERT_EQ(sizeof(rlimit), sizeof(rlimit64));
   ASSERT_EQ(8U, sizeof(rlim_t));
@@ -37,51 +26,75 @@
   ASSERT_NE(sizeof(rlimit), sizeof(rlimit64));
   ASSERT_EQ(4U, sizeof(rlim_t));
 #endif
+}
 
-  // Read with getrlimit, getrlimit64, and prlimit64.
-  // (prlimit is prlimit64 on LP64 and unimplemented on 32-bit.)
-  rlimit l32;
-  rlimit64 l64;
-  rlimit64 pr_l64;
-  ASSERT_EQ(0, getrlimit(RLIMIT_CORE, &l32));
-  ASSERT_EQ(0, getrlimit64(RLIMIT_CORE, &l64));
-  ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, NULL, &pr_l64));
-  ASSERT_EQ(l64.rlim_cur, l32.rlim_cur);
-  ASSERT_EQ(l64.rlim_cur, pr_l64.rlim_cur);
-  ASSERT_EQ(l64.rlim_max, pr_l64.rlim_max);
-  if (l64.rlim_max == RLIM64_INFINITY) {
-    ASSERT_EQ(RLIM_INFINITY, l32.rlim_max);
-  } else {
-    ASSERT_EQ(l64.rlim_max, l32.rlim_max);
+class SysResourceTest : public ::testing::Test {
+ protected:
+  virtual void SetUp() {
+    ASSERT_EQ(0, getrlimit(RLIMIT_CORE, &l32_));
+    ASSERT_EQ(0, getrlimit64(RLIMIT_CORE, &l64_));
+    ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, NULL, &pr_l64_));
   }
 
-  // Write with setrlimit and read back with everything.
-  l32.rlim_cur = 123;
-  ASSERT_EQ(0, setrlimit(RLIMIT_CORE, &l32));
-  ASSERT_EQ(0, getrlimit(RLIMIT_CORE, &l32));
-  ASSERT_EQ(0, getrlimit64(RLIMIT_CORE, &l64));
-  ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, NULL, &pr_l64));
-  ASSERT_EQ(123U, l32.rlim_cur);
-  ASSERT_EQ(l64.rlim_cur, l32.rlim_cur);
-  ASSERT_EQ(l64.rlim_cur, pr_l64.rlim_cur);
+  void CheckResourceLimits();
 
-  // Write with setrlimit64 and read back with everything.
-  l64.rlim_cur = 456;
-  ASSERT_EQ(0, setrlimit64(RLIMIT_CORE, &l64));
-  ASSERT_EQ(0, getrlimit(RLIMIT_CORE, &l32));
-  ASSERT_EQ(0, getrlimit64(RLIMIT_CORE, &l64));
-  ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, NULL, &pr_l64));
-  ASSERT_EQ(456U, l32.rlim_cur);
-  ASSERT_EQ(l64.rlim_cur, l32.rlim_cur);
-  ASSERT_EQ(l64.rlim_cur, pr_l64.rlim_cur);
+ protected:
+  rlimit l32_;
+  rlimit64 l64_;
+  rlimit64 pr_l64_;
+};
 
-  // Write with prlimit64 and read back with everything.
-  l64.rlim_cur = 789;
-  ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, &l64, NULL));
-  ASSERT_EQ(0, getrlimit(RLIMIT_CORE, &l32));
-  ASSERT_EQ(0, getrlimit64(RLIMIT_CORE, &l64));
-  ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, NULL, &pr_l64));
-  ASSERT_EQ(789U, l32.rlim_cur);
-  ASSERT_EQ(l64.rlim_cur, l32.rlim_cur);
-  ASSERT_EQ(l64.rlim_cur, pr_l64.rlim_cur);
+void SysResourceTest::CheckResourceLimits() {
+  ASSERT_EQ(0, getrlimit(RLIMIT_CORE, &l32_));
+  ASSERT_EQ(0, getrlimit64(RLIMIT_CORE, &l64_));
+  ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, NULL, &pr_l64_));
+  ASSERT_EQ(l64_.rlim_cur, pr_l64_.rlim_cur);
+  if (l64_.rlim_cur == RLIM64_INFINITY) {
+    ASSERT_EQ(RLIM_INFINITY, l32_.rlim_cur);
+  } else {
+    ASSERT_EQ(l64_.rlim_cur, l32_.rlim_cur);
+  }
+
+  ASSERT_EQ(l64_.rlim_max, pr_l64_.rlim_max);
+  if (l64_.rlim_max == RLIM64_INFINITY) {
+    ASSERT_EQ(RLIM_INFINITY, l32_.rlim_max);
+  } else {
+    ASSERT_EQ(l64_.rlim_max, l32_.rlim_max);
+  }
+}
+
+// Force rlim_max to be bigger than a constant so we can continue following test.
+// Change resource limit setting with "ulimit -Hc" in the shell if this test fails.
+TEST_F(SysResourceTest, RLIMIT_CORE_rlim_max_not_zero) {
+  ASSERT_TRUE(l32_.rlim_max == RLIM_INFINITY || l32_.rlim_max >= 456U) <<
+    "RLIMIT_CORE rlim_max = " << l32_.rlim_max;
+}
+
+TEST_F(SysResourceTest, get_resource_limit_equal) {
+  CheckResourceLimits();
+}
+
+TEST_F(SysResourceTest, setrlimit) {
+  l32_.rlim_cur = 123U;
+  ASSERT_EQ(0, setrlimit(RLIMIT_CORE, &l32_));
+  CheckResourceLimits();
+  ASSERT_EQ(123U, l32_.rlim_cur);
+}
+
+TEST_F(SysResourceTest, setrlimit64) {
+  l64_.rlim_cur = 456U;
+  ASSERT_EQ(0, setrlimit64(RLIMIT_CORE, &l64_));
+  CheckResourceLimits();
+  ASSERT_EQ(456U, l64_.rlim_cur);
+}
+
+TEST_F(SysResourceTest, prlimit64) {
+  pr_l64_.rlim_cur = pr_l64_.rlim_max;
+  ASSERT_EQ(0, prlimit64(0, RLIMIT_CORE, &pr_l64_, NULL));
+  CheckResourceLimits();
+  ASSERT_EQ(pr_l64_.rlim_max, pr_l64_.rlim_cur);
+}
+
+TEST_F(SysResourceTest, prlimit) {
+  // prlimit is prlimit64 on LP64 and unimplemented on 32-bit. So we only test prlimit64.
 }
diff --git a/tests/sys_socket_test.cpp b/tests/sys_socket_test.cpp
index 0bde024..8f5afac 100644
--- a/tests/sys_socket_test.cpp
+++ b/tests/sys_socket_test.cpp
@@ -22,28 +22,16 @@
 #include <sys/un.h>
 #include <fcntl.h>
 
-#if defined(__BIONIC__)
-  #define ACCEPT4_SUPPORTED 1
-  #define RECVMMSG_SUPPORTED 1
-  #define SENDMMSG_SUPPORTED 1
-#elif defined(__GLIBC_PREREQ)
-  #if __GLIBC_PREREQ(2, 9)
-    #define ACCEPT4_SUPPORTED 1
-  #endif
-  #if __GLIBC_PREREQ(2, 12)
-    #define RECVMMSG_SUPPORTED 1
-  #endif
-  #if __GLIBC_PREREQ(2, 14)
-    #define SENDMMSG_SUPPORTED 1
-  #endif
-#endif
-
-#if defined(ACCEPT4_SUPPORTED) || defined(RECVMMSG_SUPPORTED) || defined(SENDMMSG_SUPPORTED)
-
-#define SOCK_PATH "test"
+struct ConnectData {
+  bool (*callback_fn)(int);
+  const char* sock_path;
+  ConnectData(bool (*callback_func)(int), const char* socket_path)
+   : callback_fn(callback_func), sock_path(socket_path) {}
+};
 
 static void* ConnectFn(void* data) {
-  bool (*callback_fn)(int) = reinterpret_cast<bool (*)(int)>(data);
+  ConnectData* pdata = reinterpret_cast<ConnectData*>(data);
+  bool (*callback_fn)(int) = pdata->callback_fn;
   void* return_value = NULL;
 
   int fd = socket(PF_UNIX, SOCK_SEQPACKET | SOCK_CLOEXEC | SOCK_NONBLOCK, 0);
@@ -56,7 +44,7 @@
   memset(&addr, 0, sizeof(addr));
   addr.sun_family = AF_UNIX;
   addr.sun_path[0] = '\0';
-  strcpy(addr.sun_path + 1, SOCK_PATH);
+  strcpy(addr.sun_path + 1, pdata->sock_path);
 
   if (connect(fd, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr)) < 0) {
     GTEST_LOG_(ERROR) << "connect call failed: " << strerror(errno);
@@ -72,7 +60,7 @@
 }
 
 static void RunTest(void (*test_fn)(struct sockaddr_un*, int),
-                    bool (*callback_fn)(int fd)) {
+                    bool (*callback_fn)(int fd), const char* sock_path) {
   int fd = socket(PF_UNIX, SOCK_SEQPACKET, 0);
   ASSERT_NE(fd, -1) << strerror(errno);
 
@@ -80,14 +68,16 @@
   memset(&addr, 0, sizeof(addr));
   addr.sun_family = AF_UNIX;
   addr.sun_path[0] = '\0';
-  strcpy(addr.sun_path + 1, SOCK_PATH);
+  strcpy(addr.sun_path + 1, sock_path);
 
   ASSERT_NE(-1, bind(fd, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr))) << strerror(errno);
 
   ASSERT_NE(-1, listen(fd, 1)) << strerror(errno);
 
+  ConnectData connect_data(callback_fn, sock_path);
+
   pthread_t thread;
-  ASSERT_EQ(0, pthread_create(&thread, NULL, ConnectFn, reinterpret_cast<void*>(callback_fn)));
+  ASSERT_EQ(0, pthread_create(&thread, NULL, ConnectFn, &connect_data));
 
   fd_set read_set;
   FD_ZERO(&read_set);
@@ -105,18 +95,12 @@
 
   close(fd);
 }
-#endif
 
 TEST(sys_socket, accept4_error) {
-#if defined(ACCEPT4_SUPPORTED)
   ASSERT_EQ(-1, accept4(-1, NULL, NULL, 0));
   ASSERT_EQ(EBADF, errno);
-#else
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
 }
 
-#if defined(ACCEPT4_SUPPORTED)
 static void TestAccept4(struct sockaddr_un* addr, int fd) {
   socklen_t len = sizeof(*addr);
   int fd_acc = accept4(fd, reinterpret_cast<struct sockaddr*>(addr), &len, SOCK_CLOEXEC);
@@ -127,17 +111,11 @@
 
   close(fd_acc);
 }
-#endif
 
 TEST(sys_socket, accept4_smoke) {
-#if defined(ACCEPT4_SUPPORTED)
-  RunTest(TestAccept4, NULL);
-#else
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
+  RunTest(TestAccept4, NULL, "test_accept");
 }
 
-#if defined(RECVMMSG_SUPPORTED)
 const char* g_RecvMsgs[] = {
   "RECVMMSG_ONE",
   "RECVMMSG_TWO",
@@ -188,26 +166,16 @@
 
   close(fd_acc);
 }
-#endif
 
 TEST(sys_socket, recvmmsg_smoke) {
-#if defined(RECVMMSG_SUPPORTED)
-  RunTest(TestRecvMMsg, SendMultiple);
-#else
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
+  RunTest(TestRecvMMsg, SendMultiple, "test_revmmsg");
 }
 
 TEST(sys_socket, recvmmsg_error) {
-#if defined(RECVMMSG_SUPPORTED)
   ASSERT_EQ(-1, recvmmsg(-1, NULL, 0, 0, NULL));
   ASSERT_EQ(EBADF, errno);
-#else
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
 }
 
-#if defined(SENDMMSG_SUPPORTED)
 const char* g_SendMsgs[] = {
   "MSG_ONE",
   "MSG_TWO",
@@ -256,21 +224,12 @@
 
   close(fd_acc);
 }
-#endif
 
 TEST(sys_socket, sendmmsg_smoke) {
-#if defined(SENDMMSG_SUPPORTED)
-  RunTest(TestSendMMsg, SendMMsg);
-#else
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
+  RunTest(TestSendMMsg, SendMMsg, "test_sendmmsg");
 }
 
 TEST(sys_socket, sendmmsg_error) {
-#if defined(SENDMMSG_SUPPORTED)
   ASSERT_EQ(-1, sendmmsg(-1, NULL, 0, 0));
   ASSERT_EQ(EBADF, errno);
-#else
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
 }
diff --git a/tests/sys_stat_test.cpp b/tests/sys_stat_test.cpp
index 64049ab..7c387ba 100644
--- a/tests/sys_stat_test.cpp
+++ b/tests/sys_stat_test.cpp
@@ -55,6 +55,18 @@
   ASSERT_EQ(EBADF, errno);
 }
 
+TEST(sys_stat, mkfifo_failure) {
+  errno = 0;
+  ASSERT_EQ(-1, mkfifo("/", 0666));
+  ASSERT_EQ(EEXIST, errno);
+}
+
+TEST(sys_stat, mkfifoat_failure) {
+  errno = 0;
+  ASSERT_EQ(-1, mkfifoat(-2, "x", 0666));
+  ASSERT_EQ(EBADF, errno);
+}
+
 TEST(sys_stat, mkfifo) {
   if (getuid() == 0) {
     // Racy but probably sufficient way to get a suitable filename.
@@ -70,6 +82,7 @@
     ASSERT_TRUE(S_ISFIFO(sb.st_mode));
     unlink(path.c_str());
   } else {
+    // SELinux policy forbids us from creating FIFOs. http://b/17646702.
     GTEST_LOG_(INFO) << "This test only performs a test when run as root.";
   }
 }
@@ -82,3 +95,193 @@
   ASSERT_EQ(0, fstat64(fd, &sb));
   close(fd);
 }
+
+TEST(sys_stat, fchmodat_EFAULT_file) {
+  ASSERT_EQ(-1, fchmodat(AT_FDCWD, (char *) 0x1, 0751, 0));
+  ASSERT_EQ(EFAULT, errno);
+}
+
+TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_EFAULT_file) {
+  ASSERT_EQ(-1, fchmodat(AT_FDCWD, (char *) 0x1, 0751, AT_SYMLINK_NOFOLLOW));
+#if defined(__BIONIC__)
+  ASSERT_EQ(EFAULT, errno);
+#else
+  // glibc 2.19 does not implement AT_SYMLINK_NOFOLLOW and always
+  // returns ENOTSUP
+  ASSERT_EQ(ENOTSUP, errno);
+#endif
+}
+
+TEST(sys_stat, fchmodat_bad_flags) {
+  ASSERT_EQ(-1, fchmodat(AT_FDCWD, "/blah", 0751, ~AT_SYMLINK_NOFOLLOW));
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(sys_stat, fchmodat_bad_flags_ALL) {
+  ASSERT_EQ(-1, fchmodat(AT_FDCWD, "/blah", 0751, ~0));
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(sys_stat, fchmodat_nonexistant_file) {
+  ASSERT_EQ(-1, fchmodat(AT_FDCWD, "/blah", 0751, 0));
+  ASSERT_EQ(ENOENT, errno);
+}
+
+TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_nonexistant_file) {
+  ASSERT_EQ(-1, fchmodat(AT_FDCWD, "/blah", 0751, AT_SYMLINK_NOFOLLOW));
+#if defined(__BIONIC__)
+  ASSERT_EQ(ENOENT, errno);
+#else
+  // glibc 2.19 does not implement AT_SYMLINK_NOFOLLOW and always
+  // returns ENOTSUP
+  ASSERT_EQ(ENOTSUP, errno);
+#endif
+}
+
+static void AssertFileModeEquals(mode_t expected_mode, const char* filename) {
+  struct stat sb;
+  ASSERT_EQ(0, stat(filename, &sb));
+  mode_t mask = S_IRWXU | S_IRWXG | S_IRWXO;
+  ASSERT_EQ(expected_mode & mask, static_cast<mode_t>(sb.st_mode) & mask);
+}
+
+TEST(sys_stat, fchmodat_file) {
+  TemporaryFile tf;
+
+  ASSERT_EQ(0, fchmodat(AT_FDCWD, tf.filename, 0751, 0));
+  AssertFileModeEquals(0751, tf.filename);
+}
+
+TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_file) {
+  TemporaryFile tf;
+  errno = 0;
+  int result = fchmodat(AT_FDCWD, tf.filename, 0751, AT_SYMLINK_NOFOLLOW);
+
+#if defined(__BIONIC__)
+  ASSERT_EQ(0, result);
+  ASSERT_EQ(0, errno);
+  AssertFileModeEquals(0751, tf.filename);
+#else
+  // glibc 2.19 does not implement AT_SYMLINK_NOFOLLOW and always
+  // returns ENOTSUP
+  ASSERT_EQ(-1, result);
+  ASSERT_EQ(ENOTSUP, errno);
+#endif
+}
+
+TEST(sys_stat, fchmodat_symlink) {
+  TemporaryFile tf;
+  char linkname[255];
+
+  snprintf(linkname, sizeof(linkname), "%s.link", tf.filename);
+
+  ASSERT_EQ(0, symlink(tf.filename, linkname));
+  ASSERT_EQ(0, fchmodat(AT_FDCWD, linkname, 0751, 0));
+  AssertFileModeEquals(0751, tf.filename);
+  unlink(linkname);
+}
+
+TEST(sys_stat, fchmodat_dangling_symlink) {
+  TemporaryFile tf;
+  char linkname[255];
+  char target[255];
+
+  snprintf(linkname, sizeof(linkname), "%s.link", tf.filename);
+  snprintf(target, sizeof(target), "%s.doesnotexist", tf.filename);
+
+  ASSERT_EQ(0, symlink(target, linkname));
+  ASSERT_EQ(-1, fchmodat(AT_FDCWD, linkname, 0751, 0));
+  ASSERT_EQ(ENOENT, errno);
+  unlink(linkname);
+}
+
+static void AssertSymlinkModeEquals(mode_t expected_mode, const char* linkname) {
+  struct stat sb;
+  ASSERT_EQ(0, fstatat(AT_FDCWD, linkname, &sb, AT_SYMLINK_NOFOLLOW));
+  mode_t mask = S_IRWXU | S_IRWXG | S_IRWXO;
+  ASSERT_EQ(expected_mode & mask, static_cast<mode_t>(sb.st_mode) & mask);
+}
+
+TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_with_symlink) {
+  TemporaryFile tf;
+  struct stat tf_sb;
+  ASSERT_EQ(0, stat(tf.filename, &tf_sb));
+
+  char linkname[255];
+  snprintf(linkname, sizeof(linkname), "%s.link", tf.filename);
+
+  ASSERT_EQ(0, symlink(tf.filename, linkname));
+  int result = fchmodat(AT_FDCWD, linkname, 0751, AT_SYMLINK_NOFOLLOW);
+  // It depends on the kernel whether chmod operation on symlink is allowed.
+  if (result == 0) {
+    AssertSymlinkModeEquals(0751, linkname);
+  } else {
+    ASSERT_EQ(-1, result);
+    ASSERT_EQ(ENOTSUP, errno);
+  }
+
+  // Target file mode shouldn't be modified.
+  AssertFileModeEquals(tf_sb.st_mode, tf.filename);
+  unlink(linkname);
+}
+
+TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_with_dangling_symlink) {
+  TemporaryFile tf;
+
+  char linkname[255];
+  char target[255];
+  snprintf(linkname, sizeof(linkname), "%s.link", tf.filename);
+  snprintf(target, sizeof(target), "%s.doesnotexist", tf.filename);
+
+  ASSERT_EQ(0, symlink(target, linkname));
+  int result = fchmodat(AT_FDCWD, linkname, 0751, AT_SYMLINK_NOFOLLOW);
+  // It depends on the kernel whether chmod operation on symlink is allowed.
+  if (result == 0) {
+    AssertSymlinkModeEquals(0751, linkname);
+  } else {
+    ASSERT_EQ(-1, result);
+    ASSERT_EQ(ENOTSUP, errno);
+  }
+
+  unlink(linkname);
+}
+
+TEST(sys_stat, faccessat_EINVAL) {
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", F_OK, ~AT_SYMLINK_NOFOLLOW));
+  ASSERT_EQ(EINVAL, errno);
+#if defined(__BIONIC__)
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", ~(R_OK | W_OK | X_OK), 0));
+  ASSERT_EQ(EINVAL, errno);
+#else
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", ~(R_OK | W_OK | X_OK), AT_SYMLINK_NOFOLLOW));
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", ~(R_OK | W_OK | X_OK), 0));
+  ASSERT_EQ(EINVAL, errno);
+#endif
+}
+
+TEST(sys_stat, faccessat_AT_SYMLINK_NOFOLLOW_EINVAL) {
+#if defined(__BIONIC__)
+  // Android doesn't support AT_SYMLINK_NOFOLLOW
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", F_OK, AT_SYMLINK_NOFOLLOW));
+  ASSERT_EQ(EINVAL, errno);
+#else
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", F_OK, AT_SYMLINK_NOFOLLOW));
+#endif
+}
+
+TEST(sys_stat, faccessat_dev_null) {
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", F_OK, 0));
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", R_OK, 0));
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", W_OK, 0));
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", R_OK|W_OK, 0));
+}
+
+TEST(sys_stat, faccessat_nonexistant) {
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/blah", F_OK, AT_SYMLINK_NOFOLLOW));
+#if defined(__BIONIC__)
+  // Android doesn't support AT_SYMLINK_NOFOLLOW
+  ASSERT_EQ(EINVAL, errno);
+#else
+  ASSERT_EQ(ENOENT, errno);
+#endif
+}
diff --git a/tests/sys_statvfs_test.cpp b/tests/sys_statvfs_test.cpp
index 6b19e13..bff9e20 100644
--- a/tests/sys_statvfs_test.cpp
+++ b/tests/sys_statvfs_test.cpp
@@ -30,6 +30,11 @@
   EXPECT_EQ(0U, sb.f_ffree);
   EXPECT_EQ(0U, sb.f_fsid);
   EXPECT_EQ(255U, sb.f_namemax);
+
+  // The kernel sets a private bit to indicate that f_flags is valid.
+  // This flag is not supposed to be exposed to libc clients.
+  static const uint32_t ST_VALID = 0x0020;
+  EXPECT_TRUE((sb.f_flag & ST_VALID) == 0) << sb.f_flag;
 }
 
 TEST(sys_statvfs, statvfs) {
@@ -51,6 +56,7 @@
   close(fd);
   Check(sb);
 }
+
 TEST(sys_statvfs, fstatvfs64) {
   struct statvfs64 sb;
   int fd = open("/proc", O_RDONLY);
diff --git a/tests/sys_sysinfo_test.cpp b/tests/sys_sysinfo_test.cpp
new file mode 100644
index 0000000..b00e13f
--- /dev/null
+++ b/tests/sys_sysinfo_test.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <sys/sysinfo.h>
+
+TEST(sys_sysinfo, smoke) {
+  int nprocessor = get_nprocs();
+  ASSERT_GT(nprocessor, 0);
+
+  int nprocessor_conf = get_nprocs_conf();
+  ASSERT_GE(nprocessor_conf, nprocessor);
+
+  long avail_phys_pages = get_avphys_pages();
+  ASSERT_GT(avail_phys_pages, 0);
+
+  long phys_pages = get_phys_pages();
+  ASSERT_GE(phys_pages, avail_phys_pages);
+}
diff --git a/tests/sys_vfs_test.cpp b/tests/sys_vfs_test.cpp
index 4b05660..a521967 100644
--- a/tests/sys_vfs_test.cpp
+++ b/tests/sys_vfs_test.cpp
@@ -31,6 +31,11 @@
   EXPECT_EQ(0, sb.f_fsid.__val[0]);
   EXPECT_EQ(0, sb.f_fsid.__val[1]);
   EXPECT_EQ(255, static_cast<int>(sb.f_namelen));
+
+  // The kernel sets a private bit to indicate that f_flags is valid.
+  // This flag is not supposed to be exposed to libc clients.
+  static const uint32_t ST_VALID = 0x0020;
+  EXPECT_TRUE((sb.f_flags & ST_VALID) == 0) << sb.f_flags;
 }
 
 TEST(sys_vfs, statfs) {
@@ -52,6 +57,7 @@
   close(fd);
   Check(sb);
 }
+
 TEST(sys_vfs, fstatfs64) {
   struct statfs64 sb;
   int fd = open("/proc", O_RDONLY);
diff --git a/tests/system_properties_test.cpp b/tests/system_properties_test.cpp
index bfd5854..c7bfee6 100644
--- a/tests/system_properties_test.cpp
+++ b/tests/system_properties_test.cpp
@@ -15,8 +15,10 @@
  */
 
 #include <gtest/gtest.h>
-#include <sys/wait.h>
+#include "BionicDeathTest.h"
+
 #include <errno.h>
+#include <sys/wait.h>
 #include <unistd.h>
 #include <string>
 
@@ -398,9 +400,10 @@
          WTERMSIG(exit_status) == SIGABRT);
 }
 
-TEST(properties_DeathTest, read_only) {
+class properties_DeathTest : public BionicDeathTest {};
+
+TEST_F(properties_DeathTest, read_only) {
 #if defined(__BIONIC__)
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
 
   // This test only makes sense if we're talking to the real system property service.
   struct stat sb;
diff --git a/tests/time_test.cpp b/tests/time_test.cpp
index 9880d2c..c37df36 100644
--- a/tests/time_test.cpp
+++ b/tests/time_test.cpp
@@ -17,16 +17,19 @@
 #include <time.h>
 
 #include <errno.h>
-#include <features.h>
 #include <gtest/gtest.h>
 #include <pthread.h>
 #include <signal.h>
 #include <sys/syscall.h>
 #include <sys/types.h>
 #include <sys/wait.h>
+#include <unistd.h>
+#include <atomic>
 
 #include "ScopedSignalHandler.h"
 
+#include "private/bionic_constants.h"
+
 TEST(time, gmtime) {
   time_t t = 0;
   tm* broken_down = gmtime(&t);
@@ -70,6 +73,30 @@
   ASSERT_EQ(0, pthread_join(t, &result));
 }
 
+TEST(time, mktime_empty_TZ) {
+  // tzcode used to have a bug where it didn't reinitialize some internal state.
+
+  // Choose a time where DST is set.
+  struct tm t;
+  memset(&t, 0, sizeof(tm));
+  t.tm_year = 1980 - 1900;
+  t.tm_mon = 6;
+  t.tm_mday = 2;
+
+  setenv("TZ", "America/Los_Angeles", 1);
+  tzset();
+  ASSERT_EQ(static_cast<time_t>(331372800U), mktime(&t));
+
+  memset(&t, 0, sizeof(tm));
+  t.tm_year = 1980 - 1900;
+  t.tm_mon = 6;
+  t.tm_mday = 2;
+
+  setenv("TZ", "", 1); // Implies UTC.
+  tzset();
+  ASSERT_EQ(static_cast<time_t>(331344000U), mktime(&t));
+}
+
 TEST(time, mktime_10310929) {
   struct tm t;
   memset(&t, 0, sizeof(tm));
@@ -171,7 +198,7 @@
   ASSERT_EQ(0, timer_delete(timer_id));
 }
 
-static int timer_create_SIGEV_SIGNAL_signal_handler_invocation_count = 0;
+static int timer_create_SIGEV_SIGNAL_signal_handler_invocation_count;
 static void timer_create_SIGEV_SIGNAL_signal_handler(int signal_number) {
   ++timer_create_SIGEV_SIGNAL_signal_handler_invocation_count;
   ASSERT_EQ(SIGUSR1, signal_number);
@@ -186,6 +213,7 @@
   timer_t timer_id;
   ASSERT_EQ(0, timer_create(CLOCK_MONOTONIC, &se, &timer_id));
 
+  timer_create_SIGEV_SIGNAL_signal_handler_invocation_count = 0;
   ScopedSignalHandler ssh(SIGUSR1, timer_create_SIGEV_SIGNAL_signal_handler);
 
   ASSERT_EQ(0, timer_create_SIGEV_SIGNAL_signal_handler_invocation_count);
@@ -202,25 +230,26 @@
 }
 
 struct Counter {
-  volatile int value;
+ private:
+  std::atomic<int> value;
   timer_t timer_id;
   sigevent_t se;
   bool timer_valid;
 
-  Counter(void (*fn)(sigval_t)) : value(0), timer_valid(false) {
-    memset(&se, 0, sizeof(se));
-    se.sigev_notify = SIGEV_THREAD;
-    se.sigev_notify_function = fn;
-    se.sigev_value.sival_ptr = this;
-    Create();
-  }
-
   void Create() {
     ASSERT_FALSE(timer_valid);
     ASSERT_EQ(0, timer_create(CLOCK_REALTIME, &se, &timer_id));
     timer_valid = true;
   }
 
+ public:
+  Counter(void (*fn)(sigval_t)) : value(0), timer_valid(false) {
+    memset(&se, 0, sizeof(se));
+    se.sigev_notify = SIGEV_THREAD;
+    se.sigev_notify_function = fn;
+    se.sigev_value.sival_ptr = this;
+    Create();
+  }
   void DeleteTimer() {
     ASSERT_TRUE(timer_valid);
     ASSERT_EQ(0, timer_delete(timer_id));
@@ -233,12 +262,16 @@
     }
   }
 
+  int Value() const {
+    return value;
+  }
+
   void SetTime(time_t value_s, time_t value_ns, time_t interval_s, time_t interval_ns) {
     ::SetTime(timer_id, value_s, value_ns, interval_s, interval_ns);
   }
 
   bool ValueUpdated() {
-    volatile int current_value = value;
+    int current_value = value;
     time_t start = time(NULL);
     while (current_value == value && (time(NULL) - start) < 5) {
     }
@@ -261,30 +294,29 @@
 
 TEST(time, timer_settime_0) {
   Counter counter(Counter::CountAndDisarmNotifyFunction);
-  ASSERT_TRUE(counter.timer_valid);
-
-  ASSERT_EQ(0, counter.value);
+  ASSERT_EQ(0, counter.Value());
 
   counter.SetTime(0, 1, 1, 0);
   usleep(500000);
 
   // The count should just be 1 because we disarmed the timer the first time it fired.
-  ASSERT_EQ(1, counter.value);
+  ASSERT_EQ(1, counter.Value());
 }
 
 TEST(time, timer_settime_repeats) {
   Counter counter(Counter::CountNotifyFunction);
-  ASSERT_TRUE(counter.timer_valid);
-
-  ASSERT_EQ(0, counter.value);
+  ASSERT_EQ(0, counter.Value());
 
   counter.SetTime(0, 1, 0, 10);
   ASSERT_TRUE(counter.ValueUpdated());
   ASSERT_TRUE(counter.ValueUpdated());
   ASSERT_TRUE(counter.ValueUpdated());
+  counter.DeleteTimer();
+  // Add a sleep as other threads may be calling the callback function when the timer is deleted.
+  usleep(500000);
 }
 
-static int timer_create_NULL_signal_handler_invocation_count = 0;
+static int timer_create_NULL_signal_handler_invocation_count;
 static void timer_create_NULL_signal_handler(int signal_number) {
   ++timer_create_NULL_signal_handler_invocation_count;
   ASSERT_EQ(SIGALRM, signal_number);
@@ -295,6 +327,7 @@
   timer_t timer_id;
   ASSERT_EQ(0, timer_create(CLOCK_MONOTONIC, NULL, &timer_id));
 
+  timer_create_NULL_signal_handler_invocation_count = 0;
   ScopedSignalHandler ssh(SIGALRM, timer_create_NULL_signal_handler);
 
   ASSERT_EQ(0, timer_create_NULL_signal_handler_invocation_count);
@@ -341,22 +374,59 @@
 
 TEST(time, timer_create_multiple) {
   Counter counter1(Counter::CountNotifyFunction);
-  ASSERT_TRUE(counter1.timer_valid);
   Counter counter2(Counter::CountNotifyFunction);
-  ASSERT_TRUE(counter2.timer_valid);
   Counter counter3(Counter::CountNotifyFunction);
-  ASSERT_TRUE(counter3.timer_valid);
 
-  ASSERT_EQ(0, counter1.value);
-  ASSERT_EQ(0, counter2.value);
-  ASSERT_EQ(0, counter3.value);
+  ASSERT_EQ(0, counter1.Value());
+  ASSERT_EQ(0, counter2.Value());
+  ASSERT_EQ(0, counter3.Value());
 
   counter2.SetTime(0, 1, 0, 0);
   usleep(500000);
 
-  EXPECT_EQ(0, counter1.value);
-  EXPECT_EQ(1, counter2.value);
-  EXPECT_EQ(0, counter3.value);
+  EXPECT_EQ(0, counter1.Value());
+  EXPECT_EQ(1, counter2.Value());
+  EXPECT_EQ(0, counter3.Value());
+}
+
+// Test to verify that disarming a repeatable timer disables the callbacks.
+TEST(time, timer_disarm_terminates) {
+  Counter counter(Counter::CountNotifyFunction);
+  ASSERT_EQ(0, counter.Value());
+
+  counter.SetTime(0, 1, 0, 1);
+  ASSERT_TRUE(counter.ValueUpdated());
+  ASSERT_TRUE(counter.ValueUpdated());
+  ASSERT_TRUE(counter.ValueUpdated());
+
+  counter.SetTime(0, 0, 0, 0);
+  // Add a sleep as the kernel may have pending events when the timer is disarmed.
+  usleep(500000);
+  int value = counter.Value();
+  usleep(500000);
+
+  // Verify the counter has not been incremented.
+  ASSERT_EQ(value, counter.Value());
+}
+
+// Test to verify that deleting a repeatable timer disables the callbacks.
+TEST(time, timer_delete_terminates) {
+  Counter counter(Counter::CountNotifyFunction);
+  ASSERT_EQ(0, counter.Value());
+
+  counter.SetTime(0, 1, 0, 1);
+  ASSERT_TRUE(counter.ValueUpdated());
+  ASSERT_TRUE(counter.ValueUpdated());
+  ASSERT_TRUE(counter.ValueUpdated());
+
+  counter.DeleteTimer();
+  // Add a sleep as other threads may be calling the callback function when the timer is deleted.
+  usleep(500000);
+  int value = counter.Value();
+  usleep(500000);
+
+  // Verify the counter has not been incremented.
+  ASSERT_EQ(value, counter.Value());
 }
 
 struct TimerDeleteData {
@@ -417,7 +487,7 @@
   ts2.tv_nsec -= ts1.tv_nsec;
   if (ts2.tv_nsec < 0) {
     --ts2.tv_sec;
-    ts2.tv_nsec += 1000000000;
+    ts2.tv_nsec += NS_PER_S;
   }
 
   // Should be less than (a very generous, to try to avoid flakiness) 1000000ns.
@@ -425,44 +495,51 @@
   ASSERT_LT(ts2.tv_nsec, 1000000);
 }
 
-// Test to verify that disarming a repeatable timer disables the
-// callbacks.
-TEST(time, timer_disarm_terminates) {
-  Counter counter(Counter::CountNotifyFunction);
-  ASSERT_TRUE(counter.timer_valid);
-
-  ASSERT_EQ(0, counter.value);
-
-  counter.SetTime(0, 1, 0, 1);
-  ASSERT_TRUE(counter.ValueUpdated());
-  ASSERT_TRUE(counter.ValueUpdated());
-  ASSERT_TRUE(counter.ValueUpdated());
-
-  counter.SetTime(0, 0, 1, 0);
-  volatile int value = counter.value;
-  usleep(500000);
-
-  // Verify the counter has not been incremented.
-  ASSERT_EQ(value, counter.value);
+TEST(time, clock) {
+  // clock(3) is hard to test, but a 1s sleep should cost less than 1ms.
+  clock_t t0 = clock();
+  sleep(1);
+  clock_t t1 = clock();
+  ASSERT_LT(t1 - t0, CLOCKS_PER_SEC / 1000);
 }
 
-// Test to verify that deleting a repeatable timer disables the
-// callbacks.
-TEST(time, timer_delete_terminates) {
-  Counter counter(Counter::CountNotifyFunction);
-  ASSERT_TRUE(counter.timer_valid);
+pid_t GetInvalidPid() {
+  FILE* fp = fopen("/proc/sys/kernel/pid_max", "r");
+  long pid_max;
+  fscanf(fp, "%ld", &pid_max);
+  pid_t invalid_pid = static_cast<pid_t>(pid_max + 1);
+  fclose(fp);
+  return invalid_pid;
+}
 
-  ASSERT_EQ(0, counter.value);
+TEST(time, clock_getcpuclockid) {
+  // For current process.
+  clockid_t clockid;
+  ASSERT_EQ(0, clock_getcpuclockid(getpid(), &clockid));
 
-  counter.SetTime(0, 1, 0, 1);
-  ASSERT_TRUE(counter.ValueUpdated());
-  ASSERT_TRUE(counter.ValueUpdated());
-  ASSERT_TRUE(counter.ValueUpdated());
+  timespec ts;
+  ASSERT_EQ(0, clock_gettime(clockid, &ts));
 
-  counter.DeleteTimer();
-  volatile int value = counter.value;
-  usleep(500000);
+  // For parent process.
+  ASSERT_EQ(0, clock_getcpuclockid(getppid(), &clockid));
+  ASSERT_EQ(0, clock_gettime(clockid, &ts));
 
-  // Verify the counter has not been incremented.
-  ASSERT_EQ(value, counter.value);
+  // For invalid process.
+  // We can't use -1 for invalid pid here, because clock_getcpuclockid() can't detect it.
+  errno = 0;
+  ASSERT_EQ(ESRCH, clock_getcpuclockid(GetInvalidPid(), &clockid));
+  ASSERT_EQ(0, errno);
+}
+
+TEST(time, clock_settime) {
+  errno = 0;
+  timespec ts;
+  ASSERT_EQ(-1, clock_settime(-1, &ts));
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(time, clock_nanosleep) {
+  timespec in;
+  timespec out;
+  ASSERT_EQ(EINVAL, clock_nanosleep(-1, 0, &in, &out));
 }
diff --git a/tests/uchar_test.cpp b/tests/uchar_test.cpp
index eca3c5e..c887f8a 100644
--- a/tests/uchar_test.cpp
+++ b/tests/uchar_test.cpp
@@ -19,7 +19,6 @@
 #if defined(__BIONIC__)
 #define HAVE_UCHAR 1
 #elif defined(__GLIBC__)
-#include <features.h>
 #define HAVE_UCHAR __GLIBC_PREREQ(2, 16)
 #endif
 
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 8195ea8..f54a461 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -15,6 +15,7 @@
  */
 
 #include <gtest/gtest.h>
+#include "BionicDeathTest.h"
 #include "ScopedSignalHandler.h"
 #include "TemporaryFile.h"
 
@@ -22,14 +23,12 @@
 #include <fcntl.h>
 #include <limits.h>
 #include <stdint.h>
-#include <unistd.h>
+#include <sys/param.h>
 #include <sys/syscall.h>
 #include <sys/types.h>
+#include <sys/utsname.h>
 #include <sys/wait.h>
-
-TEST(unistd, sysconf_SC_MONOTONIC_CLOCK) {
-  ASSERT_GT(sysconf(_SC_MONOTONIC_CLOCK), 0);
-}
+#include <unistd.h>
 
 static void* get_brk() {
   return sbrk(0);
@@ -247,8 +246,6 @@
 }
 
 TEST(unistd, unsetenv_EINVAL) {
-  EXPECT_EQ(-1, unsetenv(NULL));
-  EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, unsetenv(""));
   EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, unsetenv("a=b"));
@@ -462,3 +459,364 @@
   ASSERT_EQ(0, pthread_join(t, &result));
   ASSERT_EQ(NULL, result);
 }
+
+class unistd_DeathTest : public BionicDeathTest {};
+
+TEST_F(unistd_DeathTest, abort) {
+  ASSERT_EXIT(abort(), testing::KilledBySignal(SIGABRT), "");
+}
+
+TEST(unistd, sethostname) {
+  // The permissions check happens before the argument check, so this will
+  // fail for a different reason if you're running as root than if you're
+  // not, but it'll fail either way. Checking that we have the symbol is about
+  // all we can do for sethostname(2).
+  ASSERT_EQ(-1, sethostname("", -1));
+}
+
+TEST(unistd, gethostname) {
+  char hostname[HOST_NAME_MAX + 1];
+  memset(hostname, 0, sizeof(hostname));
+
+  // Can we get the hostname with a big buffer?
+  ASSERT_EQ(0, gethostname(hostname, HOST_NAME_MAX));
+
+  // Can we get the hostname with a right-sized buffer?
+  errno = 0;
+  ASSERT_EQ(0, gethostname(hostname, strlen(hostname) + 1));
+
+  // Does uname(2) agree?
+  utsname buf;
+  ASSERT_EQ(0, uname(&buf));
+  ASSERT_EQ(0, strncmp(hostname, buf.nodename, SYS_NMLN));
+  ASSERT_GT(strlen(hostname), 0U);
+
+  // Do we correctly detect truncation?
+  errno = 0;
+  ASSERT_EQ(-1, gethostname(hostname, strlen(hostname)));
+  ASSERT_EQ(ENAMETOOLONG, errno);
+}
+
+TEST(unistd, pathconf_fpathconf) {
+  TemporaryFile tf;
+  long rc = 0L;
+  // As a file system's block size is always power of 2, the configure values
+  // for ALLOC and XFER should be power of 2 as well.
+  rc = pathconf(tf.filename, _PC_ALLOC_SIZE_MIN);
+  ASSERT_TRUE(rc > 0 && powerof2(rc));
+  rc = pathconf(tf.filename, _PC_REC_MIN_XFER_SIZE);
+  ASSERT_TRUE(rc > 0 && powerof2(rc));
+  rc = pathconf(tf.filename, _PC_REC_XFER_ALIGN);
+  ASSERT_TRUE(rc > 0 && powerof2(rc));
+
+  rc = fpathconf(tf.fd, _PC_ALLOC_SIZE_MIN);
+  ASSERT_TRUE(rc > 0 && powerof2(rc));
+  rc = fpathconf(tf.fd, _PC_REC_MIN_XFER_SIZE);
+  ASSERT_TRUE(rc > 0 && powerof2(rc));
+  rc = fpathconf(tf.fd, _PC_REC_XFER_ALIGN);
+  ASSERT_TRUE(rc > 0 && powerof2(rc));
+}
+
+
+TEST(unistd, _POSIX_macros_smoke) {
+  // Make a tight verification of _POSIX_* / _POSIX2_* / _XOPEN_* macros, to prevent change by mistake.
+  // Verify according to POSIX.1-2008.
+  EXPECT_EQ(200809L, _POSIX_VERSION);
+
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_ADVISORY_INFO);
+  EXPECT_GT(_POSIX_AIO_LISTIO_MAX, 0);
+  EXPECT_GT(_POSIX_AIO_MAX, 0);
+  EXPECT_GT(_POSIX_ARG_MAX, 0);
+  EXPECT_GT(_POSIX_CHILD_MAX, 0);
+  EXPECT_NE(_POSIX_CHOWN_RESTRICTED, -1);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_CLOCK_SELECTION);
+  EXPECT_EQ(0, _POSIX_CPUTIME);             // Use sysconf to detect support at runtime.
+  EXPECT_GT(_POSIX_DELAYTIMER_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_FSYNC);
+  EXPECT_GT(_POSIX_HOST_NAME_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_IPV6);
+  EXPECT_GT(_POSIX_JOB_CONTROL, 0);
+  EXPECT_GT(_POSIX_LINK_MAX, 0);
+  EXPECT_GT(_POSIX_LOGIN_NAME_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MAPPED_FILES);
+  EXPECT_GT(_POSIX_MAX_CANON, 0);
+  EXPECT_GT(_POSIX_MAX_INPUT, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MEMLOCK);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MEMLOCK_RANGE);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MEMORY_PROTECTION);
+  EXPECT_EQ(0, _POSIX_MONOTONIC_CLOCK);
+  EXPECT_GT(_POSIX_MQ_OPEN_MAX, 0);
+  EXPECT_GT(_POSIX_MQ_PRIO_MAX, 0);
+  EXPECT_GT(_POSIX_NAME_MAX, 0);
+  EXPECT_GT(_POSIX_NGROUPS_MAX, 0);
+  EXPECT_GT(_POSIX_NO_TRUNC, 0);
+  EXPECT_GT(_POSIX_OPEN_MAX, 0);
+  EXPECT_GT(_POSIX_PATH_MAX, 0);
+  EXPECT_GT(_POSIX_PIPE_BUF, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_PRIORITY_SCHEDULING);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_RAW_SOCKETS);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_READER_WRITER_LOCKS);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_REALTIME_SIGNALS);
+  EXPECT_GT(_POSIX_REGEXP, 0);
+  EXPECT_GT(_POSIX_RE_DUP_MAX, 0);
+  EXPECT_GT(_POSIX_SAVED_IDS, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_SEMAPHORES);
+  EXPECT_GT(_POSIX_SEM_NSEMS_MAX, 0);
+  EXPECT_GT(_POSIX_SEM_VALUE_MAX, 0);
+  EXPECT_GT(_POSIX_SHELL, 0);
+  EXPECT_GT(_POSIX_SIGQUEUE_MAX, 0);
+  EXPECT_EQ(-1, _POSIX_SPORADIC_SERVER);
+  EXPECT_GT(_POSIX_SSIZE_MAX, 0);
+  EXPECT_GT(_POSIX_STREAM_MAX, 0);
+  EXPECT_GT(_POSIX_SYMLINK_MAX, 0);
+  EXPECT_GT(_POSIX_SYMLOOP_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_SYNCHRONIZED_IO);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREADS);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_ATTR_STACKADDR);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_ATTR_STACKSIZE);
+  EXPECT_EQ(0, _POSIX_THREAD_CPUTIME);       // Use sysconf to detect support at runtime.
+  EXPECT_GT(_POSIX_THREAD_DESTRUCTOR_ITERATIONS, 0);
+  EXPECT_EQ(_POSIX_THREAD_KEYS_MAX, 128);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PRIORITY_SCHEDULING);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PRIO_INHERIT);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PRIO_PROTECT);
+  EXPECT_EQ(-1, _POSIX_THREAD_ROBUST_PRIO_PROTECT);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_SAFE_FUNCTIONS);
+  EXPECT_EQ(-1, _POSIX_THREAD_SPORADIC_SERVER);
+  EXPECT_GT(_POSIX_THREAD_THREADS_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_TIMEOUTS);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_TIMERS);
+  EXPECT_GT(_POSIX_TIMER_MAX, 0);
+  EXPECT_EQ(-1, _POSIX_TRACE);
+  EXPECT_EQ(-1, _POSIX_TRACE_EVENT_FILTER);
+  EXPECT_EQ(-1, _POSIX_TRACE_INHERIT);
+  EXPECT_EQ(-1, _POSIX_TRACE_LOG);
+  EXPECT_GT(_POSIX_TTY_NAME_MAX, 0);
+  EXPECT_EQ(-1, _POSIX_TYPED_MEMORY_OBJECTS);
+  EXPECT_GT(_POSIX_TZNAME_MAX, 0);
+  EXPECT_NE(-1, _POSIX_VDISABLE);
+
+  EXPECT_GT(_POSIX2_BC_BASE_MAX, 0);
+  EXPECT_GT(_POSIX2_BC_DIM_MAX, 0);
+  EXPECT_GT(_POSIX2_BC_SCALE_MAX, 0);
+  EXPECT_GT(_POSIX2_BC_STRING_MAX, 0);
+  EXPECT_GT(_POSIX2_CHARCLASS_NAME_MAX, 0);
+  EXPECT_GT(_POSIX2_COLL_WEIGHTS_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX2_C_BIND);
+  EXPECT_GT(_POSIX2_EXPR_NEST_MAX, 0);
+  EXPECT_GT(_POSIX2_LINE_MAX, 0);
+  EXPECT_GT(_POSIX2_RE_DUP_MAX, 0);
+
+  EXPECT_EQ(700, _XOPEN_VERSION);
+  EXPECT_GT(_XOPEN_IOV_MAX, 0);
+  EXPECT_GT(_XOPEN_UNIX, 0);
+
+#if defined(__BIONIC__)
+  // These tests only pass on bionic, as bionic and glibc has different support on these macros.
+  // Macros like _POSIX_ASYNCHRONOUS_IO are not supported on bionic yet.
+  EXPECT_EQ(-1, _POSIX_ASYNCHRONOUS_IO);
+  EXPECT_EQ(-1, _POSIX_BARRIERS);
+  EXPECT_EQ(-1, _POSIX_MESSAGE_PASSING);
+  EXPECT_EQ(-1, _POSIX_PRIORITIZED_IO);
+  EXPECT_EQ(-1, _POSIX_SHARED_MEMORY_OBJECTS);
+  EXPECT_EQ(-1, _POSIX_SPAWN);
+  EXPECT_EQ(-1, _POSIX_SPIN_LOCKS);
+  EXPECT_EQ(-1, _POSIX_THREAD_PROCESS_SHARED);
+  EXPECT_EQ(-1, _POSIX_THREAD_ROBUST_PRIO_INHERIT);
+
+  EXPECT_EQ(-1, _POSIX2_VERSION);
+  EXPECT_EQ(-1, _POSIX2_CHAR_TERM);
+  EXPECT_EQ(-1, _POSIX2_C_DEV);
+  EXPECT_EQ(-1, _POSIX2_LOCALEDEF);
+  EXPECT_EQ(-1, _POSIX2_SW_DEV);
+  EXPECT_EQ(-1, _POSIX2_UPE);
+
+  EXPECT_EQ(-1, _XOPEN_ENH_I18N);
+  EXPECT_EQ(-1, _XOPEN_CRYPT);
+  EXPECT_EQ(-1, _XOPEN_LEGACY);
+  EXPECT_EQ(-1, _XOPEN_REALTIME);
+  EXPECT_EQ(-1, _XOPEN_REALTIME_THREADS);
+  EXPECT_EQ(-1, _XOPEN_SHM);
+
+#endif // defined(__BIONIC__)
+}
+
+#define VERIFY_SYSCONF_NOT_SUPPORT(name) VerifySysconf(name, #name, [](long v){return v == -1;})
+
+// sysconf() means unlimited when it returns -1 with errno unchanged.
+#define VERIFY_SYSCONF_POSITIVE(name) \
+  VerifySysconf(name, #name, [](long v){return (v > 0 || v == -1);})
+
+#define VERIFY_SYSCONF_POSIX_VERSION(name) \
+  VerifySysconf(name, #name, [](long v){return v == _POSIX_VERSION;})
+
+static void VerifySysconf(int option, const char *option_name, bool (*verify)(long)) {
+  errno = 0;
+  long ret = sysconf(option);
+  EXPECT_TRUE(0 == errno && verify(ret)) << "name = " << option_name << ", ret = "
+      << ret <<", Error Message: " << strerror(errno);
+}
+
+TEST(unistd, sysconf) {
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_ADVISORY_INFO);
+  VERIFY_SYSCONF_POSITIVE(_SC_ARG_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_BC_BASE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_BC_DIM_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_BC_SCALE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_CHILD_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_CLK_TCK);
+  VERIFY_SYSCONF_POSITIVE(_SC_COLL_WEIGHTS_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_CPUTIME);
+  VERIFY_SYSCONF_POSITIVE(_SC_EXPR_NEST_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_LINE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_NGROUPS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_OPEN_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_PASS_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_2_C_BIND);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_FORT_DEV);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_FORT_RUN);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_UPE);
+  VERIFY_SYSCONF_POSITIVE(_SC_JOB_CONTROL);
+  VERIFY_SYSCONF_POSITIVE(_SC_SAVED_IDS);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_VERSION);
+  VERIFY_SYSCONF_POSITIVE(_SC_RE_DUP_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_STREAM_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_TZNAME_MAX);
+  VerifySysconf(_SC_XOPEN_VERSION, "_SC_XOPEN_VERSION", [](long v){return v == _XOPEN_VERSION;});
+  VERIFY_SYSCONF_POSITIVE(_SC_ATEXIT_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_IOV_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_PAGESIZE);
+  VERIFY_SYSCONF_POSITIVE(_SC_PAGE_SIZE);
+  VERIFY_SYSCONF_POSITIVE(_SC_XOPEN_UNIX);
+  VERIFY_SYSCONF_POSITIVE(_SC_AIO_LISTIO_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_AIO_MAX);
+  VerifySysconf(_SC_AIO_PRIO_DELTA_MAX, "_SC_AIO_PRIO_DELTA_MAX", [](long v){return v >= 0;});
+  VERIFY_SYSCONF_POSITIVE(_SC_DELAYTIMER_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_MQ_OPEN_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_MQ_PRIO_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_RTSIG_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_SEM_NSEMS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_SEM_VALUE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_TIMER_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_FSYNC);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MAPPED_FILES);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MEMLOCK);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MEMLOCK_RANGE);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MEMORY_PROTECTION);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_PRIORITY_SCHEDULING);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_REALTIME_SIGNALS);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_SEMAPHORES);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_SYNCHRONIZED_IO);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_TIMERS);
+  VERIFY_SYSCONF_POSITIVE(_SC_GETGR_R_SIZE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_GETPW_R_SIZE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_LOGIN_NAME_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_DESTRUCTOR_ITERATIONS);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_KEYS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_STACK_MIN);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_THREADS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_TTY_NAME_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREADS);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_ATTR_STACKADDR);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_ATTR_STACKSIZE);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_PRIORITY_SCHEDULING);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_PRIO_INHERIT);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_PRIO_PROTECT);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_SAFE_FUNCTIONS);
+  VERIFY_SYSCONF_POSITIVE(_SC_NPROCESSORS_CONF);
+  VERIFY_SYSCONF_POSITIVE(_SC_NPROCESSORS_ONLN);
+  VERIFY_SYSCONF_POSITIVE(_SC_PHYS_PAGES);
+  VERIFY_SYSCONF_POSITIVE(_SC_AVPHYS_PAGES);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MONOTONIC_CLOCK);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_ACCOUNTING);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_CHECKPOINT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_LOCATE);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_MESSAGE);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_TRACK);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_CLOCK_SELECTION);
+  VERIFY_SYSCONF_POSITIVE(_SC_HOST_NAME_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_IPV6);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_RAW_SOCKETS);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_READER_WRITER_LOCKS);
+  VERIFY_SYSCONF_POSITIVE(_SC_REGEXP);
+  VERIFY_SYSCONF_POSITIVE(_SC_SHELL);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SPORADIC_SERVER);
+  VERIFY_SYSCONF_POSITIVE(_SC_SYMLOOP_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_CPUTIME);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_SPORADIC_SERVER);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_TIMEOUTS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_EVENT_FILTER);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_EVENT_NAME_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_INHERIT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_LOG);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_NAME_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_SYS_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_USER_EVENT_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TYPED_MEMORY_OBJECTS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_STREAMS);
+
+#if defined(__LP64__)
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_ILP32_OFF32);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_ILP32_OFFBIG);
+  VERIFY_SYSCONF_POSITIVE(_SC_V7_LP64_OFF64);
+  VERIFY_SYSCONF_POSITIVE(_SC_V7_LPBIG_OFFBIG);
+#else
+  VERIFY_SYSCONF_POSITIVE(_SC_V7_ILP32_OFF32);
+#if defined(__BIONIC__)
+  // bionic does not support 64 bits off_t type on 32bit machine.
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_ILP32_OFFBIG);
+#endif
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_LP64_OFF64);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_LPBIG_OFFBIG);
+#endif
+
+#if defined(__BIONIC__)
+  // Tests can only run on bionic, as bionic and glibc have different support for these options.
+  // Below options are not supported on bionic yet.
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_ASYNCHRONOUS_IO);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_BARRIERS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_MESSAGE_PASSING);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_PRIORITIZED_IO);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SHARED_MEMORY_OBJECTS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SPAWN);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SPIN_LOCKS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_PROCESS_SHARED);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_ROBUST_PRIO_INHERIT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_ROBUST_PRIO_PROTECT);
+
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_C_DEV);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_CHAR_TERM);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_LOCALEDEF);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_SW_DEV);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_VERSION);
+
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_CRYPT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_ENH_I18N);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_LEGACY);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_REALTIME);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_REALTIME_THREADS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_SHM);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_UUCP);
+#endif // defined(__BIONIC__)
+}
+
+TEST(unistd, dup2_same) {
+  // POSIX says of dup2:
+  // If fildes2 is already a valid open file descriptor ...
+  // [and] fildes is equal to fildes2 ... dup2() shall return
+  // fildes2 without closing it.
+  // This isn't true of dup3(2), so we need to manually implement that.
+
+  // Equal and valid.
+  int fd = open("/proc/version", O_RDONLY);
+  ASSERT_TRUE(fd != -1);
+  ASSERT_EQ(fd, dup2(fd, fd));
+  ASSERT_EQ(0, close(fd)); // Check that dup2 didn't close fd.
+
+  // Equal, but invalid.
+  errno = 0;
+  ASSERT_EQ(-1, dup2(fd, fd));
+  ASSERT_EQ(EBADF, errno);
+}
diff --git a/tests/utils.h b/tests/utils.h
new file mode 100644
index 0000000..fd012a3
--- /dev/null
+++ b/tests/utils.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#ifndef __TEST_UTILS_H
+#define __TEST_UTILS_H
+#include <inttypes.h>
+#include <sys/mman.h>
+
+#include "private/ScopeGuard.h"
+
+struct map_record {
+  uintptr_t addr_start;
+  uintptr_t addr_end;
+
+  int perms;
+
+  size_t offset;
+
+  dev_t device;
+  ino_t inode;
+
+  std::string pathname;
+};
+
+class Maps {
+ public:
+  static bool parse_maps(std::vector<map_record>* maps) {
+    char path[64];
+    snprintf(path, sizeof(path), "/proc/self/task/%d/maps", getpid());
+    FILE* fp = fopen(path, "re");
+    if (fp == nullptr) {
+      return false;
+    }
+
+    auto fp_guard = make_scope_guard([&]() {
+      fclose(fp);
+    });
+
+    char line[BUFSIZ];
+    while (fgets(line, sizeof(line), fp) != nullptr) {
+      map_record record;
+      uint32_t dev_major, dev_minor;
+      char pathstr[BUFSIZ];
+      char prot[5]; // sizeof("rwxp")
+      if (sscanf(line, "%" SCNxPTR "-%" SCNxPTR " %4s %" SCNxPTR " %x:%x %lu %s",
+            &record.addr_start, &record.addr_end, prot, &record.offset,
+            &dev_major, &dev_minor, &record.inode, pathstr) == 8) {
+        record.perms = 0;
+        if (prot[0] == 'r') {
+          record.perms |= PROT_READ;
+        }
+        if (prot[1] == 'w') {
+          record.perms |= PROT_WRITE;
+        }
+        if (prot[2] == 'x') {
+          record.perms |= PROT_EXEC;
+        }
+
+        // TODO: parse shared/private?
+
+        record.device = makedev(dev_major, dev_minor);
+        record.pathname = pathstr;
+        maps->push_back(record);
+      }
+    }
+
+    return true;
+  }
+};
+
+#endif
diff --git a/tests/utmp_test.cpp b/tests/utmp_test.cpp
new file mode 100644
index 0000000..b61110d
--- /dev/null
+++ b/tests/utmp_test.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <utmp.h>
+
+TEST(utmp, login_tty) {
+  // login_tty is tested indirectly by the openpty and forkpty tests.
+  // This test just checks that we're exporting the symbol independently.
+  ASSERT_EQ(-1, login_tty(-1));
+}
diff --git a/tests/wchar_test.cpp b/tests/wchar_test.cpp
index d02c4bf..e86d56d 100644
--- a/tests/wchar_test.cpp
+++ b/tests/wchar_test.cpp
@@ -22,6 +22,8 @@
 #include <stdint.h>
 #include <wchar.h>
 
+#define NUM_WCHARS(num_bytes) (num_bytes/sizeof(wchar_t))
+
 TEST(wchar, sizeof_wchar_t) {
   EXPECT_EQ(4U, sizeof(wchar_t));
   EXPECT_EQ(4U, sizeof(wint_t));
@@ -232,6 +234,11 @@
   ASSERT_EQ(NULL, wcsstr(haystack, bad_needle));
 }
 
+TEST(wchar, wcsstr_80199) {
+  // https://code.google.com/p/android/issues/detail?id=80199
+  ASSERT_TRUE(wcsstr(L"romrom", L"rom") != NULL);
+}
+
 TEST(wchar, mbtowc) {
   wchar_t out[8];
 
@@ -343,7 +350,7 @@
   // Check that valid has advanced to the next unread character.
   ASSERT_EQ('e', *valid);
 
-  wmemset(out, L'x', sizeof(out) / sizeof(wchar_t));
+  wmemset(out, L'x', NUM_WCHARS(sizeof(out)));
   ASSERT_EQ(2U, mbsrtowcs(out, &valid, 4, ps));
   ASSERT_EQ(L'e', out[0]);
   ASSERT_EQ(L'f', out[1]);
@@ -450,17 +457,85 @@
   EXPECT_STREQ(L"Sun Mar 10 00:00:00 2100", buf);
 }
 
-TEST(wchar, wmemmove) {
+TEST(wchar, wmemmove_smoke) {
   const wchar_t const_wstr[] = L"This is a test of something or other.....";
-  wchar_t* wstr = new wchar_t[sizeof(const_wstr)];
+  wchar_t wstr[NUM_WCHARS(sizeof(const_wstr))];
 
-  wmemmove(wstr, const_wstr, sizeof(const_wstr)/sizeof(wchar_t));
+  EXPECT_EQ(wstr, wmemmove(wstr, const_wstr, NUM_WCHARS(sizeof(const_wstr))));
   EXPECT_STREQ(const_wstr, wstr);
 
-  wmemmove(wstr+5, wstr, sizeof(const_wstr)/sizeof(wchar_t) - 6);
+  EXPECT_EQ(wstr+5, wmemmove(wstr+5, wstr, NUM_WCHARS(sizeof(const_wstr)) - 6));
   EXPECT_STREQ(L"This This is a test of something or other", wstr);
 }
 
+TEST(wchar, wmemcpy_smoke) {
+  const wchar_t src[] = L"Source string";
+  wchar_t dst[NUM_WCHARS(sizeof(src))];
+
+  EXPECT_EQ(dst, wmemcpy(dst, src, NUM_WCHARS(sizeof(src))));
+  EXPECT_STREQ(dst, src);
+}
+
+TEST(wchar, wcpcpy_smoke) {
+  const wchar_t src[] = L"Source string";
+  wchar_t dst[NUM_WCHARS(sizeof(src))];
+
+  EXPECT_EQ(dst + NUM_WCHARS(sizeof(src)) - 1, wcpcpy(dst, src));
+  EXPECT_STREQ(dst, src);
+}
+
+TEST(wchar, wcpncpy_smoke) {
+  const wchar_t src[] = L"Source string";
+  wchar_t dst[NUM_WCHARS(sizeof(src)) + 5];
+
+  size_t src_len = NUM_WCHARS(sizeof(src)) - 1;
+  EXPECT_EQ(dst + src_len, wcpncpy(dst, src, src_len + 1));
+  EXPECT_STREQ(dst, src);
+
+  EXPECT_EQ(dst + 6, wcpncpy(dst, src, 6));
+  dst[6] = L'\0';
+  EXPECT_STREQ(dst, L"Source");
+
+  wmemset(dst, L'x', NUM_WCHARS(sizeof(dst)));
+  EXPECT_EQ(dst + src_len, wcpncpy(dst, src, src_len + 4));
+  EXPECT_STREQ(dst, src);
+  EXPECT_EQ(dst[src_len], L'\0');
+  EXPECT_EQ(dst[src_len+1], L'\0');
+  EXPECT_EQ(dst[src_len+2], L'\0');
+  EXPECT_EQ(dst[src_len+3], L'\0');
+  EXPECT_EQ(dst[src_len+4], L'x');
+}
+
+TEST(wchar, wcscpy_smoke) {
+  const wchar_t src[] = L"Source string";
+  wchar_t dst[NUM_WCHARS(sizeof(src))];
+
+  EXPECT_EQ(dst, wcscpy(dst, src));
+  EXPECT_STREQ(src, dst);
+}
+
+TEST(wchar, wcsncpy_smoke) {
+  const wchar_t src[] = L"Source string";
+  wchar_t dst[NUM_WCHARS(sizeof(src)) + 5];
+
+  size_t src_len = NUM_WCHARS(sizeof(src)) - 1;
+  EXPECT_EQ(dst, wcsncpy(dst, src, src_len + 1));
+  EXPECT_STREQ(dst, src);
+
+  EXPECT_EQ(dst, wcsncpy(dst, src, 6));
+  dst[6] = L'\0';
+  EXPECT_STREQ(dst, L"Source");
+
+  wmemset(dst, L'x', NUM_WCHARS(sizeof(dst)));
+  EXPECT_EQ(dst, wcsncpy(dst, src, src_len + 4));
+  EXPECT_STREQ(dst, src);
+  EXPECT_EQ(dst[src_len], L'\0');
+  EXPECT_EQ(dst[src_len+1], L'\0');
+  EXPECT_EQ(dst[src_len+2], L'\0');
+  EXPECT_EQ(dst[src_len+3], L'\0');
+  EXPECT_EQ(dst[src_len+4], L'x');
+}
+
 TEST(wchar, mbrtowc_15439554) {
   // http://b/15439554
   ASSERT_STREQ("C.UTF-8", setlocale(LC_CTYPE, "C.UTF-8"));
@@ -489,3 +564,111 @@
   EXPECT_EQ(4U, n);
   EXPECT_EQ(L'𤭢', wc);
 }
+
+TEST(wchar, open_wmemstream) {
+  wchar_t* p = nullptr;
+  size_t size = 0;
+  FILE* fp = open_wmemstream(&p, &size);
+  ASSERT_NE(EOF, fputws(L"hello, world!", fp));
+  fclose(fp);
+
+  ASSERT_STREQ(L"hello, world!", p);
+  ASSERT_EQ(wcslen(L"hello, world!"), size);
+  free(p);
+}
+
+TEST(stdio, open_wmemstream_EINVAL) {
+#if defined(__BIONIC__)
+  wchar_t* p;
+  size_t size;
+
+  // Invalid buffer.
+  errno = 0;
+  ASSERT_EQ(nullptr, open_wmemstream(nullptr, &size));
+  ASSERT_EQ(EINVAL, errno);
+
+  // Invalid size.
+  errno = 0;
+  ASSERT_EQ(nullptr, open_wmemstream(&p, nullptr));
+  ASSERT_EQ(EINVAL, errno);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing.\n";
+#endif
+}
+
+TEST(wchar, wcstol_EINVAL) {
+  errno = 0;
+  wcstol(L"123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstol(L"123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstol(L"123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(wchar, wcstoll_EINVAL) {
+  errno = 0;
+  wcstoll(L"123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoll(L"123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoll(L"123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(wchar, wcstoul_EINVAL) {
+  errno = 0;
+  wcstoul(L"123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoul(L"123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoul(L"123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(wchar, wcstoull_EINVAL) {
+  errno = 0;
+  wcstoull(L"123", NULL, -1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoull(L"123", NULL, 1);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoull(L"123", NULL, 37);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(wchar, wcstoll_l_EINVAL) {
+  errno = 0;
+  wcstoll_l(L"123", NULL, -1, LC_GLOBAL_LOCALE);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoll_l(L"123", NULL, 1, LC_GLOBAL_LOCALE);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoll_l(L"123", NULL, 37, LC_GLOBAL_LOCALE);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(wchar, wcstoull_l_EINVAL) {
+  errno = 0;
+  wcstoull_l(L"123", NULL, -1, LC_GLOBAL_LOCALE);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoull_l(L"123", NULL, 1, LC_GLOBAL_LOCALE);
+  ASSERT_EQ(EINVAL, errno);
+  errno = 0;
+  wcstoull_l(L"123", NULL, 37, LC_GLOBAL_LOCALE);
+  ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(wchar, wmempcpy) {
+  wchar_t dst[6];
+  ASSERT_EQ(&dst[4], wmempcpy(dst, L"hello", 4));
+}
diff --git a/tools/Android.mk b/tools/Android.mk
new file mode 100644
index 0000000..4dd66fe
--- /dev/null
+++ b/tools/Android.mk
@@ -0,0 +1,19 @@
+#
+# 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)
+
+include $(call all-subdir-makefiles)
diff --git a/tools/bionicbb/.gitignore b/tools/bionicbb/.gitignore
new file mode 100644
index 0000000..d0ff064
--- /dev/null
+++ b/tools/bionicbb/.gitignore
@@ -0,0 +1,58 @@
+config.py
+*.json
+oauth.storage
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.cache
+nosetests.xml
+coverage.xml
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
diff --git a/tools/bionicbb/README.md b/tools/bionicbb/README.md
new file mode 100644
index 0000000..a285984
--- /dev/null
+++ b/tools/bionicbb/README.md
@@ -0,0 +1,89 @@
+bionicbb
+========
+
+The bionic buildbot contains two services: a gmail polling service, and a web
+service that interacts with gerrit.
+
+Dependencies
+------------
+
+ * Python 2.7
+ * [Advanced Python Scheduler](https://apscheduler.readthedocs.org/en/latest/)
+ * [Flask](http://flask.pocoo.org/)
+ * [Google API Client Library](https://developers.google.com/api-client-library/python/start/installation)
+ * [jenkinsapi](https://pypi.python.org/pypi/jenkinsapi)
+ * [Requests](http://docs.python-requests.org/en/latest/)
+
+Setup
+-----
+
+Create a `config.py` in the same directory as the sources. The structure of the
+configuration file is as follows:
+
+```python
+client_secret_file = 'CLIENT_SECRET_FILE.json'
+build_listener_url = 'BUILD_LISTENER_URL'
+jenkins_url = 'JENKINS_URL'
+jenkins_credentials = {
+    'username': 'JENKINS_USERNAME',
+    'password': 'JENKINS_PASSWORD',
+}
+```
+
+The client secret file comes from the Gmail API page of the [Google Developers
+Console](https://console.developers.google.com/). The Jenkins credentials are
+for a Jenkins account that has the appropriate permissions to launch the jobs
+the buildbot will use.
+
+You will also need to add the HTTP password for the buildbot's Gerrit account to
+`~/.netrc`. The HTTP password can be obtained from the [Gerrit HTTP password
+settings](https://android-review.googlesource.com/#/settings/http-password).
+
+To launch the services:
+
+```bash
+$ python build_listener.py >build.log 2>&1 &
+$ python gmail_listener.py >mail.log 2>&1 &
+```
+
+The mail listener will direct your browser to an authentication page for the
+Gmail API.
+
+gmail\_listener.py
+------------------
+
+Bionicbb polls a gmail account to find changes that need to be built. The gmail
+account needs to have a gerrit account set up with project watches on anything
+it finds interesting. This is a rather ugly hack, but it seems to be the
+simplest option available.
+
+Gerrit does offer a streaming notification service that would be _far_ better,
+but it is only available over an SSH conection to gerrit, and the AOSP gerrit
+does not support this connection.
+
+Another option would be polling gerrit itself, but we'd have to process each
+change every time to see if it should be built, whereas project watches allow us
+to treat these as semi-push notifications (we still have to poll gmail).
+
+One drawback to this approach is that it's a hassle to set up the project
+watches for a large number of projects. Since bionicbb is only interested in a
+small subset of projects, this is a non-issue.
+
+If the buildbot has applied Verified-1 to a patchset, the user may add their own
+Verified+1 to the change and the buildbot will remove its rejection the next
+time the services polls (by default, every five minutes).
+
+The service will also listen for the following commands:
+
+ * `bionicbb:clean`: Something is very broken and the buildbot's output
+   directory needs to be nuked.
+ * `bionicbb:retry`: Something went wrong and the buildbot should retry the
+   build.
+
+build\_listener.py
+------------------
+
+The build listener service responds to HTTP POST events sent from Jenkins and
+updates CLs accordingly. The only other API endpoint is `/drop-rejection`, which
+will remove a Verified-1 from a previously rejected patchset. The actually
+invocation of this is handled by the gmail listener.
diff --git a/tools/bionicbb/bionicbb.py b/tools/bionicbb/bionicbb.py
new file mode 100644
index 0000000..a786b27
--- /dev/null
+++ b/tools/bionicbb/bionicbb.py
@@ -0,0 +1,134 @@
+#!/usr/bin/env python2
+#
+# 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.
+#
+import json
+import logging
+import os
+
+from apscheduler.schedulers.background import BackgroundScheduler
+from flask import Flask, request
+import requests
+
+import gerrit
+import tasks
+
+app = Flask(__name__)
+
+
+def gerrit_url(endpoint):
+    gerrit_base_url = 'https://android-review.googlesource.com'
+    return gerrit_base_url + endpoint
+
+
+@app.route('/', methods=['POST'])
+def handle_build_message():
+    result = json.loads(request.data)
+
+    name = result['name']
+    number = result['build']['number']
+    status = result['build']['status']
+    go_url = 'http://go/bionicbb/' + result['build']['url']
+    full_url = result['build']['full_url']
+    params = result['build']['parameters']
+    change_id = params['CHANGE_ID']
+    ref = params['REF']
+    patch_set = ref.split('/')[-1]
+
+    logging.debug('%s #%s %s: %s', name, number, status, full_url)
+
+    # bionic-lint is always broken, so we don't want to reject changes for
+    # those failures until we clean things up.
+    if name == 'bionic-presubmit':
+        message_lines = ['{} #{} checkbuild {}: {}'.format(
+            name, number, status, go_url)]
+        if status == 'FAILURE':
+            message_lines += ['If you believe this Verified-1 was in error, '
+                              '+1 the change and bionicbb will remove the -1 '
+                              'shortly.']
+
+        request_data = {
+            'message': '\n'.join(message_lines)
+        }
+
+        label = 'Verified'
+        if status == 'FAILURE':
+            request_data['labels'] = {label: -1}
+        elif status == 'SUCCESS':
+            request_data['labels'] = {label: +1}
+
+        url = gerrit_url('/a/changes/{}/revisions/{}/review'.format(change_id,
+                                                                    patch_set))
+
+        headers = {'Content-Type': 'application/json;charset=UTF-8'}
+        logging.debug('POST %s: %s', url, request_data)
+        requests.post(url, headers=headers, json=request_data)
+    elif name == 'clean-bionic-presubmit':
+        request_data = {'message': 'out/ directory removed'}
+        url = gerrit_url('/a/changes/{}/revisions/{}/review'.format(change_id,
+                                                                    patch_set))
+        headers = {'Content-Type': 'application/json;charset=UTF-8'}
+        logging.debug('POST %s: %s', url, request_data)
+        requests.post(url, headers=headers, json=request_data)
+    elif name == 'bionic-lint':
+        logging.warning('Result for bionic-lint ignored')
+    else:
+        logging.error('Unknown project: %s', name)
+    return ''
+
+
+@app.route('/drop-rejection', methods=['POST'])
+def drop_rejection():
+    revision_info = json.loads(request.data)
+
+    change_id = revision_info['changeid']
+    patch_set = revision_info['patchset']
+
+    bb_email = 'bionicbb@android.com'
+    labels = gerrit.get_labels(change_id, patch_set)
+    if bb_email in labels['Verified']:
+        bb_review = labels['Verified'][bb_email]
+    else:
+        bb_review = 0
+
+    if bb_review >= 0:
+        logging.info('No rejection to drop: %s %s', change_id, patch_set)
+        return ''
+
+    logging.info('Dropping rejection: %s %s', change_id, patch_set)
+
+    request_data = {'labels': {'Verified': 0}}
+    url = gerrit_url('/a/changes/{}/revisions/{}/review'.format(change_id,
+                                                                patch_set))
+    headers = {'Content-Type': 'application/json;charset=UTF-8'}
+    logging.debug('POST %s: %s', url, request_data)
+    requests.post(url, headers=headers, json=request_data)
+    return ''
+
+
+if __name__ == "__main__":
+    logging.basicConfig(level=logging.INFO)
+    logger = logging.getLogger()
+    fh = logging.FileHandler('bionicbb.log')
+    fh.setLevel(logging.INFO)
+    logger.addHandler(fh)
+
+    # Prevent the job from being rescheduled by the reloader.
+    if os.environ.get('WERKZEUG_RUN_MAIN') == 'true':
+        scheduler = BackgroundScheduler()
+        scheduler.start()
+        scheduler.add_job(tasks.get_and_process_jobs, 'interval', minutes=5)
+
+    app.run(host='0.0.0.0', debug=True)
diff --git a/tools/bionicbb/gerrit.py b/tools/bionicbb/gerrit.py
new file mode 100644
index 0000000..9c62c6a
--- /dev/null
+++ b/tools/bionicbb/gerrit.py
@@ -0,0 +1,80 @@
+#
+# 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.
+#
+import json
+import requests
+
+
+class GerritError(RuntimeError):
+    def __init__(self, code, url):
+        self.code = code
+        self.url = url
+        super(GerritError, self).__init__('Error {}: {}'.format(code, url))
+
+
+def get_commit(change_id, revision):
+    return json.loads(
+        call('/changes/{}/revisions/{}/commit'.format(change_id, revision)))
+
+
+def get_files_for_revision(change_id, revision):
+    return json.loads(
+        call('/changes/{}/revisions/{}/files'.format(
+            change_id, revision))).keys()
+
+
+def call(endpoint, method='GET'):
+    if method != 'GET':
+        raise NotImplementedError('Currently only HTTP GET is supported.')
+    gerrit_url = 'https://android-review.googlesource.com'
+    url = gerrit_url + endpoint
+    response = requests.get(url)
+    if response.status_code != 200:
+        raise GerritError(response.status_code, url)
+    return response.text[5:]
+
+
+def ref_for_change(change_id):
+    endpoint = '/changes/{}/detail?o=CURRENT_REVISION'.format(change_id)
+    change = json.loads(call(endpoint))
+    commit = change['current_revision']
+    return change['revisions'][commit]['fetch']['http']['ref']
+
+
+def get_labels(change_id, patch_set):
+    """Returns labels attached to a revision.
+
+    Returned data is in the following format:
+    {
+        'Code-Review': {
+            <email>: <value>,
+            ...
+        },
+        'Verified': {
+            <email>: <value>,
+            ...
+        }
+    }
+    """
+    details = json.loads(call('/changes/{}/revisions/{}/review'.format(
+        change_id, patch_set)))
+    labels = {'Code-Review': {}, 'Verified': {}}
+    for review in details['labels']['Code-Review']['all']:
+        if 'value' in review and 'email' in review:
+            labels['Code-Review'][review['email']] = int(review['value'])
+    for review in details['labels']['Verified']['all']:
+        if 'value' in review and 'email' in review:
+            labels['Verified'][review['email']] = int(review['value'])
+    return labels
diff --git a/tools/bionicbb/gmail.py b/tools/bionicbb/gmail.py
new file mode 100644
index 0000000..f088ad6
--- /dev/null
+++ b/tools/bionicbb/gmail.py
@@ -0,0 +1,71 @@
+#
+# 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.
+#
+import base64
+import httplib2
+
+import config
+
+
+def get_body(msg):
+    if 'attachmentId' in msg['payload']['body']:
+        raise NotImplementedError('Handling of messages contained in '
+                                  'attachments not yet implemented.')
+    b64_body = msg['payload']['body']['data']
+    return base64.urlsafe_b64decode(b64_body.encode('ASCII'))
+
+
+def build_service():
+    from apiclient.discovery import build
+    from oauth2client.client import flow_from_clientsecrets
+    from oauth2client.file import Storage
+    from oauth2client.tools import run
+
+    OAUTH_SCOPE = 'https://www.googleapis.com/auth/gmail.modify'
+    STORAGE = Storage('oauth.storage')
+
+    # Start the OAuth flow to retrieve credentials
+    flow = flow_from_clientsecrets(config.client_secret_file,
+                                   scope=OAUTH_SCOPE)
+    http = httplib2.Http()
+
+    # Try to retrieve credentials from storage or run the flow to generate them
+    credentials = STORAGE.get()
+    if credentials is None or credentials.invalid:
+        credentials = run(flow, STORAGE, http=http)
+
+    http = credentials.authorize(http)
+    return build('gmail', 'v1', http=http)
+
+
+def get_gerrit_label(labels):
+    for label in labels:
+        if label['name'] == 'gerrit':
+            return label['id']
+    return None
+
+
+def get_all_messages(service, label):
+    msgs = []
+    response = service.users().messages().list(
+        userId='me', labelIds=label).execute()
+    if 'messages' in response:
+        msgs.extend(response['messages'])
+    while 'nextPageToken' in response:
+        page_token = response['nextPageToken']
+        response = service.users().messages().list(
+            userId='me', pageToken=page_token).execute()
+        msgs.extend(response['messages'])
+    return msgs
diff --git a/tools/bionicbb/presubmit.py b/tools/bionicbb/presubmit.py
new file mode 100644
index 0000000..cc6f3cc
--- /dev/null
+++ b/tools/bionicbb/presubmit.py
@@ -0,0 +1,203 @@
+#
+# 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.
+#
+from __future__ import absolute_import
+
+import json
+import logging
+import os.path
+import re
+import requests
+
+import jenkinsapi
+
+import gerrit
+
+import config
+
+
+def is_untrusted_committer(change_id, patch_set):
+    # TODO(danalbert): Needs to be based on the account that made the comment.
+    commit = gerrit.get_commit(change_id, patch_set)
+    committer = commit['committer']['email']
+    return not committer.endswith('@google.com')
+
+
+def contains_cleanspec(change_id, patch_set):
+    files = gerrit.get_files_for_revision(change_id, patch_set)
+    return 'CleanSpec.mk' in [os.path.basename(f) for f in files]
+
+
+def contains_bionicbb(change_id, patch_set):
+    files = gerrit.get_files_for_revision(change_id, patch_set)
+    return any('tools/bionicbb' in f for f in files)
+
+
+def should_skip_build(info):
+    if info['MessageType'] not in ('newchange', 'newpatchset', 'comment'):
+        raise ValueError('should_skip_build() is only valid for new '
+                         'changes, patch sets, and commits.')
+
+    change_id = info['Change-Id']
+    patch_set = info['PatchSet']
+
+    checks = [
+        is_untrusted_committer,
+        contains_cleanspec,
+        contains_bionicbb,
+    ]
+    for check in checks:
+        if check(change_id, patch_set):
+            return True
+    return False
+
+
+def clean_project(dry_run):
+    username = config.jenkins_credentials['username']
+    password = config.jenkins_credentials['password']
+    jenkins_url = config.jenkins_url
+    jenkins = jenkinsapi.api.Jenkins(jenkins_url, username, password)
+
+    build = 'clean-bionic-presubmit'
+    if build in jenkins:
+        if not dry_run:
+            job = jenkins[build].invoke()
+            url = job.get_build().baseurl
+        else:
+            url = 'DRY_RUN_URL'
+        logging.info('Cleaning: %s %s', build, url)
+    else:
+        logging.error('Failed to clean: could not find project %s', build)
+    return True
+
+
+def build_project(gerrit_info, dry_run, lunch_target=None):
+    project_to_jenkins_map = {
+        'platform/bionic': 'bionic-presubmit',
+        'platform/build': 'bionic-presubmit',
+        'platform/external/jemalloc': 'bionic-presubmit',
+        'platform/external/libcxx': 'bionic-presubmit',
+        'platform/external/libcxxabi': 'bionic-presubmit',
+        'platform/external/compiler-rt': 'bionic-presubmit',
+    }
+
+    username = config.jenkins_credentials['username']
+    password = config.jenkins_credentials['password']
+    jenkins_url = config.jenkins_url
+    jenkins = jenkinsapi.api.Jenkins(jenkins_url, username, password)
+
+    project = gerrit_info['Project']
+    change_id = gerrit_info['Change-Id']
+    if project in project_to_jenkins_map:
+        build = project_to_jenkins_map[project]
+    else:
+        build = 'bionic-presubmit'
+
+    if build in jenkins:
+        project_path = '/'.join(project.split('/')[1:])
+        if not project_path:
+            raise RuntimeError('bogus project: {}'.format(project))
+        if project_path.startswith('platform/'):
+            raise RuntimeError('Bad project mapping: {} => {}'.format(
+                project, project_path))
+        ref = gerrit.ref_for_change(change_id)
+        params = {
+            'REF': ref,
+            'CHANGE_ID': change_id,
+            'PROJECT': project_path
+        }
+        if lunch_target is not None:
+            params['LUNCH_TARGET'] = lunch_target
+        if not dry_run:
+            _ = jenkins[build].invoke(build_params=params)
+            # https://issues.jenkins-ci.org/browse/JENKINS-27256
+            # url = job.get_build().baseurl
+            url = 'URL UNAVAILABLE'
+        else:
+            url = 'DRY_RUN_URL'
+        logging.info('Building: %s => %s %s %s', project, build, url,
+                     change_id)
+    else:
+        logging.error('Unknown build: %s => %s %s', project, build, change_id)
+    return True
+
+
+def handle_change(gerrit_info, _, dry_run):
+    if should_skip_build(gerrit_info):
+        return True
+    return build_project(gerrit_info, dry_run)
+
+
+def drop_rejection(gerrit_info, dry_run):
+    request_data = {
+        'changeid': gerrit_info['Change-Id'],
+        'patchset': gerrit_info['PatchSet']
+    }
+    url = '{}/{}'.format(config.build_listener_url, 'drop-rejection')
+    headers = {'Content-Type': 'application/json;charset=UTF-8'}
+    if not dry_run:
+        try:
+            requests.post(url, headers=headers, data=json.dumps(request_data))
+        except requests.exceptions.ConnectionError as ex:
+            logging.error('Failed to drop rejection: %s', ex)
+            return False
+    logging.info('Dropped rejection: %s', gerrit_info['Change-Id'])
+    return True
+
+
+def handle_comment(gerrit_info, body, dry_run):
+    if 'Verified+1' in body:
+        drop_rejection(gerrit_info, dry_run)
+
+    if should_skip_build(gerrit_info):
+        return True
+
+    command_map = {
+        'clean': lambda: clean_project(dry_run),
+        'retry': lambda: build_project(gerrit_info, dry_run),
+
+        'arm': lambda: build_project(gerrit_info, dry_run,
+                                     lunch_target='aosp_arm-eng'),
+        'aarch64': lambda: build_project(gerrit_info, dry_run,
+                                         lunch_target='aosp_arm64-eng'),
+        'mips': lambda: build_project(gerrit_info, dry_run,
+                                      lunch_target='aosp_mips-eng'),
+        'mips64': lambda: build_project(gerrit_info, dry_run,
+                                        lunch_target='aosp_mips64-eng'),
+        'x86': lambda: build_project(gerrit_info, dry_run,
+                                     lunch_target='aosp_x86-eng'),
+        'x86_64': lambda: build_project(gerrit_info, dry_run,
+                                        lunch_target='aosp_x86_64-eng'),
+    }
+
+    def handle_unknown_command():
+        pass    # TODO(danalbert): should complain to the commenter.
+
+    commands = [match.group(1).strip() for match in
+                re.finditer(r'^bionicbb:\s*(.+)$', body, flags=re.MULTILINE)]
+
+    for command in commands:
+        if command in command_map:
+            command_map[command]()
+        else:
+            handle_unknown_command()
+
+    return True
+
+
+def skip_handler(gerrit_info, _, __):
+    logging.info('Skipping %s: %s', gerrit_info['MessageType'],
+                 gerrit_info['Change-Id'])
+    return True
diff --git a/tools/bionicbb/tasks.py b/tools/bionicbb/tasks.py
new file mode 100644
index 0000000..4c39a98
--- /dev/null
+++ b/tools/bionicbb/tasks.py
@@ -0,0 +1,108 @@
+#
+# 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.
+#
+import httplib
+import httplib2
+import logging
+import re
+import socket
+
+import apiclient.errors
+
+import gerrit
+import gmail
+import presubmit
+
+
+def get_gerrit_info(body):
+    info = {}
+    gerrit_pattern = r'^Gerrit-(\S+): (.+)$'
+    for match in re.finditer(gerrit_pattern, body, flags=re.MULTILINE):
+        info[match.group(1)] = match.group(2).strip()
+    return info
+
+
+def process_message(msg, dry_run):
+    try:
+        body = gmail.get_body(msg)
+        gerrit_info = get_gerrit_info(body)
+        if not gerrit_info:
+            logging.fatal('No Gerrit info found: %s', msg.subject)
+        msg_type = gerrit_info['MessageType']
+        handlers = {
+            'comment': presubmit.handle_comment,
+            'newchange': presubmit.handle_change,
+            'newpatchset': presubmit.handle_change,
+
+            'abandon': presubmit.skip_handler,
+            'merge-failed': presubmit.skip_handler,
+            'merged': presubmit.skip_handler,
+            'restore': presubmit.skip_handler,
+            'revert': presubmit.skip_handler,
+        }
+
+        message_type = gerrit_info['MessageType']
+        if message_type in handlers:
+            return handlers[message_type](gerrit_info, body, dry_run)
+        else:
+            logging.warning('MessageType %s unhandled.', msg_type)
+        return False
+    except NotImplementedError as ex:
+        logging.error("%s", ex)
+        return False
+    except gerrit.GerritError as ex:
+        change_id = gerrit_info['Change-Id']
+        logging.error('Gerrit error (%d): %s %s', ex.code, change_id, ex.url)
+        return ex.code == 404
+
+
+def get_and_process_jobs():
+    dry_run = False
+
+    gmail_service = gmail.build_service()
+    msg_service = gmail_service.users().messages()
+
+    # We run in a loop because some of the exceptions thrown here mean we just
+    # need to retry. For errors where we should back off (typically any gmail
+    # API exceptions), process_changes catches the error and returns normally.
+    while True:
+        try:
+            process_changes(gmail_service, msg_service, dry_run)
+            return
+        except httplib.BadStatusLine:
+            pass
+        except httplib2.ServerNotFoundError:
+            pass
+        except socket.error:
+            pass
+
+
+def process_changes(gmail_service, msg_service, dry_run):
+    try:
+        labels = gmail_service.users().labels().list(userId='me').execute()
+        if not labels['labels']:
+            logging.error('Could not retrieve Gmail labels')
+            return
+        label_id = gmail.get_gerrit_label(labels['labels'])
+        if not label_id:
+            logging.error('Could not find gerrit label')
+            return
+
+        for msg in gmail.get_all_messages(gmail_service, label_id):
+            msg = msg_service.get(userId='me', id=msg['id']).execute()
+            if process_message(msg, dry_run) and not dry_run:
+                msg_service.trash(userId='me', id=msg['id']).execute()
+    except apiclient.errors.HttpError as ex:
+        logging.error('API Client HTTP error: %s', ex)
diff --git a/tools/bionicbb/test_tasks.py b/tools/bionicbb/test_tasks.py
new file mode 100644
index 0000000..b36cbad
--- /dev/null
+++ b/tools/bionicbb/test_tasks.py
@@ -0,0 +1,94 @@
+import mock
+import unittest
+
+import presubmit
+
+
+class TestShouldSkipBuild(unittest.TestCase):
+    @mock.patch('presubmit.contains_bionicbb')
+    @mock.patch('presubmit.contains_cleanspec')
+    @mock.patch('gerrit.get_commit')
+    def test_accepts_googlers(self, mock_commit, *other_checks):
+        mock_commit.return_value = {
+            'committer': {'email': 'googler@google.com'}
+        }
+
+        for other_check in other_checks:
+            other_check.return_value = False
+
+        for message_type in ('newchange', 'newpatchset', 'comment'):
+            self.assertFalse(presubmit.should_skip_build({
+                'MessageType': message_type,
+                'Change-Id': '',
+                'PatchSet': '',
+            }))
+
+    @mock.patch('presubmit.contains_bionicbb')
+    @mock.patch('presubmit.contains_cleanspec')
+    @mock.patch('gerrit.get_commit')
+    def test_rejects_googlish_domains(self, mock_commit, *other_checks):
+        mock_commit.return_value = {
+            'committer': {'email': 'fakegoogler@google.com.fake.com'}
+        }
+
+        for other_check in other_checks:
+            other_check.return_value = False
+
+        for message_type in ('newchange', 'newpatchset', 'comment'):
+            self.assertTrue(presubmit.should_skip_build({
+                'MessageType': message_type,
+                'Change-Id': '',
+                'PatchSet': '',
+            }))
+
+    @mock.patch('presubmit.contains_bionicbb')
+    @mock.patch('presubmit.contains_cleanspec')
+    @mock.patch('gerrit.get_commit')
+    def test_rejects_non_googlers(self, mock_commit, *other_checks):
+        mock_commit.return_value = {
+            'committer': {'email': 'johndoe@example.com'}
+        }
+
+        for other_check in other_checks:
+            other_check.return_value = False
+
+        for message_type in ('newchange', 'newpatchset', 'comment'):
+            self.assertTrue(presubmit.should_skip_build({
+                'MessageType': message_type,
+                'Change-Id': '',
+                'PatchSet': '',
+            }))
+
+    @mock.patch('presubmit.contains_bionicbb')
+    @mock.patch('presubmit.is_untrusted_committer')
+    @mock.patch('gerrit.get_files_for_revision')
+    def test_skips_cleanspecs(self, mock_files, *other_checks):
+        mock_files.return_value = ['foo/CleanSpec.mk']
+        for other_check in other_checks:
+            other_check.return_value = False
+
+        for message_type in ('newchange', 'newpatchset', 'comment'):
+            self.assertTrue(presubmit.should_skip_build({
+                'MessageType': message_type,
+                'Change-Id': '',
+                'PatchSet': '',
+            }))
+
+    @mock.patch('presubmit.contains_cleanspec')
+    @mock.patch('presubmit.is_untrusted_committer')
+    @mock.patch('gerrit.get_files_for_revision')
+    def test_skips_bionicbb(self, mock_files, *other_checks):
+        mock_files.return_value = ['tools/bionicbb/common.sh']
+        for other_check in other_checks:
+            other_check.return_value = False
+
+        for message_type in ('newchange', 'newpatchset', 'comment'):
+            self.assertTrue(presubmit.should_skip_build({
+                'MessageType': message_type,
+                'Change-Id': '',
+                'PatchSet': '',
+            }))
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/tools/relocation_packer/Android.mk b/tools/relocation_packer/Android.mk
new file mode 100644
index 0000000..75dba71
--- /dev/null
+++ b/tools/relocation_packer/Android.mk
@@ -0,0 +1,97 @@
+#
+# 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.
+#
+
+common_cppflags := -Wall -Wextra -Wunused -Werror -Wold-style-cast
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := \
+  src/debug.cc \
+  src/delta_encoder.cc \
+  src/elf_file.cc \
+  src/packer.cc \
+  src/sleb128.cc \
+
+LOCAL_STATIC_LIBRARIES := libelf
+LOCAL_C_INCLUDES := external/elfutils/src/libelf
+LOCAL_MODULE := lib_relocation_packer
+
+LOCAL_CPPFLAGS := $(common_cppflags)
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := src/main.cc
+LOCAL_STATIC_LIBRARIES := lib_relocation_packer libelf
+
+# Statically linking libc++ to make it work from prebuilts
+LOCAL_CXX_STL := libc++_static
+LOCAL_C_INCLUDES := external/elfutils/src/libelf libnativehelper/include
+
+LOCAL_MODULE := relocation_packer
+
+LOCAL_CPPFLAGS := $(common_cppflags)
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+include $(BUILD_HOST_EXECUTABLE)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := \
+  src/debug_unittest.cc \
+  src/delta_encoder_unittest.cc \
+  src/elf_file_unittest.cc \
+  src/sleb128_unittest.cc \
+  src/packer_unittest.cc \
+
+LOCAL_STATIC_LIBRARIES := lib_relocation_packer libelf
+LOCAL_C_INCLUDES := external/elfutils/src/libelf
+
+LOCAL_CPPFLAGS := $(common_cppflags)
+
+LOCAL_MODULE := relocation_packer_unit_tests
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+include $(BUILD_HOST_NATIVE_TEST)
+
+# $(1) library name
+define copy-test-library
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE := $(1)
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_PATH := $(HOST_OUT_EXECUTABLES)
+LOCAL_STRIP_MODULE := false
+LOCAL_SRC_FILES := test_data/$(1)
+include $(BUILD_PREBUILT)
+endef
+
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm32.so))
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm32_packed.so))
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm64.so))
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm64_packed.so))
diff --git a/tools/relocation_packer/LICENSE b/tools/relocation_packer/LICENSE
new file mode 100644
index 0000000..972bb2e
--- /dev/null
+++ b/tools/relocation_packer/LICENSE
@@ -0,0 +1,27 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (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/tools/relocation_packer/src/debug.cc b/tools/relocation_packer/src/debug.cc
new file mode 100644
index 0000000..29d7ab0
--- /dev/null
+++ b/tools/relocation_packer/src/debug.cc
@@ -0,0 +1,55 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "debug.h"
+
+#include <stdlib.h>
+#include <iostream>
+#include <string>
+
+namespace relocation_packer {
+
+// Construct a new message logger.  Prints if level is less than or equal to
+// the level set with SetVerbose() and predicate is true.
+Logger::Logger(Severity severity, int level, bool predicate) {
+  severity_ = severity;
+  level_ = level;
+  predicate_ = predicate;
+}
+
+// On destruction, flush and print the strings accumulated.  Abort if FATAL.
+Logger::~Logger() {
+  if (predicate_) {
+    if (level_ <= max_level_) {
+      std::ostream* log = severity_ == INFO ? info_stream_ : error_stream_;
+      std::string tag;
+      switch (severity_) {
+        case INFO: tag = "INFO"; break;
+        case WARNING: tag = "WARNING"; break;
+        case ERROR: tag = "ERROR"; break;
+        case FATAL: tag = "FATAL"; break;
+      }
+      stream_.flush();
+      *log << tag << ": " << stream_.str() << std::endl;
+    }
+    if (severity_ == FATAL)
+      abort();
+  }
+}
+
+// Reset to initial state.
+void Logger::Reset() {
+  max_level_ = -1;
+  info_stream_ = &std::cout;
+  error_stream_ = &std::cerr;
+}
+
+// Verbosity.  Not thread-safe.
+int Logger::max_level_ = -1;
+
+// Logging streams.  Not thread-safe.
+std::ostream* Logger::info_stream_ = &std::cout;
+std::ostream* Logger::error_stream_ = &std::cerr;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/debug.h b/tools/relocation_packer/src/debug.h
new file mode 100644
index 0000000..48be6c1
--- /dev/null
+++ b/tools/relocation_packer/src/debug.h
@@ -0,0 +1,115 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Logging and checks.  Avoids a dependency on base.
+//
+// LOG(tag) prints messages.  Tags are INFO, WARNING, ERROR and FATAL.
+// INFO prints to stdout, the others to stderr.  FATAL aborts after printing.
+//
+// LOG_IF(tag, predicate) logs if predicate evaluates to true, else silent.
+//
+// VLOG(level) logs INFO messages where level is less than or equal to the
+// verbosity level set with SetVerbose().
+//
+// VLOG_IF(level, predicate) logs INFO if predicate evaluates to true,
+// else silent.
+//
+// CHECK(predicate) logs a FATAL error if predicate is false.
+// NOTREACHED() always aborts.
+// Log streams can be changed with SetStreams().  Logging is not thread-safe.
+//
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_DEBUG_H_
+#define TOOLS_RELOCATION_PACKER_SRC_DEBUG_H_
+
+#include <limits.h>
+#include <ostream>
+#include <sstream>
+
+namespace relocation_packer {
+
+class Logger {
+ public:
+  enum Severity {INFO = 0, WARNING, ERROR, FATAL};
+
+  // Construct a new message logger.  Prints if level is less than or
+  // equal to the level set with SetVerbose() and predicate is true.
+  // |severity| is an enumerated severity.
+  // |level| is the verbosity level.
+  // |predicate| controls if the logger prints or is silent.
+  Logger(Severity severity, int level, bool predicate);
+
+  // On destruction, flush and print the strings accumulated in stream_.
+  ~Logger();
+
+  // Return the stream for this logger.
+  std::ostream& GetStream() { return stream_; }
+
+  // Set verbosity level.  Messages with a level less than or equal to
+  // this level are printed, others are discarded.  Static, not thread-safe.
+  static void SetVerbose(int level) { max_level_ = level; }
+
+  // Set info and error logging streams.  Static, not thread-safe.
+  static void SetStreams(std::ostream* info_stream,
+                         std::ostream* error_stream) {
+    info_stream_ = info_stream;
+    error_stream_ = error_stream;
+  }
+
+  // Reset to initial state.
+  static void Reset();
+
+ private:
+  // Message severity, verbosity level, and predicate.
+  Severity severity_;
+  int level_;
+  bool predicate_;
+
+  // String stream, accumulates message text.
+  std::ostringstream stream_;
+
+  // Verbosity for INFO messages.  Not thread-safe.
+  static int max_level_;
+
+  // Logging streams.  Not thread-safe.
+  static std::ostream* info_stream_;
+  static std::ostream* error_stream_;
+};
+
+}  // namespace relocation_packer
+
+// Make logging severities visible globally.
+typedef relocation_packer::Logger::Severity LogSeverity;
+using LogSeverity::INFO;
+using LogSeverity::WARNING;
+using LogSeverity::ERROR;
+using LogSeverity::FATAL;
+
+// LOG(severity) prints a message with the given severity, and aborts if
+// severity is FATAL.  LOG_IF(severity, predicate) does the same but only if
+// predicate is true.  INT_MIN is guaranteed to be less than or equal to
+// any verbosity level.
+#define LOG(severity) \
+    (relocation_packer::Logger(severity, INT_MIN, true).GetStream())
+#define LOG_IF(severity, predicate) \
+    (relocation_packer::Logger(severity, INT_MIN, (predicate)).GetStream())
+
+// VLOG(level) prints its message as INFO if level is less than or equal to
+// the current verbosity level.
+#define VLOG(level) \
+    (relocation_packer::Logger(INFO, (level), true).GetStream())
+#define VLOG_IF(level, predicate) \
+    (relocation_packer::Logger(INFO, (level), (predicate)).GetStream())
+
+// CHECK(predicate) fails with a FATAL log message if predicate is false.
+#define CHECK(predicate) (LOG_IF(FATAL, !(predicate)) \
+    << __FILE__ << ":" << __LINE__ << ": " \
+    << __FUNCTION__ << ": CHECK '" #predicate "' failed")
+
+// NOTREACHED() always fails with a FATAL log message.
+#define NOTREACHED(_) (LOG(FATAL) \
+    << __FILE__ << ":" << __LINE__ << ": " \
+    << __FUNCTION__ << ": NOTREACHED() hit")
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_DEBUG_H_
diff --git a/tools/relocation_packer/src/debug_unittest.cc b/tools/relocation_packer/src/debug_unittest.cc
new file mode 100644
index 0000000..b31e2ae
--- /dev/null
+++ b/tools/relocation_packer/src/debug_unittest.cc
@@ -0,0 +1,122 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "debug.h"
+
+#include <sstream>
+#include "gtest/gtest.h"
+
+namespace relocation_packer {
+
+TEST(Debug, Log) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  LOG(INFO) << "INFO log message";
+  LOG(WARNING) << "WARNING log message";
+  LOG(ERROR) << "ERROR log message";
+
+  EXPECT_EQ("INFO: INFO log message\n", info.str());
+  EXPECT_EQ("WARNING: WARNING log message\n"
+            "ERROR: ERROR log message\n", error.str());
+  Logger::Reset();
+}
+
+TEST(Debug, LogIf) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  LOG_IF(INFO, true) << "INFO log message";
+  LOG_IF(INFO, false) << "INFO log message, SHOULD NOT PRINT";
+  LOG_IF(WARNING, true) << "WARNING log message";
+  LOG_IF(WARNING, false) << "WARNING log message, SHOULD NOT PRINT";
+  LOG_IF(ERROR, true) << "ERROR log message";
+  LOG_IF(ERROR, false) << "ERROR log message, SHOULD NOT PRINT";
+  LOG_IF(FATAL, false) << "FATAL log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("INFO: INFO log message\n", info.str());
+  EXPECT_EQ("WARNING: WARNING log message\n"
+            "ERROR: ERROR log message\n", error.str());
+  Logger::Reset();
+}
+
+TEST(Debug, Vlog) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  VLOG(0) << "VLOG 0 INFO log message, SHOULD NOT PRINT";
+  VLOG(1) << "VLOG 1 INFO log message, SHOULD NOT PRINT";
+  VLOG(2) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("", info.str());
+  EXPECT_EQ("", error.str());
+
+  Logger::SetVerbose(1);
+
+  VLOG(0) << "VLOG 0 INFO log message";
+  VLOG(1) << "VLOG 1 INFO log message";
+  VLOG(2) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("INFO: VLOG 0 INFO log message\n"
+            "INFO: VLOG 1 INFO log message\n", info.str());
+  EXPECT_EQ("", error.str());
+  Logger::Reset();
+}
+
+TEST(Debug, VlogIf) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  VLOG_IF(0, true) << "VLOG 0 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(1, true) << "VLOG 1 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(2, true) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("", info.str());
+  EXPECT_EQ("", error.str());
+
+  Logger::SetVerbose(1);
+
+  VLOG_IF(0, true) << "VLOG 0 INFO log message";
+  VLOG_IF(0, false) << "VLOG 0 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(1, true) << "VLOG 1 INFO log message";
+  VLOG_IF(1, false) << "VLOG 1 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(2, true) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(2, false) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("INFO: VLOG 0 INFO log message\n"
+            "INFO: VLOG 1 INFO log message\n", info.str());
+  EXPECT_EQ("", error.str());
+  Logger::Reset();
+}
+
+TEST(DebugDeathTest, Fatal) {
+  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  Logger::Reset();
+  EXPECT_DEATH(LOG(FATAL) << "FATAL log message", "FATAL: FATAL log message");
+  EXPECT_DEATH(
+      LOG_IF(FATAL, true) << "FATAL log message", "FATAL: FATAL log message");
+}
+
+TEST(DebugDeathTest, Check) {
+  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  Logger::Reset();
+  CHECK(0 == 0);
+  EXPECT_DEATH(CHECK(0 == 1), "FATAL: .*:.*: .*: CHECK '0 == 1' failed");
+}
+
+TEST(DebugDeathTest, NotReached) {
+  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  Logger::Reset();
+  EXPECT_DEATH(NOTREACHED(), "FATAL: .*:.*: .*: NOTREACHED\\(\\) hit");
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/delta_encoder.cc b/tools/relocation_packer/src/delta_encoder.cc
new file mode 100644
index 0000000..8349d7c
--- /dev/null
+++ b/tools/relocation_packer/src/delta_encoder.cc
@@ -0,0 +1,307 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "delta_encoder.h"
+
+#include <vector>
+
+#include "debug.h"
+
+static constexpr uint32_t RELOCATION_GROUPED_BY_INFO_FLAG = 1;
+static constexpr uint32_t RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG = 2;
+static constexpr uint32_t RELOCATION_GROUPED_BY_ADDEND_FLAG = 4;
+static constexpr uint32_t RELOCATION_GROUP_HAS_ADDEND_FLAG = 8;
+
+static bool is_relocation_grouped_by_info(uint64_t flags) {
+  return (flags & RELOCATION_GROUPED_BY_INFO_FLAG) != 0;
+}
+
+static bool is_relocation_grouped_by_offset_delta(uint64_t flags) {
+  return (flags & RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG) != 0;
+}
+
+static bool is_relocation_grouped_by_addend(uint64_t flags) {
+  return (flags & RELOCATION_GROUPED_BY_ADDEND_FLAG) != 0;
+}
+
+static bool is_relocation_group_has_addend(uint64_t flags) {
+  return (flags & RELOCATION_GROUP_HAS_ADDEND_FLAG) != 0;
+}
+
+namespace relocation_packer {
+
+// Encode relocations into a delta encoded (packed) representation.
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::Encode(const std::vector<ElfRela>& relocations,
+                                       std::vector<ElfAddr>* packed) {
+  if (relocations.size() == 0)
+    return;
+
+  // Start with the relocation count, then append groups
+  // TODO(dimitry): we might want to move it to DT_ANDROID_RELCOUNT section
+  packed->push_back(static_cast<ElfAddr>(relocations.size()));
+
+  // lets write starting offset (offset of the first reloc - first delta)
+  ElfAddr start_offset = relocations.size() > 1 ?
+      relocations[0].r_offset - (relocations[1].r_offset - relocations[0].r_offset) :
+      relocations[0].r_offset;
+
+  packed->push_back(start_offset);
+
+  // this one is used to calculate delta
+  ElfAddr previous_addend = 0;
+  ElfAddr previous_offset = start_offset;
+
+  for (size_t group_start = 0; group_start < relocations.size(); ) {
+    ElfAddr group_flags = 0;
+    ElfAddr group_offset_delta = 0;
+    ElfAddr group_addend = 0;
+    ElfAddr group_info = 0;
+
+    ElfAddr group_size = 0;
+
+    DetectGroup(relocations, group_start, previous_offset, &group_size, &group_flags,
+        &group_offset_delta, &group_info, &group_addend);
+
+    // write the group header
+    packed->push_back(group_size);
+    packed->push_back(group_flags);
+
+    if (is_relocation_grouped_by_offset_delta(group_flags)) {
+      packed->push_back(group_offset_delta);
+    }
+
+    if (is_relocation_grouped_by_info(group_flags)) {
+      packed->push_back(group_info);
+    }
+
+    if (is_relocation_group_has_addend(group_flags) &&
+        is_relocation_grouped_by_addend(group_flags)) {
+      packed->push_back(group_addend - previous_addend);
+      previous_addend = group_addend;
+    }
+
+    for (size_t i = 0; i < static_cast<size_t>(group_size); ++i) {
+      CHECK((group_start + i) < relocations.size());
+      const ElfRela* relocation = &relocations[group_start + i];
+
+      if (!is_relocation_grouped_by_offset_delta(group_flags)) {
+        packed->push_back(relocation->r_offset - previous_offset);
+      }
+      previous_offset = relocation->r_offset;
+
+      if (!is_relocation_grouped_by_info(group_flags)) {
+        packed->push_back(relocation->r_info);
+      }
+
+      if (is_relocation_group_has_addend(group_flags) &&
+          !is_relocation_grouped_by_addend(group_flags)) {
+        packed->push_back(relocation->r_addend - previous_addend);
+        previous_addend = relocation->r_addend;
+      }
+    }
+
+    // If the relocation group does not have an addend - reset it to 0
+    // to simplify addend computation for the group following this one.
+    if (!is_relocation_group_has_addend(group_flags)) {
+      previous_addend = 0;
+    }
+
+    group_start += group_size;
+  }
+}
+
+// Decode relocations from a delta encoded (packed) representation.
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::Decode(const std::vector<ElfAddr>& packed,
+                                       std::vector<ElfRela>* relocations) {
+  if (packed.size() < 5) {
+    return;
+  }
+
+  size_t ndx = 0;
+  ElfAddr current_count = 0;
+  ElfAddr total_count = packed[ndx++];
+
+  ElfAddr offset = packed[ndx++];
+  ElfAddr info = 0;
+  ElfAddr addend = 0;
+
+  while(current_count < total_count) {
+    // read group
+    ElfAddr group_size = packed[ndx++];
+    ElfAddr group_flags = packed[ndx++];
+    ElfAddr group_offset_delta = 0;
+
+    if (is_relocation_grouped_by_offset_delta(group_flags)) {
+      group_offset_delta = packed[ndx++];
+    }
+
+    if (is_relocation_grouped_by_info(group_flags)) {
+      info = packed[ndx++];
+    }
+
+    if (is_relocation_group_has_addend(group_flags) &&
+        is_relocation_grouped_by_addend(group_flags)) {
+      addend += packed[ndx++];
+    }
+
+    // now read not grouped info
+    for (ElfAddr i = 0; i<group_size; ++i) {
+      if (is_relocation_grouped_by_offset_delta(group_flags)) {
+        offset += group_offset_delta;
+      } else {
+        offset += packed[ndx++];
+      }
+
+      if (!is_relocation_grouped_by_info(group_flags)) {
+        info = packed[ndx++];
+      }
+
+      if (is_relocation_group_has_addend(group_flags) &&
+          !is_relocation_grouped_by_addend(group_flags)) {
+        addend += packed[ndx++];
+      }
+
+      ElfRela reloc;
+      reloc.r_offset = offset;
+      reloc.r_info = info;
+      reloc.r_addend = is_relocation_group_has_addend(group_flags) ? addend : 0;
+      relocations->push_back(reloc);
+    }
+
+    if (!is_relocation_group_has_addend(group_flags)) {
+      addend = 0;
+    }
+
+    current_count += group_size;
+  }
+}
+
+// This function detects a way to group reloc_one and reloc_two, sets up group_flags
+// and initializes values for corresponding group_ fields. For example if relocations
+// can be grouped by r_info the function will set group_info variable.
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::DetectGroupFields(const ElfRela& reloc_one,
+                                                  const ElfRela& reloc_two,
+                                                  ElfAddr current_offset_delta,
+                                                  ElfAddr* group_flags,
+                                                  ElfAddr* group_offset_delta,
+                                                  ElfAddr* group_info,
+                                                  ElfAddr* group_addend) {
+  *group_flags = 0;
+
+  const ElfAddr offset_delta = static_cast<ElfAddr>(reloc_two.r_offset) -
+      static_cast<ElfAddr>(reloc_one.r_offset);
+
+  if (offset_delta == current_offset_delta) {
+    *group_flags |= RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG;
+    if (group_offset_delta != nullptr) {
+      *group_offset_delta = current_offset_delta;
+    }
+  }
+
+  if (reloc_one.r_info == reloc_two.r_info) {
+    *group_flags |= RELOCATION_GROUPED_BY_INFO_FLAG;
+    if (group_info != nullptr) {
+      *group_info = reloc_one.r_info;
+    }
+  }
+
+  if (reloc_one.r_addend != 0 || reloc_two.r_addend != 0) {
+    *group_flags |= RELOCATION_GROUP_HAS_ADDEND_FLAG;
+    if (reloc_one.r_addend == reloc_two.r_addend) {
+      *group_flags |= RELOCATION_GROUPED_BY_ADDEND_FLAG;
+      if (group_addend != nullptr) {
+        *group_addend = reloc_one.r_addend;
+      }
+    }
+  }
+}
+
+// This function is used to detect if there is better group available
+// during RelocationDeltaCodec<ELF>::DetectGroup processing.
+// Current implementation prefers having groups without addend (== zero addend)
+// to any other groups field with the ratio 3:1. This is because addend tends
+// to be more unevenly distributed than other fields.
+static uint32_t group_weight(uint64_t flags) {
+  uint32_t weight = 0;
+  if (!is_relocation_group_has_addend(flags)) {
+    weight += 3;
+  } else if (is_relocation_grouped_by_addend(flags)) {
+    weight += 1;
+  }
+
+  if (is_relocation_grouped_by_offset_delta(flags)) {
+    weight += 1;
+  }
+
+  if (is_relocation_grouped_by_info(flags)) {
+    weight += 1;
+  }
+
+  return weight;
+}
+
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::DetectGroup(const std::vector<ElfRela>& relocations,
+                                          size_t group_starts_with, ElfAddr previous_offset,
+                                          ElfAddr* group_size, ElfAddr* group_flags,
+                                          ElfAddr* group_offset_delta, ElfAddr* group_info,
+                                          ElfAddr* group_addend) {
+  CHECK(group_starts_with < relocations.size());
+  CHECK(group_flags != nullptr);
+
+  const ElfRela& reloc_one = relocations[group_starts_with++];
+  if (group_starts_with == relocations.size()) {
+    *group_flags = reloc_one.r_addend == 0 ? 0 : RELOCATION_GROUP_HAS_ADDEND_FLAG;
+    *group_size = 1;
+    return;
+  }
+
+  const ElfAddr offset_delta = reloc_one.r_offset - previous_offset;
+
+  // detect group_flags
+  DetectGroupFields(reloc_one, relocations[group_starts_with], offset_delta, group_flags,
+      group_offset_delta, group_info, group_addend);
+
+  if (group_starts_with + 1 == relocations.size()) {
+    *group_size = 2;
+    return;
+  }
+
+  ElfAddr cnt = 1;
+  for (size_t i = group_starts_with; i < relocations.size() - 1; ++i) {
+    ElfAddr candidate_flags;
+    // check if next group (reloc_current; reloc_next) has better grouped_by flags
+    DetectGroupFields(relocations[i], relocations[i+1], offset_delta, &candidate_flags,
+        nullptr, nullptr, nullptr);
+
+    if (group_weight(*group_flags) < group_weight(candidate_flags)) {
+      break;
+    }
+    cnt++;
+
+    if (candidate_flags != *group_flags) {
+      break;
+    }
+
+    if (i + 1 == relocations.size() - 1) { // last one
+      cnt++;
+    }
+  }
+
+  // if as a result of checking candidates we ended up with cnt == 1
+  // reset flags to the default state
+  if (cnt == 1) {
+    *group_flags = reloc_one.r_addend == 0 ? 0 : RELOCATION_GROUP_HAS_ADDEND_FLAG;
+  }
+
+  *group_size = cnt;
+}
+
+template class RelocationDeltaCodec<ELF32_traits>;
+template class RelocationDeltaCodec<ELF64_traits>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/delta_encoder.h b/tools/relocation_packer/src/delta_encoder.h
new file mode 100644
index 0000000..46c324c
--- /dev/null
+++ b/tools/relocation_packer/src/delta_encoder.h
@@ -0,0 +1,132 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Delta encode and decode REL/RELA section of elf file.
+//
+// The encoded data format is sequence of elements of ElfAddr type (unsigned long):
+//
+// [00] relocation_count - the total count of relocations
+// [01] initial r_offset - this is initial r_offset for the
+//                         relocation table.
+// followed by group structures:
+// [02] group
+// ...
+// [nn] group
+
+// the generalized format of the group is (! - always present ? - depends on group_flags):
+// --------------
+// ! group_size
+// ! group_flags
+// ? group_r_offset_delta when RELOCATION_GROUPED_BY_OFFSET_DELTA flag is set
+// ? group_r_info when RELOCATION_GROUPED_BY_INFO flag is set
+// ? group_r_addend_group_delta when RELOCATION_GROUP_HAS_ADDEND and RELOCATION_GROUPED_BY_ADDEND
+//   flag is set
+//
+// The group description is followed by individual relocations.
+// please note that there is a case when individual relocation
+// section could be empty - that is if every field ends up grouped.
+//
+// The format for individual relocations section is:
+// ? r_offset_delta - when RELOCATION_GROUPED_BY_OFFSET_DELTA is not set
+// ? r_info - when RELOCATION_GROUPED_BY_INFO flag is not set
+// ? r_addend_delta - RELOCATION_GROUP_HAS_ADDEND is set and RELOCATION_GROUPED_BY_ADDEND is not set
+//
+// For example lets pack the following relocations:
+//
+// Relocation section '.rela.dyn' at offset 0xbf58 contains 939 entries:
+//     Offset             Info             Type               Symbol's Value  Symbol's Name + Addend
+//     00000000000a2178  0000000000000403 R_AARCH64_RELATIVE                        177a8
+//     00000000000a2180  0000000000000403 R_AARCH64_RELATIVE                        177cc
+//     00000000000a2188  0000000000000403 R_AARCH64_RELATIVE                        177e0
+//     00000000000a2190  0000000000000403 R_AARCH64_RELATIVE                        177f4
+//     00000000000a2198  0000000000000403 R_AARCH64_RELATIVE                        17804
+//     00000000000a21a0  0000000000000403 R_AARCH64_RELATIVE                        17818
+//     00000000000a21a8  0000000000000403 R_AARCH64_RELATIVE                        1782c
+//     00000000000a21b0  0000000000000403 R_AARCH64_RELATIVE                        17840
+//     00000000000a21b8  0000000000000403 R_AARCH64_RELATIVE                        17854
+//     00000000000a21c0  0000000000000403 R_AARCH64_RELATIVE                        17868
+//     00000000000a21c8  0000000000000403 R_AARCH64_RELATIVE                        1787c
+//     00000000000a21d0  0000000000000403 R_AARCH64_RELATIVE                        17890
+//     00000000000a21d8  0000000000000403 R_AARCH64_RELATIVE                        178a4
+//     00000000000a21e8  0000000000000403 R_AARCH64_RELATIVE                        178b8
+//
+// The header is going to be
+// [00] 14                 <- count
+// [01] 0x00000000000a2170 <- initial relocation (first relocation - delta,
+//                            the delta is 8 in this case)
+// -- starting the first and only group
+// [03] 14                 <- group size
+// [03] 0xb                <- flags RELOCATION_GROUP_HAS_ADDEND | RELOCATION_GROUPED_BY_OFFSET_DELTA
+//                            | RELOCATION_GROUPED_BY_INFO
+// [04] 8                  <- offset delta
+// [05] 0x403              <- r_info
+// -- end of group definition, starting list of r_addend deltas
+// [06] 0x177a8
+// [07] 0x24               = 177cc - 177a8
+// [08] 0x14               = 177e0 - 177cc
+// [09] 0x14               = 177f4 - 177e0
+// [10] 0x10               = 17804 - 177f4
+// [11] 0x14               = 17818 - 17804
+// [12] 0x14               = 1782c - 17818
+// [13] 0x14               = 17840 - 1782c
+// [14] 0x14               = 17854 - 17840
+// [15] 0x14               = 17868 - 17854
+// [16] 0x14               = 1787c - 17868
+// [17] 0x14               = 17890 - 1787c
+// [18] 0x14               = 178a4 - 17890
+// [19] 0x14               = 178b8 - 178a4
+// -- the end.
+
+// TODO (dimitry): consider using r_addend_group_delta in the way we use group offset delta, it can
+//                 save us more bytes...
+
+// The input ends when sum(group_size) == relocation_count
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_DELTA_ENCODER_H_
+#define TOOLS_RELOCATION_PACKER_SRC_DELTA_ENCODER_H_
+
+#include <vector>
+
+#include "elf.h"
+#include "elf_traits.h"
+
+namespace relocation_packer {
+
+// A RelocationDeltaCodec packs vectors of relative relocations with
+// addends into more compact forms, and unpacks them to reproduce the
+// pre-packed data.
+template <typename ELF>
+class RelocationDeltaCodec {
+ public:
+  typedef typename ELF::Addr ElfAddr;
+  typedef typename ELF::Rela ElfRela;
+
+  // Encode relocations with addends into a more compact form.
+  // |relocations| is a vector of relative relocation with addend structs.
+  // |packed| is the vector of packed words into which relocations are packed.
+  static void Encode(const std::vector<ElfRela>& relocations,
+                     std::vector<ElfAddr>* packed);
+
+  // Decode relative relocations with addends from their more compact form.
+  // |packed| is the vector of packed relocations.
+  // |relocations| is a vector of unpacked relative relocations.
+  static void Decode(const std::vector<ElfAddr>& packed,
+                     std::vector<ElfRela>* relocations);
+
+ private:
+  static void DetectGroup(const std::vector<ElfRela>& relocations,
+                          size_t group_starts_with, ElfAddr previous_offset,
+                          ElfAddr* group_size, ElfAddr* group_flags,
+                          ElfAddr* group_offset_delta, ElfAddr* group_info,
+                          ElfAddr* group_addend);
+
+  static void DetectGroupFields(const ElfRela& reloc_one, const ElfRela& reloc_two,
+                                ElfAddr current_offset_delta, ElfAddr* group_flags,
+                                ElfAddr* group_offset_delta, ElfAddr* group_info,
+                                ElfAddr* group_addend);
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_DELTA_ENCODER_H_
diff --git a/tools/relocation_packer/src/delta_encoder_unittest.cc b/tools/relocation_packer/src/delta_encoder_unittest.cc
new file mode 100644
index 0000000..06d9c96
--- /dev/null
+++ b/tools/relocation_packer/src/delta_encoder_unittest.cc
@@ -0,0 +1,223 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "delta_encoder.h"
+
+#include <vector>
+#include "elf.h"
+#include "gtest/gtest.h"
+
+namespace {
+
+template <typename T>
+void AddRelocation(uint32_t addr,
+                   uint32_t info,
+                   int32_t addend,
+                   std::vector<T>* relocations) {
+  T relocation;
+  relocation.r_offset = addr;
+  relocation.r_info = info;
+  relocation.r_addend = addend;
+  relocations->push_back(relocation);
+}
+
+template <typename T>
+bool CheckRelocation(uint32_t addr,
+                     uint32_t info,
+                     int32_t addend,
+                     const T& relocation) {
+  return relocation.r_offset == addr &&
+      relocation.r_info == info &&
+      relocation.r_addend == addend;
+}
+
+}  // namespace
+
+namespace relocation_packer {
+
+template <typename ELF>
+static void encode() {
+  std::vector<typename ELF::Rela> relocations;
+  std::vector<typename ELF::Addr> packed;
+
+  RelocationDeltaCodec<ELF> codec;
+
+  codec.Encode(relocations, &packed);
+
+  ASSERT_EQ(0U, packed.size());
+
+  // Initial relocation.
+  AddRelocation(0xf00d0000, 11U, 10000, &relocations);
+
+  codec.Encode(relocations, &packed);
+
+  // size of reloc table, size of group, flags, 3 fields, zero
+  EXPECT_EQ(7U, packed.size());
+  // One pair present.
+  size_t ndx = 0;
+  EXPECT_EQ(1U, packed[ndx++]);
+  EXPECT_EQ(0xf00d0000, packed[ndx++]);
+  EXPECT_EQ(1U, packed[ndx++]); // group_size
+  EXPECT_EQ(8U, packed[ndx++]); // flags
+  // Delta from the neutral element is zero
+  EXPECT_EQ(0U, packed[ndx++]); // offset_delta
+  EXPECT_EQ(11U, packed[ndx++]); // info
+  EXPECT_EQ(10000U, packed[ndx++]); // addend_delta
+
+  // Add a second relocation, 4 byte offset delta, 12 byte addend delta.
+  // same info
+  AddRelocation(0xf00d0004, 11U, 10012, &relocations);
+
+  packed.clear();
+  codec.Encode(relocations, &packed);
+
+  ndx = 0;
+  EXPECT_EQ(8U, packed.size());
+
+  EXPECT_EQ(2U, packed[ndx++]); // relocs count
+  EXPECT_EQ(0xf00cfffc, packed[ndx++]); // initial offset
+  EXPECT_EQ(2U, packed[ndx++]); // group count
+  EXPECT_EQ(11U, packed[ndx++]); // flags
+  EXPECT_EQ(4U, packed[ndx++]); // group offset delta
+  EXPECT_EQ(11U, packed[ndx++]); // info
+
+  EXPECT_EQ(10000U, packed[ndx++]); // addend delta
+  EXPECT_EQ(12U, packed[ndx++]); // addend delta
+
+  // Add a third relocation, 4 byte offset delta, 12 byte addend delta.
+  // different info
+  AddRelocation(0xf00d0008, 41U, 10024, &relocations);
+
+  // Add three more relocations, 8 byte offset deltas, -24 byte addend deltas.
+  AddRelocation(0xf00d0010, 42U, 10000, &relocations);
+  AddRelocation(0xf00d0018, 42U, 9976, &relocations);
+  AddRelocation(0xf00d0020, 42U, 9952, &relocations);
+
+  AddRelocation(0xf00d2028, 1042U, 0, &relocations);
+  AddRelocation(0xf00d2030, 3442U, 0, &relocations);
+
+  packed.clear();
+  codec.Encode(relocations, &packed);
+
+  ndx = 0;
+  EXPECT_EQ(26U, packed.size());
+  // Total number of relocs
+  EXPECT_EQ(8U, packed[ndx++]);
+  EXPECT_EQ(0xf00cfffc, packed[ndx++]);
+  // 2 in first group
+  EXPECT_EQ(2U, packed[ndx++]);
+  EXPECT_EQ(11U, packed[ndx++]); //flags
+  EXPECT_EQ(4U, packed[ndx++]); // group offset delta
+  EXPECT_EQ(11U, packed[ndx++]); // info
+
+  // Initial relocation.
+  EXPECT_EQ(10000U, packed[ndx++]); // addend delta
+  // Two relocations, 4 byte offset deltas, 12 byte addend deltas.
+  EXPECT_EQ(12U, packed[ndx++]); // addend delta
+
+  // second group has only one reloc
+  EXPECT_EQ(1U, packed[ndx++]); // count
+  EXPECT_EQ(8U, packed[ndx++]); // flags
+
+  EXPECT_EQ(4U, packed[ndx++]); // offset delta
+  EXPECT_EQ(41U, packed[ndx++]); // info
+  EXPECT_EQ(12U, packed[ndx++]); // addend delta
+
+  // next - 3 relocs grouped by info
+  EXPECT_EQ(3U, packed[ndx++]); // count
+  EXPECT_EQ(11U, packed[ndx++]); // flags
+  EXPECT_EQ(8U, packed[ndx++]); // group offset delta
+  EXPECT_EQ(42U, packed[ndx++]); // info
+  // Three relocations, 8 byte offset deltas, -24 byte addend deltas.
+  EXPECT_EQ(static_cast<typename ELF::Addr>(-24), packed[ndx++]);
+  EXPECT_EQ(static_cast<typename ELF::Addr>(-24), packed[ndx++]);
+  EXPECT_EQ(static_cast<typename ELF::Addr>(-24), packed[ndx++]);
+
+  // and last - 2 relocations without addend
+  EXPECT_EQ(2U, packed[ndx++]);
+  EXPECT_EQ(0U, packed[ndx++]); // flags
+  // offset_deltas and r_infos for next 2 relocations
+  EXPECT_EQ(0x2008U, packed[ndx++]); // offset delta
+  EXPECT_EQ(1042U, packed[ndx++]); // r_info
+  EXPECT_EQ(0x8U, packed[ndx++]); // offset delta
+  EXPECT_EQ(3442U, packed[ndx++]); // r_info
+
+  EXPECT_EQ(packed.size(), ndx);
+}
+
+TEST(Delta, Encode32) {
+  encode<ELF32_traits>();
+}
+
+TEST(Delta, Encode64) {
+  encode<ELF64_traits>();
+}
+
+template <typename ELF>
+static void decode() {
+  std::vector<typename ELF::Addr> packed;
+  std::vector<typename ELF::Rela> relocations;
+
+  RelocationDeltaCodec<ELF> codec;
+  codec.Decode(packed, &relocations);
+
+  EXPECT_EQ(0U, relocations.size());
+
+  // Six pairs.
+  packed.push_back(6U); // count
+  packed.push_back(0xc0ddfffc); // base offset
+  packed.push_back(3U); // group count
+  packed.push_back(11U); // flags
+  packed.push_back(4U); // offset delta
+  packed.push_back(11U); // info
+  // Initial relocation.
+  packed.push_back(10000U);
+  // Two relocations, 4 byte offset deltas, 12 byte addend deltas.
+  packed.push_back(12U); // addend
+  packed.push_back(12U); // addend
+
+  // Three relocations, 8 byte offset deltas, -24 byte addend deltas.
+  packed.push_back(1U); // group count
+  packed.push_back(9U); // flags
+  packed.push_back(11U); // info
+
+  packed.push_back(8U);
+  packed.push_back(static_cast<typename ELF::Addr>(-24));
+  // next group with 2 relocs
+  packed.push_back(2U); // group count
+  packed.push_back(11U); // flags
+  packed.push_back(8U); // offset
+  packed.push_back(42U); // info
+
+  packed.push_back(static_cast<typename ELF::Addr>(-24)); // addend
+  packed.push_back(static_cast<typename ELF::Addr>(-24)); // addend
+
+  relocations.clear();
+  codec.Decode(packed, &relocations);
+
+  EXPECT_EQ(6U, relocations.size());
+  // Initial relocation.
+  EXPECT_TRUE(CheckRelocation(0xc0de0000, 11U, 10000, relocations[0]));
+  // Two relocations, 4 byte offset deltas, 12 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation(0xc0de0004, 11U, 10012, relocations[1]));
+  EXPECT_TRUE(CheckRelocation(0xc0de0008, 11U, 10024, relocations[2]));
+  // Three relocations, 8 byte offset deltas, -24 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation(0xc0de0010, 11U, 10000, relocations[3]));
+  EXPECT_TRUE(CheckRelocation(0xc0de0018, 42U, 9976, relocations[4]));
+  EXPECT_TRUE(CheckRelocation(0xc0de0020, 42U, 9952, relocations[5]));
+}
+
+TEST(Delta, Decode32) {
+  decode<ELF32_traits>();
+}
+
+TEST(Delta, Decode64) {
+  decode<ELF64_traits>();
+}
+
+// TODO (dimitry): add more tests (fix by 19 January 2038 03:14:07 UTC)
+// TODO (dimtiry): 1. Incorrect packed array for decode
+// TODO (dimtiry): 2. Try to catch situation where it is likely to get series of groups with size 1
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/elf_file.cc b/tools/relocation_packer/src/elf_file.cc
new file mode 100644
index 0000000..d06bd63
--- /dev/null
+++ b/tools/relocation_packer/src/elf_file.cc
@@ -0,0 +1,913 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Implementation notes:
+//
+// We need to remove a piece from the ELF shared library.  However, we also
+// want to avoid fixing DWARF cfi data and relative relocation addresses.
+// So after packing we shift offets and starting address of the RX segment
+// while preserving code/data vaddrs location.
+// This requires some fixups for symtab/hash/gnu_hash dynamic section addresses.
+
+#include "elf_file.h"
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <algorithm>
+#include <string>
+#include <vector>
+
+#include "debug.h"
+#include "elf_traits.h"
+#include "libelf.h"
+#include "packer.h"
+
+namespace relocation_packer {
+
+// Out-of-band dynamic tags used to indicate the offset and size of the
+// android packed relocations section.
+static constexpr int32_t DT_ANDROID_REL = DT_LOOS + 2;
+static constexpr int32_t DT_ANDROID_RELSZ = DT_LOOS + 3;
+
+static constexpr int32_t DT_ANDROID_RELA = DT_LOOS + 4;
+static constexpr int32_t DT_ANDROID_RELASZ = DT_LOOS + 5;
+
+static constexpr uint32_t SHT_ANDROID_REL = SHT_LOOS + 1;
+static constexpr uint32_t SHT_ANDROID_RELA = SHT_LOOS + 2;
+
+static const size_t kPageSize = 4096;
+
+// Alignment to preserve, in bytes.  This must be at least as large as the
+// largest d_align and sh_addralign values found in the loaded file.
+// Out of caution for RELRO page alignment, we preserve to a complete target
+// page.  See http://www.airs.com/blog/archives/189.
+static const size_t kPreserveAlignment = kPageSize;
+
+// Get section data.  Checks that the section has exactly one data entry,
+// so that the section size and the data size are the same.  True in
+// practice for all sections we resize when packing or unpacking.  Done
+// by ensuring that a call to elf_getdata(section, data) returns NULL as
+// the next data entry.
+static Elf_Data* GetSectionData(Elf_Scn* section) {
+  Elf_Data* data = elf_getdata(section, NULL);
+  CHECK(data && elf_getdata(section, data) == NULL);
+  return data;
+}
+
+// Rewrite section data.  Allocates new data and makes it the data element's
+// buffer.  Relies on program exit to free allocated data.
+static void RewriteSectionData(Elf_Scn* section,
+                               const void* section_data,
+                               size_t size) {
+  Elf_Data* data = GetSectionData(section);
+  CHECK(size == data->d_size);
+  uint8_t* area = new uint8_t[size];
+  memcpy(area, section_data, size);
+  data->d_buf = area;
+}
+
+// Verbose ELF header logging.
+template <typename Ehdr>
+static void VerboseLogElfHeader(const Ehdr* elf_header) {
+  VLOG(1) << "e_phoff = " << elf_header->e_phoff;
+  VLOG(1) << "e_shoff = " << elf_header->e_shoff;
+  VLOG(1) << "e_ehsize = " << elf_header->e_ehsize;
+  VLOG(1) << "e_phentsize = " << elf_header->e_phentsize;
+  VLOG(1) << "e_phnum = " << elf_header->e_phnum;
+  VLOG(1) << "e_shnum = " << elf_header->e_shnum;
+  VLOG(1) << "e_shstrndx = " << elf_header->e_shstrndx;
+}
+
+// Verbose ELF program header logging.
+template <typename Phdr>
+static void VerboseLogProgramHeader(size_t program_header_index,
+                             const Phdr* program_header) {
+  std::string type;
+  switch (program_header->p_type) {
+    case PT_NULL: type = "NULL"; break;
+    case PT_LOAD: type = "LOAD"; break;
+    case PT_DYNAMIC: type = "DYNAMIC"; break;
+    case PT_INTERP: type = "INTERP"; break;
+    case PT_PHDR: type = "PHDR"; break;
+    case PT_GNU_RELRO: type = "GNU_RELRO"; break;
+    case PT_GNU_STACK: type = "GNU_STACK"; break;
+    case PT_ARM_EXIDX: type = "EXIDX"; break;
+    default: type = "(OTHER)"; break;
+  }
+  VLOG(1) << "phdr[" << program_header_index << "] : " << type;
+  VLOG(1) << "  p_offset = " << program_header->p_offset;
+  VLOG(1) << "  p_vaddr = " << program_header->p_vaddr;
+  VLOG(1) << "  p_paddr = " << program_header->p_paddr;
+  VLOG(1) << "  p_filesz = " << program_header->p_filesz;
+  VLOG(1) << "  p_memsz = " << program_header->p_memsz;
+  VLOG(1) << "  p_flags = " << program_header->p_flags;
+  VLOG(1) << "  p_align = " << program_header->p_align;
+}
+
+// Verbose ELF section header logging.
+template <typename Shdr>
+static void VerboseLogSectionHeader(const std::string& section_name,
+                             const Shdr* section_header) {
+  VLOG(1) << "section " << section_name;
+  VLOG(1) << "  sh_addr = " << section_header->sh_addr;
+  VLOG(1) << "  sh_offset = " << section_header->sh_offset;
+  VLOG(1) << "  sh_size = " << section_header->sh_size;
+  VLOG(1) << "  sh_entsize = " << section_header->sh_entsize;
+  VLOG(1) << "  sh_addralign = " << section_header->sh_addralign;
+}
+
+// Verbose ELF section data logging.
+static void VerboseLogSectionData(const Elf_Data* data) {
+  VLOG(1) << "  data";
+  VLOG(1) << "    d_buf = " << data->d_buf;
+  VLOG(1) << "    d_off = " << data->d_off;
+  VLOG(1) << "    d_size = " << data->d_size;
+  VLOG(1) << "    d_align = " << data->d_align;
+}
+
+// Load the complete ELF file into a memory image in libelf, and identify
+// the .rel.dyn or .rela.dyn, .dynamic, and .android.rel.dyn or
+// .android.rela.dyn sections.  No-op if the ELF file has already been loaded.
+template <typename ELF>
+bool ElfFile<ELF>::Load() {
+  if (elf_)
+    return true;
+
+  Elf* elf = elf_begin(fd_, ELF_C_RDWR, NULL);
+  CHECK(elf);
+
+  if (elf_kind(elf) != ELF_K_ELF) {
+    LOG(ERROR) << "File not in ELF format";
+    return false;
+  }
+
+  auto elf_header = ELF::getehdr(elf);
+  if (!elf_header) {
+    LOG(ERROR) << "Failed to load ELF header: " << elf_errmsg(elf_errno());
+    return false;
+  }
+
+  if (elf_header->e_type != ET_DYN) {
+    LOG(ERROR) << "ELF file is not a shared object";
+    return false;
+  }
+
+  // Require that our endianness matches that of the target, and that both
+  // are little-endian.  Safe for all current build/target combinations.
+  const int endian = elf_header->e_ident[EI_DATA];
+  CHECK(endian == ELFDATA2LSB);
+  CHECK(__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__);
+
+  const int file_class = elf_header->e_ident[EI_CLASS];
+  VLOG(1) << "endian = " << endian << ", file class = " << file_class;
+  VerboseLogElfHeader(elf_header);
+
+  auto elf_program_header = ELF::getphdr(elf);
+  CHECK(elf_program_header != nullptr);
+
+  const typename ELF::Phdr* dynamic_program_header = NULL;
+  for (size_t i = 0; i < elf_header->e_phnum; ++i) {
+    auto program_header = &elf_program_header[i];
+    VerboseLogProgramHeader(i, program_header);
+
+    if (program_header->p_type == PT_DYNAMIC) {
+      CHECK(dynamic_program_header == NULL);
+      dynamic_program_header = program_header;
+    }
+  }
+  CHECK(dynamic_program_header != nullptr);
+
+  size_t string_index;
+  elf_getshdrstrndx(elf, &string_index);
+
+  // Notes of the dynamic relocations, packed relocations, and .dynamic
+  // sections.  Found while iterating sections, and later stored in class
+  // attributes.
+  Elf_Scn* found_relocations_section = nullptr;
+  Elf_Scn* found_dynamic_section = nullptr;
+
+  // Notes of relocation section types seen.  We require one or the other of
+  // these; both is unsupported.
+  bool has_rel_relocations = false;
+  bool has_rela_relocations = false;
+  bool has_android_relocations = false;
+
+  Elf_Scn* section = NULL;
+  while ((section = elf_nextscn(elf, section)) != nullptr) {
+    auto section_header = ELF::getshdr(section);
+    std::string name = elf_strptr(elf, string_index, section_header->sh_name);
+    VerboseLogSectionHeader(name, section_header);
+
+    // Note relocation section types.
+    if (section_header->sh_type == SHT_REL || section_header->sh_type == SHT_ANDROID_REL) {
+      has_rel_relocations = true;
+    }
+    if (section_header->sh_type == SHT_RELA || section_header->sh_type == SHT_ANDROID_RELA) {
+      has_rela_relocations = true;
+    }
+
+    // Note special sections as we encounter them.
+    if ((name == ".rel.dyn" || name == ".rela.dyn") &&
+        section_header->sh_size > 0) {
+      found_relocations_section = section;
+
+      // Note if relocation section is already packed
+      has_android_relocations =
+          section_header->sh_type == SHT_ANDROID_REL ||
+          section_header->sh_type == SHT_ANDROID_RELA;
+    }
+
+    if (section_header->sh_offset == dynamic_program_header->p_offset) {
+      found_dynamic_section = section;
+    }
+
+    // Ensure we preserve alignment, repeated later for the data block(s).
+    CHECK(section_header->sh_addralign <= kPreserveAlignment);
+
+    Elf_Data* data = NULL;
+    while ((data = elf_getdata(section, data)) != NULL) {
+      CHECK(data->d_align <= kPreserveAlignment);
+      VerboseLogSectionData(data);
+    }
+  }
+
+  // Loading failed if we did not find the required special sections.
+  if (!found_relocations_section) {
+    LOG(ERROR) << "Missing or empty .rel.dyn or .rela.dyn section";
+    return false;
+  }
+  if (!found_dynamic_section) {
+    LOG(ERROR) << "Missing .dynamic section";
+    return false;
+  }
+
+  // Loading failed if we could not identify the relocations type.
+  if (!has_rel_relocations && !has_rela_relocations) {
+    LOG(ERROR) << "No relocations sections found";
+    return false;
+  }
+  if (has_rel_relocations && has_rela_relocations) {
+    LOG(ERROR) << "Multiple relocations sections with different types found, "
+               << "not currently supported";
+    return false;
+  }
+
+  elf_ = elf;
+  relocations_section_ = found_relocations_section;
+  dynamic_section_ = found_dynamic_section;
+  relocations_type_ = has_rel_relocations ? REL : RELA;
+  has_android_relocations_ = has_android_relocations;
+  return true;
+}
+
+// Helper for ResizeSection().  Adjust the main ELF header for the hole.
+template <typename ELF>
+static void AdjustElfHeaderForHole(typename ELF::Ehdr* elf_header,
+                                   typename ELF::Off hole_start,
+                                   ssize_t hole_size) {
+  if (elf_header->e_phoff > hole_start) {
+    elf_header->e_phoff += hole_size;
+    VLOG(1) << "e_phoff adjusted to " << elf_header->e_phoff;
+  }
+  if (elf_header->e_shoff > hole_start) {
+    elf_header->e_shoff += hole_size;
+    VLOG(1) << "e_shoff adjusted to " << elf_header->e_shoff;
+  }
+}
+
+// Helper for ResizeSection().  Adjust all section headers for the hole.
+template <typename ELF>
+static void AdjustSectionHeadersForHole(Elf* elf,
+                                        typename ELF::Off hole_start,
+                                        ssize_t hole_size) {
+  size_t string_index;
+  elf_getshdrstrndx(elf, &string_index);
+
+  Elf_Scn* section = NULL;
+  while ((section = elf_nextscn(elf, section)) != NULL) {
+    auto section_header = ELF::getshdr(section);
+    std::string name = elf_strptr(elf, string_index, section_header->sh_name);
+
+    if (section_header->sh_offset > hole_start) {
+      section_header->sh_offset += hole_size;
+      VLOG(1) << "section " << name
+              << " sh_offset adjusted to " << section_header->sh_offset;
+    } else {
+      section_header->sh_addr -= hole_size;
+      VLOG(1) << "section " << name
+              << " sh_addr adjusted to " << section_header->sh_addr;
+    }
+  }
+}
+
+// Helper for ResizeSection().  Adjust the offsets of any program headers
+// that have offsets currently beyond the hole start.
+template <typename ELF>
+static void AdjustProgramHeaderOffsets(typename ELF::Phdr* program_headers,
+                                       size_t count,
+                                       typename ELF::Off hole_start,
+                                       ssize_t hole_size) {
+  for (size_t i = 0; i < count; ++i) {
+    typename ELF::Phdr* program_header = &program_headers[i];
+
+    if (program_header->p_offset > hole_start) {
+      // The hole start is past this segment, so adjust offset.
+      program_header->p_offset += hole_size;
+      VLOG(1) << "phdr[" << i
+              << "] p_offset adjusted to "<< program_header->p_offset;
+    } else {
+      program_header->p_vaddr -= hole_size;
+      program_header->p_paddr -= hole_size;
+      if (program_header->p_align > kPageSize) {
+        program_header->p_align = kPageSize;
+      }
+      VLOG(1) << "phdr[" << i
+              << "] p_vaddr adjusted to "<< program_header->p_vaddr
+              << "; p_paddr adjusted to "<< program_header->p_paddr
+              << "; p_align adjusted to "<< program_header->p_align;
+    }
+  }
+}
+
+// Helper for ResizeSection().  Find the first loadable segment in the
+// file.  We expect it to map from file offset zero.
+template <typename ELF>
+static typename ELF::Phdr* FindLoadSegmentForHole(typename ELF::Phdr* program_headers,
+                                                  size_t count,
+                                                  typename ELF::Off hole_start) {
+  for (size_t i = 0; i < count; ++i) {
+    typename ELF::Phdr* program_header = &program_headers[i];
+
+    if (program_header->p_type == PT_LOAD &&
+        program_header->p_offset <= hole_start &&
+        (program_header->p_offset + program_header->p_filesz) >= hole_start ) {
+      return program_header;
+    }
+  }
+  LOG(FATAL) << "Cannot locate a LOAD segment with hole_start=0x" << std::hex << hole_start;
+  NOTREACHED();
+
+  return nullptr;
+}
+
+// Helper for ResizeSection().  Rewrite program headers.
+template <typename ELF>
+static void RewriteProgramHeadersForHole(Elf* elf,
+                                         typename ELF::Off hole_start,
+                                         ssize_t hole_size) {
+  const typename ELF::Ehdr* elf_header = ELF::getehdr(elf);
+  CHECK(elf_header);
+
+  typename ELF::Phdr* elf_program_header = ELF::getphdr(elf);
+  CHECK(elf_program_header);
+
+  const size_t program_header_count = elf_header->e_phnum;
+
+  // Locate the segment that we can overwrite to form the new LOAD entry,
+  // and the segment that we are going to split into two parts.
+  typename ELF::Phdr* target_load_header =
+      FindLoadSegmentForHole<ELF>(elf_program_header, program_header_count, hole_start);
+
+  VLOG(1) << "phdr[" << target_load_header - elf_program_header << "] adjust";
+  // Adjust PT_LOAD program header memsz and filesz
+  target_load_header->p_filesz += hole_size;
+  target_load_header->p_memsz += hole_size;
+
+  // Adjust the offsets and p_vaddrs
+  AdjustProgramHeaderOffsets<ELF>(elf_program_header,
+                                  program_header_count,
+                                  hole_start,
+                                  hole_size);
+}
+
+// Helper for ResizeSection().  Locate and return the dynamic section.
+template <typename ELF>
+static Elf_Scn* GetDynamicSection(Elf* elf) {
+  const typename ELF::Ehdr* elf_header = ELF::getehdr(elf);
+  CHECK(elf_header);
+
+  const typename ELF::Phdr* elf_program_header = ELF::getphdr(elf);
+  CHECK(elf_program_header);
+
+  // Find the program header that describes the dynamic section.
+  const typename ELF::Phdr* dynamic_program_header = NULL;
+  for (size_t i = 0; i < elf_header->e_phnum; ++i) {
+    const typename ELF::Phdr* program_header = &elf_program_header[i];
+
+    if (program_header->p_type == PT_DYNAMIC) {
+      dynamic_program_header = program_header;
+    }
+  }
+  CHECK(dynamic_program_header);
+
+  // Now find the section with the same offset as this program header.
+  Elf_Scn* dynamic_section = NULL;
+  Elf_Scn* section = NULL;
+  while ((section = elf_nextscn(elf, section)) != NULL) {
+    typename ELF::Shdr* section_header = ELF::getshdr(section);
+
+    if (section_header->sh_offset == dynamic_program_header->p_offset) {
+      dynamic_section = section;
+    }
+  }
+  CHECK(dynamic_section != NULL);
+
+  return dynamic_section;
+}
+
+// Helper for ResizeSection().  Adjust the .dynamic section for the hole.
+template <typename ELF>
+void ElfFile<ELF>::AdjustDynamicSectionForHole(Elf_Scn* dynamic_section,
+                                               typename ELF::Off hole_start,
+                                               ssize_t hole_size,
+                                               relocations_type_t relocations_type) {
+  CHECK(relocations_type != NONE);
+  Elf_Data* data = GetSectionData(dynamic_section);
+
+  auto dynamic_base = reinterpret_cast<typename ELF::Dyn*>(data->d_buf);
+  std::vector<typename ELF::Dyn> dynamics(
+      dynamic_base,
+      dynamic_base + data->d_size / sizeof(dynamics[0]));
+
+  if (hole_size > 0) { // expanding
+    hole_start += hole_size;
+  }
+
+  for (size_t i = 0; i < dynamics.size(); ++i) {
+    typename ELF::Dyn* dynamic = &dynamics[i];
+    const typename ELF::Sword tag = dynamic->d_tag;
+
+    // Any tags that hold offsets are adjustment candidates.
+    const bool is_adjustable = (tag == DT_PLTGOT ||
+                                tag == DT_HASH ||
+                                tag == DT_GNU_HASH ||
+                                tag == DT_STRTAB ||
+                                tag == DT_SYMTAB ||
+                                tag == DT_RELA ||
+                                tag == DT_INIT ||
+                                tag == DT_FINI ||
+                                tag == DT_REL ||
+                                tag == DT_JMPREL ||
+                                tag == DT_INIT_ARRAY ||
+                                tag == DT_FINI_ARRAY ||
+                                tag == DT_VERSYM ||
+                                tag == DT_VERNEED ||
+                                tag == DT_VERDEF ||
+                                tag == DT_ANDROID_REL||
+                                tag == DT_ANDROID_RELA);
+
+    if (is_adjustable && dynamic->d_un.d_ptr <= hole_start) {
+      dynamic->d_un.d_ptr -= hole_size;
+      VLOG(1) << "dynamic[" << i << "] " << dynamic->d_tag
+              << " d_ptr adjusted to " << dynamic->d_un.d_ptr;
+    }
+
+    // DT_RELSZ or DT_RELASZ indicate the overall size of relocations.
+    // Only one will be present.  Adjust by hole size.
+    if (tag == DT_RELSZ || tag == DT_RELASZ || tag == DT_ANDROID_RELSZ || tag == DT_ANDROID_RELASZ) {
+      dynamic->d_un.d_val += hole_size;
+      VLOG(1) << "dynamic[" << i << "] " << dynamic->d_tag
+              << " d_val adjusted to " << dynamic->d_un.d_val;
+    }
+
+    // Special case: DT_MIPS_RLD_MAP2 stores the difference between dynamic
+    // entry address and the address of the _r_debug (used by GDB)
+    // since the dynamic section and target address are on the
+    // different sides of the hole it needs to be adjusted accordingly
+    if (tag == DT_MIPS_RLD_MAP2) {
+      dynamic->d_un.d_val += hole_size;
+      VLOG(1) << "dynamic[" << i << "] " << dynamic->d_tag
+              << " d_val adjusted to " << dynamic->d_un.d_val;
+    }
+
+    // Ignore DT_RELCOUNT and DT_RELACOUNT: (1) nobody uses them and
+    // technically (2) the relative relocation count is not changed.
+
+    // DT_RELENT and DT_RELAENT don't change, ignore them as well.
+  }
+
+  void* section_data = &dynamics[0];
+  size_t bytes = dynamics.size() * sizeof(dynamics[0]);
+  RewriteSectionData(dynamic_section, section_data, bytes);
+}
+
+// Resize a section.  If the new size is larger than the current size, open
+// up a hole by increasing file offsets that come after the hole.  If smaller
+// than the current size, remove the hole by decreasing those offsets.
+template <typename ELF>
+void ElfFile<ELF>::ResizeSection(Elf* elf, Elf_Scn* section, size_t new_size,
+                                 typename ELF::Word new_sh_type,
+                                 relocations_type_t relocations_type) {
+
+  size_t string_index;
+  elf_getshdrstrndx(elf, &string_index);
+  auto section_header = ELF::getshdr(section);
+  std::string name = elf_strptr(elf, string_index, section_header->sh_name);
+
+  if (section_header->sh_size == new_size) {
+    return;
+  }
+
+  // Require that the section size and the data size are the same.  True
+  // in practice for all sections we resize when packing or unpacking.
+  Elf_Data* data = GetSectionData(section);
+  CHECK(data->d_off == 0 && data->d_size == section_header->sh_size);
+
+  // Require that the section is not zero-length (that is, has allocated
+  // data that we can validly expand).
+  CHECK(data->d_size && data->d_buf);
+
+  const auto hole_start = section_header->sh_offset;
+  const ssize_t hole_size = new_size - data->d_size;
+
+  VLOG_IF(1, (hole_size > 0)) << "expand section (" << name << ") size: " <<
+      data->d_size << " -> " << (data->d_size + hole_size);
+  VLOG_IF(1, (hole_size < 0)) << "shrink section (" << name << ") size: " <<
+      data->d_size << " -> " << (data->d_size + hole_size);
+
+  // libelf overrides sh_entsize for known sh_types, so it does not matter what we set
+  // for SHT_REL/SHT_RELA.
+  typename ELF::Xword new_entsize =
+      (new_sh_type == SHT_ANDROID_REL || new_sh_type == SHT_ANDROID_RELA) ? 1 : 0;
+
+  VLOG(1) << "Update section (" << name << ") entry size: " <<
+      section_header->sh_entsize << " -> " << new_entsize;
+
+  // Resize the data and the section header.
+  data->d_size += hole_size;
+  section_header->sh_size += hole_size;
+  section_header->sh_entsize = new_entsize;
+  section_header->sh_type = new_sh_type;
+
+  // Add the hole size to all offsets in the ELF file that are after the
+  // start of the hole.  If the hole size is positive we are expanding the
+  // section to create a new hole; if negative, we are closing up a hole.
+
+  // Start with the main ELF header.
+  typename ELF::Ehdr* elf_header = ELF::getehdr(elf);
+  AdjustElfHeaderForHole<ELF>(elf_header, hole_start, hole_size);
+
+  // Adjust all section headers.
+  AdjustSectionHeadersForHole<ELF>(elf, hole_start, hole_size);
+
+  // Rewrite the program headers to either split or coalesce segments,
+  // and adjust dynamic entries to match.
+  RewriteProgramHeadersForHole<ELF>(elf, hole_start, hole_size);
+
+  Elf_Scn* dynamic_section = GetDynamicSection<ELF>(elf);
+  AdjustDynamicSectionForHole(dynamic_section, hole_start, hole_size, relocations_type);
+}
+
+// Find the first slot in a dynamics array with the given tag.  The array
+// always ends with a free (unused) element, and which we exclude from the
+// search.  Returns dynamics->size() if not found.
+template <typename ELF>
+static size_t FindDynamicEntry(typename ELF::Sword tag,
+                               std::vector<typename ELF::Dyn>* dynamics) {
+  // Loop until the penultimate entry.  We exclude the end sentinel.
+  for (size_t i = 0; i < dynamics->size() - 1; ++i) {
+    if (dynamics->at(i).d_tag == tag) {
+      return i;
+    }
+  }
+
+  // The tag was not found.
+  return dynamics->size();
+}
+
+// Replace dynamic entry.
+template <typename ELF>
+static void ReplaceDynamicEntry(typename ELF::Sword tag,
+                                const typename ELF::Dyn& dyn,
+                                std::vector<typename ELF::Dyn>* dynamics) {
+  const size_t slot = FindDynamicEntry<ELF>(tag, dynamics);
+  if (slot == dynamics->size()) {
+    LOG(FATAL) << "Dynamic slot is not found for tag=" << tag;
+  }
+
+  // Replace this entry with the one supplied.
+  dynamics->at(slot) = dyn;
+  VLOG(1) << "dynamic[" << slot << "] overwritten with " << dyn.d_tag;
+}
+
+// Remove relative entries from dynamic relocations and write as packed
+// data into android packed relocations.
+template <typename ELF>
+bool ElfFile<ELF>::PackRelocations() {
+  // Load the ELF file into libelf.
+  if (!Load()) {
+    LOG(ERROR) << "Failed to load as ELF";
+    return false;
+  }
+
+  // Retrieve the current dynamic relocations section data.
+  Elf_Data* data = GetSectionData(relocations_section_);
+  // we always pack rela, because packed format is pretty much the same
+  std::vector<typename ELF::Rela> relocations;
+
+  if (relocations_type_ == REL) {
+    // Convert data to a vector of relocations.
+    const typename ELF::Rel* relocations_base = reinterpret_cast<typename ELF::Rel*>(data->d_buf);
+    ConvertRelArrayToRelaVector(relocations_base,
+        data->d_size / sizeof(typename ELF::Rel), &relocations);
+    VLOG(1) << "Relocations   : REL";
+  } else if (relocations_type_ == RELA) {
+    // Convert data to a vector of relocations with addends.
+    const typename ELF::Rela* relocations_base = reinterpret_cast<typename ELF::Rela*>(data->d_buf);
+    relocations = std::vector<typename ELF::Rela>(
+        relocations_base,
+        relocations_base + data->d_size / sizeof(relocations[0]));
+
+    VLOG(1) << "Relocations   : RELA";
+  } else {
+    NOTREACHED();
+  }
+
+  return PackTypedRelocations(&relocations);
+}
+
+// Helper for PackRelocations().  Rel type is one of ELF::Rel or ELF::Rela.
+template <typename ELF>
+bool ElfFile<ELF>::PackTypedRelocations(std::vector<typename ELF::Rela>* relocations) {
+  typedef typename ELF::Rela Rela;
+
+  if (has_android_relocations_) {
+    LOG(INFO) << "Relocation table is already packed";
+    return true;
+  }
+
+  // If no relocations then we have nothing packable.  Perhaps
+  // the shared object has already been packed?
+  if (relocations->empty()) {
+    LOG(ERROR) << "No relocations found";
+    return false;
+  }
+
+  const size_t rel_size =
+      relocations_type_ == RELA ? sizeof(typename ELF::Rela) : sizeof(typename ELF::Rel);
+  const size_t initial_bytes = relocations->size() * rel_size;
+
+  VLOG(1) << "Unpacked                   : " << initial_bytes << " bytes";
+  std::vector<uint8_t> packed;
+  RelocationPacker<ELF> packer;
+
+  // Pack relocations: dry run to estimate memory savings.
+  packer.PackRelocations(*relocations, &packed);
+  const size_t packed_bytes_estimate = packed.size() * sizeof(packed[0]);
+  VLOG(1) << "Packed         (no padding): " << packed_bytes_estimate << " bytes";
+
+  if (packed.empty()) {
+    LOG(INFO) << "Too few relocations to pack";
+    return true;
+  }
+
+  // Pre-calculate the size of the hole we will close up when we rewrite
+  // dynamic relocations.  We have to adjust relocation addresses to
+  // account for this.
+  typename ELF::Shdr* section_header = ELF::getshdr(relocations_section_);
+  ssize_t hole_size = initial_bytes - packed_bytes_estimate;
+
+  // hole_size needs to be page_aligned.
+  hole_size -= hole_size % kPreserveAlignment;
+
+  LOG(INFO) << "Compaction                 : " << hole_size << " bytes";
+
+  // Adjusting for alignment may have removed any packing benefit.
+  if (hole_size == 0) {
+    LOG(INFO) << "Too few relocations to pack after alignment";
+    return true;
+  }
+
+  if (hole_size <= 0) {
+    LOG(INFO) << "Packing relocations saves no space";
+    return true;
+  }
+
+  size_t data_padding_bytes = is_padding_relocations_ ?
+      initial_bytes - packed_bytes_estimate :
+      initial_bytes - hole_size - packed_bytes_estimate;
+
+  // pad data
+  std::vector<uint8_t> padding(data_padding_bytes, 0);
+  packed.insert(packed.end(), padding.begin(), padding.end());
+
+  const void* packed_data = &packed[0];
+
+  // Run a loopback self-test as a check that packing is lossless.
+  std::vector<Rela> unpacked;
+  packer.UnpackRelocations(packed, &unpacked);
+  CHECK(unpacked.size() == relocations->size());
+  CHECK(!memcmp(&unpacked[0],
+                &relocations->at(0),
+                unpacked.size() * sizeof(unpacked[0])));
+
+  // Rewrite the current dynamic relocations section with packed one then shrink it to size.
+  const size_t bytes = packed.size() * sizeof(packed[0]);
+  ResizeSection(elf_, relocations_section_, bytes,
+      relocations_type_ == REL ? SHT_ANDROID_REL : SHT_ANDROID_RELA, relocations_type_);
+  RewriteSectionData(relocations_section_, packed_data, bytes);
+
+  // TODO (dimitry): fix string table and replace .rel.dyn/plt with .android.rel.dyn/plt
+
+  // Rewrite .dynamic and rename relocation tags describing the packed android
+  // relocations.
+  Elf_Data* data = GetSectionData(dynamic_section_);
+  const typename ELF::Dyn* dynamic_base = reinterpret_cast<typename ELF::Dyn*>(data->d_buf);
+  std::vector<typename ELF::Dyn> dynamics(
+      dynamic_base,
+      dynamic_base + data->d_size / sizeof(dynamics[0]));
+  section_header = ELF::getshdr(relocations_section_);
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_ANDROID_REL : DT_ANDROID_RELA;
+    dyn.d_un.d_ptr = section_header->sh_addr;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_REL : DT_RELA, dyn, &dynamics);
+  }
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_ANDROID_RELSZ : DT_ANDROID_RELASZ;
+    dyn.d_un.d_val = section_header->sh_size;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_RELSZ : DT_RELASZ, dyn, &dynamics);
+  }
+
+  const void* dynamics_data = &dynamics[0];
+  const size_t dynamics_bytes = dynamics.size() * sizeof(dynamics[0]);
+  RewriteSectionData(dynamic_section_, dynamics_data, dynamics_bytes);
+
+  Flush();
+  return true;
+}
+
+// Find packed relative relocations in the packed android relocations
+// section, unpack them, and rewrite the dynamic relocations section to
+// contain unpacked data.
+template <typename ELF>
+bool ElfFile<ELF>::UnpackRelocations() {
+  // Load the ELF file into libelf.
+  if (!Load()) {
+    LOG(ERROR) << "Failed to load as ELF";
+    return false;
+  }
+
+  typename ELF::Shdr* section_header = ELF::getshdr(relocations_section_);
+  // Retrieve the current packed android relocations section data.
+  Elf_Data* data = GetSectionData(relocations_section_);
+
+  // Convert data to a vector of bytes.
+  const uint8_t* packed_base = reinterpret_cast<uint8_t*>(data->d_buf);
+  std::vector<uint8_t> packed(
+      packed_base,
+      packed_base + data->d_size / sizeof(packed[0]));
+
+  if ((section_header->sh_type == SHT_ANDROID_RELA || section_header->sh_type == SHT_ANDROID_REL) &&
+      packed.size() > 3 &&
+      packed[0] == 'A' &&
+      packed[1] == 'P' &&
+      packed[2] == 'S' &&
+      packed[3] == '2') {
+    LOG(INFO) << "Relocations   : " << (relocations_type_ == REL ? "REL" : "RELA");
+  } else {
+    LOG(ERROR) << "Packed relocations not found (not packed?)";
+    return false;
+  }
+
+  return UnpackTypedRelocations(packed);
+}
+
+// Helper for UnpackRelocations().  Rel type is one of ELF::Rel or ELF::Rela.
+template <typename ELF>
+bool ElfFile<ELF>::UnpackTypedRelocations(const std::vector<uint8_t>& packed) {
+  // Unpack the data to re-materialize the relative relocations.
+  const size_t packed_bytes = packed.size() * sizeof(packed[0]);
+  LOG(INFO) << "Packed           : " << packed_bytes << " bytes";
+  std::vector<typename ELF::Rela> unpacked_relocations;
+  RelocationPacker<ELF> packer;
+  packer.UnpackRelocations(packed, &unpacked_relocations);
+
+  const size_t relocation_entry_size =
+      relocations_type_ == REL ? sizeof(typename ELF::Rel) : sizeof(typename ELF::Rela);
+  const size_t unpacked_bytes = unpacked_relocations.size() * relocation_entry_size;
+  LOG(INFO) << "Unpacked         : " << unpacked_bytes << " bytes";
+
+  // Retrieve the current dynamic relocations section data.
+  Elf_Data* data = GetSectionData(relocations_section_);
+
+  LOG(INFO) << "Relocations      : " << unpacked_relocations.size() << " entries";
+
+  // If we found the same number of null relocation entries in the dynamic
+  // relocations section as we hold as unpacked relative relocations, then
+  // this is a padded file.
+
+  const bool is_padded = packed_bytes == unpacked_bytes;
+
+  // Unless padded, pre-apply relative relocations to account for the
+  // hole, and pre-adjust all relocation offsets accordingly.
+  typename ELF::Shdr* section_header = ELF::getshdr(relocations_section_);
+
+  if (!is_padded) {
+    LOG(INFO) << "Expansion     : " << unpacked_bytes - packed_bytes << " bytes";
+  }
+
+  // Rewrite the current dynamic relocations section with unpacked version of
+  // relocations.
+  const void* section_data = nullptr;
+  std::vector<typename ELF::Rel> unpacked_rel_relocations;
+  if (relocations_type_ == RELA) {
+    section_data = &unpacked_relocations[0];
+  } else if (relocations_type_ == REL) {
+    ConvertRelaVectorToRelVector(unpacked_relocations, &unpacked_rel_relocations);
+    section_data = &unpacked_rel_relocations[0];
+  } else {
+    NOTREACHED();
+  }
+
+  ResizeSection(elf_, relocations_section_, unpacked_bytes,
+      relocations_type_ == REL ? SHT_REL : SHT_RELA, relocations_type_);
+  RewriteSectionData(relocations_section_, section_data, unpacked_bytes);
+
+  // Rewrite .dynamic to remove two tags describing packed android relocations.
+  data = GetSectionData(dynamic_section_);
+  const typename ELF::Dyn* dynamic_base = reinterpret_cast<typename ELF::Dyn*>(data->d_buf);
+  std::vector<typename ELF::Dyn> dynamics(
+      dynamic_base,
+      dynamic_base + data->d_size / sizeof(dynamics[0]));
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_REL : DT_RELA;
+    dyn.d_un.d_ptr = section_header->sh_addr;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_ANDROID_REL : DT_ANDROID_RELA,
+        dyn, &dynamics);
+  }
+
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_RELSZ : DT_RELASZ;
+    dyn.d_un.d_val = section_header->sh_size;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_ANDROID_RELSZ : DT_ANDROID_RELASZ,
+        dyn, &dynamics);
+  }
+
+  const void* dynamics_data = &dynamics[0];
+  const size_t dynamics_bytes = dynamics.size() * sizeof(dynamics[0]);
+  RewriteSectionData(dynamic_section_, dynamics_data, dynamics_bytes);
+
+  Flush();
+  return true;
+}
+
+// Flush rewritten shared object file data.
+template <typename ELF>
+void ElfFile<ELF>::Flush() {
+  // Flag all ELF data held in memory as needing to be written back to the
+  // file, and tell libelf that we have controlled the file layout.
+  elf_flagelf(elf_, ELF_C_SET, ELF_F_DIRTY);
+  elf_flagelf(elf_, ELF_C_SET, ELF_F_LAYOUT);
+
+  // Write ELF data back to disk.
+  const off_t file_bytes = elf_update(elf_, ELF_C_WRITE);
+  if (file_bytes == -1) {
+    LOG(ERROR) << "elf_update failed: " << elf_errmsg(elf_errno());
+  }
+
+  CHECK(file_bytes > 0);
+  VLOG(1) << "elf_update returned: " << file_bytes;
+
+  // Clean up libelf, and truncate the output file to the number of bytes
+  // written by elf_update().
+  elf_end(elf_);
+  elf_ = NULL;
+  const int truncate = ftruncate(fd_, file_bytes);
+  CHECK(truncate == 0);
+}
+
+template <typename ELF>
+void ElfFile<ELF>::ConvertRelArrayToRelaVector(const typename ELF::Rel* rel_array,
+                                               size_t rel_array_size,
+                                               std::vector<typename ELF::Rela>* rela_vector) {
+  for (size_t i = 0; i<rel_array_size; ++i) {
+    typename ELF::Rela rela;
+    rela.r_offset = rel_array[i].r_offset;
+    rela.r_info = rel_array[i].r_info;
+    rela.r_addend = 0;
+    rela_vector->push_back(rela);
+  }
+}
+
+template <typename ELF>
+void ElfFile<ELF>::ConvertRelaVectorToRelVector(const std::vector<typename ELF::Rela>& rela_vector,
+                                                std::vector<typename ELF::Rel>* rel_vector) {
+  for (auto rela : rela_vector) {
+    typename ELF::Rel rel;
+    rel.r_offset = rela.r_offset;
+    rel.r_info = rela.r_info;
+    CHECK(rela.r_addend == 0);
+    rel_vector->push_back(rel);
+  }
+}
+
+template class ElfFile<ELF32_traits>;
+template class ElfFile<ELF64_traits>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/elf_file.h b/tools/relocation_packer/src/elf_file.h
new file mode 100644
index 0000000..d6acc76
--- /dev/null
+++ b/tools/relocation_packer/src/elf_file.h
@@ -0,0 +1,121 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// ELF shared object file updates handler.
+//
+// Provides functions to pack relocations in the .rel.dyn or .rela.dyn
+// sections, and unpack to return the file to its pre-packed state.
+//
+// SetPadding() causes PackRelocations() to pad .rel.dyn or .rela.dyn with
+// NONE-type entries rather than cutting a hole out of the shared object
+// file.  This keeps all load addresses and offsets constant, and enables
+// easier debugging and testing.
+//
+// A packed shared object file is shorter than its non-packed original.
+// Unpacking a packed file restores the file to its non-packed state.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_
+#define TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_
+
+#include <string.h>
+#include <vector>
+
+#include "elf.h"
+#include "libelf.h"
+#include "packer.h"
+
+namespace relocation_packer {
+
+// An ElfFile reads shared objects, and shuttles relative relocations
+// between .rel.dyn or .rela.dyn and .android.rel.dyn or .android.rela.dyn
+// sections.
+template <typename ELF>
+class ElfFile {
+ public:
+  explicit ElfFile(int fd)
+      : fd_(fd), is_padding_relocations_(false), elf_(NULL),
+        relocations_section_(NULL), dynamic_section_(NULL),
+        relocations_type_(NONE), has_android_relocations_(false) {}
+  ~ElfFile() {}
+
+  // Set padding mode.  When padding, PackRelocations() will not shrink
+  // the .rel.dyn or .rela.dyn section, but instead replace relative with
+  // NONE-type entries.
+  // |flag| is true to pad .rel.dyn or .rela.dyn, false to shrink it.
+  inline void SetPadding(bool flag) { is_padding_relocations_ = flag; }
+
+  // Transfer relative relocations from .rel.dyn or .rela.dyn to a packed
+  // representation in .android.rel.dyn or .android.rela.dyn.  Returns true
+  // on success.
+  bool PackRelocations();
+
+  // Transfer relative relocations from a packed representation in
+  // .android.rel.dyn or .android.rela.dyn to .rel.dyn or .rela.dyn.  Returns
+  // true on success.
+  bool UnpackRelocations();
+
+ private:
+  enum relocations_type_t {
+    NONE = 0, REL, RELA
+  };
+
+  // Load a new ElfFile from a filedescriptor.  If flushing, the file must
+  // be open for read/write.  Returns true on successful ELF file load.
+  // |fd| is an open file descriptor for the shared object.
+  bool Load();
+
+  // Templated packer, helper for PackRelocations().  Rel type is one of
+  // ELF::Rel or ELF::Rela.
+  bool PackTypedRelocations(std::vector<typename ELF::Rela>* relocations);
+
+  // Templated unpacker, helper for UnpackRelocations().  Rel type is one of
+  // ELF::Rel or ELF::Rela.
+  bool UnpackTypedRelocations(const std::vector<uint8_t>& packed);
+
+  // Write ELF file changes.
+  void Flush();
+
+  void AdjustRelativeRelocationTargets(typename ELF::Off hole_start,
+                                       ssize_t hole_size,
+                                       std::vector<typename ELF::Rela>* relocations);
+
+  static void ResizeSection(Elf* elf, Elf_Scn* section, size_t new_size,
+                            typename ELF::Word new_sh_type, relocations_type_t relocations_type);
+
+  static void AdjustDynamicSectionForHole(Elf_Scn* dynamic_section,
+                                          typename ELF::Off hole_start,
+                                          ssize_t hole_size,
+                                          relocations_type_t relocations_type);
+
+  static void ConvertRelArrayToRelaVector(const typename ELF::Rel* rel_array, size_t rel_array_size,
+                                          std::vector<typename ELF::Rela>* rela_vector);
+
+  static void ConvertRelaVectorToRelVector(const std::vector<typename ELF::Rela>& rela_vector,
+                                           std::vector<typename ELF::Rel>* rel_vector);
+
+
+  // File descriptor opened on the shared object.
+  int fd_;
+
+  // If set, pad rather than shrink .rel.dyn or .rela.dyn.  Primarily for
+  // debugging, allows packing to be checked without affecting load addresses.
+  bool is_padding_relocations_;
+
+  // Libelf handle, assigned by Load().
+  Elf* elf_;
+
+  // Sections that we manipulate, assigned by Load().
+  Elf_Scn* relocations_section_;
+  Elf_Scn* dynamic_section_;
+
+  // Relocation type found, assigned by Load().
+  relocations_type_t relocations_type_;
+
+  // Elf-file has android relocations section
+  bool has_android_relocations_;
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_
diff --git a/tools/relocation_packer/src/elf_file_unittest.cc b/tools/relocation_packer/src/elf_file_unittest.cc
new file mode 100644
index 0000000..32f7968
--- /dev/null
+++ b/tools/relocation_packer/src/elf_file_unittest.cc
@@ -0,0 +1,194 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "elf_file.h"
+
+#include <limits.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string>
+#include <vector>
+#include "debug.h"
+#include "elf_traits.h"
+#include "gtest/gtest.h"
+
+namespace {
+
+void GetDataFilePath(const char* name, std::string* path) {
+  std::string data_dir;
+
+  const char* bindir = getenv("bindir");
+  if (bindir) {
+    data_dir = std::string(bindir);
+  } else {
+    char path[PATH_MAX];
+    memset(path, 0, sizeof(path));
+    ASSERT_NE(-1, readlink("/proc/self/exe", path, sizeof(path) - 1));
+
+    data_dir = std::string(path);
+    size_t pos = data_dir.rfind('/');
+    ASSERT_NE(std::string::npos, pos);
+
+    data_dir.erase(pos);
+  }
+
+  *path = data_dir + "/" + name;
+}
+
+void OpenRelocsTestFile(const char* name, FILE** stream) {
+  std::string path;
+  GetDataFilePath(name, &path);
+
+  FILE* testfile = fopen(path.c_str(), "rb");
+  ASSERT_FALSE(testfile == NULL) << "Error opening '" << path << "'";
+
+  FILE* temporary = tmpfile();
+  ASSERT_FALSE(temporary == NULL);
+
+  static const size_t buffer_size = 4096;
+  unsigned char buffer[buffer_size];
+
+  size_t bytes;
+  do {
+    bytes = fread(buffer, 1, sizeof(buffer), testfile);
+    ASSERT_EQ(bytes, fwrite(buffer, 1, bytes, temporary));
+  } while (bytes > 0);
+
+  ASSERT_EQ(0, fclose(testfile));
+  ASSERT_EQ(0, fseek(temporary, 0, SEEK_SET));
+  ASSERT_EQ(0, lseek(fileno(temporary), 0, SEEK_SET));
+
+  *stream = temporary;
+}
+
+void OpenRelocsTestFiles(const std::string& arch, FILE** relocs_so, FILE** packed_relocs_so) {
+  const std::string base = std::string("elf_file_unittest_relocs_") + arch;
+  const std::string relocs = base + ".so";
+  const std::string packed_relocs = base + "_packed.so";
+
+  OpenRelocsTestFile(relocs.c_str(), relocs_so);
+  OpenRelocsTestFile(packed_relocs.c_str(), packed_relocs_so);
+}
+
+void CloseRelocsTestFile(FILE* temporary) {
+  fclose(temporary);
+}
+
+void CloseRelocsTestFiles(FILE* relocs_so, FILE* packed_relocs_so) {
+  CloseRelocsTestFile(relocs_so);
+  CloseRelocsTestFile(packed_relocs_so);
+}
+
+void CheckFileContentsEqual(FILE* first, FILE* second) {
+  ASSERT_EQ(0, fseek(first, 0, SEEK_SET));
+  ASSERT_EQ(0, fseek(second, 0, SEEK_SET));
+
+  static const size_t buffer_size = 4096;
+  unsigned char first_buffer[buffer_size];
+  unsigned char second_buffer[buffer_size];
+
+  do {
+    size_t first_read = fread(first_buffer, 1, sizeof(first_buffer), first);
+    size_t second_read = fread(second_buffer, 1, sizeof(second_buffer), second);
+
+    EXPECT_EQ(first_read, second_read);
+    EXPECT_EQ(0, memcmp(first_buffer, second_buffer, first_read));
+  } while (!feof(first) && !feof(second));
+
+  EXPECT_TRUE(feof(first) && feof(second));
+}
+
+template <typename ELF>
+static void ProcessUnpack(FILE* relocs_so, FILE* packed_relocs_so) {
+  relocation_packer::ElfFile<ELF> elf_file(fileno(packed_relocs_so));
+
+  // Ensure packing already packed elf-file does not fail the build.
+  EXPECT_TRUE(elf_file.PackRelocations());
+
+  // Unpack golden relocations, and check files are now identical.
+  EXPECT_TRUE(elf_file.UnpackRelocations());
+  CheckFileContentsEqual(packed_relocs_so, relocs_so);
+
+  CloseRelocsTestFiles(relocs_so, packed_relocs_so);
+}
+
+static void RunUnpackRelocationsTestFor(const std::string& arch) {
+  ASSERT_NE(static_cast<uint32_t>(EV_NONE), elf_version(EV_CURRENT));
+
+  FILE* relocs_so = NULL;
+  FILE* packed_relocs_so = NULL;
+  OpenRelocsTestFiles(arch, &relocs_so, &packed_relocs_so);
+
+  if (relocs_so != NULL && packed_relocs_so != NULL) {
+    // lets detect elf class
+    ASSERT_EQ(0, fseek(relocs_so, EI_CLASS, SEEK_SET))
+        << "Invalid file length: " << strerror(errno);
+    uint8_t elf_class = 0;
+    ASSERT_EQ(1U, fread(&elf_class, 1, 1, relocs_so));
+    ASSERT_EQ(0, fseek(relocs_so, 0, SEEK_SET));
+    if (elf_class == ELFCLASS32) {
+      ProcessUnpack<ELF32_traits>(relocs_so, packed_relocs_so);
+    } else {
+      ProcessUnpack<ELF64_traits>(relocs_so, packed_relocs_so);
+    }
+  }
+}
+
+template <typename ELF>
+static void ProcessPack(FILE* relocs_so, FILE* packed_relocs_so) {
+  relocation_packer::ElfFile<ELF> elf_file(fileno(relocs_so));
+
+  // Ensure unpacking fails (not packed).
+  EXPECT_FALSE(elf_file.UnpackRelocations());
+
+  // Pack relocations, and check files are now identical.
+  EXPECT_TRUE(elf_file.PackRelocations());
+  CheckFileContentsEqual(relocs_so, packed_relocs_so);
+
+  CloseRelocsTestFiles(relocs_so, packed_relocs_so);
+}
+
+static void RunPackRelocationsTestFor(const std::string& arch) {
+  ASSERT_NE(static_cast<uint32_t>(EV_NONE), elf_version(EV_CURRENT));
+
+  FILE* relocs_so = NULL;
+  FILE* packed_relocs_so = NULL;
+  OpenRelocsTestFiles(arch, &relocs_so, &packed_relocs_so);
+
+  if (relocs_so != NULL && packed_relocs_so != NULL) {
+    // lets detect elf class
+    ASSERT_EQ(0, fseek(packed_relocs_so, EI_CLASS, SEEK_SET))
+        << "Invalid file length: " << strerror(errno);
+    uint8_t elf_class = 0;
+    ASSERT_EQ(1U, fread(&elf_class, 1, 1, packed_relocs_so));
+    fseek(packed_relocs_so, 0, SEEK_SET);
+    if (elf_class == ELFCLASS32) {
+      ProcessPack<ELF32_traits>(relocs_so, packed_relocs_so);
+    } else {
+      ProcessPack<ELF64_traits>(relocs_so, packed_relocs_so);
+    }
+  }
+}
+
+}  // namespace
+
+namespace relocation_packer {
+
+TEST(ElfFile, PackRelocationsArm32) {
+  RunPackRelocationsTestFor("arm32");
+}
+
+TEST(ElfFile, PackRelocationsArm64) {
+  RunPackRelocationsTestFor("arm64");
+}
+
+TEST(ElfFile, UnpackRelocationsArm32) {
+  RunUnpackRelocationsTestFor("arm32");
+}
+
+TEST(ElfFile, UnpackRelocationsArm64) {
+  RunUnpackRelocationsTestFor("arm64");
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/elf_traits.h b/tools/relocation_packer/src/elf_traits.h
new file mode 100644
index 0000000..1c938fa
--- /dev/null
+++ b/tools/relocation_packer/src/elf_traits.h
@@ -0,0 +1,68 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Target-specific ELF type traits.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_ELF_TRAITS_H_
+#define TOOLS_RELOCATION_PACKER_SRC_ELF_TRAITS_H_
+
+#include "elf.h"
+#include "libelf.h"
+
+#if !defined(DT_MIPS_RLD_MAP2)
+#define DT_MIPS_RLD_MAP2 0x70000035
+#endif
+
+// ELF is a traits structure used to provide convenient aliases for
+// 32/64 bit Elf types and functions, depending on the target file.
+
+struct ELF32_traits {
+  typedef Elf32_Addr Addr;
+  typedef Elf32_Dyn Dyn;
+  typedef Elf32_Ehdr Ehdr;
+  typedef Elf32_Off Off;
+  typedef Elf32_Phdr Phdr;
+  typedef Elf32_Rel Rel;
+  typedef Elf32_Rela Rela;
+  typedef Elf32_Shdr Shdr;
+  typedef Elf32_Sword Sword;
+  typedef Elf32_Sxword Sxword;
+  typedef Elf32_Sym Sym;
+  typedef Elf32_Word Word;
+  typedef Elf32_Xword Xword;
+  typedef Elf32_Half Half;
+
+  static inline Ehdr* getehdr(Elf* elf) { return elf32_getehdr(elf); }
+  static inline Phdr* getphdr(Elf* elf) { return elf32_getphdr(elf); }
+  static inline Shdr* getshdr(Elf_Scn* scn) { return elf32_getshdr(scn); }
+  static inline Word elf_r_type(Word info) { return ELF32_R_TYPE(info); }
+  static inline int elf_st_type(uint8_t info) { return ELF32_ST_TYPE(info); }
+  static inline Word elf_r_sym(Word info) { return ELF32_R_SYM(info); }
+};
+
+struct ELF64_traits {
+  typedef Elf64_Addr Addr;
+  typedef Elf64_Dyn Dyn;
+  typedef Elf64_Ehdr Ehdr;
+  typedef Elf64_Off Off;
+  typedef Elf64_Phdr Phdr;
+  typedef Elf64_Rel Rel;
+  typedef Elf64_Rela Rela;
+  typedef Elf64_Shdr Shdr;
+  typedef Elf64_Sword Sword;
+  typedef Elf64_Sxword Sxword;
+  typedef Elf64_Sym Sym;
+  typedef Elf64_Word Word;
+  typedef Elf64_Xword Xword;
+  typedef Elf64_Half Half;
+
+  static inline Ehdr* getehdr(Elf* elf) { return elf64_getehdr(elf); }
+  static inline Phdr* getphdr(Elf* elf) { return elf64_getphdr(elf); }
+  static inline Shdr* getshdr(Elf_Scn* scn) { return elf64_getshdr(scn); }
+  static inline Xword elf_r_type(Xword info) { return ELF64_R_TYPE(info); }
+  static inline int elf_st_type(uint8_t info) { return ELF64_ST_TYPE(info); }
+  static inline Word elf_r_sym(Xword info) { return ELF64_R_SYM(info); }
+};
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_ELF_TRAITS_H_
diff --git a/tools/relocation_packer/src/main.cc b/tools/relocation_packer/src/main.cc
new file mode 100644
index 0000000..8e9de6d
--- /dev/null
+++ b/tools/relocation_packer/src/main.cc
@@ -0,0 +1,150 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Tool to pack and unpack relative relocations in a shared library.
+//
+// Invoke with -v to trace actions taken when packing or unpacking.
+// Invoke with -p to pad removed relocations with R_*_NONE.  Suppresses
+// shrinking of .rel.dyn.
+// See PrintUsage() below for full usage details.
+//
+// NOTE: Breaks with libelf 0.152, which is buggy.  libelf 0.158 works.
+
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <string>
+
+#include "debug.h"
+#include "elf_file.h"
+#include "elf_traits.h"
+#include "libelf.h"
+
+#include "nativehelper/ScopedFd.h"
+
+static void PrintUsage(const char* argv0) {
+  std::string temporary = argv0;
+  const size_t last_slash = temporary.find_last_of("/");
+  if (last_slash != temporary.npos) {
+    temporary.erase(0, last_slash + 1);
+  }
+  const char* basename = temporary.c_str();
+
+  printf(
+      "Usage: %s [-u] [-v] [-p] file\n\n"
+      "Pack or unpack relative relocations in a shared library.\n\n"
+      "  -u, --unpack   unpack previously packed relative relocations\n"
+      "  -v, --verbose  trace object file modifications (for debugging)\n"
+      "  -p, --pad      do not shrink relocations, but pad (for debugging)\n\n",
+      basename);
+
+  printf(
+      "Debug sections are not handled, so packing should not be used on\n"
+      "shared libraries compiled for debugging or otherwise unstripped.\n");
+}
+
+int main(int argc, char* argv[]) {
+  bool is_unpacking = false;
+  bool is_verbose = false;
+  bool is_padding = false;
+
+  static const option options[] = {
+    {"unpack", 0, 0, 'u'}, {"verbose", 0, 0, 'v'}, {"pad", 0, 0, 'p'},
+    {"help", 0, 0, 'h'}, {NULL, 0, 0, 0}
+  };
+  bool has_options = true;
+  while (has_options) {
+    int c = getopt_long(argc, argv, "uvph", options, NULL);
+    switch (c) {
+      case 'u':
+        is_unpacking = true;
+        break;
+      case 'v':
+        is_verbose = true;
+        break;
+      case 'p':
+        is_padding = true;
+        break;
+      case 'h':
+        PrintUsage(argv[0]);
+        return 0;
+      case '?':
+        LOG(INFO) << "Try '" << argv[0] << " --help' for more information.";
+        return 1;
+      case -1:
+        has_options = false;
+        break;
+      default:
+        NOTREACHED();
+        return 1;
+    }
+  }
+  if (optind != argc - 1) {
+    LOG(INFO) << "Try '" << argv[0] << " --help' for more information.";
+    return 1;
+  }
+
+  if (elf_version(EV_CURRENT) == EV_NONE) {
+    LOG(WARNING) << "Elf Library is out of date!";
+  }
+
+  const char* file = argv[argc - 1];
+  ScopedFd fd(open(file, O_RDWR));
+  if (fd.get() == -1) {
+    LOG(ERROR) << file << ": " << strerror(errno);
+    return 1;
+  }
+
+  if (is_verbose)
+    relocation_packer::Logger::SetVerbose(1);
+
+  // We need to detect elf class in order to create
+  // correct implementation
+  uint8_t e_ident[EI_NIDENT];
+  if (TEMP_FAILURE_RETRY(read(fd.get(), e_ident, EI_NIDENT) != EI_NIDENT)) {
+    LOG(ERROR) << file << ": failed to read elf header:" << strerror(errno);
+    return 1;
+  }
+
+  if (TEMP_FAILURE_RETRY(lseek(fd.get(), 0, SEEK_SET)) != 0) {
+    LOG(ERROR) << file << ": lseek to 0 failed:" << strerror(errno);
+    return 1;
+  }
+
+  bool status = false;
+
+  if (e_ident[EI_CLASS] == ELFCLASS32) {
+    relocation_packer::ElfFile<ELF32_traits> elf_file(fd.get());
+    elf_file.SetPadding(is_padding);
+
+    if (is_unpacking) {
+      status = elf_file.UnpackRelocations();
+    } else {
+      status = elf_file.PackRelocations();
+    }
+  } else if (e_ident[EI_CLASS] == ELFCLASS64) {
+    relocation_packer::ElfFile<ELF64_traits> elf_file(fd.get());
+    elf_file.SetPadding(is_padding);
+
+    if (is_unpacking) {
+      status = elf_file.UnpackRelocations();
+    } else {
+      status = elf_file.PackRelocations();
+    }
+  } else {
+    LOG(ERROR) << file << ": unknown ELFCLASS: " << e_ident[EI_CLASS];
+    return 1;
+  }
+
+  if (!status) {
+    LOG(ERROR) << file << ": failed to pack/unpack file";
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/tools/relocation_packer/src/packer.cc b/tools/relocation_packer/src/packer.cc
new file mode 100644
index 0000000..433611f
--- /dev/null
+++ b/tools/relocation_packer/src/packer.cc
@@ -0,0 +1,67 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "packer.h"
+
+#include <vector>
+
+#include "debug.h"
+#include "delta_encoder.h"
+#include "elf_traits.h"
+#include "sleb128.h"
+
+namespace relocation_packer {
+
+// Pack relocations into a group encoded packed representation.
+template <typename ELF>
+void RelocationPacker<ELF>::PackRelocations(const std::vector<typename ELF::Rela>& relocations,
+                                            std::vector<uint8_t>* packed) {
+  // Run-length encode.
+  std::vector<typename ELF::Addr> packed_words;
+  RelocationDeltaCodec<ELF> codec;
+  codec.Encode(relocations, &packed_words);
+
+  // If insufficient data do nothing.
+  if (packed_words.empty())
+    return;
+
+  Sleb128Encoder<typename ELF::Addr> sleb128_encoder;
+
+  std::vector<uint8_t> sleb128_packed;
+
+  sleb128_encoder.EnqueueAll(packed_words);
+  sleb128_encoder.GetEncoding(&sleb128_packed);
+
+  packed->push_back('A');
+  packed->push_back('P');
+  packed->push_back('S');
+  packed->push_back('2');
+  packed->insert(packed->end(), sleb128_packed.begin(), sleb128_packed.end());
+}
+
+// Unpack relative relocations from a run-length encoded packed
+// representation.
+template <typename ELF>
+void RelocationPacker<ELF>::UnpackRelocations(
+    const std::vector<uint8_t>& packed,
+    std::vector<typename ELF::Rela>* relocations) {
+
+  std::vector<typename ELF::Addr> packed_words;
+  CHECK(packed.size() > 4 &&
+        packed[0] == 'A' &&
+        packed[1] == 'P' &&
+        packed[2] == 'S' &&
+        packed[3] == '2');
+
+  Sleb128Decoder<typename ELF::Addr> decoder(packed, 4);
+  decoder.DequeueAll(&packed_words);
+
+  RelocationDeltaCodec<ELF> codec;
+  codec.Decode(packed_words, relocations);
+}
+
+template class RelocationPacker<ELF32_traits>;
+template class RelocationPacker<ELF64_traits>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/packer.h b/tools/relocation_packer/src/packer.h
new file mode 100644
index 0000000..63f50e2
--- /dev/null
+++ b/tools/relocation_packer/src/packer.h
@@ -0,0 +1,37 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Pack relative relocations into a more compact form.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_PACKER_H_
+#define TOOLS_RELOCATION_PACKER_SRC_PACKER_H_
+
+#include <stdint.h>
+#include <vector>
+
+#include "elf.h"
+
+namespace relocation_packer {
+
+// A RelocationPacker packs vectors of relocations into more
+// compact forms, and unpacks them to reproduce the pre-packed data.
+template <typename ELF>
+class RelocationPacker {
+ public:
+  // Pack relocations into a more compact form.
+  // |relocations| is a vector of relocation structs.
+  // |packed| is the vector of packed bytes into which relocations are packed.
+  static void PackRelocations(const std::vector<typename ELF::Rela>& relocations,
+                              std::vector<uint8_t>* packed);
+
+  // Unpack relocations from their more compact form.
+  // |packed| is the vector of packed relocations.
+  // |relocations| is a vector of unpacked relocation structs.
+  static void UnpackRelocations(const std::vector<uint8_t>& packed,
+                                std::vector<typename ELF::Rela>* relocations);
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_PACKER_H_
diff --git a/tools/relocation_packer/src/packer_unittest.cc b/tools/relocation_packer/src/packer_unittest.cc
new file mode 100644
index 0000000..424b92c
--- /dev/null
+++ b/tools/relocation_packer/src/packer_unittest.cc
@@ -0,0 +1,300 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "packer.h"
+
+#include <vector>
+#include "elf.h"
+#include "elf_traits.h"
+#include "gtest/gtest.h"
+
+
+template <typename ELF>
+static void AddRelocation(typename ELF::Addr addr,
+                   typename ELF::Xword info,
+                   typename ELF::Sxword addend,
+                   std::vector<typename ELF::Rela>* relocations) {
+  typename ELF::Rela relocation;
+  relocation.r_offset = addr;
+  relocation.r_info = info;
+  relocation.r_addend = addend;
+
+  relocations->push_back(relocation);
+}
+
+template <typename ELF>
+static bool CheckRelocation(typename ELF::Addr addr,
+                     typename ELF::Xword info,
+                     typename ELF::Sxword addend,
+                     const typename ELF::Rela& relocation) {
+  return relocation.r_offset == addr &&
+      relocation.r_info == info &&
+      relocation.r_addend == addend;
+}
+
+namespace relocation_packer {
+
+template <typename ELF>
+static void DoPackNoAddend() {
+  std::vector<typename ELF::Rela> relocations;
+  std::vector<uint8_t> packed;
+  bool is_32 = sizeof(typename ELF::Addr) == 4;
+  // Initial relocation.
+  AddRelocation<ELF>(0xd1ce0000, 0x11, 0, &relocations);
+  // Two more relocations, 4 byte deltas.
+  AddRelocation<ELF>(0xd1ce0004, 0x11, 0, &relocations);
+  AddRelocation<ELF>(0xd1ce0008, 0x11, 0, &relocations);
+  // Three more relocations, 8 byte deltas.
+  AddRelocation<ELF>(0xd1ce0010, 0x11, 0, &relocations);
+  AddRelocation<ELF>(0xd1ce0018, 0x11, 0, &relocations);
+  AddRelocation<ELF>(0xd1ce0020, 0x11, 0, &relocations);
+
+  RelocationPacker<ELF> packer;
+
+  packed.clear();
+  packer.PackRelocations(relocations, &packed);
+
+  ASSERT_EQ(18U, packed.size());
+  // Identifier.
+  size_t ndx = 0;
+  EXPECT_EQ('A', packed[ndx++]);
+  EXPECT_EQ('P', packed[ndx++]);
+  EXPECT_EQ('S', packed[ndx++]);
+  EXPECT_EQ('2', packed[ndx++]);
+  // relocation count
+  EXPECT_EQ(6, packed[ndx++]);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 7d/0d (32/64bit)
+  EXPECT_EQ(0xfc, packed[ndx++]);
+  EXPECT_EQ(0xff, packed[ndx++]);
+  EXPECT_EQ(0xb7, packed[ndx++]);
+  EXPECT_EQ(0x8e, packed[ndx++]);
+  EXPECT_EQ(is_32 ? 0x7d : 0x0d, packed[ndx++]);
+  // first group
+  EXPECT_EQ(3, packed[ndx++]);  // size
+  EXPECT_EQ(3, packed[ndx++]); // flags
+  EXPECT_EQ(4, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x11, packed[ndx++]); // r_info
+  // second group
+  EXPECT_EQ(3, packed[ndx++]);  // size
+  EXPECT_EQ(3, packed[ndx++]); // flags
+  EXPECT_EQ(8, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x11, packed[ndx++]); // r_info
+
+  EXPECT_EQ(ndx, packed.size());
+}
+
+TEST(Packer, PackNoAddend32) {
+  DoPackNoAddend<ELF32_traits>();
+}
+
+TEST(Packer, PackNoAddend64) {
+  DoPackNoAddend<ELF64_traits>();
+}
+
+template <typename ELF>
+static void DoUnpackNoAddend() {
+  std::vector<typename ELF::Rela> relocations;
+  std::vector<uint8_t> packed;
+  bool is_32 = sizeof(typename ELF::Addr) == 4;
+  packed.push_back('A');
+  packed.push_back('P');
+  packed.push_back('S');
+  packed.push_back('2');
+  // relocation count
+  packed.push_back(6);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 7d/0d (32/64bit)
+  packed.push_back(0xfc);
+  packed.push_back(0xff);
+  packed.push_back(0xb7);
+  packed.push_back(0x8e);
+  packed.push_back(is_32 ? 0x7d : 0x0d);
+  // first group
+  packed.push_back(3);  // size
+  packed.push_back(3); // flags
+  packed.push_back(4); // r_offset_delta
+  packed.push_back(0x11); // r_info
+  // second group
+  packed.push_back(3);  // size
+  packed.push_back(3); // flags
+  packed.push_back(8); // r_offset_delta
+  packed.push_back(0x11); // r_info
+
+  RelocationPacker<ELF> packer;
+  packer.UnpackRelocations(packed, &relocations);
+
+  size_t ndx = 0;
+  EXPECT_EQ(6U, relocations.size());
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0000, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0004, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0008, 0x11, 0, relocations[ndx++]));
+
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0010, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0018, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0020, 0x11, 0, relocations[ndx++]));
+
+  EXPECT_EQ(ndx, relocations.size());
+}
+
+TEST(Packer, UnpackNoAddend32) {
+  DoUnpackNoAddend<ELF32_traits>();
+}
+
+TEST(Packer, UnpackNoAddend64) {
+  DoUnpackNoAddend<ELF64_traits>();
+}
+
+template <typename ELF>
+static void DoPackWithAddend() {
+  std::vector<typename ELF::Rela> relocations;
+
+  // Initial relocation.
+  AddRelocation<ELF>(0xd1ce0000, 0x01, 10024, &relocations);
+  // Two more relocations, 4 byte offset deltas, 12 byte addend deltas.
+  AddRelocation<ELF>(0xd1ce0004, 0x01, 10012, &relocations);
+  AddRelocation<ELF>(0xd1ce0008, 0x01, 10024, &relocations);
+  // Three more relocations, 8 byte deltas, -24 byte addend deltas.
+  AddRelocation<ELF>(0xd1ce0010, 0x01, 10000, &relocations);
+  AddRelocation<ELF>(0xd1ce0018, 0x01, 9976, &relocations);
+  AddRelocation<ELF>(0xd1ce0020, 0x01, 9952, &relocations);
+
+  std::vector<uint8_t> packed;
+
+  RelocationPacker<ELF> packer;
+
+  packed.clear();
+  packer.PackRelocations(relocations, &packed);
+
+  EXPECT_EQ(26U, packed.size());
+  size_t ndx = 0;
+  // Identifier.
+  EXPECT_EQ('A', packed[ndx++]);
+  EXPECT_EQ('P', packed[ndx++]);
+  EXPECT_EQ('S', packed[ndx++]);
+  EXPECT_EQ('2', packed[ndx++]);
+  // Relocation count
+  EXPECT_EQ(6U, packed[ndx++]);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d/7d (depending on ELF::Addr)
+  EXPECT_EQ(0xfc, packed[ndx++]);
+  EXPECT_EQ(0xff, packed[ndx++]);
+  EXPECT_EQ(0xb7, packed[ndx++]);
+  EXPECT_EQ(0x8e, packed[ndx++]);
+  if (sizeof(typename ELF::Addr) == 8) {
+    // positive for uint64_t
+    EXPECT_EQ(0x0d, packed[ndx++]);
+  } else {
+    // negative for uint32_t
+    EXPECT_EQ(0x7d, packed[ndx++]);
+  }
+  // group 1
+  EXPECT_EQ(0x03, packed[ndx++]); // size
+  EXPECT_EQ(0x0b, packed[ndx++]); // flags
+  EXPECT_EQ(0x04, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x01, packed[ndx++]); // r_info
+  // group 1 - addend 1: 10024 = 0xa8, 0xce, 0x80
+  EXPECT_EQ(0xa8, packed[ndx++]);
+  EXPECT_EQ(0xce, packed[ndx++]);
+  EXPECT_EQ(0x00, packed[ndx++]);
+  // group 1 - addend 2: -12 = 0x74
+  EXPECT_EQ(0x74, packed[ndx++]);
+  // group 1 - addend 3: +12 = 0x0c
+  EXPECT_EQ(0x0c, packed[ndx++]);
+
+  // group 2
+  EXPECT_EQ(0x03, packed[ndx++]); // size
+  EXPECT_EQ(0x0b, packed[ndx++]); // flags
+  EXPECT_EQ(0x08, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x01, packed[ndx++]); // r_info
+
+  // group 2 - addend 1: -24 = 0x68
+  EXPECT_EQ(0x68, packed[ndx++]);
+  // group 2 - addend 2: -24 = 0x68
+  EXPECT_EQ(0x68, packed[ndx++]);
+  // group 2 - addend 3: -24 = 0x68
+  EXPECT_EQ(0x68, packed[ndx++]);
+
+  EXPECT_EQ(ndx, packed.size());
+}
+
+TEST(Packer, PackWithAddend) {
+  DoPackWithAddend<ELF32_traits>();
+  DoPackWithAddend<ELF64_traits>();
+}
+
+template <typename ELF>
+static void DoUnpackWithAddend() {
+  std::vector<uint8_t> packed;
+  // Identifier.
+  packed.push_back('A');
+  packed.push_back('P');
+  packed.push_back('S');
+  packed.push_back('2');
+  // Relocation count
+  packed.push_back(6U);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d
+  packed.push_back(0xfc);
+  packed.push_back(0xff);
+  packed.push_back(0xb7);
+  packed.push_back(0x8e);
+  if (sizeof(typename ELF::Addr) == 8) {
+    // positive for uint64_t
+    packed.push_back(0x0d);
+  } else {
+    // negative for uint32_t
+    packed.push_back(0x7d);
+  }
+  // group 1
+  packed.push_back(0x03); // size
+  packed.push_back(0x0b); // flags
+  packed.push_back(0x04); // r_offset_delta
+  packed.push_back(0x01); // r_info
+  // group 1 - addend 1: 10024 = 0xa8, 0xce, 0x80
+  packed.push_back(0xa8);
+  packed.push_back(0xce);
+  packed.push_back(0x00);
+  // group 1 - addend 2: -12 = 0x74
+  packed.push_back(0x74);
+  // group 1 - addend 3: +12 = 0x0c
+  packed.push_back(0x0c);
+
+  // group 2
+  packed.push_back(0x03); // size
+  packed.push_back(0x0b); // flags
+  packed.push_back(0x08); // r_offset_delta
+  packed.push_back(0x01); // r_info
+
+  // group 2 - addend 1: -24 = 0x68
+  packed.push_back(0x68);
+  // group 2 - addend 2: -24 = 0x68
+  packed.push_back(0x68);
+  // group 2 - addend 3: -24 = 0x68
+  packed.push_back(0x68);
+
+  std::vector<typename ELF::Rela> relocations;
+
+  RelocationPacker<ELF> packer;
+
+  relocations.clear();
+  packer.UnpackRelocations(packed, &relocations);
+
+  EXPECT_EQ(6U, relocations.size());
+  size_t ndx = 0;
+  // Initial relocation.
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0000, 0x01, 10024, relocations[ndx++]));
+  // Two more relocations, 4 byte offset deltas, 12 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0004, 0x01, 10012, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0008, 0x01, 10024, relocations[ndx++]));
+  // Three more relocations, 8 byte offset deltas, -24 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0010, 0x01, 10000, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0018, 0x01, 9976, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0020, 0x01, 9952, relocations[ndx++]));
+
+  EXPECT_EQ(ndx, relocations.size());
+}
+
+TEST(Packer, UnpackWithAddend) {
+  DoUnpackWithAddend<ELF32_traits>();
+  DoUnpackWithAddend<ELF64_traits>();
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/sleb128.cc b/tools/relocation_packer/src/sleb128.cc
new file mode 100644
index 0000000..12c21e3
--- /dev/null
+++ b/tools/relocation_packer/src/sleb128.cc
@@ -0,0 +1,131 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sleb128.h"
+
+#include <limits.h>
+#include <stdint.h>
+#include <vector>
+
+#include "elf_traits.h"
+
+namespace {
+
+template <typename T>
+class uint_traits {};
+
+template <>
+class uint_traits<uint64_t> {
+ public:
+  typedef int64_t int_t;
+};
+
+template <>
+class uint_traits<uint32_t> {
+ public:
+  typedef int32_t int_t;
+};
+
+}
+
+namespace relocation_packer {
+
+// Empty constructor and destructor to silence chromium-style.
+template <typename uint_t>
+Sleb128Encoder<uint_t>::Sleb128Encoder() { }
+
+template <typename uint_t>
+Sleb128Encoder<uint_t>::~Sleb128Encoder() { }
+
+// Add a single value to the encoding.  Values are encoded with variable
+// length.  The least significant 7 bits of each byte hold 7 bits of data,
+// and the most significant bit is set on each byte except the last.  The
+// value is sign extended up to a multiple of 7 bits (ensuring that the
+// most significant bit is zero for a positive number and one for a
+// negative number).
+template <typename uint_t>
+void Sleb128Encoder<uint_t>::Enqueue(uint_t value) {
+  typedef typename uint_traits<uint_t>::int_t int_t;
+  static const size_t size = CHAR_BIT * sizeof(value);
+
+  bool more = true;
+  const bool negative = static_cast<int_t>(value) < 0;
+
+  while (more) {
+    uint8_t byte = value & 127;
+    value >>= 7;
+
+    // Sign extend if encoding a -ve value.
+    if (negative)
+      value |= -(static_cast<uint_t>(1) << (size - 7));
+
+    // The sign bit of byte is second high order bit.
+    const bool sign_bit = byte & 64;
+    if ((value == 0 && !sign_bit) || (value == static_cast<uint_t>(-1) && sign_bit))
+      more = false;
+    else
+      byte |= 128;
+    encoding_.push_back(byte);
+  }
+}
+
+// Add a vector of values to the encoding.
+template <typename uint_t>
+void Sleb128Encoder<uint_t>::EnqueueAll(const std::vector<uint_t>& values) {
+  for (size_t i = 0; i < values.size(); ++i) {
+    Enqueue(values[i]);
+  }
+}
+
+// Create a new decoder for the given encoded stream.
+template <typename uint_t>
+Sleb128Decoder<uint_t>::Sleb128Decoder(const std::vector<uint8_t>& encoding, size_t start_with) {
+  encoding_ = encoding;
+  cursor_ = start_with;
+}
+
+// Empty destructor to silence chromium-style.
+template <typename uint_t>
+Sleb128Decoder<uint_t>::~Sleb128Decoder() { }
+
+// Decode and retrieve a single value from the encoding.  Consume bytes
+// until one without its most significant bit is found, and re-form the
+// value from the 7 bit fields of the bytes consumed.
+template <typename uint_t>
+uint_t Sleb128Decoder<uint_t>::Dequeue() {
+  uint_t value = 0;
+  static const size_t size = CHAR_BIT * sizeof(value);
+
+  size_t shift = 0;
+  uint8_t byte;
+
+  // Loop until we reach a byte with its high order bit clear.
+  do {
+    byte = encoding_[cursor_++];
+    value |= (static_cast<uint_t>(byte & 127) << shift);
+    shift += 7;
+  } while (byte & 128);
+
+  // The sign bit is second high order bit of the final byte decoded.
+  // Sign extend if value is -ve and we did not shift all of it.
+  if (shift < size && (byte & 64))
+    value |= -(static_cast<uint_t>(1) << shift);
+
+  return static_cast<uint_t>(value);
+}
+
+// Decode and retrieve all remaining values from the encoding.
+template <typename uint_t>
+void Sleb128Decoder<uint_t>::DequeueAll(std::vector<uint_t>* values) {
+  while (cursor_ < encoding_.size()) {
+    values->push_back(Dequeue());
+  }
+}
+
+template class Sleb128Encoder<uint32_t>;
+template class Sleb128Encoder<uint64_t>;
+template class Sleb128Decoder<uint32_t>;
+template class Sleb128Decoder<uint64_t>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/sleb128.h b/tools/relocation_packer/src/sleb128.h
new file mode 100644
index 0000000..3a63f66
--- /dev/null
+++ b/tools/relocation_packer/src/sleb128.h
@@ -0,0 +1,76 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// SLEB128 encoder and decoder for packed relative relocations.
+//
+// Packed relocations consist of a large number of relatively small
+// integer values.  Encoding these as LEB128 saves space.
+//
+// For more on LEB128 see http://en.wikipedia.org/wiki/LEB128.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_SLEB128_H_
+#define TOOLS_RELOCATION_PACKER_SRC_SLEB128_H_
+
+#include <stdint.h>
+#include <unistd.h>
+#include <vector>
+
+#include "elf_traits.h"
+
+namespace relocation_packer {
+
+// Encode packed words as a signed LEB128 byte stream.
+template<typename int_t>
+class Sleb128Encoder {
+ public:
+  // Explicit (but empty) constructor and destructor, for chromium-style.
+  Sleb128Encoder();
+  ~Sleb128Encoder();
+
+  // Add a value to the encoding stream.
+  // |value| is the signed int to add.
+  void Enqueue(int_t value);
+
+  // Add a vector of values to the encoding stream.
+  // |values| is the vector of signed ints to add.
+  void EnqueueAll(const std::vector<int_t>& values);
+
+  // Retrieve the encoded representation of the values.
+  // |encoding| is the returned vector of encoded data.
+  void GetEncoding(std::vector<uint8_t>* encoding) { *encoding = encoding_; }
+
+ private:
+  // Growable vector holding the encoded LEB128 stream.
+  std::vector<uint8_t> encoding_;
+};
+
+// Decode a LEB128 byte stream to produce packed words.
+template <typename int_t>
+class Sleb128Decoder {
+ public:
+  // Create a new decoder for the given encoded stream.
+  // |encoding| is the vector of encoded data.
+  explicit Sleb128Decoder(const std::vector<uint8_t>& encoding, size_t start_with);
+
+  // Explicit (but empty) destructor, for chromium-style.
+  ~Sleb128Decoder();
+
+  // Retrieve the next value from the encoded stream.
+  int_t Dequeue();
+
+  // Retrieve all remaining values from the encoded stream.
+  // |values| is the vector of decoded data.
+  void DequeueAll(std::vector<int_t>* values);
+
+ private:
+  // Encoded LEB128 stream.
+  std::vector<uint8_t> encoding_;
+
+  // Cursor indicating the current stream retrieval point.
+  size_t cursor_;
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_SLEB128_H_
diff --git a/tools/relocation_packer/src/sleb128_unittest.cc b/tools/relocation_packer/src/sleb128_unittest.cc
new file mode 100644
index 0000000..49a553c
--- /dev/null
+++ b/tools/relocation_packer/src/sleb128_unittest.cc
@@ -0,0 +1,166 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sleb128.h"
+
+#include <vector>
+#include "elf_traits.h"
+#include "gtest/gtest.h"
+
+namespace relocation_packer {
+
+TEST(Sleb128, Encoder64) {
+  std::vector<uint64_t> values;
+  values.push_back(624485U);
+  values.push_back(0U);
+  values.push_back(1U);
+  values.push_back(63U);
+  values.push_back(64U);
+  values.push_back(static_cast<uint64_t>(-1));
+  values.push_back(static_cast<uint64_t>(-624485));
+
+  Sleb128Encoder<uint64_t> encoder;
+  encoder.EnqueueAll(values);
+
+  encoder.Enqueue(2147483647U);
+  encoder.Enqueue(static_cast<uint64_t>(-2147483648));
+  encoder.Enqueue(9223372036854775807ULL);
+  encoder.Enqueue(static_cast<uint64_t>(-9223372036854775807LL - 1));
+
+  std::vector<uint8_t> encoding;
+  encoder.GetEncoding(&encoding);
+
+  EXPECT_EQ(42u, encoding.size());
+  // 624485
+  EXPECT_EQ(0xe5, encoding[0]);
+  EXPECT_EQ(0x8e, encoding[1]);
+  EXPECT_EQ(0x26, encoding[2]);
+  // 0
+  EXPECT_EQ(0x00, encoding[3]);
+  // 1
+  EXPECT_EQ(0x01, encoding[4]);
+  // 63
+  EXPECT_EQ(0x3f, encoding[5]);
+  // 64
+  EXPECT_EQ(0xc0, encoding[6]);
+  EXPECT_EQ(0x00, encoding[7]);
+  // -1
+  EXPECT_EQ(0x7f, encoding[8]);
+  // -624485
+  EXPECT_EQ(0x9b, encoding[9]);
+  EXPECT_EQ(0xf1, encoding[10]);
+  EXPECT_EQ(0x59, encoding[11]);
+  // 2147483647
+  EXPECT_EQ(0xff, encoding[12]);
+  EXPECT_EQ(0xff, encoding[13]);
+  EXPECT_EQ(0xff, encoding[14]);
+  EXPECT_EQ(0xff, encoding[15]);
+  EXPECT_EQ(0x07, encoding[16]);
+  // -2147483648
+  EXPECT_EQ(0x80, encoding[17]);
+  EXPECT_EQ(0x80, encoding[18]);
+  EXPECT_EQ(0x80, encoding[19]);
+  EXPECT_EQ(0x80, encoding[20]);
+  EXPECT_EQ(0x78, encoding[21]);
+  // 9223372036854775807
+  EXPECT_EQ(0xff, encoding[22]);
+  EXPECT_EQ(0xff, encoding[23]);
+  EXPECT_EQ(0xff, encoding[24]);
+  EXPECT_EQ(0xff, encoding[25]);
+  EXPECT_EQ(0xff, encoding[26]);
+  EXPECT_EQ(0xff, encoding[27]);
+  EXPECT_EQ(0xff, encoding[28]);
+  EXPECT_EQ(0xff, encoding[29]);
+  EXPECT_EQ(0xff, encoding[30]);
+  EXPECT_EQ(0x00, encoding[31]);
+  // -9223372036854775808
+  EXPECT_EQ(0x80, encoding[32]);
+  EXPECT_EQ(0x80, encoding[33]);
+  EXPECT_EQ(0x80, encoding[34]);
+  EXPECT_EQ(0x80, encoding[35]);
+  EXPECT_EQ(0x80, encoding[36]);
+  EXPECT_EQ(0x80, encoding[37]);
+  EXPECT_EQ(0x80, encoding[38]);
+  EXPECT_EQ(0x80, encoding[39]);
+  EXPECT_EQ(0x80, encoding[40]);
+  EXPECT_EQ(0x7f, encoding[41]);
+}
+
+TEST(Sleb128, Decoder) {
+  std::vector<uint8_t> encoding;
+  // 624485
+  encoding.push_back(0xe5);
+  encoding.push_back(0x8e);
+  encoding.push_back(0x26);
+  // 0
+  encoding.push_back(0x00);
+  // 1
+  encoding.push_back(0x01);
+  // 63
+  encoding.push_back(0x3f);
+  // 64
+  encoding.push_back(0xc0);
+  encoding.push_back(0x00);
+  // -1
+  encoding.push_back(0x7f);
+  // -624485
+  encoding.push_back(0x9b);
+  encoding.push_back(0xf1);
+  encoding.push_back(0x59);
+  // 2147483647
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0x07);
+  // -2147483648
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x78);
+  // 9223372036854775807
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0x00);
+  // -9223372036854775808
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x7f);
+
+  Sleb128Decoder<uint64_t> decoder(encoding, 0);
+
+  EXPECT_EQ(624485U, decoder.Dequeue());
+
+  std::vector<uint64_t> dequeued;
+  decoder.DequeueAll(&dequeued);
+
+  EXPECT_EQ(10U, dequeued.size());
+  EXPECT_EQ(0U, dequeued[0]);
+  EXPECT_EQ(1U, dequeued[1]);
+  EXPECT_EQ(63U, dequeued[2]);
+  EXPECT_EQ(64U, dequeued[3]);
+  EXPECT_EQ(static_cast<uint64_t>(-1), dequeued[4]);
+  EXPECT_EQ(static_cast<uint64_t>(-624485), dequeued[5]);
+  EXPECT_EQ(2147483647U, dequeued[6]);
+  EXPECT_EQ(static_cast<uint64_t>(-2147483648), dequeued[7]);
+  EXPECT_EQ(9223372036854775807ULL, dequeued[8]);
+  EXPECT_EQ(static_cast<uint64_t>(-9223372036854775807LL - 1), dequeued[9]);
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs.cc b/tools/relocation_packer/test_data/elf_file_unittest_relocs.cc
new file mode 100644
index 0000000..5e1fa74
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs.cc
@@ -0,0 +1,1014 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Test data for packing/unpacking.  When compiled, creates a run of
+// relative relocations.
+//
+// See generate_elf_file_unittest_relocs.sh for instructions on how to build
+// unit test data from this source file.
+
+const int i = 0;
+
+// Generator:
+// python -c 'for i in xrange(0,1000):print"const void* pointer_%d = &i;"%i'
+const void* pointer_0 = &i;
+const void* pointer_1 = &i;
+const void* pointer_2 = &i;
+const void* pointer_3 = &i;
+const void* pointer_4 = &i;
+const void* pointer_5 = &i;
+const void* pointer_6 = &i;
+const void* pointer_7 = &i;
+const void* pointer_8 = &i;
+const void* pointer_9 = &i;
+const void* pointer_10 = &i;
+const void* pointer_11 = &i;
+const void* pointer_12 = &i;
+const void* pointer_13 = &i;
+const void* pointer_14 = &i;
+const void* pointer_15 = &i;
+const void* pointer_16 = &i;
+const void* pointer_17 = &i;
+const void* pointer_18 = &i;
+const void* pointer_19 = &i;
+const void* pointer_20 = &i;
+const void* pointer_21 = &i;
+const void* pointer_22 = &i;
+const void* pointer_23 = &i;
+const void* pointer_24 = &i;
+const void* pointer_25 = &i;
+const void* pointer_26 = &i;
+const void* pointer_27 = &i;
+const void* pointer_28 = &i;
+const void* pointer_29 = &i;
+const void* pointer_30 = &i;
+const void* pointer_31 = &i;
+const void* pointer_32 = &i;
+const void* pointer_33 = &i;
+const void* pointer_34 = &i;
+const void* pointer_35 = &i;
+const void* pointer_36 = &i;
+const void* pointer_37 = &i;
+const void* pointer_38 = &i;
+const void* pointer_39 = &i;
+const void* pointer_40 = &i;
+const void* pointer_41 = &i;
+const void* pointer_42 = &i;
+const void* pointer_43 = &i;
+const void* pointer_44 = &i;
+const void* pointer_45 = &i;
+const void* pointer_46 = &i;
+const void* pointer_47 = &i;
+const void* pointer_48 = &i;
+const void* pointer_49 = &i;
+const void* pointer_50 = &i;
+const void* pointer_51 = &i;
+const void* pointer_52 = &i;
+const void* pointer_53 = &i;
+const void* pointer_54 = &i;
+const void* pointer_55 = &i;
+const void* pointer_56 = &i;
+const void* pointer_57 = &i;
+const void* pointer_58 = &i;
+const void* pointer_59 = &i;
+const void* pointer_60 = &i;
+const void* pointer_61 = &i;
+const void* pointer_62 = &i;
+const void* pointer_63 = &i;
+const void* pointer_64 = &i;
+const void* pointer_65 = &i;
+const void* pointer_66 = &i;
+const void* pointer_67 = &i;
+const void* pointer_68 = &i;
+const void* pointer_69 = &i;
+const void* pointer_70 = &i;
+const void* pointer_71 = &i;
+const void* pointer_72 = &i;
+const void* pointer_73 = &i;
+const void* pointer_74 = &i;
+const void* pointer_75 = &i;
+const void* pointer_76 = &i;
+const void* pointer_77 = &i;
+const void* pointer_78 = &i;
+const void* pointer_79 = &i;
+const void* pointer_80 = &i;
+const void* pointer_81 = &i;
+const void* pointer_82 = &i;
+const void* pointer_83 = &i;
+const void* pointer_84 = &i;
+const void* pointer_85 = &i;
+const void* pointer_86 = &i;
+const void* pointer_87 = &i;
+const void* pointer_88 = &i;
+const void* pointer_89 = &i;
+const void* pointer_90 = &i;
+const void* pointer_91 = &i;
+const void* pointer_92 = &i;
+const void* pointer_93 = &i;
+const void* pointer_94 = &i;
+const void* pointer_95 = &i;
+const void* pointer_96 = &i;
+const void* pointer_97 = &i;
+const void* pointer_98 = &i;
+const void* pointer_99 = &i;
+const void* pointer_100 = &i;
+const void* pointer_101 = &i;
+const void* pointer_102 = &i;
+const void* pointer_103 = &i;
+const void* pointer_104 = &i;
+const void* pointer_105 = &i;
+const void* pointer_106 = &i;
+const void* pointer_107 = &i;
+const void* pointer_108 = &i;
+const void* pointer_109 = &i;
+const void* pointer_110 = &i;
+const void* pointer_111 = &i;
+const void* pointer_112 = &i;
+const void* pointer_113 = &i;
+const void* pointer_114 = &i;
+const void* pointer_115 = &i;
+const void* pointer_116 = &i;
+const void* pointer_117 = &i;
+const void* pointer_118 = &i;
+const void* pointer_119 = &i;
+const void* pointer_120 = &i;
+const void* pointer_121 = &i;
+const void* pointer_122 = &i;
+const void* pointer_123 = &i;
+const void* pointer_124 = &i;
+const void* pointer_125 = &i;
+const void* pointer_126 = &i;
+const void* pointer_127 = &i;
+const void* pointer_128 = &i;
+const void* pointer_129 = &i;
+const void* pointer_130 = &i;
+const void* pointer_131 = &i;
+const void* pointer_132 = &i;
+const void* pointer_133 = &i;
+const void* pointer_134 = &i;
+const void* pointer_135 = &i;
+const void* pointer_136 = &i;
+const void* pointer_137 = &i;
+const void* pointer_138 = &i;
+const void* pointer_139 = &i;
+const void* pointer_140 = &i;
+const void* pointer_141 = &i;
+const void* pointer_142 = &i;
+const void* pointer_143 = &i;
+const void* pointer_144 = &i;
+const void* pointer_145 = &i;
+const void* pointer_146 = &i;
+const void* pointer_147 = &i;
+const void* pointer_148 = &i;
+const void* pointer_149 = &i;
+const void* pointer_150 = &i;
+const void* pointer_151 = &i;
+const void* pointer_152 = &i;
+const void* pointer_153 = &i;
+const void* pointer_154 = &i;
+const void* pointer_155 = &i;
+const void* pointer_156 = &i;
+const void* pointer_157 = &i;
+const void* pointer_158 = &i;
+const void* pointer_159 = &i;
+const void* pointer_160 = &i;
+const void* pointer_161 = &i;
+const void* pointer_162 = &i;
+const void* pointer_163 = &i;
+const void* pointer_164 = &i;
+const void* pointer_165 = &i;
+const void* pointer_166 = &i;
+const void* pointer_167 = &i;
+const void* pointer_168 = &i;
+const void* pointer_169 = &i;
+const void* pointer_170 = &i;
+const void* pointer_171 = &i;
+const void* pointer_172 = &i;
+const void* pointer_173 = &i;
+const void* pointer_174 = &i;
+const void* pointer_175 = &i;
+const void* pointer_176 = &i;
+const void* pointer_177 = &i;
+const void* pointer_178 = &i;
+const void* pointer_179 = &i;
+const void* pointer_180 = &i;
+const void* pointer_181 = &i;
+const void* pointer_182 = &i;
+const void* pointer_183 = &i;
+const void* pointer_184 = &i;
+const void* pointer_185 = &i;
+const void* pointer_186 = &i;
+const void* pointer_187 = &i;
+const void* pointer_188 = &i;
+const void* pointer_189 = &i;
+const void* pointer_190 = &i;
+const void* pointer_191 = &i;
+const void* pointer_192 = &i;
+const void* pointer_193 = &i;
+const void* pointer_194 = &i;
+const void* pointer_195 = &i;
+const void* pointer_196 = &i;
+const void* pointer_197 = &i;
+const void* pointer_198 = &i;
+const void* pointer_199 = &i;
+const void* pointer_200 = &i;
+const void* pointer_201 = &i;
+const void* pointer_202 = &i;
+const void* pointer_203 = &i;
+const void* pointer_204 = &i;
+const void* pointer_205 = &i;
+const void* pointer_206 = &i;
+const void* pointer_207 = &i;
+const void* pointer_208 = &i;
+const void* pointer_209 = &i;
+const void* pointer_210 = &i;
+const void* pointer_211 = &i;
+const void* pointer_212 = &i;
+const void* pointer_213 = &i;
+const void* pointer_214 = &i;
+const void* pointer_215 = &i;
+const void* pointer_216 = &i;
+const void* pointer_217 = &i;
+const void* pointer_218 = &i;
+const void* pointer_219 = &i;
+const void* pointer_220 = &i;
+const void* pointer_221 = &i;
+const void* pointer_222 = &i;
+const void* pointer_223 = &i;
+const void* pointer_224 = &i;
+const void* pointer_225 = &i;
+const void* pointer_226 = &i;
+const void* pointer_227 = &i;
+const void* pointer_228 = &i;
+const void* pointer_229 = &i;
+const void* pointer_230 = &i;
+const void* pointer_231 = &i;
+const void* pointer_232 = &i;
+const void* pointer_233 = &i;
+const void* pointer_234 = &i;
+const void* pointer_235 = &i;
+const void* pointer_236 = &i;
+const void* pointer_237 = &i;
+const void* pointer_238 = &i;
+const void* pointer_239 = &i;
+const void* pointer_240 = &i;
+const void* pointer_241 = &i;
+const void* pointer_242 = &i;
+const void* pointer_243 = &i;
+const void* pointer_244 = &i;
+const void* pointer_245 = &i;
+const void* pointer_246 = &i;
+const void* pointer_247 = &i;
+const void* pointer_248 = &i;
+const void* pointer_249 = &i;
+const void* pointer_250 = &i;
+const void* pointer_251 = &i;
+const void* pointer_252 = &i;
+const void* pointer_253 = &i;
+const void* pointer_254 = &i;
+const void* pointer_255 = &i;
+const void* pointer_256 = &i;
+const void* pointer_257 = &i;
+const void* pointer_258 = &i;
+const void* pointer_259 = &i;
+const void* pointer_260 = &i;
+const void* pointer_261 = &i;
+const void* pointer_262 = &i;
+const void* pointer_263 = &i;
+const void* pointer_264 = &i;
+const void* pointer_265 = &i;
+const void* pointer_266 = &i;
+const void* pointer_267 = &i;
+const void* pointer_268 = &i;
+const void* pointer_269 = &i;
+const void* pointer_270 = &i;
+const void* pointer_271 = &i;
+const void* pointer_272 = &i;
+const void* pointer_273 = &i;
+const void* pointer_274 = &i;
+const void* pointer_275 = &i;
+const void* pointer_276 = &i;
+const void* pointer_277 = &i;
+const void* pointer_278 = &i;
+const void* pointer_279 = &i;
+const void* pointer_280 = &i;
+const void* pointer_281 = &i;
+const void* pointer_282 = &i;
+const void* pointer_283 = &i;
+const void* pointer_284 = &i;
+const void* pointer_285 = &i;
+const void* pointer_286 = &i;
+const void* pointer_287 = &i;
+const void* pointer_288 = &i;
+const void* pointer_289 = &i;
+const void* pointer_290 = &i;
+const void* pointer_291 = &i;
+const void* pointer_292 = &i;
+const void* pointer_293 = &i;
+const void* pointer_294 = &i;
+const void* pointer_295 = &i;
+const void* pointer_296 = &i;
+const void* pointer_297 = &i;
+const void* pointer_298 = &i;
+const void* pointer_299 = &i;
+const void* pointer_300 = &i;
+const void* pointer_301 = &i;
+const void* pointer_302 = &i;
+const void* pointer_303 = &i;
+const void* pointer_304 = &i;
+const void* pointer_305 = &i;
+const void* pointer_306 = &i;
+const void* pointer_307 = &i;
+const void* pointer_308 = &i;
+const void* pointer_309 = &i;
+const void* pointer_310 = &i;
+const void* pointer_311 = &i;
+const void* pointer_312 = &i;
+const void* pointer_313 = &i;
+const void* pointer_314 = &i;
+const void* pointer_315 = &i;
+const void* pointer_316 = &i;
+const void* pointer_317 = &i;
+const void* pointer_318 = &i;
+const void* pointer_319 = &i;
+const void* pointer_320 = &i;
+const void* pointer_321 = &i;
+const void* pointer_322 = &i;
+const void* pointer_323 = &i;
+const void* pointer_324 = &i;
+const void* pointer_325 = &i;
+const void* pointer_326 = &i;
+const void* pointer_327 = &i;
+const void* pointer_328 = &i;
+const void* pointer_329 = &i;
+const void* pointer_330 = &i;
+const void* pointer_331 = &i;
+const void* pointer_332 = &i;
+const void* pointer_333 = &i;
+const void* pointer_334 = &i;
+const void* pointer_335 = &i;
+const void* pointer_336 = &i;
+const void* pointer_337 = &i;
+const void* pointer_338 = &i;
+const void* pointer_339 = &i;
+const void* pointer_340 = &i;
+const void* pointer_341 = &i;
+const void* pointer_342 = &i;
+const void* pointer_343 = &i;
+const void* pointer_344 = &i;
+const void* pointer_345 = &i;
+const void* pointer_346 = &i;
+const void* pointer_347 = &i;
+const void* pointer_348 = &i;
+const void* pointer_349 = &i;
+const void* pointer_350 = &i;
+const void* pointer_351 = &i;
+const void* pointer_352 = &i;
+const void* pointer_353 = &i;
+const void* pointer_354 = &i;
+const void* pointer_355 = &i;
+const void* pointer_356 = &i;
+const void* pointer_357 = &i;
+const void* pointer_358 = &i;
+const void* pointer_359 = &i;
+const void* pointer_360 = &i;
+const void* pointer_361 = &i;
+const void* pointer_362 = &i;
+const void* pointer_363 = &i;
+const void* pointer_364 = &i;
+const void* pointer_365 = &i;
+const void* pointer_366 = &i;
+const void* pointer_367 = &i;
+const void* pointer_368 = &i;
+const void* pointer_369 = &i;
+const void* pointer_370 = &i;
+const void* pointer_371 = &i;
+const void* pointer_372 = &i;
+const void* pointer_373 = &i;
+const void* pointer_374 = &i;
+const void* pointer_375 = &i;
+const void* pointer_376 = &i;
+const void* pointer_377 = &i;
+const void* pointer_378 = &i;
+const void* pointer_379 = &i;
+const void* pointer_380 = &i;
+const void* pointer_381 = &i;
+const void* pointer_382 = &i;
+const void* pointer_383 = &i;
+const void* pointer_384 = &i;
+const void* pointer_385 = &i;
+const void* pointer_386 = &i;
+const void* pointer_387 = &i;
+const void* pointer_388 = &i;
+const void* pointer_389 = &i;
+const void* pointer_390 = &i;
+const void* pointer_391 = &i;
+const void* pointer_392 = &i;
+const void* pointer_393 = &i;
+const void* pointer_394 = &i;
+const void* pointer_395 = &i;
+const void* pointer_396 = &i;
+const void* pointer_397 = &i;
+const void* pointer_398 = &i;
+const void* pointer_399 = &i;
+const void* pointer_400 = &i;
+const void* pointer_401 = &i;
+const void* pointer_402 = &i;
+const void* pointer_403 = &i;
+const void* pointer_404 = &i;
+const void* pointer_405 = &i;
+const void* pointer_406 = &i;
+const void* pointer_407 = &i;
+const void* pointer_408 = &i;
+const void* pointer_409 = &i;
+const void* pointer_410 = &i;
+const void* pointer_411 = &i;
+const void* pointer_412 = &i;
+const void* pointer_413 = &i;
+const void* pointer_414 = &i;
+const void* pointer_415 = &i;
+const void* pointer_416 = &i;
+const void* pointer_417 = &i;
+const void* pointer_418 = &i;
+const void* pointer_419 = &i;
+const void* pointer_420 = &i;
+const void* pointer_421 = &i;
+const void* pointer_422 = &i;
+const void* pointer_423 = &i;
+const void* pointer_424 = &i;
+const void* pointer_425 = &i;
+const void* pointer_426 = &i;
+const void* pointer_427 = &i;
+const void* pointer_428 = &i;
+const void* pointer_429 = &i;
+const void* pointer_430 = &i;
+const void* pointer_431 = &i;
+const void* pointer_432 = &i;
+const void* pointer_433 = &i;
+const void* pointer_434 = &i;
+const void* pointer_435 = &i;
+const void* pointer_436 = &i;
+const void* pointer_437 = &i;
+const void* pointer_438 = &i;
+const void* pointer_439 = &i;
+const void* pointer_440 = &i;
+const void* pointer_441 = &i;
+const void* pointer_442 = &i;
+const void* pointer_443 = &i;
+const void* pointer_444 = &i;
+const void* pointer_445 = &i;
+const void* pointer_446 = &i;
+const void* pointer_447 = &i;
+const void* pointer_448 = &i;
+const void* pointer_449 = &i;
+const void* pointer_450 = &i;
+const void* pointer_451 = &i;
+const void* pointer_452 = &i;
+const void* pointer_453 = &i;
+const void* pointer_454 = &i;
+const void* pointer_455 = &i;
+const void* pointer_456 = &i;
+const void* pointer_457 = &i;
+const void* pointer_458 = &i;
+const void* pointer_459 = &i;
+const void* pointer_460 = &i;
+const void* pointer_461 = &i;
+const void* pointer_462 = &i;
+const void* pointer_463 = &i;
+const void* pointer_464 = &i;
+const void* pointer_465 = &i;
+const void* pointer_466 = &i;
+const void* pointer_467 = &i;
+const void* pointer_468 = &i;
+const void* pointer_469 = &i;
+const void* pointer_470 = &i;
+const void* pointer_471 = &i;
+const void* pointer_472 = &i;
+const void* pointer_473 = &i;
+const void* pointer_474 = &i;
+const void* pointer_475 = &i;
+const void* pointer_476 = &i;
+const void* pointer_477 = &i;
+const void* pointer_478 = &i;
+const void* pointer_479 = &i;
+const void* pointer_480 = &i;
+const void* pointer_481 = &i;
+const void* pointer_482 = &i;
+const void* pointer_483 = &i;
+const void* pointer_484 = &i;
+const void* pointer_485 = &i;
+const void* pointer_486 = &i;
+const void* pointer_487 = &i;
+const void* pointer_488 = &i;
+const void* pointer_489 = &i;
+const void* pointer_490 = &i;
+const void* pointer_491 = &i;
+const void* pointer_492 = &i;
+const void* pointer_493 = &i;
+const void* pointer_494 = &i;
+const void* pointer_495 = &i;
+const void* pointer_496 = &i;
+const void* pointer_497 = &i;
+const void* pointer_498 = &i;
+const void* pointer_499 = &i;
+const void* pointer_500 = &i;
+const void* pointer_501 = &i;
+const void* pointer_502 = &i;
+const void* pointer_503 = &i;
+const void* pointer_504 = &i;
+const void* pointer_505 = &i;
+const void* pointer_506 = &i;
+const void* pointer_507 = &i;
+const void* pointer_508 = &i;
+const void* pointer_509 = &i;
+const void* pointer_510 = &i;
+const void* pointer_511 = &i;
+const void* pointer_512 = &i;
+const void* pointer_513 = &i;
+const void* pointer_514 = &i;
+const void* pointer_515 = &i;
+const void* pointer_516 = &i;
+const void* pointer_517 = &i;
+const void* pointer_518 = &i;
+const void* pointer_519 = &i;
+const void* pointer_520 = &i;
+const void* pointer_521 = &i;
+const void* pointer_522 = &i;
+const void* pointer_523 = &i;
+const void* pointer_524 = &i;
+const void* pointer_525 = &i;
+const void* pointer_526 = &i;
+const void* pointer_527 = &i;
+const void* pointer_528 = &i;
+const void* pointer_529 = &i;
+const void* pointer_530 = &i;
+const void* pointer_531 = &i;
+const void* pointer_532 = &i;
+const void* pointer_533 = &i;
+const void* pointer_534 = &i;
+const void* pointer_535 = &i;
+const void* pointer_536 = &i;
+const void* pointer_537 = &i;
+const void* pointer_538 = &i;
+const void* pointer_539 = &i;
+const void* pointer_540 = &i;
+const void* pointer_541 = &i;
+const void* pointer_542 = &i;
+const void* pointer_543 = &i;
+const void* pointer_544 = &i;
+const void* pointer_545 = &i;
+const void* pointer_546 = &i;
+const void* pointer_547 = &i;
+const void* pointer_548 = &i;
+const void* pointer_549 = &i;
+const void* pointer_550 = &i;
+const void* pointer_551 = &i;
+const void* pointer_552 = &i;
+const void* pointer_553 = &i;
+const void* pointer_554 = &i;
+const void* pointer_555 = &i;
+const void* pointer_556 = &i;
+const void* pointer_557 = &i;
+const void* pointer_558 = &i;
+const void* pointer_559 = &i;
+const void* pointer_560 = &i;
+const void* pointer_561 = &i;
+const void* pointer_562 = &i;
+const void* pointer_563 = &i;
+const void* pointer_564 = &i;
+const void* pointer_565 = &i;
+const void* pointer_566 = &i;
+const void* pointer_567 = &i;
+const void* pointer_568 = &i;
+const void* pointer_569 = &i;
+const void* pointer_570 = &i;
+const void* pointer_571 = &i;
+const void* pointer_572 = &i;
+const void* pointer_573 = &i;
+const void* pointer_574 = &i;
+const void* pointer_575 = &i;
+const void* pointer_576 = &i;
+const void* pointer_577 = &i;
+const void* pointer_578 = &i;
+const void* pointer_579 = &i;
+const void* pointer_580 = &i;
+const void* pointer_581 = &i;
+const void* pointer_582 = &i;
+const void* pointer_583 = &i;
+const void* pointer_584 = &i;
+const void* pointer_585 = &i;
+const void* pointer_586 = &i;
+const void* pointer_587 = &i;
+const void* pointer_588 = &i;
+const void* pointer_589 = &i;
+const void* pointer_590 = &i;
+const void* pointer_591 = &i;
+const void* pointer_592 = &i;
+const void* pointer_593 = &i;
+const void* pointer_594 = &i;
+const void* pointer_595 = &i;
+const void* pointer_596 = &i;
+const void* pointer_597 = &i;
+const void* pointer_598 = &i;
+const void* pointer_599 = &i;
+const void* pointer_600 = &i;
+const void* pointer_601 = &i;
+const void* pointer_602 = &i;
+const void* pointer_603 = &i;
+const void* pointer_604 = &i;
+const void* pointer_605 = &i;
+const void* pointer_606 = &i;
+const void* pointer_607 = &i;
+const void* pointer_608 = &i;
+const void* pointer_609 = &i;
+const void* pointer_610 = &i;
+const void* pointer_611 = &i;
+const void* pointer_612 = &i;
+const void* pointer_613 = &i;
+const void* pointer_614 = &i;
+const void* pointer_615 = &i;
+const void* pointer_616 = &i;
+const void* pointer_617 = &i;
+const void* pointer_618 = &i;
+const void* pointer_619 = &i;
+const void* pointer_620 = &i;
+const void* pointer_621 = &i;
+const void* pointer_622 = &i;
+const void* pointer_623 = &i;
+const void* pointer_624 = &i;
+const void* pointer_625 = &i;
+const void* pointer_626 = &i;
+const void* pointer_627 = &i;
+const void* pointer_628 = &i;
+const void* pointer_629 = &i;
+const void* pointer_630 = &i;
+const void* pointer_631 = &i;
+const void* pointer_632 = &i;
+const void* pointer_633 = &i;
+const void* pointer_634 = &i;
+const void* pointer_635 = &i;
+const void* pointer_636 = &i;
+const void* pointer_637 = &i;
+const void* pointer_638 = &i;
+const void* pointer_639 = &i;
+const void* pointer_640 = &i;
+const void* pointer_641 = &i;
+const void* pointer_642 = &i;
+const void* pointer_643 = &i;
+const void* pointer_644 = &i;
+const void* pointer_645 = &i;
+const void* pointer_646 = &i;
+const void* pointer_647 = &i;
+const void* pointer_648 = &i;
+const void* pointer_649 = &i;
+const void* pointer_650 = &i;
+const void* pointer_651 = &i;
+const void* pointer_652 = &i;
+const void* pointer_653 = &i;
+const void* pointer_654 = &i;
+const void* pointer_655 = &i;
+const void* pointer_656 = &i;
+const void* pointer_657 = &i;
+const void* pointer_658 = &i;
+const void* pointer_659 = &i;
+const void* pointer_660 = &i;
+const void* pointer_661 = &i;
+const void* pointer_662 = &i;
+const void* pointer_663 = &i;
+const void* pointer_664 = &i;
+const void* pointer_665 = &i;
+const void* pointer_666 = &i;
+const void* pointer_667 = &i;
+const void* pointer_668 = &i;
+const void* pointer_669 = &i;
+const void* pointer_670 = &i;
+const void* pointer_671 = &i;
+const void* pointer_672 = &i;
+const void* pointer_673 = &i;
+const void* pointer_674 = &i;
+const void* pointer_675 = &i;
+const void* pointer_676 = &i;
+const void* pointer_677 = &i;
+const void* pointer_678 = &i;
+const void* pointer_679 = &i;
+const void* pointer_680 = &i;
+const void* pointer_681 = &i;
+const void* pointer_682 = &i;
+const void* pointer_683 = &i;
+const void* pointer_684 = &i;
+const void* pointer_685 = &i;
+const void* pointer_686 = &i;
+const void* pointer_687 = &i;
+const void* pointer_688 = &i;
+const void* pointer_689 = &i;
+const void* pointer_690 = &i;
+const void* pointer_691 = &i;
+const void* pointer_692 = &i;
+const void* pointer_693 = &i;
+const void* pointer_694 = &i;
+const void* pointer_695 = &i;
+const void* pointer_696 = &i;
+const void* pointer_697 = &i;
+const void* pointer_698 = &i;
+const void* pointer_699 = &i;
+const void* pointer_700 = &i;
+const void* pointer_701 = &i;
+const void* pointer_702 = &i;
+const void* pointer_703 = &i;
+const void* pointer_704 = &i;
+const void* pointer_705 = &i;
+const void* pointer_706 = &i;
+const void* pointer_707 = &i;
+const void* pointer_708 = &i;
+const void* pointer_709 = &i;
+const void* pointer_710 = &i;
+const void* pointer_711 = &i;
+const void* pointer_712 = &i;
+const void* pointer_713 = &i;
+const void* pointer_714 = &i;
+const void* pointer_715 = &i;
+const void* pointer_716 = &i;
+const void* pointer_717 = &i;
+const void* pointer_718 = &i;
+const void* pointer_719 = &i;
+const void* pointer_720 = &i;
+const void* pointer_721 = &i;
+const void* pointer_722 = &i;
+const void* pointer_723 = &i;
+const void* pointer_724 = &i;
+const void* pointer_725 = &i;
+const void* pointer_726 = &i;
+const void* pointer_727 = &i;
+const void* pointer_728 = &i;
+const void* pointer_729 = &i;
+const void* pointer_730 = &i;
+const void* pointer_731 = &i;
+const void* pointer_732 = &i;
+const void* pointer_733 = &i;
+const void* pointer_734 = &i;
+const void* pointer_735 = &i;
+const void* pointer_736 = &i;
+const void* pointer_737 = &i;
+const void* pointer_738 = &i;
+const void* pointer_739 = &i;
+const void* pointer_740 = &i;
+const void* pointer_741 = &i;
+const void* pointer_742 = &i;
+const void* pointer_743 = &i;
+const void* pointer_744 = &i;
+const void* pointer_745 = &i;
+const void* pointer_746 = &i;
+const void* pointer_747 = &i;
+const void* pointer_748 = &i;
+const void* pointer_749 = &i;
+const void* pointer_750 = &i;
+const void* pointer_751 = &i;
+const void* pointer_752 = &i;
+const void* pointer_753 = &i;
+const void* pointer_754 = &i;
+const void* pointer_755 = &i;
+const void* pointer_756 = &i;
+const void* pointer_757 = &i;
+const void* pointer_758 = &i;
+const void* pointer_759 = &i;
+const void* pointer_760 = &i;
+const void* pointer_761 = &i;
+const void* pointer_762 = &i;
+const void* pointer_763 = &i;
+const void* pointer_764 = &i;
+const void* pointer_765 = &i;
+const void* pointer_766 = &i;
+const void* pointer_767 = &i;
+const void* pointer_768 = &i;
+const void* pointer_769 = &i;
+const void* pointer_770 = &i;
+const void* pointer_771 = &i;
+const void* pointer_772 = &i;
+const void* pointer_773 = &i;
+const void* pointer_774 = &i;
+const void* pointer_775 = &i;
+const void* pointer_776 = &i;
+const void* pointer_777 = &i;
+const void* pointer_778 = &i;
+const void* pointer_779 = &i;
+const void* pointer_780 = &i;
+const void* pointer_781 = &i;
+const void* pointer_782 = &i;
+const void* pointer_783 = &i;
+const void* pointer_784 = &i;
+const void* pointer_785 = &i;
+const void* pointer_786 = &i;
+const void* pointer_787 = &i;
+const void* pointer_788 = &i;
+const void* pointer_789 = &i;
+const void* pointer_790 = &i;
+const void* pointer_791 = &i;
+const void* pointer_792 = &i;
+const void* pointer_793 = &i;
+const void* pointer_794 = &i;
+const void* pointer_795 = &i;
+const void* pointer_796 = &i;
+const void* pointer_797 = &i;
+const void* pointer_798 = &i;
+const void* pointer_799 = &i;
+const void* pointer_800 = &i;
+const void* pointer_801 = &i;
+const void* pointer_802 = &i;
+const void* pointer_803 = &i;
+const void* pointer_804 = &i;
+const void* pointer_805 = &i;
+const void* pointer_806 = &i;
+const void* pointer_807 = &i;
+const void* pointer_808 = &i;
+const void* pointer_809 = &i;
+const void* pointer_810 = &i;
+const void* pointer_811 = &i;
+const void* pointer_812 = &i;
+const void* pointer_813 = &i;
+const void* pointer_814 = &i;
+const void* pointer_815 = &i;
+const void* pointer_816 = &i;
+const void* pointer_817 = &i;
+const void* pointer_818 = &i;
+const void* pointer_819 = &i;
+const void* pointer_820 = &i;
+const void* pointer_821 = &i;
+const void* pointer_822 = &i;
+const void* pointer_823 = &i;
+const void* pointer_824 = &i;
+const void* pointer_825 = &i;
+const void* pointer_826 = &i;
+const void* pointer_827 = &i;
+const void* pointer_828 = &i;
+const void* pointer_829 = &i;
+const void* pointer_830 = &i;
+const void* pointer_831 = &i;
+const void* pointer_832 = &i;
+const void* pointer_833 = &i;
+const void* pointer_834 = &i;
+const void* pointer_835 = &i;
+const void* pointer_836 = &i;
+const void* pointer_837 = &i;
+const void* pointer_838 = &i;
+const void* pointer_839 = &i;
+const void* pointer_840 = &i;
+const void* pointer_841 = &i;
+const void* pointer_842 = &i;
+const void* pointer_843 = &i;
+const void* pointer_844 = &i;
+const void* pointer_845 = &i;
+const void* pointer_846 = &i;
+const void* pointer_847 = &i;
+const void* pointer_848 = &i;
+const void* pointer_849 = &i;
+const void* pointer_850 = &i;
+const void* pointer_851 = &i;
+const void* pointer_852 = &i;
+const void* pointer_853 = &i;
+const void* pointer_854 = &i;
+const void* pointer_855 = &i;
+const void* pointer_856 = &i;
+const void* pointer_857 = &i;
+const void* pointer_858 = &i;
+const void* pointer_859 = &i;
+const void* pointer_860 = &i;
+const void* pointer_861 = &i;
+const void* pointer_862 = &i;
+const void* pointer_863 = &i;
+const void* pointer_864 = &i;
+const void* pointer_865 = &i;
+const void* pointer_866 = &i;
+const void* pointer_867 = &i;
+const void* pointer_868 = &i;
+const void* pointer_869 = &i;
+const void* pointer_870 = &i;
+const void* pointer_871 = &i;
+const void* pointer_872 = &i;
+const void* pointer_873 = &i;
+const void* pointer_874 = &i;
+const void* pointer_875 = &i;
+const void* pointer_876 = &i;
+const void* pointer_877 = &i;
+const void* pointer_878 = &i;
+const void* pointer_879 = &i;
+const void* pointer_880 = &i;
+const void* pointer_881 = &i;
+const void* pointer_882 = &i;
+const void* pointer_883 = &i;
+const void* pointer_884 = &i;
+const void* pointer_885 = &i;
+const void* pointer_886 = &i;
+const void* pointer_887 = &i;
+const void* pointer_888 = &i;
+const void* pointer_889 = &i;
+const void* pointer_890 = &i;
+const void* pointer_891 = &i;
+const void* pointer_892 = &i;
+const void* pointer_893 = &i;
+const void* pointer_894 = &i;
+const void* pointer_895 = &i;
+const void* pointer_896 = &i;
+const void* pointer_897 = &i;
+const void* pointer_898 = &i;
+const void* pointer_899 = &i;
+const void* pointer_900 = &i;
+const void* pointer_901 = &i;
+const void* pointer_902 = &i;
+const void* pointer_903 = &i;
+const void* pointer_904 = &i;
+const void* pointer_905 = &i;
+const void* pointer_906 = &i;
+const void* pointer_907 = &i;
+const void* pointer_908 = &i;
+const void* pointer_909 = &i;
+const void* pointer_910 = &i;
+const void* pointer_911 = &i;
+const void* pointer_912 = &i;
+const void* pointer_913 = &i;
+const void* pointer_914 = &i;
+const void* pointer_915 = &i;
+const void* pointer_916 = &i;
+const void* pointer_917 = &i;
+const void* pointer_918 = &i;
+const void* pointer_919 = &i;
+const void* pointer_920 = &i;
+const void* pointer_921 = &i;
+const void* pointer_922 = &i;
+const void* pointer_923 = &i;
+const void* pointer_924 = &i;
+const void* pointer_925 = &i;
+const void* pointer_926 = &i;
+const void* pointer_927 = &i;
+const void* pointer_928 = &i;
+const void* pointer_929 = &i;
+const void* pointer_930 = &i;
+const void* pointer_931 = &i;
+const void* pointer_932 = &i;
+const void* pointer_933 = &i;
+const void* pointer_934 = &i;
+const void* pointer_935 = &i;
+const void* pointer_936 = &i;
+const void* pointer_937 = &i;
+const void* pointer_938 = &i;
+const void* pointer_939 = &i;
+const void* pointer_940 = &i;
+const void* pointer_941 = &i;
+const void* pointer_942 = &i;
+const void* pointer_943 = &i;
+const void* pointer_944 = &i;
+const void* pointer_945 = &i;
+const void* pointer_946 = &i;
+const void* pointer_947 = &i;
+const void* pointer_948 = &i;
+const void* pointer_949 = &i;
+const void* pointer_950 = &i;
+const void* pointer_951 = &i;
+const void* pointer_952 = &i;
+const void* pointer_953 = &i;
+const void* pointer_954 = &i;
+const void* pointer_955 = &i;
+const void* pointer_956 = &i;
+const void* pointer_957 = &i;
+const void* pointer_958 = &i;
+const void* pointer_959 = &i;
+const void* pointer_960 = &i;
+const void* pointer_961 = &i;
+const void* pointer_962 = &i;
+const void* pointer_963 = &i;
+const void* pointer_964 = &i;
+const void* pointer_965 = &i;
+const void* pointer_966 = &i;
+const void* pointer_967 = &i;
+const void* pointer_968 = &i;
+const void* pointer_969 = &i;
+const void* pointer_970 = &i;
+const void* pointer_971 = &i;
+const void* pointer_972 = &i;
+const void* pointer_973 = &i;
+const void* pointer_974 = &i;
+const void* pointer_975 = &i;
+const void* pointer_976 = &i;
+const void* pointer_977 = &i;
+const void* pointer_978 = &i;
+const void* pointer_979 = &i;
+const void* pointer_980 = &i;
+const void* pointer_981 = &i;
+const void* pointer_982 = &i;
+const void* pointer_983 = &i;
+const void* pointer_984 = &i;
+const void* pointer_985 = &i;
+const void* pointer_986 = &i;
+const void* pointer_987 = &i;
+const void* pointer_988 = &i;
+const void* pointer_989 = &i;
+const void* pointer_990 = &i;
+const void* pointer_991 = &i;
+const void* pointer_992 = &i;
+const void* pointer_993 = &i;
+const void* pointer_994 = &i;
+const void* pointer_995 = &i;
+const void* pointer_996 = &i;
+const void* pointer_997 = &i;
+const void* pointer_998 = &i;
+const void* pointer_999 = &i;
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32.so
new file mode 100755
index 0000000..6ce6d0c
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32.so
Binary files differ
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32_packed.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32_packed.so
new file mode 100755
index 0000000..6ac2eef
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32_packed.so
Binary files differ
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64.so
new file mode 100755
index 0000000..945b450
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64.so
Binary files differ
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64_packed.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64_packed.so
new file mode 100755
index 0000000..ed85ce1
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64_packed.so
Binary files differ